本发明涉及一种基于morphing变换的线要素移位方法及装置,属于空间数据中线要素空间冲突处理技术领域。
背景技术:
移位是地图制图综合的基本算子之一。当比例尺缩小时,地图上的目标就会变得拥挤,从而出现地图符号之间的压盖、重叠等现象,产生空间冲突,直接影响多尺度空间数据生产的空间关系正确性,破坏地图的清晰性和地图目标之间的可读性,影响地图出版的质量。
移位是解决地图制图和gis中空间冲突的基本算子之一。目前常用的移位方法可以大致分为最优化方法和几何算法两类,也有学者将其分为增量移位和整体移位。最优化方法对应于增量移位方法,它迭代计算相邻目标之间的冲突并进行移位,直到所有冲突被化解。代表性方法有模拟退火方法、有限元法、弹性力学模型、能量最小的beams模型、ductiletruss模型、snake算法等。然而,最优化方法存在以下不足:1)原理和过程复杂,难以实现;2)多数最优化模型效率较低,需要大量的计算资源,例如涉及大量的矩阵方程解算等;3)参数设置难以定量化,某些参数甚至没有直观意义,导致用户对参数设置比较盲目。几何方法对应于整体移位方法,是指通过分析冲突区域内地图目标的环境上下文,利用几何方法一次性计算要素移动的距离和方向,并一次性执行几何变换。
在制图综合领域,morphing变换主要用于线要素或面要素的连续变换,根据morphing变换的连续变换和形状保持等方面的优势,在目前的morphing变换中,需要进行弯曲匹配,而在弯曲匹配过程中,需对对应弯曲特征点进行识别和匹配,过程比较复杂。例如,发表于2012年7月份的中南大学学报(自然科学版)上的一篇名称为《一种基于弯曲结构的线状要素morphing方法》的论文,该论文公开了一种morphing变换方法,该方法线根据各自形态特征分别利用约束delaunay三角网提取线状要素的独立弯曲及其层次结构信息,并利用弯曲森林和弯曲数来表达线状要素的弯曲结构,然后,对弯曲结构进行识别和匹配,将两线状要素分割成多对对应线段。整个过程,需要对多个特征点进行识别和匹配,导致线要素移位复杂。
技术实现要素:
本发明的目的是提供一种基于morphing变换的线要素移位方法,以解决目前线要素morphing变换过程复杂的问题;本发明还提供了一种基于morphing变换的线要素移位装置。
本发明为解决上述技术问题而提供一种基于morphing变换的线要素移位方法,该移位方法包括以下步骤:
1)识别曲线目标上的弯曲,并对识别的弯曲进行冲突检测;
2)对冲突涉及的弯曲进行镜像,根据曲线本身及其镜像作为两端控制图形,确定morphing变换的变换参数,并根据确定的变换参数对曲线进行morphing变换。
进一步地,当弯曲或弯曲组面向基线移位时,morphing变换的变换参数t为:
当弯曲或弯曲组背向基线移位时,morphing变换的变换参数t为:
其中d为移位距离,当面向基线移位时,d为正,当背向基线移位时,d为负,即d=-d;dmax表示弯曲或弯曲组到基线的最远距离;基线为曲线首、尾节点的连线。
进一步地,所述步骤1)采用拐点识别的方式进行弯曲识别。
进一步地,所述步骤1)采用约束delaunay三角网进行冲突检测。
进一步地,所述步骤2)中曲线是以其基线为对称轴进行镜像的。
进一步地,所述移位距离为:
d=dth-min{dtk}
其中dth表示冲突区域的阈值,dtk为冲突距离。
进一步地,移位方向与弯曲位置、曲线等级有关,对于弯曲或弯曲组嵌套的冲突,对级别低的曲线进行移位,若待移位目标是内侧被包含要素,则移位方向是移向该曲线的基线;若待移位目标是外侧要素,则移位方向是背向该曲线的基线;对于弯曲或弯曲组相背的冲突,优先移动低级别的曲线弯曲或弯曲组,移动方向是移向曲线的基线。
本发明还提供了一种基于morphing变换的线要素移位装置,该移位装置包括检测单元和变换单元,
所述的检测单元用于识别曲线目标上的弯曲,并对识别的弯曲进行冲突检测;
所述的变换单元用于对冲突涉及的弯曲进行镜像,根据曲线本身及其镜像作为两端控制图形,确定morphing变换的变换参数,并根据确定的变换参数对曲线进行morphing移位变换。
进一步地,所述变换单元确定的morphing变换参数为:
当弯曲或弯曲组面向基线移位时,morphing变换的变换参数t为:
当弯曲或弯曲组背向基线移位时,morphing变换的变换参数t为:
其中d为移位距离,当面向基线移位时,d为正,当背向基线移位时,d为负,即d=-d;dmax表示弯曲或弯曲组到基线的最远距离;基线为曲线首、尾节点的连线。
进一步地,所述移位距离为:
d=dth-min{dtk}
其中dth表示冲突区域的阈值,dtk为冲突距离。
本发明的有益效果是:本发明通过识别曲线目标上的弯曲,并对识别的弯曲进行冲突检测;然后对冲突涉及的弯曲进行镜像,根据曲线本身及其镜像作为两端控制图形,确定morphing变换的变换参数,并根据确定的变换参数对曲线进行morphing变换。本发明使用曲线与其镜像进行morphing变换来实现移位,避免了特征点识别与匹配的难点,能够快速有效利用morphing变换实现线要素的移位。
附图说明
图1-a是c1型冲突的结构示意图;
图1-b是c2型冲突的结构示意图;
图1-c是c3型冲突的结构示意图;
图2-a是c4型冲突的结构示意图;
图2-b是c5型冲突的结构示意图;
图2-c是c6型冲突的结构示意图;
图3-a是c7型冲突弯曲的相对位置;
图3-b是c8型冲突弯曲的相对位置;
图4是冲突类型的层次关系示意图;
图5是曲线镜像示意图;
图6-a是morphing变换的复杂要素示意图;
图6-b是morphing变换的要素邻接示意图;
图6-c是morphing变换的要素不邻接示意图;
图7-a是t取0.3时的morphing变换结果示意图;
图7-b是t取0.2时的morphing变换结果示意图;
图7-c是t取0.1时的morphing变换结果示意图;
图7-d是t取-0.1时的morphing变换结果示意图;
图7-e是t取-0.2时的morphing变换结果示意图;
图7-f是t取-0.3时的morphing变换结果示意图。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步的说明。
本发明一种基于morphing变换的线要素移位方法的实施例
本发明morphing变换的线要素移位方法首先识别曲线目标上的弯曲,然后对识别的弯曲进行冲突检测,最后对冲突涉及的弯曲进行镜像,根据曲线本身及其镜像作为两端控制图形,确定morphing变换的变换参数,并根据确定的变换参数对曲线进行morphing变换移位,整个移位过程中不需要特征点识别和匹配。下面对本发明的实施过程进行具体描述。
在对本发明所采用的移位方法进行详细描述前,现将空间冲突进行分类,本发明空间冲突分类是根据曲线目标之间的冲突区域的数量、冲突区域涉及的弯曲的数量和位置关系三个方面进行的。
根据两个曲线目标之间的冲突区域的数量,分为单个冲突区域和多个冲突区域两大类。将两个曲线目标之间只有一个冲突区域的冲突类型记为c1,如图1-a所示;将两个曲线目标之间有多个(两个及两个以上)冲突区域,且一个弯曲关联多个冲突区域的冲突类型记为c2,如图1-b所示;将两个曲线目标之间有多个冲突区域,且冲突区域分别涉及不同弯曲的冲突类型记为c3,如图1-c所示。
根据冲突区域涉及的弯曲数量进行分类,如果发生冲突的双方在冲突区域都只涉及一个弯曲,则将该冲突类型记为c4,如图2-a所示;如果发生冲突的双方中,某一方在冲突区域只涉及一个弯曲,而另一方在冲突区域涉及多个弯曲,则将该冲突类型记为c5,如图2-b所示;如果发生冲突的双方在冲突区域都涉及多个弯曲,且多个弯曲之间没有明显的一一对应关系,将该冲突类型记为c6,如图2-c所示。
根据冲突区域的涉及的弯曲的相对位置进行分类,如果发生空间冲突的双方涉及的弯曲的凸(凹)方向一致,呈嵌套分布状态,则冲突类型标记为c7,如图3-a所示;如果发生空间冲突的双方涉及的弯曲的凸(凹)方向相反,从而呈现相背分布,则冲突类型记为c8,如图3-b所示。
上述三种不同角度的空间冲突类型分类之间的层次关系如图4所示,其中虚线表示组合关系,如c3可以分解为c1和或c2的组合,实线表示继承关系。
1.弯曲识别。
本实施例中的弯曲识别采用拐点识别的方式实现,具体步骤如下:
a.从曲线的第二个节点vi开始,计算向量vi-1vi和vivi+1的方位角ai,令flag=f(ai)。f(a)为角度标识的二值函数,其中a为某方位角的值,范围为[0°,360°),若a小于等于180°,则f(a)=0;否则f(a)=1;并计算f(ai+1),若f(ai+1)不等于flag,则vi标记为拐点,加入拐点集pts,并令flag=f(ai+1),否者i++,直到n-1,即线要素的所有点都被访问。
b.将首点v0、尾点vn和步骤a确定的拐点集pts按照其在线要素上的顺序,依次加入拐点列表。
c.将每相邻的两个拐点之间的弧段<v2k,v2k+1>为一个弯曲。
2.冲突检测
对于冲突检测本实施例采用约束delaunay三角网进行冲突检测,该方法能够精确定位冲突区域涉及的弯曲(组),检测过程如下:
1)对曲线进行插值,以消除狭长三角形产生的空间隔离影响,插值的步长为线要素节点之间的最小弧段长度。
2)以插值处理后的曲线为约束条件,构建约束三角网。
3)删除三个顶点全部位于同一个曲线的三角网,在剩下的三角网集合{ti}中,ti必然是其中一个顶点v位于某一个曲线,而另外两个顶点位于另一个曲线。
4)自其中一个顶点v向其对边做垂线,垂线的长度记为dti,称这个特定的垂线长度为冲突距离,记为dti⊥<v,ti>,冲突距离的值越小,空间冲突越严重。假设冲突检测的距离阈值dth,若dti<dth,则标识该三角形为冲突区域三角形。
3.确定移位距离和移位方向。
当地物要素密集、图上各要素表示的位置发生矛盾时,其避让关系的处理原则一般是:自然地理要素与人工建筑要素矛盾时,移动人工建筑要素;主要要素与次要要素矛盾时,移动次要要素;独立地物与其他要素矛盾时,移动其他要素。地图要素的移位策略可以分为两类:针对不可变形的地图目标,采取平移的方法,而对于可变形的地图目标,采用morphing变换的方法进行移位,平移或morphing变换的距离和方向用如下方法确定。
对于某个冲突区域cri,其包含的冲突三角形集合为{ctk},ctk∈cri。在三角形ctk中,计算过顶点v的垂距dtk,也就是冲突距离dtk⊥<v,ctk>。此时,移位距离d可通过如下公式计算所得。
d=dth-min{dtk}(1)
其中dth表示冲突区域的阈值。dv表示目标比例尺地图上的图面最小可视分辨距离,一般为0.2mm或者0.3mm,那么可以通过如下公式参考确定dth:
dth=dv×mt(2)
式中,mt是目标数据的比例尺分母。
冲突区域的数量会影响移位距离,对于c1型冲突而言,移位距离可由式(1)确定;对于c2型冲突,一个弯曲对应多个冲突弯曲,若移位对象是只具有一个冲突弯曲的a2(共生弯曲),则移位距离为多个冲突区域的移位距离的最大值;对于c3型冲突,由于冲突区域是相互独立的,可以分解为c1型和或c2型来分别处理。
移动的方向跟弯曲位置、曲线等级有关系,对于弯曲(组)嵌套的c7型冲突,根据冲突双方曲线的等级不同,会有不同的移位方向。等级是根据空间数据的编码或者属性来确定的,比如省道,国道等,国道的等级高于省道,属性等级是已知量。如果曲线a1的级别低于曲线b1,则曲线b1保持不动,而对曲线a1进行移位,移位方向是移向曲线a1的基线;如果曲线a1的级别高于曲线b1,则曲线a1保持不动,而对曲线b1进行移位,移动方向是背向曲线b1的基线;如果曲线a1的级别等于曲线b1,则曲线a1和曲线b1可以同时进行移位,其中a1的移动方向是移向曲线a1的基线,b1的移动方向是背向曲线b1的基线。对于弯曲(组)相背的c8型冲突,则依据曲线的级别,优先移动低级别的曲线弯曲(组),移动方向是移向曲线的基线。
4.对冲突涉及的弯曲进行镜像,拓展morphing变换。
对于给定的曲线l,pi表示曲线的第i个节点,p0为该曲线的首点,pn为该曲线的尾点,将连接该两点的直线p0pn称为曲线l的基线,记为lbase。求解曲线l关于基线lbase的镜像,需要计算曲线l的每一个节点pi关于基线lbase的镜像点,然后按顺序连接成为曲线即可。对于节点pi,首先计算该点在基线lbase上的垂足ppi,计算方法如下:
a=-b×k
然后,求解pi关于垂足ppi的对称镜像qi,计算公式如下:
qi.x=2×ppi.x-pi.x
qi.y=2×ppi.y-pi.y
最后,按照i从小到大的顺序,依次将qi连接构成曲线m,即为l关于基线lbase的镜像。
记f:[0,1]→l是表示输入曲线l的连续函数,f(0)和f(1)分别对应的是l的首点p0和尾点pn;记g:[0,1]→m是表示镜像曲线m的连续函数,g(0)和g(1)分别对应的是m的首点q0和尾点qn。根据上述求解曲线镜像的过程可以看出,pi和qi是严格的一一对应关系,对应关系的配置参数就是它们位于曲线上的序号i。也就是说,对于给定的u(0≤u≤1),必然存在
h(t,u)=(1-t)×f(u)+t×g(u)
其中,h(t,u)是关于f(u)与g(u)变换的点,t是用于控制形状变换程度的参数。当t=0时,h(0,u)=f(u),即此时的变换结果是输入曲线l;当t=1时,h(1,u)=g(u),即此时的变换结果为镜像曲线m。t从0变换至1的过程则对应着曲线l渐变为其镜像m的过程。
对于morphing变换而言,两个曲线的特征点识别以及特征点之间的对应关系至关重要,它直接影响着morphing变换曲线的精度和形状。本发明使用曲线与其镜像进行morphing变换来实现移位,曲线及其镜像之间的节点必然是一一对应关系,避免了特征点识别与匹配两个难点。
由于f:[0,1]→l是连续函数,故而不能表示一个线要素包含多个部分的复杂曲线,如图6-a中的要素b1包含两个相离的几何曲线。对于这种复杂曲线,本文需要首先将其拆分成多个简单曲线。另外,还可能会遇到一个冲突区域涉及多个相邻接的曲线的情况,如图6-b中的冲突区域涉及两个邻接的要素b2和b3。此时需要将邻接的曲线合并为一个整体,综合考虑弯曲情况并进行morphing变换和移位。对于如图6-c中的冲突区域涉及两个不相接的要素b4和b5的现象,由于morphing变换对曲线的首尾点没有改变,因此,当冲突区域涉及曲线的首点或尾点时,则morphing变换不适用,应考虑选择其他移位方法,比如整体平移等。
在普通morphing变换中,t是一个与比例尺有关的参数,表明变换结果随比例尺的不同而变化。而本发明采用morphing变换的目的是对曲线进行移位,此处的t是一个与移位距离和方向相关的参数。移位距离d是控制morphing变换程度的定量指标,对于某个弯曲而言,该弯曲的移位方向不仅可以面向基线方向移位,还可以背向基线方向移位,为了与普通morphing变换中t的参数意义相同,本发明规定面向基线方向为正方向,背向基线方向为负方向。例如,面向基线方向移位距离d=3m,背向基线方向移位则是d=-3m。
当弯曲(组)面向基线移位时,曲线局部的弯曲(组)移位不能超过其基线,即0<d<dmax,此处dmax表示弯曲(组)到基线的最远距离,当曲线移位超过了基线位置时,一般会认为该曲线已经发生较大的形态变化,应该对曲线予以整体的移位,即全部弯曲(组)都进行平移,也就是全局移位。为了使移位之后的空间冲突得到消解,假设需要移位的距离为d,则t计算如下:
d=dmax时,t取到极限值0.5,h(0.5,u)=0.5×f(u)+0.5×g(u),即此时的变换结果为f(u)与g(u)的对称轴,也就是基线lbase。考虑到曲线局部曲线(组)的移位一般都不能超过其基线,根据上式可知,面向基线移位时的形变参数t的取值范围是0≤t<0.5。
当弯曲(组)背向基线移位时,d<0,相当于对曲线l做“拉伸”。普通morphing变换中t的取值范围是0≤t≤1。如图7-d、图7-e和图7-f中虚线所示,从这个角度看,在弯曲(组)背向基线移位时,拉伸的结果及其镜像等价于普通morphing变换两端的控制曲线,但是在本发明中却为未知量,而输入曲线在此时相当于morphing变换的结果,在本发明中为已知量,这正好是普通morphing变换关于输入曲线与输出曲线的反函数。此时,变换参数t定义如下:
此时,t的取值范围是t<0,曲线l的morphing变换结果位于l的外侧,实现了背向基线的移位。因此本发明中的变换参数t是一个与移位距离和方向相关的参数,t的正负体现了移位的方向,t的绝对值大小体现了移位的距离,t的取值分别为0.3、0.2、0.1、-0.1、-0.2、-0.3,不同的t取值下morphing变换结果分别如图7-a、图7-b、图7-c、图7-d、图7-e和图7-f所示,其中实线是输入曲线,虚线是移位结果。
通过上述过程可知,本发明的整个移位过程中不需要特征点识别和匹配,能够有效解决目前morphing变换过程中计算量大,处理慢的问题。
本发明一种基于morphing变换的线要素移位装置的实施例
本实施例的移位装置包括检测单元和变换单元,检测单元用于识别曲线目标上的弯曲,并对识别的弯曲进行冲突检测;变换单元用于对冲突涉及的弯曲进行镜像,根据曲线本身及其镜像作为两端控制图形,确定morphing变换的变换参数,并根据确定的变换参数对曲线进行morphing移位变换。各单元的具体实现手段已在方法的实施例中进行了说明,这里不再赘述。