Rapport de TP1 de Traitement d`images Kasereka Selain
Transcription
Rapport de TP1 de Traitement d`images Kasereka Selain
Rapport de TP1 de Traitement d'images Kasereka Selain Partie 1 : Profil d'intensité des pixels d'une ligne d’une image Dans cette première partie nous avons écrit un programme qui permet de lire une image (en niveau de gris puis en couleur) et d'extraire les valeurs du profil d'intensité des pixels d'une ligne. Les lignes qui suivent expliquent comment notre programme écrit en C++ fonctionne. Fonctionnement du programme : Notre programme reçoit en entrée une image à niveau de gris ou une image couleur pour lecture et pour l'extraction, en sortie notre programme fourni une nouvelle image avec la ligne du profil extrait et les valeurs du profil de cette ligne. Notons que ces deux images nouvellement obtenues sont écrites dans deux fichiers séparés sous les noms image_ligne_out et image_profil_out. Soulignons que pour lancer notre programme il suffit d’accéder dans le répertoire « profil » de taper la commande «./tp1_profil image ». Il faudra au préalable exploiter notre « MakeFile » pour créer l’exécutable grâce à la commande « make ». Nous avons testé notre programme avec une image à niveau de gris et une image en couleur. Ci-dessous nous présentons les résultats obtenus: a. Exécution du programme avec une image a niveau de gris : Figure 1. Image à lire Figure 2. Image avec ligne à extraire Figure 3. Image qui présente les valeurs de profil b. Exécution du programme avec une image en couleur : Figure 4. Image à lire Figure 5. Image avec ligne à extraire Figure 6. Image qui présente les valeurs de profil Observations : Observant les deux résultats ci-dessus, nous constatons que les valeurs de profil sur les deux exécutions respectent les niveaux où la ligne est passée. Par exemple sur la figure 2 cidessus, le niveau de gris est un peu clair avant que la ligne ne traverse le costume noir de la personne sur l'image, cela est bien représenté sur la figure 3 qui montre comment la valeur du profil d'intensité chute lorsqu’on atteint la couleur noir du costume. Le même scenario est constaté lorsque, sur la même photo, la ligne dépasse le costume (la valeur du profil d'intensité remonte). Ce même raisonnement peut être amené pour les images en couleurs, mais pour une image couleur, nous obtenons trois profils d’intensité (rouge, vert et bleu). Partie 2 : Modification du contraste d’une image Dans cette deuxième partie nous décrivons les manipulations du contraste d'une image. Pour ce faire nous avons implémenté des programmes permettant de le faire en s'appuyant sur les fonctions de transformation de contraste vue au cours: 1. Première modification du contraste : Nous avons commencé par la fonction de transformation linéaire par morceau, cette fonction se présente comme sur la figure 7 ci-dessous. Dans cette fonction nous avons les points (r1, s1) et (r2, s2) pour contrôler la forme de la transformation. La sélection des points de contrôle dépend des types d'images et varie d'une image à une autre image. Si par exemple r1 = r2 = s1 et s2 alors la transformation est linéaire et cela n'affecte pas l'image. Figure 7. Illustration de la transformation par morceau Fonctionnement du programme : Notre programme prend en entrée une image et donne en sortie plusieurs images dont l'image contrastée, l'histogramme de l'image originale, l'image originale avec ligne montrant l'objet à mettre en évidence sur l'image, l'image avec le profil d'intensité de l'image originale, l'histogramme de l'image contrastée, le profil d'intensité sur l'image contrastée sur la ligne (même pour les autres fonctions). Pour obtenir notre résultat nous avons entré les valeurs suivantes : r1=11, s1=160, r2=11, s2=161. Pour lancer notre programme il suffit d’accéder dans le répertoire « contrast_fonction_lineaire_par_ morceau » et taper la commande «./contrast1 image». Il faudra au préalable exploiter notre « MakeFile » pour créer l’exécutable grâce à la commande « make ». Résultats 1.a: Figure 8. Image originale Figure 10. Image origine avec ligne sur l’objet à mettre en évidence Figure 9. Histogramme image originale Figure 11. Profil d'intensité de l’image original Observations : Nous pouvons constater sur la figure 8, l'image originale de notre choix a des parties noires et blanches, l'histogramme de l'mage originale (Figure 9) prouve que l'image a une résolution pas du tout mal mais que nous pouvons améliorer pour chercher de bien afficher tous les objets qui peuvent être intéressants. Résultat 1.b : Figure 12. Image contrastée Figure 13. Histogramme de l’image contrastée Figure 14. Image contrastée avec ligne sur l’objet en mettre à évidence Figure 15. Valeur de profil de l’image contrastée Observations : Nous constatons qu'il y a une très grande différence entre l'image originale (figure 8) et l'image obtenue après modification de contraste (figure 12). La nouvelle image obtenue est bien contrastée et nous avons maintenant la possibilité de voir facilement touts les objets dans les cases noires qui étaient invisibles avant. Et nous voyons bien que les objets que nous avions cherchés de mettre en évidence sont bien claires. Grâce au profil d'intensité de la ligne (Figure 15), il est claire de voir que la présence du petit carré à gauche et du petit trait à droite (le deux en blanc) font varier le profil d'intensité. Mais nous constatons que la partie blanche n'est pas bien claire. 2. Deuxième modification du contraste : La deuxième fonction que nous utilisons est la fonction de transformation non linéaire, la ɤ correction GAMMA. Cette fonction est représentée par cette fonction g(i,j)=Kf(i,j) Pour trouver nos résultats, nous avons fixé Gamma=0,5 Pour lancer notre programme il suffit d’accéder dans le répertoire « contrast_fonction_non_lineaire _gamma» de taper la commande «./contrast2 image». Il faudra au préalable exploiter notre « MakeFile » pour créer l’exécutable grâce à la commande « make ». Résultat 2.a : Figure 16. Image originale Figure 17. histogramme image originale Figure 18. Image contrastée avec ligne sur l’objet à mettre en évidence Figure 19. Profil d'intensité image original Observations : Cette image m’attire particulièrement mais je trouve qu’elle n’est pas bien contrastée, car l’objet que nous voulons mettre en évidence (sur la ligne de la figure 18) n’est pas bien claire et aussi toute la partie du dessus. Résultat 2.b : Figure 20. Image contrastée Figure 22. Image contrastée avec ligne sur l’objet à mettre en évidence Figure 21. Histogramme de l’image contrastée Figure 23. Profil d’intensité sur la ligne de l’image contrastée Observations : Grâce aux modifications que nous avons apportées sur le contraste de l’image originale (figure 16) il est claire de voir que l’image en sortie est actuellement bien contrastée. L’objet mis en exergue est très clairement visible et aussi toute la partie du dessus. Cette fonction a donc répondu à nos attentes. Cela est même prouvé par le profil d’intensité (figure 21) et l’histogramme (figure 23) de l’image contrastée. Petite comparaison des fonctions : Pour des raisons de comparaison des différentes fonctions de transformation de contraste, nous avons utilisé la même image que celle de la première fonction (fonction linéaire par morceau) et nous constatons que la fonction non linéaire GAM MA nous permet de ressortir d'autres objets que nous n'avons pas remarqués avec d'autres fonctions comme le montre les images ci-dessous : Résultat 2.c: Figure 24. Image originale avec ligne Figure 25. Image contrastée avec la fonction gamma 3. Troisième modification du contraste : Pour la troisième transformation nous avons utilise la transformation linéaire. Nous utilisons la valeur 1,6 comme valeur de contrôle de contraste. Résultats 3.a: Figure 26. Image originale Figure 27. Histogramme image originale Figure 28. Image contrastée avec ligne sur l’objet à mettre en évidence Figure 29. Profil d'intensité image original Pour lancer notre programme il suffit d’accéder dans le répertoire « contrast_fonction_ lineaire» de taper la commande «./contrast3 image». Il faudra au préalable exploiter notre « MakeFile » pour créer l’exécutable grâce à la commande « make ». Observations : Cette image est très flou et nous constatons que derrière la personne se trouvent su cette photos il y a des objets. L’objectif poursuivi ici est d’appliquer un contraste à cette image pour identifier ces objets. Nous constatons que l’histogramme (Figure 27) prouve que l’image n’est pas bien contrastée et aussi avec la ligne que nous avons placée pour le profil d’intensité sur l’objet à mettre en exergue. Résultat 3.b. Figure 30. Image contrastée Figure 31. Histogramme image contrastee Figure 32. Image contrastée avec ligne Figure 33. Profil de l’image contrastée Observations : Comme nous pouvons le constater, partant de l'image de départ (figure 26) qui parai plus ou moins flou, l'objet derrière le monsieur sur l'image est maintenant visible, c'est donc une table et des livres sur l'étagère. Cela est remarquable grâce à l’histogramme (figure 31) qui s’élargi par rapport à l’histogramme de l’image originale. Observant les figures 29 et 33 nous constatons que l’objet que nous avions voulu mettre en évidence est remarquable, dans la figure 33 le profil d’intensité est élevé car l’objet est plus claire qu’avant (voir figure 28 et 29) Petite comparaison des fonctions : Dans le souci de cherche à palier au problème que nous avons signalé pour la première transformation, nous utilisons l’image pour laquelle nous avions optée à la première transformation (voir Figure 8) pour voir le résultat qui sera observe : Résultats 3.c: Figure 34. 24. Image originale avec ligne à extraire Figure 35. Profil d'intensité de l’image originale Figure 36. Image contrastée avec ligne à extraire Figure 37. Profil d'intensité sur l’image contrastée Observations : Observant la transformation du contraste de cette image par cette fonction, nous constatons que l'image devient plus claire sur les parties qui étaient déjà blanches, mais les objets à afficher ou ciblés n'apparaissent pas bien sur l'image contrastée. Donc cette fonction serrai intéressante pour des images où on a juste besoin d'accentuer les couleurs précises, comme ici la couleur blanche. Conclusion Partant des fonctions de transformation que nous avons appliquées et multiples exemples que nous avons exploitées dans ce petit rapport, plusieurs constants peuvent être tirés, mais le grand problème reste celui de savoir quelle fonction de transformation de contraste appliquée pour quelle image ? Dans ce travail nous avons écrit quatre programmes, le premier était pour le profil d’intensité, les trois derniers se sont basés sur les fonctions de transformation de contraste dont la fonction de transformation linéaire par morceau, fonction de transformation nonlinéaire (correction gamma) et fonction de transformation linéaire.