【ORB-SLAM2】探索之旅 第 4 天 : 關鍵點 (Key Point)

Key Point

前言

我們透過一種叫做 ORB 的特徵點,來計算相機本身在真實三維空間中的具體位置。而 ORB 特徵點又是由關鍵點 ( Key Point ) 和描述子 ( Descriptor ) 所組成。本文章將聚焦在關鍵點 ( Key Point ) 的部分。

關鍵點是什麼?

如同我們在《 第 3 天 : 深入解析影像金字塔 ( Image Pyramid ) 的實作與應用 》這篇文章提到的,關鍵點 ( 或稱角點 ) 其實就是指影像中,顯著的角落處,這些地方被認為是比較具有辨識度的。

計算影像中關鍵點的方法是什麼?

ORB SLAM2 框架中是使用一種叫做 FAST 的方法來計算關鍵點的,這是一個非常高效的演算法。

具體來說,我們會依序訪問一張影像中的所有像素點。假設現在訪問到一個座標為 p 的像素點,那我們就可以找到該像素周圍,距離該像素 3 單位的像素點,也就是一個圓型的邊界。

這時,我們以順時針檢查這個圓形邊界上的每個像素,如果有連續 N 個像素大於我們自訂的閾值,那這個像素 p 就是所謂的關鍵點 (Key Point),如圖(一)所示。

關鍵點提取示意圖
關鍵點提取示意圖

前面提到的 N 究竟是什麼 ?

那你可能會很疑惑,N 具體來說究竟是多少? 其實,這沒有一個固定的答案,你可以挑選任何你覺得效果不錯的 N 來進行特徵點的檢測。有時候,我們甚至會為了加速計算,只檢查圓形邊界中,上下左右的像素,也就是標示 1、5、9、13 的這些像素,其中只要超過 3 個像素大於閾值,這個點就算是關鍵點,這樣就可以幫助我們加速整個提取過程的效率和速度,節省運算資源!

提取關鍵點中閾值的定義

還有一點我沒有解釋到,那就是閾值的定義。事實上,這個閾值等於「像素 p 的灰度值 + T」,其中 T 也是我們可以自己設定的,至於數值要設置多少,取決於你!

以 ORB SLAM2 來說,它會設置 T 為 20,但如果都沒檢測到什麼特徵點,就會動態地調整閾值 T 為 7,這樣就可以確保即使是在紋理不夠的影像中也能夠得到一定的特徵點數量。否則,沒有特徵點的話,系統會很難進行相機位置的定位。

但通常我們不會再把 T 設置到小於 7,因為這麼做的話,提取出的關鍵點品質反而沒那麼好,反而會變成系統的雜訊,降低定位精準度。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *