中文版 | English
关键词 / Keywords: 计算机视觉 Computer Vision | 对极几何 Epipolar Geometry | 基础矩阵 Fundamental Matrix | 8点算法 8-Point Algorithm | RANSAC | SIFT | 立体视觉 Stereo Vision | 运动恢复结构 Structure from Motion
计算机视觉实验4:实现对极几何算法,包括8点算法和RANSAC框架进行基础矩阵估计。
Computer Vision Experiment 4: Implementation of epipolar geometry algorithms including the 8-point algorithm and RANSAC framework for fundamental matrix estimation.
本项目实现了两种估计立体图像对之间基础矩阵的方法:
- 任务1:使用168对人工标注的匹配点进行基础矩阵估计
- 任务2:完整流程,包括SIFT特征检测、匹配和基于RANSAC的鲁棒估计
- 带Hartley归一化的8点算法
- 用于鲁棒估计的RANSAC框架
- 极点和极线计算
- SIFT特征检测与匹配
- 全面的结果可视化
- 详细的实验报告生成(DOCX格式)
experiment4/
├── src/
│ ├── core/
│ │ ├── fundamental_matrix.py # 8点算法、Hartley归一化
│ │ ├── epipolar_geometry.py # 极点与极线计算
│ │ └── ransac.py # RANSAC框架
│ ├── features/
│ │ ├── detector.py # SIFT特征检测
│ │ └── matcher.py # 特征匹配
│ ├── visualization/
│ │ └── epipolar_vis.py # 可视化工具
│ └── utils/
│ └── io_utils.py # 数据加载工具
├── scripts/
│ ├── task1_given_matches.py # 任务1执行脚本
│ ├── task2_full_pipeline.py # 任务2执行脚本
│ └── compare_results.py # 结果对比脚本
├── results/ # 实验结果
│ ├── task1/ # 任务1结果
│ ├── task2/ # 任务2结果
│ └── comparison/ # 对比分析
├── generate_report.py # 报告生成脚本
└── README.md
numpy
opencv-python
matplotlib
python-docxpip install numpy opencv-python matplotlib python-docx使用168对人工标注的匹配点估计基础矩阵:
python scripts/task1_given_matches.py结果:
- 平均误差:0.069 像素
- 中位数误差:0.032 像素
- 匹配点数:168对
包含自动特征检测和鲁棒估计的完整流程:
python scripts/task2_full_pipeline.py结果:
- 检测到的SIFT特征:498个(左图)、465个(右图)
- 初始匹配数:133对
- RANSAC内点:101个(内点率75.9%)
- 平均对称距离:0.316 像素
对比两种方法的结果:
python scripts/compare_results.py生成包含嵌入图片的完整实验报告(DOCX格式):
python generate_report.py| 指标 | 任务1 | 任务2 |
|---|---|---|
| 点数/内点数 | 168 | 101 |
| 平均误差 (px) | 0.069 | 0.316 |
| 中位数误差 (px) | 0.032 | 0.154 |
| 最大误差 (px) | 0.556 | 2.373 |
| 内点率 | - | 75.9% |
- 将点坐标平移至原点(零均值)
- 缩放使平均距离为√2
- 提高数值稳定性
- 归一化点坐标
- 从点对应关系构建约束矩阵
- 使用SVD求解
- 强制秩为2约束
- 反归一化得到最终基础矩阵F
- 随机采样8对点
- 使用8点算法估计F
- 计算对称极线距离
- 统计阈值内的内点数
- 自适应迭代并选择最佳模型
- 左极点:F的零空间(通过SVD求解)
- 右极点:F^T的零空间
项目生成多种可视化结果:
- 匹配点可视化
- 叠加在图像上的极线
- RANSAC内点/离群点分类
- 极点对比
MIT License
weizhena
计算机视觉课程 - 实验4
基于经典的对极几何和运动恢复结构算法。