南通优普网站建设/网络竞价推广托管公司
1 PTGui图像拼接实验
1.1 概述
图像拼接技术就是将数张有重叠部分的图像(可能是不同时间、不同视角或者不同传感器获得的)拼成一幅无缝的全景图或高分辨率图像的技术
图像配准(image alignment)和图像融合是图像拼接的两个关键技术。图像配准是图像融合的基础,而且图像配准算法的计算量一般非常大,因此图像拼接技术的发展很大程度上取决于图像配准技术的创新。早期的图像配准技术主要采用点匹配法,这类方法速度慢、精度低,而且常常需要人工选取初始匹配点,无法适应大数据量图像的融合。图像拼接的方法很多,不同的算法步骤会有一定差异,但大致的过程是相同的。一般来说,图像拼接主要包括以下五步[1]:
1、图像预处理:包括数字图像处理的基本操作(如去噪、边缘提取、直方图处理等)、建立图像的匹配模板以及对图像进行某种变换(如傅里叶变换、小波变换等)等操作。
2、图像配准:就是采用一定的匹配策略,找出待拼接图像中的模板或特征点在参考图像中对应的位置,进而确定两幅图像之间的变换关系。
3、建立变换模型:根据模板或者图像特征之间的对应关系,计算出数学模型中的各参数值,从而建立两幅图像的数学变换模型。
4、统一坐标变换:根据建立的数学转换模型,将待拼接图像转换到参考图像的坐标系中,完成统一坐标变换
5、融合重构:将待拼接图像的重合区域进行融合得到拼接重构的平滑无缝全景图像。
1.2 实验工具及技术原理
1.2.1 实验工具简介
PTGUI是一款功能强大的全景图片拼接软件,其五个字母来自于Panorama Tools Graphical User Interface。
使用PTGui可以快捷方便地制作出360X180度的“完整球型全景图片”(Full spherical panorama),其工作流程非常简便:1、导入一组原始底片;2、运行自动对齐控制点;3、生成并保存全景图片文件[2]。
软件能自动读取底片的镜头参数,识别图片重叠区域的像素特征,然后以“控制点”(control point)的形式进行自动缝合,并进行优化融合。在软件的全景图片编辑器有更丰富的功能,支持多种视图的映射方式,用户也可以手工添加或删除控制点,从而提高拼接的精度[3]。软件支持多种格式的图像文件输入,输出可以选择为高动态范围的图像,拼接后的图像明暗度均一,基本上没有明显的拼接痕迹。软件提供Windows和MAC版本。
1.2.2 实验技术原理
图片拼接主要分以下几个步骤:
1、图像预处理:
包括数字图像处理的基本操作((如去噪、边缘提取、直方图处理等)、建立图像的匹配模板以及对图像进行某种变换(如傅里叶变换、小波变换等)等操作。
2、图像配准:
就是采用一定的匹配策略,找出待拼接国像中的模板或特征点在参考图像中对应的位置,进而确定两幅图像之间的变换关系。国像配准(Image registration)就是将不同时间、不同传感器(成像设备)或不同条件下(天候、照度、摄像位置和角度等)获取的两幅或多幅国像进行匹配、叠加的过程,它己经被广泛地应用于遥感数据分析、计算机视觉、国像处理等领域。配准技术的流程如下:首先对两幅图像进行特征提取得到特征点;通过进行相似性度量找到匹配的特征点对;然后通过匹配的特征点对得到图像空间坐标变换参数:最后由坐标变换参数进行图像配准。而特征提取是配准技术中的关键,准确的特征提取为特征匹配的成功进行提供了保障。因此,寻求具有良好不变性和准确性的特征提取方法,对于匹配精度至关重要[4]。
图像配准的方式可以概括为相对配准和绝对配准两种:相对配准是指选择多图像中的一张图像作为参考图像,将其它的相关国像与之配准,其坐标系统是任意的;绝对配准是指先定义一个控制网格,所有的图像相对于这个网格来进行配准,也就是分别完成各分量图像的几何校正来实现坐标系的统一。如何确定多图像之间的配准函数映射关系是图像配准的关键。通常通过一个适当的多项式来拟合两图像之间的平移、旋转和仿射变换,由此将图像配准函数映射关系转化为如何确定多项式的系数,最终转化为如何确定配准控制点 ( RCP)。
3、建立变换模型:
根据模板或者图像特征之间的对应关系,计算出数学模型中的各参数值,从而建立两幅图像的数学变换模型。
4、统一坐标变换:
根据建立的数学转换模型,将待拼接圈像转换到参考图像的坐标系中,完成统一坐标变换。
5、融合重构: 将带拼接图像的重合区域进行融合得到拼接重构的平滑无缝全景图像。图像融合(Image Fusion)是指将多源信道所采集到的关于同一目标的图像数据经过图像处理和计算机技术等,最大限度的提取各自信道中的有利信息,最后综合成高质量的图像,以提高图像信息的利用率、改善计算机解译精度和可靠性、提升原始图像的空间分辨率和光谱分辨率,利于监测。图像融合技术是指将多源信道所采集到的关于同一目标的图像经过一定的图像处理,提取各自信道的信息,最后综合成同一图像以供观看或进一步处理。高效的图像融合方法可以根据需要综合处理多源通道的信息,从而有效地提高了图像信息的利用率。系统对目标探测识别地可靠性及系统的自动化程度。其目的是将单一传感器的多波段信息或者不同类传感器所提供的信息加以综合,消除多传感器信息之间可能存在的冗余和矛盾,以增强影像中信息透明度,改善解译的精度、可靠性以及使用率,以形成对目标的清晰、完整、准确的信息描述。这诸多方面的优点使得图像融合在医学、遥感、计算机视觉、气象预报及军事目标识别等方面的应用潜力得到充分认识.尤其在计算机视觉方面,图像融合被认为是克服目前某些难点的技术方向;在航天、航空多种运载平台上,各种遥感器所获得的大量光谱遥感图像(其中分辨率差别、灰度等级差别可能很大)的复合融合,为信息的高效提取提供了良好的处理手段,取得明显效益。
一般情况下,图像融合由低到高分为三个层次:数据级融合、特征级融合、决策级融合:
(1)数据级融合也称像素级融合,是指直接对传感器采集来得数据进行处理而获得融合图像的过程,它是高层次图像融合的基础,也是目前图像融合研究的重点之一。这种融合的优点是保持尽可能多得现场原始数据,提供其它融合层次所不能提供的细微信息。
(2)特征级融合中有空间域算法和变换域算法 ,空间域算法中又有多种融合规则方法,如逻辑滤波法,灰度加权平均法,对比调制法等;变换域中又有金字塔分解融合法,小波变换法。其中的小波变换是当前最重要,最常用的方法。在特征级融合中,保证不同图像包含息的特征,如红外光对于对象热量的表征,可见光对于对象亮度的表征等等。
(3)决策级融合主要在于主观的要求,同样也有一些规则,如贝叶斯法,D-S 证据法和表决法等。融合算法常结合图像的平均值、熵值、标准偏差、平均梯度;平均梯度反映了图像中的微小细节反差与纹理变化特征,同时也反映了图像的清晰度。目前对图像融合存在两个问题:最佳小波基函数的选取和最佳小波分解层数的选取[5]。
1.3 实验过程与结果
1.3.1 实验条件
采用手机摄像头获取图片,在PTgui图片拼接软件上实现图像拼接。在拍摄图片的过程中,我们要保证前后所拍摄的图片有所重叠,这个可以保证该软件可以自动找到足够多的控制点,方便后期计算变换矩阵和实现图像融合。在拍每一张照片时,我们要保证手机相机的参数不能变化,同时拍摄每张照片时的间隔不能太大,否者可能会因为相机参数或者光照的变化导致后面的图像融合不彻底。
1.3.2 实验过程
1、拍照:人站在原地不动,转动手机拍取图片,保证当前所拍的图片与上一次拍的图片有重叠的部分,尽量保证最后一次拍的图片与第一次拍的图片有所重叠,这样可以形成闭环。
2、导入图片到PTgui中:点击加载影像
3、选择相机参数,这里我们选择手机/平板电脑即可:
4、选择焦距及镜头,这里我们选择普通镜头(不是鱼眼)即可:
5、对齐影像:点击对齐影像,软件自动寻找匹配关键特征点并进行对齐:
6、对于控制点较少或没有的两个图像手动添加控制点:
7、添加完控制点后运行软件优化程序对全景图进行优化:
8、点击创建全景即可在当前目录下生成全景图:
1.3.3 实验结果与分析
在有足够多的控制点时,PTgui拼接后的全景图具有较好的效果,但是会出现黑洞等由于无法拍摄和匹配到控制点所造成的现象,对此要进行补天补底的操作。
如下图所示,我们30张图片,分别是靠近下围拍10张,中间拍10张,上围拍10张,全部导入PTgui中,进行对齐影像,添加必要的控制点,生成全景图。
可见由于我拍了3圈,所以全景图上出现了3个洞,最左边的一个洞和最右边的一个洞应该是同一个洞,只不过需要用全景查看器才能看得见。观察图片左边的栏杆处,可以看到一个断裂,这可能是由于控制点过少或误标控制点造成的,而且由于栏杆这种物体在空间上具有周期性,会很容易出现控制点错误的情况,在实际拍摄的过程中要注意此类物体的拍法。可见天上有一个洞,天空中没有云的话会很难确定控制点,对于此类问题我们主要采取补天操作。
由于手机自己拍的照片不太符合PTgui的图片要求,导致成片效果不太尽如人意。为此,我采用网络上的素材来进行全景图的制作。如下图所示,15张图片被导入PTgui,按照前述流程生成全景图。
如下图所示为PTgui生成的图片,需要进行补天和补地操作:
补天后的结果如下图所示:
补地后最终形成的图片如下图所示,可见效果还是不错的:
1.4 总结
(1)拍照的时候图片一定要有所关联,不能出现独立的一张图片,否则无法进行拼接操作,或导致拼接错误;
(2)手动添加控制点时要仔细比对空间上具有周期性的物体,保证控制点正确,控制点一般越多软件生成的全景图效果越好;
(3)图像拼接涉及图像预处理、图像配准、建立变换模型、统一坐标变换、融合重构等知识,我明白了其中每个环节的作用和具体实现途径;
(4)学习了PTgui的基本运用和底层原理(图像拼接的基本原理及流程),
参考文献
[1]叶萍萍, 罗宏. 基于PTGui Pro,Pano2VR的三维全景图制作方法与应用[J]. 城市勘测, 2012(4):4.
[2]高轶. 全景照片合成技术及PTGUI的运用[J]. 电脑知识与技术:学术交流, 2010.
[3] Ye P , Luo H . Manufacture Methods and Application of Three-dimensional Panoramagram Based on PTGui Pro,Pano2VR[J]. Urban Geotechnical Investigation & Surveying.
[4]刘新文. 全景摄影和PTGui Pro详解[M]. 西北大学出版社, 2013.
[5]冯小欧. 一种基于PTGui的全景图拼接方案[J]. 都市家教月刊, 2012, 000(003):206-206.
相关文章:

PTGui图像拼接实验
1 PTGui图像拼接实验 1.1 概述 图像拼接技术就是将数张有重叠部分的图像(可能是不同时间、不同视角或者不同传感器获得的)拼成一幅无缝的全景图或高分辨率图像的技术 图像配准(image alignment)和图像融合是图像拼接的两个关键…...

C++|类封装、类的分文件编写练习:设计立方体类、点和圆的关系
文章目录 练习案例1:设计立方体类CPP代码 练习案例2:点和圆的关系CPP代码 代码总结类的分文件编写 练习案例1:设计立方体类 设计立方体类(Cube) 求出立方体的面积和体积 分别用全局函数和成员函数判断两个立方体是否相等。 CPP代码 class Cube { pub…...

大数据开发扩展shell--尚硅谷shell笔记
大数据开发扩展shell 学习目标 1 熟悉shell脚本的原理和使用 2 熟悉shell的编程语法 第一节 Shell概述 1)Linux提供的Shell解析器有: 查看系统中可用的 shell [atguiguhadoop101 ~]$ cat /etc/shells /bin/sh/bin/bash/sbin/nologin/bin/dash/bin/t…...

考研数学|《1800》《1000》《880》《660》最佳搭配使用方法
直接说结论:基础不好先做1800、强化之前660,强化可选880/1000题。 首先,传统习题册存在的一个问题是题量较大,但难度波动较大。《汤家凤1800》和《张宇1000》题量庞大,但有些题目难度不够平衡,有些过于简单…...

【GameFramework框架内置模块】17、声音(Sound)
推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群:398291828大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog.csdn.net/q764424567/article/details/1…...

视频记录历史播放位置效果
简介 每次打开页面视频从上一次的播放位置开始播放 利用lodash库做节流 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…...

Request Response
简介 Request(请求) & Response(响应) 浏览器会向服务器发送请求数据,服务器也需要返回响应数据给浏览器,因此我们需要设置对应的类来代表请求数据和响应数据,且Servlet中的service方法就需…...

How to convert .py to .ipynb in Ubuntu 22.04
How to convert .py to .ipynb in Ubuntu 22.04 jupyter nbconvertp2j 最近看到大家在用jupyter notebook,我也试了一下,感觉还不错,不过,也遇到了一些问题,比方说,我有堆的.py文件,如果要一个一…...

【prometheus-operator】k8s监控集群外redis
1、部署exporter GitHub - oliver006/redis_exporter: Prometheus Exporter for Redis Metrics. Supports Redis 2.x, 3.x, 4.x, 5.x, 6.x, and 7.x redis_exporter-v1.57.0.linux-386.tar.gz # 解压 tar -zxvf redis_exporter-v1.57.0.linux-386.tar.gz # 启动 nohup ./redi…...

MySQL索引(图文并茂)
目录 一、索引的概念 二、索引的作用 三、创建索引的原则依据 四、索引的分类和创建 1、索引的分类 2、索引的创建 2.1 普通索引 2.1.1 直接创建索引 2.1.2 修改表方式创建 2.1.3 创建表的时候指定索引 2.2 唯一索引 2.2.1 直接创建唯一索引 2.2.2 修改表方式创建 …...

Redis 教程系列之Redis PHP 使用 Redis(十二)
PHP 使用 Redis 安装 开始在 PHP 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP。 接下来让我们安装 PHP redis 驱动:下载地址为:https://github.com/phpredis/phpredis/releases。 P…...

JavaScript语法和数据类型
基础 JavaScript 借鉴了 Java 的大部分语法,但同时也受到 Awk、Perl 和 Python 的影响。 JavaScript 是区分大小写的,并使用 Unicode 字符集。举个例子,可以将单词 Frh(在德语中意思是“早”)用作变量名。 var Frh …...

解决华为云服务器宝塔面板无法访问显示“此站点的连接不安全”问题
已经配置好安全组以及初始化宝塔面板,还是无法访问镜像管理页面,提示此站点的连接不安全。 解决方案 将地址https改为http即可进入。 成功登录后,开启面板SSL即可。...

【Python】 Python脚本实现某平台视频流下载
亲爱的玛丽 我会想念着你 我是多么的讨厌分离 加油站旁的海鸥 机场路上的松柏 挥挥手眼泪就落下来 我多想和那些光阴永远住下来 我不能 我不能 🎵 赵雷《玛丽》 在视频内容的分发上,m3u8格式的视频流越来越常见。它将视频切分成多个…...

LangChain核心模块 Model I/O——Prompts
Prompts 语言模型的提示是用户提供的一组指令或输入,用于指导模型的响应,帮助模型理解上下文并生成相关且连贯的基于语言的输出,例如回答问题、完成句子或参与某项活动。对话。 关键问题 如何在LLMs中使用少量示例(few-shot examples)—…...

关于Docker守护程序未运行导致的错误
01 在启动Docker之前,确保你已经安装了Docker并且Docker服务是运行的。以下是一些步骤可以帮助你解决这个问题: 首先,确保Docker已经正确安装在你的系统上。你可以通过运行以下命令来检查Docker是否已安装: docker --version如果…...

Unity中关于SendMessage方法
在Unity中,SendMessage 方法用于在游戏对象及其所有子对象上调用指定名称的方法。这种方法可以用于在不需要知道接收方的确切类型的情况下,向游戏对象发送消息。 基本语法如下: void SendMessage(string methodName, object value null, S…...

C++ 修饰符类型
C 允许在 char、int 和 double 数据类型前放置修饰符。修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求。 下面列出了数据类型修饰符: signedunsignedlongshort 修饰符 signed、unsigned、long 和 short 可应用于整型,signed …...

生产计划数据模型,实现能源企业数字化高效管理
随着市场经济的快速发展,能源企业在经济发展中的地位也随之提高。但由于能源企业在生产计划经济管理上存在指标不平衡、市场观念落后和环保意识欠缺等问题,导致企业的经济效益降低。目前,提高企业的生产计划管理是改善能源企业现状最有利的途…...

【chemistry 2】蛋白质的共价结构
🌞欢迎来到生物化学的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 📆首发时间:🌹2024年3月26日&…...

什么是 UI ?设计师为你解答
用户界面(UI)它是人与机器互动的载体,也是用户体验(UX)一个组成部分。用户界面由视觉设计 (即传达产品的外观和感觉) 和交互设计 (即元素的功能和逻辑组织) 两部分组成。用户界面设计的目标是创建一个用户界面…...

pytest框架入门及环境配置
一、简介 pytest是python的专用测试框架,由于设计的巧妙性,使得pytest使用起来更加的灵活简单。pytest框架有着强大的功能,拥有很多的第三方插件,还具有良好的扩展性,可以与其他的框架进行结合使用。 pytest的优点: 1、可以与一些调度工具结合,实现持续集成 2、与allu…...

unity 2d范围检测:怪物检测范围
需求 实现怪物有一定范围的侦测能力,当目标进入侦测范围内后,自动追踪目标[使用unity navmash实现],当子弹进入时,销毁子弹,播放怪物死亡动画以及其他事件。 实现方案 实现怪物在主角靠近一定范围内时发动攻击的功能…...

外包干了10天,技术倒退明显
先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…...

后端常问面经之Java基础
基本数据类型 Java中有8种基本数据类型: 6种数字类型: 4种整数型:byte、short、int、long 2种浮点型:float、double 1种字符类型:char 1种布尔类型:boolean 数据类型的默认值以及所占空间如下&#x…...

I.MX6ULL_Linux_驱动篇(58)linux IIO驱动
工业场合里面也有大量的模拟量和数字量之间的转换,也就是我们常说的 ADC 和 DAC。而且随着手机、物联网、工业物联网和可穿戴设备的爆发,传感器的需求只持续增强。比如手机或者手环里面的加速度计、光传感器、陀螺仪、气压计、磁力计等,这些传…...

两个包装类型变量的比较问题
问题: 由于受包装类的自动装箱和拆箱的影响,一直以为直接用直接比较两个包装类的大小是否相等就可以,惭愧。比如: Integer a11; Integer b11; System.out.println(ab); 运行结果是 true,似乎没啥问题,但…...

Qt/C++通用跨平台Onvif工具/支持海康大华宇视华为天地伟业等/云台控制/预置位管理/工程调试利器
一、前言 在安防视频监控行业,Onvif作为国际标准,几乎主要的厂商都支持,不仅包含了国内的厂商,也包括主要的国际厂商,由于有了这个标准的存在,使得不同设备不同安防平台之间,能够接入各个厂家的…...

js 在for循环中有setTimeout 时,不执行等待,解决方法
原因:由于setTimeout是异步的,for循环是同步的,所以你的循环会立即继续到下一个迭代,而不会等待setTimeout完成。这意味着所有setTimeout调用几乎会同时开始等待2秒,而不是一个接一个地等待,因此程序出错。…...

机械硬盘与固态硬盘的区别
硬盘中包含机械硬盘、固态硬盘和混合硬盘,那机械硬盘与固态硬盘之间有什么区别呢? 机械硬盘就是传统的普通硬盘,主要采取的存储方式是机械式存储,通过磁头在盘片上进行读写数据;固态硬盘采取的方式则是电子存储&#x…...