一:算法介绍
以前做过一个抠图的程序,是基于每个像素的4领域或者8领域,找出满足的所有点,从而填满了满足的区域。
基于8领域填充的地址为:http://nbcoders.com/detail/109. 这种方法很容易实现,但是缺点也很明显,就是效率不高。因为这种方法会将当前没有处理的所有的像素都放进队列之中,从而遍历队列时间和空间会大大增加
本文用的是一种线性区域填充的方法,是一种沿水平扫描线填充的方法。而不需要将每个未处理而又满足条件的像素都保存起来,而是只需要保留扫描线的最左端和最右端的像素点。从而避免了大量的无用遍历和节约了空间
二:算法描述
扫描线算法的基本填充方式是从种子点A出发,分别向左和向右扫描填充满足条件的像素点,分别将最左边和最右边的像素点的位置坐标记下,将其放入栈中。接着,再确定这条扫描线上下相邻的区域,按照同样的方法,并保存该保存的信息。如此重复,直到栈为空。
详细步骤如下:</