特徵點法匹配

2021-09-26 06:03:57 字數 3875 閱讀 6095

在slam中vo的實現方法可以根據是否需要提取特徵分為兩類:

基於特徵點的方法

不使用特徵點的直接方法。

其中基於特徵點的vo執行穩定,對光照、動態物體不敏感。

影象特徵點的提取和匹配是計算機視覺中的乙個基本問題,在視覺slam中就需要首先找到相鄰影象對應點的組合,根據這些匹配的點對計算出相機的位姿(相對初始位置,相機的旋轉和平移)。

如何高效且準確的匹配出兩個不同視角的影象中的同乙個物體,是許多計算機視覺應用中的第一步。雖然影象在計算機中是以灰度矩陣的形式存在的,但是利用影象的灰度並不能準確的找出兩幅影象中的同乙個物體。這是由於灰度受光照的影響,並且當影象視角變化後,同乙個物體的灰度值也會跟著變化。所以,就需要找出一種能夠在相機進行移動和旋轉(視角發生變化),仍然能夠保持不變的特徵,利用這些不變的特徵來找出不同視角的影象中的同乙個物體。然後在這些特徵的基礎上研究相機的位姿估計問題,以及這些特徵的定位問題。在經典的slam模型中,這些特徵點被稱為路標;在vslam中則被稱為影象特徵

為了能夠更好的進行影象匹配,需要在影象中選擇具有代表性的區域,例如:影象中的角點、邊緣和一些區塊。其中在影象識別出角點是最容易,也就是說角點的辨識度是最高的。所以,在很多的計算機視覺處理中,都是提取角點作為特徵,對影象進行匹配,例如sfm,視覺slam等

但是,單純的角點並不能很好的滿足我們的需求,例如:相機從遠處得到的是角點,但是在近處就可能不是角點;或者,當相機旋轉後,角點就發生了變化。為此,計算機視覺的研究者們設計了許多更為穩定的的特徵點,這些特徵點不會隨著相機的移動,旋轉或者光照的變化而變化。例如:sift,surf,orb等

乙個影象的特徵點由兩部分構成:關鍵點(keypoint)和描述子(descriptor)

關鍵點指的是該特徵點在影象中的位置,有些還具有方向、尺度資訊;

描述子通常是乙個向量,按照人為的設計的方式,描述關鍵點周圍畫素的資訊。通常描述子是按照外觀相似的特徵應該有相似的描述子設計的。

因此,在匹配的時候,只要兩個特徵點的描述子在向量空間的距離相近,就可以認為它們是同乙個特徵點。

特徵點的匹配通常需要以下三個步驟:(關鍵點 →

\rightarrow

→ 描述子 →

\rightarrow

→ 匹配)

提取影象中的關鍵點,這部分是查詢影象中具有某些特徵(不同的演算法有不同的)的畫素

根據得到的關鍵點位置,計算特徵點的描述子

根據特徵點的描述子,進行匹配

假設灰度影象畫素點a周圍的畫素存在連續大於或者小於a的灰度值,選擇任意乙個畫素點p,假設半徑為3,周圍16個畫素表示

則畫素點p被標記為候選特徵點、通常n取值為9、12,上圖n=9

n=9n=

9。在fast-12演算法中,為了簡化計算,可以通過計算1、9、5、13四個點進行**試,至少其中三個點滿足上述不等式條件,即可將p視為候選點進行檢測,否則可以直接進行排除。

原始的fast角點經常出現「扎堆」的現象,所以第一遍檢測之後,還需要用非極大值抑制,在一定區域內僅保留響應極大值的角點,避免角點集中的問題。

優點:fast特徵點主要檢測區域性畫素灰度變化明顯的地方,相比其它演算法,它只需要比較畫素亮度的大小,速度很快

缺點: fast特徵點的數量大而不確定,沒有尺度和旋轉的描述

fast進行orb,根據上文提到的弱點進行改進。

首先由於fast的特徵點的數量大而不確定,因此指定最終提取的角點數量為n,對原始fast角點分別計算harris響應值,然後選取前n個具有最大響應值的角點作為最終的角點集合。

然後針對fast角點不具備方向性和尺度的弱點,orb新增了尺度和旋轉的描述。

尺度:這個問題通過構建影象金字塔並在每一層上檢測角點來實習

旋**這個問題通過構建影象塊幾何中心和像素質心的向量來實現

幾何中心位於影象塊原點,像素質心可以通過影象塊來實現

m pq

=∑x,

y∈bx

pyqi

(x,y

),p,

q=0,

1m_=\sum_x^y^i(x,y),p,q=

mpq​=x

,y∈b

∑​xp

yqi(

x,y)

,p,q

=0,1

那麼影象塊的質心可以定義為:

c =(

m10m00

,m01m

00)c=(\frac}},\frac}})

c=(m00

​m10

​​,m

00​m

01​​

)幾何中心和像素質心的方向向量為:

θ =a

rcta

n(m01

/m10)

\theta=arctan(m_/m_)

θ=arct

an(m

01​/

m10​

)需要說明的是fast和oriented fast兩種方式都不是描述子,這只是選出關鍵點的一種方式

brief是一種二進位制描述子,其描述向量由許多個0和1組成,計算步驟如下:

1、為減少雜訊干擾,先對影象進行高斯濾波(方差為2,高斯視窗為9x9)。

2、以特徵點為中心,取sxs的鄰域視窗。在視窗內隨機選取一對(兩個)點,比較二者畫素的大小,進行如下二進位制賦值。

τ (p

;x,y

)=1 & \ \ if\ p(x)τ(

p;x,

y)={

10​i

fp(x

)y)ot

herw

ise​

3、在視窗中隨機選取n對隨機點,重複步驟2的二進位制賦值,形成乙個二進位制編碼,這個編碼就是對特徵點的描述,即特徵描述子。(一般n=256)

以上便是brief特徵描述演算法的步驟。

它主要是利用乙個滑動的視窗,對於某個固定方向的(u,v)(u,v)(u,v),我們可以得到在當前畫素下的視窗進行移動所產生的畫素差

泰勒展開然後一階近似,並將其轉換成二次型

可以根據二次型中的矩陣的兩個特徵值來判斷是否是角點,如果特徵值都很大,則是角點;如果都很小,則是平滑的區域,否則是平滑的區域

也可以直接利用harrix進行檢測出關鍵點

非極大值抑制nms在目標檢測,定位等領域是一種被廣泛使用的方法。對於目標具體位置定位過程,不管是使用sw(sliding window)還是ss(selective search)方法,都會產生好多的候選區域。實際看到的情形就是好多區域的交叉重疊,難以滿足實際的應用。如下圖所示。

針對該問題有3種傳統的解決思路。

選取好多矩形框的交集,即公共區域作為最後的目標區域。

選取好多矩形框的並集,即所有矩形框的最小外截矩作為目標區域。當然這裡也不是只要相交就直接取並集,需要相交的框滿**集佔最小框的面積達到一定比例(也就是閾值)才合併。

nms,簡單的說,對於有相交的就選取其中置信度最高的乙個作為最後結果,對於沒相交的就直接保留下來,作為最後結果。

特徵點法的巔峰之作 ORBSLAM2

orb slam 是西班牙 zaragoza 大學的 ra l mur arta 編寫的視覺 slam 系統。它是乙個完整的 slam 系統,包括視覺里程計 跟蹤 回環檢測,是一種完全基於稀疏特徵點的單目 slam 系統,同時還有單目 雙目 rgbd 相機的介面。其核心是使用 orb orinted...

特徵點法的巔峰之作 ORBSLAM2

orb slam 是西班牙 zaragoza 大學的 ra l mur arta 編寫的視覺 slam 系統。它是乙個完整的 slam 系統,包括視覺里程計 跟蹤 回環檢測,是一種完全基於稀疏特徵點的單目 slam 系統,同時還有單目 雙目 rgbd 相機的介面。其核心是使用 orb orinted...

SIFT特徵匹配

影象特徵分很多種,例如顏色特徵 紋理特徵 形狀特徵 空間關係特徵等。常用的特徵為sift特徵。sift scale invariantfeaturetransform,sift 具有以下特性 1 對平移 旋轉 伸縮 亮度 遮擋和雜訊等具有良好的不變性,對視覺變化 仿射變換也有一定的穩定性。2 即使少...