打印
[STM32F4]

【Nucleo设计分享】交互式电子白板控制器的设计_2设计思路

[复制链接]
1339|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 uestc_zyd 于 2015-2-28 08:46 编辑

说明:图片较多,该部分以pdf附件形式上传。只上传了部分图片。

1.系统结构设计图与说明
系统结构图:
1.1 ARM主板程序流程图与简单说明
ARM主板程序流程图如图:
从板的程序要相对简单些,在计算完像素坐标后,将像素坐标发送至主板,即完成了一次循环的主要功能。在对set信号复位后,即开始等待对下一帧图像处理。
1.2 CPLD模块结构图与简单说明
² edgereset模块:根据表示ARM控制器计算结束的set信号得到set1信号,用于switch模块控制信号conv的生成。
²  switch模块:根据set1信号和开始采集图像信号,生成conv信号,用于切换与ARM或者摄像头相连进行数据传输。
²  mux模块:根据conv信号,实现与ARM和摄像头相连的切换。
²  write模块:一方面为摄像头提供工作时钟,另一方面接收摄像头拍到的图像,写入外部SRAM
2.设计中涉及到的研究内容
²  摄像头的安装与配置
²  实时图像采集系统
²  单点和两点目标识别算法
²  目标定位技术
²  上位机与下位机联合校准
²  基于USB的复合功能开发
2.1 摄像头安装与配置
摄像头安装:在白板的左上角和右上角安装摄像头,分别称其为从摄像头和主摄像头。摄像头的安装高出屏幕一段距离,使拍摄到的图像中包含屏幕上显示的内容,以便校准过程中标志图像的识别。同时,还应保证每个摄像头的视场角大于90度,使拍摄范围覆盖整个屏幕,避免出现盲区。由于视场角比预期的90度超出一定值,同时该角度余量存在随机性,为保证定位的精确性,在坐标位置计算中将采取特定算法以减小误差。
摄像头配置的主要内容:
²  摄像头图像截取:本系统对摄像头采用局部图像输出配置,在ARM控制器中对摄像头输出图像的水平起始位置、长度、垂直起始位置、高度进行配置,保证输出的局部图像能够覆盖到白板上的所有点即可。
²  摄像头曝光控制:为了使摄像头拍到的图像达到最好的效果,经过多次实验比较效果,对摄像头曝光控制配置如下:采用手动曝光的方式进行工作,摄像头的曝光时间设置为0x00ff,对应的我们截取的图像大致在一帧图像开始后的8ms左右(一帧图像为16.6ms),LED补光设置在一帧图像开始后的1-4ms
²  像素时钟的设定:摄像头输入时钟由CPLD提供,为24MHZ,通过配置寄存器CLK(0x11)可以获得像素输出时钟PCLKTPCLK=TXCLK /(decimal value of CLK[5:0]+1)。本设计中采用24MHZ的像素输出时钟,图像输出帧率为60fps,程序实现为write_sccb(0x42,0x11,0x00)。如要使图像的像素输出时钟为12MHZ,帧率为30fps,可以通过程序write_sccb(0x42,0x11,0x00)实现。
2.2 实时图像采集系统
²  系统各部分时钟说明
1.        clk1:晶振提供给CPLD模块的工作时钟
2.        sclARM控制器对摄像头配置时提供的时钟,仅用于摄像头配置
3.        xclkCPLD产生并提供给摄像头,为摄像头提供工作时钟
4.        pclk:摄像头输出的像素时钟,每一个时钟周期输出一个像素点的数据
²  setconv信号的转换控制
图像采集时,CPLD读取摄像头拍摄的图像数据,实时写入外部SRAM中;采集完一帧图像,ARM控制器需要对这一帧图像进行处理,需要CPLD读取外部SRAM中的数据,送到ARM控制器中。利用ARM控制器给出的set信号和CPLD内生成的conv信号,来实现这一控制:ARM控制器对一帧图像处理完成后,set1,等到开始采集图像信号有效时,对setconv进行翻转,开始采集图像;CPLD完成存储一幅图像后,conv翻转,ARM控制器开始处理图像。




图像采集系统时序图
2.3 单点和两点目标识别算法
ARM控制器对接收到的图像进行处理,最终将目标在PC屏幕上的坐标发送到PC,分为三个过程:从图像中识别出目标点所在位置,即像素坐标;根据像素坐标计算出目标点在白板坐标系中的位置,即白板坐标;将白板坐标转化为在PC屏幕中的坐标,即屏幕坐标。这里实现的是第一个过程。
²  目标识别原理:系统将上电工作后拍摄到的第一幅图像存为背景图像,之后若连续20帧图像没有目标点,也会更新背景图像。除上电后拍到的第一幅图像外,ARM控制器每次接收到一幅图像数据,都会存为前景图像。摄像头实际拍摄到的背景图像和存在目标点的前景图像如下图所示。

背景图像
前景图像
将背景图像与前景图像作差得到的图像中,在理想情况下,除了目标点所在位置外,全部显示为纯黑色。在算法上和数据上表现为,对背景图像和前景图像的各像素点的灰度值进行作差,除目标点覆盖到的几个像素点外,其余像素点的灰度均为0。背景图像和存在目标点的前景图像的差值图像如下图所示。

背景图像与前景图像的差值图像
一般来说,一个目标点在摄像头拍摄到的图像中会覆盖几十个像素点。为了精确计算目标点在图像中的位置,即在图像中的横坐标、称为像素坐标,对差值图像各像素点进行逐列扫描,将每一列的所有点的灰度值与阈值对比。取灰度值大于90的点中最大灰度的90%作为阈值,若某点的灰度值大于该阈值,则认为该点被目标点覆盖到了。若检测到目标点后连续三列没有目标点覆盖到的像素点,则认为该目标点到此结束。将之前所有被覆盖到的像素点的横坐标相加,取平均值,即认为是该目标点的像素坐标。
²  两点简单说明:有两个目标点时,差值图像中会检测到一个或者两个目标点。在对差值图像进行逐列扫描时,检测完第一个目标点后,继续扫描,直到扫描完第二个目标点或者扫描完所有列。分别求出两个目标点的像素坐标。
2.4目标定位技术
这里实现的是ARM控制器计算屏幕坐标的第二个过程,根据像素坐标计算在白板坐标系中的坐标。基于机器视觉的目标定位技术主要是通过摄像头的三角定位来实现。
²  计算摄像头参数:在对触控点进行定位之前需要提取摄像头参数。需要提取的五个摄像头参数分别为:摄像头焦距f,摄像头在成像平面的像素位置u0,摄像头在交互设备平面准确坐标系的坐标值(x0y0),摄像头成像平面与水平方向夹角tanβ2。由于需要分别提取主摄像头和从摄像头的五个参数,上述参数均以添加下标m代表主摄像头,下标s代表从摄像头。以主摄像头为例,提取摄像头参数的方法如下图所示


提取摄像头参数
图中AxA,yA)为任意触控点在交互设备平面坐标系的准确坐标,uAm为对应触控点在主摄像头图像中的像素位置,由图中可以得到:
        1
        2
           3
由上述三个方程联合可以得到     4
同理可得从摄像头关系             5
通过公式(4)和(5),由至少5个不同触控点在交互式设备平面的准确坐标和对应摄像头图像中的图像位置即可得出所求的摄像头参数。
²  目标定位:当任意触控点接触交互设备表面时,同过单摄像头目标识别可以分别得到该点在主、从图像中的像素坐标uAmuAs。由这两个像素坐标和之前提取到的摄像头参数,通过公式(4)和(5)就可以得到触控点在交互设备平面的坐标。
2.5上位机和下位机联合校准
ARM控制器计算目标点在PC屏幕中的坐标时的第三个过程,是在白板坐标和屏幕坐标间建立一种映射。校准的目的是计算出这一映射的系数,用于计算屏幕坐标。联合校准的流程图如下。

联合校准流程图
2.6 基于USB的复合功能开发
为方便用户的使用,将电子白板开发为USB设备。由于在不同的情况下要实现不同的功能,该USB设备为包含鼠标、触摸板、自定义HID设备三种功能的复合USB设备。
²  鼠标:在XP或者更老的系统下,电子白板作为鼠标设备进行工作。在此情况下,设备向PC发送触摸点的坐标及左右键的操作,只能进行单点操作。
²  触摸板:在WIN7或者更新的系统下,系统支持触摸板设备。此时电子白板作为触摸板设备进行工作,用户可以进行多点操作,系统可以自动识别放大、缩小、旋转等一些手势。
²  自定义HID设备:由于windows系统对鼠标这类的系统独占设备的保护,无法对HID鼠标设备进行读写操作,因此在需要读取交互设备发送的信息或者由计算机向交互设备发送信息,实现双向通信时,需要将交互设备枚举成自定义HID设备。故在进行上位机和下位机联合校准时,设备作为自定义HID设备进行工作,与PC进行双向通信。

3ARM主板程序流程图.jpg (70.07 KB )

3ARM主板程序流程图.jpg

5图像采集系统时序图.jpg (23.05 KB )

5图像采集系统时序图.jpg

10联合校准流程图.jpg (110.11 KB )

10联合校准流程图.jpg

2系统结构图.jpg (47.87 KB )

2系统结构图.jpg

二-设计思路.pdf

552.85 KB

沙发
vigous1| | 2015-2-27 21:21 | 只看该作者
借鉴学习,期待楼主继续完善

使用特权

评论回复
板凳
zh113214| | 2015-2-28 15:23 | 只看该作者
好复杂呀,看不懂呢

使用特权

评论回复
地板
小浣熊| | 2015-2-28 15:40 | 只看该作者
为了使摄像头拍到的图像达到最好的效果,经过多次实验比较效果,对摄像头曝光控制配置如下:采用手动曝光的方式进行工作,摄像头的曝光时间设置为0x00ff,对应的我们截取的图像大致在一帧图像开始后的8ms左右(一帧图像为16.6ms),LED补光设置在一帧图像开始后的1-4ms。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

64

帖子

1

粉丝