2016-09-26 1 views
1

私は2つの異なるディレクトリの画像を比較し、最もよく一致するものを特定する最も簡単な方法を探しています。ベストマッチを見つけたら、ソースディレクトリにあるイメージと同じ名前の新しいディレクトリにイメージを保存します。例2つの異なるディレクトリの画像を比較し、最もよく一致するものを特定してください

/path/to/src/img1, img2, img3....... 

/path/to/dest/img11, img22, img33..... 

/path/to/target/img1, img2, img3.... 

のために私は私がcompareコマンドはImageMagickのを使ってますが、私は新しい終了していますし、それが二つの異なるディレクトリに複数の画像のセットで動作する方法を見つけ出すと尊敬の画像に名前を付けることができませんでしたオンラインいくつかの研究をしましたディレクトリ名はsrcです。 私はあなたに私の問題を簡単に説明できなかったかどうか聞いてください。 ご協力いただければ幸いです。前もって感謝します。あなたが他のディレクトリにカレントディレクトリと各画像の各画像間の正規化相互相関を実行し、このような最も高い相関を持つ1見つけることができます

+0

※画像は多少異なる場合があります。 1つの軸について反転されたものを除いて他のものと同一の画像は、同一の最小/平均/最大および標準偏差を有するが、同じ2画素ではない可能性がある。わずかに異なる露出で撮影された2つの画像は、視覚的には互いにほとんど区別できないが、同じ2つの画素はない。 –

+0

私の場合、同じカメラアングルで撮影された画像があり、そのサイズは同じですが、パターンが投影されているものと投影されていないものがあります。 – jHz

+0

サンプルを表示できますか? –

答えて

1

#!/bin/bash 

# Work out list of source and destination files 
SRC=(*.jpg) 
DST=(../wop/*.jpg) 

# Ensure output directory exists 
TGT=result 
[ ! -d "$TGT" ] && mkdir "$TGT" 

for a in ${SRC[@]}; do 
    nearest=0 
    for b in ${DST[@]}; do 
     # Perform normalised cross-correlation with each image in other directory 
     result=$(convert "$a" "$b" -metric ncc -compare -format "%[distortion]" info:) 
     # Convert result to rounded integer percentage 
     percent=$(echo "scale=0;$result*100/1" | bc) 
     echo DEBUG compare $a with $b: $percent 
     # Update if this one is nearer than previous nearest 
     [ $percent -gt $nearest ] && { nearest=$percent; friend=$b; } 
    done 
    echo cp "$friend" "$TGT/$a" 
done 

出力

./go 
DEBUG compare 00000000.jpg with ../wop/00000007.jpg: 22 
DEBUG compare 00000000.jpg with ../wop/00000014.jpg: 17 
DEBUG compare 00000000.jpg with ../wop/00000015.jpg: 77 
cp ../wop/00000015.jpg result/00000000.jpg 
DEBUG compare 00000001.jpg with ../wop/00000007.jpg: 37 
DEBUG compare 00000001.jpg with ../wop/00000014.jpg: 71 
DEBUG compare 00000001.jpg with ../wop/00000015.jpg: 32 
cp ../wop/00000014.jpg result/00000001.jpg 
DEBUG compare 00000005.jpg with ../wop/00000007.jpg: 77 
DEBUG compare 00000005.jpg with ../wop/00000014.jpg: 36 
DEBUG compare 00000005.jpg with ../wop/00000015.jpg: 31 
cp ../wop/00000007.jpg result/00000005.jpg 
+0

これらの画像は類似しているとはどういうことが言えますか?私は出力から理解できませんでした。 – jHz

+0

10進数は正規化された相互相関です。画像が近いほど1に近づくほど、000000.jpgは000015.jpgに最もよく似ています。00001.jpgは000014.jpgに最も似ています。 –

+0

ありがとうございます。私は論理を理解しましたが、この情報を使ってsrcディレクトリからtargetディレクトリにイメージをコピーできます。 – jHz

関連する問題