張俞鑫洵 李蔚清
(南京理工大學計算機科學與工程學院 南京 210094)
場景重構主要包含了定位和場景中物體識別等方面,是計算機視覺研究的一個重要領域,其在自動駕駛、軍事診察等領域得到了廣泛應用[1]。有時不需要對物體有精確的理解,要求能快速得到位置并識別出物體的種類。隨著增強現實技術的發展,越來越多的增強現實設備進入到人們的生活,這些設備的很多應用都需要對場景有所了解。因此本文研究出了一種面向增強現實環境中典型場景的快速定位與物體識別的場景重構方法。該方法包含了定位和物體識別兩大功能,并且提高了速度以能夠實時完成增強現實設備中單目相機的場景重構。
在場景重構過程中,本文通過微軟的混合現實設備Hololens 進行實時掃描,獲得整個環境的布局和初步理解,利用環境的部分先驗知識,可以得到環境的結構模型和物體的大致方位。在此基礎上,通過顯著性區域提取和物體識別來識別環境中的物體。
本文利用場景中的人工標志和PnP 算法快速得到相機的相對位姿。物體識別通常有基于特征、基于模型和基于知識等三類識別方法[2,7],本文所采用基于特征的物體識別方法。識別包括三個步驟:提取物體特征;根據訓練數據建立物體識別模型;對待識別三維物體進行識別。由于室內物體一般都為人工物體,種類數量有限,且同類的人工物體往往擁有相似的結構、形狀等。因此,本文提取物體的SURF 特征,使用詞袋模型來描述特征,使用SVM 進行訓練。這種方法在Hololens中運行時,擁有較快的識別速度,在物體種類不多的情況下很高的準確率。
本文的主要流程圖如圖1所示。

圖1 面向AR環境的典型場景快速重構
Hololens 可以直接獲取到的只有前方的單目攝像頭。為了計算深度信息,將人工標志的提前將標志貼在場景中的部分位置,得到這些標志在世界坐標系中的相應位置[3~4,14],當掃描到標志時可以立即計算出位姿。當使用者在場景中行走時,設備捕獲到這些標記就能立刻計算出自身在場景中的位置。
Hololens 在打開時會用多傳感器結合對場景進行一次掃描,此時可以獲得該場景的大致模型,后續再通過環境中張貼的人工標志進行粗定位。該方法可以很快得到環境模型和相機在模型中的位置,即便在Hololens 的資源受限情況下也能實時完成定位。
Hololens 的視角較小,并且運算速度有限,如果執行定位時消耗過多資源會影響其他應用以及場景重構的效率。因此采用的標志要具有顯著性、易識別、計算快等特點。本文采用ArUco 庫進行編碼的設計,ArUco 是一個開源的微型的現實增強庫,還經常用于實現一些機器視覺方面的應用。
對Hololens 采集到的圖像進行處理后,隨后進行輪廓提取,對得到的輪廓進行多邊形逼近,去除不是四邊形的輪廓。通過判斷外圈是否為均勻的黑色邊界,得出該區域是否為提前設置的人工標記。最后,對人工標志進行解碼獲取該標志的ID,得到該人工標志四個端點的三維世界坐標。
得到了標志四個端點在像素坐標系中的位置后,可以計算得到相機相對于標志的位置。本文采用N 點透視算法(PnP)來計算相機的實時位姿。PnP 問題是指在己知相機內參的情況下,通過n 個圖像像素點與實際空間點的對應關系來求解相機旋轉矩陣R 與平移向量t,從而求得相機位姿。PnP問題一直被視為計算機視覺領域的經典問題,在自動駕駛、視覺定位等方面均有重要應用[10]。
通過標志的四點與它們的世界坐標和PnP 計算出相機相對于標志的位姿后,再通過計算可以直接得到相機在世界坐標系中的坐標。
定位系統的測試方法是操作人員佩戴Hololens 在場景中行走,計算位姿后轉換到世界坐標系中并發送至后臺電腦。為了方便觀察與檢測,本文在后臺另外設置一臺電腦進行誤差檢測與時延計算。
實驗場景分為狹隘的走廊空間和寬闊的大廳空間。走廊長為10m,寬為1.5m,張貼三張標志。大廳長為10m,寬為8m,貼4 張標志。通過開關燈來控制室內亮度。合格判據如下:
1)在光照良好、場景寬闊情況下,若能在3m距離內,垂直于標記60°以內,計算能在1.5s 內完成,則認為合格。
2)在光照不足、場景寬闊情況下,若能在2m距離內,垂直于標記60°以內,計算能在1.5s 內完成,則認為合格。
3)在光照良好、場景狹窄的情況下,若能在3米距離內,垂直于標記45°以內,計算能在1.5s內完成,則認為合格。
4)在光照較差、場景狹窄情況下,若能在2m距離內,垂直于標記45°以內,計算能在1.5s 內完成,則認為合格。
不同場景下,控制實驗條件,每組實驗次數為50,實驗數據如表1和表2所示。

表1 控制光照條件的定位測試

表2 不同場景下的定位測試
通過實驗可以發現,該方法擁有很強的光照容忍性并且在各場景中也表現良好。可以達到實時準確地計算位在后續增強現實系統中各個功能提供了良好基礎。
本文采用FT 算法進行顯著性區域檢測,提取該區域中的特征建立BOW 模型,用SVM 分類器給出識別結果。
FT 算法是利用顏色和亮度特征來估計中央周邊差對比度,疊加多個帶通濾波器得到全分辨率顯著 圖[8,16]。圖 像 中 某 個 像 素(x,y) 的 顯 著 性 為S(x,y)。其表達式為

上式中,Iμ為圖像特征平均值向量,Iωhc(x,y)為像素點(x,y)在高斯平滑后的對應的像素向量。其中‖ ‖代表為歐幾里得距離。最后計算圖像的SaliencyMap。在得到圖像的SaliencyMap 后,提取其中較亮的區域作為顯著性區域。
BOW 忽略文本的語法和語序等要素,僅僅看作是若干個詞匯的集合。基于BOW 的物體識別方法的是將每幅圖像描述為局部關鍵點特征的無序集合,對關鍵點特征進行聚類,形成視覺詞典,建立圖像的BOW 表達。將所有特征詞投影到視覺詞典中,根據每個特征詞出現的數目把圖像描述成特征向量[9,11~12]。物體識別過程如圖3所示。

圖2 基于BOW的物體識別流程
3.2.1 構建詞典
設置N張訓練圖片,提取圖像SURF特征,最終將得到T 個特征點,用這些特征點構建詞典。構建詞典過程需要使用聚類算法,本文選用K均值聚類方法,通過迭代算法算出最終的n 個聚類中心,用這些聚類中心構建詞典,即直方圖的基[13]。之后每產生一個新的特征點,都映射到n 個聚類中心中的一個,使之數量加1。不同類別擁有不同的特征直方圖,用得到的直方圖來表示這幅圖像。對所有圖像計算完成之后,就可以進行分類聚類訓練預測[17]。圖3為不同物體的特征直方圖。

圖3 生成的物體特征直方圖
3.2.2 訓練分類模型
本文使用的分類器為SVM,使用的核為直方圖正交核[2]。兩個直方圖的交集函數如下:

其中x,y為兩個直方圖,H(x)i為為x直方圖中的第i 個bin,n 為直方圖bin 的個數。兩個直方圖每個bin 的重疊數為兩個bin 的最小值,所有bin 的重疊數之和,為該層次的交集函數值。隨后可以計算兩個層級的交集函數之差N(i),通過N(i)計算兩個直方圖的相似性函數。
該核是一種基于隱式對應關系的內核函數,解決了無序、可變長度的矢量集合的判別分類的問題。其基本思想是將特征集映射到多分辨率超平面中,然后對這些超面進行比較[15]。在本文的應用中,該核函數常用的RB等核函數相比,有用更高的性能。
本文將快速室內定位和物體識別進行結合,實現Hololens 上的快速場景重構。程序在Unity3D 開發。本文中訓練集采用caltech101中的部分室內常見物體。擁有室內的部分先驗知識后,可以了解物體的大致分布。物體分別的先驗知識如圖4 所示。這種方法可以加快物體識別的速度,也為提高正確率提供了一定的保障。得到物體種類后,在該物體區域的最大外接矩形中心處顯示物體的種類與名字。

圖4 先驗知識的物體分別
圖5 為Hololens 中對顯著性區域內物體的識別。

圖5 Hololens中物體識別
實驗場景為分別復雜室內場景和簡潔室內場景。復雜場景中包含了大量的不同種類的室內物體,并且有疊加、遮擋重疊等多種情況。在簡潔場景中只包含了少量的室內物體并且具有較少的重疊。通過開關燈來控制室內的光照。在不同的場景中,測試是否能正確識別該物體。本文的測試圖像為處理過的視頻流,共計圖像1983 幀,其中每幀都有提前設計好的包含一個物體的顯著性區域。
表3 和表4 為在不同的實驗場景中,部分物體的平均識別率和平均計算時間。

表3 室內顯著性物體識別(CHAIR)

表4 室內顯著性物體識別(LAPTOP)
本文的方法的計算速度較好,一秒鐘可以處理的幀數在十幀以上,物體識別率對光照的變化有一定的容忍性。表5 為目前常見的詞袋模型進行的多種物體平均識別準確率。

表5 常見的詞袋模型物體平均識別率
本文的整體系統運行穩定,與其他方法具有相似的識別率,且具有較快的識別速度,保證每秒能處理十幀以上的圖像。為增強現實設備的快速環境重構打下基礎。
將兩者結合后整個系統的發揮穩定,能夠保證在不高于3m/s 的移動速度運動時,可以實時得到位置,完成顯著性物體進行識別工作。本文的整體系統在Hololens 運行穩定,可以進行快速粗定位和物體識別工作,成為在增強現實設備中進行視覺處理的前提。
本文的系統還有很多值得改進的地方,比如將人工標志改成在環境中的自然路標,提取物體的多種特征進行融合從而提高物體的識別率等。這些將會在接下來的實驗中進行完善和改進。