匡 佩
同濟(jì)大學(xué)軟件學(xué)院,上海 201804
目前,基于視覺的障礙物檢測方法主要分三類。第一類是從單幅圖像中提取特征信息,并與數(shù)據(jù)庫中信息比較,從而感知是否有障礙物。第二類是利用運(yùn)動信息提取障礙物,其中最流行的方法是基于光流的障礙物檢測。該類方法對于障礙物運(yùn)動時有顯著的檢測效果,但是當(dāng)障礙物太小或靜止時將會失敗。另外,光流法需處理大量的數(shù)據(jù),實時性受到影響。第三類是利用立體視覺方式提取障礙物,類似三維重建,運(yùn)算量大,通常需要專用的硬件。[1]
本文提出一種基于運(yùn)動模板的障礙物檢測算法,屬于第二類方法,但是采用基于運(yùn)動模板的歷史運(yùn)動信息來檢測障礙物,有效解決了實時性問題,且不管是動態(tài)還是靜態(tài)障礙物,只要相對于盲人有運(yùn)動,就可將該障礙物檢測出來。
運(yùn)動模板(Motion Template)是由MIT媒體實驗室的Bobick和Davis提出的[2]。運(yùn)動模板是一種有效的跟蹤普通運(yùn)動的方法,尤其可應(yīng)用在姿態(tài)識別中。運(yùn)用運(yùn)動模板需要知道物體的輪廓(或者輪廓的一部分,此處輪廓指實心輪廓),而輪廓的獲取有不同的方法。我們采用幀間差分得到物體的運(yùn)動邊緣,既簡單,也便于計算,而準(zhǔn)確度也不受太大影響。
本算法根據(jù)運(yùn)動模板的模型提取運(yùn)動目標(biāo)的整體運(yùn)動方向,共需要兩個線程同步處理。一個線程計算圖像數(shù)據(jù),獲取MHI,判斷從攝像頭獲取的每幀中是否含有障礙物,另一個線程計時并統(tǒng)計單位時間內(nèi)檢測到的障礙物數(shù),若超過閾值,則報警??偹惴鞒瘫硎鋈缦拢?/p>
線程1,計時統(tǒng)計線程:統(tǒng)計每秒內(nèi)出現(xiàn)在圖像正前方區(qū)域的障礙物次數(shù)count,若在1s內(nèi)檢測到的障礙物次數(shù)超過閾值,則報警,提醒盲人做出正確避讓。
線程2,圖像處理線程。應(yīng)用幀間差分法獲取相鄰兩幀間的差分圖像;
1)對差分圖像做二值化處理,同時對圖像進(jìn)行降噪,以消除路面紋理等噪聲,求取運(yùn)動目標(biāo)的輪廓圖像;
2)由輪廓圖像更新序列運(yùn)動歷史圖像MHI;
3)選取3*3的Sobel模板和MHI卷積計算得到每一個坐標(biāo)點(diǎn)的局部梯度方向;
4)針對MHI圖像作運(yùn)動分割,得到各運(yùn)動部分的序列圖像;
5)針對所有運(yùn)動部分的序列圖像,做以下循環(huán):
(1)針對整幅圖像判斷運(yùn)動區(qū)域的大小,選取最大的運(yùn)動目標(biāo),該步驟也會濾去部分強(qiáng)噪聲;
(2)計算該運(yùn)動目標(biāo)的全局運(yùn)動方向;
(3)確定運(yùn)動目標(biāo)的中心點(diǎn)并在圖像中繪出其全局運(yùn)動方向;
(4)若運(yùn)動目標(biāo)的中心點(diǎn)在圖像的正前方區(qū)域則認(rèn)為該幀圖像中存在妨礙盲人正常行走的障礙物,該秒內(nèi)障礙物count數(shù)加1。轉(zhuǎn)到步驟1執(zhí)行,直至視頻流結(jié)束或算法退出。
為驗證本算法的效果,我們在以下硬件平臺上測試:Intel Atom N5401.66GHz處理器,2G內(nèi)存,Intel GMA 3150顯卡。軟件借助Intel開源包OpenCV進(jìn)行開發(fā)[3]。
圖1中,圓心位置為運(yùn)動物體中心點(diǎn),從圓心位置指出來的半徑為物體相對盲人的運(yùn)動方向。根據(jù)該方向為盲人具體往什么方向避障提供了參考。
圖1 運(yùn)動模板檢測結(jié)果
圖2為一段序列圖像中處理結(jié)果選取。其中圖2(A)中,障礙物剛進(jìn)入鏡頭在圖2(B)中,障礙物在1s內(nèi)出現(xiàn)次數(shù)超過閾值,則向盲人報警。盲人根據(jù)提示,向左避讓,故圖2(C)中障礙物相對盲人向右移動。圖2(D)中,由于檢測到的運(yùn)動物體未在圖像敏感區(qū)域,無需報警。
由于該方法是針對盲人出行使用,所以路面紋理和光線對該方法有很大的影響。在柏油路面中,會將人行道等道路線誤認(rèn)為是障礙物。實驗結(jié)果表明,在不同天氣情況下水泥路面障礙物識別準(zhǔn)確率接近100%。水泥和柏油路面比混合路面準(zhǔn)確率高。夜間由于光線較暗,準(zhǔn)確度大大下降。
在實時采集圖像過程中,受攝像頭影響,障礙物檢測能達(dá)到是15幀/s~16幀/s。在讀取視頻文件進(jìn)行處理時,處理幀速能達(dá)到36幀/s~40幀/s,完全達(dá)到實時性要求。
圖2 序列圖像處理部分過程
本文針對運(yùn)動模板能夠檢測與跟蹤運(yùn)動物體的特點(diǎn),提出了一種基于運(yùn)動模板的障礙物檢測算法。經(jīng)過實驗,該算法在運(yùn)行速度上達(dá)到了實時的效果,同時,相比于傳統(tǒng)基于視覺的方法,本文中方法減弱了地面紋理對系統(tǒng)準(zhǔn)確性的影響,使系統(tǒng)魯棒性得到了提高。但是,畢竟該系統(tǒng)是基于視覺的系統(tǒng),晚上使用時效果不佳,在地面紋理過于復(fù)雜的時候,系統(tǒng)準(zhǔn)確性也受到影響,這將作為今后研究的重點(diǎn)。
[1]BERTOZZI M., GOLD A.A parallel real-time stetro vision system for generic obstacle and lane detection.IEEE Transactions on Image Processing, 1998, 7(1): 62-81.
[2]G.Bradski, J.Davis.Motion Segmentation and Pose Recognition with Motion History Gradients.MACHINE VISION AND APPLICATIONS, 2002, 13:174-184.
[3]G.Bradski, A.Kaebler.Learning OpenCV.O’REILLY Press.2008:340-362.