颜色混合和分离

时间:2014-08-29 04:05:45

标签: image image-processing colors

假设我有2层,每层只包含1位(为简单起见)

Layer0 bit = 1 (I'll color this red (255, 0, 0))
Layer1 bit = 0 (I'll color this green (0, 255, 0))

现在,我想在这两个图层中添加颜色并丢弃两个图层。

Resultant Layer = (255, 255, 0)

我知道这个图层包含一个1和一个0.但我怎么知道它的顺序是什么,即0 11 0(原来它是1 0,但在此期间解密时,可以将其识别为0 1) 任何人都可以帮我这个吗?

编辑:这可以在CDMA的帮助下完成吗?

1 个答案:

答案 0 :(得分:1)

如果您希望能够识别图层的顺序,则需要以某种方式将该信息存储在relustant类中。

第一种方法: 最简单的方法是使用class属性将这些信息以列表,数组或其他形式存储。

第二种方法: 如果你的relustant构造函数将params作为整数并且你只有少量的图层可以说5你可以像这样编码这些信息(如果你有更多的图层,你可以使用十进制表示法254.0 +图层位置,当绘制颜色时被四舍五入):

  

颜色将是250而不是255,您将为此颜色添加图层编号,因此在您的示例中,最终图层将为(250,251,0),您需要更多图层来实现解码后更复杂的逻辑。

第三种方法: 在现实生活中,你想添加不同的颜色(其他值,然后255和0),然后它更复杂,但这是一些基本的外观。

  

你有0到255之间的值加起来并且永远不会超过255因此你将使用咬合移动,你将根据图层顺序移动每个值。为了证明这一点,我将使用0到9之间的值。例如
  L0 = 2
  L1 = 0
  L2 = 3
  结果应该是203并且将表示5(简单地添加所有基本值2 + 0 + 3)但是从数字203开始,您能够解码层的顺序。因为首先你要将值为2的图层添加到结果(结果= 2),现在你需要按基数移动数字(结果= 20)现在增加下一层的值等等...使用咬合移动它将是基数将因为最大值为255而为8。图层是它的位置。

result = result<<base*layer | value

希望这是可以理解的,它会帮助你解决问题。