更改模板图像中的颜色

时间:2012-02-02 16:44:21

标签: image graphics colors

我有一些代码可以将模板图像中的单一颜色转换为用户选择的其他颜色。例如,如果红色RGB(255,0,0)是模板颜色,则将红色像素转换为新颜色RGB(r,g,b)非常简单。但是说我的模板图像中有一系列红色渐变,例如RGB值对于模板中的每个像素都不同。是否有一些公式或过程可用于将模板中的每个像素转换为看起来与新颜色一致的内容?

谢谢, 凯文

2 个答案:

答案 0 :(得分:0)

假设一个像素不能有一个渐变,但它有一个RGB(每个通道8或16或32位)颜色代码,你应该设置一个公差变量,以百分比表示,这将产生颜色代码仍然被认为与模板颜色相同。

以伪代码说:

tolerance=10%
IF Rpixel - tolerance <= Rtemplate <= Rpixel + tolerance AND
   Gpixel - tolerance <= Gtemplate <= Gpixel + tolerance AND
   Bpixel - tolerance <= Btemplate <= Bpixel + tolerance THEN

    YEAH they match.

当然,这需要在源图像中进行逐像素比较。

编辑: 考虑到颜色变化,改变“容忍”颜色很简单:

deltaR = Abs(Rpixel - Rtemplate)
deltaG = Abs(Gpixel - Gtemplate)
deltaB = Abs(Bpixel - Btemplate)

sourceR = destinationR +/- deltaR;
sourceG = destinationG +/- deltaG;
sourceB = destinationB +/- deltaB;

答案 1 :(得分:0)

我能够从vulkanino的良好开端中找到答案。我需要做的是将我的模板和新的RGB颜色转换为HLS格式(色调,亮度,饱和度)。然后我检查图像中的每个位以查看色调设置是否在公差范围内,如果是,则将delta色调值应用于该位的新颜色。亮度和饱和度可以保持不变。然后我将新颜色的HLS格式转换回RGB格式,一切看起来都不错。