图像增强之平滑噪声引言有些图像是通过扫描仪扫描输入、或传输通道传输过来的。
图像中往往包含有各种各样的噪声。
这些噪声一般是随机产生的,因此具有分布和大小不规则性的特点。
这些噪声的存在直接影响着后续的处理过程,使图像失真。
图像平滑就是针对图像噪声的操作,其主要作用是为了消除噪声,图像平滑的常用方法是采用均值滤波或中值滤波,均值滤波是一种线性空间滤波,它用一个有奇数点的掩模在图像上滑动,将掩模中心对应像素点的灰度值用掩模内所有像素点灰度的平均值代替,如果规定了在取均值过程中掩模内各像素点所占的权重,即各像素点所乘系数,这时就称为加权均值滤波;中值滤波是一种非线性空间滤波,其与均值滤波的区别是掩模中心对应像素点的灰度值用掩模内所有像素点灰度值的中间值代替。
1.实验目的1)掌握图像空间域平滑滤波的基本定义及目的。
2)理解空间域平滑滤波的基本原理及方法。
3)掌握进行图像空间域平滑滤波的方法。
2.实验原理2.1 空间域平滑滤波基本原理空间域滤波是在图像空间中借助模板进行领域操作,处理图像每一个都是根据模板对输入像素相应领域内的像素值进行计算得到的。
空间域滤波器根据功能主要分为平滑滤波器和锐化滤波器。
平滑可用低通来实现,平滑的目的可分为两类:一类是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小肩端连接起来;另一类是消除噪声。
2.2 空间域平滑滤波器最常用的平滑滤波器有均值滤波器和中值滤波器。
均值滤波器是线性平滑滤波器,其所有系数都是正数对3×3模板来说,最简单的是取所有系数为1,为了保持图像仍然在原来图像的灰度值范围内,模块与像素领域的乘积都要除以9。
中值滤波器是一种常用的非线性平滑滤波器,其原理与均值滤波器原理类似,但计算的不是加权求和,而是把领域中的图像的像素按灰度级进行排序,然后选择组的中间值作为输出像素值。
线性滤波输出图像的值等于输入图像滤波后值的局部平均,各个项具有相同的权。
下面是平滑窗口分别为矩形和圆形的情况。
⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=1111111111111111111111111251],[k j h rect ⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=011101111111111111110111211],[k j h circ 对一些图像进行线性滤波可以去除图像中某些类型的噪声,如采用邻域平均法的均值滤波器就非常适用于去除通过扫描得到的图像中的颗粒噪声。
邻域平均法是空间域平滑噪声技术。
用一像素邻域内各像素灰度平均值来代替该像素原来的灰度,即是邻域平均技术。
另外,频域处理的基础是频域滤波,例如,理想的低通滤波器:其中[]2122)2/()2/(),(N v M u v u D -+-=。
%线性平滑滤波I=imread('f:/sunyanz.jpg');J=imnoise(I,'salt & pepper',0.02); subplot(221),imshow(I) title('原图像')subplot(222),imshow(J) title('添加椒盐噪声图像')K1=filter2(fspecial('average',3),J)/255;%应用3*3邻域窗口法 subplot(223),imshow(K1)title('3x3窗的邻域平均滤波图像')K2=filter2(fspecial('average',7),J)/255;%应用7*7邻域窗口法 subplot(224),imshow(K2)title('7x7窗的邻域平均滤波图像')如图:⎩⎨⎧≥≤=0),(0),(1),(D v u D D v u D v u H原图3*3滤波9*9滤波原图像添加椒盐噪声图像3x3窗的邻域平均滤波图像7x7窗的邻域平均滤波图像%利用低通邻域平均模板进行平滑 I=imread('f:/sunyanz.jpg'); I=rgb2gray(I); subplot(1,3,1); imshow(I); title('原图');J=fspecial('average'); J1=filter2(J,I)/255; subplot(1,3,2); imshow(J1);title('3*3滤波');K=fspecial('average',9); K1=filter2(K,I)/255; subplot(1,3,3); imshow(K1);title('9*9滤波');如图:分析:对以上两种平滑滤波,其优势:实现简单,去噪效果明显。
不足:去噪的同时会导致结果图像边缘位置的改变和细节模糊甚至丢失。
4.3.2 非线性滤波中值滤波是一种最常用的图像增强技术,是非线性滤波。
对椒盐噪声有很好的去噪效果。
下图是加高斯噪声后,中值滤波和平均滤波的滤波效果对比:%中值滤波和平均滤波I=imread('f:/sunyanz.jpg');I=rgb2gray(I);J=imnoise(I,'gaussian',0,0.01);subplot(2,2,1);imshow(I);title('原图');subplot(2,2,2);imshow(J);title('noise');K=fspecial('average',5);K1=filter2(K,J)/255;subplot(2,2,3);imshow(K1);title('平均滤波');L=medfilt2(J,[3 5]);subplot(2,2,4);imshow(L);title('中值滤波');原图添加椒盐噪声图像平均滤波中值滤波如图可见,对于高斯噪声,均值滤波效果比中值滤波效果好。
原因:(1)高斯噪声是幅值近似正态分布,但分布在每点像素上。
(2)因为图像中的每点都是污染点,所以中值滤波选不到合适的干净点。
(3)因为正态分布的均值为0,所以均值滤波可以消除噪声。
(实际上只能减弱,不能消除。
)但对于椒盐噪声,中值滤波效果比均值滤波效果好。
原因:(1)椒盐噪声是幅值近似相等但随机分布在不同位置上,图像中有干净点也有污染点。
(2)中值滤波是选择适当的点来替代污染点的值,所以处理效果好。
(3)因为噪声的均值不为0,所以均值滤波不能很好地去除噪声点。
中值滤波是基于一个移动窗口并计算输入图像在窗口内的像素亮度值的中值作为输出图像窗口中心的像素值而产生的。
给定的图像f(x,y)中的每一个点(m,n ),取其领域s 。
设s 含有M 个像素{a1,a2,⋯,aM},将其按大小排序,若M 是奇数时,则位于中间的那个象素值就是修改后图像g(x,y)在点(m,n )处的像素值;若M 是偶数则取中间两个象素的平均值作为修改后图像g(x,y)在点(m,n )处的象素值。
我们在这里先人为的加上一些噪声,然后在matlab 中实现中值滤波的效果图如下:%二维中值滤波 hood=3;[P,map]=imread('f:/suanyanz.jpg'); I=rgb2gray(P); imshow(I,map);noisy=imnoise(I,'salt & pepper',0.05); %加入强度为0.05的椒盐噪声subplot(221);原图添加椒盐噪声图像平均滤波中值滤波imshow(noisy,map);title('加入椒盐噪声');filtered1=medfilt2(noisy,[hood hood]);%3×3窗口二维中值滤波subplot(222);imshow(filtered1,map);title('3×3窗口');hood=5;filtered2=medfilt2(noisy,[hood hood]); %5×5窗口二维中值滤波subplot(223);imshow(filtered2,map);title('5×5窗口');hood=7;filtered3=medfilt2(noisy,[hood hood]); %7×7窗口二维中值滤波subplot(224);imshow(filtered3,map);title('7×7窗口');figure;imshow(I);title('原图');比较经过加入椒盐噪声的图像和经过中值滤波的图像,可以发现,图像的噪声点被去除(跟也领域有关,此处不想解);但是比较原始图像和经过滤波的图像后会发现,图像的边缘稍微的变得模糊,这是平滑算法不可避免的缺点。
分析:优势:去噪效果明显,并且能够较好的保持图像边缘位置和细节。
不足:非线性滤波算法的实现相对线性滤波比较困难。
总结:平滑技术用于平滑图像中的噪声。
平滑噪声可以在空间域中进行,基本方法是求像素灰度的平均或中值。
为了既平滑噪声又保护图像信号,也有一些改进的技术,比如在频域中运用低通滤波技术。
当然,图像增强处理还有许多方法,基于空域的算法分为点运算算法和邻域去噪算法。
点运算算法即灰度级校正、灰度变换和直方图修正等,目的或使图像成像均匀,或扩大图像动态范围,扩展对比度。
邻域增强算法分为图像平滑和锐化两种。
平滑一般用于消除图像噪声,但是也容易引起边缘的模糊。
常用算法有均值滤波、中值滤波。
锐化的目的在于突出物体的边缘轮廓,便于目标识别。
常用算法有梯度法、算子、高通滤波、掩模匹配法、统计差值法等。