當(dāng)前位置: 首頁 > 工業(yè)電氣產(chǎn)品 > 端子與連接器 > 線路板連接器 > FFC連接器
發(fā)布日期:2022-05-18 點擊率:45
為滿足現(xiàn)代社會對于減少坐姿引發(fā)的健康問題的需求,文章基于ORB算法,應(yīng)用圖像直方圖,使用Python編程語言和OpenCV庫提出了一種可實現(xiàn)的坐姿識別方法,并對其進(jìn)行實驗驗證。
現(xiàn)代社會存在一個巨大的群體,出于工作學(xué)習(xí)的原因,他們需要維持?jǐn)?shù)個小時的靜坐狀態(tài),在這樣的情況下正確坐姿的重要性就凸顯出來。長期不正確的坐姿對人體的健康將產(chǎn)生巨大的影響。計算機(jī)的飛速普及,讓人們將越來越多的工作放在計算機(jī)上去完成,各行各業(yè),尤其是程序開發(fā)人員、文字工作者,在計算機(jī)上的工作時間越來越長,這種情況下不良的坐姿對頸肩腰椎都會產(chǎn)生很大影響,容易導(dǎo)致多種疾病的發(fā)生。調(diào)查顯示肩部腰部疾病的發(fā)病率越來越高,發(fā)病年齡越來越小,跟長期坐著工作有關(guān)。這些問題都說明,坐姿正確與否對健康有很大影響。在這樣的情況下,有效預(yù)防不正確坐姿具有重大實際意義。
1坐姿識別應(yīng)用前景
要識別坐姿,首先要區(qū)分正確坐姿與不正確坐姿。正確的坐姿要求坐下時人身體端正,不左右斜靠,不前后仰躺,頭部略微前傾,頸椎略微彎曲但是彎曲程度不宜過大,腰部保持挺直,身體自然放松,肩部自然下垂。胸部距離書桌邊沿約一拳位置,保持頭、頸、胸的正常生理曲線。如果是使用電腦的情況下,電腦屏幕中間應(yīng)剛好與下巴呈水平,兩者距離保持約35 cm。如果是閱讀書籍或?qū)懽鞯那闆r下正確的坐姿要求書本與眼睛距離在30~35 cm最佳。
不正確的坐姿大致分為6類:頭部傾斜、身體左傾、身體右傾、身體前傾、脊椎前曲、身體后仰[1],這些不正確的坐姿都將對身體健康造成損害,頭部傾斜、脊椎前曲是造成頸椎病,頸椎彎曲的重大原因之一;身體左傾、身體右傾、身體前傾增大腰部負(fù)擔(dān),造成腰椎彎曲、腰椎間盤突出、腰部疼痛等多種疾病。在這種情況之下,坐姿識別技術(shù)擁有廣泛的應(yīng)用前景,并有望在預(yù)防坐姿不正確引發(fā)的各類疾病方面起到重大作用。
坐姿識別技術(shù)主要是指通過現(xiàn)代科技力量判斷人們現(xiàn)階段的坐姿情況,從而對不正確的坐姿起到警醒的作用。坐姿識別技術(shù)的分類大體與人體動作姿勢的識別方法分類相同。
2坐姿識別技術(shù)概述
人體動作姿態(tài)的識別方法可分為3類:基于統(tǒng)計的方法、基于模板的方法和基于語法的方法[2]。其中,基于統(tǒng)計的方法主要是隱馬爾可夫模型(Hidden Markov Model,HMM)和動態(tài)貝葉斯網(wǎng)絡(luò)(Dynamic Bayesian Network,DBN)兩種方法,基于語法的方法最主要基于圖像序列的相關(guān)應(yīng)用。這兩種方法這里我們不予討論。本文研究的基于快速特征點提取和描述(Oriented FAST and Rotated BRIEF,ORB)算法圖像識別技術(shù)屬于基于模板的方法。基于模板的姿態(tài)識別方法核心思想就是比較實際檢測對象與標(biāo)準(zhǔn)模板對象的相似程度,以此對人體的姿態(tài)情況進(jìn)行判斷。這種方法應(yīng)用廣泛且可靠性高,在實際應(yīng)用中有較高價值。
3基于ORB算法的坐姿識別過程
3.1 ORB算法介紹
ORB算法是一種快速特征點提取和描述算法,這個算法分為兩部分,分別是特征點提取和特征點描述。特征提取是由FAST算法發(fā)展來的,特征點描述是根據(jù)BRIEF特征描述算法改進(jìn)的。ORB特征是將FAST特征點的檢測方法與BRIEF特征描述子結(jié)合起來,并在它們原來的基礎(chǔ)上做了改進(jìn)與優(yōu)化。ORB算法最大的特點就是計算速度快。這首先得益于使用FAST檢測特征點,F(xiàn)AST的檢測速度非常快。再次是使用BRIEF算法計算描述子,該描述子特有的2進(jìn)制串的表現(xiàn)形式不僅節(jié)約了存儲空間,而且大大縮短了匹配的時間[3]。
3.2圖像直方圖介紹
直方圖統(tǒng)計是圖像處理中的一個非常重要的操作。圖像直方圖是反映一個圖像像素分布的統(tǒng)計表,其實橫坐標(biāo)代表了圖像像素的種類,可以是灰度的,也可以是彩色的。縱坐標(biāo)代表了每一種顏色值在圖像中的像素總數(shù)或者占所有像素個數(shù)的百分比。圖像是由像素構(gòu)成,因為反映像素分布的直方圖往往可以作為圖像一個很重要的特征。在實際工程中,圖像直方圖在特征提取、圖像匹配等方面都有很好的應(yīng)用[4]。
3.3姿態(tài)檢測原理
將攝像頭拍攝到的一張圖片與標(biāo)準(zhǔn)坐姿圖片進(jìn)行對比,通過ORB算法對兩張圖片進(jìn)行特征點匹配,然后根據(jù)匹配的特征點坐標(biāo)確定特征點匹配的對數(shù),再通過設(shè)置閾值的方式來判斷兩張圖片姿態(tài)的相似度。同時計算兩張圖片的直方圖,通過繪制灰度值曲線來比較兩張圖的相似度,并且輸出兩張圖的相似度,再通過對兩種方法相似度的綜合判斷,來判斷這兩張圖片中人體姿態(tài)。即若是兩張方法判斷出來兩張圖片的相似度都很高,那么可以判定兩張圖片中的人體姿態(tài)是一致的,也就是說攝像頭拍到的圖片中的人坐姿是標(biāo)準(zhǔn)的,若是兩種方法判斷的圖片相似度都不高或者其中之一不高,則可以判斷圖片中人的坐姿是不標(biāo)準(zhǔn)的[5]。
3.4方法實現(xiàn)
在實現(xiàn)方法前首先要安裝好Python運行環(huán)境并安裝好OpenCV庫,將攝像頭拍攝的人體姿態(tài)圖片與標(biāo)準(zhǔn)姿態(tài)圖片進(jìn)行對比,利用ORB算法匹配兩張圖片的特征點,在運用圖像直方圖來比較兩張圖片相似度,若匹配到的特征點對數(shù)超過閾值且圖片相似度也很高,則輸出“坐姿標(biāo)準(zhǔn)”[6]。以下為該方法實現(xiàn)用到的主要函數(shù):
(1)實現(xiàn)ORB特征匹配的函數(shù)。
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)實現(xiàn)圖像直方圖相似度統(tǒng)計的函數(shù)。
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張不同姿態(tài)照片與該被測人的標(biāo)準(zhǔn)姿態(tài)照片進(jìn)行測試,隨機(jī)選取10組識別結(jié)果。經(jīng)過測試可看到10組中識別準(zhǔn)確的組別有8組,識別準(zhǔn)確率達(dá)到80%,因此該方法可正確的識別姿態(tài)標(biāo)準(zhǔn)程度[7]。
4結(jié)語
本文提出了基于ORB算法進(jìn)行人體坐姿識別的一種方法,ORB圖像識別算法在人臉識別、坐姿識別領(lǐng)域的應(yīng)用較少,拓寬了ORB圖像識別算法的應(yīng)用領(lǐng)域,同時將ORB圖像識別和直方圖統(tǒng)計相結(jié)合解決人體坐姿識別相關(guān)問題,提高了圖像識別的準(zhǔn)確性。同時,對于上班族久坐且坐姿不正確導(dǎo)致的各種健康問題,本文提出了一種有效的預(yù)防方法,通過ORB算法對不正確的坐姿進(jìn)行識別并且發(fā)出提醒,從而起到不斷提醒人們關(guān)注自己的坐姿,及時改正錯誤坐姿的作用。
[參考文獻(xiàn)]
[1]謝紅莉,謝作揩,葉景,等.我國青少年近視現(xiàn)患率及相關(guān)因素分析[J].中華醫(yī)學(xué)雜志,2010(7):15.
[2]王春陽.基于圖像技術(shù)的人體坐姿監(jiān)測研究[D].西安:西安電子科技大學(xué),2013.
[3]黃國范,李亞.人體動作姿態(tài)識別綜述[J].電腦知識與技術(shù),2013(1):133-135.
[4]張宇.基于人臉檢測與膚色統(tǒng)計的坐姿行為監(jiān)測[J].計算機(jī)與網(wǎng)絡(luò),2017(7):73-76.
[5]高強(qiáng),潘俊.基于ORB的圖像特征提取與匹配研究[J].福建電腦,2019(1):21-22.
[6]范新南,顧亞飛,倪建軍.改進(jìn)ORB算法在圖像匹配中的應(yīng)用[J].計算機(jī)與現(xiàn)代化,2019(2):1-6,14.
[7]李樂鵬,孫水發(fā),夏沖,等.直方圖均衡技術(shù)綜述[J].計算機(jī)系統(tǒng)應(yīng)用,2014(3):1-8.
文章來源: 無線互聯(lián)科技許飛鴻 孫林 齊鵬 王鈺琪 胡浩
下一篇: PLC、DCS、FCS三大控