所以我加载了一个使用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尽可能真实地加载图像,导致终端显示较暗的图像。
有没有人对如何正确显示原始图像有任何想法?
提前多多感谢。
答案 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“更正”它。此页面指导您如何执行此操作:
答案 2 :(得分:0)
我通常用以下方式加载图片:
cvLoadImage("file.png", CV_LOAD_IMAGE_UNCHANGED);
你可以做一个有趣的测试来检测OpenCV是否真的搞乱图像数据,只是用cvCreateImage()创建另一个图像,然后将数据复制到这个新创建的图像并用cvLoadImage()保存到另一个文件
也许,这只是一个显示错误。当然,我建议您更新到最新版本的OpenCV。