现在有一个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)的过程
请问是哪里需要改进呢?