Use a matriz fundamental para calcular a tradução de coordenadas usando o OpenCV
Eu estou tentando calcular a correspondência de coordenadas de vários pontos entre duas imagens. Eu tenho um grupo de pontos cujas correspondências são conhecidas, eu as uso com o OpenCVfindFundamentalMatrix()
a fim de encontrar a matriz fundamental. Eu verifiquei quex^T * F * x' = (0)
para cada ponto, e o resultado é sempre certo ou muito próximo.
A coisa é, agora eu gostaria de usar as coordenadas de um ponto na primeira imagem (y
) e a matriz fundamental (F
) para encontrar as coordenadas do ponto na segunda imagem (y'
). Eu pensei primeiro em simplesmente usar a equação acima, mas dando apenasz
doy'
ponto, pode haveruma infinidade de soluções.
De que outra forma posso usar a matriz fundamental para calcular as traduções?
Para ser mais claro: conhecendo a matriz fundamental "ligando" duas projeções, como posso usá-la para traduzir as coordenadas de qualquer ponto conhecido?(a, b, 1)
da primeira projeção para a segunda projeção?
Considerando que sabemosa
, b
eF
nesta equação: (a ', b ", 1)T * F * (a, b, 1) = (0)
Eu fiz um desenho simples como exemplo:http://i.imgur.com/drNr2.jpg . A ideia é encontrar as coordenadas do ponto vermelho(xq, yq)
na projeção 2, considerando que sabemos suas coordenadas na projeção 1 e as de todos os outros pontos em ambas as projeções (e algumas outras, como o algoritmo para encontrar a matriz fundamental realmente requer pelo menos 8 pontos)
Outra precisão: no meu exemplo, os pontos conhecidos são coplanares, mas o ponto pesquisado não será necessariamente.
Espero que isso tenha deixado meu problema mais claro :)