Como é um arquivo RAW não processado?

86

Sei que as pessoas usam softwares sofisticados como o Lightroom ou o Darktable para pós-processar seus arquivos RAW. Mas e se eu não fizer? Como é o arquivo, você sabe, RAW ?

mattdm
fonte
21
O Matrix. Parece a matriz.
Hueco 21/02
2
Relacionado; Os arquivos RAW armazenam 3 cores por pixel, ou apenas uma? e Por que vermelho, verde e azul são as cores primárias da luz? o que explica como os sensores das câmeras digitais diminuem a maneira como os olhos / cérebros percebem as cores que, em certo sentido, não existem de fato da maneira que geralmente assumimos.
Michael C
3
@ Hueco, uma matriz Bayer, talvez.
Mark
Mudei a discussão sobre a melhor forma de lidar com isso como uma pergunta canônica para conversar . Vamos continuar por aí para que não haja ruído nos comentários, seja qual for a decisão.
AJ Henderson
1
O que parece não é a "imagem bruta diretamente da câmera" que muitas pessoas pensam ter quando abrem um arquivo de imagem bruta em um aplicativo de processamento bruto. Essa é a base para esta pergunta.
Michael C

Respostas:

185

Existe uma ferramenta chamada dcraw que lê vários tipos de arquivos RAW e extrai dados de pixel deles - na verdade, é o código original na parte inferior de muitos softwares de conversão de software livre e até mesmo comerciais.

Eu tenho um arquivo RAW da minha câmera e usei o dcraw em um modo que solicita a criação de uma imagem usando valores literais e sem escala de 16 bits do arquivo. Eu converti isso para um JPEG de 8 bits para compartilhamento, usando gama perceptiva (e reduzida para upload). É assim:

dcraw -E -4

Obviamente, o resultado é muito escuro, embora se você clique para expandir, e se o seu monitor é decente, você pode ver algum indício de algo .

Aqui está o JPEG colorido fora da câmera renderizado a partir do mesmo arquivo RAW:

JPEG fora da câmera

(Crédito da foto: minha filha usando minha câmera, a propósito.)

Não é totalmente escuro, afinal. Os detalhes de onde exatamente todos os dados estão ocultos são mais bem abordados por uma pergunta aprofundada , mas, em suma, precisamos de uma curva que expanda os dados pelo intervalo de sombras e luzes disponíveis em um JPEG de 8 bits em uma tela típica .

Felizmente, o programa dcraw possui outro modo que se converte em uma imagem mais "útil", mas ainda mal processada. Isso ajusta o nível do preto mais escuro e do branco mais brilhante e redimensiona os dados adequadamente. Ele também pode definir o balanço de branco automaticamente ou a partir da configuração da câmera gravada no arquivo RAW, mas neste caso eu disse para não , pois queremos examinar o mínimo de processamento possível.

Ainda há uma correspondência individual entre os photosites no sensor e os pixels na saída (embora novamente eu tenha diminuído essa escala para upload). É assim:

dcraw -d -r 1 1 1 1

Agora, isso é obviamente mais reconhecível como uma imagem - mas se ampliarmos (aqui, para que cada pixel seja realmente ampliado 10 ×), veremos que é tudo ... dotty:

10 × zoom e corte

Isso ocorre porque o sensor é coberto por uma matriz de filtros de cores - pequenos filtros coloridos do tamanho de cada photosite. Como minha câmera é uma câmera Fujifilm, ela usa um padrão que a Fujifilm chama de "X-Trans", que se parece com o seguinte:

10 × xtrans

Existem alguns detalhes sobre o padrão específico que são interessantes, mas no geral não são super importantes. Atualmente, a maioria das câmeras usa algo chamado padrão Bayer (que se repete a cada 2 × 2 em vez de 6 × 6). Ambos os padrões têm mais sites de filtro verde do que os vermelhos ou azuis. O olho humano é mais sensível à luz nesse intervalo e, portanto, usar mais pixels para permitir mais detalhes com menos ruído.

No exemplo acima, a seção central é um pedaço do céu, que é um tom de ciano - em RGB, é muito azul e verde sem muito vermelho. Portanto, os pontos escuros são os locais dos filtros vermelhos - eles são escuros porque essa área não tem tanta luz nos comprimentos de onda que passam por esse filtro. A faixa diagonal no canto superior direito é uma folha verde escura, portanto, enquanto tudo está um pouco escuro, você pode ver o verde - os blocos maiores de 2 × 2 com esse padrão de sensor - são relativamente os mais brilhantes nessa área.

Então, de qualquer maneira, aqui está uma seção 1: 1 (quando você clica para obter a versão completa, um pixel na imagem será um pixel na tela) do JPEG fora da câmera:

Visualização 1: 1 da imagem fora da câmera

... e aqui está a mesma área da conversão em escala de cinza rápida acima. Você pode ver o pontilhado no padrão X-Trans:

1: 1 recorte da versão dcraw -d -r 1 1 1 1

Podemos pegar isso e colorir os pixels para que os correspondentes a verde na matriz sejam mapeados para níveis de verde em vez de cinza, vermelho para vermelho e azul para azul. Isso nos dá:

1: 1 com coloração xtrans

... ou, para a imagem completa:

imagem completa de dcraw -d -r 1 1 1 1 com colorização xtrans

O tom verde é muito aparente, o que não é surpresa, pois há 2½ × mais pixels verdes do que vermelho ou azul. Cada bloco 3 × 3 possui dois pixels vermelhos, dois pixels azuis e cinco pixels verdes. Para combater isso, criei um programa de dimensionamento muito simples que transforma cada um desses blocos 3 × 3 em um único pixel. Nesse pixel, o canal verde é a média dos cinco pixels verdes e os canais vermelho e azul a média dos dois pixels vermelhos e azuis correspondentes. Isso nos dá:

xtrans colorized, bloco ingênuo demosaicking

... o que na verdade não é tão ruim. O balanço de brancos está desativado, mas desde que eu decidi intencionalmente não me ajustar a isso, isso não é surpresa. Pressionar o "balanço de branco automático" em um programa de criação de imagens compensa isso (como teria deixado o dcraw definir isso em primeiro lugar):

xtrans colorido, desmembramento de blocos ingênuos + níveis automáticos

Os detalhes não são excelentes em comparação com os algoritmos mais sofisticados usados ​​em câmeras e programas de processamento RAW, mas claramente o básico está lá. Melhores abordagens criam imagens coloridas ponderando os diferentes valores em torno de cada pixel, em vez de passar por grandes blocos. Como a cor geralmente muda gradualmente nas fotografias, isso funciona muito bem e produz imagens em que a imagem é em cores, sem reduzir as dimensões do pixel. Também existem truques inteligentes para reduzir artefatos de borda, ruído e outros problemas. Esse processo é chamado de "desmosaicing", porque o padrão de filtros coloridos se parece com um mosaico de azulejos.

Suponho que essa visão (onde eu realmente não tomei nenhuma decisão e o programa não fizesse nada automaticamente inteligente) poderia ter sido definida como a "aparência padrão padrão" do arquivo RAW, encerrando assim muitos argumentos da Internet. Mas, não existe esse padrão - não existe uma regra de que essa interpretação "ingênua" em particular seja especial.

E este não é o único ponto de partida possível. Todos os programas de processamento RAW do mundo real têm suas próprias idéias de um estado padrão básico para aplicar a um novo arquivo RAW em carga. Eles precisam fazer alguma coisa (caso contrário, teríamos aquela coisa sombria e inútil no início deste post), e geralmente eles fazem algo mais inteligente do que minha simples conversão manual, o que faz sentido, porque isso obtém melhores resultados de qualquer maneira.

mattdm
fonte
4
Bela imagem. E ótima resposta.
Marc.2377 24/02
10

É uma grade realmente grande de números. Tudo o resto está processando.

WolfgangGroiss
fonte
Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
AJ Henderson
7

Sei que já foi respondido muito bem pelo mattdm, mas achei que você poderia achar este artigo interessante:

Genética de dados: como funcionam as câmeras digitais

Caso o link seja desativado, aqui está um resumo:

O olho humano é mais sensível às cores na região do comprimento de onda verde (coincide com o fato de que o sol emite mais intensamente na região verde).

O olho da câmera (dispositivo de acoplamento de carga (CCD) ou semicondutor de óxido de metal complementar (CMOS)) é sensível apenas à intensidade da luz, não à cor.

Os filtros ópticos são usados ​​para filtrar diferentes comprimentos de onda da luz. Por exemplo, um filtro verde passa apenas a luz verde passar.

Os filtros ópticos usados ​​nas câmeras digitais são do tamanho de sensores de pixel individuais e são organizados em uma grade para corresponder à matriz de sensores. São usados ​​filtros vermelho, verde e azul (mais ou menos como nossas células cônicas). No entanto, como nossos olhos são mais sensíveis ao verde, o filtro de matriz da Bayer possui 2 filtros de pixel verde para cada pixel vermelho e azul. A matriz Bayer possui filtros verdes formando um padrão quadriculado, enquanto os filtros vermelho e azul ocupam linhas alternadas.

Voltando à sua pergunta original: como é um arquivo RAW não processado?

Parece uma estrutura quadriculada em preto e branco da imagem original.

O software sofisticado para pós-processamento dos arquivos RAW aplica primeiro o filtro Bayer. Parece mais com a imagem real depois disso, com cores na intensidade e nos locais corretos. No entanto, ainda existem artefatos da grade RGB do filtro Bayer, porque cada pixel é apenas uma cor.

Existem vários métodos para suavizar o arquivo RAW com código de cores. A suavização dos pixels é semelhante à desfocagem, pelo que a suavização em excesso pode ser uma coisa ruim.

Alguns dos métodos de demosaicing são descritos brevemente aqui:

Vizinho mais próximo: o valor de um pixel (cor única) é aplicado aos outros vizinhos coloridos e as cores são combinadas. Nenhuma cor "nova" é criada nesse processo, apenas as cores originalmente percebidas pelo sensor da câmera.

Interpolação linear: por exemplo, calcula a média dos dois valores azuis adjacentes e aplica o valor médio azul ao pixel verde entre os pixels azuis adjacentes. Isso pode desfocar as bordas afiadas.

Interpolação quadrática e cúbica: semelhante à interpolação linear, aproximações de ordem superior para a cor intermediária. Eles usam mais pontos de dados para gerar melhores ajustes. linear olha apenas para dois, quadrático para três e cúbico para quatro para gerar uma cor intermediária.

Splines Catmull-Rom: semelhante ao cúbico, mas leva em consideração o gradiente de cada ponto para gerar a cor intermediária.

Meio cosseno: usado como exemplo de método de interpolação, ele cria meios cossenos entre cada par de cores semelhantes e possui uma curva suave flexionada entre eles. No entanto, como observado no artigo, ele não oferece nenhuma vantagem para as matrizes Bayer devido ao arranjo das cores. É equivalente a interpolação linear, mas a um custo computacional mais alto.

O software de pós-processamento mais avançado possui melhores métodos de desmagnetização e algoritmos inteligentes. Por exemplo, eles podem identificar bordas nítidas ou alterações de alto contraste e preservar sua nitidez ao combinar os canais de cores.

jreese
fonte
-6

Acho que muitas pessoas imaginam que os arquivos brutos são simplesmente uma matriz de valores de pixels diretamente do sensor da câmera. Existem casos em que esse é realmente o caso, e você precisa fornecer algumas informações sobre o sensor para permitir que o software interprete a imagem. Porém, muitas das câmeras de consumidores geralmente fornecem "arquivos brutos" que estão mais ou menos em conformidade com a especificação de arquivo TIFF (em alguns casos, as cores podem estar desativadas). Pode-se tentar simplesmente alterar a extensão do arquivo para ".tif" e ver o que acontece ao abrir o arquivo. Acho que alguns de vocês terão uma boa imagem, mas nem todos, porque existem diferenças entre as diferentes câmeras de vídeo que resolvem isso.

Um arquivo TIFF em vez de um "arquivo bruto real" é uma boa solução. Um arquivo TIFF pode ter 16 bits por cor. Isso é suficiente para todas as câmeras que eu conheço.

Ed: Eu me pergunto por que essa resposta foi reduzida. A resposta está essencialmente correta (com reserva para o fato de que os fabricantes de câmeras não precisam usar estruturas TIFF, mas muitos usam).

Sobre a parte da matriz de pixels diretamente para fora do sensor, não é ridículo esperar algo assim. Porque é assim que muitos sensores fora do mercado de câmeras de consumidor funcionam. Nesses casos, você deve fornecer um arquivo separado que descreva o sensor.

A propósito, a palavra "RAW" é usada porque deve significar que obtemos os dados do sensor não processados. Mas é razoável que os fabricantes de câmeras usem um formato estruturado em vez de arquivos brutos de verdade. Dessa forma, o fotógrafo não precisa conhecer os dados exatos do sensor.

Ulf Tennfors
fonte
2
Eu tinha aplicações de recuperação de arquivo que "recuperados" arquivos .CR2 como TIFF. Esses arquivos não seriam abertos usando qualquer aplicativo que possa funcionar com TIFFs. Alterar as extensões de arquivo de volta para .cr2 os tornou arquivos .cr2 perfeitamente utilizáveis.
Michael C
5
Isso não quer dizer que os arquivos RAW nem sempre usem contêineres no formato TIFF - isso é absolutamente correto. É que o que você está vendo provavelmente não são os dados "RAW" no sentido que estou procurando.
mattdm 21/02
2
Ok, para esclarecer, o arquivo usa estruturas do formato de arquivo TIFF. Mas, como não faz exatamente o que a especificação TIFF diz, não é um arquivo TIFF estrito. Mas o ponto é que uma biblioteca TIFF pode ser usada para ler o arquivo. Não é necessário fazer tudo do zero para ler esse arquivo.
Ulf Tennfors
5
Ninguém com algum senso esperaria que um arquivo RAW fosse dados diretamente do sensor, sem nenhum metadado de tempo, informações da câmera etc. O fato de formatos semelhantes a TIFF serem úteis para estruturar os dados não é realmente importante, nem diminui o princípio conceitual de que esses dados são "diretamente" do sensor sem pós-processamento.
whatsisname 21/02
3
TIFF é um contêiner, não um formato de imagem. você pode armazenar dados em TIFF e ainda assim ter dados brutos do sensor em vez de uma imagem que qualquer pessoa sem conhecimento específico da câmera possa usar.
ths