Пример #1
0
void bifurcation(ImagePNG &originale, string numero)//calcul des bifurcations
{
  const unsigned height=originale.height();
  const unsigned width=originale.width();
  int somme(0);

  for (unsigned i=1;i<height-1;i++)
  {
     for (unsigned j=1;j<width-1;j++)
     {
       if (originale[i][j]==PIXEL_BLACK)
       {
         if (compteur_proche(originale,i,j)==3)
         {
           originale[i][j]=PIXEL_BLUE;
           somme++;
           /*
           (originale[i+1][j]=PIXEL_BLUE);
           (originale[i][j+1]=PIXEL_BLUE);
           (originale[i-1][j]=PIXEL_BLUE);
           (originale[i][j-1]=PIXEL_BLUE);
           (originale[i-1][j-1]=PIXEL_BLUE);
           (originale[i+1][j-1]=PIXEL_BLUE);
           (originale[i+1][j+1]=PIXEL_BLUE);
           (originale[i-1][j+1]=PIXEL_BLUE);
           */
         }
       }
     }
  }
  originale.save("bifurcation"+numero+".png");
}
Пример #2
0
void verif_minutie(ImagePNG &originale,string numero)//enleve le surplus de bifurc
{
  const unsigned height=originale.height();
  const unsigned width=originale.width();
  for (unsigned i=9;i<height-9;i++)
  {
     for (unsigned j=9;j<width-9;j++)
     {
       if (originale[i][j]==PIXEL_BLUE)
       {
         if (!compteur_loin(originale,i,j))
         {
           for (unsigned k=i-9;k<i+9;k++)
           {
              for (unsigned f=j-9;f<j+9;f++)
              {
                if (originale[k][f]==PIXEL_BLUE)
                {
                  originale[k][f]=PIXEL_BLACK;
                }
              }
            }
         }
       }
     }
   }
   originale.save("bifurcation2"+numero+".png");
}
Пример #3
0
void terminaison(ImagePNG &originale)//pas sur les bords (qu'au milieu)
{
  int somme(0);
  const unsigned height=originale.height();
  const unsigned width=originale.width();

  for (unsigned i=8;i<height-8;i++)
  {
     for (unsigned j=8;j<width-8;j++)
     {
       if (originale[i][j]==PIXEL_BLACK)
       {
         if ((compteur_proche(originale,i,j)==1)&&verif_not_bifurc(originale,i,j))
         {
           somme++;
           originale[i][j]=PIXEL_RED;
           (originale[i+1][j]=PIXEL_RED);
           (originale[i][j+1]=PIXEL_RED);
           (originale[i-1][j]=PIXEL_RED);
           (originale[i][j-1]=PIXEL_RED);
           (originale[i-1][j-1]=PIXEL_RED);
           (originale[i+1][j-1]=PIXEL_RED);
           (originale[i+1][j+1]=PIXEL_RED);
           (originale[i-1][j+1]=PIXEL_RED);
         }
       }
     }
  }
  originale.save("terminaison.png");
}
Пример #4
0
void filtre (ImagePNG &gg, string numero)//filtre moyenneur
{
  ImagePNG originale;
  originale=gg;
  int gris1,gris2,gris3,gris4,gris5,gris6,gris7,gris8,gris9,total;
  for (unsigned i=1;i<originale.height()-1;i++)
  {
    for (unsigned j=1;j<originale.width()-1;j++)
    {
      gris1=(originale[i+1][j].red()+originale[i+1][j].blue()+originale[i+1][j].green())/3;
      gris2=(originale[i-1][j].red()+originale[i-1][j].blue()+originale[i-1][j].green())/3;
      gris3=(originale[i][j-1].red()+originale[i][j-1].blue()+originale[i][j-1].green())/3;
      gris4=(originale[i][j+1].red()+originale[i][j+1].blue()+originale[i][j+1].green())/3;
      gris5=(originale[i-1][j-1].red()+originale[i-1][j-1].blue()+originale[i-1][j-1].green())/3;
      gris6=(originale[i+1][j-1].red()+originale[i+1][j-1].blue()+originale[i+1][j-1].green())/3;
      gris7=(originale[i+1][j+1].red()+originale[i+1][j+1].blue()+originale[i+1][j+1].green())/3;
      gris8=(originale[i-1][j+1].red()+originale[i-1][j+1].blue()+originale[i-1][j+1].green())/3;
      gris9=(originale[i][j].red()+originale[i][j].blue()+originale[i][j].green())/3;

      total=(gris1+gris2+gris3+gris4+gris5+gris6+gris7+gris8+gris9)/9;
      if (total<180)
      {
        gg[i][j]=PIXEL_BLACK;
      }
      else
      {
        gg[i][j]=PIXEL_WHITE;
      }
    }
  }
  gg.save("filtre"+numero+".png");
}
Пример #5
0
void Translation::run(vector<string> pArgParam,string input, string output){
	unused(pArgParam);
	ImagePNG* img = new ImagePNG();
	img->load(input);
	double start = Data::get_time();
	cout << &img << endl;
	translation(img,atoi(pArgParam[0].c_str()),atoi(pArgParam[1].c_str()), new Color(0,0,0,255));
	if (Data::CHRONO)	cout << description<<" effectue en " << 1000*(Data::get_time() - start)<<" ms"<<endl;
	img->save(output);
}
Пример #6
0
void Difference::run(vector<string> pArgParam,string input, string output){
	unused(pArgParam);
	ImagePNG* img = new ImagePNG();
	img->load(input);
	ImagePNG* img2 = new ImagePNG();
	img2->load(pArgParam[0]);
	double start = Data::get_time();
	difference(img, img2);
	if (Data::CHRONO)	cout << description<<" effectue en " << 1000*(Data::get_time() - start)<<" ms"<<endl;
	img->save(output);
}
Пример #7
0
void squelette( ImagePNG &copie, string numero)//applique toutes les conditions precedentes pour squelettiser
{

     const unsigned height=copie.height();
     const unsigned width=copie.width();

     for (unsigned i=1;i<height-1;i++)
     {
        for (unsigned j=1;j<width-1;j++)
        {
          if (copie[i][j]!=PIXEL_WHITE)
          {
            if ( (premiere_conditions(copie,i,j))&&(deuxieme_condition(copie,i,j)) && ((troisieme_condition(copie,i,j))||(quatrieme_condition(copie,i,j)))  && ((cinquieme_condition(copie,i,j))||(sixieme_condition(copie,i,j))))
            {
              copie[i][j]=PIXEL_WHITE;
            }
          }
        }
     }
     copie.save("squelette"+numero+".png");
}
Пример #8
0
void filtre_median(ImagePNG &originale,string numero)//filtre median
{
  int tab[8];
  ImagePNG copie=originale;
  int gris1,gris2,gris3,gris4,gris5,gris6,gris7,gris8;
  for (unsigned i=1;i<originale.height()-1;i++)
  {
    for (unsigned j=1;j<originale.width()-1;j++)
    {

      gris1=(copie[i+1][j].red()+copie[i+1][j].blue()+copie[i+1][j].green())/3;
      gris2=(copie[i-1][j].red()+copie[i-1][j].blue()+copie[i-1][j].green())/3;
      gris3=(copie[i][j-1].red()+copie[i][j-1].blue()+copie[i][j-1].green())/3;
      gris4=(copie[i][j+1].red()+copie[i][j+1].blue()+copie[i][j+1].green())/3;
      gris5=(copie[i-1][j-1].red()+copie[i-1][j-1].blue()+copie[i-1][j-1].green())/3;
      gris6=(copie[i+1][j-1].red()+copie[i+1][j-1].blue()+copie[i+1][j-1].green())/3;
      gris7=(copie[i+1][j+1].red()+copie[i+1][j+1].blue()+copie[i+1][j+1].green())/3;
      gris8=(copie[i-1][j+1].red()+copie[i-1][j+1].blue()+copie[i-1][j+1].green())/3;

      tab[0]=gris1;
      tab[1]=gris2;
      tab[2]=gris3;
      tab[3]=gris4;
      tab[4]=gris5;
      tab[5]=gris6;
      tab[6]=gris7;
      tab[7]=gris8;
      tab[8]=(copie[i][j].red()+copie[i][j].blue()+copie[i][j].green())/3;
      tri_a_bulle(tab,8);

      if(tab[5]<120)
      {
        originale[i][j]=PIXEL_BLACK;
      }
      else
        originale[i][j]=PIXEL_WHITE;
    }
  }
  originale.save("filtre_median"+numero+".png");
}