一种基于并行加速的热点图生成方法
【技术领域】
[0001] 本发明属于图像处理技术、热点图生成技术领域,具体设及一种基于并行加速的 热点图生成方法。
【背景技术】
[0002] 热点图,也叫化atmap,它通过聚合大量数据,使用一种渐进的色带来优雅地展示, 最终效果往往优于离散点的直接显示,可W很直观地展现空间数据的疏密程度或频率高 低。热点图已应用于很多领域。例如记录用户在Web页面内鼠标的点击位置,各种空间离 散点数据的显示等等。
[0003] 热点图的生成算法主要包括如下四个步骤:
[0004] 1)为离散点设定一个半径,创建一个缓冲区;
[0005] 2)对每个离散点的缓冲区,使用渐进的灰度带(完整的灰度带是0~255)从内而 夕F,由浅至深地填充;
[0006] 3)由于灰度值可W叠加(值越大颜色越亮,在灰度带中则显得越白。在实际中,可 W选择ARGB模型中任一通道作为叠加灰度值),从而对于有缓冲区交叉的区域,可W叠加 灰度值,因而缓冲区交叉的越多,灰度值越大,该块区域也就越"热";
[0007] 4)W叠加后的灰度值为索引,从一条有256种颜色的色带中(例如彩虹色)映射 颜色,并对图像重新着色,从而实现热点图。
[000引 目前GIS领域化atmap的生成工具有很多;
[0009] 1)ArcGIS自带的HeatmapLayer工具,其实现可W参考:
[0010] https://developers,arcgis.com/flex/sample-code/heatmap.htm
[0011] https://github.com/Esri/heatmap-layer-js/blob/master/src/HeatmapLayer.js
[0012]2)Google的化eat实现;http://code,google,com/p/曲eat/
[0013] 3)GoogleMap的Heatmap实现;
[0014] ht1:p://web.archive.org/web/20l3l229l2l735/ht1:p://heatmapapi.com/
[0015]http://geochalkboard,wordpress.com/2009/03/ll/density-mapping-in-goog1e-maps-with-heatmapapi/
[0016] 在实际应用中,该些工具的缺点主要包括如下几点:
[0017] 1)算法效率较低。由于该些算法均是在CPU中实现,对于输入点数据量较大、半径 较大、屏幕分辨率较大的情况,算法效率低,延迟严重。
[0018] 2)热点图分析结果不适合实际应用。一些工具(如Arcgis的化atmapLayer),虽 然可W生成热点图,但是其每个点的影响半径是基于屏幕空间,而不是基于实际经绅度空 间。因此当地图显示Extent变化时,其分析绘制结果是不正确的,不能满足某些实际的GIS 应用。
[0019] 在上述两点问题中,算法效率问题是目前最关键也是最影响可用性的问题,目前 的GIS热点图工具普遍都存在该个问题。因此,下面将从算法本身探讨其效率低下的根本 原因。
[0020] 如上所述,化atmap算法总共分四个步骤,其中最耗时的操作是第3)、4)步,下面 对该两步的具体操作进行描述。
[0021] 第扣步;灰度值叠加。主要流程是:
[0022]首先,根据第二步,对于点集化intSet(N),为每个点(比如灾害点)产生一个影响 范围的圆,其半径R是用户指定。每个圆可W离散为一系列的点(该里称为像素),其中保 存的值为该点距离圆屯、的距离的加权值,用它来代表该点受圆屯、处点的影响因子。正常情 况下,圆屯、处影响因子值为1. 0,在圆边界处的影响因子值为0. 0。最后使用一个矩阵来保 存该些离散点的影响因子值,该矩阵称为距离矩阵Matrix。
[002引其次,我们创建一个二维数组ImageResult比ei曲t] [wi化h],该二维数组用来保 存输出热点灰度图的灰度值。其中hei曲t和width分别代表输出热点图的高和宽度,每个 数组元素初始化为0.0。
[0024] 遍历每个灾害点,对该点执行如下操作:
[0025] 计算灾害点对应的二维数组空间坐标(X,y)(灾害点的输入坐标为空间经绅度坐 标)
[0026] W(X,y)为圆屯、,R为半径,计算该圆在ImageResult所能覆盖到的元素,并计算 新的元素值,计算方法就是加和累计,元素值加上该点距离矩阵Matrix中的值。
[0027] 最后,ImageResult中就保存了热点灰度图的灰度值,其含义是值越大,代表该处 附近的灾害点分布越密集。
[002引第4)步;彩色图映射。
[0029] 首先,对于已有二维数组ImageResult,要计算其中所有元素的最大maxValue、最 小值minValue。
[0030] 其次,对于ImageResult中每个元素,将其映射为一种颜色。该里假定用 户输入待映射的色带为ColorRamp[(Colorl,offsetl),(Color2,offsets),...... ,(ColorM,offsetM)],一共M种颜色。
[003U 遍历每个ImageResult数组元素E[i,j],对该元素执行如下操作;
[003引计算E相对于虹inValue,maxValue]值域范围的权值,计算公式如下,wei曲巧= (E-minValue)/(maxValue-minValue)
[0033] 基于权值wei曲tE,将E映射到色带ColorRamp中,计算该颜色值ColorResult。
[0034] 将ColorResult写回ImageResult,作为输出的热点图图像像素值。
[0035] 该里,步骤3)和4)已经详细描述完,其中最耗时的操作是斜体字标出的部分。该 些操作都设及遍历循环操作,如果在CPU里完成操作,对于灾害点的个数N比较多,输出图 像比较大(w*h)的情况下,其时间复杂度为0(n)和0(w*h),严重影响性能。
【发明内容】
[0036] 本发明针对上述问题,提供一种基于并行加速的热点图生成方法,该方法充分利 用硬件加速能力,能够有效地提升热点图生成效率。
[0037]本发明的基于并行加速的热点图生成方法,采用并行技术进行热点图生成的相关 计算,包括如下步骤:
[003引 1)根据用户输入的热点的影响半径,计算热点的影响因子距离矩阵,用于保存距 离热点不同距离的影响因子;
[0039] 2)计算所有热点影响范围的叠加灰度图信息,生成热点图的灰度图;
[0040] 3)根据灰度图计算映射后的彩色图信息,生成热点图的彩色图;
[0041] 4)将彩色的热点图输出并展示给用户。
[0042] 如果所述热点图为GIS热点图,需要在步骤1)之前进行空间-图像坐标转换,即 将输入的热点即灾害点的空间经绅度坐标转换为输出热点图图像空间的二维图像坐标。
[0043] 本发明的主要目的是解决GIS领域热点图生成效率问题,所用到的技术为 ArcGIS+WPF+化englOiLSL)。本发明首次使用GPU并行技术对传统的化atmap算法进行改 进,速度快,效果好。本发明算法的本质是将传统的化atmap算法由之前的串行算法改为并 行算法。本文算法实验使用的是ArcGIS+化engl+WPF技术,并行技术使用了GPUGLSL。此 夕F,本发明还可W使用其他的并行技术作为替代方案,主要包括如下几种;1)使用其他GPU 并行计算技术,如CUDA、CG、DirectX等;2)使用CPU多核并行加速技术,如OpenMP等;3) 使用分布式并行计算、集群并行计算或者云计算。
[0044] 本发明的关键创新点包括:
[0045]a)该方法提出一种基于并行加速的热点图生成方法,基于大量灾害点数据,利用 GPU计算能力,可W快速计算出灾害点可能的影响范围,并且W热点图的形式展示。不同 与其他基于CPU的方法,本发明方法效率高,充分利用硬件加速能力,完全在GPU中完成计 算;
[0046] b)该方法同时支持实时和离线热点图生成算法;实时算法利用GPU并行加速和图 形运算能力,仅绘制屏幕空间元素;离线算法可W快速生成大量数据的热点图,而且基于其 并行算法的特性,还很容易扩展至支持海量数据的热点图擅染。对于大量GIS灾害点数据, 可W快速生成热点图并展示,不仅很容易整合到现有ArcGIS框架中,而且还可W扩展到其 他图像处理或可视化应用领域。
[0047]C)该方法可W与ArcgisforWPF框架整合,巧妙了结合了Arcgis、Opengl和WPF 的绘制能力,充分利用=者的优点,规避了其缺点,能够提供良好的热点图功能,不仅速度 优于其他方法(如Arcgis自带的化atMap功能),而且还解决了其绘制延迟、热点半径无法 动态改变的问题。
[0048] 与目前应用比较广泛的化atmap生成技术和算法(如【背景技术】中所述)相比,本 发明的优点和有益效果主要包括如下几点:
[0049] 1)其他算法都是基于CPU计算,由于算法本身的特点,纯粹CPU的算法在效率上会 存在瓶颈;而本发明对传统算法进行改进,充分利用当前硬件加速能力,完全在GPU中完成 算法,在效率上得到了很大提升;
[0化0] 2)其他算法往往都是针对GIS领域,算法应用范围较窄,算法实现相关技术也相 对单一。本发明提供的热点图生成解决方案,充分利用了Arcgis、Opengl和WPF绘制技术, 算法对GIS依赖性比较弱,具有较好的实用性、智能性和灵活性,不仅可W应用于GIS领域, 而且还可W应用于虚拟现实、图像处理、行业可视化等其他应用领域。不同的是,在该些领 域,由于不设及GIS坐标与图像坐标转换。另外由于不同领域的输入不同,本文的"灾害点" 可w替代成其他形式的"热点"数据。为了达到不同领域对热点图效果的要求,用户可w通 过调整本文算法中第1)步的矩阵参数、第3)步彩色图中的色带来调整效果。
[0051]如其他许多算法,其热点图生成步骤中,热点的影响半径都限制于屏幕像素空间, 因此在实际应用中,该些算法应用场景有限,对许多场景无法使用,甚至会产生错误的结 果;本发明中,热点影响半径是基于实际经绅度空间,因此,不管是实时还是离线算法,本文 算法都可W产生正确的热点图结果。
【附图说明】
[0化2] 图1是实施例中基于并行加速的热点图生成方法的步骤流程图。
[0化3] 图2、图3是灾害点数为5000,分辨率为4000*3000时效果对比图;其中图2是经 典算法的效果图,图3是本发明算法的效果图。
【具体实施方式】
[0054] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和 附图,对本发明做进一步说明。
[0055] 本实施例提供的基于并行加速的热点图生成方法,其步骤流程如图1所示,包括 空间-图像坐标转换部分1,距离矩阵生成部分2,GPU灰度图生成部分3,GPU彩色图生成 部分4,和GIS图层显示部分5,整个过程均在GPU中完成,最终输出一张彩色热点图,并在 GIS二维地图中展示。其中:
[0056] 空间-图像坐标转换部分1,负责将输入的灾害点的空间经绅度坐标 (long;Uude,latitude)转换为输出热点图图像空间的二维图像坐标(x,y);
[0化7] 距离矩阵生成部分2,负责根据用户输入的灾害点的影响半径R,计算灾害点的影 响因子距离矩阵Matrix;
[005引 GPU灰度图生成部分3,负责计算所有灾害点影响范围的叠加灰度图信息;
[0059] GPU彩色图生成部分4,负责根据灰度图计算映射后的彩色图信息;
[0060] GIS图层显示部分5,负责将输出的彩色热点图绘制到GIS地图中,展示给用户。
[0061] 下面分别针对每一个步骤,详细阐述技术方案及实现方法。
[0062] 假定输入灾害点个数为N,灾害点数据集合为PSet(脚。每个灾害点的影响半径为 R,输出热点图图像大小宽高为wi化h和hei曲t,待映射的色带为ColorRamp[(Colorl,offs etl), (Color2,offset2),......,(ColorM,offsetM)],其中颜色数为M种,Colorl-ColorM为 色带的M种颜色,offsetl-offsetM为每种颜色在色带中对应的偏移量。
[0063] (一)空间-图像坐标转换部分1
[0064]对于给定灾害点P空间坐标经绅度值Space(X,y,Z),需要转换为输出的图像坐标 PImage(x,y),该里,使用化化技术,在GPU中完成坐标转换。
[00化]首先,创建一张浮点纹理TextureP,其大小为N*3,对应的纹理格式为GL_RGB,GL_ 化OAT。该浮点纹理为一维纹理,里面保存了每个空间坐标点经绅度值Space(x,y,z)。不 过,该里需要说明一下,对于不同的显卡,一维纹理大小的限制也不同,如果输入灾害点个 数N太多,一张一维纹理无法保存该些信息,可W通过申请多张一维纹理,或者直接申请二 维纹理的方式来解决该问题;
[0066] 其次,创建一张浮点纹理TexturePImage,其大小为N*l,对应纹理格式为GL_ RGB,GL_FLOAT,该纹理用来输出每个点转换后的图像坐标;
[0067] 第S,包I建一个帖缓冲对象FBO,名为FBO_CoordinateTransform,作为此次擅染 的擅染缓冲,将TexturePImage绑定到FBO_CoordinateTransform的 0 号buffer中,作为 输出纹理;
[0068] 第四,包I建一个着色器对象Program_CoordinateTransfo;rm,绑定一个顶点着色器 和一个片元着色器对象,另外传入几个化iform值;
[0069]uniformvec4map_extent;待输出点的经绅度范围(minX,minY,ma;sX,ma;sY)
[0070]uniformvec2imagesize;待输出图像宽高(wi化h,hei曲t)
[0071]uniformsampler2Dtex1:ureP;坐标点的经绅度信息纹理;
[0072] 第五,在片元着色器中,首先从textureP中获取当前灾害点的经绅度坐标 P(X,y,Z),其次计算其对应的图像坐标,计算公式如下,其中P.x、P.y分别表示灾害点的经 度和绅度:
[0073]PImage.X= ((P.x-minX) / (ma;sX-minX))*width
[0074] PImage.y=hei曲t-(化y-min''〇 / (max;Y-min''〇) *hei曲t(图像坐标与经绅度坐 标系在Y轴方向是反的);
[0075] 第六,最终在绘制的时候,绑定输出FB0为FBO_CoordinateTransform,着色器为 Program_CoordinateTransfo;rm。绘制一个大小为N*1的矩形,绑定输入纹理TextureP。待 绘制完成后,通过readPixel命令将输出结果从显存拷贝到内存中,存放在数组PImage中。
[0076](二)距离矩阵生成部分2
[0077] 对于每个灾害点P和影响半径R,需要计算一个距离矩阵Matrix,里面保存距离灾 害点不同距离的影响因子,其范围为[0,1]。该里我们在GPU里完成计算,输出距离保存在 纹理TextureMatrix中。
[0078] 首先,创建一张浮点纹理TexturePMatrix,其宽高均为Distance=R*2-l(用户可 W自定义范围,该里是我们实验参数,其中R越大,计算范围越大),其目的是在用户输入的 影响半径基础上,再外扩一定范围,W保证最终的热点图效果和准确性。该纹理对应纹理格 式为GL_LUMINANCE,GL_FL0AT,该纹理用来输出每个点转换后的图像坐标;
[0079] 其次,创建一个帖缓冲对象FB0,名为FBO_Matrix,作为此次擅染的擅染缓冲,将 Tex1:urePMat;rix绑定到FBO_Matrix的0号buffer中,作为输出纹理;
[0080] 第S,包I建一个着色器对象Program_Mat;rix,绑定一个顶点着色器和一个片元着 色器对象,另外传入一个化iform值;
[0081]uniformfloatdistance;距离矩阵的宽和高
[008引第四,在片元着色器中,首先计算当前片元对应于矩阵Matrix中的行列序号i和j,之后计算当前片元的影响因子,计算公式如下(用户可W选择其他方式计算,可W达到 不同的效果(如颜色过渡速度有所不同),本发明使用的是平方根和指数计算(颜色过渡更 平滑更自然一些),用户可W选择Log或者其他函数来计算):
[008引Math.Max((distance- (Math.Sqrt(Math.Pow(i-distance+l, 2) +Math. 化w(j-distance+l, 2)))), 0);其中,Math表示计算类名,Max表示计算最大值函数名,distance为距离矩阵的宽和高,Sqrt表示计算平方根的函数名,Pow表示计算X的y次方 的函数名,1表示底数的阀值,2表示指数。
[0084] 最后,距离矩阵就保存在输出纹理TexturePMatrix中。
[0085] (S)GPU灰度图生成部分3
[0086] 该步骤中,我们针对每个灾害点,通过化engl绘制一个正方形,给正方形贴上距 离矩阵的纹理,之后利用化engl本身的纹理混合texenv和片元混合blend技术,实现影响 因子的自动叠加,最终输出热点图灰度图纹理。
[0087] 首先,包I建一张浮点纹理TexturePGray,其宽高分别为wi化h和hei曲t,作为 此次擅染的结果,保存所有灾害点影响因子的叠加结果。该纹理对应纹理格式为GL_ LUMINANCE,GL_FLOAT;
[00能]其次,创建一个帖缓冲对象FBO,名为FBO_Gray,作为此次擅染的擅染缓冲,将TexturePGray绑定到FB0_Gray的0号buffer中,作为输出纹理;
[0089] 第S,创建一个着色器对象Program_Gray,绑定一个顶点着色器和一个片元着色 器对象,另外传入几个化iform值;
[0090]uniformsamplertexUireMatrix;距离矩阵纹理
[0091] 第四,绘制时,我们对每个灾害点,绘制一个正方形,其半径为Distance。该些正方 形都贴上距离矩阵纹理TexturePMatrix。该样就可W模拟每个灾害点的影响范围W及其中 的影响因子。在绘制该些正方形时,我们开启片元混合操作GL_BLEND,并且将片元混合函 数设置为加和(ONE,ONE),该样就可W对各个灾害点影响范围内的影响因子进行累积,并 且利用GPU硬件来实现裁剪、累积,最终输出热点图的灰度图纹理TexturePGray。
[009引(四)GPU彩色图生成部分4
[0093] 该步骤中,针对热点图灰度图的每个像素和输入色带,计算其映射后的颜色,并输 出到热点图彩色纹理中。
[0094] 该步骤中,我们针对输入的热点图灰度图纹理TexturePGray,首先要计算其中的 最大值和最小值,分别代表整个地图中灾害影响最大值maxGray和最小值minGray。之 后,我们将其每个像素的灰度值由虹inGray,maxGray]先映射到[0,1],然后再映射到 给定色带ColorRamp中,得到该像素对应的彩色值Color,最终,输出热点图彩色图纹理 TexturePColor。
[0095] 首先,我们要计算输入灰度图纹理TexturePGray中的最大值maxGray与最小值 minGray。传统的方法,是首先将TexturePGray由显卡通过glReadPixel回读到内存中,然 后循环遍历,计算其最大最小值,因此时间复杂度为〇(width*hei曲t)。我们该里使用的方 法,是利用GPUpin甜ong技术,通过多次FB0绘制,每次8*8降采样,最终输出1*1大小的 纹理TexturePMinMax,里面
保存最大最小值。该样要比第一种方法效率高。
[0096] 其次,创建一张无符号字符型纹理TexturePColor,其宽高分别为wi化h和 hei曲t,作为此次擅染的结果,保存所有灾害点影响因子的彩色值。该纹理对应纹理格式为 GL_RGBA8,GL_UNSIGNED_BYTE;
[0097] 第S,创建一个帖缓冲对象FBO,名为FB0_Color,作为此次擅染的擅染缓冲,将 TexUirePColor绑定到FB0_Color的0号buffer中,作为输出纹理;
[009引第四,创建一个着色器对象Program_Color,绑定一个顶点着色器和一个片元着 色器对象,另外传入几个化iform值;
[0099] uniformsamplertex1:ureGray;热点图灰度纹理
[0100] uniformsamplertex1:ureMinMax;最大最小值纹理
[0101] uniformfloat[50]ColorRamp;最多支持一条色带10种颜色,其组成为RGBA Offset
[0102] 第五,绘制一个wi化h*hei曲t大小的矩形如ad,绑定纹理TexturePGray,在片元 着色器里,根据片元灰度值和最大最小值,映射到色带中得到颜色Color最终将颜色Color 输出。
[0103] (五)GIS图层显不部分5
[0104] 该步骤中,我们W热点图彩色纹理数据TextureColor为输入,封装成图像数据, 之后利用WPF技术中化erConrol窗体,将图像数据作为窗体背景,最后通过ArcgisAPI forWPF技术,在Arcgis的map中创建一个特殊的WPF控件图层,将窗体添加到该成图层 中,最终展示给用户。
[0105]首先,创建一个ElementLayer里面添加一个WPF控件UserControl;
[0106] 其次,创建一个BitmapSource对象,使用TextureColor进行初始化;
[0107] 第S,包I建画刷化ush,指定BitmapSource作为数据源,并将其赋于化erControl 的BackGround画刷;
[0108] 最后,将ElementLayer添加到ArcGIS的map对象中。
[0109] (六)实验结果
[0110] 本文实现了上述GPU算法,并且与基于CPU的经典化atmap(如Googlemap的 化atmap)主要在性能和效果上做了对比,下表为详细的对比参数:
[0111]
[0112]
[0113] 图2、图3是灾害点数为5000,分辨率为4000*3000时效果对比图;其中图2是经 典算法的效果,图3是本发明算法的效果图。本发明通过GPU并行加速,在达到同样效果的 情况下,对于不同的灾害点个数W及不同分辨率下,都可W比经典算法效率提高接近80% 的计算效率。
[0114] W上实施例仅用W说明本发明的技术方案而非对其进行限制,本领域的普通技术 人员可W对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本 发明的保护范围应W权利要求书所述为准。
【主权项】
1. 一种基于并行加速的热点图生成方法,其特征在于,采用并行技术进行热点图生成 的相关计算,包括如下步骤: 1) 根据用户输入的热点的影响半径,计算热点的影响因子距离矩阵,用于保存距离热 点不同距离的影响因子; 2) 计算所有热点影响范围的叠加灰度图信息,生成热点图的灰度图; 3) 根据灰度图计算映射后的彩色图信息,生成热点图的彩色图; 4) 将彩色的热点图输出并展示给用户。2. 如权利要求1所述的方法,其特征在于,所述并行技术为下列中的一种: a) GPU并行计算技术,利用硬件加速能力完全在GPU中完成计算,包括GLSL、CUDA、CG、 DirectX ; b) CPU多核并行加速技术,包括OpenMP ; c) 分布式并行计算、集群并行计算或者云计算。3. 如权利要求2所述的方法,其特征在于:同时支持实时和离线热点图生成算法,其中 实时算法利用GPU并行加速和图形运算能力,仅绘制屏幕空间元素;离线算法用于快速生 成大量数据的热点图,并且基于并行算法的特性支持海量数据的热点图渲染。4. 如权利要求1或2所述的方法,其特征在于:所述热点图为GIS热点图,在步骤1)之 前进行空间-图像坐标转换,即将输入的热点即灾害点的空间经炜度坐标转换为输出热点 图图像空间的二维图像坐标。5. 如权利要求4所述的方法,其特征在于,假定输入的灾害点个数为N,所述空间-图 像坐标转换包括如下步骤: a) 创建一张浮点纹理TextureP,里面保存每个空间坐标点经炜度值; b) 创建一张浮点纹理TexturePImage,用来输出每个点转换后的图像坐标; c) 创建一个帧缓冲对象FB0,名为FBO_CoordinateTransform,作为此次渲染的渲染缓 冲,将 TexturePImage 绑定到 FBO_CoordinateTransform 的 0 号 buffer 中,作为输出纹理; d) 创建一个着色器对象Program_CoordinateTransform,绑定一个顶点着色器和一个 片元着色器对象,另外传入如下Uniform值: uniform vec4map_extent,待输出点的经炜度范围(minX,minY,maxX,maxY); uniform vec2imagesize,待输出图像宽高(width, height); uniform sampler2D textureP,坐标点的经炜度信息纹理; e) 在片元着色器中,首先从textureP中获取当前灾害点的经炜度坐标P(x, y, z),其次 计算其对应的图像坐标,计算公式如下,其中P. x、P. y分别表示灾害点的经度和炜度: PImage. x = ((P. x-minX)/(maxX-minX))*width PImage. y = height-((P. y-minY)/(maxY-minY))*height; f) 最终在绘制的时候,绑定输出FBO为FBO_CoordinateTransform,着色器为Program_ CoordinateTransform ;绘制一个大小为N*1的矩形,绑定输入纹理TextureP ;待绘制完成 后,通过readPixel命令将输出结果从显存拷贝到内存中,存放在数组PImage中。6. 如权利要求1或5所述的方法,其特征在于,所述影响因子距离矩阵的生成方法是: a)创建一张浮点纹理TexturePMatrix,用来输出每个点转换后的图像坐标,并在用户 输入的影响半径基础上,将该纹理再外扩一定范围,以保证最终的热点图效果和准确性; b) 创建一个帧缓冲对象FBO,名为FBO_Matrix,作为此次渲染的渲染缓冲,将 TexturePMatrix绑定到FBO_Matrix的0号buffer中,作为输出纹理; c) 创建一个着色器对象Pr〇gram_Matrix,绑定一个顶点着色器和一个片元着色器对 象; d) 在片元着色器中,计算当前片元对应于矩阵Matrix中的行列序号i和j,之后计算 当前片元的影响因子,计算公式为: Math.Max((distance -(Math. Sqrt (Math. Pow(i-distance + l, 2)+Math. Pow(j-distance+1, 2)))), 0); 其中,Math表示计算类名,Max表示计算最大值函数名,distance为距离矩阵的宽和 高,Sqrt表示计算平方根的函数名,Pow表示计算X的y次方的函数名,1表示底数的阀值, 2表示指数;距离矩阵就保存在输出纹理TexturePMatrix中。7. 如权利要求6所述的方法,其特征在于:步骤2)生成热点图的灰度图的方法是: 针对每个灾害点,通过Opengl绘制一个正方形,给正方形贴上距离矩阵的纹理,之后利用 Opengl本身的纹理混合texenv和片元混合blend技术,实现影响因子的自动叠加,最终输 出热点图灰度图纹理。8. 如权利要求7所述的方法,其特征在于:步骤3)生成热点图的彩色图的方法 是:针对输入的热点图灰度图纹理,首先要计算其中的最大值和最小值,分别代表整 个地图中灾害影响最大值maxGray和最小值minGray ;之后将其每个像素的灰度值由 [minGray,maxGray]先映射到[0, 1],然后再映射到给定色带中,得到该像素对应的彩色 值,最终输出热点图彩色图纹理。9. 如权利要求8所述的方法,其特征在于:步骤3)中计算灰度图纹理中的最大值 maxGray与最小值minGray时,利用GPU pingpong技术,通过多次FBO绘制,每次8*8降采 样,最终输出1*1大小的纹理,里面保存最大最小值。10. 如权利要求1所述的方法,其特征在于:步骤4)将彩色的热点图展示给用户时,以 热点图彩色纹理数据为输入,封装成图像数据,之后利用WPF技术中UserConrol窗体,将图 像数据作为窗体背景,最后通过Arcgis API for WPF技术,在Arcgis的map中创建一个特 殊的WPF控件图层,将窗体添加到该成图层中,最终展示给用户。
【专利摘要】本发明涉及一种基于并行加速的热点图生成方法,采用并行技术进行热点图生成的相关计算,包括如下步骤:1)根据用户输入的热点的影响半径,计算热点的影响因子距离矩阵;2)计算所有热点影响范围的叠加灰度图信息,生成热点图的灰度图;3)根据灰度图计算映射后的彩色图信息,生成热点图的彩色图;4)将彩色的热点图输出并展示给用户。本发明首次使用GPU并行技术对传统的Heatmap算法进行改进,充分利用硬件加速能力,并巧妙结合了Arcgis、Opengl和WPF绘制技术,能够有效地提升热点图生成效率,具有较好的实用性、智能性和灵活性,可以应用于GIS、虚拟现实、图像处理、行业可视化等领域。
【IPC分类】G06T11/00, G06T1/20
【公开号】CN104881839
【申请号】CN201510201663
【发明人】李杨, 张大炜, 唐文杰
【申请人】中国电子进出口总公司
【公开日】2015年9月2日
【申请日】2015年4月24日
转载请注明原文地址:https://www.famiwei.com/read-8138237.html