使用OpenCV fitEllipse进行圆拟合是否有效。fitEllipse()返回cv::RotatedRect
,取宽度和高度的平均值来拟合圆半径怎么样?
发布于 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 )编写一个简单的圆内插器,并显示一些警告:
发布于 2012-12-07 23:18:07
有一个圆拟合函数:minEnclosingCircle
https://stackoverflow.com/questions/13760110
复制相似问题