
06 Feb Riduzione del Rumore (pt 1)
Tutti noi, astrofotografi ed aspiranti tali, abbiamo lottato contro il rumore che affligge le nostre immagini astronomiche, nel tentativo di estrarre al massimo il segnale acquisito senza quella brutta granulosità cosparsa sulla nostra immagine. Un’immagine pulita è infatti un’immagine molto più piacevole da guardare rispetto ad una rumorosa, anche se presenta meno segnale, proprio perchè il nostro occhio è meno disturbato nella sua visione. Il rumore totale di una nostra immagine può essere semplificato come il frutto di tre componenti:
- Rumore Elettronico – dovuto all’elettronica del sensore, si elimina calibrando le immagini con il MasterBias
- Rumore Temporale – dovuto al tempo di ripresa del nostro light frame, più è lungo il tempo di esposizione e più rumore temporale si genera, eliminabile calibrando le immagini con il MasterDark
- Rumore Casuale – rumore dovuto a pixel che si “accendono o spengono” in modo casuale, allontanandosi dal loro valore medio , esso è correggibile solo con l’integrazione, ovvero ottenendo più light possibili così che, integrandoli, si avrà nell’immagine finale un valore del pixel più vicino possibile a quello medio e reale
E’ proprio su questo ultimo genere di rumore che andremo ad agire, infatti per quanto noi andremo ad integrare esso sarà presente e non sempre abbiamo la possibilità di integrare molte ore così da abbatterlo fino a renderlo quasi nullo (QUASI, ma mai effettivamente nullo). In tutti quei casi in cui, per vari motivi, ci ritroviamo un MasterLight affetto da rumore possiamo agire in diversi modi al fine di ridurlo e rendere più pulita la nostra immagine.
Ho deciso per praticità di suddividere tale tutorial in due parti, una parte prima, che è questa che state leggendo, nella quale andrò a descrivere tre diversi process utilizzati per la riduzione del rumore:
E una seconda parte che descriverà il Metodo Jon Rista (metodo che combina TGVdenoise e MultiscaleMedianTransform) scoperto grazie ad un amico e che ad oggi è il metodo che di più utilizzo dati i grandi risultati che permette di ottenere e la facilità di replicare tali risultati su tutte le immagini
Prima di iniziare ecco l’immagine sulla quale faremo le nostre prove, una mia ripresa col filtro di luminanza sulla nube molecolare del Toro, in particolare sulla nebulose a riflessione VDB 27 e LBN 782, ottenuta con CCD SBIG ST-F 8300 monocromatica
Nonostante le molte ore di integrazione (oltre 5 ore) si nota bene la granulosità presente, specialmente sulle polveri più scure. Si tratta di nebulosità molto deboli che per essere ben evidenziate richiedono tanta integrazione. Iniziamo ora a ridurre il rumore presente su questa immagine con i nostri process, ci tengo a precisare che ho scelto un’immagine in bianco e nero solo per velocizzare alcuni passaggi, i processi che seguono possono essere applicati anche a immagini a colori senza alcuna difficoltà. Inoltre i parametri usati per i miei process NON sono valori assoluti che consentono sempre buoni risultati, infatti il processo di riduzione del rumore è un processo che varia molto tra un’immagine e l’altra e sarà sempre necessario eseguire varie prove al fine di trovare i giusti valori, i valori da me usati possono servire da guida ma starà poi a voi trovare i più idonei per le vostre immagini al fine di ottenere risultati eccellenti.
Se vuoi andare direttamente alla seconda parte clicca QUI
Multiscale Linear Transform
PRO -> Funziona bene sia su immagini lineari che non lineari, può essere applicato indipendentemente a immagini monocromatiche che a colori ed i risultati sono facilmente riproducibili su immagini diverse.
CONTRO -> Ha la tendenza a sfocare piccoli dettagli se applicato senza maschera.
Andiamo subito ad aprire Multiscale Linear Transform , che da ora chiamerò per semplicità MLT, e vediamo come si presenta. Di default il processo utilizza l’algoritmo “Starlet Transform” col quale faremo le nostre prove e che va benissimo nel 99% dei casi, vedremo poi quando usare l’algoritmo che il process ci fornisce come alternativa. vediamo inoltre che il processo si presenta con 4 Layers ed è fondamentale capire cosa siano questi layers per poter utilizzare al meglio il processo. Ogni layer corrisponde ad una struttura contenente un certo numero di pixel, identificati dal numero di scala, il primo layer va ad agire su strutture formate da un solo pixel, il secondo layer in strutture formate da 2 pixel, il quarto layer su strutture formate da 8 pixel, il sesto layer su strutture di 32 pixel e così via fino ad arrivare a 8 layers che è il massimo numero di layers che possiamo selezionare dal menù a tendina relativo. Infine abbiamo il layer R, detto residuo, che rappresenta tutte le altre strutture dell’immagine formate da un numero maggiore di pixel. Il rumore che noi stiamo cercando di ridurre è un rumore che si distribuisce maggiormente sui singoli pixel e, più in generale, su strutture piccole (rumore a piccola scala) quindi dovremo andare a ridurlo maggiormente sui layers più bassi e poco, o niente, su layers maggiori corrispondenti a strutture formate da tanti pixel, inoltre ridurre troppo il rumore su grandi strutture porterebbe ad un appiattimento delle differenze su zone non solo affette da rumore ma anche contenenti stelle e dettagli, perdendo così nitidezza generale su tutta la foto, perdendo dettagli e creando artefatti. Quindi prima di partire col process scegliere il giusto numero di layers, che possiamo anche lasciare a 4 per questa prova, e creare una maschera per proteggere stelle e zone più luminose, come galassie e nebulosità, preservando i loro dettagli.
Se, come nel mio caso, stiamo utilizzando un’immagine monocromatica possiamo semplicemente clonarla per ottenere la nostra maschera, se usiamo un’immagine rgb ci basterà estrarre la Luminanza per avere la maschera. Inoltre sto eseguendo il process ancora nella fase lineare, scelta consigliata, quindi ricordo a tutti che la maschera per essere efficacie deve essere stirata e resa non lineare, e lo faccio semplicemente applicando i valori dello Screen Transfer Function (STF) all’ HistogramTransformation per poi applicarlo alla mia immagine che servirà per la maschera (se non sai come guarda questo Tutorial!).
Quindi ci troviamo con due immagini, la nostra immagine a cui vogliamo ridurre il rumore ancora non lineare ( quindi nera) e la maschera monocromatica in fase non lineare, quindi stirata
a questo punto applichiamo la maschera (utilizziamo il nostro STF per visualizzare la nostra immagine nei passaggi futuri)
vediamo subito in rossa la nostra maschera che va a coprire le zone d’interesse, inoltre il nome della nostra immagine è adesso riquadrato in marrone, segno che c’è una maschera attiva sulla nostra immagine. Però l’immagine così messa andrà a mascherare le zone più scure dell’immagine e lascerà agire il nostro process sulle zone chiare, esattamente quello che noi non vogliamo! andiamo quindi ad INVERTIRE la maschera semplicemente cliccando nell’apposita icona nella nostra barra di controllo
e sempre per comodità vado a rendere invisibile la maschera così da non avere tutta l’immagine rossa e da poter vedere quello che andrò a fare
Finalmente siamo pronti ad applicare il nostro process! Per utilizzarlo ai fini di ridurre il rumore ci basterà selezione uno dei layers ed attivare il menù Noise Reduction, tale menù ci permetterà di variare 3 differenti parametri per la riduzione del rumore che diverranno visibili accanto al layers selezionato
Modificando i tre parametri andremo ad applicare una riduzione del rumore più o meno aggressiva, tali parametri sono:
- Treshold – definisce la forza della riduzione del rumore, maggiore è tale valore e maggiore sarà l’aggressività del process
- Amount – definisce il livello di fusione tra l’immagine prima dell’applicazione del process e quella dopo. Un valore di 0 renderà praticamente nullo il process mentre un valore di 1 farà si che l’immagine finale sarà solo il risultato del process, senza tener conto del prima. Per chi è pratico di Photoshop esso svolge lo stesso ruolo del parametro “Opacità”
- Iterations – sono le iterazioni, ovvero indica quante volte viene applicato l’algoritmo sullo stesso livello con gli stessi parametri. Applicarlo più volte porta a un denoise maggiore.
Abbiamo già detto che il rumore è maggiore nei layers minori, andremo quindi ad impostare i nostri parametri in modo più aggressivo nel layers 1 e mano a mano più leggero nel layers 4, ad esempio come nella figura sotto, ricordando di selezionare il giusto target che nel mio caso sarà Luminance CIE (Y), dato che la mia immagine è monocromatica, sarà RGB/K Components se applicato a immagini a colori
Applichiamo subito all’immagine e vediamo subito un prima e dopo
Le stelle e le zone più chiare della nebulosità a riflessione sono ben conservate, segno che la maschera ha fatto il suo lavoro, la grana dal fondo cielo è praticamente scomparsa ma non proprio come vorrei io, infatti il fondo non appare omogeneo, non si ha un passaggio graduale dalle zone più scure a quelle più chiare ma si ha come delle macchie, artefatti classici di un denoise troppo aggressivo. Sicuramente abbassare i valore nei layers più alti e ridurre l’amount per migliorare la fusione tra il “prima e dopo” delle immagini potrebbe essere una buona idea. Ovviamente tali valori sono relativi a questa immagine, in altre immagini potrebbero portare ad un denoise troppo leggero e quindi da aumentare. Aumentare il numero di layers per portare il denoise a strutture più grandi non è sempre una mossa giusta, anzi direi quasi mai, ma nessuno vi vieta di tentare. Ecco di seguito come imposterei il mio process per ottenere un buon risultato in questa immagine, tali impostazioni inoltre sono un buon punto di partenza per tutti, provate un primo denoise con tali valori ed andate a regolare, aumentando e diminuendo i valori, fino ad avere il vostro risultato ottimale.
Prima di passare ad analizzare il secondo process vi accenno al fatto che MLT dispone di un secondo algoritmo chiamato appunto “multiscale linear transform” , tale algoritmo è molto valido ma meno flessibile del nostro Starlet, il suo uso è consigliato solo se eseguiamo denoise esclusivamente al primo Layers, per denoise che colpiscono più layers, come nel nostro caso, lasciamo l’algoritmo preimpostato Starlet.
Multiscale Median Transfrom
PRO -> funziona bene sia con immagini lineari che non lineari, i risultati sono facilmente riproducibili su diverse immagini, può essere applicato sia a immagini di luminanza monocromatiche che su immagini a colori.
CONTRO -> Tende a lasciare pixel di disturbo neri sul fondo che devono essere poi smussati in seguito
Aprendo il process di MultiscaleMediamTransfrom esso ci apparirà familiare, infatti MMT è molto simile al già visto MLT. Rispetto al precedente process esso riesce a mantenere meglio i dettagli dell’immagine, anche se la sua riduzione del rumore può apparire più debole. anche MMT si basa su Layers di diverse strutture esattamente come MLT. Esattamente come per il process precedente dobbiamo creare una maschera con la quale proteggere le zone luminose e le stelle, tale maschera va resa non lineare e applicata invertendola. Sempre come visto precedentemente andiamo ad agire solo sui Layers da 1 a 4 preimpostati, ma anche in questo process possiamo aumentarli, se lo riteniamo necessario.
Esattamente come con MLT basterà selezionare i vari layers ed attivare per ognuno di essi il Noise Reduction, attivandolo noteremo che sul nostro process MMT manca l’opzione iterations ed al suo posto troviamo l’opzione adaptive, tale opzione è preimpostata a 0 e a 0 la possiamo lasciare senza troppi problemi, così da doverci preoccupare solo di due parametri: Treshold ed Amount. Come per MLT imposteremo un denoise più aggressivo per il layers 1 e man mano più leggero fino al layers 4, in questo caso io ho deciso di impostare così i miei valori
Ricordiamo di impostare il giusto target, Luminanza se lo applichiamo ad una immagine monocromatica o RGB/K se applicato ad una immagine a colori. Ecco i risultati
la grana del fondo cielo è ridotta ma in maniera minore rispetto a MLT, però vediamo che i dettagli sono incredibilmente preservati. E’ possibile andare ad aumentare i valori di treshold per pulire ancora di più il fondo dell’immagine, come abbiamo accennato esso però ha creato dei pixel di disturbo sul fondo cielo, ingrandiamo ancora di più l’immagine per osservarli meglio
tali pixel possono essere eliminati in seguito, anche in fase non lineare. Il Process dispone di due algoritmi per la riduzione del rumore, quello preimpostato ( Multiscale median Transform ) è di per se ottimo e utilizzabile su tutte le immagini. Il secondo algoritmo ( Median wavelet transform ) è un algoritmo che prende i parametri che noi inseriamo e li va ad applicare in maniera diversa in base al Layers selezionato, andando in poche parole a rendersi più aggressivo nei Layers bassi e ad inibirsi da solo sui Layers alti, inoltre esso crea meno pixel neri di disturbo, può essere una valida alternativa e in questo process non vi è un algoritmo da preferire rispetto all’altro dato che sono entrambi molto validi. Ecco un esempio di come lavorano i due diversi algoritmi
Abbiamo a sinistra un’immagine ottenuta con l’algoritmo “Multiscale median transform”, mentre a destra un’immagine ottenuta con l’algoritmo “median wavelet transform”, le due immagini sono ottenute con gli stessi identici parametri e vediamo infatti che sono praticamente uguali, la differenza è minima, possiamo dire che il secondo algoritmo appare appena appena meno efficace del primo nelle zone più scure ma è leggermente migliore nelle zone più chiare.
ACDNR
PRO -> Può essere applicato senza problemi sia ad immagini a colori che immagini monocromatiche, lavora molto bene se accoppiato ad altri process per la riduzione del rumore
CONTRO -> funziona molto male con immagini lineari
Il process ACDR è molto diverso dai due process visti precedentemente, è anche meno efficace degli altri due e, se usato male, crea artefatti sul fondo cielo. E allora perchè usarlo? ACDNR è perfetto per rifinire le nostre immagini, infatti un buon metodo per ridurre il rumore può essere quello di applicare uno dei due process precedentemente visti in fase lineare, trasformare l’immagine in non lineare e con ACDNR ultimare la riduzione del rumore.
il process si presenta suddiviso in due schede: Lightness e Chrominance. La riduzione del rumore riguarda solo la parte Lightness, infatti su Chrominance si andrà a ridurre il rumore cromatico, che per il momento trascuriamo. Su Lightness assicuriamoci che apply sia abilitato altrimenti il process non funziona. Accanto a questa voce troviamo la voce Lightness mask , attivandola il process andrà a creare in automatico una maschera di luminanza per proteggere le zone più luminose, possiamo quindi attivarla o continuare ad applicare una maschera come abbiamo fatto fino ad ora. I valori da modificare per una corretta riduzione del rumore sono i seguenti:
- StdDev: standard deviation, definisce la dimensione della struttura del rumore che si desidera abbattere, per il nostro solito rumore di piccola scala vanno benissimo valori compresi tra 1,5 e 2,5
- Amount: già lo conosciamo
- Iterations: il numero di iterazioni, ovvero quante volte vogliamo che sia applicato il process. Consigliabile restare tra 2 e 4.
Con i valori che vedete in figura andiamo ad applicare il process ad un’immagine LINEARE
La grana di fondo è molto diminuita ma come vediamo le stelle sono state tutte allargate, aumentate di dimensione, inoltre l’intera immagine ha perso di nitidezza e questo nonostante la maschera applicata. Questo è proprio il motivo per cui è bene non applicare ACDNR ad una immagine lineare. Possiamo recuperare nitidezza e la giusta dimensione delle stelle agendo sui valori sotto al menù Bright Sides Edge Protection, ma la cosa potrebbe essere lunga e macchinosa. Prendiamo quindi la nostra immagine e allunghiamola, rendendola NON LINEARE e verifichiamo il comportamento del process
Le stelle hanno una dimensione e nitidezza molto vicine all’immagine originale mentre il fondo cielo è stato quasi del tutto ripulito dalla grana. Ma come detto il miglior modo per usare ACDNR è quello di sfruttarlo in seconda battuta per ripulire l’immagine dal rumore residuo, ad esempio applicato dopo MMT come nell’immagine che segue
Già l’immagine centrale ottenuta col solo MMT è molto buona, ma presenta dei piccoli artefatti più chiari che macchiano il fondo cielo, essi sono totalmente rimossi nell’immagine a destra dopo aver applicato ACDNR, l’immagine risulta molto pulita e non fatevi ingannare: si tratta di un crop molto spinto dell’immagine originale, inoltre il primo passaggio di MMT è a mio avviso troppo aggressivo, aggiustando i parametri con un paio di prove si potrebbe raggiungere un risultato eccellente.
Come detto ACDNRT ha anche una sezione riguardante la Chrominance. Per attivare questa sezione è necessario abilitare l’opzione Apply , tale opzione non dovrà essere abilitata se stiamo lavorando su immagini monocromatiche. Una volta abilitata essa ci permetterà di correggere il rumore cromatico e per farlo valgono le stesse regole viste prima, ovvero ci basterà andare a modificare il valore di StndDev, Amount ed il numero di iterazioni. Questa fase dipende molto dall’immagine, ma anche dalla strumentazione e dal tipo di elaborazione, dato che il rumore di crominanza ha una distribuzione che varia al variare di questi fattori, é quindi difficile andare ad identificare un giusto modo di applicarlo. Nel mio caso mi sono accorto che quando unisco la Luminanza alle immagini rgb mi si creano delle macchie rosse nel fondo cielo, pertanto solitamente vado ad applicare una maschera per proteggere il giusto colore delle stelle e delle zone di nebulosità, applicando così il process nelle zone scure dove mi andrà ad eliminare queste macchie cromatiche.
Possiamo adesso passare alla seconda parte del nostro tutorial e scoprire così questo spettacolare metodo ideato da Jon Rista!