matlab自帶濾波器函數小結(圖像處理)
1 線性平滑濾波器
用MATLAB實現領域平均法抑制噪聲程序:
I=imread(' c4.jpg ');
subplot(231)
imshow(I)
title('原始圖像')
flag = isrgb(I);
if flag==true
I=rgb2gray(I);
else
I=I;
end
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 中值濾波器
用MATLAB實現中值濾波程序如下:
I=imread(' c4.jpg ');
flag = isrgb(I);
if flag==true
I=rgb2gray(I);
else
I=I;
end
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 狀態統計濾波器:ordfilt2函數
Y=ordfilt2(X,order,domain)
由domain中非0元素指定鄰域的排序集中的第order個元素代替X中的每個元素。Domain是一個僅包括0和1的矩陣,1僅定義濾波運算的鄰域。
Y=ordfilt2(X,order,domain,S)
S與domain一樣大,用與domain的非0值相應的S的值作為附加補償。
4 二維自適應除噪濾波器:wiener2函數
wiener2函數估計每個像素的局部均值與方差,該函數用法如下:
J=wiener2(I,[M N],noise)
使用M×N大小鄰域局部圖像均值與偏差,采用像素式自適應濾波器對圖像I進行濾波。
[J,noise]=wiener2(I,[M N])
濾波前還有估計附加噪聲的能量。
5 特定區域濾波
MATLAB圖像處理工具箱中提供的roifilt2函數用於對特定區域進行濾波,其語法格式為:
J=roifilt2(h,I,BW)
其功能是:使用濾波器h對圖像I中用二值掩模BW選中的區域濾波。
J=roifilt2(I,BW,fun)
J=roifilt2(I,BW,fun,P1,P2,…)
其功能是:對圖像I中用二值掩模BW選中的區域作函數運算fun,其中fun是描述函數運算的字符串,參數為P1、P2、…。返回圖像J在選中區域的像素為圖像I經fun運算的結果,其余部分的像素值為I的原始值。
例:對指定區域進行銳化濾波的程序清單:
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);