我想知道OpenCV是否具有处理sRGB色彩空间中的非线性的功能。
假设我想将JPEG图像从sRGB颜色空间转换为XYZ颜色空间。如此Wiki page中所述,需要首先撤消非线性以转换为线性RGB空间,然后与3x3颜色变换矩阵相乘。但是,我无法在cvtColor文档中找到任何此类讨论。我错过了什么吗?
提前多多感谢!
答案 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
深度图像的查找表。