20Fermer22
onlymedLe 20/04/2008 à 01:22
Si je les avait inversé je pense que le resultat aurait été clair vu que j'aurai une image de dimension differente que celle en entrée non ?

voila en fait le programme acctuel

  /*--recuperation de l'entete--*/
  fgets(stringTmp1,100,fic);
  fgets(stringTmp2,100,fic);
  fscanf(fic,"%d %d",&length,&width);
  fscanf(fic,"%d\n",&ta3);

  /*--affichage de l'entete--*/
  printf("\n\n--Entete--");
  printf("\n----------");
  printf("\n%s%s%d %d \n%d\n",stringTmp1,stringTmp2,length,width,ta3);
  MatriceImgR=malloc_matrice_2d(length+2,width+2);
  MatriceImgV=malloc_matrice_2d(length+2,width+2);
  MatriceImgB=malloc_matrice_2d(length+2,width+2);

// ajout de ligne 0000000  pour entourer l'image  ( 1ere ligne et derniere )

for(i=0;i<length+2;i++)
{
     MatriceImgR[0][i]=0;
     MatriceImgV[0][i]=0;
     MatriceImgB[0][i]=0;
     MatriceImgR[width+1][i]=0;
     MatriceImgV[width+1][i]=0;
     MatriceImgB[width+1][i]=0;
 
}

// pareille pour les colonnes 

for(j=1;j<width+1;j++)
{
     MatriceImgR[j][0]=0;
     MatriceImgV[j][0]=0;
     MatriceImgB[j][0]=0;
     MatriceImgR[j][length+1]=0;
     MatriceImgV[j][length+1]=0;
     MatriceImgB[j][length+1]=0;
 
}


  /*--chargement dans la matrice--*/
  for(i=1;i<length+1;i++) for(j=1;j<width+1;j++)  
    { 
     fscanf(fic,"%d",&varr);
     fscanf(fic,"%d",&varv); 
     fscanf(fic,"%d",&varb); 
     MatriceImgR[i][j]=varr;
     MatriceImgV[i][j]=varv;
     MatriceImgB[i][j]=varb;  
    }





puis l'application du masque ici : FLOU :

{
  MatriceImgROut=malloc_matrice_2d(length,width);
  MatriceImgVOut=malloc_matrice_2d(length,width);
  MatriceImgBOut=malloc_matrice_2d(length,width);
  coefficients=malloc_matrice_2d(3,3);



int h , w , i , j ;



    coefficients[0][0] = 1 ;
    coefficients[0][1] = 1;
    coefficients[0][2] = 1 ;
    coefficients[1][0] = 1;
    coefficients[1][1] = 1;
    coefficients[1][2] = 1 ;
    coefficients[2][0] = 1 ;
    coefficients[2][1] = 1 ;
    coefficients[2][2] = 1 ;

for (h = 0 ; h < width ; h++)
  for (w = 0 ; w < length  ; w++)
  {

	
     MatriceImgROut[h][w] = 0 ;
     MatriceImgVOut[h][w] = 0 ;
     MatriceImgBOut[h][w] = 0 ;






     for (i = 0 ; i <=2  ; i++)
       for (j = 0 ; j <=2 ; j++)
 	{
         MatriceImgROut[h][w] += coefficients[i][j] * MatriceImgR[h+i][w+j] ;
         MatriceImgVOut[h][w] += coefficients[i][j] * MatriceImgV[h+i][w+j] ;
         MatriceImgBOut[h][w] += coefficients[i][j] * MatriceImgB[h+i][w+j] ;
 	}
 
	MatriceImgROut[h][w] /= 9 ;
	MatriceImgVOut[h][w] /= 9 ;
	MatriceImgBOut[h][w] /= 9 ;

 	if(MatriceImgROut[h][w]<0)
        	MatriceImgROut[h][w]=0;
 	else 
 		if(MatriceImgROut[h][w]>255)
          	MatriceImgROut[h][w]=255;

 	if(MatriceImgVOut[h][w]<0)
        	MatriceImgVOut[h][w]=0;
 	else 
 		if(MatriceImgVOut[h][w]>255)
          	MatriceImgVOut[h][w]=255;

 	if(MatriceImgBOut[h][w]<0)
        	MatriceImgBOut[h][w]=0;
 	else 
 		if(MatriceImgBOut[h][w]>255)
          	MatriceImgBOut[h][w]=255;


  }



et pour finir sauvegarder dans la nouvelle image :

 /*--sauvegarde de l'entete--*/
  fprintf(fic,"P3");
  fprintf(fic,"\n# IMG Created %s",ctime(&tm));
  fprintf(fic,"%d %d",length,width);
  fprintf(fic,"\n255\n");

  /*--enregistrement--*/
  for(i=0;i<length;i++) 
  for(j=0;j<width;j++) 
    {
     fprintf(fic,"%d\n",(int)MatriceImgROut[i][j]);
     fprintf(fic,"%d\n",(int)MatriceImgVOut[i][j]);
     fprintf(fic,"%d\n",(int)MatriceImgBOut[i][j]);

    }
       
  /*--fermeture fichier--*/
   fclose(fic); 


si tu vois quelque chose ca m'evitera encore 10h de casse tête ouf