En análisis numérico , una B-spline (abreviatura de base spline) es un tipo de función spline diseñada para tener un soporte mínimo (superposición) para un grado , suavidad y conjunto de puntos de ruptura (nodos que dividen su dominio ) dados, lo que la convierte en un bloque de construcción fundamental para todas las funciones spline de ese grado. Una B-spline se define como un polinomio por partes de orden, lo que significa un grado deSe construye a partir de secciones que se encuentran en estos nodos, donde la continuidad de la función y sus derivadas depende de la frecuencia con la que se repite cada nodo (su multiplicidad). Cualquier función spline de un grado específico puede expresarse de forma única como una combinación lineal de B-splines de ese grado sobre los mismos nodos, [ 1 ] una propiedad que las hace versátiles en el modelado matemático. Un subtipo especial, las B-splines cardinales, utiliza nodos equidistantes .
El concepto de B-splines se remonta al siglo XIX, cuando Nikolai Lobachevsky exploró ideas similares en la Universidad de Kazán en Rusia, [ 2 ] aunque el término "B-spline" fue acuñado por Isaac Jacob Schoenberg [ 3 ] en 1967, reflejando su papel como funciones base . [ 4 ]
Las curvas B-spline se utilizan ampliamente en campos como el diseño asistido por ordenador (CAD) y los gráficos por ordenador , donde dan forma a curvas y superficies mediante un conjunto de puntos de control , así como en el análisis de datos para tareas como el ajuste de curvas y la diferenciación numérica de datos experimentales.

Definición



Una B-spline de ordenes una colección de funciones polinómicas por partesde gradoen una variable. Los valores dedonde se encuentran las partes del polinomio se conocen como nudos, denotadosy ordenados en orden no decreciente.
Para una secuencia dada de nudos, existe, salvo un factor de escala, una única spline.satisfactorio
Si añadimos la restricción adicional de que
a pesar deentre los nudosy, entonces el factor de escala dese vuelve fijo. Los nudos intermedios (y sin incluir)yse denominan nudos internos.
Las B-splines se pueden construir mediante la fórmula de recursión de Cox-de Boor. Comenzamos con las B-splines de grado, es decir, polinomios constantes por partes.
Cuanto más altoLas B-splines de grado - se definen mediante recursión.
Propiedades
Una función B-spline es una combinación de bandas flexibles controladas por varios puntos, denominados puntos de control , que crean curvas suaves. Estas funciones se utilizan para crear y gestionar formas y superficies complejas mediante múltiples puntos. Las funciones B-spline y las funciones de Bézier se aplican ampliamente en métodos de optimización de formas . [ 5 ]
Una B-spline de ordenes una función polinómica por partes de gradoen una variableSe define sobreubicaciones, llamados nudos o puntos de ruptura, que deben estar en orden no descendente. La B-spline contribuye solo en el rango entre el primero y el último de estos nodos y es cero en cualquier otro lugar. Si cada nodo está separado por la misma distancia(dónde) de su predecesor, el vector de nudos y las B-splines correspondientes se denominan "uniformes" (véase B-spline cardinal más abajo).
Para cada intervalo de nodo finito donde no es cero, una B-spline es un polinomio de gradoUna B-spline es una función continua en los nodos. [ nota 1 ] Cuando todos los nodos que pertenecen a la B-spline son distintos, sus derivadas también son continuas hasta la derivada de grado. Si los nudos coinciden en un valor dado deLa continuidad del orden de la derivada se reduce en 1 por cada nudo coincidente adicional. Las B-splines pueden compartir un subconjunto de sus nudos, pero dos B-splines definidas sobre exactamente los mismos nudos son idénticas. En otras palabras, una B-spline se define de forma única por sus nudos.
Se distinguen nudos internos y puntos finales. Los nudos internos cubren los-dominio de interés. Dado que una sola B-spline ya se extiende sobrenudos, se deduce que los nudos internos deben extenderse conLos puntos extremos en cada lado brindan soporte completo a la primera y última B-spline, las cuales afectan los intervalos de los nodos internos. Los valores de los puntos extremos no importan; generalmente, el primer o último nodo interno simplemente se repite.
La utilidad de las B-splines radica en el hecho de que cualquier función spline de ordenEn un conjunto dado de nodos, se puede expresar como una combinación lineal de B-splines:
Las B-splines desempeñan el papel de funciones base para el espacio de funciones spline , de ahí su nombre. Esta propiedad se deriva del hecho de que todas las piezas tienen las mismas propiedades de continuidad, dentro de su rango de soporte individual, en los nodos. [ 6 ]
Las expresiones para las partes polinómicas se pueden derivar mediante la fórmula de recursión de Cox-de Boor [ 7 ].
Eso es,es una constante por partes, uno o cero, que indica en qué intervalo de nudos se encuentra x (cero si el intervalo de nudos i se repite). La ecuación de recurrencia consta de dos partes:
las rampas van de cero a uno a medida que x va dea, y
las rampas van de uno a cero a medida que x va dea. Los valores de B correspondientes son cero fuera de esos rangos respectivos. Por ejemplo,es una función triangular que es cero por debajo, rampas a una eny volver a cero en y más alláSin embargo, debido a que las funciones base B-spline tienen soporte local , las B-splines se calculan típicamente mediante algoritmos que no necesitan evaluar funciones base donde son cero, como el algoritmo de de Boor .
Esta relación conduce directamente al algoritmo BSPLV codificado en FORTRAN , que genera valores de las B-splines de orden n en x . [ 8 ] El siguiente esquema ilustra cómo cada pieza de orden n es una combinación lineal de las piezas de B-splines de orden n − 1 a su izquierda.
Aplicación de la fórmula de recursión con los nudos enproporciona los componentes por partes de la B-spline uniforme de orden 3
dónde
Estas piezas se muestran en el diagrama. La propiedad de continuidad de una función spline cuadrática y su primera derivada en los nodos internos se ilustran de la siguiente manera:
La segunda derivada de una B-spline de grado 2 es discontinua en los nodos:
Se han propuesto variantes más rápidas del algoritmo de De Boor, pero presentan una estabilidad comparativamente menor. [ 9 ] [ 10 ]
Spline B cardinal
Una B-spline cardinal tiene una separación constante h entre nodos. Las B-splines cardinales para un orden n dado son simplemente copias desplazadas unas de otras. Se pueden obtener a partir de la definición más simple. [ 11 ]
La notación "marcador de posición" se utiliza para indicar que la n - ésima diferencia dividida de la funciónde las dos variables t y x se tomará fijando x y considerandocomo función únicamente de t .
Una B-spline cardinal tiene nodos espaciados uniformemente, por lo tanto, la interpolación entre los nodos equivale a una convolución con un núcleo de suavizado.
Por ejemplo, si queremos interpolar tres valores entre los nodos de B-spline (), podemos escribir la señal como
Convolución de la señalcon una función rectangularproporciona valores B-spline interpolados de primer orden. La interpolación B-spline de segundo orden es una convolución con una función rectangular dos veces.; mediante filtrado iterativo con una función rectangular, se obtiene una interpolación de orden superior.
La interpolación rápida de B-spline en un dominio de muestra uniforme se puede realizar mediante filtrado iterativo de la media. Alternativamente, una función rectangular es igual a sinc en el dominio de Fourier . Por lo tanto, la interpolación de spline cúbico es igual a multiplicar la señal en el dominio de Fourier por sinc 4 .
Consulte la distribución de Irwin-Hall#Casos especiales para expresiones algebraicas para las B-splines cardinales de grado 1-4.
P-spline
El término P-spline significa "B-spline penalizado". Se refiere al uso de la representación B-spline donde los coeficientes se determinan en parte por los datos que se van a ajustar y en parte por una función de penalización adicional que busca imponer suavidad para evitar el sobreajuste . [ 12 ]
Las aproximaciones de datos mediante P-splines bidimensionales y multidimensionales pueden utilizar el producto de división de caras de matrices para minimizar las operaciones de cálculo. [ 13 ]
Expresiones derivadas
La derivada de una B-spline de grado k es simplemente una función de B-splines de grado k − 1: [ 14 ]
Esto implica que
lo que demuestra que existe una relación simple entre la derivada de una función spline y las B-splines de grado uno menos.
Momentos de B-splines univariadas
Las B-splines univariadas, es decir, las B-splines donde las posiciones de los nodos se encuentran en una sola dimensión, se pueden utilizar para representar funciones de densidad de probabilidad unidimensionales.. Un ejemplo es una suma ponderada deFunciones base B-spline de orden, cada una de las cuales está normalizada en área a la unidad (es decir, no se evalúa directamente utilizando el algoritmo estándar de De Boor)
y con restricción de constante de normalización. El k -ésimo momento en brutode una B-spline normalizadase puede escribir como el promedio de Dirichlet de Carlson, [ 15 ] que a su vez puede resolverse exactamente mediante una integral de contorno y una suma iterativa [ 16 ] como
- ;\mathbf {t} )=\int _{-\infty }^{\infty }x^{k}\cdot B_{i,n,{\textbf {norm}}}(x\mid t_{1}\dots t_{j})\,dx={\frac {\Gamma (k+1)\Gamma (m)}{\Gamma (m+k)}}\cdot D_{k}(\mathbf {m} ,\mathbf {t} )}
con
y. Aquí,representa un vector con elposiciones de nudos yun vector con las multiplicidades de nodos respectivas. Por lo tanto, se puede calcular cualquier momento de una función de densidad de probabilidad.representado exactamente mediante una suma de funciones base B-spline, sin recurrir a técnicas numéricas.
Relación con Bézier por partes/compuesto
Una curva de Bézier es también una curva polinómica definible mediante una recursión a partir de curvas de menor grado de la misma clase y codificada en términos de puntos de control, pero una diferencia clave es que todos los términos en la recursión para un segmento de curva de Bézier tienen el mismo dominio de definición (generalmente), mientras que los soportes de los dos términos en la recursión B-spline son diferentes (los subintervalos más externos no son comunes). Esto significa que una curva de Bézier de gradodado porLos puntos de control constan de aproximadamenteEn su mayoría, los segmentos son independientes, mientras que la curva B-spline con los mismos parámetros realiza una transición suave entre subintervalos. Para obtener algo comparable a partir de una curva de Bézier, sería necesario imponer una condición de suavidad en las transiciones entre segmentos, lo que daría como resultado una especie de spline de Bézier (para la cual muchos puntos de control estarían determinados por el requisito de suavidad).
Una curva de Bézier compuesta/por partes es una serie de curvas de Bézier unidas con al menoscontinuidad (el último punto de una curva coincide con el punto de inicio de la siguiente curva). Dependiendo de la aplicación, se requieren suavidades adicionales (comooSe puede añadir continuidad). [ 17 ]Las curvas continuas tienen tangentes idénticas en el punto de quiebre (donde se encuentran las dos curvas).Las curvas continuas tienen una curvatura idéntica en el punto de quiebre. [ 18 ]
Ajuste de curvas
Generalmente, en el ajuste de curvas , un conjunto de puntos de datos se ajusta a una curva definida por alguna función matemática. Por ejemplo, los tipos comunes de ajuste de curvas utilizan un polinomio o un conjunto de funciones exponenciales . Cuando no hay una base teórica para elegir una función de ajuste, la curva se puede ajustar con una función spline compuesta por una suma de B-splines, utilizando el método de mínimos cuadrados . [ 19 ] [ nota 2 ] Por lo tanto, la función objetivo para la minimización de mínimos cuadrados es, para una función spline de grado k ,
donde W ( x ) es un peso, e y ( x ) es el valor de datos en x . Los coeficientesson los parámetros que deben determinarse. Los valores de los nudos pueden ser fijos o tratados como parámetros.
La principal dificultad en la aplicación de este proceso radica en determinar el número de nodos a utilizar y su ubicación. De Boor sugiere diversas estrategias para abordar este problema. Por ejemplo, el espaciado entre nodos se reduce proporcionalmente a la curvatura (segunda derivada) de los datos. Se han publicado algunas aplicaciones. Por ejemplo, se ha investigado el uso de B-splines para el ajuste de curvas lorentzianas y gaussianas simples . Se han calculado funciones spline óptimas de grados 3 a 7 inclusive, basadas en disposiciones simétricas de 5, 6 y 7 nodos, y el método se aplicó para el suavizado y la diferenciación de curvas espectroscópicas. [ 20 ] En un estudio comparable, la versión bidimensional del filtrado de Savitzky-Golay y el método spline produjeron mejores resultados que el filtrado de media móvil o de Chebyshev . [ 21 ]
Diseño asistido por ordenador y gráficos por ordenador
En las aplicaciones de diseño asistido por computadora y gráficos por computadora , una curva spline a veces se representa como, una curva paramétrica de algún parámetro realEn este caso la curvapueden tratarse como dos o tres funciones de coordenadas separadas., oLas funciones de coordenadas,yson cada una funciones spline, con un conjunto común de valores de nodos..
Debido a que las B-splines forman funciones base, cada una de las funciones de coordenadas puede expresarse como una suma lineal de B-splines, por lo que tenemos
Los pesos,yse pueden combinar para formar puntosen el espacio 3D. Estos puntosSe les conoce comúnmente como puntos de control.
Trabajando a la inversa, una secuencia de puntos de control, valores de nodos y orden de la B-spline definen una curva paramétrica. Esta representación de una curva mediante puntos de control tiene varias propiedades útiles:
- Los puntos de controldefine una curva. Si todos los puntos de control se transforman juntos de alguna manera, como por ejemplo trasladándolos, rotándolos, escalándolos o moviéndolos mediante cualquier transformación afín , entonces la curva correspondiente se transforma de la misma manera.
- Debido a que las B-splines no son cero solo para un número finito de intervalos de nodos, si se mueve un solo punto de control, el cambio correspondiente en la curva paramétrica se produce justo en el rango de parámetros de un pequeño número de intervalos de nodos.
- Porquey en todo momento cadaEntonces, la curva permanece dentro del cuadro delimitador de los puntos de control. Además, en cierto sentido, la curva sigue a grandes rasgos los puntos de control.
Una característica menos deseable es que la curva paramétrica no interpola los puntos de control. Por lo general, la curva no pasa por los puntos de control.
Splines cúbicos B
Una curva B-spline cúbicacon un parámetro normalizadose define mediante cuatro nodos (es decir, puntos de control ),,, y. Forma un polinomio de grado 3 que se puede escribir como
- .
Esto corresponde a polinomios B-spline.
y la curva puede evaluarse comoAmpliando esto, podemos escribir la forma polinómica completa como se muestra a continuación.
- .
Dado que se trata de un polinomio cúbico , también podemos escribirlo como una curva de Bézier cúbica con puntos de control. ,,, y, de tal manera que
Una curva B-spline cúbica por partes se forma mediante un conjunto de nodos, y cada cuatro nodos consecutivos definen una parte cúbica de la curva con la formulación anterior.
Splines B sujetas
Si el primero y el últimonudos (es el grado) del vector del nudo tienen el mismo valor, los puntos de inicio y fin de la curva se superponen a los puntos de control, lo que da como resultado B-splines restringidas.
Ejemplo de vectores de nodos para B-splines cúbicas fijas conLos puntos de control son los siguientes:
Una B-spline restringida se puede dividir en segmentos de B-spline por partes con un parámetro normalizado., definido por cuatro puntos de control,,, ySe puede escribir como:
- ,
dóndees una matriz de coeficientes .
También podemos escribirla como una curva de Bézier cúbica con puntos de control. ,,, y, de tal manera que
- .
Vectores de nodos, matriz de coeficientesy matriz de transformaciónpara cada segmento B-spline son los siguientes: [ 22 ] [ 23 ]
NURBS

En el diseño asistido por ordenador , la fabricación asistida por ordenador y los gráficos por ordenador , una potente extensión de las B-splines son las NURBS (Nuniform Rational B-splines). Las NURBS son esencialmente B-splines en coordenadas homogéneas . Al igual que las B-splines, se definen por su orden, un vector de nodos y un conjunto de puntos de control, pero a diferencia de las B-splines simples, cada punto de control tiene un peso. Cuando el peso es igual a 1, una NURBS es simplemente una B-spline y, como tal, generaliza tanto las B-splines como las curvas y superficies de Bézier , siendo la principal diferencia la ponderación de los puntos de control, que hace que las curvas NURBS sean "racionales".

Al evaluar una curva NURBS con diferentes valores de los parámetros, se puede trazar su trayectoria en el espacio; asimismo, al evaluar una superficie NURBS con diferentes valores de los dos parámetros, se puede representar la superficie en el espacio cartesiano.
Al igual que las B-splines, los puntos de control NURBS determinan la forma de la curva. Cada punto de la curva se calcula mediante la suma ponderada de varios puntos de control. El peso de cada punto varía según el parámetro que la rige. Para una curva de grado d , la influencia de cualquier punto de control solo es distinta de cero en d + 1 intervalos (intervalos de nodos) del espacio de parámetros . Dentro de esos intervalos, el peso cambia según una función polinómica (funciones base) de grado d . En los límites de los intervalos, las funciones base tienden suavemente a cero, y la suavidad viene determinada por el grado del polinomio.
El vector de nodos es una secuencia de valores de parámetros que determina dónde y cómo los puntos de control afectan la curva NURBS. El número de nodos siempre es igual al número de puntos de control más el grado de la curva más uno. Cada vez que el valor del parámetro entra en un nuevo intervalo de nodos, se activa un nuevo punto de control, mientras que el anterior se descarta.
Una curva NURBS tiene la siguiente forma: [ 24 ]
Aquí la notación es la siguiente: u es la variable independiente (en lugar de x ), k es el número de puntos de control, N es una B-spline (en lugar de B ), n es el grado del polinomio, P es un punto de control y w es un peso. El denominador es un factor de normalización que se evalúa como uno si todos los pesos son uno.
Es costumbre escribir esto como
en el que las funciones
se conocen como funciones base racionales.
Una superficie NURBS se obtiene como el producto tensorial de dos curvas NURBS, utilizando así dos parámetros independientes u y v (con índices i y j respectivamente): [ 25 ]
con
como funciones base racionales.
Véase también
Notas
- ↑ En rigor, las B-splines se definen generalmente como continuas por la izquierda.
- ↑ De Boor proporciona rutinas FORTRAN para el ajuste por mínimos cuadrados de datos experimentales.
- ↑ El vector de nudo es equivalente a, porque los elementos en ambos extremos del vector de nudos no se utilizan en el cálculo de las funciones base. Pueden ser valores arbitrarios.
Referencias
- ↑ Hartmut Prautzsch; Wolfgang Böhm; Marco Paluszny (2002). Técnicas Bézier y B-Spline . Matemáticas y Visualización. Berlín, Heidelberg: Springer Science & Business Media. pag. 63.doi : 10.1007 /978-3-662-04919-8 . ISBN 978-3-540-43761-1OCLC 851370272
- ↑ Farin, GE (2002). Curvas y superficies para CAGD: una guía práctica . Morgan Kaufmann. pág. 119.
- ↑ de Boor, pág. 114.
- ↑ Gary D. Knott (2000), Interpolación de splines cúbicos . Springer. pág. 151.
- ↑ Talebitooti, R.; Shojaeefard, MH; Yarmohammadisatri, Sadegh (2015). "Optimización del diseño de forma de un tanque cilíndrico mediante curvas b-spline". Computer & Fluids . 109 : 100–112 . doi : 10.1016/j.compfluid.2014.12.004 .
- ↑ de Boor, pág. 113.
- ↑ de Boor, pág. 131.
- ↑ de Boor, pág. 134.
- ↑ Lee, ETY (diciembre de 1982). "Una rutina simplificada para el cálculo de B-splines". Computing . 29 (4): 365– 371. doi : 10.1007/BF02246763 . S2CID 2407104 .
- ↑ Lee, ETY (1986). "Comentarios sobre algunos algoritmos de B-spline". Computing . 36 (3): 229– 238. doi : 10.1007/BF02240069 . S2CID 7003455 .
- ↑ de Boor, pág. 322.
- ↑ Eilers, PHC y Marx, BD (1996). Suavizado flexible con B-splines y penalizaciones (con comentarios y réplica). Statistical Science 11(2): 89–121.
- ↑ Eilers, Paul HC; Marx, Brian D. (2003). "Calibración multivariante con interacción de temperatura mediante regresión de señal penalizada bidimensional". Chemometrics and Intelligent Laboratory Systems . 66 (2): 159– 174. doi : 10.1016/S0169-7439(03)00029-7 .
- ↑ de Boor, pág. 115.
- ↑ Carlson, BC (1991). "B-splines, funciones hipergeométricas y promedios de Dirichlet" . Journal of Approximation Theory . 67 (3): 311– 325. doi : 10.1016/0021-9045(91)90006-V .
- ↑ Glüsenkamp, T. (2018). "Tratamiento probabilístico de la incertidumbre derivada del tamaño finito de los datos ponderados de Monte Carlo". EPJ Plus . 133 (6): 218. arXiv : 1712.01293 . Bibcode : 2018EPJP..133..218G . doi : 10.1140/epjp/i2018-12042-x . S2CID 125665629 . )
- ↑ Eugene V. Shikin; Alexander I. Plis (14 de julio de 1995). Manual sobre splines para el usuario . CRC Press. págs. 96–. ISBN 978-0-8493-9404-1.
- ↑ Wernecke, Josie (1993). "8" . The Inventor Mentor: Programming Object-Oriented 3D Graphics with Open Inventor, Release 2 (1.ª ed.). Boston, MA, EE. UU.: Addison-Wesley Longman Publishing Co., Inc. ISBN 978-0201624953.
- ^ de Boor, Capítulo XIV, p. 235.
- ↑ Gans, Peter; Gill, J. Bernard (1984). "Suavizado y diferenciación de curvas espectroscópicas mediante funciones spline". Applied Spectroscopy . 38 (3): 370– 376. Bibcode : 1984ApSpe..38..370G . doi : 10.1366/0003702844555511 . S2CID 96229316 .
- ↑ Vicsek, Maria; Neal, Sharon L.; Warner, Isiah M. (1986). "Filtrado en el dominio del tiempo de datos de fluorescencia bidimensionales" . Applied Spectroscopy . 40 (4): 542– 548. Bibcode : 1986ApSpe..40..542V . doi : 10.1366/0003702864508773 . S2CID 28705788. Archivado del original el 23 de junio de 2017.
- ↑ Cohen, Elaine; Riesenfeld, Richard F. (1982). "Representaciones matriciales generales para curvas de Bezier y B-spline". Computers in Industry . 3 : 13–15 .
- ↑ "Introducción a las curvas B-Spline para ingenieros de implementación" . Qiita .
- ↑ Piegl y Tiller, capítulo 4, sección 2
- ↑ Piegl y Tiller, capítulo 4, sección 4
Obras citadas
Lecturas adicionales
- Richard H. Bartels; John C. Beatty; Brian A. Barsky (1987). Introducción a las splines para su uso en gráficos por computadora y modelado geométrico . Morgan Kaufmann. ISBN 978-1-55860-400-1.
- Jean Gallier (1999). Curvas y superficies en el modelado geométrico: teoría y algoritmos . Morgan Kaufmann. Capítulo 6. Curvas B-spline.Este libro está agotado y se puede conseguir gratuitamente a través del autor.
- Hartmut Prautzsch; Wolfgang Böhm; Marco Paluszny (2002). Técnicas Bézier y B-Spline . Medios de ciencia y negocios de Springer. ISBN 978-3-540-43761-1.
- David Salomon (2006). Curvas y superficies para gráficos por computadora . Springer. Capítulo 7. Aproximación mediante B-splines. ISBN 978-0-387-28452-1.
- Hovey, Chad (2022). Formulación e implementación en Python de la geometría de Bézier y B-Spline. SAND2022-7702C . (153 páginas)
Enlaces externos
- Weisstein, Eric W. "B-Spline" . MathWorld .
- Ruf, Johannes. "B-splines de tercer orden en una cuadrícula no uniforme" (PDF) . Archivado del original (PDF) el 6 de noviembre de 2013. Consultado el 2 de mayo de 2012 .
- B-spline bivariada de numpy
- Curvas B interactivas con JSXGraph
- TinySpline: Biblioteca C de código abierto con enlaces para varios lenguajes.
- Curvas B-spline uniformes no racionales: modelado de curvas en el espacio 2D. Autor: Stefan G. Beck
- Editor B-Spline de Shukant Pal
- Splines (matemáticas)
- Interpolación