实际上,我编写了一个可以完成此任务的应用程序 。
我从一个以前的应用程序开始,该应用程序使用基本的Levenshtein距离算法来计算图像相似度,但是由于多种原因,该方法是不可取的。毫无疑问,用于确定图像相似性的最快算法是均方误差或均绝对误差 (两者的运行时间均为O(n),其中n是图像中的像素数,并且以多种不同的方式对这两种算法的实现进行线程化也很简单)。 Mecki的帖子实际上只是我的应用程序可以执行的“均值绝对错误”实现(如果您愿意,也可以提供代码来提高您的浏览乐趣)。
无论如何,在我们的应用程序中,我们首先对图像进行下采样(例如,将所有图像缩放到32 * 32像素),然后转换为灰度,然后通过比较算法运行生成的图像。我们还在研究一些更高级的预处理算法,以进一步对图像进行规范化,但是……还不止于此。
肯定有比MSE / MAE更好的算法(实际上,已经很好地证明了这两种算法应用于视觉信息的问题),例如SSIM ,但这是有代价的。其他人试图比较图像中的其他视觉质量,例如亮度,对比度,颜色直方图等,但是与简单地测量误差信号相比,这都是昂贵的。
我的应用程序可能会运行 ,具体取决于这些文件夹中有多少个图像。它是多线程的(我已经看到它完全加载了八个处理器内核来执行比较),但是我从未针对大于几百个图像的图像数据库进行过测试。几百个演出的图像听起来过大。 (只需从磁盘读取它们,进行下采样,转换为灰度并存储在内存中-假设您有足够的内存来容纳所有东西,而您可能没有,则可能需要几个小时)。
0
我们收集了几百个演出的照片图像。大量照片在视觉上是重复的,但文件大小,分辨率,压缩率等不同。
是否可以使用任何特定的图像处理方法来搜索并删除这些重复的图像?