图像处理过程

图像处理过程

ID:26309707

大小:106.50 KB

页数:5页

时间:2018-11-26

图像处理过程_第1页
图像处理过程_第2页
图像处理过程_第3页
图像处理过程_第4页
图像处理过程_第5页
资源描述:

《图像处理过程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、图像处理过程图像处理作为小车走迷宫过程中获得信息的第一过程,对于小车的计算路径和确认位置起到了根本的作用,经过了对于OPENCV和LABVIEW两种软件的了解,我们发现虽然OPENCV在图像处理方面确实十分强大,但是其扩展性与易用性均不如LABVIEW来的好,我们权衡利弊,决定使用LABVIEW进行对于图像的处理。LABVIEW以其强大的虚拟仪器库著称,我们在本次小车图像处理中用到了以下的组件:1.NI.Labview8.22.NI.Vision.v8.5.Acquisition.Software3.NI.Vision.v8.5.Devel

2、opment.Module4.NI-IMAQFORUSB**对于XPSP2系统还需要加载ImaqDirectShowDll.dll、ImaqDirectShowExportDll.dll图像处理部分分为主要由以下几个部分组成的:1.图像采集2.图像阈值分析和转化3.迷宫出入口检测与小车检测4.迷宫转化成数组(提供给迷宫算法的接口)在Labview中我们可以很容易的利用其本身就拥有的扩展库来完成以上的操作,下面对于我们的图像处理程序进行介绍:1.图像采集我们组在图像采集部分采用的是动静结合的方法,即先采集一张静态的迷宫图像,通过这个图像,标定

3、出迷宫出入口和小车初始位置,事先计算出小车应该走的路径,之后在小车开始行动之后进行动态采集,分析小车的位置,再对比算出的位置与之前的最短路径来确定小车如何行动。相对于其他组利用OPENCV进行的动态采集,需要不断的计算路径和修正小车方向,我们的方法大大减少了运算量,也减少了小车卡在角落的可能。静态采集较为简单,可以通过外部软件获取图像,也可以直接调用Labview中NI-IMAQ组件的相关函数来进行单次的采集,在这里我们利用的是Labview中NI-IMAQ相关函数结合上图来看,先枚举摄像头利用IMAQUSBEnumerateCameras

4、,然后对摄像头初始化IMAQUSBInit,分配空间并设置基础IMAQUSBGrabSetup,最后进行采集图像IMAQUSBGrabAcquire。当需要进行动态采集的时候,只需要把采集的部分即IMAQUSBGrabAcquire进行一个循环就可以了。1.图像降噪和阈值分析(图像二值化)图像采集完毕之后,必须要进行二值化才能继续进行操作,因为摄像头和光线条件的限制等原因,图像采集之后会有大量的噪点存在,二值化之后可能会在路径上产生黑斑影响计算,而我们想到如果迷宫计算不是采用寻找路径的方法而是采用检测出墙壁进行计算的方法,就可以很好的避免大

5、量噪点的问题。对于阈值分析Labview中同样有合适的函数可以进行利用IMAQColorThreshold,我们可以调整各种颜色阈值来将图像二值化,如下图所示:其中族控制输入三个阈值的数据,255是二值化后的灰度。1.迷宫出入口的检测与定标。在计算中我们把迷宫转化成了一个矩阵,但是图的边界不一定是迷宫的边界,我们需要手动标定出迷宫的边界,这是就需要用到IMAQSelectPoint,通过鼠标点选选出迷宫的边界(角)的坐标,如下图所示。在标定了迷宫边界之后,我们就可以进行对于小车和终点位置的标定了,我们在小车上放上与迷宫颜色同样的圆形,终点处

6、也放一个圆形,两个圆形拥有不同的大小,它们的颜色与迷宫墙壁相同,于是可以通过二值化被保留下来。利用IMAQDetectCircles可以检测到这些圆形,因为半径的不同可以设置合适的值来分辨出小车和出口的不同。2.迷宫算法程序在LABVIEW中的接入在经过了以上的过程之后,我们已经拥有了二值化后的迷宫(矩阵形式)还有迷宫出口的坐标,小车的坐标(即起始点坐标),可以开始计算小车走迷宫的路径了,这时就需要接入C++程序来对路径进行计算。Labview的可扩展性很强,我们可以把C++代码生成一个DLL文件来插入Labview中去。在函数选板中找到互

7、连接口->库和可执行程序->调用库函数节点就可以建立一个dll调用节点。设置各种参数并导入dll文件就可以了。我们的迷宫算法接口输入了一个二维数组和小车的坐标以及出口的坐标,假设迷宫是4×4大小,则在这里生成一个4×4的二维数组其中标出了小车应该走的路径,具体的实现参见迷宫算法部分。1.串口通信Labview因为其强大的扩展功能对于串口通信来说自然是不在话下,如下图就是一个串口通信的例子:如图写入一个0到串口。感想:这次也是我进入大学以后第二次做科创类的课题了,与科创1的玩玩闹闹不同,科创3的难度确实给了我们不少的挑战,一开始我们觉得Lab

8、view是可视化编程或许相对于纯代码的OPENCV要简单不少,但是随着对于Labview进行了了解了之后,我发现它并不是一个简单的东西,而且我们也不能像使用OPENCV的组那样有

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。