/* * avg - Returns averaged pixel value at (i,j) */ static pixel avg(int dim, int i, int j, pixel *src) { int ii, jj; pixel_sum sum; pixel current_pixel; initialize_pixel_sum(&sum); for(ii = max(i-1, 0); ii <= min(i+1, dim-1); ii++) for(jj = max(j-1, 0); jj <= min(j+1, dim-1); jj++) accumulate_sum(&sum, src[RIDX(ii, jj, dim)]); assign_sum_to_pixel(¤t_pixel, sum); return current_pixel; }
/* * avg - Returns averaged pixel value at (i,j) */ static inline pixel avg(int dim, int i, int j, pixel *src) { int ii, jj; pixel_sum sum; pixel current_pixel; initialize_pixel_sum(&sum); for(ii = max(i-1, 0); ii <= min(i+1, dim-1); ii++) for(jj = max(j-1, 0); jj <= min(j+1, dim-1); jj++) { accumulate_sum(&sum, src[RIDX(ii, jj, dim)]); // "weighted" averge: add (i,j) pixel to sum twice if(ii == i && jj == j) accumulate_sum(&sum, src[RIDX(ii, jj, dim)]); } assign_sum_to_pixel(¤t_pixel, sum); return current_pixel; }