2种颜色混合在一起。如果我有结果颜色的 RGB 和混合颜色之一的 RGB,那么我可以以某种方式计算第二种颜色?
我将尝试从视觉上解释我要说的内容。这是一个flickr链接
http://www.flickr.com/photos/48150615@N08/4407414157
我知道中间的圆圈有 20% 的不透明度
有什么方法可以知道圆圈的颜色值,以便我可以扣除它以获得与背景颜色相同的颜色值。
2种颜色混合在一起。如果我有结果颜色的 RGB 和混合颜色之一的 RGB,那么我可以以某种方式计算第二种颜色?
我将尝试从视觉上解释我要说的内容。这是一个flickr链接
http://www.flickr.com/photos/48150615@N08/4407414157
我知道中间的圆圈有 20% 的不透明度
有什么方法可以知道圆圈的颜色值,以便我可以扣除它以获得与背景颜色相同的颜色值。
如果我正确理解了任务...
让我们做一些学校数学
c 是初始图像的颜色,t 是透明颜色的颜色,a(对于 alpha)是透明度,c' 是结果颜色。
c' = (1 - a) * t + a * c
你想找到c。
c = (c' - (1 - a) * t) / a
你需要知道a、t和c'
首先,这取决于您将如何混合它们。也就是说,您可以平均 RGB 分量(这意味着蓝色 (0,0,255) + 黄色 (255,255,0) == 灰色 (128,128,128)),或者您可以处理色调、饱和度和值,这通常会提供更多“如预期”的结果。
无论如何,无论哪种情况,这都是一些简单的数学运算:
C3 = (C1 + C2) / 2
C2 = (C3 * 2) - C1
CIELAB 颜色空间是专门为计算颜色之间的差异而设计的,但在你的情况下它可能有点矫枉过正。可能 HSV 对您来说是一个简单的解决方案。
只需减去每个组件。组件通常以十六进制格式存储,在这种情况下,您需要将数字转换为十进制或进行十六进制数学运算。