Eu tenho uma câmera calibrada e tenho os parâmetros intrínsecos. Eu também tenho os parâmetros extrínsecos relativos a um ponto (a origem do mundo) em uma superfície plana no mundo real. Este ponto que estabeleci como origem no mundo real coordena [0,0,0] com um normal de [0,0,1].
A partir desses parâmetros extrínsecos, posso determinar a posição e a rotação da câmera nas coordenadas 3d do plano mundial usando isso aqui: http://en.wikipedia.org/wiki/Camera_resectioning
Agora eu tenho um segundo ponto que extraí as coordenadas da imagem para [x, y]. Como obtenho agora a posição 3D deste ponto no sistema de coordenadas do mundo?
Acho que a intuição aqui é que preciso traçar um raio que vai do centro óptico da câmera (para o qual agora tenho a posição 3D conforme descrito acima), através do plano de imagem [x, y] da câmera e depois através do meu plano do mundo real, que defini no topo.
Agora eu posso cruzar um raio 3d de coordenadas mundiais com um avião, como eu sei normal e apontar para esse plano. O que não entendo é como descubro a posição e a direção 3d quando ela sai do plano da imagem através de um pixel. É a transformação através de diferentes sistemas de coordenadas que está me confundindo.
fonte
Respostas:
Se você tem os extrínsecos, é muito fácil. Ter extrínseca é o mesmo que ter "pose de câmera" e o mesmo que ter homografia. Verifique esta postagem no stackoverflow.
Você tem elementos extrínsecos, também chamados de pose da câmera, que são descritos como tradução e rotação:
Você pode obter Homografia da Pose desta maneira:
Em seguida, você pode projetar seus pontos 2D nos pontos 3D correspondentes, multiplicando a homografia pelos pontos:
fonte
Você tem duas opções: use retroprojeção ou projeção entre dois planos (homografia).
Na retroprojeção, você pega uma pseudo inversa da matriz da sua câmera e multiplica o resultado com sua apresentação homogênea do ponto da imagem:P
Se você tiver o plano poderá resolver a equação para .L ( t ) = Π tΠ=[π1π2π3π4]T,π1X+π2Y+π3Z+π4=0 L(t)=Π t
Se você optar por usar a homografia, precisará calcular a matriz de homografia definida como projeção entre o plano da imagem e o plano do sensor da câmera:H3×3 H
fonte
Você não pode saber a posição 3d do segundo ponto. Pode ser qualquer um dos pontos no raio do centro da câmera até o infinito.
Você pode fazer o seguinte:
fonte