前面几篇文章对图片的三种哈希算法做了简单的介绍:均值哈希算法,感知哈希算法,差异哈希算法。本篇将对上面算法做一个总结。并对在性能方面做些对比。
性能和准确度
目前有个超过150,000张图片的实验,有几张已知出现次数的待查找测试图片。比如一张图片(针)在150,000张图片(草堆)中出现一次,另外一张出现两次,第三张测试图片出现了32次。
分别使用aHash、pHash、dHash三种算法在这一“草堆”查找一只“针”。为了作比较,没有预先缓存图片库中的任何哈希值。比较值(汉明距离)10以内的就认为是匹配。下面就是实现结果:
- 不计算哈希。这是一个比较的基线。程序把每张图片加载到内存中,之后一张张的卸载。这将告诉我们仅仅是文件访问和加载要花费多长时间(所有的图片在NFS模式的文件系统中加载--当然还有网络请求)。总时间是16分钟。没有任何图片比较,仅仅是加载完这些图片,要耗去