2014-12-26 10 views
5

Sono interessato all'utilizzo del tablet Project Tango per la ricostruzione 3D utilizzando funzionalità di punti arbitrarie. Nella versione attuale di SDK, sembra che abbiamo accesso ai seguenti dati.Prospettive future per il miglioramento dei dati di profondità sul tablet Project Tango

  • Un'immagine RGB 1280 x 720.
  • Una nuvola di punti con 0- ~ 10.000 punti, a seconda dell'ambiente. Questo sembra in media tra 3.000 e 6.000 nella maggior parte degli ambienti.

Quello che voglio veramente è essere in grado di identificare un punto 3D per i punti chiave all'interno di un'immagine. Pertanto, ha senso proiettare la profondità nel piano dell'immagine. L'ho fatto, e mi ottenere qualcosa di simile:

enter image description here

Il problema di questo processo è che i punti di profondità sono scarse rispetto ai pixel RGB. Così ho fatto un ulteriore passo avanti e ho eseguito l'interpolazione tra i punti di profondità. Per prima cosa, ho fatto la triangolazione di Delaunay e, una volta ottenuta una buona triangolazione, ho interpolato tra i 3 punti su ciascuna faccetta e ottenuto un'immagine di profondità decente, abbastanza uniforme. Qui ci sono le zone in cui è valida la profondità interpolata, imposta sul iamge RGB.

enter image description here

Ora, dato il modello della fotocamera, è possibile proiettare profondità ritornare in coordinate cartesiane in qualsiasi punto dell'immagine approfondita sulla (poiché l'immagine di profondità è stata fatta in modo che ogni pixel corrisponde ad un punto sull'originale Immagine RGB, e abbiamo i parametri della fotocamera della telecamera RGB). Tuttavia, se si guarda l'immagine di triangolazione e la si confronta con l'immagine RGB originale, è possibile vedere che la profondità è valida per tutti i punti non interessanti dell'immagine: per lo più, per lo più, per gli aerei privi di struttura. Questo non è solo vero per questo singolo set di immagini; è una tendenza che sto vedendo per il sensore. Se una persona si trova di fronte al sensore, ad esempio, ci sono pochissimi punti di profondità all'interno della sagoma.

Come risultato di questa caratteristica del sensore, se eseguo l'estrazione di elementi visivi sull'immagine, la maggior parte delle aree con angoli o trame interessanti si trovano in aree senza informazioni di profondità associate. Solo un esempio: ho rilevato 1000 punti chiave SIFT da un'immagine RGB da un sensore Xtion, e 960 di questi avevano valori di profondità validi. Se faccio la stessa cosa con questo sistema, ottengo circa 80 punti chiave con profondità valida. Al momento, questo livello di prestazioni è inaccettabile per i miei scopi.

Posso indovinare le ragioni alla base di questo: sembra che venga utilizzata una sorta di algoritmo di estrazione del piano per ottenere i punti di profondità, mentre i sensori di Primesense/DepthSense utilizzano qualcosa di più sofisticato.

Quindi, la mia domanda principale qui è: possiamo aspettarci qualche miglioramento nei dati di profondità in un momento successivo, attraverso algoritmi di elaborazione delle immagini RGB-IR migliorati? O questo è un limite intrinseco del sensore corrente?

+0

riflessioni molto interessanti sui problemi di ottenere IR-dati completi, grazie. Potresti spiegare un po 'come hai proceduto proiettando la profondità sul piano dell'immagine? Sto cercando di fare lo stesso per poi eseguire la fusione della mappa di profondità, ma quello che ottengo da XYZ-data dal dispositivo non corrisponde a ciò che spiegano a [link] (https://developers.google.com/ progetto di tango/panoramica/profondità percezione). Fanno finta di fornire valori in "millimetri nel frame delle coordinate della camera sensibile alla profondità", ma quello che ottengo è float con tutti i valori inferiori a 1, il che non ha alcun senso. – ArthurT

risposta

7

Sono del team Project Tango di Google. Mi dispiace che tu abbia problemi con la profondità del dispositivo. Solo per assicurarci che il tuo dispositivo sia in buone condizioni di funzionamento, puoi verificare le prestazioni di profondità su una parete piatta. Istruzioni sono le seguenti: https://developers.google.com/project-tango/hardware/depth-test

Anche con un dispositivo in buone condizioni, la libreria di profondità si caratterizza per restituire punti profondità sparse sul scene con oggetti a basso IR riflettanza, oggetti di piccole dimensioni, alti scene gamma dinamica, superfici a taluni angoli e oggetti a distanze superiori a ~ 4m. Mentre alcuni di questi sono limiti intrinseci nella soluzione di profondità, stiamo lavorando con il fornitore di soluzioni di profondità per apportare miglioramenti laddove possibile.

In allegato un'immagine di una scena tipica della sala conferenze e la nuvola di punti corrispondente. Come puoi vedere, 1) non vengono restituiti punti di profondità dallo schermo del laptop (bassa riflettanza), gli oggetti da tavolo come post-it, portamatite ecc. (Dimensioni di oggetti piccoli), grandi porzioni del tavolo (superficie ad angoli), angolo della stanza all'estrema destra (distanza> 4m).

Ma mentre ti muovi intorno al dispositivo, inizierai a ricevere i ritorni di profondità. Accumulare punti di profondità è un must per ottenere nuvole di punti più dense.

Si prega di tenere anche noi pubblicate sul tue scoperte al [email protected]

image

+1

Questo è stato migliorato in modo massiccio in 1.4/1.5 e molti altri punti di profondità sono stati restituiti, così come molto altro sugli oggetti neri. Grazie ragazzi per i vostri sforzi. – indianajohn

1

Nei miei primi esperimenti di base, sei corretto rispetto alle informazioni di profondità restituite dal campo visivo, tuttavia, il ritorno dei punti di superficie è tutt'altro che costante. Trovo che mentre sposto il dispositivo posso ottenere maggiori cambiamenti in cui viene restituita l'informazione di profondità, cioè c'è molta opacità transitoria nell'immagine rispetto ai dati di profondità, probabilmente a causa delle caratteristiche delle superfici. Quindi, mentre non è sufficiente un frame di ritorno, la vera questione sembra essere la costruzione di un modello più grande (nuvola di punti da aprire, possibilmente spazi voxel come uno scala) per portare scansioni successive in un modello comune. Ricorda gli algoritmi di apertura sintetica nello spirito, ma le lettere nelle equazioni provengono da un insieme di leggi completamente diverse. In breve, penso che un approccio più interessante sia sintetizzare un modello più completo mediante l'accumulo successivo di dati di nuvole di punti - ora, affinché funzioni, il team del dispositivo deve fare i conti a morto sui soldi per qualsiasi scala venga effettuata . Anche questo risolve un problema che nessun miglioramento del sensore può risolvere: se il tuo sensore visivo è perfetto, non fa ancora nulla per aiutarti a mettere in relazione i lati di un oggetto almeno nella stretta vicinanza del fronte dell'oggetto.

+0

Voglio ricostruire il modello 3D di un intero spazio. Speravo che il dispositivo + gli strati SDK sopra di esso fossero in grado di fornire un modello completo a me con "accumulo successivo di dati di nuvole di punti". Se dovrò farlo da solo, sarà un compito difficile. –

+0

E il fatto che i dimostrativi di google dimostrino che stanno facendo questo mi rende geloso, avido - sento il tuo dolore - che ne dici di iniziare a buon mercato e di superficiale - una semplice fila di nuvole di punti nascoste, divorare più memoria possibile, eliminare il più vecchio, aggiungi il più recente e rendilo tutto? –

+0

Sono sicuro che prima o poi rilasceranno quello che stanno cucinando, non è ancora pronto. Il componente ij della nuvola di punti xyzij dovrebbe in realtà fornire molte informazioni extra, quindi potresti essere in grado di ricostruire un modello triangolare senza PCL o pacchetti simili. Oppure sto pensando a come aiutare un metodo PCL con i dati ij. –

Problemi correlati