【Python-openCV】画像内輝度をヒストグラム化する方法!

このページではpython-opneCVを使って、指定画像内全ピクセルの輝度ヒストグラムを作成する方法をご紹介していきます。

画像輝度をヒストグラム化するという作業概要図

実験なんかで取得した画像の分析の際などにぜひご活用ください。

それではさっそくやっていきましょう!

 

※Python(無料のプログラミング言語)のインストール~実行方法までは以下で解説しています。

 

スポンサーリンク

必要なライブラリ一覧

今回は以下のライブラリを使用していきます。

★openCV

★numpy

★matplotlib

 

opneCVのインストール方法については以下の記事で解説しています。

(openCV以外はよく使うものなので、pythonをよく使う人であればインストールされていると思います。されていない場合はopenCV同様にインストールを進めましょう。)

 

スポンサーリンク

使用する画像のサンプル画像の紹介

今回は以下の画像をサンプルとして使用します。

この画像がプログラム実行フォルダにsample.jpgとして保存してあります。

こちらの画像は見ての通り、多くの部分が白です。

画像全体をヒストグラム化すると輝度=255だらけになって面白くないので、以降で紹介するサンプルコードでは、輝度=255は除外してヒストグラム化しています。

 

もし輝度=255も含めたい場合は、コード修正が必要ですのでご注意ください。

 

スポンサーリンク

画像をヒストグラム化するサンプルコード

それでは冒頭に紹介した画像をヒストグラム化するサンプルコードをご紹介します。

import cv2
import numpy as np
import matplotlib.pyplot as plt
#画像読み込み⇒1次元化
file_name='sample.jpg'
img=cv2.imread(file_name,cv2.IMREAD_GRAYSCALE)
data=img.flatten()
#ヒストグラム化する際に使用する区間データ作成(255除去)
section=np.linspace(0,254,10)
#ヒストグラムを算出
hist,section=np.histogram(data, bins=section)
#グラフ化処理
section=section[:len(hist)]
plt.xlabel('brightness',fontsize=18)
plt.ylabel('number',fontsize=18)
plt.bar(section, hist, width=8.0)

 

先ほども紹介したように今回使用する画像はほぼ白(輝度=255)なのでそこは除去しています。(8行目参照)

 

255も含めたい場合は8行目の254を255に書き換えてください。

 

このコードを実行すると以下の結果が出力されました。

あってるかはよくわかりませんが、なんとなくできていそうですね。

 

スポンサーリンク

おわりに

というわけで今回はpython-openCVを使って、画像輝度データのヒストグラム(頻度分布)を作成する方法をご紹介しました。

 

実験データ分析の際などにぜひご活用ください。

 

このように、私のブログでは様々なスキルを紹介しています。

過去記事一覧

 

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村 IT技術ブログへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました