基於ORB-SLAM2的圖片識別,其功能是首先運行ORB-SLAM2,在運行過程中調起另一個線程進行圖像識別,識別成功后在圖片上渲染AR中的立方體模型。
識別過程主要基於ORB-SLAM2中的BoW算法,同樣使用DBoW2庫和ORB特征以及詞匯樹視覺詞典。其主要流程可以概括為:運行ORB-SLAM2,加載ORB詞典,然后讀取訓練圖像進行BoW訓練,完成之后就是SLAM的過程了,使用Pangolin做的UI界面,開啟圖像識別之后,線程會取當前幀和訓練圖像做BoW向量的相似性打分,我的策略是當當前幀和某一圖像的相似性得分大於某個得分時(0.015左右),就認為當前幀和該圖相似,然后再進行特征匹配,同時使用正向索引加速匹配過程,如果同時匹配上的特征大於某個閾值(nmatches),則認為這兩幅圖像的確是相似的,則選中匹配上的3D特征點,利用這些特征點進行Delaunay三角剖分進行三角網格的繪制,同時繪制虛擬立方體在匹配3D特征點的均值位置上,效果還可以。
同時在這個里面繼承了原來的平面檢測模塊,但是縮小了平面檢測的范圍,主要方法是在當前幀圖像上截取一個1/2~2/3的矩形框,將矩形框內的3D點以及特征點等信息作為檢測平面的依據,這樣可以將舉行框對准一小塊兒平面區域進行檢測,准確率較高,效果較好。
效果附圖:mark
程序文件:略。