https://www.cnblogs.com/icmzn/p/5100761.html
基函數(shù)
這里討論B-spline Basis Functions
設(shè)U 是m + 1個非遞減數(shù)的集合敛苇,u0 <= u2 <= u3 <= ... <= um千扶。ui稱為節(jié)點(knots), 集合U 稱為節(jié)點向量(knot vector), 半開區(qū)間[ui, ui+1) 是第i個節(jié)點區(qū)間(knot span)。注意某些ui可能相等,某些節(jié)點區(qū)間會不存在。如果一個節(jié)點 ui 出現(xiàn) k 次 (即,ui = ui+1 = ... = ui+k-1), 其中 k > 1, ui 是一個重復(fù)度(multiplicity)為k 的多重節(jié)點,寫為 ui(k)。 否則咳胃,如果ui只出現(xiàn)一次,它是一個簡單節(jié)點旷太。如果節(jié)點等間距(即展懈, ui+1 - ui 是一個常數(shù),對 0 <= i <= m - 1)供璧,節(jié)點向量或節(jié)點序列稱為均勻的存崖;否則它是非均勻的。
為了定義B-樣條基函數(shù)嗜傅,我們還需要一個參數(shù)金句,基函數(shù)的次數(shù)(degree)p,第i個p次B-樣條基函數(shù)吕嘀,寫為Ni,p(u)违寞,遞歸定義如下:
bs-basis[1].jpg
上述公式通常稱為Cox-de Boor遞歸公式。 這個定義看起來很復(fù)雜偶房;但是不難理解趁曼。如果次數(shù)(degree)為零(即, p = 0)棕洋,這些基函數(shù)都是階梯函數(shù)挡闰,這也是第一個表達式所表明的。即掰盘,如果u是在第i個節(jié)點區(qū)間[ui, ui+1)上基函數(shù)Ni,0(u)是1摄悯。 例如,如果我們有四個節(jié)點u0 = 0, u1 = 1, u2 = 2和 u3 = 3, 節(jié)點區(qū)間 0, 1 和2是[0,1), [1,2), [2,3)愧捕,0次基函數(shù)是N0,0(u) = 1 在 [0,1) 奢驯,在其它區(qū)間是0;N1,0(u) = 1 在 [1,2)上次绘,在其它區(qū)間是0瘪阁;N2,0(u) = 1在[2,3)上撒遣,其它區(qū)間是0。如下圖所示:
bs-basis-0[1].jpg
為了理解p大于0時計算Ni,p(u)的方法管跺,我們使用三角計算格式义黎。所有節(jié)點區(qū)間列在左邊(第一)列,所有零次基函數(shù)在第二列豁跑。見下圖廉涕。
bs-scheme[1].jpg
兩個重要的觀察
因為 Ni,1(u) 是從 Ni,0(u) 和 Ni+1,0(u)計算的而 因為Ni,0(u)和Ni+1,0(u) 在區(qū)間[ui, ui+1)和[ui+1, ui+2)分別是非零的,Ni,1(u) 在這兩個區(qū)間都是非零的艇拍。換句話說火的,Ni,1(u)在[ui, ui+2)上是非零的。相似地淑倾,因為 Ni,2(u) 依賴于Ni,1(u) 和Ni+1,1(u)且因為這兩個基函數(shù)在[ui, ui+2)和[ui+1, ui+3)分別是非零的,Ni,2(u)在[ui, ui+3)上非零征椒〗慷撸總之,為確定基函數(shù)Ni,p(u), 的非零定義域勃救,可以追溯到三角計算格式直到回到第一列碍讨。例如,假設(shè)我們想找到 N1,3(u)的非零定義域蒙秒〔颍基于上述討論,我們可從西北和西南方向追溯直到第一列為止晕讲,如下圖中藍色虛線所示覆获。因此 N1,3(u)在 [u1, u2), [u2, u3), [u3, u4) 和[u4, u5)上是非零的∑笆。或弄息,相等地,它在[u1, u5)上非零勤婚。
總之摹量,我們有下列觀察:
基函數(shù) Ni,p(u)** 在[ui, ui+p+1)****上非零÷ǎ或缨称,相等地,Ni,p(u)** 在 p+1****個節(jié)點區(qū)間[ui, ui+1), [ui+1, ui+2), ..., [ui+p, ui+p+1)****上非零祝迂。**
接著睦尽,我們看相反的方向。給定一個節(jié)點區(qū)間[ui, ui+1),我們想知道哪個基函數(shù)會在計算中使用這個區(qū)間液兽。我們可以以這個節(jié)點區(qū)間開始并畫一個西北界限箭頭和一個西南界限的箭頭骂删。所有封閉在楔形里的基函數(shù)使用 Ni,0(u)(為什么掌动?)因此在該區(qū)間是非零的。因此宁玫,所有在[ui, ui+1)上非零的p 次基函數(shù)是這個楔形和包含所有Ni,p(u) 的列的交集粗恢。實際上,這一列和兩個箭頭形成一個等邊三角形欧瘪,而這一列是垂直邊眷射。 從 Ni,0(u) 數(shù)到 Ni,p(u) 有p+1列。因此佛掖,等邊三角形的垂直邊至多有p+1 項妖碉,即 Ni,p(u), Ni-1,p(u), Ni-2,p(u), ..., Ni-p+2,p(u), Ni-p+1,p(u) 和Ni-p,p(u)。
讓我們看上圖芥被。為了找到所有3次在 [u4, u5) 上非零的基函數(shù)欧宜,畫出兩個箭頭和所有在垂直邊的函數(shù)是我們想要的。這個例子拴魄,是N1,3(u), N2,3(u), N3,3(u), 和N4,3(u).用黃色三角表示冗茸。藍色 (resp., 紅色) 三角顯示的是在[u3, u4) (resp., [u2, u3) )上非零的3次基函數(shù)。注意在[u2, u3)上只有3個3次基多項式匹中。.
總之夏漱,我們觀察到下列特性:
在任何一個節(jié)點區(qū)間 [ui, ui+1), 最多有 p+1個p 次基函數(shù)非零,即:Ni-p,p(u), Ni-p+1,p(u), Ni-p+2,p(u), ..., Ni-1,p(u) 和 Ni,p(u)顶捷。
系數(shù)的意義是什么?
最后挂绰,讓我們研究下Ni,p(u)定義中系數(shù)的意義。當計算 Ni,p(u) 時服赎,它使用Ni,p-1(u)和Ni+1,p-1(u)葵蒂。前者在 [ui, ui+p)上非零。如果u 是在這個半開區(qū)間专肪,那么u - ui 是u 和這個區(qū)間左端之間的距離刹勃,區(qū)間長度是ui+p - ui, ,而(u - ui) / (ui+p - ui) 是上述距離的比且在0和1之間嚎尤。見下圖荔仁。第二項,Ni,p-1(u)芽死,在[ui+1, ui+p+1)上非零乏梁。如果u 在該區(qū)間,那么ui+p+1 - u 是 u 到該區(qū)間右端的距離关贵,ui+p+1 - ui+1 是區(qū)間長度遇骑,而(ui+p+1 - u) / (ui+p+1 - ui+1) 是這兩個距離的比且值在0和1之間。因此, Ni,p(u) 是Ni,p-1(u) 和Ni+1,p-1(u)的線性組合揖曾,有兩個系數(shù)落萎,都在 u上是線性的亥啦,在0和1之間。