着色灰度图像

fry*_*yme 1 c++ graphics image colors image-processing

我有一个灰度图像和一些颜色,用RGB三元组表示.我需要使用这个三元组着色灰度图像.

左图代表我们拥有的和正确的东西.现在在程序中我有一些功能,其中输入是源图像的R,G和B值以及应当用作着色值的RGB值颜色.我无法决定如何使用颜色RGB增加或减少源RGB以获得正确的颜色调色板.

语言是C++,但它并不那么重要.提前致谢.

Mig*_*uel 9

其他答案建议将灰度值乘以目标RGB颜色.这没关系,但问题是它会改变图片的整体亮度.例如,如果您选择深绿色的阴影,整个图像将变暗.

我认为RGB颜色模型不是最适合这种情况.另一种方法是单独选择颜色,没有相关的亮度,然后在保留每个像素的原始亮度的同时着色图像.

算法将是这样的:

  • 根据两个值(Hue和Saturation)选择目标颜色.色调决定了颜色的色调(绿色,红色等),饱和度决定了颜色的纯度(纯度越低,颜色变为灰色越多).
  • 现在,对于灰度图像中的每个像素,计算HLS颜色模型中的新像素,其中H和S是目标色调和饱和度,L是像素的灰度值.
  • 将此HLS颜色转换为RGB并保存到新图片.

有关将HLS转换为RGB的算法,请参阅此页面此页面.