meshlab stuff

6
MeshLab Stuff Los experimentos prácticos de procesamiento Mesh Lunes, 07 de septiembre 2009 Mallado nubes de puntos Una de las tareas más solicitado en la gestión de los datos de escaneo 3D es la conversión de las nubes de puntos en mallas triangulares más prácticas. He aquí una guía paso a paso para la transformación de una nube de puntos en bruto en una malla de color. A partir de una nube de puntos de color (salida típica de muchos dispositivos de escaneado en 3D), cada punto tiene sólo el color y no hay información normal. En el ejemplo de conjunto de datos que vamos a utilizar es un conjunto de datos de tamaño medio de 9 millones de puntos. Los problemas típicos de este tipo de conjunto de datos un conjunto de datos: es no uniforme (proviene de una integración de diferentes conjuntos de datos), tiene un cierto error fuertemente sesgada (error de alineación, algún problema durante la integración de datos), se trata sin normales (difícil de ser sombreada). 1. Submuestreo Como primer paso, se reduce un poco el conjunto de datos con el fin de tener amore conjunto de datos manejable. Hay muchas opciones diferentes aquí. Tener un submuestreo bien espaciados es una buena manera de hacer algo de computación de una manera más rápida. El filtro de muestreo de muestreo-> Poisson disco es una buena opción. A pesar de que fue diseñado para crear muestras de discos de Poisson sobre una malla, es capaz de calcular también el disco Poisson submuestreo de una nube de puntos determinado (recuerde revisar variable lógica del "submuestreo"). Para los curiosos, que utiliza un algoritmo muy similar a la de papel dardo que lanza presentado en EGSR2009 (excepto que hemos lanzado código para tal algorith mucho antes de la publicación de este artículo :)). En la figura de la invisible un submuestreo disco Poisson de sólo 66k vértices.

Upload: jose-luis-cortes-torres

Post on 19-Jan-2016

52 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: MeshLab Stuff

MeshLab Stuff

Los experimentos prácticos de procesamiento Mesh

Lunes, 07 de septiembre 2009

Mallado nubes de puntos

Una de las tareas más solicitado en la gestión de los datos de escaneo 3D es la conversión

de las nubes de puntos en mallas triangulares más prácticas. He aquí una guía paso a paso

para la transformación de una nube de puntos en bruto en una malla de color.

A partir de una nube de puntos de color (salida típica de muchos dispositivos de escaneado

en 3D), cada punto tiene sólo el color y no hay información normal. En el ejemplo de

conjunto de datos que vamos a utilizar es un conjunto de datos de tamaño medio de 9

millones de puntos. Los problemas típicos de este tipo de conjunto de datos un conjunto de

datos: es no uniforme (proviene de una integración de diferentes conjuntos de datos), tiene

un cierto error fuertemente sesgada (error de alineación, algún problema durante la

integración de datos), se trata sin normales (difícil de ser sombreada).

1. Submuestreo

Como primer paso, se reduce un poco el conjunto de

datos con el fin de tener amore conjunto de datos manejable. Hay muchas opciones

diferentes aquí. Tener un submuestreo bien espaciados es una buena manera de

hacer algo de computación de una manera más rápida. El filtro de muestreo de

muestreo-> Poisson disco es una buena opción. A pesar de que fue diseñado para

crear muestras de discos de Poisson sobre una malla, es capaz de calcular también el

disco Poisson submuestreo de una nube de puntos determinado (recuerde revisar

variable lógica del "submuestreo"). Para los curiosos, que utiliza un algoritmo muy

similar a la de papel dardo que lanza presentado en EGSR2009 (excepto que hemos

lanzado código para tal algorith mucho antes de la publicación de este artículo :)).

En la figura de la invisible un submuestreo disco Poisson de sólo 66k vértices.

Page 2: MeshLab Stuff

2. Reconstrucción normal

Actualmente dentro MeshLab la construcción de las

normales de una nube de puntos no está especialmente optimizado (yo no aplicarlo

sobre nubes de puntos 9M) lo que a partir de malla más pequeña puede dar

resultados mejores y más rápidos. Puede utilizar esta pequeña nube de puntos a

emitir una reconstrucción de la superficie rápida (usando la reconstrucción

remallado-> superficie de Poisson) y luego transferir las normales de esta pequeña

superficie rugosa a la nube de puntos originales. Es evidente que de esta forma la

nube de puntos completa tendrá un campo normal que es, con mucho más suave de

lo necesario, pero esto no es un problema para la mayoría de los algoritmos de

reconstrucción de la superficie (pero no es un problema si desea utilizar estas

normales para dar sombra!).

3. Reconstrucción de superficies

Una vez que las normales en bruto están disponibles

reconstrucción de la superficie de Poisson es una buena opción. Uso de la nube de

puntos original con las normales calculados que construimos una superficie en la

resolución más alta (nivel de recursividad 11). Alrededor de limpiar la eliminación

de grandes rostros de filtro, y, finalmente, simplificar un poco (quitar el 30% de las

caras) con remallado-> clásica filtro simplificación colapso borde Quadric (muchos

filtros de superficie implícitas se basan en marcha cubo como algoritmos y dejan

pequeños triángulos inútiles).

4. Recuperar color original

Aquí tenemos dos opciones, color de la recuperación

como una textura o el color de la recuperación como el color por vértice. Aquí

Page 3: MeshLab Stuff

vamos a por el segundo, dejando a los primeros a un próximo post donde iremos en

más detalles sobre el nuevo material parametrización automática que estamos

agregando en MeshLab. Obviamente, si se almacena en color en vértices es

necesario tener una malla muy densa, más o menos de la misma magnitudo de la

nube de puntos original, por lo que probablemente refinar grandes caras un poco te

puede ayudar. Después de refinar la malla simplemente transfiere el atributo de

color de la nube de puntos original a la superficie reconstruida utilizando el filtro de

transferencia de atributos vértice.

5. La limpieza y la evaluación de

El filtro de transferencia de atributos vértice utiliza

una simple heurística punto más cercano para que coincida con los puntos entre las

dos mallas. Como producto secundario se puede almacenar (en el multiuso calidad

escalar por vértice) la distancia de los puntos coincidentes. Ahora sólo tienes que

seleccionar las caras con vértices cuya distancia es mayor que un umbral dado,

podemos eliminar fácilmente las caras redundantes creados por la reconstrucción de

la superficie de Poisson.

Esta tubería es sólo una de las muchas maneras posibles de acabar en un agradable malla.

Por ejemplo diferentes opciones se podrían haber hecho para el paso 2/3. Hay algoritmos de

reconstrucción que no necesitan normales de la superficie, como por ejemplo el "Voronoi

Filtering", que es un algoritmo de reconstrucción de la interpolación (por ejemplo, que la

acumulación sólo triángulos en los puntos de entrada dados) pero por lo general estos filtros

funcionan mejor en los conjuntos de datos muy limpias, sin ruido o errores de alineación.

De lo contrario en los conjuntos de datos ruidosos, es fácil que crean una gran cantidad de

situaciones que no son múltiples. Finales gracias a Denis Pitzalis por darme este bonito

conjunto de datos de un teatro-chipriota.

MeshLab Stuff

Practical Mesh Processing Experiments

Page 4: MeshLab Stuff

Monday, September 7, 2009

Meshing Point Clouds

One of the most requested tasks when managing 3D scanning data is the conversion of

point clouds into more practical triangular meshes. Here is a step-by-step guide for

transforming a raw point cloud into a colored mesh.

Let's start from a colored point cloud (typical output of many 3D scanning devices), each

point has just color and no normal information. The example dataset that we will use is a

medium sized dataset of 9 millions of points. Typical issues of such a dataset dataset: it is

non uniform (comes from an integration of different datasets), has some strongly biased

error (alignment error, some problem during data integration), it comes without normals

(hard to be shaded).

1. Subsampling

As a first step we reduce a bit the dataset in order to

have amore manageable dataset. Many different options here. Having a nicely

spaced subsampling is a good way to make some computation in a faster way. The

Sampling->Poisson Disk Sampling filter is a good option. While it was designed to

create Poisson disk samples over a mesh, it is able to also compute Poisson disk

subsampling of a given point cloud (remember to check the 'subsampling' boolean

flag). For the curious ones, it uses an algorithm very similar to the dart throwing

paper presented at EGSR2009 (except that we have released code for such an

algorith long before the publication of this article :) ). In the invisible side figure a

Poisson disk subsampling of just 66k vertices.

2. Normal Reconstruction

Page 5: MeshLab Stuff

Currently inside MeshLab the construction of

normals for a point cloud is not particularly optimized (I would not apply it over 9M

point cloud) so starting from smaller mesh can give better, faster results. You can

use this small point cloud to issue a fast surface reconstruction (using Remeshing-

>Poisson surface reconstruction ) and then transfer the normals of this small rough

surface to the original point cloud. Obviously in this way the full point cloud will

have a normal field that is by far smoother than necessary, but this is not an issue

for most surface reconstruction algorithms (but it is an issue if you want to use these

normals for shading!).

3. Surface reconstruction

Once rough normals are available Poisson surface

reconstruction is a good choice. Using the original point cloud with the computed

normals we build a surface at the highest resolution (recursion level 11). Roughly

clean it removing large faces filter, and eventually simplify it a bit (remove 30% of

the faces) using classical Remeshing->Quadric edge collapse simplification filter

(many implicit surface filters rely on marching cube like algorithms and leave

useless tiny triangles).

4. Recovering original color

Here we have two options, recovering color as a

texture or recovering color as per-vertex color. Here we go for the latter, leaving the

former to a next post where we will go in more details on the new automatic

parametrization stuff that we are adding in MeshLab. Obviously if you store color

onto vertexes you need to have a very dense mesh, more or less of the same

magnitudo of the original point cloud, so probably refining large faces a bit could be

useful. After refining the mesh you simply transfer the color attribute from the

Page 6: MeshLab Stuff

original point cloud to the reconstructed surface using the vertex attribute transfer

filter.

5. Cleaning up and assessing

The vertex attribute transfer filter uses a simple

closest point heuristic to match the points between the two meshes. As a side

product it can store (in the all-purpose per-vertex scalar quality) the distance of the

matching points. Now just selecting the faces having vertices whose distance is

larger than a given threshold we can easily remove the redundant faces created by

the Poisson Surface Reconstruction.

This pipeline is only one of the many possible way of ending up into a nice mesh. For

example different choices could have been done for step 2/3. There are reconstruction

algorithms that do not need surface normals, like for example the "Voronoi Filtering" that

is an interpolating reconstruction algorithm (eg it build up only triangles on the given input

points) but usually these filters works better on very clean datasets, without noise or

alignment errors. Otherwise on noisy datasets it is easy that they create a lot of non

manifold situations. Final thanks to Denis Pitzalis for providing me this nice dataset of a

Cypriot theater.