OpenCV 是否具有处理 sRGB 颜色 space 非线性的函数?
Does OpenCV have functions to handle non-linearities in sRGB color space?
我想知道 OpenCV 是否有处理 sRGB 颜色非线性的函数 space。
假设我想将 JPEG 图像从 sRGB 颜色 space 转换为 XYZ 颜色 space。如本 Wiki page, one needs to first undo the nonlinearities to convert to linear RGB space, and then multiply with the 3x3 color transform matrix. However, I couldn't find any such discussions in the cvtColor 文档中所述。我错过了什么吗?
提前致谢!
文档中没有明确说明,因此您不会遗漏任何内容,但 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
深度图像的查找表。
我想知道 OpenCV 是否有处理 sRGB 颜色非线性的函数 space。
假设我想将 JPEG 图像从 sRGB 颜色 space 转换为 XYZ 颜色 space。如本 Wiki page, one needs to first undo the nonlinearities to convert to linear RGB space, and then multiply with the 3x3 color transform matrix. However, I couldn't find any such discussions in the cvtColor 文档中所述。我错过了什么吗?
提前致谢!
文档中没有明确说明,因此您不会遗漏任何内容,但 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
深度图像的查找表。