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