4.20. Conclusão

Você percorreu as partes da pilha de imageamento da câmera que surgem toda vez que um script captura um quadro:

  • A óptica diante do sensor – um furo de alfinete (pinhole) como o elemento formador de imagem mais simples, depois as lentes, que captam muito mais luz e ainda assim focalizam, com distância focal, abertura, profundidade de campo e campo de visão como os ajustes que a aplicação escolhe. Lentes reais vêm com distorção, vinhetagem e efeitos de ângulo do raio principal (chief-ray-angle) que o sensor e o ISP compensam posteriormente.

  • A grade do sensor – um conjunto bidimensional de fotodiodos que transforma fótons em carga, com o tempo de exposição e o ganho analógico trocando brilho por desfoque de movimento e ruído. Os obturadores rolante e global determinam como as linhas do conjunto são lidas, e um pequeno conjunto de calibrações no chip – FPN de coluna, nível de preto, pixel defeituoso, sombreamento da lente – limpa os dados antes que eles deixem o chip. Dois barramentos conectam o chip ao MCU: um barramento de controle I2C lento para registradores e um barramento paralelo ou MIPI rápido para pixels.

  • Cor e o ISP – um conjunto de filtros de cor Bayer dá a cada pixel uma entre vermelho, verde ou azul; o debayering interpola os dois canais ausentes. O processador de sinal de imagem (ISP) costura o restante do pipeline – extração de estatísticas, balanço de branco automático, debayering, correção por matriz de cor, gama, escalonamento, recorte e um empacotamento final no formato de pixel solicitado.

  • Formatos de pixel – Bayer bruto, RGB888, RGB565, YUV422, escala de cinza, BINARY e as saídas comprimidas JPEG / PNG trocam tamanho de memória por fidelidade de cor e compatibilidade com algoritmos posteriores. RGB565 é o padrão para cor finalizada porque se alinha com a largura de palavra do MCU e reduz pela metade o custo de memória em relação ao RGB888.

  • A API CSI – cinco linhas de configuração mais um laço de snapshot é a forma a partir da qual todo script começa. Os pools de framebuffer (simples, duplo, triplo, FIFO de vídeo ou disparado) decidem como a aplicação e a câmera compartilham os quadros; um canal de preview separado alimenta qualquer programa de depuração conectado sem competir pelos buffers da aplicação; os ajustes do sensor cobrem orientação, exposição, ganho, balanço de branco, limite de taxa de quadros e um padrão de teste de barras de cor.

  • Múltiplos sensores e pools de memória – placas com dois sensores instanciam um CSI por chip e executam cada um em sua própria taxa. Por baixo, o pool de framebuffer, a região de preview, o heap do MicroPython e as alocações menores de memória rápida vivem em regiões distintas da RAM, posicionadas de modo que as partes que precisam de velocidade a obtêm e as partes que só precisam de tamanho obtêm isso.

Isso é suficiente para tirar um quadro do sensor com o formato, o tamanho de quadro e a exposição corretos para a cena; escolher um modo de framebuffer que combine com o tempo de processamento da aplicação; expor um preview ao vivo para o que estiver conectado; e ler a Image de volta para o Python, pronta para ser operada.

4.20.1. Usando esta referência mais tarde

Trate os capítulos de imageamento como material de referência, não como uma leitura de uma só passagem. Voltar para relembrar os modos de framebuffer, os formatos de pixel ou o significado de um determinado ajuste do sensor é o uso pretendido. A página de referência csi.CSI lista todos os métodos em um só lugar quando a pergunta é apenas “qual é o nome exato dessa chamada mesmo”.

4.20.2. Para onde ir a partir daqui

Processamento de imagem é o próximo tópico natural. Com o buffer em mãos e a API csi compreendida, o que resta é o que fazer com os pixels: limiares, detecção de bordas, busca de blobs, detecção de linhas e formas, códigos QR, AprilTags, inferência de aprendizado de máquina. O conjunto de ferramentas muda para o módulo image e seu catálogo de métodos sobre o objeto Image. Tudo desta seção é levado adiante; a forma do laço, o modo de framebuffer, o formato de pixel – tudo isso é sobre o que os métodos de processamento de imagem operam.