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:
- Converta os dados brutos do sensor usando o algoritmo (demosaicing / debayering).
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.
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
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
- 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?
fonte
Respostas:
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?
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.
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 :
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?
fonte
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.
fonte
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 .
fonte