本帖最后由 uestc_zyd 于 2015-2-28 08:44 编辑
说明:由于该部分所含图片较多,所以以pdf附件的形式上传了。
另,将usb单点的主板程序结构与算法流程也上传在此部分。
三、具体设计成果
1.硬件系统
以主板为例,硬件系统如下图:
各模块要实现的功能分别为:
(1)ARM模块
² 配置摄像头工作状态
² 从CPLD处接收摄像头采集的图像,进行数据处理
² 与PC进行通信
(2)CPLD 模块
² 为摄像头提供工作时钟
² 将摄像头采集到的一帧图像保存到外部SRAM中
² 将SRAM中保存好的一帧图像送至ARM进行图像处理
(3)摄像头
² 以60fps的帧率拍摄图像
² 按像素输出图像,每像素点8位数据并行输出
(4)SRAM 模块
² 存储摄像头采集的一帧图像
2.软件系统
软件为嵌入式软件,上位机软件要实现计算摄像头参数和计算映射系数。所设计的核心算法有:接收图像、目标识别、目标定位及USB通信。
2.1接收图像
该算法实现接收CPLD送来的一帧图像数据,使用汇编语言实现,因为与c语言实现相比,汇编语言可节省大量时间。使用汇编语言实现所需时间:约0011,化为十进制数17,即1.7ms;使用c语言实现所需时间:约0072,化为十进制数114,即11.4ms。汇编代码如下:
2.2目标识别
该算法的功能是从一个摄像头拍摄到的图像中判断出目标点所在位置,实现方法为:前景图像与背景图像作差,得到差值图像;对差值图像扫描,判断有无大于阈值的像素点。
2.3目标定位
该算法的功能是根据目标点在两个摄像头视野中的位置,判断出在白板上的具体位置,通过三角定位实现。
2.4 USB通信
该算法的功能是建立在不同状态下与PC的USB通信。
实现方法:枚举成三种USB设备——鼠标、触摸板、自定义HID设备。
² 鼠标——用于XP系统正常工作时
² 触摸板——用于WIN7系统正常工作时
² 自定义HID设备——用于校准及计算摄像头参数时上下位机的通信
运行USBView 后,将电子白板与计算机连接后,USBView 显示的该HID 设备的描述符如下图:
在将枚举成HID 设备的电子白板连接到计算机后,Windows 系统会发现设备并读取设备的各种描述符,初始化设备,然后与设备进行通信。通过BusHound 截取的电子白板通过USB 接口与PC 通信的初始化过程如下图
对设备的初始化过程即枚举过程。在上图中,第一行是在主机检测到设备插入并对设备复位后,USB 主机对地址为0的设备发送的获取设备描述符的请求命令,然后设备向主机发送设备描述符,如图中的第2-3行,与设备描述符的各项完全吻合,依次为bcdUSB(0x0200)、bDeviceClass(0x00)、bDeviceSubClass(0x00)、bDeviceProtocol(0x00)、bMaxPacketSize0(0x40 (64))、idVendor(0x0483 (STMicroelectronics))、idProduct(0x5710)、bcdDevice(0x0200)、iManufacturer(0x01)、iProduct(0x02)、iSerialNumber(0x03)、bNumConfigurations(0x01);然后主机在发送获取配置描述符的请求,如图中第5行所示;第6行是设备返回给主机的配置描述符,00 01是bNumInterfaces项、0x01是bConfigurationValue 项、0x00是iConfiguration 项、0xE0是bmAttributes项、0x32是MaxPower项,后面几行是获取接口、端点、字符串、报告等描述符的主机请求和设备返回的描述符数据。
|