Se si dispone di 2 matrici di dimensioni N * M. qual è il modo migliore per ottenere la differenza Rect?Algoritmo di confronto matrice
Esempio:
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)
Il meglio che ho potuto pensare è quello di eseguire la scansione da Top-sinistra ha colpito il punto in cui non v'è differenza. Quindi scansiona da In basso a destra e colpisci il punto in cui c'è una differenza.
Ma nel peggiore dei casi, questo è O (N * M). c'è un algoritmo migliore efficiente? O c'è qualcosa che posso fare con il modo in cui li rappresento, in modo da poter applicare un algoritmo più efficiente? E attenzione, questa Matrix può essere molto grande.
Questo è un problema molto interessante. Potresti dirmi quali applicazioni stai usando, o è più uno studio? –
@Xavier Ho - non studiare. stesso algoritmo che posso applicare su immagini non elaborate – SysAdmin
È possibile confrontare la trasformata di Fourier di ogni linea e colonna e confrontare il risultato. La DFT è molto veloce, quindi potrebbe essere più efficiente. Prova a guardare in OpenCV, è una grande libreria per l'elaborazione delle immagini ed è gratuita. L'uso della convoluzione di un'immagine può anche funzionare - è necessario verificarlo (matematicamente parlando) – gramm