机器视觉相关设备使用与编程KC10122101c34.docx
《机器视觉相关设备使用与编程KC10122101c34.docx》由会员分享,可在线阅读,更多相关《机器视觉相关设备使用与编程KC10122101c34.docx(24页珍藏版)》请在冰豆网上搜索。
机器视觉相关设备使用与编程KC10122101c34
2-1-1前言
在2-1这个章节,我们要来介绍NIVisionAssistant,桌面图示如下图2-1所示,为什么要介绍它呢?
因为我们可以透过它撷取影像、建立影像处理流程,进行一些基本的影像处理或实验,让我们能够快速完成影像塬型的开发,它还能帮我们计算影像处理流程所花费的时间,甚至最后还能产生程式码和Excel报表!
所以我们要学习影像处理的话,怎么能够不认识它呢?
接下来,让我们按下桌面上的NIVisionAssistant,进入它的世界开始进行影像处理吧!
图2-1NIVisionAssistant桌面图示
不论我们现在使用的是NIVisionAssistant2009还是最新的NIVisionAssistant2013,一打开它所看到的画面应该会和下图2-2所示相同。
图2-2NIVisionAssistant初始画面
此画面我会将其分为以下七个区块:
1:
NIVisionAssistant页面切换
2:
影像选择区
3:
影像处理显示区
4:
影像处理功能选择区
5:
NIVisionAssistant文字说明
6:
影像处理流程建立区
7:
NIVisionAssistantMenu选单
在接下来的章节,作者我会介绍到上述区块的功能。
2-1-2获取影像
在NIVisionAssistant内,我们有两种方式可以获取影像:
1:
使用连接在电脑上的相机撷取影像
2:
载入影像档
要使用相机撷取影像,首先要在图2-2的区域1进行页面的切换,选择AcquireImage将页面切换到AcquireImage页面,如下图2-3所示。
图2-3AcquireImagesPage
在图2-3的区域2中我们可以选择已连接相机的类型,来进行影像撷取,譬如我们选择第二个选项从1394相机、GigE相机或USB相机撷取影像,则我们会在区域2的地方看到如下图2-4所示的画面。
图2-4AcquireImage(1394,GigE,orUSB)Setup
首先我们要在Devices的地方选择要用来撷取画面的相机,如果还没有接上相机的话,可以在现在把它接上,然后按下RefreshListofDevices
进行重新整理,就能看到新接上的相机了,选择好要使用的相机后,我们有叁种方式可以进行撷取:
1、按下AcquireSingleImage
撷取单张影像,我们可以在图2-3的区域3中看到刚刚撷取的影像,若有想要对此影像进行影像处理,则按下StoreAcquiredImageinBrowser
,将该影像加入图2-3的区域4中,供未来影像处理使用。
2、按下AcquireContinuousImage
进行即时影像的撷取和显示,在撷取过程中可以随时按下StoreAcquiredImageinBrowser
将该影像加入图2-3的区域4中,供未来影像处理使用。
3、按下SequenceAcquisition
,会跳出一个对话框,我们可以在对话框输入我们想要拍摄的张数,然后按下一步,接着相机就会连续拍摄我们指定张数的影像,并将该影像加入图2-3的区域4中,供未来影像处理使用。
要直接载入影像档的话,可按下位于图2-3区域5中的OpenImage…
按钮,浏览电脑裡的影像档,将其加入图2-3的区域4中,供未来影像处理使用。
现在我们图2-3的区域4中应该有很多影像可以供我们进行影像处理了,接下来我们从图2-3的区域1进行页面切换,把画面切到BrowseImagesPage,如下图2-5所示。
图2-5BrowseImagesPage
我们可以透过图2-5区域2中的Thumbnail/Full-SizeViewToggle[
按钮切换到单张浏览画面,如下图2-6所示,在图2-6的画面中我们可以透过区域2中的按钮进行影像的连续拨放,或将画面停在我们想要进行处理的影像,然后从图2-6的区域1进行页面切换,把画面切到ProcessImagesPage,接着就可以在该画面对选定的影像进行我们想要的影像处理。
我们也可以直接双击图2-5区域2中的影像,画面会自动跳到ProcessImagePage。
若还想要新增影像,或是移除影像,可以透过图2-5或图2-6区域2中的OpenImage…
和ClosedSelectedImage(s)
进行操作。
图2-6Full-SizeView
2-1-3影像处理
有了影像库并选定影像后,我们的画面除了图片不太一样之外应该会如下图2-7所示,我们还可以透过图2-7区域1中的按钮,将图片库中的其他图片载入到图2-7的区域2中。
图2-7ProcessImagesPage
有了影像之后,接下来就来说明影像处理的部分,我们可以在NIVisionAssistant中进行影像处理流程的编排,简单地说就是把图2-7区域3中的影像处理功能,加到图2-7的区域4中,将其组成一个影像处理流程。
我们先将图2-7区域3内的影像处理功能展开来,如下图2-8所示。
图2-8NIVisionAssistant影像处理功能
NIVisionAssistant所提供的影像处理功能主要可以分为以下六个部分:
1、Image
2、Color:
此区域的功能只能对彩色32位元的影像使用。
3、Grayscale:
此区域的功能只能对灰阶8位元的影像使用。
4、Binary:
此区域的功能只能对1位元的影像使用。
5、MachineVision
6、Identification
大家可以看到图2-8内的影像处理功能其实还不少,这些功能同时也会出现在图2-7区域6的地方裡,在机器视觉专栏未来的章节中,作者我将会为各位介绍这些功能的使用时机和使用方法,已经等不及的朋友可以先按下图2-7区域5中的按钮ShowContextHelp
,接着就会跳出一个ContextHelp的视窗,如下图2-9所示,它在我们操作NIVisionAssistant的过程中,会提供给我们最即时的说明,藉由它的帮助,大家可以先试着玩一些简单的影像处理功能,譬如EdgeDetector。
若有想要多加瞭解影像处理概念的朋友,可以到NI网站上输入关键字搜寻:
NIVisionConceptsHelp。
下载最新版本的文件来阅读,作者我也是一手文件一手实作这样学习过来的,相信这份文件对大家未来在影像处理的概念上,会有很大的帮助。
图2-9ContextHelpWindow
接下来说明影像处理流程的建立,我们先从图2-7区域6的Help选单底下选择SolutionWizard,打开之后我们会看到如下图2-10的画面。
SolutionWizard内有一些影像处理的範例,可以供我们学习参考,而我们现在先选择Automotive下面的SparkPlugInspection範例,在按下LoadSolution之前我们先来看一下这个範例的ProblemDescription,在问题叙述中,不但有详细描述了需求,连应该要使用的工具都告诉我们了,真的是非常贴心呢!
大家说是不是啊?
图2-10SolutionWizard
在看清楚问题叙述之后,我们就来按下LoadSolution,将这个範例载入到我们ProcessImages的页面,如果大家都有跟上的话,我们将会看到如下图2-11的画面。
图2-11SparkPlugInspectionResult
在图2-11的画面中我们可以看到一个已经完成的範例,因为我们要练习的关係,我们先把图中区域3的流程删除,删除的方式就是单击点选已经存在的流程,然后按下区域3内的Delete按钮
,把已经存在的流程删除后,我们会看到如下图2-12的画面。
图2-12SparkPlugInspection
现在我们来重新处理这个需求,根据需求我们分成叁个步骤进行处理:
1、找到SparkPlugBase的两个量测点
2、找到两个Electrodes的量测点
3、根据前两个步骤找到的量测点去进行量测
首先我们要寻找SparkPlugBase的两个量测点,我们从图2-12区域2中
MachineVision的类别下单击点选EdgeDetector功能
,然后我们会看到如下图2-13的画面。
图2-13EdgeDetector
在图2-13区域4的地方可以选择量测区域选取的方式,有直线、曲线或是其他方式等等,那我们在这个案例会选择直线来做处理,接着在图2-13区域1中我们想要量测的地方由左至右画一条线,如下图2-14所示。
图2-14DrawDetectedLine
线画好之后,我们发现在图2-14区域3的结果显示区,只有显示出一个点,也就是说这条线上只有找到一个由白变黑的点,而另外一个我们要找的由黑变白的点没有被标示出来,所以我们现在来调整一下图2-14区域2中的设定,将LookFor的设定改为First&LastEdge,调整前后如下图2-15所示。
图2-15EdgeDetectorSetup
调整完LookFor的设定之后,线上由黑变白的点就会在区域1中被标记出来了,区域3也会显示出该点的详细资料,如下图2-16的画面。
图2-16EdgeDetectorResult
两个点都找到后,接着按下图2-16区域2中的OK按钮,回到ProcessImagePage,现在该画面会如下图2-17所示。
图2-17SparkPlugInspection1
第二个步骤我们要找两个Electrodes的量测点,我们一样利用前面所提到的EdgeDetector进行操作,就能找到它们了,完成后,结果如下图2-18所示。
图2-18SparkPlugInspection2
接下来第叁个步骤我们要开始对找到的点进行量测,单击点选MachineVision类别下的Caliper功能
,然后会看到如下图2-19的画面。
图2-19Caliper
在图2-19的区域2中,我们需要选择我们要做的量测项目,和我们要量测的点,在本案例中,我们要选择Distance的功能,量测点的选择如下图2-20所示,选好后按下Measure,我们就会在区域3的地方看到量测结果,如图2-21所示,完成上述操作后按下OK回到ProcessImagesPage,这个案例我们就算是完成了,现在我们所看到的画面应该会和塬本範例的结果,即图2-11的画面非常相似,在这裡恭喜大家利用NIVisionAssistant完成了一个影像处理的案例。
图2-20CaliperSetup
图2-21CaliperResult
完成影像处理的流程之后,我们可以利用图2-11区域4中Tools下的BatchProcessing来进行批量处理,操作画面如下图2-22所示,选择我们要进行处理的影像,然后按下Run进行批量处理。
我们也可以利用Tools下的PerformanceMeter来计算各个影像处理的流程所花费的时间,如下图2-23所示。
图2-22BatchProcessing
图2-23PerformanceMeter
2-1-4输出结果
在完成影像处理的流程之后,接着就是要输出结果,利用图2-11区域4中Tools下的ViewMeasurements,我们可以得到如下图2-24的一个结果报表,按下画面中的SendDatatoExcel
;或SaveResults
,我们可以得到一个Excel报表或是一个txt文字档案。
图2-24ResultsViewer
2-1-5输出程式码
NIVisionAssistant很贴心地提供了输出程式码的功能,这个功能在图2-11区域4中Tools下可以找到,而且它可以输出叁种程式语言格式:
LabVIEWVI,CCode,.NETCode。
选择CreateCCode和Create.NETCode的操作流程比较简单,就是在接下来跳出的对话框内选好程式码输出的版本和程式码储存的资料夹就可以了。
选择CreateLabVIEWVI则需要做较多的操作,所以我会在以下的图中为大家说明一下,在选择CreateLabVIEWVI之后,我们会看到如图2-25的画面。
图2-25LabVIEWVICreationWizard–Step1
在图2-25中我们要选择要产生的程式码版本、储存路径和决定档案名称,另外还有一个可以勾选的项目,勾选该项目后所产生的程式码,会有部分平行的Code,也就是说没有前后关係的处理流程,其程式码会是平行的,在这个案例中因为我们的程式码很单纯,所以先不勾选此选项,接着按下Next后,我们会看到如图2-26的画面。
图2-26LabVIEWVICreationWizard–Step2
在图2-26的画面中我们可以选择使用当下的流程,或是已储存的ScriptFile,所谓的ScriptFile就是我们所储存的影像处理流程,下一节会跟各位介绍,现在我们先选择CurrentScript,然后按下Next,接着我们会看到如图2-27的画面。
图2-27LabVIEWVICreationWizard–Step3
在图2-27的画面中我们要选择VI的影像来源,我们能选择ControlReference、影像档或是相机撷取,在本案例中我们选择ImageFile,到时候输出的VI在执行时就会要求我们选择影像档,接着按下Next,我们会看到如图2-27的画面。
图2-28LabVIEWVICreationWizard–Step4
在图2-28的画面中,我们要选择这个输出的VI要有那些Control和Indicator,没有选择到的Controls会以Constant的形式出现在程式码中,没有选择到的Indicator则不会接出来,在这个案例中,我们输出CaliperResults就好,最后按下Finish,VI就会自动产生并出现在我们的面前了,大家有没有觉得这个功能很棒呢!
2-1-6储存载入Script档
前面努力了大半天,最后不要忘记把我们建立好的影像处理流程储存起来,在图2-11区域4中的File下可以找到SaveScript和SaveScriptAs进行储存,在同一个地方可以找到OpenScript打开以前储存的影像处理流程。