4.11. Debayering¶
O quadro Bayer bruto carrega apenas um canal de cor por pixel. Transformá-lo em uma imagem RGB normal de três canais significa preencher os dois canais ausentes em cada pixel interpolando a partir de pixels próximos da cor correta. Essa interpolação é o debayering (também chamado de demosaicing). Algumas famílias de algoritmos dominam o cenário.
4.11.1. Super-pixel¶
A abordagem mais barata reduz cada bloco Bayer 2x2 – uma célula vermelha, uma célula azul e duas células verdes – a um único pixel de saída:
o canal vermelho é o valor da célula vermelha;
o canal azul é o valor da célula azul;
o canal verde é a média das duas células verdes.
Cada bloco de entrada 2x2 vira um pixel de saída, então a imagem final tem metade da largura e metade da altura do sensor, com um quarto da contagem de pixels. O super-pixel é rápido e livre de artefatos de interpolação, mas o custo em resolução o torna um último recurso – raramente é usado.
4.11.2. Bilinear¶
A interpolação bilinear faz a média dos pixels mais próximos da cor correta em vez de copiar ou resumir. A média exata depende de qual cor o pixel central registra, porque os quatro casos distribuem os canais ausentes pela vizinhança 3x3 de maneiras diferentes.
Pixel verde em uma linha vermelha-verde. O valor vermelho ausente é a média dos dois vizinhos vermelhos à esquerda e à direita; o azul ausente é a média dos dois vizinhos azuis acima e abaixo.
O vermelho ausente vem dos vizinhos vermelhos horizontais; o azul ausente, dos vizinhos azuis verticais.¶
Pixel verde em uma linha verde-azul. Mesma forma com vermelho e azul trocados. O valor vermelho ausente é a média dos dois vizinhos vermelhos acima e abaixo; o azul ausente é a média dos dois vizinhos azuis à esquerda e à direita.
O vermelho ausente vem dos vizinhos vermelhos verticais; o azul ausente, dos vizinhos azuis horizontais.¶
Pixel vermelho. O valor verde ausente é a média dos quatro vizinhos verdes cardeais (acima, abaixo, esquerda, direita). O azul ausente é a média dos quatro vizinhos azuis diagonais.
O verde ausente vem dos quatro vizinhos verdes cardeais; o azul ausente, dos quatro vizinhos azuis diagonais.¶
Pixel azul. Espelho do caso vermelho. O verde ausente é a média dos quatro vizinhos verdes cardeais, e o vermelho ausente é a média dos quatro vizinhos vermelhos diagonais.
O verde ausente vem dos quatro vizinhos verdes cardeais; o vermelho ausente, dos quatro vizinhos vermelhos diagonais.¶
O bilinear mantém a resolução total do sensor e é suave o suficiente para a maioria dos usos, mas ainda apresenta artefatos nas bordas. Uma transição abrupta entre duas cores cruza a grade de pixels em uma orientação específica, e a média ao longo da borda a suaviza ligeiramente. Onde as bordas de cor e de luminância não se alinham exatamente, surgem leves franjas coloridas na saída.
4.11.3. Além do bilinear¶
Existe uma variedade de algoritmos de debayer melhores. Alguns usam vizinhanças maiores do que a pequena cruz de vizinhos de mesma cor do bilinear e ponderam as amostras com coeficientes escolhidos com mais cuidado; outros detectam a direção das bordas locais e enviesam a interpolação nessa direção, de modo que uma borda que atravessa a grade de pixels permaneça nítida em vez de suavizar. Qualquer das abordagens reduz as franjas coloridas e a suavização de bordas que o bilinear deixa para trás, ao custo de mais operações aritméticas por pixel e mais silício (ou mais processamento do lado do MCU).
A qualidade de debayer disponível em qualquer OpenMV Cam é específica da plataforma – depende do que o sensor e o MCU daquela câmera oferecem.
4.11.4. Onde o debayering é executado¶
O image signal processor (ISP) – no próprio chip do sensor ou no lado do MCU – faz o debayering de cada quadro antes que ele deixe o pipeline de imageamento, na maioria dos casos. O código do usuário recebe uma imagem RGB de três canais finalizada sem nunca tocar no mosaico bruto.
O ISP também pode ser instruído a repassar o quadro Bayer bruto sem alterações. O Bayer bruto ocupa menos memória do que a imagem após o debayering – um byte por pixel contra três –, o que o torna útil quando o armazenamento de quadros é o gargalo, ao capturar para processamento off-line ou quando o projeto deseja aplicar um algoritmo de debayer personalizado em software.