【轉載】ORB特征原理(淺顯易懂)

原文鏈接

緒論

假如我有2張美女圖片,我想確認這2張圖片中美女是否是同一個人。這太簡單了,以我專研島國動作片錘煉出來的火眼金睛只需輕輕掃過2張圖片就可以得出結論。但是,如果我想讓計算機來完成這個功能就困難重重了:再性感的美女在計算機眼中也只是0-1組成的數(shù)據(jù)而已。一種可行的方法是找出2張圖片中的特征點,描述這些特征點的屬性,然后比較這兩幅圖片的特征點的屬性。如果有足夠多的特征點具有相同的屬性,那么就可以認為兩幅圖片中的美女是同一個人。
下面我們來看看ORB如何完成這這個過程。

特征點的檢測

圖像的特征點可以簡單的理解為圖像中比較顯著的點,如輪廓點,較暗區(qū)域中的亮點,較亮區(qū)域中的暗點等。

原圖
輪廓線(可能的特征點)

ORB采用FAST(features from accelerated segment test)算法來檢測特征點。FAST核心思想就是找出那些卓爾不群的點,即拿一個點跟它周圍的點比較,如果它和其中大部分的點都不一樣就可以認為它是一個特征點。

FAST特征點檢測

備注:每個小方格代表一個像素,方格內的顏色只是為了便于區(qū)分,不代表該像素點的顏色。

FAST具體計算過程:

  1. 從圖片中選取一個像素點P,下面我們將判斷它是否是一個特征點。我們首先把它的密度(即灰度值)設為Ip。
  2. 設定一個合適的闕值t :當2個點的灰度值之差的絕對值大于t時,我們認為這2個點不相同。
  3. 考慮該像素點周圍的16個像素。(見上圖)
  4. 現(xiàn)在如果這16個點中有連續(xù)的n個點都和P點不同,那么它就是一個角點。 這里n設定為12。
  5. 【個人認為作者這個方法有問題】我們現(xiàn)在提出一個高效的,來快速排除一大部分非特征點的點。該測試僅僅檢查在位置1、9、5和13四個位置的像素(首先檢查1和9,看它們是否和P點相同。如果是,再檢查5和13)。如果是一個角點,那么上述四個像素點中至少有3個應該和P點相同。如果都不滿足,那么不可能是一個角點。
圖中紅色的點為使用FAST算法找到的特征點。

特征點的描述

2.1計算特征描述子

得到特征點后我們需要以某種方式描述這些特征點的屬性。這些屬性的輸出我們稱之為該特征點的描述子(Feature Descritors).ORB采用BRIEF算法來計算一個特征點的描述子。BRIEF算法的核心思想是在關鍵點P的周圍以一定模式選取N個點對,把這N個點對的比較結果組合起來作為描述子。

選取N個點對

BRIEF的具體步驟

1.以關鍵點P為圓心,以d為半徑做圓O。

2.在圓O內某一模式選取N個點對。這里為方便說明,N=4,實際應用中N可以取512.

假設當前選取的4個點對如上圖所示分別標記為:


3.定義操作T

4.分別對已選取的點對進行T操作,將得到的結果進行組合。

假如:

則最終的描述子為:1011

2.2理想的特征點描述子應該具備的屬性

在現(xiàn)實生活中,我們從不同的距離,不同的方向、角度,不同的光照條件下觀察一個物體時,物體的大小,形狀,明暗都會有所不同。但我們的大腦依然可以判斷它是同一件物體。理想的特征描述子應該具備這些性質。即,在大小、方向、明暗不同的圖像中,同一特征點應具有足夠相似的描述子,稱之為描述子的可復現(xiàn)性(魯棒性)。

當以某種理想的方式分別計算上圖中紅色點的描述子時,應該得出同樣的結果。即描述子應該對光照(亮度)不敏感,具備尺度一致性(大小 ),旋轉一致性(角度)等。

上面我們用BRIEF算法得到的描述子并不具備以上這些性質。因此我們得想辦法改進我們的算法。ORB并沒有解決尺度一致性問題,在OpenCV的ORB實現(xiàn)中采用了圖像金字塔來改善這方面的性能。ORB主要解決BRIEF描述子不具備旋轉不變性的問題。

回顧一下BRIEF描述子的計算過程:在當前關鍵點P周圍以一定模式選取N個點對,組合這N個點對的T操作的結果就為最終的描述子。當我們選取點對的時候,是以當前關鍵點為原點,以水平方向為X軸,以垂直方向為Y軸建立坐標系。當圖片發(fā)生旋轉時,坐標系不變,同樣的取點模式取出來的點卻不一樣,計算得到的描述子也不一樣,這是不符合我們要求的。因此我們需要重新建立坐標系,使新的坐標系可以跟隨圖片的旋轉而旋轉。這樣我們以相同的取點模式取出來的點將具有一致性。

打個比方,我有一個印章,上面刻著一些直線。用這個印章在一張圖片上蓋一個章子,圖片上分處直線2頭的點將被取出來。印章不變動的情況下,轉動下圖片,再蓋一個章子,但這次取出來的點對就和之前的不一樣。為了使兩次取出來的點一樣,我需要將章子也旋轉同一個角度再蓋章。(取點模式可以認為是章子上直線的分布情況)

ORB在計算BRIEF描述子時建立的坐標系是以關鍵點為圓心,以關鍵點和取點區(qū)域的質心的連線為X軸建立二維坐標系。

在圖1中,P為關鍵點。圓內為取點區(qū)域,每個小格子代表一個像素。現(xiàn)在我們把這塊圓心區(qū)域看做一塊木板,木板上每個點的質量等于其對應的像素值。根據(jù)積分學的知識我們可以求出這個密度不均勻木板的質心Q。計算公式如下。其中R為圓的半徑。

我們知道圓心是固定的而且隨著物體的旋轉而旋轉。當我們以PQ作為坐標軸時(圖2),在不同的旋轉角度下,我們以同一取點模式取出來的點是一致的。這就解決了旋轉一致性的問題。

特征點的匹配

ORB算法最大的特點就是計算速度快 。 這首先得益于使用FAST檢測特征點,F(xiàn)AST的檢測速度正如它的名字一樣是出了名的快。再次是使用BRIEF算法計算描述子,該描述子特有的二進制串的表現(xiàn)形式不僅節(jié)約了存儲空間,而且大大縮短了匹配的時間。

例如特征點A、B的描述子如下。

A:10101011

B:10101010

我們設定一個閾值,比如80%。當A和B的描述子的相似度大于90%時,我們判斷A,B是相同的特征點,即這2個點匹配成功。在這個例子中A,B只有最后一位不同,相似度為87.5%,大于80%。則A和B是匹配的。

我們將A和B進行異或操作就可以輕松計算出A和B的相似度。而異或操作可以借組硬件完成,具有很高的效率,加快了匹配的速度。

特征點的匹配

總結

本文只對ORB算法核心思想做一個解讀。在具體的實現(xiàn)中還涉及到很多的細節(jié)及優(yōu)化問題。了解更多的細節(jié)請參考下面一些資料。
http://download.csdn.NET/detail/yang843061497/7785917
http://www.cvchina.info/2011/07/04/whats-orb/?
http://blog.sina.com.cn/s/blog_916b71bb0100w9al.html
作者本人 QQ:843061497

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 知乎上看到一個話題——目前火熱的 Deep Learning 會滅絕傳統(tǒng)的 SIFT / SURF 特征提取方法嗎...
    牛奶芝麻閱讀 101,011評論 4 81
  • 一、什么是特征? 圖像的特征(Feature),是圖像上最具代表性的一些點。所謂最具代表性,就是說這些點包含了圖像...
    金戈大王閱讀 34,395評論 11 9
  • 特征提取是計算機視覺和圖像處理中的一個概念。它指的是使用計算機提取圖像信息,決定每個圖像的點是否屬于一個圖像特征。...
    ChrisJO閱讀 2,435評論 1 10
  • 西伯利亞吹來的季風, 性侵斑駁的墻坯。 頸椎病和我 ,和 灰色的傍晚。 學校的湖水嗚咽, 落葉將天空塞滿。 人群倒...
    沅氈閱讀 234評論 2 12
  • 自己的目標是每天寫工作日志,就用簡書來寫。 7:40到達學校。 已經(jīng)到達的有門衛(wèi)秋山大爺,正式的老師方靜。再就是長...
    lygly9閱讀 321評論 0 0