Vous êtes sur la page 1sur 49

SIG ET TELEDETECTION 2

MATLAB PROCESSING

Dr Kouoh Nguimbous Jean-Jacques | SIG ET TELEDETECTION 2 | 3 décembre


2018
UE 2 :
SIG ET TELEDETECTION 2
L’objectif de ce cours est d’apprendre à améliorer la visibilité de certaines structures
en rehaussant les informations spatiales des images.

Construction Maths :

- Comment faire un calcul matriciel


- Appliquer une Gaussienne
- Faire un MNT
- Comment résoudre une équation différentielle
- Logiciel R, Matlab
- Comment calculer une surface
- Un volume à partir de la triangulation de Delaunay
- Savoir mettre à jour, ses données, ses images

Groupes de travail personnel :


Groupe 1 : ARGIS (TIN)

Groupe 2 : ADOBE ILLUSTRATOR (DECALCAGE ET SUPERPOSITION)

Groupe 3 : ENVI (FILTRES)

Groupe 4 : ERDAS (IMAGES ASTER)

Groupe 5 : GLOBAL MAPPER (EXTRACTION DES DONNEES ET FORMATS


D’APPELS

Le plan du cours s’articulera autour de 4 chapitres :

Chapitre 1 : Calcul matriciel et méthode de Delaunay dans Matlab

Chapitre 2 : Calcul différentiel matriciel et application du gaussien aux matrices

Chapitre 3 : Création d’un modèle numérique de terrain raster à partir des courbes
de niveaux

PAGE 1
Chapitre 4 : Méthode de traitement d’image de télédétection (Filtre de Laplace, Filtre
de Solver

Chap. 1 : Calcul matriciel et méthode de Delaunay dans Matlab


Ce chapitre consiste en l’énoncée des principaux concepts du calcul matriciel et de la
présentation de la méthode de réseau de triangulation irrégulière encore appelé TIN.

Déterminants
Il sera présenté sous forme d’exercice :

Exercice 1 :

Soit la matrice :

2 1 4
𝐴 = [5 2 3 ]
8 7 3
1- Calculer les mineurs de cette matrice revient à :

- Calculer le mineur de la ligne 1 :

2 3
𝑀11 = | | = −15
7 3
5 3
𝑀12 = | | = −9
8 3
5 2
𝑀13 = | | = 19
8 7
- Le mineur de la ligne 2 sera donné par :

1 4
𝑀21 = | | = −25
7 3

PAGE 2
2 4
𝑀22 = | | = −26
8 3
2 1
𝑀23 = | |=6
8 7
- Le mineur de la ligne 3 qui sera donné par :

1 4
𝑀31 = | | = −5
2 3
2 4
𝑀32 = | | = −14
5 3
2 1
𝑀33 = | | = −1
5 2
2- Calculer les cofacteurs en utilisant la formule :

𝐶𝑖𝑗 = (−1)𝑖+𝑗 𝑀𝑖𝑗

- Cofacteurs de la ligne 1 :

𝐶11 = (−1)1+1 𝑀11 = −15

𝐶12 = (−1)1+2 𝑀12 = 9

𝐶13 = (−1)1+3 𝑀13 = 19

- Cofacteurs de la ligne 2 :

𝐶21 = (−1)2+1 𝑀11 = 25

𝐶22 = (−1)2+2 𝑀11 = −26

𝐶23 = (−1)2+3 𝑀11 = −6

- Cofacteurs de la ligne 3 :

𝐶31 = (−1)3+1 𝑀11 = −5

𝐶32 = (−1)3+2 𝑀11 = 14

𝐶33 = (−1)3+3 𝑀11 = −1

3- Calculer les déterminants en faisant une expansion par rangé :


- Pour la ligne 1 :

PAGE 3
𝑑𝑒𝑡𝐴 = 𝑎11 𝐶11 + 𝑎12 𝐶12 + 𝑎13 𝐶13

= 2(−15) + 1(9) + 4(19)

= 55

- Pour la ligne 2 :

𝑑𝑒𝑡𝐴 = 𝑎21 𝐶21 + 𝑎22 𝐶22 + 𝑎23 𝐶23

= 2(−15) + 1(9) + 4(19)


= 55
- Pour la ligne 3 :

𝑑𝑒𝑡𝐴 = 𝑎31 𝐶31 + 𝑎32 𝐶32 + 𝑎33 𝐶33

= 2(−15) + 1(9) + 4(19)


= 55

Rang des matrices :


Exercice 2 :

𝑎 = (1, 𝑚, 𝑚)

𝑏 = (𝑚, 1, 𝑚)

𝑐 = (𝑚, 𝑚, 1)

Déterminer le rang de la famille des trois vecteurs suivant en discutant sur les
différentes valeurs prises par m :

Résultat : déterminer le rang de la famille de ces trois vecteurs revient à déterminer


le rang de la matrice suivantes :

1 𝑚 𝑚
𝑀 = (𝑚 1 𝑚)
𝑚 𝑚 1
- Le déterminant de la matrice M donne donc :

det 𝑀 = 2𝑚3 − 3𝑚2 + 1

(𝑚 − 1)2 (2𝑚 + 1)

Discussion :

PAGE 4
- Si :

𝑚 ≠ 1 𝑒𝑡 𝑚 ≠ 1/2

𝑙𝑎 𝑚𝑎𝑡𝑟𝑖𝑐𝑒 𝑒𝑠𝑡 𝑑𝑒 𝑟𝑎𝑛𝑔 𝑚𝑎𝑥𝑖𝑚𝑎𝑙𝑒 3

- Si :

𝑚 = −1/2,

La matrice est de rang 2 car la somme des trois lignes de la matrice est nul et les
deux premières lignes sont indépendantes, ce qui est une autre façon de voir que
le rang est de 2.

- Si m = 1, les trois lignes de la matrice sont identiques ; donc la matrice est de


rang 1.

Diagonalisation des matrices


Exercice 3 :

Soit la matrice :

2 0 1
𝐴 = (−1 4 −1)
−1 2 0
1- Calculer le polynôme caractéristique de cette matrice :

𝑃(𝜆) = (𝜆 − 1)(𝜆 − 2)(𝜆 − 3)

2- Trouver les valeurs propres de cette matrice revient à dire que :

det 𝐴 = 0 𝑐𝑒 𝑞𝑢𝑖 𝑟𝑒𝑛𝑣𝑜𝑖 𝑎 𝑑𝑖𝑟𝑒 𝑞𝑢𝑒:

𝑃(𝜆) = 0

𝜆1 = 1 ; 𝜆2 = 2 ; 𝜆3 = 3

3- Trouver les vecteurs propres associés à cette matrice :

- Résoudre l’équation :

(𝐴 − 𝜆𝐼)𝑈 = 0

PAGE 5
𝜆1 = 1 ; 𝑈1 = (1, 0, −1)

𝜆1 = 2 ; 𝑈1 = (2, 1, 0)

𝜆1 = 3 ; 𝑈1 = (1, 2, 1)

4- Trouver la matrice de passage P de A :

1 2 1
𝑃=( 0 1 2)
−1 0 1
5- Trouver la matrice diagonale :

Par définition, la matrice diagonale est de :

𝐷 = 𝑃 −1 𝐴𝑃

Avec :

1 0 0
𝐷 = (0 2 0 )
0 0 3

Inversion des matrices


On a la matrice :

−2 −1 −1
𝐴 = [−2 −1 1 ]
−1 −1 3
- Pour savoir que la matrice est inversible, on calcule son déterminant :

1- Calculer le déterminant de la matrice :

Or :

det 𝐴 = −2 ≠ 0

Donc la matrice est inversible.

2- Calculer les cofacteurs de la matrice :

𝐶𝑖𝑗 = (−1)𝑖+𝑗 𝑀𝑖𝑗

PAGE 6
- Pour la ligne 1 :

−1 1
𝐶11 = (−1)1+1 | | = −2
−1 3
−2 1
𝐶12 = (−1)1+2 | |=5
−1 3
−2 −1
𝐶13 = (−1)1+3 | |=1
−1 −1
- Pour la ligne 2 :

−1 −1
𝐶21 = (−1)2+1 | |=4
−1 3
−2 −1
𝐶22 = (−1)2+2 | | = −7
−1 3
−2 −1
𝐶23 = (−1)2+3 | | = −1
−1 −1
- Pour la ligne 3 :

−1 −1
𝐶31 = (−1)3+1 | | = −2
−1 1
−2 −1
𝐶32 = (−1)3+2 | |=4
−2 1
−2 −1
𝐶33 = (−1)3+3 | |=0
2 −1

Une fois les cofacteurs calculés :

3- Calculer la Co matrice de A :

−2 5 1
𝐶𝑜𝑚(𝐴) = ( 4 −7 −1)
−2 4 0
4- Déterminer l’inverse de la matrice :

1 1 −2 4 −2
𝐴−1 = 𝐶𝑜𝑚(𝐴) = ( 5 −7 4 )
det 𝐴 2
1 −1 0
Donc :

PAGE 7
𝐴−1 𝐴 = 𝐴𝐴−1 = 𝐼 −1

Calcul du gradient d’un vecteur


Soit un vecteur :

𝐹 = (𝐹𝑥 , 𝐹𝑦 , 𝐹𝑧 )

On a :

𝜕𝐹𝑥 𝜕𝐹𝑦 𝜕𝐹𝑧


𝜕𝑥 𝜕𝑥 𝜕𝑥
𝜕𝐹𝑥 𝜕𝐹𝑦 𝜕𝐹𝑧
⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗
𝑔𝑟𝑎𝑑 𝐹 =
𝜕𝑦 𝜕𝑦 𝜕𝑦
𝜕𝐹𝑥 𝜕𝐹𝑦 𝜕𝐹𝑧
( 𝜕𝑧 𝜕𝑧 𝜕𝑧 )
Suite :

Parce qu’historiquement, Matlab a été développé pour manipuler les matrices et la


plupart des fonctions tiennent compte du fait que potentiellement, elle puisse être
appliquée à des matrices.

Matrice et tableau
On utilise les crochets pour définir la fin et le début d’un tableau ou d’une matrice.

Soit la matrice :

1 2 3
𝑀 = [11 12 13]
21 22 23
Pour l’introduire on va procéder comme suite (réf. : Matlab) :

≫ 𝑀 = [1,2,3 ; 11,12,13 ; 21,22,23]

On peut aussi définir des vecteurs lignes ou colonnes à partir de la syntaxe suivante

(Réf. : Matlab) :

- Vecteur ligne

≫ 𝑈 = [1 2 3]

PAGE 8
- Vecteur colonne

≫ 𝑉 = [1; 2; 3]

Accès à un élément d’un tableau ou d’une matrice


- Accès en lecture : connaitre la valeur d’une cellule et celle d’un tableau

Pour accéder à un élément particulier d’un tableau ou d’une matrice, il suffit d’entrer
le nom du tableau ou de la matrice, suivi (du/ou des indices dont on veut lire ou
écrire la valeur).

Dans Matlab, on a :

Extraction troisième ligne et deuxième colonne

≫ 𝑀(3, 2)

Dans le cas particulier des vecteurs lignes ou colonne, on peut n’indiquer qu’un seul
indice, celui de la colonne ou de la ligne, pour atteindre l’élément qui nous intéresse.

Considérons notre vecteur ligne :

≫ 𝐿 = [1, 2, 3]

Et nous voulons atteindre l’élément de la troisième colonne.

On a :

≫ 𝐿(3)

- Accès en écriture : affecter une valeur a une cellule d’un tableau

Pour modifier seulement un élément d’un tableau, on utilise la syntaxe suivante :

≫ 𝑀(3, 2) = 32

- Tableau 2D : indexation 1D

Dans Matlab, il existe aussi une indexation a un seul indice pour les tableaux a deux
dimensions. Par défaut, Matlab parcourt alors le tableau, de ligne en ligne et de
colonnes en colonnes.

Soit une matrice 2D définie comme suite :

≫ 𝑀 = [1 2 3; 4 5 6; 7 8 9]

PAGE 9
Cherchons le rang de M :

≫ 𝑟𝑎𝑛𝑘 (𝑀) = 2

≫ det(𝑀) = 0

Dans Matlab, il existe aussi une seule indexation a un seul indice pour les tableaux à
deux dimensions ; on peut accéder aux éléments de ce tableau en ajoutant un seul
indice.

Exemple : cherchons a accéder a un élément :

≫ 𝑀(3) 𝑎𝑛𝑠 = 7

1 2 7
𝑀(7) = 7 𝑎𝑛𝑠 = 4 5 6
7 8 9

Génération rapide des tableaux


Les matrices classiques :

- Matrice nulle

Il existe une fonction zéros qui crée une matrice de dimension que l’on précise et ne
contenant que des zéros ; pour crée une matrice N de deux lignes et cinq cent
colonnes, on peut procéder comme suite :

≫ 𝑁 = 𝑧𝑒𝑟𝑜𝑠 (2, 500)

- Pour engendrer des vecteurs lignes ou colonnes, il faut spécifier explicitement


la dimension 1 ou le nombre de ligne, ou le nombre de colonne :

≫ 𝑜𝑛𝑒𝑠 (2, 3)

- La matrice identité est obtenue par eyes :

≫ 𝑒𝑦𝑒 (3)

- La fonction rand (n, m) :

Elle génère des nombres réelles aléatoires dans l’intervalle 0 et 1 et crée une matrice
de dimension n et m à préciser :

≫ 𝑟𝑎𝑛𝑑 (2, 3)

PAGE 10
- Il existe également une fonction Diag permettant de créer des matrices
diagonales :

Par exemple, si 1 2 3 et 4 sont des valeurs de la deuxième diagonale d’une matrice 6 *


6, alors, nous pouvons calculer :

𝐷 = 𝑑𝑖𝑎𝑔([1 2 3 4], 2)

- La fonction Linspace, permet de créer le même type de liste que l’opérateur, en


offrant la possibilité du contrôle direct du nombre de valeur.

Par exemple, je veux créer une liste qui va de 1 – 10, on a :

≫ 𝐿 = 𝑙𝑖𝑛𝑠𝑝𝑎𝑐𝑒(1: 10)

- La fonction Logspace permet de créer une liste de valeur repartie de manière


logarithmique.

Extraction de sous tableaux


Supposons que nous disposons de la matrice :

M= [11 12 13 ; 21 22 23 ; 31 32 33]

Et que nous voulons extraire le bloc :

≫ 𝑀(1: 3 ; 2: 3)

12 13
𝑁 = 22 23 ;
32 33
Il suffit tout simplement de frapper les instructions suivantes :

M (1 :3, 2 :3)

Operations arithmétiques
Le tableau suivant résume les différents opérateurs applicables aux matrices et aux
tableaux

Ecriture Math Operateur Matlab Ecriture Générale

PAGE 11
A A 𝐴𝑖𝑗

B B 𝐵𝑖𝑗

A+B A+B 𝐴𝑖𝑗 + 𝐵𝑖𝑗

A-B A-B 𝐴𝑖𝑗 − 𝐵𝑖𝑗

𝑛
AB A*B
∑ 𝐴𝑖𝑘 𝐵𝑘𝑗
𝑘

𝐴𝐵 −1 A/B

𝐴−1 𝐵 A\B

𝐴𝑛 𝐴^𝑛

.∗ ; ./ ; . ^
Ces opérateurs sont prévus pour faire des opérations terme a terme sur deux tableaux
de même taille ; celles-ci sont fondamentales lorsque l’on veut tracer des courbes ou
plus généralement lorsque l’on souhaite effectuer des opérations arithmétiques.

Ces trois opérations pour des tableaux ou des matrices peuvent être remplacées par
des fonctions ; par exemple :

𝐴.∗ 𝐵 ≡ 𝑡𝑖𝑚𝑒𝑠(𝐴, 𝐵)

𝐴./𝐵 ≡ 𝑟𝑑𝑖𝑣𝑖𝑑𝑒(𝐴, 𝐵)

𝐴. ^𝐵 ≡ 𝑝𝑜𝑤𝑒𝑟(𝐴, 𝐵)

De la même façon, les opérations de :

𝐴 ∗ 𝐵 ≡ 𝑚𝑡𝑖𝑚𝑒𝑠(𝐴, 𝐵)

𝐴/𝐵 ≡ 𝑚𝑟𝑑𝑖𝑣𝑖𝑑𝑒(𝐴, 𝐵)

PAGE 12
𝐴^𝐵 ≡ 𝑚𝑝𝑜𝑤𝑒𝑟(𝐴, 𝐵)

Operations relationnelles ou logiques sur les tableaux


Comme pour les opérations arithmétiques, les opérations logiques qui existent pour
les nombres scalaires peuvent aussi être appliquées à des tableaux numériques ; les
opérateurs relationnels permettent de réaliser des opérations logiques entre des
valeurs numériques.

En anglais, la valeur logique vraie s’appelle True et reconnait la valeur 1 et faux


s’appelle False et peut prendre la valeur 0 ; la syntaxe des opérateurs relationnelles
est résumée dans le tableau suivant :

- A égale à B en syntaxe Matlab va s’écrire :

𝐴 == 𝐵 ≡ 𝑒𝑞(𝐴, 𝐵)

- A différent de B :

𝐴 ≅ 𝐵 ≡ 𝑛𝑒(𝐴, 𝐵)

- A>B:

𝐴 > 𝐵 ≡ 𝑔𝑡(𝐴, 𝐵)

- 𝐴 ≥ 𝐵:

𝐴 >= 𝐵 ≡ 𝑔𝑒(𝐴, 𝐵)

- A<B:

𝐴 < 𝐵 ≡ 𝐿𝑡(𝐴, 𝐵)

- 𝐴 ≤ 𝐵:

𝐴 <= 𝐵 ≡ 𝐿𝑒(𝐴, 𝐵)

Exemple d’utilisation des opérations logiques sur les tableaux


Soit la fonction :

sin(𝑥) 𝑠𝑖 𝑥 > 0
𝑓(𝑥) = {
sin(2𝑥) 𝑠𝑖𝑛𝑜𝑛

PAGE 13
Ici f est une fonction définie par morceaux puisque sa valeur dépend d’un
test logique, définissant dans cet exemple deux domaines de définition.

- Dans Matlab, on a :

≫ 𝑦 = 𝑓(𝑥)

𝑝𝑖
≫ 𝑥 = −2 ∗ 𝑝𝑖 ∶ : 2 ∗ 𝑝𝑖
25
≫ 𝑦 = sin(𝑥).∗ (𝑥 > 0) + sin(2 ∗ 𝑥). 𝑛𝑜𝑡(𝑥 > 0);

Représentation graphique des données


COURBES ET REPRESENTATION 2D

Si l’on dispose des tableaux de dimension égale à deux, c’est-à-dire un vecteur ligne,
un vecteur colonne ou un tableau de taille n*m, on peut représenter ces données sous
forme d’une courbe 2D ; une courbe 2D est un ensemble de points, définit chacun
définit par une abscisse et une ordonnée ; ces points peuvent être reliés par des
segments de droite pour donner l’illusion d’une courbe continue.

- Tracer d’une courbe simple avec la fonction PLOT

Tracer la fonction :

PAGE 14
𝑓(𝑥) = sin 𝑥

Dans l’intervalle de [0, 2𝜋] ;

Première des choses :

¶ Déclarer l’intervalle de x
¶ Ensuite Déclarer la fonction
¶ Initialiser la fonction plot (voir Matlab)

𝑝𝑖
≫ 𝑥 = 0: 2 ∗ : 2 ∗ 𝑝𝑖;
100
≫ 𝑝𝑙𝑜𝑡(𝑥, sin(𝑥)) ;

- Pour un cercle, on a :

>> Plot (cos(x), sin (x))

PAGE 15
- Superposition de deux courbes:

La fonction Matlab est de :


𝑐𝑜𝑠𝑥
𝑓(𝑥) = { [0, 2𝜋]
𝑠𝑖𝑛𝑥
>> F(x) = sin (x)

>> F(x) = cos (x)


𝑝𝑖
≫ 𝑥 = 0: 2 ∗ : 2 ∗ 𝑝𝑖
100
>> plot (x, cos (x), x, sin (x))

PAGE 16
- Attributs des courbes

Nous avons remarqué que Matlab attribut des couleurs par défaut aux courbes ; il est
possible de modifier la couleur, le style du trait, et celui des marqueurs de point ; en
spécifiant après chaque couples (abscisses – ordonnées, une chaine de caractère
pouvant contenir les codes suivants.

(Pour avoir les codes, on va dans help plot, on a donc

Les couleurs dont :

b = bleu (blue), g = vert (green), R= rouge (red), y= jaune (yellow), k= noir (black),
w= blanche (white), c= cyan, m= magenta.

La symbologie des marqueurs :

. = point, o = cercle, x= croix, *= Etoile, += plus, s= carre, d= losange, v= triangle.

Pour la symbologie des lignes, on a :

_ = trait, : = points, - = point court, _ _ = point long

AUTRES FONCTIONS DE TRACER EN 2D

Nous voulons représenter 2 courbes ayant des ordonnées très différentes dans un
même graphique ; nous allons utiliser la fonction plot (y, y) puisqu’il y a un facteur
de 200 entre les deux courbes.

Did you mean:

PAGE 17
>> x = 0: 0.01: 20;

>> y1 = 200*exp(-0.50*x). *sin(x);

>> y2 = 0.8*exp(-0.50*x). *sin(10*x) ;

>> plot (x, y1, x, y2)

>> plotyy (x, y1, x, y2)

Plot sous forme de barre :

>> x=-pi:2*pi/100: pi;

>> bar (x, exp(-x.^2));

PAGE 18
- Histogramme:

>> x=-4 :0.1 :4 ;

>> y=randn (1000,1) ;

>> hist (y, x)

PAGE 19
- Tracer une courbe à l’échelle logarithmique : utilisation de la fonction semi
log

x=1:100;

>> semilog (x, log(x));

Undefined function or variable 'semilog'.

>> semilogx (x, log(x)) ;

- Tracer de donnée avec la barre d’erreur

X=-pi : pi/10 : pi ;

>> y=cos(x). *(1-0.05*cos(x)) ;

>> e=0.05*cos(x) ;

>> errorbar (x, y, e,'bx')

PAGE 20
Les améliorations graphiques : les éléments de décorations
Un graphique doit avoir :

- Un titre
- Une légende
- Tracer un quadrillage
- Avoir des axes, des limites et zoom

Représentation 3D
Syntaxe :

>> t=-2*pi :2*pi/100 :2*pi ;

>> plot3(exp(-t/10). *sin(t), exp(-t/10). *cos(t), exp(-t)) ;

>> grid on

PAGE 21
Comme une courbe en 2D est définit par une liste de doublets x et y, on peut définir
une courbe en 3D par une liste de triplets (x, y, z).

Puisque l’instruction plot attendait deux arguments, le vecteur des abscisses et celui
des ordonnés ; l’instruction plot 3 en attend 3, le vecteur des abscisses Vx, le vecteur
des ordonnées Vy et le vecteur des cotes Vz.

𝑝𝑙𝑜𝑡3 (𝑉𝑥, 𝑉𝑦, 𝑉𝑧)

Exemple d’algorithme a ploter en 3D :

𝑝𝑖
≫ 𝑡 = −2 ∗ 𝑝𝑖: 2 ∗ : 2 ∗ 𝑝𝑖;
100
𝑡 𝑡
≫ 𝑝𝑙𝑜𝑡3((− ) .∗ sin(𝑡) , exp (− ) .∗ 𝑐𝑜𝑠𝑡, exp(−𝑡));
10 10

PAGE 22
GENERATION DES POINTS DE MAILLAGE : MESHGRID

Pour définir une surface, il faut un ensemble de triplets (x, y, z) ; en générale, les
points x et y forment dans le plan un maillage régulier. Mais ce n’est pas une
obligation ; la seule contrainte est le nombre de point soit le produit de deux entiers
m*n.

Si l’on a m*n points, cela signifie que l’on a m*n valeurs de x et m*n valeurs de y et
m*n valeurs de z ; il apparait donc que, les abscisses, les ordonnés, et les cotes des
points de la surface peuvent entres stockés dans des tableaux de tailles n*m ; toutes
les instructions de tracer de surface, exemple :

𝑠𝑢𝑟𝑓

Respecterons donc la syntaxe générale :

𝑠𝑢𝑟𝑓(𝑀𝑥, 𝑀𝑦, 𝑀𝑧)

Ou 𝑀𝑥 est la matrice des abscisses, My la matrice des ordonnées et Mz la matrice des


côtes.
𝑥11 ⋯ 𝑥1𝑛
𝑥21 ⋯ 𝑥2𝑛
𝑀𝑥 = [ ⋮ ⋯ ⋮ ]
𝑥𝑚1 ⋯ 𝑥𝑚𝑛

PAGE 23
𝑦11 ⋯ 𝑦1𝑛
𝑦21 ⋯ 𝑦2𝑛
𝑀𝑦 = [ ⋮ ⋯ ⋮ ]
𝑦𝑚1 ⋯ 𝑦𝑚𝑛
𝑧11 ⋯ 𝑧1𝑛
𝑧21 ⋯ 𝑧2𝑛
𝑀𝑧 = [ ⋮ ⋯ ⋮ ]
𝑧𝑚1 ⋯ 𝑧𝑚𝑛

Nous voulons construire les tableaux Mx, My et Mz ; prenons le cas des surfaces :

𝑧 = 𝑦2 − 𝑥2

On veut tracer cette surface sur les intervalles :

[-1, 1] *[-2, 2] ; pour définir le quadrillage de ce rectangle, il faut définir une suite de
valeurs 𝑥1 jusqu’à 𝑥𝑚 pour x ; et une suite de valeurs 𝑦1 jusqu’à 𝑦𝑚 pour y.

Les scripts que nous allons écrire sont les suivants :

>> x=-1 :0.2 :1

>> x=-2 :0.2 :2

En combinant toutes ces valeurs de x et de y, on obtient m*n points dans le plan (x,
y) ; il faut maintenant construire deux tableaux, l’un contenant m*x abscisse de ce
point et l’autres m*y ordonnées.

On obtiendra donc :

𝑥1 𝑥2 … 𝑥𝑚
𝑥 𝑥2 … 𝑥𝑚
𝑋=[ 1 ]
⋮ ⋮ ⋮ ⋮
𝑥1 𝑥2 ⋯ 𝑥𝑚
𝑦1 𝑦1 … 𝑦1
𝑦 𝑦1 … 𝑦1
𝑌=[ 1 ]
⋮ ⋮ ⋮ ⋮
𝑦1 𝑦1 ⋯ 𝑦1

La fonction Meshgrid construit automatiquement ce type de tableaux :

Syntaxe :

Il reste maintenant à calculer les :

PAGE 24
𝑧 = 𝑦2 − 𝑥2

Correspondant.

C’est là que les calculs terme à terme sur les matrices montre leurs efficacités ; on
applique directement la formule au tableau X et Y sans oublier de mettre un point
devant les opérateurs multiplication, division et puissance.

Dans Matlab, on écrira :

𝑥 = −1: 0.2: 1

𝑦 = −2: 0.2: 2

>> [𝑋, 𝑌] = 𝑚𝑒𝑠ℎ𝑔𝑟𝑖𝑑(𝑥, 𝑦);

>> 𝑧 = 𝑌. ^2 − 𝑋. ^2;

>> 𝑚𝑒𝑠ℎ(𝑋, 𝑌, 𝑧)

Tracer de surface

Nous venons de voir comment construire un maillage de coordonnées de points avec


la fonction Meshgrid ; à partir de ce maillage, on peut utiliser différentes fonctions
de tracé de surface ; par exemple, mesh suivant la syntaxe générale suivante :
mesh (X, Y, z) :

>> 𝑚𝑒𝑠ℎ(𝑋, 𝑌, 𝑧)

PAGE 25
Les fonctions les plus courantes sont :

- La fonction mesh qui trace une série de lignes entre les points de la surface en
mode ligne cachées.

- Meshc qui fonctionne comme mesh, mais en ajoutant les courbe de niveau
dans le plan (x, y)

PAGE 26
>> 𝑚𝑒𝑠ℎ𝑐(𝑋, 𝑌, 𝑧)

- La fonction surf, qui peint la surface avec une couleur variant selon la cote

>> 𝑠𝑢𝑟𝑓(𝑋, 𝑌, 𝑧)

- La fonction surfl qui peint la surface comme si elle était éclairée.

PAGE 27
𝑠𝑢𝑟𝑓𝑙(𝑋, 𝑌, 𝑧)

- La fonction surfc qui fonctionne comme mesh mais en ajoutant des courbes
de niveau dans le plan (x, y).

>> 𝑠𝑢𝑟𝑓𝑐(𝑋, 𝑌, 𝑧)

PAGE 28
- La fonction subplot permet de comparer les différentes fonctions. (Research)

ax1 = subplot (2,1,1);


Z = peaks;
plot (ax1,Z(1:20,:))

ax2 = subplot (2,1,2);


plot(ax2,Z)

PAGE 29
Chap. 2 : Méthode de traitement d’image de télédétection (Filtre
de Laplace, Filtre de Sobel
DEFINITION DE L’IMAGE :

L’image est une représentation d’une personne ou d’un objet par la peinture, la
sculpture, le dessin, la photographie, le film etc.

C’est aussi un ensemble structuré d’informations qui après affichage sur l’écran, on
une signification pour l’œil humain.

REPRESENTATION DES IMAGES NUMERIQUES

Une image numérique est une matrice de pixels, repérés par leurs coordonnées (x,
y).

S’il s’agit d’une image couleur, un pixel est codé par trois composantes (R, G, B)
chacune comprises au sens large entre 0 – 255 ; représentant respectivement les doses
de Rouge, Vert et Bleu qui caractérisent la couleur du pixel.

S’il s’agit d’une image en niveau de gris, il est codé par 1 composante comprise au sens
large entre 0 – 255 représentants la luminosité du pixel.

TRAITEMENTS D’IMAGES

Pour manipuler une image, on travaille sur un tableau d’entiers, qui contient les
composantes de chaque pixel ; les traitements s’appliquent toujours aux images en
niveau de gris, et parfois sur des images couleur.

Changement de format d’image sous Matlab

L’œil humain possède des récepteurs pour trois couleurs primaires (Rouge, Vert et
Bleu). Ainsi, tous les espace couleur on trois dimensions ; il y a plusieurs espaces de
couleurs disponibles ; les plus connus étant le RGB (Rouge, Vert, Bleu) ; le HSV ; et
le NTSC.

Le script de conversion en RGB

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐼)

>> 𝐼 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑁𝐶 33 − 10 (𝐿é𝑟é). 𝑗𝑝𝑔′);

>> 𝐼 = 𝑑𝑜𝑢𝑏𝑙𝑒(𝐼)/255.0;

>> 𝑅 = 𝐼(: , : ,1);

PAGE 30
>> 𝐽 = 𝑟𝑔𝑏2𝑛𝑡𝑠𝑐(𝐼);

>> 𝑓𝑖𝑔𝑢𝑟𝑒(1);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,5,1);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐼);

>> 𝑡𝑖𝑡𝑙𝑒(′𝑎𝑣𝑎𝑛𝑡 𝑡𝑟𝑎𝑖𝑡𝑒𝑚𝑒𝑛𝑡′);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,5,2);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐽);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

>> 𝑡𝑖𝑡𝑙𝑒(′𝑎𝑝𝑟𝑒𝑠 𝑡𝑟𝑎𝑖𝑡𝑒𝑚𝑒𝑛𝑡′);

Le script de conversion de RGB vers NTFC :

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐼)

>> 𝐼 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑁𝐶 33 − 10 (𝐿é𝑟é). 𝑗𝑝𝑔′);

>> 𝐼 = 𝑑𝑜𝑢𝑏𝑙𝑒(𝐼)/255.0;

>> 𝑅 = 𝐼(: , : ,1);

>> 𝐽 = 𝑟𝑔𝑏2𝑛𝑡𝑠𝑐(𝐼);

>> 𝑓𝑖𝑔𝑢𝑟𝑒(1);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,1);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐼);

>> 𝑡𝑖𝑡𝑙𝑒(′𝑎𝑣𝑎𝑛𝑡 𝑡𝑟𝑎𝑖𝑡𝑒𝑚𝑒𝑛𝑡′);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,2);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐽);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

PAGE 31
>> 𝑡𝑖𝑡𝑙𝑒(′𝑎𝑝𝑟𝑒𝑠 𝑡𝑟𝑎𝑖𝑡𝑒𝑚𝑒𝑛𝑡′);

L’algorithme pour la conversion de HSV en français (TSV (teinte saturation et valeur)

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐼)

>> 𝐼 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑁𝐶 33 − 10 (𝐿é𝑟é). 𝑗𝑝𝑔′);

>> 𝐼 = 𝑑𝑜𝑢𝑏𝑙𝑒(𝐼)/255.0;

>> 𝑅 = 𝐼(: , : ,1);

>> 𝐽 = 𝑟𝑔𝑏2𝑛𝑡𝑠𝑐(𝐼);

>> 𝑓𝑖𝑔𝑢𝑟𝑒(1);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,1);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐼);

>> 𝑡𝑖𝑡𝑙𝑒(′𝑎𝑣𝑎𝑛𝑡 𝑡𝑟𝑎𝑖𝑡𝑒𝑚𝑒𝑛𝑡′);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,2);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐽);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

>> 𝑡𝑖𝑡𝑙𝑒(′𝑎𝑝𝑟𝑒𝑠 𝑡𝑟𝑎𝑖𝑡𝑒𝑚𝑒𝑛𝑡′);

>> 𝐼 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑁𝐶 33 − 10 (𝐿é𝑟é). 𝑗𝑝𝑔′);

>> [𝑥, 𝑚𝑎𝑝] = 𝑟𝑔𝑏2𝑖𝑛𝑑(𝐼, 128);

>> 𝑖𝑚𝑣𝑖𝑒𝑤(𝑥, 𝑚𝑎𝑝);

𝐸𝑟𝑟𝑜𝑟 𝑢𝑠𝑖𝑛𝑔 𝑖𝑚𝑣𝑖𝑒𝑤 (𝑙𝑖𝑛𝑒 7)

𝐹𝑢𝑛𝑐𝑡𝑖𝑜𝑛 𝐼𝑀𝑉𝐼𝐸𝑊 ℎ𝑎𝑠 𝑏𝑒𝑒𝑛 𝑟𝑒𝑚𝑜𝑣𝑒𝑑. 𝑈𝑠𝑒 𝐼𝑀𝑇𝑂𝑂𝐿 𝑖𝑛𝑠𝑡𝑒𝑎𝑑.

>> 𝑖𝑚𝑡𝑜𝑜𝑙(𝑥, 𝑚𝑎𝑝);

>> 𝑚𝑎𝑝ℎ𝑠𝑣 = 𝑟𝑔𝑏2ℎ𝑠𝑣(𝑚𝑎𝑝);

PAGE 32
>> [𝐻, 𝑆, 𝑉] = 𝑖𝑛𝑑2𝑟𝑔𝑏(𝑥, 𝑚𝑎𝑝ℎ𝑠𝑣);

>> 𝑓𝑖𝑔𝑢𝑟𝑒(1);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,4,1);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑥, 𝑚𝑎𝑝);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

>> 𝑡𝑖𝑡𝑙𝑒(′𝑖𝑚𝑎𝑔𝑒 𝑐𝑜𝑛𝑡𝑜𝑢𝑟′);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,4,2);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐻);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

>> 𝑡𝑖𝑡𝑙𝑒(′𝐻′)

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,4,3);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑆);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

>> 𝑡𝑖𝑡𝑙𝑒(′𝑆′)

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,4,4);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑉);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

>> 𝑡𝑖𝑡𝑙𝑒(′𝑉′)

PAGE 33
Filtrage d’image

Pour améliorer la qualité Visuel de l’image, on doit éliminer les parasites. En lui
imposant un traitement appelé Filtrage.

Le filtrage consiste à modifier la distribution fréquentielle des composantes d’un


signal, selon des spécifications données. Le système linéaire utilisé est appelé

Reduction du bruit à partir d’un filtre linéaire

Le filtrage de l’image I par le filtre h est une image F dont les luminances sont données
par :

𝑓(𝑥, 𝑦) = ∑ ℎ(𝑎, 𝑏)𝐼(𝑥 + 𝑎, 𝑦 + 𝑏)


𝑎,𝑏

Le code qui permet de réaliser le filtrage est de :

>> 𝐼 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑆𝑝ℎ𝑖𝑛𝑥𝑂𝑏𝑠𝑒𝑟𝑣𝑎𝑡𝑜𝑟𝑦_𝑅𝑂𝑊9691446114_1920𝑥1080. 𝑗𝑝𝑔′);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐼)

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝐼𝑚𝑎𝑔𝑒 𝑖𝑠 𝑡𝑜𝑜 𝑏𝑖𝑔 𝑡𝑜 𝑓𝑖𝑡 𝑜𝑛 𝑠𝑐𝑟𝑒𝑒𝑛; 𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑖𝑛𝑔 𝑎𝑡 67%

> 𝐼𝑛 𝑖𝑚𝑎𝑔𝑒𝑠. 𝑖𝑛𝑡𝑒𝑟𝑛𝑎𝑙. 𝑖𝑛𝑖𝑡𝑆𝑖𝑧𝑒 (𝑙𝑖𝑛𝑒 71)

𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 336)

>> 𝐽 = 𝑟𝑔𝑏2𝑔𝑟𝑎𝑦(𝐼);

>> 𝐽 = 𝑑𝑜𝑢𝑏𝑙𝑒(𝐽)/255.0;

>> ℎ = −𝑜𝑛𝑒(3,3)%𝑑𝑒𝑓𝑖𝑛𝑖𝑡𝑖𝑜𝑛 𝑑𝑒 ℎ

𝑈𝑛𝑑𝑒𝑓𝑖𝑛𝑒𝑑 𝑓𝑢𝑛𝑐𝑡𝑖𝑜𝑛 𝑜𝑟 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒 ′𝑜𝑛𝑒′.

>> ℎ = −𝑜𝑛𝑒𝑠(3,3)%𝑑𝑒𝑓𝑖𝑛𝑖𝑡𝑖𝑜𝑛 𝑑𝑒 ℎ

ℎ =

PAGE 34
−1 −1 −1

−1 −1 −1

−1 −1 −1

>> ℎ(2,2) = 8;

>> 𝐹 = 𝑓𝑖𝑙𝑡𝑒𝑟2(ℎ, 𝐽);

>> %𝑣𝑖𝑠𝑢𝑎𝑙𝑖𝑠𝑎𝑡𝑖𝑜𝑛 𝑑𝑒𝑠 𝑟𝑒𝑠𝑢𝑙𝑡𝑎𝑡𝑠

>> 𝑓𝑖𝑔𝑢𝑟𝑒(2);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,2);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐼);

>> 𝑡𝑖𝑡𝑙𝑒(′𝑖𝑚𝑎𝑔𝑒 𝑜𝑟𝑖𝑔𝑖𝑛𝑎𝑙𝑒′);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,2);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,1);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐹);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐼);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

>> 𝑡𝑖𝑡𝑙𝑒(′𝑖𝑚𝑎𝑔𝑒 𝑓𝑖𝑙𝑡𝑟𝑒𝑒′);

PAGE 35
Conclure : on peut jouer sur l’intensité du filtre et on peut constater que l’image est
plus nette lorsque la valeur de l’intensité est plus importante.

Synthèse d’un filtre par échantillonnage de fréquences

On part du fait que l’on a :

𝐻(𝑤1, 𝑤2) = ∑ ℎ(𝑛1, 𝑛2)𝑒 −𝑗(𝑤1𝑛1+𝑤2𝑛2)


𝑛1,𝑛2

Le principe consiste a indiquer les valeurs souhaitées de H sur w1 et w2 sur une grille
w1, w2 et en déduire le filtre de hn1 et hn2 ; il est également possible de réaliser le
filtrage dans le domaine fréquentielle ; pour cela, on multiplie la transformée de
Fourier de l’image par le conjugué de la réponse fréquentielle du filtre.

Soit l’image source I, F l’image filtrée et h le filtre, et I, F, H les transformées de


Fourier ; on peut donc écrire :

𝐹(𝑥, 𝑦) = (𝑔 ∗ 𝐼)(𝑥, 𝑦) ↔ 𝐹(𝑈, 𝑉) = 𝐺(𝑈, 𝑉)𝐼(𝑈, 𝑉)

Où :

𝑔(𝑥, 𝑦) = ℎ(−𝑥, −𝑦)

𝐺(𝑥, 𝑦) = 𝐻 ∗ (𝑈, 𝑉)

Ce qui fait que la transformée de Fourier discrète est donne par :

PAGE 36
𝑈𝑥 𝑉𝑦
𝐼(𝑈, 𝑉) = ∑ 𝐼(𝑥, 𝑦)𝑒 −𝑗2𝜋( 𝑁 + 𝑀 )
𝑥,𝑦

Le code correspondant est le suivant :

>> 𝐼 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑆𝑝ℎ𝑖𝑛𝑥𝑂𝑏𝑠𝑒𝑟𝑣𝑎𝑡𝑜𝑟𝑦_𝑅𝑂𝑊9691446114_1920𝑥1080. 𝑗𝑝𝑔′);

>> 𝐼𝑙 = 𝑓𝑓𝑡2(𝐼);

>> ℎ = 𝑧𝑒𝑟𝑜𝑠(9,9);

>> ℎ(4: 6,4: 6) = 𝑜𝑛𝑒𝑠(3,3);

>> 𝐻𝑙 = 𝑓𝑠𝑎𝑚𝑝2(ℎ);

>> 𝐺 = 𝑓𝑖𝑙𝑡𝑒𝑟2(𝐻𝑙, 𝐼);

>> 𝐺𝑙 = 𝑖𝑓𝑓𝑡2(𝐺);

>> 𝑓𝑖𝑔𝑢𝑟𝑒(1);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,1);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺𝐿);

𝑈𝑛𝑑𝑒𝑓𝑖𝑛𝑒𝑑 𝑓𝑢𝑛𝑐𝑡𝑖𝑜𝑛 𝑜𝑟 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒 ′𝐺𝐿′.

𝐷𝑖𝑑 𝑦𝑜𝑢 𝑚𝑒𝑎𝑛:

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺𝑙);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝐷𝑖𝑠𝑝𝑙𝑎𝑦𝑖𝑛𝑔 𝑟𝑒𝑎𝑙 𝑝𝑎𝑟𝑡 𝑜𝑓 𝑐𝑜𝑚𝑝𝑙𝑒𝑥 𝑖𝑛𝑝𝑢𝑡.

> 𝐼𝑛 𝑖𝑚𝑎𝑔𝑒𝑠. 𝑖𝑛𝑡𝑒𝑟𝑛𝑎𝑙. 𝑖𝑚𝑎𝑔𝑒𝐷𝑖𝑠𝑝𝑙𝑎𝑦𝑉𝑎𝑙𝑖𝑑𝑎𝑡𝑒𝑃𝑎𝑟𝑎𝑚𝑠


> 𝑣𝑎𝑙𝑖𝑑𝑎𝑡𝑒𝐶𝐷𝑎𝑡𝑎 (𝑙𝑖𝑛𝑒 143)

𝐼𝑛 𝑖𝑚𝑎𝑔𝑒𝑠. 𝑖𝑛𝑡𝑒𝑟𝑛𝑎𝑙. 𝑖𝑚𝑎𝑔𝑒𝐷𝑖𝑠𝑝𝑙𝑎𝑦𝑉𝑎𝑙𝑖𝑑𝑎𝑡𝑒𝑃𝑎𝑟𝑎𝑚𝑠 (𝑙𝑖𝑛𝑒 27)

𝐼𝑛 𝑖𝑚𝑎𝑔𝑒𝑠. 𝑖𝑛𝑡𝑒𝑟𝑛𝑎𝑙. 𝑖𝑚𝑎𝑔𝑒𝐷𝑖𝑠𝑝𝑙𝑎𝑦𝑃𝑎𝑟𝑠𝑒𝐼𝑛𝑝𝑢𝑡𝑠 (𝑙𝑖𝑛𝑒 78)

𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 245)

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

PAGE 37
> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

>> 𝑡𝑖𝑡𝑙𝑒(′𝑓𝑟𝑒𝑞𝑢𝑒𝑛𝑡𝑖𝑒𝑙′);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,2);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

>> 𝑡𝑖𝑡𝑙𝑒(′𝑖𝑚𝑝𝑢𝑠𝑖𝑜𝑛𝑛𝑒𝑙′);

Reduction du bruit avec les filtres médians

Lorsqu’une image contient des pixels aberrants ; par exemple un seul pixel blanc au
milieu d’une zone noir ou des pixels isolées repartis aléatoirement dans l’image, qui
dégrade la qualité de l’image ; on dit qu’elle est bruitée.

Un simple lissage de l’image permet de réduire le bruit car l’effet des pixels aberrants
est amoindri, grâce au moyennage avec ses pixels voisins.

La méthode basée sur le filtre médian ne présente pas cet inconvénient. Elle est
particulièrement adaptée lorsque le bruit est constitué de point isolé ou de lignes
fines ; cependant, elle n’est applicable qu’aux images en niveau de gris contrairement
au lissage.

Le code est de :

PAGE 38
>> 𝐼 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑆𝑝ℎ𝑖𝑛𝑥𝑂𝑏𝑠𝑒𝑟𝑣𝑎𝑡𝑜𝑟𝑦_𝑅𝑂𝑊9691446114_1920𝑥1080. 𝑗𝑝𝑔′);

>> 𝐼 = 𝑟𝑔𝑏2𝑔𝑟𝑎𝑦(𝐼);

>> 𝐽 = 𝑖𝑚𝑛𝑜𝑖𝑠𝑒(𝐼, ′𝑠𝑎𝑙𝑡 & 𝑝𝑒𝑝𝑝𝑒𝑟′, 0.02);

>> 𝑆 = 𝑠𝑡𝑟𝑒𝑙(′𝑑𝑖𝑠𝑘′, 1);

>> 𝐾 = 𝑖𝑚𝑜𝑝𝑒𝑛(𝐽, 𝑆);

>> 𝑁 = 𝑖𝑚𝑛𝑐𝑙𝑜𝑠𝑒(𝐾, 𝑆);

𝑈𝑛𝑑𝑒𝑓𝑖𝑛𝑒𝑑 𝑓𝑢𝑛𝑐𝑡𝑖𝑜𝑛 𝑜𝑟 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒 ′𝑖𝑚𝑛𝑐𝑙𝑜𝑠𝑒′.

𝐷𝑖𝑑 𝑦𝑜𝑢 𝑚𝑒𝑎𝑛:

>> 𝑁 = 𝑖𝑚𝑐𝑙𝑜𝑠𝑒(𝐾, 𝑆);

>> 𝐹 = 𝑖𝑚𝑐𝑙𝑜𝑠𝑒(𝐽, 𝑆);

>> 𝑃 = 𝑖𝑚𝑜𝑝𝑒𝑛(𝑁, 𝑆);

>> 𝑓𝑖𝑔𝑢𝑟𝑒(1);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,5,1);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐽);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,5,2);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐾);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,5,3);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐹);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

PAGE 39
> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,5,4);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑁);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝑇ℎ𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑚𝑎𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑖𝑚𝑎𝑔𝑒 𝑖𝑠 𝑠𝑒𝑡 𝑡𝑜 ′𝑓𝑖𝑡′ 𝑖𝑛 𝑎 𝑑𝑜𝑐𝑘𝑒𝑑 𝑓𝑖𝑔𝑢𝑟𝑒.

> 𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 312)

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,5,5);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑃);

Filtre de détection des contours (filtre de sobel, de Laplace, et celui de prevish)

Le but de la détection des co0ntours est de repérer les points d’une image numérique
qui correspondent à un changement brutal de l’intensité lumineuse ; la détection des
contours d’une image réduit de manière significative la quantité de données et
élimine les informations que l’on peut juger moins pertinente.

Tout en préservant les propriétés structurelles importantes de l’image.

Il existe un très grand nombre de méthode de détection des images ; nous exposerons
dans cette partie la méthode de prewitt : le filtre de Prewitt, de sobel et de Revert.

- Le filtre de prewitt

La matrice qui correspond au filtrage horizontal faisant ressortir essentiellement les


contours verticaux, selon l’opérateur de prewitt s’écrit :

PAGE 40
La matrice ligne :

ℎ𝑥 = [−1 0 1]

Tandis que la matrice verticale est sa transposée et va s’écrire :

−1
ℎ𝑦 = [ 0 ]
1
Les deux convolutions avec le tableau de valeurs initiales créent deux tableaux :

Premier tableau 𝐺𝑥

Deuxième tableau 𝐺𝑦

A l’origine du tableau G sur lequel on peut localiser les maximums.

Le code Matlab qui permet d’appliquer le filtre Sobel et celui de Prewitt est le suivant :

>> 𝐼 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑆𝑝ℎ𝑖𝑛𝑥𝑂𝑏𝑠𝑒𝑟𝑣𝑎𝑡𝑜𝑟𝑦_𝑅𝑂𝑊9691446114_1920𝑥1080. 𝑗𝑝𝑔′);

>> 𝐽 = 𝑟𝑔𝑏2𝑔𝑟𝑎𝑦(𝐼);

>> 𝐽 = 𝑑𝑜𝑜𝑏𝑙𝑒(𝐼)/255.0;

𝑈𝑛𝑑𝑒𝑓𝑖𝑛𝑒𝑑 𝑓𝑢𝑛𝑐𝑡𝑖𝑜𝑛 𝑜𝑟 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒 ′𝑑𝑜𝑜𝑏𝑙𝑒′.

𝐷𝑖𝑑 𝑦𝑜𝑢 𝑚𝑒𝑎𝑛:

>> 𝐽 = 𝑑𝑜𝑢𝑏𝑙𝑒(𝐼)/255.0;

>> 𝑠𝑒𝑢𝑖𝑙 = 0.8;

>> 𝐻 = 𝑓𝑠𝑝𝑒𝑐𝑖𝑎𝑙(′𝑝𝑟𝑒𝑤𝑖𝑡𝑡′);

>> 𝑉 = −𝐻′;

>> 𝐺ℎ = 𝑓𝑖𝑙𝑡𝑒𝑟2(𝐻, 𝐽);

>> 𝐺𝑣 = 𝑓𝑖𝑙𝑡𝑒𝑟2(𝑉, 𝐽);

>> 𝐺 = 𝑠𝑞𝑟𝑡(𝐺ℎ.∗ 𝐺ℎ + 𝐺𝑣.∗ 𝐺𝑣);

>> 𝐺𝑠 = (𝐺 > 𝑠𝑒𝑢𝑖𝑙);

PAGE 41
>> 𝑓𝑖𝑔𝑢𝑟𝑒(1);

>> 𝑓𝑖𝑔𝑢𝑟𝑒(2);

>> 𝑓𝑖𝑔𝑢𝑟𝑒(1);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺ℎ);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝐼𝑚𝑎𝑔𝑒 𝑖𝑠 𝑡𝑜𝑜 𝑏𝑖𝑔 𝑡𝑜 𝑓𝑖𝑡 𝑜𝑛 𝑠𝑐𝑟𝑒𝑒𝑛; 𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑖𝑛𝑔 𝑎𝑡 25%

> 𝐼𝑛 𝑖𝑚𝑎𝑔𝑒𝑠. 𝑖𝑛𝑡𝑒𝑟𝑛𝑎𝑙. 𝑖𝑛𝑖𝑡𝑆𝑖𝑧𝑒 (𝑙𝑖𝑛𝑒 71)

𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 336)

>> 𝑓𝑖𝑔𝑢𝑟𝑒(2);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺𝑣);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝐼𝑚𝑎𝑔𝑒 𝑖𝑠 𝑡𝑜𝑜 𝑏𝑖𝑔 𝑡𝑜 𝑓𝑖𝑡 𝑜𝑛 𝑠𝑐𝑟𝑒𝑒𝑛; 𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑖𝑛𝑔 𝑎𝑡 25%

> 𝐼𝑛 𝑖𝑚𝑎𝑔𝑒𝑠. 𝑖𝑛𝑡𝑒𝑟𝑛𝑎𝑙. 𝑖𝑛𝑖𝑡𝑆𝑖𝑧𝑒 (𝑙𝑖𝑛𝑒 71)

𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 336)

>> 𝑓𝑖𝑔𝑢𝑟𝑒(3);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝐼𝑚𝑎𝑔𝑒 𝑖𝑠 𝑡𝑜𝑜 𝑏𝑖𝑔 𝑡𝑜 𝑓𝑖𝑡 𝑜𝑛 𝑠𝑐𝑟𝑒𝑒𝑛; 𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑖𝑛𝑔 𝑎𝑡 25%

> 𝐼𝑛 𝑖𝑚𝑎𝑔𝑒𝑠. 𝑖𝑛𝑡𝑒𝑟𝑛𝑎𝑙. 𝑖𝑛𝑖𝑡𝑆𝑖𝑧𝑒 (𝑙𝑖𝑛𝑒 71)

𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 336)

>> 𝑓𝑖𝑔𝑢𝑟𝑒(4);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺𝑠);

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝐼𝑚𝑎𝑔𝑒 𝑖𝑠 𝑡𝑜𝑜 𝑏𝑖𝑔 𝑡𝑜 𝑓𝑖𝑡 𝑜𝑛 𝑠𝑐𝑟𝑒𝑒𝑛; 𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑖𝑛𝑔 𝑎𝑡 25%

> 𝐼𝑛 𝑖𝑚𝑎𝑔𝑒𝑠. 𝑖𝑛𝑡𝑒𝑟𝑛𝑎𝑙. 𝑖𝑛𝑖𝑡𝑆𝑖𝑧𝑒 (𝑙𝑖𝑛𝑒 71)

𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 336)

>>

PAGE 42
- Le filtre de Sobel

Le principe de ce filtre est que l’operateur calcule le gradient de l’intensité de chaque


pixel, ceci indique la direction de la plus forte variation du clair au sombre ainsi que
le taux de changement dans cette direction. On connait alors les points de

PAGE 43
changement soudain de luminosité correspondant probablement a des bords ainsi
que l’orientation de ces bords.

L’operateur utilise des matrices de convolution ; la matrice généralement de taille 3*3


subit une convolution avec l’image pour calculer des approximations des dérivées
horizontales et verticales.

Soit A l’image source, Gx et Gy deux images qui en chaque point contiennent des
approximations respectivement de la dérivée horizontale et verticale de chaque
point ; ces images sont calculées comme suite :

1 0 −1
𝐺𝑥 = [2 0 −2] ∗ 𝐴
1 0 −1
1 2 1
𝐺𝑦 = [ 0 0 0 ]∗𝐴
−1 −2 −1
En chaque point, les approximations des gradients horizontaux, et verticaux peuvent
être combinés comme suit :

Pour obtenir une approximation de la norme du gradient :

𝐺 = √𝐺𝑥2 + 𝐺𝑦2

Le code Matlab qui permet d’obtenir cela est de :

>> 𝐼 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑆𝑝ℎ𝑖𝑛𝑥𝑂𝑏𝑠𝑒𝑟𝑣𝑎𝑡𝑜𝑟𝑦_𝑅𝑂𝑊9691446114_1920𝑥1080. 𝑗𝑝𝑔′);

>> 𝐽 = 𝑟𝑔𝑏2𝑔𝑟𝑎𝑦(𝐼);

>> 𝐽 = 𝑑𝑜𝑢𝑏𝑙𝑒(𝐼)/255.0;

>> 𝑠𝑒𝑢𝑖𝑙 = 0.8;

>> 𝐻 = 𝑓𝑠𝑝𝑒𝑐𝑖𝑎𝑙(′𝑠𝑜𝑏𝑒𝑙′);

>> 𝑉 = −𝐻′;

>> 𝐺ℎ = 𝑓𝑖𝑙𝑡𝑒𝑟2(𝐻, 𝐽);

>> 𝐺𝑣 = 𝑓𝑖𝑙𝑡𝑒𝑟2(𝑉, 𝐽);

>> 𝐺 = 𝑠𝑞𝑟𝑡(𝐺ℎ.∗ 𝐺ℎ + 𝐺𝑣.∗ 𝐺𝑣);

PAGE 44
>> 𝐺𝑠𝑙 = (𝐺 > 𝑠𝑒𝑢𝑖𝑙 ∗ 4/3);

>> 𝑓𝑖𝑔𝑢𝑟𝑒(1);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺ℎ)

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝐼𝑚𝑎𝑔𝑒 𝑖𝑠 𝑡𝑜𝑜 𝑏𝑖𝑔 𝑡𝑜 𝑓𝑖𝑡 𝑜𝑛 𝑠𝑐𝑟𝑒𝑒𝑛; 𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑖𝑛𝑔 𝑎𝑡 25%

> 𝐼𝑛 𝑖𝑚𝑎𝑔𝑒𝑠. 𝑖𝑛𝑡𝑒𝑟𝑛𝑎𝑙. 𝑖𝑛𝑖𝑡𝑆𝑖𝑧𝑒 (𝑙𝑖𝑛𝑒 71)

𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 336)

>> 𝑓𝑖𝑔𝑢𝑟𝑒(2);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺𝑣)

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝐼𝑚𝑎𝑔𝑒 𝑖𝑠 𝑡𝑜𝑜 𝑏𝑖𝑔 𝑡𝑜 𝑓𝑖𝑡 𝑜𝑛 𝑠𝑐𝑟𝑒𝑒𝑛; 𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑖𝑛𝑔 𝑎𝑡 25%

> 𝐼𝑛 𝑖𝑚𝑎𝑔𝑒𝑠. 𝑖𝑛𝑡𝑒𝑟𝑛𝑎𝑙. 𝑖𝑛𝑖𝑡𝑆𝑖𝑧𝑒 (𝑙𝑖𝑛𝑒 71)

𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 336)

>> 𝑓𝑖𝑔𝑢𝑟𝑒(3);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺)

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝐼𝑚𝑎𝑔𝑒 𝑖𝑠 𝑡𝑜𝑜 𝑏𝑖𝑔 𝑡𝑜 𝑓𝑖𝑡 𝑜𝑛 𝑠𝑐𝑟𝑒𝑒𝑛; 𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑖𝑛𝑔 𝑎𝑡 25%

> 𝐼𝑛 𝑖𝑚𝑎𝑔𝑒𝑠. 𝑖𝑛𝑡𝑒𝑟𝑛𝑎𝑙. 𝑖𝑛𝑖𝑡𝑆𝑖𝑧𝑒 (𝑙𝑖𝑛𝑒 71)

𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 336)

>> 𝑓𝑖𝑔𝑢𝑟𝑒(4);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺𝑠𝑙)

𝑊𝑎𝑟𝑛𝑖𝑛𝑔: 𝐼𝑚𝑎𝑔𝑒 𝑖𝑠 𝑡𝑜𝑜 𝑏𝑖𝑔 𝑡𝑜 𝑓𝑖𝑡 𝑜𝑛 𝑠𝑐𝑟𝑒𝑒𝑛; 𝑑𝑖𝑠𝑝𝑙𝑎𝑦𝑖𝑛𝑔 𝑎𝑡 25%

> 𝐼𝑛 𝑖𝑚𝑎𝑔𝑒𝑠. 𝑖𝑛𝑡𝑒𝑟𝑛𝑎𝑙. 𝑖𝑛𝑖𝑡𝑆𝑖𝑧𝑒 (𝑙𝑖𝑛𝑒 71)

𝐼𝑛 𝑖𝑚𝑠ℎ𝑜𝑤 (𝑙𝑖𝑛𝑒 336)

PAGE 45
La manipulation des images pose des problèmes très complexes que celle du texte.

En effet, l’image est un objet a deux dimensions censées représenter un espace 3D ;


ce qui a deux conséquences majeures, puisque le volume de données à traiter est
beaucoup plus importante, et la structure de ces données est nettement plus
complexe.

Il en résulte que la manipulation, le stockage, et la représentation de ces données se


heurte à certaines limitations ; grâce au traitement d’images ces contrainte sont
levées ou contenues.

PAGE 46
En effet, ce domaine cherche à détecter la présence de certaines formes, certains
contours, ou certaines textures d’un modèle connu.

C’est le problème de la détection ; un autre aspect de traitement d’image concerne :

L’analyse, et la compréhension de l’image dans le but d’en extraire des informations


utiles.

Il cherche aussi parfois à comprimer l’image afin de gagner en vitesse lors de la


transmission de l’information ; et en capacite de stockage, tout en dégradant le moins
possible les images.

Chapitre 3 : Création d’un modèle numérique de terrain raster à


partir des courbes de niveaux (Vecteurs), visualisation en 2D
Un modèle numérique de terrain (MNT) correspond à une représentation sous forme
numérique du relief d’une zone géographique ; ce modèle peut être composé
d’entités vectorielles ponctuelles (points côtés), linéaires (courbes de niveaux),
surfacique (facettes) ou représenté en mode raster (polygones).

Un MNT permet de représenter une vue en image de synthèse du terrain, de


déterminer une trajectoire de survol du terrain, de calculer des surfaces et des
volumes, de tracer des profils topographiques ; d’une manière générale, de manipuler
de façon quantitative le terrain étudié.

On peut distinguer les MNT selon le type de maillage utilisé :

- Selon un maillage régulier carré (Raster)


- Selon un maillage triangulaire régulier
- Selon un maillage triangulaire quelconque

La qualité d’un MNT dépend directement de l’intervalle du maillage et de la source


des données a partir desquels il est généré.

Le stockage et la représentation de ces données se heurte à certaines limitations.

Grace au traitement d’images, ces contraintes sont levées ou contournées.

En effet, ce domaine cherche à détecter la présence de certaines formes de certains


contours ou de certaines textures d’un modèle connu, c’est le problème de la
détection ; un autre aspect de traitement d’images concerne l’analyse et la
compréhension de l’image dans le but d’en extraire les informations utiles. Ils

PAGE 47
cherchent aussi parfois à comprimer l’image, afin de gagner en vitesse lors de la
transmission de l’information et en capacité de stockage ou en dégradant le moins
possible les images considérées.

PAGE 48

Vous aimerez peut-être aussi