• 三次B样条曲线拟合算法


    1 三次B样条曲线方程

    B样条曲线分为近似拟合和插值拟合,所谓近似拟合就是不过特征点,而插值拟合就是通过特征点,但是插值拟合需要经过反算得到控制点再拟合出过特征点的B样条曲线方程。这里会一次介绍两种拟合算法。首先介绍B样条的曲线方程。

    B样条曲线的总方程为:

    其中P是控制曲线的特征点,Fi,k(u)则是K阶B样条基函数。

    1.1 三次B样条曲线方程中基函数为:


    其中 表示阶乘。化成看的明白的式子就是(以四个控制点为例):

    将图片上的基函数代入到方程(1)中,就是:


    方程(3)就是三次B样条曲线方程。上式(2)的j是什么意思,其实j就是控制点的索引值。这里我把书上的公式摘抄下来,可能看起来更为清晰。参考书籍:《计算机图形学 第3版》何援军 第13章

    三次B样条曲线计算

    2 三次B样条曲线近似拟合 

    近似拟合很简单。不需要求控制点,求得, 由上述方程(3),代入就可以得到由这四个点近似拟合的一段三次B样条曲线,起始点在P 0,终点在P 1,对于闭合轮廓,最后一段可以取前两点做辅助,拟合实验结果我最后一块给出。这种近似拟合曲线光滑,但是最大不足就是不过特征点,也就是不过P i ​ ,需要过点需要反求控制点再拟合。

    3 三次B样条插值拟合

    插值拟合较为复杂。其实也不算是很复杂,找资料过程和理解过程是一个复杂的过程。不过有了前面大神做工作,我们只是借用别人的成果写代码就好了。我给大家看一篇论文,大家可以百度或者去知网搜索,闭合 B 样条曲线控制点的快速求解算法及应用。文章讲解了反求控制点的具体步骤,写的非常详细,基本上贴近代码的那种。大家可以根据这篇论文反求控制点,拟合出来的三次B样条曲线是经过P i 。代码就不放了,很多,可以根据我给的那篇论文直接编写相应代码,有问题可以私信我,知无不言。

    4 拟合结果

     

    原轮廓

    近似拟合轮廓。可以看到没过黑色特征点,只是近似拟合

     

     插值拟。可以看到曲线经过黑色特征点,不过有一些不足之处。

     5 总结

     三次B样条曲线拟合轮廓效果还是可以,较之Beizer(可以参考我博客三次Beizer曲线拟合算法),B样条将一些细节描述的很好,很多细节之处都贴近原轮廓,但是有一些不足之处,可以看到对直线拟合效果不是很好。两篇博客都是关于闭合轮廓的拟合,对于非闭合或者只是一段曲线拟合,还有一种曲线是很好的,《数值分析》提到过,叫三次样条插值拟合,拟合效果很好,我做过拟合一元三次方程曲线,拟合效果跟原曲线非常贴近,不过过程中需要用到追赶法,而追赶法需要满足一个条件,对于闭合曲线三次样条插值是不满足这个条件的,所以我没去深研究,大家可以去试一试。谢谢大家!

    原文链接:https://blog.csdn.net/liumangmao1314/article/details/54588155

  • 相关阅读:
    CSS hack:区分IE6,IE7,firefox
    十句CSS学习顺口溜
    div css表单布局的五个小技巧
    最常用的10种CSS BUG解决方法与技巧浏览器兼容教程
    最全的CSS浏览器兼容问题
    10款浏览器CSS Reset的方法
    [MySQL技巧]INSERT … ON DUPLICATE KEY UPDATE(转)
    新手写css常犯的8个错误
    如何在页面中插入播放器
    NicTeX 网络数学公式可视化编辑器
  • 原文地址:https://www.cnblogs.com/zhjblogs/p/16126204.html
Copyright © 2020-2023  润新知