跳转至

标签外框:定位标签并检查空白区域

标签外框干两件事:找到标签在这一帧里的位置,让后面所有检测项的框跟着标签一起走;顺带检查标签上没有印刷内容的地方有没有脏点、划伤、破损。

一个检测方案里有且只有一个标签外框,而且必须先建它——其它检测项的坐标都是相对它算的。

前置条件

  • 检测方案已经设好主模板图。
  • 模板图上的标签是良品、摆正、清晰。

它包含哪些检测框

标签外框下面固定挂两个检测框:

检测框 干什么 默认
定位参数 把当前拍到的图和模板图对齐,算出标签相对模板偏了多少、转了多少 开
空白区域 在对齐后的标签上,检查没有印刷内容的区域有没有缺陷 关,要用得先右键"启用此检测项"

定位参数有两套算法,在树里选中标签外框右键,勾不勾"使用模板匹配定位"来切换:

  • 不勾(默认):特征点定位。在整张标签上找有辨识度的点,和模板图的点配对,配上足够多就能算出偏移。标签内容越丰富越稳。
  • 勾上:模板匹配定位。按轮廓形状去找,对内容少、但外形清楚的标签更合适,也更能容忍缩放。

两套算法的参数完全不同,切换之后必须重新训练。

定位开没开,去哪看

先说清楚:定位分两级。

  • 外框定位(就是本页的"定位参数"):把整张图对齐到模板图,对齐后的图交给所有检测项用。
  • 检测项自己的定位:固定区域 / 可变区域 / 条码字符对 / 字符识别各有自己的"搜索参数 + 定位参数",码检测 / 多行字符有"搜索参数"。外框定位关掉以后,它们仍在各自的搜索范围里把内容找出来,产品偏得不超过搜索范围就还能对上。有无检测 / 颜色抽取 / 异常检测 / 卡尺工具 / 圆孔测量 / 空白区域没有自己的定位,只靠外框定位。
检测项 自己的定位 外框定位关了会怎样
固定区域 / 可变区域 / 条码字符对 / 字符识别 搜索参数 + 定位参数 在搜索范围里照样找;偏移超出搜索范围才对不上。它自己的"定位参数"也被停用时,框就固定在模板位置。新建的字符识别默认停用定位参数(见字符识别),加了副模板时自动打开
码检测 / 多行字符 搜索参数 在扩大后的搜索范围里整块找码、找字;搜索参数里关了扩张时,框就固定在模板位置
有无检测 / 颜色抽取 / 异常检测 / 卡尺工具 / 圆孔测量 / 空白区域 没有 框固定在模板图上画的位置,不跟产品走,产品一偏就对不上

外框定位开没开、用的哪一套,三个地方都能直接看到:

  • 调试端右栏树:"标签外框"那一行后面带括号,写着 定位:特征点 / 定位:模板匹配 / 定位:关(这一行本身就是标签外框,所以括号里说的就是外框定位)。外框定位关着时,鼠标停在这一行上,提示会写明是哪个开关关的,以及哪些检测项会被固定在模板位置。
  • 运行顺序编辑器:每个拍照行的说明后面带 外框定位:特征点 / 外框定位:模板匹配 / 外框定位:关。
  • 运行端:外框定位关掉的方案,检测图小窗口标题后面会带"(外框定位关)"。

另外,点运行开始检测时,日志区会对每个外框定位关掉的方案提示一条,提示会列出哪些检测项会被固定在模板位置。只是提示,不会拦着不让检测。

下面三个开关,任何一个都会把定位关掉,但关掉的东西不完全一样(三个同时有时,按表里从上到下的顺序算):

开关 定位 空白区域 外框结果 图片尺寸校验
标签外框被停用(树里在标签外框上右键"禁用此检测项") 整图不矫正 一起不查 不出结果,永远不会判 NG 不做
定位参数被停用(树里在"定位参数"上右键"禁用此检测项") 整图不矫正 照查 通过 不做
特征点定位没勾"是否进行矫正"(定位参数里) 整图不矫正 照查 通过 仍然要做:拍到的图尺寸和模板图不一致会报异常停下

"是否进行矫正"只对特征点定位有用;用模板匹配定位时勾不勾都一样。

外框定位关掉以后:没有自己定位的检测项(有无检测、颜色抽取、异常检测、卡尺工具、圆孔测量、空白区域),以及自己的定位也被关掉的检测项,框就固定在模板图上画的位置,不会跟着产品走,产品一偏就会"对不上";其余检测项还在各自的搜索范围里找,产品偏得超出搜索范围才对不上。遇到检测框和产品对不上,先看外框定位是不是关了,再看那个检测项自己的搜索参数 / 定位参数。

命令行 run_cli info 输出里,每个检测方案都有 location_mode(feature 特征点 / template 模板匹配 / off 关 / none 没有标签外框),以及 location_dependents(外框定位关掉时会被固定在模板位置的检测项名单)。

新建与画框

  1. 在调试端点工具栏的"新建检测项",类型选"标签外框",确定。
  2. 模板图左上角出现一个绿框,把它拖到刚好框住整张标签纸。框太小会漏掉标签边缘的缺陷,框太大会把背景算进来。
  3. 如果标签在模板图里是斜的,先用"模板图旋转拉伸"把整张图转正,再画框。
  4. 点工具栏"训练工程"(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。

空白区域 —— 区域

这一页有两张表,里面的框都跟着标签走,标签偏了它们也跟着偏:

  • 检测区域:一条都不加时,整个空白区域都查;加了之后只查你加的这几块。用在"标签大部分地方允许有花纹、只有中间一块必须干净"的场合。
  • 屏蔽区域:这几块永远不查。用来放过压痕、模切边、透明窗这类天生就"不干净"的地方。

两张表都有"添加""删除""删除所有"三个按钮,加完框在图上拖到位。

训练与调试

  1. 画完框、改完定位参数,先点"训练工程"(Ctrl+T),再点"单模板运行"。
  2. 打开"定位参数",在"结果"页看这次算出来的 x、y、角度、倾斜。这些数就是你设位置范围的依据。
  3. 打开"空白区域",用右边图片下拉框逐张看:
    • 标签图片:按定位结果抠出来的标签。抠歪了说明定位没做对,先回去修定位。
    • 标签光照矫正图片:光照矫正后的样子,空白处应该均匀。
    • 检测空白掩膜:白的地方才查,黑的地方不查。如果你以为该查的地方是黑的,多半是被别的检测项的框盖住了,或者被"屏蔽区域"挡了。
    • 缺陷二值图:所有可疑点。这里白点一大片,说明"灰度阈值"或"区域尺寸(奇数有效>=3)"给得不合适。
    • 结果图片:最终判为缺陷的地方用红框圈出来。
  4. "结果"页会显示一行提示,写着本次找到的缺陷"边长从 X 到 Y"。把"缺陷最小边长"设在正常噪点边长之上、真实缺陷边长之下,是最快的调法。

常见误判与处理

现象 原因 怎么办
正常品也报"定位失败",整件 NG 特征点配对数不够 把"最小匹配个数"调小;把"金字塔层数"调小(特征点会变多);检查打光是不是变了导致模板对不上,必要时重拍模板图重新训练
模板匹配定位这一步要好几秒,大相机上甚至二十秒,进调试端也跟着卡 老工程里没勾"自动金字塔层数""自动角度步长",用的是旧默认的固定 4 层、0.01°;图越大、"角度范围"放得越宽越慢 把"自动金字塔层数""自动角度步长"都勾上,重新训练。实测 2000 万像素、角度范围 ±30°:单次定位从 20 秒降到 0.2 秒以内,定位结果不变。新建的工程默认就勾着
定位成功但所有框整体偏了一点 模板图和现场实际状态不一致,或标签本身有拉伸 重新拍模板图并训练;斜面产品可以试着开"透视矫正"
标签明明贴歪了却判 PASS 没开"位置范围限制",或范围给得太宽 勾上"位置范围限制",按"结果"页里正常品的实际数值收紧角度和 x、y 范围
空白区域整片报缺陷 打光不均,或"灰度阈值"太小 先开"光照矫正"并选对方向;再把"灰度阈值"往上调
缺陷框密密麻麻出现在各个检测项框的边上 定位有微小误差,框边被当成明暗突变 把"边界忽略像素"加大几个像素
压痕、模切边每次都报 这些地方本来就不平整 到"区域"页的"屏蔽区域"里加框盖住它们
细长划痕漏检 划痕宽度过不了"缺陷最小边长" 把"缺陷最大边长"设成略小于划痕长度,让它走"只要一条边够长就判缺陷"这条路
空白区域这一项根本不出结果 它默认是关闭的 在树里选中"空白区域"右键"启用此检测项"

相关页面