我試圖編寫一個MATLAB函數,它接受一個圖像和一個頻率,對該圖像執行一個低通濾波器(只保留低於所提供頻率的頻率),並返回新圖像。MATLAB中圖像的低通濾波器?
我該如何去做這件事?現在我有以下幾點:
function newImage = lowPass(image, freq)
% apply a low pass filter on an image and output the result
Fs = 44100;
eps = 0.000000001;
transformed = fft2(image);
for i = ceil(freq * size(image,1)/Fs):size(image,1)
for j = ceil(freq * size(image,2)/Fs):size(image,2)
transformed(i,j) = 0;
end
end
newImage = abs(ifft2(transformed))/256;
newImage = newImage/(max(max(max(newImage))) + eps);
end
但是,我的輸出圖像顯示爲藍色,沒有任何意義。現在我的代碼的最後兩行(涉及修改newImage的代碼行)已完成,可將顏色縮放到正確的值。
我在做什麼錯?另外,我很驚訝MATLAB似乎沒有自動完成這個功能。
請你張貼一張樣品圖片。 – kkuilla
相關:[使用高斯低通濾波器的圖像模糊](http://stackoverflow.com/q/27985769/2545927) – kkuilla
@kkuilla不完全相同。這篇文章是在空間領域做的,但是朝着正確的方向邁出了一大步。 – rayryeng