4、多光谱图像基础处理:波段合成、波段提取、图像裁剪、重采样与投影转换
各位同学,欢迎来到多光谱数据融合的第四讲。今天咱们聊点实在的——图像到手之后,怎么把它收拾得服服帖帖。
说实话,我见过太多新手拿到原始数据就急着做融合,结果出来的图惨不忍睹。为什么?因为基础没打好。你想想看,地基歪了,楼能盖得高吗?
这一章,我就带大家把五个最常用的基础操作捋一遍。都是我在项目里天天用的东西,保证实用。
4.1 波段合成:把散装零件组装起来
多光谱数据通常是一个波段一个文件。比如Landsat 8,蓝、绿、红、近红外……各存各的。你要做分析,得先合成一个多波段文件。
为什么要合成? 因为后续的裁剪、融合、分类,都基于多波段数据。单波段操作效率太低。
我个人习惯用ENVI的Layer Stacking工具,或者GDAL的命令行。这里给一个GDAL的示例:
gdal_merge.py -separate -o output.tif B2.tif B3.tif B4.tif B5.tif
这条命令把B2(蓝)、B3(绿)、B4(红)、B5(近红外)合成一个四波段文件。注意顺序,别搞混了。
4.2 波段提取:从多波段里挑出你想要的
有时候你只需要某个特定波段。比如做水体提取,近红外波段是关键。这时候就要从多波段文件里把目标波段拎出来。
GDAL的做法很简单:
gdal_translate -b 4 input.tif band4.tif
这条命令提取第4波段。注意,波段编号从1开始,不是0。
嗯,这里要注意:提取出来的单波段文件,元数据会丢失一部分。如果你后续要做投影转换,建议保留原始多波段文件,别删。
4.3 图像裁剪:只关注你关心的区域
原始影像通常覆盖很大范围,但你的研究区可能就一小块。裁剪能大幅减少数据量,提升处理速度。
裁剪有两种方式:
- 按矢量边界裁剪:用Shapefile或GeoJSON文件作为裁剪范围
- 按矩形范围裁剪:指定左上角和右下角的坐标
GDAL的裁剪命令:
gdalwarp -cutline study_area.shp -crop_to_cutline input.tif output.tif
4.4 重采样:让所有数据对齐
重采样说白了就是改变像素大小。为什么需要?因为不同传感器的分辨率不一样。比如你要融合Landsat(30米)和Sentinel-2(10米),必须先把Landsat重采样到10米。
常用的重采样方法:
| 方法 | 适用场景 | 特点 |
|---|---|---|
| 最近邻 | 分类数据 | 速度快,保持原始值 |
| 双线性插值 | 连续数据(如温度) | 平滑,但会改变数值 |
| 三次卷积 | 高精度需求 | 最平滑,计算量大 |
GDAL重采样示例:
gdalwarp -tr 10 10 -r bilinear input_30m.tif output_10m.tif
这里 -tr 10 10 表示输出分辨率为10米,-r bilinear 指定双线性插值。
4.5 投影转换:让数据说同一种语言
不同数据源的投影可能不同。比如有的用WGS84经纬度,有的用UTM投影。不统一的话,叠加分析就是笑话。
投影转换的核心是定义目标投影。GDAL命令:
gdalwarp -t_srs EPSG:32650 input.tif output.tif
EPSG:32650 是UTM Zone 50N的编码。你可以根据研究区选择合适的UTM带。
为什么会这样?因为不同投影的变形特性不同。UTM投影在带内变形小,适合做面积计算。WGS84适合全球范围,但距离测量不准。
我个人习惯:做融合前,把所有数据统一到同一个UTM投影下。这样后续的像素对齐最准确。
知识体系总览
下面这张图,是我自己总结的本章知识结构。你看一眼,心里就有谱了。
你看,这五个操作其实是一条流水线。数据进来,先合成、提取,再裁剪到研究区,然后统一分辨率和投影。做完这些,才能放心地做融合。
好了,这一章的内容就这些。记住:基础操作做扎实了,后面的融合才能出好结果。别嫌麻烦,磨刀不误砍柴工。
公众号:蓝海资料掘金营,微信deep3321