Matlab中消除图像噪声之中值滤波器:medfilt2 Matlab中消除图像噪声之中值滤波器:medfilt2
medfilt2, matlab, 消除噪声, 中值滤波器, 椒盐噪声
在图像处理中,在进⾏如边缘检测这样的进⼀步处理之前,通常需要⾸先进⾏⼀定程度的降噪。中值滤波是⼀种⾮线性数字滤波器技术,经常⽤于去除图像或者其它信号中的杂讯。这个设计思想就是检查输⼊信号中的采样并判断它是否代表了信号,使⽤技术个采样组成的观察窗实现这项功能。观察窗⼝中的数值进⾏排序,位于观察窗中间的中值作为输出。然后,丢弃最早的值,取得新的采样,重复上⾯的计算过程。椒盐噪声
中值滤波是图像处理中的⼀个常⽤步骤,它对于斑点噪声(en:speckle noise)和椒盐噪声(en:salt-and-pepper noise)来说尤其有⽤。保存边缘的特性使它在不希望出现边缘模糊的场合也很有⽤。当要求在降低噪声的同时要求保持边缘,中值滤波较卷积有更好的效果。
在matlab中,medfilt2函数⽤于执⾏⼆维中值滤波,使⽤⽅法如下:
B = medfilt2(A, [m n])
B = medfilt2(A)
B = medfilt2(A, ’indexed’, ...)
其中[m n]表⽰邻域块的⼤⼩,默认值为[3 3]。
//b=medfilt2(a,[m,n]);
b是中值滤波后的图象矩阵,a是原图矩阵,m和n是处理模版⼤⼩,默认3×3。
例如:我们先在⼀个图像上加⼊椒盐噪声,然后使⽤中值滤波将其去除。
I = imread(’eight.tif’);
J = imnoise(I,’salt & pepper’,0.02);
K = medfilt2(J);
imview(J), imview(K)