文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.06.023
中文引用格式: 裴成龍,魏智鵬,楊亮. 基于ARM的四攝像頭光學觸摸屏系統研制[J].電子技術應用,2016,42(6):84-86.
英文引用格式: Pei Chenglong,Wei Zhipeng,Yang Liang. Four camera optical touch screen system developed based on the ARM[J].Application of Electronic Technique,2016,42(6):84-86.
0 引言
隨著計算機交互技術的快速發展,觸摸屏因其具有操作便捷、人機交互性強等特點,已被廣泛應用于現有生活中。目前其技術大多應用在一些小尺寸便攜式設備中,如手機、平板電腦、電子游戲機等,這是因為現有的電阻式或電容式觸摸屏都是通過一些硬件材料來實現觸摸技術,如果將這些技術應用在超大尺寸觸摸屏上,將會產生價格昂貴、通用性差等眾多普通用戶無法接受的問題[1]。科技和市場迫切需要出現一種新的觸摸式交互技術。
基于以上需求,通過采用圖像識別技術研制了四攝像頭光學觸摸屏系統,該系統通過安裝在4個頂點的COMS圖像傳感器同步采集觸摸屏交互區域的圖像,采集的圖像數據利用ARM微處理器的DCMI接口實現數據的存儲,然后對圖像數據進行觸摸點圖像檢測,根據觸點的成像位置和攝像頭標定的光心位置得到4條觸點方向的直線,最后通過任意兩條直線相交來定位觸點的位置。該系統通過視覺成像檢測技術解決了超大觸摸屏價格昂貴的問題,同時又保留了原有系統方便、靈活的特點。
1 系統方案設計
系統由人機交互顯示屏、圖像采集模塊、數據處理模塊、ARM微處理器模塊、觸點定位顯示模塊五部分組成,如圖1所示。
該系統的總體設計思路是在一個矩形的人機交互屏的4個頂點上安裝CMOS攝像頭,對交互屏區域同步采集圖像。每個攝像頭都由一個數據處理模塊驅動控制,接收攝像頭采集到的數據并進行處理。ARM微處理器整合分析數據處理模塊發送的數據構建觸點方向的直線坐標方程,結合攝像頭標定算法計算出觸點位置坐標,并將其結果顯示在定位液晶屏上。
2 硬件平臺設計
本系統的硬件框架(人機交互屏)為一個47英寸的16:9的矩形框。主控芯片采用ARM Cortex-M3系列的STM32F407VGT6,時鐘頻率168 MHz,這為大量的圖像數據處理提供了足夠的運算速度[2]。該芯片提供了DCMI攝像頭數據接口,利用DCMI接口,攝像頭采集到的數據可以迅速輸入到DCMI緩存器,并且可以利用硬件DMA將數據直接送到液晶顯示或者送到內部RAM中,以便數據的處理。芯片屬于大容量存儲,自帶的RAM達到64 KB,為圖像存儲提供了足夠的存儲空間。
圖2是圖像傳感器OV7670與ARM微處理器STM-32F407的連接方式。
ARM微處理器的時鐘輸出引腳CLKOUT為傳感器OV7670提供24 MHz時鐘信號。圖像傳感器像素時鐘輸出PCLK為ARM微處理器提供外部參考時鐘。將OV7670的像素信號、行信號、幀信號分別與DCMI的像素信號、行信號、幀信號引腳相連接,每當檢測到DCMI_CLK信號的上升沿時,圖像傳感器就將一個8 bit數據寫入DCMI緩沖區中,實現圖像數據的同步傳輸。行信號(HREF)高電平期間使DCMI數據緩沖區寫有效,保證傳輸有效的圖像數據。場信號(VSYNC)中斷ARM微處理器新一幀圖像的到來以達到與CMOS圖像場同步的目的。傳感器的數據輸出管腳Y[7:0]和ARM微處理器的DCMI_D[7:0]相連,傳輸實際的圖像數據。
3 軟件算法設計
系統軟件流程如圖3所示,首先系統進行初始化,根據攝像頭的安裝位置和角度完成攝像頭的標定,獲得整個系統攝像頭的光心坐標,然后攝像頭采集完一幀圖像,通過圖像處理單元進行二值化處理,ARM微處理器進行觸點檢測,若存在觸摸點則將計算其坐標并在液晶屏實時跟蹤顯示,否則重復進行下一幀圖像操作。
3.1 觸摸點識別
主控芯片通過I2C總線(SCL與SDA)控制圖像傳感器OV7670,該圖像傳感器幀率最高達到30幀/s,分辨率為320×240,輸出數據格式為RGB656或YUV。本設計用一個控制器實現對四路攝像頭圖像的同步采集。為了節省圖像存儲空間和提高圖像的采樣率,將每路攝像頭的圖像開窗成320×5,在一幀圖像的時間內完成四路攝像頭數據的傳輸。將采集到的圖像二值化后,在沒有接觸物觸摸的情況下,攝像頭采集到的是觸摸屏四周的白色擋板,成一條白色的亮帶;如果有觸摸物(手指),則會在亮帶相應的地方出現陰影。二值化后的圖像如圖4所示。
3.2 觸摸點定位
根據攝像頭成像特性,從攝像頭光心出發的某直線上的所有觸點目標在攝像頭中將成像在同一位置,從而攝像頭采集的亮帶圖像的陰影位置代表了觸點目標在該攝像頭中的方向。通過對每路攝像頭的內外參數和光心位置進行標定[3](此過程稱為攝像頭標定),對其在每路攝像頭中的成像位置和在交互區的物理位置進行標定,則可為每個觸點目標分別構建在每路攝像頭中的方向線。融合四路攝像頭采集到的觸點目標圖像,構建觸點目標在每路攝像頭中的方向線,聯立這4條線構成的方程組求解,得到的解即為觸點位置,從而實現觸點目標的定位。
3.2.1 單點觸摸定位
只有一個觸點時,系統會求得觸點與4個攝像頭之間連線的坐標方程,如圖5所示。此時只需聯立任意兩個直線方程組,便可求得觸點的位置。為了提高單點觸摸定位的精確度,可通過求出任意兩兩直線的交點,然后將得到的交點求平均值,所得便是觸點位置坐標。
3.2.2 兩點觸摸定位
兩點觸摸時觸點坐標的計算原理基本相同,但是要注意對偽點的判斷剔除。偽點是指由于光學觸控系統本身實現原理的限制[4],使得在兩點或者多點觸摸時會產生一些實際不存在的“假點”,從而出現觸點位置不準確的現象。
如圖6所示,P1、P2為目標觸點,1號攝像頭會引出兩條直線L11和L12,2號攝像頭會引出兩條直線L21和L22,那么求出來的交點就有4個(兩個觸點與攝像頭在一條直線上的情況除外),但是實際上只有兩個真實觸點P1和P2,那么另外兩個就是偽點,如圖中的F1和F2。去除偽點的方法便示,L31與1號攝像頭的兩條直線交于P1和一個偽點,L32與2號攝像頭的兩條直線交于P2和另一個偽點,所以只要在程序中加個判斷:1號攝像頭和2號攝像頭的直線方程組求得的交點集合與3號攝像頭和1號、2號攝像頭的直線方程組求得的交點集合的交集便是觸點。
4 實驗分析
系統運行時,采用的圖像序列分辨率為320×5像素,攝像頭采樣率為30 幀/s,系統實時跟蹤顯示觸摸點位置。為了對系統的觸點定位誤差進行分析,在觸摸區粘貼上網格坐標紙,然后用戶用手指對整個區域任意位置進行觸摸測試,記錄系統觸摸定位坐標值和相應網格坐標實際值的數據。分析測試結果如表1所示。
實驗結果表明,單點觸摸定位誤差相對于兩點觸摸要低,而由于受到攝像頭視角的限制,觸摸屏的四角區域的定位誤差比中間區域稍大,但系統的最大誤差率小于2%。
5 結論
本系統運用攝像頭標定和圖像識別技術,實現47英寸光學觸摸屏系統的設計。ARM Cortex-M3微處理器采用STM32F407VGT6芯片,選用4個OV7670攝像頭模組進行圖像的采集,將觸摸點位置和坐標顯示在2.8寸TFT彩色液晶顯示屏上。系統實現單點觸摸和兩點觸摸的定位、跟蹤,并在LCD上顯示實際的物理坐標和軌跡,定位誤差小于2%,能迅速響應點擊、放大、縮小觸摸操作。
參考文獻
[1] 董士海.人機交互的進展及面臨的挑戰[J].計算機輔助設計與圖形學學報,2004,16(1):1-13.
[2] 周亦鵬.雙目視覺技術在計算機輔助檢測中的應用研究[J].計算機測量與控制,2008,16(5):47-60.
[3] 黃侃.計算機立體視覺中的攝像機標定算法的研究與應用[D].沈陽:沈陽工業大學,2007.
[4] 王德鑫,張茂軍.四路攝像頭分組重建的多觸點定位方法[J].電子與信息學報,2010,32(2):495-499.