Python版OpenCVで画像のヒストグラムを求めたり濃度変換する方法をソースコード付きで解説します。
Python版OpenCVで画像のヒストグラムを作成
本ページの内容は以下動画でも解説しています。
画像のヒストグラムは、横軸が画素値(階調値)、縦軸は画素数の2次元グラフです。
つまり、「画像中にある画素値をもつ画素は何個あるのか」を示します。
画像データのヒストグラムとは?形状や山の見方を解説
写真等の画像データのヒストグラムとは?形状や山の見方を解説します。
今回は、Python版OpenCVを用いて画像のヒストグラムを求めてみました。
ヒストグラムの計算部分は以下の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次元配列) |
サンプルコード①グレースケール画像(1ch)のヒストグラム
グレースケール画像(1ch)のヒストグラムを作成するソースコードと実行結果です。
">
■入力画像(左)と出力したヒストグラム(右)
入力画像は天体望遠鏡で撮影したオリオン大星雲です。
黒い部分が多いので、ヒストグラムが左寄りになっています。
サンプルコード②RGBカラー画像(3ch)のヒストグラム
RGBカラー画像(3ch)のヒストグラムを作成するソースコードと実行結果です。
■入力画像(左)と出力したヒストグラム(右)
RGBカラー画像(3ch)をRed(赤)、Green(緑色)、Blue(青)の1chずつに分解してヒストグラムを計算し、プロットしています。
関連ページ
【Python版OpenCV超入門】使い方とサンプルコードを解説
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。
コメント