private static int K3MStep(int[,] map) { int pixelsThinned = 0, mapWidth = map.GetLength(0), mapHeight = map.GetLength(1); List <(int x, int y)> border = new List <(int x, int y)>(); for (int x = 0; x < mapWidth; x++) { for (int y = 0; y < mapHeight; y++) { if (A0.Contains(PixelWeight(map, x, y))) { border.Add((x, y)); } } } foreach (var(x, y) in border) { if (map[x, y] != 0 && A1.Contains(PixelWeight(map, x, y))) { map[x, y] = 0; pixelsThinned++; } } foreach (var(x, y) in border) { if (map[x, y] != 0 && A2.Contains(PixelWeight(map, x, y))) { map[x, y] = 0; pixelsThinned++; } } foreach (var(x, y) in border) { if (map[x, y] != 0 && A3.Contains(PixelWeight(map, x, y))) { map[x, y] = 0; pixelsThinned++; } } foreach (var(x, y) in border) { if (map[x, y] != 0 && A4.Contains(PixelWeight(map, x, y))) { map[x, y] = 0; pixelsThinned++; } } foreach (var(x, y) in border) { if (map[x, y] != 0 && A5.Contains(PixelWeight(map, x, y))) { map[x, y] = 0; pixelsThinned++; } } return(pixelsThinned); }