LabVIEW使用NI Vision模式匹配时的常见问题
该如何使用模式匹配功能?为什么在进行模式匹配时会出现"无效模板"错误?
解决方案
模式匹配可以在灰度图像中快速地定位与某一已知参考模式匹配的区域,模式通常也称为模型或者模板。当使用模式匹配的时候,首先必须建立一个参考的模板,以供机器视觉应用系统在每幅获取的图像中搜索这一模板,并且计算出相应的匹配分数。这个分数表征了其与模板的相似程度。模式匹配会考虑模板的光亮度、污点、噪声和几何变形(例如位移、旋转或者缩放)。
以下是一些常见的模式匹配错误:
错误消息:-1074395247: Invalid templatedescriptor
错误消息:Not a valid template
错误消息:The Contrast In The Template IsToo Low
错误消息:-1074396077: ERR_INCOMP_TYPE -Incompatible image type
Some Matches Lie Outside A Rotated ROI WhenDoing Pattern Matching
Various Errors When Logged On Under aWindows User Account
错误消息-1074395247:Invalid template descriptor
当使用Vision Builder或者Vision Assistant创建一个模式匹配模板时,除了图像本身以外还保存了一些额外的信息,包括重叠信息、模式匹配模板信息和校准信息等。这些信息使得LabVIEW和Vision Builder知道模板是怎么获得的。当在LabVIEW中使用IMAQ ReadFile VI打开这个模板时,这些额外的信息并没有随着图像本身传递。同样,当使用IMAQ Write PNG File VI来创建一个模板时,这些额外的信息也没有随着图像保存,因此Vision Builder或者Vision Assistant不认识非法的模式匹配模板。
在LabVIEW中 :分别使用IMAQ Read Image And Vision Info VI 和 IMAQWrite Image And Vision Info VI来打开和创建模式匹配模板可以保留这些额外的信息。这些VI可以在以下三个位置找到:
Vision and Motion»Vision Utilities»Overlay,
Vision and Motion»VisionUtilities»Calibration,
Vision and Motion»Vision Utilities»Files.
在LabVIEW中创建模板时,应在 IMAQ Write PNG File VI之前使用IMAQ LearnPattern VI,以创建必须保存在PNG文件中的额外视觉信息。
在Visual Basic中 :要写入图像,以及与图像关联的额外视觉信息,请使用以下内容。
CWIMAQVision.WriteImageAndVisionInfo (SourceImage, Path [, ColorPalette])
这些额外信息还包括重叠信息、模式匹配模板、校准信息和用户自定义数据等。要读取图像文件,可以使用以下语句来读取包含额外信息的图像数据。
CWIMAQVision.ReadImageAndVisionInfo (SourceImage, Path [, ColorPalette])
这些额外信息包括重叠信息、模式匹配模板、校准信息和用户自定义数据等使用WriteImageAndVisionInfo写入的信息。
注意:如果使用的是IMAQ Vision Builder 6.1,请将Vision Acquisition驱动程序(NI IMAQ和NI IMAQdx),Vision Development Module(包含Vision Assistant)和Vision Builder软件升级到最新版本。这个错误会在IMAQ Read Image and Vision Info函数不能正确读取模板信息的时候出现。通常,当安装了不同版本的Vision Builder和Vision Development Module时,会出现此错误。
错误消息:Not a valid template
有可能会在使用IMAQ Vision 5.0或者6.0版本和Vision Builder/Vision Assistantz选择一个较大的模式匹配模板的时候碰到"system error"和"not a validtemplate"的错误信息。这个错误是由IMAQ Vision软件本身对模式匹配中的模板的大小的限制引起的。这个错误会在Vision 5.0、Vision 6.0和Vision 7.0中出现,在IMAQ Vision 7.0中,相应的错误信息为"The Template is Too Large"对于这些IMAQVision版本,模式匹配模板最多只能有16,000个象素点,但是对模板的尺寸大小没有限制。
这一限制在在Vision Development Moduleversion 7.1中得到改善,在这个版本中对模板象素点的多少和尺寸的大小都没有限制。
错误消息-1074395235:The Contrast In The Template Is Too Low
这个错误通常在所选定的区域不能提供足够多的信息来创建一个有效的模板时产生,而很多时候是因为图像没有足够高的对比度。另外,这个错误也有可能在所选定的区域太小的时候产生。有两种解决这个错误的方法:
提高图像的对比度。如果选用这种方法,那么必须同时提高其他用于模式匹配的图像的对比度,以得到同样的结果。
增加模板的大小。以保证能为创建一个有效的模板提供足够的信息。
错误消息-1074396077: ERR_INCOMP_TYPE - Incompatible image type
为了保证模式匹配正常进行,获取的图像和匹配的模板图像必须有相同的位深度。例如,如果获取的图像是16-bit的,但是模板图像是8-bit的,纳闷LabVIEW就会报告以上的错误并且不能正常执行匹配。
对于在NI-IMAQdx下运行或 NI-IMAQ for IEEE 1394下运行的FireWire相机,可以通过Measurement&Automation Explorer(MAX)调整所获取图像的位深度。在MAX中的Devices and Interfaces»NI-IMAQ IEEE 1394 Devices ,选择相机。就可以在右边的窗口中看到摄像头的信息和设置参数,可以在这里查找是否有设置位深度的参数。如果有,那么就可以根据匹配模板的位深度来调整摄像头的位深度参数。如果在修改了位深度之后LabVIEW还是报告同样的错误,那么可能还要修改字节顺序(Byte Order)和颜色编码(Color coding)。
如果不能调整摄像头的位深度,那么可以根据获取图像的位深度来重新建立一个模板图像。
Some Matches Lie Outside A Rotated ROI WhenDoing Pattern Matching
模式匹配算法只能在一个非旋转的矩形ROI中搜索匹配对象。当所选取的ROI不能满足这个要求时,模式匹配算法会首先以ROI最小和最大的X、Y坐标来重新定义搜索区域,而不使用原先的ROI。
解决方法:
旋转要进行模式匹配的原始图像,以得到一个非旋转的ROI。如果使用这种办法的话,那么你还需要让模板重新被识别或者在IMAQ Setup Match Pattern.VI的Match Mode参数中选择"Rotation Invariant"。
另外一个解决办法是首先把图像选定的ROI以外的区域用黑色屏蔽,虽然模式匹配算法仍然会重新定义搜索区域,但是可以保证在先前选定的ROI以外找不到匹配的对象。
Various Errors When Logged On Under a WindowsUser Account用户必须有Windows管理员(Administrator)权限。因为在Vision Builder forAutomated Inspection和Vision Assistant中获取的图像会暂存在安装路径的临时文件夹下,IMAQ Vision会用到Windows系统文件夹下的某些动态链接库;所以如果用户没有读写系统文件夹的权限,那么即使所有设置包括模板信息是合法的,也会在运行模式匹配时碰到"Not a valid template"等错误。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目问题,可联系我们。