B-spline Curves 學習之B樣條基函數的定義與性質(2)

              B-spline Basis Functions:Definition

貝塞爾基函數用作權重。B-樣條基函數也一樣;但更復雜。但是它有兩條貝塞爾基函數所沒有的特性,即(1)定義域被節點細分(subdivided); (2) 基函數不是在整個區間非零。實際上,每個B樣條基函數在附近一個子區間非零,因此,B-樣條基函數相當“局部”。

  設U 是m + 1個非遞減數的集合,u0 <= u2 <= u3 <= ... <= umui稱爲節點(knots, 集合U 稱爲節點向量knot vector), 半開區間[uiui+1) 是第i個節點區間(knot span)。注意某些ui可能相等,某些節點區間會不存在。如果一個節點 ui 出現 k 次 (即,ui = ui+1 = ... = ui+k-1), 其中 k > 1, ui 是一個重複度(multiplicity)爲的多重節點,寫爲 ui(k)。 否則,如果ui只出現一次,它是一個簡單節點。如果節點等間距(即, ui+1 - ui 是一個常數,對 0 <= i <= m - 1),節點向量或節點序列稱爲均勻的;否則它是非均勻的。

   節點可認爲是分隔點,將區間[u0, um]細分爲節點區間。所有B-樣條基函數被假設定義域在[u0, um]上。在本文中,我們經常使用u0 = 0和um = 1,所以定義域是閉區間[0,1]。

爲了定義B-樣條基函數,我們還需要一個參數,基函數的次數(degree)pip次B-樣條基函數,寫爲Ni,p(u),遞歸定義如下:

    

上述公式通常稱爲Cox-de Boor遞歸公式。 這個定義看起來很複雜;但是不難理解。如果次數(degree)爲零(即, p = 0),這些基函數都是階梯函數,這也是第一個表達式所表明的。即,如果u是在第i個節點區間[uiui+1)上基函數Ni,0(u)是1。 例如,如果我們有四個節點u0= 0, u1 = 1, u2 = 2和 u3 = 3, 節點區間 0, 1 和2是[0,1), [1,2), [2,3),0次基函數是N0,0(u) = 1 在 [0,1) ,在其它區間是0;N1,0(u) = 1 在 [1,2)上,在其它區間是0;N2,0(u) = 1在[2,3)上,其它區間是0。如下圖所示:

  

       爲了理解p大於0時計算Ni,p(u)的方法,我們使用三角計算格式。所有節點區間列在左邊(第一)列,所有零次基函數在第二列。見下圖。

  

    爲了計算Ni,1(u),需要Ni,0(u)和Ni+1,0(u)。因此,我們可以計算N0,1(u), N1,1(u),N2,1(u), N3,1(u) 等等。所有這些Ni,1(u)寫在第三列。一旦所有Ni,1(u)計算完畢,我們可以計算Ni,2(u)並將其放在第四列。繼續這個過程直到所有需要的Ni,p(u)的計算完畢。

   上面我們獲得了針對節點向量 U = { 0, 1, 2, 3 }的N0,0(u), N1,0(u)和N2,0(u) 。現在計算N0,1(u)和N1,1(u)。要計算N0,1(u),因爲i = 0和p = 1,從定義出發有

  

  因爲u0 = 0, u1 = 1和u2 = 2,上式變爲

  

  因爲N0,0(u)在[0,1)上非零且N1,0(u)在[1,2)上非零,如果u在[0,1)上 (resp., [1,2) ), 只有N0,0(u) (resp.N1,0(u) )對N0,1(u)有貢獻。因此,如果u 在[0,1)上, N0,1(u) 是uN0,0(u) = u而如果u 在[1,2)上, N0,1(u)是 (2 - u)N1,0(u) = (2 - u)。相似的計算得到N1,1(u) = u - 1如果u 在[1,2)上, 而N1,1(u) = 3 - u 如果 u 在[2,3)上。下圖中,黑色和紅色線分別是N0,1(u)和  N1,1(u)。注意N0,1(u) (resp.N1,1(u))在[0,1) 和[1,2) 上(resp., [1,2) 和 [2,3))是非零的。

  

  一旦獲得N0,1(u)和N1,1(u),可以計算N0,2(u)。由定義得到下式:

  

  代入節點值得到

  

  注意 N0,1(u) 在 [0,1)和[1,2)上非零而N1,1(u) 在[1,2) 和 [2,3)上非零。因此,我們有三種情況要考慮:

(1) u 在 [0,1)上:
    這種情況,只有N0,1(u)對N0,2(u)的值有貢獻。因此,N0,1(u)是u, 得到

  

(2)u 在[1,2)上: 
    這種情況, N0,1(u)和N1,1(u)都對 N0,2(u)有貢獻。因此N0,1(u) = 2 - u 且N1,1(u) = u - 1 在[1,2)上,得到 

  

  【譯註:上式中間的式子的第二項應爲:0.5(3-u)(u-1)】

(3)u 在 [2,3)上: 
    這種情況,只有N1,1(u)對 N0,2(u)有貢獻。因此N1,1(u) = 3 - u 在[2,3)上,得到,

  

   如果我們畫出上述三種情況的曲線段,我們會看到兩個相鄰曲線段連接起來形成了在節點上的曲線。更確切地,第一種和第二種情況的曲線段在u = 1處連接起來,而第二種和第三種情況的曲線段在u = 2處連接起來。注意合成曲線是光滑的,但是如果節點向量包含多重節點通常就不是這樣的。              

                         

 

2. 兩個重要的觀察

  因爲 Ni,1(u) 是從 Ni,0(u) 和 Ni+1,0(u)計算的而 因爲Ni,0(u)和Ni+1,0(u) 在區間[ui,ui+1)和[ui+1, ui+2)分別是非零的,Ni,1(u) 在這兩個區間都是非零的。換句話說,Ni,1(u)在[uiui+2)上是非零的。相似地,因爲 Ni,2(u) 依賴於Ni,1(u) 和Ni+1,1(u)且因爲這兩個基函數在[uiui+2)和[ui+1, ui+3)分別是非零的,Ni,2(u)在[uiui+3)上非零。總之,爲確定基函數Ni,p(u), 的非零定義域,可以追溯到三角計算格式直到回到第一列。例如,假設我們想找到 N1,3(u)的非零定義域。基於上述討論,我們可從西北和西南方向追溯直到第一列爲止,如下圖中藍色虛線所示。因此 N1,3(u)在 [u1, u2), [u2,u3), [u3, u4) 和[u4, u5)上是非零的。或,相等地,它在[u1, u5)上非零。

  

  總之,我們有下列觀察:

   基函數 Ni,p(u在[uiui+p+1)上非零。或,相等地,Ni,p(u在 p+1個節點區間[uiui+1), [ui+1, ui+2), ..., [ui+pui+p+1)上非零。

    接着,我們看相反的方向。給定一個節點區間[uiui+1),我們想知道哪個基函數會在計算中使用這個區間。我們可以以這個節點區間開始並畫一個西北界限箭頭和一個西南界限的箭頭。所有封閉在楔形裏的基函數使用 Ni,0(u)(爲什麼?)因此在該區間是非零的。因此,所有在[uiui+1)上非零的p 次基函數是這個楔形和包含所有Ni,p(u) 的列的交集。實際上,這一列和兩個箭頭形成一個等邊三角形,而這一列是垂直邊。 從 Ni,0(u) 數到 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) 上非零的基函數,畫出兩個箭頭和所有在垂直邊的函數是我們想要的。這個例子,是N1,3(u), N2,3(u), N3,3(u), 和N4,3(u).用黃色三角表示。藍色 (resp., 紅色) 三角顯示的是在[u3, u4) (resp., [u2, u3) )上非零的3次基函數。注意在[u2, u3)上只有3個3次基多項式。.

    總之,我們觀察到下列特性:

   在任何一個節點區間 [uiui+1), 最多有 p+1p 次基函數非零,即:Ni-p,p(u),Ni-p+1,p(u), Ni-p+2,p(u), ..., Ni-1,p(u和 Ni,p(u)。

 

3. 係數的意義是什麼?

  最後,讓我們研究下Ni,p(u)定義中係數的意義。當計算 Ni,p(u) 時,它使用Ni,p-1(u)和Ni+1,p-1(u)。前者在 [uiui+p)上非零。如果u 是在這個半開區間,那麼u - ui 是u和這個區間左端之間的距離,區間長度是ui+p - ui, ,而(u - ui) / (ui+p - ui) 是上述距離的比且在0和1之間。見下圖。第二項,Ni,p-1(u),在[ui+1, ui+p+1)上非零。如果u 在該區間,那麼ui+p+1 - u 是 u 到該區間右端的距離,ui+p+1 - ui+1 是區間長度,而(ui+p+1 - u) / (ui+p+1 - ui+1) 是這兩個距離的比且值在0和1之間。因此, Ni,p(u) 是Ni,p-1(u) 和Ni+1,p-1(u)的線性組合,有兩個係數,都在 u上是線性的,在0和1之間。

  

 

                   B-spline Basis Functions:Important Properites

1. 這些基函數有如下性質,許多與貝塞爾基函數的相似

(1)Ni,p(u) 是一個在第i段的u 上的p 次多項式,u爲變量

(2)非負性

  對所有的 ip 和 uNi,p(u) 是非負的

(3)局部支撐(Local Support)

    Ni,p(u) 是在[ui,ui+p+1)上的非零多項式 

(4)在任一區間 [uiui+1),最多有 p+1 個 p 次的基函數非零

   即: Ni-p,p(u), Ni-p+1,p(u), Ni-p+2,p(u), ..., 和 Ni,p(u)

(5)單位分解(Partition of Unity)

   所有非零的 p 次基函數在區間[ui, ui+1)上的和(sum)是 1, 上一條性質表明Ni-p,p(u), Ni-p+1,p(u), Ni-p+2,p(u), ..., 和 Ni,p(u) 在[uiui+1)上非零這條性質說明這些 p+1 個基函數的累加和1.

(6)如果節點數是 m+1, 基函數的次數是 p, 而p 次基函數的數目是n+1,,那麼m =n + p + 1   (n爲分段數)

  這不難理解。 設 Nn,p(u) 是最後一個p 次基函數。它在 [unun+p+1)上非零因爲它是最後一個基函數, un+p+1 肯定是最後一個節點um。因此,我們有 un+p+1 = um及 n + p + 1 = m. 總之,給定 m 和 p, 設 n = m - p - 1 則 p 次基函數是N0,p(u), N1,p(u), N2,p(u), ..., 和 Nn,p(u).

(7)基函數 Ni,p(u) 是p 次多項式的複合曲線,連接點在[uiui+p+1 ) 上的節點處

  例如  N0,2(u), 其在 [0,3)上非零,是由定義在[0,1), [1,2) 和 [2,3)上的三個拋物線構建而成。它們在節點2 和3處連接在一起。.

(8)在一個有重複度k的節點處,基函數 Ni,p(u) 是 Cp-k 連續的

  因此,增加重複度減小連續性的層次(level),增加次數增加連續性。上述2次基函數 N0,2(u)在節點2 和 3處是 C1(C1爲C的一階導數)連續的,因爲它們是簡單節點,重複讀k=1。

 

2.多重節點的影響

  多重節點對基函數的計算和一些“計算”性質有很重要的影響 。我們會看到其中兩個:

(1)每個重複度 k 的節點減小最多k-1 基函數的非零定義域

  考慮 Ni,p(u) 和 Ni+1,p(u). 前者在[uiui+p+1)上非零而後者在[ui+1, ui+p+2)上非零如果我們移動 ui+p+2 到 ui+p+1 以至於它們變爲一個雙重節點。那麼, Ni,p(u) 仍然在p+1節點區間上非零;但是,Ni+1,p(u) 非零的節點區間數目減小了一個因爲區間[ui+p+1,ui+p+2) 消失了。

  下圖顯示了5次基函數,其左端點節點和右端點節點有重複度6,而它們之間的所有節點數簡單的(圖(a))。圖(b)是移動 u5 到 u6的結果。那些在u6 結束的基函數在更少的節點區間上非零。然後u4 再然後  u3 被移動到u6, 使得 u6 是重複度4的節點(圖(c)和(d))。圖(e)顯示移動u2 到 u6 的結果,創建了一個重複度5的節點。

   
(a)   (b)
   
(c)   (d)
(e)

(2)在每個重複度k的內部節點,非零基函數的數目最多p - k + 1, 其中 p 是基函數的次數

  因爲移動 ui-1 到 ui 會導致一個在ui-1 結束非零的基函數移到ui結束非零,這樣使得在 ui 上非零基函數的數目減小了一個。更準確地,ui的重複度增加1會使得非零基函數的數目減小1.  因爲在ui 上最多有p+1 個基函數非零,那麼在一個重複度k 的節點上最多有 (p + 1) - k = p - k + 1個非零基函數。在上述圖中,因爲節點u6 的重複度是1 (簡單), 2, 3, 4 和 5, 在 u6 上的非零基函數數目是5, 4, 3, 2 和1.

 

 

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