Nota: Isso depende de quais coordenadas você usa na imagem redimensionada. Estou assumindo que você está usando um sistema baseado em zero (como C
, ao contrário Matlab
) e 0 é transformado em 0. Além disso, estou assumindo que você não tem inclinação entre coordenadas. Se você tem uma inclinação, ela deve ser multiplicada também
Resposta curta : Supondo que você esteja usando um sistema de coordenadas no qual , sim, você deve multiplicar por 0,5você′= u2, v′= v2umax, umy, u0 0, v0 0
Resposta detalhada A função que converte um ponto nas coordenadas mundiais em coordenadas da câmera é:P( x , y, z, 1 ) - > ( u , v , S)
⎛⎝⎜umax0 00 00 0umay0 0você0 0v0 01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310 0R12R22R32.0 0R13R23R330 0TxTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜xyz1⎞⎠⎟⎟⎟
Onde , uma vez que as coordenadas são homogêneas.( u , v , S) - > ( u / S, v / S, 1 )
Em resumo, isso pode ser escrito como
que é o produto das duas matrizes mencionadas acima e é o i ' th linha da matriz . (O produto é um produto escalar).u = m1Pm3P, v = m2Pm3P MmiM
MmEuM
O redimensionamento da imagem pode ser pensado em:
você′= u / 2 , v′= v / 2
portanto
você′= ( 1 / 2 ) M1PM3Pv′= ( 1 / 2 ) M2PM3P
A conversão de volta para a forma de matriz nos fornece:
⎛⎝⎜0,50 00 00 00,50 00 00 01⎞⎠⎟⎛⎝⎜umax0 00 00 0umay0 0você0 0v0 01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310 0R12R22R32.0 0R13R23R330 0TxTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜xyz1⎞⎠⎟⎟⎟
Qual é igual a
⎛⎝⎜0,5 ax0 00 00 00,5 ay0 00,5 u0 00,5 v0 01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310 0R12R22R32.0 0R13R23R330 0TxTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜xyz1⎞⎠⎟⎟⎟
Para informações adicionais, consulte Forsyth , capítulo 3 - Calibração geométrica da câmera.