Python版OpenCVの「cv2.equalizeHist」で画像のヒストグラムを平均化して見やすい画像に変換する方法をソースコード付きで解説します。
ヒストグラム平均化とは
本ページの内容は以下動画で解説しています。
ヒストグラムが全体的に平均化されるよう画像の画素値を変換してやると、人が見やすい画像なります。
これをヒストグラム平均化(平坦化)といいます。
ヒストグラム平均化の原理は以下ページで解説しています。
ヒストグラム平均化で画像が見やすくなる原理・計算式
ヒストグラム平均化(平坦化)による写真鮮明化の原理や計算式についてまとめました。
今回は、Python言語を用いて画像のヒストグラムを平均化してみました。
ヒストグラムの計算部分は以下の2種類の方法を実装してみました。
方法①・・・OpenCVの「cv2.equalizeHist」を使用
方法②・・・NumPyでアルゴリズムを実装
書式
dst = cv2.equalizeHist(gray)
パラメータ名 | 説明 |
---|---|
src | 入力画像(1チャンネル) |
dst | ヒストグラム平均化された画像 |
サンプルコード①OpenCVで実装した場合
OpenCVで実装した場合のサンプルプログラムです。
サンプルプログラムの実行結果です。
全体的に白っぽい写真(ヒストグラムの山が右寄り)を入力してヒストグラム平均化すると、白黒のバランスが良くなりました。
■入力画像(左)、出力画像(右)
サンプルコード②NumPyで実装した場合
NumPyで実装した場合のサンプルプログラムです。
■入力画像(左)、出力画像(右)
関連ページ
【Python版OpenCV超入門】使い方とサンプルコードを解説
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。
Python基礎
「Python基礎」の記事一覧です。
コメント
入力画像(右)、出力画像(右)で両方右になっています。
※匿名様
コメントありがとうございます。
誤記を修正いたしました。
「■入力画像(右)、出力画像(左)」で、左右逆になっています。
左側の明るすぎる画像が入力で、右側の見やすくなった画像が出力かと思います。
ご指摘ありがとうございます。
右と左が逆でしたので修正しました。