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);
}
Но на некоторых картинках сталкиваюсь с проблемой переполнения стека. Подскажите пожалуйста, возможные пути решения проблемы, может алгоритм можно как-то оптимизировать?
|
|