PROGRAMMATION SCIENTIFIQUE EN C PRO-1027
Généralités u Présentation du plan de cours –Disponibilité –Références u Environnement de travail –Langage C sur SUN (exemples de programme) –Utilitaire make –Utilitaire daffichage
Environnement de travail u 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) u Étapes de segmentation dune image pour la détection des perturbations –Lire limage source dans un vecteur –Créer le vecteur contenant limage résultante –Traiter limage source de façon à détecter les perturbations –Écrire limage résultante –Libérer la mémoire
Environnement de travail (langage C) u Image source
Environnement de travail (langage C) u Image résultante possible
Environnement de travail (langage C) u 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 imageS imageD h l si ss argv imageD h l imageS imageD argc argv
Environnement de travail (langage C) u Rappel sur les pointeurs ptr char *ptr; char car; ptr = (unsigned char *) malloc(8); car = ptr[1]; car = *(ptr+1);
Environnement de travail (langage C) u Rappel sur les pointeurs ptr
Environnement de travail (langage C) u 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) u 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) u 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 LIMAGE */ return(vec);
Environnement de travail (langage C) u Fonction lire_image_source_VEC() Tableau logique Vecteur physique
Environnement de travail (langage C) u Accès à un emplacement dun 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) u Procédure detection_perturbation_VEC() /* LA BOUCLE POUR */ for(i=0;i<h*l;i++) { }
Environnement de travail (langage C) u 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) u Procédure liberer_memoire_VEC() /* LIBERER LA MEMOIRE */ free(imageS);
Environnement de travail (langage C) u 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) u 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) u Utilitaire make (utilisation) –Éditer le fichier Makefile –Pour lancer lutilitaire make »taper make
Environnement de travail (langage C) u Utilitaire daffichage dimages –Convertir les images.raw en images.pgm rawtopgm /u/dmatensr/meunier/pro1027/images/g8ir_ raw > r.pgm –Affichage des images xv r.pgm
Environnement de travail (langage C) u Exemple dutilisation du programme Nom du fichier exécutable: detecter_perturbation_MAIN_VEC argument 1: /u/dmatensr/meunier/pro1027/images/g8ir_ raw argument 2: /u/dmatensr/meunier/pro1027/images/g8ir_080198_SEG.raw argument 3: 740 argument 4: 842 argument 5: 190 argument 6: 195
Environnement de travail (langage C) u Exemple dutilisation du programme /u/dmatensr/meunier/pro1027/images/g8ir_ raw
Environnement de travail (langage C) u Exemple dutilisation du programme /u/dmatensr/meunier/pro1027/images/g8ir_080198_SEG_190_195.raw
Environnement de travail (langage C) u Exemple dutilisation du programme /u/dmatensr/meunier/pro1027/images/g8ir_080198_SEG_205_215.raw