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
然后用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
我有 iphone 张非线性 sRGB 格式的照片。我需要线性 RGB。我无法在 opencv(python) 中找到将它们转换为线性 RGB 的方法。
还尝试了 ImageMagick 转换:
convert output0.jpg -colorspace RGB output0.jpg
仍然是相同的 sRGB 没有效果。
有什么想法吗?
您可以使用下面 link 中给出的转换将 sRGB 转换为 XYZ
然后用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