【问题标题】:How to identify and display images from a MATLAB .mat data file?如何识别和显示来自 MATLAB .mat 数据文件的图像?
【发布时间】:2013-03-04 00:45:23
【问题描述】:

我有一个 MATLAB 文件 (xyz.mat),该文件中显然有图像数据,但我对 MATLAB 的经验很少,也不知道如何“提取/打开”它们。

这是我唯一的线索:

Matlab 数据文件包含一个结构“data”和一个字段“dataList”,它本身就是一个结构数组,每个图像一个元素。所以第一张图片可以在data.dataList(1).img中找到

在将文件加载到 MATLAB 中(什么都没有发生)并输入命令 data.dataList(1).img(我得到一个巨大的数字列表)后,我仍然没有得到图像。

有什么帮助/想法吗?

【问题讨论】:

  • 欢迎来到 SO。不过,这不是一个实际的编程问题,而且您还没有研究过 MATLAB 中的图像和图像。数字图像是一个数组(一维、二维或 N-D 数字),具体取决于表示和数据。如果data.dataList(1).img 是二维的(使用size 检查),请尝试imshow(data.dataList(1).img, []), 将此二维数组视为图像(灰度或彩色)。
  • 非常感谢您的帮助,如果我在不正确的区域发帖,我们深表歉意。我尝试了您发布的 imshow 功能并得到了灰色图像!另外,当我尝试 size(data.dataList(1).img) 时,我得到了输出:ans = 310 342 关于如何获取彩色图片的任何想法?
  • 您得到的尺寸表示它是灰度图片,因此您无法从中获得彩色图片。彩色图片由红、绿、蓝三种原色组成。如果它是彩色图片,那么尺寸应该是:310 342 3。最后 3 表示它有 3 个颜色平面:R、G 和 B。
  • 那么我可以假设如果它是灰度图像,图像矩阵中的数字只是某种强度值吗?确定从黑到白的强度?
  • 正确。 0 是黑色,255 是白色。

标签: image matlab arraylist structure datalist


【解决方案1】:

如果data.dataList(1).img 是 2D 或 3D(使用 size 检查),您可以使用 imshow 将此 2D 数组(灰度)或 3D 数组(彩色)可视化为图像。

im = data.dataList(1).img;
figure; imshow(im, []);

您可以使用min(im(:))max(im(:)) 找到此图像的范围,或使用imhist 绘制其值的分布。

要以矩形蒙太奇查看所有图像,请查看 montage 函数:

montage(I) 将多帧图像数组 I 的所有帧显示在一个 单个图像对象。 I 可以是二进制、灰度或 真彩色图像。二值或灰度图像序列必须是 M×N×1×K 数组。

实际上,您可以将多个 K 图像(具有相同的M x N 大小)放在一个M x N x 1 x K 数组中并调用蒙太奇:

for k = 1:K
    I(:,:,1,k) = data.dataList(k).img; 
end
figure; montage(I);

【讨论】:

  • 我很想用 immovie 来显示我的图像,但一直遇到困难。有什么想法吗?另外,有没有办法用“image”而不是“imshow”来制作电影,因为我注意到对象分辨率有所不同。我的图像使用了比 [0,255] 更高的比例,它是一个 12 位相机!
  • @gracielaestrada 最好为新的或不同的问题发布新帖子。答案对您最初发布的问题有帮助吗? SO 基于特定的问题/答案格式。清楚地说明你的问题,你尝试了什么以及你想要实现什么。首先查看这些函数的 MATLAB 文档。由于人们无法访问您的数据或问题,因此您必须帮助他们——帮助您。
猜你喜欢
  • 1970-01-01
  • 2019-04-24
  • 1970-01-01
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多