Sharpening: in quale metodo colore?

Una domanda post-corso

Ho ricevuto una mail da Simone Sirgiovanni, uno dei partecipanti al CCC di Milano svoltosi poco meno di un mese fa. La domanda postami da Simone è d’interesse generale, e con il suo permesso ho ritenuto che fosse meglio rispondergli pubblicamente qui sul blog piuttosto che in privato: il presente articolo nasce da questo.

Nel corso ho parlato di sharpening, ovvero di maschera di contrasto. Una tecnica assai funzionale e di realizzazione non particolarmente impegnativa è quella che amichevolmente denominiamo la mazzetta di Davide Barranca. Simone mi chiede, in sostanza, se questa tecnica che nasce in RGB è estendibile agli altri metodi colore e semmai con quali accorgimenti. Prima d’iniziare vorrei segnalare che proprio Davide ha recentemente pubblicato uno script per Photoshop denominato Double USM, che compie un notevole passo in avanti rispetto alla tecnica standard introducendo la possibilità d’impostare indipendentemente l’uno dall’altro il raggio degli aloni scuri e chiari che generano la maschera di contrasto. Vorrei scriverne con calma, prima o poi, ma mi sembra opportuno citarne almeno l’esistenza in questa occasione.

Qui di seguito, invece, le domande di Simone e i miei commenti – annotati sul volo di ritorno da Napoli oggi pomeriggio!

Perché RGB non è uno spazio ottimale per lo sharpening?

Ci hai spiegato il funzionamento della Mazzetta di Barranca (la uso nel 90% dei casi e regala effettivamente grandi soddisfazioni) che funziona in RGB, ma ci hai anche detto che RGB è paradossalmente il metodo peggiore per lo sharpening se non sbaglio.

L’affermazione è corretta e si può dimostrare facilmente. Andiamo però in ordine: ricordo a chi non lo sapesse cos’è la “mazzetta”. Il riferimento non è a un versamento in denaro di chiara natura illegale, bensì allo strumento universale caro al muratore, che può servire a diversi scopi. Davide Barranca la propone come una manovra elementare e abbastanza universale di sharpening, nel senso che funziona piuttosto bene su un’elevata percentuale d’immagini ed è così ripetitiva che si può facilmente codificarla in un’azione. La procedura è la seguente, in RGB, partendo dal presupposto che abbiamo un documento con un unico livello; se così non fosse, il processo si può facilmente adattare.

  1. Duplicare il livello di sfondo.
  2. Sul livello duplicato, applicare il filtro Nitidezza -> Maschera di contrasto… con parametri Fattore: 500, Raggio: 1, Soglia: 0.
  3. Modificare il metodo di fusione del livello in questione in: Luminosità.
  4. A questo livello applicare (con Immagine -> Applica Immagine…) il livello di sfondo in metodo di fusione Scurisci, opacità al 50%.
  5. Sempre su questo livello, creare una maschera di livello e applicare a essa il composito RGB dallo sfondo, invertito.

La mazzetta è tutta qui, ma vorrei sottolineare due cose. La prima è che il passaggio 4 serve per mitigare l’effetto degli aloni chiari, che è quasi sempre più fastidioso, percettivamente, di quello degli aloni scuri. Il passaggio è equivalente alla duplicazione del livello con lo sharpening (ce ne sono quindi tre in totale: lo sfondo e due livelli identici con la maschera di contrasto), laddove i due livelli vengano posti rispettivamente in metodo di fusione Schiarisci al 50% di opacità e Scurisci al 100% di opacità, e poi raccolti in un gruppo il cui metodo di fusione viene impostato su Luminosità. La seconda è che il passaggio 5 serve a limitare l’azione dello sharpening alle aree più scure, inibendolo progressivamente in quelle più chiare – la funzione della luminosità invertita nella maschera di contrasto è esattamente quella.

Un originale e tre realizzazioni diverse della maschera di contrasto (cliccare per in grandire – dettagli nel testo).
Un originale e tre realizzazioni diverse della maschera di contrasto (cliccare per ingrandire – dettagli nel testo).

RGB è il metodo colore peggiore per lo sharpening perché le manovre che creano la maschera di contrasto inducono degli shift cromatici significativi: non solo quando si agisce su un solo canale ma anche quando si agisce sul composito, ovvero su tutti e tre i canali contemporaneamente. Qui a fianco è possibile verificare cosa succede quando si applica una maschera di contrasto, in questo caso ridicolmente spinta per esasperare il problema. I guai si manifestano in particolare in presenza di colori molto saturi. Dall’alto verso il basso: l’originale; una versione con il filtro Maschera di contrasto (parametri: 500, 10, 0) applicato al composito RGB; la stessa in metodo di fusione Luminosità, per rimuovere i colori estranei creati dagli aloni; la stessa maschera di contrasto applicata al solo canale L di Lab. La tecnica per evitare gli spostamenti cromatici causati dal filtro consiste, appunto, nel porre il livello su cui è stata effettuata la maschera di contrasto in metodo di fusione Luminosità. Questo però genera un problema, in RGB: il colore in corrispondenza degli aloni può cambiare comunque significativamente (in particolare la sua saturazione) perché in RGB è impossibile avere un colore molto luminoso e contemporaneamente molto saturo, così come è impossibile averlo molto scuro e molto saturo. Attenzione però: mi riferisco alla saturazione percepita, perché la triade 0R1G0B, ad esempio, che è a tutti gli effetti un nero, ha la stessa identica saturazione teorica di 0R255G0B. Potete comunque notare l’effetto indesiderato nella terza immagine dall’alto: gli aloni chiari sul giallo del semaforo sono diventati praticamente bianchi, ma avrebbero dovuto conservare il loro colore. Gli aloni, molto chiari o molto scuri, bruciano per così dire il colore del livello sottostante, e in RGB questo non si può evitare. Non sto sostenendo che non si debba fare una manovra di sharpening in RGB, ovviamente: è però un dato di fatto che a parità di condizioni altri metodi colore, Lab in particolare, siano più gentili su alcune caratteristiche dell’immagine. La quarta immagine ne è la prova: effettuando la maschera di contrasto in Lab soltanto sul canale L il problema non si manifesta e la leggibilità dell’immagine è innegabilmente migliore. Questo accade perché in corrispondenza degli aloni si creano dei colori impossibili (l’alone, in Lab, misura qualcosa come 100L22a43b) che vengono poi re-interpretati da Photoshop come colori visibili, evitando in questo modo la desaturazione pressoché totale che avviene in RGB.

CMYK

Detto questo, vediamo che lo sharpening funziona decisamente meglio in CMYK (sul canale del nero) e Lab (sul canale della luminosità). Chiede Simone:

Non ricordo però se ci hai spiegato come applicarla nello specifico in questi metodi. Ragionando sul fatto che siamo negativamente più sensibili al dettaglio nelle luci piuttosto che nelle ombre qual’è secondo te la miglior applicazione di USM in Lab e CMYK?

Non suggerirei, a meno che non sia opportuno o necessario farlo per altri motivi, di migrare a Lab e tantomeno a CMYK soltanto per applicare una maschera di contrasto. Parto dal secondo metodo, che è per certi versi più semplice. Se dobbiamo fare una conversione in CMYK significa probabilmente che il nostro output è tipografico, e ci sono elevate probabilità che il canale del nero ci offra una base di partenza assai buona per realizzare una maschera di contrasto. Il fatto che buona parte del dettaglio delle immagini con una gamma tonale sensata migri normalmente in K è uno dei primi bonus – perché questo già crea un ambiente naturalmente adatto per l’operazione. Il fatto che le manipolazioni del canale del nero non cambino in pratica il colore dell’immagine è il secondo bonus. Nella mia esperienza il canale del nero funziona spesso benissimo per lo sharpening tradizionale, meno per quello HiRaLoAm che va però considerato come una tecnica a sé. In generale, considero lo sharpening HiRaLoAm così diverso nei suoi effetti che converrebbe trattarlo a parte in ogni caso.

Il problema della maschera di contrasto in CMYK può essere legato alla presenza di estese aree scure nell’originale: se dobbiamo applicare la maschera di contrasto a un ritratto in cui il modello o la modella hanno il vestito molto scuro, quell’area sarà certamente assai densa nel canale K in qualsiasi separazione CMYK degna di questo nome. La maschera di contrasto aggredirà quindi quell’area enfatizzando rumore e artefatti che forse preferiremmo evitare. In questo caso, una maschera di livello per frenare l’effetto è praticamente d’obbligo. A volte anche il parametro Soglia può aiutare, se l’area a rischio è sufficientemente omogenea.

Non suggerirei però di applicare la barranchiana mazzetta in CMYK e soprattutto al composito: è possibile in linea di principio ma a mio parere poco sensato in pratica, anche perché si verrebbe a perdere il vantaggio principale di questo metodo colore, che è quello di specializzare lo sharpening sul nero e sul canale debole (il più chiaro nel soggetto), se necessario. Se proprio vogliamo farlo, comunque, si può fare: il risultato è quasi identico a quello che si ottiene in RGB. Ci si può aspettare marginalmente meno rumore cromatico, in CMYK, e una maggiore chiusura nelle ombre. Sottolineo: marginalmente.

Lab

Il discorso per Lab è diverso. Lo sharpening va fatto solo sul canale L, perché in a e b produce shift cromatici enormi. Ci sono delle tecniche HiRaLoAm che si applicano ai canali a e b e che possono fare letteralmente miracoli su certe immagini, ma non ho mai trovato un’immagine in cui lo sharpening tradizionale faccia qualcosa di buono e irrinunciabile quando viene applicato a questi canali; nel migliore dei casi, non si nota alcun effetto a scale di osservazione ragionevoli. Detto questo, va aggiunto che la mazzetta non si può applicare in maniera diretta perché in Lab non esistono i metodi di fusione Scurisci e Schiarisci.

Ad istinto partirei sempre con un 500-1-0 per avere un default di base e terrei buono il principio della maschera con composito invertito per frenare i dettagli nelle luci, ma per quanto riguarda l’applicazione del composito in darken al 50% (per troncare metà degli aloni chiari) quale potrebbe essere la mossa sostitutiva per esempio in Lab?

Il parametro indicato va bene, se preso cum grano salis. È molto dipendente dalla natura e anche dalla dimensione dell’immagine: un file piccolo richiederà un raggio più basso, uno immenso un raggio un po’ più elevato; questo vale in Lab così come in RGB. Come ho scritto sopra, però, il problema è che non esistono i metodi di fusione che ci servono. Esistono però i metodi di fusione Colore più chiaro e Colore più scuro, che sono disponibili in Lab (come in RGB) e sono a volte trascurati e forse non ben compresi. Vorrei per questo fare un esempio di come funzionano.

Supponiamo di avere un documento e di creare un livello che riempiremo, tanto per fissare le idee, con grigio 50% in RGB, ovvero 128R128G128B. Supponiamo ora che un certo pixel nel livello sottostante abbia coordinate 120R130G140B. Se modifico il metodo di fusione del livello grigio in Schiarisci, il risultato sarà 128R130G140B, perché questo metodo di fusione agisce canale per canale. In pratica, confronta il valore del livello corrente con ciò che sta sotto, in ciascun canale, e se il livello corrente è più chiaro opera la sostituzione – altrimenti no. Nel nostro caso, 128 è più chiaro solo di 120 (canale R), e pertanto solo quel canale viene modificato. Allo stesso modo, in Scurisci, il risultato sarà 120R128G128B, con identico ragionamento. I metodi di fusione Colore più chiaro e Colore più scuro si comportano diversamente: in entrambi i casi, lo stesso livello grigio lascia invariato il livello sottostante perché la fusione avviene solo nel caso in cui tutti e tre i canali del livello corrente siano più chiari o più scuri, e non soltanto uno.

Attenzione: questo vale in RGB, ma non in Lab. In Lab la struttura stessa dei canali impedisce questo genere di confronto, perché se esso ha senso per L, non ha alcun senso per a e b. Essendo canali esclusivamente cromatici, non portano alcuna informazione sulla luminosità e quindi non possono rappresentare un colore “più chiaro” o “più scuro”; possono solo rappresentare un colore diverso per tinta e saturazione, ma nient’altro. In Lab, quindi, i due metodi di fusione funzionano in maniera molto semplice: esattamente come Schiarisci e Scurisci ma tenendo conto del valore del solo canale L. Questo suggerisce si può applicare la ricetta per la mazzetta, con due sole modifiche: primo, lo sharpening va effettuato solo sul canale L; secondo, il metodo di fusione per l’applicazione dello sfondo dev’essere Colore più scuro, sempre al 50%. Non serve neppure cambiare il metodo di fusione del livello in Luminosità, perché stiamo già agendo soltanto su L.

Un bug nascosto in Photoshop

Questo argomento mi dà l’occasione anche per segnalare un curioso bug di Photoshop, certamente presente in CS6, non so nelle versioni precedenti (personalmente l’ho riscontrato pochissimi mesi fa). Se provate a convertire un’immagine in Scala di grigio, i metodi di fusione Colore più chiaro e Colore più scuro non sono abilitati, perché in presenza di un canale solo sarebbero dei duplicati di Schiarisci e Scurisci. Questo è assolutamente sensato. Succede però che un canale sia un’immagine in scala di grigio: se lo selezionate e provate ad applicare qualcosa, dovreste aspettarvi di trovare i due metodi di fusione disabilitati anche nel menu di Applica immagine. Invece no: sono presenti, e il bug è che non funzionano come Schiarisci e Scurisci, ma come Normale. Ovvero, applicando un canale a un altro in metodo di fusione Colore più scuro o Colore più chiaro al 100% si sostituisce completamente la destinazione. Attenzione, quindi, soprattutto se realizzate qualche strana Azione con questi metodi di fusione – potreste non capire perché le cose non funzionano come vi aspettate.

Conclusioni

La ricetta è semplice e si può riassumere in alcuni punti.

  1. RGB non è il miglior spazio colore per lo sharpening, ma non è neppure così disastroso da doverlo evitare. Se il flusso di lavoro è interamente RGB, conviene realizzare la maschera di contrasto senza convertire in altri spazi colore.
  2. Se l’output finale è CMYK, la maschera di contrasto dovrebbe essere realizzata sul canale del nero e, all’occorrenza, sul canale debole, ovvero quello in cui il soggetto è più chiaro.
  3. Se passate per Lab e non siete diretti in CMYK, conviene realizzare la maschera di contrasto sul solo canale L. Se invece andrete comunque in CMYK, considerate la possibilità di fare lo sharpening in tale spazio.
  4. La mazzetta di Davide Barranca funziona in RGB come in CMYK e in Lab. In CMYK è poco raccomandata, mentre in Lab si fa tranquillamente – con le due avvertenze contenute in questo articolo.
  5. Ricordate in generale che il problema degli artefatti di sharpening diventa particolarmente annoso a raggio elevato, ovvero nello sharpening HiRaLoAm. A raggio basso anche gli spostamenti cromatici sono di norma poco significativi, perché estremamente ridotti in dimensione, quindi la differenza tra RGB e Lab è probabilmente poco rilevante.

Grazie per la consueta attenzione e a presto!
MO

12 pensieri su “Sharpening: in quale metodo colore?”

  1. Bravissimo Marco, ottimo compendio!
    In quanto titolare della Ferramenta Barranca, distributrice autorizzata dell’omonima mazzetta, mi permetto di suggerire a margine e in ordine sparso:
    1. In CMYK si può tentare una mazzetta sul composito e poi, doppiocliccando sul livello (si aprono le Advanced Blending Options), spuntare via i canali C,M,Y lasciando solo K – che è come dire fare sharpening solo sul nero. Oppure tenere K e canale debole (quale che sia).
    2. Con lo stesso concetto, si possono fare due mazzette a raggio/quantità diverse e poi spuntare uno o l’altro canale (in modo da avere, che so, il K con certi valori ed il canale debole con altri).
    3. La faccenda delle Advanced Blending Options vale anche per il Colore più scuro in Lab (ovvero è equivalente lavorare sul composito e poi tenere spuntata solo la L).
    4. Per chi volesse entrare nei meandri della Ferramenta (in particolare dello studio che sta alla base di Double USM): http://bitly.com/bundles/undavide/1

    1. Giuste osservazioni, Davide – soprattutto sulle ABO (Advanced Blending Options). Grazie!
      Una cosa che aggiungerei è che il canale K fa storia a sé, nel senso che è molto diverso da CMY, e in larga parte si auto-confina e non necessita di maschera di livello basata sulla luminosità invertita, a differenza degli altri. Anzi: una maschera di livello può ridurre eccessivamente il suo effetto, che di solito, percettivamente è accettabile così come sta. In un contesto di prestampa standard, la famosa formula 500-1-0 su K spesso ha un aspetto atroce se si guarda solo quel canale, ma è invece assai appropriato quando si riattivano gli altri canali.
      La cosa importante, alla fine, è sempre quella: che si produca ferramenta, e non ferraglia… 🙂

  2. Sempre grazie per questi chiarimenti/insegnamenti che ci tolgono, per restare in tema, la ruggine. Grazie anche alla Premiata Ferramenta di Caselle, lo script a me piace tantissimo, nel senso che nel lavoro mi aiuta sempre molto. Volevo ribadire i miei ringraziamenti, per sottolineare il fatto che i vostri post ed insegnamenti, almeno personalmente, hanno un grande valore, e non voglio che passino come scontati o in qualche modo dovuti. Per cui, grazie 100000…

  3. Mi associo anch’io nel ringraziare per aver reso disponibile a tutti il ragionamento, come sempre molto ma molto interessante. Argomento complesso ma da tenere ben presente per fotoamatori come me.
    Esiste una relazione tra rumore e sharpening? Rilevo questo poiché spesso emerge in alcune discussioni sull’argomento, oppure si confondono in quello che tu definisci “shift cromatici” .
    Grazie

    1. Grazie Giuseppe!
      La relazione esiste ed è talvolta assai dolorosa. Lo sharpening indiscriminato fa emergere il rumore, questo è poco ma sicuro. Quanto questo sia invadente in pratica è legato sia alla natura dell’immagine su cui si lavora che a questioni percettive, ovvero quanto siamo sensibili al rumore in certe aree di luminosità e via dicendo. L’antidoto non è unico: si può pensare di rimuovere il rumore a priori e poi applicare uno sharpening molto cauto – ma come farlo è una questione abbastanza aperta e non credo che si possa trovare una ricetta universale. Nel caso di immagini eccezionalmente rumorose a volte bisogna rinunciare allo sharpening, o andarci così cauti che in pratica l’effetto è marginale. Si può relegare lo sharpening ai soli bordi con una maschera ottenuta con un filtro Trova bordi, oppure mascherare (anche a mano, se serve) le aree dove gli effetti sono più nefasti, che tipicamente sono quelle di luminosità e colore omogenei, perché un’area con grande variazione tonale tende a nascondere il rumore più di un’area relativamente piatta. Ancora, si può pensare di concentrare manualmente lo sharpening nelle aree veramente importanti (ad esempio, in un ritratto, gli occhi, le labbra e via dicendo). Nel mio videocorso sullo sharpening per Teacher-in-a-Box ho affrontato il problema cercando di dare almeno alcune linee guida – ma, come ripeto, non sono univoche.
      Suggerirei però una cosa: ho visto con i miei occhi persone guardare delle stampe gigantesche da dieci centimetri di distanza e sentenziare “eh, c’è rumore”. Questo, dal mio punto di vista, non ha senso: una stampa di 1 x 2 metri è pensata per essere vista da una distanza leggermente superiore ai dieci centimetri, ed è da quella distanza che andrebbe valutata tecnicamente. Il rumore, in forma di grana, c’era anche ai tempi della pellicola, ma la soglia di tolleranza psicologica è andata praticamente a zero in base all’assunto (falso) che “digitale” sia sinonimo di “pulito”. Ovvero, combattiamo pure il rumore, ma facciamolo con un minimo di criterio e tenendo presente quale sia l’effettiva fruizione ottimale di ciò che stampiamo, proiettiamo e pubblichiamo sul web.

  4. Ottimo articolo, argomento spiegato in maniera “cristallina”.
    Visto che si parla di spazi colore vorrei porre una domanda probabilmente stupida: In quale spazio colore RGB è meglio lavorare? sRGB o Adobe RGB?
    In rete si trovano solo articoli superficiali (meglio Adobe RGB perchè più ampio) o trattati da ciarlatani

    1. Gianbattista, il problema non è tanto che gli articoli siano superficiali o che chi li scrive non ne abbia le competenze: la materia è complessa e non c’è un accordo generale su quale sia lo spazio ottimale di lavoro.
      Io posso darti la mia personale posizione, ma non prenderla per vangelo, perché non c’è un vangelo in questo campo. Gli spazi tra cui ha senso scegliere sono tre: sRGB, Adobe RGB, ProPhoto RGB. Dal mio punto di vista il primo è una scelta obbligata se le immagini sono destinate al web; non dico che convenga fare tutto in quello spazio, ma che una conversione prima della pubblicazione è obbligatoria perché diversi browser non riconoscono i profili a dovere. Una scuola di pensiero abbastanza forte sostiene (a ragione) che ProPhoto è la scelta ottimale perché ha il gamut più ampio; questo per me è vero a livello teorico, però, perché ProPhoto tra i tanti pregi ha anche qualche problema, non ultimo quello di suggerire un flusso di lavoro a 16 bit per evitare posterizzazioni in post-produzione che, a causa del suo gamut, sono abbastanza facili. Come spazio “di tutti i giorni” io utilizzo Adobe RGB, che per me è un buon compromesso tra il “piccolo” sRGB e l’immenso ProPhoto RGB. In realtà la cosa sensata da fare è scegliere uno spazio ed essere pronti a cambiarlo, anche immagine per immagine, se se ne sente la necessità. Questo, naturalmente, se scatti in RAW, visto che lo spazio colore viene definito al momento dello sviluppo. Se invece sei legato allo scatto in JPEG io sceglierei Adobe RGB, ma in certi flussi di lavoro che ho visto anche sRGB era una scelta assai sensata e, di fatto, l’unica possibile in pratica. La questione rimane aperta, pertanto…

      Grazie e a presto!

  5. Grazie della spiegazione, solo un dubbio sui passaggi 4 e 5 della “mazzetta”, sono un amante della fotografia ma non molto della post:
    4: Applica Immagine va eseguito sul livello copiato giusto?
    5: cosa significa applicare un composite RGB sulla maschera di livello? Immagino sul livello copiato vada creata una maschera di livello ed applicare questa regolazione sulla maschera stessa. Puoi spiegarlo meglio? Grazie.
    Saluti

    1. Ciao Mauro, scusa il ritardo con cui ti rispondo.
      Nell’ordine: sì. Sul livello duplicato e poi sottoposto a sharpening.
      Il composito RGB è semplicemente la luminosità. Quando utilizzi Applica immagine hai la possibilità di scegliere tra tutti i canali disponibili. Il primo, denominato RGB, è un’immagine in scala di grigio costruita (approssimativamente) con 30% di R, 60% di G, 10% di B. In ogni caso, sì: sul livello copiato crei una maschera di livello e applichi RGB, ovvero la luminosità, dallo sfondo. Naturalmente, invertita, come scritto al punto 5.
      A presto e grazie!

  6. Grazie,
    solo un dubbio. Sull’ultimo passaggio quando sul livello copiato crei una maschera di livello e applichi il CANALE RGB invertito.
    In tal caso la fusione la lasci NORMALE o SCURISCI come il passaggio precedente.
    Grazie a te del contributo!

    1. Ufficialmente il metodo di fusione è Normale; in realtà in questo caso, se si lavora su una maschera creata bianca, è irrilevante. Il metodo di fusione Scurisci mantiene le aree che sono più scure tra ciò che viene applicato e il contenuto dell’area in cui avviene l’applicazione. Siccome la maschera è bianca, il canale RGB sarà sempre più scuro (o uguale) della destinazione. Quindi Scurisci funziona come Normale in un caso come questo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *