【问题标题】:matlab code for DFT stepsDFT步骤的matlab代码
【发布时间】:2014-02-16 13:21:00
【问题描述】:

我想在滤波器 sobel 和图像之间的频域中制作产品,但我无法获得 过滤后的图像我在这段代码中有什么问题

[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

【问题讨论】:

  • ' [A,B]=size(f); %[C,D]=size(fspecial('sobel')); h=fspecial('高斯'); [C,D]=尺寸(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; % 传递函数和图像频域内的乘积 g=real(ifft2(G)); imshow(g) % 不工作'

标签: matlab image-processing filter fft


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答,但是 freqz2 和 fft2 有什么区别?
  • 在你的情况下 freqz2(h)=abs(fftshift(fft2(h)))
  • 如果您的问题解决了,请考虑采纳答案,其他遇到类似问题的朋友可以参考一下。谢谢
  • 对不起,我该怎么做
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多