标签外框:定位标签并检查空白区域¶
标签外框干两件事:找到标签在这一帧里的位置,让后面所有检测项的框跟着标签一起走;顺带检查标签上没有印刷内容的地方有没有脏点、划伤、破损。
一个检测方案里有且只有一个标签外框,而且必须先建它——其它检测项的坐标都是相对它算的。
前置条件¶
- 检测方案已经设好主模板图。
- 模板图上的标签是良品、摆正、清晰。
它包含哪些检测框¶
标签外框下面固定挂两个检测框:
| 检测框 | 干什么 | 默认 |
|---|---|---|
| 定位参数 | 把当前拍到的图和模板图对齐,算出标签相对模板偏了多少、转了多少 | 开 |
| 空白区域 | 在对齐后的标签上,检查没有印刷内容的区域有没有缺陷 | 关,要用得先右键"启用此检测项" |
定位参数有两套算法,在树里选中标签外框右键,勾不勾"使用模板匹配定位"来切换:
- 不勾(默认):特征点定位。在整张标签上找有辨识度的点,和模板图的点配对,配上足够多就能算出偏移。标签内容越丰富越稳。
- 勾上:模板匹配定位。按轮廓形状去找,对内容少、但外形清楚的标签更合适,也更能容忍缩放。
两套算法的参数完全不同,切换之后必须重新训练。
定位开没开,去哪看¶
先说清楚:定位分两级。
- 外框定位(就是本页的"定位参数"):把整张图对齐到模板图,对齐后的图交给所有检测项用。
- 检测项自己的定位:固定区域 / 可变区域 / 条码字符对 / 字符识别各有自己的"搜索参数 + 定位参数",码检测 / 多行字符有"搜索参数"。外框定位关掉以后,它们仍在各自的搜索范围里把内容找出来,产品偏得不超过搜索范围就还能对上。有无检测 / 颜色抽取 / 异常检测 / 卡尺工具 / 圆孔测量 / 空白区域没有自己的定位,只靠外框定位。
| 检测项 | 自己的定位 | 外框定位关了会怎样 |
|---|---|---|
| 固定区域 / 可变区域 / 条码字符对 / 字符识别 | 搜索参数 + 定位参数 | 在搜索范围里照样找;偏移超出搜索范围才对不上。它自己的"定位参数"也被停用时,框就固定在模板位置。新建的字符识别默认停用定位参数(见字符识别),加了副模板时自动打开 |
| 码检测 / 多行字符 | 搜索参数 | 在扩大后的搜索范围里整块找码、找字;搜索参数里关了扩张时,框就固定在模板位置 |
| 有无检测 / 颜色抽取 / 异常检测 / 卡尺工具 / 圆孔测量 / 空白区域 | 没有 | 框固定在模板图上画的位置,不跟产品走,产品一偏就对不上 |
外框定位开没开、用的哪一套,三个地方都能直接看到:
- 调试端右栏树:"标签外框"那一行后面带括号,写着
定位:特征点/定位:模板匹配/定位:关(这一行本身就是标签外框,所以括号里说的就是外框定位)。外框定位关着时,鼠标停在这一行上,提示会写明是哪个开关关的,以及哪些检测项会被固定在模板位置。 - 运行顺序编辑器:每个拍照行的说明后面带
外框定位:特征点/外框定位:模板匹配/外框定位:关。 - 运行端:外框定位关掉的方案,检测图小窗口标题后面会带"(外框定位关)"。
另外,点运行开始检测时,日志区会对每个外框定位关掉的方案提示一条,提示会列出哪些检测项会被固定在模板位置。只是提示,不会拦着不让检测。
下面三个开关,任何一个都会把定位关掉,但关掉的东西不完全一样(三个同时有时,按表里从上到下的顺序算):
| 开关 | 定位 | 空白区域 | 外框结果 | 图片尺寸校验 |
|---|---|---|---|---|
| 标签外框被停用(树里在标签外框上右键"禁用此检测项") | 整图不矫正 | 一起不查 | 不出结果,永远不会判 NG | 不做 |
| 定位参数被停用(树里在"定位参数"上右键"禁用此检测项") | 整图不矫正 | 照查 | 通过 | 不做 |
| 特征点定位没勾"是否进行矫正"(定位参数里) | 整图不矫正 | 照查 | 通过 | 仍然要做:拍到的图尺寸和模板图不一致会报异常停下 |
"是否进行矫正"只对特征点定位有用;用模板匹配定位时勾不勾都一样。
外框定位关掉以后:没有自己定位的检测项(有无检测、颜色抽取、异常检测、卡尺工具、圆孔测量、空白区域),以及自己的定位也被关掉的检测项,框就固定在模板图上画的位置,不会跟着产品走,产品一偏就会"对不上";其余检测项还在各自的搜索范围里找,产品偏得超出搜索范围才对不上。遇到检测框和产品对不上,先看外框定位是不是关了,再看那个检测项自己的搜索参数 / 定位参数。
命令行 run_cli info 输出里,每个检测方案都有 location_mode(feature 特征点 / template 模板匹配 / off 关 / none 没有标签外框),以及 location_dependents(外框定位关掉时会被固定在模板位置的检测项名单)。
新建与画框¶
- 在调试端点工具栏的"新建检测项",类型选"标签外框",确定。
- 模板图左上角出现一个绿框,把它拖到刚好框住整张标签纸。框太小会漏掉标签边缘的缺陷,框太大会把背景算进来。
- 如果标签在模板图里是斜的,先用"模板图旋转拉伸"把整张图转正,再画框。
- 点工具栏"训练工程"(Ctrl+T)。
框拖不动
先看工具栏的"ROI锁定"是不是开着,锁定状态下所有框都拖不动。

参数说明¶
定位参数(特征点定位)¶
在树里双击"定位参数"打开。
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 是否进行矫正 | 是否把当前图对齐到模板图。关掉就只按框的原始位置取图 | 产品位置每件都可能挪动时必须开。位置被治具卡死、从不偏移时才考虑关,关掉能省时间 |
| 透视矫正 | 除了平移和旋转,还允许"近大远小"的倾斜变形 | 标签平贴、相机正对时不要开,开了反而容易把噪声当成倾斜。只有标签明显是斜面上拍的才开 |
| 匹配特征点数 | 只读显示框,显示本次当前图与模板图配对成功的特征点对数(不是模板上的特征点总数),不能改 | 不用管。这个数掉到"最小匹配个数"以下就会定位失败,可据此判断是往下调阈值还是重训模板 |
| 最小匹配个数 | 当前图和模板图至少要配上这么多对特征点,才算定位成功;配不上就整件 NG | 默认 10。标签内容少、配不上导致老是 NG,就往下调到 6~8;标签内容丰富又出现"定位错位置"时往上调到 20~30 |
| 金字塔层数 | 把图缩小几次再去找特征点。缩得越多越快,但特征点越少 | 默认 2。大图跑得慢就加到 3;标签本身小、找不到点就减到 1 或 0 |
| 是否使用外框的所有特征点 | 用整张标签的特征点来对齐,还是只用被标记过的那几块 | 一般开着,对齐更准。标签上有大片每件都变的内容(流水号、日期)干扰对齐时,关掉它,再到那些内容固定的检测项上右键勾"设置为特征点模板",只用这几块对齐 |
| 位置范围限制 | 是否检查"标签偏得离不离谱"。勾上才能改下面"标签位置范围(相对于模板)"那组上下限(不勾时整组置灰、不检查) | 想拦住"标签贴歪了""上错料"这类问题时开 |
| x方向最小值 / x方向最大值 | 允许标签相对模板在左右方向偏多少像素 | 先跑几十件正常品,看"结果"页里的实际 x 值分布,再在这个范围外留一点余量。给太宽等于没拦,给太窄会误判 |
| y方向最小值 / y方向最大值 | 上下方向同上 | 同上 |
| 角度最小值 / 角度最大值 | 允许标签相对模板转多少度 | 默认 ±60 度很宽。贴标机正常只会偏一两度,收到 ±5 度就能拦住明显贴歪 |
| 倾斜最小值 / 倾斜最大值 | 允许多少斜切变形 | 默认 ±5 度,一般不动 |
上下限填反了(最小值大于最大值)时输入框变红、不生效,改回去就好。
"匹配参数"一组是特征点配对的细节,一般保持默认:
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 匹配方法 | 由配对点算位置时剔除错配的方法(REGULAR / RANSAC / LMEDS / RHO) | 保持默认 RANSAC |
| 匹配阈值 | 一对特征点要多"像"才算配上,0~1,越小越严、配上的越少 | 默认 0.75。定位到错位置时调小到 0.6~0.7;配对数老是不够时调大一点 |
| ransac阈值 | 剔除错配时允许的偏差,单位像素 | 默认 0.5,一般不动 |
按钮与状态(在页面最上面):"训练"重新记一次模板特征点;旁边显示"训练结果"和"训练状态"。改过框的位置或上面任何参数,都要重新训练。
定位参数(模板匹配定位)¶
勾了"使用模板匹配定位"之后,打开的是另一套界面。
"模板匹配参数"一组是这套算法的全部参数,"训练"按钮和训练状态在组的最上面。
匹配方法:"形状匹配"只找转动,"多尺度形状匹配"还允许目标有放大缩小。产品到相机的距离固定就用前者,更快。产品每次放置远近/高度略有不同(画面大小差约 1%~3%)、长文字行右端出现成片误报时,选"多尺度形状匹配":定位会量出这一件的比例,后面的比对按这个比例缩回再比。默认缩放范围 0.97~1.03,够覆盖 ±3% 的放置差;范围别放太宽,整张印大/印小本身是缺陷,范围太宽会被补偿掉。多尺度建模比形状匹配慢。多尺度形状匹配下"亚像素"不起作用。
训练参数(改完必须点"训练"):
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 起始角度 / 最大角度 | 允许标签转多大角度去找 | 范围越大越慢。贴标正常只偏几度,给 -5 到 5 就够 |
| 角度步长 | 找的时候每次转多少度。勾"自动角度步长"让软件定 | 一般勾上。找不准再手动往小调,代价是变慢 |
| 最小缩放 / 最大缩放 / 缩放步长 | 只在"多尺度形状匹配"下有用,允许目标大小变化的范围,可输两位小数 | 默认 0.97 / 1.03;距离固定就保持默认 |
| 金字塔层数 | 先在缩小的图上粗找,再逐级精找。勾"自动金字塔层数"让软件定 | 默认勾上。标签很小、总是找不到时手动改小 |
| 最小组件尺寸 | 比这个小的零碎轮廓不当特征 | 标签上有细密噪点时往上调,可以滤掉噪声 |
| 最小对比度 | 明暗差小于这个值的边缘不要。勾"自动最小对比度"让软件定 | 打光偏暗、边缘发灰时手动调小 |
| 特征优化 | "自动"让软件挑一部分特征点(快),"全部特征点"全用上(准但慢) | 先用"自动";定位不稳再换"全部特征点" |
| 低阈值 / 高阈值 | 提边缘用的两个门槛,越大只留明暗反差越大的边。勾"自动低阈值""自动高阈值"让软件定 | 保持勾选。手动调时低阈值必须小于高阈值 |
| 匹配度量 | "考虑极性"要求黑白关系和模板一致;两个"忽略极性"允许反色 | 同一种标签用"考虑极性"最稳。标签会出现深浅底色两种版本时才选忽略 |
查找参数(改完不用重新训练):
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 分数阈值 | 找到的目标和模板的相似度要达到多少才算数,0~1 | 默认 0.5。误定位到别处就往上调到 0.7~0.8;正常品偶尔找不到就往下调 |
| 贪心度 | 搜索时"见好就收"的程度,越大越快、越容易漏 | 默认 0.9。定位偶发失败时降到 0.5~0.7 |
| 亚像素 | 把定位精度算到像素以内 | 需要很高定位精度时开,会稍慢 |
"匹配结果"一栏显示本次找到的位置和相似度,调参时盯着它看。
空白区域 —— 设置¶
空白区域指的是:标签外框范围里,减去所有其它检测项的框之后剩下的地方。也就是说,你在标签上每多画一个检测项,空白区域就自动少一块。
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 灰度阈值 | 一个点要比它周围暗多少,才被当成可疑缺陷 | 默认 20。漏检小黑点就调小(如 10),背景本身有纹理、误报多就调大(如 30~40) |
| 区域尺寸(奇数有效>=3) | 判断"周围"有多大,单位像素,必须是奇数 | 默认 51。缺陷比较大、整块变暗时要调大,否则缺陷内部被当成"周围"而看不出来;只查小脏点可以调小,速度也快 |
| 缺陷最小边长 | 一处可疑区域的宽和高都超过这个值,才算缺陷 | 这是滤小噪点的主力。误报多就往上调;漏小脏点就往下调。调 0 表示不按这条过滤 |
| 缺陷最大边长 | 一处可疑区域只要有一条边达到这个值,直接判缺陷(不需要另一条边也大) | 注意它是"超过即拦",不是上限过滤。用来抓细长划痕:划痕很细,宽度过不了最小边长,但长度能过这一条 |
| 边界忽略像素 | 把其它检测项的框往外扩这么多像素再挖掉 | 默认 10。定位有一点点误差时,框边上常会假报缺陷,把这个值加大几像素就干净了。加太大会把框边真实的缺陷也放过 |
光照矫正(整个分组可以勾掉):
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 方向 | 打光不均匀是左右方向(X)还是上下方向(Y) | 看条形光源的摆放方向选。选错了矫正没效果 |
| 邻域大小(奇数有效>=3) | 取多大一块算平均亮度,必须是奇数 | 默认 81。标签窄就调小,亮度过渡很缓就调大 |
| 参考亮度 | 矫正后空白处大约拉到多亮,0~255 | 默认 180。拉完在"标签光照矫正图片"里把鼠标放到空白处,看通道值是不是在这个数附近 |
如果打光本来就均匀,把"光照矫正"整个勾掉,更快也更不容易出怪结果。
两个"奇数有效"的尺寸("区域尺寸""邻域大小")填了偶数时输入框变红、不生效,改成奇数就好;用上下箭头调每次跳 2。
空白区域 —— 区域¶
这一页有两张表,里面的框都跟着标签走,标签偏了它们也跟着偏:
- 检测区域:一条都不加时,整个空白区域都查;加了之后只查你加的这几块。用在"标签大部分地方允许有花纹、只有中间一块必须干净"的场合。
- 屏蔽区域:这几块永远不查。用来放过压痕、模切边、透明窗这类天生就"不干净"的地方。
两张表都有"添加""删除""删除所有"三个按钮,加完框在图上拖到位。
训练与调试¶
- 画完框、改完定位参数,先点"训练工程"(Ctrl+T),再点"单模板运行"。
- 打开"定位参数",在"结果"页看这次算出来的 x、y、角度、倾斜。这些数就是你设位置范围的依据。
- 打开"空白区域",用右边图片下拉框逐张看:
- 标签图片:按定位结果抠出来的标签。抠歪了说明定位没做对,先回去修定位。
- 标签光照矫正图片:光照矫正后的样子,空白处应该均匀。
- 检测空白掩膜:白的地方才查,黑的地方不查。如果你以为该查的地方是黑的,多半是被别的检测项的框盖住了,或者被"屏蔽区域"挡了。
- 缺陷二值图:所有可疑点。这里白点一大片,说明"灰度阈值"或"区域尺寸(奇数有效>=3)"给得不合适。
- 结果图片:最终判为缺陷的地方用红框圈出来。
- "结果"页会显示一行提示,写着本次找到的缺陷"边长从 X 到 Y"。把"缺陷最小边长"设在正常噪点边长之上、真实缺陷边长之下,是最快的调法。
常见误判与处理¶
| 现象 | 原因 | 怎么办 |
|---|---|---|
| 正常品也报"定位失败",整件 NG | 特征点配对数不够 | 把"最小匹配个数"调小;把"金字塔层数"调小(特征点会变多);检查打光是不是变了导致模板对不上,必要时重拍模板图重新训练 |
| 模板匹配定位这一步要好几秒,大相机上甚至二十秒,进调试端也跟着卡 | 老工程里没勾"自动金字塔层数""自动角度步长",用的是旧默认的固定 4 层、0.01°;图越大、"角度范围"放得越宽越慢 | 把"自动金字塔层数""自动角度步长"都勾上,重新训练。实测 2000 万像素、角度范围 ±30°:单次定位从 20 秒降到 0.2 秒以内,定位结果不变。新建的工程默认就勾着 |
| 定位成功但所有框整体偏了一点 | 模板图和现场实际状态不一致,或标签本身有拉伸 | 重新拍模板图并训练;斜面产品可以试着开"透视矫正" |
| 标签明明贴歪了却判 PASS | 没开"位置范围限制",或范围给得太宽 | 勾上"位置范围限制",按"结果"页里正常品的实际数值收紧角度和 x、y 范围 |
| 空白区域整片报缺陷 | 打光不均,或"灰度阈值"太小 | 先开"光照矫正"并选对方向;再把"灰度阈值"往上调 |
| 缺陷框密密麻麻出现在各个检测项框的边上 | 定位有微小误差,框边被当成明暗突变 | 把"边界忽略像素"加大几个像素 |
| 压痕、模切边每次都报 | 这些地方本来就不平整 | 到"区域"页的"屏蔽区域"里加框盖住它们 |
| 细长划痕漏检 | 划痕宽度过不了"缺陷最小边长" | 把"缺陷最大边长"设成略小于划痕长度,让它走"只要一条边够长就判缺陷"这条路 |
| 空白区域这一项根本不出结果 | 它默认是关闭的 | 在树里选中"空白区域"右键"启用此检测项" |