1. 程式人生 > 其它 >三次B樣條曲線擬合演算法

三次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 擬合結果

緣輪廓