Alpha混合红色,蓝色和绿色图像以产生任何rgb值的图像?

时间:2010-01-08 20:20:47

标签: colors rgb formula alpha color-blending

基本上,我有一个上下文,我不能以编程方式为图像着色,尽管我可以改变它的alpha值。通过一些实验,我发现我可以使用特定的alpha值对图像的红色,蓝色和绿色进行分层,以生成各种颜色。但是,我想知道是否可以通过这种方法实现真正​​的RGB表示?如果是这样,将RGB值转换为红色,蓝色和绿色层的不同alpha值的公式是什么。

3 个答案:

答案 0 :(得分:3)

alpha组合的基本“等式”是:

alpha * (R1,G1,B1) + (1-alpha) * (R2,G2,B2)

如果你有三个带有alpha的图层,你实际上是在组合4个图层(第4个是黑色),所以最终的颜色是:

alpha1 * (R1,G1,B1) + (1-alpha1) * ( 
   alpha2 * (R2,G2,B2) + (1-alpha2) * (
      alpha3 * (R3,G3,B3) + (1-alpha2) * (0,0,0) ) )

如果每层都有相同的图像,而layer1是红色通道(G1 = B1 = 0),layer2是绿色,layer3是蓝色,你得到:

(alpha1 * R, (1-alpha1)*alpha2 * G, (1-alpha1)*(1-alpha2)*alpha3 * B)

对于白色像素,您可以使用任何可能的颜色。对于黑色像素,你除了黑色之外什么也做不了。对于任何其他像素,您受R,G和B的值限制。

假设您想要在当前颜色为(R,G,B)的像素处实现(Rd,Gd,Bd),那么您必须选择:

alpha1 = Rd/R
alpha2 = Gd/(G*(1-alpha1))
alpha3 = Bd/(B*(1-alpha1)*(1-alpha2))

问题是alpha通常只能在0和1之间。因此,例如,如果Rd>你无能为力。

如果可以控制混合功能(例如,在Photoshop中),则可以做得更好。

答案 1 :(得分:0)

如果我理解正确的话,我认为这是不可能的。

如果对于某个像素,您的图像的红色值是0.5,那么您可以将其与(典型)范围[0,1]中的alpha组合以形成任意值,包括0.5,但是不能超越,例如0.6左右为输出值。

答案 2 :(得分:0)

如果您想要创建3个混合在一起的图层,则可以添加到原始图像,这很有可能。这是一个Python脚本的链接,它调用Paint Shop Pro中的函数来执行硬件。

http://pixelnook.home.comcast.net/~pixelnook/SplitToRGB.htm

如果您需要更多详细信息,请发表评论,稍后我会尝试填写。