You are on page 1of 22

ENSICAEN 6, bd marchal Juin F-14050 Caen cedex 4

Spcialit Informatique - 1re anne Rapport de mini-projet

Traitement d'images avec OpenCV

Gildas CHABOT Baptiste GIROUD

Suivi : Luc BRUN

2009 - 2010

Table des matires

1 2

Introduction Bibliothque Graphique

4 5

2.1

Dnition 2.1.1 2.1.2 2.1.3

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 5 5 5 5 6
7

Les bibliothques de trac d'lments 2D . . . . . . . . . . . . . . . Les bibliothques d'interface utilisateur . . . . . . . . . . . . . . . . Les bibliothques 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2 2.3
3

Choix d'une bibliothque de trac d'lments 2D . . . . . . . . . . . . . . . Choix d'une bibliothque d'interface utilisateur

Histoire d'OpenCV et GTK

3.1 3.2
4

OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GTK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7 7
9

Le logiciel ralis : CGimp

4.1 4.2

Copie d'cran Fonctionnalits 4.2.1 4.2.2 4.2.3

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9 9 9 9 10
11

Gestion des images

Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eets de couleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Algorithmes

5.1

Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 5.1.2 Rotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Redimensionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . Filtre personnalis (LUT) Luminosit/Contraste Inversion des couleurs Flou/Nettet . . . . . . . . . . . . . . . . . . . . . . .

11 11 11 13 13 14 15 15 17 17
19

5.2

Eets de couleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Achage de l'histogramme . . . . . . . . . . . . . . . . . . . . . . . Etirement d'histogramme

Organisation du travail

6.1 6.2 6.3


7

Chronologie

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19 20 20
21

Rpartition du travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Problmes/Solutions

Conclusion

Chapitre 1 Introduction

Intitul du projet

Le but du projet est de raliser une petite interface en Gtk permettant d'acher une image et d'y appliquer un certain nombre de ltres (lissage, rhaussement de contraste,...). Le chargement de l'image et les ltres seront raliss avec OpenCV. On tudiera galement la possibilit de raliser ses traitements en temps rel sur des images issues de Web Cam.
Introduction

L'informatique permet d'automatiser des tches, c'est mme sa fonction principale. Cela permet de traiter un nombre d'informations immensement plus consquent que ne pourrait jamais le raliser un homme. Le traitement des images s'est donc trouv jamais modi avec l'arrive des premiers ordinateurs performants. Il est dsormais possible de traiter autorisant un panel de transformation quasi-inni ! La cration de logiciels de traitement d'image est aujourd'hui particulirement ais grce aux bibliothques graphiques.

chaque

pixel de l'image,

Infos pratiques

Site web sur lequel on peut tlcharger le logiciel et consulter les sources :

//www.ecole.ensicaen.fr/~chabot/projetOpenCV/
Bibliographie et crdits photographiques en n de rapport.

http:

Chapitre 2 Bibliothque Graphique

2.1 Dnition
Les biliothques graphiques sont l'ensemble des fonctions permettant d'acher des lments graphiques, l'inverse des fonctions consoles. L'immense majorit des utilisateurs de l'informatique ne touchant jamais un terminal, on peut se douter de la trs grande importance de ces bibliothques. Rare sont les systmes d'exploitation qui ne sont pas fournis avec une bibliothque graphique intgre (au niveau application ou mme au niveau noyau). Devant la diversit de ces bibliothques, il faut marquer 3 catgories :

2.1.1 Les bibliothques de trac d'lments 2D


Elles se contentent de tracer des formes gomtriques basiques : cercle, ligne ou point. Un dessin point par point, c'est dire pixel par pixel permet d'acher notamment des images. Ces bibliothques ont un trs faible degr d'abstraction (fonctions de bas niveau), elle sont donc trs peu souvent utilises seules. Exemples : Cairo, Quartz, GDI, OpenCV dans une certaine mesure.

2.1.2 Les bibliothques d'interface utilisateur


Les interfaces utilisateur ont, elles, un grand degr d'abstraction. Elles ne permettent pas d'acher n'importe quelle forme : elles se limitent des bloc dnis, basiquement, des fentre, menus, boutons. Elles rendent la cration d'interfaces graphiques noyau de Windows).

standard

trs

aise. Exemples : Motif, Qt, GTK (qui se base sur Cairo), GNOME, Win32 (intgre au

2.1.3 Les bibliothques 3D


Se concentre sur le calcul de l'achage de formes en 3 dimensions. Principales bibliothques : OpenGL et DirectX.

2.2 Choix d'une bibliothque de trac d'lments 2D


Nous avons utilis OpenCV pour le traitement bas niveau, c'est dire la lecture/criture pixel par pixel. Nanmoins, voici quelques bibliothques graphiques concurrentes :
Quartz et GDI : Quartz est le nom de la bibliothque grant l'achage 2D mais il n'est

fonctionnel que sur Mac OS X. De mme, GDI est un sous-systme de Microsoft Windows.

CHAPITRE 2.

BIBLIOTHQUE GRAPHIQUE

Cairo est une bibliothque logicielle graphique libre et multi-plateformes qui dnit une

API de rendu vectoriel 2D indpendante du matriel. Elle est cependant essentiellement utilise pour la ralisation de dessin ou d'image vectoriels.
OpenCV propose ces oprations en traitement bas niveau des images : lecture et a-

chage d'une image ou d'une vido (chier ou camra), criture sur le disque. Elle utilise le C et elle est libre. Enn, c'est aussi pour ses grandes capacits dans le traitement des pixels que nous avons t amens l'utiliser.

2.3 Choix d'une bibliothque d'interface utilisateur


Bien que OpenCV ore quelques fonctionnalits basiques en ce qui concerne l'interface utilisateur nous avons prfr utiliser une bibliothque graphique exclusivement destin cet usage. Les deux principales bibliothques multi-plateformes sont GTK+ et Qt.
Qt est notamment connue pour tre la bibliothque sur laquelle repose l'environnement

graphique KDE, l'un des environnements de bureau les plus utiliss sur Linux. C'est une bibliothque dont le langage de programmation est le C++ donc inadapte pour notre projet de premire anne.
GTK+ est crit en langage C mais peut s'orienter vers la programmation oriente objet.

GTK+ est l'interface de dirents environnements de bureau comme GNOME, Xfce ou encore ROX ce qui permet une intgration parfaite. Cest une bibliothque libre et multi-plateformes. C'est donc la bibliothque que nous avons choisi pour le projet.

Chapitre 3 Histoire d'OpenCV et GTK

3.1 OpenCV
OpenCV (Open Computer Vision) est une bibliothque graphique libre. Elle est conue pour le traitement d'image en temps rel. Ociellement lanc en 1999, le projet OpenCV est dvelopp initialement par Intel pour optimiser les applications gourmandes en temps processeur. Cela faisait partie d'une srie de projets tel que l'achage d'un mur en 3 dimensions. Les principaux acteurs du projet sont l'quipe de dveloppement de bibliothque de chez Intel ainsi qu'un certain nombre d'experts dans l'optimisation de chez Intel Russie. Les objectifs de base du projet taient :  Faire des recherches sur la vision par ordinateur en vue de fournir un logiciel libre et optimis.  tablir une infrastructure commune s'appuyant sur les dveloppeurs pour obtenir un code plus lisible et transfrable.  Continuer dvelopper en rendant le code portable et permettre des performances optimises gratuites avec une licence qui est libre de toutes contraintes commerciales. La premire version alpha d'OpenCV fut prsente lors de la confrence IEEE sur la vision par ordinateur et la reconnaissance de formes en 2000. Aprs cela, cinq versions bta ont t publies entre 2001 et 2005 et la premire version 1.0 a t publie en 2006. Au milieu de l'anne 2008, OpenCV obtient l'appui de la socit de robotique Willow Garage et la bibliothque est encore dveloppe ce jour. Une version 1.1 est sorti en octobre 2008 et un livre crit par deux auteurs d'OpenCV et publi par O'Reilly Media est sorti sur le march ce mme mois. La deuxime version majeure d'OpenCV ne en octobre 2009. Il s'agit d'OpenCV 2 incluant des changements majeurs au niveau du langage C++ servant facilit le dveloppement de nouvelles fonctions et amliorant les performances.

3.2 GTK
GTK a t conue et utilise pour le logiciel GNU Image Manipulation Program (GIMP) en remplacement de la bibliothque Motif. Peter Mattis, pour amliorer le systme d'interface graphique de GIMP, a commen ds 1996 crire sa propre bibliothque GUI appele la bibliothque graphique de GIMP et a russi remplacer Motif par ce qui allait devenir GTK pour la version 0.60 de GIMP. Elle a atteint sa premire version stable en avril 98. GTK + 1.0 contient alors les composants d'interfaces qui sont ncessaires pour soutenir GIMP. La prochaine version 1.2 (Fvrier 99) contient, quant elle, de nombreux nouveaux gadgets qui ont fait de GTK + une bibliothque adapte pour le dveloppement

CHAPITRE 3.

HISTOIRE D'OPENCV ET GTK

d'applications gnrales, elle n'est alors plus centre sur Gimp.

Chapitre 4 Le logiciel ralis : CGimp

4.1 Copie d'cran

4.2 Fonctionnalits
4.2.1 Gestion des images
 Ouverture  Enregistrement  Formats supports : jpg et png  Historique et fonctions annuler/refaire  Zooms d'achages divers

4.2.2 Transformations
 Rotations  Redimensionnement

CHAPITRE 4.

LE LOGICIEL RALIS : CGIMP

10

4.2.3 Eets de couleurs


 Luminosit/Contraste  Flou/Nettet  Inversion des couleurs  Achage de l'histogramme  Etirement d'histogramme  Filtre personnalis (LUT) sur canal principal ou sur composantes spares

Chapitre 5 Algorithmes

5.1 Transformations
5.1.1 Rotations
IplImage* rotationHoraire(IplImage* img) ;  IplImage* rotationAntihoraire(IplImage* img) ;  IplImage* rotation180(IplImage* img) ; Fonctions situes dans src/openCv.c (header : include/openCv.h)
 Ces fonctions sont trs simples : il s'agit uniquement d'une recopie pixel par pixel de l'image de base en modiant la position dans l'image. Exemple pour la rotation de +90 deg. :

Figure Ro1 Complexit en O(nbre de pixels).

5.1.2 Redimensionnement
   

IplImage* IplImage* IplImage* IplImage*

Fonctions

redimension(IplImage* img, int nLargeur, int nHauteur) ; redimensionRapide(IplImage* img, int nLargeur, int nHauteur) ; zoomPlus(IplImage* img, int valeur) ; zoomMoins(IplImage* img, int valeur) ; situes dans src/openCv.c (header : include/openCv.h)
11

CHAPITRE 5.

ALGORITHMES

12

Redimensionnement avanc

Principe du redimensionnement avanc (exemple d'un passage de 5x5 vers 3x3) :

Figure Re1

1. On repre la partie de l'image d'origine qui correspondera au nouveau pixel d'image destination. Sur le schma Re1, on veut calculer le pixel (2,1) de l'image 3x3 (destination). Elle recouvera entirement le pixel (4,2) et partiellement les pixels (3,1), (3,2), (3,3), (4,1) et (4,3) d'image 5x5 (source). 2. On rcupre les couleurs de chacune de ces cases. On garde galement l'information de la surface que chacun des pixels occupait dans le nouveau pixel. 3. On additionne les direntes couleurs pondres par leur surface... 4. ...puis on divise par la surface totale de la nouvelle case. C'est dire 1 si on a pris le 2 pixel destination en rfrence, (5/3) si on a plutt pris le pixel source (de l'image 5x5). En un mot, on fait la moyenne pondre par les surfaces. 5. La couleur ainsi calcule est la celle du pixel voulu, le (2,1) de l'image 3x3 (destination) ! Complexit en  O(nL*nH*(aL/nL)*(aH/nH)) si aL > nL et aH > nH  O(nL*nH) si aL < nL et aH < nH O nL, nH, aL et aH sont respectivement les nouvelles largeurs et hauteurs et les anciennes largeurs et hauteurs.

Redimensionnement Rapide

Nous avons implment un autre algorithme de redimensionnement car l'algorithme prcdement dcrit peut tre long l'excution. Or, pour un zoom par exemple, il n'est pas ncessaire d'avoir une opration optimale. Cette algorithme permet un redimensionnement en O(nbre de pixels) pour une qualit trs convenable.

CHAPITRE 5.

ALGORITHMES

13

Figure Re2

Le principe est de choisir 1 pixel parmi l'image d'origine pour tre le nouveau pixel dans l'image destination. Ici, on choisit de prendre celui qui est tout en haut gauche du nouveau pixel. Ce n'est pas la seule solution mais elle permet un code trs simple. En eet, ce pixel est trs facilement calculable : (x(ancienne_largeur/nouvelle_largeur),

y(ancienne_hauteur/nouvelle_hauteur)).
Complexit en O(nbre de pixels).

Redimensionnement optimis pour le zoom

Ces fonctions sont des cas particuliers du redimensionnement rapide : elle ne s'appliquent qu'au redimensionnement vers une image de taille proportionnelle. Elles permettent d'allger (un peu) les calculs ainsi que le code. Ces fonctions ne sont pas rvolutionnaires et loin d'tre indispensables.

Figures Re3 et Re4

Complexit en O(nbre de pixels) galement...des calculs (un peu) plus simple.

5.2 Eets de couleurs


5.2.1 Filtre personnalis (LUT)
 Fonction situe dans

IplImage* lut(IplImage *img, float* r, float* g, float* b) ; src/openCv.c (header : include/openCv.h)

Les LUT (Look-Up Table) sont tout simplement l'application chaque pixel de l'image d'une fonction de [0, 255] dans [0, 255] pour chaque composante couleur (qui est un nombre entre 0 et 255).

CHAPITRE 5.

ALGORITHMES

14

Figures Lut1

La mthode est donc naturellement de parcourir un un les pixels de l'image et de leur appliquer la fonction. Les fonctions sont reprsentes sous forme de tableau de taille 255. Si le mode de LUT spar par composante est slctionn, on applique une fonction dirente chaque composante Rouge-Vert-Bleu. Dans le cas d'un LUT principal, on applique le mme ltre aux trois couleurs. Complexit en O(nbre de pixels).

5.2.2 Luminosit/Contraste
 Fonction situe dans

IplImage* luminositeEtContraste(IplImage *img, int luminosite, int contraste) ; src/openCv.c (header : include/openCv.h)

Le ltre de luminosite/contraste est simplement l'application d'un LUT particulier. La fonction [0, 255] applique l'ensemble des composantes de couleur est une fonction ane dont le contraste dtermine la pente et la luminosit dtermine l'ordonne l'origine.

Figures Lc1

CHAPITRE 5.

ALGORITHMES

15

Calcul de la fonction y=f(x)=a*x+b :  

a = 127/(128contraste) dans le cas d'une augmentation de contraste (contraste => 1)  a = (128+contraste)/127 dans le cas d'une diminution du contraste (contraste < 1) b = 2luminosite+128a128 : on s'arrange pour que f (128) = 128+luminosit.

Complexit en O(nbre de pixels).

5.2.3 Inversion des couleurs


IplImage* inversionCouleurs(IplImage *img) ; Fonction situe dans src/openCv.c (header : include/openCv.h)
 Cette fonction a t code avant la fonction des LUT. Elle n'utilise donc pas les LUT mais son principe est exactement le mme : on parcourt tous les pixels et on applique une fonction leurs composantes. Ici, la fonction commune toutes les composantes est :

y = f (x) = 255 x.

Figures In1

Complexit en O(nbre de pixels).

5.2.4 Flou/Nettet
IplImage* lissage(IplImage* img, int lRect, TypeLissage type) ; IplImage* nettete(IplImage* img, int lRect, TypeLissage type) ; Fonctions situes dans src/openCv.c (header : include/openCv.h)
 
Lissage (diminution de la nettet)

Cette fonction se base sur l'tude du voisinage. Pour chacun des pixels visits, on considre le carr de largeur lRect centr sur le pixel. Lisser, c'est homogniser le pixel avec son voisinage. A partir du carr ainsi dcoup, on va donc calculer une nouvelle valeur pour le pixel, qui sera soit la moyenne, soit la mdiane des valeurs du voisinage. Rq : le pixel en question fait partie du voisinage.

CHAPITRE 5.

ALGORITHMES

16

Figures Li1 Complexit en O(nbre_de_pixels

lRect).

Augmentation de la nettet

L'augmentation de la nettet, c'est l'inverse du lissage Cette phrase qui parat nave au premier abord est en fait parfaitement exacte et rsume entirement la mthode utilise ! Ainsi, la fonction de nettet marche en 2 tapes : 1. On calcule l'image oute en appellant la fonction

lissage...

2. ...on inverse la transformation : les modications survenues lors du lissage sont inverses. Par exemple, si le lissage a d'un entier N.

augment la composante de rouge d'un entier N, pour l'augmentation de la nettet, on diminuera cette mme composante de rouge

Figures Li2 Complexit en O(nbre_de_pixels

lRect).

CHAPITRE 5.

ALGORITHMES

17

5.2.5 Achage de l'histogramme


 Fonction situe dans

IplImage* histogramme(IplImage* img) ; src/openCv.c (header : include/openCv.h)

Cette fonction renvoie une nouvelle image de taille 255x255 qui est la reprsentation de l'histogramme. Un histogramme est un graphique achant, en abscisse, les valeurs (intensit globale ou composante couleur) possibles (0 255) et en ordonne le nombre de pixels qui ont cette valeur. On reprsente l'histogramme dans un tableau de 255 entiers. Son calcul se rsume donc en 2 tapes : 1. Un parcours de l'image durant lequel, pour chaque pixel, on incrmente la cellule du tableau correspondant la valeur du pixel. On garde en mmoire le nombre maximum de pixels associs une valeur. 2. On utilise ce nombre pour talonner notre reprsentation de l'histogramme : les valeurs de l'ordonne vont de 0 ce nombre. Pour chaque valeur possible, on dessine une ligne plus ou moins haute.

Figures Hi1 Complexit en O(nbre_de_pixels).

5.2.6 Etirement d'histogramme


IplImage* etirerHistogramme(IplImage* img) ; Fonction situe dans src/openCv.c (header : include/openCv.h)
 Visuellement, cette fonction

tend l'histogramme. C'est dire qu'elle rpartit les tons

de l'image sur tout le spectre disponible (0 255). Elle procde donc en 2 tapes : 1. Un parcours de l'image durant lequel on cherche les extremums des valeurs des pixels (si l'image est dj tire, ces valeurs seront le blanc et le noir). 2. On parcourt nouveau l'image. Cette fois, on rpartit proportionnellement les valeurs de chaque pixel entre les deux nouvelles valeurs extremums o ont t pousss les pixels les plus clairs et les plus foncs : le blanc et le noir.

CHAPITRE 5.

ALGORITHMES

18

Figures Eh1

Complexit en O(nbre_de_pixels).

Chapitre 6 Organisation du travail

6.1 Chronologie
2 mars Installation et familiarisation OpenCv et GTK. Tests et premires fonctions. 24 mars Premier rendez-vous. On nous aiguille sur Glade pour la gnration de l'inter-

face GTK.
30 mars - Version 0.1 Utilisant Glade et un drawingArea.

En parallle, dveloppement de fonctions OpenCv.


19 mai - Version 0.2 Nous avions des dicults avec Glade et la

drawingArea.

Nous

dcidons de repartir de zro en codant directement le code GTK. Nous achons l'image en tant que premire version et

tout Gtk

GtkImage, widget beaucoup mieux adapt. Cette

ache une image fournie en argument aprs lui avoir

applique les quelques ltres OpenCv cods auparavant :

lissage.

tirement d'histogramme

21 mai - Version 0.3.1 Ajout de la fonction

inverser,

ajout de boutons pour excuter

les dirents ltres.


22 mai - Version 0.3.2 Ajout de l'ouverture d'image partir d'une fentre de dialogue. 22 mai - Version 0.3.3 Ajout du menu, reprenant les fonctions des boutons existant. 23 mai - Version 0.4 Ajout de l'historique de modication des images : fonctions

nuler

et

refaire.

an-

Ajout d'une barre d'tat permettant achant une description du

bouton survol.
24 mai - Version 0.5 Ajout des fonctions de 24 mai - Version 0.6 Ajout de la fonction

rotation. de redimensionnement avanc

avec fentre

de dialogue.
26 mai - Version 0.7 Ajout de la fonction de

anage avec fentre de dialogue Flou/Nettet.

Enregistrement d'image partir d'une fentre de dialogue. Des icones sur certains boutons.
29 mai - Version 0.8 Achage de l'histogramme. 30 mai - Version 0.9 Zoom sur l'image pour des zoom de 1/16, 1/8, 1/4, 1/2, 1, 2, 4, 8,

16 fois. Deux nouvelles sortes de fonctions de redimensionnement ont t ajoutes. Demande de conrmation quand les modications n'ont pas t enregistres.
30 mai - Version 0.10 Fonction d'enregistrement sans avoir choisir nouveau le che-

LUT, appliques au canal principal ou chaque composante sparment, appliques en modiant une courbe graphique. Ajout de la fonction Luminosit/Contraste se basant sur les LUT. Tous les boutons sont des icones.
des fonctions de
31 mai - Version 1.0 Possibilit d'appliquer un zoom personnalis. Amlioration du

min. Ajout d'une option de conservation du ratio pour le redimensionnement. Ajout

menu.

19

CHAPITRE 6.

ORGANISATION DU TRA AIL V

20

6.2 Rpartition du travail


Nous nous sommes rparti les tches par bibliothque : pour chaque fonction, l'un de nous s'occupait du ltre OpenCv, l'autre de son intgration l'interface graphique. A chaque nouvelle fonctionnalit, nous alternions les tches et tions donc obligs d'tudier le travail de l'autre.

6.3 Problmes/Solutions
Problme 1 : Faire le lien entre GTK et les images utilises par OpenCv.

La premire solution envisage tait de passer par une

drawingArea,

widget GTK

dont on peut modier un un les pixels. Nous avions russi dessiner l'image mais il y avait des problmes de rafraichissement, nottamement lors d'un redimensionnement de la fentre. De plus, se basant sur Glade, nous utilisions des widgets de GTK que nous ne comprenions pas parfaitement.
Solution : Aprs un mois au point mort, s'embourber dans des codes modis mille

fois et dont ne connaissions pas la porte exacte, nous avons opt pour une

totale

refonte

du code.

Nous sommes partis sur des bases plus saines, en se demandant pourquoi ne pas utiliser tout simplement le widget type

GtkImage.

Il existe en eet des fonctions trs

simples (simple remaniement des donnes) qui convertissent les images OpenCv (de

IplImage)

vers les

GtkImage.

Ce widget est beaucoup plus adapt notre

besoin et a trs vite rsolu nos problmes d'achage.


Problme 2 : Algorithme de zoom lent Solution partielle : Comme vous pouvez l'observer par la multitude de fonctions de re-

dimensionnement d'image, nous avons essay d'optimiser en rapidit les algorithmes. Cependant, mme avec une complexit plafond en 0(nouveau nbre de pixels), nous avions de forts ralentissements avec les grandes images. Une solution qui

pourrait

rduire le temps de zoom aurait t d'appliquer les fonctions de redimensionnement

directement

dans GTK, plutt que de passer par OpenCv. Nous conomisons ainsi

la conversion de format.

Chapitre 7 Conclusion

Enrichissement personnel

Ce projet a t un rel enrichissement personnel : vivant depuis des annes dans un monde d'interfaces graphiques, nous n'avions jamais eu l'opportunit d'en crer nousmme.

Apprentissage

Plus que de nous initier deux bibliothques (aussi rpendues soit-elles), il nous a familiaris la philosophie des bibliothques logicielles, notamment graphiques.

Perspectives

Nous avons d, par manque de temps, arrter le dveloppement du logiciel alors que certaines des fonctionnalits que nous avions en tte n'avait pas t ralise. Il est frustrant de savoir qu'il deviendra obsolte avant d'avoir atteint une relle maturit. Mais de toute faon, de nombreux logiciels de traitement d'images existent dj, forcment beaucoup plus complet, gratuit pour certains (Gimp en premier). Cependant notre logiciel pourra nous servir de support trs facilement modiable si, pour notre travail personnel, nous voulons implmenter un ltre particulier.

21

Bibliographie

[1] Site du Zro - Cours Vision Par Ordinateur.

Arnaud NoHaR.

siteduzero.com/tutoriel-3-8631-vision-par-ordinateur.html
[2] Opencv v2.1 documentation ocielle.

http://www.

documentation/c/index.html
[3] Cours GTK+. Site GtkFr. [4] GTK+ Reference Manual. [5] Historique de gtk

http://opencv.willowgarage.com/

http://www.gtk-fr.org/wakka.php?wiki=PageAccueil http://library.gnome.org/devel/gtk/stable/

http://people.redhat.com/mclasen/Usenix04/notes/x29.html http://en.wikipedia.org/wiki/OpenCV

[6] Historique d'OpenCv

Crdits photographiques

1. Photo nettet :

http://www.paris-beyrouth.org/tutoriaux-spip/article/renforcer-la-ne

2. Photo rotation : Linda Nsfeldt/Dagbladet 3. Photo tirement d'histogramme : libre de droits

22

You might also like