ruig  簡易類似画像チェック&並替バッチ生成ツール

【DOWNLOAD】

Avarage Hash法というすごく単純だけれど、それなりに判定できる方法を用いた簡易類似画像判定用コマンドラインツールです.
こちらで試したもので、わりとよい感じに思うけれど誤判定も多いもので、まあ実験品です。

似た画像が近くに来るよう並べ直した番号のファイル名をつけて、copy か move をするバッチを生成できます。

使い方

usage> ruig.exe [-opts] jpeg-file(s)...

オプション
 -c[PREFIX]    copy バッチ生成用. (標準出力)
 -m[PREFIX]    move バッチ生成用. (標準出力)
 -n            誤判定あれど近同画像のファイル名を出力.(デフォルト)
 -s            -n よりは厳しめに同一と思われる画像のファイル名を出力.
 -a            すべてのファイル名を出力する.
               バッチ生成や 日付付替では たいていこれも指定することになる.
 -nd           近同画像でパスのディレクトリの違うもののみ出力.
               (複数ディレクトリに画像がある状態で、違うディレクトリに
                類似画があるかをチェック)
 -t            類似判定結果でファイル名を出力するのでなく、画像ファイルの
               日付を 現在時間付近が最後になるように結果順に1分ごとに設定.
               これで日付を変えておいてエクスプローラ等で日付ソートするの想定.
               -a併用で全対象にしていないと悲しいかも.
 -i            jpegの特性を活かした縮小画像取得をせずにフルサイズ画を元にする.
 @respfile     レスポンスファイル入力.

引数でのファイル名の指定はワイルドカード(*)指定可能.
また、特殊な指定として ** を使えばサブディレクトリも再帰して検索。

使用例

ruig -a -t smpcg\*.jpg
smpcgフォルダ直下の全てのjpg画像の類似チェックして その順番を日付に反映. (エクスプローラ等で日付順に並べて表示するのを想定)
ruig wk*.jpg sm*.jpg
wkとsmで始まるjpg画像を探し類似画ファイル名のみ出力
ruig smp**.jpg
現在のフォルダ下の全てのサブフォルダからsmpで始まるjpg画像を探し 類似画ファイル名のみ出力.
ruig -nd dir1\*.jpg dir2\*.jpg
dir1とdir2にまたがって存在する類似画像のみのファイル名を出力(同一フォルダ内の類似画像名は出力しない)

copy | move バッチ生成

複数の jpg ファイルのあるフォルダで、例えば

   ruig -a *.jpg -ctest_dir\test_ >test.bat

   ruig -a **.jpg -ctest_dir\test_ >test.bat

をコマンドラインで実行すれば、test.bat として

   copy "hoge1.jpg" "test_dir\test_0000100-01-4000x3000.jpg"
   copy "hoge2.jpg" "test_dir\test_0000100-02-1024x0768.jpg"
   copy "foo.jpg"   "test_dir\test_0000200-00-1920x1080.jpg"

のような感じにcopy命令の並んだバッチが作られます。 オプション -c の代わりに -m を使えば move 指定になります.

オプション -a を付けなければ(-n扱いで)、類似とみなした画像分のみを生成します。 が、copyやmoveバッチを使うような場合は全部をコピーや移動することが多いので、実質 -a 指定必須でしょう(忘れに注意).

使用例

以下のような並びの画像ファイルがある場合、

c

ruig -a x:\ruig-smp1\*.jpg -cx:\ruig-smp2\tst_ >cpy_smp.bat

で生成したバッチを実行することで

c

な感じに並べ直せます。

copy | move で生成するファイル名の番号について

copy や move のバッチで生成される新規ファイル名は

[PREFIX]MMMMMmm-ss-WWWWxHHHH.jpg

のようになります。だいたい、

    MMMMM     大きく違う画像ごとに割り振られる番号 1以上
    mm        誤判定もありえるが近そうな画像同士の連番 01以上(類似なければ00)
    ss        かなり類似と思われる画像同士での連番 01以上 (類似なければ00)
    WWWW      画像横幅
    HHHH      画像縦幅

mm と ss の差は 明確な違いがあるわけでなく内部的な判定結果ままを出しています。