Dans cette partie nous allons ecrire le code C en respectant le decoupage vu precedemment:
Pour le threshold on transcrit l'algorythme propose precedemment:
Debut du CODE.
/* -main_variable_list */ IMAGE img; /* pour contenir toutes les donnees d'une image */ unsigned char *pt; /* pointeur pour les points de l'image*/ int i; /* indice du point courant */ /* -main_variable_list_end */ /* -main_before_lib_call */ /* lecture de l'image et test de reussite */ if ((img = ReadImage( clui_info->i_file )) == NULL) { fprintf(stderr,"threshold: Erreur de lecture sur le fichier %s\n", clui_info->i_file); exit(1); } /* verfication du type de l'image */ if (img->depth != 8) { /* point code sur 8 bits ? */ fprintf(stderr,"threshold: Les pixels de l'image %s doivent etre codees sur 8 bits\n", clui_info->i_file); exit(1); } if (img->nplane != 1) { /* image 2D ? */ fprintf(stderr,"threshold: L'image %s ne doit avoir qu'un seul plan (2D) et elle en a %d\n", clui_info->i_file, img->nplane); exit(1); } /* -main_before_lib_call_end */ /* -main_library_call */
/* Traitement */ pt = img->imagedata; /* fait pointer sur les donnees de l'image */ for (i = 0 ; i < (img->ncol * img->nlig) ;i++) { if (*pt > clui_info->level_int) /* test du seuilhaut */ *pt = 255; /* allumer le point courant */ else *pt = 0; /* etteindre le point courant */ pt++; /* point suivant * }
/* -main_library_call_end */ /* -main_after_lib_call */
/* sauvegarde de l'image + test de reussite */ if (!WriteImage( clui_info->o_file, img )) { fprintf(stderr,"threshold: Erreur d'ecriture du fichier %s",clui_info->o_file,); exit(1); }
/* -main_after_lib_call_end */
Des questions ? Eric Llorens.