一种高效并行矢量数据可视化方法
【技术领域】
[0001] 本发明涉及图形绘制领域,尤其涉及一种高效并行矢量数据可视化方法。
【背景技术】
[0002] 本发明相关的研究背景简述如下:
[0003] 二维矢量图形绘制是计算机图形学中的一个重要领域。矢量图形由轮廓和填充区 域组成。矢量图形的轮廓是一组首位相接的曲线,使用数学公式解析表达,通常由贝塞尔曲 线或其他有理样条曲线分段表示。矢量图形的填充区域使用非零环绕数规则、奇偶判别规 则确定。矢量图形的颜色可以选择单色、线性渐变色、辐射渐变色、纹理方式表示。
[0004] 一、矢量图形绘制:
[0005] Loop等人提出了把矢量图形分割成三角形,在可编程着色器里判断像素是 否落在矢量图形内部的方法(LOOP, C.,AND BLINN, J. 2005. Resolution incbpendent curve rendering using programmable graphics hardware. ACM Trans. Graph. 24, 3 (July), 1000 - 1009.)。微软的Direct 2D使用梯形划分矢量图形进行绘制,在 边界上计算覆盖值(KERR, K. 2009. Introducing Direct2D. MSDN Magzine 3, 4.)。Kokojima 等人的方法生成矢量图形的三角形覆盖,并使用模板缓存进行绘制(K0K0JIMA,Y.,SUGITA, K., SAIT0, Τ. , AND ΤΑΚΕΜ0Τ0, Τ. 2006. Resolution independent rendering of deformable vector objects using graphics hardware. In ACM SIGGRAPH 2006Sketches, ACM, New York, NY, USA, SIGGRAPH' 06.)。NVPR (NV_path_rendering)使用基于模板缓存绘制的方 法(KILGARD,M.J·,AND B0LZ,J. 2012. GPU-accelerated path rendering. ACM Trans. Graph. 31,6 (Nov. ),172:1 - 172:10·),该方法在 GPU 上实现了实时绘制。
[0006] Vector texture类方法使用预处理步骤构造出加速数据结构,利用加速数据结 构,在绘制过程中快速判断点与图形的相对位置并获得相关的颜色等信息(NEHAB,D.,AND HOPPE, Η. 2008. Random-access rendering of general vector graphics. ACM Trans. Graph.27,5(Dec.),135:l-135:10. ; ;WANG,L.,ZH0U,K.,YU,Y.,AND ⑶0,B.2010.Vector solid textures.ACM Trans.Graph.29,4(July),86:l_86:8·等)。这类算法的预处理 过程通常要在CPU上使用较长时间完成。Ganacim等人提出的ShortcutTree数据结构可 以使用 GPU 并行构造(GANAC頂,F·,LIMA,R·S·,DEFIGUEIRED0,L·H·,ANDNEHAB,D·2014· Massively-parallel vector graphics. ACM Trans. Graph. 33, 6(Nov.), 229:1 - 229:14.), 然而在绘制大规模复杂动态矢量图形时,数据结构生成的开销仍大于绘制过程的开销。
[0007] 二、反走样:
[0008] 反走样算法用于消除绘制过程中在图像边界上产生的失真。NVPR使用 OpenGL 的多重采样功能进行反走样(SEGAL, M.,AND AKELEY, K.,2003. The OpenGL graphics system:A specification. http://www. opengl. org/documentation/specs/ versionl. 5/glspecl5. pdf.)。多重采样需要在同一像素多次计算颜色值,以获得更 好的反走样效果,从而导致计算量增加和绘制速度降低。Manson等人提出了解析计 算积分的方法反走样(MANSON, J.,AND SCHAEFER, S. 2013. Analytic rasterization of curves with polynomial filters. Computer Graphics Forum(Proceedings of Eurographics) 32, 2, 499 - 507.),该方法从理论上得到了矢量图形在像素上覆盖面积的解 析表示,但绘制速度较慢。
【发明内容】
[0009] 本发明的目的在于针对现有技术的不足,提供一种高效并行矢量数据可视化方 法。
[0010] 本发明的目的是通过以下技术方案来实现的:一种高效并行矢量数据可视化方 法。该方法使用分段贝塞尔曲线以及有理样条曲线表示矢量图形,使用带透明度的单色、线 性渐变色、辐射渐变色表示图形的轮廓颜色和填充颜色。
[0011] 该方法使用并行扫描线算法,使用图形处理器并行加速完成图形绘制。该方法首 先使用轮廓曲线表示矢量图形。绘制过程首先在图形的每段轮廓线上进行。每段轮廓线被 并行裁剪成若干片段,每个片段对应绘制结果中的一个像素。在每个片段上,根据轮廓线片 段的公式,得到之后用于计算颜色的中间结果。然后,根据这些中间结果,在每条横向扫描 线上,计算得到矢量图形轮廓上的颜色,以及矢量图形内部的填充区域。最后,将轮廓线以 及填充区域共同绘制,得到输出图像上每个像素的颜色。该方法能在不同使用条件下,分别 支持非零、奇偶填充模式。支持单色、线性渐变色、辐射渐变色等填充模式。具体可采用两 种方案来实现:
[0012] 方案一:一种高效并行矢量数据可视化方法,包括以下步骤:
[0013] (1)对矢量图形轮廓线并行裁剪处理,将每条轮廓线沿像素边界裁剪成像素内的 轮廓线片段;
[0014] (2)根据反走样算法并行处理每个轮廓片段,在每个片段上得到用于计算覆盖值 的中间结果;所述反走样算法为解析法,具体如下:
[0015] 基于以下公式计算每个像素上的覆盖值:
[0024] F(x,y)表示位于坐标(x,y)处像素的轮廓在该像素内的覆盖值;u、v是矢量图形 上的坐标;u(t)、v(t)分别是像素(x,y)内轮廓线公式的x、y分量;M表示矢量图形的内部 区域;9M表示矢量图形的边界;函数h在Ixl大小的单位像素内有常数值1 ;函数H由函 数h横向积分获得;
[0025] 并行处理每个轮廓线片段,将轮廓线片段的表达式代入公式(4)、公式(5),计算 每个片段对应的中间结果F(j(x,y)和F1(Xj);
[0026] (3)并行对所有轮廓线片段对应的值按照其像素位置进行排序,在每个矢量图形 内将片段按照先行后列的顺序排列;
[0027] (4)在每个矢量图形内的每行轮廓线上,并行完成片段在像素上覆盖值的计算,具 体为,并行计算公式(3)中的求和项,并记为:
[0029] 并行在每个像素位置上将A(x,y)和Fjij)相加,得到轮廓在像素上的覆盖值 F (x, y);