一种闭合曲线图形填充方法
技术领域
本发明涉及计算机图形处理技术领域,更具体地说,涉及一种闭合曲线图形填充方法。
背景技术
随着计算机的技术发展,以及图形设计的技术推广,计算机辅助设计(CAD)能利用计算机及其图形设计软件帮助设计人员快速设计。在图形设计中,计算机通常要对不同的方案进行大量的计算和分析,由计算机自动设计加工,将草图变为工作图。另外设计人员可以利用CAD进行对图形的编辑、放大、缩小、平移和旋转等相关的操作,以满足人们对产品和工程进行设计、绘图和分析等功能需求。因此,CAD在建筑工程、装饰设计、模具零件和园林景观等多个领域扮演这重要角色。
CAD系统一般分二维CAD系统和三维CAD系统,二维CAD系统以“点、线、圆和文本…”等几何元素设计成几何图形,对几何元素进行图形处理。其中,对于闭合曲线图形的种子填充方法,目前的技术还存在一些缺陷。
传统的种子填充方法是需要选取一个图形区域内的种子,而种子的确定需要制定边界规则去判断,这就影响了种子的选取效率和填充的准确性。另外针对多对象的图形、曲线交叉图形和复杂图形,传统的种子填充方法会存在填充不完整和填充错误的缺陷。因此,如何提高图形填充效率和填充的准确性,是现阶段CAD图形填充操作的关键问题。
发明内容
本发明的目的在于克服现有技术中的缺点与不足,提供一种实用性强和适应性强的闭合曲线图形填充方法,该闭合曲线图形填充方法可有效避免因图形对象多和图形复杂而产生填充不完整和填充错误的问题,从而大大提高图形填充的效率和填充的准确性。
为了达到上述目的,本发明通过下述技术方案予以实现:一种闭合曲线图形填充方法,其特征在于:
首先,输入闭合曲线图形,并选取闭合曲线图形边界的外接矩形以缩小填充范围;
其次,对外接矩形平均分为四个区域,并选取各区域的角落点作为种子的填充点;
再次,分别对四个区域中闭合曲线图形的外部区域进行种子填充,得到闭合曲线图形的外部区域;
最后,分别提取四个区域中未填充的区域,作为闭合曲线图形的内部闭合区域;并对闭合曲线图形的内部闭合区域进行填充。
在上述方案中,本发明的闭合曲线图形填充方法是采用对闭合曲线图形的外部区域进行种子填充的填充模式,来得到内部闭合区域的,从而避免了传统方法中直接采用在内部闭合区域进行种子选取点导致不确定性的问题,本发明方法能够确定种子选取点一定在闭合曲线图形的外部区域。通过对外部区域进行种子填充方法则可得到已填充图形和未填充图形,这里的未填充图形即为目标填充图形,也为内部闭合区域。该闭合曲线图形填充方法可有效避免因图形对象多和图形复杂而产生填充不完整和填充错误的问题,从而大大提高图形填充的效率和填充的准确性。
具体地说,包括以下步骤:
步骤s101:输入闭合曲线图形Im×n,曲线图形边界为L={Bt(xt,yt)|t=1,2,…,T},曲线内部闭合区域设置为D,其中,闭合曲线图形中位于边界的像素点I(x,y)按以下公式标记:
步骤s102:确定闭合曲线图形的外接矩形:根据边界L的点集Bt,计算外接矩形的像素点I′(x,y),x∈[xmin,xmax]∩y∈[ymin,ymax],以缩小填充范围;其中,
步骤s103:将外接矩形平均分为四块区域:其中,每个区域的像素点为:
其中(xm,ym)为中点坐标,
步骤s104:选取各区域的角落点作为种子的填充点,设si为矩形分块Ii′的角落点,则
步骤s105:分别对四个区域中闭合曲线图形的外部区域进行种子填充;种子填充的过程采用广度优先搜索方法进行填充:当遇到边界点B或者超越分块Ii′的边界时,停止搜索;将广度优先搜索过程中经过的像素点Ii′(x,y)标记为-1,则像素点Ii′(x,y)标记为-1的区域为四个区域中闭合曲线图形的外部区域;
步骤s106:分别提取四个区域中未填充的区域,作为闭合曲线图形的内部闭合区域:像素点Ii′(x,y)标记为0的区域则表示未填充的区域,即是所求的闭合曲线图形的内部闭合区域,则内部闭合区域设置为D={dk(ik,jk)};
在内部闭合区域为D={dk(ik,jk)}范围内的像素点的灰度值设置为统一数值,以实现闭合曲线图形内部闭合区域的填充。
在步骤s104中,所述各区域的角落点是指外接矩形的顶点。
在步骤s105中,采用广度优先搜索方法进行填充是指:采用广度优先搜索方法对上、下、左和右的四个填充方向进行填充。
在上述步骤s104中,对外部区域进行填充时,选取的种子都位于各区域的角落点来作为种子的填充点,从而使得种子的选取规则简单并且准确,不与图形的复杂度程度相关。而填充过程中,直接填充外接矩形中曲线图形的外部区域,一旦曲线图形的外部区域确定下来,则剩下未填充的区域则为曲线图形的内部闭合区域,既是目标填充图形。上述的广度优先搜索方法是现有的算法,而种子填充算法也是现有的算法。
与现有技术相比,本发明具有如下优点与有益效果:本发明闭合曲线图形填充方法实用性强和适应性强,该闭合曲线图形填充方法可有效避免因图形对象多和图形复杂而产生填充不完整和填充错误的问题,从而大大提高图形填充的效率和填充的准确性。
附图说明
图1是本发明闭合曲线图形填充方法的流程图;
图2(a)-2(g)是本发明闭合曲线图形填充方法的过程图;
具体实施方式
下面结合附图与具体实施方式对本发明作进一步详细的描述。
实施例
如图1至图2(g)所示,本发明闭合曲线图形填充方法是这样的:
首先,输入闭合曲线图形,并选取闭合曲线图形边界的外接矩形以缩小填充范围;
其次,对外接矩形平均分为四个区域,并选取各区域的角落点作为种子的填充点;
再次,分别对四个区域中闭合曲线图形的外部区域进行种子填充,得到闭合曲线图形的外部区域;
最后,分别提取四个区域中未填充的区域,作为闭合曲线图形的内部闭合区域;并对闭合曲线图形的内部闭合区域进行填充。
在上述方案中,本发明的闭合曲线图形填充方法是采用对闭合曲线图形的外部区域进行种子填充的填充模式,来得到内部闭合区域的,从而避免了传统方法中直接采用在内部闭合区域进行种子选取点导致不确定性的问题,本发明方法能够确定种子选取点一定在闭合曲线图形的外部区域。通过对外部区域进行种子填充方法则可得到已填充图形和未填充图形,这里的未填充图形即为目标填充图形,也为内部闭合区域。该闭合曲线图形填充方法可有效避免因图形对象多和图形复杂而产生填充不完整和填充错误的问题,从而大大提高图形填充的效率和填充的准确性。
具体地说,包括以下步骤:
步骤s101:输入闭合曲线图形Im×n,曲线图形边界为L={Bt(xt,yt)|t=1,2,…,T},曲线内部闭合区域设置为D,其中,闭合曲线图形中位于边界的像素点I(x,y)按以下公式标记:
步骤s102:确定闭合曲线图形的外接矩形:根据边界L的点集Bt,计算外接矩形的像素点I′(x,y),x∈[xmin,xmax]∩y∈[ymin,ymax],以缩小填充范围;其中,
步骤s103:将外接矩形平均分为四块区域:其中,每个区域的像素点为:
其中(xm,ym)为中点坐标,
步骤s104:选取各区域的角落点作为种子的填充点,设si为矩形分块Ii′的角落点,则
步骤s105:分别对四个区域中闭合曲线图形的外部区域进行种子填充;种子填充的过程采用广度优先搜索方法进行填充:当遇到边界点B或者超越分块Ii′的边界时,停止搜索;将广度优先搜索过程中经过的像素点Ii′(x,y)标记为-1,则像素点Ii′(x,y)标记为-1的区域为四个区域中闭合曲线图形的外部区域;
步骤s106:分别提取四个区域中未填充的区域,作为闭合曲线图形的内部闭合区域:像素点Ii′(x,y)标记为0的区域则表示未填充的区域,即是所求的闭合曲线图形的内部闭合区域,则内部闭合区域设置为D={dk(ik,jk)};
在内部闭合区域为D={dk(ik,jk)}范围内的像素点的灰度值设置为统一数值,以实现闭合曲线图形内部闭合区域的填充。
在步骤s104中,所述各区域的角落点是指外接矩形的顶点。
在步骤s105中,采用广度优先搜索方法进行填充是指:采用广度优先搜索方法对上、下、左和右的四个填充方向进行填充。
在上述步骤s104中,对外部区域进行填充时,选取的种子都位于各区域的角落点来作为种子的填充点,从而使得种子的选取规则简单并且准确,不与图形的复杂度程度相关。而填充过程中,直接填充外接矩形中曲线图形的外部区域,一旦曲线图形的外部区域确定下来,则剩下未填充的区域则为曲线图形的内部闭合区域,既是目标填充图形。
上述像素点I(x,y)是包括外接矩形的像素点I′(x,y)的,I(x,y)标记为1则为边界像素点,I(x,y)标记为0则不是边界像素点,I′(x,y)标记为-1则为外部区域像素点,I′(x,y)标记为0的则为内部闭合区域像素点,即在图形的像素点I(x,y)标记为0中,在外接矩形区域内标记为0的像素点I(x,y)也就是标记为0的像素点I′(x,y)。所以在步骤s106中不需要另外标记像素点Ii′(x,y)为0,只需判断在外接矩形中哪些像素点I(x,y)标记为0,则可知道标记为0的像素点I′(x,y),从而可判断外接矩形中未填充的区域。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。