Study-基于块匹配的全景图像拼接

简介: Study-基于块匹配的全景图像拼接

案例背景


  图像拼接技术是一种将从真实世界采集的离散化图像序列合成一个宽视角的场景图像技术。假设有两幅具有重叠相关的图像,则图像拼接就是将这两幅图像拼接成-幅图像。因此,图像拼接的关键是能够快速高效地寻找到两幅不同图像的重叠部分,实现宽视角成像"。其中,重叠部分的寻找方法有很多,如像素查询、块匹配等。通过不同方法找到重叠部分后就可以进行图像叠加融合,从而完成图像的拼接过程。


理论基础


1.空间投影从真实世界中采集的- -组相关图像以一定 的方式投影到统一的空间面, 其中可能存在立方体、圆柱体和球面体表面等。因此,这组图像就具有统一的参 数空间坐标。


2.匹配定位对投影到统一的空间面中的相邻图像进行比对,确定可匹配的区域位置。


3.叠加融合根据匹配结果,将图像重叠区域进行融合处理,拼接成全景图。


  因此,图像拼接技术是全景图技术的关键和核心,通常可以分为两步:图像匹配和图像融合,本案例选择图像块匹配和加权融合。其拼接流程如图1所,图像块匹配过程如图2所示。


图1:图像拼接过程


image.png

图2:image.png

image.png

4. 图像匹配


  图像匹配通过计算相似性度量来决定图像间的变换参数,应用于从不同传感器、不同视角、不同时间采集的同- -场景的两幅或多幅图像,将其变换到同- -坐标系下,并在像素层上实现最佳匹配的效果。根据相似性度量计算的对象,图像匹配的方法大致可以划分为4类:


基于灰度的匹配


基于模板的匹配


基于变换域的匹配


基于特征的匹配


5. 图像融合


  待拼接的图像在采集或传输过程中可能会受到光照、地形差异、电子干扰等不确定因素的影,所以重叠区域可能在不同的图像中有较大的差别。如果直接对待拼接图像进行简单的叠加合并,则得到的拼接图在拼接位置上可能会存在明显的拼接缝或重叠区域模糊失真的现象。其中,图像拼接过程中在拼接位置产生的拼接缝主要有以下两类。


5.1.鬼影 同一物体相互重叠的现象被称为鬼影,根据其来源可以分为配准鬼影和合成鬼影。配准鬼影一般由于无法准确配准图像而产生,合成鬼影一般由于物体运动而产生。


5.2.曝光瑕疵 曝光瑕疵指由于数码相机或智能手机等采集设备自动曝光所造成的待拼接图像的色彩强度不同,而导致的拼接图像的曝光差异。


  在实验过程中,如果不能综合考虑图像拼接时的拼接缝问题,则往往无法得到真正意义_上的全景图。图像融合技术产生的目的就是要消除拼接图像的拼接缝问题,即消除拼接图像中的“鬼影”和“曝光瑕疵”,获得真正意义上的无缝拼接图像。



程序实现


  本案例采用基于块匹配的图像拼接流程来执行拼接操作,载入图片文件夹来作为待拼接对象,通过进行图片序列的匹配、融合来得到拼接效果,并分别对灰度图像、彩色图像进行处理。


  设计界面分为工具栏、流程区域、显示区域,分别用于实现图像的载入及存储、算法流程控、中间结果显示等功能。其中,在图像拼接部分分为灰度图像拼接和彩色图像拼接,用于处理不同的输入图像类型,查看不同的拼接效果。


image.png

image.png

image.png


相关文章
|
7月前
|
机器学习/深度学习 数据采集 算法
【植物疾病的识别】使用叶片图像检测植物疾病研究【图像采集、分割、特征提取】(Matlab代码实现)
【植物疾病的识别】使用叶片图像检测植物疾病研究【图像采集、分割、特征提取】(Matlab代码实现)
290 0
|
C# 机器学习/深度学习 搜索推荐
WPF与机器学习的完美邂逅:手把手教你打造一个具有智能推荐功能的现代桌面应用——从理论到实践的全方位指南,让你的应用瞬间变得高大上且智能无比
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)应用中集成机器学习功能,以开发具备智能化特性的桌面应用。通过使用Microsoft的ML.NET框架,本文演示了从安装NuGet包、准备数据集、训练推荐系统模型到最终将模型集成到WPF应用中的全过程。具体示例代码展示了如何基于用户行为数据训练模型,并实现实时推荐功能。这为WPF开发者提供了宝贵的实践指导。
526 0
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
应用服务中间件 nginx Docker
在 Docker 中部署 Nginx 并挂载配置文件
在 Docker 中部署 Nginx 并挂载配置文件
|
存储 JavaScript 前端开发
深入理解 Vuex:Vue.js 状态管理的利器
【10月更文挑战第11天】 深入理解 Vuex:Vue.js 状态管理的利器
321 2
|
算法 C# 开发工具
《黑神话:悟空》背后的编程语言揭秘——超越C++的多元技术融合
【8月更文挑战第27天】在游戏开发领域,一款游戏的成功往往离不开其背后强大的技术支持和编程语言的精妙运用。《黑神话:悟空》作为备受瞩目的国产单机动作游戏,其开发过程不仅涉及了多种编程语言,更是一次技术创新的集中展现。然而,当我们深入探讨其开发语言时,会发现它并非仅依赖于单一的C++,而是融合了多种编程语言的优势,共同铸就了这款游戏的辉煌。
824 0
|
Java 中间件 Maven
如何实现Java类隔离加载?
Java 开发中,如果不同的 jar 包依赖了某些通用 jar 包的版本不一样,运行时就会因为加载的类跟预期不符合导致报错。如何避免这种情况呢?本文通过分析 jar 包产生冲突的原因及类隔离的实现原理,分享两种实现自定义类加载器的方法。
如何实现Java类隔离加载?
|
数据采集 机器学习/深度学习 人工智能
阿里云魔搭社区发起ModelScope-Sora开源计划
阿里云魔搭社区在2024全球开发者先锋大会上启动ModelScope-Sora开源计划,聚焦中国多模态大模型研究,推出一站式工具链和Data-Juicer多模态数据处理系统,提升处理效率与质量。该计划还包括基础类Sora模型开源及沙盒实验室,以支持开发者迭代与训练。面对数据质量、安全、商业平衡及算力挑战,魔搭社区致力于推动AI创新,已汇聚众多模型与开发者。
1614 1
阿里云魔搭社区发起ModelScope-Sora开源计划
|
PyTorch 算法框架/工具
在conda中如何查看安装的pytorch版本 - 蓝易云
这个命令会列出所有与pytorch相关的包,包括它们的版本号。你可以在列表中找到pytorch的版本号。
1837 1
|
监控 算法 Java
保卫你的API:深入了解接口限流
保卫你的API:深入了解接口限流
1136 0

热门文章

最新文章

下一篇
开通oss服务