Un problema di selezione

Pochi giorni fa, esattamente a metà del corso che ho tenuto a Borgonovo Val Tidone, ho ricevuto un messaggio da uno degli allievi del corso di Napoli finito una settimana prima. Mi chiedeva se uno degli esempi da me portati in classe fosse disponibile in forma di dispensa, visto che in quelle che avevo lasciato non c’era. La risposta è no, quindi ho pensato di rimediare scrivendo questo post.

L’immagine che andrò a discutere è stata utilizzata in quasi tutti i miei corsi ed è un esempio piuttosto semplice su come si possano sfruttare i canali a e b di Lab per realizzare delle selezioni. In questo contesto, però, la spiegazione isolata sarebbe piuttosto sterile. Ho pensato quindi di ricollocarla in un discorso più ampio che riguarda l’efficienza delle diverse tecniche di selezione disponibili in Photoshop in un caso come questo. Al fine di evitare un articolo lunghissimo, non discuterò in dettaglio ogni singola opzione, limitandomi a elencare alcune tra le tecniche possibili e a confrontarne i risultati.

Il compito

01_BridesmaidsL’immagine che propongo è nota come “le damigelle” e il compito assegnato è quello di cambiare colore alle gonne. Non si richiede uno specifico colore predefinito: si deve escogitare un sistema che permetta di assegnare virtualmente qualsiasi tinta desideriamo, in tempo reale. Naturalmente un’operazione come questa richiede una selezione, perché va limitata ai soli indumenti. Certe selezioni geometriche sono più o meno immediate e per loro natura isolano i capi che ci interessano; altre sono invece basate sul colore e dobbiamo fare attenzione che gli altri oggetti magenta, come la bandierina sullo sfondo o la cravatta dell’uomo di profilo, non vengano affetti dalla correzione. Anche le unghie delle ragazze sono magenta e vanno escluse dall’operazione.

Tecniche possibili

Ci sono diverse tecniche possibile per selezionare le gonne in Photoshop. A prescindere dalla loro efficienza, tra queste abbiamo:

  1. Strumento bacchetta magica
  2. Strumento selezione rapida
  3. Comando intervallo colori
  4. Realizzazione di una maschera di livello derivata dai canali
  5. Fusione condizionale (“fondi se”)

Non sono le uniche: è possibile anche utilizzare lo strumento penna, in un caso del genere, o la modalità maschera veloce, o ancora la regolazione Sostituisci colore per modificare il colore una tantum, ma esamineremo soltanto quelle indicate. Vediamole in dettaglio.

Bacchetta magica

La Bacchetta magica è uno tra gli strumenti più vituperati di Photoshop perché, per utilizzare un eufemismo, manca di raffinatezza: spesso viene indicato scherzosamente con il nome Bacchetta tragica, con buone ragioni. In un caso come questo però può funzionare. Lo strumento ha un solo parametro che ci interessa realmente, e il suo nome è Tolleranza. Se lo impostiamo a un valore basso, quando andremo a cliccare sull’area che vogliamo selezionare saranno selezionati soltanto pochi pixel perché lo strumento lavora sulla similitudine degli stessi. Se lo impostiamo a un valore più alto, ne saranno selezionati di più perché verranno inclusi anche pixel significativamente diversi tra loro. Al valore massimo (255) tutta l’immagine viene selezionata, dovunque clicchiamo.

In questo caso si potrebbe pensare che le gonne sono così diverse da ciò che le circonda da rendere la selezione molto semplice. Non è così. Una tolleranza pari a circa 100 può produrre una selezione quasi perfetta come questa, se clicchiamo nel punto giusto:

Una selezione con Tolleranza = 100.
Una selezione con Tolleranza = 100.

Ma può produrre anche una selezione più problematica se clicchiamo in un altro punto, che magari ci appare molto simile:

Anche questa selezione è stata effettuata con Tolleranza = 100.
Anche questa selezione è stata effettuata con Tolleranza = 100.

Possiamo sempre aggiungere e sottrarre alla selezione attiva, con Bacchetta magica o con altri strumenti, ma la selezione con un solo click non è affatto banale. Anche ad altri livelli di Tolleranza è difficile calibrare l’intervento. Si procede, in pratica, per tentativi ed errori, e se riusciamo a selezionare con precisione le gonne dopo dieci prove abbiamo in realtà realizzato dieci selezioni, di cui nove errate. L’efficienza è bassa.

Strumento selezione rapida

Questo strumento consente di ottenere in tempi rapidi una selezione migliore. Essenzialmente, funziona come un pennello, soltanto che invece di dipingere seleziona parti dell’immagine. È sufficiente trascinarlo nell’area che si desidera selezionare e le parti delimitate da bordi evidenti vengono selezionate automaticamente. La sensibilità dello strumento è legata alla sua dimensione: più lo strumento è piccolo, più risulta preciso. Non è però sempre ovvio il suo comportamento: e spesso di devono utilizzare le modalità Aggiungi alla selezione o Sottrai dalla selezione per ottenere un risultato perfetto. Quello che si riesce a fare in meno di 30 secondi con questo strumento è questo:

Una selezione ottenuta con lo strumento Selezione rapida, operando a dimensioni diverse.
Una selezione ottenuta con lo strumento Selezione rapida, operando a dimensioni diverse.

La selezione è quasi perfetta, ma guardando da vicino rimangono due piccole aree estranee in corrispondenza delle interfacce tra le due gonne: in pratica, nei “cunei” verticali tra la prima e la seconda ragazza e tra la seconda e la terza. Si possono ritoccare abbastanza facilmente, e questo risultato è buono. Vale inoltre la pena di ricordare che su qualsiasi selezione si può utilizzare il comando Migliora bordo, che offre diverse opzioni per raffinare, appunto, il bordo di una selezione.

Comando intervallo colori

Questo comando si basa su un criterio diverso: cromatico, non geometrico. Essenzialmente, si campiona un colore rilevante nell’immagine con un contagocce al fine di costruire una maschera, come si può vedere in figura.

Il comando Intervallo colori.
Il comando Intervallo colori.

Il parametro Tolleranza funziona, sia pure in un contesto diverso, come nel caso dello strumento bacchetta magica: più è elevato, meno selettiva diventa l’operazione. Attenzione al senso della frase: “meno selettiva” significa in realtà che viene selezionata un’area più ampia, non più ristretta. In sostanza, vengono inclusi nella selezione anche colori piuttosto distanti da quello al quale siamo interessati. È possibile aggiungere alla selezione ulteriori colori, utilizzando il contagocce contrassegnato dal segno “+” disponibile nella finestra dello strumento. A prescindere da questo, qui di seguito sono visibili le maschere generate da due valori diversi di Tolleranza. Notare come nella seconda (Tolleranza = 200) inizino a essere visibilmente selezionate anche aree che non hanno nulla a che fare con il colore che stiamo cercando di isolare.

Due valori diversi di Tolleranza: 140 (dx) e 200 (sx).
Due valori diversi di Tolleranza: 140 (dx) e 200 (sx).

Vale la pena di notare come gli oggetti magenta sullo sfondo vengano immediatamente selezionati dal comando che stiamo usando, proprio perché la selezione non si basa su alcun criterio di tipo geometrico ma soltanto sui valori cromatici.

Nel momento in cui clicchiamo sul pulsante OK, si genera la selezione. Quanto è buona? In apparenza, è perfetta:

La selezione ottenuta con Intervallo colori, campionando diverse aree.
La selezione ottenuta con Intervallo colori, campionando diverse aree.

Se però con questa selezione attiva creiamo una maschera di livello, ci rendiamo conto che permangono delle aree semitrasparenti, e che la selezione andrebbe raffinata perché non seleziona completamente alcuni dei pixel interni alle gonne:

La selezione rispetta la geometria, ma manca qualcosa…
La selezione rispetta la geometria, ma manca qualcosa…

Naturalmente è un problema risolvibile. Ma neppure questa volta, anche a causa della piccola dimensione della finestra di anteprima di Intervallo colori, siamo riusciti a ottenere una selezione perfetta al primo colpo.

Realizzazione di una maschera di livello derivata dai canali

Il modello a mio parere più comprensibile per comprendere la profonda connessione tra selezioni e canali è quello che passa per alcune operazioni elementari di Photoshop. Quando realizziamo una qualsiasi selezione, possiamo salvarla con il comando presente nel menu Selezione -> Salva selezione. Ci sono diverse opzioni, ma la più semplice è quella di salvare la selezione in un canale, detto canale alfa. “Alfa” è il coefficiente che di solito viene utilizzato per definire l’opacità, e questo già dovrebbe far suonare un campanello.

Un canale alfa è un’immagine in scala di grigi. Nella sua accezione più semplice, è rigorosamente in bianco e nero (in senso stretto, senza sfumature di grigio intermedio): appare bianco dove la selezione è attiva e nero dove la selezione non è attiva. In figura, una selezione quadrata è stata salvata in un canale alfa denominato “Selezione”, visibile nel pannello Canali.

Mantra, parte 1: "Una selezione è un canale alfa…"
Mantra, parte 1: “Una selezione è un canale alfa…”

Se la selezione fosse sfumata, il canale alfa corrispondente apparirebbe a sua volta sfumato. Spesso nei testi si sente parlare in questo caso di “selezione parziale”: è un termine che trovo ambiguo, perché chi non è pratico potrebbe pensare che alcuni pixel vengano selezionati e altri no. Preferisco invece usare il termine “selezione semi-trasparente”: i pixel nelle aree in cui la maschera è bianca sono del tutto opachi, quelli nelle aree in cui è nera sono del tutto trasparenti, quelli dove è grigia sono parzialmente trasparenti. Sono tanto più trasparenti quanto più la maschera è scura, naturalmente.

Esiste un legame profondo tra funzioni di Photoshop che sembrano scollegate. La sfumatura di una selezione con un dato raggio coincide in maniera perfetta con la selezione definita da una maschera sfocata (Menu Filtro -> Sfocatura -> Controllo sfocatura) con lo stesso raggio. Se nel caso della figura precedente applicassimo il filtro Controllo sfocatura con raggio 50 px e caricassimo il canale come selezione (Menu Selezione -> Carica selezione), otterremmo la stessa selezione che avremmo ottenuto applicando Selezione -> Modifica -> Sfuma con un raggio di 50 px: non simile, ma identica – pixel per pixel.

Questo genera i primi due versi di un mantra che è bene ripetersi spesso:

Una selezione è un canale alfa,
Un canale alfa è una selezione.

In cosa differiscono i canali alfa dai canali che sappiamo essere le componenti della nostra immagine, come Rosso, Verde e Blu? In nulla. Sono diversi nella loro funzionalità, non nella natura. Qualsiasi canale è un’immagine in scala di grigi: il ruolo principale dei canali cromatici è quello di definire il contenuto dell’immagine; i canali alfa sono ausiliari e rappresentano selezioni. Al di là di questo, però, non esiste differenza alcuna.

Possiamo pensare di utilizzare un canale cromatico come selezione? Certamente sì, e questo ha un senso preciso e profondo. La domanda è: se lo facciamo, cosa stiamo selezionando? La risposta dipende dal metodo colore in cui stiamo lavorando. In RGB, il canale Rosso “seleziona” la quantità di luce rossa che genera i colori della nostra immagine. Quando il canale del rosso è nero, nessun contributo da parte della luce rossa; quando è bianco, massimo contributo possibile. In altri termini, la luce rossa non è selezionata laddove un canale è nero, e lo è completamente laddove è bianco. I toni di grigio intermedi sono selezioni di quantità intermedie di luce rossa. Lo stesso vale per il canale Verde e per il Blu.

In CMYK, un canale “seleziona” la quantità di inchiostro ciano, magenta, giallo o nero necessaria a produrre un certo colore. Non a caso la conversione in quadricromia viene spesso definita “produzione delle selezioni”.

In Lab il discorso è analogo anche se un po’ più complesso. Il canale L “seleziona” la quantità di luce che definisce la chiarezza di un’immagine. Il canale a “seleziona” la tendenza di un colore verso il verde o il magenta; il canale b fa lo stesso lungo l’asse blu-giallo.

Quando vogliamo utilizzare i canali cromatici come selezioni nel senso più tradizionale del termine, l’idea è sempre la stessa: trovare il canale con maggiore contrasto possibile nel soggetto che vogliamo isolare (o immaginare una combinazione di canali che lo produca) e manipolare il canale stesso per arrivare a una definizione il più precisa possibile della selezione che ci serve. Se vogliamo, manipolare un canale cromatico fino a che non assume la funzione di un canale alfa.

Naturalmente non lavoreremo mai direttamente sui canali cromatici perché questo altererebbe l’immagine: ne produrremo delle copie e utilizzeremo quelle, in modo che l’aspetto dell’immagine sia preservato.

I dieci canali dell'immagine nei tre metodi colore principali. (Cliccare per ingrandire)
I dieci canali dell’immagine nei tre metodi colore principali. (Cliccare per ingrandire)

Questa immagine riproduce i dieci canali che compongono la fotografia originale: RGB, CMYK, Lab. Stiamo cercando un canale che presenti un ottimo contrasto tra le gonne e il resto della scena, e deve presentare un ottimo contrasto in tutti i punti delle gonne. Il canale G, ad esempio, ha un contrasto eccellente tra la stoffa e la pelle delle ragazze, ma molto basso tra la stoffa e il vestito della donna in piedi sulla sinistra. R ha il problema opposto: ottimo il contrasto gonne/vestito, pessimo quello con l’incarnato. M sarebbe interessante, ma a sua volta perde contrasto quando confrontiamo le gonne con il piccolo frammento di vestito della donna bionda sulla destra. Altri canali, come K, sono del tutto inutili, né ci aiuta molto L.

Il canale a però è perfetto. Anche se di per sé l’immagine che contiene è poco contrastata in assoluto, è l’unico canale che isola perfettamente le gonne da tutto ciò che le circonda. Questo è facile da comprendere: il magenta delle gonne è molto saturo e la saturazione si manifesta con un grigio molto chiaro nel canale a. Le gonne sono già così separate dal resto che possiamo pensare di renderle bianche (e il resto nero) con una semplice curva.

Convertiamo dunque l’immagine in Lab e duplichiamo il canale a. Il canale denominato “a copia” diventa un canale alfa che possiamo manipolare: è, come di solito lo chiamo, una protomaschera. La figura che segue mostra il risultato di una curva molto ripida sulla nostra protomaschera.

11_The_Mask

Come maschera è pressoché perfetta. Rimangono, come ci aspettiamo, gli oggetti intensamente magenta nella parte superiore della fotografia, ma possono essere eliminati in un attimo: selezione rettangolare, facendo attenzione a non coinvolgere le gonne e riempimento con il colore nero. Gli oggetti vengono candidati a non essere selezionati.

Di tutti i metodi visti finora, questo è quello che produce il risultato migliore:

Lo scontorno ottenuto tramite la selezione effettuata per mezzo del canale a di Lab opportunamente curvato.
Lo scontorno ottenuto tramite la selezione effettuata per mezzo del canale a di Lab opportunamente curvato.

Lo scontorno è perfetto, non ha artefatti né aree semitrasparenti. L’immagine è stata ottenuta caricando come selezione il canale ottenuto per mezzo della curva e generando una maschera di livello sull’immagine mentre la selezione era attiva.

Il mantra si chiude, in maniera circolare:

Una selezione è un canale alfa,
Un canale alfa è una selezione,
Un canale cromatico è come un canale alfa,
Ogni canale è una selezione.

Suggerisco: ripetete, ripetete, ripetete. Poi, ripetete. Vi salverà un sacco di tempo, in moltissimi casi.

La fusione condizionale

La richiesta originale consisteva nel modificare il colore delle gonne. Finora abbiamo esaminato soltanto i risultati delle diverse selezioni, ma è facile arrivare al risultato che desideriamo: basta utilizzare un livello riempito con il colore che vogliamo, modificarne il metodo di fusione da Normale a Colore e applicare la maschera di livello che ci serve per limitare l’effetto alle gonne. Per finire mostriamo una tecnica estremamente utile che in certi casi può portare a risultati perfetti senza che neppure ci preoccupiamo di realizzare una selezione esplicita. La selezione naturalmente c’è, ma è implicita: Photoshop la realizza per noi senza che la vediamo. Questa tecnica è nota come “Fondi se” (“Blend if” in inglese), ma io preferisco chiamarla fusione condizionale.

Per attuarla, ci serve una finestra di Photoshop denominata Stile livello, che esamineremo tra breve. Partiamo convertendo la nostra immagine in Lab: questo non è necessario a priori, perché la fusione condizionale può essere attuata in qualsiasi metodo colore, ma molto spesso (e certamente in questo caso) Lab è il metodo in cui la tecnica risulta più potente. Dopo la conversione creiamo un livello di regolazione Tinta unita e assegniamogli il colore che desideriamo dare alle gonne per mezzo del Selettore colore che compare quando creiamo il livello. In questo caso (foto sotto) utilizziamo un ciano piuttosto scuro, ma potremmo in linea di principio utilizzare qualsiasi colore. Seguiamo questa strada perché, a lavoro finito, basterà un clic sul livello di regolazione per cambiare colore – come da richiesta iniziale.

Livello di regolazione Tinta unita in metodo di fusione Colore.
Livello di regolazione Tinta unita in metodo di fusione Colore.

Se lasciamo il metodo di fusione impostato su Normale, l’immagine originale scomparirà lasciando il posto a un colore uniforme. Se invece lo modifichiamo in Colore, la nostra immagine sarà caratterizzata dal colore che abbiamo scelto ma manterrà la luminosità dell’originale: esattamente ciò che vediamo in figura. Si tratta in sostanza di un viraggio, anche se piuttosto estremo: se riusciamo a limitarlo alle aree di interesse, ovvero le gonne, il lavoro sarà concluso.

Sappiamo che le gonne sono l’oggetto con la componente magenta (canale a > 0) più intensa di tutta l’immagine. Anche l’incarnato ha una componente positiva nel canale a, ma è molto bassa rispetto a quella delle gonne. Un doppio clic sul livello di regolazione che abbiamo creato fa comparire la finestra Stile livello, che ci propone diverse opzioni. Quella che ci interessa si trova in basso, nella sezione denominata “Fondi se:”

La finestra Stile livello con la quale realizziamo la fusione condizionale.
La finestra Stile livello con la quale realizziamo la fusione condizionale.

A prima vista questa sezione può sembrare un po’ enigmatica, ma in realtà funziona in maniera molto semplice. Il termine “fusione” in generale indica la combinazione di due o più livelli: per questo possiamo “leggere” la sezione in questo modo:

Metti in atto la fusione di questo livello con quelli sottostanti se il parametro selezionato dal menu risponde a determinate condizioni su questo livello e ad altre determinate condizioni sui livelli sottostanti.

“Il parametro selezionato dal menu” è uno dei canali, e naturalmente la lista di possibilità sarà diversa a seconda del metodo colore nel quale lavoriamo. In Lab, possiamo selezionare Luminosità, a oppure b. In RGB, avremmo Grigio (il termine indica la luminosità del composito), Rosso, Verde oppure Blu. Nel nostro caso lavoreremo sul canale a, che controlla la tendenza di un colore verso il verde o verso il magenta. Naturalmente, ci riferiremo al canale a dell’immagine sottostante, non a quello del livello sul quale stiamo lavorando: avendo un colore uniforme, il valore di a in esso è costante.

Una prima approssimazione della fusione condizionale che ci serve.
Una prima approssimazione della fusione condizionale che ci serve.

La figura qui sopra mette in atto una prima approssimazione, volutamente molto grossolana, di ciò che ci serve. Leggiamo ciò che il pannello ci dice in base alla regola delineata sopra: “Metti in atto la fusione di questo livello con quello sottostante se il canale a ha un valore superiore a 147 nel livello sottostante.” Abbiamo trascurato di leggere la prima coppia di cursori, perché non pone alcuna condizione. La seconda, invece, stabilisce che la fusione debba avvenire solo per i colori intensamente magenta: tutti i colori che hanno nel canale a una componente inferiore a quella indicata dal cursore nero vengono esclusi dall’operazione (per questo l’erba e buona parte quasi tutto l’incarnato non sono più blu); quelli che hanno una componente superiore, vengono inclusi.

Photoshop ci dà un piccolo grattacapo: il numero 147 visibile in finestra non ha alcun significato nel canale a, i cui valori possono variare soltanto tra -128 e 127. Tantomeno ha significato il numero 255. Purtroppo queste letture sono fisse e non si possono cambiare: anche in CMYK i valori non vengono espressi in percentuale, come ci aspetteremmo, ma sono sempre riferiti ai valori di luminosità del canale espressi su una scala che va da 0 a 255. Questo rende le cose un po’ complicate se vogliamo inserire un valore preciso, ma in realtà il più delle volte andiamo a occhio: spostiamo il cursore fino a che non raggiungiamo il risultato desiderato, quindi si tratta di un problema minore.

Un risultato pressoché definitivo: basta una semplice maschera di livello…
Un risultato pressoché definitivo: basta una semplice maschera di livello…

Il risultato visibile nella foto sopra è pressoché definitivo. La selezione implicita delle gonne è perfetta, e l’unico problema consiste nel fatto che alcuni oggetti dei quali non vogliamo cambiare il colore hanno invece assunto il colore definito dal livello di regolazione, esattamente come accadeva con il comando Intervallo colori: le bandierine sullo sfondo, la cravatta dell’uomo di profilo, le unghie delle damigelle vanno escluse dalla fusione. Escluderle è immediato: basta dipingere con un pennello nero sulla maschera collegata al livello di regolazione, o effettuare una selezione rettangolare che parte subito sopra le gonne e va fino in cima all’immagine – e riempirla di nero, come nel caso della selezione effettuata per mezzo del canale a.

La cosa più importante da osservare è che nella versione appena mostrata il cursore nero è diviso in due. Nella versione precedente è molto evidente la posterizzazione delle aree colorate: i contorni sono troppo netti, a prescindere dal fatto che alcune aree andrebbero escluse dalla fusione. Il rischio di posterizzazioni si scongiura creando una transizione morbida della selezione implicita: possiamo pensarla come una specie di sfocatura, che modula la fusione progessivamente tra le aree che devono venire affette dalla regolazione e quelle che devono esserne escluse. Per dividere il cursore in due e definire così l’area di transizione è sufficiente cliccarci sopra tenendo premuto il tasto Option (Alt): il cursore si dividerà e i due “semicursori” saranno manovrabili indipendentemente. Maggiore sarà la distanza tra loro, più morbida sarà la transizione.

Conclusione

Questo articolo non pretende di essere in alcun modo esaustivo: mette semplicemente a confronto alcune tecniche ben note di selezione cercando di valutarne l’efficacia (e l’efficienza) nel contesto di un’immagine ben precisa. Ogni immagine è diversa, e ciò che la fusione condizionale fa in un caso come questo potrebbe risultare difficile o impossibile in altri. Quindi, l’articolo andrebbe considerato in generale come una riflessione su quella che potrebbe essere la strada più breve in certi contesti.

Grazie per l’attenzione!
MO

10 pensieri su “Un problema di selezione”

  1. Le damigelle stanno pian piano scalando la classifica di diffusione. Tra un pò saranno più note del prato di sfondo a Windows XP!!!

    🙂

  2. Sempre esaustivo, preciso e coinvolgente.
    Apprezzo sempre di più i canali in LAB e questa è una di quelle situazioni in cui torna
    estremamente utile.

    Grazie
    Marco

  3. Salve, si parla di metodo lab perché è quello che restituisce nel canale “a” il miglior contrasto per il tipo selezione che interessa l’articolo. Se invece fosse stata la pelle o in generale gli skin tones, sarebbe stato meglio rimanere in RGB?

    Il mio interesse sarebbe dare una piccola abbronzatura alla pelle (partendo da un valore specifico di Pantone), mantenendo la luminosità dell’originale.

    Grazie

    1. Ciao Larry,
      non c’è una risposta universale. Certe operazioni riescono meglio in Lab, altre in RGB. Se devi fare una piccola correzione alla pelle RGB di solito va bene: il problema, semmai, è isolare l’area d’intervento. Spesso Selezione -> Intervallo colori -> Incarnato ti dà già un buon punto di partenza; Lab ti offre i canali a e b che di solito sono utili per selezionare in base al colore, ma possono essere laboriosi se esistono altre aree colorate in maniera simile (o anche dissimile, ma con dei valori a e b in comune). Quindi… la regola è scegliere il canale che risulta migliore per il lavoro che vuoi fare, e lavorare su quello.

      A presto!
      MO

Rispondi a Flamur Annulla risposta

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