简介:这份PPT面向机器视觉初学者与自动化检测工程人员,系统介绍Sherlock机器视觉应用软件的功能与操作,帮助读者快速理解该软件在自动化检测场景中的配置思路。压缩包内仅含1个PPT文件,约3.93MB,以图文页面形式组织内容,便于按章节浏览与讲解。目前已有1567人学习下载,具备一定的参考热度。内容围绕Landmark位置标定、Calibration刻度校准、Search区域搜索与Color Processing颜色处理四大功能展开,并逐一说明主菜单栏、工具栏、图像窗口、监视窗口、变量窗口与报表窗口的作用;同时讲解通过点击式操作配置算法、添加变量参数、编辑程序单元及查看运行信息的使用方法,涉及多线程与通讯相关设置。读者可借此掌握软件界面布局、标定与校准流程以及调试排错思路,适合作为入门培训或项目实施的参考资料。
1. 一份 PPT 讲透 Sherlock:从界面到标定,机器视觉项目落地前该看什么
手上拿到一份《Sherlock 机器视觉应用软件使用介绍.ppt》,很多人第一反应是“PPT 能有什么干货”。但真把这份材料拆开看,它其实把一套视觉软件从界面布局、变量体系、程序逻辑到位置标定、刻度校准、区域搜索、颜色处理的完整链路都串了一遍。Sherlock 是跑在 Windows 上的点击式机器视觉平台,图形化环境里拖 ROI、配算法、连程序单元,不用写传统代码就能把一套自动化检测流程搭起来,还带 OPC 兼容接口和脚本定制能力。这份 PPT 适合两类人:一类是刚接手视觉工位、需要快速搞懂软件操作逻辑的现场工程师;另一类是手里有检测需求、想评估这套工具能不能覆盖自己场景的选型人员。下面按“界面怎么读、程序怎么搭、标定怎么做、坑在哪”的顺序,把这份材料里的关键点拆成能照着复现的步骤。
2. 界面与变量体系:先把程序窗口和五类变量吃透
Sherlock 的操作入口集中在主菜单栏和主工具栏,但真正决定你后面能不能顺利搭流程的,是图像窗口、程序窗口、变量窗口、监视窗口、报表窗口这五块区域的联动关系。图像窗口负责显示相机采集或装载进来的图,你在上面加 ROI、配预处理和算法;程序窗口则把每一个算法的输入输出按执行顺序列出来,模块之间用拖拉就能调整先后。很多人第一次用会盯着图像窗口不放,结果程序跑起来发现顺序不对、变量取不到值,问题往往出在没看懂程序窗口里的排列逻辑。
2.1 五个窗口各管什么,别混着用
图像窗口是“看”的地方,ROI 检测区域、显示选项、缩放还原都在这里操作,工具栏上还有开始/停止相机采集、装载保存图像文件的按钮。程序窗口是“排”的地方,你添加的每个算法单元、预处理步骤都会在这里形成一条执行链,单元位置靠鼠标拖拽调整,比如要把 ROI LineA 挪到 RectA 上方,选中后按住左键拖到目标位置松手即可。变量窗口是“读”的地方,程序运行时各类输入输出参数值实时刷新,快捷工具栏可以往程序里加变量。监视窗口显示警告、错误和执行时间,从主菜单 View 里打开 Monitor 就能看到。报表窗口靠 IO:Reporter Print 指令把检测数据输出进来,定制打印内容时变量名两边要加方括号,比如[N1],这样变量值才会被打印出来,已知的固定读数打不进去,只能打变量。
这五块区域的分工清楚了,后面配算法才不会出现“图上看得到、程序里取不到”的尴尬。我一般建议新手先把一个最简单的 Barcode 1D 算法拖进程序窗口,跑一遍,盯着变量窗口看输出值怎么变,再去看监视窗口有没有报错,这一圈走下来对软件的执行模型就有体感了。
2.2 五类变量与数组变量:N/B/S/P/L 怎么用
Sherlock 里的变量分五种类型:Number(N)、Boolean(B)、String(S)、Point(P)、Line(L),每种都有对应的数组形式 N[]、B[]、S[]、P[]、L[]。这个设计看着简单,但它是后面标定、报表、逻辑判断的基础。比如 First Edge 算法探测出来的边缘点,输出的是 Point 类型,你要把它拖到 alignment scheme 下面当标定点,用的就是 P 变量;Barcode 1D 读出来的字符串是 S 类型;判断某个条件是否成立、决定程序走哪个分支,用的是 B 类型。
实际配置时,变量窗口的快捷工具栏负责往程序里加变量,加完之后在算法单元的输入输出栏里绑定。数组变量适合批量场景,比如一个 ROI 里检出多个 Blob,结果会落在 N[] 里,你用循环指令去遍历。这里有个容易忽略的点:变量类型一旦定错,后面拖拽绑定的时候下拉框里根本找不到,所以加变量之前先想清楚这个数据是数值、布尔、字符串还是点/线。
2.3 程序逻辑指令:子程序、条件、循环、跳转
程序窗口的图形工具栏里有一组通用指令,用来控制执行流:调用子程序、设置逻辑判断条件、在某一条件下重复执行、添加设置子程序、从某条语句跳转到程序任意位置。这套东西本质上是一个图形化的流程控制层,不需要写代码,但逻辑等价于 if/while/goto 那一套。
配置时的顺序建议是:先把检测算法单元按物理流程排好,再在需要分支的地方插入条件判断,把 B 类型变量绑到判断条件上;需要重复扫描多个工位或多视野时,用循环指令包住对应单元;公共逻辑抽成子程序,主程序里调用。拖拽调整单元位置时注意,跳转指令的目标位置依赖单元的实际排列顺序,排错了跳转就跳到不该去的地方,这是后面排查章节会展开的一个坑。
3. 位置标定与刻度校准:让 ROI 跟着工件跑
机器视觉现场最头疼的问题不是算法不准,而是工件每张图位置都在变。运动控制有误差、相机采集有抖动、工件本身摆放有偏移,导致同一个矩形 ROI 在这一张图里框住了条码,下一张图就偏出去了。PPT 里用图书封面条码检测举例:图像向右移动后,矩形 ROI 检测的内容变了,Barcode 1D 就读不出正确结果。解决办法不是把 ROI 画大一点硬扛,而是给 ROI 做坐标位置的自我标定,让它在每张图里自动移动到正确位置。
3.1 Landmark 标定的原理:用稳定特征反推偏移量
标定的核心思路是找一个图像里稳定存在的特征点,先测出它在基准图里的位置,之后每张图都重新测这个点,算出偏移量,再把需要检测的 ROI 按这个偏移量平移过去。PPT 里的做法是在条码商标左边界用一条线形 ROI 配 First Edge 算法,边缘强度参数设成 100,稳定探测出边界点。这个点就是标定基准,因为它比条码本身更不容易受印刷质量影响。
选标定特征有几个实操原则:特征要在视场里始终可见、对比度足够、不受工件表面变化干扰;边缘类特征优先于纹理类特征;如果工件会旋转,单点标定不够,需要两个点或者一个点加角度信息。PPT 只演示了平移场景,但实际产线上旋转偏移很常见,配置 alignment scheme 时要把旋转自由度考虑进去,否则平移补上了、角度没补,ROI 还是会偏。
3.2 创建 alignment scheme 并绑定到 ROI 的完整步骤
下面按 PPT 里的流程把标定配置走一遍,步骤之间不能跳:
- 在图像窗口的 Options 对话窗里切到 Alignment 页面,点 Create alignment 创建一个校正设置,默认命名是 alignmentA、alignmentB 这样,按用途改成有意义的名字,比如 alignLeftEdge。
- 用线形 ROI 配 First Edge 算法探测标定特征点,边缘强度按现场图像调,PPT 里用的是 100。
- 把 First Edge 输出的 Point 读数从 Point readings 窗口拖到 alignLeftEdge 下面,完成一个标定点。
- 打开需要标定的 ROI 的 Edit 窗口,点属性栏,在 Alignment 下拉菜单里选中刚才创建的 alignLeftEdge。
- 跑图验证:工件水平移动后,线形 ROI 重新探测边界点、算出偏移量,矩形 ROI 自动调整位置,图里虚线标出的是原始位置,实线是校正后的位置。
这套流程的关键在第 3 步和第 4 步的绑定关系。标定点没拖进去,alignment scheme 就是空的;ROI 属性里没选对 scheme,标定等于没做。现场调试时我习惯先把工件人为平移几个像素,看 ROI 有没有跟着动,动了再往下配检测算法,不动就先查绑定。
3.3 Calibration 刻度校准:像素到物理单位的换算
位置标定解决的是“ROI 跟不跟得上工件”,刻度校准解决的是“测出来的像素值怎么变成毫米”。这两件事经常被混为一谈,但配置入口和作用完全不同。Calibration 需要你提供已知物理尺寸的参照物,比如标定板或者已知宽度的工件特征,软件据此建立像素与物理单位的映射关系。没有这一步,你测出来的边缘距离、Blob 面积都只是像素数,没法写进检测判定里。
配置刻度校准时注意两点:参照物要放在和实际检测工件相同的物距和工作平面上,否则透视误差会带进换算系数;标定完成后用另一个已知尺寸的特征做验证,偏差超过公差就重新标。PPT 里把 Calibration 列为四大功能之一但没有展开参数细节,实际使用时这部分要结合现场光学条件单独调,不能照搬默认值。
4. 检测算法组合:Search、Color、Blob 与读码器怎么配
Sherlock 的工具箱覆盖面比较宽,面性和线性 ROI、预处理器、定位/模式寻找、测量工具、Blob 分析、边缘计数、彩色对映分类、OCR 和一维/二维码读码器都在里面。真正落地时不是工具越多越好,而是按检测目标选最小组合。这一章按四类典型场景拆配置思路。
4.1 Search 区域搜索与模式寻找的配合
Search 解决的是“目标大概在哪”的问题,模式寻找解决的是“目标长什么样”的问题。典型配法是先用 Search 在一个较大的搜索区域里定位目标的大致位置,把结果点传给后续 ROI 做精定位,再用模式寻找或者测量工具做精确判定。这样做的原因是:直接在大图里跑高精度匹配耗时长,先用粗搜索缩小范围,整体节拍能压下来。
配置 Search 时,搜索区域要覆盖工件可能出现的全部位置范围,但不要无脑铺满整幅图,范围越大耗时越长。模式寻找的模板要选特征稳定、不受光照轻微变化影响的区域,模板边缘留一点余量,避免工件微小形变导致匹配分数掉下去。匹配分数阈值设太高会漏检,设太低会误检,一般先跑一批良品和不良品样本,看分数分布再定阈值,这个值没有通用答案。
4.2 Color Processing 颜色处理的适用边界
彩色对映和分类适合靠颜色区分良品/不良品的场景,比如印刷色差、物料分色、标签颜色核对。配置时先确认光源稳定性,颜色处理对光照色温变化很敏感,光源飘了阈值就得跟着调,产线环境光干扰大的工位要加遮光或者用单色光源。颜色空间的选择上,区分明暗差异用亮度通道就够,区分色调差异才需要色度通道,不要一上来就全通道跑,耗时和稳定性都不划算。
颜色处理的边界在于:它不适合检测纯几何尺寸,也不适合表面反光强烈的工件。遇到高反光金属件,颜色分类的误判率会明显上升,这种场景应该换边缘类或 Blob 类工具。
4.3 Blob 分析与边缘计数的参数落点
Blob 分析用于统计连通区域的数量、面积、位置,边缘计数用于数边缘条数或者测间距。Blob 的关键参数是二值化阈值和面积过滤范围:阈值决定哪些像素算目标,面积上下限决定哪些 Blob 被保留、哪些当噪声丢掉。配置顺序是先看原图的灰度分布,定一个能把目标和背景分开的阈值,再根据实际目标尺寸设面积范围,把小于最小目标的噪点滤掉。
边缘计数要注意边缘极性设置,从暗到亮和从亮到暗是两种不同极性,设反了计数结果直接为零。边缘强度阈值参考 PPT 里 First Edge 用 100 的思路,但不同工件对比度不一样,要按实际图像调,调完用多张样本验证稳定性。
4.4 读码器与 OCR:一维码、二维码、字符识别的配置差异
一维码和二维码的读码器配置重点不同。一维码对条码方向敏感,ROI 要顺着条码走向放,图像模糊或者条码被遮挡一部分时解码率会掉;二维码有纠错能力,但对比度不足或者模块畸变时也会失败。配置时先保证成像质量,码元清晰度不够的话调算法参数意义不大。OCR 则依赖字符分割和模板训练,字体、字号、印刷质量变化都要重新确认识别率,字符间距过紧或者背景干扰多的时候要加预处理。
读码和 OCR 的输出都是 S 类型字符串,可以直接绑到报表或者逻辑判断里做后续分流。这里提醒一句:读码结果为空字符串和读码失败是两回事,逻辑判断里要区分处理,否则会把“没读到”当成“读到了空码”。
5. 避坑与排查:标定、变量、报表、通讯四类高频翻车
这一章按“现象 → 原因 → 解决”整理现场最容易遇到的几类问题,都是配置阶段能提前规避的。
5.1 标定后 ROI 不跟随工件移动
现象:alignment scheme 建好了,工件平移后 ROI 位置没变,检测结果还是错的。原因通常是 ROI 属性里的 Alignment 下拉菜单没选中对应的 scheme,或者标定点没有真正拖进 scheme 下面,scheme 是空壳。解决:打开 ROI 的 Edit 窗口确认 Alignment 绑定正确,再回 Options 的 Alignment 页面看标定点是否挂在 scheme 下,两处都对了再跑图验证,用虚线原始位置和实线校正位置对比确认。
5.2 变量窗口取不到算法输出值
现象:算法在图像窗口跑出了结果,但变量窗口里对应变量一直是空或者零。原因多半是变量类型加错了,比如算法输出 Point,你加的是 Number 变量,绑定下拉框里自然找不到;也可能是变量加了但没在算法单元的输入输出栏里绑定。解决:先确认算法输出的数据类型,按 N/B/S/P/L 对应加变量,再在单元属性里完成绑定,跑一遍看变量窗口是否刷新。
5.3 报表打印不出变量值
现象:IO:Reporter Print 指令执行了,报表窗口里显示的是变量名本身而不是数值。原因是没有按规则在变量名两边加方括号,软件把N1当成了普通文本。解决:定制打印字符串时写成[N1]这种形式,并且确认打印的是变量而不是已知固定读数,固定读数本来就打不进去。
5.4 程序执行顺序错乱导致跳转失效
现象:加了跳转指令后程序跑飞,或者该进的分支没进。原因是通过拖拽调整单元位置后,跳转目标对应的实际排列变了,跳转指令还指向旧位置;或者条件判断绑定的 B 变量在判断时还没被赋值。解决:调整单元顺序后重新检查所有跳转指令的目标位置,条件判断前确保依赖的变量已经被前面的单元赋值,必要时在监视窗口看执行时间线定位卡在哪一步。
5.5 通讯接口数据对不上
现象:OPC 接口或者外部应用拿到的数据和软件里显示的不一致。原因常见于数据类型映射和刷新时机,外部读的时候程序还没跑完当前周期,拿到的是上一帧的值。解决:确认通讯配置里的数据项和程序变量一一对应,读数据的时机放在程序执行完成之后,必要时用握手信号同步,别在采集过程中抢读。
6. 进阶用法:用脚本和 I/O 把 Sherlock 接进产线
PPT 里提到脚本编辑工具和灵活的 I/O 接口、PLC 和 VB 前端用户接口,这部分是 Sherlock 从“单机检测工具”变成“产线节点”的关键。图形化配置能覆盖大部分标准检测,但遇到非标逻辑——比如多工位结果汇总、和上位机做复杂协议交互、按检测结果动态切换配方——就得靠脚本和 I/O 补。
一个常见的落地做法是把检测结果通过变量暴露出来,用脚本做结果聚合和判定,再通过 OPC 或者 I/O 把 OK/NG 信号和测量值推给 PLC。下面是一段示意性的脚本结构,展示结果聚合和输出绑定的思路,具体函数名按软件实际脚本接口调整:
# 示意:聚合多个 ROI 的检测结果并输出判定 # N1: 条码读取状态, N2: 边缘间距测量值, N3: Blob 面积 ok = True if N1 != 1: # 条码未读到 ok = False if N2 < 10.0 or N2 > 12.5: # 间距超出公差 ok = False if N3 > 5000: # 面积超上限,判为异物 ok = False # 输出到 I/O 和报表 IO_OK = ok # 绑定到数字输出 IO_NG = not ok Report_Result = "[N2]" # 报表打印测量值这段逻辑的要点是:判定条件全部基于变量窗口里已经绑定的算法输出,脚本只做组合判断,不重复实现图像处理;输出信号和报表内容分开绑定,方便现场排查是判定错了还是输出错了。参数上,公差上下限、面积上限这些阈值不要写死在脚本里,尽量做成可配置变量,换产品时改参数不改脚本。
验证方法上,我习惯用一组已知结果的样本图跑回归:良品全部判 OK、不良品全部判 NG、边界样本单独看判定是否稳定。脚本改动后必须重跑这组样本,不能只看单张图通过就上线。从那以后我每次改脚本或者调阈值,都强制走一遍样本回归再放行,省下来的返工时间比调试时间多得多。希望这份拆解帮到你,把 PPT 里的界面逻辑和标定流程真正落到自己的工位上。
本文还有配套的精品资源,点击获取