一种三维模型形状特征二叉树的构建方法

文档序号:6363882阅读:144来源:国知局
专利名称:一种三维模型形状特征二叉树的构建方法
技术领域
本发明属于三维模型检索技术领域,涉及一种三维模型形状特征二叉树 的构建方法,采用本方法可以对构建三维模型的特征二叉树,使用该特征二 叉树可以对三维模型进行累进相似性比较,获得相似性匹配的三维模型。
背景技术
随着三维技术的飞速发展,三维模型成为一种重要的信息资源,是信息 交流和生产设计的重要手段,例如,在工业产品的设计、虚拟现实、计算机 仿真、教育应用、三维游戏、影视动画等领域,三维模型都有着广泛地应用, 三维模型的数量也增加极快。如何在大量己有的大量三维模型资源中高效地 获取和重用已有的三维模型是一个亟需解决的重要问题。继文本、语音、图 像等多媒体信息检索之后,基于内容的三维模型检索近几年来成为信息检索 领域的一个非常有应用价值的应用领域。
计算三维模型的形状特征,通过比较三维模型之间的形状特征的相似性 来获得三维模型的相似性。有效地表征三维模型的形状特征的方法具有较好 的应用前景。目前存在一些三维模型形状特征的表征方法,例如将三维模型 投影到各个方向上的一个平面上,获得三维模型的投影图像,通过计算投影 图像的形状特征来获得三维模型的形状特征。本申请提出了一种新的三维模 型形状特征表征方法,该方法能够较好的表征三维模型的形状特征,并且具 有较好的准确性。

发明内容
本发明的目的在于提供一种三维模型形状特征二叉树的构建方法,该方 法设定三维模型是采用三角网格进行表示。 本发明方法的具体步骤是
步骤(1).计算三维模型M的每个三角片的面积&, / = 1,2,3...7V, iV为三 维模型的三角片数量,并计算M的总面积S:S&;计算M所有三角片的中心
坐标"dO ,按公式1计算M的中心O。,其坐标值为(x。^。,J ; x。jf(、xSJ/N, y。c=i>icxSi)/N , Z。c=i(ZicxSi)/N
i=l i=l i=l
步骤(2).以M的中心Q为三维坐标系的坐标原点,计算三维模型所有顶 点与《的距离,记与三维模型中心最大的距离为"_;对三维模型的所有顶点
的坐标(x,^,z,)变换为(x,./A^j,/A^,z,./A^);三维模型的每个三角片面积变 换为
步骤(3).如果M存在面积《、l/2000的三角片,那么这个三角片划分为6 个子三角片,划分的具体方法是三角片的三个顶点分别与三角形的中心相 连,其连线的延长线与对边相交,三角片内的所有连线与延长线将三角片划 分为6个子三角片;
如果划分后存在面积S"〉 1/2000的子三角片,那么采用相同的方法对这 个子三角片进行三角片划分,直到进行三角片划分后的三维模型的所有三角 片的面积都小于l/2000为止;设定进行三角片划分后的三维模型为M',计算M' 所有的三角片的中心点坐标,将三维模型M'的所有三角片的中心点和三角片 的顶点一起作为三维模型M'的采样点集合PP = ^ I p是M的三角片的顶点I尸是M的三角片的中心点j P中的采样点p到的距离称为顶点半径; 步骤(4).记丄(化化)是采样点集合P中的元素P到化的距离;P(^2)是如下
公式所示的集合<formula>formula see original document page 7</formula>
n 、 r^为大于零的实数
记半径为/"2球面为&2,把&球面按经纬线均匀划分,经度线的划分单位是 5° ,纬度线的划分单位是5。;划分后,&2球面被划分为一系列的经纬度网 格,设定所有经纬网格的权值为o,然后把p(^y的所有元素按极坐标方向映 射到球面&上面,并且投影后的每个经纬网格的权值等于p(n,w中映射到相
应经讳网格内的所有顶点半径的最大值;把带有权值&经纬度网格称为球面 投影图像i^C^,^;
步骤(5).设^和^x分别是三维模型M'的采样点集合的最小顶点半径和 最大顶点半径,把,r )作为二叉树T根结点的球面投影图像。
步骤(6).设二叉树r的某个结点K包含集合p(。,。,它的球面投影图像为
尸i 。(V2), l = (r1+r2)/2,把/^,^)划分为两个子集尸(^力和PO,G),把P(。力
作为J结点的左孩子结点的集合,把户(。&)作为/r结点的右孩子结点的集合,
分别计算K结点的左右孩子结点的球面投影图像i^O(^)和/^0(w);从根节 点开始,按步骤(5)进行递归集合划分。
步骤(7).对二叉树r的所有结点包含的球面投影图像计算球面调和特征
向量S/ffl ;球面调和特征向量Sffl)的计算如下列公式所示<formula>formula see original document page 7</formula>J J"sin(額e,氛"1 ^, 0)認0
(2w + l)(" —w)! 4;r(w +附)!
/f(cos(争'
1 )11 州1
—、|紐。,II' II做。,II , II做。,||, ,||甜。,II
其中,0是球面投影图像的经度数,^是球面投影图像的纬度数,"=1,2,3..., m = ±1,±2,±3…± " , if (x)是拉格朗日多项式。
二叉树T的每个结点的球面投影图像采用步骤(7)的方法计算Sffl),得到 三维模型M的特征二叉树。
本方法通过对三维模型采用一组同心球进行划分,得到不同部分在球面 上的投影图像,然后计算投影图像的球面调和特征向量。将这组同心球根据 划分的层次构建一颗保存了三维模型形状特征的二叉树,这样得到了三维模 型的形状特征二叉树。该特征二叉树可以对三维模型进行整体到局部的相似 性比较,具有较好的准确性。
具体实施例方式
一种三维模型形状特征二叉树的构建方法,该方法的具体步骤是 步骤(1).计算三维模型M的每个三角片的面积&, / = 1,2,3...7V, 7V为三
维模型的三角片数量,并计算M的总面积S:I^,.;计算M所有三角片的中心
坐标(&,^,,),按公式1计算M的中心O。,其坐标值为0^,厶,1);
x。c二:S(x,cXS,)/N, y。Cy,C/N , z。C、xS,)/N
步骤(2).以M的中心"为三维坐标系的坐标原点,计算三维模型所有顶 点与o。的距离,记与三维模型中心最大的距离为"_;对三维模型的所有顶点的坐标(;c,j,,z,.)变换为(v"皿j,/A^,V"J;三维模型的每个三角片面积变
步骤(3).如果M存在面积S,、l/2000的三角片,那么这个三角片划分为6
个子三角片,划分的具体方法是三角片的三个顶点分别与三角形的中心相 连,其连线的延长线与对边相交,三角片内的所有连线与延长线将三角片划 分为6个子三角片;
如果划分后存在面积S"〉 1/2000的子三角片,那么采用相同的方法对这 个子三角片进行三角片划分,直到进行三角片划分后的三维模型的所有三角 片的面积都小于l/2000为止;设定进行三角片划分后的三维模型为M',计算M' 所有的三角片的中心点坐标,将三维模型M'的所有三角片的中心点和三角片 的顶点一起作为三维模型M'的采样点集合P ;
P = ^ I p是M的三角片的顶点I P^M的三角片的中心点1 P中的采样点p到O。的距离称为顶点半径;
步骤(4).记i(化0。)是采样点集合P中的元素p到化的距离;Z^^)是如下
公式所示的集合
P(ri,r2) = {P I ri < "化。c) ^ r2,ri < q、 ^为大于零的实数 记半径为^球面为^2,把&球面按经纬线均匀划分,经度线的划分单位是
5° ,纬度线的划分单位是5。;划分后,&2球面被划分为一系列的经纬度网 格,设定所有经纬网格的权值为O,然后把P(^^)的所有元素按极坐标方向映
射到球面&上面,并且投影后的每个经纬网格的权值等于P(^^)中映射到相
应经纬网格内的所有顶点半径的最大值;把带有权值&经纬度网格称为球面投影图像P/ C^,^);
步骤(5).设^和rmax分别是三维模型M'的采样点集合的最小顶点半径和 最大顶点半径,把rao(rmn, rmax )作为二叉树r根结点的球面投影图像。
步骤(6).设二叉树r的某个结点K包含集合/^,w,它的球面投影图像为 /^0(>^2),设r—。+^)/2,把/^,6)划分为两个子集/^,r)和P0^2),把P(^r) 作为^结点的左孩子结点的集合,把/^,^作为^结点的右孩子结点的集合, 分别计算K结点的左右孩子结点的球面投影图像raC^力和raO(r^);从根节 点开始,按步骤(5)进行递归集合划分。在本方法中,递归次数为3。
步骤(7).对二叉树r的所有结点包含的球面投影图像计算球面调和特征 向量S/TO ;球面调和特征向量S/TO的计算如下列公式所示
m=— 2;r;r
紐 }
y: (6>, 0) = (2" + 1)("-(cos(争'一 " "\| 4;r(w + m)! "
,| h训2(A州i | |
、i紐,)ii,ii跟。,ii,ii甜0,ii, 'ii紐0,ir
其中,^是球面投影图像的经度数,^是球面投影图像的纬度数,w = l,2,3..., m = ±1,±2,±3…± " , if (jc)是拉格朗日多项式。 在本方法中,特征向量S/TO的w"0。
二叉树r的每个结点的球面投影图像采用步骤(7)的方法计算s/ro ,得到
三维模型M的特征二叉树。
权利要求
1.一种三维模型形状特征二叉树的构建方法,其特征在于该方法的具体步骤是步骤(1).计算三维模型M的每个三角片的面积Si,i=1,2,3…N,N为三维模型的三角片数量,并计算M的总面积<maths id="math0001" num="0001" ><math><![CDATA[ <mrow><mi>S</mi><mo>=</mo><munderover> <mi>&Sigma;</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mi>N</mi></munderover><msub> <mi>S</mi> <mi>i</mi></msub><mo>;</mo> </mrow>]]></math> id="icf0001" file="A2009101011610002C1.tif" wi="18" he="10" top= "64" left = "106" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>计算M所有三角片的中心坐标(xic,yic,zic),按公式1计算M的中心OC,其坐标值为(xoc,yoc,zoc);<maths id="math0002" num="0002" ><math><![CDATA[ <mrow><msub> <mi>x</mi> <mi>oc</mi></msub><mo>=</mo><munderover> <mi>&Sigma;</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mi>N</mi></munderover><mrow> <mo>(</mo> <msub><mi>x</mi><mi>ic</mi> </msub> <mo>&times;</mo> <msub><mi>S</mi><mi>i</mi> </msub> <mo>)</mo></mrow><mo>/</mo><mi>N</mi><mo>,</mo> </mrow>]]></math> id="icf0002" file="A2009101011610002C2.tif" wi="40" he="10" top= "92" left = "20" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths><maths id="math0003" num="0003" ><math><![CDATA[ <mrow><msub> <mi>y</mi> <mi>oc</mi></msub><mo>=</mo><munderover> <mi>&Sigma;</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mi>N</mi></munderover><mrow> <mo>(</mo> <msub><mi>y</mi><mi>ic</mi> </msub> <mo>&times;</mo> <msub><mi>S</mi><mi>i</mi> </msub> <mo>)</mo></mrow><mo>/</mo><mi>N</mi><mo>,</mo> </mrow>]]></math> id="icf0003" file="A2009101011610002C3.tif" wi="41" he="10" top= "92" left = "69" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths><maths id="math0004" num="0004" ><math><![CDATA[ <mrow><msub> <mi>z</mi> <mi>oc</mi></msub><mo>=</mo><munderover> <mi>&Sigma;</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mi>N</mi></munderover><mrow> <mo>(</mo> <msub><mi>z</mi><mi>ic</mi> </msub> <mo>&times;</mo> <msub><mi>S</mi><mi>i</mi> </msub> <mo>)</mo></mrow><mo>/</mo><mi>N</mi> </mrow>]]></math> id="icf0004" file="A2009101011610002C4.tif" wi="35" he="10" top= "92" left = "120" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>步骤(2).以M的中心Oc为三维坐标系的坐标原点,计算三维模型所有顶点与Oc的距离,记与三维模型中心最大的距离为Dmax;对三维模型的所有顶点的坐标(xi,yi,zi)变换为(xi/Dmax,yi/Dmax,zi/Dmax);三维模型的每个三角片面积变换为S′i=Si/Dmax;步骤(3).如果M存在面积S′i>1/2000的三角片,那么这个三角片划分为6个子三角片,划分的具体方法是三角片的三个顶点分别与三角形的中心相连,其连线的延长线与对边相交,三角片内的所有连线与延长线将三角片划分为6个子三角片;如果划分后存在面积S″>1/2000的子三角片,那么采用相同的方法对这个子三角片进行三角片划分,直到进行三角片划分后的三维模型的所有三角片的面积都小于1/2000为止;设定进行三角片划分后的三维模型为M′,计算M′所有的三角片的中心点坐标,将三维模型M′的所有三角片的中心点和三角片的顶点一起作为三维模型M′的采样点集合P;P={p|p是M的三角片的顶点|P是M的三角片的中心点}P中的采样点p到Oc的距离称为顶点半径;步骤(4).记L(p,Oc)是采样点集合P中的元素p到Oc的距离;P(r1,r2)是如下公式所示的集合P(r1,r2)={p|r1<L(p,Oc)≤r2,r1<r2},r1、r2为大于零的实数记半径为r2球面为Sr2,把Sr2球面按经纬线均匀划分,经度线的划分单位是5°,纬度线的划分单位是5°;划分后,Sr2球面被划分为一系列的经纬度网格,设定所有经纬网格的权值为0,然后把P(r1,r2)的所有元素按极坐标方向映射到球面Sr2上面,并且投影后的每个经纬网格的权值等于P(r1,r2)中映射到相应经纬网格内的所有顶点半径的最大值;把带有权值Sr2经纬度网格称为球面投影图像PRO(r1,r2);步骤(5).设rmin和rmax分别是三维模型M′的采样点集合的最小顶点半径和最大顶点半径,把PRO(rmin,rmax)作为二叉树T根结点的球面投影图像;步骤(6).设二叉树T的某个结点K包含集合P(r1,r2),它的球面投影图像为PRO(r1,r2),设r=(r1+r2)/2,把P(r1,r2)划分为两个子集P(r1,r)和P(r,r2),把P(r1,r)作为K结点的左孩子结点的集合,把P(r,r2)作为K结点的右孩子结点的集合,分别计算K结点的左右孩子结点的球面投影图像PRO(r1,r)和PRO(r,r2);从根节点开始,按步骤(5)进行递归集合划分;步骤(7).对二叉树T的所有结点包含的球面投影图像计算球面调和特征向量SHD;球面调和特征向量SHD的计算如下列公式所示<maths id="math0005" num="0005" ><math><![CDATA[ <mrow><msub> <mi>SH</mi> <mi>n</mi></msub><mrow> <mo>(</mo> <mi>&theta;</mi> <mo>,</mo> <mi>&phi;</mi> <mo>)</mo></mrow><mo>=</mo><munderover> <mi>&Sigma;</mi> <mrow><mi>m</mi><mo>=</mo><mo>-</mo><mi>n</mi> </mrow> <mi>n</mi></munderover><msub> <mi>a</mi> <mrow><mi>n</mi><mo>,</mo><mi>m</mi> </mrow></msub><msubsup> <mi>Y</mi> <mi>n</mi> <mi>m</mi></msubsup><mrow> <mo>(</mo> <mi>&theta;</mi> <mo>,</mo> <mi>&phi;</mi> <mo>)</mo></mrow> </mrow>]]></math></maths>其中<maths id="math0006" num="0006" ><math><![CDATA[ <mrow><msub> <mi>a</mi> <mrow><mi>n</mi><mo>,</mo><mi>m</mi> </mrow></msub><mo>=</mo><munderover> <mo>&Integral;</mo> <mn>0</mn> <mrow><mn>2</mn><mi>&pi;</mi> </mrow></munderover><munderover> <mo>&Integral;</mo> <mn>0</mn> <mi>&pi;</mi></munderover><mi>sin</mi><mrow> <mo>(</mo> <mi>&theta;</mi> <mo>)</mo></mrow><mi>f</mi><mrow> <mo>(</mo> <mi>&theta;</mi> <mo>,</mo> <mi>&phi;</mi> <mo>)</mo></mrow><msubsup> <mi>Y</mi> <mi>n</mi> <mi>m</mi></msubsup><mrow> <mo>(</mo> <mi>&theta;</mi> <mo>,</mo> <mi>&phi;</mi> <mo>)</mo></mrow><mi>d&theta;d&phi;</mi> </mrow>]]></math> id="icf0006" file="A2009101011610004C1.tif" wi="62" he="11" top= "29" left = "29" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths><maths id="math0007" num="0007" ><math><![CDATA[ <mrow><msubsup> <mi>Y</mi> <mi>n</mi> <mi>m</mi></msubsup><mrow> <mo>(</mo> <mi>&theta;</mi> <mo>,</mo> <mi>&phi;</mi> <mo>)</mo></mrow><mo>=</mo><msqrt> <mfrac><mrow> <mrow><mo>(</mo><mn>2</mn><mi>n</mi><mo>+</mo><mn>1</mn><mo>)</mo> </mrow> <mrow><mo>(</mo><mi>n</mi><mo>-</mo><mi>m</mi><mo>)</mo> </mrow> <mo>!</mo></mrow><mrow> <mn>4</mn> <mi>&pi;</mi> <mrow><mo>(</mo><mi>n</mi><mo>+</mo><mi>m</mi><mo>)</mo> </mrow> <mo>!</mo></mrow> </mfrac></msqrt><msubsup> <mi>P</mi> <mi>n</mi> <mi>m</mi></msubsup><mrow> <mo>(</mo> <mi>cos</mi> <mrow><mo>(</mo><mi>&theta;</mi><mo>)</mo> </mrow> <mo>)</mo></mrow><msup> <mi>e</mi> <mi>im&phi;</mi></msup> </mrow>]]></math></maths><maths id="math0008" num="0008" ><math><![CDATA[ <mrow><mi>SHD</mi><mo>=</mo><mo>{</mo><mfrac> <mrow><mo>|</mo><mo>|</mo><msub> <mi>SH</mi> <mn>1</mn></msub><mrow> <mo>(</mo> <mi>&theta;</mi> <mo>,</mo> <mi>&phi;</mi> <mo>)</mo></mrow><mo>|</mo><mo>|</mo> </mrow> <mrow><mo>|</mo><mo>|</mo><msub> <mi>SH</mi> <mn>0</mn></msub><mrow> <mo>(</mo> <mi>&theta;</mi> <mo>,</mo> <mi>&phi;</mi> <mo>)</mo></mrow><mo>|</mo><mo>|</mo> </mrow></mfrac><mo>,</mo><mfrac> <mrow><mo>|</mo><mo>|</mo><msub> <mi>SH</mi> <mn>2</mn></msub><mrow> <mo>(</mo> <mi>&theta;</mi> <mo>,</mo> <mi>&phi;</mi> <mo>)</mo></mrow><mo>|</mo><mo>|</mo> </mrow> <mrow><mo>|</mo><mo>|</mo><msub> <mi>SH</mi> <mn>0</mn></msub><mrow> <mo>(</mo> <mi>&theta;</mi> <mo>,</mo> <mi>&phi;</mi> <mo>)</mo></mrow><mo>|</mo><mo>|</mo> </mrow></mfrac><mo>,</mo><mfrac> <mrow><mo>|</mo><mo>|</mo><msub> <mi>SH</mi> <mn>3</mn></msub><mrow> <mo>(</mo> <mi>&theta;</mi> <mo>,</mo> <mi>&phi;</mi> <mo>)</mo></mrow><mo>|</mo><mo>|</mo> </mrow> <mrow><mo>|</mo><mo>|</mo><msub> <mi>SH</mi> <mn>0</mn></msub><mrow> <mo>(</mo> <mi>&theta;</mi> <mo>,</mo> <mi>&phi;</mi> <mo>)</mo></mrow><mo>|</mo><mo>|</mo> </mrow></mfrac><mo>,</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>,</mo><mfrac> <mrow><mo>|</mo><mo>|</mo><msub> <mi>SH</mi> <mi>n</mi></msub><mrow> <mo>(</mo> <mi>&theta;</mi> <mo>,</mo> <mi>&phi;</mi> <mo>)</mo></mrow><mo>|</mo><mo>|</mo> </mrow> <mrow><mo>|</mo><mo>|</mo><msub> <mi>SH</mi> <mn>0</mn></msub><mrow> <mo>(</mo> <mi>&theta;</mi> <mo>,</mo> <mi>&phi;</mi> <mo>)</mo></mrow><mo>|</mo><mo>|</mo> </mrow></mfrac><mo>}</mo> </mrow>]]></math></maths>其中,θ是球面投影图像的经度数,φ是球面投影图像的纬度数,n=1,2,3…,m=±1,±2,±3…±n,Pnm(x)是拉格朗日多项式;二叉树T的每个结点的球面投影图像采用步骤(7)的方法计算SHD,得到三维模型M的特征二叉树。
全文摘要
本发明一种三维模型形状特征二叉树的构建方法,现有的三维模型形状特征计算方法主要是将三维模型投影到各个方向上的一个平面上,获得三维模型的投影图像,通过计算投影图像的形状特征来获得三维模型的形状特征。本发明方法的具体步骤是首先计算三维模型M的每个三角片的面积及总面积并计算三维模型所有顶点与中心的距离,对三维模型进行比例变化。其次划分三角片,映射所有元素到球面,把PRO(r<sub>min</sub>,r<sub>max</sub>)作为二叉树T根结点的球面投影图像。再次分别计算K结点的左右孩子结点的球面投影图像PRO(r<sub>1</sub>,r)和PRO(r,r<sub>2</sub>)。最后对二叉树T的所有结点包含的球面投影图像计算球面调和特征向量,得到三维模型M的特征二叉树。本发明可以对三维模型进行整体到局部的相似性比较,具有较好的准确性。
文档编号G06F17/30GK101609563SQ20091010116
公开日2009年12月23日 申请日期2009年7月27日 优先权日2009年7月27日
发明者云 凌, 杨柏林, 勋 王, 章志勇 申请人:浙江工商大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1