搜档网
当前位置:搜档网 › SherLock基础设置

SherLock基础设置

SherLock 基础设置

Jakit Zhang

Jakit.Zhang@https://www.sodocs.net/doc/cf12728127.html, Tel. +86 185********(China)Document Revision 1.0: 11 Aug 2015

Copyright ? 2015, Teledyne DALSA Industrial Products, Inc.,

ALL RIGHTS RESERVED

第一部分:在sherlock中设置从相机中采集图像第二部分:相机校正

第三部分:定位

第四部分:调试

第五部分:采集Timeouts

第六部分:异步采集

第七部分:关于软件更新

第八部分:软件版本:

第九部分:软件升级之前

第十部分:命令行选项

第十一部分:应用设置

第十二部分:快捷键

第十三部分:彩色定义

第十四部分:Sherlock安装文件

第一部分:在sherlock中设置从相机中采集图像

1) 用sherlock采集图像,必须具备授权。你是否具有授权可以在授权管理软件中查看权限。路径:开始 | 所有程序 | Teledyne DALSA | Sherlock | License Manager.

NOTE:必须安装Sentinel licenses驱动。

2) 加载文件必须配置正确的驱动文件,加载正确的相机配置文件。一般采用sherlock 的"Options - Acquisition"菜单配置, 或者编辑配置相关的.ini文件配置。

在DVD光盘中,有PDF文档"Sherlock7InstallGuide" ,讲述软件安装,相机配置及配置工具的使用方法。

?编辑文件配置方式配置相机

点击电脑的“开始”菜单,找到sherlock的"User Data Files" 打开 "Drivers" 目录,"Drivers.ini"这个文件定义你选择驱动的方式: Saper aLT? , IFC, VideoForWindows, 等。这个文件会被载在sherlock的Acquisition Options 菜单. 你必须设置对应的

采集方式=Enable,其他的为disable。可能也需要设置IO 信号的配置。

SaperaLT驱动支持: VA61, VA50, VA51, NetSightII-DCL, X64-CL, X64-AN, Genie and Genie TS GigE (Gigabit Ethernet) Camera.

IFC驱动支持: VA21, VA31, VA40, VA41, NetSightII-MCA, PC2-Vision, PC2-CamLink, PCVision plus, IEEE-1394 (FireWire) Cameras, VA61 (for IO). DCI-100 or PL-USB IO modules

在 "Drivers" 目录下, 需要配置 "SaperaLTDrv.ini" 或者"IfcDrv.ini",这个文件主要是用来配置对应相机,其中"IfcDrv.ini"可以配置IO. 同样这个相机配置文件可以

用sherlock的Acquisition Options中 "Driver configuration"按钮打开。

?在 IfcDrv.ini文件中- 编辑 "CONFIG=" 加载相机的配置文件或者IO的配置文件.

?在SaperaLTDrv.ini文件中–编辑"ConfigFile=" 加载相机的配置文件.

在SaperaLTDrv.ini 文件中包含集中不同的案例,支持不同类型的硬件。详见SaperaLTAcqWiz

你可以使用CamExpert? (支持 SaperaLT) 或者Camera Configurator? (支持 IFC)

软件改变不同的相机配置,或者修改相机的参数。这些参数和shrelock程序是相互独立的。

?采用配置软件方式配置相机

这种做法必须首先拥有相机配置文件,并且你知道文件的位置。

1. 打开 Sherlock, 选择 Options -> Acquisition. 如果你有授权,可以看见采集

菜单,否则没有权限看见采集菜单。

2. 下来滚动条至 "Configure driver loading" 并且设置对应的采集方式为

“enable”,其他设置为“disable”。

3. 关闭Sherlock,重新开打sherlock.自动加载对应的相机驱动,如果没有相机配置文件,可能会得到一个错误提示。如果正确,sherlock会显示一个图像,但是对应的顺序可能不正确

4. 继续打开 sherlock的Options –> Acquisition.

5. 下来滚动条至"Currently loaded drivers" 点击 "Driver Configuration" 按钮.

则会用记事本打开 *.ini配置文件

6. 编辑 "CONFIG=" 或者 "ConfigFile=" 加载到相机的配置文件。

7. 关闭 Sherlock. 重新打开Sherlock会加载配置文件,相机图像会出现在image

window 窗口。.

关于采集时间的问题

Sherlock 中定义 "acquisition time" 的时间从请求采集,到一幅图像到sherlock

的buffer中为止。Sherlock 请求采集指的是当前采集指令接受执行和执行采集。

执行 "Image Window" 加载图像时间很短,除非timeout。这个采集时间一般比相机采图的时间要短,除非是外触发,等待信号的时间很长。或者相机采集异常。

SaperaLT 采集向导软件:SaperaLTAcqWiz

Sherlock 包含一个向导软件帮助你用 SaperaLT配置文件 "SaperaLTDrv.ini"为Sherlock 从相机采图.

这个软件支持所有的 Sapera 硬件,但是不支持连接模拟相机。

当打开这个工具的时候, 他会寻找最后一次打开的文件,或者默认的"SaperaLTDrv.ini"文件. 如果文件和硬件不匹配,会有提示,创建一个新的配置文件。

打开Sapera 采集向导的方法:

开始 | 程序 | Teledyne DALSA | Sherlock | SaperaLT Acquisition Wizard

利用这个向导你可以做的事情:

?浏览相机的正确配置文件 (一般在 \Sapera\Camfiles\User目录下),

?取消和加载相机

?改变一些硬件配置

?保存一个配置文件

NOTE:如果你用一个文件配置两个相机,后面的相机如果断开连接,Sapera LT驱动不会加载,硬件必须匹配到文件定义才行。

第二部分:相机校正

一般性,有两种校正方式:第一种程序式校正,一般采用子程序是实现;第二种交互式矫正,利用image window的选项设置。他们都支持点校正和缩放比例校正。

程序式校正方式包括:

?四点校正

?多点校正

?采用乘法系数法.

交互式校正方式包括:

?直接采用标定板.

?四点校正.

?采用标定板.

校正的工作原理

“相机校正” 指相机像素坐标系根据实际情况转化为世界坐标系的的过程。主要用于精密测量中。Sherlock 在校正方法比较灵活,方便,并且实用性强。

Sherlock目前主要有三类校正方法:点校正,缩放校正,网格校正,甚至用于多点校正的四点校正。Sherlock 利用算法及仿射变换进行坐标转化。可以对一些小畸变误差及角度等进行线性校正。具体请参考透射变换.

缩放校正(scale calibration)分别x,y计算比例因子,这种方法仅仅校正坐标系,但没有进行畸变校正。这种方法一般用于简单的场合。

网格矫正(grid calibration)采用标定板或者二维网格。采用映射的四点,或者多个局部坐标系进行校正。这种方法采用棋盘或网格应由()直接垂直和平行线交点。建立本地化的4点坐标转换。假定没有角度误差,并且没有非线性的误差。

一旦一个校正系统建立,可以用在任何一个image window的图像上(当image window 的Options选择该校正系统)。该校正可以用于多个image window. Sherlock 支持多个不同的校正系统,用于不同的image window 。例如多相机的时候,每个相机有不同的校正系统。

当校正系统被应用在image window时,所有的image windows应用将自动更新,Sherlock 可以为子程序应用校正系统。

所有的点和线在坐标系统中将重新定义。如果一旦校正系统应用,所有的输出将是校正后的坐标单位,包括角度。甚至圆显示会透视失真。

你可以采用利用程序指令“Pixels To World”和“World To Pixels”进行像素和世界坐标系之间的转化。

单相机的多校正系统

Sherlock 矫正系统一般用于一个产品面的测量,如果一个相机需要多个校正系统,则需要建立多个校正系统,在相机使用的时候,利用Io : Calibration : Load Calibration 可以实现该功能。

自动重复校正

Sherlock提供一个简单有效的方法进行重复校正。将校正程序按照子程序,可以利用快捷键F11键,执行校正程序。

备注: 矫正系统可以保存为.cal文件,程序保存为.IVS file。所以记得在校正后要保存程序

关于网格校正Grid Calibration

网格校准工具包括四个算法,优化实现特定类型的失真校正:

Perspective:(透视)纠正仅供透视失真;它不能矫正扭曲畸变。

Piecewise Bilinear:(分段双线性)使用分段双线性插值法纠正任何类型的变形。

Piecewise Perspective:(分段透视) 使用分段技术纠正任何类型的变形。该方法适合透视失真加上另一种变形(例如,径向)。基于角度透视分段进行矫正。

Radial:(径向纠正)为径向畸变,不矫正角度及透视。一般用这个方法矫正镜头造成的膨胀和收缩畸变。

图像修复方式

Nearest neighbor:最近邻点插值法

Bilinear:双线性插值

Bicubic:两次立方插值法

从上到下精度越来越高,但耗费内存及时间也是逐步增加的。

第三部分:定位

机器视觉中部件经常出现在相机的不同位置。在许多情况下,使用相对定位是和很好解决该问题的办法。例如,sherlock 利用ROI的算法Geometric计算部件的特征,进行定

位部件的测量位置,这样可以保证测量的部件在测量ROI可以接受的范围内。以便准确测量。

在很多情况下,使用“黄金模板”,或者一个局部特性,进行培训是有必要的。因为局部定位可以轻松解决该问题。

定位的工作方式

部分对齐功能依赖于landmark点将roi定位到最初的位置。所有点的读数可以作为landmark。landmark点位置返回的指令,在目标位置显示为十字刻度交叉点形式。

当点作为landmark点时,则显示为十字交叉点形式,表明已经用作定位点。一旦定位被应用,所有的定位ROI移动会根据landmark点的变化进行移动。

1 Landmark: - ROIs are translated in X and Y

2 Landmarks: - ROIs are translated in X and Y, and Rotated.

3 Landmarks: - ROIs are translated in X and Y, and Rotated.

一旦ROI已重新定位后,检查程序会根据最新的landmark点进行移动。

Roi会用虚线显示原始位置坐标,实线显示当前位置的坐标。

一旦定位创建在一个图像窗口中,它可以被该窗口的其他ROI进行使用。一般在图像窗口的定位选项中进行选择即可。

单点定位

利用计算标定点位置到ROI的坐标的偏移量,通过这个偏移量x,y进行平移,该方法不能进行角度定位。

两点定位

在两点标定中,通过计算原始标定点到ROI之间的偏移量。正常运行时,利用转换和旋转用于roi。必须是到某个固定坐标的偏差。例如,角落,中心对齐孔等。无论点方向是否有变化,两个点之间的距离应该始终不变,。

三点定位

三点标定假定第一点是一个固定的点(相对于部分位置),后两个点只用于计算旋转角度。开始时记录最初的点之间的角度,运行时计算新的角度并与原始角度进行比较,计算一个旋转的度数。

设置部件定位

下面举一个简单的例子,说明怎么进行部件定位,假如我们需要位置偏移和旋转,所以

我们使用两点校正。

1.创建一个图像窗口。放置一个样品在相机下面,在x,y两个方向的寻找两个可靠定

位点。假定这两个特征很明显,并且很容易被ROI算法中的寻找中心计算出来。

2. 选择图像上的特征点,然后拖动ROI选中特征点,通过ROI算法中的质心算法计算

中心点,运行几次确是否该两个点是稳定的点,可以用来定位。

3.打开图像窗口的option选项,并且点击“Alignment”标签.点击“Create Alignment” 按钮创建一个定位器.

4.拖动两个点到“alignmentA”下面.

5.根据需要创建另外的ROI,实现需要的测量尺寸。这个ROI将用于实际的检验,不是用

来定位。

6. 打开ROI的属性(Properties)对话框。单击“Properties”选项卡。在下拉列表

中选择“alignmentA”。

7. 移动产品,然后运行程序。如果质心ROI定位成功,跟随ROI将转移到正确的位置,

对产品对应位置进行测量。

定位和搜索

Sherlock有三种搜索算法,可以返回一个定位点和一个角度用来定位。搜素算法同样

可以返回两个点“pattern left”和pattern right”,并且进行计算出来一个“best point”(两个点的中心点)。

例如:使用Search algorithm发现模型,打开图像窗口的选项栏,点击定位栏“Alignment” ,拖动三个定位点:“pattern left”, “best point” and “pattern right”到创建的定位器中去。

再次培训定位系统

1.移动标定点到新的定位点,

2.打开图像窗口的option选项,

3.点击定位栏Alignment标签,

4.点击已有的定位器,

5.点击“Reset home position”按钮.

失效的定位

当产品定位使用以后,可能有以下原因引起失效:

·每个ROI –打开ROI参数,点击Alignment标签,在定位标签栏中选择“None”。

·整个图像或者程序- 打开图像窗口的Properties,点击Alignment标签,删除所有定位点或者所创建的定位器。

第四部分:调试

当开发和调试一个程序时,有时候有必要单步执行程序或者减慢速度执行,来发现程序问题。Sherlock可以在调试模式运行程序,调试工具变量有:执行模式(Execution modes),断点(Breakpoints), 和禁止执行(Disable Execution)。

Execution modes一直运行程序,没有任何改变。

Breakpoints添加在程序中,当程序执行到此就停下来。

Disable Execution跳过某段程序,当程序结束调试时。记得切换程序模式。

执行模式

执行模式在主菜单的工具栏上,运行菜单中包含:单步执行按钮,高亮执行模式,慢速模式,这些模式不改变程序,它们改变运行模式。可以使用这些模式结合其他调试工具。

单步执行模式: –运行一次程序,停止,每个指令将会高亮显示在单步执行模式下。

1)单击"single step execution mode" 按钮,在主菜单的工具栏上, (从运行指

令下拉列表中,选择 "single step execution")开启单步执行模式,但程序没有开始运行。

2) 单击 "Run once" button ,在主菜单工具栏上, (在运行下拉菜单上选择 "run once"). –开始运行程序,完成第一个指令时,停止运行。

3) 单击 "execute single instruction" button ,在主菜单工具栏上,(或者选择"execute single step" 在运行下拉菜单上). –程序一个指令,并暂停每次单击按钮。点击"execute single instruction" 将会执行下一个指令。

4) 单击Abort investigation" 按钮停止执行。

5) 单击 "single step execution mode" 按钮,将会关闭单步运行模式。.

高亮执行指令模式–当执行时,每个指令将会高亮显示。在高速执行的指令模式程序运行速度稍慢。

1)单击 "highlight executed instructions"按钮,在主菜单工具栏,, (或者选择"highlight instructions" 从运行指令下拉列表中)–此刻程序没有开始运行。

2)单击 "Run once" 按钮或者 "Run continuously" 按钮在主菜单工具栏,

(从运行指令下拉列表中,选择"run once" 或者 "run continuously"). –程序开始运行,当执行之后将高亮显示。

3) 单击 "Abort investigation" button停止执行。

4) 单击 "highlight executed instructions"按钮关闭高亮执行指令模式。

慢速执行模式–程序运行速度较慢,当每个执行完后,将会高亮显示。

1) 单击 "slow down execution"按钮在主菜单工具栏上, (或者选择 "slow executing mode" 在运行指令下拉列表中). –此刻程序没有开始运行。

2) 单击 "Run once" 按钮或者 "Run continuously" 按钮在主菜单工具栏,

(从运行指令下拉列表中,选择"run once" 或者 "run continuously"–程序开始慢速执行,当执行完的指令将高亮显示。按住 "Shift" 键,速度会加快。

3) 单击 "Abort investigation"按钮停止执行。

4) 单击 "slow down execution"按钮关闭慢速执行模式.

断点

一个断点标志着的指令,执行到这个指令时,程序会暂停。一个断点被标识为一个红色的圆形或点旁边的指令。

1) 增加一个断点,右击指令,选择"Toggle Breakpoint" 在下拉按钮中. –一个红色实心圆出现在左边的指令中,你在程序中插入很多断点。

2) 单击 "Run once"按钮或者 "Run continuously"按钮. –程序会运行到断点位置停止。

a) 单击"single step execution mode"按钮,可以继续运行到下一个断点。

b) 单击 "execute single instruction"按钮一次执行一个指令。

3) 点击"Abort investigation"按钮停止执行.

4) 取消断点:右击程序指令,并在下拉列表中选择"Toggle Breakpoint" . –红色实心圆就会消失.

5) 取消所有的断点,返回到正常运行模式:右击程序指令,并在下拉列表中选择"Remove all Breakpoints" 。

禁止执行

在程序执行指令可以暂时跳过。任何指令都可以,包括一个ROI及其处理和公差,或者一个调用子程序的指令。

1) 右击指令,并在下拉列表中选择 "Toggle Enable Execution"。–一个红色的带斜杠空心圆将会显示在指令中,你可以添加很多这样的指令。

2) 单击 "Run once"按钮或者 "Run continuously"按钮. –程序会跳过禁止执行程序部分。

3) 点击"Abort investigation"按钮停止执行.

4)重新启用一条指令:右键单击禁用指令并选择“Toggle enable execution”在弹出菜单。——带斜杠红色圆会消失。

5) 重新启用所有指令:右键单击任何指令并选择“Enable All Execution”在弹出菜单。

第五部分:采集Timeouts

在许多应用程序中,在定义时间内没有完成采集需要一个错误提示,然后进行检测和相关处理。sherlock有几种方式处理采集超时问题;比如:可以“option”选项中的设置:应用程序是否将采集失败记录入程序,或者因为一个故障而停止程序。

设置超时

无论实时采集或者外部触发采集时,你可以在图像窗口的“option”选项的

option_imageSource中选择设置一个采集超时(ms)。如果发生采集超时,则sherlock 会生成一个采集错误信息。

程序中停止

主窗口的Options | Application按钮中,设置参数决定是否采集超时引发停止。如果设置为True,则采集超时会产生一个采集错误信息。程序立即停止运行,直到Abort investigation按钮按下。Sherlock本身不关闭。如果该条目设置为False,生成一个采集超时错误,程序仍在继续。

取消采集超时错误

你可以取消采集超时错误在图像主窗口中勾选:On camera timeout: Skip execution of this "image window" and continue executing program without a timeout error 选项,如果勾选,当错误发生时,则不会产生错误信息。图像窗口中的ROI或者其他任何指令都不会执行。

交互的选项

必须小心这样个参数的设置:Options|Application|Halt on camera timeout和image windows’ On camera timeout options, 他们的结果将有交互性影响。

举例

1) Options | Application | Halt on camera timeout =False.

ImgA’s On camera timeout: Skip…=disabled.

ImgA’s 采集超时:

括号内部的程序将继

续执行。

2) Options |Application |Halt on camera timeout =False. ImgA’s On camera timeout: Skip… =enabled.

ImgA’s 采集超时:

括号内部不执行,继续执

行指令printA.

图像窗口的采集状态:

如果采集窗口超时,acq

status= False; 否则=

True.

举例:

Options | Application | Halt on camera timeout =False. ImgA’s On camera timeout: Skip…=disabled. ImgA采集超时:

rectReadLabel会执行

ImgA’s acq status =

False, 所有写log指令将

不执行。

自动执行子程序

当子程序选择:Execute

on camera timeout当发

生采集超时,将继续执行

子程序, 但必须Options

|Application |Halt on

camera timeout=True

备注: 如果多个子程序

选择Execute on

camera timeout,子程

序会依据创建的顺序执

行。

备注: 当On camera

Timeout: Skip…=

enabled 将不会引发子程

序的timeout程序执行

再次举例(以下四种情况假设):

以下举例设置如下:图像窗口的采集timeout 设置为-1(无穷大)。

1 ~ 3,设置Options |Application |Halt on camera timeout = False.

1. 调用子程序继续运行程序

子程序的subTimeout标记为Execute on camera timeout.

图像窗口的imgA’s On camera timeout: Skip…设置为disabled.执行顺序为:

? ImgA采集超时.

? SubTimeout执行.

? ImgA相关指令继续运行.

? 正常执行.

2. 阻止超时

子程序subTimeout标记为Execute on camera timeout.

图像窗口的imgA’s On camera timeout: Skip… =disabled.

图像窗口的imgB’s On camera timeout: Skip… = enabled.

? ImgA采集超时.

? SubTimeout被调用.

? ImgA’s ROI相关指令被执行.

? ImgB采集超时.

? SubTimeout不被调用,因为imgB的采集timeout 错误处理被阻止.

? ImgB'sROI相关指令不执行.

? 继续执行imgB范围以外的指令.

3. 检查image window的状态status

图像窗口的imgA’s On camera timeout: Skip…=disabled.

? ImgA采集超时.

? ImgA’s ROI相关指令被执行.

? 如果If指令检查imgA.acq status状态; 如果=True,imgA指令的roi分析阅读imgA执行,否则,跳过. (如果imgA.acq status=False,图像没有刷新,所以ROI相关指令不执行)第四种情况下 , Options_Application_Halt on camera timeout=True.

4. 调用子程序,并结束程序

子程序的subTimeout被标记为Execute on camera timeout.

图像窗口imgA’s On camera timeout: Skip…=disabled.

? ImgA图像采集超时.

? SubTimeout子程序调用.

?程序执行结束.

备注: 如果acquisition timeout = –1 (无穷大)采集无法完成,你必须通过任务管理器结束程序。

第六部分:异步采集

Sherlock中On camera timeout: Skip execution…选项允许你设置两个或者多个相机进行外部异步采集(备注:该部分的异步采集不是本身真正的异步采集)

创建

1) 为每个相机创建对应的图像窗口:Image Window

2) 在图像窗口Image Window - Options – Image Source 标签中设置,

a.选择相机,外部触发有效,

b.选择足够大Triggered acquisition timeout的时间段,以便相机采图不超时,

c.On camera timeout: Skip execution…=enable

3) 所有相机对应的图像窗口都做类似设置.

4) 然后添加ROI及预处理为每个图像.

5) 你可以使用ROI的Tolerance 来测试处理运行结果,利用子程序分支处理 .

6) 你可以在每个图像窗口下面创建指令(begin~end),如果采集没有发生,这些指令将不会运行。

7) 你可以可以在图像窗口以外添加指令,这里的每个指令将会运行。

8) 你应该为每个相机采集设置准备事项。创建一个子程序当Execute after loading 和Execute before continuous investigation事件有效时运行. 为每个图像窗口创建创建一个指令IO:Image window: Start camera acquisition,并且添加到the Image Window handle 到每个指令.

执行

假如有三个程序,三个相机,三个image window窗口:

1) 当程序运行,第一个图像窗口采集或者采集超时.

?当第一个image window 采集成功时,当在采集第二个image window之前,这个image window的ROI及相关的指令将被执行。

?当第一个image window 采集超时,他相关的所有的ROI及相关指令将跳过,进行第二个image window 的采集。不会报错。

2) 第二个相机采集或者采集超时

?如果第二个窗口采集图像,当在采集第三个image window之前,这个image window的ROI及相关的指令将被执行。

相关主题