我发现formulas给出了对手色彩空间的定义:
O1 = 1/sqrt(2) * (R - G)
O2 = 1/sqrt(6) * (R + G - 2B)
O3 = 1/sqrt(3) * (R + G + B)
在这些公式中,R,G,B符号是RGB空间中原始图像的通道的值。
以RGB颜色空间表示的原始图像是典型的uint8
图像,其值在[0,255]范围内。通过将图像投射到float
中来进行计算。
如何将生成的图像(尤其是O1和O2通道)缩放到相同的范围[0,255],并以uint8
类型表示?
缩放后,是否可以从对手颜色空间返回到具有uint8
类型表示图像的RGB空间?
答案 0 :(得分:0)
好吧,让我们看一下O1 ...如果R = 255和G = 0,则(R-G)的最大可能值为255。如果R = 0和G = 255,则(R-G)的最小值可能为-255。
所以
-255/root2 <= O1 <= 255/root2
如果我们希望在0到255的范围内,我们需要添加255 / root2,这将使其大于或等于零且小于510 / root2,因此我们需要乘以255 * root2 / 510。
现在O2 ...(R + G-2B)的最大值为510,最小值为-510。所以
-510/root6 <= O2 <= 510/root6
因此,将510 / root6加起来,它将在0到1020 / root6之间,因此我们需要乘以255 * root6 / 1020。
您可以执行O3:-)