中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。中值滤波对椒盐噪声抑制很好,对高斯噪声抑制一般。
clc
close all
f=[1 2 1 4 3;
1 10 2 3 4;
5 2 6 8 8;
5 5 7 0 8 ;
5 6 7 8 9];
[row, col]=size(f);
k=f;
for r=2:row-1
for c=2:col-1
m=ones(3, 3);
n=ones(3, 3);
b=k;
n(2,2)=b(r,c); %22
n(1,1)=b(r-1,c-1);%11
n(1,2)=b(r-1,c); %12
n(1,3)=b(r-1,c+1);%13
n(2,1)=b(r,c-1); %21
n(3,1)=b(r+1,c-1);%31
n(3,2)=b(r+1,c); %32
n(2,3)=b(r,c+1); %23
n(3,3)=b(r+1,c+1); %33
out=n.*m;
mid=median(out(:));
f(r,c)=mid;
end
end
原来的f矩阵:
中值滤波后:
%%%median函数能取一列或者一行数的中值
编的这个有点菜
问题:确定一个点,其邻域怎么定