4.12. O pipeline do ISP

O image signal processor (ISP) é o pipeline de hardware que transforma os valores brutos de pixel do sensor em uma imagem colorida finalizada. As correções em nível de pixel no sensor são os primeiros estágios desse pipeline. Depois que elas são executadas, o restante do pipeline realiza o processamento de cor e a formatação de saída em uma ordem fixa para cada quadro.

Um diagrama vertical de pipeline com oito caixas rotuladas, de cima para baixo: extração de estatísticas, balanço automático de branco, debayering, correção de matriz de cor, correção de gamma, escalonamento de imagem, recorte de imagem e empacotamento de pixels. Uma seta no topo é rotulada como "pixels Bayer corrigidos" e uma seta na parte inferior é rotulada como "quadro finalizado".

Os estágios de processamento de cor e de saída do ISP. O pipeline executa cada estágio sobre todos os pixels do quadro antes que o próximo comece.

4.12.1. Os estágios

Cada estágio aplica, por sua vez, uma transformação bem definida. A ordem importa – estágios posteriores assumem que os anteriores já foram executados, e alguns estágios também recebem entradas da saída do quadro anterior.

  1. A extração de estatísticas mede o brilho médio por região e as somas por canal a partir do quadro Bayer corrigido. Os números alimentam as malhas de controle de auto-exposição, auto-ganho e balanço automático de branco, que então atualizam as configurações do sensor para o quadro seguinte.

  2. Os ganhos de balanço automático de branco escalam cada pixel Bayer por um multiplicador por cor – pixels vermelhos por um ganho R, pixels verdes por um ganho G, pixels azuis por um ganho B –, empurrando a referência de branco da cena em direção a um cinza neutro para que as cores registradas pareçam como o olho as viu. Os multiplicadores vêm das estatísticas de AWB do quadro anterior.

  3. O debayering reconstrói os dois canais de cor ausentes em cada pixel a partir do mosaico Bayer, transformando dados brutos de um canal por pixel em RGB de três canais. (Veja Debayering.) Tudo após este estágio é executado sobre pixels RGB em vez do mosaico Bayer.

  4. A correção de matriz de cor (CCM) aplica uma multiplicação por matriz 3x3 a cada pixel RGB que mapeia a resposta nativa vermelho-verde-azul do sensor para um espaço de cor padrão. Os filtros de cada sensor têm sua própria resposta espectral, que não é exatamente o que qualquer padrão espera; a matriz é uma transformação calibrada por sensor que converte “RGB do sensor” em “RGB padrão”.

  5. A correção de gamma aplica uma curva não linear a cada canal que comprime o sinal linear do sensor em uma codificação ajustada à percepção. O olho percebe diferenças entre tons escuros mais do que diferenças entre tons claros, então uma codificação que gasta mais de seu orçamento de bits na extremidade escura captura mais detalhe visível em uma dada profundidade de bits.

  6. O escalonamento de imagem redimensiona o quadro da resolução nativa do sensor para a resolução de saída desejada. A maioria das aplicações funciona com menos do que a contagem total de pixels do sensor, e reduzir a escala diminui tanto a largura de banda quanto a pressão de memória sobre tudo o que vem depois.

  7. O recorte de imagem extrai um sub-retângulo do quadro escalonado e descarta os pixels fora dele. Usado para capturar uma região de interesse, atender a uma proporção específica ou remover uma borda de que a aplicação não precisa.

  8. O empacotamento de pixels converte a representação interna por canal (tipicamente 10 ou 12 bits por canal) no formato de saída escolhido e grava o resultado na RAM.

4.12.2. A realimentação da malha de controle

Os estágios 1 e 2 formam uma malha de controle que abrange múltiplos quadros. As estatísticas extraídas do quadro N indicam ao sensor o quão brilhante a cena estava e como ficou o balanço de cor naquele quadro; os controladores de auto-exposição, auto-ganho e balanço automático de branco usam esses números para escolher novos valores de registrador de exposição, ganho e balanço de branco para o quadro N+1. Os novos valores entram em vigor na leitura do próximo quadro, as estatísticas do novo quadro retornam, e a malha se fecha.

Para uma cena que não muda, a malha converge em poucos quadros e permanece em uma configuração constante. Para uma cena cujo brilho ou matiz de cor muda – a câmera fazendo uma panorâmica de um ambiente interno para uma janela ensolarada, por exemplo –, a malha acompanha a mudança ao longo de vários quadros, e o usuário percebe uma breve deriva de brilho ou cor no caminho até o novo estado estável.

4.12.3. Onde o ISP é executado

Dois arranjos são comuns.

  • Um ISP no sensor executa todo o pipeline dentro do chip do sensor e produz uma imagem RGB finalizada. O MCU apenas coleta o resultado.

  • Um ISP fora do sensor reside no MCU ou SoC hospedeiro. O sensor produz Bayer bruto; o silício do MCU (ou seu código de driver) executa o pipeline antes de entregar o quadro finalizado ao código do usuário.

A divisão afeta quais formatos de saída o sensor pode entregar diretamente ao usuário. Um sensor com um ISP completo no chip permite que o usuário escolha qualquer formato finalizado que o chip suporte. Um sensor sem ISP produz apenas Bayer, e as conversões de formato acontecem no silício ou no software do MCU.