如何在Matlab中显示RGB图像,每个通道是单独的矩阵?

时间:2013-04-21 22:59:31

标签: matlab computer-vision face-recognition

我获得了一个Matlab格式的人脸数据集,但我没有 在Matlab中导入数据集后,我知道如何显示图像。

矩阵的大小为60x60x3x1000,这意味着, 图像尺寸为60x60,每个图像RGB有3个通道, 并且有1000个这样的图像。

我无法弄清楚如何进行基本操作,如显示第i个 面色。

由于

2 个答案:

答案 0 :(得分:0)

您是否尝试过image(1:60, 1:60, Images(:, :, :, i))

要获得个人频道,您可以这样做:

colormap(gray)
image(Images(:,:,1,i))

colormap(gray)
image(Images(:,:,2,i))

colormap(gray)
image(Images(:,:,3,i))

这应该为您分离通道并将各个颜色分量缩放到正确的饱和度。

另外,如果您收到有关超出范围的错误,请尝试:

imagesc(1:60, 1:60, Images(:, :, :, i)) 

那说我很难相信你的教授或同事没有以标准[0,255]格式给你RGB数据。但是,如果这样做,imagesc将无法并排比较颜色通道。

查看每个颜色矩阵中的某些值看起来也很有用。我们可以看到,如果你给我输出:

min(Images(:, :, 1, 1))
max(Images(:, :, 1, 1))

如果实际上它们是某种浮点数,我可以向您展示如何将其缩放为标准整数RGB表示。

答案 1 :(得分:0)

看起来好像数据是在[0..255]范围内给出的,但是类型为double(而不是uint8)。

所以,要获得你需要的第k张图像

Im_k = uint8( squeeze( Images(:,:,:,k) ) );

或者,如果你想使用双精度浮点

Im_k = squeeze( Images(:,:,:,k) ) / 255;

(在这种情况下,我不是100%确定你需要使用squeeze

显示图像

figure('Name', 'Showing k-th face');
imshow( Im_k );