2010-03-05 84 views
1

2种颜色混合在一起。如果我有RGB的结果颜色和RGB其中一种颜色混合,那么我可以计算第二种颜色?我们可以找出2个RGb颜色之间的差异来找出第3种颜色吗?

我会尽力解释我想说什么。这里是一个Flickr的链接

http://www.flickr.com/photos/[email protected]/4407414157

我知道,在中间的圆圈为20%

不透明有没有办法知道圆的颜色值,这样我可以扣除以获得与背景颜色相同的颜色值。

+0

...什么? – Welbog 2010-03-04 17:53:02

+0

另请参阅:http://stackoverflow.com/questions/2049230/convert-rgba-color-to-rgb – 2010-03-04 17:55:17

+0

你在说什么? JPEG不会透明。只给出JPEG中的一个像素,无法回过头来看它是如何组成的。 – 2010-03-04 18:07:55

回答

3

,如果我理解正确的任务...

让我们做一些高中数学

c是初始图像的色彩,t为透明色的颜色,(对于阿尔法)是透明,C”是结果颜色。

c' = (1 - a) * t + a * c 

你想找到c。

c = (c' - (1 - a) * t)/a 

你需要知道,T和C”

+0

可以这么说,那么如果这些值是: 透明颜色的RGB:153 153 153; Alpha透明色:20%(普通); 结果颜色的RGB:159 78 57; 那么最初的颜色是什么? – 2010-03-04 18:36:43

+0

独立计算R,G和B:对于红色:c =(159 - (1 - 0.2)* 153)/ 0.2 = 183 – Andrey 2010-03-04 18:41:27

+0

我刚刚在photoshop中创建的图像应用了它,但它没有给我正确的颜色。难道我做错了什么? – 2010-03-04 19:12:27

0

只是减去每个组件。组件通常以十六进制格式存储,在这种情况下,您需要将数字转换为十进制或十六进制数学。

+0

从什么中减去什么? – nickf 2010-03-05 04:01:17

+0

结果中的组分减去第一个原始组分。 – 2010-03-05 04:05:17

+0

你能举个例子吗?我的意思是我已经尝试过,但它不工作。 – 2010-03-05 04:06:05

3

首先它取决于你如何混合它们。也就是说,您可以对RGB分量进行平均(这意味着蓝色(0,0,255)+黄色(255,255,0)==灰色(128,128,128)),或者您可以处理色调,饱和度和值,这通常会提供更多“如预期的”结果。

不管怎样,在这两种情况下,它的一些简单的数学:

  • 如果要获得平均的方法是C3 = (C1 + C2)/2
  • 然后找到C2的方式C2 = (C3 * 2) - C1
+0

HSL也会运作良好 – 2010-03-05 09:53:56

1

CIELAB色彩空间是专门为计算颜色之间的差异而设计的,但在您的情况下它可能是一种矫枉过正。可能HSV很容易为你解决。