OpenCV与Qt5开发卡尺找圆工具

文章目录


基于OpenCV与Qt5构建卡尺找圆工具

前言

博主近期基于海康Vision Master4.0做了一个工业视觉工程项目,其中就使用到了海康VM的找圆工具,然后博主根据其中的技术原理,也仿照开发了一个类似的功能,基于OpenCV和Qt5构建一个卡尺找圆的工具。卡尺找圆是在计算机视觉领域中常用的技术,用于检测图像中的圆形目标,广泛应用于工业自动化、机器人导航等领域。

卡尺拟合直线参考博主的利用OpenCV与Qt5构建卡尺拟合直线工具(C++实现)


一、卡尺原理

卡尺的原理就是找N个小矩形ROI里面的灰度值突变的地方。即:遍历每个小矩形ROI,分别找到1个点,这个点是灰度突变的峰值。然后把这N个点拟合成直线或者圆。

二、1D边缘提取

  1. 通过Qt5构建一个卡尺圆查找工具形状,由一个个矩形工具构建;

  2. 对平均灰度值(轮廓)进行高斯滤波,目的是让曲线更平滑,消除噪点;

  3. 对平滑后的轮廓求一阶导数;

  4. 根据设置的参数提取边缘点。

三、圆拟合

圆拟合是一种用于从给定的离散点集合中拟合出一个最佳的圆形的方法。它在许多领域中都有广泛的应用,例如计算机视觉、几何建模等。

圆拟合的原理通常基于最小二乘法,旨在找到一个圆形模型,使得给定的点集与该圆形模型之间的残差平方和最小。其步骤如下:

  1. 数据预处理:首先,对于输入的离散点集合,可以进行一些必要的预处理操作,例如去除异常值或噪声点,确保数据质量。

  2. 初始圆形模型估计:为了得到初始的圆形模型,通常可以通过其中的几个点计算出初始的圆心位置和半径估计值。这可以使用一些简单的方法,如三点定圆法(经过任意三个非共线点确定一个圆)或最小二乘法拟合一个初始圆。

  3. 最小二乘拟合:在得到初始的圆形模型估计后,使用最小二乘法来优化拟合结果。最小二乘法通过迭代的方式调整圆心位置和半径的值,使得拟合误差最小化。

  4. 残差计算和优化:在每次迭代中,根据当前的圆心位置和半径,计算每个点到圆的距离,然后将这些距离的平方和作为拟合误差的度量。根据拟合误差,通过优化算法(如非线性最小二乘法或梯度下降法)更新圆心和半径的值。

  5. 收敛判断:对于每次迭代,可以设定一个收敛条件,当满足条件时停止迭代,得到最终的圆形模型。

需要注意的是,圆拟合方法的性能和效果取决于离散点集的分布和噪声程度。对于噪声较多或存在异常点的情况,可能需要使用一些鲁棒性更好的拟合方法,例如 RANSAC(随机抽样一致性)算法来估计圆形模型。

四、软件实现

未使用商业图像处理库,而是纯粹Qt5+OpenCV

  1. 选择要查找圆的图像

  2. 绘制一个矢量圆查找工具

  3. 圆查找

    4.与海康Vision Master对比

    海康Vision Master卡尺工具计算: 圆半径是233.628,圆心(831.874,504.140)

    博主开发的卡尺找圆工具计算 圆半径是233.125,圆心(831.584,503.827)

结束语

由于博主能力有限,本篇文章中提及的方法,也难免会有疏漏之处,希望您能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。

相关推荐
TMT星球15 分钟前
WAIC 2026:联想以混合式AI构建词元全链路,释放创新生产力
人工智能
东方佑1 小时前
FRSMASH v3.7 @ 60M × 三问过滤器 实验
人工智能
tntxia3 小时前
正则化在机器学习中的作用
人工智能
fuquxiaoguang7 小时前
中间件的“价值重估”:传统同质化竞争终结,AI智能编排时代开启
人工智能·中间件
触底反弹8 小时前
🔥 前端也能玩转 AI 流式输出!从二进制流到打字机效果,一篇讲透
javascript·人工智能·node.js
腾渊信息科技公司8 小时前
工业数据运维痛点根治方案:基于AI Agent的产线自动化台账系统落地
运维·人工智能·自动化·个人开发·ai编程
西安老张(AIGC&ComfyUI)8 小时前
第030章:ComfyUI视频制作LTX-2.3模型文生视频工作流详解(三)
人工智能·aigc·comfyui
苦猿的大模型日记8 小时前
Day25 | 模型量化横评 GPTQ vs AWQ vs GGUF vs INT8——同一个 Qwen3-8B 压四遍,谁还活着
人工智能
benchmark_cc9 小时前
如何用 Python + QuantDash 快速构建高胜率“配对交易(Pairs Trading)”策略?
开发语言·人工智能·python·pandas·量化交易·quantdash
深海鱼肝油ya9 小时前
小说自动生成系统(二)
人工智能·大模型·agent·智能体·自动化编程·小说生成系统