Autor Tema: Algoritmo para registro parcial entre conjunto de puntos con diferentes tamaños.

0 Usuarios y 1 Visitante están viendo este tema.

13 Febrero, 2021, 01:31 pm
Leído 161 veces

Ainor

  • $$\Large \color{#5372a0}\pi\,\pi$$
  • Mensajes: 74
  • Karma: +0/-0
  • Sexo: Masculino
Hola, necesito realizar un algoritmo de registro entre dos conjuntos de puntos \( A \) y \( B \).  El conjunto \( A \) son mis puntos fuentes y el conjunto \( B \) mis puntos destino.
El conjunto de puntos \( B \) tiene aproximadamente 300000 puntos y el conjunto de puntos \( A \) tiene solo 42 puntos. Necesito encontrar la matriz de transformación que permita transformar los puntos del conjunto \( A \) hacia el conjunto \( B \) con el mínimo error posible. 
Estoy usando la biblioteca PCL, alguien me puede recomendar algún algoritmo o vía de solución a este problema. Hasta ahora he utilizado el algoritmo TrimmedICP pero no encuentra solución alguna, no hay convergencia.

El conjunto de puntos \( A \) son extraídos de la superficie de un objeto en 3d en una computadora. Ese mismo objeto se tiene en el mundo real con las mismas dimensiones que el objeto virtual, pero solo se pueden extraer del objeto real 42 puntos.
El problema consiste en encontrar una matriz de transformación que permita mapear los puntos de las coordenadas del objeto en el mundo real a las coordenadas del objeto virtual o viceversa.
Es posible hallar una primera matriz de transformación si se seleccionan 4 puntos del objeto virtual y después se seleccionan cuatro puntos del objeto real en posiciones similares (digo similar porque es casi imposible tomar los mismos puntos en el mundo real a simple vista) y realizar una transformación afín, pero esta transformación es sola una primera aproximación y el error puede ser grande. El objetivo es encontrar un buen procedimiento que mejore aún más el error.

13 Febrero, 2021, 01:59 pm
Respuesta #1

martiniano

  • Moderador Global
  • Mensajes: 1,498
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
Hola.

No repitas una misma pregunta en hilos diferentes. Es más productivo centrar los aportes que vayan surgiendo en uno sólo.

El conjunto de puntos \( B \) tiene aproximadamente 300000 puntos y el conjunto de puntos \( A \) tiene solo 42 puntos. Necesito encontrar la matriz de transformación que permita transformar los puntos del conjunto \( A \) hacia el conjunto \( B \) con el mínimo error posible. 

La verdad es que no me queda muy claro qué condiciones le exiges a la transformación. ¿Puedes detallarlo o contextualizar un poco más?

Un saludo.

14 Febrero, 2021, 04:58 pm
Respuesta #2

Ainor

  • $$\Large \color{#5372a0}\pi\,\pi$$
  • Mensajes: 74
  • Karma: +0/-0
  • Sexo: Masculino
El conjunto de puntos \( A \) son extraídos de la superficie de un objeto en 3d en una computadora. Ese mismo objeto se tiene en el mundo real con las mismas dimensiones que el objeto virtual, pero solo se pueden extraer del objeto real 42 puntos.
El problema consiste en encontrar una matriz de transformación que permita mapear los puntos de las coordenadas del objeto en el mundo real a las coordenadas del objeto virtual o viceversa.
Es posible hallar una primera matriz de transformación si se seleccionan 4 puntos del objeto virtual y después se seleccionan cuatro puntos del objeto real en posiciones similares (digo similar porque es casi imposible tomar los mismos puntos en el mundo real a simple vista) y realizar una transformación afín, pero esta transformación es sola una primera aproximación y el error puede ser grande. El objetivo es encontrar un buen procedimiento que mejore aún más el error.

14 Febrero, 2021, 11:53 pm
Respuesta #3

martiniano

  • Moderador Global
  • Mensajes: 1,498
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
Hola.

No estoy seguro pero parece que quieres resolver un problema de interpolación de dos variables. Conoces ciertos puntos de una superficie y a partir de ellos quieres aproximar la posición de otros. ¿Es eso?.

En tal caso no te puedo ayudar mucho, porque no conozco algoritmos para eso. Tal vez alguien por aquí pueda echarte una mano, y si no, pues ya sabes qué buscar.

Un saludo.