CN101604453A - 基于分块策略的大规模数据场体绘制方法 - Google Patents

基于分块策略的大规模数据场体绘制方法 Download PDF

Info

Publication number
CN101604453A
CN101604453A CNA200910023253XA CN200910023253A CN101604453A CN 101604453 A CN101604453 A CN 101604453A CN A200910023253X A CNA200910023253X A CN A200910023253XA CN 200910023253 A CN200910023253 A CN 200910023253A CN 101604453 A CN101604453 A CN 101604453A
Authority
CN
China
Prior art keywords
sub
piece
data
texture
volume 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.)
Pending
Application number
CNA200910023253XA
Other languages
English (en)
Inventor
高新波
邹华
吕新荣
梁承志
查林
王向华
曹艳艳
李晋舟
宁文博
王秀美
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CNA200910023253XA priority Critical patent/CN101604453A/zh
Publication of CN101604453A publication Critical patent/CN101604453A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Image Generation (AREA)

Abstract

本发明公开了一种基于分块策略的大规模数据场体绘制方法,主要解决现有基于GPU的体绘制方法存在的存储容量小的问题。其绘制过程是:分解整体体数据,生成多个大小相等的子块,并对生成的所有子块编号;计算每个子块与视平面的距离,并根据距离对子块按从后向前的顺序排序;采用八叉树结构组织子块,并利用八叉树排除无效子块中的体数据;根据顺序依次载入子块到纹理内存中;利用基于GPU的3D纹理体绘制算法逐个绘制子块,得到每个子块的绘制结果;在帧缓存中按从后向前的顺序混合所有子块的绘制结果,得到整体绘制图像。本发明具有载入体数据到纹理内存开销低、处理和绘制体数据速度快的优点,可用于数据规模大于GPU纹理内存容量体数据的快速绘制。

Description

基于分块策略的大规模数据场体绘制方法
技术领域
本发明属于图像处理技术领域,特别涉及基于GPU的图形处理方法,可用于科学计算、医学影像、地震勘测、气象及有限元分析等领域中的大规模体数据快速绘制。
背景技术
随着现代科技的发展,人们需要处理的数据越来越复杂,这一事实增加了人们对计算机辅助可视化的需求。故在二十世纪八十年代,科学计算可视化作为一门独立的学科被提出来。1987年2月,美国国家科学基金会在华盛顿召开了有关科学计算可视化的首次会议,与会者有来自计算机图形学、图像处理以及从事各个不同领域的专家。会议认为“将图形和图像技术应用于科学计算是一个全新的领域”,并指出“科学家们不仅需要分析由计算机得出的计算数据,而且需要了解在计算过程中数据的变化,而这些都需要借助计算机图形学及图像处理技术”。会议将这一涉及到多个学科的领域定名为科学计算可视化,英文为:Visualization in Scientific Computing,简称科学可视化,英文为:Scientific Visualization。它是利用计算机图形学、数字图像处理、计算机视觉及数字信号处理等学科的理论与方法,将科学计算、工程学、医学等计算、测量过程中的符号、数字等信息转换为直观的图形图像并在屏幕上显示出来的理论、技术和方法。
目前科学可视化方法主要集中为以下两类:
第一类是面绘制方法。面绘制以传统的计算机图形学为基础,通过阈值方法由3D数据场构造中间几何图元并生成最终图像。面绘制算法中,主要有立方块法Cuberille、移动立方体法MC和移动四面体法MT等。而Lorensen等人1987年提出的移动立方体法是最有影响的等值面构造方法,一直沿用至今。该方法首先由给定的阈值将每个体素的8个角点的数值二值化,然后根据二值化后的8个顶点的拓扑关系,分15种情况进行等值面的匹配生成处理。该方法可以快速生成等值面。最初的MC算法不能保证三角片所构成的等值面的拓扑一致性,会造成等值面上出现孔隙。Durst MJ首先提出了MC算法中的二义性,后来许多研究人员在Lorensen方法的基础上做改进工作。移动四面体法是在MC算法的基础上发展起来的,该算法首先将立方体剖分成四面体,然后在其中构造等值面。进行四面体剖分后,等值面在四面体中的剖分模式减少,算法实现简单。其次,构造的等值面较MC算法构造的等值面精度高。而最直接的原因是企图通过在四面体内构造等值面来避免MC算法中存在二义性问题。面绘制将感兴趣的部分以等值面的方式抽取后,可利用真实感技术生成高质量的图像,使研究人员可以方便地进行观察和分析。但这种方法每次只能显示一个值的等值面,且需要借助于几何图元表示,不能反映整体体数据中各种因素的相互关系,使研究人员难以把握体数据的全局状况。体数据所包含的物体结构一般都是复杂而细腻的,如人体器官和软组织等,很难用几何图元来准确描述。另外,面绘制不能保留原有体数据的一些物理属性,舍弃了物体内部的大量有用信息,不利于进一步处理。
第二类是体绘制方法。体绘制方法与面绘制方法不同,不需要进行几何图元的提取过程来恢复体数据中的物体表面,而是直接由3D体数据产生屏幕上的2D图像。它的中心思想是为每一个体素指定一个阻光度,并考虑每一个体素对光线的透射、发射和反射作用。光线的透射取决于体素的不透明度;光线的发射则取决于体素的物质度,物质度愈大,其发射光愈强;光线的反射则取决于体素所在的面与入射光的夹角关系。体绘制的步骤原则上可分为投射、消隐、渲染和合成等4个步骤。经过二十多年的发展,已经有多种体绘制算法被提出。按照绘制前是否需要对原始的体数据进行预处理,可将其分为直接体绘制方法和变换域体绘制方法两大类。直接体绘制方法都是在空间域对体数据直接采样。变换域体绘制方法首先将体数据从空域变换到另外的域,例如压缩域、频域或小波域,然后直接在这些变换后的域中进行采样混合。与面绘制方法只能显示物体的轮廓和形状相比,体绘制算法能产生体数据的整体图像,且图像质量较高,包括体数据内部的每一个细节,因此体绘制方法在实际应用中越来越广泛。
体绘制方法强调对整体信息的显示和理解。由于体绘制方法需要一次性处理体数据场全部的数据单元,涉及到的数据量庞大,导致计算量较大,显示速度较慢。随着PC机上的图形处理单元GPU的出现和发展,利用GPU强大的图形处理能力与体绘制算法结合,能加快绘制速度,实现对体数据的实时绘制。因此基于GPU的体绘制方法成为目前体绘制领域的研究热点。但该类方法需要将体数据转换为3D纹理保存在GPU的纹理内存中。当GPU的纹理内存小于体数据规模时,难以进行处理。对此,Guthe等提出利用小波变换对体数据进行压缩,Schneider等提出采用矢量量化技术对体数据进行压缩,Weiler等提出一种多分辨率表示体数据的方法,但此类方法都会降低最终绘制图像的质量。Kai Xie等提出了一种分块与可视检测结合的方法VT,该方法在不降低绘制图像质量的同时,实现大规模体数据的绘制,但在绘制时切换纹理过于频繁,性能较低。
发明内容
本发明的目的在于克服基于GPU的体绘制方法存在的存储容量瓶颈,提供一种基于分块策略的大规模数据场体绘制方法,以实现在GPU架构上快速绘制大规模体数据,有效地提高处理的数据量。
实现本发明目的的技术方案包括如下:
(1)对计算机内存中待处理的整体体数据进行分块规划,生成大小相等的多个子块,并对生成的每个子块编号;
(2)在视口坐标系下,计算生成的每个子块与视平面之间的距离,并根据该距离,按从后向前对子块进行排序;
(3)利用八叉树结构组织子块内的体数据,并通过遍历八叉树排除对最终绘制结果无贡献的无效体数据;
(4)对利用八叉树组织后的子块,依次作为3D纹理载入到纹理内存中;
(5)对纹理内存中的每个子块,利用3D纹理体绘制算法进行绘制,得到每个子块的绘制结果;
(6)对每个子块的绘制结果,在帧缓存中按从后向前的顺序混合,得到整体体数据的绘制图像。
所述的八叉树数据结构如下:
   Struct  OctreeNode
   {
       unsigned int    XCode,YCode,ZCode;   //八叉树结点的方向编码
       int             MinValue,MaxValue;    //八叉树结点的最大最小值
       OctreeNode*     Children[8];           //八叉树结点的子结点
    }
上述数据结构中,MaxValue和MinValue存储对应子体数据内所有体素的最大最小值,指针Children[i]指向当前结点的第i个子结点,方向编码XCode、YCode和ZCode包含了子体数据的剖分深度及空间位置信息:
icoord=(c1×2-1+c2×2-2+c3×2-3+...+cn×2-n)×IWidth
iwidth=2-depth×IWidth=2-n×IWidth
式中,icoord表示子体数据在原始体数据中在某个坐标轴方向上的起始坐标,IWidth表示原始体数据在某个坐标轴方向上的宽度,iwidth表示子数据在某个坐标轴方向上的宽度,c1c2c3...cn为八叉树结点沿某坐标方向的方向编码,depth为结点沿某坐标方向的剖分深度。
所述的对排序后利用八叉树进行组织的子块,依次作为3D纹理载入到纹理内存,是在载入新子块时,采用纹理替换,直接用该子块内的体数据替换当前纹理中的数据,以避免频繁的纹理删除和创建带来的开销。
本发明由于采用分块策略的方法对整体体数据进行分解,利用八叉树结构组织体数据,与现有技术相比较,具有以下优点:
(1)利用分块策略对整体体数据分块,克服了基于GPU的体绘制算法存在的存储瓶颈;
(2)采用纹理替换技术载入体数据到纹理内存中,避免了频繁删除和创建纹理带来的开销;
(3)利用八叉树排除了对最终绘制结果的不做贡献的无效体数据,加快了处理整体体数据的过程;
(4)采用快速计算采样多边形与有效体数据的交点坐标的方法,加快了3D纹理映射体绘制方法绘制体数据的速度。
附图说明
图1为本发明处理整体体数据的过程示意图;
图2为本发明中原始体数据在内存中的存储方式示意图;
图3为本发明中对体数据分块后的存储方式示意图;
图4为本发明中空间划分及保留边界划分的采样示意图;
图5为本发明中八叉树组织体数据示意图;
图6为本发明与直接绘制方法在结果图像上的效果比较图;
图7为本发明绘制几种实验数据的效果图;
图8为本发明与现有方法在跳过无效体数据上的数量比较图;
图9为本发明与现有方法在相同数据时的速度比较图。
具体实施方式
本发明的核心思想是利用分块策略对整体体数据划分,动态地载入到纹理内存,并利用空间跳跃技术加速绘制过程。通过对整体体数据进行划分,生成多个大小相等的子块,利用八叉树结构组织各个子块内的体数据,计算子块与平面的距离,按从后向前的顺序载入到纹理内存中,采用3D纹理体绘制算法对子块内的有效体数据进行绘制,并混合每个子块的绘制结果,获得整体体数据的绘制图像。
参照图1,本发明具体步骤如下:
步骤1.对整体体数据分块。
利用分块策略对整体体数据进行分解,得到多个大小相等的子块。
整体体数据在内存中按X、Y、Z方向的顺序逐层存储,最终体数据在内存中的排列方式与3D数组相同,如图2所示。对整体体数据进行分解后,生成多个子块,体数据按子块为单位进行存储,如图3所示。分解整体体数据,当子块的大小小于纹理内存的容量时,停止对体数据分解。
GPU不支持跨越子块边界插值采样,因此对体数据简单的空间划分会导致相邻子块的边界处采样不连续,严重地影响绘制质量。图4以1D纹理为例,说明了该问题。其中图4(a)为原始的1D纹理示意图,图4(b)为对1D纹理不保留边界划分后的采样示意图,图4(c)为对1D纹理保留边界划分后的采样示意图。图4(b)中由于子块没有足够的信息保持边界处插值的连续性,因此在子块边界处会产生错误的插值结果。为解决该问题,需要在每个子块边界上保留一个边界体素,相邻的子块拥有相同的边界体素信息,GPU就可以得到正确的插值结果,如图4(c)所示。
步骤2.对所有子块排序。
载入子块时,需按与视平面的距离从后向前的顺序。
其中,子块与视平面距离:
n → · p - d 0 = d
式中,
Figure G200910023253XD00052
为视线方向,d0为视平面与原点的距离,d为空间一点p到平面的距离,当d等于0时,点p在平面上。把子块的中心点坐标带入上式中求出子块到视平面的距离,通常视点都在体数据之外,因此各子块都在视平面的同侧。对d取绝对值后对子块从后向前排序,确定每个子块载入与绘制的顺序。
步骤3.利用八叉树组织每个子块。
与分块规划不同,利用八叉树对子块进行剖分时,不改变子块内体数据的存储方式,仅根据空间位置信息统计对应体数据的最大最小值、剖分深度。
(3a)构建八叉树
设置八叉树的高度,从原始体数据开始,逐层对体数据剖分,对每次生成的八个子块按空间位置进行编号,如图5所示。其中图5(a)为八叉树分解体数据的示意图,图5(b)为八叉树的结构示意图。子块的最大最小值、剖分深度、空间位置信息保存在对应的八叉树结点中。八叉树的数据结构如下:
   Struct OctreeNode
   {
       unsigned int      XCode,YCode,ZCode;   //八叉树结点的方向编码
       int               MinValue,MaxValue;    //八叉树结点的最大最小值
       OctreeNode*       Children[8];           //八叉树结点的子结点
    }
上述数据结构中,MaxValue和MinValue存储对应子体数据内所有体素的最大最小值,指针Children[i]指向当前结点的第i个子结点,方向编码XCode、YCode和ZCode包含了子体数据的剖分深度及空间位置信息:
icoord=(c1×2-1+c2×2-2+c3×2-3+...+cn×2-n)×IWidth
iwidth=2-depth×IWidth=2-n×IWidth
其中,icoord表示子块在原始体数据中某个坐标轴方向的起始坐标,IWidth表示原始体数据的某个坐标轴方向的宽度,iwidth表示子块在某个坐标轴方向的宽度,c1c2c3...cn为八叉树结点沿某坐标方向的方向编码,depth为结点沿某坐标方向的深度。
(3b)确定八叉树的遍历顺序
为确保八叉树结点对应的体数据按从后向前的顺序被绘制,计算八叉树结点与视点的距离,根据距离确定遍历顺序。
(3c)跳跃对最终绘制结果无贡献的无效体数据
遍历到某结点时,判断结点内体数据值的范围A和预先设定的有效体数据显示范围B之间的关系,其中A为最大最小值之间的范围。
Figure G200910023253XD00061
时,说明该结点对应体数据都不在显示范围内;
Figure G200910023253XD00062
A ⊂⃒ B 时,说明该结点对应体数据中有部分体素在显示范围,如果该结点不是叶子结点,遍历它的子结点;
A ⊆ B 时,说明该结点对应体数据全部在显示范围内。
步骤4.依次载入子块。
载入子块时,与混合采样多边形的顺序相同,按从后向前的顺序载入。在载入新子块时,采用纹理替换,直接用该子块内的体数据替换当前纹理中的数据,以避免频繁的纹理删除和创建带来的开销。
步骤5.绘制载入到纹理内存中的每个子块。
本发明采用3D纹理映射体绘制算法对载入到纹理内存中的每个子块逐个绘制,其步骤如下:
(5a)定义采样平面
首先确定采样步长,然后沿与视线垂直的方向,定义一系列平行且等距的采样平面,其中平面间的距离为采样步长,采样平面方程为:
n → s · ρ s - d = 0
式中,
Figure G200910023253XD00072
为采样平面的法向坐标,d为该采样平面与原点的距离,ρs为采样平面上点的坐标;
(5b)计算采样平面与有效子块边界的交点
等距的采样平面和体数据边界相交,每个采样平面和体数据的边界产生三到六个交点。采用八叉树组织体数据后,所有有效子体数据的边界都和采样平面相交形成采样多边形。当绘制子块时,如果逐个计算每个采样平面与子块边界的交点,计算量太大。当子块数量较多时,空间跳跃所节省的时间都被增加的计算量消耗掉了。对此本发明采用了一种快速计算交点的方法:计算采样平面与边界每条边的第一个交点,然后计算出每条边上相邻交点的距离向量,则同一条边的后续交点坐标可通过递增求得。包围盒的两个顶点ρi和ρj之间边上的点可以用下式表示:
ρ m = ρ i + m e → i → j
式中,m∈[0,1],
Figure G200910023253XD00074
为从顶点ρi到ρj的向量,该式代入到采样平面方程中,可求出采样平面与包围盒边界的交点。
Figure G200910023253XD00075
表示相邻交点间的向量,它和
Figure G200910023253XD00076
同向,可以通过下式求出:
n → s · e → dist = n → s · λ e → i → j = d slic
式中,dslic是相邻的两个采样平面间的距离。
计算出采样平面和包围盒边界的第一个交点后,同一条边上后续的交点坐标就可以通过递增
Figure G200910023253XD00078
计算得到。交点计算完后,对它们进行图元装配,生成采样多边形,并把采样多边形的顶点坐标传递给GPU。
(5c)纹理映射
利用采样多边形在体数据中进行纹理映射,并对映射后的纹理片元着色;体数据在纹理内存中以3D纹理的形式存储;利用采样多边形在3D纹理中采样后,得到采样点的体数据值,并根据传输函数及设定的光照模型对采样点处理,确定该点的最终颜色。
(5d)混合采样多边形
从后向前混合采样多边形,获得该子块的绘制结果图像。3D纹理映射体绘制算法通常采用由后向前的混合方式。该混合方式可通过图形处理平台的基本命令指定。本发明选用OpenGL作为图形处理平台,OpenGL指定由后向前混合方式的命令如下:
glBlendFunc(GL_SRC,GL_ONE_MINUS_SRC_ALPHA)。
步骤6.混合所有子块的绘制结果。
为正确得到最终绘制图像,载入和绘制子块及绘制子块时采样多边形的混合都是按照从后向前的顺序。在绘制第一个子块后,绘制的结果保存在帧缓存中;载入下一个子块并进行切片采样,新的采样多边形同样按从后向前的顺序与上个子块绘制结果混合。因此,所有采样多边形都是按照从后向前的顺序混合,与直接绘制整体数据时采样多边形的混合顺序一致。
本发明的优点可通过以下实验进一步说明:
1.实验条件
本发明的实验是在计算机断层扫描设备获取的临床医学影像上进行的。实验平台为:CPU为Pentium D 2.8GHz、内存为1.0GB的DDR2型、GPU为NVIDIA GeForce9600GT,显存大小为256MB。实验数据共有4个,如表1所示。
表1.  实验体数据
  实验体数据   分辨率   层数  体素大小(bytes)   数据规模(MB)
  全身数据   512×512   1559   2   780
  动脉瘤   512×512   712   2   356
  胸腔   512×512   894   2   447
  头部   512×512   460   2   230
为了测试本发明的合理性与有效性,设计了三组测试实验室:(1)该发明对体数据绘制的结果图像与直接体绘制方法的一致性实验;(2)该发明在不同八叉树深度时加速效果的有效性实验;(3)本发明与同类方法的性能对比实验。实验中,绘制结果在相同窗口大小,旋转角度、放缩比例及采样率下获得。另外,进行结果图像一致性实验时,采用的头部数据规模小于GPU的纹理内存。
2.实验结果
(1)一致性实验
通过对数据规模小于纹理内存的头部体数据分别进行分块动态绘制和直接绘制,比较绘制结果来验证两种方法的一致性,实验结果如图6。其中,图6(a)为对整体体数据直接绘制的图像,图6(b)为在图6(a)的基础上添加包围盒边框的绘制图像,图6(c)为对整体体数据分块后绘制的图像,图6(d)为在图6(c)的基础上添加包围盒边框的绘制图像,图6(e)为对整体体数据分块及对利用八叉树组织子块后绘制的图像,图6(f)为在图6(e)的基础上添加包围盒边框的绘制图像。
计算图6(a)、图6(c)和图6(e)中任意两幅图像之间的均方误差:
MSE = Σ x = 1 M Σ y = 1 N ( f 1 ( x , y ) - f 2 ( x , y ) ) 2 M × N - - - ( 4 - 6 )
其中M、N分别为图像的宽和高,f1(x,y)和f2(x,y)为两幅图像在点(x,y)处的颜色值。
经过计算,图6(a)、图6(c)、图6(e)中任意两幅图像间的均方误差都为0,说明了本发明提出的分块动态绘制方法和对体数据直接绘制方法获得的图像完全一致,而利用八叉树排除对最终绘制图像无贡献的无效体数据后,对绘制图像没有影响。为避免不必要的误差,计算均方误差时图像直接从帧缓存中读取。
(2)有效性实验
对表1中的体数据进行实验,绘制图像及速度如图7及表2和3所示,其中图7(a)为人体全身数据的绘制示意图,图7(b)为人体胸腔数据的绘制示意图,图7(c)为人体动脉瘤数据的绘制示意图。
表2  不同剖分深度时分块动态绘制的速度
Figure G200910023253XD00092
表3  不同剖分深度时跳过无效体数据数量占体素总数量的百分比
Figure G200910023253XD00101
表2中分别为分块动态绘制及分块动态绘制加空间跳跃加速的绘制速度,其中整体体数据分为了8个子块,子块内构建八叉树的深度分别为2、3、4、5、6。由表2可以看出,不同的八叉树剖分深度对绘制速度的影响不同。在八叉树剖分深度较小时,生成的有效体数据包围盒的体积较大,绘制速度并没有明显提高;随着剖分深度逐渐增加,绘制速度逐渐加快;当达到某一剖分深度时,绘制速度达到最快;但当体数据进一步被剖分时,速度开始明显下降。通过在不同剖分深度绘制时对排除的空体数据数量的统计,如表3所示,发现当包围盒体积较大时,包围盒中体数据值范围较大,排除的空体数据的数量较少,因此加速不明显。而随着剖分深度的逐渐增加,包围盒体积逐渐变小,包围盒内体数据值范围也逐渐缩小,排除的空体数据的数量大幅度增加,因此速度增加较快。当剖分深度达到最佳后,对体数据进一步剖分时,排除的空体数据的数量逐渐趋近极限,增长幅度越来越小,而生成的子块包围盒的数量却以23n增长,其中n为剖分深度,因此极大地增加了求采样平面与子块包围盒交点坐标的计算量,导致了速度的下降。
(3)对比性实验
DBR代表发明提出的算法,VT代表现有的可视检测算法。
图8为本发明与可视检测方法的速度比较结果,纵轴坐标的单位为帧/s。
图9为本发明与可视检测方法跳过的无效体数据占所有体数据的百分比。
通过图8和9可以看出,虽然可视检测方法采用了光线提前终止、传输函数挑选、可视剔除等多种检测手段,跳过的无效体数据数量多于分块动态绘制方法,但绘制速度却较慢。经过分析:可视检测方法生成子块数量较多,以全身数据为例,子块数据规模为64×64×64,子块数量为1600个,经过检测后,图形流水线仍需要载入700多个有效子块,因此GPU在绘制一帧图像时等待载入和切换纹理700多次,GPU用于等待载入和纹理切换的开销太高。本发明提出的分块动态绘制方法只生成8个子块,依次载入纹理内存,并通过遮挡测试,避免了对完全被遮挡子块的绘制,在绘制子块时,最多只需切换纹理8次,而且经过空间跳跃减少了GPU的处理时间,同时并未增加纹理切换的开销,有效地提高了绘制速度。
上述实验结果中,确定八叉树结点的遍历顺序时,在无旋转的情况下,只需对各个结点与视平面的距离进行一次计算。与已有的分块方法相比,本发明提出的方法不降低图像质量,绘制速度更快。

Claims (4)

1.一种基于分块策略的大规模数据场体绘制方法,包括如下过程:
A.对计算机内存中待处理的整体体数据进行分块规划,生成大小相等的多个子块,并对生成的每个子块编号;
B.在视口坐标系下,计算生成的每个子块与视平面之间的距离,并根据该距离,按从后向前对子块进行排序;
C.利用八叉树结构组织子块内的体数据,并通过遍历八叉树排除对最终绘制结果无贡献的无效体数据;
D.对利用八叉树结构组织后的子块,依次作为3D纹理载入到纹理内存中;
E.对纹理内存中的每个子块,利用3D纹理体绘制算法逐个进行绘制,得到所有子块的绘制结果;
F.对每个子块的绘制结果,在帧缓存中按从后向前的顺序混合,得到整体体数据的绘制图像。
2.根据权利要求1所述的大规模数据场体数据方法,其中步骤C所述的利用八叉树结构组织子块内的体数据,按如下步骤进行:
2a.设置八叉树的剖分深度,根据空间位置对体数据逐层剖分;
2b.对剖分生成的子体数据的最大最小值、剖分深度及空间位置等信息,利用八叉树结构保存,该八叉树数据结构如下:
Struct OctreeNode
{
    unsigned int   XCode,YCode,ZCode;    //八叉树结点的方向编码
    int            Min Value,MaxValue;    //八叉树结点的最大最小值
    OctreeNode*    Children[8];            //八叉树结点的子结点
}
上述数据结构中,MaxValue和MinValue存储当前八叉树结点对应子体数据的最大最小值,指针Children[i]指向当前结点的第i个子结点,方向编码XCode、YCode和ZCode包含了子体数据的剖分深度及空间位置信息:
icoord=(c1×2-1+c2×2-2+c3×2-3+...+cn×2-n)×IWidth
iwidth=2-depth×IWidth=2-n×IWidth
式中,icoord表示子体数据在原始体数据中在某个坐标轴方向上的起始坐标,IWidth表示原始体数据在某个坐标轴方向上的宽度,iwidth表示子数据在某个坐标轴方向上的宽度,c1c2c3...cn为八叉树结点沿某坐标方向的方向编码,depth为结点沿某坐标方向的剖分深度。
3.根据权利要求1所述的大规模数据场体数据方法,其中步骤D所述对排序后的子块,依次作为3D纹理载入到纹理内存,是在载入新子块时,采用纹理替换,直接用该子块内的体数据替换当前纹理中的数据,以避免频繁的纹理删除和创建带来的开销。
4.根据权利要求1所述的大规模数据场体绘制方法,其中步骤E所述的利用3D纹理体绘制算法进行绘制,按如下步骤进行:
4a.采样多边形与数据场中有效子体数据的边界相交,先根据式(1)和式(2)计算出采样多边形与子体数据边界的第一个交点;再根据式(3)计算相邻交点的增量;后续交点通过递增求得,计算公式如下:
n → s · ρ s - d = 0 - - - ( 1 )
ρ m = ρ i + m e → i → j - - - ( 2 )
n → s · e → dist = n → s · λ e → i → j = d slic - - - ( 3 )
式(2)和(1)中,
Figure A2009100232530003C4
为采样平面的法向坐标,d为该平面与原点的距离,ρs为交点坐标,ρm为包围盒的两个顶点ρi和ρj之间边上的点,
Figure A2009100232530003C5
为从顶点ρi到ρj的向量,
将式(2)代入到式(1)中,求出采样多边形与子体数据边界的第一个交点,式(3)中
Figure A2009100232530003C6
表示相邻交点间的向量,它和同向,dslic是相邻的两个采样平面间的距离,根据式(3)求出相邻交点的增量;
4b.根据计算出的所有交点坐标,采样多边形在3D纹理中进行纹理映射;
4c.对纹理映射后的采样多边形,按照从后向前的顺序进行混合,得到当前子块的绘制结果;
4d.对依次载入到纹理内存的每个子块,重复上述4a-4b的操作,得到每个子块的绘制结果。
CNA200910023253XA 2009-07-08 2009-07-08 基于分块策略的大规模数据场体绘制方法 Pending CN101604453A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA200910023253XA CN101604453A (zh) 2009-07-08 2009-07-08 基于分块策略的大规模数据场体绘制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA200910023253XA CN101604453A (zh) 2009-07-08 2009-07-08 基于分块策略的大规模数据场体绘制方法

Publications (1)

Publication Number Publication Date
CN101604453A true CN101604453A (zh) 2009-12-16

Family

ID=41470169

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA200910023253XA Pending CN101604453A (zh) 2009-07-08 2009-07-08 基于分块策略的大规模数据场体绘制方法

Country Status (1)

Country Link
CN (1) CN101604453A (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101826215A (zh) * 2010-04-19 2010-09-08 浙江大学 实时二级光线跟踪的并行渲染方法
CN101840565A (zh) * 2010-04-19 2010-09-22 浙江大学 一种基于gpu的八叉树并行构建方法
CN101882307A (zh) * 2010-06-17 2010-11-10 广州市凡拓数码科技有限公司 一种超大像素效果图的制作方法
CN102074036A (zh) * 2010-12-07 2011-05-25 中国地质大学(武汉) 基于gpu加速的体数据动态剖切方法
CN102096897A (zh) * 2011-03-17 2011-06-15 长沙景嘉微电子有限公司 基于分块渲染的gpu中块存储策略的实现
CN102289839A (zh) * 2011-08-04 2011-12-21 天津中科遥感信息技术有限公司 一种面向三维数字城市的高效多细节层次渲染方法
CN102831577A (zh) * 2012-08-29 2012-12-19 电子科技大学 基于gpu的二维地震图像的快速缩放方法
CN103136786A (zh) * 2013-02-06 2013-06-05 心医国际数字医疗系统(大连)有限公司 一种ct图快速生成三维视图的方法与系统
CN104751494A (zh) * 2015-04-27 2015-07-01 国家电网公司 一种OpenGL超大纹理的处理和绘制方法
CN104751507A (zh) * 2013-12-31 2015-07-01 北界创想(北京)软件有限公司 图形内容渲染方法和装置
CN105528756A (zh) * 2014-10-20 2016-04-27 Arm有限公司 基于片的图形处理器及在其中执行图形处理的方法
CN106384377A (zh) * 2016-09-22 2017-02-08 上海联影医疗科技有限公司 医学数据的体绘制方法和装置
WO2018201993A1 (zh) * 2017-05-02 2018-11-08 腾讯科技(深圳)有限公司 图像绘制方法、终端及存储介质
CN108876889A (zh) * 2018-05-31 2018-11-23 浙江大学 一种原位体绘制方法
CN110264543A (zh) * 2019-06-21 2019-09-20 苏州科达科技股份有限公司 拼接画面的边框绘制方法、装置及存储介质
CN111402380A (zh) * 2020-03-12 2020-07-10 杭州趣维科技有限公司 一种gpu压缩纹理处理方法
CN113256784A (zh) * 2021-07-02 2021-08-13 武大吉奥信息技术有限公司 一种基于gpu进行超高效绘制gis空间三维体素数据的方法

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101826215B (zh) * 2010-04-19 2012-05-09 浙江大学 实时二级光线跟踪的并行渲染方法
CN101840565A (zh) * 2010-04-19 2010-09-22 浙江大学 一种基于gpu的八叉树并行构建方法
CN101826215A (zh) * 2010-04-19 2010-09-08 浙江大学 实时二级光线跟踪的并行渲染方法
CN101882307A (zh) * 2010-06-17 2010-11-10 广州市凡拓数码科技有限公司 一种超大像素效果图的制作方法
CN102074036B (zh) * 2010-12-07 2013-01-09 中国地质大学(武汉) 基于gpu加速的体数据动态剖切方法
CN102074036A (zh) * 2010-12-07 2011-05-25 中国地质大学(武汉) 基于gpu加速的体数据动态剖切方法
CN102096897B (zh) * 2011-03-17 2012-05-02 长沙景嘉微电子有限公司 基于分块渲染的gpu中块存储策略的实现
CN102096897A (zh) * 2011-03-17 2011-06-15 长沙景嘉微电子有限公司 基于分块渲染的gpu中块存储策略的实现
CN102289839A (zh) * 2011-08-04 2011-12-21 天津中科遥感信息技术有限公司 一种面向三维数字城市的高效多细节层次渲染方法
CN102831577A (zh) * 2012-08-29 2012-12-19 电子科技大学 基于gpu的二维地震图像的快速缩放方法
CN102831577B (zh) * 2012-08-29 2016-08-24 电子科技大学 基于gpu的二维地震图像的快速缩放方法
CN103136786A (zh) * 2013-02-06 2013-06-05 心医国际数字医疗系统(大连)有限公司 一种ct图快速生成三维视图的方法与系统
CN103136786B (zh) * 2013-02-06 2016-01-13 心医国际数字医疗系统(大连)有限公司 一种ct图快速生成三维视图的方法与系统
CN104751507B (zh) * 2013-12-31 2018-01-19 北界创想(北京)软件有限公司 图形内容渲染方法和装置
CN104751507A (zh) * 2013-12-31 2015-07-01 北界创想(北京)软件有限公司 图形内容渲染方法和装置
CN105528756A (zh) * 2014-10-20 2016-04-27 Arm有限公司 基于片的图形处理器及在其中执行图形处理的方法
CN105528756B (zh) * 2014-10-20 2020-11-20 Arm 有限公司 基于片的图形处理器及在其中执行图形处理的方法
CN104751494A (zh) * 2015-04-27 2015-07-01 国家电网公司 一种OpenGL超大纹理的处理和绘制方法
CN106384377B (zh) * 2016-09-22 2020-03-17 上海联影医疗科技有限公司 医学数据的体绘制方法和装置
CN106384377A (zh) * 2016-09-22 2017-02-08 上海联影医疗科技有限公司 医学数据的体绘制方法和装置
CN108805945A (zh) * 2017-05-02 2018-11-13 腾讯科技(深圳)有限公司 一种图像绘制方法及终端
CN108805945B (zh) * 2017-05-02 2019-10-18 腾讯科技(深圳)有限公司 一种图像绘制方法及终端
WO2018201993A1 (zh) * 2017-05-02 2018-11-08 腾讯科技(深圳)有限公司 图像绘制方法、终端及存储介质
CN108876889A (zh) * 2018-05-31 2018-11-23 浙江大学 一种原位体绘制方法
CN108876889B (zh) * 2018-05-31 2022-04-22 浙江大学 一种原位体绘制方法
CN110264543A (zh) * 2019-06-21 2019-09-20 苏州科达科技股份有限公司 拼接画面的边框绘制方法、装置及存储介质
CN111402380A (zh) * 2020-03-12 2020-07-10 杭州趣维科技有限公司 一种gpu压缩纹理处理方法
CN111402380B (zh) * 2020-03-12 2023-06-30 杭州小影创新科技股份有限公司 一种gpu压缩纹理处理方法
CN113256784A (zh) * 2021-07-02 2021-08-13 武大吉奥信息技术有限公司 一种基于gpu进行超高效绘制gis空间三维体素数据的方法

Similar Documents

Publication Publication Date Title
CN101604453A (zh) 基于分块策略的大规模数据场体绘制方法
US8188996B2 (en) Shallow bounding volume hierarchies for accelerated ray tracing
CN104427325B (zh) 快速集成图像生成方法及与用户交互的裸眼三维显示系统
CN104616345A (zh) 一种基于八叉树森林压缩的三维体素存取方法
JPH07120434B2 (ja) ボリュームレンダリングを行う方法及び装置
CN105405166A (zh) 一种基于线性四叉树的lod模型生成方法
CN109979002A (zh) 基于WebGL三维可视化的场景构建系统及方法
CN114820990B (zh) 一种基于数字孪生的流域防洪可视化方法及系统
CN106558092A (zh) 一种基于场景多方向体素化的多光源场景加速绘制方法
CN101853518B (zh) 基于各向异性体数据的错切变形体绘制方法
CN109636894A (zh) 一种基于像素点栅格化的动态三维热力计算方法及系统
CN105279788A (zh) 一种生成物体空间扫掠体的方法
CN109712225A (zh) 一种面对象的渲染方法、装置、设备及存储介质
Kaufman et al. A survey of architectures for volume rendering
US6369817B1 (en) Image synthesis system
CN103646418A (zh) 基于自动多阈值的多层着色体绘制方法
Mikhaylyuk et al. Memory-effective methods and algorithms of shader visualization of digital core material model
Seland et al. Real-time algebraic surface visualization
CN117152334B (zh) 一种基于电波、气象云图大数据实现的三维仿真模拟方法
Ma et al. Hierarchical octree and sub-volume texture block projection for GPU accelerated ray casting volume rendering
RU165127U1 (ru) Геометрограф носачёва
CN102592312B (zh) 基于平行空间的光线投射高度场可视化方法
KR930003811B1 (ko) 3차원도형 처리방법 및 그 장치
Yagel Classification and survey of algorithms for volume viewing
US20230394764A1 (en) Method and system for generating polygon meshes approximating surfaces using iteration for mesh vertex positions

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20091216