[讨论] 影像频率滤波

楼主: 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