Guest User

Untitled

a guest
Apr 30th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. char mysmooth1_ descr[] = "my smooth1: My smooth1 replaced avg() func. and assign sum to pixel";
  2.  
  3. void mysmooth1 (int dim, pixel *src, pixel *dst)
  4. {
  5. int i, j;
  6. int ii, jj;
  7. pixel_ sum sum;
  8. pixel current_ pixel;
  9.  
  10. for (i = 0; i < dim; i++)
  11. for (j = 0; j < dim; j++)
  12. {
  13. initialize_pixel_sum(&sum);
  14. for(ii = max(i-1, 0); ii <= min(i+1, dim-1); ii++)
  15. for(jj = max(j-1, 0); jj <= min(j+1, dim-1); jj++)
  16. accumulate_sum(&sum, src[RIDX(ii, jj, dim)]);
  17. {
  18. current_ pixel.red = (unsigned short) (sum.red/sum.num);
  19. current_ pixel.green = (unsigned short) (sum.green/sum.num);
  20. current_ pixel.blue = (unsigned short) (sum.blue/sum.num);
  21. dst[RIDX(i, j, dim)] = current_pixel;
  22.  
  23. }
  24. }
  25. }
  26.  
  27. static void accumulate_ sum (pixel_sum *sum, pixel p)
  28.  
  29. {
  30.  
  31. sum->red += (int) p.red;
  32.  
  33. sum->green += (int) p.green;
  34.  
  35. sum->blue += (int) p.blue;
  36.  
  37. sum->num++;
  38.  
  39. return;
  40. }
  41.  
  42. char mysmooth2_descr[] = "my smooth2: My smooth1 replaced avg() func. and assign sum to pixel and accumulate sum func.";
  43.  
  44. void mysmooth2(int dim, pixel *src, pixel *dst)
  45.  
  46. {
  47. int i, j, num;
  48. int ii, jj;
  49. pixel_sum sum;
  50. pixel current_pixel;
  51.  
  52. for (i = 0; i < dim; i++)
  53. for (j = 0; j < dim; j++)
  54. {
  55. initialize_pixel_sum(&sum);
  56. for(ii = max(i-1, 0); ii <= min(i+1, dim-1); ii++)
  57. for(jj = max(j-1, 0); jj <= min(j+1, dim-1); jj++)
  58. sum.red += (int) p.red;
  59. sum.green += (int) p.green;
  60. sum.blue += (int) p.blue;
  61. sum.num++;
  62. {
  63. current_ pixel.red = (unsigned short) (sum.red/sum.num);
  64. current_ pixel.green = (unsigned short) (sum.green/sum.num);
  65. current_ pixel.blue = (unsigned short) (sum.blue/sum.num);
  66. dst[RIDX(i, j, dim)] = current_pixel;
  67.  
  68. }
  69. }
  70. }
  71.  
  72. void mysmooth2(int dim, pixel *src, pixel *dst)
  73.  
  74. {
  75. int i, j, num;
  76. int ii, jj;
  77. pixel_sum sum;
  78. pixel current_pixel;
  79.  
  80. for (i = 0; i < dim; i++)
  81. for (j = 0; j < dim; j++) {
  82. initialize_pixel_sum(&sum);
  83. for (ii = max(i - 1, 0); ii <= min(i + 1, dim - 1); ii++)
  84. for (jj = max(j - 1, 0); jj <= min(j + 1, dim - 1); jj++)
  85. sum.red += (int) p.red;
  86. sum.green += (int) p.green;
  87. sum.blue += (int) p.blue;
  88. sum.num++;
  89. {
  90. current_ pixel.red = (unsigned short) (sum.red / sum.num);
  91. current_ pixel.green = (unsigned short) (sum.green / sum.num);
  92. current_ pixel.blue = (unsigned short) (sum.blue / sum.num);
  93. dst[RIDX(i, j, dim)] = current_pixel;
  94.  
  95. }
  96. }
  97. }
Add Comment
Please, Sign In to add comment