【ORB-SLAM2】探索之旅 第 2 天 : 影像金字塔 ( Image Pyramid ) Part 1

影像金字塔是什麼 ?

影像金字塔(Image Pyramid)是一種多尺度影像表示方法,它透過逐層縮小影像,建立從高解析度到低解析度的一系列影像層級,類似於金字塔的結構。

影像金字塔 Image Pyramid
圖(一)、影像金字塔示意圖。當一張影像進入 ORB SLAM2 系統時,我們會先將其設定到影像金字塔。後續系統在進行特徵(角點)辨識時,可以決定要從哪一層影像提取特徵點(角點),從而實現特徵點的尺度不變性。關於「尺度不變性」,我們會在以下內容繼續進行說明。


為什麼 ORB-SLAM2 中需要使用影像金字塔 ?

先說明一下,ORB-SLAM2 中特徵點通常出現在影像中的尖銳邊緣顯著的角落處,如圖 2 所示。

因為當相機靠近某個角落處時,同一個角落處在影像中的解析度會變高,也就是,該區域的像素(Pixels)數量會變多。不幸的是,ORB SLAM2 檢測特徵點(角點)的方式,需要利用到 7 * 7 的像素區域,如圖(二)所示。

原本相機距離畫框很遠的時候,畫框很小,這讓畫框角落所佔的像素數量少,所以 7 * 7 的像素區域可以讓我們很輕易地提取到畫框角落的特徵點(角點);但如果今天相機在真實場景中被我們移動到靠近圖(二)中的畫框,這會導致該畫框角落處的像素變多,那 7 * 7 的像素區域就無法輕易提取到特徵點(角點)了。

所以為了解決這個問題,我們可以利用「影像金字塔」來實現特徵點的「尺度不變性」。

透過選取影像金字塔中解析度較低的影像,即較上層的影像,如圖(一)所示,無論相機靠近還是遠離場景,都能在相同區域提取到相同的特徵點(角點)。

關鍵點提取示意圖
圖(二)、特徵點提取示意圖。當系統在提取特徵點時,會逐一檢查影像中每一顆像素 p 的周圍,即編號 01 ~ 16 的像素中,如果有 N 個像素值比 p 的像素值高到超過設定的閾值 T,那 p 就算是特徵點(角點)。前面提到的 N、T 都可以自訂。


「設定影像金字塔」是「影像特徵提取」過程中的關鍵前置步驟


設定影像金字塔參數

在 ORB-SLAM2 中,影像金字塔的層數 ( m ) 設定為 8,而且每層之間的縮放係數 ( s ) 為 : 0.83(即 1 / 1.2)。

也就是說,影像金字塔的每一層影像的解析度 ( 大小 ) 都會比上一層低 1.2 倍,這樣可以有效地捕捉從近距離到遠距離的特徵,並保證在不同尺度下都能穩定檢測到特徵點。


合理分配每一層影像中應提取的特徵點數

每一層影像的面積不同,較高解析度的層(面積大)包含較多細節,而較低解析度的層(面積小)則細節較少。

根據面積來分配特徵點數,可以確保每一層都能獲得適量的特徵點,從而達到整個影像均勻覆蓋,不會因某層過於密集或稀疏而導致資訊分布不平衡。

其中,level 表示影像金字塔的第幾層 ( 從 0 開始 ),m 表示金字塔的總層數,s 是縮放係數,N 代表總共需要提取的特徵點數量(這個數量可以根據需求自行設定),而 Nlevel 則是分配給特定層數的特徵點數量。


結語

當「影像金字塔」設定完成後,我們便能有效進行特徵提取,確保特徵點具備「尺度不變性」。

對於要提取特徵點的影像,我們會根據設定的縮放係數對影像進行縮放,並將每層縮放後的影像依序放入影像金字塔中。接著,我們在每一層影像上提取所需數量的特徵點。

關鍵點(Keypoints)提取與均勻化
圖(三)、ORB SLAM2 中的特徵點提取結果。我們可以看到該影像是灰階圖。通常我們在提取特徵點(角點)的時候,會先把原本的彩色影像轉換為灰階圖,簡化特徵點的提取流程,同時降低運算量。

1 則留言

發佈留言

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