B-spline

Splinekurva ritad som en viktad summa av B-splines med kontrollpunkter/kontrollpolygon och markerade komponentkurvor

I det matematiska underområdet för numerisk analys är en B-spline eller basisspline en splinefunktion som har minimalt stöd med avseende på en given grad , jämnhet och domänpartition . Varje splinefunktion av given grad kan uttryckas som en linjär kombination av B-splines av den graden. Cardinal B-splines har knutar som är lika långt från varandra. B-splines kan användas för kurvanpassning och numerisk differentiering av experimentella data.

I datorstödd design och datorgrafik är splinefunktioner konstruerade som linjära kombinationer av B-splines med en uppsättning kontrollpunkter.

Introduktion

Termen "B-spline" myntades av Isaac Jacob Schoenberg och är en förkortning för basisspline . En splinefunktion av ordningen är en bitvis polynomfunktion av grad i en variabel . Platserna där bitarna möts kallas för knutar. Nyckelegenskapen för splinefunktioner är att de och deras derivator kan vara kontinuerliga, beroende på mångfalden av knutarna.

B-splines av ordningen är basfunktioner för splinefunktioner av samma ordning definierade över samma knutar, vilket innebär att alla möjliga splinefunktioner kan byggas från en linjär kombination av B-splines, och det finns bara en unik kombination för varje splinefunktion.

Definition

Kardinal kvadratisk B-spline med knutvektor (0, 0, 0, 1, 2, 3, 3, 3) och kontrollpunkter (0, 0, 1, 0, 0), och dess första derivata
Kardinal kubisk B-spline med knutvektor (−2, −2, −2, −2, −1, 0, 1, 2, 2, 2, 2) och kontrollpunkter (0, 0, 0, 6, 0, 0, 0), och dess första derivata
Kardinal kvarts B-spline med knutvektor (0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 5, 5, 5, 5) och kontrollpunkter (0, 0, 0, 0, 1 , 0, 0, 0, 0), och dess första och andra derivator

En spline av ordningen är en styckvis polynomfunktion av grad i en variabel . Värdena på där delarna av polynomet möts är kända som knutar, betecknade och sorterade i icke-minskande ordning. När knutarna är distinkta är de första derivatorna av polynombitarna kontinuerliga över varje knut. När -knutarna är sammanfallande, är endast de första -derivatorna av spline kontinuerliga över den knuten.

För en given sekvens av knop finns det, upp till en skalningsfaktor, en unik spline som uppfyller

Om vi ​​lägger till den ytterligare begränsningen som för alla mellan den första och sista knuten, då blir skalfaktorn för De resulterande splinefunktionerna kallas B-splines.

Alternativt kan B-splines definieras genom konstruktion med hjälp av Cox–de Boors rekursionsformel. Givet en knutsekvens , definieras B-splines av ordning 1 av

Dessa uppfyller för alla eftersom för alla exakt en av och alla andra är noll.

De högre ordningens B-splines definieras av rekursion

var

Egenskaper

En B-spline-funktion är en kombination av flexibla band som styrs av ett antal punkter som kallas kontrollpunkter, vilket skapar jämna kurvor. Dessa funktioner används för att skapa och hantera komplexa former och ytor med hjälp av ett antal punkter. B-spline-funktion och Bézier-funktioner används i stor utsträckning i formoptimeringsmetoder.

En B-spline av ordningen är en styckvis polynomfunktion av grad i en variabel . Den definieras över platser , kallade knutar eller brytpunkter, som måste vara i icke-fallande ordning . B-spline bidrar endast i intervallet mellan den första och sista av dessa knutar och är noll på andra ställen. Om varje knut är separerad med samma avstånd (där ) från sin föregångare, kommer knuten vektor och motsvarande B-splines kallas "uniform" (se kardinal B-spline nedan).

För varje ändligt knutintervall där det inte är noll är en B-spline ett polynom med graden . En B-spline är en kontinuerlig funktion vid knutarna. När alla knutar som hör till B-spline är distinkta, är dess derivator också kontinuerliga upp till derivatan av graden . Om knutarna är sammanfallande vid ett givet värde på reduceras kontinuiteten i derivatordern med 1 för varje ytterligare sammanfallande knut. B-splines kan dela en delmängd av sina knutar, men två B-splines definierade över exakt samma knutar är identiska. Med andra ord, en B-spline definieras unikt av sina knutar.

Man skiljer på inre knutar och ändpunkter. Interna knutar täcker -domänen man är intresserad av. Eftersom en enda B-spline redan sträcker sig över knop, följer det att de interna knutarna behöver förlängas med ändpunkter på varje sida, för att ge fullt stöd åt den första och sista B-spline, vilket påverkar de interna knutintervallen. Värdena på ändpunkterna spelar ingen roll, vanligtvis upprepas den första eller sista inre knuten bara.

Användbarheten med B-splines ligger i det faktum att vilken splinefunktion som helst av ordningen på en given uppsättning knutar kan uttryckas som en linjär kombination av B-splines:

B-splines spelar rollen som basfunktioner för splinefunktionsutrymmet, därav namnet. Denna egenskap följer av att alla delar har samma kontinuitetsegenskaper, inom sitt individuella stödområde, vid knutarna.

Uttryck för polynombitarna kan härledas med hjälp av Cox–de Boors rekursionsformel

Det vill säga, är styckvis konstant ett eller noll, vilket indikerar vilket knopspann x är i (noll om knopspan j upprepas). Rekursionsekvationen är i två delar:

rampar från noll till ett när x går från till och

ramper från ett till noll när x går från till . Motsvarande B är noll utanför dessa respektive intervall. Till exempel en triangulär funktion som är noll under , rampar till ett vid och tillbaka till noll vid och bortom . Men eftersom B-spline-basfunktioner har lokalt stöd , beräknas B-splines vanligtvis av algoritmer som inte behöver utvärdera basfunktioner där de är noll, såsom de Boors algoritm .

Denna relation leder direkt till den FORTRAN -kodade algoritmen BSPLV, som genererar värden för B-splines av ordningen n vid x . Följande schema illustrerar hur varje del av ordningen n är en linjär kombination av delarna av B-splines av ordningen n − 1 till vänster.

Tillämpning av rekursionsformeln med knutarna vid ger delarna av den enhetliga B-spline av ordning 3

Dessa bitar visas i diagrammet. Kontinuitetsegenskapen för en kvadratisk splinefunktion och dess första derivata vid de inre knutarna illustreras enligt följande

Den andra derivatan av en B-spline av grad 2 är diskontinuerlig vid knutarna:

Snabbare varianter av de Boor-algoritmen har föreslagits, men de lider av jämförelsevis lägre stabilitet.

Kardinal B-spline

En kardinal B-spline har ett konstant avstånd h mellan knutarna. Kardinal B-splines för en given ordning n är bara förskjutna kopior av varandra. De kan erhållas från den enklare definitionen.

"Placeholder"-notationen används för att indikera att den n -: e delade skillnaden för funktionen av de två variablerna t och x ska tas genom att fixera x och betrakta som en funktion av enbart t .

En kardinal B-spline har jämnt fördelade knutar, därför är interpolering mellan knutarna lika med faltning med en utjämnande kärna.

Exempel, om vi vill interpolera tre värden mellan B-spline noder ( ), kan vi skriva signalen som

Konvolution av signalen med en rektangelfunktion ger första ordningens interpolerade B-spline-värden. Andra ordningens B-spline-interpolation är faltning med en rektangelfunktion två gånger ; genom iterativ filtrering med en rektangelfunktion erhålls interpolation av högre ordning.

Snabb B-spline-interpolering på en enhetlig provdomän kan göras genom iterativ medelfiltrering. Alternativt är en rektangelfunktion lika med sinc i Fourier-domänen . Därför är kubisk spline-interpolation lika med multiplicering av signalen i Fourier-domänen med sinc 4 .

Se Irwin–Hall distribution#Specialfall för algebraiska uttryck för kardinal B-splines av grad 1–4.

P-spline

Termen P-spline står för "straffad B-spline". Det hänvisar till att använda B-spline-representationen där koefficienterna bestäms dels av de data som ska monteras , och dels av en extra strafffunktion som syftar till att införa jämnhet för att undvika överanpassning .

Två- och flerdimensionella P-spline-approximationer av data kan använda den ansiktsdelande produkten av matriser för att minimera beräkningsoperationer.

Härledda uttryck

Derivatan av en B-spline av grad k är helt enkelt en funktion av B-splines av grad k − 1:

Detta betyder att

vilket visar att det finns ett enkelt samband mellan derivatan av en splinefunktion och B-splines av grad en mindre.

Moment av univariata B-splines

för att representera 1-d sannolikhetstäthetsfunktioner . Ett exempel är en viktad summa av B-spline basfunktioner av ordningen som var och en är areanormaliserade till enhet (dvs. inte direkt utvärderade med standard de-Boor-algoritmen)

och med normaliseringskonstant begränsning . Det k -:te råmomentet för en normaliserad B-spline kan vara skrivet som Carlsons Dirichlet-medelvärde , vilket i sin tur kan lösas exakt via en konturintegral och en iterativ summa som

med

och . Här en vektor med -knutpositionerna och en vektor med respektive knutmultiplikheter. Man kan därför beräkna vilket moment som helst av en sannolikhetstäthetsfunktion representerad av summan av B-spline basfunktioner exakt, utan att tillgripa numeriska tekniker.

Förhållande till styckvis/sammansatt Bézier

En Bézier-kurva är också en polynomkurva som kan definieras med en rekursion från kurvor av lägre grader av samma klass och kodad i termer av kontrollpunkter, men en viktig skillnad är att alla termer i rekursionen för ett Bézier-kurvsegment har samma domän av definition (vanligtvis ), medan stöden för de två termerna i B-splinerekursionen är olika (de yttersta delintervallen är inte vanliga). Detta betyder att en Bézier-kurva av grad given av kontrollpunkter består av ungefär mestadels oberoende segment, medan B- spline med samma parametrar övergår smidigt från delintervall till delintervall. För att få något jämförbart från en Bézier-kurva skulle man behöva införa ett jämnhetsvillkor på övergångar mellan segment, vilket resulterar i något sätt av Bézier-spline (för vilken många kontrollpunkter skulle bestämmas av jämnhetskravet).

En bitvis/sammansatt Bézier-kurva är en serie Bézier-kurvor sammanfogade med åtminstone C0-kontinuitet (den sista punkten i en kurva sammanfaller med startpunkten för nästa kurva). Beroende på applikation kan ytterligare krav på jämnhet (som C1- eller C2-kontinuitet) läggas till. C1 kontinuerliga kurvor har identiska tangenter vid brytpunkten (där de två kurvorna möts). C2 kontinuerliga kurvor har identisk krökning vid brytpunkten.

Kurvanpassning

Vanligtvis vid kurvanpassning är en uppsättning datapunkter utrustade med en kurva som definieras av någon matematisk funktion. Till exempel använder vanliga typer av kurvanpassning ett polynom eller en uppsättning exponentialfunktioner . När det inte finns någon teoretisk grund för att välja en passningsfunktion kan kurvan förses med en splinefunktion som består av summan av B-splines, med metoden minsta kvadrater . Sålunda objektivfunktionen för minsta kvadraters minimering, för en splinefunktion av grad k ,

där W ( x ) är en vikt och y ( x ) är referensvärdet vid x . Koefficienterna är de parametrar som ska bestämmas. Knutvärdena kan vara fasta eller behandlas som parametrar.

Den största svårigheten med att tillämpa denna process är att bestämma antalet knop som ska användas och var de ska placeras. de Boor föreslår olika strategier för att lösa detta problem. Till exempel minskas avståndet mellan knoparna i proportion till krökningen (2:a derivatan) av datan. [ citat behövs ] Ett fåtal ansökningar har publicerats. Till exempel har användningen av B-splines för att passa enkla Lorentziska och Gaussiska kurvor undersökts. Optimala splinefunktioner av graderna 3–7 inklusive, baserade på symmetriska arrangemang av 5, 6 och 7 knop, har beräknats och metoden användes för utjämning och differentiering av spektroskopiska kurvor. I en jämförbar studie gav den tvådimensionella versionen av Savitzky-Golay-filtreringen och splinemetoden bättre resultat än glidande medelvärde eller Chebyshev-filtrering .

Datorstödd design och datorgrafik

I datorstödd design och datorgrafikapplikationer representeras en splinekurva ibland som en parametrisk kurva för någon verklig parameter . I detta fall kan kurvan behandlas som två eller tre separata koordinatfunktioner , eller . Koordinatfunktionerna , och är var och en splinefunktion, med en gemensam uppsättning av knutvärden .

Eftersom en B-splines bildar basfunktioner kan var och en av koordinatfunktionerna uttryckas som en linjär summa av B-splines, så vi har

Vikterna , och kan kombineras för att bilda punkter 3-d rymd. Dessa punkter är allmänt kända som kontrollpunkter.

Om du arbetar i omvänd riktning, definierar en sekvens av kontrollpunkter, knutvärden och ordningen för B-spline en parametrisk kurva. Denna representation av en kurva med kontrollpunkter har flera användbara egenskaper:

  1. Kontrollpunkterna definierar en kurva. Om kontrollpunkterna alla transformeras tillsammans på något sätt, som att translateras, roteras, skalas eller flyttas av någon affin transformation, så transformeras motsvarande kurva på samma sätt.
  2. Eftersom B-splines är icke-noll för bara ett ändligt antal knopintervall, om en enda kontrollpunkt flyttas, är motsvarande ändring av den parametriska kurvan strax över parameterområdet för ett litet antal knopintervall.
  3. Eftersom och hela tiden varje , då förblir kurvan innanför kontrollpunkternas begränsningsram. Även i någon mening följer kurvan i stort sett kontrollpunkterna.

En mindre önskvärd egenskap är att den parametriska kurvan inte interpolerar kontrollpunkterna. Vanligtvis går kurvan inte genom kontrollpunkterna.

NURBS

NURBS-kurva – polynomkurva definierad i homogena koordinater (blå) och dess projektion på plan – rationell kurva (röd)

Inom datorstödd design , datorstödd tillverkning och datorgrafik är en kraftfull förlängning av B-splines olikformiga rationella B-splines (NURBS). NURBS är i huvudsak B-splines i homogena koordinater . Liksom B-splines, definieras de av sin ordning, och en knutvektor och en uppsättning kontrollpunkter, men till skillnad från enkla B-splines har kontrollpunkterna var och en en vikt. När vikten är lika med 1 är en NURBS helt enkelt en B-spline och som sådan generaliserar NURBS både B-splines och Bézier-kurvor och -ytor, den primära skillnaden är viktningen av kontrollpunkterna som gör NURBS-kurvorna "rationella".

Surface modelling.svg

Genom att utvärdera en NURBS vid olika värden av parametrarna kan kurvan spåras genom rymden; på samma sätt, genom att utvärdera en NURBS-yta vid olika värden av de två parametrarna, kan ytan representeras i kartesisk rymd.

Precis som B-splines bestämmer NURBS-kontrollpunkter kurvans form. Varje punkt i kurvan beräknas genom att ta en viktad summa av ett antal kontrollpunkter. Vikten av varje punkt varierar beroende på den styrande parametern. För en kurva av grad d , är påverkan av en kontrollpunkt endast från noll i d +1 intervall (knutspann) av parameterutrymmet. Inom dessa intervall ändras vikten enligt en polynomfunktion (basfunktioner) av grad d . Vid gränserna för intervallen går basfunktionerna jämnt till noll, jämnheten bestäms av graden av polynomet.

Knutvektorn är en sekvens av parametervärden som bestämmer var och hur kontrollpunkterna påverkar NURBS-kurvan. Antalet knop är alltid lika med antalet kontrollpunkter plus kurvgrad plus en. Varje gång parametervärdet går in i ett nytt knopspann, blir en ny kontrollpunkt aktiv, medan en gammal kontrollpunkt kasseras.

En NURBS-kurva har följande form:

Här är notationen som följer. u är den oberoende variabeln (istället för x ), k är antalet kontrollpunkter, N är en B-spline (används istället för B ), n är polynomgraden, P är en kontrollpunkt och w är en vikt. Nämnaren är en normaliserande faktor som utvärderas till en om alla vikter är en.

Det är vanligt att skriva detta som

där funktionerna

är kända som de rationella basfunktionerna.

En NURBS-yta erhålls som tensorprodukten av två NURBS-kurvor, och använder således två oberoende parametrar u och v (med index i respektive j ):

med

som rationella grundfunktioner.

Se även

Anteckningar

Anförda verk

Vidare läsning

externa länkar