【发布时间】: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