




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十七届广东省“高校杯”软件作品设计(本科组)竞赛 全景图合成引擎 2 目录目录 1 引言引言3 1.1 项目简要介绍.3 1.2 项目背景.3 1.3 项目创新点.4 1.4 定义.4 2 任务概述任务概述5 2.1 目标.5 2.2 运行环境.5 3 需求规定需求规定5 3.1 功能需求.5 3.2 性能需求.7 3.2.1 数据精确度7 3.2.2 对时间特性的要求7 4 总体设计总体设计7 4.1 基本设计概念和处理流程.7 4.2 总体结构.10 5 接口设计接口设计11 5.1 外部接口.11 5.2 内部接口.13 6 数据结构设计数据结构设计15 6.1 逻辑结构设计.15 6.2 数据结构与程序的关系.15 7 使用说明使用说明16 7.1 安装与初始化.16 7.2 软件主要功能的使用说明.17 Comment U1: 可以考虑放到软件 创新点一起论述 Comment U2: 这是全景图合成引 擎的应用背景,可以再详尽点论 述,许多人对这领域不是很了解, 可以帮助理解“软件的用途” 3 1 引言引言 1.1 软件简要介绍软件简要介绍 三维空间模型由于增加了表现的真实感,因此成为越来越多企业作为解决 问题的一种方案。三维模型的建立有几种类型: 一、使用 3DMax 等专业的建模软件。这类型的软件适用于模型复杂度高, 纹理细节质量高的情况,并且生成的模型文件大小比较大,不适合于基于 Web 的应用环境。 二、VRML 语言建模。VRML 是一种虚拟现实造型语言。它的文件结构基 本包括文件头,注释,节点以及其域,事件和路由。VRML 生产的文件是文本 叙述文件,利用 VRML 语言可以制造出三维虚拟场景来。VRML 完成交互功能 有使用检测器节点,使用外部编程接口(EAI),使用脚本语言三种方式。VRML 实现动态图象是通过检测器节点来完成的,本例就用到检测器节点。VRML 的 虚拟物体,可以用两种方式实现,即用 VRML 语言编写或用其他软件工具生成。 对于采用 VRML 语言编程,利用的是 VRML 的节点技术来定义虚拟场景的对 象,例如颜色以及图形的移动等。由于模型文件为纯文本格式,适合 HTTP 协 议的传输,而且一般生成的模型文件都比较小,成为 Internet 上三维建模的主 角。然而这种类型的缺点是需要比较高的专业知识,使用的门槛高,成为实际 应用的一大障碍。 三、应用全景图模型。全景图的一大特点就是本质上只是一张图片而已, 因此可以不改变当前 Web 的使用模式的情况下很好地完成建模的任务。这方面 的具体应用有 QuickTime、Flash、JavaApplet。这三种应用的手段都完全适用于 Web 环境,而且只需要专门制作全景图,即可达到建模的目的。对于制作者来 说操作简单,不需要很多高深的知识。尽管不能实现真正 3D 空间建模,但对 于一些小型的应用需求来说就已经足够了。 而这个以全景图合成引擎为基本核心的软件正是用于全景图的合成。当前 专业的全景图拍摄工具价钱相当昂贵,对于小企业和个人来说几乎是不可能购 买的,在这样的情形下使用一般的相机通过多拍,然后利用软件的方法进行合 成就从一定程度上满足了这部分用户的需求。 该作品主要使用的是流分析比较的方法来解决合成全景图中最大的计算重 叠部分的难题的。算法采用逐行扫描比较计算差值,然后取得最小值作为计算 结果。在融合处理部分,采用了目前比较流行的渐进式的融合方法,基本达到 无缝拼接的要求。 1.2 项目背景项目背景 对于当前 VR 技术的应用范围越来越广,应用的领域包括军事,教育,土 木建筑等。 在实际应用中实现的技术方法有: Comment U3: 该部分内容可以放 在技术实现部分论述 4 一、使用 VRML 建模。VRML 是 Virtual Reality Modeling Language 的缩写, 意为“虚拟现实造型语言” ,它是用于三维环境描述的一系列规范之一,定义与 多信息相关联的三维世界的布局和内容。VRML 把交互式三维能力带入了万维 网,它是一种可以发布 3D 网页的跨平台语言。例如游戏、工程和科学可视化、 教育和建筑,诸如此类的典型项目仅靠基于网页的文本和图像是不够的,而需 要增强交互性、动态效果连续感以及用户的参与探索,这正是 VRML 的目标。 二、360 度全景图。这种技术和 VRML 建模不同,本质上只是按某种规律 公式去显示图片。通过将景物的 360 度环绕景色集中在一张图中。实现的操作 手段有硬件法和软件法两种。硬件法就是使用专门的相机一次性拍摄得到 360 度环绕的景色,这种方法操作简单,缺点是费用开支昂贵。软件法就是使用一 般的相机通过旋转多次拍摄的方法得到 360 度环绕的景色,然后再利用电脑的 软件进行后期的处理合成,这种方法操作比较复杂,但不需要额外的费用开支。 全景图的应用属于 VR 的一种,可以应用于景点介绍,交通导航,房地产物业 展示等。而在合成全景图技术方面,关于图象拼接匹配的算法主要有三种: 一、基于流的方法:也叫基于面积的方法该方法通过比较 2 幅图像亮度 (或颜色)差异,并使之最小化来寻找最佳匹配点该方法的缺点是计算量明显 偏大 二、基于特征的方法:该方法的主要思想是从一幅图像中提取一定的特征, 如:点、线、边缘等,并以此特征为匹配模板,在相邻图像中搜索该方法可 以提高计算速度,但是提取合适的图像特征比较困难 三、基于相位的方法:该方法利用傅立叶变换、小波变换等先对图像进行 变换,再利用变换后图像的某些特征进行匹配如果采集图像时存在空间上的 局部变化,则方法误差较大 目前比较流行的是 Sift 拼接,但考虑到合成基本上属于后期的处理工作, 在时间上比较充裕,为了得到效果更好的全景图我们采用了基于流的方法。 1.3 项目创新点项目创新点 该项目的创新点主要有: 在操作上,作品从用户的角度出发,尽可能的简化了操作过程,同时为了 使参数设置更加人性化默认情况下提供了缺省的值,整个过程几乎是傻瓜式操 作,降低了使用该软件的门槛。 在界面美工方面,随着 WebUI 的普及,以网页的表达形式作为程序的界面 使用户更加熟悉,显得更加友好。使用 WebUI 的另一个考虑是在保持原有的必 须元素不变的情况下,有一定能力的用户自己自行修改界面文件,做出一个真 正属于用户自己的界面。 在输入和输出图片的处理上,考虑到该软件主要是合成全景图的,并不作 为图片编辑处理的用途,因此限制了输入和输出的图片格式为 24 位的 BMP 图。 所以选择 BMP 格式是因为这种图片格式最常见,并且处理方便,操作简单, 得到几乎所有设备和其他软件的支持。用户如果需要其他格式的图片的,应该 在得到最后的 BMP 全景图之后借助第三方工具进行转换。 在软件的设计上,尽量地简化操作,为用户节省宝贵的系统资源。同时对 软件在运行过程中出现的错误进行了处理,做到能补救的补救,不能补救的给 Comment U4: 第三点 Comment U5: 这个应该放在第一第一 点点重点论述,论述的方面要包括: 1 如何在算法复杂度和应用简化 这两点间做权衡(其实就是论述 其应用实用性) ,因为你们做的 这个软件的特点就是如何在复杂 性与应用之间做折衷 2.作为“全景图合成引擎”的重 要性(例如:如何应用在全景图 合成软件中) Comment U6: 第二点 5 出必要的错误信息提示。 一、Web UI。鉴于以往程序开发中界面设计的复杂和修改的麻烦,而 Web 的普遍推广和应用,越来越多的人对 Web 元素界面的接受和喜爱,因此项目采 用了 HTML + CSS + JavaScript 的技术组合设计程序的界面。同时也为用户自定 义编辑自己的界面提供了可能。 二、使用的技术有一定的理论深度。全景图的合成属于计算机图形学的内 容,在该引擎的核心算法中,参考了大量的国内外专业性的论文,选取了难度 比较低的算法,既容易理解又容易实现,效果也不错,同时需要以时间作为代 价是可以接受的。 三、扩展空间大。该项目在图片处理上为了集中解决合成的算法因而只考 虑对 24 位的 BMP 图片的处理,可以很容易就扩展到其他格式的图片。另外如 果将界面的 URL 地址改为 Internet 地址的话还可以实现自动动态升级软件。 1.4 定义定义 UI (User Interface) :用户接口,就是使用者和系统之间交互的接口。 VR(Virtual Reality) :虚拟现实,对真实或虚构系统的计算机仿真,可令用户在 仿真系统上操作并呈现真实效果。 全景图 :包含了景物全部元素的图片。通常有 360 圆柱全景图、球面全景图和 立方体全景图。 2 软件概述软件概述 2.1 目标目标 该项目的开发意图是: 一、针对当前在全景图合成制作方面的软件种类数量少,单一,因此希望 可以开发出一个用于合成全景图的引擎的简单实例,并以此为基础去开发其他 功能更齐全,效果更好的全景图合成软件。 二、开发出一个基本能够使用的全景图合成软件。为了检验合成引擎是否 工作正常,需要开发一个使用该引擎的软件来验证。 2.2 运行环境运行环境 最低运行配置: 操作系统:Windows 2000 物理内存:128MB 硬盘空间:800MB CPU:566MHz 6 3 软件规格软件规格 3.1 功能需求功能需求 名称、标识符CalcFocus 功能描述计算相机的焦距 优先级普通 输入所有图片的以及两两图片之间重叠部分的宽度 操作序列焦距 = (所有图片的宽度总和 两两图片之间重叠部分的 宽度) / (2 * PI) 输出相机的焦距 补充说明之前必须已经计算得到了两两图片之间重叠部分的宽度 名称、标识符Projection 功能描述将平面图片投影到柱面 优先级普通 输入一张平面图片 操作序列根据坐标变换公式将平面图片投影到柱面 输出一张柱面图片 补充说明之前必须已经计算得到相机的焦距 名称、标识符Join 功能描述拼接两张图片 优先级普通 输入两张图片 操作序列根据两张图片的重叠部分宽度采用渐变的方法拼接两张图 片 输出一张拼接后的图片 补充说明之前必须已经计算得到了这两图片之间重叠部分的宽度 名称、标识符CalcOffset 功能描述计算两张图片的重叠部分 优先级普通 输入两张图片 操作序列逐行扫描计算差值,取最小的作为结果 输出两张图片的重叠部分的宽度 补充说明两张图片的高度应该是一致的,格式必须为 BMP 格式 7 名称、标识符LoadFromFile 功能描述加载图片到内存中 优先级普通 输入要加载图片的路径 操作序列打开文件,分析是否为 24Bit 的位图,将文件内容复制到内 存中 输出指向内存中图片信息的指针 补充说明要加载的图片必须存在,否则将输出 null 名称、标识符SaveToFile 功能描述将图片保存到文件 优先级普通 输入要保存图片到的路径 操作序列打开或者建立文件,将内存中的图片内容复制到文件中 输出一个 24Bit 的位图文件 补充说明必须确保有相应文件的 Create 和 Write 权限 3.2 性能需求性能需求 3.2.1 数据精确度数据精确度 一、图片象素精度使用 24Bits(=3Bytes)大小表示。 二、图片大小精确到整数位 三、对数据溢出不做特殊的处理 四、界面元素的定位精确到 1 象素 3.2.2 对时间特性的要求对时间特性的要求 在时间的处理上,主要考虑两个时间因素: 一、界面响应时间。利用 MFC 的消息处理机制对用户的不同动作产生的 不同消息进行响应,可以实现实时响应。根据软件工程的实践统计,人机交互 的 0.5 秒响应时间是极限。因此凡是响应时间超过 0.5 秒的都应该开多线程来处 理,并及时通知用户处理的进度。 二、处理响应时间。这个响应时间跟参数有关,用户可以根据实际情况通 过设置参数来调整处理的响应时间。一般情况下的处理响应时间应该控制在 1 分钟之内。 8 4 总体设计总体设计 4.1 基本设计概念和处理流程基本设计概念和处理流程 设计的基本概念是用户通过 UI 设置参数,包括扫描的阀值,素材图片路径, 保存结果的路径等,然后合成引擎加载图片素材并根据扫描的阀值来计算重叠 部分,最后将合成的结果保存在用户指定的文件中。 下面是 DFD 数据流图 9 10 4.2 总体结构总体结构 软件使用的是 VC 的 MFC 框架,基本的结构如下图所示: Comment j7: 我是用 Rose 生成的 逻辑图,是不是说不需要标注 +m_MgrThread 之类的成员变量 名,还是说排版整齐点?具体的 类图在“外部接口”部分,也是 用 Rose 生成的 Comment U8: 建议类图都画工整 点(时间充足的话) 11 根据框架结构可以相应地得到整个软件包的视图: CPanoramaView 作为与用户直接交互的视图类,不执行任何实质性的操作, 它通过 CManageThread 得到一个线程来处理复杂的任务,由于使用的是 WebUI,需要通过 COM 订阅界面元素的消息,这个任务由 CComMgr 来完成。 各个模块的功能为: CPanoEngine(合成引擎) ,负责执行具体的合成全景图操作。m_Progress 表示当前处理的进度,m_ResultBmp 保存最终合成结果的图片,m_arrayBmp 记 录了所有的素材图片信,m_hUIWnd 为 UI 的窗口句柄。当启动 MainProc 函数 后 CPanoEngine 按照上面提到的流程开始按顺序处理,期间不停地向 UI 发送消 12 息,表明目前处理到的进度和是否有异常等情况。 CManageThread(线程管理) ,负责对线程执行封装了的 API 调用,包括申 请,启动,暂停,终止,放弃,恢复等基本操作。在整个流程中这个模块只负 责抽象的线程操作,具有一定的通用性。 CComMgr(COM 管理) ,负责对界面 HTML 元素的属性的读和写,并进 行按钮单击事件的订阅和响应。对 COM 消息的响应使用的是 CSingk 来接收, 然后转发送消息给 UI 窗口,本身也不执行任何实质性的操作。 5 接口设计接口设计 5.1 外部接口外部接口 在外部接口上主要是 CPanoEngine 的,其他提供的仅仅是处理的框架而已。 由于这个合成引擎并不成熟,因此没有封装为真正意义上的组件,不支持二进 制代码的重用,接口上只支持源代码级别上的重用。 当该引擎使用其他格式的图片时,处理图片的类应该从下面的 CPicture 中 派生并且实现所有的虚函数。 成员变量: m_strName : 图片文件的路径 m_dwLastError : 最后一次操作出错的代码,0 表示没有出错 函数: CPicture() : 构造函数,应该初始化成员变量 m_dwLastError 为 0 Clone() : 复制克隆图片到 pPicture 中 13 Create() : 建立大小为 dwWidth * dwHeight 的象素值为 0 的图片 Empty() : 将图片所有象素值置为 0 GetHeight() : 返回图片的高度,单位为象素 GetWidth() : 返回图片的宽度,单位为象素 GetPixel() : 返回点(dwX, dwY)处的象素值 GetSubBmp() : 得到原图片中 rectSub 区域的子图保存在 bmpSave 中 IsReady() : 返回图片的状态,0 表示正常已加载 LoadFromFile() : 从路径 strFileName 中加载图片信息到内存中 LockData() : 得到指向图片象素信息的数据块地址并锁定,由 ppVoid 返回 SaveToFile() : 保存图片内容到文件 strFileName 中 SetPixel() : 设置点(dwX, dwY)处的象素值为 crColor Unload() : 卸载图片 UnloadData() : 解除图片象素信息的琐定 Draw() : 在 pDC 的(nX,nY)处,大小为(nWidth, hHeight)的区域中绘画图片 中 下面是主要模块的类图: 14 这个类实现了合成引擎的一般操作,其中 Reset, IsBmpReady, ReLoad, AddFile, ToString, SetUIWnd, SendProgress, SetParameters 这几个函数属于辅助函 数。起到管理素材图片列表的作用。AdjustPixel, AdjustOffset, Switch, CalcOffset, Join, JoinAll, ProjectionAll, Projection, CalcFocus, Fast, CalcCoverOffset 为实现合 成实质性操作的函数。MainProc 函数位实施合成操作的函数,可以作为线程启 动。 5.2 内部接口内部接口 软件内部主要可以分为 4 个部分,各个部分之间通过消息与视图窗口通信: 15 一、视图窗口,进行系统消息与自定义消息的处理。要处理的消息有: WM_USER_FILE_OPEN :点击“添加图片”按钮 WM_USER_FILE_CLEAR :点击“清空图片”按钮 WM_USER_PROCESS_CANCEL :点击“取消”按钮 WM_USER_FILE_DEL :点击“删除图片”按钮 WM_USER_APP_EXIT :点击“退出”按钮 WM_USER_TAG_GOTO1FROM2 :点击“参数设置”的“上一步”按钮 WM_USER_TAG_GOTO2FROM1 :点击“导入”的“下一步”按钮 WM_USER_TAG_GOTO3FROM2 :点击“参数设置”的“下一步”按钮 WM_USER_FILE_SAVEFILE :点击“选择”按钮 WM_USER_PROGRESS_CHANGE :Loading 进度改变了 WM_USER_TAG_GOTO4FROM3 :点击“Loading”的“下一步”按钮 WM_USER_APP_COMPLETE :点击“完成”按钮 WM_USER_APP_CONTINUE :点击“继续”按钮 WM_USER_BTN_ENABLED :设置按钮的可用性 WM_USER_TAG_GOTO2FROM3 :点击“Loading”的“上一步”按钮 WM_USER_MAINPROC_FAILED : 合成引擎执行发生错误失败了 WM_USER_MAINPROC_SUCCEEDED :合成引擎执行完成并且成功 其中的对于按钮的消息的处理都需要通过调用 COM 管理器提供的方法来 实现。同时对于界面元素的改变也是通过 COM 管理器的方法来实现的。 最后两个消息将导致调用线程管理器的方法来终止合成引擎的线程。 二、合成引擎,进行全景图合成的实质性操作并附带一些辅助的实现。 1、执行合成操作 2、将合成操作的过程进度结果发消息到视图窗口 3、根据视图的调用调整素材图片列表 4、得到素材图片列表对应的 HTML 列表代码 三、COM 管理,负责进行 COM 对象的通信。 1、订阅和取消订阅界面元素的消息 2、当收到订阅的元素的消息的时候法消息通知视图窗口 3、转跳选项卡 4、向合成引擎得到素材图片列表的 HTML 代码 5、读写界面元素的属性,包括可见性、文本、大小等 四、线程管理、负责进行线程的封装调度。 1、根据视图窗口的调用申请分配线程 2、启动、暂停、恢复、终止已经分配了的线程 3、放弃线程 16 6 数据结构设计数据结构设计 6.1 逻辑结构设计逻辑结构设计 6.2 数据结构与程序的关系数据结构与程序的关系 数据需求 1:表示进度状态的应该包括进度百分比和提示信息。 程序 1: class Progress public: double dblProgress; /表示进度百分比 char Msg255; /表示进度提示信息 ; /* Description : 发送进度消息 Param : 类型为 double 的百分比 Param : 指向保存了提示信息的缓冲区 Return : 总是返回 0 17 */ DWORD CPanoEngine:SendProgress(double dblProgress, char * Msg) m_Progress.dblProgress = dblProgress; strcpy(m_Progress.Msg, Msg); SendMessage(m_hUIWnd, WM_USER_PROGRESS_CHANGE, (WPARAM) return 0; 数据需求 2:能够表示 24bit 位图的信息 typedef struct tagBITMAPFILEHEADER WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; BITMAPFILEHEADER; DWORD CBmp:Create(DWORD dwWidth, DWORD dwHeight) (省略) m_bfhHeader.bfType = BMP_HEADER_MARKER; m_bfhHeader.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + dwDataSize; m_bfhHeader.bfOffBits = sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER); (省略) 7 使用说明使用说明 7.1 安装与初始化安装与初始化 该软件为绿色软件,Copy 转移后可以直接运行。确保运行的时候软件的完整, 应该包括下面三个文件: Panorama.exe 可执行文件 Page.html 界面元素文件 Style.css 界面样式文件 18 同时必须确认系统上已经安装了 Internet Explorer 4.0 或以上版本的浏览器 (Windows98 默认附带安装了 5.0 版本) 7.2 软件主要功能的使用说
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年肿瘤精准医疗临床实践中的数据挖掘与应用研究
- 2025年家庭教育指导服务市场细分领域市场细分与竞争格局
- 2025年工业互联网平台同态加密技术在工业研发设计中的可行性探讨报告
- 2025年智能可穿戴医疗设备在心血管疾病早期筛查与康复中的市场需求与技术创新趋势
- 2025年工业互联网平台量子密钥分发技术产业链上下游协同发展报告
- 2026届江苏省泰兴市第三高级中学高二化学第一学期期末检测模拟试题含答案
- 2025年Python二级考试冲刺押题卷 知识点深度讲解与应用
- 辽宁省抚顺市一中2026届化学高二第一学期期末考试试题含答案
- 2025年公务员考试行测图形推理模拟试卷 解题技巧专项训练
- 2025年初级会计职称考试冲刺押题试卷 财务管理专项训练
- 第三期团课课件乡村振兴中的青春力量-学习2025中央一号文件“千万工程”新阶段部署
- 中国半导体热沉材料行业发展现状、市场前景、投资方向分析报告(智研咨询发布)
- 德育副校长在班主任会议上讲话:7步走轻松打造和谐班级
- 利用绘本进行家庭教育的方法探讨
- 2025年度智慧社区租赁意向协议书
- 《园林绿化工程施工方案》知识培训
- 县院感质控中心工作总结
- 2024年中考模拟试卷英语(陕西卷)
- 助听器与辅听设备基本性能及使用建议的专家共识
- 网络安全和信息化领导小组职责
- 中职班主任管理培训
评论
0/150
提交评论