CanvasPartition.WaveletSegmentation.RefineSegments C# (CSharp) 메소드

RefineSegments() 개인적인 정적인 메소드

Refines breakpoint by maximising local medians
private static RefineSegments ( List breakpoints, List coverage ) : void
breakpoints List
coverage List
리턴 void
        private static void RefineSegments( List<int> breakpoints, List<double> coverage)
        {
            int halfWindow = 5;
            double totalMedian = CanvasCommon.Utilities.Median(coverage);
            for (int i = 1; i < (int)breakpoints.Count - 1; i++)
            {
                int leftInterval = Math.Min(halfWindow, (breakpoints[i] - breakpoints[i-1])/2);
                int rightInterval = Math.Min(halfWindow, (breakpoints[i+1] - breakpoints[i])/2);
                double bestMedianDifference = Math.Abs(CanvasCommon.Utilities.Median(coverage, breakpoints[i - 1], breakpoints[i]) - totalMedian);
                int bestBreakpoint = breakpoints[i];
                for (int j = breakpoints[i] - leftInterval; j < breakpoints[i] + rightInterval; j++)
                {
                    double tmpMedianDifference = Math.Abs(CanvasCommon.Utilities.Median(coverage, breakpoints[i-1], j) - totalMedian);
                    if (tmpMedianDifference > bestMedianDifference)
                    {
                        bestMedianDifference = tmpMedianDifference;
                        bestBreakpoint = j;
                    }
                }
                breakpoints[i] = bestBreakpoint;
            }
        }