Atelier C++ bibliothèque image
Transcription
Atelier C++ bibliothèque image
Atelier C++ bibliothèque image M2 SIC Pro G. Mostafaoui, P.Laroque 9 septembre 2014 1 Objectifs de l'atelier Le but de l'atelier est de constituer une petite bibliothèque de fonctions C++ qui serviront dans le cadre des projets et autres ateliers faisant intervenir du traitement d'images simple. On créera, pour les fonctionnalités décrites ci-dessous, un ensemble de fonctions que l'on placera dans une bibliothèque statique (.a .lib); dans une bibliothèque dynamique (.so .dll); 2 Constitution des équipes Le travail est à réaliser par binômes. 1 3 Partie programmation (P. Laroque) 3.1 Librairies statiques Pour rappel, sous Linux l'utilisation d'une librairie statique passe par les étapes suivantes : 1. compilation des chiers sources cc -c f1.c ... fN.c 2. création de la bibliothèque ar cr libtruc.a f1.o ... fN.o 3. création de l'exécutable cc -static -o prog module1.o ... moduleP.o -L. -ltruc On peut vérier le contenu (chiers) de la bibliothèque par la commande ar t libtruc.a et la liste des fonctions par nm libtruc.a 3.1.1 Librairies dynamiques Pour rappel, sous Linux l'utilisation d'une librairie dynamique passe par les étapes suivantes : 1. compilation des chiers sources cc -c -fPIC f1.c ... fN.c (ne pas oublier l'option -fPIC, de la librairie dynamique) 2. création de la bibliothèque Position-Independent Code , nécessaire à l'utilisation cc -shared -olibtruc.so f1.o ... fN.o 3. Vérication du fait que le répertoire où se trouve la librairie dynamique est bien 2 dans LD_LIBRARY_PATH : export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH 4. création de l'exécutable cc -o prog module1.o ... moduleP.o -L. -ltruc On peut vérier le contenu de la bibliothèque par la commande nm libtruc.so | grep ' T ' 4 Partie algorithmes image (G. Mostafaoui) L'un des objectifs de ce premier atelier est de vous permettre de construire une première bibliothèque "personnelle" à enrichir au fur et à mesure des prochains ateliers, TPs, Projets etc. Il vous est donc demandé ici d'intégrer à votre bibliothèque les fonctions suivantes de traitement d'image : une fonction LoadPGM de lecture d'images de type PGM (en binary) une fonction SavePGM d'écriture d'images de type PGM (en binary) une fonction LoadPPM de lecture d'images de type PPM (en binary) une fonction SavePPM d'écriture d'images de type PPM (en binary) une fonction de calcul de gradient avec les masques de Sobel, le résultat (module du grandient) sera enregistré sous format PGM (Attention aux bornes des valeurs de gradient...) Vous pouvez vous aider des TPs de TSI et STI de M1, notamment des fonctions de lecture/écriture d'images de la bibliothèque NRC. 3