图像处理过程.docx

上传人:b****4 文档编号:5518502 上传时间:2022-12-18 格式:DOCX 页数:6 大小:132.39KB
下载 相关 举报
图像处理过程.docx_第1页
第1页 / 共6页
图像处理过程.docx_第2页
第2页 / 共6页
图像处理过程.docx_第3页
第3页 / 共6页
图像处理过程.docx_第4页
第4页 / 共6页
图像处理过程.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

图像处理过程.docx

《图像处理过程.docx》由会员分享,可在线阅读,更多相关《图像处理过程.docx(6页珍藏版)》请在冰豆网上搜索。

图像处理过程.docx

图像处理过程

图像处理过程

图像处理过程

图像处理作为小车走迷宫过程中获得信息的第一过程,对于小车的计算路径和确认位置起到了根本的作用,经过了对于OPENCV和LABVIEW两种软件的了解,我们发现虽然OPENCV在图像处理方面确实十分强大,但是其扩展性与易用性均不如LABVIEW来的好,我们权衡利弊,决定使用LABVIEW进行对于图像的处理。

LABVIEW以其强大的虚拟仪器库著称,我们在本次小车图像处理中用到了以下的组件:

1.NI.Labview8.2

2.NI.Vision.v8.5.Acquisition.Software

3.NI.Vision.v8.5.Development.Module

4.NI-IMAQFORUSB*

*对于XPSP2系统还需要加载ImaqDirectShowDll.dll、ImaqDirectShowExportDll.dll

静态采集较为简单,可以通过外部软件获取图像,也可以直接调用Labview中NI-IMAQ组件的相关函数来进行单次的采集,在这里我们利用的是Labview中NI-IMAQ相关函数

结合上图来看,先枚举摄像头利用IMAQUSBEnumerateCameras,然后对摄像头初始化IMAQUSBInit,分配空间并设置基础IMAQUSBGrabSetup,最后进行采集图像IMAQUSBGrabAcquire。

当需要进行动态采集的时候,只需要把采集的部分即IMAQUSBGrabAcquire进行一个循环就可以了。

1.图像降噪和阈值分析(图像二值化)

图像采集完毕之后,必须要进行二值化才能继续进行操作,因为摄像头和光线条件的限制等原因,图像采集之后会有大量的噪点存在,二值化之后可能会在路径上产生黑斑影响计算,而我们想到如果迷宫计算不是采用寻找路径的方法而是采用检测出墙壁进行计算的方法,就可以很好的避免大量噪点的问题。

对于阈值分析Labview中同样有合适的函数可以进行

利用IMAQColorThreshold,我们可以调整各种颜色阈值来将图像二值化,如下图所示:

其中族控制输入三个阈值的数据,255是二值化后的灰度。

 

2.迷宫出入口的检测与定标。

在计算中我们把迷宫转化成了一个矩阵,但是图的边界不一定是迷宫的边界,我们需要手动标定出迷宫的边界,这是就需要用到IMAQSelectPoint,通过鼠标点选选出迷宫的边界(角)的坐标,如下图所示。

在标定了迷宫边界之后,我们就可以进行对于小车和终点位置的标定了,我们在小车上放上与迷宫颜色同样的圆形,终点处也放一个圆形,两个圆形拥有不同的大小,它们的颜色与迷宫墙壁相同,于是可以通过二值化被保留下来。

利用IMAQDetectCircles可以检测到这些圆形,因为半径的不同可以设置合适的值来分辨出小车和出口的不同。

 

3.迷宫算法程序在LABVIEW中的接入

在经过了以上的过程之后,我们已经拥有了二值化后的迷宫(矩阵形式)还有迷宫出口的坐标,小车的坐标(即起始点坐标),可以开始计算小车走迷宫的路径了,这时就需要接入C++程序来对路径进行计算。

Labview的可扩展性很强,我们可以把C++代码生成一个DLL文件来插入Labview中去。

在函数选板中找到互连接口->库和可执行程序->调用库函数节点就可以建立一个dll调用节点。

设置各种参数并导入dll文件就可以了。

我们的迷宫算法接口输入了一个二维数组和小车的坐标以及出口的坐标,假设迷宫是4×4大小,则在这里生成一个4×4的二维数组其中标出了小车应该走的路径,具体的实现参见迷宫算法部分。

4.串口通信

Labview因为其强大的扩展功能对于串口通信来说自然是不在话下,如下图就是一个串口通信的例子:

如图写入一个0到串口。

 

感想:

这次也是我进入大学以后第二次做科创类的课题了,与科创1的玩玩闹闹不同,科创3的难度确实给了我们不少的挑战,一开始我们觉得Labview是可视化编程或许相对于纯代码的OPENCV要简单不少,但是随着对于Labview进行了了解了之后,我发现它并不是一个简单的东西,而且我们也不能像使用OPENCV的组那样有很多能够用来参照的样例。

但是我还是坚持下来并把这个图像处理的部分做了下来,回头来看看,这过程中翻查资料,试验编程的过程中,自己还是有了长足的进步。

然而之后却遇到了更大的难题,就是Labview各个版本不统一,且对于中文系统的支持不好,导致我们动态采集部分一直会报错,我们暂时用静态的图片迭加解决了这个问题。

然而在我们组编好迷宫算法,虚拟调试能够找到正确的路径,并且发送正确的命令时,小车却一动不动了。

因为我们组拿到小车的时间很晚,没有对小车进行初步的调试就直接模拟了环境,但不料小车却无法正确接收指令,而我们到最后也没能解决这个问题,实在是非常遗憾。

但是我想经过了这次科创的学习与实践,我对于Labview以及单片机控制都有了入门的了解,相信如果之后能够遇到类似的问题,一定能够成功的解决。

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

当前位置:首页 > 自然科学 > 物理

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

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