一种交叉口密集区域的骨架线提取方法
技术领域
本发明涉及地图制图技术领域,尤其涉及一种交叉口密集区域的骨架线提取方法。
背景技术
骨架线提取是实现多边形降维、***融解等地图综合操作的关键步骤,骨架线的提取要顾及多边形的形状特征,能够概括多边形的主体结构及延展特性,在符合制图规范的同时要满足人的视觉认知。目前骨架线提取最常用的方法是DeLucia等在1987年提出了一种基于边界约束Delaunay三角网的骨架线提取方法,后续大量研究人员基于该方法进行改进。如陈涛等人的论文“多边形骨架线与形心自动搜寻算法研究”中利用Delaunay三角网分析多边形的形态结构,并在此基础上根据分支部分的面积,提取主骨架线和多边形的形心;专利“一种狭长图斑***线的处理方法”(申请号:CN201710973188.1)公开了一种狭长图斑***线的处理方法,其通过Delaunay三角网狭长图斑进行三角形划分,并提取所述狭长图斑中的骨架线,同时对骨架线上的抖动和去悬挂线处理,从而获取与原图形的形状更加一致的自然光滑的图斑***线。
现有基于Delaunay三角网骨架线提取方法用于道路或水网的交叉口的骨架线提取时,是以每交叉口为处理单元,通过设定方向阈值及分支结点距离阈值,来获得交叉口区域的骨架线,当然而,当交叉口情况较为简单,如单一T字形或者十字型时,提取效果较好,如专利“一种狭长图斑***线的处理方法”即如此。但当交叉口复杂汇聚时,现有方法会因无法准确剥离单个分支汇聚区,导致所提骨架线不够准确。此外,交叉口密集区骨架线的形状复杂,以每一个分支汇聚区为单元进行处理,无法顾及各个分支之间相互关联形成的区域整体特征,导致区域整体结构被破坏。
发明内容
本发明的目的在于提供一种交叉口密集区域的骨架线提取方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种交叉口密集区域的骨架线提取方法,包括如下步骤,
S1、建立多边形的约束Delaunay三角网,对多边形中的长边进行加密,并更新约束Delaunay三角网;
S2、基于更新后的约束Delaunay三角网,提取多边形骨架线;
S3、基于提取的骨架线,对交叉口密集区进行识别;
S4、对识别出的交叉口密集区进行骨架线调整优化。
2、根据权利要求1所述的交叉口密集区域的骨架线提取方法,其特征在于:步骤S1还包括如下内容,
S101、识别约束Delaunay三角网中III类三角形中的钝角三角形,并设定最小角阈值,将最小角小于最小角阈值的钝角三角形进行标记、并放入三角形集合;
S102、识别三角形集合中所有三角形的最长边,并查找与这些最长边邻接、且有一个边是边界的II类三角形;
S103、将所有最长边为边界边的II三角形挑选出来、标记为待加密三角形,且将其相应的最长边标记为待加密局部长边;
S104、将与待加密三角形关联的三角形集合中III类三角形的最短边设置为加密步长,并将待加密三角形和所述待加密局部长边按加密步长进行加密。
优选的,步骤S3包括如下内容,
S301、为初始骨架线构建点、线拓扑,记录骨架线拓扑中的各个结点所关联的关联弧段数量;
S302、选取关联弧段数量为三的结点,该结点为三叉口结点,其所在区域为三叉口区域;
S303、计算三叉口区域的局部近似宽度;
S304、将首尾端点均为三叉口结点的弧段定义为连接弧段;分别计算连接弧段首结点和尾结点所在区域的局部近似宽度,并将其中的较大值作为连接弧段所在区域局部近似宽度;
S305、将连接弧段的首结点和尾结点间去除III类三角形内部长度的部分记为连接弧段的有效长度;并判断连接弧段的有效长度是否小于连接弧段所在区域局部近似宽度,若是,则所述连接弧段的首结点和尾结点相互关联,该连接弧段为关联弧段;若否,则所述连接弧段的首结点和尾结点不关联,该连接弧段为关联弧段;
S306、将步骤S305中所有的关联弧段放入关联弧段集合中;并依次从关联弧段集合中选取一个关联弧段,记为第一关联弧段,并将第一关联弧段的首结点和尾结点作为追踪结点,将第一关联弧段的首结点或尾结点存在的关联弧段记为第二关联弧段,并将第二关联弧段记录到关联弧段集合中;待各个关联弧段都检测完毕,对各关联弧段进行聚类扩展,得到交叉口聚集结果。
优选的,步骤S4包括如下内容,
S401、利用CRITIC方法对各连接弧段的长度、连通度、接近度以及中介度进行加权,得到连接弧段的重要度;
S402、选取一个仅有一侧存在关联弧段的三叉口结点作为stroke连接追踪起始结点,并将该三叉口结点的连接弧段作为追踪弧段,将该追踪弧段另一侧的结点作为追踪结点;
S403、将追踪结点的连接弧段作为stroke连接候选集,并计算各个连接弧段的重要性;
S404、将重要性较大的连接弧段优先与上一连接弧段连接构成stroke;
S405、以步骤S403和步骤S404为基础,继续向上追踪计算stroke连接,直至不存在追踪结点的连接弧段,则单条stroke连接结束;
S406、探索现有stroke连接的分支连接弧段,直至所有交叉口密集区内所有的连接弧段均已计算,stroke连接计算结束;
S407、基于计算得到的交叉密集区stroke连接,以stroke连接上的两个连接弧段为基准弧段,取III类三角形边上的两点连线的中点作为三叉口结点的调整位置,将三叉口结点关联的三个连接弧段与该中点进行连接,完成各个三叉口区域的骨架线调整。
优选的所述交叉口结点为III类三角形的中心点。
优选的,所述三叉口区域的局部近似宽度为三叉口对应的III类三角形的内部骨架线中最大值的两倍。
本发明的有益效果是:1、区域通过该方法提取骨架线后能够保持原有区域的整体特征,自然延展且符合人类视觉要求。2、实现交叉口复杂密集区域的识别判定和骨架线提取,同时依据stroke连接具备的良好延续性特征进行提取骨架线的优化,使最终骨架线结果更加科学准确。3、该方法在提取骨架线的过程中不受分支复杂边界及排列结构的干扰,能够处理此区域的骨架线抖动,所提骨架线不会存在较大程度的扭曲,也不会丢失了此区域的整体结构。
附图说明
图1是本发明实施例中骨架线提取方法的流程图;
图2是本发明实施例中步骤S1的流程图;
图3是本发明实施例中拉长的III类三角形的示意图;
图4是本发明实施例中一边为边界的II类三角形的示意图;
图5是本发明实施例中具有待加密局部长边三角形的示意图;
图6是本发明实施例中加密步长进行加密的三角形的示意图;
图7是本发明实施例中步骤S3的流程图;
图8是本发明实施例中三叉口结点的示意图;
图9是本发明实施例中连接弧段的示意图;
图10是本发明实施例中三叉口聚集结果示意图;
图11是本发明实施例中步骤S4的流程图;
图12是本发明实施例中三叉口区域骨架线调整前的示意图;
图13是本发明实施例中三叉口区域骨架线调整后的示意图;
图14是本发明实施例中的原始骨架线的示意图;
图15是本发明实施例中使用现有技术方法提取骨架线的示意图;
图16是本发明实施例中使用本发明方法提取骨架线的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明提供了一种交叉口密集区域的骨架线提取方法,包括如下步骤:
S1、建立多边形的约束Delaunay三角网,对多边形中的长边进行加密,并更新约束Delaunay三角网;
S2、基于更新后的约束Delaunay三角网,提取多边形骨架线;
S3、基于提取的骨架线,对交叉口密集区进行识别;
S4、对识别出的交叉口密集区进行骨架线调整优化。
通过采用上述步骤,可以实现交叉口复杂密集区域的识别判定和骨架线提取,同时依据stroke连接具备的良好延续性特征进行提取骨架线的优化,使最终骨架线结果更加科学准确、自然延展且符合人类视觉要求。
实施例一
如图2至图6所示,本实施例中详细说明了步骤S1的具体内容,所述步骤S1具体包括如下内容,如图2所示:
S101、识别约束Delaunay三角网中III类三角形中的钝角三角形,并设定最小角阈值,将最小角小于最小角阈值的钝角三角形进行标记、并放入三角形集合;
S102、识别三角形集合中所有三角形的最长边,并查找与这些最长边邻接、且有一个边是边界的II类三角形;
S103、将所有最长边为边界边的II三角形挑选出来、标记为待加密三角形,且将其相应的最长边标记为待加密局部长边;
S104、将与待加密三角形关联的三角形集合中III类三角形的最短边设置为加密步长,并将待加密三角形和所述待加密局部长边按加密步长进行加密。
本实施例中,所述步骤S1主要是对多边形建立舒适的约束Delaunay三角网,从而便于后续基于三角网提取骨架线。由于在分叉口密集区域,会存在大量一侧分支密集、另一侧无分支的复杂区域,若不经加密,由约束Delaunay直接提取骨架线,会导致对分支汇聚区的识别出现较大的偏差;若采用传统整体加密方法,会导致正常末梢产生无效分支,因此利用边长自适应加密对这类复杂区域进行结点加密。
本实施例中,首先识别III类三角形中的钝角三角形,并设定最小角阈值Amin,若某钝角三角形的中的最小角小于Amin,则对其进行标记并放入三角形集合S中,如图3中黑色三角形所示;之后识别三角形集合S中所有三角形的最长边,并查找与这些最长边邻接的、且有一条边是边界的II类三角形,如图4中黑色三角形所示;之后识别上述II类三角形的最长边,并判断其是否为边界边,若为边界边,则将其标记为待加密局部长边,同时标记该II类三角形为待加密三角形,如图5中黑色三角形所示;将加密步长设置为待加密II类三角形关联的III类三角形集合中的III类三角形的最短边;将待加密三角形和待加密局部长边按照加密步长进行加密,如图6所示。
实施例二
如图7至图10所示,本实施例中,针对步骤S3进行说明,所述步骤S3包括如下内容,如图7所示:
S301、为初始骨架线构建点、线拓扑,记录骨架线拓扑中的各个结点所关联的关联弧段数量;
S302、选取关联弧段数量为三的结点,该结点为三叉口结点,其所在区域为三叉口区域;
S303、计算三叉口区域的局部近似宽度;
S304、将首尾端点均为三叉口结点的弧段定义为连接弧段;分别计算连接弧段首结点和尾结点所在区域的局部近似宽度,并将其中的较大值作为连接弧段所在区域局部近似宽度;
S305、将连接弧段的首结点和尾结点间去除III类三角形内部长度的部分记为连接弧段的有效长度;并判断连接弧段的有效长度是否小于连接弧段所在区域局部近似宽度,若是,则所述连接弧段的首结点和尾结点相互关联,该连接弧段为关联弧段;若否,则所述连接弧段的首结点和尾结点不关联,该连接弧段为关联弧段;
S306、将步骤S305中所有的关联弧段放入关联弧段集合中;并依次从关联弧段集合中选取一个关联弧段,记为第一关联弧段,并将第一关联弧段的首结点和尾结点作为追踪结点,将第一关联弧段的首结点或尾结点存在的关联弧段记为第二关联弧段,并将第二关联弧段记录到关联弧段集合中;待各个关联弧段都检测完毕,对各关联弧段进行聚类扩展,得到交叉口聚集结果。
本实施例中,通常交叉口密集区呈现的状态是三叉口密集聚集,要实现这些密集区骨架线的提取,需要对这些密集三叉口进行识别,并针对性的实现骨架线的提取和修复;其包括三叉口识别、三叉口关联和三叉口聚集;其中,
(1)三叉口识别包括:为初始骨架线构建点、线拓扑,对于骨架线拓扑中的任一结点,记结点关联的关联弧段数为ArcNum(Node),某一结点的ArcNum(Node)=3,则此结点即为三叉口结点,其所在区域即为三叉口区域,如图8中的A-P所示,可以发现这些三叉口结点即是III类三角形的中心点。
(2)三叉口关联包括;识别出的三叉口是否聚合,需要通过三叉口之间的连接弧段进行关联并且判断,其中连接弧段定义为,若某一弧段的首末端点均为三叉口结点,则该弧段为三叉口连接弧段;关联关系的具体执行过程如下,
1)计算三叉口所在区域局部近似宽度WNODE:将三叉口对应的III类三角形的内部骨架线中最大值的两倍记为三叉口所在区域局部近似宽度WNODE,即WNODE=Max(L30,L31,L32)×2;
2)计算连接弧段所在区域局部近似宽度WARC:分别计算连接弧段首结点Ns和尾结点Ne所在区域局部近似宽度WNs和WNe,并将其大值作为连接弧段所在区域局部近似宽度WARC,即WARC=Max(WNs,WNe);
3)计算连接弧段有效长度Lv:将连接弧段首末结点间去除III类三角形内部长度的部分记为连接弧段有效长度Lv,如图9所示,首末结点F、G间连接弧段的有效长度Lv=LFG-L32-L’30;
4)若两个三叉口结点间连接弧段的有效长度Lv小于连接弧段所在区域局部近似宽度WARC,即同时满足ArcNum(Ns)=3,ArcNum(Ne)=3,Lv<WARC,则此两三叉口相互关联,记为间的连接弧段为Arclink;若否,则所述连接弧段的首结点和尾结点不关联。
(3)三叉口聚集包括:为多边形所有三叉口结点计算其关联弧段Arclink,并放入集合S(Arclink),任选一个Arclink,并将其首结点Ns和尾结点Ne作为追踪结点,检测其首结点Ns或尾结点Ne是否也存在Arclink(除Arclink自身),并将其记录到邻近关联Arclink集合NeighborArclink(Arclink)中,待每一个Arclink检测完毕,再对其进行聚类扩展,得到交叉口聚集结果,如图10所示。
实施例三
如图11至图13所示,本实施例针对步骤S4进行说明,所述步骤S4具体包括如下内容,如图11所示:
S401、利用CRITIC方法对各连接弧段的长度、连通度、接近度以及中介度进行加权,得到连接弧段的重要度;
S402、选取一个仅有一侧存在关联弧段的三叉口结点作为stroke连接追踪起始结点,并将该三叉口结点的连接弧段作为追踪弧段,将该追踪弧段另一侧的结点作为追踪结点;
S403、将追踪结点的连接弧段作为stroke连接候选集,并计算各个连接弧段的重要性;
S404、将重要性较大的连接弧段优先与上一连接弧段连接构成stroke;
S405、以步骤S403和步骤S404为基础,继续向上追踪计算stroke连接,直至不存在追踪结点的连接弧段,则单条stroke连接结束;
S406、探索现有stroke连接的分支连接弧段,直至所有交叉口密集区内所有的连接弧段均已计算,stroke连接计算结束;
S407、基于计算得到的交叉密集区stroke连接,以stroke连接上的两个连接弧段为基准弧段,取III类三角形边上的两点连线的中点作为三叉口结点的调整位置,将三叉口结点关联的三个连接弧段与该中点进行连接,完成各个三叉口区域的骨架线调整。
本实施例中,对于任一三叉口聚集区,本发明采用顾及stroke特征提取其内部骨架线。首先以链接弧段为单元,构建stroke,进而对三叉口区域的骨架线进行调整,使其依据stroke特征自然延展,得到更加符合人类认知的骨架线。其中包括:
(1)弧段重要性评价。本发明采用权重法确定连接弧段的重要性,其是运用连接弧段的长度、连通度、接近度、中介度,由CRITIC方法加权,得到连接弧段的重要度,其中连接弧段参量的含义见表1,表1是连接弧段参量的含义及计算方法。
表1
(2)构建stroke连接。基于各个连接弧段的重要性,本发明通过迭代计算交叉口密集区stroke连接,主要步骤如下:
1)识别仅有一侧存在关联弧段的三叉口结点,并任选一个作为stroke连接追踪起始结点,将其连接弧段作为追踪弧段,得到弧段的另一侧结点,将其作为追踪结点;
2)将追踪结点的连接弧段作为stroke连接候选集R,并计算各个连接弧段的重要性;
3)将重要性较大的弧段优先与上一弧段连接构成stroke;
4)依据步骤S403、S404思路,继续向上追踪计算stroke连接,直至不存在追踪结点的连接弧段,则单条stroke连接结束;
5)探索现有stroke连接的分支连接弧段,直至所有交叉密集区所有连接弧段均已计算,stroke连接计算结束,如图12所示
(3)骨架线调整。交叉口密集区stroke连接的基本单元连接弧段Arclink,其由两个三叉口结点组成,对于其中的任一三叉口结点,以stroke连接上的两个弧段为基准弧段,取III类三角形边上的两点连线的中点作为三叉口结点的调整位置,将三叉口结点关联的三个弧段与该中点进行连接,完成各个三叉口区域的骨架线调整。如图13所示,在三叉口结点O处,假设OA、OB所在弧段属于同一stroke,则取AB中点P,连接AP、BP、OP构成新的骨架线。
实施例四
如图14至图16所示,本实施例采用三种方法进行交叉口密集区域骨架线提取,提取结果如下,图14为原始骨架线,图15为现有其他方法,图16为本专利所述方法。对比可以看出,现有方法和本发明方法对于原有骨架线在三叉口处出现的弯曲抖动,均能够实现部分修复,表达地物的主体结构及延展特征,如图15和图16中A区域;但对于复杂交叉口密集区,现有方法会受到分支复杂边界及排列结构较为严重的干扰,无法处理此区域的骨架线抖动,所提骨架线存在较大程度的扭曲,从而丢失了此区域的整体结构,与之相反,本发明方法较好地提取了此区域的主体结构,并较为准确的描述了主体结构的骨架线,如图15和图16中B区域所示。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:
本发明提供了一种交叉口密集区域的骨架线提取方法,通过该方法提取骨架线后能够保持原有区域的整体特征,自然延展且符合人类视觉要求;实现交叉口复杂密集区域的识别判定和骨架线提取,同时依据stroke连接具备的良好延续性特征进行提取骨架线的优化,使最终骨架线结果更加科学准确;该方法在提取骨架线的过程中不受分支复杂边界及排列结构的干扰,能够处理此区域的骨架线抖动,所提骨架线不会存在较大程度的扭曲,也不会丢失了此区域的整体结构。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。