文/李松江 李俊俊 楊華民 王鵬
動(dòng)態(tài)手勢識(shí)別是以靜態(tài)技術(shù)為基礎(chǔ)所形成的,簡而言之,就是在視頻流下可以識(shí)別手部的一些動(dòng)作,這種技術(shù)相對靜態(tài)手勢識(shí)別技術(shù)來說,更加復(fù)雜,并且難度更大,可是這種技術(shù)的實(shí)用性更高。手勢識(shí)別技術(shù)已經(jīng)獲得一定的成效,可是這些技術(shù)及方式均未解決假若光照條件嚴(yán)重改變,或是人體膚色出現(xiàn)極大的不同時(shí),就會(huì)產(chǎn)生嚴(yán)重的系統(tǒng)失靈問題,而這常常就要對各項(xiàng)參數(shù)再一次進(jìn)行調(diào)整,如此才能夠使得系統(tǒng)恢復(fù)工作,這就使得系統(tǒng)的穩(wěn)定性大打折扣。而這種不穩(wěn)定形成的主要原因就是基于人手的顏色來展開圖像分析的過程中,會(huì)存在光照、遮擋等各個(gè)方面的影響,這就會(huì)使得后續(xù)手勢辨識(shí)出現(xiàn)嚴(yán)重的干擾問題。鑒于此,增強(qiáng)手在攝像頭下的辨識(shí)精度就變成了研究的焦點(diǎn)。
以往手勢識(shí)別大部分是在視覺圖像信息的基礎(chǔ)上進(jìn)行的,并且大部分是靜態(tài)手勢識(shí)別技術(shù),并且基本上是運(yùn)用傳統(tǒng)的攝像頭所得到的彩色圖像展開研究。因?yàn)檩斎氲臄?shù)據(jù)及信息存在差異性,因此識(shí)別的方式同樣存在差異。很多方法直接通過攝像頭提供的彩色圖像信息,基于手勢形狀進(jìn)行識(shí)別研究。而今,手勢識(shí)別技術(shù)的研究已經(jīng)相對成熟,機(jī)器學(xué)習(xí)技術(shù)也漸漸普及,因此通常是運(yùn)用機(jī)器學(xué)習(xí)的方式處理動(dòng)態(tài)手勢的辨識(shí)。
(1)人機(jī)交互手勢的界定。借助在手指上套上兩種顏色不一,并且色彩非常鮮明的指環(huán),并且設(shè)定控制方向的四種特定手勢,分別是向上、向下、向左、向右,并且進(jìn)行點(diǎn)擊、縮小、放大等手勢操作。
(2)在OpenCV平臺(tái)上,在CamShift算法的基礎(chǔ)上,得到多個(gè)動(dòng)態(tài)手勢點(diǎn)的具體位置。
(3)把多個(gè)位置點(diǎn)的視頻流數(shù)據(jù)借助機(jī)器學(xué)習(xí)中的線性回歸方式,并且運(yùn)用梯度下降算法,獲得相對應(yīng)的手勢操作數(shù)據(jù)及結(jié)果。
(4)在手勢操作所得到的數(shù)據(jù)及結(jié)果的基礎(chǔ)上,借助無線互聯(lián)網(wǎng)完成數(shù)據(jù)信息的傳達(dá),進(jìn)而對鼠標(biāo)的移動(dòng)進(jìn)行有效控制,憑借紅外數(shù)據(jù)對電視機(jī)電臺(tái)切換與音量有效掌控,換而言之,就是發(fā)揮現(xiàn)有遙控器的作用及功能。
Camshift算法其實(shí)就是在MeanShift算法的基礎(chǔ)上優(yōu)化,也就是連續(xù)自適應(yīng)的MeanShift算法,主要構(gòu)成包括下面這三個(gè)部分:
(1)計(jì)算色彩投影圖:把圖像由RGB顏色空間轉(zhuǎn)化到HSV顏色空間,運(yùn)用直方圖的形式有效統(tǒng)計(jì)H分量,把圖像中所有像素的值都借助其顏色產(chǎn)生的具體概率完成替換操作,并且獲得相應(yīng)的顏色概率分布圖。
(2)MeanShift尋優(yōu)算法:借助不斷迭代運(yùn)算,可以獲得最佳的搜索窗口,并且明確其大小與位置。
(3)CamShift跟蹤算法:在視頻序列的所有幀中均采取meanShift,還可以把上一幀的MeanShift數(shù)據(jù)當(dāng)成是下一幀的初始值,并且不斷反復(fù),就能夠完成跟蹤目標(biāo)的實(shí)際操作。
在手指上套上兩種顏色不一,并且色彩非常鮮明的指環(huán),并且人機(jī)交互手勢的界定如下:
(1)移動(dòng)操作。兩個(gè)手勢點(diǎn)的間距始終保持在固定值,兩個(gè)點(diǎn)都向上/下/左/右進(jìn)行移動(dòng);
(2)點(diǎn)擊操作。兩個(gè)手勢點(diǎn)的間距始終保持在固定值,兩個(gè)點(diǎn)進(jìn)行上下移動(dòng)兩次,并且移動(dòng)的距離相對較短;
(3)縮放操作。兩手勢點(diǎn)的間距可以改變,隨意增大或是減小。
track_ window中所存儲(chǔ)的是上一幀矩形框結(jié)構(gòu)體,camshift算法返回的數(shù)據(jù)是在track_ comp中的cvRect矩形框結(jié)構(gòu)體中完成存儲(chǔ)操作。
針對若干個(gè)目標(biāo)點(diǎn)來實(shí)現(xiàn)Camshift算法跟蹤,進(jìn)而確定實(shí)際目標(biāo)點(diǎn)的具體位置。
將視頻流中動(dòng)態(tài)手勢點(diǎn)的特殊性訊息提取出來,并且在機(jī)器學(xué)習(xí)的基礎(chǔ)上,實(shí)現(xiàn)決策分類,然后就能夠得到各種手勢的操作。借助API函數(shù)GetCursorPosSetCursorPos mouse_event對鼠標(biāo)的操作進(jìn)行控制,分別包括鼠標(biāo)的移動(dòng)、點(diǎn)擊、滾輪。
經(jīng)過機(jī)器學(xué)習(xí)算法之后,所提取的手勢點(diǎn)坐標(biāo)結(jié)果顯示,鼠標(biāo)左移及鼠標(biāo)下移的測試成功率相對較高,分別是90%、92%,而鼠標(biāo)右移和鼠標(biāo)上移同樣成功率相對不錯(cuò),分別達(dá)到了78%、86%,而鼠標(biāo)點(diǎn)擊的成功率只有60%。要分析原因的話,還得從算法進(jìn)行分析,本文提出在Camshift算法的基礎(chǔ)上,聯(lián)系機(jī)器學(xué)習(xí)分類算法,完成手勢多點(diǎn)跟蹤與簡單鼠標(biāo)控制的操作。但是因?yàn)镃amshift算法對顏色的要求相對嚴(yán)格,在實(shí)施過程中,對顏色的要求非常高。并且在實(shí)驗(yàn)時(shí)要戴上專用的指環(huán)套,旨在提升鼠標(biāo)控制的精確性,而手勢類別并沒有多元化,此外還應(yīng)該提升算法的精確性。
虛擬現(xiàn)實(shí)現(xiàn)今已經(jīng)在一些領(lǐng)域中得到廣泛運(yùn)用,而人機(jī)交互也在漸漸朝向自然用戶界面(NUI)的不斷優(yōu)化、發(fā)展。自然用戶界面系指用戶能夠用更加自然的方法和計(jì)算機(jī)之間完成交互的操作,比如語音、觸控與手勢等。而手勢系指人機(jī)在實(shí)際交互中非常有效的一種方式,而以機(jī)器學(xué)習(xí)為基礎(chǔ)的動(dòng)態(tài)體感手勢識(shí)別系統(tǒng)就能夠?yàn)槿藱C(jī)交互提供一種全新的交互方式,進(jìn)而有效推動(dòng)手勢識(shí)別在各個(gè)領(lǐng)域中的運(yùn)用與普及。