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++