1

PixInsight | Calibrazione delle immagini astronomiche

Dopo aver effettuato le operazioni preliminari mostrate in Operazioni preliminari dovremmo ora avere tra le mani una cartella con il nome dell’oggetto ripreso strutturata secondo canali e tipo di frame (bias, dark, flat e light) ripresi. In questo post analizzeremo in particolare i processi che ci porteranno ad ottenere il master light frame ovvero l’immagine finale calibrata. Riportiamo quindi le procedure relative al solo canale di Luminanza. Ovviamente queste dovranno essere ripetute per ciascun canale (nel nostro esempio: Rosso, Verde e Blu).

Fortunatamente il processo di calibrazione, allineamento e somma può essere svolto automaticamente da PixInsight attraverso il potente script BatchPreprocessing che troviamo o nel tab Process Explorer oppure attraverso il menù Script → Batch Processing → BatchPreprocessing. A questo punto si aprirà una finestra di dialogo simile a quella riportata in Figura 1. In questa finestra potremo inserire i nostri frame di calibrazione nonché i light.

Figura 1: lo script BashPreprocessing.

Procediamo quindi con l’inserimento dei vari frame utilizzando i pulsanti Add Bias, Add Darks, Add Flats e Add Lights andando a selezionare volta per volta i nostri file nell’hard disk. Come vedete la classificazione in cartelle mostrata nel postOperazioni Preliminari fa si che questa operazione risulti il più semplice possibile. Una volta caricati i file bisognerà settare i parametri di combinazione. Riportiamo di seguito le impostazioni a seconda del frame considerato (ricordo che tali impostazioni sono visualizzabili agendo sui tab bias, darks, flats e lights).

BIAS FRAME

La natura del bias frame è stata analizzata in dettaglio nel post Il bias frame e pertanto rimandiamo il lettore a quell’articolo tecnico. Riassumendo possiamo dire che questo contiene le informazioni sull’offset dei singoli pixel ovvero sul valore di zero che questi assumono in assenza di radiazione luminosa. Generalmente questo valore rimane pressoché costante durante una sessione fotografica e in alcuni modelli di CCD può essere controllato tramite una regione del sensore detta overscan region. PixInsight permette di calibrare i bias utilizzando come riferimento questa regione che può essere settata spuntando la sezione Overscan del tab bias. Al momento non è noto se il modello ATIK 383L+ monocromatico possiede un’overscan region dato che non esistono documenti tecnici a riguardo forniti dall’azienda produttrice. Proprio per questo nel nostro caso non spunteremo la sezione Overscan (vedi Figura 2).

Figura 2: Settaggi dei bias frame.

Dopodiché PixInsight chiede la procedura da utilizzare per l’integrazione delle immagini (Image Integration). Tra quelli proposti quelli utili per la calibrazione delle immagini astronomici sono la media (Average) e la mediana (Median). Le due stime, nel caso dei bias, vanno teoricamente a coincidere dato l’elevato numero di frame acquisiti. In ogni caso malgrado sia previsto un sistema di cancellazione di fenomeni occasionali quali raggi cosmici, passaggio di aerei/satelliti o interferenze noto come Rejection algorithm, il metodo Median è consigliato in Combination in quanto è in grado di escludere, a prescindere, fenomeni transitori. Tra i metodi di rigetto di pixel spuri consigliamo il Winsorized Sigma Clipping. Ovviamente questo metodo è in grado di eliminare eventuali pixel caldi o freddi oltre a raggi cosmici (rari in un bias frame). I parametri di default ovvero 4.00 per Sigma low e 3.00 per Sigma high sono generalmente buoni.

DARK FRAME

Anche in questo caso possiamo applicare in Image Integration le stesse impostazioni del bias frame ovvero Median come Combination e Winsorized Sigma Clipping con i parametri di default come Rejection algorithm. Il tab darks ci propone però l’opzione Exposure tolerance ovvero la massima differenza in secondi tollerata per dire che due dark appartengono allo stesso gruppo di calibrazione. Ovviamente se avrete seguito alla lettera il post “Il dark frame” a questo punto dovreste avere dark frame con esattamente lo stesso tempo di esposizione e pertanto questa utility è inutile e il valore di default (di 10 secondi) può essere lasciato senza problemi. I parametri del tab darks sono riportati in Figura 3.

Figura 3: i parametri del tab darks dello script BatchPreprocessing. Facciamo notare come il tempo di esposizione dei dark frame sia riportato subito sotto il binning

FLAT FRAME

Per i flat frame le impostazioni sono le stesse utilizzate per i bias ed i dark frame, quindi in Image Integration bisogna settare Median come Combination e Winsorized Sigma Clipping come Rejection algorithm. I parametri sono riportati in Figura 4.

Figura 4: i settaggi del tab flats relativi allo script BashPreprocessing.

LIGHT FRAME (parte 1)

Questo script molto potente permette di ottenere il master light frame oppure i singoli light frame calibrati. Come abbiamo detto in precedenza il Rejection algorithm dovrebbe aver eliminato tutti i pixel caldi e freddi dai nostri frame di calibrazione. Questo è vero se i settaggi sono corretti ovvero se ad esempio i Sigma low e high del metodo Winsorized Sigma Clipping sono stati impostati correttamente. Questo ovviamente richiede del tempo e numerosi test dato che ogni camera e ripresa sono differenti. Proprio per questo PixInsight ha sviluppato la correzione cosmetica, attivabile spuntando il quadrato apply nella sezione Cosmetic Correction. Questo però non può essere fatto subito dato che è richiesto un Template icon, ovvero un oggetto che dica allo script BatchPreprocessing come ridurre i restanti pixel caldi o freddi rimasti. Procediamo quindi con la realizzazione del Template icon. Per fare questo però abbiamo bisogno del master dark e quindi è necessario fare un primo run dello script BatchPreprocessing.

Spuntiamo quindi il rettangolo Calibrate only in quanto non abbiamo ancora tutti gli ingredienti per realizzare il master light. Nella categoria Options togliete l’eventuale spunta da CFA images dato che le nostre riprese sono state effettuate con una camera CCD monocromatica. Togliete la spunta anche da Optimize dark frames dato che la nostra camera è raffreddata e quindi i dark (dovrebbero) essere stati ripresi tutti nelle medesime condizioni. Spuntate invece Generate rejection maps dato che queste serviranno per vedere come ha operato il Rejection algorithm ovvero avrete un’immagine in cui sono presenti i pixel esclusi nel processo di cancellazione dei fenomeni transitori. Spuntate up-bottom FITS che serve per definire quale è l’origine delle coordinate del file immagine. Nel caso up-bottom comune alla maggior parte delle camere (astronomiche e non) l’origine è nell’angolo in alto a sinistra. Per le camere monocromatiche il sistema di coordinate non è fondamentale ma lo diventa per quelle che possiedono una matrice di Bayer (ovvero sensori “a colori”). Eventualmente togliamo la spunta dai quadrati Use master bias, Use master dark, Use master flat. Clicchiamo infine due volte sull’immagine che riteniamo migliore in termini di qualità (inseguimento, rapporto segnale/rumore …) e come per magia apparirà il path nella categoria Registration Reference Image. Andiamo infine ad indicare a PixInsight quale sarà la cartella dove metterà i file calibrati nella categoria Output directory. I settaggi finali sono riportati in Figura 5.

Figura 5: i settaggi del tab lights relativi allo script BashPreprocessing.

A questo punto clicchiamo sul tasto Diagnostics al fine di verificare se tutto è stato settato correttamente, altrimenti seguite le indicazioni proposte. Se tutto è andato a buon fine dovreste visualizzare la scritta “Diagnostic completed OK.”. Clicchiamo quindi su Run e attendiamo (non poco!) che lo script BatchPreprocessing faccia il lavoro per noi. Al termine del processo si riaprirà la finestra dello script BatchPreprocessing ma nella directory di Output troveremo due cartelle frutto del lavoro di PixInsight: master e calibrated (vedi Figura 6).

Figura 6: i risultati prodotti dallo script BatchPreprocessing

Nella prima cartella troviamo il master bias, il master dark ed il master flat. Nella seconda invece troviamo i frame calibrati nelle rispettive sottocartelle flat e light. Dimentichiamoci al momento di questi e torniamo al nostro script BatchPreprocessing. Tenendo premuto il tasto sinistro del mouse trasciniamo il triangolino in basso a sinistra della finestra fino all’area di lavoro. Apparirà un’icona come mostrato in Figura 7. Cliccate su Exit e confermate per uscire.

Figura 7: l'area di lavoro una volta chiuso lo script BatchPreprocessing.

COSMETICA

Abbiamo ora tutti gli ingredienti per applicare la cosmetica ai nostri light frame ovvero identificare quei (spero) pochi pixel caldi/freddi che ancora sono presenti nei nostri frame malgrado il processo di calibrazione. Per fare questo utilizziamo lo script CosmeticCorrection disponibile come sempre nel Process Explorer oppure nel menù Process → ImageCalibration → CosmeticCorrection. Si aprirà quindi una finestra come quella mostrata in Figura 8.

Figura 8: lo script CosmeticCorrection

A questo punto cominciamo con lo spuntare il tab Use Master Dark ed andiamo a selezionare il master dark appena generato tramite lo script BaschPreprocessing. Spuntiamo inoltre i quadratini Enable nella categoria Hot Pixels Threshold e Cold Pixels Threshold (Figura 9).

Figura 9: Selezione del master dark nello script CosmeticCorrection.

Aprimo ora un light frame non calibrato (potremmo usare ad esempio il reference image ovvero quella con qualità migliore tra tutti i nostri light frame). Per farlo andiamo sul menù File → Open… . Una volta aperta l’immagine cliccate CTRL+A al fine di effettuare uno stretch automatico dell’immagine. Il risultato di queste operazioni è mostrato in Figura 10.

Figura 11: l'apertura di un light frame calibrato al fine di determinare i parametri dello script CosmeticCorrection

Premiamo ora i tasti ALT+N e selezioniamo una regione dell’immagine. Questa verrà contornata da un rettangolo verde e a sinistra della finestra dell’immagine verrà mostrato un tab con la scritta Preview01. In questo modo abbiamo creato una finestra di anteprima che possiamo visualizzare a tutta finestra cliccando su quest’ultimo tab (Figura 12).

Figura 12: la selezione di una preview per lo studio dello script CosmeticCorrection.

Torniamo ora alla finestra dello script CosmetiCorrection e clicchiamo sul pallino vuoto in basso a destra (Real-Time Preview). Si aprirà una nuova finestra che ci mostrerà l’effetto della cosmetica implementata dallo script CosmeticCorrection. Muoviamo ora il cursore Sigma di Hot Pixels Threshold verso sinistra finché gli ultimi pixel caldi residui non spariranno dall’immagine. Lo stesso lo facciamo con il Cold Pixels Threshold, muovendo il cursore Sigma verso sinistra (vedi Figura 13). Ora, come fatto per lo script BatchPreprocessing, portiamo cliccando sulla freccia in basso a sinistra CosmetiCorrection sullo spazio di lavoro, dopodiché possiamo chiudere tutte le finestre (quella del Real-Time Preview, dello script e del light frame).

Figura 13: impostazioni dello script CosmeticCorrection con relativa anteprima delle modifiche.

LIGHT FRAME (parte 2)

Facciamo doppio click sul Process01 presente nel nostro spazio di lavoro. Si aprirà una finestra. Cliccate una volta sul pallino pieno presente in basso a sinistra. Come per magia si riaprirà la finestra dello script BatchPreprocessing con le impostazioni che avevate settato precedentemente. A questo punto andate sul tab Lights e spuntate il quadratino Apply di Cosmetic Correction. Come Template icon selezionate Process02 ovvero quello relativo allo script CosmeticCorrection (nell’esempio è Process04, vedi Figura 14).

Figura 14: aspetto dello script BatchPreprocessing dopo aver definito la cosmetica con CosmeticCorrection.

A questo punto non ci resta che rimuovere il segno di spunta da Calibrate only e cominciare a settare i campi Image Registration e Image Integration. Clicchiamo quindi sulla prima freccia e ci si aprirà un nuovo campo dove ci viene chiesto il pixel interpolation ovvero il metodo utilizzato per allineare le immagini. PixInsight ci offre molte possibilità e nel caso di esigenze non specifiche consigliamo il metodo Auto (il programma decide quale è la migliore strategia) con i parametri settati di default ovvero Clamping threshold 0.30, Maximum stars 500 e Noise reduction Disabled. Spuntiamo anche il rettangolo Use triangle similarity. Cliccando sulla freccia rossa torniamo al campo di partenza. Da qui clicchiamo sulla freccia Image Integration e come combinazione utilizziamo Average o Median. Quale scegliere? Dipende da voi. Average mantiene un rapporto segnale/rumore più elevato di Median ma allo stesso tempo Median sopprime maggiormente raggi cosmici e fenomeni transienti (come passaggio di satelliti o aerei). Dato che però PixInsight offre la possibilità di impostare un Rejection algorithm (consigliato il solito Winsorized Sigma Clipping) che dovrebbe ridurre se non eliminare i fenomeni transienti, allora consigliamo come metodo di integrazione Average. I valori di Sigma low e high possono essere mantenuti ai valori di default pari rispettivamente a 4.00 e 3.00. Questi valori vanno regolati in funzione dell’immagine al fine di ottenere il risultato migliore.

Finalmente siamo giunti alla fine. Non ci resta che provare a cliccare ancora una volta su Diagnostics per verificare che tutte le impostazioni siano corrette e, in caso positivo, cliccare ancora una volta su Run. Una finestra vi ricorderà che i parametri dello script BatchPreprocessing vanno regolati bene per ottenere il massimo dalle nostre foto. Clicchiamo su Continue ed attendiamo che PixInsight abbia terminato il suo lavoro di calibrazione, allineamento e somma delle immagini astronomiche (vedi Figura 15).

Figura 15: La Process Console di PixInsight durante la fase di generazione del master light.

Al termine del processo si riaprirà di nuovo la finestra dello script BatchPreprocessing. Chiudetelo premendo Exit, confermate e chiudete tutte le altre finestre rimaste attive. Cancellate pure i processi sull’area di lavoro cliccandovi sopra con il tasto destro e quindi Delete Script Icon: ProcessX dove X sta per il numero di processo aperto. In questo modo la vostra area di lavoro dovrebbe essere completamente pulita da icone e finestre. Se verificate la cartella di Output, oltre alle cartelle originali e le calibrated e master (che ora contiene anche il master light) esiste la cartella registred contenente i light frame calibrati, cosmetizzati (li si trovano nella sottocartella cosmetized di calibrated/light) ed allineati.

RISULTATO FINALE

Non ci resta quindi che aprire il master light. Per fare questo cliccate su File → Open e selezionare il master light nella cartella master di Output. Verranno aperte tre finestre. La prima si chiama rejection high rappresenta i pixel rigettati perché di valore troppo elevato rispetto al valore centrale (ovvero quello atteso). La seconda, rejection low, rappresenta i pixel rigettati perché di valore troppo basso rispetto al valore centrale. La terza e ultima è il vero e proprio master light. In particolare, per ogni immagine premete CTRL+A. In rejection high dovreste individuare eventuali scie di aerei e satelliti rimossi dai light frame attraverso il processo di “rejection”. Riportiamo in Figura 16 il risultato ottenuto per il canale di luminanza L. Ovviamente questa procedura andrà rifatta per tutti i canali utilizzati (R,G e B).

Figura 16: A sinistra il master light. In centro il "rejection low" dove si vedono i bordi del sensore non funzionanti e a destra il "rejection high" dove sfortunamente (!) non sono passati aerei o satelliti.





Il Master Bias Frame

Nel post Il bias frame, abbiamo analizzato la natura di questo particolare tipo di scatto utile per la calibrazione delle nostre immagini astronomiche. In particolare abbiamo visto come esso contenga informazioni sull’offset associato alla nostra camera di ripresa oltre che sulla struttura del rumore elettronico non casuale. Ovviamente il tutto condito da rumore elettronico casuale a media nulla.

Proprio quest’ultimo abbiamo imparato a ridurlo mediando numerosi bias frame. Infatti, essendo per definizione il rumore casuale a media nulla, è facilmente eliminabile mediando il valore del livello di luminosità di ciascun pixel su un certo numero di frame. La questione aperta, oggetto di questo post è: “Quanti scatti mediare?”. La risposta è sempre la solita che si trova su libri e siti di astrofotografia ovvero più scatti vengono mediati e migliore è il risultato ottenuto. Inoltre si trova erroneamente riportato che il rumore del bias frame mediato o master bias frame è inversamente proporzionale alla radice del numero di frame utilizzati nella media. Questo non è vero in generale e scopriremo il perché dal punto di vista statistico.

Innanzitutto supponiamo di considera un singolo pixel soggetto da solo rumore elettronico casuale. Questo significa che se consideriamo i valori di luminosità BL(x,y,i) assunti dal singolo pixel di coordinate (x,y) in un certo numero di frame N, questi saranno distribuiti secondo una distribuzione gaussiana centrata in un certo valore medio BL(x,y). Lo stesso ovviamente si può dire per ogni pixel del sensore e quindi per ogni valore della coordinata (x,y). Se ora quindi effettuiamo la media aritmetica dei vari bias frame, otterremo per ogni pixel il valore medio di luminosità BL(x,y). Se ora costruiamo la distribuzione dei livelli di luminosità BL(x,y) allora otterremo ancora una distribuzione gaussiana con valore medio BL che, se tutto è stato effettuato correttamente, corrisponde all’offset della nostra camera di ripresa. La distribuzione dei BL(x,y) è gaussiana e rappresenta la distribuzione dei valori medi di luminosità assunta da un certo numero N di bias frame. Essendo la distribuzione della media, questa ha larghezza σ pari al readout noise diviso per la radice di N. Il rumore elettronico casuale quindi scala come la radice quadrata del numero di bias frame utilizzati.

Purtroppo però il nostro bias frame non contiene solo rumore elettronico casuale associato all’elettronica ed al processo di conversione analogico/digitale (ADC) ma anche del rumore elettronico non casuale come rumori a pattern fisso o transienti. Questi andranno così a modificare la nostra distribuzione BL(x,y) che non scalerà quindi più con la radice quadrata del numero di frame. Trascurando i rumori transienti, di secondaria importanza ed eliminabili utilizzando ad esempio la mediana dei frame invece della media, i rumori a pattern fisso (righe, bande, …) non sono a media nulla e pertanto non vengono eliminati nel processo di media dei singoli bias frame. Praticamente più che di rumore dovremmo parlare di segnale.

Rumori casuali e non casuali vanno così a sommarsi in quadratura dando luogo alla larghezza σ complessiva della distribuzione dei valori di BL(x,y). Quando effettuiamo la somma di più bias frame avremo che la componente “casuale” di σ andrà a scalare con la radice quadrata del numero di bias frame, mentre la componente “non casuale” rimarrà fissa ad un determinato valore σ0. Nel caso ipotetico di avere un numero infinito di bias frame allora  σ coinciderà esattamente con σ0.

Al fine di dimostrare quanto appena detto, abbiamo effettuato la mediana di un certo numero di bias frame N calcolando di volta in volta la larghezza della distribuzione dei livelli di luminosità del master bias frame (ovvero ricordiamo ancora una volta, del frame ottenuto come media/mediana di N bias frame). La camera utilizzata è una ATIK 383L+ monocromatica in bin 1×1 raffreddata a -16.9°C ed una Canon EOS 500D. Il risultato ottenuto è mostrato in Figura 1.

Figura 1: quadrato della larghezza (RMS) della distribuzione dei livelli di luminosità BL(x,y) del master bias frame in funzione dell'inverso del numero di frame utilizzati, per camera CCD ATIK383L+ monocromatica e CMOS Canon EOS 500D

Dal fit effettuato sui punti di Figura 1 possiamo subito notare come il quadrato di σ sia funzione di 1/N (ovvero σ scala come la radice del numero di conteggi) e presenti un asintoto che corrispondente quindi al quadrato di σ0. Se mediamo quindi un numero di frame sufficientemente elevato (diciamo > 10, anche se > 50 è decisamente consigliato) allora il contributo a σ dovuto al rumore casuale diviene praticamente trascurabile.

Ricordiamo inoltre che, nel caso delle DSLR, σ è funzione del numero di ISO utilizzato dato che le condizioni di funzionamento dell’elettronica cambiano al variare della sensibilità utilizzata. Figura 2 mostra ad esempio la variazione di σ  in funzione degli ISO per una fotocamera Canon EOS 40D. Si può facilmente notare come questa incrementi in modo praticamente lineare all’aumentare della sensibilità.

Figura 2: larghezza della distribuzione dei livelli di luminosità BL(x,y) del bias frame in funzione degli ISO di una DSLR Canon EOS 40D

Concludendo quindi possiamo affermare che per ottenere un buon master bias frame è necessario acquisire un numero di frame N sufficientemente elevato da ridurre la componente di rumore casuale presente nell’immagine. Sono i rumori elettronici non casuali a determinare la larghezza minima della nostra distribuzione e pertanto un N eccessivamente grande non comporta nessun miglioramento della qualità del master bias frame. Purtroppo molto spesso i rumori non casuali sono intrinsechi dell’elettronica e pertanto difficilmente riducibili. Ricordiamo infine che bassi valori di sensibilità (ISO) sono consigliabili dato che posseggono un valore di σ inferiore. Questo non coincide con il readout noise dato che per ottenere tale valore dobbiamo sottrarre al bias frame la componente non casuale del rumore (ottenibile mediando un numero elevato di bias frame escluso quello in esame). Per maggiori informazioni sul readout noise consigliamo la lettura del post Il bias frame.