使用Segment-Geospatial实现遥感影像自动对象分割
概述
Segment-Geospatial是基于Segment Anything Model(SAM)开发的一个地理空间分析工具包,专门用于处理遥感影像的自动对象分割任务。本文将详细介绍如何使用该工具包实现遥感影像的自动分割,包括环境配置、影像获取、模型参数调优以及结果可视化等完整流程。
环境准备
在开始之前,需要确保已安装必要的依赖包。Segment-Geospatial提供了完整的Python接口,可以通过简单的pip命令安装:
pip install segment-geospatial
安装完成后,导入所需模块:
import os
import leafmap
from samgeo import SamGeo, show_image, download_file, overlay_images, tms_to_geotiff
数据获取与准备
1. 创建交互式地图
使用leafmap创建一个交互式地图,方便选择感兴趣区域:
m = leafmap.Map(center=[37.8713, -122.2580], zoom=17, height="800px")
m.add_basemap("SATELLITE")
m
2. 确定分析区域
用户可以通过地图工具绘制多边形或矩形来选择分析区域。如果没有手动选择,则使用默认边界:
if m.user_roi_bounds() is not None:
bbox = m.user_roi_bounds()
else:
bbox = [-122.2659, 37.8682, -122.2521, 37.8741]
3. 下载卫星影像
使用TMS服务下载指定区域的卫星影像:
image = "satellite.tif"
tms_to_geotiff(output=image, bbox=bbox, zoom=17, source="Satellite", overwrite=True)
SAM模型初始化
Segment-Geospatial提供了多种SAM模型变体,可以根据需求选择合适的模型:
sam = SamGeo(
model_type="vit_h", # 使用ViT-Huge模型
sam_kwargs=None, # 使用默认参数
)
自动分割处理
1. 基本分割
执行自动分割并保存结果:
sam.generate(image, output="masks.tif", foreground=True, unique=True)
参数说明:
foreground=True:只保留前景对象unique=True:为每个对象分配唯一ID
2. 结果可视化
查看分割掩码:
sam.show_masks(cmap="binary_r")
生成带注释的结果图:
sam.show_anns(axis="off", alpha=1, output="annotations.tif")
3. 结果对比
使用滑动条对比原始影像和分割结果:
leafmap.image_comparison(
"satellite.tif",
"annotations.tif",
label1="Satellite Image",
label2="Image Segmentation",
)
高级参数调优
SAM提供了多个可调参数,可以优化分割效果:
sam_kwargs = {
"points_per_side": 32, # 每边采样点数
"pred_iou_thresh": 0.86, # 预测IOU阈值
"stability_score_thresh": 0.92, # 稳定性分数阈值
"crop_n_layers": 1, # 裁剪层数
"crop_n_points_downscale_factor": 2, # 裁剪点降采样因子
"min_mask_region_area": 100, # 最小掩码区域面积
}
使用优化参数重新初始化模型:
sam = SamGeo(
model_type="vit_h",
sam_kwargs=sam_kwargs,
)
结果后处理
1. 矢量转换
将分割结果转换为矢量格式(如GeoPackage):
sam.tiff_to_vector("masks.tif", "masks.gpkg")
2. 结果叠加
将分割结果叠加到原始影像上,并调整透明度:
overlay_images(image, "annotations2.tif", backend="TkAgg")
应用建议
- 小对象检测:对于小目标,可以增加
points_per_side和crop_n_layers参数值 - 精度优化:适当提高
pred_iou_thresh和stability_score_thresh可提升分割质量 - 性能平衡:较大的模型(ViT-H)精度高但速度慢,可根据硬件条件选择合适模型
总结
Segment-Geospatial工具包简化了SAM模型在遥感影像分析中的应用流程,通过本文介绍的方法,用户可以快速实现高质量的自动对象分割。该工具特别适用于建筑物提取、土地利用分类、变化检测等遥感应用场景。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



