一、图像全景拼接的原理

图像全景拼接就是将多张图片(两两间存在一定的重叠部分,可以是不同时间、不同视角或者不同传感器获得的)拼成一幅无缝的全景图或高分辨率图像的技术。也就是将两幅存在一定重合部分的图像,通过算法(如SIFT)进行特征点匹配从而得到对应点,将这些得到的对应点重合并保留两张图片的未重合部分,就可运行出次两张图片的拼接结果。

1.特征点匹配

本次实验主要采用了SIFT算法进行,之前的博客中有讲SIFT算法的基本原理等,链接:
https://blog.csdn.net/weixin_42104269/article/details/88630089

2.图片匹配

2.1 RANSAC随机一致性采样

RANSAC算法的基本假设是样本中包含正确数据(可以被模型描述的数据),也包含异常数据(偏离正常范围很远、无法适应数学模型的数据),即数据集中含有噪声。这些异常数据可能是由于错误的测量、错误的假设、错误的计算等产生的。同时RANSAC也假设,给定一组正确的数据,存在可以计算出符合这些数据的模型参数的方法。
基本思想描述如下:
A.首先,考虑一个最小抽样集的势为n的模型(n为初始化模型参数所需的最小样本数)和一个样本集P,集合P的样本数#§>n,从P中随机抽取包含n个样本的P的子集S初始化模型M;
B.余集SC=P\S中与模型M的误差小于某一设定阈值t的样本集以及S构成S*。S可认为是内点集,它们构成S的一致集;
C.若#(S
)≥N,认为得到正确的模型参数,并利用集S采用最小二乘等方法重新计算新的模型M;重新随机抽取新的S,重复以上过程。
D.在完成一定的抽样次数后,若未找到一致集则算法失败,否则选取抽样后得到的最大一致集判断内外点,算法结束。

2.2 Homography透视变换

Homography就是将图像投影到一个新的视平面。
在全景图像拼接的时候,很多图像会由于拍摄角度等问题出现一些方向上的不同步,有时需要将图片进行旋转。而控制这个变换的方式就是通过透视矩阵与原图像的矩阵形式相乘从而得到新的图像矩阵。

PS:因为我现在对这个也没有理解的很清楚,所以写的比较简略,不理解的地方建议多参考其他资料。

二、图像全景拼接的实现

首先要找到PVC文件夹下的tools文件,打开里面的ransac.py,找到下图的代码

print格式加括号,然后重装PVC

注意:图片要从右向左

1.室内全景图

这里先温馨提示一下,室内图拼出了科幻虚空的感觉(hiahiahia~)




其实看到有一些的特征点匹配(从天匹配到地上那种),已经能预感到它飞一般的结果了


我觉得主要还是图片的问题,场景选择的不好,有太多相似的场景结构,导致特征点匹配的时候出现了错误,没有得出足够的正确对应点,以至于在重叠图片对应点坐标的时候产生了很大的空间误差,导致图片的拼接发生了扭曲的情况。
而且,可以明显的观察到,较中间的图片比较清晰完整,两头的图像则会有点被拉伸的感觉,比较模糊。

2.室外全景图

对于景深落差的问题…我的理解就是,景深落差小即正常拍摄的风景图片,景深落差大就是镜头前有离镜头较近的某个参照物,图片中有远景与近景较大的落差。

景深落差小

下图是集美大学中山纪念馆和嘉庚图书馆的全景拼接图(为了实现的效果能好一点,我在拍摄时是竖着手机拍的,并且重叠的部分个人觉得还是蛮多的。不过事实证明效果还不错)





我觉得总体来说这张室外拼接图还是比较不错的(毕竟对比前面的室内-全是柱子-图,简直天差地别),与上面的失败图片作对比就能跟好的看出,对图片的要求:要较为平稳 的拍摄,远景效果好于近景即图片内同一参照物大小差越小的效果越好(图片取景较近往往会出现两边图片会被拉伸、像素模糊的问题)、取景要尽量避免相似区域多的场景等。

景深落差大

我是在上图的基础上,找了一根灯柱作为离镜头近的参照物,以此来拉大景深(?不知道对不对,反正就是这样啦)





这次的拼接效果没有景深小的图片效果好,图片的拼接缝隙比较明显,连接的也不是很平滑(反正我的图片是这样,不知道是不是大家做出来都类似)。而且灯柱有点歪了,我觉得我拍的时候挺直的,不过有可能是因为拍摄角度的问题出现了一些方向上的不同步,图片被扭曲旋转了?(诶,好好一根灯柱,就给扭曲掰弯了)

3.总结

1.可能是因为图片比较清晰,所以运行的时间会非常的慢(之前有了解一点点surf算法,有时间或许可以试试)。
2.选取的场景最好不要有太多的相似区域,会影响到特征点的匹配导致错误对应点数量过多影响到拼接,使得图片拼接失败(问题大的就会看到极其科幻的拼接结果)。
3.拍摄图片时要尽量使得图片内的同一参照物大小差不多。近景(室内)图片拼接的中间比较清晰完整,两边会被拉伸、像素会变得模糊,远景(室外)图片拼接时拉伸小,不会出现很夸张的问题。
4.个人实验结果中景深落差小的图片效果会更好,景深落差大的图片,在拼接时缝隙会较大,连接不够平滑;而且由于要选择一个离镜头较近的参照物,可能会使拍摄角度等问题出现一些方向上的不同步之类的,会需要将图片进行旋转,可能会导致效果不够理想(比如我可怜的灯柱)。
5.同组图片的运行结果会不同(有时候还会突然失败,可能是玄学吧),主要应该是因为特征点的匹配不同,所选取出的正确和错误的对应点集不同,有时会进行程度不同的透视变换。

计算机视觉(五)--图像全景拼接原理及实现相关推荐

  1. 【计算机视觉】图像全景拼接 RANSAC

    1.全景图像拼接原理 1.1 RANSAC算法原理 RANSAC是"RANdom SAmple Consensus(随机抽样一致)"的缩写.它可以从一组包含"局外点&qu ...

  2. 计算机视觉第四次实验--基于RANSAC的图像全景拼接

    计算机视觉第四次实验–基于RANSAC的图像全景拼接 文章目录 计算机视觉第四次实验--基于RANSAC的图像全景拼接 一.明确图像拼接整体流程 二.APAP算法 三.算法流程: 四.最小割问题(最大 ...

  3. CV:计算机视觉技术之图像基础知识(二)—以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础)

    CV:计算机视觉技术之图像基础知识(二)-以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础) 目录 ...

  4. OpenCV与图像处理学习五——图像滤波与增强:线性、非线性滤波、直方图均衡化与Gamma变换

    OpenCV与图像处理学习五--图像滤波与增强:线性.非线性滤波.直方图均衡化与Gamma变换 三.图像滤波与增强 3.1 线性滤波 3.1.1 方框滤波 3.1.2 均值滤波 3.1.3 高斯滤波 ...

  5. PyTorch框架学习五——图像预处理transforms(一)

    PyTorch框架学习五--图像预处理transforms(一) 一.transforms运行机制 二.transforms的具体方法 1.裁剪 (1)随机裁剪:transforms.RandomCr ...

  6. unity图像压缩算法原理

    概述 在计算机图形学中,存在许多纹理压缩方案.压缩既减少了纹理内存占用,又降低了使用纹理的带宽要求.本文中,"纹理压缩"与"图像压缩"不同,因为纹理压缩方案的设 ...

  7. 简述计算机视觉极限约束的原理,基于极线约束的单目立体视觉自由曲面棱镜设计...

    摘要: 立体视觉是计算机视觉的一个重要分支,目前已经广泛应用于工业,航天,医疗等众多领域.随着立体视觉技术的发展和应用方向的不断拓展,人们对立体视觉系统经济化,微型化,轻量化的使用要求也在不断提升,多 ...

  8. OpenCV C++案例实战十二《图像全景拼接》

    OpenCV C++案例实战十二<图像全景拼接> 前言 一.OpenCV Stitcher 1.功能源码 2.效果 二.图像全景拼接 1.特征检测 2.计算单应性矩阵 3.透视变换 4.图 ...

  9. python灰度图片格式_[Python图像处理] 十五.图像的灰度线性变换

    [Python图像处理] 十五.图像的灰度线性变换 发布时间:2019-03-28 00:08, 浏览次数:619 , 标签: Python 该系列文章是讲解Python OpenCV图像处理知识,前 ...

最新文章

  1. 使项目持续集成支持Carthage管理
  2. Android的GridView和Gallery结合Demo
  3. 腾讯python面试题_面试题 | 腾讯数据分析面试题分享
  4. 【java】java 如何不使用第三个变量来交换两个数的值
  5. php自动加载类与路由,PHP实现路由和类自动加载
  6. git删除远程提交记录
  7. MLDN学习笔记 —— Annotation
  8. gpio_set_value 函数
  9. 多媒体计算机音乐大赛评分表,歌唱比赛的评分标准
  10. 番茄助手(Visual Assist X)过期的应对方法
  11. 移动端使用PhotoSwipe 图片放大浏览
  12. 马来西亚站需要注意的法律法规-扬帆跨境
  13. Groovy on Grails(Java笨狗)系列---前言(二)
  14. 使用es的新姿势 2.x 5.x 6.x通用
  15. 结构-02. 有理数加法(15)
  16. 4.模型评估之ROC和AUC
  17. 台电U盘“加密大师”制作方法
  18. 信息系统项目管理师第三版 pdf可编辑_信息系统项目管理师教程(第三版)——可行性研究...
  19. 山梨酸钾(CAS 24634-61-5)市场现状及未来发展趋势
  20. 13_被讨厌的勇气书摘

热门文章

  1. 渗透bc网站教学_督导引领共交流 听课评课共成长 怀化锦溪小学开展课堂教学督导听课活动_都市新闻_新闻中心...
  2. Aspose.Cells使用教程:使用 .NET 在 Linux 上创建或编辑 Excel 文件
  3. 首先下载安装data.table包_首次揭秘“超级签”与企业包行业内幕!
  4. 混合整数分布式蚁群优化算法-MIDACO介绍和试用
  5. MindMaster思维导图创建流程图
  6. 华为 日志服务器 配置文件,华为设置日志服务器配置
  7. maven仓库镜像改为阿里巴巴
  8. ZigBee--IAR新建、配置LED工程
  9. 再爆 Bug!Windows 11 任务栏、菜单栏无故消失,怎么解?
  10. 计算机科学投稿须知,《计算机科学》投稿须知