加拿大DALSA Coreco IPD机器视觉开发软件
S h e r l o c k6应用编程入门
文/深圳市众为兴数控有限公司视觉部王寅
目录
Sherlock操作界面介绍..................................................................................................................................................2页什么是Sherlock Investigation.............................................................................................................................2页Sherlock主界面菜单栏说明................................................................................................................................3页Sherlock主界面图形工具栏介绍………………………………………………………………………………4页
Stakeout介绍…………………………………………………………………………………………………………….5页什么是Stakeout…………………………………………………………………………………………………5页Stakeout工具栏…………………………………………………………………………………………………6页
Peek介绍………………………………………………………………………………………………………………….6页什么是Peek……………………………………………………………………………………………………...6页Peek中对图象进行预处理……………………………………………………………………………………...7页 Peek中对算法进行设置………………………………………………………………………………………...8页Peek位置设置…...................................................................................................................................................9页
Strategy,Surveillance,Readings,Variables介绍……………………………………………………………9页Strategy窗口工具栏…………………………………………………………………………………………....9页 Reading…………………………………………………………………………………………………………11页Variable变量介绍……………………………………………………………………………………………...11页
Formulae,Subroutines,Flow Control 说明………………………………………………………………….12页Formulae……………………………………………………………………………………………………….12页Subroutines…………………………………………………………………………………………………….13页Flow Control…………………………………………………………………………………………………...13页
Monitor,Reporter,I/O Control 介绍………………………………………………………………………….16页Monitor……………………………………………………………………………………………………........16页Reporter…………………………………………………………………………………………….……….....16页I/O Control……………………………………………………………………………………………………..17页
Investigation Debug如何进行程序的调试……………………………………………………………………….17页Debugging调试模式…………………………………………………………………………………………17页Breakpoints设置程序断点……………………………………………………………………………………18页
Sherlock典型Peek算法介绍……………………………………………………………………………………….18页Sherlock中像素单位与实际物理单位之间的校正转换(Calibration)…………………………………...18页Landmarking用于自动校正Peek位置………………………………………………………………………21页SmartInspect模板匹配算法…………………………………………………………………………………..23页Search寻找算法………………………………………………………………………………………………24页SmARTSearch………………………………………………………………………………………….25页
Smart360……………………………………………………………………………………………….26页
在VB环境下为Sherlock编写终端用户操作界面…………………………………………………………….28页
VB环境中进行Sherlock应用开发软件结构示意图…………………………………………………………..30页
用Sherlock开发项目应用…………………………………………………………………………………………...31页Sherlock与VB实现通讯连接…………………..…………………………….………………………………31页VB中调用Sherlock中的算法结果和各种变量……………………………………………………………...34页Sherlock中的VBScript使用方法……………………………………….……………………………………34页Sherlock中VB script的编写规则要求………………..……………………………………………………..36页
一. S herlock操作界面介绍
什么是Sherlock Investigation?
Sherlock Investigation 是Sherlock软件的工程文件,其后缀名为(.inv),一个Investigation文件包括:
一个或多个Stakeout窗口– 指所显示的图像及要定义的Peeks (要处理的感兴趣区域)
Strategy – 程序编辑窗口,从图像提取信息,并以此做出决定
Surveillance – 将在处理中提取的数据结果显示出来
Monitor – 显示运行时间信息(错误,处理时间)
Reporter – 显示由程序产生的统计数据和信息
如下图所示:
Stakeout
Peek
Monitor
Surveillance
Sherlock 主界面菜单栏说明
File
打开新或旧的 Investigation 文件, 并存储Investigation 文件 建档 investigation (文本目录) View
打开和关闭Strategy, Surveillance, Monitor 和Reporter 窗口。 Insert
在Strategy 应用程序编辑窗口中添加Subroutine, Stakeout, Formula, IO/Ctrl, Flow Instruction, Variable, VB script Code Investigate
选择单步,连续运行应用程序或进入调试模式对应用程序进行调试 Options
进行Stakeout, Hardware, Report, Preferences, Format 的基本设置 Window
Windows ?-标准微软windows 安排选项 Help
打开Sherlock 在线帮助文档
Stakeout 主界面图形工具栏介绍
打开已保存的
应用工程
连续运行Investigation
储存当前的Investigation 应用工程
调试模式切换
在线帮助
单步运行Investigation
新建一个Investigation 工
程文件
二.Stakeout介绍
什么是Stakeout?
Stakeout窗口是Sherlock软件中的图像采集窗口,用于显示CCD所采集的图像和进行各种图像处理。
每个 Stakeout 包含一幅要处理的图像;
每个 Stakeout是一幅图像;
每个Investigation项目程序可有无数的 Stakeout;
Stakeout中的图像来源可以是从相机,图像文件,或另外的 Stakeout中获得。
如下图所示一个Investigation中包含了4个Stakeout,每个Stakeout中都采集了不同的图像,我们可以分别在不同的Stakeout窗口中使用不同的Peek工具对图像进行各种功能的处理。在每个Stakeout中用Peek进行了处理后都有对应的程序模块在Strategy应用程序编辑窗口中生成,这些程序将作为这个Investigation工程程序的组成部分。
Stakeout图形工具栏介绍
图像缩小或放大 加载图像到 Stakeout 里或
将 Stakeout里的图像存储开始或停止图
添加 各种Peek 到 Stakeout 里
像采集,无需
处理
三.Peek介绍
什么是Peek?
Peek就是一种对图像中需要分析处理的区域进行划分的工具,它也可以直接理解成为感兴趣区域或图像检测区域。
由于我们在实际项目中所要处理分析的图像区域大小形状各不相同,因此在Sherlock中设置了不同种类的Peek
来解决这个问题。
Sherlock中Peek的分类:
面状Peek
1. Point Peeks 点状Peek,它以单个像素为检测区域
2. Rectangle Peeks 矩形Peek
3. Parallelogram Peeks 平行四边形Peek
4. Annulus Peeks 半伞形Peek
5. Torus Peeks 圆环形Peek
线形Peek
1. Arc Peeks 弧线Peek
2. Circle Peeks 圆圈Peek
3. Spoke Peeks 星形放射线Peek
4. Bull’s eye Peeks 牛眼圆环Peek
5. Rake Peeks 梨耙Peek
在下图中我们例举了几个常用的Peek : 线形Peek
矩形 Peek
圆环面 Peek
犁耙Peek
Peek 中对图像进行预处理
在每个Peek 中都可以进行图像算法的选择和处理,我们在Stakeout 窗口中用鼠标左键双击Peek ,将会弹出Peek Options 窗口。在这个窗口中我们可以对Peek 所划区域进行图像的预处理和图像处理算法的选择设置。
在一个Peek 中,为达到检测要求的图像效果,我们可以对检测区域中的原始图像最多进行4次不同的图像预处理。 预处理器可改变 Peek 中的像素值
预处理器预处理参数设置
Threshold阚值分割预处理器参数对话
Peek中对算法进行设置
根据不同的应用需要我们可以为Peek区域选择不同的处理算法来实现检测目的。
下面这个Count算法可从Peek中的像素里提取信息
算法选择计数算法参数对话框
算法参数设置
Count算法的目的是从图像中提取不同灰度值的像素,上面我们提取的是灰度值为255的所有像素。在算法选择窗口中提供了大量具有强大实用功能的图像处理算法供我们选择设置。
Peeks 位置设置 Peek 名称
Peek 位置选择上下左右水平移动、顺逆旋转
Peek 显示方式选择
四.Strategy ,Surveillance ,Readings ,Variables 说明
Strategy 程序编辑窗口:
Strategy 是Investigation 执行采集和分析图像所采取的一系列步骤 (程序)
Variables变量
显示窗口
Strategy程
序编辑窗口
Strategy窗口菜单栏
在一个Strategy里您可以添加或删除的元素
Subroutines
(添加子程序)Stakeouts (添加组合公式)Flow controls (添加变量)I/O controls (添加代码)(添加Stakeout窗口)(程序流量控制)(I/O信号设置)
Reading
Readings 是一个Peek的算法所归返出的数据。每一算法归返至少一个或几个Reading.,它们在Strategy程序编辑 窗口中显示出来。
Reading 种类
B Boolean (True/False)
N Number
P Point (x,y coordinate坐标)
L Line (angle, distance)线(角度,距离)
S String (text)字符串
[ ] Arrays of the preceding types以上各类型的矩
阵
这是由正执行Connectivity算法的矩形Peek
rectA 所归返的Readings,根据不同检测算法
所显示出的变量不相同。
Variable变量类型介绍
变量是用户建立的数据容器
变量的种类(与 Readings相同)
(True/False)
B Boolean
N Number
P Point (x,y coordinate坐标)点
L Line (angle, distance )线(角度,距离)
S String
(text)字符串
[ ]Arrays of the preceding types以上各类型的矩阵
五.Formula,Subroutines,Flow Control 说明
Formula组合公式:
Formula操控数据,其输入一般是从算法里得来的Readings数据或从别的函数公式里来的结果
在下面Formula Edit窗口中,我们所设置的Formula 公式的功能是计算由Peek rectA的算法(Connectivity)所归返的区域矩阵(N[ ] rectA.area)的平均值(N avg)
该函数说明所选的公式做什么(求均值)及它需要什么样的输入 (N[], 一数字式矩阵) Subroutines:
Subroutine 子程序是Strategy隔离的分部,它作用是:
用作条件式执行
Strategy内的重用性
使数据输出简单化
Flow Control:
流程控制的作用:
调用子程序
从子程序中提早退出
跳到在同一个程序中的声明里
仅当dist from 1 to 2超出容忍范围
时调用子程序Reject part Array只有已存在的子程序会出现在此表
上。
如果拒绝计数在容忍范围Array内,会从Reject part子程序
返回;不需执行子程序里任
何其它元素。
当dist from 1 to 2在容忍Array
范围内时,程序跳到soA 从
头开始执行。
子程序可被自动调用,无需 Flow Control控制,只要在Subroutine edit窗口中选择After loading investigation。
六.Monitor,Reporter,I/O Control 说明:
Monitor:
Monitor 窗口显示Investigation运行时的各种执行信息,如错误
执行次数
检测时间
Reporter:
Reporter 显示 Investigation 运行时应用产生的执行信息,它可以进行自行设置如:对操作员的信息
关于Readings的统计信息
I/O Control:
I/O Control为输入或输出产生,测试,或等待
输出: 模拟,数字,系列信号,写进文件里的字符串及生成设置Reporter
输入: 模拟,数字,系列信号,文件串
缩小放大 Stakeouts图像
重置Peeks大小和移动Peeks
七.Investigation Debug如何进行程序的调试
在我们完成了一个Investigation的项目程序后,我们怎么能够对我们编写的视觉应用程序进行验证调试呢,这就要用到我们下面将要介绍的Sherlock中的调试功能。
进入Debugging调试模式的步骤:
首先我们要在Sherlock主界面图形工具栏中进行如下操作
选择Investigate 调试按钮开始进入 Investigation的调试模式
选择Investigate 单步调试按钮进行每次一步的程序运行
选择Investigate 终止按钮跳出调试模式
选择Investigate中跳到下一断点按钮直接运行到设置的下一断点处
Breakpoints设置程序中断点
程序中断点的设置是在Strategy – 程序编辑窗口中完成的
单击鼠标左键可以在Investigation程序的
任何位置设置断点
如左图中我们在P cent[0]的位置设置了
一个断点
八.Sherlock典型Peek算法介绍:
Sherlock中像素单位与实际物理单位之间的校正转换(Calibration)
Sherlock软件系统默认设置为以单个像素为测量单位(如上图所示距离单位是19.198像素) 。但如何办到测量距离单位是毫米? 或英寸?或微米?
这就需要我们预先将系统默认的像素单位转换为CCD所拍摄图像物体实际物理单位,我们可以通过以下步骤实现:为标定相机,您必须首先定位四个已知相互距离的点。我们试以点之间的距离单位是英寸作为标定,如下图
在图中我们用矩形Peek选择四个圆点,将这四个点的位置坐标作为标定公式的输入。然后我们在Strategy程序编辑窗口中添加一个Formula组合公式,在Formula公式编辑窗口中将四个点的中心添加到Inputs中,然后在算法Function中选择Calibration-P,P,P,P
点击公式参
数框,出现
编辑坐标系
统对话窗
口,您可输
入四个点的
实际距离。
在进行标定的过程中,如Strategy程序编辑窗口中的主程序包括含有公式的子程序,则子程序必须被调用。