OpenCV學習筆記 ORB

2021-08-20 11:58:26 字數 2213 閱讀 9323

一、原理

orb原理,這裡只是簡單介紹

sift 和 surf 演算法是有專利保護的 如果你 使用它們 就可能要花錢 。但是 orb 不需要

orb基本是fast關鍵點檢測和brief關鍵點描述符的結合體, 並很多修改增強了效能。 先它使用 fast 找到關鍵點, 然後再使用 harris  角點檢測對 這些關鍵 點進行  排序找到其中的前 n 個點。它也使用 金字塔從而產生尺度不變性特徵。

資料的方差大的乙個好處是 使得特徵更容易分辨。

對於描述符,orb使用brief描述符。但我們已經看到,這個brief的表現在旋轉方面表現不佳。因此,orb所做的是根據關鍵點的方向來「引導」。

對於在位置(xi,yi)的n個二進位制測試的任何特性集,定義乙個包含這些畫素座標的2 n矩陣。然後利用補丁的方向,找到旋轉矩陣並旋轉s,以得到引導(旋轉)版本s。

orb將角度進行離散化,以增加2/30(12度),並構造乙個預先計算過的簡短模式的查詢表。只要鍵點的方向是一致的,就會使用正確的點集來計算它的描述符。

brief有乙個重要的屬性,即每個位元的特性都有很大的方差,而平均值接近0.5。但是一旦它沿著鍵點方向移動,它就會失去這個屬性並變得更加分散。高方差使特徵更有區別,因為它對輸入的響應不同。另乙個可取的特性是讓測試不相關,因為每個測試都將對結果有所貢獻。為了解決所有這些問題,orb在所有可能的二進位制測試中執行乙個貪婪的搜尋,以找到那些既有高方差又接近0.5的,同時又不相關的。結果被稱為rbrief。

對於描述符匹配,在傳統的lsh上改進的多探測lsh是被使用的。這篇文章說,orb比衝浪快得多,而且比衝浪還好。對於全景拼接的低功率裝置,orb是乙個不錯的選擇。

二、opencv中的orb

使用函式cv.orb_create()建立乙個orb物件,它有幾個可選引數。最有用的應該是nfeature,預設值為500,它表示了要保留特徵的最大數目。scoretype設定使用harris打分還是使用fast打分對特徵進行排序(預設使用harris打分)。引數wta_k決定了產生每個oriented_brief描述符要使用的畫素點的數目,預設值是2,也就是一次選擇兩個點。在這種情況下進行匹配,要使用norm_hamming距離。如果wta_k被設定成3或4,那匹配距離就要設定為norm_hamming2。

三、具體**

Opencv學習之ORB演算法

opencv學習之orb演算法 orb是oriented brief的簡稱,是brief演算法的改進版,演算法效率比sift高兩個數量級,在計算速度上,orb是sift的100倍,是surf的10倍。brief描述子 brief是binary robust independent elementar...

OpenCV的ORB特徵提取演算法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!看到opencv2.3.1裡面orb特徵提取演算法也在裡面了,套用給的surf特徵例子程式改為orb特徵一直提示錯誤,型別不匹配神馬的,由於沒有找到示例程式,只能自己找答案。經過查詢發現 描述符資料型別有是float的,比如說sift,surf描述...

opencv學習筆記

總的來說,我們學習影象處理的就是從vs和opencv開始的。而在之前的學習中,我們使用了前人的通過或攝像頭的人臉識別 並順利執行了程式。順理成章地,接下來的階段就是將這些 給 吃透 理解並吸收,掌握其中的知識。下面就是今天對於 中幾個重要組成部分的學習心得總結。一 命名空間 using namesp...