一种三维网格模型表面显著性的度量方法 【技术领域】
本发明涉及一种网格模型特征表示方法,具体是涉及一种三维网格模型表面显著性的度量方法。
背景技术
随着计算机软硬件的发展,三维网格模型在多个领域中得到了广泛的应用,已经成为了继图像、声音和视频之后的第四种多媒体数据。因此,对三维网格模型数据的分析处理成为了近年来研究领域和工业界的一个热点课题之一。在传统的图像分析处理技术中,检测出图像中的显著区域是一项重要的技术,但在三维网格模型的分析处理技术中,类似的显著性检测技术目前还较为缺乏,主要的显著性度量方法是基于曲率。但是基于曲率的显著性检测技术存在着如下的两个缺点:首先,曲率本身是定义在一个连续光滑的曲面上的,但是,三维网格模型只是对光滑曲面的一种近似,在实际应用中其误差往往较大;其次,曲率是一种极限情况下得到的结果,因此,为了计算三维模型表面某点的曲率,往往只是考虑该点一个极小邻域内几何性质,这导致的结果是曲率对噪声非常敏感。因此,提出一种新的能够刻画三维网格模型表面显著性、且对噪声具有鲁棒性的度量方法是非常必要的。
【发明内容】
发明目的:本发明的目的是为了解决现有技术的不足,提供一种三维网格模型表面显著性的度量方法。
技术方案:为了实现以上目的,本发明所述的一种三维网格模型表面显著性的度量方法,该方法包含步骤如下:
(1)计算出三维网格模型表面每一个面片f∈F的法向量;
(2)计算出三维网格模型表面每一个顶点v∈V的法向量;
(3)依据设置的参数R,搜索顶点v的R环邻居,得到R环邻居表示集合N;其中参数R任意设定。
(4)对集合N中的每一个顶点v’,通过计算,得到顶点v和v’之间的相对局部高度的集合S;
(5)对集合S中的元素进行遍历,求出S中大于0的元素个数n1和它们的总和s1,小于0的元素个数n2和它们的总和s2,利用如下公式计算出顶点v的显著性LR(v)
LR(v)=-8CR(v)2·(s1n1+s2n2)]]>
其中CR(v)2表示与集合N中的顶点有关联关系的面片的面积之和。假设顶点v构成的R-邻居集合为Nv,与该集合中的顶点有关联的面片集合为F(如果某个顶点a是构成某个面片f的顶点之一,则称a与面片f有关联),计算集合F中所有面片的面积之和就是CR(v)2。
步骤(1)中面片法向量的计算公式为:
n→f=i→j→k→axayazbxbybz]]>
其中向量(ax,ay,az)和向量(bx,by,bz)分别表示面片f上的两个不平行的向量,i、j、k是坐标向量的表示符号。
步骤(2)中顶点的法向量由其相邻的面片的法向量的面积加权和来表示,计算公式如下:
n→v=1Σf∈F(v)S(f)Σf∈F(v)n→f·S(f)]]>
步骤(3)中R环邻居是指通过广度优先的算法对顶点v周围的邻居进行搜索得到的位于R层和R以内的顶点地集合;该R环邻居表示为N={v1,v2,...,vt},其中t为集合中顶点的总个数。
步骤(4)中顶点v和v’之间的相对局部高度的计算公式为:
RHv(v′)=cosα·|vv′→|=n→v·vv′→|n→v|·|vv′→|·|vv′→|=n→v·vv′→,]]>
其中α表示法向量与向量之间的夹角。
经过计算,对应于集合N中的每一个顶点都对应有一个实数值,与集合N中元素相对应的实数值构成的集合为S={r1,r2,...,rt},其中ri表示v与集合N中的vi使用上述公式得到的局部高度值。
有益效果:本发明提供的一种三维网格模型表面显著性的度量方法,与现有技术相比具有以下优点:由于本发明的显著性是定义在一个较大的区域,因此与曲率相比有更好的鲁棒性,该区域的大小由参数R决定,R值越大,考虑的区域越大,对噪声的鲁棒性也越好。
【附图说明】
图1为本发明整体结构图;
图2为本发明的具体流程图。
具体实施方式:
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
图1给出了本发明的整体结构图。整个显著性的计算方法包括两大部分:预计算部分和显著性计算部分。后一部分为本发明的主体部分。前一部分为预计算部分,主要是完成两个工作,即计算三维模型表面每一个面片的法向量和每一个顶点的法向量。其中计算面片的法向量使用如下的公式:
n→f=i→j→k→axayazbxbybz,]]>
其中,向量(ax,ay,az)和向量(bx,by,bz)分别表示面片f上的两个不平行的向量。
顶点的法向量则由该顶点所关联的面片的法向量的面积加权和所决定,由如下的公式所示:
n→v=1Σf∈F(v)S(f)Σf∈F(v)n→f·S(f)]]>
在该式子中,F(v)为与顶点v相邻的面片,S(f)表示面片f的面积。
图2给出了本发明在预计算之后,计算三维模型表面某个顶点v的显著性的流程图,具体步骤如下:步骤11依据所设置的参数R,搜索顶点v的R环邻居集合N={v1,v2,...,vt}。步骤12设置四个变量s1,n1,s2,n2,初值都设为0,这些变量分别用于存储两种类型相对局部高度的和与个数。步骤13设置计数器i用于对集合N中的元素进行遍历,初值设置为1。步骤14判断i是否小于等于集合N的元素个数,如果是,执行步骤15,否则执行步骤16。步骤15计算v’与集合N中第i个元素v’之间的相对高度h,公式如下所示:
h=RHv(v′)=cosα·|vv′→|=n→v·vv′→|n→v|·|vv′→|·|vv′→|=n→v·vv′→.]]>
步骤17根据h的取值选择下一步骤,当h大于0时执行步骤18,否则执行步骤19。步骤18将h的值加到s1,并将n1自增1,而步骤19则将h加到s2上,并将n2自增1。之后无论是步骤18还是19均执行步骤20将计数器i自增1。然后步骤20跳转到步骤14。步骤16利用下面的公式计算得到最后顶点v的显著性,从而完成整个计算过程: