掌桥专利:专业的专利平台
掌桥专利
首页

用于确定全景图中物体选取状态的方法及装置

文献发布时间:2024-04-18 19:58:21


用于确定全景图中物体选取状态的方法及装置

技术领域

本公开涉及三维纹理和图像处理技术领域,尤其涉及一种用于确定全景图中物体选取状态的方法及装置。

背景技术

在空间虚拟现实(Virtual Reality,简称为VR)全景图中,物体通常是以像素值的方式表示,当用户在屏幕上触发点击选取操作时,设备通常无法根据像素点的位置判断空间VR全景图中的物体是否被选中,进而无法触发用户界面(User Interface,简称为UI)交互等操作,影响VR全景图的扩展和使用。

发明内容

本公开实施例所要解决的一个技术问题是:提供一种用于确定全景图中物体选取状态的方法及装置。

根据本公开实施例的一个方面,一种用于确定全景图中物体选取状态的方法,应用于支持WebGL的浏览器客户端,所述方法包括:

响应于用户触发的点击操作,根据所述点击操作对应的图像点坐标以及虚拟相机所在位置的空间坐标,反投影得到一条射线;

计算所述射线与承载球体的表面的交点,得到所述交点的空间坐标,所述承载球体用于承载全景图中至少一个物体的边缘mask图;

根据所述交点的空间坐标,获取所述交点对应的纹理坐标;

根据所述交点的纹理坐标,确定所述全景图中物体的选取状态,所述选取状态用于指示所述全景图中的物体是否被选中。

在本公开的一个实施例中,所述根据所述交点的纹理坐标,确定所述全景图中物体的选取状态,包括:

根据所述交点对应的纹理坐标,确定所述交点的纹理像素信息,所述纹理像素信息为所述边缘mask图中与所述交点对应的像素点的像素信息;

根据所述纹理像素信息,确定所述全景图中物体的选取状态。

在本公开的又一个实施例中,所述纹理像素信息为对应的像素点的颜色信息;

所述根据所述纹理像素信息,确定所述全景图中物体的选取状态,包括:

比较所述交点对应的像素点的颜色信息与所述至少一个物体的轮廓颜色;

响应于所述交点对应的像素点的颜色信息与一个物体的轮廓颜色一致,确定对应的物体被选中;

响应于所述交点对应像素点的颜色信息与所述至少一个物体的轮廓颜色均不一致,确定所述全景图中没有物体被选中。

在本公开的又一个实施例中,所述纹理像素信息为对应的像素点的像素点坐标,所述像素点坐标为所述边缘mask图中与所述交点对应的像素点的坐标信息;

所述根据所述纹理像素信息,确定所述全景图中物体的选取状态,包括:

比较所述像素点坐标与所述至少一个物体的包围框信息;

响应于所述像素点坐标位于一个物体的包围框内,确定对应的物体被选中;

响应于所述像素点坐标位于所述至少一个物体的包围框外部,确定所述全景图中没有物体被选中。

在本公开的又一个实施例中,所述方法还包括:

接收用户触发的生成操作,根据所述生成操作在三维空间场景中生成一个承载球体,所述承载球体的中心点位置为所述虚拟相机所在位置;

确定所述承载球体的至少一个顶点的空间坐标对应的纹理坐标,所述承载球体的至少一个顶点为所述承载球体的至少一个网格三角面的顶点;

按照所述至少一个顶点的纹理坐标,将所述边缘mask图贴在所述承载球体上。

在本公开的又一个实施例中,所述按照所述至少一个顶点的纹理坐标,将所述边缘mask图贴在所述承载球体上,包括:

将所述边缘mask图以纹理变量的形式传入着色器中;

在所述着色器中,根据所述至少一个顶点的纹理坐标对传入的所述边缘mask图进行纹理采样,得到所述至少一个顶点对应的纹理像素信息;

根据所述至少一个顶点对应的纹理像素信息,确定所述承载球体表面上至少一个点的纹理像素信息。

在本公开的又一个实施例中,所述方法还包括:

存储所述承载球体表面上至少一个点的空间坐标和纹理信息,所述纹理信息包括纹理坐标以及对应的纹理像素信息。

在本公开的又一个实施例中,所述根据所述至少一个顶点对应的纹理像素信息,确定所述承载球体表面上至少一个点的纹理像素信息,包括:

针对所述承载球体的至少一个网格三角面,根据所述至少一个网格三角面的三个顶点的纹理像素信息,通过插值算法,得到所述至少一个网格三角面上其他点的纹理像素信息;

将所述至少一个网格三角面所有点的纹理像素信息,确定为所述承载球体表面上至少一个点的纹理像素信息。

在本公开的又一个实施例中,所述方法还包括:

离线生成并存储所述全景图中至少一个物体的边缘mask图,所述边缘mask图中各个物体的轮廓颜色均不相同,所述边缘mask图的分辨率与所述全景图的分辨率相同。

根据本公开的又一方面,提供一种用于确定全景图中物体选取状态的装置,应用于支持WebGL的浏览器客户端,所述装置包括:

反投影模块,用于响应于用户触发的点击操作,根据所述点击操作对应的图像点坐标以及虚拟相机所在位置的空间坐标,反投影得到一条射线;

交点确定模块,用于计算所述射线与承载球体的表面的交点,得到所述交点的空间坐标,所述承载球体用于承载全景图中至少一个物体的边缘mask图;

纹理坐标获取模块,用于根据所述交点的空间坐标,获取所述交点对应的纹理坐标;

选取状态确定模块,用于根据所述交点的纹理坐标,确定所述全景图中物体的选取状态,所述选取状态用于指示所述全景图中的物体是否被选中。

在本公开的一个实施例中,所述选取状态确定模块包括:

第一确定子模块,用于根据所述交点对应的纹理坐标,确定所述交点的纹理像素信息,所述纹理像素信息为所述边缘mask图中与所述交点对应的像素点的像素信息;

第二确定子模块,用于根据所述纹理像素信息,确定所述全景图中物体的选取状态。

在本公开的又一个实施例中,所述纹理像素信息为对应的像素点的颜色信息;

所述第二确定子模块包括:

第一比较子模块,用于比较所述交点对应的像素点的颜色信息与所述至少一个物体的轮廓颜色;

第三确定子模块,用于响应于所述交点对应的像素点的颜色信息与一个物体的轮廓颜色一致,确定对应的物体被选中;

第四确定子模块,用于响应于所述交点对应像素点的颜色信息与所述至少一个物体的轮廓颜色均不一致,确定所述全景图中没有物体被选中。

在本公开的又一个实施例中,所述纹理像素信息为对应的像素点的像素点坐标,所述像素点坐标为所述边缘mask图中与所述交点对应的像素点的坐标信息;

所述第二确定子模块包括:

第二比较子模块,用于比较所述像素点坐标与所述至少一个物体的包围框信息;

第五确定子模块,用于响应于所述像素点坐标位于一个物体的包围框内,确定对应的物体被选中;

第六确定子模块,用于响应于所述像素点坐标位于所述至少一个物体的包围框外部,确定所述全景图中没有物体被选中。

在本公开的又一个实施例中,所述装置还包括:

接收模块,用于接收用户触发的生成操作;

几何体生成模块,用于根据所述生成操作在三维空间场景中生成一个承载球体,所述承载球体的中心点位置为所述虚拟相机所在位置;

纹理坐标确定模块,用于确定所述承载球体的至少一个顶点的空间坐标对应的纹理坐标,所述承载球体的至少一个顶点为所述承载球体的至少一个网格三角面的顶点;

纹理映射模块,用于按照所述至少一个顶点的纹理坐标,将所述边缘mask图贴在所述承载球体上。

在本公开的又一个实施例中,所述纹理映射模块包括:

传入子模块,用于将所述边缘mask图以纹理变量的形式传入着色器中;

纹理采样子模块,用于在所述着色器中,根据所述至少一个顶点的纹理坐标对传入的所述边缘mask图进行纹理采样,得到所述至少一个顶点对应的纹理像素信息;

第七确定子模块,用于根据所述至少一个顶点对应的纹理像素信息,确定所述承载球体表面上至少一个点的纹理像素信息。

在本公开的又一个实施例中,所述装置还包括:

存储模块,用于存储所述承载球体表面上至少一个点的空间坐标和纹理信息,所述纹理信息包括纹理坐标以及对应的纹理像素信息。

在本公开的又一个实施例中,所述第七确定子模块包括:

插值子模块,用于针对所述承载球体的至少一个网格三角面,根据所述至少一个网格三角面的三个顶点的纹理像素信息,通过插值算法,得到所述至少一个网格三角面上其他点的纹理像素信息;

第八确定子模块,用于将所述至少一个网格三角面所有点的纹理像素信息,确定为所述承载球体表面上至少一个点的纹理像素信息。

在本公开的又一个实施例中,所述装置还包括:

边缘图生成模块,用于离线生成并存储所述全景图中至少一个物体的边缘mask图,所述边缘mask图中各个物体的轮廓颜色均不相同,所述边缘mask图的分辨率与所述全景图的分辨率相同。

根据本公开实施例的再一方面,提供一种电子设备,该电子设备包括:

存储器,用于存储计算机程序;

处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现上述用于确定全景图中物体选取状态的方法。

根据本公开实施例的再一方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现上述用于确定全景图中物体选取状态的方法。

基于本公开上述实施例提供的用于确定全景图中物体选取状态的方法及装置,应用于支持全球广域网图形函数库(Web Graphics Library,简称为WebGL)2.0的浏览器客户端,通过将VR全景图的边缘mask图贴在一个三维的承载球体上,可在接收到用户触发的点击操作时,反投影出一条射线,计算射线与承载球体的表面的交点,得到交点的空间坐标,获取交点对应的纹理坐标,然后根据该纹理坐标即可确定全景图中物体的选取状态。本公开技术方案通过将VR全景图中的物体的边缘mask图贴在一个三维的承载球体上,即可在用户在全景图上触发点击操作时,根据射线和承载球体的网格三角面的交点确定对应的纹理坐标,进而根据该纹理坐标的纹理像素信息确定全景图中的物体是否被选中,本公开技术方案可以判断空间VR全景图中的物体是否被选中。

下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。

附图说明

构成说明书的一部分的附图描述了本公开的实施例,并且连同描述一起用于解释本公开的原理。

参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:

图1为本公开的用于确定全景图中物体选取状态的方法的一个实施例的流程图;

图2A为本公开的用于确定全景图中物体选取状态的方法的又一个实施例的流程图;

图2B为本公开的图2A所示实施例的步骤205的实现流程图一;

图2C为本公开的图2A所示实施例的步骤205的实现流程图二;

图2D为本公开的确定目标物体所在全景图示意图;

图2E为本公开的全景图中的一个物体的边缘mask图;

图3A为本公开的将边缘mask图贴在所述承载球体上的实施例的流程图;

图3B为本公开的图3A所示实施例的步骤303的实现流程图;

图4为本公开的用于确定全景图中物体选取状态的装置的一个实施例的结构示意图;

图5为本公开的用于确定全景图中物体选取状态的装置的又一个实施例的结构示意图;

图6为本公开的用于确定全景图中物体选取状态的装置的又一个实施例的结构示意图;

图7为本公开一示意性实施例提供的电子设备的结构图。

具体实施方式

现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。

同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

本公开实施例可以应用于计算机系统/服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器等电子设备一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统、大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。

计算机系统/服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。

本公开概述

本公开实施例提供的技术方案应用于全景图空间VR游览时需要在全景图中选中一个物体的场景中,本公开通过为全景图的边缘mask图生成一个承载球体的方式判断全景图中是否选中一个物体,为了实现该技术方案,需要浏览器能够支持WebGL,基于WebGL的三维纹理应用程序编程接口可以加载贴到承载球体表面的边缘mask图到显存中,以便于使用,而且通过在WebGL中构建一个承载球体,可以按照球体表面上至少一个点的球面坐标生成对应的纹理坐标,进而实现后续根据射线与承载球体的表面的交点的空间坐标确定纹理坐标,并根据纹理坐标确定是否选中了全景图中的一个物体,由此通过浏览器的WebGL环境实现了全景图中目标物体的选取状态的判断。

示例性实施例

图1为本公开的用于确定全景图中物体选取状态的方法的一个实施例的流程图;该用于确定全景图中物体选取状态的方法可以应用在电子设备(如移动终端等)上,电子设备上的浏览器需要能够支持WebGL2.0。如图1所示,该用于确定全景图中物体选取状态的方法包括以下步骤:

在步骤101中,响应于用户触发的点击操作,根据所述点击操作对应的图像点坐标以及虚拟相机所在位置的空间坐标,反投影得到一条射线。

在一实施例中,在具体执行本公开实施例之前,需要先确保浏览器支持WebGL,如果浏览器不支持WebGL,则可弹出提示信息提醒用户升级浏览器版本。

在一实施例中,用户可以在浏览器客户端界面上通过鼠标、触摸屏点击等方式触发点击操作。

在一实施例中,根据点击操作所点击的位置,确定图像点坐标,其中,图像点坐标用于指示点击操作对应在屏幕画布上的点的二维坐标,在三维计算机视觉领域中,根据屏幕画布上的一点以及虚拟相机所在位置的空间坐标,可以反投影出一条射线,因此根据该坐标以及虚拟相机所在位置的空间坐标,通过反投影即可得到以虚拟相机所在位置为起点、方向指向点击操作所点击的位置的一条射线。

在步骤102中,计算所述射线与承载球体的表面的交点,得到交点的空间坐标,所述承载球体用于承载全景图中至少一个物体的边缘mask图。

在一实施例中,承载球体是一个三维几何球体,用于承载全景图中至少一个物体的边缘mask图。全景图中可以有一个以上的物体,可以离线生成每一个物体的边缘轮廓,得到全景图中所有物体的边缘mask图。通过纹理贴图方式,可以将边缘mask图贴在承载球体上,并存储承载球体上各个表面点的空间坐标对应在边缘mask图上各个点的纹理坐标以及纹理像素信息。

在一实施例中,通过遍历承载球体上各个网格三角形面片,根据承载球体表面(也即组成球体表面的各个网格三角形面)上所有网格三角形面片的顶点坐标、法向量,即可计算出射线与承载球体表面的交点,得到交点的空间坐标。

在一实施例中,在边缘mask图中,针对每个物体的边缘轮廓可以设置不同的颜色,例如,将物体1的边缘轮廓设置为白色,将物体2的边缘轮廓设置为红色、将物体3的边缘轮廓设置为紫色等等。

在一实施例中,在边缘mask图中,还可以为每一个物体设置一个包围框,并存储每个物体的包围框信息。包围框信息可以为每个包围框的路径信息,或者为组成包围框的像素点坐标等。包围框可以为一个矩形边框,也可以为圆形或者椭圆形边框,还可以为不规则形状的边框。参见图2D,其示意了一幅全景图,通过相关技术中的边缘mask图的生成算法即可生成该全景图的物体的边缘mask图,并为物体设置一个矩形包围框,如图2E所示,该边缘mask图与全景图的分辨率相同。

在步骤103中,根据所述交点的空间坐标,获取所述交点对应的纹理坐标。

在一实施例中,交点的纹理坐标为交点对应在mask图中的点的纹理坐标。

本公开实施例中,在构建承载球体以及将边缘mask图贴在承载球体上时,存储了球体上各个表面点的空间坐标对应的纹理坐标,因此可直接根据各个表面点的空间坐标与纹理坐标的对应关系,确定出交点的空间坐标对应的纹理坐标。

在步骤104中,根据所述交点的纹理坐标,确定所述全景图中物体的选取状态,所述选取状态用于指示所述全景图中的物体是否被选中。

在一实施例中,根据交点对应在边缘mask图中的点的纹理坐标,可以确定出点击操作对应在边缘mask图中的像素点,进而可以根据像素点的像素信息,确定点击操作是否发生在一个物体上,也即是否选中了一个物体。根据交点的纹理坐标确定全景图中物体的选取状态的具体实现方式可参见图2B和图2C所示实施例,这里先不详述。

上述步骤101~104,通过将VR全景图的边缘mask图贴在一个三维的承载球体上,可在接收到用户触发的点击操作时,反投影出一条射线,计算射线与承载球体表面的交点,得到交点的空间坐标,获取交点对应的纹理坐标,然后根据该纹理坐标即可确定全景图中物体的选取状态。本公开技术方案通过将VR全景图中的物体的边缘mask图贴在一个三维的承载球体上,即可在用户在全景图上触发点击操作时,根据射线和承载球体的网格三角面的交点确定对应的纹理坐标,进而根据该纹理坐标的纹理像素信息确定全景图中物体是否被选中,本公开技术方案可以判断空间VR全景图中的物体是否被选中。

为了更好地说明本公开的用于确定全景图中物体选取状态的的方案,下面用另一个实施例说明。

图2A为本公开的用于确定全景图中物体选取状态的方法的又一个实施例的流程图,图2B为本公开的图2A所示实施例的步骤205的实现流程图一,图2C为本公开的图2A所示实施例的步骤205的实现流程图二,图2D为本公开的确定目标物体所在全景图示意图,图2E为本公开的全景图中的一个物体的边缘mask图;本实施例以如何确定全景图中物体选取状态为例进行示例性说明,如图2A所示,包括如下步骤:

在步骤201中,响应于用户触发的点击操作,根据所述点击操作对应的图像点坐标以及虚拟相机所在位置的空间坐标,反投影得到一条射线。

在步骤202中,计算所述射线与承载球体的表面的交点,得到交点的空间坐标,所述承载球体用于承载全景图中至少一个物体的边缘mask图。

在步骤203中,根据所述交点的空间坐标,获取所述交点对应的纹理坐标。

步骤201~步骤203的实现方式可参见图1所示实施例中步骤101~步骤103的描述,这里不再详述。

在步骤204中,根据所述交点对应的纹理坐标,确定所述交点的纹理像素信息,所述纹理像素信息为所述边缘mask图中与所述交点对应的像素点的像素信息。

在一实施例中,纹理像素信息可以为边缘mask图中与所述交点对应的像素点的像素信息,像素点的像素信息可以为像素点的颜色信息,像素点的像素信息还可以为像素点的像素点坐标。

在一实施例中,根据像素坐标系和纹理坐标系之间的关系,也即,像素坐标系和纹理坐标系存在x轴相同、y轴相反的映射关系,根据该关系,可以确定纹理坐标对应的像素点坐标,根据纹理坐标对应的像素点坐标确定边缘mask图上哪个物体被选中。

在一实施例中,在将边缘mask图贴在承载球体上时,是将边缘mask图赋值给着色器的纹理变量,再调用着色器内置的texture2D函数,使用承载球体上每个表面点对应的纹理坐标,对边缘mask图进行纹理采样,得到了承载球体上每个表面点对应的纹理坐标的纹理像素信息。其中,该纹理像素信息可以为像素点的颜色信息,根据该像素点的颜色信息确定边缘mask图(全景图)中哪个物体被选中。

在步骤205中,根据所述纹理像素信息,确定所述全景图中物体的选取状态。

在一实施例中,纹理像素信息对应的像素点坐标时,参见图2B所示实施例的步骤251~步骤253,确定边缘mask图上哪个物体被选中。

在步骤251中,根据所述像素点坐标与所述至少一个物体的包围框信息,确定所述像素点与至少一个物体的包围框的位置关系。

在一实施例中,像素点坐标为边缘mask图中与交点对应的像素点的坐标信息;至少一个物体的包围框为一个矩形、圆形或者其他不规则的首尾相连的闭合图形。

在一实施例中,包围框信息可以为每个包围框的路径信息,或者为组成包围框的像素点坐标等。

在一实施例中,在根据像素点坐标和包围框的包围框信息,确定像素点是在包围框内部还是外部时,可以采用相关技术中的一些技术手段,例如,可以计算像素点与包围框的所有线段的距离,再根据计算出的距离确定像素点在包围框内部还是外部;或者通过射线法确定每一个点与包围框(多边形、圆形或者不规则图形)的位置关系,本公开实施例对此不作限定。

在步骤252中,响应于所述像素点坐标位于一个物体的包围框内,确定对应的物体被选中。

在步骤253中,响应于所述像素点坐标位于所述至少一个物体的包围框外部,确定所述全景图中没有物体被选中。

在一实施例中,包围框通常是大于物体的边缘轮廓的,通过限定像素点坐标位于一个物体的包围框内,即判断物体被选中,可以在物体的形状比较细长或者比较小、用户通常很难准确点击在物体上的情况下,解决物体很难被准确选中的问题。在点击操作落在一个物体的包围框范围内,即判定物体被选中,由此可提高物体的选中几率。

在一实施例中,纹理像素信息对应的颜色信息时,参见图2C所示实施例的步骤254~步骤256,确定边缘mask图上哪个物体被选中。

在步骤254中,比较所述交点对应的像素点的颜色信息与所述至少一个物体的轮廓颜色。

在一实施例中,对于每个全景图,离线生成并存储了全景图中至少一个物体的边缘mask图,所述边缘mask图中各个物体的轮廓颜色均不相同,所述边缘mask图的分辨率与所述全景图的分辨率相同。

由于在边缘mask图中,针对每个物体的边缘轮廓设置了不同的颜色,例如,将物体1的边缘轮廓设置为白色,将物体2的边缘轮廓设置为红色、将物体3的边缘轮廓设置为紫色等等。因此,根据交点对应的像素点的颜色信息,可以确定该像素点是否落在一个物体上。其中,边缘mask图中背景颜色通常设置为黑色,如果交点对应的像素点的颜色信息为黑色,则说明用户触发的点击操作并没有选中一个物体。

在步骤255中,响应于所述交点对应的像素点的颜色信息与一个物体的轮廓颜色一致,确定对应的物体被选中。

在步骤256中,响应于所述交点对应像素点的颜色信息与所述至少一个物体的轮廓颜色均不一致,确定所述全景图中没有物体被选中。

在一实施例中,通过交点对应像素点的颜色信息识别是否有物体被选中,可以实现只在点击操作落在对应的物体上时才识别为选中了物体,提高判断物体选中的准确率。

上述步骤201~步骤205,通过对边缘mask图中每个物体的边缘轮廓设置包围框或者设置不同的颜色,实现了根据交点对应的纹理坐标的纹理像素信息确定是否选中了物体。

图3A为本公开的将边缘mask图贴在所述承载球体上的实施例的流程图,图3B为本公开的图3A所示实施例的步骤303的实现流程图;本实施例以如何将边缘mask图贴在所述承载球体上为例进行示例性说明,如图3A所示,包括如下步骤:

在步骤301中,接收用户触发的生成操作,根据所述生成操作在三维空间场景中生成一个承载球体,所述承载球体的中心点位置为所述虚拟相机所在位置。

在一实施例中,用户可以在WebGL中通过按钮的方式触发生成操作,还可以通过相关的菜单指令触发物体生成操作,生成一个承载球体,并且在三维空间场景中,承载球体的中心点位置为虚拟相机所在位置。

在步骤302中,确定所述承载球体的至少一个顶点的空间坐标对应的纹理坐标。

在一实施例中,承载球体的至少一个顶点为承载球体的至少一个网格三角面的顶点。

在一实施例中,生成承载球体,获取承载球体上各顶点的空间坐标对应的纹理坐标以及各顶点的法向量的核心代码可参考下述代码:

上述代码中,用于生成承载球体,并且分别用顶点vertices、normals和uvs数组记录生成的顶点坐标、法向量和uv纹理坐标。在for循环中,根据widthSegments和heightSegments遍历所有的顶点。在每个顶点的位置上,通过球坐标系公式计算得到个顶点在三维空间中的位置,并将对应顶点的(x,y,z)坐标存至vertices数组中。接着,通过该点的坐标向量生成一个法向量,将其归一化后存至normals数组中。在每个顶点的位置中,通过当前的u值和v值计算得到该点的uv坐标,并存至uvs数组中。grid网格数组用于记录每行顶点的索引,方便后面计算面的索引。

在一些实施例中,生成承载球体,并且获取到球体上任意一个顶点的顶点坐标、法向量和纹理坐标后,即可在数据库或其它数据存储结构中存储承载球体上任意一个顶点的顶点坐标、法向量和纹理坐标。

在步骤303中,按照所述至少一个顶点的纹理坐标,将所述边缘mask图贴在所述承载球体上。

在一实施例中,将边缘mask图贴在承载球体上的实现方式可参见图3B所示实施例,如图3B所示,包括以下步骤331~步骤333:

在步骤331中,将所述边缘mask图以纹理变量的形式传入着色器中。

在步骤332中,在所述着色器中,根据所述至少一个顶点的纹理坐标对传入的所述边缘mask图进行纹理采样,得到所述至少一个顶点对应的纹理像素信息。

在步骤333中,根据所述至少一个顶点对应的纹理像素信息,确定所述承载球体表面上至少一个点的纹理像素信息。

在一实施例中,在采样得到每个网格三角面上顶点的纹理像素信息之后,即可通过插值算法确定除顶点之外的其它点的纹理像素信息,也即得到每个网格三角面(承载球体表面)所有点的纹理像素信息。

在步骤331~步骤333中,将边缘mask图赋值给着色器的纹理变量,再调用着色器内置的texture2D函数,使用承载球体上每个表面点对应的纹理坐标,对边缘mask图进行纹理采样,得到承载球体上每个表面点对应的纹理坐标的纹理像素信息。其中,该纹理像素信息可以为像素点的颜色信息,根据该像素点的颜色信息确定边缘mask图上哪个物体被选中。

上述步骤301~步骤302,通过在WebGL中生成一个承载球体,并且通过纹理贴图的方式,将边缘mask图贴在承载球体上,得到球体上任意一个点的纹理像素信息,也即建立球体表面上点的空间坐标、纹理坐标和纹理像素信息之间的对应关系,实现后续根据用户在全景图上触发的点击操作,确定用户是否选中了一个物体。

与前述用于确定全景图中物体选取状态的方法的实施例相对应,本公开还提供了用于确定全景图中物体选取状态的装置对应的实施例。

图4为本公开的用于确定全景图中物体选取状态的装置的一个实施例的结构示意图,该装置应用在电子设备(如计算机系统、服务器)上,电子设备支持WebGL的浏览器客户端,如图4所示,该装置包括:

反投影模块41,用于响应于用户触发的点击操作,根据所述点击操作对应的图像点坐标以及虚拟相机所在位置的空间坐标,反投影得到一条射线;

交点确定模块42,用于计算所述射线与承载球体的表面的交点,得到所述交点的空间坐标,所述承载球体用于承载全景图中至少一个物体的边缘mask图;

纹理坐标获取模块43,用于根据所述交点的空间坐标,获取所述交点对应的纹理坐标;

选取状态确定模块44,用于根据所述交点的纹理坐标,确定所述全景图中物体的选取状态,所述选取状态用于指示所述全景图中的物体是否被选中。

图5为本公开的用于确定全景图中物体选取状态的装置的又一个实施例的结构示意图,如图5所示,在图4所示实施例的基础上,在一实施例中,所述选取状态确定模块44包括:

第一确定子模块441,用于根据所述交点对应的纹理坐标,确定所述交点的纹理像素信息,所述纹理像素信息为所述边缘mask图中与所述交点对应的像素点的像素信息;

第二确定子模块442,用于根据所述纹理像素信息,确定所述全景图中物体的选取状态。

在一实施例中,所述纹理像素信息为对应的像素点的颜色信息;

所述第二确定子模块442包括:

第一比较子模块4421,用于比较所述交点对应的像素点的颜色信息与所述至少一个物体的轮廓颜色;

第三确定子模块4422,用于响应于所述交点对应的像素点的颜色信息与一个物体的轮廓颜色一致,确定对应的物体被选中;

第四确定子模块4423,用于响应于所述交点对应像素点的颜色信息与所述至少一个物体的轮廓颜色均不一致,确定所述全景图中没有物体被选中。

在一实施例中,所述纹理像素信息为对应的像素点的像素点坐标,所述像素点坐标为所述边缘mask图中与所述交点对应的像素点的坐标信息;

所述第二确定子模块442包括:

第二比较子模块4424,用于比较所述像素点坐标与所述至少一个物体的包围框信息;

第五确定子模块4425,用于响应于所述像素点坐标位于一个物体的包围框内,确定对应的物体被选中;

第六确定子模块4426,用于响应于所述像素点坐标位于所述至少一个物体的包围框外部,确定所述全景图中没有物体被选中。

图6为本公开的用于确定全景图中物体选取状态的装置的又一个实施例的结构示意图,如图6所示,在图4和/或图5所示实施例的基础上,在一实施例中,所述装置还包括:

接收模块45,用于接收用户触发的生成操作;

几何体生成模块46,用于根据所述生成操作在三维空间场景中生成一个承载球体,所述承载球体的中心点位置为所述虚拟相机所在位置;

纹理坐标确定模块47,用于确定所述承载球体的至少一个顶点的空间坐标对应的纹理坐标,所述承载球体的至少一个顶点为所述承载球体的至少一个网格三角面的顶点;

纹理映射模块48,用于按照所述至少一个顶点的纹理坐标,将所述边缘mask图贴在所述承载球体上。

在一实施例中,所述纹理映射模块48包括:

传入子模块481,用于将所述边缘mask图以纹理变量的形式传入着色器中;

纹理采样子模块482,用于在所述着色器中,根据所述至少一个顶点的纹理坐标对传入的所述边缘mask图进行纹理采样,得到所述至少一个顶点对应的纹理像素信息;

第七确定子模块483,用于根据所述至少一个顶点对应的纹理像素信息,确定所述承载球体表面上至少一个点的纹理像素信息。

在一实施例中,所述装置还包括:

存储模块49,用于存储所述承载球体表面上至少一个点的空间坐标和纹理信息,所述纹理信息包括纹理坐标以及对应的纹理像素信息。

在一实施例中,所述第七确定子模块483包括:

插值子模块4831,用于针对所述承载球体的至少一个网格三角面,根据所述至少一个网格三角面的三个顶点的纹理像素信息,通过插值算法,得到所述至少一个网格三角面上其他点的纹理像素信息;

第八确定子模块4832,用于将所述至少一个网格三角面所有点的纹理像素信息,确定为所述承载球体表面上至少一个点的纹理像素信息。

在一实施例中,所述装置还包括:

边缘图生成模块50,用于离线生成并存储所述全景图中至少一个物体的边缘mask图,所述边缘mask图中各个物体的轮廓颜色均不相同,所述边缘mask图的分辨率与所述全景图的分辨率相同。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

下面,参考图7来描述根据本公开实施例的电子设备,其中可以集成本公开实施例实现方法的装置。图7为本公开一示意性实施例提供的电子设备的结构图,如图7所示,电子设备包括一个或多个处理器71、一个或多个计算机可读存储介质的存储器72,以及存储在存储器上并可在处理器上运行的计算机程序。在执行存储器72的程序时,可以实现上述用于确定全景图中物体选取状态的方法。

具体的,在实际应用中,该电子设备还可以包括输入装置73、输出装置74等部件,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。本领域技术人员可以理解,图7中示出的电子设备的结构并不构成对该电子设备的限定,可以包括比图示更多或更少的部件,或者某些部件,或者不同的部件布置。其中:

处理器71可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,通过运行或执行存储在存储器72内的软件程序和/或模块,以及调用存储在存储器72内的数据,执行各种功能和处理数据,从而对该电子设备进行整体监控。

存储器72可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器71可以运行程序指令,以实现上文的本公开的各个实施例的用于确定全景图中物体选取状态的方法以及/或者其他期望的功能。在计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。

输入装置73可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆,光学或轨迹球信号输入。

输出装置74可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置74可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。

电子设备还可以包括给各个部件供电的电源,可以通过电源管理系统与处理器71逻辑相连,从而通过电源管理系统实现管理充电、放电,以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

当然,为了简化,图7中仅示出了该电子设备中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等组件。除此之外,根据具体应用情况,电子设备还可以包括任何其他适当的组件。

除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的用于确定全景图中物体选取状态的方法中的步骤。

所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的用于确定全景图中物体选取状态的方法中的步骤。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。

本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。

本公开的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本公开的原理和实际应用,并且使本领域的普通技术人员能够理解本公开从而设计适于特定用途的带有各种修改的各种实施例。

相关技术
  • 屏幕画面截图中识别物体的显示方法、装置及显示终端
  • 确定轴承状态的方法、用于确定轴承状态的模块、轨道车辆和系统
  • 机器人、用于机器人的物体识别装置及物体识别方法
  • 应用于地图中的路况显示方法、装置及显示设备
  • 确定物体关联性的方法及装置、物体状态更新方法及装置
  • 用于表征特定物体的外观、用于预测物体外观以及用于制造具有任选地基于参照物体确定的预定外观的物体的方法
技术分类

06120116485700