【问题标题】:opencv sRGB to RGB Conversionopencv sRGB 到 RGB 转换
【发布时间】:2018-05-18 18:12:45
【问题描述】:

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

还尝试了 ImageMagick 转换:

convert output0.jpg  -colorspace RGB output0.jpg

还是一样的sRGB没有效果。

有什么想法吗?

【问题讨论】:

  • 您指的是 Adob​​e RGB 吗?比如,更宽的色域?
  • 我认为您的 ImageMagick 命令确实会转换为 RGB 色彩空间,但随后另存为 JPEG 会再次将其转换回 SRGB,因为它假定 JPEG 必须在 sRGB 色彩空间中。如果您使用 convert iPhonePic.jpg -colorspace RGB result.png 并将其加载到 OpenCV 您应该做得更好。

标签: opencv imagemagick rgb srgb


【解决方案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

【讨论】:

    【解决方案2】:

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

    Matlab Color Conversion

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

    【讨论】:

      猜你喜欢
      • 2016-06-27
      • 2020-08-09
      • 2010-10-23
      • 2013-01-03
      • 2010-11-13
      • 1970-01-01
      • 2021-06-29
      • 2021-04-03
      • 2016-04-01
      相关资源
      最近更新 更多