Pythonで画像のカラーヒストグラムを簡単に表示する方法
Posted On 2018-11-03
画像で赤、緑、青の画素がどのような分布になっているかという「カラーヒストグラム」を見たいことがあります。しかしいざ探すとツールが少ないのです。Pythonならほんの数行で出せます。
目次
PillowとPyplotでとてもお手軽
カラーヒストグラムの原理は単純で、縦横カラーチャンネルの画像を、カラーチャンネル単位でヒストグラム出せばいいのです。画像の読み込みにPillow、ヒストグラムの表示にPyplot、画像データの受け渡しをNumpy配列でやっています。
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
def color_hist(filename):
img = np.asarray(Image.open(filename).convert("RGB")).reshape(-1,3)
plt.hist(img, color=["red", "green", "blue"], histtype="step", bins=128)
plt.show()
これだけで終わりです。binsの刻みを変えるとヒストグラムの幅を指定することができます(現状は256段階を128個に分割)。具体例を見ていきましょう。
例えば猫ちゃんも
動画編集ソフトでよく見るようなカラーヒストグラムです
いらすとやも
イラスト系は特定の色に山が集中しやすいですね
名画ですら分析可能
モネの睡蓮の池です。シカゴ美術館からダウンロードしました。かなりきれいな分布をしているんですね。
以上です。簡単にカラーヒストグラムを出すことができました。
Shikoan's ML Blogの中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内
技術書コーナー
北海道の駅巡りコーナー