图像的摄取与图像处理算法的编写.docx

上传人:b****7 文档编号:10638145 上传时间:2023-02-22 格式:DOCX 页数:13 大小:323.91KB
下载 相关 举报
图像的摄取与图像处理算法的编写.docx_第1页
第1页 / 共13页
图像的摄取与图像处理算法的编写.docx_第2页
第2页 / 共13页
图像的摄取与图像处理算法的编写.docx_第3页
第3页 / 共13页
图像的摄取与图像处理算法的编写.docx_第4页
第4页 / 共13页
图像的摄取与图像处理算法的编写.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

图像的摄取与图像处理算法的编写.docx

《图像的摄取与图像处理算法的编写.docx》由会员分享,可在线阅读,更多相关《图像的摄取与图像处理算法的编写.docx(13页珍藏版)》请在冰豆网上搜索。

图像的摄取与图像处理算法的编写.docx

图像的摄取与图像处理算法的编写

王广超

F0703009

5070309330

图像的摄取与图像处理算法的编写,小车跟踪算法的编写

张瑞韬

F0703009

5070309334

迷宫的制作,小车串口通信方面的实现

李佳

F0703009

5070309315

单片机程序的编写,小车控制部分算法的编写,后勤

徐晓宁

F0703009

50703093

迷宫的制作,小车壳子的制作,小车串口通信方面的实现

摘要:

本项目设计实现小车在计算机控制下走出迷宫的功能。

有一台小车和一个PC,小车以ATMEL公司的AT89S52芯片为核心,计算机用VC++与OpenCV处理采集到的图片判断小车及迷宫的位置信息,计算并选择路线,通过无线指令控制小车动作,使之沿最短路径离开迷宫。

关键词:

OpenCV,迷宫算法,串口通信,单片机小车

目录

1.整体介绍1

2.硬件部分3

2.1硬件元器件4

2.2调试过程8

3.软件部分9

3.1图像处理9

3.1.1原始图像9

3.1.2透视变换9

3.1.3迷宫结构分析9

3.1.4最短路径11

3.1.5小车定位11

3.2小车实时调整11

4.串口通讯13

4.1有线方面13

4.2无线方面13

5.项目总结与心得15

6.致谢17

1.整体介绍

由摄像头(USB接口)实时捕捉迷宫内小车的位置情况,通过USB线缆传送至电脑里编写的上位机软件,软件通过图像识别找出当前小车的位置信息及迷宫的信息,经过计算,作出控制决策,生成控制信号,并经通讯模块发送至小车。

小车上的控制电路对控制信号作出相应反应,驱动电机。

2.硬件部分

2.1硬件元器件

这次科创3实验,用到两块主要的芯片,一块是CMOS8位微控制器,其主要功能是:

·兼容MCS-51指令系统

·8k可反复擦写(>1000次)ISPFLASHROM

·1000次擦写周期

·32个双向I/O口

·4.5-5.5V工作电压

·3个16位可编程定时/计数器

·时钟频率0-33MHz

·全双工UART串行中断口

·128x8bit内部RAM

·低功耗空闲和省电模式

·中断唤醒省电模式

·3级加密位

·看门狗(WDT)电路

·软件设置空闲和省电功能

·灵活的ISP字节和分页编程

·双数据寄存器指针

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

AT89S52使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,AT89S52拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能:

8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

其PDIP图如下:

另一块芯片是L298N,用它来控制两个电机。

管脚图如下:

每个管脚正常工作时的电参数如下:

2.2调试过程

在小车硬件控制部分的设计过程中,其他方面进行得比较顺利,关键难点在于确定小车进退转弯的速度参数,由于迷宫材料打滑,此速度知道最后我们也没有成功实验出来,也可以说是一个遗憾。

3.软件部分

工具:

VC++、OpenCV

主要流程:

1.摄像头获取原始图像

2.透视变换得到迷宫俯视图

3.分析迷宫结构

4.指定入口出口,计算最短路径

5.摄像头实时捕捉小车位置,与计算路径相比较,并通过串口自动向小车发送调整指令

6.小车最终到达出口

3.1图像处理

3.1.1原始图像

利用OpenCV的cvQueryFrame函数从摄像头获取原始图像,虽然效率不高,但考虑到小车控制中各个环节的精度与效率,此处并不是瓶颈,故可以接受。

3.1.2透视变换

迷宫路线计算和小车位置判断都基于透视变换后的俯视图,OpenCV提供了透视变换的函数WarpPerspective,该函数按照指定变换矩阵进行变换,而变换矩阵由GetPerspectiveTransform从变换前后两个图像中的4个对应点计算出来。

3.1.3迷宫结构分析

迷宫的分析可以通过“测试线”进行:

 

 

矩形可看作迷垂直方向的宫壁,而红色细线即为其“测试线”(类似的,水平方向迷宫壁的“测试线”为垂直方向)。

将迷宫等分为8*8的小块,则“测试线”应设置在每小块周围的4个迷宫壁的中垂线位置。

通过判断“测试线”上迷宫壁的像素个数,可以推断出该“测试线”是否跨越了一个迷宫壁,从而得到整个迷宫的结构。

右侧窗口为透视变换后的实时图像,蓝色的网格线将迷宫等分为8*8的小格。

左侧的半个窗口为处理的结果,其中粉红色的区域即为迷宫的最短路径,是由右图中一个个的小格组成。

而黄色网格线即为关键的“测试线”,绿色部分为标记出的迷宫壁,可以看出“测试线”正好与迷宫壁正交,准确地检测出迷宫的结构。

3.1.4最短路径

最短路径的计算采用标号的广度优先搜索,第一次搜索到出口时,搜索树的层数是最小的。

而且搜索时尽量保持方向不变,就可以再多条最短路径中选择出转向次数最少的那条,易于控制。

3.1.5小车定位

为了排除迷宫壁与迷宫地面的干扰,小车需要用蓝色包装。

然后用摄像头进行小车的特写拍照(照片基本上就是一团蓝色),之后就可以通过OpenCV的CalcBackProject函数得到照片在实时图像中的反向投影。

反向投影是一幅图像在另一幅图像中出现的概率,小车的特写在迷宫中出现概率最大的地方自然就是小车当前在迷宫中的位置。

而跟踪函数CamShift就是跟踪这块概率最大的区域,并返回这块区域的位置角度大小等信息。

而小车定位最终确定小车在8*8的迷宫中哪一格,从而与路径信息比对。

3.2小车实时调整

小车基本行进方式为大步向前、小步向前、小步后退、左转、右转。

各状态两个电机的速度事先设置好,实际过程中只需向小车发送相应的指令即可。

走迷宫的路径已计算出,小车的实时位置由摄像头捕捉并确定。

由于小车一定被迷宫壁限制在正确的方向,对小车运动的判断只基于目前应该在的位置与下一步方向:

当小车当前位置与应在位置有较大差距时根据情况发送小步前进后退指令,确保小车停在应在位置附近

当小车下一步方向不变时,大步前进。

当小车下一步方向改变时,判断并发送左转右转指令,同时监视小车方向。

由于迷宫壁的限制作用,小车一定能转向成功,并且方向的巨大改变能被明显的检测出来,则停止转向。

直到到达出口为止。

4.串口通讯

小车和电脑之间通过串口通信,有无线和有线两个方案,首先实现的是有线方案

其实无线和有线的程序方面是一样的,硬件连接上有所区别罢了

4.1有线方面

硬件:

首先要在计算机上使用一个虚拟串口驱动程序将USB端口虚拟出一个串口,再用线联到小车对应端口就完成了。

软件:

串口程序有许多种写法,在C里也有对应的库函数,但由于我们要发送的消息结构比较简单,就不需要这些专用的库函数了,直接使用windows.h中的函数了

在有线的阶段,整个程序比较简单,因为计算机端每次发送,小车都能稳定正确地收到。

4.2无线方面

但在无线的时候,小车的接收显得十分脆弱,我们的方案是首先多次发送,然后对发送的消息进行一定的加工。

即加上初始的用于对齐的一个字符,在小车接收到此字符之后,再接受接下来的指令。

但即使是这样,小车仍然不是十分听话,进过测试,只有当发送命令的次数超过10次/秒,而且保持连续不断地发送时,才能保证小车很好地执行指令。

但这样的发送方案是我们所不能接受的,因为每次从摄像头拍摄,到图像处理,到给出路径,到发送指令需要的时间就远远超过这个限度。

引起这个难点的主要原因在于,教室内每个无线发送和接收模块的频率都是一样的,而且无限模块的发送功率都比较大,导致互相之间的干扰十分严重,小车经常接受到不属于自己的杂乱信号,对小车正确执行指令带来很大难度。

由于我们不能保证在最后测试时不受其他小组的干扰,所以只能最后放弃无线计划。

5.项目总结与心得

这次科创对于我来说是一个非常严峻的挑战,涉及到的很多知识都是我们所未知的。

 在这次科创当中,作为组长我充满了热情,在各组员们分工协作下,我们终于完成了计算机控制小车走迷宫。

 我觉得这是一门非常好的课,从中我们学到了团结互助,提高了分析问题解决问题的能力,并能针对问题选择需要的知识并获取知识。

这是非常宝贵的。

6.致谢

我们科创小组能够基本完成这次科技创新三的课程实验,是要感谢多位老师和同学的。

首先要感谢开设这门课程并负责最终检验的的张士文老师,是他给我们宽松的氛围、齐备的材料,才使我们有信心和实力去做这个科创实验。

其次要感谢的是轮流在实验室给予我们悉心指导的各位助教,是他们耐心地听我们的询问以及给我们指点才使我们能够顺利地走在正确的设计路线上,这使得我们受益匪浅,也是我们能顺利做完课程实验不可缺少的因素之一。

还要感谢的是在实验室和我们一起做实验,给我们帮助指导的其他组同学,与他们在一起做科创实验我们互相学习,互相帮助,一起努力,一起奋斗,使得我们有了不断开拓进取的精神和动力。

在此,我们对所有给予过指导和帮助的老师和同学致以衷心的感谢和敬意!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1