初始提交:全景图像拼接(计算机视觉,大三下)
计算机视觉课程实验一(大三下):从零实现多条拼路径的全景拼接流水线,覆盖线性链、闭合环、网状视图与固定视点球面扫描。
实现一套能处理多种拓扑的全景图像拼接流水线。按实验要求,RANSAC 与 image warping 全部手写,不调用 OpenCV 的 findHomography、warpPerspective 或 cv2.Stitcher 成品接口;特征检测(SIFT)、描述子匹配、数值优化与基础图像算子使用 OpenCV、NumPy、SciPy。
findHomography
warpPerspective
cv2.Stitcher
在 12 个公开数据集(plain / 360° / casual / hard 四类)之外,另用 4 组自制 Minecraft 固定视点蛇形截图检验算法在重复方块纹理、弱纹理天空、首尾闭合条件下的鲁棒性。整体按”基线建立 → 失败诊断 → 几何与融合改进 → 分层验证 → 球面扩展”的顺序迭代出 v2 版本。
main.py
panorama/io_utils.py
np.fromfile
cv2.imdecode
panorama/features.py
panorama/ransac.py
panorama/center_detect.py
panorama/graph.py
panorama/bundle_adjustment.py
panorama/warping.py
panorama/blending.py
panorama/cylindrical.py
panorama/spherical.py
panorama/stitcher.py
panorama/visualize.py
data-all/**/
*-STITCH-GRAPH.txt
outputs/**/summary.txt
验收答辩指南.md
文件:函数
pyproject.toml
uv.lock
原始图片数据集与输出图片(jpg/png)、实验报告 docx、课件 pptx 均未入库;公开数据集(APAP、AANAP、DHW、NISwGSP 系列)需自行下载放入 data-all/{plain,360,casual,hard}/<dataset>/。
data-all/{plain,360,casual,hard}/<dataset>/
Python ≥ 3.11。实际 import 的依赖:numpy、opencv-python、scipy、numba、tqdm、psutil(pyproject.toml 仅声明了其中一部分,建议直接 pip 安装全表):
pip install numpy opencv-python scipy numba tqdm psutil # 单数据集(平面模式 + 羽化融合) python main.py --dataset APAP-conssite --category plain --mode flat --blend feather # 全部数据集 python main.py --all # 网状数据集启用多轮 Bundle Adjustment python main.py --dataset NISwGSP-08_SienaCathedralLibrary3 --category hard --mode flat --blend seam --ba --ba-rounds 3 # Minecraft 固定视点球面模式(游戏 FOV=70,16:9 水平视场 102.4°) python main.py --dataset MCPVZ-Lawn --category own --mode spherical --spherical-hfov 102.4
输出写入 outputs/<dataset>/:panorama.jpg、summary.txt 与若干 vis_*.jpg 中间图。
outputs/<dataset>/
panorama.jpg
summary.txt
vis_*.jpg
data-all/own
计算机视觉实验一:从零实现全景拼接(SIFT 筛选、手写 RANSAC、归一化 DLT、圆柱投影、羽化融合)
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
全景图像拼接
任务背景
实现一套能处理多种拓扑的全景图像拼接流水线。按实验要求,RANSAC 与 image warping 全部手写,不调用 OpenCV 的
findHomography、warpPerspective或cv2.Stitcher成品接口;特征检测(SIFT)、描述子匹配、数值优化与基础图像算子使用 OpenCV、NumPy、SciPy。在 12 个公开数据集(plain / 360° / casual / hard 四类)之外,另用 4 组自制 Minecraft 固定视点蛇形截图检验算法在重复方块纹理、弱纹理天空、首尾闭合条件下的鲁棒性。整体按”基线建立 → 失败诊断 → 几何与融合改进 → 分层验证 → 球面扩展”的顺序迭代出 v2 版本。
内容结构
main.pypanorama/io_utils.pynp.fromfile+cv2.imdecode)panorama/features.pypanorama/ransac.pypanorama/center_detect.pypanorama/graph.pypanorama/bundle_adjustment.pypanorama/warping.pypanorama/blending.pypanorama/cylindrical.pypanorama/spherical.pypanorama/stitcher.pypanorama/visualize.pydata-all/**/*-STITCH-GRAPH.txt(轻量文本)outputs/**/summary.txt验收答辩指南.md文件:函数的答辩讲稿pyproject.toml/uv.lock原始图片数据集与输出图片(jpg/png)、实验报告 docx、课件 pptx 均未入库;公开数据集(APAP、AANAP、DHW、NISwGSP 系列)需自行下载放入
data-all/{plain,360,casual,hard}/<dataset>/。运行方法
Python ≥ 3.11。实际 import 的依赖:numpy、opencv-python、scipy、numba、tqdm、psutil(
pyproject.toml仅声明了其中一部分,建议直接 pip 安装全表):输出写入
outputs/<dataset>/:panorama.jpg、summary.txt与若干vis_*.jpg中间图。来源声明
data-all/own的 Minecraft 截图为本人自制。