【问题标题】:Matlab read images stored in 4D arrayMatlab读取存储在4D数组中的图像
【发布时间】:2013-10-24 13:14:19
【问题描述】:

我一直在 Matlab 中对不同的图像人脸数据库使用 PCA 进行实验。我最近从同事那里获得了他几年前获得的几个数据库。它们是 .mat 文件,当我双击 .mat 文件时,会显示以下文件

如您所见,图像存储在这个 dbface 4D 数组变量中,但我不确定如何提取每个单独的图像。我只使用 matlab 几个星期,所以仍然熟悉它。我一直在四处寻找,但找不到任何关于如何从 4D 数组中提取每个单独图像的示例。

任何帮助将不胜感激

编辑:

size(dbface)

ans =
  64    64    11    15

If anyone else encounters this, easiest way to extract is to do the following

%Return rows cols and dimensions
[rows cols dimen1 dimen2] = size(dbface);

count = 0;
%Loop through each image
for i = 1:dimen1
for j = 1:dimen2
count = count + 1;
image = dbface(:,:,i,j);
tmimg=uint8(image); 
img=reshape(tmimg,cols,rows);   
images{count} = img;
end
end

【问题讨论】:

  • size dbface 的结果是什么?通常图像不会以 4D 格式存储,因此我认为我们需要更多信息来帮助您。
  • 我更新了我的帖子。我不认为图像通常会以 4D 格式存储,这就是我打开文件时感到困惑的原因
  • 问问你的同事。类的大小和数量显然是在第 3 和第 4 维上,但我不会满足于让 SO 给你最后的决定。

标签: matlab multidimensional-array


【解决方案1】:

从变量来看,我猜你有很多 64x64 的图像。

如果是这样,它们可以被提取出来

myExtract = dbface(:,:,1,1)

这将为您提供第一个,您可以更改最后两个数字以提取其他数字。

【讨论】:

  • 这似乎成功了,简直不敢相信它是如此简单。我只需要使用上面的代码提取图像,然后是 imagesc(myExtract); colormap('gray'),然后我可以显示图像。为您的帮助干杯!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2013-05-01
  • 1970-01-01
  • 2014-04-09
  • 2016-05-15
相关资源
最近更新 更多