我们上节讲的例子只是写了主体函数,具体实践中会遇到一些困惑,我们这里帮大家解答一下:
例子:利用函数medfilt2进行中值滤波
我们开始编写的程序是这样的:
I = imread('1.png');
figure, imshow(I)
J = imnoise(I,'salt & pepper',0.02); %生成噪图像
figure;imshow(J);
K = medfilt2(J,[3,3]); %中指滤波
figure;
imshowpair(K)
运行之后程序报错了,那么问题出在哪儿呢?
1.问题:中值滤波medfilt2,用法是B = medfilt2(A, [m n]),输入图像A应是二维矩阵,程序中输入图像h是由imread得到的I加上噪声得到的,而imread读到的图像I通常是3维RGB图,是三维矩阵,因此才出现问题,显示A应该为二维的。
2.解决办法:先用rgb2gray(I)将h先将I图像转换为灰度矩阵图像,再用medfilt2
3.具体程序
I = imread('1.png');
figure, imshow(I)
J = imnoise(I,'salt & pepper',0.02);
figure;imshow(J);
H=rgb2gray(J);
K = medfilt2(H,[3,3]);
figure;
imshowpair(H,K)
gms=medfilt2(H,'symmetric');
imshowpair(H,K)
具体的图像上一篇文章有这里只上传原图,大家可以自己试着做一下,如果出现问题可以到公众号咨询。