2014-02-16 39 views
1

我想在过滤器索贝尔和图像之间的频域的产物,我不能让 过滤的图像什么是我的问题在此代码MATLAB代码步骤

[A,B]=size(f); 
%[C,D]=size(fspecial('sobel')); 
h=fspecial('gaussian'); 
[C,D]=size(h); 
hp=freqz2(h,size(f,2),size(f,1)); 
'%padarray(h,[ceil(((A-C)/2)) ceil(((B-D)/2))]); 
'%hp=hp(1:254,1:256); 
HP=fft2(hp); 
HP=ifftshift(HP); 
F=fft2(f); 
G=HP.*F; % product of transfer function and image in frequency domain 
g=real(ifft2(G)); 
imshow(g) % do not work 
+0

'[A,B] = size(f); %[C,d] =尺寸(fspecial( '索贝尔')); H = fspecial( '高斯'); [C,d] =尺寸(H);马力= freqz2(H,尺寸(F,2),尺寸(F,1)); (((A-C)/ 2))小组(((B-D)/ 2))]); “%HP = HP(1:254,1:256); HP = FFT2(马力); HP = ifftshift(HP); F = FFT2(F); G = HP * F。;传递函数和图像频率域的乘积g =实数(ifft2(G)); imshow(g)%不工作' – user3315958

回答

0

你不需要HP=fft2(hp);hp已经在频域。请删除该行,并使用

HP=ifftshift(hp); 
F=fft2(f); 
G=HP.*F; 
g=real(ifft2(G)); 
imshow(g) 
+0

感谢您的回答,但freqz2和fft2之间的区别是什么? – user3315958

+0

您的情况freqz2(h)= abs(fftshift(fft2(h))) – lennon310

+0

感谢您的回答,非常多 – user3315958