馬忠磊, 郎文輝, 李曉明, 衛(wèi) 星
(合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院,安徽 合肥 230009)
如何準(zhǔn)確檢測出礦井下的軌道行人,是實(shí)現(xiàn)礦井機(jī)車無人駕駛[1]系統(tǒng)的一個(gè)重要研究內(nèi)容。目前,基于機(jī)器視覺的行人檢測方法總體上可以分為3類:1)基于圖像分割的方法,文獻(xiàn)[2]提出了一種Normailzed Cuts方法,能夠較為準(zhǔn)確地提取出行人,但是運(yùn)算速度太慢;2)基于行人模板匹配的方法,文獻(xiàn)[3]能夠準(zhǔn)確地檢測出各種姿態(tài)的行人且可以刻畫出其運(yùn)動(dòng)軌跡。但由于匹配算法過于復(fù)雜,檢測速度較慢,而且在背景復(fù)雜的環(huán)境下檢測效果不佳;3)基于統(tǒng)計(jì)學(xué)習(xí)的方法,文獻(xiàn)[4]基于支持向量機(jī)(support vector machine,SVM)的行人檢測,首先通過樣本訓(xùn)練建立分類器,然后對行人進(jìn)行檢測,檢測過程速度快且檢測效果比較好。
本文采用基于統(tǒng)計(jì)學(xué)習(xí)的行人檢測方法,通過計(jì)算機(jī)對SVM,AdaBoost及卷積神經(jīng)網(wǎng)絡(luò)方法模擬仿真,綜合系統(tǒng)硬件及實(shí)時(shí)性考慮,比較發(fā)現(xiàn):采用梯度方向直方圖(histogram of oriented gradient,HOG)+SVM的行人檢測,實(shí)驗(yàn)效果最好。行人檢測采用數(shù)字信號處理器(digital signal processor,DSP)+現(xiàn)場可編程門陣列(field programmable gate array,FPGA)架構(gòu)實(shí)現(xiàn),特點(diǎn)是結(jié)構(gòu)靈活,程序移植性較好,適于模塊化設(shè)計(jì),且該系統(tǒng)充分利用了DSP和FPGA各自的優(yōu)勢[5],實(shí)現(xiàn)運(yùn)算與控制的分離,提高了處理數(shù)據(jù)的能力,其中FPGA負(fù)責(zé)控制圖像的采集、預(yù)處理及整個(gè)系統(tǒng)的邏輯,DSP負(fù)責(zé)確定行人檢測區(qū)域及行人檢測等算法的實(shí)現(xiàn)。
FPGA選用Altera的EP3C40F484—C8N型處理器,擁有40 kB邏輯單元、1.61 Mbit片內(nèi)RAM,能夠滿足系統(tǒng)所需的硬件資源。攝像機(jī)通過本地模擬視頻輸出接口連接到開發(fā)板,由FPGA控制視頻解碼芯片TVP5150進(jìn)行采樣。采樣完成后,F(xiàn)PGA利用其內(nèi)部存儲器、邏輯塊和外部存儲器SRAM實(shí)現(xiàn)圖像的預(yù)處理及系統(tǒng)的邏輯控制。
DSP選用TI的TMS320DM642浮點(diǎn)型處理器,該處理器工作頻率為600 MHz,處理能力為4 800 MIPS,充分保證了圖像處理的速度。預(yù)處理后,F(xiàn)PGA與DSP間進(jìn)行數(shù)據(jù)傳輸,DSP將FPGA作為其外接的一個(gè)存儲器,通過外部存儲器接口(external memory interface,EMIF)讀取FPGA內(nèi)部數(shù)據(jù), DSP便可進(jìn)行后續(xù)的圖像處理操作。將處理后的結(jié)果通過以太網(wǎng)接口傳輸至上位機(jī)顯示,系統(tǒng)工作框圖如圖1所示。
圖1 系統(tǒng)工作框圖
采樣后得到一幀圖像的大小為720×576,由奇場和偶場圖像組成,且每一個(gè)場圖像大小均為720×288。為了便于后續(xù)圖像處理,F(xiàn)PGA處理圖像的亮度信息,忽略圖像的色度信息;為了減小計(jì)算量,提高系統(tǒng)實(shí)時(shí)性,F(xiàn)PGA忽略偶場圖像信息,接收奇場圖像并做下采樣處理,即對奇場圖像的行信號數(shù)據(jù)作隔點(diǎn)采樣處理,最終得到360×288大小的預(yù)處理圖像。
劃分感興趣區(qū)域(region of interest,ROI)用于去除軌道兩旁無效信息對軌道檢測的影響,同時(shí)可以減小圖像處理的計(jì)算量,且不影響軌道識別。機(jī)車基于軌道行駛,且機(jī)車寬度相對于兩條軌道間的寬度偏大,因此,ROI劃分時(shí)以兩條軌道為基準(zhǔn),在此基礎(chǔ)上,分別向左右兩側(cè)拓展一定的區(qū)域,以此作為ROI的左右邊界;將攝像機(jī)拍攝到的軌道最近端作為ROI的下邊界;將軌道最遠(yuǎn)處巷道的最上端作為ROI的上邊界,即FPGA通過行、列計(jì)數(shù)信號分別選擇水平方向130~230像素和垂直方向150~240像素間部分,如圖2所示。
圖2 感興趣區(qū)域
巷道內(nèi)不同路段光線差異較大,在光照相對不足的地方軌道與周圍環(huán)境區(qū)別不明顯,為了能夠準(zhǔn)確地檢測出軌道,需要對軌道在邊緣檢測前作一步預(yù)處理,以增強(qiáng)軌道與周圍環(huán)境的對比度,突出軌道邊緣信息。采用基于灰度最大值的拉伸算法
(1)
m=max(g(i,j))
(2)
式中g(shù)(i,j)為像素點(diǎn)位置在(i,j)的灰度值;f(i,j)為相同位置像素點(diǎn)拉伸后的灰度值;m為ROI灰度最大值。
FPGA工作的基礎(chǔ)是時(shí)鐘,由于機(jī)車在礦井下運(yùn)行速度慢,前后幀圖像相關(guān)性較大,為了獲得當(dāng)前幀圖像ROI灰度最大值,簡便起見,算法實(shí)現(xiàn)上,利用前一幀圖像ROI灰度最大值代替當(dāng)前幀圖像ROI灰度最大值。
DSP和FPGA的數(shù)據(jù)處理速度均很高[6],因此,兩者之間如何協(xié)調(diào)通信,將影響系統(tǒng)的性能。采用EMIF接口將DSP與SDRAM相連接,同時(shí),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)實(shí)現(xiàn)了兩片SRAM的輪流讀寫,提高了數(shù)據(jù)的吞吐量和通信速度。
文中選擇方法簡單、定位精度高、處理速度快的Robert算子。針對Robert算法閾值選擇困難的問題,引入最大類間方差(Otsu)算法用于選擇最佳閾值,可以對垂直和水平方向的邊緣進(jìn)行有效檢測,得到效果較佳的二值圖像,如圖3所示。
圖3 邊緣檢測
一般通過式(3)進(jìn)行直線極坐標(biāo)的Hough變換
ρ=xcosθ+ysinθ
(3)
式中ρ為圖像空間中坐標(biāo)原點(diǎn)到直線的垂直距離,通常取值范圍為(0,L),L為圖像對角線的長度;θ為圖像空間中坐標(biāo)原點(diǎn)到直線的垂線與x軸的夾角,通常取值范圍為[0°,180°)。實(shí)現(xiàn)Hough變換一般需要以下3個(gè)步驟:1)搜索圖像空間中的目標(biāo)點(diǎn),即邊緣點(diǎn);2)對θ取[0°,180°)范圍內(nèi)的值,利用式(3)計(jì)算對應(yīng)極徑,對參數(shù)空間中的單元(ρ,θ)進(jìn)行投票累加,即M(ρ,θ)=M(ρ,θ)+1;3)對各個(gè)單元的投票累加值進(jìn)行比較,計(jì)算最大值,即圖像空間中最長共線點(diǎn)所在的直線。
本文選擇在傳統(tǒng)Hough變換的基礎(chǔ)上通過對左右軌道線進(jìn)行極角、極徑的約束實(shí)現(xiàn)軌道檢測。礦井機(jī)車的左右軌道線通常分布在ROI的左右兩側(cè),假設(shè)左軌道線的極角為θl,極徑為ρl,則左軌道線上目標(biāo)邊緣點(diǎn)的約束區(qū)域?yàn)棣萳1<θl<θl2和ρl1<ρl<ρl2,本文稱之為左軌道線的極角、極徑約束區(qū)域;同理,假設(shè)右軌道線的極角為θr,極徑為ρr,則右軌道線上目標(biāo)邊緣點(diǎn)的約束區(qū)域?yàn)棣萺1<θr<θr2和ρr1<ρr<ρr2,稱之為右軌道線的極角、極徑約束區(qū)域,將左、右軌道線的極角、極徑約束區(qū)域統(tǒng)稱為極角、極徑約束區(qū)域,如圖4所示。通過大量的實(shí)驗(yàn)樣本統(tǒng)計(jì)得出θl1,θl2,ρl1,ρl2,θr1,θr2,ρr1,ρr2的取值分別為50°,80°,40,65,90°,120°,45,80。通過建立極角、極徑約束區(qū)域,可有效去除大量非目標(biāo)干擾點(diǎn),為軌道準(zhǔn)確檢測奠定了良好的基礎(chǔ)。
圖4 軌道約束區(qū)域示意
為了加快軌道檢測的速度,對θ取值時(shí),以2°為步長進(jìn)行遞增,且計(jì)算sinθ和cosθ時(shí),通過查找表數(shù)組實(shí)現(xiàn),可減少大量的重復(fù)計(jì)算,最終識別結(jié)果如圖5所示。
圖5 軌道識別匹配結(jié)果
檢測對象是處于危險(xiǎn)范圍內(nèi)的行人。由于巷道內(nèi)礦井機(jī)車的寬度比軌道的寬度略大,當(dāng)行人處于軌道線內(nèi)或者距離軌道線很近時(shí),運(yùn)行的機(jī)車會對這個(gè)區(qū)域的行人造成傷害,因此,當(dāng)確定行人檢測的區(qū)域時(shí),需要將左右軌道標(biāo)記線分別向原軌道兩側(cè)拓展一定的距離。
礦井下行人檢測區(qū)域的確定具體如下:1)將ROI下邊界設(shè)置為行人檢測區(qū)域的下邊界;2)將拓展后的左右軌道標(biāo)記線與ROI下邊界的交點(diǎn)所在的列分別設(shè)置為行人檢測區(qū)域的左、右邊界;3)將拓展后的左右軌道標(biāo)記線延長至ROI上邊界,為行人檢測區(qū)域的上邊界,即可得到一個(gè)矩形的行人檢測區(qū)域。行人檢測區(qū)域的左邊界、上邊界與左軌道延長標(biāo)記線可以確定一塊區(qū)域,此區(qū)域內(nèi)的行人處于安全范圍內(nèi),稱此區(qū)域?yàn)樾腥藱z測的無效區(qū)域1;同理,行人檢測區(qū)域的右邊界、上邊界與右軌道延長標(biāo)記線之間同樣可以確定一塊區(qū)域,稱此區(qū)域?yàn)樾腥藱z測的無效區(qū)域2,兩塊區(qū)域統(tǒng)稱為行人檢測的無效區(qū)域。處于行人檢測的無效區(qū)域內(nèi)的行人安全,遍歷圖像,將該區(qū)域內(nèi)像素點(diǎn)的灰度值設(shè)置為1,即將行人檢測區(qū)域中的無效區(qū)域涂黑,如圖6所示,可以避免檢測出無效區(qū)域內(nèi)的行人。
圖6 行人檢測區(qū)域
將梯度HOG特征與線性SVM分類器相結(jié)合應(yīng)用于行人檢測可以得到較高的正確率和較強(qiáng)的魯棒性[9]。但是由于傳統(tǒng)方法特征維度高(3 780維)、計(jì)算量大、檢測速度慢,很難滿足系統(tǒng)對實(shí)時(shí)性的要求。為了提高礦井下行人檢測的速度,通過對傳統(tǒng)方法降低提取圖像特征維度(162維)的方式可有效、快速地檢測出行人。
5.4.1 HOG特征提取[10]
本文利用了一個(gè)24像素×48像素的檢測窗口在行人檢測區(qū)域內(nèi)以光柵掃描的方式進(jìn)行掃描,掃描步長在水平、垂直方向上均為16像素;并且采用8像素×8像素單元(cell)對檢測窗口進(jìn)行劃分,在檢測窗口內(nèi),cell以8像素為步進(jìn)在水平方向和垂直方向上滑動(dòng),使一個(gè)檢測窗口內(nèi)包含了18(3×6)個(gè)cell。HOG算法實(shí)現(xiàn)過程如下:
1)計(jì)算每個(gè)像素點(diǎn)的梯度幅度和方向。
2)將[0°,360°)均勻分成9個(gè)區(qū)間,將cell中每個(gè)像素點(diǎn)的梯度方向按照一定權(quán)重分配到相應(yīng)的區(qū)間上,梯度方向相差180°視為同一區(qū)間,得到一個(gè)cell的9維特征向量(x1,x2,…,x9) 。
3)滑動(dòng)cell,并重復(fù)步驟(1)和步驟(2),直到遍歷完整個(gè)檢測窗口,最后得到該檢測窗口的HOG特征向量(x1,x2,…,x162) 。
5.4.2 SVM行人檢測
SVM分類器的訓(xùn)練是行人識別的基礎(chǔ),文中分類器訓(xùn)練用到樣本圖像共470幅,其中正樣本150幅,負(fù)樣本320幅,且正負(fù)樣本的大小均為24×48。礦井下正負(fù)樣本圖像的確定如下:將巷道內(nèi)各種姿態(tài)的行人制作為正樣本;將檢測區(qū)域中的非行人部分制作為負(fù)樣本,包含軌道部分、軌道內(nèi)部路況及軌道外部涂黑的部分,文中選取的部分訓(xùn)練樣本如圖7所示。
圖7 訓(xùn)練樣本
為了得到SVM分類器的系數(shù),需要離線對正負(fù)樣本進(jìn)行特征提取和類別標(biāo)識。正樣本的特征向量描述形式為(x1,x2,…,x162,+1) ,其中“+1” 為正樣本的特征標(biāo)識;負(fù)樣本的特征向量描述形式為(x1,x2,…,x162,-1) ,其中“ -1”為負(fù)樣本的特征標(biāo)識。將描述正負(fù)樣本的特征向量通過跨平臺計(jì)算機(jī)視覺庫OpenCV中自帶的線性SVM訓(xùn)練函數(shù)進(jìn)行訓(xùn)練,得到SVM分類器的系數(shù),具體流程如圖8。
圖8 SVM分類器訓(xùn)練流程
SVM訓(xùn)練結(jié)束后,得到163維的分類器系數(shù)向量,其中最后一維為偏移量。將檢測窗口以16像素步長在行人檢測區(qū)域內(nèi)移動(dòng),每移動(dòng)一次,均提取該位置檢測窗口內(nèi)的162維特征向量,并將其代入SVM判別表達(dá)式中
y=ωT·x+b
(4)
式中ωT和b為分類器的系數(shù);ω為162維向量;T為轉(zhuǎn)置;b為偏移量。若y輸出為正,表示檢測窗口內(nèi)包含行人;否則,表示檢測窗內(nèi)不包含行人。將含有行人的坐標(biāo)位置信息進(jìn)行保存,并在相應(yīng)位置對應(yīng)一個(gè)矩形的行人包圍框,檢測出的行人可能會被重復(fù)框出,通過算法將重疊的矩形框消除,最后將檢測出的行人由上位機(jī)顯示,檢測結(jié)果如圖9。
圖9 檢測結(jié)果
文中利用DSP+FPGA架構(gòu),設(shè)計(jì)了一種能夠滿足礦井下安全應(yīng)用的軌道行人檢測系統(tǒng)方案。介紹了該行人檢測系統(tǒng)的工作原理、信號采集、FPGA和DSP各自實(shí)現(xiàn)的主要算法及兩者之間的通信設(shè)計(jì)。通過對行人檢測區(qū)域中無效區(qū)域的涂黑,有效避免了對安全區(qū)域內(nèi)行人的檢測;通過對傳統(tǒng)Hough變換及圖像HOG特征提取進(jìn)行改進(jìn),有效提高了行人檢測的速度。研究結(jié)果表明:系統(tǒng)可以檢測出各種姿態(tài)的軌道行人,具有較強(qiáng)的適應(yīng)性和可靠性。
參考文獻(xiàn):
[1] 呂增威,魏振春,孫仁浩,等.礦井機(jī)車無人駕駛系統(tǒng)周期性消息實(shí)時(shí)性能研究[J].電子測量與儀器學(xué)報(bào),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雷達(dá)測距信號處理系統(tǒng)設(shè)計(jì)[J].傳感器與微系統(tǒng),2015,34(12):94-96.
[6] 彭 宇,姜紅蘭,楊智明,等.基于DSP和FPGA的通用數(shù)字信號處理系統(tǒng)設(shè)計(jì)[J].國外電子測量技術(shù),2013,32(1):17-21.
[7] 王智文.幾種邊緣檢測算子的性能比較研究[J].制造業(yè)自動(dòng)化,2012,34(11): 14-16.
[8] 謝昭莉,王 壬.基于圖像識別的井下機(jī)車軌道檢測方法[J].計(jì)算機(jī)工程,2012,38(14):147-149.
[9] 李永波,李柏林,熊 鷹.基于HOG特征的鐵路扣件狀態(tài)檢測[J].傳感器與微系統(tǒng),2013,32(10):110-113.
[10] 楊再甫.基于圖像處理的礦用電機(jī)車行人預(yù)警系統(tǒng)[D].淮南:安徽理工大學(xué),2015.