一種手勢(shì)識(shí)別系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種手勢(shì)識(shí)別系統(tǒng),屬于人機(jī)交互技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 微軟的Kinect是一種利用光學(xué)感測(cè)原理識(shí)別人體動(dòng)作的3D體感攝影機(jī),它能夠準(zhǔn) 確的追蹤人體骨骼、識(shí)別人體的動(dòng)作,并實(shí)時(shí)處理相應(yīng)操作。通過(guò)將Kinect體感設(shè)備與計(jì)算 機(jī)結(jié)合起來(lái),用戶無(wú)需使用任何輸入設(shè)備,即可通過(guò)自身的肢體動(dòng)作向計(jì)算機(jī)發(fā)布指令,使 之對(duì)計(jì)算機(jī)的控制具有更大的靈活性,進(jìn)而增加了用戶與計(jì)算機(jī)的交互性和用戶體驗(yàn)。
【發(fā)明內(nèi)容】
[0003] 為解決現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于,提供一種手勢(shì)識(shí)別系統(tǒng),通過(guò)使用 Kinect提取深度信息,避免了識(shí)別過(guò)程中光照、顏色的差異帶來(lái)的影響;同時(shí)使用Kalman濾 波器對(duì)手勢(shì)實(shí)時(shí)追蹤,使系統(tǒng)更準(zhǔn)確的追蹤定位手部位置。
[0004] 本發(fā)明的技術(shù)方案為:一種手勢(shì)識(shí)別系統(tǒng),其特征是,包括以下步驟:
[0005] (l)〇penNI/NITE平臺(tái)下的骨骼提?。?br>[0006] (2)獲取手部坐標(biāo);
[0007] (3)Kalman濾波器的手部追蹤;
[0008] (4)識(shí)別手部起始位置;
[0009] (5)識(shí)別手部動(dòng)作;
[0010] (6)觸發(fā)鍵盤八鼠標(biāo)事件控制設(shè)備。
[0011] 前述的一種手勢(shì)識(shí)別系統(tǒng),其特征是,上述步驟(1)中,所述骨骼提取包括以下步 驟:
[0012] ①獲取深度圖像,提取人物信息,使用OpenNI中DepthGener-ator和 UserGenerator生產(chǎn)節(jié)點(diǎn),產(chǎn)生深度圖像和人物信息;
[0013] ②根據(jù)獲取的人物信息生成骨骼信息,使用NITE中預(yù)先定義的矯正用姿勢(shì)"Psi";
[0014] ③當(dāng)人物擺出的"Psi"姿勢(shì)且NITE正確識(shí)別后,調(diào)用Skeleton進(jìn)行人體骨骼的校 正和分析;
[0015] ④當(dāng)骨骼校正成功后,對(duì)骨骼關(guān)節(jié)點(diǎn)追蹤,通過(guò)GetSkeleton函數(shù)獲取骨骼點(diǎn)信 息;如果骨骼校正失敗,則重新校正;
[0016] ⑤當(dāng)骨骼追蹤成功后,通過(guò)OpenNI中的GetSkeletonJointO來(lái)讀取骨骼的信息。
[0017] 前述的一種手勢(shì)識(shí)別系統(tǒng),其特征是,上述步驟⑤中,函數(shù)具體聲明如下:
[0018] XnStatus xn::Skeleton Capability::GetSkeleton Joint(XnUserID user, XnSkeletonJoint ejoint ,Xn Skeleton JointTransformation&joint);其中,user為追蹤 的用戶的ID; ejoint指定系統(tǒng)要追蹤哪個(gè)關(guān)節(jié)。
[0019] 前述的一種手勢(shì)識(shí)別系統(tǒng),其特征是,上述步驟(5)中,識(shí)別手部動(dòng)作的具體方法 為: # π
[0020] 將手起始位置設(shè)為原點(diǎn),手的起始位置與終止位置之間的夾角在~一1~,表 4 4 示在執(zhí)行"向右揮手"這個(gè)動(dòng)作;設(shè)當(dāng)手部在同一位置停留時(shí)間超過(guò)一定時(shí)間時(shí),該位置為 手的起始位置;針對(duì)終點(diǎn)位置確定,與起始位置略有不同,從確定起點(diǎn)位置時(shí)刻算起,經(jīng)過(guò) 一段時(shí)間后的Kalman預(yù)測(cè)位置設(shè)為終點(diǎn)位置;若手勢(shì)的起始位置為PKx 1>yi),結(jié)束位置為
P2(x2,y2),他們之間的夾角為Θ,諏 ,通過(guò)對(duì)矽+ +)與PI,P2值的判 4 斷,識(shí)別出手勢(shì)所表達(dá)的意思,系統(tǒng)根據(jù)識(shí)別出手部的動(dòng)作,觸發(fā)鍵盤keybd_eVent()或鼠 標(biāo)事件mouse_event(),進(jìn)而實(shí)現(xiàn)對(duì)設(shè)備的控制。
[0021] 本發(fā)明所達(dá)到的有益效果:系統(tǒng)通過(guò)使用Kinect提取深度信息,避免了識(shí)別過(guò)程 中光照、顏色的差異帶來(lái)的影響;同時(shí)使用Kalman濾波器對(duì)手勢(shì)實(shí)時(shí)追蹤,使系統(tǒng)更準(zhǔn)確的 追蹤定位手部位置;通過(guò)對(duì)"揮手"動(dòng)作的分析,最后利用手部位置信息判斷揮手角度,進(jìn)而 識(shí)別出手部動(dòng)作。
【附圖說(shuō)明】
[0022] 圖1是本發(fā)明的流程圖;
[0023]圖2是本發(fā)明的OpenNI/NITE識(shí)別骨骼信息流程圖。
【具體實(shí)施方式】
[0024] 下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述。以下實(shí)施例僅用于更加清楚地說(shuō)明本發(fā)明 的技術(shù)方案,而不能以此來(lái)限制本發(fā)明的保護(hù)范圍。
[0025] 如圖1所示,一種手勢(shì)識(shí)別系統(tǒng),包括以下步驟:
[0026] (1) OpenNI /NITE平臺(tái)下的骨骼提取,如圖2所示,骨骼提取包括以下步驟:
[0027] ①獲取深度圖像,提取人物信息,使用OpenNI中DepthGener-ator和 UserGenerator生產(chǎn)節(jié)點(diǎn),產(chǎn)生深度圖像和人物信息;
[0028]②根據(jù)獲取的人物信息生成骨骼信息,使用NITE中預(yù)先定義的矯正用姿勢(shì)"Psi";
[0029] ③當(dāng)人物擺出的"Psi"姿勢(shì)且NITE正確識(shí)別后,調(diào)用Skeleton進(jìn)行人體骨骼的校 正和分析;
[0030] ④當(dāng)骨骼校正成功后,對(duì)骨骼關(guān)節(jié)點(diǎn)追蹤,通過(guò)GetSkeleton函數(shù)獲取骨骼點(diǎn)信 息;如果骨骼校正失敗,則重新校正;
[0031 ]⑤當(dāng)骨骼追蹤成功后,通過(guò)OpenNI中的GetSkeletonJointO來(lái)讀取骨骼的信息, 函數(shù)具體聲明如下:
[0032] XnStatus xn::Skeleton Capability::GetSkeleton Joint(XnUserID user, XnSkeletonJoint ejoint ,Xn Skeleton JointTransformation&joint);其中,user為追蹤 的用戶的ID; ejoint指定系統(tǒng)要追蹤哪個(gè)關(guān)節(jié)。
[0033] (2)獲取手部坐標(biāo);
[0034] (3)Kalman濾波器的手部追蹤;
[0035] (4)識(shí)別手部起始位置;
[0036] (5)識(shí)別手部動(dòng)作,具體方法為: .貧'
[0037] 將手起始位置設(shè)為原點(diǎn),手的起始位置與終止位置之間的夾角在·…、了 、、了^表示 4 4 在執(zhí)行"向右揮手"這個(gè)動(dòng)作;設(shè)當(dāng)手部在同一位置停留時(shí)間超過(guò)一定時(shí)間時(shí),該位置為手 的起始位置;針對(duì)終點(diǎn)位置確定,與起始位置略有不同,從確定起點(diǎn)位置時(shí)刻算起,經(jīng)過(guò)一 段時(shí)間后的Kalman預(yù)測(cè)位置設(shè)為終點(diǎn)位置;若手勢(shì)的起始位置為PKx 1>yi),結(jié)束位置為P2 (X2,y2),他們之間的夾角為Θ,則
與P1,P2值的判斷, 識(shí)別出手勢(shì)所表達(dá)的意思,系統(tǒng)根據(jù)識(shí)別出手部的動(dòng)作,觸發(fā)鍵盤keybcLeventO或鼠標(biāo)事 件mouse_event(),進(jìn)而實(shí)現(xiàn)對(duì)設(shè)備的控制。
[0038] (6)觸發(fā)鍵盤八鼠標(biāo)事件控制設(shè)備。
[0039]系統(tǒng)通過(guò)使用Kinect提取深度信息,避免了識(shí)別過(guò)程中光照、顏色的差異帶來(lái)的 影響;同時(shí)使用Kalman濾波器對(duì)手勢(shì)實(shí)時(shí)追蹤,使系統(tǒng)更準(zhǔn)確的追蹤定位手部位置;通過(guò)對(duì) "揮手"動(dòng)作的分析,最后利用手部位置信息判斷揮手角度,進(jìn)而識(shí)別出手部動(dòng)作。
[0040]以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人 員來(lái)說(shuō),在不脫離本發(fā)明技術(shù)原理的前提下,還可以做出若干改進(jìn)和變形,這些改進(jìn)和變形 也應(yīng)視為本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1. 一種手勢(shì)識(shí)別系統(tǒng),其特征是,包括以下步驟: (1 )OpenNI/NITE平臺(tái)下的骨骼提取; (2) 獲取手部坐標(biāo); (3) Kalman濾波器的手部追蹤; (4) 識(shí)別手部起始位置; (5) 識(shí)別手部動(dòng)作; (6) 觸發(fā)鍵盤八鼠標(biāo)事件控制設(shè)備。2. 根據(jù)權(quán)利要求1所述的一種手勢(shì)識(shí)別系統(tǒng),其特征是,上述步驟(1)中,所述骨骼提取 包括以下步驟: ① 獲取深度圖像,提取人物信息,使用OpenNI中DepthGener-ator和UserGenerator生 產(chǎn)節(jié)點(diǎn),產(chǎn)生深度圖像和人物信息; ② 根據(jù)獲取的人物信息生成骨骼信息,使用NITE中預(yù)先定義的矯正用姿勢(shì)"Psi"; ③ 當(dāng)人物擺出的"Psi"姿勢(shì)且NITE正確識(shí)別后,調(diào)用Skeleton進(jìn)行人體骨骼的校正和 分析; ④ 當(dāng)骨骼校正成功后,對(duì)骨骼關(guān)節(jié)點(diǎn)追蹤,通過(guò)GetSkeleton函數(shù)獲取骨骼點(diǎn)信息;如 果骨骼校正失敗,則重新校正; ⑤ 當(dāng)骨骼追蹤成功后,通過(guò)OpenNI中的GetSkeletonJointO來(lái)讀取骨骼的信息。3. 根據(jù)權(quán)利要求2所述的一種手勢(shì)識(shí)別系統(tǒng),其特征是,上述步驟⑤中,函數(shù)具體聲明 如下: XnStatus xn::Skeleton Capability::GetSkeleton Joint(XnUserID user, XnSkeletonJoint ejoint ,Xn Skeleton JointTransformation&joint);其中,user為追蹤 的用戶的ID; ejoint指定系統(tǒng)要追蹤哪個(gè)關(guān)節(jié)。4. 根據(jù)權(quán)利要求1所述的一種手勢(shì)識(shí)別系統(tǒng),其特征是,上述步驟(5)中,識(shí)別手部動(dòng)作 的具體方法為: 將手起始位置設(shè)為原點(diǎn),手的起始位置與終止位置之間的夾角在…? …表示在執(zhí)行 "向右揮手"這個(gè)動(dòng)作;設(shè)當(dāng)手部在同一位置停留時(shí)間超過(guò)一定時(shí)間時(shí),該位置為手的起始 位置;針對(duì)終點(diǎn)位置確定,與起始位置略有不同,從確定起點(diǎn)位置時(shí)刻算起,經(jīng)過(guò)一段時(shí)間 后的Kalman預(yù)測(cè)位置設(shè)為終點(diǎn)位置;若手勢(shì)的起始位置為PKxud,結(jié)束位置為P 2(X2,y2), 他們之間的夾角為θ,則tan ,通過(guò)對(duì)__多+與PI,P2值的判斷,識(shí)別出手 .Λ -> '>-* ,ν?· | 勢(shì)所表達(dá)的意思,系統(tǒng)根據(jù)識(shí)別出手部的動(dòng)作,觸發(fā)鍵盤keybd_event()或鼠標(biāo)事件mouse_ event(),進(jìn)而實(shí)現(xiàn)對(duì)設(shè)備的控制。
【專利摘要】本發(fā)明公開了一種手勢(shì)識(shí)別系統(tǒng),包括以下步驟:(1)OpenNI/NITE平臺(tái)下的骨骼提??;(2)獲取手部坐標(biāo);(3)Kalman濾波器的手部追蹤;(4)識(shí)別手部起始位置;(5)識(shí)別手部動(dòng)作;(6)觸發(fā)鍵盤/鼠標(biāo)事件控制設(shè)備。本發(fā)明通過(guò)使用Kinect提取深度信息,避免了識(shí)別過(guò)程中光照、顏色的差異帶來(lái)的影響;同時(shí)使用Kalman濾波器對(duì)手勢(shì)實(shí)時(shí)追蹤,使系統(tǒng)更準(zhǔn)確的追蹤定位手部位置;通過(guò)對(duì)“揮手”動(dòng)作的分析,最后利用手部位置信息判斷揮手角度,進(jìn)而識(shí)別出手部動(dòng)作。
【IPC分類】G06K9/00, G06F3/01
【公開號(hào)】CN105469043
【申請(qǐng)?zhí)枴緾N201510810582
【發(fā)明人】夏鋼, 方芳, 燕青, 陳斌
【申請(qǐng)人】蘇州銘冠軟件科技有限公司
【公開日】2016年4月6日
【申請(qǐng)日】2015年11月20日