緒論 近年來,多點觸控(Multi-Touch)成為了代替人機交互傳統方式的新方式。它拋棄了鍵盤,鼠標,實現了多人同時交互,是人機交互的一場革命性創新。但可惜的是,該項技術還處在初級階段,Multi-Touch的產品很多還只是面向高端或軍工用戶,價格十分高昂。這對廣大消費者來說都是不能承受的。此外,目前基于Multi-Touch應用的軟件業相當較少,且大多數停留在游戲娛樂的功能上,這樣也限制了該技術的發展和應用。 為此,將Multi-Touch技術應用低廉化、市場化,就顯得十分緊迫。考慮到Multi-Touch新鮮而高效的人機交互的方式,我們將其應用在日常的辦公生活中,為廣大的辦公室人群提出了一套提高工作效率、增加工作樂趣的Multi-Touch應用解決方案。 多點觸控智能家居平臺 一,FTIR原理簡述 作為Multi-Touch最初的被提出的實現方法,FTIR(Frustrated Total Internal Reflection,受抑全內反射)一直是最熱門和被研究得最透徹的實現方法。其原理是在較厚的透明有機玻璃側面放置紅外LED,使紅外光在玻璃內部產生全反射,當有手指觸碰到有機玻璃表面時,全反射的平衡會被打破,于是會有部分的光散射到下面來,從而被攝像頭捕捉到。由于有機玻璃是全透明的,在有機玻璃上部或下部還要附上一層背投影屏幕。綜合來看,雖說效果不錯,但此方案因為要合理地調整側邊入射的燈,且對材料的要求也很高,所以實現過于復雜。 圖一 二、DI原理簡述 DI的原理最初由微軟提出,其實現原理見圖2。圖中,用戶接觸的平面不一定用有機玻璃,而整個技術的關鍵在于屏幕下方的紅外散射光源,此光源將紅外光均勻地散射在多點觸摸屏的一面,當手指觸碰到表面后,由于手指擋住了光向上散射的路線,此時在圖像中會有一個陰影出現。經過進一步的圖像處理,就可以提取有關手指的位置信息。 圖二 具體實現上,DI可以變得簡單一些。圖1所示的是Back DI(背投光DI)的原理,可以看到紅外光從下方入射。這種Back DI的好處是光源在觸摸屏下面,可以自己控制,并且可以合理控制紅外光的亮度;它不僅僅實現陰影捕捉,更可以實現物體識別。但是,這種方案需要合理擺放紅外LED的位置,并且保證所有的紅外LED的亮度幾乎一致,還要達到最理想的均勻光照的效果,所以實現的難度很大。 實際操作中,我們嘗試了一種Front DI(外光DI)的方案。與Back DI相反,Front DI負責采集的紅外光來自觸摸屏外。同樣,由于手指的遮光作用,也會捕捉到陰影。雖說沒有Back DI那樣那樣高清的分辨能力,但對于桌面應用,已經足夠。 分析和實踐了FTIR實現方案后,考慮到產品的成本和復雜度,我們嘗試了DI的方案,效果較理想,而且DI的價格便宜,系統簡單,更易于組裝和實現。于是最終作品選用了DI的方案。 三、系統組成結構 整個系統主要有四個部分組成:PC,攝像頭模塊,投影儀及用戶的桌面?偟恼f來,該系統硬件組成比較簡單,攝像頭原型使用羅技的一款高清攝像頭產品,經過去除可見光濾光片并加裝紅外濾光片后,供系統采集手指位置信息,而投影儀作為顯示部分,選用了愛普生的EB-X7。外框上,我們自行設計了平臺的框架的組成結構和各部件的安裝與工作方式。 四、軟件部分 4.1 軟件概述 在系統設計中,我們選擇采用C#進行編寫程序,將手指觸摸事件用UP,DOWN,MOVE分別表示手指接觸觸摸屏,在觸摸屏移動,離開觸摸屏三個事件,并利用CCV來編寫整個觸摸屏的手指識別程序,并封裝成動態鏈接庫,方便后續程序的調用。 CCV(Community Core Vision)是一款解決計算機視覺和機器感應的開源/跨平臺的軟件?勺R別出因為碰到手指而反射回來的紅外光,在經過數據處理是圖像更為清晰,再將事件傳遞給已編寫好的DLL動態鏈接庫文件,從而使軟件識別出具體的手指動作。 用戶可以在顯示緩沖區上通過繪圖繪制圖形。圖形系統使用了GDI+,GDI+提供了較為強大的繪圖功能,這比較適合本系統提供的應用?梢酝ㄟ^一個函數提供獲得GDI+繪圖對象的指針。顯示緩沖區在用戶繪制完成后要更新到父窗口以最終顯示到屏幕上。 每個消息處理隊列都對應一個獨立的消息處理線程,負責處理各種事件,特別是用戶操作事件。事件以消息的方式發送到消息處理隊列中,消息處理線程從隊列中取出消息,處理后返回。消息發送有兩種模式,一種是發送后返回,另一種是發送后等待消息處理完后再返回。消息處理線程直到窗口關閉才被銷毀。消息隊列是窗口系統具有了多線程的特性,可以使多個窗口在英特爾雙核處理器上同時工作,大大提高了窗口的性能,特別是多個用戶同時執行復雜操作的時候,可以大大提高并行能力。 消息隊列的操作是互斥的,每次僅有一個線程能夠對其中的元素進行添加刪除操作。所以就需要一個鎖的機制來保護。 對于用戶操作,父窗口將位于子窗口內的用戶操作通過消息的的方式發送給子窗口,這樣一級一級地傳遞下去。特別需要介紹的是手指消息,手指消息分為手指放下、手指移動和手指離開,窗口通過消息參數中的手指ID實現不同手指的識別。 多個手指的操作基于一個窗口維護的活動手指表,標準記錄了所有綁定在這個窗口上的手指。該表通過平衡二叉樹實現,以提高速度。 本系統設計的窗口可以以任意角度旋轉,這樣可以支持從各個角度觀看的用過戶,以適合小型會議的需要。窗口內置支持一種環形的菜單,這種菜單通過一個消息通知窗口用戶的選擇。窗口另外支持鍵盤操作,鍵盤通過字符消息通知窗口。 4.2 應用功能 4.2.1 白板 白板作為會議中常用的功能,特別是在與設計有關的會議中,如果設計人員能夠面對面地討論,并在白板上表達自己的看法是非常有效的,傳統的紙質白板能夠提供多人討論的環境,但不能夠方便地修改設計,而一般的網絡白板能夠提供交流的平臺,卻不能夠讓很多人聚在一起討論并同時操作。Multi-Touch技術完美地解決了它們存在的問題,給人們一個可以充分交流的平臺。 4.2.1 虛擬鍵盤 在應用當中,用戶不僅僅需要畫圖,在很多情況下需要打字,這是只有白板功能就不能滿足客戶打出標準漢字的要求,所以添加了虛擬的觸摸鍵盤,可以在觸摸屏上利用鍵盤輸入文字,觸摸鍵盤還帶有搜狗輸入法,可以輸入中文漢字。 |