360全景图像拼接

2024-06-18 22:58
文章标签 图像 360 拼接 全景

本文主要是介绍360全景图像拼接,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

刚到实验室,做了一个全景图像拼接的training project,自己前前后后搞了1个多月(汗啊,只能自我安慰是接触到的第一个图形学的东西),尝试了几种方法,写了很多无用代码,下面把我一路曲曲折折的过程抛出来,希望能对大家有些许帮助吧。

    一. 做拼接的第一步一定是warp,就是把每张图像投影到柱面或者球面,我将每张图片做了柱面投影,而这么做的理由呢,就是将图像投影到统一的面上以方便拼接,根据我做的过程中的理解就是使拼接的图像很平滑,当然如果只是拼接两张图片的话,完全可以省略这一步。

    二. 图像拼接的第二步就是提取特征点(也可以采用边特征的提取),特征点的提取方法有很多,我使用了lowe的SIFT,SIFT是一个非常鲁棒的算法,但是速度很慢,如果想程序运行速度很快,可以使用其他特征点提取方法,lowe提供了SIFT的源码,可以直接使用。

    三. 提取出两张图片的特征点以后,就要找到特征点间的对应关系,这一步是一个简单的距离比值删选的过程,我自己实现了一个暴力筛选的方法,还是比较简单的,但是这样肯定会很影响速度,所以要使用一个k-d tree的approximate nearest neighbour算法,可以用ann库实现,当然也可以直接用rob hess的特征点匹配算法实现。

    四. 上一步找到对应特征点以后,接下就是用RANSAC对已有匹配进行筛选并求出对应的homography,实际上就是一个简单的迭代过程。

    五. 求出homography以后就可以进行alignment了,这一步可以用opencv提供的WarpPerspective函数实现,但是用这个函数一张图像经过几次align之后,拼接后图像越靠右边越有发散效果,所以用这个函数只有两张图片好用(如果有人知道多张图片怎么用这个函数进行拼接,请您不吝赐教),这一步还有一个很重要的边界问题,及拼接图像转换后的坐标可能出现负值,这一点一定要考虑进去,否则会出现拼接后的图像包含不全的情况。

    六. alignment之后就是blend的问题,以使拼接边界不那么明显,我采用了一个简单的线性的距离权值算法,效果还可以看,即pixel=pixel_a*alpha+pixel_b*(1-alpha),alpha为当前像素点距拼接左边界的距离除以整个重叠区域的宽度。下面两张图分别是4张,3张图像用WarpPerspective函数拼接的。



    七. 如果你只需要拼接两张图片,那到上一步就可以了,以下是360度拼接的额外过程,即图片有n张的情况,我只考虑了所有图片都属于一个全景图没有噪音图片的乱序图片的情况。要先将图片排好序,以下为排序过程:①在所有图像对间找到inliers个数最多两张图像②在两张图片的基础上向前向后依次找出与当前图像邻接的图像直到结束。

    八. 经过上一步就可以进行alignment了,因为之前用提过的WarpPerspective函数使用中的问题,这一步只使用了homography中的水平和垂直平移分量tx,ty,依旧采用线性权值的方法进行blend,多长图像拼接还有一个很重要的问题就是拼接后首尾不能相接的情况,这就需要惊醒调整,比较好的方法是bundle adjustment,我也分别用opencv和sba实现了,但是估计还是实现的方法不对,调了好长时间没有出效果,无奈只能先放弃了,以后比较闲的时候再实现吧(如果有人在这一步用bundle adjustment实现,请赐教)。转去实现了一个比较简单的线性调整的方法,最后结果看起来还可以,有些模糊的地方,我估计可能是blend方法的问题,但是没有继续实现multi-blend,所以结果只能是现在这样了。

    总之呢,整个拼接程序还比较粗糙,有很多地方有待完善,欢迎大家有问题可以和我交流。下面为两个17张图片的全景图


这篇关于360全景图像拼接的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073293

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

架构全景视图

文章目录 一、战略规划二、业务架构Business Architecture2.1业务架构定义2.2 业务架构组成2.3 TOGAF2.3.1 Archimate建模(重要) 三、数据架构Data Architecture3.1 数据架构定义3.2 数据架构组成 四、应用架构Application Architecture4.1 应用架构定义4.2 应用架构组成 五、技术架构Technol

HalconDotNet中的图像特征与提取详解

文章目录 简介一、边缘特征提取二、角点特征提取三、区域特征提取四、纹理特征提取五、形状特征提取 简介   图像特征提取是图像处理中的一个重要步骤,用于从图像中提取有意义的特征,以便进行进一步的分析和处理。HalconDotNet提供了多种图像特征提取方法,每种方法都有其特定的应用场景和优缺点。 一、边缘特征提取   边缘特征提取是图像处理中最基本的特征提取方法之一,通过检

js操作Dom节点拼接表单及ajax提交表单

有时候我们不希望html(jsp、vm)中有创建太多的标签(dom节点),所以这些任务都由js来做,下面提供套完整的表单提交流程,只需要在html中添加两个div其余的都由js来做吧。下面原生代码只需略微修改就能达到你想要的效果。 1、需要创建表单的点击事件 <a href="javascript:void(0);"onclick="changeSettleMoney('$!doctor.do

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。