Création d`une mosaique en C++
Transcription
Création d`une mosaique en C++
Présentation générale Main.cpp Classe Image.h Création d’une mosaique en C++ Dadi Charles et Ciolac Daniela Université Paris VII 28 janvier 2013 Dadi Charles et Ciolac Daniela Création d’une mosaique en C++ Présentation générale Main.cpp Classe Image.h 1 Présentation générale 2 Main.cpp Création de la librairie Librairie Monochrome Librairie couleur Découpe Comparaison images extraites/librairie Assemblage et Mosaique finale 3 Classe Image.h Attributs Méthodes Extraction des carrés de l’image principale Remplacer les carrés par les images de la librairie Dadi Charles et Ciolac Daniela Création d’une mosaique en C++ Présentation générale Main.cpp Classe Image.h Découpe Main.cpp Dadi Charles et Ciolac Daniela Création d’une mosaique en C++ Présentation générale Main.cpp Classe Image.h Découpe Création de notre librairie On stocke nos images de librairie dans un tableau dynamique : 1 2 Création de vector<Image> lib Choix d’une librairie monochrome ou couleur { i f ( a == "m" ) lib_mono = g e n e r a t e l i b ( lib_mono , l e n g t h _ s q ) ; c o m p a r e A n d R e p l a c e ( t a r g e t , lib_mono , l e n g t h _ s q ) ; } e l s e i f ( a == " b " ) { l i b = load ( " l i b r a r y /" , l i b ) ; compareAndReplace ( t a r g e t , l i b , length_sq ) ; } Dadi Charles et Ciolac Daniela Création d’une mosaique en C++ Présentation générale Main.cpp Classe Image.h Découpe On souhaite découper l’image principale : v e c t o r <Image>c u t I m a g e ( s t r i n g i n p u t , v e c t o r <Image>b i b , i n t n ) 1 On parcourt l’image de façon itérative sur la largeur/longeur. Dadi Charles et Ciolac Daniela Création d’une mosaique en C++ Présentation générale Main.cpp Classe Image.h 2 3 Découpe Input : Image myImg = img ; Utilisation de la méthodes extraireZone de la classe Image.h myImg . e x t r a i r e Z o n e ( i ∗ l e n g t h _ s q , j ∗ l e n g t h _ s q , l e n g t h _ s q ) ; 4 Output : Bibliothèque de carrés découpés return bib ; On obtient : Dadi Charles et Ciolac Daniela Création d’une mosaique en C++ Présentation générale Main.cpp Classe Image.h Découpe Figure : Découpage en carré régulier Dadi Charles et Ciolac Daniela Création d’une mosaique en C++ Présentation générale Main.cpp Classe Image.h Attributs La fonction de comparaison est : v o i d c o m p a r e A n d R e p l a c e ( v e c t o r <Image> t a r g e t , v e c t o r <Image> lib , i n t length_sq ) 1 1 2 3 4 Comparaison des niveau de couleurs On stocke nos images de librairies issues de la comparaison dans mosaique Appel de la méthode inclureZone On créer un nouvel objet Image img = * new Image(800,1120) ; Recomposition et sauvegarde Dadi Charles et Ciolac Daniela Création d’une mosaique en C++ Présentation générale Main.cpp Classe Image.h Attributs Classe Image.h Dadi Charles et Ciolac Daniela Création d’une mosaique en C++ Présentation générale Main.cpp Classe Image.h Attributs Attributs : 1 unsigned char* data ; 2 int width ; 3 int height ; 4 void load(string filename) ; Méthodes : 1 Méthode d’extraction des carrés 2 Méthode pour inclure 3 Méthode pour re dimensionner 4 Méthode pour Ré assemblage Dadi Charles et Ciolac Daniela Création d’une mosaique en C++ Présentation générale Main.cpp Classe Image.h Attributs Méthode d’extraction des carrés v o i d e x t r a i r e Z o n e ( i n t xt , i n t yt , i n t l e n g t h _ s q ) ; Méthode pour inclure v o i d i n c l u r e Z o n e ( v e c t o r <Image> t a r g e t , i n t nb_sq_width , i n t nb_sq_height ) ; On remplace les carrés découpés les équivalent en librairie w h i l e ( pos2 < length_sq ∗ length_sq ∗ 3) { f o r ( i n t i =0; i <l e n g t h _ s q ∗ 3 ; i=i +3) { t h i s −>d a t a [ p o s+i ] = t a r g e t [ k ] . d a t a [ p o s 2+i ] ; t h i s −>d a t a [ p o s+i +1] = t a r g e t [ k ] . d a t a [ p o s 2+i + 1 ] ; t h i s −>d a t a [ p o s+i +2] = t a r g e t [ k ] . d a t a [ p o s 2+i + 2 ] ; } pos2 = pos2 + length_sq ∗ 3 ; pos = pos + width ∗ 3 ; Dadi Charles et Ciolac Daniela Création d’une mosaique en C++ Présentation générale Main.cpp Classe Image.h Attributs Résultat : Dadi Charles et Ciolac Daniela Création d’une mosaique en C++ Présentation générale Main.cpp Classe Image.h Attributs Questions ? Dadi Charles et Ciolac Daniela Création d’une mosaique en C++