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

本文介绍了线性区域填充算法,作为魔棒工具的一种实现方式,对比了传统的8领域填充算法的效率问题。线性填充算法通过水平扫描线,仅保留最左端和最右端像素点,减少了无用遍历和空间占用。详细步骤包括种子点入栈、扫描线扫描、栈中点出栈并扫描相邻行,直至栈为空。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



