Per spiegarvi il problema che vorrei risolvere considerate l'immagine seguente. È molto semplicemente costituita da due strisce in cui i toni oscillano tra bianco e nero; evidentemente nella striscia di sopra la "frequenza" [1] di oscillazione è più alta, dato che nella lunghezza orizzontale di spazio occupato dall'immagine si realizzano piú oscillazioni, nella striscia di sotto la frequenza é piú bassa perché viceversa si realizzano meno oscillazioni. E, per essere esatti, ci aspettiamo che la frequenza dell'oscillazione della parte di sopra dell'immagine sia 10 volte maggiore di quella della parte inferiore dato che nello spazio di una singola oscillazione (di sotto) si realizzano 10 oscillazioni di sopra.
Dovrebbe essere abbastanza immediato capire che la possibilità di lavorare separatamente su dettagli/colori della parte di sopra dell'immagine non si risolve nella stessa maniera del problema di lavorare su dettagli/colori della parte di sotto. Se provate con la metodologia di separazione delle frequenze presentata nel post precedente vi accorgerete che i dettagli della parte di sopra dell'immagine scompaiono grazie ad un filtro gaussiano con un raggio molto più piccolo di quello necessario a far scomparire anche il dettaglio dalla parte inferiore dell'immagine.
In effetti con l'immagine originale - le cui dimensioni sono 1000x200 pixel - una sfocatura gaussiana con raggio di 5 pixel è sufficiente a far scomparire ogni dettaglio nella parte superiore, mentre ce ne vuole uno con raggio di circa 50 pixel per far scomparire anche i dettagli della parte inferiore.
Questo esempio dovrebbe rendere chiaro cosa significhi affermare che in un immagine reale - che è molto più complessa di quella che stiamo usando - compaiono moltissime frequenze che corrispondono a variazioni tonali che avvengono su scale diverse nell'immagine. Ma vediamo questo aspetto in dettaglio, operando sull'immagine originale due diverse separazioni delle frequenze, scegliendo appunto raggi di sfocatura di 5 o di 50 pixel.
Dall'alto in basso: livelli contenenenti le alte o basse frequenze ottenute con una sfocatura di 5 pixel (prime due immagini) o di 50 pixel (seconde due immagini)
Proviamo a leggere questa serie di immagini, partendo dal basso: qui troviamo il risultato delle basse frequenze per la sfocatura gaussiana con raggio di 50 pixel, ovvero tutta quella parte dell'immagine (che varia) su scale spaziali maggiori dei 50 pixel, che corrisponde in questo caso ad un grigio medio sostanzialmente uniforme.
Tornerò tra un attimo sulla descrizione dell'immagine. Fermiamoci un secondo a ragionare sulla relazione tra il raggio a cui si effetua una sfocatura e la separazione di frequenze che se ne ottiene: evidentemente fissare un raggio di sfocatura individua anche una corrispondente frequenza, tanto è vero che realizzata una certa sfocatura ci ritroviamo con due livelli, uno contenente le alte frequenze, l'altro con quelle basse. Ma "alte" o "basse" rispetto a cosa? Naturalmente rispetto a quella frequenza che è stata individuata nel momento in cui abbiamo scelto un ben preciso raggio di sfocatura. Come vi ho detto si tratta di una dicitura piuttosto scorretta poiché il termine "frequenze" si riferisce normalmente a fenomeni che variano nel tempo (e non, come nel nostro caso, nel tempo), ma continuiamo ad usarlo visto che nel campo fotografico è ormai usuale.
Dobbiamo rispondere a questa domanda: dato un certo raggio (a cui effettureremo la sfocatura), come questo individua una precisa 'frequenza'? È in realtà molto semplice. Individuare un certo raggio significa poter 'separare' le variazioni tonali dell'immagine tra quelle che avvengono su una scala di distanze maggiore (di quel raggio) o minore. E naturalmente quei toni che variano su scale di distanze maggiori di quella che abbiamo scelto si troveranno a variare più lentamente cioè dovranno corrispondere a frequenze più basse, e viceversa.
Alte frequenza <------> variazioni rapide, al di sotto del raggio di sfocatura scelto
Basse frequenze <-----> variazioni lente, al di sopra del raggio di sfocatura scelto
Ciò induce naturalmente a pensare che la relazione tra distanze e frequenze sia una relazione di proporzionalità inversa, ovvero che sia f = C / r, dove C sarà una opportuna costante. Se ci pensate solo un attimo adesso tutto torna. Se cresce il raggio di separazione diminuisce la frequenza corrispondente: perché naturalmente se scelgo un raggio maggiore separerò quelle variazioni tonali che avvengono ancora più lentamente, ovvero su scale spaziali più lunghe. Non ci servirà sapere quale sia tale costante (e tanto meno che dimensioni abbia visto che ci portiamo dietro questa confusione tra tempi e spazi cui ho più volte accennato), però ci serve la notazione che deriva da questo ragionamento e quindi usiamo semplicemente f = 1 / r.
Allora se scelgo ad esempio un raggio di 5 pixel avrò individuato la frequenza 1/5 [3] e le alte frequenze saranno quelle maggiori (numericamente) di 1/5. Se scelgo una raggio più piccolo, ad esempio 2 pixel, avremo frequenze ancora più alte, ed in effetti 1/2 è più grande di 1/5.
Come vedete tutto torna.
Ritorniamo sull'ultima immagine in basso. Come già detto corrisponde alle basse frequenze ed ora sappiamo che ciò si deve interpretare come f < 1/50
C'era da aspettarsi che a frequenze così basse ci fosse un tono di grigio uniforme: l'immagine di partenza non conteneva colori ed era costituita da un'alternanza regolare di oscillazioni tonali dal nero al bianco. Ed il raggio della sfocatura (che corrisponde alla frequenza di separazione) é stato scelto appositamente per far scomparire anche i dettagli più lenti a variare. Il grigio infine è medio perché nell'immagine di partenza tutte le oscillazioni avvengono e sono simmetriche rispetto a tale tono.
Subito sopra troviamo il livello con i dettagli a frequenze maggiori f > 1/50, che naturalmente sono tutti i dettagli dell'immagine originale.
Salendo ancora, al secondo posto troviamo l'immagine che contiene le frequenze f < 1/5: qui trovate quasi tutto il dettaglio piú lento a variare e (sopra) una striscia uniforme di grigio medio, poiché con taglio a 5 pixel di raggio i dettagli piú rapidi a variare sono scomparsi dalle basse frequenze, ma non i dettagli piú lenti della parte inferiore dell'immagine.
Infine nell'immagine sopra a tutte trovate le frequenze maggiori di 1/5 che corripsondono solo alle oscillazioni piú rapide della parte superiore dell'immagine: infatti nella parte superiore della prima immagine trovate tutti i dettagli della parte a rapida variazione dell'immagine originale, mentre nella parte inferiore trovate un tono medio. Quest'ultima particolaritá forse non é cosí ovvia: se con il taglio a 5 pixel manteniamo i dettagli piú lenti a variare nel livello delle basse frequenze (seconda immagine dall'alto), questi non potranno comparire nel livello delle alte frequenze.
Vi consiglio di passare un po' di tempo a pensare a quanto appena detto perché confondersi é facile. Riassumo in altro modo. Vi ho mostrato due separazioni delle frequenze una (le prime due immagini) con il raggio della sfocatura gaussiana a 5 pixel, l'altra (le seconde due immagini) con una sfocatura di raggio 50 pixel. Nel primo caso, con dizione orrenda lo ammetto, le frequenze alte si riferiscono a variazioni tonali che avvengono in uno spazio minore di 5 pixel, mentre le frequenze basse si riferiscono a variazioni tonali che avvengono su scale spaziali maggiori dei 5 pixel. Nella seconda separazione - quella con raggio di sfocatura di 50 pixel - le alte frequenze si riferiscono a ció che avviene (o meglio, varia) su una scala spaziale al di sotto dei 50 pixel, quelle basse a ció che avviene al di sopra.
Capite bene che qui - in nuce - c'é pronto l'algoritmo che stavamo cercando: se dal livello che contiene le frequenze da 50 in su (ovvero il livello con le frequenze con f > 1/50) sottraiamo il livello che contiene quelle da 5 in su, cosa ci rimane? Naturalmente le frequenze tra 5 e 50.
Provare per credere. Supponiamo di voler separare tre gruppi di frequenze, scegliendo due raggi di riferimento, ad esempio 5 e 50 pixel. Allora duplichiamo 3 volte l'immagine di partenza, dato che alla fine vorremo avere un livello con le alte frequenze (f > 1/5), un livello con le frequeze intermedie ( 1/50 < f < 1/5 ) ed infine uno con le frequenze lunghe ( f < 1/50 )
Nel livello piú in alto dovranno rimanere le "altissime frequenze", quindi procediamo come al solito: rendiamo non attivo il livello piú alto dopo averlo rinominato ad esempio "f > 1/5" per ricordarcelo. Sul secondo livello applichiamo una sfocatura gaussiana con raggio di 5 pixel. Quindi applichiamo il secondo livello su quello piú in alto in modalitá "Sottrai" come al solito con offset 128 e scala a 2. Mettiamo il livello "f > 1/5" in modo "Luce lineare". Notate che si ricostruisce l'immagine originale: questa è la consueta separazione delle frequenze rispetto ad un raggio di 5 pixel (o ad una frequenza di 1/5)
Ora dal secondo livello che contiene le frequenze f < 1/5, dovremmo sottrarre le frequenze ancora piú lente per ottenere le frequenze tra 1/5 e 1/50. Rinominiamo il secondo livello "1/50 < f < 1/5" per memoria. Quindi rendiamolo inattivo e applicchiamo un filtro di sfocatura gaussiana con raggio di 50 pixel al terzo livello. Applichiamo questo terzo livello sul secondo con modalitá "Sottrai" come al solito con offset 128 e scala a 2. Così abbiamo sottratto dal secondo livello le frequenze più basse di 1/50 ed esso conteneva per conto suo già solo quelle f<1/5. Quindi il secondo livello corrisponde al suo nome.
Mettiamo il livello "1/50 < f < 1/5" in modo "Luce lineare" e chiamiamo il terzo livello "f < 1/50" e, naturalmente il gioco é fatto. Abbiamo 3 livelli ciascuno contenente quelle parti dell'immagine originale che variano su scale brevissime, intermedie o lunghe rispetto ai due raggi
(o frequenze) che abbiamo scelto.Naturalmente l'insieme di qyesti 3 livelli ricostuisce l'immagine originale (o quasi come vedremo)
E che sono naturalmente arbitrari.
Prima di andare avanti e capire cosa farcene di questo armamentario, dobbiamo controllare che tutto sia a posto. Allora duplichiamo ancora l'immagine di partenze e portiamola in cima a tutti i livelli in modo di fusione "Differenza": otteniamo apparentemente il nero: sotto all'istogramma troviamo media 0.64 e deviazione standard 0.52. Non male (ricordate che questa é un'immagine semplice) e peraltro sappiamo come correggere, dovremo eventualmente andare a 16 bit.
Non ha molto senso fare qualcosa di piú complicato su di un immagine cosí semplice, ovvero che contiene cosí poche diverse scale di variazione tonale. La doppia striscia da cui siamo partiti contiene in effetti solo due tipologie di oscillazione, quella della parte superiore che avviene alla scala dei 5 pixel e quella della parte inferiore alla scala dei 50 pixel (o, alternativamente, a frequenze di 1/5 e di 1/50): è in altre parolo un'immagine che contiene solo 2 frequenze.
Quindi ne ho scelta una diversa - o se preferite più completa - ed ho provato una separazione a 4 frequenze, scegliendo come raggi di sfocatura 5, 10 e 25 pixel rispettivamente.
Da sinistra a destra e dall'alto in basso: immagine originale, altissime frequenze, frequenze medio-alte, frequenze medio-basse e basse frequenze. (ingrandimento al 66%)
Nel caso di questa immagine - ricordo che la bontà della separazione delle frequenze dipende, se non é effettuata a 16 bit, sia dall'immagine sia dai raggi di separazione scelti - otteniamo una media di 0.99 ed una deviazione standard di 0.97 contro 0.66 e 0.63 rispettivamente nel caso di una "normale" separazione a due frequenze (con raggio, ad esempio, a 10 pixel). Questi numeri ci indicano che proseguire su questa strada senza andare a 16 bit provoca un progressivo degradamento dell'immagine ricostruita.
Ma c'é un altro problema. Non così rilevante a dire il vero, ma lo cito: Photoshop non permette filtri gaussiani con raggio maggiore di 1000 pixel, pertanto il range di frequenze accessibili - nel senso della loro separazione è in qualche modo limitato. Qui vi presento quindi la massima separazione possibile a raggi di 10, 25, 50, 100, 200, 500 e 1000, ovvero a frequenze >1/10, 1/25<F<1/10, 1/50<F<1/25, 1/100<F<1/50, 1/200<F<1/100, 1/500<F<1/200, 1/1000<F<1/500 e F<1/1000
Avendo realizzato questa separazione dopo una conversione a 16 bit si verifica nel solito modo che l'immagine ricostruita ponendo tutti questi livelli tranne l'ultimo in modo di fusione "Luce Lineare" coincide esattamente con l'originale. Avremmo naturalmente potuto scegliere diversi gruppi di frequenze di separazione, anche più cospicui nel numero, ma non avremmo mai potuto andare sopra ad un raggio di 1000 pixel (o sotto ad una frequenza di 1/1000). Non un problema enorme con i sensori odierni, perfino quelli da 50MP, che sul lato lungo ci presentano 6880 px.
Come operare sui livelli a frequenze separate
È innanzitutto opportuno costruire un gruppo che contenga tutti i livelli così creati, in questo caso gli 8 che vi ho mostrato. La seconda cosa da fare è di duplicare ciascuno di questi livelli, dandogli un nome diverso - ad esempio aggiungendo il suffisso "-Edita"e creando su ciascuno una maschera di ritaglio (o clipping mask), e porre tutti i duplicati in metodo di fusione "Normale": così facendo potremo operare su ciascuno senza alterare la separazione delle frequenze ottenuta.
Il modo più semplice di intervenire è quello tradizionale nella separazione delle frequenze per il ritocco del viso: inserire un livello vuoto ad un qualche punto della sequenza (non al di sopra del più alto o al di sotto del più basso se non vogliamo vanificare tutto il lavoro di separazione) e con un pennello molto leggero - con opacità tipicamente tra il 5 ed il 10% - ripassare il colore in qualche zona dove vogliamo modificare il tono, usando un colore molto simile al preesistente. Non dovremo preoccuparci del dettaglio nel fare questa operazione: il dettaglio verrà automaticamente reinserito dai livelli superiori a frequenze elevate.
Nel prossimo post di questa serie andremo più a fondo di come si può utilizzare questa sofisticata separazione delle frequenze.
______
[1] Uso - per l'ultima volta, lo giuro - i doppi apici per sottolineare ancora una volta l'improprietá del termine frequenza in questo contesto.
[2] Uso qui una dizione abbreviata (e, devo dire, molto scorretta) riferendomi con "frequenze maggiori/minori" a quelle rispettivamente corrispondenti a variazioni tonali piú/meno rapide rispetto al taglio scelto usando un certo raggio di sfocatura.
[3] Per i più attenti tra voi noto che il "pixel" è un'unità di misura adimensionata, a differenza di centimetri, metri o pollici, il che ci aiuta a considerare irrilevante la costante C di proporzionalità (inversa) tra raggi e frequenze. Di conseguenza anche le 'frequenze' di cui parliamo saranno adimensionali, coerentemente con tutto quanto fatto finora.
Comments