跳转至

圆孔测量:测量圆孔直径

在孔边上布一圈径向卡尺找边缘点,用这些点拟合出一个圆,量出孔的直径,再和你给的参考直径比。通孔、沉孔、倒角孔、安装孔的孔径检测,都可以用它。

直径像素值每次都会给出;导入标定文件之后,还能换算成毫米,并且这个毫米值可以设成自定义变量发给 PLC,口径和卡尺工具一样。

前置条件

  • 检测方案里已经建好标签外框,模板图已完成旋转拉伸。检测框会跟着定位一起走。
  • 孔边在图上看得出明暗变化。孔边糊成一片、人眼都看不出圆的地方量不了。
  • 想要毫米值,需要先做过标定,得到一个记录像素当量的 JSON 文件(和卡尺工具用的是同一种文件)。

它包含哪些检测框

只有一个:"检测参数"。双击它打开的窗口有四个页签:

页签 管什么
"设置" 卡尺数量与宽度、边缘极性与选边规则、参考直径与允许误差、标定与补偿。日常调参都在这一页
"区域" 搜索圆环的圆心、外径、内外比和角度范围;也可以直接在图上拖圆环
"图形" 五个显示开关,控制结果图上画什么
"结果" 直径、圆心、残差汇总,以及每把卡尺的明细表

新建与画框

  1. 切到"编辑模式"。
  2. 点工具栏"新建检测项",类型选"圆孔测量",确定。
  3. 在模板图上拖出矩形检测框,把整个孔套进去,四周留一点边。这个框只决定"在哪块图上找孔",它会跟着标签外框的定位一起移动。
  4. 点"训练工程"。
  5. 双击"检测参数",切到"区域"页,在图上拖圆环:
    • 外圆放在孔边外侧,内圆放在孔边内侧,内外圆之间那一圈就是搜索带,孔边必须落在带里。
    • 圆心大致对准孔心即可,不必很准——默认开着"两次测量",第一次量出的圆心会自动用来再量一次,初始偏差会被纠正过来。
    • 需要精确摆位时,可以在"区域"页里直接填圆心、"外环半径"(Outer Radius)、"径向比例"(Radial Scale,内圆半径 ÷ 外圆半径)、"起始角度"(Start Angle)和"角度范围"(Angle Range)。孔只露出一部分时,把角度范围缩到露出的那段弧上。
  6. 点窗口左上角的运行按钮跑一次,看"结果"页里找到了多少个点、直径是多少。

第一次打开时的圆环

第一次拿到输入图时,圆环会自动铺在检测框中央、整圈 360°、内外比 0.6。孔在框中央且大小合适时,常常不用拖就能直接量。

参数说明

"设置"页 —— 圆孔与卡尺

参数 含义 调参建议
"卡尺数量" 沿圆环均匀布多少把径向卡尺,每把卡尺找一个边缘点 默认 36。孔大、边缘干净时够用;孔边有缺口、毛刺时加多一些,让剔点后仍有足够的点
"卡尺宽度(px)" 每把卡尺沿圆周方向取多宽来平均 默认 5。噪声大就加宽,孔很小就减窄

"设置"页 —— 边缘

参数 含义 调参建议
"极性" 沿半径从孔心向外看边缘的明暗过渡方向,下拉三选一(由明到暗 / 由暗到明 / 任意) 背光通孔(孔亮、件暗)选"由明到暗";正面光下的暗孔选"由暗到明";不确定先用"任意"跑通再收紧
"对比度阈值" 边缘对比度门槛,低于它的明暗过渡不算边缘 找到的点太少就往下调;挑到杂边就往上调
"滤波半宽(px)" 平滑窗口的半宽,值越大越平滑 孔边毛糙、有噪点时往上调;调太大会把边缘抹钝
"边缘选择" 一把卡尺里有多条边时挑哪一条:"最接近期望半径" / "对比度最强" / "由内向外第一条" / "由内向外最后一条" 默认"最接近期望半径"(期望半径 = 内外圆的中间)。倒角、沉孔会出现两圈边缘,用它配合把圆环中线摆在要量的那圈边上
"两次测量" 用第一次拟合出的圆心和半径,缩窄搜索带再量一次 默认打开。圆环摆得不够准时靠它纠偏;一般不要关
"剔除点数上限" 拟合时最多丢掉多少个偏离最远的点 默认 4。孔边有缺口、异物、毛刺时适当加大
"最低有效点比例(%)" 找到边的卡尺、以及最终参与拟合的点,各自至少要占卡尺总数的多少 默认 60。低于它直接判 NG,防止只凭几个点拟合出一个假圆

"设置"页 —— 判定

参数 含义 调参建议
"参考直径(px)" 标准品上这个孔的直径应该是多少像素 别凭空填。先跑几件良品,看"结果"页的"直径(px)",取中间值填进来
"允许误差(±px)" 实测直径允许偏离参考直径多少像素 差值在范围内判 PASS,超出判 NG。先按良品的波动给,再收紧
"最大 RMS 残差(px,0=不判)" 拟合残差的均方根上限,超过判 NG 默认 0 不判。孔变形、椭圆、缺口也要判出来时再设

"设置"页 —— 标定

参数 含义 调参建议
"像素当量" 当前的换算系数(mm/px) 只读。没导入过标定文件时显示"未导入"
"导入标定文件…" 选一个 JSON 标定文件 文件里必须有像素当量字段,导入成功会提示换算系数是多少 mm/px
"偏差补偿(mm)" 给毫米结果加一个固定偏移 用环规或针规量一次已知直径,把软件结果和量具的差值填这里补平
"参考直径(mm)" 参考直径换算成毫米 只读。没导入标定文件时是空白
"本次结果(mm)" 本次的毫米直径,已经含补偿 只读。没跑过时显示"null";判 NG 或未标定时是 0

"图形"页 / "结果"页

页签 里面有什么 怎么用
"图形" "显示拟合圆""显示拟合用点""显示剔除点""显示卡尺框""显示圆环区域"五个开关 调试时全打开:黄色点是参与拟合的点,红色点是被剔掉的点;卡尺框青色 = 点被采用,红色 = 找到边但被剔掉,黄色 = 没找到边
"结果" 上方是直径(px)、直径(mm)、圆心、RMS / 最大残差、有效点 / 卡尺数;下方是每把卡尺的角度、找到没有、用没用、残差、对比度 定"参考直径(px)"就看这里的直径;某个方向总找不到边,就去表里看是哪几把卡尺

结果与判定

按下面的顺序判,命中一条就停:

  1. 找到边的卡尺太少,或剔点后参与拟合的点太少(都按"最低有效点比例(%)"算)→ NG。
  2. 设了"最大 RMS 残差",而本次残差超过它 → NG。
  3. 实测直径与"参考直径(px)"之差不超过"允许误差(±px)" → PASS,否则 NG。

毫米换算

毫米直径 = 实测直径(px)× 像素当量 + "偏差补偿(mm)"。

  • 没导入过标定文件时,对外输出的毫米值一律是 0;判 NG 时输出也是 0。要把直径发给 PLC,必须先导入标定文件、把这一项判到 PASS。
  • 发给上位机:在树里右键这个圆孔测量检测项 →"设为自定义变量",给它取个变量名,再到通讯配置里把这个变量挂出去。

训练与调试

  1. 画好矩形检测框、点"训练工程",再在"区域"页拖好圆环。
  2. 点运行按钮,到"结果"页确认找到的点足够多、直径合理;"图形"页打开全部开关,看拟合圆是否压在孔边上。
  3. 换几件良品(用"打开调试文件夹"过一批实拍图),记下每件的直径,看波动有多大。
  4. 把中间值填进"参考直径(px)",把波动范围略放宽后填进"允许误差(±px)"。
  5. 要输出毫米值:导入标定文件,用环规 / 针规量一个已知直径,把差值填进"偏差补偿(mm)"。
  6. 点"保存工程"。

常见问题

现象 原因 处理
倒角孔、沉孔量出来的直径忽大忽小,或整体偏大一圈 孔边有两圈边缘(倒角外缘和孔壁内缘),卡尺在两圈之间乱挑 "边缘选择"用"最接近期望半径",并把圆环的中线摆在要量的那一圈边上;不要用"对比度最强"
正面打光时量出的孔偏小,或者边缘点分成两圈 正面光会照到孔壁,孔壁本身也成了一圈边缘 通孔优先用背光,孔边最干净;只能正面光时按上一条选边
找不到圆,直接判 NG 孔边不在圆环带里,或"对比度阈值"太高 在"区域"页把圆环拖到外圆在孔外、内圆在孔内;再降门槛
某一段弧上总找不到点 那一段被遮挡、有缺口或反光 缩小"角度范围"避开那一段,或加大"剔除点数上限"
直径每件跳动很大 卡尺太窄,噪声直接影响结果;或孔边毛糙 加宽"卡尺宽度(px)";适当加大"滤波半宽(px)";加多"卡尺数量"
毫米值一直是 0 没导入标定文件,或这一次判了 NG 先导入卡尺同款的标定 JSON;再把判定调到 PASS
毫米值整体偏了一个固定量 找到的是图像上的明暗边缘,和量具的基准不完全一致 用环规 / 针规量一次已知直径,把差值填进"偏差补偿(mm)"
提示输入图片不是灰度图 圆孔测量只吃灰度图 检查检测方案的取像设置
检测框跟着产品跑偏 标签外框定位没跟上 回标签外框调定位

相关页面