private static IList<PointF> findContour(Gray<byte>[,] templateImg) { var contour = templateImg.FindContour(minGradientStrength: 150).Select(x => (PointF)x).ToList(); /*********** cut bottom border and shift contour beginning to the first non-border point ***************/ int firstIdx = -1; int lastIdx = -1; for (int i = 0; i < contour.Count; i++) { if (contour[i].Y == (templateImg.Height() - 1)) { if (firstIdx == -1) firstIdx = i; lastIdx = i; } } //return contour; return new CircularList<PointF>(contour).GetRange(lastIdx, contour.Count - (lastIdx - firstIdx + 1)); }