低通滤波在数字图像处理中的应用以及仿真实现
数字图像的滤波方法很多,主要可以分为频率域滤波和空间域滤波两大类。频率域滤波是通过傅里叶变换,把在空间域混叠的成分在频率域中分离出来,从而提取或滤去相应的图像成分,这是一种间接的图像滤波方法。而空间域滤波是一类直接的滤波方法,它在处理图像时直接对图像灰度作运算。空间域滤波有空间域平滑滤波器和空间域锐化滤波器两大类,相对应地,频率域滤波也分为频率域平滑滤波器和频率域锐化滤波器两大类,本文主要研究了对空间域低通滤波器在数字图像处理中的应用,做了以下四个方面的工作:一是对空间域平滑滤波器在数字图像处理中的作用进行了仿真实现,对仿真结果进行了定性分析。二是改变滤波器的参数,对不同参数下的滤波效果进行了对比分析。三是对频率域平滑滤波器(巴特沃斯低通滤波器)在数字图像处理中的应用进行了实现,并结合空间域滤波进行了定性分析。四是分别改变巴特沃斯低通滤波器的参加,对不同参数对滤波效果的影响进行了对比分析,从而得出了一些重要结论。
1.空间域平滑滤波器在数字图像处理中的应用以及仿真实现
空间域平滑滤波分手理由器在数字图像处理中的应用主要有两个:一是模糊;另一个是消除噪声。空
间域平滑滤波一般采用简单平均法进行,就是求邻近像素点的平均亮度值。邻域的大小与平滑的效果直接相关,邻域越大平滑的效果越好,但邻域过大,平滑会使边缘信息损失的越大,从而使输出的图像变得模糊,因此需合理选择邻域的大小。空间域平滑滤波是采用模板处理方法对图像进行滤波,去除图像噪声,滤波时,模板的中心从一个像素向另一个像素移动,通过模板运算得到该点的输出。
1.1利用空间域平滑滤波器对图像进行平滑滤波的效果如下:
图一 空间域平滑滤波结果
原始图像为一幅没有加入任何噪声的水果图像,第二幅图为加入了椒盐噪声的图像,第三幅图为经过邻域为3x3的空间平滑滤波器处理后的图像,从仿真结果可以得出以下结论:
(一)经过空间域平滑滤波器处理后,椒盐噪声被很好的滤除了。说明空间域平滑滤波器确实具有很好的滤波作用。
(二)与原始图像相比,经过空间域平滑滤波器处理后的图像没有原始图像那么清晰了,说明空间域平滑滤波器在降低噪声的同时使图像变得模糊了,特别在图像的边缘和细节处。
1.2 改变邻域大小的滤波效果如下:
图二 不同邻域大小下的滤波结果
第一幅图为经过邻域为3x3的空间域平滑滤波器处理后的图像,第二幅图为经过邻域为9x9的空间域平滑滤波器处理后的图像,第三幅图为经过邻域为15x15的空间域平滑滤波器处理后的图像,第四幅图为经过邻域为35x35的空间域平滑滤波器处理后的图像。从仿真结果可以看出,邻域越大,图像模糊程度越严重,因此在实际处理中,一定要根据实际情况选择合适的邻域大小。
2.频率域平滑(低通)滤波器在数字图像处理中的应用以及仿真实现
频率域滤波与空间域滤波是一一对应的,频率域低通滤波对应于空间域平滑滤波,空间域平滑滤波器和频率域低通滤波器组成了一对傅里叶变换对,在数字图像处理中,它们的作用都是滤除图像中的高频成分,保留低频部分。在傅里叶变换域,频谱的直流分量正比于图像的平均亮度,噪声对应于频率较高的区域,图像实体位于频率较低的区域。可以构造一个低通滤波器,使低频分量顺利通过而高频分量被阻止通过,这样就可以滤除掉图像中的噪声,再经过反变换获得得平滑的图像。
低通滤波的数学表达式如下式所示:
G(u,v)=F(u,v)H(u,v) 式中F (u, v)是含有噪声的原图像的傅里叶变换;
H (u, v)为传递函数,也称转移函数(即低通滤波器);G (u, v)为经低通滤波后输出图像的傅里叶变换。H(u,v)可以有效滤除高频成分,而保留低频成分。滤波后,经过傅里叶变换反变换得到平滑图像,频率域低通滤波器主要有理想低通滤波器、巴特沃斯低通滤波器以及高斯低通滤波器。其中巴特沃斯低通滤波器是最常用,同时也是物理可实现的一种频率域低通滤波器,因为这里主要对巴特沃斯低通滤波器在数字图像处理中的应用进行仿真。
毕成功
2.1利用频率域低通滤波器对图像进行平滑滤波的效果如下:
图三 利用巴特沃斯低通滤波器进行滤波的结果
第一幅图为原始图像,第二幅图为加椒盐噪声的图像,第三幅图为经巴特沃斯低通滤波器滤波后的图像,由仿真结果可以看出,滤波后的图像中噪声降低了,说明巴特沃斯滤波器确实有滤除图像噪声的功能,同时也可以看出滤波后图像与原始图像相比,边缘和细节处变模糊了,说明巴特沃斯滤波器在滤除噪声的同时也把原始图像中的高频成分滤除了。
2.2 改变巴特沃斯低通滤波器的阶数,观察滤波效果。
巴特沃斯低通滤波器的阶数对数字图像处理的结果会产生很大影响,阶数太小,滤波器的通带过小,在实际应用中作用不大,阶数太大,会产生严重的振铃现象。下面分别为阶数n=1,n=2,n=10时的仿真结果图:
图四 不同滤波器阶数下的滤波效果图
其中第一幅图为阶数n=1时的滤波效果图,第二幅图为阶数n=2时的滤波效果图,第三幅图为阶数n=10时的滤波效果图,可以看出,阶数不同,滤波效果也不一样,第一幅图中的高频成分滤除得最多,而第三幅图出现了明显的振铃现象。因此在实际应用中一般都采用n=2的巴特沃斯滤波器。
齐脖短发
3.MATLBA仿真程序
RGB=imread('peppers.png');
I=rgb2gray(RGB);
subplot(131);imshow(I);title('原始图像');
im_noi=double(imnoi(I,'salt & pepper',0.06));
subplot(132);imshow(im_noi,[]);title('加椒盐噪声的图像');
H=fspecial('average',3);
im_smoothed=imfilter(I,H);
subplot(133);imshow(im_smoothed);title('3x3空间滤波后的图像');
RGB=imread('peppers.png');
I=rgb2gray(RGB)+20;
im_noi=double(imnoi(I,'salt & pepper',0.06));
I1=imfilter(I,fspecial('average',3));
subplot(221);imshow(I1);title('3x3');
I2=imfilter(I,fspecial('average',9));
subplot(222);imshow(I2);title('9x9');
I3=imfilter(I,fspecial('average',15));
subplot(223);imshow(I3);title('15x15');
I4=imfilter(I,fspecial('average',35));
subplot(224);imshow(I4);title('35x35');
sze=[5 5];
cutoff=300;
日本鬼片n=2;
if length(sze)==1
rows=sze; cols=sze;
el
rows=sze(1);cols=sze(2);
end
if离职报告申请 mod(cols,2)
xrange=[-(cols-1)/2:(cols-1)/2]/(cols-1);
el
xrange=[-cols/2:(cols/2-1)]/cols;
end
if mod(rows,2)
yrange=[-(rows-1)/2:(rows-1)/2]/(rows-1);
el
yrange=[-rows/2:(rows/2-1)]/rows;
end
[x,y]=meshgrid(xrange,yrange);
radius=sqrt(x.^2+y.^2);
f=1.0./(1.0+(radius./cutoff).^(2*n));
f=f/sum(f(:));
I=imread('peppers.png');I=rgb2gray(I);
I1=double(imnoi(I,'salt & pepper',0.03));
I2=uint8(round(filter2(f,double(I1))));
绝句与律诗的区别
subplot(131);imshow(I,[]);title('原始图像')
小舞蹈病subplot(132);imshow(I1,[]);title('加椒盐噪声的图像');
subplot(133);imshow(I2,[]);title('经巴特沃斯低通滤波器滤波后的图像');
sze=[5 5];
cutoff=300;
if length(sze)==1
rows=sze; cols=sze;
el
rows=sze(1);cols=sze(2);
end
if mod(cols,2)
xrange=[-(cols-1)/2:(cols-1)/2]/(cols-1);
el
关于酒 xrange=[-cols/2:(cols/2-1)]/cols;
end
if mod(rows,2)
yrange=[-(rows-1)/2:(rows-1)/2]/(rows-1);
el
yrange=[-rows/2:(rows/2-1)]/rows;
end
[x,y]=meshgrid(xrange,yrange);
radius=sqrt(x.^2+y.^2);
f1=1.0./(1.0+(radius./cutoff).^(2));
f1=f1/sum(f1(:));
I=imread('peppers.png');I=rgb2gray(I);I=double(imnoi(I,'salt & pepper',0.03));
I2=uint8(round(filter2(f1,double(I))));
subplot(131);imshow(I2,[]);title('n=1')
sze=[5 5];
cutoff=300;