摘要:图像加噪,以及各种滤波
1、线性平滑滤波器
% 用MATLAB实现领域平均法抑制噪声程序
clear
clc
I=imread('lena.jpg ');
subplot(231),imshow(I);title('原始图像');
% I=rgb2gray(I); %如果是rgb图像,需要这一步
I1=imnoise(I,'salt & pepper',0.02); % 图像加噪
subplot(232),imshow(I1);title(' 添加椒盐噪声的图像')
k1=filter2(fspecial('average',3),I1)/255; %进行3*3模板平滑滤波
k2=filter2(fspecial('average',5),I1)/255; %进行5*5模板平滑滤波
k3=filter2(fspecial('average',7),I1)/255; %进行7*7模板平滑滤波
k4=filter2(fspecial('average',9),I1)/255; %进行9*9模板平滑滤波
subplot(233),imshow(k1);title('3*3 模板平滑滤波');
subplot(234),imshow(k2);title('5*5 模板平滑滤波');
subplot(235),imshow(k3);title('7*7 模板平滑滤波');
subplot(236),imshow(k4);title('9*9 模板平滑滤波');
2、中值滤波
clear
clc
I=imread('lena.jpg ');
% I=rgb2gray(I);
J=imnoise(I,'salt & pepper',0.02);
subplot(231),imshow(I);title('原图像');
subplot(232),imshow(J);title('添加椒盐噪声图像');
k1=medfilt2(J); %进行3*3模板中值滤波
k2=medfilt2(J,[5,5]); %进行5*5模板中值滤波
k3=medfilt2(J,[7,7]); %进行7*7模板中值滤波
k4=medfilt2(J,[9,9]); %进行9*9模板中值滤波
subplot(233),imshow(k1);title('3*3模板中值滤波');
subplot(234),imshow(k2);title('5*5模板中值滤波 ');
subplot(235),imshow(k3);title('7*7模板中值滤波');
subplot(236),imshow(k4);title('9*9 模板中值滤波');
3、维纳滤波,中值滤波
clear
clc
I=imread('lena.jpg');
J=imnoise(I,'gaussian',0,0.01); % 加高斯噪声
K=wiener2(J,[5,5]); % 进行维纳滤波
L=medfilt2(J); % 进行中值滤波
figure
subplot(221),imshow(I,[]),title('原图');
subplot(222),imshow(J,[]),title('加高斯噪声');
subplot(223),imshow(K),title('维纳滤波');
subplot(224),imshow(L),title('中值滤波');
4、特定区域滤波
% 对指定区域进行锐化滤波的程序
I=imread('eight.tif');
c=[222 272 300 272 222 194];
r=[21 21 75 121 121 75];
BW=roipoly(I,c,r);
h=fspecial('unsharp');
J=roifilt2(h,I,BW);
subplot(1,2,1);imshow(I);
subplot(1,2,2);imshow(J);
PS: Matlab还有许多相关滤波器,相关的函数与用法请查阅帮助文件。