中心議題:
- 虛擬觸摸屏系統(tǒng)概述
- 虛擬觸摸屏系統(tǒng)的實(shí)現(xiàn)方案
解決方案:
- 虛擬觸摸屏初始定位
- 虛擬觸摸屏手指識(shí)別
- 虛擬觸摸屏手指定位
- 虛擬觸摸屏點(diǎn)擊判定
1 引言
觸摸屏是繼鍵盤、鼠標(biāo)之后最為普遍接受的輸入方式,它方便了人們對(duì)計(jì)算機(jī)的操作,用戶只要用手指輕輕地觸碰計(jì)算機(jī)顯示屏上的圖符或文字就能實(shí)現(xiàn)對(duì)主機(jī)操作,從而使人機(jī)交互更為直截了當(dāng),非常適合多媒體信息查詢,是一種極有發(fā)展前途的交互式輸入設(shè)備。目前,普通觸摸屏主要有紅外線式、電阻式、表面聲波式、電容式等類型,然而這些類型的大屏幕尤其是超大屏幕觸摸屏產(chǎn)品,均存在價(jià)格昂貴、通用性差、穩(wěn)定性差、準(zhǔn)確性差的問題。現(xiàn)在實(shí)現(xiàn)了一種基于攝像頭的虛擬觸摸屏系統(tǒng),改變了傳統(tǒng)的觸摸屏的實(shí)現(xiàn)技術(shù),它由多個(gè)攝像頭拍攝手指在虛擬觸摸屏上的移動(dòng)和點(diǎn)擊操作,從拍攝的圖像中將人手區(qū)域分割出來,進(jìn)而提取手指的邊緣輪廓,將手指輪廓的B 樣條曲線的第4 個(gè)控制點(diǎn)定義為手指位置,由二維坐標(biāo)射影變換公式轉(zhuǎn)換進(jìn)而獲得手指在顯示屏幕上的位置坐標(biāo)。這一技術(shù)方案本質(zhì)是用多個(gè)攝像頭將手指及觸摸屏的三維圖像轉(zhuǎn)換成多個(gè)二維圖像,進(jìn)而從這些二維圖像中識(shí)別出手指及手指的移動(dòng)、點(diǎn)擊等動(dòng)作。因?yàn)榕臄z的圖像必須包含顯示屏幕,所以攝像頭必須放置在顯示屏幕的前方,對(duì)于大屏幕觸摸屏必然存在人體遮擋無法識(shí)別手指的問題。該文設(shè)計(jì)的虛擬觸摸屏系統(tǒng)由一維圖像采集裝置采集手指在虛擬觸摸屏上的一維數(shù)據(jù),由多個(gè)一維數(shù)據(jù)識(shí)別手指在二維虛擬觸摸屏上的位置坐標(biāo),從而完成人機(jī)交互。
2 系統(tǒng)概述
虛擬觸摸屏系統(tǒng)由至少兩個(gè)一維圖像采集裝置、顯示屏和數(shù)據(jù)處理裝置組成。一維圖像采集裝置設(shè)置在虛擬觸摸屏的四周,每個(gè)一維圖像采集裝置獲取的一維圖像所在面與虛擬觸摸屏處于同一平面;虛擬觸摸屏與顯示屏幕的形狀和尺寸完全相同,虛擬觸摸屏與顯示屏幕處在同一平面內(nèi),或虛擬觸摸屏處于顯示屏幕的正前方且平行于顯示屏幕;多個(gè)一維圖像采集裝置將手指在虛擬觸摸屏上的位置和點(diǎn)擊動(dòng)作轉(zhuǎn)換成多個(gè)一維圖像中的點(diǎn)及點(diǎn)的有無,數(shù)據(jù)處理裝置根據(jù)一維圖像中點(diǎn)的信息識(shí)別手指在虛擬觸摸屏中的兩維直角坐標(biāo),并執(zhí)行相應(yīng)的操作,完成人機(jī)交互功能。它結(jié)構(gòu)簡(jiǎn)單,實(shí)現(xiàn)方便,造價(jià)低廉,解決了使用圖像技術(shù)實(shí)現(xiàn)的普通觸摸屏存在的人體遮擋手指的問題,特別適用于大屏幕觸摸系統(tǒng)。一維圖像采集裝置采用一維線性傳感器,配合設(shè)置鏡頭、信號(hào)轉(zhuǎn)換和接口電路實(shí)現(xiàn);或采用兩維圖像采集裝置攝像頭,以攝像頭采集到的兩維圖像中的一行或一列的圖像數(shù)據(jù)作為所需的一維圖像數(shù)據(jù)。
系統(tǒng)結(jié)構(gòu)如圖1所示。
[page]
與已有技術(shù)相比,該設(shè)計(jì)的優(yōu)點(diǎn)體現(xiàn)在:
(1)圖像采集裝置設(shè)置在虛擬觸摸屏的四周,其拍攝方向與虛擬觸摸屏平行,從根本上解決了人體遮擋引起手指無法識(shí)別的問題,尤其是因其避免了人體遮擋的問題,因而可以擴(kuò)展到投影屏幕、普通墻面等任何大屏幕,通用性好。
(2)只需進(jìn)行一維圖像數(shù)據(jù)的處理,相比于二維圖像的數(shù)據(jù)處理,其過程大為簡(jiǎn)化、算法簡(jiǎn)單。
(3)采用一維線性傳感器,配合設(shè)置鏡頭、信號(hào)轉(zhuǎn)換和接口電路,其配置簡(jiǎn)單,價(jià)格便宜。
(4)也可以采用兩維圖像采集裝置攝像頭,以兩維圖像中的一行或一列的圖像數(shù)據(jù)作為所需的一維圖像數(shù)據(jù),易于實(shí)施。
(5)一般情況下只要使用兩個(gè)圖像采集裝置。使用兩個(gè)以上圖像采集裝置可以減小圖像采集裝置與顯示屏之間的距離,對(duì)于較大屏幕來說,可以使整個(gè)系統(tǒng)更加緊湊。
3 實(shí)現(xiàn)原理
由于攝像頭價(jià)格便宜,易于獲得,于是將系統(tǒng)結(jié)構(gòu)圖中的一維圖像采集裝置由攝像頭來替代,由其拍攝的二維圖像中的一維圖像數(shù)據(jù)來識(shí)別二維顯示屏幕上的位置坐標(biāo)。由于攝像頭鏡片與虛擬觸摸屏垂直,當(dāng)用戶進(jìn)行手指觸摸操作時(shí),手指的運(yùn)動(dòng)平面與虛擬觸摸屏平行,因此手指在虛擬觸摸屏上的運(yùn)動(dòng)軌跡一直顯示在攝像頭所拍攝圖像的某條確定直線上。手指在二維顯示屏幕平面上的運(yùn)動(dòng),轉(zhuǎn)換為手指點(diǎn)在攝像頭拍攝的兩幅圖像的某條確定直線上的移動(dòng)。左右攝像頭拍攝的兩幅圖像中直線上的點(diǎn)和二維顯示屏平面中的某點(diǎn)存在一一對(duì)應(yīng)的關(guān)系。如圖3所示,問題即轉(zhuǎn)換為根據(jù)兩幅圖像中手指移動(dòng)直線上的點(diǎn)的位置來唯一確定用戶手指觸摸的二維平面上的點(diǎn)坐標(biāo)。其實(shí)質(zhì)為由兩個(gè)一維坐標(biāo)點(diǎn)和一些初始角度值來唯一確定二維平面內(nèi)的一點(diǎn)坐標(biāo)。
[page]
下面以左邊攝像頭為例說明轉(zhuǎn)換過程,右邊攝像頭類似。
假設(shè)虛擬觸摸屏是如圖4所示的矩形區(qū)域,以左下角為原點(diǎn),建立二維坐標(biāo)平面x、y。左邊攝像頭c1位于虛擬觸摸屏左上角某處,其視角范圍應(yīng)包含整個(gè)矩陣區(qū)域,將c1與矩形的4個(gè)頂點(diǎn)連接構(gòu)成攝像頭拍攝各點(diǎn)的光線方向,以經(jīng)過左下角和右上角頂點(diǎn)的光線方向?yàn)檠琧1為頂點(diǎn)作一個(gè)等腰三角形,底為虛線所示的(u1,u2)。當(dāng)手指在矩形區(qū)域內(nèi)任意一點(diǎn)觸摸時(shí),其在攝像頭所拍攝的圖像中均表現(xiàn)為虛線上的一點(diǎn),手指在二維虛擬觸摸屏上的移動(dòng)投影到圖像上不會(huì)超過這條虛線(u1,u2)范圍,這是算法關(guān)注的興趣區(qū)域,區(qū)域以外的部分不需要處理。因此以u(píng)1為原點(diǎn)沿著虛線方向建立一維坐標(biāo)x1,右邊攝像頭拍攝圖像中的一維坐標(biāo)x2類似設(shè)立。
具體實(shí)施中,為準(zhǔn)確識(shí)別手指位置,將虛擬觸摸屏劃分為n×n 的棋盤格,如圖5 所示,由于攝像頭離棋盤格距離較遠(yuǎn),且每個(gè)棋盤格足夠小,于是可以假設(shè)在棋盤格內(nèi),攝像頭拍攝的光線是平行的,以簡(jiǎn)化點(diǎn)位置的轉(zhuǎn)換。
該設(shè)計(jì)數(shù)據(jù)處理裝置綜合應(yīng)用的識(shí)別算法包括:初始定位算法、手指識(shí)別算法、手指定位算法、點(diǎn)擊判定算法等。
3.1 初始定位
初始定位時(shí),用戶在虛擬觸摸屏n×n 的棋盤格的每個(gè)頂點(diǎn)上均觸摸一次,以確定每個(gè)棋盤格在攝像頭拍攝圖像一維坐標(biāo)上的位置范圍,即建立每個(gè)棋盤格編號(hào)及其投影的起始位置和終止位置坐標(biāo)的對(duì)照表。例如:(i,x11,x12,x21,x22)記錄的是第i個(gè)棋盤格在x1坐標(biāo)軸上的起始位置為x11,終點(diǎn)位置為x12,在x2坐標(biāo)軸上的起始位置為x21,終點(diǎn)位置為x22。
[page]
同時(shí)初始設(shè)置時(shí)可以根據(jù)虛擬觸摸屏的長(zhǎng)寬和每個(gè)棋盤格在圖像上的投影確定攝像頭拍攝的每個(gè)棋盤格平行光的斜率。放大圖5 中的棋盤格s,得到圖6。假設(shè)攝像頭c1以斜率k平行拍攝由頂點(diǎn)v1、v2、v3、v4組成的棋盤格s,其邊(v4,v3)的長(zhǎng)度為a,在圖像平面上的投影(v3,v5)的長(zhǎng)度為a′,其邊(v1,v4)的長(zhǎng)度為b,在圖像平面的投影(v1,v5)的長(zhǎng)度為b′。已知虛擬觸摸屏的長(zhǎng)寬,每個(gè)棋盤格的長(zhǎng)a 和寬b 分別為其1/n,a′、b′可從拍攝的圖像上獲得,于是從攝像頭拍攝該棋盤格的平行光的斜率k 可由下式獲得:
將每個(gè)棋盤格的平行光的斜率構(gòu)造一張斜率表,例如:(i,k)表示攝像頭拍攝第i 個(gè)棋盤格的平行光的斜率。
另外,初始設(shè)置時(shí)可以確定手指觸摸投影到圖像上的直線的位置。如果在該直線上識(shí)別出手指,則認(rèn)為用戶進(jìn)行了觸摸操作。該直線實(shí)際上就是一維圖像采集裝置需要采集的一維數(shù)據(jù)。雖然使用二維圖像采集裝置攝像頭來拍攝二維圖像,但只使用其中的一維圖像數(shù)據(jù),即這條直線上的圖像數(shù)據(jù)。
3.2 手指識(shí)別
需要在初始定位時(shí)確定的圖像的直線上進(jìn)行手指識(shí)別,判定用戶是否進(jìn)行了點(diǎn)擊操作,因此識(shí)別出手指在一維坐標(biāo)上的位置,是手指定位的前提和基礎(chǔ)。按照人手檢測(cè)的方法獲得人手區(qū)域及其手指的粗略位置。將其與直線相交,得到的點(diǎn)即為一維坐標(biāo)點(diǎn)。
3.3 手指定位
根據(jù)兩個(gè)攝像頭同時(shí)拍攝的圖像直線上的兩點(diǎn),分別建立虛擬觸摸屏平面內(nèi)的兩條直線方程,二者相交的點(diǎn)即為虛擬觸摸屏平面上的點(diǎn)。當(dāng)某點(diǎn)屬于若干個(gè)棋盤格時(shí),需進(jìn)行特殊處理,計(jì)算出點(diǎn)坐標(biāo),檢查其是否在該棋盤格內(nèi),若是,則得出點(diǎn)坐標(biāo);否則,保留直線方程,選擇一個(gè)離棋盤格中心點(diǎn)距離最近的點(diǎn)作為點(diǎn)坐標(biāo)。直線方程y=k·x+b (2)其中,k 表示斜率,b 表示截距。
具體方法如下:首先根據(jù)兩幅圖像中手指點(diǎn)的一維坐標(biāo)來確定觸摸的二維平面的棋盤格范圍。查坐標(biāo)對(duì)照表,如果該點(diǎn)既在x1軸上第i 個(gè)棋盤格的范圍內(nèi),又在x2軸上第i 個(gè)棋盤格的范圍內(nèi),則該點(diǎn)屬于第i 個(gè)棋盤格。
確定棋盤格后,查斜率表可獲得直線方程的斜率k,接下來需要求出截距b。如圖7 所示,當(dāng)用戶在某點(diǎn)觸摸時(shí),表現(xiàn)為圖像中直線上的某點(diǎn)v′,它是由虛擬觸摸屏平面內(nèi)過棋盤格內(nèi)對(duì)角線上的點(diǎn)v、斜率為k 的直線上的任意一點(diǎn)產(chǎn)生的,其中點(diǎn)v 是由v′作攝像頭拍攝光的平行線與棋盤格的對(duì)角線的交點(diǎn)。
由于,
根據(jù)v1的坐標(biāo)和下式:
可求出v 點(diǎn)的二維坐標(biāo),于是以斜率k、點(diǎn)v 的坐標(biāo)代入直線方程y=k·x+b 求出截距b于是,圖像中的任意一點(diǎn)v′,實(shí)際上是手指在直線方程為y=k·x+b 的直線上的運(yùn)動(dòng)產(chǎn)生的。其中k 是該棋盤格內(nèi)平行光的斜率,b 是通過v 點(diǎn)直線方程的截距。
同時(shí)在右邊攝像頭拍攝的圖像中的對(duì)應(yīng)點(diǎn)可以獲得虛擬觸摸屏平面內(nèi)的另外一條直線,兩條直線相交,即可根據(jù)兩幅圖像中的點(diǎn)坐標(biāo)求得手指觸摸虛擬觸摸屏平面上的點(diǎn)坐標(biāo)。
3.4 點(diǎn)擊判定
點(diǎn)擊判定算法根據(jù)不同時(shí)間的手指位置檢測(cè)是否產(chǎn)生點(diǎn)擊操作。如果在初始定位時(shí)設(shè)置的直線位置上一定時(shí)間內(nèi)識(shí)別到手指的有無,則表明進(jìn)行了點(diǎn)擊操作。
4 結(jié)語
設(shè)計(jì)了一種虛擬觸摸屏系統(tǒng),其特色在于由圖像采集裝置獲取的一維圖像數(shù)據(jù)來確立用戶手指觸摸二維虛擬觸摸屏上的位置坐標(biāo)。前提是一維圖像采集裝置的安裝位置,它從根本上解決了大屏幕觸摸屏中人體遮擋手指無法識(shí)別的問題,且其進(jìn)行的是一維數(shù)據(jù)的處理,相比于二維圖像處理算法更加簡(jiǎn)單。