读取一张频谱图,对其进行逆傅里叶变换,再使用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)),[]);
读取一张频谱图,对其进行逆傅里叶变换,再使用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)),[]);
在给定的代码中,问题可能在于对输入图像的处理和傅里叶逆变换的参数设置上存在误导。以下是一种修改后的代码:
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,[]);
希望这次修改能够解决你的问题。如果还有其他问题,请随时提问。