当前位置: 首页 > news >正文

卡尺工具:尺寸测量、直线拟合与圆拟合

卡尺工具,尺寸测量,直线拟合,圆拟合。

卡尺工具在工业检测里挺常见的,尤其是自动化尺寸测量的时候。比如检测零件边缘的直线度或者圆孔的直径,这时候就得靠算法从图像里把实际尺寸抠出来。不过别以为这玩意儿简单——图像里的噪点、光照变化分分钟能让测量结果飘到姥姥家。

先说怎么找边缘点。假设咱们用OpenCV处理一张零件图,先灰度化再Canny边缘检测,边缘点坐标就出来了。但这时候的点可能是散的,得用卡尺工具沿着特定方向做搜索。比如下面这段代码模拟垂直方向上的卡尺扫描:

import cv2 import numpy as np def ruler_scan(img, roi_width=100, step=5): height, width = img.shape points = [] for y in range(0, height, step): roi = img[y:y+1, width//2 - roi_width//2 : width//2 + roi_width//2] max_val = np.max(roi) if max_val > 128: # 简单阈值判断 x_pos = np.argmax(roi) + (width//2 - roi_width//2) points.append((x_pos, y)) return np.array(points)

这法子虽然糙,但胜在速度快。实际工业场景里可能会用亚像素边缘检测,把精度提到0.1像素级别。

拿到边缘点之后,直线拟合就该上场了。最基础的当属最小二乘法:

def fit_line(points): x = points[:,0] y = points[:,1] A = np.vstack([x, np.ones(len(x))]).T k, b = np.linalg.lstsq(A, y, rcond=None)[0] return k, b

但实际场景里经常遇到异常点,比如工件表面的划痕被误检。这时候RANSAC算法就派上用场了。举个OpenCV的实现例子:

import cv2 vx, vy, x0, y0 = cv2.fitLine(points, cv2.DIST_L2, 0, 0.01, 0.01) k = vy / vx # 斜率 b = y0 - k * x0

RANSAC的核心是随机采样+迭代验证,代码里虽然没直接写循环,但cv2.fitLine内部已经处理了异常点的问题。不过要注意,当数据中有超过50%的离群点时,这方法也得跪。

圆拟合就更刺激了。最小二乘法的计算量直接上了一个台阶:

def fit_circle(points): x = points[:,0] y = points[:,1] A = np.vstack([2*x, 2*y, np.ones(len(x))]).T b = x**2 + y**2 cx, cy, r = np.linalg.lstsq(A, b, rcond=None)[0] r = np.sqrt(r + cx**2 + cy**2) return (cx, cy), r

这其实是把圆方程展开成线性方程组来解。不过实际用的时候会发现,噪声稍大点结果就崩。所以OpenCV自带的霍夫圆检测虽然慢,但鲁棒性更好:

circles = cv2.HoughCircles(edges, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=10, maxRadius=100)

参数调校是门玄学,param2控制累加器阈值,低了会有多个假圆,高了可能漏检。有个骚操作是先用霍夫检测粗定位,再用最小二乘法精修,这样既能抗噪又保证了精度。

测量系统最怕的是误差累积。曾经有个项目,客户反馈测量结果每天会漂0.1mm,查到最后发现是温度变化导致工业相机CMOS产生热胀冷缩。后来在算法里加了个参考物坐标系校准才解决。所以啊,搞机器视觉的,既要懂代码风花雪月,也得明白螺丝该怎么拧。

http://www.cnnetsun.cn/news/96364.html

相关文章:

  • 8个AI写作工具,专科生轻松搞定论文格式规范!
  • 使用 Python 动手实践全局优化方法
  • 如图,红框是新版QQ,右边是旧版QQ
  • LobeChat差分隐私保护机制设计
  • 《gdb 与 cgdb 深度解析:命令行调试的效率革命》
  • 国产时序数据库崛起:金仓凭什么在复杂场景中碾压InfluxDB
  • 脚本网页 地球演化
  • AXI-A7.4.9 Atomic transaction dependencies
  • 【AI黑科技】6.89%性能炸裂!ASFR框架让知识图谱“开天眼“,小白程序员也能玩转大模型增强技术
  • Google最新AI Agents课程全解析!337页白皮书浓缩精华,从入门到精通,手把手教你成为Agent开发大神!
  • 介观交通流仿真软件:Aimsun Next_(10).动态交通分配
  • C语言学习第四天
  • 通信工程毕设易上手课题指导
  • 单链表逆转
  • 果六郎济南直营二店开业:一场鲜果的甜蜜邂逅
  • Java面试Redis核心知识点整理!
  • 9、数据足迹缩减:存储容量优化策略
  • 17、IT 领域的技术解析与服务洞察
  • 卡顿监测原理
  • [创业之路-733]:CTO - 技术视野、商业理解力、领导力、团队间协作与沟通、团队管理:“技术的战略家 + 商业的合伙人 + 团队的教练”
  • 手把手教你用大模型构建知识图谱:从零开始到实际应用的完整指南,小白也能秒变AI大神!
  • 揭秘Dify Agent版本混乱难题:3步实现精准版本管控
  • 2025年低成本学AI:几款高性价比认证盘点(200元起)
  • Avalon-MM address和DRAM address地址映射
  • Java计算机毕设之基于javaweb的宠物托管系统宠物上门托管服务管理系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • Java毕设选题推荐:基于JavaWeb的家装一体化平台基于SpringBoot+Vue的家装一体化平台【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Java毕设选题推荐:基于JavaEE的电子印章申请下发管理系统的电子办公签章系统基于JavaEE的电子印章管理系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 【课程设计/毕业设计】基于Spring Boot框架的汽车配件销售管理系统基于JavaWeb的汽配销售管理系统【附源码、数据库、万字文档】
  • 【视频字幕检索核心技术】:Dify模糊匹配实战指南(99%的人都忽略的关键细节)
  • 深度剖析Dify PDF解密失败根源(附完整错误代码对照表)