MATLAB 均值濾波器

Ammar Ali 2023年1月30日
  1. 使用 MATLAB 中的 medfilt2() 函式建立和應用中值濾波器
  2. 在 MATLAB 中使用 fspecial()imfilter() 函式建立和應用平均濾波器
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')

輸出:

在 matlab 中使用中值濾波器去除噪聲

在上面的程式碼中,我們使用了一個已經儲存的硬幣影象,你可以根據自己的要求進行更改。在上圖中,左圖是噪聲影象,右圖是使用中值濾波器平滑後的影象。這兩個影象使用 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')

輸出:

在 matlab 中使用平均濾波器去除噪聲

在上面的程式碼中,我們使用了一個已經儲存的硬幣影象和 fspecial() 函式來建立一個大小為 3×3 的平均濾波器,然後我們使用 imfilter() 函式來平滑有噪聲的影象。在上圖中,左圖是噪聲影象,右圖是使用中值濾波器平滑後的影象。這兩個影象使用 imshowpair() 函式並排顯示。檢視此連結以獲取有關 fspecial() 函式的更多詳細資訊。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相關文章 - MATLAB Image