专利名称::路网栅格数字地图自动矢量化方法
技术领域:
:本发明涉及的是一种图像处理
技术领域:
的方法,具体是一种路网栅格数字地图自动矢量化方法。
背景技术:
:路网栅格数字地图的矢量化指将路网栅格数字地图转换为路网矢量数字地图。栅格数字地图是一种反映地图要素地理特征和拓扑结构的位图(又称点阵图)。栅格数字地图具有生成方便、内容细致、容易被客户接受等优点,但也存在着数据量大、难以进行分析和决策(包括路径优化、轨迹校正等内容)等缺点,因此难以直接应用于智能交通、车辆导航等领域。矢量数字地图是对一种或多种地图要素矢量化形成的一种矢量化数据文件,其具有数据量小、便于分析和决策等诸多优点,是智能交通系统和车辆导航系统中常用的数字地图格式。按照数据的目标形式,矢量数字地图数据通常可分为点、线、面三种。每一种目标形式数据均代表了一类地图要素信息,三种目标形式数据叠加显示便得到了一幅矢量数字地图。由于路网地图中的地图要素为道路,可仅由"线"构成,因此路网矢量数字地图只涉及"线"数据。经过对现有技术的检索发现常用栅格数字地图矢量化方法主要分为手扶跟踪矢量化方法和扫描矢量化方法(覃其进.浅谈数字化技术在地籍测绘中的应用.广西地质,2001,14(111):59-62)。所谓手扶跟踪矢量化,是指依据屏幕上的栅格图像,通过手动跟踪来创建矢量对象。该方法主要缺点为1)需要购置专业仪器和软件,成本较高;2)作业员须长时间站立操作,劳动强度较大;3)需通过游标的十字丝和单靠人的眼睛来判断采点,采集难以保证较高精度;4)该方法属于纯粹的手工作业,缺乏自动化手段。扫描矢量化是近几年兴起的地图矢量化方法。其做法是利用专业扫描矢量化软件,在影像图上以自动或半自动的方式进行跟踪矢量化,从而实现栅格数字地图的矢量化。该方法比起手扶跟踪矢量化方法有着较大的进步,但是还存在着以下不足1)需购置专业扫描矢量化软件,成本较高;2)不能根据具体地物(如本文中的路网)的特点实施高精度矢量化;3)需要在作业员的操作和监督下完成,没有达到完全意义上的自动化。
发明内容本发明针对现有技术存在的上述不足,提供一种路网栅格数字地图自动矢量化方法,相比现有技术能够更加精确、快速将路网数字地图矢量化,可应用于测绘地图数字化等相关领域中。本发明是通过以下技术方案实现的,首先将路网栅格数字地图读入计算机内存,并检测路网图像上的道路路口,即包括交叉道路路口和道路终端,同时标记构成道路路口的像素;然后,以每个道路路口为中心检测其相邻的道路路口,同时生成该道路路口到各个相邻道路路口的像素链,紧接着在各像素链上等间隔添加节点,即为记录道路形状的图形点;最后,删除上一步添加的冗余节点,并按照标准矢量地图格式保存矢量化结果。标准化的路网矢量数字地图可广泛应用于智能交通和车辆导航等领域,具有广泛的应用前景。本发明具体包括以下步骤第一步,检测路网图像上的道路路口先将路网栅格数字地图读入计算机内存,然后通过划分模板对路网栅格数字地图进行模板运算将每个道路路口设置为节点像素,制成道路路口数字地图。所述的模板运算是指对于路网栅格数字地图上任意一个单元像素;7(/J),以该单元像素为中心设置划分模板,从路网栅格数字地图上读取划分模板。所述的读取划分模板为正方形,其边长为210个像素。所述的单元像素的像素值为1。所述的节点像素的像素置为3。所述的读取划分模板是指(1)将划分模板中的一个单元像素的像素值置零,并将该单元像素对应分模板内的坐标存入划分队列并作为队尾元素,然后依次取出划分队列的队首元素的坐标,并搜索该坐标对应的像素周围8个方向上相邻的像素中的单元像素,并将搜索到的单元像素的像素值置零后将其坐标存入划分队列中作为更新后的队尾元素,以此循环直至整个划分模板中的单元像素的坐标值均被存入划分队列中。(2)将划分模板内的所有像素的像素值置零,再将划分队列中所有元素对应坐标的像素值置l,划分队列中的坐标即为单像素宽边缘,然后清空该划分模板。(3)依次搜索单像素宽边缘上的每一个坐标的8个方向上相邻的像素中的单位像素,并记录搜索成功的次数进行道路路口判断,具体如下a)当搜索成功次数为0,表示当前单像素宽边缘上的坐标是噪声,将该坐标对应的像素值置零;b)当搜索成功次数为2,表示当前单像素宽边缘上的坐标不在道路路口上,返回步骤(1)进行下一个单像素宽边缘的判断;C)当搜索成功次数为1或大于2,表示当前单像素宽边缘上的坐标在道路路口上,将该坐标对应的像素值置3,即将该单元像素修改为节点像素。(4)重复步骤(1)至步骤(3)直至路网栅格数字地图上的每一个单元像素都进行过道路路口判断,则对应路网栅格数字地图上的全部道路路口均被遍历且对应的像素值均被置为3,制成道路路口数字地图。第二步,在道路路口数字地图上添加路口节点以道路路口数字地图上每个道路路口为中心添加路口节点,并且记录添加路口节点过程中所生成的放射状路体数据结构,全部的放射状路体数据结构便构成矢量路网地图。所述的路口节点是指存储路网拓扑结构信息和几何形状信息的坐标点。所述的放射状路体数据结构是指以某一道路路口为中心,沿着交于该道路路口的道路延伸直至遇到其他道路路口结束,在该过程中所涉及的道路体构成一个放射状路体数据结构,其中中心道路路口为主道路路口,外围道路路口为从道路路口。所述的以道路路口数字地图上每个道路路口为中心添加路口节点是指(1)对于道路路口数字地图上的任意节点像素p(/J),检查其构成的道路路口是否已作为主道路路口运算过。如没有,备份栅格地图,将备份地图上的p(i,刀置零,同时将其坐标放入划分队列的队尾,以划分队列非空为条件循环取出划分队列的队首元素,将其存入道路路口堆栈,同时取出该队首元素对应的像素的8个方向上相邻的像素中的节点像素,搜索到后置零,并将被置零像素的坐标放入划分队列的队尾。循环结束时,道路路口堆栈中存储的坐标所对应的像素即构成主道路路口,计算道路路口堆栈中存储坐标的中心坐标,记为(&,凡)。(2)将主道路路口周围的节点像素置零,并将它们的坐标放入划分队列的队尾,以划分队列非空为条件循环取出划分队列的队首元素,按其所在路段存入堆栈Chain[i](i-0,l,…)中,搜索取出像素8个方向上相邻的像素中的单位像素和节点像素,若搜到的为单位像素,则将其置零,并将其坐标放入划分队列的队尾;若为节点像素,将其置零,并将其坐标放入次划分队列(区别于划分队列)的队尾,然后以次划分队列非空为条件循环取出次划分队列的队首元素,存入道路路口堆栈(进入循环前清空)中,搜索取出元素8个方向上相邻的像素中的节点像素,搜到后置零,并将被置零像素的坐标放入次划分队列的队尾。循环结束时,道路路口堆栈中存储的坐标所对应的像素即构成一个从道路路口,计算其中心坐标,记为(《,乂)(i=0,1,…)。至此,一共得到了一个主道路路口的中心坐标(x^^),若干个从道路路口的中心坐标(x;,乂)(i=o,i,"'),以及主道路路口与各从道路路口之间连接路径的像素链Chain[i](i=0,1,…)。(3)在各像素链上,首先找到中间位置的像素,并记录其坐标(如果中间位置有两个像素,则记录它们的中点坐标);然后,自中间位置的像素到像素链的两端,按等间隔设置像素为节点,并记录它们的坐标。最终,将上述坐标整理并记录成如下矩阵格式的放射状路体数据结构<table>tableseeoriginaldocumentpage8</column></row><table>其中主道路路口,节点ll,节点12,…,从道路路口1即构成路网上的一个路段,第二步完成后得到的全部放射状路体数据结构即构成整幅路网矢量数字地图。第三步,删除冗余节点删除上一步生成的路网矢量数字地图中的冗余节点,得到最终的路网矢量数字地图。所述的冗余节点是指代表路体形状的非必需节点,即除直线型路体的两个必需节点以外的节点。所述的非共线性度是指衡量三个相邻节点的共线性程度的参数,具体计算式为〔=|(>3-:^2)(12—xj—(x3—x2)(>2—M)l,其中(X,M),02,;;2),03,}3)分别为三个相邻节点的坐标。该参数越大,则三个节点的共线性程度越低。所述的删除冗余节点是指计算每一个路体(两个道路路口之间的道路体,由除道路路口节点外的若干节点表示)上任意三个相邻节点的非共线性度,并将其与阈值f比较,如果c〈s,则表示三个相邻节点中的中间节点是冗余节点,故将其在矢量地图数据中的坐标删除。与现有技术相比,本发明可由计算机自动完成整个路网矢量化过程,生成的由"放射状路体数据结构"构成的路网矢量数字地图可以较为方便地转化成ESRIShp格式的标准底图,从而可以在多数商业GIS(GeographicInformationSystem)软件,如ArcGis,Maplnfo等中直接打开和编辑。一定程度上能给智能交通系统和车辆导航系统中的轨迹校正操作带来较大的便利。本发明无须购买数字地图矢量化专业设备,耗时较短,能满足大规模应用要求。图1为本发明的实施过程框图。图2为实施例矢量化过程全其中a为检测道路路口示意图;b为添加节点示意图;C为删除冗余节点示意图。图3为实施例矢量路网地其中a为适量数字地图;b为图3a的局部放大示意图。具体实施例方式下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。以某省某地区路网栅格数字地图作为矢量化对象实现本实施例的矢量化过程为例,其具体步骤如下1.读取路网栅格数字地图,存入二维数组RoadMap,设置一个5x5二维数组Mask。基于Mask,做如下运算1)逐个检査RoadMap上的像素是否为ROAD(即值为1),如果是,复制以该元素为中心的25个像素到Mask上(25个像素覆盖一个正方形区域);2)将像素Mask[2][2]置零,设置队列Combustion,并将坐标(2,2)放入该队列的队尾。以队列Combustion非空为条件循环取出队列Combustion的队首元素,在(Mask上)取出元素的8邻域内搜索单位像素,搜索到后置零,同时将被置零像素的坐标放入队列Combustion的队尾;3)将数组Mask的全部元素置零,然后将队列Combustion中存留坐标所对应的像素(在Mask上)重新置为R0AD,同时清空Combustion;4)沿着Mask的单像素宽度边缘査找单位像素,找到后置零,并将被置零像素的坐标放入Combustion的队尾。以队列Combustion非空为条件循环取出队列Combustion的队首元素,然后在取出像素的8邻域内(忽略超出Mask边界部分)搜索单位像素,搜索到后置零,并将被置零像素的坐标放入Combustion的队尾。循环结束后,变量Count加l,继续査找(重复步骤4)),直到Mask的全部边缘像素均被检査一遍是否为单位像素。5)根据变量Count=0,=2,=1或>2,将数组RoadMap上正被分析的单位像素分别置零,保持不变,置CROSS(即值为2的像素)。重复步骤1)5),直到数组RoadMap上除了两个像素宽度边缘部分外的全部单位像素按上述五步分析一遍。2.设置堆栈Check,然后逐个检查RoadMap上的像素是否为非节点像素(像素值不为2),同时检查其坐标是否已保存在Check中,如果均为否,则备份RoadMap于二维数组RoadMap2中。在RoadMap2上将刚检査到的节点像素置零,并将被置零像素的坐标放入队列Combustion的队尾(注意,步骤2开始前先清空Combustion)。以队列Combustion非空为条件循环取出Combustion的队首元素,将其坐标放入堆栈Crossing中,同时在RoadMap2上搜索取出元素8邻域内的节点像素,搜到后置零,并将被置零像素的坐标放入队列Combustion的队尾。循环结束后,计算堆栈Crossing中存储坐标的中心,并存于变量MainCross(二维坐标机构体变量)中。搜索堆栈Crossing中每个元素8邻域内的单位像素,搜索到后置零,并将被置零像素的坐标放入Combustion的队尾。以队列Combustion非空为条件循环l)取出Combustion的队首元素,检査取出元素与堆栈Chain[i](i=0,1,)中各元素(均为坐标)的位置关系,如果与某一堆栈中的某一元素互在对方的8邻域中,则将该取出元素存于上述堆栈中,否则设置新堆栈Chain[k](k为已有以Chain命名堆栈的总数),并将该取出元素存于新堆栈中;2)査找取出元素8邻域内的单位像素和节点像素,对于单位像素,将其置零,并把其坐标放入Combustion的队尾;对于节点像素,将其置零并保存其坐标于新设置队列SubCombustion的队尾,并以SubCombustion非空为条件循环取出SubCombustion的队首元素,保存其于堆栈Crossing中(循环前清空),在(RoadM即2上)取出元素的8邻域内搜索节点像素,搜索到后置零,并将被置零像素的坐标放入SubCombustion的队尾。循环结束后,计算Crossing中保存坐标的中心,按顺序存于变量SubCross[i](i=0,1,…)中。当本步骤的循环(上述l)与2))结束时,共得到坐标MainCross,SubCross[i](i=0,1,…),以及MainCross与各SubCross[i]之间的像素链,即堆栈Chain[i](^0,1,…)。在各像素链上,首先找到中间位置的像素,并保存该像素的坐标(如果中间位置有两个像素,则保存它们的中点坐标)于数组Nodes[i](i=0,l,一)中;然后,自中间位置的像素到像素链的两端,按等间隔将像素的坐标保存于数组Nodes[i](i=0,1,…)中。设置结构体数组Radial,将MainCross,SubCross[i],Nodes[i](i=0,1,…)中的信息保存于结构体Radial[j](j=0,1,2,…)中。当步骤2结束时,得到了存于结构体数组Radial中的矢量地图数据,其中每个结构体代表了一个以某一道路路口为中心的放射状路体数据结构。3.对数组Radial中的结构体逐个运算分别计算Nodes[i](i=0,1,)上任意三个相邻节点的"非共线性度"c—(_y3->;2)0c2—x》-(;c3—X2)(h-:^)1,其中",X),(A,h),0c3,")为上述三个节点的坐标(存于Nodes[i]中),比较"非共线性度"c与阈值c(比如设置为20)的大小关系,如果c^s,则在Nodes[i]中删除上述三个相邻节点位于中间的那个,即(x2,a)。以某省某地区的路网栅格数字地图为实施例数据,采用本实施例方法对其进行矢量化的过程全图如附图2所示,该图中的黑色圆点即为矢量地图数据中的节点(存于Radial数组中),附图3则为矢量化后的路网地图。权利要求1、一种路网栅格数字地图自动矢量化方法,其特征在于,首先将路网栅格数字地图读入计算机内存,并检测路网图像上的道路路口,即包括交叉道路路口和道路终端,同时标记构成道路路口的像素;然后,以每个道路路口为中心检测其相邻的道路路口,同时生成该道路路口到各个相邻道路路口的像素链,紧接着在各像素链上等间隔添加节点,即为记录道路形状的图形点;最后,删除上一步添加的冗余节点,并按照标准矢量地图格式保存矢量化结果。2、根据权利要求l所述的路网栅格数字地图自动矢量化方法,其特征是,包括以下步骤第一步,检测路网图像上的道路路口先将路网栅格数字地图读入计算机内存,然后通过划分模板对路网栅格数字地图进行模板运算将每个道路路口设置为节点像素,制成道路路口数字地图;第二步,在道路路口数字地图上添加路口节点以道路路口数字地图上每个道路路口为中心添加路口节点,并且记录添加路口节点过程中所生成的放射状路体数据结构,全部的放射状路体数据结构便构成矢量路网地图;第三步,删除冗余节点删除上一步生成的路网矢量数字地图中的冗余节点,得到最终的路网矢量数字地图。3、根据权利要求1所述的路网栅格数字地图自动矢量化方法,其特征是,所述的模板运算是指对于路网栅格数字地图上任意一个单元像素/7(/,力,以该单元像素为中心设置划分模板,从路网栅格数字地图上读取划分模板。4、根据权利要求3所述的路网栅格数字地图自动矢量化方法,其特征是,所述的读取划分模板为正方形,其边长为210个像素;所述的单元像素的像素值为1;所述的节点像素的像素置为3。5、根据权利要求4所述的路网栅格数字地图自动矢量化方法,其特征是,所述的读取划分模板是指(1)将划分模板中的一个单元像素的像素值置零,并将该单元像素对应分模板内的坐标存入划分队列并作为队尾元素,然后依次取出划分队列的队首元素的坐标,并搜索该坐标对应的像素周围8个方向上相邻的像素中的单元像素,并将搜索到的单元像素的像素值置零后将其坐标存入划分队列中作为更新后的队尾元素,以此循环直至整个划分模板中的单元像素的坐标值均被存入划分队列中;(2)将划分模板内的所有像素的像素值置零,再将划分队列中所有元素对应坐标的像素值置l,划分队列中的坐标即为单像素宽边缘,然后清空该划分模板;(3)依次搜索单像素宽边缘上的每一个坐标的8个方向上相邻的像素中的单位像素,并记录搜索成功的次数进行道路路口判断;(4)重复步骤(1)至步骤(3)直至路网栅格数字地图上的每一个单元像素都进行过道路路口判断,则对应路网栅格数字地图上的全部道路路口均被遍历且对应的像素值均被置为3,制成道路路口数字地图。6、根据权利要求5所述的路网栅格数字地图自动矢量化方法,其特征是,所述的道路路口判断,具体如下a)当搜索成功次数为0,表示当前单像素宽边缘上的坐标是噪声,将该坐标对应的像素值置零;b)当搜索成功次数为2,表示当前单像素宽边缘上的坐标不在道路路口上,返回步骤(1)进行下一个单像素宽边缘的判断;c)当搜索成功次数为1或大于2,表示当前单像素宽边缘上的坐标在道路路口上,将该坐标对应的像素值置3,即将该单元像素修改为节点像素。7、根据权利要求1或者2所述的路网栅格数字地图自动矢量化方法,其特征是,所述的路口节点是指存储路网拓扑结构信息和几何形状信息的坐标点。8、根据权利要求1或者2所述的路网栅格数字地图自动矢量化方法,其特征是,所述的放射状路体数据结构是指以某一道路路口为中心,沿着交于该道路路口的道路延伸直至遇到其他道路路口结束,在该过程中所涉及的道路体构成一个放射状路体数据结构,其中中心道路路口为主道路路口,外围道路路口为从道路路口。9、根据权利要求1或者2所述的路网栅格数字地图自动矢量化方法,其特征是,所述的以道路路口数字地图上每个道路路口为中心添加路口节点是指(1)对于道路路口数字地图上的任意节点像素/^,力,其中i和J分别表示该节点像素的坐标值,检查其构成的道路路口是否已作为主道路路口运算过;如没有,备份栅格地图,将备份地图上的p(/,力置零,同时将其坐标放入划分队列的队尾,以划分队列非空为条件循环取出划分队列的队首元素,将其存入道路路口堆栈,同时取出该队首元素对应的像素的8个方向上相邻的像素中的节点像素,搜索到后置零,并将被置零像素的坐标放入划分队列的队尾;循环结束时,道路路口堆栈中存储的坐标所对应的像素即构成主道路路口,计算道路路口堆栈中存储坐标的中心坐标,记为(2)将主道路路口周围的节点像素置零,并将它们的坐标放入划分队列的队尾,以划分队列非空为条件循环取出划分队列的队首元素,按其所在路段存入堆栈Chain[i],其中i=0,l,一,搜索取出像素8个方向上相邻的像素中的单位像素和节点像素,若搜到的为单位像素,则将其置零,并将其坐标放入划分队列的队尾;若为节点像素,将其置零,并将其坐标放入次划分队列的队尾,然后以次划分队列非空为条件循环取出次划分队列的队首元素,存入道路路口堆栈中,搜索取出元素8个方向上相邻的像素中的节点像素,搜到后置零,并将被置零像素的坐标放入次划分队列的队尾;循环结束时,道路路口堆栈中存储的坐标所对应的像素即构成一个从道路路口,计算其中心坐标,记为(x;,;O,其中i-0,1,…,S表示道路路口堆栈;(3)在各像素链上,首先找到中间位置的像素,并记录其坐标或中点坐标标;然后,自中间位置的像素坐标或中点坐标到像素链的两端,按等间隔设置像素为节点,并记录它们的坐标,最终,将上述坐标整理并记录成放射状路体数据结构。10、根据权利要求1或者2所述的路网栅格数字地图自动矢量化方法,其特征是,所述的删除冗余节点是指计算每一个路体,即两个道路路口之间的道路体,由除道路路口节点外的若干节点表示,上任意三个相邻节点的非共线性度,并将其与阈值s比较,如果"e,则表示三个相邻节点中的中间节点是冗余节点,故将其在矢量地图数据中的坐标删除;所述的冗余节点是指代表路体形状的非必需节点,即除直线型路体的两个必需节点以外的节点;所述的非共线性度是指衡量三个相邻节点的共线性程度的参数,具体计算式为C—(少广少2)02-A)-(A-A)02-乂)1,其中(W,)'02,^2)'03,乂3)分别为三个相邻节点的坐标。全文摘要一种图像处理
技术领域:
的路网栅格数字地图自动矢量化方法,首先将路网栅格数字地图读入计算机内存,并检测路网图像上的道路路口,即包括交叉道路路口和道路终端,同时标记构成道路路口的像素;然后,以每个道路路口为中心检测其相邻的道路路口,同时生成该道路路口到各个相邻道路路口的像素链,紧接着在各像素链上等间隔添加节点,即为记录道路形状的图形点;最后,删除上一步添加的冗余节点,并按照标准矢量地图格式保存矢量化结果。本发明生成的路网矢量数字地图能给智能交通系统和车辆导航系统中的轨迹校正操作带来较大的便利。文档编号G09B29/00GK101630463SQ20091005561公开日2010年1月20日申请日期2009年7月30日优先权日2009年7月30日发明者刘允才,史文欢,兵孙,黄茂祥申请人:上海交通大学