You are on page 1of 16

Vision par Ordinateur

James L. Crowley
M2R IVR

Premier Bimestre 2004/2005

Sance 1

5 Octobre 2004

Coordonnes et Transformations Homognes


Plan de la Sance :

Coordonnes Homognes en Notation Tensorielle


Vecteur et Matrice en Notation Tensorielle
L'quation d'une droite
Le produit Crois
Intersection de deux droites

Transformations en Coordonnes Homognes.


Transformations d'images
Interpolation Linaire
Interpolation Bi-lineaire
Translation en Coordonnes Homognes.
Rotation
Translation et Rotation en Coordonnes Homognes.
Transformations d'chelle, rotation et translation

Homographie entre deux plans


Rectification de l'Image d'un plan.
Estimation de l'homographie

Coordonnes et Transformations Homognes

Sance 1

Coordonnes Homognes en Notation Tensorielle


Les coordonnes homognes repose sur une notation dans laquelle les vecteurs en N
dimensions sont reprsentes par un vecteur en N+1 dimensions.
Les coordonnes homognes sont un outil de base en vision, en robotique et en
synthse d'images.
Exemple : un point
Soit un plan Euclidienne en R2 compos de points,

x
En notation classique, un point est un vecteur : P = y

x
En notation homogne, un point est un vecteur P = y
1

En coordonnes homognes, les points sont invariant au multiplication par un


constant.
(i, j, 1)T = a(i, j, 1)T = (ai, aj, a)T
x
x

On note que a, b : a y = b y
1
1


Vecteur et Matrice en Notation Tensorielle

En notation tensorielle, la signe " " est remplac par un indice en


super-scripte ou sous-scripte. Une super-scripte signifie un vecteur colonne.
Par exemple, le point est indiqu par un vecteur pi
p1
Pi= p2
p3

une sous-scripte indique un vecteur ligne


Par exemple, la droite est indique par le vecteur li :
L i = (l1, l2, l3)
Une matrice est une ligne de vecteurs (ou une vecteurs de lignes).

m 12 m 22 m 32
m 13 m 23 m 33
m 1 m 2 m 3
1

Mji =

1-2

Coordonnes et Transformations Homognes

Sance 1

Le produit d'un vecteur avec une indice en super scripte et une vecteur avec le
mme indice en sous-scripte signifie une produit scalaire. Ceci est fait par une
sommation implicite des indices. (La Convention de Sommation d'Einstein).
Donc, le produit indique une annulation des souscriptes et superscriptes.
L i Pi = l 1 p1 + l2 p2 + l3 p3
Cette sommation et commutative
L i Pi = P i L i
Pour la produit d'une matrice et une vecteur, ceci donne une nouvelle vecteur.
Pj = Mji Pi
Ceci reprsent une tranformation du repre "i" vers le repre "j".
L'quation d'une droite
Dans un plan Euclidienne en R2, en notation "classique", une droite est dfinie par
une quation
a x + b y + x = 0.
On peut exprimer cette quation comme la produit de deux vecteurs :

L P =0

ou L = (a b c ) et

x
P = y
1

En notation tensorielle, cette equation est exprim :


L i Pi = 0

avec i=1, 2, 3.

La sommation des indices est implicites.

1-3

Coordonnes et Transformations Homognes

Sance 1

Le produit Crois
Une droite est dfinie par deux points. Un point est dfini par le croisement de
deux droites. Il y a une dualit parfaite entre les points et les droites.
En notation classique, ax + by + c = 0
le manire de dterminer la droite pour deux points est :
o

a= (y 1 y 2)

b= (x 2 x 1)

c = (a x1+ b y1) = x1( y 1 y 2) y1(x2 x 1)


= x1 y 1 + x 1y2 y 1x2+ y 1 x1
= x1 y 2 y 1 x2
La droite est

x (y2 y 1) + y (x1 x 2) x1 y 2 + y 1 x2 = 0

Ceci peut tre calcul par la dterminante, avec les variables libres dans le premier
colonne :

x x1 x2
y y1 y2
1 1 1

= x(y1y2) + x1(y2y) + x2(y y1)= 0


= x(y1y2) + y(x2x1) + x1y2 x 2y1 = 0

Il s'agit d'une mthode gnrale de dterminer les paramtres dune quation


linaire partir des contraintes. Ca marche aussi pour trouver la point
d'intersection de deux lignes.
On peut, galement, crire la dterminante comme un produit crois.
a
T
L = b
c

= P1 x P 2 =

0 1 y 1 x2
1 0 x 1 y2

y 1 x 1 0 1

y1y2
x2x1

x1y2x2y1

En notation tensorielle, le dterminant et fait par loprateur tensorielle Eijk et


E ijk. Cette oprateur signifie une evaluation des indices pour une dterminant.
Exemplel La droite Li est dfinit par les points Pj et Q k:
L i = Eijk P j Qk
Pour
p1
Pj = p2
p3

p1/p3
= p2/p3 et
1

q1
Qj = q2
q3

q1/q3
= q2/q3
1

1-4

Coordonnes et Transformations Homognes


i =1, ijk-ikj = 123-132 : l1 = p2 q3 p 3 q2
i =2, ijk-ikj = 231-213 : l2 = p 3 q1 p 1 q3
i =3, ijk-ikj = 312-321 : l3 = p 1 q2 p 2 q1

Sance 1

et si p 3 = 1 et q3 = 1 alors nous retrouvons notre forme :


p1
Pj = p2
1

et

q1
Qj = q2
1

i =1, ijk-ikj = 123-132 : l1 = p2 q3


i =2, ijk-ikj = 231-213 : l2 = p 3 q1
i =3, ijk-ikj = 312-321 : l3 = p 1 q2

p 3 q2 = p2 q 2
p 1 q3 = p1 q 1
p 2 q1

1-5

Coordonnes et Transformations Homognes

Sance 1

Intersection de deux droites


Pour le calcul d'un point d'intersection de deux droites.
soit deux droites : L: ax + by + c = 0 et M : dx + ey + f = 0.

En notation classique : Soit L = (a b c ) et


Le point d'intersection est

M = (d e f )

bfce
x = aebd

cdaf
y = aebd

Pour le demontrer :

P = LxM =

0 c b d
c 0 a e
b a 0 f

bfce
cdaf
aebd

bfce
aebd

cdaf

aebd

Un point est l'intrsection d'une infini de droites. Soit deux droits


Soit deux droites (a, b, c) et (d, e, f). soit une droit "libre" ux + vy +w = 0.

u v w
a b c
d e f

= u(bf-ce) + v(cd-af) + w(ae-bd)= 0

ou bien

bfce
u aebd

donc

bfce
x = aebd

cdaf
+ v aebd + w = 0 = ux + vy + w
cdaf
et y = aebd

et 1=1.

En notation Tensorielle, nous avons loprateur tensorielle Eijk


On a Pi= Eijk L j Mk
Pour
l1
L j = l2 = et
l3

m1
Mk= m2
m3

i =1, ijk-ikj = 123-132 : p1 = l 2 m3 l3 m2


i =2, ijk-ikj = 231-213 : p2 = l 3 m1 l1 m3
i =3, ijk-ikj = 312-321 : p3 = l 1 m2 l 2 m1

1-6

Coordonnes et Transformations Homognes

Sance 1

Transformations en Coordonnes Homognes.


Les coordonns homognes fournissent une notation uniforme pour les
transformations.
Par exemple, les transformations dans un plan sont dcrites par une matrice
homogne 3 x 3.
Transformations d'images

Image Destination

Image Source

Pour chaque pixel de l'image de destination (xd, y d), on calcule


une position (xs, y s) dans l'image de la source.
Ps = Msd P d

ou

xs =

ou

m 12 m 22 m 32
= m 1 m 2 m 3
m 31 m 32 m 33

xd
yd

1

p1
p3

p2
p3

p1
p2
p3

xs
ys =

1

ys =
p1/p3
p2/p3
1

Ensuite la nouvelle valeur de


pixel destination, P2, est calcul en fonction du voisinage de la position source.
xs
MAIS, P = ys n'est pas des entier!

1
s

Quelle valeur faut-il prendre pour les pixels?

1-7

Coordonnes et Transformations Homognes


Sance 1
Pour chaque pixel du destination, (xd, y d) on calcul le position du source, (xs, y s).
Ensuite, on dtermine une valeur par interpolation avec les pixels voisins.

Il existe plusieurs fonctions d'interpolation.


Ordre zro :
Ordre unit :
Ordre trois :

Plus proche voisin.


intrpolation linaire et "bi-linaire"
Spline cubic.

Interpolation d'ordre zro


Pour les images Binaire, on peut fair que l'ordre zro.
La valeur de p(i2, j2) dterminer par arrondis de p(i1, j1).

Surface de Dcision

1-8

Coordonnes et Transformations Homognes

Sance 1

Interpolation Linaire
Interpolation Linaire en 1-D. soit io x i o+1
p(i)

i
i0

i0+1

A partir de l'origine :

p(x) = p(0) + mx x

A partire de deux points io et i0+1 :


P
mx x

pente :

= = p(i+1) p(i)

p(x) = (xio) m x + p(io)


Interpolation Linaire en 2D
p(io,jo+1)
y

p(x,y)
p(io,jo)

p(io+1,jo)

(io, jo)
x
P
mx x

= p(io+1, jo) p(io, jo)

P
my y

= p(io, jo+1) p(io, jo)

donc p(x, y) = mx . (xi o) + my . (yj o) + p(io, j o)

1-9

Coordonnes et Transformations Homognes

Sance 1

Interpolation Bi-lineaire
p(io,jo +1)
p(x,y)
p(io,jo)

p(io+1,jo+1)
y

p(io+1,jo)

(io, jo)
x
Forme Bilinaire : Hyperbolic Parabolode

p(x, y) = a x + b y + c x y + d.
Une interpolation linaire en "y" de deux interpolations linaire en "x".
Drivation :
p(x, 0)
p(x, 1)

= p(0, 0) + x . (p(1, 0) p(0, 0))


= p(0, 1) + x . (p(1, 1) p(0, 1))

p(x, y)

= p(x, 0) + y . (p(x, 1) p(x, 0))


= p(0, 0) + x . (p(1, 0) p(0, 0))
+ y . (p(0, 1) + x . (p(1, 1) p(0, 1)))
y . (p(0, 0) + x . (p(1, 0) p(0, 0)))
= p(0, 0) + x . (p(1, 0) p(0, 0)) + y . (p(0, 1) p(0, 0))
+ x . y . (p(1, 1) p(0, 1) p(1, 0) + p(0, 0))

Pour le point io, jo, remplace : 0 io, 1 io, x (x io), y (y i o)


P
a m x = x = p(io+1, jo) p(io, jo)
P
b m y = y = p(io, jo+1) p(io, jo)
c m xy = p(io+1, jo) + p(io, jo+1) p(io, jo) p(io+1, jo+1)
d = p(io, jo)
p(x, y) = a . (xi o) + b. (yj o) + c . (x-i o). (yj o) + p(io, jo)

1-10

Coordonnes et Transformations Homognes


Translation en Coordonnes Homognes.

Sance 1

x2 = x1 + tx,
y2 = y1 + ty
x 2
y 2

0 0 t x
= 0 0 t y

0 0 1

x 1
y 1

En notation tensorielle :
PB = T AB PA

pour A, B = 1, 2, 3.

Donc T AB est une transformation du repre A vers le repre B.


Les indices permet de noter les repres.
Rotation
(Repre main droite, rotation sens trigonomtrique)
x2 = Cos() x 1 + Sin() y 1,
y2 = Sin() x 1 Cos()y1
x 2
y 2

Cos() Sin() 0
= Sin() Cos() 0

0
0
1

x 1
y 1

Quand le repre tourne dans le sanse "", le vecteur est tourner dans le sense
Translation et Rotation en Coordonnes Homognes.
x2 = Cos() x 1 + Sin() y 1 + tx
x2 = Sin() x 1 Cos() y 1 + ty
x 2
y 2

Cos() Sin() t x x 1
= Sin() Cos() t y y 1

0
0
1 1

Ceci modlise la rotation, suivi de la translation.


En tensorielle, PB = RAB PA

1-11

Coordonnes et Transformations Homognes

Sance 1

Transformations d'chelle, rotation et translation


Une transformation de similitude d'une image est dfinie par
une rotation, une translation, et un changement de taille des axes.
Soit un changement d'chelle sx et s y des axes x 1 et y 1 (repre source)
suivi d'une rotation de le repre d'angle dans le plan de l'image source,
suivi d'une translation tx, ty s'exprimes dans le repre de la destination.
Ces paramtres donne une transformation (sx, s y, , tx, ty ) de
1) Un changement d'chelle des axes, puis
2) Une rotation des axes, puis
3) Une translation.
x 2
y 2

s x Cos() s y Sin() t x
s x Sin() s y Cos() t y

0
0
1

x 1
y 1

ou bien
x2 = s xCos() x 1 + s y Sin()y1 + tx,
y2 = s ySin() x 1 s x Cos()y1 + ty

1-12

Coordonnes et Transformations Homognes

Sance 1

Homographie entre deux plans


La projection d'un plan vers un autre plan est une transformation projective entre
deux plans. Cette transformation s'appele une "homographie.
L'homographie est bijective.
Elle est bijective est facile a estimate et de "recetifi.
QB = HAB PA
En notation "classique".
w x B
w y B

HAB

xA
yA
1

m 11 m 12 m 13
m 21 m 22 m 23

m 31 m 32 m 33

xB =

w xB
m11 x A + m 12 y A + m 13
=
w
m 31 x A + m 32 y A + m 33

yB =

w yB
m21 x A + m 22 y A + m 23
=
w
m 31 x A + m 32 y A + m 33

xA
yA
1

En notation "tensorielle"
QB = HAB PA
q1
q2
q3

xB =

q1
q3

HAB

p1
p2
p3

yB =

h 12 h 22 h 32
h 13 h 23 h 33
h 1 h 2 h 3
1

p1
p2
p3

q2
q3

1-13

Coordonnes et Transformations Homognes

Sance 1

Rectification de l'Image d'un plan.


La projection d'un plan 2D dans un scne 3D vers le retine 2D d'un camra est une
homographie. Elle est bijective est facile a "corriger".
Ceci a des nombreuse applications. Par exemple, l'image d'un tableau blanc peut
tre "rectifi" par l'homographie inverse.
1
HDS = ( HD
S)

Dans le scne

Dans l'image (source)

L'image Rectifi
(destination)

Pour chaque pixel de l'image destination, on calcul son position dans l'image source.
QS = HDS PD

pour S, D = 1, 2, 3.

Ensuite Pour chaque pixel PD on dtermine la valeur de la pixel au position


xs
ys

q1/q3
= q2/q3
1

1-14

Coordonnes et Transformations Homognes

Sance 1

Estimation et Rectification par Homographie


La Homographie peut tre dterminer par observation des 4 coins d'un carr.
S

R1

R0

P0

P2
S

R2

Source

R3

P1
D

P3

Destination

Soit les qautre coins, k=1, 2, 3, 4 de l'image dans repere destination :

p 02 p 12 p 22 p 32
p 03 p 13 p 23 p 33
p 0 p 1 p 2 p 3
1

PDk =

On dit qu'ils corresponde au sommets de l'image source


RSk

1 1 0 0
1 0 1 0
1 1 1 1

On note
RSk = HDS PDk
Le 3 x 3 matrice inconnu, HDS a 9 coefficients.
Parce que HDS est en coordones homognes, on peut fixer H33 = 1.
Il nous reste 8 cofficients estimer.
Donc :

et

R1k / R3k = HD1 PDk / HD3 PDk


R2k / R3k = HD2 PDk / HD3 PDk

R1k HD3 PDk = R3k HD1 PDk


R2k HD3 PDk = R3k HD2 PDk

R1k HD3 PDk R3k HD1 PDk = 0


R2k HD3 PDk R3k HD2 PDk = 0

Ceci donne deux quations (S=1, 2) pour chaque coin (k=1,2,3,4) , donc 8
equations pour les 8 inconnues du HDS. L'equation pour S =3 n'est pas indpendant
de S =1 et S=2.
1-15

Coordonnes et Transformations Homognes


Ensuite

Sance 1

Pour chaque pixel, PD :


SetPixel (Destination, PD)= BiLinear_Interpolate(Source, ( HDS PD) );

1-16

You might also like