4.11. Debayering¶
O fotograma Bayer bruto contém apenas um canal de cor por pixel. Convertê-lo numa imagem RGB normal de três canais implica preencher os dois canais em falta em cada pixel por interpolação a partir dos pixels vizinhos da cor correta. Essa interpolação é o debayering (também designado por desmosaicagem). Um pequeno conjunto de famílias de algoritmos domina este processo.
4.11.1. Super-pixel¶
A abordagem mais económica colapsa cada bloco Bayer de 2x2 – uma célula vermelha, uma célula azul e duas células verdes – num ú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 de 2x2 torna-se um pixel de saída, pelo que a imagem final tem metade da largura e metade da altura do sensor, com um quarto do número de pixels. O super-pixel é rápido e isento de artefactos de interpolação, mas o custo em resolução torna-o um último recurso – raramente é utilizado.
4.11.2. Bilinear¶
A interpolação bilinear calcula a média dos pixels mais próximos da cor correta em vez de os copiar ou resumir. A média exata depende da cor que o pixel central regista, porque os quatro casos distribuem os canais em falta de forma diferente na vizinhança de 3x3.
Pixel verde numa linha vermelho-verde. O valor vermelho em falta é a média dos dois vizinhos vermelhos à esquerda e à direita; o azul em falta é a média dos dois vizinhos azuis acima e abaixo.
O vermelho em falta vem dos vizinhos vermelhos horizontais; o azul em falta vem dos vizinhos azuis verticais.¶
Pixel verde numa linha verde-azul. Mesma forma com vermelho e azul trocados. O valor vermelho em falta é a média dos dois vizinhos vermelhos acima e abaixo; o azul em falta é a média dos dois vizinhos azuis à esquerda e à direita.
O vermelho em falta vem dos vizinhos vermelhos verticais; o azul em falta vem dos vizinhos azuis horizontais.¶
Pixel vermelho. O valor verde em falta é a média dos quatro vizinhos verdes cardinais (acima, abaixo, esquerda, direita). O azul em falta é a média dos quatro vizinhos azuis diagonais.
O verde em falta vem dos quatro vizinhos verdes cardinais; o azul em falta vem dos quatro vizinhos azuis diagonais.¶
Pixel azul. Espelho do caso vermelho. O verde em falta é a média dos quatro vizinhos verdes cardinais, e o vermelho em falta é a média dos quatro vizinhos vermelhos diagonais.
O verde em falta vem dos quatro vizinhos verdes cardinais; o vermelho em falta vem dos quatro vizinhos vermelhos diagonais.¶
O método bilinear mantém a resolução total do sensor e é suficientemente suave para a maioria dos usos, mas ainda apresenta artefactos nas arestas. Uma transição abrupta entre duas cores atravessa a grelha de pixels numa determinada orientação, e a média ao longo da aresta suaviza-a ligeiramente. Onde as arestas de cor e de luminância não se alinham com exatidão, surgem na saída franjas de cor ténues.
4.11.3. Para além do bilinear¶
Existe uma gama de algoritmos de debayering mais avançados. Alguns utilizam vizinhanças maiores do que a pequena cruz de vizinhos da mesma cor usada pelo método bilinear e ponderam as amostras com coeficientes mais cuidadosamente escolhidos; outros detetam a direção das arestas locais e orientam a interpolação nessa direção, de forma a que uma aresta que atravessa a grelha de pixels se mantenha nítida em vez de se suavizar. Qualquer uma das abordagens reduz as franjas de cor e a suavização das arestas deixadas pelo método bilinear, ao custo de mais operações aritméticas por pixel e mais silício (ou mais processamento no lado do MCU).
A qualidade de debayering disponível em qualquer OpenMV Cam é específica da plataforma – depende do que o sensor e o MCU dessa câmara fornecem.
4.11.4. Onde corre o debayering¶
O processador de sinal de imagem (ISP) – no próprio chip do sensor ou no lado do MCU – realiza o debayering de cada fotograma antes de este sair do pipeline de imagem na maioria dos casos. O código do utilizador recebe uma imagem RGB acabada de três canais sem nunca tocar no mosaico bruto.
O ISP também pode ser instruído a deixar passar o fotograma Bayer bruto sem alterações. O Bayer bruto ocupa menos memória do que a imagem após debayering – um byte por pixel em vez de três – o que o torna útil quando o armazenamento de fotogramas é o bottleneck, ao capturar para processamento offline, ou quando o projeto pretende aplicar um algoritmo de debayering personalizado em software.