精华内容
下载资源
问答
  • 点击蓝字关注我们图像滤波是图像处理中重点的方式,它包括空间域滤波和频率域滤波,空间域滤波的应用通常体现在以下两个方面:下面是空间滤波处理后的图像与原图像的对比:凡是使用空间模板进行的图像处理,我们就...

    点击蓝字

    关注我们

    cd8cb337a96179f7261fd2ee68035cc8.png

    图像滤波是图像处理中重点的方式,它包括空间域滤波和频率域滤波,空间域滤波的应用通常体现在以下两个方面:

    0c917e2f1260523aee5735f9cbc9a40b.png

    下面是空间滤波处理后的图像与原图像的对比:

    d8362d668c03c3d67e85b1a68dbc988d.png

    凡是使用空间模板进行的图像处理,我们就定义为空间滤波,模板本身被称为空间滤波器。

    图像的空域线性滤波和非线性滤波在空域对图像进行滤波处理无非两种情况:线性滤波和非线性滤波。滤波的意思就是对原图像的每个像素周围一定范围内的像素进行运算,运算的范围就称为掩膜或领域。而运算就分两种了,如果运算只是对各像素灰度值进行简单处理(如乘一个权值)最后求和,就称为线性滤波;而如果对像素灰度值的运算比较复杂,而不是最后求和的简单运算,则是非线性滤波;如求一个像素周围3x3范围内最大值、最小值、中值等操作都不是简单的加权,都属于非线性滤波。

    一言以蔽之,区分线性滤波还是非线性滤波,主要依据是是否进行非线性运算,比如说,均值计算很明显是线性运算,所以均值滤波是线性滤波。

    006be16a4d6bcace6d8539e6ccaafcf1.png 76973fdeaebb005802351898da6cc058.gif

    下面我们进行系统的学习:

     一、

    imfilter函数

    imfilter函数是用来实现线性空间滤波的主体函数,它基本的语法是:

    g = imfilter(f, w,' replicate');

    其中,f是输入图象,w为滤波掩模,g为滤波结果replicate为imfilter函数的选项,具体选项类型见下表:

    54e09e25fd8e7a4e6ed0dded26d42cf3.png

     二、

    线性空间滤波实践

    题目:使用函数imfilter实现拉普拉斯滤波器

    我们用一副火星表面的图象进行操作:

    cd8cb337a96179f7261fd2ee68035cc8.png

    01

    读取图像并转化为灰度图。

    I=imread('hx.jpg');   %读入图像
    figure
    subplot(2,3,1);     %在窗口中排列图像
    imshow(I)     %X显示图像
    title('原始图像');      %赋标题
    J=rgb2gray(I);     %转化为灰度图
    subplot(2,3,2);
    imshow(J);
    title('原图像灰度图');

    02

    创建拉普拉斯滤波器并直接进行滤波输出

    w=fspecial('laplacian',0)   %生成并显示拉普拉斯滤波器
    w=[0 1 0;1 -4 1;0 1 0];   %规定其形状
    K=imfilter(J,w,'replicate');    
    subplot(2,3,3);
    imshow(K)
    title('直接滤波图象');

    这里要注意的一点是,滤波后的图像的每个元素使用双精度浮点算术进行计算。然而,imfilter会将输出图像转抉为与输入图像相同的类。因此,若f是一个整数数组,则输出中超过整型范围的元素将被截断,且小数部分会四舍五入。若结果要求更高的精度,则需要在使用函数imfilter之前利用im2double或double转换为double类。

    就比如我们这里,第三幅图显示了结果图像,其结果看似合理,但存在一个问题:所有的像素都是正的。由于滤波器中心系数为负,因此我们通常希望得到的是一个带有正值和负值的拉普拉斯图像。但此时,f是uint8类的,如前节所述,imfilter给出了与输入图像类相同的输出,所以负值被截掉了。在对图像滤波前,通过将其转换为浮点数可解决这一问题:

    03

    转换为浮点数并再次滤波

    F=im2uint16(J);
    W=imfilter(F,w,'replicate');
    subplot(2,3,4);
    imshow(W)
    title('带有正值和负值的拉普拉斯图像')

    04

    最后,从原始图像中减去(因为中心系数为负值)拉普拉斯图像,以恢复失去的灰度层次

    E=F-W;
    subplot(2,3,5);
    imshow(E)
    title('处理后的最终图像');

    0d6a06ed99a72c7c67d4fbbfbfe51c4d.png

    可以看到,图5比图二要更加清晰。

    今天的分享就到这里,关注我,每天更新matlab和数字图像处理的相关内容。

    也可以加qq群953314432和各路大神一起学习。

    往期 · 推荐

    ●Matlab数据统计与分析(三)——常见分布随机数的产生及统计作图

    ●MATLAB中的直方图处理及均衡化

    ●数学建模与MATLAB--线型规划(Linear Programing)

    5b5e72de2adf460e449ef34ee2bd07a7.png

    扫码关注我们

    更多精彩等待你发现

    出品:Asoul水云天课堂工作室

    点“在看”给我一朵小黄花e8530757d0fc8180084d6f5a6280ab4c.gif

    00a40b9e6b294fa37ae56eda4827b807.png
    展开全文
  • 主要分为线性滤波和线性滤波两类,根据功能可分为平滑滤波器锐化滤波器。平滑可通过低通来实现,平滑的目的有两类,一是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小尖端连接起来;二是去噪。...

    一)空间域滤波与频率域滤波

     1)空间域滤波

          空间域滤波是指在图像空间中借助模板对图像领域进行操作,处理图像每一个像素值。主要分为线性滤波和非线性滤波两类,根据功能可分为平滑滤波器和锐化滤波器。平滑可通过低通来实现,平滑的目的有两类,一是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小尖端连接起来;二是去噪。锐化则可用高通滤波来实现,锐化的目的是为了增强被模糊的细节。

          在matlab中实现空间域滤波,有很多类型,如均值、中值、索贝尔、高斯、拉普拉斯、高斯-拉普拉斯等,但各有差异。下面是用matlab实现的代码:


    [html]  view plain  copy
    1. %空间域滤波  
    2. clc;close all;  
    3. I=imread('1.tif');  
    4. w1=fspecial('average',[3 3]);  
    5. w2=fspecial('sobel');  
    6. w3=fspecial('gaussian',[3 3],0.5);  
    7. w4=fspecial('laplacian',0.2);  
    8. w5=fspecial('log',[5 5],0.5);  
    9. g1=imfilter(I,w1,'replicate');  
    10. g2=imfilter(I,w2,'replicate');  
    11. g3=imfilter(I,w3,'replicate');  
    12. g4=imfilter(I,w4,'replicate');  
    13. g5=imfilter(I,w5,'replicate');  
    14. g6=medfilt2(I);  
    15. subplot(3,3,1);imshow(I);title('原图');  
    16. subplot(3,3,2);imshow(g1);title('均值滤波');  
    17. subplot(3,3,3);imshow(g2);title('索贝尔滤波');  
    18. subplot(3,3,4);imshow(g3);title('高斯滤波');  
    19. subplot(3,3,5);imshow(g4);title('拉普拉斯滤波');  
    20. subplot(3,3,6);imshow(g5);title('高斯-拉普拉斯滤波');  
    21. subplot(3,3,7);imshow(g6);title('中值滤波');  

    其运行结果如下:


        空间域滤波均采用matlab自带的函数,参数也采用默认的值,可见中值滤波的效果最好。

        其中各滤波器的原理和优缺点如下:

       A)均值滤波:由fspecial函数生成的w1是一个大小为3*3的矩形平均滤波器,再用imfilter这个函数使这个掩模的中心逐个滑过图像的每个像素,输出为模板限定的相应领域像素与滤波器系数乘积结果的累加和。由处理结果可见均值滤波器的效果使每个点的像素都平均到它的领域去了,噪声明显减少了很多,效果较好。

       B)索贝尔滤波:w2是一个大小为3*3的sobel滤波器sv,用来近似计算垂直梯度,在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量。但是Sobel导数并不是真正的导数,这是因为Sobel算子定义于一个离散空间之上,它真正表示的是多项式拟合,用较大的核的话会在更多像素上进行拟合,会更加正确。而较小的核对噪声会更加敏感,此时用sobel算子近似计算导数的缺点精度比较低,这种不精确性在试图估计图像的方向导数 (使用y/x滤波器响应的反正切得到的图像梯度的方向)。比如对于3*3的Sobel滤波器,梯度角度接近水平或者垂直方向的时候, 这样的不准确性会比较明显。由滤波效果可见到图像的边缘凸显了出来,sobel算子主要用于边缘检测。

       C)高斯滤波:高斯滤波器是平滑线性滤波器的一种,线性滤波器很适合于去除高斯噪声。而非线性滤波则很适合用于去除脉冲噪声,中值滤波就是非线性滤波的一种。高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波器是带有权重的平均值,即加权平均,中心的权重比邻近像素的权重更大,这样就可以克服边界效应。高斯滤波如果采用3×3掩模的具体公式如下:

    g(x,y)={f(x-1,y-1)+f(x-1,y+1)+f(x+1,y-1)+f(x+1,y+1)+[f(x-1,y)+f(x,y-1)+f(x+1,y)+f(x,y+1)]*2+f(x,y)*4}/16

    其中,f(x,y)为原图像中(x,y)像素点的灰度值,g(x,y)为经过高斯滤波和的值。由处理效果可看出高斯滤波的减噪能力较好。

     

       D)拉普拉斯滤波:拉普拉斯算子是n维欧式空间的一个二阶微分算子。拉普拉斯算子会突出像素值快速变化的区域,因此常用于边缘检测。由效果可见图像的边界得到了增强。

       E)中值滤波:中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为3*3,5*5区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。中值滤波对于斑点噪声和椒盐噪声来说尤其有用。保存边缘的特性使它在不希望出现边缘模糊的场合也很有用。由上图效果可见中值滤波的效果最好。

         由以上分析可知,各种滤波器各有优劣,适用情况也不尽相同,线性滤波器很适合于去除高斯噪声,而非线性滤波则很适合用于去除脉冲噪声,如中值滤波很适合去除椒盐噪声。使用起来要视具体实际情况而定。


    2)频率域滤波

      

         开始时看书看了些原理想自己用算法实现发现有困难,就去百度了一下,写了下面的一些代码:

        

    [html]  view plain  copy
    1. %频率域滤波  
    2. clc;close all;  
    3. f=imread('1.tif');  
    4. f=im2double(f);  
    5.   
    6. F=fft2(double(f));%傅里叶变换  
    7.   
    8. F=fftshift(F);%将变换的原点移到频率矩形的中心  
    9. [M,N]=size(f);  
    10.   
    11. %理想低通滤波  
    12.   
    13. D0=input('输入截止频率');  
    14. h1=zeros(M,N);  
    15. for i=1:M  
    16.     for j=i:N  
    17.         if(sqrt(((i-M/2)^2+(j-N/2)^2))<D0)  
    18.             h1(i,j)=1;  
    19.           
    20.         end  
    21.     end  
    22. end  
    23. G1=F.*h1;  
    24. G1=ifftshift(G1);  
    25. g1=real(ifft2(G1));  
    26.   
    27. %巴特沃斯低通滤波  
    28. n=input('巴特沃斯滤波器的阶数 n=');    
    29. n1=fix(M/2);  
    30. n2=fix(N/2);  
    31. h2=zeros(M,N);  
    32. for i=1:M  
    33.     for j=1:N  
    34.         d=sqrt((i-n1)^2+(j-n2)^2);  
    35.         h2=1./(1+(d./D0).^(2*n));  
    36.          
    37.     end  
    38. end  
    39. G2=F.*h2;  
    40. G2=ifftshift(G2);  
    41. g2=real(ifft(G2));  
    42.   
    43. %高斯低通滤波  
    44. h3=zeros(M,N);  
    45. for i=1:M  
    46.     for j=1:N  
    47.         h3=exp(-(d.^2)./(2*(D0^2)));  
    48.     end  
    49. end  
    50. G3=F.*h3;  
    51. G3=ifftshift(G3);  
    52. g3=real(ifft(G3));  
    53.   
    54. subplot(2,3,1);imshow(f);title('原图');  
    55. subplot(2,3,2);imshow(g1);title('理想低通滤波');  
    56. subplot(2,3,3);imshow(g2);title('巴特沃斯低通滤波');  
    57. subplot(2,3,4);imshow(g3);title('高斯低通滤波');  

    其运行效果如下:


     

       可见出现了问题,理想低通滤波的效果并不好,巴特沃斯和高斯滤波器的输出图像成了黑色,后经反复检查,调试,并没找出问题所在,于是打算尝试另一种方法。代码和结果如下:

    [html]  view plain  copy
    1. %巴特沃斯低通滤波  
    2. clc;close all;  
    3. f=imread('1.tif');  
    4. f=im2double(f);  
    5. M=2*size(I,1);  
    6. N=2*size(I,2);                        %滤波器的行列数    
    7. u=-M/2:(M/2-1);  
    8. v=-N/2:(N/2-1);  
    9. [U,V]=meshgrid(u,v);  
    10. D=sqrt(U.^2+V.^2);  
    11. D0=50;                                %截止频率  
    12. n=6;  
    13. H=1./(1+(D./D0).^(2*n));              %设计巴特沃斯滤波器  
    14. F=fftshift(fft2(I,size(H,1),size(H,2)));%傅里叶变换  
    15. G=F.*H;  
    16. L=ifft2(fftshift(G));                   %傅里叶反变换  
    17. L=L(1:size(I,1),1:size(I,2));  
    18. subplot(121);imshow(f);  
    19. subplot(122);imshow(L);  

    [html]  view plain  copy
    1. %高斯低通滤波  
    2. clc;close all;  
    3. I=imread('1.tif');    
    4. I=im2double(I);    
    5. M=2*size(I,1);  
    6. N=2*size(I,2);                        %滤波器的行列数    
    7. u=-M/2:(M/2-1);  
    8. v=-N/2:(N/2-1);  
    9. [U,V]=meshgrid(u,v);  
    10. D=sqrt(U.^2+V.^2);  
    11. D0=20;  
    12. H=exp(-(D.^2)./(2*(D0^2)));          %设计高斯滤波器  
    13. J=fftshift(fft2(I,size(H,1),size(H,2)));  
    14. G=J.*H;  
    15. L=ifft2(fftshift(G));  
    16. L=L(1:size(I,1),1:size(I,2));  
    17. figure;  
    18. subplot(121);imshow(I);  
    19. subplot(122);imshow(L);   


        通过这种方法运行出的结果是正常的。低通滤波滤掉了图像频谱中的高频成分,仅让低频部分通过,即变化剧烈的成分减少了,结果是使图像便模糊。比较可见高斯滤波的效果最好。

       频率域高通滤波和低通滤波实现的原理差不多,只是在设计滤波器时的公式有些差异,我就没有再重复实现了。

    展开全文
  • 主要分为线性滤波和线性滤波两类,根据功能可分为平滑滤波器锐化滤波器。平滑可通过低通来实现,平滑的目的有两类,一是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小尖端连接起来;二是去噪。...

    1. 空间域滤波

          空间域滤波是指在图像空间中借助模板对图像领域进行操作,处理图像每一个像素值。主要分为线性滤波和非线性滤波两类,根据功能可分为平滑滤波器和锐化滤波器。平滑可通过低通来实现,平滑的目的有两类,一是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小尖端连接起来;二是去噪。锐化则可用高通滤波来实现,锐化的目的是为了增强被模糊的细节。

          在matlab中实现空间域滤波,有很多类型,如均值、中值、索贝尔、高斯、拉普拉斯、高斯-拉普拉斯等,但各有差异。下面是用matlab实现的代码:

    [cpp]  view plain  copy
    1. %空间域滤波  
    2. clc;close all;  
    3. I=imread('salt.bmp');  
    4. w1=fspecial('average',[3 3]);  
    5. w2=fspecial('sobel');  
    6. w3=fspecial('gaussian',[3 3],0.5);  
    7. w4=fspecial('laplacian',0.2);  
    8. w5=fspecial('log',[5 5],0.5);  
    9. g1=imfilter(I,w1,'replicate');  
    10. g2=imfilter(I,w2,'replicate');  
    11. g3=imfilter(I,w3,'replicate');  
    12. g4=imfilter(I,w4,'replicate');  
    13. g5=imfilter(I,w5,'replicate');  
    14. g6=medfilt2(I);  
    15. subplot(3,3,1);imshow(I);title('原图');  
    16. subplot(3,3,2);imshow(g1);title('均值滤波');  
    17. subplot(3,3,3);imshow(g2);title('索贝尔滤波');  
    18. subplot(3,3,4);imshow(g3);title('高斯滤波');  
    19. subplot(3,3,5);imshow(g4);title('拉普拉斯滤波');  
    20. subplot(3,3,6);imshow(g5);title('高斯-拉普拉斯滤波');  
    21. subplot(3,3,7);imshow(g6);title('中值滤波');  
    其运行结果如下:


       空间域滤波均采用matlab自带的函数,参数也采用默认的值,可见中值滤波的效果最好。

    其中各滤波器的原理和优缺点如下:

       A)均值滤波:由fspecial函数生成的w1是一个大小为3*3的矩形平均滤波器,再用imfilter这个函数使这个掩模的中心逐个滑过图像的每个像素,输出为模板限定的相应领域像素与滤波器系数乘积结果的累加和。由处理结果可见均值滤波器的效果使每个点的像素都平均到它的领域去了,噪声明显减少了很多,效果较好。

       B)索贝尔滤波:w2是一个大小为3*3的sobel滤波器sv,用来近似计算垂直梯度,在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量。但是Sobel导数并不是真正的导数,这是因为Sobel算子定义于一个离散空间之上,它真正表示的是多项式拟合,用较大的核的话会在更多像素上进行拟合,会更加正确。而较小的核对噪声会更加敏感,此时用sobel算子近似计算导数的缺点精度比较低,这种不精确性在试图估计图像的方向导数 (使用y/x滤波器响应的反正切得到的图像梯度的方向)。比如对于3*3的Sobel滤波器,梯度角度接近水平或者垂直方向的时候,这样的不准确性会比较明显。由滤波效果可见到图像的边缘凸显了出来,sobel算子主要用于边缘检测。

       C)高斯滤波:高斯滤波器是平滑线性滤波器的一种,线性滤波器很适合于去除高斯噪声。而非线性滤波则很适合用于去除脉冲噪声,中值滤波就是非线性滤波的一种。高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波器是带有权重的平均值,即加权平均,中心的权重比邻近像素的权重更大,这样就可以克服边界效应。高斯滤波如果采用3×3掩模的具体公式如下:

    g(x,y)={f(x-1,y-1)+f(x-1,y+1)+f(x+1,y-1)+f(x+1,y+1)+[f(x-1,y)+f(x,y-1)+f(x+1,y)+f(x,y+1)]*2+f(x,y)*4}/16

    其中,f(x,y)为原图像中(x,y)像素点的灰度值,g(x,y)为经过高斯滤波和的值。由处理效果可看出高斯滤波的减噪能力较好。

       D)拉普拉斯滤波:拉普拉斯算子是n维欧式空间的一个二阶微分算子。拉普拉斯算子会突出像素值快速变化的区域,因此常用于边缘检测。由效果可见图像的边界得到了增强。

       E)中值滤波:中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为3*3,5*5区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。中值滤波对于斑点噪声和椒盐噪声来说尤其有用。保存边缘的特性使它在不希望出现边缘模糊的场合也很有用。由上图效果可见中值滤波的效果最好。

         由以上分析可知,各种滤波器各有优劣,适用情况也不尽相同,线性滤波器很适合于去除高斯噪声,而非线性滤波则很适合用于去除脉冲噪声,如中值滤波很适合去除椒盐噪声。使用起来要视具体实际情况而定。

    2. 频率域滤波

         开始时看书看了些原理想自己用算法实现发现有困难,就去百度了一下,写了下面的一些代码:

    理想低通滤波:

    [cpp]  view plain  copy
    1. %频率域滤波  
    2. clc;close all;  
    3. f=imread('salt.bmp');  
    4. f=im2double(f);  
    5.   
    6. F=fft2(double(f));%傅里叶变换  
    7.   
    8. F=fftshift(F);%将变换的原点移到频率矩形的中心  
    9. [M,N]=size(f);  
    10.   
    11. %理想低通滤波  
    12.   
    13. D0=input('输入截止频率');  
    14. h1=zeros(M,N);  
    15. for i=1:M  
    16.     for j=i:N  
    17.         if(sqrt(((i-M/2)^2+(j-N/2)^2))<D0)  
    18.             h1(i,j)=1;  
    19.           
    20.         end  
    21.     end  
    22. end  
    23. G1=F.*h1;  
    24. G1=ifftshift(G1);  
    25. g1=real(ifft2(G1));  
    26.   
    27. subplot(2,3,1);imshow(f);title('原图');  
    28. subplot(2,3,2);imshow(g1);title('理想低通滤波');  
    其运行效果如下:
    高斯低通滤波:

    [cpp]  view plain  copy
    1. %高斯低通滤波  
    2. clc;close all;  
    3. I=imread('salt.bmp');    
    4. I=im2double(I);    
    5. M=2*size(I,1);  
    6. N=2*size(I,2);                        %滤波器的行列数    
    7. u=-M/2:(M/2-1);  
    8. v=-N/2:(N/2-1);  
    9. [U,V]=meshgrid(u,v);  
    10. D=sqrt(U.^2+V.^2);  
    11. D0=20;  
    12. H=exp(-(D.^2)./(2*(D0^2)));          %设计高斯滤波器  
    13. J=fftshift(fft2(I,size(H,1),size(H,2)));  
    14. G=J.*H;  
    15. L=ifft2(fftshift(G));  
    16. L=L(1:size(I,1),1:size(I,2));  
    17. figure;  
    18. subplot(121);imshow(I);  
    19. subplot(122);imshow(L);   
    其运行效果如下:

    巴特沃斯低通滤波:

    [cpp]  view plain  copy
    1. %巴特沃斯低通滤波  
    2. clc;close all;  
    3. f=imread('salt.bmp');  
    4. f=im2double(f);  
    5. M=2*size(I,1);  
    6. N=2*size(I,2);                        %滤波器的行列数    
    7. u=-M/2:(M/2-1);  
    8. v=-N/2:(N/2-1);  
    9. [U,V]=meshgrid(u,v);  
    10. D=sqrt(U.^2+V.^2);  
    11. D0=50;                                %截止频率  
    12. n=6;  
    13. H=1./(1+(D./D0).^(2*n));              %设计巴特沃斯滤波器  
    14. F=fftshift(fft2(I,size(H,1),size(H,2)));%傅里叶变换  
    15. G=F.*H;  
    16. L=ifft2(fftshift(G));                   %傅里叶反变换  
    17. L=L(1:size(I,1),1:size(I,2));  
    18. subplot(121);imshow(f);  
    19. subplot(122);imshow(L);  
    其运行效果如下:


    可以看出,低通滤波滤掉了图像频谱中的高频成分,仅让低频部分通过,即变化剧烈的成分减少了,结果是使图像变模糊。比较可见高斯滤波的效果最好。频率域高通滤波和低通滤波实现的原理差不多,只是在设计滤波器时的公式有些差异,我就没有再重复实现了。

     Ref: http://blog.csdn.net/sinat_21595363/article/details/45420503

    图像处理常用图片下载地址:http://decsai.ugr.es/cvg/dbimagenes/

    展开全文
  • 空间滤波和频率滤波 1.空间滤波 空间滤波是指在图像空间中借助模板对图像领域进行操作,处理图像每一个像素值。主要分为线性滤波和线性滤波两类,根据功能可分为平滑滤波器锐化滤波器。平滑可通过低通来...

    空间域滤波和频率域滤波

    1.空间域滤波

    空间域滤波是指在图像空间中借助模板对图像领域进行操作,处理图像每一个像素值。主要分为线性滤波和非线性滤波两类,根据功能可分为平滑滤波器和锐化滤波器。平滑可通过低通来实现,平滑的目的有两类,一是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小尖端连接起来;二是去噪。锐化则可用高通滤波来实现,锐化的目的是为了增强被模糊的细节。
    实现空间域滤波有很多类型,如均值、中值、索贝尔、高斯、拉普拉斯、高斯-拉普拉斯等,但各有差异
    A)均值滤波:由fspecial函数生成的w1是一个大小为3*3的矩形平均滤波器,再用imfilter这个函数使这个掩模的中心逐个滑过图像的每个像素,输出为模板限定的相应领域像素与滤波器系数乘积结果的累加和。由处理结果可见均值滤波器的效果使每个点的像素都平均到它的领域去了,噪声明显减少了很多,效果较好。

    B)索贝尔滤波:w2是一个大小为33的sobel滤波器sv,用来近似计算垂直梯度,在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量。但是Sobel导数并不是真正的导数,这是因为Sobel算子定义于一个离散空间之上,它真正表示的是多项式拟合,用较大的核的话会在更多像素上进行拟合,会更加正确。而较小的核对噪声会更加敏感,此时用sobel算子近似计算导数的缺点精度比较低,这种不精确性在试图估计图像的方向导数 (使用y/x滤波器响应的反正切得到的图像梯度的方向)。比如对于33的Sobel滤波器,梯度角度接近水平或者垂直方向的时候,这样的不准确性会比较明显。由滤波效果可见到图像的边缘凸显了出来,sobel算子主要用于边缘检测。

    C)高斯滤波:高斯滤波器是平滑线性滤波器的一种,线性滤波器很适合于去除高斯噪声。而非线性滤波则很适合用于去除脉冲噪声,中值滤波就是非线性滤波的一种。高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波器是带有权重的平均值,即加权平均,中心的权重比邻近像素的权重更大,这样就可以克服边界效应。高斯滤波如果采用3×3掩模的具体公式如下:

    g(x,y)={f(x-1,y-1)+f(x-1,y+1)+f(x+1,y-1)+f(x+1,y+1)+[f(x-1,y)+f(x,y-1)+f(x+1,y)+f(x,y+1)]*2+f(x,y)*4}/16

    其中,f(x,y)为原图像中(x,y)像素点的灰度值,g(x,y)为经过高斯滤波和的值。由处理效果可看出高斯滤波的减噪能力较好。

    D)拉普拉斯滤波:拉普拉斯算子是n维欧式空间的一个二阶微分算子。拉普拉斯算子会突出像素值快速变化的区域,因此常用于边缘检测。由效果可见图像的边界得到了增强。

    E)中值滤波:中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为33,55区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。中值滤波对于斑点噪声和椒盐噪声来说尤其有用。保存边缘的特性使它在不希望出现边缘模糊的场合也很有用。由上图效果可见中值滤波的效果最好。

    由以上分析可知,各种滤波器各有优劣,适用情况也不尽相同,线性滤波器很适合于斜体样式去除高斯噪声,而非线性滤波则很适合用于去除脉冲噪声,如中值滤波很适合去除椒盐噪声。使用起来要视具体实际情况而定。
    图像常见噪声基本上有以下四种,高斯噪声,泊松噪声,乘性噪声,椒盐噪声。
    1.高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。
    产生原因:
    1)图像传感器在拍摄时市场不够明亮、亮度不够均匀;
    2)电路各元器件自身噪声和相互影;
    3)图像传感器长期工作,温度过高。
    2.泊松噪声,就是符合泊松分布的噪声模型,泊松分布适合于描述单位时间内随机事件发生的次数的概率分布。如某一服务设施在一定时间内受到的服务请求的次数,电话交换机接到呼叫的次数、汽车站台的候客人数、机器出现的故障数、自然灾害发生的次数、DNA序列的变异数、放射性原子核的衰变数等等
    3.乘性噪声一般由信道不理想引起,它们与信号的关系是相乘,信号在它在,信号不在他也就不在。
    4.椒盐噪声,椒盐噪声又称脉冲噪声,它随机改变一些像素值,是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。
    椒盐噪声往往由图像切割引起。

    2.频率域滤波

    傅里叶变换
    高斯低通滤波:
    巴特沃斯低通滤波
    低通滤波滤掉了图像频谱中的高频成分,仅让低频部分通过,即变化剧烈的成分减少了,结果是使图像变模糊。

    展开全文
  • 【OpenCV入门教程之八】线性邻域滤波专场 方框滤波 均值滤波与高斯滤波
  • 邻域算子与线性邻域滤波二、方框滤波——boxblur函数三、均值滤波——blur函数1)均值滤波的理论简析2)均值滤波的缺陷3)在OpenCV中使用均值滤波——blur函数四、高斯滤波——GaussianBlur函数五、均值滤波——blur...
  • 本系列文章由@浅墨_毛星云 出品,转载...毛星云(浅墨) 邮箱: happylifemxy@163.com  写作当前博文时配套使用的OpenCV版本: 2.4.8本篇文章中,我们一起仔细探讨了OpenCV图像处理技术中比较热门的图像滤波操作。图
  • 线性滤波

    2017-04-15 20:38:03
    线性滤波:方框滤波、均值滤波、高斯滤波 一、盒滤波(均值滤波) OpenCV提供boxFilter函数blur函数来实现图像盒滤波(均值滤波)操作。两个函数的功能是一样的哈。 均值滤波是指用模板核算子(卷积核算子)计算...
  • 本篇文章中,我们一起仔细探讨了...而作为非线性滤波的“中值滤波“双边滤波”,我们下次再分析。 因为文章很长,如果详细啃的话,或许会消化不良。在这里给大家一个指引,如果是单单想要掌握这篇文章中讲解的...
  • 图像滤波系列文章浅墨准备花两次更新的时间来讲,此为上篇,为大家剖析了“方框滤波“,”均值滤波”高斯滤波“三种常见线性邻域滤波操作。而作为非线性滤波的“中值滤波“双边滤波”,留待我们下次剖析。 ...
  • 图像滤波系列文章浅墨准备花两次更新的时间来讲,此为上篇,为大家剖析了“方框滤波“,”均值滤波”高斯滤波“三种常见线性邻域滤波操作。而作为非线性滤波的“中值滤波“双边滤波”,留待我们下次剖析。 ...
  • 空间滤波

    2016-05-25 15:03:11
    滤波借用于频域处理,在频域处理中,滤波是指接收或拒绝一定的频率分量。...一般来说,使用大小为 m∗nm*n 的滤波器对大小为 M∗NM*N 的图像进行线性空间滤波,可由下式表示:g(x,y)=∑s=−aa∑t=−bbw(s,t)f
  • 图像处理设计主要有以下几种处理:图像增强(灰度变换、直方图增强、空间滤波频率滤波)、图像分割、图像配准等等。 图像增强: 图像增强作为基本的图像处理技术,目的在于通过对图像进行加工使其比原始图像...
  • 灰度变换和空间滤波

    2021-01-14 14:18:09
    灰度变换和空间滤波灰度变换灰度变换和空间滤波基础一些基本的灰度变换函数图像反转对数变换幂律(伽马)变换分段线性变换函数对比度拉伸灰度级分层比特平面分层直方图处理直方图均衡化SmartyPants创建一个自定义...
  • 目录6.1线性滤波- 方框滤波- 均值滤波- 高斯滤波6.2非线性滤波- 中值滤波- 双边滤波 6.1线性滤波 1.1 平滑处理 平滑处理(smoothing)也称模糊处理(bluring),常用于减少图像上的噪点或者失真,降低图像分辨率 1.2 ...
  • ...本篇文章中,我们一起仔细探讨了OpenCV图像处理技术中比较热门的图像...图像滤波系列文章浅墨准备花两次更新的时间来讲,此为上篇,为大家剖析了“方框滤波“,”均值滤波”高斯滤波“三种常见线性邻域滤

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,715
精华内容 3,086
关键字:

线性空间滤波和频率