[发明专利]一种解决种子填充算法中像素多次出入栈问题的方法无效
申请号: | 201210139736.8 | 申请日: | 2012-05-08 |
公开(公告)号: | CN102693525A | 公开(公告)日: | 2012-09-26 |
发明(设计)人: | 毛峡;刘运龙;薛雨丽;陈立江 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06T1/60 | 分类号: | G06T1/60;G06T11/40 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 解决 种子 填充 算法 像素 多次 出入 问题 方法 | ||
(一)技术领域
本发明涉及一种解决简单的种子填充算法中存在某些像素多次出入栈结构问题的方法,属于计算机图形学区域填充领域。
(二)背景技术
区域填充是指根据区域轮廓线,将其围成的封闭区域用不同的颜色、灰度、线条或者符号进行填充,该区域可以是带孔的也可以是不带孔的。区域填充一般分为两步进行:第一,确定需要进行填充的像素有哪些;第二,确定用什么颜色值进行填充。区域填充是计算机图形学图形生成领域中的一项重要而基本的内容,在交互式图形设计、图形分析等领域中有着广泛的应用,因此一直是计算机图形学研究的热点问题之一。
在光栅显示系统中有两种传统的区域填充算法,一种是通过确定横越区域的扫描线的覆盖间隔来填充的扫描线算法,另一种是从给定的位置开始填充直到指定的边界为止的种子填充算法。扫描线算法主要用来填充比较简单的多边形区域,比如一些简单的多边形和圆,该算法对轮廓线的形状有一定的要求,在处理复杂区域时往往失效。而种子填充算法则可以很好地解决边界比较复杂的区域填充问题,该算法通过事先确定需要填充区域内的一些点,这些点被称为种子点,然后以这些点为起点,用四向连通方法或者八向连通方法寻找区域内的所有点并进行填充。
种子填充算法及在其基础上进行改进形成的算法目前已经是区域填充的主流算法。可以使用栈结构实现简单的种子填充算法,算法原理如下:种子像素入栈;当栈非空时重复执行如下三步操作:
(1)栈顶像素出栈;
(2)将出栈像素进行颜色填充;
(3)按顺序检查与出栈像素相邻的四个像素(四向连通方法)或者八个像素(八向连通方法),
若其中某个像素不在边界且未进行颜色填充,则把该像素入栈。
简单的种子填充算法把太多的像素压入栈结构,有些像素甚至会多次出入栈结构,一方面在很大程度上降低了算法执行的效率,另一方法还要求很大的存储空间来实现栈结构。
如果能对已经进入过栈结构的像素进行标志,使得该像素不会再次进入栈结构,这将能很好地解决某些像素多次出入栈结构的问题,在一定程度上降低算法对存储空间的要求,并提高算法的执行效率。
通过对现有国内资料的分析,发现目前还缺少从实现种子填充算法的三个步骤着手进行分析解决某些像素多次出入栈结构的问题的方法。本发明正是通过分析实现种子填充算法的三个步骤相互之间的关系,提出一种可以简单有效地解决某些像素多次出入栈结构问题的方法。
(三)发明内容
本发明的目的在于提出一种可以简单有效地解决种子填充算法中某些像素多次出入栈结构问题的方法,可用于提高传统种子填充算法执行效率和减少实现栈结构所需要的存储空间。
本发明的目的通过如下措施来达到:首先,将种子像素置成填充区域所要求的颜色(简称区域填充颜色),并压入栈结构;然后,当栈非空时重复执行如下两个步骤:
(1)栈顶像素出栈;
(2)按左、上、右、下的顺序检查与出栈像素相邻的四个像素,若其中某个像素未置成区域填充颜色且不属于边界像素,则将该像素置成区域填充颜色,并入栈。
(四)附图说明
图1为传统的简单种子填充算法流程图。
图2为本发明提出的经过改进后的种子填充算法流程图。
图3中的A、B、C、D为出栈像素根据四向连通算法确定的四个像素。
图4中的白点为对大小为128×128像素的正方形区域进行填充之前确定的种子点。
图5给出需要进行填充的区域轮廓,轮廓内部的白点表示选择的种子点。
图6给出图5运行本发明算法后的结果。
(五)具体实施方式
下面结合附图对本发明的技术方案作进一步的详细描述。
本发明设计了一种解决简单种子填充算法中存在的对某些像素进行多次出入栈操作问题的方法。经过该方法改进后的种子填充算法相比于未改进的简单种子填充算法,无论在算法的执行效率还是实现栈结构所需要的存储空间都有一定程度的优化。传统的种子填充算法流程如图1所示,本发明的算法流程如图2所示,现以图5给定的需要进行填充的区域为具体实例详细说明具体实施步骤。
(1)对区域轮廓像素进行标志
该步骤的具体方法是,对图像中的所有像素均设置一个标志值,例如对于像素(x,y),其对应的标志值为Flag(x,y),如像素(x,y)属于区域轮廓,则令Flag(x,y)=1,否则令Flag(x,y)=0。
(2)确定种子点
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210139736.8/2.html,转载请声明来源钻瓜专利网。