背景技术
目前发射的传感器采集的图像都是以像素为单位,每个像素存储了地面的辐射信息,并没有存储像素对应的地物的几何信息。为了计算像素的几何信息,需要构建成像方程,如航空遥感拍摄图片对应的共线方程。航天遥感的几何计算方法更加复杂,需要事先获得卫星的光学参数以及卫星运行时的轨道参数,比如广泛使用的MODIS卫星、环境卫星、航空遥感数据。
以MODIS数据为例,MODIS是EOS-AM1系列卫星的主要探测仪器,也是EOS Terra平台上唯一进行直接广播的对地观测仪器。为了方便数据的处理和发布,MODIS传感器特别设计了MOD03文件来存储每个像素对应的经纬度信息,并且与MOD02文件中的像素一一对应。但直接使用MODIS数据的缺点在于,每景图像覆盖的区域较大,而且覆盖的区域并不规则。如果想针对某个具体地理区域的数据进行处理,常常需要将一整幅图像全部加载。将图像数据映射到三维球体上时,原始的MODIS数据存储方式的缺点更加明显。缺点一在于直接将整幅MODIS图像贴到三维球体上面的数据量较大,不利于进行分级显示,也不利于进行远程传输。缺点二在于整幅图像映射到球体上时,一般仅使用图像的四个角点作为基准点,因此图像的变形较大。
为了解决上述的三维球体显示问题,目前流行的处理方式(如Worldwind,GoogleEarth)是将地球表面分割为若干块,对每个块建立金字塔影像,在显示时根据视点的高度来显示不同分辨率的图像块。以NASA的World Wind为例,World Wind首先利用Plate Carree投影将球面展开为平面地图,如图1所示,然后在平面地图上对全球进行切块。切块的思想是分成若干级来均分平面地图,第一级以36度为间隔,第二级间隔为第一级的一半,即18度,后续的级别依次减半。球体投影到平面上后,经度作横坐标,其范围从-180度到+180度,纬度作为纵坐标,从南极-90度到北极+90度。如果以地图的左下角作为坐标原点,那么横坐标的范围为[0,360],纵坐标的范围为[0,180]。
第一级分块以36度为间隔,在横向可以分为10块,纵向可以分为5块,因此全球地图可以分为50个小块。第二级分块以18度为间隔,全球可以分为200个小块。实际存储时,每个小块对应了一幅512×512大小的图像。每个小块可以用其在纵横的坐标系上的块号来标识,并和经纬度联系起来。如图2所示。
World Wind分级进行切分的方式可以解决不同分辨率图像的在三维球体上的显示问题,由于每个级别的图像块可以根据其分块号与经纬度联系起来,因此可以根据地理位置来快速加载不同分辨率的图像块。但是World Wind组织数据的方式比较简单,第一级中的每块的大小为36°×36°,第二级为18°×18°,依次类推,第n级中每块大小为。这样会导致某些级别的块的大小为复杂的浮点数,比如第8级的块大小为:0.28125。复杂的浮点数据在计算机处理,尤其是单片机系统中会带来很多问题。单片机系统中一般需要对浮点运算进行定点化的处理,浮点数小数点后的位数越多,进行定点化处理时扩大的倍数就越大,并且损失的精度就越大。此外,复杂的浮点运算在进行球面纹理映射时也会出现问题,纹理映射的本质是栅格图像数据的重采样,栅格图像数据以整数行列号来进行存放。当球面经纬度坐标以浮点数据来表示时,浮点坐标必须变换到栅格坐标,这个过程中必然存在精度的损失。当浮点数据很复杂时,转换过程中就可能出现精度损失,造成纹理映射不精确。并且world wind的切块模式对应的数字图像与常用比例尺不能很好的吻合在一起,而且world wind的15级模式不能全部覆盖常用的比例尺,需要进行比例尺转换才能用于制图生产。
发明内容
针对现有技术存在的问题,本发明提供一种基于经纬网格的数据分级组织方法。
本发明的基于经纬网格的数据分级组织方法,具体为:1)根据经纬网格来进行数据组织;2)无需投影,直接将地球球面按5层15级进行分块,每块对应一幅1000×1000的图像,其中每层有三个级别,层内的级别按照5∶2.5∶1的大小比例依次排列,层与相邻层之间相差10倍,第一层分块大小依次为50°×50°,25°×25°,10°×10°,第二层5°×5°,2.5°×2.5°,1°×1°,其他层以此类推;3)根据源图像的分辨率和步骤2)中分辨率与分块大小的对应关系,得到源图像的分块大小和个数,再根据经纬度信息将卫星传感器数据映射到图像相应块上,生成经纬网格图像。
进一步,卫星传感器数据包括MODIS数据、环境星数据、中巴资源卫星2B数据和SPOT5数据。
进一步,源图像为卫星传感器得到的图像数据,目标图像为将源图像映射到经纬网格坐标系下的图像。
进一步,卫星传感器数据映射到图像块上能够采用直接法或逆向法。
进一步,所述直接法是直接将源图像像素拷贝到目标图像相应块上,将源图像映射到目标图像相应块上。
进一步,所述逆向法是建立目标图像和源图像之间的函数关系,将目标图像中的每个点映射到源图像中,然后利用插值的方法计算目标图像每个点的值。
进一步,所述直接法具体为:1)根据源图像的经纬度信息将图像中的所有像素投影到经纬网格坐标系下;2)沿投影后图像中出现的空隙点的纵向和横向来搜索直接映射后的点,然后根据搜索得到的两个水平点和垂直点来对空隙点进行赋值,得到卫星数据网格图像。
进一步,所述逆向法具体为:1)根据源图像的经纬度信息将卫星传感器数据,从上到下,从左到右,每次将四个相邻像素映射到经纬网格坐标系中,形成一个不规则的多边形,四个相邻像素为多边形的四个顶点;2)将映射得到的多边形数据利用填充进行离散化处理;3)计算多边形中填充的每个离散点到多边形四个顶点的距离,然后根据距离的大小来建立离散点和多边形顶点之间的权重关系;4)通过多边形四个顶点的值以及步骤3)得到的权重来拟合出离散点的值;5)重复上述步骤计算出源图像中所有像素点在经纬网格坐标系下的值,得到卫星数据网格图像。
本发明的基于经纬网格的数据分级组织方法,直接对地球球面采用5层15级的分块方式。与现有的World Wind分级切分方式相比,本发明不需要投影,由于每个级别的块的大小都是简单的有限浮点数,可以按照简单化经纬度坐标进行位置确定,方便了数据的组织和管理,可以保证多块图像在球面上显示时可以无缝拼接。并且本发明的分级切块方式与地图比例尺可以非常好的对应起来,满足不同比例尺的地图输出要求,可以直接给制图员应用,无需另行转换比例尺。在生成网格图像步骤中,本发明还提出了一种基于多边形填充的方法,不用建立直接的映射关系就可以快速生成没有空隙的卫星数据网格图像,算法简单,而且速度快,图像中每个像素点的赋值准确,精度高。
具体实施方式
本发明的基于经纬网格的数据分级组织方法,采用一种5层15级进行分块,每块对应一幅1000×1000的图像,其中每层有三个级别,层内的级别按照5∶2.5∶1的大小比例依次排列,层与相邻层之间相差10倍,第一层分块大小依次为50°×50°,25°×25°,10°×10°,第二层5°×5°,2.5°×2.5°,1°×1°,其他层以此类推,分块如图3a、3b和3c所示。与World Wind相比,本发明不需要如图1所示进行投影。而且区别于World Wind将每块对应一幅512×512图像的方法,本发明中的每块对应一幅1000×1000的图像。这种切分方式的优点在于每个级别的块的大小都是简单的有限浮点数,可以按照简单化经纬度坐标进行位置确定,方便了数据的组织和管理,并且可以保证多块图像在球面上显示时可以无缝拼接。按照这种方式形成的所有级别的分块大小以及对应的图像像素大小,比例尺信息如表1。
表1 本发明的分级模式
表格中的球面尺度是以块在地球赤道上的球面长度来进行计算,赤道的周长为40076公里,那么赤道上每度代表的球面长度为:40076/360=111.322公里。表格中的像素大小指每块用1000×1000的图像来表示时,每个像素的大小。
表格最后一列表示分块后的经纬网格图像与地图比例尺的对应关系。表格2中列出了常用的地图比例尺及其对应的最低遥感图像空间分辨率。
表2
从上述分析可以看出,本发明设计的分级切块的模式与地图比例尺可以非常好的对应起来,满足不同比例尺的地图输出要求。
表3 worldwind切块模式与本发明切块模式对比表
从上表可以看出,worldwind的切块模式对应的数字图像与常用比例尺不能很好的吻合在一起,而且worldwind的15级模式不能全部覆盖常用的比例尺(如上表所示,缺少1∶2000和1∶1000)。
在本发明的经纬网格切块模式基础上,根据源图像的分辨率和分辨率与分块大小的对应关系,得到源图像的分块大小和个数,再根据经纬度信息将卫星传感器数据映射到图像相应块上,生成经纬网格图像。以MODIS数据为例,本方法可以利用MODIS提供的MOD02和MOD03文件来快速的生成经纬网格图像文件。
MOD02文件中存储了MODIS 1B数据,MODIS 1B数据经过了仪器定标,但是没有经过大气校正。MOD03文件存储了MOD02中每个像素对应的经纬度信息。一幅MODIS图像覆盖的范围很广,以1km分辨率为例,如图4所示,图像像素分辨率为:1354×2030,在地球上覆盖的范围纬度是20多度,经度是40多度。
根据本发明的分块模式,1km分辨率(低分辨率)的数据对应的块的大小为10度(见表1)。因此1km分辨率的MODIS图像包含了15个10度×10度的块。
环境星图像大小为16167×13815,对应的地面分辨率为30m(中等分辨率)整幅图像覆盖的范围为:485km×414km。该图像覆盖的经度范围为:[111.38516 116.10875],纬度范围为:[19.22857622.972993]。根据本发明的分级模式,该分辨率对应的分块大小为0.25°。根据环境星一级数据提供的XML文件中四个角点的坐标,因此该幅图像可以切分为:22×16块,水平可以分为22块,垂直可以分为16块。
中巴资源卫星2B对应的地面分辨率为20m(中等分辨率)也提供了XML文件,其处理与环境星数据完全相似,分块大小也为0.25°。SPOT5对应的地面分辨率为2.5m(高分辨率),数据的格式为IMG,该格式中携带了与环境星XML文件类似的四个角点经纬度信息以及坐标投影信息,从IMG中将这些信息读出,后续处理方式与环境星类似,分块大小为0.025°。需要说明的是能够通过本发明的分块模式进行分块的卫星数据源并不局限于以上所述的卫星数据,其它卫星数据同样可以应用该方法进行分块。
MOD03中提供了MOD02文件中每个像素对应的经度和纬度信息,那么最简单的映射方法是直接根据经纬度值将MOD02中的像素拷贝到经纬网格块中,得到如图5所示的效果图,这种方法可以看作是直接法,实现简单,但是由于是直接映射,所以会出现图像中很多像素无法被填充(即空隙)的情况。解决直接法缺点的方法是采用逆向映射的方法,即建立目标图像和源图像之间的函数关系,将目标图像中的每个点映射到源图像中,然后利用插值的方法来计算目标图像每个点的值。逆向法可以得到均匀分布的图像,其关键是要建立目标图像和源图像之间的函数关系。但是MOD03仅提供了源图像中每个点的经纬度值,根据这些离散的经纬度值并不能建立整幅图像之间的映射关系。
在无法建立整体映射的情况下,为了对空隙进行填充,现有的方法首先将Modis Level 1B图像中的数据映射到经纬网格坐标系。投影后的图像中会出现空白部分(即空隙点)。
如图5中左边图像为直接映射后的效果图,右边图像中的白像素点即空隙点。
为了给空隙点赋值,常用的方法是在投影后的图像中,沿空隙点的纵向和横向来搜索直接映射后的点,然后根据搜索得到的两个水平点和垂直点来对空隙点进行赋值。
如图6中沿黑色圆圈点纵向与横向搜索,将最先找到的非0点作为待插值点的邻域点,如上图中的方框点。这种方法的优点是方法简单,速度快,但缺点是沿纵向和横向搜索得到的点可能并不是离空隙点最近的点,因此插值后往往会出现明显的条纹。
针对Modis Level 1B数据无法建立整体映射,并且现有方法在插值时寻找的邻域点不准确的情况,本发明提出一种基于多边形填充的方法,不用建立直接的映射关系就可以得到没有空隙的目标图像。
如图7所示,该方法的第一步:将MOD02中的Modis Level 1B数据根据MOD03的经纬度值,从上到下,从左到右,每次将四个相邻像素(I1,I2,I3,I4)映射到经纬网格坐标系中,形成一个不规则的多边形。I1,I2,I3,I4分别对应了多边形的四个顶点为p1,p2,p3,p4。因此p1,p2,p3,p4位置的Modis Level 1B数据是已知的。
I1,I2,I3,I4在Modis Level 1B图像中是相邻的四个像素点,但这四个点的经纬度值是不同的,其位置在经纬度坐标系下也是不相邻的,所以在经纬网格坐标系中形成了一个多边形。为了得到连续的经纬网格数据,就需要对多边形内部点进行插值。
第二步:将映射得到的多边形数据利用填充进行离散化处理。多边形的离散化处理可以利用图形学中的扫描算法来完成。为了对多边形进行填充,首先要将多边形顶点进行离散化处理,其方法是用点的经纬度坐标除以根据地图切分模式中不同等级对应的块图像的像素大小(弧度)。比如我们希望生成10°×10°大小的经纬网格块,由于该块中包含的像素数量为1000×1000,即每个像素对应的大小为0.01°×0.01°,那么多边形顶点的离散化即用顶点的经纬度值除以0.01°。顶点离散化后,多边形内部的离散化可以用图形学中的行扫描算法来实现。多边形的内部离散化是图形学中的一个标准算法,常用的方法是基于行扫描算法。基本原理如图8所示,从左向右引出一条水平直线,该直线与待填充的多边形会依次相交于几个点,根据交点的顺序和位置信息可以判断出该水平直线上的哪些点位于多边形内部。从上到下对每条水平线进行相同的处理,就可以得出多边形内部的所有离散点。
图9为离散化后的多边形内部点分布图,黑色点位多边形的四个顶点,多边形的内部包含了若干离散的圆圈,每个圆圈代表了一个离散点。
第三步:计算每个离散点到四个多边形顶点的距离。然后根据距离的大小来建立离散点和多边形顶点之间的权重关系。距离越大,权重越小。
图10为权重计算示意图,点p为经纬网格坐标系下多边形离散化后的一个点,p1,p2,p3,p4为多边形的四个顶点,控制点是在第一步中由Modis Level1B数据和Mod03数据转换而来,因此控制点对应的ModisLevel1B数据是已知的。
点p相对于p1,p2,p3,p4四个点的权重为:
上述四个权重能保证距离p点最近的点权重最大,并且权重值进行了归一化,即w1+w2+w3+w4=1。
第四步:由于多边形的四个顶点在源图像(即Modis Level 1B图像)中的值已知,那么就可以根据第三步计算得到的权重来拟合出离散点在源图像中的数值。
设p1,p2,p3,p4对应的Modis Level 1B的数据值为m1,m2,m3,m4。那么p点内插后的值为:
wp=w1*m1+w2*m2+w3*m3+w4*m4
重复上述步骤,可以将源图像中所有像素点映射到经纬网格坐标系的目标图像下,得到如图11所示的卫星数据的网格图像。
本发明的逆向映射方法在于绕开了常规图像映射时需要建立整体映射的方式,而是利用离散化的方式在目标图像中建立离散点和控制点(即多边形顶点)之间的权重关系。算法简单,而且速度快,插值后的结果相对原有的简单横向与纵向搜索的算法也有明显的提高。