opencv sRGB 到 RGB 转换

opencv sRGB to RGB Conversion

我有 iphone 张非线性 sRGB 格式的照片。我需要线性 RGB。我无法在 opencv(python) 中找到将它们转换为线性 RGB 的方法。

还尝试了 ImageMagick 转换:

convert output0.jpg  -colorspace RGB output0.jpg

仍然是相同的 sRGB 没有效果。

有什么想法吗?

您可以使用下面 link 中给出的转换将 sRGB 转换为 XYZ

Matlab Color Conversion

然后用cv::COLOR_XYZ2BGR或cv::COLOR_XYZ2RGB得到RGB。

只有极少数图像格式真正支持线性 RGB。 PNG 有,但 JPG 没有。你可以判断 gamma 值是否为 1,它是线性的。您可以使用 ImageMagick 在线性色彩空间中进行处理,但保存为 JPG 可能会显示正确的线性像素值,但 JPG 元数据不会存储它是线性 RGB 的事实。如果图像较暗,您可以判断像素数据是否已更改为线性。您可以为 JPG 指定一个线性配置文件,但我不确定您会在哪里找到一个。另请注意,在非常旧的 ImageMagick 版本中 -colorspace RGB 实际上会产生 sRGB,反之亦然

例如,你的命令没有改变,因为JPG并不真正支持线性RGB。

输入:

convert logo.jpg -colorspace RGB logoRGB.jpg


但 PNG 确实:

convert logo.jpg -colorspace RGB logoRGB.png

Colorspace: RGB
Gamma: 1

为了在 JPG 中强制转换为线性 RGB,您可以执行以下操作以使像素数据线性化。但是元数据仍然会显示非线性sRGB,gamma=0.4545

convert logo.jpg -colorspace RGB -set colorspace sRGB logoRGB2.jpg

Colorspace: sRGB
Gamma: 0.454545

编辑:如果需要线性 RGB 配置文件,以下 link 可能会有用。参见 http://fnordware.blogspot.com/2008/05/making-linear-icc-profile.html