PROGRAMMATION SCIENTIFIQUE EN C
PRO-1027
Généralités
Présentation du plan de cours– Disponibilité
– Références Environnement de travail
– Langage C sur SUN (exemples de programme)
– Utilitaire make
– Utilitaire d’affichage
Environnement de travail
Le langage C est utilisé comme langage de programmation de base pour le cours– Exemples de programmes en C
(/u/dmatensr/meunier/pro1027/exemplesMAKE/exemples_meteo)
– Images utilisées dans les exemples(/u/dmatensr/meunier/pro1027/images)
Environnement de travail (langage C)
Étapes de segmentation d’une image pour la détection des perturbations– Lire l’image source dans un vecteur
– Créer le vecteur contenant l’image résultante
– Traiter l’image source de façon à détecter les perturbations
– Écrire l’image résultante
– Libérer la mémoire
Environnement de travail (langage C)
Image source
Environnement de travail (langage C)
Image résultante possible
Environnement de travail (langage C)
Diagramme de contrôle
detecter_perturbation_MAIN_VEC
detecter_perturbation_VEC
creer_image_destination_VEC
lire_image_source_VEC
ecrire_image_destination_VEC
liberer_memoire_VEC
argv h l
argv h l
imageSimageDh l si ss
argvimageD h l
imageS imageD
argc argv
Environnement de travail (langage C)
Rappel sur les pointeurs
ptr
char *ptr;char car;
ptr = (unsigned char *) malloc(8);car = ptr[1];car = *(ptr+1);
0 1 2 3 4 5 6 7
Environnement de travail (langage C)
Rappel sur les pointeurs
ptr
0 1 2 3 4 5 6 7
0
1
2
3
4
5
Environnement de travail (langage C)
Rappel sur les pointeurs
char **ptr; /* *ptr[] */char *ptr_char; /* ptr_char[] */char car;
ptr = (unsigned char **) malloc(sizeof(unsigned char *) * 6);
ptr [1] = (unsigned char *) malloc(sizeof(unsigned char) * 8);
ptr_char = ptr [1]; /* = *(ptr+1); */
car = ptr [1] [1]; /* = *(*(ptr+1)+1); */car = ptr_char [1]; /* = *(ptr_char+1); */
Environnement de travail (langage C)
Programme principal (detecter_perturbation_MAIN_VEC)
/* LA CONDITIONNELLE */if(argc == NBARG){ /* CONDITION VRAIE */ h = atoi(argv[3]); /* CONVERTION DE TYPE */ } else{ /* CONDITION FAUSSE */ printf(“\n Nombre …..”); exit(1); /* SORTIR DU PROGRAMME */ }
Environnement de travail (langage C)
Fonction lire_image_source_VEC()/* OUVERTURE, LECTURE ET FERMETURE DE FICHIER */FILE fp1;
fp1 = fopen(argv[1],“r”); fread(vec,sizeof(unsigned char),h*l,fp1);fclose(fp1);
/* RETOURNER LE POINTEUR SUR L’IMAGE */return(vec);
Environnement de travail (langage C)
Fonction lire_image_source_VEC()0 1 2 3 4 5 6 7
0
12345
0 1
Tableau logique
Vecteur physique
Environnement de travail (langage C)
Accès à un emplacement d’un tableau stocké dans un vecteur
int i,j;unsigned char pixel;
i = j = 1;pixel = vec[i*8+j]; /* i est le numéro de rangée et j celui de la colonne */
Environnement de travail (langage C)
Procédure detection_perturbation_VEC()
/* LA BOUCLE POUR */for(i=0;i<h*l;i++){}
Environnement de travail (langage C)
Procédure ecrire_image_destination_VEC()/* OUVERTURE, ECRITURE ET FERMETURE DE FICHIER */FILE fp1;
fp1 = fopen(argv[2],“w”); fwrite(imageD,sizeof(unsigned char),h*l,fp1);fclose(fp1);
Environnement de travail (langage C)
Procédure liberer_memoire_VEC()/* LIBERER LA MEMOIRE */
free(imageS);
Environnement de travail (langage C)
Fichier traitement.h– Contient les constantes (ex: NBARG)
– Et les prototypes des en-têtes de fonctions et procédures
Environnement de travail (langage C)
Utilitaire make– Permet la compilation séparée des procédures et
fonctions
– Permet la création de librairies
– Permet de créer un fichier exécutable
Environnement de travail (langage C)
Utilitaire make (utilisation)– Éditer le fichier Makefile
– Pour lancer l’utilitaire make » taper make
Environnement de travail (langage C)
Utilitaire d’affichage d’images– Convertir les images .raw en images .pgmrawtopgm 842 740 /u/dmatensr/meunier/pro1027/images/g8ir_080198.raw > r.pgm
– Affichage des images
xv r.pgm
Environnement de travail (langage C)
Exemple d’utilisation du programme
Nom du fichier exécutable: detecter_perturbation_MAIN_VEC
argument 1: /u/dmatensr/meunier/pro1027/images/g8ir_080198.rawargument 2:
/u/dmatensr/meunier/pro1027/images/g8ir_080198_SEG.rawargument 3: 740argument 4: 842argument 5: 190argument 6: 195
Environnement de travail (langage C)
Exemple d’utilisation du programme
/u/dmatensr/meunier/pro1027/images/g8ir_080198.raw
Environnement de travail (langage C)
Exemple d’utilisation du programme
/u/dmatensr/meunier/pro1027/images/g8ir_080198_SEG_190_195.raw
Environnement de travail (langage C)
Exemple d’utilisation du programme
/u/dmatensr/meunier/pro1027/images/g8ir_080198_SEG_205_215.raw