劉則元,徐文斌,邢冠宇
(1.四川大學計算機學院,成都 610065;2.光學輻射重點實驗室,北京 100854;3.四川大學視覺合成圖形圖像技術國防重點學科實驗室,成都 610065)
即時定位與建圖(Simultaneous Localization And Mapping,SLAM)[1]技術是指主體在沒有先驗信息的環境中,通過傳感器估計自身的運動位置,并在過程中同時建立起周圍環境的模型。
SLAM技術現在大量應用于無人機、自動駕駛、機器人導航領域,用來完成導航或建模的工作,并且成功實現了商業化的應用。例如在機器人領域,市面上應用較多的掃地機器人,可以利用SLAM技術對周圍環境進行感知,并能對自身所處的位置有較為準確的判斷,從而更好地完成掃地路徑的規劃以及對障礙物的規避。
視頻標定技術是指利用視覺傳感器得到的視頻或序列幀,反求出視覺傳感器的運動軌跡和姿態。然而現有的基于可見光的視覺SLAM方法在弱光、霧霾、煙塵等不良環境下均無法正常工作,而熱紅外攝像機能夠穩定工作在上述環境中,這使得實現全天候的視覺跟蹤和定位成為可能。
與可見光系統相比,紅外成像系統具有以下優點:
(1)紅外攝像機的環境適應性相比于可見光更好,在夜間和惡劣條件下能工作地更出色;
(2)紅外光透過霧霾、煙霧的能力比可見光強,抗干擾能力更強;
(3)紅外光可以利用不同目標之間的溫差,更加準確地探測如人體、導彈等物體;
(4)隱蔽性好,紅外傳感器可以被動地接受紅外輻射,比激光探測更加安全。
但是與基于可見光的系統相比,紅外圖像還存在分辨率低,噪聲高,缺乏紋理、顏色信息,存在非均勻性誤差,圖像對比度低并且邊緣模糊等缺點。
從發展趨勢上來講,由于普通可見光圖像的局限性,在煙霧、粉塵以及夜間等低光照環境中不能正常工作,因此研究紅外視覺SLAM系統,對于實現全天候的視覺SLAM系統,有著非常重要的意義。
從傳感器的種類上來分,SLAM技術主要可以分為激光SLAM和視覺SLAM兩大類。其中激光SLAM方案起步較早,從理論到應用都有著較為成熟的體系,也是目前實際應用中采用較多的主流方案。而視覺SLAM系統使用相機作為數據采集傳感器,不僅硬件價格低廉,而且體積小、能耗低,在小范圍內精度高、穩定性好,能夠應用于大多數平臺。圖像作為計算機的待處理數據,不僅信息量豐富,而且不依賴于環境場景的預先布置,適用性較強,也能夠在各種復雜的場景下工作。
憑借以上諸多優點,同時得益于近年來計算機運算速度的極大提升以及概率學模型的應用,視覺SLAM方案得到了極大發展,產生了越來越多較為成熟的SLAM系統,例如基于特征點的ORB-SLAM[2-3]系統,基于直接法的LSD-SLAM[4-5]系統等。
目前,對于全天候視覺SLAM相關的研究非常少。
本文提出了一種基于單目視覺SLAM系統進行紅外相機定位的框架和算法,用于實現在霧霾、粉塵、煙塵以及黑暗環境等特殊環境下進行紅外視頻的標定。

圖1 視覺SLAM系統框架
視覺SLAM系統框架主要分為三個部分,分別是追蹤部分,局部建圖部分和閉環檢測部分。對于經過非均勻性校正管理的視頻幀序列,追蹤部分首先對紅外視頻中的特征點進行追蹤,利用多視圖幾何的方法初步計算出相機的位姿,以及地圖點的深度信息。
初步得到的標定結果存在著較大誤差,需要對這個誤差進行進一步的優化,。在局部建圖部分,對選取的關鍵幀,挑選其中的地圖點,將挑選出的地圖點添加到地圖中,然后對這些地圖點進行非線性優化,最小化這些三維空間點在像素坐標系下的重投影誤差,使一個時間段內的誤差最小化。
閉環檢測部分檢測運動軌跡中的回環,對于與關鍵幀相似度較高的候選幀計算圖像的相似度,判斷相機是否處于曾經出現過的位置,再把這個約束結果傳給后端進行閉環融合,最后進行全局的優化,從而消除視覺SLAM系統長時間累計的誤差。
本文在進行紅外視頻的標定時,主要使用視覺SLAM系統的追蹤部分求出紅外攝像機的運動軌跡,使用局部建圖對這個結果進行優化,得到精確可靠的標定結果。
紅外圖像的非均勻性噪聲是一種固定圖像噪聲,是由于紅外探測器的加工工藝、材料、溫度和偏置情況的不均勻所造成的,為了減少這種噪聲紅外相機會對這些噪聲進行非均勻性校正,此時由于相機重新校準會造成約一兩秒的延遲,新進數據可能丟失,這在一定程度上會造成追蹤丟失。因此首先需要對紅外攝像機的非均勻性誤差校正過程進行非均勻性校正管理(NUC)。

圖2 NUC管理的流程
如圖2所示,對于紅外視頻新進的每一幀,進行四次檢查:
(1)如果當前關鍵幀是新的一幀;
(2)如果上一個新進幀出現了延遲,說明正在進行非均勻性校正;
(3)如果新進幀是經過非均勻性校正之后的第一幀;
(4)如果條件允許新的特征檢測。分別檢查上述四個條件后,再進行角點的特征追蹤,從而保證在非均勻性校正造成延遲時,跟蹤盡量不丟失。
對于紅外視頻,本文利用基于特征點的視覺SLAM方法對紅外視頻進行標定,因此匹配良好的特征點算法對于整個系統是至關重要的第一步。
為了能夠紅外圖像中盡可能提取出更多的角點,并對這些角點進行追蹤,實驗選取了SURF、STAR、FAST、ORB、MSER等不同的角點算法,從相鄰兩幀紅外圖像中分別提取角點,并進行如下處理:
(1)選取可重復性來衡量特征點算法在熱紅外圖像中的穩定性,定義重疊誤差:

其中SH為第二幅圖像通過單應矩陣投影到之前圖像的區域面積。
(2)接受匹配要求重疊誤差小于0.2的特征點數量為a,總的匹配特征點數量為b,可重復率定義為a/b。
(3)改變靈敏度閾值,增加匹配的特征點的數量,重復上述步驟,得到特征點匹配數量與可重復率之間的關系。
根據實驗結果,選取可重復率較高并且效率較高的角點算法作為紅外視覺SLAM系統的特征點算法。
視頻標定是指利用視覺傳感器得到的視頻或序列幀,反求出視覺傳感器的運動軌跡和姿態。對于紅外視頻中的每一個序列幀,先進行非均勻性校正管理,然后從紅外圖像中提取足夠多的特征點,并在相鄰兩幀之間進行特征點匹配。
由于紅外圖像存在低紋理等缺點,從紅外圖像中能夠提取的角點數量較少,為了能從紅外圖像中提取出足夠數量的角點,相較于普通可見光圖像需要大幅降低靈敏度閾值。這會導致特征點大量的誤匹配,因此提出了一種在熱紅外圖像中大幅減少誤匹配的方法:
(1)降低角點檢測算法的閾值,盡可能多地檢測紅外圖像中的角點;
(2)利用L-K光流法對角點進行追蹤;
(3)計算追蹤成功角點的二進制特征描述符;
(4)在追蹤角點的閾值范圍內根據匹配。
經過這樣篩選后能夠在減少誤匹配的同時盡量保留特征點的數量,從而可以增加地圖點的數量,使SLAM系統在更容易初始化成功的同時,減小標定誤差。
在相鄰兩幅圖片之間匹配好特征點后,利用多視圖幾何[8]的方法,分別計算本質矩陣和單應矩陣,通過矩陣分解初始化相機的位移t和旋轉R,選擇其中誤差較小的結果作為相機的初步的運動估計。PnP算法[9]是指通過多對3D與2D匹配點,在已知或者未知相機內參的情況下,利用最小化重投影誤差來求解相機外參的算法。對于初始化成功的SLAM系統,可以用PnP算法完成后續相機外參的標定。依據得到相機的運動估計,可以通過三角測量算法計算特征點對應的點的三維空間坐標作為地圖點,最后依據一定的策略從序列幀中選取出一部分關鍵幀。
對于初步的標定結果,局部地圖構建和閉環檢測的兩個線程都需要進行束集調整(Bundle Adjustment,BA)優化。BA算法是一種非線性優化算法,具有很高的精度,而且由于視覺SLAM系統中矩陣的稀疏特性,使BA算法能夠應用在實時的視覺SLAM系統中。
紅外視頻的標定可以得到紅外相機的外參數(包括位移和旋轉),為了更直觀驗證標定結果的準確性,采用增強現實技術,在采集的真實熱紅外視頻中實時加入計算機生成的虛擬景物,通過保證虛實景物共享一個環境空間,構建動態紅外虛實融合環境。如果加入的虛擬物體在場景中保持著穩定性和一致性,說明標定的結果是精確可靠的。
實驗環境采用紅外攝像機Phantom 4 IR-PRO 4.35mm,在Ubuntu 16.04 amd64操作系統下,軟件環境為使用了 OpenCV 2.4.13,矩陣庫 Eigen3、Pangolin,非線性優化庫g2o,點云庫PCL等。
實驗使用可以加熱的棋盤格標定板,對棋盤格黑色部分采取隔熱處理,然后依次從不同角度拍攝20張如圖3所示的不同的棋盤格圖像。

圖3 不同角度拍攝的棋盤格紅外圖像
使用張正友標定算法[10],得到了實驗使用的紅外攝像機的內參數矩陣:

以及畸變系數:
k1=-0.11973069
k2=-0.06653221
p1=-0.00075981
p2=0.0029442
k3=0.23346432
將這個結果用于重投影誤差的計算,計算得到棋盤格角點的平均重投影誤差為0.154304(單位:像素)。
使用OpenCV分別對熱紅外圖像進行SURF、STAR、FAST、ORB、MSER 特征點的提取和匹配,分別計算在不同特征點數量下的可重復率,如圖4所示。

圖4 SURF、STAR、FAST、ORB、MSER可重復率比較
根據上述實驗可以得知,ORB特征點在穩定性方面與SURF、STAR特征點并無太大差異,但是ORB特征點在具備旋轉、尺度不變性的同時,特征檢測與匹配速度較快,因此系統采取了ORB特征點作為熱紅外圖像的特征。
對于輸入的熱紅外圖像幀,經過濾波操作去除噪聲后系統使用OpenCV從圖像中提取出角點,然后計算這些像素點的描述子,得到圖像中的特征點,用L-K光流法跟蹤這些特征點,并在跟蹤的區域內進行匹配,得到了匹配良好的ORB特征點。
為了評估算法的穩定性,分別從重投影誤差和虛擬現實演示兩個方面進行。對于隨機選取的不同的熱紅外視頻的幀序列,得到其重投影誤差和視頻幀序列的關系,如圖5所示。

圖5 重投影誤差隨著紅外視頻幀數的變化
考慮到從投影到圖像中的每個點到像素的平均誤差,使用重投影誤差為標準來判斷系統運行期間的穩定性和性能。經驗上來講,平均重投影低于1.50個像素時,對應著良好的運動估計和場景的結構的可靠的估計;當誤差增大到約3.00個像素時,SLAM系統運行的結果不可靠。
將加入虛擬物體前和加入虛擬物體后的場景進行對比,加入虛擬物體前場景如圖6所示。
在熱紅外視頻中加入虛擬物體(小汽車)并經過渲染后,如圖7所示。
一般來說,虛擬物體在視頻中表現地越穩定、越逼真,說明運動估計是準確而可靠的,也就說明標定的結果與預期中一致。

圖6 加入虛擬物體前測試的場景

圖7 在道路上加入了虛擬汽車的紅外視頻
該系統對于熱紅外圖像的非均勻性校正和噪聲經過特殊處理,并且對熱紅外圖像存在的特征點過少的問題做出優化,將ORB特征點和L-K光流法用于處理熱紅外視頻的特征,系統能夠在不借助其他傳感器的情況下較好地運行。然而,由于熱紅外圖像本身的局限性,相較于普通可見光的SLAM系統,該系統還是容易出現很多失敗條件,例如初始化不成功等問題。
由于熱紅外相機的特性,該系統能夠較好地運行在煙霧、夜間等環境,從而實現全天候的視覺SLAM,這對于軍事上或者某些場合(例如太空中)有著重大的實用意義。
未來的工作包括在系統中加入基于機器學習的閉環檢測模塊,增加對熱紅外圖像的適配,加入的閉環檢測模塊,可以有效減少系統長時間內的累計誤差,使整個系統更加魯棒。