Page de base
Transcription
Page de base
Page de base 1 sur 2 https://extranet.polytech.univ-orleans.fr/C10/Traitement%20des%20i... Mon site Accueil Services Formations Relations industrielles Relations internationales Relations scientifiques Base de Données Vie associative Aide Informations Sites Logiciel IMA IMA est une bibliothèque de Traitement d’Image mise gracieusement à la disposition des élèves de l’ESPEO. Écrite en C++, elle manipule principalement (mais non exclusivement) des images à niveaux de gris codées sur 8 bits. 1. La bibilothèque IMA est composée d’une classe principale CImage, qui hérite de deux autres classes : CTab2D, générique, qui simplifie l’utilisation de tableaux bi-dimensionnels, et CErreur, qui centralise l’affichage de messages d’erreur. Pour utiliser une image dans un fichier C++, il suffit de déclarer un objet de la classe CImage, qui dispose de quatre constructeurs : sans paramètre, avec un paramètre (objet de la classe CImage [constructeur copie]), avec deux paramètres (hauteur et largeur), avec trois paramètres (hauteur, largeur et tableau de pixels). Exemple : # include <image.h> CImage ima1; CImage ima2 (256, 328); Se reporter au fichier Image.h pour obtenir la liste complète des méthodes de la classe CImage. 2. Quatre classes complémentaires permettent d’initialiser (sauvegarder) un objet image à partir d’un (dans un) fichier stocké dans un des quatre formats standards ci-dessous : CBmp pour lire et écrire des images au format Bitmap de Windows, CGdr pour lire et écrire des images au format du Groupe de Recherche du Centre National de la Recherche Scientifique (CNRS), CPcx pour lire et écrire des images au format PC de Paintbrush, CTiff pour lire et écrire des images au format Tiff (Tag Image File Format). Toutes ces classes s’utilisent de la même manière, à partir de deux fonctions Read[Bmp] [Gdr] [Pcx] [Tiff] ou Write[Bmp] [Gdr] [Pcx] [Tiff] à deux paramètres : un nom de fichier et un objet de la classe CImage. Exemple : # include <image.h> # include <bmp.h> # include <pcx.h> CImage ima; ReadBmp ("Laser.bmp", ima); WritePcx ("Laser.pcx", ima); 3. De nombreuses classes de traitement complètent les classes de base. Perpétuellement enrichies et mises à jour, ces classes sont regroupées dans les répertoires include et lib de la bibliothèque. A titre d’illustration, on peut citer les classes CFiltre qui réalise des filtrages linéaires et non linéaires, CMorpho qui regroupe des méthodes de Morphologie Mathématique, CRegion qui segmente les images par une approche région, etc. Toutes ces classes ont été écrites de manière à réduire au maximum les efforts de programmation. Exemple : # include <filtre.h> CFiltre fil (3, 3, (TFIL*) PREWX); ima = fil.Filtre (ima); 4. La bibliothèque IMA est accompagnée de fonctions qui gèrent l’affichage d’images. Sur PC Windows, une application MFC sert de squelette à la manipulation de IMA. Sur PC Linux, la fonction disp_image() du fichier udisget.cpp utilise la bibliothèque X11 pour afficher des images dans tout exécutable C++. 5. Emplacement de la bibliothèque IMA : Sur PC-Windows, IMA est placée dans le répertoire : //Espeo-appli/Applications/Bibliothèque ESPEO/Modules/Traitement des Images, Sur PC-Linux, IMA se trouve dans le répertoire : /home/eider/biblio/tdi. 6. Exemple de fichier Makefile pour compiler un programme utilisant IMA (PC Linux) CC CFLAGS DIR LIB_DIR INC_DIR = g++ = -g = /home/eider/biblio/tdi = $(DIR)/lib = $(DIR)/include 22/12/2006 22:57 Page de base 2 sur 2 https://extranet.polytech.univ-orleans.fr/C10/Traitement%20des%20i... CPPFLAGS LIBS LDFLAGS COMPILE LINK p: = -I$(INC_DIR) = -lima -ltfd -lX11 -lm = -L$(LIB_DIR) -L/usr/X11R6/lib $(LIBS) = $(CC) $(CFLAGS) $(CPPFLAGS) -c = $(CC) main.o $(LINK) main.o $(LDFLAGS) -o $@ main.o: main.cpp $(COMPILE) main.cpp 7. Exemple de fichier utilisant la bibliothèque IMA (PC Linux) #include <gdr.h> #include <image.h> #include <display.h> main() { CImage ima; ReadGdr("/home/eider/biblio/tdi/images/ims/bureau.ims", ima); disp_image(ima); } 22/12/2006 22:57