Algorithmix.Forensics.EdgeDetector.Smoothen C# (CSharp) Метод

Smoothen() публичный статический Метод

public static Smoothen ( int edgePoints, int size = 10 ) : int[]
edgePoints int
size int
Результат int[]
        public static int[] Smoothen(int[] edgePoints, int size = 10)
        {
            if (size > edgePoints.Length)
            {
                throw new ArgumentException("Smoothing size is too large for image");
            }

            Queue<int> queue = new Queue<int>(size);
            int[] smooth = new int[edgePoints.Length];
            int sum = 0;
            for (int ii = 0; ii < edgePoints.Length; ii++)
            {
                if (edgePoints[ii] == IgnorePoint) continue;
                if (queue.Count != size)
                {
                    queue.Enqueue(edgePoints[ii]);
                    sum += edgePoints[ii];
                }
                else
                {
                    int discarded = queue.Dequeue();
                    sum -= discarded;
                    sum += edgePoints[ii];
                    queue.Enqueue(edgePoints[ii]);
                }
                smooth[ii] = (int) (sum/(double) queue.Count);
            }

            return smooth;
        }