黃 靚
(平頂山工業(yè)職業(yè)技術(shù)學(xué)院,河南 平頂山 467000)
隨著人機(jī)交互技術(shù)的發(fā)展,人們不滿足于僅通過傳統(tǒng)的輸入設(shè)備對(duì)計(jì)算機(jī)進(jìn)行操作,多點(diǎn)觸控技術(shù)隨之在多個(gè)行業(yè)中迅速發(fā)展,極大增強(qiáng)了用戶的人機(jī)交互體驗(yàn),受到大眾的關(guān)注和追捧。
所謂多點(diǎn)觸控(Multi-Touch)是采用人機(jī)交互技術(shù)與硬件設(shè)備共同實(shí)現(xiàn)的技術(shù),能在沒有傳統(tǒng)輸入設(shè)備下進(jìn)行計(jì)算機(jī)的人機(jī)交互操作。目前多點(diǎn)觸控技術(shù)以光學(xué)式發(fā)展最快,便于實(shí)現(xiàn),本文主要研究基于計(jì)算機(jī)視覺和光學(xué)的多點(diǎn)觸摸來實(shí)現(xiàn)人機(jī)交互[1]。
常見的基于光學(xué)的多點(diǎn)觸摸技術(shù)主要分為5類:由Jeff Han開創(chuàng)的FTIR(受抑全內(nèi)反射多點(diǎn)觸摸技術(shù))、微軟Surface的Rear-DI(背面散射光多點(diǎn)觸摸技術(shù))、由Alex Popovich提出的LLP(激光平面多點(diǎn)觸摸技術(shù))、由Nima Motamedi提出的LED-LP(發(fā)光二極管平面多點(diǎn)觸摸技術(shù))、由Tim Roth提出的DSI(散射光平面多點(diǎn)觸摸技術(shù))[2]。經(jīng)過對(duì)5種技術(shù)的比較,本裝置采用FTIR技術(shù)實(shí)現(xiàn)。
FTIR是光學(xué)的一種基本現(xiàn)象——全內(nèi)反射(又稱全反射),Jeff Han教授通過該原理,將紅外線反射在一塊能夠產(chǎn)生全內(nèi)反射效果的亞克力板內(nèi)部,當(dāng)用戶在亞克力板表面觸摸時(shí),光線就會(huì)被用戶的接觸部位反射或折射(通過皮膚),在觸摸的地方就會(huì)將原本反射在內(nèi)部的紅外線折射回在亞克力板外面架設(shè)的紅外攝像頭,通過對(duì)應(yīng)軟件即可檢測(cè)到對(duì)應(yīng)的信息點(diǎn)[1],如圖1所示。
圖1 受抑全內(nèi)反射原理圖
本裝置采用基于FTIR和計(jì)算機(jī)視覺技術(shù)的硬件結(jié)構(gòu),主要模塊包括紅外光源、紅外攝像頭、顯示設(shè)備、信息處理設(shè)備等。整個(gè)系統(tǒng)結(jié)構(gòu)簡單,便于組裝,成本低廉,具有較強(qiáng)的環(huán)境適應(yīng)性。
1)紅外光源。由于本裝置采用亞克力板作為投影設(shè)備,而多數(shù)亞克力板在制造時(shí)加強(qiáng)了削弱900 nm以上紅外光的能力,同時(shí)很多紅外攝像頭也作了修正,對(duì)940 nm以上的紅外光不敏感,以減少太陽光的干擾,因此選用的紅外光源波長必須在780~940 nm,功率在80 mW以上,在這個(gè)范圍內(nèi)紅外發(fā)光管發(fā)出的光最容易被攝像頭讀取。而且波長越低,敏感度越高,更容易分析壓感。本設(shè)計(jì)采用SFH-485P作為發(fā)光器件,波長為880 nm,便于攝像頭捕捉。
2)紅外攝像頭。紅外攝像頭價(jià)格較高,考慮到裝置的成本,系統(tǒng)采用對(duì)普通攝像頭加以改造的方式來實(shí)現(xiàn)。裝置選用PlayStation 3(PS3 eye)攝像頭,不僅可以輕松地去除ICF(紅外截止濾鏡),且具有較高的幀率(640×480,30 f/s)。
為了過濾干擾的可見光,需在鏡頭前添加裁剪的濾光片或鏡頭濾鏡。鏡頭濾鏡具有波長唯一性,而且具有只允許單個(gè)特定波長通過的特點(diǎn),考慮到濾光效果,本裝置采用鏡頭濾鏡作為濾光片。
3)顯示設(shè)備。裝置可以使用的顯示設(shè)備有投影儀和液晶顯示器。液晶顯示器若要使用需進(jìn)行改造,要去掉顯示器外殼,保留LCD板、電路控制板和電源,步驟較為繁瑣,其顯示范圍也受到顯示器尺寸的限制,且成本較高。而投影儀具有屏幕尺寸大、功能多、成本低的特點(diǎn)。同時(shí),為形成效果較好的全內(nèi)反射,對(duì)于作為投影面的亞克力板的厚度有一定要求,一般要求在8 cm以上。綜合以上考慮,并為了防止手指按壓時(shí)發(fā)生形變,本設(shè)計(jì)決定選用投影儀配合10 cm的亞克力面板作為顯示設(shè)備[3]。
4)信息處理設(shè)備。本裝置選用的軟件框架為OPENCV,客戶端為CCV,信息處理平臺(tái)采用Raspberry Pi嵌入式開發(fā)板與PC,使用PC輔助進(jìn)行交叉編譯。Raspberry Pi配備一個(gè)700 MHz的博通ARM架構(gòu)BCM2835處理器,256 Mbyte內(nèi)存,使用SD卡作為存儲(chǔ)媒體,支持Linux、Android、RISC OS、BSD等操作系統(tǒng),并且有USB、HDMI、RJ-45、GPIO等擴(kuò)展接口,便于開發(fā)。
本系統(tǒng)通過在嵌入式Linux系統(tǒng)中運(yùn)行CCV,實(shí)現(xiàn)了Raspberry Pi與PC搭建的交叉編譯環(huán)境,可以充分利用ARM平臺(tái)與X86平臺(tái)的優(yōu)點(diǎn),功耗、性能、開發(fā)速度都得到保證。由于嵌入式系統(tǒng)資源有限,在X86環(huán)境下完成大部分代碼的開發(fā),然后借助交叉編譯工具生成可以在Raspberry Pi上運(yùn)行的目標(biāo)代碼和程序。
裝置的硬件系統(tǒng)示意圖如圖2所示。
圖2 多點(diǎn)觸控裝置硬件系統(tǒng)示意圖
本設(shè)計(jì)將多點(diǎn)觸感圖像識(shí)別跟蹤系統(tǒng)的軟件分為硬件抽象層、變換層、解析層和Widget層,如圖3所示。硬件抽象層用于接收傳感器采集到的原始數(shù)據(jù),通過紅外攝像頭采集原始數(shù)據(jù),將紅外攝像頭采集到的圖像進(jìn)行圖像校正、灰度變換、背景過濾、平滑去噪和分割目標(biāo)等處理,從原始圖像中得到目標(biāo)點(diǎn)的位置,在進(jìn)行觸點(diǎn)檢測(cè)、識(shí)別后,將跟蹤目標(biāo)的定位信息發(fā)送給變換層;變換層把得到的目標(biāo)定位信息經(jīng)過TUIO編碼轉(zhuǎn)換為系統(tǒng)坐標(biāo);解析層獲取由變換層傳遞的坐標(biāo)信息,進(jìn)行TUIO解碼,轉(zhuǎn)換為觸摸事件和狀態(tài),合成運(yùn)動(dòng)軌跡,識(shí)別用戶手勢(shì)的含義,并觸發(fā)相應(yīng)的觸摸事件;最后Widget層響應(yīng)觸摸事件和觸摸狀態(tài),完成一次完整的人機(jī)交互[4]。
圖3 系統(tǒng)軟件模塊架構(gòu)框圖
1)攝像頭的標(biāo)定。攝像機(jī)標(biāo)定是將觸點(diǎn)的物理坐標(biāo)轉(zhuǎn)換為相機(jī)成像圖像坐標(biāo)的關(guān)鍵步驟,它的目的是確定三維物體的空間坐標(biāo)系到攝像機(jī)圖像坐標(biāo)系的映射關(guān)系,其中包括攝像機(jī)成像系統(tǒng)內(nèi)外幾何及光學(xué)參數(shù)的標(biāo)定和兩個(gè)或多個(gè)攝像機(jī)之間相對(duì)位置關(guān)系的標(biāo)定。由于本裝置僅使用單攝像頭,因此只需確定相機(jī)的內(nèi)部和外部參數(shù)即可。
為了便于系統(tǒng)實(shí)現(xiàn)并保證較高的靈活性,本裝置采用基于張正友標(biāo)定法的手動(dòng)標(biāo)定方法,使用的標(biāo)定棋盤圖[5]如圖4所示。
圖4 手動(dòng)標(biāo)定背景定位基準(zhǔn)圖
裝置可以使用OPENCV自帶的攝像機(jī)標(biāo)定示例程序,該程序位于“OpenCVsamplesc目錄下的calibration.cpp”,程序的輸入支持直接從USB攝像機(jī)讀取圖片標(biāo)定,或者從已經(jīng)存放于計(jì)算機(jī)上的圖片進(jìn)行標(biāo)定。根據(jù)本裝置選用亞克力板的大小,決定選取9個(gè)坐標(biāo)點(diǎn)定位,使用者根據(jù)提示,在屏幕上指定位置按下,直至獲取9個(gè)定位點(diǎn)的坐標(biāo)完成標(biāo)定。通過攝像機(jī)坐標(biāo)與圖像坐標(biāo)的匹配變換,尋找需要的單應(yīng)性矩陣(Homography),計(jì)算單應(yīng)性矩陣,即可求得投影圖像坐標(biāo)和攝像頭圖像坐標(biāo)間的對(duì)應(yīng)關(guān)系。檢測(cè)流程如圖5所示。
圖5 手動(dòng)標(biāo)定檢測(cè)流程圖
2)觸點(diǎn)識(shí)別。觸點(diǎn)識(shí)別主要包括觸點(diǎn)的圖像預(yù)處理、邊緣檢測(cè)及輪廓提取,流程如圖6所示。
圖6 觸點(diǎn)識(shí)別流程圖
(1)觸點(diǎn)的初步檢測(cè)。經(jīng)過上面的圖像標(biāo)定后,對(duì)9個(gè)區(qū)域的光斑區(qū)域進(jìn)行觸點(diǎn)檢測(cè),符合條件的光斑被識(shí)別為觸點(diǎn),達(dá)不到亮度、面積要求的斑點(diǎn)被排除,符合要求的區(qū)域被檢測(cè)為觸點(diǎn)對(duì)象。
本系統(tǒng)采用基于幀差分的背景消除法。先將背景圖像予以濾除,否則大量的計(jì)算會(huì)使CPU嚴(yán)重超負(fù)。由于非紅外光幾乎都被過濾掉,所以大部分的背景就被硬件刪除了,為了獲得觸點(diǎn)的紅外圖像,捕捉一個(gè)靜態(tài)的背景圖像會(huì)刪除幾乎所有的環(huán)境光,這個(gè)背景圖像會(huì)減去其后所有的幀,剩下的這些幀將作為閾值傳遞給系統(tǒng),剩下的突起點(diǎn)就是要捕捉的對(duì)象,稱之為“觸點(diǎn)”[6]。
(2)觸點(diǎn)的邊緣檢測(cè)。為了準(zhǔn)確地識(shí)別觸點(diǎn)的位置和面積,需要使用邊緣檢測(cè)算法確認(rèn)并定位。要實(shí)現(xiàn)圖像的邊緣檢測(cè),要用離散化梯度逼近函數(shù),根據(jù)二維灰度矩陣梯度向量來尋找圖像灰度矩陣的灰度躍變位置,然后在圖像中將這些位置的點(diǎn)連起來,就構(gòu)成了所謂的圖像邊緣。
在實(shí)際情況中,理想的灰度階躍及其線條邊緣圖像是很少見到的,同時(shí)大多數(shù)的傳感器件具有低頻濾波特性,這樣會(huì)使得階躍邊緣變?yōu)樾逼滦赃吘?,其中的?qiáng)度變化不是瞬間的,而是跨越了一定的距離,因此在邊緣檢測(cè)中首先要進(jìn)行的是濾波。
本系統(tǒng)采用Canny算法,通過CCV編程實(shí)現(xiàn),系統(tǒng)抗噪性能較好,去噪能力強(qiáng),但對(duì)邊緣的過度平滑會(huì)造成定位精度降低,精度在可允許范圍內(nèi)。Canny算法流程如圖7所示。
圖7 邊緣檢測(cè)Canny算法流程圖
(3)觸點(diǎn)的輪廓提取。在邊緣檢測(cè)后,最后進(jìn)行觸點(diǎn)區(qū)域的圖像輪廓提取,可以通過OPENCV編寫程序?qū)崿F(xiàn)。輪廓提取的算法非常簡單,就是掏空內(nèi)部點(diǎn),即:若原圖中有一點(diǎn)為黑,且它的8個(gè)相鄰點(diǎn)都是黑色時(shí)(此時(shí)該點(diǎn)是內(nèi)部點(diǎn)),則將該點(diǎn)刪除。這里處理的雖然是二值圖,但實(shí)際上是256級(jí)灰度圖,不過只用到了0和255兩種顏色。
至此,觸點(diǎn)的檢測(cè)工作完成,接下來可以進(jìn)行觸點(diǎn)追蹤。
3)觸點(diǎn)追蹤。由于要進(jìn)行多觸點(diǎn)的跟蹤,需確定每個(gè)目標(biāo)的特征、位置、運(yùn)動(dòng)方向、速度等信息,對(duì)于已經(jīng)得到的二值圖像,采取識(shí)別目標(biāo)特征的方法是不合適的,由于多觸點(diǎn)的追蹤對(duì)實(shí)時(shí)性要求較高,本系統(tǒng)追蹤觸點(diǎn)不超過5個(gè),因此選用近年來新研究的CamShift算法。
CamShift算法,即“Continuously Apative Mean-Shift”算法,是一種運(yùn)動(dòng)跟蹤算法,它主要通過視頻圖像中運(yùn)動(dòng)物體的顏色信息來達(dá)到跟蹤的目的。利用目標(biāo)的顏色特征在圖像中找到運(yùn)動(dòng)目標(biāo)的位置和大小,在下一幀中,用目標(biāo)當(dāng)前的位置和大小初始化搜索窗口,重復(fù)這個(gè)過程就可以實(shí)現(xiàn)對(duì)目標(biāo)的連續(xù)跟蹤。在每次搜尋前,將搜索窗口的初始值設(shè)置為運(yùn)動(dòng)目標(biāo)當(dāng)前的位置和大小,由于搜索窗口就在運(yùn)動(dòng)目標(biāo)可能出現(xiàn)的區(qū)域附近進(jìn)行搜尋,這樣即可節(jié)省大量的搜尋時(shí)間,使其具有良好的實(shí)時(shí)性。同時(shí),CamShift算法是通過顏色匹配找到運(yùn)動(dòng)目標(biāo),在目標(biāo)運(yùn)動(dòng)的過程中,顏色信息變化不大,所以它具有良好的魯棒性[7-8]。CamShift算法流程如圖8所示。
圖8 觸點(diǎn)跟蹤C(jī)amShift算法流程圖
4)手勢(shì)識(shí)別。使用者與計(jì)算機(jī)進(jìn)行交互操作需要通過定義觸摸手勢(shì)來完成,經(jīng)過之前一系列的步驟,系統(tǒng)提取出Blob,進(jìn)行跟蹤后,記錄Blob的運(yùn)動(dòng)軌跡,并進(jìn)行分析,同定義的手勢(shì)進(jìn)行比較,并返回相應(yīng)的處理操作,通過Widget層完成與用戶的交互。
手勢(shì)被定義為在兩點(diǎn)之間的動(dòng)作,手勢(shì)的識(shí)別過程包括3個(gè)階段:意圖檢測(cè)、手勢(shì)劃分、命令映射。本裝置使用OPENCV中的內(nèi)置庫代碼完成手勢(shì)識(shí)別功能,實(shí)現(xiàn)放縮、旋轉(zhuǎn)、平移、壓感等操作。
(1)樣本采集:初始化攝像頭,然后通過逐幀圖像進(jìn)行膚色檢測(cè),然后將檢測(cè)出的樣本保存到圖像文件中。
(2)樣本訓(xùn)練:運(yùn)用樣本采集到的圖像樣本進(jìn)行訓(xùn)練,提示訓(xùn)練成功。
(3)手勢(shì)識(shí)別:從攝像頭采集圖片進(jìn)行手勢(shì)識(shí)別,首先用一定大小的矩形模糊地定位到手勢(shì)大概區(qū)域,然后進(jìn)行識(shí)別,并把識(shí)別的結(jié)果顯示在窗口上。
(4)命令手勢(shì):從攝像頭中取得圖像并進(jìn)行手勢(shì)命令的識(shí)別,識(shí)別的依據(jù)是通過最初坐標(biāo)與最終坐標(biāo)的相對(duì)值進(jìn)行的,對(duì)一個(gè)序列進(jìn)行識(shí)別。
(5)手勢(shì)定位:把要識(shí)別的圖片輸入到數(shù)據(jù)中,然后檢測(cè)出手的位置。再用矩形對(duì)此圖片的手勢(shì)進(jìn)行定位,并對(duì)此手勢(shì)大概表達(dá)的含義(即要表達(dá)哪個(gè)數(shù)字)進(jìn)行識(shí)別,識(shí)別是基于已有的圖像進(jìn)行匹配,最后輸出結(jié)果。
Widget層通過TUIO協(xié)議向上層客戶端發(fā)送事件,完成用戶的反饋。
利用本系統(tǒng)架構(gòu)搭建的測(cè)試平臺(tái),使用Raspberry Pi和X86主機(jī)進(jìn)行交叉編譯,將代碼編譯后在目標(biāo)系統(tǒng)執(zhí)行,經(jīng)測(cè)試發(fā)現(xiàn),嵌入式平臺(tái)運(yùn)行穩(wěn)定,多點(diǎn)觸摸跟蹤識(shí)別率較高,能正確識(shí)別手指,但定位精度有待改進(jìn),這與本系統(tǒng)采用的9點(diǎn)手動(dòng)標(biāo)定有關(guān),適當(dāng)增加標(biāo)定點(diǎn)數(shù)可提高定位精度。軟件功能準(zhǔn)確,能夠?qū)崿F(xiàn)對(duì)觸點(diǎn)的可靠跟蹤,嵌入式平臺(tái)運(yùn)算速度可滿足5點(diǎn)以下追蹤需求。測(cè)試圖如圖9所示。
圖9 CCV客戶端手指追蹤測(cè)試圖(截圖)
同時(shí)發(fā)現(xiàn),環(huán)境光對(duì)追蹤速度和準(zhǔn)確度影響較大,需要環(huán)境光照相對(duì)穩(wěn)定的空間,后續(xù)將采取加厚兼容層并改變觸點(diǎn)亮度和面積閾值的方法予以改進(jìn)。
綜上所述,本系統(tǒng)的軟硬件都較好地實(shí)現(xiàn)了光學(xué)多點(diǎn)觸感圖像識(shí)別跟蹤的要求,系統(tǒng)成本低、性能穩(wěn)定、可靠性高,達(dá)到了預(yù)期效果。后續(xù)將完善手勢(shì)模型、增加種類及增強(qiáng)手勢(shì)的識(shí)別,便于用戶使用。
:
[1]HAN J Y.Low cost multi-touch sensing through frustrated total internal reflection[C]//Proc.the 18th Annual ACM Symposium on User Interface Software and Technology.Seattle,USA:ACM Press,2005:115-118.
[2]Natural user interface[EB/OL].[2013-08-10].http://nuigroup.com/go/lite.
[3]BUXTON B.Sketching user experiences:getting the design right and the right design[M].San Francisco:Margan Kaufmann,2007.
[4]陳拴拴,廖海洋.光學(xué)多點(diǎn)觸摸交互式桌面系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[EB/OL].[2013-08-10].http://www.paper.edu.cn/releasepaper/content/2012 04-125.
[5]馬頌德,張正友.計(jì)算機(jī)視覺—理論與算法基礎(chǔ)[M].北京:科學(xué)出版社,1998.
[6]李剛,邱尚斌,林凌,等.基于背景差法和幀間差法的運(yùn)動(dòng)目標(biāo)檢測(cè)方法[J].儀器儀表學(xué)報(bào),2006,27(8):961-964.
[7]CANNY J.A computational App roach to edge detection[J].IEEE Trans.PAM I,1986,8(6):679-698.
[8]Wikipedia.Camshift[EB/OL].[2013-08-10].http://fr.wikipedia.org/wiki/Camshift.