OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
ヒストグラム - 2: ヒストグラム平坦化

目標

  • ヒストグラム平坦化の概念を学び、それを用いて画像のコントラストを改善する。

理論

ピクセル値がある特定の値の範囲のみに限られている画像を考える。例えば、明るい画像はすべてのピクセルが高い値に集中する。しかし良い画像は、画像のあらゆる領域にわたるピクセルを持つ。そのため、このヒストグラムを両端へ引き伸ばす必要があり(下の画像にあるとおり、wikipedia より)、それがヒストグラム平坦化の行うこと(簡単に言えば)である。これにより通常、画像のコントラストが改善される。

image

詳細については wikipedia の Histogram Equalization のページを読むことをお勧めする。例題を交えた非常に良い解説があるので、それを読めばほとんどすべてを理解できるだろう。

OpenCV におけるヒストグラム平坦化

次の関数を使用する: cv.equalizeHist (src, dst)

引数
src入力となる 8 ビットシングルチャンネル画像。
dstsrc と同じサイズ・型を持つ出力画像。

試してみよう

CLAHE (Contrast Limited Adaptive Histogram Equalization)

適応的ヒストグラム平坦化では、画像は「タイル」と呼ばれる小さなブロックに分割される(OpenCV ではタイルサイズはデフォルトで 8x8)。次にこれらのブロックそれぞれが通常どおりヒストグラム平坦化される。したがって小さな領域では、ヒストグラムは小さな範囲に集中する(ノイズが無い場合)。ノイズがある場合は、それが増幅される。これを避けるために、コントラスト制限が適用される。あるヒストグラムのビンが指定されたコントラスト制限(OpenCV ではデフォルトで 40)を超えている場合、それらのピクセルはクリップされ、ヒストグラム平坦化を適用する前に他のビンへ一様に分配される。平坦化の後、タイル境界のアーティファクトを除去するために、バイリニア補間が適用される。

次のクラスを使用する: cv.CLAHE (clipLimit = 40, tileGridSize = new cv.Size(8, 8))

引数
clipLimitコントラスト制限のためのしきい値。
tileGridSizeヒストグラム平坦化を行うグリッドのサイズ。入力画像は等しいサイズの矩形タイルに分割される。tileGridSize は行方向および列方向のタイル数を定義する。
覚え書き
CLAHE の削除を忘れないこと!

試してみよう