基于NI Vision的毕业设计
基于NI Vision的毕业设计什么是NI Vision NI Vision从毕业设计的角度来讲,是指基于NI(美国国家仪器)的LabVIEW平台与其Vision Development Module(VDM)视觉开始模块共同完成毕业设计任务。从更实际应用来看,NI机器视觉不仅仅指LabVIEW+VDM,也可以指NI的Vision Builder for AI(VBAI),也可以指NI Vision Acquisition Software视觉采集软件(ACQ)。当然主要的是还是指Vision本身。因为Vision中的函数,不仅仅可以用于LabVIEW,可以用于VBAI调用,同时也可以用于VB,VC等其它编程平台调用。因此在实际项目中,会发现许多编程人员并不会LabVIEW,但是其使用的图像处理函数同样也是NI的Vision工具包。
基于NI Vision的毕业设计所需基本软件 正如上面提到的,如果是做基于NI Vision的毕业设计,那么一般来讲是指利用NI的LabVIEW与VDM进行毕业设计。这里,我们一般只需要两个软件就可以完成这个任务了,一个是LabVIEW(最新LabVIEW 2012下载)和VDM(最新VDM2012工具包下载)。当然,这里可使用的仅仅只有LabVIEW与Vision函数库,如果使用的是工业相机,而且工业相机本身有相应的动态链接库(DLL)或者是相应的LabVIEW驱动程序,那么我们就完全只需要这两个软件即可,而如果使用提普通的USB摄像头,或者是没有LabVIEW驱动而又被NI ACQ支持的工业相机,那么就需要再下载NI的视觉采集驱动程序包(最新ACQ 2012版驱动程序下载)。
通常来讲,学生不太可能购买专业的工业相机做毕业设计,因为即使最便宜的国产CMOS工业相机,也需要一两千块,如果再算上镜头、光源什么的,也是需要好几千块钱的。因此使用常用的QQ聊天摄像头,或者是笔记本上自带的摄像头做毕业设计是最经济的方案。因此,要做基于NI Vision的毕业设计,需要准备好三款软件:NI LabVIEW,NI Vision Development Module,NI Vision Acquisition software。
目前最新版为2014SP1.
NI LabVIEW 2014SP1视觉开发必备软件和工具包LV、VDM、VBAI、VAS_编程语言|应用软件_机器视觉教程|软件|驱动下载_机器视觉论坛_石鑫华视觉_商城_方案_系统_光源_控制器_工业相机_镜头_石鑫华视觉_机器视觉论坛
http://visionbbs.com/thread-7023-1-1.html
基于NI Vision的毕业设计所需基本硬件 正如上面讲到的,学生一般不会有雄厚的资金用于购买硬件,那么使用摄像头是最经济的方案,一个摄像头百把块钱,即包含了相机、也有了镜头。当然如果是做一般的毕业设计,如字符识别、尺寸测量等,基本上就不需要光源什么的,有普通的日光灯也可以使用了。如果导师跟你过不去,非得整一个专业视觉方案都不好做的课题,那么你就悲催了,视觉效果不一定理想呀。
当然,如果经济条件允许,可以买一个普通的国产CMOS工业相机(USB接口的),一千多块钱。再配一款定焦工业镜头,千把块。再培一个小一点的条形光源或者是环形光源,几百上千的。那也是可以出效果的。当然,这个需要投资几千块RMB。
如果你使用USB摄像头,那么需要确定是你的摄像头能够被NI的视觉软件所以支持,不求能设置多种属性,至少要能采集到图像,这样才能有继续下去的意义。早期的一些LabVIEW版本对于USB摄像头的支持是不太理想的(LabVIEW8.6版以前的)。所以建议学生朋友们使用最新的LabVIEW+VDM。又或者早期的一些USB摄像头协议也不一定就是DirectShow,因此也有可能不被支持。确认摄像头是不是被NI的ACQ支持,只需要安装好上面提到的三款软件后,然后从NI MAX或视觉助手(Vision Assistant)中查看是否能发现摄像头,并且能正常采集图像即可。
http://visionbbs.com/data/uploads/allimg/121011/2-121011235512.jpg
NI MAX中查找到摄像头并可以正常采集
作用使用的是联想的F31破烂本,自带一个130万像素的摄像头。并且能被NI ACQ支持。
http://visionbbs.com/data/uploads/allimg/121011/2-121011235515.jpg
NI Vision Assistant中可以查找到USB摄像头并可以采集图像
NI Vision 毕业设计的基本思路 准备好所以需要的软件、硬件后,就可以开始毕业设计之旅了。这个过程是一个非常纠结悲催而又不得不去纠结不得不悲催的过程。因为基本上没有人会教你,必须自己慢慢去摸索。LabVIEW的书籍现在市场上已经非常多了,童鞋们在各自学校的图书馆里都能借到好几本吧,实在不行,花几十块钱买一本也没什么太多影响。但是Vision这一块的,书箱基本上就没有啦。除了NI自己的英文版帮助手册,也就只有石鑫华视觉上有相关的中文介绍了-VBAI系列的教程可是已经相当详细啦,各位看观。
如果你对LabVIEW已经比较了解了,那么就直接往下看吧,如果不了解,还是先学习一下LabVIEW再接着往下看吧。
第一步,打开视觉视觉助手,等待初始化完成:
http://visionbbs.com/data/uploads/allimg/121011/2-121011235516.jpg
Vision Assistant视觉助手初始化
http://visionbbs.com/data/uploads/allimg/121011/2-121011235518.jpg
视觉助手欢迎界面
第二步,在视觉助手的欢迎界面中点击第二个按钮Acquire Image采集图像,或者是点击第一个Open Image打开图像。采集图像是从现有硬件中直接采集图像,而打开图像是打开有的图像进行处理。第三个Solution Wizard解决方案向导,是打开视觉助手自带的一些例子,可以查看其中的一些基本应用方法。有兴趣的可以打开例子研究。这里我们使用第二个按钮,采集图像。
http://visionbbs.com/data/uploads/allimg/121011/2-121011235520.jpg
点击采集图像后的视觉助手界面
在采集图像中,共有五个函数,从上到下分别是Acquire Image采集图像(从NI的智能相机、图像采集卡等设备中进行采集),这个需要购买NI的相关硬件才可以使用;Acquire Image(1394,GigE,or USB):从选择的1394(火线)、GigE(千兆以太网)、USB、IP相机中采集图像,如果是从我们的USB摄像头中采集图像,需要点击此函数进行图像采集;Acquire Image(Smart Camera):从智能相机中采集图像,需要NI的智能相机支持;Acquire Image(RT):从实时系统中采集图像,需要NI硬件支持;Simulate Acquisition:仿真采集,即模拟相机采集图像,实际上就是从本地读取图像文件进行仿真,同欢迎界面中的第一个按钮Open Image。
点击第二个函数Acquire Image(1394,GigE,or USB)。等待函数枚举系统中的相机。如下图所示:
http://visionbbs.com/data/uploads/allimg/121011/2-121011235522.jpg
采集图像函数枚举了系统中的相机
从上图中可以看到,电脑上有一个联想的摄像头,并且已经选中此摄像头,在下面的Video Mode中会出现摄像头支持的视觉模式。这里使用提1280x1024 YUY2 9.00fps,当然也可以选择其它的如640x480 YUY2 30.00fps,这里有区别的仅仅只是分辨率与速率。再点击Attributes属性选项卡进行相关的属性设置:
http://visionbbs.com/data/uploads/allimg/121011/2-121011235523.jpg
摄像头属性设置
一般来讲,NI读取到的USB摄像头的属性可以设置的参数很少,如增益、曝光时间、GAMA值等通常都不可以设置。只能看看各位的摄像头是否支持这些参数设置,如果支持,那么设置一下曝光时间与增益也许对图像有帮助。
设置完属性后,点击选项卡下面的五个按钮中的第二个三角形的按钮Acquire Continuous Images连续采集图像,进行图像采集。也可以点击第一个按钮采集单帧图像,不过一般摄像头不支持曝光设置的话,都是自动曝光、自动增益的,开始的图像可能很黑。第三个是刷新相机列表的,第四个是采集图像序列的,第五个是把图像发送到图像浏览器中。先点击第二个连续采集图像:
http://visionbbs.com/data/uploads/allimg/121011/2-121011235525.jpg
连续采集图像
当认为图像比较理想时(特征较突出时),再点击一次第二个按钮停止采集。然后点击下面的Close关闭按钮。这时会弹出一个对话框提示关闭采集函数将释放相机资源,是否将图像发送到图像浏览器中。点击是(Y)。如下图所示:
http://visionbbs.com/data/uploads/allimg/121011/2-121011235527.jpg
确认将图像发送到图像浏览器
http://visionbbs.com/data/uploads/allimg/121011/2-121011235530.jpg
左上角图像浏览器中出现图像
如果有多个图像,可以使用下面的第一张、上一张、下一张、最后一张等按钮进行选择。
如果需要浏览图像,可以点击右上角的Browse Image按钮进行查看,如果不需要浏览,则点击第三个按钮Process Image图像处理,直接进入图像处理界面。如下图所示:
http://visionbbs.com/data/uploads/allimg/121011/2-121011235533.jpg
图像处理界面
在图像处理界面中,我们可以在左下角的函数中选择各种不同的函数以完成不同的测试需要。这里的函数的具体用法,可以参数视觉助手的帮助文档,或者查看石鑫华视觉上VBAI系列教程,VBAI中的函数与视觉助手Vision Assistant中的函数大体类似。
如下图所示为首先将USB采集到的彩色图像转换成灰度图像。然后再设置了一个查找边缘的函数,最后设置了一个卡尺函数进行间距测量。
http://visionbbs.com/data/uploads/allimg/121011/2-121011235536.jpg
视觉助手检查特征
这里需要注意一点的就是,一般的摄像头都是彩色的,而图像处理中大部分的函数都是灰度图像的函数。因此需要将彩色图像转换成灰度图像,如果有必要还需要将灰度图像转换成二值图像。
完成了特征检查后,点击菜单栏中的Tools工具下的Create LabVIEW VI…创建LabVIEW VI函数,打开生成VI向导如下图所示:
http://visionbbs.com/data/uploads/allimg/121011/2-121011235538.jpg
生成LabVIEW VI
http://visionbbs.com/data/uploads/allimg/121011/2-121011235539.jpg
生成LabVIEW VI向导步骤一
在生成VI向导步骤一中,第一栏是选择生成哪个版本的VI,一般只安装一个版本的LabVIEW只有一个选项,如果有多个版本,那么可以选择不同的LabVIEW版本。第二栏是用于指定VI生成的路径与名称。可以用右边的文件浏览按钮进行定位。下面有一个选项Optimize Code for Parallel Execution是并行执行代码优化。勾选时,生成的VI会优化一部分可以并行执行的代码,如上面的例子中的查找边缘与卡尺测量间距的函数,是可以并行执行的。这个选项应该是在Vision 2012后才出现的。在以前的版本中可能没有这个选项。设置好路径名称后,点击Next下一步:
http://visionbbs.com/data/uploads/allimg/121011/2-121011235540.jpg
生成LabVIEW VI向导步骤二
生成VI向导步骤二是选择视觉助手脚本,一般是选择第一项,当前脚本,第二项用于已经现成的脚本用于生成代码。确认好脚本好,再点击Next下一步:
http://visionbbs.com/data/uploads/allimg/121011/2-121011235541.jpg
生成LabVIEW VI向导步骤三
生成VI向导第三步是选择图像源。默认使用提图片文件。通常来讲,如果是想使用这个生成的VI演示,可以使用这个默认的,如果是想把这个VI当作图像处理的子VI,那么应该选择第一个Image Control图像控件,而如果是想进行采集,则可以选择第六、第七个采集选项。第六个IMAQdx图像采集选项,会使用Vision中的一个快速VI进行采集。这里我们使用默认的第二个,再点击Next下一步:
http://visionbbs.com/data/uploads/allimg/121011/2-121011235542.jpg
生成LabVIEW VI向导步骤四
生成VI向导第四步,选择在VI前面板需要生成的控件和指示器。左边为控件,右边为指示器。可以根据需要将某些参数设置为控件,如果不需要未勾选,则在生成的VI中以常量形式出现。点击Finish完成向导,调用LabVIEW生成VI,如下图所示:
http://visionbbs.com/data/uploads/allimg/121011/2-121011235544.jpg
调用LabVIEW生成VI
http://visionbbs.com/data/uploads/allimg/121011/2-121011235547.jpg
并行执行优化代码的区别
如上图所示,1.vi是未勾选并行执行代码优化的,2.vi是勾选并行执行代码优化的,可以看出在找边、和卡尺测量中有明显的区别。
经生成VI后,此VI就可以单独执行并检测,当然因为选择提图像文件,因此在执行时,会弹出文件浏览框,选择需要的文件即可检测。
如果需要在VI中进行采集,可以参考文章:NI LabVIEW IMAQdx采集图像
可以将上面的函数中的颜色抽取函数以前的部分去掉替换成Image Control图像控件,并且优化一下代码后将其设置成图像处理的子VI,这样就可以用于毕业设计的图像处理部分了。
以上就是NI Vision毕业设计最快捷的一种实现方法。当然视觉助手并没有包含所有的Vision中的函数。因此有一些功能在视觉助手中是无法实现的,如仪表指针读数等。另外视觉助手生成的代码,在LabVIEW的视觉与运动中也是找不到,那些函数是NI针对视觉助手特别封装的,但是在系统中是有这些函数的,可以直接复制到程序中使用。
页:
[1]