Exemple #1
0
        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);
        }