3

そこで、cvLoadImage を使用して iPhone で撮影したカラー .png ファイルを読み込みます。ロード後、すぐに X11 端末で表示すると、元の png ファイルよりも明らかに暗い画像になります。

現在、これを使用して画像をロードしています: IplImage *img3 = cvLoadImage( "bright.png", 1);

2 番目のパラメーターについては、次のすべてを試しました。

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 はガンマ補正を適用しません。


// 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 ディスプレイのガンマは 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 が実際に画像データをいじっているかどうかを検出するために実行できる興味深いテストの 1 つは、cvCreateImage() を使用して別の画像を作成し、そのデータをこの新しく作成した画像にコピーして、cvLoadImage() を使用して別のファイルに保存することです。

多分、ただの表示ミスです。もちろん、最新バージョンの OpenCV に更新することをお勧めします。

于 2010-07-16T17:37:08.000 に答える