当我在OpenCV中加载图像时,它总是比原始图像更暗。为什么?

时间:2010-07-15 10:10:01

标签: colors opencv brightness

所以我加载了一个使用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尽可能真实地加载图像,导致终端显示较暗的图像。

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

提前多多感谢。

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:2)

只有在OpenCV中加载它时才会发生?与任何其他观众一起打开并没有显示出差异?

如果没有一些测试,我无法确认这一点,但我相信iPhone显示器的伽马值为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

答案 2 :(得分:0)

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

cvLoadImage("file.png", CV_LOAD_IMAGE_UNCHANGED);

你可以做一个有趣的测试来检测OpenCV是否真的搞乱图像数据,只是用cvCreateImage()创建另一个图像,然后将数据复制到这个新创建的图像并用cvLoadImage()保存到另一个文件

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