PDA

View Full Version : Lente per CMOS camera, tutto bianco a luce ambiente


psico88
25-09-2012, 19:44
Ciao a tutti.
Per la mia tesi ho progettato una scheda con camera CMOS, microcontrollore, memoria flash e varie interfacce, da collegare al PC per applicare alcuni algoritmi di image processing, che ho già scritto, sulle foto fatte.
Ho impiegato quasi un mese solo per far leggere correttamente l'output della camera al microcontrollore, ottimizzando all'estremo il codice per non perdere neanche un colpo di clock della camera, perché è lentissimo e assolutamente sottodimensionato per l'applicazione, ma me lo hanno imposto senza ascoltare le mie obiezioni al riguardo, quindi cavoli loro (impiega quasi un minuto solo per leggere e memorizzare una singola foto...). Per fare ciò, ho utilizzato come riferimento un'immagine di test predefinita memorizzata nella camera, che ora legge alla perfezione.
Ora sto cercando di fare una foto normale. Ho messo una lente alla fotocamera, recuperata da una webcam non funzionante (una di quelle esterne per monitorare le stanze), ma non riesco a vedere nulla a luce ambiente.
Mi spiego meglio: oggi ho provato a fare delle foto al buio totale, in cui l'unica fonte di illuminazione era il LED rosso di alimentazione della scheda, a un foglio a una ventina di centimetri dalla fotocamera. Le foto erano accettabili, si distingueva il foglio con l'asticella per tenerlo e le ombre su di esso, la lente era un po' sporca e la messa a fuoco non era proprio perfetta, ma comunque quello che si vedeva era corretto (esempio foto scattata (http://imageshack.us/photo/my-images/839/outimage11.png/)), e a me per ora interessa solo riuscire a vedere qualcosa, ci penserò dopo alla qualità delle immagini.
Invece, se provo a scattare una foto a luce ambiente non vedo praticamente nulla, solo foto interamente bianche o luminosissime. Ad esempio, questa l'ho scattata ora in casa mia: foto (http://imageshack.us/photo/my-images/6/outimage1.png/), a vederla così sembra che ci sia una fortissima luce che viene dall'alto, ma la stanza è illuminata semplicemente da una lampadina da 50W, che non fa neanche molta luce. In ambiente più illuminato, ad esempio di giorno, la foto esce completamente bianca. La CMOS camera ha molti registri interni in cui si possono configurare il gain dei colori, saturazione, luma, luminance, exposure, white balance, ma io non me ne intendo minimamente di queste cose e non so cosa modificare e come. Ho provato a cambiare qualche parametro e il massimo che ho ottenuto è una foto grigiastra con un alone azzurro (al posto della solita foto interamente bianca). Qualcuno di voi, appassionato o esperto di queste cose, sa a cosa può essere dovuto questo comportamento e quali parametri modificare per correggerlo?

Niels.bb
25-09-2012, 20:30
Hai qualche modo per controllare il tempo di esposizione del sensore alla luce ?

psico88
25-09-2012, 21:19
Ecco, un ottimo concetto che non conoscevo. Il tempo di esposizione è quello per fare la foto, la lente è una di quelle per webcam che lascia sempre passare la luce (è questa (http://imageshack.us/photo/my-images/163/lente.png/), tanto per intenderci, è alta un paio di centimetri). Anche il sensore CMOS è uno di quelli per cellulari/webcam, ha una risoluzione di 1280x1024. Il microcontrollore abbinato alla memoria flash sono di una lentezza disarmante, impiegano quasi 50 secondi a leggere e memorizzare una foto... però questo tempo non è costante per tutta l'immagine: praticamente il microcontrollore legge una riga intera della foto e la memorizza della flash, poi passa alla successiva e continua fino alla fine. Quindi le prime righe vengono lette immediatamente, le ultime vengono lette dopo 50 secondi (diciamo che impiega sui 50ms a riga)

EDIT:

mi sono letto un po' di pagine sul tempo di esposizione, ho capito cos'è e a cosa serve. In pratica, per ogni foto dovrei regolare il tempo di esposizione del sensore alla luce in base alla luce ambientale, quindi io sono praticamente fregato data la lentezza del sistema nel fare una singola foto. Diciamo che il mio è un ottimo sistema per fare foto notturne, giusto?

Athlon
25-09-2012, 23:53
se il tuo sistema ci mette 50 secondi per "prendere" una foto sei praticamente obbligato a fotografare soggetti che richiedano un tempo di esposizione di 50 secondi o superiore , quindi stelle , pianeti e poco altro.

Per velocizzare la cosa potresti ad esempio non elaborare tutti i pixel ma ad esempio solo una zona 640x480 centrale della webcam.

Ad esempio passando da 1280x1024 (1310720 pixel) a 640x480 (307200 pixel) passeresti da un tempo di elaborazione di 50 secondi ad un tempo di elaborazione di 11 secondi circa.

Un atra strada potrebbe anche essere quella di vedere se il clock che stai usando per il microcontrollore e' il massimo possibile , molti hanno un clock interno di default , pero' possono accettare anche un segnale da un quarzo esterno con frequenza piu' alta.

Comunque e' anche possibile overclockare un pochino i circuiti elettronici curando la stabilita' di alimentazione e raffreddandoli per bene , questo puo' consentire di aumentare la velocita' di funzionamento anche del 10% circa

psico88
26-09-2012, 00:50
Sì, potrebbe essere una buona idea quella di leggere solo la parte centrale, ma 11 secondi non è comunque un tempo lunghissimo per un ambiente abbastanza illuminato? Magari potrei provare con 320x256, è una risoluzione ridicola ma dovrebbe far la foto in pochi secondi. Anche se non so esattamente quanto sia un tempo accettabile per un ambiente illuminato, in cui dovrebbe poi lavorare.

La frequenza alla fine non è un problema grandissimo, anche se è veramente al limite delle sue capacità per ora. Il problema più grande è la flash, che è davvero lentissima... nel tempo che impiego a salvare una riga della foto, la fotocamera avrebbe il tempo di inviarmi una foto completa praticamente.

Bounty_
26-09-2012, 06:31
a vederla così sembra che ci sia una fortissima luce che viene dall'alto,
ma la stanza è illuminata semplicemente da una lampadina da 50W,
che non fa neanche molta luce.
Se la lampada è ad incandescenza si capisce perchè è luminosissima,
emette soprattutto nell'infrarosso e tra la lente e il CMOS non hai messo
un filtro per schermare gli infrarossi che normalmente c'è; e il CMOS gli infrarossi
li rileva.

Cioè NON questo http://www.hwupgrade.it/forum/showthread.php?t=2281833
che filtra la luce visibile per far vedere gli infrarossi
cioè l'opposto di quello che ti serve;

ma quello che quì http://www.hoagieshouse.com/IR/ chiamano "Infra Red Filter.
It stops IR light getting through to the sensor".
Guarda quì dove lo tolgono per riceverli invece gli infrarossi:
http://hackaday.com/2006/12/20/digital-camera-ir-filter-removal/
è questo che ti serve mettere, secondo mè.

Ciao

psico88
26-09-2012, 10:52
Hmm, proverò anche questo. Ho trovato un'altra lente che al fondo ha un piccolo vetrino rosso incollato, dovrebbe essere quello che dici tu giusto? foto (http://imageshack.us/photo/my-images/513/lente2.jpg/)

Verro
27-09-2012, 09:48
Se il problema è il tempo di esposizione, mi dispiace, ma è un disastro! A parte che con 50 secondi di esposizione, la foto sarebbe dovuta venire COMPLETAMENTE BIANCA, anche con 5-6 secondi...
Diciamo che ad una buona ora (le 3-4 del pomeriggio), un buon tempo di esposizione (che però dipenda anche dagli ISO e dall'apertura della lente) si assesta su 1/100 di secondo...anche 1/200 di secondo...quindi non so, ma credo che avrai discreti problemi :muro:

psico88
29-09-2012, 17:24
Sì era l'esposizione il problema, sono riuscito a "risolverlo", se così si può dire, abbassando drasticamente il tempo di integrazione della cmos camera, mettendolo quasi al minimo. Ora riesco a fare le foto anche di giorno nonostante i 50 secondi di esposizione. Rimane sempre un sistema lentissimo che sarebbe da rifare tutto con un hardware più veloce, ma così me lo hanno chiesto e così l'ho fatto. Alla fine non sono riuscito a leggere solo la parte centrale del sensore, ci sono i registri per specificare da quale riga e colonna partire ad inviare i pixel ma qualunque cosa ci scrivo fa sempre di testa sua, invia sempre a partire dall'angolo in alto a sinistra :muro: . Ora l'unico problema è che ogni tanto nelle foto vedo tutti i colori stile arcobaleno. Si riconoscono le forme degli oggetti, ma si vedono delle specie di "cerchi" color arcobaleno al posto dei colori normali. Penso siano delle riflessioni della luce dentro la lente, dato che per ora non è fissata con le viti. Può essere?

baolian
01-10-2012, 08:45
Non conosco l'elettronica che c'è dietro e quindi magari dico una stupidaggine, ma conosco la fotografia: provare a diaframmare la lente? Con un diaframma piuttosto chiuso riduci la quantità di luce totale che colpisce il sensore, quindi i tempi lunghi non sarebbero un problema (ovviamente il soggetto deve essere statico). Inoltre con un diaframma così avresti una notevole profondità di campo risolvendo alla radice il problema della messa a fuoco.