first commit
This commit is contained in:
176
README.md
Normal file
176
README.md
Normal file
@ -0,0 +1,176 @@
|
||||
# 图像配准工具集 (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
|
||||
```
|
||||
|
||||
### 安装
|
||||
```bash
|
||||
pip install numpy opencv-python rasterio geopandas shapely scikit-image matplotlib scipy torch
|
||||
# 安装 vismatch (假设已配置)
|
||||
```
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 基本配准
|
||||
```bash
|
||||
python test_V8.py # 运行主配准脚本
|
||||
```
|
||||
|
||||
### 参数配置
|
||||
在脚本开头修改以下关键参数:
|
||||
|
||||
```python
|
||||
# 文件路径
|
||||
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掩膜工具
|
||||
```bash
|
||||
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`: 内点比例要求
|
||||
|
||||
## 场景优化建议
|
||||
|
||||
### 森林场景
|
||||
```python
|
||||
MATCH_MAX_SIDE = 1600
|
||||
MIN_INLIERS = 25
|
||||
MIN_INLIER_RATIO = 0.025
|
||||
# 启用纹理过滤和边界距离限制
|
||||
```
|
||||
|
||||
### 水体场景
|
||||
```python
|
||||
# 使用水体掩膜预处理
|
||||
MASK_PAD_PX = 100
|
||||
# 调大RANSAC阈值容忍岸线变化
|
||||
RANSAC_REPROJ_THRESHOLD = 4.0
|
||||
```
|
||||
|
||||
### 城市/结构化场景
|
||||
```python
|
||||
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 来改进这个工具集。
|
||||
Reference in New Issue
Block a user