Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 2D MEDIAN FILTER wrapper
- // image - input image
- // result - output image
- // N - width of the image
- // M - height of the image
- void medianfilter(element *image, element *result, int N, int M)
- {
- // Check arguments
- if (!image || N < 1 || M < 1)
- return;
- // Allocate memory for signal extension
- element *extension = new element[(N + 2) * (M + 2)];
- // Check memory allocation
- if (!extension)
- return;
- // Create image extension
- for (int i = 0; i < M; ++i)
- {
- memcpy(extension + (N + 2) * (i + 1) + 1, image + N * i, N * sizeof(element));
- extension[(N + 2) * (i + 1)] = image[N * i];
- extension[(N + 2) * (i + 2) - 1] = image[N * (i + 1) - 1];
- }
- // Fill first line of image extension
- memcpy(extension, extension + N + 2, (N + 2) * sizeof(element));
- // Fill last line of image extension
- memcpy(extension + (N + 2) * (M + 1), extension + (N + 2) * M, (N + 2) * sizeof(element));
- // Call median filter implementation
- _medianfilter(extension, result ? result : image, N + 2, M + 2);
- // Free memory
- delete[] extension;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement