首先确定封闭区域内的一个像素,称为种子点。将种子点率先引入栈中,并重复以下3个步骤:1.栈顶像素出栈;2.将出栈的像素填充上目标颜色;3.根据左上右下的顺序检查周围的像素,如果不为边缘且还未入栈则将该像素引入栈中。
1.先将种子点(5,6)入栈,并将满足条件的左像素点(4,6)、右像素点(6,6)、下像素点(5,5)引入栈中。
2.首先将(5,5)像素点出栈并且该像素点填充上相应的颜色。并检查(5,5)像素点左、上、右、下四个点,将符合条件的左像素点(4,5)、右像素点(6,5)引入栈中。
3.(6,5)像素点出栈,(6,6)、(7,6)、(6,4)像素点入栈。
以此类推,直至所有的像素点全部出栈,即区域内颜色填充完毕。
总结:该算法的缺点在于具有多次的重复比较判断是否入栈,且有些像素点会多次入栈例如上述中的(6,6)像素点。