現在有一個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)的過程
請問是哪裡需要改進呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.230.151
※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1477846485.A.532.html
推
11/02 17:34, , 1F
11/02 17:34, 1F
→
11/02 17:34, , 2F
11/02 17:34, 2F
→
11/02 17:35, , 3F
11/02 17:35, 3F
→
11/02 17:35, , 4F
11/02 17:35, 4F
→
11/02 17:36, , 5F
11/02 17:36, 5F
→
11/02 17:36, , 6F
11/02 17:36, 6F
→
11/02 17:37, , 7F
11/02 17:37, 7F
→
11/02 17:37, , 8F
11/02 17:37, 8F
→
11/02 17:38, , 9F
11/02 17:38, 9F
→
11/02 17:38, , 10F
11/02 17:38, 10F
→
11/02 17:39, , 11F
11/02 17:39, 11F
→
11/02 17:44, , 12F
11/02 17:44, 12F
→
11/02 17:46, , 13F
11/02 17:46, 13F
→
11/02 17:48, , 14F
11/02 17:48, 14F