3

因此,我使用 cvLoadImage 加载了一个使用 iphone 拍摄的彩色 .png 文件。并且在它被加载之后,当我立即在我的 X11 终端中显示它时,图像肯定比原始 png 文件更暗。

我目前使用它来加载图像: IplImage *img3 = cvLoadImage("bright.png", 1);

对于第二个参数,我尝试了以下所有方法:

CV_LOAD_IMAGE_UNCHANGED

CV_LOAD_IMAGE_GRAYSCALE

CV_LOAD_IMAGE_COLOR

CV_LOAD_IMAGE_ANYDEPTH

CV_LOAD_IMAGE_ANYCOLOR

但这些都没有奏效。灰度绝对使图像灰度化。但正如http://www.cognotics.com/opencv/docs/1.0/ref/opencvref_highgui.htm所建议的那样,即使使用 CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR 尽可能真实地加载图像会导致终端中显示更暗的图像。

有人对如何正确显示原始图像有任何想法吗?

提前非常感谢。

4

3 回答 3

4

是的,OpenCV 不应用 Gamma 校正。


// from: http://gegl.org/
// value: 0.0-1.0
static inline qreal
linear_to_gamma_2_2 (qreal value){
  if (value > 0.0030402477)
    return 1.055 * pow (value, (1.0/2.4)) - 0.055;
  return 12.92 * value;
}
// from: http://gegl.org/
static inline qreal
gamma_2_2_to_linear (qreal value){
  if (value > 0.03928)
    return pow ((value + 0.055) / 1.055, 2.4);
  return value / 12.92;
}

于 2010-07-22T07:09:23.200 回答
2

只有当你在 OpenCV 中加载它时才会发生?与任何其他查看器打开并没有显示差异?

如果没有一些测试,我无法确认这一点,但我相信 iPhone 显示 gamma 为 1.8(来源: http: //www.colorwiki.com/wiki/Color_on_iPhone#The_iPhone.27s_Display)。您的 X11 显示器可能已针对 2.2 进行了调整(与世界其他地方一样)。

如果这个理论成立,是的,X11 上的图像会比 iPhone 上显得更暗。您可以更改显示器校准或进行一些图像处理以解决差异。

编辑:

我相信 OpenCV 真的不应用伽马校正。我对此的参考在这里:

http://permalink.gmane.org/gmane.comp.lib.opencv.devel/837

您可能想自己实现它或使用 ImageMagick “更正”它。此页面将指导您如何执行此操作:

http://www.4p8.com/eric.brasseur/gamma.html

于 2010-07-15T10:28:33.570 回答
0

我通常使用以下方式加载图像:

cvLoadImage("file.png", CV_LOAD_IMAGE_UNCHANGED);

你可以做一个有趣的测试来检测 OpenCV 是否真的弄乱了图像数据,就是简单地使用 cvCreateImage() 创建另一个图像,然后将数据复制到这个新创建的图像并使用 cvLoadImage() 将其保存到另一个文件中。

也许,这只是一个显示错误。当然,我建议您更新到最新版本的 OpenCV。

于 2010-07-16T17:37:08.000 回答