Advertisement
Eastkap

filtrer median

Oct 15th, 2016
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.21 KB | None | 0 0
  1. image_t *filtrer_median(image_t *src){
  2.     image_t *nouvelle=copier_image(src);
  3.     int i,j,k,nombrepixels=src->h*src->w,valeurs[20],c=0,debut;
  4.  
  5.     //meme technique que convolution sauf quici dim=5
  6.     for(i=0;i<nombrepixels;i++){ // on itere de pixel en pixel
  7.         c=0,debut=1;
  8.         //attention les coins on les veut pas!
  9.         for(j=i-2;j<=i+2;j++){ // on itere de gauche a droite
  10.             if(i/src->w==j/src->w){ // on teste si i et j sont dans la mm ligne
  11.                 for(k=j-((2-debut)*src->w);k<=j+((2-debut)*src->w);k+=src->w){ // on itere de haut en bas
  12.                     valeurs[c]=(k<0 || k>nombrepixels)?src->buff[j]:src->buff[k];
  13.                     //printf("%d\n",valeurs[c]);
  14.                     c++;
  15.                 }
  16.             }
  17.             else{
  18.                 for(k=i-((2-debut)*src->w);k<=i+((2-debut)*src->w);k+=src->w){ // on itere de haut en bas
  19.                     valeurs[c]=(k<0 || k>nombrepixels)?src->buff[i]:src->buff[k];
  20.                     //printf("%d\n",valeurs[c]);
  21.                     c++;
  22.                 }
  23.             }
  24.             debut=(j==i+1)?1:0;
  25.         }
  26.         trie(valeurs);
  27.         nouvelle->buff[i]=valeurs[10];
  28.     }
  29.     return nouvelle;
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement