MATLAB 均值濾波器
本教程將介紹如何在 MATLAB 中使用 medfilt2()
、fspecial()
和 imfilter()
函式建立和應用中值或平均濾波器。
使用 MATLAB 中的 medfilt2()
函式建立和應用中值濾波器
如果要去除噪聲或平滑影象,可以使用 medfilt2()
函式建立並應用中值濾波器來平滑給定影象。此函式的第一個引數是要平滑的影象,第二個引數是輸入影象畫素周圍的 m×n 鄰域值。如果未給出第二個引數,則函式將使用預設值,即 3×3。例如,讓我們使用 imnoise()
函式向給定影象新增椒鹽噪聲,然後使用 medfilt2()
函式對其進行平滑處理。請參考下面的程式碼。
Input_image = imread('eight.tif');
Noisy_image = imnoise(Input_image,'salt & pepper',0.03);
Smoothed_image = medfilt2(Noisy_image);
imshowpair(Noisy_image,Smoothed_image,'montage')
輸出:
在上面的程式碼中,我們使用了一個已經儲存的硬幣影象,你可以根據自己的要求進行更改。在上圖中,左圖是噪聲影象,右圖是使用中值濾波器平滑後的影象。這兩個影象使用 imshowpair()
函式並排顯示。檢視此連結瞭解有關 medfilt2()
函式的更多詳細資訊。
在 MATLAB 中使用 fspecial()
和 imfilter()
函式建立和應用平均濾波器
如果要去除噪聲或平滑影象,可以使用 fspecial()
和 imfilter()
函式建立並應用特定的過濾器來平滑給定的影象。此函式中可用的過濾器有平均值、磁碟、高斯、拉普拉斯、對數、運動等。fspecial()
函式的第一個引數是過濾器的名稱,第二個引數是過濾器的大小。imfilter()
函式的第一個引數是你想要平滑的影象,第二個引數是你使用 fspecial()
函式製作的過濾器。例如,讓我們使用 imnoise()
函式向給定影象新增椒鹽噪聲,然後使用 imfilter()
函式對其進行平滑處理。請參考下面的程式碼。
Input_image = imread('eight.tif');
Noisy_image = imnoise(Input_image,'salt & pepper',0.03);
h = fspecial('average', [3 3]);
Smoothed_image = filter2(h, Input_image);
imshowpair(Noisy_image,Smoothed_image,'montage')
輸出:
在上面的程式碼中,我們使用了一個已經儲存的硬幣影象和 fspecial()
函式來建立一個大小為 3×3 的平均濾波器,然後我們使用 imfilter()
函式來平滑有噪聲的影象。在上圖中,左圖是噪聲影象,右圖是使用中值濾波器平滑後的影象。這兩個影象使用 imshowpair()
函式並排顯示。檢視此連結以獲取有關 fspecial()
函式的更多詳細資訊。