金曉磊,樊明輝,潘 鵬
(1.福州大學 物理與信息工程學院,福州 350002;2福建師范大學 光電與信息工程學院,福州 350007)
隨著中國經濟的快速發展和國家新型城鎮化規劃(2014~2020年)建設,高層建筑的普及變成不可避免的事,因為電梯具有快捷、省力、相對安全的特點,電梯作為必要垂直運輸工具,將得到大量的應用,過去十年間,國內電梯擁有數總量持續增漲,據國家質量監督檢驗檢疫總局數據,截至2016年底,全國在用電梯總量達到493.69萬臺[1]。電梯的安全問題一直是人民密切關注的問題,電梯一旦出現事故,致死的概率高達70%,電梯的載客量一般是13~15人,但是經常超過載客量上限仍然有人進入,超載電梯會加劇電梯事故的發生[2-3]。在國家大力提倡節能減排的情況下,如何有效地提高電梯的使用效率,減少功耗是一個重要的課題。因此人數檢測不僅對超載問題還是提高電梯性能的派梯策略算法是至關重要的因素,所以對電梯轎箱內人數的檢測具有重要的意義。
傳統的通過監控視頻的人工計數方式或者傳感器觸發計數的方法,雖然可以實現人數的統計但是高成本、低效率、安裝困難、計數效果不理想,后來通過較簡單的光電傳感、紅外傳感器實現人數檢測,此系統在人員密集過大的情況下,由于傳感器本身不可避免的缺陷,導致檢測精度出現較大的誤差。現在電梯轎廂內攝像頭變成了一個必須安裝的設備,電梯轎廂內的監控視頻圖像可以很容易獲取,不需要額外的傳感器,因此選擇以視頻圖像處理為基礎,通過計算機視覺來實現電梯轎廂內人數的檢測。
綜上所述,采用CortexA8處理器作為整個系統的硬件處理器核心[4],通過在ARM-Linux中移植OpenCV作為系統的軟件處理核心,通過改進的隨機Hough算法來作為電梯轎廂內人數檢測系統的核心算法。
系統采用USB攝像頭加高性能的ARM作為整個系統的硬件架構。在ARM_Linux系統上移植OpenCV,通過USB攝像頭采集視頻圖像,結合基于計算機視覺的人數識別算法,在ARM上實現人數檢測。系統總體設計方案如圖1所示,系統由硬件層、操作系統層、應用軟件層三部分組成。

圖1 系統總體設計方案Fig.1 Diagram of total designing scheme
硬件層部分 S5PV210核心板作為人數檢測系統的控制處理中心,整個開發板還包括USB攝像頭模塊、電源模塊、復位及時鐘模塊、串口模塊、以太網卡接口模塊、SD卡存儲及內存存儲模塊;
操作系統層部分 操作系統部分又由以U-Boot為基礎的BootLoader、選擇使用Yaffs的文件系統、Linux內核選擇3.0.8版本的內核;
應用軟件層部分 Opencv結合相應算法編寫應用程序,實現對電梯轎廂內的狀態進行識別。
Bootloader制作 Bootloader用于引導操作系統內核,為系統的啟動進行硬件初始化、分配內存空間和系統配置等工作。Bootloader的移植過程分為四步:①解壓下載的u-boot.tat.bz2文件;②修改編譯腳本、添加S5PV210的平臺信息;③選擇交叉編譯接和編譯需要的文件;④執行編譯,生成u-boot.bin文件。
Linux內核移植 本系統選擇Linux3.0.8作為系統的內核,移植分為三步:①下載Linux-3.0.8-20111118.tar.gz源代碼并解壓安裝;②清除原有配置與中間無效積累的文件;③配置和編譯內核下命令解壓,配置主要包括:選擇Linux開發平臺為ARM、修改Nandflash分區表、修改內核配置文件等。
根文件系統移植 選擇YAFFS作為轎廂人數檢測系統的文件系統,YAFFS具有高效性易移植,且專門針對嵌入式系統設計的文件系統。文件系統植過程分為四步:①創建目錄;②創建設備文件;③加入配置文件;④添加內核模塊。
V4L2是針對UVC免驅USB設備的編程框架[5],主要用來輔助USB攝像頭采集視頻圖像,圖像的采集過程分為打開設備、設置視頻的制式和幀格式、分配緩沖區及物理內存、讀取數據、處理數據、關閉設備等步驟,圖像采集流程如圖2所示。
由于電梯轎廂內特定的應用環境,大量情況下由于電梯轎廂內攝像頭的距離、安裝角度等原因,同時乘客在轎廂內的站立的方向不一致,導致無法完全獲取圖像的人臉信息只能獲取乘客頭部輪廓、頭發等信息。雖然正面人臉檢測技術比較成熟,但是在轎箱內的場景下無法實現人數統計。通過安裝垂直攝像頭俯視對著轎廂內部采集視頻圖像,可以解決多人擁擠遮擋的情況,由于Hough變換的可靠性高、技術成熟,對于噪聲和遮擋都有較好的魯棒性,且每個人的頭部輪廓都是類似于圓形,所以采用基于改進隨機Hough變換算法來進行乘客人數統計,來實現在電梯轎廂內特定的環境下進行準確的乘客人數統計。

圖2 電梯轎廂內圖像采集流程Fig.2 Flow chart of acquiring picture in indoor elevator
Hough變換是一種使用表決原理的參數估計技術[6-7],基本思想是憑借圖像空間和Hough參數空間的點與線之間對偶的關系,該過程在一個參數空間中通過累積器,借助一個符合預先設定的閾值,得到一個符合該特定形狀的集合作為霍夫變換結果。Hough線變換可以有效地避免圖像中一些特征點遮擋現象的干擾,具有很好的容錯性和魯棒性。
直角坐標系中圓一般方程式為

式中:(a,b)為圓心;r為圓的半徑。
如果我們將式(1)中a-b-r看成未知數,x-y看成常量,那么式(1)就是一個圓錐方程。那么在x-y平面上的a-b-r 3個參數就可以確定一個圓錐面,將所有的a-b-r點映射到參數空間中,所有的錐面會相交于點(a0,b0,r0)。 這樣就將檢測圓的問題轉化為了求參數空間中圓錐面交點的問題,參數為x-y的平面轉換為參數a-b-r空間中的示意圖如圖3所示。
如圖3所示,可以看出在x-y的平面上的同一個圓所有的a-b-r點映射到參數為a-b-r的空間中,會形成多個圓錐,圓錐簇必相交于一點(a0,b0,r0),其中(a0,b0)為圓心、r0為圓半徑,這樣就可以獲取圓的信息。但是Hough變換需要用到投票積累技術,如果直接用Hough變換檢測轎廂內乘客人數,那么需要在三維空間進行參數累加,會需要大量的內存空間,假設檢測一張分辨率大小為300*300的圖像,那么就需要消耗300*300*300大小字節的參數空間,導致檢測速度緩慢。所以本文采用一種改進的隨機Hough變換算法來實現轎廂內人數的實時統計。

圖3 Hough圓檢測原理Fig.3 Circle detection principle base on Hough
為了解決傳統Hough變換所固有的缺點,人們提出隨機Hough變換(randomized Hough transform)。在二維空間的方程為

式中:(a,b)為圓心坐標;r為圓的半徑。要確定一個圓就需要確定a、b、r三個未知的參數,需要在圓上取三個點(x1,y1)、(x2,y2)、(x3,y3),將 3 個點帶入式(2):

聯立三個方程就可以求得圓心(a,b)和半徑r。確定圓心坐標(a1,b1)和半徑 r1,在邊緣點中再取第四個點帶入帶入式(2),求出半徑 r4,將r4與r1比較如式(6)所示:

θ1與預設的θ比較,當θ1小于θ時則確定為候選圓,接著選取其他邊緣點,每當θi小于預設的θ時累加器加1,直達累加器的值達到預定的閾值,這確定為一個真圓。當處理復雜圖像中會產生大量的無效積累,當同時需要檢測多個圓時無法準確進行識別,出現相互遮擋的情況無法進行準確的判斷,針對這些問題本文通過結合兩種方法來提高測試精度,首先通過半徑大小和圓心位置的關系來減少無效累計,其次利用圓的特性通過梯度來減少無效積累。
因為我們使用在電梯轎廂特定的工作環境,檢測的目標就是乘客頭部形成的圓的輪廓,針對這一問題在程序中加入了半徑大小和圓心所在位置區域作為限定條件。圓上任意3個點,過這3個點做法線,3條法線必相交于圓心,圓心到任意一點的距離為半徑,根據這一定理,為了減少檢查算法過程中造成的無效累積,可以利用梯度計算來來預先判斷隨意選取的3個點是否在同一個圓上,如果3條法線相交于一點,則判斷為在同一圓上,累加器進行累加,否則這不予計算。
本文人數檢測算法總體流程如圖4所示。

圖4 轎廂內人數檢測總體流程Fig.4 Flow chart of the detection about numble of people in indoor elevator
具體步驟如下:
(1)圖像去噪:因為采集的過程中一定會受到噪聲的影響,本文通過圖像平滑來減少噪聲對采集圖像質量的影響,灰度雙邊濾波,在圖像去噪聲的同時又保存了圖像中大部分細節信息;
(2)運用Canny算法檢測獲取邊緣圖像,并二值化處理;
(3)利用Sobel算子計算圖像中所有邊緣點的梯度并儲存;
(4)隨機取3個邊緣點,根據圓上任意3點的法線相交于圓心,利用3點的梯度做直線;
(5)對所有直線的交點做累加,預先設定閾值,當累加器的值達到預設閾值,判定為候選圓心并計算半徑;
(6)計算候選圓半徑和圓心位置,如果符合預設的最大值rmax、最小值rmin以及圓心位置范圍,確定為真圓;
(7)在圖像中畫出確定的真圓,累積器加1;
(8)檢測結束。
這種算法相對于隨機Hough圓檢測,可以避免大量的無效累計,提高運行時間的同時也提高了檢測的精度。
實驗結果如圖5所示,圖5(a)為截取的視頻的一幀圖像,圖5(b)為對原始采集圖像經過灰度處理的結果,圖5(c)為圖像灰度雙邊濾波結果,圖5(d)為最后通過改進的隨機Hough算法檢測的最終結果,通過圓心的點數獲取的人頭總數,通過與原圖比較證明了算法的準確性。

圖5 人數檢測實驗過程Fig.5 Process about detection of the number of people
本文采用CortexA8處理器作為整個系統的硬件處理器核心,通過在ARM-Linux中移植OpenCV作為系統的軟件處理核心,利用改進的Hough算法,大大降低了處理復雜圖像時會產生的大量無效積累,改善同時檢測多位乘客和出現相互遮擋的情況。實驗結果表明,該算法精度高,運行時間較傳統的RHT算法有較大的提高,魯棒性也有了較大提高。
參考文獻:
[1] 中國產業信息網.2017年中國電梯產量、保有量及行業發展趨勢 [EB/OL].http://www.chyxx.com/industry/201705/520639.html,2017-05-09/2017-10-16.
[2] 李健輝.電梯事故首負責任,行業無法承受之殤[J].中國物業管理,2015(2):8-10.
[3] 郭雯雯.電梯事故分析及監督檢驗對策[J].質量技術監督研究,2006(8):102-104.
[4] 陳偉華,張滔.基于ARM移動機器人視覺系統的設計[J].機電工程技術,2012,41(7):26-29
[5] 潘寧,楊丹,宋恩民.WinCE下基于ARM的USB攝像頭圖像采集[J].微計算機信息,2008,24(21):271-272
[6] 丁幼春,王書貿.基于RHT的多圓檢測改進算法[J].中國農業大學學報,2008,13(4):121-125.
[7] 虞旦,韋巍.改進的隨機圓檢測算法[J].中國圖像圖形學報,2009,14(8):1590-1593.