Rejection nell'integrazione: scelta dell'algoritmo e lettura della Rejection Map
La «rejection» durante l’integrazione è il processo con cui, mentre si sovrappongono più immagini, si scartano automaticamente quei valori anomali che non dovrebbero esserci: scie di satellite, macchie bianche dei raggi cosmici, pixel caldi (hot pixels) residui, gli aloni delle stelle troppo luminose e così via. Scegliere l’algoritmo di rejection giusto e saper leggere la Rejection Map che produce è la chiave per ottenere un’integrazione pulita. Questo articolo mette in ordine la logica con cui scegliere un algoritmo di rejection e, inoltre, come vadano lette esattamente quelle due mappe di rejection che così spesso vengono ignorate.
La famiglia degli algoritmi di rejection
PixInsight offre diversi algoritmi di rejection durante l’integrazione; la documentazione ufficiale elenca a quale scenario si adatta ciascun algoritmo ed è senz’altro degna di lettura (attenzione: questo documento è stato pubblicato ormai da parecchio tempo e non copre l’algoritmo GESD, aggiunto in seguito).

Si possono suddividere per grandi linee in due categorie:
- La famiglia Sigma: rejection dei valori anomali basata sulla deviazione standard, per esempio Sigma Clipping, la versione migliorata Winsorized Sigma Clipping e Percentile Clipping. Il loro principio e la loro matematica appartengono allo stesso sistema.
- GESD Test: basato sul Grubbs’s test, la sua teoria e la sua matematica sono completamente diverse da quelle dei metodi basati su sigma. È un algoritmo aggiunto relativamente tardi.
GESD vs Sigma: chi vince quando i frame sono pochi?
Ho fatto il confronto davvero. Una volta ho preso un set di dati di soli 12 frame e ho eseguito in parallelo GESD Test, Winsorized Sigma Clipping e il tradizionale Sigma Clipping.

Dodici frame in realtà non soddisfano il numero di frame consigliato per GESD o Winsorized Sigma, eppure in questo particolare set il GESD Test ha dato il risultato migliore. Va però aggiunta una postilla: se si tratta di dati a colori e per giunta di frame insufficienti, è comunque più adatto usare Winsorized Sigma o Sigma. Non esiste quindi un algoritmo «sempre il migliore»: dipende dai dati.
GESD contro le scie di satellite deboli
GESD ha un altro vantaggio sul campo. In passato, quando integravo con la famiglia sigma, mi imbattevo spesso in scie di satellite piuttosto deboli che non c’era verso di eliminare: anche con 17 frame, a integrazione finita restava comunque parte della scia, e questo tipo di scia debole non si presta alla manual selective rejection (annerirla a mano).

Passando a GESD Test e, dopo aver regolato adeguatamente i parametri, aver dilatato (fatto crescere) la scia di satellite debole, sono riuscito a eliminare una scia estremamente debole; e, in generale, il rapporto segnale/rumore (S/N) di GESD è più alto di quello del tradizionale Sigma Clipping o del Winsorized Sigma Clipping. (Detto ciò, nella maggior parte dei casi con la famiglia sigma non ci si imbatte in un problema di questo tipo, impossibile da eliminare: si tratta di un caso limite piuttosto estremo.)
Un’arma speciale: Range Clipping
Oltre alla rejection statistica dei valori anomali, c’è un altro mezzo «di forza bruta» ma comodo: il Range Clipping.

Se ci si ritrova con quelle immagini dalla cattiva calibrazione dei dark che mostrano molti punti neri (per esempio presenti in 10 frame e assenti in 5), agli algoritmi di rejection ordinari riesce difficile eliminare questi punti neri individuando i valori anomali. In tal caso si può usare durante l’integrazione il Range Low Clipping per rimuovere a forza ogni punto nero al di sotto di una certa soglia. È un mezzo diretto rivolto a un difetto specifico, complementare alla rejection statistica.

Leggere la Rejection Map
Quando si finisce di integrare con ImageIntegration o WBPP, oltre all’immagine finita si generano anche due mappe di rejection: una per la direzione dell’alta luminosità (rejection high) e una per la direzione della bassa luminosità (rejection low). La maggior parte delle persone ignora senz’altro queste due, il che in realtà spreca informazioni diagnostiche molto utili.

Di solito in rejection low non c’è granché da vedere; ciò che conta è rejection high: qui compaiono tutte le interferenze che si preferirebbe «non vedere nell’immagine finita» — scie di satellite, gli aloni delle stelle troppo luminose o gonfiate, scie di oggetti vicini alla Terra, e ancora pixel caldi e macchie bianche causate dai raggi cosmici (i pixel caldi di solito li ripulisco già prima dell’integrazione con Cosmetic Correction, quindi qui non ce ne sono molti).
Il modo più pratico di interpretare questa mappa è: se un pixel che si voleva scartare compare in rejection high, significa che è stato eliminato con successo; se invece non compare qui e resta nell’immagine integrata finita (per esempio una scia di satellite residua), significa che i parametri di rejection non sono sufficienti, oppure che si dovrebbe cambiare algoritmo.
Alcune domande frequenti del tipo «devo scartare questo frame?»
Una volta compreso il principio di cui sopra, molti dei tormenti dei principianti trovano una risposta.
Un’immagine con stelle gonfiate: la scarto in modo che non partecipi all’integrazione? A meno che non sia sfocata, di solito la lascio partecipare all’integrazione.

Esaminando rejection high si scopre che quelle porzioni di stelle di dimensioni eccessive o troppo luminose sono già state rimosse dalla rejection e non hanno partecipato al calcolo dell’integrazione; anche le scie dei satelliti artificiali e i grumi bianchi dei raggi cosmici finiscono allo stesso modo in rejection high. Questo genere di lavoro conviene lasciarlo al software.
C’è una scia di satellite luminosa che attraversa da parte a parte il soggetto: devo cancellare a mano quel frame? La risposta è, di nuovo, che non serve.

Come fare: se i frame sono pochi, si usa un algoritmo con maggiore capacità di rejection (per esempio la famiglia Sigma Clipping) e si imposta il parametro Sigma High un po’ più rigoroso (per esempio sotto 2,5). In un esempio avevo solo 7 frame, uno dei quali con una scia di satellite che attraversava il soggetto; ogni frame contava per il rapporto segnale/rumore, perciò, impostando i parametri adeguati (senza usare i valori predefiniti del software), ho lasciato che il processo di integrazione portasse a termine la rejection in automatico, e la scia eliminata con successo compare in rejection high. Non sprechi nemmeno un pixel conquistato a fatica.
L’eccezione della colonna difettosa: la rejection non può salvarla
Infine, aggiungo un’eccezione che la rejection non può salvare: la colonna difettosa (defect column) di un CCD.

La colonna difettosa è troppo scura e per giunta corre per l’intera lunghezza (del fotogramma); volerla rimuovere a tutti i costi con la rejection costa troppi pixel buoni e per di più funziona male. Il modo corretto è creare prima una Defect Map per la fotocamera (prendendo come esempio il CCD 16803 di «Latte», c’è una colonna difettosa evidente al centro dell’inquadratura, più altre tre poco vistose), caricarla con il processo DefectMap e applicarla ai light per ridurre notevolmente l’effetto della colonna difettosa, e poi lasciare che la rejection dell’integrazione ripulisca senza sforzo ciò che resta. In altre parole, la rejection è la squadra di pulizie che entra in scena alla fine, non un’onnipotente prima linea di difesa: i difetti che vanno trattati con uno strumento dedicato hanno comunque bisogno, prima, dello strumento giusto.