对上周图像搜索调研的情况进行一下总结:
目的:拿出一张图片在一个拥有百万级别的池子里面找出相似的图片,对相似的图片进行排序
调研结果过程:
第一步:
首先调研到图像通常匹配的方法是直方图、aHash、pHash方法
参考链接:
https://blog.csdn.net/qcloudcommunity/article/details/78274610
aHash原理:
http://www.ruanyifeng.com/blog/2011/07/principle_of_similar_image_search.html?20150415102912
pHash原理:
https://blog.csdn.net/lu597203933/article/details/45798293
代码实现见github:
https://github.com/wangtao666666/image
第二步:
发现第一步中的算法准确度不够,因为是hash算法从算法本质上来看算法是基于RGB计算的,所以即使同一人在同一个场景动作不同,算法都识别不出来。
又调研一下发现很多采用提取特征+快速搜索模式找到相似的几张图片
一般提取特征有:SIFT、SURF、ORB
快速搜索:k近邻搜索算法、暴力搜索算法、FLANN
参考链接:
https://blog.csdn.net/zilanpotou182/article/details/66478915
测试了一下几个提取特征的速度:样本集是拿一张图片在容器为10000张图片的池子里面进行搜索得到相近的几张图片
算法组合 时间
SIFT+FLANN 382s
SURF+FLANN 141s
ORB+k近邻/暴力匹配 41s
由于41s也不能满足项目需求,之后又写成多线程的形式,测试一下15s
代码实现见github:
https://github.com/wangtao666666/image
注:
还有一种快速图像检测匹配的一套流程,参考链接
https://blog.csdn.net/weixin_41362649/article/details/82861669