En el subcampo matemático del análisis numérico , un B-spline o base spline es una función spline que tiene un soporte mínimo con respecto a un grado , suavidad y partición de dominio determinados. Cualquier función spline de un grado determinado se puede expresar como una combinación lineal de B-splines de ese grado. Los B-splines cardinales tienen nudos equidistantes entre sí. Los B-splines se pueden utilizar para el ajuste de curvas y la diferenciación numérica de datos experimentales.
En el diseño asistido por computadora y en los gráficos por computadora , las funciones spline se construyen como combinaciones lineales de B-splines con un conjunto de puntos de control.
El término "B-spline" fue acuñado por Isaac Jacob Schoenberg [1] en 1978 y es la abreviatura de base spline. [2] Una función spline de orden es una función polinómica por partes de grado . Los lugares donde se unen las piezas se conocen como nudos. La propiedad clave de las funciones spline es que ellas y sus derivadas pueden ser continuas, dependiendo de las multiplicidades de los nudos.
Los B-splines de orden son funciones base para funciones spline del mismo orden definidas sobre los mismos nudos, lo que significa que todas las funciones spline posibles se pueden construir a partir de una combinación lineal de B-splines, y solo hay una combinación única para cada función spline. . [3]
Un B-spline de orden es una colección de funciones polinómicas de grado por partes en una variable . Los valores de dónde se encuentran las piezas del polinomio se conocen como nudos, se denotan y se clasifican en orden no decreciente.
Para una secuencia dada de nudos, existe, hasta un factor de escala, un spline único que satisface
Si añadimos la restricción adicional de que
para todo entre los nudos y , entonces el factor de escala de se fija. Los nudos intermedios (y no incluidos) se denominan nudos internos.
Los B-splines se pueden construir mediante la fórmula de recursividad de Cox-de Boor. Comenzamos con los B-splines de grado , es decir, polinomios constantes por partes.
Los B-splines de mayor grado se definen mediante recursividad
Una función B-spline es una combinación de bandas flexibles que está controlada por una serie de puntos llamados puntos de control, creando curvas suaves. Estas funciones se utilizan para crear y gestionar formas y superficies complejas utilizando varios puntos. La función B-spline y las funciones de Bézier se aplican ampliamente en los métodos de optimización de formas. [4]
Un B-spline de orden es una función polinómica por partes de grado en una variable . Se define sobre ubicaciones , llamadas nudos o puntos de interrupción, que deben estar en orden no descendente . El B-spline contribuye sólo en el rango entre el primero y el último de estos nudos y es cero en otros lugares. Si cada nudo está separado por la misma distancia (donde ) de su predecesor, el vector del nudo y los B-splines correspondientes se denominan "uniformes" (ver cardinal B-spline a continuación).
Para cada intervalo de nudo finito donde es distinto de cero, un B-spline es un polinomio de grado . Un B-spline es una función continua en los nudos. [nota 1] Cuando todos los nudos que pertenecen al B-spline son distintos, sus derivadas también son continuas hasta la derivada de grado . Si los nudos coinciden en un valor dado de , la continuidad del orden derivado se reduce en 1 por cada nudo coincidente adicional. Los B-splines pueden compartir un subconjunto de sus nudos, pero dos B-splines definidos exactamente sobre los mismos nudos son idénticos. En otras palabras, un B-spline se define únicamente por sus nudos.
Se distinguen nudos internos y puntos finales. Los nudos internos cubren el dominio que le interesa. Dado que un solo B-spline ya se extiende sobre los nudos, se deduce que los nudos internos deben extenderse con puntos finales en cada lado, para brindar soporte completo al primer y último B-spline. , que afectan los intervalos internos de los nudos. Los valores de los puntos finales no importan, normalmente simplemente se repite el primer o último nudo interno.
La utilidad de los B-splines radica en el hecho de que cualquier función spline de orden en un conjunto dado de nudos se puede expresar como una combinación lineal de B-splines:
Los B-splines desempeñan el papel de funciones básicas para el espacio funcional spline, de ahí el 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 nudos. [5]
Las expresiones para las piezas polinómicas se pueden derivar mediante la fórmula de recursividad de Cox-de Boor [6]
Es decir, es una constante por partes uno o cero que indica en qué tramo de nudo se encuentra x (cero si se repite el tramo de nudo j ). La ecuación de recursividad consta de dos partes:
aumenta de cero a uno a medida que x va de a , y
aumenta de uno a cero a medida que x pasa de a . Los B s correspondientes son cero fuera de esos rangos respectivos. Por ejemplo, es una función triangular que es cero por debajo de , aumenta a uno en y vuelve a cero en y más allá . Sin embargo, debido a que las funciones de base B-spline tienen soporte local , las B-splines generalmente se calculan mediante algoritmos que no necesitan evaluar funciones de 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 los B-splines de orden n en x . [7] 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.
La aplicación de la fórmula de recursividad con los nudos en da las piezas del B-spline uniforme de orden 3
Estas piezas se muestran en el diagrama. La propiedad de continuidad de una función spline cuadrática y su primera derivada en los nudos internos se ilustran a continuación
La segunda derivada de un B-spline de grado 2 es discontinua en los nudos:
Se han propuesto variantes más rápidas del algoritmo de Boor, pero adolecen de una estabilidad comparativamente menor. [8] [9]
Un B-spline cardinal tiene una separación h constante entre nudos. Los B-splines cardinales para un orden dado n son simplemente copias desplazadas entre sí. Se pueden obtener a partir de la definición más simple. [10]
La notación de "marcador de posición" se utiliza para indicar que la n -ésima diferencia dividida de la función de las dos variables t y x debe tomarse fijando x y considerándola como una función de t únicamente.
Un B-spline cardinal tiene nudos espaciados uniformemente, por lo tanto, la interpolación entre los nudos equivale a una convolución con un núcleo suavizado.
Ejemplo, si queremos interpolar tres valores entre nodos B-spline ( ), podemos escribir la señal como
La convolución de la señal con una función rectangular proporciona valores B-spline interpolados de primer orden. La interpolación B-spline de segundo orden es 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 B-spline rápida en un dominio de muestra uniforme se puede realizar mediante filtrado de medias iterativo. Alternativamente, una función rectangular es igual a sinc en el dominio de Fourier . Por lo tanto, la interpolación spline cúbica equivale a multiplicar la señal en el dominio de Fourier por sinc 4 .
Consulte Distribución de Irwin-Hall # Casos especiales de expresiones algebraicas para los B-splines cardinales de grado 1 a 4.
El término P-spline significa "B-spline penalizado". Se refiere al uso de la representación B-spline donde los coeficientes están determinados en parte por los datos que se van a ajustar y en parte por una función de penalización adicional que tiene como objetivo imponer suavidad para evitar el sobreajuste . [11]
Las aproximaciones de datos bidimensionales y multidimensionales P-spline pueden utilizar el producto de división de caras de matrices para minimizar las operaciones de cálculo. [12]
La derivada de un B-spline de grado k es simplemente una función de B-splines de grado k − 1: [13]
Esto implica que
lo que muestra que existe una relación simple entre la derivada de una función spline y los B-splines de grado uno menor.
Los B-splines univariados, es decir, B-splines donde las posiciones de los nudos se encuentran en una sola dimensión, se pueden utilizar para representar funciones de densidad de probabilidad 1-d . Un ejemplo es una suma ponderada de funciones de orden de base B-spline , 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 constante de normalización . El k -ésimo momento bruto de un B-spline normalizado se puede escribir como el promedio de Dirichlet de Carlson , [14] que a su vez se puede resolver exactamente mediante una integral de contorno y una suma iterativa [15] como
con
y . Aquí, representa un vector con las posiciones de los nudos y un vector con las respectivas multiplicidades de los nudos. Por lo tanto, se puede calcular exactamente cualquier momento de una función de densidad de probabilidad representada por una suma de funciones básicas B-spline, sin recurrir a técnicas numéricas.
Una curva de Bézier también es una curva polinómica que se puede definir mediante una recursividad de curvas de menor grado de la misma clase y codificadas en términos de puntos de control, pero una diferencia clave es que todos los términos de la recursividad de 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 recursividad B-spline son diferentes (los subintervalos más externos no son comunes). Esto significa que una curva de grado de Bézier dada por puntos de control consta en su mayoría de segmentos independientes, mientras que el B-spline con los mismos parámetros pasa suavemente de un subintervalo a otro. 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 algún tipo de spline de Bézier (para el cual muchos puntos de control estarían determinados por el requisito de suavidad).
Una curva de Bézier compuesta o por partes es una serie de curvas de Bézier unidas con al menos continuidad C0 (el último punto de una curva coincide con el punto inicial de la siguiente curva). Dependiendo de la aplicación, se pueden agregar requisitos de suavidad adicionales (como continuidad C1 o C2). [16] Las curvas continuas C1 tienen tangentes idénticas en el punto de ruptura (donde se encuentran las dos curvas). Las curvas continuas C2 tienen una curvatura idéntica en el punto de ruptura. [17]
Por lo general, 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 existe 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 . [18] [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 referencia en x . Los coeficientes son los parámetros a determinar. Los valores de los nudos pueden fijarse o tratarse como parámetros.
La principal dificultad al aplicar este proceso está en determinar el número de nudos a utilizar y dónde deben colocarse. de Boor sugiere varias estrategias para abordar este problema. Por ejemplo, el espacio entre nudos disminuye en proporción a la curvatura (segunda derivada) de los datos. [ cita necesaria ] Se han publicado algunas aplicaciones. Por ejemplo, se ha investigado el uso de B-splines para ajustar curvas simples de Lorentz y Gauss . Se calcularon funciones spline óptimas de grados 3 a 7 inclusive, basadas en disposiciones simétricas de 5, 6 y 7 nudos, y se aplicó el método para suavizar y diferenciar curvas espectroscópicas. [19] En un estudio comparable, la versión bidimensional del filtrado Savitzky-Golay y el método spline produjeron mejores resultados que el filtrado de media móvil o Chebyshev . [20]
En 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 real . En este caso, la curva se puede tratar como dos o tres funciones de coordenadas separadas , o . Las funciones de coordenadas , y son funciones spline, con un conjunto común de valores de nudo .
Debido a que los B-splines forman funciones base, cada una de las funciones de coordenadas se puede expresar como una suma lineal de B-splines, por lo que tenemos
Los pesos y se pueden combinar para formar puntos en el espacio tridimensional. Estos puntos se conocen comúnmente como puntos de control.
Trabajando a la inversa, una secuencia de puntos de control, valores de nudos y orden del B-spline definen una curva paramétrica. Esta representación de una curva por puntos de control tiene varias propiedades útiles:
Una característica menos deseable es que la curva paramétrica no interpola los puntos de control. Normalmente la curva no pasa por los puntos de control.
Una curva B-spline cúbica con un parámetro normalizado está definida por 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 se puede evaluar como . Ampliando esto, podemos escribir la forma polinómica completa como se muestra a continuación.
Como se trata de un polinomio cúbico, también podemos escribirlo como una curva de Bézier cúbica con puntos de control , , y , tal que
Un B-spline cúbico por partes está formado por un conjunto de nodos y cada cuatro nodos consecutivos define una parte cúbica de la curva con la formulación anterior.
En el diseño asistido por computadora , la fabricación asistida por computadora y los gráficos por computadora , una poderosa extensión de los B-splines son los B-splines racionales no uniformes (NURBS). Los NURBS son esencialmente B-splines en coordenadas homogéneas . Al igual que los B-splines, se definen por su orden, un vector de nudo y un conjunto de puntos de control, pero a diferencia de los B-splines simples, cada punto de control tiene un peso. Cuando el peso es igual a 1, un NURBS es simplemente un B-spline y, como tal, NURBS generaliza tanto los 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 NURBS en varios valores de los parámetros, se puede trazar la curva en el espacio; Asimismo, al evaluar una superficie NURBS en varios valores de los dos parámetros, la superficie se puede representar en el espacio cartesiano.
Al igual que los B-splines, los puntos de control NURBS determinan la forma de la curva. Cada punto de la curva se calcula tomando una suma ponderada de varios puntos de control. El peso de cada punto varía según el parámetro rector. Para una curva de grado d , la influencia de cualquier punto de control es sólo distinta de cero en d +1 intervalos (tramos de nudos) 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 van suavemente a cero, estando la suavidad determinada por el grado del polinomio.
El vector de nudo 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 nudos 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 ingresa en un nuevo tramo de nudo, se activa un nuevo punto de control, mientras que un punto de control antiguo se descarta.
Una curva NURBS toma la siguiente forma: [21]
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 un B-spline (usado 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 de base racional.
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): [22]
con
como funciones de base racional.
Trabajos citados