需要一个好的算法来分类8GB的图片

moc*_*urt 8 c++ jpeg image cimg

我有大约150,000张照片,其中一些是重复的.我认为SSIM算法是比较两张图片并查看它们是否重复的不错选择.但是,如果我想以这种方式找到重复,我将不得不比较150.000*149.999图片,这将永远.

所以我现在正在寻找的是一种快速有效的算法,可以为每张图片创建平均值,然后只比较接近其平均值的图像.

简而言之:我正在寻找一种有效的图片分类方法!

我打算使用C++ CImg库来完成这项任务,因为它很快.

谢谢!

Sam*_*Sam 2

我会尝试类似哈希/指纹的方法:

  • 为每个图像生成指纹,还包含相关的图像属性,例如图元文件或数据库的组件大小和数量。指纹可以从公共子图像计算出来,这可能是一个有损压缩频谱图、一个包含 FFT 频率箱的简单向量、直方图或其他技术(我不知道什么更适合,这是最适合的)可能非常依赖于内容)。

  • (n*(n-1))/2正如littlestewie提到的,预先根据图像属性(例如颜色分量的大小和数量)进行分组将大大减少每个组的(二进制)比较的数量。

  • 比较指纹与进一步分组的适当容差(注意涵盖一张图像在多个组中匹配的情况)。

  • OpenCV 可以进行最后的比赛:

    如何在 OpenCv 中从太空中检测太阳?

有关使用 OpenCV 进行图像比较的相关问题: