news 2026/7/11 18:41:45

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
卡尺工具:尺寸测量、直线拟合与圆拟合

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

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

先说怎么找边缘点。假设咱们用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产生热胀冷缩。后来在算法里加了个参考物坐标系校准才解决。所以啊,搞机器视觉的,既要懂代码风花雪月,也得明白螺丝该怎么拧。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/11 14:03:16

从“沙盘推演”到“数字战场”:一位航天基地管理者的实战笔记

三年前,当我第一次听说“数字孪生”时,我以为它不过是高级一点的3D模型,一个更漂亮的“电子沙盘”。直到我们基地面临一次重大系统升级,传统分散的监控系统、孤立的业务数据、以及“凭经验、靠图纸”的运维模式,让我们…

作者头像 李华
网站建设 2026/7/11 11:18:03

8个AI论文工具,MBA轻松搞定研究写作!

8个AI论文工具,MBA轻松搞定研究写作! AI 工具如何助力 MBA 学子高效完成论文写作 在当今快节奏的学术环境中,MBA 学子面临着繁重的研究任务和严格的论文要求。传统的写作方式不仅耗时费力,还容易因反复修改而影响效率。幸运的是…

作者头像 李华
网站建设 2026/7/11 3:17:31

8 个 AI 写作工具,MBA 论文轻松搞定!

8 个 AI 写作工具,MBA 论文轻松搞定! AI 写作工具如何助力 MBA 论文写作 MBA 学习过程中,论文写作是每位学生必须面对的挑战。无论是选题、开题、撰写还是最终的降重,每一个环节都需要大量的时间与精力。而随着 AI 技术的发展&a…

作者头像 李华
网站建设 2026/7/10 5:20:29

Groq,以及 AI 的硬件——直观且全面地解释

原文:towardsdatascience.com/groq-intuitively-and-exhaustively-explained-01e3fcd727ab 机器学习 | 加速计算 | 人工智能 https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/58f2f12e365ea39f26d487c69e6477ef.png “协调分解…

作者头像 李华
网站建设 2026/7/11 12:12:31

使用 GloVe 嵌入破解《代号》

原文:towardsdatascience.com/hacking-codenames-with-glove-embeddings-0cf928af0858?sourcecollection_archive---------7-----------------------#2024-07-16 使用基于 GloVe 嵌入的算法,在流行派对游戏《代号》中实现 100%的准确性。 https://jian…

作者头像 李华
网站建设 2026/7/11 12:53:11

在维度建模中处理层级

原文:towardsdatascience.com/handling-hierarchies-in-dimensional-modeling-176156f20f61 对于层级,存在各种建模技术。它们在数据仓库的维度建模中哪一个表现最佳?以及如何使用它们来处理各种类型的层级?让我们来探究一下。 层…

作者头像 李华