【ORB-SLAM2】探索之旅 第 7 天 : 馬上搞懂區域四叉樹 (Region Quad Tree)

Quad Tree

上一篇文章,「第 6 天 : 實作關鍵點 (Key Point) 提取功能」提到,單純提取關鍵點,會造成過度密集、數量太多的情況,產生冗餘關鍵點,降低系統穩定度。

因此,我們透過「 區域四叉樹 (Region Quad Tree) 」資料結構,實現關鍵點均勻化 (Key Points Distribution),篩選、保留品質好的關鍵點。

【備註】區域四叉樹 (Region Quad Tree) 程式碼已上傳至 Github 。

章節目標

理解區域四叉樹 (Region Quad Tree) 原理,篩選、保留品質好的關鍵點。

均勻化流程

以下動畫展示,用區域四叉樹 (Region Quad Tree) 實現關鍵點均勻化 (Distribution)。

影(一)、關鍵點均勻化流程

圖解關鍵點均勻化 (Key Points Distribution)

步驟一、準備一張影像,假設目標提取 20 關鍵點。

關鍵點均勻化範例圖

步驟二、提取關鍵點,此時四叉樹 (Quad Tree) 有 1 個節點 (Node)。

關鍵點均勻化範例圖

步驟三、對於超過 1 關鍵點的 Node,一分為四,此時 4 Nodes。

關鍵點均勻化範例圖

步驟四、對於超過 1 關鍵點的 Node,一分為四,此時 16 Nodes。

關鍵點均勻化範例圖

步驟五、凍結只有 1 關鍵點的 Nodes,不得再分裂。

關鍵點均勻化範例圖

步驟六、丟棄空的 Nodes,此時 10 Nodes。

關鍵點均勻化範例圖

步驟七、Node 數將超過 20,從最多點的 Node 開始,一分為四,產生 34 Nodes。

關鍵點均勻化範例圖

步驟八、凍結只有 1 關鍵點的 Nodes,不得再分裂。

關鍵點均勻化範例圖

步驟九、丟棄空的 Nodes,此時 22 Nodes。

關鍵點均勻化範例圖

步驟十、Node 數達標,不必再分裂。對於多關鍵點的 Nodes,留下品質最好的點。

關鍵點均勻化範例圖

步驟十一、剩 22 關鍵點。

關鍵點均勻化範例圖

步驟十二、關鍵點均勻化完成。

關鍵點均勻化範例圖

實際情況

以上是圖解均勻化。注意第 7 步,可於分裂至 20 Nodes 時停止。若拋棄空 Nodes 後,剩餘 Node 數未達標,可繼續分裂。

實際上,每張影像應提取 2000 關鍵點,才能使系統順利定位。以下為真實均勻化效果,左邊原圖、右邊均勻化 :

關鍵點均勻化示意圖
關鍵點均勻化示意圖
關鍵點均勻化示意圖

結語

下一章節,會探討四叉樹 (Quad Tree) 資料結構、均勻化演算法的撰寫 !

1 則留言

發佈留言

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