4.12. O pipeline ISP¶
O processador de sinal de imagem (ISP) é o pipeline de hardware que converte os valores brutos de pixels do sensor numa imagem colorida acabada. As correções ao nível do pixel no sensor constituem as primeiras fases desse pipeline. Após essas fases, o restante do pipeline realiza o processamento de cor e a formatação de saída numa ordem fixa em cada fotograma.
As fases de processamento de cor e saída do ISP. O pipeline executa cada fase em todos os pixels do fotograma antes de iniciar a seguinte.¶
4.12.1. As fases¶
Cada fase aplica uma transformação bem definida por sua vez. A ordem importa – as fases posteriores partem do princípio de que as anteriores já correram, e algumas fases também recebem entradas da saída do fotograma anterior.
A extração de estatísticas mede o brilho médio por região e as somas por canal a partir do fotograma Bayer corrigido. Os valores alimentam os ciclos de controlo de exposição automática, ganho automático e balanço de branco automático, que atualizam as definições do sensor para o próximo fotograma.
Os ganhos de balanço de branco automático 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 para um cinzento neutro, de forma a que as cores registadas pareçam como o olho as viu. Os multiplicadores são calculados a partir das estatísticas AWB do fotograma anterior.
O debayering reconstrói os dois canais de cor em falta em cada pixel a partir do mosaico Bayer, transformando dados brutos com um canal por pixel em RGB com três canais. (Ver Debayering.) Tudo o que se segue a esta fase opera em pixels RGB em vez de no mosaico Bayer.
A correção de matriz de cor (CCM) aplica uma multiplicação de matriz 3x3 a cada pixel RGB que mapeia a resposta vermelho-verde-azul nativa do sensor num espaço de cor normalizado. Os filtros de cada sensor têm a sua própria resposta espetral, que não corresponde exatamente ao que qualquer norma prevê; a matriz é uma transformação calibrada por sensor que converte o «RGB do sensor» em «RGB normalizado».
A correção gamma aplica uma curva não linear a cada canal que comprime o sinal linear do sensor numa codificação adequada à perceção humana. O olho nota diferenças entre tons escuros mais do que diferenças entre tons claros, pelo que uma codificação que dedica mais bits às zonas escuras captura mais detalhe visível a uma determinada profundidade de bits.
O escalonamento de imagem redimensiona o fotograma da resolução nativa do sensor para a resolução de saída pretendida. A maioria das aplicações corre a menos do que o número total de pixels do sensor, e reduzir a escala diminui tanto a largura de banda como a pressão de memória em tudo o que se segue.
O corte de imagem extrai um sub-retângulo do fotograma escalado e descarta os pixels fora dele. Utilizado para capturar uma região de interesse, corresponder a uma proporção de aspeto específica, ou eliminar uma borda que a aplicação não necessita.
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 escreve o resultado na RAM.
4.12.2. O ciclo de controlo de retorno¶
As fases 1 e 2 formam um ciclo de controlo que abrange múltiplos fotogramas. As estatísticas extraídas do fotograma N indicam ao sensor o quão brilhante estava a cena e como estava o seu balanço de cor nesse fotograma; os controladores de exposição automática, ganho automático e balanço de branco automático utilizam esses valores para escolher novos valores de exposição, ganho e registos de balanço de branco para o fotograma N+1. Os novos valores entram em vigor na leitura do fotograma seguinte, as estatísticas do novo fotograma são devolvidas, e o ciclo fecha.
Para uma cena que não muda, o ciclo converge em alguns fotogramas e mantém-se numa definição constante. Para uma cena cuja luminosidade ou dominante de cor muda – a câmara a pan de interior para uma janela iluminada pelo sol, por exemplo – o ciclo acompanha a mudança ao longo de vários fotogramas, e o utilizador vê uma breve deriva de brilho ou cor no caminho para o novo estado estacionário.
4.12.3. Onde corre o ISP¶
Dois arranjos são comuns.
Um ISP no sensor executa todo o pipeline dentro do chip do sensor e produz uma imagem RGB acabada. O MCU limita-se a recolher o resultado.
Um ISP externo ao sensor reside no MCU ou SoC anfitrião. O sensor produz Bayer bruto; o silício do MCU (ou o seu código de driver) executa o pipeline antes de entregar o fotograma acabado ao código do utilizador.
A divisão afeta os formatos de saída que o sensor pode entregar diretamente ao utilizador. Um sensor com um ISP completo no chip permite ao utilizador escolher qualquer formato acabado que o chip suporte. Um sensor sem ISP produz apenas Bayer, e as conversões de formato ocorrem no silício ou software do MCU.