Dans cet exercice, on considère des fichiers composés de caractères '1' et
'0'. Ces fichiers comportent un nombre quelconque de lignes mais toutes ces
lignes sont de même taille. Ils formes donc des images rectangulaires. On
pourra par exemple considérer le fichier image1.txt contenant les lignes
suivantes :
Pour pouvoir travailler sur les images contenues dans ces fichiers, on
souhaite les transformer en tableau de boolean. Définissez un type
t_image qui regroupera, avec ce tableau, son nombre de colonnes et
son nombre de lignes.
Question 1.2 )
Écrire un sous programme lireImage qui permette de transférer le contenu
d'un fichier image dans une variable de type t_image.
Question 1.3 )
Écrire un sous-programme afficheImage affiche pour afficher une telle
image à l'écran. Les '1' correspondront à l'écriture d'un 'X' et les '0'
seront traduits par un espace.
Question 1.4 )
Écrire un sous-programme ecrireImage qui enregistre une image de type
t_image dans un fichier dont le nom est passé en argument.
Question 1.5 )
Écrire un sous-programme negatif qui transforme une image en son
négatif, c'est à dire qui remplace chaque '1' par un '0' et vice versa.
Question 1.6 )
Écrire un sous programme erosion qui ne conserve à '1' que les points
dont les 8 voisins étaient à '1' avant cette transformation. Attention cette
transformation (comme les suivantes) nécessite l'emploi d'un tableau
intermédiaire.
Question 1.7 )
Écrire un sous programme dilatation qui remplace chaque '0' par un '1'
dès lors qu'au moins un de ses 8 voisins est à '1'.
Question 1.8 )
Écrire un sous programme supprimerBruit qui supprime les points
isolés, c'est-à-dire qui remplace un '1' par un '0' lorsque ce '1' est
entouré de 8 '0' et qui remplace un '0' par un '1' quand le '0' est entouré
de 8 '1'.
Question 1.9 )
Écrire un sous programme ouverture qui ne conserve dans l'image que les '1'
appartenant à tous les groupes de 4 '1' en carré, tous les autres points
sont à '0'.
Question 1.10 )
Écrire un programme qui teste les sous-programmes et les déclarations
précédents. Ce programme pourra avoir l'interface suivante :