本文主要是介绍PCL下三维线形点云的B样条插值开发流程example,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
好多有关B样条插值的博客写的只是部分内容,一上来就是基函数,没有写整个pipeline,一开始看的我是一脸懵逼,我大概梳理一下开发过程,细节不讲,注意这个博客只针对开发需求做B样条插值,是插值!
1. 开发需求:
基于PCL的数据结构对无序点云自动排序;
基于PCL进行3维线条形点云插值,要求穿过每个线条形点云的三维点;
2. B样条插值种类:
2.1 分段贝塞尔曲线:B样条和NURBS的基础;
2.2 均匀B样条;
2.3 准均匀B样条:首尾节点阶数+1的样条;
2.4 非均匀有理B样条曲线(NURBS):高阶玩家发明的B样条,我也不会;
建议看下大神的博客,见参考文献1
3. pipeline:
3.1 计算控制点[P0,..,Pn],见参考文献2
3.1.1 求[u0,...,un]
3.1.2 求N矩阵
通过基函数和边界求导(矩阵欠定义了,根据三点估算导数/bessel tangent)把N矩阵填好
3.1.3 求F矩阵
源点云和边界求导填入F矩阵
3.1.4 求控制点
最后把控制点求出来
3.2 求插值点
有了控制点Pi和节点列表ui,自己要有一个插值点列表(我的插值点是3.1.1求的Un除以某个用户输入的点数要求,即准均匀B样条插值),首先判断插值点列表的插值点在节点列表的哪个位置,然后带到
求解C(k)
参考文献
Fun with geometry: NURBS(一): 动机、定义以及历史漫谈 - Fun With GeometryFun With Geometry
Fun with geometry: B-Spline(十):样条曲线拟合-插值(Interpolation) - Fun With GeometryFun With Geometry
这篇关于PCL下三维线形点云的B样条插值开发流程example的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!