一種基于并行加速的熱點(diǎn)圖生成方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于圖像處理技術(shù)、熱點(diǎn)圖生成技術(shù)領(lǐng)域,具體設(shè)及一種基于并行加速的 熱點(diǎn)圖生成方法。
【背景技術(shù)】
[0002] 熱點(diǎn)圖,也叫化atmap,它通過(guò)聚合大量數(shù)據(jù),使用一種漸進(jìn)的色帶來(lái)優(yōu)雅地展示, 最終效果往往優(yōu)于離散點(diǎn)的直接顯示,可W很直觀地展現(xiàn)空間數(shù)據(jù)的疏密程度或頻率高 低。熱點(diǎn)圖已應(yīng)用于很多領(lǐng)域。例如記錄用戶在Web頁(yè)面內(nèi)鼠標(biāo)的點(diǎn)擊位置,各種空間離 散點(diǎn)數(shù)據(jù)的顯示等等。
[0003] 熱點(diǎn)圖的生成算法主要包括如下四個(gè)步驟:
[0004] 1)為離散點(diǎn)設(shè)定一個(gè)半徑,創(chuàng)建一個(gè)緩沖區(qū);
[0005] 2)對(duì)每個(gè)離散點(diǎn)的緩沖區(qū),使用漸進(jìn)的灰度帶(完整的灰度帶是0~255)從內(nèi)而 夕F,由淺至深地填充;
[0006] 3)由于灰度值可W疊加(值越大顏色越亮,在灰度帶中則顯得越白。在實(shí)際中,可 W選擇ARGB模型中任一通道作為疊加灰度值),從而對(duì)于有緩沖區(qū)交叉的區(qū)域,可W疊加 灰度值,因而緩沖區(qū)交叉的越多,灰度值越大,該塊區(qū)域也就越"熱";
[0007] 4)W疊加后的灰度值為索引,從一條有256種顏色的色帶中(例如彩虹色)映射 顏色,并對(duì)圖像重新著色,從而實(shí)現(xiàn)熱點(diǎn)圖。
[000引 目前GIS領(lǐng)域化atmap的生成工具有很多;
[0009] 1)ArcGIS自帶的HeatmapLayer工具,其實(shí)現(xiàn)可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實(shí)現(xiàn);http://code,google,com/p/曲eat/
[0013] 3)GoogleMap的Heatmap實(shí)現(xiàn);
[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] 在實(shí)際應(yīng)用中,該些工具的缺點(diǎn)主要包括如下幾點(diǎn):
[0017] 1)算法效率較低。由于該些算法均是在CPU中實(shí)現(xiàn),對(duì)于輸入點(diǎn)數(shù)據(jù)量較大、半徑 較大、屏幕分辨率較大的情況,算法效率低,延遲嚴(yán)重。
[0018] 2)熱點(diǎn)圖分析結(jié)果不適合實(shí)際應(yīng)用。一些工具(如Arcgis的化atmapLayer),雖 然可W生成熱點(diǎn)圖,但是其每個(gè)點(diǎn)的影響半徑是基于屏幕空間,而不是基于實(shí)際經(jīng)紳度空 間。因此當(dāng)?shù)貓D顯示Extent變化時(shí),其分析繪制結(jié)果是不正確的,不能滿足某些實(shí)際的GIS 應(yīng)用。
[0019] 在上述兩點(diǎn)問(wèn)題中,算法效率問(wèn)題是目前最關(guān)鍵也是最影響可用性的問(wèn)題,目前 的GIS熱點(diǎn)圖工具普遍都存在該個(gè)問(wèn)題。因此,下面將從算法本身探討其效率低下的根本 原因。
[0020] 如上所述,化atmap算法總共分四個(gè)步驟,其中最耗時(shí)的操作是第3)、4)步,下面 對(duì)該兩步的具體操作進(jìn)行描述。
[0021] 第扣步;灰度值疊加。主要流程是:
[0022]首先,根據(jù)第二步,對(duì)于點(diǎn)集化intSet(N),為每個(gè)點(diǎn)(比如災(zāi)害點(diǎn))產(chǎn)生一個(gè)影響 范圍的圓,其半徑R是用戶指定。每個(gè)圓可W離散為一系列的點(diǎn)(該里稱為像素),其中保 存的值為該點(diǎn)距離圓屯、的距離的加權(quán)值,用它來(lái)代表該點(diǎn)受圓屯、處點(diǎn)的影響因子。正常情 況下,圓屯、處影響因子值為1. 0,在圓邊界處的影響因子值為0. 0。最后使用一個(gè)矩陣來(lái)保 存該些離散點(diǎn)的影響因子值,該矩陣稱為距離矩陣Matrix。
[002引其次,我們創(chuàng)建一個(gè)二維數(shù)組ImageResult比ei曲t] [wi化h],該二維數(shù)組用來(lái)保 存輸出熱點(diǎn)灰度圖的灰度值。其中hei曲t和width分別代表輸出熱點(diǎn)圖的高和寬度,每個(gè) 數(shù)組元素初始化為0.0。
[0024] 遍歷每個(gè)災(zāi)害點(diǎn),對(duì)該點(diǎn)執(zhí)行如下操作:
[0025] 計(jì)算災(zāi)害點(diǎn)對(duì)應(yīng)的二維數(shù)組空間坐標(biāo)(X,y)(災(zāi)害點(diǎn)的輸入坐標(biāo)為空間經(jīng)紳度坐 標(biāo))
[0026] W(X,y)為圓屯、,R為半徑,計(jì)算該圓在ImageResult所能覆蓋到的元素,并計(jì)算 新的元素值,計(jì)算方法就是加和累計(jì),元素值加上該點(diǎn)距離矩陣Matrix中的值。
[0027] 最后,ImageResult中就保存了熱點(diǎn)灰度圖的灰度值,其含義是值越大,代表該處 附近的災(zāi)害點(diǎn)分布越密集。
[002引第4)步;彩色圖映射。
[0029] 首先,對(duì)于已有二維數(shù)組ImageResult,要計(jì)算其中所有元素的最大maxValue、最 小值minValue。
[0030] 其次,對(duì)于ImageResult中每個(gè)元素,將其映射為一種顏色。該里假定用 戶輸入待映射的色帶為ColorRamp[(Colorl,offsetl),(Color2,offsets),...... ,(ColorM,offsetM)],一共M種顏色。
[003U 遍歷每個(gè)ImageResult數(shù)組元素E[i,j],對(duì)該元素執(zhí)行如下操作;
[003引計(jì)算E相對(duì)于虹inValue,maxValue]值域范圍的權(quán)值,計(jì)算公式如下,wei曲巧= (E-minValue)/(maxValue-minValue)
[0033] 基于權(quán)值wei曲tE,將E映射到色帶ColorRamp中,計(jì)算該顏色值ColorResult。
[0034] 將ColorResult寫回ImageResult,作為輸出的熱點(diǎn)圖圖像像素值。
[0035] 該里,步驟3)和4)已經(jīng)詳細(xì)描述完,其中最耗時(shí)的操作是斜體字標(biāo)出的部分。該 些操作都設(shè)及遍歷循環(huán)操作,如果在CPU里完成操作,對(duì)于災(zāi)害點(diǎn)的個(gè)數(shù)N比較多,輸出圖 像比較大(w*h)的情況下,其時(shí)間復(fù)雜度為0(n)和0(w*h),嚴(yán)重影響性能。
【發(fā)明內(nèi)容】
[0036] 本發(fā)明針對(duì)上述問(wèn)題,提供一種基于并行加速的熱點(diǎn)圖生成方法,該方法充分利 用硬件加速能力,能夠有效地提升熱點(diǎn)圖生成效率。
[0037]本發(fā)明的基于并行加速的熱點(diǎn)圖生成方法,采用并行技術(shù)進(jìn)行熱點(diǎn)圖生成的相關(guān) 計(jì)算,包括如下步驟:
[003引 1)根據(jù)用戶輸入的熱點(diǎn)的影響半徑,計(jì)算熱點(diǎn)的影響因子距離矩陣,用于保存距 離熱點(diǎn)不同距離的影響因子;
[0039] 2)計(jì)算所有熱點(diǎn)影響范圍的疊加灰度圖信息,生成熱點(diǎn)圖的灰度圖;
[0040] 3)根據(jù)灰度圖計(jì)算映射后的彩色圖信息,生成熱點(diǎn)圖的彩色圖;
[0041] 4)將彩色的熱點(diǎn)圖輸出并展示給用戶。
[0042] 如果所述熱點(diǎn)圖為GIS熱點(diǎn)圖,需要在步驟1)之前進(jìn)行空間-圖像坐標(biāo)轉(zhuǎn)換,即 將輸入的熱點(diǎn)即災(zāi)害點(diǎn)的空間經(jīng)紳度坐標(biāo)轉(zhuǎn)換為輸出熱點(diǎn)圖圖像空間的二維圖像坐標(biāo)。
[0043] 本發(fā)明的主要目的是解決GIS領(lǐng)域熱點(diǎn)圖生成效率問(wèn)題,所用到的技術(shù)為 ArcGIS+WPF+化englOiLSL)。本發(fā)明首次使用GPU并行技術(shù)對(duì)傳統(tǒng)的化atmap算法進(jìn)行改 進(jìn),速度快,效果好。本發(fā)明算法的本質(zhì)是將傳統(tǒng)的化atmap算法由之前的串行算法改為并 行算法。本文算法實(shí)驗(yàn)使用的是ArcGIS+化engl+WPF技術(shù),并行技術(shù)使用了GPUGLSL。此 夕F,本發(fā)明還可W使用其他的并行技術(shù)作為替代方案,主要包括如下幾種;1)使用其他GPU 并行計(jì)算技術(shù),如CUDA、CG、DirectX等;2)使用CPU多核并行加速技術(shù),如OpenMP等;3) 使用分布式并行計(jì)算、集群并行計(jì)算或者云計(jì)算。
[0044] 本發(fā)明的關(guān)鍵創(chuàng)新點(diǎn)包括:
[0045]a)該方法提出一種基于并行加速的熱點(diǎn)圖生成方法,基于大量災(zāi)害點(diǎn)數(shù)據(jù),利用 GPU計(jì)算能力,可W快速計(jì)算出災(zāi)害點(diǎn)可能的影響范圍,并且W熱點(diǎn)圖的形式展示。不同 與其他基于CPU的方法,本發(fā)明方法效率高,充分利用硬件加速能力,完全在GPU中完成計(jì) 算;
[0046] b)該方法同時(shí)支持實(shí)時(shí)和離線熱點(diǎn)圖生成算法;實(shí)時(shí)算法利用GPU并行加速和圖 形運(yùn)算能力,僅繪制屏幕空間元素;離線算法可W快速生成大量數(shù)據(jù)的熱點(diǎn)圖,而且基于其 并行算法的特性,還很容易擴(kuò)展至支持海量數(shù)據(jù)的熱點(diǎn)圖擅染。對(duì)于大量GIS災(zāi)害點(diǎn)數(shù)據(jù), 可W快速生成熱點(diǎn)圖并展示,不僅很容易整合到現(xiàn)有ArcGIS框架中,而且還可W擴(kuò)展到其 他圖像處理或可視化應(yīng)用領(lǐng)域。
[0047]C)該方法可W與ArcgisforWPF框架整合,巧妙了結(jié)合了Arcgis、Opengl和WPF 的繪制能力,充分利用=者的優(yōu)點(diǎn),規(guī)避了其缺點(diǎn),能夠提供良好的熱點(diǎn)圖功能,不僅速度 優(yōu)于其他方法(如Arcgis自帶的化atMap功能),而且還解決了其繪制延遲、熱點(diǎn)半徑無(wú)法 動(dòng)態(tài)改變的問(wèn)題。
[0048] 與目前應(yīng)用比較廣泛的化atmap生成技術(shù)和算法(如【背景技術(shù)】中所述)相比,本 發(fā)明的優(yōu)點(diǎn)和有益效果主要包括如下幾點(diǎn):
[0049] 1)其他算法都是基于CPU計(jì)算,由于算法本身的特點(diǎn),純粹CPU的算法在效率上會(huì) 存在瓶頸;而本發(fā)明對(duì)傳統(tǒng)算法進(jìn)行改進(jìn),充分利用當(dāng)前硬件加速能力,完全在GPU中完成 算法,在效率上得到了很大提升;
[0化0] 2)其他算法往往都是針對(duì)GIS領(lǐng)域,算法應(yīng)用范圍較窄,算法實(shí)現(xiàn)相關(guān)技術(shù)也相 對(duì)單一。本發(fā)明提供的熱點(diǎn)圖生成解決方案,充分利用了Arcgis、Opengl和WPF繪制技術(shù), 算法對(duì)GIS依賴性比較弱,具有較好的實(shí)用性、智能性和靈活性,不僅可W應(yīng)用于GIS領(lǐng)域, 而且還可W應(yīng)用于虛擬現(xiàn)實(shí)、圖像處理、行業(yè)可視化等其他應(yīng)用領(lǐng)域。不同的是,在該些領(lǐng) 域,由于不設(shè)及GIS坐標(biāo)與圖像坐標(biāo)轉(zhuǎn)換。另外由于不同領(lǐng)域的輸入不同,本文的"災(zāi)害點(diǎn)" 可w替代成其他形式的"熱點(diǎn)"數(shù)據(jù)。為了達(dá)到不同領(lǐng)域?qū)狳c(diǎn)圖效果的要求,用戶可w通 過(guò)調(diào)整本文算法中第1)步的矩陣參數(shù)、第3)步彩色圖中的色帶來(lái)調(diào)整效果。
當(dāng)前第1頁(yè)
1 
2 
3