Upload
litz612
View
85
Download
2
Embed Size (px)
Citation preview
Traducido por: Orozco Lisset, López Jair, Gámez Kelwin, Laverde Yarilenis, Neuman Hernán.
El Algoritmo de Pivoteo de Bola
para la Reconstrucción de Superficie
Fausto Bernardini Joshua Mittleman Holly Rushmeier Claudio Silva Gabriel Taubin
Resumen - El algoritmo de pivoteo de bola (APB) calcula una
malla de triángulos interpolando una nube de puntos
dada. Normalmente, los puntos son muestras de la superficie
adquiridos con los análisis de rango múltiple de un objeto. El
principio del APB es muy sencillo: Tres puntos forman un triángulo
si una bola de un radio p especificado por el usuario los toca sin
contener cualquier otro punto. Comenzando con un triángulo
semilla, la bola pivotea alrededor de un borde (es decir, que gira
alrededor del borde mientras se mantiene en contacto con los
extremos del borde) hasta que toca otro punto, formando otro
triángulo. El proceso continúa hasta que todas las aristas
alcanzables hayan sido tratadas, y entonces comienza a partir de
otro triángulo semilla, hasta que todos los puntos han sido
considerados. Hemos aplicado el APB a conjuntos de datos de
millones de puntos que representan el análisis real de objetos
complejos en 3D. La cantidad relativamente pequeña de memoria
requerida por el APB, su eficiencia de tiempo y la calidad de los
resultados obtenidos se comparan favorablemente con las técnicas
existentes.
Palabras Clave ─ Escaneo 3D, reconstrucción de figuras, nube
de puntos, rango de la imagen.
I. INTRODUCCIÓN
Los avances en hardware de adquisición de datos 3D han
facilitado el uso más amplio del análisis para documentar la
geometría de objetos físicos para fines de archivo o como un
paso en el diseño de un nuevo producto. Una típica tubería
de adquisición de datos 3D consta de los siguientes pasos
(adaptado de [1]):
Escaneo: Adquisición de muestras de la superficie con
un dispositivo de medición, tal como un lector de láser o
un sistema estereográfico.
Registro de datos: La alineación de varios análisis en un
único sistema de coordenadas.
Integración de datos: La interpolación de las muestras
medidas, o puntos derivados de las muestras medidas,
con una representación de superficie, por lo general una
malla de triángulos.
La conversión del modelo: Malla de decimación/
optimización, adecuada con las representaciones de orden
superior, etc.
Este documento se centra en la fase de integración de
datos. Presentamos un nuevo método para encontrar una
malla de triángulos que interpole un conjunto desorganizado
de puntos. La figura 1 muestra una vista en primer plano de
una malla de triangulos de 14M obtenida por la ejecución de
nuestro algoritmo de cientos de análisis del Michelangelo’s
Florentine Pietá. El modelo tomó 30 minutos en calcularse
en una PC Pentium II.
IBM T. J. Watson Research Center, P.O. Box 704, Yorktown Heights,
NY 10598. email: {fausto, mittle, holly, taubing}@watson.ibm.com
Claudio Silva’s current address: AT&T Labs-Research, Shannon Laboratory, 180 Park Avenue, Florham Park, NJ 07932-0971.
Fig. 1. Sección de Michelangelo’s Florentine Pieta. Esta malla de
triángulos 14M fue generada a partir de más de 700 escaneos
con el algoritmo de pivoteo de bola.
El método crea dos supuestos de suavidad sobre las
muestras que son válidas para una amplia gama de técnicas
de adquisición: que las muestras sean distribuidas sobre toda
la superficie con una frecuencia espacial mayor que o igual a
un cierto valor mínimo especificado por la aplicación, y que
una estimación de la superficie normal esté disponible para
cada muestra medida.
A. Principales Contribuciones
El método es conceptualmente simple. Comenzando con
un triángulo semilla, que pivota una bola alrededor de cada
arista en el límite de la malla actual hasta que un nuevo
punto es alcanzado por la bola. La arista y el punto define un
triangulo nuevo, el cual es agregado a la malla, y el
algoritmo considera una nueva frontera de aristas para
pivotear.
La malla resultante es un subconjunto múltiple de un
alpha-shape [2] del conjunto de puntos. Algunas de las
propiedades agradables de alpha-shape pueden ser también
probadas por nuestra reconstrucción.
El algoritmo de pivoteo de bola (APB por sus siglas) es
eficiente en términos de tiempo de ejecución y
requerimientos de almacenamiento. Se mostró el
rendimiento en tiempo lineal en grupos de datos que
consisten en millones de muestras de entrada. Ha sido
implementado en una forma que no requiere todos los datos
de entrada para ser cargado en memoria simultáneamente. La
malla de triángulos resultante es guardada incrementalmente
para almacenamiento externo para su cálculo, y no usa
ninguna memoria adicional.
El APB demostró suficiente robustez para manejar la
presencia de ruido en el escaneo real de datos 3D. Fue
probado en varios grandes conjuntos de datos escaneados, y
en particular fue usado para crear los modelos de
Michelangelo’s Florentine Pieta [3] a partir de cientos de
escáneres adquiridos con un sensor de luz estructurada
(Visual Interface’s Virtuoso ShapeCamera).
El resto del documento está estructurado de la siguiente
manera: en la sección II se define el problema y se discute el
trabajo relacionado. En la sección III se discuten los
conceptos que subyacen del Algoritmo de Pivoteo de Bola, y
en la sección IV se describe el algoritmo en detalle, y se
presentan los resultados en la sección V, y se discuten los
problemas abiertos y trabajo futuro en la sección VI.
II. ANTECEDENTES
En años recientes se ha visto una proliferación de equipos
de escaneo y algoritmos para modelos sintetizados a partir de
datos escaneados. Nos referimos al lector a dos revisiones
recientes de la investigación en el campo [4], [5]. En esta
sección nos centramos en el papel de los esquemas de
mallado de interpolación que pueden desempeñar en el
escaneado de objetos, y por qué no se han utilizado en
sistemas de escaneo prácticos.
A. Mallas de Interpolación en los sistemas de escaneo
Se define el problema de escaneo: dado un objeto
encontramos una representación continua de la superficie del
objeto que captura las características de una escala de
longitud 2d o más grande. El valor de d es impuesto por la
aplicación. La captura de las características de escala 2d
requiere el muestreo de la superficie con una resolución
espacial d o menor. La superficie puede consistir de áreas
grandes que pueden ser bien aproximadas por mallas mucho
más dispersas; sin embargo en la ausencia de información a
priori, necesitamos empezar con una resolución de muestreo
de d o menos para garantizar que ninguna característica se
pierda.
Consideramos sistemas de adquisición que producen
conjuntos de rango de imágenes, es decir, las matrices de
profundidades, cada uno de los cuales cubre un subconjunto
de la superficie total. Porque son los campos de altura con la
toma regular de muestras, imágenes de rango individual son
malladas fácilmente. Las mallas individuales pueden ser
utilizadas para calcular un estimado de la normal de la
superficie por cada punto de muestra.
Un sistema de adquisición ideal sería retornar muestras
situadas exactamente sobre la superficie del objeto.
Cualquier sistema de medición real introduce algunos
errores. Sin embargo, si un sistema retorna muestras con un
error que es ordenado de la magnitud menor que el tamaño
mínimo de característica, el muestreo puede ser considerado
como perfecto. Una superficie puede entonces ser
reconstruida por la búsqueda de una malla de interpolación
sin operaciones adicionales en los datos medidos. La
mayoría de los sistemas de escaneo todavía necesitan tener
en cuenta el error de adquisición. Hay dos fuentes de error:
error en el registro, y error a lo largo de la línea del sensor de
visión. Las estimaciones de los puntos de la superficie real
son derivados usualmente por las muestras promedio a partir
de análisis redundantes. Estas estimaciones son luego
conectadas en una malla de triángulos.
La mayoría de los métodos de estimación de puntos de
superficie depende de las estructuras de datos que facilitan la
construcción de la malla. Dos clases de métodos han sido
utilizados con éxito para grandes conjuntos de datos, ambos
asumen un error de registro insignificante y calcular las
estimaciones para corregir el error de la línea de visión. La
primera de estas clases son los métodos volumétricos, como
el establecido por Curless y Levoy [6]. En estos métodos, las
mallas alineadas individuales son utilizadas para calcular
una función distancia con signo sobre una rejilla de volumen
que abarca el objeto. La estimación de los puntos de la
superficie son calculados como los puntos en la red donde la
función distancia es cero. La estructura del volumen
entonces facilita la construcción de una malla utilizando el
algoritmo marching cubes [7].
La segunda clase de métodos, son métodos de unión de
mallas, tales como la técnica de Soucy y Laurendeau [8].
Disjuntos de campo de altura de mallas son unidos en una
sola superficie. Las regiones disjuntas son definidas
mediante la búsqueda de áreas de superposición de diferentes
subconjuntos de un conjunto de análisis. Estimación de los
puntos de la superficie de cada región son calculados como
promedios ponderados a partir del escaneo de superposición.
Los puntos estimados en cada región se vuelven a triangular,
y las mallas resultantes se suturan en una única malla. Turk y
Levoy desarrollaron un método similar [9], que une los
primeros puntos (o cierres) las mallas disjuntas y luego
calcula estimados de los puntos de la superficie.
Se observa que en ambas clases de métodos, el método
de estimación de puntos de superficie no necesita ser tan
estrechamente relacionado con el método para construir la
malla final. En el enfoque volumétrico, una técnica distinta
como marching cubes podría ser utilizada para encontrar
una malla de triángulos que pasa por los puntos de la
superficie estimada. En los enfoques de unión de malla, una
técnica para encontrar una malla que conecte todos los
puntos de superficie estimados podría ser utilizada en lugar
de unir las mallas existentes. Lo más importante, con un
algoritmo eficiente para el cálculo de una malla que une los
puntos, cualquier método para calcular los puntos de la
superficie estimada podría ser utilizado, incluyendo aquellas
que no imponen una estructura adicional de los datos y no
tratan de registro y error en la línea de visión por separado. Por ejemplo, se ha demostrado que la reducción de errores en
mallas individuales antes de la alineación puede reducir el
error de registro [10].
Estamos desarrollando un método que mueve muestras
dentro de los límites conocidos de error del escáner para
conformar las mallas entre sí ya que están alineadas. Nuestra
implementación actual de este método fue utilizado para pre-
procesar los datos mostrados en la sección de resultados. El
método se describe en un artículo futuro.
Finalmente, puede ser deseable encontrar una malla de
interpolación de los datos medidos incluso si contiene
errores no compensados. La malla preliminar podría ser
suavizada, limpiada, y decimada para su uso en la
planificación de las funciones. Una malla de interpolación de
los puntos medidos también se podría utilizar como un punto
de partida para los puntos de consenso para calcular.
B. Estado del Arte para la interpolación de las mallas
Las actuales técnicas de interpolación se dividen en dos
categorías-la escultura-en base [11], [12], [4] y la región de
crecimiento [13], [14], [15], al igual que el APB. En los
métodos basados en la escultura, una tetraedralización de
volumen se calcula a partir de los puntos de datos, por lo
general la triangulación de Delaunay en 3D. Los tetraedros
son retirados entonces de la envolvente convexa para extraer
la forma original. Los métodos de la región creciente
comienzan con un triángulo de semillas, considera un nuevo
punto y lo une a la frontera de la región ya existente, y
continua hasta que todos los puntos han sido considerados.
La fuerza de la escultura basada en enfoques es que a
menudo proporcionar garantías teóricas para la calidad de la
superficie resultante, por ejemplo que la topología es
correcta, y que la superficie converge a la superficie
verdadera como la densidad de muestreo aumenta (ver por
ejemplo [16], [17]). Sin embargo, el cálculo de la
triangulación de Delaunay 3D requerida puede ser muy caro
en términos de tiempo y la memoria necesaria, y puede
conducir a la inestabilidad numérica cuando se trata de
conjuntos de datos de millones de puntos. El objetivo del
APB es mantener los puntos fuertes de anteriores técnicas de
interpolación en un método que muestra la complejidad del
tiempo lineal y la solidez de los datos escaneados reales.
III. SUPERFICICE DE RECONSTRUCIÓN
Y PIVOTEO DE BOLA
El concepto principal que subyace en el algoritmo de
pivoteo de bola es bastante simple. Permite que la variedad
M sea la superficie de un objeto tridimensional y S un punto
de muestreo de M. Vamos a suponer por ahora que S es lo
suficientemente densa que una bola (una bola de radio) no se
puede pasar a través de la superficie, sin tocar los puntos de
muestreo (ver figura 3 para un ejemplo 2D). Comenzamos
colocando una bola en contacto con tres puntos de muestra. Se mantiene la bola en contacto con dos de estos puntos
iniciales, se “pivota” la bola hasta que toque a otro punto,
como se ilustra en la figura 2 (se dan más detalles en la
sección IV-C). Se pivota alrededor de cada arista de la
frontera de la malla actual. Tripletes de puntos que hacen
contacto con la bola forman nuevos triángulos. El conjunto
de triángulos formados, mientras que la pelota "pasa" sobre
la superficie que constituye la malla de interpolación.
El APB está estrechamente relacionado con el alpha-
shapes [18], [2]. De hecho, cada triángulo t calculado por el
paso de la bola p, obviamente, tiene un pequeño vacío de
bola bT abierta cuyo radio es menor que p (ver [2], página
50). Así, el APB calcula un subconjunto de las 2-caras de las
formas p de S. Estas caras son también un subconjunto de los
2-esqueletos de la triangulación de Delaunay tridimensional
del conjunto de puntos. Alpha shapes son una herramienta
eficaz para el cálculo de la "forma" de un conjunto de
puntos.
La superficie reconstruida por el APB conserva algunas
de las cualidades de alpha-shapes: Tiene garantías
demostrables de reconstrucción bajo supuestos de muestreo
determinados, y un significado geométrico intuitivamente
simple.
Sin embargo, los 2-esqueletos de un alpha-shapes
calculado a partir de un muestreo ruidoso de una variedad
suave puede contener múltiples conexiones no variadas. Es
no trivial para filtrar los componentes no deseados.
Asimismo, en su formulación original, alpha-shapes son
calculados mediante la extracción de un subconjunto de la
triangulación de Delaunay 3D del conjunto de puntos, una
estructura de datos que no se calcula fácilmente para
conjuntos de datos de millones de puntos. Con las hipótesis
sobre la entrada indicada en la introducción, el APB eficiente
y sólido calcula una variedad de subconjunto de un alpha-
shape que es muy adecuado para esta aplicación.
En [16], las condiciones suficientes para la densidad de
muestreo de una curva en el plano fueron derivados lo cual
garantiza que la reconstrucción de un alpha-shape es
homeomorfo a la variedad original y que se encuentra dentro
de una distancia limitada. El teorema se puede extender
fácilmente a las superficies (dicho aquí sin pruebas):
Supongamos que, para la variedad de suavidad M el
muestreo S satisface las siguientes propiedades:
1. La intersección de cualquier bola de radio p con el
manifold es un disco topológico.
2. Cualquier bola de radio p centrado en el manifold
contiene al menos un punto de muestra en su interior.
La primera condición garantiza que el radio de curvatura
del colector es mayor que p, y que la bola p también puede
pasar a través de las cavidades y otras características
cóncavas sin múltiples contactos con la superficie. La
segunda condición nos dice que el muestreo es
suficientemente denso que la bola puede pasar sobre los
puntos de muestra, sin dejar huecos (ver figura 3 para ver
ejemplos en 2D). El APB produce entonces una
aproximación T homeomorfa de la variedad diferenciable M.
También podemos definir un homeomorfismo h: T M tal
que la distancia || p - h(p) || < ρ.
En la práctica, a menudo deben hacer frente a menos que
ideales muestreos. Cuál es el comportamiento del algoritmo
en estos casos? Consideremos el caso de los datos
escaneados reales. Los problemas más comunes son los
puntos faltantes, densidad no uniforme, imperfectamente
alineado a la superposición de escaneos de rango, y el error
del escáner de la línea de visión.1
El APB está diseñado para procesar la salida de un
preciso registro / algoritmo de conformidad (véase la sección
II), y no trata de promediar el ruido o los errores residuales
de registro. No obstante, el APB es robusto en la presencia
de datos imperfectos. 1Algunos tipos de escáneres también producen “valores
atípicos", los puntos que se encuentran lejos de la superficie real.
Estos valores atípicos ocurren más frecuentemente en las fronteras
de imágenes de rango, o en la presencia de discontinuidades
cortantes. La eliminación de valores atípicos se hace mejor con un
dispositivo dependiente de pre-procesamiento. El escáner utilizado
para adquirir los datos presentados en la sección de resultados no se
ve afectada por este problema.
Se aumentaron los puntos de datos con las normales
aproximadas de superficie calculada a partir de una serie de
mapas para eliminar la ambigüedad de los casos que se
producen cuando se trata con la falta o datos ruidosos. Por
ejemplo, si partes de la superficie no han sido analizadas,
habrá agujeros más grandes que p en el muestreo. Usamos
las normales de la superficie (para la cual asumimos
orientación hacia el exterior) para decidir la orientación de la
superficie. Por ejemplo, cuando se elige un triángulo semilla
comprobamos que las normales de superficie en los tres
vértices son constantemente orientadas.
Las áreas de mayor densidad que p no presentan ningún
problema. La bola de pivoteo seguirá pasando sobre los
puntos, formando pequeños triángulos. Si los datos son libre
de ruido y p es menor que la curvatura local, todos los
puntos serán interpolados. Lo más probable, es que los
puntos sean afectados por el ruido, y que algunos de los que
se encuentran debajo de la superficie no serán tocados por la
bola y no serán parte de la malla de reconstruida (véase la
figura 4 (a)).
Los puntos faltantes crean agujeros que no pueden ser
ocupados por la bola giratoria. Cualquier tratamiento
posterior del algoritmo para el llenado de agujeros podría ser
empleado; en particular, el APB puede ser aplicado varias
veces, con incrementos del radio de la bola, como se explica
en la sección IV-F. Sin embargo, es necesario para manejar
posibles ambigüedades que los datos faltantes pueden
introducir. Cuando pivota alrededor de la frontera de la
arista, la bola puede tocar un punto no utilizado situado cerca
de la superficie. Una vez más se uso las normales de la
superficie para decidir si el punto tocado es válido o no
(véase la figura 4 (b)). Un triángulo se rechaza si el producto
escalar de su normal con la normal de la superficie es
negativo.
La presencia de escaneos de rango superpuestos
desalineados puede conducir a resultados pobres si el error
de registro es similar al tamaño de la bola de pivoteo. Los
Fig. 3 Algoritmo de pivoteo de bola en 2D. (a) Un círculo de pivote de radio ρ de un punto a otro, conectándolos con las aristas.
(b) Cuando la densidad de muestreo es demasiado baja, algunas de las aristas no se crearán, dejando huecos. (c) Cuando la
curvatura de la variedad es mayor que 1/ρ , algunos de los puntos de muestra no serán alcanzados por la bola que pivotea, y
sus características se perderán.
Fig. 2 Operaciones de pivoteo de bola. Véase la sección IV-C
para más detalles. La bola que pivotea está en contacto
con los tres vértices del triángulo τ = (σi , σj , σo) cuya
normal es n. La arista e(i, j) pivotante se encuentra en el
eje z (perpendicular a la página y apunta hacia el
espectador), con su punto medio m en el origen. El
círculo si j o es la intersección de la bola que pivotea con
z = 0. El cuadro de coordenadas es tal que el centro ci j o
de la bola se encuentra en el eje x positivo. Durante el
pivoteo el radio de la bola permanece en contacto con los
dos extremos de las aristas σi , σj, y es el centro que
describe la trayectoria circular ϒ con un centro m de radio
|| cijo - m ||. En su movimiento pivotante la bola alcanza
un nuevo punto de datos σk. Sea sk la intersección una
esfera de radio ρ centrada en σk con z = 0. El centro ck de
la bola pivotante cuando toca σk es la intersección de ϒ
con sk encontrándose en el plano negativo de la línea lk
orientada.
componentes pequeños no deseados conectados situados
cerca de la superficie principal serán formados, y la
superficie principal afectado por el ruido de alta frecuencia
(véase la figura 4 (c)). La estrategia de selección de semillas
evita la creación de un gran número de componentes
pequeños. Un simple procesamiento posterior que elimina
los componentes pequeños y el suavizado de la superficie
[19] puede mejorar significativamente el resultado en estos
casos, al menos estéticamente.
Independientemente de los defectos en los datos, el APB
se garantiza para construir una variedad orientable. Hay que
tener en cuenta que el APB siempre tratará de construir el
manifold más grande posible conectado desde un triángulo
semilla dado. La elección de un valor adecuado para el radio
p de la bola de pivoteo es típicamente fácil. La actual
estructura de luz o escáneres de triangulación láser producen
muestreos muy densos, superior a los requerimientos de
modo que la distancia entre muestras sea inferior a la mitad
del tamaño de las características de interés.
El conocimiento de las características de densidad de
muestreo del escáner, y el tamaño de la característica que se
quiere capturar, son suficientes para escoger un radio
apropiado. Alternativamente, se podría analizar un pequeño
subconjunto de los datos para calcular la densidad de puntos.
Un muestro desigual puede surgir cuando se escanea una
superficie compleja, con las regiones que se proyectan en
áreas pequeñas en la dirección del escáner. El mejor enfoque
consiste en tomar escaneos adicionales con la perpendicular
del escáner para estas regiones, para obtener datos
adicionales. Nótese sin embargo que el APB se puede aplicar
varias veces, con radios de bola en aumento, para manejar
densidades desiguales de muestreo, como se describe en la
sección IV-F.
IV. EL ALGORITMO DE PIVOTEO DE BOLA
El APB sigue el paradigma de avance frontal para
construir incrementalmente una triangulación de
interpolación. El APB toma como entrada una lista de los
puntos de datos de las muestras de la superficie σi, cada uno
asociado con una normal ni (y otros atributos opcionales,
tales como las coordenadas de textura) y un radio p de la
bola. El algoritmo básico funciona mediante la búsqueda de
un triángulo de semilla (es decir, tres puntos de datos (σi σj
σk) tal que una bola de radio p los toca sin contener otro
punto de datos), y añadiendo un triángulo en el momento de
realizar la operación de pivoteo de bola que se explicó en la
sección III.
El frente F se representa como una colección de listas
enlazadas de aristas, e inicialmente se compone de un solo
bucle que contiene las tres fronteras definidas por el primer
triángulo semilla. Cada arista e(i, j) de la parte delantera, está
representada por sus dos extremos (σi σj), el vértice opuesto
σo, el centro ci j o de la bola que toca los tres puntos, y se
enlaza a la arista anterior y la siguiente a lo largo en el
mismo bucle de la parte frontal. Una arista puede estar
activa, como frontera o congelada. Una arista activa es una
que se utilizará para pivotar. Si no es posible para pivotar
desde una arista, esta se marca como frontera.
El estado de congelación se explica a continuación, en el
contexto de las extensiones fuera del núcleo. Mantener toda
esta información con cada arista hace más sencillo el pivote
de la bola a su alrededor. La razón por la cual el frente es una
colección de listas enlazadas, en lugar de solo una, es que
como los pivotes de bola a lo largo de una arista, dependen
de si tocan un punto de dato encontrado recientemente o uno
utilizado anteriormente, en el frontal cambia la topología. El
APB se encarga de todos los casos con dos simples
operadores topológicos, unir y encolar, que aseguran que en
cualquier momento, el frente es una colección de listas
enlazadas.
Algoritmo APB(S, p)
Fig. 5. Esqueleto del algoritmo APB. Varias pruebas de errores
necesarias han sido dejadas fuera para facilitar la lectura, tales
como comprobar la orientación de las aristas. Las aristas en el
frente F se acceden generalmente por mantener una cola de
aristas activas. La operación de unión (join) añade dos aristas
activas en el frente. La operación de encolar (glue) elimina
dos aristas del frente, y cambia la topología del frente por
separar un solo bucle en dos, o la combinación de dos bucles
en uno. Ver texto para más detalles. La función de encontrar
un triángulo semilla (find_seed_triangle) devuelve un
triángulo descubierto ρ, el cual es usado para inicializar el
frente.
El algoritmo básico de APB se muestra en la figura 5.
Más abajo se detallan las funciones y estructuras de datos
utilizadas. En particular, luego se describe una modificación
simple necesaria para el algoritmo básico para soportar una
ejecución eficiente fuera de núcleo. Esto permite que APB
triangule conjuntos de datos grandes con un uso de memoria
mínima.
A. Consultas espaciales
Tanto ball_pivot como find_seed_triangle (líneas 3 y
10 en la figura 5) requieren de búsqueda eficiente de
subconjuntos de puntos contenidos en un pequeño vecindario
espacial. Se implementó esta consulta espacial utilizando una
red regular de células cúbicas, o pixeles volumétricos
(voxel). Cada voxel tiene lados de tamaño δ = 2ρ. Los puntos
de datos se almacenan en una lista, y la lista es organizada
usando el algoritmo de ordenamiento bucket-sort de manera
que los puntos que están en el mismo voxel forman una lista
secundaria contigua. Cada voxel almacena un puntero al
principio de su lista secundaria de puntos (a la sub-lista
siguiente si el voxel está vacío). Un voxel extra al final de la
red almacena un puntero NULL. Para visitar todos los puntos
en un voxel es suficiente para atravesar la lista desde el nodo
al que apunta el voxel para apuntar al siguiente voxel.
Dado un punto p se puede hallar fácilmente el voxel V
que se encuentra dividiendo sus coordenadas por δ. Por lo
general, es necesario buscar todos los puntos dentro de una
distancia 2ρ desde p, los cuales son un subconjunto de todos
los puntos contenidos en los 27 voxels adyacentes a V
(incluida la V en sí mismo).
La red permite el acceso en tiempo constante a los
puntos. Su tamaño sería prohibitivo si se procesa un gran
conjunto de datos en un solo paso; pero una aplicación fuera
del núcleo, que se describe en la sección IV-E, puede
procesar los datos en porciones manejables. El uso de
memoria puede reducirse aún más, a expensas de un acceso
más lento, utilizando las representaciones más compactas,
tales como la estructura de datos en una matriz esparcida.
B. Selección de semilla
Dados los datos que cumplen las condiciones del teorema
de la reconstrucción de la sección III, una semilla por
componente conectada es suficiente para reconstruir toda la
variedad (función find_seed_triangle línea 10 figura 5). Una
manera sencilla de encontrar una semilla válida es:
Elegir cualquier punto σ que aún no se haya utilizado por
la triangulación reconstruida.
Considerar todos los pares de puntos σa , σb en su
vecindario en orden de distancia desde σ.
Construir triángulos semilla potenciales σ, σa , σb.
Comprobar que la normal del triángulo es consistente con
las normales de los vértices, es decir, apuntando hacia
afuera.
Probar que una bola de radio ρ con centro en el semi-
espacio exterior que toca los tres vértices y no contiene otro
punto de dato.
Parar cuando un triángulo semilla válido ha sido
encontrado.
En presencia de ruido, datos incompletos, es importante
seleccionar una eficiente estrategia de búsqueda de semillas.
Dada una semilla válida, el algoritmo genera el componente
conectado más grande posible que contiene la semilla.
Puntos ruidosos situados a una distancia ligeramente mayor
que 2ρ desde la triangulación reconstruida podrían formar
otros triángulos de semillas potenciales, que conducen a la
construcción de pequeños conjuntos de triángulos situadas
cerca de la superficie principal (véase la figura 4 (c)). Estos
componentes pequeños son un artefacto del ruido presente
en los datos, y son por lo general no deseados. Mientras que
son fáciles de eliminar por el post-filtrado de los datos, una
cantidad significativa de recursos computacionales se
desperdicia en la construcción de ellos.
Sin embargo, se puede observar lo siguiente: Si nos
limitamos a considerar sólo un punto de datos por cada voxel
como candidato vértice de un triángulo de las semillas, no
podemos dejar que los componentes abarquen un volumen
más grande que unos pocos voxels. Además, para un voxel
dado, se considera la media normal n de los puntos que estén
dentro. Esto se aproxima a la normal, de la normal de la
superficie en esa región. Como queremos que nuestra bola
pase "sobre" la superficie, es conveniente considerar en
Fig. 4 Bola pivotante en la presencia de datos ruidosos. (a) Muestras de superficie de que se encuentran por "debajo" del nivel de la
superficie, no son tocados por la bola que pivotea y permanecen aislados (y son desechados por el algoritmo). (b) Debido a la
falta de datos, la bola pivotea alrededor de una arista hasta que toque una muestra que pertenece a una parte diferente de la
superficie. Al comprobar que las normales del triángulo y los puntos de datos son consistentemente, se evita la generación de
un triángulo en este caso. (c) Las muestras ruidosas forman dos capas, con una distancia suficiente para permitir que el radio
de la bola pase por ambas capas. Un falso componente es creado. Nuestra estrategia de selección de semillas evita la creación
de un gran número de estos pequeños componentes. Restantes se pueden quitar con un paso post-procesado simple. En todos
los casos, el APB emite una variedad triangulada.
primer lugar los puntos cuya proyección sobre n es grande y
positiva.
Por lo tanto, simplemente se mantiene una lista de voxels
no-vacíos. Buscamos estos voxels para los triángulos de
semillas válidos, y cuando uno es encontrado, comenzamos a
construir una triangulación usando las operaciones de
pivoteo. Cuando no es posible pivotar más, continuamos la
búsqueda de un triángulo semilla de donde nos habíamos
detenido, saltando todos los voxels que contienen un punto
que ahora es parte de la triangulación. Cuando no hay más
semillas que se puedan encontrar, el algoritmo se detiene.
C. Pivoteo de Bola
Una operación de pivoteo (línea 3 en la figura 5)
comienza con un triángulo τ = (σi , σj , σo) y una bola de
radio ρ que toque los tres vértices. Sin pérdida de
generalidad, se asume que la arista e(i, j) es la arista de
pivoteo. La bola en su posición inicial (deja que ci j o sea el
centro) no contiene ningún punto de datos, ya sea porque τ es
un triángulo de semillas, o porque τ fue calculado mediante
una operación de pivoteo anterior. El pivoteo es en principio
un movimiento continuo de la bola, durante el cual la bola se
mantiene en contacto con los dos extremos de arista e(i, j), como se ilustra en la figura 2. Debido a este contacto, el
movimiento está restringido como sigue: El centro c i j o de la
bola describe un círculo ϒ que se encuentra sobre el plano
perpendicular a e(i,j) y a través de su punto medio m = ½(σj +
σi). El centro de esta trayectoria circular es m y su radio es ||
cijo - m ||. Durante este movimiento, la bola puede tocar otro
punto σk. Si no hay puntos que sea tocado, entonces la arista
es una arista de frontera. De lo contrario, el triángulo (σi , σk ,
σj) es un triángulo válido nuevo, y la bola en su posición
final no contiene ningún otro punto, siendo así una bola de
partida válida para la siguiente operación de pivoteo.
En la práctica encontramos σk como sigue. Consideramos
que todos los puntos en una 2 vecindad ρ de m. Para cada
punto de dicho σx, calculamos el centro cx de la bola que toca
σi , σj y σx, si dicha bola existe. Cada cx que se encuentra en
la trayectoria circular ϒ en tor no a m, y puede ser calculado
por la intersección de una esfera de radio ρ centrada en σx
con el círculo ϒ. De estos puntos cx se selecciona uno que sea
el primero a lo largo de la trayectoria ϒ. Se presenta el
primer punto que se toca y el centro de la bola
correspondiente. Las pruebas triviales de rechazo se pueden
añadir para acelerar la búsqueda del primer punto que toca.
D. Operaciones de unión y de cola
Estas dos operaciones generan triángulos añadiendo y
moviendo las aristas de los bucles delanteros (líneas 5-7 en
la figura 5). La operación más simple es la unión, que se
utiliza cuando los pivotes de bola alrededor de la arista e(i, j)
tocando un vértice no usado σk (es decir, σk es un vértice que
todavía no forma parte de la malla). En este caso, la salida
del triángulo triángulo (σi , σk , σj), y localmente modificar el
frente mediante la eliminación e(i, j) y añadiendo las dos
aristas e(i, k) y e(k, j) (véase el gráfico 6).
Cuando σk es ya parte de la malla, uno de los dos casos
puede surgir:
Fig. 6. Una sencilla operación de unión añade un triángulo
removiendo aristas e(i, j) del frente, y se añaden dos
aristas nuevas e(i, k), e(k, i) . Fig. 8. Ejemplo de una secuencia de operaciones de unir y
encolar. (a) Un nuevo triángulo se añade a la parte frontal
existente. Los cuatro vértices del frente en el interior del
círculo de trazos, todos representan un solo punto de
datos. (b) Una unión elimina una arista y crea dos aristas
delanteras nueva, coincidentes con las existentes. (c), (d)
Dos operaciones para encolar quitar pares coincidentes de
aristas. (d) también se muestra el triángulo sque añadió.
(e) Sólo uno de las aristas creadas por esta unión es
coincidente con una arista existente. (f) La operación de
cola elimina el par duplicado.
1. σk es un vértice interno de la malla, (es decir, no se
utiliza la arista frontal σk). El triángulo correspondiente no se
puede generar, ya que crearía un vértice non-manifold. En
este caso, e(i, j) se marca simplemente como una arista de
frontera;
2. σk pertenece al frente. Después de comprobar la
orientación de la arista a evitar creando un manifold no
orientable. Se aplica una operación de unión, y salida de la
nueva malla de triángulo (σi , σk , σj). La unión podría crear
potencialmente (una o dos) pares de aristas coincidentes
(con orientación opuesta), que se eliminan mediante la
operación de cola.
La operación de cola elimina de los pares delanteros de
las aristas coincidentes, con orientación opuesta (aristas
coincidentes con la misma orientación nunca son creadas por
el algoritmo). Por ejemplo, cuando la arista e(i, k) es añadida a
la parte del frente por una operación de unión (lo mismo
aplica a e(k, j)), si e(k, j) está en el frente, la cola removerá el
par de aristas e(i, k), e(k, i) y se ajusta de acuerdo al frente. Cuatro casos son posibles, como se ilustra en la figura 7.
Una secuencia de operaciones de unión y cola se ilustra en
la figura 8
E. Extensiones fuera de núcleo.
Ser capaz de utilizar un ordenador personal para
triangular las escaneos de alta resolución permite a bajo
costo en el sitio el procesamiento de datos. Debido a su
localidad de referencia, el avance frontal de los algoritmos es
adecuado para extensiones muy simples fuera de núcleo.
Se empleó un simple esquema de corte de los datos para
extender el algoritmo mostrado en la figura 5. La idea básica
es la de almacenar en caché la parte del conjunto de datos
que actualmente se utilizan para pivotar, para vaciar los
datos que ya no se usan, y cargar los datos que son
necesarios. En nuestro caso, hemos utilizado dos planos π0 y
π1 con ejes alineados para definir la región activa de trabajo
para el pivoteo. Inicialmente se coloca π0 de tal manera que
no hay puntos de datos se encuentran "por debajo", y π1
encima de π0 a cierta distancia especificada por el usuario.
Como cada arista se crea, comprobamos si sus extremos
están "por encima" de π1; en este caso se marca la arista
congelada. Cuando todas las aristas restantes en la cola se
congelan, simplemente se intercambian los planos, y
actualizan todas las aristas congeladas en activos, y así
sucesivamente. Un subconjunto de puntos de datos se carga
y se desecha de la memoria cuando la casilla correspondiente
delimitada entra y sale de la porción activa. Analiza
fácilmente puede ser pre-procesado para romperlas en
pequeños mallas, de modo que sólo abarcan unos pocos
cortes, y la carga de la memoria sigue siendo baja.
El único cambio necesario en el algoritmo para aplicar
este refinamiento es un bucle externo para mover el trozo
activo, y la añadir las instrucciones para descongelar aristas
entre las líneas 1-2 de la figura 5.
F. Múltiples pasadas
Para hacer frente a las superficies de forma desigual en la
muestra, fácilmente se puede extender el algoritmo para
ejecutar múltiples pasadas con radios de bola cada vez
mayor. El usuario especifica una lista de radios {ρ0, …,
ρn}como parámetros de entrada. En cada corte, para
aumentar ρi , i= 0,…, n, empezamos por la inserción de los
puntos en una red de tamaño de vóxel δ = 2ρi . Dejamos que
el APB se ejecute hasta que no queden más aristas activas en
la cola. En este punto incrementamos i, y se pasan todas las
aristas del frente, y se comprueba si cada arista con su
vértice opuesto σo forma una semilla de triángulo válida para
una bola de radio ρi. Si lo es, entonces se añade a la cola de
aristas activas. Finalmente, el pivoteo se inicia de nuevo.
Fig. 7. Una operación de cola es aplica cuando la unión crea una aristas idénticas a una ya existente, pero con orientación opuesta.
Las dos aristas que coinciden se remueven, y por lo tanto se ajusta la parte del frente. Existen cuatro casos posibles: (a) Las
dos aristas forman un bucle. El bucle se elimina de la parte delantera. (b) Las dos aristas pertenecen al mismo bucle y son
adyacentes. Las aristas se eliminan y se acorta el bucle. (c) Las aristas no son adyacentes, y pertenecen a un mismo bucle.
El bucle se divide en dos. (d) Las aristas no son adyacentes y pertenecen a un mismo bucle. Los bucles se fusionan en uno.
G. Comentarios
El algoritmo APB fue implementado en C++ usando la
librería de plantillas estándar. El código de conjunto es
menos de 4000 líneas, incluyendo las extensiones fuera del
núcleo.
El algoritmo es lineal en el número de puntos de datos y
utiliza el almacenamiento lineal, bajo la suposición de que la
densidad de datos es limitada. Esta suposición es apropiada
para los datos digitalizados, que es recogido por el equipo
con un espaciado de muestra conocido. Incluso si varios
análisis se superponen, el número total de puntos en
cualquier región estará delimitado por una constante
conocida.
La mayoría de los pasos son simples O(1) que verifican
los estados o actualizaciones de las colas, listas encadenadas,
y similares. Con una densidad limitada, un punto sólo
necesita estar relacionado con un número constante de los
vecinos. Así, por ejemplo, un único punto puede estar
contenido en un número constante de bucles en el frente de
avance. Las dos operaciones ball_pivot y
find_seed_triangle son más complejas.
Cada ball_pivot opera en una arista de diferentes mallas
por lo que el número de pivotes es O(n). Un simple pivote
requiere identificar todos los puntos en una vecindad 2ρ. Una
lista de estos puntos se puede recoger a partir de 27 voxels
que rodean el punto candidato en nuestra red. Con una
densidad limitada, esta lista tiene un tamaño fijo B.
Llevamos a cabo un pocos cálculos algebraicos en cada
punto de la lista y seleccionar el resultado mínimo, todas las
operaciones O(1) en una lista de tamaño O(1).
Cada find_seed_triangle recoge puntos no utilizados uno
a la vez y comprueba si cualquier triángulo incidente es una
semilla válida. Ningún punto es considerado más de una vez,
por lo que esta prueba se realiza sólo O(n) veces. Para probar
un punto candidato, nos reunimos el mismo punto de la lista
se discutió anteriormente, y considerar los pares de puntos
hasta que, o bien encontrar un triángulo semilla o rechazar al
candidato. Prueba uno de estos triángulos pueden requerir la
clasificación de todos los lugares en contra de una esfera de
tocar los tres vértices, en el peor de los casos, O(B3) = O(1)
pasos. En la práctica, se limita el número de puntos y
triángulos candidatos probados por las heurísticas discutidas
en la sección IV-B.
Una implementación en el núcleo del APB usa de
memoria O(n + L), donde L es el número de celdas en la red
del voxel. El término O(n) incluye los datos, el avance de
frente (que sólo puede incluir cada arista de la malla una
vez), y la cola de aristas candidato. La implementación en el
núcleo usa O(m + L’) de memoria, donde m es el número de
puntos de datos en el mayor trozo y L’ es el tamaño de red
más pequeño que cubre un solo corte. Dado que el usuario
puede controlar el tamaño de los cortes, los requisitos de
memoria se pueden adaptar para el hardware disponible. La
red voxel puede ser más compacta representada como una
matriz dispersa, con un pequeño (constante) aumento del
tiempo de acceso.
V. RESULTADOS DE LAS PRUEBAS
Los experimentos para este trabajo se llevaron a cabo en
una 450MHz Pentium II Xeon processor de una IBM
IntelliStation Z Pro con Windows NT 4.0.
En estos experimentos se utilizaron varios conjuntos de
datos: conjunto de datos "limpios" (es decir, los puntos de la
superficie analítica, ver figura 9); los conjuntos de datos de
la base de datos analizados de Stanford (véase la figura 11
(a) - (c)), y un conjunto de datos muy grande adquiridos (y
la motivación principal de este trabajo), un modelo de
Michelangelo’s Florentine Pieta [3] (véase la figura 11 (d)).
Para permitir la entrada flexible de varios análisis y fuera
del núcleo de ejecución, el programa lee la entrada en cuatro
partes: una lista de las exploraciones individuales que se
convierten en una malla de triángulos único y coherente, y
para cada ciclo, una matriz de transformación, un puesto -
transformar el cuadro delimitador (utilizada para estimar con
rapidez la posición de malla para la asignación a una
división), y el escaneo real, que se carga sólo cuando sea
necesario.
A. Pruebas
La tabla de la figura 10 se resume los resultados. El
conjunto de datos "limpios" es una colección de puntos de
una superficie analítica. El conejito de conjuntos de datos de
Stanford, el Dragón y el Buda son múltiples escaneos de
rango láser de objetos pequeños. El escáner utilizado para
adquirir los datos era un 3030MS Cyberware.
Estos datos se requiere algún preprocesamiento menor.
Se utilizó el programa vrip de Standord para conectar los
puntos dentro de cada rango de datos individuales de
Fig. 9. Resultados. Datos limpios a partir de una figura
analítica.
Fig. 10. Resumen de los resultados. Número de puntos y número de escaneos son el número original de los puntos de datos e
imágenes de rango, respectivamente. ρ lista de radios de las bolas de pivoteo. Radio múltiple significa los múltiples
pasos del algoritmo, con aumenta de tamaño de la bola, se utilizaron. # Slices es el número de cortes en el que los
datos se repartieron para ser procesados fuera del núcleo. # Triangles es el número de triángulos creados por el APB.
Mem. Usage es la máxima cantidad de memoria utilizada durante la generación de mallas, en MB. I/O Time el tiempo
dedicado a la lectura de los archivos binarios de entrada, también incluye el tiempo para escribir la malla de salida,
como un conjunto de triángulo indexado, en formato binario. CPU Time es el tiempo gastado para calcular la
triangulación. La franja horaria es en minutos, salvo que se indique lo contrario. Todas las pruebas se realizaron en un
450 MHz Pentium II Xeon.
son en minutos, salvo que se indique lo contrario.
Fig. 11. Resultados. (a) Conejo de Stanford. (b) Dragon de Stanford. (c) Buda de Stanford. (d) Reconstrucción
preliminar de Michelangelo’s Florentine Pieta.
escaneo para proporcionar estimaciones de las normales de
la superficie. También elimina los planos a esculpidos, los
planos grandes de triángulos utilizados para el llenado de
agujeros de los algoritmos descritos en [6]. Este cambio se
hizo sólo por razones estéticas, el APB no tiene problemas
para manejar la entrada completa.
Con el fin de confirmar la eficacia de nuestras
capacidades fuera de núcleo, hemos modificado el Dragón de
Stanford mediante la subdivisión de cada malla amplia en
varios pedazos, la multiplicación de las originales 71 mallas
a más de 7500. Un pre-procesamiento similar se aplica
también al conjunto de datos de Buda. Tomamos nota de que
estas descomposiciones se puede realizar de manera eficiente
para las exploraciones del área de distribución
arbitrariamente grandes (que no necesariamente tienen que
caber en la memoria) mediante las técnicas descritas en [20].
Los datos de Pieta han sido objeto de pre-procesamiento
extenso durante y después del escaneo y registro que está
fuera del alcance de este documento. Los datos son lo
suficientemente grandes que no pueden ser procesados en el
núcleo, y sólo se procesan en cortes. El escaneo de Pieta
también incluye la captura de múltiples imágenes de color
con iluminación calibrada, los mapas de reflexión y las
normales para aumentar los datos geométricos que son
calculados (ver [21]).
VI. CONCLUSIONES
En este trabajo, presentamos el algoritmo de pivoteo de
bola, un algoritmo de avance frontal para construir
gradualmente una triangulación de interpolación de una nube
de puntos dado. APB tiene varias propiedades deseables:
Intuitivo: APB triangula un conjunto de puntos por el
rodamiento del radio de una bola en una nube de puntos. El
usuario elige un solo parámetro.
Flexible, eficiente y robusto: Nuestras bases de datos de
prueba oscilaron entre los pequeños datos sintéticos de
grandes escaneos del mundo real. Hemos demostrado que
nuestra implementación de BPA trabaja en conjuntos de
datos de millones de puntos que representan los escaneos
reales de complejos objetos en 3D. Para nuestros datos de
Pieta, encontramos que en un PC Pentium II, el algoritmo
genera y escribe en el disco de la malla de salida a una
velocidad de aproximadamente 500K triángulos por minuto.
Fundamentos teóricos: el APB se relaciona con el alpha-
shapes [2], y teniendo en cuenta el muestreo lo
suficientemente denso, se garantiza para reconstruir una
superficie homeomorfa y dentro de una distancia limitada
desde el manifold original.
Hay algunas pistas para seguir trabajando. Sería
interesante para evaluar si el APB se puede utilizar para
triangular superficies muestreadas con sistemas de partículas.
Esta posibilidad quedó como un problema abierto en [22], y
desarrollado en [23] en el contexto de la generación de
isosuperficie.
Mediante el uso de puntos ponderados, podríamos ser
capaces de generar triangulaciones de muestreos de
adaptación. La densidad de muestreo podría ser cambiado
dependiendo de las propiedades superficiales locales, y el
peso del punto de acuerdo asignado o calculado. Una
extensión de nuestro algoritmo a lo largo de las líneas de la
generalización ponderada de alpha-shapes [18], deben ser
capaces de generar una más compacta, adaptativa,
interpolación de triangulación.
Hemos hecho algunos experimentos iniciales en el uso de
un algoritmo de suavizado adaptado de [19] para pre-
procesar los datos y para calcular los puntos de consenso a
partir de múltiples escaneos superpuestos para ser utilizado
como entrada para el APB, mientras que al mismo tiempo
haciendo pequeños refinamientos a la alineación rígida de
los análisis a los demás. Conjuntos de datos utilizados en
este trabajo se pre-procesaron utilizando nuestra actual
implementacion de este algoritmo.
Agradecimientos. Gracias al Laboratorio de
Computación Gráfica de la Universidad de Stanford, por
crear algunos de los datos de rango utilizados en este
documento a disposición del público. El Museo dell’Opera
del Duomo in Florence, Italia nos ha permitido analizar el
Michelangelo’s Florentine Pieta. Reconocemos su amable
colaboración.
REFERENCIAS
[1] K. Pulli, T. Duchamp, H. Hoppe, J. McDonald, L. Shapiro, and
W. Stuetzle, “Robust meshes from multiple range maps,” in Intl.
Conf. on Recent Advances in 3-D Digital Imaging and Modeling.
May 1997, pp. 205–211, IEEE Computer Society Press.
[2] H. Edelsbrunner and E. P. M¨ ucke, “Three-dimensional alpha
shapes,” ACM Trans. Graph., vol. 13, no. 1, pp. 43–72, Jan. 1994.
[3] J. Abouaf, “The Florentine Piet` a: Can visualization solve the
450-year-old mystery?,” IEEE Computer Graphics & Applications,
vol. 19, no. 1, pp. 6–10, Feb. 1999.
[4] F. Bernardini, C. Bajaj, J. Chen, and D. Schikore, “Automatic
reconstruction of 3D CAD models from digital scans,” International
Journal of Computational Geometry and Applications, vol. 9, no. 4
& 5, pp. 327–370, Aug.-Oct. 1999.
[5] R. Mencl and H. M¨ uller, “Interpolation and approximation of
surfaces from three-dimensional scattered data points,” in
Proceeding of Eurographics ’98. Eurographics, 1998, State of the
Art Reports.
[6] B. Curless and M. Levoy, “A volumetric method for building
complex models from range images,” in Computer Graphics
Proceedings, 1996, Annual Conference Series. Proceedings of
SIGGRAPH 96, pp. 303–312.
[7] W. Lorensen and H. Cline, “Marching cubes: a high resolution
3d surface construction algorithm,” Comput. Graph., vol. 21, no. 4,
pp. 163–170, 1987.
[8] M. Soucy and D. Laurendeau, “A general surface approach to
the integration of a set of range views,” IEEE Transactions on
Pattern Analysis and Machine Intelligence, vol. 17, no. 4, pp. 344–
358, Apr. 1995.
[9] G. Turk and M. Levoy, “Zippered polygonal meshes from range
images,” in Computer Graphics Proceedings, 1994, Annual
Conference Series. Proceedings of SIGGRAPH 94, pp. 311–318.
[10] C. Dorai, G. Wang, A. K. Jain, and C. Mercer, “Registration
and integration of multiple object views for 3D model
construction,” IEEE Transactions on Pattern Analysis and Machine
Intelligence, vol. 20, no. 1, pp. 83–89, Jan. 1998.
[11] C. Bajaj, F. Bernardini, and G. Xu, “Automatic reconstruction
of surfaces and scalar fields from 3D scans,” in Computer Graphics
Proceedings, 1995, Annual Conference Series. Proceedings of
SIGGRAPH 95, pp. 109–118.
[12] N. Amenta, M. Bern, and M. Kamvysselis, “A new voronoi-
based surface reconstruction algorithm,” in Proc. SIGGRAPH ’98,
July 1998, Computer Graphics Proceedings, Annual Conference
Series, pp. 415–412.
[13] J.-D. Boissonnat, “Geometric structures for three-dimensional
shape representation,” ACM Trans. Graph., vol. 3, no. 4, pp. 266–
286, 1984.
[14] R. Mencl, “A graph-based approach to surface reconstruction,”
Computer Graphics Forum, vol. 14, no. 3, pp. 445–456, 1995, Proc.
of EURO-GRAPHICS ’95.
[15] A Hilton, A Stoddart, J Illingworth, and T Windeatt,
“Marching triangles: Range image fusion for complex object
modelling,” in Proc of IEEE International Conference on Image
Processing, Laussane, 1996, vol. 2, pp. 381–384.
[16] F. Bernardini and C. Bajaj, “Sampling and reconstructing
manifolds using alpha-shapes,” in Proc. of the Ninth Canadian
Conference on Computational Geometry, Aug. 1997, pp. 193–198,
Updated online versión available at www.qucis.queensu.ca/cccg97.
[17] Nina Amenta and Marshall Bern, “Surface reconstruction by
voronoi filtering,” in Proc. 14th Annual ACM Sympos. Comput.
Geom., 1998, pp. 39–48.
[18] H. Edelsbrunner, “Weighted alpha shapes,” Technical Report
UIUCDCS-R-92-1760, Dept. Comput. Sci., Univ. Illinois, Urbana,
IL, 1992.
[19] Gabriel Taubin, “A signal processing approach to fair surface
design,” in Proc. of SIGGRAPH ’95. ACM SIGGRAPH, Aug.
1995, Computer Graphics Proceedings, Annual Conference Series,
pp. 351–358.
[20] Yi-Jen Chiang, Cl´ audio T. Silva, and William Schroeder,
“Interactive out-of-core isosurface extraction,” in Proc. IEEE
Visualization ´ 98, Nov. 1998, pp. 167–174.
[21] H. Rushmeier and F. Bernardini, “Computing consistent
normals and colors from photometric data,” in Proc. of the Second
Intl. Conf. on 3-D Digital Imaging and Modeling, Ottawa, Canada,
October 1999, To appear.
[22] Andrew P. Witkin and Paul S. Heckbert, “Using parzicles to
sample and control implicit surfaces,” in Proceedings of
SIGGRAPH ’94 (Orlando, Florida, July 24–29, 1994), Andrew
Glassner, Ed. ACM SIGGRAPH, July 1994, Computer Graphics
Proceedings, Annual Conference Series, pp. 269–278, ACM Press,
ISBN 0-89791-667-0.
[23] Patricia Crossno and Edward Angel, “Isosurface extraction
using particle systems,” in IEEE Visualization ´ 97, Roni Yagel and
Hans Hagen, Eds. IEEE, Nov. 1997, pp. 495–498.