【微课堂】在数字地球系统中看实时视频(下)
上一期【微课堂】主要介绍如何在数字地球系统中查看实时视频。接着上期内容,本期【微课堂】重点介绍视频投影纹理的可视化方法。
实时视频数据通常独立存在于数字地球系统之外,我们首先需要选择合适的数字视频网络传输协议获取摄像机捕获的信号,通过软解码的方式获取实时视频流,之后将视频流转换为三维渲染引擎支持的图片流格式,并将其设置为纹理对象的数据,最后运用纹理映射技术将纹理对象应用于地形或三维模型表面,从而实现视频图像在三维场景中的实时显示,主要流程如下:
获取并显示视频流程图
实时视频获取与解码
选择并使用合适的数据传输协议是保证数据连续传输、视频图像连续播放的关键。鉴于基于传送文本或静态图像的传统网络协议(如TCP/HTTP协议)难以胜任规模较大的流媒体数据实时传输、实时播放、多点采集、多用户同时访问等需求,哥伦比亚大学、Netscape公司和RealNetworks公司共同开发了实时流传输协议(Real Time Streaming Protocol, RTSP),它是TCP/IP协议体系中的一个应用层协议,定义了一对多应用程序如何有效地通过IP网络传送多媒体数据,用于控制具有实时特性的数据特别是音视频数据的发送。RTSP协议的语法与HTTP协议类似,使用纯文本来发送信息,通过控制播放器实现对多媒体流的传输控制,通过请求和响应报文的交互实现客户端与服务器的通信。
例如,采用RTSP协议获取网络摄像机捕获的信号,所使用的RTSP文本字符串形如:"rtsp://UserName:Password@IP: Port/ "。
经压缩编码后的视频码流数据通过RTSP协议传输到客户端后,运用与压缩编码相对应的解码标准(如MPEG-4,H.264等)将其解压为可用于显示的视频码流或视频图像。视频解码过程可通过程序或软件来完成(即软解码),例如,FFmpeg、DirectShow等。
视频格式转换与纹理设置
数字视频常用的格式(YUV/YCbCr,BGR等)与三维图形学中常用的图像格式(RGB,RGBA等)有所不同,且二维视频通常无法与三维场景进行紧密关联,想要在三维场景中显示视频,需要将视频转换为三维场景所支持的图片流格式并作为纹理对象的数据,最后将纹理对象应用到三维场景中。YUV/YCbCr与R’G’B’(经伽马校正后的RGB)图像相互转换的公式为:
经格式转换后的数据流可作为三维引擎支持的图像或图像流对象的数据,然后将图像设置给纹理对象,经纹理设置后应用到具体的场景状态集上。视频纹理设置的内容和过程如下:
(1)创建纹理对象,将纹理贴图设置为已生成的图像或图像流对象。
(2)设置边框颜色、纹理内部压缩方式等参数,可直接使用默认值。
(3)设置纹理滤波方式,即纹理放大、缩小时对纹理的过滤处理方法,例如线型均值、最近邻法等。
(4)设置各个纹理坐标的纹理边界截取方式,例如使用边界像素、使用边框颜色、重复纹理、镜像纹理等。
(5)设置纹理相关的渲染属性与渲染模式,并关联给某个具体的纹理通道。
投影纹理映射
三维场景中模型的纹理生成方式通常有两种:一是通过软件或程序直接为模型的顶点指定相应纹理坐标,从而使纹理映射到模型表面;二是通过视点矩阵、投影矩阵等参数的设置来自动生成纹理坐标。投影纹理映射是自动生成纹理坐标的一种方式,最初由Segal等人于1992年在文章《Fast shadows and lighting effects using texture mapping》中提出,用于映射一个纹理到物体上,就像将幻灯片(纹理)投影到墙(模型)上一样,不需要在应用程序中指定顶点纹理坐标,只需通过视点矩阵和投影矩阵等参数的设置来实现纹理坐标和顶点坐标的实时对应。
投影纹理映射中使用的纹理坐标是在顶点着色程序中通过视点矩阵和投影矩阵计算得到的,通常也被称作投影纹理坐标(coordinates in projective space),而我们常用的纹理坐标是在建模软件中通过手工调整纹理和3D模型的对应关系而产生的,这是投影纹理映射与普通纹理设置的不同之处。
投影纹理映射的流程是:根据视点相机(也称投影机,projector)的位置、投影角度和物体的坐标来求每个顶点所对应的纹理坐标,然后依据纹理坐标去查询纹理值。投影纹理坐标的计算与纹理本身没有关系,而是由投影机的位置、角度,以及3D模型的顶点坐标所决定。
在计算投影纹理映射坐标时,首先将顶点从模型坐标系转换到场景的相机坐标系中,然后转换到世界坐标系,之后将世界坐标系坐标转换到以投影点为中心的投影坐标系,再转换到投影裁剪坐标系,最后将获得的投影顶点坐标归一化到[0, 1]空间中,得到投影纹理坐标,流程如下图所示。
计算投影纹理映射坐标流程
用公式表示投影纹理映射坐标计算过程,即为:
计算出单幅纹理的坐标和颜色后,采用多重纹理映射技术将实时视频纹理与场景中模型已有的纹理进行融合。多重纹理映射技术允许将多幅纹理图像映射到多边形表面上,在纹理操作管线中把多幅纹理图像逐个应用到同一个多边形上。多重纹理存在一系列的纹理单元,每个纹理单元执行各自的纹理操作,并把结果传递给下一个纹理单元,直到所有纹理单元的操作都完成为止。
这样我们就完成了视频纹理的映射,并能够在三维场景中(地面、三维模型表面)看到实时“播放”的视频数据(可参照上期内容效果图)。
数字地球科学平台中多路视频纹理映射效果图
实时视频的获取与三维可视化只是基于视频的数字地球增强虚拟环境的第一步,相关研究和应用过程中还会涉及诸多问题和难题,例如虚拟投影相机与现实摄像机的匹配、多路视频纹理的融合(三维全景视频融合)、面向运动目标的分析与应用等等,有机会我们将在以后的【微课堂】中进行介绍。
以上内容由数字地球重点实验室简洪登提供。
【微课堂】结合非监督分类和几何—纹理—光谱特征的高分影像道路提取
【视频】十年:数字地球发展的引领者