En computación gráfica, el spline centrípeto de Catmull-Rom es una variante del interpolador cúbico de Hermite, formulada originalmente por Edwin Catmull y Raphael Rom,[1] que puede calcularse utilizando un algoritmo recursivo propuesto por Barry y Goldman.[2] Es un tipo de spline de interpolación definido por cuatro puntos de control(por los que pasa), pero con la curva dibujada solo dePara un segmento de curvay la secuencia de nodos, el spline centrípeto de Catmull-Rom se puede generar mediante: donde y en el queva de 0 a 1 para la parametrización de los nodos, yPara el spline centrípeto de Catmull-Rom, el valor de, la curva resultante es el spline uniforme de Catmull-Rom estándar; y cuando, el resultado es el spline cordal de Catmull-Rom.a las ecuaciones del splinese muestra que el valor de la curva en{\displaystyle \mathbf {C} =\mathbf {P} _{1}}De manera similar, sustituiren las ecuaciones spline muestra que{\displaystyle \mathbf {C} =\mathbf {P} _{2}}Esto es cierto independientemente del valor de, ya que la ecuación deno es necesaria para calcular el valor deLa extensión a puntos 3D se logra simplemente considerandorespecto a un punto 3D genéricoy El spline centrípeto de Catmull-Rom tiene varias propiedades matemáticas deseables en comparación con la formulación original y otros tipos de splines de Catmull-Rom.[3] En primer lugar, no formará un bucle ni una autointersección dentro de un segmento de curva.En segundo lugar, nunca genera cúspides dentro de un segmento de curva.En tercer lugar, sigue más estrictamente los puntos de control.[4] En visión artificial, se ha utilizado el spline centrípeto de Catmull-Rom para formular un modelo activo para la segmentación.El método se denomina modelo de spline activo.[5] El modelo está diseñado sobre la base del modelo de forma activo, pero utiliza un spline centrípeto de Catmull-Rom para unir dos puntos sucesivos (el modelo de forma activa utiliza una línea recta simple), de modo que el número total de puntos necesarios para representar una forma es menor.El uso del spline centrípeto de Catmull-Rom simplifica mucho el entrenamiento de un modelo de forma y permite una mejor manera de editar un contorno después de la segmentación.La siguiente es una implementación del spline de Catmull-Rom en Python, que produce el gráfico que se muestra a continuación.
Formulación piramidal de Barry y Goldman
Parametrización de nodos para el algoritmo de Catmull-Rom
Animación gif para la parametrización
uniforme
,
centrípeta
y
cordal
del spline de Catmull-Rom, dependiendo del valor de
α
Segmento de spline de Catmull-Rom
centrípeto
en 3D
En esta figura, hay una autointersección/bucle en un spline de Catmull-Rom uniforme (verde), mientras que para el spline de Catmull-Rom cordal (rojo), la curva no sigue estrictamente los puntos de control
Gráfico obtenido mediante el código de ejemplo en Python proporcionado anteriormente