文献标识码: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.