一种异质体素的编码方法
【专利摘要】本发明公开了一种异质体素的编码方法,该编码方法根据体素中各个角点的材质对体素进行编码,先赋予每种材质固定编号,再根据体素中角点的材质对每个角点对应的固定编号转化为相对编号,采用二进制数按顺序表示所有角点的相对编号即得到该体素的类型编码。本发明编码方法可以对具有多种(两种或两种以上)材质的体素进行编码,且该编码方法提可大大减少了材质分布情况中的对称情况,使得预制查找表成为可能,适用范围广,不仅适用于编制异质四面体、异质六面体体素的编码,还适用于三棱柱体素的编码。
【专利说明】一种异质体素的编码方法
【技术领域】
[0001]本发明涉及计算机图形学三维重建领域,具体涉及一种用于异质体素的编码方法。
【背景技术】
[0002]对于三维标量场体数据或者隐函数,等值面是指其标量值或函数值为某一常数的点的集合。通过选择不同的标量值或者函数值,可以得到不同的等值面,从而有助于可视化和分析相关的体数据和隐函数曲面。因此,等值面提取是三维标量场数据可视化、隐函数曲面显示、三维曲面重建等应用中的基础问题。基于体素的等值面重建是可视化研究的重要分支,近年来取得了重大发展并得到了广泛应用。
[0003]不同的应用领域有不同的数据来源:在医学图像领域,人们通过如计算机断层扫描(Computed Tomography, CT)、核磁共振成像(Magnetic Resonance Imaging, MRI)及超声(Ul-asonography, US)等设备扫描人体,获得人体密度场;在矿藏勘探中,人们利用天然地震波或人工爆炸产生的声波获取地下岩层密度信息;在航天工业,科学家记录如温度等飞行器的表面物理特征值;此外还有其他领域或者仿真实验产生的诸如温度场、流场等数据集。体数据实质上是一组空间位置各不相同的采样值的集合。
[0004]等值面重建算法视体数据为一组四面体体素或者六面体体素的集合。对于三维标量场体数据,通常是由离散体素单元集合描述;对隐函数进行空间采样,生成基本体素单元;然后在基本体素单元内用线性三角面片逼近等值面。在等值面重建过程中,重建算法依次处理所有体素:判断体素是否含有等值面块,如果当前体素包含等值面块,则提取用于重建等值面。当体数据仅涉及2类材质时,体素的材质分布类型数目是2的幂次方个,幂的值等于体素角点数目。由于四面体体素和六面体体素的角点数目分别是4和8,经典的等值面提取算法:marching tetrahedra算法(移动四面体法,mt算法)和marching cubes算法(移动立方体算法,me算法)都需要预先制定了查找表,表中提供了针对每种材质分布情况的等值面块生成结果。
[0005]但是,当体数据涉及多类材质时,体素的材质分布类型数目将是材质数目的幂次方个,幂的值等于体素角点数目。因此,当材质分布类型数目将过于巨大以致难以按照mt或者me算法的方式预制查找表,即mt算法和me算法受到体素材质的限制,不能够直接用于多材质(对于2种材质)的体素重建。
【发明内容】
[0006]针对现有技术的局限性,本发明提供了一种异质体素的编码方法。
[0007]—种异质体素的编码方法,包括:(1)赋予采样空间中每类材质的属性值区间一个固定编号;
[0008](2)针对所述采样空间的任意一个体素,根据该体素中各个角点的属性值确定各个角点的材质以及该材质对应的固定编号,并按照一定的顺序将各个角点的材质对应的固定编号排列形成该体素的固定元组;
[0009](3)以各个固定编号在固定元组中首次出现的次序作为该固定编号的相对编号,用相对编号替换所述固定元组中相应的固定编号,得到该体素的相对元组;
[0010](4)采用若干位二进制数表示每个相对编号,并根据该体素的角点个数,确定用于记录所述相对元组的数据类型;
[0011](5)采用所述的数据类型表示所述的相对元组得到该体素的类型编码。
[0012]根据离散采样点之间的位置关系,体数据可分为结构化、非结构化和混合形等三类。体数据中相邻的若干个采样点构成一个体素。体数据对应的采样空间可被视为一组互不相交的体素的集合。本发明针对异质体素提出,即构成该体素的角点涉及2种或者2种以上的材质,该编码方法中根据体素中各个角点的材质进行编码最终得到各个体素的类型编码,该类型编码携带有该体素的材质信息。该方法能够用于具有2种以上材质的异质体素的编码。在同一采样空间的所有体素的类型编码过程中,每类材质的固定编码保持不变,而相对编码则在不同体素编码过程中可能不变,主要取决于每个异质体素中各个角点的材质。
[0013]异质体素涉及多类材质,因此异质体素的类型编码方法无法像传统的体素类型编码方法一样使用I个二进制位表示材质类型。由于在实际工程应用中,体数据涉及的材质数目一般不超过6种,而且一个角点数目为η (4^η^ 16)的体素,最多涉及η种材质,因此4个二进制位足以记录一个异质体素角点的相对材质编号。
[0014]由于本发明 所述的异质体素类型编码的编制取决于材质在构成当前体素的角点序列中首次出现的次序。依据本发明,对于任意两个体素来说,只要体素各个角点的材质分布模式相同,那么这两个体素的类型编码将是相同的,该特性使得异质体素的类型能够被本发明以相对较少的类型编码枚举,使得预制查找表成为可能。对于四面体网格来说,当其仅涉及2 (或4)类材质时,其对应的类型编码将从16 (或256)种减少到8 (或15)种。对于六面体网格来说,当其仅涉及2 (或8)类材质时,其对应的类型编码将从256 (或16777216)种减少到128 (或4140)种。
[0015]本发明可用于对异质体素进行类型编码,反过来还可以根据异质体素的类型编码实例化出对应的体素,根根据相同的类型编码实例化出来的体素之间,即使对应角点材质不同,体素内部各材质之间的分隔方式是一样的,通过实例化体素的类型编码,并供异质物体重建算法处理,可判断异质物体重建算法的正确性与有效性。
[0016]所述的体素为异质四面体体素或异质六面体体素。
[0017]本发明的的编码方法仅适用于对所有体素类型单一的采样空间进行类型编码。该编码方法依据体素的角点材质有关,与该采样空间中体素的形状(类型)无关,因此使用范围广,实际上,本发明的方法不仅适用于编制异质四面体、异质六面体体素的编码,还天然地适用于编制三棱柱体素的编码。
[0018]所述步骤(2 )中所述采样空间的所有体素均按照相同的顺序排列各个角点固定编号形成固定元组。
[0019]所述步骤(2)中的顺序是指体素中不同高度的角点之间按照先低后高、相同高度的角点之间按照逆时针的原则遍历角点的顺序。在对同一采样空间进行类型编码时,必须保证所有体素的编码过程中形成元组时的顺序相同。当采样空间中所有体素均为四面体体素时,与材质相关的体素编码方法的角点遍历顺序满足以下条件:由前三个角点构成的三角面片的法向量指向四面体内部。当采样空间中所有体素均为六面体体素时,以六面体的左下前角点为起始角点,按照先底层再顶层的按照逆时针顺序遍历8个角点。
[0020]所述步骤(3)中固定元组中第一个固定编号对应的相对编号为I。
[0021 ] 固定编号对应的相对编号是按照一定顺序遍历角点时该固定编号对应的材质的首次出现次序,由于固定元组中第一个固定编号对应的材质必是遍历角点时首次出现的材质,所以其相对编号必为I。对于固定元组中的第二个固定编号,如果其固定材质编号与起始角点的固定材质编号相同,则其相对材质编号亦为I ;否则其相对材质编号的值应置为前序已生成相对材质编号中的最大值加1,后续角点处材质的相对编号需要依次判断其固定编号是否与前面已经得到相对编号的角点的材质是否相同,然后以此类推,得到对固定兀组中的所有固定编号对应的相对编号。
[0022]所述步骤(4)中采用四位二进制数表示相对元组中的各个相对编号。
[0023]异质体素涉及多类材质,因此异质体素的类型编码方法无法像传统的体素类型编码方法一样使用I个二进制位表示材质类型。由于在实际工程应用中,体数据涉及的材质数目一般不超过6种,而且一个角点数目为η (4^η^ 16)的体素,最多涉及η种材质,因此4个二进制位足以记录一个异质体素角点的相对材质编号。
[0024]所述步骤(4)中根据以下方法确定用于记录该体素的相对元组的数据类型:
[0025](4-1)根据该体素中角点的个数和每个相对编号对应的二进制的位数,确定表示所述相对元组中所需的总位数;
[0026](4-2)根据所述的总位数从四种`数据类型中选择任意一个位数大于所述总位数的数据类型记录所述相对元组,所述的四种数据类型分别为16位无符号整型数据、32位无符号整型数据、64位无符号整型数据和128位无符号整型数据。
[0027]作为优选,所述步骤(4-2)中从四种数据类型中选择位数大于所述总位数且位数最小的数据类型记录所述相对元组。
[0028]该体素中角点的个数乘以每个相对编号对应的二进制的位数即为表示所述相对元组中所需二进制数的总位数。当位数不足时,小的肯定是不能完整记录整个相对元组的,因此只能去大于总位数的数据类型。且选择能够记录完整相对元组的数据类型中位数最小的数据类型,能够有效减小存储空间,尤其是对于包含多个体素的空间结构时,更具优势。因此,记录四边形、四面体和六面体的编码的数据类型分别是16位无符号整型、16位无符号整型和32位无符号整型。当所选择的数据类型数据长度大于类型编码实际所需位数时,高位补O。用于记录体素类型编码的数据类型的实用位数中的高4位记录起始角点的相对材质编号,最低4位记录最后一个角点的相对材质编号。
[0029]所述编码方法还包括采用十六进制数表示所述的类型编码得到十六进制的类型编码。
[0030]由于在实际工程应用中,体数据涉及的材质数目一般不超过6种,因此本发明使用4个二进制位记录一个异质体素角点的相对材质编号。通过将各个角点的用4个二进制位表示的相对编号转化为一个等值的十六进制数便可生成对应体素的十六进制的类型编码。与二进制类型编码相比,十六进制的类型编码更加直观。
[0031]本发明的异质体素的编码方法中根据体素中各个角点的材质进行编码得到携带有该体素的材质信息的类型编码,该编码方法可以对具有多种(两种或两种以上)材质的体素进行编码得到该体素的类型编码。该编码方法提可大大减少了材质分布情况中的对称情况,即在保证能够枚举所有等值面块生成的情况下大大减少材质分布情况,使得预制查找表成为可能,且适用范围广,不仅适用于编制异质四面体、异质六面体体素的编码,还天然地适用于编制三棱柱体素的编码。进一步对通过该编码方法得到的体素的类型编码进行实例化处理,可用于向异质物体重建算法提供异质体素,用于检验异质物体重建算法的正确性。
【具体实施方式】
[0032]下面将结合具体实施例对本发明进行详细说明。
[0033]本实施例的编码方法所针对的采样空间中包括3种材质,对应的属性值区间分别为(10,35]、(35,60]和(60,255]。
[0034]本实施例的异质体素的编码方法,包括:
[0035](I)赋予采样空间中每类材质的属性值区间一个固定编号,其中属性值位于(10,35]区间的材质的固定编号为0,属性值位于(35,60]区间的材质的固定编号为1,属性值位于(60,255]区间的材质的固定编号为2。
[0036](2)针对所述采样空间的任意一个体素,根据该体素中各个角点的属性值确定各个角点的材质以及该材质对应的固定编号,并按照一定的顺序将各个角点的材质对应的固定编号排列形成该体素的固定元组。
[0037]本实施例中以异质四面体体素为例进行详细说明,该异质四面体体素的各个角点的材质属性值分别为20、110、50和20,即各个角点的材质的固定编号分别为0、2、1和0,以该异质四面体体素的左下角的角点为起始点,按照逆时针方向,从下至上将该四面体体素中的各个角点对应的固定编号排列起来,形成该四面体体素的固定元组,具体为(0,2,1,O)。
[0038](3)以各个固定编号在固定元组中首次出现的次序作为该固定编号的相对编号,用相对编号替换固定元组中相应的固定编号,得到该体素的相对元组。
[0039]该体素为异质四面体体素或异质六面体体素。本实施例中该异质四面体体素的固定元组中的各个固定编号对应的相对编码分别为1、2、3、I。
[0040](4)采用4位二进制数表示每个相对编号,并根据该体素的角点个数,确定用于记录所述相对元组的数据类型,具体如下:
[0041](4-1)根据该体素中角点的个数和每个相对编号对应的二进制的位数,确定表示该相对元组所需的二进制数的总位数;
[0042](4-2)从四种数据类型中选择位数大于所述总位数且位数最小的数据类型记录所述相对元组,其中四种数据类型分别为16位无符号整型数据、32位无符号整型数据、64位无符号整型数据和128位无符号整型数据。
[0043]正六面体体素中有八个角点,对应的相对元组中包括八个相对编号,因此表示该相对元组一共需要32位二进制数,可以直接采用32位无符号整型数据记录该相对元组。
[0044](5)采用32位无符号整型数据表示所述的相对元组得到该体素的类型编码。
[0045]本实施例中为异质四面体体素,因此该体素的角点个数为4,表示该相对元组所需的二进制数的总位数为16位二进制数,则采用16位无符号整型数据表示该相对元组,进而得到该异质四面体体素的类型编码,具体为:0001001000110001 (二进制)。
[0046](6)用十六进制数表示该类型编码得到该体素的十六进制的类型编码,十六进制的类型编码为0x1231 (Ox表示十六进制)。
[0047]以上所述仅为本发明的优选实施方式,本发明的保护范围并不仅限于上述实施方式,凡是属于本发明原理的技术方案均属于本发明的保护范围。对于本领域的技术人员而言,在不脱离本发明的原理的前提下进行的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种异质体素的编码方法,其特征在于,包括: (1)赋予采样空间中每类材质的属性值区间一个固定编号; (2)针对所述采样空间的任意一个体素,根据该体素中各个角点的属性值确定各个角点的材质以及该材质对应的固定编号,并按照一定的顺序将各个角点的材质对应的固定编号排列形成该体素的固定元组; (3)以各个固定编号在固定元组中首次出现的次序作为该固定编号的相对编号,用相对编号替换所述固定元组中相应的固定编号,得到该体素的相对元组; (4)采用若干位二进制数表示每个相对编号,并根据该体素的角点个数,确定用于记录所述相对元组的数据类型; (5)采用所述的数据类型表示所述的相对元组得到该体素的类型编码。
2.如权利要求1所述的用于异质体素剖分的编码方法,其特征在于,所述的体素为异质四面体体素或异质六面体体素。
3.如权利要求2所述的用于异质体素剖分的编码方法,其特征在于,所述步骤(2)中所述采样空间的所有体素均按照相同的顺序排列各个角点的固定编号形成固定元组。
4.如权利要求3所述的用于异质体素剖分的编码方法,其特征在于,所述步骤(3)中固定兀组中第一个固定编号对应的相对编号为I。
5.如权利要求4所述的用于异质体素剖分的编码方法,其特征在于,所述步骤(4)中采用四位二进制数表示相对元组中的各个相对编号。
6.如权利要求5所述的用于异质体素剖分的编码方法,其特征在于,所述步骤(4)中根据以下方法确定用于记录该体素的相对元组的数据类型: (4-1)根据该体素中角点的个数和每个相对编号对应的二进制的位数,确定表示所述相对元组中所需的总位数; (4-2)根据所述的总位数从四种数据类型中选择任意一个位数大于所述总位数的数据类型记录所述相对元组,所述的四种数据类型分别为16位无符号整型数据、32位无符号整型数据、64位无符号整型数据和128位无符号整型数据。
7.如权利要求6所述的用于异质体素剖分的编码方法,其特征在于,所述步骤(4-2)中从四种数据类型中选择位数大于所述总位数且位数最小的数据类型记录所述相对元组。
8.如权利要求7所述的用于异质体素剖分的编码方法,其特征在于,所述编码方法还包括采用十六进制数表示所述的类型编码得到十六进制的类型编码。
【文档编号】G06T17/00GK103886626SQ201410079552
【公开日】2014年6月25日 申请日期:2014年3月6日 优先权日:2014年3月6日
【发明者】冯结青, 王明 申请人:浙江大学