☰
Sherlock机器视觉软件实战:位置标定与ROI跟随检测
2026/11/2 4:05:53 网站建设 项目流程

简介:这份PPT面向机器视觉初学者与自动化检测工程人员,系统介绍Sherlock机器视觉应用软件的功能与操作,帮助读者快速理解该软件在自动化检测场景中的配置思路。压缩包内仅含1个PPT文件,约3.93MB,以图文页面形式组织内容,便于按章节浏览与讲解。目前已有1567人学习下载,具备一定的参考热度。内容围绕Landmark位置标定、Calibration刻度校准、Search区域搜索与Color Processing颜色处理四大功能展开,并逐一说明主菜单栏、工具栏、图像窗口、监视窗口、变量窗口与报表窗口的作用;同时讲解点击式配置、程序单元编辑、运行信息查看与检测数据打印等使用方法,涉及多线程与通讯相关设置。读者可借此建立对Sherlock界面布局、变量类型与算法配置流程的整体认识,为后续上手实际检测项目提供参考。

1. 一份 PPT 拆出的机器视觉落地路径:Sherlock 到底能干什么

产线上相机装好了、光源调完了,图像却因为工件在治具里晃了两三个像素,导致条码读不出、边缘尺寸飘——这种场景我见过太多次。翻车点往往不在算法本身,而在“ROI 没跟着工件走”。这份《Sherlock 机器视觉应用软件使用介绍.ppt》讲的正是怎么用一套基于 Windows 的点击式图形化视觉平台,把位置标定、刻度校准、区域搜索、颜色处理这几件事串成一条可部署的检测流程。它面向的是产线自动化检测、质量控制这类需要快速试验并落地的场景,适合刚接手视觉工位、又不想一上来就写几百行 C# 的工程师,也适合想把现有检测逻辑从脚本堆里解放出来的熟手。整份材料围绕界面、变量体系、程序单元和四大功能模块展开,读完能照着搭出一个带自动对位的检测程序。

2. 界面与变量体系:先把“黑匣子”拆开看

Sherlock 的上手门槛低,很大程度是因为它把视觉程序拆成了几个可见的窗口,而不是把逻辑全塞进一个脚本编辑器里。但低门槛不等于没结构,恰恰相反,它的结构感很强:图像窗口负责“看”,程序窗口负责“算”,变量窗口负责“传”,监视窗口负责“报”。理解这套分工,后面配 ROI、写判断条件才不会乱。

2.1 五个窗口各管什么

主菜单栏和主工具栏是总控,负责打开关闭图形窗口、控制图像窗口显示内容、设置程序外观与通讯、新建/粘贴/复制程序模块,以及单步、连续运行、停止中断这些调试动作。图像窗口是操作主战场,添加 ROI 检测区域、设置显示选项、缩放图像、启停相机采集、装载保存图像文件都在这里完成。程序窗口是逻辑的落点:你在图像窗口里加的每一个算法和预处理,其详细处理过程与结果参数都会在这里以程序单元的形式显示出来,每个算法的输入输出都能追溯。变量窗口在运行时实时刷新各类输入输出参数值,快捷工具栏用来往程序里加变量以便保存检测数据。监视窗口显示警告、错误和执行时间,通过 View → Monitor 打开,可以清除信息、开关信息保存、把显示内容存成文档。报表窗口则通过 IO:Reporter Print 指令把检测数据输出进来,定制打印字符串时变量名两边要加方括号,比如[N1],这样才会把变量值打到报表里;IO:Reporter Clear 负责清空。

这里有个容易被忽略的细节:报表只能打印变量值,不能打印已知读数。也就是说你想输出“OK/NG”,得先把判定结果存进一个 String 变量,再打印那个变量,直接写死文本是打不出来的。

2.2 五种变量类型与数组

Sherlock 的变量体系是它“无需传统编程”却能做逻辑判断的根基。总共五类:Number(N)、Boolean(B)、String(S)、Point(P)、Line(L),每类都有对应的数组形式 N[]、B[]、S[]、P[]、L[]。这个设计很务实——视觉检测里最常见的输出就是数值(尺寸、灰度、计数)、布尔(有无、通断)、字符串(条码内容、OCR 结果)、点(边缘点、中心点)和线(拟合直线、边界)。把结果直接落到这些类型上,后续的判断、跳转、报表输出都有统一的数据载体。

实际配置时我一般会先规划变量表,再动手加算法。比如一个条码检测工位,至少需要:一个 Point 存定位边缘点,一个 String 存解码结果,一个 Boolean 存解码成功标志,一个 Number 存解码耗时或质量分。变量先建好,算法输出直接挂上去,程序窗口里的连线才不会乱。

2.3 程序单元与通用指令

程序窗口里的单元可以拖拉调整顺序,选中后按住左键拖到目标位置释放即可,逻辑上的先后关系靠这个物理排列来体现。通用指令在 Program 图形工具栏里选:调用子程序、设置逻辑判断条件、在某一条件下重复执行、添加设置子程序、从某一执行语句跳变到程序任意位置。这几条指令组合起来,其实就覆盖了顺序、分支、循环、子程序调用四种基本控制结构——用图形化方式表达,调试时单步走一遍,哪一步输入输出不对一目了然,比在代码里打断点还直观。

提示:程序单元的顺序就是执行顺序,拖错了不会报错,只会结果不对。改完顺序务必单步跑一遍,看变量窗口的值是不是按预期刷新。

3. 位置标定实战:让 ROI 跟着工件走

这是整份材料里最有含金量的一段,也是实际产线上最容易出问题的地方。标准视觉应用要求能分析一组图像里相同的特征,但运动控制、图像采集设备、工件自身夹持误差,都会让每幅图像不可能完全静止。物体一偏移或旋转,固定 ROI 做像素统计就拿不到准确数据。唯一的解法是给 ROI 做坐标位置的自我标定。

3.1 标定的原理:先找一个稳定基准点

材料里用图书封面条码检测举例,逻辑很清晰:矩形 ROI 配 Barcode 1D 算法测条码,图像向右移动后矩形 ROI 检测的内容变了,条码就读不出来。解决办法是在条码商标左边的边界上,用一个线形 ROI 配 First Edge 算法,边缘强度参数设为 100,探测这个边界点。为什么选这个边界?因为它相对工件是固定的,工件怎么动它怎么动,而且边缘对比度足够,First Edge 在强度 100 下能稳定抓到。这个点就是整个标定体系的“锚”。

选基准点有几个血泪经验:优先选工件上几何形状稳定、不受印刷内容变化影响的边;边缘强度阈值不要设太低,否则噪声点会被当成边缘;一个标定点不够时可以用两个点甚至多个点,Sherlock 的 alignment scheme 支持多点,旋转偏移也能算出来。

3.2 创建 alignment scheme 的完整步骤

在图像窗口的 Options 对话窗里切到 Alignment 页面,点 Create alignment 按钮创建校正设置,默认命名是 alignmentA、alignmentB 这样,材料里把它改名为 alignLeftEdge。然后把 First Edge 算法探测到的点从 Point readings 窗口拖到 alignLeftEdge 下方,一个标定点就完成了。这一步的关键是“拖点”——点必须来自实际算法的输出,不能手工填坐标,否则标定和检测就脱节了。

标定设置建好后,必须应用到需要标定的 ROI 上。打开目标 ROI 的 Edit 窗口,点属性栏,在 Alignment 下拉菜单里选对应的校准设置点。应用之后,工件水平移动时,线形 ROI 用 First Edge 探测左边界点,算出从原始位置到新位置的偏移量,配了 Barcode 1D 的矩形 ROI 就会按标定点自动调整位置。材料里用虚线标出了矩形 ROI 的原始位置,实线是调整后的位置,这个视觉反馈在调试时非常有用。

3.3 参数怎么设、失败看什么

边缘强度 100 不是万能值。光照偏暗或边缘模糊时,这个值可能抓不到点,表现为 Point readings 窗口没有输出,或者输出点在跳。我的做法是先看实时图像里边缘的灰度梯度,把阈值设在梯度中段偏上,再单步运行看点是否稳定落在同一条边上。如果工件有旋转,单点标定只能纠平移,得再加一个点构成两点标定,Sherlock 会据此算出旋转量。

标定应用后如果检测结果还是飘,排查顺序是:先确认基准点算法本身稳定(连续跑十帧看点的坐标方差),再确认 alignment scheme 里拖进去的点是不是最新算法的输出,最后确认目标 ROI 的 Alignment 下拉框真的选中了对应 scheme——这一步漏选是高频翻车点,界面不会报错,ROI 就是不动。

4. 四大功能模块与通讯接口:从检测到数据出去

标定解决“看得准”,接下来是“测什么、怎么把结果送出去”。材料列了四个主要功能:Landmark 位置标定、Calibration 刻度校准、Search 区域搜索、Color Processing 颜色处理。前两个偏几何基准,后两个偏内容分析,配合预处理器、测量工具、Blob 分析、边缘计数、彩色对映/分类、OCR/一维码/二维码读码器,基本覆盖了常见检测需求。

4.1 刻度校准与区域搜索的配合

Calibration 刻度校准解决的是像素到物理单位的换算,以及线性/非线性畸变的纠正。镜头畸变在视野边缘尤其明显,不做校准直接量尺寸,误差能到几个百分点。常见做法是用标定板采图,建立像素-毫米映射,之后所有测量工具的读数直接输出物理单位。Search 区域搜索则是在图像里找模板或特征,配合定位结果把后续 ROI 带到正确位置——它和 alignment scheme 是互补的:alignment 管 ROI 跟随,Search 管在更大范围里主动找目标。

4.2 脚本、I/O 与 OPC 的数据通路

Sherlock 提供脚本编辑工具做算法定制,接口灵活,允许算子接口定制,OPC 兼容接口让数据能和其他应用分享,I/O 接口对接 PLC 和 VB 前端。这意味着检测结果不只在软件里看,还能进上位机、进数据库、进产线控制系统。配置时的顺序建议是:先把检测逻辑和变量跑通,再挂 IO:Reporter Print 输出到报表验证数据正确,最后才接 OPC 或 PLC。反过来做,一旦数据不对,你分不清是视觉算错了还是通讯配错了。

注意:OPC 和 PLC 的标签映射建议单独建一张对照表,变量名、数据类型、物理含义一一对应。现场改一个变量名忘了同步,上位机读到的是旧值,这种问题排查起来非常耗时。

5. 避坑与排查:五条现场踩出来的记录

现象:条码偶尔读不出,换一张图又好了。原因:矩形 ROI 固定不动,工件在治具里微移后条码出了 ROI 范围。解决:按第 3 章建 alignment scheme,用 First Edge 抓稳定边界点做基准,ROI 属性里挂上该 scheme,连续跑二十帧确认读码率。

现象:报表窗口打印出来是空的,或者打印的是变量名本身。原因:打印字符串里变量没加方括号,或者试图打印已知文本而非变量。解决:变量名两侧加[ ],例如[S1];要输出固定文本就先赋给 String 变量再打印该变量。

现象:程序单步运行正常,连续运行结果乱跳。原因:程序单元拖拉后顺序变了,某个判断条件在变量还没更新时就执行了。解决:按数据依赖重排单元,把产生变量的算法放在使用它的判断之前,单步逐帧核对变量窗口刷新时机。

现象:标定应用后 ROI 纹丝不动。原因:目标 ROI 的 Alignment 下拉框没选中对应 scheme,或 scheme 里拖入的点来自旧算法输出。解决:重新打开 ROI 属性确认选中项,删除 scheme 里的旧点,从当前 Point readings 窗口重新拖入。

现象:边缘检测点忽左忽右,尺寸测量重复性差。原因:First Edge 边缘强度阈值设得偏低,噪声被当成边缘。解决:观察实时图像边缘灰度梯度,把阈值提到梯度中段偏上,必要时加预处理器平滑,再连续采帧看点的坐标方差。

6. 进阶技巧:用变量数组和子程序把检测程序做“薄”

单工位检测跑通之后,真正拉开效率差距的是程序结构。Sherlock 的数组变量 N[]、B[]、S[]、P[]、L[] 不是摆设——多视野、多工件、多参数批次切换时,用数组存一组结果,比建一堆散变量好维护得多。比如一个视野里检测五个相同特征,用 P[] 存五个中心点,循环指令遍历判断,程序单元数量能压下来一大截。

子程序是另一个被低估的功能。把“定位 + 校准 + 测量”封装成一个子程序,主程序只负责调用和判定,换产品时改子程序参数即可,主逻辑不动。配合跳变指令做异常分支,比如标定点丢失时跳到报警子程序而不是硬算,程序的鲁棒性会上一个台阶。

验证方法我习惯用“双跑对照”:同一组图,先用固定 ROI 跑一遍记录结果,再用标定后的 ROI 跑一遍,对比两者在工件偏移帧上的差异。如果标定版结果稳定而固定版飘,说明标定生效;如果两者都飘,问题在算法参数或光源,不在标定。这个对照能快速把问题定位到正确的层。

验证项观察位置合格判据
基准点稳定性Point readings 窗口连续 10 帧坐标方差小于 1 像素
标定跟随效果图像窗口 ROI 位置工件偏移后 ROI 同步移动
变量刷新时机变量窗口单步时值与算法输出一致
报表输出报表窗口变量值正确、无变量名残留
通讯数据上位机/PLC 侧与报表值一致、类型匹配

从那以后我每次配完 alignment scheme,都强制连续跑二十帧看基准点方差,再切到偏移帧确认 ROI 跟随,两步不过不往下接通讯。这套习惯帮我挡掉了不少“现场才发作”的问题。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询