Il nuovo Weighted BatchPreprocessing v1.4.0

Il nuovo Weighted BatchPreprocessing v1.4.0

click here for the English version.

C’è una bella novità per gli amanti del BatchPreprocessing, ma anche per quelli che amanti non sono e potrebbero diventarlo!
Ho sempre detto, anche nei tutorial dedicati, che il BatchPreprocessing è un ottimo script per automatizzare i processi di calibrazione e integrazione delle nostre immagini fino ad arrivare, in modo veloce, al masterLight finale, ma non permette un controllo totale sulle singole fasi così da non permettere ai nostri frames di esprimersi al meglio.
Questo era il vecchio BatchPreprocessing (BPP), ed in parte lo è anche ora. Ma c’è una nuova versione del BPP, o meglio, una sua estensione firmata Roberto e Tommaso che va ad aggiungere al vecchio BPP una serie di opzioni che riducono il divario tra lo script ed i classici metodi di calibrazione ed integrazioni manuali. Dato che le novità sono molteplici andiamo ad analizzarle una per una.

COME NASCE L’ESTENSIONE

E’ stato il grande Roberto Sartori a tirarmi dentro a questa avventura, persona che non conoscevo fino a quando non mi ha contattato per farmi questa proposta. Dopo aver letto il mio tutorial riguardante il Subframe Selector (SFS) ha avuto l’idea di implementarlo nello script BPP, chiedendomi una mano nella fase di test e nella ricerca di quei parametri su cui si fondano i pesi del SFS. Infatti, per chi non lo sapesse, il SFS va a valutare i singoli Light frames misurandone SNR, eccentricità e FWHM delle stelle (oltre ad altri parametri che noi non consideriamo al momento). Con questi 3 parametri possiamo stabilire quali siano i frames migliori e quali i peggiori, andando poi a pesarli in maniera diversa in fase di integrazione al fine di ottenere un risultato che sia migliore possibile, riducendone i difetti. Tale pesatura varia al variare di come relazioniamo questi 3 parametri fra di loro, ma per una miglior comprensione del tutto vi consiglio la lettura del tutorial dedicato.

Proprio per la possibilità di creare pesi il nuovo script è stato chiamato Weighted Batch Preprocessing, o più semplicemente WBPP. Roberto si è fatto carico di tutto il lavoro sporco, grazie alle sue conoscenze ha fatto nascere il WBPP, a me è toccato il compito di cercare i giusti preset per relazionare tra loro i 3 parametri sopra citati. Ho così iniziato a fare numerose prove su immagini che avevo in archivio variando le percentuali dei parametri fino a che i risultati non hanno iniziato a piacermi e, una volta trovati dei preset validi, abbiamo fatto nascere la versione 1.0.0 del WBPP. Ma le mie immagini, per quanto numerose, non forniscono un campione statisticamente valido, per questo abbiamo chiesto ad alcuni amici di testarlo per avere feedback, fase di test fondamentale per ampliare le casistiche e portare alla luce quanti più problemi e bug possibili. E’ stato proprio in questa fase, dall’analisi del funzionamento dello script e dei suoi problemi, che sono nate nuove idee ogni volta implementate da Roberto nello script, ed in poche settimane siamo passati dalla versione 1.0.0 alla 1.4.0, chiaro segno del grande lavoro svolto e delle numerose nuove aggiunte allo script.

Potete scaricare lo script direttamente da qui (versione 1.4.0),per aggiungerlo a Pixinsight vi basterà seguire questo tutorialAl momento lo script non è incluso con i nuovi aggiornamenti di Pixinsight e può essere solo scaricato da questa pagina, la nostra speranza è di vederlo presto tra gli aggiornamenti ufficiali Pixinsight.

LE NOVITA’ DEL WBPP

Le novità del nuovo WBPP sono:

  • possibilità di pesare i nostri Light frames grazie all’intervento del Subframe Selector
  • possibilità di scegliere in modo automatico il frame di riferimento per la registrazione dei Light frames
  • possibilità di raggruppare i nostri Light frames sulla base dei diversi tempi di integrazione, utile per creare successivamente immagini HDR
  • smart naming
  • un diverso approccio alla calibrazione dei Flat frames
  • scelta automatica del miglior algoritmo di reiezione dei pixel in fase di integrazione
  • diagnostica migliorata
  • smart reporting
  • salvataggio della sessione

Alcune di queste funzioni sono piuttosto semplici ed intuitive, altre più complesse e laboriose. Entriamo quindi nello specifico di ogni singola novità per permettere a tutti di utilizzare al massimo le nuove funzioni.

CREARE I PESI E SCEGLIERE IN MODO AUTOMATICO IL FRAME DI RIFERIMENTO

La novità più importante sta nell’aver automatizzato tutto il processo svolto dal Subframe Selector in pochi e semplici passaggi. Troviamo tutto ciò di cui abbiamo bisogno in questa nuova tab

Come vedete ci sono 3 opzioni diverse:
Generate subframes weights: attivando questa opzione attiveremo di fatto la pesatura dei nostri light frames, i pesi saranno assegnati sulla base dei parametri che vedremo tra poco e l’integrazione sarà di fatto pesata. Disattivando questa opzione l’integrazione avverrà in maniera normale, come in un normale BPP.

Compute weights after registration: attivando questa opzione i pesi saranno attribuiti dopo che i light frames sono stati registrati tra loro, tenendola disattivata i pesi sono attribuiti prima della registrazione.

Use best frame as reference for registration: una delle opzioni più interessanti. Permette di scegliere in maniera automatica il frame di riferimento per la registrazione, tale frame non è il frame con il peso migliore in assoluto, ma sarà il frame con le migliori stelle, ovvero quello che avrà FWHM ed eccentricità migliori, senza tener conto dell’SNR. Per scoprire di quale frame si tratta viene eseguito un primo Subframe Selector che andrà a valutare solo questi due parametri senza assegnare pesi validi alle immagini in fase di integrazione. Appena attiviamo tale opzione non sarà quindi più possibile scegliere l’immagine di riferimento in modo manuale

semplicemente disattivandola andremo a disabilitare la scelta automatica del frame di riferimento, così da permettere direttamente a noi la scelta del frame di riferimento per la registrazione

Questa opzione crea una valida alternativa: basterà attivare tale opzione e disattivare Generate subframes weights per sfruttare la scelta automatica del riferimento ed una integrazione normale, NON pesata.

È il momento di guardare finalmente come impostare i parametri per i pesi in fase di integrazione! Cliccando su Weighting parameters potremmo scegliere e modificare tali parametri. Abbiamo a disposizione 3 preset selezionabili dal menù a tendina chiamati Nebula, Galaxy e Cluster, pensati per ottenere diversi risultati in base al soggetto della nostra immagine. Per capire come interpretare i valori prendiamo in esempio il preset Nebula

Tale preset creerà un peso dato da:
5% FWHM + 10% eccentricità + 20% Snr + 65

Quindi si avrà che nessun frame potrà avere un peso inferiore a 65, inoltre l’SNR è pesato molto di più degli altri due parametri, ciò porta ad immagini finali che saranno condizionate in maniera maggiore dall’SNR. Se riteniamo che nessuno dei tre preset sia quello giusto per noi non dobbiamo far altro che andare manualmente a modificare i valori delle percentuali, o scrivendoli direttamente nella casella relativa o semplicemente muovendo il cursore. Vedremo scomparire il nome del preset dal menù a tendina, inoltre non dobbiamo preoccuparci se la somma dei valori non sarà perfettamente 100, essi verranno internamente ricalcolati in automatico in termini percentuali.

Approfondiamo un pò l’argomento preset prima di vedere le altre novità.

COME SCEGLIERE AL MEGLIO I PRESET

I 3 preset portano a risultati leggermente diversi perché sono stati pensati per un fine diverso l’uno dall’altro, in particolare:

Nebula: finalizzato ad ottenere il miglior SNR dalle nostre immagini

Cluster: finalizzato a migliorare le stelle, ottenendo risultati con FWHM ed eccentricità stellare migliori di una integrazione standard, a discapito di una minima perdita di SNR.

Galaxy: intermedio tra i due, porta ad immagini con buon SNR e ottime FWHM ed eccentricità stellare, ideale se dalle nostre immagini vogliamo sia segnale che dettagli.

Va da se che non siamo obbligati ad usare il preset Galaxy solo su immagini di galassie, ma, una volta capito il loro fine, possiamo sceglierli indipendentemente dal soggetto della nostra foto. Facciamo alcuni esempi:
Immaginate una serie di scatti sulle Pleiadi M45, un ammasso aperto di stelle. Il nome porterebbe ad usare il preset “cluster”, ma si potrebbe in alternativa utilizzare il preset “galaxy” il quale porterebbe comunque ad una buona definizione stellare senza però sacrificare le nebulosità che circondano l’ammasso.
Un altro esempio potrebbe essere quello che riguarda una ripresa a lunga focale su nebulose, immaginiamo ad esempio un campo molto stretto sui Pilastri della creazione della nebulosa Aquila m16 o sulla zona di Melotte 15, al centro della Nebulosa Cuore. In entrambi i casi possiamo sacrificare leggermente l’SNR cercando un dettaglio maggiore per evidenziare le bellissime strutture nebulari qui presenti, evitando il preset “Nebula” e scegliendo “Galaxy”, se non addirittura “Cluster”.
Sono ovviamente solo due esempi, ma ciò che è importante è capire che i preset posso essere utilizzati in maniera totalmente libera. In alternativa possiamo andare a scegliere in via autonoma le percentuali di ogni parametro, uscendo dallo schema dei 3 preset, per andare a pesare le nostre immagini in maniera totalmente personalizzabile e soggettiva.

DIVIDERE I FRAMES PER GRUPPI E SMART NAMING

Il normale BPP divide i nostri Light frames sulla base dei filtri usati e del binning, così da permettere di integrare allo stesso tempo immagini ottenute con filtri e binning diversi. Nel nostro nuovo WBPP abbiamo anche la possibilità di dividere i Light frames sulla base dei tempi. Possiamo così aggiungere Light frames di tempi diversi, andando ad ottenere masterLight diversi. Ecco un esempio

In questo caso ho acquisito una serie di immagini su m31 a 240″, una seconda serie con tempo di esposizione di 180″ ed un terza a 90″ con stesso binning e stesso filtro di luminanza. In questo modo andrò ad integrare le tre diverse serie separatamente ottenendo tre diversi masterLight, uno frutto delle riprese a 240″,uno frutto delle riprese a 180″ ed uno frutto delle riprese a 90″. tale funzione è molto utile se poi i tre masterLight vengono usati per comporre un HDR.

Ma può anche capitare che si voglia integrare tutti i nostri light frames assieme, senza dividerli per gruppi, per farlo ci basterà modificare l’ exposure tolerance

Alzando tale valore andremo a raggruppare Light frames ripresi a tempi diversi, se la differenza di tempo tra questi frames rientra nell’intervallo di tolleranza. Questo valore è espresso in secondi, alzandolo ad esempio a 60 si andrà a raggruppare i Light frames divisi da una differenza ti esposizione massima di 60″, nel nostro caso raggrupperemo i frames di 180″ con quelli di 240″

E se volessimo tutti i nostri Light frames in un unico gruppo per ottenere un unico masterLight? nulla di più semplice, ci basterà alzare ancora tale valore fino a che anche i Light frames da 90″ non saranno inclusi nell’intervallo di tolleranza

Variando tale valore sarà possibile creare più gruppi di integrazione o un unico gruppo, escludendo o includendo i Light frames che vogliamo. Abbiamo la possibilità di variare anche l’exposure tollerance dei nostri Dark frames, al fine di ottenere uno o più masterDark.

Ma non sempre la suddivisione in gruppi dei nostri frames avviene in modo corretto, può accadere che i files da noi inseriti non contengano informazioni nel loro header e lo script non riesca così a ricavare le informazioni relative al filtro usato, al binning ed al tempo di esposizione. Ecco un esempio pratico

Come vedete nell’immagine lo script non riconosce la durata del mio masterDark, segnando un tempo di 0.00 secondi, ma in realtà il masterDark da me inserito è di 1200 secondi. Questo renderebbe impossibile una corretta calibrazione. Possiamo però aggirare il problema grazie alla funzione di SMART NAMING dello script, che ci permette di mostrare allo script le informazioni necessarie semplicemente rinominando i files. Nel mio caso ho semplicemente aggiunto al nome del mio files la scritta EXPTIME_1200

Come vedete lo script adesso riconosce la durata del frame dopo che gli è stata segnalata direttamente nel nome del file.

Inoltre lo script riconosce la durata del nostro frame anche se scritta nei seguenti modi:  “900s”, “900sec” o “900_secs”. Queste sono le diciture più usate dai software astronomici di ripresa, è quindi comune che il nome del file contenga questa dicitura che, in automatico, viene quindi riconosciuta.

Possiamo rinominare i nostri file al fine di dare allo script tutte le informazioni di cui ha bisogno, ovvero Binning, filtro usato e tempo di esposizione, così da calibrare correttamente i files con diversi tempi, binning e diversi filtri.

Se nessuna di queste informazioni è contenuta nell’header dell’immagine ci basterà rinominare il file e sfruttare la funzione di smart naming, se ad esempio abbiamo un file acquisito in 900 secondi con filtro di Luminanza e binning 1 ci basterà aggiungere al nome (ad esempio):

BINNING_1_FILTER_Lum_1200s

ed ecco che lo script riconosce tutte e tre le informazioni correttamente

Usate questa nomenclatura per dare le informazioni che volete allo script: nomefile_BINNING_XX_FILTER_XX_XXXs.

In alternativa, potete aggiungere queste informazioni al nome della cartella contenente i vostri files, tutti i files contenuti quindi erediteranno queste informazioni.

Fate però attenzione, se l’immagine contiene già le informazioni nel suo header la funzione di smart naming viene ignorato, rinominando il file lo script continuerà a prendere informazioni dall’header e non dal nuovo nome. in quel caso, se volete a tutti i costi che lo script legga informazioni diverse da quelle contenute nell’header del file dovete aggiungere tale file allo script usando l’opzione “add custom”.

Per concludere il discorso sulla nomenclatura segnaliamo anche una modifica nel nome del master che viene generato dallo script. Nel BPP i master generati si trovano all’interno della cartella “Master” con questo nome

bias-BINNING_1.xisf
dark-BINNING_1-EXPTIME_0.2.xisf
flat-FILTER_Ha-BINNING_1.xisf
light-FILTER_Ha-BINNING_1.xisf

Nel nuovo WBPP invece troverete il master file con questo nome:

masterBias-BINNING_1.xisf
masterDark-BINNING_1-EXPTIME_0.2.xisf
masterFlat-BINNING_1-FILTER_Ha.xisf
masterLight-BINNING_1-FILTER_Ha-EXPTIME_300.xisf

Con l’aggiunta della durata del masterLight e del prefisso “master” al fine di distinguerli dai singoli light frames, sempre nella cartella “Master.

CALIBRAZIONE DEI FLAT FRAMES

Un’altra piccola novità riguarda la calibrazione dei flat frames e di conseguenza del masterFlat. Un normale BPP ci offre due opzioni: o calibrare i nostri Flat frames con tutti i files di calibrazione da noi inseriti o calibrarli solo con i Dark Flat frames, evitando di calibrare i Flat frames con un masterDark che abbia un tempo di esposizione molto diverso. Questa ultima opzione la scegliamo attivando l’opzione “Calibrate with dark flat only”

Con tale opzione attiva se non si hanno a disposizione i FlatDark frames non avevamo nessuna calibrazione dei singoli flat, dato che appunto vengono calibrati SOLO con il masterFlatDark. Nel nuovo WBPP invece attivando tale opzione abbiamo comunque una calibrazione dei flat frames con il masterBias, se il masterBias è ritenuto valido e buono per quei flat, alternativa fino ad oggi non permessa.

SCELTA AUTOMATICA DELL’ALGORITMO DI PIXEL REJECTION

In un normale BPP, così come nel process Image Integration, è l’utente a scegliere l’algoritmo che preferisce per svolgere l’importante funzione di reiezione dei pixel in fase di integrazione. Nel nostro WBPP si ha la possibilità di farlo scegliere direttamente allo script semplicemente selezionando auto nell’apposito menù

La scelta automatica di tale algoritmo avviene semplicemente in base al numero dei singoli frames inseriti, in particolare verrà scelto:

Percentile Clipping per un numero di frames massimo di 7

Averaged Sigma Clipping se il numero va da 8 a 10

Winsorized Sigma Clipping da 11 a 19 frames

Linear Fit Clipping per un numero di frames tra 20 e 24

Generalized Extreme Studentized Deviate (ESD) per 25 o più immagini

Tale scelta può essere davvero utile, selezionando auto non dovremmo più preoccuparci di scegliere ogni volta l’algoritmo migliore, così da evitare nostri errori nella scelta dello stesso.

DIAGNOSTICA

Nel nuovo WBPP è presenta la stessa opzione di diagnostica già presente nel normale BPP

Nel nostro WBPP abbiamo però ampliato tale diagnostica a tutte le nuove funzioni dello script, con un numero maggiore di messaggi di warning.

Se ad esempio nel mio caso vado a eseguire una diagnostica prima di far partire lo script ottengo il seguente messaggio

In poche parole mi avverte che i miei light frames saranno calibrati con un masterDark di durata diversa, sfruttando l’opzione di optimize, senza segnalare altri errori. Prima di far partire il nostro script consigliamo sempre di eseguire una verifica con questo utile strumento.

SMART REPORTING

Il WBPP porta a termine il suo lavoro sempre, anche quando durante le varie fasi si incontrano errori. Alla fine di ogni istanza di WBPP avremo un report con elencate tutte le fasi di lavoro del nostro WBPP, tale report evidenzia quali fasi sono state svolte correttamente e quali fasi hanno incontrato errori, così da permettere all’utente di individuarli facilmente e risolverli. Ecco un esempio di report, senza errori segnalati.

Nel normale BPP alcuni errori che lo script incontra possono bloccare del tutto lo script interrompendo il suo lavoro. Abbiamo deciso di eliminare questo blocco e di inserire il report finale proprio per evidenziare quali fasi non sono state svolte. Ma perchè non bloccare lo script come è sempre stato? Perchè ci sembrava controproducente che lo script si bloccasse del tutto per un errore presente in un solo gruppo di frames, in questo modo anche in presenza di errori si porta a termine la calibrazione/integrazione degli altri gruppi per poi, grazie al report finale, intervenire per correggere gli errori nei gruppi affetti da problemi.

SALVATAGGIO DELLA SESSIONE

Per concludere segnaliamo la possibilità di salvare le immagini caricate all’interno del nostro script semplicemente attivando l’opzione “Save frame group on exit” , così se chiudiamo e riapriamo il nostro script troveremo le immagini in precedenza caricate già al suo interno, senza dover caricare nuovamente i singoli frames. Può essere molto utile se si vuole fare più prove di integrazione con la stessa sessione di immagini.

RISULTATI INTERESSANTI

Come detto ad inizio articolo abbiamo testato la nostra estensione su diverse immagini, ma sappiamo benissimo che sono ancora troppo poche per considerarle un campione scientificamente valido, inoltre le variabili nelle immagini astronomiche sono così tante che non ci aspettiamo risultati sempre positivi, ma crediamo che nella maggior parte dei casi si possano avere reali benefici.

Tra i primi risultati positivi avuti ci ha colpito questa immagine inviata da Cristian Mari in cui si vede un paragone tra un masterLight ottenuto avvalendosi della nostra estensione con il preset nebula, a sinistra, ed un masterLight ottenuto con il processo normale, senza pesi, a destra.

Si tratta di una stessa serie di immagini sulla nebulosa Pacman con filtro Ha, pare evidente il miglioramento di Snr nell’immagine ottenuta col nuovo WBPP.
Altro caso da far notare è quello di Riccardo Sgaramella, dove abbiamo sempre a sinistra l’immagine ottenuta con il WBPP e a destra quella con il normale BPP

Avrete già riconosciuto la nebulosa velo in queste immagini, in questo caso l’immagine ottenuta con il WBPP pare essere più rumorosa e meno pulita, ma allo stesso tempo appare anche più nitida, con stelle più nette, dettagli fini più marcati ed un maggior contrasto.
Ma non sempre i risultati sono così evidenti, i miglioramenti, o peggioramenti, sono spesso di valori decimali e difficilmente distinguibili ad occhio, viene così spontaneo aprire il nostro Subframe Selector e misurare le immagini ottenute coi due metodi per vedere se effettivamente si ha o no qualche beneficio.
Ho personalmente integrato una stessa serie di immagini della nebulosa NGC 7822 sia col normale BPP che col nuovo WBPP utilizzando tutti e tre i preset, ecco i risultati:

Questa volta a parlare sono i numeri. Si vede subito che l’immagine ottenuta col normale BPP ha le stelle peggiori, sia per FWHM che per eccentricità. Il preset cluster porta i migliori risultati sulle stelle sacrificando l’Snr, mirato ad ottenere la massima nitidezza possibile. Il preset nebula è quello che meglio esprime l’Snr della mia immagine e, per concludere, il preset galaxy è un ottimo compromesso tra gli altri due preset restituendo un ottimo Snr ed allo stesso tempo una buona eccentricità e FWHM.
Ma la cosa davvero sorprendente in questa misurazione è che nel complesso tutti e 3 i preset hanno portato a risultati migliori di un normale BPP. Ho deciso di assegnare un peso alle 4 immagini andando a valutare in maniera del tutto uguale FWHM, eccentricità ed Snr, assegnando a questi 3 parametri la stessa percentuale. Il peso finale pone l’immagine ottenuta col normale BPP all’ultimo posto, mentre la migliore risulta essere quella col preset nebula. Dato che il soggetto dell’immagine è proprio una nebulosa, la già citata NGC 7822, i risultati ottenuti hanno centrato in pieno le aspettative.

PER CHI VUOLE APPROFONDIRE

Con questo breve articolo si è già in grado di sfruttare le nuove funzioni del nostro Weighted Batch Preprocessing, ma per chiunque voglia approfondire ancora la teoria ed i meccanismi che stanno dietro a certi processi potete scaricare questo documento Pdf più tecnico e dettagliato, scritto direttamente da Roberto.

Ringraziamenti

Lo script che potete scaricare in questo articolo è frutto del lavoro di molte persone, io e Roberto da soli probabilmente non avremmo mai raggiunto tali traguardi in così breve tempo senza l’aiuto di un gruppo di astrofotografi che hanno speso parte del loro tempo testando il nostro script, segnalandoci eventuali problemi e inviando preziosissimi feedback. Ci teniamo pertanto a ringraziare:

Alberto Vezzani

Alessandro Soffia

Cristian Mari

Domenico Cataldi

Emanuele Fumagalli

Federico Carollo

Giambattista Rizzo

Gianluca Spanò

Marco Formenton

Marco Prelini

Matteo Fumagalli

Maurizio Berti

Mauro Narduzzi

Mirko Tondinelli

Oscar Cattina

Riccardo Balia

Riccardo Sgaramella

Stefano Bolis

Valerio Avitabile

Per segnalare eventuali bug o errori interni allo script siete pregati di inviare una mail all’indirizzo weightedbpp@gmail.com