在(纯)PHP / MySQL中查找类似的图像
我的用户正在将图像上传到我的网站,我想首先向他们提供已经上传的图像。我的想法是1。为每个现有图像创建某种图像“哈希” 2.创建新上传图像的哈希值,并将其与数据库中的其他图像进行比较
我发现了一些有趣的解决方案,如 http://www.pureftpd.org/project/libpuzzle 或 http://phash.org/ 等,但他们遇到了一个或多个问题
- 他们需要一些非标准的PHP扩展(或者根本不在PHP中) - 这对我来说是可以的,但我想把它创建为我流行的CMS的插件,它在许多托管环境中使用,没有我的控制。
- 他们正在比较两个图像,但我需要比较一个到许多(例如数千个),并且一个接一个地这样做将非常无效/缓慢......
我还可以只找到非常相似的图像(例如,不同的大小,重新保存的jpg或不同的jpg压缩因子)。
我得到的唯一想法是将图像大小调整为例如5px * 5px * 256色,创建它的字符串表示,然后找到相同的。但我想,即使只有两张不同大小的相同图像,它也可能会在颜色上产生微小的差异,因此找到100%相同的图像将是无用的。
因此,我需要一些良好的图像字符串表示格式,这些格式可以与某些SQL函数一起使用以找到类似的,或者其他一些好方法。例如,phash创建感知哈希,因此当两个数字接近时,图像也应该接近,所以我只需要找到最近的距离。但它又是外部库。
有什么简单的方法吗?