news 2026/4/16 13:30:07

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

作者头像

张小明

前端开发工程师

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/4/16 8:59:18

9个AI论文工具,MBA轻松搞定毕业写作!

9个AI论文工具,MBA轻松搞定毕业写作! AI 工具助力论文写作,MBA 也能轻松应对 在当前学术研究日益数字化的背景下,AI 工具正逐渐成为 MBA 学习和毕业写作的重要助手。无论是撰写商业案例分析、市场调研报告,还是完成完整…

作者头像 李华
网站建设 2026/4/16 10:44:16

MATLAB 心电信号去噪

基于MATLAB 的心电信号去噪可以通过多种方法实现,常见的方法包括小波阈值去噪、数字滤波去噪等。 MATLAB 实现结合了小波阈值去噪方法。 MATLAB 心电信号去噪 1. 小波阈值去噪方法 小波阈值去噪是一种有效的心电信号去噪方法,特别适用于处理非平稳信号。…

作者头像 李华
网站建设 2026/4/16 10:44:59

Ansible进行Nginx编译安装的详细步骤

一、实验环境 二、实验步骤 安装ansible [rootlocalhost ~]# hostnamectl set-hostname ansible [rootlocalhost ~]# bash [rootansible ~]# yum install epel-release -y [rootansible ~]# yum install ansible -y 添加主机清单 [rootansible ~]# cd /etc/ansible/ [rootans…

作者头像 李华
网站建设 2026/4/16 10:41:58

使用人工智能构建虚拟房产顾问的实战

原文:towardsdatascience.com/hands-on-building-a-virtual-property-consultant-using-artificial-intelligence-95c2530bf855 https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/cad6285e88702563ba4ea9e69ca3eaad.png 作者使用…

作者头像 李华
网站建设 2026/4/16 10:39:14

Python+Vue的流浪动物管理系统_ Pycharm django flask

这里写目录标题项目介绍项目展示详细视频演示感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人技术栈文章下方名片联系我即可~解决的思路…

作者头像 李华