当前位置: 首页 > 新闻资讯 > 常见问题解答

栅格数据有效/无效掩膜的计算与表达

发布日期:2023-07-11 18:16 浏览量:3559

因为多种原因,栅格数据中经常存在一些无效像素。在航天测绘遥感中,遥感器获取的单景影像在经过投影坐标变换后往往会存在黑边(见图 1(a)),黑边内的像素为无效像素。在航空测绘遥感中,位于测区外的像素也可能被拍摄/扫描到,但是在成果交付时往往只需要输出测区内的像素,测区外的像素即为无效像素(见图 2(a))。栅格数据常采用二值的掩膜来表达像素有效或无效。

基于像素值的掩膜计算

单个波段的掩膜的计算非常简单。设对于某个波段,值为0代表无效值,值非0代表有效值,则利用Envi的band math功能计算掩膜的方法为:

byte((b1 ne 0)*255)

设值范围在[M,N]内的为有效值,其它值为无效值,则计算掩膜的方法为:

byte((b1 ge M and b1 le N)*255)

基于各个波段的掩膜,可以计算出整个数据集的掩膜。对于3波段真彩色影像,计算方法为:

byte((b1 eq 255) and (b2 eq 255) and (b3 eq 255))*byte(255)

在生成的掩膜中,255代表有效像素,0代表无效像素。相关示例可见图 1。

图 1 基于像素值的掩膜计算示例

基于矢量边界的掩膜计算

无论是基于测区边界,图幅边界还是ROI生成掩膜,均可以归结为基于矢量边界的掩膜计算。如果矢量边界对应的面状几何元素存在多个不重叠的部分,例如测区由多个不联通、不重叠的子测区构成[1],则矢量边界可以表达为OGC简单特征规范定义的多多边形(MultiPolygon),否则可以表达为多边形(Polygon),多边形允许带有空洞[2]。

基于矢量边界计算掩膜,可以采用矢量到栅格转换的方法(需要确保两种栅格数据的分辨率一致),也可以采用几何分析的方法。下面介绍几何分析的方法。

文献[3]提出一种基于四叉树的方法,其核心思想是对栅格数据进行四叉树分割,判断分割出的每个部分对应的矩形和矢量边界对应的面状几何元素之间是否存在重叠。如果存在重叠,则对矩形再次进行四叉树分割,直至分割出的每个部分所含像素数目低于指定阈值。由于该算法是递归执行的,在栅格数据行列数较多时,对栈空间的需求较大,容易发生栈溢出。为提高计算稳定性,可以逐块(Block)计算。对于支持按块存储的格式,例如Tiff,按块存储栅格数据可以有效降低计算对栈空间的需求。设每块大小为256*256,则四叉树最大深度为8层。对于Asc格式,虽然其不支持按块存储,但该方法仍然可用,只不过一行为一个块,四叉树分割变为二叉树分割。

判断单个像素是否在矢量边界内,可采用如下两种判断方法:

(1)基于像素中心的方法。如果像素中心在矢量边界对应的面状几何元素内,则认为像素为有效像素,否则为无效像素;

(2)基于像素边界的方法。计算像素边界对应的矩形和矢量边界对应的面状几何元素之间的重叠面积。如果重叠面积占像素面积的比例大于指定阈值p,则认为像素为有效像素,否则为无效像素。其中,如果p取0,则意味着如果像素有任何一部分在矢量边界内,像素即为有效像素;如果p取0.5,且在单个像素内的矢量边界为直线段,则此时该判断方法和基于像素中心的方法等价。

图 2是利用矢量边界裁剪DEM数据的效果图。

图 2 基于矢量边界的裁剪DEM的效果,红线为矢量边界

掩膜的表达形式

掩膜的主要表达形式包括:

(1)掩膜文件。GDAL采用后缀为msk,但实质为TIFF格式的栅格文件(简称掩膜文件)存储掩膜数据。掩膜文件的行列数、块大小、路径与对应的栅格数据相同,但文件名比栅格数据多“.msk”。掩膜文件存储的数据类型为1字节无符号整型(下文简称uint_8t),0代表像素无效,非0(一般是255)代表像素有效。掩膜文件的波段数要么为1,适用于整个栅格数据,要么和栅格数据的波段数相同,第K个波段适用于栅格数据的第K个波段。

(2)无数据值(nodata value)。在GeoTiff、Asc、ERDAS IMAGINE等格式中,支持无数据值属性。有的格式支持对单个波段设置无数据值(如GeoTiff),有的格式只支持对数据集整体设置无数据值(如Asc)。常见的GIS和遥感软件均支持该属性(见图 3),在读取波段数据时,如果某像素在某波段的值为指定的无数据值,则认为该像素在该波段无效。在使用该方式时,需要将无效像素的值设置为无数据值。在DEM/DSM中,通常选择一个明显不合理的高程值作为无数据值,例如-9999 m。在数据类型为uint_8t的3波段真彩色DOM中,通常选择0或255作为无数据值。但是该做法的风险在于,DOM中的有效像素的波段值也可能为0或255。例如,阴影、水体等低光部分在某些波段可能值为0(见图 4(a)),白车车顶、云等高光部分在某些波段可能值为255。所以,为确保有效像素不会出现无数据值,有可能需要修改像素值[3]。

图 3 常见GIS遥感软件对无数据值的支持

(3)alpha波段。在数据类型为uint_8t的影像中,alpha波段常被用来存储不透明度(0代表完全透明,255代表完全不透明)。当使用alpha波段存储掩膜时,GDAL规定无效像素表示为0值,有效像素表示为非0值(效果见图 4(b))。该方法在非遥感GIS领域内应用较多。但缺点在于,一来只能用于数据类型为uint_8t的真彩色影像或灰度影像;二来会变相增加1个波段,占用较多的存储空间。

(4)全部像素均有效。在无特殊标记/说明的情况下,全部像素均为有效像素。

在GDAL中,按(1)、(2)、(3)、(4)的优先顺序识别掩膜。

图 4 采用不同方式的掩膜的效果


参考文献

[1]程晓光,魏婧,严明,等. 应用地表覆盖数据估算LiDAR内业工作量的方法研究[J]. 地理信息世界, 2021, 28(2): 89-94.

[2]程晓光,陆泉源,郑诚慧,等. 使用开源软件的地图分幅软件设计与实现[J]. 测绘地理信息, 2021, 46(4): 122-127.

[3]佘佐明,程晓光,王艳军. 基于GDAL开源库的海量DOM分幅裁剪[J]. 城市勘测, 2023, No.195(1): 74-78.

猜你喜欢

相关设备
推荐服务
相关案例
新闻资讯

联系方式

电话:025-83216189

邮箱:frank.zhao@feiyantech.com

地址:江苏省南京市玄武区红山街道领智路56
号星河World产业园3号楼北8楼

微信公众号

总经理微信

025-83216189