专利名称:一种热力图绘制方法
专利类型:发明专利
专利申请号:CN202410832391.7
专利申请(专利权)人:子亥科技(成都)有限公司
权利人地址:四川省成都市高新区新通大道777号1栋2单元5楼01号
专利发明(设计)人:李志,伍琦,李志刚,谭龙,陈宇,刘孝卫,邱德顺
专利摘要:本发明涉及可视化技术领域。特别涉及一种热力图绘制方法,包括:根据第一预设范围对原始画布进行分割,获取区域集,其中所述区域集中的任意一个区块与其他至少一个区块之间存在第二预设范围的重叠;获取数据点集;将所述数据点集映射到所述原始画布的坐标中,根据预设阈值对所述区域集进行遍历,绘制所述原始画布的中像素点对应的热力值。本发明通过栅格方式对原始点集进行预处理,首先得出点集的分布规律,基于点集的分布规则选用效果更优的算法。
主权利要求:
1.一种热力图绘制方法,其特征在于,包括:
根据第一预设范围对原始画布进行分割,获取区域集,其中所述区域集中的任意一个区块与其他至少一个区块之间存在第二预设范围的重叠;
获取数据点集;
将所述数据点集映射到所述原始画布的坐标中,根据预设阈值对所述区域集进行遍历,绘制所述原始画布中像素点对应的热力值;
根据预设阈值对所述区域集进行遍历包括:
S1、遍历所述区域集,选取目标区块;
S2、获取映射至所述目标区块的数据点数量,若所述数据点数量大于第一预设阈值且所述目标区块未被标记,则将所述目标区块放入待判定区块集,否则返回S1;
S3、若所述待判定区块集不为空则取出一个区块存入第一区块集中,并获取被取出区块的预设方向的邻接区块;
S4、若所述预设方向的邻接区块内数据点数量大于第一预设阈值且所述预设方向的邻接区块未被标记则放入所述待判定区块集,返回S3直至所述第一区块集为空;
S5、若所述第一区块集中所有区块包含的数据点大于等于第二预设阈值,则采取逐像素计算方法绘制热力值,若所述第一区块集中所有区块包含的数据点小于第二预设阈值,则采取逐点计算方法绘制热力值,返回S1直到所述区块集中所有区块遍历完成;
采取逐像素计算方法绘制热力值包括:
获取所述第一区块集中任一区块内任一像素点;
若所述像素点仅在一个区块,则获取所述像素点所在区块中的每个数据点对所述像素点的影响值并累加,若所述像素点在区块多个区块,则获取所在多个区块中的每个数据点对所述像素点的影响值并累加,其中累加的所述影响值为所述像素点的热力值;
获取每个数据点对所述像素点的影响值并累加包括:获取所述像素点到每个数据点的距离,基于所述距离和所述第一预设范围计算每个数据点对所述像素点的影响值并累加;
计算每个数据点对所述像素点的影响值并累加方法为:若R>r:W=W原+((R‑r)/R*v);
若R
其中,R为第一预设范围的边长,r为像素点到数据点的距离,W为像素点的热力值,v为数据点的影响度,W原为像素点原有的热力值;
采取逐点计算方法绘制热力值包括:
遍历所述第一区块集中区块的所有数据点,依次以所述数据点为圆心,所述第一预设范围的边长为半径绘制热力值。
2.根据权利要求1所述的热力图绘制方法,其特征在于,获取数据点集之后包括:将所述数据点集进行归一化处理。
3.根据权利要求1所述的热力图绘制方法,其特征在于,将所述目标区块放入待判定区块集之后包括:通过将放入所述待判定区块集的所述目标区块对应的标记值设为预设值,将所述目标区块记为已标记。 说明书 : 一种热力图绘制方法技术领域[0001] 本发明涉及可视化技术领域,特别是涉及一种热力图绘制方法。背景技术[0002] 现有热力图的绘制渲染共分为两种主要方式:[0003] 基于正向方式绘制的热力图包括:1.初始化画布:首先,根据需要展示的数据范围和精度,初始化一个足够大的画布。画布的大小应与数据矩阵的尺寸相匹配。2.逐点绘制:遍历数据矩阵中的每一个点。对于数据矩阵中的每个元素(即每个点),根据其归一化后的值,从颜色映射方案中确定相应的颜色。在画布上的对应位置绘制这个颜色。如果画布是以像素为单位,这通常意味着将该点对应的像素点着色。3.颜色插值:对于数据点之间的空白区域,可以通过插值方法(如线性插值或双线性插值)计算中间点的颜色值,以实现更平滑的颜色过渡效果。[0004] 基于逆向方式绘制的热力图:现有技术公开了一种逆向渲染绘制的热力图可视化方法,以视窗单个像素点为分析点,根据适用于当前分析的影响力叠加模式分析单个像素点的临近数据点的分布并计算影响力图像并映射成灰度图像,然后按照灰度图像的整体分布规律划分得到渐变色分级阈值,以这种自适应的方式获得热力图的色彩梯度,然后赋色得到热力图。[0005] 但是基于正向绘制的方式在处理密集且大量的点数据时,处理速度较慢。当点数据的影响区域比较大时,绘制成本非常高。而基于逆向绘制的方式在处理稀疏点集时,处理速度较慢。因此提出了一种热力图绘制方法,解决上述技术问题。发明内容[0006] 本发明的目的是提供一种热力图绘制方法,对原始数据点集做预处理后进行分片绘制,保持局部效率最优最终达成在复杂数据情况下渲染效率的最优方式。[0007] 为实现上述目的,本发明提供了如下方案:[0008] 一种热力图绘制方法,包括:[0009] 根据第一预设范围对原始画布进行分割,获取区域集,其中所述区域集中的任意一个区块与其他至少一个区块之间存在第二预设范围的重叠;[0010] 获取数据点集;[0011] 将所述数据点集映射到所述原始画布的坐标中,根据预设阈值对所述区域集进行遍历,绘制所述原始画布中像素点对应的热力值。[0012] 可选的,获取数据点集之后包括:将所述数据点集进行归一化处理。[0013] 可选的,根据预设阈值对所述区域集进行遍历包括:[0014] S1、遍历所述区域集,选取目标区块;[0015] S2、获取映射至所述目标区块的数据点数量,若所述数据点数量大于第一预设阈值且所述目标区块未被标记,则将所述目标区块放入待判定区块集,否则返回S1;[0016] S3、若所述待判定区块集不为空则取出一个区块存入第一区块集中,并获取被取出区块的预设方向的邻接区块;[0017] S4、若所述预设方向的邻接区块内数据点数量大于第一预设阈值且所述预设方向的邻接区块未被标记则放入所述待判定区块集,返回S3直至所述第一区块集为空;[0018] S5、若所述第一区块集中所有区块包含的数据点大于等于第二预设阈值,则采取逐像素计算方法绘制热力值,若所述第一区块集中所有区块包含的数据点小于第二预设阈值,则采取逐点计算方法绘制热力值,返回S1直到所述区块集中所有区块遍历完成。[0019] 可选的,将所述目标区块放入待判定区块集之后包括:通过将放入所述待判定区块集的所述目标区块对应的标记值设为预设值,将所述目标区块记为已标记。[0020] 可选的,采取逐像素计算方法绘制热力值包括:[0021] 获取所述第一区块集中任一区块内任一像素点;[0022] 若所述像素点仅在一个区块,则获取所述像素点所在区块中的每个数据点对所述像素点的影响值并累加,若所述像素点在区块多个区块,则获取所在多个区块中的每个数据点对所述像素点的影响值并累加,其中累加的所述影响值为所述像素点的热力值。[0023] 可选的,获取每个数据点对所述像素点的影响值并累加包括:[0024] 获取所述像素点到每个数据点的距离,基于所述距离和所述第一预设范围计算每个数据点对所述像素点的影响值并累加;[0025] 计算每个数据点对所述像素点的影响值并累加的方法为:[0026] 若R>r:W=W原+((R‑r)/R*v);[0027] 若R[0028] 其中,R为第一预设范围的边长,r为像素点到数据点的距离,W为像素点的热力值,v为数据点的影响度,W原为像素点原有的热力值。[0029] 可选的,采取逐点计算方法绘制热力值包括:[0030] 遍历所述第一区块集中区块的所有数据点,依次以所述数据点为圆心,所述第一预设范围的边长为半径绘制热力值。[0031] 本发明的有益效果为:本发明通过栅格方式对原始点集进行预处理,首先得出点集的分布规律,基于点集的分布规则选用效果更优的算法。本发明通过扩散方式进行点集区域的判定,可以快速找出密集区域集与稀疏区域集,通过区域点的密集程度不同,采用不同的热力图计算方式进行计算,节省计算时间。本发明在针对密集区域集的特点进行绘制的过程中,考虑到密集区域的热力值影响点较多,当热力值超过设定阈值后自动取消后续计算,极大提升了密集区域绘制性能。附图说明[0032] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。[0033] 图1为本发明实施例的划分方式示意图;[0034] 图2为本发明实施例的一种热力图绘制方法的流程图。具体实施方式[0035] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0036] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。[0037] 如图2所示,本发明公开了一种热力图绘制方法,包括:[0038] 根据第一预设范围对原始画布进行分割,获取区域集,其中所述区域集中的任意一个区块与其他至少一个区块之间存在第二预设范围的重叠;[0039] 获取数据点集;[0040] 将所述数据点集映射到所述原始画布的坐标中,根据预设阈值对所述区域集进行遍历,绘制所述原始画布中像素点对应的热力值。[0041] 具体的,获取数据点集之后包括:将所述数据点集进行归一化处理。[0042] 具体的,根据预设阈值对所述区域集进行遍历包括:[0043] S1、遍历所述区域集,选取目标区块;[0044] S2、获取映射至所述目标区块的数据点数量,若所述数据点数量大于第一预设阈值且所述目标区块未被标记,则将所述目标区块放入待判定区块集,否则返回S1;[0045] S3、若所述待判定区块集不为空则取出一个区块存入第一区块集中,并获取被取出区块的预设方向的邻接区块;[0046] S4、若所述预设方向的邻接区块内数据点数量大于第一预设阈值且所述预设方向的邻接区块未被标记则放入所述待判定区块集,返回S3直至所述第一区块集为空;[0047] S5、若所述第一区块集中所有区块包含的数据点大于等于第二预设阈值,则采取逐像素计算方法绘制热力值,若所述第一区块集中区块包含的数据点小于第二预设阈值,则采取逐点计算方法绘制热力值,返回S1直到所有区块遍历完成。[0048] 具体的,将所述目标区块放入待判定区块集之后包括:通过将放入所述待判定区块集的所述目标区块对应的标记值设为预设值,将所述目标区块记为已标记。[0049] 具体的,采取逐像素计算方法绘制热力值包括:获取所述第一区块集中任一区块内任一像素点;[0050] 若所述像素点仅在一个区块,则获取所述像素点所在区块中的每个数据点对所述像素点的影响值并累加,若所述像素点在区块多个区块,则获取所在多个区块中的每个数据点对所述像素点的影响值并累加,其中累加的所述影响值为所述像素点的热力值。[0051] 具体的,获取每个数据点对所述像素点的影响值并累加包括:[0052] 获取所述像素点到每个数据点的距离,基于所述距离和所述第一预设范围计算每个数据点对所述像素点的影响值并累积;[0053] 计算每个数据点对所述像素点的影响值并累加的方法为:[0054] 若R>r:W=W原+((R‑r)/R*v);[0055] 若R[0056] 其中,R为第一预设范围的边长,r为像素点到数据点的距离,W为像素点的热力值,v为数据点的影响度,W原为像素点原有的热力值。[0057] 具体的,采取逐点计算方法绘制热力值包括:遍历所述第一区块集中区块的所有数据点,依次以所述数据点为圆心,所述第一预设范围的边长为半径绘制热力值。[0058] 本实施例提出一种热力图绘制方法,对原始数据点集做预处理后进行分片绘制,保持局部效率最优最终达成在复杂数据情况下渲染效率的最优方式。以下步骤完成:[0059] 1.给定画布尺寸X、Y,点影响范围R。[0060] 2.将原始数据集归一化处理,得到数据点集[A(xa,ya,va),B(xb,yb,vb)…],其中,v代表点的影响度,值为0 1,其中归一化仅将原数据中的影响值v进行归一化,如能源~值、交通拥堵值、车流量等进行归一化。[0061] 3.将原始画布按照R进行分割,保持R/2的重叠区域,得到分割后的多个区域集C(X,Y),划分方式如图1所示。[0062] 4.遍历所有原始点集,并将数据点映射到画布坐标中,将落入不同区域集的点数量记录为D(X,Y),例如,一共有10个点落入区块C(1,1)中,则D(1,1)=10。[0063] 将数据点映射到画布坐标中包括:二维画布会存在一个平面坐标系(可以使直角坐标系、仿射坐标系等),轴为X,Y存在一个设计函数F(x,y)使得对任意的点M(xm,ym,Z)都有(Xm,Ym)=F(x,y),这样就实现了点集到平面坐标系的映射。[0064] 如点集为地点,平面坐标系为平面直角坐标系,那么x代表经度,y代表纬度,X为平面直角坐标系的X轴,范围是[0,画布宽度],Y为Y轴,范围是[0,图像高度]。F(x,y)函数即为经纬度投影转换函数。[0065] 5.给定一个阈值N,从C(1,1)开始遍历所有区域集。[0066] 6.对于一个区块C(X,Y),判断D(X,Y)是否大于阈值N和是否已被标记,如果大于阈值N且未被标记则将该区块则放入待判定区块集K中,否则跳过区块C(X,Y)继续步骤5进行继续遍历。[0067] 判断区块C(X,Y)是否被标记的方法为:使用一个标记集P(X,Y),当区块C(X,Y)放入区块集K中时,将P(X,Y)置为1,代表标记区块C(X,Y)。[0068] 7.若待判定区块集K中存在区块,则进行步骤8,否则重复步骤5进行继续遍历。[0069] 8.从待判定区块集K中取出一个区块C(X,Y),并存入区块集L中。[0070] 9.判断D(X+1,Y)、D(X,Y+1)是否大于N和是否已被标记,如果大于阈值N且未被标记则放入待判定区块集K中,重复步骤8,直到区块集K中无区块。[0071] 具体的,对于取出的区块C(X,Y),可以获得其横竖下一个区块C(X+1,Y)、C(X,Y+1)所对应的D(X+1,Y),D(X,Y+1)的值,D(X,Y)是一个数,用以记录落入对应区块C(X,Y)中的点的数量。N是一个给定的预值,如:10。分别用D(X+1,Y),D(X,Y+1)与N的值比较。如果D(X+1,Y)大于N,且P(X+1,Y)不为1,则将C(X+1,Y)放入K中并将该P(X+1,Y)置为1。同理判断D(X,Y+1)。[0072] 10.给定一个阈值M,判断区块集L中所有区块C对应的D和值之和m,如果m大于等于阈值M,则采用进行逐像素计算方法遍历区块C(X,Y)中所有像素,对于每个像素再依次遍历所在区块中所有数据点(A,B…),若某一像素点仅在一个区块,则获取所在区块中的每个数据点对该像素点的影响值并累加,若某一像素点在多个区块即在多个区块的重叠部分,则获取所在多个区块中的每个数据点对该像素点的影响值并累加。计算某一像素点最终热力值即计算每个数据点对该像素的影响值并累加,具体包括:计算像素点到数据点的距离r,若R>r:W=W原+((R‑r)/R*v),若R[0073] 距离计算方式为:每一个画布的像素有一个画布坐标(Xp,Yp),对于区块集L中的所有点,都存在一个画布坐标[A(xap,yap,va),B(xbp,ybp,vb)……],距离r=((Xp‑xp)^2+(Yp‑yp)^2)^(1/2)。[0074] 本实施例中步骤6‑9定义为扩散方式,即给定一个阈值,判定区块中的点数量是否大于预值,如果大于再判定该区块周围的区块,直到找到所有边缘区块为止。[0075] 实施例:[0076] 本实施例绘制上海市能源热力图,包括以下步骤:[0077] 1.给定画布范围X=1000,Y=1000,点影响范围R=20。[0078] 2.首先得到能源数据点集进行归一化处理,得到如下点集(归一化处理即将能源值映射到0‑1,这里使用线性映射):[(121.5081,31.240375,0.5),(121.50821,31.240365,1.0),(121.50823,31.240358,0.8)……]。[0079] 3.画布分割。[0080] 4.读取点A,并进行坐标映射,得到画布对应点Ap(19,15)。[0081] 5.通过点Ap坐标可知,该点落入区域C(1,1)、C(1,2)、C(2,1)。[0082] 6.因此D(1,1)、D(1,2)、D(2,1)均自增1。[0083] 7.继续读取点B、C……进行步骤4 6,直到所有点遍历完成。~[0084] 8.此时得到数据集D(1,1)=5,D(1,2)=4,D(1,3)=0……[0085] 9.给定一个阈值N=3,开始遍历所有C(X,Y)共100*100个。[0086] 10.首先是C(1,1),对应D(1,1)=5>3,且P(1,1)不为1,因此将P(1,1)置为1并将C(1,1)放入待判定区块集K中得到K:[C(1,1)]。[0087] 11.判定知K中存在区块,从K中取出C(1,1),并存入区块集L中,得到L:[C(1,1)],K[]。[0088] 12.判定得知D(1,2)=4>3,D(2,1)=0<3,则将P(1,2)置为1并将C(1,2)存入区块集K中,得到:K[C(1,2)]。[0089] 13.判定知K中存在区块,从K中取出C(1,2),并存入区块集L中,得到L:[C(1,1),C(1,2)],K[]。[0090] 14.判定得知D(1,3)=0<3,D(2,2)=0<3,则表明无需存入区块。[0091] 15.判定得知K中不存在区块,则给定一个阈值M=5,由上述步骤可知L中所有区块C(1,1)、C(1,2)对应的D(1,1)、D(1,2)之和为9>M=5,因此遍历区块集中所有区块对应像素,也就是画布坐标X:0 30,Y:0 20。~ ~[0092] 16.对于像素Q(1,1),计算到点A距离r=24.2。因为r=24>20,因此W(1,1)=0。[0093] 17.同理计算出到区块集L中所有区块中包含的点的距离,最后求得像素Q(1,1)热力值W最终值。[0094] 18.继续遍历点Q(1,2)、Q(1,3)……,最后求得区块集L对应画布像素所对应的W的值。[0095] 19.完成遍历后代表区块L绘制完成,则继续遍历区块C(1,2),判定发现P(1,2)为1,跳过区块C(1,2)。[0096] 20.继续遍历区块C(1,3)……重复步骤10 18,直到所有区块遍历完成。~[0097] 21.遍历完成后,得到的所有像素点对应的W值即为该点热力值,使用常见的热力轴映射的方式完成呈现即可。[0098] 以上所述的实施例仅是对本发明优选方式进行的描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
专利地区:四川
专利申请日期:2024-06-26
专利公开日期:2024-09-03
专利公告号:CN118379393B