图像采集
何时采集图像?
很多视觉系统都会要求您指定某一命令或步骤,以采集需要处理的图像。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]按钮,如您使用的对象是黑白处理工具,则视频将显示为灰色,正如工具在处理过程中所见的一样。
← 通过SPEL+运行视觉序列 视觉对象 →