MATLAB 中值滤波去除椒盐噪声
MATLAB 中值滤波去除椒盐噪声
本代码使用 MATLAB 实现中值滤波算法,有效去除图像中的椒盐噪声。
clc;
clear;
I = imread('D:\matblab_21b\projects\picture\test.tif'); %读取图片
I_PepperSalt=imnoise(I,'salt & pepper'); % 添加椒盐噪声
[m,n] = size(I_PepperSalt); % 读取图像长和宽
I1 = double(I_PepperSalt); %将图像转换成double类型
I2 = I1;
for i=2:m-1
for j=2:n-1 %从去除边缘的像素开始滤波
Mat = I1(i-1:i+1,j-1:j+1);
Mat2 = Mat(:);
s=sort(Mat2); %对像素进行排序
I2(i,j) = s(floor(9/2)+1); %选取中值
end
end
I3 = uint8(I2);
%%图像对比
figure;
subplot(131)
imshow(I);title('原始图像');
subplot(132)
imshow(I_PepperSalt);title('椒盐噪声图像');
subplot(133)
imshow(I3);title('中值滤波图像');
结果展示:
原始图像、椒盐噪声图像和中值滤波图像如下所示:

可以看到,经过中值滤波处理后,图像的椒盐噪声得到了有效的去除,还原了原始图像的细节和清晰度。
原文地址: https://www.cveoy.top/t/topic/nz8L 著作权归作者所有。请勿转载和采集!