一、开发板
开发板很小,但是资源很丰富。详情可见活动页面:超好用的Atmel开发板免费领啦
开发板寄过来后发现只有一块开发板,其他像电源线、USB接口数据线、排线等没有提供。虽然这些东西很常见,但是对于初学者来说,手边并没有这些资源。所以在这里我想给Atmel和ARM提点建议,这些资源可否提供一下。
二、项目功能说明
交互式电子白板,硬件上由大面积白板、摄像头、ARM控制器、CPLD等部分组成,实现了在投影仪将PC屏幕上的内容投影到白板上时,通过手指或笔在白板上操作,对PC进行触控的功能。系统结构如下图:
系统启动后,通过投影仪将计算机屏幕图像投影到白板平面上,白板左右上角的主从板分别对白板平面的触控物体进行监测和处理,从板实时地将处理得到的位置坐标发送给主板,主板将联合计算后得到的最终坐标信息传输给计算机,计算机实时地将触控所实现的操作通过投影仪在白板平面上显示出来,这样就实现了触控白板平面即操作计算机屏幕的目的。
三、关键算法
1、目标识别算法
上电工作后系统将拍摄到的第一幅图像存为背景图像,若之后连续20帧图像没有目标点,更新背景图像。除上电后拍到的第一幅图像外,每次接收到一幅图像数据,都会存为前景图像。将背景图像与前景图像作差,在理想情况下,除了目标点所在位置外,全部显示为纯黑色。在算法上和数据上表现为,对背景图像和前景图像的各像素点的灰度值进行作差,除目标点覆盖到的几个像素点外,其余像素点的灰度均为0。
背景图像
前景图像
差值图像
即通过做差来实现目标识别。
2、目标定位
即根据像素坐标计算目标在白板坐标系中的坐标,主要是通过摄像头的三角定位来实现的。
计算摄像头参数:在对触控点进行定位之前需要提取摄像头参数。需要提取的五个摄像头参数分别为:摄像头焦距f,摄像头在成像平面的像素位置u0,摄像头在交互设备平面准确坐标系的坐标值(x0,y0),摄像头成像平面与水平方向夹角tanβ2。。
由图中可以得到:
目标定位:当任意触控点接触交互设备表面时,同过单摄像头目标识别可以分别得到该点在主、从图像中的像素坐标uAm,uAs。由这两个像素坐标和之前提取到的摄像头参数,通过公式(4)和(5)就可以得到触控点在交互设备平面的坐标。
四、USB通信调试
目的在于建立在不同状态下与PC的USB通信。通过枚举成三种USB设备——鼠标、触摸板、自定义HID设备实现。鼠标——用于XP系统正常工作时,触摸板——用于WIN7系统正常工作时,自定义HID设备——用于校准及计算摄像头参数时上下位机的通信。将电子白板与计算机连接后,运行USBView,显示的该HID 设备的描述符如下图:
在将枚举成HID 设备的电子白板连接到计算机后,Windows 系统会发现设备并读取设备的各种描述符,初始化设备,然后与设备进行通信。
五、Atmel Studio 6.2软件主控制器部分
接收数据部分如下图:
六、实验结果
1、采用笔尖大小不同的笔进行识别测试,笔尖最小的笔(普通签字笔)也可识别。
2、画线操作
songbin