news 2026/6/23 22:30:27

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

作者头像

张小明

前端开发工程师

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/6/23 17:31:11

8个AI写作工具,专科生轻松搞定论文格式规范!

8个AI写作工具,专科生轻松搞定论文格式规范! AI 写作工具,让论文写作不再难 在当前的学术环境中,越来越多的专科生开始借助 AI 写作工具来提升论文写作效率。这些工具不仅能帮助学生快速完成初稿,还能有效降低 AIGC …

作者头像 李华
网站建设 2026/6/22 22:47:02

使用 Python 动手实践全局优化方法

原文:towardsdatascience.com/hands-on-global-optimization-methods-with-python-07bff0e584a9 想象一下和你的最佳朋友出去。你决定去一个你从未去过但你的朋友去过的地方。 此外,想象一下你在一个交通有点问题的城市,比如罗马&#xff08…

作者头像 李华
网站建设 2026/6/23 17:26:14

如图,红框是新版QQ,右边是旧版QQ

如图,红框是新版QQ,右边是旧版QQ。终于知道为啥要开发 【怀旧QQ】界面了,新版QQ确实用的人少。新QQ之前做了一些流氓动作:【强制下载】、【静默下载】,三天两头诱导你下载,电脑一开机就自动下载新版QQ&…

作者头像 李华
网站建设 2026/6/23 17:33:29

LobeChat差分隐私保护机制设计

LobeChat差分隐私保护机制设计 在企业级AI应用日益普及的今天,用户与大语言模型(LLM)之间的每一次对话都可能潜藏隐私风险。一个看似普通的提问——“我最近心悸怎么办?”背后是健康信息;一句“工资条里的补贴怎么算&a…

作者头像 李华
网站建设 2026/6/23 17:27:54

《gdb 与 cgdb 深度解析:命令行调试的效率革命》

在图形化调试工具普及的今天,为何资深开发者仍偏爱 gdb/cgdb?答案很简单:极致的灵活性、跨平台兼容性,以及对底层逻辑的深度掌控力。gdb 凭借丰富的命令集,能应对从用户态到内核态、从单机到分布式的各类调试场景&…

作者头像 李华
网站建设 2026/6/23 17:30:30

国产时序数据库崛起:金仓凭什么在复杂场景中碾压InfluxDB

在物联网、工业互联网与智能运维高速发展的当下,时序数据的处理需求正呈指数级增长。从设备监控到智能决策,企业对数据库的要求早已不再局限于“能写能查”,而是追求高吞吐、低延迟、强一致性以及多维度分析能力。过去,InfluxDB凭…

作者头像 李华