Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- char mysmooth1_ descr[] = "my smooth1: My smooth1 replaced avg() func. and assign sum to pixel";
- void mysmooth1 (int dim, pixel *src, pixel *dst)
- {
- int i, j;
- int ii, jj;
- pixel_ sum sum;
- pixel current_ pixel;
- for (i = 0; i < dim; i++)
- for (j = 0; j < dim; j++)
- {
- 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)]);
- {
- current_ pixel.red = (unsigned short) (sum.red/sum.num);
- current_ pixel.green = (unsigned short) (sum.green/sum.num);
- current_ pixel.blue = (unsigned short) (sum.blue/sum.num);
- dst[RIDX(i, j, dim)] = current_pixel;
- }
- }
- }
- static void accumulate_ sum (pixel_sum *sum, pixel p)
- {
- sum->red += (int) p.red;
- sum->green += (int) p.green;
- sum->blue += (int) p.blue;
- sum->num++;
- return;
- }
- char mysmooth2_descr[] = "my smooth2: My smooth1 replaced avg() func. and assign sum to pixel and accumulate sum func.";
- void mysmooth2(int dim, pixel *src, pixel *dst)
- {
- int i, j, num;
- int ii, jj;
- pixel_sum sum;
- pixel current_pixel;
- for (i = 0; i < dim; i++)
- for (j = 0; j < dim; j++)
- {
- 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++)
- sum.red += (int) p.red;
- sum.green += (int) p.green;
- sum.blue += (int) p.blue;
- sum.num++;
- {
- current_ pixel.red = (unsigned short) (sum.red/sum.num);
- current_ pixel.green = (unsigned short) (sum.green/sum.num);
- current_ pixel.blue = (unsigned short) (sum.blue/sum.num);
- dst[RIDX(i, j, dim)] = current_pixel;
- }
- }
- }
- void mysmooth2(int dim, pixel *src, pixel *dst)
- {
- int i, j, num;
- int ii, jj;
- pixel_sum sum;
- pixel current_pixel;
- for (i = 0; i < dim; i++)
- for (j = 0; j < dim; j++) {
- 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++)
- sum.red += (int) p.red;
- sum.green += (int) p.green;
- sum.blue += (int) p.blue;
- sum.num++;
- {
- current_ pixel.red = (unsigned short) (sum.red / sum.num);
- current_ pixel.green = (unsigned short) (sum.green / sum.num);
- current_ pixel.blue = (unsigned short) (sum.blue / sum.num);
- dst[RIDX(i, j, dim)] = current_pixel;
- }
- }
- }
Add Comment
Please, Sign In to add comment