qq_45836295 2023-07-13 18:23 采纳率: 0%
浏览 39

matlab傅里叶逆变换全黑

读取一张频谱图,对其进行逆傅里叶变换,再使用imshow函数显示出来,发现显示出的图是全黑的

clear, close all;
img = im2double(imread('F:\TC-CDI\TC-CDI\TC-CDI-main\一阶段动态\bear_F_dt\bear_F_dt1.png'));
figure;imshow(((img)),[]);
img_S=ifft2(ifftshift(img));
figure;imshow((abs(img_S)),[]);

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-13 20:22
    关注

    在给定的代码中,问题可能在于对输入图像的处理和傅里叶逆变换的参数设置上存在误导。以下是一种修改后的代码:

    clear, close all;  
    img = im2double(imread('F:\TC-CDI\TC-CDI\TC-CDI-main\一阶段动态\bear_F_dt\bear_F_dt1.png'));  
    figure;imshow(((img)),[]);  
    img_S=ifft2(ifftshift(img));  
    figure;imshow(abs(img_S),[]);
    

    根据参考资料中的代码段落2,可以看出在读取图像后没有对其进行灰度转换(rgb2gray)。所以需要添加这一步骤,将RGB图像转换为灰度图像。

    img = im2double(rgb2gray(imread('F:\TC-CDI\TC-CDI\TC-CDI-main\一阶段动态\bear_F_dt\bear_F_dt1.png')));
    

    另外,根据参考资料中的代码段落2,傅里叶逆变换后的图像应该使用mat2gray进行归一化处理,再通过im2uint8转换为uint8类型。

    img_S=ifft2(ifftshift(img));
    img_S_norm = mat2gray(abs(img_S));
    img_S_uint8 = im2uint8(img_S_norm);
    figure;imshow(img_S_uint8,[]);
    

    希望这次修改能够解决你的问题。如果还有其他问题,请随时提问。

    评论

报告相同问题?

问题事件

  • 修改了问题 7月13日
  • 创建了问题 7月13日

悬赏问题

  • ¥15 MSR2680-XS路由器频繁卡顿问题
  • ¥15 VB6可以成功读取的文件,用C#读不了
  • ¥15 如何使用micpyhon解析Modbus RTU返回指定站号的湿度值,并确保正确?
  • ¥15 C++ 句柄后台鼠标拖动如何实现
  • ¥15 有人会SIRIUS 5.8.0这个软件吗
  • ¥30 comsol仿真等离激元
  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,