金曉磊,樊明輝,潘 鵬
(1.福州大學(xué) 物理與信息工程學(xué)院,福州 350002;2福建師范大學(xué) 光電與信息工程學(xué)院,福州 350007)
隨著中國經(jīng)濟的快速發(fā)展和國家新型城鎮(zhèn)化規(guī)劃(2014~2020年)建設(shè),高層建筑的普及變成不可避免的事,因為電梯具有快捷、省力、相對安全的特點,電梯作為必要垂直運輸工具,將得到大量的應(yīng)用,過去十年間,國內(nèi)電梯擁有數(shù)總量持續(xù)增漲,據(jù)國家質(zhì)量監(jiān)督檢驗檢疫總局?jǐn)?shù)據(jù),截至2016年底,全國在用電梯總量達(dá)到493.69萬臺[1]。電梯的安全問題一直是人民密切關(guān)注的問題,電梯一旦出現(xiàn)事故,致死的概率高達(dá)70%,電梯的載客量一般是13~15人,但是經(jīng)常超過載客量上限仍然有人進入,超載電梯會加劇電梯事故的發(fā)生[2-3]。在國家大力提倡節(jié)能減排的情況下,如何有效地提高電梯的使用效率,減少功耗是一個重要的課題。因此人數(shù)檢測不僅對超載問題還是提高電梯性能的派梯策略算法是至關(guān)重要的因素,所以對電梯轎箱內(nèi)人數(shù)的檢測具有重要的意義。
傳統(tǒng)的通過監(jiān)控視頻的人工計數(shù)方式或者傳感器觸發(fā)計數(shù)的方法,雖然可以實現(xiàn)人數(shù)的統(tǒng)計但是高成本、低效率、安裝困難、計數(shù)效果不理想,后來通過較簡單的光電傳感、紅外傳感器實現(xiàn)人數(shù)檢測,此系統(tǒng)在人員密集過大的情況下,由于傳感器本身不可避免的缺陷,導(dǎo)致檢測精度出現(xiàn)較大的誤差。現(xiàn)在電梯轎廂內(nèi)攝像頭變成了一個必須安裝的設(shè)備,電梯轎廂內(nèi)的監(jiān)控視頻圖像可以很容易獲取,不需要額外的傳感器,因此選擇以視頻圖像處理為基礎(chǔ),通過計算機視覺來實現(xiàn)電梯轎廂內(nèi)人數(shù)的檢測。
綜上所述,采用CortexA8處理器作為整個系統(tǒng)的硬件處理器核心[4],通過在ARM-Linux中移植OpenCV作為系統(tǒng)的軟件處理核心,通過改進的隨機Hough算法來作為電梯轎廂內(nèi)人數(shù)檢測系統(tǒng)的核心算法。
系統(tǒng)采用USB攝像頭加高性能的ARM作為整個系統(tǒng)的硬件架構(gòu)。在ARM_Linux系統(tǒng)上移植OpenCV,通過USB攝像頭采集視頻圖像,結(jié)合基于計算機視覺的人數(shù)識別算法,在ARM上實現(xiàn)人數(shù)檢測。系統(tǒng)總體設(shè)計方案如圖1所示,系統(tǒng)由硬件層、操作系統(tǒng)層、應(yīng)用軟件層三部分組成。
圖1 系統(tǒng)總體設(shè)計方案Fig.1 Diagram of total designing scheme
硬件層部分 S5PV210核心板作為人數(shù)檢測系統(tǒng)的控制處理中心,整個開發(fā)板還包括USB攝像頭模塊、電源模塊、復(fù)位及時鐘模塊、串口模塊、以太網(wǎng)卡接口模塊、SD卡存儲及內(nèi)存存儲模塊;
操作系統(tǒng)層部分 操作系統(tǒng)部分又由以U-Boot為基礎(chǔ)的BootLoader、選擇使用Yaffs的文件系統(tǒng)、Linux內(nèi)核選擇3.0.8版本的內(nèi)核;
應(yīng)用軟件層部分 Opencv結(jié)合相應(yīng)算法編寫應(yīng)用程序,實現(xiàn)對電梯轎廂內(nèi)的狀態(tài)進行識別。
Bootloader制作 Bootloader用于引導(dǎo)操作系統(tǒng)內(nèi)核,為系統(tǒng)的啟動進行硬件初始化、分配內(nèi)存空間和系統(tǒng)配置等工作。Bootloader的移植過程分為四步:①解壓下載的u-boot.tat.bz2文件;②修改編譯腳本、添加S5PV210的平臺信息;③選擇交叉編譯接和編譯需要的文件;④執(zhí)行編譯,生成u-boot.bin文件。
Linux內(nèi)核移植 本系統(tǒng)選擇Linux3.0.8作為系統(tǒng)的內(nèi)核,移植分為三步:①下載Linux-3.0.8-20111118.tar.gz源代碼并解壓安裝;②清除原有配置與中間無效積累的文件;③配置和編譯內(nèi)核下命令解壓,配置主要包括:選擇Linux開發(fā)平臺為ARM、修改Nandflash分區(qū)表、修改內(nèi)核配置文件等。
根文件系統(tǒng)移植 選擇YAFFS作為轎廂人數(shù)檢測系統(tǒng)的文件系統(tǒng),YAFFS具有高效性易移植,且專門針對嵌入式系統(tǒng)設(shè)計的文件系統(tǒng)。文件系統(tǒng)植過程分為四步:①創(chuàng)建目錄;②創(chuàng)建設(shè)備文件;③加入配置文件;④添加內(nèi)核模塊。
V4L2是針對UVC免驅(qū)USB設(shè)備的編程框架[5],主要用來輔助USB攝像頭采集視頻圖像,圖像的采集過程分為打開設(shè)備、設(shè)置視頻的制式和幀格式、分配緩沖區(qū)及物理內(nèi)存、讀取數(shù)據(jù)、處理數(shù)據(jù)、關(guān)閉設(shè)備等步驟,圖像采集流程如圖2所示。
由于電梯轎廂內(nèi)特定的應(yīng)用環(huán)境,大量情況下由于電梯轎廂內(nèi)攝像頭的距離、安裝角度等原因,同時乘客在轎廂內(nèi)的站立的方向不一致,導(dǎo)致無法完全獲取圖像的人臉信息只能獲取乘客頭部輪廓、頭發(fā)等信息。雖然正面人臉檢測技術(shù)比較成熟,但是在轎箱內(nèi)的場景下無法實現(xiàn)人數(shù)統(tǒng)計。通過安裝垂直攝像頭俯視對著轎廂內(nèi)部采集視頻圖像,可以解決多人擁擠遮擋的情況,由于Hough變換的可靠性高、技術(shù)成熟,對于噪聲和遮擋都有較好的魯棒性,且每個人的頭部輪廓都是類似于圓形,所以采用基于改進隨機Hough變換算法來進行乘客人數(shù)統(tǒng)計,來實現(xiàn)在電梯轎廂內(nèi)特定的環(huán)境下進行準(zhǔn)確的乘客人數(shù)統(tǒng)計。
圖2 電梯轎廂內(nèi)圖像采集流程Fig.2 Flow chart of acquiring picture in indoor elevator
Hough變換是一種使用表決原理的參數(shù)估計技術(shù)[6-7],基本思想是憑借圖像空間和Hough參數(shù)空間的點與線之間對偶的關(guān)系,該過程在一個參數(shù)空間中通過累積器,借助一個符合預(yù)先設(shè)定的閾值,得到一個符合該特定形狀的集合作為霍夫變換結(jié)果。Hough線變換可以有效地避免圖像中一些特征點遮擋現(xiàn)象的干擾,具有很好的容錯性和魯棒性。
直角坐標(biāo)系中圓一般方程式為
式中:(a,b)為圓心;r為圓的半徑。
如果我們將式(1)中a-b-r看成未知數(shù),x-y看成常量,那么式(1)就是一個圓錐方程。那么在x-y平面上的a-b-r 3個參數(shù)就可以確定一個圓錐面,將所有的a-b-r點映射到參數(shù)空間中,所有的錐面會相交于點(a0,b0,r0)。 這樣就將檢測圓的問題轉(zhuǎn)化為了求參數(shù)空間中圓錐面交點的問題,參數(shù)為x-y的平面轉(zhuǎn)換為參數(shù)a-b-r空間中的示意圖如圖3所示。
如圖3所示,可以看出在x-y的平面上的同一個圓所有的a-b-r點映射到參數(shù)為a-b-r的空間中,會形成多個圓錐,圓錐簇必相交于一點(a0,b0,r0),其中(a0,b0)為圓心、r0為圓半徑,這樣就可以獲取圓的信息。但是Hough變換需要用到投票積累技術(shù),如果直接用Hough變換檢測轎廂內(nèi)乘客人數(shù),那么需要在三維空間進行參數(shù)累加,會需要大量的內(nèi)存空間,假設(shè)檢測一張分辨率大小為300*300的圖像,那么就需要消耗300*300*300大小字節(jié)的參數(shù)空間,導(dǎo)致檢測速度緩慢。所以本文采用一種改進的隨機Hough變換算法來實現(xiàn)轎廂內(nèi)人數(shù)的實時統(tǒng)計。
圖3 Hough圓檢測原理Fig.3 Circle detection principle base on Hough
為了解決傳統(tǒng)Hough變換所固有的缺點,人們提出隨機Hough變換(randomized Hough transform)。在二維空間的方程為
式中:(a,b)為圓心坐標(biāo);r為圓的半徑。要確定一個圓就需要確定a、b、r三個未知的參數(shù),需要在圓上取三個點(x1,y1)、(x2,y2)、(x3,y3),將 3 個點帶入式(2):
聯(lián)立三個方程就可以求得圓心(a,b)和半徑r。確定圓心坐標(biāo)(a1,b1)和半徑 r1,在邊緣點中再取第四個點帶入帶入式(2),求出半徑 r4,將r4與r1比較如式(6)所示:
θ1與預(yù)設(shè)的θ比較,當(dāng)θ1小于θ時則確定為候選圓,接著選取其他邊緣點,每當(dāng)θi小于預(yù)設(shè)的θ時累加器加1,直達(dá)累加器的值達(dá)到預(yù)定的閾值,這確定為一個真圓。當(dāng)處理復(fù)雜圖像中會產(chǎn)生大量的無效積累,當(dāng)同時需要檢測多個圓時無法準(zhǔn)確進行識別,出現(xiàn)相互遮擋的情況無法進行準(zhǔn)確的判斷,針對這些問題本文通過結(jié)合兩種方法來提高測試精度,首先通過半徑大小和圓心位置的關(guān)系來減少無效累計,其次利用圓的特性通過梯度來減少無效積累。
因為我們使用在電梯轎廂特定的工作環(huán)境,檢測的目標(biāo)就是乘客頭部形成的圓的輪廓,針對這一問題在程序中加入了半徑大小和圓心所在位置區(qū)域作為限定條件。圓上任意3個點,過這3個點做法線,3條法線必相交于圓心,圓心到任意一點的距離為半徑,根據(jù)這一定理,為了減少檢查算法過程中造成的無效累積,可以利用梯度計算來來預(yù)先判斷隨意選取的3個點是否在同一個圓上,如果3條法線相交于一點,則判斷為在同一圓上,累加器進行累加,否則這不予計算。
本文人數(shù)檢測算法總體流程如圖4所示。
圖4 轎廂內(nèi)人數(shù)檢測總體流程Fig.4 Flow chart of the detection about numble of people in indoor elevator
具體步驟如下:
(1)圖像去噪:因為采集的過程中一定會受到噪聲的影響,本文通過圖像平滑來減少噪聲對采集圖像質(zhì)量的影響,灰度雙邊濾波,在圖像去噪聲的同時又保存了圖像中大部分細(xì)節(jié)信息;
(2)運用Canny算法檢測獲取邊緣圖像,并二值化處理;
(3)利用Sobel算子計算圖像中所有邊緣點的梯度并儲存;
(4)隨機取3個邊緣點,根據(jù)圓上任意3點的法線相交于圓心,利用3點的梯度做直線;
(5)對所有直線的交點做累加,預(yù)先設(shè)定閾值,當(dāng)累加器的值達(dá)到預(yù)設(shè)閾值,判定為候選圓心并計算半徑;
(6)計算候選圓半徑和圓心位置,如果符合預(yù)設(shè)的最大值rmax、最小值rmin以及圓心位置范圍,確定為真圓;
(7)在圖像中畫出確定的真圓,累積器加1;
(8)檢測結(jié)束。
這種算法相對于隨機Hough圓檢測,可以避免大量的無效累計,提高運行時間的同時也提高了檢測的精度。
實驗結(jié)果如圖5所示,圖5(a)為截取的視頻的一幀圖像,圖5(b)為對原始采集圖像經(jīng)過灰度處理的結(jié)果,圖5(c)為圖像灰度雙邊濾波結(jié)果,圖5(d)為最后通過改進的隨機Hough算法檢測的最終結(jié)果,通過圓心的點數(shù)獲取的人頭總數(shù),通過與原圖比較證明了算法的準(zhǔn)確性。
圖5 人數(shù)檢測實驗過程Fig.5 Process about detection of the number of people
本文采用CortexA8處理器作為整個系統(tǒng)的硬件處理器核心,通過在ARM-Linux中移植OpenCV作為系統(tǒng)的軟件處理核心,利用改進的Hough算法,大大降低了處理復(fù)雜圖像時會產(chǎn)生的大量無效積累,改善同時檢測多位乘客和出現(xiàn)相互遮擋的情況。實驗結(jié)果表明,該算法精度高,運行時間較傳統(tǒng)的RHT算法有較大的提高,魯棒性也有了較大提高。
參考文獻(xiàn):
[1] 中國產(chǎn)業(yè)信息網(wǎng).2017年中國電梯產(chǎn)量、保有量及行業(yè)發(fā)展趨勢 [EB/OL].http://www.chyxx.com/industry/201705/520639.html,2017-05-09/2017-10-16.
[2] 李健輝.電梯事故首負(fù)責(zé)任,行業(yè)無法承受之殤[J].中國物業(yè)管理,2015(2):8-10.
[3] 郭雯雯.電梯事故分析及監(jiān)督檢驗對策[J].質(zhì)量技術(shù)監(jiān)督研究,2006(8):102-104.
[4] 陳偉華,張?zhí)?基于ARM移動機器人視覺系統(tǒng)的設(shè)計[J].機電工程技術(shù),2012,41(7):26-29
[5] 潘寧,楊丹,宋恩民.WinCE下基于ARM的USB攝像頭圖像采集[J].微計算機信息,2008,24(21):271-272
[6] 丁幼春,王書貿(mào).基于RHT的多圓檢測改進算法[J].中國農(nóng)業(yè)大學(xué)學(xué)報,2008,13(4):121-125.
[7] 虞旦,韋巍.改進的隨機圓檢測算法[J].中國圖像圖形學(xué)報,2009,14(8):1590-1593.