in data 02-10-2011 03:03 PM
Salve a tutti ecco il mio dilemma.
Ho realizzato un'applicazione con VB.Net che fa uso delle librerie NI-Vision che ha lo scopo, tramite due telecamere da 1280x1024 Firewire, di monitorare un prodotto finito e di misurarne la larghezza. Tutto ok con l'acquisizione dalle cam ma ora ho il dilemma della distorsione che l'ottica produce sull'immagine. Ovviamente se voglio dei risultati affidabili devo calibrare le due cam e non ho e non voglio usare il Machine Development Module per fare la calibrazione per cui ho utilizzato le ottime librerie OpenCV per farlo. E devo dire che i risultati sono sorprendenti. Tuttavia non mi sono ancora chiari dei concetti. L'immagine ricostruita (senza distorsione) è frutto di un complesso algoritmo ma pur sempre una ricostruzione che non puo essere affidabile al 100% E' cosi ?
in data 02-11-2011 07:57 AM
Ciao Marcello_IT
Grazie per aver postato il tuo problema su questo forum, oltre al tuo feedback sulle librerie OpenCV
La precisione con cui viene calibrata la tua immagine dipende innanzi tutto dal tipo di distorsione che vuoi compensare. Si tratta infatti di distorsione lineare o non lineare (forse entrambi)? Ad ogni modo, nel primo caso (divergenza da una proiezione rettilinea) hai la possibilità di ottenere dei risultati decisamente affidabili data la trasformazione lineare che devi applicare sui punti della tua immagine. Diversamente, dipende dalla portata dell distorsione. Di conseguenza sarà compito dello sviluppatore effettuare un tuning dei parametri tale da consentire alla propria applicazione di rientrare nelle specifiche.
In definitiva, per rispondere alla tua domanda iniziale, un minimo di incertezza (matematicamente parlando) si ha sempre sull'immagine calibrata. Non penso onostamente che tale scarto possa rappresentare un problema per le performance che dovrai raggiungere.
Fammi sapere se ci sono ulteriori domande o problematiche.
Cordialmente
in data 02-11-2011 10:29 AM
Buongiorno,
grazie per la sua risposta. Dunque mi sono cimentato da poco con i sistemi di visione e purtroppo ho dovuto sostituire un vecchio software, per cui volendo o non volendo......! La distorsione che le due telecamere introducono è del tipo a barilotto, anche se non molto accentuata, ma comunque tale da non rendere accettabile la misura della larghezza dell'oggetto. Le faccio un esempio pratico: se prendo tale oggetto e lo posiziono al centro dell'immagine risulta di X pixel, lo stesso ogetto posto tutto a destra o a sinistra risulta x - 4 pixel. La misura dell'oggetto non causa l'errore di parallasse in quanto è molto sottile ( 2 mm circa di altezza, quindi trascurabile) per cui l'errore che si viene a generare è dovuto alla distorsione dell'iimagine catturata. Effettuando la calibrazione con una schacchiera autocostruita o prendendo quelle presenti in rete effettivamente l'immagine ricostruita è diversa da quella originale è la misura risulta molto più attendibile ma non ancora perfetta, presumo a causa di una calibrazione non perfettamente corretta. Spulciando sulla rete non si trova molto di come effettuare la calibrazione ,si parla sopprattutto di calibrazioni 3D, cosa che a me non interessa, io ho un piano 2D. Non sono riuscito a capire quale debba essere la dimensione della scacchiera, quante immagini debbo usare per calibrare e in che posizioni vanno messe.
Ripeto, attualmento ho stampato su un foglio A4 una scacchiera di 12x18 e la utilizzo in 3 posizioni diverse, dopodiche la funzione mi restituisce le due matrici 'distorsion' e 'intrinsic' che utilizzo poi per correggere l'immagine.
in data 02-15-2011 01:28 AM
Qualche aggiornamento?
in data 02-15-2011 03:43 AM
Salve Marcello_IT,
Trattandosi di una libreria di visione che non supportiamo direttamente non saprei come posso esserti utile. Nel caso in cui utilizzassi le nostre librerie e prodotti software (Vision Development Module) sarebbe più facile suggerirti il nostro parere.
In genere dovresti avere modo di poter condividere il tuo problema con la comunità OpenCV e appoggiarti sulla documentazione che viene messa a disposizione.
Cordialmente
in data 02-16-2011 01:20 AM
E' possibile sapere come viene effettuata la calibrazione con Vision ? La tecnica è la stessa, ovvero viene ricostruita l'immagine ?
Sto utilizzando ora Vision Builder per fare delle prove e la sua calibrazione ma anche in quel caso è tutto celato dal mistero!
02-16-2011 02:13 AM - modificato 02-16-2011 02:20 AM
Esempio fatto con Visual Bulder.
Esempio con
E la misura sul lato dell'immagine.
Come si vede la misura non è la stessa.
02-16-2011 02:26 AM - modificato 02-16-2011 02:29 AM
Come si puo vedere la misura in Pixel senza la calibrazione cambia molto. Ho voluto enfatizzare il problema utilizzando un'ottica che distorce molto l'immagine.
E al centro dell'immagine.