stringtranslate.com

B-spline

Curva spline dibujada como una suma ponderada de B-splines con puntos de control/polígono de control y curvas de componentes marcadas

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.

Introducción

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]

Definición

B-spline cuadrático cardinal con vector de nudo (0, 0, 0, 1, 2, 3, 3, 3) y puntos de control (0, 0, 1, 0, 0) y su primera derivada
B-spline cúbico cardinal con vector de nudos (−2, −2, −2, −2, −1, 0, 1, 2, 2, 2, 2) y puntos de control (0, 0, 0, 6, 0, 0, 0), y su primera derivada
B-spline cuártico cardinal con vector de nudo (0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 5, 5, 5, 5) y puntos de control (0, 0, 0, 0, 1) , 0, 0, 0, 0), y sus derivadas primera y segunda

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

Propiedades

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]

Cardenal B-spline

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.

P-spline

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]

Expresiones derivadas

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.

Momentos de B-splines univariados

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.

Relación con Bézier por partes/compuesto

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]

Ajuste de curvas

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]

Diseño asistido por ordenador y gráficos por ordenador.

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:

  1. Los puntos de control definen una curva. Si todos los puntos de control se transforman juntos de alguna manera, como trasladarlos, rotarlos, escalarlos o moverlos mediante cualquier transformación afín, entonces la curva correspondiente se transforma de la misma manera.
  2. Debido a que los B-splines son distintos de cero solo para un número finito de intervalos de nudos, si se mueve un solo punto de control, el cambio correspondiente a la curva paramétrica está justo por encima del rango de parámetros de un número pequeño de intervalos de nudos.
  3. Porque , y en todo momento , la curva permanece dentro del cuadro delimitador de los puntos de control. Además, en cierto sentido, la curva sigue en términos generales los puntos de control.

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.

B-Splines cúbicos

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.

NURBS

Curva NURBS – curva polinómica definida en coordenadas homogéneas (azul) y su proyección en el plano – curva racional (rojo)

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.

Ver también

Notas

  1. ^ Estrictamente hablando, los B-splines generalmente se definen como continuos a la izquierda.
  2. ^ de Boor ofrece rutinas FORTRAN para el ajuste de datos experimentales por mínimos cuadrados.

Referencias

  1. ^ de Boor, pag. 114.
  2. ^ Gary D. Knott (2000), Interpolación de splines cúbicos . Saltador. pag. 151.
  3. ^ 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-1. OCLC  851370272.
  4. ^ Talebitooti, ​​R.; Shojaeefard, MH; Yarmohammadisatri, Sadegh (2015). "Optimización del diseño de forma de tanque cilíndrico mediante curvas b-spline". Computadora y Fluidos . 109 : 100-112. doi :10.1016/j.compfluid.2014.12.004.
  5. ^ de Boor, pag. 113.
  6. ^ de Boor, pág.131.
  7. ^ de Boor, pag. 134.
  8. ^ Lee, ETY (diciembre de 1982). "Una rutina de cálculo B-Spline simplificada". Informática . 29 (4): 365–371. doi :10.1007/BF02246763. S2CID  2407104.
  9. ^ Lee, ETY (1986). "Comentarios sobre algunos algoritmos B-spline". Informática . 36 (3): 229–238. doi :10.1007/BF02240069. S2CID  7003455.
  10. ^ de Boor, pag. 322.
  11. ^ Eilers, PHC y Marx, BD (1996). Suavizado flexible con B-splines y penalizaciones (con comentarios y réplica). Ciencia estadística 11 (2): 89–121.
  12. ^ Eilers, Paul HC; Marx, Brian D. (2003). "Calibración multivariante con interacción de temperatura mediante regresión de señal penalizada bidimensional". Quimiometría y Sistemas Inteligentes de Laboratorio . 66 (2): 159-174. doi :10.1016/S0169-7439(03)00029-7.
  13. ^ de Boor, pag. 115.
  14. ^ Carlson, antes de Cristo (1991). "B-splines, funciones hipergeométricas y promedios de Dirichlet". Revista de teoría de la aproximación . 67 (3): 311–325. doi : 10.1016/0021-9045(91)90006-V .
  15. ^ Glüsenkamp, ​​T. (2018). "Tratamiento probabilístico de la incertidumbre a partir del tamaño finito de datos ponderados de Monte Carlo". EPJ Plus . 133 (6): 218. arXiv : 1712.01293 . Código Bib : 2018EPJP..133..218G. doi :10.1140/epjp/i2018-12042-x. S2CID  125665629.)
  16. ^ Eugenio V. Shikin; Alejandro I. Plis (14 de julio de 1995). Manual de Splines para el usuario. Prensa CRC. págs.96–. ISBN 978-0-8493-9404-1.
  17. ^ Wernecke, Josie (1993). "8". The Inventor Mentor: Programación de gráficos 3D orientados a objetos con Open Inventor, versión 2 (1ª ed.). Boston, MA, EE. UU.: Addison-Wesley Longman Publishing Co., Inc. ISBN 978-0201624953.
  18. ^ de Boor, Capítulo XIV, p. 235.
  19. ^ Gans, Peter; Gill, J. Bernard (1984). "Suavizado y diferenciación de curvas espectroscópicas mediante funciones spline". Espectroscopia Aplicada . 38 (3): 370–376. Código Bib : 1984ApSpe..38..370G. doi :10.1366/0003702844555511. S2CID  96229316.
  20. ^ Vicsek, María; Neal, Sharon L.; Warner, Isiah M. (1986). "Filtrado en el dominio del tiempo de datos de fluorescencia bidimensionales". Espectroscopia Aplicada . 40 (4): 542–548. Código Bib : 1986ApSpe..40..542V. doi :10.1366/0003702864508773. S2CID  28705788. Archivado desde el original el 23 de junio de 2017.
  21. ^ Piegl y Tiller, capítulo 4, sec. 2
  22. ^ Piegl y Tiller, capítulo 4, sec. 4

Trabajos citados

Otras lecturas

enlaces externos