精华内容
下载资源
问答
  • 图像去噪matlab

    2017-11-03 21:26:09
    matlab图像去噪 选择lena作为测试,添加高斯白噪声进行去噪验证
  • 自适应全变分图像去噪Matlab源代码,简单明了的代码设计,能成功实现最基本的功能,代码设计排版简洁,能轻松看懂。
  • 基于小波图像去噪MATLAB实现 一 论文背景 数字图像处理(Digital Image ProcessingDIP)是指用计算机辅助技术对图像信 号进行处理的过程数字图像处理最早出现于 20世纪50年代随着过去几十年来计算机网络技术和 通信...
  • NSCT 图像去噪 matlab

    2014-04-28 22:07:28
    matlab实现的NSCT 图像去噪 图像增强 ,资源是个简单的实例,可以直接运行demo观察去噪效果
  • 基于小波变换的图像去噪matlab仿真

    万次阅读 2016-05-02 16:18:14
    设计目的:设计一种基于正交变换域自适应滤波器的的图像去噪算法,在消除图像噪声的同时尽可能地保留图像固有的信息。 提取出三个关键词:正交变换、自适应滤波、图像去噪 matlab设计流程:  与单纯运用某种...

    一、前已完成任务情况 

        1、概况

    设计题目:基于正交变换与自适应滤波的图像去噪算法

    设计目的:设计一种基于正交变换域自适应滤波器的的图像去噪算法,在消除图像噪声的同时尽可能地保留图像固有的信息。

    提取出三个关键词:正交变换、自适应滤波、图像去噪

    matlab设计流程:

        与单纯运用某种自适应算法相比,基于小波分解的自适应滤波算法在收敛速度和稳定性上都有了很大的提高

     

    2、小波变换的基本理论

     

     

     

           示意:尺度越大,采用越大的时间窗,尺度越小,采用越短的时间窗,即尺度与频率成反比。

    在时频两域都具有表征信号局部特征的能力,其在低频部分具有较高的频率分辨

    率和较低的时间分辨率,在高频部分具有较高的时间分辨率和较低的频率分辨率,

    所以被誉为分析信号的数字显微镜

     

           小波变换与傅里叶变换对比的优点:短时傅立叶分析是把一个短时间的窗函数加在信号上,再对这一部分加窗的信号做傅立叶变换,当然,假定了在短时间内信号是平稳的。然后移动窗函数,对整个时间轴上的信号做短时傅立叶分析。但是,又有问题出现了,短时傅立叶分析一旦确定了窗函数,窗函数的形状便不再改变,于是短时傅立叶分析对于信号的时频分辨率也随之确定。

    而我们希望稍微智能一点,即对于变化剧烈的信号,时间分辨率能高一点,频率分辨率可以降低,而对于变化平坦的信号,频率分辨率要高一些,时间分辨率可以低点。于是小波分析便产生了。

    小波分析同样对信号在一短时间内做加窗(小波函数)分析,只是这个窗,即小波函数既可以在时间轴上移动,又可以伸缩,伸缩便意味着时频分辨率的改变。

           小波变换的物理表现:分解的结果是产生长度减半的两个部分,一个是经低通滤波器产生的原始信号的平滑部分,另一个则是经高通滤波器产生的原始信号细节部分。

        不同j所确定的频带是独立的,随j变化相互独立的频带覆盖了整个频率轴,分辨率j反应了频带的位置和带宽把信号分解到一系列相互独立的频带上分辨率j-1时的近似信号=f(x)在分辨率为j时的近似部分+细节部分

    再对低频部分进行相似运算

     

    3、小波变换在matlab中的使用

    [C, S] = wavedec2(x, n, wname); % 对图像进行小波分解

    小波变换的层数选择:通常分解层数过多,并且对所有的各层小波空间的系数都进行阈值处理会造成信号的信息丢失严重,去噪后的信噪比反而下降,同时导致运算量增大,使处理变慢.

    分解层数过少则去噪效果不理想,信噪比提高不多,但不会出现信噪比下降的情况.

    小波函数的选取:按常理选取了sym4

     

    [C,S]的含义C=[A(n)|H(n)|D(n)|………H(1)|V(1)|D(1)]

    h ,v ,d 分别反映水平、垂直、对角线方向

    S(1,:)=size of approximation coefficients(n)

    下图的解释更直观一点:

     

     

     

     

     

     

     

     

    部分程序运行:原始图像→加噪图像(同时加入高斯噪声和椒盐噪声)→小波分解后的图像显示

    .M=imread('detfinger1.png'); 

    %读取MATLAB中的名为detfinger的图像  分辨率:512×512

    subplot(1,2,1) 

    imshow(M);           %显示原始图像 

    title('原始图像') 

     

    P1=imnoise(M,'gaussian',0.02);     

    %加入高斯躁声,方差为0.02的高斯噪声

     

    P2=imnoise(P1,'salt &pepper',0.02);

    %同时加入高斯噪声和椒盐躁声 

    subplot(1,2,2) 

    imshow(P2);%加入椒盐躁声后显示图像 

    title('加入高斯椒盐躁声后');

    %%对加入高斯噪声的图像进行小波分解

    P2=double(P2);

    [CA,CH,CV,CD]= dwt2(P2,'db1 ');

    y =[CA,CH;CV,CD];

    y=uint8(y);

    subplot(3,1,3); 

    imshow(y); 

    title('小波分解');

    4、滤波器的特性

    我的思路:先了解维纳滤波器的原理再进一步改进,理解自适应滤波器,进行自适应滤波器的设计,再进行自适应滤波器的组合设计,从而实现去噪功能

     

    维纳滤波器:根据平稳随机信号的全部过去和当前的观察数据来估计信号的当前值,在最小均方误差的条件下得到系统的传递函数,参数是固定的,适用于平稳随机信号。

    卡尔曼滤波器:根据当前时刻数据的观测值和前一时刻对该一时刻的预测值进行递推数据。它自动调节本身的冲击响应特性(自动调节数字滤波器的系数),以适应信号变化的特性,从而达到最优化滤波。它的参数是时变的,适用于非平稳随机信号。

    这两种滤波器最优滤波的条件:噪声的统计特性先验已知

    但实际应用中,常常无法得到这些统计特征的先验知识(统计特性是随时间变化的),因此实现不了最优滤波。

    自适应滤波器:无法得到一些统计特性的先验知识(统计特性随时间变化)

    而自适应滤波器在输入信号统计特性未知或者统计特性变化时,能够自动调节自身的参数,使其按照某种准则达到最优滤波。由于自适应滤波器具有这种特性,自提出以来,在实际工程中的众多领域得到了广泛应用。

     

    5、如何设计和建立自适应滤波器

       自适应滤波器工作原理是:系统能够按照某种算法自动调节权系数,使其实际输出和期望输出的均方误差达到最小值。

       自适应滤波器的结构:有FIRIIR两种。由于IIR滤波器存在稳定性的问题,因此一般采用FIR滤波器。由于FIR滤波器横向结构的算法具有容易实现和计算量少等优点,在对收敛速度不是很快的场合,多采用FIR作为自适应滤波器结构。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    自适应滤波算法:

    自适应滤波器的核心部分就是自适应滤波算法,基于不同的准则,最常用的自适应滤波算法是LMS算法和RLS算法,LMS算法以最小均方误差为准则,RLS算法(递归最小二乘算法)以最小误差平方和为准则。

    LMS算法由于其具有计算量小,稳定性好,易于实现等优点,被广泛使用。

    LMS算法中均方误差表示为:

    使均方误差达到最小值时,得到最佳权系数w*,应满足下列方程:在实际中,LMS 迭代算法是以最速下降法为原则进行的,用公式表示为:

    式中,是自适应步长  ( n) 为迭代的梯度。

    这里来估计均方误差 MSE 的梯度,并以此梯度估计值代替最速下降法中理论情况下的梯度真值,LMS( 最小均方算法进行梯度估计的方法是以误差信号的每一次迭代的瞬间时平方值代替其均方值,并以此来估计梯度。

    在自适应滤波器的设计过程中,滤波器阶数 N和步长μ 等参数的选取对仿真结果的影响总结如下.

    (1)自适应算法中步长 μ 的选择:μ 的大小影响算法的收敛速度。  其中,为矩阵的最大特征值μ 取值小,收敛速度慢,计算工作量大,但滤波性能较好。μ 取值大,收敛速度快,计算工作量小,滤波性能较差。但 μ 大到一定值时,收敛速度变化不明显,且取值过大,会造成计算溢出.

    (2)自适应滤波器阶数 的影响: N 不可以任意选取,需要根据经验加上实际仿真验证比较才能最终确定.

    当阶数 取值大时,迭代次数增加,收敛速度变快。但当阶数 大到一定程度,收敛速度变化不明显,且可能引起系数迭代过程不收敛.

     

     

    自适应滤波器原理:

    输入信号x(n)

    、参考信号d(n)、误差信号e(n)

    e(n)y(n)d(n)的误差信号,根据最小均方误差算法调节自适应滤波器算法的参数,来优化滤波器结构,从而实现尽可能地保留图像固有的信息。

    LMS算法最核心的思想是用平方误差代替均方误差,基本的LMS算法为:

    w(k,n+ 1)=w(k,n)+ 2μe(n)x(n-k)

    其中,w(k,n)w(k,n+ 1)分别为迭代前后的系数值;nn+ 1为前后两个时刻;k= 0,1,

    … ,N- 1,N为滤波器的阶数;μ为收敛因子;e(n)=d(n)-y(n)=d(n)-xT(n)w(n)=d(n)-wT(n)x(n)为误差信号;x(n-k)为输入信号;y(n)=xT(n)w(n)为输出信号

    6、matlab仿真

     

    进行小波变换→  进行滤波后→  再进行图像重构→ 再小波反变换进行图像重构→先用维纳滤波器再用自适应滤波器替换

     

     

     

    %%对加入高斯噪声的图像进行小波分解

    J=double(J);

    [CA,CH,CV,CD]= dwt2(J,'db1 ');

    % [c,s]=wavedec2(j,1,'haar');

    y =[CA,CH;CV,CD];

    y=uint8(y);

    subplot(2,2,3); 

    imshow(y);

    title('小波分解');

     

    %xx=wiener2(CA,[3 3]); %对加噪图像进行二维自适应维纳滤波   %滤波器窗口大小

    yy=wiener2(CH,[3 3]); %对加噪图像进行二维自适应维纳滤波   %滤波器窗口大小

    zz=wiener2(CV,[3 3]); %对加噪图像进行二维自适应维纳滤波   %滤波器窗口大小

    qq=wiener2(CD,[3 3]); %对加噪图像进行二维自适应维纳滤波   %滤波器窗口大小

     

    %%%图像重构    

    XX = idwt2(CA,yy,zz,qq,'db1');    

     

    XX=uint8(XX);

    subplot(2,2,4); 

    imshow(XX); 

    title('重构以后的图像');

     

                                                         

     

     

     

     

     

     

     

    6自适应滤波器的组合设计:

        但是当信号源中混有多种干扰噪声时,单独一个滤波器不能达到抵消多种干扰噪声的要求。针对信号源中混有的多种干扰噪声问题,提出了自适应滤波器的组合设计问题。

    分为线性自适应滤波器和非线性自适应滤波器,非线性自适应滤波器具有更强的信号处理功能,但是计算比较复杂,实际用的更多的是线性自适应滤波器。

     

    总结:Mallat算法和LMS算法结合。

    虽然算法简单,运算量小,易于实现,但由于它的收敛速度对输入信号的自相关函数矩阵特征值的分布敏感如果分布太散,即最大值与最小值差异太大,收敛速度就会很慢,因此利用小波的时一频局部特性,就可以减小自适应滤波器输入向量自相关阵特征值的分散程度,大大增加了算法的收敛步长,提高了算法的收敛速度和稳定性。

     

    (不选)      基于小波分解重构的自适应滤波算法比仅进行小波分解的自适应滤波算法滤波精度要稍高一些,但由于需要信号重构,算法的复杂度随之增加,因此该算法实时性相对稍差。

    展开全文
  • 变分数字图形处理程序MATLAB,希望对数字图像处理去噪方面有帮助。
  • 图像降噪(图像修复,复原中),TVloss是一种较为有效的正则项,来保持图像的光滑性。 2 效果 二、源代码 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% I=imread('toys.bmp'); % load image I=double(I(20:120,10:105)); % ...

    一、简介

    1 用途
    图像降噪(图像修复,复原中),TVloss是一种较为有效的正则项,来保持图像的光滑性。
    2 效果

    在这里插入图片描述
    在这里插入图片描述

    二、源代码

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    I=imread('toys.bmp'); % load image
    I=double(I(20:120,10:105)); % cut a piece, convert to double
    %%% Parameters
    std_n=10; var_n=std_n^2;  % Gaussian noise standard deviation
    reduced_pw = 1.5*var_n;   % power to reduce in first phase
    sig_w = 5; ws=4*sig_w+1;  % window size
    %%%%%%%%%%%%%%
    
    %%% Add noise
    In = randn(size(I))*std_n;
    I0 = I + In;  % noisy input image
    % show original and noisy images
    figure(1); imshow(uint8(I)); title('Original')
    figure(2); imshow(uint8(I0)); title('Noisy image')
    snr_noisy=db(I,I0)
    
    % run normal tv - strong denoising
    tic;
    J=I0; 
    ep_J=0.1; % minimum mean change in image J
    J_old=0;
    lam=0; iter=10; dt=0.2; ep=1; 
    
    while (mean(mean(abs(J - J_old))) > ep_J),  % iterate until convergence
       J_old=J;
       J=tv(J,iter,dt,ep,lam,I0); % scalar lam
       lam = calc_lam(J,I0,reduced_pw); % update lambda (fidelity term)
    end % while
    % figure(3); imshow(uint8(J)); title('residue TV')
    % snr_residue= db(I,J)
    
    Ir=I0-J;  % Ir scalar
    Pr = mean(mean(Ir.^2)); % power of residue
    LV = loc_var(Ir,ws,sig_w^2);  % local variance (local  power of the residue )
    % P=mean(mean(LV));
    Pxy=1*(var_n^2)./LV;  %%  Sxy    inverse proportional to the LV
    
    %%% Varying Lambda
    lamxy=zeros(size(I0));
    J=I0; J_old=0; 
    ep_J=0.001;
    %eps=0.01;
    
    while (mean(mean(abs(J - J_old))) > ep_J),  % iterate until convergence
       J_old=J;
       J=tv(J,iter,dt,ep,lamxy,I0); % adaptive lam
       %J=tv(J,iter,dt,ep_J,lamxy,I0);
       lamxy = calc_lamxy(J,I0,Pxy,sig_w); % update lambda (fidelity term)
    end % while
    
    figure(3); imshow(uint8(J)); title('Adaptive TV')
    snr_adap= db(I,J)
    toc
    t1=toc
    
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % Run scalar TV denoising for comparision 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    tic
    J=I0; 
    % params
    ep_J = 0.01; % minimum mean change in image J
    lam=0; J_old=0;
    i=0;
    while (mean(mean(abs(J - J_old))) > ep_J),  % iterate until convergence
       J_old = J;
       J=tv(J,iter,dt,ep,lam,I0);     % scalar lam
       lam = calc_lam(J,I0,var_n,ep); % update lambda (fidelity term) 
    end % for i
    % Ir=I0-J;  % Ir scalar
    % Pr = mean(mean(Ir.^2)); % power of residue
    
    function Ig=gauss(I,ks,sigma2)
    %private function: gauss (by Guy Gilboa):
    % Ig=gauss(I,ks,sigma2)
    % ks - kernel size (odd number)
    % sigma2 - variance of Gaussian
    
    [Ny,Nx]=size(I);
    hks=(ks-1)/2;  % half kernel size
    if (Ny<ks)   % 1d convolutin
    	x=(-hks:hks); %x:1x ks
    	flt=exp(-(x.^2)/(2*sigma2));  % 1D gaussian
    	flt=flt/sum(sum(flt));  % normalize
       % expand
       x0=mean(I(:,1:hks)); xn=mean(I(:,Nx-hks+1:Nx));%x0,xn :1 x hks; 
    	eI=[x0*ones(Ny,ks) I xn*ones(Ny,ks)];   % ???
    	Ig=conv(eI,flt);
    	Ig=Ig(:,ks+hks+1:Nx+ks+hks);  % truncate tails of convolution   
    else
       %% 2-d convolution
    	x=ones(ks,1)*(-hks:hks); y=x'; 
    	flt=exp(-(x.^2+y.^2)/(2*sigma2));  % 2D gaussian
    	flt=flt/sum(sum(flt));  % normalize
       % expand
       if (hks>1)
          xL=mean(I(:,1:hks)')'; xR=mean(I(:,Nx-hks+1:Nx)')';% xL,xR :Ny x 1
       else
          xL=I(:,1); xR=I(:,Nx);
       end
       eI=[xL*ones(1,hks) I xR*ones(1,hks)];   % Ny x  Nx+2hks
       if (hks>1)
          xU=mean(eI(1:hks,:)); xD=mean(eI(Ny-hks+1:Ny,:));  % xU,xD: 1 x Nx+2hks
       else
       	xU=eI(1,:); xD=eI(Ny,:);   
       end
    

    三、运行结果

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    四、备注

    完整代码或者代写添加QQ1575304183

    往期回顾>>>>>>

    【图像去噪】基于自适应形态学的图像去噪matlab源码

    【图像压缩】基于行程编码实现的图像压缩matlab源码

     

    展开全文
  • 图像去噪matlab代码.zip

    2020-05-24 22:33:49
    含有中值滤波,均值滤波,高斯滤波,双边滤波,NLM算法,改进NLM算法,代码优化后的改进NLM,代码如有问题请及时联系。
  • 基于小波图像去噪MATLAB 实现 一 论文背景 数字图像处理 (Digital Image ProcessingDIP) 是指用计算机辅助技术对图像 信号进行处理的过程数字图像处理最早出现于 20 世纪 50 年代随着过去几十年来计算机 网络技术...
  • 一、简介 1 NLM滤波原理 ... % 输入: 待平滑的图像 % t: 搜索窗口半径 % f: 相似性窗口半径 % h: 平滑参数 % NLmeans(ima,5,2,sigma); % 图像大小 [m n]=size(input); % 输出 Output=zeros(m,n); i

    一、简介

    1 NLM滤波原理
    在这里插入图片描述
    2 Pixelwise Implementation
    在这里插入图片描述
    在这里插入图片描述
    3 Patchwise Implementation
    在这里插入图片描述

    function [output]=NLmeans(input,t,f,h)
     
     %  输入: 待平滑的图像
     %  t: 搜索窗口半径
     %  f: 相似性窗口半径
     %  h: 平滑参数
     %  NLmeans(ima,5,2,sigma); 
    
     % 图像大小
     [m n]=size(input);
      % 输出
     Output=zeros(m,n);
     input2 = padarray(input,[f+t f+t],'symmetric');%边界作对称处理
     
     % 高斯核
     kernel = make_kernel(f);
     kernel = kernel / sum(sum(kernel));
     
     h=h*h;
     
     for i=1:m
        for j=1:n
                     
             i1 = i+ f+t;%原始图像的像素位置 (中心像素)
             j1 = j+ f+t;
                    
             W1= input2(i1-f:i1+f , j1-f:j1+f);%小窗口
             
             wmax=0; 
             average=0;
             sweight=0;
             
             %rmin = max(i1-t,f+1);
             %rmax = min(i1+t,m+f);
             %smin = max(j1-t,f+1);
             %smax = min(j1+t,n+f);
             rmin=i1-t;
             rmax=i1+t;
             smin=j1-t;
             smax=j1+t;
             
             for r=rmin:1:rmax %大窗口
                for s=smin:1:smax
                                                   
                    if(r==i1 && s==j1) 
                        continue; 
                    end;
                                    
                    W2= input2(r-f:r+f , s-f:s+f);    %大搜索窗口中的小相似性窗口     
                    d = sum(sum(kernel.*(W1-W2).*(W1-W2)));
                    w=exp(-d/h); %权重      
                                     
                    if w>wmax                
                        wmax=w;   %求最大权重            
                    end
                    
                    sweight = sweight + w;  %大窗口中的权重和
                    average = average + w*input2(r,s);                                  
                end 
             end
                 
            average = average + wmax*input2(i1,j1);
            sweight = sweight + wmax;
                       
            if sweight > 0
                output(i,j) = average / sweight;
            else
                output(i,j) = input(i,j);
            end                
        end
     end
     function nX = noise(varargin)
    % 图像加入噪声
    % 传入参数依次为:
    % X - 待处理的图像
    % type - 噪声类型
    % variance/density - 高斯噪声的方差/椒盐噪声的密度(optional)
    % M - 控制噪声区域的模板(optional)
    
    % 参数默认值
    variance = 0.01;                %高斯噪声的方差 默认值为0.01
    density = 0.05;                 %椒盐噪声的密度 默认值为0.05
    M = ones(size(varargin{1}));    %控制噪声区域的模板 默认对整个图像加噪声
    
    X = varargin{1};                %待处理的图像
    type = varargin{2};             %噪声类型
    
    % 可选参数
    if nargin>=3
        variance = varargin{3};
        density = varargin{3};
        
        if nargin == 4
            M = varargin{4};
        end
    end
    
    

    三、运行结果

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    四、备注

    完整代码或者代写添加QQ1575304183

    往期回顾>>>>>>

    【图像去噪】基于自适应形态学的图像去噪matlab源码

    【图像压缩】基于行程编码实现的图像压缩matlab源码

    【图像去噪】基于全变分算法图像去噪matlab源码

    展开全文
  • 程序包含基于WAVELET域、基于CONTOURLET域、基于WAVELET-CONTOURLET域及PCA的SAR图像去噪
  • 细胞神经网络matlab去噪的源程序,自己写的,能运行对的
  • 在联合冲击滤波器和非线性各向异性扩散滤波器对含噪图像做预处理的基础上,利用边缘检测算子选取自适应参数,构建能同时兼顾图像平滑去噪与边缘保留的自适应全变分模型,并基于Bregman迭代正则化方法设计了其快速迭代...
  • 小波变换图像去噪MATLAB仿真

    热门讨论 2013-05-02 15:45:51
    分别对小波变换的软阈值和硬阈值方法进行了MATLAB仿真,并进行对比,还给出了一个改进型的小波变换去噪算法并在MATLAB仿真实现,代码下载后无需改动即可使用,后面有注释,让人通俗易懂。
  • 包括基于三维协同滤波的黑白、彩色、视频图像处理MATLAB代码等,亲测有效
  • 内含所处理的原图,.mat格式的二进制图像原件,两个程序可直接运行
  • 合成孔径雷达图像去噪MATLAB程序

    热门讨论 2010-03-23 22:15:43
    孔径雷达图像固有的相干斑噪声严重降低了图像的可解译程度,影响了后续目标检测、分类和识别 等应用。因此,SAR图像的相干斑抑制问题一直是SAR图像应用的重要课题之一。一个理想的去斑算法应该在平 滑的同时保持图像...
  • 一、 总览 BM3D是2007年TIP的文章,题目是Image denoising by sparse 3D transform-domain collaborative ltering,论文、项目的地址是http://www.cs.tut.fi/~foi/GCF-BM3D/,提供matlab代码;...

    一、 总览

    BM3D是2007年TIP的文章,题目是Image denoising by sparse 3D transform-domain collaborative ltering,论文、项目的地址是http://www.cs.tut.fi/~foi/GCF-BM3D/,提供matlab代码;http://www.ipol.im/pub/art/2012/l-bm3d/为C++的实现,这篇论文里面有对BM3D实现的更为详细的说明。

    处理灰度图的BM3D以及它的变体CBM3D(彩色图)、VBM3D(时域)是图像去噪领域公认的去噪效果(PSNR)最好的,而BM4D、VBM4D等也都是沿袭BM3D的基于块处理(block-wise estimate)的思想,但其计算时间复杂度极大,或许只能用于离线处理(offline),当然后续有文章进行优化(代码、算法),这里就不再提及。


    这里写图片描述

    找相似块,得到块集合


    BM3D算是NLM(non-local mean)的升级版本,因为它主要用到了非局部块匹配的思想,首先找相似块,不同于传统NLM使用L2距离,它用了硬阈值线性变换(见节二-2)降低了L2距离的复杂度;找到相似块后,NLM是做一个均值处理,而BM3D则是将相似块域转换,提出Collaborative filtering降低相似块自身含有的噪声(NLM做均值,引入了相似块的噪声)(见节二-2),并在aggregation处对相似块加权处理(见节二-3),得到降噪后的目标块。

    BM3D的复杂之处在于,首先找相似块,其次是采用了两次block-wise estimate,复杂度相比NLM翻了1倍,且含有域变换操作。

    二、 算法说明

    1. 流程图

    这里写图片描述
    分为两步,Basic estimate与Final estimate,两步除Collaborative filtering不同外,其余子步骤近似。其中:

    • S1 Basic estimate:
      • S11 Block-wise estimate
        • S111 Grouping 为目标块找到相似块,块集合无顺序限制;
        • S112 Collaborative hard-thresholding 使用某种域变换方法,得到“变换后的相似块集合”,采用协同(由相似块共同确定)硬阈值策略“弱化”相似块的噪声,后反变换回原始块域;
      • S12 Aggregation 加权平均相似块(S112处理后),叠加后得到basic estimate后的目标块;
    • S2 Final estimate:
      • S21 Block-wise estimate
        • S211 Grouping 使用S111步的块集合,以及已由S1处理后的图像重新计算块集合
        • S212 Collaborative Wiener filtering 域变换后,使用维纳滤波
      • S22 Aggregation

    2. S111 Grouping 找相似块

    本文使用L2距离判断,采用a normalized 2D linear transform与hard-thresholding对块距离进行预处理操作,公式如下:
    这里写图片描述
    因为含有噪声的图像,计算L2距离,噪声使两个相似块的差异变大,可能找到错误的相似块。
    其中,

    • x为像素点,X为图像
    • 这里写图片描述目标块, 这里写图片描述搜索块
    • 这里写图片描述是S1中的块大小
    • 这里写图片描述硬阈值操作,阈值设为这里写图片描述
    • 这里写图片描述是归一化后的二维线性变换

    根据距离就可以找到相似块集合,由式(5)所示,
    这里写图片描述
    其中,

    • 这里写图片描述确定是否相似的超参数
    • 这里写图片描述为 这里写图片描述的相似块集合

    3. S112 Collaborative hard-thresholding 相似块降噪

    此处使用归一化的3D线性变换(normalized 3D linear transform)这里写图片描述来降低相似块的噪声,然后使用反变换 这里写图片描述得到S112步处理后的相似块 这里写图片描述,如下式(6)所示,
    这里写图片描述
    其中,

    • 这里写图片描述为归一化的3D线性变换, 这里写图片描述为其反变换
    • 这里写图片描述硬阈值操作,阈值设为 这里写图片描述
    • 这里写图片描述 为处理后的相似块集合

    a) 为什么要这么做

    文中ⅡC中提到,传统方法,如NLM,由空域得到近似块,然后对近似块的每个像素一一对应去平均,作为目标块每个像素的值。但是,上述策略对于如下场景并不合适:

    i. 某些相似块拥有的噪声更小,相比其它相似块,该块的“权重”应更大,而不是简单取平均

    ii. 相似块图像信息冗余,从空域上看,两个有重叠区域的相似块,简单平均会造成目标块信息重复。

    因此采用“Collaborative ltering by shrinkage in transform domain”的方式,能够加强相似块的稀疏性,同时降低相似块的噪声。
    这里写图片描述

    4. S12 Aggregation 加权生成目标块

    同样是为了降低相似块的信息冗余与自身噪声,所以我认为与S112的目的一致。加权平均后得到目标块的像素值,如式(12)(10)所示:
    这里写图片描述

    这里写图片描述

    其中,

    • 这里写图片描述为权重
    • 这里写图片描述 为公式(6)硬阈值操作后的非0系数的个数
    • 这里写图片描述,在实际搜索相似块时,需要对原图padding,由padding得到的相似块不纳入加权平均中

    5. S211 Grouping

    由S1初步处理后的图像,重新计算L2距离,得到相似块集合,此处不再使用硬阈值处理,公式如式(7)所示:

    这里写图片描述

    其中,

    • 这里写图片描述为S2步的判断是否相似的超参数
    • 这里写图片描述为相似块集合

    6. S212 Collaborative Wiener filtering

    由S211步得到的相似块集合 这里写图片描述,经过某个域变换后,使用维纳收缩系数(Wiener shrinkage coefcients) 这里写图片描述加权,后经过反变换,得到块集合 这里写图片描述。如式(9)、(8)所示。

    这里写图片描述
    这里写图片描述

    7. S22 Aggregation

    S12已经说明过了,S22与S12近似,公式如式(11)所示,而最终结果,与式(9)的计算步骤一致。

    这里写图片描述

    三、 结论

    1. 加速

    在实际操作中,为加快BM3D的计算速度,在寻找相似块的步骤后,得到的块实际上已经进行了2D变换处理,然后再加上一个1D变换(文中使用1D-Haar离散小波变换),成为3D变换,使用2D+1D的变换方法替代直接3D变换。

    2. 难点

    文中提到的2D变换与各种超参数,并没有一个确定值,对于真实视频去噪,使用的2D变换与超参数可能与文章实验设置不同,因此需要进行微调,也就是需要大量实验的积累。

    最终的去噪结果如下图所示,可以发现,噪声被很好地去除了,图像边缘保留完整,图像纹理得到了很好的还原。
    这里写图片描述
    但这些都是自行添加高斯白噪声产生的测试图像,若实际运用在图像降噪中,原始图像不会有这么多噪声,因此就不需要BM3D两步去噪。那么可以将BM3D的两步拆开,采用前步的硬阈值、2D变换寻找相似块、1D变换升至3D域再加权平均,或后步直接使用维纳滤波,或许就已经有很好的效果了。

    下一步会总结BM4D、VBM4D的东西。

    四、 C-BM3D

    针对彩色图,本文将图像的RGB色彩空间转换为YUV色彩空间,因为YUV的Y分量拥有较其余分量更多的图像信息(边缘、材质、纹理等),并且拥有更高的SNR(信噪比),而U、V分量拥有更多的低频信息。
    因此对于C-BM3D,本文使用Y分量搜寻相似块,U、V分量使用Y分量的相似块位置信息。
    这里写图片描述
    可以仿照他转换色彩空间、从Y分量搜索相似块的方法,来对彩色图像进行降噪处理。

    五、 VBM3D

    对于视频去噪,一是可以将视频转化为单帧图像,然后使用图像去噪算法对单帧进行处理,然后融合还原成已去噪的视频;二是根据视频前后帧信息,某个像素点,前帧没有噪声,或噪声较少,那么就可以作为后帧的值,但视频中物体是运动的,如果按前后帧的同一位置的像素处理是不合理的,因此会引入运动补偿、跟踪的算法,对于实时处理来说,条件就有点苛刻。

    VBM3D不含运动补偿,对中间帧的目标块搜索相似块,搜索对象是前后帧与中间帧,提出了predictive-search block-matching(PS-BM),用于前后帧的相似块搜索。具体而言,PS-BM,先以中间帧的目标块为中心、搜索半径NS的区域寻找相似块,然后在该块对应的前后帧的位置为中心、搜索半径NPR的区域寻找相似块,中间帧、前后帧的相似块构成块集合。其余步骤与BM3D无异。
    这里写图片描述

    clear all;clc ;
     
    pauseTime = 1;
        filePaths = 'cameraman256.png';
    noise_leval = [10,15,20,25,30,35,40,45,50,55,60,65,70];
    
    for i = 1:length(noise_leval)
        PSNRs = [];
        SSIMs = [];
        sigma = noise_leval(i);
        for j = 1:length(filePaths)
            y = imread(filePaths);
            if length(size(y)) > 2
                y = rgb2gray(y);
            end
            y = im2double(y);
            z = y + (sigma/255)*randn(size(y));
            % 生成噪声图像
            
            [PSNR,SSIM,y_est] = BM3D(y, z, sigma, 'np', 0);
            PSNRs(j) = PSNR;
            SSIMs(j) = SSIM;
        
            imshow(cat(2,im2uint8(y),im2uint8(z),im2uint8(y_est)));
            title([num2str(sigma),num2str(PSNR,'%2.2f'),'dB','    ',num2str(SSIMs(j),'%2.4f')])
            drawnow;
            pause(pauseTime)
        end
        disp(['sigma:', sigma,' psnr:', mean(PSNRs),'  ssim:', mean(SSIMs)]);
    end
    
    
    
    

    完整代码或者代写添加QQ1575304183

    往期回顾>>>>>>

    【图像聚类】基于FCM和改进的FCM脑部CT图像聚类处理matlab源码

    【图像增强】PSO寻优ACE的图像增强matlab源码

    【图像增强】基于区域相似变换函数和蜻蜓算法的灰度图像增强matlab源码

    【图像增强】基于局部对比度增强的CLAHE算法 --直方图增强matlab源码​​​​​​​
    【图像重建】图像重建之ASTRA算法matlab源码

    【图像评价】基于CCF算法的图像质量评价matlab源码​​​​​​​

    【图像隐藏】基于混沌系统的图像加密解密matlab源码含GUI

    【图像隐藏】基于DWT+DCT+PBFO改进图像水印隐藏提取matlab源码含GUI

    【图像隐藏】基于正交拉丁方置乱之图像隐藏matlab源码

    【图像隐藏】基于Laguerre 变换的图像隐藏matlab源码

    【图像压缩】基于小波变换的图像压缩matlab源码

    【图像隐藏】基于DWT与SVD算法的数字水印图像隐藏matlab源码

    展开全文
  • 例子:图像去噪 给一幅二值图像加入噪声,加入噪声之后的图像是我们的观测值Y,而实际变量是隐变量X,现在我们就要通过Y推断X。由于噪声等级比较小,因此我们知道xi和yi之间有强烈的相关性。我们还知道图像中相邻...
  • 图像去噪Matlab实现

    万次阅读 多人点赞 2018-01-06 21:24:55
    图像去噪常用方法 图像去噪处理方法可分为空间域法和变换域法两大类。 基于离散余弦变换的图像去噪 一般而言,我们认为图像的噪声在离散余弦变换结果中处在其高频部分,而高频部分的幅值一般很小,利用...
  • BM3D图像去噪-MATLAB

    2020-06-01 13:02:29
    好用记得过来好评,有问题可以评论。...CBM3D图像去噪,里面有RGB的CBM3D图像去噪代码(输入图像为RGB图像)。里面还有BM3D图像去噪代码(输入图像为灰度图像)。里面还有其他BM3D拓展的其他算法。
  • 图像去噪matlab代码

    2018-11-09 21:30:36
    图像去噪的三种代码,中值滤波,均值滤波 ,维纳滤波 ,只需更改图片即可使用
  • 小波图像去噪matlab实例

    万次阅读 多人点赞 2017-03-09 15:09:48
    图像去噪  图像去噪是信号处理的一个经典问题,传统的去噪方法多采用平均或线性方法进行,常用的是维纳滤波,但是去噪效果不太好(维纳滤波在图像复原中的作用)。随着小波理论的日益完善,其以自身良好的时频特性...
  • 1.2 椒盐噪声,椒盐噪声又称脉冲噪声,它随机改变一些像素值,是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起。 2 滤波原理 中值滤波取卷积核当中所覆盖像素中的中值...
  • 数字图像在进行数学形态滤波去噪时,根据噪声特点可以尝试采用维数由小到大的结构元素来进行处理,进而达到滤除不同噪声的目的。采用数学形态学的多结构元素,可以更多地保持数字图像的几何特征. 二、源代码 %% ...
  • 图像降噪(图像修复,复原中),TVloss是一种较为有效的正则项,来保持图像的光滑性。 2 效果 二、源代码 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% I=imread('toys.bmp'); % load image I=double(I(20:120,10:105)); % cut...
  • 非局部均值 图像去噪(matlab)

    热门讨论 2014-03-02 10:11:40
    非局部均值,图像去噪matlab程序,可直接运行,有点慢
  • 一、简介 1974年,法国工程师J.Morlet首先提出小波变换的概念,1986年著名...在图像处理方面的图像压缩、分类、识别与诊断,去噪声等。本章将着重阐述小波在图像中的应用分析。 1 小波变换原理 小波分析是一个比较难的
  • 1.2 椒盐噪声,椒盐噪声又称脉冲噪声,它随机改变一些像素值,是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起。 2 滤波原理 中值滤波取卷积核当中所覆盖像素中的中值...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 641
精华内容 256
关键字:

图像去噪matlab

matlab 订阅