CN114219697A - 一种基于cuda的运动目标实时热力图生成方法 - Google Patents
一种基于cuda的运动目标实时热力图生成方法 Download PDFInfo
- Publication number
- CN114219697A CN114219697A CN202111607990.1A CN202111607990A CN114219697A CN 114219697 A CN114219697 A CN 114219697A CN 202111607990 A CN202111607990 A CN 202111607990A CN 114219697 A CN114219697 A CN 114219697A
- Authority
- CN
- China
- Prior art keywords
- target
- track
- list
- time
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/05—Geographic models
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Remote Sensing (AREA)
- Geometry (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Graphics (AREA)
- Radar Systems Or Details Thereof (AREA)
- Image Generation (AREA)
Abstract
本发明涉及一种基于CUDA的运动目标实时热力图生成方法,基于CUDA开发模型,通过CPU与GPU的协作完成运动目标实时热力图生成方法,涉及大量运动目标的实时轨迹数据的网络接收、计算、动态图像生成等过程协同处理问题;考虑运动目标实时轨迹的时间敏感性,进行运动目标实时生命周期判断;考虑不同应用对分层次热力图生成的需求,支持不同分辨率的热力图生成。
Description
技术领域
本发明属于热力图技术领域,具体涉及一种热力图生成方法。
背景技术
随着以GPS、AIS、雷达等各型传感器技术的发展与普及,我们获得大量运动目标实时轨迹信息。这种实时轨迹信息具有时间敏感、运动特征动态变化等特点,如何从中快速分析目标实时活动规律以支撑进一步态势决策,是数据挖掘、战场态势等众多领域共同关注的问题。运动目标实时轨迹热力图以运动目标实时轨迹为数据源,以颜色、位置等可视化要素表达运动目标实时轨迹特征并随着时间动态变化。它提供一种全局性的快速分析运动目标实时运动规律可视化分析工具,是进行群组分析、轨迹预测等实时轨迹数据挖掘的有效工具。
运动目标实时热力图生成涉及大量运动目标的实时轨迹数据的网络接收、计算、动态图像生成等过程。现有方法大多仅针对偶发性空间事件(如屏幕点击事件)的实时热力图方法对高度动态的运动目标热力图生成考虑不足,或如董浩洋等(2017)方法采用迭代更新方式更新热力图算法复杂度高不满足大量实时运动数据快速热力图生成需要。
基于GPU的通用计算(GPGPU,General Purpose GPU)是并行计算主流形式,首先,其计算效率数十倍乃至于上百倍CPU计算单元;其次,可编程性与统一的框架带来开发便利性,CUDA(Compute Unified Device Architecture)统一图形开发框架与通用计算框架、是开发架构基础。热力图的像素处理相对独立具有并行特征,不同运动目标轨迹相互独立可进行并行处理,可利用此两点将GPGPU技术应用于运动目标实时热力图生成,提高实时热力图生成效率。这是本发明的技术背景。
发明内容
本发明的主要任务设计一种基于CUDA的运动目标实时热力图生成方法,该任务具有以下子目标:(1)基于CUDA开发模型,通过CPU与GPU的协作完成运动目标实时热力图生成方法,涉及大量运动目标的实时轨迹数据的网络接收、计算、动态图像生成等过程协同处理问题;(2)考虑运动目标实时轨迹的时间敏感性,进行运动目标实时生命周期判断;(3)考虑不同应用对分层次热力图生成的需求,支持不同分辨率的热力图生成。
本发明涉及的一种基于CUDA的运动目标实时热力图生成方法,具体步骤如下:
步骤1、轨迹热力图超参设置。
步骤1.1、热力显示设置
初始化热力显示区域像素坐标系范围imgW和imgH,创建热力图显示窗口,初始化热力显示区域地理坐标系范围lonRange、latRange以及最小经纬度minLon、minLat;
步骤1.2、热力图的最小分辨率颗粒度设置
初始化热力图的最小分辨率颗粒度ratio,表示横向和纵向热力最小分辨率单元包含的像素数量,用于生成不同分辨率的热力图像。
步骤2、轨迹热力图初始化。
根据步骤1中设置的参数imgW和imgH,创建轨迹密度矩阵M density 和热力图像显示存储B hot ,初始化OpenGL的显示模式,创建并注册像素缓冲区PBO,建立PBO与CUDA内存的映射关系。
步骤3、外部目标数据网络接收。
步骤3.1、网络数据接收
在CPU端创建子线程,子线程中实时接收外部不断输入的目标运动轨迹网络数据。
步骤3.2、CPU端和GPU端数据传输
将CPU端数据传输至GPU端。
步骤4、目标数据管理。
对网络输入的目标轨迹数据,分三类进行管理:全部目标数据(d_all_track_ list)管理、本次更新目标数据(d_new_track_list)管理、本次更新目标上帧数据(d_last_ track_list)管理。将主机端的这三类目标数据传输至设备端,供GPU计算使用。
步骤5、本次更新目标上帧热力删除处理。
由于只观测各批目标当前的位置信息,不处理历史运行轨迹,因此每次更新某一批目标的热力值之前,需要删除其上一帧的热力效果。
步骤6、本次更新目标热力计算。
对于每次更新的各批轨迹目标数据,将目标地理位置坐标转换到像素坐标,计算其热力值,更新M density ,并对密度值进行色彩映射,更新GPU中的轨迹热力内存B hot ,即更新目标的实时热力。
步骤7、轨迹生命周期管理。
若当前时间与目标的最新位置的更新时间的差超过预设的目标生命周期阈值T life 时,则认为该目标消失,将其对应的轨迹热力贡献删除。
步骤8、PBO实时刷新显示。
步骤5、6、7中用于计算热力的核函数在像素缓冲区与GPU的内存B hot 之间建立映射,实现OpenGL和CUDA的互操作,在CUDA的核函数中修改轨迹热力的颜色值映射到PBO中,然后OpenGL直接进行渲染显示,完成后返回步骤4。
其中步骤4,对实时接收的外部网络传输的目标轨迹数据进行管理,主要包括如下步骤:
步骤4.1,全部目标数据(d_all_track_list)管理。
每接收到一批新的目标数据,获取其批号ph,在d_all_track_list中查询ph表示的目标是否存在,若该批目标存在,则更新d_all_track_list列表中该批的数据内容,若该批目标不存在,则在d_all_track_list列表的末尾添加该批目标数据。当步骤7中使用了d_ all_track_list进行轨迹生命周期管理后,对已过生命周期的目标,要在d_all_track_ list中删除。
步骤4.2,本次更新目标数据(d_new_track_list)管理
将一次接收到的各批不同的目标数据,依次添加进d_new_track_list中,当步骤6中使用最新的d_new_track_list更新了轨迹热力之后,将d_new_track_list清空。
步骤4.3,本次更新目标的上帧数据(d_last_track_list)管理
获取当前目标的批号ph,在d_all_track_list中查询ph表示的目标是否存在,若该批目标存在,则将该目标数据添加到d_last_track_list中,否则不做处理。当步骤5中使用d_last_track_list对目标上帧热力进行删除处理之后,将d_last_track_list清空。
其中步骤5,对本次更新目标上帧热力删除处理,主要包括如下步骤:
步骤5.1,获取d_last_track_list容器中的目标数量trackNum_last,设计核函数参数线程网格和线程块的线程数量,即设计GridSize和BlockSize。
步骤5.2,判断当前d_last_track_list中目标数量是否大于0,当大于0时,启动目标上帧热力删除处理核函数kernel_ProcLastTrack,将B hot 、M density 、d_last_track_list、lonRange、latRange、minLon、minLat、ratio、trackNum_last作为参数传递至GPU线程中处理。
步骤5.3,定义线程索引idx、idy、idz,其中idx和idy为图像区域的线程索引,idz为轨迹数组的线程索引。当idx<ratio且idy<ratio且idz<trackNum_last时,计算idz索引下目标位置点经纬度对应的像素坐标值pix_x、pix_y;计算当前目标所在位置对应的最小分辨率颗粒度下的起始和终止像素位置start_pix_x、start_pix_y、end_pix_x、end_pix_ y。
步骤5.4,根据步骤5.3中的参数,计算当前热力所在位置hot_pos,将M density 在hot_pos索引处的值减1,表示将该批目标在该处的热力删除。
步骤5.5,获取M density 在hot_pos索引处的值,采用线性色彩映射规则对该值进行颜色映射,以此映射值更新B hot 在hot_pos索引处的颜色。
步骤5.6,清空d_last_track_list,避免下一次重绘时重复进行热力删除处理。
其中步骤6,对本次更新目标轨迹点热力进行计算,主要包括如下步骤:
步骤6.1,类似步骤5.1~5.3,获取d_new_track_list容器中的目标数量trackNum_ now,设计核函数参数后启动本次更新目标热力计算核函数kernel_ProcNewTrack,计算d_ new_track_list中目标位置以及最小分辨率颗粒度像素范围。
步骤6.2,计算当前热力所在位置hot_pos,将M density 在hot_pos索引处的值加1,表示增加该批目标在该处的热力贡献。
步骤6.3,类似步骤5.5~5.6,更新B hott 在hot_pos索引处的颜色,并清空d_new_ track_list,避免多次重绘导致该点热力不断错误上升。
其中步骤7,对所有轨迹的生命周期进行管理,主要包括如下步骤:
步骤7.1,类似步骤5.1~5.3,获取d_all_track_list容器中的目标数量trackNum_ all,获取当前系统时间curTime,将d_all_track_list、trackNum_all、curTime以及步骤5.2中的其它参数通过轨迹生命周期管理核函数kernel_ProcVanishTrack传递至GPU多线程中处理。
步骤7.2,定义线程索引idx、idy、idz,当idx<ratio且idy<ratio且idz<trackNum_ last时,判断当前时间和目标最后一个更新点的时间之差是否超过T life ,对于已超过T life 的目标,说明该目标已过生命周期,则进行步骤7.3,否则不做处理。
步骤7.3,更改目标的生命周期是否到达的状态值lifeState,将M density 在hot_pos索引处的值减1,然后类似步骤5.5,更新B hott 在hot_pos索引处的颜色。
步骤7.4,根据返回的lifeState,将d_all_track_list中已过生命周期的目标删除。
本发明的有益效果是:
本发明提出一种基于CUDA的运动目标实时热力图生成方法,该方法具有如下特点和优点:
(1)实时热力图生成效率高。运动目标实时热力图,数据源包括关注区域的所有运动数据,数据量大,运动数据变化频率高,对实时热力图生成效率要求高。本发明综合协同利用CPU、GPU资源,基于CUDA模型,利用CPU多线程接入网络运动目标实时轨迹信息,而后通过GPU依次执行的本次更新目标的上帧轨迹点热力删除处理、本次更新目标轨迹点热力计算、轨迹生命周期管理,并行处理生成热力矩阵并结合PBO方法实时绘制热力图。综合利用多线程、PBO、GPU多种方式提高热力图生成效率。
(2)可扩展性强,以实时热力图为例提出一种CPU多线程实时网络数据接收、GPU并行处理的通用流程。该流程可拓展到三维场模型实时显示、实时轨迹处理等各应用领域。
附图说明
图1 基于CUDA的运动目标实时热力生成方法的流程图
具体实施方式
以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
由图1给出,本发明是通过轨迹热力图超参设置、轨迹热力图初始化、外部目标数据网络接收、目标数据管理、本次更新目标上帧热力删除处理、本次更新目标热力计算、轨迹生命周期管理、PBO实时刷新显示共八个步骤组成。
步骤1、轨迹热力图超参设置
(1) 热力显示设置
初始化热力显示区域像素坐标系范围imgW和imgH,根据imgW、imgH创建热力图显示窗口;初始化热力显示区域地理坐标系范围lonRange、latRange以及最小经纬度minLon、minLat,用于GPU线程中进行地理坐标系与像素坐标系之间的转换。
(2) 热力图的最小分辨率颗粒度设置
初始化热力图的最小分辨率颗粒度ratio,表示横向和纵向热力最小分辨率单元包含的像素数量,即以热力图左上角为原点,以ratio为间隔进行递增,每个间隔内像素颜色值相同(热力图右或下边界小于ratio时间隔单元内像素颜色值亦相同),用于生成不同分辨率的热力图像。
步骤2、轨迹热力图初始化
根据imgW、imgH创建轨迹密度矩阵M density 和热力图像显示存储B hot ,其中M density 表示每一像素位置处的热力大小,B hot 为GPU端热力图像显示内存,存储每一像素点的颜色值。创建并注册像素缓冲区PBO,与B hot 绑定关联,建立PBO与CUDA内存的映射关系。
步骤3、外部目标数据网络接收
(1) 网络数据接收
在CPU端创建子线程,子线程中实时接收外部不断输入的目标运动轨迹网络数据h_trackList。
(2)CPU端和GPU端数据传输
在CUDA中使用Thrust::device_vector在GPU设备端创建目标数据存储d_ trackList,将CPU端数据h_trackList通过Thrust::device_vector中的push_back等方法传输至GPU端。
步骤4、目标数据管理
(1) 全部目标数据管理
每接收到一批新的目标数据,获得其批号ph,在全部目标数据列表d_all_track_ list中查询ph表示的目标是否存在,若该批目标存在,则更新d_all_track_list列表中该批的数据内容,若该批目标不存在,则在d_all_track_list列表的末尾添加该批目标数据。当图1中kernel_ProcVanishTrack使用了d_all_track_list进行轨迹生命周期管理后,对已过生命周期的目标,要在d_all_track_list中删除。
从网络接收到的原始目标轨迹数据包含批号、经度、纬度、高度以及目标的更新时间等信息,在此之外,我们在目标数据中再添加一项生命周期状态信息lifeState,当lifeState等于0时,表示目标已过生命周期,当lifeState等于1时,表示目标在生命周期内。
(2) 本次更新目标数据管理
将一次接收到的各批不同目标数据,依次添加进d_new_track_list中,当图1中kernel_ProcNewTrack使用最新的d_new_track_list更新了轨迹热力之后,清空d_new_ track_list,避免目标在同一位置热力不断叠加。
(3) 本次更新目标的上帧数据管理
获得当前目标的批号ph,在d_all_track_list中查询ph表示的目标是否存在,若该批目标存在,则将该目标数据添加到d_last_track_list中,否则不做处理。当图1中kernel_ProcLastTrack中使用d_last_track_list对目标上帧热力进行删除处理之后,将d_last_track_list清空,避免对已删除的热力进行重复删除处理。
步骤5、本次更新目标上帧热力删除处理
(1)线程结构设计
合理的线程结构设计是影响占用率高低的重要因素,占用率越高,GPU的利用率越大,算法效率越高。所谓占用率,即GPU的每个流处理器(SM)中实际活跃线程束的数量与最大线程束数量的比率。线程结构的设计主要包含线程网格(Grid)和线程块(Block)的设计。
为使得GPU的每个SM同一时间并发的线程数量达到最大,假设用于实验的显卡的GPU中每个SM最大可同时并发的线程数量是n个,每个SM中最多可贮存k个Block,其中n和k是显卡基本参数,不同的显卡有一定区别。我们首先设计Block中的线程数量为n/k以上的整数;其次,应使得Block中线程的数量是SM最大并发数量n的整数倍,否则SM中实际贮存的线程数量会少于n个,导致永远无法达到100%的占用率;最后,让每个Block中的线程数量是32的整数倍,可以使得每个Block正好被分解成数个线程束(warp)的组合,可被SM高效调度。考虑本文的显卡硬件参数,设计Grid和Block线程结构如下:
其中trackNum为目标列表d_all_track_list、d_new_track_list、d_last_track_ list的容量。
(2)目标上帧热力删除处理核函数启动
当d_last_track_list的容量大于0时,说明本次更新的目标并不是新增目标,而是更新目标,上一帧中已经在目标所处位置赋予了热力值。由于本发明处理的是目标的实时轨迹热力,目标的历史尾迹不应有所体现,因此目标每次更新时,需要先将其上一帧的热力删除,然后再更新其最新位置处的热力效果。启动目标上帧热力删除处理核函数kernel_ProcLastTrack,将B hot 、M density 、d_last_track_list、lonRange、latRange、minLon、minLat、ratio、trackNum_last作为参数传递至GPU线程中处理。
(3)计算位置像素坐标
在核函数中,定义线程索引idx、idy、idz如下:
当idx<ratio且idy<ratio且idz<trackNum_last时,根据如下公式计算目标位置的像素坐标:
计算当前目标所在位置对应的最小分辨率颗粒度下的起始和终止像素位置坐标如下:
(4)计算当前热力所在位置索引
根据线程索引,计算当前热力所在位置处在M density 中的索引值如下:
(5)更新密度矩阵和热力存储
将M density 在hot_pos索引处的值减1,表示删除目标上一帧热力效果。由于热力区域范围是有限的,不同目标的位置也可能存在地理位置十分接近的情况,因而在特定的分辨率条件下可能存在多个目标会对同一像素点产生贡献热力或者热力辐射,使得 GPU中多个线程可能会操作显存中的同一块内存,导致最终热力计算出错,因而更新M density 需要在GPU端使用原子操作进行线程同步。
将当前M density 在hot_pos索引处的值M ij 与色彩C u 建立下面的映射关系:
其中u为色彩空间分段,f为映射规则,采用线性色彩映射规则,即在每一色彩区间内根据线性变化规则,计算出密度值M ij 对应的各色彩分量结果。使用该色彩值更新B hot 在hot_pos处的颜色值。
(6)清空本次更新目标的上帧数据列表
由于目标在一个位置处的热力贡献只有一次,而实时热力显示窗口在周期刷新,因此在kernel_ProcLastTrack核函数运行结束后,需要将d_last_track_list清空,否则会导致目标在同一位置产生不断叠加的错误热力效果。d_last_track_list清空和之前的新增操作需要在CPU端进行线程互斥,否则会产生同步问题导致热力效果出错。
步骤6、本次更新目标热力计算
(1)本次更新目标热力计算核函数启动
使用d_new_track_list作为输入,其它参数同步骤5中的(1)(2),启动本次更新目标热力计算核函数kernel_ProcNewTrack。同步骤5中的(3)(4),计算位置像素坐标和当前热力所在位置索引。
(2)更新密度矩阵和热力存储
在计算出的hot_pos索引处,将M density 值加1,表示新增目标在最新位置的热力效果,同步骤5一样,更新M density 需要在GPU端使用原子操作进行线程同步。然后同步骤5中的(5),建立色彩映射,使用映射值更新B hot 在hot_pos处的颜色值。在kernel_ ProcNewTrack核函数执行结束之后,清空d_new_track_list,避免多次重绘导致该点热力不断错误上升。d_new_track_list清空和之前的新增操作需要在CPU端进行线程互斥,否则会产生同步问题导致热力效果出错。
步骤7、轨迹生命周期管理
(1)轨迹生命周期管理核函数启动
使用d_new_track_list作为输入,添加当前系统时间curTime作为参数之一,其它参数同步骤5中的(1)(2),启动轨迹生命周期管理核函数kernel_ProcVanishTrack,管理当前所有目标的生命周期,对于生命周期之外的目标,更新其热力效果。
(2)目标生命周期处理
根据目标的最新更新时间trackTime以及当前时间curTime,在目标生命周期阈值T life 约束下,在GPU各个线程中判定所有目标是否达到生命周期,更新其生命周期状态。
(3)过生命周期目标热力处理
对于lifeState为0的目标,说明该目标已过生命周期,则将M density 在hot_pos索引处的值减1,并更新B hot 在hot_pos索引处的颜色,同步骤5一样,更新M density 需要在GPU端使用原子操作进行线程同步。对于lifeState为1的目标,则不做处理。在kernel_ProcVanishTrack核函数执行结束之后,根据返回的lifeState,将d_all_track_list中已过生命周期的目标删除。对d_ all _track_list中过期目标的删除和之前的新增操作需要在CPU端进行线程互斥,否则会产生同步问题导致热力效果出错。
步骤8、PBO实时刷新显示
通过在CPU端创建并注册像素缓冲区PBO,建立PBO与B hot 的映射关系,不需要进行CPU与GPU间内存拷贝,这种映射是一种处理速度很快的低开销操作。PBO与B hot 建立映射后,在CUDA核函数中修改像素颜色值,即更新B hot 存储,可直接映射到PBO,然后OpenGL直接进行渲染显示,不需要将GPU计算出的结果拷贝回CPU再绘制出图像并显示到屏幕上,避免了数据传输等过程带来的性能损失。
以上所述,仅为本发明最佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
Claims (6)
1.一种基于CUDA的运动目标实时热力图生成方法,其特征在于,该方法步骤如下:
步骤1、轨迹热力图超参设置;
步骤1.1、热力显示设置
初始化热力显示区域像素坐标系范围imgW和imgH,创建热力图显示窗口,初始化热力显示区域地理坐标系范围lonRange、latRange以及最小经纬度minLon、minLat;
步骤1.2、热力图的最小分辨率颗粒度设置
初始化热力图的最小分辨率颗粒度ratio,表示横向和纵向热力最小分辨率单元包含的像素数量,用于生成不同分辨率的热力图像;
步骤2、轨迹热力图初始化;
根据步骤1中设置的参数imgW和imgH,创建轨迹密度矩阵M density 和热力图像显示存储B hot ,初始化OpenGL的显示模式,创建并注册像素缓冲区PBO,建立PBO与CUDA内存的映射关系;
步骤3、外部目标数据网络接收;
步骤3.1、网络数据接收
在CPU端创建子线程,子线程中实时接收外部不断输入的目标运动轨迹网络数据;
步骤3.2、CPU端和GPU端数据传输
将CPU端数据传输至GPU端;
步骤4、目标数据管理;
对网络输入的目标轨迹数据,分三类进行管理:全部目标数据管理、本次更新目标数据管理、本次更新目标上帧数据管理;全部目标数据列表为d_all_track_list、本次更新目标数据列表为d_new_track_list、本次更新目标上帧数据列表为d_last_track_list;将主机端的这三类目标数据传输至设备端,供GPU计算使用;
步骤5、本次更新目标上帧热力删除处理;
由于只观测各批目标当前的位置信息,不处理历史运行轨迹,因此每次更新某一批目标的热力值之前,需要删除其上一帧的热力效果;
步骤6、本次更新目标热力计算;
对于每次更新的各批轨迹目标数据,将目标地理位置坐标转换到像素坐标,计算其热力值,更新M density ,并对密度值进行色彩映射,更新GPU中的轨迹热力内存B hot ,即更新目标的实时热力;
步骤7、轨迹生命周期管理;
若当前时间与目标的最新位置的更新时间的差超过预设的目标生命周期阈值T life 时,则认为该目标消失,将其对应的轨迹热力贡献删除;
步骤8、PBO实时刷新显示;
步骤5、6、7中用于计算热力的核函数在像素缓冲区与GPU的内存B hot 之间建立映射,实现OpenGL和CUDA的互操作,在CUDA的核函数中修改轨迹热力的颜色值映射到PBO中,然后OpenGL直接进行渲染显示,完成后返回步骤4。
2.根据权利要求1所述的方法,其特征在于,步骤3,外部目标数据网络接收,包括如下步骤:
步骤3.1、网络数据接收
在CPU端创建子线程,子线程中实时接收外部不断输入的目标运动轨迹网络数据h_ trackList;
步骤3.2、CPU端和GPU端数据传输
在CUDA中使用Thrust::device_vector在GPU设备端创建目标数据存储d_trackList,将CPU端数据h_trackList通过Thrust::device_vector中的push_back方法传输至GPU端。
3.根据权利要求1所述的方法,其特征在于,步骤4具体包括如下步骤:
步骤4.1、全部目标数据管理;全部目标数据列表为d_all_track_list;每接收到一批新的目标数据,获取其批号ph,在d_all_track_list中查询ph表示的目标是否存在,若该批目标存在,则更新d_all_track_list列表中该批的数据内容,若该批目标不存在,则在d_ all_track_list列表的末尾添加该批目标数据;当步骤7中使用了d_all_track_list进行轨迹生命周期管理后,对已过生命周期的目标,要在d_all_track_list中删除;
步骤4.2、本次更新目标数据管理;本次更新目标数据列表为d_new_track_list;将一次接收到的各批不同的目标数据,依次添加进d_new_track_list中,当步骤6中使用最新的d_new_track_list更新了轨迹热力之后,将d_new_track_list清空;
步骤4.3、本次更新目标的上帧数据管理;本次更新目标的上帧数据列表为d_last_ track_list;获取当前目标的批号ph,在d_all_track_list中查询ph表示的目标是否存在,若该批目标存在,则将该目标数据添加到d_last_track_list中,否则不做处理;当步骤5中使用d_last_track_list对目标上帧热力进行删除处理之后,将d_last_track_list清空。
4.根据权利要求1所述的方法,其特征在于,步骤5具体包括如下步骤:
步骤5.1、获取d_last_track_list容器中的目标数量trackNum_last,设计核函数参数线程网格和线程块的线程数量,即设计GridSize和BlockSize;
步骤5.2、判断当前d_last_track_list中目标数量是否大于0,当大于0时,启动目标上帧热力删除处理核函数kernel_ProcLastTrack,将B hot 、M density 、d_last_track_list、lonRange、latRange、minLon、minLat、ratio、trackNum_last作为参数传递至GPU线程中处理;
步骤5.3、定义线程索引idx、idy、idz,其中idx和idy为图像区域的线程索引,idz为轨迹数组的线程索引;当idx<ratio且idy<ratio且idz<trackNum_last时,计算idz索引下目标位置点经纬度对应的像素坐标值pix_x、pix_y;计算当前目标所在位置对应的最小分辨率颗粒度下的起始和终止像素位置start_pix_x、start_pix_y、end_pix_x、end_pix_y;
步骤5.4、根据步骤5.3中的参数,计算当前热力所在位置hot_pos,将M density 在hot_pos索引处的值减1,表示将该批目标在该处的热力删除;
步骤5.5、获取M density 在hot_pos索引处的值,采用线性色彩映射规则对该值进行颜色映射,以此映射值更新B hot 在hot_pos索引处的颜色;
步骤5.6、清空d_last_track_list,避免下一次重绘时重复进行热力删除处理。
5.根据权利要求4所述的方法,其特征在于,步骤6具体包括如下步骤:
步骤6.1、类似步骤5.1~5.3,获取d_new_track_list容器中的目标数量trackNum_now,设计核函数参数后启动本次更新目标热力计算核函数kernel_ProcNewTrack,计算d_new_ track_list中目标位置以及最小分辨率颗粒度像素范围;
步骤6.2、计算当前热力所在位置hot_pos,将M density 在hot_pos索引处的值加1,表示增加该批目标在该处的热力贡献;
步骤6.3、类似步骤5.5~5.6,更新B hott 在hot_pos索引处的颜色,并清空d_new_track_ list,避免多次重绘导致该点热力不断错误上升。
6.根据权利要求4所述的方法,其特征在于,步骤7具体包括如下步骤:
步骤7.1、类似步骤5.1~5.3,获取d_all_track_list容器中的目标数量trackNum_all,获取当前系统时间curTime,将d_all_track_list、trackNum_all、curTime以及步骤5.2中的其它参数通过轨迹生命周期管理核函数kernel_ProcVanishTrack传递至GPU多线程中处理;
步骤7.2、定义线程索引idx、idy、idz,当idx<ratio且idy<ratio且idz<trackNum_last时,判断当前时间和目标最后一个更新点的时间之差是否超过T life ,对于已超过T life 的目标,说明该目标已过生命周期,则进行步骤7.3,否则不做处理;
步骤7.3、更改目标的生命周期是否到达的状态值lifeState,将M density 在hot_pos索引处的值减1,然后类似步骤5.5,更新B hott 在hot_pos索引处的颜色;
步骤7.4、根据返回的lifeState,将d_all_track_list中已过生命周期的目标删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111607990.1A CN114219697B (zh) | 2021-12-27 | 2021-12-27 | 一种基于cuda的运动目标实时热力图生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111607990.1A CN114219697B (zh) | 2021-12-27 | 2021-12-27 | 一种基于cuda的运动目标实时热力图生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114219697A true CN114219697A (zh) | 2022-03-22 |
CN114219697B CN114219697B (zh) | 2022-12-09 |
Family
ID=80705887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111607990.1A Active CN114219697B (zh) | 2021-12-27 | 2021-12-27 | 一种基于cuda的运动目标实时热力图生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114219697B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115834874A (zh) * | 2023-02-06 | 2023-03-21 | 武汉凌久微电子有限公司 | 一种用于gpu的显示带宽错误的实时监测方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109885891A (zh) * | 2019-01-24 | 2019-06-14 | 中国科学院合肥物质科学研究院 | 一种智能车gpu并行加速轨迹规划方法 |
CN111275791A (zh) * | 2020-01-20 | 2020-06-12 | 中国电子科技集团公司第十四研究所 | 一种多约束条件下的轨迹线热力图生成方法 |
CN111862153A (zh) * | 2020-07-10 | 2020-10-30 | 电子科技大学 | 一种面向行人的长时间多目标跟踪方法 |
-
2021
- 2021-12-27 CN CN202111607990.1A patent/CN114219697B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109885891A (zh) * | 2019-01-24 | 2019-06-14 | 中国科学院合肥物质科学研究院 | 一种智能车gpu并行加速轨迹规划方法 |
CN111275791A (zh) * | 2020-01-20 | 2020-06-12 | 中国电子科技集团公司第十四研究所 | 一种多约束条件下的轨迹线热力图生成方法 |
CN111862153A (zh) * | 2020-07-10 | 2020-10-30 | 电子科技大学 | 一种面向行人的长时间多目标跟踪方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115834874A (zh) * | 2023-02-06 | 2023-03-21 | 武汉凌久微电子有限公司 | 一种用于gpu的显示带宽错误的实时监测方法及装置 |
CN115834874B (zh) * | 2023-02-06 | 2023-04-28 | 武汉凌久微电子有限公司 | 一种用于gpu的显示带宽错误的实时监测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114219697B (zh) | 2022-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ahrens et al. | An image-based approach to extreme scale in situ visualization and analysis | |
US10055808B1 (en) | Distributed and parallelized visualization framework | |
CN111445581A (zh) | 使用数据驱动先验的网格重建 | |
CN104036537A (zh) | 多分辨率一致光栅化 | |
AU2018258094A1 (en) | Octree-based convolutional neural network | |
CN113628331B (zh) | 一种虚幻引擎中摄影测量模型的数据组织和调度方法 | |
Pascucci et al. | The ViSUS Visualization Framework. | |
Guo et al. | A spatially adaptive decomposition approach for parallel vector data visualization of polylines and polygons | |
Ross et al. | Visualization and parallel I/O at extreme scale | |
CN114219697B (zh) | 一种基于cuda的运动目标实时热力图生成方法 | |
Wu et al. | Texture-based edge bundling: A web-based approach for interactively visualizing large graphs | |
CN117237503B (zh) | 一种地理要素数据加速渲染及装置 | |
CN117237502A (zh) | 一种三维渲染方法、装置、设备及介质 | |
CN116664772A (zh) | 一种轻量级的大规模bim可视化方法及系统 | |
Kim et al. | T-ReX: Interactive global illumination of massive models on heterogeneous computing resources | |
Wu et al. | GPU-parallel interpolation using the edge-direction based normal vector method for terrain triangular mesh | |
CN109901164B (zh) | 一种合成孔径雷达的分布式后向投影成像方法 | |
CN116051345A (zh) | 图像数据处理方法、装置、计算机设备及可读存储介质 | |
CN116797747A (zh) | 水下检测数据可视化方法、装置、计算机设备和存储介质 | |
Joy | Massive data visualization: A survey | |
Dubois et al. | Highly Efficient Controlled Hierarchical Data Reduction techniques for Interactive Visualization of Massive Simulation Data. | |
Kharinov | Adaptive dichotomous image segmentation toolkit | |
Zhang et al. | Spark-Enabled XDraw Viewshed Analysis | |
DAmbrosio et al. | Lava flow modeling by the sciara-fv3 parallel numerical code | |
Masood et al. | A novel method for adaptive terrain rendering using memory-efficient tessellation codes for virtual globes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |