Acceuil
Transparents COURS DE TRAITEMENT D'IMAGES
Planning
Cool Image (CImg)
C++ tutorial
Le Package ModuleVision
Images PGM
Projet
Pierre Kornprobst (INRIA)
Bienvenus à tous!

Notre cours de traitement d'images va bientôt commencer. Pour vous y préparer, voici quelques informations & recommandations:

1) La priorité: Révisez votre C++

Vous aller coder en C++. Si vous n'êtes pas trop familier avec, je vous invite à réviser vos cours et revoir les notions importantes. Même si nous n'aurons pas à faire de programmation très sophistiquée, il vous sera TRÈS UTILE d'être à jour la-dessus, pour les exercices et le projet.

Il existe de nombreux ouvrages sur le sujet. Je vous indique également quelques liens: The Cplusplus.com tutorial, some slides on C and C++, a FAQ (french), C++ tutorial for C users

Aussi, bien pratique pour réaliser de belles docs tout en commentant votre code: Doxygen! Pour en savoir plus, il y a les FAQs, et un descriptif des principales commandes.


2) Vous pouvez tester dores et déjà tester la librairie image que vous utiliserez

Il s'agit de la libraire Cool Image, alias CImg, developed by David Tschumperlé. (voir aussi la documentation en PDF). Cette librairie offre de nombreux avantages, en terme de portabilité notamment, et elle possède un grand nombre de fonctions très utiles. Pour en avoir une idée, regardez ces quelques transparents sur la librairie.

Le reflexe à développer: Avant de recoder de votre côté, regarder ce qui est déjà disponible dans la librairie! Cela vous fera gagner beaucoup de temps. En particulier, vous y trouverez:

   1) Different kinds of loops over :
   - the pixel buffer -> cimg_map(img,ptr,T)
   - image dimensions -> cimg_mapXYZV(img,x,y,z,v)
   - over interior regions and borders -> cimg_imap...(...) / cimg_bmap...(...)
   - neigborhoods -> cimg_map3x3(img,x,y,z,v,I)

   2) Pixel accessors which take into account :
   - specific boundary conditions -> ex: ima.neumann_pix2d(x,y,z,v)
   - sub pixel values -> ex: ima.cubic_pix2d(x,y,z,v);

   3) Statistics of an images via CImgStats
   ima.get_stats().min, etc

   4) Arithmetic and boolean operators
   =,+,^,% etc

   5) Mathematical operations which can be combined
   min, max, div, mult, abs, pow, get_*, get_histogram, get_gradientXY, etc

   6) Image transformations
   fill, normalize, threshold, rotate, resize, crop, get_*

   7) Color conversion functions

   8) Drawing functions
   circle, ellipse, rectangle, text, etc

   9) Filtering functions
   convolve, deriche, blur, erode, dilate, get_*

   10) Matrix computation
   eigen values, det, cross product, etc

   11) Displays using class CImgDisplay

   12) Input/Output
   nearly all formats (thx image magic) + inr + asc

A faire donc: se promener dans le site web de CImg, passer un peu de temps pour regarder les differentes classes disponibles, et regarder PRINCIPALEMENT les classes CImg et CImgDisplay qui seront celles que vous utiliserez le plus.


3) Résumé de quelques notions et algorithmes classiques en traitement d'images

En suivant ce lien, vous trouverez un document PDF qui explique en francais les notion principales de base que nous traiterons. Je vous demanderai de lire ce document. Si vous en avez le temps, et si vous voulez prendre un peu d'avance, vous pouvez déjà commencer :-) (cet article est publié dans l'encyclopédie de l'informatique chez Vuibert)


4) Les liens utiles pour la suite