新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > SPCA563B實現圖像識別系統

        SPCA563B實現圖像識別系統

        作者: 時間:2011-09-27 來源:網絡 收藏
          ②按逆時針方向搜索當前像素的3×3的鄰域,其起始搜索方向設定如下:

          若A[n-1].dir為奇數,則取(A[n-1].dir+7)rood 8;

          若A[n-1].dir為偶數,則取(A[n-1].dir+6)mod 8。

          在3×3鄰域中搜索到的第一個與當前像素相同的像素便為新的邊界點A[n],同時更新記錄從上一點搜索到邊界點A[n]的方向變量A[n].dir,記錄新的邊界點的坐標(A[n].x,A[n].y)。

          ③如果邊界點A[n]等于第一個邊界點A[0],即(A[n].x==A[O].xA[n].y==A[0].y)。停止搜索。結束跟蹤。否則重復步驟②。

          由邊界點A[O]、A[1]、A[2]、…、A[n]構成的邊界便為要跟蹤的邊界。算法中步驟①的作用足找出第一個邊界點,步驟③的作用是找出所有的邊界點。如圖9所示,左邊為原始圖像,右邊是用該算法仿真的結果。

          

        SPCA563B實現圖像識別系統

          2.2 手勢識別算法實現

          我們的主要目的是找出伸出手指的個數。開始用行掃描的方法通過行內從O→1或1→O黑白像素變化的次數來確定伸出手指的個數,但這種算法對于傾斜一定角度的手指數目判斷存在一定問題,因此轉而采用“提取指尖點算法”。

          提取指尖點的方法著眼于從手勢輪廓中搜索出指尖點,一個指尖點對應于一根手指,最后根據得到指尖點的個數來判定手指數目。判斷是不是指尖:分析手的形狀,手指的兩邊基本上是平行的。一直按逆時針方向前進,每經過一次指尖,手形輪廓的走向發生反向的變化。由于手形輪廓的邊緣存在一定的毛刺,因此可以用多點方向的平均來減小毛刺的影響。這里取36點方向的平均,表示為Average_dix[i]。是否經過指尖的判斷條件1:126=|Average_dir[i-1]一Average_dir[i+1]|=162。(說明:兩點方向相反,其方向值差4,3.5×36=126,4.5×36=162。)

          再分析手的形狀,兩手指之間邊緣輪廓的走向也滿足判斷條件l,故必須添加判斷條件。如圖10所示,當沿著一個方向搜索手的邊緣輪廓時,經過指尖走向一定與手指間缺口走向相反。因此,必須假設判定條件2:

          

        SPCA563B實現圖像識別系統

          Is_FingerVertex(dir0,dirl,dir2);

          這個函數是用來通過連續3點的方向來判斷這3點是否為逆時針走向。由于是沿著逆時針方向搜索邊緣輪廓的,故在判定條件1成立的前提下加上Is_FingerVertex(Average_dir[i-1],Average_dir[i],Average_dir[i+1])就可以判斷是否為指尖,從而判定手指的數目。順序3點是否為逆時針走向,具體在程序中可以構造一個循環隊列來實現。測試結果表明這種算法非常穩定。

          結語

          該系統具有語音輸出提示功能,操作更加人性化,并且可以通過USBl.1接口與PC進行通信;配合PC端的調試工具,還可以大大縮短功能開發的周期。


        上一頁 1 2 3 4 下一頁

        關鍵詞: SPCA563B 圖像識別

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 平武县| 玉林市| 招远市| 民丰县| 海口市| 成武县| 阜康市| 东源县| 正安县| 北宁市| 泰顺县| 兴山县| 深圳市| 丽江市| 江达县| 两当县| 万源市| 田东县| 修武县| 太仆寺旗| 九江县| 凉城县| 滦南县| 宝兴县| 兖州市| 明溪县| 浦东新区| 甘南县| 喀喇沁旗| 蓬安县| 溧阳市| 峨眉山市| 平定县| 恩施市| 申扎县| 建瓯市| 宁乡县| 纳雍县| 石渠县| 玛曲县| 鄂托克前旗|