lunedì 8 dicembre 2008

Linearità del CCD: come determinarla

Costruire una curva di linearità della propria camera CCD è un'operazione abbastanza semplice e diventa una necessità, se non un obbligo, per chi desidera utilizzare i propri strumenti astronomici alla misura fotometrica di qualsiasi sorgente celeste.
Esistono vari metodi più o meno rigorosi per determinare la linearità di un sensore CCD: ad esempio "In situ CCD testing" di T.M.C. Abbott ne utilizza uno particolarmente sofisticato utilizzato negli osservatori professionali: il sito inoltre è una sorgente di informazioni ed idee utilissima per chi desidera caratterizzare una camera CCD per usi astronomici.
Noi utilizzeremo una procedura leggermente più semplice che sarà comunque sufficientemente precisa per i nostri scopi: la possiamo suddividere in 3 passi principali: il SETUP della strumentazione, l'ACQUSIZIONE e l'ELABORAZIONE dei dati.

SETUP DEGLI STRUMENTI
Il setup degli strumenti è quello normalmente usato per l'acquisizione dei FLAT FIELD nella configurazione "DOME-FLAT" ovvero quella dove si utilizza uno schermo opalino e/o riflettente ed una sorgente di luce artificiale esterna.
Non è necessario utilizzare filtri (a meno che non sia necessario per attenuare la sorgente luminosa) ma è importante che il binning sia impostato alla massima risoluzione (1x1). Il CCD deve essere ad una prefissata temperatura, preferibilmente vicina alla temperatura usuale di lavoro. E' quindi necessario attendere che tutto quanto sia in condizioni termicamente stabili, a maggior ragione se il CCD non è termoregolato elettronicamente: generalmente occorre attendere 30-40 minuti dall'accensione della camera CCD . Evitate di eseguire la sequenza di immagini flat in ore della serata che comportano delle escursioni termiche di qualche grado come poco dopo il tramonto o l'alba.
Puntate il telescopio verso lo schermo illuminato e fate alcune esposizioni di prova aumentando gradualmente il tempo d'esposizione: per ogni immagine selezionate una finestra di all'incirca 300x300 pixel nella zona centrale dell'immagine e, utilizzando le funzioni statistiche del software individuate qual'è il valore medio (in ADU) dei pixel che compongono il riquadro fino a raggiungere la saturazione del convertitore analogico-digitale (65536 per un 16 bit, 32768 per un 15 bit ecc.).
Se utilizzate Astroart potete aprire la finestra delle statistiche dell'immagine (o del riquadro selezionato) attraverso il comando Visualizza > Statistiche, mentre per selezionare sempre lo stesso rettangolo, una volta impostate le coordinate o manualmente o con il mouse, è sufficiente premere su ogni immagine la sequenza [Ctrl] + [R].
E' importante raggiungere con certezza la saturazione poichè vogliamo stabilire esattamente i limiti del nostro strumento: senza ovviamente esagerare sottoponendo ad una luce troppo intensa tutto il sensore: occorre una cautela particolare per i CCD retroilluminati, come il sensore SiTE dell'Apogee Ap7p che potrebbe danneggiarsi anche con una semplice esposizione alla luce diurna.
Supponiamo di aver raggiunto i livelli di saturazione con un'esposizione di 35 secondi e procediamo con l'acquisizione dei frame.

AQUISIZIONE DEI FRAME
Abbiamo stabilito con le prove il tempo d'integrazione che porta alla saturazione la maggior parte dei pixel del riquadro scelto sul frame. Ricordiamo che tale tempo nel nostro esempio è di 35 secondi ma può ovviamente variare a seconda del vostro setup strumentale.
Possiamo ora procedere alla sequenza d'aquisizione dei frame necessari per la nostra analisi.
Si tratta di riprendere una sequenza di frame (chiamiamoli pure FLAT FIELD) con tempo d'integrazione via via crescente fino a raggiungere i 35 secondi con step d'integrazione da 1 secondo. Nel caso il tempo limite di 35 secondi sia per il vostro setup strumentale molto più grande, ad es. > di 60 secondi, è possibile aumentare lo step d'integrazione, portandolo a 2-3 secondi per diminuire la quantità totale di frame da misurare.
Per ogni step occorre poi riprendere il relativo DARK FRAME più un FLAT FIELD da 1 secondo con il proprio DARK FRAME della durata di 1 secondo. In breve, mettendo fra parentesi la durata in secondi dell'integrazione, la sequenza sarebbe:

FLAT(1),DARK(1),FLAT(1),DARK(1),FLAT(2),DARK(2),FLAT(1),DARK(1),FLAT(3),
DARK(3),FLAT(1),DARK(1),...FLAT(35),DARK(35),FLAT(1),DARK(1).

I FLAT FRAME e i DARK FRAME da 1 secondo ripresi tra ogni integrazione progressiva servono per verificare che non ci siano variazioni sostanziali nel comportamento della camera CCD durante l'intera sequenza.
Riprendere manualmente tutti questi frame è senza dubbio una cosa noiosa ma oramai quasi tutti i programmi d'acquisizione hanno la possibilità di creare degli script. Eccone uno d'esempio per chi utilizza Astroart:

'**********
'Variabili

'**********
folder$ = "\LINTEST\"
EXP_NUM = 35 'secondi massima esposizione
T_EXP_DARK = 0 'si pone a zero l'esposizione dei dark

darkname$ = "DDs" 'stringa iniziale del nome dei dark frame

T_EXP_LIGHT = 0 'si pone a zero l'esposizione dei flat

lightname$ = "FFs" 'stringa iniziale del nome dei flat

'************************

'Inizio ciclo esposizioni

'************************

for i=1 to EXP_NUM

Camera.Binning(1)

T_EXP_LIGHT = i
T_EXP_DARK = i


'Esposizione dei light frames

'******************************

Camera.Start(T_EXP_LIGHT)

Camera.Wait
Image.Save("F:\cavezzo" + folder$ + lightname$ + str$(i) + ".fit")


'Esposizione dei dark frames

'******************************

Camera.Start(T_EXP_DARK,0)

Camera.Wait
Image.Save("F:\cavezzo" + folder$ + darkname$ + str$(i) + ".fit")


'Esposizione del flat da 1s

'******************************

Camera.Start(1)

Camera.Wait

Image.Save("F:\cavezzo" + folder$ + "FLAT1-" + str$(i) + ".fit")


'Esposizione del dark frame da 1s

'******************************

Camera.Start(1,0)

Camera.Wait

Image.Save("F:\cavezzo" + folder$ + "DARK1-" + str$(i) + ".fit")


next i

'************************

'Fine ciclo esposizioni

'************************


Nel nostro esempio i frame vengono salvati nella cartella F:\cavezzo\LINTEST ma è intuitivo personalizzare la procedura in base alle proprie esigenze.
Occorre sottolineare che le cartelle di lavoro, dove cioè vengono salvati i frame durante l'esecuzione dello script, devono essere già esistenti, altrimenti si avrà un messaggio d'errore.

ELABORAZIONE DEI DATI
A questo punto, nella cartella LINTEST avremo 140 file che corrispondono ad altrettanti frame: 35 frame FFsXX, con i relativi 35 dark DDsXX e 35 frame da 1 secondo FLAT1-XX con i 35 dark DARK1-XX, dove XX è il progressivo di ripresa che nei primi due casi coincide anche con il tempo d'integrazione.
La prima cosa da fare è creare un master DARK FRAME con i 35 DARK FRAME da 1 secondo (DARK1-XX) e sottrarre questo master ad ognuno dei FLAT FIELD da 1 secondo (FLAT1-XX) salvando il file risultante. Con Astroart l'operazione è immediata impostando la finestra del preprocessing in questo modo:



Una volta lanciato il pretrattamento ci troveremo nella stessa cartella 35 nuovi file FLAT1-XX_P con il suffisso P che andranno analizzati con la funzione statistica Visualizza > Statistiche dopo aver selezionato il rettangolo centrale di 300 x 300 pixel (è conveniente utilizzare per questo la scorciatoia da tastiera [Ctrl] + [R]: il programma selezionerà sempre l'ultimo rettangolo di selezione memorizzato).

I dati da annotare per ogni frame sono la media e la deviazione standard come indicati nella figura qui sotto:


Conviene annotare subito i dati su un foglio di Excel: per comodità ne ho già preimpostato uno scaricabile a questo link . Dopo la compilazione di questo primo set di dati il foglio assumerà l'aspetto seguente:


Rimangono da compilare la seconda e la terza colonna del foglio di calcolo. La procedura è leggermente più lunga: occorre caricare uno alla volta il frame FFsXX con il relativo dark DDsXX, sottrarre quest'ultimo al frame FFsXX, selezionare ancora una volta con [Ctrl] + [R] il rettangolo d'analisi di 300 x 300 pixel ed aprire la finestra delle statistiche con Visualizza > Statistiche.
Anche per questi frame è necessario registrare sul foglio la relativa media e deviazione standard fino alla compilazione completa del foglio di Excel. Le ultime due colonne a destra, con l'intestazione in arancio, sono quelle calcolate: la prima moltiplica il valore medio del flat di controllo da 1 secondo FLAT(1) per i secondi d'esposizione Exp(s) mentre la seconda rappresenta il rapporto di normalizzazione R(s) = Flat(s) / [Flat(1)*Exp(s)]: più R(s) è vicino ad 1 e migliore è il comportamento lineare della camera CCD.

Riportiamo ora su un grafico il valore medio di FFsXX (seconda colonna o Flat(s)) in funzione di R(s). Per il nostro esempio il grafico assume l'aspetto seguente:


La maggior parte dei punti sono adagiati sulla retta R(s) = 1, come ci si aspettava ed è evidente l'inizio del crollo di linearità intorno ai 60000 ADU. Tuttavia alcuni punti si discostano maggiormente dalla retta anche a valori inferiori: un'attenta analisi del comportamento della camera CCD ha evidenziato che in realtà sono dovuti ad un cattivo controllo della temperatura del CCD che ha leggermente modificato i livelli medi di corrente di buio durante la rapida successione di pose da 1 secondo.
Per accertarsi ulteriormente che le variazioni non fossero dovute a discontinuità nella linearità della camera CCD può essere utile analizzare il grafico della deviazione standard del FLAT(s) in funzione del FLAT(s) stesso:


Rimangono ancora un paio di discontinuità (i punti dovrebbero essere tutti equidistanti sulla stessa retta dato che l'incremento d'esposizione è sempre di 1 secondo) ma si evidenzia ancora la discontinuità oltre i 60000 ADU.
Le discontinuità sono comunque minime, in media al di sotto dell' 1,4%, come è possibile calcolare attraverso lo stesso foglio di Excel.

venerdì 31 ottobre 2008

Linearità del CCD: il problema

E' uno dei vantaggi principali dei sensori CCD. Anzi, è la caratteristica che rende il nostro sensore CCD uno strumento di misura e non solo una semplice "macchina fotografica" digitale.
Linearità significa che c'è una semplice relazione lineare tra il valore in ingresso (la carica elettrica raccolta in ogni singolo fotoelemento) e il valore in uscita (il numero associato ad ogni singolo pixel che compone l'immagine finale).

Esistono due importanti limiti definiti proprio dagli elementi d'ingresso del sensore CCD e dagli elementi in uscita della camera CCD: il primo è dato dalla Full Well Capacity dei fotoelementi che compongono il sensore mentre il secondo è dato dal tipo di convertitore analogico-digitale (o ADC Analog to Digital Converter) utilizzato dalla camera CCD.
E' quindi facile intuire che esistono 2 livelli di saturazione: il primo è dato dalla capacità di raccolta di elettroni dei singoli fotoelementi che compongono il CCD, il secondo è dato dalla risoluzione (in bit) del convertitore analogico-digitale.

Per fissare le idee, consideriamo sempre l'esempio della camera CCD Apogee Ap7p con sensore SiTE in dotazione all'Osservatorio Astronomico di Cavezzo. I fotoelementi quadrati di dimensione 24 micron hanno una Full Well Capacity di circa 300000 elettroni mentre il convertitore analogico-digitale ha una risoluzione di 16 bit, corrispondenti a 65535 ADU (2^16).
Se costruiamo un grafico con in ascissa il dato di input, ovvero il numero di elettroni contenuti nel fotoelemento, e in ordinata il valore di output, ovvero il numero di ADU del pixel corrispondente dell'immagine, questi due limiti di saturazione sono rappresentati dalle due rette rispettivamente blu (x=300000) e rossa (y=65535).

Una camera CCD non professionale ma di buona qualità presenterà una curva di linearità simile al grafico qui sopra dove il tratto verde è per l'appunto il tratto ove la camera si comporta in modo lineare mentre quello arancione, che inizia intorno ai 250000 fotoelettroni catturati dal fotoelemento, è il tratto non-lineare entro il quale vengono perse le qualità fotometriche della camera stessa.
Notiamo che lo stesso grafico ci dà un paio di ulteriori indicazioni: sappiamo dalla geometria analitica che l'equazione di una retta ha l'espressione:

Y = mX + c

dove m è il coefficiente angolare, ovvero l'inclinazione della retta e c è il così detto termine noto, ovvero l'ntercetta con l'asse delle ordinate. Ebbene, il coefficiente angolare m (pari alla tangente dell'angolo che la retta di linearità sottende con l'asse delle ascisse) altro non è che l'inverso del gain, mentre c è l'offset della camera CCD (che nel caso della Apogee Ap7p è posto a circa 3080 ADU).

Notiamo immediatamente un'altra cosa importante: il tratto non lineare inizia prima che la curva di linearità raggiunga uno qualsiasi dei due livelli di saturazione: dunque l'operatore non ha nessuna avvertenza o segnalazione di quanto sta avvenendo. Per questo è importantissimo determinare in modo sperimentale le coordinate del punto P.

domenica 6 aprile 2008

Il range dinamico

Il range dinamico di una camera CCD indica la capacità di distinguere oggetti molto luminosi e molto deboli nella stessa immagine. I costruttori di CCD definiscono matematicamente il range dinamico con il seguente rapporto:

DR = FWC / RON

dove abbiamo indicato il range dinamico con DR , la full well capacity con FWC e il readout noise con RON , entrambi espressi in elettroni per fotoelemento quindi il range dinamico è una quantità adimensionale. Più questo numero è elevato, maggiore è la capacità della camera CCD di distinguere differenti livelli d'intensità luminosa. Chiaramente per aumentare il range dinamico è necessario agire o sulla qualità del sensore (ovvero con un basso RON ) o sulla dimensione dei fotoelementi che lo compongono che è strettamente legata alla FWC.

Il range dinamico si esprime anche in decibel:

Si noti che il readout noise da utilizzare per questo calcoli non è quello normalmente indicato nei data-sheet del sensore (detto anche RON "On-chip", generalmente inferiore del readout noise complessivo dell'intera camera CCD). Il tipo di readout noise che dobbiamo utilizzare nel calcolo è proprio quello complessivo indicato nelle specifiche della camera stessa. Tanto per intenderci è quello che effettivamente abbiamo misurato precedentemente con l'analisi del BIAS FRAME.

Esempio: al fuoco del telescopio di Cavezzo è posta una telecamera Apogee Ap7p con sensore SiTE. I fotoelementi quadrati di dimensione 24 micron hanno una Full Well Capacity di circa 300000 elettroni. Il readout noise della camera CCD è di 11,9 elettroni. Calcolarne il range dinamico.

DR = 300000/11,9 = 25210

Con questa camera CCD è possibile riprendere sorgenti luminose che differiscono tra loro di oltre 25000 volte (con una pellicola fotografica per esempio la differenza si riduce a 100 volte).
La dinamica misurata in decibel si calcola facilmente:

DRdb = 20 log (300000/11,9) = 20 log(25210) = 88,0 db

Questo rapporto dà anche un'indicazione del livello minimo di digitalizzazione che si deve applicare per utilizzare al meglio il sensore: nella tabella seguente si vede che la camera CCD dell'esempio precedente si colloca tra i 14 e i 15 bit. Gli ingegneri della Apogee hanno optato per un convertitore A/D da 16 bit e il settaggio del gain a 4,5 e-/ADU.


Il fatto di possedere una camera CCD "a 16 bit" può trarre in inganno e essere portati a pensare di avere la capacità di riprendere immagini con una dinamica di oltre 65000 livelli di grigio. In realtà, come abbiamo visto dall'esempio precedente, la dinamica nel caso specifico della Apogee Ap7p è di "soli" 25210 livelli ed è unicamente determinata dalle due caratteristiche full well capacity e readout noise.

domenica 24 febbraio 2008

Come calcolare il gain e il readout noise

Ora che conosciamo il significato di gain e readout noise per una camera CCD, vediamo come possiamo determinarne il valore nel caso queste quantità non fossero riportate nella documentazione che accompagna il nostro dispositivo.

Esiste un metodo molto semplice e rapido da effettuare, anche se non molto preciso, che ci darà comunque una stima affidabile di queste due quantità.

Una volta installata la camera CCD sul telescopio, è sufficiente riprendere due FLAT FIELD, [F1] e [F2] e due BIAS FRAME [B1] e [B2] .(Nota: utilizzeremo sempre questa convenzione per indicare un "frame" della camera CCD, ovvero quella di rinchiudere l'identificativo tra parentesi quadre: si tratta infatti di una matrice di numeri e non di un singolo valore numerico; questo ci sarà utile per una più agevole lettura delle formule matematiche utilizzate di seguito).

L'unica importante avvertenza riguarda i flat field: questi non potranno essere dei sky-flat in quanto ben difficilmente i due flat field avranno lo stesso identico illuminamento poichè saranno stati ripresi in tempi diversi e quindi con una luminosità del cielo differente. E' necessario riprendere due flat field con la tecnica del dome-flat ovvero utilizzando una sorgente luminosa stabile e costante.

Una volta ripresi e salvati su disco i due flat field e bias frame, utilizzando Astroart possiamo aprire le finestre della statistica per ogni frame ed annotarne il valore medio: indicheremo questi valori ripettivamente con avg[F1], avg[F2], avg[B1] e avg[B2].

A questo punto sottraiamo un flat field con l'altro, cioè utilizzando il comando Matematica > Sottrai di Astroart eseguiamo l'operazione [F1]-[F2]. Otterremo un frame dall'aspetto completamente nero come se tutti i pixel avessero un valore nullo: in realtà sono le soglie di visualizzazione dell'immagine che debbono essere regolate e per farlo velocemente e in modo automatico è sufficiente fare click con il mouse sulla barra di stato dell'immagine. Dovreste ottenere una rappresentazione della "mappa del rumore" presente nel flat field come nell'immagine qui sotto.

Tuttavia non è tanto la rappresentazione grafica che ci interessa quanto il suo valore numerico: torniamo ad aprire la finestra delle statistiche ed annotiamoci il valore della deviazione standard: la indicheremo con ds([F1]-[F2]). Ripetendo gli stessi passaggi per i due bias frames otterremo il valore ds([B1]-[B2]).

Ora abbiamo tutte le informazioni necessarie per applicare la seguente formula per il calcolo del gain:

mentre applicheremo la seguente per il calcolo del readout noise:

Ricordiamo sempre che il gain è espresso in elettroni/ADU mentre il readout noise è espresso in elettroni.

lunedì 7 gennaio 2008

Il "gain" e la "full well capacity"

Prima di esporre l'importantissimo argomento del gain di una camera CCD, introduciamo un'altrettanto importante caratteristica di un sensore CCD: la Full Well Capacity. I fotoelementi che compongono la matrice di un CCD possono essere visti come dei microscopici contenitori di elettroni: il numero di elettroni che possono essere contenuti in ciascun fotoelemento viene generalmente indicato dai costruttori dei CCD con il termine Full Well Capacity (FWC). L'analogia del contenitore è ancora più adatta se pensiamo che maggiore è la dimensione del fotoelemento e maggiore sarà la sua capacità di contenere elettroni. Così ad esempio un sensore KAF-0401E della Kodak composto da fotoelementi quadrati da 9 micron di lato ha una FWC di circa 100000 e- mentre il sensore SiTE della camera Apogee Ap7p ha fotoelementi quadrati di dimensione 24 micron con una FWC di circa 300000 e-. E' chiaro che quando un fotosensore non è più in grado di contenere elettroni, la camera CCD non sarà più in grado di contarli: il sistema ha raggiunto la saturazione. Ma questo è un altro argomento che vedremo più avanti.

Il gain di una camera CCD è un numero che esprime a quanti elettroni corrispondono ogni ADU nell'immagine generata dalla stessa camera. Ricordiamo che con ADU (Analog to Digital Unit) indichiamo l'unità di misura dell'intensità luminosa di un pixel dell'immagine CCD. In pratica è il valore numerico associato ai pixel di un'immagine digitale.

Il gain è un parametro che viene impostato dal costruttore della camera CCD in base alla scelta del convertitore analogico-digitale: gli elettroni catturati durante l'esposizione vengono convertiti in ADU dall'integrato ADC (Analog to Digital Converter o convertitore analogico-digitale). La "precisione" di questo convertitore viene misurata in bit : maggiore è il numero di bit del convertitore e maggiore sarà la capacità del dispositivo di distinguere il segnale in elettroni formato dall'esposizione del CCD: 12 bit = 2^12 = 4096 valori, 15 bit = 2^15 = 32768, 16 bit = 2^16 = 65536 valori, ecc..

Un metodo per determinare il gain da utilizzare in una determinata camera CCD è quello di confrontare la FWC dei fotoelementi del sensore con il numero più grande che può conteggiare il convertitore analogico-digitale: così ad esempio, sempre nel caso del sensore SiTE della camera Apogee Ap7p (FWC =300000 e- con un convertitore a 16 bit) abbiamo:

gain = 300000 / 65536 = 4,6 e-/ADU

Ed in effetti nel data-sheet della camera CCD troviamo riportato un gain di 4,4 e-/ADU: questo valore è quindi correttamente impostato per sfruttare al meglio le caratteristiche del convertitore analogico-digitale in base alla capacità che ha ogni singolo fotoelemento di raccogliere elettroni.

Occorre fare però attenzione: il gain rappresenta anche l'unità di discretizzazione minima, vale a dire che il sistema non è in grado di distinguere valori inferiori ad esso (es. un numero di elettroni inferiori a 4,4 come nel caso precedente). Questo fatto introduce un nuovo concetto di rumore: il rumore di discretizzazione. Più alto è il gain e maggiore sarà il rumore di dicretizzazione. Anche questo tipo di rumore può essere importante in quanto influenza la precisione delle misure fotometriche, specialmente negli oggetti estesi e poco luminosi come le comete e le galassie.