友情提示:同学您好,此页面仅供预览,在此页面学习不会被统计哦! 请进入学习空间后选择课程学习。

一、区域概念

1) 区域:指相互连通的一组象素的集合。区域通常由一个封闭的轮廓线来定义,处于一个封闭轮廓线内的所有象素点构成一个区域。

2) 区域填充:将区域内的象素置成新的颜色,新的颜色可以是常数,表示填以某种颜色;也可以是变量,表示填充的是图案。


3) 区域填充需解决的问题:

     a)确定需要填充哪些象素;b)确定用什么颜色;

4) 区域的表示形式:  顶点表示法、 点阵表示法、 内点表示法、 边界表示法


5) 区域填充的算法类别:

    a) 种子填充(递归算法): 简单种子填充、扫描线种子填充

    b)有序边表法(适于软件实现):对每个元素值访问一次,输入输出要求最少

    c)边填充算法(正负相消法,适合硬件实现): 边填充、栅栏填充、边标志法

二、种子填充算法

1. 区域划分

区域是连通的  --  只有在连通的区域,才可能将种子点的颜色扩散到区域的其他点。

连通性  --  区域中的两点,在某种规则下通过运动可以相互到达。

连通区域分类  --  四连通区域、八连通区域


区域限制 -- 四连通区域可以看作是八连通区域,但它看作是四连通区域或看作是八连通区域时,边界是不同的。看作是四连通区域时,边界只需要是八连通;而作为八连通区域,边界必须是四连通的。


1. 简单种子填充算法

算法思想:给定区域中一种子点(x,y),首先判断该点是否是区域内一点,若是,则将该点填充为新颜色,然后将周围的四个点作为新的种子进行同样的处理,通过这种扩散完成对整个区域的填充   (边界、内点,颜色不同)

算法前提:1). 区域用点阵方法表示  ;2). 区域内部像素具有同一种颜色,而边界像素具有另一种颜色

算法特点:算法基于连通域内像素的连贯性,以递归方式确定区域内部点与边界点,而不涉及区域外部的点,从而有效地提高了算法的效率。

2. 简单种子填充算法实现 --  内点表示


3. 简单种子填充算法实现 --  边界表示


4. 简单种子填充算法 -- 边界表示 -- 栈实现