2.3.1 邻域平均法均值滤波
邻域平均法是空间域平滑噪声技术,也是用消除噪声的最简单的方法,最简单的是将原图中一个像素的灰度值和它周围邻近8个像素的灰度值相加,然后将求得的平均值(除以9)作为新图中该像素的灰度值。
它采用模板计算的思想,模板操作实现了一种邻域运算,即某个像素点的结果不仅与本像素灰度有关,而且与其邻域点的像素值有关。
邻域平均法的用数学表达如公式2.2所示:
,(i,j)∈M(2-2)
g(i,j)=∑f(i,j)
N
其中f(i,j)为给定的含有噪声的图像, g(i,j)为经过邻域平均处理后的图像为,M是所取邻域中各邻近像素的坐标,是邻域中包含的邻近像素的个数。
邻域平均处理方法是以图像模糊为代价来减小噪声的,且模板尺寸越大,噪声减小的效果越显著。
如果是噪声点f(i,j),其邻近像素灰度与之相差很大,采用邻域平均法就是用邻近像素的平均值来代替它,这样能明显消弱噪声点,使邻域中灰度接近均匀,起到平滑灰度的作用。
在实际应用中,可根据图像处理的要求、处理区域的大小和噪声的多少选择不同寸的模板,如3x3, 5x5, 7x7. 9x9等。
邻域平滑滤波方法程序设计简单,处理速度快并且能去除大部分的噪声,但是会导致图像模糊,特别是边缘部分[14]。
2.3.2 中值滤波
中值滤波法是一种去除噪声的非线性处理技术,其基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。
中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里邻域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。
与均值滤波相比,中值滤波能够比较好的实现在消除噪声的同时,图像边缘完好的保留。
在均值滤波器中,由于噪声成分被放入平均计算中,所以输出受到了噪声的影响,但是在中值滤波器中,由于噪声成分很难选上,所以几乎不会影响到输出,因此同样用3x3区域进行处理,中值滤波消除的噪声能力更胜一筹。
中值滤波无论是在消除噪声还是保存边缘方面都是一个不错的方法,但与此同时,中值滤波花费的时间是均值滤波的5倍以上。
2.3.3 高斯滤波
高斯滤波是一类根据高斯函数的形状来选择权值的线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程,其基本原理就是对整幅图像进行
加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。
高斯滤波的具体操作是用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
加权平均就是根据某一点周围不同位置的点对滤波效果的贡献不同,在进行计算时需要乘以不同的权重值。
一般情况下,模板中心像素的权重比较大,模板边界像素点的权重比较小,其他位置的像素权重介于两者之间。
对于图像处理来说,常用二维零均值离散高斯函数作平滑滤波器, 主要用于去除抑制服从正态分布的噪声。
2.3.4 处理结果比较
我们在图像的采集过程中难免会产生一些噪声,这些噪声最为典型就是椒盐噪,本文同我们首先对车牌增强灰度图添加椒盐噪声,如图2.4所示,然后分别采用以上3种不同的滤波方法对添加椒盐噪声的车牌图像进行滤波处理,滤波效果如图2.5、图2.6、图2.7所示:
图2.4 椒盐噪声灰度图 图2.5 邻域平均法均值滤波效果图
(a ) 加噪图像 (b ) 加噪图像
(a )邻域平均法均值滤波 (b )邻域平均法均值滤波 (b ) 加噪图像
(a)中值滤波(b)中值滤波
图2.6 中值滤波效果图
(a) 高斯滤波效果(b) 高斯滤波效果
图2.7 高斯滤波效果图
通过用三种不同的滤波方法对图像进行处理,邻域平均法均值滤波、高斯滤波对三幅图像的处理耗时较短,中值滤波耗时最长,但是从滤波效果来看中值滤波优于其他两者,并且高斯平滑滤波效果最差。
从综合效果出发,结合车牌快速检测对图片处理的要求本文采用中值滤波。
clear;
close all;
clf;
[fn,pn,fi]=uigetfile('ChePaiKu\*.jpg','选择图片');
I=imread([pn fn]);%输入原始图像
subplot(1,3,1),imshow(I);title('原图像');
imwrite(I,'C:\Users\Administrator\Desktop\原图像.jpg'); %把图像写入图形文件中
gray=rgb2gray(I);
subplot(1,3,2),imshow(gray); title('灰度图像');
imwrite(gray,'C:\Users\Administrator\Desktop\灰度图像.jpg'); %把图像写入图形文件中
J=imnoise(gray,'salt & pepper',0.04);
subplot(1,3,3),imshow(J),title('添加椒盐噪声图像');
imwrite(J,'C:\Users\Administrator\Desktop\添加椒盐噪声图像.jpg'); I1=medfilt2(J);
figure(2),subplot(1,3,1),imshow(I1); title('中值滤波图像');
imwrite(I1,'C:\Users\Administrator\Desktop\中值滤波后图像.jpg'); K1=filter2(fspecial('average',3),J)/255;%应用3*3邻域窗口法? subplot(1,3,2),imshow(K1),title('邻域平均滤波');
imwrite(K1,'C:\Users\Administrator\Desktop\邻域平均滤波.jpg');
J=double(J);
J=fft2(J);
J=fftshift(J);
[m,n]=size(J);
d0=80;
m1=fix(m/2);
n1=fix(n/2);
for i=1:m
for j=1:n
d=sqrt((i-m1)^2+(j-n1)^2);
h(i,j)=exp(-d^2/2/d0^2);
end
end
g=J.*h;
g=ifftshift(g);
g=ifft2(g);
g=mat2gray(real(g));
subplot(1,3,3);imshow(g),title('高斯滤波');
imwrite(g,'C:\Users\Administrator\Desktop\高斯滤波.jpg');。