Python

【OpenCV】ヒストグラム均一化

ここでは、OpenCV を使った画像処理「ヒストグラム均一化」についてまとめています。

参考

画像処理で使う基礎知識については、「画像処理の基礎知識」にまとめています。

 

ヒストグラムとは?

ヒストグラムとは、縦軸に度数、横軸に階級をとった統計グラフの一種です。
データの分布状況を視覚的に認識するため、主に統計学や数学、画像処理等で用いられます。
画像処理では、赤・緑・青色など、画素値の分布を視認するために利用されます。

OpenCV を使って、ヒストグラムを表示するプログラムを紹介します。
OpenCVMatplotlib を使用します。

  • 1~3行目:必要なモジュールを読み込みます
  • 5行目:ヒストグラムを描く元となる画像を読み込みます
  • 6行目:RGBの各色に応じたヒストグラムを描くため、そのリストを準備しています
  • 7~9行目:calcHist() を使ってヒストグラムを計算し、表示します

元画像

RGB画像

元画像に対するヒストグラム

ヒストグラム

ヒストグラムを見ると、RGB それぞれの階級が高く、差異が少ないことから、
白っぽい画像で、色鮮やかな画像であることが分かります。

SANACHAN
SANACHAN
元の画像の印象と合致していますね。

 

グレースケールの画像に対してヒストグラムを出力するには、以下のようにプログラムを記述します。

  • 1行目:imread() の第2引数に 0 を指定して、グレースケールで読み込んでいます
  • 2~3行目:前述と同様にヒストグラムを計算し、表示します

ヒストグラム_グレースケール

 

ヒストグラム均一化

画像処理におけるヒストグラム均一化は、コントラストの低くかったり、明るさが偏っている画像に対し、
画素の色分布を均一化することで全体的なバランスを改善することができます。

それでは、早速プログラムを見ていきましょう。

  • 1~7行目は、前述の内容と同じです
  • 9行目:equalizeHist() API を使って、ヒストグラム均一化を行います
  • 10~11行目:ヒストグラム均一化を行った後のヒストグラムを表示します
  • 13~16行目:元の画像とヒストグラム均一化を行った後の画像を表示します
ヒストグラム均一化

         元画像            /        ヒストグラム均一化した画像    

ヒストグラム均一化のヒストグラム

ヒストグラムが均一化され、暗い部分はより暗く、明るい部分はより明るくなっているのが分かります。
明暗がより鮮明に確認することができます。

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-Python
-,