Filtraggio delle omografie stimate di RANSAC


10

Sto usando l' algoritmo RANSAC per la stima dell'omografia tra coppie di immagini scattate con fotocamere che non hanno alcuna traduzione tra loro (rotazione pura e cambio di scala / zoom). Funziona bene nella metà dei casi. L'output corretto è simile al seguente:

inserisci qui la descrizione dell'immagine

Le linee rosse sono corrispondenze filtrate e i quadrilateri illustrano come l'omografia distorce la prospettiva.

A volte, tuttavia, accadono molti casi negativi, come questi:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Ho già un semplice test nel loop RANSAC. Crea un quadrilatero semplice (un quadrato unitario) e lo trasforma con la trasformazione del campione. Quindi controlla se la trasformazione ha mantenuto la sua convessità.

Tuttavia, tuttavia, escono mazzi di quadrilateri concavi.

Hai idea di come testare correttamente l'omografia, se si comporta "bene" e filtrare le soluzioni errate?

Ho trovato del codice in cui testano che nessuno dei tre punti trasformati è lineare. Ma questo non sembra sufficiente in quanto non filtrerà i deltoidi e altri quadrilateri "non validi" ...

Risposte:



4

Si è verificato un problema nel verificare che l'omografia sia corretta.

L'algoritmo per il controllo delle omografie corrette potrebbe interessare qualcuno, quindi lo scriverò qui:

1) Crea un quadrilatero con coordinate vertice (in coordinate omogenee):UNBDC

UN:(-w/2,-h/2,1.0)B:(w/2,-h/2,1.0)C:(-w/2,h/2,1.0)D:(w/2,h/2,1.0)

w,h

UN'B'D'C'C'=HC

uv

d1:UN+(D-UN)S=UN+uSd2:B+(C-B)t=B+vt

d1=d2

t=1d[(By-UNy)uX-(BX-UNX)uy]

S=1d[(UNX-BX)vy-(UNy-By)vX]

S,t(0,1)

S,t(λ,1.0-λ)λ=0.01

Problema precedente, risolto nell'algoritmo sopra:

Ho trovato il problema qui - avendo una certa omografia, il test può passare per un quadrilatero più piccolo, ma non per quello più grande. Ecco perché sono passate alcune omografie "malate".

Il quadrato verde rappresenta un'immagine sorgente, l'arancione è trasformato. Come puoi vedere, quello sinistro è convesso, ma inizia a deformarsi quando la fonte è più grande:

inserisci qui la descrizione dell'immagine

Finalmente ancora più grande fonte quadrilatera non convertita:

inserisci qui la descrizione dell'immagine

(X,y,w)Xyw

Ho corretto l'algoritmo di conseguenza.


1

x_i \ sim Hx_i ^ '\ sum_ {j = 1 \ dots n} \ | x_j - Hx_j ^ '\ |H ^'x ^ '= H ^' x\ sum_ {j = 1 \ dots n} \ | x_j - Hx_j ^ '\ | + \ | x_j ^ '- H ^' x \ |

Vedi Hartley e Zisserman - Geometria a vista multipla su Computer Vision capitolo 4.2 e in particolare 4.2.3 ed equazione (4.8).


I quadrilateri visualizzati sono appena inseriti. Sono sicuro delle corrispondenze in quanto l'adattamento è molto buono. Ho usato l'algoritmo DLT normalizzato suggerito da Hartley & Zisserman e poi ho usato la raffinatezza iterativa e la corrispondenza guidata come hai detto.
Libor

Ma l'adattamento dell'omografia non può essere così buono come nella prima immagine ci sono due gruppi di punti: quelli nel condominio (che probabilmente sono sullo stesso piano) e quelli sugli alberi (che probabilmente non sono nemmeno su uno stesso piano all'interno del proprio gruppo). Sei sicuro di non voler usare la matrice fondamentale?
buq2

Le linee collegano i punti corrispondenti e le ho controllate tutte - quando le immagini sono allineate, si incontrano tutte. Quando escludo le coppie di immagini con corrispondenza errata, si ottiene un bel panorama.
Libor

Le immagini sono realizzate utilizzando una telecamera rotante, quindi può sembrare che gli aerei cambino, ma poiché le telecamere ruotano attorno al centro ottico, sono abbastanza sicuro che sia stimata un'omografia. Posso persino calcolare la lunghezza focale e la matrice di rotazione da esso. Ma il problema è altrove, una stranezza nel mio software che devo trovare ...
Libor

Ahh, non hai incluso l'informazione che non c'è traduzione tra le telecamere. Allora hai ragione e l'omografia descrive la trasformazione tra le immagini.
buq2
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.