You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

给定ℝ²中3个及以上近似圆弧点,求解最优圆的技术方案咨询

嘿,这个问题我在做视觉检测和点云处理的时候经常碰到!用最小二乘拟合最优圆确实是个既严谨又容易实现的方案,我给你一步步拆解清楚:

用最小二乘拟合最优圆的完整流程

第一步:把圆的方程转成线性形式

我们从圆的基本定义出发,对于每个采样点$(x_i, y_i)$,它满足:

$(x_i - X_c)^2 + (y_i - Y_c)^2 = R^2$

把左边展开后整理一下:
$x_i^2 - 2x_iX_c + X_c^2 + y_i^2 - 2y_iY_c + Y_c^2 = R^2$

接下来把所有项移到同一侧,把含$x_i$、$y_i$的项和常数项分开,就能得到一个线性化的方程:
$x_i(-2X_c) + y_i(-2Y_c) + 1 \cdot (X_c^2 + Y_c^2 - R^2) = x_i^2 + y_i^2$

这里的关键技巧是引入三个新变量,把非线性问题转化为我们熟悉的线性回归问题:
令 A = -2X_c,B = -2Y_c,C = X_c² + Y_c² - R²,那么方程就简化成:
A·x_i + B·y_i + C = x_i² + y_i²

第二步:用最小二乘求解线性参数A、B、C

现在问题变成了:找到最优的A、B、C,让所有点的(A·x_i + B·y_i + C) - (x_i² + y_i²)的平方和最小——这就是标准的线性最小二乘问题。

假设我们有n个点(n≥3),可以把所有点的方程写成矩阵形式:

[ x₁  y₁  1 ]   [A]   [x₁² + y₁²]
[ x₂  y₂  1 ]   [B] = [x₂² + y₂²]
[ ... ... ... ] [C]   [ ...      ]
[ xₙ  yₙ  1 ]         [xₙ² + yₙ²]

用符号表示就是 $M \cdot \vec{θ} = \vec{b}$,其中$\vec{θ} = [A,B,C]^T$,$\vec{b}$是每个点的$x_i²+y_i²$组成的向量。

最小二乘的解可以通过矩阵运算得到:
θ = (M^T · M)⁻¹ · M^T · b

这里要注意:只要你的点不是完全共线的(共线的话拟合出来是直线,不是圆),矩阵$M^T · M$就是可逆的,不会出现无解的情况。

第三步:从线性参数还原圆心和半径

解出A、B、C之后,我们就能反推回圆的原始参数了:

  • 圆心坐标:$X_c = -A/2$,$Y_c = -B/2$
  • 半径:$R = \sqrt{X_c² + Y_c² - C}$

实际开发的小提醒

  • 如果你的点集存在严重的共线情况,这个方法会失效(矩阵奇异),所以实际代码里最好加个共线性检查,或者捕获矩阵求逆失败的异常。
  • 这个方法是代数距离最小化的拟合,和点到圆的几何垂直距离最小化略有差异,但对于大多数工程场景(比如图像特征点拟合、激光点云圆弧提取),精度已经足够。如果需要更高精度的几何拟合,可以把这个结果作为初始值,用高斯-牛顿法做迭代优化。

内容的提问来源于stack exchange,提问作者BCS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:36:10