python – 一个像素宽的曲线的曲率
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 一个像素宽的曲线的曲率,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1704字,纯文字阅读大概需要3分钟。
内容图文
我有一个numpy数组描绘了一个像素宽,离散,连通的曲线.该曲线通过图像处理的Skeletonization操作获得.我试图在任意点找到上述曲线的曲率,以检测弯曲/扭结(具有高曲率值).
我尝试使用general formula for curvature实现上述.但是,由于这是一个像素化的离散曲线,其生成函数未知,我试图求助于使用numpy渐变.
我在上面看到的问题是,由于曲线是一个像素宽,在任何点,斜率只能是0,1或无穷大中的一个.结果,我得到的曲率值大多没有意义或无用.
我正在寻找一些建议,从哪里开始,以便从上面得到一条平滑的曲线,这样我就可以用更有意义的方式计算曲率.有人可以建议我可以应用任何数学运算或卷积来实现同样的目标吗?下面是我的代表性二进制图像.
附:我对图像处理非常非常新,所以对标准算法(数学书籍)或库实现的引用会非常有用.
解决方法:
一种确定的方法是使用两个或多个相邻点将低阶参数曲线拟合到每个骨架化点.然后使用拟合曲线参数和分析公式计算该点的曲率.可以使用几种曲线模型.两个主要模型是:
>一个圆圈.曲率半径R是曲率的倒数.对于曲线,它等于圆弧的半径,该半径最接近该点处的曲线.您可以使用各种方法将圆圈拟合到一组2D数据点.已实现多个的python库是here.
>二次方.这可以适用于该点及其邻居,然后可以通过曲线here的二阶微分估计曲率.您可以使用numpy.polyfit来拟合此模型.一种简单的策略是首先通过拟合局部线(例如,使用1阶曲线的polyfit)来估计该点处的切向量.旋转点以使切线向量与x轴对齐.最后,使用polyfit将1D二次f(x)拟合到旋转点.
制作任何曲率估计器的棘手之处在于可以在不同的尺度上估计曲率.例如,我是否希望我的估算器对高频细节敏感或者这实际上是噪声?这个决定体现在邻里大小的选择上.太小,来自噪声和离散化的误差导致估计不稳定.但是太大,并且可能存在大的建模误差(通过将曲线近似为参数函数而出现误差).一般来说,你必须自己选择最好的邻里大小.
你也会在连接点处得到一些不良的曲率估计值,但这在很大程度上是不可避免的,因为那里的曲率没有明确定义.一个天真的修复可能是在连接点处分割所有路径,然后单独估计每个路径上的曲率.
内容总结
以上是互联网集市为您收集整理的python – 一个像素宽的曲线的曲率全部内容,希望文章能够帮你解决python – 一个像素宽的曲线的曲率所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。