algorithm topografia - algoritmo robusto para la reconstrucción de la superficie de la nube de puntos 3D?




nubes tetrahedrons (9)

Estoy tratando de averiguar qué algoritmos hay para hacer la reconstrucción de la superficie a partir de datos de rango 3D. A primera vista, parece que el algoritmo de pivote Ball ( BPA ) y la reconstrucción de la superficie de Poisson son los métodos más establecidos?

  • ¿Cuáles son los algoritmos más robustos y establecidos en el campo que no sean el algoritmo de reconstrucción de superficie BPA y Poisson?
  • ¿Publicaciones de investigación recomendadas?
  • ¿Hay código fuente disponible?

Answers

Aunque no es una representación de malla, un ex colega me recomendó este enlace al código fuente para un método Thin Plate Spline:

Link

¿Alguien lo intentó?


Hay herramientas 3D Delaunay de Geometric Tools . Esta herramienta se usa DirecX y OpenGL. Lamentablemente, es posible que necesite comprar un libro para ver el código de ejemplo real de la biblioteca. Todavía lees el código y descubres.

Matlab también introdujo una herramienta de reconstrucción de superficie usando Delaunay, delaunayTriangulation class .



Como también tuve este problema, desarrollé e implementé mi propio algoritmo de la corteza de nube de puntos. Las fuentes y la documentación se pueden encontrar en github.com: https://github.com/ricebean-net/PointCloudCrust . El algoritmo se implementa en Java.

Tal vez esto pueda ayudarle. También puede encontrar un breve script de python en la página que ilustra cómo usar la biblioteca. ¡Que te diviertas!



No estoy seguro de si es exactamente lo correcto para su caso, ya que parece extraño que lo haya omitido, pero los cubos de marcha se mencionan comúnmente en casos como estos.


Si desea realizar algunos experimentos directos con varios algoritmos de reconstrucción de superficie, debe probar Meshlab , el sistema de procesamiento de malla, es de código abierto y contiene implementaciones de muchos de los algoritmos de reconstrucción de superficie citados anteriormente, como:

  • Poisson Surface Recon
  • un par de enfoques basados ​​en MLS,
  • una implementación de pivote de bola
  • una variante del enfoque basado en el volumen de Curless
  • Técnicas basadas en Delaunay (formas Alpha y filtrado Voronoi)
  • herramientas para calcular normales a partir de conjuntos de puntos dispersos
  • y muchas otras herramientas para comparar / medir / limpiar / simplificar las mallas resultantes.

Las fuentes están protegidas por GPL, por lo que no podrías usarlas en un proyecto de fuente cerrada comercial, pero es muy importante tener la sensación correcta sobre las propiedades de los diversos algoritmos de reconstrucción de superficie (qué tan sensibles son al ruido, la velocidad, la robustez a valores atípicos, cómo conservan detalles finos, etc.) antes de comenzar a implementar uno de ellos.



La gráfica de dispersión 3D vinculada por VividD y Lars Kotthoff es probablemente el mejor ejemplo de lo que estás pidiendo, pero voy a ser contrario y sugiero que tal vez estás haciendo la pregunta incorrecta.

Intentar simular tres dimensiones espaciales en una pantalla plana siempre será imperfecto y dificultará la lectura de los datos. Sin embargo, es muy fácil graficar tres dimensiones de datos diferentes en D3. Utiliza los diseños horizontal y vertical para dos de sus variables de datos, y luego el tamaño, forma, color o sombreado para su tercera variable.

Si las tres variables de datos se representan mejor con números continuos, el mejor enfoque es utilizar un diagrama de dispersión de burbujas, donde las tres dimensiones de la pantalla son posiciones horizontales, posición vertical y tamaño de burbuja.

Aquí hay un ejemplo: también usa el componente interactivo en línea para agregar una cuarta dimensión que se muestra a través del movimiento:
Bubble Scatterplot - haz clic para original

Usted dijo que sus tres dimensiones son Cliente , Producto y contenido . No sé qué tipo de valor es el "contenido" (número o categoría), pero estoy bastante seguro de que "cliente" y "producto" son categorías.

Aquí hay un ejemplo donde se usan dos dimensiones categóricas para diseñar una tabla, luego cada celda de la tabla contiene un círculo del tamaño de la tercera dimensión numérica. Si su tercera variable es una categoría, puede usar una forma para indicar qué tipo de "contenido" (si corresponde) va con cada emparejamiento de "cliente" y "producto":

Bubble Matrix - haga clic para original

Aquí hay otro, donde la tercera dimensión se muestra por color en lugar de por tamaño. Los colores representan una variable continua, pero puede elegir fácilmente un conjunto de colores de alto contraste para representar categorías:
Color Matrix - haga clic para original

Por supuesto, un gráfico de barras apiladas simple es otra manera de mostrar dos categorías y una cantidad numérica:
Gráficos de barras apiladas: haga clic para ver el original

Y no tiene que detenerse en tres variables de datos. Si dos de las variables de datos son categorías o números que no te molestan agrupar en categorías, puedes graficar cuatro variables con un enfoque "pequeño múltiple", donde creas una tabla que representa las variables categóricas y luego repites un gráfico del otras dos variables dentro de cada celda de la tabla.

Me gusta esto:
Scatterplot Matrix - haga clic para original

O esto (donde la semana y el día de la semana son dos dimensiones de los datos, y la categoría / cantidad son los otros dos):

Pie Chart Small Multiples: haz clic para originales

Espero que te haya dado muchas ideas ...







algorithm 3d computational-geometry