![]() |
ImagePulser V5.2.4
Simplification des images prises avec une webcam
|
Déclaration des fonctions pour contour.c. Plus de détails...
Aller au code source de ce fichier.
Structures de données | |
struct | Robot |
Énumérations | |
enum | Orientation { Nord , Est , Sud , Ouest } |
Fonctions | |
void | init_robot (Robot *r, int x, int y, Orientation o) |
Initialise le robot à une position donnée avec une orientation spécifique. | |
void | move_forward (Robot *r) |
Avance le robot d'une position dans la direction de son orientation actuelle. | |
void | turn_left (Robot *r) |
Tourne le robot à gauche (changement d'orientation). | |
void | turn_right (Robot *r) |
Tourne le robot à droite (changement d'orientation). | |
void | position (Robot *r, int *x, int *y) |
Récupère la position actuelle du robot. | |
int | abscissa (Robot *r) |
Récupère la coordonnée x de la position actuelle du robot. | |
int | ordinate (Robot *r) |
Récupère la coordonnée y de la position actuelle du robot. | |
Orientation | orient (Robot *r) |
Récupère l'orientation actuelle du robot. | |
void | position_forward (Robot *r, int *x, int *y) |
Récupère la position de la case directement devant le robot. | |
void | new_orientation (Robot *r, int x, int y, Image I) |
Calcule la nouvelle orientation du robot en fonction de son environnement immédiat. | |
Point | find_departure_pixel (Image I) |
Trouve les coordonnées du premier pixel noir avec un voisin blanc au-dessus. | |
Image | mask_image (Image I) |
Crée un masque de l'image mettant en évidence les pixels de départ pour les contours. | |
bool | image_white (Image I) |
Vérifie si l'image est entièrement blanche. | |
Contour | algo_contour (Image I, char *file_name, char *repository) |
Calcule et extrait les contours d'une image. | |
Liste_Contours | algo_contours (Image I) |
Extrait tous les contours d'une image. | |
void | pbm_contour_to_txt (Liste_Contours c, char *file_name, char *repository) |
Sauvegarde les contours extraits dans un file_input texte. | |
void | contours_data (Liste_Contours c) |
Affiche les données des contours sur le terminal. | |
void | contours_data_simplification (Liste_Contours c) |
Affiche les données des contours simplifiés sur le terminal. | |
void | contours_data_bezier (Liste_Contours c) |
Affiche des informations sur les courbes de Bézier pour les contours sur le terminal. | |
void | contours_data_bezier3 (Liste_Contours c) |
Affiche des informations sur les courbes de Bézier de degré 3 sur le terminal. | |
void | create_postscript (Contour c, char *file_name, int height, int width) |
Génère un file_input EPS contenant la représentation graphique d'un contour en mode trait. | |
void | create_postscript_fill (Contour c, char *file_name, int height, int width) |
Génère un file_input EPS contenant la représentation graphique d'un contour en mode remplissage. | |
void | create_postscript_contours (Liste_Contours c, char *file_name, int height, int width, char *repository) |
Génère un file_input EPS pour une liste de contours donnés. | |
Contour | simplification_douglas_peucker (Tableau_Point T, int j1, int j2, double d) |
Simplifie un contour en utilisant la méthode de simplification des segments de Douglas-Peucker. | |
Point | calcul_ct_bezier2 (Bezier2 b2, double t) |
Calcule le point sur une courbe de Bézier de degré 2. | |
Point | calcul_ct_bezier3 (Bezier3 b3, double t) |
Calcule le point sur une courbe de Bézier de degré 3. | |
Bezier3 | conversion_bezier2_to_bezier3 (Bezier2 b2) |
Convertit une courbe de Bézier de degré 2 en une courbe de degré 3. | |
Bezier2 | bezier2_approximation (Contour c, int j1, int j2) |
Approxime un contour par une courbe de Bézier de degré 2. | |
double | distance_point_bezier2 (Point P1, Bezier2 b2, double ti) |
Calcule la distance entre un point et une courbe de Bézier de degré 2. | |
Contour | simplification_douglas_peucker_bezier2 (Contour C, int j1, int j2, double d) |
Simplifie un contour par la méthode des courbes de Bézier de degré 2. | |
void | create_postscript_contours_bezier2 (Liste_Contours c, char *file_name, int height, int width, char *repository) |
Crée un file_input EPS pour des courbes de Bézier de degré 2. | |
Bezier3 | bezier3_approximation (Contour c, int j1, int j2) |
Approxime un contour par une courbe de Bézier de degré 3. | |
double | distance_point_bezier3 (Point P1, Bezier3 b3, double ti) |
Calcule la distance entre un point et une courbe de Bézier de degré 3. | |
Contour | simplification_douglas_peucker_bezier3 (Contour C, int j1, int j2, double d) |
Simplifie un contour par la méthode des courbes de Bézier de degré 3. | |
void | create_postscript_contours_bezier3 (Liste_Contours c, char *file_name, int height, int width, char *repository) |
Crée un file_input EPS pour des courbes de Bézier de degré 3. | |
Déclaration des fonctions pour contour.c.
enum Orientation |
int abscissa | ( | Robot * | r | ) |
Récupère la coordonnée x de la position actuelle du robot.
r | Pointeur vers le robot concerné. |
Récupère la coordonnée x de la position actuelle du robot.
r | Pointeur vers la structure Robot. |
Calcule et extrait les contours d'une image.
I | Image à traiter. |
file_name | Nom de file_input de sauvegarde des résultats. |
repository | Chemin du dossier de sauvegarde. |
Calcule et extrait les contours d'une image.
I | Image à partir de laquelle le contour est généré. |
file_name | Nom du file_input où les points du contour seront sauvegardés. |
repository | Chemin du répertoire où le file_input sera stocké. |
Identifie le pixel de départ pour le contour, initialise un robot à cette position et trace le contour en suivant les changements d'orientation du robot.
Liste_Contours algo_contours | ( | Image | I | ) |
Extrait tous les contours d'une image.
I | Image à traiter. |
Extrait tous les contours d'une image.
I | Image à analyser. |
Cette fonction applique un masque pour isoler les contours dans l'image et les trace en utilisant un robot suivant un algorithme de suivi de bordure.
Approxime un contour par une courbe de Bézier de degré 2.
c | Contour à approximer. |
j1 | Indice de début du contour. |
j2 | Indice de fin du contour. |
Approxime un contour par une courbe de Bézier de degré 2.
c | Contour initial. |
j1 | Index de début du segment du contour. |
j2 | Index de fin du segment du contour. |
Approxime un contour par une courbe de Bézier de degré 3.
c | Contour à approximer. |
j1 | Indice de début du contour. |
j2 | Indice de fin du contour. |
Approxime un contour par une courbe de Bézier de degré 3.
c | Contour à approximer. |
j1 | Index de début du segment du contour. |
j2 | Index de fin du segment du contour. |
Calcule le point sur une courbe de Bézier de degré 2.
b2 | Courbe de Bézier de degré 2. |
t | Paramètre t, 0 ≤ t ≤ 1. |
Calcule le point sur une courbe de Bézier de degré 2.
b2 | Courbe de Bézier de degré 2. |
t | Paramètre de la courbe (0 <= t <= 1). |
Calcule le point sur une courbe de Bézier de degré 3.
b3 | Courbe de Bézier de degré 3. |
t | Paramètre t, 0 ≤ t ≤ 1. |
Calcule le point sur une courbe de Bézier de degré 3.
b3 | Courbe de Bézier de degré 3. |
t | Paramètre de la courbe (0 <= t <= 1). |
void contours_data | ( | Liste_Contours | c | ) |
Affiche les données des contours sur le terminal.
Cette fonction imprime des informations détaillées sur chaque contour de la liste, telles que le nombre de points par contour, directement sur le terminal pour une référence rapide et le débogage.
c | Liste des contours dont les données doivent être affichées. |
Affiche les données des contours sur le terminal.
c | Liste des contours à analyser. |
Calcule et affiche le nombre total de segments formés entre les points de chaque contour.
void contours_data_bezier | ( | Liste_Contours | c | ) |
Affiche des informations sur les courbes de Bézier pour les contours sur le terminal.
Spécifique à la tâche 7.1, cette fonction imprime des détails sur l'approximation des contours utilisant des courbes de Bézier de degré 2.
c | Liste des contours approximés à l'aide de courbes de Bézier. |
Affiche des informations sur les courbes de Bézier pour les contours sur le terminal.
c | Liste de contours à évaluer. |
Calcule et affiche le nombre de segments transformés en courbes de Bézier de degré 2.
void contours_data_bezier3 | ( | Liste_Contours | c | ) |
Affiche des informations sur les courbes de Bézier de degré 3 sur le terminal.
Spécifique à la tâche 7.2, cette fonction fournit des détails sur les contours approximés utilisant des courbes de Bézier de degré 3.
c | Liste des contours approximés à l'aide de courbes de Bézier. |
Affiche des informations sur les courbes de Bézier de degré 3 sur le terminal.
c | Liste de contours à évaluer. |
Calcule et affiche le nombre de segments transformés en courbes de Bézier de degré 3.
void contours_data_simplification | ( | Liste_Contours | c | ) |
Affiche les données des contours simplifiés sur le terminal.
Destinée à être utilisée après l'application d'un algorithme de simplification aux contours, cette fonction imprime le nombre réduit de points par contour sur le terminal.
c | Liste des contours simplifiés. |
Affiche les données des contours simplifiés sur le terminal.
c | Liste des contours à traiter. |
Utilisé pour simplifier la représentation des contours, par exemple en réduisant le nombre de points.
Convertit une courbe de Bézier de degré 2 en une courbe de degré 3.
b2 | Courbe de Bézier de degré 2 à convertir. |
Convertit une courbe de Bézier de degré 2 en une courbe de degré 3.
b2 | Courbe de Bézier de degré 2. |
void create_postscript | ( | Contour | c, |
char * | file_name, | ||
int | height, | ||
int | width ) |
Génère un file_input EPS contenant la représentation graphique d'un contour en mode trait.
c | Contour à représenter. |
file_name | Nom du file_input EPS. |
height | Hauteur de l'image. |
width | Largeur de l'image. |
Génère un file_input EPS contenant la représentation graphique d'un contour en mode trait.
c | Contour à représenter. |
file_name | Nom du file_input de sortie. |
height | Hauteur du file_input de sortie. |
width | Largeur du file_input de sortie. |
Génère un file_input EPS avec les points du contour connectés par des lignes droites.
void create_postscript_contours | ( | Liste_Contours | c, |
char * | file_name, | ||
int | height, | ||
int | width, | ||
char * | repository ) |
Génère un file_input EPS pour une liste de contours donnés.
c | Liste des contours. |
file_name | Nom du file_input. |
height | Hauteur de l'image. |
width | Largeur de l'image. |
repository | Emplacement de sauvegarde. |
Génère un file_input EPS pour une liste de contours donnés.
c | Liste des contours. |
file_name | Nom de base pour les file_inputs de sortie. |
height | Hauteur des file_inputs de sortie. |
width | Largeur des file_inputs de sortie. |
repository | Chemin du répertoire de sortie. |
Chaque contour de la liste est transformé en un file_input .eps indépendant.
void create_postscript_contours_bezier2 | ( | Liste_Contours | c, |
char * | file_name, | ||
int | height, | ||
int | width, | ||
char * | repository ) |
Crée un file_input EPS pour des courbes de Bézier de degré 2.
c | Liste des contours. |
file_name | Nom du file_input. |
height | Hauteur de l'image. |
width | Largeur de l'image. |
repository | Emplacement de sauvegarde. |
Crée un file_input EPS pour des courbes de Bézier de degré 2.
c | Liste des contours à traiter. |
file_name | Nom du file_input de sortie sans l'extension. |
height | Hauteur de la zone de dessin. |
width | Largeur de la zone de dessin. |
repository | Chemin du répertoire où le file_input sera sauvegardé. |
void create_postscript_contours_bezier3 | ( | Liste_Contours | c, |
char * | file_name, | ||
int | height, | ||
int | width, | ||
char * | repository ) |
Crée un file_input EPS pour des courbes de Bézier de degré 3.
c | Liste des contours. |
file_name | Nom du file_input. |
height | Hauteur de l'image. |
width | Largeur de l'image. |
repository | Emplacement de sauvegarde. |
Crée un file_input EPS pour des courbes de Bézier de degré 3.
Cette fonction génère un file_input EPS qui contient la représentation des contours d'une image, simplifiés par des courbes de Bézier de degré 3. Elle sauvegarde chaque contour en utilisant les courbes de Bézier pour une représentation vectorielle précise.
c | Liste des contours à traiter. |
file_name | Nom du file_input pour la sauvegarde. |
height | Hauteur de l'image originale. |
width | Largeur de l'image originale. |
repository | Chemin du dossier où le file_input sera sauvegardé. |
void create_postscript_fill | ( | Contour | c, |
char * | file_name, | ||
int | height, | ||
int | width ) |
Génère un file_input EPS contenant la représentation graphique d'un contour en mode remplissage.
c | Contour à remplir. |
file_name | Nom du file_input EPS. |
height | Hauteur de l'image. |
width | Largeur de l'image. |
Génère un file_input EPS contenant la représentation graphique d'un contour en mode remplissage.
c | Contour à représenter. |
file_name | Nom du file_input de sortie. |
height | Hauteur du file_input de sortie. |
width | Largeur du file_input de sortie. |
Génère un file_input EPS avec les points du contour connectés par des lignes droites et le contour rempli.
Calcule la distance entre un point et une courbe de Bézier de degré 2.
P1 | Point à mesurer. |
b2 | Courbe de Bézier de degré 2. |
ti | Paramètre t, 0 ≤ t ≤ 1, pour le calcul sur la courbe. |
Calcule la distance entre un point et une courbe de Bézier de degré 2.
P1 | Point à partir duquel mesurer la distance. |
b2 | Courbe de Bézier de degré 2. |
ti | Paramètre de la courbe de Bézier indiquant le point spécifique à mesurer. |
Calcule la distance entre un point et une courbe de Bézier de degré 3.
P1 | Point à mesurer. |
b3 | Courbe de Bézier de degré 3. |
ti | Paramètre t, 0 ≤ t ≤ 1, pour le calcul sur la courbe. |
Calcule la distance entre un point et une courbe de Bézier de degré 3.
P1 | Point pour lequel calculer la distance. |
b3 | Courbe de Bézier de degré 3. |
ti | Valeur du paramètre t. |
Trouve les coordonnées du premier pixel noir avec un voisin blanc au-dessus.
I | Image à examiner. |
Trouve les coordonnées du premier pixel noir avec un voisin blanc au-dessus.
I | Image à analyser. |
Cette fonction recherche le premier pixel noir ayant un voisin blanc dans l'image, ce qui indique le début d'un contour potentiel.
bool image_white | ( | Image | I | ) |
Vérifie si l'image est entièrement blanche.
I | Image à vérifier. |
Vérifie si l'image est entièrement blanche.
I | Image à vérifier. |
Cette fonction parcourt chaque pixel de l'image pour déterminer si tous sont blancs.
void init_robot | ( | Robot * | r, |
int | x, | ||
int | y, | ||
Orientation | o ) |
Initialise le robot à une position donnée avec une orientation spécifique.
r | Pointeur vers le robot à initialiser. |
x | Position horizontale de départ du robot. |
y | Position verticale de départ du robot. |
o | Orientation initiale du robot. |
Initialise le robot à une position donnée avec une orientation spécifique.
r | Pointeur vers la structure Robot à initialiser. |
x | Coordonnée x de départ du robot. |
y | Coordonnée y de départ du robot. |
o | Orientation initiale du robot. |
Cette fonction assigne la position et l'orientation initiales au robot. Elle prépare le robot à naviguer dans l'image selon les consignes qui lui seront ultérieurement fournies.
Crée un masque de l'image mettant en évidence les pixels de départ pour les contours.
I | Image originale. |
Crée un masque de l'image mettant en évidence les pixels de départ pour les contours.
I | Image originale à masquer. |
Cette fonction crée une image de masque indiquant les positions des pixels noirs qui sont des points de départ de contours.
void move_forward | ( | Robot * | r | ) |
Avance le robot d'une position dans la direction de son orientation actuelle.
r | Pointeur vers le robot à déplacer. |
Avance le robot d'une position dans la direction de son orientation actuelle.
r | Pointeur vers la structure Robot. |
Cette fonction modifie les coordonnées du robot en fonction de son orientation actuelle. Elle permet au robot de progresser d'une unité dans la direction vers laquelle il est orienté.
Calcule la nouvelle orientation du robot en fonction de son environnement immédiat.
r | Pointeur vers le robot. |
x | Coordonnée x de la case à examiner. |
y | Coordonnée y de la case à examiner. |
I | Image dans laquelle le robot évolue. |
Calcule la nouvelle orientation du robot en fonction de son environnement immédiat.
r | Pointeur vers le robot dont l'orientation doit être mise à jour. |
x | Coordonnée x du pixel actuel du robot. |
y | Coordonnée y du pixel actuel du robot. |
I | Image dans laquelle le robot opère. |
Cette fonction ajuste l'orientation du robot en analysant les pixels voisins immédiats. Le robot pivote en fonction de la couleur des pixels adjacents pour suivre le contour dans l'image.
int ordinate | ( | Robot * | r | ) |
Récupère la coordonnée y de la position actuelle du robot.
r | Pointeur vers le robot concerné. |
Récupère la coordonnée y de la position actuelle du robot.
r | Pointeur vers la structure Robot. |
Orientation orient | ( | Robot * | r | ) |
Récupère l'orientation actuelle du robot.
r | Pointeur vers le robot. |
Récupère l'orientation actuelle du robot.
r | Pointeur vers la structure Robot. |
void pbm_contour_to_txt | ( | Liste_Contours | c, |
char * | file_name, | ||
char * | repository ) |
Sauvegarde les contours extraits dans un file_input texte.
c | Liste des contours à sauvegarder. |
file_name | Nom du file_input. |
repository | Chemin du dossier de sauvegarde. |
Sauvegarde les contours extraits dans un file_input texte.
c | Liste des contours à enregistrer. |
file_name | Nom du file_input de sortie. |
repository | Chemin du dossier où le file_input sera enregistré. |
Crée un file_input texte pour chaque contour et y écrit les coordonnées des points.
void position | ( | Robot * | r, |
int * | x, | ||
int * | y ) |
Récupère la position actuelle du robot.
r | Pointeur vers le robot dont la position est demandée. |
x | Pointeur pour stocker la coordonnée x de la position. |
y | Pointeur pour stocker la coordonnée y de la position. |
Récupère la position actuelle du robot.
r | Pointeur vers la structure Robot. |
x | Pointeur vers la variable où sera stockée la position x actuelle. |
y | Pointeur vers la variable où sera stockée la position y actuelle. |
Cette fonction permet d'accéder aux coordonnées actuelles du robot.
void position_forward | ( | Robot * | r, |
int * | x, | ||
int * | y ) |
Récupère la position de la case directement devant le robot.
r | Pointeur vers le robot. |
x | Pointeur pour stocker la coordonnée x de la case devant. |
y | Pointeur pour stocker la coordonnée y de la case devant. |
Récupère la position de la case directement devant le robot.
r | Pointeur vers le robot dont on souhaite connaître la position devant. |
x | Pointeur vers l'entier où stocker la coordonnée x du pixel devant le robot. |
y | Pointeur vers l'entier où stocker la coordonnée y du pixel devant le robot. |
Cette fonction calcule la position du pixel devant le robot en fonction de son orientation actuelle et met à jour les valeurs pointées par x et y avec les nouvelles coordonnées calculées.
Contour simplification_douglas_peucker | ( | Tableau_Point | T, |
int | j1, | ||
int | j2, | ||
double | d ) |
Simplifie un contour en utilisant la méthode de simplification des segments de Douglas-Peucker.
T | Tableau de points du contour. |
j1 | Indice de début du segment à simplifier. |
j2 | Indice de fin du segment à simplifier. |
d | Seuil de distance pour la simplification. |
Simplifie un contour en utilisant la méthode de simplification des segments de Douglas-Peucker.
T | Tableau de points du contour. |
j1 | Index de début de l'intervalle à simplifier. |
j2 | Index de fin de l'intervalle à simplifier. |
d | Distance seuil pour la simplification. |
Cet algorithme réduit le nombre de points dans un contour en préservant sa forme générale.
Simplifie un contour par la méthode des courbes de Bézier de degré 2.
C | Contour à simplifier. |
j1 | Indice de début du contour. |
j2 | Indice de fin du contour. |
d | Seuil de distance pour la simplification. |
Simplifie un contour par la méthode des courbes de Bézier de degré 2.
C | Contour à simplifier. |
j1 | Indice de début de segment du contour. |
j2 | Indice de fin de segment du contour. |
d | Distance seuil pour la simplification. |
Simplifie un contour par la méthode des courbes de Bézier de degré 3.
C | Contour à simplifier. |
j1 | Indice de début du contour. |
j2 | Indice de fin du contour. |
d | Seuil de distance pour la simplification. |
Simplifie un contour par la méthode des courbes de Bézier de degré 3.
Cette fonction simplifie un contour en utilisant une approximation par une courbe de Bézier de degré 3, en appliquant l'algorithme de Douglas-Peucker pour calculer la distance entre les points du contour et la courbe de Bézier. Elle vise à réduire le nombre de points tout en conservant la forme générale du contour.
C | Contour à simplifier. |
j1 | Indice de début du segment de contour à traiter. |
j2 | Indice de fin du segment de contour à traiter. |
d | Seuil de distance pour la simplification. |
void turn_left | ( | Robot * | r | ) |
Tourne le robot à gauche (changement d'orientation).
r | Pointeur vers le robot à tourner. |
Tourne le robot à gauche (changement d'orientation).
r | Pointeur vers la structure Robot. |
Cette fonction ajuste l'orientation du robot en tournant à gauche, ce qui modifie son orientation de 90 degrés dans le sens antihoraire.
void turn_right | ( | Robot * | r | ) |
Tourne le robot à droite (changement d'orientation).
r | Pointeur vers le robot à tourner. |
Tourne le robot à droite (changement d'orientation).
r | Pointeur vers la structure Robot. |
Cette fonction ajuste l'orientation du robot en tournant à droite, ce qui modifie son orientation de 90 degrés dans le sens horaire.