Procesamiento de imágenes; encontrar matriz de transformación (Rot, Trans)

Esperemos que esta sea una pregunta simple; el álgebra lineal no es mi fuerte.

Estoy correlacionando dos imágenes en escala de grises en función de sus valores únicos (0-255) y la posición de dichos valores en forma de matriz. He separado cada imagen en varias matrices en función de los valores de escala de grises correspondientes que se encuentran en ambas imágenes.

Estoy tratando de volver a alinear las imágenes en función de la traducción/rotación de estos valores en escala de grises de una imagen a otra.

Mi pregunta entonces; dadas dos matrices (imágenes)

Matriz A para valor de escala de grises (50) = ([5,3],[4,8],[2,1],[0,9])

Matriz B para valor de escala de grises (50) = ([2,2],[7,14],[4,3],[5,10])

¿Puedo encontrar una matriz de transformación tal que podamos extraer una matriz de traslación y una matriz de rotación?

Editar: lo siento, estas son solo matrices de ejemplo, todas serán matrices nx2, aunque estoy considerando rellenar las matrices con ceros para que sea nxn, ¿eso ayudará?

Yo mismo no tengo conocimiento del procesamiento de imágenes, pero solo como un consejo (que quizás ya sepa), también hay un Stack Exchange sobre el procesamiento de señales ( dsp.stackexchange.com ). En caso de que no encuentre lo que está buscando aquí, tal vez puedan ayudarlo allí. :)
Quieres encontrar tal 4 × 4 matriz de rotación R y 4 × 2 matriz T tal que B = R . A + T ? Por favor, aclare.
gracias @Kevin, lo haré si no tengo suerte aquí, aunque lo que deseo saber son las matemáticas sobre cómo realizar esta operación.
@Veliko, se agregó una aclaración sobre el tipo de matriz. Estas son matrices 2D, coordenadas x/y, la matriz de rotación será del tipo ([cos(T), -sin(T), 0],[sin(T), cos(T), 0], [0,0 ,1])
me parece tu " norte × 2 matrices" son solo listas de ( X , y ) pares de coordenadas y no tienen nada que ver con nada que sea un norte × 2 matriz en cualquier sentido matemático útil. Secundo la recomendación de buscar ayuda de personas que tengan experiencia específicamente en procesamiento de señales o procesamiento de imágenes; además, no te apegues demasiado a la idea de separar la imagen en esos " norte × 2 matrices"; estar abierto a otras ideas.
Mientras busqué en Google, creo que me di cuenta de lo que necesitas. Cada fila es un punto 2D. Entonces, la "rotación" y la "traducción" se realizan en CADA fila. Entonces, dados dos conjuntos de puntos escritos en las matrices A y B quieres encontrar una matriz de rotación R = ( porque T pecado T pecado T porque T ) y un vector de traducción t r = ( t X , t y ) t tal que para cada fila B i de B y cada fila A i de A tienes B i = R . A i t + t r .
@Veliko; esa parece ser la solución que necesito, no estoy seguro de cómo resolver esto, pero lo intentaré. Si puedo resolver uno, puedo resolverlos todos, ¿sí?
@vanoccupanther revisa mi respuesta, te proporciono un algoritmo.

Respuestas (2)

Mientras busqué en Google, creo que me di cuenta de lo que necesitas. Cada fila es un punto 2D. Entonces, la "rotación" y la "traducción" se realizan en CADA fila. Entonces, dados dos conjuntos de puntos escritos en las matrices A y B quieres encontrar una matriz de rotación R = ( porque T pecado T pecado T porque T ) y un vector de traducción t r = ( t X , t y ) t tal que para cada fila B i de B y cada fila A i de A tienes B i t = R . A i t + t r .

Ahora si R y t r existen y si tiene dos filas distintas de B y A tendrás eso

B 1 t = R . A 1 t + t r , B 2 t = R . A 2 t + t r

de donde después de la resta obtendrás B 2 t B 1 t = R . ( A 2 t A 1 t ) el cual es un 2 × 2 sistema lineal para las "variables" porque T y pecado T . Si sus puntos son distintos, obtendrá una solución única para R (y sabes que un ángulo T está determinada únicamente por su pecado y porque ). Una vez que tengas R determinado que obtienes t r de la primera ecuación: t r = B 1 t R . A 1 t .

Gracias @Veliko, muy apreciado.
Calculé el ángulo de rotación y la traslación para la fila 1, ¿podría confirmar que estoy calculando esto correctamente? trans_vector = [Rot(80.92), Trans(8.81, 3.69)]. Gracias
No estoy seguro si lo calculé correctamente.
@vanoccupanther, ¿estás seguro de que cada fila son las coordenadas de un punto en 2D? Sus "matrices" no contienen información sobre el color, ¿verdad?

Hice una gráfica de tus dos conjuntos de puntos (si ese es realmente el significado de las matrices A y B ) Los puntos rojos son los puntos de A y los azules de B . Para estos dos ejemplos no es cierto que exista una matriz rotacional R y un vector de traslación t r tal que B i t = R . A i t + t r como propuse en la respuesta anterior.

ingrese la descripción de la imagen aquí

Así que supongo que la pregunta no quedó clara después de los comentarios o los datos son malos.

gracias por hacer un seguimiento de esto. Inicialmente, estaba pensando en crear una línea de mejor ajuste para cada valor y luego compararla con el mismo valor en la siguiente imagen, pero aunque eso me daría rotación, no me daría una traducción. Por lo tanto, vine a buscar una forma simple de incluir tanto una rotación como una traslación.
y para responder a su pregunta anterior, no todas las imágenes son valores en escala de grises entre 0-255. Hay una serie de soluciones con respecto a tomar fft de puntos clave en cada imagen, etc., pero supongo que estoy buscando algo diferente.
Lamento no haber podido ayudar. En realidad, una línea arbitraria (no solo a través del centro) en 2D se puede transformar en cualquier otra a través de una secuencia de traslación, rotación y traslación nuevamente.
ha ayudado mucho, una cosa más si está bien preguntar, ¿cómo haría para obtener un valor de traducción promedio entre valores individuales de imágenes sucesivas? Im_1 val 50 trans a Im_2 val 50 . Si intento obtener todas las traducciones entre cada punto en imágenes sucesivas, terminaré con una traducción cero, posiblemente podría ver valores que tienen una distancia euclidiana cero en una imagen, contar los píxeles e intentar encontrar los valores correspondientes (con error tasas por cambio etc) en la siguiente imagen.