程健,王瑞彬,郁華森,閆鵬鵬,,王凱
(1.煤炭科學研究總院 礦山大數據研究院, 北京 100013;2.煤炭資源高效開采與潔凈利用國家重點實驗室, 北京 100013;3.中國礦業大學 信息與控制工程學院, 江蘇 徐州 221116;4.首都醫科大學 生物醫學工程學院, 北京 100069)
礦井智能化建設開啟了煤炭行業全面創新和技術變革的新時代,是礦山高質量發展的核心技術支撐[1],其主要路徑是“智能化生產決策+機器人作業”。其中,井下機器人在礦井智能化建設過程中發揮著關鍵作用,而自主導航能力是井下機器人智能化程度評價的重要指標,同時也是研究的重點和難點[2]。在滅點透視幾何中,滅點是2條或多條代表平行線的線條向遠處地平線伸展直至聚合的那一點[3]。滅點是二維圖像中的重要特征,它包含了直線的方向信息,滅點位置對圖像中道路方向、大致方位等信息的確定具有重要意義。滅點檢測技術在機器人導航[4]、三維重建[5]、攝像機標定[6]等方面具有廣泛應用,是計算機視覺領域的重要研究課題。因此,可通過檢測識別圖像中的滅點位置來輔助礦井巷道移動機器人進行自主導航。
目前,國內外學者在滅點檢測領域已經進行了較多研究。文獻[7]在具有一定置信度的情況下計算每個圖像像素的主要紋理方向,并通過粒子濾波篩選出候選滅點,最后進行滅點投票估計,該方法雖然在一定程度上減少了計算量,但在光照環境發生變化的情況下誤差較大。文獻[8]采用一種全新的最佳局部優勢取向方法并提出了一種新的投票方案用于滅點估計,但計算量較大,難以滿足實時性要求。文獻[9]采用Sobel濾波器來計算紋理方向,根據紋理方向對道路的滅點進行投票,該方法適用于直線或曲率較小的道路,但是對于彎道無法正確檢測滅點和邊界。文獻[10]采用Gabor濾波器估計像素紋理方向,同時計算對應的置信度,根據紋理方向,由置信度大于閾值的像素投票確定初始滅點。上述基于紋理的滅點檢測方法計算量大、耗時長,且不適用于煤礦巷道場景。
基于邊緣的滅點檢測方法是通過邊緣檢測或霍夫變換提取圖像中的直線,對直線分組后再進行滅點的投票估計。文獻[11]提出了一種基于視覺的滅點估計架構,通過計算直線的交點來實現滅點估計,并引入了置信度用于衡量滅點估計的準確性,該方法要求道路兩側的車道線非常清晰,否則會檢測失敗。文獻[12]假設車輛的方向平行于道路邊界,利用邊緣和光流的組合來檢測滅點,由于涉及光流算法,該方法計算量大、實時性差。文獻[13]通過霍夫變換將圖像中的平行直線檢測出來,對屬于同一滅點的直線組進行坐標變換映射為1條直線,再通過霍夫變換檢測出該直線參數,即求得滅點信息,該方法簡單有效,但對噪聲敏感,易出現較大誤差。文獻[14]采用最大期望(Expectation-Maximization,EM)算法同時解決了直線分組和滅點估計的問題,但該算法僅限于結構化的人工場景。文獻[15]在直線檢測后采用基于教學學習的優化算法對直線進行聚類,進而求出滅點的最佳估計。上述基于邊緣的滅點檢測方法容易受到噪聲干擾影響,同時若場景中邊緣信息有限,該類方法會產生非常大的誤差。
近年來,隨著深度學習技術的發展,有學者研究將該技術應用在滅點檢測領域。文獻[16]將基于深度多任務學習的算法用于圖像中的滅點檢測,基于多任務的神經網絡由特征提取基礎網絡和3個子任務網絡組成,僅需要較少的訓練數據集就可得到較精確結果。但由于煤礦巷道場景光照條件差,且結構化信息不足,基于深度學習的滅點檢測方法在煤礦巷道場景下誤差較大。
本文提出了一種礦井巷道復雜場景滅點檢測方法。該方法引入直線長度閾值和平均梯度約束剔除場景中的干擾直線;采用塊匹配算法生成連續圖像的塊運動軌跡直線,豐富場景中的結構化信息;在滅點回歸估計過程中加入局部異常點分析,提高滅點檢測精度。
礦井巷道復雜場景滅點檢測方法流程如圖1所示。首先對原圖像進行等比例縮小至1/2、灰度化、濾波等預處理,以大幅減少計算量,較好地保留直線特征;然后檢測直線并剔除干擾直線,同時利用塊匹配算法生成塊運動軌跡直線;最后,采用改進的加權回歸算法完成滅點回歸估計。

圖1 礦井巷道復雜場景滅點檢測方法流程Fig.1 Process of vanishing point detection method in complex scene of mine roadway
LSD(Line Segment Detector,直線檢測)算法是一種線性時間直線提取算法[17],具有檢測速度快、噪聲低的優點,而且無需參數調節,利用錯誤控制的方法提高直線檢測準確度。因此,本文采用LSD算法檢測圖像中的直線,結果如圖2所示。

圖2 直線檢測結果Fig.2 Straight line detection result
從直線檢測結果可看出,采用LSD算法得到的圖像直線特征中包含了非常多的干擾直線,對滅點檢測結果造成較大誤差。通過分析,干擾直線是由長度小的直線和圖像中陰影產生的直線組成,因此,本文引入直線長度閾值和平均梯度約束來剔除圖像中的干擾直線。
對于長度小的干擾直線,通過設置直線長度閾值,將直線長度小于閾值的干擾直線剔除。對于圖像中由陰影產生的干擾直線,其梯度要小于其他檢測到的直線梯度。因此,可通過計算每條直線上所有像素點梯度幅值的平均值來判斷直線是否由陰影產生。但數字圖像中的直線是由一系列呈階梯式分布的小直線組成[18](圖3),LSD算法并不能得到直線上每個像素點的準確位置。因此,本文通過計算直線某鄰域內所有像素點梯度幅值的平均值來判斷該直線是否由陰影產生,具體步驟如下:


(a) 水平分布

(b) 垂直分布
(2) 假設直線為水平分布,首先根據直線方程計算f(xstart),對f(xstart)取整數,則直線上第1個像素點的鄰域像素點坐標為(xstart,f(xstart)+1),(xstart,f(xstart)-1)。以此類推,將直線上所有像素點和其鄰域像素點組成一個點集{(xi,yi)},i=1,2,…,n,n為像素點數量。假設點集中第i個像素點灰度值為g(xi,yi),則水平方向梯度dx(xi,yi)和垂直方向梯度dy(xi,yi)分別為
(1)
第i個像素點的梯度幅值為
(2)
直線上所有像素點和其鄰域像素點組成點集的平均梯度幅值為
(3)
(3) 若|davg|小于設定的閾值,則認為直線由陰影產生并將該直線篩除。
剔除干擾直線后直線檢測結果如圖4所示。

圖4 剔除干擾直線后直線檢測結果Fig.4 Straight line detection result after removing interference line
塊匹配算法假設圖像塊內各像素做相同運動[19],根據一定的匹配準則,在前一幀某一給定搜索范圍內找出與當前幀中每一塊最相似的塊,即匹配塊,由當前塊和匹配塊的相對位置計算出運動軌跡。假設礦井巷道機器人沿平行于墻面的方向行走,則匹配塊的運動軌跡直線指向滅點。基于以上分析,本文利用塊匹配算法生成匹配塊的運動軌跡直線,從而豐富場景中的結構化信息。
為減少計算量,本文采用三步搜索法(Three-Step Search,TSS)[20]求出圖像的塊運動軌跡直線:第1步,以匹配塊當前位置為中心,按間隔為4的距離,搜索上下左右及斜對角 8個點;第2步,以第1步搜索結果中最接近點為中心,間隔減半搜索上下左右及斜對角8個點;第3步,重復第2步,將間隔再減半,當間隔為1時找到的最相似點就是匹配誤差最小點。
在搜索最佳匹配塊的過程中,本文采用MAD(Mean Absolute Deviation,平均絕對誤差)來衡量當前塊與匹配塊之間的相似度[21]:
(4)
式中:M為平均絕對誤差;N為圖像塊邊長像素點數量;gc(u,v)為當前塊中第u行、第v列處像素點灰度值;gr(u,v)為匹配塊中第u行、第v列處像素點灰度值。
由于圖像中左側區域存在多種顏色的管道,特征相對明顯,為減少計算量,只計算左側區域的塊運動軌跡直線,結果如圖5所示。根據每條運動軌跡直線的起點和終點生成運動軌跡所在直線方程。

圖5 塊運動軌跡直線Fig.5 Block motion trajectory straight line
將剔除干擾直線后的直線集合A(假設由p條直線組成)和塊運動軌跡直線集合B(假設由q條直線組成)中的直線分為1組,共計p+q條直線,并將該組直線轉換到參數空間,得到p+q個樣本點,在參數空間中采用改進的加權回歸算法進行滅點回歸估計。
LOF(Local Outlier Factor,局部異常因子)算法[22]是一種典型的基于密度的高精度離群點檢測方法。通過給每個樣本點都分配一個依賴于鄰域密度的離群因子值F,判斷該樣本點是否為離群點:若F遠大于1,則該樣本點為離群點;若F接近1,則該樣本點為正常樣本點。因此,在滅點回歸估計過程中,可根據樣本點的F來衡量該樣本點的重要程度。
理想情況下,在圖像中每一個滅點所對應的直線組在參數空間中滿足線性分布關系,因此可通過回歸算法求出樣本點在參數空間中滿足的線性數學模型。
在求解滅點的過程中,直線的重要性和其長度呈正比。因此,將樣本點的離群因子值和對應直線長度共同作為樣本點重要性的衡量標準。基于此,設計加權回歸算法的權函數,其中第j個樣本點的權重為
Wj=Wtjljj=1,2,…,p+q
(5)
式中:Wtj為衡量第j個樣本點異常程度的權重;lj為第j條直線的長度;Fj為第j個樣本點的離群因子值。
(6)
改進的加權回歸算法的線性擬合目標函數為
(7)

在得到擬合后的線性模型后,求出圖像中滅點坐標(w,h)。
ρ=wcosθ+hsinθ
(8)
式中:ρ為圖像坐標系原點到直線的距離;θ為直線與圖像坐標系x軸正方向的夾角。
將滅點坐標反饋給礦井巷道巡檢機器人,即可指引機器人移動。
為驗證本文方法的有效性,分別在礦井巷道數據集和公共數據集上進行滅點檢測實驗。實驗系統為Ubuntu 16.04 LTS,內存為8 GB,處理器為Intel Core i5-4 200H@2.70 GHz。
實驗1在某礦井下,通過人工遙控方式得到礦井巷道巡檢機器人在巡檢過程中拍攝的視頻,截取巡檢視頻中的一部分并提取視頻幀組成礦井巷道數據集,包括礦井巷道中光照條件正常、光照條件差及出現強光干擾3種不同場景。礦井巷道數據集中圖像分辨率為1 920×1 080,幀數為800,由人工標記出每張圖像的真實滅點位置。在礦井巷道場景中,由于光照條件一直發生變化,導致部分區域過于昏暗,部分區域存在強光干擾,加之礦井巷道壁粗糙,使得場景中的結構化信息不明顯、不規則。
在礦井巷道數據集上的滅點檢測結果如圖6所示。綠色的點表示人工標記的真實滅點;紅色的點表示采用基于邊緣的滅點檢測方法得到的滅點;藍色的點表示采用基于深度學習的滅點檢測方法得到的滅點;黃色的點表示采用本文方法得到的滅點。



從圖6可看出,在第150幀時,光照條件正常,圖像中能夠檢測到的直線多,3種方法得到的滅點均比較接近真實滅點;在第540幀時,光照條件差,圖像中的直線特征不明顯,3種方法得到的滅點與真實滅點相比均出現了明顯差距,但本文方法得到的滅點更接近真實滅點;在第560幀時,圖像上方出現了強光干擾,與基于邊緣和基于深度學習的滅點檢測方法相比,本文方法得到的滅點更接近真實滅點。由此可知,本文方法對光照變化有較強的魯棒性,更適用于礦井巷道復雜場景的滅點檢測任務。
實驗2公共數據集由行車記錄儀的部分視頻組成,包括雪地、白天、夜晚3個不同場景。公共數據集中圖像分辨率為335×270,幀數為500,由人工標記出每張圖像的真實滅點位置。
在公共數據集上的滅點檢測結果如圖7所示。可看出在第100幀時,圖像中直線信息較多,3種方法得到的滅點檢測結果都比較準確;在第250幀時,場景中的干擾直線數量增加,基于邊緣的滅點檢測方法和本文方法能準確檢測滅點位置,而基于深度學習的滅點檢測方法得到的滅點與真實滅點相比出現了較大差距;在第400幀時,圖像中直線信息少、干擾多,基于邊緣和基于深度學習的滅點檢測方法得到的滅點均明顯偏離了真實滅點,而本文方法得到的滅點更接近真實滅點。由此可知,本文方法在光照條件差、缺乏直線信息的情況下具有較好的滅點檢測效果。



假設由本文方法檢測到的滅點坐標為(w,h),人工標記的滅點坐標為(w0,h0),則滅點檢測誤差為
(9)
不同滅點檢測方法在不同數據集上的誤差對比曲線如圖8所示。可看出本文方法的精度高于其他方法;在礦井巷道數據集第500幀至第600幀及公共數據集第350幀至第450幀,3種方法均產生了大于正常水平的誤差,這是由于場景中光照條件差,圖像中可利用的直線信息大幅減少,引起誤差增大。

(a) 礦井巷道數據集

(b) 公共數據集
不同滅點檢測方法在不同數據集上的平均誤差對比見表1。可看出在礦井巷道數據集上,本文方法平均誤差與基于邊緣的滅點檢測方法、基于深度學習的滅點檢測方法相比分別減小了31.6%,26.4%;在公共數據集上,本文方法平均誤差與基于邊緣的滅點檢測方法、基于深度學習的滅點檢測方法相比分別減小了22.2%,16.0%。

表1 不同滅點檢測方法平均誤差對比Table 1 Comparison of average error of different vanishing point detection methods px
不同滅點檢測方法在不同數據集上的平均計算用時對比見表2。可看出本文方法的實時性優于基于深度學習的滅點檢測方法,但是與基于邊緣的滅點檢測方法相比還存在一定差距。

表2 不同滅點檢測方法平均計算用時對比Table 2 Comparison of average calculation time of different vanishing point detection methods ms
針對礦井巷道場景光照條件差、結構化信息不足,現有的滅點檢測方法在該場景下誤差大的問題,提出了一種礦井巷道復雜場景滅點檢測方法。首先,對圖像進行縮小、灰度化、濾波等預處理;然后,采用LSD算法對圖像進行直線檢測,并引入直線長度閾值和平均梯度約束剔除干擾直線,同時采用塊匹配算法生成圖像的塊運動軌跡直線,解決了光照條件差情況下結構化信息不足的問題;最后,將剔除干擾后的直線和塊運動軌跡直線轉換為參數空間中的樣本點,將樣本點的離群因子值和對應直線長度共同作為衡量樣本點重要性的標準,采用改進的加權回歸算法進行滅點估計,消除了錯誤樣本點的影響。在礦井巷道數據集與公共數據集上的實驗結果表明,與基于邊緣和基于深度學習的滅點檢測方法相比,本文方法對光照變化有較強的魯棒性,且在光照條件差、缺乏直線信息的復雜場景中具有更高的滅點檢測精度;實時性與基于邊緣的滅點檢測方法相比仍有差距,較基于深度學習的滅點檢測方法略有提升。