matlab中濾波函數


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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM