画像を雑に分類する

  • 3
    Like
  • 0
    Comment
More than 1 year has passed since last update.

Imagemagickのidentifyコマンドで取れる統計値を使って、大雑把に画像を分類する。
機械学習とかディープラーニングとか、そういう高度な話ではない。

大量の画像があって、似通った画像を探したいときには役に立つかもしれない(おおざっぱだけど)。

identifyで画素平均値をとる

次のコマンドで画素平均とファイル名のリストを出力する。ついでに数字順ソートしておく

$ identify -format '%[mean], %f\n' *.png |sort -n > list.txt
$ head list.txt
7088.67, 574.png
7145.75, 387.png
7222.86, 318.png
7259.57, 084.png
7619.62, 155.png
7637.2, 158.png
7639.7, 177.png
7652.95, 305.png
7690.87, 519.png
7693.43, 364.png

似た画像順に並ぶようリネームする

ファイル名のprefixに画素平均順の連番を付け足して、ファイル名でソートすると似た画像が固まるようにする。

$ i=1; for f in `cat list.txt|cut -d',' -f2`; do g=m`printf '%03d' $i`_$f; mv $f $g; i=$((i+1)); done

確認

スライドショーを見てだいたい似た画像が固まっているか見てみてください。

identifyの統計値には %[mean] のほかに %[entropy], %[standard-deviation] などがありますが、実験した範囲では分類の大雑把さは似たり寄ったり。

画像全体の統計値だから、たまたま結果が近い画像同士は並んでしまう。ま、大雑把にやってるからしょうがないでしょう。

大雑把じゃなく分類したい人はディープラーニングとかを勉強しましょうね。

参考

ImageMagick: Command-line Tools: Identify

-format で指定できる値
http://www.imagemagick.org/script/escape.php