图像处理方法、装置、存储介质和计算机设备与流程

文档序号:19283215发布日期:2019-11-29 23:12阅读:149来源:国知局
图像处理方法、装置、存储介质和计算机设备与流程

本发明涉及计算机技术领域,特别是涉及一种图像处理方法、装置、存储介质和计算机设备。



背景技术:

随着计算机技术的发展,图像处理技术也不断进步。用户可以通过专业的图像处理软件对图像进行处理,使得经过处理的图像表现更好。用户还可以通过图像处理软件,在图像中附加由图像处理软件提供的素材,让经过处理的图像能够传递更多的信息。

然而,目前的图像处理方式,需要用户展开图像处理软件的素材库,浏览素材库,从素材库中选择合适的素材,调整素材在图像中的位置,从而确认修改,完成图像处理。于是目前的图像处理方式需要大量的人工操作,耗时长,导致图像处理过程效率低。



技术实现要素:

基于此,有必要针对传统的图像处理过程效率低问题,提供一种图像处理方法、装置、存储介质和计算机设备。

一种图像处理方法,包括:

获取从现实场景中采集的图像帧;

将获取的图像帧按照采集的时序逐帧播放;

当获取的多帧图像帧中目标物运动所形成的轨迹满足触发条件时,确定现实场景中所述目标物所对应的位置;

按照所述位置在当前播放的图像帧中渲染虚拟入口;

在所述虚拟入口中显示虚拟内容。

一种图像处理装置,包括:

获取模块,用于获取从现实场景中采集的图像帧;

播放模块,用于将获取的图像帧按照采集的时序逐帧播放;

确定模块,用于当获取的多帧图像帧中目标物运动所形成的轨迹满足触发条件时,确定现实场景中所述目标物所对应的位置;

渲染模块,用于按照所述位置在当前播放的图像帧中渲染虚拟入口;在所述虚拟入口中显示虚拟内容。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:

获取从现实场景中采集的图像帧;

将获取的图像帧按照采集的时序逐帧播放;

当获取的多帧图像帧中目标物运动所形成的轨迹满足触发条件时,确定现实场景中所述目标物所对应的位置;

按照所述位置在当前播放的图像帧中渲染虚拟入口;

在所述虚拟入口中显示虚拟内容。

一种计算机设备,包括存储器和处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:

获取从现实场景中采集的图像帧;

将获取的图像帧按照采集的时序逐帧播放;

当获取的多帧图像帧中目标物运动所形成的轨迹满足触发条件时,确定现实场景中所述目标物所对应的位置;

按照所述位置在当前播放的图像帧中渲染虚拟入口;

在所述虚拟入口中显示虚拟内容。

上述图像处理方法、装置、存储介质和计算机设备,一方面将反映现实场景的图像帧播放,使得播放的图像帧能够反映现实场景;另一方面在从现实场景中采集的图像帧中目标物运动所形成的轨迹满足触发条件时,自动确定现实场景中该目标物所对应的位置,以按照确定的位置在当前播放的图像帧中渲染虚拟入口,并在虚拟模入口中显示虚拟内容,这样就可以自动实现在虚拟入口内显示虚拟世界的虚拟内容,在虚拟入口外显示现实世界的现实内容,避免了人工操作的繁琐步骤,极大地提高了图像处理效率。

附图说明

图1为一个实施例中图像处理方法的应用环境图;

图2为一个实施例中图像处理方法的流程示意图;

图3为一个实施例中播放图像帧的界面示意图;

图4为一个实施例中在当前播放的图像帧中渲染虚拟入口的界面示意图;

图5为一个实施例中从获取的图像帧中分割出手部区域的示意图;

图6为一个实施例中在图像帧中轨迹变化的示意图;

图7为一个实施例中坐标空间的关系示意图;

图8为一个实施例中当前终端的位置经过空间区域后的渲染原理图;

图9为一个实施例中当前终端的位置未再次穿过空间区域、且当前视野区域经过移动后覆盖虚拟入口时,终端界面显示的界面示意图;

图10为一个实施例中当前终端的位置围绕空间区域移动时的渲染原理图;

图11为一个实施例中模型的剖面示意图;

图12为一个实施例中渲染原理示意图;

图13为一个实施例中图像处理方法的流程框图;

图14为一个实施例中图像处理装置的模块结构图;

图15为另一个实施例中图像处理装置的模块结构图;

图16为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1为一个实施例中图像处理方法的应用环境图。参照图1,该图像处理方法应用于图像处理系统。该图像处理系统包括终端110和服务器120。其中,终端110和服务器120通过网络连接。终端110用于执行图像处理方法。终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器120具体可以是独立的服务器,也可以是多个独立的服务器组成的服务器集群。

终端110可以获取从现实场景中采集的图像帧,将获取的图像帧按照采集的时序逐帧播放。该图像帧可以是终端110通过内置的图像采集装置或者外部连接的图像采集装置才现实世界中采集的,内置的图像采集装置具体可以是终端110的前置摄像头或者后置摄像头;该图像帧也可以是其它设备从现实场景中采集后发送至终端110的。终端110可在本地判定获取的多帧图像帧中目标物运动所形成的轨迹满足触发条件时,确定现实场景中目标物所对应的位置,按照该位置在当前播放的图像帧中渲染虚拟入口,在虚拟入口中显示虚拟内容;终端110也可将获取的图像帧发送至服务器120,由服务器120在判定获取的多帧图像帧中目标物运动所形成的轨迹满足触发条件时,通知终端110触发条件被满足,终端110继而确定现实场景中目标物所对应的位置,按照该位置在当前播放的图像帧中渲染虚拟入口,在虚拟入口中显示虚拟内容。

图2为一个实施例中图像处理方法的流程示意图。本实施例主要以该图像处理方法应用于计算机设备来举例说明,该计算机设备可以是图1中的终端110。参照图2,该图像处理方法具体包括如下步骤:

s202,获取从现实场景中采集的图像帧。

其中,现实场景是自然世界中存在的场景。图像帧是能够形成动态画面的图像帧序列中的单元,用来记录某时刻现实场景中的画面。

在一个实施例中,终端具体可按照固定或动态的帧率,从现实场景中采集图像帧,获取采集得到的图像帧。其中,固定或动态的帧率能够使图像帧按照该固定或动态的帧率播放时形成连续的动态画面。

在一个实施例中,终端可通过内置或者外部连接的图像采集装置如摄像头,在摄像头当前的视野下,采集现实场景的图像帧,获取采集得到的图像帧。其中,摄像头的视野可因终端的姿态和位置的变化而变化。

在一个具体的实施例中,终端可通过在本机上运行的应用所提供的ar(augmentedreality,增强现实)拍摄模式,并在选定该ar拍摄模式后,从现实场景中采集图像帧,获取采集得到的图像帧。其中,应用具体可以是社交应用,社交应用是能够基于社交网络进行网络社交互动的应用。社交应用包括即时通信应用、sns(socialnetworkservice,社交网站)应用、直播应用或者拍照应用等,比如qq或者微信等。

在一个实施例中,终端可接收另一终端发送的从现实场景中采集的图像帧,获取接收的图像帧。比如,终端通过运行在终端上的社交应用建立视频会话时,接收其他会话方所对应的终端发送的从现实场景中采集的图像帧。

在一个实施例中,获取图像帧的帧率可以与采集图像帧的帧率一致,也可小于采集图像帧的帧率。

s204,将获取的图像帧按照采集的时序逐帧播放。

其中,采集的时序是指采集图像帧时的时间顺序,可通过图像帧在采集时记录的时间戳的大小关系来表示。逐帧播放是指逐图像帧播放。

具体地,终端可按照获取图像帧的帧率,按照时间戳升序,逐个播放采集的图像帧。终端可以将获取的图像帧直接播放,也可以将获取的图像帧按照采集的时序存入缓存区,并按采集的时序从缓存区取出图像帧播放。

在一个实施例中,终端可将接收到的另一终端发送的从现实场景中采集的图像帧,按照另一终端采集图像帧的帧率,根据时间戳升序,逐个播放接收到的图像帧。终端可以将接收到的图像帧直接播放,也可以将接收到的图像帧按照采集的时序存入缓存区,并按采集的时序从缓存区取出图像帧播放。

图3示出了一个实施例中播放图像帧的界面示意图。参考图3,图3(a)为播放图像帧时终端界面的简化示意图,图3(b)为播放图像帧时终端界面的录屏截图。可以看出,终端显示屏上显示的即为现实场景中的画面。

s206,当获取的多帧图像帧中目标物运动所形成的轨迹满足触发条件时,确定现实场景中目标物所对应的位置。

其中,目标物是现实场景中作为目标的实体。目标物具体地可以是手部、面部或者长条形物体等。目标物运动所形成的轨迹,可以是目标物在运动时获取的图像帧中目标物的参考点移动所形成的轨迹。比如用户控制手部运动时,获取的图像帧中手部食指指尖的成像点移动所形成的轨迹,再比如,用户手持长条形物体(比如笔或者魔法棒等)运动时,获取的图像帧中长条形物体顶部的成像点移动所形成的轨迹等。

触发条件是触发特定事件的约束条件。在本实施例中,特定事件是在播放的图像帧中渲染虚拟入口的事件。触发条件具体可以是获取的多帧图像帧中目标物运动所形成的轨迹为规则的闭合形状,比如三角形、四边形或者圆形等。

可以理解,用户可选择目标物,通过控制目标物在现实场景中移动,从而使得采集该目标物的图像帧中目标物运动所形成的轨迹满足特定的约束条件(如触发条件),以触发特定的事件(渲染虚拟入口)。而在现实场景中目标物所对应的位置,就是用户意图终端在播放的图像帧中渲染虚拟入口的位置在现实场景中的映射。这样,对于用户而言,从视觉上的感知即为触发一个虚拟入口在现实世界中出现,犹如现实世界的真实入口一样。

具体地,终端在获取的多帧图像帧中目标物运动所形成的轨迹满足触发条件时,确定目标物在该图像帧中的坐标位置,根据与终端的图像采集装置适配的投影矩阵,计算该目标物在现实场景中的位置。其中,目标物在该图像帧中的坐标位置具体可以是目标物的参考点在该图像帧中的坐标位置。比如,手部食指指尖的成像点的坐标位置。目标物在该图像帧中的坐标位置也可以是目标物运动所形成的轨迹的中心坐标位置。比如,手部食指指尖画圈时,该圆形轨迹的中心嘴巴坐标位置。

在一个具体的应用场景中,用户手持终端,通过终端上用于调用摄像头的应用程序打开终端上内置的摄像头,这样,终端可在摄像头当前的视野下,采集现实场景中的图像帧。用户对着终端的摄像头控制目标物运动就会被采集到,从而获取到实时采集的包括目标物的图像帧。可以理解,若用户打开的是前置摄像头,那么采集的图像帧中包括目标物以及前置摄像头当前视野下的背景;若用户打开的是后置摄像头,那么采集的图像中就包括目标物以及后置摄像头当前视野下的背景。

s208,按照位置在当前播放的图像帧中渲染虚拟入口。

其中,虚拟入口是相对于真实入口的概念。真实入口是用作在现实场景中划分现实空间的实体。真实入口比如房间门,可将现实空间划分为房间内区域和房间外区域;或者,真实入口比如景区入口,可将现实空间划分为景区和非景区等。虚拟入口则是用作在虚拟场景中划分区域的虚拟模型。虚拟入口比如虚拟模型门等。

可以理解,现实场景中的位置是真实空间中的绝对位置。该位置不因终端内置或者外部连接的图像采集装置当前视野的变化而变化。由此可知,在图像采集装置当前视野发生变化时,虚拟入口在图像帧中的渲染位置和尺寸均不同。那么,在图像采集装置当前视野发生变化时,虚拟入口在图像帧中的渲染位置和尺寸依据现实世界中物体成像原理,呈现出近大远小的效果。

具体地,终端在确定目标物在现实场景中的位置后,可根据现实场景与终端的图像采集装置当前视野下适配的投影矩阵,计算该虚拟入口在当前视野下采集的图像帧中的渲染位置,在该位置渲染虚拟入口。

图4示出了一个实施例中在当前播放的图像帧中渲染虚拟入口的界面示意图。参考图4,图4(a)为在当前播放的图像帧中渲染虚拟入口时终端界面的简化示意图,图4(b)为在当前播放的图像帧中渲染虚拟入口时终端界面的录屏截图。图4(a)包括渲染虚拟入口410a,图4(b)包括渲染虚拟入口410b。

s210,在虚拟入口中显示虚拟内容。

其中,这里的虚拟内容是不存在于获取的图像帧所采集自的现实场景中的内容。可以理解,这里的虚拟内容是相对于当前现实场景而言虚拟的内容,而非绝对虚拟的内容。也就是说,这里的虚拟内容可以是通过计算机技术模拟出的完全虚拟的内容,也可以是在非当前现实场景中的内容。当前现实场景即终端获取的图像帧采集自的现实场景。

在一个实施例中,虚拟内容可以是动态内容,也可以是静态内容。虚拟内可以是统一的内容,也可以是与图像帧中目标物运动所形成的轨迹对应的内容,还可以是通过用户自主选择的内容。具体地,终端可预先设置轨迹与虚拟内容的对应关系,这样终端即可在识别出轨迹后,即查询与该轨迹对应的虚拟内容进行显示。比如,当轨迹为三角形时,显示的虚拟内容为足球比赛视频;当轨迹为四边形时,显示的虚拟内容为拍摄商场得到的视频;当轨迹为圆形时,显示的虚拟内容为拍摄旅游景区得到的视频。终端还可显示选择对话框,在选择对话框中展示可供选择的虚拟内容,再在虚拟入口中显示用户选择指令选中的虚拟内容。

在一个实施例中,虚拟内容具体可以是虚拟视频,也可以是从现实场景中采集图像帧生成的视频。比如,用户手持终端处于办公室中采集办公室内的现实场景得到图像帧播放,那么虚拟入口外显示的内容是办公室这一现实场景,虚拟入口内显示的可以是游戏视频,也可以是其他图像采集装置在非当前办公室,比如王府井大街的现实场景。

继续参考图4,可以看出虚拟入口410a(b)内显示的是虚拟内容,虚拟入口410a(b)外显示的是现实场景中的画面。这样,对于用户而言,从视觉上的感知即为虚拟入口内是虚拟世界,虚拟入口外则是现实世界。用户便可通过移动穿过虚拟入口查看虚拟入口内的虚拟世界,或者通过移动传出虚拟入口查看虚拟入口外的现实世界,体验在虚拟世界和现实世界中的穿越效果。

上述图像处理方法,一方面将反映现实场景的图像帧播放,使得播放的图像帧能够反映现实场景;另一方面在从现实场景中采集的图像帧中目标物运动所形成的轨迹满足触发条件时,自动确定现实场景中该目标物所对应的位置,以按照确定的位置在当前播放的图像帧中渲染虚拟入口,并在虚拟模入口中显示虚拟内容,这样就可以自动实现在虚拟入口内显示虚拟世界的虚拟内容,在虚拟入口外显示现实世界的现实内容,避免了人工操作的繁琐步骤,极大地提高了图像处理效率。

在一个实施例中,目标物为手部。该图像处理方法还包括:从获取的图像帧中分割出手部图像;识别出手部图像所对应的手势类型;当手势类型为触发类型时,在图像帧中确定运动参考点;按照运动参考点确定手部运动所形成的轨迹。

其中,手部是人或动物的肢体部分。手部图像是包括手部、且手部区域占图像区域占比高的图像。手势是由用户通过手部做出的动作形态。手势类型是获取的图像帧中手势所属的类型。触发类型为触发特定事件的手势所属的类型。

运动参考点是用作目标物的运动过程判别的参考基准。可以理解,在不同的图像帧中运动参考点的位置发生了变化,则表示目标物进行了运行。比如,以手指的食指指尖的成像点为运动参考点,当食指指尖在多帧图像帧中的成像点位置发生了变化,则判定手部进行了运动。

可以理解,相比于直接对获取的原始图像帧中手部区域进行手势类型识别,从获取的图像帧中分割出手部图像之后再对分割出的手部图像进行手势类型识别,可避免手部图像占整个图像帧的比例较小时导致的识别不准确的问题,能够减少原始图像帧中相对于手部区域的背景区域对手部区域的手势类型识别的干扰,可以提高识别的准确度。

在一个实施例中,从获取的图像帧中分割出手部图像,包括:通过手部识别模型,将获取的图像帧编码为语义分割特征矩阵;解码语义分割特征矩阵得到语义分割图像;语义分割图像中的像素点,具有表示所属分类类别的像素值,且编码自的图像帧中的像素点对应;根据属于手部类别的像素点从图像中分割出手部图像。

其中,手部识别模型是经过训练后具有手部识别能力的机器学习模型。机器学习英文全称为machinelearning,简称ml。机器学习模型可通过样本学习具备特定的能力。机器学习模型可采用神经网络模型、支持向量机或者逻辑回归模型等。神经网络模型比如卷积神经网络等。在本实施例中,手部识别模型具体可以是全卷积网络模型(fullyconvolutionalnetworks)。

语义分割特征矩阵是对图像帧中图像内容的语义特征的低维表达,涵盖了该整个图像帧的语义特征信息。语义分割图像是分割为若干个互不重叠的、具有一定语义的区域的图像。语义分割图像中像素点的像素值用于反映相应像素点所属的分类类别。像素点的分类可以是二分类,也可以是多分类。像素点二分类,比如地图图像中对应道路的像素点和其他像素点。像素点多分类,比如风景地图中对应天空的像素点、对应大地的像素点以及对应人物的像素点等。语义分割图像的图像尺寸与原始图像帧的图像尺寸一致。这样,可以理解为对模型输入图像进行了逐像素点分类,根据语义分割图像中的像素点的像素值,即可得到模型输入图像中的每个像素点的类别隶属。

具体地,终端可事先通过属于各手势类型的图像样本,训练得到手部识别模型。这样,终端在从获取的图像帧中分割出手部图像后,将手部图像作为手部识别模型的输入,通过获取的手部识别模型的编码结构,将手部图像编码为语义分割特征矩阵。再继续通过手部识别模型的解码结构,解码语义分割特征矩阵得到语义分割图像。

其中,当终端预先设置的触发类型的手势类型唯一时,手部识别模型即为二分类模型。用于训练二分类模型的图像样本包括属于目标手势类型的正样本,及不属于目标手势类型的负样本。当终端预先设置的触发类型的手势类型多样时,手部识别模型即为多分类模型。用于训练多分类模型的图像样本包括属于各目标手势类型的样本。

图5示出了一个实施例中从获取的图像帧中分割出手部区域的示意图。参考图5,图5(a)为获取的包括手部区域的原始图像帧;图5(b)为进行语义分割后得到的语义分割图像;图5(c)为分割出手部区域的规则的手部图像。

在本实施例中,在获取到图像帧后,即自动将该图像帧输入训练好的机器学习模型,将图像帧编码为语义分割特征矩阵,再解码该语义分割特征矩阵即可得到语义分割图像。其中,语义分割图像中的像素点,具有表示所属分类类别的像素值,且与原始图像帧中的像素点对应。这样即可自动根据属于手部类别的像素点来确定手部区域以分割出手部图像,提高了图像分割准确率。

进一步地,终端可将分割出的手部图像与触发类型的手部图像模板进行比较,在分割出的手部图像与触发类型的手部图像模板匹配时,判定手部图像所对应的手势类型为触发类型,然后在图像帧中确定运动参考点;按照运动参考点确定手部运动所形成的轨迹。

终端也可将分割出的手部图像输入事先训练好的手势识别模型,得到该手势识别模型输出的手势识别结果,当该手势识别结果表示手部图像所对应的手势类型为触发类型,然后在图像帧中确定运动参考点;按照运动参考点确定手部运动所形成的轨迹。

在一个具体的场景中,用户对着终端的摄像头做出一个手势,在确定了该手势对应的操作类型为绘图类型时,就确定采集的连续的每一帧图像中手势的运动参考点,由于采集图像的频率较高,因此连续的运动参考点用很短线段连接起来后可以形成轨迹。

在一个实施例中,终端可在按采集时序从获取的图像帧中,按小于获取帧率的帧率选取图像帧进行手部图像分割与手势识别。其中,从获取的图像帧中选取图像帧,可以是通过多线程异步选取图像帧分别独立进行手部图像分割与手势识别,这样可以提高识别效率。

上述实施例中,通过手部做出特定的手势,隔空绘制出特定的轨迹,即可自动触发虚拟入口的展示效果。整个绘图过程无需用户通过输入装置进行操作,用户可在较大的空间范围内通过示出的手势进行绘图,提高了触发虚拟入口的便利性。

在一个实施例中,该图像处理方法还包括:当触发条件未满足时,在播放的视频帧中,将轨迹所经过的像素点的像素值替换为预设像素值;当触发条件被满足时,按照位置在当前播放的图像帧中,播放预设动画。

具体地,当触发条件未满足时,为了以可视化方式突显目标物运动所形成的轨迹,便于用户直观地感知是否满足触发条件,可以以异于图像中像素点的像素值展示轨迹。轨迹实质上是连续的多帧图像帧中各运动参考点所对应的像素坐标形成的轨迹,因而,终端可以根据各个像素坐标在图像帧中确定轨迹所经过的像素点,将这些像素点的像素值更新为预设像素值。预设像素值比如较为鲜艳的绿色或红色对应的像素值。

在一个实施例中,终端也可将以这些像素点为中心,一定范围内的像素点的像素值更新为预设像素值。终端也可在轨迹所经过的像素点处渲染粒子动画,覆盖或者替换轨迹所经过的像素点的像素值,实现魔法手势运动的效果。

在一个实施例中,终端在更新像素值或者渲染粒子动画时,可以是实时进行的,一旦确定了当前图像帧中轨迹经过的像素点,就将该像素点的像素值进行更新,或者在该像素点位置渲染粒子动画,这样即可实现实时展示运动轨迹。

图6示出了一个实施例中在图像帧中轨迹变化的示意图。参考图6,图6(a)、(b)和(c)为图像帧中轨迹变化时终端界面的简化示意图,图6(d)、(e)和(f)为图像帧中轨迹变化时终端界面的录屏截图。从图6(a)或(d)可以明显看出轨迹所经过的像素点的像素值更新为异于原始像素值。从图6(b)或(e)可以明显看出获取的多帧图像帧中目标物运动所形成的轨迹为圆形,满足触发条件。从图6(c)或(f)可以明显看出取值为异于原始像素值的像素点逐渐向轨迹中心位置处靠近,实现动画效果。

进一步地,当触发条件被满足时,终端可按照位置在当前播放的图像帧中,播放预设动画。其中,预设动画可以是逐渐将更新为预设像素值的像素点恢复初始像素值,或者逐渐取消渲染粒子动画,或者粒子动画逐渐向轨迹中心位置处靠近后取消渲染等。

上述实施例中,通过对图像帧中轨迹所经过的像素点的像素值进行更新,可以将目标物的运动轨迹直接展示在当前的图像帧中,形成实时绘图的效果,提高用户感知度。而且在触发条件满足后,播放预定动画,提高了趣味性。

在一个实施例中,确定现实场景中目标物所对应的位置,包括:确定目标物在世界坐标空间中的世界坐标位置。按照位置在当前播放的图像帧中渲染虚拟入口,包括:按照相机坐标空间中对应于世界坐标位置的相机坐标位置,在当前播放的图像帧中渲染虚拟入口。

其中,世界坐标空间是现实场景的坐标空间,是固定不变的绝对坐标空间。相机坐标空间是以光轴与图像平面的交点为原点所构成的坐标空间,是随图像采集装置(相机)的位置变化而变化的相对坐标空间。世界坐标空间中的世界坐标位置可通过刚体变化映射为相机坐标系中的相机坐标位置。

可以理解,对于现实场景中的目标物,通常情况下该目标物在未发生运动时,其在世界坐标空间中的世界坐标位置是固定不变的,但随着图像采集装置的位置和姿态的变化,其在相机坐标空间中的相机坐标位置是相对不变的。

在本发明中,是意图在目标物运动的世界坐标位置映射在图像帧中的位置处渲染虚拟入口,让用户感知为目标物运动的世界坐标位置处出现了虚拟入口,故需要获取目标物运动的世界坐标位置,再实时确定在当前的相机坐标空间中的相机坐标位置。比如,用户手持终端在后置摄像头的视野区域内用手部食指指尖画出了圆圈,那就是意图在现实场景中手指画圈的那个位置出现虚拟门。

具体地,终端在判定获取的多帧图像帧中目标物运动所形成的轨迹满足触发条件时,可获取当前图像帧中目标物的图像坐标位置,按照图像坐标空间与相机坐标空间的投影变化,得到目标物的相机坐标位置,再按照相机坐标空间与世界坐标空间的刚体变化,得到目标物在世界坐标空间中的世界坐标位置。其中,图像坐标空间是以图像的中心处为原点,坐标轴平行于图像的边所构成的坐标空间。

可以理解,由于相机坐标空间和图像坐标空间之间的投影变化关系是基于出厂设置确定的,所以根据预设投影变化关系,以及图像坐标空间中的图像坐标位置,可以确定目标物在相机坐标空间中横纵坐标,再根据目标物的图像深度可以得到目标物在相机坐标空间中垂直方向的坐标。

由于本申请实施例中涉及到多个坐标空间,为了使本申请方案更加清晰,现以图7为例对各坐标空间进行区分说明。参照图7,oo-xoyozo为模型坐标空间的坐标系、ow-xwywzw为世界坐标空间的坐标系、oc-xcyczc为相机坐标空间的坐标系、o1-xy为图像坐标空间的坐标系以及o2-uv为像素坐标空间的坐标系。点p(xw,yw,zw)为世界坐标空间中的点(即现实世界中真实的点),点p即为与点p(xw,yw,zw)匹配的图像帧中的像点。点p在图像坐标系空间中的位置坐标为(x,y),在像素坐标系空间中的位置坐标为(u,v)。通过点p在图像坐标空间中的位置坐标(x,y)和点p的深度,可以确定点p在相机坐标空间中的相机坐标位置。可以理解,像素坐标空间的原点即为屏幕顶点。

在一个实施例中,按照相机坐标空间中对应于世界坐标位置的相机坐标位置,在当前播放的图像帧中渲染虚拟入口,包括:获取当前终端的位置和姿态;根据当前终端的位置和姿态,确定当前的相机坐标空间与世界坐标空间的变换矩阵;按变换矩阵将世界坐标位置变换为相机坐标空间中的相机坐标位置;按照相机坐标位置,在当前播放的图像帧中渲染虚拟入口。

其中,当前终端的位置即为当前终端的图像采集装置在现实场景中的位置。当前终端的姿态是当前终端的图像采集装置在现实场景中横滚(roll)、俯仰(pitch)、偏转(yaw)的空间状态。

可以理解,终端在进行图像处理之前,还执行了构建地图的步骤。终端通过采集关键帧,定位并记录采集关键帧时在现实场景中的位置,这样终端在实时进行图像处理时,即可将当前获取的图像帧与关键帧进行匹配,以将对应于匹配的关键帧记录的位置。终端具体可基于slam(simultaneouslocalizationandmapping定位与地图构建)、vo(visualodometry视觉里程计)或者vio(visualinertialodometry视觉惯性里程计)对现实场景构建相应的地图。

在一个实施例中,获取当前终端的位置和姿态,包括:从地图中挑选与获取的图像帧匹配的地图节点;查询对应于地图节点所存储的在现实场景中的位置;获取惯性传感器采集的传感器数据;根据传感器数据,确定当前终端的姿态。

具体地,终端可将获取的图像帧与地图中的节点图像进行匹配,在匹配成功时,定位该匹配的节点图像的地图节点,查询对应于该地图节点所存储的在现实场景中的位置,也就是终端当前的位置。终端还可获取惯性传感器(imu,inertialmeasurementunit)采集的传感器数据,根据传感器数据,确定当前终端的姿态。这样,即可根据当前终端的位置和姿态,计算当前相机坐标空间与世界坐标空间的刚体变换矩阵。

可以理解,终端在构建地图时,可以事先计算参考地图节点处,相机坐标空间与时间坐标空间的刚体变换矩阵,这样,其他地图节点位置的相机坐标空间与时间坐标空间的刚体变换矩阵,即可根据当前地图节点与参考地图节点的位置与姿态变化,得到当前相机坐标空间与世界坐标空间的刚体变换矩阵。终端也可实时根据物点的世界坐标位置和像点在当前相机坐标空间中的相机坐标位置之间的转换关系,确定世界坐标空间和当前相机坐标空间之间的当前刚体变换矩阵。

在本实施例中,结合当前采集的图像帧的图像特征,以及惯性传感器采集的传感器数据对当前终端进行定位,提高了定位的准确性。

进一步地,终端即可根据世界坐标空间和当前相机坐标空间之间的当前刚体变换矩阵,按该刚体变换矩阵将世界坐标位置变换为相机坐标空间中的相机坐标位置。

在一个实施例中,按照相机坐标位置,在当前播放的图像帧中渲染虚拟入口,包括:将虚拟入口的模型顶点投影为图像坐标空间中相应的像素点;根据各模型顶点间的连接关系,将模型顶点相应的像素点组合为图元;将光栅化后的图元按照图元中各像素点的像素值,在图像坐标空间中对应于相机坐标位置的图像坐标位置处,渲染得到虚拟入口。

其中,虚拟入口的模型是事先设置完成的模型。模型参数也是事先设置好的。模型参数包括模型顶点参数和模型顶点之间的连接关系。模型顶点参数包括模型顶点在模型坐标空间中的模型坐标位置、模型顶点的颜色以及模型纹理坐标。图元是点、线或面等基本图形。光栅化是将图元转化为一组二维图像的过程,这些二维图像代表着可在屏幕上绘制的像素。通俗地说,图元装配得到的是顶点组成的图形,光栅化是根据图形的形状,插值出那个图形区域的像素。

具体地,终端可通过自模型坐标空间、世界坐标空间、相机坐标空间至图像坐标空间之间的变换关系,将将虚拟入口的模型顶点投影为图像坐标空间中相应的像素点。然后根据各模型顶点间的连接关系,将模型顶点相应的像素点组合为图元,实现图元装配。再对图元进行光栅化以及着色,在图像坐标空间中对应于相机坐标位置的图像坐标位置处,渲染得到虚拟入口。终端具体可依据opengl(opengraphicslibrar开放图形库)进行虚拟模型的绘制。

终端可以在采集的图像帧中,图像坐标空间中对应于相机坐标位置的图像坐标位置处渲染得到虚拟入口后,将得到的渲染虚拟入口后的图像帧放入帧缓存区,等待显示;也可直接在终端屏幕上进行显示。

在一个实施例中,该图像处理方法还包括:构建地图的步骤,该构建地图的步骤包括:从按时序采集的图像帧中选取图像帧;当选取的图像帧的图像特征符合节点图像的图像特征时,获取选取的图像帧为节点图像;确定获取的节点图像在地图中相应的地图节点;对应于确定的地图节点存储获取的节点图像的图像特征,及采集获取的节点图像时在现实场景中的位置。

其中,选取的图像帧,可以是采集的图像帧中的关键帧。

在一个实施例中,终端可接收用户选择指令,根据该用户选择指令,从采集的图像帧中选取图像帧。终端也可按照预设间隔帧数从采集的图像帧中选取图像帧。比如,每隔20帧图像帧后选取图像帧。

预设的节点图像的图像特征是预设的用于选择节点图像的图像特征。符合预设的节点图像的图像特征可以是图像中包括的特征点与已有节点图像包括的特征点中相匹配的特征点的数量超过预设数量,也可以是包括的特征点与已有节点图像包括的特征点中相匹配特征点占已有节点图像包括的特征点的比例低于预设比例。

举例说明,假设最近添加的节点图像包括的特征点数量为100,当前选取的图像帧包括的特征点数量为120。预设数量为50,预设比例为90%。其中,若当前选取的图像帧包括的特征点与最近添加的节点图像包括的特征点中相匹配的特征点的数量为70。那么,当前图像帧中包括的特征点与已有节点图像包括的特征点匹配的数量超过预设数量,可判定当前选取的图像帧的特征符合预设的节点图像的特征。

在一个实施例中,终端在获取构建地图的指令后,可按照固定或动态的帧率采集图像帧,选取采集的图像帧包括的特征点的数量大于预设数量阈值的图像帧为初始的节点图像,确定该节点图像在地图中相应的地图节点,以及该节点图像包括的特征点在地图中相应的位置,构建局部地图。终端再从按时序采集的图像帧中选取图像帧,将选取符合预设的节点图像的特征的图像帧作为后续的节点图像,直至得到全局地图。

具体地,终端可以初始的节点图像为参考节点图像,追踪参考节点图像中的特征点。当选取的图像帧包括的特征点与参考节点图像包括的特征点的匹配数量低于第一预设数量且高于第二预设数量时,将选取的图像帧作为节点图像。当选取的图像帧包括的特征点与参考节点图像包括的特征点的匹配数量低于第二预设数量时,将最近获取的节点图像为参考节点图像,继续进行图像追踪,以选取节点图像。

进一步地,终端可确定在自然空间中采集该获取的节点图像投影于地图空间中的地图节点。终端可提取在获取的节点图像时序靠前的节点图像的特征,计算时序靠前的节点图像的特征与获取的节点图像的变化矩阵,根据该变化矩阵得到采集时序靠前的节点图像时的位置到采集获取的节点图像时的位置的变化量,再根据该变化量确定获取的节点图像在地图中相应的地图节点。

其中,变化矩阵是二维图像的特征到二维图像的特征之间的相似变化关系。具体地,终端可提取获取的节点图像的图像特征,地图中已有的节点对应的节点图像的图像特征进行匹配,获取匹配成功的图像特征分别在获取的节点图像和已有的节点图像中的位置。获取的节点图像为在后采集的图像帧,已有的节点图像为在后采集的图像帧。终端即可根据得到的匹配的特性特征在先后采集的两帧图像帧上的位置确定先后采集的两帧图像帧之间的变化矩阵,从而得到终端采集这两帧图像帧时的位置变化和姿态变化,再根据在前采集的图像的位置和姿态,即可得到在后采集的图像的位置和姿态。

在一个实施例中,地图中已有的节点对应的节点图像可以是一帧或者多帧。终端也可将获取的节点图像的特征与多个已有的节点对应的节点图像的特征比较,得到在采集后的图像帧与多个在先采集的图像帧的变化矩阵,再根据多个变化矩阵综合得到在后采集的图像的位置和姿态。比如,对计算得到的多个位置变化和姿态变化加权求平均等。

在本实施例中,通过节点图像的特征之间的变化矩阵,得到当前获取的节点图像与在前已有的节点图像的转化关系,从而实现由在前的图像帧在地图中的位置推测当前图像帧的在地图中的位置,实现实时定位。

具体地,终端可提取节点图像的图像特征,将节点图像的图像特征对应于节点图像相应的地图节点存储,可在需要进行图像特征比较时,直接根据地图节点查找对应的节点图像的图像特征,以节省存储空间提高查找效率。

终端还可将采集获取的节点图像时在现实场景中的位置,以在终端定位时,直接根据地图节点查找对应的节点图像存储的位置,以提高查找效率。

在本实施例中,通过自身采集图像帧,再对采集的图像帧进行处理即可自动进行地图构建,避免了需要大量具备专业绘图能力的工作人员人工对环境进行测绘,对工作人员能力要求高且劳动量大的问题,提高地图构建的效率。

在一个实施例中,虚拟内容为全景视频。该图像处理方法还包括:确定虚拟入口对应于现实场景中的空间区域;在当前终端的位置经过空间区域后,则直接显示全景视频中当前视野区域内的视频画面。

其中,全景视频是利用3d摄像机进行全方位360度进行拍摄的视频。用户在观看全景视频的时候,可以随意调节视角进行360度全景观看。虚拟入口对应于现实场景中的空间区域,是虚拟入口在相机坐标空间中所占空间在世界坐标空间中的投影。该空间区域可以是平面空间区域,即没有厚度;也可以是立体空间区域,即有厚度。对用户而言,即让用户感知为现实场景中某个固定的位置出现了虚拟入口(虚拟的房间门),当用户手持终端向该位置移动时,感知为走向该虚拟入口(虚拟的房间门)。

具体地,当前终端的位置经过空间区域后,通俗地理解为用户穿过房间门进入了另一个房间或空间。终端可以终端当前位置为球心建立三维球体模型,将全景视频以纹理方式渲染到球面内侧。这样,终端即可直接显示全景视频中终端当前视野区域内的视频画面。当前视野区域与终端当前的姿态有关。

图8示出了一个实施例中当前终端的位置经过空间区域后的渲染原理图。参考图8,图8(a)示出了当前终端的位置经过空间区域的示意图,可以明显看到终端的位置是穿过虚拟入口801所在的区域,从虚拟入口的一侧运动至虚拟入口的另一侧。图8(b)示出了在渲染全景视频的三维球体模型中确定当前视野区域内的视频画面的示意图,可以明显看出,三维球体模型的球心即为终端位置,也就是终端摄像头作为观测点的位置,当前视野区域810与球面820交集区域830的视频画面即为用于在终端屏幕上显示的画面。图8(c)示出了交集区域830的视频画面在终端界面显示的简化示意图,图8(d)示出了交集区域830的视频画面在终端界面显示时的截图。

在一个实施例中,当前终端的位置经过空间区域后,终端的姿态可根据用户指令进行变化。当终端的姿态发生变化时,终端当前视野区域随即发生变化。终端即可实时显示全景视频中当前视野区域内的视频画面。

在一个实施例中,图像处理方法还包括:在直接显示全景视频中当前视野区域内的视频画面后,则在当前终端的位置未再次穿过空间区域、且当前视野区域经过移动后覆盖虚拟入口时,则确定当前视野区域中位于虚拟入口内的视野区域;在虚拟入口中显示获取的图像帧中确定的视野区域内的画面。

可以理解,当前终端的位置未再次穿过空间区域、且当前视野区域经过移动后覆盖虚拟入口,即为当前终端并未位移穿过虚拟入口,而是调整当前终端的姿态,使得虚拟入口重新进入终端当前视野区域内。

具体地,终端在直接显示全景视频中当前视野区域内的视频画面后,当检测到当前终端的位置未再次穿过空间区域、且当前视野区域经过移动后覆盖虚拟入口时,则确定当前视野区域中位于虚拟入口内的视野区域,在虚拟入口中显示获取的图像帧中确定的视野区域内的画面。这样,即实现在虚拟入口内显示现实世界,在虚拟入口外显示虚拟内容。

通俗地理解为,用户通过房间门进入房间后,房间门即在用户身后,不再出现在用户视野中。用户在房间内调整视野进行观看,看到房间各处的场景画面,也就是本实施例中当前终端的位置经过空间区域后,则直接显示的全景视频中当前视野区域内的视频画面,用户即看到的是虚拟入口内的全景视频。当用户转身后,房间门又重新出现在用户视野中,用户通过房间门看到的是房间外的现实画面,也就是本实施例中在当前终端的位置未再次穿过空间区域、且当前视野区域经过移动后覆盖虚拟入口时,则确定当前视野区域中位于虚拟入口内的视野区域;在虚拟入口中显示获取的图像帧中确定的视野区域内的画面。这样用户看到的是虚拟入口内的现实场景的画面。

图9示出了一个实施例中当前终端的位置未再次穿过空间区域、且当前视野区域经过移动后覆盖虚拟入口时,终端界面显示的界面示意图。参考图9,虚拟入口内的是现实场景的画面,虚拟入口外则为虚拟内容。

在一个实施例中,图像处理方法还包括:在当前终端的位置围绕空间区域移动时,则确定当前视野区域中位于虚拟入口内的视野区域;在虚拟入口中显示全景视频中确定的视野区域内的视频画面。

图10示出了一个实施例中当前终端的位置围绕空间区域移动时的渲染原理图。参考图10,图10左图示出了当前终端的位置围绕空间区域移动时的示意图,可以明显看到终端的位置是绕过虚拟入口1001所在的区域,从虚拟入口的一侧运动至虚拟入口的另一侧。终端在以图10左图的移动方式移动时,终端显示的画面汇总,虚拟入口内的始终是虚拟内容,虚拟入口外则始终为现实场景画面,如图10右图所示。

在一个具体的应用场景中,用户手持终端,通过终端上用于调用摄像头的应用程序打开终端上内置的摄像头,这样,终端可在摄像头当前的视野下,采集现实场景中的图像帧。用户手持终端在后置摄像头的视野区域内用手部食指指尖画出了圆圈,意图在现实场景中手指画圈的那个位置出现虚拟门。此时,终端即在该位置相应于终端屏幕的图像位置渲染虚拟入口。虚拟入口外显示现实场景画面,虚拟入口内显示全景视频的局部视频画面。

用户手持终端向虚拟入口映射在现实场景中的位置靠近,则终端屏幕上的虚拟入口逐渐变大,直至在终端穿过该位置后不再出现在终端屏幕上,此时用户看到的是呈现在终端屏幕上的全景视频的局部视频画面。用户可调整后置摄像头的视野区域以观看不同区域的全景视频画面。

用户可手持终端向后退以再次穿过该位置,此时,虚拟入口出现在终端屏幕上并逐渐变小,虚拟入口外显示现实场景画面,虚拟入口内显示全景视频的局部视频画面。用户可手持终端向转身,但未再次穿过该位置,此时,虚拟入口出现在终端屏幕上,虚拟入口外显示全景视频的局部视频画面,虚拟入口内显示现实场景画面。

用户手持终端围绕虚拟入口映射在现实场景中的位置,此时,虚拟入口始终出现在终端屏幕上,虚拟入口外显示现实场景画面,虚拟入口内显示全景视频的局部视频画面。

上述实施例中,提供了当前终端的位置在经过虚拟入口或围绕虚拟入口移动时,虚拟入口内外的渲染内容的变化。使得用户可以移动位置从入口外穿越到入口中,查看入口内的虚拟世界,也可以从入口内移动到入口外查看外面的现实世界,体验虚拟和现实的穿越效果。

在一个实施例中,虚拟内容为全景视频。该图像处理方法还包括:将采集的视频帧绘制于第一球体模型的球面内侧,并将全景视频的全景视频画面绘制于第二球体模型的球面内侧;确定虚拟入口对应于现实场景中的空间区域;在当前终端的位置未曾穿过空间区域、或者当前终端的位置穿过空间区域的次数为偶数时,则按照渲染顺序和模型深度的逆序,根据当前视野区域内的第一球体模型、第二球体模型以及全透明的第三模型渲染得到用于显示的画面;其中,第一球体模型的球半径大于第二球体模型的球半径;第一球体模型的模型深度大于第二球体模型的模型深度;第二球体模型的模型深度大于第三模型的模型深度;第三模型用于在当前视野区域覆盖虚拟入口时,触发取消渲染当前视野区域中位于虚拟入口外的视野区域中的第二球体模型;或者,用于在视野区域未覆盖虚拟入口时触发取消渲染第二球体模型。

其中,渲染顺序是渲染模型的先后顺序。模型深度是模型边界离观测点的距离。模型深度越深,模型边界离观测点的距离越远。观测点是在模型内部观测模型的位置,观测点视野区域内渲染得到的画面,即为终端屏幕显示的画面。通常情况下,在渲染视野区域内的模型得到用于显示的画面时,通常是按照模型深度的逆序渲染,也就是先渲染离观测点的距离近的模型。渲染顺序则是人为设定的在渲染时需要依据的顺序。

本实施例中,同时依据渲染顺序和模型深度的逆序进行渲染。这样,在渲染某一模型时,已渲染模型深度小于该模型的其他模型时,该模型则不再渲染。具体地,终端可在建模时,即在深度缓冲(depthbuffer)中记录各模型的深度信息(writestodepthbuffer),并添加深度信息测试标记(readstodepthbuffer)。添加深度信息测试标记,表示模型在绘制时,终端会读取该模型的模型深度,根据该模型深度进行渲染。

具体地,终端可依据模型坐标空间与世界坐标空间的变化关系、虚拟入口在世界坐标系中的世界坐标位置,确定虚拟入口在模型坐标空间中的模型坐标位置。然后以该模型坐标位置为球心建立第一球体模型和第二球体模型。终端可再将采集的视频帧以纹理方式绘制于第一球体模型的球面内侧,并将全景视频的全景视频画面以纹理方式绘制于第二球体模型的球面内侧。

在一个实施例中,终端也可在观测点的前方创建可以投影到终端屏幕上的模型平面,这个模型平面随着观测点的移动和转向永远保持在观测点的前方。终端再在这个模型平面上绘制从现实场景中采集的图像帧,这样即实现将获取的图像帧按照采集的时序逐帧播放。

可以理解,在触发条件满足后,首次渲染虚拟入口时,虚拟入口内为虚拟内容,虚拟入口外为现实场景。那么当前终端的位置未曾穿过空间区域、或者当前终端的位置穿过空间区域的次数为偶数时,也就是虚拟入口内仍为虚拟内容,虚拟入口外仍为现实场景。

这样,为了保持在虚拟入口内仍为虚拟内容,虚拟入口外仍为现实场景,终端可创建包围观测点的第三模型,将渲染顺序(renderingorder)设置为:第一球体模型→第三模型→第二球体模型。其中,虚拟入口位于第三模型的界面上,且虚拟入口所在的区域为空。

图11示出了一个实施例中模型的剖面示意图。参考图11(a),包括第一球体模型1101、第二球体模型1102、第三模型1103和虚拟入口1104。此时,观测点1105离虚拟入口1104较远。

这样,在观测点的视野区域的视线上存在第三模型时,由于第三模型的渲染顺序优先于第二球体模型、且第三模型的模型深度小于第二球体模型,此时终端则仅渲染第一球体模型和第三模型得到用于显示的画面。终端还可将第三模型的透明度设置为全透明,那么此时用于显示的画面实际上即为在第一球体模型的球面内侧绘制从现实场景采集的视频帧,那就是说保证了虚拟入口外显示现实场景。

继续参考图11(a)起始于观测点1105未经过虚拟入口1104的视线oa,依次经过第三模型、第二球体模型和第一球体模型,如图12(a)所示。这样,在渲染时,由于渲染顺序为:第一球体模型→第三模型→第二球体模型,假设第三模型的颜色为c3,透明度为t3;第二球体模型的颜色为c2,透明度为t2;第一球体模型的颜色为c1,透明度为t1;那么渲染得到的屏幕上的颜色即为:c3*t3+(1-c3)*t1*c1。具体可设置c3为0,即为全透明,c1为1,即为不透明,那么屏幕上的颜色即为第一球体模型的颜色,也就是绘制在第一球体模型球面内侧的从现实场景中采集的图像帧。

在观测点的视野区域的视线上不存在第三模型时,此时终端则仅渲染第一球体模型和第二球体模型得到用于显示的画面。终端具体可设置第二球体模型,为不透明,那么此时用于显示的画面实际上即为在第二球体模型的球面内侧绘制全景视频的视频帧,那就是说保证了虚拟入口内显示虚拟内容。

继续参考图11(a)起始于观测点1105经过虚拟入口1104的视线ob,依次经过第二球体模型和第一球体模型,如图12(b)所示。这样,在渲染时,由于渲染顺序为:第一球体模型→第二球体模型,假设第二球体模型的颜色为c2,透明度为t2;第一球体模型的颜色为c1,透明度为t1;那么渲染得到的屏幕上的颜色即为:c2*t2+(1-c2)*t1*c1。具体可设置c2为1,即为不透明,c1为1,即为不透明,那么屏幕上的颜色即为第二球体模型的颜色,也就是绘制在第二球体模型球面内侧的全景视频的视频帧。

上述实施例中,在用户为进入虚拟入口时,通过第三模型在当前视野区域覆盖虚拟入口时,触发取消渲染当前视野区域中位于虚拟入口外的视野区域中的第二球体模型上的全景视频;在视野区域未覆盖虚拟入口时触发取消渲染第二球体模型上的全景视频。这样保证了用户进入虚拟入口后未看到虚拟入口时,看到的都是全景视频的内容;看到虚拟入口时,虚拟入口内是现实场景的内容,虚拟入口外则是全景视频的内容。

在一个实施例中,该图像处理方法还包括:在当前终端的位置穿过空间区域的次数为奇数时,则按照渲染顺序和模型深度的逆序,根据当前视野区域内的第一球体模型、第二球体模型以及全透明的第四模型渲染得到用于显示的画面;其中,第二球体模型的模型深度大于第四模型的模型深度;第四模型用于在当前视野区域覆盖虚拟入口时,触发取消渲染当前视野区域中位于虚拟入口外的视野区域中的第二球体模型;或者,用于在视野区域未覆盖虚拟入口时触发取消渲染第二球体模型。

可以理解,在触发条件满足后,首次渲染虚拟入口时,虚拟入口内为虚拟内容,虚拟入口外为现实场景。那么当前终端的位置穿过空间区域的次数为奇数时,也就是虚拟入口内变化为现实场景,虚拟入口外则变化为虚拟内容场景。

这样,为了保持在虚拟入口内变化为现实场景,虚拟入口外外则变化为虚拟内容场景,终端可创建包围观测点的第四模型,将渲染顺序设置为:第一球体模型→第四模型→第二球体模型。其中,第四模型的界面即为虚拟入口。

参考图11(b),包括第一球体模型1101、第二球体模型1102、第四模型1106和虚拟入口1104。此时,观测点1107离虚拟入口1104较远。

这样,在观测点的视野区域的视线上存在第四模型时,由于第四模型的渲染顺序优先于第二球体模型、且第四模型的模型深度小于第二球体模型,此时终端则仅渲染第一球体模型和第四模型得到用于显示的画面。终端还可将第四模型的透明度设置为全透明,那么此时用于显示的画面实际上即为在第一球体模型的球面内侧绘制从现实场景采集的视频帧,那就是说保证了虚拟入口内显示现实场景。

继续参考图11(b)起始于观测点1107经过虚拟入口1104的视线oc,依次经过第四模型、第二球体模型和第一球体模型,如图12(c)所示。这样,在渲染时,由于渲染顺序为:第一球体模型→第四模型→第二球体模型,假设第四模型的颜色为c4,透明度为t4;第二球体模型的颜色为c2,透明度为t2;第一球体模型的颜色为c1,透明度为t1;那么渲染得到的屏幕上的颜色即为:c4*t4+(1-c4)*t1*c1。具体可设置c4为0,即为全透明,c1为1,即为不透明,那么屏幕上的颜色即为第一球体模型的颜色,也就是绘制在第一球体模型球面内侧的从现实场景中采集的图像帧。

在观测点的视野区域的视线上不存在第三模型时,此时终端则仅渲染第一球体模型和第二球体模型得到用于显示的画面。终端具体可设置第二球体模型,为不透明,那么此时用于显示的画面实际上即为在第二球体模型的球面内侧绘制全景视频的视频帧,那就是说保证了虚拟入口外显示虚拟内容。

继续参考图11(a)起始于观测点1107经过虚拟入口1104的视线ob,依次经过第二球体模型和第一球体模型,如图12(d)所示。这样,在渲染时,由于渲染顺序为:第一球体模型→第二球体模型,假设第二球体模型的颜色为c2,透明度为t2;第一球体模型的颜色为c1,透明度为t1;那么渲染得到的屏幕上的颜色即为:c2*t2+(1-c2)*t1*c1。具体可设置c2为1,即为不透明,c1为1,即为不透明,那么屏幕上的颜色即为第二球体模型的颜色,也就是绘制在第二球体模型球面内侧的全景视频的视频帧。

上述实施例中,在用户为未进入虚拟入口时,通过第四模型在当前视野区域覆盖虚拟入口时,触发取消渲染当前视野区域中位于虚拟入口外的视野区域中的第二球体模型上的全景视频内容;在视野区域未覆盖虚拟入口时触发取消渲染第二球体模型上的全景视频内容。这样保证了用户未进入虚拟入口后未看到虚拟入口时,看到的都是现实场景的内容;看到虚拟入口时,虚拟入口内是全景视频的内容,虚拟入口外则是显示场景的内容。

在另外的实施例中,当观测点离虚拟入口较近时,可在观测点所在位置增加第三模型或第四模型的边界区域,以避免观测点在经过或者围绕虚拟入口移动时,渲染是出现的扰动。图11(c)为当前终端的位置穿过空间区域的次数为奇数、且当前终端的朝向且靠近虚拟入口时的模型剖面图。图11(d)为当前终端的位置未曾穿过空间区域、或者当前终端的位置穿过空间区域的次数为偶数、且当前终端的朝向且靠近虚拟入口时的模型剖面图。图11(e)为当前终端的位置未曾穿过空间区域、或者当前终端的位置穿过空间区域的次数为偶数、且当前终端在虚拟入口一侧绕行时的模型剖面图。

在一个实施例中,在当前终端的位置未曾穿过空间区域、或者当前终端的位置穿过空间区域的次数为偶数、且当前终端从虚拟入口一侧绕行至虚拟入口的另一侧时,第三模型按虚拟入口所在平面进行翻转。这样保证了虚拟入口中仍显示虚拟内容,虚拟入口外仍显示从现实世界采集的图像帧。也就是说,只有在终端经过虚拟入口后,才会交换虚拟入口内外所显示的内容。

通俗地理解,终端在摄像头中渲染一个三维球形空间,球形空间中贴合播放全景视频纹理图像,在球径大于该球的球面上播放从现实场景中采集的图像帧,或者在观测点前方的模型平面上播放从现实场景中采集的图像帧。终端继而在触发条件被满足时,模拟一个任意门,实现在门内展示虚拟世界,门外显示现实世界图像。用户可以移动位置从门外穿越到门洞,查看门内的虚拟世界,也可以从门内移动到门外查看外面的现实世界,体验虚拟和现实的穿越效果。

人进入任意门且离门较远时,以门为第四模型,该第四模型全透明。这样,人透过门看时,门内为现实世界,门外为虚拟世界,即人处于虚拟世界中。人进入任意门且离门很近时,为了防人穿越门是发生渲染抖动,在门对面临时放一个刚好套住门的小房间,门本身为空,小房间为全透明,人透过门看时,门内为现实世界,门外为虚拟世界,即人处于虚拟世界中。

人未进入任意门且离门较远时,以门为局部边界创建包围观测点的第三模型,第三模型上门所在的区域为空,其他区域为全透明,这样,人透过门看时,门内为虚拟世界,门外为现实世界,即人处于现实世界中。人未进入任意门且离门较近时,为了防人穿越门是发生渲染抖动,在第三模型上以门为边界扩展边界,这样,人透过门看时,门内为虚拟世界,门外为现实世界,即人处于现实世界中。人未进入任意门且靠近门的一侧时,为了防人穿越门是发生渲染抖动,扩展第三模型中观测点所在一侧的边界,当人穿过门所在的平面时,第三模型按门所在平面进行翻转。这样,人透过门看时,门内仍为虚拟世界,门外仍为现实世界,即仍处于现实世界中。

可以理解,上述实施例中第三模型以及第三模型的边界可以是平面也可以是曲面。

图13为一个具体的实施例中图像处理方法的流程框图。参考图13,用户手持终端,通过终端的摄像头从现实场景中采集图像帧,终端一方面根据采集的图像帧创建地图,另一方面检测图像帧中是否包括手部区域。若终端未在检测到图像帧中包括手部区域,则检测继续检测后续采集的图像帧。若终端在检测到图像帧中包括手部区域时,则继续判断该手部区域所对应的手势类型是否为触发类型。若否,则检测继续检测后续采集的图像帧;若是,则识别该图像帧中手部区域的运动参考点,在运动参考点处渲染粒子动画,以突出显示手部运动形成的轨迹。终端可再继续判断该轨迹是否满足触发条件,若否,则检测继续检测后续采集的图像帧;若是,则触发渲染虚拟入口。

终端继而确定现实场景中手部所对应的位置,按照该位置在当前播放的图像帧中渲染虚拟入口,在虚拟入口中显示全景视频,在虚拟入口外显示现实场景。用户可手持终端移动,终端继而判断是否经过虚拟入口。若经过虚拟入口,则直接显示全景视频中当前视野区域内的视频画面。若未经过虚拟入口,则依然在虚拟入口中显示全景视频,在虚拟入口外显示现实场景。终端还可根据用户指令进行录屏,将录屏得到的视频进行分享。

在一个实施例中,终端还可展示引导信息。引导信息可以是文本、语音或者图片等。引导信息包括引导用户操控目标物运动形成满足触发条件的信息。比如“伸出手指,在后置摄像头前画圈,触发开启任意门”,可参考图3(b)。引导信息还可以包括引导用户向虚拟入口移动的信息。比如,指向虚拟入口的箭头等,可参考图4(b)。

应该理解的是,虽然上述各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

如图14所示,在一个实施例中,提供了一种图像处理装置1400。参照图14,该图像处理装置1400包括:获取模块1401、播放模块1402、确定模块1403和渲染模块1404。

获取模块1401,用于获取从现实场景中采集的图像帧。

播放模块1402,用于将获取的图像帧按照采集的时序逐帧播放。

确定模块1403,用于当获取的多帧图像帧中目标物运动所形成的轨迹满足触发条件时,确定现实场景中目标物所对应的位置。

渲染模块1404,用于按照位置在当前播放的图像帧中渲染虚拟入口;在虚拟入口中显示虚拟内容。

在一个实施例中,目标物为手部。确定模块1403还用于从获取的图像帧中分割出手部图像;识别出手部图像所对应的手势类型;当手势类型为触发类型时,在图像帧中确定运动参考点;按照运动参考点确定手部运动所形成的轨迹。

在一个实施例中,确定模块1403还用于通过手部识别模型,将获取的图像帧编码为语义分割特征矩阵;解码语义分割特征矩阵得到语义分割图像;语义分割图像中的像素点,具有表示所属分类类别的像素值,且编码自的图像帧中的像素点对应;根据属于手部类别的像素点从图像中分割出手部图像。

在一个实施例中,渲染模块1404还用于当触发条件未满足时,在播放的视频帧中,将轨迹所经过的像素点的像素值替换为预设像素值;当触发条件被满足时,按照位置在当前播放的图像帧中,播放预设动画。

在一个实施例中,确定模块1403还用于确定目标物在世界坐标空间中的世界坐标位置。渲染模块1404还用于按照相机坐标空间中对应于世界坐标位置的相机坐标位置,在当前播放的图像帧中渲染虚拟入口。

在一个实施例中,渲染模块1404还用于获取当前终端的位置和姿态;根据当前终端的位置和姿态,确定当前的相机坐标空间与世界坐标空间的变换矩阵;按变换矩阵将世界坐标位置变换为相机坐标空间中的相机坐标位置;按照相机坐标位置,在当前播放的图像帧中渲染虚拟入口。

在一个实施例中,渲染模块1404还用于从地图中挑选与获取的图像帧匹配的地图节点;查询对应于地图节点所存储的现实场景中的位置;获取惯性传感器采集的传感器数据;根据传感器数据,确定当前终端在现实场景中的姿态。

如图15所示,在一个实施例中,图像处理装置1400还包括地图构建模块1405,用于从按时序采集的图像帧中选取图像帧;当选取的图像帧的图像特征符合节点图像的图像特征时,获取选取的图像帧为节点图像;确定获取的节点图像在地图中相应的地图节点;对应于确定的地图节点存储获取的节点图像的图像特征,及采集获取的节点图像时在现实场景中的位置。

在一个实施例中,渲染模块1404还用于将虚拟入口的模型顶点投影为图像坐标空间中相应的像素点;根据各模型顶点间的连接关系,将模型顶点相应的像素点组合为图元;将光栅化后的图元按照图元中各像素点的像素值,在图像坐标空间中对应于相机坐标位置的图像坐标位置处,渲染得到虚拟入口。

在一个实施例中,虚拟内容为全景视频。渲染模块1404还用于确定虚拟入口对应于现实场景中的空间区域;在当前终端的位置经过空间区域后,则直接显示全景视频中当前视野区域内的视频画面。

在一个实施例中,渲染模块1404还用于在直接显示全景视频中当前视野区域内的视频画面后,则在当前终端的位置未再次穿过空间区域、且当前视野区域经过移动后覆盖虚拟入口时,则确定当前视野区域中位于虚拟入口内的视野区域;在虚拟入口中显示获取的图像帧中确定的视野区域内的画面。

在一个实施例中,渲染模块1404还用于在当前终端的位置围绕空间区域移动时,则确定当前视野区域中位于虚拟入口内的视野区域;在虚拟入口中显示全景视频中确定的视野区域内的视频画面。

在一个实施例中,虚拟内容为全景视频。渲染模块1404还用于将采集的视频帧绘制于第一球体模型的球面内侧,并将全景视频的全景视频画面绘制于第二球体模型的球面内侧;确定虚拟入口对应于现实场景中的空间区域;在当前终端的位置未曾穿过空间区域、或者当前终端的位置穿过空间区域的次数为偶数时,则按照渲染顺序和模型深度的逆序,根据当前视野区域内的第一球体模型、第二球体模型以及全透明的第三模型渲染得到用于显示的画面;其中,第一球体模型的球半径大于第二球体模型的球半径;第一球体模型的模型深度大于第二球体模型的模型深度;第二球体模型的模型深度大于第三模型的模型深度;第三模型用于在当前视野区域覆盖虚拟入口时,触发取消渲染当前视野区域中位于虚拟入口外的视野区域中的第二球体模型;或者,用于在视野区域未覆盖虚拟入口时触发取消渲染第二球体模型。

在一个实施例中,渲染模块1404还用于在当前终端的位置穿过空间区域的次数为奇数时,则按照渲染顺序和模型深度的逆序,根据当前视野区域内的第一球体模型、第二球体模型以及全透明的第四模型渲染得到用于显示的画面;其中,第二球体模型的模型深度大于第四模型的模型深度;第四模型用于在当前视野区域覆盖虚拟入口时,触发取消渲染当前视野区域中位于虚拟入口外的视野区域中的第二球体模型;或者,用于在视野区域未覆盖虚拟入口时触发取消渲染第二球体模型。

图16示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端110。如图16所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入设备和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现图像处理方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行图像处理方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏等,输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,也可以是外接的键盘、触控板或鼠标等。本领域技术人员可以理解,图16中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,本申请提供的图像处理装置可以实现为一种计算机程序的形式,计算机程序可在如图16所示的计算机设备上运行,计算机设备的非易失性存储介质可存储组成该图像处理装置的各个程序模块,比如,图14所示的获取模块1401、播放模块1402、确定模块1403和渲染模块1404等。各个程序模块组成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的图像处理方法中的步骤。

例如,图16所示的计算机设备可以通过如图14所示的图像处理装置1400中的获取模块1401获取从现实场景中采集的图像帧。通过播放模块1402将获取的图像帧按照采集的时序逐帧播放。通过确定模块1403当获取的多帧图像帧中目标物运动所形成的轨迹满足触发条件时,确定现实场景中目标物所对应的位置。通过渲染模块1404按照位置在当前播放的图像帧中渲染虚拟入口;在虚拟入口中显示虚拟内容。

在一个实施例中,提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时,使得处理器执行以下步骤:获取从现实场景中采集的图像帧;将获取的图像帧按照采集的时序逐帧播放;当获取的多帧图像帧中目标物运动所形成的轨迹满足触发条件时,确定现实场景中目标物所对应的位置;按照位置在当前播放的图像帧中渲染虚拟入口;在虚拟入口中显示虚拟内容。

在一个实施例中,目标物为手部。该计算机程序还使得处理器执行以下步骤:从获取的图像帧中分割出手部图像;识别出手部图像所对应的手势类型;当手势类型为触发类型时,在图像帧中确定运动参考点;按照运动参考点确定手部运动所形成的轨迹。

在一个实施例中,从获取的图像帧中分割出手部图像,包括:通过手部识别模型,将获取的图像帧编码为语义分割特征矩阵;解码语义分割特征矩阵得到语义分割图像;语义分割图像中的像素点,具有表示所属分类类别的像素值,且编码自的图像帧中的像素点对应;根据属于手部类别的像素点从图像中分割出手部图像。

在一个实施例中,该计算机程序还使得处理器执行以下步骤:当触发条件未满足时,在播放的视频帧中,将轨迹所经过的像素点的像素值替换为预设像素值;当触发条件被满足时,按照位置在当前播放的图像帧中,播放预设动画。

在一个实施例中,确定现实场景中目标物所对应的位置,包括:确定目标物在世界坐标空间中的世界坐标位置;按照位置在当前播放的图像帧中渲染虚拟入口,包括:按照相机坐标空间中对应于世界坐标位置的相机坐标位置,在当前播放的图像帧中渲染虚拟入口。

在一个实施例中,按照相机坐标空间中对应于世界坐标位置的相机坐标位置,在当前播放的图像帧中渲染虚拟入口,包括:获取当前终端的位置和姿态;根据当前终端的位置和姿态,确定当前的相机坐标空间与世界坐标空间的变换矩阵;按变换矩阵将世界坐标位置变换为相机坐标空间中的相机坐标位置;按照相机坐标位置,在当前播放的图像帧中渲染虚拟入口。

在一个实施例中,获取当前终端的位置和姿态,包括:从地图中挑选与获取的图像帧匹配的地图节点;查询对应于地图节点所存储的现实场景中的位置;获取惯性传感器采集的传感器数据;根据传感器数据,确定当前终端在现实场景中的姿态。

在一个实施例中,该计算机程序还使得处理器执行以下步骤:从按时序采集的图像帧中选取图像帧;当选取的图像帧的图像特征符合节点图像的图像特征时,获取选取的图像帧为节点图像;确定获取的节点图像在地图中相应的地图节点;对应于确定的地图节点存储获取的节点图像的图像特征,及采集获取的节点图像时在现实场景中的位置。

在一个实施例中,按照相机坐标位置,在当前播放的图像帧中渲染虚拟入口,包括:将虚拟入口的模型顶点投影为图像坐标空间中相应的像素点;根据各模型顶点间的连接关系,将模型顶点相应的像素点组合为图元;将光栅化后的图元按照图元中各像素点的像素值,在图像坐标空间中对应于相机坐标位置的图像坐标位置处,渲染得到虚拟入口。

在一个实施例中,虚拟内容为全景视频;该计算机程序还使得处理器执行以下步骤:确定虚拟入口对应于现实场景中的空间区域;在当前终端的位置经过空间区域后,则直接显示全景视频中当前视野区域内的视频画面。

在一个实施例中,该计算机程序还使得处理器执行以下步骤:在直接显示全景视频中当前视野区域内的视频画面后,则在当前终端的位置未再次穿过空间区域、且当前视野区域经过移动后覆盖虚拟入口时,则确定当前视野区域中位于虚拟入口内的视野区域;在虚拟入口中显示获取的图像帧中确定的视野区域内的画面。

在一个实施例中,该计算机程序还使得处理器执行以下步骤:在当前终端的位置围绕空间区域移动时,则确定当前视野区域中位于虚拟入口内的视野区域;在虚拟入口中显示全景视频中确定的视野区域内的视频画面。

在一个实施例中,虚拟内容为全景视频;该计算机程序还使得处理器执行以下步骤:将采集的视频帧绘制于第一球体模型的球面内侧,并将全景视频的全景视频画面绘制于第二球体模型的球面内侧;确定虚拟入口对应于现实场景中的空间区域;在当前终端的位置未曾穿过空间区域、或者当前终端的位置穿过空间区域的次数为偶数时,则按照渲染顺序和模型深度的逆序,根据当前视野区域内的第一球体模型、第二球体模型以及全透明的第三模型渲染得到用于显示的画面;其中,第一球体模型的球半径大于第二球体模型的球半径;第一球体模型的模型深度大于第二球体模型的模型深度;第二球体模型的模型深度大于第三模型的模型深度;第三模型用于在当前视野区域覆盖虚拟入口时,触发取消渲染当前视野区域中位于虚拟入口外的视野区域中的第二球体模型;或者,用于在视野区域未覆盖虚拟入口时触发取消渲染第二球体模型。

在一个实施例中,该计算机程序还使得处理器执行以下步骤:在当前终端的位置穿过空间区域的次数为奇数时,则按照渲染顺序和模型深度的逆序,根据当前视野区域内的第一球体模型、第二球体模型以及全透明的第四模型渲染得到用于显示的画面;其中,第二球体模型的模型深度大于第四模型的模型深度;第四模型用于在当前视野区域覆盖虚拟入口时,触发取消渲染当前视野区域中位于虚拟入口外的视野区域中的第二球体模型;或者,用于在视野区域未覆盖虚拟入口时触发取消渲染第二球体模型。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中储存有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:获取从现实场景中采集的图像帧;将获取的图像帧按照采集的时序逐帧播放;当获取的多帧图像帧中目标物运动所形成的轨迹满足触发条件时,确定现实场景中目标物所对应的位置;按照位置在当前播放的图像帧中渲染虚拟入口;在虚拟入口中显示虚拟内容。

在一个实施例中,目标物为手部。该计算机程序还使得处理器执行以下步骤:从获取的图像帧中分割出手部图像;识别出手部图像所对应的手势类型;当手势类型为触发类型时,在图像帧中确定运动参考点;按照运动参考点确定手部运动所形成的轨迹。

在一个实施例中,从获取的图像帧中分割出手部图像,包括:通过手部识别模型,将获取的图像帧编码为语义分割特征矩阵;解码语义分割特征矩阵得到语义分割图像;语义分割图像中的像素点,具有表示所属分类类别的像素值,且编码自的图像帧中的像素点对应;根据属于手部类别的像素点从图像中分割出手部图像。

在一个实施例中,该计算机程序还使得处理器执行以下步骤:当触发条件未满足时,在播放的视频帧中,将轨迹所经过的像素点的像素值替换为预设像素值;当触发条件被满足时,按照位置在当前播放的图像帧中,播放预设动画。

在一个实施例中,确定现实场景中目标物所对应的位置,包括:确定目标物在世界坐标空间中的世界坐标位置;按照位置在当前播放的图像帧中渲染虚拟入口,包括:按照相机坐标空间中对应于世界坐标位置的相机坐标位置,在当前播放的图像帧中渲染虚拟入口。

在一个实施例中,按照相机坐标空间中对应于世界坐标位置的相机坐标位置,在当前播放的图像帧中渲染虚拟入口,包括:获取当前终端的位置和姿态;根据当前终端的位置和姿态,确定当前的相机坐标空间与世界坐标空间的变换矩阵;按变换矩阵将世界坐标位置变换为相机坐标空间中的相机坐标位置;按照相机坐标位置,在当前播放的图像帧中渲染虚拟入口。

在一个实施例中,获取当前终端的位置和姿态,包括:从地图中挑选与获取的图像帧匹配的地图节点;查询对应于地图节点所存储的现实场景中的位置;获取惯性传感器采集的传感器数据;根据传感器数据,确定当前终端在现实场景中的姿态。

在一个实施例中,该计算机程序还使得处理器执行以下步骤:从按时序采集的图像帧中选取图像帧;当选取的图像帧的图像特征符合节点图像的图像特征时,获取选取的图像帧为节点图像;确定获取的节点图像在地图中相应的地图节点;对应于确定的地图节点存储获取的节点图像的图像特征,及采集获取的节点图像时在现实场景中的位置。

在一个实施例中,按照相机坐标位置,在当前播放的图像帧中渲染虚拟入口,包括:将虚拟入口的模型顶点投影为图像坐标空间中相应的像素点;根据各模型顶点间的连接关系,将模型顶点相应的像素点组合为图元;将光栅化后的图元按照图元中各像素点的像素值,在图像坐标空间中对应于相机坐标位置的图像坐标位置处,渲染得到虚拟入口。

在一个实施例中,虚拟内容为全景视频;该计算机程序还使得处理器执行以下步骤:确定虚拟入口对应于现实场景中的空间区域;在当前终端的位置经过空间区域后,则直接显示全景视频中当前视野区域内的视频画面。

在一个实施例中,该计算机程序还使得处理器执行以下步骤:在直接显示全景视频中当前视野区域内的视频画面后,则在当前终端的位置未再次穿过空间区域、且当前视野区域经过移动后覆盖虚拟入口时,则确定当前视野区域中位于虚拟入口内的视野区域;在虚拟入口中显示获取的图像帧中确定的视野区域内的画面。

在一个实施例中,该计算机程序还使得处理器执行以下步骤:在当前终端的位置围绕空间区域移动时,则确定当前视野区域中位于虚拟入口内的视野区域;在虚拟入口中显示全景视频中确定的视野区域内的视频画面。

在一个实施例中,虚拟内容为全景视频;该计算机程序还使得处理器执行以下步骤:将采集的视频帧绘制于第一球体模型的球面内侧,并将全景视频的全景视频画面绘制于第二球体模型的球面内侧;确定虚拟入口对应于现实场景中的空间区域;在当前终端的位置未曾穿过空间区域、或者当前终端的位置穿过空间区域的次数为偶数时,则按照渲染顺序和模型深度的逆序,根据当前视野区域内的第一球体模型、第二球体模型以及全透明的第三模型渲染得到用于显示的画面;其中,第一球体模型的球半径大于第二球体模型的球半径;第一球体模型的模型深度大于第二球体模型的模型深度;第二球体模型的模型深度大于第三模型的模型深度;第三模型用于在当前视野区域覆盖虚拟入口时,触发取消渲染当前视野区域中位于虚拟入口外的视野区域中的第二球体模型;或者,用于在视野区域未覆盖虚拟入口时触发取消渲染第二球体模型。

在一个实施例中,该计算机程序还使得处理器执行以下步骤:在当前终端的位置穿过空间区域的次数为奇数时,则按照渲染顺序和模型深度的逆序,根据当前视野区域内的第一球体模型、第二球体模型以及全透明的第四模型渲染得到用于显示的画面;其中,第二球体模型的模型深度大于第四模型的模型深度;第四模型用于在当前视野区域覆盖虚拟入口时,触发取消渲染当前视野区域中位于虚拟入口外的视野区域中的第二球体模型;或者,用于在视野区域未覆盖虚拟入口时触发取消渲染第二球体模型。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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