基于gpu的多时间帧高感知度二维流线组织算法

文档序号:10535777阅读:327来源:国知局
基于gpu的多时间帧高感知度二维流线组织算法
【专利摘要】本发明提出了一种基于GPU并行计算的多时间帧高感知度二维流线组织算法,将纹理作为主要的数据载体和中间过程辅助工具,来实现不同时间点的数据读入及流线生成,每相同时间间隔下,为显存调入两张相邻时间帧数据纹理供GPU使用,对这两帧数据纹理进行插值,以获得更加平滑的流线动画效果;整个几何流线的生成过程都在GPU中进行,能节省大量的时间成本;基于矢量点速率大小来控制流线密度,高速率区绘制稠密流线,低速率区绘制稀疏流线,也可让用户交互设置感兴趣速度区间,指定区间内绘制稠密流线,区间外绘制稀疏流线;对已生成的流线轨迹符号映射,以符号更加形象逼真的表达矢量场的流动情况,通过对符号的纹理坐标改变,实现符号动画的效果,在帧与帧过度时,通过对符号的变形操作,实现更加流畅的动画效果。
【专利说明】
基于GPU的多时间帧高感知度二维流线组织算法
技术领域
[0001] 本发明涉及GPU并行计算、海洋可视化、二维流线几何算法领域,具体为一种基于 GPU并行计算的多时间帧高感知度二维流线组织算法。
【背景技术】
[0002] 矢量场可视化是科学计算可视化中最具挑战的研究课题之一,它以直观的图形图 像显示矢量场的运动,透过抽象数据有效洞察矢量域内涵本质和变化规律,广泛应用于计 算机流体力学、航空动力学、大气物理和气象分析等领域。
[0003] 目前,矢量场可视化方式可以主要分为三种:一,基于网格点的直接可视化;二, 基于几何计算的可视化;三,基于纹理计算的可视化。基于网格点的直接可视化主要方式是 矢量箭头表示法,其优点是原理简单、计算简便,在CPU中可以快速呈现绘制效果,缺点是 矢量箭头是基于网格点的可视化表达,网格点以外的矢量场领域无法被可视化出来,其表 达的矢量场信息非常有限,只能大概体现矢量场的特征情况;基于几何计算的可视化方法, 主要有streamline,StreakLine,TimeLine等技术,其优点是能够非常精准的模拟矢量场 的轨迹位置,缺点是,目前成熟的几何计算可视化方法都是需要在CPU中进行大量的数据 预处理,对于小数据可视化来说,其时间耗散还勉强可以接受,但对于大数据而言,其时间 耗散是一个非常致命的问题,假设显存足够、计算机配置良好,处理一个GB级以上的数据, 其时耗必须以天做基数计算。同时,在正常情况下,显存也是一个必须要考虑的问题。基于 纹理计算的可视化方法,最常见的方法是LIC(Line Integral Convolution)方法,基于GPU 运算,可比CPU提高三倍以上的处理速度,传入一张白噪声纹理,通过流线积分卷积方式向 前向后积分,模拟矢量场轨迹,其优点是速度快、绘制的是高密度可视化图形,能够表达矢 量域的特征细节,缺点是,该绘制技术是基于像素的积分卷积方式,绘制出的流线轨迹并不 能像几何计算那样精准,是相对较粗略的流线绘制技术。而目前对矢量流线的动画技术大 概分为两种,其一,多时间帧替换方式,本方式在CPU中生成多时间帧的流线几何数据,再 随时间更换帧数据,以此达到动画的效果,本方法的优点在于,原理简单实现容易;缺点在 于,对内存、显存有一定的要求、帧替换过渡不一定流场,同时属于时耗性计算;其二,基于 粒子追踪的动画方式,本方式在GPU中实现,实时改变流线的纹理坐标位置,实现流线的流 动。其优点是动画流畅、美观,缺点是不适合不稳定场的表达。
[0004] 本专利提出的基于GPU的多时间帧高感知度二维流线组织算法,在GPU中通过几 何运算,实现流线的数据预处理,能在保证较小时耗的基础之上实现较为精确的流线绘制, 同时,以纹理为载体、实时传入2张相邻时间点的矢量场数据(而非白噪声),通过反距离插 值处理,将时间帧细化,能在极低的显存需求下对不稳定场实现流线动画效果;其次通过 笛卡尔网格控制原理,基于流场速率来控制流线密度,默认情况下使高速区能表达更多的 矢量场细节、低速区表达较少的矢量场细节,在处理大数据时,能节省更多的处理时间,同 时,增加交互窗口,使矢量场表达更加具有交互性能,能基于用户的喜好,对感兴趣区域显 示更多细节其他区域显示较少细节;最后,通过对流线预处理轨迹进行符号映射,用符号来 形象表达流向、流速,并通过变形效果来实现时间帧之间的流场过渡,能达到更加优秀的方 向性和视觉效果。

【发明内容】

[0005] 基于GPU并行计算的多时间帧高感知度二维流线组织算法,从以下几个方面实 现:
[0006] (1)多时间帧矢量数据预处理。创建多个纹理,每个纹理存储一个时间点的矢量数 据,通过纹理单元的R/G/B/A值来存储每个矢量数据的分量速度。将所有的纹理都存在同 一个文件目录下,方便调用。
[0007] (2)矢量数据纹理显存调度。由用户设定调度时间间隔,每时间间隔下只调入两张 相邻时间点数据纹理,一旦纹理使用完以后,即可调出显存,再调入新的相邻纹理,在整个 流线动画过程中,保证显存中只具有两张数据纹理供GPU计算使用,以节省计算机显存。
[0008] (3)GPU中基于时间帧的插值。显存中的两张矢量数据纹理代表着该时间区域的最 早时间帧T1的数据与最晚时间帧T2的数据,则在T1与T2之间的矢量数据需要通过实时 的插值来获得,获得计算机的当前运算时间信息,计算其在Tl、T2中的占比,通过时间占比 与Tl、T2的矢量数据信息,来计算当前时间下的矢量数据。
[0009] (4)基于GPU的几何流线生成。在GPU中进行流线的几何计算而非像素估算,需要 借助一张寄存中间变量的二维纹理M以及一张充当笛卡尔控制网格的三维纹理T,由用户 指定流线间距阈值D sep,由第一个种子点开始通过Runge-Kutta四阶积分向前向后积分出 流线轨迹,新生成的积分点P,需要映射到笛卡尔控制网格T中,进行合法性检查,如果P周 围没有一个点使得该点到P的距离小于D sep那么该点为合法点,将该点存入三维纹理T的对 应纹理单元中,做合法性检测使用,同时也将该点存入对应二维纹理M的对应纹理单元中, 以使得生成下一个种子点。
[0010] (5)矢量点速率控制流线生成密度。本算法通过矢量点的速率来控制流线间距大 小,以此达到高速区展现更多矢量场细节,低速区展现较少矢量场细节,以节约运算时间成 本的目的。假设当前矢量点的速率为,矢量流场域中最大速度为v_,最小速度v_, 用户设定的最大流线间距为〇_,则当前矢量点的流线间距应该控制在D ramnt范围内:
[0012] 同时也可以凭借此方法,实现与用户的交互功能,由用户设置感兴趣速度区间,对 此区间的流线进行稠密绘制(即流线间距保持在较小水平),此区间外的流线进行稀疏绘 制(即流线间距保持在较大水平),在不失去高关注区域流线细节的前提下,节省时间开 销。
[0013] (6)符号映射。在GPU中对生成的流线轨迹点进行符号映射,用形象生动的符号形 象来仿真流场的流动方向和大小,更加逼真美观。由用户指定一帧流线的生命周期,在生命 周期结束之前,符号动画只凭借当前时间下的矢量数据进行,当前帧流线生命周期结束,则 符号开始以下一帧矢量数据模式流动,在进行帧与帧之间的动画切换时,对映射符号进行 变形处理,使得动画过渡自然,通过变换符号的纹理坐标,实现符号的流动。
【附图说明】
[0014] 图1基于GPU与数据纹理的矢量场流线组织策略
[0015] 图2基于矢量点速率的流线密度控制策略
【具体实施方式】
[0016] 为了实现对矢量流场的高感知度图像表达,下面进行详细的说明:
[0017] 1.基于GPU与数据纹理的矢量场流线组织策略
[0018] 基于GPU并行计算的二维流线表达,其步骤如图1所示:
[0019] (1)需对原始多时间点矢量数据进行数据预处理,将单个矢量场数据的速度分量 存入创建的二维纹理单元中,每张纹理存储一个时间点数据,多张纹理以一定的命名规律 保存在同一个文件目录下;
[0020] (2)由用户设定时间间隔,该间隔时间内调入相邻两张纹理进入显存中,做计算支 持,当时间间隔结束、显存中使用完毕的纹理将被调出显存,重新从外存中调入新的数据纹 理进入显存中,进行运算支持,始终保持显存中只存在两张数据纹理;
[0021] (3)在GPU运算过程中,由用户设置一帧流线的生命周期,则生命周期开始时,流 线按照该帧数据模式生成、动画,生命周期结束,流线则转入下一帧数据模式进行生成与动 画;
[0022] (4)创建一张三维纹理T用作笛卡尔控制网格、一张二维纹理M用作中间变量存储 纹理,抛洒起始积分种子点,计算当前流线间距阈值D eu"ent,通过Rung-Kutta四阶积分,生 成下一个积分点P,将新生成的积分点映射到三维笛卡尔控制网格T中,进行合法性检测, 如果在三维笛卡尔控制网格中没有一个点X,使得|XP| < Deu"ent,则P点为合法点,将P点 存入T的对应位置,并将P保存在中间变量存储纹理M中,供下一次种子点生成使用。
[0023] (5)对组织好的流线轨迹进符号映射,通过不断改变纹理坐标,来改变符号的位 置,以实现动画的效果,通过符号变形操作,实现两相邻帧动画的平滑过渡。
[0024] 2.基于矢量点速率的矢量场流线密度控制策略
[0025] 本策略具有一定的交互性能,如图2所示:
[0026] (1)默认情况下,由用户设置最大流线间距Dmax,同时获得矢量场的最大速度 Vmax,最小速度Vmin及当前速度Vcurrent
[0027] (2)通过公式 来求得当前时间、 , 当前矢量点速率下的流线间距最小阈值,本公式的处理方式可以理解为,当矢量点速率大 于一定的值V0时,流线间距一直维持在最小间距值dmin的程度下(为了防止流线过于密 集、导致矢量场扰动和紊乱的情况);当不超过V0时,Dcurrent通过当前矢量点速率在最大 速度最小速度中的占比情况求得。以此可以实现在高速率区间绘制稠密的流线,在低速率 区间绘制稀疏的流线,保证矢量场信息量的前提下,尽可能地降低时间成本。
[0028] (3)当用户有自己的感兴趣领域时,也可设置速率区间(公式如下),对于指定速 率区间内的流线,进行稠密绘制,对于指定速率区间外的流线,进行稀疏绘制,以此来达到 对用户选择区域信息细节重点呈现及节省时间的目的。
【主权项】
1. 基于GPU并行计算的多时间帧高感知度二维流线算法,其特征在于3个部分: (1) 本算法中的纹理主要作为数据载体和中间过程辅助工具而存在(而非纹理白噪 声),将矢量场的不同时间点数据存入不同纹理像素中,每固定时间距离下,实时向GPU中 传入2张相邻时间帧纹理,并及时更换纹理,以做动画计算,一方面保证了显存中只载入2 张纹理,不至于显存不足,另一方面,能实现流场的动画效果。 (2) 本算法是基于GPU并行计算的矢量场几何流线运算方法,而非基于GPU的像素估计 流线运算,也非基于CPU的几何流线运算方法; (3) 本算法基于矢量点速率来控制流线密度,对高速区域能表达更多细节,低速区域表 达较少细节,节省了处理时间又不至于忽略用户感兴趣的区域细节。2. 根据权利要求1所述的基于GPU并行计算的多时间帧高感知度二维流线算法,特征 (1)中表述,本算法的纹理主要用于两个地方:其一,预处理数据阶段,将矢量场单个时间 帧数据存于同一类型的不同纹理文件中,存放于同一目录下,由用户设置调入纹理的时间 间隔,每时间段中只调入相邻两时间纹理,进入显存,在GPU中根据动画的时间,基于显存 中已存的两张数据纹理做插值,得出当前动画时间帧的矢量场数据,以达到流畅地动画帧 更换效果;其二,几何流线生成阶段,需要在GPU中创建一张三维纹理T,充当笛卡尔网格, 进行基于流速的密度控制,需要创建一张二维纹理M,来保存几何流线数据点生成的中间数 据及该时间帧下流线最终数据。3. 根据权利要求1所述的基于GPU并行计算的多时间帧高感知度二维流线算法,特 征(2)中表述,本算法所有的几何数据运算都是GPU进行的,在GPU中实现两帧数据纹理 的反距离插值,以获得当前时间帧下的数据纹理,同时选中第一个积分的种子点,利用四阶 Runge-Kutta积分,向前向后积分出下一个矢量点的位置,同时通过笛卡尔网格控制技术, 监测新积分出的矢量点是否是合法点(即是否满足与周围点的距离要求),如果是合法点, 则继续进行积分,如果不是合法点,则停止积分。4. 根据权利要求1所述的基于GPU并行计算的多时间帧高感知度二维流线算法,特征 (3)中表述,本算法基于矢量速率来控制流线密度,矢量速率越大,流线间距阈值越小,则该 区域能生成更多的流线,矢量速率越小,流线间距阈值越大,则该区域生成较少的流线,这 样在处理海洋大数据时,能保证在不牺牲高速区矢量场细节的情况,节省更多的处理时间。 同时,本方法具有一定的交互性能,可让用户设置感兴趣矢量速率区间,对该区间绘制更加 稠密的流线,以表达更多的信息,其他区域绘制较为稀疏的流线,以节省绘制时间。
【文档编号】G06T1/20GK105894438SQ201410712711
【公开日】2016年8月24日
【申请日】2014年11月20日
【发明人】田丰林, 陈戈, 马纯永, 蒋雨池
【申请人】中国海洋大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1