Pular para o conteúdo
brorn
Nº 003 · Esporte e vídeo

video-campo

Junta os vídeos de 2 celulares num panorama do campo e gera uma câmera virtual que segue a bola, na GPU.

No ar
Período
2026-10 → hoje
Plataformas
Linha de comando · GPU local
Papel
Sozinho: design, código e entrega
Tecnologias
Fig. 1 · Duas vistas, um panorama · Vídeo: SoccerTrack v2 (CC BY 4.0)
Fig. 2 · Jogadores e trilha da bola · Vídeo: SoccerTrack v2 (CC BY 4.0)
Fig. 3 · Câmera que segue a bola · Vídeo: SoccerTrack v2 (CC BY 4.0)

§1O problema

Um celular só não pega o campo inteiro. Com dois, é preciso alinhar no tempo e na imagem, costurar sem emenda visível e ainda decidir para onde apontar a câmera sem ninguém operando.

§2O que eu construí

  • SincroniaOs dois celulares são sincronizados pelo som.
  • CosturaCalibração de lentes e ângulo pela imagem e costura em panorama cilíndrico, com correção de cor.
  • Câmera virtualDetecção da bola por YOLO e trilha da bola; câmera virtual com zoom e suavização que olha adiante.
  • CLIEtapas retomáveis (cada etapa grava seu arquivo) e progresso em JSON para os apps acompanharem.
  • RefazerComando para refazer só a câmera com outro zoom.

§3As partes difíceis

5 itens
  1. 01

    Velocidade

    O panorama foi de 37-46 para cerca de 120 quadros/s; o gargalo era o loop esperar a placa de vídeo a cada quadro.

  2. 02

    Deriva de sincronia entre os relógios dos celulares

    Cerca de 140 ppm, corrigida por janelas medidas ao longo do jogo.

  3. 03

    Paralaxe e emenda

    Medição da diferença na faixa comum e correção só perto da emenda.

  4. 04

    Armadilhas numéricas

    Inversão de lente que dobra e valores infinitos virando NaN nas faixas pretas.

  5. 05

    Orientação e limite do codificador

    A orientação de cada celular vem do marcador do app, não só da grama; o limite de 4096 px do H.264 na placa foi resolvido com HEVC.

§4Resultado

quadros/s no panorama (era 37-46)
~120
deriva de relógio corrigida entre celulares
~140 ppm
de detecção por jogo
~1h10

Roda na placa de vídeo do meu computador: panorama a cerca de 120 quadros/s com 2 câmeras, e a detecção leva ~1h10 de processamento por jogo. Outros apps chamam a ferramenta do mesmo jeito que chamariam o ffmpeg.

§5Stack

  • Python
  • PyTorch (CUDA)
  • YOLO11 (ultralytics)
  • OpenCV (SIFT)
  • ffmpeg com NVENC
  • HEVC