https://www.pyimagesearch.com/2018/12/17/image-stitching-with-opencv-and-python/
有关图像拼接和全景图构建的两个指南:
1. [Fundamentals of image stitching](https://pyimagesearch.com/2016/01/11/opencv-panorama-stitching/)
2. [Real-time panorama and image stitching](https://pyimagesearch.com/2016/01/25/real-time-panorama-and-image-stitching-with-opencv/)
这两个教程都涵盖了典型图像拼接算法的基础知识,该算法至少需要四个关键步骤:
1. 从两个输入图像中检测关键点(DoG,Harris等)并提取局部不变描述符(SIFT,SURF等)
2. 在图像之间匹配描述符
3. 使用RANSAC算法通过匹配的特征向量估计单应矩阵(homography matrix)
4. 使用从步骤#3获得的单应性矩阵应用翘曲变换(warping transformation)
用三脚架将相机架起来,水平移动云台,拍摄若干张照片(照片之间需要有重叠部分)来完成全景照片的拼接
优势:
对以下情况不敏感:
1. 图像顺序
2. 图像方向
3. 光照变化
4. 实际上不是全景图的一部分的有噪声图像
此外,使用增益补偿和图像混合产生更美观的全景图像输出。
实现过程
1. 选中若干需要拼接的图片
2. 进行全景拼接
需要检测每张图的关键点
匹配图中的关键点,进行透视变换,拼接
3. 修整边缘
通过阈值化来区分前景和背景
识别图像的轮廓,计算最大轮廓的边界框(即全景轮廓)
创建一个蒙板,不断缩小蒙板来找到图像的最大公共区域
裁剪得到最终结果