兴趣区域(ROI)常见问题解答(FAQ)

更新 Apr 8, 2019

适用于

Software

  • Vision Development Module
  • Vision Assistant
  • Vision Builder for Automated Inspection

Driver

  • Vision Acquisition Software
  • NI-IMAQ
  • NI-IMAQdx

问题详述

什么是感兴趣区域(ROI)?
使用IMAQ Read Barcode VI 时为什么会报错?
为什么IMAQ转换ROI VI 返回了负的坐标值?
为什么我的图像太大而不能使用Visual Basic中的CWIMAQVision.MaskToRegions函数? 
如何提取任意形状的感兴趣区域(ROI)?
如何在新窗口中显示所选择的感兴趣区域(ROI)?
当我使用Clamp函数时,为什么会出现不精确/不一致的数值?
在LabWindows / CVI中怎样一句一个点集生成一个矩形感兴趣区域(ROI)?
感兴趣区域(ROI)如何与光学字符识别(OCR)协同使用?

解决方案

什么是感兴趣的区域(以下简称为ROI)?


感兴趣区域(ROI)是从图像显示的窗口中选择的一个图像区域,这个区域是您的图像分析所关注的重点。圈定该区域以便进行进一步处理。下面的文档包含了ROI函数的相关信息及其使用方法。


使用IMAQ Read Barcode VI 时为什么会报错?


当使用IMAQ Read Barcode VI时,如果传递的ROI描述符不正确,

会报错如下:error -1074395720 IMAQ Read Barcode, Invalid ROI。最好的解决方法是使用一个VI将一个形状转换为一个ROI,从而输出正确的ROI描述符。您可以使用一个位于感兴趣区域转换(Region of Interest Conversion)子选板上的VI,这个子选板可在LabVIEW中函数»视觉与运动»视觉实用程序»感兴趣区域»感兴趣区域转换路径下找到。

 


为什么IMAQ转换ROI VI返回负坐标?


当您使用IMAQ转换ROI VI 转换ROI时,VI可能返回一个不正确的结果,给出了一个负的ROI坐标值。如果发生这种情况,您需要确保你所使用的NI Vision是您的LabVIEW版本所支持的最新版本。可以在带有LabVIEW和LabWindows / CVI的Vision开发模块的兼容版本中找到NI Vision和LabVIEW版本的完整兼容性列表。


为什么我的图像太大而无法使用 Visual Basic 中的 CWIMAQVision.MaskToRegions 函数?


此功能将蒙版图像转换为一个区域选择。它默认限制为2500个点。如果您要使用超过2500个点,可以将参数MaxPoints设置为您所需要使用的值。除此之外,您可以将您的图像分成多个子图像,然后分段处理。NI Vision for Visual Basic Reference Help中阐释了所有视觉函数及其属性和方法。此文档在安装NI Vision时默认安装。打开Start»Programs»National Instruments»Vision»Documentation»NI Vision下名为cwimaq.chm的文件即可。


如何提取任意形状的ROI?


NI Vision中的图像数据类型目前只支持矩形图像;这意味着图像数据必须以2D数组形式存储。因此,大多数用户需要选择并提取矩形的ROI。

提取ROI的快速方法包括使用 IMAQ Construct ROI VI 获得矩形ROI描述符,可以通过将该描述符馈送到IMAQ Extract Tetragon VI 来从原始图像中提取ROI。这种方法专门用于提取矩形ROI;下面描述了一种更常规的方法来提取ROI。

使用IMAQ Construct ROI VI也可获得自由形状的、非矩形的ROI描述符。为了提取非矩形ROI,在获得ROI描述符之后需采取下图中描述的步骤。将ROI描述符转换为掩码,将掩码应用于原始图像,并在ROI周围进行矩形裁剪。 ExtractFreeshapeROI.vi 会将图像作为输入,要求用户在弹出的一个新窗口中选择ROI,并将提取到的ROI输出为新图像。可以在社区示例:提取自由形状ROI 中找到更多信息。
 


如何在一个新窗口中显示所选择的ROI?


如果可以您能获取ROI描述符的话,就可以在自己的窗口中显示ROI。 ROI描述符是IMAQ用于传输ROI位置信息的专门的数据簇。可将其作为很多IMAQ VI的输出,包括IMAQ ConstructROI,IMAQ WindGetROI,IMAQ MaskToROI 以及任何位于 函数»视觉与运动»Vision Utilities»Region of Interest»Region of Interest Conversion子选板上的其他VI。如果使用Vision Acquisition Software 2009或更高版本,您将需要访问IMAQ Extract Tetragon VI。如下所示,IMAQ Extract Tetragon VI将 ROI矩形描述符作为直接输入,并在ROI描述符定义的区域内提取图像。然后,IMAQ WindDraw VI 提取出此图像并将其显示在单独的图像窗口中。



如果您在2009年之前使用的是Vision Acquisition Software版本,则需要完成几个额外的步骤才能在单独的窗口中显示ROI。首先,您需要将ROI描述簇解捆绑以获取轮廓(Contours)数组。通过索引此数组,您可以获得包含坐标(Coordinates)数组的簇。这些坐标描述了ROI的矩形定位信息。如果您使用这些坐标和IMAQ Extract VI,可以生成一幅新图像,该图像只包含了第一幅图像中位于特定坐标内(即ROI)的区域。您可以使用IMAQ WindDraw VI在它自己的窗口中显示此新图像。


这两种方法都只能用于矩形ROI选择。如果要显示非矩形的ROI,可以将IMAQ WindDraw VI与上面讨论的ExtractFreeshapeROI.vi示例结合使用。


当使用Clamp函数时,为什么会出现不精确/不一致的数值?


当您在Vision Assistant中使用Clamp函数围绕特定物体设定ROI时,您将得到一个特别的距离测量值。您围绕同一个物体设定不同的ROI时,可能会得到与第一次不同的测量值。这是由clamp中的线轮廓空隙造成的。这些线轮廓沿着clamp方向扫描,返回它们遇到的第一个边缘值。这些线轮廓分布得越开,clamp错过待测轮廓上实际的最大或最小点的概率就越大。当绘制ROI时,线轮廓有轻微的偏移,所以会读到不一致的值。 

为了避免这种情况,应减小Clamp函数中的Gap值。这将减小线轮廓之间的间隙。当减小Gap值时,测量精度会更高,但是也将耗费更多的处理时间。针对直线边缘或者变化较小的物体,使用较大的Gap值。测试有较多细节特征或者可能错过的角的物体时,使用较小的Gap值。  

注意:在LabVIEW中使用Clamp VI时,Gap值以子采样率(subsampling ratio)表示,可以在Settings簇中找到。
 


在LabWindows / CVI中怎样依据一个点集生成一个矩形的ROI?


在LabWindows / CVI中并没有严格定义ROI的数据类型,但您可以通过视觉函数调用获取并修改ROI。

例如,下面的代码展示了怎样设置一个矩形的ROI:

Rect rect = {80, 10, 55, 340};
roi = imaqCreateROI();
imaqSetWindowROI(Display, roi);

有关所有Vision的功能及其属性和方法的完整说明,请参阅NI Vision for Visual Basic参考帮助。此文档在安装NI Vision时默认安装。打开Start»Programs»National Instruments»Vision»Documentation»NI Vision下名为cwimaq.chm的文件即可


ROI如何与光学字符识别(OCR)协同使用?


OCR 被分为两个独立的部分:训练和阅读。在训练阶段,ROI定义了您希望计算机学习的目标所在的区域。在阅读阶段,ROI是计算机寻找阅读数据的区域。您可以通过操作ROI有效地增加OCR处理的精度和有效性。在训练阶段,您能够使用ROI认真的圈定包含你想训练的目标的图像区域,同时排除噪声和无关的目标。在阅读阶段,您可以使用ROI圈定你想读的目标,减少处理时间,增加精度。

本文是否有帮助?

无帮助