使用 2D FFT 過濾

與 1D 訊號一樣,可以通過應用傅立葉變換,乘以頻域中的濾波器並轉換回空間域來過濾影象。以下是使用 Matlab 將高通濾波器或低通濾波器應用於影象的方法:

image 成為未經過濾的原始影象,以下是如何計算其 2D FFT:

ft = fftshift(fft2(image));

現在要排除部分光譜,需要將其畫素值設定為 0.原始影象中包含的空間頻率從中心對映到邊緣(使用 fftshift 之後)。要排除低頻,我們將中心圓形區域設定為 0。

以下是如何使用內建函式生成半徑為 D 的圓盤形二進位制掩碼:

[x y ~] = size(ft);
D = 20;
mask = fspecial('disk', D) == 0;
mask = imresize(padarray(mask, [floor((x/2)-D) floor((y/2)-D)], 1, 'both'), [x y]);

遮蔽頻域影象可以通過將 FFT 逐點與上面獲得的二進位制掩碼相乘來完成:

masked_ft = ft .* mask;

現在,讓我們計算逆 FFT:

filtered_image = ifft2(ifftshift(masked_ft), 'symmetric');

影象中的高頻是銳邊,因此該高通濾波器可用於銳化影象。