Advertisement
Guest User

Untitled

a guest
Oct 29th, 2014
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. void iso_diffusion_denoising(image *x, image *y,
  2. float kappa, int iters)
  3. {
  4. /* Function of removing noise from pictures
  5. *
  6. * image x : input picture
  7. * image y : help picture of same size
  8. * float kappa : denoising constant
  9. * int iters : number of itereations
  10. */
  11. // Initialize local variables
  12. int i; int j; int iter;
  13. float ** tmp;
  14. int m = (*x).m; int n = (*x).n;
  15. float ** data0 = (*x).image_data;
  16. float ** data1 = (*y).image_data;
  17. // Fill top and bottom edge
  18. for (i=0; i<m; i++)
  19. {
  20. data1[i][0] = data0[i][0];
  21. data1[i][n-1] = data0[i][n-1];
  22. }
  23. // Fill left and right edges
  24. for (i=1; i<n-1; i++) // skip corners
  25. {
  26. data1[0][i] = data0[0][i];
  27. data1[m-1][i] = data0[m-1][i];
  28. }
  29. for (iter=0; iter<iters; iter++)
  30. {
  31. // Fill interior
  32. for (i=1; i<m-1; i++)
  33. {
  34. for (j=1; j<n-1; j++)
  35. {
  36. data1[i][j] = data0[i][j] +kappa*(data0[i-1][j]
  37. +data0[i][j-1] -4*data0[i][j] +data0[i][j+1]
  38. +data0[i+1][j]);
  39. }
  40. }
  41. // Swap links between data0 and data1
  42. tmp = data0;
  43. data0 = data1;
  44. data1 = tmp;
  45. }
  46. (*x).image_data = data0;
  47. (*y).image_data = data1;
  48. return;
  49. }
  50. int main(int argc, char *argv[])
  51. {
  52. int m, n, c, iters;
  53. float kappa;
  54. image u, u_bar;
  55. unsigned char *image_chars;
  56. char *input_jpeg_filename, *output_jpeg_filename;
  57. /* read from command line: kappa, iters, input_jpeg_filename, output_jpeg_filename */
  58. kappa = atof(argv[1]);
  59. iters = atoi(argv[2]);
  60. input_jpeg_filename = argv[3];
  61. output_jpeg_filename = argv[4];
  62. import_JPEG_file(input_jpeg_filename, &image_chars, &m, &n, &c);
  63. allocate_image (&u, m, n);
  64. allocate_image (&u_bar, m, n);
  65. convert_jpeg_to_image (image_chars, &u);
  66. iso_diffusion_denoising (&u, &u_bar, kappa, iters);
  67. convert_image_to_jpeg (&u_bar, image_chars);
  68. export_JPEG_file(output_jpeg_filename, image_chars, m, n, c, 75);
  69. deallocate_image (&u);
  70. deallocate_image (&u_bar);
  71. return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement