こしあん
2018-11-03

Pythonで画像のカラーヒストグラムを簡単に表示する方法


画像で赤、緑、青の画素がどのような分布になっているかという「カラーヒストグラム」を見たいことがあります。しかしいざ探すとツールが少ないのです。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個に分割)。具体例を見ていきましょう。

例えば猫ちゃんも



動画編集ソフトでよく見るようなカラーヒストグラムです

いらすとやも



イラスト系は特定の色に山が集中しやすいですね

名画ですら分析可能



モネの睡蓮の池です。シカゴ美術館からダウンロードしました。かなりきれいな分布をしているんですね。

以上です。簡単にカラーヒストグラムを出すことができました。

Related Posts

ML Study Jams中級編終わらせてきた ML Study JamsというGoogle Cloudが提供している無料の学習プログラムの第二弾がオープンしています。今度は中級編が追加されており、全部終わらせてきたのでその報告と感想を書いていきたいと思います。 前回の記事 QWIKLABSの使い方とかはこっち。 ML Study Jam...
PCA Color Augmentationを拡張してTensorFlow/Keras向けに実装した... PCA Color AugmentationはAlexNetの論文に示された画像向けのData Augmentationですが、画像用だけではなく、テンソルの固有値分解をすることで構造化データに対しても使えるようにしてみました。これの解説と効果を書きます。 リポジトリ こちら https://...
pipからインストールしたTorchVisionにImageNetがないときの対応... TorchVisionの公式ドキュメントにはImageNetが利用できるとの記述がありますが、pipからインストールするとImageNetのモジュール自体がないことがあります。TorchVisionにImageNetのモジュールを手動でインストールする方法を解説します。 発生状況 Pytho...
keras_preprocessingを使ってお手軽に画像を回転させる方法... Data Augmentationで画像を回転させたいことがあります。画像の回転は一般に「アフィン変換」と呼ばれる操作で、OpenCVやPillowのライブラリを使えば簡単にできるのですが、Numpy配列に対して1から書くとかなりめんどいのです。Kerasが裏で使っているkeras_preproc...
Pillow/PIL ImageOpsチートシート Pillow/PILの簡単かつ強力な処理を、実例とコードつきで解説します。 ImageOpsについて Pillow/PILにあるモジュールの1つ。ImageOpsの関数で簡単にいい感じに画像の補正や加工できます。この記事では2019年5月時点で用意されているImageOps以下の13個の処理を...

Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です