识别相似图像的好方法?

Nic*_*ick 16 php gd image computer-vision content-based-retrieval

我在PHP中开发了一种简单快速的算法来比较图像的相似性.

其快速(800x600图像每秒约40个)以及未经优化的搜索算法可以在22分钟内完成3,000张图像,将每张图像与其他图像进行比较(3 /秒).

基本概述是获取图像,将其重新调整为8x8,然后将这些像素转换为HSV.然后将Hue,Saturation和Value截断为4位,它变成一个大的十六进制字符串.

比较图像基本上沿着两个字符串,然后添加它找到的差异.如果总数低于64,那么它的图像相同.不同的图像通常在600 - 800左右.低于20和极其相似.

我可以使用这个型号有什么改进吗?我还没有看到不同组件(色调,饱和度和值)与比较的相关性.顺化可能很重要,但其他人呢?

为了加快搜索速度,我可能会将每个部分的4位分成两半,并将最重要的位先放入,这样如果它们检查失败,则根本不需要检查lsb.我不知道一种有效的方法来存储这样的位,但仍然允许它们被轻松搜索和比较.

我一直在使用3000张照片的数据集(大多数是独一无二的)并没有任何误报.它完全不受调整大小和相当的亮度和对比度变化的抵抗力.

fxt*_*cle 10

你想要使用的是:

  1. 特征提取
  2. 哈希
  3. 本地知道绽放哈希.

  1. 大多数人使用SIFT功能,虽然我有更好的经验,不是规模不变的.基本上,您使用边缘检测器来查找有趣的点,然后将图像块放在这些点周围.这样你也可以检测子图像.

  2. 您实现的是哈希方法.有很多尝试,但你的工作应该很好:)

  3. 快速制作它的关键步骤是哈希哈希.您将值转换为一元表示,然后将位的随机子集作为新哈希.使用20-50个随机样本执行此操作,您将获得20-50个哈希表.如果任何功能与这50个哈希表中的2个或更多匹配,则该功能将与您已存储的功能非常相似.这允许你转换abs(xy)

希望它有所帮助,如果您想尝试我自己开发的图像相似性搜索,请在spratpix的hajo上我发邮件