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