[メモ] 画像ファイルのヒストグラムを得る方法について思考中

ちょっと画像ファイルの統計情報であるヒストグラムを得ようといろいろ調べ中。
得たいヒストグラムが一つだけならGIMPでもImageMagickでもいいのだけど、いくつも画像ファイルがある場合にヒストグラム取得の自動化を行ないたい。

例えば以下の画像ファイル

これをGIMPでヒストグラム作成するとこんな感じになる。
簡単にいうと暗い色から明るい色にかけての分布が分かる。ただ今回欲しいのはグラフの方ではない。じゃあ何かと言えば現段階で何かの素材に使えそうと思ってにらんでいるのが、そのヒストグラムの下にある「Mean」だの「Std dev」だのという統計情報の方。
(そういや単色のピクセル数の入手もしたいなとも思ってるけど、それは別の話)

コマンドラインからではImageMagickのツールであるidentifyに-verboseオプションを指定すると統計情報が取得出来る。
$ identify -verbose test.jpg

ここから得たい結果だけ抜き出すのがちと手間かもだけど、grepコマンドを組み合わせればいいかなと。

ImageMagickではその他にconvertコマンドを用いる方法もあるみたいだけど、これはちょっと自分が得たい情報とは違う。
File Handling #histogram -- IM v6 Examples

変わったところとしてはffmpegで動画をヒストグラムに変換するというもの。ただこれは結果が動画として描画されるため、データ数値の入手には向いていないと思われる。
FFmpeg Filters Documentation #histogram
$ ffplay -vf histogram test.mp4


一応、GIMPのscript-fuで取得する方法も途中までは作ったのだけど、シェルスクリプトだけで済みそうなidentifyの方が楽かなぁと現在思考中。



追記 2018年10月11日
とりあえずシェルスクリプトで取得しようとするとこんな感じ。
$ identify -verbose test.jpg | grep 'Image statistics' -A 8  | tail +5| awk -F: '{print $2}' | awk '{print $1}' | sed -z 's/\n/, /g'

ただ一回だけ使うならともかく、多数のファイルに対して一括処理をしようとするとそこそこ処理時間がかかってしまう。効率化するならidentifyではなくて画像処理ライブラリあたりを用いて処理を組んだ方が少しはマシになるかもだけど、あいにくと画像処理ライブラリについてはほとんど知識がないのでなんともかんともー。


Amazonサイト GIMP関連書籍

コメント

スポンサーリンク


このブログの人気の投稿

gnuplotでプロットなどの色をcolornameの指定で変更する

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)