LAB和灰度之间的Python OpenCV色彩空间差异

时间:2014-11-15 22:25:00

标签: python opencv image-processing lab-color-space

据我所知,当将图像从BGR转换为LAB时,L分量应该代表图像的灰度分量。但是,当我从BGR转换为灰度时,预期值不匹配。例如,

        img1 = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
        print img1[0][0]
        img2 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        print img2[0][0]

我在LAB中的图像中的第一个像素产生[168 133 162],而第二个像素产生159.我的印象是它们应该以某种方式相等(这是因为没有COLOR_LAB2GRAY常数这一事实)。 / p>

有人可以澄清并解释为什么会这样吗?我对LAB的理解是不正确的,还是我只是在我的代码中滥用了什么?

如果它们确实不同,那么哪个更好?我的应用程序的其余部分是在LAB模型中操作图像,因此我很想使用L分量作为我的灰度基线,但它有些区域看起来比它们应该更轻....与BGR2GRAY场景不同。想法?

1 个答案:

答案 0 :(得分:2)

灰色= 0.299R + 0.587G + 0.114B

但是从RGB到LAB的L通道的转换不同。 (这是一种非线性函数)

可以找到确切的转换here

LAB转换的非线性解释了问题的最后部分。