我有非线性sRGB格式的iphone照片。我需要线性RGB。我无法在opencv(python)中找到一种方法将它们转换为线性RGB。
还试过ImageMagick转换:
convert output0.jpg -colorspace RGB output0.jpg
仍然相同的sRGB无效。
有什么想法吗?
答案 0 :(得分:1)
只有极少数图像格式真正支持线性RGB。 PNG可以,但不是JPG。您可以判断伽玛值是否为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配置文件,以下链接可能会有用。见http://fnordware.blogspot.com/2008/05/making-linear-icc-profile.html
答案 1 :(得分:0)
您可以使用以下链接中给出的转换将sRGB转换为XYZ
然后使用cv :: COLOR_XYZ2BGR或cv :: COLOR_XYZ2RGB来获取RGB。