王鵬 王慧 孔凡寧 姚剛



摘要:當空巢老人獨自居住發生摔倒事件時,如果長時間沒有得到救助的話,傷害比較嚴重。為了快速獲得老人摔倒信息,使其得到及時救助,設計和實現了結合家居照明燈并基于現場可編程門陣列(FPGA)的視頻監控摔倒檢測報警系統。通過幀間差分法提取出運動目標,結合人體高寬比和有效面積比2個條件進行摔倒判定,最后用人體中心變化對判定結果進行修正。當摔倒發生時觸發聲光報警定位老人摔倒的房間,并結合通用分組無線業務(GPRS)通信網絡通知老人親屬及社區服務站,及時展開救助。經試驗表明,系統幀處理速度為24.86fps,平均報警響應時間為0.51s,滿足實時性要求;摔倒檢測準確率達到96%,誤報率低。
關鍵詞:視頻監控;摔倒檢測;現場可編程門陣列;幀間差分法;通用分組無線業務
DoI:10.15938/j.eme.2019.08.015
中圖分類號:TN919.85文獻標志碼:A 文章編號:1007-449X(2019)08-0122-07
0引言
隨著中國老齡化趨勢的加劇,老年人的安全問題受到社會各界的廣泛關注,摔倒對老年人的安全造成了極大的威脅。尤其是對于子女均在外工作的空巢老人,摔倒發生后常導致失去意識、休克或者死亡等嚴重后果。因此,及時發現并救助摔倒的老人可以大大降低傷殘率和死亡率。
摔倒檢測技術大致可以分為3類:基于可穿戴式傳感器的摔倒檢測技術;基于環境檢測的摔倒檢測技術;基于視頻監控的摔倒檢測技術。第一類需要老年人隨身佩戴傳感器,老人容易遺忘且易產生不適感;第二類需要在房間內安裝復雜的檢測設備,實現困難;第三類是在房間內安裝攝像頭,通過視頻監控實現摔倒檢測,安裝方便,容易實現,相比前兩類更適宜于對老年人的摔倒進行檢測,是目前主流的摔倒檢測技術。
對于基于視頻監控的摔倒檢測技術,國內外眾多學者都進行了大量的研究。文獻[6]中白云飛等人提出了基于嵌入式視頻監控的摔倒檢測系統,通過將采集到的視頻信號壓縮傳輸至Pc端,進行視頻顯示和姿態檢測,盡管獲得了較高的摔倒檢測準確率,卻沒有考慮到保護被監測人的隱私,并且系統存在穩定性差、易死機等不足。文獻[7]中Rougier等人提出了標定人體最小外接矩形框并通過人體高寬比來判斷人體是否摔倒的算法,但無法準確地把老人的日常健身動作(壓腿、俯臥撐等)和真實的摔倒事件區分開,誤報率高。
近年來,隨著圖像處理技術和大規模集成電路的發展,FPGA(field programmable gate array)的可編程性和強大的處理能力使其可以靈活、高效地應用于各種領域。本文提出了一種基于FPGA的視頻監控摔倒檢測報警系統,穩定性好,處理速度快,誤報率低。
1系統組成
本文采用FPGA作為摔倒檢測報警系統的核心處理器件,系統組成如圖1所示,包含CMOS數字圖像傳感器、FPGA摔倒檢測核心平臺、GPRS(generalpacket radio service)通信模塊及聲光報警模塊。
首先通過CMOS數字圖像傳感器對老人的日常生活視頻進行采集,然后將獲得的視頻數據傳送到FPGA摔倒檢測核心平臺進行圖像處理和摔倒判定,檢測到老人摔倒后立即通過GPRS通信模塊和聲光報警模塊完成摔倒事件的通知及報警。GPRS通信模塊將摔倒事件的信息及時向老人親屬與社區服務站發送,通知醫療人員對老人進行及時救助。聲光報警模塊用于定位老人發生摔倒的房間,使醫護救援人員能迅速地對老人摔倒位置定位,避免老人因救助延誤導致的休克、失去意識等嚴重后果。
2摔倒檢測算法設計
實現摔倒檢測的前提先要對運動目標進行提取和標記,再對提取到的運動目標進行摔倒特征判定。通過對現有的摔倒檢測算法的分析與研究,本文提出了一種改進的自動摔倒檢測算法。本文提出的摔倒檢測算法主要包含2個步驟:目標檢測和摔倒判定,具體流程如圖2所示。
2.1目標檢測
運動目標檢測算法主要有背景減除法、幀問差分法和光流法3種。背景減除法是利用當前圖像和背景模型圖像進行差分來檢測運動目標,背景模型的選取比較重要,容易受到外界光線的干擾。幀問差分法主要思想是將圖像序列中的連續兩幀或三幀進行差分來提取出運動目標,這種方法的原理簡單,能快速地實現運動目標檢測,且對環境變化不敏感,受外界噪聲干擾較小。光流法是通過將每幀圖像中的每個像素點附于一個速度矢量,形成一個光流場從而動態分析出運動目標,此種方法計算復雜、非常耗時并且抗噪聲的能力差。
通過比較分析上述3種算法的實現難度和實時性,可以得到:相比較于光流法,幀問差分法更適合應用在實時性要求高的場合;相比較于背景減除法,幀問差分法計算簡單,處理速度快,更利于硬件實現,適用于視頻監控中的實時目標檢測。因此本文選取幀問差分法實現運動目標的檢測和提取。
2.2摔倒判定
當老人正常行走時,人體高度比寬度大得多,如果摔倒,則人體寬度比高度大得多;當老人進行壓腿、彎腰等健身運動時,人體有效面積會比其他情況小。針對以上摔倒特征分析,本文在提取出人體目標后,標定出人體目標的最小外接矩形框,如圖4所示,通過式(2)、式(3)進行人體高寬比和有效面積比的摔倒判定。
式(2)中日為外接矩形框的高(即人體的高度),W為外接矩形框的寬(即人體的寬度),T1為人體高寬比的判斷閾值;式(3)中s1為人體目標的實際面積,S2為外接矩形框的面積,T2為有效面積比的判斷閾值。根據式(2)和式(3)可以判定圖4(a)、圖4(b)為正常行為,圖4(c)為摔倒。
由于老人在進行下蹲、俯臥撐等動作時,如圖5所示,僅通過人體高寬比與有效面積比2個判決條件進行摔倒判定,容易導致誤報警。為了提高系統的準確率,本文引入人體中心變化作為修正條件對摔倒進行判斷。因為老人在下蹲、俯臥撐或正常的行走時,動作較緩慢,中心變化不明顯,而摔倒是一種劇烈與突變的動作,人發生摔倒時,其人體中心會突然降低,中心變化會隨之驟變。
因此在提取出運動目標后,使用最小外接矩形框對其標記,如圖5所示,計算人體中心位置O(X,Y),),利用式(4)修正摔倒判定結果。
首先比較相鄰的兩幀圖像人體中心坐標值OK(X,Y),)和OK-1(X,y)的縱坐標值,再計算兩點的歐氏距離與閾值T3比較,若第K幀圖像的人體中心點縱坐標值比第K-1幀圖像低,且兩幅圖像的人體中心點之間的歐式距離大于閾值T3時,則判定為摔倒,反之判定為非摔倒。
通過式(4)可以修正圖5中2種行為的判定結果為正常運動,因此系統結合式(2)、式(3)、式(4)3個條件進行摔倒判定,有效降低了誤報率,算法實現簡單,并且提高了整個摔倒報警系統的檢測精度。
3系統的FPGA實現
FPGA具有強大的并行處理能力,采取流水線進行設計,能極大提高系統的處理速率,尤其對于數據量巨大的圖像,更能發揮其快速處理數據的能力。另外FPGA不需要操作系統嵌入,使用數字邏輯即可實現比較復雜的算法,這也能解決系統穩定性方面的問題。如圖6所示,本文以FPGA作為核心處理器搭建了視頻處理平臺,并使用Verilog HDL對FPGA內部邏輯功能進行配置。
FPGA內部各模塊的功能描述如下:
1)T2C配置模塊。
系統上電后,FPGA首先要通過T2C總線對CMOS圖像傳感器的內部寄存器進行配置,包括分辨率、內部時鐘、亮度、色差等。
2)視頻流采集模塊。
FPGA將CMOS圖像傳感器配置完畢后開始進行視頻流的采集,采集的流程如圖7所示。
3)RGB格式轉灰度圖像。
幀問差分法的原理是將相鄰兩幀圖像中像素點的灰度值相減,所以需要將采集到的彩色視頻流圖像進行顏色空間的轉換,即從RGB轉為YCbCr,在ITU-RBT.601標準中給出了RGB與YCbCr的轉換關系,具體公式為:
4)中值濾波。
無論是直接采集到的灰度圖像,還是由彩色圖像間接轉換的灰度圖像,或多或少都會存在一定的噪聲,而噪聲是影響圖像質量存的主要因素。對圖像中值濾波可以很好地抑制孤立點噪聲,同時能較好地保護圖像的邊界特性,圖像也不會產生顯著的模糊,比較適用于本文幀問差分法的處理。本文采用3×3像素陣列實現中值濾波,其中快速排序算法實現過程如圖8所示。
3×3像素陣列快速排序的步驟如下:
a)首先將3×3像素陣每一行的3個像素排序;
b)接著對3行像素取得的排序結果進行處理,提取每行中3個最大像素值中的最小值,每行中3個最小像素值中的最大值,以及3個中值像素的中值;
c)最后將步驟b)得到的3個像素值再排序后取中值,即得出3×3像素陣中9個像素的中值。
5)4端口SDRAM控制模塊。
基于數字視頻監控的圖像采集與處理系統中,需要對實時高速的數據緩沖處理。由于本文采用幀問差分法實現人體運動目標的提取,需要對相鄰的兩幀圖像完成差分操作,為此設計了基于FPGA的4端口SDRAM控制模塊(2個輸入端口和2個輸出端口),通過乒乓操作在單片SDRAM中實現相鄰兩幀圖像數據操作,完成圖像數據在不同Bank的緩存。讀出兩幀圖像數據進行差分處理,具體實現流程如圖9所示。
6)幀差處理與目標提取。
對相鄰兩幀圖像完成讀取和差分,并將差分得到圖像中的像素值與預設的像素閾值相比較,大于預設閾值的像素點為運動目標并賦值為1,否則賦值0。運用圖像腐蝕和膨脹等形態學處理去除小的噪聲點,得到人體目標的二值圖。
7)摔倒判定。
得到人體目標的二值圖像后,再對每幀二值圖像做行掃描,選出像素值為1的像素點,計算這些像素點中最小和最大的橫坐標值Xmin和Xmax,同樣地計算這些像素點中最小和最大的縱坐標值Ymin和Ymax,使用(Xmin,Ymin)、(Xmax,Ymin)、(Xmin,Ymax)和(Xmax,Ymax)這4個坐標點標定人體的最小外接矩形框,標定流程如圖10所示。
8)報警控制模塊。
當檢測到摔倒事件的發生即滿足上述3個摔倒判定條件后,FPGA立即產生報警信號,觸發蜂鳴器與LED照明燈進行聲光報警;同時發送AT指令到GPRS通信模塊,向老人親屬及社區服務站的手機號碼發送摔倒短信。
4實驗結果及分析
本實驗中CMOS圖像傳感器選用OmniVision公司的OV7725Sensor;FPGA采用Altera公司Cy-clone IV系列的EP4CEl5F17C8N芯片;GPRS模塊選用SIM900a芯片。通過Verilog HDL實現FPGA內部邏輯功能,使用2012a版本的MATLAB軟件平臺對同樣的摔倒檢測算法進行仿真和驗證,搭載MATLAB軟件的計算機CPU型號為Intel i3-4170,主頻為3.70GHz,內存大小為4G。
4.1系統準確率分析
由于本實驗對于老人存在很高的危險,所以選擇青壯年代替老人進行實驗。圖11為實驗視頻流中的圖像,分別是在不同的角度,以不同的姿態進行的摔倒實驗,同時也模仿老人的日常健身動作,并進行摔倒誤報率的對比測試。經大量實驗得到:閾值T選10,T1選1.18,T2選0.46,T3選6.5系統性能最佳。
當僅用人體高寬比和有效面積比2個條件判定摔倒時,圖11中的12幀圖像均被判定為摔倒,其中圖11(a)、11(b)、11(c)、11(d)、11(e)、11(f)這六幀分別對應壓腿、踢腿、擴胸、彎腰、俯臥撐和扭秧歌的日常健身動作,存在較大的誤判。增加人體中心變化率對判定結果進行修正后,由于圖11(a)、11(b)、11(c)、11(d)、11(e)、11(f)的中心變化均小于閾值6.5,此時判定結果為非摔倒,得知通過中心變化能夠有效地減少系統誤判。同時分別在FP-GA硬件平臺與MATLAB軟件平臺進行摔倒準確率測試,摔倒檢測的準確率對比如表1所示。
表1中TPR為摔倒檢測準確率,FNR為摔倒漏檢率,TNR為正常活動檢測準確率,FPR為摔倒誤判率。1)TPR=正確檢測出摔倒的次數/實際摔倒總次數;2)FNR=沒有檢測出摔倒的次數/實際摔倒總次數;3)TNR=檢測為正常活動的次數/正常活動總次數;4)FPR=誤判為摔倒的次數/正常活動總次數。
由表1得出使用FPGA平臺摔倒檢測的準確率比MATLAB平臺低1%,造成該結果的原因應該是由于FPGA的處理速度過快,導致一部分的圖像幀的缺失。
4.2系統實時性分析
該實驗使用的CMOS數字圖像傳感器采集到的圖像分辨率為640×480,輸出的視頻幀率為25fps。FPGA硬件平臺的幀率通過測試系統的算法處理完一幀圖像所需要的時鐘周期數,從而計算出處理后的視頻幀速率,同時使用相同的視頻流在MATLAB軟件平臺上測試系統的算法處理圖像的幀速率。表2給出了本文算法分別在FPGA和MATLAB 2個實驗平臺上得到的幀處理速率,表3為該系統的報警響應時間。
表2給出了本文設計的系統進行視頻流摔倒檢測時的幀處理速率為24.86fps,與CMOS數字圖像傳感器輸出的視頻流幀率基本保持一致,大約為MATLAB軟件平臺處理速度的2.4倍。表3中得到平均聲光報警響應時間為0.51s,實時性滿足要求;GPRS短信的平均發送時間為4.97s,會受到手機網絡信號或者運營商的影響。實驗結果證明了基于FPGA的摔倒檢測報警系統的圖像處理速度快,摔倒報警響應及時,有很好的實時性。
5結論
本文設計了一種基于FPGA的視頻監控摔倒檢測報警系統,在FPGA平臺實現圖像處理與摔倒監測,通過Verilog HDL配置FPGA內部邏輯功能,實現摔倒檢測并自動報警。實驗結果表明,該系統穩定性好,誤報率低。同時將摔倒檢測系統應用于家用照明燈,在不增加額外設備的前提下,能夠完成摔倒后室內燈光閃爍、蜂鳴器發聲與摔倒短信發送的主動報警,構建了一個成本低、功耗小、誤報低且滿足實時性要求的摔倒檢測報警系統,符合智能家居市場的潮流趨勢。