基本上,我有一个上下文,我不能编程色调图像,但我可以改变它的alpha值。通过一些实验,我发现我可以将图像的红色,蓝色和绿色版本与特定的alpha值叠加,以生成各种颜色。但是,我想知道是否有可能通过这种方法实现真正的RGB表示?如果是这样,那么将红色,蓝色和绿色图层的RGB值转换为不同的alpha值的公式是什么?阿尔法混合红色,蓝色和绿色图像产生一个图像有色任何rgb值?
1
A
回答
3
阿尔法组合的基本的“方程”是:
alpha * (R1,G1,B1) + (1-alpha) * (R2,G2,B2)
当你有三层带alpha你实际上结合4层(第四之一是黑色),以使最终的颜色是:
alpha1 * (R1,G1,B1) + (1-alpha1) * (
alpha2 * (R2,G2,B2) + (1-alpha2) * (
alpha3 * (R3,G3,B3) + (1-alpha2) * (0,0,0)))
只要你有每个层上的相同的图像和层1是红色通道(G1 = B1 = 0)和二层是绿色和三层是蓝色你得到:
(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))
的问题是,阿尔法通常只能在0和1之间。因此,举例来说,如果路> [R有什么可以做。
如果您可以控制混合功能(例如,在Photoshop中),则可以做得更好。
0
我不认为这是可能的,如果我正确地理解你。
如果对于某个像素,图像的红色值为0.5,则可以将其与(典型)范围[0,1]中的alpha组合以形成任何值,包括0.5,但包括0.5你不能超越,得到例如作为输出值的0.6左右。
0
如果您想创建混合在一起的3个图层叠加到原始图像上,这很有可能。这是一个指向Paint Shop Pro中的函数来执行硬件部分的Python脚本的链接。
http://pixelnook.home.comcast.net/~pixelnook/SplitToRGB.htm
如果您需要更多的细节,发表评论,我会尽力以后,以填补进去。
相关问题
- 1. 删除图像的蓝色和绿色
- 2. iOS:UIColor不尊重红色,绿色,阿尔法,蓝色。显示其他颜色?
- 3. 如何将JPG图像读入3个矩阵:红色,绿色,蓝色?
- 4. 使用Color.brighter方法打印红色,绿色和蓝色值
- 5. 处理js红色()绿色()蓝色()
- 6. RGBApixel'没有成员名为...红色蓝色和绿色
- 7. 值红色/黄色/绿色(如何?)
- 8. 在图像上创建红色和绿色点
- 9. 像油漆一样添加颜色(颜色)(蓝色+黄色=绿色等)
- 10. 如何在RGB图像中将红色与蓝色交换并保持亮度?
- 11. iphone:如何从图像中移除红色? (RGB颜色)
- 12. Java BufferedImage单独获取红色,绿色和蓝色
- 13. 转换图像为3d绿色洋红色眼镜
- 14. 用于C++的颜色地图库,可将给定值转换为红色,绿色和蓝色值
- 15. 地块所有红色和绿色
- 16. VP8在Android上的编码/解码结果在红色,绿色和蓝色方块的黑白图像
- 17. HTML/CSS图像和颜色混合
- 18. 如何在使用OpenCV的图像中交换蓝色和绿色通道
- 19. 获得从调色板图像RGB颜色和适用于二值图像
- 20. opencv将黑色和白色转换为绿色和蓝色
- 21. PHP GD库将合并图像从绿色变为橙色
- 22. 如何在画布中填充不同颜色的所有圈子:红色,黄色,蓝色和绿色?
- 23. 获取色轮的图像的RGB值
- 24. osx应用程序红色橙色绿色图标
- 25. 从RGB图像OpenCV中分离出红色成分图像2.3
- 26. 在仪器中触发“颜色复制图像”和“颜色点亮绿色并错过红色”的是什么?
- 27. .Net Reflector红色和绿色方块
- 28. 获取像素颜色的阿尔法混合
- 29. 的init(colorLiteralRed:绿色:蓝色:,阿尔法:)斯威夫特弃用4
- 30. RGB图像CMYK和软化颜色
因此,使用该公式,我将如何从一个我想要实现的RGB值中导出alpha1,alpha2和alpha3? 如果R = 0xAA,那么alpha1 = 0xAA/0xFF? – Chris 2010-01-08 21:30:36
我编辑了我的答案。如果您认为它是一个很好的答案,请考虑upvoting /检查。 – 2010-01-08 21:56:17
我在photoshop上通过第3层圆圈互相尝试并插入值。圆形颜色 r:0xff0000 g:0x00ff00 b:0x0000ff 如果我想要实现颜色值0xaa5588,则您的公式分别给出.69,.32,.78的alpha值。但是,这些分层不会产生适当的颜色,无论是在黑色还是白色背景下。这基本上是我试图实现的场景。我也尝试减去3个目标值中的最低值(0x55),并使用这些超过0xFF的新值,这些值越来越近,但并不完全相同。有什么想法吗? – Chris 2010-01-08 22:35:28