Pregunta

Estoy trabajando en una aplicación que detecta el rectángulo más prominente en una imagen y luego busca rotarlo para que la parte inferior izquierda del rectángulo descanse en el origen, de manera similar a como lo hace IUPR. Óscar El sistema funciona.Sin embargo, una vez que se detecta el rectángulo más prominente, no estoy seguro de cómo tener en cuenta el componente de profundidad o el eje z, ya que el rectángulo no siempre estará "de frente".Cualquier ejemplo que ayude a mejorar mi comprensión sería muy apreciado.A continuación se muestra un ejemplo del sistema OSCAR de la IUPR.

texto alternativo http://quito.informatik.uni-kl.de/oscar/oscar.php?serverimage=img_0324.jpg&montage=use

¿Fue útil?

Solución

En este caso, en realidad no es necesario lidiar con la información 3D, es solo una función de mapeo, de un conjunto de coordenadas a otro.

Mire las transformaciones afines, son capaces de corregir efectos de perspectiva y sesgo simples.Deberías poder encontrar código en algún lugar que calcule una transformación a partir de los 4 puntos en las esquinas de tu rectángulo.

Casi lo olvido: si "rápido" es realmente importante, podría simplificar el sistema para usar solo transformaciones de corte simples en combinación, aunque eso tendrá un impacto negativo en la calidad de la imagen para sujetos muy inclinados.

Otros consejos

En realidad, creo que puedes salirte con la tuya con algo mucho más simple que El enfoque de Marcos.

  1. Una vez que tenga las coordenadas 2D en la imagen sesgada, vuelva a utilizar esas coordenadas como coordenadas de textura.

  2. En un renderizador, dibuje un rectángulo simple donde los vértices de cada esquina tengan una textura asignada a los vértices que se encuentran en la imagen 2D sesgada (normalizada y transformada de otro modo al plano de coordenadas de textura de su sistema de renderizado).

Ahora puedes confiar en el hardware (usando OpenGL o similar) para hacer la corrección por ti, o puedes escribir tu propio mapeador de texturas:

Será necesario adivinar la relación de aspecto, ya que estamos desechando la información 3D real.Sin embargo, puedes salirte con la tuya simplemente tomando el ancho máximo y la altura máxima de tu rectángulo sesgado.

Mapeo de texturas en perspectiva por Chris Hecker

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top