Inundación llenar con una pila

Estoy usando el algoritmo de relleno de inundación recursivo en Java para llenar algunas áreas de una imagen. Con imágenes muy pequeñas funciona bien, pero cuando la imagen se hace más grande, la JVM me da un error de sobrecarga de flujo.

Esa es la razón por la que tengo que reimplementar el método usando un Flood Fill con mi propia pila. (Leí que esa es la mejor manera de hacerlo en este tipo de casos)

¿Alguien puede explicarme cómo codificarlo? (si no tiene el código a mano, con el pseudocódigo del algoritmo estará bien)

He leído mucho en Internet pero no lo he entendido muy bien.

EDITAR: agregué mi código recursivo

public void floodFill(int x, int y, Color targetColor,Color replacementColor) {

    if (img.getRGB(x, y) != targetColor.getRGB()) return;

    img.setRGB(x, y, replacementColor.getRGB());
    floodFill(x - 1, y, targetColor, replacementColor);
    floodFill(x + 1, y, targetColor, replacementColor);
    floodFill(x, y - 1, targetColor, replacementColor);
    floodFill(x, y + 1, targetColor, replacementColor);

    return;

}

¡Gracias!

Respuestas a la pregunta(4)

Su respuesta a la pregunta