从 ±200 万个图像托架中查找并删除图像重复项

Find and remove image duplicates from ±2 million images bay

新闻门户公司有两台服务器(OS=Centos 6):

第一个 #1 服务器有大约 100 万张图像(.jpg、.png),服务器 #2 的数量几乎相同 - 100 万张图像。其中一些是相同的副本,一些是调整大小的副本,一些模糊,一些没有模糊,一些是完全独特的图像。文件名主要也不同。

任务是将两个服务器媒体目录合并为一个。合并后必须删除重复项(以释放存储空间)。

我已经使用 Imagemagick compare -metric RMSE 进行了一些测试,但我认为这需要很长时间才能将每个文件与来自两个服务器的每个文件进行比较。所以会有 100 万 x 100 万 = 1 万亿次操作,这需要很长时间...

这里有什么建议吗?

使用 GNU Parallel 对每个图像只计算一次:

  • 仅数据校验和

  • 一个感知哈希

然后丢弃所有具有相同校验和的那些并检查具有相似感知哈希的那些。


仅获取 图像数据的校验和 (即不包括任何元数据,例如图像中的不同日期),像这样使用 ImageMagick:

identify -format "%#" a.jpg
9e51c9cf53fddc7d318341cd7e6c6e34663e5c49f20ede16e29e460dfc63867

感知哈希生成的链接: