我有一个灰度图像和一些颜色,用RGB三元组表示。我需要使用这个三元组为灰度图像着色。
左图代表我们拥有的和正确的东西。 现在在程序中我有一些功能,其中输入是源图像的R,G和B值以及应当用作着色值的RGB值颜色。 我无法决定如何使用彩色RGB增加或减少源RGB以获得正确的颜色调色板。
语言是C ++,但它并不那么重要。 提前谢谢。
答案 0 :(得分:9)
其他答案建议将灰度值乘以目标RGB颜色。这没关系,但问题是它会改变图片的整体亮度。例如,如果你选择一个深绿色的阴影,整个图像会变暗。
我认为RGB颜色模型不是最适合这种情况。另一种方法是单独选择颜色,没有相关的亮度,然后在保留每个像素的原始亮度的同时着色图像。
算法将是这样的:
答案 1 :(得分:0)
从概念上讲,您将获取原始图像中每个像素的灰度值,并将其用作绿色值的百分比。因此,如果像素具有灰度值87,则彩色图像中的等效像素将为:
colorized_red = (87 / 255) * red_component(green_shade);
colorized_green = (87 / 255) * green_component(green_shade);
colorized_blue = (87 / 255) * blue_component(green_shade);