2 pontos por GN⁺ 2025-12-29 | 1 comentários | Compartilhar no WhatsApp
  • Um experimento que mostra, passo a passo, em que formato os dados RAW do sensor de uma câmera digital são registrados
  • Os dados iniciais aparecem em escala de cinza, com a saída ADC de 14 bits simplesmente mapeada para RGB 0–255, e a faixa real de brilho é limitada
  • Aplica-se o filtro Bayer para refletir a informação do filtro de cor de cada pixel e realiza-se o demosaicing por meio da média dos pixels vizinhos
  • Ao passar por correção de gama e ajuste de balanço de branco, corrige-se a diferença na percepção não linear de brilho entre a visão humana e os displays
  • Por fim, ao comparar com o processamento JPEG interno da câmera, mostra-se que o conceito de “foto não corrigida” praticamente não existe

Estado inicial dos dados RAW do sensor

  • Os dados originais registrados pelo sensor da câmera são compostos por valores ADC de 14 bits e, ao convertê-los simplesmente para RGB 0–255, formam uma imagem em escala de cinza
    • A faixa real dos valores ADC é de aproximadamente 2110~13600, e esse intervalo é definido como referência de preto e branco para reajustar o brilho
  • Nesta etapa, a imagem quase não tem informação de cor, porque o sensor mede apenas a intensidade da luz

Processo de restauração das informações de cor

  • Sensores de câmeras coloridas detectam apenas uma entre vermelho, verde e azul em cada pixel por meio de uma matriz de filtro Bayer
  • Ao aplicar a cor correspondente ao filtro de cada pixel, a imagem ganha coloração, mas cada pixel ainda contém apenas um dos componentes RGB
  • Quando se faz o demosaicing calculando a média dos valores dos pixels vizinhos, a cor é restaurada em toda a imagem

Brilho e correção de gama

  • O motivo de a imagem resultante parecer escura é a limitação da faixa dinâmica do monitor e a percepção não linear de brilho pela visão humana
  • Como os dados lineares parecem escuros quando exibidos diretamente, aplica-se uma curva de gama não linear para iluminar as áreas escuras
  • Porém, nesse processo surge um fenômeno de excesso no canal verde, devido à sensibilidade do sensor ao verde e à maior proporção de verde na matriz Bayer

Balanço de branco e correção de cor

  • Ajusta-se o balanço de branco alterando cada canal de cor em uma determinada proporção
  • Volta-se à etapa anterior à transformação não linear, reduz-se o canal verde e então aplica-se novamente a curva de gama
  • Por meio desse processo, obtém-se uma foto com cores naturais

Comparação com o processamento JPEG da câmera

  • A imagem JPEG incorporada gerada pela câmera a partir dos mesmos dados RAW já é o resultado de vários processos de correção matemática
  • Ajustar contraste ou balanço de branco em um software de edição é, em essência, a mesma operação realizada internamente pela câmera
  • O conceito de “foto não editada” não existe na prática: toda foto é resultado de processamento matemático
  • É difícil reproduzir perfeitamente a visão humana e, devido às limitações dos displays, a necessidade de correção manual sempre existe

1 comentários

 
GN⁺ 2025-12-29
Comentários do Hacker News
  • Fico pensando se aplicar a mesma função de transferência a cada pixel deve mesmo ser considerado ‘processamento’
    Na época do filme, empurrar um filme preto e branco ISO 400 para 1600 gerava grão grosseiro, mas isso era um ‘ruído’ uniforme em toda a foto
    Hoje a redução de ruído evoluiu de forma impressionante, mas nesse processo às vezes a própria imagem é alterada
    Por exemplo, na minha câmera IP, quando entro de bicicleta, às vezes parte da roda desaparece. O algoritmo confundiu a textura do asfalto com ruído e a apagou
    Em smartphones e câmeras digitais, ao ampliar ou em baixa luz, rostos também parecem ‘pintados’
    Eu preferiria ruído honesto ou um algoritmo de redução de ruído ajustável, de ‘nenhum’ até o padrão atual

  • Gosto de textos que removem as camadas de abstração da ‘imagem’. No fim, fotografia moderna é só processamento de sinal com marketing por cima
    O motivo de o padrão Bayer ser RGGB (50% verde) não é só equilíbrio de cor, mas também resolução espacial
    O olho humano é mais sensível ao verde, então o canal verde carrega a maior parte da luminância (dos detalhes)
    Algoritmos avançados de demosaicing criam um mapa de luminância de alta resolução a partir do canal verde e depois interpolam vermelho e azul como camadas de diferença de cor
    É esse princípio que também permite compressão de vídeo como subamostragem de crominância 4:2:0
    Se quiser se aprofundar, recomendo olhar o código-fonte do dcraw ou do libraw. Há uma enorme quantidade de tratamentos de exceção para interpretar a ‘tensão raw’ de cada fabricante de sensor

    • Na fórmula de quantização usada pelo ppmtopgm para converter do formato clássico PPM para PGM, o peso do verde é quase 60%
      g = .299r + .587g + .114b
      Essa proporção determina o brilho da imagem em escala de cinza
      E o trecho de poesia citado ali me marcou — ao descrever um mundo sem cor, ele ironiza o fato de que aquilo que decidimos ser ‘correto’ no fim é apenas erro de quantização
    • Quando trabalhei na equipe de publicidade do Amazon Kindle, por 6 meses foram exibidas imagens de anúncios horríveis porque converteram RGB para escala de cinza usando média simples
      Teria sido resolvido só adicionando uma flag de conversão RGB→luminância na chamada do FFmpeg
    • Na verdade, fotografia em filme também era outra forma de processamento de sinal. Não existe ‘dado não processado’ que possamos perceber
    • Acho meio injusto que o padrão Bayer dê ao verde o dobro da área
      Claro, é porque o olho humano é sensível ao verde, mas ainda assim parece meio arbitrário (⩺_⩹)
    • Não gosto quando perguntam se uma foto foi “editada ou é original”
      O próprio JPEG gerado pela câmera já é um resultado fortemente processado
      Aplicar curvas, mapeamentos e ajustes diferentes para gerar outro JPEG não é ‘manipulação’, é apenas outra interpretação
  • Trabalho com sensores de câmera, e acho este texto muito bom para treinar novatos
    Mostrar o processo começando nos dados RAW e chegando a uma saída familiar acelera o entendimento

  • Só apontando um pequeno erro de digitação: deveria ser “than”, não “then”

  • Na graduação, estudando sensoriamento remoto (remote sensing), foi que passei a entender de verdade sensores e processamento de sinal
    O que eu vejo não é a ‘verdade’, mas uma visão parcial dos dados
    O olho humano, o olho de um gato e uma câmera coletam e representam subconjuntos diferentes de dados
    Fica ainda mais interessante se você pensar em espaço e tempo como dimensões adicionais do sinal
    No fim, dá a sensação de que todos nós somos apenas sistemas sensores observando uma parte do universo

  • Em fotografia digital, compressão de faixa dinâmica e debayerização são indispensáveis,
    mas é outra história quando a IA reconhece objetos e reconstrói fantasiosamente a imagem com base no que ‘deveria estar ali’
    Os fabricantes estão empurrando nessa direção, o que cria problemas como a confiabilidade de fotos como evidência

    • Não acho que exista ‘foto verdadeira’ e ‘foto falsa’
      Toda imagem é uma interpretação de dados e o resultado de inúmeras escolhas
      Se for para distinguir, talvez dê para separar em edição global e edição local, e a edição local seria mais próxima do ‘falso’
      Mas, no fim, o ponto central é a intenção
      Se houver intenção de enganar, até uma foto saída direto da câmera pode ser ‘falsa’
      A maioria das pessoas considera aplicar filtro algo ‘falso’, mas na prática toda foto tem filtros aplicados
      Chamar esse processo em si de ‘falso’ não faz sentido
  • Lembrei de uma citação do filme Tim’s Vermeer
    Como diz a frase, “a ideia moderna de que arte e tecnologia devem ser separadas está errada”,
    e a fusão entre arte e tecnologia era justamente uma característica da era de ouro
    Também recomendo The Science of Photography, de John Lind e
    a explicação sobre sensores de Bob Atkins.
    Em especial, achei marcante a parte que explica por que o tamanho do poço do pixel é importante

  • Acho que o motivo de dados lineares parecerem escuros quando exibidos é uma limitação do monitor
    Se a profundidade de bits fosse grande o suficiente, talvez desse para exibir em luz linear sem correção de gama

    • Não, o problema é a forma da curva
      A percepção de luminosidade humana não é linear, então alguma não linearização é necessária em algum ponto
      O ideal é fazer os cálculos em espaço de cor linear com 16 bits ou mais e aplicar gama só pouco antes da exibição
      Antigamente, fazia-se blending em RGB não linear e isso frequentemente gerava banding escuro
    • A correção de gama não existe só por causa do monitor, mas também para distribuir mais bits entre realces e sombras
      Os CRTs usavam gama para compensar a resposta não linear do canhão de elétrons, e filme ou sensores CMOS também têm sensibilidade logarítmica à luz, então passam por tratamento semelhante
    • Se você exibisse um pôr do sol em linear, a parte do sol ficaria brilhante a ponto de doer os olhos. Isso não seria realista
  • ‘Foto não processada’ praticamente não existe
    RAW é apenas um conjunto de valores de pixel RGGB, e o processo de descartar estrategicamente dados para encaixá-los na faixa dinâmica estreita da tela
    e definir o ponto de cinza médio é justamente o campo da interpretação criativa

  • Fica uma pena que os exemplos do texto usem iluminação tão artificial e colorida, porque assim é difícil entender qual seria a ‘verdade de referência’

    • Mas esse é justamente o ponto. O objetivo do texto é nos levar a reconsiderar criticamente a própria ideia de ‘verdade de referência’
      Basta comparar as duas últimas imagens e julgar o ‘resultado’ conforme a preferência de cada um