Ladybug全景视频显示系统开发

 时间:2024-10-14 05:38:03

1、1Ladybug全景视频显示系统主要模块设计 在获取Ladybug3全景相机拍摄的全景视频流文件以后,需要对流文件进行操作,提取并显示全景视频。本小节主要介绍Ladybug全景视频显示系统的主要模块及其功能。

Ladybug全景视频显示系统开发

2、2 Ladybug全景视频显示系统流程 本系统可以分为两个部分:一是初始化阶段,二是全景显示阶段。在初始化阶段,系统加载全景视频流文件,读取存储在头文件中的视频信息,并据此初始化Ladybug上下文环境,为下阶段操作做准备;在显示阶段,从视频文件中提取指定帧,然后将其映射在球面纹理上,根据指定视角对球面纹理进行拍照,最后显示拍摄到的图像。

Ladybug全景视频显示系统开发

3、3初始化阶段 本系统采用Ladybug专业全景相机拍摄全景视频,Ladybug全景相机拍摄得到的Ladybug图像被存储在一组流文件中,每个流文件的存储上限为2GB。流文件的名字为:[基本名]-[流序号].pgr。流文件包括基本名、流序号两部分;其中,基本名可由用户或应用程序定义;而流序号是由Ladybug自动生成的,用6位数字表示,从'000000'开始,每增加一个流文件,流序号加1。例如,流文件的基本名为“myStream”,则生成的流文件的名字依次为:myStream-000000.pgrmyStream-000001.pgrmyStream-000002.pgr......每个Ladybug流包括一组流文件,流文件用于存储Ladybug图像。每个Ladybug流由一个或多个具有相同基本名的流文件构成。每一个流文件包含一个或多个Ladybug图像。根据相机的配置情况,Ladybug图像可以是压缩的JPEG图像数据,也可以是原始图像数据,本系统使用JPEG压缩格式来存储每一帧图像数据。由Ladybug3全景相机得到的的全景视频流文件格式。

Ladybug全景视频显示系统开发

4、4 全景显示阶段 Ladybug上下文环境对象配置后,即可进行全景图片到虚拟球面的纹理映射。首 先,设 置 图 像 输 出 类 型 为LADYBUG_SPHERICAL。这样,在显示时,每一帧全景图像会被映射到一个虚拟球面上。其次,全景图像数据到虚拟球面的映射。对于每一帧的Ladybug图像,应将6个摄像头所拍摄的6幅图像映射到一个虚拟球上,采用ladybugGet3dMap方法实现。 在映射之后,使用一个虚拟相机对虚拟球面的特定方位进行拍摄,并将相机拍摄所得的图像投影到屏幕上。将虚拟相机置于虚拟球面的中心,通过旋转相机对虚拟球面各个方位进行拍摄,可获取所需的投影图像。为了实现高度沉浸感的全景漫游显示,相机的拍摄方位、拍摄范围的设置至关重要,虚拟相机拍摄方位、范围示意图如图3-3所示,O点为相机位置,ABCD为投影平面,通过设定投影平面的大小可以造成不同的视觉沉浸感。根据相机的位置、拍摄方位和范围以及窗口的尺寸等信息即可计算出虚拟相机的每个参数。

Ladybug全景视频显示系统开发

5、1 Ladybug上下文环境配置 系统在读取视频文件之后,需要对Ladybug上下文环境进行初始化,正确的初始化是保证全景视频正确显示的基础。流文件的Ladybug上下文环境对象的配置过程如下:(1)根据流文件所包含的信息对Ladybug上下文环境对象进行初始化。(2)根据流文件的图像数据格式配置Ladybug上下文环境对象的颜色处理方式。由于流文件中的数据采用JPEG方式存储;对于每一帧Ladybug图像,依次存储每一个摄像头所拍摄的图像数据;对于每个摄像头拍摄的图像数据分为4个Bayer通道(Green、Red、Blue、Green)分别进行存储。因此,确定流文件的颜色处理方式为:对图像数据进行下采样,将每个像素点的4个Bayer像素值转换为一个颜色值进行存储。(3)配置Ladybug上下文环境对象的AlphaMask。全景视频的每一帧均由6个摄像头所拍摄的图片拼接而成,为了使6幅图像拼接后得到较好的效果,引入AlphaMask。AlphaMask定义了对于每一个像素点,待拼接的相邻两幅图像的权重。初始化AlphaMask,并使用它配置上下文环境对象。对于AlphaMask分辨率的设置,由于颜色处理方式为对图像数据进行下采样,因此,AlphaMask的分辨率应为每帧图像分辨率的一半。另外,Ladybug图像显示时默认不使用AlphaMask,因此需调用LadybugSetAlphaMask方法进行设置。

Ladybug全景视频显示系统开发
Ladybug全景视频显示系统开发

6、2Ladybug全景图像漫游显示 为实现全景视频的漫游显示,首先,需获取某一帧的全景图像,获取图像的存储类型为LadybugImage的结构体变量。为了显示该帧全景图像,必须将图像数据存储到一个RGB32型的缓冲区中,调用ladybugConvertImage方法可以将LadybugImage结构体的图像数据转换并存储到一个RGB32缓冲区中。然后,再将缓冲区中的图像数据更新到显卡中,此时,再调用ladybugDisplayImage方法即可在屏幕中显示虚拟相机所拍摄的图像画面。 本系统采用GLUT应用程序框架实现,因此,虚拟相机参数以及GLUT投影矩阵等的设置,在glutReshapeFunc函数的回调函数中加以实现。在glutIdleFunc函数的回调函数中实现获取下一帧图像数据并存储到缓冲区,以及更新到显卡等功能;在glutDisplayFunc函数的回调函数中实现投影图像的显示;利用glutTimeerFunc函数实现间隔特定时间的帧号加1功能。 对于全景视频的漫游是通过鼠标操作实现交互,通过注册glutMouseFunc和glutMotionFunc等函数的回调函数,处理鼠标事件。根据鼠标移动、屏幕分辨率等信息可计算出水平和垂直方向旋转的角度,根据这些角度信息便可重新计算视场中心轴、向上方向等各项信息来可实现图像的旋转,最后将旋转方向后的新图像显示在窗口,即完成了全景视频的漫游显示。

Ladybug全景视频显示系统开发

7、3 系统实验结果 本系统目标是实现Ladybug全景视频流文件在PC机上的显示和漫游,图4-1为视角方向变换的效果图。由于PC屏幕大小对视角及沉浸感有较大影响,因此需要对视角大小进行调整来达到更加强烈的沉浸感,图4-2为视角大小切换的效果图

Ladybug全景视频显示系统开发
  • 草图大师(su)怎么显示分类器?
  • 犀牛在enscape修改不了材质
  • SketchUp草图大师如何取消后边线显示
  • Rhino犀牛如何导出线稿图?
  • 犀牛6渲染网格品质配置为粗糙较快
  • 热门搜索
    家乡的手抄报 知法守法手抄报 中秋节手抄报的内容 我爱我校手抄报内容 手抄报花边图案大全 放飞科技梦想手抄报 文明从我做起手抄报 春节见闻手抄报 小学生健康知识手抄报 廉洁手抄报图片