Quando si utilizza la funzione findHomography
di OpenCV per stimare un'omografia tra due serie di punti, da immagini diverse, a volte si ottiene una cattiva omografia a causa di valori anomali all'interno dei punti di input, anche se si utilizza RANSAC o LMEDS.Come si può sapere se una matrice di omografia è accettabile o no?
// opencv java example:
Mat H = Calib3d.findHomography(src_points, dst_points, Calib3d.RANSAC, 10);
Come si può sapere se la matrice 3x3 omografia risultante è accettabile o no?
Ho cercato una risposta a questo qui in Stackoverflow e in Google e non è stato in grado di trovarlo.
Ho trovato questo articolo, ma è un po 'criptico per me:
"The geometric error for homographies"
Vedere la domanda http://stackoverflow.com/questions/10972438/detecting-garbage-homographies-from-findhomography-in-opencv/10981249#10981249 –
se il movimento della fotocamera è limitato, potresti provare a scomporre la tua omografia e scala di prova, rotazione e/o parametri di traduzione per valori drastici. Altro metodo: se si conosce (o si prende il vincolo) che le parti grandi delle immagini dovrebbero sovrapporsi, è possibile calcolare la sovrapposizione dopo la deformazione e decidere se potrebbe essere un'omologia ovviamente falsa. Altro metodo: se usi RANSAC puoi decidere dal numero di inlier (e/o dal rapporto iniziale/totale) se l'omografia debba essere rifiutata) – Micka
@Micka grazie per il tuo aiuto, stavo già usando RANSAC, il movimento della fotocamera è non limitato e stavo cercando metodi per scartare le omografie (principalmente matematiche) prima di addentrarmi in calcoli più pesanti come applicare l'omografia e verificare la sovrapposizione. –