999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于方位感知的老人居家行為監測系統及應用①

2022-06-29 07:47:58邱云明甘倬溢汪子涵
計算機系統應用 2022年6期
關鍵詞:檢測系統

邱云明, 甘倬溢, 范 恩, 羅 旭, 劉 晶, 汪子涵

1(深圳大學 物理與光電工程學院, 深圳 518061)

2(紹興文理學院 計算機科學與工程系, 紹興 312000)

隨著人口老齡化程度的不斷加深, 空巢老人居家監護已成為一個亟需解決的熱點問題[1–3]. 越來越多的老年人需要看護, 特別是獨居老人群體. 然而由于現實工作等客觀原因, 子女一般與老人分開居住, 不能及時照看老人, 所以室內安全監測對保障獨居老人健康和安全變得十分重要[4–6]. 此外, 老人的室內活動規律會隨著他們年齡、季節、身體狀態的變化而變化, 他們在室內活動的熱點區域以及駐留時間也會發生相應的變化. 通過上述這些情況可以及時了解老人的生活狀態, 發現異常行為并發出提醒郵件[7–10]. 因此, 利用遠程監測系統獲取監控數據, 一方面可以實時監測老人健康狀態, 另一方面可以幫助分析老人行為習慣, 進一步深入了解老人生理狀態, 從而更好地看護老人.

相對傳統監護方式, 利用遠程監護系統監測獨居老人具有一定的優勢. 利用多傳感器監測已廣泛應用于諸多領域[11–13]. 文獻[14]利用藍牙信號的強弱獲得老人當前位置, 提出一種基于位置信息的老人異常狀態監測方法, 能夠降低穿戴設備的負擔. 文獻[15]從情感感知的角度, 建立老人的居家行為模型, 提出一種基于隨機森林和行為相似性的老人居家行為識別方法.文獻[8]通過射頻識別標簽以及設計內置傳感器, 實時監測老人異常位置, 并發出異常提醒. 在實際設計遠程監護系統的過程中, 既要考慮用戶的實際需求, 也要考慮信息的私密性. 因此, 實際上將攝像頭安裝在室內合適的位置, 根據目標的方位信息, 來分析老人的健康狀態和異常行為, 這樣既能夠保證用戶信息的私密性, 也能夠提供目標可靠的信息, 更好地方便用戶對老人進行遠程看護.

為此, 本文針對獨居老人室內行為監測及異常行為監測, 開發出一款基于方位感知的老人居家行為監測系統, 并應用于老人的實際生活場景. 該系統首先根據老人的室內結構圖, 以舵機為原點, 建立室內方位坐標系, 將室內劃分為不同的興趣區域; 然后通過編寫Python 程序實現攝像頭的自動目標(老人)搜索以及人臉識別、定位功能; 最后根據監測目標的方位信息和時間信息, 分析老人的日常行為, 同時判斷是否存在異常行為, 并發送提醒郵件. 實際應用結果表明, 該監測系統能夠實時監測目標室內行為, 具有靈活性高、實時性強、可靠性好等優點. 此外, 利用Python 語言對攝像頭進行二次開發, 代碼復用性高、可擴展性強、便于操作, 因此具有良好的應用價值.

1 系統功能架構

為了對獨居老人進行監護, 本文開發出一套基于方位感知的獨居老人監測系統. 具體設計思路如下:① 采用云象攝像頭獲取老人室內的方位視頻圖像;② 利用目標跟蹤算法獨居老人(目標)進行檢測與跟蹤; ③ 根據目標方位信息計算目標所處空間位置; ④ 將目標的相關數據保存于本地數據庫.

如圖1 所示, 基于方位感知的老人居家行為檢測系統主要由3 個模塊組成: 圖像數據信息采集處理模塊、數據傳輸模塊、圖形界面顯示和提示模塊. 圖像數據信息采集處理模塊由云象攝像頭、樹莓派處理器等硬件、OpenCV 和MySQL 數據庫組成. 它主要負責采集圖像數據, 并存儲到數據庫. 數據傳輸模塊主要是通過WiFi 網絡傳輸數據. 圖形界面顯示和提示模塊主要由手機端和電腦端VCC 遠程控制顯示構成, 負責發送控制命令和接收提示信息.

圖1 系統功能架構

云攝像頭: 30 萬像素, 俯仰130°, 環視180°.

樹莓派處理器: 含有8 路帶過路流保護的PWM舵機接口, 單總線串口電路, 可直接控制串口舵機兩路可編程LED、清晰展示系統工作狀態; 有兩路可編程的按鈕, 可以配置系統; 預留IIC 的UART 接口, 可以拓展各種傳感器.

MySQL 數據庫模塊: 記錄目標位置的數據表結構圖. 其中, id 表示記錄表的索引, name 表示目標名字,position 表示目標位置, time 表示檢測時間. 通過此表可以記錄目標的位置以及位置改變的時間. 因此, 通過數據庫中目標在不同位置的停留時長來判斷老人的行為以及可能存在的異常情況.

OpenCV 函數庫: 它是開放源代碼計算機視覺庫,主要包括圖像處理、計算機視覺和機器學習等算法,能夠提供C、C++、Java、Python 等接口. 在本文視頻處理及圖像處理功能模塊, 主要是在OpenCV 函數的基礎上實現的.

WiFi 網絡/局域網: 通過WiFi 將終端和攝像頭鏈接在同一局域網, 實現不同終端之間的通信.

圖像化界面顯示和提示模塊: 將攝像頭采集的圖像信息傳送到電腦端, 再通過VCC 遠程控制界面實時顯示.

2 系統功能實現

如圖2 所示, 監測系統的硬件部分主要由樹莓派、攝像頭和舵機組成, 用于實現自動目標搜索功能和人臉定位功能. 受到攝像頭分辨率以及所采用的目標檢測算法性能的限制, 搭建好硬件監測平臺后, 本文采用的主要監測處理流程如下: 當目標距離較遠時, 系統將老人作為移動目標進行檢測, 能夠實時檢測并跟蹤目標, 但此時人臉識別不連續或不穩定; 當目標距離比近時, 系統既能夠實時檢測并跟蹤目標, 同時能夠連續、穩定地識別目標的人臉.

圖2 監測硬件系統

2.1 攝像頭自動搜索模塊

自動搜索功能主要由舵機和攝像頭聯合實現. 舵機用于控制攝像頭上下和左右旋轉, 攝像頭用于采集圖像數據. 當系統啟動時, 攝像頭首先進入自動搜索模式, 通過水平掃描, 捕捉室內目標及位置數據. 當沒有捕捉到目標數據時, 控制舵機向右旋轉5°, 直至最大角度, 再向相反方向開始旋轉. 在自動搜索過程中, 對攝像頭上下位置進行判斷, 如果與定義的水平位置存在差值, 那么就緩慢上下轉動攝像頭, 直至修正為水平位置. 主要實現代碼如代碼1.

代碼1. 攝像頭自動搜索if track != 0 and max_area == 0:#當開啟追蹤功能但是沒有檢測的人臉的時候#攝像頭水平復原函數

if servo1_face_track<1230: servo1_face_track=servo1_face_track+10 elif servo1_face_track>1270: servo1_face_track=servo1_face_track–10 else: servo1_face_track=1250 #攝像頭沒有檢測到人臉時的循環掃描實現if tmp2>10 and tmp1<2500: #當攝像頭從初始角開始轉時 servo2_face_track=tmp1 tmp1=tmp1+10 time.sleep(0.01)if action_finish_face: dis_ok_face = True elif tmp1>=2500 and tmp2>10: #控制攝像頭回轉 servo2_face_track=tmp2 tmp=tmp2–10 time.sleep(0.01)if action_finish_face: dis_ok_face = True else: tmp1=int(0) tmp2=int(2500)?

具體地, 在OpenCV 中: 首先, 采用函數cv2.resize()將每幀圖像的功能模塊設置成大小為320×240, 利用函數cv2.cvtColor()對圖像進行灰度處理, 并使用函數cv2.GaussianBlur()對圖像高斯模糊化, 從而消除高斯噪聲; 然后, 比較兩幀圖像, 調用函數cv2.accumulate Weighted()檢測運動目標, 并采用cv2.absdiff()記錄差值; 接著, 利用函數cv2.threshold()將灰度圖二值化, 使用函數cv2.dilate() 對圖像膨脹處理, 通過函數cv2.drawContours()在繪制輪廓, 同時遍歷輪廓; 最后, 調用函數cv2.contourArea()計算目標輪廓面積, 并根據門限值進行判斷. 由于人體目標相對較大, 門限值應該設置較大, 以便過濾除較小目標的影響, 調用cv2.bounding Rect()計算目標輪廓的4 個坐標值, 再利用cv2.rectangle()對輪廓邊框進行標注.

2.2 人臉定位模塊

當搜索到目標后, 需要對目標人臉進行監測和定位. 當檢測到人臉面部時, 將該區域標記成一個框, 分別用x1、x2、y1、y2 這4 個值, 標記該框的4 個角,然后根據公式計算人臉的坐標:

最后根據兩個坐標與定義好的圖像中心坐標進行比較:

當其差值較大時, 即可以認為人臉不在圖像中間部位, 此時控制舵機轉動, 保證人臉位于圖像中心位置,不超出圖像范圍. 主要實現代碼如代碼2.

代碼2. 人臉定位if track and max_area != 0:#當開啟人臉追蹤功能并且檢測到人臉時, 控制舵機追蹤 center_x, center_y = (max_face[0]+int((max_face[2]–max_face[0]) / 2),max_face[1]+int((max_face[3]–max_face[1]) /2)) #最大的人臉的坐標 #上下pid 刷新 servo1_pid3.SetPoint = center_y if abs(img_center_y–center_y)<20 else img_center_y #離中心一定范圍內的停止pid 操作 servo1_pid3.update(center_y) tmp = int(servo1_face_track–servo1_pid3.output) tmp = tmp if tmp>500 else 500 servo1_face_track = tmp if tmp<1950 else 1950 #舵機角度限位 #左右pid 刷新 servo2_pid4.SetPoint = center_x if abs(img_center_x–center_x)<40 else img_center_x #離中心一定范圍內的停止pid 操作 servo2_pid4.update(2 * img_center_x–center_x) tmp = int(servo2_face_track+servo2_pid4.output) tmp = tmp if tmp>500 else 500 servo2_face_track = tmp if tmp<2500 else 2500 #舵機角度限位if action_finish_face: #圖像返回函數 dis_ok_face = True

在OpenCV 中, 主要利用Haar 特征檢測人臉, 調用face_recognition()函數進行識別. 這里, 用于描述人臉的特征主要分為4 類: 邊緣特征、線性特征、中心特征和對角線特征. 在具體計算特征值時, 可以通過改變各類模板的大小和在子窗口中的位置, 得到不同的矩形特征, 然后利用這些特征計算子窗口中所有的特征值.

具體地, 當攝像頭采集到每幀圖像后, 首先采用函數cv2.resize()將圖像大小設置為160×120, 并利用函數cv2.dnn.blobFromImage()對圖像進行預處理, 包括減均值、比例縮放、裁剪、交換通道等; 然后, 利用函數net.setInput()輸入圖像, 通過net.forward()函數引入算法模型計算人臉預測結果, 并設置人臉檢測的可信度閾值. 當可行度大于預設值時, 記錄人臉的坐標, 求出當前人臉面積, 并與之前人臉面積進行比較, 判斷當前是否為最大人臉, 如果是就更新人臉坐標. 最后, 對人臉坐標進行640×480 的坐標轉換, 使其能夠匹配攝像頭, 并調用函數cv2.rectangle()對人臉進行方框標注.

3 人臉檢測算法實現

3.1 人臉的數據采集

第1 步采集圖像.

① 調用攝像頭: cv2.VideoCapture('http://127.0.0.1:8080/?action=stream?dummy=param.mjpg'). 其中,cv2.VideoCapture(0)表示創建一個cap 對象, 參數0 表示打開筆記本內置的攝像頭. 如果外接其他攝像頭, 則調整為相應的參數值.

② 讀取攝像頭采集的圖像數據: 調用cap.read(),返回值ret 為布爾值, Ture 表示讀取成功, False 表示讀取失敗; frame 表示返回一幀圖像.

③ 顯示采集圖像: 在樹莓派開發系統上現實攝像頭采集的圖像.

第2 步人臉檢測.

① 導入模塊. cv2 為opencv, 用于調用攝像頭以及并進行相應處理. face_recognition() 用于人臉識別,os 用于對人臉進行標注.

② 人臉分類器功能模塊. 通過調用dlib 庫中dlib.get_frontal_face_detector()可以調用人臉分類器, 計算圖像中人臉的最大box 面積, 然后根據人臉檢測模塊,獲取人臉的可信度. 如果可信度達到標準, 則在圖像上標注人臉框.

3.2 方位角信息記錄

3.2.1 記錄時段信息及位置

安裝好攝像頭后, 設置舵機度角范圍所匹配的區域. 當攝像頭檢測到人臉面部信息時, 記錄舵機的方位信息、對應區域以及當前時間.

當目標消失在某區域時, 同事沒有在其他指定區域出現, 不斷讀取當前時間, 并與進入此區域時間進行差值比較. 如果時差大于設定值, 則可以判斷異常, 同時發送郵件信息提醒接收人, 并記錄當前郵件發送的時間.

若在非設定區域檢測到人臉信息, 可以認為目標已經離開檢測區域, 此時將進入此區域的時間清零. 主要代碼如代碼3.

代碼3. 記錄時段信息及位置if track and max_area != 0: #當開啟人臉追蹤功能并且檢測到人臉時, 控制舵機追蹤if tmp>600 and tmp<1000: #假設衛生間在攝像頭的600–1 000 方位 time1=int(time.time())#記錄下進入衛生間的時間else:

time1=0 # 進入衛生間的時間清零 time3=0 # 發送郵件時間清零if track != 0 and max_area == 0: time2=int(time.time()) #報警功能的實現if time1 != 0 and time3==0 and time2–time1>1200: mial_delivery() # 調用發送郵件的函數 time3 = time2 # 記錄下發送郵件的時間elif time1!=0 and time3 != 0 and time2–time3>600: mial_delivery()#調用發送郵件的函數 time3=time2?

3.2.2 發送數據模塊

攝像頭發送數據采用SMTP 服務, 可以利用Python的兩個包來發送郵件, 即smtplib 和email. Python 中email 模塊里包含很多實用的郵件格式設置函數, 可以用于創建郵件“包裹”. 利用MIMEText 對象, 可以為底層的 MIME 協議創建一封空郵件, 最后通過高層SMTP協議發送出去. MIMEText 對象msg 包括收發郵箱的地址、正文和主題. Python 通過它就可以創建一封格式正確的郵件. smtplib 模塊用來設置服務器連接的相關信息. 下面通過QQ 郵箱發送郵件.

代碼4. 發送數據模塊host_server = 'smtp.qq.com' #qq 郵箱smtp 服務器sender_qq = 'xxxxxxxx@qq.com' #發件人郵箱pwd = '你的授權碼'receiver = ['xxxxxxxx@qq.com']mail_title = 'Python 自動發送的郵件' #郵件標題mail_content = "python 登錄QQ 郵箱發送郵件測試—zep"msg = MIMEMultipart()msg["Subject"] = Header(mail_title, 'utf-8')msg["From"] = sender_qq msg['To'] = ";".join(receiver)msg.attach(MIMEText(mail_content, 'plain', 'utf-8'))smtp = SMTP_SSL(host_server) #ssl 登錄smtp.login(sender_qq, pwd)smtp.sendmail(sender_qq, receiver, msg.as_string())smtp.quit()

4 實際場景應用及分析

實際場景為一室一廳的獨立老年公寓, 如圖3 所示, 將公寓劃分為3 個區域, 分別標識為A、B、C, 將攝像頭和檢測算法獲得老人在一天內的歷史活動數據,將活動時間高的地方稱為熱點區域, 將目標在熱點區域之間的轉移用于描述目標在日常生活中的行為變化.在實際檢測過程中, 首先需要將運動軌跡數據在熱點監控區域進行整合, 計算目標在這些監控區域的進入時間及駐留時長, 然后通過Python 對記錄數據進行處理, 獲取目標活動軌跡的中位數, 如表1 所示.

圖3 室內活動場景

表1 時間分布表

實驗中, 所采用舵機的相關參數為: 型號LFD-01,工作電壓6 V, 水平檢測范圍0–180°, 垂直監測范圍0–130°, 初始位置為0°; 云攝像頭的相關參數為30w 像素; 樹莓派通過額外的Poe 供電, 用于處理數據信息;樹莓派擴展板可直接控制串口舵機兩路可編程按鈕,方便配置系統.

圖4 和圖5 給出了室內目標的檢測結果. 圖4 給出室內近景對于目標近景中人臉和人體的檢測結果.圖5 給出室內遠景中人體的檢測結果. 在室內的行為異常的情況, 主要根據目標在熱點區域的駐留時長進行判斷. 若超出統計給定的時長閾值, 將進行警報提示.因此, 利用監測系統獲取目標在熱點區域的駐留時間,可以得到目標在識別區的駐留時間.

圖4 近景人臉和人體檢測結果

圖5 遠景人體檢測結果

具體地, 如圖4 所示, 當目標距離攝像頭較近時(1.5 m 范圍內), 系統可以同時準確地檢測到目標和人臉. 如圖5 所示, 當目標距離攝像頭較遠時(1.5 m 到7.0 m 范圍內), 系統依然能夠準確地檢測到目標, 但是由于攝像頭性能的限制, 此時人臉圖像變得十分模糊,檢測不到人臉. 當目標距離太遠時(超過7.0 m), 系統對目標檢測的準確性下降, 檢測性能不是很穩定. 因此,從實驗結果看, 系統能夠滿足常見的老人居住環境.

考慮到攝像頭、舵機的性能以及樹莓派數據處理能力的限制, 為了保證監測的實時性, 在具體實驗過程中, 設置舵機每0.01 s 轉動5°. 當系統未檢測到目標時,系統繼續水平轉動搜索目標; 當系統檢測到目標時, 系統進入跟蹤模式, 根據目標的位置進行轉動. 一般地,由于針對的目標是老人, 當目標相對舵機移動角速度小于上述5°/0.01 s, 系統都能夠實時檢測和跟蹤目標.而且當目標距離攝像頭2 m 范圍內, 還能夠同時檢測到人臉. 因此, 在系統具體設計過程中, 需要充分考慮到硬件平臺中樹莓派的數據處理能力以及舵機、攝像頭的性能, 并結合室內居住環境的相關參數, 才能設計出滿足實際要求的實時監測系統.

此外, 通過分析駐留時長, 可以統計目標的主要活動區域, 從側面反映該老人的生活規律. 如圖6 所示,當出現超過某個特定閾值的時間值, 系統會自動判定為發生特殊情況, 同時發送警示郵件給相關用戶, 提醒用戶及時查看監控視頻, 觀察老人的行為狀態.

圖6 預警郵件

5 結語

本文針對獨居老人室內行為及異常行為檢測, 開發出一款基于方位感知的老人居家行為監測系統. 該系統首先通過將室內劃分為不同興趣區域, 利用WiFi連接樹莓派、攝像頭、舵機, 采用Python 程序實現攝像頭自動目標搜索以及人臉識別功能; 然后根據人臉識別結果、目標熱點區域駐留時間等信息分析老人室內行為, 同時判斷是否存在異常行為, 并發送提醒郵件.實測結果表明, 該監測系統能夠實時采集目標的視頻和方位信息, 準確分析目標行為狀態, 對目標異常行為發送郵件預警, 有利于監測老人居家安全, 具有良好的應用前景.

增強出版

本文附有基于方位感知的老人居家行為監測系統演示視頻,可點擊視頻鏈接或手機掃描二維碼觀看.

猜你喜歡
檢測系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
WJ-700無人機系統
“幾何圖形”檢測題
“角”檢測題
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
主站蜘蛛池模板: 久久久久久久久18禁秘| 亚洲第一成网站| 日韩久久精品无码aV| 香蕉伊思人视频| 丁香五月亚洲综合在线| 久久中文字幕不卡一二区| 在线一级毛片| 欧美一区二区三区香蕉视| av一区二区人妻无码| 免费啪啪网址| 亚洲中文字幕在线一区播放| 精品欧美视频| 99热国产这里只有精品无卡顿"| 亚洲成网777777国产精品| 亚洲a级在线观看| 伊人久久青草青青综合| 成人蜜桃网| 久久公开视频| 一级香蕉人体视频| 中文字幕有乳无码| 成人另类稀缺在线观看| 欧洲极品无码一区二区三区| 夜色爽爽影院18禁妓女影院| 无码在线激情片| 久久婷婷五月综合97色| 伊人五月丁香综合AⅤ| 18禁不卡免费网站| 久久a级片| 欧美精品亚洲精品日韩专区| 五月婷婷导航| 色偷偷一区二区三区| 亚洲第一视频网| 国产精品55夜色66夜色| 日韩国产一区二区三区无码| 97se综合| 亚洲欧洲AV一区二区三区| 激情六月丁香婷婷四房播| 欧美高清日韩| 亚洲无码视频图片| 国产黄在线免费观看| 无码丝袜人妻| 中文字幕在线观看日本| 国内黄色精品| 欧美国产日韩一区二区三区精品影视| 99re热精品视频国产免费| 欧美日本不卡| 激情综合婷婷丁香五月尤物| 在线精品自拍| 国产精品开放后亚洲| 日本黄色a视频| AV不卡国产在线观看| 国产麻豆aⅴ精品无码| 亚洲欧洲国产成人综合不卡| 亚洲高清在线播放| 99精品免费欧美成人小视频| 亚洲第一在线播放| 国产综合另类小说色区色噜噜 | 无码'专区第一页| 日本中文字幕久久网站| 第一区免费在线观看| 精品国产网| 91久久偷偷做嫩草影院免费看| 精品国产一区91在线| 欧美亚洲欧美| 亚洲精品色AV无码看| 久久久久久久久18禁秘| 五月婷婷综合色| 欧美成人精品一级在线观看| 国产在线观看第二页| 97成人在线观看| 伊人久久大香线蕉成人综合网| 亚洲国产亚洲综合在线尤物| 九色综合伊人久久富二代| 亚洲欧美日韩精品专区| 国产乱人免费视频| 88av在线| 影音先锋丝袜制服| 亚洲第一福利视频导航| 国产美女主播一级成人毛片| 色天堂无毒不卡| 日本亚洲欧美在线| 国产高清在线观看|