Vous êtes sur la page 1sur 61

Capteurs Visuels

(III)

(Automne 2019) Philippe Giguère


Rappel : sections « intéressantes »
• Traiter l’image complète  temps calcul $$$
• Chercher les points saillants/intéressants
– équivalent attention visuelle humaine

• Point intéressant:
– stable (aux changements d’angle/lumière)
– informatif
– notion de distinct du pourtour

GLO-4001/7021 Introduction à la robotique mobile 177


Détecteurs de coin
beaucoup
pas un peu
Moravec

FAST
Harris

GLO-4001/7021 Introduction à la robotique mobile


© Edward 178
Rosten
Rappel Descripteurs
• 1ère étape : identifier les keypoints
• 2ème étape : leur attribuer une signature=descripteur
(un « sommaire »)
64 pix
descripteur
(vecteur)
64 pix f( )

64x64x3=12 288 réduction taille m


keypoint
• Au final, feature = position (u,v) dans l’image + descripteur
GLO-4001/7021 Introduction à la robotique mobile 179
Odométrie visuelle
Odométrie visuelle : pourquoi?
• Odométrie : estime les déplacements incrémentaux du
robot en fonction mouvement des actionneurs

Mesurer la
rotation des roues

• Difficile si :
– robot à pattes
– sol très accidenté
– sol glissant (sable)

NASA Mars Rover


GLO-4001/7021 Introduction à la robotique mobile
181
Odométrie visuelle
• Avantages
– n’est pas sujet au glissement des roues
– trajectoire estimée plus précise qu’avec les roues
• Désavantages
– propreté des lentilles
– sensibilité illumination (capteur passif)
– position dérive avec le temps
– 1 seule caméra : on n’a pas l’échelle
• d’où l’utilisation de la stéréo

GLO-4001/7021 Introduction à la robotique mobile 182


Odométrie visuelle (visual odometry: VO)
• Utiliser les caméras pour mesurer les
déplacements relatifs (incrémentaux) du robot
entre les images
– n’estime pas la position absolue
• Peut utiliser différentes configurations de
caméras
– 1 seule
– paire stéréo configuration étudiée
– caméra omnidirectionnelle

GLO-4001/7021 Introduction à la robotique mobile 183


Exemple VO avec stéréo
• Identifier des « features » fi dans les images IG, ID

G les features f1, f2 et f3 se situent


f3
f1
f2 quelque part sur l’une de ces
lignes, respectivement
D
xt

IG ID (note : ici je simplifie le


GLO-4001/7021 Introduction à la robotique mobile problème à 2 D, vue de haut) 184
Exemple VO avec stéréo
• Identifier des « features » fi dans les images IG, ID
• Trouve les positions des fi dans l’environnement
avec la stéréo (ici, l’intersection des rayons)

tf
1
tf
2
G
f2 f3 f3
f1 f1 f2
tf
D 3

xt

IG ID (note : ici je simplifie le


GLO-4001/7021 Introduction à la robotique mobile problème à 2 D, vue de haut) 185
Exemple VO avec stéréo
• Identifier des « features » fi dans les images IG, ID
• Trouve les positions des fi dans l’environnement
avec la stéréo (ici, l’intersection des rayons)
(rotation) (translation)

• Cherche transformation R et T
entre les deux poses xt et xt+1
t+1f
1
t+1f
2
G G
robot avance
t+1f
D D 3

xt xt+1

(note : ici je simplifie le


GLO-4001/7021 Introduction à la robotique mobile problème à 2 D, vue de haut) 186
Transformation
f1
f2

vue de haut
xt
f3

le robot avance…
f1
f2

vue de haut
xt+1
f3

GLO-4001/7021 Introduction à la robotique mobile 187


Transformation
f1
f2

vue de haut
xt
f3

le robot avance…
f1
f2 ici les features fi

vue de haut
sont plus
xt+1 proches car le
f3
robot a avancé

GLO-4001/7021 Introduction à la robotique mobile 188


Transformation
tf
1
tf
2

xt
tf
3

t+1f
1
t+1f
2

xt+1 t+1f
3

GLO-4001/7021 Introduction à la robotique mobile 189


Transformation
tf
1
tf
2

tf
3

t+1f
1
t+1f
2

t+1f
3

GLO-4001/7021 Introduction à la robotique mobile 190


Transformation
Trouver R et T pour faire matcher les t+1fi avec les tfi

t+1f tf
1 1
t+1f tf
2 2

transformation t+1f tf
3 3
= odométrie
visuelle

GLO-4001/7021 Introduction à la robotique mobile 191


Transformation
Trouver R et T pour faire matcher les t+1fi avec les tfi

tt+1
f1 f1
t+1
tf f
2 2

transformation tt+1
f3 f3
= odométrie
visuelle

GLO-4001/7021 Introduction à la robotique mobile 192


Cas Réel
• Dans la réalité, il va y avoir des incertitudes
– position (pixel)angles (variation approx. normale)
– erreur dans l’appariement des features fi : données
aberrantes (outliers)
mauvaise assignation de f3 dans ID

f1
f2
f3 f3 G
f2 f2 f3
f1 f1
f3
D
xt

IG ID 193
Cas avec 1/4 donnée aberrante
tf
1
Transformation 1 t+1tf
1
tf t+1tf
2 2

tf
3 sur 4 tf
t+1f
tf 3 t+1tf 3 3
4 la bonne 4
xt
ou
t+1f Transformation 2 tf
1 1
t+1f
2 tf
2

t+1f
3 aberrante
2 sur 4 tf
t+1f 3
4 tf
xt+1 4

GLO-4001/7021 Introduction à la robotique mobile 194


RANSAC : RANdom SAmple Consensus
• Proposé par Fischler et Bolles en 1981
• Méta-algorithme probabiliste
• Permet des régressions (fit) très robuste de
modèle, malgré présence de nombreuses
données aberrantes
• Cité 22 225 fois (en date du 30 septembre 2019)
– incontournable!

M.A. Fischler and R.C. Bolles. Random sample consensus: A paradigm for model fitting with applications
to image analysis and automated cartography. Communications of the ACM, 24(6):381–395, 1981. 195
RANSAC : RANdom SAmple Consensus
• Connait le modèle et le nombre Nmin de points requis pour un fit
• ligne : 2 points

Nmin

eTol.

1 w = prob. inlier
N
wNmin
Variante : on peut aussi faire toutes les N itérations, et garder le modèle avec le plus grand nombre d’inliers
 n  # éléments  n!
Tester toutes les combinaisons possibles : k parmi n=    : trop grand!
 k  N min  k !( n  k )!
M.A. Fischler and R.C. Bolles. Random sample consensus: A paradigm for model fitting with applications
to image analysis and automated cartography. Communications of the ACM, 24(6):381–395, 1981. 196
Exemple RANSAC
série de mesures

moindres carrés
ce qu’on
cherche
y = 0.5x + 1 + eb
eb N (0,0.32 )

Param. RANSAC
Nmin = 2
#iter N = 300
eTol = 1.0
Ratio inliers t=10%

Note : hypothèse sous-jacente des moindres carrés : bruit gaussien. 197


RANSAC pour VO : Essai #1
tf
1
tf
2
tf
5

tf
tf tf 3
4 6

t+1f
1
t+1f t+1f
6 2
t+1f
5
t+1f
4 t+1f
t+1f t+1f 3
4 6

GLO-4001/7021 Introduction à la robotique mobile


RANSAC pour VO : Essai #1
tf
1 Pige 2* features au hasard : f1 et f4
tf
tf
2
Trouve T et R pour les matcher
5

tf
tf tf 3
4 6

f1
t+1f f2
1
t+1f t+1f f5
6 2
t+1f
5 f3
t+1f f4 f6
4 t+1f
3

GLO-4001/7021 Introduction à la robotique mobile * besoin de seulement 2, car les fi ne sont pas anonymes
RANSAC pour VO : Essai #1
tf
1 Pige 2* features au hasard : f1 et f4
tf
tf
2
Trouve T et R pour les matcher
5

tf
Compter les matchs < eTol
tf tf 3
4 6

f1
t+1f f2
1
t+1f t+1f f5
6 2
t+1f
5 f3
t+1f
4 t+1f 3/6 f4 f6
3

eTol
GLO-4001/7021 Introduction à la robotique mobile * besoin de seulement 2, car les fi ne sont pas anonymes
RANSAC pour VO : Essai #2
tf
1 Pige 2 features au hasard : f3 et f5
tf
tf
2
Trouve T et R pour les matcher
5

tf
Compter les matchs < eTol
tf tf 3
4 6

f1
t+1f f6 f2
1
t+1f t+1f f5
6 2
t+1f f4
5 f3
t+1f
4 t+1f 4/6 f4 f6
3

eTol a le plus d’inliers,


on conserve!
GLO-4001/7021 Introduction à la robotique mobile 201
Pipeline feature visuel typique

Approche cascade

détecte extraction appariement vérification


keypoints descripteurs via s(•,•) Lowe/géom.

RANSAC

GLO-4001/7021 Introduction à la robotique mobile 202


Pipeline feature visuel typique

Approche cascade

détecte extraction appariement vérification


keypoints descripteurs via s(•,•) Lowe/géom.

RANSAC

GLO-4001/7021 Introduction à la robotique mobile 203


Pipeline feature visuel typique

Importance d’avoir BEAUCOUP de features en partant!

détecte extraction appariement vérification ~400 feat.


keypoints descripteurs via s(•,•) Lowe/géom.

~1000 feat. ~600 feat.

RANSAC
1
Rappel : écart-type de l’estimé diminue en
N ~100 feat.

GLO-4001/7021 Introduction à la robotique mobile 204


Transformations
géométriques :
rotation et translation

206
Repères
• En robotique, on doit constamment transférer
des points d’un référentiel à un autre

7  3
Coordonnées dans repère (robot) :  
1

référentiel
ym carte/global

xm
12
12
Coordonnées globales du repère :  
7 207
Autre exemple : caméra
• Si les objets sont en coordonnées de la caméra, on peut
facilement calculer une image
A' P A
 Ax 
u  1 0 0 0 A 
v  0 1 0 0  y
    Az 
1  0 0 1/ f 0  
coordonnées 1
image 2D coordonnées
3D

GLO-4001/7021 Introduction à la robotique mobile 208


Autre exemple : caméra
• Mais la caméra est sur le robot, qui se déplace…
le référentiel du monde (global) = référentiel caméra

• Il faut donc être capable d’exprimer un même point dans


plusieurs référentiels, et de passer d’un à l’autre
facilement.
209
Exemple : Kitti data set

GLO-4001/7021 Introduction à la robotique mobile 210


Convention sur la notation
• Point P défini dans le repère B :
yB
B P
P
xB
• Position de P est un vecteur partant de l’origine
de B, selon les axes de B, et se terminant à P

GLO-4001/7021 Introduction à la robotique mobile 212


Transformation pour repères translatés
• L’origine de B est situé à la coordonnée (10,5)
dans le repère A : BT
A

• La position de P, exprimée dans le repère A, est


B
donc l’addition des deux vecteurs BT et P :
A

A
P  B P  ABT yr
P
 A Px   B Px   ABTx 
A   B A  5
 Py   Py   BTy  réf. B xr

Fonctionne tant que les yA


repères A et B ont la même
orientation. Sinon, il faut
ajouter des rotations. réf. A xA 10
213
Définition : rotation
• Correspond à déplacer un point (vecteur), avec
une rotation autour de l’origine, d’un angle q
antihoraire

y P1
q

x
• Opération linéaire* : multiplication de matrice
cos q  sin q 
R  , P2  RP1
 sin q cos q 
(prémultiplication)

*Le calcul des cos/sin n’est pas linéaire, mais l’application de la rotation R l’est 214
Rappel : taxonomie des matrices

rotation

215
Tiré de Robotics, Vision and Control, P. Corke.
Exemple rotation 2D
Rotation de q =15o d’un rectangle autour de (0,0) :
on applique l’équation pour chaque point
 x2  cos15  sin15o   x1  0.9659 0.2588  x1 
o

y     
o  y   0.2588 y 
 2   sin15o cos15   1   0.9659   1

% Rotation d'un rectangle


P(:,1) = [0 0]';

P P2 P(:,2) = [2 0]';
P(:,3) = [2 1]';
P(:,4) = [0 1]';

angle = 15*pi/180; % radian


R = [cos(angle) -sin(angle) ; ...
sin(angle) cos(angle) ];

P2 = R*P; %rotat. sur tous les points

GLO-4001/7021 Introduction à la robotique mobile 216


Transformation pour des repères pivotés
• Soit le repère B pivoté de q =45o par rapport à A.
• Soit un point P défini dans ce repère B : BP =(9,16)
• Pour trouver AP, il suffit d’appliquer l’opérateur de rotation :
(coordonnées de P

yA
dans le repère A) A
P A B
BR P yA

17,7 équivalent
à faire tourner
le vecteur BP q
q
réf. A réf. A
-4.9 xA xA
 cos(45 o
)  sin(45o 
)  9   4.9
A
P     
 sin(45 ) cos(45 )     
o o 16 17.7
Transformation entre 2 repères
• On peut représenter toute transformation1 par une
rotation et une translation : cas général 2D/3D
• On a P, q et BT , on cherche P
B A A

yA

réf. A xA

1ou une série de transformations 218


Transformation entre 2 repères
• On peut représenter toute transformation1 par une
rotation et une translation : cas général 2D/3D
• On a P, q et BT , on cherche P
B A A

• Fait faire une rotation q : BA R


• Puis la translation ABT
(Définir un repère B par une combinaison
de rotation et une de translation) y
yAB P
A
P A B
B R P  BT
A
réf. B
L’ordre R, T est important! réf. A xA
B

(la rotation R se fait autour de l’origine)


1ou une série de transformations
219
Transformations : coordonnées cartésiennes
• Rotation : multiplication
• Translation : addition
• Chaînage d’opérations peu élégant
yC

réf. C xC

C
P AC
 ( B R P  BT
 PA R A B A
) C
AT
220
Coordonnées homogène : translation 2D
• Cartésien : une translation est une addition
 x2   x1  Tx1 
 y    y   T 
 2   1   y1 
• Homogène : translation est une multiplication

 x2  1 0 Tx1   x1   1  x1  0  y1  Tx1 1   x1  Tx1 


 y    0 1 T   y    0  x  1  y  T 1    y  T 
 2  y1   1   1 1 y1   1 y1 
 1  0 0 1   1  0  x1  0  y1  1 1   1 

P2  TP1
GLO-4001/7021 Introduction à la robotique mobile 221
Coordonnées homogène : rotation 2D
• Rotation est encore une multiplication

 x2  cos q  sin q 0   x1 
 y    sin q cos q 0   y1 
 2 
 1   0 0 1   1 

P2  RP1

GLO-4001/7021 Introduction à la robotique mobile 222


Homogène : chaînage des opérations
• Que des multiplications!
P2 = T2R2T1R1P
• Combiner toutes les transformations dans une
seule matrice H
P2 = HP avec H = T2R2T1R1
• (rappel : toute transformation peut s’exprimer par une
rotation et une translation, ici capturée dans H)

223
Homogène : chaînage des opérations
• Importance de l’ordre
P2 = TRP
(multiplication rotation : autour
des matrices de l’origine
n’est pas
commutative)
pas au même endroit!

P3 = RTP
rotation : autour
de l’origine
P3 = P2

GLO-4001/7021 Introduction à la robotique mobile 224


RT vs. TR
• Plus naturel de faire TR que de faire RT
sous-matrice vecteur
rotation translation

1 0 Tx  cos q  sin q 0 cos q  sin q Tx 


    
TR  0 1 Ty   sin q cos q 0   sin q
 cos q Ty 
0 0 1   0
  0 1   0 0 1 
couplage
translation-rotation 
cos q  sin q 0 1 0 Tx  cos q  sin q (Tx cos q  Ty sin q ) 
   
RT   sin q cos q 0  0 1 Ty    sin q cos q (Tx sin q  Ty cos q ) 
 0 0 1  0 0 1   0 0 1 

(À l’examen, cherchez les combinaisons TR) 225


Homogène : transformation 3D
1 0 0 0  cos A 0 sin A 0 
0 cos A  sin A 0   0
rotation rotation 1 0 0 
Rx ( A)   
autour axe x 0 sin A cos A 0 autour axe y Ry ( A)    sin A 0 cos A 0 
   
0 0 0 1  0 0 0 1
(certains manuels
ont des erreurs)
cos A  sin A 0 0 1 0 0 Tx 
 0 0  0 1
rotation R ( A)   sin A cos A 0 Ty 
 0 1 0
translation T  
autour axe z
z
0 0 0 1 Tz 
   
 0 0 0 1 0 0 0 1

matrice vecteur
rotation translation

 r11 r12 r13 Tx 


r r22 r23 Ty 
TR   21
 r31 r32 r33 Tz 
 
0 0 0 1
226
Transformations : coordonnées homogènes
• Rotation : multiplication
• Translation : multiplication
• Chaînage d’opération plus élégant :

yC

réf. C xC

C
P C C A A B
AT A R BT B R P
227
Transformations : coordonnées homogènes
• Peut combiner T et R dans une seule matrice de
transformation : H=TR
Rappel :
rotation transl.
 R11 R12 R13 Tx 
R R R T 
 21 22 23 y 
BH 
A yC
 R31 R32 R33 Tz 
 
 0 0 0 1 
réf. C xC

coordonnées A
C
P C A B
AH BH P
228
Sens des transformations
• On peut facilement trouver les transformations
inverses. Supposons qu’on connaisse BA H
On cherche
B
P B
A H A
P
B 1 B B 1 B
AH P  AH AH P A

B 1 B
AH P PA

Or, B H P  P
A B A (direction flèche
a changé)

Donc B H  A H 1
A B

229
Sens des rotations
• Profitez des propriétés de certaines matrices!
• Soit : B H  BT B R
A A A

• Quel est l’inverse AB H  BAH 1 ?


A 1 A 1 A 1 A 1
BH  ( ABT B R )  BR BT
R est orthogonal (orthonormal)
A 1
 BA RT BT
1 0 0 Tx 
0 1 0 Ty 
T 
1
0 0 1 Tz 
 
0 0 0 1 

B
AH  BART ( BAT )
GLO-4001/7021 Introduction à la robotique mobile
(ordre inverse, sens inverses) 230
Exemple
Cherche Ac Ac=AT AR Bc
B B
1 0 11 cos 90  sin 90 0  1 0 11 0 1 0   3  1 0 11  2  9 
AT= 0 1 1  AR=  sin 90 cos 90 0  Ac=  0 1 1  1 0 0   2    0 1 1   3    4 
B   B           
0 0 1   0 0 1  0 0 1  0 0 1  1  0 0 1   1  1 

Cherche Bd Bd=BT BR Ad
A A
B B
AT A R  ( ABT BA R) 1  BA R 1 ABT 1
 0 1 0  0 1 11
A 1 A T
  1 0 0   1 0 1 
B R  B R  
A 1
BT   

(3,2)
 0 0 1   0 0 1 
(1,4)

x
 0 1 0  1 0 11 1   0 1 0   10   3  d

c
 1 0 0  0 1 1   4       y
     1 0 0   3   10 
Bd=
 
 0 0 1  0 0 1  1   0 0 1   1   1 

B
y
GLO-4001/7021 Introduction à la robotique mobile A x 231
Exemple (autre point de vue)
• Exemple précédent : on
connaissait la position et
l’orientation de B par
rapport à A
• Refaire mais en
connaissant la position et
l’orientation de A par

(3,2)
rapport à B
(1,4)

x
d

c
y

B
y
GLO-4001/7021 Introduction à la robotique mobile A x 232
Exemple (autre point de vue)
Cherche Bd Bd=BT BR Ad pivoté de -90o
A A

y d
A
1 0 1
0 1 11 
B
AT   

(1,4)
0 0 1 

x
cos(90)  sin(90) 0   0 1 0
  sin(90) cos( 90) 0    1 0 0 
B
AR  
 0 0 1   0 0 1 

1 0 1  0 1 0  1  1 0 1  4   3 
y (3,2)
Bd= 0 1 11   1 0 0   4   0 1 11   1  
         10  c
0 0 1   0 0 1  1  0 0 1   1   1 
(même valeur qu’à B x
l’acétate précédente)

GLO-4001/7021 Introduction à la robotique mobile 233


Transformation monde  caméra
• Pour calculer l’endroit où un point dans le monde
va se situer par rapport à la caméra, on trouve la
transformation entre les deux référentiels

GLO-4001/7021 Introduction à la robotique mobile 234


Transformation monde  caméra
Transférer le point mP = (-3,0,2)
dans le référentiel du monde,
vers le référentiel de la caméra

Pc

GLO-4001/7021 Introduction à la robotique mobile 238


Transformation monde  caméra
Transférer le point mP = (-3,0,2)
dans le référentiel du monde,
vers le référentiel de la caméra
Pm =
-3
0
2
23.9054
1
Pc
R =
0.9397 0 0.3420 0 2.8650
0 1.0000 0 0
-0.3420 0 0.9397 0
0 0 0 1.0000

T =
1 0 0 5
0 1 0 0
0 0 1 21
0 0 0 1

>> Pc = T*R*Pm

Pc =
2.8650
0
23.9054
1.0000

GLO-4001/7021 Introduction à la robotique mobile 239


Modèle Caméra (Homogène)
3 à 2 dimensions 3 à 4 dimensions

dépend de la fabrication de la caméra

u
x1  X1   X1 
x3  x1   1 0 0 0    
    X  X2 
 x2    0 1 0 0H  2  X 
v
x2
 x   0 0 1/ f   X3   3
x3  3  0  
 1 

GLO-4001/7021 Introduction à la robotique mobile 241


Modèle Caméra plus complet
3 à 2 dimensions 3 à 4 dimensions

u
x1  X1   X1 
x3  x1     u0 0    
    X  X2 
 x2    0  v0 0H  2  X 
v
x2
x  0   X3   3
x3  3  0 1 0  
 1 
f = 1 pour simplifier
À titre informatif (u0,v0) : point principal sur capteur
,  : échelle x-y en pixel du capteur, idéalement 
 : déformation entre axes du capteurs, idéalement =0
242