司徒仕忠 邱廣萍 王錦春
摘? 要:為實(shí)現(xiàn)機(jī)器視覺系統(tǒng)的障礙物信息進(jìn)行探測(cè)和識(shí)別,文章提出利用深度相機(jī)識(shí)別障礙物的方法:以障礙物和平面的距離變化梯度不同為主要判別方式,搭配孔洞填充,中值濾波,漫水填充,數(shù)學(xué)形態(tài)學(xué)運(yùn)算,幀間運(yùn)算等噪聲抑制算法,實(shí)現(xiàn)對(duì)障礙物的探測(cè)。根據(jù)周圍環(huán)境信息提取具有一定形狀特征的典型目標(biāo)物。實(shí)驗(yàn)結(jié)果表明,此方法能有效分別障礙物和平面。
關(guān)鍵詞:障礙識(shí)別;深度相機(jī);無(wú)人駕駛;機(jī)器視覺
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):2095-2945(2019)27-0037-04
Abstract: In order to detect and recognize obstacle information in machine vision system, this paper presents a method of using depth camera to identify obstacles: taking the difference of distance gradient between obstacle and plane as the main discriminant method, matching with hole filling, median filtering, flooding filling, mathematical morphology operation, inter-frame operation, etc. Noise suppression algorithm is used to detect obstacles. According to the surrounding environment, the typical objects with certain shape characteristics are extracted. The experimental results show that this method can effectively distinguish obstacles from planes.
Keywords: obstacle recognition; depth camera; unmanned driving; machine vision
引言
障礙物識(shí)別是移動(dòng)式的機(jī)器人的基本能力,只有能識(shí)別障礙物,機(jī)器人才能在復(fù)雜的生產(chǎn)環(huán)境中移動(dòng)和工作。目前識(shí)別障礙物的方法有激光雷達(dá)、超聲波測(cè)距、基于單目攝像頭的視覺識(shí)別和深度相機(jī)測(cè)距識(shí)別等[1]。
激光雷達(dá)具有精度高,采集速度快等優(yōu)點(diǎn),但激光雷達(dá)價(jià)格昂貴,讓小型經(jīng)濟(jì)型的機(jī)器人開發(fā)難以承受[2]。超聲波測(cè)距的器材價(jià)格便宜,但單個(gè)超聲波測(cè)量范圍較小,要實(shí)現(xiàn)對(duì)單方向的不同高度的障礙物的識(shí)別都需要安裝多個(gè)超聲波傳感器,較占用機(jī)器人的空間。單攝像頭的視覺識(shí)別一般基于機(jī)器學(xué)習(xí),對(duì)于障礙物識(shí)別需要準(zhǔn)備大量的數(shù)據(jù)集,且對(duì)環(huán)境光照因素較為敏感?;谏疃认鄼C(jī)障礙物識(shí)別依靠障礙物和平面區(qū)域的距離梯度信息的不同,即可大致判斷是否存在障礙物,單個(gè)深度相機(jī)就能對(duì)單一方向即時(shí)處理,且具有單目攝像頭的功能,需要占用的空間少。
本文研究一種適合低速機(jī)器人的基于深度相機(jī)的障礙物識(shí)別算法,通過(guò)一款適合工作環(huán)境的深度相機(jī),采集的深度圖和BGR圖,分析深度圖中各物品的距離關(guān)系,抑制各種圖像噪聲,分辨出圖中障礙物和道路。
1 機(jī)器視覺總體設(shè)計(jì)
本設(shè)計(jì)基本思路:首先通過(guò)標(biāo)定好的深度相機(jī)對(duì)環(huán)境進(jìn)行拍攝,獲取環(huán)境的深度圖,先對(duì)深度圖進(jìn)行孔洞填充,為因干擾而無(wú)法獲得深度信息的區(qū)域填充距離信息,再進(jìn)行深度圖的卷積計(jì)算,得出深度圖的數(shù)據(jù)的梯度變化數(shù)據(jù),將梯度變化的數(shù)據(jù)與閾值比較,將障礙物設(shè)為1,平地設(shè)為0,形成掩模,對(duì)障礙物和道路進(jìn)行大致的分辨,再通過(guò)數(shù)學(xué)形態(tài)學(xué)運(yùn)算和兩幀之間進(jìn)行運(yùn)算來(lái)進(jìn)行噪音的抑制[3]。算法流程圖如圖1所示。
2 關(guān)鍵算法
2.1 深度圖的孔洞填充
(1)深度圖孔洞噪聲分析
深度圖的噪聲主要來(lái)源于物體表面的光線反射,或近景的物品遮擋了遠(yuǎn)景的物品。不同類型的深度相機(jī)的孔洞噪音的成因也是不同的。深度圖的孔洞噪聲表現(xiàn)為在無(wú)法探測(cè)的區(qū)域,是一個(gè)固定的值,一般為“0”。因?yàn)槿魏蔚囊环N深度圖攝像頭都無(wú)法探測(cè)距離攝像頭為0物品。因?yàn)槭且恍┻B續(xù)的區(qū)域包圍著一些數(shù)值為0的區(qū)域,故稱為孔洞噪聲[4]。
雙目攝像頭的孔洞噪音主要來(lái)自物品上的紋理太少,導(dǎo)致無(wú)法精確定位相應(yīng)的區(qū)域,進(jìn)行深度計(jì)算?;蛘呤且蚬饩€問(wèn)題而無(wú)法拍攝到物品上的紋理,或者是近景物品遮擋了遠(yuǎn)景物品一部分,兩個(gè)攝像頭無(wú)法同時(shí)獲取遠(yuǎn)景物品的某一部分的紋理信息。而無(wú)法獲取特征信息來(lái)計(jì)算兩者間的距離。
結(jié)構(gòu)光攝像頭的孔洞噪聲主要來(lái)源于光線的照射。結(jié)構(gòu)光攝像頭發(fā)送到物體上的結(jié)構(gòu)光,當(dāng)遇到強(qiáng)光或者物體發(fā)生鏡面反射時(shí),會(huì)造成結(jié)構(gòu)光的信息的丟失,而無(wú)法根據(jù)編碼光進(jìn)行深度的計(jì)算[5]。
根據(jù)上述的分析,得出深度圖的孔洞噪聲主要來(lái)自三方面:物品表面紋理信息的丟失(鏡面反射),物品表面紋理信息的不足和近景物品的阻擋。
(2)深度圖孔洞噪聲消除方法
從深度圖的信息分析,如無(wú)物品的阻擋,深度圖同一行的深度信息是大致相同的,物品表面紋理信息的丟失和不足而導(dǎo)致的孔洞噪聲可以通過(guò)同一行的與孔洞最近的有效值來(lái)填補(bǔ)。
孔洞噪聲的某一行一般都會(huì)有兩個(gè)值,根據(jù)之前的對(duì)孔洞噪聲的分析,當(dāng)它是近景物品遮擋遠(yuǎn)景物品時(shí),那應(yīng)該拿較大(較遠(yuǎn))的數(shù)值去填充。而當(dāng)孔洞噪聲是在水平平面時(shí),因?yàn)樯疃葓D同一行的距離信息一般都是大致相同的,仍可以用較大的數(shù)值去填充[6]??锥刺畛湫Ч鐖D2所示。
2.2 中值濾波
孔洞填充后的深度圖,在原本有孔洞噪音的邊界會(huì)出現(xiàn)一些明顯的細(xì)長(zhǎng)的線型痕跡,這是原本孔洞噪音的邊界,這些邊界會(huì)對(duì)深度圖的梯度的計(jì)算造成一定的影響,應(yīng)在計(jì)算梯度之前將這些線型的噪聲濾除。這些噪聲的特點(diǎn)是形狀細(xì)長(zhǎng),彎曲包圍著原本的孔洞。選用中值濾波的方法將這些噪聲濾除。
中值濾波使用一個(gè)滑動(dòng)窗口來(lái)濾除噪聲,當(dāng)窗口越大時(shí),中值可選擇的范圍就越大,濾波的效果就越大,中值濾波法要先對(duì)窗口內(nèi)的數(shù)據(jù)進(jìn)行排序,是一個(gè)運(yùn)算量隨著窗口增大而迅速增大的一個(gè)算法,當(dāng)窗口太大時(shí),處理速度會(huì)迅速下降,而窗口太小,濾波效果不太好。各個(gè)窗口的運(yùn)行的平均速度如表1所示。
比較使用3×3,5×5,和7×7的滑動(dòng)窗口濾波后發(fā)現(xiàn),3×3的窗口對(duì)噪聲的抑制不太好,而7×7的窗口的運(yùn)行速度降低得很明顯,故選用5×5的移動(dòng)窗口。5×5窗口對(duì)噪聲的抑制與7×7的效果相仿,但運(yùn)算速度比7×7明顯提高不少。各個(gè)窗口中值濾波效果圖如圖3所示。
中值濾波法可有效地濾除點(diǎn)線形狀的噪音。但同時(shí),中值濾波法也可以破壞原圖像的點(diǎn)線細(xì)節(jié),但深度圖的點(diǎn)線細(xì)節(jié)不是處理的關(guān)鍵,故用中值濾波法將深度圖所有的點(diǎn)線濾除[7]。
2.3 距離梯度計(jì)算
(1)卷積
卷積是圖像處理經(jīng)常用到的一種運(yùn)算方式。公式為:輸出=輸入*系統(tǒng)。輸入為圖像信號(hào),經(jīng)過(guò)一個(gè)特定的系統(tǒng),即卷積核,會(huì)得到一個(gè)相應(yīng)的輸出。
(2)卷積核
卷積核是指一組有權(quán)重的矩陣,它會(huì)應(yīng)用在圖像的某一個(gè)區(qū)域,并由此生成目標(biāo)矩陣的一個(gè)元素。卷積核可看作是一片毛玻璃,蓋在圖像的某個(gè)區(qū)域上時(shí),原圖像透過(guò)毛玻璃的作用,我們的看到的圖像就會(huì)發(fā)生相應(yīng)的變化[9]。
算法是通過(guò)深度圖找出圖像中的障礙物和平面,主要原理是通過(guò)對(duì)深度圖進(jìn)行梯度的卷積運(yùn)算,找出深度圖中梯度變化小的區(qū)域。
微分卷積核,也稱微分算子。Prewitt算子和Sobel算子,Laplacian算子,Marr算子是圖像處理常用的一些微分算子[10]。使用這些卷積核分別和深度圖進(jìn)行卷積,得到卷積后的梯度數(shù)據(jù),再得到這些數(shù)據(jù)的絕對(duì)值。找出梯度數(shù)據(jù)中所有在有參考價(jià)值范圍內(nèi)的值,這個(gè)參考價(jià)值的范圍要根據(jù)每個(gè)梯度算子而定,一般算子的矩陣越大,或者算子的數(shù)值權(quán)重越大,這個(gè)范圍就越大。而大于這個(gè)范圍的可視為噪聲去除??蛇\(yùn)用可視化的方式找出,可先從0~500開始尋找,將梯度數(shù)據(jù)在0~500內(nèi)的數(shù)據(jù)找出,運(yùn)用直方圖,0~500內(nèi)的數(shù)值顯示出來(lái),再根據(jù)直方圖的疏密程度進(jìn)一步調(diào)整這個(gè)范圍。各算子卷積后的梯度直方圖如圖4所示。
其中Laplaction算子對(duì)中間數(shù)據(jù)和4鄰域的梯度,造成梯度過(guò)于集中,在本算法中對(duì)距離梯度的計(jì)算并不適用,Marr算子shape較大,對(duì)細(xì)小障礙物造成誤判,故在對(duì)障礙物識(shí)別有高要求的時(shí)候不適用。
(3)判斷閾值的設(shè)定
障礙物的閾值分布的范圍,就是平面分布的梯度的分布范圍[11]。將平面區(qū)域設(shè)為“0”。障礙物區(qū)域卷積后得到了深度圖的梯度數(shù)值,然后就是根據(jù)梯度數(shù)值判斷平面區(qū)域和障礙物區(qū)域。根據(jù)直方圖得出的數(shù)據(jù),逐步選出障礙為“1”。閾值判斷后的場(chǎng)景圖如圖5所示。
通過(guò)閾值判斷的圖像存在眾多噪聲,但明顯,障礙物區(qū)域的黑色明顯少于平面區(qū)域的黑色。
2.4 漫水填充
因?yàn)橛布南拗?,深度相機(jī)獲取的深度圖存在眾多的噪音,這些噪音會(huì)對(duì)圖像的處理存在嚴(yán)重的干擾,運(yùn)算后的得出的掩模會(huì)存在眾多的錯(cuò)誤的判斷的區(qū)域,如障礙物區(qū)域會(huì)有許多判斷為平地的小區(qū)域。比如, 平面的區(qū)域,通過(guò)卷積運(yùn)算得出的判斷大部分是正確的,所以得出的掩模是眾多的“0”包圍了少數(shù)的“1”,要用漫水填充去消除這些“1”,反之亦然。
(1)漫水填充
漫水填充是一種用特定顏色填充連通區(qū)域,通過(guò)設(shè)置可聯(lián)通像素的上下限以及聯(lián)通的方式來(lái)達(dá)到不同的填充效果的方法。漫水填充經(jīng)常被用來(lái)標(biāo)記或分離圖像的一部分,以便對(duì)其進(jìn)一步的處理和分析。簡(jiǎn)單概括就是將選定的種子像素點(diǎn)聯(lián)通的區(qū)域替換為指定的顏色[12]。在OpenCV和MATLAB中都有相應(yīng)的函數(shù)實(shí)現(xiàn)。
運(yùn)用漫水填充處理平面區(qū)域(“0”區(qū)域)掩模,漫水填充后的平面區(qū)域如圖6所示。
(2)漫水填充的局限
漫水填充是用特定顏色填充連通區(qū)域,但當(dāng)區(qū)域不連續(xù)的時(shí)候,可能將一些不同的區(qū)域漏填了,導(dǎo)致效果不夠完美[13]。這個(gè)可以通過(guò)從深度圖的多個(gè)地方尋找同一屬性的種子進(jìn)行多次漫水填充。最后用或運(yùn)算將不同的掩模合成到一張掩模上。這可以有效防止不連續(xù)的區(qū)域漏填。
2.5 數(shù)學(xué)形態(tài)學(xué)運(yùn)算
數(shù)學(xué)形態(tài)學(xué)(Mathematical morphology)是一門建立在格論和拓?fù)鋵W(xué)基礎(chǔ)之上的圖像分析學(xué)科,是數(shù)學(xué)形態(tài)學(xué)圖像處理的基本理論[14,15]。數(shù)學(xué)形態(tài)學(xué)的最基本操作有兩種,分別為腐蝕和膨脹:
二值腐蝕會(huì)把前景物體的邊緣腐蝕掉。原理是卷積核沿著圖像滑動(dòng),如果與卷積核對(duì)應(yīng)的原圖像像素都是1,那么中心元素保持原值,否則為0。效果是靠近前景的像素被腐蝕為0,前景物體變小,圖像白色區(qū)域減少,對(duì)于去除白噪聲很有用,可以斷開兩個(gè)連接在一起的物體。
二值膨脹是與二值腐蝕相反的操作。當(dāng)二值膨脹時(shí),卷積核當(dāng)中只要有一個(gè)值是1,中心元素值就是1。此操作會(huì)增加前景中的白色區(qū)域。
2.6 幀間對(duì)比消除噪音
因?yàn)楣庥昂陀布旧淼膯?wèn)題,每一幀的深度圖的數(shù)據(jù)都會(huì)有一定的波動(dòng),采用兩幀之間的掩模進(jìn)行比較可以進(jìn)一步抑制噪聲。因?yàn)檎系K物的掩模標(biāo)記為1,而平地的掩模標(biāo)記為0,當(dāng)兩幀掩模之間進(jìn)行或運(yùn)算時(shí),可以有效抑制障礙物區(qū)域的噪聲,兩幀之間進(jìn)行與運(yùn)算時(shí),可有效消除平地區(qū)域的噪聲[16]。利用幀間對(duì)比抑制噪音可有效抑制幀間的波動(dòng)。
3 實(shí)驗(yàn)驗(yàn)證
3.1 實(shí)驗(yàn)平臺(tái)
本文采用Intel公司的realsense D435深度攝像頭,具有雙目測(cè)距和紅外測(cè)距,兩種方式互補(bǔ),可生成精度更高,噪聲更少的深度圖。通過(guò)Intel提供的SDK可對(duì)攝像頭進(jìn)行快速配置開發(fā)。
3.2 實(shí)驗(yàn)測(cè)試過(guò)程
采用本算法,將探測(cè)范圍設(shè)定為150厘米,并將掩膜上范圍外的區(qū)域置零。實(shí)驗(yàn)開始時(shí)將障礙物置于攝像頭前方,緩慢推進(jìn)攝像頭,當(dāng)障礙物進(jìn)入測(cè)距范圍時(shí),障礙物被識(shí)別出來(lái)。但邊沿?cái)M合效果不好,利用OpenCV內(nèi)置函數(shù)將掩模的識(shí)別出的區(qū)域找出,并在BGR圖中標(biāo)識(shí)出來(lái)。效果如圖7所示。
4 結(jié)束語(yǔ)
本文基于深度攝像頭,對(duì)障礙物識(shí)別的方法進(jìn)行了研究,得到以下結(jié)論:
(1)通過(guò)一款優(yōu)秀的深度相機(jī),提取出準(zhǔn)確的深度圖,再結(jié)合本文的算法,根據(jù)深度相機(jī)的參數(shù)和電腦的性能調(diào)節(jié)算法相應(yīng)的參數(shù),能較好地分辨出障礙物和平面。
(2)但算法依然存在缺陷,受深度相機(jī)的性能優(yōu)劣和測(cè)量距離對(duì)算法的效果影響相當(dāng)大,可能會(huì)為結(jié)果引入眾多的噪聲;而且不同類型的深度相機(jī)對(duì)光照,場(chǎng)景類型的魯棒性都是不同的,需要為特定的場(chǎng)景選用特定的攝像頭。對(duì)于反光的平面,深度相機(jī)無(wú)法有效分辨。
(3)深度相機(jī)識(shí)別障礙物雖然具有較好的識(shí)別效果,但面對(duì)復(fù)雜多變的道路情況,更好的方式是采用多傳感器融合,深度相機(jī)可搭配超聲波、激光雷達(dá)等,從而對(duì)環(huán)境有更加全面和準(zhǔn)確的感知。
參考文獻(xiàn):
[1]黃如林,梁華為,陳佳佳,等.基于激光雷達(dá)的無(wú)人駕駛汽車動(dòng)態(tài)障礙物檢測(cè),跟蹤與識(shí)別方法[J].機(jī)器人,2016,38(4):437-443.
[2]劉志.基于多傳感器的導(dǎo)盲機(jī)器人同時(shí)定位與地圖構(gòu)建[D].江蘇科技大學(xué),2017.
[3]Chen C, Jafari R, Kehtarnavaz N. UTD-MHAD: A multimodal dataset for human action recognition utilizing a depth camera and a wearable inertial sensor[C]//2015 IEEE International conference on image processing(ICIP). IEEE,2015:168-172.
[4]趙洋,劉國(guó)良,田國(guó)會(huì),等.基于深度學(xué)習(xí)的視覺SLAM綜述[J].機(jī)器人,2017,39(6):889-896.
[5]婁達(dá)平,王曉東,富顯祖,等.基于深度引導(dǎo)空洞填補(bǔ)的虛擬視點(diǎn)繪制方法[J].計(jì)算機(jī)應(yīng)用與軟件,2017,34(6):162-168.
[6]Raffle H S, Starner T E, Weaver J, et al. Method and system for input detection using structured light projection: U.S. Patent 8,955,973[P]. 2015-2-17.
[7]Bai M, Wu J. Efficient deblending using median filtering without correct normal moveout-with comparison on migrated images[J]. J. seism. Explor,2017,26:455-79.
[8]韓萍,韓賓賓.基于典型散射差異指數(shù)的PolSAR圖像Lee濾波[J].系統(tǒng)工程與電子技術(shù),2018,40(2):287-294
[9]常亮,鄧小明,周明全,等.圖像理解中的卷積神經(jīng)網(wǎng)絡(luò)[J].自動(dòng)化學(xué)報(bào),2016,42(9):1300-1312.
[10]王正來(lái),黃敏,朱啟兵,等.基于深度卷積神經(jīng)網(wǎng)絡(luò)的運(yùn)動(dòng)目標(biāo)光流檢測(cè)方法[J].光電工程,2018,48(8):43-52.
[11]陳存祺.汽車自主駕駛中基于單目視覺的障礙物檢測(cè)[D].吉林大學(xué),2013.
[12]陳佳鑫,賈英民.一種基于漫水填充法的實(shí)時(shí)彩色目標(biāo)識(shí)別方法[J].計(jì)算機(jī)仿真,2012,29(03):4-9.
[13]羅云崗.特定目標(biāo)的檢測(cè)與識(shí)別技術(shù)研究[D].上海交通大學(xué),2014.
[14]Li H, Wang R, Cao S, et al. A method for low-frequency noise suppression based on mathematical morphology in microseismic monitoring[J]. Geophysics, 2016,81(3):159-167.
[15]鄧仕超,黃寅.二值圖像膨脹腐蝕的快速算法[J].計(jì)算機(jī)工程與應(yīng)用,2017,53(5):207-211.
[16]辛浩,李玲玲.基于幀間差分與背景消減的視頻摘要算法研究[J].淮北師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2017(2):13.