Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. // 2D MEDIAN FILTER wrapper
  2. // image - input image
  3. // result - output image
  4. // N - width of the image
  5. // M - height of the image
  6. void medianfilter(element *image, element *result, int N, int M)
  7. {
  8. // Check arguments
  9. if (!image || N < 1 || M < 1)
  10. return;
  11. // Allocate memory for signal extension
  12. element *extension = new element[(N + 2) * (M + 2)];
  13. // Check memory allocation
  14. if (!extension)
  15. return;
  16. // Create image extension
  17. for (int i = 0; i < M; ++i)
  18. {
  19. memcpy(extension + (N + 2) * (i + 1) + 1, image + N * i, N * sizeof(element));
  20. extension[(N + 2) * (i + 1)] = image[N * i];
  21. extension[(N + 2) * (i + 2) - 1] = image[N * (i + 1) - 1];
  22. }
  23. // Fill first line of image extension
  24. memcpy(extension, extension + N + 2, (N + 2) * sizeof(element));
  25. // Fill last line of image extension
  26. memcpy(extension + (N + 2) * (M + 1), extension + (N + 2) * M, (N + 2) * sizeof(element));
  27. // Call median filter implementation
  28. _medianfilter(extension, result ? result : image, N + 2, M + 2);
  29. // Free memory
  30. delete[] extension;
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement