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.
Andrey mencionou que sua solução assume que 0 é transformado em 0. Se você estiver usando coordenadas de pixel, provavelmente isso não é verdade quando você redimensiona a imagem. A única suposição que você realmente precisa fazer é que sua transformação de imagem possa ser representada por uma matriz 3x3 (como Andrey demonstrou). Para atualizar a matriz da câmera, basta pré-multiplicá-la pela matriz que representa a transformação da imagem.
Como exemplo, suponha que você precise alterar a resolução de uma imagem por um fator e esteja usando 0 coordenadas de pixel indexadas. Suas coordenadas são transformadas pelos relacionamentos2n
isso pode ser representado pela matriz
então sua matriz de câmera final seria
fonte