图像采集

何时采集图像?

很多视觉系统都会要求您指定某一命令或步骤,以采集需要处理的图像。Vision Guide 8.0帮助删除了这一额外的步骤,因为图像在启动视觉序列时就已经采集。
您只需要设置恰当的RuntimeAcquire属性值。但是大多数应用中,不需要设置RuntimeAcquire属性,因为默认为Stationary。默认设置在开始执行视觉序列的时候采集图像。除此之丸,还有其他一些视觉序列属性用于采集图像。

在多个视觉序列中使用相同的图像

如果您想对两个或多个视觉序列使用相同的图像,您只需要将第一个视觉序列的RuntimeAcquire属性设置为Stationary,然后将其他视觉序列的RuntimeAcquire属性设置为None。RuntimeAcquire属性被设置为None的视觉序列,不会采集任何其他图像,而是会对从第一个视觉序列采集的图像进行处理。

使用图像缓冲区

每台相机只有一个图像缓冲区(缓冲区0),序列之间可以共用10个图像缓冲区(缓冲区1 - 10)。
设置ImageBuffer序列属性,规定要使用哪个缓冲区。默认缓冲区为0。您可以使用图像缓冲区捕捉多个图像,并将其存储在内存中,随后再对其进行处理。
例如,您可以创建一个没有对象的序列,可以将图像捕捉进多个缓冲区,然后在其他序列中处理图像。

  ' seq1 没有视觉对象 – 是为了在多个缓冲区中获取图的序列  
  VSet seq1.RuntimeAcquire, VISION_ACQUIRE_STATIONARY  
  VSet seq1.ImageBuffer, 1  
  VRun seq1 ' 将图像加载到缓冲区1  
  Go Image2Pos  
  VSet seq1.ImageBuffer, 2  
  VRun seq1 ' 将图像加载到缓冲区2  
  Go Image3Pos  
  VSet seq1.ImageBuffer, 3  
  VRun seq1 ' 将图像加载到缓冲区3  
  ...  
  ' 开始处理之前获取的图像  
  VSet seq2.RuntimeAcquire, VISION_ACQUIRE_NONE  
  VSet seq2.ImageBuffer, 1  
  VRun seq2 ' 处理缓冲区1的图像  
  VGet seq2.AllPassed, allPassed  
  ...  

如果序列使用无需采集图像(仅图像处理)的图像缓冲区1 - 10,则在VRun过程中,将忽略Camera属性值。

使用外部触发器采集图像

Vision Guide 8.0支持触发输入,使视觉序列通过外部信号获取并处理图像。要使用触发输入的步骤如下。
将触发信号连接到相机接口。如果同时使用了闪光灯,可以连接到相机的闪光输出信号。
将使用触发输入的视觉序列的RuntimeAcquire属性设置为“Strobed”。
在SPEL+程序中,照常执行VRun,然后等待AcquireState属性变为值3,表明图像已获取完成。在本例中,触发信号是从外部装置发送的。

Integer state  
Boolean found  
  
#define PICTURE_DONE 3  
TmReset 0  
VRun seq1  
Do  
  Wait 0.01  
  VGet seq1.AcquireState, state  
  If Tmr(0) > 10 Then  
    Error ER_STROBE_OT  ' User defined overtime error  
  EndIf  
Loop Until state = PICTURE_DONE  
VGet seq1.obj1.Found, found  
  • 如果您没有等待图像获取就检查AcquireState,则任务中的下一视觉命令将在执行之前自觉等待图像采集。在这种情况下,必须在继续处理图像之前采集图像,否则,您必须中止任务。建议您检查AcquireState,以便在触发器未触发且没有采集图像时程序可以继续运行。
  • 使用来自Vision Guide 8.0 GUI的触发输入,执行序列时,系统会等待直到触发输入。点击[Abort]按钮中止触发输入等待。

注意


周围照明和外部设备噪音可能会影响视觉序列的图像和结果。当受到周围照明和外部设备噪音的影响,拍摄的图像可能会损坏,并且检测到的位置可能是对象搜索区域中的任何位置。请尽量缩小搜索区域,并在创建图像处理序列时,考虑到检测错误的情况。

使用彩色图像

如果配置了彩色相机则可以采集彩色图像,并从磁盘读取图像。
部分视觉工具可以处理彩色图像,其他工具只处理黑白图像,如下表所示。

视觉工具 彩色处理 黑白处理
Blob x
Correlation x
Geometric x
Edge x
Polar x
Code Reader x
OCR x
ImageOp x x
ColorMatch x x
LineFinder x
LineInspector x
ArcFinder x
ArcInspector x
DefectFinder x
BoxFinder x
CornerFinder x
Contour x

ImageOp工具具有ColorFilter和ColorStretch操作功能,可以处理彩色图像。所有其他ImageOp操作功能都只能处理黑白图像。
ColorMatch工具通常用于处理彩色图像。但是,也可用于处理黑白图像(识别不同灰度的颜色)。
采集彩色图像以后,同时会在内部创建一个黑白图像,供那些只能处理黑白图像的工具使用。运行序列时,可执行彩色处理的对象将使用彩色图像,只能执行灰度处理的对象将使用黑白图像。
彩色图像包括红色、绿色和蓝色的色调。使用ImageColor序列属性选择需要采集的色调。默认设置为All,表示将使用所有三种色相带采集全彩图像。
您还可以选择红色、绿色、蓝色或灰度。如果选择了红色、绿色或蓝色,则将从单色图像中获得黑白图像。这使您可以用灰度处理工具搜索一个色带。
当您点击[Vision Guide]窗口上的[Run Object]按钮,如您使用的对象是黑白处理工具,则视频将显示为灰色,正如工具在处理过程中所见的一样。