影象搜尋與匹配
對上週影象搜尋調研的情況進行一下總結:
目的:拿出一張圖片在一個擁有百萬級別的池子裡面找出相似的圖片,對相似的圖片進行排序
調研結果過程:
第一步:
首先調研到影象通常匹配的方法是直方圖、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:
第二步:
發現第一步中的演算法準確度不夠,因為是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