多點(diǎn)觸摸畢業(yè)設(shè)計(jì)(含外文翻譯)_第1頁
已閱讀1頁,還剩76頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘  要</b></p><p>  近年來,隨著用戶對(duì)人機(jī)交互的友好性和自然性的需求不斷增加,興起了一種新的人機(jī)交互技術(shù)——多點(diǎn)觸摸技術(shù)。</p><p>  多點(diǎn)觸摸技術(shù)超越了傳統(tǒng)人機(jī)交互技術(shù)中使用的鼠標(biāo)和鍵盤,實(shí)現(xiàn)了用戶通過手指在傳統(tǒng)應(yīng)用平臺(tái)上的動(dòng)作直接與電腦進(jìn)行對(duì)話。它的主要優(yōu)點(diǎn)是,能夠?qū)崿F(xiàn)同一時(shí)間的多用戶交互,多觸點(diǎn)交互,并且能

2、夠?qū)换サ膶?duì)象進(jìn)行識(shí)別。多點(diǎn)觸摸技術(shù)較傳統(tǒng)的單一觸點(diǎn)交互技術(shù)更靈活,更友好,更具自然性。</p><p>  本文首先根據(jù)GUI Group提供的多點(diǎn)觸摸系統(tǒng)開源程序代碼完成了多點(diǎn)觸摸人機(jī)交互系統(tǒng)底層軟件的剖析。軟件功能主要分為四大部分:圖像預(yù)處理、觸摸點(diǎn)識(shí)別、運(yùn)動(dòng)跟蹤、觸點(diǎn)信息的傳輸。之后在圖像預(yù)處理步驟中的“圖像分割”部分,本文采用了一種基于大津法(OSTU)的自適應(yīng)閾值分割方法,使系統(tǒng)能夠在一定程度上自動(dòng)完

3、成在變光照條件下由灰度圖像到二值圖像的轉(zhuǎn)化。</p><p>  其次,考慮到原有特征點(diǎn)跟蹤方法算法“KNN(K最近鄰分類算法)”的跟蹤滯后性這一不足,本文基于“最小距離優(yōu)先算法”改進(jìn)出了一種適用于多點(diǎn)觸摸系統(tǒng)的更高效的特征點(diǎn)跟蹤方法“最小距離觸點(diǎn)跟蹤算法”,此方法能夠更快速的完成對(duì)特征點(diǎn)的識(shí)別和跟蹤。</p><p>  最后,手勢(shì)識(shí)別一直是多點(diǎn)觸摸技術(shù)研究的主要內(nèi)容,本文定義了幾種基本

4、的手勢(shì),并參考相關(guān)資料利用ActionScript 3.0編程實(shí)現(xiàn)了多點(diǎn)觸摸技術(shù)的簡(jiǎn)單應(yīng)用。</p><p>  實(shí)驗(yàn)證明,使用本論文設(shè)計(jì)的多點(diǎn)觸摸底層軟件能夠正確的檢測(cè)并跟蹤到觸點(diǎn),完成手勢(shì)的識(shí)別和多點(diǎn)觸摸的簡(jiǎn)單應(yīng)用;并且利用本文改進(jìn)的“最小距離觸點(diǎn)跟蹤算法”可以很好的提高觸點(diǎn)跟蹤速率,特征點(diǎn)跟蹤滯后時(shí)間縮短。</p><p>  關(guān)鍵詞:多點(diǎn)觸摸;特征點(diǎn)跟蹤;最小距離優(yōu)先算法

5、;手勢(shì)定義 </p><p>  Study on Methods of Multi-touch Human-computer Interaction Based on Optical Induction </p><p><b>  Abstract</b></p><p>  In recent years, since users’ de

6、mands on nature and friend attributes of computers are increasing, a new human-computer interaction technology called multi-touch human-computer interaction technology has been brought up.</p><p>  Multi-tou

7、ch human-computer interaction technology exceeds the mouse and the keyboard used in traditional ways, making it possible for users’ direct communication with computers through the movements and gestures of fingers on the

8、 traditional application interface. Its main advantages are that it supports multi-consumers’ and multi-points’ direct interaction at the same time. What’s more, multi-point touch is able to distinguish interactive objec

9、t identification. Compared with traditional single-</p><p>  Firstly, this paper completes the analysis of the ground software of multi-point touch system based on the open source code of multi-point touch s

10、ystem provided by GUI Group. The function of the software is mainly divided into four parts: image pre-processing, the recognition of blobs, movement tracking and the transmission of blob information. In the “image segme

11、ntation” step of “image pre-processing”, this paper uses a self-adaptive threshold method based on the universal OSTU algorithm and ma</p><p>  Secondly, taking into consideration the disadvantage of track d

12、elay caused by original blob tracking algorithm “KNN”, this paper works out a more efficient tracking method named “Nearest Distance Blob Tracking” algorithm based on the universal “Nearest distance Foremost” algorithm.

13、This improved algorithm is capable to complete the blob tracking process more quickly and cut down the delay time. </p><p>  Finally, as the gesture recognition has always been the main research content of m

14、ulti-point touch technology, this paper gives definitions of several basic gesture models and accomplishes the simple application of multi-point touch using ActionScript 3.0 based on related material.</p><p>

15、;  The experiment proves that the ground software of the multi-point touch system designed by this paper can correctly detect and track points, realizing the identification of gestures and basic multi-point touch applica

16、tion. Meanwhile, the “Nearest Distance Blob Tracking” algorithm improved by this paper succeeds in enhancing the tracking efficiency and the delay time of tracking is obviously decreased. </p><p>  Key Word

17、s:Multi-touch; Blob tracking; “Nearest Distance Foremost” algorithm; Self-adaptive Threshold; Gesture models </p><p><b>  目  錄</b></p><p><b>  摘  要I</b></p><p

18、>  AbstractII</p><p><b>  引  言3</b></p><p><b>  1緒論3</b></p><p>  1.1多點(diǎn)觸摸人機(jī)交互技術(shù)概述3</p><p>  1.2多點(diǎn)觸摸技術(shù)研究背景3</p><p><b>

19、  1.3研究概況3</b></p><p>  1.3.1國外研究概況3</p><p>  1.3.2國內(nèi)研究概況3</p><p>  1.4課題研究意義3</p><p>  2多點(diǎn)觸摸系統(tǒng)底層軟件的架構(gòu)分析3</p><p>  2.1多點(diǎn)觸摸系統(tǒng)總體模塊3</p>&l

20、t;p>  2.2圖像預(yù)處理3</p><p>  2.2.1灰度變換3</p><p>  2.2.2平滑去噪3</p><p>  2.2.3去除背景3</p><p>  2.2.4圖像分割3</p><p>  2.3觸摸點(diǎn)識(shí)別3</p><p>  2.3.1提取觸摸

21、點(diǎn)輪廓3</p><p>  2.3.2觸摸點(diǎn)幾何特征數(shù)據(jù)的獲取3</p><p>  2.4觸摸點(diǎn)的跟蹤3</p><p><b>  2.5信息傳輸3</b></p><p><b>  3自適應(yīng)閾值3</b></p><p><b>  3.1大津法

22、3</b></p><p>  3.2自適應(yīng)閾值主要代碼3</p><p>  3.3自適應(yīng)閾值仿真結(jié)果3</p><p>  4最小距離觸點(diǎn)跟蹤法3</p><p>  4.1KNN算法原理3</p><p>  4.1.1 KNN算法的核心程序3</p><p>  

23、4.2 KNN算法的不足3</p><p>  4.3 最小距離觸點(diǎn)跟蹤法3</p><p>  4.3.1 thresh的意義與確定3</p><p>  4.3.2最小距離優(yōu)先算法觸點(diǎn)的狀態(tài)與對(duì)應(yīng)事件的確定3</p><p>  4.3.3最小距離觸點(diǎn)跟蹤算法實(shí)現(xiàn)的基本步驟3</p><p>  4.3.

24、4最小距離觸點(diǎn)跟蹤法的核心代碼3</p><p>  4.4 最小距離觸點(diǎn)算法與KNN算法的比較3</p><p>  5簡(jiǎn)單的手勢(shì)識(shí)別3</p><p>  5.1簡(jiǎn)單的手勢(shì)定義3</p><p>  5.2 移動(dòng)動(dòng)作3</p><p>  5.3 放大縮小動(dòng)作3</p><p>

25、  5.4 多點(diǎn)觸摸應(yīng)用3</p><p><b>  結(jié)  論3</b></p><p><b>  參 考 文 獻(xiàn)3</b></p><p>  附 錄 A 翻譯原文3</p><p>  附 錄 B 翻譯的中文3</p><p>  附 錄 C 最小距離觸點(diǎn)追

26、蹤程序代碼3</p><p>  附 錄 D 自適應(yīng)閾值程序代碼3</p><p>  在 學(xué) 取 得 成 果3</p><p><b>  致  謝3</b></p><p><b>  引  言</b></p><p>  隨著科技的發(fā)展,計(jì)算機(jī)已逐漸成為人們工作

27、、生活和休閑娛樂中不可缺少的一部分。與此同時(shí),怎樣使機(jī)器與人之間的交互更自然,更和諧也成為了當(dāng)今研究的熱點(diǎn)。 </p><p>  多點(diǎn)觸摸技術(shù)作為近幾十年來一種新興的人機(jī)交互模式[1],完全拋棄了傳統(tǒng)的外部硬件交互設(shè)備(如鼠標(biāo)鍵盤),而是通過人的手指與觸摸屏的接觸動(dòng)作向計(jì)算機(jī)傳達(dá)特定的信息(如拖拽,點(diǎn)擊、放大縮小等)。它能夠允許多用戶、多點(diǎn)對(duì)同一虛擬界面的同時(shí)訪問,這種交互方式符合人的行為學(xué)特點(diǎn),達(dá)到了自然和諧

28、的境界,增強(qiáng)了用戶體驗(yàn),是一次人機(jī)交互技術(shù)的革命。</p><p>  隨著國內(nèi)外研究工作者的不斷深入研究,多點(diǎn)觸摸技術(shù)已經(jīng)廣為人們所知。并且已經(jīng)有很多研究機(jī)構(gòu)、企業(yè)等有了自己的多點(diǎn)觸摸商業(yè)產(chǎn)品,如三菱電子的Diamond Touch[2],微軟的Microsoft surface[3]等。</p><p>  鑒于多點(diǎn)觸摸技術(shù)的突出優(yōu)勢(shì),本文基于GUI Group提供的開源多點(diǎn)觸摸程序代

29、碼,完成了對(duì)一個(gè)多點(diǎn)觸摸系統(tǒng)底層軟件的分析與設(shè)計(jì)。程序能夠?qū)崿F(xiàn)圖像濾波、圖像分割、目標(biāo)跟蹤等功能從而獲取觸點(diǎn)信息,并通過TUIO協(xié)議將圖像信息傳遞給上層軟件,實(shí)現(xiàn)多點(diǎn)觸摸的應(yīng)用。在圖像分割步驟中,本文使用了一種基于大津法的自適應(yīng)閾值分割方法,使灰度圖像到二值圖像的變換效果有了一定的提高。此外,對(duì)觸點(diǎn)快速準(zhǔn)確的跟蹤是手勢(shì)識(shí)別的先決條件,也是多點(diǎn)觸摸底層軟件中非常關(guān)鍵的一環(huán)。為了解決多點(diǎn)觸摸開源代碼(Community Core Visio

30、n)中所采用的“KNN”跟蹤算法產(chǎn)生的跟蹤滯后問題,本文基于“最小距離優(yōu)先法”的原理,編寫了適用于多點(diǎn)觸摸系統(tǒng)的“最小距離觸點(diǎn)跟蹤算法”程序進(jìn)行觸點(diǎn)跟蹤,能夠在一定程度上提高跟蹤效率并減少跟蹤滯后時(shí)間。</p><p><b>  1緒論</b></p><p>  1.1多點(diǎn)觸摸人機(jī)交互技術(shù)概述</p><p>  觸摸技術(shù)對(duì)人們并不陌生,例

31、如日常生活中經(jīng)常能接觸到的觸摸技術(shù)有銀行取款機(jī)的觸摸屏,醫(yī)院或圖書館大廳的觸控技術(shù)電腦,支出觸摸屏的手機(jī)、MP4、數(shù)碼相機(jī)等。但是這些生活中經(jīng)常用到的觸摸屏大多是單點(diǎn)觸摸,也就是說只能識(shí)別和支持每次一個(gè)手指的觸孔、點(diǎn)擊。若果有兩個(gè)以上的點(diǎn)被觸碰,系統(tǒng)就不會(huì)做出正確的響應(yīng)。而多點(diǎn)觸摸人機(jī)交互技術(shù)把任務(wù)分解成兩個(gè)部分,一是同時(shí)采集多點(diǎn)信號(hào),二是對(duì)每路信號(hào)的意義進(jìn)行判斷,也就是進(jìn)行手勢(shì)的識(shí)別,從而實(shí)現(xiàn)對(duì)多用戶多手指在同一時(shí)刻的點(diǎn)擊碰觸動(dòng)作做出

32、正確的反應(yīng)。最典型的多點(diǎn)觸摸應(yīng)用便是時(shí)下蘋果公司成產(chǎn)的iPhone和iPod[4] 。多點(diǎn)觸摸技術(shù)作為近年來一項(xiàng)新興的技術(shù),改變了人與信息間的交互方式,增強(qiáng)了用戶體驗(yàn),達(dá)到了自然和諧的境界,與人的認(rèn)知特點(diǎn)和行為學(xué)特點(diǎn)相吻合。 </p><p>  1.2多點(diǎn)觸摸技術(shù)研究背景</p><p>  人機(jī)交互技術(shù)(Human-Computer Interaction Techniques)[5]

33、是指通過計(jì)算機(jī)輸入、輸出設(shè)備,以有效的方式實(shí)現(xiàn)人與計(jì)算機(jī)對(duì)話的技術(shù)。它是計(jì)算機(jī)用戶界面設(shè)計(jì)中的重要內(nèi)容之一,并與認(rèn)知學(xué)、心理學(xué)、人機(jī)工程學(xué)等學(xué)科領(lǐng)域有密切的聯(lián)系[6]。人機(jī)交互和計(jì)算機(jī)用戶界面剛剛走過基于字符方式的命令語言式界面,目前正處于圖形用戶界面時(shí)代。但是,計(jì)算機(jī)科學(xué)家并不滿足于這種現(xiàn)狀,他們正積極探索新型風(fēng)格的人機(jī)交互技術(shù)。未來人機(jī)交互技術(shù)的發(fā)展趨勢(shì)是追求多維信息空間和“基于自然交互方式的”的人機(jī)交互風(fēng)格[7]。</p&g

34、t;<p>  圖1.1人機(jī)交互的媒介物</p><p>  如圖1.1所示,隨著社會(huì)信息化產(chǎn)業(yè)的不斷發(fā)展,人機(jī)交互的媒介物在不斷發(fā)生改變,從鼠標(biāo)、鍵盤、游戲手柄、遙控器等與電腦交互到目前流行的多點(diǎn)觸控技術(shù)支持用戶使用手指、手勢(shì)等直接與電腦進(jìn)行交互[8][9]。</p><p><b>  1.3研究概況</b></p><p>

35、  1.3.1國外研究概況</p><p>  西方國家從上世紀(jì)八十年代就開始對(duì)多點(diǎn)觸摸技術(shù)進(jìn)行研究了。1983年就曾有科學(xué)家將鍵盤和觸控板聯(lián)系在一起同時(shí)操作[10],而且在同年貝爾實(shí)驗(yàn)室[11]第一篇關(guān)于多點(diǎn)觸摸技術(shù)的論文,為該技術(shù)的興起打下了基礎(chǔ)。1984年,人機(jī)交互界面科學(xué)家Bill Buxton從人類雙手本能的生理功能著手,研究界面操作的實(shí)際可行性,最終研發(fā)出了一套可以對(duì)圖像進(jìn)行操作的多點(diǎn)觸摸系統(tǒng)。同年,

36、微軟公司也正式開始對(duì)多點(diǎn)觸控技術(shù)進(jìn)行研究。1991年,Pierre Wellner自主研發(fā)出了一張“數(shù)碼桌子”(Digital Desk)[12][13] 發(fā)表了相應(yīng)的論文,詳細(xì)地介紹了如何采用多個(gè)手指和不同的姿勢(shì)進(jìn)行交互。1992年,Sun Microsystems[14]一段假想12年后將出現(xiàn)的新科技的科幻片,其中就有類似多點(diǎn)觸摸的技術(shù),這對(duì)于該技術(shù)的發(fā)展也具有高度的啟發(fā)性。1999年,Alias Wave front首先推出了一款

37、叫做Portfolio Wall的產(chǎn)品。他采用了大尺寸的觸控屏幕,配合滑動(dòng)與點(diǎn)選擇兩種手勢(shì)操作,就能夠及時(shí)瀏覽大量的圖像與影片。它的概念和操作都很簡(jiǎn)單,但在當(dāng)時(shí)已經(jīng)是最接近商品化的研究方案之一</p><p>  圖1.2 Diamond Touch</p><p>  2002年,好萊塢也注意到了這個(gè)科技新動(dòng)向,在《少數(shù)派報(bào)告(Minority Report)》這部電影中,主人公用手指控

38、制虛擬屏,如下圖1.3所示?!岸帱c(diǎn)觸摸”成為了重要的科幻橋段,為多點(diǎn)觸摸技術(shù)造勢(shì)不少。</p><p>  圖1.3 Minority Report</p><p>  2006年,是多點(diǎn)觸摸技術(shù)發(fā)展最重要的一年。Jefferson Y. Han于同年2月在美國TED4大會(huì)上向全世界演示了他們的多點(diǎn)觸摸裝置的實(shí)際操作和應(yīng)用,如下圖1.4所示。這也是之后多點(diǎn)觸摸產(chǎn)品席卷全球的風(fēng)潮的開始。這次

39、里程碑式的實(shí)際演示,標(biāo)志著研發(fā)重心從硬件技術(shù)轉(zhuǎn)向了軟件應(yīng)用。</p><p>  圖1.4 Jefferson Y. Han對(duì)多點(diǎn)觸摸技術(shù)的演示</p><p>  1.3.2國內(nèi)研究概況</p><p>  和西方發(fā)達(dá)國家比較,國內(nèi)大部分研究機(jī)構(gòu)、專業(yè)院校和高端企業(yè)對(duì)多點(diǎn)觸摸技術(shù)的研究投入相對(duì)有限。雖然進(jìn)入21世紀(jì)之后,部分發(fā)達(dá)城市,如北京、廣州、上海和深圳等的高

40、等院校已投入了相當(dāng)規(guī)模的資金用于多點(diǎn)觸摸技術(shù)的研發(fā)和平臺(tái)的搭建,但多點(diǎn)觸摸技術(shù)的核心仍在西方國家,國內(nèi)缺少一定的人才和資金,而且目前國內(nèi)在這方面的市場(chǎng)沒有被培養(yǎng)起來,仍然很不完善。但是近幾年,隨著政府開展的大力扶持科技創(chuàng)新的計(jì)劃以及多點(diǎn)觸摸技術(shù)研究的專門論壇的興起,使開發(fā)人員能夠更方便的獲取行業(yè)的最新發(fā)展信息。</p><p>  例如北京優(yōu)愛交互科技有限公司[15](HCI中國),是國內(nèi)最大的人機(jī)交互設(shè)備供應(yīng)商

41、,也是國內(nèi)最早投入研究多點(diǎn)觸摸技術(shù)并且對(duì)該技術(shù)產(chǎn)品出售的自主性企業(yè)。目前該公司包含有由各種硬件技術(shù)構(gòu)建的多點(diǎn)觸摸設(shè)備(交互桌、交互墻以及支持不同觸摸數(shù)量點(diǎn)的觸摸薄屏),如下圖1.5所示是他們研發(fā)的多點(diǎn)觸摸吧臺(tái)。</p><p>  圖1.5 多點(diǎn)觸摸吧臺(tái)</p><p>  所以,未來將會(huì)有更多的人才被吸引到多點(diǎn)觸摸交互界面設(shè)計(jì)的領(lǐng)域中,國內(nèi)的發(fā)展前景將是非常光明的。</p>

42、<p><b>  1.4課題研究意義</b></p><p>  多點(diǎn)觸摸技術(shù)作為一種新型的人機(jī)交互方式,打破了傳統(tǒng)的單點(diǎn)觸摸屏技術(shù)只能同時(shí)響應(yīng)一個(gè)觸點(diǎn)、沒有從本質(zhì)上改變交互方式、只是用手指點(diǎn)擊代替了鼠標(biāo)操作、缺乏智能性以及缺少“以用戶為中心”的交互自然性和高效性的僵局,讓雙手自由交互成為了可能[16]。</p><p>  多點(diǎn)觸控技術(shù)利用光學(xué)和材料學(xué)

43、技術(shù),構(gòu)建了一個(gè)能同時(shí)檢測(cè)多個(gè)觸點(diǎn)的觸控平臺(tái),使得用戶能夠運(yùn)用多個(gè)手指同時(shí)操作并實(shí)現(xiàn)基于手勢(shì)的人機(jī)交互,而且可以讓多個(gè)用戶同時(shí)操作實(shí)現(xiàn)基于協(xié)同手勢(shì)的交互[17]。近幾年,自從多點(diǎn)觸摸技術(shù)的出現(xiàn)以及硬件技術(shù)的發(fā)展,構(gòu)建一套廉價(jià)的多點(diǎn)觸摸平臺(tái)也變得相對(duì)簡(jiǎn)單。因此這種以人為中心的自然高效的人機(jī)交互技術(shù)已經(jīng)在眾多領(lǐng)域中得到了推崇[18],如個(gè)人便攜式信息產(chǎn)品、信息家電、公共信息查詢、電子游戲、教育、展示、指揮決策中心等。</p>

44、<p>  鼠標(biāo)和圖形用戶界面是電腦大規(guī)模普及的重要原因。但是傳統(tǒng)的人機(jī)交互是間接的并且是需要識(shí)別的一種模式。而建立在多點(diǎn)觸摸上的人機(jī)交互是自然直觀的,流暢的且令人回味的。</p><p>  隨著計(jì)算機(jī)在國民經(jīng)濟(jì)各個(gè)領(lǐng)域應(yīng)用深度和廣度的全面推進(jìn),它與我們?nèi)粘I畹年P(guān)系越來越緊密,從而使研究高效的人機(jī)交互方式成為必要。世界各國都將人機(jī)交互技術(shù)作為重點(diǎn)研究的一項(xiàng)關(guān)鍵技術(shù),美國總統(tǒng)信息技術(shù)顧問委員會(huì)的“21

45、世紀(jì)的信息技術(shù)報(bào)告”中將“人機(jī)交互和信息管理”列為新世紀(jì)4項(xiàng)重點(diǎn)發(fā)展的信息技術(shù)(還包括軟件、可伸縮信息基礎(chǔ)設(shè)施、高端計(jì)算)之一,它的目標(biāo)是研制“能聽、能說、能理解人類語言的計(jì)算機(jī)”,并指出 “現(xiàn)在美國 40 %以上的家庭擁有計(jì)算機(jī),然而,對(duì)于大多數(shù)美國人來說,計(jì)算機(jī)仍然難以使用。調(diào)查表明,由于不理解計(jì)算機(jī)正在做什么,用戶浪費(fèi)了12%以上的上機(jī)時(shí)間。更好的人機(jī)交互將使計(jì)算機(jī)易于使用,并使使用者更愉快,因而可提高生產(chǎn)率??紤]到現(xiàn)在經(jīng)常使用計(jì)

46、算機(jī)的人數(shù)多,研制這種計(jì)算機(jī)的回報(bào)將非常巨大。微軟亞洲研究院從成立一開始,就將新一代人機(jī)交互技術(shù)作為其主要研究方向。我國國家自然科學(xué)基金會(huì)、國家重點(diǎn)基礎(chǔ)研究發(fā)展計(jì)劃(973)、國家高技術(shù)研究發(fā)展計(jì)劃(863)等項(xiàng)目指南中,均將先進(jìn)的人機(jī)交互、虛擬現(xiàn)實(shí)技術(shù)列為予以特別關(guān)注的資助項(xiàng)目[19]。</p><p>  綜上所述,本課題對(duì)于多點(diǎn)觸摸人機(jī)交互技術(shù)觸摸點(diǎn)檢測(cè)以及簡(jiǎn)單手勢(shì)定義的研究,無論從人機(jī)交互技術(shù)的發(fā)展趨勢(shì)還

47、是從多點(diǎn)觸摸的應(yīng)用前景上,都具有非常重要的意義。</p><p>  2多點(diǎn)觸摸系統(tǒng)底層軟件的架構(gòu)分析</p><p>  本文主要的研究?jī)?nèi)容是對(duì)多點(diǎn)觸摸系統(tǒng)的底層軟件進(jìn)行分析,改進(jìn)與實(shí)現(xiàn),并完成基本的手勢(shì)定義與編程從而實(shí)現(xiàn)多點(diǎn)觸摸的應(yīng)用。</p><p>  2.1多點(diǎn)觸摸系統(tǒng)總體模塊</p><p>  多點(diǎn)觸摸系統(tǒng)有兩個(gè)關(guān)鍵部分組成:硬

48、件系統(tǒng)與軟件算法。硬件系統(tǒng)由光學(xué)傳感器、紅外光源和顯示設(shè)備組成。硬件系統(tǒng)主要完成觸點(diǎn)信號(hào)的發(fā)生和觸點(diǎn)信號(hào)的同時(shí)采集。軟件系統(tǒng)完成觸點(diǎn)信號(hào)的意義判斷,也就是觸點(diǎn)信號(hào)處理與觸點(diǎn)手勢(shì)識(shí)別,并且基于上述識(shí)別結(jié)果實(shí)現(xiàn)與上層軟件的溝通和交互應(yīng)用。系統(tǒng)的總體模塊圖如圖2.1所示。</p><p>  圖2.1 多點(diǎn)觸摸系統(tǒng)總體模塊圖</p><p>  從上面的系統(tǒng)總體模塊圖2.1可以看出整個(gè)系統(tǒng)的軟件

49、部分由五個(gè)模塊組成(用方框標(biāo)出):圖像處理、運(yùn)動(dòng)跟蹤、信息傳輸、手勢(shì)識(shí)別和交互界面。其中圖像處理、運(yùn)動(dòng)跟蹤和信息傳輸部分屬于底層軟件的內(nèi)容,而手勢(shì)識(shí)別與交互界面屬于上層軟件的內(nèi)容。每個(gè)模塊都有各自的功能,概括介紹如下:</p><p>  圖像預(yù)處理模塊:對(duì)紅外攝像機(jī)捕捉到的圖像進(jìn)行灰度變換、平滑去噪、去處背景和圖像分割等處理,這樣就把需要處理的圖像從原始畫面中分離出來。</p><p>

50、  運(yùn)動(dòng)跟蹤模塊:通過對(duì)一系列連續(xù)幀的計(jì)算和分析,實(shí)現(xiàn)對(duì)觸摸點(diǎn)的跟蹤,并獲得觸摸點(diǎn)的運(yùn)動(dòng)狀態(tài)信息,如位置,加速度等。運(yùn)動(dòng)跟蹤模塊是軟件系統(tǒng)中非常重要的一環(huán)。</p><p>  信息傳輸模塊:底層軟件完成了觸點(diǎn)檢測(cè)與跟蹤后,利用TUIO傳輸協(xié)議實(shí)現(xiàn)與上層軟件的通信,向上層軟件發(fā)送觸點(diǎn)信息數(shù)據(jù)包以及諸如按下、移動(dòng)、釋放等基本操作事件。</p><p>  手勢(shì)識(shí)別模塊:上層軟件得到了觸摸點(diǎn)的

51、運(yùn)動(dòng)狀態(tài)之后,需要根據(jù)這些信息來判斷用戶在觸摸屏上的進(jìn)行了哪些操作動(dòng)作,例如點(diǎn)擊,旋轉(zhuǎn)等。</p><p>  交互界面模塊:顯示交互的最終結(jié)果,例如圖片的移動(dòng),放大縮小,點(diǎn)擊按鈕的變化等視覺效果。</p><p><b>  2.2圖像預(yù)處理</b></p><p>  對(duì)攝像機(jī)拍攝到的圖像進(jìn)行的第一步運(yùn)算就是圖像預(yù)處理。圖像預(yù)處理簡(jiǎn)單地說就

52、是利用計(jì)算機(jī)對(duì)圖像進(jìn)行分析,從而獲得所需要的圖像效果。在多點(diǎn)觸摸系統(tǒng)中,由于圖像傳感器本身的噪聲以及環(huán)境光源的干擾,攝像機(jī)采集到的圖像除了想要的觸點(diǎn)信息之外,還有很多噪點(diǎn)和無用的背景,這會(huì)對(duì)接下來觸點(diǎn)檢測(cè)和手勢(shì)識(shí)別有很大的影響。圖像預(yù)處理的目的就是對(duì)攝像機(jī)采集到的圖像進(jìn)行去除噪聲和過濾,得到一幅清晰的易于處理的圖像,如圖2.2。圖像預(yù)處理有四個(gè)主要步驟:灰度變換、平滑去噪、去除背景、圖像分割。</p><p> 

53、 圖2.2 從灰度圖像到經(jīng)過所有圖像預(yù)處理步驟后的圖像</p><p><b>  2.2.1灰度變換</b></p><p>  在灰度處理中,要將紅外攝像機(jī)拍攝的原始彩色圖像轉(zhuǎn)換為灰度圖像(圖2.3),這個(gè)過程叫做灰度變換。進(jìn)行灰度變化有兩個(gè)重要原因:第一,去掉圖片中沒有作用的彩色信息,減少處理數(shù)據(jù)量。彩色圖像信息對(duì)于后面的觸點(diǎn)檢測(cè)和分析沒有任何的幫助,而且對(duì)于數(shù)

54、字圖像,彩色圖像占用的存儲(chǔ)空間要比灰度圖像大得多,所以圖像預(yù)處理的第一個(gè)環(huán)節(jié)就是要將彩色圖像轉(zhuǎn)換為灰度圖像,以保證接下去程序的效率。第二,簡(jiǎn)化算法。在下面的處理中,分析輪廓和分析形狀的算法對(duì)于彩色圖像的處理要比對(duì)于灰度圖像的處理復(fù)雜得多,所以轉(zhuǎn)化成灰度圖像對(duì)于簡(jiǎn)化算法有很大幫助。</p><p><b>  圖2.3 灰度圖像</b></p><p>  通過查閱資料

55、將彩色圖像轉(zhuǎn)變成灰度圖像有一個(gè)通用的心理學(xué)公式(公式2.1): </p><p><b>  (2.1)</b></p><p>  公式中的R、G、B分別代表紅、綠、藍(lán),將0-255的數(shù)值按比例對(duì)應(yīng)轉(zhuǎn)換為0.0-1.0,公式中的Gray就是計(jì)算出的各個(gè)像素的灰度值。本文利用OpenCV(Open Source Computer Vision Library開源

56、計(jì)算機(jī)視覺庫)中的函數(shù)來實(shí)現(xiàn)這一變換:</p><p>  cvCvtColor( mom.getCvImage(), cvImage, CV_RGB2GRAY );</p><p>  其中mom.getCvImage()是輸入的源浮點(diǎn)圖像即原始圖像,cvImage是經(jīng)過灰度變換后的輸出圖像,CV_RGB2GRAY表式將彩色圖像轉(zhuǎn)化為灰度圖像。</p><p>&

57、lt;b>  2.2.2平滑去噪</b></p><p>  經(jīng)過灰度變換之后,多點(diǎn)觸摸系統(tǒng)會(huì)根據(jù)一個(gè)設(shè)置好的初始閾值將灰度圖像轉(zhuǎn)化為二值圖像(具體的二值化圖像變換過程見2.2.4),如圖2.4??梢钥吹皆嫉牟噬珗D像變成了二值圖像,不必要的色彩信息被去掉了,但這樣還是不能達(dá)到要求,因?yàn)榕臄z到的圖像中還存在很多噪聲,這是單單進(jìn)行灰度變換和簡(jiǎn)單的二值圖像變換所不能剔除的。所以在圖像與處理步驟中,還

58、有一個(gè)很重要的環(huán)節(jié)就是進(jìn)行平滑處理。</p><p>  圖2.4 灰度圖像經(jīng)初始閾值轉(zhuǎn)化成二值圖像</p><p>  對(duì)圖像的平滑操作可以去掉圖像噪聲,但同時(shí)也會(huì)使一些重要圖像信息的邊緣變得模糊,這對(duì)后面的輪廓分析會(huì)有比較大的影響。所以要選用一種合適的平滑算法,讓去掉噪聲的同時(shí)最大程度的保留圖像有用信息。</p><p>  GUI Group采用Open So

59、urce Computer Vision Library(簡(jiǎn)稱OpenCV)函數(shù)庫中的平滑函數(shù)來進(jìn)行平滑變換:</p><p>  cvSmooth( cvImage, cvImageTemp, CV_GAUSSIAN ,value );</p><p>  這句函數(shù)的功能是將輸入圖像cvImage經(jīng)過高斯模糊(CV_GAUSSIAN表示選用高斯模糊方法)后儲(chǔ)存到圖像cvImageTemp

60、中,value(在多點(diǎn)觸摸硬件平臺(tái)上手動(dòng)調(diào)節(jié)“smooth”的參數(shù)值)表示對(duì)圖像進(jìn)行核大小為 value2的高斯卷積。高斯模糊方法的中心思想是建立的一個(gè)數(shù)學(xué)模型,通過這個(gè)模型來將圖像數(shù)據(jù)進(jìn)行能量轉(zhuǎn)化,能量低的就排除掉,噪聲就是屬于低能量部分。</p><p>  經(jīng)過平滑去噪的處理后,圖像中的噪聲就被去掉(如圖2.5所示),下面就可以進(jìn)行背景的去除。</p><p>  圖2.5 二值圖像

61、經(jīng)平滑去噪操作后的圖像</p><p><b>  2.2.3去除背景</b></p><p>  在多點(diǎn)觸摸系統(tǒng)中,由于硬件上的因素,很難做到屏幕上一點(diǎn)干擾都沒有,但是這種干擾和上面平滑去噪操作中提到的圖像噪點(diǎn)是不同的。平滑去噪中的圖像噪點(diǎn)是由于數(shù)字?jǐn)z像機(jī)內(nèi)部的電氣特性和AV線傳輸信號(hào)的過程中疊加在圖像上的,通常都是非常小的噪聲點(diǎn)。而這里所提到的干擾是多點(diǎn)觸摸系統(tǒng)中

62、由于硬件工藝所產(chǎn)生的問題,如硬件設(shè)備金屬材料的反光投影會(huì)經(jīng)常出現(xiàn)在圖像中形成干擾。另外,還有室內(nèi)室外某些紅外光線的干擾。這些都會(huì)被攝像機(jī)捕捉在畫面中,在平滑去噪的操作中不能夠?qū)⑦@些干擾完全去掉,但這些干擾會(huì)對(duì)后面的分析產(chǎn)生很大的影響。</p><p>  圖2.6 平滑去噪后的圖像 圖2.7 經(jīng)過去除背景后的圖像</p><p>  如圖2.6,圖中除了

63、手的圖像之外還有屏幕邊緣以及環(huán)境中的噪點(diǎn)圖像。將手從觸摸屏拿下來,后面的干擾圖像還是會(huì)存在并基本保持不變。所以當(dāng)把手從觸摸屏拿下來之后,使用清屏函數(shù),屏幕被清零了,這樣背景中的固定干擾也被移除了。這時(shí)再把手放上去,干擾就明顯少多了(如圖2.7)。</p><p><b>  2.2.4圖像分割</b></p><p>  經(jīng)過上述圖像預(yù)處理的前三個(gè)步驟:灰度轉(zhuǎn)換,平滑

64、去噪和背景去除,實(shí)現(xiàn)了將原始圖像中的不必要信息去掉,并且將有用的信息增強(qiáng)。在這些步驟之后,就要對(duì)圖像進(jìn)行分割,圖像分割的主要目標(biāo)是將圖像中要處理的部分與從背景圖像等無用信息中分割出來如圖2.8。</p><p>  圖2.8 背景去除后的圖像再經(jīng)過圖像分割后得到的圖像</p><p>  在經(jīng)過前三個(gè)處理步驟之后,可以看到,手指的圖像已經(jīng)可以比較清楚的和其他部分區(qū)分開了,下面要做的就是將手

65、指部分從圖像中分割出來。圖像分割的方法很多,根據(jù)實(shí)際的問題,選用比較簡(jiǎn)單的一種方法:閾值法(threshold)。</p><p>  閾值法就是將圖像中像素灰度值大于某個(gè)設(shè)定值的部分全部設(shè)為255,而剩余部分全部設(shè)為0。這樣一幅灰度圖就轉(zhuǎn)變?yōu)榱艘环祱D像。也就是說一幅圖像上只有黑和白兩部分,含有信息的部分(手指)就標(biāo)記為白色,沒有信息的部分就標(biāo)記為黑色,這樣也就把手指圖像部分分割出來了。前面2.2.2節(jié)已提到

66、過,在灰度變換后,系統(tǒng)已經(jīng)根據(jù)一個(gè)初始的閾值將灰度圖像轉(zhuǎn)化成二值圖像,但那時(shí)的二值圖像含有很多噪聲所以只是粗糙的變化(如圖2.4,這里再次引用)。現(xiàn)在要進(jìn)行的是更精確的二值圖像的轉(zhuǎn)化。</p><p>  此過程利用OpenCV函數(shù)來實(shí)現(xiàn):</p><p>  cvThreshold( cvImage, cvImageTemp, value, 255, CV_THRESH_BINARY )

67、;</p><p>  cvAdaptiveThreshold( cvImage, cvImageTemp, 255, adaptive_method, threshold_type, blockSize, offset);</p><p>  第一個(gè)函數(shù)是固定閾值轉(zhuǎn)換函數(shù),它的功能是將輸入的灰度圖像轉(zhuǎn)化成二值圖像。其中cvImage為輸入圖像,cvImageTemp為輸出圖像,value

68、(可手動(dòng)調(diào)整)為設(shè)置的閾值,CV_THRESH_BINARY為閾值類型,255為使用CV_THRESH_BINARY的灰度最大值。變化原則為當(dāng)cvImage圖像中某部分的灰度值大于value時(shí),將這部分圖像的灰度值設(shè)為255(白);當(dāng)cvImage圖像中某部分的灰度值小于等于value時(shí),將這部分圖像的灰度值設(shè)為0(黑)。</p><p>  第二個(gè)函數(shù)為自適應(yīng)閾值調(diào)整函數(shù),它的功能是將輸入的灰度圖像按照給定的不

69、同參數(shù)轉(zhuǎn)化成對(duì)應(yīng)的二值圖像。其中cvImage為輸入圖像,cvImageTemp為輸出圖像,adaptive_method 是自適應(yīng)閾值算法,255是采用adaptive_method時(shí)的灰度最大值,threshold_type為閾值類型,blockSize(可手動(dòng)調(diào)整)是用來計(jì)算閾值的像素鄰域大小,offset是與閾值算法有關(guān)的參數(shù)。簡(jiǎn)單地說,當(dāng)輸入的blockSize發(fā)生變化時(shí),函數(shù)會(huì)根據(jù)新的blockSize值計(jì)算每個(gè)像素點(diǎn)的新閾

70、值TI,當(dāng)像素點(diǎn)的實(shí)際灰度值大于TI時(shí),此像素點(diǎn)的灰度值將被設(shè)為255;否則此像素點(diǎn)的灰度值將被設(shè)為0。</p><p>  通過圖像的分割,可以清晰的看到幾個(gè)白點(diǎn)(手指)出現(xiàn)在畫面上(如圖2.8)。</p><p>  在第三節(jié),本文將討論一種基于大津法的自適應(yīng)閾值方法,可以大大簡(jiǎn)化圖像預(yù)處理的過程。</p><p><b>  2.3觸摸點(diǎn)識(shí)別<

71、/b></p><p>  雖然經(jīng)過圖像預(yù)處理步驟之后分割出了清晰的手指圖案,但光這樣是沒有辦法從中提取出有效的信息的,所以,接下來的兩個(gè)步驟是:l,對(duì)圖像中所有圖形提取出其外輪廓。2,找到每個(gè)圖形輪廓的外切矩形,從而計(jì)算手指觸摸點(diǎn)的信息,如大小,位置,傾斜角的等等。</p><p>  2.3.1提取觸摸點(diǎn)輪廓</p><p>  圖2.9 提取觸摸點(diǎn)輪廓(

72、紅色為輪廓)</p><p>  為了得到觸點(diǎn)的數(shù)據(jù)信息,需要對(duì)整個(gè)圖像進(jìn)行計(jì)算分析。分析方法是通過區(qū)域輪廓將不同的圖形分隔開,如圖2.9,輪廓用紅色標(biāo)出。找到了各個(gè)圖形的輪廓之后,便可以計(jì)算出它們的面積,中心等幾何特征。提取圖形輪廓的方法很多,有些比較復(fù)雜。參照了Intel公司一套關(guān)于圖像處理和計(jì)算機(jī)視覺方面的開源函數(shù)庫OpenCV,里面包含了提取圖像輪廓算法的函數(shù)。主要代碼如下:</p><

73、;p>  //輪廓提取函數(shù),用來提出特征點(diǎn)的輪廓</p><p>  cvFindContours( inputCopy.getCvImage(), contour_storage, &contour_list,</p><p>  sizeof(CvContour), retrieve_mode, bUseApproximation ? CV_CHAIN_APPROX_SI

74、MPLE : CV_CHAIN_APPROX_NONE );</p><p>  //將提取的輪廓存放到鏈表中</p><p>  CvSeq* contour_ptr = contour_list;</p><p>  //對(duì)提取的輪廓大小進(jìn)行篩選,保存符合要求的輪廓</p><p>  while( (contour_ptr != NU

75、LL) ) </p><p><b>  {</b></p><p>  float area = fabs( cvContourArea(contour_ptr, CV_WHOLE_SEQ) );</p><p>  if( (area > minArea) && (area < maxArea) )

76、 {cvSeqBlobs.push_back(contour_ptr);} </p><p>  contour_ptr = contour_ptr->h_next;</p><p><b>  }…</b></p><p>  通過上面的代碼和cvFindContours函數(shù)的使用,便可以找到圖像中所有圖形的輪廓,將輪廓

77、信息存在cont_list這個(gè)鏈表結(jié)構(gòu)中,接下來就可以對(duì)這些輪廓進(jìn)行分析。值得注意的是,找到輪廓后并沒有對(duì)他們立即進(jìn)行處理而是先進(jìn)行了篩選。程序中把面積像素小于minArea和大于maxArea的輪廓剔除,其中minArea和maxArea是定義的輪廓面積的最小值和最大值。這樣做的目的是去掉一些前面沒有處理掉的噪聲信號(hào),為下面的進(jìn)一步處理作保證。</p><p>  觀察圖2.9,觸點(diǎn)的輪廓都是一些不太規(guī)則的多邊

78、形,要想從這些不規(guī)則的多邊形中提取觸點(diǎn)的幾何特征有些困難,但是可以通過找到這些輪廓的外切矩形來獲得每個(gè)點(diǎn)的幾何信息。對(duì)于規(guī)則的矩形進(jìn)行處理分析就變得容易多了。同樣,利用了OpenCV中封裝好的函數(shù)cvMinAreaRect2()。命令語句如下:</p><p>  box = cvMinAreaRect2( cvSeqBlobs[i] );</p><p>  其中box就是每個(gè)輪廓的外切

79、矩形,下圖2.10為找到輪廓外切矩形之后的圖像,外切矩形輪廓用綠色標(biāo)出。</p><p>  2.10 獲取輪廓的外切矩形(綠色標(biāo)出)</p><p>  2.3.2觸摸點(diǎn)幾何特征數(shù)據(jù)的獲取</p><p>  觸點(diǎn)的幾何信息可以通過將每個(gè)觸點(diǎn)的輪廓的外切矩形來獲得。需要獲取的觸點(diǎn)信息有:外切矩形輪廓中心,外切矩形寬度、高度和面積,外切矩形傾斜角度,觸點(diǎn)中心坐標(biāo)等。

80、這些幾何數(shù)據(jù)是下面進(jìn)行手勢(shì)識(shí)別的基礎(chǔ)。主要代碼如下:</p><p>  blobs[i].angleBoundingRect.x = box.center.x; //定義外界矩形中心橫坐標(biāo)x</p><p>  blobs[i].angleBoundingRect.y = box.center.y; //定義外接矩形中心縱坐標(biāo)y</p><p>  blobs[i

81、].angleBoundingRect.width = box.size.height;//矩形邊界的寬度=外接矩形的高度</p><p>  blobs[i].angleBoundingRect.height = box.size.width;//矩形邊界的高度=外接矩形的寬度</p><p>  blobs[i].angle = box.angle;//傾斜角度</p>

82、<p>  blobs[i].area = fabs(area);//觸點(diǎn)面積</p><p>  blobs[i].length = cvArcLength(cvSeqBlobs[i]);//觸點(diǎn)輪廓的長(zhǎng)度</p><p>  blobs[i].centroid.x= (int) (myMoments->m10 / myMoments->m00);//觸點(diǎn)的中心橫

83、坐標(biāo)</p><p>  blobs[i].centroid.y = (int) (myMoments->m01 / myMoments->m00);//觸點(diǎn)中心的縱坐標(biāo)</p><p><b>  2.4觸摸點(diǎn)的跟蹤</b></p><p>  在多點(diǎn)觸摸系統(tǒng)中對(duì)觸摸點(diǎn)的運(yùn)動(dòng)跟蹤是非常重要的一個(gè)步驟,能不能正確的對(duì)觸摸點(diǎn)進(jìn)行跟蹤,

84、是實(shí)現(xiàn)觸摸動(dòng)作判斷的前提條件。</p><p>  要對(duì)觸摸點(diǎn)進(jìn)行跟蹤,分為兩個(gè)步驟:識(shí)別和跟蹤。</p><p>  識(shí)別就是要把觸摸點(diǎn)從環(huán)境背景以及噪聲信號(hào)等中識(shí)別出來,并且要把每個(gè)觸摸點(diǎn)同其他的觸摸點(diǎn)區(qū)分開來。識(shí)別在前面觸摸點(diǎn)識(shí)別的步驟中已經(jīng)完成。跟蹤就是要在一段時(shí)間內(nèi)的序列幀中找到指定觸摸點(diǎn)的運(yùn)動(dòng)軌跡,并且能夠計(jì)算該觸摸點(diǎn)的運(yùn)動(dòng)狀態(tài),如移動(dòng)的方向和速度等。在多點(diǎn)觸摸系統(tǒng)中觸點(diǎn)的跟蹤

85、是非常關(guān)鍵的一個(gè)步驟,因?yàn)槟芊裾_的跟蹤接觸點(diǎn)是對(duì)觸點(diǎn)動(dòng)作判斷的先決條件。</p><p>  運(yùn)動(dòng)跟蹤模塊的總體流程如下圖2.11所示。</p><p>  圖2.11 觸摸點(diǎn)運(yùn)動(dòng)跟蹤流程圖</p><p>  經(jīng)過觸摸點(diǎn)跟蹤之后,就可以建立新一幀出現(xiàn)的觸點(diǎn)和上一幀出現(xiàn)的觸點(diǎn)之間的聯(lián)系并判斷出觸點(diǎn)的狀態(tài)。本文有關(guān)跟蹤算法的討論與實(shí)現(xiàn)詳見第三部分。</p>

86、;<p><b>  2.5信息傳輸</b></p><p>  經(jīng)過圖像預(yù)處理,觸摸點(diǎn)識(shí)別、運(yùn)動(dòng)跟蹤三個(gè)步驟之后,將會(huì)獲得觸點(diǎn)的運(yùn)動(dòng)信息,如位置、加速度等,并且可以判斷出觸點(diǎn)的三個(gè)基本狀態(tài):消失的點(diǎn)、已存在的點(diǎn)和新出現(xiàn)的點(diǎn);與之對(duì)應(yīng)的三個(gè)基本事件為:彈起、移動(dòng)和點(diǎn)擊。需要注意的是這些工作的完成是在底層軟件中實(shí)現(xiàn)的,而手勢(shì)識(shí)別和交互界面是 通過上層軟件來執(zhí)行的。所以要想完成多點(diǎn)

87、觸摸系統(tǒng)工作的整個(gè)過程,就需要建立底層軟件和上層軟件的通信連接, 信息傳輸模塊就充當(dāng)這一橋梁。</p><p>  本文使用TUIO協(xié)議將通過圖像處理所獲得的觸點(diǎn)信息傳遞給上層的應(yīng)用軟件,實(shí)現(xiàn)多點(diǎn)觸摸的應(yīng)用。TUIO是一套簡(jiǎn)單且通用的,特別為滿足可感知桌面用戶界面需要所設(shè)計(jì)的協(xié)議,該協(xié)議是目前多點(diǎn)觸摸技術(shù)底層軟件和上層應(yīng)用軟件之間的標(biāo)準(zhǔn)通信協(xié)議。TUIO能夠傳遞交互表面的抽象描述信息,包括觸摸事件和觸摸物體的狀態(tài)

88、。它把從跟蹤應(yīng)用程序如計(jì)算機(jī)視覺技術(shù)中得到的控制數(shù)據(jù)進(jìn)行編碼然后將其傳送給具有解碼這種協(xié)議能力的客戶端。</p><p>  因?yàn)門UIO協(xié)議本身是基于OSC(Open Sound Control)的,所以TUIO協(xié)議可以看作是OSC數(shù)據(jù)的一種標(biāo)準(zhǔn)化實(shí)現(xiàn),可以用于所有支持該協(xié)議的設(shè)備上。TUIO協(xié)議定義了兩類主要的消息,即set消息和alive消息。其中,set消息用于目標(biāo)對(duì)象特定狀態(tài),如位置、姿態(tài)或其他任何可以

89、識(shí)別狀態(tài)的通訊;alive消息則用于通過系列的session ID來標(biāo)識(shí)當(dāng)前目標(biāo)對(duì)象。TUIO使用下面的格式來進(jìn)行數(shù)據(jù)通訊:</p><p>  /tuio/ profile Name set session ID</p><p>  parameter List</p><p>  /tuio/ profile Name alive list of active

90、session IDs</p><p>  /tuio/profile Namefseq int32</p><p>  其中的profile Name代表定義好的常用可感知用戶界面配置,該配置定義了set消息中目標(biāo)對(duì)象的狀態(tài)數(shù)據(jù)格式,比如常用的2D Profile:</p><p>  /tuio/2Dobj set s i x y a X Y A m r<

91、/p><p>  /tuio/2Dcur set s x y X Y m</p><p>  /tuio/2Dblb set s x y a w h f X Y A m r</p><p>  格式中每一位字母符號(hào)所代表的意義見表2.1TUIO協(xié)議格式說明。</p><p>  表2.1 TUIO協(xié)議格式說明</p><p&

92、gt;<b>  3自適應(yīng)閾值</b></p><p>  雖然經(jīng)過第二節(jié)闡述的圖像預(yù)處理步驟后,手指的輪廓點(diǎn)已經(jīng)比較清晰的出現(xiàn)在圖像中。但是從灰度圖像到最終的二值圖像轉(zhuǎn)化之間還需要平滑去噪,背景去除步驟,在這些步驟中需要人根據(jù)實(shí)際的條件實(shí)時(shí)調(diào)整參數(shù)的大小,使用起來并不是很方便。所以本文根據(jù)Ryan Dibble等人提出的“大津法”編寫了自適應(yīng)閾值程序,即不需要人工調(diào)整參數(shù),系統(tǒng)可以在一定程

93、度上自動(dòng)完成在不同光照情況下由灰度圖像到二值圖像間的轉(zhuǎn)化。</p><p><b>  3.1大津法</b></p><p>  大津法的主要思想如下:</p><p>  對(duì)于圖像Image,記T為前景與背景的分割閾值,當(dāng)圖像某一部分的灰度值大于T時(shí),將其劃分為前景;當(dāng)圖像某一部分的灰度值小于等于T時(shí),將其劃分為背景。設(shè)背景點(diǎn)數(shù)占圖像比例為W

94、1,背景的平均灰度為U1。圖像的總平均灰度為: </p><p><b>  (3.1)</b></p><p>  其中i代表從0-255之間某一個(gè)灰度值,Pi 代表灰度值i所占整個(gè)圖像灰度的概率。從最小灰度值到最大灰度值遍歷T,當(dāng)T使得值</p><p><b>  (3.2)</b></p><p

95、>  最大時(shí)T即為分割的最佳閾值。對(duì)大津法可作如下理解:該式實(shí)際上就是類間方差值,閾值T分割出的前景和背景兩部分構(gòu)成整幅圖像,背景灰度平均值U1,概率為W1,總均值為UT,根據(jù)方差的定義既是該式的分母。因方差是灰度分布均勻性的一種度量,方差值越大,說明構(gòu)成圖像的兩部分差別越大,當(dāng)部分目標(biāo)錯(cuò)為背景或者部分背景分為目標(biāo)都會(huì)導(dǎo)致兩部分差別變小,因此使類間方差最大的分割意味著錯(cuò)分概率最小。同時(shí)在這個(gè)公式中的分母加入約束條件 。根據(jù)數(shù)學(xué)的知

96、識(shí)可以知道當(dāng)W1越小時(shí),分母的值越小,fangcha的值就越大。也就是說在類間方差最大的情況下,如果滿足背景比例盡量大而前景比例盡量小,這時(shí)的分割效果最好,能夠很好排除細(xì)小噪聲的影響。</p><p>  3.2自適應(yīng)閾值主要代碼</p><p>  自適應(yīng)閾值程序的主要代碼如下:</p><p>  void otsu(IplImage* A, IplImage*

97、 B) //大津法函數(shù)</p><p><b>  {</b></p><p>  long N = hei * wid; //圖像總的像素</p><p>  int h[256];</p><p>  double p[256],u[256],w[256];</p><p>  for(i

98、nt i = 0; i < 256; i++)</p><p>  { h[i] = 0;</p><p><b>  p[i] = 0;</b></p><p><b>  u[i] = 0;</b></p><p>  w[i] = 0;}</p><p>  fo

99、r(int i2 = 0; i2 < hei; i2++) //計(jì)算圖像灰度直方圖</p><p><b>  {</b></p><p>  for(int j = 0; j < wid; j++)</p><p><b>  {</b></p><p>  for(int k = 0

100、; k < 256; k++)</p><p><b>  {</b></p><p>  if(((uchar*)(A->imageData + A->widthStep*i2))[j] == k)</p><p><b>  {</b></p><p><b>  h

101、[k]++; </b></p><p><b>  }}}}</b></p><p>  for( int i3 = 0; i3 < 256; i3++) //計(jì)算每一灰度的概率</p><p>  p[i3] = h[i3] / double(N);</p><p>  int T = 0;</

102、p><p>  double uT,fangcha;</p><p>  double fangcha_max= 0;</p><p>  for(int k = 0; k < 256; k++)</p><p><b>  {</b></p><p><b>  uT = 0;<

103、;/b></p><p>  for(int i = 0; i <= k; i++)</p><p><b>  {</b></p><p>  u[k] += i*p[i]; //計(jì)算背景平均灰度</p><p>  w[k] += p[i]; //計(jì)算背景點(diǎn)所占整幅圖像的概率 </p>

104、<p><b>  }</b></p><p>  for(int i2 = 0; i2 < 256; i2++)</p><p>  uT += i2*p[i2];</p><p>  fangcha = (uT*w[k] - u[k])*(uT*w[k] - u[k]) / (w[k]*(1-w[k])); // 計(jì)算fan

105、gcha大小</p><p>  if(fangcha > fangcha_max)</p><p><b>  {</b></p><p>  fangcha_max = fangcha;</p><p>  T = k; //找到具有最大fangcha值時(shí)對(duì)應(yīng)的閾值K</p><p>&

106、lt;b>  } </b></p><p><b>  }</b></p><p>  for(int i4 = 0; i4 < hei; i4++) // 利用閾值K對(duì)灰度圖像進(jìn)行二值化圖像變換</p><p><b>  { </b></p><p>  for(int

107、j = 0; j < wid; j++)</p><p><b>  {</b></p><p>  if(((uchar*)(A->imageData + A->widthStep*i4))[j] > T)</p><p>  ((uchar*)(B->imageData + B->widthStep*i4

108、))[j] = 255;</p><p><b>  else</b></p><p>  ((uchar*)(B->imageData + B->widthStep*i4))[j] = 0;</p><p><b>  }}}</b></p><p>  3.3自適應(yīng)閾值仿真結(jié)果<

109、;/p><p>  圖2.9所示為光照條件分別為暗、中、亮條件下利用本自適應(yīng)閾值方法進(jìn)行二值圖像轉(zhuǎn)換的仿真結(jié)果。雖然效果并不完美,存在個(gè)別觸點(diǎn)并沒有被顯示出來和仍然出現(xiàn)噪聲點(diǎn)的現(xiàn)象。但較原方法未進(jìn)行手動(dòng)調(diào)整前的二值圖像(如圖2.4)效果已有了很大的提高,可以大大簡(jiǎn)化圖像預(yù)處理的步驟。</p><p>  圖2.9 自適應(yīng)閾值仿真結(jié)果</p><p>  圖2.4 灰度圖

110、像經(jīng)初始閾值轉(zhuǎn)化成二值圖像</p><p>  4最小距離觸點(diǎn)跟蹤法</p><p>  在多點(diǎn)觸摸系統(tǒng)中,觸摸點(diǎn)的跟蹤是非常關(guān)鍵的一個(gè)步驟,因?yàn)槟懿荒軐?duì)觸摸點(diǎn)進(jìn)行快速準(zhǔn)確的跟蹤是后面進(jìn)行手勢(shì)識(shí)別的先決條件。NUI Group開發(fā)的多點(diǎn)觸摸開源代碼中使用的是KNN跟蹤算法,本文針對(duì)KNN算法跟蹤有明顯滯后的不足,基于“最小距離優(yōu)先法”改進(jìn)出了一種適用于本多點(diǎn)觸摸系統(tǒng)的跟蹤算法——最小距離觸

111、點(diǎn)跟蹤法。經(jīng)實(shí)驗(yàn)證明,本文改進(jìn)的算法較KNN算法的跟蹤速率有明顯的提高,并且滯后時(shí)間縮短。接下來本文對(duì)KNN算法和最小距離觸點(diǎn)跟蹤法分別進(jìn)行具體闡述并比較。</p><p>  4.1KNN算法原理</p><p>  KNN(K-Nearest Neighbor algorithm)算法是“K最近鄰算法”的簡(jiǎn)稱。此算法的核心思想是:在給定新樣本集后,考慮在訓(xùn)練樣本集(已分類樣本集)中與該

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論