本發(fā)明涉及一種基于三維K曲率算法的指尖檢測方法,屬于機(jī)器視覺技術(shù)領(lǐng)域。
背景技術(shù):
隨著計(jì)算機(jī)視覺的發(fā)展,基于視覺的指尖檢測方法已成為人機(jī)交互領(lǐng)域的研究熱點(diǎn)。在基于視覺的指尖檢測,前人已經(jīng)做了大量的研究工作,然而以前的許多算法只專注于提取二維的指尖并且在手指移動(dòng)的情況下不能穩(wěn)定的檢測出指尖點(diǎn)。在傳統(tǒng)的指尖檢測過程中,最常見的方法就是對彩色圖像進(jìn)行膚色檢測,但此方法則過于受到光照強(qiáng)度和類膚色背景的影響。隨著2010年微軟推出Kinect以及其他種類帶有深度信息相機(jī)的普及,越來越多的研究者通過利用帶有深度信息的攝像機(jī)對手勢和指尖點(diǎn)進(jìn)行研究。深度信息可以很有效的把場景劃分為幾個(gè)區(qū)域,并濾除掉一些區(qū)域,即使這些區(qū)域有一些相同的特征,如:顏色,輪廓,形狀等。Kinect是一種結(jié)合RGB攝像頭和深度攝像頭的相機(jī),它能夠獲取點(diǎn)云來模擬三維數(shù)據(jù)。這使得在未知的復(fù)雜環(huán)境中,人類活動(dòng)和物體識(shí)別變得更加容易。三維手部識(shí)別和跟蹤也得到了廣泛的研究,并應(yīng)用于不同領(lǐng)域,如:活動(dòng)識(shí)別、手勢識(shí)別、機(jī)器人控制、增強(qiáng)現(xiàn)實(shí)等。
對于三維指尖點(diǎn)檢測問題,國內(nèi)外已經(jīng)有不少專家學(xué)者在這方面做了研究。Jahangirnagar Univ.,Dhaka等人利用Kinect的深度圖像信息以及基于像素分類的方法進(jìn)行指尖點(diǎn)檢測,并對手勢抓取和釋放進(jìn)行識(shí)別,平均識(shí)別率達(dá)到96.96%,但其并未對彎曲指尖點(diǎn)的檢測進(jìn)行研究。Marek Vaneo,Ivan Minarik等人通過基于Kinect深度信息和骨骼信息相結(jié)合,利用K曲率算法檢測手指指尖點(diǎn),平均識(shí)別率為93%,但其太依賴于骨骼節(jié)點(diǎn),需要Kinect拍攝到整個(gè)人體的骨骼框架才能定位手部,在實(shí)際應(yīng)用中,十分不方便。以上方法都只是處理深度圖像信息,并未模擬出三維數(shù)據(jù)。C.M.Mateo,P.Gil等人通過Kinect的深度、彩色信息合成點(diǎn)云,模擬場景的三維數(shù)據(jù),并通過膚色檢測方法獲取人體膚色區(qū)域集合,并隨后對每個(gè)區(qū)域計(jì)算凸點(diǎn),通過凸點(diǎn)的個(gè)數(shù)判定手部區(qū)域,并把凸點(diǎn)的最大輪廓的中心作為掌心點(diǎn),通過掌心點(diǎn)到凸點(diǎn)的距離來判定指尖點(diǎn)。但是,此方法指尖點(diǎn)的判定太過依賴于掌心點(diǎn)的位置。而本發(fā)明能夠很好地解決上面的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明目的在于針對上述現(xiàn)有技術(shù)的不足,提出了一種基于三維K曲率的指尖檢測方法,該方法主要解決了現(xiàn)有技術(shù)中太過于依賴骨骼節(jié)點(diǎn)和掌心點(diǎn)位置等問題。該方法以三維點(diǎn)云圖像為基礎(chǔ),首先對Kinect獲取的點(diǎn)云數(shù)據(jù)進(jìn)行濾波,然后基于顏色的區(qū)域增長對其分割,得到若干區(qū)域,然后用膚色檢測的方法獲取手部區(qū)域的點(diǎn)云數(shù)據(jù),然后對手部的點(diǎn)云進(jìn)行濾波以剔除一些空間離散點(diǎn),再利用K曲率算法的思想去處理點(diǎn)云數(shù)據(jù),即人手指尖點(diǎn)到一定距離的手部點(diǎn)的最大夾角小于一定閾值,然后通過確定一個(gè)閾值得到指尖候選點(diǎn),對其指尖候選點(diǎn)聚類,最終得到指尖點(diǎn),從而實(shí)現(xiàn)指尖點(diǎn)的檢測。
本發(fā)明解決其技術(shù)問題所采取的技術(shù)方案是:本發(fā)明提出一種基于三維K曲率算法的指尖檢測方法,該方法包括如下步驟:
S1,通過RGBD攝像裝置采集包含人手的三維點(diǎn)云圖像
該步驟中利用由微軟發(fā)布的Kinect傳感器結(jié)合點(diǎn)云庫PCL(Point Cloud Library)和OpenNi獲取包含人手的點(diǎn)云數(shù)據(jù)。
S2,對點(diǎn)云圖像進(jìn)行直通濾波剔除部分非手部點(diǎn)云
該步驟中利用直通濾波器處理點(diǎn)云圖像,對其z值進(jìn)行直通濾波,過濾掉一些點(diǎn)云數(shù)據(jù),保留深度值z在x1到x2之間的點(diǎn)云數(shù)據(jù)。
S3,對濾波后的點(diǎn)云進(jìn)行顏色區(qū)域增長
在濾波后的RGBD點(diǎn)云圖像進(jìn)行顏色區(qū)域增長,把點(diǎn)云圖像基于顏色分割為若干塊。
S4,膚色檢測算法檢測并提取手部區(qū)域
該步驟中在分割后的點(diǎn)云圖像中利用膚色檢測算法進(jìn)行手部區(qū)域檢測并提取。
S5,利用三維K曲率算法在人手上檢測出指尖點(diǎn)
該步驟中基于上一步分割出的手部點(diǎn)云,利用K曲率算法的思想去處理點(diǎn)云數(shù)據(jù),即人手指尖點(diǎn)到一定距離的手部點(diǎn)的最大夾角小于一定閾值,然后通過確定一個(gè)閾值得到指尖候選點(diǎn)。
S6,聚類獲取指尖點(diǎn)的個(gè)數(shù)并判斷手勢
該步驟采用K-means聚類算法處理上一步獲取的指尖候選點(diǎn),得到的聚類中心個(gè)數(shù),即為指尖點(diǎn)的個(gè)數(shù)。
進(jìn)一步地,本發(fā)明步驟S2包括,通過直通濾波濾除三維點(diǎn)云圖像中深度值Z大于2或小于0.5的點(diǎn)云。
進(jìn)一步地,本發(fā)明所述步驟S3包括,利用區(qū)域增長在點(diǎn)云圖像中進(jìn)行基于顏色的分類。
進(jìn)一步地,本發(fā)明所述步驟S4包括,通過膚色檢測算法確定手部屬于顏色分類后的哪一類,并提取手部區(qū)域。
進(jìn)一步地,本發(fā)明所述步驟S5包括,通過三維K曲率算法,即人手指尖點(diǎn)到一定距離的手部點(diǎn)的最大夾角小于一定閾值,然后通過確定一個(gè)閾值得到指尖點(diǎn)。
進(jìn)一步地,本發(fā)明所述步驟S6包括,通過三維點(diǎn)云的空間點(diǎn)坐標(biāo)進(jìn)行聚類,并根據(jù)聚類結(jié)果判斷指尖點(diǎn)個(gè)數(shù)。
有益效果:
1、本發(fā)明在不同位置,不同背景,不同光照環(huán)境下,很好地檢測出指尖點(diǎn)。
2、本發(fā)明與實(shí)際指尖點(diǎn)的距離誤差很小,具有較好的精確性、魯棒性。
3、本發(fā)明的指尖點(diǎn)檢測不依賴于掌心點(diǎn)。
附圖說明
圖1為基于三維K曲率算法的指尖檢測方法流程圖。
圖2為場景點(diǎn)云圖。
圖3為濾波后場景點(diǎn)云圖。
圖4為顏色區(qū)域增長示意圖。
圖5為手部區(qū)域圖。
圖6為指尖點(diǎn)檢測結(jié)果和手姿結(jié)果。
具體實(shí)施方式
下面結(jié)合說明書附圖對本發(fā)明創(chuàng)造作進(jìn)一步的詳細(xì)說明。
參照附圖來描述本發(fā)明的各方面,附圖中示出了許多說明的實(shí)施例。本發(fā)明的實(shí)施例不必定意在包括本發(fā)明的所有方面。應(yīng)當(dāng)理解,本發(fā)明介紹的多種構(gòu)思和實(shí)施例,以及下面更加詳細(xì)地描述的那些構(gòu)思和實(shí)施方式可以以很多方式中任意一種來實(shí)施,這是因?yàn)楸景l(fā)明所公開的構(gòu)思和實(shí)施例并不限于任何實(shí)施方式。另外,本發(fā)明公開的一些方面可以單獨(dú)使用,或者與本發(fā)明公開的其他方面的任何適當(dāng)組合來使用。
圖1為根據(jù)本發(fā)明某些實(shí)施例的基于三維K曲率算法的指尖識(shí)別方法的流程圖,具體包括如下步驟:
S1,采集手部的點(diǎn)云圖像;
S2,對點(diǎn)云圖像進(jìn)行濾波;
S3,對濾波后的點(diǎn)云進(jìn)行基于顏色的區(qū)域增長分割;
S4,利用膚色檢測算法在點(diǎn)云圖中分割出手部;
S5,通過三維K曲率算法檢測出指尖候選點(diǎn);
S6,通過K-means算法將指尖候選點(diǎn)聚類為n個(gè)指尖點(diǎn)。
下面結(jié)合附圖所示,更加具體地描述前述基于頭部姿勢識(shí)別的智能移動(dòng)服務(wù)機(jī)器人控制方法的示例性實(shí)現(xiàn)。
步驟S1中,用戶坐于智能輪椅上,手放于距離Kinect 50到100厘米處,采集手部點(diǎn)云圖像。其效果如圖2所示。
步驟S2,對采集到的點(diǎn)云圖像進(jìn)行直通濾波,保留深度值Z大于0.5小于1的點(diǎn)云數(shù)據(jù)。其濾波效果如圖3所示。
步驟S3,對濾波后的點(diǎn)云進(jìn)行基于顏色的區(qū)域增長分割,其具體步驟如下所示:
S31,選擇RGB顏色空間進(jìn)行顏色相似度區(qū)分。
S32,確定顏色相似度測量標(biāo)準(zhǔn),包括以下幾個(gè)步驟:
S321,首先選取歐式距離來表示其顏色距離,通過計(jì)算歐式距離來區(qū)分不同顏色。
S322,假設(shè)點(diǎn)云數(shù)據(jù)中的第i,j個(gè)點(diǎn)的顏色量分別為Ci,Cj,則此兩點(diǎn)之間的顏色距離為:
S323,在基于區(qū)域生長的點(diǎn)云分割過程中,由于一個(gè)區(qū)域的顏色可能會(huì)分布不均勻,故一般用整個(gè)區(qū)域的顏色量,來計(jì)算與候選點(diǎn)的顏色相似度。點(diǎn)云數(shù)據(jù)中的第i個(gè)點(diǎn)的顏色量Ci與生長區(qū)域的平均顏色量的歐式距離為:
其中,
S33,根據(jù)點(diǎn)云的顏色信息(即RGB)來進(jìn)行點(diǎn)云分割,包括以下幾個(gè)步驟:
S331,首先,在分割區(qū)域中選擇任意一點(diǎn)Pi,然后搜索Pi的所有相鄰點(diǎn)。
S332,再顏色相似度準(zhǔn)則判定Pi的各相鄰點(diǎn)是否與Pi是同一類,并同時(shí)設(shè)定一個(gè)顏色閾值。
S333,若同時(shí)滿足顏色閾值和顏色相似度則把改點(diǎn)進(jìn)行歸類并做種,若只滿足顏色相似度準(zhǔn)則便只歸類不做種。
S3334,從Pi出發(fā),直到其子種子不在出現(xiàn),則一類聚類完成,隨后在剩余的部分繼續(xù)重復(fù)以上步驟,直到整個(gè)聚類完成。其聚類效果如圖4所示。
步驟S4,利用膚色檢測算法在點(diǎn)云圖中分割出手部,其具體步驟如下所示:
S41,采用RGB顏色空間對上述點(diǎn)云類檢測出膚色區(qū)域。當(dāng)場景在自然光照下,辨別膚色的公式為:
R,G,B為RGB圖像中每個(gè)像素點(diǎn)的值,其范圍為0到255。
當(dāng)場景在人造光照下,其辨別膚色的公式為:
無論處于何種場景,膚色點(diǎn)只需滿足其中一組公式,即可判定為膚色點(diǎn)。
S42,對點(diǎn)云數(shù)據(jù)進(jìn)行基于顏色的區(qū)域增長后,判定其中哪類是屬于膚色類,其步驟如下所示:
S421,遍歷每一類的點(diǎn)云,得到其R,G,B三個(gè)分量的平均值其公式如下所示:
其中,Ri,Gi,Bi為每一類點(diǎn)云中第i個(gè)點(diǎn)云的R,G,B分量。n為每一類點(diǎn)云的點(diǎn)云個(gè)數(shù)。為每一類點(diǎn)云的R,G,B三個(gè)分量的平均值。
S422,判定其中哪類屬于膚色類,并獲取手部區(qū)域,效果如圖5所示。
S5,通過三維K曲率算法檢測出指尖候選點(diǎn),其步驟如下:
S51,以點(diǎn)云數(shù)據(jù)中其任意一點(diǎn)O為球心,R1,R2為半徑做兩個(gè)球面,來割手部的點(diǎn)云數(shù)據(jù),其中R1>R2。若點(diǎn)云分布在這兩個(gè)球之間,則將其存入集合C。即點(diǎn)云數(shù)據(jù)中任意一點(diǎn)P到C的距離在R1,R2之間。其公式為:
其中x0,y0,z0分別為球心點(diǎn)O的x,y,z坐標(biāo)值,xp,yp,zp分別為p的x,y,z坐標(biāo)值。
S52,根據(jù)上述公式遍歷整個(gè)點(diǎn)云數(shù)據(jù)得到其屬于兩個(gè)球之間的點(diǎn)云數(shù)據(jù)C。
S53,求出球心點(diǎn)O與點(diǎn)云C中的任意兩點(diǎn)點(diǎn)云Ci,Cj的最大夾角α。設(shè)β為球心點(diǎn)O與球環(huán)內(nèi)點(diǎn)云中的任意兩點(diǎn)點(diǎn)云Ci,Cj的夾角,其cosβ的計(jì)算公式為:
其中di為球心O到點(diǎn)Ci的距離,dj為球心O到點(diǎn)Cj的距離,dij為點(diǎn)Ci到Cj的距離。只需根據(jù)上述公式遍歷球環(huán)內(nèi)的點(diǎn)云數(shù)據(jù)即可得到最大夾角的余弦值cosα。
S54,根據(jù)手部外形可知,指尖點(diǎn)與非指尖點(diǎn)的cosα有十分明顯的區(qū)別,故選取一個(gè)角度閾值θ來判定其是否為指尖點(diǎn)。若α<θ則判定該點(diǎn)為指尖點(diǎn),反之則說明其為非指尖點(diǎn)。
步驟S6,通過K-means算法將指尖候選點(diǎn)聚類為n個(gè)指尖點(diǎn),并根據(jù)指尖點(diǎn)個(gè)數(shù)確定手勢,其結(jié)果如圖6所示。
結(jié)合以上所描述的指尖檢測方法,在光照度適中的室內(nèi),Kinect攝像頭放置在手部前方50-100厘米處,手部隨意做出不同手勢,擺放在不同位置,均能較好的檢測出指尖點(diǎn)。
雖然本發(fā)明已以較佳實(shí)施例揭露如上,然其并非用以限定本發(fā)明。本發(fā)明所屬技術(shù)領(lǐng)域中具有通常知識(shí)者,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作各種的更動(dòng)與潤飾。因此,本發(fā)明的保護(hù)范圍當(dāng)視權(quán)利要求書所界定者為準(zhǔn)。