使用OpenCV fitEllipse进行圆拟合是否有效。
fitEllipse()返回cv::RotatedRect
如何平均宽度和高度以获得拟合的圆半径?
答案 0 :(得分:3)
我认为使用cv::fitEllipse
拟合圆的“有效性”取决于拟合所需的精度。
例如,您可以在测试集上运行算法,使用cv::fitEllipse
拟合点并记录椭圆的两个轴的长度,然后查看两个轴的比率分布,或者在主轴和短轴之间的差异;你可以找到你认为的圈子与圈子的差异,然后评估你是否可以使用cv::fitEllipse
。
您可以获取cv::RotatedRect
返回的cv::fitEllipse
的宽度和高度的平均值,以获得圆的直径的近似值(您编写了< em> radius 但我认为这是一个微不足道的错误。)
你可以看看这篇非常易读的文章 UMBACH, Dale; JONES, Kerry N. A few methods for fitting circles to data. Instrumentation and Measurement, IEEE Transactions on, 2003, 52.6: 1881-1885.并编写自己的圆内插器。
如果你想最小化几何误差(从点到圆的距离的平方和,如文章的介绍中所述)你可能需要一个可靠的实现非线性最小化算法。
否则你可以用(II.8)到(II.15)中的公式(a closed-form solution编写一个简单的圆内插器,它最小化一个不同于几何的误差)并带有一些警告:
答案 1 :(得分:-1)
圆拟合功能:minEnclosingCircle