B-spline
V matematiky , je B-spline je lineární kombinace z pozitivních drážek s minimálním kompaktním nosičem. B-splajny jsou zobecněním Bézierových křivek , které lze zase zobecnit pomocí NURBS .
Definice
Vzhledem k tomu, že m +1 uzlů t i v [0, 1] s
0≤t0≤t1≤...≤tm≤1{\ displaystyle 0 \ leq t_ {0} \ leq t_ {1} \ leq \ ldots \ leq t_ {m} \ leq 1}stupeň spline křivky je parametrická křivka
ne{\ displaystyle n}S:[0,1]→Rd{\ displaystyle \ mathbf {S} \ ,: \, [0,1] \ do \ mathbb {R} ^ {d}}
složený z B-spline funkcí stupně n
S(t)=∑i=0m-ne-1bi,ne(t).Pi,t∈[tne,tm-ne]{\ displaystyle \ mathbf {S} (t) = \ součet _ {i = 0} ^ {mn-1} b_ {i, n} (t). \ mathbf {P} _ {i} \ ,, \, t \ in [t_ {n}, t_ {mn}]},
kde P i tvoří polygon nazývaný kontrolní polygon ; počet bodů tvořících tento polygon se rovná m - n .
Funkce m - n B-spline stupně n jsou definovány indukcí na nižším stupni:
bj,0(t): ={1sitj⩽t<tj+10sineÓne{\ displaystyle b_ {j, 0} (t): = \ left \ {{\ begin {matrix} 1 & \ mathrm {si} \ quad t_ {j} \ leqslant t <t_ {j + 1} \\ 0 & \ mathrm {jinak} \ end {matrix}} \ vpravo.}
bj,ne(t): =t-tjtj+ne-tjbj,ne-1(t)+tj+ne+1-ttj+ne+1-tj+1bj+1,ne-1(t).{\ displaystyle b_ {j, n} (t): = {\ frac {t-t_ {j}} {t_ {j + n} -t_ {j}}} b_ {j, n-1} (t) + {\ frac {t_ {j + n + 1} -t} {t_ {j + n + 1} -t_ {j + 1}}} b_ {j + 1, n-1} (t).}
Když jsou uzly ve stejné vzdálenosti, to znamená, že jsou v aritmetickém postupu, říká se, že B-splajny jsou „uniformní“: to je případ Bézierových křivek, které jsou jednotnými B-splajny, jejichž uzly t i (pro i mezi 0 a m ) tvoří aritmetickou sekvenci od 0 do 1 s konstantním krokem 1 / m , přičemž stupeň n Bézierovy křivky nemůže být větší než m .
Rozšířením, když jsou dva po sobě jdoucí uzly a jsou sloučeny, jeden představuje : toto má za následek definování diskontinuity tečny, pro bod křivky parametrizovaný hodnotou t , proto tam vytvořit vrcholovou misku bez úhlu; je však často jednodušší definovat tento „rozšířený B-spline“ jako spojení dvou B-splajnů definovaných s odlišnými uzly, přičemž tyto splajny jsou jednoduše spojeny tímto společným vrcholem, aniž by zde byly v parametrickém hodnocení zavedeny jakékoli potíže. B-splajny pro určité hodnoty parametru t . To ale potom umožňuje považovat jakýkoli jednoduchý polygon za prodloužený B-spline.
tj{\ displaystyle t_ {j}}tj+1{\ displaystyle t_ {j + 1}}00=0{\ displaystyle {\ frac {0} {0}} = 0}
Vlastnosti
Tvar základních funkcí je určen polohou uzlů.
Křivka je uvnitř konvexní obálky kontrolních bodů.
B-spline stupně n
bi,ne(t){\ displaystyle b_ {i, n} (t)}
je nenulová v intervalu [ t i , t i + n + 1 ]:
bi,ne(t)={>0siti⩽t<ti+ne+10sineÓne{\ displaystyle b_ {i, n} (t) = \ left \ {{\ begin {matrix}> 0 & \ mathrm {si} \ quad t_ {i} \ leqslant t <t_ {i + n + 1} \ \ 0 & \ mathrm {jinak} \ end {matrix}} \ vpravo.}
Jinými slovy, posunutím řídicího bodu se pouze lokálně změní tvar křivky.
Jednorozměrné b-splajny
B-splajny lze použít jako základní funkce v teorii aproximace. B-spline stupně n je dána vztahem:
∀X∈R, βne(X)=∑k=0ne+1(-1)k(ne+1)(ne+1-k)!k!(X-k+ne+12)+ne{\ displaystyle \ forall x \ in \ mathbb {R}, \ \ beta ^ {n} (x) = \ součet _ {k = 0} ^ {n + 1} (- 1) ^ {k} {\ frac {(n + 1)} {(n + 1-k)! k!}} \ left (xk + {\ frac {n + 1} {2}} \ right) _ {+} ^ {n}},
kde (y) + je rozšířená verze funkce pozitivní části :
(X)+ne={0 -li X<012 -li X=0 a ne=01 -li X>0 a ne=0Xne -li X⩾0 a ne⩾1{\ displaystyle (x) _ {+} ^ {n} = {\ begin {cases} 0 & {\ text {si}} x <0 \\ {\ tfrac {1} {2}} & {\ text { si}} x = 0 {\ text {and}} n = 0 \\ 1 & {\ text {si}} x> 0 {\ text {and}} n = 0 \\ x ^ {n} & {\ text {if}} x \ geqslant 0 {\ text {et}} n \ geqslant 1 \ end {případy}}}
Rozpoznáváme zejména spline stupně 0 jako funkci brány .
Tyto funkce nejsou interpolační, ale jejich vysoká pravidelnost na kompaktním médiu z nich dělá zajímavé kandidáty v aproximaci funkcí.
Reference
-
(in) P. Thevenaz, Blu T. a M. Unser, „ interpolace revisited “ , IEEE Transactions on Medical Imaging , sv. 19, n o 7,července 2000( DOI 10.1109 / 42.875199 )
Interní odkazy
externí odkazy
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">