Si tiene 2 matrices de dimensiones N * M. ¿cuál es la mejor manera de obtener la diferencia Rect?Algoritmo de comparación de matrices
Ejemplo:
2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3
2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3
2 3 4 5 4 3 2 3 <---> 2 3 2 3 2 3 2 3
2 3 4 5 2 3 2 3 2 3 2 3 2 3 2 3
2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3
|
|
\/
Rect([2,2] , [3,4])
4 5 4
4 5 2-> A (2 x 3 Matrix)
Lo mejor que podía pensar es escanear desde Superior izquierda golpeó el punto en el que no hay diferencia. Luego escanea desde la parte inferior derecha y toca el punto donde hay una diferencia.
Pero en el peor de los casos, esto es O (N * M). ¿hay un mejor algoritmo eficiente? ¿O hay algo que podría hacer con la forma en que los represento, para que pueda aplicar un algoritmo más eficiente? Y cuidado, esta Matriz puede ser muy grande.
Este es un problema muy interesante. ¿Podría decirme para qué aplicaciones lo está usando o es más un estudio? –
@Xavier Ho - no estudio. el mismo algoritmo que puedo aplicar en imágenes sin formato – SysAdmin
Puede comparar la transformada de Fourier de cada línea y columna y comparar el resultado. El DFT es muy rápido, por lo que puede ser más eficiente. Intenta investigar OpenCV, es una gran biblioteca para procesar imágenes, y es gratis. El uso de la convolución de una imagen en la otra también puede funcionar; debe verificarlo (matemáticamente hablando) – gramm