图像处理 的介绍和说明_第1页
图像处理 的介绍和说明_第2页
图像处理 的介绍和说明_第3页
图像处理 的介绍和说明_第4页
图像处理 的介绍和说明_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、图像处理过程图像处理作为小车走迷宫过程中获得信息的第一过程,对于小车的计算路径和确认位置起到了根本的作用,经过了对于OPENCV和LABVIEW两种软件的了解,我们发现虽然OPENCV在图像处理方面确实十分强大,但是其扩展性与易用性均不如LABVIEW来的好,我们权衡利弊,决定使用LABVIEW进行对于图像的处理。LABVIEW以其强大的虚拟仪器库著称,我们在本次小车图像处理中用到了以下的组件:1. NI.Labview 8.23. 4. NI-IMAQ FOR USB*对于XP SP2系统还需要加载ImaqDirectShowDll.dll、ImaqDirectShowExportDll.d

2、ll图像处理部分分为主要由以下几个部分组成的:1. 图像采集2. 图像阈值分析和转化3. 迷宫出入口检测与小车检测4. 迷宫转化成数组(提供给迷宫算法的接口)在Labview中我们可以很容易的利用其本身就拥有的扩展库来完成以上的操作,下面对于我们的图像处理程序进行介绍:1. 图像采集我们组在图像采集部分采用的是动静结合的方法,即先采集一张静态的迷宫图像,通过这个图像,标定出迷宫出入口和小车初始位置,事先计算出小车应该走的路径,之后在小车开始行动之后进行动态采集,分析小车的位置,再对比算出的位置与之前的最短路径来确定小车如何行动。相对于其他组利用OPENCV进行的动态采集,需要不断的计算路径和修

3、正小车方向,我们的方法大大减少了运算量,也减少了小车卡在角落的可能。静态采集较为简单,可以通过外部软件获取图像,也可以直接调用Labview中NI-IMAQ组件的相关函数来进行单次的采集,在这里我们利用的是Labview中NI-IMAQ相关函数结合上图来看,先枚举摄像头利用IMAQ USB Enumerate Cameras,然后对摄像头初始化IMAQ USB Init,分配空间并设置基础IMAQ USB Grab Setup,最后进行采集图像IMAQ USB Grab Acquire。当需要进行动态采集的时候,只需要把采集的部分即IMAQ USB Grab Acquire进行一个循环就可以了

4、。2. 图像降噪和阈值分析(图像二值化)图像采集完毕之后,必须要进行二值化才能继续进行操作,因为摄像头和光线条件的限制等原因,图像采集之后会有大量的噪点存在,二值化之后可能会在路径上产生黑斑影响计算,而我们想到如果迷宫计算不是采用寻找路径的方法而是采用检测出墙壁进行计算的方法,就可以很好的避免大量噪点的问题。对于阈值分析Labview中同样有合适的函数可以进行利用IMAQ ColorThreshold,我们可以调整各种颜色阈值来将图像二值化,如下图所示:其中族控制输入三个阈值的数据,255是二值化后的灰度。3. 迷宫出入口的检测与定标。在计算中我们把迷宫转化成了一个矩阵,但是图的边界不一定是迷

5、宫的边界,我们需要手动标定出迷宫的边界,这是就需要用到IMAQ Select Point,通过鼠标点选选出迷宫的边界(角)的坐标,如下图所示。在标定了迷宫边界之后,我们就可以进行对于小车和终点位置的标定了,我们在小车上放上与迷宫颜色同样的圆形,终点处也放一个圆形,两个圆形拥有不同的大小,它们的颜色与迷宫墙壁相同,于是可以通过二值化被保留下来。利用IMAQ Detect Circles可以检测到这些圆形,因为半径的不同可以设置合适的值来分辨出小车和出口的不同。4. 迷宫算法程序在LABVIEW中的接入在经过了以上的过程之后,我们已经拥有了二值化后的迷宫(矩阵形式)还有迷宫出口的坐标,小车的坐标(

6、即起始点坐标),可以开始计算小车走迷宫的路径了,这时就需要接入C+程序来对路径进行计算。Labview的可扩展性很强,我们可以把C+代码生成一个DLL文件来插入Labview中去。在函数选板中找到互连接口-库和可执行程序-调用库函数节点就可以建立一个dll调用节点。设置各种参数并导入dll文件就可以了。我们的迷宫算法接口输入了一个二维数组和小车的坐标以及出口的坐标,假设迷宫是44大小,则在这里生成一个44的二维数组其中标出了小车应该走的路径,具体的实现参见迷宫算法部分。5. 串口通信Labview因为其强大的扩展功能对于串口通信来说自然是不在话下,如下图就是一个串口通信的例子:如图写入一个0到

7、串口。感想:这次也是我进入大学以后第二次做科创类的课题了,与科创1的玩玩闹闹不同,科创3的难度确实给了我们不少的挑战,一开始我们觉得Labview是可视化编程或许相对于纯代码的OPENCV要简单不少,但是随着对于Labview进行了了解了之后,我发现它并不是一个简单的东西,而且我们也不能像使用OPENCV的组那样有很多能够用来参照的样例。但是我还是坚持下来并把这个图像处理的部分做了下来,回头来看看,这过程中翻查资料,试验编程的过程中,自己还是有了长足的进步。然而之后却遇到了更大的难题,就是Labview各个版本不统一,且对于中文系统的支持不好,导致我们动态采集部分一直会报错,我们暂时用静态的图片迭加解决了这个问题。然而在我们组编好迷宫算法,虚拟调试能够找到正确的路径,并且发送正确的命令时,小车却一动不动了。因为我们组拿到小车的时间很晚,没有对小车进行初步的调试就直接

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论