Bスプライン

数値解析においてB-スプライン(基底スプラインの略)は、与えられた次数滑らか、およびブレークポイント(定義を分割するノット)のセットに対して最小限のサポート(オーバーラップ)を持つように設計されたスプライン関数の一種であり、その次数のすべてのスプライン関数の基本的な構成要素となります。B-スプラインは、次数 の区分多項式として定義され次数ですこれはこれらのノットで交わるセクションから構築され、関数とその導関数の連続性は、各ノットが繰り返される頻度(その多重度)に依存します。特定の次数のスプライン関数はどれも、同じノット上のその次数の B-スプラインの線形結合として一意に表現できます。 [1]この特性により、スプラインは数学的モデリングにおいて多用途に使用できます。特別なサブタイプであるカーディナル B-スプラインでは、等距離のノットが使用されます

Bスプラインの概念は、ニコライ・ロバチェフスキーがロシアのカザン大学で同様のアイデアを研究した19世紀にまで遡ります[2]。ただし、「Bスプライン」という用語は、1967年にアイザック・ヤコブ・シェーンベルク[3]によって、その基底関数としての役割を反映して造られました[4]

Bスプラインは、コンピュータ支援設計(CAD)やコンピュータグラフィックスなどの分野で広く利用されており、制御点の集合を用いて曲線や曲面を形成するほか、曲線フィッティングや実験データの数値微分といったデータ分析にも用いられています。車体の設計からノイズの多い測定値の平滑化まで、Bスプラインは複雑な形状や関数を高精度に表現する柔軟な方法を提供します。

制御点/制御ポリゴンとマークされたコンポーネント曲線を持つBスプラインの加重和として描画されたスプライン曲線

意味

ノットベクトル(0, 0, 0, 1, 2, 3, 3, 3)と制御点(0, 0, 1, 0, 0)を持つ基数2次Bスプラインとその1次導関数
ノットベクトル(−2, −2, −2, −2, −1, 0, 1, 2, 2, 2, 2)と制御点(0, 0, 0, 6, 0, 0, 0)を持つカーディナル3次Bスプラインとその1次導関数
ノットベクトル(0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 5, 5, 5, 5)と制御点(0, 0, 0, 0, 1, 0, 0, 0, 0)を持つ基数4次Bスプライン、およびその1次導関数と2次導関数

次数 Bスプラインは、変数 の次数の区分多項式関数の集合です。多項式の各部分が交わる部分の値は結び目と呼ばれ、非減少順に並べられて表されます。

与えられたノットの列に対して、スケーリング係数を除けば、次の式を満たす 唯一のスプラインが存在する。

追加の制約を加えると

結び目との間のすべての結び目に対して が成り立つとき、 のスケーリング係数は固定されます。 と の間( と を含まない)の結び目内部結び目​​と呼ばれます。

Bスプラインは、コックス・ド・ブールの漸化式を用いて構築できます。まず、次数 のBスプライン、すなわち区分定数多項式から始めます。

高次のBスプラインは再帰によって定義される

プロパティ

Bスプライン関数は、制御点と呼ばれる多数の点によって制御される柔軟なバンドの組み合わせであり、滑らかな曲線を作成します。これらの関数は、多数の点を用いて複雑な形状や曲面を作成および管理するために使用されます。Bスプライン関数とベジェ関数は、形状最適化手法において広く応用されています。[5]

次数 のBスプラインは、変数 における次数 の区分多項式関数です。これは、ノットまたはブレークポイントと呼ばれる位置上で定義され、降順 ではない順序でなければなりません。Bスプラインは、これらのノットの最初と最後の間の範囲にのみ寄与し、それ以外の範囲ではゼロになります。各ノットが前のノットから同じ距離)だけ離れている場合、ノットベクトルとそれに対応するBスプラインは「一様」と呼ばれます(下記のカーディナルBスプラインを参照)。

がゼロでない有限のノット区間ごとに、Bスプラインは次数 の多項式です。Bスプラインはノットで連続関数です。 [注 1] Bスプラインに属するすべてのノットが別個である場合、その導関数も次数 の導関数まで連続です。ノットが の特定の値で一致する場合、微分次数の連続性は一致するノットが増えるごとに 1 ずつ減ります。Bスプラインはノットのサブセットを共有することがありますが、まったく同じノット上で定義された 2 つの Bスプラインは同一です。言い換えると、Bスプラインはそのノットによって一意に定義されます。

内部ノットと端点は区別されます。内部ノットは、関心のある領域をカバーします。単一のBスプラインは既にノット上に拡張されているため、内部ノットの間隔に影響を与える最初と最後のBスプラインを完全にサポートするには、内部ノットを両側に端点を追加して拡張する必要があります。端点の値は重要ではなく、通常は最初または最後の内部ノットが繰り返されるだけです。

B スプラインの有用性は、与えられたノット セット上の任意のスプライン関数が、B スプラインの線形結合として表現できるという点にあります。

Bスプラインはスプライン関数空間の基底関数の役割を果たすため、その名が付けられました。この性質は、すべてのピースが、それぞれの支持範囲内において、節点において同じ連続性を持つという事実から生じます。[6]

多項式部分の表現はコックス・ド・ブールの漸化式[7]によって導出できる。

つまり、は区分定数の1または0で、xがどのノットスパンに含まれるかを示します(ノットスパンjが重複している場合は0です)。この再帰方程式は2つの部分から成ります。

xがからに変化する0から1に変化し

は、 xがから に変化するとき、1から0へと傾斜します。対応するBは、それぞれの範囲外では0です。例えば、三角関数で、未満では0ですが、 では1に傾斜し、 を超えると0に戻ります。しかし、Bスプライン基底関数は の局所サポートを持つため、Bスプラインは通常、 de Boorのアルゴリズムのように、基底関数が0である場所で基底関数を評価する必要のないアルゴリズムによって計算されます

この関係は、FORTRANでコード化されたアルゴリズムBSPLVに直接つながり、 xにおけるn次のBスプラインの値を生成します[8]次の図は、n次の各部分が、その左側にあるn −1次のBスプライン部分の線形結合であることを示しています 。

の結び目を持つ再帰式を適用すると、3次の一様Bスプラインの断片が得られる。

これらの部分は図に示されています。2次スプライン関数の連続性と内部ノットにおける1次導関数は次のように示されています。

2次Bスプラインの2次導関数は節点で不連続です。

de Boorアルゴリズムのより高速な変種も提案されているが、比較的安定性が低いという欠点がある。[9] [10]

カーディナルBスプライン

カーディナルBスプラインは、ノット間の距離hが一定です。与えられた次数nに対するカーディナルBスプラインは、互いにシフトしたコピーです。これらは、より単純な定義から得ることができます。[11]

「プレースホルダー」表記は、2 つの変数txの関数のnの差を、 x を固定してtのみの関数として考えることを示すために使用されます

カーディナル B スプラインには均一間隔のノットがあるため、ノット間の補間はスムージング カーネルを使用した畳み込みと等しくなります。

例えば、Bスプラインノード( )の間に3つの値を補間したい場合、信号は次のように記述できます。

信号を矩形関数で畳み込むと、1次補間されたBスプライン値が得られます。2次Bスプライン補間は、矩形関数を2回畳み込むことで得られます。矩形関数による反復フィルタリングにより、より高次の補間が得られます。

一様サンプル領域における高速Bスプライン補間は、反復平均フィルタリングによって行うことができます。あるいは、矩形関数はフーリエ領域においてsincに等しくなります。したがって、3次スプライン補間は、フーリエ領域における信号にsinc 4を乗算することと等しくなります。

アーウィン・ホール分布# 1〜4次のカーディナルBスプラインの代数式の 特殊なケースを参照してください。

Pスプライン

Pスプラインという用語は「ペナルティ付きBスプライン」の略です。これは、係数がフィッティング対象となるデータによって部分的に決定され過剰適合を回避するために滑らかさを課すことを目的とした追加のペナルティ関数によって部分的に決定されるBスプライン表現を使用することを指します。[12]

2次元および多次元のPスプライン近似データでは、行列の面分割積を使用して計算操作を最小化することができます。[13]

微分表現

k次のBスプラインの微分は、 k  −1次のBスプラインの関数である。 [14]

これは、

これは、スプライン関数の導関数と次数が 1 低い B スプラインの間に単純な関係があることを示しています。

一変数Bスプラインのモーメント

一変数Bスプライン、すなわち結び目の位置が一次元にあるBスプラインは、1次元確率密度関数を表すために使用できます。例として、それぞれ面積が1に正規化された(つまり、標準的なde-Boorアルゴリズムを使用して直接評価されない)次数のBスプライン基底関数の加重和が挙げられます。

正規化定数制約 のもとで正規化Bスプラインのk次の生モーメントはカールソンのディリクレ平均 として表すことができ[15]これは、輪郭積分と反復和[16]によって次のように正確に解くことができる

。ここで、は結び目の位置を表すベクトル、 はそれぞれの結び目の多重度を表すベクトルを表します。したがって、数値計算に頼ることなく、Bスプライン基底関数の和で表される確率密度関数の任意のモーメントを正確に計算することができます。

区分ベジェ/合成ベジェとの関係

ベジェ曲線も、同じクラスのより低次の曲線からの再帰を使用して定義可能で、制御点に関してエンコードされた多項式曲線ですが、重要な違いは、ベジェ曲線セグメントの再帰のすべての項は同じ定義域(通常は)を持つのに対し、 B スプライン再帰の 2 つの項のサポートは異なります(最も外側のサブ区間は共通ではありません)。つまり、制御点によって与えられる次数のベジェ曲線は約 個の独立したセグメントで構成されますが、同じパラメータを持つ B スプラインはサブ区間からサブ区間に滑らかに遷移します。ベジェ曲線から同等のものを得るには、セグメント間の遷移に滑らかさの条件を課して、何らかのベジェ スプラインを作成する必要があります(その場合、多くの制御点は滑らかさの要件によって決まります)。

区分的/合成ベジェ曲線は、少なくともC0連続性(ある曲線の終点が次の曲線の始点と一致する)で連結された一連のベジェ曲線です。用途によっては、追加の滑らかさ要件(C1連続性やC2連続性など)が付加される場合があります。[17] C1連続曲線は、2つの曲線が交わるブレークポイントで接線が同一です。C2連続曲線は、ブレークポイントで曲率が同一です。[18]

曲線フィッティング

通常、曲線近似では、データ点の集合を何らかの数学関数で定義された曲線で近似します。例えば、一般的な曲線近似では、多項式や指数関数の集合が用いられます。近似関数を選択するための理論的根拠がない場合、最小二乗法を用いて、Bスプラインの和からなるスプライン関数で曲線を近似することができます。[19] [注 2]したがって、最小二乗最小化の目的関数は、 k次のスプライン関数の場合

ここで、W ( x ) は重み、y ( x ) はxにおけるデータ値です。係数は決定すべきパラメータです。ノット値は固定値とすることも、パラメータとして扱うこともできます。

このプロセスを適用する際の主な難しさは、使用するノットの数とそれらを配置する場所を決定することです。 de Boor は、この問題に対処するためにさまざまな戦略を提案しています。たとえば、ノット間の間隔は、データの曲率 (2 次導関数) に比例して減少します。[要出典]いくつかのアプリケーションが公開されています。たとえば、単一のロレンツ曲線ガウス曲線のフィッティングに B スプラインを使用することが調査されました。5、6、7 ノットの対称配置に基づく、3 ~ 7 次までの最適なスプライン関数が計算され、この手法が分光曲線の平滑化と微分化に適用されました。[20]同様の研究では、2 次元バージョンのSavitzky–Golay フィルタリングとスプライン法は、移動平均フィルタリングやチェビシェフフィルタリングよりも優れた結果を生み出しました。[21]

コンピュータ支援設計とコンピュータグラフィックス

コンピュータ支援設計(CAD)コンピュータグラフィックスアプリケーションでは、スプライン曲線は、実パラメータ を持つパラメトリック曲線と表現されることがあります。この場合、曲線は2つまたは3つの独立した座標関数、またはとして扱うことができます。座標関数、 はそれぞれスプライン関数であり、共通のノット値 のセットを持ちます

Bスプラインは基底関数を形成するため、各座標関数はBスプラインの線形和として表すことができるので、

重み、、組み合わせることで、 3次元空間上の点を形成できます。これらの点は一般に制御点と呼ばれます。

逆順に、制御点のシーケンス、ノット値、Bスプラインの順序によってパラメトリック曲線が定義されます。制御点による曲線の表現には、いくつかの便利な特性があります。

  1. 制御点は曲線を定義します。制御点が、平行移動、回転、拡大縮小、アフィン変換による移動など、何らかの方法で同時に変換された場合、対応する曲線も同様に変換されます。
  2. B スプラインは有限数のノット間隔に対してのみゼロ以外となるため、単一の制御点を移動した場合、パラメトリック曲線に対する対応する変更は、少数のノット間隔のパラメータ範囲をわずかに超える程度になります。
  3. であり、常に各 となるため、曲線は制御点の境界ボックス内に留まります。また、ある意味では、曲線は制御点に概ね沿っています。

あまり望ましくない特徴として、パラメトリック曲線は制御点を補間しません。通常、曲線は制御点を通過しません。

3次Bスプライン

正規化されたパラメータを持つ3次Bスプライン曲線は4つのノード(制御点、、、、によって定義されます。これは3次多項式を形成し、次のように表されます

これはBスプライン多項式に対応する

そして曲線は と評価できる。これを展開すると、完全な多項式形は以下のように書ける。

これは3次多項式なので、制御点 、 を持つ 3次ベジェ曲線として書くこともできます。

区分的 3 次 B スプラインはノードのセットによって形成され、連続する 4 つのノードはそれぞれ上記の定式化を使用して曲線の 3 次部分を定義します。

クランプBスプライン

ノット ベクトルの最初と最後のノット (は次数) が同じ値を持つ場合、曲線の開始点と終了点が制御点と重なり、クランプされた B スプラインが生成されます。

制御点を持つ 3 次クランプ B スプラインのノット ベクトルの例は次のとおりです。

結び目ベクトルの範囲
[0,1]
[0,2]
[0,3]
[0,4]

クランプされた B スプラインは、4 つの制御点、、、およびで定義される正規化されたパラメータを使用して、区分 B スプライン セグメントに分割できます

各セグメントのノットベクトルと係数行列の例は次の通りである。 [22] [23]

結び目ベクトル係数行列
[注 3]

NURBS

NURBS曲線 - 同次座標で定義された多項式曲線(青)と平面への投影 - 有理曲線(赤)

コンピュータ支援設計コンピュータ支援製造、およびコンピュータグラフィックスにおいて、Bスプラインの強力な拡張として非一様有理Bスプライン(NURBS)が挙げられます。NURBSは本質的に同次座標におけるBスプラインです。Bスプラインと同様に、NURBSは次数、ノットベクトル、および制御点の集合によって定義されますが、単純なBスプラインとは異なり、制御点にはそれぞれ重みがあります。重みが1の場合、NURBSは単なるBスプラインであり、Bスプラインとベジェ曲線およびベジェ曲面の両方を一般化します。主な違いは、NURBS曲線を「有理」にする制御点の重み付けです。

さまざまなパラメータ値で NURBS を評価することにより、空間内で曲線をトレースできます。同様に、2 つのパラメータのさまざまな値で NURBS サーフェスを評価することにより、サーフェスを直交空間で表現できます。

Bスプラインと同様に、NURBS制御点は曲線の形状を決定します。曲線の各点は、複数の制御点の重み付け和をとることで計算されます。各点の重みは、支配パラメータに応じて変化します。次数dの曲線の場合、制御点の影響は、パラメータ空間のd +1 区間(ノットスパン)内でのみ非ゼロとなります。これらの区間内では、重みは次数dの多項式関数(基底関数)に従って変化します。区間の境界では、基底関数は滑らかにゼロに近づき、その滑らかさは多項式の次数によって決まります。

ノットベクトルは、制御点がNURBS曲線にどこでどのように影響するかを決定するパラメータ値のシーケンスです。ノットの数は常に、制御点の数に曲線の次数を加えた数に等しくなります。パラメータ値が新しいノットスパンに入るたびに、新しい制御点がアクティブになり、古い制御点は破棄されます。

NURBS曲線は次の形をとる:[24]

ここでの表記は以下のとおりです。u独立変数( xの代わりに使用)、kは制御点の数、NはBスプライン(Bの代わりに使用)、nは多項式の次数、Pは制御点、wは重みです。分母は正規化係数であり、すべての重みが1の場合に1と評価されます。

これを次のように書くのが慣例です

関数

有理基底関数として知られています。

NURBS曲面は、2つのNURBS曲線のテンソル積として得られる。つまり、2つの独立したパラメータuv(それぞれインデックスij)を使用する。[25]

有理基底関数として。

参照

注記

  1. ^ 厳密に言えば、B スプラインは通常、左連続であると定義されます。
  2. ^ de Boor は、実験データの最小二乗フィッティングのための FORTRAN ルーチンを提供しています。
  3. ^ ノットベクトルは と等価です。なぜなら、ノットベクトルの両端の要素は基底関数の計算には用いられないからです。これらの要素は任意の値を取ることができます。

参考文献

  1. ^ ハルトムート・プラウチュ;ヴォルフガング・ベーム。マルコ・パルシュニー (2002)。ベジェおよび B スプライン手法。数学と視覚化。ベルリン、ハイデルベルク: Springer Science & Business Media。 p. 63.土井:10.1007/978-3-662-04919-8。ISBN 978-3-540-43761-1. OCLC  851370272。
  2. ^ Farin, GE (2002). CAGDのための曲線と曲面:実践ガイド. Morgan Kaufmann. p. 119.
  3. ^ de Boor、114ページ。
  4. ^ Gary D. Knott (2000)、「3次スプラインの補間」、Springer、p.151。
  5. ^ Talebitooti,​​ R.; Shojaeefard, MH; Yarmohammadisatri, Sadegh (2015). 「Bスプライン曲線を用いた円筒形タンクの形状設計最適化」. Computer & Fluids . 109 : 100–112 . doi :10.1016/j.compfluid.2014.12.004.
  6. ^ de Boor、113ページ。
  7. ^ de Boor、131ページ。
  8. ^ de Boor、134ページ。
  9. ^ Lee, ETY (1982年12月). 「簡略化されたBスプライン計算ルーチン」. Computing . 29 (4): 365– 371. doi :10.1007/BF02246763. S2CID  2407104.
  10. ^ Lee, ETY (1986). 「いくつかのBスプラインアルゴリズムに関するコメント」. Computing . 36 (3): 229– 238. doi :10.1007/BF02240069. S2CID  7003455.
  11. ^ de Boor、322ページ。
  12. ^ Eilers, PHCおよびMarx, BD (1996). Bスプラインとペナルティを用いた柔軟なスムージング(コメントと反論付き). 統計科学11(2): 89–121.
  13. ^ Eilers, Paul HC; Marx, Brian D. (2003). 「2次元ペナルティ付き信号回帰を用いた温度相互作用を考慮した多変量キャリブレーション」.ケモメトリクスとインテリジェントラボラトリーシステム. 66 (2): 159– 174. doi :10.1016/S0169-7439(03)00029-7.
  14. ^ de Boor、115ページ。
  15. ^ Carlson, BC (1991). 「Bスプライン、超幾何関数、ディリクレ平均」. Journal of approximation Theory . 67 (3): 311– 325. doi : 10.1016/0021-9045(91)90006-V .
  16. ^ Glüsenkamp, T. (2018). 「重み付きモンテカルロデータの有限サイズにおける不確実性の確率論的処理」. EPJ Plus . 133 (6): 218. arXiv : 1712.01293 . Bibcode :2018EPJP..133..218G. doi :10.1140/epjp/i2018-12042-x. S2CID  125665629.
  17. ^ Eugene V. Shikin; Alexander I. Plis (1995年7月14日). Handbook on Splines for the User. CRC Press. pp. 96–. ISBN 978-0-8493-9404-1
  18. ^ Wernecke, Josie (1993). "8". The Inventor Mentor: Programming Object-Oriented 3D Graphics with Open Inventor, Release 2 (第1版). Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc. ISBN 978-0201624953
  19. ^ デ・ブール、第 XIV 章、p. 235.
  20. ^ Gans, Peter; Gill, J. Bernard (1984). 「スプライン関数を用いた分光曲線の平滑化と微分化」.応用分光法. 38 (3): 370– 376. Bibcode :1984ApSpe..38..370G. doi :10.1366/0003702844555511. S2CID  96229316.
  21. ^ Vicsek, Maria; Neal, Sharon L.; Warner, Isiah M. (1986). 「二次元蛍光データの時間領域フィルタリング」.応用分光法. 40 (4): 542– 548. Bibcode :1986ApSpe..40..542V. doi :10.1366/0003702864508773. S2CID  28705788. 2017年6月23日時点のオリジナルよりアーカイブ。
  22. ^ Cohen, Elaine; Riesenfeld, Richard F. (1982). 「ベジェ曲線とBスプライン曲線の一般的な行列表現」Computers in Industry 3 : 13–15 .
  23. ^ 「実装エンジニアのためのBスプライン曲線入門」Qiita
  24. ^ ピゲルとティラー、第4章、第2節
  25. ^ ピゲルとティラー、第4章、第4節

引用文献

  • カール・デ・ブール (1978)。スプラインの実践ガイド。スプリンガー・フェルラーク。ISBN 978-3-540-90356-7
  • ピーグル, レス; ティラー, ウェイン (1997). The NURBS Book (第2版). Springer. ISBN 978-3-540-61545-3

さらに読む

  • リチャード・H・バーテルズ、ジョン・C・ビーティー、ブライアン・A・バースキー (1987). 『コンピュータグラフィックスと幾何学的モデリングにおけるスプライン入門』モーガン・カウフマン. ISBN 978-1-55860-400-1
  • Jean Gallier (1999). 『幾何モデリングにおける曲線と曲面:理論とアルゴリズム』 Morgan Kaufmann. 第6章 Bスプライン曲線この本は絶版になっており、著者から無料で入手できます。
  • ハルトムート・プラウチュ;ヴォルフガング・ベーム。マルコ・パルシュニー (2002)。ベジェおよび B スプライン手法。シュプリンガーのサイエンス&ビジネスメディア。ISBN 978-3-540-43761-1
  • デイビッド・サロモン (2006). 『コンピュータグラフィックスのための曲線と曲面』シュプリンガー. 第7章 Bスプライン近似. ISBN 978-0-387-28452-1
  • Hovey, Chad (2022). ベジェ幾何学とBスプライン幾何学の定式化とPython実装. SAND2022-7702C. (153ページ)
  • Weisstein, Eric W.「Bスプライン」。MathWorld
  • Ruf, Johannes. 「非一様グリッド上の3次Bスプライン」(PDF) 。 2013年11月6日時点のオリジナル(PDF)からアーカイブ。 2012年5月2日閲覧
  • NumPyからの二変量Bスプライン
  • JSXGraph を使用したインタラクティブな B スプライン
  • TinySpline: さまざまな言語にバインディングされたオープンソースの C ライブラリ
  • 一様非有理Bスプライン、2次元空間における曲線のモデリング。著者:Stefan G. Beck
  • B-スプライン エディタ by Shukant Pal
Retrieved from "https://en.wikipedia.org/w/index.php?title=B-spline&oldid=1325456512"