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