Update 3/4 séance 12/05/2014

Ajout des fonctions suivantes :
- Cercle ;
- Disque ;
- Conversion Binaire ;
- Conversion Niveaux de gris.
This commit is contained in:
LuKiLL 2014-05-12 11:33:32 +02:00
parent 2af24e2cc8
commit 9bbdb6b3ee

View file

@ -102,6 +102,9 @@ void contraste(Image entree, Image &sortie, float contraste) { // Accentue les c
// if pixel.g > Image.g_maxComposante // if pixel.g > Image.g_maxComposante
// pixel.g = Image.g_maxComposante // pixel.g = Image.g_maxComposante
// end if // end if
// End If
// Fin Pour
// Fin Pour
} }
@ -123,7 +126,6 @@ void trait(Image entree, Image &sortie, int x1, int y1, int x2, int y2, Pixel pi
// e ← e + e(0,1) ; // ajuste lerreur commise dans cette nouvelle rangée // e ← e + e(0,1) ; // ajuste lerreur commise dans cette nouvelle rangée
// fin si ; // fin si ;
// fin pour ; // fin pour ;
//fin procédure ;
} }
@ -137,12 +139,26 @@ void rectangle(Image entree, Image &sortie, int x1, int y1, int x2, int y2, Pixe
} }
void cercle(Image entree, Image &sortie, int x, int y, int r, Pixel couleur) { void cercle(Image entree, Image &sortie, int x0, int y0, int r, Pixel couleur) {
// sortie=entree;
// pour x=0 à x=image.g_dimensionX()
// pour y=0 à y=image.g_dimensionY()
// si sqrt(pow(x-x0, 2) + pow(y-y0, 2)) == r
// sortie.s_pixel(x, y, couleur);
// Fin si
// fin pour
// fin pour
} }
void disque(Image entree, Image &sortie, int x, int y, int r, Pixel couleur) { void disque(Image entree, Image &sortie, int x, int y, int r, Pixel couleur) {
// sortie=entree;
// pour x=0 à x=image.g_dimensionX()
// pour y=0 à y=image.g_dimensionY()
// si sqrt(pow(x-x0, 2) + pow(y-y0, 2)) <= r
// sortie.s_pixel(x, y, couleur);
// Fin si
// fin pour
// fin pour
} }
// Geométrie // Geométrie
@ -189,11 +205,73 @@ void redimensionner(Image entree, Image &sortie, int x1, int x2, int y1, int y2)
// Modification couleur // Modification couleur
void convBIN(Image entree, Image &sortie) { void convBIN(Image entree, Image &sortie) {
Pixel pixel;
switch(entrée.g_typeComposantes) {
case PILG_BIN:
sortie=entree;
break;
case PILG_NIV:
sortie = new Image(entree.g_dimensionX(), entree.g_dimensionY(), 0, PILG_BIN);
pixelI = entree.g_pixelVide();
pixelF = sortie.g_pixelVide();
for (int x = 0; x <= entree.g_dimensionX(); x++) {
for (int y = 0; y <= entree.g_dimensionY(); y++) {
entree.g_pixel(x, y, pixelI);
pixelF.n = (pixelI.g > entree.g_maxComposante/2);
sortie.s_pixel(x, y, pixelF);
}
}
break;
case PILG_RVB:
sortie = new Image(entree.g_dimensionX(), entree.g_dimensionY(), 0, PILG_BIN);
pixelI = entree.g_pixelVide();
pixelF = sortie.g_pixelVide();
for (int x = 0; x <= entree.g_dimensionX(); x++) {
for (int y = 0; y <= entree.g_dimensionY(); y++) {
entree.g_pixel(x, y, pixelI);
pixelF.n = ((pixelI.r + pixelI.v + pixelI.b)/3 > entree._maxComposante/2);
sortie.s_pixel(x, y, pixelF);
}
}
break;
}
} }
void convNIV(Image entree, Image &sortie) { void convNIV(Image entree, Image &sortie) {
Pixel pixel;
switch(entrée.g_typeComposantes) {
case PILG_BIN:
sortie = new Image(entree.n_dimensionX(), entree.n_dimensionY(), 0, PILG_BIN);
pixelI = entree.g_pixelVide();
pixelF = sortie.g_pixelVide();
for (int x = 0; x <= entree.g_dimensionX(); x++) {
for (int y = 0; y <= entree.g_dimensionY(); y++) {
entree.g_pixel(x, y, pixelI);
pixelF.g = (pixelI.n ? sortie.g_maxComposante() : 0);
sortie.s_pixel(x, y, pixelF);
}
}
break;
case PILG_NIV:
sortie = entree;
break;
case PILG_RVB:
sortie = new Image(entree.g_dimensionX(), entree.g_dimensionY(), 0, PILG_NIV);
pixelI = entree.g_pixelVide();
pixelF = sortie.g_pixelVide();
for (int x = 0; x <= entree.g_dimensionX(); x++) {
for (int y = 0; y <= entree.g_dimensionY(); y++) {
entree.g_pixel(x, y, pixelI);
pixelF.n = (pixelI.r + pixelI.v + pixelI.b)/3;
sortie.s_pixel(x, y, pixelF);
}
}
break;
} }
void convRVB(Image entree, Image &sortie) { void convRVB(Image entree, Image &sortie) {