Exemple #1
0
/* 
 * 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(&current_pixel, sum);
    return current_pixel;
}
Exemple #2
0
/*
 * 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(&current_pixel, sum);
    return current_pixel;
}