#include "Memoire1.c"
#include "Gris.c"
#include "Bin.c"
#include "Niveaugris.c"
#include "Convo.c"
#include "Ero.c"
#include "Dil.c"
#include "FermOuv.c"


int main(int argc, char *argv[]){
	
char *entree = (char*) malloc( 100 );
printf("Entrez le nom d'une image en COULEUR(avec extension),\nelle sera utilisée pour la mise en mémoire, la transformation \nde l'image en niveau de gris et la convolution\n\n");
scanf("%s", entree);

char *entree1 = (char*) malloc( 100 );
printf("Entrez le nom d'une image en NIVEAU DE GRIS (avec extension),\nelle sera utilisée pour la binarisation, la dilatation, \nl'érosion, l'ouverture et la fermeture\n\n");
scanf("%s", entree1);

//////////////////////////////Mise en Mémoire///////////////////////////////	
	char *sortie = (char*) malloc( 100 );
	printf("Entrez le nom de l'image en sortie (avec extension) \n");
	scanf("%s", sortie);
	TablToppm(bina(entree,Taille0(entree),Taille1(entree)),sortie,Taille0(entree),Taille1(entree));
	free(sortie);
/////////////////////////////////////////////////////////////	


//////////////////////////////GrayScaling///////////////////////////////	
	char *sortie1 = (char*) malloc( 100 );
	printf("Entrez le nom de l'image en gris (avec extension) \n");
	scanf("%s", sortie1);
	TablToGris(bina(entree,Taille0(entree),Taille1(entree)),sortie1,Taille0(entree),Taille1(entree));
	free(sortie1);
////////////////////////////////////////////////////////////*/


//////////////////////////////Binarisation///////////////////////////////	
	char *sortie2 = (char*) malloc( 100 );
	char *seuil = (char*) malloc( 100 );
	printf("Entrez le nom de l'image binarisée (avec extension) \n");
	scanf("%s", sortie2);
	printf("Entrez un seuil de binarisation \n");
	scanf("%s", seuil);
	TablToBina(bina(entree1,Taille0(entree1),Taille1(entree1)),sortie2,Taille0(entree1),Taille1(entree1), atoi(seuil));
	free(sortie2);
	free(seuil);
/////////////////////////////////////////////////////////////


//////////////////////////////Niveau de gris///////////////////////////////	
	char *sortie3 = (char*) malloc( 100 );
	printf("Entrez le nom d'un fichier recevant les données des niveaux de gris \n");
	scanf("%s", sortie3);
	Histo(bina(entree1,Taille0(entree1),Taille1(entree1)),sortie3,Taille0(entree1),Taille1(entree1));
	free(sortie3);
/////////////////////////////////////////////////////////////


//////////////////////////////Convolution///////////////////////////////	
	char *sortie4 = (char*) malloc( 100 );
	printf("Entrez le nom de la nouvelle image après convolution \n");
	scanf("%s", sortie4);
	Convo(bina(entree,Taille0(entree),Taille1(entree)),sortie4,Taille0(entree),Taille1(entree));
	free(sortie4);
/////////////////////////////////////////////////////////////


//////////////////////////////Erosion///////////////////////////////	
	char *sortie5 = (char*) malloc( 100 );
	printf("Entrez le nom de la nouvelle image après érosion \n");
	scanf("%s", sortie5);
	EroToPPM(bina(entree1,Taille0(entree1),Taille1(entree1)),sortie5,Taille0(entree1),Taille1(entree1));
	free(sortie5);
/////////////////////////////////////////////////////////////


//////////////////////////////Dilatation///////////////////////////////	
	char *sortie6 = (char*) malloc( 100 );
	printf("Entrez le nom de la nouvelle image après dilatation \n");
	scanf("%s", sortie6);
	DilToPPM(bina(entree1,Taille0(entree1),Taille1(entree1)),sortie6,Taille0(entree1),Taille1(entree1));
	free(sortie6);
/////////////////////////////////////////////////////////////


//////////////////////////////Fermeture (Dilatation puis Erosion)///////////////////////////////	
	char *sortie7 = (char*) malloc( 100 );
	printf("Entrez le nom de la nouvelle image après fermeture (Dilatation puis Erosion) \n");
	scanf("%s", sortie7);
	FermOuv(bina(entree1,Taille0(entree1),Taille1(entree1)),sortie7,Taille0(entree1),Taille1(entree1),1);
	free(sortie7);
/////////////////////////////////////////////////////////////


//////////////////////////////Ouverture (Erosion puis Dilatation)///////////////////////////////	
	char *sortie8 = (char*) malloc( 100 );
	printf("Entrez le nom de la nouvelle image après ouverture (Erosion puis Dilatation) \n");
	scanf("%s", sortie8);
	FermOuv(bina(entree1,Taille0(entree1),Taille1(entree1)),sortie8,Taille0(entree1),Taille1(entree1),2);
	free(sortie8);
/////////////////////////////////////////////////////////////

free(entree);
free(entree1);
	return 0;
}