Имя: Пароль:
IT
 
Подскажите пожалуйста, как можно оптимизировать алгоритм рекусривной заливики?
0 batmansoft
 
09.01.16
18:31
Добрый день. Пишу программу распознавания образов на изображениях. В программе есть кусок, который выделяет отдельные объекты на бинаризированном изображении, он использует рекурсивный алгоритм заливки:
        /// <summary>
        /// Метод выполняет рекурсивную заливку ограниченной области
        /// </summary>
        /// <param name="xCoordInt">Координата по оси Х</param>
        /// <param name="yCoordInt">Координата по оси У</param>
        public void RecursiveFill(int xCoordInt, int yCoordInt)
        {

            //Если дошли до границы, то выходим
            if (CompareBool(xCoordInt, yCoordInt)) return;

            //Иначе меняем цвет пикселя на нужный
            SetPixel(xCoordInt, yCoordInt);

            //Идём в глубь рекурсии
            RecursiveFill(xCoordInt, yCoordInt + 1);
            RecursiveFill(xCoordInt, yCoordInt - 1);
            RecursiveFill(xCoordInt - 1, yCoordInt);
            RecursiveFill(xCoordInt + 1, yCoordInt);

        }
Но на некоторых картинках сталкиваюсь с проблемой переполнения стека. Подскажите пожалуйста, возможные пути решения проблемы, может алгоритм можно как-то оптимизировать?
1 H A D G E H O G s
 
09.01.16
18:33
Жесть как она есть.
2 Провинциальный 1сник
 
09.01.16
18:34
3 Garykom
 
гуру
09.01.16
18:42
(0) открой для себя OpenCV
2 + 2 = 3.9999999999999999999999999999999...