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