Este é o primeiro artigo de uma série de quatro artigos sobre como processar câmeras grande-angular para auxiliar a estacionar um carro elétrico.
Quem já estacionou numa vaga apertada conhece o problema: pelos espelhos e pela câmera de ré se veem pedaços do que está em volta, nunca o quadro inteiro. O meio-fio some debaixo do capô, e a lixeira na calçada só aparece quando já é tarde.
Muitos carros novos resolvem isso com a “câmera 360°”: uma imagem do carro visto de cima, como se um drone o acompanhasse, com o chão em volta. Neste projeto construímos essa vista para um carro elétrico com quatro câmeras.
O nome técnico dessa visão é BEV, de bird’s-eye view, “vista de pássaro”.
Dados sintéticos/simulados
Tudo o que aparece aqui foi feito numa cena sintética: uma rua modelada em 3D no Blender, um programa de modelagem e animação, com o veículo estacionado de frente para a calçada entre dois carros, a menos de um metro de cada lado. As câmeras também são virtuais.
Muitas vezes, ao começar um projeto de computação visual, ainda não temos câmeras e dados reais disponíveis, mas podemos usar dados sintéticos para desenvolver parte da solução, experimentar diferentes posições e lentes de câmeras e ter uma base para avaliação inicial.
A criação dessa cena será explorada em artigo futuro.

O veículo branco na vaga do meio, entre um carro azul e um cinza. À frente dele, na calçada, uma lixeira e uma árvore.
Entrada: quatro câmeras grande-angular
O veículo tem uma câmera de cada lado, presas sob o teto a 1,58 m do chão e inclinadas 45° para baixo. São câmeras grande-angular do tipo olho-de-peixe (fisheye): a lente é tão aberta (190°) que cada uma enxerga quase meia esfera, e quatro bastam para cobrir todo o entorno. A desvantagem é uma imagem redonda e curvada, em que linhas retas viram arcos.

Frente, esquerda, trás e direita. Repare como as faixas da vaga, que são retas, aparecem curvas.
Etapa 1: calibrações intrínseca e extrínseca
Calibrar uma câmera é medir as características dela que o fabricante não informa com a precisão necessária. São dois tipos de calibração, e as duas são indispensáveis:
- Intrínseca, a da lente: para cada pixel da imagem, em que direção ele está olhando. É ela que descreve o quanto a lente olho-de-peixe curva a imagem.
- Extrínseca, a da montagem: onde a câmera está presa no veículo e para onde aponta — altura, posição e ângulos.
As duas são medidas mostrando às câmeras um padrão impresso: um tabuleiro parecido com o de xadrez, com um pequeno código em cada casa branca. O software reconhece cada canto do tabuleiro e sabe qual canto é, mesmo quando só uma parte aparece na imagem. Como o formato real do tabuleiro é conhecido, ele calcula a lente e a posição que explicam onde os cantos apareceram. Isso é feito uma vez, e refeito se uma câmera mudar de lugar.
Etapa 2: transformadas geométricas
Com as câmeras calibradas, o software pode transformar a geometria das imagens: mover cada pixel para onde ele estaria numa outra câmera, ou num outro ponto de vista. Cada tipo de calibração habilita uma transformada.
Com a intrínseca: endireitar a imagem
Sabendo como a lente curva a imagem, o software consegue desfazer a curvatura. O resultado se chama imagem retificada: uma vista “normal”, como a de uma câmera comum, recortada do centro da olho-de-peixe.

As faixas da vaga voltam a ser retas. Em troca, perde-se a borda da imagem original, a parte mais curvada.
Com a extrínseca: projetar no chão
Sabendo também onde cada câmera está e para onde aponta, dá para responder a pergunta que importa: em que ponto do chão está cada pixel? A técnica que faz isso se chama IPM (inverse perspective mapping, mapeamento inverso de perspectiva). Ela percorre o chão em volta do veículo como uma grade, calcula em que pixel da câmera cada ponto da grade aparece, e copia aquela cor. O resultado é a imagem de cada câmera como se fosse vista de cima.

Cada quadro mostra o chão que uma câmera vê, já visto de cima. O preto é o chão que aquela câmera não enxerga.
Etapa 3: costura das imagens
Agora é juntar as quatro peças num só quadro. Cada pedaço do chão é tirado da câmera que o vê melhor, a mais próxima. As fronteiras entre câmeras se chamam costuras, e é nelas que a montagem pode se denunciar: com a calibração errada, as linhas do chão não se encontram; com brilho ou cor diferentes entre as câmeras, aparece uma emenda.
Duas correções cuidam disso:
- Equalização: o brilho e a cor de cada câmera são ajustados comparando o chão que duas câmeras veem ao mesmo tempo, até as quatro concordarem.
- Mesclagem: nas costuras, as imagens são misturadas gradualmente.

À esquerda, as quatro câmeras só justapostas, cada uma com seu brilho. À direita, depois das duas correções.
Etapa 4: projeção final, semiesférica
A imagem acima tem um defeito evidente: os carros vizinhos parecem esticados para fora, e a lixeira virou um tubo deitado. Não é erro de cálculo. A projeção supõe que tudo está no chão; um objeto em pé, visto de cima por uma câmera inclinada, é “deitado” na direção oposta à câmera. Com carros a menos de um metro, o efeito é grande.
Os sistemas comerciais contornam isso projetando a imagem não num plano, mas numa superfície semiesférica: plana perto do veículo e subindo nas bordas, como o fundo de uma meia esfera. O que está em volta fica de pé na parede curva e mantém uma forma reconhecível.

Os carros vizinhos voltam a ter forma de carro, e a calçada, as árvores e a rua aparecem em volta.
Essa é a vista que o veículo publica para o motorista. Ela tem um preço: a projeção semiesférica desloca o chão de propósito, então ela serve para ver, não para medir — nenhuma distância deve ser lida nela. Para medir existe a segunda saída do projeto, o mapa de ocupação.
E agora?
A imagem de cima ainda não diz ao veículo onde ele pode ir. No próximo post, vamos ensinar uma inteligência artificial a separar, em cada imagem, o que é rua, faixa pintada e obstáculo — a segmentação.