gpt4 book ai didi

python - 一像素宽曲线的曲率

转载 作者:太空宇宙 更新时间:2023-11-03 14:02:00 27 4
gpt4 key购买 nike

我有一个 numpy 数组,描绘了一条单像素宽、离散、连接 曲线。这条曲线是通过图像处理的骨架化操作得到的。我试图找到上述曲线在任意点的曲率,以检测弯曲/扭结(具有高曲率值)。

我尝试使用 general formula for curvature 实现上述内容.但是,由于这是一条像素化的离散曲线,其生成函数未知,因此我尝试改用 numpy gradient

我在上面看到的问题是,由于曲线是一个像素宽,因此在任何点上斜率都可以仅是 0、1 或 无穷大之一。结果,我得到的曲率值大多没有意义或无用。

我正在寻找一些关于从哪里开始的建议,以便从上面得到一条平滑的曲线,这样我就可以以更有意义的方式计算曲率。有人可以建议我可以应用任何数学运算或卷积来实现相同的目的吗?下面是我拥有的代表性二值图像。

Curvature of One-pixel Wide Image

附言我对图像处理非常非常陌生,因此引用标准算法(在数学书籍中)或库实现会非常有帮助。

最佳答案

执行此操作的一种既定方法是使用两个或多个相邻点将低阶参数曲线拟合到每个骨架化点。然后使用带解析公式的拟合曲线参数计算该点的曲率。可以使用多种曲线模型。两个主要模型是:

  1. 。曲率半径 R 是曲率的倒数。对于曲线,它等于最接近该点曲线的圆弧的半径。您可以使用各种方法将圆拟合到一组二维数据点。已实现多个的 python 库是 here .
  2. 二次方程。这可以拟合到点及其邻居,然后可以通过曲线的二阶微分来估计曲率here .您可以使用 numpy.polyfit 来拟合这个模型。一个简单的策略是首先通过拟合局部线(例如使用 1 阶曲线的 polyfit)来估计该点的切向量。您旋转这些点以使切线向量与 x 轴对齐。最后,您使用 polyfit 将一维二次 f(x) 拟合到旋转点。

制作任何曲率估计器的棘手之处在于可以在不同的尺度上估计曲率。例如,我是否希望我的估算器对高频细节敏感,或者这实际上是噪声?这个决定体现在邻域大小的选择上。太小,噪声和离散化造成的误差会导致估计不稳定。但是太大,可能会出现很大的建模误差(通过将曲线逼近为参数函数而产生的误差)。通常,您必须自己选择最佳邻域大小。

您还会对交界点的曲率进行一些较差的估计,但这在很大程度上是不可避免的,因为那里的曲率没有明确定义。一种简单的解决方法是在交汇点分割所有路径,然后分别估计每条路径的曲率。

关于python - 一像素宽曲线的曲率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48322740/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com