基于WebGIS和深度学习的高精度影像地图在线构建方法及设备与流程

文档序号:17446018发布日期:2019-04-17 05:37阅读:460来源:国知局
基于WebGIS和深度学习的高精度影像地图在线构建方法及设备与流程

本发明涉及地理信息科学领域,特别是一种基于webgis和深度学习的高精度影像地图在线构建方法及设备。



背景技术:

众所周知,全球范围内的影像地图都是卫星图像,使用影像地图会发现,目前大部分地图厂商提供的卫星图像并不是很清晰,如一栋楼房,一片草地等地物在影像地图上的可见度都是比较低的,并且全球各地不同地区清晰度也不一样,是因为用了不同分辨率的卫星图像。对于用什么数据以及用多少数据主要还是根据需求和成本共同决定的。googleearth/map国内一般只到20级,分辨率通常在米级,这个数据是全球尺度的而且免费,所以在任何地方,都只有米级的分辨率。有些对于以城市为对象的浏览和研究,这个级别的分辨率显然不够的,在全球绝大部分区域google影像并不能满足人们的需求,所以急需一种简单并且低成本的方式来获得高分辨率并且精确到厘米级别的影像地图。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术中影像地图分辨率不够的技术缺陷,提供一种基于webgis和深度学习的高精度影像地图在线构建方法。

本发明解决其技术问题所采用的技术方案是:构造一种基于webgis和深度学习的高精度影像地图在线构建方法,包含如下步骤:

s1、采集构建地图区域的影像图片;

s2、根据所采集的影像图片上的地物类型,通过labelme去制作训练集,根据所述训练集,通过调用maskrcnn模型中train方法分别生成各个待识别目标的训练模型,当训练模型建立完成之后,通过flask框架将模型发布成httprest服务,服务输入参数为由影像图片转成的base64字符srcdata和地物类型type,输出结果为由识别后的影像图片转成的base64字符srcdata1和保存已识别影像的本地路径path1;

s3、新建python工程文件,采用位运算的方法,利用掩膜在识别地物类型后的影像图片上绘制裁剪区域进行图像裁剪,把图片裁成构建地图所需要的区域裁剪;通过flask框架将剪裁完成后的python工程文件发布成httprest服务,服务输入参数为裁剪区域边界的顶点和已识别影像的本地路径path1,输出结果为裁剪后的影像图片转成的base64字符srcdata2和保存已裁剪影像图片的本地路径path2;

s4、新建wcf服务,引入mapgis.geodatabase.georaster、mapgis.geodatabase.georaster、mapgis.geoobjects.spatialref、mapgis.rasedit、mapgis.geoobjects.geometry、mapgis.geomap程序集,调用rasgcprevise类的revise方法实现图像的校正,然后由wcf服务编译成dll文件,通过mapgis平台的servermanager将dll文件发布成httprest服务,服务输入参数为在页面中的原始地图上获取的四对地理坐标点和已裁剪影像的本地路径path2,输出结果为一个指向校正后的影像的本地路径path3;

s5、打开mapgis,新建空地图文档map.mapx,并将map.mapx在mapgis平台的servermanager中发布成地图服务,在本地新建mosaic文件夹,用于存放地图文档map.mapx中的底图影像,记mosaic文件夹的路径为path;

s6、新建wcf服务,引入mapgis.geodatabase.georaster、mapgis.rasanalysis、mapgis.geoobjects.geometry、mapgis.geomap程序集,调用rasmosaic类中的mosaic方法实现图像的镶嵌,然后由wcf服务编译成dll文件,通过mapgis平台的servermanager将dll文件发布成httprest服务;影像镶嵌需要两张影像图片,一张影像为步骤s5中mosaic文件夹里所存放的底图影像图片,另一张则通过前端传来的本地路径确定,即输入参数为一个指向校正结果的本地路径path3,返回结果为镶嵌成功标志success;

s7、在页面创建input元素,在input中单击浏览按钮调用filereader类中的readasdataurl方法读取所需要的影像图片并将其转成base64字符srcdata,在页面创建div元素,在div中创建img元素,使img元素src值等于由图片转成的base64字符srcdata,将图片显示在页面div里;根据影像图片构建json对象jsondata1,包括已经转成base64字符的影像图片srcdata和所要识别的影像图片中的地物类型type,通过调用jquery中的ajax方法将jsondata1发送给步骤s2已发布的图像识别服务;

s8、当服务端接收到步骤s7发来的图像识别请求时,首先解析json对象,得到一个由影像图片转成的字符串srcdata和一种地物类型type;调用base64脚本的b64decode方法将字符串srcdata转成图片,通过调用maskrcnn模型的train方法训练得到的各种模型,识别影像图片中的地物类型,根据识别结果,采用位运算的方法利用掩膜输出只含有type类型的影像图片,然后调用base64脚本的b64encode方法将图像识别的结果转成字符srcdata1,并将识别的影像图片保存在本地的result文件夹里,再将本地路径path1和由识别后的图片转成的base64字符srcdata1传给前端;

s9、在步骤s7的回调函数中会接收到步骤s7返回的由识别后的影像图片转成的base64字符srcdata1和存放识别后的影像的本地路径path1后,在页面创建div元素,在div元素里创建img元素,使img元素src值等于步骤s8返回的base64字符srcdata1,将识别后的影像图片显示在页面div里;调用canvas中的draw方法绘制裁剪区域,通过监听鼠标单击事件获取绘制区域边界顶点的像素坐标,构建json对象jsondata2,即裁剪区域边界顶点和存放已识别的影像的本地路径path1,调用jquery中的ajax方法将jsondata2发送给步骤s3已发布的图像裁剪服务;

s10、当服务端接收到步骤s9发来的图像裁剪请求时,首先解析json对象,即得到坐标点和路径path1,然后以坐标点为顶点生成多边形,填充生成掩膜图片;根据本地路径path1获取到步骤s8保存在本地文件夹result里的影像图片,利用位运算的方法根据掩膜图片裁剪影像图片中的目标区域;调用base64脚本的b64encode方法将裁剪后的图片转成字符srcdata2,并将裁剪后的影像保存在本地文件夹cut中,将本地路径path2和裁剪后的影像图片转成的base64字符srcdata2返回给前端;

s11、在步骤s9的回调函数里接收到步骤s10返回的由裁剪后的影像转成的base64字符srcdata2和保存已裁剪影像图片的本地路径path2后,在div元素里创建img元素,使img元素的src值等于步骤s10返回的base64字符srcdata2,将影像图片显示在页面div里,通过ol.map类的addlayer方法加载原始地图到页面,然后通过监听鼠标单击事件,依次在已加载的原始地图上和影像图片上,单击获取一个地理坐标点和一个像素坐标点,重复四次,即获取四对坐标点,即每一个像素坐标对应一个地理坐标,当像素坐标点和地理坐标点获取完毕后,构建json对象jsondata3,即四对坐标点和保存已裁剪影像的本地路径path2;调用jquery中的ajax方法将jsondata3发送给步骤s4在mapgis平台的servermanager上发布的图像校正的rest服务;

s12、当服务端接收到步骤s11所发送的图像校正的请求时,解析json对象,得到四对坐标点和路径path2,通过本地路径path2获取到步骤s10保存在本地文件cut中的影像图片,然后利用四对坐标点通过rasgcprevise类的revise方法将影像图片校正,待校正完成后,将校正后的影像图片保存在本地文件夹revise中,并将本地路径path3返回给前端;

s13、通过ol.map类的addlayer方法将步骤s5发布的地图文档map.mapx加载到页面上,在步骤s11回调函数里接收到步骤s12返回的已校正影像图片的本地路径path3后,构建json对象jsondata4,即已校正影像的本地路径path3,调用jquery中的ajax方法将jsondata4发送给步骤s6在mapgis平台的servermanager上发布的图像镶嵌的rest服务;

s14、当服务端接收到步骤s13发送的图像镶嵌的请求时,解析json对象,得到存放校正影像图片的本地路径path3,先判断用于存放底图影像的mosaic文件夹是否为空,如果为空,则通过本地路径path3,将步骤s12校正的影像图片复制到mosaic文件夹,作为底图影像图片,并将底图影像图片添加到地图文档map.mapx里,并给前端返回sucess;如果不为空,则通过path3获取到步骤s12校正的影像图片,通过rasmosaic类中的mosaic方法将已校正的影像图片镶嵌在mosaic文件夹里的底图影像上,并给前端返回success;

s15、在步骤s13回调函数里接收到步骤s14返回的success时,表明影像已镶嵌成功,通过ol.map的removelayer方法将步骤s5发布的地图从页面删除,再通过ol.map的addlayer方法将新构建的高精度地图加载到页面上。

进一步的,在本发明的基于webgis和深度学习的高精度影像地图在线构建方法中,步骤s1中所采集的影像图片的用户端设备。

进一步的,在本发明的基于webgis和深度学习的高精度影像地图在线构建方法中,步骤s1具体包括:

根据所采集的影像图片中的地物类型,配置maskrcnn模型参数:

标签名class_names=['x1','x2','x3',…,'xn'],

图片尺寸image_min_dim=m#n、image_max_dim=m#n,

其中,x1、x2、x3、…、xn是影像图片中的待识别目标,待识别目标通过标注软件labelme在影像图片中标注得到,m和n为正整数,表示像素大小。

进一步的,在本发明的基于webgis和深度学习的高精度影像地图在线构建方法中,所述原始地图是指谷歌地图或者百度地图。

进一步的,在本发明的基于webgis和深度学习的高精度影像地图在线构建方法中,所述待识别目标包括:道路、草地、池塘、篮球场以及停车场。

本发明还提供了一种基于webgis和深度学习的高精度影像地图在线构建设备,包括:处理器及存储设备;所述处理器加载并执行所述存储设备中的指令及数据用于实现上述任一项所述的高精度影像地图在线构建方法。

一种基于webgis和深度学习的高精度影像地图在线构建方法及设备,包括:采集构建地图区域的影像图片,这些影像图片的来源可以是手机、无人机等图片采集设备;根据所采集的影像图片上的地物类型,通过labelme去制作训练集和验证集,通过maskrcnn训练目标检测模型,在web端通过调用该模型识别地物类型;图像识别完成后,在web端在识别后的影像图片上绘制裁剪区域进行图像裁剪,把图片裁成规则区域或者是构建地图所需要的区域;影像裁剪完成后,在页面中的地图上获取地理坐标点,在已裁剪的影像图片上获取像素坐标点,依次获取四对坐标点,然后进行影像图片的在线校正;影像校正完成后,将校正后的影像图片镶嵌在已构建的高精度地图上,进行影像图片的在线镶嵌;待影像镶嵌完成后,刷新地图,即可将已构建的高精度地图显示在页面。

本发明最明显的不同在于所有的构建高精度地图的过程都是在web端在线完成的。首先是通过调用影像识别服务实现影像图片地物类型的在线识别;根据影像识别的结果,调用影像裁剪服务实现影像图片的在线裁剪;根据影像图片的裁剪结果,调用影像校正服务实现影像图片的在线校正;根据影像图片校正的结果,调用影像镶嵌服务实现影像图片的在线镶嵌,从而实现高精度影响地图的在线构建。

通过本发明的终端用户上传自己拍摄的照片,逐步进行影像图片的在线识别、影像图片的在线裁剪、影像图片的在线几何校正和镶嵌,从而完成高精度影像地图的在线构建,经过长期的维护和更新,就可以较低成本构建厘米级空间分辨率、数据开放共享、用户协同编辑、可实时在线更新的小范围甚至全球影像地图。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明的基于webgis和深度学习的高精度影像地图在线构建方法一实施例的流程图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。

参考图1,其为本发明的基于webgis和深度学习的高精度影像地图在线构建方法一实施例的流程图。本实施中,该在线构建方法包括:

步骤(1)、采集构建地图区域的影像图片,根据所采集的影像图片中的地物类型,配置maskrcnn模型参数:标签名class_names=['road','meadow','lake','basketball_court','parkingspace']、图片尺寸image_min_dim=512#128、image_max_dim=512#128,通过标注软件labelme标注图片中的待识别目标,如道路、草地、池塘、篮球场、停车位。所采集的影像图片的用户端设备,可以是手机、无人机等图片采集设备。

步骤(2)、根据所采集的影像图片上的地物类型,通过labelme去制作训练集,根据所述训练集,通过调用maskrcnn模型中train方法分别生成道路训练模型、草地训练模型、篮球场训练模型、池塘训练模型、停车位训练模型。当模型建立完成之后,通过flask框架将模型发布成httprest服务,服务输入参数为由影像图片转成的base64字符srcdata和地物类型type,输出结果为由识别后的影像图片转成的base64字符srcdata1和保存已识别影像的本地路径path1。

步骤(3)、新建python工程文件,采用位运算的方法,利用掩膜对影像图片裁剪。通过flask框架将工程文件发布成httprest服务,服务输入参数为裁剪区域边界的顶点和pixels已识别影像的本地路径path1,输出结果为裁剪后的影像图片转成的base64字符srcdata2和保存已裁剪影像图片的本地路径path2。

步骤(4)、新建wcf服务,引入mapgis.geodatabase.georaster、mapgis.geodatabase.georaster、mapgis.geoobjects.spatialref、mapgis.rasedit、mapgis.geoobjects.geometry、mapgis.geomap程序集,调用rasgcprevise类的revise方法实现图像的校正。然后由wcf服务编译成dll文件,通过mapgis平台的servermanager将dll文件发布成httprest服务,服务输入参数为在页面中的原始地图上获取的四对坐标点coordinates和已裁剪影像的本地路径path2,输出结果为一个指向校正后的影像的本地路径path3。

步骤(5)、打开mapgis,新建空地图文档map.mapx,并将map.mapx在mapgis平台的servermanager中发布成地图服务。在本地新建mosaic文件夹,用于存放地图文档map.mapx中的底图影像,记mosaic文件夹的本地路径为path。

步骤(6)、新建wcf服务,引入mapgis.geodatabase.georaster、mapgis.rasanalysis、mapgis.geoobjects.geometry、mapgis.geomap程序集,调用rasmosaic类中的mosaic方法实现图像的镶嵌。然后由wcf服务编译成dll文件,通过mapgis平台的servermanager将dll文件发布成httprest服务。影像镶嵌需要两张影像图片,一张影像为步骤(5)mosaic文件夹里所存放的底图影像图片;另一张则通过前端传来的本地路径确定,即输入参数为一个指向校正结果的本地路径path3,返回结果为镶嵌成功标志success。

步骤(7)、在页面创建input元素,在input中单击浏览按钮调用filereader类中的readasdataurl方法读取所需要的影像图片并将其转成base64字符srcdata。在页面创建div元素,在div中创建img元素,并设置img元素的id。通过documnet类的getelementbyid()函数获取到img元素,并设置img元素的src值,使其等于由图片转成的base64字符srcdata,调用window的onload方法将图片显示在页面div里。根据影像图片构建json对象jsondata1,包括已经转成base64字符的影像图片srcdata和所要识别的影像图片中的地物类型type,如{srcdata:‘data:image/jpeg;base64,/9j/4dvxrxhpzgaatu0akgaaaagadweaaamaaaab……’,type:‘草地’}。点击确定按钮,调用jquery中的ajax方法请求步骤(2)已发布的图像识别服务,其中ajax参数设置为:服务地址url1(如‘http://192.168.13.42:5000/getimage’)、请求数据jsondata1、请求方式post、数据类型json、回调函数function1。

步骤(8)、当服务端接收到步骤(7)发来的图像识别请求时,首先会解析json对象,即得到一个由影像图片转成的字符串srcdata和一种地物类型type。调用base64脚本的b64decode方法将字符串srcdata转成图片。通过调用maskrcnn模型的train方法训练的各种模型,识别影像图片中的地物类型。当type的值为道路时,调用已训练好的道路模型去识别影像图片中的道路;当type的值为草地时,调用已训练好的草地模型去识别影像图片中的草地;当type的值为篮球场时,调用已训练好的篮球场模型去识别影像图片中的篮球场;当type的值为池塘时,调用已训练好的池塘模型去识别影像图片中的池塘;当type的值为停车位时,调用已训练好的停车位模型去识别影像图片中的停车位;根据识别结果,采用位运算的方法利用掩膜输出只含有type类型的影像图片。然后调用base64脚本的b64encode方法将图像识别的结果转成字符srcdata1(如‘image/jpeg;base64,/9j/4adbrxhpzgaatu0akgaaaagaeaeaaamaaaabd4aaa……’),并将识别的影像图片保存在本地的result文件夹里,记影像的本地路径为path1(如‘c:\realworldproj\images\result\dksl3s.jpg’)。再将本地路径path1和由识别后的图片转成的base64字符srcdata1传给前端,如{srcdata1:‘image/jpeg;base64,/9j/4adbrxhpzgaatu0akgaaaagaeaeaaamaaaabd4aaa……’,path1:‘c:\realworldproj\images\result\dksl3s.jpg’}。

步骤(9)、在前端回调方法function1中会接收到步骤(8)返回的由识别后的影像图片转成的base64字符srcdata1和存放识别后的影像的本地路径path1后,在页面创建div元素,在div元素里创建img元素,并设置其id。通过documnet类的getelementbyid()函数获取到img元素,并设置img元素的src值,使其等于由图片转成的base64字符srcdata1,调用window的onload方法将图片显示在页面div里。点击绘制区域按钮,调用canvas中的draw方法绘制裁剪区域,通过监听鼠标单击事件(onclick)获取绘制区域边界顶点的像素坐标。构建json对象jsondata2,即裁剪区域边界的顶点pixels和存放已识别的影像的本地路径path1,如{pixels:‘x1y1,x2y2,x3y3……’,path1:‘c:\realworldproj\images\result\dksl3s.jpg’}。点击确定按钮,调用jquery中的ajax方法去请求步骤(3)已发布的图像裁剪服务,其中ajax参数设置为:服务地址url2(如‘http://192.168.43.158:5000/cutimage’)、请求数据jsondata2、请求方式post、数据类型json、回调函数function2。

步骤(10)、当服务端接收到步骤(9)发来的图像裁剪请求时,首先解析json对象,即得到坐标对vertexs和路径path1。然后以坐标点为顶点生成多边形,填充生成掩膜图片。根据本地路径path1获取到步骤(8)保存在本地文件夹result里的影像图片,利用位运算的方法根据掩膜图片裁剪影像图片中的目标区域。调用base64脚本的b64encode方法将裁剪后的图片转成字符srcdata2(如‘image/jpeg;base64,/9j/4bx+rxhpzgaatu0akgaaaagadweaaamaaaabd4aaaae……’),并将裁剪后的影像保存在本地文件夹cut中,记影像的本地路径为path2(如‘c:\realworldproj\images\cut\cutt.jpg’),将本地路径path2和由裁剪后的影像图片转成的base64字符srcdata2返回给前端,如{srcdata2:‘image/jpeg;base64,/9j/4bx+rxhpzgaatu0akgaaaagadweaaamaaaabd4aaaae……’,path2:‘c:\realworldproj\images\cut\cutt.jpg’}。

步骤(11)、在前端回调函数function2里接收到步骤(10)返回的由裁剪后的影像转成的base64字符srcdata2和保存已裁剪影像图片的本地路径path2后,创建div元素,在div元素里创建img元素,并设置其id。通过documnet类的getelementbyid()函数获取到img元素,并设置img元素的src值,使其等于由图片转成的base64字符srcdata1,调用window的onload方法将图片显示在页面div里。通过ol.map类的addlayer方法加载goole影像地图到页面然后,然后通过监听鼠标单击事件(onclick),依次在地图和影像图片上单击获取一个地理坐标点和一个像素坐标点,重复四次,即获取四对坐标点,即每一个像素坐标对应一个地理坐标。当像素坐标点和地理坐标点获取完毕后,构建json对象jsondata3,即四对坐标点coordinates和保存已裁剪影像的本地路径path2,如{coordinates:‘x1y1x2y2,x3y3x4y4,x5y5x6y6,x7y7x8y8’,path2:‘c:\realworldproj\images\cut\cuttll.jpg’}。点击确定按钮,调用jquery中的ajax方法请求步骤(4)在mapgis平台的servermanager上发布的图像校正的rest服务,其中ajax参数设置为:服务地址url3(如‘http://localhost:6163/igs/rest/img/getrevise’)、请求数据jsondata3、请求方式post、数据类型json、回调函数function3。

步骤(12)、当服务端接收到步骤(11)所发送的图像校正的请求时,解析json对象,得到四对坐标点coordinates和路径path2。通过本地路径path2获取到步骤(10)保存在本地文件cut中的影像图片,然后利用四对坐标点通过rasgcprevise类的revise方法将影像图片校正。待校正完成后,将校正后的影像图片保存在本地文件夹revise中,并将本地路径path3,如{path3:‘c:\realworldproj\images\revise\revises.jpg’},返回给前端。

步骤(13)、当前端回调函数function3接收到步骤(12)返回的已校正影像图片的本地路径path3后,构建json对象jsondata4,即已校正影像的本地路径path3,如{path3:‘c:\realworldproj\images\revise\revises.jpg’},通过ol.map类的addlayer方法将步骤(5)发布的地图文档map.mapx加载到页面上。点击确定按钮,调用jquery中的ajax方法请求步骤(6)在mapgis平台的servermanager上发布的图像镶嵌的rest服务,其中ajax参数设置为:服务地址url4(如‘http://localhost:6163/igs/rest/img/getmosaic’)、请求数据jsondata4、请求方式post、数据类型json、回调函数function4。

步骤(14)、当服务端接收到步骤(13)发送的图像镶嵌的请求时,解析json对象,得到存放校正影像图片的本地路径path3。先判断用于存放底图影像的mosaic文件夹是否为空,如果为空,则通过本地路径path3,将步骤(12)校正的影像图片复制到mosaic文件夹,作为底图影像图片,并通过document类的getmaps方法将底图影像添加到地图文档map.mapx,并给前端返回sucess;如果不为空,则通过path3获取到步骤(12)校正的影像图片,通过rasmosaic类中的mosaic方法将已校正的影像图片镶嵌在mosaic文件夹里的底图影像上,并给前端返回success。

步骤(15)、在前端回调函数function4里接收到步骤(14)返回的success时,表明影像已镶嵌成功。通过ol.map的removelayer方法将步骤5发布的地图从页面删除,再通过ol.map的addlayer方法即可将新构建的高精度地图加载到页面上。

本发明已经过严格的测试和验证,通过本方法构建的高精度地图,分辨率可达到厘米级甚至毫米级,所述功能都全部实现,具有分辨率高、数据开放性、成本低的特点。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1