灰度到RGB转换



我们已经在图像类型的教程中定义了RGB颜色模型和灰度格式。现在我们将把彩色图像转换为灰度图像。有两种转换方法,各有优缺点。方法如下:

  • 平均法
  • 加权法或亮度法

平均法

平均法是最简单的方法。你只需要取三种颜色的平均值。因为它是RGB图像,所以这意味着你需要将r、g和b相加,然后除以3,就可以得到你想要的灰度图像。

它是这样做的:

灰度 = (R + G + B) / 3

例如

rgb

如果你有一个像上面显示的彩色图像,并且你想使用平均法将其转换为灰度图像,则会出现以下结果。

rgb_gray

解释

有一点需要确保,原图发生了变化。这意味着我们的平均法有效。但结果并不理想。我们想把图像转换成灰度,但这却变成了一个相当黑的图像。

问题

这个问题出现的原因是,我们取了三种颜色的平均值。由于三种不同的颜色具有三种不同的波长,并且对图像的形成有其自身的贡献,因此我们必须根据它们的贡献来取平均值,而不是使用平均法平均地进行。现在我们正在做的是:

红色33%,绿色33%,蓝色33%

我们取每种颜色的33%,这意味着每个部分对图像的贡献相同。但实际上并非如此。亮度法给出了这个问题的解决方案。

加权法或亮度法

你已经看到了平均法中出现的问题。加权法解决了这个问题。由于红色在三种颜色中波长最长,绿色不仅波长比红色短,而且绿色更有利于眼睛舒适。

这意味着我们必须减少红色的贡献,增加绿色的贡献,并将蓝色的贡献放在两者之间。

因此,形成的新公式是

新的灰度图像 = ((0.3 * R) + (0.59 * G) + (0.11 * B))。

根据这个公式,红色贡献了30%,绿色贡献了59%(三种颜色中最大),蓝色贡献了11%。

将此公式应用于图像,我们得到:

原图

rgb

灰度图像

weighted_gray

解释

如你所见,图像现在已使用加权法正确转换为灰度。与平均法的结果相比,这张图像更亮。

广告