CN108665514A - 字形剖分方法及字形剖分装置 - Google Patents

字形剖分方法及字形剖分装置 Download PDF

Info

Publication number
CN108665514A
CN108665514A CN201710197665.XA CN201710197665A CN108665514A CN 108665514 A CN108665514 A CN 108665514A CN 201710197665 A CN201710197665 A CN 201710197665A CN 108665514 A CN108665514 A CN 108665514A
Authority
CN
China
Prior art keywords
polygon
font
current
subdivision
default
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710197665.XA
Other languages
English (en)
Other versions
CN108665514B (zh
Inventor
贾雪莎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New Founder Holdings Development Co ltd
Beijing Founder Electronics Co Ltd
Original Assignee
Peking University Founder Group Co Ltd
Beijing Founder Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Peking University Founder Group Co Ltd, Beijing Founder Electronics Co Ltd filed Critical Peking University Founder Group Co Ltd
Priority to CN201710197665.XA priority Critical patent/CN108665514B/zh
Publication of CN108665514A publication Critical patent/CN108665514A/zh
Application granted granted Critical
Publication of CN108665514B publication Critical patent/CN108665514B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

本发明提供了一种字形剖分方法和一种字形剖分装置,其中,所述字形剖分方法包括:获取待剖分字形中的字形轮廓,以确定其内轮廓和外轮廓;确定与每个内轮廓对应的外轮廓,以根据每对对应的内轮廓和外轮廓得到所述待剖分字形的至少一个连通区域;按照预设Delaunay算法对所述至少一个连通区域中的每个连通区域进行三角剖分,得到至少一个预设Delaunay三角形;按照预设贪心算法对所述至少一个预设Delaunay三角形进行合并,得到所述待剖分字形的至少一个凸多边形。通过本发明的技术方案,可以达到最大凸剖分的目的,而且还解决了二维字形中存在孔的字形剖分问题和部分区域未剖分的问题,使得进一步的字形处理变得更加方便,有效地提高了字形剖分的质量。

Description

字形剖分方法及字形剖分装置
技术领域
本发明涉及图形处理技术领域,具体而言,涉及一种字形剖分方法和一种字形剖分装置。
背景技术
字形剖分属于一种图形处理技术,对图形学来说,是极为重要的一项预处理技术,被广泛应用于文字变形、字体渐变等领域。对字形进行三角剖分以及凸剖分,可以很好地解决不同构字体的映射问题。
由于三角形是平面域的单纯形,与其他类型的多边形相比,它具有许多特性和优点,例如可以更好地贴近拟合复杂边界等。比如,在计算机图形处理,图形显示及模式识别等许多领域中都涉及三角剖分问题,三角剖分对数值分析以及图形学等来说,都是极为重要的一项预处理技术,可以说任意多边形的三角剖分算法是计算机图形学的一个重要理论基础。
目前,相关技术中公开了多种对任意多边形进行三角剖分的方法,但是由于字形的复杂性,尤其是手写字体,字形更复杂多变,使得当前一些三角剖分方法对字形剖分效果不佳,容易出现对字形的空白部分(包括内部的孔和外部的凹处)进行了剖分和部分区域没有剖分的问题,而这严重影响了进一步的图像处理,例如不能准确地重现或者表示字形等等。目前常用的方法是Delaunay三角剖分方法(Delaunay triangulation algorithm),因为它具有“三角剖分最小内角最大化”的特性,能尽可能地避免病态三角形出现,剖分效果有所提高,但在一定程度上还是存在上述两个问题。
因此,为了解决上述问题,需要一种新的字形剖分方案,生成较好的三角形,以确保字形剖分的效果和质量。
发明内容
本发明正是基于上述技术问题,提出了一种新的技术方案,通过读取待剖分字形的字形轮廓,利用改进的Delaunay算法对字形进行三角剖分,并结合贪心算法对剖分得到的三角形进行合并的方式,不仅可以达到最大凸剖分的目的,而且还解决了二维字形中存在孔的字形剖分问题和部分区域未剖分的问题,使得进一步的字形处理变得更加方便,有效地提高了字形剖分的质量。
有鉴于此,根据本发明的第一方面,提出了一种字形剖分方法,包括:获取待剖分字形中的字形轮廓,以确定其内轮廓和外轮廓;确定与每个内轮廓对应的外轮廓,以根据每对对应的内轮廓和外轮廓得到所述待剖分字形的至少一个连通区域;按照预设Delaunay算法对所述至少一个连通区域中的每个连通区域进行三角剖分,得到至少一个预设Delaunay三角形;按照预设贪心算法对所述至少一个预设Delaunay三角形进行合并,得到所述待剖分字形的至少一个凸多边形。
在该技术方案中,当获取到待剖分字形中的每一个内轮廓以及与其对应的外轮廓后,其中,待剖分字形的内轮廓呈顺时针方向,外轮廓呈逆时针方向,可以根据每对对应的内轮廓和外轮廓得到该待剖分字形的一个或多个连通区域,进而通过对每一个连通区域应用预设Delaunay算法(即改进的Delaunay算法)进行三角剖分,然后对得到的一个或多个预设Delaunay三角形应用预设贪心算法进行合并,以将该待剖分字形剖分为至少一个凸多边形,达到最大凸剖分的目的的同时,可以解决二维字形中存在孔(即空白区域)不利于字形剖分的问题和字形的部分区域无法剖分的问题,使得进一步的字形处理变得更加方便,有效地提高了字形剖分的质量。
在上述技术方案中,优选地,所述确定与每个内轮廓对应的外轮廓,以根据每对对应的内轮廓和外轮廓得到所述待剖分字形的至少一个连通区域的步骤,包括:获取所述每个内轮廓上的任一字形轮廓点到所有外轮廓中的每个外轮廓的最小距离;将至少一个所述最小距离中的最小值对应的外轮廓确定为与所述每个内轮廓对应的外轮廓;将所述每个内轮廓上的字形轮廓点和与其对应的外轮廓上的字形轮廓点合并,得到所述至少一个连通区域。
在该技术方案中,基于内轮廓上的字形轮廓点与对应包含在其外轮廓上的字形轮廓点的距离最近的规律,可以针对每个内轮廓计算其上的任一字形轮廓点到各外轮廓上的所有字形轮廓点的距离,首先通过比较确定每个内轮廓到各外轮廓各自的最小距离,进而将各最小距离中距离值最小的对应的外轮廓确定为当前内轮廓的外轮廓,通过该处理方式可以确定对应于每个内轮廓的外轮廓,然后将对应的内轮廓和外轮廓上的字形轮廓点进行合并,则每一个外轮廓与其包含的所有内轮廓构成了一个连通区域,进而可以用于进行三角剖分和贪心合并,达到最大凸剖分的目的。
在上述任一技术方案中,优选地,所述按照预设Delaunay算法对所述至少一个连通区域中的每个连通区域进行三角剖分,得到至少一个预设Delaunay三角形的步骤,包括:判断所述每个连通区域的轮廓上的其他字形轮廓点是否能与当前有向边形成预设Delaunay三角形,所述其他字形轮廓点为所述每个连通区域的轮廓上除所述当前有向边的端点外的任一字形轮廓点,所述当前有向边为所述每个连通区域的全部有向边形成的当前数组中的有向边;当判定所述其他字形轮廓点能与所述当前有向边形成所述预设Delaunay三角形时,保留当前形成的所述预设Delaunay三角形,并将所述当前有向边自所述当前数组中删除,否则将所述当前有向边保存至临时数组中,直至所述当前数组中有向边个数减为0;对所述临时数组中的每条有向边进行能否与所述每个连通区域的轮廓上剩余的字形轮廓点形成所述预设Delaunay三角形的判断,直至完成对所述全部有向边的处理,以得到所述至少一个预设Delaunay三角形。
在该技术方案中,对每个连通区域按照预设Delaunay算法进行三角剖分时,以连通区域中的每一条有向边为单位进行剖分,当连通区域的轮廓上除有向边的端点对应的字形轮廓点外的其他任一字形轮廓点能与该有向边形成预设Delaunay三角形(即有效的Delaunay三角形)时,即成功进行了一次三角剖分,即可以保留该预设Delaunay三角形,并将该当前有向边自其所在的有向边数组(即当前数组)中删除,否则若无法形成预设Delaunay三角形,即将其暂时存储到临时数组中,待对当前数组中有向边处理完成后再对临时数组中的有向边进行相应的处理,以完成对每个连通区域的三角剖分,从而确保在贪心合并为凸多边形后,达到字形的最大凸剖分。
在上述任一技术方案中,优选地,所述按照预设贪心算法对所述至少一个预设Delaunay三角形进行合并,得到所述待剖分字形的至少一个凸多边形的步骤,包括:当所述至少一个预设Delaunay三角形为一个时,对所述待剖分字形的剖分完成;当所述至少一个预设Delaunay三角形为多个时,对由多个预设Delaunay三角形组成的多个多边形,判断剩余多边形中是否存在与当前多边形存在公共边、且与所述当前多边形在所述公共边的两端点处合并得到的角度为凸角的目标多边形,其中所述剩余多边形为所述多个多边形中除所述当前多边形外的其他多边形;
若存在所述目标多边形,判断所述目标多边形是否与所述当前多边形存在包含关系;若存在包含关系,且所述当前多边形包含所述目标多边形,则删除所述目标多边形,对所述多个多边形中除所述目标多边形外的其他多边形按照所述预设贪心算法进行合并,否则判断所述当前多边形与其他目标多边形的包含关系;若不存在包含关系,将所述目标多边形存储至候选多边形数组中,获取所述候选多边形数组中与所述当前多边形具有最长公共边的待合并多边形;将所述当前多边形与所述待合并多边形进行合并,并将合并后的多边形作为新的当前多边形,以继续对删除所述待合并多边形的所述剩余多边形和所述新的当前多边形按照所述预设贪心算法进行合并,直至完成对所述多个多边形的合并处理;
若不存在所述目标多边形,将所述当前多边形保存至凸多边形数组中,并继续对所述剩余多边形中的多边形按照所述预设贪心算法进行合并,直至完成对所述多个多边形的合并处理。
在该技术方案中,当对经三角剖分得到的预设Delaunay三角形按照预设贪心算法进行合并时,若仅有一个预设Delaunay三角形则无需进行合并,说明对待剖分字形的剖分已完成,可以直接应用于后期的模式识别、图形动画、计算机辅助设计等,具有良好的适应性。
而若有多个预设Delaunay三角形时则需要判断是否能够进行合并,由于三角形也属于多边形,则对于经过三角剖分后得到的多个多边形,首先对其中的一个多边形判断在除该当前多边形外的剩余多边形中是否存在能与其进行合并的目标多边形,即与该当前多边形具有公共边,且两多边形合并后的角度为凸角,若存在则将其存放至候选多边形组中,进而在候选多边形组中选择与该当前多边形不存在包含关系且具有最长公共边的多边形进行合并,并将合并后的多边形置于最初的多边形组中重复上述处理过程,若存在有包含关系的多边形,以及若是当前多边形包含目标多边形,则将目标多边形删除后对最初的多边形组中剩余的多边形重复上述处理过程,直至将最初的多边形组中不包含任何多边形,即将合并后且无法继续合并的多边形均存放至凸多边形数组中为止,而若为目标多边形包含当前多边形,则将该当前多边形与其他目标多边形进行包含关系的判断,进而根据包含关系的判断结果执行相应的操作,从而确保对待剖分字形的最大凸剖分。
在上述任一技术方案中,优选地,所述将所述当前多边形与所述待合并多边形进行合并的步骤,还包括:判断所述最长公共边分别在所述当前多边形中的方向和所述待合并多边形中的方向是否一致;若相反,将所述当前多边形和所述待合并多边形直接合并,若一致,将所述待合并多边形的方向取反后与所述当前多边形进行合并。
在该技术方案中,对两多边形(当前多边形和待合并多边形)进行贪心合并时需要考虑两多边形的方向,从而确保合并后的多边形的方向统一,即均为顺时针方向或逆时针方向,具体地,若两多边形的公共边在各自多边形中的方向相反,则说明两多边形可以直接合并,否则需要对其中的一个多边形的方向进行取反后才能进行多边形的合并,比如将待合并多边形的方向取反,当然也可以将当前多边形的方向取反,如此,通过判断两多边形的公共边的方向是否统一可以很方便的调整并确定合并后的多边形的方向,保证合并后的多边形轮廓边的方向统一。
在上述任一技术方案中,优选地,在所述预设Delaunay三角形中,所述其他字形轮廓点位于所述当前有向边的左侧,所述其他字形轮廓点与所述当前有向边的两端点相连形成的两条边不经过所述待剖分字形的空白区域、且不与所述每个连通区域中的其他有向边相交,以及所述预设Delaunay三角形不包含所述待剖分字形中的空白区域,所述预设Delaunay三角形的外接圆面积最小。
在该技术方案中,经改进的Delaunay算法(即预设Delaunay算法)对待剖分字形的连通区域进行三角剖分得到的预设Delaunay三角形在满足如下条件时才是有效的Delaunay三角形,具体地,与当前有向边构成预设Delaunay三角形的任一其他字形轮廓点应位于该当前有向边的左侧,且其他字形轮廓点与该当前有向边的两端点分别相连后形成的两条边不经过待剖分字形的空白区域,以避免对空白区域进行剖分影响字形剖分最终剖分结果的准确性,而且该两条边不与其当前所在的连通区域中的其他有向边相交,以确保剖分得到的预设Delaunay三角形的准确性,而且该有效的Delaunay三角形(即预设Delaunay三角形)不应包含待剖分字形中的空白区域,且其外接圆面积最小,以助于解决二维字形中存在孔的字形剖分问题和部分区域未剖分的问题,使得进一步的字形处理变得更加方便,从而提高字形剖分的质量。
在上述任一技术方案中,优选地,所述获取待剖分字形中的字形轮廓,以确定其内轮廓和外轮廓的步骤,包括:获取各所述字形轮廓中包含的字形轮廓点,以计算所述各字形轮廓的矢量面积;若当前字形轮廓的矢量面积为正,则确定所述当前字形轮廓为所述待剖分字形的内轮廓,否则,确定所述当前字形轮廓为所述待剖分字形的外轮廓。
在该技术方案中,可以通过计算待剖分字形中的各字形轮廓的矢量面积的方式区分其各自为内轮廓还是外轮廓,具体地,根据各字形轮廓上的字形轮廓点计算其矢量面积,即由对该字形轮廓上的任一字形轮廓点依次与该字形轮廓上每相邻的两个字形轮廓点连线构成的三角形加和得到每个字形轮廓的矢量面积,进一步地,在左手坐标系(即屏幕坐标系,坐标原点在屏幕左上角)下,若计算得到的字形轮廓的矢量面积为正则该字形轮廓为待剖分字形的内轮廓,相反地,若计算得到的字形轮廓的矢量面积为负则该字形轮廓为待剖分字形的外轮廓。
根据本发明的第二方面,提出了一种字形剖分装置,包括:获取模块,用于获取待剖分字形中的字形轮廓,以确定其内轮廓和外轮廓;确定模块,用于确定与所述每个内轮廓对应的外轮廓,以根据每对对应的内轮廓和外轮廓得到所述待剖分字形的至少一个连通区域;剖分模块,用于按照预设Delaunay算法对所述确定模块得到的所述至少一个连通区域中的每个连通区域进行三角剖分,得到至少一个预设Delaunay三角形;合并模块,用于按照预设贪心算法对所述剖分模块得到的所述至少一个预设Delaunay三角形进行合并,得到所述待剖分字形的至少一个凸多边形。
在该技术方案中,当获取到待剖分字形中的每一个内轮廓以及与其对应的外轮廓后,其中,待剖分字形的内轮廓呈顺时针方向,外轮廓呈逆时针方向,可以根据每对对应的内轮廓和外轮廓得到该待剖分字形的一个或多个连通区域,进而通过对每一个连通区域应用预设Delaunay算法(即改进的Delaunay算法)进行三角剖分,然后对得到的一个或多个预设Delaunay三角形应用预设贪心算法进行合并,以将该待剖分字形剖分为至少一个凸多边形,达到最大凸剖分的目的的同时,可以解决二维字形中存在孔(即空白区域)不利于字形剖分的问题和字形的部分区域无法剖分的问题,使得进一步的字形处理变得更加方便,有效地提高了字形剖分的质量。
在上述技术方案中,优选地,所述确定模块包括:第一获取子模块,用于获取所述每个内轮廓上的任一字形轮廓点到所有外轮廓中的每个外轮廓的最小距离;第一确定子模块,用于将所述第一获取子模块获取的至少一个所述最小距离中的最小值对应的外轮廓确定为与所述每个内轮廓对应的外轮廓;合并子模块,用于将所述每个内轮廓上的字形轮廓点和所述第一确定子模块确定的与其对应的外轮廓上的字形轮廓点合并,得到所述至少一个连通区域。
在该技术方案中,基于内轮廓上的字形轮廓点与对应包含在其外轮廓上的字形轮廓点的距离最近的规律,可以针对每个内轮廓计算其上的任一字形轮廓点到各外轮廓上的所有字形轮廓点的距离,首先通过比较确定每个内轮廓到各外轮廓各自的最小距离,进而将各最小距离中距离值最小的对应的外轮廓确定为当前内轮廓的外轮廓,通过该处理方式可以确定对应于每个内轮廓的外轮廓,然后将对应的内轮廓和外轮廓上的字形轮廓点进行合并,则每一个外轮廓与其包含的所有内轮廓构成了一个连通区域,进而可以用于进行三角剖分和贪心合并,达到最大凸剖分的目的。
在上述任一技术方案中,优选地,所述剖分模块包括:第一判断子模块,用于判断所述每个连通区域的轮廓上的其他字形轮廓点是否能与当前有向边形成预设Delaunay三角形,所述其他字形轮廓点为所述每个连通区域的轮廓上除所述当前有向边的端点外的任一字形轮廓点,所述当前有向边为所述每个连通区域的全部有向边形成的当前数组中的有向边;第一处理子模块,用于当判定所述其他字形轮廓点能与所述当前有向边形成所述预设Delaunay三角形时,保留当前形成的所述预设Delaunay三角形,并将所述当前有向边自所述当前数组中删除,否则将所述当前有向边保存至临时数组中,直至所述当前数组中有向边个数减为0;调度子模块,用于调度所述第一判断子模块对所述临时数组中的每条有向边进行能否与所述每个连通区域的轮廓上剩余的字形轮廓点形成所述预设Delaunay三角形的判断,直至完成对所述全部有向边的处理,以得到所述至少一个预设Delaunay三角形。
在该技术方案中,对每个连通区域按照预设Delaunay算法进行三角剖分时,以连通区域中的每一条有向边为单位进行剖分,当连通区域的轮廓上除有向边的端点对应的字形轮廓点外的其他任一字形轮廓点能与该有向边形成预设Delaunay三角形(即有效的Delaunay三角形)时,即成功进行了一次三角剖分,即可以保留该预设Delaunay三角形,并将该当前有向边自其所在的有向边数组(即当前数组)中删除,否则若无法形成预设Delaunay三角形,即将其暂时存储到临时数组中,待对当前数组中有向边处理完成后再对临时数组中的有向边进行相应的处理,以完成对每个连通区域的三角剖分,从而确保在贪心合并为凸多边形后,达到字形的最大凸剖分。
在上述任一技术方案中,优选地,当所述至少一个预设Delaunay三角形为一个时,对所述待剖分字形的剖分完成;当所述至少一个预设Delaunay三角形为多个时,所述合并模块包括:第二判断子模块,用于对由多个预设Delaunay三角形组成的多个多边形,判断剩余多边形中是否存在与当前多边形存在公共边、且与所述当前多边形在所述公共边的两端点处合并得到的角度为凸角的目标多边形,其中所述剩余多边形为所述多个多边形中除所述当前多边形外的其他多边形;第三判断子模块,用于若所述第二判断子模块判定存在所述目标多边形,判断所述目标多边形是否与所述当前多边形存在包含关系;第二处理子模块,用于若所述第三判断子模块判定存在包含关系,且所述当前多边形包含所述目标多边形,则删除所述目标多边形,对所述多个多边形中除所述目标多边形外的其他多边形按照所述预设贪心算法进行合并,否则判断所述当前多边形与其他目标多边形的包含关系;第二获取子模块,用于若所述第三判断子模块判定不存在包含关系,将所述目标多边形存储至候选多边形数组中,获取所述候选多边形数组中与所述当前多边形具有最长公共边的待合并多边形;第三处理子模块,用于将所述当前多边形与所述第二获取子模块获取的所述待合并多边形进行合并,并将合并后的多边形作为新的当前多边形,以继续对删除所述待合并多边形的所述剩余多边形和所述新的当前多边形按照所述预设贪心算法进行合并,直至完成对所述多个多边形的合并处理;第四处理子模块,用于若所述第二判断子模块判定不存在所述目标多边形,将所述当前多边形保存至凸多边形数组中,并继续对所述剩余多边形中的多边形按照所述预设贪心算法进行合并,直至完成对所述多个多边形的合并处理。
在该技术方案中,当对经三角剖分得到的预设Delaunay三角形按照预设贪心算法进行合并时,若仅有一个预设Delaunay三角形则无需进行合并,说明对待剖分字形的剖分已完成,可以直接应用于后期的模式识别、图形动画、计算机辅助设计等,具有良好的适应性。
而若有多个预设Delaunay三角形时则需要判断是否能够进行合并,由于三角形也属于多边形,则对于经过三角剖分后得到的多个多边形,首先对其中的一个多边形判断在除该当前多边形外的剩余多边形中是否存在能与其进行合并的目标多边形,即与该当前多边形具有公共边,且两多边形合并后的角度为凸角,若存在则将其存放至候选多边形组中,进而在候选多边形组中选择与该当前多边形不存在包含关系且具有最长公共边的多边形进行合并,并将合并后的多边形置于最初的多边形组中重复上述处理过程,若存在有包含关系的多边形,以及若是当前多边形包含目标多边形,则将目标多边形删除后对最初的多边形组中剩余的多边形重复上述处理过程,直至将最初的多边形组中不包含任何多边形,即将合并后且无法继续合并的多边形均存放至凸多边形数组中为止,而若为目标多边形包含当前多边形,则将该当前多边形与其他目标多边形进行包含关系的判断,进而根据包含关系的判断结果执行相应的操作,从而确保对待剖分字形的最大凸剖分。
在上述任一技术方案中,优选地,所述第三处理子模块具体用于:判断所述最长公共边分别在所述当前多边形中的方向和所述待合并多边形中的方向是否一致;若相反,将所述当前多边形和所述待合并多边形直接合并,若一致,将所述待合并多边形的方向取反后与所述当前多边形进行合并。
在该技术方案中,对两多边形(当前多边形和待合并多边形)进行贪心合并时需要考虑两多边形的方向,从而确保合并后的多边形的方向统一,即均为顺时针方向或逆时针方向,具体地,若两多边形的公共边在各自多边形中的方向相反,则说明两多边形可以直接合并,否则需要对其中的一个多边形的方向进行取反后才能进行多边形的合并,比如将待合并多边形的方向取反,当然也可以将当前多边形的方向取反,如此,通过判断两多边形的公共边的方向是否统一可以很方便的调整并确定合并后的多边形的方向,保证合并后的多边形轮廓边的方向统一。
在上述任一技术方案中,优选地,在所述预设Delaunay三角形中,所述其他字形轮廓点位于所述当前有向边的左侧,所述其他字形轮廓点与所述当前有向边的两端点相连形成的两条边不经过所述待剖分字形的空白区域、且不与所述每个连通区域中的其他有向边相交,以及所述预设Delaunay三角形不包含所述待剖分字形中的空白区域,所述预设Delaunay三角形的外接圆面积最小。
在该技术方案中,经改进的Delaunay算法(即预设Delaunay算法)对待剖分字形的连通区域进行三角剖分得到的预设Delaunay三角形在满足如下条件时才是有效的Delaunay三角形,具体地,与当前有向边构成预设Delaunay三角形的任一其他字形轮廓点应位于该当前有向边的左侧,且其他字形轮廓点与该当前有向边的两端点分别相连后形成的两条边不经过待剖分字形的空白区域,以避免对空白区域进行剖分影响字形剖分最终剖分结果的准确性,而且该两条边不与其当前所在的连通区域中的其他有向边相交,以确保剖分得到的预设Delaunay三角形的准确性,而且该有效的Delaunay三角形(即预设Delaunay三角形)不应包含待剖分字形中的空白区域,且其外接圆面积最小,以助于解决二维字形中存在孔的字形剖分问题和部分区域未剖分的问题,使得进一步的字形处理变得更加方便,从而提高字形剖分的质量。
在上述任一技术方案中,优选地,所述获取模块包括:第三获取子模块,用于获取各所述字形轮廓中包含的字形轮廓点,以计算所述各字形轮廓的矢量面积;第二确定子模块,用于若当前字形轮廓的矢量面积为正,确定所述当前字形轮廓为所述待剖分字形的内轮廓,否则,确定所述当前字形轮廓为所述待剖分字形的外轮廓。
在该技术方案中,可以通过计算待剖分字形中的各字形轮廓的矢量面积的方式区分其各自为内轮廓还是外轮廓,具体地,根据各字形轮廓上的字形轮廓点计算其矢量面积,即由对该字形轮廓上的任一字形轮廓点依次与该字形轮廓上每相邻的两个字形轮廓点连线构成的三角形加和得到每个字形轮廓的矢量面积,进一步地,在左手坐标系(即屏幕坐标系,坐标原点在屏幕左上角)下,若计算得到的字形轮廓的矢量面积为正则该字形轮廓为待剖分字形的内轮廓,相反地,若计算得到的字形轮廓的矢量面积为负则该字形轮廓为待剖分字形的外轮廓。
本发明的上述技术方案,通过读取待剖分字形的字形轮廓,利用改进的Delaunay算法对字形进行三角剖分,并结合贪心算法对剖分得到的三角形进行合并的方式,不仅可以达到最大凸剖分的目的,而且还解决了二维字形中存在孔的字形剖分问题和部分区域未剖分的问题,使得进一步的字形处理变得更加方便,有效地提高了字形剖分的质量。
附图说明
图1示出了本发明的实施例的字形剖分方法的流程示意图;
图2示出了本发明的实施例的确定待剖分字形的连通区域的流程示意图;
图3示出了本发明的实施例的对连通区域进行三角剖分的流程示意图;
图4A示出了本发明的实施例的待剖分字形的示意图;
图4B示出了图4A所示的待剖分字形的三角剖分的效果示意图;
图5示出了本发明的实施例的对三角形进行贪心合并的方法流程示意图;
图6示出了对图4B所示的三角剖分后的待剖分字形进行贪心合并后的效果示意图;
图7示出了本发明的实施例的字形剖分装置的示意框图;
图8示出了图7所示的确定模块的示意框图;
图9示出了图7所示的剖分模块的示意框图;
图10示出了图7所示的合并模块的示意框图;
图11示出了图7所示的获取模块的示意框图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
下面结合图1至图6对本发明的实施例的字形剖分方法进行详细说明。
如图1所示,根据本发明的实施例的字形剖分方法,包括以下流程步骤:
步骤S10,获取待剖分字形中的字形轮廓,以确定其内轮廓和外轮廓。
进一步地,步骤S10可以具体执行为:获取各所述字形轮廓中包含的字形轮廓点,以计算所述各字形轮廓的矢量面积;若当前字形轮廓的矢量面积为正,则确定所述当前字形轮廓为所述待剖分字形的内轮廓,否则,确定所述当前字形轮廓为所述待剖分字形的外轮廓。
在该实施例中,可以通过计算待剖分字形中的各字形轮廓的矢量面积的方式区分其各自为内轮廓还是外轮廓,具体地,根据各字形轮廓上的字形轮廓点计算其矢量面积,即由对该字形轮廓上的任一字形轮廓点依次与该字形轮廓上每相邻的两个字形轮廓点连线构成的三角形加和得到每个字形轮廓的矢量面积,进一步地,在左手坐标系(即屏幕坐标系,坐标原点在屏幕左上角)下,若计算得到的字形轮廓的矢量面积为正则该字形轮廓为待剖分字形的内轮廓,相反地,若计算得到的字形轮廓的矢量面积为负则该字形轮廓为待剖分字形的外轮廓,其中,待剖分字形的内轮廓呈顺时针方向。
步骤S20,确定与每个内轮廓对应的外轮廓,以根据每对对应的内轮廓和外轮廓得到所述待剖分字形的至少一个连通区域。
进一步地,如图2所示,步骤S20可以具体执行为:
步骤S202,获取所述每个内轮廓上的任一字形轮廓点到所有外轮廓中的每个外轮廓的最小距离。
步骤S204,将至少一个所述最小距离中的最小值对应的外轮廓确定为与所述每个内轮廓对应的外轮廓。
步骤S206,将所述每个内轮廓上的字形轮廓点和与其对应的外轮廓上的字形轮廓点合并,得到所述至少一个连通区域。。
在该实施例中,基于内轮廓上的字形轮廓点与对应包含在其外轮廓上的字形轮廓点的距离最近的规律,可以针对每个内轮廓计算其上的任一字形轮廓点到各外轮廓上的所有字形轮廓点的距离,首先通过比较确定每个内轮廓到各外轮廓各自的最小距离,进而将各最小距离中距离值最小的对应的外轮廓确定为当前内轮廓的外轮廓,通过该处理方式可以确定对应于每个内轮廓的外轮廓,然后将对应的内轮廓和外轮廓上的字形轮廓点进行合并,则每一个外轮廓与其包含的所有内轮廓构成了一个连通区域,进而可以用于进行三角剖分和贪心合并,达到最大凸剖分的目的。
步骤S30,按照预设Delaunay算法对所述至少一个连通区域中的每个连通区域进行三角剖分,得到至少一个预设Delaunay三角形。
进一步地,如图3所示,步骤S30可以具体执行为:
步骤S302,判断所述每个连通区域的轮廓上的其他字形轮廓点是否能与当前有向边形成预设Delaunay三角形,所述其他字形轮廓点为所述每个连通区域的轮廓上除所述当前有向边的端点外的任一字形轮廓点,所述当前有向边为所述每个连通区域的全部有向边形成的当前数组中的有向边。
步骤S304,当判定所述其他字形轮廓点能与所述当前有向边形成所述预设Delaunay三角形时,保留当前形成的所述预设Delaunay三角形,并将所述当前有向边自所述当前数组中删除,否则将所述当前有向边保存至临时数组中,直至所述当前数组中有向边个数减为0。
步骤S306,对所述临时数组中的每条有向边进行能否与所述每个连通区域的轮廓上剩余的字形轮廓点形成所述预设Delaunay三角形的判断,直至完成对所述全部有向边的处理,以得到所述至少一个预设Delaunay三角形。
在该实施例中,对每个连通区域按照预设Delaunay算法进行三角剖分时,以连通区域中的每一条有向边为单位进行剖分,当连通区域的轮廓上除有向边的端点对应的字形轮廓点外的其他任一字形轮廓点能与该有向边形成预设Delaunay三角形(即有效的Delaunay三角形)时,即成功进行了一次三角剖分,即可以保留该预设Delaunay三角形,并将该当前有向边自其所在的有向边数组(即当前数组)中删除,否则若无法形成预设Delaunay三角形,即将其暂时存储到临时数组中,待对当前数组中有向边处理完成后再对临时数组中的有向边进行相应的处理,以完成对每个连通区域的三角剖分,从而确保在贪心合并为凸多边形后,达到字形的最大凸剖分;其中,有向边为每个连通区域的轮廓上相邻两个字形轮廓点之间的有向线段,方向与轮廓的方向一致。
其中,经上述步骤对如图4A所示的“丿”和“跋”进行三角剖分处理,其效果示意图如图4B所示,可见其剖分有效地解决了二维字形中存在孔(即空白区域,如图4A中的箭头所示)的字形剖分的问题和部分区域未剖分的问题,进而对解决字形渐变、图形处理等领域的相关问题具有直接的应用价值。
步骤S40,按照预设贪心算法对所述至少一个预设Delaunay三角形进行合并,得到所述待剖分字形的至少一个凸多边形。
在该实施例中,当获取到待剖分字形中的每一个内轮廓以及与其对应的外轮廓后,外轮廓呈逆时针方向,可以根据每对对应的内轮廓和外轮廓得到该待剖分字形的一个或多个连通区域,进而通过对每一个连通区域应用预设Delaunay算法(即改进的Delaunay算法)进行三角剖分,然后对得到的一个或多个预设Delaunay三角形应用预设贪心算法进行合并,以将该待剖分字形剖分为至少一个凸多边形,达到最大凸剖分的目的的同时,可以解决二维字形中存在孔(即空白区域)不利于字形剖分的问题和字形的部分区域无法剖分的问题,使得进一步的字形处理变得更加方便,有效地提高了字形剖分的质量。
进一步地,在上述实施例中,步骤S40具体执行为:当所述至少一个预设Delaunay三角形为一个时,对所述待剖分字形的剖分完成;当所述至少一个预设Delaunay三角形为多个时,对由多个预设Delaunay三角形组成的多个多边形,判断剩余多边形中是否存在与当前多边形存在公共边、且与所述当前多边形在所述公共边的两端点处合并得到的角度为凸角的目标多边形,其中所述剩余多边形为所述多个多边形中除所述当前多边形外的其他多边形;
若存在所述目标多边形,判断所述目标多边形是否与所述当前多边形存在包含关系;若存在包含关系,且所述当前多边形包含所述目标多边形,则删除所述目标多边形,对所述多个多边形中除所述目标多边形外的其他多边形按照所述预设贪心算法进行合并,否则判断所述当前多边形与其他目标多边形的包含关系;若不存在包含关系,将所述目标多边形存储至候选多边形数组中,获取所述候选多边形数组中与所述当前多边形具有最长公共边的待合并多边形;将所述当前多边形与所述待合并多边形进行合并,并将合并后的多边形作为新的当前多边形,以继续对删除所述待合并多边形的所述剩余多边形和所述新的当前多边形按照所述预设贪心算法进行合并,直至完成对所述多个多边形的合并处理;
若不存在所述目标多边形,将所述当前多边形保存至凸多边形数组中,并继续对所述剩余多边形中的多边形按照所述预设贪心算法进行合并,直至完成对所述多个多边形的合并处理。
在该实施例中,当对经三角剖分得到的预设Delaunay三角形按照预设贪心算法进行合并时,若仅有一个预设Delaunay三角形则无需进行合并,说明对待剖分字形的剖分已完成,可以直接应用于后期的模式识别、图形动画、计算机辅助设计等,具有良好的适应性。
而若有多个预设Delaunay三角形时则需要判断是否能够进行合并,由于三角形也属于多边形,则对于经过三角剖分后得到的多个多边形,首先对其中的一个多边形判断在除该当前多边形外的剩余多边形中是否存在能与其进行合并的目标多边形,即与该当前多边形具有公共边,且两多边形合并后的角度为凸角,若存在则将其存放至候选多边形组中,进而在候选多边形组中选择与该当前多边形不存在包含关系且具有最长公共边的多边形进行合并,并将合并后的多边形置于最初的多边形组中重复上述处理过程,若存在有包含关系的多边形,以及若是当前多边形包含目标多边形,则将目标多边形删除后对最初的多边形组中剩余的多边形重复上述处理过程,直至将最初的多边形组中不包含任何多边形,即将合并后且无法继续合并的多边形均存放至凸多边形数组中为止,而若为目标多边形包含当前多边形,则将该当前多边形与其他目标多边形进行包含关系的判断,进而根据包含关系的判断结果执行相应的操作,从而确保对待剖分字形的最大凸剖分。
进一步地,在上述任一实施例中,所述将所述当前多边形与所述待合并多边形进行合并的步骤,还包括:判断所述最长公共边分别在所述当前多边形中的方向和所述待合并多边形中的方向是否一致;若相反,将所述当前多边形和所述待合并多边形直接合并,若一致,将所述待合并多边形的方向取反后与所述当前多边形进行合并。
在该实施例中,对两多边形(当前多边形和待合并多边形)进行贪心合并时需要考虑两多边形的方向,从而确保合并后的多边形的方向统一,即均为顺时针方向或逆时针方向,具体地,若两多边形的公共边在各自多边形中的方向相反,则说明两多边形可以直接合并,否则需要对其中的一个多边形的方向进行取反后才能进行多边形的合并,比如将待合并多边形的方向取反,当然也可以将当前多边形的方向取反,如此,通过判断两多边形的公共边的方向是否统一可以很方便的调整并确定合并后的多边形的方向,保证合并后的多边形轮廓边的方向统一。
进一步地,在与当前多边形具有最长公共边的待合并多边形有多个时,可以优先选取公共边方向相反的待合并多边形进行合并,若公共边方向均相同,则可以优先选取第一待合并多边形进行合并。
进一步地,在上述任一实施例中,在所述预设Delaunay三角形中,所述其他字形轮廓点位于所述当前有向边的左侧,所述其他字形轮廓点与所述当前有向边的两端点相连形成的两条边不经过所述待剖分字形的空白区域、且不与所述每个连通区域中的其他有向边相交,以及所述预设Delaunay三角形不包含所述待剖分字形中的空白区域,所述预设Delaunay三角形的外接圆面积最小。
在该实施例中,经改进的Delaunay算法(即预设Delaunay算法)对待剖分字形的连通区域进行三角剖分得到的预设Delaunay三角形在满足如下条件时才是有效的Delaunay三角形,具体地,与当前有向边构成预设Delaunay三角形的任一其他字形轮廓点应位于该当前有向边的左侧,且其他字形轮廓点与该当前有向边的两端点分别相连后形成的两条边不经过待剖分字形的空白区域,以避免对空白区域进行剖分影响字形剖分最终剖分结果的准确性,而且该两条边不与其当前所在的连通区域中的其他有向边相交,以确保剖分得到的预设Delaunay三角形的准确性,而且该有效的Delaunay三角形(即预设Delaunay三角形)不应包含待剖分字形中的空白区域,且其外接圆面积最小,以助于解决二维字形中存在孔的字形剖分问题和部分区域未剖分的问题,使得进一步的字形处理变得更加方便,从而提高字形剖分的质量。
进一步地,结合图5对步骤S40的贪心合并过程进行详细说明。
假设按照预设Delaunay算法对待剖分字形中的各连通区域三角剖分后得到N个预设Delaunay三角形,这些三角形满足以下条件:任何两个三角形要么不相交,要么只有一条公共边,不能同时有两条或两条以上的公共边。此处将预设Delaunay三角形保存为多边形结构,便于后期合并过程中统一判断。
具体地,用Pk(k=0,1,2,…,N-1)表示至少一个多边形(初始为预设Delaunay三角形,即为当前数组),按照预设贪心算法进行合并的流程如图5所示,包括以下步骤:
步骤S50,判断至少一个多边行的个数N是否为1,若是,则贪心合并流程结束,否则执行步骤S51;
步骤S51,令k=0;
步骤S52,令k=k+1;
步骤S53,判断多边形P0与Pk是否存在公共边,若是执行步骤S54,否则返回执行步骤S52;
步骤S54,判断多边形P0与Pk(即当前多边形与目标多边形)在公共边的两端点的角分别合并后的角是否为凸角,即相加后的角度是否小于或等于180度,若是执行步骤S55,否则返回执行步骤S52;
步骤S55,判断多边形P0与Pk是否存在包含关系,比如点包含关系或者边包含关系,若不存在执行步骤S58,否则执行步骤S56;
步骤S56,判断P0是否包含Pk,若是执行步骤S57,否则返回执行步骤S52;
步骤S57,将Pk自当前数组中删除,令N=N-1,返回步骤S50,继续对剩余的多边形进行贪心合并;
步骤S58,将多边形Pk保存到候选多边形数组中;
步骤S59,判断k的是值是否为N-1,若是执行步骤S60,否则返回执行步骤S52;
步骤S60,判断候选多边形数组的长度是否为0,即判断候选多边形数组中是否有能与P0合并的多边形,若有执行步骤S61,否则执行步骤S63;
步骤S61,在候选多边形数组中选择公共边最长的多边形PM与P0进行合并;
在该步骤中,判断P0与PM的公共边同向或异向,分别保存公共边和公共边左端点和右端点相连的两条边在P0中的边编号以及在PM中的边编号;判断P0公共边左端点和右端点相连的两条边分别与PM公共边左(或右)端点和右(或左)端点相连的两条边是否共线,主要包括以下几种情况:
(1)若均共线,则分别计算两个端点处的共线边,将两条共线边和PM中其它边按顺序保存到P0,其中P0边数减1;
(2)若仅P0公共边左端点处共线,则计算左端点处的共线边,将该共线边和PM中其它边按顺序保存到P0,其中P0边数保持不变;
(3)若仅P0公共边右端点处共线,则计算右端点处的共线边,将该共线边和PM中其它边按顺序保存到P0,其中P0边数保持不变;
(4)若均不共线,则将PM中边按顺序保存到P0,其中P0边数加1;
步骤S62,将多边形PM与P0合并后的多边形记为新的P0,并将PM自当前数组中删除,令N=N-1,返回步骤S50,继续对剩余的多边形进行贪心合并;
其中,保存过程中需要注意各边的方向与多边形的方向是否一致,即若P0与PM的公共边同向,则两多边形方向相反,合并时需要将其中一个多边形的边方向取反,若P0与PM的公共边异向,则两多边形方向相同,合并时直接按两多边形边的原方向即可。
步骤S63,保存P0到合并后的多边形数组(即凸多边形数组),在当前数组(即多个多边形)中删除P0,令N=N-1,返回执行步骤S50。
在该实施例中,凸多边形是对三角剖分结果的进一步合并处理,因为一个凸的图形较其它图形,在计算机表示、分析及处理方面方便得多,而且凸多边形较之于三角形,能更简便地表示字形,而且凸多变形广泛应用于物体变形、图形动画、计算机辅助设计等领域,在计算机图形学方面有很多重要的应用,则通过结合贪心算法对三角形进行合并,以达到最大凸剖分的目的,使得进一步字形处理更加方便,且可以保证字形剖分的质量,其中,经上述步骤对如图4B所示的经过三角剖分后的“丿”和“跋”进行贪心合并的效果如图6所示。
下面结合图7至图11对本发明的实施例的字形剖分装置进行详细说明。
如图7所示,根据本发明的实施例的字形剖分装置700,包括:获取模块702、确定模块704、剖分模块706和合并模块708。
其中,所述获取模块702用于获取待剖分字形中的字形轮廓,以确定其内轮廓和外轮廓;所述确定模块704用于确定与所述每个内轮廓对应的外轮廓,以根据每对对应的内轮廓和外轮廓得到所述待剖分字形的至少一个连通区域;所述剖分模块706用于按照预设Delaunay算法对所述确定模块704得到的所述至少一个连通区域中的每个连通区域进行三角剖分,得到至少一个预设Delaunay三角形;所述合并模块708用于按照预设贪心算法对所述剖分模块706得到的所述至少一个预设Delaunay三角形进行合并,得到所述待剖分字形的至少一个凸多边形。
在该实施例中,当获取到待剖分字形中的每一个内轮廓以及与其对应的外轮廓后,其中,待剖分字形的内轮廓呈顺时针方向,外轮廓呈逆时针方向,可以根据每对对应的内轮廓和外轮廓得到该待剖分字形的一个或多个连通区域,进而通过对每一个连通区域应用预设Delaunay算法(即改进的Delaunay算法)进行三角剖分,然后对得到的一个或多个预设Delaunay三角形应用预设贪心算法进行合并,以将该待剖分字形剖分为至少一个凸多边形,达到最大凸剖分的目的的同时,可以解决二维字形中存在孔(即空白区域)不利于字形剖分的问题和字形的部分区域无法剖分的问题,使得进一步的字形处理变得更加方便,有效地提高了字形剖分的质量。
进一步地,如图8所示,在上述实施例中,所述确定模块704包括:第一获取子模块7042、第一确定子模块7044和合并子模块7046。
其中,所述第一获取子模块7042用于获取所述每个内轮廓上的任一字形轮廓点到所有外轮廓中的每个外轮廓的最小距离;所述第一确定子模块7044用于将所述第一获取子模块7042获取的至少一个所述最小距离中的最小值对应的外轮廓确定为与所述每个内轮廓对应的外轮廓;所述合并子模块7046用于将所述每个内轮廓上的字形轮廓点和所述第一确定子模块7044确定的与其对应的外轮廓上的字形轮廓点合并,得到所述至少一个连通区域。
在该实施例中,基于内轮廓上的字形轮廓点与对应包含在其外轮廓上的字形轮廓点的距离最近的规律,可以针对每个内轮廓计算其上的任一字形轮廓点到各外轮廓上的所有字形轮廓点的距离,首先通过比较确定每个内轮廓到各外轮廓各自的最小距离,进而将各最小距离中距离值最小的对应的外轮廓确定为当前内轮廓的外轮廓,通过该处理方式可以确定对应于每个内轮廓的外轮廓,然后将对应的内轮廓和外轮廓上的字形轮廓点进行合并,则每一个外轮廓与其包含的所有内轮廓构成了一个连通区域,进而可以用于进行三角剖分和贪心合并,达到最大凸剖分的目的。
进一步地,如图9所示,在上述任一实施例中,所述剖分模块706包括:第一判断子模块7062、第一处理子模块7064和调度子模块7066。
其中,所述第一判断子模块7062用于判断所述每个连通区域的轮廓上的其他字形轮廓点是否能与当前有向边形成预设Delaunay三角形,所述其他字形轮廓点为所述每个连通区域的轮廓上除所述当前有向边的端点外的任一字形轮廓点,所述当前有向边为所述每个连通区域的全部有向边形成的当前数组中的有向边;所述第一处理子模块7064用于当判定所述其他字形轮廓点能与所述当前有向边形成所述预设Delaunay三角形时,保留当前形成的所述预设Delaunay三角形,并将所述当前有向边自所述当前数组中删除,否则将所述当前有向边保存至临时数组中,直至所述当前数组中有向边个数减为0;所述调度子模块7066用于调度所述第一判断子模块7062对所述临时数组中的每条有向边进行能否与所述每个连通区域的轮廓上剩余的字形轮廓点形成所述预设Delaunay三角形的判断,直至完成对所述全部有向边的处理,以得到所述至少一个预设Delaunay三角形。
在该实施例中,对每个连通区域按照预设Delaunay算法进行三角剖分时,以连通区域中的每一条有向边为单位进行剖分,当连通区域的轮廓上除有向边的端点对应的字形轮廓点外的其他任一字形轮廓点能与该有向边形成预设Delaunay三角形(即有效的Delaunay三角形)时,即成功进行了一次三角剖分,即可以保留该预设Delaunay三角形,并将该当前有向边自其所在的有向边数组(即当前数组)中删除,否则若无法形成预设Delaunay三角形,即将其暂时存储到临时数组中,待对当前数组中有向边处理完成后再对临时数组中的有向边进行相应的处理,以完成对每个连通区域的三角剖分,从而确保在贪心合并为凸多边形后,达到字形的最大凸剖分;其中,有向边为每个连通区域的轮廓上相邻两个字形轮廓点之间的有向线段,方向与轮廓的方向一致。
进一步地,在上述任一实施例中,当所述至少一个预设Delaunay三角形为一个时,对所述待剖分字形的剖分完成。
在该实施例中,当对经三角剖分得到的预设Delaunay三角形按照预设贪心算法进行合并时,若仅有一个预设Delaunay三角形则无需进行合并,说明对待剖分字形的剖分已完成,可以直接应用于后期的模式识别、图形动画、计算机辅助设计等,具有良好的适应性。
进一步地,如图10所示,在上述任一实施例中,所述合并模块708包括:第二判断子模块7081、第三判断子模块7082、第二处理子模块7083、第二获取子模块7084、第三处理子模块7085和第四处理子模块7086。
其中,所述第二判断子模块7081用于对由多个预设Delaunay三角形组成的多个多边形,判断剩余多边形中是否存在与当前多边形存在公共边、且与所述当前多边形在所述公共边的两端点处合并得到的角度为凸角的目标多边形,其中所述剩余多边形为所述多个多边形中除所述当前多边形外的其他多边形;所述第三判断子模块7082用于若所述第二判断子模块7081判定存在所述目标多边形,判断所述目标多边形是否与所述当前多边形存在包含关系;所述第二处理子模块7083用于若所述第三判断子模块7082判定存在包含关系,且所述当前多边形包含所述目标多边形,则删除所述目标多边形,对所述多个多边形中除所述目标多边形外的其他多边形按照所述预设贪心算法进行合并,否则判断所述当前多边形与其他目标多边形的包含关系;所述第二获取子模块7084用于若所述第三判断子模块7082判定不存在包含关系,将所述目标多边形存储至候选多边形数组中,获取所述候选多边形数组中与所述当前多边形具有最长公共边的待合并多边形;所述第三处理子模块7085用于将所述当前多边形与所述第二获取子模块7084获取的所述待合并多边形进行合并,并将合并后的多边形作为新的当前多边形,以继续对删除所述待合并多边形的所述剩余多边形和所述新的当前多边形按照所述预设贪心算法进行合并,直至完成对所述多个多边形的合并处理;所述第四处理子模块7086用于若所述第二判断子模块7081判定不存在所述目标多边形,将所述当前多边形保存至凸多边形数组中,并继续对所述剩余多边形中的多边形按照所述预设贪心算法进行合并,直至完成对所述多个多边形的合并处理。
在该实施例中,若有多个预设Delaunay三角形时则需要判断是否能够进行合并,由于三角形也属于多边形,则对于经过三角剖分后得到的多个多边形,首先对其中的一个多边形判断在除该当前多边形外的剩余多边形中是否存在能与其进行合并的目标多边形,即与该当前多边形具有公共边,且两多边形合并后的角度为凸角,若存在则将其存放至候选多边形组中,进而在候选多边形组中选择与该当前多边形不存在包含关系且具有最长公共边的多边形进行合并,并将合并后的多边形置于最初的多边形组中重复上述处理过程,若存在有包含关系的多边形,以及若是当前多边形包含目标多边形,则将目标多边形删除后对最初的多边形组中剩余的多边形重复上述处理过程,直至将最初的多边形组中不包含任何多边形,即将合并后且无法继续合并的多边形均存放至凸多边形数组中为止,而若为目标多边形包含当前多边形,则将该当前多边形与其他目标多边形进行包含关系的判断,进而根据包含关系的判断结果执行相应的操作,从而确保对待剖分字形的最大凸剖分。
进一步地,在上述实施例中,所述第三处理子模块7085具体用于:判断所述最长公共边分别在所述当前多边形中的方向和所述待合并多边形中的方向是否一致;若相反,将所述当前多边形和所述待合并多边形直接合并,若一致,将所述待合并多边形的方向取反后与所述当前多边形进行合并。
在该实施例中,对两多边形(当前多边形和待合并多边形)进行贪心合并时需要考虑两多边形的方向,从而确保合并后的多边形的方向统一,即均为顺时针方向或逆时针方向,具体地,若两多边形的公共边在各自多边形中的方向相反,则说明两多边形可以直接合并,否则需要对其中的一个多边形的方向进行取反后才能进行多边形的合并,比如将待合并多边形的方向取反,当然也可以将当前多边形的方向取反,如此,通过判断两多边形的公共边的方向是否统一可以很方便的调整并确定合并后的多边形的方向,保证合并后的多边形轮廓边的方向统一。
进一步地,在与当前多边形具有最长公共边的待合并多边形有多个时,可以优先选取公共边方向相反的待合并多边形进行合并,若公共边方向均相同,则可以优先选取第一待合并多边形进行合并。
进一步地,在上述任一实施例中,在所述预设Delaunay三角形中,所述其他字形轮廓点位于所述当前有向边的左侧,所述其他字形轮廓点与所述当前有向边的两端点相连形成的两条边不经过所述待剖分字形的空白区域、且不与所述每个连通区域中的其他有向边相交,以及所述预设Delaunay三角形不包含所述待剖分字形中的空白区域,所述预设Delaunay三角形的外接圆面积最小。
在该实施例中,经改进的Delaunay算法(即预设Delaunay算法)对待剖分字形的连通区域进行三角剖分得到的预设Delaunay三角形在满足如下条件时才是有效的Delaunay三角形,具体地,与当前有向边构成预设Delaunay三角形的任一其他字形轮廓点应位于该当前有向边的左侧,且其他字形轮廓点与该当前有向边的两端点分别相连后形成的两条边不经过待剖分字形的空白区域,以避免对空白区域进行剖分影响字形剖分最终剖分结果的准确性,而且该两条边不与其当前所在的连通区域中的其他有向边相交,以确保剖分得到的预设Delaunay三角形的准确性,而且该有效的Delaunay三角形(即预设Delaunay三角形)不应包含待剖分字形中的空白区域,且其外接圆面积最小,以助于解决二维字形中存在孔的字形剖分问题和部分区域未剖分的问题,使得进一步的字形处理变得更加方便,从而提高字形剖分的质量。
进一步地,如图11所示,在上述任一实施例中,所述获取模块702包括:第三获取子模块7022和第二确定子模块7024。
其中,所述第三获取子模块7022用于获取各所述字形轮廓中包含的字形轮廓点,以计算所述各字形轮廓的矢量面积;所述第二确定子模块7024用于若当前字形轮廓的矢量面积为正,确定所述当前字形轮廓为所述待剖分字形的内轮廓,否则,确定所述当前字形轮廓为所述待剖分字形的外轮廓。
在该实施例中,可以通过计算待剖分字形中的各字形轮廓的矢量面积的方式区分其各自为内轮廓还是外轮廓,具体地,根据各字形轮廓上的字形轮廓点计算其矢量面积,即由对该字形轮廓上的任一字形轮廓点依次与该字形轮廓上每相邻的两个字形轮廓点连线构成的三角形加和得到每个字形轮廓的矢量面积,进一步地,在左手坐标系(即屏幕坐标系,坐标原点在屏幕左上角)下,若计算得到的字形轮廓的矢量面积为正则该字形轮廓为待剖分字形的内轮廓,相反地,若计算得到的字形轮廓的矢量面积为负则该字形轮廓为待剖分字形的外轮廓。
以上结合附图详细说明了本发明的技术方案,该技术方案通过读取待剖分字形的字形轮廓,利用改进的Delaunay算法对字形进行三角剖分,并结合贪心算法对剖分得到的三角形进行合并的方式,不仅可以达到最大凸剖分的目的,而且还解决了二维字形中存在孔的字形剖分问题和部分区域未剖分的问题,使得进一步的字形处理变得更加方便,有效地提高了字形剖分的质量。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (14)

1.一种字形剖分方法,其特征在于,包括:
获取待剖分字形中的字形轮廓,以确定其内轮廓和外轮廓;
确定与每个内轮廓对应的外轮廓,以根据每对对应的内轮廓和外轮廓得到所述待剖分字形的至少一个连通区域;
按照预设Delaunay算法对所述至少一个连通区域中的每个连通区域进行三角剖分,得到至少一个预设Delaunay三角形;
按照预设贪心算法对所述至少一个预设Delaunay三角形进行合并,得到所述待剖分字形的至少一个凸多边形。
2.根据权利要求1所述的字形剖分方法,其特征在于,所述确定与每个内轮廓对应的外轮廓,以根据每对对应的内轮廓和外轮廓得到所述待剖分字形的至少一个连通区域的步骤,包括:
获取所述每个内轮廓上的任一字形轮廓点到所有外轮廓中的每个外轮廓的最小距离;
将至少一个所述最小距离中的最小值对应的外轮廓确定为与所述每个内轮廓对应的外轮廓;
将所述每个内轮廓上的字形轮廓点和与其对应的外轮廓上的字形轮廓点合并,得到所述至少一个连通区域。
3.根据权利要求2所述的字形剖分方法,其特征在于,所述按照预设Delaunay算法对所述至少一个连通区域中的每个连通区域进行三角剖分,得到至少一个预设Delaunay三角形的步骤,包括:
判断所述每个连通区域的轮廓上的其他字形轮廓点是否能与当前有向边形成预设Delaunay三角形,所述其他字形轮廓点为所述每个连通区域的轮廓上除所述当前有向边的端点外的任一字形轮廓点,所述当前有向边为所述每个连通区域的全部有向边形成的当前数组中的有向边;
当判定所述其他字形轮廓点能与所述当前有向边形成所述预设Delaunay三角形时,保留当前形成的所述预设Delaunay三角形,并将所述当前有向边自所述当前数组中删除,否则将所述当前有向边保存至临时数组中,直至所述当前数组中有向边个数减为0;
对所述临时数组中的每条有向边进行能否与所述每个连通区域的轮廓上剩余的字形轮廓点形成所述预设Delaunay三角形的判断,直至完成对所述全部有向边的处理,以得到所述至少一个预设Delaunay三角形。
4.根据权利要求3所述的字形剖分方法,其特征在于,所述按照预设贪心算法对所述至少一个预设Delaunay三角形进行合并,得到所述待剖分字形的至少一个凸多边形的步骤,包括:
当所述至少一个预设Delaunay三角形为一个时,对所述待剖分字形的剖分完成;
当所述至少一个预设Delaunay三角形为多个时,对由多个预设Delaunay三角形组成的多个多边形,判断剩余多边形中是否存在与当前多边形存在公共边、且与所述当前多边形在所述公共边的两端点处合并得到的角度为凸角的目标多边形,其中所述剩余多边形为所述多个多边形中除所述当前多边形外的其他多边形;
若存在所述目标多边形,判断所述目标多边形是否与所述当前多边形存在包含关系;
若存在包含关系,且所述当前多边形包含所述目标多边形,则删除所述目标多边形,对所述多个多边形中除所述目标多边形外的其他多边形按照所述预设贪心算法进行合并,否则判断所述当前多边形与其他目标多边形的包含关系;
若不存在包含关系,将所述目标多边形存储至候选多边形数组中,获取所述候选多边形数组中与所述当前多边形具有最长公共边的待合并多边形;
将所述当前多边形与所述待合并多边形进行合并,并将合并后的多边形作为新的当前多边形,以继续对删除所述待合并多边形的所述剩余多边形和所述新的当前多边形按照所述预设贪心算法进行合并,直至完成对所述多个多边形的合并处理;
若不存在所述目标多边形,将所述当前多边形保存至凸多边形数组中,并继续对所述剩余多边形中的多边形按照所述预设贪心算法进行合并,直至完成对所述多个多边形的合并处理。
5.根据权利要求4所述的字形剖分方法,其特征在于,所述将所述当前多边形与所述待合并多边形进行合并的步骤,还包括:
判断所述最长公共边分别在所述当前多边形中的方向和所述待合并多边形中的方向是否一致;
若相反,将所述当前多边形和所述待合并多边形直接合并,若一致,将所述待合并多边形的方向取反后与所述当前多边形进行合并。
6.根据权利要求3至5中任一项所述的字形剖分方法,其特征在于,在所述预设Delaunay三角形中,所述其他字形轮廓点位于所述当前有向边的左侧,所述其他字形轮廓点与所述当前有向边的两端点相连形成的两条边不经过所述待剖分字形的空白区域、且不与所述每个连通区域中的其他有向边相交,以及所述预设Delaunay三角形不包含所述待剖分字形中的空白区域,所述预设Delaunay三角形的外接圆面积最小。
7.根据权利要求1至5中任一项所述的字形剖分方法,其特征在于,所述获取待剖分字形中的字形轮廓,以确定其内轮廓和外轮廓的步骤,包括:
获取各所述字形轮廓中包含的字形轮廓点,以计算所述各字形轮廓的矢量面积;
若当前字形轮廓的矢量面积为正,则确定所述当前字形轮廓为所述待剖分字形的内轮廓,否则,确定所述当前字形轮廓为所述待剖分字形的外轮廓。
8.一种字形剖分装置,其特征在于,包括:
获取模块,用于获取待剖分字形中的字形轮廓,以确定其内轮廓和外轮廓;
确定模块,用于确定与所述每个内轮廓对应的外轮廓,以根据每对对应的内轮廓和外轮廓得到所述待剖分字形的至少一个连通区域;
剖分模块,用于按照预设Delaunay算法对所述确定模块得到的所述至少一个连通区域中的每个连通区域进行三角剖分,得到至少一个预设Delaunay三角形;
合并模块,用于按照预设贪心算法对所述剖分模块得到的所述至少一个预设Delaunay三角形进行合并,得到所述待剖分字形的至少一个凸多边形。
9.根据权利要求8所述的字形剖分装置,其特征在于,所述确定模块包括:
第一获取子模块,用于获取所述每个内轮廓上的任一字形轮廓点到所有外轮廓中的每个外轮廓的最小距离;
第一确定子模块,用于将所述第一获取子模块获取的至少一个所述最小距离中的最小值对应的外轮廓确定为与所述每个内轮廓对应的外轮廓;
合并子模块,用于将所述每个内轮廓上的字形轮廓点和所述第一确定子模块确定的与其对应的外轮廓上的字形轮廓点合并,得到所述至少一个连通区域。
10.根据权利要求9所述的字形剖分装置,其特征在于,所述剖分模块包括:
第一判断子模块,用于判断所述每个连通区域的轮廓上的其他字形轮廓点是否能与当前有向边形成预设Delaunay三角形,所述其他字形轮廓点为所述每个连通区域的轮廓上除所述当前有向边的端点外的任一字形轮廓点,所述当前有向边为所述每个连通区域的全部有向边形成的当前数组中的有向边;
第一处理子模块,用于当判定所述其他字形轮廓点能与所述当前有向边形成所述预设Delaunay三角形时,保留当前形成的所述预设Delaunay三角形,并将所述当前有向边自所述当前数组中删除,否则将所述当前有向边保存至临时数组中,直至所述当前数组中有向边个数减为0;
调度子模块,用于调度所述第一判断子模块对所述临时数组中的每条有向边进行能否与所述每个连通区域的轮廓上剩余的字形轮廓点形成所述预设Delaunay三角形的判断,直至完成对所述全部有向边的处理,以得到所述至少一个预设Delaunay三角形。
11.根据权利要求10所述的字形剖分装置,其特征在于,
当所述至少一个预设Delaunay三角形为一个时,对所述待剖分字形的剖分完成;
当所述至少一个预设Delaunay三角形为多个时,所述合并模块包括:
第二判断子模块,用于对由多个预设Delaunay三角形组成的多个多边形,判断剩余多边形中是否存在与当前多边形存在公共边、且与所述当前多边形在所述公共边的两端点处合并得到的角度为凸角的目标多边形,其中所述剩余多边形为所述多个多边形中除所述当前多边形外的其他多边形;
第三判断子模块,用于若所述第二判断子模块判定存在所述目标多边形,判断所述目标多边形是否与所述当前多边形存在包含关系;
第二处理子模块,用于若所述第三判断子模块判定存在包含关系,且所述当前多边形包含所述目标多边形,则删除所述目标多边形,对所述多个多边形中除所述目标多边形外的其他多边形按照所述预设贪心算法进行合并,否则判断所述当前多边形与其他目标多边形的包含关系;
第二获取子模块,用于若所述第三判断子模块判定不存在包含关系,将所述目标多边形存储至候选多边形数组中,获取所述候选多边形数组中与所述当前多边形具有最长公共边的待合并多边形;
第三处理子模块,用于将所述当前多边形与所述第二获取子模块获取的所述待合并多边形进行合并,并将合并后的多边形作为新的当前多边形,以继续对删除所述待合并多边形的所述剩余多边形和所述新的当前多边形按照所述预设贪心算法进行合并,直至完成对所述多个多边形的合并处理;
第四处理子模块,用于若所述第二判断子模块判定不存在所述目标多边形,将所述当前多边形保存至凸多边形数组中,并继续对所述剩余多边形中的多边形按照所述预设贪心算法进行合并,直至完成对所述多个多边形的合并处理。
12.根据权利要求11所述的字形剖分装置,其特征在于,所述第三处理子模块具体用于:
判断所述最长公共边分别在所述当前多边形中的方向和所述待合并多边形中的方向是否一致;
若相反,将所述当前多边形和所述待合并多边形直接合并,若一致,将所述待合并多边形的方向取反后与所述当前多边形进行合并。
13.根据权利要求10至12中任一项所述的字形剖分装置,其特征在于,在所述预设Delaunay三角形中,所述其他字形轮廓点位于所述当前有向边的左侧,所述其他字形轮廓点与所述当前有向边的两端点相连形成的两条边不经过所述待剖分字形的空白区域、且不与所述每个连通区域中的其他有向边相交,以及所述预设Delaunay三角形不包含所述待剖分字形中的空白区域,所述预设Delaunay三角形的外接圆面积最小。
14.根据权利要求8至12中任一项所述的字形剖分装置,其特征在于,所述获取模块包括:
第三获取子模块,用于获取各所述字形轮廓中包含的字形轮廓点,以计算所述各字形轮廓的矢量面积;
第二确定子模块,用于若当前字形轮廓的矢量面积为正,确定所述当前字形轮廓为所述待剖分字形的内轮廓,否则,确定所述当前字形轮廓为所述待剖分字形的外轮廓。
CN201710197665.XA 2017-03-29 2017-03-29 字形剖分方法及字形剖分装置 Expired - Fee Related CN108665514B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710197665.XA CN108665514B (zh) 2017-03-29 2017-03-29 字形剖分方法及字形剖分装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710197665.XA CN108665514B (zh) 2017-03-29 2017-03-29 字形剖分方法及字形剖分装置

Publications (2)

Publication Number Publication Date
CN108665514A true CN108665514A (zh) 2018-10-16
CN108665514B CN108665514B (zh) 2021-02-09

Family

ID=63786126

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710197665.XA Expired - Fee Related CN108665514B (zh) 2017-03-29 2017-03-29 字形剖分方法及字形剖分装置

Country Status (1)

Country Link
CN (1) CN108665514B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110929767A (zh) * 2019-10-24 2020-03-27 云从科技集团股份有限公司 一种字形处理方法、系统、设备和介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6100893A (en) * 1997-05-23 2000-08-08 Light Sciences Limited Partnership Constructing solid models using implicit functions defining connectivity relationships among layers of an object to be modeled
CN102194247A (zh) * 2010-03-11 2011-09-21 新奥特(北京)视频技术有限公司 一种矢量字三角片建模过程中图形元素信息的判断方法
CN103186787A (zh) * 2011-12-31 2013-07-03 廖志武 基于点云模型的低质汉字初始骨架提取算法
CN105513006A (zh) * 2014-10-16 2016-04-20 北京汉仪科印信息技术有限公司 一种TrueType字体轮廓粗细调整方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6100893A (en) * 1997-05-23 2000-08-08 Light Sciences Limited Partnership Constructing solid models using implicit functions defining connectivity relationships among layers of an object to be modeled
CN102194247A (zh) * 2010-03-11 2011-09-21 新奥特(北京)视频技术有限公司 一种矢量字三角片建模过程中图形元素信息的判断方法
CN103186787A (zh) * 2011-12-31 2013-07-03 廖志武 基于点云模型的低质汉字初始骨架提取算法
CN105513006A (zh) * 2014-10-16 2016-04-20 北京汉仪科印信息技术有限公司 一种TrueType字体轮廓粗细调整方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘文予等: "一种全局优化的多边形变形方法及应用", 《计算机辅助设计与图形学学报》 *
刘杰: "三角剖分的应用研究", 《中国优秀硕士学位论文全文数据库》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110929767A (zh) * 2019-10-24 2020-03-27 云从科技集团股份有限公司 一种字形处理方法、系统、设备和介质
CN110929767B (zh) * 2019-10-24 2021-05-18 云从科技集团股份有限公司 一种字形处理方法、系统、设备和介质

Also Published As

Publication number Publication date
CN108665514B (zh) 2021-02-09

Similar Documents

Publication Publication Date Title
US8194974B1 (en) Merge and removal in a planar map of an image
JP6773419B2 (ja) 細分割曲面上における2d画像のエングレービング
CN109146838A (zh) 一种基于几何特征与区域融合的g显带粘连染色体分割方法
US7929755B1 (en) Planar map to process a raster image
Arcelli et al. Finding grey-skeletons by iterated pixel removal
US7200532B1 (en) Subdivision surface-based geometric modeling system
CN115311172A (zh) 地图区域分割方法以及相关设备
CN114777792A (zh) 路径规划方法、装置、计算机可读介质及电子设备
CN108665514A (zh) 字形剖分方法及字形剖分装置
CN112330587B (zh) 一种基于边缘检测的银线型触头烧蚀区域识别方法
JP2017134596A (ja) 画像処理方法及びプロセスシミュレーション装置
CN114511862B (zh) 表格识别方法、装置及电子设备
CN113936133B (zh) 一种面向目标检测的自适应数据增强方法
CN113409344B (zh) 模板信息获取方法、设备及计算机可读存储介质
CN112991308B (zh) 一种图像质量的确定方法、装置、电子设备和介质
CN112967333B (zh) 基于等级划分的复杂点云骨架提取方法及系统
CN107507279A (zh) 基于快速凸壳技术的三角网生成方法
JP3138933B2 (ja) モデリングシステム
CN109031237B (zh) 快速获取雷达组合反射率等值线数据的方法
Sarfraz et al. Visualization of data using genetic algorithm
CN116309198B (zh) 图像处理方法、装置、存储介质及计算机设备
CN114462514B (zh) 一种基于边缘提取与空洞卷积的抓取目标检测算法
CN114565633B (zh) 基于概念结构元素和矩阵范数的彩色图像边缘提取方法
CN117876555B (zh) 一种基于poi检索的三维模型数据高效渲染方法
CN113139975B (zh) 一种基于道路特征的路面分割方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230608

Address after: 3007, Hengqin international financial center building, No. 58, Huajin street, Hengqin new area, Zhuhai, Guangdong 519031

Patentee after: New founder holdings development Co.,Ltd.

Patentee after: BEIJING FOUNDER ELECTRONICS Co.,Ltd.

Address before: 100871, Beijing, Haidian District Cheng Fu Road 298, founder building, 9 floor

Patentee before: PEKING UNIVERSITY FOUNDER GROUP Co.,Ltd.

Patentee before: BEIJING FOUNDER ELECTRONICS Co.,Ltd.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20210209

CF01 Termination of patent right due to non-payment of annual fee