La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Calcul numérique (avec Maple)

Présentations similaires


Présentation au sujet: "Calcul numérique (avec Maple)"— Transcription de la présentation:

1 Calcul numérique (avec Maple)
Maplesoft Maple version 9.5

2 Chapitre 8 : Entrées-Sorties Analyse de Données Quelques mots sur le filtrage d’images

3 Entrées-Sorties

4 Entrées-sorties Notion de « chemin » (PATH) dans un système de gestion de fichiers FILENAME := "C:\\Documents and Settings\\chaumont\\Mes documents\\Enseignement\\Maple\\ Cours\\07_ressources\\data1.txt":

5 Entrées-sorties La notion d’ouverture de fichier

6 Entrées-sorties La notion d’ouverture de fichier
fopen retourne un descripteur de fichier (un petit entier). > NBCOLONNE := 2: FILENAME := "data1.txt": fd := fopen(FILENAME, READ); fd := 1

7 Entrées-sorties La lecture… beaucoup de commandes,
choisir en fonction de ses besoins !

8 Entrées-sorties Exemple de lecture; commande readdata :

9 Entrées-sorties Exemple de lecture; commande readdata :
> restart; NBCOLONNE := 2: FILENAME := "data1.txt": fd := fopen(FILENAME, READ): listePoints := readdata(fd, float, NBCOLONNE); fclose(fd): plot(listePoints, style=point);

10 Entrées-sorties Exemple d’écriture; commande fprintf :
> fd := fopen("testFile.txt",WRITE,TEXT); fd := 0 > fprintf(fd,"This is a test\n"); > fclose(fd);

11 Entrées-sorties Exemple d’utilisation…
Des étudiants de chimie ont effectué des relevés expérimentaux du volume de l’air en fonction de la température (ceci à pression constante). Ces relevés ont été stockés dans un fichier texte. 1ère colonne : température en °C 2ème colonne : volume en mL. Lien data1.txt

12 Exemple d’utilisation
Protocole de mesure...

13 Entrées-sorties Lien Code Maple
> restart; NBCOLONNE := 2: FILENAME := "C:\\data1.txt": fd := fopen(FILENAME, READ): listePoint := readdata(fd, float, NBCOLONNE); fclose(fd): plot(listePoint, labels=["Temperature (°C)", "Volume(mL)"], title = "Mesure expérimentale du volume d’un gaz à pression constante en fonction de la température", style=point); Lien Code Maple

14 Entrées-sorties Mesures obtenues par un groupe d’étudiants

15 Entrées-sorties Exemple d’utilisation Remarque : la loi des gaz parfaits indique que P.V = n.R.T P est la pression (en pascal) ; V est le volume occupé par le gaz (en mètre cube) ; n est la quantité de matière, en mole R est la constante des gaz parfaits (R = 8, J.K-1.mol-1) T est la température absolue (en kelvin).

16 Entrées-sorties Exemple d’utilisation Remarque : la loi des gaz parfaits indique que P.V = n.R.T donc V = (n.R/P) × T = cst × T Si T est exprimée en °C on a une expression linéaire V=a.T + b avec a et b deux constantes. D’où la « sensation » de linéarité en regardant le tracé. (Figure montrée 2 transparents avant celui-ci)

17 Entrées-sorties Exemple d’utilisation
Si T est exprimée en °C on a une expression linéaire V=a.T + b avec a et b deux constantes. Question : Déterminer l’équation de la droite ?

18 Entrées-sorties Exemple d’utilisation Signal image : j i

19 Entrées-sorties Représentation : Images et suite d’images ...
Exemple d’utilisation Représentation : Images et suite d’images ... image Image : tableau HxL de pixels L H Pixel : * niveau de gris ([0,255]) * couleur (RGB, YUV, …) * autres (multi-bande satellite, mouvement, …) pixel

20 Entrées-sorties Le format (image) pgm : Exemple d’utilisation
255 ¢¡¢žŸœ››£¨¬¥”v``gjkmlmmjpvw{ Contenu du fichier :

21 Analyse de données

22 Analyse de données ; la régression linéaire
En statistiques, il arrive que deux grandeurs X et Y apparaissent liées par relation affine : Y = a.X + b. La régression linéaire consiste à déterminer une estimation des valeurs a et b et à quantifier la validité de cette relation grâce au coefficient de corrélation linéaire. La généralisation à p variables Y = a0 + a1·X1 + a2·X2 + … + ap·Xp s'appelle la régression linéaire multiple.

23 Régression linéaire Soient Mi des points (xi,yi) avec i[1..n], on cherche la droite D dont l'équation est y = a x + b et qui passe au plus près des points Mi. D

24 Régression linéaire D xi yi yi y = a.xi + b xi

25 Régression linéaire On voudrait pour tous les points Mi
que (yi - y)² soit le plus petit possible xi yi yi y = a.xi + b C’est-à-dire (yi - (a.xi+b))² soit le plus petit possible xi c’est-à-dire minimiser

26 Régression linéaire Passer au plus près, selon la méthode des moindres carrés, c'est rendre minimale la somme : où (yi - axi - b)² représente le carré de la distance verticale du point expérimental Mi à la droite considérée comme la meilleure.

27 Régression linéaire Passer au plus près, selon la méthode des moindres carrés, c'est rendre minimale la somme : Cela revient donc à déterminer les valeurs des paramètres a et b (respectivement le coefficient directeur de la droite et son ordonnée à l'origine) qui minimisent la somme ci-dessus.

28 Régression linéaire

29 Régression linéaire

30 Régression linéaire Quelques formules classiques :

31 Régression linéaire Ré-écriture de a et de b...

32 Least Square Maple permet d’obtenir immédiatement le calcul de a et b de l'équation y = a x + b : > abscisse := createList(listePoints, 1); ordonnees := createList(listePoints, 2); with(stats): fit[leastsquare[[x,y]]]([abscisse,ordonnees]); y = x

33 > f := x -> *x: plot([listePoints, f(x)], x= , labels=["Temperature (°C)", "Volume(mL)"], title = "Mesure expérimental du volume d'un gaz à pression constante en fonction de la température", style=[point, line]);

34 Least Square > with(stats):
this example uses the defaults to fit the data to the curve y=a*x+b > fit[leastsquare[[x,y]]]([[10,15,17,19],[3,4,5,6]]); This is the same as > fit[leastsquare[[x,y], y=a*x+b, {a,b}]]([[10,15,17,19],[3,4,5,6]]); One can also specify nonlinear curves -- as long as the unknown parameters appear linearly > fit[leastsquare[[x,y], y=a*x^2+b*x+c]]( [[10,15,17,19],[3,4,5,6]]);

35 Least Square with(stats):
fit[leastsquare[[x,y],y=a*x^2+b*x+c]]([[10,15,17,19],[3,4,5,6]]); f := x -> 417/13358*x^2-7583/13358*x+37054/6679; lstPoints := [[10,3],[15,4],[17,5],[19,6]]; plot([f(x), lstPoints], x= , style=[line, point]);

36 Régression linéaire Qualité de l’estimation de la linéarité:
Le coefficient de corrélation linéaire est toujours compris entre -1 et 1. En pratique sa valeur absolue est rarement égale à 1, mais on estime généralement que l'ajustement est valide dès que ce coefficient a une valeur absolue supérieure à

37 Régression linéaire Qualité de l’estimation de la linéarité:

38 coefficient de corrélation linéaire
Avec la formule... covar := describe[covariance](abscisse, ordonnees): varX := describe[variance](abscisse): varY := describe[variance](ordonnees): covar /(sqrt(varX) * sqrt(varY)); Avec Maple... describe[linearcorrelation](abscisse, ordonnees);

39 Traitement des données aberrantes (outlier)

40 Traitement de données contenant des données aberrantes (outlier)
AJOUT DU POINT ABERRANT (19 , 78) abscisseAberrant := [op(abscisse),19]: ordonneesAberrant := [op(ordonnees),78]: fit[leastsquare[[x,y]]]([abscisseAberrant,ordonneesAberrant]); y = x f_LS_2 := x -> *x: plot([listePoints, [[19.,78.]], f_LS_2(x)], x= , labels=["Temperature (°C)", "Volume(mL)"], title = "Mesure expérimental du volume d'un gaz à pression constante en fonction de la température", style=[point, point, line], color=[black, black, blue], legend=["Données expérimentales", "Point aberrant", "Least Square"]);

41 Traitement de données contenant des données aberrantes (outlier)
Sans « outlier » = Avec « outlier » =

42 Traitement de données contenant des données aberrantes (outlier)
The function leastmediansquare of the subpackage stats[fit, ...] fits a curve to the given data using the method of least median of squares. The equation to fit will be linear (affine) in the unknown parameters. The equation itself need not be linear. For example, specifying vars to be [x,y] implies fitting to the equation y=a*x^2+b*x+c.

43 Traitement de données contenant des données aberrantes (outlier)
The well-known least square regression method suffer from leverage points. By adding a single point to the data, one can change the result to an arbitrary extent. The least median of squares method allows one to add up to half the number of points without changing the result. The price to pay for this robustness is a substantial increase in computation cost.

44 Traitement de données contenant des données aberrantes (outlier)
with(stats): fit[leastsquare[[x,y]]]([abscisse,ordonnees]); y = x fit[leastmediansquare[[x,y]]]([abscisse,ordonnees]); y = x f_LS_1 := x -> *x: f_LMS_1 := x -> *x: plot([listePoints, f_LS_1(x), f_LMS_1(x)], x= , labels=["Temperature (°C)", "Volume(mL)"], title = "Mesure expérimental du volume d'un gaz à pression constante en fonction de la température", style=[point, line, line], color=[black, blue, red], legend=["Données expérimentales", "Least Square", "Least Median Square"]);

45 Traitement de données contenant des données aberrantes (outlier)

46 Traitement de données contenant des données aberrantes (outlier)
AJOUT DU POINT ABERRANT (19 , 78) abscisseAberrant := [op(abscisse),19]: ordonneesAberrant := [op(ordonnees),78]: fit[leastsquare[[x,y]]]([abscisseAberrant,ordonneesAberrant]); y = x fit[leastmediansquare[[x,y]]]([abscisseAberrant,ordonneesAberrant]); y = x f_LS_2 := x -> *x: f_LMS_2 := x -> *x: plot([listePoints, [[19.,78.]], f_LS_2(x), f_LMS_2(x)], x= , labels=["Temperature (°C)", "Volume(mL)"], title = "Mesure expérimentale du volume d'un gaz à pression constante en fonction de la température", style=[point, point, line, line], color=[black, black, blue, red], legend=["Données expérimentales", "Point aberrant", "Least Square", "Least Median Square"]);

47 Sans « outlier » Avec « outlier »

48 Explications sur un exemple
with(stats): data := [[1,3],[2,4],[3,5],[1,2]]: abscisse := createList(data, 1); ordonnees := createList(data, 2); fit[leastmediansquare[[x,y]]]([abscisse, ordonnees]); abscisse := [1, 2, 3, 1] ordonnees := [3, 4, 5, 2] y = 2+x f := x -> 2+x; plot([f(x), data], x= , style=[line, point])

49 Explications Least Median Squarre
data := [[1,3],[2,4],[3,5],[1,2]]: abscisse := createList(data, 1); ordonnees := createList(data, 2); fit[leastmediansquare[[x,y]]]([abscisse, ordonnees]); This is calculated as follows. For example, pick two points, say [1,3] and [2,4]. Pass a straight line through them. In this case it is y=2+x. For each point compute the square of the distance of the line to the point This gives [0,0,0,1]. Find the median through these distances: this gives 0. Now minimize over all possible lines. This is the result. | yi - (a.xi+b) | avec a=1 et b=2

50 Cas où l’on a pris les points (1,3) et (2,4) ce qui donne la
data := [[1,3],[2,4],[3,5],[1,2]]: This is calculated as follows. For example, pick two points, say [1,3] and [2,4]. Pass a straight line through them. In this case it is y=2+x. For each point compute the square of the distance of the line to the point This gives [0,0,0,1]. Find the median through these distances: this gives 0. Now minimize over all possible lines. This is the result. Cas où l’on a pris les points (1,3) et (2,4) ce qui donne la droite y = 1.x + 2 (y = a.x + b avec a = 1 et b = 2)

51 > describe[median]([1,2,3,4,250]);
the median of a sorted list of numbers is either the middle value or the arithmetic mean of the two middle values. If the requested median falls between entries, it is interpolated. > describe[median]([1,2,3,4,250]); 3

52 Quelques mots sur le traitement d’images

53 Initiation au traitement d'images
Traitement d'images, applications : Vision robotique Suivi d'objets Surveillance Déplacement autonome d'un robot Contrôle qualité sur une chaîne de production Lecture d'un numéro sur une pièce... Analyse d'images satellite Détection des champs, routes Détection d'informations sur le sous-sol... Analyse d'images vidéo Indexation automatique, Reconnaissance de visages Recherche de publicités, Détection d'accidents sur autoroute…

54 Initiation au traitement d'images
Traitement d'images, applications : Compression intelligente Visiophone : transmettre plus de détail sur le visage que le fond... Reconnaissance de l'écriture manuscrite Sans contrainte Traitement automatique de chèques Traitement automatique d'adresses postales... Reconnaissance de documents Tout type de documents, structurés ou non Traitement automatique de bons de commandes Indexation Eviter la saisie de documents sous forme papier...

55 Initiation au traitement d'images
Une image : Ensemble de points : les pixels Chaque pixel contient une valeur couleur (codée sur 8, 16, 24, 32 bits) niveau de gris (0 : blanc à 255 : noir) blanc (0) ou noir (1) Un tableau à 2 dimensions de pixels (matrice) En TP on travaillera sur des images en niveau de gris Exemple de la nécessité de l'utilisation de la connaissance (du contexte) et de la difficulté de la coopération entre le niveau image et le niveau symbolique : Il est difficile pour un humain de lire un texte manuscrit dans une langue qu'il ne connaît pas. Il n'arrivera pas à reconnaître chacune des lettres qui constituent les mots car seule la compréhension de la phrase permettrait de retrouver les lettres qui sont mal tracés (voire absentes)

56 Initiation au traitement d'images
Reconnaissance : une tâche très difficile Vision par ordinateur = vision de 4 ou 9 pixels à la fois Quelques pixels parmi 6 millions de pixels (feuille A4) Passer de l'ensemble de pixels à une signification Coopération entre niveau numérique (image) et niveau symbolique (concepts représentés dans l'image) Nécessité d'introduire de la connaissance dans le système

57 Initiation au traitement d'images
Exemple d'enchaînement de traitements pour effectuer une reconnaissance Améliorer la qualité de l'image Détecter des primitives (des segments, des contours…) Définir et utiliser différents algorithmes liés à l'intelligence artificielle pour extraire du sens à partir des primitives et permettre à l'ordinateur de "comprendre l'image" Exemple : graphes, grammaires, classification…

58 Exemple de chaîne de traitement
Image Classifieur 4 3 9 Analyse de la structure du document Segmentation Traitement des images Caractères Reconnus

59 Initiation au traitement d'images : Filtrage
Principe Modification du signal d'entrée par l'étude des valeurs de son voisinage Filtrage Bidimensionnel : sur une image Monodimensionnel : sur un signal sonore

60 Initiation au traitement d'images : Filtrage
Filtrage analogique (radio, TV…) Sur un signal analogique Composants électroniques Pb : vieillissement, sensibilité aux intempéries… Ex : enlever du bruit (taches de couleur sur TV si mauvaise réception)… Filtrage numérique Sur un signal numérique On stocke le signal dans un tableau mono ou bidimensionnel Mêmes objectifs que filtrage analogique

61 Filtrage monodimensionnel
Filtrage monodimensionnel pour supprimer du bruit Exemple Correction d'erreurs de lecture sur un CD audio Suppression du souffle sur un vieil enregistrement Problème Bruit : valeur trop différente de ses voisins Limiter ces valeurs => 1 solution : faire la moyenne des valeurs sur un certain intervalle Poser le problème et faire chercher les étudiants

62 Filtrage monodimensionnel
Filtrage monodimensionnel pour supprimer du bruit Exemple Soit le signal suivant : (10, 10, 10, 15, 11, 12, 12) Valeur 15 peut être considérée comme du bruit Moyenne calculée à partir de ses 2 voisins directs Soit : (10, 11.67, 12, , 12) avec = 1/3 ( ) 12 = 1/3 ( ) Lissage de courbes Poser le problème et faire chercher les étudiants

63 Filtre pour réaliser la moyenne
Principe Fenêtre à déplacer sur la suite de données Fenêtre ici de taille 3 le point à recalculer ses 2 voisins Calcul : tableau des coefficients pondérateurs de la moyenne exemple F = [ 1/3, 1/3, 1/3 ] (10, 10, 10, 15, 11, 12, 12) [1/3, 1/3, 1/3 ] ( 10, , 12, ..., ...) Remarques On ne peut calculer les valeurs sur les bords

64 Filtrage monodimensionnel
Possibilité de calculer des moyennes pondérées Pour accorder plus ou moins de d'importance aux valeurs voisines Exemple F' = [ 1/8, 3/4, 1/8 ] -> (10, 10.83, 13.50, 11.83, 12)

65 Filtrage monodimensionnel
Filtrage monodimensionnel pour détecter des zones de variation forte Exemple Lecture d'un code barre --> séquence de valeurs numériques (niveaux de gris sur la ligne du faisceau lumineux) On veut détecter les bords des barres noires Problème Pour les zones de valeurs constantes -> 0 Pour les zones de forte variation -> valeur proportionnelle à la variation => détection de la dérivée de la courbe des valeurs => filtre possible [-1, 1] (filtre dérivateur) 250,200,100,50,50,... Le trait rouge sur le code barre correspond au lecteur (faisceau lumineux). Ce dernier génère un signal monodimensionnel sous une suite de valeurs numériques (en niveaux de gris dans laquelle il n'est pas facile de détecter les bords des barres Poser le problème et laisser les étudiants chercher

66 Filtrage monodimensionnel
Exemple Signal : (10, 10, 10, 16, 16, 16, 16, 11, 6, 1, 1, 1) Réponse du filtre (0, 0, 6, 0, 0, 0, -5, -5, -5, 0, 0)

67 Filtrage monodimensionnel
Pour avoir une réponse plus précise Quand la variation forte est répartie sur plusieurs valeurs Appliquer une deuxième fois le filtre dérivateur sur la réponse du filtre => détecte la dérivée seconde (0, 6, -6, 0, 0, -5, 0, 0, 5, 0) On peut construire directement le filtre qui effectue cette double application F= [ 1, -2, 1] (filtre laplacien) Un filtre laplacien génère un pic positif suivi d'un pic négatif pour une variation positive du signal d'entrée (puisque c'est la dérivée seconde) Le filtre se calcule de cette manière : (si on vous pose la question) (c'est de la convolution de filtre) -1 1 -1 1 -1 1 trait rouge = multiplication. Ainsi le premier coeff : 0x1 + -1x-1 = 1 Bien préciser que dans le TP, le coeff multiplicateur est représenté par le paramètre amplitude (attribut ampli de la classe filtre)

68 On peut dans certains cas introduire un coefficient multiplicateur pour rendre les pics plus visibles On multiplie toutes les valeurs calculées par le filtre par un entier.

69 Filtrage bidimensionnel
Même principe que pour filtrage monodimensionnel Signal d'entrée : Matrice de valeurs en niveau de gris => comprises entre 0 et 255 Filtre Une matrice carrée de coefficients Même principe que pour le filtre mondimensionnel : On calcule la valeur du pixel au centre du filtre en effectuant la somme pondérée par les coeff du filtre des pixels sous le filtre

70 Filtrage bidimensionnel
Application du filtre sur toute l'image produit une matrice de valeurs comprises entre 0 et 255 Attention il ne faut pas générer de valeurs < 0 ou > 255 => par exemple, les filtres dérivateurs génèrent des valeurs négatives Il faut produire la valeur absolue si val < 0 alors val = -val si val > 255 alors val = 255 Un filtre laplacien génère un pic positif suivi d'un pic négatif pour une variation positive du signal d'entrée (puisque c'est la dérivée seconde) Le filtre se calcule de cette manière : (si on vous pose la question) (c'est de la convolution de filtre) -1 1 -1 1 -1 1 trait rouge = multiplication. Ainsi le premier coeff : 0x1 + -1x-1 = 1 Bien préciser que dans le TP, le coeff multiplicateur est représenté par le paramètre amplitude (attribut ampli de la classe filtre)

71 Filtrage bidimensionnel
Effets du filtrage sur une image Filtre de type moyenne (appelés "passe bas") : supprime du bruit rend l'image plus floue Filtre dérivateur : détecte les contours Préciser que la présentation faite ici des filtres est empirique. En réalité, il existe toute une théorie formalisée qui valide, permet d'étudier et définir les filtres que l'on souhaite

72 Illustration Filtre de type dérivateur (filtre contour)

73 Filtre de type moyenne (filtre flou)
1/16 2/16 1/16 2/16 4/16 2/16 1/16 2/16 1/16 Filtre de type moyenne (filtre flou)


Télécharger ppt "Calcul numérique (avec Maple)"

Présentations similaires


Annonces Google