freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計_基于計算機視覺的手勢跟蹤與識別技術(shù)的研究-資料下載頁

2024-12-01 09:40本頁面

【導(dǎo)讀】基于計算機視覺的手勢跟蹤與識別技術(shù)的研究

  

【正文】 大類間方差法 otsu); 對 Cb和 cr通道的圖像進(jìn)行二值化處理。實驗結(jié)果表明,與 Y通道相比,cb和 Cr色差通道具有更好的分割效果。 (手勢圖像的 Y通道、 cb通道和 cr通道二值化效果圖請參見圈 33)。 最大類問方差法的具體流程如下: (1)計算歸一化直方 圖 h(i); (2)計算 灰度 均值 ???2550 )。(*iT ihiu (3)計算直方圖零階累積矩 )(kw 和一階累積矩 )(ku 。0,1,...255k h ( i)*iu ( k) 。0,1,...255k )()( k 0i0 ???? ?? ??ki ihkw 用 Otsu算法對圖像做二值化處理的主要代碼如下所示: 但是用 Otsu法得到的手勢分割圖像還存在一定的噪聲,所以考慮運用形態(tài)學(xué)的開運算,先膨脹后腐蝕,從而得到較理想的分割效果 (手勢圖像的形態(tài)學(xué)處理效果請參見圖 3. 4)。為了對手的區(qū)域進(jìn)行更好的特征提取,文中使用灰度投影法來獲取準(zhǔn)確的手勢區(qū)域。具體方式是對經(jīng)過預(yù) 處理的二值圖像,分別在垂直方向和水平方向采用灰度投影法,從而得到手勢在 X 方向和 Y 方向的坐標(biāo)范圍 (姐一 x2), (y1 一 y2)。如圖 54所示, (a)是從實時視頻中 截取的手的 RGB 圖像, (b)為 (a)對應(yīng)的二值化圖像, (c)為通過灰度投影確定的準(zhǔn)確的手區(qū)域。 圖 54 采用灰度授彩法荻取手所在準(zhǔn)確的手區(qū)域 5. 2 手勢跟蹤實驗結(jié)果及分析 1手勢跟蹤系統(tǒng)流程 圖 55 Camshift算法流程圖 2手勢跟蹤實驗 圖 56 手勢跟蹤結(jié)果 我們將 CamShift 算法用于手勢的實時跟蹤,本實驗是在 Vc++和 OpenCV的環(huán)境下,利用 USB 接 u 的攝像頭采集圖像,實驗結(jié)果見圖 68,圖中橢圓內(nèi)部是待跟蹤的手勢。用Camshift 算法對具有特定顏色的甘標(biāo)進(jìn)行跟蹤,無需計算每幀圖像一 k 所有像素點的顏色概率分布,只需求出比當(dāng) dU搜索窗大一砦的區(qū)域內(nèi)的所有像素點的顏色概率分布,這樣就大大減少了計算最。實驗結(jié)果表明, CamShift跟蹤算法對系統(tǒng)資源要求不高,實時性較好,在實際的交 互 場景中表現(xiàn)了較強的魯棒性。 5. 3 實時手勢識別實驗結(jié)果及分析 5. 3. 1 手勢識別系統(tǒng)流程 在識別手勢時首先創(chuàng)建手勢庫,對圖像預(yù)處理和特征提取,得 到理想的手勢分割效果圖,并選用矩特征組作為手勢圖像的特征向量。接下來用支持向量機算法對手勢圖像進(jìn)行分類識別,對幾種常見的支持向量機多值分類算法、基于后驗概率的多分類算法以及幾種傳統(tǒng)的分類方法應(yīng)用于手勢識別的結(jié)果做了對比。 手勢識別流程圖見圖 57。 圖 57 手勢識別系統(tǒng)流程圖 手勢跟蹤與識別在人機交互中的應(yīng)用 為了驗證論文中的手勢跟蹤、識別算法,本文基于 VC++6. 0平臺編寫了一個簡單的 Word數(shù)字錄入程序,將手勢識別應(yīng)用于人機交互中,實現(xiàn)了從攝像頭輸入手勢對 Word文件的操作。首先新建一個 MFC AppW39。mard(EXE)I程,通過在 VIEW菜單選 Class Wizard,在 Automation選項中選 Add Class,然后選擇 From aType Library,添加 Microsoft Of: fice/ officell文件夾下的 MSWORD. OLB后即完成設(shè)置。 本文利用預(yù)定義的數(shù)字手勢 0,9實現(xiàn)了對 Word 的操作,我們在程序中定義:在 word文件打開之前,數(shù)字手勢 1表示單擊鼠標(biāo)左鍵,數(shù)字手勢 2表示單擊鼠標(biāo)右鍵,數(shù)字手勢 5表示雙擊鼠標(biāo)左鍵,從而實現(xiàn)手勢對鼠標(biāo)的簡單控制;當(dāng) Word文件打 開以后數(shù)字手勢 5 的鼠標(biāo)單擊或雙擊事件不再有效,此時數(shù)字手勢 19表示向 Word 文檔輸入數(shù)字 1— 9,即通過手勢識別結(jié)果向 Word文檔中自動寫入相應(yīng)手勢所對應(yīng)的數(shù)字。而定義數(shù)字手勢 O始終是關(guān)閉 Word 文件的手勢,所以本系統(tǒng)不能輸入數(shù)字 O。詳細(xì)的數(shù)字手勢與它所代表的人機交互功能的對照 表如表 52所示。 表 52 數(shù)字手勢與它所代表的人機交互功能的對照表 如圖 58所示,是 Word數(shù)字錄入系統(tǒng)的交互界面。點擊“啟動視頻輸入 按鈕,系統(tǒng)就開始通過 USB 攝像頭捕捉手勢并進(jìn)行識別,進(jìn)而實現(xiàn)對 Word 的簡單操 作。該手勢交互系統(tǒng)的功能如下: 打開 Word文件的功能:首先利用跟蹤模塊得到的相對位置信息來模擬鼠標(biāo)移動事件,讓鼠標(biāo)移動到桌面的 Word快捷方式,然后利用數(shù)字手勢 5的識別結(jié)果模擬鼠標(biāo)雙擊事件來打開 Wbrd文件,如圖 59(a)所示; 保存文件和關(guān)閉文件的功能:在完成數(shù)字錄入以后,使用手勢 0 來關(guān)閉 Word文件。在關(guān)閉 Word 時彈出“是否保存對文檔 1的更改”的對話框,此時通過編程實現(xiàn)錄入數(shù)字的功能停止而數(shù)字手勢 5的鼠標(biāo)單擊或雙擊功能再次被激活,然后結(jié)合鼠標(biāo)移動 (對應(yīng)手勢跟蹤 )和鼠標(biāo)左鍵單擊 (對應(yīng)數(shù)字手勢 )對應(yīng)的按鈕 (在圖 610(d)6PXC 應(yīng)“是 09”按鈕,在圖 59(e)中 XC 應(yīng)“保存”按鈕,來實現(xiàn)保存 (這里僅用手勢識別還不能在保存文件時任意寫入文件名 ),如圖 59(d)(e)所示; 圖 59手勢交互控 控制 word示意圖 6 總結(jié)與展望 基于手勢識別的人機交互是當(dāng)前智能人機交互的一個重要的研究課題。由于基于視覺的手勢識別是利用攝像機采集手勢信息,無需購買昂貴的設(shè)備,再者它在操作時更加自然、方便,符合以人為本和自由性的要求,因此對這一問題的研究有著重要的理論價值和應(yīng)用前景。 本文在 Microsoft Visual C++6. 0開發(fā)環(huán)境下,借助 OpCV開源庫,對基于計算機視覺的手勢跟蹤與識別各個階段的算法進(jìn)行了研究與驗證,具體內(nèi)容總結(jié)如下: 1.在手勢圖像預(yù)處理階段,為降低光照對手勢分割的干擾,選取 YCbCr色彩空間,利用其色度和亮度分離的特性,用最大類間方差算法進(jìn)行分割,再用形態(tài)學(xué)方法降噪,仿真實驗表明,在變化光照的情況下,本階段算法的手勢分割效果良好。 2.在手勢圖像特征提取階段,根據(jù)識別對象是手勢這一特點,提取幾何矩作為待識別手勢的特征并進(jìn)行算法有效性的驗證,實驗結(jié)果表明矩特征的旋轉(zhuǎn)、平移、尺 度不變性較好的解決了手勢采集時產(chǎn)生的旋轉(zhuǎn)、尺度等不確定性問題。 3.在支持向量機多分類方面,分別驗證了“一對多 、“一對一’’和決策有向無環(huán)圖腳 )等多分類算法在手勢識別中的分類性能,并進(jìn)一步研究了 SVM的 參數(shù)優(yōu)化問題,實驗結(jié)果表明“一對多 徑向基核函數(shù)的 SVM算法極大提高了手勢識別的準(zhǔn)確率。同時針對同一手勢樣本屬于多個類的錯分情況,本文提出將基于后驗概率的 SVM多分類算法用于手勢識別,以概率作為手勢分類的輸出,在一定程度上減少了誤判發(fā)生,最終測試樣本集的識別率達(dá)到98. 9%。 4.在跟蹤階段,針對待跟蹤目 標(biāo)是手勢以及要保證系統(tǒng)運行的實時性這兩個關(guān)鍵因素,本文選擇了以色彩信息為特征的 Camshift算法用于交互場景的手勢跟蹤,此算法對系統(tǒng)資源要求不高,在仿真實驗中表現(xiàn)出較好的實時性和魯棒性。 5.最后,本文基于 VC++6. 0平臺開發(fā)了一個簡單的 Word數(shù)字錄入系統(tǒng),將手勢識別應(yīng)用于人機交互中,實現(xiàn)了從攝像頭輸入手勢對 Word文檔的操作。本文的創(chuàng)新點:一是提出將基于 Hu矩特征和“一對多’’徑向基核函數(shù)支持向量機相結(jié)合的算法應(yīng)用到手勢識別,并對該算法進(jìn)行了仿真實驗,取得了比較理想的識別效果;二是針對一個手勢樣本同 時屬于多個類的錯分情況,提出將基于后驗概率的多類分類算法用于手勢識別,進(jìn)~步提高了識別率。 本文的研究還有需要改進(jìn)和進(jìn)一步深入的地方。在實時的手勢跟蹤和識別中我們還需要增加能夠識別的手勢的種類,并進(jìn)一步提高識別的速度和準(zhǔn)確性。基于計算機視覺的手勢研究有著重要的理論價值和應(yīng)用前景,因此我們相信手勢識別的研究將會得到更多的關(guān)注和發(fā)展。 7 附錄: 程序重要部分代碼 我們先來明確一些概念,首先, Android的事件處理機制是基于 Listener(監(jiān)聽器)來實現(xiàn)的,比我們今天所說的觸摸屏相關(guān)的事件,就是 通 過 onTouchListener。其次,所有 View的子類都可以通過 setOnTouchListener()、 setOnKeyListener()等方法來添加對某一類事件的監(jiān)聽器。第三, Listener一般會以 Interface(接口)的方式來提供,其中 包含一個或多個 abstract(抽象)方法,我們需要實現(xiàn)這些方法來完成 onTouch()、 onKey()等等的操作。這樣,當(dāng)我們給某個 view設(shè) 置了事件 Listener,并實現(xiàn)了其中的抽象方法以后,程序便可以在特定的事件被 dispatch到該 view的時候,通過 callbakc函數(shù)給予適 當(dāng)?shù)捻憫?yīng)。 看一個簡單的例子,就用最簡單的 TextView來說明(事實上和 ADT中生成的 skeleton沒有什么區(qū)別)。 class GestureTest extends Activity implements OnTouchListener{ 02. 03. @Override 04. protected void onCreate(Bundle savedInstanceState) { 05. (savedInstanceState)。 06. setContentView()。 07. 08. // init TextView 09. TextView tv = (TextView) findViewById()。 10. // set OnTouchListener on TextView 11. (this)。 12. // show some text 13. ()。 14. } 15. 16. @Override 17. public boolean onTouch(View v, MotionEvent event) { 18. (this, onTouch, ).show()。 19. return false。 20. } 我們給 TextView的實例 tv設(shè)定了一個 onTouchListener,因為 GestureTest類實現(xiàn)了OnTouchListener 接口,所以簡單的給一個 this作為參數(shù)即可。 onTouch方法則是實現(xiàn)了OnTouchListener中的抽象方法,我們只要在這里添加邏輯代碼即 可在用戶觸摸屏幕時做 出響應(yīng),就像我們這里所做的 —— 打出一個提示信息。 這里,我們可以通過 MotionEvent的 getAction()方法來獲取 Touch事件的類型,包括 ACTION_DOWN, ACTION_MOVE, ACTION_UP, 和 ACTION_CANCEL。 ACTION_DOWN是指按下觸摸屏,ACTION_MOVE是指按下觸摸屏后移動受力點, ACTION_UP則是指松 開觸摸屏, ACTION_CANCEL不會由用戶直接觸發(fā)(所以不在今天的討論 范圍,請參考(MotionEvent))。借助對于用戶不同操作的判斷,結(jié)合getRawX()、 getRawY()、 getX()和 getY()等方法來獲取坐標(biāo)后,我們可以實現(xiàn)諸如拖動某一個按鈕,拖動滾動條等功能。待機可以看看 MotionEvent類的文檔,另外也可以看考TouchPaint例子。 回到今天所要說的重點,當(dāng)我們捕捉到 Touch操作的時候,如何識別出用戶的 Gesture?這里我們需要 ,于是我們的 GestureTest類就變成了這個樣子。 class GestureTest extends Activity implements OnTouchListener, 2. OnGestureListener { 3.... 4.} 隨后,在 onTouch()方法中,我們調(diào)用 GestureDetector的 onTouchEvent()方法,將捕捉到的 MotionEvent交給 GestureDetector 來分析是否有合適的 callback函數(shù)來處理用戶的手勢。 1.@Override 2. public boolean onTouch(View v, MotionEvent event) { 3. // OnGestureListener will analyzes the given motion event 4. return (event)。 5. } 接下來,我們實現(xiàn)了以下 6個抽象方法,其中最有用的當(dāng)然是 onFling()、 onScroll()和onLongPress()了。我已經(jīng)把每一個方法代表的手勢的意思寫在了注釋里,大家看一下就明白了。 01.// 用戶輕觸觸摸屏,由 1個 MotionEvent ACTION_DOWN觸發(fā) 02. @Override 03. public boolean onDown(MotionEvent e) { 04. // TODO Autogenerated m
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1