Example #1
0
        public static IEnumerable <Point2D> MedianFilter(this IList <Point2D> data, double windowSize)
        {
            if (data.Count == 0)
            {
                yield break;
            }

            var orderedData   = data.OrderBy(p => p.X).ToList();
            var slidingWindow = new SlidingWindow <Point2D>(orderedData, p => p.X, windowSize, WindowPositioningType.CenteredAtPosition);

            foreach (var point in orderedData)
            {
                slidingWindow.SetPosition(point.X);
                var medianY = slidingWindow.Median(p => p.Y);
                yield return(new Point2D(point.X, medianY));
            }
        }