如何从像素数据中读取图像?

时间:2017-10-26 15:27:24

标签: image matlab

no use

我正在尝试在MATLAB中读取cifar10数据集的图像。数据以10000x3072格式给出,其中一行包含相应的RGB值。我用过:

img= reshape(data(1, 1:1024), [32,32]);
image(img)

将图像转换为有意义,因为它显示垃圾图像。如何从此.mat文件中读取图像?来自此数据集https://www.cs.toronto.edu/~kriz/cifar-10-matlab.tar.gz

1 个答案:

答案 0 :(得分:2)

根据this页面,data的格式为:

  
      
  • 数据 - 一个10000x3072 numpy数组的uint8s。阵列的每一行都存储一个32x32的彩色图像。前1024个条目包含红色通道值,下一个1024表示绿色,最后1024个表示蓝色。图像以行主顺序存储,因此数组的前32个条目是图像第一行的红色通道值。
  •   

使用您的代码:

img= reshape(data(1, 1:1024), [32,32]);

你应该按照列主要顺序获得第一张图像的红色通道(即转置)。要获得具有正确方向的完整RGB图像,您需要使用:

img = reshape(data(1, 1:3072), [32,32,3]);   % get 3-channel RGB image
img = permute(img, [2 1 3]);   % exchange rows and columns
相关问题