Sommario:
- Passaggio 1: valutare la complessità del compito
- Passaggio 2: trova l'approccio corretto
- Passaggio 3: calcola l'istogramma Theta
- Passaggio 4: calcola l'istogramma Rho
- Passaggio 5: trova il nodo centrale
- Passaggio 6: scegli tra 2 alternative
- Passaggio 7: determinare gli angoli esterni
- Passaggio 8: provalo in pratica
Video: Ricostruzione 3D da una singola foto: 8 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
Il compito della ricostruzione 3D è solitamente associato alla visione binoculare. In alternativa, puoi spostare una singola telecamera attorno all'oggetto. Nel frattempo, se si conosce la forma dell'oggetto, il compito può essere risolto da una singola foto. Cioè hai solo una telecamera e non si muove. Vediamo come farlo passo dopo passo. Useremo il cubo di Rubik perché è ben standardizzato e ha un ricco set di funzionalità. Può essere considerato un oggetto molto semplice e allo stesso tempo un costrutto complicato. Quindi la visione artificiale deve superare ostacoli sostanziali per completare il compito.
Passaggio 1: valutare la complessità del compito
A prima vista, il compito è semplice. Trova il nodo centrale dove si uniscono i 3 bordi del cubo e disegna questi bordi. Dalle loro coordinate è possibile calcolare la distanza dalla telecamera e gli angoli di rotazione. Il problema è che queste linee non esistono. Dall'immagine a sinistra si vede che ogni bordo è rappresentato da 2 linee parallele. Inoltre, l'immagine in alto a destra mostra che ognuno di essi è suddiviso in 3 segmenti. Inoltre, se applichiamo una variante della popolare trasformata di Hough in grado di rilevare i segmenti di linea, esegue il compito con alcuni errori che rendono impossibile il rilevamento del nodo centrale. Se le estremità non si toccano, non c'è un unico punto. Se il rilevamento supera l'estremità, assomiglierà al nodo al centro del bordo come si vede nelle 2 immagini rimanenti.
Passaggio 2: trova l'approccio corretto
Quando troppi dettagli rendono impraticabili gli algoritmi deterministici, è il momento di considerare l'approccio probabilistico. Se calcoliamo i parametri medi dell'immagine, i loro errori saranno sostanzialmente diminuiti e paradossalmente il metodo risulterà più affidabile. La trasformata di Hough standard non produce segmenti di linea. Solo la sua pendenza theta e la distanza rho dall'origine della coordinata. Formano la parte dello spazio di Hough di cui è mostrata sopra. Qui theta corrisponde all'asse orizzontale. I punti luminosi contrassegnano le possibili linee sull'immagine. Nota che molti di questi punti si trovano uno sopra l'altro. Non c'è da stupirsi, sulla nostra immagine ci sono molte linee parallele. Hanno lo stesso theta e diversi rho.
Passaggio 3: calcola l'istogramma Theta
Rileviamo tali cluster. A questo scopo riassumeremo le letture per tutti i punti nello spazio di Hough con lo stesso theta. Vedete l'istogramma corrispondente sull'illustrazione. Qualche nota sulle misurazioni. Quando lavori con immagini in coordinate pixel, l'asse X va come al solito, ma Y punta verso il basso, quindi l'origine della coordinata è l'angolo in alto a sinistra e theta dovrebbe essere misurato dall'asse X in senso orario. Tenendo presente che l'intero arco di theta sull'immagine è di 180 gradi, è possibile verificare approssimativamente che 3 picchi principali rappresentano 3 pendenze predominanti sull'immagine.
Passaggio 4: calcola l'istogramma Rho
Ora che conosciamo 3 gruppi principali di linee parallele, separiamo le linee all'interno di ciascuno di essi. Possiamo ripetere lo stesso approccio. Prendiamo una colonna dello spazio di Hough che corrisponde a un picco sull'istogramma theta. Successivamente, calcoleremo un altro istogramma in cui l'asse X rappresenta il valore rho e Y - letture riassunte per questo rho. Ovviamente, la somma sarà inferiore, quindi questo grafico non è così fluido. Tuttavia, i picchi sono chiaramente visibili e il loro numero (7) corrisponde esattamente al numero di linee parallele sull'immagine sorgente. Sfortunatamente, non tutti i grafici sono così perfetti, ma il principio è chiaro.
Passaggio 5: trova il nodo centrale
Se prendiamo il picco centrale sull'istogramma rho per ogni theta, otterremo 3 linee che sono rosse sull'immagine. La loro intersezione segna il punto necessario.
Passaggio 6: scegli tra 2 alternative
Vedete che ogni linea va dal punto centrale in entrambe le direzioni. Come determinare la metà corretta? Prendiamo theta3. Supponiamo di prendere la parte inferiore di questa linea. Calcoliamo ancora un altro spazio di Hough solo per la parte dell'immagine da 2 linee verdi nell'angolo in alto a destra dell'immagine. Quindi crea l'istogramma theta per esso. Vedete che il terzo picco è completamente scomparso, quindi abbiamo fatto la scelta corretta.
Passaggio 7: determinare gli angoli esterni
Ora possiamo usare il primo e l'ultimo picco su istogrammi rho in modo da disegnare linee blu che tagliano i bordi rossi e segnano gli angoli di riposo. Il compito è risolto.
Passaggio 8: provalo in pratica
Le illustrazioni per questo Instructable sono state create utilizzando Perception 1.0. Questo è un software gratuito che utilizza OpenCV, una potente libreria per la visione artificiale. Inoltre può essere collegato a WinNB che è stato utilizzato nel mio altro Instructable fornendo così capacità di visione per la robotica. Puoi scaricare entrambi i programmi da nbsite. Per l'installazione, basta eseguire il file exe scaricato. Successivamente, puoi rimuoverlo utilizzando lo strumento standard di Windows. Il sito contiene anche risorse sulla visione artificiale e argomenti correlati. In Perception troverai il metodo descritto di ricostruzione 3D e molti altri. Il vantaggio di questo programma è che emette il risultato finale insieme ai dati intermedi. Sei in grado di ricercare come funziona la visione artificiale senza essere un programmatore. Per quanto riguarda l'input, ogni metodo ha campioni tipici appositamente selezionati. Certo, puoi usare anche il tuo. È possibile inserire immagini da un file o dalla fotocamera del computer. Sentiti libero di contattarmi per qualsiasi domanda o suggerimento.
Consigliato:
Display a due cifre che utilizza una singola matrice di LED 8x8: 3 passaggi
Display a due cifre che utilizza una singola matrice di LED 8x8: qui vorrei costruire un indicatore di temperatura e umidità per la mia stanza. Ho usato una singola matrice LED 8x8 per visualizzare numeri a due cifre e penso che parte del progetto sia diventata più utile. Ho inscatolato la costruzione finale usando una scatola di cartone, dolore
Fai da te Logitech Pure Fi Anywhere 2 Ricostruzione e conversione dell'aggiornamento del mini altoparlante Bluetooth: 14 passaggi (con immagini)
Fai da te Logitech Pure Fi Anywhere 2 Rebuild e Mini Bluetooth Speaker Upgrade Conversion: Uno dei miei preferiti è prendere qualcosa che trovo economico da Goodwill, Yardsale o anche Craigslist e ricavarne qualcosa di meglio. Qui ho trovato una vecchia docking station per iPod Logitech Pure-Fi Anywhere 2 e ho deciso di dargli una nuova
Ricostruzione della batteria dell'EBike: 3 passaggi
EBike Battery Rebuild: Questo Instructable non ha lo scopo di insegnarti come fare, ma piuttosto perché non ricostruire la tua batteria eBike. Avendo appena completato una mia ricostruzione lunga mesi, ho una lista di lezioni dolorose da condividere, che si sommano a questo consiglio:
Ricostruzione di base Sonoff a bassa tensione (12V): 6 passaggi
Sonoff Basic Rebuild to Low Voltage (12V): Ciao ragazzi. Non sarebbe bello a volte controllare tutti i tuoi apparecchi e tutte le tue cose con uno smart switch WiFi? Ma spesso non è necessario commutare 230V AC. Se si crea un cortocircuito durante il cablaggio, c'è il rischio di scosse elettriche - Thi
Robot Brain: costruisci un computer a scheda singola in una sera: 11 passaggi
Robot Brain: costruisci un computer a scheda singola in una sera: esaurisci la memoria sul tuo Picaxe o Arduino? Ma un PC è eccessivo per il lavoro? Dai un'occhiata a questo computer a scheda singola open source che può essere programmato in linguaggi come C, Basic, Forth, Pascal o Fortran. Questa scheda utilizza circuiti integrati e del