Pergunta

A questão que estamos tentando resolver a questão de localizar um ponto em duas representações diferentes de um avião. O primeiro plano que temos é girado para criar perspectiva; O segundo é uma visão 2D do mesmo plano. Temos 4 pontos em cada um dos planos que sabemos ser equivalente. A questão é que, se tivermos um ponto arbitrário no plano 1, como encontramos o ponto correspondente no plano 2?

Provavelmente é melhor ilustrar o caso de uso para esclarecer melhor a pergunta. Temos uma imagem ilustrada à esquerda.

Plano projetivo

alt text

Diagrama de layout 2D do espaço

alt text

Então, os dados que temos são os quadrados vermelhos de ambas as fotos. Observe que, se possível, gostaria que fosse possível que o espaço 2D não seja necessariamente um quadrado. Estes estão disponíveis para nós com antecedência e conhecidos. Eu também tenho pontos verdes dispostos no avião na primeira imagem. Eu gostaria de poder fazer uma projeção do ponto na imagem 1 no espaço na imagem 2.

Observe também para a imagem 1, não tenho uma janela ou posição de olho definida. Só sei que o quadrado vermelho da Imagem 1 é uma transformação da imagem da forma quadrada vermelha 2 e que a imagem 2 está no espaço 2D.

Foi útil?

Solução

Este é um caso especial de encontrar mapeamentos entre quadriláteros que preservam linhas retas. Estes são geralmente chamados de transformações homográficas. Aqui, um dos quadríceps é um quadrado, então este é um caso especial popular. Você pode pesquisar no Google estes Termos ("Quad to Quad", etc.) para encontrar explicações e código, mas aqui estão alguns para você.

Estimativa de transformação em perspectiva

uma discussão no fórum de jogos

extrair uma imagem quadrilateral para um retângulo

Projetivo deformação e mapeamento

ProjectiveMappings para o ImageWarping Por Paul Heckbert.

A matemática não é particularmente agradável, mas também não é tão difícil. Você também pode encontrar algum código de um dos links acima.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top