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