PROGRAMMATION SCIENTIFIQUE EN C

Slides:



Advertisements
Présentations similaires
TRAITEMENT D’IMAGE SIF-1033.
Advertisements

Concepts avancés en mathématiques et informatique appliquées
SUJETS SPÉCIAUX EN INFORMATIQUE I
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.
Concepts avancés en mathématiques et informatique appliquées MAP-6014.
PROGRAMMATION SCIENTIFIQUE EN C
Les systèmes d’équationsLes systèmes d’équations Deux contraintes d’égalité qu’on impose simultanément à deux variables forment ce qu’on appelle « un.
Introduction à la notion de fonction 1. Organisation et gestion de données, fonctions 1.1. Notion de fonction ● Déterminer l'image d'un nombre par une.
Géométrie Différentielle – Cubiques d'Hermite Introduction aux courbes paramétriques et à la géométrie différentielle.
RBF Les surfaces implicites variationnelles Radial Bases Functions (RBF) ● A. Iske, “Scattered data modelling using Radial basis Functions”, Tutorial on.
 Qu’est ce qu’une matrice diagonale ? Une matrice diagonale est une matrice carrée dont les coefficients en dehors de la diagonale principale sont nuls.
Cours COMPOSANTES DES VECTEURS Dimitri Zuchowski et Marc-Élie Lapointe.
NF04 - Automne - UTC1 Version 09/2006 (E.L.) Cours 5-a Problèmes scalaires instationnaires d’ordre 1 en temps Domaines d’application Notions de schémas.
Outils de Recherche Opérationnelle en Génie MTH 8414
RobEcolo Conception de Robots industriels à base de matériaux à faible impact Ecologique LIMBHA IRCCyN Clément Boudaud1, Sébastien Briot², Lila Kaci²,
Dimitri Zuchowski et Marc-Élie Lapointe
Entraînement et évaluation d’une méthode de régression
Algorithme et programmation
Les Tableaux Mme DJEBOURI. D.
Mathématiques Mise à niveau
Géométrie épipolaire et reconstruction 3D
Etalonnage d’une caméra (on parle aussi de calibrage)
Les Instructions – Organigramme
Fonctions.
Dimitri Zuchowski et Marc-Élie Lapointe
Initiation à la programmation impérative et algorithmique
Activités algorithmiques
Plans d’expériences: Plans factoriels
Algorithmique & Langage C
Les Plans d’expériences: Plans Factoriels
Plans d’expériences: Plans factoriels.
Homographies Patrick Hébert & Denis Laurendeau (Dernière révision : septembre 2016)
Régression linéaire (STT-2400)
PROGRAMMATION SCIENTIFIQUE EN C
Approximation de Pi par la méthode de Monte Carlo
INTELLIGENCE ARTIFICIELLE
PROGRAMMATION SCIENTIFIQUE EN C
La méthode du simplexe. 1) Algorithme du simplexe  Cet algorithme permet de déterminer la solution optimale, si elle existe, d’un problème de programmation.
Détection d’objets (obstacles) avec une seule caméra
Cours N°10: Algorithmiques Tableaux - Matrices
Réseaux de neurones appliqués à la reconnaissance de caractères
Chapitre 3 : Caractéristiques de tendance centrale
Modélisation objet avec UML
Cycle, Cocycle, Arbre et Arborescence
Transformation linéaires
Lois de Probabilité Discrètes
La Dualité et l’Analyse sensitive et post-optimale en PL
Université de la méditerranée
Automatismes 3.
Présentation 9 : Calcul de précision des estimateurs complexes
MATHÉMATIQUES FINANCIÈRES I
Détection d’objets (obstacles) avec une seule caméra
Reconnaissance de formes: lettres/chiffres
SUJETS SPÉCIAUX EN INFORMATIQUE II
SUJETS SPÉCIAUX EN INFORMATIQUE II
Programmation Scratch
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
PROGRAMMATION SCIENTIFIQUE EN C
PROGRAMMATION SCIENTIFIQUE EN C
Chapitre 12 : Notion de fonction
Les inégalités Ch 6,3.
Présentation des nouveaux programmes de mathématiques de première des séries technologiques Jessica Parsis.
Estimation des conditions initiales par inversion
INTELLIGENCE ARTIFICIELLE
INTELLIGENCE ARTIFICIELLE
PROGRAMMATION SCIENTIFIQUE EN C
Les séquences au 2e cycle du secondaire
Pour en moduler l’ouverture et la complexité
Type Tableau Partie 1 : Vecteurs
PROGRAMMATION SCIENTIFIQUE EN C
Transcription de la présentation:

PROGRAMMATION SCIENTIFIQUE EN C

Résolution de système d’équations linéaires (SVD et méthodes itératives) Approche SVD (suite …) Approche LU (décomposition) Introduction (méthodes itératives) Méthode de Jacobi Méthode de Gauss-Seidel Considérations sur la convergence

Approche SVD (suite …. Correction géométrique d’images) Exemple d’un système d’équations 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 …. Correction géométrique d’images) Exemple d’un système d’équations Ax = b : Modèle de déformation

Approche SVD (suite …. Correction géométrique d’images ) 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 …. Correction géométrique d’images) 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 …. Correction géométrique d’images) Forme de x = A-1 b A-1

Approche SVD (suite …. Correction géométrique d’images) Avant d’appeler la fonction svbksb() il faut vérifier si A est singulière. Les wi < MAX(wi) * 1.0e-6 sont fixés à 0 dans la matrice W.

Approche SVD (suite …. Correction géométrique d’images) Algorithme de résolution int X[20],Y[20],X_Prime[20],Y_Prime[20]; 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 // premier indice de X, Y, X_Prime et Y_Prime est 1 // m est le nombre de points de contrôle selectionnes 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 = vector(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 …. Correction géométrique d’images) Algorithme de résolution (suite …) for(i=1;i<=2*m;i+=2) // initialiser la matrice 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 …. Correction géométrique d’images) Algorithme de résolution (suite …) for(i=1;i<=2*m;i+=2) // initialiser le vecteur b { b[i] = X_Prime[i/2+1]; b[i+1] = Y_Prime[i/2+1]; }

Approche SVD (suite …. Correction géométrique d’images) Algorithme de résolution (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; // Eliminer les // singularites svbksb(u,w,v,2*m,12,b,x);

Approche SVD (suite …. Correction géométrique d’images) 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’ = 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 …. Correction géométrique d’images) 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 …. Correction géométrique d’images) 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

Exemple: Correction géométrique

Approche SVD (Approximation d’une région dans une image par une ellipse) Exemple d’un système d’équations Ax = 0 : Coordonnées des points dans l’image Vecteur des sol’n recherchées A x b

Approche SVD (suite ….Approximation de forme par ellipse) Algorithme de résolution int X[20],Y[20]; // pour 20 pixels selectionnes max. float wmax, wmin, **a,**u,*w,**v,*b,*x int i,j; // selectionner un minimum de 6 points a approximer ….// selectionner un maximum de 20 points a approximer // premier indice de X, Y, est 1 m est le nombre de points selectionnes a = matrix(1,m,1,6); // matrice A de mX6 u = matrix(1,m,1,6); // m: nombre de points a approximer w = vector(1,6); v = matrix(1,6,1,6); b = vector(1,m); // 0 x = vector(1,6); // vecteur des sol’n ….. // mise à 0 de A

Approche SVD (suite ….Approximation de forme par ellipse) Algorithme de résolution (suite …) for(i=1;i<=m;i+=1) // initialiser la matrice A { a[i][1] = X[i]*X[i]; a[i][2] = 2.0*X[i]*Y[i]; a[i][3] = Y[i]*Y[i]; a[i][4] = 2.0*X[i]; a[i][5] = 2.0*Y[i]; a[i][6] = 1.0; } for(i=1;i<=m;i+=1) // initialiser le vecteur b b[i] = 0.0;

Approche SVD (suite ….Approximation de forme par ellipse) Algorithme de résolution (suite …) for(i=1;i<=m;i++) for(j=1;j<=6;j++) u[i][j] = a[i][j]; svdcmp(u,m,6,w,v); wmax = 0.0; for(j=1;j<=6;j++) if(w[j] > wmax) wmax = w[j]; wmin = wmax; // trouver la valeur propre min. dans w if((w[j] < wmin) && w[j] != 0.0) {wmin = w[j]; minPos = j;} x[j]=v[j][minPos]; // x contient la solution

Approche SVD (suite ….Approximation de forme par ellipse) Avec le vecteur des sol’n x dont les éléments correspondent aux coefficients de l’équation de l’ellipse d’approximation de la forme dans l’image. (x[1]  A, x[2]  B, x[3]  C, x[4]  D, ….) 0 = A x2 + 2.0 B xy + C y2 + 2.0 D x + 2.0 F y + G (1) Nous pouvons ensuite utiliser l‘équation (1) pour tracer l‘ellipse d‘approximation de la forme dans l‘image. Plus spécifiquement vous passer le vecteur x des sol‘n à la fonction de tracage de l‘ellipse.

Approche LU (Décomposition) Si nous pouvons écrire la matrice A utilisée dans le système Ax = b, sous forme d‘une multiplication de 2 matrices L  U, par exemple pour une matrice A de 4X4: Le système linéaire Ax=b peut alors être réécrit: Avec y = U  x alors: et avec la sol‘n y: L U

Approche LU (Décomposition) Il est ensuite trivial par substitution avant de déduite le vecteur y: Et ensuite le vecteur x par subtitution arrière:

Approche LU (Décomposition) Comment alors déduire les matrices L et U, sachant que les termes aij sont déduits par: Le nombre de termes de cette somme dépend de si i ou j est le plus petit. Trois cas sont alors possibles:

Approche LU (Décomposition: voir EX-LU) Algorithme de Crout pour déduire la matrice LU: Initialisation: Pour j allant de 1 à N Pour i allant de 1 à j // i < j Si i == 1 Alors 1j = 1j Sinon Finsi Fin Pour Pour i allant de j+1 à N // i > j i < j i > j

Approche LU (Décomposition) Algorithme de Crout (prototype de la fonction de décomposition) INPUT: Matrice a[1..n][1..n] OUTPUT: Matrice LU OUTPUT: vecteur de permutations INPUT: vecteur b[1..n] OUTPUT: vecteur x[1..n] sol’n

Introduction (approches itératives) Les méthodes d’élimination sont des méthodes de résolution directes puisque le nombre d’opérations est connu. Nous pouvons cependant résoudre un système d’équations linéaires par une procédure d’essai et erreur. Cette procédure suppose une solution de départ qui représente une estimation des valeurs des inconnus.

Introduction (approches itératives) De façon itérative, les estimées de la solution sont raffinées jusqu’à ce qu’un critère d’arrêt soit atteint. Les avantages des méthodes itératives sont d’être plus rapides que les méthodes directes et qu’elles peuvent être utilisées pour résoudre des systèmes non-linéaires.

La méthode de Jacobi Par la méthode de Jacobi nous pouvons isoler chaque inconnu Xi de la façon suivante:

La méthode de Jacobi Algorithme de Jacobi (une itération) Jacobi(int dim,float **a, float *c, float *x, float *y) /* x contient l’estimation actuelle de la solution y contient la nouvelle estimation de la solution */ POUR i allant de 1 à dim FAIRE y[i] = c[i] POUR j allant de 1 à dim FAIRE SI j != i ALORS y[i] = y[i]- a[i,j] * x[j] FIN SI FIN POUR y[i] = y[i]/ a[i,i]

La méthode de Jacobi Algorithme de Jacobi (général) JacobiG(int dim, float **a, flaot *c) assignation du vecteur x initial et y aux mêmes valeurs erreur = MAXFLOAT TANT QUE erreur > eps FAIRE POUR i allant de 1 à dim FAIRE x[i]=y[i] FINTANTQUE Jacobi(dim, a,c,x,y) /* Gauss-Seidel() */ erreurmax = 0 POUR i allant de 1 à dim FAIRE /* Calcul de l ’erreur */ erreur = | y[i]- x[i] | SI erreur > erreurmax ALORS erreurmax = erreur FINSI FIN POUR erreur = erreurmax FINTANTQUE imprimer le vecteur y

La méthode de Gauss-Seidel Pour accélérer le taux de convergence pourquoi ne pas insérer les nouvelles estimations dans les équa-tions suivantes pour donner:

La méthode de Gauss-Seidel Algorithme de Gauss-Seidel (une itération) GaussSeidel(int dim,float **a, float *c, float *x, float *y) /* x contient l’estimation actuelle de la solution y contient la nouvelle estimation de la solution */ POUR i allant de 1 à dim FAIRE y[i] = c[i] POUR j allant de 1 à i-1 FAIRE y[i] = y[i]- a[i,j] * y[j] FIN POUR POUR j allant de i+1 à dim FAIRE y[i] = y[i]- a[i,j] * x[j] y[i] = y[i]/ a[i,i]

Considérations sur la convergence Pour que les méthodes de Jacobi et Gauss-Seidel convergent il faut que la condition suivante soit respectée

Considérations sur la convergence Quand cette condition est vraie, les algorithmes itératifs convergent vers la solution indépendam-ment du choix du vecteur solution x1 initial. Une matrice des coefficients qui possède cette propriété est appelée matrice à diagonale domi-nante. Lorsque la matrice a ne respecte pas cette condi-tion nous pouvons permuter des rangées de façon à respecter cette condition.

Considérations sur la convergence Si nous avons un système de 2 inconnus de la forme: Nous pouvons isoler les inconnus:

Considérations sur la convergence Exemple graphique (Cas convergent)

Considérations sur la convergence Exemple graphique (Cas divergent)