- Gil Levi and Tal Hassner,The Open University of Israel,CVPR15,Gil’s blog有一系列講binary特徵的文章,記錄了BRIEF、ORB、FREAK、BRISK。
- this feature won the CVPR 2015,OpenCV State of the Art Vision Challenge,in the Image Registration category. LATCH is now integrated into OpenCV 3.0,項目連接
- 閱讀時間:2015-07-12~13
該算法是二值化特徵描述方法的一個優化變種,通常的二值化特徵描述主要經過計算特徵點窗口內n個點對的比較值造成一個bit串,做爲該特徵點的特徵描述子,這樣的bit串特徵描述子在圖像匹配計算時能夠經過同或計算漢明碼,大大提升計算速度,可是點對的比較會有一個明顯的缺點,就是受噪聲影響較大,雖而後續的一些算法經過高斯模糊進行濾波,可是濾波後圖像信息會有必定減小,創建在此基礎上,做者提出了一種經過計算窗口內像素塊的比較值造成bit串,同時做者也提出瞭如何定位像素塊的方法。html
該特徵的特色:web
假設特徵點窗口內有3個塊
算法
若須要256 bits長的特徵描述子,則須要選擇256個3像素塊,每一個3像素塊獲得一個bit結果。svg
在像素塊比較中須要計算像素塊內各個像素點的值,所以計算前提是定位像素快,一個很小的特徵窗口可以產生很是多的像素塊的組合,有些像素塊對圖像匹配不重要,有些很是重要,本節主要介紹如何選擇像素塊的組合方式使得匹配結果最優。本文中像素塊位置的肯定是經過有監督學習的方法進行。wordpress
首先構造一個訓練數據集,該數據集來自Learning Local Image Descriptors Data,如下用LLIDD表明該數據集,LLIDD數據集主要對三個場景(Literty, Ntore Dame , Halp Dome)的3D場景構造圖像中處理而來,首先經過Noah Snavely’s Photo Tourism算法計算3D構造圖初始特徵點,再經過立體深度地圖匹配不一樣圖像只可以對應的特徵點,而數據集則是特徵點領域內64x64的圖像塊。同時創建標籤文件,記錄各個圖像塊是不是來自同一目標。本文做者在LLIDD數據集的基礎上建立了一個50k的數據樣本對,每對數據樣本包括兩個圖像塊,同時有一個標籤表示兩個圖像塊是否相同,最終數據集包括一半匹配一半不匹配的圖像塊。 性能
隨機產生56k個3像素快,即
學習
特徵描述計算耗時高於其餘binary特徵,低於非binary特徵,如下是計算一個特徵點時的耗時。
優化
匹配精度高於其餘binary特徵,低於非binary特徵。ui
描述子計算僞代碼:this
PatchSize = 7 * 7 // 圖像塊大小
BytesLength = 32 // 每一個特徵描述子的長度 單位:Byte
descriptors = Mat(Keypoints.length, BytesLength, Byte) // 描述子初始化 爲一個類型類Byte的
grayScale = convertToGray(img)
foreach keyPoint in Keypoints:
for i = 1 to BytesLength:
descriptors[k][i] = 0
for j = 0 to 7
get one tripet Pathes P1 P2 P3 their position
rotate the pixel in P1 P2 P3 to the direction of the Keypoint
compute the bit result: b = (P1-P2) > (P3-P2) ? 1 : 0
descriptors[k][i] += (Byte)b<<j