68 buena alternativa para una reconstrucción efectiva mediante el método propuesto. 6.1.5. Tiempo de cálculo El tiempo de cálculo del particionamiento cuadrilateral es muy bajo. Este no de- pende del número de muestras en los conjuntos de datos, sino del número de puntos de control en el grafo de Delaunay y del número de ejes en el borde del modelo. Incluso para esquemas con un número elevado de puntos de control el tiempo de cálculo del algoritmo no supera 1 segundo. Para 58 puntos de control y 570 vecindarios, el cálculo del particionamiento tardó 0,032s. 6.2. Parametrización El proceso de parametrización es el más importante en un esquema de reconstruc- ción mediante funciones NURBS. Se analizaron los diferentes pasos que componen el método propuesto sobre los modelos de prueba escogidos. 6.2.1. Selección de puntos de control en el plano El método de selección de puntos de control en el plano no presentó errores de cál- culo, esto debido a que se trata de una construcción completamente geométrica que no depende de los datos en el modelo a reconstruir. Al igual que en el particionamiento, el tiempo de cálculo de la selección de puntos de control en el plano durante el proceso de parametrización es muy pequeño, este no depende del número de datos en el modelo a reconstruir, sino del número de cuadriláteros en el particionamiento, del número de ejes en el borde del modelo y del número de divisiones que se requieran en ambas direcciones paramétricas. En una prueba con 494 vecindarios, y 100 divisiones en cada dirección paramétrica (10000 puntos de control sobre cada vecindario), el tiempo promedio del cálculo para el caso regular fue de 0,878ms, y para el caso irregular de 6,84ms. El tiempo total de cálculo fue de 69 0,625s. 6.2.2. Indexación cuadrada El tiempo de cálculo de un algoritmo de búsqueda completa en los procesos de proyección 3D, (punto a punto y punto a triángulo) es muy alto, debido que se deben encontrar los datos objetivos en un conjunto extenso para cada punto de control en la parametrización planar. En el caso de la proyección punto a punto se debe encontrar el punto más cercano a cada dato en la parametrización sobre la nube de puntos. Para solucionar este problema se generó un algoritmo de indexación cuadrada que se encarga de almacenar los puntos de control (o los triángulos) en una estructura matricial de a cuerdo a su posición en el plano, de esta manera, para un punto dado en la parametrización solo se debe analizar un conjunto reducido de muestras que corresponde a los puntos en la nube (o los triángulos en la reconstrucción) que se encuentran más cercanos a dicho punto y por tanto son candidatos a proyección. Figura 6.7: Parametrización - indexación cuadrada En la figura 6.7 se aprecia claramente la diferencia en el tiempo de cálculo entre la indexación cúbica y la búsqueda sobre el espacio de datos completo. Mientras el tiempo de 70 cálculo aumenta exponencialmente con el número de divisiones para la búsqueda en todo el espacio, en la indexación cúbica presenta un comportamiento mucho más estable con tiempos de cálculo muchísimo menores. 6.2.3. Proyección punto a punto La estrategia de proyección punto a punto puede ser aplicada incluso cuando ex- isten errores en la reconstrucción inicial del modelo a reconstruir, esto debido a que la aproximación de la profundidad depende del punto más cercano a cada partición en la parametrización. El algoritmo presenta errores de parametrización, cuando existen puntos sobre la nube que no tienen normales asociadas. Para estos casos específicos se analizaron los puntos más cercanos hasta encontrar un candidato válido. (a) Parametrización Incorrecta (b) Corregida Figura 6.8: Parametrización punto a punto La figura 6.8 muestra una reconstrucción para el modelo buda mediante el método 71 de parametrización punto a punto. En la figura 6.8(a) se aprecia un error en la reconstrucción producto de una parametrización incorrecta debido a la presencia de puntos que no tienen una normal asociada. La figura 6.8(b) muestra la reconstrucción corregida para el modelo buda. Figura 6.9: Parametrización - tiempo de cálculo La figura 6.9 muestra la gráfica de tiempo de cálculo contra el número de divisiones en la parametrización para la proyección punto a punto en los conjuntos de datos rostro, buda y máscara. En la gráfica se aprecia como el tiempo de cálculo se eleva para un número mayor de divisiones, sin embargo, este resulta menor al calcular la proyección punto a triángulo en el conjunto de datos cerámica que en el conjunto válvula. Esto se debe al algoritmo de indexación cuadrada implementado para reducir el tiempo de cálculo del algoritmo. 6.2.4. Proyección punto a triángulo La metodología de proyección punto a triángulo presentó errores de cálculo en pres- encia de agujeros en los conjuntos de datos. Para este caso particular, no se puede encontrar el triángulo más cercano al punto analizado para aproximar la proyección, debido a que el 72 algoritmo está basado sobre el hecho de que cada punto de control en la parametrización está contenido en por lo menos un triángulo de la proyección planar de la reconstrucción inicial. En la proyección punto a triángulo, cuando un modelo tiene pocos triángulos en la reconstrucción inicial, y se parametriza con un número elevado de divisiones y cuadriláteros, la reconstrucción se asemeja a una voxelización triangulada, esto debido a que la proyección es una aproximación de la profundidad hacia un modelo triangulado, y al ser muy fina, su apariencia final será la del modelo triangulado original. Figura 6.10: Parametrización punto a triángulo En la figura 6.10 se aprecia un acercamiento en la parametrización del modelo rostro, el cual cuenta solo con 2849 triángulos. La reconstrucción parece discreta y triangulada, aunque tiene un número elevado de datos (125 cuadriláteros y 100 divisiones en ambas direcciones paramétricas para un total de 1125000 polígonos). 73 Figura 6.11: Parametrización - Tiempo de Cálculo La figura 6.11 muestra la gráfica de tiempo de cálculo contra el número de divisiones en la parametrización para la proyección punto a triángulo en los conjuntos de datos rostro, válvula y cerámica. La tendencia de los tiempos es similar en la proyección punto a punto, sin embargo, con un número mayor de divisiones, el cálculo de la proyección punto a triángulo es más rápido. 6.2.5. Error en la aproximación Se realizó una prueba de error aumentando el número de divisiones en la parame- trización sobre un mismo esquema de particionamiento con 9 cuadriláteros y los mismos puntos de control en todas las pruebas. La figura 6.12 muestra como en un esquema de particionamiento constante, al aumentar el numero de divisiones en la parametrización, el error en la aproximación disminuye considerablemente. Esto de debe a que al elevar la densidad de los datos en la parametrización, se cuenta con un mayor número de puntos de control. 74 Figura 6.12: Parametrización - error de aproximación 6.3. Continuidad Se analizó la continuidad entre las fronteras de los parches NURBS de forma cual- itativa, al comparar las reconstrucciones resultantes de los modelos de prueba mediante la técnica propuesta aplicando el proceso de ajuste de continuidad. La figura 6.13 muestra el efecto visual del ajuste de la continuidad para la reconstrucción del modelo válvula (con 18 cuadriláteros en el particionamiento). Las figuras 6.13(a) y 6.13(b) ilustran el efecto del ajuste de continuidad y de la falta de esta respectivamente, para una parametrización con 10 divisiones en cada dirección paramétrica. De forma similar, las figuras 6.13(c) y 6.13(d) ilustran el efecto del ajuste de continuidad, para una parametrización con 50 divisiones en cada dirección paramétrica. Estos dos ejemplos muestran claramente como el efecto visual del ajuste de continuidad se hace más importante para un nivel de parametrización bajo. 75 (a) (b) (c) (d) Figura 6.13: Continuidad en modelo válvula 6.3.1. Tiempo de cálculo Al igual que en el particionamiento, el tiempo de cálculo del análisis de continuidad es considerablemente bajo y este no depende de la cantidad de datos en el modelo a reconstruir sino del número de cuadriláteros en el particionamiento y del número de divisiones en cada uno de estos. En una prueba con 734 cuadriláteros y 100 divisiones por partición, el tiempo de cálculo del análisis de continuidad fue de 0,316s. 76 6.4. Optimización Se optimizó el error de ajuste en una reconstrucción del modelo cerámica con dos esquemas de particionamiento diferentes (con 9 y 14 cuadriláteros) y con 3 niveles de parametrización diferentes (con 12, 15 y 18 divisiones en ambas direcciones paramétricas). Divisiones error promedio error optimizado tiempo (s) 12 0.2518 0.1057 475.2 15 0.1218 0.0484 636.3 18 0.1123 0.0462 787.5 Tabla 6.2: Optimización con 9 vecindarios La tabla 6.2 muestra el error promedio de ajuste, el error optimizado y el tiempo de cálculo total para el proceso de optimización en el esquema de particionamiento con 9 vecindarios. Divisiones error promedio error optimizado tiempo (s) 12 0.1602 0.0672 836.4s 15 0.1052 0.0418 1120.3s 18 0.0923 0.0379 1432.8s Tabla 6.3: Optimización con 14 vecindarios La tabla 6.3 muestra los resultados para un esquema de particionamiento con 14 vecindarios. 77 6.5. Reconstrucción completa El proceso de reconstrucción completo fue aplicado a los modelos cerámica pre- colombina y máscara. Figura 6.14: Reconstrucción cerámica precolombina La figura 6.14 muestra la reconstrucción del modelo cerámica mediante el método propuesto. Para esta reconstrucción se emplearon 11 puntos de control seleccionados manualmente. El particionamiento cuenta con 53 cuadriláteros, de los cuales 14 son irregulares y pertenecen al borde exterior del modelo; el tiempo de cálculo del particionamiento fue de 0,016s. Se emplearon 30 divisiones en cada dirección paramétrica para el proceso de parametrización, la cual fue calculada mediante el método de proyección punto a punto; el tiempo de cálculo de la parametrización fue de 4,797s. En la reconstrucción inicial, el error en la aproximación fue de 0,0123, el cual luego de aplicar el proceso de optimización se redujo hasta 0,0046; el tiempo de cálculo de la optimización fue de 7832s. 78 Figura 6.15: Reconstrucción máscara La figura 6.15 muestra la reconstrucción del modelo máscara mediante el método propuesto. Para esta reconstrucción se emplearon 8 puntos de control seleccionados automáticamente. El particionamiento cuenta con 32 cuadriláteros, de los cuales 20 son irregulares, 12 pertenecen al borde exterior del modelo, y 8 pertenecen a la caracterización de los agujeros; el tiempo de cálculo del particionamiento fue de 0,012s. Se emplearon 20 divisiones en cada dirección paramétrica para el proceso de parametrización, la cual fue calculada mediante el método de proyección punto a triángulo, el tiempo de cálculo de la parametrización fue de 23,478s. En la reconstrucción inicial, el error en la aproximación fue de 0,0532, el cual luego de aplicar el proceso de optimización se redujo hasta 0,0154, el tiempo de cálculo de la optimización fue de 4254s. Capítulo 7 Conclusiones y Trabajo Futuro 7.1. Conclusiones Las funciones NURBS presentan una formulación matemática unificada que permite su fácil implementación y digitalización, además, el alto grado de adaptación y la capacidad de aproximación local hacen de las superficies NURBS una herramienta poderosa para generar modelos computacionales de objetos tridimensionales a partir de datos de rango. El método de particionamiento propuesto puede ser aplicado a conjuntos de datos compuestos por uno a más imágenes de rango. El esquema empleado permite crear vecindarios irregulares que rastrean la curvatura cambiante de bordes irregulares de forma libre, además, el análisis de agujeros en el particionamiento es un aporte que no se encontró en la literatura relacionada. Mediante la estrategia de parametrización diseñada, es posible generar redes de control matriciales ordenadas sobre las cuales se pueden aplicar directamente funciones paramétricas como NURBS o B-Splines. Además, mediante los métodos de proyección implementados se puede aproximar la información tridimensional de vistas parciales de modelos tridimensionales. 79 80 El esquema de ajuste de continuidad C l emoleado es simple y generalizante, debido a que emplea un modelo simplificado de superficies NURBS con una distribución uniforme de la parametrización y un número igual de puntos de control en ambas direcciones paramétricas. Las representación mediante curvas y superficies NURBS con funciones base Splines cúbicas es ideal para el proceso de aproximación, debido a que estas presentan condiciones de continuidad adecuadas que garantizan las derivadas continuas de primer y segundo orden sobre todo el intervalo paramétrico. Además tienen un efecto de filtrado pasabajos deseable y la aproximación de la representación final es lo suficientemente local para ajustarse a curvas y superficies de forma libre. La optimización lineal planteada por Elsaesser para funciones NURBS, presenta facilidades de cálculo, sin embargo, el costo computacional del algoritmo es demasiado alto. El modelo de reconstrucción propuesto ofrece un método de multiresolución directo, ya que es posible ajustar el nivel de detalle de la parametrización variando la cantidad de puntos de control para obtener modelos mas detallados o mas livianos. Al concentrar los puntos de control del grafo de Delaunay de la partición, es posible resaltar detalles específicos del modelo a reconstruir, debido a que el rastreo de los puntos de control sobre la parametrización va a se más fino en zonas donde los puntos de control se encuentren más agrupados. 81 7.2. Trabajo Futuro Desarrollar un método de particionamiento volumétrico efectivo que permita la re- construcción de modelos completos mediante funciones NURBS, considerando los agujeros en el particionamiento o la parametrización. Para dicho particionamiento es necesario encontrar una metodología que permita mapear la distribución superficial de la nube de puntos o de una reconstrucción inicial del modelo para poder integrar la información volumétrica del modelo. Implementar una metodología de selección automática de puntos de control para el grafo de Delaunay en el particionamiento, con el fin de concentrar la parametrización en las zonas con mayor curvatura, y de esta forma representar de manera fina los detalles en objetos de forma libre. Diseñar o aplicar una estrategia de optimización que permita ajustar los parámetros de las funciones NURBS con un costo computacional menor. Bibliografía [1] F. Blais. Review of 20 years of range sensor development. Electronic Imaging, 13:231–240, 2004. [2] Yang Chen and M. Gerard. Surface description of coplex objects from multiple range images. Technical report, Institute for Robotics and Intelligent Systems, University of Southern California, 1994. [3] J. Valencia y J. Gómez. Registro de imágenes de rango para la reconstrucción de modelos faciales. 2004. [4] C. Dorai, G. Wang, A. Jain, and C. Mercer. From images to models: Automatic 3d object model construction from multiple views. In In Proceedings of the 13th IAPR International Conference on Pattern Recognition, 1996. [5] J.B. Gómez y F. Prieto. Reconstrucción de superficies a partir de imágenes de rango. 2004. [6] Jhon William Branch Juan Bernardo Gómez, Flavio Prieto. Reconstrucción de superficies a partir de imágenes de rango, revisión de la literarua. Technical report, Universidad Nacional de Colombia, 2004. [7] M. de Berg y M. van Kreveld. Computational Geometry, Algorithms and Applications. Springer Verlag, second edition edition, 2000. [8] P.J. Besl and N.D. McKay. A method for registration of 3d shapes. 1992. 82 83 [9] T. Wayne. The NURBS Book. Springer-Verlag, New York, 2nd edition, 1997. [10] B Curless. New Methods for Surface Reconstruction from Range Images. PhD thesis, Stanford University, 1997. [11] H Hoppe. Surface reconstruction from unorganized points. Computer Graphics, 1992. [12] H Hoppe. Mesh optimization. Computer Graphics, 1993. [13] Tony DeRose Hugues Hoppe. Piecewise smooth surface reconstruction. Technical report, University of Washington, 1994. [14] C.W. Anderson and Crawford-Hines. Fast generatión of nurbs surfaces from polygonal mesh models of human anatomy. Technical Report Technical Report CS-99-101, Department of Computer Science, Colorado State University, Fort Collins, Colorado State University, 2000. [15] Randrianarivony, M. y Brunnett, G. Parallel implementation of surface reconstruction from noisy samples. 2002. [16] R. Fisher, R. Craig. Constrainde object reconstruction incorporating free-form surfaces. Technical report, University of Edinburgh, 2001. [17] Matthias Eck y Hugues Hoppe. Automatic reconstruction of b-spline surfaces of arbitrary topological type. In : Proceedings of the 23rd annual conference on Computer graphics and interactive techniques, pages 325–334. ACM Press, 1996. [18] In Kyu Park. Sang Uk Lee. Constructing nurbs surface model from scattered and unorganized range data. Second International Conference on 3D Imaging and Modeling, 1999. [19] In Kyu Park. Sang Uk Lee. Geometric model from scattered 3d range data. Seoul National University, 1998. 84 [20] C. Loop. Smooth spline surfaces over irregular meshes. Computer Graphics, pages 303–310, 1994. [21] J. Peters. Constructing cl surfaces of arbitrary topology using bicuadric and bicubis splines. Designing Fair Curves and Surfaces, pages 277–293, 1994. [22] Kai Hormann. From scattered samples to smooth surfaces. Technical report, California Institute of Technology, 2002. [23] K. Maeda, M. y Kumamaru. Shapes modeling of 3d objects based on a hybrid representation using extended b-spline surface model. IEEE Pattern Recognition, 2002. [24] Flavio Prieto Ernesto Cuartas Morales. Optimización de superficies nurbs mediante el algoritmo de levemberg-marquardt. Technical report, Universidad Nacional de Colombia sede Manizales, 2004. [25] David M. Mount. Voronoi diagrams on the surface of a polyhedron. Technical Report Technical Report CAR-TR-121, University of Maryland, Department of Computer Science, 1985. [26] T. Hoppe H. Eck, M. DeRose. Multiresolution analysis of arbitrary meshes. Computer Graphics, pages 173–782, 1995. [27] Xianfeng Gu Ying He, Miao Jin and Hong Qin. A c1 globally interpolatory spline of arbitrary topology. Technical report, Stony Brook University, 2004. [28] Xianfeng Gu Ying He, Miao Jin and Hong Qin. Automatic shape control of triangular b-splines of arbitrary topology. Technical report, Stony Brook University, 2005. [29] Roth, G. y Boulanger, P. Cad model building from multiple range images. In Proceedings of Vision Interface 98, pages 274–281, June 1998. [30] G. Farin. Shape. Springer-Verlag, New York, 3 edition, 2001. 85 [31] Richard Hartley y Andrew Zisserman. Multiple View Geometry in computer vision. Cambridge University, second edition edition, 2003. [32] J. Peters. Smoothness, fairness and the need for better multi-sided patches. Technical report, University of Florida, 2002. [33] S. L. Lee y H. H. Tan. Smooth piecewise biquartic surfaces from quadrilateral control polyhedra with isolated n-sided faces. Computer Aided Desing, 27(10):741–758, 1995. [34] Bernhard Elsaesser. Approximation whit Rational B-splines Curves and Surfaces. PhD thesis, Vanderbilt Univessity, 1998. [35] Farin Gerald. Curves and Surfaces for CAGD. Morgan Kaufmann Publishers, 5 edition, 2002. [36] Robert P. y Linda, C. Generalized bernstein polynomials and symmetric functions. 2001. [37] H. Xie and H. Qin. Automatic knot determination of nurbs for interactive geometric design. In Proceedings of International Conference on Shape Modelling and Applications (SMI 2001), Nov 2001. [38] Randrianarivony, M. y Brunnett, G. Parallel implementation of curve reconstruction from noisy samples. 2002. [39] M.G. Cox and M. Harris. Fixed and free knot univariate least-squares data approximation by polynomial splines. Technical Report Technical Report ISSN 1471-0005, National Physical Laboratory, Queens Road, United Kingdom, 2002. Apéndice A NURBS Las curvas y superficies NURBS evolucionaron a partir del trabajo pionero de Pierre Bézier quien planteó la formulación matemática de una clase de curvas paramétricas, para crear gráficas en un ordenador, en el año de 1970 [9]. Sin embargo, las curvas de Bézier presentan problemas de estabilidad y cálculo debido al alto grado de sus funciones base. La formulación de las NURBS plantea una solución a este problema y añade otro tipo de propiedades adicionales que se ilustrarán a lo largo de este capítulo anexo. La digitalización mediante NURBS se ha convertido en un estándar en la industria para la representación, diseño e intercambio de datos de información geométrica procesados por ordenador debido a sus excelentes cualidades [9, 14]. • Las NURBS brindan una base unificada para la representación de formas analíticas, como secciones cónicas, superficies cuadráticas o entidades de forma libre como rostros o modelos irregulares. • Los algoritmos para el cálculo de las funciones NURBS son rápidos y numéricamente estables. • Las curvas y superficies NURBS son invariantes ante transformaciones geométricas A–1 A–2 comunes como traslaciones o rotaciones. • Las funciones paramétricas NURBS tienen un alto grado de libertad lo cual permite tener un control local de la representación. A.1. Curvas y Superficies de Bézier Los métodos más comunes de representación de curvas y superficies en mode- lamiento geométrico son las ecuaciones implícitas y las funciones paramétricas [9]. La ecuación implícita de una curva en el plano xy tiene la forma f (x, y) = 0. Esta ecuación describe una relación implícita entre la coordenadas x y y de los puntos sobre la curva. En la forma paramétrica, cada una de las coordenadas de un punto sobre la curva es representada como una función explícita de un parámetro independiente. C(u) = (x(u), y(u)) a≤u≤b (A.1) Así, C(u) es una función valorada por la variable independiente u en el intervalo paramétrico arbitrario [a, b], el cual usualmente está normalizado entre [0, 1]. De igual forma una superficie definida por una ecuación implícita f (x, y, z) = 0 tiene una representación paramétrica de la forma S(u, v) = (x(u, v), y(u, v), z(u, v)) (A.2) De las ecuaciones A.1 y A.2 se puede inferir que el proceso de parametrización implica un cambio dimensional de Rn → Rn−k . La parametrización planteada por Bézier en 1972 [35] se basa en los polinomios de Bernstein de grado n para crear curvas y superficies paramétricas que dependen de unos puntos de control. Una curva de Bézier de grado n tiene la forma A–3 C(u) = n X Bi,n (u)Pi (A.3) i=0 En donde Bi,n (u) son las funciones base. Estas tienen la forma característica de los polinomios de Bernstein de grado n [36]. Su formulación es la siguiente Bi,n (u) = n! ui (1 − u)n−i i! (n − i)! (A.4) Las superficies de Bézier se definen como S(u, v) = n X m X Bi,n (u)Bj,m (v)Pi,j (A.5) i=0 j=0 De las ecuaciones A.3 y A.5, se puede apreciar que el grado de las funciones base que generan las curvas y superficies de Bézier depende del número de puntos de control con los cuales se genera la representación. Esta forma paramétrica presenta problemas de cálculo en las funciones base cuando hay demasiados puntos de control (ecuación A.4). Las curvas y superficies de Bézier se pueden extender a una forma racional en donde cada punto de control Pi tiene asociado un peso wi (ecuación A.11). Las B-Splines presentan una solución al problema del orden elevado en las funciones base, haciendo que estas existan solo en una parte del intervalo paramétrico. A.2. Funciones Base Splines Como se mencionó anteriormente, el orden de las funciones base en la expansión polinomial de Bernstein utilizada por Bézier (ecuación A.4) depende del número de puntos de control del modelo. Debido a ello, se necesitan funciones base de grado (n − 1) para pasar una curva polinomial de Bézier a través de n puntos. Sin embargo, el cálculo de funciones de orden elevado es ineficiente y numéricamente inestable. Este tipo de curvas tienen problemas para ajustarse a algunas funciones complejas, además el control que se A–4 tiene sobre la aproximación cuendo existen demasiados puntos de control es pobre. La solución a este problema es utilizar funciones base polinomiales por partes conocidas como splines. Este tipo de funciones existen solo en una parte del intervalo paramétrico y dependen de algunos puntos de control, lo cual permite tener un control local de la representación. Adicionalmente, el orden de estas funciones pede ser escogido según sea conveniente. Las funciones base splines se definen de la siguiente manera: Sea U = {u0 , · · · um } una secuencia no decreciente de números reales, i.e., ui ≤ ui+1 , i = 0, · · · , m − 1. Donde ui son llamados nodos (knots), y U es el vector de nodos. La ith función base de grado p, denotada por Ni,p se define como 1 si ui ≤ t < ui+1 Ni,0 (u) = 0 en caso contrario Ni,p (u) = A.2.1. ui+p+1 − u u − ui Ni,p−1 (u) + Ni+1,p−1 (u) ui+p − ui ui+p+1 − ui+1 (A.6) Propiedades de las Funciones Base Splines Las funciones base B-Splines tienen una serie de propiedades importantes que deter- minan las características geométricas deseables que poseen las curvas y superficies NURBS. • Ni,0 (u) es una función escalón que es igual a cero excepto por el intervalo semiabierto u ∈ [ui , ui+1 ) • Ni,p (u) = 0 si u está por fuera del intervalo [ui , ui+p+1 ). Propiedad de soporte local. • En cualquier expansión de nodos dada, [ui , ui+1 ), por lo menos p + 1 de las Ni,p funciones base son diferentes de cero. Distribución piramidal. A–5 • Ni,p (u) ≥ 0 para todo i, p, y u. No negatividad. • En un intervalo arbitrario de nodos, [ui , ui+1 ), Pi j=i−p Nj,p (u) = 1 para todo u ∈ [ui , ui+1 ). Partición de unidad. • Todas las derivadas de Ni,p (u) existen al interior del intervalo dado por el vector de nodos U (ecuación A.7). En un nodo n, Ni,p (u) es p − k veces continuamente diferenciable, donde k es la multiplicidad del nodo n. Diferenciación continua. • Ni,p (u) tienen exactamente un valor máximo (excepto para el caso en el que p = 0). Máximo absoluto. Figura A.1: Funciones base splines En la Fig. A.1 se aprecian las funciones base de orden 3 generadas a partir del vector de nodos U = {0 0 0 0 0, 25 0, 5 0, 75 1 1 1 1}. A.2.2. Vector paramétrico de nodos La distribución del vector paramétrico de nodos que genera las funciones base tiene una gran influencia en el proceso de aproximación de las B-Splines. Este debe tener cuali- A–6 dades específicas que garantizan la convergencia de la parametrización. Sea U un vector paramétrico de nodos de longitud m + p + 1, en donde m es el número de puntos de control y p es el grado de las funciones base. U define la partición del intervalo de variación del parámetro u, permitiendo ajustar la zona de influencia de cada punto de control. U = {u0 = . . . = up , up+1 , . . . , um−1 , um = . . . = um+p } (A.7) • Los primeros y los últimos nodos en U deben tener multiplicidad p+1 para garantizar la interpolación de los puntos de control inicial y final. • El vector de nodos U es una secuencia no decreciente de números reales en donde ui ≤ ui+1 . • Se deben calcular m funciones base de orden p que se requieren para aproximar una B-Spline a m puntos de control. La representación general para un vector de nodos en un intervalo paramétrico normalizado entre [0, 1] esta dada por: U = {0 . . 0} ≤ up+1 ≤ up+2 ≤ . . . ≤ um−2 ≤ um−1 ≤ 1| .{z . . 1}} | .{z p+1 (A.8) p+1 La distribución de los nodos en el vector paramétrico U define los intervalos de mapeo de las Funciones Base Splines y la distribución no uniforme de las funciones NURBS. En la Fig. A.2 se aprecian las funciones base de orden 3 generadas a partir del vector de nodos no uniforme U = {0 0 0 0 0, 6 0, 6 0, 7 1 1 1 1}. A–7 Figura A.2: Funciones base con nodos no uniformes A.3. B-Splines Las curvas y superficies B-Splines surgen a partir de una combinación de las fun- ciones base Splines (ecuación A.6) y los puntos de control a aproximar. Las propiedades de las funciones base Ni,p (u) se transfieren a las curvas y superficies paramétricas B-Splines con lo cual esta representación presenta solución a varios de los problemas que tienen la aproximación con funciones de Bézier. A.3.1. Curvas B-Splines Una curva B-Spline de grado p está definida por C (u) = n X Ni,p (u)Pi (A.9) i=0 En donde Pi son los puntos de control, y Ni,p (u) son las funciones base B-Splines de grado p. Las B-Splines son una generalización de las funciones de Bézier, ya que si p = n y A–8 U = {0, . . . , 0, 1, . . . , 1}, entonces C(u) es una curva de Bézier (ecuación ??). C(u) tiene un esquema de modificación local de forma tal que al mover el punto de control Pi la curva cambiará solo en el intervalo [ui , ui+p+1 ), lo cual permite que las B-Splines tengan un ajuste más fino sobre la aproximación que las curvas de Bézier. Esta propiedad se debe a que las funciones base Ni,p (u) = 0 para todo u ∈ / [ui , ui+p+1 ). Las propiedades de continuidad y derivación de las funciones base Splines están presentes en C(u) ya que esta es una combinación lineal de Ni,p (ecuación A.9). De esta manera, C(u) es infinitamente diferenciable al interior de los intervalos definidos por el vector de nodos U (ecuación A.7), y tiene por lo menos p − k derivadas continuas en un nodo de multiplicidad k. A.3.2. Superficies B-Splines Una superficie B-Spline se obtiene al combinar linealmente una red bidireccional de puntos de control Pi,j y los productos de las funciones base Splines Ni,p (u) y Nj,q (v) definidas en los vectores nodo U y V respectivamente. S (u, v) = n X m X Ni,p (u)Nj,q (v)Pi,j (A.10) i=0 j=0 Las superficies B-Splines conforman una representación unificada que tiene todas las propiedades de continuidad y derivación de las funciones base Splines en ambas direcciones paramétricas. En las superficies B-Splines se genera un producto tensor de las funciones base bivariadas que presenta capacidad de ajuste local y alta continuidad. El producto tensor de las funciones base Ni,p (u)Nj,q (v) con orden p en la dirección u y q en la dirección v está definido por los vectores de nodos normalizados A–9 U = {0, . . . , 0, up+1 , . . . , un−1 , 1, . . . , 1} | {z } | {z } p+1 p+1 V = {0, . . . , 0, vq+1 , . . . , vm−1 , 1, . . . , 1} | {z } | {z } q+1 q+1 para una red bidireccional de puntos de control Pi,j con n puntos de control en la dirección u, y m en la dirección v de acuerdo a la ecuación A.6. De forma análoga a las curvas B-Splines, las superficies tienen propiedades de control local dado que Ni,p (u)Nj,q (v) = 0, si (u, v) están por fuera del rectángulo [ui , ui+p+1 )× [vj , vj+q+1 ). La continuidad y las derivadas de S(u, v) provienen del producto tensor de sus funciones base Ni,p (u)Nj,q (v). En particular, S(u, v) es p − k (q − k) veces diferenciable en la dirección u (v) para un nodo u (v) de multiplicidad k. El producto tensor de las funciones base interpola las 4 esquinas de la red bidireccional de puntos de control Pi,j en una superficie B-Spline. A.4. B-Splines Racionales no Uniformes (NURBS) A pesar de que la representación polinomial ofrece muchas ventajas, existen cier- tos tipos de curvas y superficies cónicas importantes que no pueden ser representadas con B-Splines. La solución a este problema es utilizar funciones racionales, ya que con estas es posible definir matemáticamente todas las curvas y superficies cónicas. Una curva polinomial en un espacio n-dimensional tendrá una representación racional en un espacio (n + 1)-dimensional. Siendo P = (x, y) un punto en el espacio euclídeo bidimensional (X, Y ), su representación racional se extiende a un espacio tridimensional (X, Y, W ) donde W es la nueva dimensión y P w = (wx, wy, wz, w). P es obtenido nuevamente de P w al dividir todas las A–10 Figura A.3: Proyección del plano racional W coordenadas por la cuarta entrada W . La forma racional de las curvas y superficies de Bézier están dadas por n P C(u) = i=0 n P i=0 A.4.1. n P m P Bi,n (u)wi Pi y Bi,n (u)wi S(u, v) = Bi,n (u)Bj,m (v)wi,j Pi,j i=0 j=0 n P m P (A.11) Bi,n (u)Bj,m (v)wi,j i=0 j=0 Propiedades de la representación racional con B-Splines Las curvas y superficies NURBS cuentan con todas las propiedades de continuidad y derivación de las B-Splines, pero proveen una capacidad de aproximación local aún mayor. Esto se aprecia al modificar el peso wi , en una curva NURBS, asociado al punto de control Pi , ya que este solo afecta a la curva en el intervalo u ∈ [ui , ui+p+1 ). A–11 (a) w = 1 (b) w = 3 (c) w = 10 Figura A.4: Superficies NURBS con diferentes pesos En las figuras A.4(a), A.4(b) y A.4(c) se puede apreciar el efecto de la aproximación local en una superficie NURBS, al variar el peso asociado a un punto de control. Las funciones NURBS tienen un efecto de filtro pasabajos al aproximar un conjunto de datos. La curva o superfice paramétrica tendrá un efecto suavizante en la aproximación que depende del orden de sus funciones base. Mientras mayor sea el orden de las funciones base, mayor será el efecto pasabajos de la parametrización sobre los datos de rango y por lo tanto mayor será el error de la aproximación final. La representación racional no esta definida para el espacio Wneg , por lo tanto se debe cumplir que wi ≥ 0 para todo i. A–12 A.4.2. Curvas y Superficies NURBS Una curva NURBS de grado p está definida por la siguiente ecuación n P C (u) = Ni,p (u)wi Pi i=0 n P (A.12) Ni,p (u)wi i=0 Donde Ni,p (u) son las funciones base splines de grado p, Pi son los puntos de control y wi son los pesos asociados a cada punto de control. Figura A.5: Curva NURBS La figura A.5 es una curva NURBS graficada con las librerías del OpenGL. La ecuación general para las superficies paramétricas NURBS está dada por n P m P S (u, v) = Ni,p (u)Nj,q (v)wi,j Pi,j i=0 j=0 n P m P (A.13) Ni,p (u)Nj,q (v)wi,j i=0 j=0 Donde Ni,p (u)Nj,q (v) es el producto tensor de las funciones base B-Splines con A–13 grado p en la dirección paramétrica u, y grado q en la dirección v. Pi,j es la malla de puntos de control, y wi,j son los pesos asociados a cada punto de control. Figura A.6: Superficie NURBS La figura A.6 es una superficie NURBS con sus normales graficada con las librerías del OpenGL. A.4.3. Grados de libertad Las NURBS permiten adaptar curvas y superficies polinomiales tanto a representa- ciones de forma libre como a formas geométricas comunes. Esto se logra gracias a los grados de libertad que tienen las NURBS en su formulación matemática, los cuales permiten tener un control de aproximación local por medio de los pesos y puntos de control, y un mapeo no uniforme de la parametrización por medio del vector paramétrico de nodos. Los grados de libertad de las funciones NURBS a optimizar son: • Puntos de control. A–14 • Pesos asociados a los puntos de control. • Vectores paramétricos de nodos. Para optimizar la aproximación mediante curvas y superficies NURBS se deben modificar sus grados de libertad con el fin de minimizar la distancia entre la representación paramétrica y el conjunto de datos. La selección del vector paramétrico de nodos tiene gran influencia en el proceso de aproximación mediante NURBS [37, 15, 38, 39]. Apéndice B Algoritmos de reconstrucción Existen diversos métodos que permiten la construcción matemática o geométrica de los diagramas de Voronoy y/o la triangulación de Delaunay. Los métodos algorítmicos mas conocidos son: La construcción divide y conquista, línea de barrido, elevando hacia un espacio 3D y los métodos incrementales. Los algoritmos que presentan el mejor balance entre costo computacional y efectividad de cálculo son los métodos incrementales. A continuación se exponen los algoritmos que conforma la reconstrucción Incremental de Delaunay implementada para el algoritmo de particionamieto. B.1. Algoritmo de Delaunay Al definir subdivisión maximal planar como: Subdivisión S a la cual no es posible agregar un eje que conecte dos vértices sin destruir su planaridad. Es decir, la introducción de cualquier eje que no está en S intersecta B–1 B–2 uno o mas ejes existentes en S. Se define entonces una trangulación como cualquier subdivisión maximal planar de un conjunto de puntos en el plano. El grafo de Delaunay fue desarrollado por el matemático Ruso Boris Nikolaevich Delone. Su método se basa en la disposición óptima de la trangulación en el sentido de maximizar los mínimos ángulos en los triángulos de la subdivisión maximal planar. Se implementó el método de triangulación planar de Delaunay para triangular conjuntos planares de puntos. B–3 Algorithm 2 DelaunayIncremental(P) Entradas: Conjunto de puntos p1 , p2 , . . . , pn ∈ P en el plano. Salida: Triangulación de Delaunay T de P . Paso 1: Se genera un triángulo con vértices en p−1 , p−2 y p−3 que contenga a P . Se inicializa la triangulación T con el triángulo p−1 p−2 p−3 . InsertTriangle(p−1 , p−2 , p−3 , T ); Paso 2: para r = 1 hasta n haga tint , eint = WhereIsPoint(pr , T ); si pr se encuentra en el interior del triángulo tint entonces InTriagle(tint , pr , T ); sino si pr se encuentra sobre uno de los ejes de T entonces OnEdge(eint , pr , T ); fin si fin si fin para B–4 Algorithm 3 WhereIsPoint(p, T ) Entradas: Punto p, triangulación T . Salida: Triángulo tint , o eje eint que contiene al punto p. t = T; mientras t haga PointInTriangle(t, p); si p pertenece al triángulo t entonces Devolver tint = t; sino El triángulo t contiene 3 ejes, t = (e1 , e2 , e3 ) InLine(e1 , p); InLine(e2 , p); InLine(e3 , p); si p pertenece a uno de los 3 ejes de t entonces Devolver el eje eint ∈ t; fin si fin si t = t → next fin mientras B–5 Algorithm 4 PointInTriangle(t, p) Entradas: Punto p, triángulo t. Salida: Informa si el punto p se encuentra al interior de t. El triángulo t tiene 3 vértices, t = (a, b, c); F AB = (py − ay ) (bx − ax ) − (px − ax ) (by − ay ); F BC = (py − by ) (cx − bx ) − (px − bx ) (cy − by ); F CA = (py − cy ) (ax − cx ) − (px − cx ) (ay − cy ); si F AB · F BC > 0 y F BC · F CA > 0 entonces El punto p se encuentra al interior del triángulo t; sino El punto p NO se encuentra al interior del triángulo t; fin si B–6 Algorithm 5 InLine(e, p) Entradas: Eje e, punto p. Salida: Informa si el punto p se encuentra sobre el eje e. El eje e tiene 2 vértices, e = (a, b); si ax = bx entonces si px = ax = bx y py ∈ hay , by i entonces El punto p ∈ e; sino El punto p ∈ / e; fin si fin si si ay = by entonces si py = ay = by y px ∈ hax , bx i entonces El punto p ∈ e; sino El punto p ∈ / e; fin si sino m = (by − ay )/(bx − ax ); r = m (px − ax ) − (py − ay ); si r = 0 y px ∈ hax , bx i entonces El punto p ∈ e; sino El punto p ∈ / e; El punto p ∈ e; fin si fin si B–7 Algorithm 6 InTriangle(t, p, T ) Entradas:Triangulación de Delaunay T , Punto p, triángulo t que contiene a p. El triángulo t tiene 3 vértices, t = (a, b, c); Paso 1: DeleteTriangle(t); InsertTriangle(p, a, b); InsertTriangle(p, b, c); InsertTriangle(p, c, a); Paso 2: LegalizeEdge(p, a, b); LegalizeEdge(p, b, c); LegalizeEdge(p, c, a); B–8 Algorithm 7 OnEdge(e, p, T ) Entradas:Triangulación de Delaunay T , Punto p, eje e que contiene a p. El eje e tiene 2 vértices, e = (a, b); Paso 1: Se encuentran los 2 triángulos q y t que contienen el eje e; Se encuentran los vértices c ∈ q, c ∈ / e y d ∈ t, d ∈ / e; Paso 2: DeleteTriangle(q); DeleteTriangle(t); InsertTriangle(p, a, c); InsertTriangle(p, c, b); InsertTriangle(p, b, d); InsertTriangle(p, d, a); Paso 3: LegalizeEdge(p, a, c); LegalizeEdge(p, c, b); LegalizeEdge(p, b, d); LegalizeEdge(p, d, a); B–9 Algorithm 8 LegalizeEdge(r, a, b) Entradas:Punto nuevo r, Puntos a, b ∈ e = (a, b) con e ∈ T . Los puntos a y b generan el eje, e = (a, b); Paso 1: Se encuentran los 2 triángulos q y t que contienen los vértices a y b; Se encuentra el vértice c ∈ q, c ∈ / e; si c = r entonces Se encuentra el vértice k ∈ t, k ∈ / e; sino k = c; fin si Paso 2: si k está InCircle(r, a, b, k) entonces DeleteTriangle(q); DeleteTriangle(t); InsertTriangle(r, k, a); InsertTriangle(r, k, b); LegalizeEdge(r, k, a); LegalizeEdge(r, k, b); fin si