首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用OpenCV fitEllipse()进行圆拟合

使用OpenCV fitEllipse()进行圆拟合
EN

Stack Overflow用户
提问于 2012-12-07 17:19:54
回答 2查看 15.3K关注 0票数 7

使用OpenCV fitEllipse进行圆拟合是否有效。fitEllipse()返回cv::RotatedRect,取宽度和高度的平均值来拟合圆半径怎么样?

EN

回答 2

Stack Overflow用户

发布于 2013-07-24 04:27:27

我认为使用cv::fitEllipse拟合圆的“有效性”取决于拟合所需的精度。

例如,您可以在测试集上运行算法,使用cv::fitEllipse拟合点并记录椭圆的两个轴的长度,然后查看两个轴的比率的分布或长轴和短轴之间的差异;您可以找出假设的圆与圆的差异,然后评估是否可以使用cv::fitEllipse

您可以取cv::fitEllipse返回的cv::RotatedRect的宽度和高度的平均值,以获得圆直径的近似值(您写的是半径,但我认为这是一个微不足道的错误)。

你可以看看这篇可读性很强的文章UMBACH, Dale; JONES, Kerry N. A few methods for fitting circles to data. , 2003, 52.6: 1881-1885.,然后写出你自己的圆插值器。

如果您想要最小化几何误差(从点到圆的距离的平方和,如本文介绍中所述),您可能需要一个可靠的非线性最小化算法的实现。

否则,您可以使用公式(II.8.8)到(II.8.15)(一个最小化与几何误差不同的closed-form solution )编写一个简单的圆内插器,并显示一些警告:

  1. 从实现的角度来看,你必须注意通常关于舍入误差和截断误差的警告。
  2. 封闭形式的解决方案在出现离群点的情况下不够健壮,在这种情况下,你可能需要实现一个健壮的插值器,比如RANSAC (随机选择三个点,用Weisstein, Eric W. "Circle." From --A Wolfram Web Resource (25)到(34)的公式用这三个点插一个圆,计算共识并迭代)。此警告也适用于几何误差最小化的圆。
票数 3
EN

Stack Overflow用户

发布于 2012-12-07 23:18:07

有一个圆拟合函数:minEnclosingCircle

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13760110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档