5.1 KiB
5.1 KiB
图像配准工具集 (Image Registration Toolkit)
这是一个基于 Python 的遥感图像配准工具集,主要用于批量配准 .bip 格式的影像文件到参考 .tif 文件。支持多种变换模型和质量控制机制,特别适用于森林、水体等复杂地物场景。
功能特性
核心功能
- 批量配准: 支持批量处理多个 .bip 文件到参考 .tif 文件
- 多种变换模型: 支持相似变换、仿射变换、单应变换等
- 智能掩膜: 使用有效区域掩膜和水体分割提高配准质量
- 质量控制: 基于内点数、内点比例和重投影误差的质量评估
- 可视化输出: 自动生成匹配结果和关键点可视化图像
高级特性
- RANSAC 参数控制: 可配置的重投影误差阈值、置信度和最大迭代次数
- 纹理过滤: 基于梯度幅值的纹理质量筛选
- 几何约束: 距离边界限制和空间分布均匀性检查
- 多尺度处理: 支持不同分辨率的匹配和变换
文件说明
核心脚本
test V8.py: 最新版本的主配准脚本,支持有效区域掩膜test V9.py: 增强版本,包含软掩膜和纹理过滤demo.py: 基础演示脚本,展示匹配和可视化功能
工具脚本
mask_water.py: 基于 ROI 文件掩膜 TIF 图像的工具test V5.py-test V7.py: 早期版本的配准脚本
环境要求
依赖包
numpy
opencv-python
rasterio
geopandas
shapely
scikit-image
matplotlib
scipy
torch (用于 vismatch)
vismatch
安装
pip install numpy opencv-python rasterio geopandas shapely scikit-image matplotlib scipy torch
# 安装 vismatch (假设已配置)
使用方法
基本配准
python test_V8.py # 运行主配准脚本
参数配置
在脚本开头修改以下关键参数:
# 文件路径
REF_TIF = r"E:\path\to\reference.tif" # 参考影像路径
BIP_DIR = Path(r"E:\path\to\bip\directory") # BIP文件目录
OUT_DIR = Path(r"E:\path\to\output") # 输出目录
# 匹配参数
MATCHER_NAME = "matchanything-roma" # 匹配器选择
MATCH_MAX_SIDE = 1200 # 匹配最大边长
DEVICE = "cuda" # 或 "cpu"
# 变换方法优先级
TRANSFORM_METHODS = ["similarity", "affine", "homography"]
# RANSAC参数
RANSAC_REPROJ_THRESHOLD = 3.0 # 重投影误差阈值
RANSAC_CONFIDENCE = 0.99 # 置信度
RANSAC_MAX_ITERS = 1000 # 最大迭代次数
# 质量控制
MIN_INLIERS = 10 # 最少内点数
MIN_INLIER_RATIO = 0.01 # 最少内点比例
ROI掩膜工具
python mask_water.py input.tif roi.shp -o output_masked.tif
算法流程
- 粗定位: 使用源影像有效区域确定参考影像的感兴趣区域 (ROI)
- 数据读取: 读取源影像和参考影像的对应区域
- 掩膜处理: 应用有效区域掩膜和水体分割
- 特征匹配: 使用深度学习匹配器提取和匹配特征点
- 几何变换: 尝试多种变换模型,选择最优的几何变换
- 质量评估: 基于重投影误差评估变换质量
- 输出生成: 生成配准后的影像和可视化结果
关键参数说明
匹配参数
MATCH_MAX_SIDE: 控制匹配时的图像尺寸,越小速度越快但细节损失越多ROI_PAD_PX: ROI扩展像素,影响匹配区域范围
RANSAC参数
RANSAC_REPROJ_THRESHOLD: 内点判断的误差阈值,越小内点质量越高但数量越少RANSAC_CONFIDENCE: 算法置信度,影响迭代次数RANSAC_MAX_ITERS: 最大迭代次数上限
质量控制
MIN_INLIERS: 最少内点数量要求MIN_INLIER_RATIO: 内点比例要求
场景优化建议
森林场景
MATCH_MAX_SIDE = 1600
MIN_INLIERS = 25
MIN_INLIER_RATIO = 0.025
# 启用纹理过滤和边界距离限制
水体场景
# 使用水体掩膜预处理
MASK_PAD_PX = 100
# 调大RANSAC阈值容忍岸线变化
RANSAC_REPROJ_THRESHOLD = 4.0
城市/结构化场景
MATCH_MAX_SIDE = 1000 # 结构特征明显,不需要很高分辨率
RANSAC_REPROJ_THRESHOLD = 2.0 # 严格质量控制
输出结果
文件输出
*_registered.bip: 配准后的影像文件visualizations/*_matches.png: 匹配结果可视化visualizations/*_keypoints_src.png: 源影像关键点visualizations/*_keypoints_ref.png: 参考影像关键点
统计输出
stats/registration_stats.csv: 包含每对影像的配准统计信息
故障排除
常见问题
- 内点数过少: 检查影像质量,调整 RANSAC 参数,或扩大匹配区域
- 内存不足: 降低
MATCH_MAX_SIDE或使用 CPU 模式 - 配准失败: 检查坐标系统一致性,调整质量阈值
调试建议
- 查看可视化输出了解匹配情况
- 检查统计 CSV 文件的各项指标
- 调整参数时从小范围测试开始
版本历史
- test V8.py: 支持有效区域掩膜和 RANSAC 参数控制
- test V9.py: 增加软掩膜和纹理过滤
- 早期版本: 基础配准功能实现
许可证
本项目遵循 MIT 许可证。
贡献
欢迎提交 Issue 和 Pull Request 来改进这个工具集。