2

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

还尝试了 ImageMagick convert :

convert output0.jpg  -colorspace RGB output0.jpg

还是一样的sRGB没有效果。

有任何想法吗 ?

4

2 回答 2

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

于 2018-05-18T19:02:30.393 回答
1

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

Matlab 颜色转换

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

于 2018-05-18T18:49:43.303 回答