图像平滑
10 2 2 6
18 8
5
5 4
5
6 5
7
7 6
0
8 8
8
9 8
8
9 6
5
8 7
均值=7
1 1 1
5 5 5 4
3 2 10
2 5 6 5
2 1 2
6 7 7 6
3 4 3
7 5 8 8
2 3 3
7 8 9 8
1 3 4
7 8 9 6
2 2 2
3 5 8 7
Snn
最小方差平滑滤波器
—— 基本原理
1
2
10
2 5
1
2
6 7
4
3
8 0
3
1
5 5 5
4
9 8 9
5
5
6
7
8
7 5 6
6 8 5 7 7 8
8
9
C=6.6316
C=5.5263
Image_smooth---均值平滑
/*--------------------------------------Image_smooth---均值平滑-------------A:输入图像数据 B:输出图像数据 row:图像宽度,高度,行数 col:图像长度,列数 ------------------------------------------------------------------------*/
的效果也是有限的。
为了有效地改善这一状况,必须改换滤波器的
设计思路,中值滤波就是一种有效的方法。
中值滤波器
—— 设计思想
因为噪声(如椒盐噪声)的出现,使该点像素比 周围的像素亮(暗)许多。
如果在某个模板中,对像素进行由小到大排列的 重新排列,那么最亮的或者是最暗的点一定被排 在两侧。
取模板中排在中间位置上的像素的灰度值替代待 处理像素的值,就可以达到滤除噪声的目的。
1 1 5 5 5 2 2 7 7 6 1 2 6 6 7 4 3 8 8 8 3 4 9 8 9 1 1 5 5 5 2 2 6 7 7 6 1 2 7 6 6 7 4 3 8 8 8 3 4 9 8 9
(7+8+8+8+8)/5=7.8=8 (6+6+6+7+7)/5=6.4=6 (6+6+7+7+7)/5=6.6=7 (6+8+8+8+9)/5=7.8=8 (6+6+7+7+8)/5=6.8=7 (5+6+6+7+7)/5=6.2=6 (2+3+3+4+4)/5=3.2=3 (1+2+2+2+3)/5=2 (1+1+2+2+2)/5=1.6=2
2 2 3 4 2 3 4 7 6 8 9 5 5 7 7 6 8 8 5 6 8 6 7 8 9
6
7
8
5
C=6.6316
C=5.5263
中值滤波代码
function txmedianN(N) A=imread('J:\Fig58.bmp'); [row,col]=size(A); N2=floor(N/2); for i=N2+1:row-N2 for j=N2+1:col-N2 k=1; for m=-N2:N2 for n=-N2:N2 buf(k)=A(i+m,j+n); k=k+1; end end B(i,j)=median(buf); end end subplot(1,2,1),imshow(A),title('original image'); subplot(1,2,2),imshow(B),title('new image');
思考
你让工人为你工作7天,回报是一根金条, 这个金条平分成相连的7段,你必须在每天 结束的时候给他们一段金条。如果只允许 你两次把金条弄断,你如何给你的工人付 费?
第四章 图像的噪声抑制
图象在传输过程中,由于传输信道、 采样系统质量较差,或受各种干扰的 影响,而造成图象毛糙,此时,就需 对图象进行平滑处理。
补充说明
在命令行窗口中调用 txsmoothN(5);
均值滤波器滤椒盐噪声的效果
画面边框保留效果
均值滤波器的改进
—— 加权均值滤波
均值滤波器的缺点是,会使图像变的模糊,原因
是它对所有的点都是同等对待,在将噪声点分摊
的同时,将景物的边界点也分摊了。
为了改善效果,就可采用加权平均的方式来构造 滤波器。
的混叠平均。
这样,就达到了边界保持 的目的。
1
2
K近邻(KNN)平滑滤波器
—— 实现算法 1) 以待处理像素为中心,作一个m*m的作用 模板。 2)在模板中,选择K个与待处理像素的灰度差 为最小的像素。 3)将这K个像素的灰度均值替换掉原来的像素 值。
K近邻(KNN)平滑滤波器
—— 例题
例:下图,给定3*3模板,k=5。
均值滤波器
—— 原理
在图像上,对待处理的像素给定一个模板,
该模板包括了其周围的邻近像素。将模板中
的全体像素的均值来替代原来的像素值的方
法。
均值滤波器
—— 处理方法
以模块运算系数表示即:
1 1 1 H 0 1 1 1 1 9 1 1 1
1 1 5 2 2 3 7 5 1 2 4 6 5 4 3 4 8 5 3 4 9 待处理像素
for i=2:row-1 for j=2:col-1 buf=A1(i-1,j-1)+A1(i-1,j)+A1(i-1,j+1) +A1(i,j-1)+A1(i,j)+A1(i,j+1) +A1(i+1,j-1)+A1(i+1,j)+A1(i+1,j+1); B(i,j)=buf/9; end end
中值滤波器与均值滤波器的比较
对于高斯噪声,均值滤波效果比中值滤 波效果好。
中值滤波器与均值滤波器的比较
原因:
高斯噪声是幅值近似正态分布,但分布在每点像 素上。
因为图像中的每点都是污染点,所以中值滤波选 不到合适的干净点。 因为正态分布的均值为0,所以均值滤波可以消除 噪声。(注意:实际上只能减弱,不能消除。思 考为什么?)
a1 b1 d2 c2 b2
c1
d1
a2
1/4*(a1+b1+c1+d2)
5×5
1
1 1 5
3
2
2
1
3
4 3
2
3 4
1
3 4 7
2
2 2 3
(1,8)(3,0)(2,7)(3,5)(2,5) (1,8)(2,18)(1,6)(4,2) (3,5)(1,4)(10,3) (1,3,2,7,3,2,1,2,1,2,3,1,3) 均值=2 (2,9)(1,9)(4,8)(3,7)(3,6) (10,8)(2,8)(3,0)(4,7) (4,5)(2,7)(6,8) (9,9,8,7,6,10,8,3,7,5,7,8)
K近邻(KNN)平滑滤波器
—— 原理分析
边界保持滤波器的核心是确定边界点与非边界 点。
如图所示,点1是黄色区域的非边界点,点2是 蓝色区域的边界点。 点1模板中的像素全部
1
是同一区域的;
点2模板中的像素则包
2
括了两个区域。
K近邻(KNN)平滑滤波器
—— 原理分析
在模板中,分别选出5个与点1或点2灰度值最 相近的点进行计算,则不会出现两个区域信息
Image_smooth---N可调
/*--------------------------------------Image_smooth---均值平滑-------------A:输入图像数据 B:输出图像数据 row:图像宽度,高度,行数 col:图像长度,列数 ------------------------------------------------------------------------*/ function txsmoothN(N) A=imread('J:\Fig58.bmp'); [row,col]=size(A); A1=double(A); N2=floor(N/2); for i=N2+1:row-N2 for j=N2+1:col-N2 buf=0; for m=-N2:N2 for n=-N2:N2 buf=buf+A1(i+m,j+n); end end B(i,j)=buf/(N*N); end end B=uint8(B); subplot(1,2,1),imshow(A),title('original image'); subplot(1,2,2),imshow(B),title('new image以9种 模板表示出来,然后计算每个模板中的灰度 分布方差,以方差最小的那个模板的均值替 代原像素值。
最小方差平滑滤波器
—— 模板结构
模板如下:本例在第2和第6中选择一个方差小的。
3
7
9
1
2
5
6
4
8
5×5
1
1 1 5
3
2
2
1