在第三节,我们介绍了经过一次性全局变换来校正地图的整体校正算法,并给出了算法实例。无论从理论上,还是实际的校正效果来看,整体校正算法(最小二乘法,变尺度法等)只能达到全局的最优, 而无法使得局部也达到最优的效果。尤其, 对于矢量地图中存在的非线性误差,使用这种方法,无法进行有效的校正。由此,我们有必要探索一种新的校正方法,来弥补这方面的缺陷。
§4.1 算法产生的动机
前面我们在分析矢量地图整体线性校正算法的局限性同时发现了手动逐点校正方法的某些优点。将矢量地图整体线性校正算法与手动逐点校正方法作一个对比分析是很有意义的。
矢量地图整体线性校正过程是自动的;是均匀地使用校正点信息获得一个线性变换规则并同时对全平面的所有节点进行校正;矢量地图整体线性校正算法不可能克服原地图存在的任何非线性误差。与此形成鲜明对照的是手动逐点校正方法。手动逐点校正方法应该归属于矢量地图的非线性校正范畴。手动逐点校正是人工而非自动的;是逐点使用该校正点信息并仅对该点进行校正而放弃使用其它节点原本可以获得的校正信息;手动逐点校正方法对任一校正点的任何位置误差均能一次得以校正但同时却造成矢量地图在该校正点邻域上的非线性程度加剧。能否能从这两种校正方法中取长避短,找到一种新的算法,能自动进行,能充分地使用已知精确点的明显的和潜在的校正信息,又能逐块有效地克服原地图存在的任何非线性误差。这就是本文所提出矢量地图离散非线性校正算法的最初动机。
以上的分析给我们有益的提示如下:矢量地图离散非线性校正算法的“离散”,或者说“分块”,它是同时针对矢量地图整体线性校正算法的“整体”和手动逐点校正过程的“逐点”而提出的。针对矢量地图整体线性校正算法只能获得全局最优,新算法企图进一步达到任意“分块”的局部区域最优校正。针对手动逐点校正过程每次一个矫正只能校正一个节点位置,新算法企图“以点带面”,达到整个“分块”内的局部区域优化校正。
§4.2 算法的思路
离散非线性校正算法的整个思路描述如下:
1) 整个校正过程由 n 个已知精确位置的校正点(也可称为“待校正点”,指校正前它在矢量地图节点坐标数据库中的坐标数据。而校正后这一数据替代为其已知精确位置的相应坐标数据,故确切定义理应称为“校正点对”。考虑到不至于产生混淆,我们在本文中一律称之为“校正点”)的累加校正过程组成。每个校正点及其邻近区域组成了一个分块区域,我们称之为一个离散块。每个校正过程只进行这个离散块内的所有矢量节点的位置校正。因此新算法要引入“离散”的概念及使用线性系统离散建模与遵循离散线性系统理论。
2) 离散块中的校正算法选择,首先是基于该校正点校正前后的两个坐标数据的差值,即位置的移动,以及矢量地图节点网络拓扑关系不变原理下由校正点移动可以获得的该离散块中所有其它节点的相应移动数据。另外,要遵循整幅地图离散建模或保证所有离散块之间的无缝衔接,离散块中的校正算法必须保证块边缘上的节点位置不变。
离散块中的校正算法不可能是简单的线性变换,一定是某类非线性校正算法。因此新算法要引入“非线性”的概念及满足该变换的边界条件,即保证任何时刻全平面的无缝连接。
3) 校正过的点在以后的校正过程中位置保持不变。这也是新算法确定离散或“分块”的唯一原则。因此,新算法中的“离散”概念不是一个对地图平面上的静态离散(对比离散线性系统理论中离散概念仅是时间上的静态离散), 而是基于地图平面上随时刻(已校正点数)而不同的动态离散概念。新算法确定的“分块”原则是在每一新校正点校正前,在该时刻的校正结果形成的整体地图平面上进行,只要保证校正过的点不动,不仅不要考虑历次分块的状况,而且应该选择以校正点为核心(不是中心)尽可能大的分块区域。可以推知,随 k 增大,不动点的增多,则新的非线性校正的离散块必将越来越小。形象地说,以时间回顾,k 层离散块是重重叠叠又交错的分布在时间轴上;以地图平面回顾,一张遭受过揉捏过的矢量地图幅面,如同平面保持但又挤压变形的柔性铁丝网经历多次的单点牵拉定位。
§4.3 离散块的选择


§4.4 算法的具体实现
下面的叙述涉及视觉效果的内容是以计算机屏幕上所显示出的矢量地图为准的。矢量地图的显示必须先确定矢量地图定标比例系数(ScaleY,ScaleX),坐标对应原点经纬度及方向角θ。我们的矢量地图自动生成平台采用的是GPS道路轨迹自动完成矢量地图初始定标过程。在这个轨迹自动定标之后,才开始校正算法的步骤。下面说明中涉及每一新校正点的数据输入操作,并不需要键盘输入数字,而是直接在屏幕矢量地图上用鼠标点取该点在校正前和校正后的位置完成的。点取该点校正后的精确位置,实际上就是获取位于该点的GPS轨迹记录,自动完成该点精确位置经纬度数据的输入。下面我们给出离散非线性校正算法的具体实现步骤:





和上面一样的非线性变换关系M,实现Sk′内部的非线性映射。
合理地转变的原则为:
① 点a为边界线aMb上校正范围的一个端点,其与K点对称的点b应当也是校正范围的一个端点。
② 已校正点M与点N对称的点p应当也是校正范围边界上的一个点。同样地,已校正点K与点N对称的点q应当也是校正范围边界上的一个点。
③ 过点P作aMb的平行线dpc, 交直线bq于点c ,交边界直线Ka于点d。
④ 多边形abcd就是包围新校正点的凸多边形Sk′。
本例只是简单的给出了由两条直线组成的扇形区域向有限区域转变的过程,较复杂的情况,可以根据同样的道理来处理。
§4.5 校正算法实例
在前面的内容中,从理论方面详细的介绍了离散非线性校正算法。在实际的工程中,我们把此算法应用于合肥、成都等城市的地图校正中,取得了理想的效果。最后我们还将给出将此算法和整体校正算法结合使用的实例。
§4.5.1 合肥市矢量地图校正实例
我们把离散非线性校正算法应用于合肥市矢量地图的校正,得到了如下的结果。在图4.5.1中,我们给出了校正前的合肥市矢量地图以及准确的车辆轨迹,并选取了六对样本点,对整个矢量地图进行校正。对于每一步校正后的矢量地图节点的变换情况,图3.4.2到图3.4.7给出了清晰的演示。图4.5.8到图4.5.10给出了采用十二对样本点进行校正的实例。从图中可以看到,随着校正点的增加,校正后的地图误差越来越小,并最终达到很好的效果。







§4.5.2 算法分析
把上面的校正结果同第三章中整体校正得到的结果进行比较分析,我们可以得到这样的结论:
传统的整体校正方法如最小二乘法等,只能使校正过的矢量地图达到全局最优,而不能达到局部区域的最优校正,即无法完全准确无误的校正好整个地图区域。离散非线性校正算法通过对整个地图平面进行分块非线性校正,使得在合理选取校正样本的情况下,能够对整个地图的所有的局部区域达到最优的校正,从而提高了校正后的矢量地图的精度。从适用性这一点上来说,只要矢量地图的道路间的相对位置是正确的,则通过选取合理的样本点,此算法一定能达到较好的校正效果。
由于离散非线性校正采用分块校正的方法,根据已校正点来确定离散块,并仅对离散块内部的节点进行校正,因此,样本点选取的数目、次序以及位置都成为影响校正效果和校正效率的很大因素。图4.5.7和图4.5.10在局部区域校正效果的差异也验证了这一点。因此,样本点的选取成为本算法需要改进和完善的地方之一。
§4.5.3 算法的综合运用
在实际的运用中,我们把整体校正算法与离散非线性校正算法结合起来使用,效果更好。即:针对一幅未校正的矢量地图,我们先采用整体校正算法,对地图作一个全局的伸缩和旋转变换。然后采用离散非线性校正算法进行二次校正。下面是我们综合运用这两种方法对成都市矢量地图进行校正的结果。最后两幅图提供了车辆轨迹的检查以及成都市矢量地图在监控系统中的良好运用。







