【发布时间】:2016-12-29 01:20:37
【问题描述】:
我有三个灰度图像,其中每个图像代表 16 位分辨率 RGB 图像的单个通道。我想将它们转换为一张 RGB 图像。我试过cat 和ind2rgb 但它不起作用。我们应该在使用ind2rgb 之前索引我们的灰度图像吗?还有其他方法吗?
谢谢
【问题讨论】:
-
你能把你试过的代码贴出来
我有三个灰度图像,其中每个图像代表 16 位分辨率 RGB 图像的单个通道。我想将它们转换为一张 RGB 图像。我试过cat 和ind2rgb 但它不起作用。我们应该在使用ind2rgb 之前索引我们的灰度图像吗?还有其他方法吗?
谢谢
【问题讨论】:
假设您有三个矩阵R,G,B,类型为int16。如果你尝试
RGB = cat(3,R,G,B);
imshow(RGB)
IMSHOW 会抱怨:RGB images must be uint8, uint16, single, or double.。事实上,如果你检查文档:
真彩色图像可以是 uint8、uint16、单色或双色。一个索引 图像可以是逻辑、uint8、单或双。灰度图像可以 是逻辑的、uint8、int16、uint16、单或双。二值图像 必须是逻辑类。
因此,如果您连接三个 int16 灰度图像,并且您想使用 IMSHOW,则必须将生成的真彩色图像转换为它支持的图像:
imshow( im2double(RGB) )
【讨论】: