Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- image_t *filtrer_median(image_t *src){
- image_t *nouvelle=copier_image(src);
- int i,j,k,nombrepixels=src->h*src->w,valeurs[20],c=0,debut;
- //meme technique que convolution sauf quici dim=5
- for(i=0;i<nombrepixels;i++){ // on itere de pixel en pixel
- c=0,debut=1;
- //attention les coins on les veut pas!
- for(j=i-2;j<=i+2;j++){ // on itere de gauche a droite
- if(i/src->w==j/src->w){ // on teste si i et j sont dans la mm ligne
- for(k=j-((2-debut)*src->w);k<=j+((2-debut)*src->w);k+=src->w){ // on itere de haut en bas
- valeurs[c]=(k<0 || k>nombrepixels)?src->buff[j]:src->buff[k];
- //printf("%d\n",valeurs[c]);
- c++;
- }
- }
- else{
- for(k=i-((2-debut)*src->w);k<=i+((2-debut)*src->w);k+=src->w){ // on itere de haut en bas
- valeurs[c]=(k<0 || k>nombrepixels)?src->buff[i]:src->buff[k];
- //printf("%d\n",valeurs[c]);
- c++;
- }
- }
- debut=(j==i+1)?1:0;
- }
- trie(valeurs);
- nouvelle->buff[i]=valeurs[10];
- }
- return nouvelle;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement