SUJETS SPÉCIAUX EN INFORMATIQUE I

Slides:



Advertisements
Présentations similaires
Eléments d'algèbre linéaire
Advertisements

Cours 8 Problèmes de dynamiques : techniques de résolution pas-à-pas
Cours 7 Problèmes d’ordre 2 en temps : Analyse modale
Unité #1 Analyse numérique matricielle Giansalvo EXIN Cirrincione.
A Pyramid Approach to Subpixel Registration Based on Intensity
M. EL Adel & M. Ouladsine LSIS – UMR-CNRS 6168 Marseille - France
Laboratoire dInformatique et dImagerie Industrielle Traitement des Images Couleur Partie 3 : un exemple de traitement dimages couleur : Correction chromatique.
Résoudre graphiquement une équation ou une inéquation simple
Application à la méthode des
PROGRAMMATION SCIENTIFIQUE EN C
Réalisation dun travail concret avec des matrices Afficher un objet 3D sur une surface Lui appliqué des transformations Le voir se transformer suivant.
ASI 3 Méthodes numériques pour l’ingénieur
Chapitre 6 : Restauration d’images
Réalisateur : PHAM TRONG TÔN Tuteur : Dr. NGUYEN DINH THUC
TRAITEMENT D’IMAGE SIF-1033.
Concepts avancés en mathématiques et informatique appliquées
Rappel... Opérations élémentaires sur les matrices:
Résoudre graphiquement f(x)≤-2
Inversion / Res2dinv Thème 2 = « Organisation et fonctionnement hydrique des couvertures d’altération, des dépôts alluviaux et des sols » devient dans.
Systèmes d’équations linéaires
SUJETS SPÉCIAUX EN INFORMATIQUE I PIF Contenu du cours Transformations géométriques des objets –Transformations 2D –Transformations entre systèmes.
Rappel... Solution itérative de systèmes linéaires (suite et fin).
Techniques d’optimisation
Transformation linéaires
Examen partiel #3 Mercredi le 15 décembre de 15h30 à 17h20
Nicolas Holzschuch Cours d’Option Majeure 2
Design dun système de vision embarqué. Application:
PROGRAMMATION SCIENTIFIQUE EN C
PROGRAMMATION SCIENTIFIQUE EN C
PIF-6003 Sujets spéciaux en informatique I
SUJETS SPÉCIAUX EN INFORMATIQUE I
SIF-1033 Traitement d’image
SUJETS SPÉCIAUX EN INFORMATIQUE I
SUJETS SPÉCIAUX EN INFORMATIQUE I
Géométrie analytique Équations d’une droite
Rééchantillonnage des données image
Messages Pas de dépannage mardi le 26 à 11h30. Achat de groupe de Matlab version étudiante?
TRAITEMENT D’IMAGE SIF-1033.
Rappel... Matrices bloc. Décomposition des matrices:
Complément Calibrage et Homographie
TRAITEMENT D’IMAGE SIF-1033.
l’algorithme du simplexe
Cours du 25 octobre Mardi le 24 octobre
La décomposition en valeurs singulières: un outil fort utile
Géométrie épipolaire (deux vues)
ASI 3 Méthodes numériques pour l’ingénieur
Rappel... Valeurs propres et vecteurs propres. Définitions;
Cours de mathématiques économiques
PROGRAMMATION SCIENTIFIQUE EN C
Programmation linéaire en nombres entiers
Septembre Semaines du 2 au 13 septembre DATECOURSEXERCICESEXERCICES à fairePOUR le Jeudi 4 Prise de contact Rappels sur les suites 2 exemples donnés pour.
Programmation Création d’une mire 1 afficher une image
CHAPITRE III Calcul vectoriel
Introduction au Traitement d’image
Matlab (Matrix Laboratory)
SUJETS SPÉCIAUX EN INFORMATIQUE 1
PROGRAMMATION SCIENTIFIQUE EN C PRO Résolution de système d’équations non- linéaires (racines d’équations) u Méthode de la bissection u Analyse.
PROGRAMMATION SCIENTIFIQUE EN C PRO Approximation de fonctions et régression u Approximation linéaire –Méthode du moindre carré u Travail pratique.
Méthode des moindres carrés (1)
Concepts avancés en mathématiques et informatique appliquées MAP-6014.
PROGRAMMATION SCIENTIFIQUE EN C PRO Approximation de fonctions et régression u Approximation linéaire –Méthode du moindre carré u Exemple.
Partie II : Segmentation
PIF-6003 Sujets spéciaux en informatique I
PROGRAMMATION SCIENTIFIQUE EN C
Traitement d’images Semaine 13 – Modèle correspondant.
Pierre Joli Cours de Mathématique Pierre Joli
MATHÉMATIQUES L1 Second Semestre Armand Taranco. BIBLIOGRAPHIE Dupont : Algèbre pour les sciences économiques, Flash U, A. Colin. Bernard Guerrien, Isabelle.
Matlab (Matrix Laboratory) Langage de programmation évolué. Traitement direct d’opérations matricielles, dont l’inversion et l’analyse d’opérateurs ou.
PROGRAMMATION SCIENTIFIQUE EN C
Transcription de la présentation:

SUJETS SPÉCIAUX EN INFORMATIQUE I PIF-6003

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 Calibration de caméras avec OpenCV

Déformations géométriques des images Image déformée Image corrigée Comment déduire le 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é.

Approche Singular Value Decomposition Système à résoudre:

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ée x, y: coordonnées de l’image idéale (x: horizontal, y: vertical)

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)

Approche SVD (suite) x b A Exemple d’un système d’équations du deuxième ordre Ax = b : Vecteur des sol’n recherchées Coordonnées des points de contrôle dans l’image déformée. Coordonnées des points de contrôle dans l’image idéale x b A

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.

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

Approche SVD (suite) Forme de x = A-1 b A-1

Approche SVD (suite) Après l’exécution de la fonction svdcmp(), les 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.

Approche SVD (suite) Algorithme de résolution: correction d’image int X[20],Y[20],X_Prime[20],Y_Prime[20]; // premier indice : 1 float wmax, wmin, **a,**u,*w,**v,*b,*x int i,j; // selectionner un minimum de 6 points de contrôle ….// selectionner un maximum de 20 points de contrôle a = matrix(1,2*m,1,12); // matrice A de 2mX12 u = matrix(1,2*m,1,12); // m: nombre de points de contrôle w = matrix(1,12,1,12); v = matrix(1,12,1,12); b = vector(1,2*m); // points de contrôle dans l’image deformee x = vector(1,12); // vecteur des sol’n ….. // mise à 0 de A

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; }

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]; }

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);

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)

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]

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()

Interpolation du type voisin le plus proche ["Nearest neighbor"] Transformation spatiale (x, y) f (x, y) Affectation du niveau de gris

Exemple: Correction géométrique CGEO .rast – Résultat de la correction r11.rast correctiongeo r11.rast r11CGEO.rast 1258 842 338 1180 3.617372e-5 ... cadastreNS4X4.tiff

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).

Utilités d’un modèle de caméra Points 2D (image) Modèle de caméra Points 3D (espace) Le but recherché est donc de trouver la coordonnée dans l’espace 3D d’un objet projeté dans l’image (pixel 2D) Matrice de Transformation (paramètres du Modèle) Étalonnage de caméra Opération faites une seule fois.

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

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

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

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.

Modèle de caméra (lentille) Inverseur Non inverseur

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)

Étalonnage de caméra (modèle d’acquisition d’images) Système de référence de la caméra Plan Image

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

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

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

Étalonnage de caméra (modèle d’acquisition d’images: Paramètres intrinsèques) f (focal distance) Projection (transformation) en perspective du point P dans l’image

É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)

É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:

Étalonnage de caméra (modèle d’acquisition d’images) En coordonnées homogènes:

Étalonnage de caméra (modèle d’acquisition d’images) Points 3D (mm) Pixel 2D Image Paramètres intrinsèques de la caméra Paramètres extrinsèques

Étalonnage de caméra (modèle d’acquisition d’images) L’étalonnage consiste donc à trouver la matrice M

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

É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)

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

Étalonnage de caméra A x b Système d’équations linéaires Ax = b : Vecteur des sol’n recherchées Coordonnées des points de contrôle dans l’image de la scène Coordonnées des points de contrôle 3D. A x b

Étalonnage de caméra Algorithme de résolution: étalonnage de caméra int X[20],Y[20], Z[20],U[20],V[20]; float wmax, wmin, **a,**u,*w,**v,*b,*x int i,j,minPos; // selectionner un minimum de 6 points de contrôle ….// selectionner un maximum de 20 points de contrôle a = matrix(1,2*m,1,12); // matrice A de 2mX12 u = matrix(1,2*m,1,12); // m: nombre de points de contrôle w = matrix(1,12,1,12); v = matrix(1,12,1,12); b = vector(1,2*m); // points de contrôle dans l’image deformee x = vector(1,12); // vecteur des sol’n ….. // mise à 0 de A

Étalonnage de caméra Algorithme de résolution: étalonnage de caméra (suite …) for(i=1;i<=2*m;i+=2) {// initialiser A a[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; }

É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; }

É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 w for(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

É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.

Projection 2D/3D Pour un point u,v donné dans une image, vous trouver sa position 3D sur le plancher Xw, Yw, Zw (mm)

Calibration de caméras avec OpenCV Avec OpenCV la calibration est effectuée en trouvant la solution du système: p = A [Rt] P avec A la matrice intrinsèque de la caméra fx: distance focale exprimée en nombre de pixels horizontal fy: distance focale exprimée en nombre de pixels vertical cx: coordonnée x du centre de l’image cy: coordonnée y du centre de l’image

Calibration de caméras avec OpenCV La matrice extrinsèque [Rt] de la caméra permet d’exprimer la projection requise pour projeter des points 3D dans le système de coordonnées du monde vers le système de coordonnées de la caméra R: matrice de rotation qui permet de faire chevaucher les axes du système de coordonnées du monde sur celui de la caméra t: vecteur exprimant la translation requise pour faire coïncider les deux origines

Exemple de calibration de caméra avec OpenCV Voir l’exemple de programme mainCalibrationCAM.cpp

Exemple de calibration de caméra avec OpenCV Patron de calibration utilisé:

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 Calibration de caméras avec OpenCV