【问题标题】:Convert image color space from RGB to opponent color将图像颜色空间从 RGB 转换为对手颜色
【发布时间】:2019-01-01 13:37:48
【问题描述】:

我找到了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 类型表示?

在缩放之后,是否可以从对手色彩空间返回到RGB空间,图像由uint8类型表示?

【问题讨论】:

    标签: image-processing computer-vision


    【解决方案1】:

    好吧,让我们看看 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 :-)

    【讨论】: