Matlab 显示为白色图像的RGB图像的二维傅里叶变换
我试图通过Matlab中的Matlab 显示为白色图像的RGB图像的二维傅里叶变换,matlab,image-processing,fft,Matlab,Image Processing,Fft,我试图通过Matlab中的imread函数读取两幅“bmp”格式的图像 对于第一个图像,它返回512*512 uint8的矩阵,对于第二个图像,它返回512*512*3 uint8的矩阵 对img2进行傅里叶变换后,显示白色图像。有什么想法吗 img1 = imread('I1.bmp'); img2 = imread('I2.bmp'); mag1 = abs(img1); mag2 = abs(img2); phase1 = angle(double(img1)); phase2 = a
imread
函数读取两幅“bmp”格式的图像
对于第一个图像,它返回512*512 uint8的矩阵,对于第二个图像,它返回512*512*3 uint8的矩阵
对img2
进行傅里叶变换后,显示白色图像。有什么想法吗
img1 = imread('I1.bmp');
img2 = imread('I2.bmp');
mag1 = abs(img1);
mag2 = abs(img2);
phase1 = angle(double(img1));
phase2 = angle(double(img2));
subplot(2, 2, 1);
subimage(img1);
subplot(2, 2, 2);
subimage(img2);
FFT1 = fft2(double(img1));
FFT2 = fft2(double(img2));
subplot(2, 2, 3);
imshow(log(abs(fftshift(FFT1))), [0 10]);
colormap(gray);
colorbar;
subplot(2, 2, 4);
imshow(log(abs(fftshift(FFT2))), [0 10]);
colormap(gray);
colorbar;
问题在于,第二幅图像是RGB,
fft2
分别对每个通道执行2D FFT,并返回与输入相同大小的matix。当您尝试显示生成的RGB图像(其中每个通道是每个通道的FFT)时,它将显示为全白色
如果您确实需要每个通道的FFT,那么您需要分别显示每个通道的FFT
% Display red FFT
imshow(log(abs(fftshift(FFT2(:,:,1)))), [0 10]);
另一个选项是在进行FFT之前将图像转换为灰度图像
img2 = rgb2gray(img2);
FF2 = ff2(img2);
imshow(log(abs(fftshift(FFT2(:,:,1)))), [0 10]);