CC222 – Visão Computacional Transformações 3D e...
Transcript of CC222 – Visão Computacional Transformações 3D e...
CCCC222222 –– VViissããoo CCoommppuuttaacciioonnaall
TTrraannssffoorrmmaaççõõeess 33DD ee PPrroojjeeççõõeess
Instituto Tecnológico de Aeronáutica
Prof. Carlos Henrique Q. Forster – Sala 121 IEC
ramal 5981
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-2/50
Tópicos da aula • Geometria Projetiva Tridimensional • Transformações em 3D • Representação de Rotações • Transformação de Corpo rígido em 3D • Projeção ortográfica • Projeção perspectiva • Pontos de fuga • Bases afins e projetivas • Razão Cruzada
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-3/50
Livro para acompanhar essa aula Mathematical Elements for Computer Graphics (2nd edition) D. F. Rogers, J. A. Adams McGraw-Hill Capítulos 2 e 3 pp 61-206 Fundamentos de Geometria Computacional Resende, R. J., Stolfi, J. IX Escola de Computação, Recife, 1994 Capítulo 2 pp 25-76
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-4/50
Geometria Projetiva 3D 3 é o espaço projetivo orientado.
Pontos Os pontos são representados por quádruplas de coordenadas homogêneas
[ ]Twzyx das quais se exclui [ ]T0000 e correspondem ao ponto
[ ]Twzwywx /// em coordenadas cartesianas para 0>w , à direção do vetor
),,( zyx se 0=w ou ao ponto [ ]Twzwywx /// do além se 0<w .
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-5/50
Plano
Planos são definidos por quádruplas de coeficientes homogêneos WZYX ,,, e um
ponto [ ]Twzyx pertence ao plano se 0=+++ WwZzYyXx . Um plano divide os espaço em dois lados. De acordo com o sinal da expressão
WwZzYyXx +++ um ponto [ ]Twzyx está do lado positivo ou do lado negativo do plano.
O plano no infinito é definido como [ ]T1000=Ω , que define o aquém do
espaço como os pontos que 0>w e o além, 0<w .
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-6/50
Orientação do tetraedro
3333
2222
1111
0000
321 sgn),,,(
wzyxwzyxwzyxwzyx
ppppo −=∆
Obtenção do plano por 3 pontos [ ],210 WZYXppp =∨∨
222
111
000
222
111
000
222
111
000
222
111
000
,,,zyxzyxzyx
Wyxwyxwyxw
Zzxwzxwzxw
Yzywzywzyw
X =−==−=
Obtenção do ponto intersecção de 3 planos (que não possuem reta comum) pela fórmula dual.
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-7/50
Transformações Geométricas em 3D
Transformação 4x4 de coordenadas homogêneas (transformação projetiva em 3D)
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
hhzhyhx
srqpnjigmfedlcba
wzyx
´´´´
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-8/50
Partes da matriz de transformação:
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
jigfedcba
Transformação linear em 3D.
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
nml
Vetor de translação em 3D.
[ ]rqp perspectiva.
[ ]s escala global
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-9/50
Escala em 3D
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
1000000000000
je
a
⎪⎩
⎪⎨
⎧
===
jzzeyyaxx
´´´
Exemplo: aplicar escala ao paralelepípedo
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
11111111000011113300330002200220
11
3/12/1
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-10/50
Escala global
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
2/11
11
equivale à ⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
12
22
Translação3D
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
1000100010001
nml
⎪⎩
⎪⎨
⎧
+=+=+=
nzzmyylxx
´´´
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-11/50
Reflexo 3D
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
−1000010000100001
Reflexo em relação ao plano xy.
Cisalhamento
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
10000100010001
fc
⎪⎩
⎪⎨
⎧
=+=+=
zzfzyy
czxx
´´´
Desloca x e y em função de z.
Cisalhamentos nos outros planos são análogos.
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-12/50
Rotações em 3D
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡−
=
10000cossin00sincos00001
θθθθ
xR Rotação em torno do eixo x no sentido anti-horário.
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
−=
10000cos0sin00100sin0cos
θθ
θθ
yR Rotação em torno do eixo y no sentido anti-horário.
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-13/50
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡ −
=
1000010000cossin00sincos
θθθθ
zR Rotação em torno do eixo z no sentido anti-horário.
O determinante é 1. As linhas são vetores ortonormais (unitários e ortogonais).
Por isso 1−= RRT
A composição de rotações é associativa, mas não é comutativa. A mudança da ordem das rotações pode dar resultados diferentes.
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-14/50
Exemplo: Rotação de 90 graus em x e em y. Depois em ordem inversa.
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡−
10110
1
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
−1
011
10
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
11
11
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
−1
011
10
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡−
10110
1
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
−−
=
11
11
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-15/50
Exercício: Composição de Transformações Rotação em torno de um eixo arbitrário.
Eixo passa por [ ]Tzyx 000 com cossenos de direção ( )zyx ccc ,, .
Rotação por um ângulo δ .
1- Transladar de ( )000 ,, zyx −−− para eixo passar pela origem. 2- Rotacionar em torno do eixo x até eixo no plano xz. 3- Rotacionar em torno do eixo y até eixo coincidir com eixo z.
4- Rotacionar δ em torno do eixo z 5- Transformação 3 inversa 6- Transformação 2 inversa 7- Transformação 1 inversa
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-16/50
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
−−−
=
11
11
0
0
0
1 zyx
T
dc
dc
ccd
yz
zy
==
+=
αα sin,cos
22
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡−
==
100000000001
2 dcdcdcdc
RTzy
yzx
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-17/50
xcd == ββ sin,cos
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡ −
==
100000001000
3 dc
cd
RTx
x
y
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡ −
==
1000010000cossin00sincos
4
δδδδ
zRT
Composição: 12341
31
21
1 TTTTTTT −−−
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-18/50
Outros Exemplos de Composição de Transformações: • Rotações e Translações • Rotação por eixo paralelo a um eixo coordenado. • Reflexo sobre plano arbitrário no espaço
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-19/50
Transformações Afins em 3D
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡+
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=′
nml
Pjigfedcba
P (coordenadas cartesianas)
Ou ainda, em coordenadas homogêneas:
Pnjigmfedlcba
P
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=′
1000
Preservam o paralelismo de retas e de planos e as combinações convexas.
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-20/50
Transformações de Corpo Rígido em 3D Rotações e translações em 3D e suas composições.
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡+
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
nml
Pjigfedcba
P´
⎪⎪⎪⎪
⎩
⎪⎪⎪⎪
⎨
⎧
=++=++=++=++
=++
=++
000111
222
222
222
cjbiagfjeidgcfbeadjigfedcba
e 1+=
jigfedcba
Restrições não-lineares
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-21/50
Representação de Rotações em 3D 3 graus de liberdade • Ângulos de Euler: rotação em x, rotação em y e rotação em z. • Ângulos de Euler II: eixo pela origem e ângulo de rotação (regra mão direita). • Matriz 3x3 ortonormal positiva. • Quartenhões unitários.
Problema dos ângulos de Euler é o chamado “Gimbal lock”: para uma dada configuração, um grau de liberdade é perdido.
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-22/50
Lembrando números complexos iyxz += onde 1−=i .
Soma )()( 212121 yyixxzz +++=+ translação.
Escala ( ) ( )yixz ααα += escala uniforme.
Produto )())(( 21122121221121 yxyxiyyxxiyxiyxzz ++−=++=⋅
Fórmula de Euler θθθ sincos iei +=
Produto por θie : )sincos(sincos θθθθθ xyiyxez i ++−=⋅
Número complexo unitário representa uma rotação em 2D.
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-23/50
Quaternhões Vetor de 4 componentes
q+= qqo
(soma de um componente escalar e um vetor 3D). Produto, associativo, mas não comutativo
⎩⎨⎧
×++=⋅−=
=qppqr
qpqp
pqrqprooo
Produto escalar de quartenhões
qp ⋅+=• pqqpoo
Norma:
qq ⋅+=•= 2qqqqooo
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-24/50
Quartenhão unitário tem norma igual a 1.
Rotação de θ em torno de um vetor unitário ωr
é representada por
ωθθ r⎟⎠⎞
⎜⎝⎛+=
2cos
2sin
oq
Notar que oq− define a mesma rotação que
oq , visto que inverte a orientação do eixo
e o ângulo simultaneamente. Quartenhão conjugado:
q−= qqo*
Inverte apenas o “cosseno”: rotação inversa para quartenhão unitário:
1** ==oooo
qqqq (para quartenhão unitário)
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-25/50
Fórmula da rotação oo
qq *)0()0( xx +=′+ A composição de rotações resulta da multiplicação de quartenhões
**** ))(0)(())0(()0()0(oooooooooopqqppqqppp xxxx +=+=′+=′′+
A matriz de rotação correspondente é
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
+−−++−+−−+−+++−−−+
=2
32
22
12
023103120
32102
32
22
12
01230
312021302
32
22
12
0
)(2)(2)(2)(2
)(2)(2
qqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqR
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-26/50
Para os ângulos de Euler γβα ,, , a matriz de rotação é dada por
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
++−−+−+
−=
γαγαγβαγαγβαβαγαγβαγαγβα
βγβγβ
coscoscossinsinsincossinsincossincoscossincoscossinsinsinsincoscossinsin
sinsincoscoscosR
A rotação em torno do vetor [ ]Tnnnn 321= unitário é
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−−
−+
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−+=0
00
sin)cos1(cos
12
13
23
232313
322
212
31212
1
nnnn
nn
nnnnnnnnnnnnnnn
IR θθθ
Os autovalores de R são θθ sincos,1 i± . O auto-vetor de 1 é o vetor n (eixo).
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-27/50
Definição de uma matriz de rotação pela direção dos eixos. Basta determinar uma base ortonormal. Vetor VPN (view plane normal – aponta para um objeto) Vetor VUP (view up vector – aponta para cima) Queremos que eixo z aponte para o objeto Normalizar VPN (unitário). Produto vetorial VX=VUP × VPN, normalizar VX. Produto vetorial VY=VPN × VX Preencher a matriz que leva o eixo z para VPN, o eixo x para VX e o y para VY:
[ ]VPNVYVXR =
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-28/50
Projeção Ortográfica Redução para um espaço de dimensão menor. No caso da projeção ortográfica, perdemos a informação do eixo z.
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
wzyx
P
1000000000100001
ou simplesmente ⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
wzyx
P100000100001
wWZ
yYxX
====
0
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-29/50
Projeção Perspectiva Várias formulações possíveis
C
P
f
y´y
z
C é o centro de projeção, f é a distância focal (C ao plano-imagem).
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-30/50
⎪⎪⎩
⎪⎪⎨
⎧
=′
=′⇒=
′
xzfx
yzfy
zy
fy
Em coordenadas homogêneas:
zwfxxfyy
=′=′=′
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
wzyx
ff
P0100000000
, ou então ⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
wzyx
fP
010000100001
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-31/50
Outro modelo.
C
P
f
y´y
z
O plano-imagem agora está sobre a origem (e não o centro de projeção).
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-32/50
⎪⎪⎩
⎪⎪⎨
⎧
+=′
+=′
⇒+
=′
xfz
fx
yfz
fy
fzy
fy
Em coordenadas homogêneas:
fz
ffzw
xxyy
+=+
=′
=′=′
1 ⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
wzyx
fP
110000100001
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-33/50
Mais um modelo
C
P
f
y´
y
z
Agora o centro de projeção está à frente do plano-imagem.
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-34/50
⎪⎪⎩
⎪⎪⎨
⎧
−=′
−=′
⇒−
=′
xfz
fx
yfz
fy
fzy
fy
Em coordenadas homogêneas:
1−=−
=′
=′=′
fz
ffzw
xxyy
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−=
wzyx
fP
110000100001
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-35/50
Pontos de Fuga Os pontos de fuga numa imagem de perspectiva são os pontos em que as imagens das retas paralelas de uma cena se encontram. Para nós, é simplesmente a projeção perspectiva de pontos no infinito. Se a transformação de um ponto no infinito resultar um ponto no infinito, as retas paralelas naquela direção são também paralelas na imagem. Se a transformação de um ponto no infinito resultar um ponto finito, as retas paralelas naquela direção são concorrentes na imagem sobre esse ponto.
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-36/50
Pontos de Fuga Resultado da seguinte matriz de projeção
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
+
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
11100010000100001
pxzyx
zyx
p
Aplicando ao ponto no infinito no eixo x ⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
100/1
001
0001
100010000100001 p
pp
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-37/50
Resultado da seguinte projetividade:
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
+++
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
111010000100001
pzpypxzyx
zyx
rqp
Aplicando aos pontos no infinito da direção dos eixos x, y e z e à origem:
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
→
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
1000
,
1/100
,
10/10
,
100/1
1000010000100001
1010000100001
rq
p
rqp
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-38/50
Exemplo – encontrar os pontos de fuga da seguinte transformação para as retas paralelas ao eixo x, ao eixo y e ao eixo z.
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
−−−
−−−
1245.0283.0141.000000612.0707.0354.005.00866.0
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-39/50
Resposta: O ponto de fuga de
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
−−−
−−−
1245.0283.0141.000000612.0707.0354.005.00866.0
para o eixo x é ⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
−
−
141.00354.0
866.0
.
Em coordenadas cartesianas é o ponto ⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡−
105.2142.6
ou ( )5.2,142.6− da imagem.
Os pontos de fuga para o eixo y e z são respectivamente ( )5.2,0 − e ( )5.2,04.2
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-40/50
Exemplo Translação para traz e para frente. Mudança da distância focal em cada um dos modelos de projeção perspectiva. Encontrar os pontos de fuga para uma dada matriz de transformação. Encontrar a matriz de projeção ortográfica numa determinada direção.
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-41/50
Base Afim Encontrar a transformação afim em 2D que mapeia os três pontos P1, P2 e P3 nos pontos Q1, Q2 e Q3.
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
110011
1
1
1
1 y
x
y
x
pp
fedcba
Q
Para cada par de pontos PQ tenho duas equações. Para encontrar as 6 incógnitas a,b,c,d,e,f, preciso de 3 pares de pontos. Lembrando a solução linear
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
3
2
1
33
22
11
3
2
1
33
22
11
111
111
y
y
y
yx
yx
yx
x
x
x
yx
yx
yx
qqq
fed
pppppp
eqqq
cba
pppppp
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-42/50
Qualquer transformação afim em 2D pode ser representada como a transformação dos pontos (0,0), (0,1) e (1,0). Os três pontos resultantes dessa transformação formam uma base afim (se não colineares). Quantos pontos são necessários em 3 dimensões?
Pnjigmfedlcba
P
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=′
1000
São doze incógnitas, mas cada ponto contribui com 3 equações. Assim, são necessários quatro pontos (não-coplanares) para formar uma base afim. Correspondem às transformações de (1,0,0), (0,1,0), (0,0,1) e (0,0,0).
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-43/50
Base Projetiva Encontrar transformação projetiva em 2D que mapeia 4 pontos.
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
11''
1
1
yx
jgfedcba
hhyhx
1''
++=++=++=
ii
iii
iii
jygxhfeydxhycbyaxhx
Substituindo h,
feydxyyjyygxcbyaxxxjyxgx
iiiiiii
iiiiiii
++=++++=++
''''''
Construímos o sistema 8x8, são duas equações para cada ponto.
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-44/50
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
−−−−−−−−
4
4
3
3
2
2
1
1
444444
444444
333333
333333
222222
222222
1111
111111
''''''''
''1000''0001''1000''0001''1000''0001
''1000''0001
yxyxyxyx
jgfedcba
yyxyyxxyxxyxyyxyyxxyxxyxyyxyyxxyxxyx
yyxyyxxyxxyx
ii
Podemos formar uma base pela transformação dos pontos (1,0), (0,1) (0,0) e (1,1).
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-45/50
A transformação encontrada é uma transformação de plano para plano ou então de imagens planas para imagens planas (com aplicações ...)
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-46/50
Exercício Considere a transformação projetiva
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
hhzhyhx
srqpnjigmfedlcba
wzyx
´´´´
Quantas incógnitas (ou parâmetros) devem ser determinadas dadas associações de pontos originais e pontos transformados (em 3D)? Quantas equações cada par de ponto (original-transformado) contribui para determinar a transformação? Quantos pontos são necessários em 3D para determinar uma base projetiva?
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-47/50
Pontos para a base projetiva: (1,0,0), (0,1,0), (0,0,1), (0,0,0) e (1,1,1).
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-48/50
Razão Cruzada Dados 4 pontos da reta projetiva, descritos em coordenadas homogêneas
4..1, =⎥⎦
⎤⎢⎣
⎡= i
wx
pi
ii
A razão cruzada C é definida como
)4,2()3,1()4,3()2,1()4,3,2,1(
dddd
=C, onde j
j
i
i
wx
wxjid −=),(
e o determinante ),(),( jidww
wwxx
ppjiD jiji
jiji ===
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-49/50
A razão cruzada é invariante a transformações projetivas de P1 em P1.
A
BC
D
A’
B’
C’
D’
O
),(),(),(),(),,,(
DBdCAdDCdBAdDCBA =C
CC222 – Visão Computacional – ITA – IEC Transformações 3D e Projeções-50/50
Para a transformação projetiva T.
ii pTp ⋅='
TjidppTppjid jiji ⋅=⋅== ),(''),('
)4,3,2,1()4,2()3,1(
)4,3()2,1()4,2(')3,1(')4,3(')2,1(')4,3,2,1(' 2
4231
24321 CC ===
Tdwwdww
TdwwdwwDDDD
Se λ é a razão cruzada de 4 pontos, a s razões cruzadas das outras 23 permutações
dos 4 pontos serão λλ
λλ
λλ
λλ 1,
1,
11,1,1, −
−−−