2011-08-17 7 views
9

Voglio misurare la distanza di un oggetto usando un telefono con fotocamera stereoscopica 3d con opencv. Sto cercando una formula che misurerà l'accuratezza della misurazione della distanza, a seconda della lunghezza focale, della distanza tra le 2 telecamere, della risoluzione dell'immagine e della dimensione dell'oggetto misurato. Googling un po ', ho trovato questa formula:opencv depth map accurate

d = Z^2 * p/(f * b)

Z - distanza dall'oggetto, p - accuratezza disparità, f - lunghezza focale, b - basale (distanza tra le telecamere).

Conosco la linea di base e la lunghezza focale, ma non conosco la precisione della disparità. Questa formula è quella di cui ho bisogno? In tal caso, come posso trovare la precisione della disparità?

Grazie.

risposta

5

Se si guarda il paragrafo dopo la formula 8 nel document you link si può vedere che hanno una precisione di disparità di 0,18 * 10^-6m. Leggendo un po 'oltre, concludo che l'accuratezza della disparità che usano è la distanza in m tra due pixel sul CCD delle telecamere utilizzate. Per un CCD da 1/4 "(che misura 3,2 mm per 2,4 mm) con risoluzione 640X480 (una fotocamera VGA molto vecchia) questo sarebbe 5 * 10^-6 .Non so quale sia la dimensione del sensore per LG Optimus 3D è, ma assumendo 1/4 "CCD e 2592 pixel di risoluzione orizzontale, la base per la precisione della disparità sarebbe: 1.23 * 10^-6, dando una precisione di profondità a 10m di circa 0,85m. Il che mi sembra ragionevole. Se il CCD è più piccolo migliorerà (cioè il valore di precisione si abbassa).

Questo è il valore più basso possibile che presuppone la perfetta corrispondenza delle caratteristiche tra le due immagini stereo. Questo valore rappresenta solo i limiti fisici della tua coppia stereo.

+0

Grazie. Sto cercando di ottenere una stima approssimativa di questo valore per vedere se il mio progetto è fattibile. Il telefono al momento utilizzato come target è LG Optimus 3d. La sua lunghezza focale è di 6 mm e la sua linea di base è di 24 mm. Voglio calcolare l'errore di misurazione della distanza a 10 metri. Anche se suppongo che l'errore di disparità sia solo di 1 pixel, questo non ha senso (o lo è?) d = 10000^2 * 1/(24 * 6) = ~ 694 metri ... Cosa sono io fare male? – barisdad

+0

OK, il mio primo errore è che questo non è in metri. Ma ancora non capisco cosa voglia dire. – barisdad

+0

... e il mio secondo errore è che questo valore è chiaramente inferiore a 1 (è un rapporto e non un valore di pixel). Quale potrebbe essere una stima del valore di disparità di un'auto a 10 metri? – barisdad

11

Mi rendo conto che è un anno in ritardo, ma nel caso qualcuno lo trovi.

La formula è la seguente:

dD = dd * D^2/fB

dove:

  • errore dd = disparità
  • dD = profondità errore
  • D = profondità
  • f = lunghezza focale
  • B = linea di base

se f = 6mm = 0.006m, B = 24mm = 0.024m, D = 10m, dd è 1 pixel [chiamiamolo P per ora, ma è di solito circa 1.4um].

Inserendo tutti i numeri dà a:

dD = P * 10^2/(0.006 * 0.024) ~ 694444 P

Per P=1.4um, dD = 0.97 m (che è di circa il 9,7%).

Ora si presume che la corrispondenza dia un singolo errore pixel.È possibile eseguire la ricerca dei sub pixel e, a seconda del livello di rumore e della trama nell'immagine, è possibile ottenere una corrispondenza precisa dei pixel secondari. In tal caso, la tua precisione sarebbe leggermente migliore.

NOTA che questa formula è per errore. La mappa tra disparità e profondità è la seguente:

d = fB/D

dove:

  • d = disparità
  • D = profondità
  • f = lunghezza focale
  • B = basale

Allo stesso modo, collegando i numeri dà:

d = (0.006 * 0.024/10) m = 0.0000144 m = 0.0144 mm = 14.4 um.

se si presume che la dimensione del pixel sia di circa 1.4um, quindi 14.4um è di circa 10 pixel. Questo è coerente con l'errore sopra, il che significa che un errore di 1 pixel rappresenta circa il 10%.

Un'auto a 10 metri di distanza è spostata di 10 pixel tra i sensori sinistro e destro.

Spero che questo aiuti.

+0

Ciao @ thang, la mia domanda riguarda l'errore di disparità. Viene utilizzato come valore tipico o calcolato in base alla conoscenza dei parametri del sensore? –