【发布时间】:2013-01-14 20:49:38
【问题描述】:
我在 Matlab 中使用 rgb2gray 将 RGB 图像(双格式)转换为相同格式的灰度图像。现在我想将相同的图像从灰色转换为 RGB。我在 Matlab 中使用了gray2rgb,但它给出了一个错误。那么如何使用 Matlab 将灰度图像转换为 RGB 图像呢?
【问题讨论】:
我在 Matlab 中使用 rgb2gray 将 RGB 图像(双格式)转换为相同格式的灰度图像。现在我想将相同的图像从灰色转换为 RGB。我在 Matlab 中使用了gray2rgb,但它给出了一个错误。那么如何使用 Matlab 将灰度图像转换为 RGB 图像呢?
【问题讨论】:
简短的回答:你不能。至少不完美。
正如肖恩所说,这是因为您在转换为灰度时丢失了一些信息。换言之,从灰度转换回 RGB 是一个欠定逆问题,因此没有简单的解决方案。
现在这并不意味着您不能尝试。如果您对图像有一些先验知识,则可以在剩余信息之外使用它来计算原始 RGB 图像的估计。
例如,如果您知道(或假设)原始图像已经是灰度图像(在 RGB 容器中),那么您可以完全反转该过程。这就是 Sean 提到的 gray2rgb 函数正在做的事情。
其中大部分是未解决的问题,因此可能超出您的预期。
【讨论】:
很抱歉,这是不可能的。 通过将图像转换为灰度,您减少了信息量(每个像素的 3 维降至 1)并且无法恢复。
rgb2gray 函数是一个包含在 Matlab 中的函数,并且工作正常。
gray2rgb 函数不是标准的 Matlab 函数。如果您指的是this function on Matlab central,它的文档说明它没有做任何有用的事情,只是从 1d 矩阵创建一个 3d 矩阵;图像仍然是灰度的。
【讨论】: