Muitas vezes, temos um fluxo de vídeo para processar sem acesso à câmera. Ter acesso à matriz da câmera seria benéfico para várias técnicas de processamento. É possível hackear a calibração da câmera sem ter acesso à câmera?
Eu tenho um fluxo de vídeo de uma única câmera montada em um carro em movimento gravando a estrada (daí várias linhas paralelas no plano do solo, cantos dos marcadores das faixas, mas sem círculos). Quero criar uma visão de cima para baixo disso, mas não tenho acesso à câmera. É possível? Se sim, como?
Entendo do Learning OpenCV: Computer Vision com o livro OpenCV Library que eu preciso das seguintes matrizes:
- Intrínseca e
- Distorção
.. à cv2.undistort()
imagem, calcule a homografia cv2.getPerspectiveTransform()
e, cv2.warpPerspective()
finalmente, obtenha a vista superior.
Questão
- Como posso calcular / aproximar / adivinhar matrizes / parâmetros intrínsecos ou de distorção? Todos os parâmetros são importantes?
- Seria bom copiar parâmetros de outras câmeras (como exemplos de código-fonte OpenCV)?
Pesquisa anterior:
- Tutorial de calibração da câmera OpenCV Python - Requer acesso à câmera
- Calibração automática da câmera - dá esperança "a calibração pode ser obtida se vários conjuntos de linhas paralelas ou objetos com uma forma conhecida (por exemplo, circular) forem identificados"
- Tentando entender as respostas relacionadas à calibração da câmera [ 1 ] [ 2 ] [ 3 ] no SO, tentando encontrar respostas para o meu problema.
Alguma ideia? Agradecemos sua ajuda com antecedência!
Atualização 1: Experiência de Transformação de Perspectiva
Eu tentei usar getPerspectiveTransform(pts1,pts2)
e dst = cv2.warpPerspective(img,M,(x,y), flags=flags)
combinar quatro pontos da imagem de entrada para obter uma espécie de visão de cima para baixo. Mas não sei como lidar com as distorções:
Selecionando pontos: Primeiro, ampliei o zoom na entrada e tentei selecionar com precisão os pontos externos correspondentes nos marcadores de faixa para criar a Homography Matrix e visualizar a imagem transformada em perspectiva warpPerspective
. Vi as pistas distorcidas, mas não sabia o quão ruim. Para ter uma idéia, escolhi pontos mais detalhados por delta (50px) em cada extremidade. Isto é o que eu recebo:
Posso corrigir as distorções sem ter acesso à câmera? Existe alguma outra maneira de corrigir isso.
Poucas imagens de entrada para brincar:
Atualização 2: Fluxo óptico não paralelo (disperso) na exibição de cima para baixo
Isso se deve a distorção ou algo mais ?: