使用NI Vision模式匹配时的常见错误和问题

更新 Oct 17, 2022

适用于

软件

  • Vision Development Module

驱动

  • NI-IMAQ
  • Vision Acquisition Software

问题详述

我该如何使用模式匹配功能?为什么在进行模式匹配时会出现"无效模板"错误?

解决方案

模式匹配可以在灰度图像中快速地定位与某一已知参考模式匹配的区域,模式通常也称为模型或者模板。当您使用模式匹配的时候,您首先必须建立一个参考的模板,以供机器视觉应用系统在每幅获取的图像中搜索这一模板,并且计算出相应的匹配分数。这个分数表征了其与模板的相似程度。模式匹配会考虑模板的光亮度、污点、噪声和几何变形(例如位移、旋转或者缩放)。

以下是一些常见的模式匹配错误:

错误消息:-1074395247: Invalid template descriptor 
错误消息:Not a valid template 
错误消息:The Contrast In The Template Is Too Low 
错误消息:-1074396077: ERR_INCOMP_TYPE - Incompatible image type 
Some Matches Lie Outside A Rotated ROI When Doing Pattern Matching 
Various Errors When Logged On Under a Windows 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 和 IMAQ Write Image And Vision Info VI来打开和创建模式匹配模板可以保留这些额外的信息。这些VI可以在以下三个位置找到:
    Vision and Motion»Vision Utilities»Overlay,
    Vision and Motion»Vision Utilities»Calibration
    Vision and Motion»Vision Utilities»Files.

    在LabVIEW中创建模板时,应在 IMAQ Write PNG File VI之前使用IMAQ Learn Pattern 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 valid template"的错误信息。这个错误是由IMAQ Vision软件本身对模式匹配中的模板的大小的限制引起的。这个错误会在Vision 5.0、Vision 6.0和Vision 7.0中出现,在IMAQ Vision 7.0中,相应的错误信息为"The Template is Too Large"对于这些IMAQ Vision版本,模式匹配模板最多只能有16,000个象素点,但是对模板的尺寸大小没有限制。

    这一限制在在Vision Development Module version 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 When Doing 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 Windows User Account用户必须有Windows管理员(Administrator)权限。因为在Vision Builder for Automated Inspection和Vision Assistant中获取的图像会暂存在安装路径的临时文件夹下,IMAQ Vision会用到Windows系统文件夹下的某些动态链接库;所以如果用户没有读写系统文件夹的权限,那么即使所有设置包括模板信息是合法的,也会在运行模式匹配时碰到"Not a valid template"等错误。