基于Android的全景图像拼接软件的设计与实现毕业论文
2021-11-01 22:17:32
摘 要
全景图像,是一种能把整个景色以360度全方位的视角呈现给用户的图像,使传统图像突破视角的限制。近些年来,随着移动通信技术的发展,智能手机作为一个方便快捷且功能强大的实用工具在人群中日益普及,Android作为一个开源且高效的操作系统,占有极大的比重。在Android系统上实现一个全景图像拼接软件,拥有比较大的现实意义。
本文研究的全景图像拼接软件采用JAVA动态开发技术,在保障数据安全的前提下、尽可能的做到轻量化和高效化。设计并实现了一个功能较为完善的基于Android的全景图像拼接软件。本系统经过我的反复测试,用户操作简便,实际运行效果稳定;可以说是实现了一个功能比较全面、实用性较为良好、安全性比较高,并具有良好的可扩展性和可维护性的Android端app。
通过使用基于Android的全景图像拼接软件,使全景图像拼接工作高效化、科学化、规范化。
关键字:全景图像拼接; Android;JAVA;
abstract
Panoramic image is a kind of image that can present the whole scene to the user with 360 degree angle of view, making the traditional image break through the limitation of angle of view. In recent years, along with the technical development trend of mobile communication technology, smart phones are becoming more and more popular among the group as a convenient, convenient and full-featured utility program. Android system is an open source system and a highly efficient computer operating system , Occupying a large proportion.It has great practical significance to implement a panoramic image mosaic software on Android system.
The panoramic image mosaic software studied in this paper adopts Java dynamic development technology, and achieves lightweight and high efficiency as much as possible on the premise of data security. A panoramic image mosaic software based on Android is designed and implemented. After my repeated tests, the system is easy to operate and stable in actual operation; it can be said that it has realized an android app with comprehensive functions, good practicability, high security, and good scalability and maintainability.
According to the application, according to Android's panoramic digital image processing mobile phone software, panoramic digital image processing is highly efficient, scientific research, and standardized.
Keywords: panoramic image mosaic; Android; Java;
目录
摘要 2
目录 4
1 绪论 6
1.1 研究背景和意义 6
1.2 国内外研究状况 6
2 相关的理论和技术 8
2.1 Java技术介绍 8
2.1.1 Java技术应用 8
2.2 开发技术 9
2.2.1 Android 9
2.2.2 Android应用程序 9
2.3全景图像拼接技术 10
2.3.1技术简介 10
2.3.2 SIFT 特征点检测 10
3 需求分析 12
3.1 功能需求分析 12
3.2 非功能性能需求分析 12
3.2.1 实用性分析 12
3.2.2 安全分析 13
3.3 可行性分析 13
3.3.1 技术上的可行性 13
3.3.2 经济上的可行性 13
3.3.3 操作上的可行性 13
4 系统设计 14
4.1 系统框架设计 14
4.1.1 系统功能图 14
4.2 系统流程设计 15
4.2.1 系统总体流程 15
4.2.4 添加信息流程 15
4.3 系统UML用例分析 16
4.3.2 用户用例图 16
5 系统实现 18
5.1 用户界面 18
5.2 相机界面 18
5.3 选择图片信息图 19
5.4 图像拼接信息图 19
5.5 系统功能实现 20
6 系统测试 22
6.1 测试目的 22
6.2 测试方法 22
6.3 功能测试 23
6.4 性能测试 25
结论 26
致谢 28
参考文献 29
1 绪论
1.1 研究背景和意义
全景(panorama),就是说用一种360度的方式,把整个图片完全呈现给用户,让用户获得全方位感受的一种图像。人眼所能看到的图像受视角的限制,而全景图像,则是指把用各种相机、手机等途径得到的某个场景的一系列图像,通过在程序内部,通过图像拼接等技术进一步进行图片的拼合,把因拍摄角度受限而拍摄成几张的图像合成为一张完整的图像,从而给用户360度的全角度全方位视觉感受。
基于平面静态图像的虚拟全景图像技术作为比较初级的虚拟现实技术,已经在pc平台上取得了很大的发展。而这几年,智能手机作为一个独立,简单,快捷的工具,已经普及到了人们的日常生活中。而智能手机的摄像头分辨率不断提升,硬件的性能日益强大,在智能手机上实现全景图像的拍摄和拼接成为了比起pc机来说更为方便的选择。Android 作为一个性能优秀并且开源的操作系统,结合手机本身方便携带的特点,基于Android的全景图像拼接软件的开发,能够解决目前智能手机拍摄视角太小的问题,带给用户更好的体验。
1.2 国内外研究状况
近年来,来自世界各地的许多专家学者围绕全景图像拼接紧密开展了一系列科学研究工作。对于自动图像拼接(AutoStitch),有一些相对完整的商业手机软件,包括Adobe PhotoShop的特殊拼接工具,Microsoft的ICE(图像合成编辑器)和OpenCV的Stitcher类。但是,他们通常会选择两个必须考虑的假设:一个是规定图像重叠的区域可以与平面图相似;第二个条件是图像重叠。就是说,每次拍摄时,相机的光心必须是接近重合的,否则会出现严重的不清楚或者重合的情况。根据不同的分类观点,全景图像拼接技术可以分为不同的类别。由于图像匹配在拼接后立即阐明了全景图像的质量,因此图像拼接的技术分类通常基于整个拼接过程中使用的图像匹配算法。根据拼接时图像匹配算法的不同,全景图像拼接在技术上分为两类:与区域有关的拼接算法和与特征有关的拼接算法。在国际上,专家教授Richard Szeliski于1996年根据一种运动的全景图像设计了一个实体模型。三维建模根据图像的频域特征,并根据两幅图像,使用LM(Levenberg-Marquardt)算法傅立叶变换(FFT)以测量两个图像之间的电平移动功率谱,执行几何图像的变换。实体模型具有收敛速度更快的优点,并且获得的全景图像的质量也更高。此外,物理模型与特定情况无关,具有普遍意义。因此,该方法是用于全景图像拼接的经典算法。在此基础上,马修·布朗等人。提出了一种不会改变特征的自动全景图像拼接算法; Julio Zaragoza等人在CVPR会议上提出了一种适用于DLT(直接线性变换)的图像拼接算法。在中国,全景图像拼接也有一些结果。为了完成全景图拼凑而成的多幅图像的自动分类,赵万金等人提出了一种基于位置相关方法的图像编码序列自动分类算法。陈月和张晓宇等人则分别提出了一种基于尺度不变特征变换特征(也就是SIFT特征)的矢量图快速图像拼接方法和一种基于经验模态分解的图像拼接算法,综上所述,全景图像拼接涉及多学科的跨学科专业知识,包括电子光学,几何学和图像处理。现阶段,研究仍处于快速发展阶段。一些研究紧密围绕图像拼接的原始核心技术(包括图像配准和图像融合)进行探索性和创新性研究,而另一些研究则进行了技术研究,包括图像拼接质量审查,实时视频图像拼接优化计算。特殊应用的方法。
2 相关的理论和技术
2.1 Java技术介绍
Java是一种电子计算机编程语言,由于JAVA具有跨平台的特性和面向对象的模式,拥有了良好的泛用性,目前已经广泛用于各种应用程序开发和移动端(尤其是智能手机)应用程序的开发。 Java语言不同于其他通用汇编语言和书面语言,JAVA语言在实际的应用过程中先是将源代码写入字节码,然后在执行字节码的时候,是根据来自不同平台的vm虚拟机来表达并执行的,这样就完成了跨平台的“一次编写,随意运行”功能。