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"); }
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"); }
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"); }
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"); }
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); }
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); }
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"); }
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"); }