Por que o software pode corrigir o balanço de brancos com mais precisão para arquivos RAW do que com JPEGs?


11

Por que as correções de balanço de branco JPEG pós-processamento não são tão precisas quanto o balanço de branco com o Raw?

Meu entendimento é que, ao fotografar jpeg, a câmera executa internamente as seguintes etapas:

  1. Converta os dados brutos do sensor usando o algoritmo (demosaicing / debayering).
  2. Converter em espaço linear

    uma. Usando a tabela de consulta, mapeie o valor bruto para o espaço linear

    b. O nível de preto para cada pixel é calculado e subtraído.

    c. O valor de cada pixel é redimensionado para 0,0 a 1,0 usando o Whitelevel

    d. Os valores redimensionados são cortados para 0,0 a 1,0 intervalo lógico.

  3. Mapeando o espaço de cores da câmera para o espaço CIE XYZ com ajuste de balanço de branco

    uma. Converta em XYZ (D50) usando CameraToXYZ_D50 = Chromatic_adapatation_matrix * CameraToXYZ_matrix

  4. Conversão CIE XYZ para sRGB

    uma. Computar RGB linear usando CIE XYZ para matriz RGB linear

    b. Computar Rec709 sRGB usando transformação de curva gama em RGB linear

  5. Converta sRGB em 8 bits e comprima usando JPEG

Se isso estiver correto, não entendo por que o JPEG não pode ter o balanço de brancos corrigido da mesma forma que o Raw!

É simplesmente por causa da compactação com perdas de JPEG e 32 bits tiff arquivo não teria esse problema?

insira a descrição da imagem aqui


1
O que faz você pensar que o JPEG WB não é tão preciso quanto cru? O que você quer dizer com precisão ? Você quer dizer que a câmera não costuma adivinhar tão bem quanto uma pessoa qualificada usando um aplicativo de conversão bruto? Ou outra coisa?
Michael C

Quero dizer que, se eu disser à minha câmera que salve uma cópia raw e JPEG da mesma imagem e, em seguida, abra-as no lightroom e tente corrigir o balanço de branco usando o seletor de cores, clicando no mesmo local exato da imagem. perfeito enquanto o jpeg ainda tem uma cor estranha.
skyde

2
Essa é uma pergunta muito diferente. Vou editar o título para refletir o que acho que você realmente está perguntando ...
Por favor, leia meu perfil

5
A primeira imagem NÃO é "O arquivo bruto original". É uma de um número infinito possível de interpretações dos dados brutos que seu aplicativo de conversão bruta produziu e exibiu na tela em 8 bits.
Michael C

2
Provavelmente não é o ponto mais importante, mas sua etapa 2 é na verdade duas etapas distintas, e elas podem não ser executadas na ordem em que você as apresenta (o que seria uma maneira adicional pela qual o WB é "cozido" no JPEG final cor).
Junkyardsparkle

Respostas:


9

Por que o software pode corrigir o balanço de brancos com mais precisão para arquivos RAW do que com JPEGs?

Há uma diferença fundamental entre trabalhar com os dados brutos reais para produzir uma interpretação diferente dos dados brutos do que a interpretação inicial de 8 bits do arquivo bruto que você vê na tela, em comparação com o trabalho com um jpeg de 8 bits em que todas as informações são exibidas. o arquivo é o que você vê na sua tela.

Quando você usa o clicker branco em um arquivo "bruto", não está corrigindo a imagem exibida na tela (que é uma renderização de 8 bits no formato jpeg, que é uma das muitas interpretações possíveis dos dados em um arquivo de imagem bruto ) Você está dizendo ao aplicativo de conversão bruta para voltar e reconverter os dados no arquivo bruto em uma imagem exibível usando um conjunto diferente de multiplicadores de canal de cores.

Você está criando outra imagem a partir dos mesmos dados brutos que foram usados ​​para criar a primeira versão que você vê na tela. Mas o aplicativo está voltando ao início e usando todos os dados no arquivo bruto para criar uma segunda interpretação diferente dos dados brutos com base em suas diferentes instruções sobre como esses dados devem ser processados. Não está começando com as informações limitadas exibidas na tela e corrigindo-as. Se isso acontecesse, você obteria o mesmo resultado obtido ao trabalhar com o jpeg. ¹

O arquivo bruto contém muito mais informações do que as exibidas no monitor quando você 'abre' um arquivo bruto. Os arquivos de imagem bruta contêm dados suficientes para criar um número quase infinito de interpretações diferentes desses dados que caberão em um arquivo jpeg de 8 bits.²

Sempre que você abre um arquivo bruto e o olha na tela, não está vendo "O arquivo bruto". ³ Você está visualizando uma dentre um número quase incontável de possíveis interpretações dos dados no arquivo bruto. Os dados brutos em si contêm uma única medida de valor de brilho (monocromático) por cada poço de pixel. Com os sensores de câmera mascarados da Bayer (a grande maioria das câmeras digitais coloridas usa filtros da Bayer), cada pixel possui um filtro de cores na frente que é 'vermelho', 'verde' ou 'azul' (as 'cores' reais de os filtros na maioria das máscaras Bayer variam de verde ligeiramente amarelado a amarelo alaranjado para 'vermelho', verde ligeiramente azulado para 'verde' e violeta ligeiramente azulado para 'azul' -essas cores correspondem mais ou menos ao centro de sensibilidade dos três tipos de cones em nossas retinas ). Para uma discussão mais completa de como obtemos informações de cores dos valores únicos de brilho medidos em cada pixel, consulte Arquivos RAW que armazenam 3 cores por pixel, ou apenas uma?

Quando você altera o balanço de branco de um arquivo bruto, não está fazendo alterações na interpretação de 8 bits do arquivo bruto que vê na tela, mas também na maneira como os dados brutos monocromáticos lineares de 14 bits são interpretados e exibido na tela com o balanço de branco atualizado.Ou seja, você está aproveitando ao máximo as 16.384 etapas lineares monocromáticas discretas que o arquivo bruto contém para cada pixel, não as 256 etapas discretas de gama corrigida em três canais de cores para cada pixel que você vê na tela de 8 bits como uma representação desse arquivo bruto. Você também está aproveitando todas as outras informações contidas nos dados brutos da imagem, incluindo pixels mascarados e outras informações que são descartadas quando o arquivo é convertido em um formato de 8 bits para ser exibido na tela.

A aparência da imagem que você vê no monitor ao abrir um arquivo bruto é determinada pela forma como o aplicativo usado para abrir o arquivo interpreta os dados brutos no arquivo para produzir uma imagem visível. Mas essa não é a "única" maneira de exibir "O arquivo bruto original". É exatamente assim que seu aplicativo - ou a câmera que produziu a visualização jpeg anexada ao arquivo bruto - processou as informações no arquivo bruto para exibi-las na tela.

Cada aplicativo possui seu próprio conjunto de parâmetros padrão que determinam como os dados brutos são processados. Um dos parâmetros mais significativos é como o balanço de branco usado para converter os dados brutos é selecionado. A maioria dos aplicativos possui muitos conjuntos diferentes de parâmetros que podem ser selecionados pelo usuário, que fica livre para alterar configurações individuais no conjunto de instruções usadas para interpretar inicialmente os dados no arquivo bruto. Muitos aplicativos usarão os multiplicadores de balanço de branco / canal de cores estimados pela câmera (ao usar AWB na câmera) ou inseridos pelo usuário (ao usar a correção CT + WB na câmera) no momento em que a foto foi tirada. Mas esse não é o único balanço de branco legítimo que pode ser usado para interpretar os dados brutos.

Com um arquivo bruto de 14 bits, existem 16.384 valores discretos entre 0 (preto puro) e 1 (branco puro). Isso permite etapas muito pequenas entre cada valor. Mas esses são valores de luminância monocromática . Quando os dados são desmosaificados, as curvas gama são aplicadas e a conversão para um espaço de cor específico é feita, os multiplicadores de conversão WB são geralmente aplicados a esses valores de 14 bits. A etapa final do processo é remapear os valores resultantes até 8 bits antes de fazer a compactação com perda de arquivo. O 8 bits permite apenas 256 valores discretos entre 0 (preto puro) e 1 (branco puro). Assim, cada passo entre os valores é 64X maior que com 14 bits.

Se tentarmos alterar o WB com essas gradações muito curtas, as áreas que tentamos expandir aumentam cada uma das etapas nos dados que estamos usando além de uma única etapa no arquivo resultante. Portanto, as gradações nessas áreas se tornam ainda mais grosseiras. As áreas reduzidas empurram cada uma dessas etapas para um espaço menor que uma única etapa no arquivo resultante. Mas todos esses passos são realinhados para se ajustarem à gradação de 256 passos entre '0' e '1'. Isso geralmente resulta em faixas ou posterização em vez de transições suaves.

¹ Para ser mais rápido e com menos recursos, alguns aplicativos de processamento bruto terão um modo "rápido" que realmente modifica a representação de 8 bits existente na tela quando você move um controle deslizante de configuração. Isso geralmente resulta em faixas ou outros artefatos indesejáveis, como a tonalidade roxa que você vê no jpeg com alteração de cor na pergunta. Isso é aplicado apenas à visualização que você está visualizando. Quando o arquivo é convertido e salvo (exportado), as mesmas instruções são realmente aplicadas aos dados brutos que são reprocessados ​​e as faixas ou outros artefatos não são vistos (ou não são tão graves).

² Claro, você pode tirar uma foto que contenha uma única cor pura em todo o campo de visão. mas a maioria das fotos contém uma grande variação de tons, matizes e níveis de brilho.

³ Por favor, veja: Por que minhas imagens RAW já estão coloridas se o desembaçamento ainda não foi feito?

Isso explicaria faixas ou posterizações na imagem causadas por precisão reduzida, mas ainda deve ser possível mover o ponto branco na posição correta, não?

Você pode alterar a cor de um jpeg para um grau, mas a maioria das informações necessárias para produzir todas as cores que você pode produzir com os dados brutos não está mais lá. Foi descartado durante a conversão para RGB e reduzido para 8 bits antes da compactação. Você só precisa trabalhar com os valores de cada pixel nesses três canais de cores. As curvas de resposta de cada um desses canais podem ser redesenhadas, mas tudo o que faz é aumentar ou diminuir o valor desse canal de cores em cada um dos pixels das imagens. Ele não volta e refaz o demosaicing com base em novos multiplicadores de canal, porque essas informações não são preservadas no JPEG.

É vital entender que, na imagem de exemplo adicionada à pergunta, a segunda imagem não é derivada da primeira imagem. A primeira e a segunda imagens são duas interpretações diferentes dos mesmos dados brutos.Nem é mais original que o outro. Nem é mais "correto" que o outro em termos de ser uma representação válida dos dados contidos no arquivo bruto. Ambas são maneiras perfeitamente legítimas de usar os dados no arquivo bruto para produzir uma imagem de 8 bits. A primeira é a maneira como seu aplicativo de conversão bruta e / ou a visualização em jpeg gerada em sua câmera optaram por interpretar os dados. A segunda é a maneira como seu aplicativo de conversão bruta interpretou os dados depois que você informou quais valores de sensor brutos você queria que fossem traduzidos em cinza / branco. Quando você clicou na mesma parte da imagem jpeg, muitas das informações de cores necessárias para corrigir a imagem para se parecer com a segunda versão do arquivo bruto não estavam mais lá e, portanto, não podiam ser usadas.

É simplesmente por causa da compactação com perdas de JPEG e 32 bits tiff arquivo não teria esse problema?

Não, embora a compactação com perdas seja uma grande parte dela. O mesmo ocorre com a redução para 8 bits, o que torna cada etapa entre '0' (preto puro) e '1' (saturação total) 64X tão grande quanto em um arquivo bruto de 14 bits. Mas vai além da compactação jpeg.

Alguns parágrafos desta resposta para RAW to TIFF ou PSD 16bit perdem a profundidade de cor :

Depois que os dados no arquivo bruto são transformados em um arquivo TIFF com correção de gama e demosaiced, o processo é irreversível.

Os arquivos TIFF têm todas essas etapas de processamento "incorporadas" às informações que eles contêm. Embora um arquivo TIFF de 16 bits não compactado seja muito maior que um arquivo bruto típico do qual é derivado devido à maneira como cada um armazena os dados, ele não contém todas as informações necessárias para reverter a transformação e reproduzir os mesmos dados exatos contido no arquivo bruto. Há um número quase infinito de valores diferentes nos dados no nível de pixel de um arquivo bruto que poderia ter sido usado para produzir um TIFF específico. Da mesma forma, há um número quase infinito de arquivos TIFF que podem ser produzidos a partir dos dados em um arquivo de imagem bruto, dependendo das decisões tomadas sobre como os dados brutos são processados ​​para produzir o TIFF.

A vantagem de TIFFs de 16 bits versus TIFFs de 8 bits é o número de etapas entre os valores mais escuros e mais brilhantes de cada canal de cores na imagem. Essas etapas mais refinadas permitem mais manipulação adicional antes de converter para um formato de 8 bits sem criar artefatos, como faixas em áreas de gradação de tons.

Mas apenas porque um TIFF de 16 bits possui mais etapas entre "0" e "65.535" do que um arquivo bruto de 12 bits (0-4095) ou 14 bits (0-16383), isso não significa que o arquivo TIFF mostre o mesmo ou maior alcance de brilho. Quando os dados em um arquivo bruto de 14 bits foram transformados em um arquivo TIFF, o ponto preto poderia ter sido selecionado em um valor como 2048. Qualquer pixel no arquivo bruto com um valor menor que 2048 receberia um valor 0 no TIFF. Da mesma forma, se o ponto branco fosse definido em, digamos, 8.191, qualquer valor no arquivo bruto superior a 8191 seria definido em 65.535 e a parada de luz mais brilhante no arquivo bruto seria irrevogavelmente perdida. Tudo o que há de mais brilhante no arquivo bruto do que o ponto branco selecionado tem o mesmo valor no TIFF, portanto, nenhum detalhe é preservado.

Há um grande número de perguntas existentes aqui que cobrem grande parte do mesmo terreno. Aqui estão alguns deles que você pode achar úteis:

Os arquivos RAW armazenam 3 cores por pixel, ou apenas uma?
RAW para TIFF ou PSD 16 bits perde a profundidade de cores
Como começo com as configurações de JPEG da câmera no Lightroom?
Por que a aparência dos arquivos RAW muda ao mudar de "lighttable" para "darkroom" no Darktable?
O nikon d810 manual WB não é o mesmo que "As Shot" no Lightroom
Por que as imagens RAW parecem piores que as JPEGs nos programas de edição?
Corresponder cores no Lightroom a outras ferramentas de edição
Ao fotografar em RAW, você precisa processá-lo posteriormente para melhorar a imagem.

Por que há uma perda de qualidade da câmera na tela do computador
Por que minhas fotos parecem diferentes no utilitário Photoshop / Lightroom vs Canon EOS / na câmera?
Por que minhas imagens parecem diferentes na minha câmera e quando importadas para o meu laptop?
Como emular o processamento na câmera no Lightroom?
Conversão de câmera Nikon na câmera x jpg do lightroom
Por que minha visualização do Lightroom / Photoshop muda após o carregamento?


2
Isso explicaria faixas ou posterizações na imagem causadas por precisão reduzida, mas ainda deve ser possível mover o ponto branco na posição correta, não?
skyde

2
Sim, isso faz sentido, pois é possível que a cor do material bruto seja cortada quando convertida para a gama de cores TIFF. E, por isso, ainda perdemos as informações necessárias para a correção do equilíbrio de cores.
skyde

1
Estou com a skyde: existem apenas etapas menos discretas na resolução de cores, não significa que o balanço de branco resulte em bons resultados visíveis. Especialmente se a versão jpeg tiver um tom púrpura pesado. Uma teoria mais adequada seria que os possíveis valores de correção interna sejam fixados em um intervalo mais estreito no jpeg do que no bruto, o que vem além do fato de que um bruto é interpretado a partir de dados brutos do sensor e jpeg são valores de cores discretos.
Horitsu 23/08/18

1
Também entrei na skyde aqui. Esta é apenas uma história longa e irrelevante sobre as diferenças entre os formatos raw e jpeg. Não há nada aqui, que realmente responda à pergunta original.
precisa saber é

1
@jarnbjo A maior parte da resposta é gasta explicando a diferença entre os dados brutos reais no arquivo de imagem e o que se vê na tela quando um "visualiza" uma entre muitas interpretações possíveis dos dados brutos. Foi minha experiência que a maioria desses tipos de perguntas surge devido a uma falta fundamental de entendimento de que o que se vê na tela nunca é "O" arquivo bruto. Também foi minha experiência afirmar que de várias maneiras diferentes aumenta as chances de que a lâmpada finalmente acenda para o interlocutor. YMMV.
26618 Michael C

3

A resposta simples é porque sua câmera e seu processador RAW (LR, Darktable, para citar alguns) usam algoritmos diferentes para processar arquivos RAW. Os motivos são muitos e não podemos avaliar esses algoritmos porque muitos são segredos comerciais. Por exemplo, a temperatura da luz do dia da Canon (EOS 700D) é de cerca de 5200K, enquanto a do Lightroom é de 5500K. Em algumas situações, isso faz a diferença.

Para ser mais preciso, os arquivos RAW não têm temperatura de cor predefinida. Está incluído como meta informação. Os processadores RAW aplicam WB específico quando executam as operações que você descreve.

Editar: e com base no seu comentário: Você não pode alterar muita temperatura de cor no arquivo JPEG porque ele já está "cozido". A temperatura da cor já está aplicada e você não tem profundidade de cor suficiente para "mudar" as cores.


Os algoritmos do Darktable não são segredos comerciais.
Por favor, leia meu perfil

@mattdm, é verdade. Mas aqueles de LR, ON1, CaptureOne, outra nonopensource processadores RAW são ...
Romeo Ninov

Mas isso é realmente relevante para a questão? Os princípios básicos da correção do balanço de branco são amplamente conhecidos e implementados em software aberto.
Por favor, leia meu perfil

O básico sim. Mas a implementação pode ser diferente. E exatamente esses detalhes normalmente são mantidos em segredo (para software nonopensource)
Romeo Ninov

1

Ele é possível JPEGs de balanço de branco, mas as ferramentas de edição usado para operar em RAW vs outras imagens tendem a se comportar de forma diferente (algoritmos diferentes). Mais distante:

  • A ferramenta conta-gotas é imprecisa, o que dificulta a replicação dos resultados.

  • A profundidade de bits dos JPEGs limita a quantidade de cores que podem ser alteradas em relação ao RAW.

  • A curva gama estraga tudo.

  • Cálculos em dados lineares versus dados logarítmicos se comportam de maneira diferente.

Não é exatamente assim que funciona, mas para ilustrar:

  • Suponha que você queira multiplicar alguns dados (1, 4, 8) por 2. O resultado é (2, 8, 16). Com dados lineares, o resultado máximo, 16, é quatro vezes o resultado mínimo, 2.

  • Porém, com representações logarítmicas, a diferença entre valores adjacentes, como 2 5 e 2 6 , é muito maior que a diferença entre valores lineares, 5 e 6. Além disso, o resultado máximo, 2 16 , não é apenas 32768 vezes maior que o resultado mínimo, 2 2 , também é 256 vezes o valor original, 2 8 .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.