三维热力图的生成方法、装置、计算机设备和存储介质与流程

文档序号:21369466发布日期:2020-07-04 04:46阅读:341来源:国知局
三维热力图的生成方法、装置、计算机设备和存储介质与流程

本申请涉及计算机绘图技术领域,特别是涉及一种三维热力图的生成方法、装置、计算机设备和存储介质。



背景技术:

热力图是一种表现数据强弱大小及变化趋势的可视化图,在地理位置数据可视化有较多应用,比如人口密度分析、人口活跃度分析,等等。目前的热力图绘制方案主要是针对二维平面内的数据进行分析从而实现二维热力图的绘制,二维热力图只能通过颜色变化来表现数据强弱,可感知的维度比较局限,不利于数据分析。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够多维度地呈现数据变化趋势,提升数据分析性能的三维热力图的生成方法、装置、计算机设备和存储介质。

一种三维热力图的生成方法,所述方法包括:

获取热力数据点集合,所述热力数据点集合中的每个热力数据点包括所述热力数据点的热力值及用于描述所述热力数据点所在地理位置的坐标;

根据所述热力数据点的坐标及热力值,获得三维热力纹理;

对所述三维热力纹理中像素点的透明度值进行高斯变换处理,得到像素点对应的热力高度;

对所述三维热力纹理中像素点对应的三维纹理坐标进行逆图形变换,获得所述像素点对应的世界空间坐标;

根据所述世界空间坐标、所述热力高度生成三维热力图。

一种三维热力图的生成装置,所述装置包括:

热力数据点获取模块,用于获取热力数据点集合,所述热力数据点集合中的每个热力数据点包括所述热力数据点的热力值及用于描述所述热力数据点所在地理位置的坐标;

三维热力纹理生成模块,用于根据所述热力数据点的坐标及热力值,获得三维热力纹理;

热力图生成模块,用于对所述三维热力纹理中像素点的透明度值进行高斯变换处理,得到像素点对应的热力高度;对所述三维热力纹理中像素点对应的三维纹理坐标进行逆图形变换,获得所述像素点对应的世界空间坐标;根据所述世界空间坐标、所述热力高度生成三维热力图。

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

获取热力数据点集合,所述热力数据点集合中的每个热力数据点包括所述热力数据点的热力值及用于描述所述热力数据点所在地理位置的坐标;

根据所述热力数据点的坐标及热力值,获得三维热力纹理;

对所述三维热力纹理中像素点的透明度值进行高斯变换处理,得到像素点对应的热力高度;

对所述三维热力纹理中像素点对应的三维纹理坐标进行逆图形变换,获得所述像素点对应的世界空间坐标;

根据所述世界空间坐标、所述热力高度生成三维热力图。

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

获取热力数据点集合,所述热力数据点集合中的每个热力数据点包括所述热力数据点的热力值及用于描述所述热力数据点所在地理位置的坐标;

根据所述热力数据点的坐标及热力值,获得三维热力纹理;

对所述三维热力纹理中像素点的透明度值进行高斯变换处理,得到像素点对应的热力高度;

对所述三维热力纹理中像素点对应的三维纹理坐标进行逆图形变换,获得所述像素点对应的世界空间坐标;

根据所述世界空间坐标、所述热力高度生成三维热力图。

上述三维热力图的生成方法、装置、计算机设备和存储介质,在根据热力数据点的坐标及热力值生成三维热力纹理后,利用高斯函数将三维热力纹理中像素点的透明度映射为热力高度,并将三维纹理坐标逆变换为世界空间坐标,结合世界空间坐标与热力高度生成的三维热力图,不仅新增了高度维度以表达数据的强弱变化,增强了热力图的表现效果,还能够连续平滑地呈现数据变化的趋势,加强了视觉感知,有助于提升数据分析的性能。

附图说明

图1为一个实施例中三维热力图的生成方法的应用环境图;

图2为一个实施例中三维热力图的生成方法的流程示意图;

图2a为一个实施例中根据热力数据点的坐标及热力值,获得三维热力纹理的流程示意图;

图3为一个实施例中根据热力数据点的坐标及热力值生成二维热力纹理的流程示意图;

图4为一个实施例中各个热力数据点对应的热力辐射圆的示意图;

图5为一个实施例中对热力数据点实例化渲染获得热力辐射圆的示意图;

图6为一个实施例中色带图像的示意图;

图7为一个实施例中将三维热力纹理中的三维纹理坐标逆变换到世界空间坐标系的示意图;

图8为一个实施例中根据热力高度生成的三维热力图的示意图;

图9为一个实施例中根据热力高度和热力颜色生成的三维热力图的示意图;

图10为一个实施例中对三维热力纹理进行三角剖分的示意图;

图11为一个实施例中三维热力图生成的整体过程示意图;

图12为一个实施例中三维热力图的生成装置的结构框图;

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

具体实施方式

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

本申请提供的三维热力图的生成方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。终端102可以从服务器104获取离散的原始数据,原始数据可以是与地理位置相关的用户数据、交通数据或疫情数据,等等。

终端102可以对原始数据进行处理,获得热力数据点,并根据热力数据点的坐标及热力值获得三维热力纹理;对三维热力纹理中像素点的透明度值进行高斯变换处理,得到像素点对应的热力高度;对三维热力纹理中像素点对应的三维纹理坐标进行逆图形变换,获得像素点对应的世界空间坐标;根据世界空间坐标、热力高度生成三维热力图。

其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图2所示,提供了一种三维热力图的生成方法,该三维热力图的生成方法可以应用于计算机设备,该计算机设备可以是上述图1中的终端102,也可以为服务器104,本申请实施例对此不作限定。参照图2,该以该方法应用于图1中的终端为例进行说明,该方法包括以下步骤s202至s210:

s202,获取热力数据点集合,热力数据点集合中的每个热力数据点包括热力数据点的热力值及用于描述热力数据点所在地理位置的坐标。

其中,热力数据点集合中包括多个热力数据点,每个热力数据点通过代表热力的热力值及用于描述所在地理位置的坐标来表示。终端可以获取与地理位置相关的原始数据,对原始数据进行处理后得到离散的热力数据点,根据热力数据点获得热力数据点集合。

在一个实施例中,热力数据点可以用一个三维数据来表示,其中一个维度的数值用于表示该热力数据点的热力值,另外两个维度的数值用于表示该热力数据点所在地理位置的坐标。该坐标可以是地理坐标,可以用经度坐标、纬度坐标来表示。当然,为了便于数据的计算或数据分析,该坐标还可以是对所在地理位置的地理坐标按照预设规则进行映射之后获得的坐标,本申请实施例对该坐标的具体形式不作限制。

在一些实施例中,热力数据点的热力值可以用于确定三维热力纹理中像素点对应的透明度值,还可以用于确定三维热力图中像素点对应的热力高度,使得生成的三维热力图新增了高度维度以表达数据的强弱变化,增强了热力图的表现效果。在另一些实施例中,热力数据点的热力值还可以用于确定三维热力图中像素点对应的热力颜色,从而使得生成的三维热力图可以从高度及颜色多维度地表现出数据的变化趋势,加强了视觉感知。

s204,根据热力数据点的坐标及热力值,获得三维热力纹理。

为了生成三维热力图,需要将二维平面内的像素点对应的二维平面内的坐标转换至三维坐标系。在一个实施例中,如图2a所示,根据热力数据点的坐标及热力值,获得三维热力纹理,具体包括s204a及s204b:

s204a,根据热力数据点的坐标及热力值进行实例化渲染,生成二维热力纹理。

其中,实例化渲染是opengl(opengraphicslibrary)提供的一种渲染机制,通过将相似的对象抽象出一个基础模型后,利用基础模型实现高效的数据传输和一次性的批量绘制。opengl是一种图形接口库,包含了一系列可以操作图形、图像的函数。在本申请提供的实施例中,终端可以采用图形处理器(gpu),利用opengl的图像处理函数根据热力数据点集合中每个热力数据点的坐标及热力值进行实例化渲染,生成二维热力纹理。二维热力纹理表示的是从二维平面角度观察到的像素点对应的透明度值或灰度值。二维热力纹理是二维平面内的热力纹理,可以理解为从正上方视角观察到的热力纹理,二维热力纹理中的像素点不具备竖坐标上的信息,只有二维平面上的信息。

终端可以根据每个热力数据点的热力值确定每个热力数据点所在位置的透明度值,从而根据每个位置的透明度值生成二维热力纹理,此时二维热力纹理中每个热力数据点可以用这样一组数据来表示:[x,y,alpha],alpha代表处于(x,y)处的热力数据点对应的透明度值,也就是通过将热力值转化为透明度值,用透明度值来表现数据的强弱变化及辐射变化效果。透明度值的范围可以是[0,1],透明度值越小,透明度越高,反之,透明度值越大,透明度越低,透明度值为0时,代表完全透明,透明度值为1(100%)时,代表完全不透明。在另一些实施例中,透明度值的范围可以是[0,255],透明度值为0时,代表完全透明,透明度值为255时,代表完全不透明。对于采用哪种方式来表示透明度值,本申请实施例不作限制。

在另一些实施例中,终端可以根据每个热力数据点的热力值确定每个热力数据点所在位置的灰度值,从而根据每个位置的灰度值生成二维热力纹理,此时二维热力纹理中每个热力数据点可以用这样一组数据来表示:[x,y,gray],gray代表处于(x,y)处的热力数据点对应的灰度值,也就是采用灰度值来表现数据的强弱变化及辐射变化效果。

在本申请实施例中,终端可以采用径向渐变的热力辐射圆来表示每个热力数据点,具有渐变效果的热力辐射圆就可以表现出数据的强弱变化及辐射效果,热力辐射圆的渐变效果可以通过透明度值由大到小的线性变化表示,在圆心处的透明度值最高,且圆心处的透明度值与该热力数据点的热力值正相关。热力辐射圆之间可以相互线性叠加,用于表现出数据强弱的叠加。通过将热力数据点映射成热力辐射圆,热力数据点对应的热力辐射圆叠加后就生成了二维热力纹理。

在一个实施例中,终端可以将热力辐射圆抽象为一个矩形模型,实例数据为热力数据点的坐标(x,y)及热力值,在顶点着色器中根据实例数据对矩形模型进行相应的平移和透明度赋值,即可实现所有热力数据点的一次性渲染。如图3所示,步骤s204a,根据热力数据点的坐标及热力值进行实例化渲染,生成二维热力纹理,包括:

s302,获取热力辐射圆的预设半径。

其中,待生成的每个热力数据点对应的热力辐射圆的半径可以是相同的,设置为r。r越大,每个热力数据点对应的热力辐射圆的面积就越大,由于二维热力纹理是每个热力辐射圆叠加或聚合后共同呈现的辐射效果,因此每个热力辐射圆的范围大小对二维热力纹理的有一定的影响,因而热力辐射圆的半径r值可以按照需求来设置,不能过大也不能过小,以使得生成的二维热力纹理的效果较佳。

s304,通过顶点着色器,根据热力数据点的坐标及预设半径,确定以坐标为几何中心的矩形区域;根据热力数据点的热力值,对矩形区域进行纹理绘制,得到热力数据点对应的热力辐射纹理;根据热力辐射纹理确定热力辐射圆,将各热力数据点对应的热力辐射圆叠加后,得到二维热力纹理。

具体地,终端可以通过顶点着色器,根据热力数据点的坐标(x,y)和预设半径r,确定以该坐标为几何中心的矩形区域的四个顶点坐标,分别为(x+r,y+r)、(x-r,y+r)、(x-r,y-r)及(x+r,y-r),根据这四个顶点坐标就可以确定该矩形区域。接着,终端根据该热力数据点的热力值对该矩形区域进行纹理绘制,得到该热力数据点对应的热力辐射纹理,具体可以将热力值映射为透明度值后,以透明度值为维度表示数据的强弱,从而得到该热力数据点对应的热力辐射纹理。该矩形区域内的热力辐射纹理以矩形区域的几何中心为圆点,矩形区域内各像素点的透明度值呈现出沿径向渐变的效果,从而可以得到热力辐射圆。热力辐射圆之间可以相互叠加,其实质表现为数据强弱的叠加,也就是透明度值的线性叠加,叠加后得到最终的二维热力纹理。如图4所示,为一个实施例中各个热力数据点对应的热力辐射圆的示意图。

在一个实施例中,根据热力数据点的热力值,对矩形区域进行纹理绘制,得到热力数据点对应的热力辐射纹理,包括:根据热力数据点的热力值,确定矩形区域的几何中心的透明度值,几何中心的透明度值与热力值成正相关;按照矩形区域中各像素点与几何中心的距离和几何中心的透明度值,对矩形区域中各像素点进行线性插值,获得矩形区域中各像素点对应的透明度值;其中,矩形区域中各像素点的透明度值与像素点到几何中心之间的距离成反相关;根据矩形区域中各像素点对应的透明度值,生成各热力数据点对应的热力辐射纹理。

如图5所示,为一个实施例中对热力数据点进行实例化渲染获得热力辐射圆的示意图。参照图5,首先,将热力辐射圆抽象为一个正方形模型,作为基础模型,基础模型是一个边长为2、几何中心在(0,0)的正方形。接着,在顶点着色器中,根据热力辐射圆的半径r和每个热力数据点的坐标(x,y)对该正方形模型进行拉伸和平移,获得一个边长为2r、几何中心在(x,y)的正方形。然后,通过顶点着色器对正方形区域内2r*2r个像素点进行着色,像素点的rgba均为[0,0,0,alpha],正方形区域内在几何中心处的透明度值alpha最大,该最大值与处于(x,y)处的热力数据点的热力值正相关,正方形区域内其它像素点的透明度值alpha沿着与几何中心(x,y)的距离逐渐变小,直至边缘处为最小值,这样,通过透明度值alpha的变化,就可以在该正方形区域内得到一个热力辐射圆。例如,若热力值的范围是[data_min,data_max],透明度值的范围是[alpha_min,alpha_max],某个热力数据点的坐标为(x0,y0),热力值为0.9,则在该热力数据点对应的热力辐射圆中,圆心(x0,y0)处的透明度值可以取圆周上像素点的透明度值可以取0,圆内像素点的透明度值可以根据到圆心的距离进行线性插值。

在一个实施例中,将各热力数据点对应的热力辐射圆叠加后,得到二维热力纹理,包括:获取热力辐射圆中属于重叠区域的各像素点的透明度值;对属于重叠区域的各像素点的透明度值进行线性叠加处理后,得到重叠区域中各像素点的透明度值;根据各像素点的透明度值生成二维热力纹理。

具体地,每个热力数据点虽然描述的不同坐标处的热力值,但是由于每个热力数据点对应的热力辐射圆具有一定的半径,因此热力辐射圆之间可能会重叠,对于重叠区域,需要按照透明度值进行线性叠加,以准确表现出叠加区域的数据强弱,使得生成的二维热力纹理更能反映出数据的变化趋势。例如,热力数据点a对应的热力辐射圆中包括像素点s,对应的透明度值为alpha1,热力数据点b对应的热力辐射圆中也包括像素点s,对应的透明度值为alpha2,则最终生成的二维热力纹理中像素点s的透明度值为min(alpha_max,alpha1+alpha2),其中alpha_max代表的是透明度值的最大值。

在上述实施例中,在生成二维热力纹理时,利用opengl的实例化渲染机制在以热力数据点的坐标为中心的矩形区域内绘制二维热力纹理,能够实现一次性批量渲染,实现了数据的高效传输和批量绘制,提升了渲染性能;并且,在生成每个热力数据点对应的热力辐射圆之后,热力辐射圆叠加后,使得生成的二维热力纹理中像素点的透明度值所呈现的透明度效果能够准确表现出数据的强弱变化。

s204b,对二维热力纹理进行图形变换处理,获得三维热力纹理。

通过前述步骤,完成了二维平面上的数据的热力辐射与叠加,获得了二维热力纹理。为了生成三维热力图,需要将二维平面内的二维热力纹理转换至三维坐标系,也就是将二维热力纹理中像素点对应的二维平面内的坐标转换至三维坐标系。例如,二维热力纹理是以正上方的视角观察到的图像,将该二维热力图像转换为以45度俯瞰角度观察的图像。

具体地,终端可以对二维热力纹理中像素点的坐标进行图形变换,获得三维热力纹理,以在二维平面内绘制复杂的三维热力图。图形变换的本质是利用一系列变换矩阵将一个坐标系中的坐标转换为另一个坐标系中的坐标,从而将一个坐标系中的物体转换到另一个坐标系。图形变换依次包括视图变换、投影变换及视口变换,其中,视图变换用于通过视图矩阵(viewmatrix)将物体从初始的坐标系转换到相机视角所在的视图坐标系(viewspace)。投影变换用于通过投影矩阵(projectionmatrix)将视图坐标系中的物体投影到平面上,从而形成平面图像,投影变换定义的是一个可视空间,决定了哪些物体显示,哪些物体不显示,以及物体如何将可视空间范围外的东西去掉,所以投影变换后的坐标系就是裁剪坐标系(clipspace)。视口变换用于通过视口矩阵(viewporttransform)将物体从裁剪坐标系转换成屏幕坐标系(screenspace)。

在本申请实施例中,终端通过对二维热力纹理进行视图变换、投影变换及视口变换,可以精确地将二维热力纹理变换为三维热力纹理,得到可视范围内的三维热力纹理,不需要先进行二维平面可视区域的计算,再在可视区域内进行绘制得到辐射纹理,可以节省gpu的计算过程。

在一个实施例中,对二维热力纹理进行图形变换处理,获得三维热力纹理,包括:获取视图矩阵、投影矩阵及视口矩阵;获取二维热力纹理中各像素点所对应的地理位置的坐标;通过视图矩阵、投影矩阵及视口矩阵依次对坐标进行视图变换、投影变换及视口变换处理,以将坐标中的横坐标从初始坐标系转换至屏幕坐标系,将坐标中的纵坐标从初始坐标系转换为屏幕坐标系后,得到各像素点对应的三维纹理坐标,像素点对应的三维纹理坐标中的竖坐标相等;基于各像素点对应的三维纹理坐标中的横坐标与纵坐标,以及各像素点对应的透明度值,生成三维热力纹理。

前面提到,二维热力纹理表示的是从二维平面角度观察到的像素点对应的透明度值,此时像素点的坐标是初始坐标系中的坐标(x,y),该坐标可以是地理坐标,像素点对应的透明度值是alpha。通过终端对二维热力纹理进行一系列的图像变换处理之后,得到像素点的坐标是(x’,y’,z’),透明度值仍然为alpha,转换后的(x’,y’)是三维视角中像素点的坐标,由于z’不会影响三维热力纹理中各个像素点之间的位置,也不会影响各个像素点对应的透明度值,从而不会对三维角度下呈现的热力纹理的效果产生影响,因此,转换之后每个像素点的z’的取值可以相等,比如可以取0,即三维热力纹理中像素点的坐标为(x’,y’,0),可以称之为三维纹理坐标。

在上述实施例中,利用实例化渲染和坐标系的相互转换,能够提升生成三维热力纹理的效率及效果,基于该三维热力纹理可以生成三维热力图。

s206,对三维热力纹理中像素点的透明度值进行高斯变换处理,得到像素点对应的热力高度。

经过前述步骤,生成的三维热力纹理中像素点虽然有了三维空间坐标系下的位置信息,但还不具备深度信息,为了生成三维热力图,还需要为热力纹理添加深度信息,也就是竖坐标上的信息,并使添加的深度信息可以在视觉上得到体现。在本申请实施例中,深度信息可以用热力颜色和/或热力高度来表示。

具体地,终端可以通过顶点着色器读取三维热力纹理中像素点的像素值,得到像素点在透明度通道上的透明度值,然后对透明度值进行高斯变换处理,经过高斯函数映射为热力高度,热力高度可以作为一种深度信息。如图5所示,为一个实施例中高斯函数的曲线示意图,根据高斯函数曲线的形状可以看出,当每个像素点对应的透明度值被映射为热力高度,使得数据呈现出一种在高度上从最大值平滑渐变至零的效果,从而生成的三维热力图能够更为直观地表达出数据的分布及变化趋势。例如,透明度值alpha0,经过高斯函数映射得到的热力高度为gaussian(alpha0)。

在一个实施例中,终端可以通过顶点着色器读取三维热力纹理中像素点的像素值,得到像素点在透明度通道上的透明度值,终端获取表示热力渐变效果的色带图像,色带图像中各个颜色与透明度值一一对应,利用该色带图像将像素点的透明度值映射为相应的热力颜色后,将热力颜色作为一种深度信息。如图6所示,为一个实施例中色带图像的示意图。色带图像的颜色可以按照需要进行设置,通常按照数据的强弱变化,色带图像以暖色向冷色过渡,这样,每个像素点对应的透明度值被映射为热力颜色,使得数据呈现出一种在颜色上渐变的效果,从而生成的三维热力图能够更为直观地表达出数据的分布及变化趋势。例如,透明度值alpha0,经过色带图像映射得到的热力颜色为color(alpha0)。

当然,在一些实施例中,终端可以分别将三维热力辐射纹理中像素点的透明度值映射为热力高度和热力颜色,同时将热力高度和热力颜色作为像素点的深度信息,通过高度和颜色两个维度表示数据的强弱变化和分布情况。

s208,对三维热力纹理中像素点对应的三维纹理坐标进行逆图形变换,获得像素点对应的世界空间坐标。

在步骤s204中,三维热力纹理中像素点的坐标是屏幕坐标系中的三维纹理坐标,为了绘制最终的三维热力图,终端需要对三维纹理坐标进行逆图形变换,获得像素点在世界空间坐标系中的坐标。与图形变换的过程相反,逆图形变换依次包括逆视口变换、逆投影变换及逆视图变换,分别用于将坐标从屏幕坐标系转换至裁剪坐标系,再从裁剪坐标系转换至视图坐标系,从视图坐标系转换至世界空间坐标系(worldspace)。这样,三维热力纹理中像素点对应的三维纹理坐标(x’,y’,0)经过上述的逆图形变换过程,转换得到处于世界空间坐标系中的世界空间坐标(x_world,y_world,z_world)。

如图7所示,为一个实施例中将三维热力纹理中的三维纹理坐标逆变换到世界空间坐标系的示意图。参照图7,先通过逆视口矩阵,对三维纹理坐标中的横坐标及纵坐标进行逆视口变换,获得像素点a在裁剪坐标系中的横坐标及纵坐标(x_clip,y_clip)。由于三维纹理坐标中像素点的竖坐标均为0,所以无法确定像素点a在裁剪坐标系中的竖坐标z_clip,可以将z_clip竖坐标设置为两个不同的预设值,得到裁剪坐标系中的两个点,例如可以取1和-1,得到的两个点分别为b(x_clip,y_clip,1)、c(x_clip,y_clip,-1),可以理解,像素点a在裁剪坐标系中的对应点a_clip经过由b、c所确定的直线。接着,继续通过逆投影矩阵及逆视图矩阵,对上述两个裁剪空间坐标依次进行逆投影变换及逆视图变换,得到世界空间坐标系中的两个点d、e,根据d和e可以确定出一条世界空间坐标系中的直线,可以理解,像素点a在世界空间坐标系中的对应点a’经过由d、e所确定的直线。三维热力纹三维热力纹理中像素点对应的三维纹理坐标(x’,y’,0),三维热力纹理是在z_world=0的平面内绘制的,因此通过计算直线de与z_world=0平面的交点,就可以得到像素点a在世界空间坐标系中的对应点a’的坐标(x_world,y_world,z_world),即对应的世界空间坐标。

s210,根据世界空间坐标、热力高度生成三维热力图。

经过上述步骤,获得了各个热力数据点[x,y,alpha]在世界空间坐标系中的世界空间坐标(x_world,y_world,z_world)。终端可以结合该世界空间坐标及前面生成的深度信息生成三维热力图。

在一个实施例中,步骤s210,根据世界空间坐标、热力高度生成三维热力图,包括:将世界空间坐标中的竖坐标替换热力高度后,得到各像素点对应的三维曲面坐标;根据各像素点对应的三维曲面坐标生成三维热力图。

在本实施例中,通过前面步骤s206,得到了像素点在世界空间坐标系中的深度信息,即热力高度gaussian(alpha),将竖坐标替换为热力高度后,得到每个热力数据点[x,y,alpha]在世界空间坐标系中的坐标为(x_world,y_world,gaussian(alpha)),从而可以根据每个热力数据点的坐标生成三维热力图。

如图8所示,为一个实施例中根据热力高度生成的三维热力图的示意图。

在另一些实施例中,根据世界空间坐标、热力高度生成三维热力图,包括:将世界空间坐标中的竖坐标替换为热力颜色后,得到各像素点对应的三维曲面坐标;根据各像素点对应的三维曲面坐标生成三维热力图。

在本实施例中,利用色带图像将像素点的透明度值映射为相应的热力颜色后,将热力颜色作为一种深度信息,得到每个热力数据点[x,y,alpha]在世界空间坐标系中的坐标为(x_world,y_world,color(alpha)),从而可以根据每个热力数据点的坐标生成三维热力图。

在一些实施例中,终端还可以将世界空间坐标中的竖坐标分别替换为热力高度及热力颜色,也就是竖坐标的值可以从高度及颜色两个维度来表示,这样生成的三维热力图可以从高度和颜色两个维度表示数据的强弱变化和分布情况。如图9所示,为一个实施例中根据热力高度和热力颜色生成的三维热力图的示意图。

上述三维热力图的生成方法,一方面,在生成二维热力纹理时,根据热力数据点的坐标及热力值进行实例化渲染,一次渲染调用即可绘制各个热力数据点对应的二维热力纹理,实现了数据的高效传输和批量绘制,提升了渲染性能;另一方面,通过视图投影变换可以精确地将二维热力纹理变换为三维热力纹理,省去了可视区域的计算过程,还节省了渲染开销;再者,利用高斯函数将三维热力纹理中像素点的透明度映射为热力高度,并将三维纹理坐标逆变换为世界空间坐标,结合世界空间坐标与热力高度生成的三维热力图,不仅新增了高度维度以表达数据的强弱变化,增强了热力图的表现效果,还能够连续平滑地呈现数据变化的趋势,加强了视觉感知,有助于提升数据分析的性能。

在一个实施例中,在步骤s204之后,上述方法还包括:对三维热力纹理进行三角剖分,获得纹理网格;通过顶点着色器,读取纹理网格中三角形顶点对应的透明度值;步骤s206具体包括:通过高斯函数,对三角形顶点对应的透明度值进行高斯变换处理,得到三角顶点对应的热力高度。

在本实施例中,终端可以对生成的三维热力纹理进行三角剖分,得到三角顶点,将每个三角顶点从屏幕坐标系转换至世界空间坐标系后,根据三角顶点的世界空间坐标生成三维热力图,相对于将三维热力纹理中所有像素点均转换至世界空间坐标系而言,可以减少计算量,提升生成三维热力图的效率。

可以理解的是,为了使生成的三维热力图的视觉效果更好,对三维热力纹理进行三角剖分获得的三角形的尺寸不能过大也不能过小。如图10所示,为一个实施例中对三维热力纹理进行三角剖分的示意图,参照图10,先将三维热力纹理按照一定的行数和列数剖分为矩形后,再将矩形按斜对角划分得到各个三角形,就可以得到各个三角顶点。

具体地,通过对三维热力纹理进行三角剖分,得到三角顶点及三角顶点对应的三维纹理坐标(x’,y’,0),终端可以通过顶点着色器读取三角顶点的像素值,得到三角顶点在透明度通道上的透明度值,然后对透明度值进行高斯变换处理,经过高斯函数映射为热力高度,得到三角顶点对应的热力高度。按照这样的步骤,终端可以得到每个三角顶点对应的热力高度,并将热力高度作为三角顶点在世界坐标系中的深度信息,用于绘制三维热力图。

接着上面的实施例,步骤s208,对三维热力纹理中像素点对应的三维纹理坐标进行逆图形变换,获得像素点对应的世界空间坐标,包括:获取逆视口矩阵、逆投影矩阵及逆视图矩阵;获取纹理网格中三角形顶点对应的三维纹理坐标;通过逆视口矩阵、逆投影矩阵及逆视图矩阵,依次对三维纹理坐标进行逆视口变换、逆投影变换及逆视图变换,以将三维纹理坐标中的横坐标从屏幕坐标系转换至世界空间坐标系,将三维纹理坐标中纵坐标从屏幕坐标系转换至世界空间坐标系后,获得三角形顶点对应的世界空间坐标。

本实施例中,三维热力纹理中的坐标是屏幕坐标系中的三维纹理坐标,为了绘制最终的三维热力图,终端需要对三角顶点的三维纹理坐标进行逆图形变换,获得各个三角顶点在世界空间坐标系中的坐标。同样地,三维热力纹理中三角顶点对应的三维纹理坐标(x’,y’,0),通过逆视口矩阵、逆视图矩阵及逆投影矩阵,依次对三维纹理坐标进行逆视口变换、逆投影变换及逆视图变换,获得各个三角顶点在世界空间坐标系中的世界空间坐标(x_world,y_world,z_world)。

具体地,终端可以通过逆视口矩阵,对三维纹理坐标中的横坐标及纵坐标进行逆视口变换,获得三角形顶点在裁剪坐标系中的横坐标及纵坐标;将竖坐标设置为两个不同的预设值,得到裁剪坐标系中的两个点;通过逆投影矩阵及逆视图矩阵,对两个点的裁剪空间坐标依次进行逆投影变换及逆视图变换,得到世界空间坐标系中的两个点;确定世界空间坐标系中的两个点所在的直线;从直线中确定三角形顶点在世界空间坐标系中的对应点,得到三角形顶点对应的世界空间坐标。

如图11所示,为一个实施例中三维热力图生成的过程示意图。参照图11,首先获取热力数据点集合,每个热力数据点包括坐标及热力值;接着根据热力数据点的热力值进行实例化渲染,将热力值映射为热力辐射圆之后相互叠加,得到二维热力纹理;再对二维热力纹理进行图形变换,得到三维视角下的三维热力纹理;然后对三维热力纹理进行三角剖分,得到各个三角顶点及对应的三维纹理坐标;通过顶点着色器读取各个三角顶点的像素值,以获得各个三角顶点的透明度值,并将读取的透明度值经过高斯函数映射为热力高度;然后将三角顶点的三维纹理坐标经过逆图形变换得到在世界空间坐标系下的世界空间坐标;最后结合世界空间坐标与热力高度可以得到通过高度表现的三维热力图;还可以进一步将读取的透明度值映射为热力颜色,结合世界坐标、热力高度生成彩色的三维热力图,用户可以从颜色和高度上直观地感受到数据在地理位置上的分布和强度

在一个具体的实施例中,三维热力图的生成方法包括以下步骤:

1、获取热力数据点集合,热力数据点集合中的每个热力数据点包括热力数据点的热力值及用于描述热力数据点所在地理位置的坐标;

2、获取热力辐射圆的预设半径;

3、通过顶点着色器,根据热力数据点的坐标及预设半径,确定以坐标为几何中心的矩形区域;

4、根据热力数据点的热力值,确定矩形区域的几何中心的透明度值,几何中心的透明度值与热力值成正相关;

5、对于矩形区域中各像素点,按照与几何中心的距离,根据几何中心的透明度值对矩形区域中各像素点进行线性插值,获得矩形区域中各像素点对应的透明度值;其中,矩形区域中各像素点的透明度值与像素点到几何中心之间的距离成反相关;

6、根据矩形区域中各像素点对应的透明度值,生成各热力数据点对应的热力辐射纹理;

7、获取热力辐射圆中属于重叠区域的各像素点的透明度值;

8、对属于重叠区域的各像素点的透明度值进行线性叠加处理后,得到重叠区域中各像素点的透明度值;

9、根据各像素点的透明度值生成二维热力纹理;

10、获取视图矩阵、投影矩阵及视口矩阵;

11、获取二维热力纹理中各像素点所对应的地理位置的坐标;

12、通过视图矩阵、投影矩阵及视口矩阵依次对坐标进行视图变换、投影变换及视口变换处理,以将坐标中的横坐标从初始坐标系转换至屏幕坐标系,将坐标中的纵坐标从初始坐标系转换为屏幕坐标系后,得到各像素点对应的三维纹理坐标,像素点对应的三维纹理坐标中的竖坐标相等;

13、基于各像素点对应的三维纹理坐标中的横坐标与纵坐标,以及各像素点对应的透明度值,生成三维热力纹理;

14、对三维热力纹理进行三角剖分,获得纹理网格;

15、通过顶点着色器,读取纹理网格中三角形顶点对应的透明度值;

16、通过高斯函数,对三角形顶点对应的透明度值进行高斯变换处理,得到三角顶点对应的热力高度;

17、获取逆视口矩阵、逆投影矩阵及逆视图矩阵;

18、获取纹理网格中三角形顶点对应的三维纹理坐标;

18、通过逆视口矩阵,对三维纹理坐标中的横坐标及纵坐标进行逆视口变换,获得三角形顶点在裁剪坐标系中的横坐标及纵坐标;

19、将竖坐标设置为两个不同的预设值,得到裁剪坐标系中的两个点;

20、通过逆投影矩阵及逆视图矩阵,对两个点的裁剪空间坐标依次进行逆投影变换及逆视图变换,得到世界空间坐标系中的两个点;

21、确定世界空间坐标系中的两个点所在的直线;

22、从直线上确定三角形顶点在世界空间坐标系中的对应点,得到三角形顶点对应的世界空间坐标;

23、将世界空间坐标中的竖坐标替换热力高度后,得到三角顶点对应的三维曲面坐标;

24、根据各三角顶点对应的三维曲面坐标生成三维热力图;

25、获取预设的色带图像,色带图像中的各个颜色与透明度值一一对应;

26、获取三角形顶点对应的透明度值,根据色带图像确定与透明度值对应的热力颜色;

27、根据热力颜色对三维热力图中的像素点着色,得到彩色的三维热力图。

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

在一个实施例中,如图12所示,提供了一种三维热力图的生成装置1200,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:热力数据点获取模块1202、三维热力纹理生成模块1204和热力图生成模块1206,其中:

热力数据点获取模块1202,用于获取热力数据点集合,热力数据点集合中的每个热力数据点包括热力数据点的热力值及用于描述热力数据点所在地理位置的坐标;

三维热力纹理生成模块1204,用于根据热力数据点的坐标及热力值,获得三维热力纹理;

热力图生成模块1206,用于对三维热力纹理中像素点的透明度值进行高斯变换处理,得到像素点对应的热力高度;对三维热力纹理中像素点对应的三维纹理坐标进行逆图形变换,获得像素点对应的世界空间坐标;根据世界空间坐标、热力高度生成三维热力图。

在一个实施例中,三维热力纹理生成模块1204具体包括实例化渲染模块和图形变换模块,实例化渲染模块用于根据热力数据点的坐标及热力值进行实例化渲染,生成二维热力纹理;图形变换模块用于对二维热力纹理进行图形变换处理,获得三维热力纹理。

在本实施例中,一方面,在生成二维热力纹理时,根据热力数据点的坐标及热力值进行实例化渲染,一次渲染调用即可绘制各个热力数据点对应的二维热力纹理,实现了数据的高效传输和批量绘制,提升了渲染性能;另一方面,通过视图投影变换可以精确地将二维热力纹理变换为三维热力纹理,省去了可视区域的计算过程,还节省了渲染开销。

在一个实施例中,实例化渲染模块还用于获取热力辐射圆的预设半径;通过顶点着色器,根据热力数据点的坐标及预设半径,确定以坐标为几何中心的矩形区域;根据热力数据点的热力值,对矩形区域进行纹理绘制,得到热力数据点对应的热力辐射纹理;根据热力辐射纹理确定热力辐射圆,将各热力数据点对应的热力辐射圆叠加后,得到二维热力纹理。

在一个实施例中,实例化渲染模块还用于根据热力数据点的热力值,确定矩形区域的几何中心的透明度值,几何中心的透明度值与热力值成正相关;按照矩形区域中各像素点与几何中心的距离和几何中心的透明度值,对矩形区域中各像素点进行线性插值,获得矩形区域中各像素点对应的透明度值;其中,矩形区域中各像素点的透明度值与像素点到几何中心之间的距离成反相关;根据矩形区域中各像素点对应的透明度值,生成各热力数据点对应的热力辐射纹理。

在一个实施例中,实例化渲染模块还用于获取热力辐射圆中属于重叠区域的各像素点的透明度值;对属于重叠区域的各像素点的透明度值进行线性叠加处理后,得到重叠区域中各像素点的透明度值;根据各像素点的透明度值生成二维热力纹理。

在一个实施例中,图形变换模块还用于获取视图矩阵、投影矩阵及视口矩阵;获取二维热力纹理中各像素点所对应的地理位置的坐标;通过视图矩阵、投影矩阵及视口矩阵依次对坐标进行视图变换、投影变换及视口变换处理,以将坐标中的横坐标从初始坐标系转换至屏幕坐标系,将坐标中的纵坐标从初始坐标系转换为屏幕坐标系后,得到各像素点对应的三维纹理坐标,像素点对应的三维纹理坐标中的竖坐标相等;基于各像素点对应的三维纹理坐标中的横坐标与纵坐标,以及各像素点对应的透明度值,生成三维热力纹理。

在一个实施例中,三维热力图的生成装置1200还包括纹理剖分模块,用于对三维热力纹理进行三角剖分,获得纹理网格;通过顶点着色器,读取纹理网格中三角形顶点对应的透明度值;热力图生成模块1206还用于通过高斯函数,对三角形顶点对应的透明度值进行高斯变换处理,得到三角顶点对应的热力高度。

在一个实施例中,热力图生成模块1206还用于获取逆视口矩阵、逆投影矩阵及逆视图矩阵;获取纹理网格中三角形顶点对应的三维纹理坐标;通过逆视口矩阵、逆投影矩阵及逆视图矩阵,依次对三维纹理坐标进行逆视口变换、逆投影变换及逆视图变换,以将三维纹理坐标中的横坐标从屏幕坐标系转换至世界空间坐标系,将三维纹理坐标中纵坐标从屏幕坐标系转换至世界空间坐标系后,获得三角形顶点对应的世界空间坐标。

在一个实施例中,热力图生成模块1206还用于通过逆视口矩阵,对三维纹理坐标中的横坐标及纵坐标进行逆视口变换,获得三角形顶点在裁剪坐标系中的横坐标及纵坐标;将竖坐标设置为两个不同的预设值,得到裁剪坐标系中的两个点;通过逆投影矩阵及逆视图矩阵,对两个点的裁剪空间坐标依次进行逆投影变换及逆视图变换,得到世界空间坐标系中的两个点;确定世界空间坐标系中的两个点所在的直线;从直线中确定三角形顶点在世界空间坐标系中的对应点,得到三角形顶点对应的世界空间坐标。

在一个实施例中,热力图生成模块1206还用于将世界空间坐标中的竖坐标替换热力高度后,得到各像素点对应的三维曲面坐标;根据各像素点对应的三维曲面坐标生成三维热力图。

在一个实施例中,热力图生成模块1206还用于获取预设的色带图像,色带图像中的各个颜色与透明度值一一对应;读取三维热力纹理中各像素点对应的透明度值;根据色带图像确定与透明度值对应的热力颜色;根据热力颜色对三维热力图中的像素点着色,得到彩色的三维热力图。

上述三维热力图的生成装置1200,一方面,在根据热力数据点的坐标及热力值生成三维热力纹理后,利用高斯函数将三维热力纹理中像素点的透明度映射为热力高度,并将三维纹理坐标逆变换为世界空间坐标,结合世界空间坐标与热力高度生成的三维热力图,不仅新增了高度维度以表达数据的强弱变化,增强了热力图的表现效果,还能够连续平滑地呈现数据变化的趋势,加强了视觉感知,有助于提升数据分析的性能。

关于三维热力图的生成装置1200的具体限定可以参见上文中对于三维热力图的生成方法的限定,在此不再赘述。上述三维热力图的生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口和显示屏。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、运营商网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种三维热力图的生成方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏。

本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-onlymemory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(randomaccessmemory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(staticrandomaccessmemory,sram)或动态随机存取存储器(dynamicrandomaccessmemory,dram)等。

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

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

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