Files
StripStitch/README.md
2026-03-06 17:24:55 +08:00

5.1 KiB
Raw Permalink Blame History

图像配准工具集 (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

算法流程

  1. 粗定位: 使用源影像有效区域确定参考影像的感兴趣区域 (ROI)
  2. 数据读取: 读取源影像和参考影像的对应区域
  3. 掩膜处理: 应用有效区域掩膜和水体分割
  4. 特征匹配: 使用深度学习匹配器提取和匹配特征点
  5. 几何变换: 尝试多种变换模型,选择最优的几何变换
  6. 质量评估: 基于重投影误差评估变换质量
  7. 输出生成: 生成配准后的影像和可视化结果

关键参数说明

匹配参数

  • 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: 包含每对影像的配准统计信息

故障排除

常见问题

  1. 内点数过少: 检查影像质量,调整 RANSAC 参数,或扩大匹配区域
  2. 内存不足: 降低 MATCH_MAX_SIDE 或使用 CPU 模式
  3. 配准失败: 检查坐标系统一致性,调整质量阈值

调试建议

  • 查看可视化输出了解匹配情况
  • 检查统计 CSV 文件的各项指标
  • 调整参数时从小范围测试开始

版本历史

  • test V8.py: 支持有效区域掩膜和 RANSAC 参数控制
  • test V9.py: 增加软掩膜和纹理过滤
  • 早期版本: 基础配准功能实现

许可证

本项目遵循 MIT 许可证。

贡献

欢迎提交 Issue 和 Pull Request 来改进这个工具集。