Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void filtr(struct IMAGE * obr_pgm, int * fil, int size) {
- int **tab;
- size = size / sizeof(int);
- int suma, suma_wag = 0, i, j, k, m, rozm = (int)sqrt(size);
- int przesun = rozm / 2;
- tab = (int**)malloc(obr_pgm->width*sizeof(int*));
- for ( i = 0; i < obr_pgm->width; i++)
- tab[i] = (int*)malloc(obr_pgm->height*sizeof(int));
- for ( i = 0; i < obr_pgm->width; i++)
- {
- for ( j = 0; j < obr_pgm->height; j++)
- {
- tab[i][j] = obr_pgm->data[i][j];
- }
- }
- for (i = 0; i < size; i++)
- {
- suma_wag = suma_wag + fil[i];
- }
- for (i = przesun; i < ((obr_pgm->width) - przesun); i++) {
- for (j = przesun; j < ((obr_pgm->height) - przesun); j++) {
- suma = 0;
- for (k = 0; k < rozm; k++) {
- for (m = 0; m < rozm; m++) {
- suma = suma + fil[k + m*rozm] * (tab[j + m - przesun][i + k - przesun]);
- }
- }
- if (suma_wag != 0)
- suma = suma / suma_wag;
- if (suma < 0)
- suma = 0;
- if (suma > obr_pgm->max)
- suma = obr_pgm->max;
- obr_pgm->data[j][i] = suma;
- }
- }
- for (i = 0; i < obr_pgm->width; i++)
- free(tab[i]);
- free(tab);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement