Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- namespace Recognizer
- {
- internal static class MedianFilterTask
- {
- public static double[,] MedianFilter(double[,] original)
- {
- int width = original.GetLength(0);
- int heigth = original.GetLength(1);
- var medians = new double[width, heigth];
- var pixelsAround = new List<double>();
- for (int i = 0; i < width; i++)
- for (int j = 0; j < heigth; j++)
- {
- for (int x = 0; x <= 2; x++) //область медианы по х
- for (int y = 0; y <= 2; y++) //область медианы по у
- if ((i + x > 0) && (j + y > 0) && (i + x <= width) && (j + y <= heigth))
- pixelsAround.Add(original[i + x - 1, j + y - 1]);
- pixelsAround.Sort();
- int numberOfNearbyCells;
- double median;
- numberOfNearbyCells = pixelsAround.Count;
- if (numberOfNearbyCells % 2 == 0)
- median = (pixelsAround[numberOfNearbyCells / 2 - 1] + pixelsAround[numberOfNearbyCells / 2]) / 2;
- else
- median = pixelsAround[numberOfNearbyCells / 2];
- medians[i, j] = median;
- pixelsAround = new List<double>();
- }
- return medians;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement