使用视觉对象

本节说明了视觉对象的详细内容,例如各种视觉对象布局,以及操作方法之间的区别。

注意


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

ImageOp对象

ImageOp对象描述
ImageOp对象可以对指定的区域,进行形态调整(开、闭、侵蚀、膨胀)、卷积(钝化、平滑)、翻转、二进制化以及旋转。
ImageOp区域内的其他视觉对象,在ImageOp的输出结果上执行其各自的操作。例如,您可以使用ImageOp工具对整个视频画面进行收缩操作,然后将Blob对象放置在ImageOp的搜索窗口内,以搜索缩小的图像。

ImageOp对象布局
ImageOp对象有一个图像处理窗口,如下所示。

ImageOp对象的属性
以下列表汇总了ImageOp对象的属性,并附有简要说明。有关每个属性的详情,请参阅以下内容。
"Vision Guide 8.0 Properties and Results Reference Manual"

属性 说明
AbortSeqOnFail 当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。
AngleObject

规定了要执行自动旋转的那个对象。

使用指定对象的Angle结果可以逆时针方向旋转图像。请将Operation属性设置为Rotation,否则这条属性会被忽略。

默认:None

AngleObjectResult 用于指定AngleObject属性时的结果
Caption

为ImageOp对象指定标题。

默认:Empty String

ColorMode

设置颜色处理时使用的颜色空间(RGB/HSV)。

默认:RGB

CurrentModel

仅限运行时间。

若Operation设定为ColorFilter,则此属性规定了ModelColor属性和VTeach将要使用的哪个模型。若CurrentModel=0,则背景颜色已选定。

默认:0

Description

设定用户指定的描述。

默认:空白

Enabled

指定是否执行对象。

默认:True

FailColor 选择当对象被检测为不良品时,搜索窗口显示的颜色。
Frame

指定要使用哪个位置的定位框。

默认:None

FillHoles

指定是否填充二进制图像的孔洞。

仅在Operation设为Binarize时显示该属性。

默认:False

FrameResult

指定需使用Frame的第几个结果。

默认: 1

Graphics

设置显示的图表模式。

默认:1 - All

ImageBuffer1

规定了Operation属性设定为SubtractAbs时,按缓冲器编号指定第一个图像。

SubtractAbs计算出(第一个图像 第二个图像)的绝对值图像。

ImageBuffer1File

当ImageBuffer1设置为“File”时,指定要存放缓冲图像文件的路径

默认:None

ImageBuffer2 规定了Operation属性设定为SubtractAbs时,按缓冲器编号指定第二个图像。
ImageBuffer2File

当ImageBuffer2设置为“File”时,指定要存放缓冲图像文件的路径

默认:None

Iterations

定义执行指定操作的次数

默认:1

KeepRGBRatio

指定是否保持ColorStretch操作的RGB比例。

默认:True

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

MaxRGB

设置ColorStretch处理时的颜色最大值。

默认:255,255,255

MinRGB

设置ColorStretch处理时的颜色最小值。

默认:0, 0, 0

ModelColor

仅限运行时间。当Operation设定为ColorFilter时,在运行过程中,直接输入RGB颜色值,以示教模型和背景颜色。

默认:RGB(0, 0, 0)

ModelColorTol

仅限运行时间。设置模型颜色的容差量。如果像素颜色在模型颜色的容差范围以内,那么像素会保持不变。

默认:10 (ColorMode = RGB);0,0,50 (ColorMode = HSV)

ModelName 仅限运行时间。设置当前正在使用的模型的名称。
ModelWin

仅限运行时间。

在一次调用中设置或返回模型窗口的左侧参数、顶部参数、高度参数和宽度参数。

ModelWinHeight 指定模型窗口的高度。
ModelWinLeft 指定模型窗口左侧位置。
ModelWinTop 指定模型窗口顶部位置。
ModelWinWidth 指定模型窗口的宽度。
Name

用于为ImageOp对象分配一个唯一的名称。

默认:ImgOp01

NumberOfModels

仅限运行时间。这是所用的颜色模型的数目。在运行时间里,如果设置了该属性,则可以利用CurrentModel和VTeach示教各颜色模型。

默认:1

Operation

设置将执行的图像处理类型。

有关Operation属性的详情,请参阅以下内容。

“Vision Guide 8.0 Properties and Results Reference”

默认:Open

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType 可定义检测结果良品/不良品的判断标准。
Polarity 可定义被检测对象和背景色的差异(在浅色背景下检测深色对象(DarkOnLight),或在深色背景下检测浅色对象(LightOnDark))。
RotationAngle

规定操作属性设定为Rotation时图像旋转的度数。

默认:0

RotationDirection 可规定旋转时的旋转方向
SearchWin 仅限运行时间。在一次调用中设置或返回搜索窗口左侧参数、顶部参数、高度参数和宽度参数。
SearchWinAngle 定义待搜索区域的角度
SearchWinCenterX 定义待搜索区域中心的X轴坐标值
SearchWinCenterY 定义待搜索区域中心的Y轴坐标值
SearchWinHeight

定义待搜索区域的高度(单位:pixel)。

默认:100

SearchWinLeft 定义待搜索区域的最左边位置(单位:pixel)。
SearchWinTop 定义待搜索区域的最上边位置(单位:pixel)。
SearchWinType 定义待搜索区域的类型(Rectangle,RotatedRectangle,Circle)
SearchWinWidth

定义待搜索区域的宽度(单位:Pixel)。

默认:100

ShiftObject 设定进行Shift处理的对象
ShiftX 设定X方向的Shift值
ShiftY 设定Y方向的Shift值
ThresholdAuto 可定义是否自动设置被检测对象、背景、图像的边缘灰度的阈值
ThresholdBlockSize

定义了相邻区域的参考范围,以决定当Operation属性设定为BinarizeAdaptive时的阈值。

默认:1/16ROI

ThresholdColor

定义阈值范围内像素的颜色。

默认:Black

ThresholdHigh

规定了Operation属性设定为Binarize时所要采用的上限阈值。

默认:128

ThresholdLevel

定义了当Operation属性设定为BinarizeAdaptive时,与相邻区域的亮度差异的比率。

默认:15%

ThresholdLow

规定了Operation属性设定为Binarize时所要采用的下限阈值。

默认:0

ThresholdMethod 设置二值化处理的方法。
ZoomFactor

规定了Operation属性设定为Zoom时所要采用的缩放值。

默认:1

ImageOp对象结果
以下列表汇总了ImageOp对象的结果,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Passed 返回测试结果合格与否。
Time 返回处理对象所需要的时间(单位:毫秒)。
FocusValue

返回相对对焦等级。

该值达到最小时为最佳对焦。

仅当Operation属性设为DetectFocus时显示该结果。

使用ImageOp对象
现在我们已经为理解Vision Guide ImageOp对象的使用方法打下了基础。本节将介绍使用ImageOp对象的每个步骤,如下所示:

  • 创建ImageOp对象
  • 设置搜索窗口的位置和尺寸
  • 设置与ImageOp对象相关的属性
  • 测试ImageOp对象并检查结果
  • 调整属性并再次测试

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击[New Sequence]按钮来创建一个新的视觉序列。如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅以下内容。
新建一个视觉序列

第1步:创建一个新的ImageOp对象
(1)点击Vision Guide工具栏中的[All Tools] - [New ImageOp]按钮。
(2)将鼠标移动到图像显示区域。鼠标光标将变为ImageOp对象图标。
(3)继续移动鼠标,直至该图标位于图像显示区域中的要求位置,然后再点击鼠标左键,创建该对象。
(4)请注意,对象名称将自动创建。本示例中,由于是在本序列中创建的第一个ImageOp对象,所以对象名称为“ImgOp01”。(稍后将说明如何修改对象名称)

第2步:设置搜索窗口的位置和大小
一种类型的ImageOp对象如下所示:

New ImageOp对象布局
(1)点击ImageOp对象的名称标签,并按住鼠标左键,将ImageOp对象拖动至搜索窗口的左上方的位置后松开鼠标。
(2)使用搜索窗口的尺寸手柄调整ImageOp对象搜索窗口的大小。将鼠标光标移动到尺寸手柄上,然后在按住鼠标左键的同时,拖动手柄以调整窗口的尺寸。

第3步:设置ImageOp对象属性
现在设置ImageOp对象的属性值。下文说明了ImageOp对象常用的一些专用属性。很多不同视觉对象上也使用的Graphics等其他属性的说明详见 Vision Guide 8.0 Properties and Results Reference Manual 或ImageOp属性列表。

项目 说明
Name属性

新创建的ImageOp对象中,默认的项目名称是“ImgOp**”。在一个视觉序列中要使用多个ImageOp对象时,使用的编号对ImageOp进行区分。

默认情况下,会将在视觉序列序列中使用的第一个ImageOP对象命名为“ImgOp01”。

需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示ImageOP对象名称的地方都会变为新的名称。

Operation属性 确定将要执行的哪个图像操作。这是ImageOp对象的最重要的一条属性。
Iterations属性 确定重复执行的次数。
Polarity属性

确定以暗色对象还是亮色对象执行操作

默认设置是暗色对象。如果要更改此默认设置,请点击Polarity属性的值字段,将出现一个下拉列表,包含“DarkOnLight”和“LightOnDark”两个选项。单击您要选择的项目。

您可以先测试ImageOp对象,然后回头设置稍后需要的其他任何属性。

第4步:示教ImageOp对象的颜色
当Operation属性设置为“ColorFilter”时,您就需要示教一种或多种将要过滤的颜色以及背景颜色。Vision Guide窗口上的[Teach]按钮会变为可用,并有一个矩形模型窗口会出现在ImageOp主窗口内。
点击[Teach]按钮,就会显示以下画面。最初的状态下还没有模型。

点击[Add]按钮即可添加一种新的过滤颜色,默认颜色为黑色。选择背景颜色或其中一种过滤颜色之后,点击[Teach]按钮,可以使用模型窗口内像素的平均颜色,或者您也可以直接输入RGB值。
您可以在模型窗口打开时调整其大小和位置。添加颜色或修改大小或位置后,在不关闭对话框的情况下,点击[Teach]按钮,则可示教新的颜色。
您可以在Teach对话框打开时更改ColorMode属性。
当ColorMode为RGB时,每种颜色都有一个Tolerance值。当ColorMode为HSV时,每种颜色都有三个Tolerance值(hTol、sTol、vTol)。
点击[Delete]按钮删除过滤颜色。背景颜色无法删除。

第5步:测试ImageOp对象
如果要运行ImageOp对象,则点击[Object]选项卡左下方的[Run Object]按钮。您就能看到ImageOp工具在图像上产生的效果。

第6步:调整属性并再次测试
ImageOp对象运行几次后,您可能会遇到一些问题,或需要对一些属性设置进行微调。以下是一些常见问题以及微调整的方法。
某些应用中可能需要微调ImageOp对象。与ImageOp对象的微调相关的主要属性如下。

项目 说明
Iterations 确定执行目标图像操作的次数。
ThresholdColor, ThresholdLow, ThresholdHigh, ThresholdAuto

调整Binarize操作的参数。

请参阅 Vision Guide 8.0 Properties and Results Reference Manual 中“ThresholdColor属性”、“ThresholdLow属性”、“ThresholdHigh属性”、“ThresholdAuto属性”的说明。

完成属性调整并测试ImageOp对象,并得到满意结果后,创建视觉对象的步骤就完成了。您可以继续创建其它视觉对象或设置并测试整个视觉序列。

Geometric对象

Geometric对象描述
Geometric对象可根据几何特征找到某个模型。该对象基于被检测对象边缘的几何特征搜索模型,而不是利用像素间的关联搜索模型。Geometric对象相较于关联性搜索有若干优势,例如它对光线变化(包括镜面反射)和比例和角度的变化,以及对于模型具有更高的容差量。
Geometric对象通常用于通过查找对象的特征确定对象的位置和方向。此方法通常用来检测零件位置,以协助将机器人移动到抓取和放置零件的位置。

Geometric对象布局
Geometric对象具有搜索窗口和模型窗口,如下所示。

Geometric对象属性
下表给出了Geometric对象属性的基本说明。有关每个属性的详情,请参阅以下内容。
"Vision Guide 8.0 Properties and Results Reference Manual"

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

Accept

指定形状得分,用于判断是否以检测到检测对象。

检测对象的得分需要大于或等于设定的形状得分。如果设定值偏低,可能会导致错误检测。

默认:700

AngleEnable

规定了Geometric搜索时,是否进行角度(旋转)搜索。

该属性要在Geometric对象的模型示教之前设定。

AngleOffset

指定旋转的偏移值。

默认:0.000

AngleRange 规定了一系列旋转模型的登录范围。
AngleStart 规定了角度搜索的中心。
CalRobotPlacePos 在设计和程序运行时校准RobotPlacePos。
Caption 为Geometric对象指定标题。
CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则Geometric对象将应用于指定视觉对象的所有结果(NumberFound)。

默认:1

CenterPntOffsetX 使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。
CenterPntOffsetY 使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。
CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

如果将SearchWinType设置为RotatedRectangle,搜索窗口则以Angle结果为基础进行旋转。

默认:False

CheckClearanceFor 设定确认间隙的对象。
ClearanceCondition 设定间隙的判断方法。
Confusion

指出被检测图像的预期混淆量。

此处显示的值是对于被检测对象可获得的最大形状的分,而不是您正在检测的对象。

CoordObject

指定复制结果的Coordinates对象。执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。

默认:None

CurrentResult 可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。
Description

设定用户指定的描述。

默认:空白

DetailLevel 选定等级,搜索时某个边线达到该等级即认为被找到。
EditWindow 定义被检测区域的不要紧的像素
Enabled

指定是否执行对象。

默认:True

FailColor 选择当对象被检测为不良品时,搜索窗口显示的颜色。
Frame

规定了与指定框有关的当前对象搜索位置。

(允许Geometric对象相对于框架进行定位。)

FrameResult

指定需使用Frame的第几个结果。

默认:1

Graphics 设置显示的图表模式。
LabelBackColor 设置对象标签的背景颜色。
ModelObject 规定使用哪种模型进行搜索。
ModelOrgAutoCenter 模型有固定的基准点,并且在模型窗口中模型的位置由该参考点表示。该固定基准点被称为模型原点。ModelOrgAutoCenter属性可将模型原点设置在模型窗口的中心。
ModelOrgFindCenter 将模型原点设于已登记模型的边缘中心。
ModelOrgX 模型原点的X坐标值。(可使用亚像素)
ModelOrgY 模型原点的Y坐标值。(可使用亚像素)
ModelWin

仅限运行时间。

在一次调用中设置或返回模型窗口的左侧参数、顶部参数、高度参数和宽度参数。

ModelWinAngle 指定模型窗口的角度。
ModelWinCenterX 指定模型窗口中心点的X坐标值。
ModelWinCenterY 指定模型窗口中心点的Y坐标值。
ModelWinHeight 指定模型窗口的高度。
ModelWinLeft 指定模型窗口左侧位置。
ModelWinTop 指定模型窗口顶部位置。
ModelWinType 指定模型窗口类型。
ModelWinWidth 指定模型窗口的宽度。
Name 用于为Geometric对象分配一个唯一的名称。默认:Geom01
NumberToFind

规定了在当前搜索窗口中待查找的对象的数目。

(Geometric对象一次可找到不止1个对象。)

PassColor 选择当对象被检测为良品时,搜索窗口显示的颜色。
PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

RejectOnEdge

规定了是否排除与搜索窗口边缘有连接的零件。

通常而言,此项属性宜设置为True。以避免不完全处在搜索窗口内的零件所造成的错误检测。

SaveTeachImage 设置示教模型时,是否保存图像文件。
ScaleEnable 启用比例缩放。
ScaleFactorMax 设置或返回ScaleTarget值所应用的最大比例系数。
ScaleFactorMin 设置或返回ScaleTarget值所应用的最小比例系数。
ScaleTarget 设置或返回您正在搜索的那个模型的预期比例。
ScaleTargetPriority 设置或返回是否优先检测ScaleTarget附近的对象。
ScoreMode 设置或返回在Fail时显示结果的阈值。
SearchReducedImage 设置或返回搜索时是否使用尺寸缩小的图像。
SearchPolarity 设置或返回搜索Polarity。
SearchWin

仅限运行时间。

在一次调用中设置或返回搜索窗口左侧参数、顶部参数、高度参数和宽度参数,或中心X坐标、中心Y坐标、圆内周长的半径大小、圆外周长的半径大小。

SearchWinAngle 定义待搜索区域的角度。
SearchWinAngleEnd 定义待搜索区域的结束角度。
SearchWinAngleStart 定义待搜索区域的开始角度。
SearchWinCenterX 定义待搜索区域中心的X轴坐标值
SearchWinCenterY 定义待搜索区域中心的Y轴坐标值
SearchWinHeight 定义待搜索区域的高度(单位:pixel)。
SearchWinLeft 定义待搜索区域的最左边位置(单位:pixel)。
SearchWinPolygonPointX1 当SearchWinType设置为“Polygon”时,定义被检测区域的第1个顶点的X坐标值
SearchWinPolygonPointY1 当SearchWinType设置为“Polygon”时,定义被检测区域的第1个顶点的Y坐标值
SearchWinPolygonPointX2 当SearchWinType设置为“Polygon”时,定义被检测区域的第2个顶点的X坐标值
SearchWinPolygonPointY2 当SearchWinType设置为“Polygon”时,定义被检测区域的第2个顶点的Y坐标值
SearchWinPolygonPointX3 当SearchWinType设置为“Polygon”时,定义被检测区域的第3个顶点的X坐标值
SearchWinPolygonPointY3 当SearchWinType设置为“Polygon”时,定义被检测区域的第3个顶点的Y坐标值
SearchWinPolygonPointX4 当SearchWinType设置为“Polygon”时,定义被检测区域的第4个顶点的X坐标值
SearchWinPolygonPointY4 当SearchWinType设置为“Polygon”时,定义被检测区域的第4个顶点的Y坐标值
SearchWinPolygonPointX5 当SearchWinType设置为“Polygon”时,定义被检测区域的第5个顶点的X坐标值
SearchWinPolygonPointY5 当SearchWinType设置为“Polygon”时,定义被检测区域的第5个顶点的Y坐标值
SearchWinPolygonPointX6 当SearchWinType设置为“Polygon”时,定义被检测区域的第6个顶点的X坐标值
SearchWinPolygonPointY6 当SearchWinType设置为“Polygon”时,定义被检测区域的第6个顶点的Y坐标值
SearchWinPolygonPointX7 当SearchWinType设置为“Polygon”时,定义被检测区域的第7个顶点的X坐标值
SearchWinPolygonPointY7 当SearchWinType设置为“Polygon”时,定义被检测区域的第7个顶点的Y坐标值
SearchWinPolygonPointX8 当SearchWinType设置为“Polygon”时,定义被检测区域的第8个顶点的X坐标值
SearchWinPolygonPointY8 当SearchWinType设置为“Polygon”时,定义被检测区域的第8个顶点的Y坐标值
SearchWinPolygonPointX9 当SearchWinType设置为“Polygon”时,定义被检测区域的第9个顶点的X坐标值
SearchWinPolygonPointY9 当SearchWinType设置为“Polygon”时,定义被检测区域的第9个顶点的Y坐标值
SearchWinPolygonPointX10 当SearchWinType设置为“Polygon”时,定义被检测区域的第10个顶点的X坐标值
SearchWinPolygonPointY10 当SearchWinType设置为“Polygon”时,定义被检测区域的第10个顶点的Y坐标值
SearchWinPolygonPointX11 当SearchWinType设置为“Polygon”时,定义被检测区域的第11个顶点的X坐标值
SearchWinPolygonPointY11 当SearchWinType设置为“Polygon”时,定义被检测区域的第11个顶点的Y坐标值
SearchWinPolygonPointX12 当SearchWinType设置为“Polygon”时,定义被检测区域的第12个顶点的X坐标值
SearchWinPolygonPointY12 当SearchWinType设置为“Polygon”时,定义被检测区域的第12个顶点的Y坐标值
SearchWinRadiusInner 定义待搜索区域的圆弧内径。
SearchWinRadiusOuter 定义待搜索区域的圆弧外径。
SearchWinTop 定义待搜索区域的最上边位置(单位:pixel)。
SearchWinType 定义待搜索区域的类型(Rectangle, RotatedRectangle, Circle, Arc, Polygon)。
SearchWinWidth 定义待搜索区域的宽度(单位:Pixel)。
SeparationAngle 设置或返回找到的对象之间允许存在的最小角度。
SeparationMinX 设置或返回找到的对象沿X轴方向允许的最小间距。
SeparationMinY 设置或返回找到的对象沿Y轴方向允许的最小间距。
SeparationScale 设置或返回找到的对象之间允许存在的最小比例差值。
SharedEdges 设置或返回是否允许找到的对象之间存在共享边。
ShowModel

在可以缩放的视图中显示之前示教的模型。

可用于更改模型原点,及更改需要忽略的像素。

SkewFitEnable

指定是否对模型使用变形适应。

默认:False

Smoothness 设置或返回几何边缘提取滤波的平滑度水平。
Sort 选择对象结果的排序方式。
Timeout 设置或返回Geometric对象的最大搜索时间。

Geometric对象结果
下表给出了Geometric对象结果的基本说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Angle

返回与已找到的某个零件相关的旋转量。

(即:此结果规定了某零件相对于初始示教的方向而进行旋转的量)。

CameraX 返回相机坐标系内已找到的零件位置(参见模型原点)的X坐标位置。
CameraY 返回相机坐标系内已找到的零件位置(参见模型原点)的Y坐标位置。
CameraXYU

仅限运行时间。

返回相机坐标系中的已检测到零件位置的CameraX、CameraY和CameraU坐标。

ClearanceOK 返回间隙的判断结果。
Found 返回是否检测到了对象,即被检测对象或零件的形状得分是否超过了Accept属性的当前设置值。
FoundOnEdge

当发现Geometric对象与搜索窗口边缘距离太近时,则返回True。

如果FoundOnEdge为True,则Found的结果设置为False。

NumberFound

返回检测到对象的数目。

(最少是0个,最多是NumberToFind属性中设定的检测数量。)

Overlapped 若检测到的对象是重叠的,则返回True。
Passed 返回测试结果合格与否。
PixelX 返回已找到的零件位置(参见模型原点)的X坐标位置(以像素为单位)。
PixelY 返回已找到的零件位置(参见模型原点)的Y坐标位置(以像素为单位)。
PixelXYU

仅限运行时间。

返回已找到的零件位置的PixelX、PixelY和PixelU坐标(以像素为单位)。

Reversed 如果检测到的对象的Polarity与模型是相反的,则返回True。
RobotX 返回已查找到的零件位置(参见模型原点)相对于机器人坐标系的X坐标位置。
RobotY 返回已查找到的零件位置(参见模型原点)相对于机器人坐标系的Y坐标位置。
RobotU 返回在机器人坐标系内已找到的零件位置的U坐标位置。
RobotXYU

仅限运行时间。

返回在机器人坐标系中已找到的零件位置的RobotX、RobotY和RobotU坐标。

Scale

返回比例系数。

ScaleEnabled必须设定为True才能使此结果有效。

Score 返回一个INTEGER值,这个值代表运行时间内找到的对象与Geometric对象正在搜索的模型的匹配程度。
ShowAllResults

以表格形式在对话框中显示指定视觉对象的所有结果。

这样便于对比结果。

SkewDirection 返回执行过程中检测到的对象偏斜方向。
SkewRatio 返回执行过程中检测到的对象偏斜率。
Time 返回处理对象所需要的时间(单位:毫秒)。
TimedOut 返回对象执行过程是否因超时而终止。

理解Geometric搜索
Geometric对象的目的是在搜索窗口,定位先前示教过的模型。Geometric对象可用于寻找零件、检测对象物是否存在、检测零件缺陷以及各种检测用途。
本节将介绍Geometric对象的基础知识。就以下几个方面进行说明。

  • Geometric对象的模型和被检测对象
  • 搜索的基本概念
  • 设置Accept属性和Confusion属性的阈值
  • 其他搜索参数
  • 采用多结果对话框调试搜索问题
  • Geometric对象和旋转
  • Geometric对象和比例
  • 示教模型用于角度搜索
  • 搜索重复性和精度
  • 校准相机和被检测对象之间的距离

Geometric对象的模型和被检测对象
使用Geometric对象时很重要的一点就是要理解被检测对象与模型之间的区别。被检测对象是指,搜索窗口中的边缘特定的图案。对象物的范围可以是面积只有若干像素的简单线条,也可以是面积达数万像素的复杂图案。Geometric运算可以测量搜索窗口内的被检测对象与先前示教的该对象模型的匹配程度。模型或者说是模板是对象物的理想化表现,而被检测对象则是实际存在于搜索窗口内的工件。
常见的做法就是,在搜索窗口内注册一个具有代表性的模型,然后在该搜索窗口内搜索与模型类似的对象。下图中是一个包含被检测对象(十字形图案)的搜索窗口。若要注册这个十字形图案的模型,需要定义模型窗口,然后点击执行面板上的[Teach]按钮。(有关模型示教的详细内容,请参阅 使用Geometric对象。)
这样就建立了一个如下图右侧所示的模型,且此模型可用于搜索该搜索窗口内的其他十字形图案。


此搜索窗口含有多个对象物(左侧)和根据图像注册的模型(右侧)

根据对象物的几何形状来搜索模型的方法,是一种有效而稳定的方式,但是在定位模型以选择最佳模型时,还应该注意以下几个方面。

  • 确保图像具有足够的对比度
    在以亚像素精度辨别模型源中的边缘和目标图像边缘时,必须考虑对比度。请勿使用对比度低的图像,因为Geometric搜索工具使用一种基于几何边缘的算法。对比度越低,执行搜索所需的与边缘信息越少,搜索精度就越低。因此,请勿使用灰度值渐变的模型。背景和图像边缘之间的灰度值差尽量保持在10以上。

  • 避免使用不正确的几何模型
    不正确的几何模型的缺点有,缺少轮廓清晰的几何特征,或者其几何特征无法使它们自身充分区别于其他图像特征。这些模型产生的结果很不可靠。

    不正确的几何模型 简单的曲线缺乏鲜明的特征,容易产生错误匹配。

  • 避免使用模糊的模型
    某些类型的几何模型会在位置、角度或比例方面产生模糊的结果。
    位置模糊的模型通常仅包含一组或多组平行线。例如,请不要使用仅由平行线组成的模型,因为这样无法确定平行线的准确位置。理论上,任何一条直线上的线段的实际数目都是无限的,因此可以检测到无限匹配。请确保线段上具有形状特征,而该特征那个可以将它与其他图像的细节区分开。

    位置模糊的模型 避免使用仅由若干条平行线组成的、无鲜明特征的模型。

    由对象的一小部分组成的模型应进行测试,以确认这些模型的比例不模糊。例如,由孤立的角构成的模型的比例就很模糊。
    图中就是一个在比例的范围中进行搜索的模糊图形的示例。由于缺少鲜明的几何特征,因此无法得出正确的结果。

    由于被检测对象都是相似的物体,所以对称模型的角度通常是模糊的。例如,圆圈的角度就完全是模糊的。正方形和三角形等其他简单的对称模型的某些角度也是模糊的。

  • 几近模糊的模型
    若某个模型的绝大部分都是模糊的特征,则可能会出现错误的匹配,因为构成模糊特征的对象中搜索到结果边缘所占的百分比很高,足以被视为匹配。为避免这一现象,要确保您的模型具有足够的显著特征,以便使这个模型区别于其他的目标图像特征。这样就能确保在搜索结果中进返回正确的匹配项。例如,下面的模型可能产生错误的匹配,因为模型中大部分的有效边缘由平行直线构成而不是由有特征的曲线。

  • 基本搜索概念
    搜索是指,在搜索窗口中,找到与模型最相似的区域,从而定位被检测对象。下图中有一个模型和搜索窗口,以及搜索窗口内与模型最为相似的区域。此类模型可以用于搜索,诸如印刷电路板上的对准记号的对象。机器人可以利用搜索功能返回的位置数据来查找电路板的位置,以确定安装位置或电路板本身的位置。

设置Accept和Confusion属性的阈值
Accept属性和Confusion属性是Geometric对象的重要搜索参数。Accept属性可影响搜索速度,即提供一个提示,说明在何时在某个给定的场景区域内继续进行搜索。若Accept属性设置得较高,则要求被检测对象必须与模型非常相似,这样通过粗略检查即可排除掉很多区域,不必继续在这些区域内搜索。如果Accept属性设置得较低,则与模型仅稍稍相似的对象均可能超过Accept属性阈值,这样就需要对更多的区域进行更详细的检查。所以,Accept属性值越高,Geometric对象的运行速度越快,也就是检测速度也就越快。
Confusion属性与预测的结果数量相互作用,而该数量则会影响搜索速度。当Confusion属性和预期的结果数量一致时,则可以在完成搜索所有图像的可搜索区域前,提前中止搜索。

通过设置Accept属性,您可以控制系统找到容差范围内最差的对象物。误差可能是由缺陷、缩放、旋转或视频噪音造成的。Vision Guide 8.0将Accept属性的默认值设置为700。对于大多数应用来说,该值都是一个很好的起点。但是,您可以通过反复的尝试和运行来优化这个值。请注意,并不是说您总需要获得完美或者接近完美的分数才能使应用正常运行。根据被检测对象的变形程度,在有的应用中,即使将形状得分设为200,也可以获得准确的位置信息。

根据您可以接受的“最差的结果”(+容差范围)的最高值,来设置Confusion属性。Confusion属性的阈值宜大于或等于Accept属性阈值。Confusion属性的值越高,搜索的时间就越长,但是搜索的准确度也越高。Confusion属性默认值为800,您可以根据实际运用的需要进行调整。

下图所示是一个比较简单的场景。圆盘与对准记号(十字形图案)几乎没有相同特征。此时,可以将Confusion属性设置为一个较低的值(700左右)。Accept属性值根据容差量进行设定,一般都会小于或等于Confusion属性。但在这个例子中,由于几乎没有变形,所以将形状得分设置为920是最合适的。

在下图是一个比较复杂的场景:导通孔和IC盘都与圆盘相似。因此,Confusion属性宜设置为一个较高的值(820左右)。

具有灰度常数区域的搜索窗口将始终在该区域获得相关值0。如果某个情形下的背景基本统一(例如一张白纸),故而大多数位置都不会有几何形状。因此,如果Geometric对象查找到任何东西,都应该是需要搜索的目标对象,所以可以将Confusion属性设置为一个较低的值。

Accept和Confusion属性可以被视为您提供给系统的提示,以便让系统能够更快地定位特征。总的来说,应保守设置这些属性,但设置不用太准确。最保守的设置方法是,将Accept属性设低,将Confusion属性设高。如果对要搜索的场景了解较少时,建议采用保守的设置。这样搜索的结果是精准的,但是搜索速度比较慢。(在使用Geometric属性的位置结果来控制机器人的动作时,这一点尤其重要。)

如果对要搜索的场景非常了解,则建议采用更灵活的设置。例如,当您正在搜索的对象周围没有其他特征,场景剩余部分都为空白时,则可以灵活设置属性值。这样就不会进行精确搜索,提高搜索速度。

其他Geometric搜索参数

DetailLevel

DetailLevel决定了搜索期间什么特征可被视为边缘。

边线是用相邻像素之间的灰度值的过渡部分来定义的。“Medium”的默认设置可以让您即使在有对比度变化、噪声或光线不均匀的情况下,也能正确的从图像中检测到边缘部分。某些情况下检测对象的对比度相较于图像中的高对比度区域显得很低,则可能会错失某些低对比度的边缘。如果您的图像含有低对比度的对象,请提高DetailLevel的设定值,来确保检测到图像中所有的重要边线。VeryHigh设置下,可将对比度极低的边线全都提取出来。但要注意的是,这种模式对噪声十分敏感。

ScaleTargetPriority

规定了是否要优先检测ScaleTarget附近的对象。如果是要检测工业产品这类尺寸差别很小的对象,则将此属性设置为True。

默认:True

SearchReducedImage

在进行粗略的对象检测时缩小输入图像的尺寸。如果输入图像具有很多特征(例如边缘),则这项属性可缩短搜索时间。

默认:False

Smoothness

Smoothness属性让您可以控制边线提取滤波的平滑程度。平滑操作可平滑粗糙边缘,并消除噪声。此项控制的范围为0(不光滑)到100(极为光滑)。

默认:50

SharedEdges 将SharedEdges设置为True,则可以让多个结果共享边缘。否则,多个结果共享的边缘就会被视为得分最高的那个结果的边缘。
TimeOut

在一些时间要求严格的应用中,您可以为Geometric对象设置一个以毫秒为单位的时间限制,以检测指定模型的搜索结果。如果在到达时限之前没有找到要求的数量,则会停止搜索。并返回已找到的搜索结果。但是无法预测将检测到哪些搜索结果。

默认:2000毫秒

采用多结果对话框调试搜索问题

有时,即使是在相同的制作批次内,正在处理的零件也可能变化很大,或者是一个零件上有两个或更多的相似对象。此时,即使将Accept属性设置为合适的值,也可能会搜索到匹配这个值的错误的对象。在这类应用中,很能预测到会发生什么问题。
我们创建了ShowAllResults对话框来帮您解决上述以及各种其他问题。当您只想检测一个零件上的一个对象物特征,经过多测检测后,您可以找出为什么Vision Guide 8.0有时会搜索到其他并不想要得到的对象。通常导致这种情况产生的原因如下。

  • 搜索窗口内有两个或更多对象物非常相似,且有着很接近的Score结果分值。
  • 设置的Confusion或Accept属性值不够高,使得得分低于目标对象的错误对象的得分,也符合Accept属性设定的值。

如果您是Vision Guide 8.0的新用户,那么请注意,当在搜索窗口内搜索单个特征时,上述两种情况十分容易造成混淆。
如果检测的结果有时是您要找的对象,有时又是错误的对象,则可以用多结果对话框对比结果,确认问题所在。请按照以下步骤进行确认。

(1)将NumberToFind属性设置为“3”或以上。
(2)在Vision Guide 8.0开发环境下运行视觉对象。
(3)点击[ShowAllResults]属性按钮,将显示ShowAllResults对话框。
(4)检查搜索到的前三个或更多对象的得分。

如上所述,确认了搜索到的前三个或更多的对象的得分之后,将揭晓问题的根源所在。一般情况下产生这些问题的原因如下。

  • 每个检测到的对象的得分都大于Accept属性中设置的值。 如果是这种情况,请将Confusion属性的值调高,以确保检测出正确的对象,而不返回那些仅与Accept属性阈值一致的对象。当然也可以通过修改Accpet属性的值来改善这一问题。
  • 每个对象物的得分都非常相似。如果是这种情况,请按照以下步骤区分被检测对象。
    • 重新调整搜索窗口,确保作为被检测出对象而随机返回的对象物,不会出现在搜索窗口中。
    • 重新示教要检测对象的模型。
    • 调整周围的照明灯光,以确保要检测的对象的得分,可以高于错误检测对象的得分。
      关于使用多结果的更多详细信息,请参阅本章后续章节 6.2.24 使用来自单个对象的多个结果。

Geometric对象的间隔
您可以指定搜索结果与同一模型中其他搜索结果之间的最小间隔,以明确的区分(匹配)搜索结果。本质上,这定义了同一模型中可以重叠多少搜索结果。
您可以设置X位置、Y位置、角度和比例这4个标准的最小间隔。要区分出搜索结果,只需满足一个最小间隔即可。例如,如果搜索结果满足角度的最小间隔,那么无论位置和比例如何,都可以区分出检测结果。当然,如果不需要使用最小间隔也能正确的识别对象,您也可以不使用这些间隔标准。
位置的最小间隔属性的SeparationMinX和SeparationMinY定义了,在同一模型中,搜索结果至少要间隔多远才能算做是两个不同的搜索结果。此间隔被指定为标称比例 (ScaleTarget)的模型大小的百分比。
默认值为10%。若将该值设为0%,则禁用本属性。例如,如果模型在ScaleTarget为100像素宽,若将SeparationMinX设置为10%时,只有当搜索结果在X方向上的距离超过10像素时,才会被视为是两个不同的对象。
角度的最小间隔(SeparationAngle)定义了,区别两个搜索结果的最小角度差异。该值为绝对角度值。默认值为10.0。若将该值设为0,则禁用本属性。
比例的最小间隔(SeparationScale)用倍率定义了,区别两个搜索结果的最小比例差异。默认值为1.1。若将该值设为1.0,则禁用本属性。

Geometric对象和比例
模型比例定义了,目标图像中检测到的模型和预期模型的大小。如果预期的搜索结果大于或小于模型,则可以在可用范围内,设置其比例。使用ScaleTarget属性设置预期比例(范围:0.5 ~ 2.0)。
在默认情况下,比例范围的搜索是无效的。您可以根据需要,将ScaleEnable设置为True,启用比例范围搜索功能。这样您就可以根据指定的ScaleTarget值(或大或小),在不同的尺寸范围中,检测出目标图像的模型。使用ScaleFactorMin和ScaleFactorMax设置比例范围。ScaleFactorMin(0.5 ~ 1.0)和ScaleMaxFacto(1.0 ~ 2.0)共同决定标称ScaleTarget的比例范围。
最大系数和最小系数按照以下公式,计算出ScaleTarget设置:

max scale = ScaleTarget x ScaleFactorMax
min scale = ScaleTarget x ScaleFactorMin

请注意,范围被定义为一个比例,这样即使需要修改预期比例(ScaleTarget)时,也无需修改范围。比例范围的搜索时并行进行的。也就是说搜索结果的实际范围,不会影响第一个被搜索到的对象。但是,比例范围越大,搜索速度越慢。

Geometric对象和旋转
Geometric对象是查找旋转零件的理想工具。因为Geometric对象搜索的是边缘的几何形状,所以当查找旋转零件时,它比其他视觉工具更为可靠。
如需Geometric对象执行带有角度检测功能的搜索,需在示教Geometric对象模型时,将AngleEnable属性设置为True。并设置AngleStart属性和AngleRange属性。

示教用于角度搜索的模型
如需进行带有角度检测功能的搜索,首先需要设置用于角度搜索的Geometric搜索对象。首先,将AngleEnable属性设置为True,然后用AngleRange属性指定要示教模型的角度范围。您还可以通过设置AngleStart属性,来更改角度搜索的中心。这是AngleRange所基于的角度。例如,如果AngleStart为45,AngleRange为10,则搜索35 ~ 55的模型。
请记住,示教带有旋转角度的模型时,搜索窗口必须足够大,以保证模型旋转时,不会超出搜索窗口之外。

搜索重复性和精度
影响搜索重复性和精度的因素有,模型的尺寸和细节(形状、被检测对象的粗糙度和模型的对称性),以及搜索窗口被检测对象的变形(噪声、缺陷、旋转以及缩放的影响)。
若要测量噪声对位置的影响,您可以先在特定的搜索窗口中,搜索没有产生变形的检测对象,然后不更改对象位置,再次实行完全相同的搜索(将第2张图像采集到帧缓冲器中),最后比对两个搜索结果的位置。按照以下步骤进行对比:

(1)定义模型后,点击执行面板上的[Run]按钮两次或更多次。
(2)点击[Statistics]工具栏按钮。
(3)然后可利用Statistics对话框,查看两次搜索结果之间的位置差异。

如果是无变形检测对象的大模型(30x30),则重复精度可达到1/20像素。然而,在大多数情况下,精度在1像素或以下 (1/2、1/3、1/4等)。
如需测量搜索精度,可在特定的搜索窗口中,搜索没有产生变形的检测对象,然后移动检测对象,将搜索得到的位置差异与实际差异进行比对即可。如果您的模型是大模型(30x30或更大),且无变形、无旋转也无比例误差,并在X方向和Y方向上都有足够的边缘,则搜索精度可达到1/4像素。(请注意,此搜索精度是在不考虑机器人本身的误差,而只考虑视觉系统时的精度。所以,当您实际运用在机器人上时,还需考虑机器人机构自身的误差。)

校准相机和被检测对象之间的距离
为了获得最佳的搜索结果,图像中对象在搜索时的尺寸应与示教模型时的尺寸相同。假定使用相同的相机和镜头,在示教模型时和执行搜索时,如果被检测对象和相机的距离发生变化,则搜索窗口内的被检测对象也会呈现不同的外观尺寸。也就是说,相机与被检测对象离得越近,对象就显得越大;相机与被检测对象离得越远,对象就显得越小。
所以,当被检测对象和相机之间的距离发生改变时,需要重新示教模型。

使用Geometric对象
总是,我们已经了解了Geometric对象和搜索的工作原理,为理解如何使用Vision Guide 8.0 的Geometric对象打下了基础。
本节将说明如何使用Geometric对象。使用Geometric对象的步骤如下:

  • 创建一个新的Geometric对象
  • 设置搜索窗口的位置和尺寸
  • 设置模型窗口的位置和尺寸
  • 确定模型原点的位置
  • 设置Geometric对象的相关属性
  • 示教模型
  • 测试Geometric对象并检查结果
  • 调整属性并再次测试
  • 处理单个Geometric对象的多种结果

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击[New Sequence]按钮来创建一个新的视觉序列。

如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。
有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅以下内容。
视觉序列

第1步:创建一个新的Geometric对象
(1)点击Vision Guide工具栏中的[All Tools] - [New Geometric]按钮。
(2)您将看到一个Geometric图标出现在[New Geometric]工具栏按钮上方。
(3)点击这个Geometric图标,并将其拖至Vision Guide窗口的图像显示区域中。
(4)对象名称将自动创建。本示例中,由于是在本序列中创建的第一个Geometric对象,所以对象名称为“Geom01”。(稍后将说明如何修改名称。)

第2步:设置搜索窗口的位置和大小
屏幕上将显示一个与下图相似的Geometric对象。

新Geometric对象的布局
(1)点击Geometric对象的名称标签,按住鼠标左键,将Geometric对象拖至您想让搜索窗口的左上角所在的位置并按住鼠标。
(2)点击搜索窗口的尺寸手柄,拖动鼠标,将Geometric对象搜索窗口调整成合适的大小。(搜索窗口就是要搜索的区域。)

注意


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

第3步:设置模型窗口的位置和大小
(1)正在运行中的Geometric对象搜索窗口会突出显示搜索窗口上的尺寸手柄。如果没有显示尺寸手柄,请点击Geometric对象的名称字段。如果您能看到尺寸手柄,请忽略此步骤,继续下一步。
(2)点击模型窗口方框上的任一条边线。此操作会让模型窗口突出显示,并显示模型窗口上的尺寸手柄。
(3)点击模型窗口方框上的任一条边线,按住鼠标左键,将模型窗口拖动至您想让模型窗口的左上角所在的位置。
(4)点击尺寸手柄拖动鼠标,调整模型窗口的大小,确保其可以囊括被示教为Geometric对象的模型。

Geometric对象布局如下所示,搜索窗口是整个被检测区域,而模型窗口囊括了被搜索对象。实际的搜索窗口和模型窗口的形态可能会和下图显示的有所差异,此处的图像只是个大致的参考。
搜索窗口和模型窗口的位置、和尺寸调整后的Geometric对象

要点


正确设置模型窗口的尺寸和位置的技巧:
模型窗口的尺寸和位置十分重要,因为它们定义了将要搜索的对象。创建Geometric对象的模型窗口时,请注意以下两点:

  • 搜索窗口既是被搜索的区域,窗口越小搜索的时间越短。特别是如果预先知道被搜索的零件会有较大的角度旋转,那么尽量缩小搜索窗口和模型(零件的一部分等),则可减少零件旋转造成的影响。
  • 使模型窗口的尺寸尽量接近搜索窗口的尺寸,以缩短搜索时间。

另外,如果两个零件位置相邻甚至相互接触时,将模型窗口设置的稍大于(几个像素)实际检测对象时,可以帮助区分目标对象和其他对象。
请注意,模型窗口的最佳尺寸取决于每个实际应用的具体情况。

第4步:确定模型原点的位置
模型原点定义了模型上的位置,当运行Geometric对象时,该位置将返回为被检测对象的位置。也就是说,当位置信息非常关键时,需要将模型原点设置在重要的位置。

例如,在使用Geometric对象检测零件,控制机器人取放零件应用时,机器人能否轻松的抓取零件,模型原点的位置是一个重要的因素。因为这将是机器人根据RobotX, RobotY, RobotU, RobotXYU返回的结果所移动到的那个位置。

在创建新的Geometric对象后,ModelOrgAutoCenter属性的默认设置为True。此时模型原点会自动被设置在模型窗口的中心,且无法手动移动。若要以手动修改模型原点,须先将ModelOrgAutoCenter属性设置为False。该属性的设置方法和模型原点定位方法如下。

(1)点击Vision Guide窗口流程图中的Geometric对象。在对象窗口的属性列表中查找ModelOrgAutoCenter属性,并点击值字段。
(2)下拉列表会显示“True”和“False”两个选项。点击“False”选项。这样就可以将ModelOrgAutoCenter属性设置为False,也可以使用鼠标拖动模型原点。
(3)点击模型窗口以突出显示模型窗口。
(4)点击模型原点,按住鼠标左键,将模型原点拖至新位置。应注意的是,模型原点只能位于模型窗口范围内。

第5步:设置Geometric对象属性
在步骤4中显示的对象窗口中,设置Geometric对象属性。要设置属性,仅需点击相关属性值字段,然后再重新输入一个新的值。或者如果显示有下拉列表,则点击该列表中的相应选项即可。
下表所示为Geometric对象常用的一些属性。其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅“Geometric对象属性”的相关内容。在测试Geometric对象时,无需设置这些属性。但是,如果您是第一次使用Geometric对象,可参考以下说明。

注意


周围照明和外部设备噪音可能会影响视觉序列的图像和结果。当受到周围照明和外部设备噪音的影响,拍摄的图像可能会损坏,并且检测到的位置可能是对象搜索区域中的任何位置。正确配置Accept和RejectOnEdge等属性值,可降低错误检测的风险。

项目 说明
Name属性

新创建的Geometric对象中,默认的项目名称是“Geom**”。在一个视觉序列中要使用多个Geometric对象时,使用**的编号对Geometric进行区分。

默认情况下,会将在视觉序列序列中使用的第一个Geometric对象命名为“Geom01”。

需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。

这样所有显示Geometric对象名称的地方都会变为新的名称。

Accept属性

Accept属性用于设置形状分值的标准,被检测对象必须与其一致,或者符合其设定的标准时,才能被找到。

Score结果的返回值将与这个Accept属性的值进行对比。

默认:700

Confusion属性

如果搜索窗口内有很多相似的特征,则可利用Confusion属性帮助您找到正确的搜索对象。

默认:800

ModelOrgAutoCenter属性

如果您打算以手动方式改变模型原点的位置,您必须首先将ModelOrgAutoCenter属性设置为False。

默认:True

Frame属性

Frame属性可让您将先前定义的Frame对象选为Geometric对象的参考框。

有关Frames的详细信息,请参考Frame对象中的说明。

NumberToFind属性 根据想要查找的对象的数目,您可能想将NumberToFind属性设置为大于1的数字。这样就能让Geometric对象在一个搜索窗口内找到多个特征。
AngleEnable属性 如果您打算利用Geometric模型进行角度搜索,就将此项属性设置为True。若要对多个模型进行角度搜索,则在示教Geometric对象的模型之前将这条属性设置为True。
AngleRange属性 这条属性与AngleEnable属性共同使用,可用角度搜索Geometric模型。
RejectOnEdge属性

利用这条属性,可以将与搜索窗口边界有接触的那些零件排除在外。

通常而言,这条属性宜设置为True。

可以将属性保持为默认属性,并进行下一步。稍后可在必要时设置这些属性。

第6步:注册Geometric对象的模型
Geometric对象执行搜索功能,需要一个模型,这通过被称为示教模型的步骤来实现。在这个步骤中,Geometric对象的模型窗口应该已经被放置在可囊括模型对象的位置。通过以下步骤完成模型示教。

(1)确保Geometric对象是否为当前显示的对象。查看流程图或序列目录树,确认当前正在处理的对象。或者,检查图像显示区域,查看正以洋红色突出显示的对象。
(2)点击执行面板上的[Teach]按钮。完成模型示教。多数情况下,示教模型仅需几秒钟。但如果在AngleEnable属性设置为“True”时示教某个模型,由于要示教多个角度的模型,则会需要较长时间方能完成。

第7步:测试Geometric对象并检查结果
要运行Geometric对象,点击执行面板上对象的[Run]按钮。
Geometric对象的结果将会显示出来。这时需检查的主要结果有:

项目 说明
Found结果

返回是否检测到了Geometric对象。

如果找到目标对象,则返回的结果为“True”。如果未找到目标对象,Found的结果将返回“False”,且以红色突出显示。如果找不到Geometric对象,请参考第8步了解常见原因。

FoundOnEdge
结果

如果找到的对象物的一部分与搜索窗口的边界接触,则这个结果返回为“True”。

在这种情况下,Found结果返回为“False”。

Score结果

这个结果显示与模型最为相似的那个特征与模型匹配的程度。

Score结果的范围为0至1000,1000表示模型和被检测对象完全一致。当要确认被检测出的对象与希望检测出的对象的相似程度时,请先确认运行Geometric对象之后的Score结果。

Time结果

返回Geometric对象执行所需时间。

搜索窗口和模型窗口越小,搜索速度就越快。

NumberFound结果 在搜索多个Geometric对象时,NumberFound结果会返回所找到的与Geometric对象模型相匹配的特征的数目。
Angle结果

Geometric对象的倾斜角度。

这个角度是依据模型的原始角度计算的。但有时只是个粗略值,可能并不可靠。

建议使用Polar对象来确定旋转角度。特别是使用机器人向导时,请使用Polar对象。

PixelX结果

PixelY结果

返回对象的XY坐标值(像素坐标系)。

这个位置是被检测出对象的模型原点的位置。如果要返回其他位置,则需修改模型原点位置,并重新示教模型。

CameraX结果

CameraY结果

在相机坐标系中定义检测对象的XY坐标值。

如果相机尚未完成校准则不会返回任何值,而是返回[No Cal]。

RobotX结果

RobotY结果

在机器人坐标系中定义被检测对象的XY坐标值。

可用于命令机器人移动至这个XY坐标位置。(不需要进行其它转换或处理。)

这个值是被检测出对象的模型原点的位置。如果您想返回一个不同的位置,您必须首先重新确定模型原点的位置,然后重新示教该模型。如果相机未进行校准则不会返回任何值,而是返回[No Cal]。

RobotU结果

返回被检测出对象的角度,该角度是转换成机器人坐标系后的值。

如果相机尚未完成校准,则不会返回任何值,而是返回[No Cal]

ShowAllResults 当处理多个结果时,点击ShowAllResults设置值字段中的按钮,则会显示ShowAllResults对话框,可以查看当前视觉对象的所有结果。

要点


由于上述示例各步骤中没有包括进行校准的步骤,所以RobotXYU、RobotX、RobotY、RobotU和CameraX、CameraY、CameraXYU的结果会返回“No Cal”。这意味着由于未进行校准,视觉系统将无法计算相对于机器人坐标系或相机坐标系的坐标结果。请参考 校准 以了解详情。

第8步:调整属性并再次测试
在Geometric对象运行若干次之后,您可能会在查找某个Geometric对象时遇到困难,或者您还想微调某些属性设置。下面将介绍一些常见问题的故障排除方法和微调整技巧。

Geometric对象的故障排除
Geometric对象返回的Found结果为False:

  • 尝试降低Accept属性的设定值(例如:低于当前Score结果的值),并再次运行Geometric对象。
  • 确认FoundOnEdge结果的返回值是否为True。如果Found结果为“False”,FoundOnEdge结果为“True”,表示已经查找到对象,但其中有一些对象与搜索窗口边缘有接触。此时,请将搜索窗口调大,使其能适应被搜索对象的大小。如果搜索窗口的大小无法调整,请尝试更改相机位置,或调整模型窗口的大小。
    Geometric检测到错误识别对象时:
  • 检查Accept属性是否设置得足够高。如果Accept属性设置得很低,则有可能会检测出搜索对象以外的其他对象。
  • 请确认Confusion属性是否设置得足够高。Confusion属性值必须大于或等于Accept属性值。如果搜索窗口内有与被搜索对象非常相似的对象时,则必须将Confusion属性值调为更高的值,以避免检测出错误的识别对象。
  • 调整搜索窗口,使它靠近被检测对象,并精准的将其单独隔离出来。

Geometric对象微调
通常需要进行Geometric对象的微调,才能正常使用。以下是与Geometric对象微调和模型添加相关的主要属性说明:

项目 说明
Accept属性 Accept属性的值越低,Geometric对象的运行速度就越快。但是Accept过低时,可能会造成被检测出的对象,不是想要查找的对象。可以尝试多运行几次Geometric对象,一旦Score结果返回的形状分值符合预期结果时,调整Accept属性的值。为了以最佳执行速度并得到可靠的结果,通常需要若干次尝试运行才能找到一个合适的值。
Confusion属性 如果搜索窗口中有与被搜索对象非常相似的对象时,则需要将Confusion属性设置得相对高一些。这将区分那些有相似特征的对象,正确的检测出目标对象。但是,Confusion属性值设置的过高时,会降低运行速度。如果搜索窗口没有类似的对象物时,可降低Confusion属性的设定值,以缩短执行时间。
Add another sample 当进行示教的模型窗口与当前模型的尺寸一致时,可以选择“Add another sample”。当模型具有轻微变化(形状或图案略微不同,阴影表现不同)时,选择已更改的模型来添加新模型可能会稳定对象执行的得分。如果角度位置大幅度偏移,或者因差异较大而无法添加模型,原始模型将保持不变

当完成调整,并测试Geometric对象得到满意的结果后,创建视觉对象的步骤就完成了。下一步是继续创建其他视觉对象或者配置并测试整个视觉系列。

Geometric对象的其他实用工具
Vision Guide 8.0中有一个非常实用的Histogram功能,该功能可以在搜索窗口中直观的显示灰度值的分布情况。使用Vision Guide直方图功能,可以检查Geometric对象的图像的状态。

Correlation对象

Correlation对象描述
Correlation对象是Vision Guide 8.0中最常用的工具。示教完Correlation对象后,便可以非常快速并精准的查找到并测量到先前注册的对象。Correlation对象被广泛应用于以下几种应用中。

项目 说明
Alignment 通过定位对象上的特征(例如登记标志)确定已知对象的位置和方向。此方法通常用来查找零件位置,以协助将机器人引导到拾取位置和布局位置。
Gauging 零件检查时查找零件的特征,如直径、长度、角度和其他关键外形尺寸。
Inspection 查找简单缺陷,如零件遗失或印刷模糊。

Correlation对象布局
Correlation对象有搜索窗口和模型窗口,如下所示。

Correlation对象属性
以下列表是对Correlation对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

Accept

指定形状得分,用于判断是否以检测到检测对象。

检测对象的得分需要大于或等于设定的形状得分。如果设定值偏低,可能会导致错误检测。

默认:700

AngleAccuracy

指定角度搜索精度(单位:度)。

默认:1

AngleEnable

规定了Correlation搜索时,是否进行角度(旋转)搜索。

该属性要在Correlation对象的模型示教之前设定。

默认:False

AngleMaxIncrement

指导相关性模型进行角度搜索的角度最大增量。

最大值:10

默认:10

AngleOffset

指定旋转的偏移值。

默认:0.000

AngleRange

规定了一系列旋转模型的登录范围。

最大值为45。

默认:10

AngleStart

规定了角度搜索的中心。

默认:0

CalRobotPlacePos 在设计和程序运行时校准RobotPlacePos。
Caption

为Correlation对象指定标题。

默认:Empty String

CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

默认:Screen

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则Correlation对象将应用于指定视觉对象的所有结果(NumberFound)。

默认:1

CenterPntOffsetX

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。

默认:0

CenterPntOffsetY

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。

默认:0

CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

如果将SearchWinType设置为RotatedRectangle,搜索窗口则以Angle结果为基础进行旋转。

默认:False

CheckClearanceFor 设定确认间隙的对象。
ClearanceCondition 设定间隙的判断方法。
Confusion

指出被检测图像的预期混淆量。

此处显示的值是对于被检测对象可获得的最大形状的分,而不是您正在检测的对象。

默认:800

CoordObject 指定复制结果的Coordinates对象 执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。默认:None
CurrentResult

可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。

默认:1

Description

设定用户指定的描述。

默认:空白

EditWindow 定义被检测区域的不要紧的像素
Enabled

指定是否执行对象。

默认:True

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

Frame

规定了与指定框有关的当前对象搜索位置。

(允许Correlation对象相对于框架进行定位。)

默认:None

FrameResult

指定需使用Frame的第几个结果。

默认:1

Graphics

设置显示的图表模式。

默认:1 - All

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

ModelObject

规定使用哪种模型进行搜索。

默认:Self

ModelOrgAutoCenter

模型有固定的基准点,并且在模型窗口中模型的位置由该参考点表示。该固定基准点被称为模型原点。ModelOrgAutoCenter属性可将模型原点设置在模型窗口的中心。

默认:True

ModelOrgX 模型原点的X坐标值。(可使用亚像素)
ModelOrgY 模型原点的Y坐标值。(可使用亚像素)
ModelWin

仅限运行时间。

在一次调用中设置或返回模型窗口的左侧参数、顶部参数、高度参数和宽度参数。

ModelWinAngle 指定模型窗口的角度。
ModelWinCenterX 指定模型窗口中心点的X坐标值。
ModelWinCenterY 指定模型窗口中心点的Y坐标值。
ModelWinLeft 指定模型窗口左侧位置。
ModelWinHeight

指定模型窗口的高度。

默认:50

ModelWinTop 指定模型窗口顶部位置。
ModelWinType 指定模型窗口类型。
ModelWinWidth 指定模型窗口的宽度。
Name

用于为Correlation对象分配一个唯一的名称。

默认:Corr01

NumberToFind

规定了在当前搜索窗口中待查找的对象的数目。

默认:1

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

RejectOnEdge

规定了是否排除与搜索窗口边缘有连接的零件。通常将属性设置为True。这避免了不完全位于搜索窗口内的部分所导致的错误检测。

默认:False

SaveTeachImage 设置示教模型时,是否保存图像文件。
ScoreMode 设置或返回在Fail时显示结果的阈值。
SearchWin

仅限运行时间。

在一次调用中设置或返回搜索窗口左侧参数、顶部参数、高度参数和宽度参数,或中心X坐标、中心Y坐标、圆内周长的半径大小、圆外周长的半径大小。

SearchWinAngle 定义待搜索区域的角度。
SearchWinAngleEnd 定义待搜索区域的结束角度。
SearchWinAngleStart 定义待搜索区域的开始角度。
SearchWinCenterX 定义待搜索区域中心的X轴坐标值
SearchWinCenterY 定义待搜索区域中心的Y轴坐标值
SearchWinHeight

定义待搜索区域的高度(单位:pixel)。

默认:100

SearchWinLeft 定义待搜索区域的最左边位置(单位:pixel)。
SearchWinPolygonPointX1 当SearchWinType设置为“Polygon”时,定义被检测区域的第1个顶点的X坐标值
SearchWinPolygonPointY1 当SearchWinType设置为“Polygon”时,定义被检测区域的第1个顶点的Y坐标值
SearchWinPolygonPointX2 当SearchWinType设置为“Polygon”时,定义被检测区域的第2个顶点的X坐标值
SearchWinPolygonPointY2 当SearchWinType设置为“Polygon”时,定义被检测区域的第2个顶点的Y坐标值
SearchWinPolygonPointX3 当SearchWinType设置为“Polygon”时,定义被检测区域的第3个顶点的X坐标值
SearchWinPolygonPointY3 当SearchWinType设置为“Polygon”时,定义被检测区域的第3个顶点的Y坐标值
SearchWinPolygonPointX4 当SearchWinType设置为“Polygon”时,定义被检测区域的第4个顶点的X坐标值
SearchWinPolygonPointY4 当SearchWinType设置为“Polygon”时,定义被检测区域的第4个顶点的Y坐标值
SearchWinPolygonPointX5 当SearchWinType设置为“Polygon”时,定义被检测区域的第5个顶点的X坐标值
SearchWinPolygonPointY5 当SearchWinType设置为“Polygon”时,定义被检测区域的第5个顶点的Y坐标值
SearchWinPolygonPointX6 当SearchWinType设置为“Polygon”时,定义被检测区域的第6个顶点的X坐标值
SearchWinPolygonPointY6 当SearchWinType设置为“Polygon”时,定义被检测区域的第6个顶点的Y坐标值
SearchWinPolygonPointX7 当SearchWinType设置为“Polygon”时,定义被检测区域的第7个顶点的X坐标值
SearchWinPolygonPointY7 当SearchWinType设置为“Polygon”时,定义被检测区域的第7个顶点的Y坐标值
SearchWinPolygonPointX8 当SearchWinType设置为“Polygon”时,定义被检测区域的第8个顶点的X坐标值
SearchWinPolygonPointY8 当SearchWinType设置为“Polygon”时,定义被检测区域的第8个顶点的Y坐标值
SearchWinPolygonPointX9 当SearchWinType设置为“Polygon”时,定义被检测区域的第9个顶点的X坐标值
SearchWinPolygonPointY9 当SearchWinType设置为“Polygon”时,定义被检测区域的第9个顶点的Y坐标值
SearchWinPolygonPointX10 当SearchWinType设置为“Polygon”时,定义被检测区域的第10个顶点的X坐标值
SearchWinPolygonPointY10 当SearchWinType设置为“Polygon”时,定义被检测区域的第10个顶点的Y坐标值
SearchWinPolygonPointX11 当SearchWinType设置为“Polygon”时,定义被检测区域的第11个顶点的X坐标值
SearchWinPolygonPointY11 当SearchWinType设置为“Polygon”时,定义被检测区域的第11个顶点的Y坐标值
SearchWinPolygonPointX12 当SearchWinType设置为“Polygon”时,定义被检测区域的第12个顶点的X坐标值
SearchWinPolygonPointY12 当SearchWinType设置为“Polygon”时,定义被检测区域的第12个顶点的Y坐标值
SearchWinRadiusInner 定义待搜索区域的圆弧内径。
SearchWinRadiusOuter 定义待搜索区域的圆弧外径。
SearchWinTop 定义待搜索区域的最上边位置(单位:pixel)。
SearchWinType 定义待搜索区域的类型(Rectangle, RotatedRectangle, Circle, Arc, Polygon)。
SearchWinWidth

定义待搜索区域的宽度(单位:Pixel)。

默认:100

ShowModel

在可以缩放的视图中显示之前示教的模型。

可用于更改模型原点,及更改需要忽略的像素。

SkewFitEnable

指定是否对模型使用变形适应。

默认:False

Sort

选择对象结果的排序方式。

默认:0 - None

Timeout 设置或返回Correlation对象的最大搜索时间。

Correlation对象结果
以下列表是对Correlation对象结果的总结,并附有简要说明。有关详情,请参考Vision Guide 8.0 Properties and Results Reference Manual。

结果 说明
Angle 返回被检测出零件的旋转量,用度数表示。
CameraX 返回相机坐标系内已找到的零件位置(参见模型原点)的X坐标位置。(单位:mm)
CameraY 返回相机坐标系内已找到的零件位置(参见模型原点)的Y坐标位置。(单位:mm)
CameraXYU

仅限运行时间。

返回相机坐标系中已检测到零件位置的CameraX、CameraY和CameraU坐标。

ClearanceOK 返回间隙的判断结果。
Found 返回是否检测到了对象,即被检测对象或零件的形状得分是否超过了Accept属性的当前设置值。
FoundOnEdge

当发现Correlation对象与搜索窗口边缘距离太近时,返回“True”。

如果FoundOnEdge为True,则Found结果设置为False。

NumberFound

返回已检测到对象的数目。

(最少是0个,最多是NumberToFind属性中设定的检测数量)。

Passed 返回测试结果合格与否。
PixelX 返回已找到的零件位置(参见模型原点)的X坐标位置(以像素为单位)。
PixelY 返回已找到的零件位置(参见模型原点)的Y坐标位置(以像素为单位)。
PixelXYU

仅限运行时间。

返回已找到的零件位置的PixelX、PixelY和PixelU坐标(以像素为单位)。

RobotX 返回已查找到的零件位置(参见模型原点)相对于机器人坐标系的X坐标位置。
RobotY 返回已查找到的零件位置(参见模型原点)相对于机器人坐标系的Y坐标位置。
RobotU 返回在机器人坐标系内已找到的零件位置的U坐标位置。
RobotXYU

仅限运行时间。

返回机器人坐标系中已找到的零件位置的RobotX、RobotY和RobotU坐标。

Scale 返回执行过程中检测到的对象缩放比例值。
Score 返回一个0~1000的INTEGER值,这个值代表运行时间内找到的对象与Correlation对象正在搜索的模型的匹配程度。
ShowAllResults

以表格形式在对话框中显示指定视觉对象的所有结果。

比较结果将更加容易。

SkewDirection 返回执行过程中检测到的对象偏斜方向。
SkewRatio 返回执行过程中检测到的对象偏斜率。
Time 返回处理对象所需要的时间(单位:毫秒)。
TimedOut 返回对象执行过程是否因超时而终止。

了解归一化相关
Correlation的目的是在搜索窗口中定位和测量一个或多个预先注册的对象。Correlation对象可用于查找零件、检测检查零件是否存在、检测缺陷和其他各种查找应用。
虽然Vision Guide 8.0有多种视觉对象工具,但Correlation对象是最常用的工具,因为其速度快、整体可靠性高。
例如,在很多应用中会使用Edge工具来查找对象的边缘。但是,如果在相同区域内有多个边缘而造成Edge对象变得混乱时,可以使用Correlation对象来查找边缘位置。
另外,当可以使用注册模型时,则可以使用更可靠的Correlation对象代替Blob对象。
本节将介绍可应用于Correlation对象的搜索工具的基本知识。内容如下。

  • 对象物和模型:说明
  • 搜索的基本概念
  • 归一化相关
  • 归一化相关的形状得分
  • 优化归一化相关 (Accept和Confusion)
  • 设置Accept和Confusion的属性值
  • 关于Accept属性和Confusion属性的应用知识
  • Correlation对象和旋转
  • 示教模型用于角度搜索
  • 搜索重复性和精度
  • 校准相机和被检测对象之间的距离

Correlation对象的模型和对象物
使用Correlation对象时,了解对象物和模型的区别很重要。
对象物是搜索窗口中任何特定的灰度模式。对象物可以是某区域中由少数像素组成的简单的边缘,也可以是某区域中由数以万计的像素组成的复杂图案。
相关性搜索操作,则可以测量相关区域中的对象物,与事前注册的模型的匹配程度。
对象物是存在于实际的搜索窗口内的,而模型或模板则是对对象物的理想化表示。
模型是用于表示对象物的灰度模式。这相当于模板匹配系统中的模板。
如果模型有两个灰度级时,则为二进制模型。如果模型有两个以上的灰度级时,则为灰色模型。
Vision Guide 8.0使用的所有模型均为灰色模型,因为灰色模型比二进制模型的功能更强大,可以更加接近真实的还原测量对象。使用灰色模型,可以获得更可靠的测量结果。
最常见的搜索方法是,在一个搜索窗口注册具有代表性的模型,然后在该搜索窗口内搜索相似的对象物。下图就是一个包含测试对象物(十字形)的搜索窗口。
若要注册这个十字形图案的模型,需要定义模型窗口,然后点击执行面板上的[Teach]按钮。
(示教模型详细信息,请参阅本章后面的 使用Correlation对象。)
结果,建立的模型如右图所示,且该模型可用于在搜索窗口中搜索其他十字形符号。

此搜索窗口含有多个检测对象物(左侧)和根据图像建立的模型(右侧)

搜索的基本概念
搜索是指,在搜索窗口中,找到与模型最相似的区域,从而定位被检测对象。下图为模型、搜索窗口和搜索窗口内与模型最相似(峰值)的区域。这类模型可用于搜索对象,例如印刷电路板上的基准标记。机器人可以利用搜索功能返回的位置数据,确定电路板上零件的安装位置或电路板本身的位置。

在搜索窗口内查找模型的方法有很多,但最常见的方法是穷举搜索法。这种方法是在搜索窗口中的所有位置对模型进行评估,然后返回匹配度最高的位置。通过这种穷举搜索法得到的结果准确性很高,但速度可能很慢。例如,假设搜索窗口是一个3636像素的正方形,而模型是一个6像素的正方形。这种情况下为了找到和模型一致的位置,则需要对961个所有可能的位置进行评估。
但是Vision Guide 8.0搜索方法这种穷举搜索法进行了很大改良。首先,扫描搜索窗口以找到潜在的匹配位置,然后仅对这些位置进行模型评估。最后返回匹配度最高的位置。改良后的方法比穷举搜索法的速度要快几千倍。

归一化相关
归一化相关是指,排除搜索窗口内线性差异和模型亮度线性差异的影响,仅根据图像和模型之间的几何相似程度来检测对象的方法。
归一化相关的功能非常强大且稳定,所以我们将其用于Vision Guide 8.0的Correlation对象的搜索运算法则。即使在以下情况,归一化相关的运算值也不会因受到影响而改变。

  • 所有搜索窗口或模型像素均乘以某个常数。
  • 在所有搜索窗口或模型像素中增加某个常数。
    归一化相关最重要的特点是,归一化相关的值,不会受到搜索窗口内线性差异和模型亮度线性差异的影响。这个属性非常重要。
    因为图像的整体亮度和对比度都是由诸如光照强度、景物反射率、相机光圈、传感器增益和偏移量(包括可能的自动增益控制电路等)、以及图像数字转换器的增益和偏移量等因素决定的。而所有这些因素在大多数生产情况下都很难予以控制。例如,灯泡会随时间变化,周围的光线会随着一天中时间的推移而改变,相机和数字转换器可能会发生故障需要更换,所以被检测出对象的反射率也有可能会发生变化。
    归一化相关的另一重要特点是,形状得分值(请参阅下一节,归一化相关形状得分)具有绝对意义。也就是说,可以对所有的模型和搜索窗口,定义完全相同的匹配项。
    该属性不仅不会受到搜索窗口内线性差异和模型亮度线性差异的影响,也不会受到模型亮度、对比度和尺寸的影响。因此,形状得分可用于测量检查应用中检测对象的质量。
    如果计算出搜索窗口和模型的形状得分为900,则搜索窗口和模型非常相似。
    如果形状得分100,则搜索窗口和模型并不相似。
    即使对模型或搜索窗口一无所知,这些属性也仍然有效。也就是说,归相关系数具有绝对意义。

归一化相关的形状得分
在归一化相关中,被检测对象的形状得分(与模型的相似程度)定义为0到1000的数值。形状分数越高,检测对象和模型的相似度越高。(形状得分数值为1000说明完全匹配。)
形状得分是Correlation对象返回的作为Score结果的值。有关Score结果的更多信息,请参阅 Vision Guide 8.0 Properties and Results Reference Manual。

优化归一化相关 (Accept和Confusion)
对于大多数实际的搜索应用中,传统的模板匹配需要很长的处理时间。因为传统的模板匹配会对所有可能的位置进行穷举搜索。
为了解决这个问题,需要采取适当的定向搜索方式。所谓定向搜索是指,在搜索过程中根据检测到的数据来排除没有可能匹配的位置,然后只对有匹配可能的位置进行搜索。
相关搜索采用一种被称为登山法的定向搜索方式。所谓登山法是指,可通过始终在最陡峭的上坡度移动而在本地数据中完全查找到一个或多个变量函数的峰值。当每个邻近点都低于该点时,就达到了峰值。
传统的登山法,有以下缺点:

  • 根据起点位置的不同,可能会将错误的最大值误判为峰值。
  • 当到达平稳状态时,会无法判断继续搜索的方向。

而当起点太少时,可能会错过一些重要的山丘。而当起点太多时,可能会从不同的方向爬上同一个山丘,从而阻碍了登山法在速度上的优势。

但是Vision Guide 8.0则可以通过搜索窗口和模型对山丘进行估算,从而克服这些问题。
相关搜索函数在数学上相当于滤波操作。相关函数是特定的已知过滤器(模型)的输出,该过滤器使特定的空间频率增强并使其他的空间频率减弱。另外,如果搜索窗口的已知部分的频率组成,不同于模型的频率组成,就没有必要在此区域放置登山起点。

通过检查模型的转移函数,系统可以估计相关函数的空间频率组成,并依次估计山丘的最小空间和尺寸。了解最小空间可以让系统计划从哪开始登山。而了解最小尺寸则可以避免系统采用错误的峰值。
除从模型获得的信息外,还可以通过定义一组Vision Guide属性(即Accept属性和Confusion属性)来控制搜索。
Accept属性指定形状分数,当得分大于或等于此形状分数时,对象才能视为“被找到”(即Found结果返回为“True”)。如果预估的山丘高度并未超过搜索窗口指定区域中Accept的属性值时,则该区域的登山结束。
Confusion属性说明搜索窗口中预期的复杂程度。具体来说,就是您正在搜索的对象之外,其他对象物的最大形状得分。这将向系统给出关于待搜索场景的重要提示。即如果对象物获得一个高于混淆阈值的形状得分,其必须是正在搜索的对象。
系统使用Confusion属性和预测的结果数量(通过NumberToFind指定),判断有多少山丘要爬,多少山丘不用爬。具体地说,一旦被搜索对象的形状得分高于Confusion属性阈值和Accept属性阈值时,一旦检测到预期数量时,搜索可以终止。
要开始搜索,必须并行执行多次登山法,并以模型的转移函数确定的多个位置为起点。随着登山法的进行,对每个山丘的预估值精度将逐渐提高,最终找到那个真正的峰值。

登山法是在多个山丘上并行运行,并且每次只进行一个步骤,直到所有山丘的预计高度都低于Confusion属性设置的阈值为止。当爬升到Confusion属性的阈值时,则是该山坡的峰值。

设置Accept和Confusion属性的阈值
Accept属性阈值和Confusion属性阈值会影响Correlation对象的搜索速度。
Accept属性可影响搜索速度,即提供一个提示,说明在何时在某个给定的场景区域内继续进行搜索。
若Accept属性设置得较高,则要求被检测对象必须与模型非常相似,这样通过粗略检查即可排除掉很多区域,不必继续在这些区域内搜索。
如果Accept属性设置得较低,则与模型仅稍稍相似的对象均可能超过Accept属性阈值,这样就需要对更多的区域进行更详细的检查。

所以,Accept属性值越高,Geometric对象的运行速度越快,也就是检测速度也就越快。
Confusion属性与预测的结果数量相互作用,而该数量则会影响搜索速度。当Confusion属性和预期的结果数量一致时,则可以在完成搜索所有图像的可搜索区域前,提前中止搜索。
通过设置Accept属性,您可以控制系统找到容差范围内最差的对象物。误差可能是由缺陷、缩放、旋转或视频噪音造成的。
Vision Guide 8.0中Accept属性的默认值设置为700。对于大多数应用来说,该值都是一个很好的起点。但是,您可以通过反复的尝试和运行来优化这个值。
请注意,并不是说您总需要获得完美或者接近完美的分数才能使应用正常运行。根据被检测对象的变形程度,在有的应用中,即使将形状得分设为200,也可以获得准确的位置信息。但是,对于大多数的应用,一般建议将Accept属性的形状得分设置在500以上。
根据您可以接受的“最差的结果”(+容差范围)的最高值,来设置Confusion属性。
Confusion属性的阈值宜大于或等于Accept属性阈值。Confusion属性的值越高,搜索的时间就越长,但是搜索的准确度也越高。
Confusion属性的默认值为800,您可以根据实际运用的需要进行调整。

下图所示是一个比较简单的场景。圆盘与对准记号(十字形图案)几乎没有相同特征。此时,可以将Confusion属性设置为一个较低的值(500左右)。
Accept属性值根据容差量进行设定,一般都会小于或等于Confusion属性。但在这个例子中,由于几乎没有变形,所以将形状得分设置为920是最合适的。

比较简单的场景

在下图是一个比较复杂的场景:导通孔和IC盘都与圆盘相似。因此,Confusion属性宜设置为一个较高的值(820左右)。

比较复杂的场景

关于Accept属性和Confusion属性的应用知识
具有灰度常数区域的搜索窗口将始终在该区域获得相关值0。如果某个情形下的背景基本统一(例如一张白纸),则在大多数区域均无关联。因此,如果Correlation对象查找到任何东西,都应该是需要搜索的目标对象,所以可以将Confusion属性设置为一个较低的值。
Accept和Confusion属性可以被视为您提供给系统的提示,以便让系统能够更快地定位检测对象。
总的来说,应保守设置这些属性,但设置不用太准确。最保守的设置方法是,将Accept属性设低,将Confusion属性设高。
如果对要搜索的场景了解较少时,建议采用保守的设置。这样搜索的结果是精准的,但是搜索速度比较慢。
(当使用Correlation属性的位置结果来控制机器人的动作时,这一点尤其重要。)
如果对要搜索的场景非常了解,则建议采用更灵活的设置。例如,当您正在搜索的对象周围没有其他特征,场景剩余部分都为空白时,则可以灵活设置属性值。这样就不会进行精确搜索,提高搜索速度。

采用多结果对话框排除搜索问题
有时,即使是在相同的制作批次内,正在处理的零件也可能变化很大,或者是一个零件上有两个或更多的相似对象。此时,即使将Accept属性设置为合适的值,也可能会搜索到匹配这个值的错误的对象。在这类应用中,很能预测到会发生什么问题。
我们创建了ShowAllResults对话框来帮您解决上述以及各种其他问题。
虽然您只想检测一个零件上的一个对象物特征,经过多测检测后,您可以找出为什么Vision Guide 8.0有时会搜索到其他并不想要得到的对象。通常为情况下,是由于以下原因造成的。

  • 搜索窗口内有两个或更多对象物非常相似,且有着很接近的Score结果分值。
  • 设置的Confusion或Accept属性值不够高,使得得分低于目标对象的错误对象的得分,也符合Accept属性设定的值。

如果您是Vision Guide 8.0的新用户,那么请注意,当在搜索窗口内搜索单个特征时,上述两种情况十分容易造成混淆。
如果遇到有时已查找到您正在搜索的对象,而有时却又查找到其他对象的情况,则请使用ShowAllResults对话框确认问题所在。以下是查找问题根源的方法:

(1)将NumberToFind属性设置为“3”或以上。
(2)在Vision Guide 8.0开发环境下运行视觉对象。
(3)点击[ShowAllResults]属性按钮调出[Show All Results]对话框。
(4)检查搜索到的前三个或更多对象的得分。
如果只查找到一个或两个对象(Vision Guide 8.0将只为这些认为已查找到的特征设置得分),为了查找更多对象,请降低Accept属性并再次运行视觉对象。(确认完ShowAllResults对话框后,可以将Accept调回正常设定值)
(6)点击[ShowAllResults]属性按钮,将显示ShowAllResults对话框。
(7)检查搜索到的前三个或更多对象的得分。

如上所述,确认了搜索到的前三个或更多的对象的得分之后,将揭晓问题的根源所在。一般情况下产生这些问题的原因如下:

  • 每个检测到的对象的得分都大于Accept属性中设置的值。如果是这种情况,请将Confusion属性的值调高,以确保检测出正确的对象,而不返回那些仅与Accept属性阈值一致的对象。当然也可以通过修改Accpet属性的值来改善这一问题。
  • 每个对象物的得分都非常相似。如果是这种情况,请按照以下步骤区分被检测对象。
    • 重新调整搜索窗口,确保作为被检测出对象而随机返回的对象物,不会出现在搜索窗口中。
    • 重新示教要检测对象的模型。
    • 调整周围的照明灯光,以确保要检测的对象的得分,可以高于错误检测对象的得分。
      关于使用多结果的更多详细信息,请参阅本章后续章节 6.2.24 使用来自单个对象的多个结果。

Correlation对象和旋转
在模块匹配过程中,如果检测对象和模型的大小或角度存在差异,则形状得分和定位精准度会降低。如果差异很大,形状得分将很低,或者搜索操作将无法查找到特征。
角度和调整大小的容差量因模型而异,但通常角度的范围在3o ~ 10o之间,而大小的范围在2 ~ 5%之间。
但也有例外情况,例如无关于角度的圆形点对称模型,或是无关于尺寸的仅由一条边和一个角组成的模型等。
在搜索窗口内设想两种不同的场景。
第一个场景是一张人脸的照片,鼻子被示教为模型。由于不认为鼻子是XY对称,所以,旋转将大大影响该检测对象的位置精度。第二个场景是一个电路板,上面的基准点(例如前文图示中的十字形)作为模型。由于基准点(十字形)是XY对称的,所以,旋转也不会对该检测对象的位置精度产生直接的影响。
基本上,细微特征明显的模型(如鼻子、花或者树的照片等)受旋转的影响较大。而对称的对象(如十字形)受旋转的影响较小。
但是,出于这种考虑,建议使用Polar对象确定旋转角度。Correlation对象可用于检测XY位置,Polar对象可与Correlation对象结合使用,这样就可将XY位置作为中心以查找对象角度。有关如何关联Polar对象和Correlation对象以及其他视觉对象的更多信息,请参阅本章的 6.2.6 Polar对象

如果预先知道会出现大角度旋转或是尺寸变化的情况下,有很多方法可以解决。以下介绍几个常用的方法。

  • 将复杂的对象分解为更小、更简单的对象。总的来说,与大型的复杂模型相比,小而简单的模型对比例和角度变化的敏感度要低很多。
  • 处理Correlation对象时,可使用角度相关的属性(AngleEnable、AngleRange和AngleMaxIncrement)来检测旋转角度。
    当不能将对象分解为简单对象时,这对定位复杂模型时很有用。但是,此功能是通过在不同角度的一系列模型来运行的,所以搜索过程会比常规搜索慢许多倍。

要点


在Correlation对象中使用角度检测功能时,在示教模型时,必须将AngleEnable属性设置为True。通过这种设置,则可以在AngleRange属性和AngleMaxIncrement属性定义的各种角度中,注册Correlation对象。

同时使用Polar对象和Correlation对象来确定零件的旋转角度。有关详细信息,请参阅本章的 Polar对象

示教模型用于角度搜索
要执行带有角度检测功能的搜索,需要先在系统中示教一系列的旋转模型。
首先,将AngleEnable属性设置为True,然后使用AngleRange属性指定将要进行示教的模型的角度范围。使用这种方式示教旋转的模型时,则会在指定范围内,自动创建一组等间隔的,具有不同角度的旋转模型。
并且,在角度范围内,还可以指定模型注册的最大角度增量。这可以通过设置Correlation对象的AngleMaxIncrement属性的增量值来实现。
但是,请记住有关AngleMaxIncrement属性的以下内容:

  • 指定最大的角度增量后,模型注册功能将选择自动角度增量,并在所选择的增量值和指定的最大角度增量中,自动选择那个较小的值并使用。
  • 如果将AngleMaxIncrement属性设置为0,模型示教功能将选择角度的自动增量并使用该角度增量。在这种情况下,系统通常将角度增量设置为2º ~ 5º之间。
    这导致最低的模型存储要求和最快的搜索次数,但也可能产生大致符合预期的效果。

如果要精确的测量角度,则需要将AngleMaxIncrement属性设置为与所需角度精度相对应的增量。
但需要注意的是,角度增量越小,模型所需的空间越大,搜索速度越慢。

要点


我们推荐尽可能采用Polar对象确定角度。Polar对象可以提供更可靠、更精确的结果,而使用机器人向导的视觉功能时需要这些结果。

当示教具有角度检测功能的模型时,搜索窗口必须足够大,以保证模型旋转时,模型的任何部分都不会突出到搜索窗口以外。

搜索重复性和精度
搜索重复性和准确度会受到,模型的尺寸、详细信息(形状、对象的粗糙度和形状的对称性)以及在搜索窗口中检测对象的变形(噪音、缺陷以及旋转和比例)的影响。
为测量不相关噪音对位置的影响,请在包含未变行的完整对象的特定搜索窗口内执行搜索,然后在不更改对象位置的情况下再次进行完全相同的搜索(在帧缓冲器中存储第二个图像),然后再对比已测量的位置。
请按照步骤设置:

1.模型校准后,多次点击执行面板上对象的[Run]按钮。
2.点击[Statistics]工具栏按钮。
3.然后可以使用Statistics对话框查看两个对象搜索在位置上的区别。

如果是无变形检测对象的大模型(30x30),则重复精度可达到1/20像素。然而,在大多数情况下,精度在1像素或以下 (1/2、1/3、1/4等)。
可通过对包含降级特征的定向搜索窗口进行搜索而测量搜索准确度,将对象移动一段确切的距离,然后对比已报告的位置差异和实际差异。
如果您的模型较大(30x30或更大),无降级、无旋转也无比例错误,且在X方向和Y方向上都有足够的边线,则搜索可精确到1/4像素。(记住:这个搜索精度只针对视觉系统,而不考虑所有机器人本身具有的误差。所以,当您实际运用在机器人上时,还需考虑机器人机构自身的误差。)
旋转和比例对搜索准确度的影响取决于模型:

  • 旋转对称的模型效果好。
  • 有很好特征但不对称的模型效果不好。

校准相机和被检测对象之间的距离
为了获得最佳的搜索结果,图像中对象在搜索时的尺寸应与示教模型时的尺寸相同。
假定使用相同的相机和镜头,在示教模型时和执行搜索时,如果被检测对象和相机的距离发生变化,则搜索窗口内的被检测对象也会呈现不同的外观尺寸。也就是说,相机与被检测对象离得越近,对象就显得越大;相机与被检测对象离得越远,对象就显得越小。

要点


所以,当被检测对象和相机之间的距离发生改变时,需要重新示教模型。

使用Correlation对象
到此您已经了解了归一化相关和搜索的工作原理,也就是已经获得了理解如何使用Vision Guide 8.0 Correlation对象的基础知识。
本节将介绍使用Correlation对象的每个步骤。

  • 新建一个Correlation对象
  • 设置搜索窗口的位置和尺寸
  • 设置模型窗口的位置和尺寸
  • 确定模型原点的位置
  • 配置与Correlation对象相关的属性
  • 示教模型
  • 测试Correlation对象并检查结果
  • 调整属性并再次测试
  • 处理单个Correlation对象的多种结果

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击[New Sequence]按钮来创建一个新的视觉序列。
如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。
有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅以下内容。
视觉序列

第1步:创建一个新的Correlation对象
(1)点击Vision Guide工具栏中的[All Tools] - [New Correlation]按钮。
(2)鼠标光标将变成Correlation图标。
(3)移动鼠标将Correlation拖至Vision Guide窗口的图像显示区域。点击鼠标左键将Correlation对象放置在图像显示区域上。
(4)对象名称将自动创建。本示例中创建的对象名为Corr01,因为它是在本序列中创建的第一个Correlation对象。(稍后将说明如何修改名称。)

第2步:设置搜索窗口的位置和大小
画面上会显示一个如下所示的Correlation对象:

新Correlation对象布局

(1)点击Correlation对象的名称标签(或在某一侧),按住鼠标左键,将Correlation对象拖至您想让搜索窗口的左上角所在的位置。
(2)点击搜索窗口的尺寸手柄,拖动鼠标,将Correlation对象搜索窗口调整成合适的大小。(搜索窗口就是要搜索的区域。)

注意


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

第3步:设置模型窗口的位置和大小
(1)正在运行中的Correlation对象搜索窗口会呈现洋红色,并且在四个角上和四条边的中央位置都会显示尺寸手柄。如果没有显示尺寸手柄,请点击Correlation对象名称字段。当运行中的Correlation的尺寸手柄均已显示,并窗口呈现洋红色时,则可继续步骤2的操作。
(2)点击模型窗口方框上的任一条边线。此操作会让模型窗口突出显示,并显示到模型窗口上的尺寸手柄。
(3)包围要在模型窗口中注册为Correlation对象模型的对象。点击模型窗口方框上的任一条边线,按住鼠标左键,将模型窗口拖动至您想让模型窗口的左上角所在的位置。
(4)点击尺寸手柄拖动鼠标,调整模型窗口的大小,确保其可以囊括被示教为Correlation对象的模型。

Correlation对象布局如下所示,搜索窗口是整个被检测区域,而模型窗口囊括了被搜索对象。实际的搜索窗口和模型窗口的形态可能会和下图显示的有所差异,此处的图像只是个大致的参考。

搜索窗口和模型窗口的位置和尺寸调整后的Correlation对象

要点


正确设置模型窗口的尺寸和位置的技巧:
模型窗口的尺寸和位置十分重要,因为它们定义了将要搜索的对象。创建Correlation对象的模型窗口时,请注意以下两点:

  • 搜索窗口既是被搜索的区域,窗口越小搜索的时间越短。特别是如果预先知道被搜索的零件会有较大的角度旋转,那么尽量缩小搜索窗口和模型(零件的一部分等),则可减少零件旋转造成的影响。
  • 使模型窗口的尺寸尽量接近搜索窗口的尺寸,以缩短搜索时间。

另外,如果两个零件位置相邻甚至相互接触时,将模型窗口设置的稍大于(几个像素)实际检测对象时,可以帮助区分目标对象和其他对象。
请注意,模型窗口的最佳尺寸取决于每个实际应用的具体情况。

第4步:确定模型原点的位置
模型原点定义了模型上的位置,当运行Correlation对象时,该位置将返回为被检测对象的位置。也就是说,当位置信息非常关键时,需要将模型原点设置在重要的位置。
例如,在使用Correlation对象检测零件,控制机器人取放零件应用时,机器人能否轻松的抓取零件,模型原点的位置是一个重要的因素。
因为这将是机器人根据RobotX, RobotY, RobotU, RobotXYU返回的结果所移动到的那个位置。
创建新的Correlation对象后,ModelOrgAutoCenter属性的默认设置为True。此时模型原点会自动被设置在模型窗口的中心,且无法手动移动。
若要以手动修改模型原点,须先将ModelOrgAutoCenter属性设置为False。该属性的设置方法和模型原点定位方法如下。

(1)点击Vision Guide窗口流程图中的Correlation对象。在对象窗口的属性列表中查找ModelOrgAutoCenter属性,并点击值字段。
(2)下拉列表会显示“True”和“False”两个选项。点击“False”选项。这样就可以将ModelOrgAutoCenter属性设置为False,也可以使用鼠标拖动模型原点。
(3)点击模型窗口以突出显示模型窗口。
(4)点击模型原点,按住鼠标左键,将模型原点拖至新位置。应注意的是,模型原点只能位于模型窗口范围内。

第5步:设置Correlation对象属性
设置Correlation对象属性。要设置属性,仅需点击相关属性值字段,然后再重新输入一个新的值。或者如果显示有下拉列表,则点击该列表中的相应选项即可。
以下是Correlation对象的一些常用属性。
测试Correlation对象时,不需要设置这些属性。但如果您是第一次使用Correlation对象,请参考以下说明。
其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。

  • Correlation对象属性列表
  • “Vision Guide 8.0 Properties and Results Reference”

注意


周围照明和外部设备噪音可能会影响视觉序列的图像和结果。当受到周围照明和外部设备噪音的影响,拍摄的图像可能会损坏,并且检测到的位置可能是对象搜索区域中的任何位置。正确配置Accept和RejectOnEdge等属性值,可降低错误检测的风险。

项目 说明
Name属性

新创建的Correlation对象中,默认的项目名称是“Corr**”。在一个视觉序列中要使用多个Correlation对象时,使用**的编号对Correlation进行区分。

默认情况下,会将在视觉序列序列中使用的第一个Correlation对象命名为“Corr01”。需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示Correlation对象名称的地方都会变为新的名称。

Accept属性

Accept属性用于设置形状分值的标准,被检测对象必须与其一致,或者符合其设定的标准时,才能被找到。

Score结果的返回值将与这个Accept属性的值进行对比。默认值为700,该默认值适合首次运行Correlation对象时使用。

Confusion属性 如果搜索窗口内有很多相似的特征,则可利用Confusion属性帮助您找到正确的搜索对象。默认值为800,该默认值适合首次运行Correlation对象时使用。
ModelOrgAutoCenter属性

如果您打算以手动方式改变模型原点的位置,您必须首先将ModelOrgAutoCenter属性设置为False。

默认:True

Frame属性 Frame属性可让您将先前定义的Frame对象选为Correlation对象的参考框。有关Frames的详细信息,请参考Frame对象中的说明。
NumberToFind属性 根据想要查找的对象的数目,您可能想将NumberToFind属性设置为大于1的数字。这将使一个Correlation对象在一个搜索窗口内查找到多个特征。
AngleEnable属性 如果您打算利用Correlation模型进行角度搜索,就将此项属性设置为True。若要对多个模型进行角度搜索,则在示教Correlation对象的模型之前将这条属性设置为True。
AngleMaxIncrement、AngleRange属性 这两个属性可以与AngleEnable属性使用,可以使相关模型开启角度搜索功能。
RejectOnEdge属性 利用这条属性,可以将与搜索窗口边界有接触的那些零件排除在外。通常而言,这条属性宜设置为True。

可以将属性保持为默认属性,并进行下一步。稍后再根据需要修改这些属性。

第6步:注册Correlation对象的模型
Correlation对象执行搜索功能,需要一个模型,这通过被称为示教模型的步骤来实现。在这个步骤中,Correlation对象的模型窗口应该已经被放置在可囊括模型对象的位置。通过以下步骤完成模型示教。
(1)确保Correlation对象是否为当前显示的对象。查看流程图或序列目录树,确认当前正在处理的对象。或者,检查图像显示区域,查看正以洋红色突出显示的对象。
(2)点击执行面板上的[Teach]按钮。完成模型示教。多数情况下,示教模型仅需几秒钟。但如果在AngleEnable属性设置为True时示教某个模型,由于要示教多个角度的模型,则会需要较长时间方能完成。

第7步:测试Correlation对象并检查结果
要运行Correlation对象,点击执行面板上对象的[Run]按钮。
然后将显示Correlation对象的结果。这时需检查的主要结果有:

项目 说明
Found结果

返回是否检测到了Correlation对象。

如果找到目标对象,则返回的结果为“True”。如果未找到目标对象,Found的结果将返回“False”,且以红色突出显示。如果找不到Correlation对象,请参考第8步了解常见原因。

FoundOnEdge结果

如果找到的对象物的一部分与搜索窗口的边界接触,则这个结果返回为“True”。

在这种情况下,Found结果返回为“False”。

Score结果

这个结果显示与模型最为相似的那个特征与模型匹配的程度。

Score结果的范围为0至1000,1000表示模型和被检测对象完全一致。当要确认被检测出的对象与希望检测出的对象的相似程度时,请先确认运行Correlation对象之后的Score结果。

Time结果

返回Correlation对象执行所需时间。

搜索窗口和模型窗口越小,搜索速度就越快。

NumberFound结果 在搜索多个Correlation对象时,NumberFound结果会返回与Correlation对象的模型相匹配的对象物的数量。
Angle结果

Correlation对象的倾斜角度。

这个角度是依据模型的原始角度计算的。但有时只是个粗略值,可能并不可靠。建议使用Polar对象来确定旋转角度。特别是使用机器人向导时,请使用Polar对象。

PixelX结果

PixelY结果

返回对象的XY坐标值(像素坐标系)。

这个位置是被检测出对象的模型原点的位置。如果要返回其他位置,则需修改模型原点位置,并重新示教模型。

CameraX结果

CameraY结果

在相机坐标系中定义检测对象的XY坐标值。

如果相机尚未完成校准则不会返回任何值,而是返回[No Cal]。

RobotX结果

RobotY结果

在机器人坐标系中定义被检测对象的XY坐标值。

可用于命令机器人移动至这个XY坐标位置。(不需要进行其它转换或处理。)

这个值是被检测出对象的模型原点的位置。如果您想返回一个不同的位置,您必须首先重新确定模型原点的位置,然后重新示教该模型。如果相机未进行校准则不会返回任何值,而是返回[No Cal]。

RobotU结果

返回被检测出对象的角度,该角度是转换成机器人坐标系后的值。

如果相机尚未完成校准,则不会返回任何值,而是返回[No Cal]

ShowAllResults 当处理多个结果时,点击ShowAllResults设置值字段中的按钮,则会显示ShowAllResults对话框,可以查看当前视觉对象的所有结果。

要点


由于上述示例各步骤中没有包括进行校准的步骤,所以RobotXYU、RobotX、RobotY、RobotU和CameraX、CameraY、CameraXYU的结果会返回“No Cal”。这意味着由于未进行校准,视觉系统将无法计算相对于机器人坐标系或相机坐标系的坐标结果。有关详细信息,请参阅 5.5 改变序列顺序。

视觉校准

第8步:调整属性并再次测试
在Geometric对象运行若干次之后,您可能会在查找某个Correlation对象时遇到困难,或者您还想微调某些属性设置。
下面将介绍一些常见问题的故障排除方法和微调整技巧。

Correlation对象故障排除
当Correlation对象返回的Found结果为False时

  • 返回的Score结果是否低于Accept属性设置。如果Score结果更低,请降低Accept属性的设置值(例如低于当前Score结果的值),并再次运行Correlation对象。
  • 确认FoundOnEdge结果的返回值是否为True。如果Found结果为“False”,FoundOnEdge结果为“True”,表示已经查找到对象,但其中有一些对象与搜索窗口边缘有接触。此时,请将搜索窗口调大,使其能适应被搜索对象的大小。如果搜索窗口的大小无法调整,请尝试更改相机位置,或调整模型窗口的大小。

当Correlation对象检测出错误的对象时

  • 检查Accept属性是否设置得足够高。如果Accept属性设置得很低,则有可能会检测出搜索对象以外的其他对象。
  • 请确认Confusion属性是否设置得足够高。Confusion属性值必须大于或等于Accept属性值。如果搜索窗口内有与被搜索对象非常相似的对象时,则必须将Confusion属性值调为更高的值,以避免检测出错误的识别对象。
  • 调整搜索窗口,使它靠近被检测对象,并精准的将其单独隔离出来。

Correlation对象微调
通常需要进行Correlation对象的微调,以确保对象能正常动作。
以下是与Correlation对象微调和模型添加相关的主要属性说明:

项目 说明
Accept属性 Accept属性的值越低,Geometric对象的运行速度就越快。但是Accept过低时,可能会造成被检测出的对象,不是想要查找的对象。可以尝试多运行几次Geometric对象,一旦Score结果返回的形状分值符合预期结果时,调整Accept属性的值。为了以最佳执行速度并得到可靠的结果,通常需要若干次尝试运行才能找到一个合适的值。
Confusion属性 如果搜索窗口中有与被搜索对象非常相似的对象时,则需要将Confusion属性设置得相对高一些。这将区分那些有相似特征的对象,正确的检测出目标对象。但是,Confusion属性值设置的过高时,会降低运行速度。如果搜索窗口没有类似的对象物时,可降低Confusion属性的设定值,以缩短执行时间。
Add another sample 当进行示教的模型窗口与当前模型的尺寸一致时,可以选择“Add another sample”。当模型具有轻微变化(形状或图案略微不同,阴影表现不同)时,选择已更改的模型来添加新模型可能会稳定对象执行的得分。如果角度位置大幅度偏移,或者因差异较大而无法添加模型,原始模型将保持不变

当完成调整,并测试Correlation对象得到满意的结果后,创建视觉对象的步骤就完成了。
下一步是继续创建其他视觉对象或者配置并测试整个视觉系列

Correlation对象的其他实用工具
Vision Guide 8.0中有一个非常实用的Histogram功能,
该功能可以在搜索窗口中直观的显示灰度值的分布情况。关于Vision Guide直方图功能的详细信息,请参考 8.1 利用直方图。
概述

还可以使用Vision Guide统计功能检查Correlation对象的统计结果。
有关Vision Guide统计功能的详细信息,请参阅9.使用Vision Guide统计。
使用 Vision Guide 统计

Blob对象

Blob对象描述
Blob对象是利用二进制检查的工具,来计算图像的几何、拓扑和其他特征。
Blob在确认图片中是否有被检测对象、尺寸和方向上很有用。例如,Blob对象可用于探测硅片上的墨点的存在、尺寸和位置,以确定零件的方向或甚至用于机器人向导(但是在确认旋转方向时,建议您使用Polar对象)。
Blob对象计算的一些几何学特征:

  • 面积和周长
  • 重心
  • 主轴和力矩
  • 连通性
  • 边界矩形
  • 像素坐标系、相机坐标系、机器人坐标系中重心的坐标位置
  • 二进制对象的孔洞数目、粗糙度和密实度

Blob对象布局
Blob对象布局与Correlation对象一样是一个矩形。但是,Blob对象没有模型。这意味着Blob对象不需要模型窗口和模型原点。如下图所示,Blob对象仅有一个对象名称和一个搜索窗口。搜索窗口定义了要搜索Blob对象的区域。Blob对象布局如下所示:

Blob对象属性
以下列表是对Blob对象的属性进行的简单说明。关于各属性的详细信息,请参阅Vision Guide 8.0 Properties and Results Reference Manual。

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

CalRobotPlacePos 在设计和程序运行时校准RobotPlacePos。
Caption

为Blob对象指定标题。

默认:Empty String

CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

默认:Screen

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则Blob对象将应用于指定视觉对象的所有结果(NumberFound)

默认:1

CenterPntOffsetX

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。

默认:0

CenterPntOffsetY

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。

默认:0

CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

如果将SearchWinType设置为RotatedRectangle,搜索窗口则以Angle结果为基础进行旋转。

默认:False

CheckClearanceFor 设定确认间隙的对象。
ClearanceCondition 设定间隙的判断方法。
CoordObject

指定复制结果的Coordinates对象。执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。

默认:None

CurrentResult

可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。

默认:1

Description

设定用户指定的描述。

默认:空白

EditWindow 定义被检测区域的不要紧的像素
Enabled

指定是否执行对象。

默认:True

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

FillHoles

指定是否填充二进制图像的孔洞。

默认:False

Frame

指定要使用哪个位置的定位框。

默认:None

FrameResult

指定需使用Frame的第几个结果。

默认:1

Graphics 设置显示的图表模式。
LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

MaxArea

确定Blob对象的Area上限。

被检测到的缺陷对象返回的Area结果,必须小于MaxArea属性的设置值。

默认:100,000

MinArea

确定Blob对象的Area下限。

被检测到的缺陷对象返回的Area结果,必须大于MinArea属性的设置值。

默认:25

MinMaxArea 仅限运行时间。用一条语句设置或返回MinArea和MaxArea。
Name

用于为Blob对象分配一个唯一的名称。

默认:Blob01

NumberToFind

规定了在搜索窗口中要查找的Blob对象的数目。

默认:1

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

Polarity

可定义被检测对象和背景色的差异(在浅色背景下检测深色对象(DarkOnLight),或在深色背景下检测浅色对象(LightOnDark))。

默认:1 - DarkOnLight

RejectOnEdge

通常情况下设置为True,排除那些与搜索窗口边缘有接触的零件。

默认:False

SearchWin

仅限运行时间。

在一次调用中设置或返回搜索窗口左侧参数、顶部参数、高度参数和宽度参数,或中心X坐标、中心Y坐标、圆内周长的半径大小、圆外周长的半径大小。

SearchWinAngle 定义待搜索区域的角度。
SearchWinAngleEnd 定义待搜索区域的结束角度。
SearchWinAngleStart 定义待搜索区域的开始角度。
SearchWinCenterX 定义待搜索区域中心的X轴坐标值
SearchWinCenterY 定义待搜索区域中心的Y轴坐标值
SearchWinHeight

定义待搜索区域的高度(单位:pixel)。

默认:100

SearchWinLeft 定义待搜索区域的最左边位置(单位:pixel)。
SearchWinPolygonPointX1 当SearchWinType设置为“Polygon”时,定义被检测区域的第1个顶点的X坐标值
SearchWinPolygonPointY1 当SearchWinType设置为“Polygon”时,定义被检测区域的第1个顶点的Y坐标值
SearchWinPolygonPointX2 当SearchWinType设置为“Polygon”时,定义被检测区域的第2个顶点的X坐标值
SearchWinPolygonPointY2 当SearchWinType设置为“Polygon”时,定义被检测区域的第2个顶点的Y坐标值
SearchWinPolygonPointX3 当SearchWinType设置为“Polygon”时,定义被检测区域的第3个顶点的X坐标值
SearchWinPolygonPointY3 当SearchWinType设置为“Polygon”时,定义被检测区域的第3个顶点的Y坐标值
SearchWinPolygonPointX4 当SearchWinType设置为“Polygon”时,定义被检测区域的第4个顶点的X坐标值
SearchWinPolygonPointY4 当SearchWinType设置为“Polygon”时,定义被检测区域的第4个顶点的Y坐标值
SearchWinPolygonPointX5 当SearchWinType设置为“Polygon”时,定义被检测区域的第5个顶点的X坐标值
SearchWinPolygonPointY5 当SearchWinType设置为“Polygon”时,定义被检测区域的第5个顶点的Y坐标值
SearchWinPolygonPointX6 当SearchWinType设置为“Polygon”时,定义被检测区域的第6个顶点的X坐标值
SearchWinPolygonPointY6 当SearchWinType设置为“Polygon”时,定义被检测区域的第6个顶点的Y坐标值
SearchWinPolygonPointX7 当SearchWinType设置为“Polygon”时,定义被检测区域的第7个顶点的X坐标值
SearchWinPolygonPointY7 当SearchWinType设置为“Polygon”时,定义被检测区域的第7个顶点的Y坐标值
SearchWinPolygonPointX8 当SearchWinType设置为“Polygon”时,定义被检测区域的第8个顶点的X坐标值
SearchWinPolygonPointY8 当SearchWinType设置为“Polygon”时,定义被检测区域的第8个顶点的Y坐标值
SearchWinPolygonPointX9 当SearchWinType设置为“Polygon”时,定义被检测区域的第9个顶点的X坐标值
SearchWinPolygonPointY9 当SearchWinType设置为“Polygon”时,定义被检测区域的第9个顶点的Y坐标值
SearchWinPolygonPointX10 当SearchWinType设置为“Polygon”时,定义被检测区域的第10个顶点的X坐标值
SearchWinPolygonPointY10 当SearchWinType设置为“Polygon”时,定义被检测区域的第10个顶点的Y坐标值
SearchWinPolygonPointX11 当SearchWinType设置为“Polygon”时,定义被检测区域的第11个顶点的X坐标值
SearchWinPolygonPointY11 当SearchWinType设置为“Polygon”时,定义被检测区域的第11个顶点的Y坐标值
SearchWinPolygonPointX12 当SearchWinType设置为“Polygon”时,定义被检测区域的第12个顶点的X坐标值
SearchWinPolygonPointY12 当SearchWinType设置为“Polygon”时,定义被检测区域的第12个顶点的Y坐标值
SearchWinRadiusInner 定义待搜索区域的圆弧内径。
SearchWinRadiusOuter 定义待搜索区域的圆弧外径。
SearchWinTop 定义待搜索区域的最上边位置(单位:pixel)。
SearchWinType 定义待搜索区域的类型(Rectangle, RotatedRectangle, Circle, Arc, Polygon)。
SearchWinWidth

定义待搜索区域的宽度(单位:Pixel)。

默认:100

SizeToFind

选择要查找的Blob的尺寸。

默认:1 - Largest

Sort

选择对象结果的排序方式。

默认:0 - None

ThresholdAuto

可定义是否自动设置被检测对象、背景、图像的边缘灰度的阈值

默认:禁用

ThresholdBlockSize

定义了相邻区域的参考范围,以决定当ThresholdMethod属性设定为LocalAdaptive时的阈值。

默认:1/16ROI

ThresholdColor

定义阈值范围内像素的颜色。

默认:Black

ThresholdHigh

同ThresholdLow属性一起使用,用于定义被检测对象 (或对象)、背景和图像边缘的灰度范围。

ThresholdHigh属性用于定义图像的被检测对象区域的灰度范围的上限。

在ThresholdLow和ThresholdHigh定义的灰度范围内的图像的任何部分的像素权重都会分配为1。(即检测对象的一部分。)

如果ThresholdAuto属性为“True”,且ThresholdColor属性为“White”,该属性值将被设为255且无法更改。

默认:128

ThresholdLevel

定义了当ThresholdMethod属性设定为LocalAdaptive时,与相邻区域的亮度差异的比率。

默认:15%

ThresholdLow

同ThresholdHigh属性一起使用,用于确定表示特征(或对象)、背景和图像边缘的像素灰度区域。

区域ThresholdLow用于定义图像的被检测对象区域的灰度范围的下限。

在ThresholdLow和ThresholdHigh定义的灰度范围内的图像的任何部分的像素权重都会分配为1。(即检测对象的一部分。)

如果ThresholdAuto属性为“True”,且ThresholdColor属性为“Black”,该属性值将被设为0且无法更改。

默认:0

ThresholdMethod 设置二值化处理的方法。

Blob对象结果
以下列表是对Blob对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Angle 返回被检测出零件的旋转量,用度数表示。
Area 返回二进制对象的面积,用像素表示。
CameraX 返回相机坐标系中已找到的零件位置的X坐标位置。
CameraY 返回相机坐标系中已找到的零件位置的Y坐标位置。
CameraXYU

仅限运行时间。

返回相机坐标系中已检测到零件位置的CameraX、CameraY和CameraU坐标。

ClearanceOK 返回间隙的判断结果。
Compactness 返回二进制对象的密实度。
Extrema

仅限运行时间。

返回二进制对象极值的MinX、MaxX、MinY和MaxY像素坐标。

Found

返回是否检测到了对象。

(即是否查找到了Area结果介于MinArea和MaxArea属性之间的连贯的Blob。)

FoundOnEdge 当发现Blob对象与搜索窗口边缘距离太近时,则返回“True”。
Holes 返回二进制对象中已查找到的孔洞数目。
MajorDiameter 当检测到的二进制对象近似椭圆时,返回长直径。
MaxFeretDiameter 返回检测到的缺陷的最大费雷特直径。
MaxX 返回二进制对象极值的最大X像素坐标,用像素表示。
MaxY 返回二进制对象极值的最大Y像素坐标,用像素表示。
MinorDiameter 当检测到的二进制对象近似椭圆时,返回短直径。
MinX 返回二进制对象极值的最小X像素坐标,用像素表示。
MinY 返回二进制对象极值的最小Y像素坐标,用像素表示。
NumberFound

返回在搜索窗口内检测到的二进制对象数目

(最少是0个,最多是NumberToFind属性中设定的Blob对象检测到的二进制数量)。

Passed 返回测试结果合格与否。
Perimeter 沿已查找到的二进制对象外部边缘的像素数目。
PixelX 返回已找到的零件位置的X坐标,用像素表示。
PixelY 返回已找到的零件位置的Y坐标,用像素表示。
PixelXYU

仅限运行时间。

返回已找到的零件位置的PixelX、PixelY和PixelU坐标(以像素为单位)。

RobotX 返回机器人坐标系中检测到的对象的X坐标位置。
RobotY 返回机器人坐标系中检测到的对象的Y坐标位置。
RobotU 返回在机器人坐标系内已找到的零件位置的U坐标位置。
RobotXYU

仅限运行时间。

返回在机器人坐标系中已找到的零件位置的RobotX、RobotY和RobotU坐标。

Roughness 返回缺陷的粗糙度。
ShowAllResults

以表格形式在对话框中显示指定视觉对象的所有结果。

比较结果将更加容易。

Time 返回处理对象所需要的时间(单位:毫秒)。
TotalArea 返回所有已查找到的结果的总面积。

Blob检查的工作原理
Blob检查过程包括以下步骤:

  1. 分割,由以下组成:
    • 阈值
    • 连通性分析
  2. Blob结果计算过程

分割
在Blob检查中,要检测对象的特征,必须先判断出来对象处于图像的哪个位置,也就是要将对象从图像中的其他区域区分开来。这个将图像中的检测对象与其他背景区分出来的过程,则被称为分割。
Blob可根据每个像素的灰度值用于可以分割的图像。阈值化就是这种分割最简单的一个例子。
本章内容中所阐述的Blob对象,对于那些无法通过灰度值区分的,任何类型的灰度图像都可以提供准确的检测结果。但是这种情况下,这类型图像的使用价值也是有限的。检测的结果会受到定义图像的搜索窗口的尺寸所影响。

在对整个图像进行Blob检查时,被检测对象的特征,必须是图像中具有特定的灰度级的唯一对象。如果图像中的另一个对象有相同的灰度值,图像分割将失败。图A至图D说明在整个图像的Blob检查中,哪些可以用灰度值进行分割,哪些不可以用灰度值进行分割。


图A:可以用灰度值进行分割的场景

A所示为相机的视野(左边)。将要使用Blob对象进行处理的场景,将显示在名为“Blob01”的搜索窗口中。使用灰度值完成分割后,可以清楚地区分对象和背景,如图A的右边所示。


图B:扩大搜索窗口查看图A的场景

如图B所示调整搜索窗口的尺寸时,只有背景的大小发生了变化。对Blob对象的特征没有影响。
图C和图D所示为相似的图像视野。但是,在此场景中,图像中有两个相同灰度值的对象。
这种情况下,背景区域和Blob检测特征,两者都会受到搜索窗口尺寸的大小,和被搜索窗口囊括的图像部分的影响。即使可以用灰度值对图C中的图像进行分割,但像图D中那样放大搜索窗口后,被分割的图像也将完全不同。如果不从搜索窗口冲删除一个对象,则无法将具有相同灰度值的对象区分开来。


图C:不可以用灰度值进行分割的场景


图D:扩大的搜索窗口中有两个具有相同灰度值的对象

请注意图E中所示的情况。在这个例子中,内部的二进制对象和部分背景相连。所以本来要分割的是中间部分的二进制对象,但却变成完全不同的大型二进制对象。


图E:对象和背景连接在一起

阈值
Blob对象用阈值确定图像中每个像素的权重。
用户定义的阈值有ThresholdLow和ThresholdHigh两个。灰度值介于两个阈值之间的像素的像素权重为“1”,其他所有的像素权重为“0”。
ThresholdColor属性定义权重为“1”的像素的颜色。这是阈值内的颜色(黑色或白色)。
根据这些像素的权重,Blob对象将图像分为对象(权重为“1”的像素)和背景(权重为“0”的像素)。Polarity属性用于配置Blob对象,以查找包含黑像素或白像素的二进制对象。Polarity为“DarkOnLight”时,将会检测包含黑色像素的二进制对象。Polarity为“LightOnDark”时,将会检测包含白色像素的二进制对象。

采用直方图确定阈值
通过使用Vision Guide 8.0直方图工具,用户可以确定用于ThresholdLow和ThresholdHigh的值。
例如,想象在白色背景上有理想的黑色二进制对象的二进制图像。下图为此类图像及其直方图。


理想二进制图像及其直方图

请注意该直方图中仅有两个灰度值为非零值:二进制对象的灰度值和背景的灰度值。

在实际的图像中,永远也不会得到这样的直方图。受到各种噪音的影响(例如不均匀的印刷、不规则的照明设备和电气噪音)峰值会降低。下图所示为更真实的直方图。

使用直方图设置阈值
在上图所示的直方图中,每个峰值都很明显。峰面积与先前的理想直方图的峰面积比例相同,但是此时的峰值在人字形中更加分散,并且有两个或以上的灰度值。
两个主要的峰值之间的山谷部分的灰度值,代表了二进制对象的边缘,并不是完全的深色或浅色。
请调整Threshold值,使二进制对象的权重为“1”的像素。

连通性(已连接二进制对象分析)
连通性可以定义为以有非零权重的连贯像素为基础的分析。简单地说,连通性用于查找一组成为二进制对象的已连接像素。
Blob对象在进行连通的地方自动进行连通,然后在计算已查找到的二进制对象的测量值。根据运行Blob对象前设置的NumberToFind属性,Blob对象的连通性返回已查找到的Blob对象的数目。

Blob结果计算
一旦完成二进制对象分析的所有其他步骤,就可以计算已查找到的二进制对象的结果。本节先前介绍的 Blob对象结果 章节的内容为返回的Blob对象的所有结果列表。
有关视觉对象所有结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

Vision Guide 8.0 Properties and Results Reference Manual 中介绍的一些结果应用于许多不同的视觉对象,如Found、Time或PixelX结果。Found和Time结果为极通用的结果,一般情况下可应用于所有视觉对象,但是一些结果,如位置相关的结果,应用于Blob对象时有特别的意义。这些结果描述如下:
MinX、MinY、MaxX、MaxY结果
把MinX、MinY、MaxX和MaxY的结果结合在一起,会形成一个二进制对象的边界矩形。边界矩形是指,能囊括二进制对象的最小的长方形。请参考下图帮助您理解边界矩形的概念。


主轴、重心和极值

在机器人坐标系、相机坐标系和像素坐标系中的位置数据
坐标位置的结果,返回的是中心的位置。当请注意,重心不一定是零件的中心位置。
所以在抓取零件时,如果使用重心参数,可能会无法正常抓取。当从Blob属性获取RobotX、RobotY和RobotU坐标位置的结果,然后将其作为零件抓取的参数时,请确认能否通过重心位置正常抓取。
如果不想将重心作为抓取零件的参数,可以计算偏移量,或使用Correlation对象等其他视觉对象,来检测零件并更加准确的返回抓取位置。

TotalArea结果
TotalArea结果是所有已查找到的结果的面积总和。可以用于计算像素。将NumberToFind设置为0,Blob对象将查找到面积介于MinArea和MaxArea之间的所有二进制对象。然后TotalArea将显示所有结果的总面积。

Blob对象的Angle结果限制
请注意Blob对象的Angle结果范围有限。
Blob对象的Angle结果返回的角度值在+90°至-90°范围内。Blob对象不能返回整个360º的范围的角度结果。

要点


Blob对象返回的Angle结果并不始终都是可靠的,所以在使用机器人时要注意。因为Blob对象的Angle结果的范围有限,所以在某些情况下不可靠。

建议使用Polar对象来代替Blob对象来计算零件的角度方向。

Polar对象可使用从Blob对象中查找到的X、Y位置作为重心,然后根据Blob对象重心来计算角度。6.2.6 Polar对象 章节详细介绍了这些内容。

使用Blob对象
综上,我们已经了解了二进制对象分析的工作原理,为理解如何使用Vision Guide 8.0 Blob对象打下了基础。这节将说明如何使用Blob对象。
使用Blob对象的所需步骤如下:

  • 创建一个新的Blob对象
  • 设置搜索窗口的位置和尺寸
  • 设置Blob对象的相关属性
  • 测试Blob对象并检查结果
  • 调整属性并再次测试

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击 [New Sequence]按钮来创建一个新的视觉序列。
如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。
有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅 5.视觉序列。
视觉序列

第1步:创建一个新的Blob对象
(1)点击Vision Guide工具栏中的[All Tools] - [New Blob]按钮。
(2)将鼠标移动至图像显示区域。鼠标指针将变为Blob图标。
(3)继续移动鼠标,直至图标位于图像显示屏中的目标位置。然后再点击鼠标左键,创建对象。
(4)对象名称将自动创建。本示例中创建的对象名为“Blob01”,因为它是在本序列中创建的第一个Blob对象。(稍后将说明如何修改名称。)

第2步:设置搜索窗口的位置和大小
屏幕上将显示一个Blob对象,如下所示。

新Blob对象布局

(1)点击Blob对象的名称标签,然后保持按下鼠标的同时拖动Blob对象,以将搜索窗口的左上角与所需位置对齐。
(2)点击尺寸手柄并拖动鼠标,更改Blob对象搜索窗口的大小,并将其调整为适当尺寸。(搜索窗口就是进行Blob搜索的区域。)

注意


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

第3步:设置Blob对象属性
现在设置Blob对象的属性值。以下显示的是一些Blob对象特定的属性,也是更常用的属性。
其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。

  • “Vision Guide 8.0 Properties and Results Reference”
  • Blob对象属性列表

要点


周围照明和外部设备噪音可能会影响视觉序列的图像和结果。当受到周围照明和外部设备噪音的影响,拍摄的图像可能会损坏,并且检测到的位置可能是对象搜索区域中的任何位置。正确配置MaxArea、MinArea、RejectOnEdge等属性值,可降低错误检测的风险。

项目 说明
Name属性

新创建的Blob对象中,默认的项目名称是“Blob**”。在一个视觉序列中要使用多个Blob对象时,使用**的编号对Blob进行区分。

默认情况下,会将在视觉序列序列中使用的第一个Blob对象命名为“Blob01”。

需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示Blob对象名称的地方都会变为新的名称。

Polarity属性

有时会需要从浅色背景上检测深色对象(DarkOnLight),有时会需要从深色背景上检测浅色对象(LightOnDark)。Polarity属性的基本目的就是做出这个选择。

默认设置为“DarkOnLight”(深色对象在浅色背景上)。

如果要更改此默认设置,请点击Polarity属性的值字段。将出现一个下拉列表,包含“Dark on Light”和“Light on Dark”两个选项。单击您要选择的项目。

MinArea、MaxArea

定义Blob对象被视为“Found”面积(Found结果值为“True”)。

默认范围很大,为25~100,000(MinArea~MaxArea)。这意味着,在不调整MinArea和MaxArea属性的情况下,运行新建的Blob对象时,绝大部分Blob对象将被找到。通常,可以修改这些属性,使要查找到的二进制对象的显示范围合理。这样的话,在范围外检测到任何二进制对象,也可以确定它并不是目标对象的blob。

RejectOnEdge属性 利用这条属性,可以将与搜索窗口边界有接触的那些零件排除在外。通常而言,这条属性宜设置为True。

现在您可以测试Blob对象,测试后,我们将再次设置其他必须的属性。

第4步:测试Blob对象并检查结果
要测试Blob对象,点击执行面板中该对象的[Run]按钮。然后将显示Blob对象的结果。这时需检查的主要结果如下。当然,将来还会有其它有用的结果。

项目 说明
Found结果

回复是否查找到了二进制对象。

如果查找到的二进制对象不符合MinArea和MaxArea属性中确定的面积限制,Found的结果将返回“False”。

Area结果 已查找到的二进制对象的面积(以像素为单位)。
Angle结果

Blob的方向角度。

该角度根据短轴计算而得出,且介于 +/- 90度之间。

Time结果 返回Blob对象执行所需时间。
PixelX、 PixelY 已查找到二进制对象重心的XY坐标位置(以像素为单位)。
MinX、MinY、 MaxX、MaxY 这四个值定义了二进制对象的边界矩形(Extrema)。(即与二进制对象接触的外接点形成的四边形)

要点


此时,RobotXYU、RobotX、RobotY、RobotU结果以及CameraX、CameraY、CameraXYU结果将返回“no cal”。这就意味着无法进行校准,因此也无法计算机器人坐标系或相机坐标系相关的坐标结果。想了解更多信息,请参考 视觉校准。

第5步:调整属性并再次测试
Blob对象运行几次后,您可能会遇到一些二进制对象检测时的问题,或是需要对一些属性设定进行微调整。以下是一些常见问题以及微调整的方法。
问题:如果Blob对象返回的Found结果为False,请检查并调整以下事项。

  • Polarity属性值可能与实际图像不符(该属性有两种设定,即浅色背景上检测深色对象(DarkOnLight),和深色背景上检测浅色对象(LightOnDark))。确认Polarity属性值,务必确保与要检测的对象及其背景的深浅一致。此外,搜索窗口内显示的对象及其背景的深浅必须匹配。
  • 查看Area结果,并将该值与MinArea和MaxArea属性中定义的值进行比较。如果Area结果不在MinArea和MaxArea属性定义的范围内,请调整这些属性并再次运行Blob对象。
  • 采用直方图检查图像中灰度值的分布。直方图工具很适合用来设定ThresholdHigh属性和ThresholdLow属性。有关直方图的详细资讯,请参阅8. 直方图工具中。
    直方图工具
    微调整:某些应用中可能需要微调Blob对象。下面介绍Blob对象微调整的主要属性。
  • MinArea和MaxArea。运行几次Blob对象后,可以得出Area结果中返回的近似值。如需更改MinArea和MaxArea属性的值时,请使用这些近似值。一般情况下,建议将MinArea和MaxArea属性设置成Found结果的限制值。这样,可以仅返回您要查找的二进制对象,且Found结果将为“True”。(通过这种设置,可以排除面积与被检测对象不同的Blob对象。)
  • ThresholdHigh和ThresholdLow。这些属性用于调整背景与二进制对象零件区分的灰度阈值设置参数。最好使用直方图工具设置这些属性。请参阅以下内容。
    “Vision Guide 8.0 Properties and Results Reference - ThresholdHigh Property, ThresholdLow Property”
    直方图的详细资讯,请参阅8. 直方图工具。
    直方图工具

完成属性调整测试Blob对象,并得到满意的结果后,创建视觉对象的步骤就完成了。
您可以继续创建其他视觉对象,或设置并测试整个视觉序列。

Blob对象的其他实用工具
Vision Guide工具栏中有一个非常实用的Histogram功能,点击[Histogram]按钮,即可在搜索窗口中直观的显示灰度值的分布情况。使用Vision Guide直方图功能,可以设置ThresholdLow和ThresholdHigh属性的灰度值,这两个属性定义了二进制对象的组成部分和背景的组成部分。如果在查找二进制对象时遇到问题,Histogram功能会非常有用。关于Vision Guide直方图用途的详细信息,请参阅 8.1 利用直方图。
概述

当您统计确认Blob对象的结果时,可以使用[Statistics]选项的功能。有关Vision Guide统计功能的详细信息,请参阅9.使用Vision Guide统计。
使用 Vision Guide 统计

将Blob对象用作像素计数器
Blob对象可用作像素计数器。像素计算器对图像中二进制对象阈值范围内的,所有像素进行计数。
请按照以下步骤操作。
(1)创建Blob对象。
(2)设置极性。
(3)设置上限阈值和下限阈值。
(4)将NumberToFind设为“0”。这将使Blob对象查找到图像中的所有二进制对象。
(5)将MinArea设置为“1”,MaxArea设置为“999999”。将计算大于等于1像素的二进制对象。
(6)运行序列。
使用TotalArea结果,读取Blob阙值内的像素总和。

Edge对象

Edge对象描述
Edge对象用于定位图像的边缘。
图像中的对象边缘由灰度值“从深到浅”或“从浅到深”表示。可以从多个像素上观察到这种变化。
Edge对象找到“Polarity”属性定义的明暗变化(“从浅到深”或“从深到浅”),然后将检测出的位置定义为单边缘的边缘位置。也可以更改EdgeType属性以搜索双边缘。设置为双边缘时,则会搜索两个相对的边,并返回中间点作为结果。Edge对象支持多个结果,因此您可以指定希望找到的单边缘或双边缘的数量。
可以使用SearchType属性设置Edge对象,是沿直线或弧线进行搜索。
SearchType为Line的Edge对象,具有搜索长度,在形状上与Line对象相似。搜索长度即为Edge对象的长度。SearchType为Line的Edge对象的最强大的功能之一,是可以将它们放置在任何角度。该功能可通过改变Edge对象的角度,使Edge对象矢量垂直于要检测边缘的区域。通常可以通过将Edge对象与Frame(和被检测区域同步移动的)关联来实现。

Edge对象布局
Edge对象具有两种布局。

  • SearchType为Line时的布局
    当SearchType为Line时,Edge对象的搜索窗口即为Edge对象上的直线。Edge对象沿着这条线,朝着方向指向器指示的方向,搜索明暗变化(由浅到深或者由深到浅)。

    Edge对象直线布局

    符号 说明
    a 序列中的步骤号
    b 对象名称
    c 尺寸和方向手柄
    d 方向指示器(搜索方向)

    Edge对象可以放在任何方向(不仅仅是垂直或水平方向)进行搜索。您可以使用Edge对象的尺寸和方向手柄,在找到所需边缘的方向(以及用户指定的间隔)上,移动Edge对象的一端来实现。如需移动整个对象,请拖拽标签或直线。

  • SearchType为Arc时的布局
    当SearchType为Arc时,Edge对象的搜索窗口即为Edge对象搜索的弧线。Edge对象沿着弧线,朝着方向指向器指示的方向,搜索明暗变化(由浅到深或者由深到浅)。

    Edge对象弧布局

    符号 说明
    a 序列中的步骤号
    b 对象名称
    c 方向指示器(搜索方向)
    d 尺寸手柄

    如需调整圆弧的大小,请拖拽任一端的尺寸手柄。如需更改半径,请拖拽中间的尺寸手柄。如需移动整个对象,请拖拽标签或中间点。

Edge对象属性
以下列表是对Edge对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

如果更改SearchType属性,设置的属性会根据指定的类型而变化。当SearchType为Line时,以下属性则不会出现在Vision Guide窗口的属性网格中。

  • AngleEnd
  • AngleStart
  • CenterPointObject
  • CenterPntObjResult
  • CenterPntOffsetX
  • CenterPntOffsetY
  • CenterPntRotOffset

当SearchType为Arc时,则不会出现以下属性:

  • X1
  • Y1
  • X2
  • Y2
属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

Accept

指定形状得分,用于判断是否以检测到检测对象。

检测对象的得分需要大于或等于设定的形状得分。

默认:100

AngleEnd

指定执行圆弧搜索范围的终止角度。

默认:135

AngleStart

指定执行圆弧搜索范围的起始角度。

默认:45

CalRobotPlacePos 在设计和程序运行时校准RobotPlacePos。
Caption

为Edge对象指定标题。

默认:Empty String

CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

默认:Screen

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则Edge对象将应用于指定视觉对象的所有结果(NumberFound)

默认:1

CenterPntOffsetX

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。

默认:0

CenterPntOffsetY

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。

默认:0

CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

如果将SearchWinType设置为RotatedRectangle,搜索窗口则以Angle结果为基础进行旋转。

默认:False

CheckClearanceFor 设定确认间隙的对象。
ClearanceCondition 设定间隙的判断方法。
ContrastTarget

设定边缘搜索所需的对比度。

默认:0(最佳对比度)

ContrastVariation

选择ContrastTarget允许的对比度变化量。

默认:0

CoordObject

指定复制结果的Coordinates对象。执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。

默认:None

CurrentResult 可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。
Description

设定用户指定的描述。

默认:空白

EdgeSort 设置检测到的边缘结果的排序方式。
EdgeThreshold

设置阈值,低于该值的边缘将被忽略。

默认:2

EdgeType

选择搜索的边缘类型(单边缘或双边缘)。

默认:1 - Single

Enabled

指定是否执行对象。

默认:True

EndPntObjResult 指定使用EndPointObject的哪个结果。
EndPointObject 指定使用哪个视觉对象来定义直线的终点。
EndPointType 指定用于定义直线终点的终点类型。
FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

Frame

指定要使用哪个位置的定位框。

默认:none

FrameResult

指定需使用Frame的第几个结果。

默认:1

Graphics

设置显示的图表模式。

默认:1 - All

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

Name

用于为Edge对象分配一个唯一的名称。

默认:Edge01

NumberToFind

规定待查找的边缘数目。

默认:1

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

Polarity

规定Edge对象是应该搜索浅色到深色的过度(LightToDark)还是深色到浅色的过度(DarkToLight)。

默认:1 - LightToDark

Radius 定义从对象中心到对象最外层搜索环的距离。
SearchType

设置是使用直线还是圆弧搜索。

默认:Line

ScoreWeightContrast

根据对比度设置得分百分比。

默认:50

ScoreWeightStrength

根据边缘强度设置得分百分比。

默认:50

SearchWidth

定义边缘搜索的宽度。

范围:3 - 99

默认:3

StartPntObjResult 指定使用StartPointObject的哪个结果。
StartPointObject 指定使用哪个视觉对象来定义直线的起点。
StartPointType 指定用于定义直线起点的起点类型。
StrengthTarget

设置搜索边缘的强度。

默认:0

StrengthVariation

设置StrengthTarget的变化量总和。

默认:0

X1 边缘起点位置的X坐标。
X2 边缘终点位置的X坐标。
Y1 边缘起点位置的Y坐标。
Y2 边缘终点位置的Y坐标。

Edge对象结果
以下列表是对Edge对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
CameraX 返回相机坐标系中已找到的边缘位置的X坐标位置。
CameraY 返回相机坐标系中已找到的边缘位置的Y坐标位置。
CameraXYU

仅限运行时间。

返回相机坐标系中已检测到边缘位置的CameraX、CameraY和CameraU坐标。

ClearanceOK 返回间隙的判断结果。
Contrast 返回查找到Edge的对比度。
Found 返回是否检测到了对象,即被检测对象或零件的形状得分是否超过了Accept属性的当前设置值。
NumberFound

返回查找到的边缘的数目。

(最少是0个,最多是NumberToFind属性中设定的检测数量)。

Passed 返回测试结果合格与否。
PixelX 返回已找到的Edge位置的X坐标,用像素表示。
PixelY 返回已找到的Edge位置的Y坐标,用像素表示。
PixelXYU

仅限运行时间。

返回已找到边缘位置的PixelX、PixelY和PixelU坐标(以像素为单位)。

RobotX 返回机器人坐标系中检测到的边缘位置的X坐标。
RobotY 返回机器人坐标系中检测到的边缘位置的Y坐标。
RobotXYU

仅限运行时间。

返回机器人坐标系中已找到Edge位置的RobotX、RobotY和RobotU坐标。

Score 返回一个INTEGER值,这个值代表被检测出的边缘的总体得分。
Strength 返回检测到的边缘的强度。
Time 返回处理对象所需要的时间(单位:毫秒)。

使用Edge对象
下面将介绍如何创建和使用Edge对象。

  • 如何创建新的Edge对象
  • 设置搜索窗口的位置和尺寸
  • 设置Edge对象属性
  • 测试Edge对象并检查结果
  • 调整属性并再次测试

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击[New Sequence]按钮来创建一个新的视觉序列。
如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。
有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅 视觉序列。
视觉序列

第1步:创建一个新的Edge对象
(1)点击Vision Guide工具栏中的[All Tools] - [New Edge]按钮。
(2)将鼠标移动至图像显示区域。鼠标指针将变为Edge对象图标。
(3)继续移动鼠标,直至图标位于图像显示屏中的目标位置。然后再点击鼠标左键,创建对象。
(4)请注意,对象名称将自动创建。本示例中创建的对象名为“Edge01”,因为它是在本序列中创建的第一个Edge对象。(稍后将说明如何修改名称。)

第2步:确定Edge对象的位置
屏幕上将显示以下所示Edge对象。

新Edge对象

创建新的Edge对象之后,您可以通过SearchType属性,设置是沿直线或沿弧线搜索。当SearchType为Line(默认)时,您可以点击任一尺寸柄,再将线端拖动至新位置,从而改变搜索长度和旋转角度。当SearchType为Arc时,您可以拖拽弧各端的任一柄,从而更改弧。如需更改半径,请拖拽中间的手柄。
您也可以点击Edge对象的名称选项卡或边缘线沿线附近的任意位置,按住鼠标将整个Edge对象拖动至屏幕上新的位置。确定位置后松开鼠标。Edge对象将停留在屏幕上的新位置。

第3步:设置Edge对象属性
现在,我们可以设置Edge对象的属性值了。要设置属性,仅需点击相关属性值字段,然后再重新输入一个新的值。或者如果显示有下拉列表,则点击该列表中的相应选项即可。
以下显示的是一些Edge对象更常用的属性。其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
EdgeType(单边缘)

选择搜索边缘的类型。

如果设置为双边缘,则会分别搜索每个方向的边缘,然后返回中心点位置。

Name属性(“Edgexx”) 新创建的Edge对象中,默认的项目名称是“Edge**”。在一个视觉序列中要使用多个Edge对象时,使用**的编号对Edge进行区分。默认情况下,会将在视觉序列序列中使用的第一个Edge对象命名为“Edge01”。需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示Edge对象名称的地方都会变为新的名称。
NumberToFind (1) 沿着边缘搜索线搜索1条或以上的边缘。
Polarity (LightToDark) 如果您要寻找DarkToLight(深色到浅色)的边缘,请更改Polarity设置。

第4步:运行Edge对象并检查结果
运行Edge对象仅需做到以下几点:
点击执行面板上对象的[Run]按钮。然后将显示Edge对象的结果。这时需检查的主要结果如下。

结果 说明

PixelX结果

PixelY结果

沿着边缘搜索线检测到的边缘的XY坐标位置

(像素单位)

CameraX结果

CameraY结果

在相机坐标系中定义Edge对象的XY坐标值。

如果相机已经被校准,则CameraX和CameraY的结果将仅返回一个值。如果相机尚未完成校准,则将返回“no cal”。

RobotX结果

RobotY结果

定义了机器人坐标中Edge对象的XY坐标。

可用于命令机器人移动至这个XY坐标位置。(不需要进行其它转换或步骤。)如果相机已经被校准,则RobotX和RobotY的结果将仅返回一个值。如果未进行校准,则将显示“no cal”。

Polar对象

Polar对象描述
Polar对象可将有笛卡尔坐标系的图像,快速的转换为相应的极坐标系图像。Polar对象在判断检测对象是否发生旋转时,是非常实用的工具。Polar对象运行稳定而高速,我们推荐您在计算对象的旋转角度时使用。

Polar对象检测是否发生旋转的工具,所以绕对象重心的旋转不会影响计算精度,但是对象在x-y平面上的平行移动很容易影响计算精度。所以Polar对象很适合用于计算检测对象的旋转,但前提是该对象的中心位置不会移动。

因此,Vision Guide 8.0的Polar对象可使用CenterPoint属性。CenterPoint属性使您可以将Polar对象的中心点锁定在其它对象(Correlation对象和Blob对象等)的位置结果上。
换句话说,当首先通过Correlation对象和Blob对象找到XY位置时,Polar对象可将此XY位置作为中心点,计算检测对象的旋转。

Polar对象的布局
Polar对象的布局与目前为止我们看到的其他对象的布局非常不同。但用途非常相似。Polar对象呈圆形布局,且显示中心点和半径。如需修改Polar对象的位置,只需点击对象名称(或点击外围圆上的任意位置),然后按住鼠标将其推拽到新位置即可。

Polar对象的布局

符号 说明
a 对象名称
b

搜索窗口

尺寸手柄

c 搜索圈

要点


Polar对象中心位置(由CenterPoint属性规定)也可以以其他对象的位置为基准进行设置。也就是说即使您可以改变Polar对象的位置,但只要运行了对象或序列,Polar对象的中心位置也可能改变。详情见本章后面部分Polar对象的相关内容。

Polar对象的搜索窗口是圆形的。如上图所示,其外边界由外环定义。而内环是一个小于外环的圆形,且位于外圈内的n像素的位置。像素的值由Thickness属性定义。更改Thickness属性时,您会注意到内外环之间的厚度或距离发生了变化。因此这使您搜索的区域是可见的。
如果需要调整Polar对象搜索窗口外边界的尺寸,应点击4个搜索窗口尺寸手柄的其中一个,并根据需要将圈向内或向外拖动。

Polar对象属性
以下列表是对Polar对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

Accept

指定形状得分,用于判断是否以检测到检测对象。

检测对象的得分需要大于或等于设定的形状得分。如果设定值偏低,可能会导致错误检测。

默认:700

AngleOffset

Polar对象注册完成后,调整被搜索对象得角度指示器图形,并定义适用于Polar对象的偏移角度。

默认:0

CalRobotPlacePos 在设计和程序运行时校准RobotPlacePos。
Caption

为Polar对象指定标题。

默认:Empty String

CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

默认:Screen

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则Polar对象将应用于指定视觉对象的所有结果(NumberFound)。

默认:1

CenterPntOffsetX

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。

默认:0

CenterPntOffsetY

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。

默认:0

CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

默认:False

CenterX

指定用作Polar Search Tool中心点位置的X坐标。

当CenterPointObject属性已被其他视觉对象设定时,将自动设置本属性。

CenterY

指定用作Polar Search Tool中心点位置的Y坐标。

当CenterPointObject属性已被其他视觉对象设定时,将自动设置本属性。

CheckClearanceFor 设定确认间隙的对象。
ClearanceCondition 设定间隙的判断方法。
Confusion

指出被检测图像的预期混淆量。

此处显示的值是对于被检测对象可获得的最大形状的分,而不是您正在检测的对象。

默认:800

CoordObject

指定复制结果的Coordinates对象。执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。

默认:None

CurrentResult 可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。
Description

设定用户指定的描述。

默认:空白

Enabled

指定是否执行对象。

默认:True

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

Frame

指定要使用哪个位置的定位框。

默认:none

FrameResult

指定需使用Frame的第几个结果。

默认: 1

Graphics

设置显示的图表模式。

默认:1 - All

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

ModelObject

规定使用哪种模型进行搜索。

默认:Self

Name

用于为Polar对象分配一个唯一的名称。

默认:Polar01

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

Radius

定义从对象中心到对象最外层搜索环的距离。

默认:50

SaveTeachImage 设置示教模型时,是否保存图像文件。
ScoreMode 设置或返回在Fail时显示结果的阈值。
ShowModel

查看示教模型内部的灰度显示。

设置不要紧的像素。

Thickness

规定搜索环的厚度,这是Polar对象的被搜索区域。

厚度以像素为单位,在Radius属性定义的搜索环上,从外环朝内环进行测量。

默认:5

Polar对象结果
以下列表是对Polar对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Angle 返回被检测出零件的旋转量,用度数表示。
CameraX 返回相机坐标系的Polar对象CenterPoint位置的X坐标位置。
CameraY 返回相机坐标系的Polar对象CenterPoint位置的Y坐标位置。
CameraXYU

仅限运行时间。

返回相机坐标系中已检测到零件位置的CameraX、CameraY和CameraU坐标。

ClearanceOK 返回间隙的判断结果。
Found 返回是否检测到了对象,即被检测对象或零件的形状得分是否超过了Accept属性的当前设置值。
Passed 返回测试结果合格与否。
PixelX 返回已找到的零件位置(参见模型原点)的X坐标位置(以像素为单位)。
PixelY 返回已找到的零件位置(参见模型原点)的Y坐标位置(以像素为单位)。
PixelXYU

仅限运行时间。

返回已找到的零件位置的PixelX、PixelY和PixelU坐标(以像素为单位)。

RobotX 返回机器人坐标系中Polar对象的CenterPoint位置的X坐标。
RobotY 返回机器人坐标系中Polar对象的CenterPoint位置的Y坐标。
RobotU 返回机器人坐标系中Polar对象的Angle结果的U坐标。
RobotXYU

仅限运行时间。

返回机器人坐标系中已找到的零件位置的RobotX、RobotY和RobotU坐标。

Score 返回一个INTEGER值,这个值代表运行时间内找到的对象与Polar对象正在搜索的模型的匹配程度。
Time 返回处理对象所需要的时间(单位:毫秒)。

要点


返回X坐标和Y坐标(CameraX、CameraY、PixelX、PixelY、RobotX、RobotY)的Polar对象所有结果,都是从CenterPoint属性读取相关坐标值。如果在运行Polar对象之前设置了CenterPoint属性的值,则这些值也会被传递到Polar对象的结果中。Polar对象只计算旋转角度,而不会计算中心位置的X,Y坐标,但是CenterPoint属性会提供X,Y的坐标位置,所以无需从其他视觉对象中获取X,Y坐标的结果。

了解Polar对象
Polar对象的目的是检测指定对象或图案的旋转量。为此,首先需要创建一个极坐标模型,该模型一般是一个有一定厚度的圆环。创建完成后执行Polar对象,通过将圆环与被检测工件当前的旋转进行比对,来计算角度偏差,并将其作为Polar对象结果之一返回。
例如,假设有一个围绕中心点旋转的工件,机器人需要拿起工件并将其放置到托盘上。但因为工件总是朝着不同的方向,所以如果不确定对象的旋转量,则会很难将工件拾起。

为了方便理解,以下举例进行说明。在下图A中,被检测对象是图中黑色和灰色部分显示的工件,我们则可以定义一个与对象外侧部分相交的极坐标模型。
请注意内环与外环之间的区域。该区域定义了注册了此工件的Polar对象的模型。您可以看到内环中的一些区域可辨性非常高,因为它们与其他区域的差别非常明显。这些区域,就是可以检测出工件旋转量的关键。


图A:Polar对象的工件示例

符号 说明
a 待搜索区域的厚度
b 外环
c 内环

图B所示为一个已示教的模型外观。模型大部分是白色,有一段是黑色和灰色的圈。
如果运行Polar对象,将搜索该类模式的图案。即搜索有一小部分是黑色和灰色,其余部分是白色的图案。

图B:图A零件的极坐标模型

符号 说明
a 待搜索区域的厚度
b 外环
c 内环

图C所示为相对于模型旋转了约90o的工件。Polar对象将计算模型和对象新位置之间的角度偏差。


图C:工件与原始示教模型旋转90º

符号 说明
a 待搜索区域的厚度
b 外环
c 内环

图D中左边是0º原始示教模型,右边是旋转90º的工件。


图D:极坐标模型和旋转后的工件的极坐标

符号 说明
a 待搜索区域的厚度
b 外环
c 内环

Polar对象相关的主要参数
从上一节的示例中可以看出,Polar对象有3个主要参数,每个参数对于能否获得最佳结果都很重要。这些参数由下列属性定义:

  • CenterPoint属性
  • Radius属性
  • Thickness属性
  • AngleOffset属性

CenterPoint属性定义Polar对象的中心点位置。
如前文示例中所述,Polar对象的中心点必须处于一个适当的位置,才能使示教的模型中心点与要测量旋转角度的被检测对象的中心位置完全一致。否则,则会在XY平面中平移并导致角度结果不准确。
Radius属性定义了Polar对象中心点到Polar对象的搜索圈外环之间的距离。
该属性定义了Search Area的外边界。

Thickness属性定义了从外环到虚拟内环之间的距离(以像素为单位)。
该距离实际上是Search Area的厚度。
AngleOffset属性提供一种机制来设置指示器图形线的角度位置(显示Polar对象的旋转位置时使用)。
运行Polar对象后,图形线会显示在3点钟位置(0º)。但如果要指示器图形与被检测对象最需关注的旋转位置吻合,可以根据需要修改指示器图形的位置。(记住该AngleOffset属性通常应在示教模型并运行Polar对象后进行设置。)

如何确定对象的旋转
举一个需要确定对象旋转的经典应用案例。用机器人拾取集成电路模具,此时则必须知道模具的XY位置和旋转方向。模具与背景相比,具有不同的灰度。模具表面包含显示其从0到360º旋转的灰度信息。
该应用中,可以使用Blob对象(对象名称为“Blob01”)查找模具的中心。也可以使用Correlation对象代替Blob对象。
创建Polar对象,使用Blob对象的X,Y位置结果作为Polar对象的中心位置。也就是将Polar对象的CerterPoint属性设置为“Blob01”。
然后为Polar对象设置正确的Radius和Thickness属性值。示教灰度的极坐标模型,作为0º的模具模型。
当搜索方向各异的新模具时,将从Blob对象“Blob01”的XY位置和Radius属性以及Thickness属性构造一个Polar搜索窗口。
然后在搜索窗口中搜索于示教模型的旋转角度相同的角度。并将模型找到的模型角度,作为Angle结果(以像素为单位)和Robot U结果(机器人坐标系)返回。

要点


重要注意事项:返回的RobotU结果就是机器人坐标系中工件的实际旋转角度,但是夹具可能没有安装在精确的旋转角度0º位置。夹具可能存在2º ~ 3º的误差。因此在移动至零件时,在程序中进行调整。

调节已示教模型的角度偏移
在示教Polar模型时,默认原始的圆形模型的旋转角度为0º,此时旋转角度0º位置处于时钟的3点钟方向。在下图显示的模型中,被搜索区域大致位于1点钟方向上。示教此模型后,与所有Polar模型一样,该模型的0º位置将在3点钟方向。
但是,由于我们想看到零件实际旋转的视觉指示器,所以需要用Angleoffset属性对极坐标角指示器图形的位置进行适当的调整。
例如,我们示教大约在1点钟方向的零件,则需设置60º左右的偏移。(即Polar对象的AngleOffset属性应设置为60º)

AngleOffset属性设置为60º的Polar模型

执行Polar对象的难点
示教Polar对象时,需要重点考虑的因素是,Polar模型包含了充足的信息来确定被检测对象的方向。
因此,Polar对象的预期精度和执行速度,决定了进行Polar对象检索时,所用Polar模型的大小。
如果Polar对象的旋转结果需要1/2º的精度,则Polar对象只需要180像素宽即可。(假设检索精度为1/4像素且每像素2º,或每个Polar对象分辨率单位为0.5º)
Polar对象的精确度也取决于模型的灰度信息。
选择Polar模型的厚度(以像素为单位)时,也必须包含足够充分的信息,以实现即使被检索图像的中心位置在识别上稍有偏移,角度检测也能得出正确的结果。
将Thickness属性设置为1像素时,如果图像存在1像素错位,则极坐标转换会向极坐标图像发送完全不同的像素。
因此,为了给源图像位置提供一定的容差量,可以将Thickness属性设置为5像素,这样如果源图像位置偏移1个像素,相应的极坐标图像像素仅偏离1/5。(这就是将Thickness属性的最小值设置为5的原因。)
根据模型中的灰度信息量和所需的搜素速度,选择Polar对象的Radius和Thickness属性。
搜索速度与Radius和Thickness属性的值成反比。将Radius属性设置为一个较低的值,并且把Thickness属性设置为5,则可以得到最快的搜索速度。但在多数情况下,将Thickness属性设置为5,可能不足以精确的查找到Polar模型。

使用Polar对象
接下来将介绍如何创建并使用Polar对象。

  • 创建一个新的Polar对象
  • 设置搜索窗口的位置和尺寸
  • 配置与Polar对象相关的属性
  • 测试Polar对象并检查结果
  • 调整属性并再次测试
    开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击[New Sequence]按钮来创建一个新的视觉序列。
    如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅 5.视觉序列。
    视觉序列

第1步:创建一个新的Polar对象
(1)点击Vision Guide工具栏中的[All Tools] - [New Polar]按钮。
(2)将鼠标移动至图像显示区域。鼠标光标将变为Polar对象图标。
(3)继续移动鼠标,直至图标位于图像显示屏中的目标位置。然后再点击鼠标左键,创建对象。
(4)请注意,对象名称将自动创建。本示例中创建的对象名为“Polar01”,因为它是在本序列中创建的第一个Polar对象。(稍后将说明如何修改对象名称。)

第2步:确定Polar对象的位置
屏幕上将显示一个与下图相似的Polar对象:

新Polar对象

符号 说明
a 对象名称
b

搜索窗口

尺寸手柄

c 搜索圈

Polar对象是圆形搜索窗口。您可以改变整个对象的位置或半径。
如需移动整个对象,请点击对象名称或外环上的任何位置,并按住鼠标左键,即可将整个对象拖动至画面上的新位置。确定位置后松开鼠标。Polar对象将停留在画面中的新位置上。
如果需要改变半径,应将鼠标指针移动到任一尺寸手柄上,按下鼠标左键,然后移动鼠标即可。

第3步:设置Polar对象属性
现在,我们可以设置Polar对象的属性值了。要设置属性,仅需点击相关属性值字段,然后再重新输入一个新的值。或者如果显示有下拉列表,则点击该列表中的相应选项即可。
以下显示的是一些Polar对象更常用的属性。其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。

  • “Vision Guide 8.0 Properties and Results Reference”
  • 本章的Polar对象属性
属性 说明
Name属性 新创建的Polar对象中,默认的项目名称是“Polar**”。在一个视觉序列中要使用多个Polar对象时,使用**的编号对Polar进行区分。默认情况下,会将在视觉序列序列中使用的第一个Polar对象命名为“Polar01”。需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示Polar对象名称的地方都会变为新的名称。
CenterPointObject属性 通常会在同一个序列中,先前执行的对象中设置此属性。该属性将决定执行Polar对象时的中心点位置。
Thickness属性 通常为了获得模型信息,确定工件的角度,会给该属性设置一个足够大的值。
AngleOffset属性 通常设置该属性时,需要确保能将最终角度的结果定位在目标位置上。例如,如果要搜索始终的分针,则需调整AngleOffset属性,使显示角度的与分针完全吻合。

第4步:运行Polar对象并检查结果
执行以下操作,以运行Polar对象。
点击执行面板上对象的[Run]按钮。将首先运行CenterPointObject。
然后将显示Polar对象的结果。这时需检查的主要结果有:

结果 说明
Angle结果 被检测出模型的角度(单位:度)。

OCR对象

OCR对象描述
OCR(Optical Character Recognition/光学字符识别)对象可用于识别特定字体和字符大小图像中的单行字符串。OCR对象的GUI有一个字体向导,该向导可根据SEMI标准创建字体,也可以根据图像和ASCII定义文件中的字符,创建用户定义的字体。您可以将创建的字体导出至磁盘,并将数据导入至同一项目,或其它项目的OCR对象。

要点


OCR对象仅在安装并启用OCR选项时才可使用。

OCR对象布局
OCR对象有搜索窗口和模型窗口,如下所示。

OCR对象布局

符号 说明
a 对象名称
b 搜索窗口
c 模型窗口
d

模型窗口

尺寸手柄

要点


如果使用“Arc”类型的搜索窗口,可以将沿弧线排列的字符串识别为特定的字体或字符大小的图像。

OCR对象属性
以下列表是对OCR对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference Manual”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

Caption

为OCR对象指定标题。

默认:Empty String

CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

默认:Screen

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则OCR对象将应用于指定视觉对象的所有结果(NumberFound)。

默认:1

CenterPntOffsetX

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。

默认:0

CenterPntOffsetY

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。

默认:0

CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

默认:False

CurrentResult

可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。

FindChar=False时呈灰色。

默认:1

Description

设定用户指定的描述。

默认:空白

Dictionarymode

指定字典模式。

默认:All

Direction

设置沿弧线排列的字符的方向。

默认:InsideOut

Enabled

指定是否执行对象。

默认:True

ExportFont 将当前字体导出至磁盘。
FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

FindChar

指定是否将每个字符视为一个单独的对象。

默认:False

Frame

指定要使用哪个位置的定位框。

默认:none

FrameResult

指定需使用Frame的第几个结果。

默认: 1

Graphics

设置显示的图表模式。

默认:1 - All

ImportFont 从Vision Guide的GUI中,启动文件对话框并导入字体文件。
InvalidChar

设置或返回用于表示Text结果中无效字符的字符。

默认:“?”

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

ModelWin

仅限运行时间。

在一次调用中设置或返回模型窗口的左侧参数、顶部参数、高度参数和宽度参数。

ModelWinAngle 指定模型窗口的角度。
ModelWinCenterX 指定模型窗口中心的X坐标值。
ModelWinCenterY 指定模型窗口中心的Y坐标值。
ModelWinLeft 指定模型窗口左侧位置。
ModelWinHeight

指定模型窗口的高度。

默认:50

ModelWinTop 指定模型窗口顶部位置。
ModelWinType 指定模型窗口类型。
ModelWinWidth

指定模型窗口的宽度。

默认:50

Name

用于为OCR对象分配一个唯一的名称。

默认:Ocr01

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:LightGreen

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

Polarity

可定义被检测对象和背景色的差异(在浅色背景下检测深色对象(DarkOnLight),或在深色背景下检测浅色对象(LightOnDark))。

默认:1 - DarkOnLight

SearchWin

仅限运行时间。

在一次调用中设置或返回搜索窗口左侧参数、顶部参数、高度参数和宽度参数。

SearchWinAngleEnd 定义待搜索区域的结束角度。
SearchWinAngleStart 定义待搜索区域的开始角度。
SearchWinCenterX 定义待搜索区域中心的X轴坐标值。
SearchWinCenterY 定义待搜索区域中心的Y轴坐标值。
SearchWinHeight

定义待搜索区域的高度(单位:pixel)。

默认:100

SearchWinLeft 定义待搜索区域的最左边位置(单位:pixel)。
SearchWinRadiusInner 定义待搜索区域的圆弧内径。
SearchWinRadiusOuter 定义待搜索区域的圆弧外径。
SearchWinTop 定义待搜索区域的最上边位置(单位:pixel)。
SearchWinType 定义待搜索区域的类型(Rectangle, Arc)
SearchWinWidth

定义待搜索区域的宽度(单位:pixel)。

默认:100

OCR对象结果
以下列表是对OCR对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference Manual”

结果 说明
Angle 以角度为单位返回检测到字符的旋转量。
Found 返回是否检测到了对象。
Passed 返回测试结果合格与否。
CameraX 返回相机坐标系中已查找到的字符的X坐标位置。
CameraY 返回相机坐标系中已查找到的字符的Y坐标位置。
NumberFound 返回已查找到的字符数目。
MaxX 返回字符极值的最大X像素坐标。(以像素为单位)
MaxY 返回字符极值的最大Y像素坐标。(以像素为单位)
MinX 返回字符极值的最小X像素坐标。(以像素为单位)
MinY 返回字符极值的最小Y像素坐标。(以像素为单位)
PixelX 返回已找查到的字符位置的X坐标位置。(以像素为单位)
PixelY 返回已找查到的字符位置的Y坐标位置。(以像素为单位)
RobotX 返回机器人坐标系中已查找到的字符的X坐标位置。
RobotY 返回机器人坐标系中已查找到的字符的Y坐标位置。
ShowAllResults

以表格形式在对话框中显示指定视觉对象的所有结果。

比较结果将更加容易。

Text 返回在搜索过程中查找到的字符。
Time 返回处理对象所需要的时间(单位:毫秒)。

使用OCR对象
本节将介绍使用OCR对象所需的步骤,如下所示:

  • 新建一个OCR对象
  • 为新对象创建或导入字体
  • 校准字体(根据需要)
  • 配置与OCR对象相关的属性
  • 测试OCR对象并检查结果
  • 调整属性并再次测试

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击 [New Sequence]按钮来创建一个新的视觉序列。如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。

新建一个OCR对象

  1. 点击Vision Guide工具栏中的[All Tools] - [OCR]按钮。
  2. OCR图标将出现在OCR对象按钮的上方。
  3. 点击该OCR图标,并将其拖动至Vision Guide窗口的图像显示区域中。
  4. 将自动创建对象名称。本示例中是在本序列中创建的第一个OCR对象,座椅对象被命名为“Ocr01”。(稍后将说明如何修改名称。)

    OCR对象布局
符号 说明
a 序列中的步骤号
b 对象名称
c 搜索窗口
d 模型窗口

创建字体
请根据要读取的字符图像创建字体。您还可以使用ImportFont属性,从其它项目导入字体。在导入字体时,您不需要创建字体。
系统中已自带了常规的西文和日语字体。但根据输入图像的大小,可能还需创建字体。
可使用图像文件创建用户定义的字体。

创建字体步骤如下:
(1)点击流程图中的OCR对象。将模型窗口与字符对齐。
(2)点击[Teach]按钮,显示[Teach OCR Font]对话框。

(3)如需注册新字符,请选择[New Character]按钮。然后点击[Teach]按钮。您可以为一个字符注册多个图像。
可以注册的字符包括日语(全角)、半角字母数字字符和半角符号。如需从字体中删除注册字体,请选择[Existing Character]按钮,从下拉表中选择要删除的字体,然后点击[Delete]按钮。

CodeReader对象

CodeReader对象描述
CodeReader对象用于读取条形码或二维码。
支持的代码为:

代码 规格
EAN13 数字0 ~ 9, 固定长度
Code39 0 ~ 9, A ~ Z, ./+-%$Spc, 可变长度
DataMatrix 二维码 *1
Interleaved 2 of 5 数字0 ~9, 固定长度
Code128 Full ASCII, 可变长度
Codabar 数字0 ~ 9, $ - : / . +
PDF417 二维码
QR 二维码
EAN 8位数字 0 ~ 9, 固定长度
UPC A 数字0 ~ 9, 固定长度
UPC E 数字0 ~ 9, 固定长度

*1:仅支持ECC200标准。

CoderReader对象布局
CodeReader对象仅有一个搜索窗口,如下图所示。

CoderReader对象布局

符号 说明
a 对象名称
b 搜索窗口
c 尺寸手柄

CodeReader对象属性
以下列表是对CodeReader对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference Manual”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

Caption

为CodeReader对象指定标题。

默认:空白

CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

默认:Screen

CenterPntObjResult

指定要使用的CenterPointObject属性结果。如果指定了All,则CodeReader对象将应用于指定视觉对象的所有结果(NumberFound)。

默认:1

CenterPntOffsetX

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。

默认:0

CenterPntOffsetY

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。

默认:0

CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

默认:False

CodeType

设置或返回使用CodeReader对象搜索条形码或二维码的类型。

默认:0 - Auto

CoordObject

指定复制结果的Coordinates对象。执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。

默认:None

CurrentResult 可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。
Description

设定用户指定的描述。

默认:空白

Enabled

指定是否执行对象。

默认:True

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

Frame

根据指定框架设置当前对象的搜索位置。

默认:none

FrameResult

指定需使用Frame的第几个结果。

默认: 1

Graphics

设置显示的图表模式。

默认:1 - All

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

Name

用于为CodeReader对象分配一个唯一的名称。

默认:Code01

NumberToFind

规定待查找的代码数目。

最大:8

默认:1

Orientation 设置条形码的方向。
PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:LightGreen

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

SearchWin 仅限运行时间。在一次调用中设置或返回搜索窗口左侧参数、顶部参数、高度参数和宽度参数。
SearchWinHeight

定义待搜索区域的高度(单位:pixel)。

默认:100

SearchWinLeft 定义待搜索区域的最左边位置(单位:pixel)。
SearchWinTop 定义待搜索区域的最上边位置(单位:pixel)。
SearchWinWidth

定义待搜索区域的宽度(单位:pixel)。

默认:100

CodeReader对象结果
以下列表是对CodeReader对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference Manual”

结果 说明
Angle 返回检测到的条码倾斜角度。
CameraX 返回相机坐标系中检测到的对象的X坐标。(单位:mm)
CameraY 返回相机坐标系中检测到的对象的Y坐标。(单位:mm)
Found 返回是否检测到了对象。
FoundCodeType 返回检测到的条码类型。
NumberFound

返回检测到的代码数目。

(最少是0个,最多是NumberToFind属性中设定的检测数量)。

Passed 返回测试结果合格与否。
PixelX 返回检测到的对象的X坐标(以像素为单位)。
PixelY 返回检测到的对象的Y坐标(以像素为单位)。
PixelXYU

仅限运行时间。

返回已找到的零件位置的PixelX、PixelY和PixelU坐标(以像素为单位)。

RobotX 返回机器人坐标系中检测到的对象的X坐标位置。
RobotY 返回机器人坐标系中检测到的对象的Y坐标位置。
RobotU 返回在机器人坐标系内已找到的零件位置的U坐标位置。
RobotXYU

仅限运行时间。

返回在机器人坐标系中已找到的零件位置的RobotX、RobotY和RobotU坐标。

ShowAllResults

以表格形式在对话框中显示指定视觉对象的所有结果。

比较结果将更加容易。

Text 返回在搜索过程中查找到的字符。
Time 返回处理对象所需要的时间(单位:毫秒)。

使用CodeReader对象
这节将说明使用CodeReader对象所需的步骤,如下:

  • 创建一个CodeReader对象
  • 设置搜索窗口的位置和尺寸
  • 设置CodeReader对象的相关属性
  • 测试CodeReader对象并检查结果
  • 调整属性并再次测试

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击 [New Sequence]按钮来创建一个新的视觉序列。如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。

第1步:创建一个新的CodeReader对象

  1. 点击Vision Guide工具栏中的[All Tools] - [CodeReader]按钮。
  2. CodeReader图标会出现在CodeReader对象按钮的上方。
  3. 点击这个CodeReader图标,并将其拖至Vision Guide窗口的图像区域中。
  4. 将自动创建对象名称。本示例中是在本序列中创建的第一个CodeReader对象,座椅对象被命名“Code01”。(稍后将说明如何修改名称。)

第2步:设置搜索窗口的位置和大小
画面上会显示一个如下所示的CodeReader对象。

图 :新CodeReader对象

符号 说明
a 序列中的步骤号
b 对象名称
c 搜索窗口

1.点击CodeReader对象的名称标签,按住鼠标左键,将CodeReader对象拖至您想让搜索窗口的左上角所在的位置。
2.点击搜索窗口的尺寸手柄,拖动鼠标,将CodeReader对象搜索窗口调整成合适的大小。(搜索窗口就是进行Blob搜索的区域。)

要点


请在条形码的两侧流出空白区域。否则会无法完成搜索。如果是二维码,则需在其周围留出一个单元格或更多的空白区域。

ColorMatch对象

ColorMatch对象描述
ColorMatch对象用于查找与颜色模型匹配的颜色。
ColorMatch对象布局
ColorMatch对象的布局有矩形、旋转矩形或圆形,因此具有中心点和半径。点击对象的名称或者点击搜索窗口外周长的任意位置,并将该对象拖动至新位置,即可修改ColorMatch对象的位置。

新ColorMatch对象布局

符号 说明
a 对象名称
b 尺寸手柄

要点


CenterPoint属性定义ColorMatch对象中心位置,中心位置也可根据其它对象的位置进行设置。也就是说即使您调整了ColorMatch对象的位置,但如果运行了对象或序列时,对象的中心位置也可能会改变。

ColorMatch对象的搜索区域可以是矩形、旋转矩形或圆形。
当SearchWinType为Circle,要调节ColorMatch对象搜索窗口的外边界的大小,则需点击搜索窗口的任一尺寸手柄,然后根据需要向内或向外拖动圆圈,以更改半径。

ColorMatch属性
以下列表是对ColorMatch对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference Manual”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

Accept

指定形状得分,用于判断是否以检测到检测对象。

如果设定值偏低,可能会导致错误检测。

默认:700

Caption

为ColorMatch对象指定标题。

默认:空白

CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

默认:Screen

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则ColorMatch对象将应用于指定视觉对象的所有结果(NumberFound)

默认:1

CenterPntOffsetX

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。

默认:0

CenterPntOffsetY

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。

默认:0

CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

如果将SearchWinType设置为RotatedRectangle,搜索窗口则以Angle结果为基础进行旋转。

默认:False

CenterX 指定用作对象中心点位置的X坐标。当CenterPoint属性已被其他视觉对象设定时,将自动设置本属性。
CenterY 指定用作对象中心点位置的Y坐标。当CenterPoint属性已被其他视觉对象设定时,将自动设置本属性。
ColorMode

设置将使用的颜色空间(RGB/HSV)。

默认:RGB

CoordObject

指定复制结果的Coordinates对象。执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。

默认:None

CurrentModel

仅限运行时间。指定在ModelColor属性和VTeach中使用哪种模型。CurrentModel的值为1到NumberOfModels。

默认:1

CurrentResult

可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。

默认:1

Description

设定用户指定的描述。

默认:空白

Enabled

指定是否执行对象。

默认:True

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

Frame

根据指定框架设置当前对象的搜索位置。(允许对象相对于框架进行定位。)

默认:None

FrameResult

指定需使用Frame的第几个结果。

默认:1

Graphics

设置显示的图表模式。

默认:1 - All

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

ModelColor

仅限运行时间。在运行过程中,直接输入RGB颜色值,示教模型。

默认:RGB(0, 0, 0)

ModelColorTol

仅限运行时间。设置模型颜色的容差量。如果像素颜色在模型颜色的容差范围以内,那么像素会保持不变。

默认:10 (ColorMode = RGB);0,0,50 (ColorMode = HSV)

ModelName 仅限运行时间。设置当前正在使用的模型的名称。
ModelObject

规定使用哪种模型进行搜索。

默认:Self

Name

用于为ColorMatch对象分配一个唯一的名称。

默认:ColorMatch01

NumberOfModels

仅限运行时间。这是所用的颜色模型的数目。在运行时间里,如果设置了该属性,则可以利用CurrentModel和VTeach示教各颜色模型。

默认:1

NumberToFind

规定了在当前搜索窗口中待查找的对象的数目。

默认:1

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

Radius

定义从对象中心到对象最外层搜索环的距离。

默认:50

SearchWin

仅限运行时间。

在一次调用中设置或返回搜索窗口左侧参数、顶部参数、高度参数和宽度参数。

SearchWinAngle 定义待搜索区域的角度。
SearchWinCenterX 定义待搜索区域中心的X轴坐标值。
SearchWinCenterY 定义待搜索区域中心的Y轴坐标值。
SearchWinHeight 定义待搜索区域的高度(单位:pixel)。
SearchWinLeft 定义待搜索区域的最左边位置(单位:pixel)。
SearchWinTop 定义待搜索区域的最上边位置(单位:pixel)。
SearchWinType 定义待搜索区域的类型(Rectangle,RotatedRectangle,Circle)
SearchWinWidth 定义待搜索区域的宽度(单位:pixel)。

ColorMatch结果
以下列表是对ColorMatch对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference Manual”

结果 说明
CameraX 返回相机坐标系内已找到的零件位置(参见模型原点)的X坐标位置。(单位:mm)
CameraY 返回相机坐标系内已找到的零件位置(参见模型原点)的Y坐标位置。(单位:mm)
ColorIndex 返回查找到的颜色模型的指数。
ColorName 返回查找到的颜色模型的名称。
ColorValue 根据ColorMode设置,返回查找到颜色模型的RGB或HSV值。
CameraXYU 仅限运行时间。返回相机坐标系中已检测到零件位置的CameraX、CameraY和CameraU坐标。(单位:mm)
Found 返回颜色是否与某一颜色模型相匹配。
NumberFound

返回已检测到的对象数目。

(最少是0个,最多是NumberToFind属性中设定的检测数量)。

Passed 返回测试结果合格与否。
PixelX 返回已找到的零件位置的X坐标位置(以像素为单位)。
PixelY 返回已找到的零件位置的Y坐标位置(以像素为单位)。
PixelXYU

仅限运行时间。

返回已找到的零件位置的PixelX、PixelY和PixelU坐标(以像素为单位)。

RobotX 返回机器人坐标系中检测到的对象的X坐标位置。
RobotY 返回机器人坐标系中检测到的对象的Y坐标位置。
RobotXYU 仅限运行时间。返回机器人坐标系中已找到的零件位置的RobotX、RobotY和RobotU坐标。
Score

被检测出对象的颜色与模型颜色的匹配程度。

返回一个0~1000的INTEGER数值

ShowAllResults

以表格形式在对话框中显示指定视觉对象的所有结果。

比较结果将更加容易。

Time 返回处理对象所需要的时间(单位:毫秒)。

使用ColorMatch对象
现在我们已回顾了ColorMatch和搜索的工作方式,并已为理解如何使用Vision Guide ColorMatch对象打下了基础。因此,这节将说明使用ColorMatch对象所需的步骤,如下所示:

  • 新建一个ColorMatch对象
  • 设置搜索窗口的位置和尺寸
  • 设置ColorMatch对象的相关属性
  • 示教颜色模型
  • 测试ColorMatch对象并检查结果
  • 调整属性并再次测试
  • 处理单个ColorMatch对象的多个结果

第1步:创建一个新的ColorMatch对象
点击Vision Guide工具栏中的[All Tools] - [ColorMatch]按钮。
鼠标指针将变成一个ColorMatch图标。
将鼠标指针移动至Vision Guide窗口的图像显示区域,点击鼠标左键。ColorMatch对象将被防置在图像显示区域中。
请注意,对象名称将自动创建。本示例中创建的对象名为“ColorMatch01”,因为它是在本序列中创建的第一个ColorMatch对象。(稍后将说明如何修改名称。)

第2步:设置搜索窗口的位置和大小
屏幕上将显示一个与下图相似的ColorMatch对象。

新ColorMatch对象布局

符号 说明
a 对象名称
b 尺寸手柄

(1)点击ColorMatch对象的名称标签,并按下鼠标,将该对象拖动至您想让搜索窗口所在的位置。
(2)点击搜索窗口的尺寸手柄,拖动鼠标,将Correlation对象搜索窗口调整成合适的大小。(搜索窗口就是颜色搜索区域。)。

第3步:注册ColorMatch对象的模型
要使用ColorMatch对象,首先需要示教一个或多个颜色模型。示教颜色模型时,平均颜色取决于ColorMatch对象窗口内的所有像素。您可以命名每个模型。
(1)确认当前显示的是ColorMatch对象。查看流程图或序列目录树,确认当前正在处理的对象。或者,检查图像显示区域,查看正以洋红色突出显示的对象。
(2)点击执行面板上的[Teach]按钮。将显示以下画面。

当显示示教窗口时,您可以根据需要改变ColorMatch对象的位置,以示教各颜色模型。
(3)将ColorMatch对象放置在您需要示教的颜色上。试着用示教的颜色填满整个窗口。
(4)点击[Add]按钮添加新的颜色模型。
(5)点击模型列,选择要示教的模型。
(6)点击[Teach]按钮示教颜色。
(7)命名颜色。此名称将作为ColorName结果,因此请设置名称,以分辨颜色。
(8)当ColorMode为RGB时,默认容差值为0;当ColorMode为HSV时,默认容差值为0,0,50。当颜色变化很小或亮度不均匀时,修改容差量有助于颜色匹配。
(9)如需添加更多颜色模型,请重复步骤(3)至(8)。

要点


通常您可以使用ColorMatch对象窗口示教颜色模型,但也可以在示教窗口中输入RBG(或HSV)值以示教颜色模型。

LineFinder对象

LineFinder对象描述
LineFinder对象用于识别图像中直线的位置。
LineFinder对象自动处理多个Edge对象以识别边缘位置,然后获取从每个边缘位置识别出的直线。
图像中的对象的边缘由灰度值“从深到浅”或“从浅到深”的变化表示。可以在多个像素上观察这种变化。
LineFinder对象先根据Polarity属性的定义(“从深到浅”或“从浅到深”的变化),检测出深浅变化,然后将检测出的位置定义为单边缘的边缘位置。您还可以更改EdgeType属性,搜索双边缘。搜索双边缘时,会查找两个相对的边,并返回中间点作为结果。

LineFinder对象布局
LineFinder对象的外观与Correlation对象和Blob对象看起来不同。LineFinder对象的搜索窗口直线,Edge对象沿着直线进行搜索。LineFinder对象沿着直线,朝方向指示器指示的方向,搜索颜色的变化(由浅到深或由深到浅)。


LineFinder对象布局

符号 说明
a 序列中的步骤号
b 对象名称
c 尺寸和方向手柄
d 方向指示器(搜索方向)

可以将LineFinder对象放在任何方向(不仅是垂直或水平)上,进行搜索。与Blob对象的SearchWinType=AngledRectangle一样,可以使用LineFinder对象搜索窗口的尺寸和方向手柄,将LineFinder对象移动到您需要检测出边缘的方向。

LineFinder对象属性
以下列表是对LineFinder对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

Accept

指定形状得分,用于判断是否以检测到检测对象。检测对象的得分需要大于或等于设定的形状得分。

默认:100

AngleBase

设置基准角度。

默认:0

AngleMode

设置角度输出格式。

默认:1 - Default

AngleStart 规定了角度搜索的中心。
Caption

为LineFinder对象指定标题。

默认:空白

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则LineFinder对象将应用于指定视觉对象的所有结果(NumberFound)。

CenterPntOffsetX 使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。
CenterPntOffsetY 使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。
CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

如果将SearchWinType设置为RotatedRectangle,搜索窗口则以Angle结果为基础进行旋转。

CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

CheckClearanceFor 设定确认间隙的对象。
ClearanceCondition 设定间隙的判断方法。
ContrastTarget

设定边缘搜索所需的对比度。

默认:0(最佳对比度)

ContrastVariation

选择ContrastTarget允许的对比度变化量。

默认:0

CurrentResult 可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。
Description

设定用户指定的描述。

默认:空白

Directed

指定是否使用线方向设置角度。

默认:True

EdgeSort 设置检测到的边缘结果的排序方式。
EdgeThreshold

设置阈值,低于该值的边缘将被忽略。

默认:2

EdgeType

选择搜索的边缘类型(单边缘或双边缘)。

默认:1 - Single

Enabled

指定是否执行对象。

默认:True

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

FittingThreshold 指定用于直线拟合的边缘结果。
Frame

指定要使用哪个位置的定位框。

默认:none

FrameResult

指定需使用Frame的第几个结果。

默认: 1

Graphics

设置显示的图表模式。

默认:1 - All

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

Name

用于为LineFinder对象分配一个唯一的名称。

默认:LineFind01

NumberOfEdges

指定要查找边缘的数目。

默认:5

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

Polarity

规定LineFinder对象是应该搜索浅色到深色的过度(LightToDark)还是深色到浅色的过度(DarkToLight)。

默认:1 - LightToDark

ScoreWeightContrast

根据对比度设置得分百分比。

默认:50

ScoreWeightStrength

根据边缘强度设置得分百分比。

默认:50

SearchWidth

定义边缘搜索的宽度。范围:3 - 99

默认:3

SearchWin

仅限运行时间。

在一次调用中设置或返回搜索窗口左侧参数、顶部参数、高度参数和宽度参数。

SearchWinAngle 定义待搜索区域的角度。
SearchWinCenterX 定义待搜索区域中心的X轴坐标值。
SearchWinCenterY 定义待搜索区域中心的Y轴坐标值。
SearchWinHeight 定义待搜索区域的高度(单位:pixel)。
SearchWinLeft 定义待搜索区域的最左边位置(单位:pixel)。
SearchWinTop 定义待搜索区域的最上边位置(单位:pixel)。
SearchWinWidth 定义待搜索区域的宽度(单位:pixel)。
StrengthTarget

设置搜索边缘的强度。

默认:0

StrengthVariation

设置StrengthTarget的变化量总和。

默认:0

X1 边缘起点位置的X坐标。
X2 边缘终点位置的X坐标。
Y1 边缘起点位置的Y坐标。
Y2 边缘终点位置的Y坐标。

LineFinder对象结果
以下列表是对Edge对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Angle 返回图像坐标系中检测到的边缘角度。
CameraX1 返回相机坐标系中检测到的边缘线起点的X坐标。
CameraY1 返回相机坐标系中检测到的边缘线起点的Y坐标。
CameraX2 返回相机坐标系中检测到的边缘线终点的X坐标。
CameraY2 返回相机坐标系中检测到的边缘线终点的Y坐标。
ClearanceOK 返回间隙的判断结果。
Contrast 返回检测到的边缘的平均对比度。
EdgeCameraXYU 返回在搜索过程中检测出来的边缘的CameraX, CameraY, Angle位置坐标。
EdgePixelXYU 返回在搜索过程中检测出来的边缘的PixelX, PixelY, Angle位置坐标。
EdgeRobotXYU 返回在搜索过程中检测出来的边缘的RobotX, RobotY, Angle位置坐标。
FitError 以均方根(RMS)返回各边缘点与检测到直线之间的距离。
Found 返回是否检测到了对象,即被检测对象或零件的形状得分是否超过了Accept属性的当前设置值。
Passed 返回测试结果合格与否。
PixelLine

仅限运行时间。

返回X1、Y1、X2和Y2四个直线坐标,并用像素表示。

Length 以mm为单位返回检测到的边缘线的长度
NumberFound

返回查找到的直线数目。

(最少是0个,最多是NumberToFind属性中设定的检测数量)。

PixelLength 返回检测到的边缘线的长度,单位为像素。
PixelX1 返回图像坐标系中检测到的边缘线起点的X坐标位置。
PixelY1 返回图像坐标系中检测到的边缘线起点的Y坐标位置。
PixelX2 返回图像坐标系中检测到的边缘线终点的X坐标位置。
PixelY2 返回图像坐标系中检测到的边缘线终点的Y坐标位置。
RobotX1 返回机器人坐标系中检测到的边缘线起点的X坐标。
RobotY1 返回机器人坐标系中检测到的边缘线起点的Y坐标位置。
RobotX2 返回机器人坐标系中检测到的边缘线终点的X坐标位置。
RobotY2 返回机器人坐标系中检测到的边缘线终点的Y坐标位置。
RobotU 返回机器人坐标系中检测到的边缘线的角度。
Strength 返回检测到的边缘的平均强度。
Time 返回处理对象所需要的时间(单位:毫秒)。

使用LineFinder对象
接下来的几节将指导您如何创建和使用LineFinder对象。

  • 创建一个新的LineFinder对象
  • 设置搜索窗口的位置和尺寸
  • 设置LineFinder对象的相关属性
  • 测试LineFinder对象并检查结果
  • 调整属性并再次测试
    开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击[New Sequence]按钮来创建一个新的视觉序列。
    如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。
    有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅 5.视觉序列。
    视觉序列

第1步:创建一个新的LineFinder对象
(1)点击Vision Guide工具栏中的[All Tools] - [LineFinder]按钮。
(2)将鼠标移动至图像显示区域。鼠标指针将变为LineFinder对象图标。
(3)继续移动鼠标,直至图标位于图像显示屏中的目标位置。然后再点击鼠标左键,创建对象。
(4)注意:对象名称将自动创建。本示例中创建的对象名为“LineFind01”,因为它是在本序列中创建的第一个LineFind对象。(稍后将说明如何修改名称。)

第2步:设置搜索窗口的位置和大小
屏幕上将显示一个与下图相似的LineFinder对象

新LineFinder对象

符号 说明
a 序列中的步骤号
b 对象名称
c 尺寸和方向手柄
d 方向指示器(搜索方向)

1.点击LineFinder对象的名称标签,然后保持按下鼠标的同时拖动LineFinder对象,以将搜索窗口的左上角与所需位置对齐。
2.点击尺寸手柄并拖动鼠标,更改LineFinder对象搜索窗口的大小,并将其调整为适当尺寸。

第3步:设置LineFinder对象属性
现在设置LineFinder对象的属性值。要设置属性,仅需点击相关属性值字段,然后再重新输入一个新的值。或者如果显示有下拉列表,则点击该列表中的相应选项即可。
以下显示的是一些LineFinder对象更常用的属性。其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”
使用AngleMode属性设置角度输出格式。有关更多详细内容,请参阅 Line对象。

属性 说明
EdgeType(单边缘)

选择搜索边缘的类型。

如果设置为双边缘,则会分别搜索每个方向的边缘,然后返回中心点位置。

Name属性(“LineFindxx”) 新创建的LineFinder对象中,默认的项目名称是“LineFind**”。在一个视觉序列中要使用多个LineFinder对象时,使用**的编号对LineFinder进行区分。默认情况下,会将在视觉序列序列中使用的第一个LineFinder对象命名为“LineFind01”。需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示LineFinder对象名称的地方都会变为新的名称。
NumberOfEdges (1) 沿着边缘搜索线搜索1条或以上的边缘。
Polarity (LightToDark) 如果您要寻找DarkToLight(深色到浅色)的边缘,请更改Polarity设置。

第4步:运行LineFinder对象并检查结果
运行LineFinder对象仅需做到以下几点:
点击执行面板上对象的[Run]按钮。然后将显示LineFinder对象的结果。这时需检查的主要结果如下。

结果 说明
Angle结果 返回图像坐标系中检测到的边缘线的角度。
Length结果

返回相机坐标系中检测到的边缘线的长度。

单位:mm

PixelLength结果

返回图像坐标系中检测到的边缘线的长度。

单位:pixels

PixelX1结果

PixelY1结果

返回图像坐标系中检测到的边缘线起点的XY坐标位置。

PixelX2结果

PixelY2结果

返回图像坐标系中检测到的边缘线终点的XY坐标位置。

CameraX1结果

CameraY1结果

返回相机坐标系中检测到的边缘线起点的XY坐标位置。

如果未进行校准,则返回“no cal”。

CameraX2结果

CameraY2结果

返回相机坐标系中检测到的边缘线终点的XY坐标位置。

如果未进行校准,则返回“no cal”。

RobotX1结果

RobotY1结果

返回机器人坐标系中检测到的边缘线起点的XY坐标位置。

如果未进行校准,则返回“no cal”。

RobotX2结果

RobotY2结果

返回机器人坐标系中检测到的边缘线终点的XY坐标位置。

如果未进行校准,则返回“no cal”。

RobotU结果 返回机器人坐标系中检测到的边缘线的角度。

LineInspector对象

LineInspector对象描述
LineInspector对象用于检查图像中的直线。
LineInspector对象会自动处理多个Edge对象,以识别所检查直线的缺陷。
图像中的对象的边缘由灰度值“从深到浅”或“从浅到深”的变化表示。可以在多个像素上观察这种变化。
LineFinder对象先根据Polarity属性的定义(“从深到浅”或“从浅到深”的变化),检测出深浅变化,然后将检测出的位置定义为单边缘的边缘位置。您还可以更改EdgeType属性,搜索双边缘。搜索双边缘时,会查找两个相对的边,并返回中间点作为结果。

LineInspector对象布局
LineInspector对象的外观与LineFinder工具类似。LineInspector对象的搜索窗口包含多条边缘搜索线。LineInspector对象沿着直线,朝方向指示器指示的方向,搜索颜色的变化(由浅到深或由深到浅)。通过边缘搜索读取的数据用于确定直线的缺陷。

LineInspector对象布局

符号 说明
a 序列中的步骤号
b 对象名称
c 边缘搜索线
d 位置、尺寸和偏移手柄
e 将检查的线
f 方向指示器(搜索方向)

可以将LineInspector对象放在任何方向(不仅是垂直或水平)上,进行搜索。

如需旋转对象,请顺时针或逆时针拖动外侧的尺寸手柄。LineFinder结果可用于要检查的直线。这种情况下,可将LineFinder设置为LineObject。

符号 说明
a 外侧尺寸手柄(X1、Y1)
b 外侧尺寸手柄(X2、Y2)

如需更改待检查的直线的宽度,请拖拽外部尺寸手柄,使其靠近或远离直线中心即可。
如需更改边缘搜索的尺寸,可拖动内部尺寸手柄。

LineInspector搜索
下图所示为有缺陷的对象的一部分。

LineInspector会找到缺陷,如下所示。所检查的直线中每个边缘搜索位置必须超过DefectLevelThreshPos或DefectLevelThreshNeg属性的值。此外,缺陷面积必须大于MinArea并小于MaxArea。

符号 说明
a 缺陷
b DefectLevelThreshNeg
c 将检查的线
d DefectLevelThreshPos

LineInspector对象属性
以下列表是对LineInspector对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

Accept

指定形状得分,用于判断是否以检测到检测对象。检测对象的得分需要大于或等于设定的形状得分。

默认:100

CalRobotPlacePos 在设计和程序运行时校准RobotPlacePos。
Caption

为LineInspector对象指定标题。

默认:空白

ContrastTarget

设定边缘搜索所需的对比度。

默认:0(最佳对比度)

ContrastVariation

选择ContrastTarget允许的对比度变化量。

默认:0

CoordObject

指定复制结果的Coordinates对象。执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。

默认:None

CurrentResult 可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。
DefectAreaExtended

设置是否扩展缺陷区域插值。

默认:False

DefectLevelThreshNeg

设置直线下方的缺陷阈值。

默认:2

DefectLevelThreshPos

设置直线上方的缺陷阈值。

默认:2

Description

设定用户指定的描述。

默认:空白

EdgeSort 设置检测到的边缘结果的排序方式。
EdgeThreshold

设置阈值,低于该值的边缘将被忽略。

默认:2

EdgeType

选择搜索的边缘类型(单边缘或双边缘)。

默认:1 - Single

Enabled

指定是否执行对象。

默认:True

EndPntObjResult

指定使用EndPointObject的哪个结果。

默认:1

EndPointObject

指定使用哪个视觉对象来定义直线的终点。

默认:Screen

EndPointType

指定用于定义直线终点的终点类型。

默认:0 - Point

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

Frame

指定要使用哪个位置的定位框。

默认:none

FrameResult

指定需使用Frame的第几个结果。

默认: 1

Graphics

设置显示的图表模式。

默认:1 - All

InspectEndOffset

设置停止检查的直线终点的偏移量。

默认:15

InspectStartOffset

设置开始检查的直线起点的偏移量

默认:15

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

LineObject

规定在检查之前,用于查找直线的对象。

默认:None

LineObjResult

定义在LineObject中将使用的结果。

默认:1

MaxArea

确定Blob对象的Area上限。

被检测到的缺陷对象返回的Area结果,必须小于MaxArea属性的设置值。

默认:100,000

MinArea

确定Blob对象的Area下限。

被检测到的缺陷对象返回的Area结果,必须大于MinArea属性的设置值。

默认:25

MissingEdgeType

确定如何处理未检测出的边缘。

默认:Interpolate

Name

用于为LineInspector对象分配一个唯一的名称。

默认:LineInsp01

NumberOfEdges

指定要查找边缘的数目。

默认:20

NumberToFind

规定了在当前搜索窗口中待查找的对象的数目。

默认:1

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:AllNotFound

Polarity

规定LineInspector对象是应该搜索浅色到深色的过度(LightToDark)还是深色到浅色的过度(DarkToLight)。

默认:1 - LightToDark

ScoreWeightContrast

根据对比度设置得分百分比。

默认:50

ScoreWeightStrength

根据边缘强度设置得分百分比。

默认:50

SearchWidth

定义边缘搜索的宽度。范围:3 - 99

默认:3

SearchWinHeight 定义待搜索区域的高度(单位:pixel)。
SearchWinLeft 定义待搜索区域的最左边位置(单位:pixel)。
SearchWinTop 定义待搜索区域的最上边位置(单位:pixel)。
SearchWinWidth 定义待搜索区域的宽度(单位:pixel)。
SizeToFind

选择要查找的缺陷尺寸。

默认:1 - Largest

StartPntObjResult

指定使用StartPointObject的哪个结果。

默认:1

StartPointObject

指定使用哪个视觉对象来定义直线的起点。

默认:Screen

StartPointType

指定用于定义直线起点的起点类型。

默认:0 - Point

StrengthTarget

设置搜索边缘的强度。

默认:0

StrengthVariation

设置StrengthTarget的变化量总和。

默认:0

X1 边缘起点位置的X坐标。
X2 边缘终点位置的X坐标。
Y1 边缘起点位置的Y坐标。
Y2 边缘终点位置的Y坐标。

LineInspector对象结果
以下列表是对LineInspector对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Area 返回缺陷的面积,用像素表示。
CameraX 返回相机坐标系中缺陷的X坐标。
CameraY 返回相机坐标系中缺陷的Y坐标。
Contrast 返回检测到的边缘的平均对比度。
DefectLevel 返回缺陷水平。
Found 返回是否检测到了对象,即被检测对象或零件的形状得分是否超过了Accept属性的当前设置值。
Length 返回缺陷的长度,单位为毫米。
Passed 返回测试结果合格与否。
PixelLength 返回缺陷的长度,用像素表示。
NumberFound

返回查找到的缺陷数目。

(最少是0个,最多是NumberToFind属性中设定的检测数量)。

PixelX 返回缺陷的X坐标位置。
PixelY 返回缺陷的Y坐标位置。
PixelXYU

仅限运行时间。

返回已找到的缺陷位置的PixelX、PixelY和PixelU坐标(以像素为单位)。

RobotX 返回机器人坐标系中缺陷的X坐标值。
RobotY 返回机器人坐标系中缺陷的Y坐标值。
RobotU 返回机器人坐标系中缺陷的U坐标值。
RobotXYU

仅限运行时间。

返回机器人坐标系中已找到的缺陷位置的RobotX、RobotY和RobotU坐标。

Strength 返回检测到的边缘的平均强度。
Time 返回处理对象所需要的时间(单位:毫秒)。
TotalArea 返回所有已查找到的缺陷的总面积,用像素表示。

使用LineInspector对象
接下来的几节将介绍如何创建和使用LineInspector对象。

  • 创建一个新的LineInspector对象
  • 设置搜索窗口的位置和尺寸
  • 设置LineInspector对象的相关属性
  • 测试LineInspector对象并检查结果
  • 调整属性并再次测试
    开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击[New Sequence]按钮来创建一个新的视觉序列。
    如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。
    有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅 5.视觉序列。
    视觉序列

第1步:创建一个新的LineInspector对象
(1)点击Vision Guide工具栏中的[All Tools] -[LineInspector]按钮。
(2)将鼠标移动至图像显示区域。鼠标指针将变为LineInspector对象图标。
(3)继续移动鼠标,直至图标位于图像显示屏中的目标位置。然后再点击鼠标左键,创建对象。
(4)注意:对象名称将自动创建。本示例中创建的对象名为“LineInsp01”,因为它是在本序列中创建的第一个LineInspector对象。(稍后将说明如何修改名称。)

第2步:设置搜索窗口的位置和大小
屏幕上将显示一个与下图相似的LineInspector对象:

新建LineInspector对象

1.点击LineInspector,然后保持按下鼠标的同时拖动LineInspector对象,以将搜索窗口的左上角与所需位置对齐。
2.点击尺寸手柄并拖动鼠标,更改LineInspector对象搜索窗口的大小,并将其调整为适当尺寸。

第3步:设置LineInspector对象属性
现在,我们可以设置LineInspector对象的属性值了。要设置属性,仅需点击相关属性值字段,然后再重新输入一个新的值。或者如果显示有下拉列表,则点击该列表中的相应选项即可。
以下显示的是一些LineInspector对象更常用的属性。其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
EdgeType(单边缘)

选择搜索边缘的类型。

如果设置为双边缘,则会分别搜索每个方向的边缘,然后返回中心点位置。

Name属性(“LineInspxx”) 新创建的LineInspector对象中,默认的项目名称是“LineInsp**”。在一个视觉序列中要使用多个LineInspector对象时,使用**的编号对LineInspector进行区分。默认情况下,会将在视觉序列序列中使用的第一个LineInspector对象命名为“LineInsp01”。需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示LineInspector对象名称的地方都会变为新的名称。
NumberToFind (1) 沿着边缘搜索线搜索1条或以上的边缘。
Polarity (LightToDark) 如果您要寻找DarkToLight(深色到浅色)的边缘,请更改Polarity设置。

第4步:运行LineInspector对象并检查结果
如果需要运行LineInspector对象,仅需做到以下几点:
点击执行面板上对象的[Run]按钮。然后将显示LineInspector对象的结果。这时需检查的主要结果有:

结果 说明
Area结果 查找到的缺陷面积(用像素表示)。

PixelX结果

PixelY结果

返回图像坐标系中缺陷的XY坐标。

CameraX结果

CameraY结果

在相机坐标系中返回缺陷对象的XY坐标值。

如果相机尚未完成校准则不会返回任何值,而是返回[No Cal]。

RobotX结果

RobotY结果

返回机器人坐标系中缺陷对象的的XY坐标。如果未进行校准,则返回“no cal”。

ArcFinder对象

ArcFinder对象描述
ArcFinder对象用于识别图像中圆弧/椭圆弧的位置。
ArcFinder对象自动处理多个边缘搜索,以识别圆弧的半径和中心点,或椭圆弧的长轴、短轴和角度,然后识别出圆弧/椭圆弧。
图像中的对象的边缘由灰度值“从深到浅”或“从浅到深”的变化表示。可以在多个像素上观察这种变化。
ArcFinder对象先根据Polarity属性的定义(“从深到浅”或“从浅到深”的变化),检测出深浅变化,然后将检测出的位置定义为单边缘的边缘位置。您还可以更改EdgeType属性,搜索双边缘。搜索双边缘时,会查找两个相对的边,并返回中间点作为结果。
使用ArcSearchType属性,定义边缘类型(圆弧/椭圆弧)。

ArcFinder对象布局
ArcFinder对象与Correlation对象和Blob对象不同,ArcFinder对象的搜索窗口为圆形,并通过起点角度、终点角度、外半径和内半径来确定。边缘搜索线均匀分布在起点角度和终点角度之间。边缘搜索线的数目通过NumberOfEdges属性指定。Direction属性可以指定搜索方向(从内径到外径,或从外径到内径)。

ArcFinder对象布局

符号 说明
a 序列中的步骤号
b 对象名称
c 方向指示器(搜索方向)
d 尺寸和方向手柄

ArcFinder对象将中心点移至要搜索的弧形的中心近似点,然后调整RadiusInner和RadiusOuter属性,从而使待查找的弧位于搜索区域内。

ArcFinder对象属性
以下列表是对ArcFinder对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

Accept

指定形状得分,用于判断是否以检测到检测对象。

检测对象的得分需要大于或等于设定的形状得分。

默认:100

AngleEnd

指定执行圆弧/椭圆形搜索范围的终止角度。

默认:135

AngleStart

指定执行圆弧/椭圆形搜索范围的起始角度。

默认:45

ArcSearchType 指定要搜索的边缘类型(圆弧/椭圆弧)。
CalRobotPlacePos 在设计和程序运行时校准RobotPlacePos。
Caption

为ArcFinder对象指定标题。

默认:空白

CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

默认:Screen

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则ArcFinder对象将应用于指定视觉对象的所有结果(NumberFound)。

默认:1

CenterPntOffsetX

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。

默认:0

CenterPntOffsetY

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。

默认:0

CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

默认:False

CenterX

指定用作对象中心位置的X坐标。

当CenterPointObject属性已被其他视觉对象设定时,本属性将无效且被自动设置。

CenterY

指定用作对象中心位置的Y坐标。

当CenterPointObject属性已被其他视觉对象设定时,本属性将无效且被自动设置。

CheckClearanceFor 设定确认间隙的对象。
ClearanceCondition 设定间隙的判断方法。
ContrastTarget

设定边缘搜索所需的对比度。

默认:0(best contrast)

ContrastVariation

选择ContrastTarget允许的对比度变化量。

默认:0

CoordObject

指定复制结果的Coordinates对象。执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。

默认:None

CurrentResult 可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。
Description

设定用户指定的描述。

默认:空白

Direction

设置边缘搜索的方向。

默认:InsideOut

EdgeSort 设置检测到的边缘结果的排序方式。
EdgeThreshold

设置阈值,低于该值的边缘将被忽略。

默认:2

EdgeType

选择搜索的边缘类型(单边缘或双边缘)。

默认:1 - Single

Enabled

指定是否执行对象。

默认:True

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

FittingThreshold 指定用于弧线拟合的边缘结果。
Frame

指定要使用哪个位置的定位框。

默认:none

FrameResult

指定需使用Frame的第几个结果。

默认: 1

Graphics

设置显示的图表模式。

默认:1 - All

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

Name

用于为ArcFinder对象分配一个唯一的名称。

默认:ArcFind01

NumberOfEdges

指定要查找边缘的数目。

默认:5

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

Polarity

规定ArcFinder对象是应该搜索浅色到深色的过度(LightToDark)还是深色到浅色的过度(DarkToLight)。

默认:1 - LightToDark

RadiusInner 指定检测范围的内径。
RadiusOuter 指定检测范围的外径。
ScoreWeightContrast

根据对比度设置得分百分比。

默认:50

ScoreWeightStrength

根据边缘强度设置得分百分比。

默认:50

SearchWidth

定义边缘搜索的宽度。

范围:3 - 99

默认:3

ShowExtension 确定是否显示两端延伸的边缘线。
StrengthTarget

设置搜索边缘的强度。

默认:0

StrengthVariation

设置StrengthTarget的变化量总和。

默认:0

ArcFinder对象结果
以下列表是对ArcFinder对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Angle 返回检测到的椭圆弧的角度。
Angle1 返回图像坐标系中检测到的边缘的起点角度。
Angle2 返回图像坐标系中检测到的边缘的终点角度。
CameraX 返回相机坐标系中检测到的圆弧/椭圆弧边缘的中心X坐标。
CameraY 返回相机坐标系中检测到的圆弧/椭圆弧边缘的中心Y坐标。
CameraXYU

仅限运行时间。

返回相机坐标系中已检测到零件位置的CameraX、CameraY和CameraU坐标。

ClearanceOK 返回间隙的判断结果。
Contrast 返回检测到的圆弧/椭圆弧边缘的对比度。
EdgeCameraXYU 返回在搜索过程中检测出来的边缘的CameraX, CameraY, Angle位置坐标。
EdgePixelXYU 返回在搜索过程中检测出来的边缘的PixelX, PixelY, Angle位置坐标。
EdgeRobotXYU 返回在搜索过程中检测出来的边缘的RobotX, RobotY, Angle位置坐标。
FitError 以均方根(RMS)返回各边缘点与检测到圆弧之间的距离。
Found 返回是否检测到了对象,即被检测对象或零件的形状得分是否超过了Accept属性的当前设置值。
FoundMajorDiam 检测到的椭圆形边缘的长轴。
FoundMinorDiam 检测到的椭圆形边缘的短轴。
FoundRadius 检测到的圆形边缘的半径。
MaxError 返回与检测到的圆弧/椭圆弧边缘的最大偏差,以像素表示。
NumberFound 返回查找到的圆弧数目。
Passed 返回测试结果合格与否。
PixelMajorDiam 返回ArcFinder检测到的椭圆弧的长轴的长度。
PixelMinorDiam 返回ArcFinder检测到的椭圆弧的短轴的长度。
PixelRadius 返回检测到的圆弧的半径(単位: 像素)
PixelX 返回图像坐标系中检测到的圆弧/椭圆弧边缘中心的X坐标。
PixelY 返回图像坐标系中检测到的圆弧/椭圆弧边缘中心的Y坐标。
PixelXYU

仅限运行时间。

返回已找到的圆/椭圆形边缘中心位置的PixelX、PixelY和PixelU坐标(以像素为单位)。

RobotX 返回机器人坐标系中检测到的圆弧/椭圆弧边缘中心的X坐标。
RobotY 返回机器人坐标系中检测到的圆弧/椭圆弧边缘中心的Y坐标。
RobotXYU 返回机器人坐标系中已找到的圆弧/椭圆弧边缘中心位置的RobotX、RobotY和RobotU坐标。
Strength 返回检测到的边缘的强度。
Time 返回处理对象所需要的时间(单位:毫秒)。

使用ArcFinder对象
接下来的几节将指导您如何创建和使用ArcFinder对象。

  • 创建一个新的ArcFinder对象
  • 设置搜索窗口的位置和尺寸
  • 配置ArcFinder对象的相关属性
  • 测试ArcFinder对象并检查结果
  • 调整属性并再次测试

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击[New Sequence]按钮来创建一个新的视觉序列。
如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。
有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅 5.视觉序列。

第1步:创建一个新的ArcFinder对象
(1)点击Vision Guide工具栏中的[All Tools] - [ArcFinder]按钮。
(2)将鼠标移动至图像显示区域。鼠标指针将变为ArcFinder对象图标。
(3)继续移动鼠标,直至图标位于图像显示屏中的目标位置。然后再点击鼠标左键,创建对象。
(4)请注意,对象名称将自动创建。本示例中创建的对象名为“ArcFind01”,因为它是在本序列中创建的第一个ArcFinder。(稍后将说明如何修改名称。)

第2步:设置搜索窗口的位置和大小
屏幕上将显示一个与下图相似的ArcFinder对象。

新ArcFinder对象

符号 说明
a 序列中的步骤号
b 对象名称
c 方向指示器(搜索方向)
d 尺寸和方向手柄

1.点击ArcFinder对象的名称标签,然后保持按下鼠标的同时拖动ArcFinder对象,以将搜索窗口的左上角与所需位置对齐。
2.点击尺寸手柄并拖动鼠标,更改ArcFinder对象搜索窗口的大小,并将其调整为适当尺寸。

第3步:设置ArcFinder对象属性
现在,我们可以设置ArcFinder对象的属性值了。要设置属性,仅需点击相关属性值字段,然后再重新输入一个新的值。或者如果显示有下拉列表,则点击该列表中的相应选项即可。
以下显示的是ArcFinder对象更常用的一些属性。其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
EdgeType(单边缘)

选择搜索边缘的类型。

如果设置为双边缘,则会分别搜索每个方向的边缘,然后返回中心点位置。

Name属性(“ArcFindxx”) 新创建的ArcFinder对象中,默认的项目名称是“ArcFind**”。在一个视觉序列中要使用多个ArcFinder对象时,使用**的编号对ArcFinder进行区分。默认情况下,会将在视觉序列序列中使用的第一个ArcFinder对象命名为“ArcFind01”。需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示ArcFinder对象名称的地方都会变为新的名称。
NumberOfEdges(5) 搜索5条边缘,以找到圆弧边缘。
Polarity (LightToDark)

使用“LightToDark”属性搜索边缘。

如果您要寻找DarkToLight(深色到浅色)的边缘,请更改Polarity设置。

第4步:运行ArcFinder对象并检查结果
运行ArcFinder对象仅需完成以下操作:
点击执行面板上对象的[Run]按钮。然后将显示ArcFinder对象的结果。这时需检查的主要结果如下。

结果 说明
Angle1结果 返回图像坐标系中检测到的圆弧边缘的起点角度。
Angle2结果 返回图像坐标系中检测到的圆弧边缘的终点角度。
FoundRadius结果

返回检测到的圆弧边缘的半径。

单位:pixels

MaxError结果

返回与检测到的圆弧边缘的最大偏差,以像素表示。

单位:pixels

PixelX结果

PixelY结果

返回图像坐标系中检测到的圆弧边缘中心的XY坐标位置。

CameraX结果

CameraY结果

在相机坐标系中返回圆弧检测边缘的中心XY坐标位置。

如果未进行校准,则返回“no cal”。

RobotX结果

RobotY结果

在机器人坐标系中返回圆弧检测边缘的中心XY坐标位置。

如果未进行校准,则返回“no cal”。

ArcInspector对象

ArcInspector对象描述
ArcInspector对象用于检查圆弧/椭圆弧的缺陷。
为了查找缺陷,将执行一系列边缘搜索,以确定所检查圆弧/椭圆弧中的异常情况。
图像中的对象的边缘由灰度值“从深到浅”或“从浅到深”的变化表示。可以在多个像素上观察这种变化。
ArcInspector对象先根据Polarity属性的定义(“从深到浅”或“从浅到深”的变化),检测出深浅变化,然后将检测出的位置定义为单边缘的边缘位置。您也可以通过修改EdgeType属性,以搜索双边缘。如果搜索双边缘,则可检测到两个相对的边缘,返回的中点。

ArcInspector对象布局
ArcInspector对象的外观与ArcFinder对象类似。ArcInspector对象能从圆弧/椭圆弧的中心沿直线,朝外半径方向搜索边缘。各边缘搜索线会朝方向指示器指示的方向,搜索颜色的变化(由浅到深或由深到浅)。通过NumberOfEdges属性设置用于检查的边缘数。AngleStart属性指定待检查弧的起始角度。AngleEnd属性指定待检查弧的终点角度。边缘搜索线均匀地分布在(AngleStart + InspectStartOffset)和(AngleEnd – InspectEndOffset)之间。


ArcInspector对象布局

符号 说明
a 序列中的步骤号
b 对象名称
c 方向指示器(搜索方向)
d RadiusOuter手柄
e 尺寸和偏移手柄
f RadiusInner手柄

ArcInspector对象将CenterX和CenterY与圆弧的中心对齐,然后调整RadiusInner和RadiusOuter属性,使待检查的圆弧半径位于搜索区域以内,从而搜索圆弧上的缺陷。ArcInspector对象可以通过Direction属性,设置缺陷搜索方向(从内半径到外半径(默认),或从外半径到内半径)。
您也可以使用ArcFinder对象先找到一个圆弧,然后使用ArcInspector对象检查该弧。这需要指定ArcObject属性使用ArcFinder对象。

ArcInspector搜索
下图所示为有缺陷的圆形对象的一部分。

ArcInspector会找到缺陷,如下所示。所检查的弧中每个边缘搜索位置必须超过DefectLevelThreshPos或DefectLevelThreshNeg属性的值。此外,缺陷面积必须大于MinArea并小于MaxArea。

符号 说明
a 缺陷
b DefectLevelThreshPos
c 待检查的弧
d DefectLevelThreshNeg

ArcInspector对象属性
以下列表是对ArcInspector对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

Accept

指定形状得分,用于判断是否以检测到检测对象。

检测对象的得分需要大于或等于设定的形状得分。

默认:100

AngleEnd

指定执行圆弧/椭圆形搜索范围的终止角度。

默认:135

AngleStart

指定执行圆弧/椭圆形搜索范围的起始角度。

默认:45

ArcObject

指定ArcFinder对象,该对象将搜索要检查的圆弧/椭圆形。

默认:None

ArcObjResult

定义在ArcObject中将使用的结果。

默认:1

ArcSearchType

指定要搜索的边缘的类型(圆弧/椭圆形)。

指定ArcObject属性时,需要与指定ArcFinder的ArcType匹配。

CalRobotPlacePos 在设计和程序运行时校准RobotPlacePos。
Caption

为ArcInspector对象指定标题。

默认:空白

CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

默认:Screen

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则ArcInspector对象将应用于指定视觉对象的所有结果(NumberFound)。

默认:1

CenterPntOffsetX

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。

默认:0

CenterPntOffsetY

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。

默认:0

CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

默认:False

CenterX

指定用作对象中心位置的X坐标。

当CenterPointObject属性已被其他视觉对象设定时,本属性将无效且被自动设置。

CenterY

指定用作对象中心位置的Y坐标。

当CenterPointObject属性已被其他视觉对象设定时,本属性将无效且被自动设置。

ContrastTarget

设定边缘搜索所需的对比度。

默认:0(best contrast)

ContrastVariation

选择ContrastTarget允许的对比度变化量。

默认:0

CoordObject 指定复制结果的Coordinates对象 执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。默认:None
CurrentResult 可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。
Description

设定用户指定的描述。

默认:空白

DefectAreaExtended

设置是否扩展缺陷区域插值。

默认:False

DefectLevelThreshNeg

设置直线下方的缺陷阈值。

默认:2

DefectLevelThreshPos

设置直线上方的缺陷阈值。

默认:2

Direction

设置边缘搜索的方向。

默认:InsideOut

EdgeSort 设置检测到的边缘结果的排序方式。
EdgeThreshold

设置阈值,低于该值的边缘将被忽略。

默认:2

EdgeType

选择搜索的边缘类型(单边缘或双边缘)。

默认:1 - Single

EllipseAngle 指定ArcInspector的检查基线的椭圆弧的角度。
EllipseMajorDiam 指定ArcInspector的检查基线的椭圆弧的长轴长。
EllipseMinorDiam 指定ArcInspector的检查基线的椭圆弧的短轴长。
Enabled

指定是否执行对象。

默认:True

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

Frame

指定要使用哪个位置的定位框。

默认:none

FrameResult

指定需使用Frame的第几个结果。

默认: 1

Graphics

设置显示的图表模式。

默认:1 - All

InspectStartOffset

设置开始检查的圆弧起点的偏移量。

默认:5

InspectEndOffset

设置停止检查的直线终点的偏移量。

默认:5

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

MaxArea

确定缺陷的Area上限。

仅可检测到小于MaxArea属性且大于MinArea属性的缺陷。

默认:100,000

MinArea

确定缺陷的Area下限。

仅可检测到小于MaxArea属性且大于MinArea属性的缺陷。

默认:25

MissingEdgeType

确定如何处理未检测出的边缘。

默认:Interpolate

Name

用于为ArcInspector对象分配一个唯一的名称。

默认:ArcInsp01

NumberOfEdges

指定要查找边缘的数目。

默认:20

NumberToFind

规定了在当前搜索窗口中待查找的对象的数目。

默认:1

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:AllNotFound

Polarity

规定ArcInspector对象是应该搜索浅色到深色的过度(LightToDark)还是深色到浅色的过度(DarkToLight)。

默认:1 - LightToDark

Radius 定义从对象中心到对象最外层搜索环的距离。
RadiusInner 指定检测范围的内径。
RadiusOuter 指定检测范围的外径。
ScoreWeightContrast

根据对比度设置得分百分比。

默认:50

ScoreWeightStrength

根据边缘强度设置得分百分比。

默认:50

SearchWidth

定义边缘搜索的宽度。

范围:3 - 99

默认:3

SizeToFind

选择要查找的缺陷尺寸。

默认:1 - Largest

StrengthTarget

设置搜索边缘的强度。

默认:0

StrengthVariation

设置StrengthTarget的变化量总和。

默认:0

ArcInspector对象结果
以下列表是对ArcInspector对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Area 返回缺陷的面积,用像素表示。
CameraX 返回相机坐标系中缺陷的X坐标。
CameraY 返回相机坐标系中缺陷的Y坐标。
CameraXYU

仅限运行时间。

返回相机坐标系中已检测到零件位置的CameraX、CameraY和CameraU坐标。

Contrast 返回检测到的边缘的平均对比度。
DefectLevel 返回缺陷水平。
Length 返回缺陷的长度,单位为毫米。
PixelLength 返回缺陷的长度,用像素表示。
NumberFound

返回查找到的缺陷数目。

(最少是0个,最多是NumberToFind属性中设定的检测数量)。

Passed 返回测试结果合格与否。
PixelX 返回图像坐标系中缺陷的X坐标。
PixelY 返回图像坐标系中缺陷的Y坐标。
PixelXYU

仅限运行时间。

返回已找到的缺陷位置的PixelX、PixelY和PixelU坐标(以像素为单位)。

RobotX 返回机器人坐标系中缺陷的X坐标值。
RobotY 返回机器人坐标系中缺陷的Y坐标值。
RobotU 返回机器人坐标系中缺陷的U坐标值。
RobotXYU

仅限运行时间。

返回机器人坐标系中已找到的缺陷位置的RobotX、RobotY和RobotU坐标。

Strength 返回检测到的边缘的强度。
Time 返回处理对象所需要的时间,单位毫秒。
TotalArea 返回所有已查找到的缺陷的总面积,用像素表示。

使用ArcInspector对象
接下来的几节将指导您如何创建和使用ArcInspector对象。

  • 创建一个新的ArcInspector对象
  • 设置搜索窗口的位置和尺寸
  • 配置ArcInspector对象的相关属性
  • 测试ArcInspector对象并检查结果
  • 调整属性并再次测试

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击[New Sequence]按钮来创建一个新的视觉序列。
如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。
有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅 5.视觉序列。
视觉序列

第1步:创建一个新的ArcInspector对象
(1)点击Vision Guide工具栏中的[All Tools] - [ArcInspector]按钮。
(2)将鼠标移动至图像显示区域。鼠标指针将变为ArcInspector对象图标。
(3)继续移动鼠标,直至图标位于图像显示屏中的目标位置。然后再点击鼠标左键,创建对象。
(4)注意:对象名称将自动创建。本示例中创建的对象名为“ArcInsp01”,因为它是在本序列中创建的第一个ArcInspector对象。(稍后将说明如何修改名称。)

第2步:设置搜索窗口的位置和大小
屏幕上将显示一个与下图相似的ArcInspector对象:


新建ArcInspector对象

符号 说明
a 待检查的弧
b RadiusOuter手柄
c AngleStart手柄
d RadiusInner手柄
e 中心点
f AngleEnd手柄

1.点击ArcInspector对象的名称标签,然后保持按下鼠标的同时拖动ArcInspector对象,以使中心点位于要检查圆弧的中心附近。
2.点击RadiusOuter、RadiusInner、AngleStart和AngleEnd尺寸手柄并拖动鼠标,更改ArcInspector对象搜索窗口的大小,并将其调整为适当尺寸。

第3步:设置ArcInspector对象属性
现在设置ArcInspector对象的属性值了。要设置属性,仅需点击相关属性值字段,然后再重新输入一个新的值。或者如果显示有下拉列表,则点击该列表中的相应选项即可。
以下显示的是一些ArcInspector对象更常用的属性。其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
EdgeType(单边缘)

选择搜索边缘的类型。

如果设置为双边缘,则会分别搜索每个方向的边缘,然后返回中心点位置。

Name属性
(“ArcInspxx”)

新创建的ArcInspector对象中,默认的项目名称是“ArcInsp**”。在一个视觉序列中要使用多个ArcInspector对象时,使用**的编号对ArcInspector进行区分。默认情况下,会将在视觉序列序列中使用的第一个ArcInspector对象命名为“ArcInsp01”。需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。

这样所有显示ArcInspector对象名称的地方都会变为新的名称。

NumberOfEdges

指定查找缺陷时将使用的边缘搜索数目。

默认为15,最大为99。

Polarity

默认的边缘搜索Polarity为LightToDark(浅色到深色)。

如果您要寻找DarkToLight(深色到浅色)的边缘,请更改Polarity设置。

Direction 指定边缘搜索应是InsideOut(从RadiusInner到RadiusOuter)还是OutsideIn(从RadiusOuter到RadiusInner)。
DefectLevelThreshPos 指定弧线上方,缺陷边缘到弧线边缘的最小距离。
DefectLevelThreshNeg 指定弧线下方,缺陷边缘到弧线边缘的最小距离。
MinArea 指定缺陷的最小面积,用像素表示。
MaxArea 指定缺陷的最大面积,用像素表示。

第4步:运行ArcInspector对象并检查结果
如果需要运行ArcInspector对象,仅需做到以下几点:
点击执行面板上对象的[Run]按钮。
然后将显示ArcFinder对象的结果。这时需检查的主要结果有:

结果 说明
Area结果 查找到的缺陷面积(用像素表示)。

PixelX结果

PixelY结果

返回图像坐标系中缺陷的XY坐标。

CameraX结果

CameraY结果

在相机坐标系中返回缺陷对象的XY坐标值。

如果相机尚未完成校准则不会返回任何值,而是返回[No Cal]。

RobotX结果

RobotY结果

返回机器人坐标系中缺陷的XY坐标。

如果未进行校准,则返回“no cal”。

DefectFinder对象

DefectFinder对象描述
DefectFinder对象用于确定模板图像和输入图像之间的差异。
搜索缺陷过程中,首先会计算搜索区域和模板之间的绝对差异图像,接下来对差异图像进行二进制对象分析,以查找缺陷。
最终获得以下缺陷特征:

  • 面积和周长
  • 重心
  • 主轴和力矩
  • 连通性
  • 边界矩形
  • 像素坐标系、相机坐标系、机器人坐标系中重心的坐标位置
  • 缺陷(二进制)的孔、粗糙度和密实度

DefectFinder对象布局
DefectFinder对象的布局是一个矩形,与Blob对象类似。但是,DefectFinder对象需要示教模型(模板)。在示教模型时,将使用搜索窗口指定的整个区域。没有像Correlation对象那样单独的模型窗口。
搜索窗口会确定DefectFinder搜索缺陷(图像差异)的面积范围。同时,也确定模板图像的面积。DefectFinder对象的示例,如下所示。


DefectFinder对象布局

符号 说明
a 序列中的步骤号
b 对象名称
c 搜索窗口

DefectFinder对象属性
以下列表是对DefectFinder对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

CalRobotPlacePos 在设计和程序运行时校准RobotPlacePos。
Caption

为DefectFinder对象指定标题。

默认:空白

CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

默认:Screen

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则DefectFinder对象将应用于指定视觉对象的所有结果(NumberFound)。

默认:1

CenterPntOffsetX

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。

默认:0

CenterPntOffsetY

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。

默认:0

CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

如果将SearchWinType设置为RotatedRectangle,搜索窗口则以Angle结果为基础进行旋转。

默认:False

CheckClearanceFor 设定确认间隙的对象。
ClearanceCondition 设定间隙的判断方法。
CoordObject

指定复制结果的Coordinates对象。执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。

默认:None

CurrentResult

可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。

默认:1

Description

设定用户指定的描述。

默认:空白

Enabled

指定是否执行对象。

默认:True

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

Frame

指定要使用哪个位置的定位框。

默认:None

FrameResult

指定需使用Frame的第几个结果。

默认:1

Graphics

设置显示的图表模式。

默认:1- All

KernelHeight 计算与模板图形有差异时,允许的像素差异量。(垂直方向)
KernelWidth 计算与模板图形有差异时,允许的像素差异量。(水平方向)
LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

LuminanceCorrection

设置使用亮度校正预处理。

默认:None

MaxArea

确定缺陷的Area上限。

被检测到的缺陷对象返回的Area结果,必须小于MaxArea属性的设置值。

默认:100,000

MinArea

确定缺陷的Area下限。

被检测到的缺陷对象返回的Area结果,必须大于MinArea属性的设置值。

默认:25

MinMaxArea

仅限运行时间。

用一条语句设置或返回MinArea和MaxArea。

Name

用于为DefectFinder对象分配一个唯一的名称。

默认:DefFind01

NumberToFind

规定了在搜索窗口中要查找的Blob对象的数目。

默认:1

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:AllNotFound

Polarity

设置要检测缺陷的Polarity。

默认:Both

RejectOnEdge

如果将属性设置为“True”,系统将忽略因为与搜索窗口边缘有接触而检测到的缺陷。

默认:False

SaveTeachImage 设置示教模型时,是否保存图像文件。
SearchWin

仅限运行时间。

在一次调用中设置或返回搜索窗口的左侧参数、顶部参数、高度参数和宽度参数。

SearchWinAngle 定义待搜索区域的角度。
SearchWinCenterX 定义待搜索区域中心的X轴坐标值。
SearchWinCenterY 定义待搜索区域中心的Y轴坐标值。
SearchWinHeight

定义待搜索区域的高度(单位:pixel)。

默认:100

SearchWinLeft 定义待搜索区域的最左边位置(单位:pixel)。
SearchWinTop 定义待搜索区域的最上边位置(单位:pixel)。
SearchWinType 定义待搜索区域的类型(Rectangle,RotatedRectangle,Circle)
SearchWinWidth

定义待搜索区域的宽度(单位:Pixel)。

默认:100

ShowModel

显示已登录的图像。

设置不要紧的像素。

SizeToFind

选择要查找的缺陷尺寸。

默认:1 - Largest

Sort

选择对象结果的排序方式。

默认:0 - None

ThresholdHigh

同ThresholdLow属性一起使用,用于定义被检测对象 (或对象)、背景和图像边缘的灰度范围。

ThresholdHigh属性用于定义图像的被检测对象区域的灰度范围的上限。在ThresholdLow和ThresholdHigh定义的灰度范围内的图像的任何部分的像素权重都会分配为1。

默认:128

ThresholdLow

同ThresholdHigh属性一起使用,用于确定表示特征(或对象)、背景和图像边缘的像素灰度区域。

区域ThresholdLow用于定义图像的被检测对象区域的灰度范围的下限。在ThresholdLow和ThresholdHigh定义的灰度范围内的图像的任何部分的像素权重都会分配为1。

默认:0

DefectFinder对象结果
以下列表是对DefectFinder对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Angle 返回被检测出零件的旋转量,用度数表示。
Area 返回缺陷的面积,用像素表示。
CameraX 返回相机坐标系中已找到的零件位置的X坐标位置。
CameraY 返回相机坐标系中已找到的零件位置的Y坐标位置。
CameraXYU 仅限运行时间。返回相机坐标系中已检测到零件位置的CameraX、CameraY和CameraU坐标。
ClearanceOK 返回间隙的判断结果。
Compactness 返回缺陷的密实度。
Extrema 仅限运行时间。返回缺陷极值的MinX、MaxX、MinY和MaxY像素坐标。
Found 回复是否找到了缺陷。
FoundOnEdge 当发现检测出的缺陷与搜索窗口边缘有接触时,则返回“True”。
Holes 返回缺陷中已查找到的孔洞数目。
MajorDiameter 当检测到的缺陷近似椭圆时,返回长直径。
MaxFeretDiameter 返回检测到的缺陷的最大费雷特直径。
MaxX 返回缺陷极值的最大X像素坐标,用像素表示。
MaxY 返回缺陷极值的最大Y像素坐标,用像素表示。
MinorDiameter 当检测到的缺陷近似椭圆时,返回短直径。
MinX 返回缺陷极值的最小X像素坐标,用像素表示。
MinY 返回缺陷极值的最小Y像素坐标,用像素表示。
NumberFound

返回查找到的缺陷数目。

(最少是0个,最多是NumberToFind属性中设定的检测数量)。

Passed 返回测试结果合格与否。
Perimeter 沿已查找到的缺陷外部边缘的像素数目。
PixelX 返回已找到的零件位置的X坐标位置(以像素为单位)。
PixelY 返回已找到的零件位置的Y坐标位置(以像素为单位)。
PixelXYU

仅限运行时间。

返回已找到的零件位置的PixelX、PixelY和PixelU坐标(以像素为单位)。

RobotX 返回机器人坐标系中检测到的对象的X坐标位置。
RobotY 返回机器人坐标系中检测到的对象的Y坐标位置。
RobotU 返回在机器人坐标系内已找到的零件位置的U坐标位置。
RobotXYU

仅限运行时间。

返回在机器人坐标系中已找到的零件位置的RobotX、RobotY和RobotU坐标。

Roughness 返回缺陷的粗糙度。
ShowAllResults

以表格形式在对话框中显示指定视觉对象的所有结果。

比较结果将更加容易。

Time 返回处理对象所需要的时间(单位:毫秒)。
TotalArea 返回所有已查找到的缺陷的总面积,用像素表示。

DefectFinder对象对模板图像的图像差异进行二进制对象处理。想了解更多的结果相关信息,请参阅 Blob对象。

使用DefectFinder对象
现在我们已回顾了二进制对象分析的作用,并已为理解如何使用Vision Guide 8.0 DefectFinder对象打下了基础。本节介绍如何使用DefectFinder对象。
使用DefectFinder对象的所需步骤如下:

  • 新建一个DefectFinder对象
  • 设置搜索窗口的位置和尺寸
  • 配置DefectFinder对象的相关属性
  • 示教并确认模板图像
  • 测试DefectFinder对象并检查结果
  • 调整属性并再次测试

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击 [New Sequence]按钮来创建一个新的视觉序列。
如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。
有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅 5.视觉序列。
视觉序列

第1步:创建一个新的DefectFinder对象
(1)点击Vision Guide工具栏中的[All Tools] - [DefectFinder]按钮。
(2)将鼠标移动至图像显示区域。鼠标光标将变为DefectFinder对象图标。
(3)继续移动鼠标,直至图标位于图像显示屏中的目标位置。然后再点击鼠标左键,创建对象。
(4)对象名称将自动创建。本示例中,由于是在本序列中创建的第一个DefectFinder对象,所以对象名称为“DefFind01”对象名称将自动创建。(稍后将说明如何修改名称。)

第2步:设置搜索窗口的位置和大小
屏幕上将显示一个与下图相似的DefectFinder对象。


新建DefectFinder对象布局

符号 说明
a 序列中的步骤号
b 对象名称
c 搜索窗口

1.点击DefectFinder对象的名称标签,然后保持按下鼠标的同时拖动DefectFinder对象,以将搜索窗口的左上角与所需位置对齐。
2.点击尺寸手柄并拖动鼠标,更改DefectFinder对象搜索窗口的大小,并将其调整为适当尺寸。(搜索窗口就是进行Blob搜索的区域。)

注意


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

第3步:设置DefectFinder对象属性
现在,我们可以设置DefectFinder对象的属性值了。以下显示的是DefectFinder对象特定且更常用的一些属性。
其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。

  • “Vision Guide 8.0 Properties and Results Reference”
  • DefectFinder对象属性列表

注意


周围照明和外部设备噪音可能会影响视觉序列的图像和结果。当受到周围照明和外部设备噪音的影响,拍摄的图像可能会损坏,并且检测到的位置可能是对象搜索区域中的任何位置。正确配置MaxArea、MinArea、RejectOnEdge等属性值,可降低错误检测的风险。

属性 说明
Name属性

新创建的DefectFinder对象中,默认的项目名称是“DefFind**”。在一个视觉序列中要使用多个DefectFinder对象时,使用**的编号对DefectFinder进行区分。

默认情况下,会将在视觉序列序列中使用的第一个DefectFinder对象命名为“DefFind01”。

需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示DefectFinder对象名称的地方都会变为新的名称。

KernelWidth,

KernelHeight属性

设置当计算与模板图形有差异时,允许多少像素的差异量。

设置的值越大,被检测对象的图像与模板图像的容差量就越大,但是将无法找到较小的缺陷。请根据被检测缺陷的大小和图像的偏差量进行设置。

MinArea,

MaxArea属性

规定了DefectFinder对象的面积,在这个范围中则视为“Found”(即返回的Found结果显示为“True”)。

默认范围很大,设置为25~100,000 (MinArea ~ MaxArea)。这就意味着,在调整MinArea和MaxArea属性前,运行新建的DefectFinder对象时,即使很多细微的缺陷也会被检测出来。所以需要根据被检测对象的缺陷大小,合理调整该属性的设定值。这样,如果发现一个超出范围的缺陷,也就能知道这并不是要检测的缺陷。

RejectOnEdge属性 不包括因接触搜索窗口而检测出来的缺陷。
PassType属性

可定义DefectFinder对象的检测结果良品/不良品的判断标准。

正常情况下,如果没有查到找任何缺陷,则判断为良品。将该属性设置为“AllNotFound”。

现在可以测试DefectFinder对象了。测试后将设置其它必要属性。

第4步:示教并确认模板图像
如果要示教DefectFinder对象的模板图像,点击执行面板上的[Teach]按钮。如果要确认已示教完的模板图像,在属性列表中点击ShowModel属性。

第5步:测试DefectFinder对象并检查结果
要运行DefectFinder对象,点击执行面板上[Run]按钮。然后将显示DefectFinder对象的结果。这时需检查的主要结果如下。当然,将来还会有其它有用的结果。

结果 说明
Found结果

回复是否查找到了缺陷对象。

如果查找到的缺陷对象不符合MinArea和MaxArea属性中确定的面积限制,则返回的查到结果将为“False”。

Passed结果 返回DefectFinder对象的测试结果合格与否。
Area结果 检测出的缺陷对象的面积(单位:pixel)。
Angle结果

缺陷对象的方向角度。

该角度根据短轴计算而得出,且介于 +/- 90度之间。

Time结果 返回DefectFinder对象执行所需时间。
PixelX、PixelY 已查找到缺陷对象重心的XY坐标位置(单位:pixel)。
MinX、MinY、MaxX、MaxY 这四个值定义了缺陷对象的边界矩形(Extrema)。

要点


在上述步骤示例中,由于尚未完成校准,所以RobotXYU, RobotX,RobotY, RobotU, CameraX, CameraY, CameraXYU的结果会返回“No Cal”。这就意味着无法进行校准,因此也无法计算机器人坐标系或相机坐标系相关的坐标结果。有关详细信息,请参考 7.视觉校准。

视觉校准

第6步:调整属性并再次测试
DefectFinder对象运行若干次之后,您可能会在查找缺陷时遇到一些问题,或者您还想微调某些属性设置。下面将介绍一些常见问题的故障排除方法和微调整技巧。

问题: 当DefectFinder对象的Found结果返回“True”时,请确认并调整以下项目。

  • 确认Polarity属性中设置的值。该属性定义查找方式,是在深色背景上查找浅色对象,还是在浅色背景上查找深色对象。确保Polarity属性符合您正在搜索的对象属性。
  • 查看Area结果,并将该值与MinArea和MaxArea属性中定义的值进行比较。如果Area结果不在MinArea和MaxArea属性定义的范围内,请调整这些属性并再次运行Blob对象。
  • 请调整KernelWidth和KernelHeight属性。增加属性的设定值,避免检测出一些细微的缺陷。
  • 采用直方图检查图像中灰度值的分布。直方图工具对设置ThresholdHigh和ThresholdLow属性十分有用。在8. 直方图工具 中对直方图进行了详细介绍。

微调整: 某些应用中可能需要微调DefectFinder对象才能达到最佳效果。下面介绍用于微调整DefectFinder对象的关键属性。

  • MinArea和MaxArea——运行几次DefectFinder对象后,可以在Area结果中看到一些返回的近似值。如需更改MinArea和MaxArea属性的值时,请使用这些近似值。一般情况下,MinArea和MaxArea属性用于限制Found结果,设置合理的属性值,可以使Found为“True”的结果更加准确的查找到您的目标对象。(设置这两个属性,有助于排除与想要查找的二进制对象面积不同的Blob对象。)
  • ThresholdHigh和ThresholdLow——这两个属性通过调整灰度等级阈值的参数,来识别被检测对象。这些属性很适合用直方图工具进行设置。参见以下内容。
    “Vision Guide 8.0 Properties and Results Reference - ThresholdHigh 属性, ThresholdLow属性”

完成属性调整测试DefectFinder对象,并得到满意的结果后,创建视觉对象的步骤就完成了。
您可以继续创建其他视觉对象,或设置并测试整个视觉序列。

Frame对象

Frame对象描述
Frame对象为视觉对象提供一种相对关系的基准。
创建新的Frame对象后,其他视觉对象就可以根据Frame对象来进行定位。因此,很多情况下都可以使用Frame对象。
另外,如使用Frame对象,检测出了大概的位置并定义了框架后,基于Frame对象运行的其他视觉对象,则无需太大的搜索窗口,有助于缩短视觉的处理时间。
如果零件上有某种通用的参考图案(如印刷电路板上的标准符号等),且这种参考图案被用作其它对象搜索窗口的基本位置,则最适合使用Frame对象。

Frame对象布局
Frame对象看起来像两个相交的Line对象。
如需调整Frame对象的位置,请单击Frame对象名称,然后将对象拖到新位置即可。
但是,大多数情况下,Frame对象的位置和方向基于其它视觉对象的位置来设置。


Frame对象布局

符号 说明
a 对象名称

Frame对象属性
以下列表是对Frame对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

Caption

为Frame对象指定标题。

默认:空白

CurrentResult

可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。

默认:1

Description

设定用户指定的描述。

默认:空白

Enabled

指定是否执行对象。

默认:True

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

Graphics

设置显示的图表模式。

默认:1 - All

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

Name

用于为Frame对象分配一个唯一的名称。

默认:Frame01

OriginAngleEnabled

启用单点框架,使框架以原点对象的角度旋转。而不是像两点框架那样,基于OriginPoint和YaxisPoint之间矢量而旋转。

默认:False

OriginPntObjResult

从OriginPoint属性指定的视觉对象中,指定要使用的结果。

如果指定为“All”,则指定的所有视觉对象都将适用于Frame对象。

默认:1(使用第一个结果)

OriginPoint

指定将用作Frame对象原点的视觉对象。

默认:Screen

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

ShowExtensions

指定是否显示框架的延长线。

默认:False

YAxisPoint

指定将用作Frame对象Y轴上的点的视觉对象。(指定Frame对象的方向。)

默认:Screen

YAxisPntObjResult

从YAxisPoint属性指定的视觉对象中,指定要使用的结果。

默认:1(使用第一个结果)

Frame对象结果
以下列表汇总了Frame对象的结果,并附有简要说明。
有关Frame对象中使用的各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Angle 返回被检测出零件的旋转量,用度数表示。
Found 返回是否检测到了对象。

两点框架
Two point Frame对象需要一个原点(由OriginPoint属性定义)和一个Y轴方向(由YAxisPoint属性定义)。原点和Y轴方向的组合定义了一种本地坐标系,其他视觉对象会参照这个本地坐标系。
Frame对象最大的优势就是,当Frame对象移动时,该框架内定义的所有视觉对象均随其移动。(即:根据OriginPoint定义的视觉对象的XY变化,以及通过移动YaxisPoint产生的旋转,会自动调整搜索窗口。)这样可以缩小搜索窗口的尺寸,从而缩短视觉的处理时间。

定义Frame对象
创建新的Frame对象时,需要两个视觉对象,即框架的原点和Y轴上点的参考点。
原点和Y轴方向由OriginPoint和YAxisPoint属性定义。任何具有XY坐标位置结果的视觉对象,均可用于定义框架的原点和Y轴上的点。
也就谁说,所有Blob对象、Correlation对象、Edge对象、Polar对象和Point对象均可用于定义Frame对象的Origin和YAxisPoint属性。

单点框架
单点框架是Frame对象的一种可选使用方法。如选择单点框架,OriginPoint属性则可以选择的视觉对象,作为XY位置原点的参考来使用。
如果将OriginAngleEnabled属性设置为“False”,当原点定位时使用的视觉对象的XY位置发生变化,框架的位置也会随之改变。无需考虑旋转。当某个视觉对象(blob和correlation等)检测出工件的XY位置后,要将框架中的其他对象对齐这个X和Y的位置时,使用单点框架则可以简单实现XY的移动。
在某些情况下,您可能还需要考虑框架内的旋转。假设使用Blob对象查找工件的件的X、Y和U位置(XY坐标+旋转)。然后其他视觉对象用于查找该工件的特征。Blob对象用于定义包括框架旋转在内的单点框架。而该框内的其它对象,则朝X和Y移动,并根据Blob对象返回的旋转而旋转。这样,只需要一个视觉对象就能同时进行XY方向移动和旋转工件。所以,单点框架无需设置YaxisPoint属性。

使用Frame对象
接下来的几节将指导您如何创建和使用Frame对象。

  • 创建一个新的Frame对象
  • 设置搜索窗口的位置和尺寸
  • 配置Frame对象的相关属性
  • 测试Frame对象并检查结果
  • 调整属性并再次测试

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击[New Sequence]按钮来创建一个新的视觉序列。如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。
有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅 5.视觉序列。
视觉序列

第1步:创建一个新的Frame对象
(1)点击Vision Guide工具栏中的[All Tools] -[Frame]按钮。
(2)将鼠标移动至图像显示区域。鼠标指针将变为Frame图标。
(3)继续移动鼠标,直至图标位于图像显示屏中的目标位置。然后再点击鼠标左键,创建对象。
(4)请注意,对象名称将自动创建。本示例中创建的对象名为“Frame01”, 因为它是在本序列中创建的第一个Blob对象。(稍后将说明如何修改名称。)

第2步:确定Frame对象的位置
屏幕上将显示一个类似下图的Frame对象。


新Frame对象

符号 说明
a 对象名称

Frame对象没有大窗口。点击Frame对象的名称标签或轴,按住鼠标不放,将整个Frame对象拖动至画面上的新位置。确定位置后松开鼠标。Frame对象将停留在画面的新位置上。

第3步:设置Frame对象属性
现在可以设置Frame对象的属性值。要设置属性,仅需点击相关属性值字段,然后再重新输入一个新的值。或者如果显示有下拉列表,则点击该列表中的相应选项即可。
以下显示的是Frame对象更常用的一些属性。其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。 - “Vision Guide 8.0 Properties and Results Reference”

  • Frame对象属性
属性 说明
Name属性 新创建的Frame对象中,默认的项目名称是“Frame**”。在一个视觉序列中要使用多个Frame对象时,使用**的编号对Frame进行区分。默认情况下,会将在视觉序列序列中使用的第一个Frame对象命名为“Frame01”。需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示Frame对象名称的地方都会变为新的名称。
OriginPoint属性

通常会将本属性设置为序列中上一步完成的一个对象。

该属性决定了运行Frame时的原点。

YAxisPoint属性

通常会将本属性设置为序列中上一步完成的一个对象。

该属性决定了运行Frame时的Y轴方向。

第4步:运行Frame对象并检查结果
按照以下步骤,运行Frame对象。
点击执行面板上对象的[Run]按钮。如果OriginPoint属性或YAxisPoint属性其中一个不是“Screen”,则会先执行属性中设置的对象。例如,如果将OriginPoint属性设置为Blob对象,则会先执行Blob对象,以确定框架的原点位置。
然后将显示Frame对象的结果。此时需检查的主要结果如下。

结果 说明
Angle 框架的角度

Line对象

Line对象描述
Line对象用于定义两点之间的直线。
这两个点可以是画面上的位置,也可以基于其它视觉对象的位置。以下是一些可以创建Line对象的情况。

  • 两个Blob对象之间
  • 两个Correlation对象之间
  • 两个Point对象之间
  • Blob对象和Correlation对象之间
  • 一个Blob对象的两个结果之间
  • Blob对象的结果1和Correlation对象的结果3之间
  • Point对象和Correlation对象之间
  • 具有XY位置结果的任意两个视觉对象之间

Line对象在以下情况时非常有用:

  • 测量视觉对象之间的距离(或使用多个结果时的视觉对象结果)。也可以用于检查您实际应用时的距离,以确保其介于最大距离和最小距离之间。
  • 计算两个视觉对象之间的旋转角度。 (使用机器人坐标系中返回的直线的角度,被称为RobotU结果)
  • 创建用于计算一条线的中点或两条线的交叉点的构造块。

Line对象布局
Line对象的布局如其名,是一条直线。是一条有起点、终点和对象名称的直线。如需修改Line对象的位置,只需点击该Line对象的名称(或该线上的任一位置)并将其拖至新位置即可。要重新调整Line对象的尺寸,则点击该线的起点或终点(尺寸手柄显示的位置),然后将其拖至新位置即可。


Line对象布局

符号 说明
a 对象名称
b 尺寸手柄

Line对象属性
以下列表是对Line对象属性的总结。
有关Line对象中使用的各属性的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

AngleBase

设置基准角度。

默认:0

AngleMode

设置角度输出格式。

默认:1 - Default

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

Caption

为Line对象指定标题。

默认:空白

CurrentResult 可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。
Description

设定用户指定的描述。

默认:空白

Directed

指定是否使用线方向设置角度。

默认:True

Enabled

指定是否执行对象。

默认:True

EndPntObjResult

指定使用EndPointObject的哪个结果。

默认:1

EndPointObject

指定使用哪个视觉对象来定义直线的终点。

默认:Screen

EndPointType

指定用于定义直线终点的终点类型。

默认:0 - Point

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

Frame

指定要使用哪个位置的定位框。

默认:none

Graphics

设置显示的图表模式。

默认:1 - All

MaxLength

定义Line对象长度的上限。

Line对象的Length结果,必须小于MaxLength属性的设置值,才能被找到。

默认:9999

MaxPixelLength

定义Line对象像素长度的上限。

Line对象的PixelLength结果必须小于MaxPixelLength属性的设置值,才能被找到。

默认:9999

MinLength

定义Line对象长度的下限。

Line对象的Length结果,必须大于MinLength属性的设置值,才能被找到。

默认:0

MinPixelLength

定义Line对象像素长度的下限。

Line对象的PixelLength结果必须大于MinPixelLength属性的设置值,才能被找到。

默认:0

Name

用于为Line对象分配一个唯一的名称。

默认:Line01

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

ShowExtensions

设置为“True”时,图像显示区域边缘的延长线,会以图表的方式显示。

默认:False

StartPntObjResult

指定使用StartPointObject的哪个结果。

默认:1

StartPointObject

指定使用哪个视觉对象来定义直线的起点。

默认:Screen

StartPointType

指定用于定义直线起点的起点类型。

默认:0 - Point

X1 直线起点的X坐标位置。
X2 直线终点的X坐标位置。
Y1 直线起点的Y坐标位置。
Y2 直线终点的Y坐标位置。

Line对象结果
以下列表是对Line对象结果的总结,并附有简要指定。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Angle 以时钟3点钟方向作为0o的基准,返回起点和终点所形成的直线的角度。
CameraX1 返回相机坐标系中直线起点的X坐标位置。
CameraX2 返回相机坐标系中直线终点的X坐标位置。
CameraY1 返回相机坐标系中直线起点的Y坐标位置。
CameraY2 返回相机坐标系中直线终点的Y坐标位置。
Found

返回是否检测到了对象。

如果找不到用于定义Line对象的视觉对象,就找不到该Line对象。

Length

返回直线的长度,以毫米为单位。

请事先进行相机校准。如果未完成校准,则返回的长度为“no cal”。

如果Line对象因MaxLength和MinLength的限制而失败,结果列表中的Length结果则显示为红色。

NumberFound 返回查找到的直线数目。
PixelLength

返回直线的长度,用像素表示。

如果Line对象因MaxPixelLength和MinPixelLength的限制而失败,结果列表中的PixelLength结果则显示为红色字体。

PixelLine

仅限运行时间。

返回X1、Y1、X2和Y2四个直线坐标,并用像素表示。

PixelX1 返回线起点的X坐标位置,用像素表示。
PixelX2 返回线终点的X坐标位置,用像素表示。
PixelY1 返回线起点的Y坐标位置,用像素表示。
PixelY2 返回线终点的Y坐标位置,用像素表示。
RobotX1 返回机器人坐标系中检测到的边缘线起点的X坐标。
RobotX2 返回机器人坐标系中检测到的边缘线终点的X坐标位置。
RobotY1 返回机器人坐标系中检测到的边缘线起点的Y坐标位置。
RobotY2 返回机器人坐标系中检测到的边缘线终点的Y坐标位置。
RobotU 返回机器人坐标系中,从起点到终点所形成直线的角度。

使用Line对象
接下来的几节将指导您如何创建和使用Line对象。

  • 创建一个新的Line对象
  • 确定Line对象的位置
  • 配置Line对象的相关属性
  • 测试Line对象并检查结果

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击[New Sequence]按钮来创建一个新的视觉序列。如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。
有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅 5.视觉序列。
视觉序列

第1步:创建一个新的Line对象
(1)点击Vision Guide工具栏中的[All Tools] - [Line]按钮。
(2)将鼠标移动至图像显示区域。鼠标指针将变为Line对象图标。
(3)继续移动鼠标,直至图标位于图像显示屏中的目标位置。然后再点击鼠标左键,创建对象。
(4)请注意,对象名称将自动创建。本示例中创建的对象名为“Line01”,因为它是在本序列中创建的第一个Line对象。(稍后将说明如何修改名称。)

第2步:确定Line对象的位置
屏幕上将显示一个与下图相似的Line对象。


新Line对象

符号 说明
a 对象名称
b 尺寸手柄

Line对象没有窗口。点击任一尺寸手柄,并将直线的一端拖动至新位置,则可以修改长度或旋转直线。您也可以点击Line对象的名称标签或该直线的任意位置,然后保持按下鼠标的同时拖动Line对象修改位置。确定位置后,放开鼠标即可。Line对象将停留在画面上的新位置。

第3步:设置Line对象属性
现在设置Line对象的属性值。要设置属性,仅需点击相关属性值字段,然后再重新输入一个新的值。或者如果显示有下拉列表,则点击该列表中的相应选项即可。
以下显示的是一些Line对象更常用的属性。其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。

  • “Vision Guide 8.0 Properties and Results Reference”
  • Line对象属性
属性 说明
Name属性 新创建的Line对象中,默认的项目名称是“Line**”。在一个视觉序列中要使用多个Line对象时,使用**的编号对Line进行区分。默认情况下,会将在视觉序列序列中使用的第一个Line对象命名为“Line01”。需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示Line对象名称的地方都会变为新的名称。
StartPointObject属性

通常会将本属性设置为序列中上一步完成的一个对象。

该属性决定了运行Line对象时的起点。

EndPointObject属性

通常会将本属性设置为序列中上一步完成的一个对象。

该属性决定了运行Line对象时的终点。

将AngleMode属性设置为“2-UseAngleBase”,然后设置Directed和AngleBase属性,指定角度的输出格式。Directed属性指定角度是否取决于Line对象的方向。以AngleBase中设置的角度作为基准输出角度。
例如,基于示教时设置的角度执行测量时,输出以AngleBase属性设置的角度为中心测量的角度。将AngleMode属性设置为“1-Default”时,角度的输出范围是0至360度。
在这种情况下,操作将与进行以下设置时相同。

  • AngleMode属性:2-UseAngleBase
  • AngleBase: 0
  • Directed: True

第4步:运行Line对象并检查结果
请按照以下步骤,运行Line对象。
点击执行面板上对象的[Run]按钮。如果StartPointObject属性和EndPointObject属性中有一个不是“Screen”,将首先执行指定的对象。例如,如果StartPointObject是Blob对象,则首先执行二进制对象,以确定直线的起点位置。
显示Line对象的结果。这时需检查的主要结果有:

结果 说明
Length结果

返回线的长度,以毫米为单位。

必须有序列的相关校准,其中包括定义了Length的直线。

PixelX1结果

PixelY1结果

PixelX2结果

PixelY2结果

直线两端的XY位置(用像素表示)。
PixelLength结果 直线的长度,用像素表示。

Point对象

Point对象描述
Point对象用于定义点。Point对象通常会与其他视觉对象一起使用,例如定义Line对象的中点等,一般不会单独使用。
如下表所示,Point对象经常用于定义Polar对象和Line对象的参考位置。

Object 说明
Polar对象 可使用Point对象定义Polar对象的中心(CenterX和CenterY属性)。
Line对象 可使用Point对象定义直线的起点,中点,终点和两条直线的交点。

Point对象布局
Point对象的布局是一个十字线。如需修改位置,点击Point对象然后将其拖拽到要变更的位置即可。但由于大多情况下,Point对象都是与其他对象相关联的,所以一般都根据相关对象的位置进行定位。


Point对象布局

符号 说明
a 对象名称

Point对象属性
以下列表是对Point对象属性的总结。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

AngleObject

指定带有输出角度的对象。

默认:Screen

AngleObjectResult 用于指定AngleObject属性时的结果
CalRobotPlacePos 在设计和程序运行时校准RobotPlacePos。
Caption

为Point对象指定标题。

默认:空白

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则Point对象将应用于指定视觉对象的所有结果(NumberFound)。

CenterPntOffsetX 使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。
CenterPntOffsetY 使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。
CenterPntRotOffset 指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。
CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

CoordObject 指定复制结果的Coordinates对象 执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。默认:None
CurrentResult 可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。
Description

设定用户指定的描述。

默认:空白

Enabled

指定是否执行对象。

默认:True

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:1-Red

Frame

指定要使用哪个位置的定位框。

默认:None

FrameResult 指定需使用Frame的第几个结果。
Graphics

设置显示的图表模式。

默认:1 - All

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

LineObj1Result 指定LineObject1属性将使用对象的哪个结果。
LineObj2Result 指定LineObject2属性将使用对象的哪个结果。
LineObject1

当在Point对象中定义了直线的中点时,用本属性指定Line对象。

此外,当定义了两条直线的交点时,指定第一个Line对象。

默认:none

LineObject2

当在Poin对象中定义了两条直线的交点时,用本属性指定第二个Line对象。

默认:none

Name

用于为Point对象分配一个唯一的名称。

默认:Point01

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

PointType

在LineObject1和LineObject2上指定直线的中点和交点

默认:Screen

X Point对象的X坐标位置,用像素表示。
Y Point对象的Y坐标位置,用像素表示。

Point对象结果
以下列表是对Point对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Angle 返回已找到的点的角度。
CameraX 返回相机坐标系中检测到对象的X坐标。
CameraY 返回相机坐标系中检测到对象的Y坐标。
CameraXYU

仅限运行时间。

返回相机坐标系内查找对象位置的CameraX坐标、CameraY坐标和CameraU坐标。

ColorValue 返回位于当前位置的像素的灰度值或颜色值。
NumberFound 返回查找到的点的数目。
Found

返回是否检测到了对象。

如果找不到附带的视觉对象,则也找不到Point对象。

Passed 返回测试结果合格与否。
PixelX 返回像素坐标系中检测到对象的X坐标。
PixelY 返回像素坐标系中检测到对象的Y坐标。
PixelXYU

仅限运行时间。

以像素返回查找对象位置的PixelX坐标、PixelY坐标、PixelU坐标。

RobotX 返回机器人坐标系中检测到对象的X坐标。
RobotY 返回机器人坐标系中检测到对象的Y坐标。
RobotU

返回机器人坐标系中检测到对象的旋转量。

(Point对象不会旋转,所以旋转量始终为“0”。)

RobotXYU

仅限运行时间。

返回机器人坐标系中已找到的对象的X坐标、Y坐标和旋转量。(由于Point对象不会旋转,旋转量始终为“0”)

了解Point对象
可以把Point对象理解为是一个帮助用户标记位置的对象,可以是屏幕上的位置和Line对象,或者是其他视觉对象的关联位置。
为了更好的理解Point对象,这里说明两个基本知识点。

  • 定义Point对象的位置
  • 使用Point对象用作其它对象的参考位置

定义Point对象的位置
Point对象的位置可以基于Point对象在操作画面上的位置、Line对象的中点或两个Line对象之间的交点来确定。
PointType属性可用于定义Point对象的位置。也就是说可以将PointType属性设置为“Screen”、“MidPoint”或“Intersection”中的一个。

  • 将PointType属性设置为“Screen”时
    当新建一个Point对象时,PointType的默认设置为“Screen”,即Point对象的位置就是Poinr对象在屏幕中显示的那个位置。
    将PointType设置为“Screen”后,只有在您用鼠标拖动Point对象或改变X属性或Y属性值时,其位置才会改变。

  • 将PointType属性设置为“MidPoint”时
    如要将Point对象的位置定义为直线的中点,请将PointType属性设置为“MidPoint”。
    但应当注意的是,将PointType设置成“MidPoint”之前,请先确定要使用哪条直线。否则Vision Guide 8.0在计算中点时将不知道该使用哪条线。 请先在LineObject1属性中定义要使用的Line对象,然后将该直线的中点作为Point对象的位置。
    在视觉序列运行列表中,运行Point对象之前,已执行的有效的对象,会显示在LineObject1属性的下拉列表中,请选择您要使用的对象。
    实际上,Vision Guide会自动检测序列运行列表中Point对象之前有效的Line对象,并且只有这些Line对象才会出现在LineObject1的下拉列表中。这就简化了系统操作。
    如果您将PointType属性设置为“MidPoint”,而未在LineObject1属性中设置要使用的Line对象,则会弹出一条错误信息,提示您必须先在LineObject1属性中选择一条直线。

  • 将PointType属性设置为“Intersection”时
    如果要将Point对象的位置定义为两条直线的交点,则需首先确定使用哪两条直线。使用LineObject1和LineObject2属性定义这两条直线。
    必须将LineObject1和LineObject2属性定义成不同的Line对象。定义了两个属性的Line对象后,即可将PointType属性设置为“Intersection”。这样就可以将Point对象的位置指定为LineObject1和LineObject2属性中定义的两条直线的交点。
    首先,从LineObject1属性的下拉列表中,会显示Point对象前序,已执行的有效的对象,选择您要使用的对象。该对象则是2条直线交点中使用的第一条直线。
    其次,从LineObject2属性的下拉列表中,会显示Point对象前序,剩余的有效对象,选择您要使用的对象。该对象则是2条直线交点中使用的第二条直线。
    Vision Guide 8.0会自动检测序列运行列表中Point对象之前有效的Line对象,并且只有这些Line对象才会出现在LineObject1和LineObject2的下拉列表中。
    如果您将PointType属性设置为“Intersection”,而未在LineObject1属性和LineObject2中设置要使用的Line对象,则会弹出一条错误信息,提示您必须先在LineObject1属性和LineObject2属性中选择要使用的直线。
    弹出的错误提示会因未定义的Line对象不同而异。

要点


将位置定义为两条直线的交点,会便于计算对象的中心。例如,假设有一个长方形的物体。当检测出四个顶点时,则可以创建在矩形中心相交的对角线。而Point对象就位于该交叉点上,即长方形的中心。

将Point对象用作其它对象的参考位置
Point对象的主要用途就是作为其它视觉对象(Line对象,Polar对象等)的基准位置。
换句话来说,既是Point对象的位置是Line对象和Polar对象的参考位置。
借助如此强大的功能,定义为两条直线交点的Point对象,将计算对象的中心,并将其用作Line的中点,以计算两个对象的中心之间的距离。

将Point对象用作Polar对象的基准位置
Polar对象在进行极坐标搜索时,需要一个CenterPoint位置作为基准。首次使用Polar对象时,您可能会将屏幕上的点作为CenterPoint属性的基准点。但是您很快就会发现,由于被检测对象在移动,Polar对象也会随着被检测对象的CenterPoint一起移动。
这种情况下,将Point对象等其他视觉对象的XY位置,应用到Polar对象中,则可以充分发挥其强大的功能。
很多情况下您可能想将Point对象的位置用作Polar对象的CenterPoint。但最适合的两种情况如下。

  • 将CenterPoint定义为直线的中点
  • 将CenterPoint定义为两条直线的交点
    比如,找到线的中点后,想从该中点开始Polar搜索,或希望将Polar搜索的CenterPoint的基准点设置在两条直线的交点上。
    将Polar对象与Point对象一起使用是非常常见的一种用法。

将Point对象用作Line对象的基准位置
一条直线需要一个起点和一个终点。多数情况下,线的起点和终点位置是基于其它视觉对象(如Blob或Correlation对象等)的XY位置结果。
但是,您也可将Point对象的位置用作直线线的基准位置。您可以用Point对象定义直线的起点和终点,也可以仅定义起点或终点之一。
Point对象的最常见用途之一,就是将Poine对象最为两条直线交点的基准。
下图所示为两个在不同高度位置相交的Line对象的例子。Line3用于计算交点的高度。Point对象则位于Line1和Line2的交点上。


Point对象定义为Line1和2交点

符号 说明
a Point对象
b 高度

使用Point对象
接下来的几页将向您介绍如何创建和使用Point对象。主要有以下几项。

  • 创建一个新的Point对象
  • 定位Point对象
  • 配置Point对象的属性
  • 测试Point对象并检查结果

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。
如果您没有可使用的视觉序列,点击 [New Sequence]按钮来创建一个新的视觉序列。
如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。
有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅 5.视觉序列。
视觉序列

第1步:创建一个新的Point对象
(1)点击Vision Guide工具栏中的[All Tools] - [New Point]按钮。
(2)您将看到一个Point图标出现在Point对象工具栏按钮的上方。
(3)点击该点图标,并将其拖至Vision Guide窗口的图像显示区域。
(4)请注意,对象名称将自动创建。本示例中创建的对象名为“Pnt01”,因为它是在本序列中创建的第一个Point对象。(稍后将说明如何修改名称。)

第2步:确定Point对象的位置
画面上会显示一个如下所示的Point对象:


新建Point对象布局

符号 说明
a 对象名称

因为Point对象只是一个点,既没有高度也没有厚度,因此不能调整大小。但是,可以使用鼠标在X和Y属性中设置位置值对其进行定位。
创建Point对象时,PointType属性的默认设置为“0 - Screen”,因此,可以通过执行以下操作将Point对象稍微移动一下。
(1)点击Point对象的标签名称,按住鼠标左键并将Point对象拖至画面中的新位置。 (2)确认位置后释放鼠标,Point对象将停留在画面上的新位置上。

第3步:设置Point对象属性
设置Point对象的属性值。
要设置属性,仅需点击相关属性值字段,然后再重新输入一个新的值。或者如果显示有下拉列表,则点击该列表中的相应选项即可。
以下显示的是一些Point对象的常用属性。其他各种可以在视觉对象中使用的属性,如AbortSeqOnFail属性、Graphics属性等的详细信息,请参考Vision Guide 8.0 Properties and Results Reference手册或本章节的Point对象属性 相关内容。

Point对象布局
Point对象在画面上显示为十字线。Point对象只能调整位置。点击Point对象并将其拖至新位置即可。由于Point对象在绝大多数情况下都附属于其它对象,因此它们的位置是根据相关对象的位置来计算的。


Point对象布局

符号 说明
a 对象名称

Point对象属性
测试Point对象时,不需要设置这些属性。因为测试阶段还没有将Point对象定位在直线的中点或两条直线的交点上,因此使用默认值即可。但如果您是第一次使用Point对象,请参考以下说明。

属性 说明
Name属性 (“Pointxx”) 新创建的Point对象中,默认的项目名称是“Point**”。在一个视觉序列中要使用多个Point对象时,使用**的编号对Point进行区分。默认情况下,会将在视觉序列序列中使用的第一个Point对象命名为“Point01”。需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示Point对象名称的地方都会变为新的名称。
LineObject1 (None)

通过将Point对象的PointType属性设置为“Midpoint”(直线的中点),则可指定要使用哪条直线。

如果PointType属性设置为“Intersection”(两条直线的交点),则本属性也用于指定两条直线中的第一条直线。默认:“None”

LineObject2 (None)

将Point对象的PointType属性设置为“Intersection”(两条直线的交点)时,本属性用于指定两条直线中的第二条直线。

第一条直线由LineObject1属性指定。默认:“None”

PointType (Screen)

定义Point对象的位置。

可以定义为屏幕上的位置、LineObject1属性指定的线中点或LineObject1和LineObject2属性指定的两条线的交叉点。

默认:Screen

在本示例中,由于未指定Line对象,因此LineObject1、LineObject2和PointType属性无法修改默认值。
如果要将直线的中点指定为Point对象的位置,请在LineObject1属性中指定一个Line对象。
如果要将两条直线的交掉指定为Point对象的位置,请在LineObject1属性中指定第一个Line对象,并在LineObject2属性中指定第二个Line对象。
有关详细内容,参见上文 定位Point对象 中的内容。
使用AngleObject属性指定的对象角度,可以设为Point对象的输出角度。这不仅是要输出XY位置,还可以输出Point对象上一级对象中,作为Point对象的输出角度,可以同时获得RobotXYU等XY位置和U角度信息。

第4步:运行Point对象并检查结果
要运行Point对象,点击执行面板上对象的[Run]按钮。
(1)点击执行面板上对象的[Run]按钮。

然后将显示Point对象的结果。这时需检查的主要结果有:

结果 说明

PixelX结果

PixelY结果

Point对象的XY坐标位置,用像素表示。

如果Point对象的PointType属性设置为中点,则这些结果将返回LineObject1所指定Line对象中点的XY坐标位置,并用像素表示。

CameraX结果

CameraY结果

在相机坐标系中定义Point对象的XY坐标值。

如果相机尚未完成校准则不会返回任何值,而是返回[No Cal]。

RobotX结果

RobotY结果

在机器人坐标系中定义Point对象的XY坐标值。

机器人可以将此XY坐标点作为移动的目标位置。不需要进行其它转换或处理。如果相机已经被校准,则RobotX和RobotY的结果将仅返回一个值。如果未进行校准,则将返回 [No Cal]。

BoxFinder对象

BoxFinder对象描述
BoxFinder对象用于确定图像中矩形边缘(含正方形)的位置。
BoxFinder对象自动处理多个Edge对象以确定边缘位置,并获得从每个边缘位置确定的矩形。
图像中对象的边缘由灰度值“从深到浅”或“从浅到深”的变化表示。可以在多个像素上观察到这些变化。
由Polarity属性定义的“从深到浅”或“从浅到深”的变化后,BoxFinder对象会查搜索这个变化,并将检测到的边缘连接成最佳直线。您也可以通过修改EdgeType属性,以搜索双边缘。如果搜索双边缘,则可检测到两个相对的边缘,返回的中点。

BoxFinder对象布局
BoxFinder对象与LineFinder对象一样,在搜索窗口内中有方向指示器,表示边缘搜索的方向。与LineFinder的区别在于,搜索窗口四个侧边的每个方向都有指示器。边缘搜索线的数目通过NumberOfEdges属性指定。您可以使用Direction属性规定搜索方向。


BoxFinder对象布局

符号 说明
a 序列中的步骤号
b 对象名称
c

尺寸和方向手柄

方向指示器(搜索方向)

d 方向指示器(搜索方向)

BoxFinder对象可以放置为任何方向进行搜索(不仅仅是垂直和水平方向)。与Blob对象的SearchWinType=AngledRectangle类似,使用旋转BoxFinder对象搜索窗口的旋转手柄,可以将BoxFinder对象移动到所需要查找边缘的方向。

BoxFinder对象属性
以下列表是对BoxFinder对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

Accept

指定形状得分,用于判断是否以检测到检测对象。

检测对象的得分需要大于或等于设定的形状得分。

默认:100

Caption

为BoxFinder对象指定标题。

默认:空白

CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

默认:Screen

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则BoxFinder对象将应用于指定视觉对象的所有结果(NumberFound)。

默认:1

CenterPntOffsetX

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。

默认:0

CenterPntOffsetY

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。

默认:0

CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

默认:False

ContrastTarget

设定边缘搜索所需的对比度。

默认:0(最佳对比度)

ContrastVariation

选择ContrastTarget允许的对比度变化量。

默认:0

CoordObject

执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。默认:None

CurrentResult

可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。

Description

设定用户指定的描述。

默认:空白

Direction

设置边缘搜索的方向。

默认:InsideOut

EdgeSort

设置检测到的边缘结果的排序方式。

默认:Score

EdgeThreshold

设置阈值,低于该值的边缘将被忽略。

默认:2

EdgeType

选择搜索的边缘类型(单边缘或双边缘)。

默认:1 - Single

Enabled

指定是否执行对象。

默认:True

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

FittingThreshold

指定用于直线拟合的边缘结果。

默认:10

Frame

指定要使用哪个位置的定位框。

默认:none

FrameResult

指定需使用Frame的第几个结果。

默认: 1

Graphics

设置显示的图表模式。

默认:1 - All

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

MissingEdgeType

确定如何处理未检测出的边缘。

默认:Interpolate

Name

用于为BoxFinder对象分配一个唯一的名称。

默认:BoxFind01

NumberOfEdges

指定要查找边缘的数目。

默认:5

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

Polarity

指定BoxFinder对象是应该搜索浅色到深色的过度(LightToDark)还是深色到浅色的过度(DarkToLight)。

默认:1 - LightToDark

ScoreWeightContrast

根据对比度设置得分百分比。

默认:50

ScoreWeightStrength

根据边缘强度设置得分百分比。

默认:50

SearchLength

规定边缘搜索范围的长度。

以下SearchLength1~4可一起设置。

SearchLength1 设置下图中“BoxFinder对象属性、结果的位置关系”的SearchLength1。
SearchLength2 设置下图中“BoxFinder对象属性、结果的位置关系”的SearchLength2。
SearchLength3 设置下图中“BoxFinder对象属性、结果的位置关系”的SearchLength3。
SearchLength4 设置下图中“BoxFinder对象属性、结果的位置关系”的SearchLength4。
SearchWidth

定义边缘搜索的宽度。

范围:3 - 99

默认:3

SearchWin 仅限运行时间。在一次调用中设置或返回搜索窗口左侧参数、顶部参数、高度参数和宽度参数。
SearchWinAngle 定义待搜索区域的角度。
SearchWinCenterX 定义待搜索区域中心的X轴坐标值。
SearchWinCenterY 定义待搜索区域中心的Y轴坐标值。
SearchWinHeight 定义待搜索区域的高度(单位:pixel)。
SearchWinLeft 定义待搜索区域的最左边位置(单位:pixel)。
SearchWinTop 定义待搜索区域的最上边位置(单位:pixel)。
SearchWinWidth 定义待搜索区域的宽度(单位:pixel)。
StrengthTarget

设置搜索边缘的强度。

默认:0

StrengthVariation

设置StrengthTarget的变化量总和。

默认:0


BoxFinder对象属性、结果的位置关系

BoxFinder对象结果
以下列表是对BoxFinder对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Angle 返回检测到矩形的角度。
CameraX 返回相机坐标系中检测到的矩形边缘的中心X坐标。
CameraY 返回相机坐标系中检测到的矩形边缘的中心Y坐标。
CameraXYU

仅限运行时间。

返回相机坐标系中的已检测到矩形边缘中心位置的CameraX、CameraY和CameraU坐标。

CameraX1 返回上图“BoxFinder对象属性、结果的位置关系”Corner1在相机坐标系中的X坐标。
CameraY1 返回上图“BoxFinder对象属性、结果的位置关系”Corner1在相机坐标系中的Y坐标。
CameraX2 返回上图“BoxFinder对象属性、结果的位置关系”Corner2在相机坐标系中的X坐标。
CameraY2 返回上图“BoxFinder对象属性、结果的位置关系”Corner2在相机坐标系中的Y坐标。
CameraX3 返回上图“BoxFinder对象属性、结果的位置关系”Corner3在相机坐标系中的X坐标。
CameraY3 返回上图“BoxFinder对象属性、结果的位置关系”Corner3在相机坐标系中的Y坐标。
CameraX4 返回上图“BoxFinder对象属性、结果的位置关系”Corner4在相机坐标系中的X坐标。
CameraY4 返回上图“BoxFinder对象属性、结果的位置关系”Corner4在相机坐标系中的Y坐标。
Contrast 返回检测到的矩形边缘的对比度。
FitError 以均方根(RMS)返回各边缘点与检测到矩形的距离。
Found 返回是否检测到了对象,即被检测对象或零件的形状得分是否超过了Accept属性的当前设置值。
MaxError 返回与检测到的矩形边缘的像素长度的最大偏差。
Passed 返回测试结果合格与否。
Perimeter 返回检测到的矩形边界的像素数目。
PixelX 返回图像坐标系中检测到的矩形边缘的中心X坐标。
PixelY 返回图像坐标系中检测到的矩形边缘的中心Y坐标。
PixelX1 返回上图“BoxFinder对象属性、结果的位置关系”Corner1在图像坐标系中的X坐标。
PixelY1 返回上图“BoxFinder对象属性、结果的位置关系”Corner1在图像坐标系中的Y坐标。
PixelX2 返回上图“BoxFinder对象属性、结果的位置关系”Corner2在图像坐标系中的X坐标。
PixelY2 返回上图“BoxFinder对象属性、结果的位置关系”Corner2在图像坐标系中的Y坐标。
PixelX3 返回上图“BoxFinder对象属性、结果的位置关系”Corner3在图像坐标系中的X坐标。
PixelY3 返回上图“BoxFinder对象属性、结果的位置关系”Corner3在图像坐标系中的Y坐标。
PixelX4 返回上图“BoxFinder对象属性、结果的位置关系”Corner4在图像坐标系中的X坐标。
PixelY4 返回上图“BoxFinder对象属性、结果的位置关系”Corner4在图像坐标系中的Y坐标。
PixelXYU 返回已找到的矩形边缘中心的PixelX、PixelY和PixelU坐标(以像素为单位)。
RobotX 返回机器人坐标系中检测到的矩形边缘的中心X坐标。
RobotY 返回机器人坐标系中检测到的矩形边缘的中心Y坐标。
RobotU 返回机器人坐标系中检测到的矩形边缘的中心U坐标。
RobotXYU

仅限运行时间。

返回机器人坐标系中已找到的矩形边缘的中心位置的RobotX、RobotY和RobotU坐标。

RobotX1 返回上图“BoxFinder对象属性、结果的位置关系”Corner1在机器人坐标系中的X坐标。
RobotY1 返回上图“BoxFinder对象属性、结果的位置关系”Corner1在机器人坐标系中的Y坐标。
RobotX2 返回上图“BoxFinder对象属性、结果的位置关系”Corner2在机器人坐标系中的X坐标。
RobotY2 返回上图“BoxFinder对象属性、结果的位置关系”Corner2在机器人坐标系中的Y坐标。
RobotX3 返回上图“BoxFinder对象属性、结果的位置关系”Corner3在机器人坐标系中的X坐标。
RobotY3 返回上图“BoxFinder对象属性、结果的位置关系”Corner3在机器人坐标系中的Y坐标。
RobotX4 返回上图“BoxFinder对象属性、结果的位置关系”Corner4在机器人坐标系中的X坐标。
RobotY4 返回上图“BoxFinder对象属性、结果的位置关系”Corner4在机器人坐标系中的Y坐标。
ShowAllResults

以表格形式在对话框中显示指定视觉对象的所有结果。

比较结果将更加容易。

Strength 返回检测到的边缘的强度。
Time 返回处理对象所需要的时间(单位:毫秒)。

使用BoxFinder对象
接下来的几节将介绍如何创建和使用BoxFinder对象。

  • 如何创建新的BoxFinder对象
  • 设置搜索窗口的位置和尺寸
  • 设置BoxFinder对象的相关属性
  • 测试BoxFinder对象并检查结果
  • 调整属性并再次测试

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击 [New Sequence]按钮来创建一个新的视觉序列。
如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。
有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅 5.视觉序列。
视觉序列

第1步:创建一个新的BoxFinder对象
(1)点击Vision Guide工具栏中的[All Tools] - [BoxFinder]按钮。
(2)将鼠标移动至图像显示区域。鼠标指针将变为BoxFinder图标。
(3)继续移动鼠标,直至图标位于图像显示屏中的目标位置。
(4)点击鼠标左键,创建对象。
(5)注意:对象名称将自动创建。本示例中创建的对象名为“BoxFind01”,因为这是在本序列中创建的第一个BoxFinder对象。(稍后将说明如何修改名称。)

第2步:设置搜索窗口的位置和大小
画面上会显示一个如下所示的BoxFinder对象:


新建BoxFinder对象布局

符号 说明
a 序列中的步骤号
b 对象名称
c 尺寸和方向手柄
d 方向指示器(搜索方向)

(1)点击BoxFinder对象的名称标签,按住鼠标左键,将BoxFinder对象拖至您想让搜索窗口的所在的位置。
(2)点击搜索窗口的尺寸手柄,拖动鼠标,将BoxFinder对象搜索窗口调整成合适的大小。

第3步:设置BoxFinder对象属性
设置BoxFinder对象的属性值。要设置属性,仅需点击相关属性值字段,然后再重新输入一个新的值。或者如果显示有下拉列表,则点击该列表中的相应选项即可。
以下显示的是BoxFinder对象的一些常用属性。其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
Name属性

新创建的BoxFinder对象中,默认的项目名称是“BoxFind**”。**在一个视觉序列中要使用多个BoxFinder对象时,使用xx的编号对BoxFinder进行区分。

默认情况下,会将在视觉序列序列中使用的第一个BoxFinder对象命名为“BoxFind01”。

需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示BoxFinder对象名称的地方都会变为新的名称。

EdgeType(单边缘)

选择搜索边缘的类型。

如果设置为双边缘,则会分别搜索每个方向的边缘,然后返回中心点位置。

NumberOfEdges(5) 在搜索窗口的每条边上个搜索5个边缘,以查找边缘。
Polarity (LightToDark)

使用“LightToDark”属性搜索边缘。

如果您要寻找DarkToLight(深色到浅色)的边缘,请更改Polarity设置。

第4步:运行BoxFinder对象并检查结果
接下来的几节将介绍如何运行BoxFinder对象。
点击执行面板上对象的[Run]按钮。然后将显示BoxFinder对象的结果。这时需检查的主要结果有:

结果 说明
Angle结果 返回图像坐标系中检测到的矩形边缘的角度。
MaxError结果 返回与检测到的矩形边缘像素长度的最大差异。

PixelX结果

PixelY结果

返回图像坐标系中检测到的矩形边缘中心的XY坐标位置。

CameraX结果

CameraY结果

在相机坐标系中返回检测到的矩形边缘中心的XY坐标值。如果未进行XY坐标位置校准,则返回“no cal”。

RobotX结果

RobotY结果

在机器人坐标系中返回检测到的矩形边缘中心的XY坐标值。如果未进行XY坐标位置校准,则返回“no cal”。

CornerFinder对象

CornerFinder对象描述
CornerFinder对象用于确定图像中两条直线的交点(角)的位置。
CornerFinder对象自动处理多个Edge对象以识别边缘位置,并获得从每个边缘位置识别出的两条直线的交角。
图像中对象的边缘由灰度值“从深到浅”或“从浅到深”的变化表示。可以在多个像素上观察到这些变化。
由Polarity属性定义的“从深到浅”或“从浅到深”的变化后,CornerFinder对象会查搜索这个变化,并将检测到的边缘连接成最佳直线。您也可以通过修改EdgeType属性,以搜索双边缘。如果搜索双边缘,则可检测到两个相对的边缘,返回的中点。

CornerFinder对象布局
CornerFinder对象与LineFinder对象一样,在搜索窗口内中有方向指示器。与LineFinder的区别在于,搜索窗口两个侧边的每个方向都有指示器。边缘搜索线的数目通过NumberOfEdges属性指定。您可以使用Direction属性规定搜索方向。


CornerFinder对象布局

符号 说明
a 序列中的步骤号
b 对象名称
c 尺寸和方向手柄
d 方向指示器(搜索方向)

CornerFinder对象可以放置为任何方向进行搜索(不仅仅是垂直和水平方向)。与Blob对象的SearchWinType=AngledRectangle类似,使用旋转CornerFinder对象搜索窗口的旋转手柄,可以将CornerFinder对象移动到所需要查找边缘的方向。

CornerFinder对象属性
以下列表是对CornerFinder对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

Accept

指定形状得分,用于判断是否以检测到检测对象。检测对象的得分需要大于或等于设定的形状得分。

默认:100

Caption

为CornerFinder对象指定标题。

默认:空白

CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

默认:Screen

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则CornerFinder对象将应用于指定视觉对象的所有结果(NumberFound)。

默认:1

CenterPntOffsetX

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。

默认:0

CenterPntOffsetY

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。

默认:0

CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

默认:False

ContrastTarget

设定边缘搜索所需的对比度。

默认:0(最佳对比度)

ContrastVariation

选择ContrastTarget允许的对比度变化量。

默认:0

CoordObject

指定复制结果的Coordinates对象。执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。

默认:None

CurrentResult 可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。
Description

设定用户指定的描述。

默认:空白

Direction

设置边缘搜索的方向。

默认:InsideOut

EdgeSort

设置检测到的边缘结果的排序方式。

默认:Score

EdgeThreshold

设置阈值,低于该值的边缘将被忽略。

默认:2

EdgeType

选择搜索的边缘类型(单边缘或双边缘)。

默认:1 - Single

Enabled

指定是否执行对象。

默认:True

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

FittingThreshold

指定用于直线拟合的边缘结果。

默认:10

Frame

指定要使用哪个位置的定位框。

默认:none

FrameResult

指定需使用Frame的第几个结果。

默认: 1

Graphics

设置显示的图表模式。

默认:1 - All

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

MissingEdgeType

确定如何处理未检测出的边缘。

默认:Interpolate

Name

用于为CornerFinder对象分配一个唯一的名称。

默认:CornerFind01

NumberOfEdges

指定要查找边缘的数目。

默认:5

PassColor

选择合格对象的颜色。

默认:Light Green

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

Polarity

指定ArcFinder对象是应该搜索浅色到深色的过度(LightToDark)还是深色到浅色的过度(DarkToLight)。

默认:1 - LightToDark

ScoreWeightContrast

根据对比度设置得分百分比。

默认:50

ScoreWeightStrength

根据边缘强度设置得分百分比。

默认:50

SearchLength

规定边缘搜索范围的长度。

以下SearchLength1和2可一起设置。

SearchLength1 设置图“CornerFinder对象属性的位置关系”中SearchLength1的长度。
SearchLength2 设置图“CornerFinder对象属性的位置关系”中SearchLength2的长度。
SearchWidth

定义边缘搜索的宽度。

范围:3 - 99

默认:3

SearchWin

仅限运行时间。

在一次调用中设置或返回搜索窗口左侧参数、顶部参数、高度参数和宽度参数。

SearchWinAngle 定义待搜索区域的角度。
SearchWinCenterX 定义待搜索区域中心的X轴坐标值。
SearchWinCenterY 定义待搜索区域中心的Y轴坐标值。
SearchWinHeight 定义待搜索区域的高度(单位:pixel)。
SearchWinLeft 定义待搜索区域的最左边位置(单位:pixel)。
SearchWinTop 定义待搜索区域的最上边位置(单位:pixel)。
SearchWinWidth 定义待搜索区域的宽度(单位:pixel)。
StrengthTarget

设置搜索边缘的强度。

默认:0

StrengthVariation

设置StrengthTarget的变化量总和。

默认:0


CornerFinder对象属性的位置关系

CornerFinder对象结果
以下列表是对CornerFinder对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Angle 返回检测到交角的角度。
CameraX 返回相机坐标系中检测到交角的X坐标。
CameraY 返回相机坐标系中检测到交角的Y坐标。
CameraXYU

仅限运行时间。

返回相机坐标系中的已检测到交角位置的CameraX、CameraY和CameraU坐标。

Contrast 返回查找到边缘的对比度。
FitError 以均方根(RMS)返回各边缘点与检测到交角的距离。
Found 返回是否检测到了对象,即被检测对象或零件的形状得分是否超过了Accept属性的当前设置值。
MaxError 返回与检测到的线边缘的最大像素长度差异。
Passed 返回测试结果合格与否。
PixelX 返回图像坐标系中检测到交角的X坐标。
PixelY 返回图像坐标系中检测到交角的Y坐标。
PixelXYU

仅限运行时间。

返回已检测到交角位置的PixelX、PixelY和PixelU坐标(以像素为单位)。

RobotX 返回机器人坐标系中检测到交角的X坐标。
RobotY 返回机器人坐标系中检测到交角的Y坐标。
RobotU 返回机器人坐标系中检测到交角的U坐标。
RobotXYU

仅限运行时间。

返回机器人坐标系中已找到交角的RobotX、RobotY和RobotU坐标。

ShowAllResults

以表格形式在对话框中显示指定视觉对象的所有结果。

比较结果将更加容易。

Strength 返回检测到的边缘的强度。
Time 返回处理对象所需要的时间(单位:毫秒)。

使用CornerFinder对象
接下来的几节将介绍如何创建和使用CornerFinder对象。

  • 新建一个CornerFinder对象
  • 设置搜索窗口的位置和尺寸
  • 设置CornerFinder对象的相关属性
  • 测试CornerFinder对象并检查结果
  • 调整属性并再次测试

开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。如果您没有可使用的视觉序列,点击 [New Sequence]按钮来创建一个新的视觉序列。
如果已经创建了视觉序列,请在Vision Guide窗口中单击序列目录树,选择已创建的视觉序列。
有关如何创建新的视觉序列,以及如何选择已创建视觉序列的详细咨询,请参阅 5.视觉序列。
视觉序列

第1步:创建一个新的CornerFinder对象
(1)点击Vision Guide工具栏中的[All Tools] - [CornerFinder]按钮。
(2)将鼠标移动至图像显示区域。鼠标指针将变为CornerFinder对象图标。
(3)继续移动鼠标,直至图标位于图像显示屏中的目标位置。
(4)点击鼠标左键,创建对象。
(5)注意:对象名称将自动创建。本示例中创建的对象名为“CornerFind01”,因为它是在本序列中创建的第一个CornerFinder对象。(稍后将说明如何修改名称。)

第2步:设置搜索窗口的位置和大小
画面上会显示一个如下所示的CornerFinder对象:


新建CornerFinder对象布局

符号 说明
a 序列中的步骤号
b 对象名称
c 尺寸和方向手柄
d 方向指示器(搜索方向)

(1)点击CornerFinder对象的名称标签,按住鼠标左键,将CornerFinder对象拖至您想让搜索窗口的所在的位置。
(2)点击搜索窗口的尺寸手柄,拖动鼠标,将CornerFinder对象搜索窗口调整成合适的大小。

第3步:设置CornerFinder对象属性
设置CornerFinder对象的属性值。设置CornerFinder对象属性,仅需点击相关属性值字段,然后再重新输入一个新的值。或者如果显示有下拉列表,则点击该列表中的相应选项即可。
以下是CornerFinder对象的一些常用属性。其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
Name属性

新创建的CornerFinder对象中,默认的项目名称是“CornerFind**”。在一个视觉序列中要使用多个CornerFinder对象时,使用的编号对CornerFinder进行区分。

默认情况下,会将在视觉序列序列中使用的第一个CornerFinder对象命名为“CornerFind01”。

需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示CornerFinder对象名称的地方都会变为新的名称。

EdgeType(单边缘)

选择搜索边缘的类型。

如果设置为双边缘,则会分别搜索每个方向的边缘,然后返回中心点位置。

NumberOfEdges(5) 在搜索窗口的每条边上个搜索5个边缘,以查找边缘。
Polarity (LightToDark)

使用“LightToDark”属性搜索边缘。

如果您要寻找DarkToLight(深色到浅色)的边缘,请更改Polarity设置。

第4步:运行CornerFinder对象并检查结果
接下来将介绍如何运行CornerFinder对象。
点击执行面板上对象的[Run]按钮。然后将显示CornerFinder对象的结果。这时需检查的主要结果有:

结果 说明
Angle结果 返回图像坐标系中检测到的角的角度。
MaxError结果 返回与检测到的直线的最大偏差值(单位:pixel)。

PixelX结果

PixelY结果

返回图像坐标系中检测到的角的XY坐标位置。

CameraX结果

CameraY结果

返回相机坐标系中检测到的角的XY坐标位置。如果未进行XY坐标位置校准,则返回“no cal”。

RobotX结果

RobotY结果

返回机器人坐标系中检测到的角的XY坐标位置。如果未进行XY坐标位置校准,则返回“no cal”。

Contour对象

Contour对象描述
Contour对象沿着工件轮廓输出轨迹。当您希望机器人的夹具沿工件轮廓移动时,则可以轻松的从图像信息中获取路径。
Contour对象有三种获取轨迹的方法,可以根据应用需要选择使用。可以通过更改ContourMode属性修改获取方法,每种模式下的GUI和有效属性有所不同。
下面简要说明每种模式的显著特征。

  • Blob格式
    在设置好的搜索窗口内,检测目标工件的Blob,并获取轮廓。该模式用于从复杂形状的工件获取轮廓。

    符号 说明
    a 序列中的步骤号
    b 对象名称
    c 搜索窗口
  • Line格式
    通过并排布置的多条边缘搜索线获取轮廓。该模式适用于从目标工件的一部分,获取起伏较小的轮廓。

    符号 说明
    a 序列中的步骤号
    b 对象名称
    c 尺寸和方向手柄
    d 方向指示器(搜索方向)
  • Arc格式
    通过放射状排列的多条边缘搜索线获取轮廓。该模式适用于从目标工件的一部分,获取起伏较小的圆弧轮廓。

    符号 说明
    a 序列中的步骤号
    b 对象名称
    c 方向指示器(搜索方向)
    d 尺寸和方向手柄

Contour对象属性
以下列表是对Contour对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

此外,可用的属性因ContourMode值而不同。列表所示为应用各属性所需的ContourMode值。

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

支持格式:Blob、Line、Arc

Accept

指定形状得分,用于判断是否以检测到检测对象。检测对象的得分需要大于或等于设定的形状得分。

默认:100

支持格式:Line、Arc

AngleEnd

指定执行圆弧搜索范围的终止角度。

默认:135

支持格式:Arc

AngleStart

指定执行圆弧搜索范围的起始角度。

默认:45

支持格式:Arc

Caption

为Contour对象指定标题。

默认:空白

支持格式:Blob、Line、Arc

CenterPointObject

指定对象中心点位置。若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

支持格式:Blob、Line、Arc

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则Contour对象将应用于指定视觉对象的所有结果(NumberFound)。

默认:1

支持格式:Blob、Line、Arc

CenterPntOffsetX

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。

支持格式:Blob、Line、Arc

CenterPntOffsetY

使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。

支持格式:Blob、Line、Arc

CenterPntRotOffset

指定是否旋转以CenterPointObject的Angle结果为基础的中心(CenterPntOffsetX、CenterPntOffsetY)的XY偏移。

如果将SearchWinType设置为RotatedRectangle,搜索窗口则以Angle结果为基础进行旋转。

CenterX

指定用作对象中心点位置的X坐标。当CenterPoint属性已被其他视觉对象设定时,将自动设置本属性。

支持格式:Arc

CenterY

指定用作对象中心点位置的Y坐标。当CenterPoint属性已被其他视觉对象设定时,将自动设置本属性。

支持格式:Arc

ContourMode 定义了Contour对象边缘的检测方法。
ContrastTarget

设定边缘搜索所需的对比度。

默认:0(最佳对比度)

支持格式:Line、Arc

ContrastVariation

选择ContrastTarget允许的对比度变化量。默认: 0

支持格式:Line、Arc

CoordObject

指定复制结果的Coordinates对象。执行对象时进行复制处理,若没有通过Decision等分支功能执行,则不进行复制处理。

默认:None

CurrentResult

可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。

支持格式:Blob、Line、Arc

Description

设定用户指定的描述。

默认:空白

Direction

设置边缘搜索的方向。

默认:InsideOut

支持格式:Arc

EdgeThreshold

设置阈值,低于该值的边缘将被忽略。

默认:2

支持格式:Line、Arc

EdgeType

选择搜索的边缘类型(单边缘或双边缘)。

默认:1 - Single

支持格式:Line、Arc

Enabled

指定是否执行对象。

默认:True

支持格式:Blob、Line、Arc

EndPntObjResult

指定使用EndPointObject的哪个结果。

默认:1

支持格式:Blob、Line、Arc

EndPointObject

指定使用哪个视觉对象来定义直线的终点。

默认:Screen

支持格式:Blob、Line、Arc

EndPointType

指定用于定义直线终点的终点类型。

默认:0 - Point

支持格式:Blob、Line、Arc

FailColor

选择当对象被检测为不良品时,搜索窗口显示的颜色。

默认:Red

支持格式:Blob、Line、Arc

FillHoles

指定是否填充二进制图像的孔洞。

默认:False

支持格式:Blob

FittingThreshold

规定直线和圆弧的拟合阈值。

支持格式:Line、Arc

Frame

指定要使用哪个位置的定位框。

默认:none

支持格式:Blob、Line、Arc

FrameResult

指定需使用Frame的第几个结果。

默认: 1

支持格式:Blob、Line、Arc

Graphics

设置显示的图表模式。

默认:1 - All

支持格式:Blob、Line、Arc

LabelBackColor

设置对象标签的背景颜色。

默认:Transparent

支持格式:Blob、Line、Arc

LineDirection

规定轮廓点输出方向。

默认:LeftToRight

支持格式:Line

MaxArea

确定Blob对象的Area上限。

默认:100,000

支持格式:Blob

MinArea

确定Blob对象的Area下限。

默认:25

支持格式:Blob

MinMaxArea

仅限运行时间。

用一条语句设置或返回MinArea和MaxArea。

Name

用于为Contour对象分配一个唯一的名称。

默认:Contour01

支持格式:Blob、Line、Arc

NumberOfEdges

指定要查找边缘的数目。

默认:20

支持格式:Line、Arc

NumberToFind

规定输出的Contour点最大数目。

默认:1

支持格式:Blob、Line、Arc

PassColor

选择合格对象的颜色。

默认:Light Green

支持格式:Blob、Line、Arc

PassType

可定义检测结果良品/不良品的判断标准。

默认:SomeFound

支持格式:Blob、Line、Arc

Polarity

指定Contour对象是应该搜索浅色背景上的深色对象(DarkOnLight)、深色背景上的浅色对象(LightOnDark),还是浅色到深色的过度(LightToDark)、深色到浅色的过度(DarkToLight)。

默认_Blob:1 - DarkOnLight

默认_Line /Arc:1 - LightToDark

支持格式:Blob、Line、Arc

RadiusInner

指定检测范围的内径。

支持格式:Arc

RadiusOuter

指定检测范围的外径。

支持格式:Arc

RejectOnEdge

如果将属性设置为“True”,系统将忽略与搜索窗口边缘有接触的Blob对象。

默认:False

支持格式:Blob

RotationDirection

指定轮廓点的旋转方向。

默认:0-CW

支持格式:Blob、Arc

RuntimeContour

指定是否在对象运行时检测轮廓点。

默认:True(在运行时间检测)

支持格式:Blob、Line、Arc

SamplingPitch

设置轮廓点减少的程度。

默认:0(不减少)

支持格式:Blob、Line、Arc

SaveTeachImage 设置示教模型时,是否保存图像文件。
ScoreWeightContrast

根据对比度设置得分百分比。

默认:50

支持格式:Line、Arc

ScoreWeightStrength

根据边缘强度设置得分百分比。

默认:50

支持格式:Line、Arc

SearchWidth

定义边缘搜索的宽度。

范围:3 - 99

默认:3

支持格式:Line、Arc

SearchWin

仅限运行时间。

在一次调用中设置或返回搜索窗口左侧参数、顶部参数、高度参数和宽度参数。

支持格式:Blob、Line

SearchWinAngle

定义待搜索区域的角度

支持格式:Blob、Line

SearchWinCenterX

定义待搜索区域中心的X轴坐标值

支持格式:Blob、Line

SearchWinCenterY

定义待搜索区域中心的Y轴坐标值

支持格式:Blob、Line

SearchWinHeight

定义待搜索区域的高度(单位:pixel)。

默认:100

支持格式:Blob、Line

SearchWinLeft

定义待搜索区域的最左边位置(单位:pixel)。

支持格式:Blob、Line

SearchWinTop

定义待搜索区域的最上边位置(单位:pixel)。

支持格式:Blob、Line

SearchWinType

定义待搜索区域的类型(Rectangle,RotatedRectangle,Circle)

支持格式:Blob

SearchWinWidth

定义待搜索区域的宽度(单位:Pixel)。

默认:100

支持格式:Blob

SizeToFind

选择要查找的缺陷尺寸。

默认:1 - Largest

支持格式:Blob

ShowModel

显示轮廓的示教模型。

支持格式:Blob

Sort

选择对象结果的排序方式。

支持格式:Blob

StartPntObjResult

指定使用StartPointObject的哪个结果。

默认:1

支持格式:Blob、Line、Arc

StartPointObject

指定使用哪个视觉对象来定义直线的起点。

默认:Screen

支持格式:Blob、Line、Arc

StartPointType

指定用于定义直线起点的起点类型。

默认:0 - Point

支持格式:Blob、Line、Arc

StrengthTarget

设置搜索边缘的强度。

默认:0

支持格式:Line、Arc

StrengthVariation

设置StrengthTarget的变化量总和。

默认:0

支持格式:Line、Arc

ThresholdAuto

可定义是否自动设置被检测对象、背景、图像的边缘灰度的阈值。

默认:禁用

支持格式:Blob

ThresholdBlockSize

定义了相邻区域的参考范围,以决定当ThresholdMethod属性设定为LocalAdaptive时的阈值。

默认:1/16ROI

支持格式:Blob

ThresholdColor

定义阈值范围内像素的颜色。

默认:Black

支持格式:Blob

ThresholdHigh

同ThresholdLow属性一起使用,用于定义被检测对象 (或对象)、背景和图像边缘的灰度范围。

ThresholdHigh属性用于定义图像的被检测对象区域的灰度范围的上限。

在ThresholdLow和ThresholdHigh定义的灰度范围内的图像的任何部分的像素权重都会分配为1。(即检测对象的一部分。)

如果ThresholdAuto属性为“True”,且ThresholdColor属性为“White”,该属性值将被设为255且无法更改。

默认:128

支持格式:Blob

ThresholdLevel

定义了当ThresholdMethod属性设定为LocalAdaptive时,与相邻区域的亮度差异的比率。

默认:15%

支持格式:Blob

ThresholdLow

同ThresholdHigh属性一起使用,用于确定表示特征(或对象)、背景和图像边缘的像素灰度区域。

区域ThresholdLow用于定义图像的被检测对象区域的灰度范围的下限。

在ThresholdLow和ThresholdHigh定义的灰度范围内的图像的任何部分的像素权重都会分配为1。(即检测对象的一部分。)

如果ThresholdAuto属性为“True”,且ThresholdColor属性为“Black”,该属性值将被设为0且无法更改。

默认:0

支持格式:Blob

ThresholdMethod 设置二值化处理的方法。
ContourTolerance

设置减少轮廓点时的容差。

默认:0

支持格式:Blob、Line、Arc

Contour对象结果
以下列表是对Contour对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
CameraX 返回相机坐标系中检测到的轮廓点的X坐标位置。
CameraY 返回相机坐标系中检测到的轮廓点的Y坐标位置。
CameraXYU

仅限运行时间。

返回相机坐标系中的已检测到轮廓点的CameraX、CameraY和CameraU坐标。

Found 返回是否检测到了对象。
NumberFound 返回轮廓点的总数。
Passed 返回测试结果合格与否。
PixelX 返回轮廓点的X坐标,用像素表示。
PixelY 返回轮廓点的Y坐标,用像素表示。
PixelXYU

仅限运行时间。

返回已检测到轮廓点的PixelX、PixelY和PixelU坐标(单位: 像素)

RobotX 返回机器人坐标系中轮廓点的X坐标位置。
RobotY 返回机器人坐标系中轮廓点的Y坐标位置。
RobotXYU

仅限运行时间。

返回机器人坐标系中已找到的轮廓点的RobotX、RobotY和RobotU坐标。

ShowAllResults

以表格形式在对话框中显示指定视觉对象的所有结果。

比较结果将更加容易。

Time 返回处理对象所需要的时间(单位:毫秒)。

轮廓提取原理
轮廓提取大致可分为两个步骤。每种步骤的细节如下。

  • 创建初始轮廓点
    • 检测二进制对象(Blob)
    • 描绘轮廓(Blob)
    • 检测边缘(Line/Arc)
  • 编辑轮廓点
    • 减少轮廓点
    • 获取轮廓

检测二进制对象(Blob)
如果ContourMode设为“Blob”时,将使用与Blob对象相同的功能搜索窗口内的二进制对象。有关原理的更多详细内容,请参阅以下内容。
Blob对象 – Blob检查的工作原理
Contour对象在搜索窗口中找到所有二进制对象,然后进入下一步。

描绘轮廓(Blob)
当ContourMode设置为“Blob”时,描绘轮廓的步骤将在“检测二进制对象”步骤结束后进行。在这一步中,描绘“检测二进制对象”步骤中检测到的第一个结果的二进制对象轮廓,产生初始轮廓点。因此,需要调整搜索窗口的位置,并调整Sort、MinArea、MaxArea等其他属性的设置,以便将要获取轮廓的工件检测为第一结果。
初始轮廓点以无间隙的连续轨迹输出。初始轮廓点从最接近StartPointObject指定的坐标位置开始,到最接近EndPointObject指定的坐标位置点结束。

检测边缘(Line/Arc)
当ContourMode设置为“Line”或“Arc”时,边缘搜索线的检测结果用作初始轮廓点。初始轮廓点从最接近StartPointObject指定的坐标位置的点开始,到最接近EndPointObject指定的坐标位置的点结束。

减少轮廓点
创建初始轮廓点后,不需要的点将被移除。轮廓点减少的程度基于SamplingPitch和ContourTolerance值设置。SamplingPitch设置用于确定获取一个轮廓点所需的初始轮廓点的数目。例如,如果设置为“10”,将从最多10个初始轮廓点中提取一个轮廓点。此外,ContourTolerance的值还可以确定减少初始轮廓点时的容许误差。该值越大,不符合工件形状的轮廓点就越少。

获取轮廓
此步骤获取的结果数据,即为上一步中减少轮廓点。获取时,轨迹的方向由RotationDirection/LineDirection的设置决定。
在Blob格式的情况下,如果RejectOnEdge设为“False”,则目标工件有时可能会超出搜索窗口。发生这种情况,不会获取搜索窗口的边框作为轮廓。在获取轨迹的过程中,接触到搜索窗口的部分,会停止轨迹。如果搜索窗口可以获取多个轨迹,除非设置了StartPointObject和EndPointObject,否则将获取最长轨迹。

第1步:创建一个新的Contour对象
(1)点击Vision Guide工具栏中的[All Tools] - [Contour]按钮。
(2)将鼠标移动至图像显示区域。鼠标指针将变为Contour对象图标。
(3)继续移动鼠标,直至图标位于图像显示屏中的目标位置。
(4)点击鼠标左键,创建对象。
(5)请注意,对象名称将自动创建。本示例中创建的对象名为“Contour01”,因为它是在本序列中创建的第一个Contour对象。(稍后将说明如何修改名称。)
根据所需获得的轨迹类型更改ContourMode。ContourMode的可选类型请参见下表。
|ContourMode的设置值|判断标准| |--|--| |Blob|用于获取目标工件完整一周的轨迹。用于获取复杂形状的轨迹。| |Line|用于获取目标工件的部分轨迹。用于获取几乎无起伏的简单线条轨迹。| |Arc|用于获取目标工件的部分轨迹。用于获取几乎无起伏的圆弧轨迹。|

第2步:设置轮廓检测位置(ContourMode:Blob时)
如果ContourMode为Blob,屏幕上将显示一个类似下图的Contour对象:


新Contour对象布局(ContourMode:Blob)

符号 说明
a 序列中的步骤号
b 对象名称
c 搜索窗口

(1)点击Contour对象的名称标签,然后保持按下鼠标的同时拖动Contour对象,以将搜索窗口的左上角与所需位置对齐。
(2)点击尺寸手柄并拖动鼠标,更改Contour对象搜索窗口的大小,并将其调整为适当尺寸。(搜索窗口就是进行Blob搜索的区域。)

第2步:设置轮廓检测位置(ContourMode:Line时)
如果ContourMode为Line,屏幕上将显示一个类似下图的Contour对象:


新Contour对象布局(ContourMode:Line)

符号 说明
a 序列中的步骤号
b 对象名称
c 尺寸和方向手柄
d 方向指示器(搜索方向)

(1)点击Contour对象的名称标签,然后保持按下鼠标的同时拖动Contour对象,以将搜索窗口的左上角与所需位置对齐。
(2)点击尺寸手柄并拖动鼠标,更改Contour对象搜索窗口的大小,并将其调整为适当尺寸。画面中会显示Edge对象。

第2步:设置轮廓检测位置(ContourMode:Arc时)
如果ContourMode为Arc,现屏幕上将显示一个类似下图的Contour对象:


新Contour对象布局(ContourMode:Arc)

符号 说明
a 序列中的步骤号
b 对象名称
c 方向指示器(搜索方向)
d 尺寸和方向手柄

(1)点击Contour对象的名称标签,然后保持按下鼠标的同时拖动Contour对象,以将搜索窗口的左上角与所需位置对齐。
(2)点击尺寸手柄并拖动鼠标,更改Contour对象搜索窗口的大小,并将其调整为适当尺寸。

第3步:设置Contour对象属性(ContourMode:Blob时)
接下来设置Contour对象(ContourMode:Blob)的属性值。以下是ContourMode设为“Blob”时一些常用的属性。
其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。

  • “Vision Guide 8.0 Properties and Results Reference”
  • Contour对象属性列表

注意


周围照明和外部设备噪音可能会影响视觉序列的图像和结果。当受到周围照明和外部设备噪音的影响,拍摄的图像可能会损坏,并且检测到的位置可能是对象搜索区域中的任何位置。正确配置MaxArea、MinArea、RejectOnEdge等属性值,可降低错误检测的风险。

属性 说明
Name属性

新创建的Contour对象中,默认的项目名称是“Contour**”。在一个视觉序列中要使用多个Contour对象时,使用**的编号对Contour进行区分。

默认情况下,会将在视觉序列序列中使用的第一个Contour对象命名为“Contour01”。

需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示Contour对象名称的地方都会变为新的名称。

Polarity属性

有时会需要从浅色背景上检测深色对象(DarkOnLight),有时会需要从深色背景上检测浅色对象(LightOnDark)。Polarity属性的基本目的就是做出这个选择。

默认设置为“DarkOnLight”(深色对象在浅色背景上)。

如果要更改此默认设置,请点击Polarity属性的值字段。将出现一个下拉列表,包含“Dark on Light”和“Light on Dark”两个选项。单击您要选择的项目。

MinArea、MaxArea

定义获取轮廓时二进制对象的面积。

默认范围为25至100,000(MinArea至MaxArea)。范围很大。这意味着,在不调整MinArea和MaxArea属性的情况下,运行新建的Blob对象时,绝大部分Blob对象将被找到。通常,可以修改这些属性,使要查找到的二进制对象的显示范围合理。这样的话,在范围外检测到任何二进制对象,也可以确定它并不是目标对象的blob。

RejectOnEdge属性 利用这条属性,可以将与搜索窗口边界有接触的那些零件排除在外。通常而言,这条属性设置为True。
RuntimeContour 定义在执行对象时是否提取轮廓。工件形状改变时,将其设为“True”。如果工件形状不改变,将其设为“False”后,在对象运行时间前示教轮廓信息。您可以通过ShowModel属性检查已示教的形状。

您现在可以测试Blob对象,测试后,将再次设置其他必须的属性。

第3步:设置Contour对象属性(ContourMode:Line时)
接下来设置Contour对象(ContourMode:Line)的属性值。以下是ContourMode设为“Line”时一些常用的属性。其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
EdgeType(单边缘)

选择搜索边缘的类型。

如果设置为双边缘,则会分别搜索每个方向的边缘,然后返回中心点位置。

Name属性(“Contourxx”)

新创建的Contour对象中,默认的项目名称是“Contour**”。在一个视觉序列中要使用多个Contour对象时,使用**的编号对Contour进行区分。

默认情况下,会将在视觉序列序列中使用的第一个Contour对象命名为“Contour01”。

需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示Contour对象名称的地方都会变为新的名称。

NumberOfEdges (1) 沿着边缘搜索线搜索1条或以上的边缘。
Polarity (LightToDark)

使用“LightToDark”属性搜索边缘。

如果您要寻找DarkToLight(深色到浅色)的边缘,请更改Polarity设置。

第3步:设置Contour对象属性(ContourMode:Arc时)
接下来设置Contour对象(ContourMode:Arc)的属性值。以下是ContourMode设为“Arc”时一些常用的属性。其它一些在许多视觉对象中都会经常使用到的属性,如AbortSeqOnFail和Graphics等,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
EdgeType(单边缘)

选择搜索边缘的类型。

如果设置为双边缘,则会分别搜索每个方向的边缘,然后返回中心点位置。

Name属性(“Contourxx”) 新创建的Contour对象中,默认的项目名称是“Contour**”。在一个视觉序列中要使用多个Contour对象时,使用**的编号对Contour进行区分。默认情况下,会将在视觉序列序列中使用的第一个Contour对象命名为“Contour01”。需要修改对象名称时,请选择Name属性工具栏,输入新的名称然后按回车键。这样所有显示Contour对象名称的地方都会变为新的名称。
NumberOfEdges(5) 搜索5条边缘,以找到圆弧边缘。
Polarity (LightToDark)

使用“LightToDark”属性搜索边缘。

如果您要寻找DarkToLight(深色到浅色)的边缘,请更改Polarity设置。

第4步:设置轮廓点相关的属性
设置用于调整轨迹精度、轮廓点数目等属性。使用的属性如下所示。有关属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
SamplingPitch

定义减少的轮廓点的最大数目。

设为“5”时,则最大数目为最初检测到数量的1/5。

ContourTolerance

定义可减少轮廓点的数量。

该值越小,允许减少的工件形状轮廓点的数量就越少。请在检查对象运行时结果同时,根据精度需要调整该值。

StartPointObject、EndPointObject

指定轨迹的开始位置和结束位置。

如设定本属性,请在创建了Point对象后,调整视觉序列中的运行顺序,使其在Contour对象之前运行。将Point对象放置在开始/结束轨迹的位置附近。

RotationDirection、LineDirection 指定轨迹方向。当ContourMode为Blob或Arc时,设置轨迹的旋转方向(CW/CCW)。当ContourMode为Line时,请以边缘搜索线垂直向下为基准,指定左右方向(LeftToRight/RightToLeft)。

第5步:测试Contour对象并检查结果
要运行Contour对象,点击执行面板上对象的[Run]按钮。然后将显示Contour对象的结果。这时需检查的主要结果有:

结果 说明
PixelX、PixelY 检测到的轮廓点位置(单位:像素)。
CameraX、CameraY 基于相机坐标的轮廓点位置(单位:毫米)。
RobotX、RobotY 基于机器人坐标的轮廓点位置(单位:毫米)。
Time结果 返回Contour对象执行所需时间。

要点


此时RobotX和RobotY以及CameraX和CameraY的结果将返回“no cal”。这意味着由于未进行校准,视觉系统将无法计算相对于机器人坐标系或相机坐标系的坐标结果。有关详细信息,请参考 7.视觉校准。

视觉校准

Text对象

Text对象描述
Text对象将视觉对象的执行结果,作为文本显示在屏幕上。

Text对象布局
Text对象有一个图像处理窗口,如下所示。

符号 说明
a 序列中的步骤号
b 对象名称
c

图像示意图

处理窗口

Text对象属性
以下列表是对Text对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
AbortSeqOnFail

当对象运行错误(判定结果为不良)时,整个序列会立即停止,并不再处理任何程序。

默认:False

CenterPointObject

指定对象中心点位置。

若将该属性设置在“Screen”上时,则可将该对象放在画面上的任何位置上。如指定了其他视觉对象时,该参数的中心点将会设定在PixelX、PixelY上。

CenterPntObjResult

指定要使用的CenterPointObject属性结果。

如果指定了All,则Text对象将应用于指定视觉对象的所有结果(NumberFound)。

默认:1

CenterPntOffsetX 使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回X偏移。
CenterPntOffsetY 使用CenterPointObject属性定位了搜索窗口的中心点后,设置或返回Y偏移。
Caption

为Text对象指定标题。

默认:空白

CurrentResult 可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。
Description

设定用户指定的描述。

默认:空白

Enabled

指定是否执行对象。

默认:True

FailColor 选择当对象被检测为不良品时,搜索窗口显示的颜色。
Font 设置文本显示的格式。
FontBold 字体加粗显示。(仅对SPEL+程序有效)
FontItalic 字体倾斜显示。(仅对SPEL+程序有效)
FontName 设置字体的名称。(仅对SPEL+程序有效)
FontSize 以磅为单位,设置字体的大小。(仅对SPEL+程序有效)
Graphics

设置显示的图表模式。

默认:1- All

LabelBackColor 设置对象标签的背景颜色。
TextBackColor

选择文本的背景颜色。

默认:Transparent

Name

用于为Text对象分配一个唯一的名称。

默认:Text01

PassColor

选择当对象被检测为良品时,搜索窗口显示的颜色。

默认:Light Green

ResultObject 指定要呈现的视觉对象。
ResultText1 指定要呈现的结果。
ResultText2 指定要呈现的结果。
ResultText3 指定要呈现的结果。
ShowLabel 指定是否在文本中添加标签。
SearchWin

仅限运行时间。

在一次调用中设置或返回搜索窗口左侧参数、顶部参数、高度参数和宽度参数。

SearchWinHeight 定义待搜索区域的高度(单位:pixel)。
SearchWinLeft 定义待搜索区域的最左边位置(单位:pixel)。
SearchWinTop 定义待搜索区域的最上边位置(单位:pixel)。
SearchWinWidth 定义待搜索区域的宽度(单位:pixel)。
UserText 设置用户定义的文本。

Text对象结果
以下列表是对Text对象结果的总结,并附有简要说明。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Passed 返回测试结果合格与否。
Found 返回是否获取了结果。
PixelX 返回文本显示的X坐标位置,用像素表示。
PixelY 返回文本显示的Y坐标位置,用像素表示。

使用Text对象
以上介绍的基础知识,方便了解如何使用Vision Guide Text对象。
以下是使用Text对象所需的步骤。

  • 创建一个新的Text对象
  • 设置搜索窗口的位置和尺寸
  • 设置文本
  • 测试Text对象并检查结果

第1步:创建一个新的Text对象
(1)点击Vision Guide工具栏中的[All Tools] - [Text]按钮。
(2)[Text]图标会出现在Text对象工具栏的按钮上方。
(3)点击该[Text]图标,并将其拖至Vision Guide窗口的图像显示区域中。对象名称将自动创建。本示例中创建的对象名为“Text01”,因为它是在本序列中创建的第一个Text对象。(稍后将说明如何修改名称。)

第2步:设置搜索窗口的位置和大小
画面上会显示一个如下所示的Text对象:


新建Text对象

符号 说明
a 序列中的步骤号
b 对象名称
c 搜索窗口

(1)点击Text对象的名称标签,然后保持按下鼠标的同时拖动Text对象,以将搜索窗口的左上角与所需位置对齐。
(2)点击尺寸手柄并拖动鼠标,更改Text对象搜索窗口的大小,并将其调整为适当尺寸。(以搜索窗口的左上角为基准显示文本)

第3步:设置字符串
(1)使用ResultObject指定要呈现结果的视觉对象。可在ResultObject中选择的视觉对象,必须是视觉序列中在Text对象之前执行的视觉对象。
(2)从ResultText1到3中选择所需呈现的结果。
(3)要显示结果文本以外的字符文本,编辑UserText属性。
(4)编辑Font属性调整字体大小。点击Font属性可显示以下设置窗口。您可以设置字体、字号和字形。

第4步:运行Text对象并检查结果
点击执行面板上对象的[Run]按钮。作为Text对象设置的文本显示在画面上。如果文本显示有问题,请调整属性设置。

Text对象显示的文本
作为Text对象显示的文本样式如下所示。

符号 说明
a 序列中的步骤号
b 对象名称
c 搜索窗口
d UserText
e ResultText1
f ResultText2
g ResultText3

文本按照UserText、ResultText1、ResultText2、ResultText3的顺序从上到下显示。如果UserText字段留空,且ResultText 1到3的值设为“None”,则不显示该部分。如果字符文本过长,无法在搜索窗口内完全显示,则不会显示该部分。

Decision对象

Decision对象的概要
Decision对象用于根据指定视觉对象的成功或失败,控制执行序列的流程。

Decision对象的属性
用于Decision对象的属性一览如下所示,下面进行简单的说明。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
ConditionObject

指定同一序列内的Decision对象之前的视觉对象。

使用该结果,决定使用Decision对象的True分歧或False分歧的序列流程。

Description

设定用户指定的描述。

默认:空白

Enabled

指定是否执行对象。

默认:True

Name

用于为Decision对象分配一个唯一的名称。

默认:Decision01

TrueCond

使用以ConditionObject指定的视觉对象的Passed结果,指定进至True分歧的条件。

TargetPassed:当Passed结果为True时,进至True分歧。TargetFailed:当Passed结果为False时,进至False分歧。TargetNoExec:当未执行视觉对象时,进至True分歧。

默认:0-TargetPassed

Decision对象结果
Decision对象中无结果。

Decision对象的使用方法
以上介绍的基础知识可帮助用户了解Vision Guide Decision对象的使用方法。
使用Decision对象所需的步骤如下所示。

  • 创建一个新的Text对象
  • 条件分歧的设置
  • 执行对象的设置及执行
  • Coordinates对象的使用方法

第1步:创建一个新的Decision对象
(1)事先添加要设置到ConditionObject属性的Decision对象的对象。本示例中,将添加Geometric对象。
如果不设置需要在Decision对象之前执行的ConditionObject,无法使用Decision对象,因此无法添加至序列的开头。
(2)点击Vision Guide工具栏 - [All Tools] - [Decision]按钮。
(3)点击[Decision]图标,拖动至Vision Guide窗口的图像显示区域。
对象名称将自动创建。例如,如果是在序列中创建的最初的Decision对象,名称将为“Decision01”。(稍后将说明如何修改对象名称。)因为Decision对象无搜索窗口,请从流程图和序列树确认步骤位置。

第2步:设置条件分歧
(1)从Decision对象的ConditionObject属性的下拉列表选择要确认结果的对象。ConditionObject仅可设置在序列内于Decision对象之前执行的对象。本示例中,将ConditionObject设置到Geom01。
(2)设置Decision对象的TrueCond属性,使用在(1)选择的对象的Passed结果值,指定进至True分歧的条件。
如果已指定默认的0-TargetPassed,(1)的对象的Passed结果为True时,将进至True分歧,并执行视觉对象。
Passed结果为False时,如要进至True分歧并执行视觉对象,则将TrueCond属性指定为TargetFailed。

第3步:添加及运行对象
(1)添加通过Decision对象的True及False分歧执行的对象。
从Vision Guide工具栏选择想要添加的对象后,将其拖动至流程图,放置在Decision对象的分歧内。可在各分歧内放置所需数量的对象。无法在分歧内放置Decision对象。
(2)在Decision对象的分歧聚合之后,添加对象。
根据需要,可在Decision对象分歧聚合后,将对象添加到序列中。
(3)确认视觉序列的动作。
执行的分歧因Decision对象的CondicionObject指定的对象的结果与TrueCond属性设置值的组合而发生变化。也可执行整个序列,以及单步执行序列,以确认动作。

第4步:Coordinates对象的使用方法
在某些情况下,根据Decision对象的在True或False分歧的对象处理,需要获取像素、相机或机器人的坐标。在这种情况下,将提供坐标结果的对象的结果保存到Coordinates对象后,在程序中从Coordinates对象的结果访问坐标。

(1)将Coordinates对象添加到序列中。
(2)设置保存坐标的对象的CoordObject属性。任意数量的对象可将坐标储存到相同的Coordinates对象中。执行使用CoordObject的每个对象时,将覆盖保存坐标。本示例中,在Geom01与Corr01两者中,CoordObject均已被设置为Coords01。

(3)在程序中,使用VGet,从Coordinates对象获取坐标。本示例中,如果Geom01通过,Geom01坐标结果将被复制到Coords01中。如果Geom01通过,将执行Corr01。如果Corr01通过,Corr01坐标结果将被复制到Coords01中。在SPEL程序中,可从Coords01获取机器人的坐标。

VGet test.Coords01.RobotXYU, found, x, y, u  

Coordinates对象

Coordinates对象的概要
Coordinates对象用于储存其他对象的结果。主要在含有Decision对象的序列中使用。
在含有Decision对象的序列中,获得目标结果的对象随着分歧功能的执行而变化。通过将用于储存坐标结果的Coordinates对象设置到各分歧的对象,可从Coordinates对象获取目标的结果。
Coordinates对象从想要储存结果的对象中选择。从下述属性选择Coordinates对象。

属性 说明
CoordObject

指定储存结果的Coordinates对象。在执行对象时进行储存处理,如果未执行Decision的分歧功能等,将不进行复制处理。

默认:None

可指定CoordObject属性的对象仅限于含有Pixel、Camera及Robot X、Y、U的对象。无关设置的对象的步骤前后顺序,在任一步骤均可将Coordinates对象指定到CoordObject属性。可从多个对象的CoordObject属性指定Coordinates对象。在此情况下,执行每个对象时,将执行储存程序,并覆盖保存储存的结果。

Coordinates对象的属性
以下列表是简单介绍Coordinates对象属性的总结。有关每个属性的详情,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

属性 说明
CurrentResult 可定义要在对象窗口的结果列表中显示的结果,或者是当一个搜索窗口中的对象物检测到了多个结果时需要返回的数据。
Description

设定用户指定的描述。

默认:空白

Enabled

指定是否执行对象。

默认:True

Name

用于为Coordinates对象分配一个唯一的名称。

默认:Coords01

Coordinates对象的结果
以下列表是简单介绍Coordinates对象结果的总结。有关各结果的详细信息,请参阅以下内容。
“Vision Guide 8.0 Properties and Results Reference”

结果 说明
Angle 返回已找到的点的角度。
CameraX 返回相机坐标系中检测到对象的X坐标。
CameraY 返回相机坐标系中检测到对象的Y坐标。
CameraXYU

仅限运行时间。

返回相机坐标系内查找对象位置的CameraX坐标、CameraY坐标和CameraU坐标。

NumberFound 返回查找到的点的数目。
Found 返回是否检测到了对象。
Passed 返回测试结果合格与否。
PixelX 返回像素坐标系中检测到对象的X坐标。
PixelY 返回像素坐标系中检测到对象的Y坐标。
PixelXYU

仅限运行时间。

以像素返回查找对象位置的PixelX坐标、PixelY坐标、PixelU坐标。

RobotX 返回机器人坐标系中检测到对象的X坐标。
RobotY 返回机器人坐标系中检测到对象的Y坐标。
RobotU 返回机器人坐标系中检测到对象的旋转量。
RobotXYU

仅限运行时间。

返回机器人坐标系内的查找对象位置的X坐标、Y坐标、旋转量。

ShowAllResults

以表格形式在对话框中显示指定视觉对象的所有结果。

比较结果将更加容易。

Coordinates对象的使用方法
下面对Coordinates对象的创建方法及使用方法的以下项目进行说明。

  • 创建一个新的Coordinates对象
  • 设置CoordObject
  • 执行序列
    开始进行以下步骤前,首先创建一个新的视觉序列或选择要使用的视觉序列。

第1步:创建一个新的Coordinates对象
(1)请点击Vision Guide工具栏 - [All Tools] - [Coordinates]按钮。
(2)[Coordinates]对象工具栏按钮上显示Coordinates图标。
(3)点击Coordinates图标,拖动至Vision Guide窗口的图像显示区域。
(4)请注意,对象名称将自动创建。本示例中创建的对象名称为“Coords 01”,因为它是在本序列中创建的第一个Coordinates对象。(稍后将说明如何修改对象名称。)

第2步:设置CoordObject
添加想要将结果储存到Coordinates对象的对象。在前文中已添加Coordinates对象,但因为想要复制结果的对象和Coordinates对象的步骤位置的前后关系不设限制,请根据情况调换步骤顺序。
添加对象后,从CoordObject属性选择及指定Coordinates对象。

第3步:运行序列
执行序列。
执行序列之后,请确认Coordinates对象的结果。已储存Coordinates对象被设置为CoordObject的对象的结果。
在如下所示流程图的示例中,Geom01和Corr01两者的CoordsObject属性已被设置为Coords01。如果Blob01通过,将执行Geom01,并将结果储存到Coords01中。如果Blob01未通过,将执行Corr01,并将结果储存到Coords01中。在SPEL程序中,可从Coords01获取机器人的坐标。

VGet test.Coords01.RobotXYU, found, x, y, u  

从一个对象返回多个结果

Blob对象、Geometric对象、Edge对象、Correlation对象和DefectFinder对象可以在一个搜索窗口中查找多个被检测对象。
为了更好的理解如何处理单个视觉对象的多个结果,接下来将进一步说明以下内容。

  • CurrentResult属性
  • NumberToFind属性
  • NumberFound结果
  • ShowAllResults结果

视觉对象可查找到特征的默认数和最大可设置数
Blob对象、Geometric对象、Edge对象、Correlation对象或DefectFinder对象的默认属性配置,使其是在一个搜索窗口中只能查找到一个被检测对象。这是因为NumberToFind属性的默认设置为1。
如果将NumberToFind属性设置为大于1的数字,视觉对象会尝试查找相同数量的对象。
如果将NumberToFind属性设置为All,则会尝试查找到最大对象数量(100)。

设置NumberToFind属性并运行视觉对象。则会检测出并显示多个符合查找标准的对象。(带十字光标的绿框表示已查到到对象的返回位置)。此外,在检测到的二进制中,被判断为CurrentResult的对象,会区别于其他二级制对象,用比较浅的绿色突出显示。

已查找对象的排序
首次运行多结果对象时,CurrentResult属性将自动设置为1,这使视觉对象的多个结果中的第一结果将显示在对象窗口的结果列表中。
如果是Correlation对象和Geometric对象,第一个结果就是得分最高的对象(与本Correlation对象的所有已查找到的特征相比)。第二个结果就是得分次之的结果,以此类推。
如果是Blob对象和DefectFinder对象,第一个结果就是基于SizeToFind属性和Sort属性值返回的结果。(例如,如果SizeToFind属性设置为“Largest”,则第一个结果就是查找到的最大对象。)想了解更多关于结果排序的信息,请参阅 Vision Guide 8.0 Properties and Results Manual 中的SizeToFind属性和Sort属性。

检查视觉对象的多个结果
如果仔细查看结果列表的标题,您会注意到有些地方显示“1/10”。(为方便说明,此处假设已经将Blob对象的NumberToFind属性设置为10。)
这个显示代表CurrentResult是10个(在NumToFind属性中定义)被检测到对象中的第一个。
请注意,结果列表标题中所显示的“1/10”中第二个数字(此处为数字10),这是在NumberToFind属性中设置的值,而非实际查找到的对象的数量。
当设置的检测对象为10时,实际上可能只检测到了5个对象。此时您可能会产生疑问,本应该显示排名前10个结果,但是为什么只显示了5个对象。以下将说明的方法,可以帮助您确认未检测到另5个对象的原因。
您可以通过更改CurrentResult属性,来切换当前显示的二进制对象,以查看其中任何一个二进制的结果。
您可以通过直接在CurrentResult属性值字段中,输入编号来查看您要确认的结果。也可以将光标移至CurrentResult属性值字段,然后使用[Shift] + [↓]或[Shift] + [↑]键搜索结果。
通过查看CurrentResult属性或结果列表标题,可以确认结果列表中显示的顺序。例如,当NumberToFind属性设置为10,则第一个结果将显示为“1/10”,第二个结果是“2/10”,第三个结果是“3/10”,以此类推。

注意


修改CurrentResult属性时,也会改变程序中的VGet结果。比如,如果一个SPEL程序中,如果使用VGet从视觉对象获取值,当CurrentResult属性设置为3,那么VGet指令将返回第三个RobotXYU的值。所以需注意,因为如果CurrentResult的设置有误,最终可能会导致整个SPEL+程序错误。

提示:如需获取多个结果,请在VGet命令中指定的结果名称中明确指定结果编号。

示例:VGet seqname.objname.RobotXYU(i), found, X, Y, U  

如何使用NumberFound结果
NumberFound属性可以显示实际检测到的二级制对象的数量,非常实用。而EPSL+程序也可以获取该结果,所以可以通过SPEL+程序,确认是否找到了正确数量的结果,或计算找到的结果数量,或者计算还有多少其他结果可用。示例如下。
以下这一小段代码,可用于检查查找到的结果的数目是否小于5。

VGet seqname.objname.NumberFound, numfound  
If numfound < 5 Then  
     'put code to handle this case here  

考虑使用视觉在一个VRun命令中,检测到尽可能多的工件。机器人会逐个抓取工件,直至将检测到的工件全部移动到传送带上。以下的一小段代码,则可用于控制机器人逐个抓取被检测到的工件,然后移动到传送带的相同位置上。

VRun seqname  
VGet seqname.objname.NumberFound, numfound  
For i = 1 to numfound  
  VGet seqname.objname.RobotXYU(i), found, X, Y, U  
If found = True Then  
   'Set coordinates found from vision  
    VPick = XY(X, Y, -100.000, U)  
  Else  
    Print "Vision Error: part not found"  
  EndIf  
  
  Jump Vpick           'Jump to Vision Pickup position  
  On Gripper           'Turn on vacuum  
  Wait .1  
  Jump Vconvey         'Jump to Conveyor Position to drop part  
  Off Gripper          'Turn off vacuum  
  Wait .1             
Next count  

一次性检查所有多结果
当Blob对象和Correlation对象查找到多个结果时,可以使用另一个便利的工具来确认结果,这就是ShowAllResults结果。
例如,当您想比较最高得分和第二个等分的结果时,或者是查找到第三个结果后发现得分大幅下降时,则可以使用ShowAllResults结果,来一次性查看所有结果。
点击ShowAllResults结果的值字段后,将出现一个按钮。点击该按钮,则会弹出一个对话框,显示当前视觉对象的所有结果。

ShowAllResults对话框如下所示。

使用多结果对话框调试搜索问题
有时,即使在同一生产批次中,正在处理的工件也存在明显差异,或者可能一个工件上有两个或两个以上,相似的被查找对象的特征。
这种情况下,即使已经为Accept属性设置了一个适当的值,仍可能导致搜索到错误的对象。遇到这种问题,很难找到原因,可很难预测Accept属性正确的值。
多结果对话框则可以帮助您解决这一烦恼。
当您想在一个工件上只检测一个被检测对象,然而却返回了多个结果。则可以使用多结果对话框,来确认返回错误对象的原因。常见的原因有以下两种。
(1)搜索窗口内有两个或两个以上,非常类似的被检测对象,因此返回的Score结果十分接近。
(2)2. 设置的Confusion或Accept属性的值较低,导致即使得分较低的对象也符合Accept属性的设定。

当在搜索窗口中仅搜索单个检测对象时,以上两种情况对于初次使用Vision Guide的用户来说,可能会十分令人困惑。
当碰到有时可以正确的检测出对象,而有时又错误的检测出其他对象时,请使用多结果对话框来排查问题所在。请按照以下步骤确认问题原因。

(1)将NumberToFind属性设置为“3”或以上。
(2)在Vision Guide 8.0开发环境下运行视觉对象。
(3)点击ShowAllResults属性设置值字段中的按钮,以显示多结果对话框。
(4)检查搜索到的前三个或更多对象的得分。
(5)如果只检测到一个或两个对象(Vision Guide 8.0设置了那些被认为是已查找到对象的得分),为了检测一个以上的对象,请降低Accept属性设定值,并再次运行视觉对象。(您可以在检查完ShowAllResults对话框的结果后,恢复Accept的设置。)
(6)点击[ShowAllResults属性]按钮,显示多结果对话框。
(7)检查搜索到的前三个或更多对象的得分。

当确认了上述的已查找到的前三个或更多对象的得分后,应该已经大致明白问题所在。常见的问题有以下两种。

  • 每个检测到的对象的得分都大于Accept属性中设置的值。
    如果是这种情况,请将Confusion属性的值调高,以确保检测出正确的对象,而不返回那些仅与Accept属性阈值一致的对象。当然也可以通过修改Accpet属性的值来改善这一问题。
  • 每个对象的得分都很接近。如果是这种情况,请执行以下步骤来区分被检测对象。
    • 重新调整搜索窗口,确保作为被检测出对象而随机返回的对象物,不会出现在搜索窗口中。
    • 重新示教模型,使其匹配您要检测的对象特征。
    • 调整周围的照明灯光,以确保要检测的对象的得分,可以高于错误检测对象的得分。

利用SPEL+语言读取多个结果
综上所述,CurrentResult属性可用于设置结果列表中将显示的结果。
该属性也能用于指定返回第几个结果。例如,如果我们想要得到Blob对象返回的第3个结果的Area结果,则CurrentResult必须设置为3。
上文中已经说明了,如何从对象窗口属性列表中设置CurrentResult属性。现在,让我们看看如何利用SPEL+语言读取多个结果。
通过SPEL+语言读取多个结果时,将结果视为阵列,而结果编号为将要读取的结果旁边的下标号。以下第一个示例显示的是如何获得第3个Area结果,以及如何将其从SPEL+语言放入名为面积的变量。

VGet seqname.objname.Area(3), area  

如下所示,第二个示例显示的是如何获得相同的第三个Area结果,但是,这次将其确定为Area()阵列中第三个元素的值。

VGet seqname.objname.Area(3), area(3)  

可使用不同的名称表示阵列中的元素,但不可以表示固定元素,如上述示例2。注意,将称作“var”的变量用作Area结果的下标。

VGet seqname.objname.Area(var), area(var)  

第4个示例假设您已采用一个视觉对象查找多个零件(假如多达10个)。为了让机器人识别这些零件(假设是一支笔),所以您就需要将X、Y和U坐标存储到变量中,用于表示各个已查找到的零件的坐标值。利用以下代码,可从RobotXYU结果中输出这些坐标,并将其输入X、Y和U阵列,机器人随后将移动至这些阵列中的相应坐标。

Function test  
  Boolean found(10)  
  Integer numfound, i  
  Real X(10), Y(10), U(10)  
  
  Jump camshot   'move camera into position snap shot  
  
  VRun seq01     'run the vision sequence to find the pens  
  
  VGet seq01.blob01.NumFound, numfound     'how many found  
  
  For i = 1 to numfound    'get robot coords  
    VGet seq01.blob01.RobotXYU(I), found(i), X(i), Y(i), Z(i)  
  Next i  
  'Add code for robot motion here……  
Fend  

多对象自动搜索

您可以对几个视觉对象使用多对象自动搜索。当您指定使用其他对象的所有结果时,将自动创建搜索对象。这样您即可配置一个或多个对象,以进行搜索,并在运行时,将为上一级对象的所有结果自动创建和运行对象。
多对象自动搜索可以与CenterPointObject和Frame一起使用。

使用示例:CenterPointObject
1.创建视觉序列并添加一个Blob对象。将NumberToFind设为“10”。

2.创建一个Polar对象。将Blob对象设置为CenterPointObject,并将CenterPntObjResult设为All。

3.示教Polar对象。

4.运行序列。在检测到的二进制对象中,创建并运行Polar对象实例。如果查找到10个二进制对象,将以每个Blob对象的结果为中心,创建10个Polar对象。在下图中,已为检测到的二进制创建了7个Polar对象。

当使用多对象自动搜索时,如果子对象可查找到多个结果,那么将为每个子对象实例找到一个结果。
您还可以将Line、Edge和LineInspector对象,用于多对象自动搜索。
指定StartPointObject和EndPointObject,并将StartPntObjResult和EndPntObjResult设为“All”。

例如:
1.创建一个新序列,并选择与ImageFile平行的2行二进制(见下图)。
2.创建Blob01,将NumberToFind设置为“3”,Sort设置为“PixelX”。调整大小和位置以找到第一行二进制对象。
3.复制并粘贴Blob01以创建Blob02。调整大小和位置以找到第二行二进制对象。

4.创建Line对象。 将StartPointObject设置为“Blob01”,StartPntObjResult设置为“All”。并将EndPointObject设置为“Blob02”,EndPntObjResult设置为“All”。

5.运行序列。将为StartPointObject和EndPointObject的每对结果创建Line对象实例。

使用示例:CheckClearanceFor
下面以使用两点抓取的夹爪来取放工件的应用为例,来说明自动搜索之一的CheckClearanceFor功能。该视觉序列由2个对象组成,分别是用于检测工件的“Geometric”对象,和检测是否有足够的间隙,可以伸入夹爪而不会产生干涉的“Blob”对象。

在夹爪的移动范围中还有另一个工件,由于存在干涉,夹爪无法抓取工件。 在夹爪的运动范围中没有其他工件,有足够的空间可以抓取工件(a),且不会与其他工件产生干涉。

例:
1.创建Geometric (Geom01) 作为父对象以检测工件,并设置模型窗口的位置和大小(参考下图)。
同时设置相关属性。本案例中,将NumberToFind设置为“All”以检测多个工件。
有关CheckClearanceFor功能下可使用的父对象,请参阅Vision Guide 8.0 Properties & Results Reference。

2.创建子对象Blob (Blob01, Blob02),用于判断夹具干涉,并将其定位在Geometric窗口的两端 (参考下图)。
同时设置相关属性。

要点


如需旋转夫对象中检测到的工件,请在子对象中将SearchWinType设置为“RatatedRectangle”。如设置为“Rectangle”,则搜索窗口无法旋转,也无法跟踪旋转角度。

设置子对象Blob01和Blob02的属性。

  1. 将CheckClearanceFor设置为“Geom01”。(参考下图)
    此功能可以在序列执行期间,根据父对象的所有结果,自动创建并运行子对象。

    有关CheckClearanceFor功能下可使用的子对象,请参阅Vision Guide 8.0 Properties & Results Reference。

    要点


    设置了CheckClearanceFor的子对象,无法通过其他对象进行设置。(在本案例中,将Blob01的CheckClearanceFor设置为“Geom01”时,则Blob01将不会显示在Blob02的CheckClearanceFor的下拉列表中。)

  2. 设置ClearanceCondition。
    根据子对象的检测见过,设置是否抓取工件。将ClearanceCondition设置为“NotFound”时,若Found结果为“False”,则子对象的ClearanceOK为“True”,判断的结果是可以抓取。所ClearanceCondition设置为“Found”时,则结果相反。
    在本案例中,需要确认工件的两侧没有其他物体,且有足够空间伸入夹爪,所以将ClearanceCondition设置成“NotFound”。(参考下图)

  3. 运行序列。
    在下图中,绿色实线和红色虚线包围的对象,即为父对象Geom01的检测结果。绿色实线包围的检测结果,是可以抓取的工件。(子对象判断能否进行抓取)红色虚线包围的检测结果,是无法抓取的工件。

    如需确认判断是否抓取工件设置的值,请参考父对象Geom01的ClearanceOK的设置。

    要点


    当使用CheckClearanceFor功能并判断可抓取工件时,请确保执行序列并参考父对象的ClearanceOK设置。并在执行子对象后设置父对象的ClearanceOK。

显示/隐藏所有视觉对象标签

Force Labels Off(仅适用于视觉工具栏)

当在一个视觉序列中处理的多个视觉对象时,可以使用[Force Labels Off]功能关闭标签,避免屏幕显示过于杂乱。
Vision Guide工具栏中的[Force Labels Off]是个开启/关闭的按钮。按下按钮时,所选视觉对象以外的标签均会消失,可以清晰的显示选择的视觉对象。
当未按下[Force Labels Off]按钮时,会显示此按钮,且会为图像显示区域中显示的所有视觉对象,显示一个标签。

要点


  • [Force Labels Off]有时会与[Force All Graphics On]功能一起使用。当按下[Force Labels Off]时,即使按[Force All Graphics On]按钮,也不会显示标签。
  • 如果您在使用视觉序列时,并没有按下[Force Labels Off]按钮,但仍无法看见某个视觉对象,则可能是因为该视觉对象的Graphics属性设置为了“none”。所以导致该对象的所有图形都无法显示。

如果当前程序中无视觉序列,[Force Labels Off]按钮将呈现暗灰色,且无法使用。

打开所有视觉对象图形

Force All Graphics On(仅适用于视觉工具栏)

[Force All Graphics On]按钮是一个快捷键,只需点击该按钮,即可快速显示当前视觉序列中视觉对象的所有图形(搜索窗口、模型原点、模型窗口、直线和标签)。
该按钮的优先度高于单个视觉对象的Graphics属性设置,因此您可以快速查看所有视觉对象,而不必单独修改每个视觉对象的Graphics属性。

要点


[Force Labels Off]有时会与[Force All Graphics On]功能一起使用。[Force Labels Off]的功能优先。当按下[Force Labels Off]时,即使按[Force All Graphics On]按钮,也不会显示标签。

如果当前程序中无视觉序列,[Force All Graphics On]工按钮将呈现暗灰色,且无法使用。

仅显示当前对象

Show Only Current Object(仅适用于视觉工具栏)

当序列中具有多个对象时,有时会难以选择和操作所需的对象。此时可通过点击[Show Only Current Object]按钮,仅显示当前视觉对象。如需重新显示所有对象,再次点击[Show Only Current Object]即可。如需仅显示当前对象,可以在对象列表中选择要显示的对象。