//************************************************************
//	Copyright (c) 1993
// 	Realise par l'equipe d'Analyse d'Images
//	Laboratoire de Traitement du Signal et Instrumentation
//	Universite de Saint-Etienne
//	France
//************************************************************

#ifndef ONDEL
#define ONDEL


// Transformée en ondelettes discrète biorthogonale
// fichier ondel.c
Image MaxAbsLocalC(Image imS, Image imD);
Image MaxModLocalC(Image imS, Image imD);
Image MaxOndelC(Image imS,Image imD,int ordre);
Image MaxModOndelC(Image imS,Image imD,int ordre);
Image MaxMod1DOndelC(Image imS,Image imD,int ordre);
Image MaxMod2DOndelC(Image imS,Image imD,int ordre);
Image OndelDirecteR(Image imS, Image h, Image imD, int ordre, int ech);
Image OndelInverseR(Image imS, Image h, Image imD, int ordre);
int   FiltreOndelR(Image imS, int ordre, int proj);
Image ZeroOndelR(Image imS, Image imD, int ordre);
Image SommeBandeR(Image imS, int b1, int b2);
Image AbsOndelR(Image imS, Image imD, int ordre);

// Transformée en ondelettes "continue" (discrète fft)
// fichier ondel.c
Image TFOndelMorletC(Image imS, Image imD, Reel echelle, Reel angle, Reel w0, Reel excent);
Image TFOndelMorletIsoC(Image imS, Image imD, Reel echelle, Reel w0);
Image TFOndelGaussDeriveC(Image imS, Image imD, Reel echelle, Reel angle);
Image TFOndelGradC(Image imS, Image imD, Reel echelle, Reel angle);
Image TFOndelChapeauMexicC(Image imS, Image imD, Reel echelle, int nSur2);
Image OndelContMorletC(Image imS, Image imD, Reel echelle,Reel angle,Reel w0,Reel excent);
Image OndelContMorletIsoC(Image imS, Image imD, Reel echelle,Reel w0);
Image OndelContGaussDeriveC(Image imS, Image imD, Reel echelle,Reel angle);
Image OndelContGradC(Image imS, Image imD, Reel echelle,Reel angle);
Image OndelContChapeauMexicC(Image imS, Image imLD, Reel echelle,int nSur2);

// Transformée en ondelettes discrète sur grille régulière

#define REC -1
#define DEC 1
#define MAXSIZEFILT 6
#define mod(a,b) (((a) % (b) + (b)) % (b))

typedef struct  /* structure utilisée pour la représentation des coefficients
						 des filtres*/
	{
	int size;
	int shift;
	int sym;
	Reel  val[MAXSIZEFILT];
	} Filter;

// fichier rapidwt.c

// Algorithme standard de décomposition avec filtres pour gradient
Image DiscretDyadicOndelTrSTDL(Image imS, Image imLD ,int J);
// Algorithme de décomposition avec filtres quelconques
Image DiscretDyadicOndelTrL(Image imS,Image imLD,int J,Filter h,Filter g,Filter d);

// Algorithme standard de reconstruction avec filtres pour gradient
Image DiscretDyadInvOndelTrSTDR(Image imLS, Image imD);
// Algorithme de reconstruction avec filtres quelconques
Image DiscretDyadInvOndelTrR(Image imLS,Image imD,Filter h,Filter k,Filter l);

//fichier mecrecst.c

// Reconstruction de la transformée en ondelettes à partir des contours multi-échelle
Image ReconstrOndelTransfL(Image imME,Image imLD,int nit);

// Détection des points max du module dans la direction du module du gradient
// c à d les contours multi-échelle
Image ContoursMultiEchL(Image imLS,Image imLD);




#endif
