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