bilanciamento colore rgb

An advanced module which brings color-grading tools from cinematography into the photographic scene-referred pipeline.

Questo modulo non è adatto ai novizi senza alcuna conoscenza della teoria del colore, i quali potrebbero voler limitarsi alle impostazioni di crominanza globale e vibranza globale fino a quando non hanno una buona comprensione delle dimensioni del colore.

🔗introduzione

Il color-grading è una parte importante dell’elaborazione immagini. Può aiutare a rimuovere dominanti di colore non desiderate e può anche consegnare un guizzo creativo di colore che aggiunge atmosfera alla tua immagine. Nei giorni della fotografia su pellicola, la maggior parte dell’atmosfera cromatica veniva ottenuta con le emulsioni della pellicola e gli elementi chimici di sviluppo, con alcune tempistiche per il colore eseguite sotto l’ingranditore con un filtro colorato. Questo consumata risorse costose ed era il larga parte riservato all’industria del cinema, dove il lavoro veniva eseguito da un colorista.

Nell’era digitale, dove le immagini raw appaiono piatte e regolari, il color-grading assume lo stesso ruolo che ebbero le emulsioni nella pellicola, reintroducendo lo spostamento del colore per obiettivi estetici. Può servire anche per armonizzare la tavolozza dei colori di una serie di immagini (che potrebbero esser state scattate sotto condizioni differenti) per ottenere un aspetto consistente. Per questo compito è estremamente utile anche il vettorscopio.

I coloristi di solito suddividono il processo di color-grading in due passi distinti:

  1. Il color-grading primario si prefigge di correggere dominanti cromatiche e di creare un punto di partenza neutrale,

  2. Il color-grading secondario fornisce all’immagine il suo aspetto finale e la sua atmosfera.

Il color-grading primario è meglio lasciarlo al modulo calibrazione colore, il quale opera in un contesto di accuratezza fisica più idoneo alla correzione delle illuminanti. Il bilanciamento colore RGB, d’altro canto, si preoccupa maggiormente del color-grading secondario. Effettuare un color-grading primario realmente neutrale dovrebbe rendere il color-grading secondario facile da trasferire tra le immagini (con gli stili, preset o copia&incolla) con un effetto simile.

🔗principi generali

Il modulo bilanciamento colore RGB è un miglioramento della Lista Decisione Colori (“Color Decision List”) dell’American Society of Cinematographers (EN) (ASC CDL), e usa maschere alfa per permettere all’effetto di essere suddiviso correttamente tra ombre e alteluci. Il CDL classico agisce sull’intero intervallo di luminanza, ed a ciascuno dei suoi parametri è dato più peso in alcune parti dell’immagine soltanto come effetto collaterale della matematica.

Questo modulo lavora, in larga parte (4 vie, crominanza, vibranza, contrasto), in uno spazio colore RGB lineare creato specificatamente il color-grading. Questo spazio colore mostra una spaziatura uniforme delle tonalità percettive pur mantenendo una luminanza in scala fisica1. La parte percettiva del modulo (saturazione e brillantezza) lavora nello spazio colore JzAzBz2, il quale fornisce un ridimensionamento percettivo sia di luminosità che di cromaticità adatto alle immagini HDR. Entrambi gli spazi colore assicurano che i cambiamenti di saturazione e crominanza avvengono a tonalità costante, il che non avviene per la maggior parte degli altri operatori di saturazione in darktable (specialmente il vecchio modulo bilanciamento colore).

Il modulo bilanciamento colore RGB si aspetta un input lineare riferito alla scena e produce un output RGB riferito alla scena, il quale potrebbe essere non lineare, in base alle impostazioni del modulo (contrasto e potenza “de-linearizzeranno” l’output).

At its output, color balance RGB checks that the graded colors fit inside the pipeline RGB color space (Rec. 2020 by default) and applies a soft saturation clipping at constant hue, aiming to retarget out-of-gamut color to the nearest in-gamut color by scaling both chroma and lightness. This prevents the chroma and saturation settings from pushing colors outside of the valid range and allows more drastic adjustments to be safely used.

Notare che questo modulo convive nelle definizioni di crominanza e saturazione del CIE, come spiegato nella sezione dimensioni dei colori.

🔗Controlli modulo

🔗scheda master

spostamento di tonalità
Ruota tutti i colori nell’immagine di un dato angolo sul piano della cromaticità, a luminanza e crominanza costante. Puoi usare questo controllo per rimuovere luci colorate su un soggetto o per cambiare velocemente il colore di alcuni oggetti. Quest’impostazione offre generalmente i migliori risultati usando le maschere.
vibranza globale
Questo interessa la dimensione del colore della crominanza sull’intera immagine, dando priorità a quei colori con bassa crominanza. Permette di incrementare la crominanza dei colori neutrali senza esagerare i pixel già vivaci.
contrasto
Questa impostazione viene applicata sul canale della luminanza con tonalità e crominanza costante. L’impostazione del fulcro (nella scheda maschere, sotto fulcro del contrasto del grigio) ti permette di impostare il punto neutrale della curva di contrasto:
  • sul fulcro, la curva di contrasto lascia la luminanza invariata,
  • sotto il fulcro, la curva di contrasto riduce la luminanza per valori di contrasto positivi o la incrementa per i valori negativi,
  • sopra il fulcro, la curva di contrasto incrementa la luminanza per valori di contrasto positivi o la riduce per i valori negativi.

Il fulcro ha un valore predefinito di 18.45%, che è consistente con il flusso di lavoro riferito alla scena corrente e dovrebbe essere appropriato nella maggior parte dei casi (se si assume che la luminosità globale sia stata corretta con il modulo esposizione come raccomandato).

L’algoritmo di contrasto restituisce risultati naturali che imitano la parte centrale della curva di contrasto di una pellicola analogica. Ciononostante incrementerà anche la gamma dinamica dell’immagine, il che potrebbe invalidare le impostazioni di filmic nella coda di elaborazione. Per le regolazioni sul contrasto globale, normalmente dovresti usare il modulo equalizzatore toni – il selettore scorrevole di contrasto in bilanciamento colore RGB si usa al meglio con le maschere, per esempio per correzioni selettive in primo o in secondo piano.

🔗Gradiente cromatico lineare

La gradazione di crominanza lineare influenza la dimensione di crominanza proporzionalmente al suo valore di input, con tonalità e luminanza costante. Lo fa a livello globale, con un coefficiente piatto (usando crominanza globale), così come su ciascuna delle maschere delle ombre, mezzi toni e alteluci (definite nella scheda maschere sotto gamme di luminanza).

🔗Gradiente di saturazioen percettivo

La gradazione percettiva della saturazione influenza assieme le dimensioni di luminanza e crominanza, nello spazio percettivo, proporzionalmente al suo valore di input, a tonalità costante. Lo fa a livello globale, con un coefficiente piatto (usando saturazione globale), così come su ciascuna delle maschere delle ombre, mezzi toni e alteluci (definite nella scheda maschere sotto gamme di luminanza).

🔗Gradiente percettivo di brillantezza

La gradazione percettiva della brillantezza influenza assieme le dimensioni di luminanza e crominanza, nello spazio percettivo, proporzionalmente al suo valore di input, a tonalità costante e in direzione ortogonale alla saturazione. Is suo effetto è simile a cambiare l’esposizione, ma ridimensionato percettivamente. Lo fa a livello globale, con un coefficiente piatto (usando brillantezza globale), così come su ciascuna delle maschere delle ombre, mezzi toni e alteluci (definite nella scheda maschere sotto gamme di luminanza).

🔗scheda 4 vie

Ognuna delle impostazioni nella scheda 4 vie è composta dagli stessi tre componenti, i quali definiscono un colore usando coordinate indipendenti:

  1. luminanza,

  2. tonalità,

  3. crominanza.

Input di colore come questo stabiliscono uno spostamento del colore applicato all’intera immagine o alle specifica gamma di luminanza.

Each hue slider has a picker, which may be used to compute the opponent color of the selected region. This is useful to revert unwanted color casts (e.g. skin redness), since shifting the color to its opponent cast neutralizes it.

🔗Spostamento globale

Questo è l’equivalente dell’offset ASC CDL, e funziona aggiungendo un valore RGB costante a tutti i pixel, similarmente a quello che fa spostamento livello del nero del modulo esposizione. Questo controllo non usa maschere.

🔗Aumento ombre

Questo è concettualmente equivalente a lift from lift/gamma/gain, sebbene sia implementato differentemente, e funziona moltiplicando per un valore RGB costante i pixel sotto la maschera. Viene applicato usando la maschera ombre.

🔗Guadagno alteluci

Questo è equivalente alla pendenza ASC CDL, e funziona moltiplicando per un valore RGB costante i pixel sotto la maschera. Viene applicato usando la maschera alteluci.

🔗power globale

Questo è l’equivalente del power ASC CDL, e funziona applicando un valore RGB costante come esponente. Non viene mascherato e necessita di essere normalizzato, in quanto la funzione di potenza ha un comportamento differente sopra e sotto il valore di 1, e siamo in una coda di elaborazione senza vincoli dove il bianco è tipicamente maggiore di 1. Il parametro di normalizzazione è disponibile nella scheda maschere sotto fulcro del bianco.

🔗scheda maschere

Questa scheda definisce controlli ausiliari per le schede precedenti. I controlli del mascheramento tipicamente non necessitano alcun intervento dell’utente, dato che i valori predefiniti sono calibrati per adattarsi alla maggior parte delle necessità e per soddisfare le normali aspettative nella coda di elaborazione riferita alla scena. Dovresti cambiare queste impostazioni soltanto in scenari specifici.

🔗gamme di luminanza

Il grafico mostra l’opacità (sull’asse delle y) delle 3 maschere di luminanza relative alla luminosità dei pixel (sull’asse delle x). La curva più scura rappresenta la maschera delle ombre, la più chiara rappresenta la maschera delle alteluci, e la terza curva rappresenta la maschera dei mezzi toni.

Solo le maschere di ombre e alteluci possono essere controllate direttamente – la maschera dei mezzi toni viene calcolata indirettamente dalle altre e lavora come variabile di aggiustamento.

caduta delle ombre
Controlla la morbidezza o la durezza della transizione da completamente opaco (100%) a completamente trasparente (0%) per la maschera delle ombre.
fulcro della maschera del grigio medio
Imposta il valore di luminanza dove tutte e tre le maschere hanno il 50% di opacità. In pratica serve per stabilire dove l’immagine è divisa in ombre e alteluci.
caduta delle alteluci
Controlla la morbidezza o la durezza della transizione da completamente opaco (100%) a completamente trasparente (0%) per la maschera delle alteluci.

Per ciascuna di queste impostazioni un pulsante di maschera, fornito alla destra del selettore scorrevole, mostra la maschera appropriata (ombre, mezzi toni, alteluci), sovrapposta come una scacchiera. L’area dell’immagine ancora visibile (non nascosta dalla maschera) è l’area che verrà interessata dai selettori scorrevoli di ombre, mezzi toni e alteluci nelle altre schede.

Tutti i preview delle maschere mostrano l’output del modulo, includendo qualsiasi cambiamento del colore fatto, in modo tale che puoi attivarle mentre fai le modifiche, per poter vedere solo le aree interessate dell’immagine.

La maschera di luminanza viene calcolata sull’input del modulo, il che significa che è insensibile a qualsiasi variazione della luminanza effettuata all’interno del modulo.

🔗soglia

fulcro del bianco
Imposta in EV il punto di luminanza del bianco. Questo viene usato per normalizzare l’impostazione di potenza nella scheda 4 vie. Le implementazioni della funzione di potenza riferite al monitor assumono che il bianco sia 100%, il ché elimina l’esigenza di normalizzazione. Per gli output riferiti alla scena questo deve essere tenuto a mente.

The picker to the right of the slider automatically sets the white fulcrum to the maximum luminance from the selected region, which should be sufficient in most cases.

fulcro del contrasto del grigio
Imposta il fulcro per il parametro contrasto nella scheda master. Corrisponde al valore di luminanza che deve essere lasciato inalterato dalla regolazione del contrasto. Questa impostazione corrisponde solitamente al valore lineare del grigio medio. Se hai seguito le raccomandazioni del flusso di lavoro riferito alla scena e impostato la luminosità globale all’inizio della coda di elaborazione (usando il modulo esposizione), il valore corretto dovrebbe essere di solito attorno al 18-20%.

The picker to the right of the slider automatically sets the contrast gray fulcrum to the average luminance from the selected region. This relies on the assumption that the average luminance is usually close to middle-gray, which is not true if you have specular highlights or primary light sources in the frame, or for low/high-key images.

🔗formula di saturazione

Note that this setting is not really appropriate for the masks tab (since it is not technically related to the masks) but is placed here because it is not meant to be used regularly and in the spirit of saving some display real-estate. Two options are provided:

JzAzBz (2021)
This mode is the original saturation algorithm. It uses the JzAzBz uniform color space (UCS) to compute the saturation. This color space is not meant for color changes and its lightness does not account for the Helmholtz-Kohlrausch effect, which states that colorful colors will look brighter than neutral or near-neutral colors (greys and pastels) having the same luminance. It also suffers from non-smooth behaviour near black, with colors being darkened too much.
darktable UCS (2022)
The darktable Uniform Color Space has been designed from the ground up, using psychoperceptual measurement datasets, for the sole purpose of the color manipulation (saturation) performed by this module. This color space does account for the Helmholtz-Kohlrausch effect and has a built-in gamut mapping formula that is more accurate and efficient than can be achieved in JzAzBz. It displays a smoother behaviour which makes saturation changes more even across the lightness range.

🔗Impostazioni maschera di anteprima

Queste impostazioni si applicano all’anteprima della maschera, visualizzata quando si clicca sui pulsanti maschera nella sezione gamme di luminanza. Queste impostazioni sono registrate globalmente, e verranno applicate a tutte le immagini future, a meno che non vengano cambiate.

colore scacchiera 1 e 2
Imposta i due colori della scacchiera di sfondo alla maschera. Puoi impostarli su colori opposti all’immagine corrente per aiutare la leggibilità.
dimensione scacchiera
Imposta la dimensione in pixel delle caselle della scacchiera (ridimensionate rispetto alla risoluzione in DPI del monitor).

🔗FAQ

🔗saturazione o cromaticità?

Come descritto nella sezione dimensioni dei colori, saturazione e cromaticità vagano sullo stesso piano (luminosità, cromaticità) in direzioni differenti. Inoltre, la cromaticità del bilanciamento colore RGB usa lo spazio lineare riferito alla scena, mentre la saturazione usa uno spazio percettivo, il quale ridimensiona il colore per una spaziatura uniforme.

In pratica, dovresti usare l’impostazione della cromaticità se vuoi riservare la linearità dell’emissione della luce propria della scena, e/o mantenere la luminanza invariata. In ogni caso, questi cambiamenti potrebbero interessare alcune tonalità più che altre, dato che lo spazio colore non è completamente ridimensionato percettivamente.

La saturazione è più vicina all’effetto del mischiare la vernice bianca con un colore di base. Ridurre la saturazione del rosso degraderà in rosa, mentre ridurre la sua cromaticità degraderà verso un’ombra grigia della stessa luminanza. La saturazione è forse un modo più intuitivo per interagire con il colore, grazie alla sua analogia con la pittura.

Scegliere uno o l’altro è più che altro una questione di decidere dove vuoi spingere i tuoi colori sul grafico (luminosità, cromaticità), e da dove partire. Per raggiungere colori pastello, saturazione è la strada da percorrere. Per raggiungere colori “laser” (quasi monocromatici), al confine da sembrare sintetici, cromaticità è la via da seguire.

🔗qual’è la relazione con lift/gamma/guadagno?

L’algoritmo lift/gamma/guadagno fa riferimento allo spazio colore riferito al monitor, in quanto assume una gamma dinamica simmetrica e delimitata, con il punto del bianco al 100% e il grigio al 50%. Con questi presupposti è semplicemente inusabile nello spazio colore riferito alla scena. Comunque sia, l’unica parte incompatibile è il lift. La gamma è esattamente come il power definito da ASC CDL, e il guadagno è esattamente la pendenza di ASC CDL.

Il modulo bilanciamento colore RGB ha semplicemente due pendenze invece che una: il guadagno, applicato alle alteluci estratto dall’intera immagine con una maschera, e il lift, applicato similarmente ma sulle ombre.

🔗cambiare il contrasto

Mentre bilanciamento colore RGB è per lo più riguardo i colori (altri moduli gestiscono il contrasto globale preservando la cromaticità), la luminanza è parte del colore esattamente come tonalità e cromaticità, e necessita anche questa di essere gestita qui, dato che la percezione della saturazione si basa su di essa. Se vuoi trasformare il rosso in rosa, per esempio, riducendo la sua cromaticità otterrai il grigio, quindi hai bisogno di incrementare anche la luminanza.

Ci sono molti modi di cambiare il contrasto in bilanciamento colore RGB, sia localmente (con le maschere) o globalmente (senza maschere):

  • nella scheda master, usare l’impostazione contrasto (possibilmente assieme al parametro fulcro del contrasto del grigio nella scheda maschere). Tieni presente che questo alzerà anche il punto del bianco, incrementando quindi la gamma dinamica, potenzialmente annullando le impostazioni di filmic più avanti nella coda di elaborazione.

  • in gradiente percettivo di saturazione, desatura le alteluci e aumenta la saturazione nelle ombre per dare una spinta al contrasto di luminanza,

  • in gradiente percettivo di brillantezza, aggiungi brillanza alle alteluci e rimuovi brillanza dalle ombre per dare una spinta al contrasto di luminanza,

  • nella scheda 4 vie, imposta la luminanza per aumento ombre a valori negativi e la luminanza in guadagno alteluci a valori positivi, il quale darà di nuovo una spinta al contrasto di luminanza.

La differenza tra questi metodi sta in come il loro effetto verrà pesato in relazione all’input del modulo. Si consiglia di effettuare la maggior parte delle regolazioni sul contrasto di luminanza nei moduli filmic e equalizzatore toni, di intraprendere le modifiche finali in bilanciamento colore RGB mentre si controllano i colori.

🔗funzionamento interno

Il seguente è la l’ordine interno delle operazioni all’interno del modulo:

  1. Si passa dallo spazio colore RGB della coda di elaborazione a quello Kirk/Filmlight Ych,

  2. Si applica lo spostamento di tonalità a cromaticità e luminanza costante,

  3. Si elaborano le maschere di luminanza con Y,

  4. Si applicano le impostazioni di crominanza lineare e vibranza con tonalità e luminanza costante,

  5. Si converte allo spazio colore Kirk/Filmlight RGB,

  6. Si applicano le impostazioni a 4 vie (ad eccezione della power di luminanza),

  7. Si converte allo spazio colore Kirk/Filmlight Yrg,

  8. Si applicata la power di luminanza e il contrasto su Y,

  9. Si converte allo spazio colore JzAzBz,

  10. Si applicano le impostazioni di saturazione percettiva e brillanza percettiva,

  11. Si taglia “delicatamente” la cromaticità usando la gamma (gamut) della coda di elaborazione RGB con tonalità e luminosità costante,

  12. Si ritorna allo spazio colore RGB della coda di elaborazione.

🔗note

Setting the global chroma to -100% will not produce a real monochrome image, as is customary with other algorithms. The reason for this is that the RGB space used has a D65 white point defined in CIE LMS 2006 space, while darktable uses a white point defined in CIE XYZ 1931 space, and there is no exact conversion between these spaces. The result will therefore be a slightly tinted black & white image. If your intent is to get a real black & white image using the luminance channel, the color calibration module offers a B&W : luminance-based preset that does exactly the same thing but without the white-point discrepancy.

Questo modulo ha la sua mappatura della gamma (gamut) (contro la coda di elaborazione RGB) sempre abilitato. Questo significa che, se la tua immagine contiene colori ampiamente fuori gamma, iniziare semplicemente attivando bilanciamento colore RGB senza particolari impostazioni altererà leggermente i suoi colori. Probabilmente in meglio.

La saturazione massima permessa nella coda di elaborazione RGB è registrata per ciascuna tonalità quando il modulo viene inizializzato, e viene messa in cache in LUT (Look Up Table, tabella di ricerca) per salvare le prestazioni. Se il profilo colore viene cambiato più tardi, bilanciamento colore RGB non viene notificato, e significa che non aggiornerà la cache con i valori di tonalità/saturazione. Per forzare l’aggiornamento della LUT, puoi semplicemente modificare qualsiasi impostazione nel modulo bilanciamento colore RGB, e ripristinarlo subito dopo. Non è comunque raccomandato di cambiare lo spazio di lavoro RGB a metà di una sessione di sviluppo, in quanto potrebbe produrre cambiamenti indesiderati in cromaticità e tonalità.

Per ragioni di prestazioni, le conversioni non-lineare da e verso gli spazi di lavoro RGB vengono saltate, quindi il colorimetro interno valuterà in errore quando si usano spazi colore non lineari. Notare che non c’è ragione di usare spazi non-non lineari per lavorare in RBG, dato che rendono la fusione sul canale alfa più complicata senza alcun beneficio.


  1. Richard A. Kirk, Chromaticity coordinates for graphic arts based on CIE 2006 LMS with even spacing of Munsell colours, 2019. https://doi.org/10.2352/issn.2169-2629.2019.27.38 ↩︎

  2. Safdar et al., Perceptually uniform color space for image signals including high dynamic range and wide gamut, 2017. https://doi.org/10.1364/OE.25.015131 ↩︎

translations