50
TRAITEMENT D’IMAGE SIF-1033

TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Embed Size (px)

Citation preview

Page 1: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

TRAITEMENT D’IMAGE

SIF-1033

Page 2: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Corrections géométriques et calibration de caméra

Approche SVD– Transformations géométriques: déduction du

modèle de déformation géométrique Assignation des valeurs de niveaux de gris Modèle de caméra Étalonnage de caméra Projection 2D/3D

Page 3: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Déformations géométriques des images

Image déformée Image corrigée

Comment déduire le modèle de déformation ?

Page 4: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche Singular Value Decomposition

Cette approche permet d’éliminer les faiblesses notées dans les approches de résolutions de Gauss.

L’approche SVD permet de résoudre divers types de problèmes: résolution de systèmes d’équations linéaires par moindres carrés (cas d’approximation de données), résolution de système mal conditionné.

Page 5: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche Singular Value Decomposition

Système à résoudre:

bU

w

w

w

Vx

bxA

T

n

/10000

00

000

00/10

000/1

2

1

Page 6: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche Singular Value Decomposition

Si nous voulons modéliser la transformation géométrique (déformation) entre une image idéale (non déformée) et une image déformée par un système du deuxième ordre (degré 2):

x’ = A x2 + B y2 + C xy + D x + E y + F (1)

y’ = G x2 + H y2 + I xy + J x + K y + L (2)x’,y’: coordonnées de l’image déforméex, y: coordonnées de l’image idéale (x: horizontal, y: vertical)

Page 7: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche SVD (suite)

Pour déduire la forme de ce modèle (donner des valeurs aux coefficients de déformation A, B, C, D, E ……, L) nous devons d’abord sélectionner au moins 6 points de contrôle dans une image de référence non déformée ainsi que leur correspondant dans une image déformée.

Supposons que ces points de contrôle sont d’une part sélectionnés et ensuite stockés dans les vecteurs X, Y (image idéale) et X_Prime, Y_Prime (image déformée)

Page 8: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche SVD (suite)

Exemple d’un système d’équations du deuxième ordre Ax = b :

n

n

nnnnnn

nnnnnn

y

x

y

x

y

x

y

x

L

K

J

I

H

G

F

E

D

C

B

A

yxyxyx

yxyxyx

yxyxyx

yxyxyx

'

'

'

'

'

'

'

'

1000000

0000001

1000000

0000001

3

3

2

2

1

1

22

22

111121

21

111121

21

Vecteur des sol’n recherchées Coordonnéesdes points de contrôle dansl’image déformée.

Coordonnées des pointsde contrôle dans l’image idéale

A x b

Page 9: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche SVD (suite)

L’approche SVD permet d’exprimer la matrice A par la décomposition A = U W VT.

Cette décomposition en matrices est obtenue par la fonction svdcmp() de Numerical Recipes in C.

Les matrices U, W et VT permettent de calculer l’inverse de A, A-1 ayant la forme

A-1 = (VT)-1 W-1 U-1 = V W-1 UT V et U étant orthonormales, leur inverse est donc donnée

par leur transposée. W étant diagonale, donc W-1 est aussi diagonale avec les

éléments sur la diagonale à 1/wi.

Page 10: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche SVD (suite)

Quand certaines valeurs wi 0 (proche de 0), la matrice A est dite singulière.

Dans ce cas, A-1 (VT)-1 W-1 U-1 V W-1 UT. Donc pour estimer la matrice A-1 (pseudoinverse de

A), nous remplaçons les valeurs 1/wi dans la matrice W-1par 0 quand wi est petit (proche de 0).

Donc, x = A-1 b est obtenue dans les cas de singularité par x = pseudoinverse (A) b

Page 11: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche SVD (suite)

Forme de x = A-1 b

bU

w

w

w

Vx

bxA

T

n

/10000

00

000

00/10

000/1

2

1

A-1

Page 12: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche SVD (suite)

Avant d’appeler la fonction svdksb() qui permet de déduire les sol’n d’un système d’équations linéaires, il faut vérifier si A est singulière.

Après l’exécution de la fonction svdcmp(), les

wi < MAX(wi) * 1.0e-6 sont fixés à 0 dans la matrice W.

Page 13: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche SVD (suite)

Algorithme de résolution: correction d’imageint X[20],Y[20],X_Prime[20],Y_Prime[20]; // premier indice : 1float wmax, wmin, **a,**u,*w,**v,*b,*xint i,j;

// selectionner un minimum de 6 points de contrôle….// selectionner un maximum de 20 points de contrôlea = matrix(1,2*m,1,12); // matrice A de 2mX12u = matrix(1,2*m,1,12); // m: nombre de points de contrôlew = matrix(1,12,1,12);v = matrix(1,12,1,12);b = vector(1,2*m); // points de contrôle dans l’image deformeex = vector(1,12); // vecteur des sol’n….. // mise à 0 de A

Page 14: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche SVD (suite)

Algorithme de résolution: correction d’image (suite …)

for(i=1;i<=2*m;i+=2) // initialiser A{

a[i][1] = a[i+1][7] = X[i/2+1]*X[i/2+1];a[i][2] = a[i+1][8] = Y[i/2+1]*Y[i/2+1];a[i][3] = a[i+1][9] = X[i/2+1]*Y[i/2+1];a[i][4] = a[i+1][10] = X[i/2+1];a[i][5] = a[i+1][11] = Y[i/2+1];a[i][6] = a[i+1][12] = 1.0;

}

Page 15: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche SVD (suite)

Algorithme de résolution: correction d’image (suite …)

for(i=1;i<=2*m;i+=2) // initialiser b

{

b[i] = X_Prime[i/2+1];

b[i+1] = Y_Prime[i/2+1];

}

Page 16: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche SVD (suite)

Algorithme de résolution: correction d’image (suite …)

for(i=1;i<=2*m;i++)for(j=1;j<=12;j++)

u[i][j] = a[i][j];svdcmp(u,2*m,12,w,v);wmax = 0.0;for(j=1;j<=12;j++) if(w[j] > wmax) wmax = w[j];wmin = wmax*1.0e-6;for(j=1;j<=12;j++) if(w[j] < wmin) w[j]=0.0;svdksb(u,w,v,2*m,12,b,x);

Page 17: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche SVD (suite)

Avec le vecteur des sol’n x dont les éléments correspondent aux coefficients des équations de transformation des pixels de l’image idéale vers l’image déformée (x[1] A, x[2] B, x[3] C, x[4] D, …., x[12] L), nous pouvons projeter chaque point x,y d’une image idéale pour trouver sa position x’,y’ dans l’image déformée.

x’ = A x2 + B y2 + C xy + D x + E y + F (1)

y’ = G x2 + H y2 + I xy + J x + K y + L (2)

Page 18: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche SVD (suite)

En substituant les notations utilisées dans l’algorithme, les éq. (1) et (2 ) deviennent:

X’ = x[1] X2 + x[2] Y2 + x[3] XY + x[4] X + x[5] Y + x[6]

Y’ = x[7] X2 + x[8] Y2 + x[9] XY + x[10] X + x[11] Y + x[12]

Page 19: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Approche SVD (suite)

Algorithme de la correction géométrique

for(Y=0;Y<Hauteur;Y++)for(X=0;X<Largeur;X++) {

X’ = x[1] X2 + x[2] Y2 + x[3] XY + x[4] X + x[5] Y + x[6];Y’ = x[7] X2 + x[8] Y2 + x[9] XY + x[10] X + x[11] Y + x[12];// valider X’ Y’

imageCorrigee[Y][X] = imageDeforme[(int)Y’+0.5][(int)X’+0.5];

}

// Ne pas oublier de libérer les matrices et vecteurs avec les fonctions free_matrix()// et free_vector()

Page 20: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Interpolation du type voisin le plus proche ["Nearest neighbor"]

Transformation spatiale

Affectation du niveau de gris

(x, y) )ˆ,ˆ( yx

)ˆ,ˆ(deprocheplusleVoisin

yx

)ˆ,ˆ( yxgf (x, y)

Page 21: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Exemple: Correction géométrique

r11.rast

r11CGEO.rast

– – Résultat de la correctionRésultat de la correction

cadastreNS4X4.tiffcorrectiongeo r11.rast r11CGEO.rast 1258 842 338 1180 3.617372e-5 ...

Page 22: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Exemple: Correction géométrique

Modèle de déformation:

x’ = 3.617372e-5 y2 - 7.388483e-5 x2 - 7.460775e-6 xy - 0.06930322 y + 0.8548632 x + 21.974

y’ = 2.625691e-5 y2 - 4.338432e-6 x2 + 1.788196e-5 xy + 1.210034 y - 0.03385992 x - 415.5843

où x’,y’ sont les coordonnées des pixels dans l’image déformée et x,y celles de l’image

corrigée (idéale).

Page 23: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Utilités d’un modèle de caméra

Points 2D(image)

Modèle decaméra

Points 3D(espace)

Matrice deTransformation(paramètres du

Modèle)

Étalonnagede caméra

Opération faitesune seule fois.

• Le but recherchéest donc de trouverla coordonnée dansl’espace 3D d’un objet projeté dansl’image (pixel 2D)

Page 24: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Modèle de caméra (sténopé=> pinhole)

Page 25: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Modèle de caméra (sténopé=> pinhole)

Page 26: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Modèle de caméra (sténopé=> pinhole)

Le sténopé non inverseur

Page 27: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Modèle de caméra (lentille)

• Le sténopé ne permet pas la création d’images nettes puisque l’ouverture étant petite, ne permet pas de laisser passer assez de lumière.• Une lentille est donc ajoutée pour contrer cette faiblesse.

Page 28: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Modèle de caméra (lentille)

Inverseur

Non inverseur

Page 29: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Modèle de caméra (projection en perspective)

• Sachant que Y/Z = Y’/F• Alors Y’ = YF/Z

X’ = XF/Z Z’ = F (distance focale)

Page 30: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra (modèle d’acquisition d’images)

Plan Image

Système de référencede la caméra

Page 31: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra (modèle d’acquisition d’images)

Page 32: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra (modèle d’acquisition d’images: Paramètres extrinsèques)

Page 33: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra (modèle d’acquisition d’images: Paramètres extrinsèques)

Page 34: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra (modèle d’acquisition d’images: Paramètres intrinsèques)

Projection (transformation) en perspective du point P dans l’image

f (focal distance)

Page 35: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra (modèle d’acquisition d’images: Paramètres intrinsèques)

Application de la projection en perspective:

Calcul des coordonnées images:

(ox, oy): coordonnées du point principal (centre de l’image, ox = N/2 oy = M/2)sx et sy sont les dimensions horizontale et verticale d’un pixel (en mm)

Page 36: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra (modèle d’acquisition d’images)

Passage des coordonnées du monde aux coordonnées image:

En coordonnées homogènes:

Page 37: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra (modèle d’acquisition d’images)

En coordonnées homogènes:

Page 38: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra (modèle d’acquisition d’images)

1100

0

987

654

321

0

0

Z

Y

X

trrr

trrr

trrr

v

u

s

sv

su

z

y

x

Pixel 2DImage

Paramètresintrinsèquesde la caméra

Paramètresextrinsèques

Points 3D(mm)

Page 39: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra (modèle d’acquisition d’images)

1

100

0

1

34333231

24232221

14131211

987

654

321

0

0

34333231

24232221

14131211

Z

Y

X

mmmm

mmmm

mmmm

s

sv

su

trrr

trrr

trrr

v

u

mmmm

mmmm

mmmm

M

Z

Y

X

M

s

sv

su

z

y

x

• L’étalonnage consiste donc à trouver la matrice M

Page 40: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra (modèle d’acquisition d’images)

0

0

1

2434333231232221

1434333231131211

34333231

24232221

14131211

34333231

24232221

14131211

mvmvZmvYmvXmZmYmXm

mumuZmuYmuXmZmYmXm

mZmYmXms

mZmYmXmsv

mZmYmXmsu

Z

Y

X

mmmm

mmmm

mmmm

s

sv

su

Équations d’étalonnage

Page 41: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra

Pour déduire les coefficients de ce modèle d’étalonnage (donner des valeurs aux coefficients de déformation 3D/2D, m11, m12, m13, m14, m21 …. ……, m34) nous devons d’abord sélectionner au moins 6 points de contrôle dans une image de référence de la scène 2D (image de la scène) ainsi que leur correspondant dans l’espace 3D du monde.

Supposons que ces points de contrôle sont d’une part sélectionnés et ensuite stockés dans les vecteurs u, v (image scène) et X, Y, Z (points 3D)

Page 42: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra

Exemple de cible 3D utilisée pour l’étalonnage de caméra.

Page 43: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra

Système d’équations linéaires Ax = b :

m

m

mmmmmmmmmm

mmmmmmmmmm

m

m

m

m

m

m

m

m

m

m

m

m

vZvYvXvZYX

uZuYuXuZYX

vZvYvXvZYX

uZuYuXuZYX

0

0

0

0

0

0

0

0

10000

01000

10000

01000

3

3

2

2

1

1

24

14

34

33

32

31

23

22

21

13

12

11

1111111111

1111111111

Vecteur des sol’n recherchées

Coordonnéesdes points de contrôle 3D.

Coordonnées des pointsde contrôle dans l’image de la scène

A x b

Page 44: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra

Algorithme de résolution: étalonnage de caméraint X[20],Y[20], Z[20],U[20],V[20];float wmax, wmin, **a,**u,*w,**v,*b,*xint i,j,minPos;

// selectionner un minimum de 6 points de contrôle….// selectionner un maximum de 20 points de contrôle….// correspondance en chaque pixel (u,v) et point dans l’espace 3D (X,Y,Z)a = matrix(1,2*m,1,12); // matrice A de 2mX12u = matrix(1,2*m,1,12); // m: nombre de points de contrôlew = matrix(1,12,1,12);v = matrix(1,12,1,12);b = vector(1,2*m); x = vector(1,12); // vecteur des sol’n….. // mise à 0 de A

Page 45: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra

Algorithme de résolution: étalonnage de caméra (suite …)

for(i=1;i<=2*m;i+=2) {// initialiser Aa[i][1] = a[i+1][4] = X[i/2+1];a[i][2] = a[i+1][5] = Y[i/2+1];a[i][3] = a[i+1][6] = Z[i/2+1];a[i][7] = -X[i/2+1]* u[i/2+1];a[i+1][7] = -X[i/2+1]* v[i/2+1];a[i][8] = -Y[i/2+1]* u[i/2+1];a[i+1][8] = -Y[i/2+1]* v[i/2+1];a[i][9] = -Z[i/2+1]* u[i/2+1]; a[i+1][9] = -Z[i/2+1]* v[i/2+1]; a[i][10] = - u[i/2+1]; a[i+1][10] = - v[i/2+1]; a[i][11] = a[i+1][12] = 1.0; }

Page 46: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra

Algorithme de résolution: étalonnage de caméra (suite …)

for(i=1;i<=2*m;i+=2) // initialiser b

{

b[i] = b[i+1] = 0;

}

Page 47: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra

Algorithme de résolution: étalonnage de caméra (suite …)

for(i=1;i<=2*m;i++)for(j=1;j<=12;j++)

u[i][j] = a[i][j];svdcmp(u,2*m,12,w,v);wmax = 0.0;for(j=1;j<=12;j++) if(w[j] > wmax) wmax = w[j];wmin = wmax; // trouver la valeur propre min. dans wfor(j=2;j<=12;j++)

if((w[j] < wmin) && w[j] != 0.0) {wmin = w[j]; minPos = j;}for(j=1;j<=12;j++) x[j]=v[j][minPos]; // x contient la solution

Page 48: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Étalonnage de caméra

Avec le vecteur des sol’n x dont les éléments correspondent aux coefficients des équations de transformation 3D/2D (points dans l’espace vers pixels). (x[1] m11, x[2] m12, x[3] m13, x[4] m21, x[5] m22, x[6] m23, x[7] m31, x[8] m32, x[9] m33, x[10] m34, x[11] m14, x[12] m24), nous pouvons déduire la position la position 3D d’un point dans l’espace à partir de sa projection u,v dans le plan image.

Page 49: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Projection 2D/3D

• Pour un point u,v donné dans une image, vous trouversa position 3D sur le plancher Xw, Yw, Zw (mm)

Page 50: TRAITEMENT DIMAGE SIF-1033. Corrections géométriques et calibration de caméra u Approche SVD –Transformations géométriques: déduction du modèle de déformation

Résumé

Corrections géométriques et calibration de caméra– Approche SVD

– Modèle de caméra

– Étalonnage de caméra

– Projection 2D/3D