2010-04-02 8 views
5

Así que, primero que todo, tengo esta imagen (y por supuesto tengo todos los puntos de coordenadas en 2D para que pueda regenerarse líneas y comprobar donde se cruzan entre sí)¿Hay algún algoritmo para determinar la posición 3d en tal caso? (imágenes inferiores)

alt text http://superior0.narod.ru/2d.jpg

pero bueno, Tengo otra Imagen de las mismas líneas (Sé que son las mismas) y nuevas coordenadas de mis puntos como en esta imagen alt text http://superior0.narod.ru/3d.jpg

Así que ... ahora Tener puntos (coords) en la primera imagen, ¿Cómo puedo determinar la rotación del plano y Profundidad Z en la segunda imagen (asumiendo que el primer centro estaba en el punto (0,0,0) sin rotación)?

+2

Pidiendo una solución específica a este problema en lugar de técnicas generales huele muy parecido a una tarea. –

+3

oh vamos, este caso es general, y la solución específica será una respuesta general a muchos casos como este (para triangules por ejemplo ...) – Rella

+0

posible duplicado de [Vector Normal de Tres Puntos] (http: // stackoverflow .com/questions/2035659/normal-vector-de-tres puntos) – dmckee

Respuesta

2

Permítanme decir esto por adelantado: este problema es difícil. Hay una razón por la cual la pregunta vinculada de Dan Story no ha sido respondida. Deje que proporcione una explicación para las personas que quieran probarlo. Aunque espero estar equivocado sobre lo difícil que es.

Supongo que usted conoce las coordenadas de la pantalla 2D y la matriz de proyección/perspectiva. Necesitas saber al menos esto (si no conoces la matriz de proyección, esencialmente estás usando una cámara diferente para mirar el mundo). Vamos a llamar a cada par de coordenadas 2D pantalla (a_i, b_i), y asumirá la matriz de proyección es de la forma

P = [ px 0 0 0 ] 
    [ 0 py 0 0 ] 
    [ 0 0 pz pw] 
    [ 0 0 s 0 ], s = +/-1 

Casi cualquier proyección razonable tiene esta forma. Trabajando a través del canal de renderizado, se encuentra que

a_i = px x_i/(s z_i) 
b_i = py y_i/(s z_i) 

donde (x_i, y_i, z_i) son las coordenadas en 3D originales del punto.

Supongamos que conoce su forma en un conjunto de coordenadas canónicas (lo que desee), de modo que los vértices sean (x0_i, y0_i, z0_i). Podemos organizar estos como columnas de una matriz C. Las coordenadas reales de la forma son una transformación rígida de estas coordenadas. Organicemos de manera similar las coordenadas reales como columnas de una matriz V.A continuación, estos están relacionados por

V = R C + v 1^T    (*) 

donde 1^T es un vector fila de los que tienen la longitud correcta, R es una matriz de rotación ortogonal de la transformación rígida, y v es el vector de desplazamiento de la transformación.

Ahora, tiene una expresión para cada columna de V desde arriba: la primera columna es { s a_1 z_1/px, s b_1 z_1/py, z_1 } y así sucesivamente.

que debe resolver el conjunto de ecuaciones (*) para el conjunto de escalares z_i, y la transformación rígida definida R y v.

Dificultades

  • La ecuación es no lineal en las incógnitas, que implica cocientes de R y z_i
  • Hemos asumido hasta ahora que sabe que coordina 2D corresponde a la que los vértices de la forma original (si su forma es un cuadrado, este es un problema levemente menor).
  • Suponemos que incluso hay una solución; si hay errores en los datos 2D, entonces es difícil decir qué tan bien se cumplirá la ecuación (*); la transformación será no rígida o no lineal.
5

Lo que está tratando de encontrar se llama matriz de proyección . La determinación de la proyección inversa precisa generalmente requiere que haya establecido firmemente las coordenadas en los vectores de origen y destino, que las imágenes de arriba no le darán. Sin embargo, puede aproximar el uso de posiciones de píxeles.

This thread le dará un tutorial básico de las técnicas que necesita utilizar.

1

Se llama fotogrametría (digital). Comienza a buscar en Google

1

Si usted es realmente interesado en este tipo de problemas (que son comunes en la visión por ordenador, el seguimiento de objetos con cámaras, etc.), el siguiente libro contiene un tratamiento detallado:

Ma, Soatto, Kosecka, Sastry, An Invitation to 3-D Vision, Springer 2004.

Cuidado: este es un texto de ingeniería avanzada, y utiliza muchas técnicas que son de naturaleza matemática. Lea detenidamente los capítulos de muestra presentados en la página web del libro para tener una idea.

Cuestiones relacionadas