您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關怎么用Python構建圖片處理搜索引擎的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
***公司和反向圖片搜索
有很多***的科技公司把RIQ用得很好。例如,Pinterest 2014年***次實現視覺搜索。隨后2015年它發布了一個白皮書,揭示了視覺搜索的結構。反向圖片搜索使得Pinterest能夠從時尚的東西中提取視覺元素,然后給消費者推薦類似的產品。
眾所周知,Google圖片使用反向圖片搜索技術,它允許用戶上傳一張圖片然后搜索相關的圖片。上傳的圖片通過算法分析,制作出一個數學模型,然后跟Google數據庫中成千上萬的圖片進行比較,直到找到匹配的或者相似的圖片。
這是OpenCV2.4.9特性體驗報告的一張圖
算法和Python庫
在我們動手之前,讓我們大致看一下構建一個圖片搜索需要哪些Python元素。
專利算法
SIFT(尺度不變特征變換)
使用圖像標識符來識別相似圖像的沒有費用的專利技術。即使圖片的尺寸、角度、深度不同,這項技術還是能將內容相似的圖片匹配成功。
SIFT以大量的從圖片中提取的特性作為搜索的標準。
能匹配相同物體從不同視角拍攝的圖片,能夠通過不變的特性進行搜索匹配。
SURF(加速魯棒特征)算法
SURF和SIFT一樣也是不收費的專利算法,可以說是加速版的SIFT。與SIFT不同的是,SURF使用盒過濾器近似高斯拉普拉斯算子。
SURF使用Hessian矩陣來判斷圖像的位置和大小。
在許多應用中,旋轉不變性都不是一個必要條件,所以不用尋找方向的話算法速度會快很多。
SURF包含了幾個特性使得計算的每一個步驟都得到了速度上的提升。圖片經過旋轉和模糊之后,SURF依舊工作的很好,而且比SIFT快3倍。不過在光源和視角變換方面SURF不太行。
OpenCV提供了SURF功能,SURF.compute和SURF.detect可以用來找到描述符和關鍵點。
開源算法
KAZE算法
KAZE是一個開源2D多尺度和新特性探測和描述算法,它運作于非線性尺度空間。添加劑算子分裂(AOS)的有效技術和可變熱導擴散被用來構建非線性尺度空間。
多尺度圖像處理的基礎很簡單–構建一個圖像的尺度空間,然后用一個函數處理圖像,增強圖像的尺度或者時間。
AKAZE(加速KAZE)算法
從名字可以猜到,這個算法更快,它能快速找到兩個圖片之間匹配的關鍵。AKAZE使用一個二進制描述符和非線性尺度空間來平衡準確度和速度。
BRISK(二進制魯棒尺度不變關鍵點)算法
BRISK在探測和匹配描述符和關鍵點方面很棒。
這個算法適應性很強的、尺度空間基于FAST的、使用bit-string描述符的探測器,它能夠顯著地加快搜索的速度。
尺度空間關鍵點探測和關鍵點描述有助于性能的優化
FREAK(快速視網膜關鍵點)算法
這是一個由人眼啟發的新的關鍵點描述符。根據圖像強度的比較有效地計算出一個二進制級聯字符串。相比于BRISK, SURF 和 SIFT,FREAK計算更快,更省內存。
ORB(原生的FAST和旋轉的BRIEF)
ORB是一個二進制描述符,它能夠抗噪聲并具有旋轉不變性。ORB基于FAST關鍵點探測和BRIEF描述符,這兩者共同造就了它的低消耗和高性能。
除了快速和準確的方向組件,計算原生BRIEF,分析變化以及與原生BRIEF的關系,是ORB的另一大特色。
Python庫
OpenCV
OpenCF分學術使用版本和商用版本。作為一個開源機器學習和機器視覺庫,OpenCV使得各類機構能夠很容易地基于OpenCV構建自己的版本。
超過2500個優化的算法,包含目前***進的機器學習和機器視覺算法,能夠處理各類需求:人臉檢測、物體鑒定、相機移動跟蹤、尋找相似圖片,眼球跟蹤,場景識別等。
***公司像Google, Yahoo, IBM, Sony, Honda, Microsoft 和 Intel 都大量使用OpenCV庫。
OpenCV使用Python, Java, C, C++ 和 MATLAB做編程接口,同時支持Windows, Linux, Mac OS 和 Android平臺。
Python Imaging Library(PIL)
PIL在做圖像及圖形處理的時候支持若干種語言格式,它使得你的Python能夠處理圖像。
圖像處理的標準流程包括圖像增強,透明度和屏蔽處理,圖像濾波,每像素的操作等。
構建圖片搜索引擎
一個圖片搜索引擎能夠從已有的圖片中挑出相似的圖片,***的就是Google的圖片搜索引擎。對于新的圖片搜索引擎項目,有很多構建的方法,這里列舉一些:
使用圖像提取,圖像描述提取,元數據提取和搜索結果提取,建立一個圖像搜索引擎。
定義你的圖像描述符,對數據集進行索引,定義你的相似讀矩陣,然后搜索并排名。
選擇要搜索的圖片,選擇已有圖片的文件夾,在文件夾中遍歷圖片,創建圖片特征索引,用相同的特征和要搜索的圖片進行匹配,獲取能夠匹配的圖片。
我們的做法是一開始匹配圖片的灰度版本,逐漸開始使用像SIFT 和 SURF這樣復雜的特征匹配算法,最終使用了開源的算法BRISK。這些算法都只需要很小的修改,就能給出有效的結果。基于這些算法構建一個圖像搜索引擎可以有很多應用,例如分析圖像受歡迎程度,圖片內物體的鑒定等等。
感謝各位的閱讀!關于“怎么用Python構建圖片處理搜索引擎”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。