這裡討論利用輸入圖像中像素的小鄰域來產生輸出圖像的方法,
1.相關算子(Correlation Operator)
步驟:
1)滑動核,使其中心位於輸入圖像g的(i,j)像素上
2)利用上式求和,得到輸出圖像的(i,j)像素值
3)充分上面操縱,直到求出輸出圖像的所有像素值
例:
A = [17 24 1 8 15 h = [8 1 6
23 5 7 14 16 3 5 7
4 6 13 20 22 4 9 2]
10 12 19 21 3
11 18 25 2 9]Matlab 函數:imfilter(A,h)
2.卷積算子(Convolution)
步驟:
1)將核圍繞中心旋轉180度
2)滑動核,使其中心位於輸入圖像g的(i,j)像素上
3)利用上式求和,得到輸出圖像的(i,j)像素值
4)充分上面操縱,直到求出輸出圖像的所有像素值
Matlab 函數:Matlab 函數:imfilter(A,h,'conv')% imfilter默認是相關算子,
因此當進行卷積計算時需要傳入參數'conv'
3.邊緣效應
當對圖像邊緣的進行濾波時,核的一部分會位於圖像邊緣外面。
常用的策略包括:
1)使用常數填充:imfilter默認用0填充,
這會造成處理後的圖像邊緣是黑色的。 2)復制邊緣像素:I3 = imfilter(I,h,'replicate');
4.常用濾波
fspecial函數可以生成幾種定義好的濾波器的相關算子的核
例:unsharp masking 濾波
12345I = imread(
'moon.tif'
);
h = fspecial(
'unsharp'
);
I2 = imfilter(I,h);
imshow(I), title(
'Original Image'
)
figure, imshow(I2), title(
'Filtered Image'
)