本發(fā)明屬于手勢(shì)識(shí)別技術(shù)領(lǐng)域,涉及一種手勢(shì)識(shí)別方法。
背景技術(shù):
手勢(shì)是目前最自然直觀的人機(jī)交互方式之一。現(xiàn)有的手勢(shì)識(shí)別技術(shù)主要分為兩鐘,一種是基于數(shù)據(jù)手套的手勢(shì)識(shí)別,要求用戶必須帶上特殊的數(shù)據(jù)手套,跟蹤和標(biāo)記人手在空間坐標(biāo)中的運(yùn)動(dòng)軌跡和時(shí)序信息,再通過(guò)信號(hào)處理來(lái)達(dá)到手勢(shì)識(shí)別的目的,這種方式需要購(gòu)買(mǎi)昂貴的設(shè)備,實(shí)用性低。另一種是基于計(jì)算機(jī)視覺(jué)的手勢(shì)識(shí)別,主要利用普通攝像頭來(lái)獲取包含手部的圖像數(shù)據(jù),通過(guò)對(duì)數(shù)據(jù)的處理和分析來(lái)識(shí)別手勢(shì),這種方法實(shí)時(shí)性差,檢測(cè)效果依賴(lài)于環(huán)境光照條件,易受復(fù)雜背景和膚色的影響,識(shí)別率較低。隨著體感技術(shù)的發(fā)展,基于體感交互的手勢(shì)識(shí)別成為了研究的熱點(diǎn)。談家譜等人利用kinect獲取的骨骼信息跟蹤手部位置,并結(jié)合ycrcb膚色分割方法提取手部信息。然后利用基于行像素變化次數(shù)的掌心點(diǎn)提取方法獲取掌心點(diǎn)位置,并通過(guò)分析輪廓點(diǎn)與掌心點(diǎn)間的距離曲線來(lái)提取指尖點(diǎn)。最后通過(guò)靜態(tài)手勢(shì)特征分析來(lái)識(shí)別手勢(shì)。李寶印等人提出了一種手勢(shì)識(shí)別系統(tǒng),首先實(shí)時(shí)檢測(cè)視頻流中的手勢(shì),標(biāo)記檢測(cè)到手勢(shì)的區(qū)域?yàn)楦信d趣區(qū)域。然后利用膚色分割法對(duì)感興趣區(qū)域進(jìn)行處理。接著進(jìn)行邊緣檢測(cè)和輪廓提取,得到手形輪廓的點(diǎn)序列。然后提取手形輪廓的傅里葉描述子,利用pca分析將其映射到特征空間的一個(gè)新向量,最后采用基于樣本學(xué)習(xí)的方法識(shí)別手勢(shì)。
目前的手勢(shì)識(shí)別方法存在的主要問(wèn)題如下:
(1)基于彩色圖像和膚色分割的算法易受光照條件、復(fù)雜背景以及膚色變化等因素的影響,在光照不充分的環(huán)境或者手部顏色有差異(如醫(yī)生在手術(shù)過(guò)程中佩戴手套)的情況下,識(shí)別效率會(huì)大大降低,影響實(shí)用性。
(2)識(shí)別算法較復(fù)雜,計(jì)算量較大,無(wú)法滿足實(shí)時(shí)性要求。
(3)在手勢(shì)發(fā)生旋轉(zhuǎn)、平移和縮放的情況下,識(shí)別率不高。
相關(guān)參考文獻(xiàn)如下:
[1]談家譜.基于指尖信息的手勢(shì)識(shí)別與人機(jī)交互應(yīng)用研究[d].北京:北京交通大學(xué),2016.
[2]李寶印.手勢(shì)識(shí)別方法及系統(tǒng)[p].中國(guó)專(zhuān)利:201410795071.5,2015.06.03.
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對(duì)現(xiàn)有技術(shù)的不足,提供一種手勢(shì)識(shí)別方法,提高手勢(shì)識(shí)別的效率和精度。通過(guò)使用kinect提取深度信息,避免了識(shí)別過(guò)程中光照、手部顏色的差異帶來(lái)的影響;使用kinect獲取骨骼信息,并結(jié)合數(shù)字圖像分析技術(shù)更有效的識(shí)別手勢(shì)。微軟的體感設(shè)備kinect不僅可以獲取彩色圖像信息,還可以實(shí)時(shí)獲取深度數(shù)據(jù)。本發(fā)明使用kinect獲取深度信息,結(jié)合數(shù)字圖像分析技術(shù),能夠快速準(zhǔn)確的識(shí)別操控者的手勢(shì)。
為了達(dá)到上述目的,本發(fā)明提供的技術(shù)方案是:一種手勢(shì)識(shí)別方法,其特征在于,包括如下步驟:
步驟1,通過(guò)kinect實(shí)時(shí)獲取深度圖像序列;
步驟2,通過(guò)kinect實(shí)時(shí)獲取手掌中心和手肘中心的位置,并根據(jù)每幀圖像的深度信息提取手部輪廓;
步驟3,根據(jù)手掌中心位置、手肘中心位置和手部輪廓,計(jì)算指尖位置和指根位置,提取特征;
步驟4,將步驟3中提取的特征和模板庫(kù)中的手勢(shì)特征進(jìn)行匹配,進(jìn)入分類(lèi)器,按分類(lèi)器的分類(lèi)標(biāo)準(zhǔn)選擇出最接近的手勢(shì)為識(shí)別出的手勢(shì),并將每一幀識(shí)別出的手勢(shì)保存在隊(duì)列q中;
步驟5,分析隊(duì)列q中該幀和之前四幀的識(shí)別結(jié)果,選取出現(xiàn)數(shù)量最多的手勢(shì),作為最終識(shí)別結(jié)果。
而且,所述步驟2具體包括以下子步驟,
步驟2.1,利用隨機(jī)森林機(jī)器學(xué)習(xí)技術(shù)平穩(wěn)的跟蹤人體關(guān)節(jié),獲得手掌中心點(diǎn)的位置坐標(biāo)和手肘中心點(diǎn)的位置坐標(biāo);
步驟2.2,分析每幀圖像的深度信息,將圖像分為背景部分和人體部分;
步驟2.3,根據(jù)步驟2.1中的手掌中心位置和步驟2.2中的人體部分,得到包含人體手部的二值圖;
步驟2.4,對(duì)步驟2.3得到的二值圖進(jìn)行中值濾波,獲得邊緣平滑的圖像i;
步驟2.5,查找圖像i的邊緣,獲取圖像邊緣曲線,得到曲線的頂點(diǎn)序列;
步驟2.6,對(duì)所得曲線的頂點(diǎn)序列進(jìn)行過(guò)濾,計(jì)算每條曲線所包圍的面積,篩選出包圍面積最大的曲線,即為手部輪廓。
而且,所述步驟3具體包括以下子步驟,
步驟3.1,對(duì)手部輪廓進(jìn)行多邊形逼近,得到一個(gè)多邊形的頂點(diǎn)序列;
步驟3.2,在多邊形的頂點(diǎn)序列中查找凸包點(diǎn),得到多邊形的凸包點(diǎn)序列;
步驟3.3,得到多邊形的每個(gè)凸包點(diǎn)對(duì)應(yīng)的凹陷點(diǎn)序列;
步驟3.4,計(jì)算多邊形的最大內(nèi)接圓半徑maxdist和圓心;
步驟3.5,濾除手掌中心以下部分的凸包點(diǎn),將剩下的每個(gè)凸包點(diǎn)與對(duì)應(yīng)凹陷點(diǎn)構(gòu)成的線段記錄為手指,凸包點(diǎn)對(duì)應(yīng)指尖,凹陷點(diǎn)對(duì)應(yīng)指根,手指?jìng)€(gè)數(shù)為n,計(jì)算每個(gè)手指對(duì)應(yīng)的指尖點(diǎn)與手掌中心點(diǎn)和手肘中心點(diǎn)連線的垂直距離distance,以及每個(gè)手指的指尖點(diǎn)和手掌中心點(diǎn)間的歐氏距離long;
步驟3.6,獲取多邊形的包圍矩形,以多邊形的最大寬度設(shè)置為矩形的長(zhǎng)width,最大高度設(shè)置為矩形的高h(yuǎn)eight,計(jì)算矩形區(qū)域左上角及右上角頂點(diǎn)坐標(biāo)。
而且,所述特征包括手指?jìng)€(gè)數(shù)n,每個(gè)手指對(duì)應(yīng)的指尖點(diǎn)與手掌中心點(diǎn)和手肘中心點(diǎn)連線的垂直距離distance,每個(gè)手指的指尖點(diǎn)和手掌中心點(diǎn)間的歐氏距離long,最大內(nèi)接圓的半徑maxdist和圓心,以及多邊形包圍矩形的長(zhǎng)width、寬height、左上角及右上角頂點(diǎn)坐標(biāo)。
而且,所述步驟4中分類(lèi)器的分類(lèi)標(biāo)準(zhǔn)分為5級(jí),
第一級(jí)分類(lèi)標(biāo)準(zhǔn)為手指?jìng)€(gè)數(shù)n;
第二級(jí)分類(lèi)標(biāo)準(zhǔn)是每個(gè)手指對(duì)應(yīng)的指尖點(diǎn)與手掌中心點(diǎn)和手肘中心點(diǎn)連線的垂直距離distance;
第三級(jí)分類(lèi)標(biāo)準(zhǔn)是每個(gè)手指的指尖點(diǎn)和手掌中心點(diǎn)間的歐氏距離long;
第四級(jí)分類(lèi)標(biāo)準(zhǔn)是多邊形的包圍矩形的長(zhǎng)width、寬hight、左上角及右上角頂點(diǎn)坐標(biāo)、最大內(nèi)接圓的半徑maxdist和圓心;
第五級(jí)分類(lèi)標(biāo)準(zhǔn)是空洞檢測(cè),空洞檢測(cè)具體實(shí)施方法為:沿手肘中心到手掌中心的方向,以手掌中心附近某一像素點(diǎn)為起點(diǎn),在多邊形的最大內(nèi)接圓半徑的三倍范圍內(nèi),掃描圖像中的像素點(diǎn),若在檢查到點(diǎn)在多邊形外部之后又檢查到多邊形內(nèi)部點(diǎn),則判定為有空洞;若在檢查到點(diǎn)在多邊形外部之后沒(méi)有檢查到多邊形內(nèi)部點(diǎn),則判定為無(wú)空洞。
與現(xiàn)有技術(shù)相比,本發(fā)明是的優(yōu)點(diǎn)及有益效果是:
(1)通過(guò)深度閾值的方法,能夠較好的提取出人體手部輪廓,不受光照和背景以及膚色的影響,能夠在夜間、復(fù)雜背景以及存在膚色差異干擾(如戴有色手套)的情況下識(shí)別手勢(shì)。
(2)算法復(fù)雜度低,易理解,易實(shí)現(xiàn),能滿足實(shí)時(shí)性,識(shí)別效率高。
(3)結(jié)合深度數(shù)據(jù)計(jì)算分析人體手部指尖、手掌中心點(diǎn)以及手肘中心點(diǎn)的空間幾何關(guān)系,能夠分析出特征點(diǎn)的坐標(biāo)與深度的關(guān)系,保證手勢(shì)的旋轉(zhuǎn)、平移以及縮放不變性,能夠適應(yīng)體感交互的需求。
經(jīng)實(shí)驗(yàn)證明,本發(fā)明的手勢(shì)識(shí)別方法能夠?qū)崟r(shí)準(zhǔn)確的識(shí)別從一到十的傳統(tǒng)計(jì)數(shù)手勢(shì)。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例的流程圖;
圖2是本發(fā)明實(shí)施例中步驟2的流程圖;
圖3是本發(fā)明實(shí)施例中步驟3的流程圖;
圖4是本發(fā)明實(shí)施例中步驟3.2中判斷頂點(diǎn)方向的示意圖;
圖5是本發(fā)明實(shí)施例中步驟3.3中凸包點(diǎn)與凹陷點(diǎn)的對(duì)應(yīng)關(guān)系圖;
圖6是本發(fā)明實(shí)施例中步驟3.5中濾除的手掌以下部分的示意圖;
圖7是本發(fā)明實(shí)施例中步驟4中計(jì)算垂直距離distance的示意圖;
圖8是本發(fā)明實(shí)施例中步驟4中空洞判定的示意圖;
圖9是本發(fā)明實(shí)施例中所識(shí)別的手勢(shì)示意圖。
具體實(shí)施方式
本發(fā)明在研究手勢(shì)識(shí)別的基礎(chǔ)上,以獲取指尖、手掌中心點(diǎn)和手肘中心點(diǎn)的相對(duì)位置為突破口,來(lái)識(shí)別手勢(shì)。本實(shí)例利用kinect實(shí)時(shí)獲取深度圖像序列和人體部分關(guān)節(jié)(手掌和手肘)的位置,運(yùn)用圖像處理技術(shù),分析所得數(shù)據(jù),能夠較準(zhǔn)確的識(shí)別預(yù)設(shè)手勢(shì)。本實(shí)例的手勢(shì)為中國(guó)傳統(tǒng)計(jì)數(shù)手勢(shì)一至十。
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步說(shuō)明。
如圖1所示,本實(shí)施例的具體實(shí)施包括以下步驟:
步驟1,通過(guò)kinect實(shí)時(shí)獲取深度圖像序列;
根據(jù)光從攝像頭到物體的反射時(shí)間推算出光子飛行的距離,得到物體的深度信息。本實(shí)例中獲得圖像大小為512×424像素,幀率為30fps的深度數(shù)據(jù)流。
步驟2,通過(guò)kinect實(shí)時(shí)獲取手掌中心和手肘中心的位置,并根據(jù)每幀圖像的深度信息提取手部輪廓,步驟2的具體實(shí)施方式包括如下子步驟,如圖2所示:
步驟2.1,利用隨機(jī)森林機(jī)器學(xué)習(xí)技術(shù)平穩(wěn)的跟蹤人體關(guān)節(jié)。具體實(shí)施方法是從單幀深度數(shù)據(jù)圖中對(duì)人體進(jìn)行分段,并標(biāo)記出關(guān)鍵節(jié)點(diǎn),將標(biāo)記的各個(gè)人體部分重新映射到三維空間中,對(duì)關(guān)節(jié)點(diǎn)形成高可靠的空間定位??梢缘玫綄?duì)應(yīng)深度圖像中手掌中心點(diǎn)的位置坐標(biāo)和手肘中心點(diǎn)的位置坐標(biāo);
步驟2.2,分析每幀圖像的深度信息。當(dāng)檢測(cè)到人體時(shí),分析深度圖像的直方圖,根據(jù)其計(jì)算閾值t,大于t的像素為背景部分,小于t的像素為人體部分;
步驟2.3,在單幀深度圖像中以手掌中心位置為中心標(biāo)記一個(gè)大小為的0.24m×0.22m的矩形方框。根據(jù)步驟2.2判斷矩形方框內(nèi)屬于人體部分的像素點(diǎn),并將其填充為白色。將圖像中其余像素點(diǎn)填充為黑色,最后得到包含人體手部的二值圖;
步驟2.4,對(duì)步驟2.3得到的二值圖進(jìn)行中值濾波,獲得邊緣平滑的圖像i,具體實(shí)施方法是:采用一個(gè)5×5像素的滑動(dòng)窗口,掃描步驟2.3得到的二值圖,對(duì)這個(gè)窗口中的灰度值進(jìn)行排序,然后將其灰度中值賦值給滑動(dòng)窗口中心像素,即可消除圖像噪聲,過(guò)濾部分非手勢(shì)像素,平滑圖像;
步驟2.5,查找圖像i的邊緣,獲取圖像邊緣曲線,得到曲線的頂點(diǎn)序列;
其中查找圖像邊緣的實(shí)施方法是:一,圖像灰度化;二,高斯去噪;三,采用sobel算子求解梯度幅度和方向;四,非極大值抑制;五,利用雙閥值算法檢測(cè)并連接邊緣。獲得曲線的頂點(diǎn)序列,實(shí)施方法是:建立一個(gè)等級(jí)樹(shù)的結(jié)構(gòu)輪廓,壓縮水平方向、垂直方向和對(duì)角線方向的元素,只保留該方向的終點(diǎn)坐標(biāo),得到近似手形曲線點(diǎn)集,即曲線頂點(diǎn)序列;
步驟2.6,對(duì)所得曲線的頂點(diǎn)序列進(jìn)行過(guò)濾,計(jì)算每條曲線所包圍的面積,篩選出包圍面積最大的曲線,即為手部輪廓。
步驟3,根據(jù)手掌中心位置、手肘中心位置和手部輪廓,計(jì)算指尖位置和指根位置,提取特征,步驟3的具體實(shí)施方式包括如下子步驟,如圖3所示:
步驟3.1,對(duì)手部輪廓進(jìn)行多邊形逼近,得到一個(gè)多邊形的頂點(diǎn)序列;
方法是:一,在曲線上兩點(diǎn)a,b之間連接一條直線ab;二,得到曲線上離該直線段距離最大的點(diǎn)c,計(jì)算其與ab的距離d;三,比較該距離與預(yù)先給定的閾值threshold的大?。ū景l(fā)明實(shí)施例取值為1),如果小于threshold,則該直線段作為曲線的近似;四,如果距離大于threshold,則用c將曲線分為兩段ac和bc,并分別對(duì)兩段曲線進(jìn)行一到三的處理;五,當(dāng)所有曲線都處理完畢時(shí),依次連接各個(gè)分割點(diǎn)形成的折線,即可以作為曲線的近似,得到一個(gè)多邊形頂點(diǎn)的序列。該多邊形和曲線形狀相似度高,但頂點(diǎn)數(shù)量較少,消耗的存儲(chǔ)空間更少,得到的曲線更平滑;
步驟3.2,在多邊形的頂點(diǎn)序列中查找凸包點(diǎn),得到多邊形的凸包點(diǎn)序列。
具體實(shí)施方法是:遍歷多邊形的頂點(diǎn)序列,按逆時(shí)針?lè)较?,根?jù)相鄰的兩個(gè)頂點(diǎn)pi和pi+1判斷頂點(diǎn)pi+2的方向(0<i<多邊形的頂點(diǎn)個(gè)數(shù)),方向判斷的方法如圖4所示,其中4a中pi+2的方向?yàn)橄蛴肄D(zhuǎn),4b中pi+2的方向?yàn)橄蜃鬓D(zhuǎn),若方向向左轉(zhuǎn),則將頂點(diǎn)pi+3壓入堆棧。當(dāng)算法終止時(shí),堆棧中僅包含多邊形凸包點(diǎn)中的頂點(diǎn),其順序?yàn)楦鱾€(gè)頂點(diǎn)在邊界上出現(xiàn)的逆時(shí)針?lè)较蚺帕械捻樞颍?/p>
步驟3.3,逆時(shí)針依次計(jì)算多邊形頂點(diǎn)序列上的兩個(gè)相鄰?fù)拱c(diǎn)之間的每個(gè)點(diǎn)到兩個(gè)凸包點(diǎn)的歐氏距離,將距離最大的點(diǎn)存儲(chǔ)到凹陷點(diǎn)集中,得到多邊形的每個(gè)凸包點(diǎn)對(duì)應(yīng)的凹陷點(diǎn)序列,如圖5所示,圖中每一條實(shí)線段對(duì)應(yīng)一對(duì)凸包點(diǎn)和凹陷點(diǎn),其中上端點(diǎn)表示凸包點(diǎn),下端點(diǎn)表示凹陷點(diǎn)。
步驟3.4,計(jì)算多邊形的最大內(nèi)接圓半徑和圓心。掃描圖像所有像素點(diǎn),位于多邊形內(nèi)并且與多邊形距離最大的點(diǎn)為最大內(nèi)接圓圓心,到多邊形的歐氏距離為內(nèi)接圓的半徑maxdist。
步驟3.5,濾除手掌中心以下部分的凸包點(diǎn),將剩下的每個(gè)凸包點(diǎn)與對(duì)應(yīng)凹陷點(diǎn)構(gòu)成的線段記錄為手指。根據(jù)參數(shù)估計(jì),若凸包點(diǎn)與手掌中心點(diǎn)的歐氏距離大于多邊形最大內(nèi)接圓半徑長(zhǎng)度的二倍,且凸包點(diǎn)與其對(duì)應(yīng)的凹陷點(diǎn)間的歐氏距離大于多邊形最大內(nèi)接圓半徑,就將該凸包點(diǎn)與對(duì)應(yīng)的凹陷點(diǎn)構(gòu)成的線段記錄為手指,凸包點(diǎn)對(duì)應(yīng)指尖部分,凹陷點(diǎn)對(duì)應(yīng)指根部分。計(jì)算手指?jìng)€(gè)數(shù)n,每個(gè)手指對(duì)應(yīng)的指尖點(diǎn)與手掌中心點(diǎn)和手肘中心點(diǎn)連線的垂直距離distance,以及每個(gè)手指的指尖點(diǎn)和手掌中心點(diǎn)間的歐氏距離long。
求取凸包點(diǎn)f(x,y)和凹陷點(diǎn)b(x,y)間歐氏距離,公式為dis=sqrt[(fx-bx)2+(fy-by)2]。
濾除手掌中心以下部分,方法為:設(shè)向量a由手掌中心r(x,y)指向凸包點(diǎn)f(x,y),向量b由手掌中心r(x,y)指向手肘中心t(x,y),若向量a和向量b之間的夾角為銳角,即向量的點(diǎn)乘為正數(shù),則剔除該凸包點(diǎn)和對(duì)應(yīng)的凹陷點(diǎn),其中的點(diǎn)乘公式為:dot=(fx-rx)×(rx-tx)+(fy-ry)×(ry-ty)。如圖6中的矩形區(qū)域內(nèi)部即為濾除的手掌以下部分。
此方法可以保證手勢(shì)的旋轉(zhuǎn)、平移和縮放不變性。
步驟3.6,獲取多邊形的包圍矩形,以多邊形的最大寬度設(shè)置為矩形的長(zhǎng)width,最大高度設(shè)置為矩形的寬height,計(jì)算矩形區(qū)域左上角及右上角頂點(diǎn)坐標(biāo)。
步驟4,將上述特征和模板庫(kù)中的手勢(shì)特征進(jìn)行匹配,特征包括手指?jìng)€(gè)數(shù)n,每個(gè)手指對(duì)應(yīng)的指尖點(diǎn)與手掌中心點(diǎn)和手肘中心點(diǎn)連線的垂直距離distance,每個(gè)手指的指尖點(diǎn)和手掌中心點(diǎn)間的歐氏距離long,最大內(nèi)接圓的半徑maxdist和圓心,以及多邊形包圍矩形的長(zhǎng)width、寬height、左上角及右上角頂點(diǎn)坐標(biāo),進(jìn)入分類(lèi)器,以分類(lèi)器的分類(lèi)標(biāo)準(zhǔn)選擇出最接近的手勢(shì)為識(shí)別出的手勢(shì),并將每一幀識(shí)別出的手勢(shì)保存在隊(duì)列q中。
本實(shí)施例中分類(lèi)器的分類(lèi)標(biāo)準(zhǔn)如下:第一級(jí)分類(lèi)標(biāo)準(zhǔn)是上述步驟所記錄的手指?jìng)€(gè)數(shù)n,根據(jù)步驟3.5可以獲得。
第二級(jí)分類(lèi)標(biāo)準(zhǔn)是圖像坐標(biāo)系中每個(gè)手指對(duì)應(yīng)的指尖點(diǎn)與手掌中心點(diǎn)和手肘中心點(diǎn)連線的垂直距離distance。如圖7所示,計(jì)算指尖點(diǎn)p(x,y)到由手掌中心點(diǎn)r(x1,y1)和手肘中心點(diǎn)t(x2,y2)兩點(diǎn)構(gòu)成的直線的垂直距離distance的公式為:設(shè)a=y2-y1;b=x1-x2;c=x2×y1-x1×y2;距離distance=(a×x+b×y+c)/sqrt(a×a+b×b)。
第三級(jí)分類(lèi)標(biāo)準(zhǔn)是圖像坐標(biāo)系中每個(gè)手指的指尖點(diǎn)和手掌中心點(diǎn)間的歐氏距離long,根據(jù)步驟3.5可以獲得。
第四級(jí)分類(lèi)標(biāo)準(zhǔn)是多邊形的包圍矩形的長(zhǎng)width、寬hight、左上角及右上角頂點(diǎn)坐標(biāo)、最大內(nèi)接圓的圓心和半徑maxdist,根據(jù)步驟3.6獲得。
第五級(jí)分類(lèi)標(biāo)準(zhǔn)是空洞檢測(cè),空洞檢測(cè)具體實(shí)施方法為:沿手肘中心到手掌中心的方向,以手掌中心附近某一像素點(diǎn)為起點(diǎn),在多邊形的最大內(nèi)接圓半徑的三倍范圍內(nèi),掃描圖像中的像素點(diǎn),若在檢查到點(diǎn)在多邊形外部之后又檢查到多邊形內(nèi)部點(diǎn),則判定為有空洞;若在檢查到點(diǎn)在多邊形外部之后沒(méi)有檢查到多邊形內(nèi)部點(diǎn),則判定為無(wú)空洞,如圖8所示,小圓為多邊形的最大內(nèi)接圓,大圓為最大內(nèi)接圓半徑的3倍,實(shí)心點(diǎn)表示多邊形的內(nèi)部點(diǎn),空心點(diǎn)表示多邊形的外部點(diǎn),通過(guò)空洞檢測(cè),可以判斷第一幅圖和第三幅圖為無(wú)空洞,第二幅圖和第四幅圖為有空洞。此方法可以保證手勢(shì)的旋轉(zhuǎn)和平移不變性。
最后,按照下述條件,識(shí)別右手手勢(shì),手勢(shì)圖如圖9所示,圖中第一行為本發(fā)明所識(shí)別的右手手勢(shì),第二行為左手手勢(shì),每一行中的手勢(shì)按從左至右分別為一至十:
step1:若n=0,則根據(jù)多邊形的包圍矩形的長(zhǎng)width、寬height和多邊形的最大內(nèi)接圓半徑maxdist、圓心,以最大內(nèi)接圓圓心為中心,擴(kuò)大1.8倍,形成新的圓,判斷新的圓是否包圍了多邊形的包圍矩形的左上角頂點(diǎn)。若包圍,則判定手勢(shì)為十;否則,進(jìn)行空洞檢測(cè)。若有空洞,則判定手勢(shì)為九;若無(wú)空洞,則判定手勢(shì)為七;
step2:若n=1,且-25<distance<5,且long>2.5×maxdist,則判定手勢(shì)為一;
step3:若n=2,且兩個(gè)手指的distance都介于-20與24之間,則判定手勢(shì)為二;
step4:若n=2,且其中一個(gè)手指的distance介于-5與24之間,另一個(gè)手指的distance介于-40與-20之間,則判定手勢(shì)為八;
step5:若n=2,且其中一個(gè)手指的distance介于24與60之間,另一個(gè)手指的distance介于-40與-20之間,則判定手勢(shì)為六;
step6:若n=3,且三個(gè)手指的distance都介于-30與50之間,則判定手勢(shì)為三;
step7:若n=4,且四個(gè)手指的distance都介于-30與50之間,則判定手勢(shì)為四;
step8:若n=5,則判定手勢(shì)為五;
按照下述條件,識(shí)別左手手勢(shì),手勢(shì)圖如圖9所示:
step1:若n=0,則根據(jù)多邊形的包圍矩形的長(zhǎng)width、寬height和多邊形的最大內(nèi)接圓半徑maxdist、圓心,以最大內(nèi)接圓圓心為中心,擴(kuò)大1.8倍,形成新的圓,判斷新的圓是否包圍了多邊形的包圍矩形的右上角頂點(diǎn)。若包圍,則判定手勢(shì)為十;否則,進(jìn)行空洞檢測(cè)。若有空洞,則判定手勢(shì)為九;若無(wú)空洞,則判定手勢(shì)為七;
step2:若n=1,且-5<distance<25,且long>2.5×maxdist,則判定手勢(shì)為一;
step3:若n=2,且兩個(gè)手指的distance都介于-24與20之間,則判定手勢(shì)為二;
step4:若n=2,且其中一個(gè)手指的distance介于-24與5之間,另一個(gè)手指的distance介于20與40之間,則判定手勢(shì)為八;
step5:若n=2,且其中一個(gè)手指的distance介于-60與-24之間,另一個(gè)手指的distance介于20與40之間,則判定手勢(shì)為六;
step6:若n=3,且三個(gè)手指的distance都介于-50與30之間,則判定手勢(shì)為三;
step7:若n=4,且四個(gè)手指的distance都介于-50與30之間,則判定手勢(shì)為四;
step8:若n=5,則判定手勢(shì)為五;
步驟5:優(yōu)化識(shí)別結(jié)果:分析隊(duì)列q中該幀和之前四幀的識(shí)別結(jié)果,選取出現(xiàn)數(shù)量最多的手勢(shì),作為最終識(shí)別結(jié)果。
具體實(shí)施時(shí),以上流程可采用計(jì)算機(jī)軟件技術(shù)實(shí)現(xiàn)自動(dòng)運(yùn)行流程。
本文中所描述的具體實(shí)施例僅僅是對(duì)本發(fā)明精神作舉例說(shuō)明。本發(fā)明所屬技術(shù)領(lǐng)域的技術(shù)人員可以對(duì)所描述的具體實(shí)施例做各種各樣的修改或補(bǔ)充或采用類(lèi)似的方式替代,但并不會(huì)偏離本發(fā)明的精神或者超越所附權(quán)利要求書(shū)所定義的范圍。