Home

Logiciel de retouche d`images - Vincent Hurbourque

image

Contents

1. l aide de la fonction empile Lorsqu on demande de voir l historique des op rations r alis es la fonction affiche parcourt l historique et indique la liste des derni res op rations effectu es On peut demander l annulation de la derni re op ration effectu e l aide de la fonction annule f L IHM L application des luts directs On g re les arguments facultatifs entr s en ligne de commande l aide des fonctions lut_direct et lut_supplementaire Ces arguments ajoutent des LUTs l image charg e en ligne de commande La fonction lut_ direct appelle la fonction Cree_calque_fond Cette derni re cr e une premi re structure calque et la renvoie Elle initialise la liste de LUTs en en cr ant un premier qui peut tre vierge Elle renvoie ensuite ce calque avec lequel on initialise la liste La deuxi me appelle la fonction insertion_lut qui ajoute les LUTS demand s en ligne de commande en leur transmettant les arguments rentr s en ligne en commande La m thode utilis e pour l ajout des LUTs est ainsi identique celle qui est employ e une fois l int rieur du programme et sera d taill e plus loin Oninitialise alors la liste avec le premier calque cr e Les fonctions transforme donnee et transforme donnee2 permettent de r cup rer la valeur de la puissance donn e en ligne de commande Dans le cas o il ny a que deux arguments on appelle Cree_ calque fond et on initialise la liste avec ce calque
2. l ment de la liste de LUTS du calque courant Elle affiche ensuite l image sans le LUT qui vient d tre supprim e L historique Initialiser une pile La fonction iniPile permet d initialiser l historique Elle place le sommet de celle ci 1 Tester si elle est vide La fonction testVide teste si le sommet de la pile est 1 ou non puis renvoie un entier en fonction du cas d tect Empiler La fonction ajoute un l ment au sommet de la pile qui contient toutes les informations de l l ment supprim Elle est appel e chaque fois que l utilisateur effectue une op ration de modification de suppression ou d ajout D pile La fonction depile permet d enlever un l ment du sommet de la pile et de le renvoyer Affichage de l historique La fonction affiche parcourt la pile de l historique si elle n est pas vise et indique par des messages quel est le type des l ments de la pile Sinon elle indique que l historique est vide 11 LC Arnaud DABOUIS Vincent HURBOURQUE imac nn Annuler une op ration Si l historique n est pas vide la fonction Annule utilise le retour de la fonction d pile En fonction du type de la derni re op ration effectu e elle fait l op ration inverse de mani re annuler cette derni re Sinon elle indique que l historique est vide Utilisation dans le projet A chaque fois qu une op ration a t r alis e il place cette op ration sur le sommet de la pile
3. se placer sur le calque imm diatement droite ou gauche en d placant le pointeur de la liste sur le calque imm diatement pr c dent ou suivant l aide de la liste cha n e on change de calque courant Si l on est sur l un des calques extr mes on emp che l utilisateur de naviguer dans le mauvais sens On affiche le nouveau calque courant On affiche un message qui indique le num ro du calque courant ainsi que le nombre total de calques Charger une image sur un calque On peut charger une image sur le calque courant avec la fonction Charge _ image Cela consiste remplir tous les champs de la structure calque avec les caract ristiques de l image Puis on appelle la fonction actualise image pour l affichage Appliquer un LUT un calque La fonction applique _lut appelle la fonction insertion_lut et lui envoie un entier ne fonction du LUT appliquer La seconde lui renvoie un LUT que la premi re ajoute la fin de la liste de LUT du calque courant Afficher un calque La fonction affiche_image courante affiche l image d un calque avec ses LUTs Elle parcourt la liste de LUTS du calque courant en modifiant ses valeurs Puis elle appelle la fonction actualise_image qui affiche l image ainsi cr e CF Arnaud DABOUIS Vincent HURBOURQUE mac Ra Sortie de l image finale A tout moment on pourra afficher l image modifi e et la sauvegarder sous le nom image_finale avec la fonction Image _finale
4. CF Arnaud DABOUIS Vincent HURBOURQUE IMac IMAC 1 PROJET C Traitement d images CF Arnaud DABOUIS Vincent HURBOURQUE IMAC IMAC 1 SOMMAIRE 1 Sch ma et structure a Sch ma de la structure b Les structures utilis es La structure image La structure calque La structure LUT La structure Historique et la structure info_historique 2 Gestion des fichiers a Les fonctions images Allouer une image D sallouer une image Cr er une nouvelle image Lire une image Cr er une image Utilisation dans le projet b Construction de l histogramme Initialiser l histogramme Cr er l histogramme Utilisation dans le projet c Les fonctions du calque Allouer un calque Cr er le premier calque Cr er d autres calques Modifier le param tre d opacit Modifier la fonction de m lange Supprimer un calque Naviguer dans les calques Charger une image sur un calque Appliquer un LUT un calque Afficher un calque Utilisation dans le projet Sortie de l image finale d Les luts Allouer un lut D sallouer un lut Cr er un lut Ins rer un lut Supprimer un lut Les effets possibles Utilisation dans le projet e L historique Initialiser une pile Tester si elle est vide Empiler D opile Affichage de l historique Annuler une op ration Utilisation dans le projet f L IHM L application des luts directs D tection du clavier Les modes Affichage inverse pour avoir l image l endroit g Le main CF Arnaud DABOUIS Vincent HURBOURQUE
5. D tection du clavier La liste a t mis en variable globale pour l utilisation de l IHM En d but de programme la fonction menu calques active la d tection du clavier et lance la fen tre pour l affichage Les fonctions de d tection du clavier r cup rent les entr es et effectuent les actions en cons quence Toute la suite du programme est donc coordonn e par les deux fonctions de d tection du clavier qui appellent les fonctions correspondant aux entr es qu elles re oivent Ces fonctions permettent aussi au programme de repasser en Mode calque s il se trouve en Mode visualisation 12 CF Arnaud DABOUIS Vincent HURBOURQUE IMAC IMAC 1 Les modes Le programme comprend deux modes Le Mode calque est le mode de travail Il permet d effectuer toutes les op rations disponibles dans l application Le Mode visualisation affiche limage avec toutes les modifications qui lui ont t apport es depuis le lancement de l application Affichage inverse pour avoir l image l endroit La fonction image lendroit est utilis e pour inverser le sens de l image et permettre qu elle s affiche dans le bon sens dans la fen tre de visualisation Cette fonction change deux par deux les lignes k et n k k variant de 1 n et n tant le nombre de lignes de pixels sur l image g Le main L initialisation se fait dans le main A son entr e les variables sont cr es L historique est initialis et la pile est mise a vide Il faut
6. Elle permet aussi de passer du Mode calque en Mode visualisation Si l on est en Mode calque cette fonction passe alors le programme en Mode visualisation Puis elle cr e des tableaux de pixels temporaires Ensuite elle parcourt la liste de calques et la liste de LUTs de chaque calque en modifiant les tableaux Une fois qu elle a fini ce parcours elle affiche la nouvelle image avec la fonction actualiselmage Puis elle inverse l image avec la fonction image lendroit Enfin elle enregistre cette image avec la fonction ecrire image et cr e son histogramme avec la fonction Cree _histo Si l on est en Mode visualisation on repasse en Mode calque et on affiche le calque courant avec la fonction affiche image courante La pression de n importe quelle touche en Mode visualisation remet le logiciel en Mode calque Utilisation dans le projet Chaque fonction du fichier calque c a son utilit propre Il est gr ce elles possible d initialiser une liste de calques Cree_ calque fond d en ajouter Cree calque vierge d en enlever Supprime calque de modifier leurs param tres Modifie opacite Modifie_operation de naviguer entre eux Navigue calque tout en b n ficiant d un aper u visuel affiche image courante d ajouter des LUTs applique _lut et enfin d afficher l image finale avec ses calques et ses LUTs Image_ finale La Sortie du programme La fonction Sortie entra ne la d sallocation des listes de LUTS et des l
7. IMAC IMAC 1 Nous avons r alis une application de traitement d images permettant le chargement d images l ajout de calques sur ces images et l application de LUTS sur chacun de ces calques Elle comprend la possibilit d afficher un histogramme de l image de d part et de l image finale d enregistrer l image finale sous forme d un fichier ppm et d annuler les derni res op rations effectu es par le biais d un historique Durant tout le d roulement du traitement de l image une interface graphique permet d obtenir un rendu en temps r el des modifications effectu es En outre le contr le de l application se fait directement au clavier Organisation du travail En ce qui concerne l organisation du projet nous nous sommes r parties les diverses t ches Arnaud s est occup de l IHM lut en ligne de commande gestion du clavier et des appels aux fonctions mode et pour les calques de l ajout suppression navigation et des changements possibles opacit op ration sur celui ci Vincent s est occup de cr er les structures fichier all fonctions h des fonctions de gestion d image lecture criture copie de l historique des luts de la sortie de l image finale avec l histogramme finale de l affichage de l image courante plus de la fonction qui inverse l image avec les luts Nous avons fait le main et l histogramme ensemble tout comme ce rapport Le mode d emploi a t crit par Arna
8. La structure Historique et la structure info_historique La structure info _ historique est une structure de donn e pure c est dire qu elle permet de se souvenir des informations essentielles l historique On a besoin de conna tre lid du calque son opacit le type de lut qui a t supprim ou ajout et le type d op ration addition ou multiplication si celui ci a t chang La structure de donn e tant faite il faut construire notre structure Pile La pile qui g rera l historique est un tableau d info _ historique sa taille max est fix 100 La pile contient videmment un sommet Maintenant nous allons analyser comment est construit chaque fichier et quel est son r le dans le projet 2 Gestion des fichiers a Les fonctions images Allouer une image Cette fonction permet d allouer les tableaux de l image qui contiendront les pixels de l image La taille du tableau contenant tous les pixels doit tre largeur longueur 3 Les autres tableaux qui permettront de conna tre la quantit des rouges verts et bleus sont des tableau de 255 CF Arnaud DABOUIS Vincent HURBOURQUE imac Rae D sallouer une image Il s agit de simple free sur les 4 tableaux cr es Cr er une nouvelle image La fonction consiste copier la structure d une image et la mettre dans une autre On a ainsi une image de d part laquelle l on prend toutes ses caract ristiques type codage tableau de pixels pour les af
9. e image pr c dente b Construction de l histogramme Initialiser l histogramme L histogramme est un tableau de 255 valeurs car au maximum un pixel prend la valeur de 255 On initialise les 3 tableaux de notre image pass s en arguments qui repr sentent les quantit s de rouge vert et bleu 0 Puis nous parcourons le tableau de pixels et chaque fois nous incr mentons les tableaux en cons quence Si nous rencontrons un pixel rouge avec pour valeur 50 alors nous faisons image gt tabr 50 CF Arnaud DABOUIS Vincent HURBOURQUE IMAC IMAC 1 Cr er l histogramme On appelle tout d abord la fonction histogramme Celle ci remplit les trois tableaux de la structure image tabr tabv et tabb de 0 puis incr mente leur valeur en chaque nombre de 0 255 chaque fois qu elle rencontre cette valeur de couleur dans le tableaux de pixels tabrvb Ensuite la fonction creeHisto cr e une structure image qui servira d histogramme et un tableau d entiers qu elle alloue Elle remplit ensuite ce tableau d entiers de la moyenne des valeurs des trois tableaux remplis pr c demment La fonction recherche _ max renvoie ensuite le maximum d intensit du tableau ce qui permet d afficher les autres valeurs d intensit en pourcentage de cette derni re Puis on remplit la structure image de l historique avec ses caract ristiques et on alloue ses tableaux avec la fonction allouelmage Il s agit ensuite simplement de remplir le tab
10. ensuite g rer l ouverture du fichier en ligne de commande ainsi que les arguments qui appliquent les luts sur le premier calque S il ny a qu un argument on envoie un message d erreur qui rappelle le format attendu pour le lancement du programme S il y a deux arguments ou plus on v rifie que le format rentr est ad quat On appelle les fonctions creeHisto et histogramme pour cr er l histogramme de l image de d part Conclusion Le logiciel de traitement d images est ainsi conforme au cahier des charges fourni Il permet de charger une ou plusieurs images de travailler sur des calques d appliquer des effets sur chacun des calques et de visualiser tout moment l image modifi e ainsi que de la sauvegarder sur le disque dur Il permet aussi l affichage d un historique des op rations effectu es et l annulation de ces op rations Il cr e en entr e du programme un histogramme de l image charg e et en cr e un autre chaque visualisation de l image modifi e Le contr le de ce programme se fait int gralement au clavier chaque touche ayant une fonction sp cifique 13
11. fecter une image d arriv e Lire une image C est l une des fonctions essentielles du projet Elle ouvre le fichier ppm qui sera pass en argument si louverture s est bien pass e alors on peut proc der l extraction des informations importantes du fichier image c est dire son type son codage les pixels du tableau etc gr ce a des scanf et des fgets et surtout le fread pour le tableau de pixels Nous avons supprim la ligne de commentaire en testant si le premier caract re est un dans ce cas nous continuons la lecture Le fichier est ferm la fin de la fonction Cr er une image Cette fonction permet de cr er un nouveau fichier et d crire gr ce aux fonctions fprintf et fwrite les informations essentielles c est dire le type la largeur et la hauteur le codage et tout le tableau de unsigned char Le fichier est ferm la fin de la fonction Utilisation dans le projet On lit l image entr e en argument avec la fonction lit image Cette fonction r cup re le type de l image enl ve les commentaires puis appelle alloue_image pour r server un tableau de taille largeur largeur 3 permettant d accueillir les valeurs des pixels de l image ainsi que les autres tableaux Il ne reste plus la fonction lit_image qu remplir un tableau avec le contenu du fichier image puis le fermer On appelle ensuite la fonction nouvelle image qui cr e une nouvelle structure image identique la structur
12. i la pixel inverse En faisant ainsi tous les pixels on aura l inverse de l image Effet s pia On multiplie par une constante le pixel 0 0 784 pour le rouge 0 588 pour le vert et 0 392 pour le bleu Il faut envoyer ce lut pas le pixel mais la moyenne des pixels RVB 10 LC Arnaud DABOUIS Vincent HURBOURQUE imac en Effet bruit Le bruit est un effet al atoire C est dire que on n obtiendra jamais deux fois la m me image avec les m mes param tres Pour r aliser du bruit sur une image il faut alt rer la couleur des pixels On utilise le param tre alpha qui repr sente l intensit du bruit On ajoute une valeur comprise entre alpha 2 et alpha 2 chaque composante de chaque pixel Effet seuil On regarde si le pixel est lt 127 si c est el cas alors on le met 0 sinon on le met a 255 Effet niveau de gris De m me mani re que l effet s pia on enverra la moyenne de RVB Les pixels r v et b prendront la valeur de cette moyenne Utilisation dans le projet L ajout dun LUT se fait avec la fonction applique lut Cette fonction envoie la fonction insertion _lut l instruction correspondant au LUT ajouter La fonction insertion_lut ajoute un LUT la fin de la liste de LUTs du calque courant Elle appelle pour cela la fonction Cree_lut Cette fonction appelle la fonction LUT correspondante qui modifie les tableaux tabr tabv et tabb La fonction supprime_lut effectue une suppression du dernier
13. istes de calques Elle parcourt la liste de calques et ce faisant parcourt chaque liste de LUTS en d sallouant les structures LUTs et en appelant la fonction desalloueLookup Lorsqu elle a termin de parcourir la liste de LUT d un calque elle desalloue l image du calque avec la fonction desallouelmage Puis elle passe au calque suivant et d salloue le calque pr c dent Elle effectue ces op rations pour chaque calque puis renvoie un message si la d sallocation s est bien pass e d Les luts Allouer un lut Pour allouer un lut c est un simple malloc sur la structure lut D sallouer un lut On fait un free sur les luts de l image CF Arnaud DABOUIS Vincent HURBOURQUE IMAC IMAC 1 Cr er un lut La fonction Cree_lut re oit en argument le type de LUT cr er et la puissance si n cessaire La fonction cr e un LUT qu elle alloue Une diff rentiation s op re ce niveau Si la valeur de la puissance est diff rente de 777 alors c est que la valeur de la puissance a t donn e en ligne de commande Dans le cas contraire on la demande l utilisateur Cette fonction va ensuite envoyer les trois tableaux lookupr lookupv et lookupb l une des fonctions d application d effets qui les modifieront en cons quence Ins rer un lut La fonction insertion_lut appelle la fonction Cree_lut qui lui renvoie un LUT La premi re l ajoute en fin de liste en r orientant les pointeurs n cessaires Supprimer un lut La
14. leau tabrvb de pixels blancs et noirs afin de cr er un histogramme sous forme de diagramme barres Enfin on crit l image avec la fonction ecrire image puis on la d salloue et on lib re le tableau d entiers Utilisation dans le projet On appelle les fonctions histogramme et Creehisto qui respectivement cr e l histogramme en m moire et l crivent puis l enregistrent sous forme d un fichier image On appelle cette fonction au d part pour obtenir l histogramme de l image source puis on l appellera chaque fois que on affiche l image finale pour avoir l histogramme de celle ci c Les fonctions du calque Allouer un calque La fonction Alloue_ calque r serve la place en m moire pour la structure calque Cr er le premier calque La cr ation du premier calque se fait avec le chargement d une image et l appllication directe de LUTS avec la fonction Cree_lut Elle inverse l image avec la fonction image_lendroit afin de l afficher dans le bon sens dans la fen tre Elle met ensuite les param tres d opacit et d op ration 1 puis fait pointer les deux pointeurs de la structure vers NULL Cr er d autres calques L ajout de calques se fait avec la fonction Cree_ calque vierge Cette fonction alloue une structure calque avec l appel la fonction alloue calque et y ajoute un LUT vierge pour initialiser la liste Elle copie les caract ristiques de l image largeur hauteur etc dans la stuctu
15. p rations annuler effectu es calque c lut c histo c G re tout ce qui concerne G re tout ce qui concerne Cr e l histogramme de la liste de calques la liste de LUTs l image chaque visualisation CF Arnaud DABOUIS Vincent HURBOURQUE Aie IMAC 1 La structure calque La structure calque comporte une structure image car un calque est une image De plus un calque a une opacit d finie par un float et une op ration 0 pour l addition et 1 pour la multiplication Il existe un champ appel id qui permet d attribuer une identit chaque calque ce sera utile dans l historique pour conna tre quelles op rations ont t affect es quel calque Le projet permet de manipuler plusieurs calques qui seront plac s en tant que maillons d une liste doublement cha n e Ainsi chaque structure calque comporte deux pointeurs un vers le calque suivant et l autre vers le calque pr c dent La structure lut Un LUT est un tableau de 255 cases qui permet de savoir comment r agit un pixel face un effet La structure comprend un type qui permet d identifier le type d effet 1 pour l effet inverse par exemple et elle contient 3 tableaux de unsigned char qui permettent de g rer les effets sur les pixels rouge vert ou bleu Chaque calque pouvant avoir plusieurs LUTs il a fallu impl menter une liste de LUTSs La structure contient donc aussi 2 pointeurs un vers le LUT suivant et l autre vers le LUT pr c dent
16. re calque puis remplit les tableaux du calque de blanc Enfin elle ajoute ce nouveau calque la fin de la liste cha n e en r orientant les pointeurs n cessaires CF Arnaud DABOUIS Vincent HURBOURQUE Jane IMAC 1 Modifier le param tre d opacit On peut modifier le param tre d opacit du calque courant avec la fonction Modifie _opacite On remplace dans la structure calque correspondante le param tre opacite par celui que l on a demand l utilisateur Modifier la fonction de m lange On peut modifier la fonction de m lange du calque courant avec la fonction Modifie fonction Elle proc de un switch pour modifier le param tre op ration de la structure calque concern e Supprimer un calque On peut supprimer le calque courant Il s agit de r orienter les pointeurs des calques pr c dent et suivant afin que lors du parcours de la liste le maillon courant ne soit plus atteint S il s agit du premier calque on magit que sur le pointeur du calque suivant et inversement pour le dernier calque S il n y a plus qu un calque la suppression n est pas effectu e Lors de la suppression d un calque le nouveau calque courant devient celui qui se trouve imm diatement en dessous Si l on supprime le premier calque le nouveau calque courant est le nouveau premier calque On affiche ensuite dans la fen tre le nouveau calque courant avec la fonction affiche _image_courante Naviguer dans les calques On peut
17. suppression d un lut est en fait la suppression du dernier l ment de la liste de lut On se situe donc en fin de liste sur le dernier lut puis on recule d un on supprime son suivant et on met le suivant du lut courant null Les effets possibles Effet vierge C est un effet qui ne change pas les valeurs du pixel Il a t impl ment pour que chaque calque ait d j un lut de base par souci de facilit pour les insertions Ajout de luminosit Pour ajouter de la luminosit on utilise une puissance pass en param tre pouvant prendre les valeurs de O0 255 Cette valeur est ajout e la valeur du pixel donnant ainsi une teinte plus clair lumineuse l image car le pixel se rapproche de la valeur 255 Diminution de luminosit Pour diminuer de la luminosit on utilise une puissance pass en param tre pouvant prendre les valeurs de O 255 Cette valeur est soustraite la valeur du pixel donnant ainsi une teinte plus sombre l image car le pixel se rapproche de la valeur 0 Ajout et diminution de contraste Cette fonction creuse l cart entre les couleurs selon une puissance positive si on ajoute du contraste et n gative si on la diminue Elle ajoute au pixel gt 127 de la couleur et diminue les pixels lt 127 On v rifie bien que la valeur ne d passe pas 255 ou est inf rieur 0 si c est le cas on la ram ne a 255 ou 0 Effet n gatif Pour cet effet on soustrait 255 le pixel on obtient ains
18. ud et Vincent a organis les fichiers et les a comment s 1 Sch ma et structure a Sch ma de la structure Un dessin arborescent montrant les fichiers et leurs liaisons majeures est disponible en page suivante b Les structures utilis es Nous avons d fini les structures n cessaires dans le fichier all fonctions h inclus au d but de chaque fichier de type c Voyons quelles sont ces structures La structure image Pour cette structure il a fallu analyser un fichier ppm afin de r colter toutes les informations importantes et n cessaires sa cr ation Ainsi la structure comprendra Un type P6 ici la hauteur de l image sa largeur le codage un tableau de unsigned char contenant l ensemble des pixels de l image et enfin 3 tableaux d entiers contenant chacun la quantit de pixel rouge vert et bleu pour l histogramme CF Arnaud DABOUIS Vincent HURBOURQUE mac IMAC 1 main c all_fonction h fonction_image c D finit les structures et les Sert dans tous les fichiers prototypes pour g rer les images histo c calque c cr ation de l histogramme Cr ation du premier de d part calque et initialisation de la liste Appel de la fonction ihm c lut c Initialisation de l interface Initialisation de la liste de graphique LUTs G rance des actions au Cr ation des premiers clavier LUTSs sur l image de historique c LIBGIMP Enregistre chaque G re l affichage du modification et peut en r sultat des o

Download Pdf Manuals

image

Related Search

Related Contents

Catalogue-Salon-de-l-Etudiant-et-du-Lycéen-de  Soil Science Instrumentation  Supermicro X9SPV-M4-3UE  FAX/DATA MODEM USER`S MANUAL  Craftsman 973.11424 User's Manual  Canon LV 7297S  

Copyright © All rights reserved.
Failed to retrieve file