Domanda

Sto cercando di calcolare le coordinate 3D da diverse coppie di due punti di vista.
Innanzitutto, ho usato la funzione Matlab estimateFundamentalMatrix() per ottenere il F dei punti abbinati (numero> 8) che è:

F1 =[-0.000000221102386   0.000000127212463  -0.003908602702784
     -0.000000703461004  -0.000000008125894  -0.010618266198273
      0.003811584026121   0.012887141181108   0.999845683961494]
.

E la mia fotocamera - prese queste due immagini - era pre-calibrato con la matrice intrinseca:

K = [12636.6659110566, 0, 2541.60550098958
     0, 12643.3249022486, 1952.06628069233
     0, 0, 1]
.

Da questa informazione ho quindi calcolato la matrice essenziale utilizzando:

E = K'*F*K
.

Con il metodo di SVD, ho finalmente ottenuto le matrici di trasformazione proiettiva:

P1 = K*[ I | 0 ] 
.

e

P2 = K*[ R | t ]
.

Dove R e t sono:

R = [ 0.657061402787646 -0.419110137500056  -0.626591577992727
     -0.352566614260743 -0.905543541110692   0.235982367268031
     -0.666308558758964  0.0658603659069099 -0.742761951588233]

t = [-0.940150699101422
      0.320030970080146
      0.117033504470591]
.

So che ci dovrebbero essere 4 possibili soluzioni, tuttavia, le mie coordinate 3D calcolate sembravano non correggere.
Ho usato la fotocamera per scattare foto di un oggetto piatto con punti contrassegnati. Ho abbinato i punti a mano (il che significa che non dovrebbe essere un errore ovvio esiste sulla materia prima). Ma il risultato si è rivelato una superficie con un po 'di banda.
Immagino che questo potrebbe essere dovuto alla ragione per cui le immagini non sono state elaborate con distorsioni (ma in realtà mi ricordo di averlo fatto).

Voglio solo sapere se questo metodo risolvere il problema di ricostruzione 3D giusto? Soprattutto quando conosciamo già la matrice intrinseca della fotocamera.

.
.

Edit by jcraft ad ago.4: Ho rifatto il processo e ho ottenuto alcune immagini che mostrano il problema, scriverò un'altra domanda con i dettagli, quindi pubblica il link.

Edit by jcraft ad ago.4: Ho pubblicato una nuova domanda: Telecamera calibrata Get Punti corrispondenti per la ricostruzione 3D, test ideale fallito . E @schorsch apprezzo davvero il tuo aiuto che formatta la mia domanda. Proverò a imparare come fare input in così e cercherò anche di migliorare la mia gramma. Grazie!

È stato utile?

Soluzione

Se hai solo la matrice fondamentale e la intrinseca, puoi solo ottenere una ricostruzione su scala. Questa è la tua vettore di traduzione T è in alcune unità sconosciute. È possibile ottenere i punti 3D in unità reali in diversi modi:

    .
  • Devi avere alcuni punti di riferimento nel mondo con distanze note tra di loro. In questo modo puoi calcolare le loro coordinate nelle tue unità sconosciute e calcolare il fattore di scala per convertire le tue unità sconosciute in unità reali.
  • È necessario conoscere l'estrisse di ciascuna fotocamera rispetto a un sistema di coordinate comune. Ad esempio, è possibile avere un motivo di calibrazione di scacchiera da qualche parte nella tua scena che è possibile rilevare e calcolare l'estrinsica da. Vedi questo Esempio . A proposito, se conosci l'estrisse, è possibile calcolare direttamente la matrice fondamentale e le matrici di proiezione della telecamera, senza dover corrispondere ai punti.
  • Puoi fare calibrazione stereo per stimare la R e il T tra le telecamere, che ti darà anche le matrici fondamentali e essenziali. Vedi questo Esempio .

Altri suggerimenti

Gli oggetti piatti sono superfici critiche, non è possibile raggiungere il tuo obiettivo da loro.Prova ad aggiungere due (o più) punti fuori dall'aereo (vedere Hartley e Zisserman o altro testo sulla questione se ancora interessati)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top