【问题标题】:Matlab: plot image given by 3 dimensional matrixMatlab:绘制由 3 维矩阵给出的图像
【发布时间】:2015-11-10 15:40:42
【问题描述】:

我想绘制一个图像。因此,我有一个尺寸为 wxhx3 的矩阵,其中 w 和 h 是分辨率(分别为宽度、高度)。第三维包含 rgb-color 的向量。 所以 image(1,1,1) 是 Pixel(1,1) 的红色分量,image(1,1,2) 是绿色,image(1,1,3) 是蓝色。 现在我的问题是,如何使用给定的矩阵绘制图像?

如果我想使用 image(..),我必须定义一个颜色图并重新计算索引,因为 image(...) 需要一个 wxhx1 矩阵。

谁能帮帮我?

【问题讨论】:

  • 您的矩阵是在uint8 还是uint16?其中之一是 RGB 绘图所必需的,image 应该这样识别它们
  • 我也试过 imshow()。但也可以使用 datatype 'double'。将其转换为“uint8”后,image() 和 imshow() 都有效。 MATLABs imshow() 帮助显示:灰度图像 | RGB 图像 | binary image 输入图像,指定为灰度、RGB 或二进制图像。数据类型:单 |双 |整数8 |整数 16 |整数32 |整数64 | uint8 | uint16 | uint32 | uint64 所以我想,我可以传递双参数...
  • 您可以将imshowdouble 一起使用。你只需要确保图像/矩阵的动态范围在[0,1]之间。

标签: matlab


【解决方案1】:

Matlab 图像显示函数(imageimshowimagesc)获取格式化为图像格式的数据(uint8 用于 8 位图像,uint16 用于 16 位图像)或double 类型的数据,用于 [0,1] 范围内的值。

因此,如果您的值在 [0,255] 范围内(对于 16 位图像,则为 [0,65535]),您可以尝试:

imshow(uint8(matrix))

imshow(uint16(matrix))

如果您的值在 [0,1] 范围内,您可以尝试:

imshow(double(matrix))

或者,最不值得推荐的是,如果您的价值观不适合这些情况,您可以尝试:

imshow(double(matrix/max(matrix(:))))

编辑:来自@rayryeng 评论。

【讨论】:

  • 警告:imshow 是图像处理工具箱的一部分。您也可以将最后一行替换为:imshow(double(matrix / max(matrix(:))));
猜你喜欢
  • 2014-06-12
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多