Python 旋转不变曲线拟合

Python 旋转不变曲线拟合,python,opencv,image-processing,curve-fitting,Python,Opencv,Image Processing,Curve Fitting,我正在尝试构建一个python应用程序,该应用程序检查由一条直线和一条曲线组成的部分,如图所示。目标是找到弯曲截面的曲率和弧长。到目前为止,我的方法是通过门槛和Skelotenze得出一系列的分数。然后,我使用最小二乘拟合来拟合由直线和圆弧组成的分段数学函数。这对于水平部件非常有效 但是,如果零件的放置方式使直线段与水平轴不平行,我会遇到问题。到目前为止,我的解决方案是在图像的左四分之一处拟合一条直线,以检测直线段的坡度。在进行最小二乘拟合时,我会加入这个因子,即将mx+b添加到分段函数中。这将

我正在尝试构建一个python应用程序,该应用程序检查由一条直线和一条曲线组成的部分,如图所示。目标是找到弯曲截面的曲率和弧长。到目前为止,我的方法是通过门槛和Skelotenze得出一系列的分数。然后,我使用最小二乘拟合来拟合由直线和圆弧组成的分段数学函数。这对于水平部件非常有效

但是,如果零件的放置方式使直线段与水平轴不平行,我会遇到问题。到目前为止,我的解决方案是在图像的左四分之一处拟合一条直线,以检测直线段的坡度。在进行最小二乘拟合时,我会加入这个因子,即将mx+b添加到分段函数中。这将产生一个接近的结果

我在这个方法中发现的错误其实很有趣。最小二乘拟合尝试最小化平面零件和旋转零件的y轴误差。对于水平零件来说,这很好,但是对于旋转零件,误差实际上应该定义为数据和垂直于直线段的曲线之间的距离,以便在两种情况下测量相同的误差

在这个问题的总体设计方面的任何帮助都将不胜感激。我不认为模板匹配是一个好的解决方案,因为我的零件有不同的参数,如曲率、弧长

下面是一个直线段为水平线的示例:


如果您提供一个数字示例,例如直线段不是水平线的“坏情况”的x、y坐标,这会很有帮助。@特斯拉如果您知道直线段的角度,您可以按照此处的说明旋转图像,这可以通过正交距离回归来完成。看看scip.optimize.odrIt实际上是scipy.odr: