【Python/OpenCV】cv2.equalizeHistで画像のヒストグラムを平均化して見やすい画像に変換

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基礎」の記事一覧です。

コメント

  1. 匿名 より:

    入力画像(右)、出力画像(右)で両方右になっています。

  2. 匿名2 より:

    「■入力画像(右)、出力画像(左)」で、左右逆になっています。

    左側の明るすぎる画像が入力で、右側の見やすくなった画像が出力かと思います。