名词解释¶
手册和软件界面里会反复出现一批固定说法。这一页把它们集中解释一遍,每条两三句话,看完就知道在界面上指的是哪个东西。按主题分组,用右上角搜索框可以直接搜词。
名称改过的地方
这一版把几个长期容易混的名字统一改了:"工作站"改叫相机工位,"检测器"改叫检测方案,"分类器"改叫检测项,检测项下面的"XX检测器"改叫 XX检测框,"区域分析"改叫有无检测。旧文档、旧培训材料里的老说法按这个对照看。
工程结构¶
相机工位¶
一路取像通道,绑定一台相机,下面挂若干个检测方案。新建时默认叫"相机工位1""相机工位2",可以改名。产线上有几台相机,通常就建几个相机工位。旧称:工作站。
"相机"这个词只指硬件本身——相机设置、相机参数、相机品牌说的都是那台设备。
检测方案¶
相机工位下面的一级。一个检测方案持有一组模板图(一张主模板图,可以再加若干张副模板图),并且带自己独立的相机参数、HDR 参数和光源参数。同一台相机要拍不同产品、不同面、不同工位的,就在这台相机的相机工位下面建多个检测方案。旧称:检测器。
检测项¶
在模板图上划出来的一个检测对象,比如"标签外框""固定区域_1""码检测_1"。检测项一共有 12 种类型:标签外框、有无检测、多行字符、固定区域、可变区域、条码字符对、码检测、颜色抽取、字符识别、卡尺工具、逻辑检测、异常检测。旧称:分类器。
每个检测方案必须先有一个"标签外框"检测项,其余类型才能建。
检测框¶
检测项下面的一级,是真正干活的那个算子,作用在检测项圈出来的那块图上。一个检测项可以带好几个检测框,比如固定区域下面有"细节检测框""屏蔽内容检测框""屏蔽空白检测框"。旧称:XX检测器(标签定位检测器、孔洞缺陷检测器、细节检测器……)——它和上面的"检测器/检测方案"同名不同层,长期容易搞混,所以这次一并改掉。
工程(.lproj)¶
一条产线的全部配置:相机工位、检测方案、模板图、所有检测项和检测框的参数、运行顺序、通讯指令,全在里面。
工程是一个文件夹,后缀是 .lproj,不是单个文件。所以:
- 拷贝、备份工程要整个文件夹一起拷,漏文件就打不开。
- 在"打开工程(选择 .lproj 目录)"里要选中这个文件夹本身,不是进去选里面的某个文件。
- 老版本的
.pro工程本软件不能直接打开,需要转换,联系我们处理。
模板图¶
检测的比对基准:一张"标准品长什么样"的照片。所有检测项都画在模板图上,运行时用现场拍到的图和它对照。模板图属于检测方案。
主模板图¶
一个检测方案有且只有一张主模板图,名字就叫"主模板图"。检测项的位置、旋转拉伸参数都以它为准。删掉主模板图会重置整个检测方案,软件会先弹窗问你"删除主模板将会重置当前检测方案, 是否继续?"。
副模板图¶
同一个检测方案下额外加的模板图,可以有多张,默认名叫"副模板图"。用在同一个位置会出现好几种合格外观的场合,比如同一条线上跑几种版式的标签。
副模板图是按检测项生效的,不是整个检测方案一起切换:只有右键"添加到副模板"过的检测项,才会在副模板图上多存一份自己的参考内容。运行时,这个检测项先在每一张模板图上各做一次定位,取定位相似度最高的那一张,只用它的那份参考内容去比对并出结果;没有添加到副模板的检测项一律只用主模板图。所以几种版式可以共用一个工程,但每个要跟着版式变的检测项都得单独"添加到副模板"一次。
加法:工具栏"添加模板图"→ 在"添加模板图"窗口里选"副模板图"(已经有主模板图时这里会自动锁定成副模板图)→ 起个名字(最多 6 个字)。再在要用它的检测项上点右键选"添加到副模板"。
ROI¶
Region Of Interest,"感兴趣区域"的英文缩写,就是你在图上拉出来的那个框。软件里的检测项框、检测框都是 ROI。调试端工具栏有三个相关按钮:"ROI锁定"(锁住不让误拖)、"ROI移动"(一次性平移全部框)、"ROI向导"(按引导一步步建框)。
训练¶
让软件把当前的模板图和参数"记下来",生成检测时要用的比对基准。改过下面这些东西之后必须重新训练,否则检测还在用旧基准:模板图、旋转拉伸参数、定位参数、检测框位置、有无检测的注册图。
调试端工具栏点"训练工程"(快捷键 Ctrl+T)训练整个工程;单个检测框也可以在它自己的设置窗口里点"训练"。训练完记得"保存工程"。
Warning
调试模式下不训练。弹出"调试模式下不进行训练, 请切换到编辑模式训练"时,先切到"编辑模式"再点训练。
取像与触发¶
软触发¶
由软件发指令让相机拍一张。相机参数配置界面的"触发"页选"软触发模式"就是这个模式。不需要接触发线,适合节拍不快、或者由通讯信号驱动流程的场合。
外触发¶
由外部硬件信号(传感器、PLC 的一个输出点)让相机拍一张,相机参数配置界面的"触发"页选"外部触发模式"。必须接触发线,时序最准,适合高速产线。同一页上还能选触发边沿(上升沿/下降沿)和触发延时。
选"连续模式"则是连续采集,相机自己不停地出图,一般只在调试看画面时用,连续采集模式下不能用 HDR。
通讯触发¶
和上面两个不是一回事:软触发/外触发说的是"相机怎么被拍",通讯触发说的是"这一件产品什么时候开始检"。软件按设定的间隔去读 PLC 的某个地址,读到的值等于"触发条件值"时,就认为产品到位,开始跑这一件。
通讯触发属于某个阶段,在调试端的"编辑运行顺序"窗口里,在阶段行上右键"添加通讯触发",显示成 (trigger#1) 这样。它的参数有:从站ID、地址、寄存器类型、读取间隔、触发条件值、触发延时。运行时信息区会打印 等待通讯触发(trigger#1)。
主动触发¶
拍照行上的一个勾选框。勾上主动触发之后,通讯触发信号一到,整组相机立刻同时曝光,后面轮到这一行时只是把已经拍好的图取出来用。这样曝光时刻就钉死在信号到达的那一瞬间,不会被中间的其他步骤拖偏。
设法:"编辑运行顺序"窗口里,勾上拍照行(形如 (相机工位名->检测方案名))的"主动触发"列。
被动触发¶
主动触发的反面,也是默认状态:轮到这一行时才去拍。流程简单、节拍宽裕时够用;多相机要求同时曝光、或者出现拍早拍晚的,就改成主动触发。设法是去掉拍照行"主动触发"列的勾。
HDR¶
高动态范围合成。同一个位置用几个不同的曝光值各拍一张,再合成一张图,让很亮的地方和很暗的地方在同一张图里都看得清。适合亮暗反差极大的产品(镜面件旁边有黑色标签这种)。
HDR 参数属于检测方案。在相机参数配置界面的"曝光"页调好一个曝光值后点"添加曝光值到HDR",把要用的几档都加进去。注意两点:相机要先切到触发模式(连续采集下用不了 HDR);自动曝光要先关掉。
频闪¶
相机在曝光的同时给光源发一个同步脉冲,让灯只在曝光那一瞬间亮。
本软件不驱动相机的频闪输出,光源按常亮使用。如果画面上出现黑色横条,基本可以断定是光源自己在闪(灯控器被设成了闪烁/脉冲模式),或者环境里有别的频闪光源照进来,把灯改成常亮即可。
试运行模式¶
运行端菜单"设置 → 试运行模式"。勾上之后检测照常跑、结果照常显示,但不计入统计、不写良率。信息区会打印"试跑模式: 不统计数据",状态栏上出现黄色的"试运行"字样。用来试线、试料、带新人,不会把练手的数据混进当班良率。
工程设置、系统设置、设备设置¶
工程设置跟工程走:存在工程文件(.lproj)里,换机器一起带走,比如最大失败数、检测 SN、人工复判、运行模式。系统设置跟机器走:存在本机 ~/.labeldetect/sys_config.yaml,管存图、通用、良率。设备设置也跟机器走:光源控制器、通讯设备、串口、三色灯的串口与地址。三个窗口各只有一份,都在顶部"设置"菜单里,运行页和调试页都能打开。
自动存图¶
运行时把每一件的图自动保存到磁盘。运行端菜单里的"自动存图"是总开关,想临时不存图就在这里关掉。具体存什么、存到哪、存多久,在"打开系统设置 → 存图设置"里设:"存图路径:"、"存图格式"、"PASS图格式:"、"只存NG图片"、"是否循环存图"、"保存周期(天):"、"磁盘空间预警:"。
存图目录¶
自动存图写出来的那棵目录树,根目录就是系统设置里的"存图路径:"。默认的分层方式是:
存图路径 / 工程名_SN_时间戳 / PASS 或 NG / 相机工位名_检测方案名 / 图片
NG 的那一张除了原图还会多存一张带缺陷标注的图。目录名里用到了工程名、相机工位名、检测方案名,所以改这些名字会改变存图路径,现场如果有按目录名取图的脚本,改名后要同步更新。"存图路径结构:"可以选 Format1 到 Format4 四种分层方式,按现场要求选。
结果与产线¶
总结果¶
这一件产品的最终结论,OK 还是 NG。默认规则是"只要有一个检测方案 NG,总结果就是 NG"——对应系统设置里的"总结果整合所有检测结果(推荐勾选)"。
总结果是通讯输出里的一个内置变量,名字就叫 总结果。输出模式选"固定指令"时,发给对方的就是它:OK 发"通过时指令"(默认 PASS),NG 发"失败时指令"(默认 FAIL)。
SN¶
产品的唯一序列号,通常来自标签上的条码。软件把某个码检测或字符识别的结果指定成 SN,做法是在检测项上点右键选"设置为SN码"。
SN 的用处:存图目录和文件名里带它,方便按产品找回图;上传 MES 时用它标识这一件;开了"检测SN"之后,SN 读不到会直接报"当前SN条码为空 检测出现错误: 请检查SN条码,人工处理"。
MES 卡控¶
MES 是工厂的制造执行系统。软件每检完一件就把结果报给 MES,MES 决定这一件能不能过站——这就是卡控。常见的卡控结果有:重复过站(同一个 SN 已经报过一次)、品质未审核(界面显示"品质未审核, 停止检测过站")、MES 状态异常。
MES 连不上或上传失败时,检测不会停:运行界面会挂一条红色告警条"MES 未上传 N 件!",这些件的数据在本地留痕,等 MES 恢复后要人工补传。现场不接 MES 的,在系统设置"通用设置"里把"启用 MES 上传"去掉即可(不留痕、不计数、不弹条);工程设置里的"MES 未上传告警条"只管红条显不显示。
授权文件¶
后缀 .lic 的一个小文件,是这台电脑运行本软件的凭据。它和机器指纹绑定,一台机器一份,拷到别的机器上用不了。文件名里带着机器指纹,导入时软件会核对,所以不要改文件名。
授权文件放在用户目录的 .labeldetect 文件夹下。更换、更新走"更新授权"窗口的"导入授权码"。授权带到期日的,到期后启动会报"授权已过期(到期日 ...)"。
机器指纹¶
从这台电脑的硬件信息算出来的一串标识,用来唯一地认出这台机器。换主板、换硬盘、重装系统都可能让它变化,变了之后原来的授权文件就对不上,会报"许可证与本机不匹配"。
取法:运行端菜单"更新授权",窗口里显示的那一串就是,点"导出UUID"可以存成 txt 发给我们换新授权。极少数机器的 BIOS 没刷唯一标识,打开这个窗口时会提示"本机硬件唯一标识为占位符,授权可能与同型机冲突,建议刷 BIOS/换机"——能用,但请告诉我们。
图像处理名词¶
下面这些词出现在各个检测框的参数里。理解了它们,调参就不是碰运气。
非均匀光照¶
指画面里各处的光照强度不一样——一边亮一边暗、中间亮四周暗。这种图直接拿去比对很容易误判:暗的那半边会被当成"颜色不对"。
在调试端的"模板图旋转拉伸"里,"拉伸类型:"选非均匀光照,软件会按局部邻域分别拉,把明暗拉平。它比"均匀光照"更能压住阴影和高光,代价是耗时略高。配套参数是"光照邻域范围:",邻域取大一点更平滑、取小一点更贴合局部。
光照拉伸¶
把图像整体的明暗对比拉开:暗的更暗、亮的更亮,让细节更清楚。"拉伸类型:"里的光照拉伸就是它,配套参数是"拉伸系数:"(拉多狠)和"拉伸偏移:"(整体往亮往暗挪)。
选均匀光照则是全图用同一条线性关系拉,最快,适合本来光就打得匀的场合。
Warning
改过旋转拉伸参数以后必须重新训练,界面上也写着"注意:修改旋转拉伸参数后需要重新训练"。
矫正 / 透视矫正 / 特征点¶
矫正是把现场拍到的这一张图对齐到模板图上去。产品在治具上摆得永远有一点偏差,不先对齐,后面所有检测框都是错位的。标签外框的设置里有"是否进行矫正"这个开关。
透视矫正是矫正的加强版,处理的是"倾斜拍摄造成的形变"——产品不只是平移旋转,还朝某个方向倒了一点,近的一边显得大、远的一边显得小。产品容易歪着放的场合勾上"透视矫正"。
特征点是图像里那些辨识度高的点(角点、边缘点、斑点)。矫正就是靠"模板图上的特征点"和"现场图上的特征点"一对一配上,再算出该怎么挪。相关参数:"模板特征点数:"(从模板上取多少个点)、"最小匹配个数:"(至少配上多少对才算矫正成功,配不够就判定位失败)、"是否使用外框的所有特征点:"。
金字塔层数¶
把一张图逐级缩小,形成一摞由大到小的图,这一摞就叫图像金字塔,缩了几级就是几层。
- 在模板匹配定位里:层数大 = 从很小的图开始找,找到大致位置再逐级到大图上找准。好处是快,坏处是起手的图太小,容易根本找不着。
- 在标签外框的特征点匹配里:压得少 → 特征点多 → 矫正更准但更慢;压得多 → 特征点少 → 快但容易配不上。
定位偶尔失败就把层数调小,嫌慢就调大,一次动一级,每次都回放几张真实图确认。
对比度¶
图像里明暗之间的差距有多大。差距大的地方就是边缘。
- 最小对比度阈值:低于这个值的明暗差被当成没有,直接忽略。用来滤掉轻微的色差和噪点。
- 低阈值 / 高阈值(范围都是 0~255,低阈值不能大于高阈值):做边缘检测时用的一对门槛。梯度高于高阈值的点直接保留;介于高低之间的点,只有能连上一个已保留的强边缘才留下,否则丢掉;低于低阈值的点直接丢。
粗略记:这几个值调得越大,留下的就只有明暗反差越明显的边缘。噪点多就往上调,细节丢了就往下调。
区域扩张¶
允许检测框往外多搜一圈的范围。产品位置有漂移时,目标可能跑到框边上甚至探出去一点,给一点扩张量就能把它捞回来。
对应参数是"横向偏移容忍绝对值"和"纵向偏移容忍绝对值"(检测方案设置里叫"搜索参数横向/纵向偏移容忍绝对值")。图案相对位置变动越大,这两个值就调越大,代价是耗时增加、也更容易把隔壁的东西也搜进来。调的时候在"区域扩张图像"里看效果。
缺陷面积阈值¶
判 NG 的最后一道门槛:把所有被认定为缺陷的像素面积加起来,总面积超过这个值就报 NG,没超过就放行。
它管的是"多大才算事":调大 = 容忍更大的瑕疵,调小 = 更严。和下面的"缺陷二值化阈值"配合用——先由二值化阈值决定"哪些像素算缺陷",再由面积阈值决定"这些像素加起来够不够判 NG"。
缺陷二值化阈值¶
判 NG 的第一道门槛:现场图和模板图在同一个位置的差异值,小于这个阈值的像素被当成正常,直接不计入缺陷面积;大于的才算缺陷像素。
它管的是"差多少才算差":调大 = 只有差得很明显的地方才算缺陷(更宽松),调小 = 一点点差异就算(更严)。固定区域类的检测框里,"更亮"和"更暗"两个方向还可以分别设阈值和面积。
边缘拉伸尺度¶
用来压掉"边缘假缺陷"的一个参数。
现场图和模板图再怎么对齐也不可能完全重合,在图案的边缘位置总会差那么一两个像素,这点错位会被算成一条细长的缺陷。软件的做法是:先单独做一张"边缘图",再从灰度差异图里把它减掉,剩下的才拿去算缺陷的灰度和面积。边缘拉伸尺度就是这张边缘图做多宽——值调大,忽略掉的边缘像素更多,边缘假缺陷更少,但真的贴着边缘的小缺陷也可能一起被忽略。
出现"缺陷全部沿着图案轮廓排成一圈"这种典型现象时,先调它。
旋转补偿¶
软件只认水平方向的文字。标签上的字要是竖排、倒着、或者转了 90 度,识别出来必然是错的或者空的。
在字符识别的"旋转角度"里选 0 / 90 / 180 / 270,把字先转成水平方向再识别。这个设置只影响识别,不改变原图。
孔洞检测阈值 / 孔洞面积缺陷容忍量¶
条码缺陷检测用的一对参数。"孔洞"指的是本该是黑的条里出现了白点(墨没印上、被蹭掉了)。
- 孔洞检测阈值:一个像素的值大于这个数就当成孔洞缺陷,小于就过滤掉不算。管"多白才算白点"。
- 孔洞面积缺陷容忍量:所有被算成孔洞的像素面积加起来,超过这个数就报 NG,没超过就 PASS。管"白点总共多大才算事"。
同一组里还有"孔洞数量容忍量",管的是白点的个数。条码印刷有轻微掉墨属正常的,就把容忍量往上调;要求严的往下调。