2010-09-13 16 views
11

Tenemos una cuadrícula con cuadrados rojos. Lo que significa que tenemos un conjunto de 3 cuadrados (con ángulos == 90 grados) que, como sabemos, tienen el mismo tamaño, están en el mismo plano y con la misma rotación en relación con el plano sobre el que descansan, y no están situados en la misma línea. avión.¿Existe un algoritmo para resolver dicho problema geométrico de reconstrucción de proyección?

Tenemos una proyección del espacio que contiene el avión con cuadrados.

im 1

Queremos convertir nuestra proyección plana con plazas para que lo veríamos como nos está orientada, en general, necesitamos una fórmula para convertir cada punto de esa proyección plano original de modo que tendría que hacer frente nos gusta en la imagen de abajo.

¿Qué fórmulas se pueden usar para resolver ese problema, cómo resolverlo, alguien se ha enfrentado a algo así antes?

im 2

+2

¿Desea la transformación en espacio de pantalla (píxeles, 2d) o en ritmo mundial (3D)? –

+0

¿Qué estructuras de datos tiene como entrada? ¿Puntos? Píxeles? ¿Lineas rectas? –

+0

Líneas rectas y objetos (pero genero tham a partir de píxeles =)) – Rella

Respuesta

6

Este es un caso especial de la búsqueda de correspondencias entre los cuadriláteros que preservan las líneas rectas. Estos generalmente se llaman transformaciones homográficas. Aquí, uno de los quads es un cuadrado, por lo que este es un caso especial popular. Puede buscar estos términos en google ("quad to quad", etc.) para encontrar explicaciones y códigos, pero aquí hay algunos para usted.

Perspective Transform Estimation

a gaming forum discussion

extracting a quadrilateral image to a rectangle

Projective Warping & Mapping

ProjectiveMappings for ImageWarping por Paul Heckbert.

La matemática no es particularmente agradable, pero tampoco es tan difícil. También puede encontrar algún código de uno de los enlaces anteriores.

+0

OK, +1 por correcto, pero el comentario acerca de que las matemáticas son desagradables es waaaayyyyy tooooooooo mild. No es difícil por conjunto, pero moverse entre el lado analítico (la matemática pura), la representación discreta de las computadoras, y luego la representación terriblemente sin resolver de la imagen renderizada va a ser muy, muy fea. Además, la matemática se pone extremadamente pálida cuando la cámara está configurada de manera "interesante", es decir, ojo de pez o teleobjetivo extremo: la conclusión es que las características de la imagen deben restringirse con mucho cuidado para que esto funcione.

+0

@Mark: de acuerdo: OP no ha sido tan claro hasta el momento sobre las limitaciones y objetivos. Y podría decirse que el problema es, dada una vista en perspectiva de 3 cuadrados rojos sin cuadrícula, para traer los 3 cuadrados rojos a una vista 2D. Tal vez esto sea menos un problema de procesamiento de imágenes y más un problema de registro. Así que esperaremos que OP aclare. Mientras tanto, esta fue mi mejor puñalada en una respuesta. – brainjam

+1

Las fórmulas de resolución son demasiado intensivas en computación para transformar PUNTOS como solicitó el OP ... pero en el problema tal como lo establece el OP, creo que la transformación de líneas rectas es el camino a seguir. Hice los cálculos para una transformación proyectiva con dos puntos de escape (usando un CAS) pero es demasiado largo y aburrido como respuesta. –

Cuestiones relacionadas