空域濾波演算法是影像處理中用於去除噪聲的一類方法,它們直接在影像的畫素座標系中操作,透過分析影像中畫素與周圍畫素的關係來去除噪聲。以下是幾種常見的空域濾波演算法的原理描述及其在MATLAB中的實現程式碼。
1. 均值濾波
均值濾波是一種簡單的線性濾波方法,它透過替換影像中每個畫素點的值為其鄰域內所有畫素值的平均值來實現降噪。
MATLAB程式碼示例:
1 2 3 |
img = imread('lena.png'); % 讀取影像 h = fspecial('average', [5 5]); % 建立5x5的均值濾波器核 filtered_img = imfilter(img, h); % 應用濾波器 |
2. 中值濾波
中值濾波是一種非線性濾波方法,它透過替換影像中每個畫素點的值為其鄰域內所有畫素值排序後的中值來實現降噪。這種方法對椒鹽噪聲特別有效。MATLAB程式碼示例:
1 2 |
img = imread('lena.png'); % 讀取影像 filtered_img = medfilt2(img); % 應用中值濾波 |
3. 高斯濾波
高斯濾波透過應用二維高斯函式作為濾波器核來平滑影像,適合去除高斯噪聲。MATLAB程式碼示例:
1 2 3 |
img = imread('lena.png'); % 讀取影像 h = fspecial('gaussian', [5 5], 2); % 建立5x5的高斯濾波器核 filtered_img = imfilter(img, h); % 應用濾波器 |
4. 雙邊濾波
雙邊濾波是一種非線性空間濾波方法,它不僅考慮畫素點的空間鄰近性,還考慮畫素值的相似性。這種濾波器在保持邊緣清晰的同時去除噪聲。MATLAB程式碼示例:
1 2 3 |
img = imread('lena.png'); % 讀取影像 h = fspecial('gaussian', [5 5], 2); % 建立5x5的空間濾波器核 filtered_img = imfilter(img, h, 'replicate'); % 應用雙邊濾波 |