Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. void filtr(struct IMAGE * obr_pgm, int * fil, int size) {
  2. int **tab;
  3. size = size / sizeof(int);
  4. int suma, suma_wag = 0, i, j, k, m, rozm = (int)sqrt(size);
  5. int przesun = rozm / 2;
  6. tab = (int**)malloc(obr_pgm->width*sizeof(int*));
  7. for ( i = 0; i < obr_pgm->width; i++)
  8. tab[i] = (int*)malloc(obr_pgm->height*sizeof(int));
  9.  
  10. for ( i = 0; i < obr_pgm->width; i++)
  11. {
  12. for ( j = 0; j < obr_pgm->height; j++)
  13. {
  14. tab[i][j] = obr_pgm->data[i][j];
  15. }
  16. }
  17.  
  18. for (i = 0; i < size; i++)
  19. {
  20. suma_wag = suma_wag + fil[i];
  21. }
  22.  
  23. for (i = przesun; i < ((obr_pgm->width) - przesun); i++) {
  24. for (j = przesun; j < ((obr_pgm->height) - przesun); j++) {
  25. suma = 0;
  26. for (k = 0; k < rozm; k++) {
  27. for (m = 0; m < rozm; m++) {
  28. suma = suma + fil[k + m*rozm] * (tab[j + m - przesun][i + k - przesun]);
  29. }
  30. }
  31. if (suma_wag != 0)
  32. suma = suma / suma_wag;
  33. if (suma < 0)
  34. suma = 0;
  35. if (suma > obr_pgm->max)
  36. suma = obr_pgm->max;
  37. obr_pgm->data[j][i] = suma;
  38. }
  39. }
  40. for (i = 0; i < obr_pgm->width; i++)
  41. free(tab[i]);
  42. free(tab);
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement