现在以图搜图的功能比较火热,很好奇其原理。
简单的搜索学习得知,实现相似图片搜索的关键技术是“感知哈希算法”,作用是对每一张图片按照某种规律生成一个对应的指纹字符串。比较不同图片之间的指纹字符串,结果越接近,图片越相似。
现将问题简化为研究两幅图像的相似度,算法可能其他博客都有介绍了,现给出实现代码(简易版)。简易版指纹字符串的算法思想如下:
1.输入图像
2.灰度化
3.将图像大小归一化到8*8尺寸
4.简化灰度以减少计算量,例如所有的灰度除以5
5.计算平均灰度值avg
6.比较8*8=64个像素与平均灰度值avg的大小,若大则记为1,小则记为0,按一定顺序排列成64位2进制的指纹编码。
7.比较两幅图像的指纹编码,计算相似度。
测试样例:(依次为example1,example2,example3,example4)