news 2026/3/8 5:34:21

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

作者头像

张小明

前端开发工程师

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/3/4 17:50:42

10 个AI论文工具,助研究生高效完成毕业论文!

10 个AI论文工具,助研究生高效完成毕业论文! AI 工具如何助力研究生高效完成论文 在当今科研环境日益激烈的背景下,研究生们面临着越来越高的学术要求。从选题到写作,再到查重与修改,每一个环节都可能成为耗时耗力的挑…

作者头像 李华
网站建设 2026/3/2 7:36:19

GraphMuse:一个用于符号音乐图形处理的 Python 库

原文:towardsdatascience.com/graphmuse-a-python-library-for-symbolic-music-graph-processing-40dbd9baf319?sourcecollection_archive---------3-----------------------#2024-10-17 是的,音乐和图形确实能结合! https://manoskary.med…

作者头像 李华
网站建设 2026/2/9 5:14:52

AI Agent的可解释性设计原则

AI Agent的可解释性设计原则关键词:AI Agent、可解释性、设计原则、透明度、责任性摘要:本文聚焦于AI Agent的可解释性设计原则。随着AI Agent在各个领域的广泛应用,其决策过程的可解释性变得至关重要。文章首先介绍了相关背景,包…

作者头像 李华
网站建设 2026/3/6 1:40:01

LobeChat监控指标采集方案:Prometheus+Grafana集成

LobeChat监控指标采集方案:PrometheusGrafana集成 在AI应用日益深入日常的今天,像LobeChat这样的智能对话平台已不再只是“能聊几句”的玩具,而是承载着真实业务逻辑的关键入口——从企业客服到个人助手,用户对响应速度、稳定性与…

作者头像 李华
网站建设 2026/3/6 20:37:46

[PM]十种项目管理方法详细介绍

十种项目管理方法详细介绍1. 瀑布模型 (Waterfall)方法概述瀑布模型是最传统的项目管理方法,由Winston Royce于1970年首次提出。该方法采用线性顺序的方式推进项目,将项目划分为多个不可重叠的阶段,每个阶段必须完成后才能进入下一阶段。典型…

作者头像 李华