diff --git a/app/Algorithms/Croissance.cpp b/app/Algorithms/Croissance.cpp
index ff32ac7cdb6982daf106928366bd0a350268c04b..5c039f6a253c8b4206a5f25a939b5b3a0de9e61d 100644
--- a/app/Algorithms/Croissance.cpp
+++ b/app/Algorithms/Croissance.cpp
@@ -34,64 +34,76 @@ int Croissance::croissance1a( const Image *im, int threshhold, Image **luminance
     float somlum;
   
     seuil = threshhold;
-    nbc = im->getWidth();
-    nbl = im->getHeight();
-    size = nbc * nbl;
+    nbc = im->getWidth(); // nombre de colonnes de l'image d'entrÊe
+    nbl = im->getHeight(); // nombre de lignes de l'image d'entrÊe
+    size = nbc * nbl; // taille de l'image
 
 //    BasicImageFun bif;
     tabin = im->begin();
 
-    tabout = new Image::depth_t[size];
-    tablabel = new int[size];
-    MoyCell = new int[size];
+    tabout = new Image::depth_t[size]; // tableau de valeurs pour l'image de sortie (luminance) [0 ; size[
+    tablabel = new int[size]; // tableau des numÊros de rÊgions pour chaque pixel de l'image [0 ; size[
+    MoyCell = new int[size]; // tableau des valeurs moyenne des pixels par rÊgions [0 ; numregion[
 		
-    numregion=0 ;
-    nbpregion=0 ;
-    somlum=0;
+	// initialisation de tablabel a zero (nÊcessaire ?)
+	for (int i = 0; i < size; i++) {
+		tablabel[i] = 0;
+	}
+
+	// initialisation des paramètres
+    numregion=0 ; // aucune rÊgion crÊÊe au dÊbut de l'algorithme
+    nbpregion=0 ; // aucun pixel dans la rÊgion courante au dÊbut de l'algorithme
+    somlum=0; // luminance cumulÊe des pixels dans la rÊgion couratne nulle au dÊbut de l'algorithme
 
     for(int i=0 ; i<nbl ; i++)
         for(int j=0 ; j<nbc ; j++)
         {
-            if(tablabel[i*nbc+j] == 0)
+            if(tablabel[i*nbc+j] == 0) // si le pixel courant n'appartient pas a une region
             {
-                numregion++;
+				// On cree une nouvelle region
+                //numregion++;
                 MoyCell[numregion] = 0;
-                pushItem(i,j,seuil,numregion,somlum,nbpregion,lum);
+                pushItem(i,j,seuil,numregion,somlum,nbpregion,lum);//on ajoute le pixel dans la pile des candidats (ce sera la seed)
                 while( !croi_stack.empty() ) {
-                    parcours_parcelle1A();
-                }
-                MoyCell[numregion] = MoyCell[numregion]/NbPointCell;
-            }
-
+                    parcours_parcelle1A(); //ajoute les pixels qui valident le critère dans la rÊgion, et les pixels voisins dans la pile des candidats
+                } // while : on sort de cette boucle quand la rÊgion est complète (pile de candidats vide)
+                MoyCell[numregion] = MoyCell[numregion]/NbPointCell; // calcul de la luminance moyenne des pixels dans la rÊgion
+            } // if : fin de la crÊation de la rÊgion liÊe au pixel courant
+			numregion++;
+			// on rÊinitialise les paramètres pour la crÊation de la prochaine rÊgion
             NbPointCell = 0;
             somlum=0;
             nbpregion=0;
-        }
-
-    for(int i=0 ; i<size ; i++)
-        tabout[i] = MoyCell[tablabel[i]];
-
+			// on ne rÊinitialise pas lum ? (entier passÊ en paramètre pour la crÊation d'un stackitem)
 
+        }// for : parcours de l'image d'entrÊe
+	
+	// remplissage de tabout
+	for (int i = 0; i < size; i++)
+		// chaque pixel de l'image de sortie prend la valeur de la valeur moyenne des pixels de la rÊgion à laquelle il appartient
+		 tablabel[i] < size ? tabout[i] = MoyCell[tablabel[i]] : tabout[i] = 0;
+	//	tabout[i] = MoyCell[tablabel[i]];
 
+	// Construction de l'image de sortie en luminance (en utilisant les valeurs de tabout)
     *luminance = new GrayscaleImage(nbc, nbl, tabout);
 
-    RgbImage* ic = new RgbImage(nbc, nbl);
-    for(int j=0 ; j<nbl ; j++) {
-        for(int i=0 ; i<nbc ; i++) {
-            int n = tablabel[j*nbc + i] - 1; /* â‚Ŧ [0, numregion[ */
-            const int nhue = 360;
-            const int ngrad = ceil((double)numregion / (double)nhue);
-            const int hue = floor(n * nhue / numregion); /* â‚Ŧ [0, nhue[ */
-            const int grad = n - ceil((double)hue * (double)numregion / (double)nhue); /* â‚Ŧ [0, ngrad[ */
-            if(grad < 0 || grad >= ngrad) {
-                cout << "grad = " << grad << endl;
-            }
-            QColor color = QColor::fromHsl(hue, 255, (grad + 1) * 255 / (ngrad + 1));
-            ic->setPixel(i, j, 0, color.red());
-            ic->setPixel(i, j, 1, color.green());
-            ic->setPixel(i, j, 2, color.blue());
-        }
-    }
+	RgbImage* ic = new RgbImage(nbc, nbl);
+	for (int j = 0; j<nbl; j++) {
+		for (int i = 0; i<nbc; i++) {
+			int n = tablabel[j*nbc + i] - 1; /* â‚Ŧ [0, numregion[ */
+			const int nhue = 360;
+			const int ngrad = ceil((double)numregion / (double)nhue);
+			const int hue = floor(n * nhue / numregion); /* â‚Ŧ [0, nhue[ */
+			const int grad = n - ceil((double)hue * (double)numregion / (double)nhue); /* â‚Ŧ [0, ngrad[ */
+			if (grad < 0 || grad >= ngrad) {
+				cout << "grad = " << grad << endl;
+			}
+			QColor color = QColor::fromHsl(hue, 255, (grad + 1) * 255 / (ngrad + 1));
+			ic->setPixel(i, j, 0, color.red());
+			ic->setPixel(i, j, 1, color.green());
+			ic->setPixel(i, j, 2, color.blue());
+		}
+	}
 
     *colorRgn = ic;
 
@@ -112,9 +124,12 @@ void Croissance::parcours_parcelle1A()
      if( croi_stack.empty() ) {
         throw("Error in Croissance::parcours_parcelle1B:\ncroi_stack.empty() = TRUE");
     }
+
+	// on dÊpile un ÊlÊment
     croi_stackitem csi;
     csi = croi_stack.back();
     croi_stack.pop_back();
+
     int i = csi.i;
     int j = csi.j;
     int seuil = csi.seuil;
@@ -123,26 +138,34 @@ void Croissance::parcours_parcelle1A()
     int nbpregion = csi.nbpregion;
     int lum = csi.lum;
 
+	// si le pixel dÊpilÊ est le premier pixel de la region
     if(nbpregion == 0)
     {
+		// on ajoute le pixel a la region
         tablabel[i*nbc+j] = numregion;
         MoyCell[numregion] += tabin[i*nbc+j] ;
         NbPointCell ++ ;
         somlum += tabin[i*nbc+j];
-        lum = tabin[i*nbc+j] ;
+        lum = tabin[i*nbc+j] ; // remplace la valeur de csi.lum (=0 au dÊbut de l'algorithme, puis a la valeur prÊcÊdente de tabin[i*nbc+j]
         nbpregion++;
+
+		// on empile les pixels voisins (s'ils existent)
         if(j<nbc-1) pushItem(i,j+1,seuil,numregion,somlum,nbpregion,lum);
         if(i<nbl-1) pushItem(i+1,j,seuil,numregion,somlum,nbpregion,lum);
         if(j>0) pushItem(i,j-1,seuil,numregion,somlum,nbpregion,lum);
         if(i>0) pushItem(i-1,j,seuil,numregion,somlum,nbpregion,lum);
     }
+	// si le pixel dÊpilÊ est candidat
     else if(fabs((double)(tabin[i*nbc+j]-somlum/nbpregion)) < (double)(seuil) && tablabel[i*nbc+j]==0)
     {
+		// on ajoute le pixel a la region (s'ils existent)
         tablabel[i*nbc+j] = numregion;
         MoyCell[numregion] += tabin[i*nbc+j] ;
         NbPointCell ++ ;
         somlum += tabin[i*nbc+j];
         nbpregion++;
+
+		// on empile les pixels voisins (si on est pas au bord de l'image)
         if(j<nbc-1) pushItem(i,j+1,seuil,numregion,somlum,nbpregion,lum);
         if(i<nbl-1) pushItem(i+1,j,seuil,numregion,somlum,nbpregion,lum);
         if(j>0) pushItem(i,j-1,seuil,numregion,somlum,nbpregion,lum);
diff --git a/app/Algorithms/Croissance.h b/app/Algorithms/Croissance.h
index f5a8c5910c1452943fc0ac7a68f1653c69c2c3b1..f04d4a34678563db0c2df9d602d0777040656f1a 100644
--- a/app/Algorithms/Croissance.h
+++ b/app/Algorithms/Croissance.h
@@ -7,13 +7,15 @@
 class Croissance  
 {
   public:
+
+	  // élément de la pile de candidats
 	struct croi_stackitem {
-        int i, j;
-		int seuil;
-		int numregion;
-		float somlum;
-        int nbpregion;
-		int lum;
+        int i, j; // coordonnées du pixel candidat
+		int seuil; // seuil (donné par l'utilisateur au début de l'opération) -> pourquoi est il dans la structure et pas comme attribut de la classe croissance ?
+		int numregion; // numéro de la region
+		float somlum; // luminance cumulée des pixels contenus dans la région pour laquelle le pixel est candidat
+        int nbpregion; // nombre de pixels dans la région pour laquelle le pixel est candidat
+		int lum; // luminance du pixel candidat
 	};
 
 	Croissance();
@@ -31,14 +33,14 @@ protected:
     void pushItem(int i, int j, int seuil, int numregion, float somlum, int nbpregion, int lum);
     void find_min(int *tabmin);
 
-    const imagein::Image::depth_t *tabin;
-    imagein::Image::depth_t *tabout;
-    int *tablabel ;
-    long nbc,nbl,size ;
+    const imagein::Image::depth_t *tabin; // tableau de valeurs de l'image d'entrée (luminance) [0 ; size[
+    imagein::Image::depth_t *tabout; // tableau de valeurs pour l'image de sortie (luminance) [0 ; size[
+    int *tablabel ; // tableau des numéros de régions pour chaque pixel de l'image [0 ; size[
+    long nbc,nbl,size ; // nombre de lignes, colonnes, et taille de l'image d'entrée (et donc de sortie)
     int *tab_min_ij;
     float coefr,coefv,coefb;
-    std::vector<croi_stackitem> croi_stack;
-    int *MoyCell, NbPointCell;
+    std::vector<croi_stackitem> croi_stack; // pile contenant les pixels candidats a une région
+    int *MoyCell, NbPointCell; // tableau des valeurs moyenne des pixels par régions [0 ; numregion[, nombre de pixels dans une région (?)
 public:
 };
 
diff --git a/app/Operations/Transforms.cpp b/app/Operations/Transforms.cpp
index 36bf14280afc0058f4f958b3ff348e7911b139bc..053e25be2b206e5d8f5a8ef1424e021f57d51db4 100644
--- a/app/Operations/Transforms.cpp
+++ b/app/Operations/Transforms.cpp
@@ -97,7 +97,7 @@ Image_t<double>* Transforms::hough(const GrayscaleImage *image ) {
                             y2 = x1 != x0 ? atan((y1-y0) / (x1-x0)) : y1 > y0 ? pid2 : -pid2;
 //                            j2 = (y2 / pi + 0.5) * image->getHeight() + 0.5;
 //                            j2 = (y2 * 2. + pi)*100.  + 0.5;
-                            j2 = (y2 / pi) * 180. + 90. + 0.5;
+                            y2 == pid2 ? j2 = 179 : j2 = (y2 / pi) * 180. + 90. + 0.5;
 //                            j2 = (x1 != x0) ? 125.5 + atan((y1-y0)/(x1-x0))*124./pid2 : 250;
 
 //                            itab[j2*width+i2]++;