Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 显示为白色图像的RGB图像的二维傅里叶变换_Matlab_Image Processing_Fft - Fatal编程技术网

Matlab 显示为白色图像的RGB图像的二维傅里叶变换

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

我试图通过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 = 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]);