Esto se publicó originalmente como una pregunta de programación, por lo que intentaré mantenerlo lo más abstracto posible.
Estamos ante dos imágenes. El primero es el original y el segundo es una versión distorsionada del original. Imágenes de muestra adjuntas.
El original tiene un cuadrado (marcador) dibujado en la parte superior izquierda, uno en la parte superior derecha y otro en la parte inferior derecha. Los tres cuadrados se utilizan para determinar la orientación. sabemos el , de la imagen y la coordenadas de los tres marcadores. También hay un punto de interés. en la imagen cuyo posición que conocemos.
La versión distorsionada tiene algunas transformaciones aplicadas (solo traducción, escala y rotación). Esto es muy común si un documento/imagen se imprime y se vuelve a escanear en el sistema. Incluso podría estar al revés, torcido, etc. pero por ahora ignoremos eso y supongamos que incluso la rotación no es más de 15 grados.
Ahora, soy capaz de detectar el
coordenadas de todos los marcadores y calcular el ángulo de rotación, la cantidad de
traducción y la
factor de escala.
Ahora, soy capaz de detectar el coordenadas de todos los marcadores para la imagen transformada y necesita calcular la transformada :
dónde
Hay dos preguntas distintas aquí:
Como se aclara en los comentarios, las transformaciones consideradas equivalen a todas las transformaciones de similitud del plano. Cualquier transformación de este tipo se puede escribir como un producto , dónde es una traducción, es una rotación y es una escala homogénea. En coordenadas, esto es
Asumiré que la relación de aspecto de la imagen es tal que las rotaciones hasta no puede inclinar la diagonal más allá de la horizontal o la vertical, es decir, los marcadores en la parte superior permanecen en la parte superior y los marcadores en la derecha permanecen en la derecha. De lo contrario, es posible que primero deba realizar algunas pruebas adicionales para identificar los marcadores correctamente.
El ángulo de rotación se puede extraer de los marcadores superiores: , dónde son las coordenadas del marcador superior izquierdo y son las coordenadas del marcador superior derecho. (Esto supone que los marcadores originalmente tienen el mismo coordinar; de lo contrario, debe restar el ángulo correspondiente calculado a partir de las coordenadas originales).
El factor de escala se puede determinar a partir del cambio en la distancia entre dos marcadores cualquiera, digamos los marcadores superiores: , dónde y son los originales coordenadas de los marcadores superiores. (Nuevamente, esto supone que su original las coordenadas son iguales; si no, el denominador es una raíz cuadrada análoga al numerador).
Ahora la traducción se puede determinar a partir de cualquier marcador, digamos el marcador superior izquierdo:
Entonces solo tienes que aplicar la ecuación de transformación a para transformarlo.
raheel khan
joriki
joriki