![]() |
OpenCV 4.13.0
Open Source Computer Vision
|
前のチュートリアル: アフィン変換
次のチュートリアル: ヒストグラムの計算
| 原著者 | Ana Huamán |
| 互換性 | OpenCV >= 3.0 |
このチュートリアルでは以下を学ぶ:
平坦化の効果を実現するには、再マッピングは累積分布関数 (cdf) であるべきである(詳細は Learning OpenCV を参照)。ヒストグラム \(H(i)\) について、その累積分布 \(H^{'}(i)\) は次のとおりである:
\[H^{'}(i) = \sum_{0 \le j < i} H(j)\]
これを再マッピング関数として使用するには、最大値が255(または画像の強度の最大値)となるように \(H^{'}(i)\) を正規化する必要がある。上の例では、累積関数は次のとおりである:
最後に、単純な再マッピング手順を用いて、平坦化された画像の強度値を得る:
\[equalized( x, y ) = H^{'}( src(x,y) )\]
元画像を読み込む:
グレースケールに変換する:
関数 cv::equalizeHist でヒストグラム平坦化を適用する:
容易に分かるように、引数は元画像と出力(平坦化後)画像だけである。
両方の画像(元画像と平坦化後)を表示する:
ユーザーがプログラムを終了するまで待つ
ちなみに、この画像のヒストグラムは次のとおりである:
ピクセルがヒストグラムの中央付近に集中していることに注目してほしい。
この画像は明らかにコントラストが増している。次のようにして新しいヒストグラムを確認してほしい:
ピクセル数が輝度範囲全体により広く分布していることに注目してほしい。