OpenCV是否具有处理sRGB色彩空间中的非线性的功能?

时间:2015-04-24 15:37:52

标签: opencv image-processing colors computer-vision

我想知道OpenCV是否具有处理sRGB色彩空间中的非线性的功能。

假设我想将JPEG图像从sRGB颜色空间转换为XYZ颜色空间。如此Wiki page中所述,需要首先撤消非线性以转换为线性RGB空间,然后与3x3颜色变换矩阵相乘。但是,我无法在cvtColor文档中找到任何此类讨论。我错过了什么吗?

提前多多感谢!

1 个答案:

答案 0 :(得分:4)

文档中没有明确说明,因此您没有遗漏任何内容,但OpenCV在其RGB2XYZ/BGR2XYZ颜色转换中执行执行伽玛校正。您可以通过查看

cvtColor的源代码来确认这一点
  

<OpenCV_dir>/modules/imgproc/src/color.cpp

如果查看RGB <-> XYZ部分,您会看到输入的RGB值只是乘以系数矩阵。

我还没有找到任何现有的方法来对RGB图像进行伽马校正。

有趣的是,自定义RGB -> XYZ转换是作为转换为L*a*b*L*u*v*的初步步骤完成的,并且在两种情况下都执行伽马校正。

很遗憾,RGB2XYZ代码无法访问此代码,但您可以在自己的代码中重复使用它。我还在网上看到了几个代码示例,主要使用CV_8U深度图像的查找表。