La diffusione è una famiglia di processi fisici per il quale le particelle si muovono e si disperdono gradualmente nel tempo, da una sorgente che le genera. Nell’elaborazione delle immagini, la diffusione avviene principalmente in due posti:
- diffusion of photons through lens glass (blur) or humid air (hazing),
- diffusion of pigments in wet inks or watercolors.
In entrambi i casi la diffusione rende l’immagine meno nitida, “perdendo” particelle e ammorbidendo le variazioni locali.
Il modulo diffusione o nitidezza utilizza un modello fisico generalizzato per descrivere diversi tipi di diffusione, e può essere usato dai creatori di immagini per simulare o ripristinare processi di diffusione.
Siccome è un modulo altamente tecnico, sono stati forniti diversi preset per dimostrarne l’uso per vari scopi.
La diffusione può essere rimossa in modo tale da:
- recover the original image from sensors with an anti-aliasing filter or mitigate the blur created by most demosaicing algorithms (use one of the sharpen demosaicing presets and move the module before the input color profile module in the pipeline),
- reverse static lens blurring/defocusing (use one of the lens deblur presets),
- remove atmospheric haze (use the dehaze preset),
- add extra acutance for better legibility (use the local contrast preset).
Notare che la sfocatura dei movimenti non può essere ripristinata annullando il processo di diffusione, dato che non è di natura diffusiva.
La diffusione può essere aggiunta in modo tale da:
- create a bloom or Orton effect (use the bloom preset),
- inpaint missing or damaged parts of an image (use the inpaint highlights preset),
- denoise in an edge-preserving way (use one of the denoise presets)
- apply a surface blur (use the surface blur preset).
Dato che il processo è fisico, anche i suoi errori possono essere utilizzati per scopi creativi. Ad esempio si può:
- simulate line drawing or watercolor (use the simulate line drawing and simulate watercolor presets),
- create random patterns and textures by increasing noise (over time, with iterations, noise will connect with neighbours to create random specks).
Nota: Questo modulo è molto esigente di risorse, in quanto è un vero risolutore di equazioni differenziali parziali, multiscala e anisotropico. La durata di esecuzione del modulo aumenta con il numero di iterazioni, e OpenCL è altamente raccomandato. Vengono anche forniti alcuni preset “veloci” per l’uso su sistemi senza OpenCL.
concetti
orario
La diffusione è un processo dipendente dal tempo: più tempo passa e più le particelle possono diffondersi. In questo modulo, il tempo è simulato utilizzando il numero di iterazioni (il numero di volte che l’algoritmo viene eseguito su se stesso). Più iterazioni, se opportunamente impostate, possono rendere la ricostruzione (rimozione di sfocatura, rumore e foschia) più accurata, ma possono anche causarne la degenerazione.
Direzione
La diffusione naturale avviene solitamente da punti con alto potenziale (alta energia o alta concentrazione di particelle) verso punti a basso potenziale (bassa energia o bassa concentrazione di particelle). In un’immagine questo significa che la diffusione avviene sempre dai pixel più luminosi a quelli più scuri.
This particular implementation can simulate natural diffusion, using what is called an isotropic diffusion (all directions have the same weight, like heat diffusion), but can also force a weighted direction parallel to the gradients (forcing diffusion across object edges and creating ghost edges), or a weighted direction perpendicular to the gradients, called isophote (forcing diffusion to be contained inside edges, like in a droplet of watercolor). The relative weight of each direction (gradient and isophote) is user-defined and can be found in the direction section of the module.
Velocità
Depending how fluid the environment is, particles can move more or less freely and therefore more or less fast. The speed of diffusion can be set in the speed section of the module.
Quando si esegue una ricostruzione (riduzione di rumore, sfocatura e foschia), si consiglia di usare velocità minori per miglior accuratezza. Questo previene di oltrepassare i limiti numerici (e quindi far degenerare la soluzione) e può richiedere più iterazioni. Si possono usare velocità più alte per un numero piccolo di iterazioni. Notare che sfocature estese potrebbero richiedere parecchie iterazioni per una corretta riduzione, e quindi la velocità dovrebbe essere regolata per evitare la degenerazione della soluzione.
Tutte le velocità vengono sommate (dal primo al quarto ordine), e la somma “primo ordine + secondo ordine
” e “terzo ordine + quarto ordine
” non dovrebbe mai superare il ±100%, a meno che non si voglia produrre glitch art .
Scala
Si suppone che la diffusione naturale avvenga soltanto nelle più vicine delle coordinate adiacenti. Quindi, ad ogni iterazione, ogni pixel dovrebbe interagire solo con i suoi 9 pixel adiacenti più vicini.
Qui abbiamo velocizzato un pochino le cose per risparmiare tempo e riusare lo schema di wavelet multi-scala dal modulo equalizzatore contrasto, in modo tale da poter diffondere a scale differenti. La massima scala di diffusione viene stabilita dal parametro estensione del raggio.
A prescindere la diffusione, il parametro nitidezza ti permette di aumentare o diminuire il dettaglio per ciascuna scala, similarmente al controllo della spline dell’equalizzatore contrasto. Assieme al selettore a scorrimento sensibilità margine, questo fornisce la stessa funzionalità del modulo equalizzatore contrasto (tab luminanza e margini) ma nello spazio colore RGB riferito alla scena.
Controlli modulo
properties
- iterazioni
- Il numero di volte che l’algoritmo dovrebbe essere eseguito su se stesso. Valori alti rallenteranno il modulo ma permettono una ricostruzione più accurata, assunto che la velocità di diffusione sia sufficientemente bassa.
- raggio centrale
- La scala principale della diffusione. Zero spinge la diffusione ad agire più pesantemente sui dettagli fini (usato per la riduzione della sfocatura e del rumore). Valori diversi da zero stabiliscono la dimensione dei dettagli che devono essere diffusi più intensamente (usato per incrementare il contrasto locale).
- raggio di estensione
- Questo ti permette di selezionare la fascia dei raggi di dettaglio sulla quale operare, attorno al raggio centrale. L’estensione stabilisce un intervallo di scale di dettaglio (tra
centro - estensione
ecentro + estensione
) nella quale la diffusione è confinata. Valori alti diffondono su una larga fascia di raggi, a spese dei tempi di elaborazione. Valori bassi diffondono più vicino al raggio centrale. Se stai pianificano di ridurre la sfocatura, il raggio di estensione dovrebbe essere approssimativamente la larghezza della sfocatura dell’obiettivo e il raggio centrale dovrebbe essere zero. Se stai pianificando di incrementare il contrasto locale, ma non desideri interessare la nitidezza o il rumore, il raggio di estensione dovrebbe essere massimo i 3/4 del raggio centrale.
I raggi sono espressi in pixel sulla base dell’immagine a piena risoluzione, quindi copiare+incollare le impostazioni tra immagini con risoluzione differente potrebbe portare a risultati leggermente diversi, ad eccezione della nitidezza a livello del pixel.
Per gli ingegneri elettrici, ciò che viene qui impostato è un filtro passa-banda nello spazio dei wavelet, che usa una finestra di frequenze gaussiane centrate sul raggio centrale
con una caduta (deviazione standard) di raggio di estensione
. Le scale wavelet sono analoghe alle frequenze armoniche, e ciascuna scala wavelet stabilisce il raggio del dettaglio sul quale agire.
Velocità (nitidezza ↔ diffusione)
In the following controls, positive values apply diffusion, negative values undo diffusion (i.e. sharpen) and zero does nothing.
- 1st order speed (gradient)
- The speed of diffusion of the low-frequency wavelet layers in the direction defined by the 1st order anisotropy setting.
- 2nd order speed (laplacian)
- The speed of diffusion of the low-frequency wavelet layers in the direction defined by the 2nd order anisotropy setting.
- 3rd order speed (gradient of laplacian)
- The speed of diffusion of the high-frequency wavelet layers in the direction defined by the 3rd order anisotropy setting.
- 4th order speed (laplacian of laplacian)
- The speed of diffusion of the high-frequency wavelet layers in the direction defined by the 4th order anisotropy setting.
Direzione
In the following controls, positive values cause diffusion to avoid edges (isophotes), negative values make diffusion follow gradients more closely, and zero affects both equally (isotropic).
- 1st order anisotropy
- The direction of diffusion of the low-frequency wavelet layers relative to the orientation of the gradient of the low-frequency (1st order speed setting).
- 2nd order anisotropy
- The direction of diffusion of the low-frequency wavelet layers relative to the orientation of the gradient of the high-frequency (2nd order speed setting).
- 3rd order anisotropy
- The direction of diffusion of the high-frequency wavelet layers relative to the orientation of the gradient of the low-frequency (3rd order speed setting).
- 4rd order anisotropy
- The direction of diffusion of the high-frequency wavelet layers relative to the orientation of the gradient of the high-frequency (4th order speed setting).
edge management
- sharpness
- Apply a gain on wavelet details, regardless of properties set above. Zero does nothing, positive values sharpen, negative values blur. This is mostly useful as an adjustment variable when blooming or blurring, to retain some sharpness while adding a glow around edges. You are not advised to use this for sharpening alone, since there is nothing to prevent halos or fringes with this setting.
- sensibilità margine
- Applica una penalità sulla velocità della diffusione quando viene individuato un margine. L’identificazione usa la varianza locale attorno ciascun pixel. Zero disabilita la penalità, valori più alti rendono la penalità più pesante e più sensibile ai margini. Incrementare se si notano artefatti come frange e aloni.
- soglia margine
- Stabilisce una soglia di varianza, che interessa soprattutto aree a bassa varianza (aree scure o sfocate, o superfici piane). Valori positivi incrementeranno la penalità per le aree a bassa varianza, che è un bene per la nitidezza o per incrementare il contrasto locale senza distruggere i neri. Valori negativi decrementeranno la penalità per le aree a bassa varianza, che è un bene per la riduzione del rumore oppure per la sfocatura con effetto massimo sulle aree nere e sfocate.
Spazialità diffusione
- soglia per la maschera di luminanza
- Questo controllo è utile se vuoi rimuovere le alteluci. Per valori maggiori dello 0%, la diffusione avverrà nelle regioni con una luminanza maggiore di questo parametro. Notare che in queste aree verrà aggiunto del rumore gaussiano per simulare le particelle e inizializzare la fase di rimozione.
flusso di lavoro
La maggiore difficoltà con questo modulo è che sebbene il suo risultato dipenda drasticamente dai parametri di input, questi parametri non hanno alcun collegamento intuitivo con la vita di tutti i giorni. Gli utenti sono probabilmente sovraccaricati, a meno che non abbiano familiarità con le equazioni differenziali parziali di Fourier. Questa sezione propone alcuni modi di approcciarsi a questo modulo senza avere la necessitò di comprendere la teoria sottostante.
Avviso generico
Se intendi rimuovere la sfocatura della tua immagine usando questo modulo, parti sempre correggendo appropriatamente qualsiasi aberrazione cromatica e il rumore nell’immagine, dato che la rimozione della sfocatura potrebbe amplificare questi artefatti. E’ anche molto importante che tu non abbia pixel neri tagliati nell’immagine. Questi possono essere corretti con il livello di correzione del nero del modulo esposizione.
Dato che lavora su canali RGB separati, è preferibile applicare questo modulo dopo la calibrazione colore, in modo tale da partire da un’immagine di input neutrale e bilanciata sul bianco. Notare che anche incrementare il contrasto locale o la nitidezza porterà ad un aumento del contrasto colore e della saturazione, che in genere è una cosa positiva. Siccome che per individuare i margini usa una regolarizzazione basata sulla varianza, è meglio posizionare questo modulo prima di qualsiasi operazione non lineare.
iniziare con i preset
I preset forniti sono stati messi a punto dallo sviluppatore e testati su una gamma di immagini per usi tipici. La via più facile è quella di partire semplicemente da un preset, e di aggiustarlo a seconda delle esigenze:
- if the effect seems too strong, decrease the number of iterations,
- if edge artifacts appear, increase the edge sensitivity,
- if deblurring starts to affect valid blurry parts (bokeh), reduce the radius,
- if deblurring seems correct in bright areas but excessive in dark areas, increase the edges threshold,
- if deblurring clips black pixels, lower the black level correction in exposure module,
- fine-tune the sharpness to your taste.
partire da zero
Le impostazioni predefinite del modulo sono assolutamente neutrali e non faranno nulla alla tua immagine. Lo spirito del modulo è che ciascun ordine interessi le strutture dell’immagine in maniera specifica.
Iniziare con la messa a punto dei parametri di primo ordine (velocità e anisotropia) per avere una versione di base. Quindi regolare il raggio. Questo interesserà strutture più grossolane (sia sfocandole che nitidizzandole). Ricordare che il primo ordine agisce sulle basse frequenze della scala wavelet e segue una direzione parallela o perpendicolare ai gradienti delle basse frequenze.
Successivamente, iniziare a mettere a punto i parametri di secondo ordine (velocità e anisotropia). Anche il second ordine agisce sulle basse frequenze della scala wavelet, ma questa volta segue una direzione parallela o perpendicolare ai gradienti delle alte frequenze, che possono essere sia le direzioni di una massima nitidezza o massimo rumore. Questo può essere usato per ridurre il rumore (usando il secondo ordine in modalità diffusione, con valori positivi) quando hai usato il primo ordine in modalità nitidezza (con valori negativi).
Questi due passaggi possono essere effettuati sull’immagine ingrandita al minimo. Ricordare che, nonostante sia stato messo grande impegno per rendere i risultati visivi dell’algoritmo abbastanza invarianti alla scala, l’anteprima sarà esatta solo ad uno zoom 1:1. In ogni caso, qualsiasi cosa avvenga al livello di pixel (raggio < 2px) non sarà visibile per livelli di zoom minori del 50%.
A questo punto, potresti voler mettere a punto la sensibilità dei margini per prenderti cura degli artefatti sui margini. In teoria, diffondere nella direzione isofota garantisce che la diffusione sia contenuta all’interno dei margini, ma questo non è sufficiente quando sono presenti nell’immagine angoli e forme nitide convesse.
When the edge sensitivity control has been adjusted to produce satisfying results, the image usually becomes quite soft. In most cases it will be necessary, at this point, to increase the number of iterations in order to compensate. This will come with a performance penalty so tread carefully with the performance/quality trade-off depending on your hardware. If you can’t increase the number of iterations, you will have to increase the diffusing speed.
Il passaggio finale è quello di mettere a punto il terzo e il quarto ordine, i quali si occupano delle alte frequenze su ciascuna scala wavelet. Dovrai essere molto più gentile con queste impostazioni rispetto al primo e al secondo ordine, in quanto possono far “esplodere” il rumore molto velocemente.
Il terzo ordine segue la direzione del gradiente o dell’isofota del livello di bassa frequenza, e quindi può essere usato per guidare la diffusione dell’alta frequenza in una direzione che può essere più facilmente legittima rispetto ai margini reali (e meno prona a catturare rumore).
Il quarto ordine segue la direzione del gradiente o dell’isofota del livello delle alte frequenze ed è più probabile che catturi rumore. Diffondere sul quarto ordine è il miglior modo per ridurre il rumore senza interessare troppo la nitidezza, sia come un riduttore di rumore autonomo, o come un passaggio di regolarizzazione all’interno di un processo di rimozione della sfocatura.
utilizzare istanze multiple per la ricostruzione dell’immagine
Il rumore dopo esser stato filtrato potrebbe beneficiare dall’introduzione di un processo di diffusione – questo può essere applicato come un passaggio ulteriore dopo il modulo riduzione del rumore (profilato).
Al contrario, i seguenti problemi ottici potrebbero beneficiare dalla ricostruzione attraversi l’annullamento del processo di diffusione:
- blur introduced by a sensor’s low-pass filter (LPF) and/or anti-aliasing performed by the demosaic module,
- static lens blur,
- haze/fog,
- light diffusion (using a diffuser that is too large), leading to even lighting and lack of local contrast on the subject.
While more than one of these issues can affect the same picture at the same time, it is better to try to fix them separately using multiple instances of the module. When doing so, ensure the issues are corrected from coarse scale to fine scale, and that denoising always happens first. That is, your instances should appear in the following pipe order:
- denoise,
- local contrast enhancement,
- dehaze,
- lens blur correction,
- sensor and demosaic correction.
Partendo dalla scala grossolana la ricostruzione riduce le probabilità di introdurre o incrementare il rumore quando si effettua la ricostruzione a scale più fini. Questo è contro-intuitivo in quanto questi processi non avvengono in questo ordine durante la formazione dell’immagine. Per la stessa ragione, la riduzione del rumore dovrebbe avvenire sempre prima di qualsiasi tentativo di nitidizzare o di incrementare l’acutanza.
note e avvertimenti
Sebbene questo modulo sia stato progettato per essere invariante alla scala, il suo output può essere garantito soltanto al 100% dello zoom ad alta qualità o esportato a dimensioni massime. A livelli minori di zoom o di dimensioni di esportazione, i risultati potrebbero non soddisfare le tue aspettative.
Quando si sta configurando l’algoritmo di riduzione della sfocatura, tenta di tenere a mente che le più grandi immagini nella storia della fotografia sono state scattate con obiettivi la cui nitidezza non è minimamente comparabile con quella di cui disponiamo oggi. Nonostante la tendenza odierna di costruire e vendere obiettivi di crescente nitidezza, e di avere software che applica quantità folli di nitidezza ulteriore, questa moda non conduce ad una migliore arte figurativa, e rende il processo di ritocco più noioso. Il fuoco morbido (flou) e un pizzico di sfocatura hanno anche qualche merito poetico, cosa in cui falliscono le immagini in alta definizione sterilizzate chirurgicamente.
Si dovrebbe notare che anche il contrasto globale (usando la semplice curva tono o i livelli di bianco/nero) influenza la nostra percezione di nitidezza, che è molto differente dalla nitidezza ottica (risoluzione ottica). Gli occhi umano sono sensibili soltanto al contrasto locale, il quale può venire tanto dalla nitidezza ottica (es. assenza di diffusione – margini sottili) tanto da una transizione tonale amplificata. Se è attiva qualsiasi mappatura globale dei toni per incrementare il contrasto, l’immagine sembrerà più nitida. Se la mappatura tonale è usata per diminuire il contrasto, l’immagine sembrerà più sfocata. In nessuno dei due casi vengono influenzati i margini reali degli oggetti, e le conseguenze percettive sono pura illusione.
La perdita della vista è parte del processo di invecchiamento. La quantità di nitidezza che gli ultracinquantenni trovano gradevole potrebbe non essere la stessa per i ventenni. Vale la pena di considerare la nitidezza al fine ottenere un risultato plausibile (che corrisponda la percezione del quotidiano) piuttosto che un risultato gradevole (che potrebbe apparire buono solo alle persone con una vista equiparabile alla vostra).
Ultimo, stimare la nitidezza delle immagini zoomando fino a 1:1 (100%) o più è una sciocca attività. Nei musei, nelle mostre e anche sullo schermo, il pubblico general guarda alle immagini per intero, non con la lente d’ingrandimento. In più, nelle applicazioni pratiche, le fotografie eccedono raramente la risoluzione di 3000x2000 pixel (grosso modo una stampa a 300 DPI su un foglio A4) il quale, per un sensore di 24 Mpx, significa rimpicciolire di un fattore 4. Quando si esamina un file di 24 Mpx a 1:1, si sta guardando ad un’immagine che non esisterà mai. Rendere nitido a livello di pixel, in questo contesto, è uno spreco di tempo e di cicli di CPU.