王吉林 , 謝 冉 ,魏 陽 ,趙 力
(1.鹽城工學院 信息工程學院,江蘇 鹽城 224051;2.東南大學 信息科學與工程學院,江蘇 南京210096)
球形顯示器[1]是一款新型的球體屏幕演示設備,采用球體背投屏幕替代平面的背投屏幕,特殊光學鏡頭和投影儀置于球體的底部,將普通的平面影像進行特殊的變換,投射到球形屏幕上,形成一個內(nèi)投的球體影像,使球幕成為一個炫目的360°屏幕。高清的影像配上多點觸摸互動功能,給人以全新的視覺體驗和精神享受。相比于平面顯示,球形顯示觸摸系統(tǒng)具有360°視角、非可見半球、影像隨位置與高度變化、有限顯示無邊界及大地坐標系等特點?;谇蛐物@示的互動系統(tǒng)是一項嶄新的多點觸摸應用,它能充分發(fā)揮球形顯示器的優(yōu)點,實現(xiàn)用戶與球幕之間360°全方位豐富多彩的互動,帶來全新有趣的交互體驗。對基于球形顯示多點觸摸系統(tǒng)的研究具有重要的實際意義和廣泛的應用價值。
一個多點觸摸系統(tǒng)主要由顯示屏、攝像頭、投影儀、紅外燈和計算機組成,利用受抑全內(nèi)反射多點觸摸技術(FTIR)開發(fā)基于球形顯示的多點觸摸系統(tǒng)。顯示屏選用觸摸球幕,由于球幕顯示的特殊性,需要一個特殊的球幕鏡頭對平面影像做相應變換,另外還需要一個反射鏡用來通過可見光線反射紅外光。
本系統(tǒng)選用直徑為70 cm的球幕,球幕下面有一個開口,紅外光線經(jīng)過開口進入球幕。選擇將2個紅外燈(波長780 nm、功率200 mw的圓形紅外燈)安裝在觸摸球幕下方的開口邊緣的內(nèi)側(cè),使紅外光線能均勻地照射到觸摸球幕上。紅外攝像頭采用感光效果較好的CCD攝像頭,由于采集的是紅外光,需要安裝一個780 nm濾光片濾除可見光,攝像頭安裝在觸摸球幕下方的開口靠中間的位置,使得攝像頭能拍到整個球幕。反射鏡安裝在球幕鏡頭里面,目的是為了增加投影儀的投射距離。球幕鏡頭對應設置有反射鏡片的反射光通路和透射光通路,反射光通路正對紅外攝像頭,透射光通路位于投影儀的投射方向上,反射鏡能通過其他光線反射紅外光。球幕鏡頭采用寬角度的魚眼鏡頭,安裝在觸摸球幕的正下方,魚眼鏡頭的作用是將平面影像做相應的變形,從而能在三維球幕上平滑地顯示出來。投影儀的選擇主要考慮亮度、投影距離及分辨率,本系統(tǒng)選用1 024×768分辨率、3 000標準光亮度的NEC NP63+投影儀。采用頻率為3.3 GHz的Intel酷睿i3系列處理器,4 GB內(nèi)存和Windows XP sp2操作系統(tǒng)的主機來處理多點觸摸系統(tǒng)的軟件。
根據(jù)多點觸摸系統(tǒng)的硬件結構進行安裝和調(diào)試,攝像頭擺放位置盡量靠近球幕鏡頭,并且垂直朝上,安裝后需保持固定,在使用中不能出現(xiàn)移動或偏移等現(xiàn)象。2個紅外燈安裝在底盤固定的位置即可,投影機和主機固定在底盤的下方。
系統(tǒng)的調(diào)試主要分為測試電源和紅外燈、調(diào)節(jié)投影屏幕、調(diào)整紅外攝像頭的焦距和捕捉范圍。接上電源后,紅外燈需一直保持常亮狀態(tài),調(diào)節(jié)投影儀可使球幕成像清晰,攝像頭要求采集到的畫面完整且在中間成像。
系統(tǒng)的硬件搭建完成后,需要完成軟件部分的實現(xiàn)。軟件部分包括觸摸點跟蹤模塊、手勢識別模塊和互動應用程序。在具體實現(xiàn)中,需要修改坐標系統(tǒng)使其適用于球形顯示并改進相應的算法提高運算速度。
球幕上顯示的內(nèi)容是二維輸入圖片經(jīng)過投影變換得到的,映射關系如圖1所示。二維圖片的中心位置映射到球幕的頂點(北極),圖中任意一點與中心點之間的距離轉(zhuǎn)換為球幕上距離頂點的維度跨度值,球幕上顯示的內(nèi)容為以中心點為圓心的內(nèi)切圓,圖片的四角不會顯示出來,最外圍一圈(圓周)則壓縮成球幕的底點(南極)。
圖1 投影映射關系
通常多點觸摸系統(tǒng)都是用直角坐標系表示信息點,但這對于觸摸球幕不太方便。本文把球幕類比為地球[2],用經(jīng)緯度坐標系可以很容易地表示球幕上的點。為了計算方便,定義經(jīng)度坐標,數(shù)值范圍在0~2π之間。從上往下看,角度沿逆時針遞增。定義緯度坐標,數(shù)值范圍在 0~π 之間,北極為 0,赤道為 π/2,南極為 π。
根據(jù)上述定義,假設直角坐標系下任意點P歸一化后的坐標為p(x,y),其中,中心點坐標為(0,0),得到p(x,y)與經(jīng)緯度坐標p(latitude,longitude)的轉(zhuǎn)換關系,其中:
觸摸點跟蹤的作用是將攝像頭采集到的原始圖像信息,經(jīng)過相應處理得到觸點信息,并經(jīng)TUIO通信協(xié)議發(fā)送給手勢識別模塊。目前,國外有很多開源觸點跟蹤軟件,如 Touchlib和 CCV(Community Core Vision)[3]等,采用計算機圖像處理庫OpenCV直接處理圖像和視頻流,從而能夠非常準確地檢測到觸摸點信息,這些信息最后通過TUIO協(xié)議發(fā)送。本系統(tǒng)使用CCV進行觸點跟蹤,由于CCV基于平面顯示屏,因此需要對CCV進行相應地修改,使其適用于球形顯示屏。
CCV是一個開源觸點跟蹤軟件。它需要一個攝像頭或者視頻來提供數(shù)據(jù)輸入。經(jīng)過數(shù)據(jù)處理之后,輸出追蹤數(shù)據(jù)(如觸點坐標和觸點大小等)。CCV能夠與各種網(wǎng)絡攝像頭或視頻采集設備協(xié)同工作,通過支持TUIO/OSC/XML的應用程序進行數(shù)據(jù)連接,并且支持包括FTIR、DI、DSI、LLP、LED-LP 等 在 內(nèi) 的 多 種 基 于 光 學 的多點觸摸硬件方案。
當手指觸摸屏幕時,CCV軟件能將觸點信息檢測出來,并在屏幕的相應位置顯示白點。但通常情況下,白點的位置與實際觸摸的位置不一致,因此必須對坐標位置進行校正,這也是CCV軟件運行非常重要的一個步驟。
校準是通過重心坐標的知識來實現(xiàn),如圖2所示。假設ΔABC由攝像頭采集圖像上的點組成,3個頂點坐標分別為A(x1,y1)、B(x2,y2)、C(x3,y3),設 α、β、γ 為 ΔABC重心坐標,根據(jù)重心坐標定理可得:α+β+γ=1。點P(x,y)為ΔABC內(nèi)任意一點,用重心坐標分量表示為x=αx1+βx2+γx3,y=αy1+βy2+γy3。
圖2 圖像坐標和實際坐標映射圖
ΔA′B′C′為 ΔABC對應的實際觸摸點位置,3 個頂點 的 坐 標 分 別 為 ∶A(x′1,y′1)、B(x′2,y′2)、C(x′3,y′3),根 據(jù) 映射關系可以求得P點在 ΔA′B′C′對應點p′(x′,y′)的坐標為 :
使用三角網(wǎng)格對坐標進行校正,將兩幅圖像劃分成相同個數(shù)的三角形網(wǎng)格,對每一個三角形進行坐標映射。當手指觸摸時,通過判斷觸摸點所落在的三角形內(nèi),達到最終校正目的。CCV軟件標準校正是在屏幕上生成9×10共90個校準點,呈矩形分布。從左上角的第一個校準點開始從左至右、從上至下開始校正。測試中發(fā)現(xiàn)將校準點設成矩形,分布在球形顯示屏上的校準效果不理想,必須修改CCV軟件,將其校準點成圓形分布。經(jīng)過校正后,CCV軟件開始準確地對觸摸點進行跟蹤,并點擊平滑處理、高通濾波、觸點增強等按鈕對觸點進行處理,最終能正確清晰地得到觸點信息。
當觸點信息被準確地追蹤后,通過手勢識別程序便可將輸入觸點軌跡解釋為相應的手勢命令,再傳遞給應用程序?qū)崿F(xiàn)最終交互的功能。本文采用C#語言編寫手勢識別程序,手勢識別程序?qū)⒁詣討B(tài)鏈接庫形式為應用程序提供交互功能。程序框架中交互元素由IGestureListener類定義,觸點信息CursorPoint經(jīng)過軌跡合成為Trace,再對軌跡分組成Group,Group即為待識別的手勢。Group手勢信息通過GroupGRManager類進行手勢事件訂閱,然后通過GestureRecognizer類進行手勢識別,識別成功后,將以事件的形式傳遞給應用程序。
由于觸摸球幕坐標體系的特殊性,標準的手勢(如移動、旋轉(zhuǎn)、縮放等)需要重新定義。
2.3.1 移動
圖3 移動手勢在平面和球面上的比較
2.3.2 旋轉(zhuǎn)
平面下的旋轉(zhuǎn)手勢可以根據(jù)兩點之間傾斜角的變化來表示,如圖4(a)所示。而球面上卻比較復雜,需要根據(jù)旋轉(zhuǎn)角度和旋轉(zhuǎn)軸計算出旋轉(zhuǎn)矩陣,然后根據(jù)旋轉(zhuǎn)矩陣算出觸摸區(qū)域的每個點新的坐標位置,如圖4(b)所示。
圖4 平面和球面下坐標系的旋轉(zhuǎn)比較
2.3.3 縮放
觸摸球面上的縮放手勢和平面上類似,都可以根據(jù)兩點之間距離的變化來表示。但是由于球形顯示的有限性,基于球形顯示的縮放手勢的放大系數(shù)必須限制在一定范圍內(nèi),超過一定的值可能會導致部分影像無法顯示。
2.3.4 互動應用
觸點跟蹤模塊和手勢識別模塊完成后,就可以開發(fā)應用程序驗證系統(tǒng)的交互功能。目前比較流行的開發(fā)語言有C/C++、C#、Flash、Python等,一些比較成熟的多點觸摸應用程序都是使用C#開發(fā)。不同的開發(fā)語言有各自的優(yōu)勢,用戶可以根據(jù)自己的需要和實際情況自行選擇開發(fā)語言,本文使用C#開發(fā)一些互動應用程序,以展示該系統(tǒng)多觸點手勢交互的能力,進而從不同方面驗證了多點觸摸交互系統(tǒng)的特性,例如圖片查看器。傳統(tǒng)的圖片查看器都是通過鼠標和鍵盤進行操作,但旋轉(zhuǎn)和縮放操作會比較麻煩,這里利用多點觸摸的優(yōu)勢,使用C#開發(fā)了可支持移動、縮放和旋轉(zhuǎn)操作的基于球形顯示的多點觸摸圖片查看器。通過該程序用戶能夠用多個手指進行圖片操作,驗證了標準手勢(如移動、旋轉(zhuǎn)和縮放等)在球形顯示器上的手勢識別功能。
本文介紹了一種基于球形顯示的多點觸摸系統(tǒng),分別從硬件搭建和軟件實現(xiàn)兩方面闡述了系統(tǒng)的具體實現(xiàn)過程。在軟件實現(xiàn)過程中,針對觸摸球幕的特殊性建立了適合球形顯示的地理坐標系統(tǒng),然后對觸點跟蹤軟件CCV進行了修改,使其適用于球形顯示。完成了觸點跟蹤和手勢識別模塊,選用Flash和C#開發(fā)應用程序進行了多點觸摸互動應用,顯示出多點觸摸系統(tǒng)帶來的交互性和便捷性。
[1]BENKO H,WILSON A D,BALAKRISHNAN R.Sphere∶multi-touch interactions on a spherical display[J].UIST,2008,2(3)∶67-69.
[2]KETTNER S,MADDEN C,ZIEGLER R.Direct rotational interaction with a spherical projection creativity and cognition symposium on interaction[C].Systems,Practice and Theory,2004.
[3]KALTENBRUNNER M,BENCINA R.CCV∶a computervision framework for table-based tangible interaction[J].In Proceedings of the 1st International Conference on Tangible and Embedded Interaction,ACM,2007,7(5)∶74.