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: http://www.whudj.cn/?p=450

Fun with geometry:  http://www.whudj.cn/?p=623

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章