如何找到有助于已知颜色C的n种颜色的分数加权?

时间:2016-07-20 10:59:03

标签: image-processing computer-vision interpolation linear-interpolation bilinear-interpolation

This is related to but not the same as this question (click to go to).然而,在此问题之前需要解决相关问题,或至少解决问题。这可以被认为是另一方的反面。

这个问题是,给定RGB中的n种颜色,例如

Color1 as RGB (255, 128, 128)
Color2 as RGB (128, 128, 128)
Color3 as RGB (128, 0, 128)

我们知道给定的颜色C,找到每种颜色的分数加权,以便当这些颜色混合时给定分数加权给出的结果颜色得到已知的颜色C.分数加权在上面的链接问题中定义,它是一个介于0.0和1.0之间的值,其中总权重等于1.0。例如,Color1可以是0.2,Color2是0.2,Color3是0.6。

插值在RGB色彩空间中是线性的。

通常颜色数量不超过5,通常为2或3或4种颜色。

请注意,很有可能无法混合这些颜色来获得颜色C,例如,如果我们有两种非常红的颜色并且我想要颜色C(绿色),则无法混合两种红色变得绿色。所以在这种情况下,没有解决方案。

在某些情况下,可能有多种方法可以混合颜色来制作颜色C.

1 个答案:

答案 0 :(得分:0)

是的,所以线性方程有助于解决问题。解决问题的一些Java代码位于此处,请注意它使用Scala SBT构建,但是它的Java代码。

https://github.com/PhilAndrew/betweenrgb

此处测试加权颜色的合并:

https://github.com/PhilAndrew/betweenrgb/blob/master/src/test/java/between/rgb/FindWeightedColorsTest.java