【Python/OpenCV】画像のヒストグラムを求める

スポンサーリンク

この記事では、Python版OpenCVで画像のヒストグラムを求める方法をソースコード付きで解説します。

スポンサーリンク

ヒストグラム

画像処理におけるヒストグラムでは、横軸に画素値(階調値)、縦軸にその画素数を取ります。
つまり、「画像中に画素値が〇〇の画素は何個あるのか」を示します。
【詳細】【画像処理】ヒストグラムの原理・特徴

今回は、Python言語を用いて画像のヒストグラムを求めてみました。
ヒストグラムの計算部分は以下の2種類の方法を実装してみました。

方法①・・・NumPyの「numpy.histogram」を使用
方法②・・・OpenCVの「cv2.calcHist」を使用

書式①

hist, bins = np.histogram(src.ravel(),256,[0,256])
パラメータ名 説明
src 入力画像(1チャンネル)
hist ヒストグラムのデータ(1次元配列)

書式②

hist = cv2.calcHist(src)
パラメータ名 説明
src 入力画像(1チャンネル)
hist ヒストグラムのデータ(2次元配列)

ソースコード(Python3+OpenCV3)

サンプルプログラムのソースコードです。
【グレースケール(1ch)の場合】

【RGBカラー(3ch)の場合】

※動作には、OpenCVとNumPyライブラリが必要です。
ライブラリの導入方法:【Python3】OpenCV3+NumPyをインストール

実行結果

サンプルプログラムの実行結果です。

■入力画像(右)、1chのヒストグラム(中)、3chのヒストグラム(右)

■出力結果(cv2.calcHistに1ch画像を入力した場合)

[[  113.]
 [   34.]
︙
 [  922.]
 [ 3124.]]

■出力結果(numpy.histgramに1ch画像を入力した場合)

[ 113   34 … 922 3124]

【おすすめ記事】
PythonでOpenCV入門 サンプル集
【Python】画像処理プログラミング入門
【画像処理入門】アルゴリズム&プログラミング

スポンサーリンク

シェア&フォローお願いします!