一种三维模型与监控视频的无缝融合方法及装置与流程

文档序号:14679409发布日期:2018-06-12 21:59阅读:544来源:国知局
一种三维模型与监控视频的无缝融合方法及装置与流程

本发明涉及监控视频系统、三维GIS系统、三维模型渲染技术领域,具体而言,涉及一种三维模型与监控视频的无缝融合方法及装置。



背景技术:

相关技术中,已经出现了三维模型与监控视频的融合技术。这种技术通常是从监控视频流提取视频帧,并将视频帧投射到三维空间场景里,以实现视频数据与三维模型数据进行全时空立体融合,进而使得三维模型和通过摄像机实拍得到的三维场景图像真正的进行实时完美结合。该技术能够实现三维场景的直观表达,达到视频位置与周边三维信息的融合目标。

相关技术中,利用摄像机可视区域内的图像,可以对三维模型进行全时空立体的视频图像渲染,以实现三维模型与监控视频的融合。然而,由于监控场景的复杂性,相关技术中,所建立的三维地图模型的效果并不理想。



技术实现要素:

本发明的目的在于提供三维模型与监控视频的无缝融合方法及装置。

第一方面,本发明实施例提供了一种三维模型与监控视频的无缝融合方法,包括:

构建目标视频图像所对应的三维空间场景的深度图;

获取视频帧,生成视频帧纹理;

计算三维模型中的目标微面片在归一化设备坐标系的坐标和视频帧纹理中的纹理坐标;

根据目标微面片的归一化设备坐标系的坐标,判断目标微面片是否在视景体内;

若目标微面片在视景体内,利用目标微面片在视频帧纹理中的纹理坐标,从目标视频图像的深度图中读取目标微面片深度信息,再根据深度信息判断目标微面片是否被遮挡;若目标微面片不在视景体内,则根据三维模型原有纹理对目标微面片进行渲染;

若被遮挡,则使用三维模型原有纹理对目标微面片进行渲染。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,还包括:

若不被遮挡,则使用微面片在视频帧纹理中的纹理坐标获取纹理的颜色信息,对目标微面片进行渲染。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,步骤构建目标视频图像所对应的三维空间场景的深度图包括:

根据摄像头位置的三维坐标和摄像头的姿态角计算摄像头的视图矩阵;

依据摄像头的视场角和视频的宽高比计算摄像头的透视投影矩阵;

创建深度纹理对象;

设置帧缓冲区,用于控制渲染流水线把深度图保存在深度纹理对象中;

根据视图矩阵和透视投影矩阵对三维场景做渲染,以生成深度图。

结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,步骤获取视频帧,生成视频帧纹理包括:

读取视频帧,并根据视频的帧率更新视频帧,用于与三维模型融合,实现动态融合效果;

调用三维API将二维图像的视频帧保存在纹理,生成视频帧纹理。

结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,步骤计算三维模型中的目标微面片在归一化设备坐标系的坐标和视频帧纹理中的纹理坐标包括:

利用GPU顶点着色器,将三维模型顶点坐标从模型坐标系下转换到裁剪坐标系下;

通过硬件渲染流水线的光栅化插值裁剪坐标系下的三维模型顶点坐标,在像素着色器中得到裁剪坐标系下的三维模型微面片齐次坐标(x,y,z,w),其中,X表示点坐标在X轴的投影;Y表示点坐标在Y轴的投影;Z表示点坐标在Z轴的投影;X轴、Y轴、Z轴均是裁剪坐标系中的坐标轴,W用于对(x,y,z)做投影,从而转换到归一化设备坐标系;

将目标微面片齐次坐标转为普通三维坐标,得到目标微面片在归一化设备坐标系的坐标(x/w,y/w,z/w);

根据目标微面片在归一化设备坐标系的坐标,计算得到目标微面片在视频帧纹理中的纹理坐标((x/w+1)*0.5,(y/w+1)*0.5))。

结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,步骤根据目标微面片的归一化设备坐标系的坐标,判断目标微面片是否在视景体内包括:

判断目标微面片在归一化设备坐标系下的坐标的x/w和y/w是否在[-1,1]闭区间上;如果不在则判断目标微面片不在摄像头的视景体之内;

如果在,则计算目标微面片在归一化设备坐标系下的坐标z/w的数值,并根据z/w的数值判断目标微面片是否在视景体内。

结合第一方面,本发明实施例提供了第一方面的第六种可能的实施方式,其中,步骤计算目标微面片在归一化设备坐标系下的坐标z/w的数值,并根据z/w的数值判断目标微面片是否在视景体内包括:

如果三维API使用OpenGL,那么z/w的数值在[-1,1]闭区间上则说明目标微面片在视景体之内,如果z/w的数值不在[-1,1]闭区间上则说明目标微面片不在视景体之内。

结合第一方面,本发明实施例提供了第一方面的第七种可能的实施方式,其中,步骤计算目标微面片在归一化设备坐标系下的坐标z/w的数值,并根据z/w的数值判断目标微面片是否在视景体内包括:

如果三维API使用DirectX,那么z/w的数值在[0,1]闭区间上则说明目标微面片在视景体之内;如果z/w的数值不在[0,1]闭区间上则说明目标微面片不在视景体之内。

结合第一方面,本发明实施例提供了第一方面的第八种可能的实施方式,其中,步骤利用目标微面片在视频帧纹理中的纹理坐标,从目标视频图像的深度图中读取目标微面片深度信息zn,再根据深度信息zn判断目标微面片是否被遮挡包括:

如果三维API使用OpenGL,则使用目标微面片的(z/w+1)*0.5与zn做比较,如果(z/w+1)*0.5小于或等于zn,则说明目标微面片没有被遮挡;如果(z/w+1)*0.5大于zn,则说明目标微面片被遮挡;

如果三维API使用DirectX,则把目标微面片的z/w与zn进行比较,如果z/w小于或等于zn,则说明微面片没有被遮挡;如果z/w大于zn,则说明微面片被遮挡。

第一方面,本发明实施例提供了一种三维模型与监控视频的无缝融合方法,包括:

深度图生成模块,用于构建目标视频图像所对应的三维空间场景的深度图;

视频帧纹理生成模块,用于获取视频帧,生成视频帧纹理;

计算模块,用于计算三维模型中的目标微面片在归一化设备坐标系的坐标和视频帧纹理中的纹理坐标;

判断模块,用于根据目标微面片的归一化设备坐标系的坐标,判断目标微面片是否在视景体内;

第一处理模块,用于当目标微面片在视景体内时,利用目标微面片在视频帧纹理中的纹理坐标,从目标视频图像的深度图中读取目标微面片深度信息,再根据深度信息判断目标微面片是否被遮挡;当目标微面片不在视景体内时,则根据三维模型原有纹理对目标微面片进行渲染;

第一处理模块,用于在目标微面片被遮挡时,使用三维模型原有纹理对目标微面片进行渲染。

本发明实施例提供的三维模型与监控视频的无缝融合方法,通过建立深度图的方式来确定目标微面片是否被遮挡,并且,如果该微面片被遮挡,且在视景体内,则使用三维模型原有纹理对目标微面片进行渲染,从而改善了三维模型与监控视频融合的显示效果。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了相关技术中,三维模型与监控视频的无缝融合的基本流程示意图;

图2示出了本发明实施例所提供的三维模型与监控视频的无缝融合方法的基本流程示意图;

图3示出了本发明实施例所提供的三维模型与监控视频的无缝融合方法的第一种细节方案示意图;

图4示出了本发明实施例所提供的三维模型与监控视频的无缝融合方法的第二种细节方案示意图。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

相关技术中,已经出现了三维模型与监控视频的融合技术,相关技术中的方法流程如下,如图1所示:

步骤1,建立指定摄像头的视图矩阵和投影矩阵;

步骤2,通过该指定摄像头获取一帧视频图像;

步骤3,基于步骤2中的视频图像、视图矩阵和投影矩阵计算对应的三维模型中的指定微面片是否出现在指定摄像头的视景体内;其中,微面片是三维模型在OpenGL或者DirectX的三维渲染流水线中被光栅化之后生成的面片(即将三维模型表面看作一系列微小面片的集合),视景体指的是摄像头视线范围内的空间,是成像景物所在空间的集合(包括摄像头能够直接拍摄到的一面和摄像头无法直接拍摄到的一面,即被遮挡住的一面);如果判断为是,则执行步骤4,如果判断为否,则执行步骤5;

步骤4,利用视频图像对指定微面片进行渲染;

步骤5,利用三维模型原有纹理对指定微面片进行渲染。

步骤4中,利用视频图像对微面片进行渲染有两种情况,分别是微面片是被遮挡的情况,以及微面片没有被遮挡的情况。相关技术中,不论是上述哪种情况,都是采用视频图像对微面片进行渲染,即使视频图像中没有出现该微面片(被遮挡住了),也会使用相应的算法来构建出该微面片的纹理,并对其进行渲染。

但发明人发现,按照此种方式对处在摄像头视景体内,并且被遮挡住的微面片进行渲染是不合适的,主要是因为对这种被遮挡微面片的渲染仅仅是通过预估的方式进行的,但采用这种方式对被遮挡住的微面片进行渲染的结果与实际相差较大。

进而,本申请发明人提供了如下一种三维模型与监控视频的无缝融合方法,如图2所示:

步骤S101,构建目标视频图像所对应的三维空间场景的深度图;

步骤S102,获取视频帧,生成视频帧纹理;

步骤S103,计算三维模型中的目标微面片在归一化设备坐标系的坐标和视频帧纹理中的纹理坐标;

步骤S104,根据目标微面片的归一化设备坐标系的坐标(计算归一化设备坐标时已经考虑了摄像机的视景体空间位置),判断目标微面片是否在视景体内;

步骤S105,若目标微面片在视景体内,利用微面片在视频帧纹理中的纹理坐标,从目标视频图像的深度图中读取微面片深度信息,再根据深度信息判断目标微面片是否被遮挡;若目标微面片不在视景体内,则根据三维模型原有纹理对目标微面片进行渲染;

步骤S106,若被遮挡,则使用三维模型原有纹理对目标微面片进行渲染;若不被遮挡,则使用微面片在视频帧纹理中的纹理坐标获取纹理的颜色信息,对目标微面片进行渲染。

上述步骤中,深度图标识出了三维模型中每个点(或者说每个微面片)与摄像机的距离。一般情况下,目标视频图像中对应有很多物体,每个物体均是由多个微面片所组成的。视频是由一张一张图像组成,视频帧就是其中的一张图像;视频帧是保存在内存中的图像,不能用于三维模型的纹理贴图。调用三维API将二维图像的视频帧保存为纹理,生成视频帧纹理。视频帧纹理是把一张图像按照三维API要求的格式,保存到GPU中,可以用于三维模型的纹理贴图。视频帧和视频帧纹理的区别在于存储位置不同,存储格式不同,只有视频帧纹理的存储位置及格式才能用于三维模型的纹理贴图。

在构建深度图和确定目标微面片在视频帧纹理中的纹理坐标之前需要将摄像机的位置、视场角和视频的宽高比等参数计算出变换矩阵,这个矩阵用来将三维模型换算到裁剪坐标系下,即需要将各个参数放在统一的坐标系下才能够进行后续的计算。

下面,对生成深度图的过程进行介绍,即,步骤S101可以分为如下步骤:

1,根据摄像头位置的三维坐标和摄像头的姿态角计算摄像头的视图矩阵;该过程主要进行外方位转换,即将三维模型从所在的世界坐标系转换到相机坐标系下;

2,依据摄像头的视场角和视频的宽高比计算摄像头的透视投影矩阵;该步骤主要是进行内方位转换,将三维模型从相机坐标系转换到裁剪坐标系下;

3,创建深度纹理对象,在系统中,为深度纹理申请存储空间,为了提高分辨率,深度纹理的宽高应当设置为三维API支持的最大宽高;

4,设置帧缓冲区,用于控制渲染流水线把深度图保存在深度纹理对象中;深度图中的深度值描述了相机与指定微面片之间的距离;

5,根据上述视图矩阵和透视投影矩阵对三维场景做渲染,渲染之后三维API(比如OpenGL或者DirectX)会生成深度图,利用设置的帧缓冲区,将深度图保存在深度纹理中;

当摄像头的位置、姿态改变,或三维场景中某些物体移动了,则需要重新渲染深度图。其中,API(Application Programming Interface,应用程序编程接口),是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。DirectX(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。被广泛使用于Microsoft Windows、Microsoft XBOX、Microsoft XBOX360和Microsoft XBOX ONE电子游戏开发,并且只能支持这些平台。

步骤S102可以分为如下步骤,如图3所示:

S1021,读取视频帧,并根据视频的帧率更新视频帧,用于与三维模型融合,实现动态融合效果;

S1022,调用三维API将二维图像的视频帧保存在纹理,生成视频帧纹理。

其中,“更新”指的是视频是动态的画面,视频帧随着时间变化,用于与三维模型融合的视频帧纹理也在动态变化,因此融合效果也是随着变得。即用于融合的数据是实时变化,动态更新的。帧率指的是每秒显示的帧数,即1s中播几张图像。

步骤S103可以分为如下步骤:

1,在GPU顶点着色器中把三维模型顶点的坐标按顺序乘以世界矩阵、摄像头的视图矩阵和摄像头的投影矩阵,得到裁剪坐标系下的三维模型顶点坐标;(利用GPU顶点着色器,将三维模型顶点坐标从模型坐标系下转换到裁剪坐标系下的坐标);

2,将以上获得的坐标作为顶点着色器的一个输出量,经过硬件渲染流水线的光栅化插值,在像素着色器中就得到裁剪坐标系下的三维模型微面片坐标,该坐标可以表示为(x,y,z,w)(其中,X表示点坐标在X轴的投影;Y表示点坐标在Y轴的投影;Z表示点坐标在Z轴的投影;W用于对(x,y,z)做投影);(通过硬件渲染流水线的光栅化插值裁剪坐标系下的三维模型顶点坐标,在像素着色器中得到裁剪坐标系下的三维模型微面片齐次坐标(x,y,z,w));其中,(x,y,z,w)为齐次坐标,即将原本是n维的向量用一个n+1维向量,用于透视投影。(x,y,z)与(wx,wy,wz,w)表示同一个点,一般第四个分量w都是1,但是经过投影变化后,w将不再是1,开始发挥作用。W用于对(x,y,z)做投影,从而转换到归一化设备坐标系。

3,对(x,y,z)除以w,得到微面片在归一化设备坐标系的坐标(x/w,y/w,z/w);(将微面片齐次坐标转为普通三维坐标,得到微面片在归一化设备坐标系的坐标(x/w,y/w,z/w))。

4,x/w和y/w有效的取值范围在[-1,1]闭区间上,纹理坐标在[0,1]闭区间上,并且二者存在线性关系,因此把x/w和y/w分别加1,然后再乘以0.5即得到了微面片在视频帧纹理中的纹理坐标。(进一步计算得到微面片在视频帧纹理中的纹理坐标((x/w+1)*0.5,(y/w+1)*0.5))。具体的在顶点着色器中对顶点坐标做的矩阵乘法也可以转移到像素着色器中实现,但是那样会加大GPU的计算量,降低效率,这两种做法都在本专利的保护范围之内。

步骤S104可以分为如下步骤:

1,首先判断微面片在归一化设备坐标系下的坐标的x/w和y/w是否在[-1,1]闭区间上,如果不在则说明微面片不在摄像头的视景体之内,如果在,则进行下个步骤的判断;

2,计算微面片在归一化设备坐标系下的坐标z/w的数值,如果三维API使用OpenGL,那么z/w的数值在[-1,1]闭区间上则说明该微面片在视景体之内,如果z/w的数值不在[-1,1]闭区间上则说明该微面片不在视景体之内。如果三维API使用DirectX,那么z/w的数值在[0,1]闭区间上则说明该微面片在视景体之内;如果z/w的数值不在[0,1]闭区间上则说明该微面片不在视景体之内。

步骤S105中,利用微面片在视频帧纹理中的纹理坐标,从目标视频图像的深度图中读取微面片深度信息,再根据深度信息判断目标微面片是否被遮挡可以分为如下步骤,如图4所示:

S1051,微面片在深度纹理中的纹理坐标与微面片在视频帧纹理中的纹理坐标是相同的,使用上述微面片在视频帧纹理中的纹理坐标从上述深度纹理中读取深度,记为zn,接下来根据使用的三维API分为两种情况;(使用微面片在视频帧纹理中的纹理坐标从深度纹理中读取深度,记为zn)。

S1052,如果三维API使用OpenGL,那么使用微面片的(z/w+1)*0.5与zn做比较,如果(z/w+1)*0.5小于或等于zn,则说明微面片没有被遮挡;如果(z/w+1)*0.5大于zn,则说明微面片被遮挡。

S1053,如果三维API使用DirectX,那么把微面片的z/w与zn直接做比较,如果z/w小于或等于zn,则说明微面片没有被遮挡。如果z/w大于zn,则说明微面片被遮挡。

进而,如果微面片在摄像机的视景体内,且没有被遮挡,则根据该微面片在视频帧纹理中的纹理坐标从上述视频帧纹理中读取纹理的颜色,把该颜色作为微面片的颜色(即采用视频图像中的微面片所对应的颜色对微面片进行渲染)。

如果微面片在摄像机的视景体内,且被遮挡,则使用该微面片的原有的纹理数据对该微面片进行渲染。

基于上述方法,本申请还提供了一种三维模型与监控视频的无缝融合装置,包括:

深度图生成模块,用于构建目标视频图像所对应的三维空间场景的深度图;

视频帧纹理生成模块,用于获取视频帧,生成视频帧纹理;

计算模块,用于计算三维模型中的目标微面片在归一化设备坐标系的坐标和视频帧纹理中的纹理坐标;

判断模块,用于根据目标微面片的归一化设备坐标系的坐标,判断目标微面片是否在视景体内;

第一处理模块,用于当目标微面片在视景体内时,利用目标微面片在视频帧纹理中的纹理坐标,从目标视频图像的深度图中读取目标微面片深度信息,再根据深度信息判断目标微面片是否被遮挡;当目标微面片不在视景体内时,则根据三维模型原有纹理对目标微面片进行渲染;

第一处理模块,用于在目标微面片被遮挡时,使用三维模型原有纹理对目标微面片进行渲染。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1