發布日期:2022-05-18 點擊率:43
為滿足現代社會對于減少坐姿引發的健康問題的需求,文章基于ORB算法,應用圖像直方圖,使用Python編程語言和OpenCV庫提出了一種可實現的坐姿識別方法,并對其進行實驗驗證。
現代社會存在一個巨大的群體,出于工作學習的原因,他們需要維持數個小時的靜坐狀態,在這樣的情況下正確坐姿的重要性就凸顯出來。長期不正確的坐姿對人體的健康將產生巨大的影響。計算機的飛速普及,讓人們將越來越多的工作放在計算機上去完成,各行各業,尤其是程序開發人員、文字工作者,在計算機上的工作時間越來越長,這種情況下不良的坐姿對頸肩腰椎都會產生很大影響,容易導致多種疾病的發生。調查顯示肩部腰部疾病的發病率越來越高,發病年齡越來越小,跟長期坐著工作有關。這些問題都說明,坐姿正確與否對健康有很大影響。在這樣的情況下,有效預防不正確坐姿具有重大實際意義。
1坐姿識別應用前景
要識別坐姿,首先要區分正確坐姿與不正確坐姿。正確的坐姿要求坐下時人身體端正,不左右斜靠,不前后仰躺,頭部略微前傾,頸椎略微彎曲但是彎曲程度不宜過大,腰部保持挺直,身體自然放松,肩部自然下垂。胸部距離書桌邊沿約一拳位置,保持頭、頸、胸的正常生理曲線。如果是使用電腦的情況下,電腦屏幕中間應剛好與下巴呈水平,兩者距離保持約35 cm。如果是閱讀書籍或寫作的情況下正確的坐姿要求書本與眼睛距離在30~35 cm最佳。
不正確的坐姿大致分為6類:頭部傾斜、身體左傾、身體右傾、身體前傾、脊椎前曲、身體后仰[1],這些不正確的坐姿都將對身體健康造成損害,頭部傾斜、脊椎前曲是造成頸椎病,頸椎彎曲的重大原因之一;身體左傾、身體右傾、身體前傾增大腰部負擔,造成腰椎彎曲、腰椎間盤突出、腰部疼痛等多種疾病。在這種情況之下,坐姿識別技術擁有廣泛的應用前景,并有望在預防坐姿不正確引發的各類疾病方面起到重大作用。
坐姿識別技術主要是指通過現代科技力量判斷人們現階段的坐姿情況,從而對不正確的坐姿起到警醒的作用。坐姿識別技術的分類大體與人體動作姿勢的識別方法分類相同。
2坐姿識別技術概述
人體動作姿態的識別方法可分為3類:基于統計的方法、基于模板的方法和基于語法的方法[2]。其中,基于統計的方法主要是隱馬爾可夫模型(Hidden Markov Model,HMM)和動態貝葉斯網絡(Dynamic Bayesian Network,DBN)兩種方法,基于語法的方法最主要基于圖像序列的相關應用。這兩種方法這里我們不予討論。本文研究的基于快速特征點提取和描述(Oriented FAST and Rotated BRIEF,ORB)算法圖像識別技術屬于基于模板的方法。基于模板的姿態識別方法核心思想就是比較實際檢測對象與標準模板對象的相似程度,以此對人體的姿態情況進行判斷。這種方法應用廣泛且可靠性高,在實際應用中有較高價值。
3基于ORB算法的坐姿識別過程
3.1 ORB算法介紹
ORB算法是一種快速特征點提取和描述算法,這個算法分為兩部分,分別是特征點提取和特征點描述。特征提取是由FAST算法發展來的,特征點描述是根據BRIEF特征描述算法改進的。ORB特征是將FAST特征點的檢測方法與BRIEF特征描述子結合起來,并在它們原來的基礎上做了改進與優化。ORB算法最大的特點就是計算速度快。這首先得益于使用FAST檢測特征點,FAST的檢測速度非常快。再次是使用BRIEF算法計算描述子,該描述子特有的2進制串的表現形式不僅節約了存儲空間,而且大大縮短了匹配的時間[3]。
3.2圖像直方圖介紹
直方圖統計是圖像處理中的一個非常重要的操作。圖像直方圖是反映一個圖像像素分布的統計表,其實橫坐標代表了圖像像素的種類,可以是灰度的,也可以是彩色的。縱坐標代表了每一種顏色值在圖像中的像素總數或者占所有像素個數的百分比。圖像是由像素構成,因為反映像素分布的直方圖往往可以作為圖像一個很重要的特征。在實際工程中,圖像直方圖在特征提取、圖像匹配等方面都有很好的應用[4]。
3.3姿態檢測原理
將攝像頭拍攝到的一張圖片與標準坐姿圖片進行對比,通過ORB算法對兩張圖片進行特征點匹配,然后根據匹配的特征點坐標確定特征點匹配的對數,再通過設置閾值的方式來判斷兩張圖片姿態的相似度。同時計算兩張圖片的直方圖,通過繪制灰度值曲線來比較兩張圖的相似度,并且輸出兩張圖的相似度,再通過對兩種方法相似度的綜合判斷,來判斷這兩張圖片中人體姿態。即若是兩張方法判斷出來兩張圖片的相似度都很高,那么可以判定兩張圖片中的人體姿態是一致的,也就是說攝像頭拍到的圖片中的人坐姿是標準的,若是兩種方法判斷的圖片相似度都不高或者其中之一不高,則可以判斷圖片中人的坐姿是不標準的[5]。
3.4方法實現
在實現方法前首先要安裝好Python運行環境并安裝好OpenCV庫,將攝像頭拍攝的人體姿態圖片與標準姿態圖片進行對比,利用ORB算法匹配兩張圖片的特征點,在運用圖像直方圖來比較兩張圖片相似度,若匹配到的特征點對數超過閾值且圖片相似度也很高,則輸出“坐姿標準”[6]。以下為該方法實現用到的主要函數:
(1)實現ORB特征匹配的函數。
def drawMatches(img1,kp1,img2,kp2,matches):
rows1=img1.shape[0]
cols1=img1.shape[1]
rows2=img2.shape[0]
cols2=img2.shape[1]
out=np.zeros((max([rows1,rows2]),cols1+cols2,3),dtype=‘uint8)
#拼接圖像
out[:rows1,:cols1]=np.dstack([img1,img1,img1])
out[:rows2,cols1:]=np.dstack([img2,img2,img2])
for mat in matches:
img1_idx=mat.queryIdx
img2_idx=mat.trainIdx
(x1,y1)=kp1[img1_idx].pt
(x2,y2)=kp2[img2_idx].pt
#繪制匹配點
cv2.circle(out,(int(x1),int(y1)),4,(255,255,0),1)
cv2.circle(out,(int(x2)+cols1,int(y2)),4,(0,255,255),1)
cv2.line(out,(int(x1),int(y1)),(int(x2)+cols1,int(y2)),(255,0,0),1)
return out
(2)實現圖像直方圖相似度統計的函數。
def classify_gray_hist(image1,image2,size=(256,256)):
#先計算直方圖
image1=cv2.resize(image1,size)
image2=cv2.resize(image2,size)
hist1=cv2.calcHist([image1],[0],None,[256],[0.0,255.0])
hist2=cv2.calcHist([image2],[0],None,[256],[0.0,255.0])
#比較以下直方圖
plt.plot(range(256),hist1,r)
plt.plot(range(256),hist2,b)
plt.show()
#計算直方圖重合度
degree=0
for i in range(len(hist1)):
if hist1!=hist2:
degree=degree+(1-abs(hist1-hist2)/max(hist1,hist2))
else:
degree=degree+1
degree=degree/len(hist1)
return degree
#計算單通道的直方圖
def calculate(image1,image2):
hist1=cv2.calcHist(image1,[0],None,[256],range(0.0,255.0))
hist2=cv2.calcHist(image2,[0],None,[256],range(0.0,255.0))
#計算直方圖的重合度
degree=0
for i in range(len(hist1)):
if hist1!=hist2:
degree=degree+(1-abs(hist1-hist2)/max(hist1,hist2))
else:
degree=degree+1
degree=degree/len(hist1)
return degree
#通過得到每個通道的直方圖來計算相似度
def classify_hist_with_split(image1,image2,size=(256,256)):
#將圖像resize后,分離為三個通道,再計算每個通道的相似值
image1=cv2.resize(image1,size)
image2=cv2.resize(image2,size)
sub_image1=cv2.split(image1)
sub_image2=cv2.split(image2)
sub_data=0
for im1,im2 in zip(sub_image1,sub_image2):
sub_data+=calculate(im1,im2)
sub_data=sub_data/3
return sub_data
3.5方法論證
以某個被測人的100張不同姿態照片與該被測人的標準姿態照片進行測試,隨機選取10組識別結果。經過測試可看到10組中識別準確的組別有8組,識別準確率達到80%,因此該方法可正確的識別姿態標準程度[7]。
4結語
本文提出了基于ORB算法進行人體坐姿識別的一種方法,ORB圖像識別算法在人臉識別、坐姿識別領域的應用較少,拓寬了ORB圖像識別算法的應用領域,同時將ORB圖像識別和直方圖統計相結合解決人體坐姿識別相關問題,提高了圖像識別的準確性。同時,對于上班族久坐且坐姿不正確導致的各種健康問題,本文提出了一種有效的預防方法,通過ORB算法對不正確的坐姿進行識別并且發出提醒,從而起到不斷提醒人們關注自己的坐姿,及時改正錯誤坐姿的作用。
[參考文獻]
[1]謝紅莉,謝作揩,葉景,等.我國青少年近視現患率及相關因素分析[J].中華醫學雜志,2010(7):15.
[2]王春陽.基于圖像技術的人體坐姿監測研究[D].西安:西安電子科技大學,2013.
[3]黃國范,李亞.人體動作姿態識別綜述[J].電腦知識與技術,2013(1):133-135.
[4]張宇.基于人臉檢測與膚色統計的坐姿行為監測[J].計算機與網絡,2017(7):73-76.
[5]高強,潘俊.基于ORB的圖像特征提取與匹配研究[J].福建電腦,2019(1):21-22.
[6]范新南,顧亞飛,倪建軍.改進ORB算法在圖像匹配中的應用[J].計算機與現代化,2019(2):1-6,14.
[7]李樂鵬,孫水發,夏沖,等.直方圖均衡技術綜述[J].計算機系統應用,2014(3):1-8.
文章來源: 無線互聯科技許飛鴻 孫林 齊鵬 王鈺琪 胡浩
下一篇: PLC、DCS、FCS三大控
上一篇: PoE布線技術研究及應