比较两个不同目录中的图像并确定最佳匹配

时间:2016-09-26 10:18:23

标签: image bash compare imagemagick

我正在寻找一种最简单的方法来比较两个不同目录中的图像并确定最佳匹配。找到最佳匹配后,将图像保存到新目录中,该目录与源目录中的图像名称相同。例如

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

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

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

我在网上做了一些研究我发现使用imagemagick的compare命令但是我退出了新的并且无法弄清楚它将如何与两个不同目录中的多个图像集合起作用并根据名称命名图像src目录。 如果我不能简单解释一下我的问题,请问我。 任何帮助都感激不尽。提前谢谢。

1 个答案:

答案 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