用MATLAB實現區域平均法壓制噪聲的程序;
I = im read(' c4.jpg ');
支線劇情(231)
imshow(壹)
標題(“原始圖像”)
I = RGB 2 gray(I);
I1=imnoise(I,' salt & amp辣椒',0.02);
支線劇情(232)
imshow(I1)
標題(“帶有椒鹽噪聲的圖像”)
k 1 = filter 2(f special(' average ',3),I 1)/255;% 3*3模板平滑過濾。
k2=filter2(fspecial('average ',5),I 1)/255;% for 5*5模板平滑濾波k3 = filter2 (fspecial ('average ',7),I 1)/255;% 7*7模板平滑過濾。
k4=filter2(fspecial('average ',9),I 1)/255;% 9*9模板平滑過濾。
支線劇情(233),imshow(k 1);標題(' 3*3模板平滑過濾');
支線劇情(234),im show(k2);標題(' 5*5模板平滑過濾');
支線劇情(235),im show(k3);標題(' 7*7模板平滑過濾');
支線劇情(236),im show(k4);標題(' 9*9模板平滑過濾');
2.中值濾波器
用MATLAB實現中值濾波的程序如下:
I = im read(' c4.jpg ');
I = RGB 2 gray(I);
J=imnoise(I,'鹽& amp辣椒',0.02);
支線劇情(231),imshow(I);標題(“原圖”);
支線劇情(232),imshow(J);標題('添加椒鹽噪聲圖像');
k 1 = medfilt 2(J);% 3*3模板中值濾波。
k2=medfilt2(J,);%進行5*5模板中值濾波。
k3=medfilt2(J,);% 7*7模板中值濾波。
k4=medfilt2(J,);% 9*9模板中值濾波。
支線劇情(233),imshow(k 1);標題(' 3*3模板中值濾波');
支線劇情(234),im show(k2);標題(' 5*5模板中值濾波');
支線劇情(235),im show(k3);標題(' 7*7模板中值濾波');
支線劇情(236),im show(k4);標題(' 9*9模板中值濾波');
3狀態統計濾波器:ordfilt2 2函數
Y=ordfilt2(X,順序,域)
用域中非零元素指定的鄰域有序集中的有序元素替換x中的每個元素。定義域是壹個只包含0和1的矩陣,1只定義了濾波運算的鄰域。
Y=ordfilt2(X,順序,域,S)
S和domain壹樣大,用domain的非零值對應的S的值作為附加補償。
二維自適應去噪濾波器:維納2函數
Wiener2函數估計每個像素的局部均值和方差,其使用如下:
J=wiener2(I,[M N],噪聲)
利用M×N大小鄰域內局部圖像的均值和偏差,對圖像I進行像素自適應濾波。
[J,噪聲]=wiener2(I,[M N])
在濾波之前,估計附加噪聲的能量。
5.特定區域過濾
MATLAB圖像處理工具箱中提供的roifilt2 2函數用於過濾特定區域,其語法格式為:
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有趣操作的結果,其余像素值是I的原始值..
示例:用於銳化和過濾指定區域的程序列表:
I = im read(' eight . TIF ');
c =[222 272 300 272 222 194];
r =[21 21 75 121 121 75];
BW=roipoly(I,c,r);
h = f special(' unsharp ');
J=roifilt2(h,I,BW);
支線劇情(1,2,1);imshow(壹);
支線劇情(1,2,2);imshow(J);
運行結果顯示,右上角的硬幣發生了變化,而其他硬幣保持不變。