区域填充算法

Posted penglimei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区域填充算法相关的知识,希望对你有一定的参考价值。

三、区域填充算法——>【要求:区域是连通的

区域:指已经表示成点阵形式的填充图形,是象素的集合。
1、区域有两种表示形式:

技术分享图片

1)内点表示:枚举出区域内部的所有象素,内部所有象素着同一个颜色,边界像素着与内部象素不同的颜色。
2)边界表示:枚举出区域外部的所有象素,边界上的所有象素着同一个颜色,内部像素着与边界象素不同的颜色。

2、区域分为:
技术分享图片
1)四向连通区域:从区域上一点出发可通过【上、下、左、右】四个方向移动的组合,在不越出区域的前提下,到达区域内的任意象素。
2)八向连通区域:从区域上一点出发可通过【上、下、左、右、左上、右上、左下、右下】八个方向移动的组合,在不越出区域的前提下,到达区域内的任意象素。

区域填充:将区域内的一点(常称【种子点】)赋予给定颜色,然后将这种颜色扩展到整个区域内的过程。

简单四连通种子填充算法(区域填充递归算法)——>用【栈结构】来实现
原理——>种子象素入栈,当【栈非空】时重复如下三步:


技术分享图片

【不足】

  a)某些象素会多次入栈,降低算法效率,栈结构占空间;
        b)递归执行算法简单,但效率不高,区域内每个象素都要进/出栈
        c)费时费内存;


























以上是关于区域填充算法的主要内容,如果未能解决你的问题,请参考以下文章

02 光栅图形学算法-- 扫描转换区域填充反走样

opencv入门漫水填充算法(Floodfill)

平铺地图JavaScript中的算法填充封闭区域

简述边界表示的四连通区域的种子填充算法的基本思想和执行步骤

洪水覆盖算法(Flood Fill):颜色填充

IOS h5填充到安全区域