GBM – Imagerie numérique – TP Nuées dynamiques
et les lira. Dans cette fonction, on calculera également les dimensions Min et Max en X et Y
du nuage. Toujours dans cette fonction, on saisira au clavier le nombre de noyaux nNoyaux
puis on allouera les tableaux de coordonnées des noyaux de même que les tableaux de
coordonnées des noyaux à l'étape précédente. On allouera enfin le tableau Point_App (de
dimension nVertex) qui donnera les appartenances des points
ALGORITHME DE CLASSIFICATION
INITIALISATION
Dans un premier temps, les nNoyaux sont affectés aléatoirement. Il est donc pratique de les
initialiser aux premiers points de l'ensemble chargé.
Rédiger une fonction Nuees_Dynamiques() qui contiendra l'ensemble de l'algorithme. On
commencera donc par son initialisation.
ALGORITHME
Rédiger une fonction float Distance (float X1, float Y1, float X2, float Y2)qui
calcule la distance euclidienne entre (X1,Y1) et (X2,Y2).
Rédiger une fonction Affecte_Points_Classe () qui pour chaque point i du nuage va
chercher le noyau n qui lui est le plus proche et affecter n à Point_App[i].
L'algorithme est itératif. On va donc réaliser une boucle qui va faire évoluer les noyaux
(centres des classes) jusqu'à leur immobilité d'une étape à l'autre.
La trame de l'algorithme est la suivante :
Initialisation
Faire
• Sauvegarde les noyaux de l'étape précédente
• Affecte_Points_Classe() // Calcul des classes
• Calculer les nouveaux noyaux qui sont les isobarycentres des classes
• Calculer la distance globale d qui traduit l'évolution des noyaux de
l'étape précédente à cette étape
Tant que d < 0.01
AFFICHAGE DU RESULTAT
La fenêtre OpenGL est paramétrée dans un winInit() avec la fonction gluOrtho2D, utilisée
avec les limites du rectangle englobant du nuage de points.
Les points des nuages et les noyaux pourront être affichés de deux couleurs différentes.
N'hésitez pas à donner un peu d'épaisseur aux noyaux au moyen de la fonction
glPointSize().
Il peut également être intéressant de voir l'algorithme évoluer en affichant les noyant à chaque
étape.
Bon courage…