MATLAB利用均值滤波的方法去除图像的噪声,将滤除噪声前后的图像输出。

利用均值滤波的方法去除图像的噪声,将滤除噪声前后的图像输出。调用imfilter函数滤除图像噪声并输出,对比调用MATLAB函数去噪的图像与自己所编写程序去噪后的图像进行对比。

clc;
A=imread('noise.bmp');
A1=rgb2gray(A);%变成灰度图像
figure(1);
subplot(1,3,1);
imshow(A1);title('模糊图像')
[width,height]=size(A1);
n=5;
a=ones(n,n);
B=double(A1);
C=B;
for i=1:(height-n)+1
   for j=1:(width-n)+1
               D=B(i:i+(n-1),j:j+(n-1)).*a;
               s=sum(sum(D));                 %求D矩阵中各元素之和
               C(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将与模板运算后的各元素的均值赋给模板中心位置的元素
   end
end
subplot(1,3,2);
imshow(uint8(C));title('自设函数');
w=1/25*ones(5,5)%滤波模板
Ismoo=imfilter(A1,w,'corr','replicate');%滤波
subplot(1,3,3);
imshow(Ismoo);title('imfilter函数');

运行:

猜你喜欢

转载自blog.csdn.net/y0205yang/article/details/121315333
今日推荐