新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于嵌入式系統實時交互的手勢識別方法

        基于嵌入式系統實時交互的手勢識別方法

        作者: 時間:2012-05-08 來源:網絡 收藏

        2.1靜態

        本文引用地址:http://www.104case.com/article/149117.htm

        通過靜態,使能夠對被跟蹤對象有一個基本的理解,為實現自動跟蹤初始化與跟蹤的自動恢復奠定了基礎。首先,手部區域需要從場景中分割出來。本文采用一種模糊集和模糊運算的進行手的區域和輪廓提取,通過對視頻流中空域和時域上的背景、運動、膚色等信息執行模糊運算,分割出精確的人手。

        靜態輪廓特征的識別,對分割出來的人手作邊緣檢測,得到手勢完整的輪廓邊緣。通過前面的模糊集合運算,能得到圖像的手勢分割的二值圖。兩個具有不同灰度值的相鄰區域之間總存在邊緣。邊緣是灰度值不連續的結果,這種不連續可利用求導方便地檢測出來。

        這樣就能得到完整的輪廓邊緣。如圖3所示,左邊為手部區域,右邊為手勢的輪廓。

        接下來是對提取的手勢輪廓作外接多邊形擬合。KenjiOka和YoichiSato的指尖搜索是首先在一個較大的搜索窗口內掃描確定20個候選指尖位置,然后再對匹配度最大的候選位置周圍的候選進行抑制,同時按一定規則去除位于指尖中間的部分候選。該由于需要對搜索區域進行多次逐像素的掃描,造成計算量較大,而且除去手勢中部候選位置的方法的魯棒性較差。文獻[5]給出了通過遍歷手勢輪廓的曲率來進行之間位置搜索的方法,通過對手勢按輪廓順序進行定長掃描的方法,可以找出指尖并做出輪廓線的外接多邊形。但是這種查找方式需要遍歷輪廓線的每個點,而且對每個點還需要作除法運算,這使得算法的計算量太大,而且在搜索指尖時,當受到光線變化使得輪廓線出現很多突起的邊緣時,使得識別工作出現困難。本文提出了一種查找外接邊的搜索方法,通過對手勢輪廓按輪廓點順序進行定長掃描,將手勢輪廓線的外接多邊形擬合出來,同時將滿足定義1的手勢輪廓外接凸邊形缺陷結構設為手勢識別的判斷特征。

        2.1.1手勢缺陷圖

        定義1手勢缺陷圖是指由手勢輪廓線外接多邊形以及多邊形各條邊所對應的谷底(depthpoint)所組成的特征描述方程。谷底是指外接多邊形的邊與該邊所對應的輪廓線上距離邊最遠的輪廓點。定義手勢缺陷圖的數據結構如下:

        TypedefstructCvConvexityDefect{

        CvPoint*start;//缺陷開始的輪廓點

        CvPoint*end;//缺陷結束的輪廓點

        CvPoint*depth_point;//缺陷中距離凸性最遠的輪廓點

        Floatdepth;//谷底距離凸性的深度

        }CvConvexityDefect;

        如圖4所示,手勢輪廓缺陷圖能很好地描述各種手勢,通過對手勢輪廓線外接多邊形的邊數以及邊所對應的谷底深度,可以將手勢缺陷圖映射到不同的手勢。其中A、B、C、D、E、F、G為手勢輪廓線的外接多邊形的各條邊,Da、Db、Dc、Dd、De、Df、Dg為手勢缺陷圖中的谷底到對應邊的深度。

        為了得到手勢輪廓缺陷圖,首先必須對手勢輪廓進行多邊形擬合,得出它的外接多邊形。本文提出了一種根據手勢輪廓上相鄰兩點間的凹凸性來進行擬合,通過一次遍歷輪廓上的點,對以下方程進行判定,將適當的點剔除,剩下的點即為外接多邊形的候選定點:

        by=nexty-cury(1)

        ay×bx-ax×by(2)

        ax=pcur.x-pprev.x,ay=pcur.y-pprev.y

        bx=pnext.x-pcur.x,by=pnext.y-pcur.y

        其中:pcur為當前遍歷的輪廓線上的點;pprev、pnext分別表示當前點的前一個點和后一個點;ax、ay分別為當前點和前一點的x和y坐標值差;bx、by分別為當前點和后一點指尖的x和y坐標值差。

        輪廓線凹凸形的擬合算法流程如下:

        a)將所有的輪廓線上的點按x坐標值大小排序,并找出所有的點中y坐標的最大最小值maxY和minY.

        b)將排序后的輪廓點劃分為四部分:首先按照y坐標將輪廓線分為上下兩個部分,將上半部分以maxY所在的x坐標(記為Xmaxy)劃分為兩個部分,分別記為topLeft〈左上〉和topRight〈右上〉;將下半部分以minY所在的x坐標(記為Xminy)劃分為兩個部分,分別記為bottomLeft〈左下〉和bottom-Right〈右下〉。

        c)分別對前一步劃分的四個部分(topLeft,topRight,bottomLeft,bottomRight)進行遍歷:對區域topLeft將滿足式(1)0,式(2)>0的點剔除;對區域TopRight將滿足(1)0,式(2)0的點剔除;對區域bottomLeft將滿足式式(1)>0,式(2)>0的點剔除;對區域bottomRight將滿足式(1)>0,式(2)>0的點剔除。剔除后剩下的點即為手勢輪廓線外接多邊形的頂點。

        手勢缺陷圖的谷底以及谷底深度的求解是建立在擬合外接多邊形基礎上,還需要對外接多邊形的每條邊所對應的輪廓線再進行一次遍歷,并將滿足以下方程的最大值求出即是該邊所對應的谷底:

        其中:scale為單位化量值;hull_cur和hull_next分別為外接多邊形當前遍歷的邊和下一條邊;dx0、dy0分別為外接多邊形當前邊的x和y坐標的差值;dx、dy分別為當前遍歷的輪廓線上的點與hull_cur點之間x和y坐標的差值;depth為遍歷點與對應邊之間的距離,它的最大值即為該邊對應的谷底深度,相應的點為谷底。

        通過以上搜索可以將手勢輪廓缺陷圖的特征值找出來,接下來便可以將缺陷圖的特征值(多邊形與谷底的關系)與已建立的庫中的特征值相比較,對手勢進行匹配,將手勢輪廓缺陷圖映射到不同的手勢上去。

        2.1.2手勢匹配

        手勢的匹配主要是基于手勢缺陷圖的匹配,手勢缺陷圖的特征值由外接多邊形以及谷底的位置和深度組成,如圖5所示。

        圖5 手勢以及對應缺陷圖

        根據多邊形的邊數以及各條邊的程度可以確定手指的數量,而谷底的深度和位置可以確定手指的關系和位置。由于這是根據手勢的整體圖像來進行分析,所以具有一定的魯棒性,當光線變化而導致手勢圖出現差別時,并不會導致手勢缺陷圖的變化。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 越西县| 平江县| 于田县| 札达县| 乌鲁木齐县| 朝阳县| 察隅县| 布拖县| 恩施市| 汉寿县| 周宁县| 五家渠市| 石林| 织金县| 江山市| 册亨县| 湖口县| 汉中市| 竹溪县| 昭苏县| 双城市| 天柱县| 栾城县| 浮梁县| 班戈县| 马公市| 东辽县| 宁海县| 汉源县| 疏附县| 东光县| 吕梁市| 杭州市| 合肥市| 临海市| 阳城县| 文化| 腾冲县| 登封市| 合肥市| 新闻|