Perché il software può correggere il bilanciamento del bianco in modo più accurato per i file RAW rispetto ai JPEG?


11

Perché le correzioni del bilanciamento del bianco JPEG post-elaborazione non sono accurate come il bilanciamento del bianco con Raw?

La mia comprensione è che quando si scatta jpeg la fotocamera esegue internamente i seguenti passaggi:

  1. Converti i dati dei sensori grezzi utilizzando l'algoritmo (demosaicing / debayering).
  2. Converti in spazio lineare

    un. L'uso della tabella di ricerca mappa il valore non elaborato allo spazio lineare

    b. Il livello di nero per ciascun pixel viene quindi calcolato e sottratto.

    c. Il valore per ciascun pixel viene quindi ridimensionato da 0,0 a 1,0 utilizzando Whitelevel

    d. I valori riscalati vengono tagliati nell'intervallo logico da 0,0 a 1,0.

  3. Mappatura dello spazio colore della telecamera sullo spazio CIE XYZ con regolazione del bilanciamento del bianco

    un. Converti in XYZ (D50) utilizzando CameraToXYZ_D50 = Chromatic_adapatation_matrix * CameraToXYZ_matrix

  4. Converti CIE XYZ in sRGB

    un. Calcola RGB lineare usando CIE XYZ in matrice RGB lineare

    b. Calcola Rec709 sRGB usando la trasformazione della curva gamma su RGB lineare

  5. Converti sRGB in 8 bit e comprimi utilizzando JPEG

Se questo è corretto, non capisco perché Jpeg non possa correggere il bilanciamento del bianco allo stesso modo di Raw!

È semplicemente a causa della compressione con perdita di file tiff a JPEG e 32 bit che non avrebbe questo problema?

inserisci qui la descrizione dell'immagine


1
Cosa ti fa pensare che JPEG WB non sia preciso come raw? Cosa intendi con preciso ? Vuoi dire che la fotocamera di solito non indovina come può fare una persona esperta che utilizza un'applicazione di conversione non elaborata? O qualcos'altro?
Michael C,

Voglio dire che se dico alla mia macchina fotografica di salvare una copia raw e jpeg della stessa immagine e quindi di aprirli entrambi in Lightroom e di provare a correggere il bilanciamento del bianco usando il selettore colore facendo clic sulla stessa identica posizione nell'immagine, il raw risulta perfetto mentre il jpeg ha ancora un colore strano.
skyde,

2
Questa è una domanda molto diversa. Ho intenzione di modificare il titolo per riflettere quello che penso che tu stia effettivamente chiedendo ...
Per favore, leggi il mio profilo

5
La prima immagine NON è "IL file raw originale". È una delle infinite interpretazioni possibili dei dati grezzi prodotti dall'applicazione di conversione grezza e visualizzati sullo schermo in 8 bit.
Michael C,

2
Probabilmente non è il punto più importante, ma il tuo passaggio 2 è in realtà due passaggi distinti e potrebbero non essere eseguiti nell'ordine in cui li presenti (che sarebbe un modo aggiuntivo in cui il WB viene "inserito" nel JPEG finale colore).
Junkyardsparkle,

Risposte:


9

Perché il software può correggere il bilanciamento del bianco in modo più accurato per i file RAW rispetto ai JPEG?

Esiste una differenza fondamentale tra lavorare con i dati grezzi effettivi per produrre una diversa interpretazione dei dati grezzi rispetto all'interpretazione iniziale a 8 bit del file raw che vedi sullo schermo rispetto a lavorare con un jpeg a 8 bit in cui l'intera informazione in il file è quello che vedi sullo schermo.

Quando si utilizza il clicker bianco su un file "raw", non si corregge l'immagine visualizzata sullo schermo (che è un rendering a 8 bit simile a jpeg che è una delle molte possibili interpretazioni dei dati in un file di immagine raw ). Stai dicendo all'applicazione di conversione non elaborata di tornare indietro e riconvertire i dati nel file non elaborato in un'immagine visualizzabile utilizzando un diverso set di moltiplicatori di canali di colore.

Stai creando un'altra immagine con gli stessi dati grezzi utilizzati per creare la prima versione che vedi sullo schermo. Ma l'applicazione sta tornando all'inizio e usando tutti i dati nel file raw per creare una seconda, diversa interpretazione dei dati grezzi in base alle diverse istruzioni su come elaborarli. Non sta iniziando con le informazioni limitate visualizzate sullo schermo e correggendole. Se lo facesse, otterrai lo stesso risultato che hai fatto lavorando con il jpeg. ¹

Il file non elaborato contiene molte più informazioni di quelle visualizzate sul monitor quando si "apre" un file non elaborato. I file di immagini non elaborati contengono dati sufficienti per creare un numero pressoché infinito di interpretazioni diverse di quei dati che si adatteranno a un file jpeg a 8 bit.

Ogni volta che apri un file non elaborato e lo guardi sullo schermo, non visualizzi "IL file non elaborato". ³ Si sta visualizzando uno tra un numero pressoché infinito di possibili interpretazioni dei dati nel file raw. I dati grezzi stessi contengono una singola misura di luminosità (monocromatica) per ciascun pozzetto di pixel. Con i sensori per fotocamere mascherati Bayer (la stragrande maggioranza delle fotocamere digitali a colori usano i filtri Bayer) ogni pixel ha un filtro colorato di fronte che è "rosso", "verde" o "blu" (i "colori" reali di i filtri nella maggior parte delle maschere Bayer vanno da un verde leggermente giallastro a un giallo arancio per "rosso", un verde leggermente bluastro per "verde" e un viola leggermente bluastro per "blu" -questi colori corrispondono più o meno al centro di sensibilità per i tre tipi di coni nelle nostre retine ). Per una discussione più completa su come ottenere informazioni sul colore dai singoli valori di luminosità misurati su ciascun pixel, vedere i file RAW che memorizzano 3 colori per pixel o solo uno?

Quando si modifica il bilanciamento del bianco di un file raw, non si stanno apportando modifiche all'interpretazione a 8 bit del file raw visualizzato sullo schermo, si stanno apportando modifiche al modo in cui i dati grezzi monocromatici a 14 bit lineari vengono interpretati e quindi visualizzato sullo schermo con il bilanciamento del bianco aggiornato.Cioè, stai usando il pieno vantaggio di quei 16.384 passaggi lineari monocromatici discreti che il file non elaborato contiene per ciascun pixel, non i 256 passaggi corretti gamma discreti in tre canali di colore per ogni pixel che vedi sullo schermo a 8 bit come una rappresentazione di quel file raw. Stai anche sfruttando tutte le altre informazioni contenute nei dati di immagine grezzi, inclusi elementi come pixel mascherati e altre informazioni che vengono scartate quando il file viene convertito in un formato a 8 bit per essere visualizzato sullo schermo.

Il modo in cui l'immagine che vedrai sul tuo monitor quando aprirai un file non elaborato sarà determinata da come l'applicazione che hai usato per aprire il file interpreta i dati grezzi nel file per produrre un'immagine visualizzabile. Ma questo non è l '"unico" modo per visualizzare "IL file raw originale". È solo il modo in cui l'applicazione - o la videocamera che ha prodotto l'anteprima jpeg allegata al file raw - ha elaborato le informazioni nel file raw per visualizzarle sullo schermo.

Ogni applicazione ha il proprio set di parametri predefiniti che determinano il modo in cui i dati grezzi vengono elaborati. Uno dei parametri più significativi è il modo in cui viene selezionato il bilanciamento del bianco utilizzato per convertire i dati grezzi. La maggior parte delle applicazioni ha molti diversi set di parametri che possono essere selezionati dall'utente, che è quindi libero di modificare le singole impostazioni all'interno del set di istruzioni utilizzate per interpretare inizialmente i dati nel file non elaborato. Molte applicazioni utilizzeranno i moltiplicatori del bilanciamento del bianco / canale del colore stimati dalla fotocamera (quando si utilizza AWB nella fotocamera) o immessi dall'utente (quando si utilizza la correzione CT + WB nella fotocamera) al momento dello scatto della foto. Ma questo non è l' unico legittimo bilanciamento del bianco che può essere utilizzato per interpretare i dati grezzi.

Con un file raw a 14 bit, ci sono 16.384 valori discreti tra 0 (nero puro) e 1 (bianco puro). Ciò consente passaggi molto piccoli tra ogni valore. Ma questi sono valori di luminanza monocromatici . Quando i dati vengono demosaificati, vengono applicate le curve gamma e viene eseguita la conversione in uno spazio colore specifico, i moltiplicatori di conversione WB vengono generalmente applicati a questi valori a 14 bit. Il passaggio finale del processo consiste nel rimappare i valori risultanti fino a 8 bit prima di eseguire la compressione con perdita di file. 8 bit consente solo 256 valori discreti tra 0 (nero puro) e 1 (bianco puro). Pertanto, ogni passaggio tra i valori è 64 volte maggiore rispetto a 14 bit.

Se poi proviamo a cambiare il bilanciamento del bianco con queste gradazioni molto più frequenti, le aree che proviamo ad espandere spingono ciascuno dei passaggi nei dati che stiamo utilizzando oltre a un singolo passaggio nel file risultante. Quindi le gradazioni in quelle aree diventano ancora più grossolane. Le aree che riduciamo spingono ciascuno di questi passaggi in uno spazio più piccolo di un singolo passaggio nel file risultante. Ma poi tutti questi passaggi vengono riallineati per adattarsi alla gradazione di 256 passi tra '0' e '1'. Ciò si traduce spesso in bande o posterizzazione invece di transizioni fluide.

¹ Per essere più veloci e meno dispendiose in termini di risorse, alcune applicazioni di elaborazione non elaborate avranno una modalità "rapida" che modifica effettivamente la rappresentazione a 8 bit esistente sullo schermo quando si sposta un dispositivo di scorrimento delle impostazioni. Ciò si traduce spesso in bande o altri artefatti indesiderati, come la tinta viola che vedi nella jpeg con spostamento del colore nella domanda. Tuttavia, questo si applica solo all'anteprima che stai visualizzando. Quando il file viene convertito e salvato (esportato), le stesse istruzioni vengono effettivamente applicate ai dati non elaborati mentre vengono rielaborate e il banding o altri artefatti non vengono visualizzati (o non sono così gravi).

² Certo, potresti scattare una foto che contiene un solo colore puro nell'intero campo visivo. ma la maggior parte delle foto contiene un'ampia variazione di tonalità, tonalità e livelli di luminosità.

³ Per favore vedi: Perché le mie immagini RAW sono già a colori se il debayering non è ancora stato fatto?

Ciò spiegherebbe bande o posterizzazioni nell'immagine causate da una precisione ridotta ma dovrebbe essere ancora possibile spostare il punto bianco nella posizione corretta no?

Puoi cambiare il colore di un jpeg in una certa misura, ma la maggior parte delle informazioni necessarie per produrre tutti i colori che puoi produrre con i dati grezzi non è più lì. È stato scartato durante la conversione in RGB e la riduzione a 8 bit prima della compressione. L'unica cosa che ti rimane da lavorare sono i valori di ciascun pixel in quei tre canali di colore. Le curve di risposta per ciascuno di quei canali possono essere ridisegnate, ma tutto ciò che fa è aumentare o ridurre il valore per quel canale di colore in ciascuno dei pixel delle immagini. Non torna indietro e ripristina la demosaicing in base ai moltiplicatori del nuovo canale, poiché tali informazioni non vengono conservate in JPEG.

È fondamentale capire che nell'immagine di esempio aggiunta alla domanda, la seconda immagine non deriva dalla prima immagine. Sia la prima che la seconda immagine sono due diverse interpretazioni di esattamente gli stessi dati grezzi.Nessuno dei due è più originale dell'altro. Né è più "corretto" dell'altro in termini di rappresentazione valida dei dati contenuti nel file raw. Sono entrambi modi perfettamente legittimi di utilizzare i dati nel file raw per produrre un'immagine a 8 bit. Il primo è il modo in cui l'applicazione di conversione non elaborata e / o l'anteprima jpeg generata nella fotocamera hanno scelto di interpretare i dati. Il secondo è il modo in cui l'applicazione di conversione non elaborata ha interpretato i dati dopo avergli comunicato quali valori del sensore non elaborato si desidera siano tradotti in grigio / bianco. Quando si fa clic sulla stessa parte dell'immagine jpeg, gran parte delle informazioni sul colore necessarie per correggere l'immagine per sembrare che la seconda versione del file raw non fosse più presente e quindi non potesse essere utilizzata.

È semplicemente a causa della compressione con perdita di file tiff a JPEG e 32 bit che non avrebbe questo problema?

No, sebbene la compressione con perdita di dati sia una grande parte di essa. Così è la riduzione a 8 bit, che rende ogni passaggio tra '0' (nero puro) e '1' (saturazione completa) 64 volte più grande di un file raw a 14 bit. Ma va oltre la compressione jpeg.

Un paio di paragrafi da questa risposta a RAW a TIFF o PSD a 16 bit perde la profondità del colore :

Una volta che i dati nel file non elaborato sono stati trasformati in un file TIFF con correzione della gamma, il processo è irreversibile.

I file TIFF hanno tutte quelle fasi di elaborazione "integrate" nelle informazioni che contengono. Anche se un file TIFF a 16 bit non compresso è molto più grande di un tipico file raw da cui è derivato a causa del modo in cui ciascuno memorizza i dati, non contiene tutte le informazioni necessarie per invertire la trasformazione e riprodurre gli stessi dati esatti contenuto nel file raw. Esiste un numero quasi infinito di valori diversi nei dati a livello di pixel di un file non elaborato che avrebbe potuto essere utilizzato per produrre un determinato TIFF. Allo stesso modo, esiste un numero quasi infinito di file TIFF che possono essere prodotti dai dati in un file di immagine grezzo, a seconda delle decisioni prese su come i dati grezzi vengono elaborati per produrre il TIFF.

Il vantaggio dei TIFF a 16 bit rispetto ai TIFF a 8 bit è il numero di passaggi tra i valori più scuri e più luminosi per ciascun canale di colore nell'immagine. Questi passaggi più precisi consentono una maggiore manipolazione aggiuntiva prima di convertirsi in un formato a 8 bit senza creare artefatti come la fasciatura in aree di gradazione tonale.

Ma solo perché un TIFF a 16 bit ha più passaggi tra "0" e "65.535" rispetto a un file raw a 12 bit (0-4095) o 14 bit (0-16383), ciò non significa che il file TIFF mostri la stessa o maggiore gamma di luminosità. Quando i dati in un file raw a 14 bit sono stati trasformati in un file TIFF, il punto nero avrebbe potuto essere selezionato ad un valore come 2048. A qualsiasi pixel nel file raw con un valore inferiore a 2048 verrebbe assegnato un valore pari a 0 nel TIFF. Allo stesso modo, se il punto bianco fosse impostato, ad esempio, 8.191, qualsiasi valore nel file raw superiore a 8191 verrebbe impostato su 65.535 e il punto più luminoso di luce nel file raw verrebbe irrevocabilmente perso. Tutto ciò che è più luminoso nel file raw rispetto al punto bianco selezionato ha lo stesso valore nel TIFF, quindi nessun dettaglio viene conservato.

Ci sono un gran numero di domande esistenti qui che coprono gran parte dello stesso motivo. Eccone alcuni che potresti trovare utili:

I file RAW memorizzano 3 colori per pixel o solo uno?
Da RAW a TIFF o PSD a 16 bit perde la profondità del colore
Come posso iniziare con le impostazioni JPEG incorporate in Lightroom?
Perché l'aspetto dei file RAW cambia quando si passa da "lighttable" a "darkroom" in Darktable?
il bilanciamento del bianco manuale nikon d810 non è lo stesso di "As Shot" in Lightroom
Perché le immagini RAW sembrano peggiori dei JPEG nei programmi di modifica?
Abbinare i colori in Lightroom ad altri strumenti di modifica
Durante le riprese in RAW, è necessario postelaborarlo per far apparire bene l'immagine?

Perché c'è una perdita di qualità dalla fotocamera allo schermo del computer
Perché le mie foto sembrano diverse in Photoshop / Lightroom vs Canon EOS utility / nella fotocamera?
Perché le mie immagini sembrano diverse sulla mia fotocamera rispetto a quando sono importate sul mio laptop?
Come emulare l'elaborazione integrata nella fotocamera in Lightroom?
Conversione jpg Nikon in-camera vs lightroom
Perché l'anteprima di Lightroom / Photoshop cambia dopo il caricamento?


2
Ciò spiegherebbe bande o posterizzazioni nell'immagine causate da una precisione ridotta ma dovrebbe essere ancora possibile spostare il punto bianco nella posizione corretta no?
skyde,

2
Sì, questo ha senso, sta dicendo che è possibile che il colore dal grezzo venga tagliato quando convertito nella gamma di colori TIFF. E per questo motivo abbiamo ancora perso le informazioni che potrebbero essere necessarie per la correzione del bilanciamento del colore.
skyde,

1
Sono con skyde: solo che ci sono passaggi meno discreti nella risoluzione del colore non significa che il bilanciamento del bianco dia buoni risultati diversi visibili. Soprattutto se la versione jpeg ha un pesante tono viola. Una teoria più adatta sarebbe che i possibili valori di correzione interna sono bloccati in un intervallo più ristretto in jpeg rispetto a raw, il che si aggiunge al fatto che un raw viene interpretato dai dati grezzi del sensore e jpeg sono valori di colore discreti.
Horitsu,

1
Mi unisco anche a skyde qui. Questa è solo una storia lunga e irrilevante sulle differenze tra i formati raw e jpeg. Non c'è nulla qui, che in realtà risponda alla domanda originale.
jarnbjo,

1
@jarnbjo La maggior parte della risposta viene spesa per spiegare la differenza tra i dati grezzi effettivi nel file di immagine e ciò che si vede sul loro schermo quando si "visualizza" uno tra molte possibili interpretazioni dei dati grezzi. È stata la mia esperienza che la maggior parte di questi tipi di domande sorgono a causa di una fondamentale mancanza di comprensione del fatto che ciò che si vede sullo schermo non è mai "IL" file raw. È stata anche la mia esperienza che affermarla in diversi modi aumenta le possibilità che la lampadina accenda finalmente l'interrogatore. YMMV.
Michael C,

3

La semplice risposta è perché la tua fotocamera e il tuo processore RAW (LR, Darktable, solo per citarne alcuni) usano algoritmi diversi per elaborare i file RAW. Le ragioni sono molte e non possiamo valutare quegli algoritmi perché molti sono segreti commerciali. Ad esempio, la temperatura di colore della luce diurna Canon (EOS 700D) è di circa 5200K, mentre quella di Lightroom è di 5500K. In alcune situazioni questo fa la differenza.

Per essere precisi, i file RAW non hanno una temperatura di colore predefinita. È incluso come meta informazione. I processori RAW applicano un determinato bilanciamento del bianco quando eseguono le operazioni descritte.

Modifica: e in base al tuo commento: non puoi cambiare molto la temperatura del colore sul file JPEG perché è già "cotto". La temperatura di colore è già applicata e non si dispone di una profondità di colore sufficiente per "spostare" i colori.


Gli algoritmi di Darktable non sono segreti commerciali.
Leggi il mio profilo

@mattdm, true. Ma quelli di LR, ON1, CaptureOne, altri processori RAW non di risorse sono ...
Romeo Ninov,

Ma qualcosa di tutto ciò è davvero rilevante per la domanda? Le basi della correzione del bilanciamento del bianco sono ampiamente conosciute e implementate nel software aperto.
Leggi il mio profilo il

Le basi sì. Ma l'implementazione può essere diversa. Ed esattamente quei dettagli di solito sono tenuti segreti (per software non di risorse)
Romeo Ninov

1

Si è possibile JPEG bilanciamento del bianco, ma gli strumenti di modifica utilizzata per operare su RAW vs altre immagini tendono a comportarsi in modo diverso (diversi algoritmi). Ulteriore:

  • Lo strumento contagocce è impreciso, il che rende difficile replicare i risultati.

  • La profondità di bit dei JPEG limita la quantità di colori che è possibile spostare rispetto a RAW.

  • La curva gamma rovina tutto.

  • I calcoli su dati lineari vs dati logaritmici si comportano diversamente.

Questo non è esattamente come funziona, ma per illustrare:

  • Supponiamo di voler moltiplicare alcuni dati (1, 4, 8) per 2. Il risultato è (2, 8, 16). Con dati lineari, il risultato massimo, 16, è quattro volte il risultato minimo, 2.

  • Ma con le rappresentazioni logaritmiche, il divario tra valori adiacenti, come 2 5 e 2 6 , è molto più grande della differenza tra valori lineari, 5 e 6. Inoltre, il risultato massimo, 2 16 , non è solo 32768 volte più grande del risultato minimo, 2 2 , è anche 256 volte il valore originale, 2 8 .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.