[討論] 影像頻率濾波

作者: DFTz (..)   2016-10-31 00:54:43
現在有一個task作影像頻域濾波 流程如下:
輸入影像
f(x,y) -> FFT(f(x,y)) -> F(u,v) -> G(u,v) = H(u,v)*F(u,v) -> IFFT(G(u,v))
輸出影像
-> g(x,y)
=================================================
以下是我的實現方式:
fxy = imread('');
Fuv = fft2(fxy);
我先假設H(u,v) = 1;
gxy = ifft2(Fuv);
但是 real(gxy) 卻無法讀出和fxy相同的影像,請問原因在哪??
=================================================
另外,我現在要假設H(u,v)是一個理想低通濾波器,要實現濾波處理
實現方式如下:
fxy = imread('');
% begin to perform [(-1)^(x+y)] * f(x,y)
for i = 1:MM
for j = 1:NN
if(mod(i+j,2)~=0)
fxy(i,j,:) = (-1)*fxy(i,j,:);
end
end
end
point = 512
Fuv = fft2(fxy, point , point); % DFT( [(-1)^(x+y)] * f(x,y) )
% set ideal LPF
Ideal_LPF = zeros(point, point,3);
for i = (point/4 +1) : 3*point/4
for j = (point/4 +1) : 3*point/4
Ideal_LPF(i , j, :) = 1;
end
end
Guv = Fuv .* Ideal_LPF;
gxy = real(ifft2(Guv,point, point));
for i = 1:point
for j = 1:point
if(mod(i+j,2)~=0)
gxy(i,j,:) = (-1)*gxy(i,j,:);
end
end
end
以上作法作出來的結果還是怪怪的
黃色底是濾波處理,紅字是我設定H(u,v)的過程
請問是哪裡需要改進呢?
作者: kevio (成仔)   2016-11-02 17:34:00
應該是檔案格式問題喔!!一張圖有RGB三個成分 一次做FFT下去就亂七八糟了請先用 rgb2gray 轉成灰階圖 這樣fft2, ifft2前後結果就會一致秀圖時要使用imagesc 就會看到一樣的圖形了至於彩圖怎麼做FFT >.< 我就不會了A= imread('mr_brain.jpg');B= rgb2gray(A);C= fft2(B);D= ifft2(C);imagesc (D) 或 imagesc (B) 就會得到一樣的圖了我之前設計濾波器 是先設計filter樣子 之後用內建函數跑需要用到的函數有 freqspace, fwind1, filter2等函數總之請你先參考fwind1函數的help內容

Links booklink

Contact Us: admin [ a t ] ucptt.com