在Matlab中读取.pngs时,尺寸混淆

  • 本文关键字:Matlab 读取 pngs matlab file-io
  • 更新时间 :
  • 英文 :


我正在使用以下代码将一系列.png图像从电脑上的文件夹中读取到matlab中:

datapath = dirname;
i = 1;
myFolder = dirname;
if ~isdir(myFolder)
  errorMessage = sprintf('Error: The following folder does not exist:n%s', myFolder);
  uiwait(warndlg(errorMessage));
  return;
end
filePattern = fullfile(myFolder, '*.png');
pngFiles = dir(filePattern);
for k = 1:length(pngFiles)
  baseFileName = pngFiles(k).name;
  fullFileName = fullfile(myFolder, baseFileName);
  imageArray{i} = double(imread(fullFileName))/255;
  %imshow(imageArray{i});
  i = i+1;
end

我正在阅读的每个png是1024x800。然而,当我在使用调试器时将鼠标悬停在imageArray{I}上时,我被告知图像的尺寸为800x1024x3!首先,行和列是如何混淆的?其次,为什么我的2D图像被赋予了额外的维度?奇怪的是,当对imageArray{i}调用imshow时,它会显示一个看起来非常正常的图像。这是怎么回事?

谢谢!

这是一个RGB(或Truecolor)图像。它们由三层堆叠在一起形成一个图像。在您的情况下,每层对应800x1024像素。

对于RGB图像,深度(第三维度)始终为3。第一平面包含图像的每个像素中的红色程度,第二平面包含图像中的每个像素的绿色程度,第三平面包含图像每个像素的蓝色程度。

在matlab中,
第一个维度对应于图像中的行数。第二个维度对应于图像中的列数。

但是在windows中恰恰相反
第一个维度对应列的数量,第二个维度对应行的数量
这就是你把它们颠倒过来的原因。

最新更新