Stima della posa della fotocamera passo dopo passo per il monitoraggio visivo e gli indicatori planari


21

Ho lavorato sul tema della stima della posa della telecamera per la realtà aumentata e le applicazioni di tracciamento visivo per un po 'e penso che, sebbene ci siano molte informazioni dettagliate sull'attività, ci sono ancora molte confusioni e incomprensioni.

Penso che le prossime domande meritino una risposta dettagliata dettagliata.

  • Cosa sono gli intrinseci della fotocamera?
  • Che cosa sono gli estrinseci della fotocamera?
  • Come calcolo l'omografia da un marker planare?
  • Se ho l'omografia come posso ottenere la posa della fotocamera?

Sono confuso sulla rinormalizzazione che fai: 1. H è l'omografia trovata dai dati usando una procedura (diciamo SVD). 2. inv (K) * H = A è la cosa con cui lavori qui. Quindi fai q1 = a1 / norma (a1) e q2 = a2 / norma (a2) come colonne ortonormali di una matrice di rotazione e fai q3 = q1xq2 ... Quindi prendi t / (qualcosa) per ottenere il vettore di traduzione. Come mai puoi semplicemente dividere q1 e q2 per cose forse diverse, e come scegli cosa dividere per? O è l'idea che la procedura SVD e la moltiplicazione per inv (K) diano qualcosa di simile ma non del tutto matrice di rotazione ortogonale / ortogonale, quindi th
user2600616

Ma come posso ottenere il punto 3D (X, Y, 1)?
Waschbaer,

Risposte:


19

È importante capire che l'unico problema qui è quello di ottenere i parametri estrinseci. Le caratteristiche intrinseche della fotocamera possono essere misurate off-line e ci sono molte applicazioni a tale scopo.

Cosa sono gli intrinseci della fotocamera?

Telecamera parametri intrinseci è solitamente chiamato matrice di calibrazione fotocamera, . Possiamo scrivereK

K=[αusu00αvv0001]

dove

  • e α v sono il fattore di scala nelledirezioni delle coordinate u e v e sono proporzionali alla lunghezza focale f della fotocamera: α u = k u f e α v = k v f . k u e k v sono il numero di pixel per unità di distanza nelledirezioni u e v .αuαvuvfαu=kufαv=kvfkukvuv

  • è chiamato il punto principale, di solito le coordinate del centro dell'immagine.c=[u0,v0]T

  • è l'inclinazione, solo diverso da zero se u e v sono non perpendicolari.suv

Una fotocamera è calibrata quando sono noti elementi intrinseci. Questo può essere fatto facilmente, quindi non è considerato un obiettivo nella visione artificiale, ma un passaggio banale fuori linea.

Che cosa sono gli estrinseci della fotocamera?

Estrinseci della fotocamera o parametri esterni è una matrice 3 × 4 che corrisponde alla trasformazione euclidea da un sistema di coordinate del mondo a un sistema di coordinate della telecamera. R rappresenta una matrice di rotazione 3 × 3 e t una traduzione.[R|t]3×4R3×3t

Le applicazioni di visione artificiale si concentrano sulla stima di questa matrice.

[R|t]=[R11R12R13TxR21R22R23TyR31R32R33Tz]

Come calcolo l'omografia da un marker planare?

L'omografia è una matrice omogenea che mette in relazione un piano 3D e la sua proiezione di immagini. Se abbiamo un piano Z = 0 l'omografia H che mappa un punto M = ( X , Y , 0 ) T su questo piano e il suo corrispondente punto 2D m sotto la proiezione P = K [ R | t ] è3×3Z=0HM=(X,Y,0)TmP=K[R|t]

m~=K[R1R2R3t][XY01]

=K[R1R2t][XY1]

H=K[R1R2t]

Per calcolare l'omografia abbiamo bisogno di coppie di punti world-camera. Se abbiamo un marcatore planare, possiamo elaborarne un'immagine per estrarre le caratteristiche e quindi rilevare quelle caratteristiche nella scena per ottenere corrispondenze.

Abbiamo solo bisogno di 4 coppie per calcolare l'omografia usando la Trasformazione lineare diretta.

Se ho l'omografia come posso ottenere la posa della fotocamera?

L'omografia e la macchina fotografica pongono K [ R | t ] contiene le stesse informazioni ed è facile passare dall'una all'altra. L'ultima colonna di entrambi è il vettore di traduzione. La colonna 1 H 1 e due H 2 dell'omografia sono anche la colonna 1 R 1 e due R 2 della matrice di posa della telecamera. È rimasta solo la colonna tre R 3 di [ R | t ] e, poiché deve essere ortogonale, può essere calcolato come prodotto incrociato delle colonne una e due:HK[R|t]H1H2R1R2R3[R|t]

R3=R1R2

A causa della ridondanza è necessario normalizzare dividendo, per esempio, l'elemento [3,4] della matrice.[R|t]


4
Penso che sia fuorviante affermare che la calibrazione è "facile e non l'obiettivo del CV". Nel solito caso dobbiamo anche stimare i parametri di distorsione. Invece di autocalibrazione, consiglierei la calibrazione planare (Zhang - Una nuova tecnica flessibile per la calibrazione della fotocamera) in quanto è più flessibile se è possibile eseguire una procedura di calibrazione separata. Hai anche un piccolo errore in "Se ho l'omografia come posso ottenere la posa della fotocamera?" poiché non si prende in considerazione la calibrazione (H_ {calib} = K ^ -1H).
buq2

3
la posa della telecamera dall'omografia è sbagliata. Esistono diversi modi per farlo 'alcuni di essi sono altamente non banali.
mirror2image

Non vedo perché sia ​​sbagliato. L'ho calcolato in questo modo e funziona. Perché dici che è sbagliato?
Jav_Rock,

3
Nell'ultima sezione hai scritto che H ^ 1 e R ^ 1 e uguali, ma nella terza sezione affermi che H = K [RT] che significherebbe che R ^ 1 è in realtà K ^ -1H ^ 1. Ma questo non è strettamente vero in quanto esiste un numero infinito di H che soddisferà le equazioni e causerà problemi nella risoluzione di R ^ 1, R ^ 2 e T (la scala sconosciuta). La tua risposta ignora la solida calibrazione intrinseca e di distorsione e alcune delle equazioni sono errate per cui non è una buona risposta alla domanda.
buq2,

Sì, mi mancava la matrice di kalibration nel passaggio tre poiché l'ho presa dal mio codice e mi moltiplico per K in una diversa funzione dei codici.
Jav_Rock,

3

Pur spiegando molto bene il caso bidimensionale, la risposta proposta da Jav_Rock non fornisce una soluzione valida per le pose della fotocamera nello spazio tridimensionale. Si noti che per questo problema esistono più soluzioni possibili.

Questo documento fornisce formule chiuse per decomporre l'omografia, ma le formule sono piuttosto complesse.

OpenCV 3 implementa già esattamente questa decomposizione ( decomposeHomographyMat ). Data un'omografia e una matrice intrinseca correttamente ridimensionata, la funzione fornisce un insieme di quattro possibili rotazioni e traduzioni.

La matrice intrinseca in questo caso deve essere data in unità di pixel, il che significa che il punto principale è di solito (imageWidth / 2, imageHeight / 2)e la lunghezza focale è di solito focalLengthInMM / sensorWidthInMM * imageHeight.


Che cos'è una matrice intrinseca correttamente ridimensionata?
Guig,

1
Ho aggiornato la mia risposta. Si prega di vedere sopra.
Emiswelt,

Ehi @Emiswelt, non è la lunghezza focale focalLengthInMM / sensorWidthInMM * imageWidth? Perché invece scegli l'altezza?
El Marce,
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.