馬忠磊, 郎文輝, 李曉明, 衛(wèi) 星
(合肥工業(yè)大學 計算機與信息學院,安徽 合肥 230009)
如何準確檢測出礦井下的軌道行人,是實現(xiàn)礦井機車無人駕駛[1]系統(tǒng)的一個重要研究內(nèi)容。目前,基于機器視覺的行人檢測方法總體上可以分為3類:1)基于圖像分割的方法,文獻[2]提出了一種Normailzed Cuts方法,能夠較為準確地提取出行人,但是運算速度太慢;2)基于行人模板匹配的方法,文獻[3]能夠準確地檢測出各種姿態(tài)的行人且可以刻畫出其運動軌跡。但由于匹配算法過于復雜,檢測速度較慢,而且在背景復雜的環(huán)境下檢測效果不佳;3)基于統(tǒng)計學習的方法,文獻[4]基于支持向量機(support vector machine,SVM)的行人檢測,首先通過樣本訓練建立分類器,然后對行人進行檢測,檢測過程速度快且檢測效果比較好。
本文采用基于統(tǒng)計學習的行人檢測方法,通過計算機對SVM,AdaBoost及卷積神經(jīng)網(wǎng)絡(luò)方法模擬仿真,綜合系統(tǒng)硬件及實時性考慮,比較發(fā)現(xiàn):采用梯度方向直方圖(histogram of oriented gradient,HOG)+SVM的行人檢測,實驗效果最好。行人檢測采用數(shù)字信號處理器(digital signal processor,DSP)+現(xiàn)場可編程門陣列(field programmable gate array,FPGA)架構(gòu)實現(xiàn),特點是結(jié)構(gòu)靈活,程序移植性較好,適于模塊化設(shè)計,且該系統(tǒng)充分利用了DSP和FPGA各自的優(yōu)勢[5],實現(xiàn)運算與控制的分離,提高了處理數(shù)據(jù)的能力,其中FPGA負責控制圖像的采集、預處理及整個系統(tǒng)的邏輯,DSP負責確定行人檢測區(qū)域及行人檢測等算法的實現(xiàn)。
FPGA選用Altera的EP3C40F484—C8N型處理器,擁有40 kB邏輯單元、1.61 Mbit片內(nèi)RAM,能夠滿足系統(tǒng)所需的硬件資源。攝像機通過本地模擬視頻輸出接口連接到開發(fā)板,由FPGA控制視頻解碼芯片TVP5150進行采樣。采樣完成后,F(xiàn)PGA利用其內(nèi)部存儲器、邏輯塊和外部存儲器SRAM實現(xiàn)圖像的預處理及系統(tǒng)的邏輯控制。
DSP選用TI的TMS320DM642浮點型處理器,該處理器工作頻率為600 MHz,處理能力為4 800 MIPS,充分保證了圖像處理的速度。預處理后,F(xiàn)PGA與DSP間進行數(shù)據(jù)傳輸,DSP將FPGA作為其外接的一個存儲器,通過外部存儲器接口(external memory interface,EMIF)讀取FPGA內(nèi)部數(shù)據(jù), DSP便可進行后續(xù)的圖像處理操作。將處理后的結(jié)果通過以太網(wǎng)接口傳輸至上位機顯示,系統(tǒng)工作框圖如圖1所示。

圖1 系統(tǒng)工作框圖

采樣后得到一幀圖像的大小為720×576,由奇場和偶場圖像組成,且每一個場圖像大小均為720×288。為了便于后續(xù)圖像處理,F(xiàn)PGA處理圖像的亮度信息,忽略圖像的色度信息;為了減小計算量,提高系統(tǒng)實時性,F(xiàn)PGA忽略偶場圖像信息,接收奇場圖像并做下采樣處理,即對奇場圖像的行信號數(shù)據(jù)作隔點采樣處理,最終得到360×288大小的預處理圖像。
劃分感興趣區(qū)域(region of interest,ROI)用于去除軌道兩旁無效信息對軌道檢測的影響,同時可以減小圖像處理的計算量,且不影響軌道識別。機車基于軌道行駛,且機車寬度相對于兩條軌道間的寬度偏大,因此,ROI劃分時以兩條軌道為基準,在此基礎(chǔ)上,分別向左右兩側(cè)拓展一定的區(qū)域,以此作為ROI的左右邊界;將攝像機拍攝到的軌道最近端作為ROI的下邊界;將軌道最遠處巷道的最上端作為ROI的上邊界,即FPGA通過行、列計數(shù)信號分別選擇水平方向130~230像素和垂直方向150~240像素間部分,如圖2所示。

圖2 感興趣區(qū)域
巷道內(nèi)不同路段光線差異較大,在光照相對不足的地方軌道與周圍環(huán)境區(qū)別不明顯,為了能夠準確地檢測出軌道,需要對軌道在邊緣檢測前作一步預處理,以增強軌道與周圍環(huán)境的對比度,突出軌道邊緣信息。采用基于灰度最大值的拉伸算法
(1)
m=max(g(i,j))
(2)
式中g(shù)(i,j)為像素點位置在(i,j)的灰度值;f(i,j)為相同位置像素點拉伸后的灰度值;m為ROI灰度最大值。
FPGA工作的基礎(chǔ)是時鐘,由于機車在礦井下運行速度慢,前后幀圖像相關(guān)性較大,為了獲得當前幀圖像ROI灰度最大值,簡便起見,算法實現(xiàn)上,利用前一幀圖像ROI灰度最大值代替當前幀圖像ROI灰度最大值。
DSP和FPGA的數(shù)據(jù)處理速度均很高[6],因此,兩者之間如何協(xié)調(diào)通信,將影響系統(tǒng)的性能。采用EMIF接口將DSP與SDRAM相連接,同時,F(xiàn)PGA通過內(nèi)部存儲器Block RAM模擬雙口RAM。FPGA將處理后的信號從模擬的雙口RAM的一端輸入,另一端則模擬SDRAM接口。其中,F(xiàn)PGA使用了兩片外部SRAM,用于存儲采集過來的數(shù)據(jù)和讀取SRAM中存儲的采集數(shù)據(jù),通過乒乓傳輸結(jié)構(gòu)實現(xiàn)了兩片SRAM的輪流讀寫,提高了數(shù)據(jù)的吞吐量和通信速度。
文中選擇方法簡單、定位精度高、處理速度快的Robert算子。針對Robert算法閾值選擇困難的問題,引入最大類間方差(Otsu)算法用于選擇最佳閾值,可以對垂直和水平方向的邊緣進行有效檢測,得到效果較佳的二值圖像,如圖3所示。

圖3 邊緣檢測
一般通過式(3)進行直線極坐標的Hough變換
ρ=xcosθ+ysinθ
(3)
式中ρ為圖像空間中坐標原點到直線的垂直距離,通常取值范圍為(0,L),L為圖像對角線的長度;θ為圖像空間中坐標原點到直線的垂線與x軸的夾角,通常取值范圍為[0°,180°)。實現(xiàn)Hough變換一般需要以下3個步驟:1)搜索圖像空間中的目標點,即邊緣點;2)對θ取[0°,180°)范圍內(nèi)的值,利用式(3)計算對應極徑,對參數(shù)空間中的單元(ρ,θ)進行投票累加,即M(ρ,θ)=M(ρ,θ)+1;3)對各個單元的投票累加值進行比較,計算最大值,即圖像空間中最長共線點所在的直線。
本文選擇在傳統(tǒng)Hough變換的基礎(chǔ)上通過對左右軌道線進行極角、極徑的約束實現(xiàn)軌道檢測。礦井機車的左右軌道線通常分布在ROI的左右兩側(cè),假設(shè)左軌道線的極角為θl,極徑為ρl,則左軌道線上目標邊緣點的約束區(qū)域為θl1<θl<θl2和ρl1<ρl<ρl2,本文稱之為左軌道線的極角、極徑約束區(qū)域;同理,假設(shè)右軌道線的極角為θr,極徑為ρr,則右軌道線上目標邊緣點的約束區(qū)域為θr1<θr<θr2和ρr1<ρr<ρr2,稱之為右軌道線的極角、極徑約束區(qū)域,將左、右軌道線的極角、極徑約束區(qū)域統(tǒng)稱為極角、極徑約束區(qū)域,如圖4所示。通過大量的實驗樣本統(tǒng)計得出θl1,θl2,ρl1,ρl2,θr1,θr2,ρr1,ρr2的取值分別為50°,80°,40,65,90°,120°,45,80。通過建立極角、極徑約束區(qū)域,可有效去除大量非目標干擾點,為軌道準確檢測奠定了良好的基礎(chǔ)。

圖4 軌道約束區(qū)域示意
為了加快軌道檢測的速度,對θ取值時,以2°為步長進行遞增,且計算sinθ和cosθ時,通過查找表數(shù)組實現(xiàn),可減少大量的重復計算,最終識別結(jié)果如圖5所示。

圖5 軌道識別匹配結(jié)果
檢測對象是處于危險范圍內(nèi)的行人。由于巷道內(nèi)礦井機車的寬度比軌道的寬度略大,當行人處于軌道線內(nèi)或者距離軌道線很近時,運行的機車會對這個區(qū)域的行人造成傷害,因此,當確定行人檢測的區(qū)域時,需要將左右軌道標記線分別向原軌道兩側(cè)拓展一定的距離。
礦井下行人檢測區(qū)域的確定具體如下:1)將ROI下邊界設(shè)置為行人檢測區(qū)域的下邊界;2)將拓展后的左右軌道標記線與ROI下邊界的交點所在的列分別設(shè)置為行人檢測區(qū)域的左、右邊界;3)將拓展后的左右軌道標記線延長至ROI上邊界,為行人檢測區(qū)域的上邊界,即可得到一個矩形的行人檢測區(qū)域。行人檢測區(qū)域的左邊界、上邊界與左軌道延長標記線可以確定一塊區(qū)域,此區(qū)域內(nèi)的行人處于安全范圍內(nèi),稱此區(qū)域為行人檢測的無效區(qū)域1;同理,行人檢測區(qū)域的右邊界、上邊界與右軌道延長標記線之間同樣可以確定一塊區(qū)域,稱此區(qū)域為行人檢測的無效區(qū)域2,兩塊區(qū)域統(tǒng)稱為行人檢測的無效區(qū)域。處于行人檢測的無效區(qū)域內(nèi)的行人安全,遍歷圖像,將該區(qū)域內(nèi)像素點的灰度值設(shè)置為1,即將行人檢測區(qū)域中的無效區(qū)域涂黑,如圖6所示,可以避免檢測出無效區(qū)域內(nèi)的行人。

圖6 行人檢測區(qū)域
將梯度HOG特征與線性SVM分類器相結(jié)合應用于行人檢測可以得到較高的正確率和較強的魯棒性[9]。但是由于傳統(tǒng)方法特征維度高(3 780維)、計算量大、檢測速度慢,很難滿足系統(tǒng)對實時性的要求。為了提高礦井下行人檢測的速度,通過對傳統(tǒng)方法降低提取圖像特征維度(162維)的方式可有效、快速地檢測出行人。
5.4.1 HOG特征提取[10]
本文利用了一個24像素×48像素的檢測窗口在行人檢測區(qū)域內(nèi)以光柵掃描的方式進行掃描,掃描步長在水平、垂直方向上均為16像素;并且采用8像素×8像素單元(cell)對檢測窗口進行劃分,在檢測窗口內(nèi),cell以8像素為步進在水平方向和垂直方向上滑動,使一個檢測窗口內(nèi)包含了18(3×6)個cell。HOG算法實現(xiàn)過程如下:
1)計算每個像素點的梯度幅度和方向。
2)將[0°,360°)均勻分成9個區(qū)間,將cell中每個像素點的梯度方向按照一定權(quán)重分配到相應的區(qū)間上,梯度方向相差180°視為同一區(qū)間,得到一個cell的9維特征向量(x1,x2,…,x9) 。
3)滑動cell,并重復步驟(1)和步驟(2),直到遍歷完整個檢測窗口,最后得到該檢測窗口的HOG特征向量(x1,x2,…,x162) 。
5.4.2 SVM行人檢測
SVM分類器的訓練是行人識別的基礎(chǔ),文中分類器訓練用到樣本圖像共470幅,其中正樣本150幅,負樣本320幅,且正負樣本的大小均為24×48。礦井下正負樣本圖像的確定如下:將巷道內(nèi)各種姿態(tài)的行人制作為正樣本;將檢測區(qū)域中的非行人部分制作為負樣本,包含軌道部分、軌道內(nèi)部路況及軌道外部涂黑的部分,文中選取的部分訓練樣本如圖7所示。

圖7 訓練樣本
為了得到SVM分類器的系數(shù),需要離線對正負樣本進行特征提取和類別標識。正樣本的特征向量描述形式為(x1,x2,…,x162,+1) ,其中“+1” 為正樣本的特征標識;負樣本的特征向量描述形式為(x1,x2,…,x162,-1) ,其中“ -1”為負樣本的特征標識。將描述正負樣本的特征向量通過跨平臺計算機視覺庫OpenCV中自帶的線性SVM訓練函數(shù)進行訓練,得到SVM分類器的系數(shù),具體流程如圖8。

圖8 SVM分類器訓練流程
SVM訓練結(jié)束后,得到163維的分類器系數(shù)向量,其中最后一維為偏移量。將檢測窗口以16像素步長在行人檢測區(qū)域內(nèi)移動,每移動一次,均提取該位置檢測窗口內(nèi)的162維特征向量,并將其代入SVM判別表達式中
y=ωT·x+b
(4)
式中ωT和b為分類器的系數(shù);ω為162維向量;T為轉(zhuǎn)置;b為偏移量。若y輸出為正,表示檢測窗口內(nèi)包含行人;否則,表示檢測窗內(nèi)不包含行人。將含有行人的坐標位置信息進行保存,并在相應位置對應一個矩形的行人包圍框,檢測出的行人可能會被重復框出,通過算法將重疊的矩形框消除,最后將檢測出的行人由上位機顯示,檢測結(jié)果如圖9。

圖9 檢測結(jié)果
文中利用DSP+FPGA架構(gòu),設(shè)計了一種能夠滿足礦井下安全應用的軌道行人檢測系統(tǒng)方案。介紹了該行人檢測系統(tǒng)的工作原理、信號采集、FPGA和DSP各自實現(xiàn)的主要算法及兩者之間的通信設(shè)計。通過對行人檢測區(qū)域中無效區(qū)域的涂黑,有效避免了對安全區(qū)域內(nèi)行人的檢測;通過對傳統(tǒng)Hough變換及圖像HOG特征提取進行改進,有效提高了行人檢測的速度。研究結(jié)果表明:系統(tǒng)可以檢測出各種姿態(tài)的軌道行人,具有較強的適應性和可靠性。
參考文獻:
[1] 呂增威,魏振春,孫仁浩,等.礦井機車無人駕駛系統(tǒng)周期性消息實時性能研究[J].電子測量與儀器學報,2016,30(2): 225-232.
[2] Felzenszwalb P F,Huttenlocher D P.Efficient matching of pictorial structures[C]∥2000 Proceedings of IEEE Conference on Computer Vision and Pattern Recognition,IEEE,2000:66-73.
[3] Shi J,Malik J.Normalized cuts and image segmentation[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2000,22(8):888-905.
[4] Maji S,Berg A C,Malik J.Classification using intersection kernel support vector machines is efficient[C]∥2008 IEEE Conference on Computer Vision and Pattern Recognition,CVPR 2008,IEEE,2008:1-8.
[5] 陳林軍,涂亞慶,劉 鵬,等.基于DSP+ FPGA的LFMCW雷達測距信號處理系統(tǒng)設(shè)計[J].傳感器與微系統(tǒng),2015,34(12):94-96.
[6] 彭 宇,姜紅蘭,楊智明,等.基于DSP和FPGA的通用數(shù)字信號處理系統(tǒng)設(shè)計[J].國外電子測量技術(shù),2013,32(1):17-21.
[7] 王智文.幾種邊緣檢測算子的性能比較研究[J].制造業(yè)自動化,2012,34(11): 14-16.
[8] 謝昭莉,王 壬.基于圖像識別的井下機車軌道檢測方法[J].計算機工程,2012,38(14):147-149.
[9] 李永波,李柏林,熊 鷹.基于HOG特征的鐵路扣件狀態(tài)檢測[J].傳感器與微系統(tǒng),2013,32(10):110-113.
[10] 楊再甫.基于圖像處理的礦用電機車行人預警系統(tǒng)[D].淮南:安徽理工大學,2015.