基于距离场的网格模型骨架提取

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于距离场的网格模型骨架提取

缪永伟;陈程

【摘要】作为三维模型的一维表示方式,曲线骨架在计算机视觉和可视化应用中扮演着重要角色.为有效地从网格模型中提取高质量骨架,提出了一种新的基于距离场的骨架提取方法.首先,用户对输入的三维模型进行最小包围盒计算,并将该空间按照一定精度划分成一个个小立方块空间;其次,对每个小立方块空间进行判定,剔除模型外部立方块并计算内部立方块的距离值,完成模型体素化;接着,对每块体素进行距离值局部最大求解,完成对体素的初步选取;然后,对选取的体素迭代进行最大内切球约束去除冗余体素得到骨架点;最后,对选择的骨架点按照一定的规则进行有序连接形成骨架.实验结果表明:该方法能准确地提取质量较好的三维模型骨架.

【期刊名称】《浙江工业大学学报》

【年(卷),期】2019(047)004

【总页数】8页(P417-424)

【关键词】曲线骨架;距离场;包围盒;体素;最大内切球

【作者】缪永伟;陈程

【作者单位】浙江工业大学计算机科学与技术学院,浙江杭州 310023;浙江工业大学计算机科学与技术学院,浙江杭州 310023

【正文语种】中文

【中图分类】TP311

3D模型在计算机辅助设计、计算机图形学和科学可视化等领域中扮演重要角色。作为重要研究对象,3D模型被广泛应用,包括三维模型特征提取[1]、孔洞修复[2]、模型重建[3]和遥感等。传统计算机图形学中的三维形状表示方法一般表示的

是模型表面信息,并不描述模型内部结构和模型拓扑信息[4-5]。而模型的三维表

示是“昂贵的”,许多应用需要模型的可替代的紧凑表示[6]。有这样的一种“线状”或“棒状”表示方法,称之为“骨架表示”或“曲线骨架”[7]。Blum[8]以中轴的形式建立了骨架化的基础,该骨架由具有较低维度的对称平面/轴组成。理论

上讲,Blum的骨架或中轴是使用草火传播过程定义的。假设物体是干草材质,在物体边界用火点燃,火焰以均匀的速度在物体内部传播。骨架被定义为两条独立火线相遇点的集合。

模型骨架提取方法可以分为以下几类:1) 拓扑细化法(Topology thinning),又称为模拟烧草模型法。此类算法从边界开始,反复迭代地逐层剥离离散后的模型形成骨架。绝大部分细化方法依靠简单点作用于离散空间(体素),去除之后不会改变形状的拓扑结构的点(体素)称之为简单点[9]。为提供拓扑保护,文献[10]提出了两种分别用于提取“表面骨架”和“曲线骨架”的8 次子迭代算法,其中每次子迭代

只能去除某种特定类型的边界点。文献[11]提出了一种拓扑保护的三维骨架化方法,该方法主要计算体素标记为D6距离模型的面骨架或曲线骨架。考虑笛卡尔超立方网格,文献[12]提供了一个数学框架,其中给出了迭代细化过程去除点的显式布尔条件。2) 基于距离场的方法。首先,需要估计一个距离图,然后视中轴为距离图

的脊,通过脊跟踪算法在此距离图中抽取得到中轴。物体内部每点的距离值DT被定义为此点离模型边界点的最短距离[13]。由于骨架对模型整体而言是处于中心位置应具有较大的DT值,因此DT能作为骨架提取的一种重要参考指标。Bitter等[14]通过梯度搜寻方法检测非均匀梯度的相邻部分,并标记这些点为候选体素。

Bouix等[15]用散度计算选取优先函数并由用户自定义阈值来进行体素的简单点移除。3) 基于拓扑与几何分析的方法,通过构造模型的Voronoi图和Reeb图来得

到骨架。Voronoi图将空间划分成子区域,Voronoi图的内部边和面可用于提取

形状的中轴面(骨架)的近似值。笔者提出了一种基于距离场的骨架提取方法,通过寻找距离域的“脊线” 从而找到骨架。笔者主要的贡献在于提出了最大内切球算

法来对候选体素进行约束,能很好地去除冗余体素点。笔者提供了几个模型的实验结果并将之与经典骨架提取方法进行比较,实验结果表明:笔者方法能得到一个质量较好的三维模型骨架。

1 算法流程

笔者提出了基于距离场的骨架提取方法,通过包围盒技术确定包裹模型的最小立方体空间。根据所求得的包围盒将模型体素化,从而将模型划分为一个个立方块空间。再计算每块体素的距离值,找出单位空间内距离值最大的体素作为骨架点的潜在体素。比较过后,所得的候选体素并非全部属于骨架点所在体素,提出最大内切球逼近算法来对体素做出约束,去除冗余的体素,从而找出最终的骨架点。最后,根据所求得的体素,按照一定规则有序连接形成骨架。具体算法流程如图1所示。

图1 算法流程Fig.1 Pipeline of skeleton extraction method

如图1所示,笔者方法主要步骤如下:

1) 模型内部体素化。此过程主要包括包围盒计算和模型外部体素去除。由于笔者

方法的核心思想是基于距离场来找到处于中心的那条“脊线”。因此,模型外部体素可用信息不大。根据需求,对于包围盒的选取笔者选择的是AABB盒,主要是

其操作简单且存储空间小。在判断体素是否外部体素时,充分利用了模型边界点的法向量指向模型外部这一信息,根据向量积的正负,成功地去除掉外部体素。

2) 单位空间内最大距离值体素的选取及最大内切球约束。模型内部体素化后,从

边界到中心,体素的距离值是递增的。因此,位于模型中心的骨架的距离值一定是

最大的,所要找的就是这类体素。因此,事先设定一单位空间,然后找出该空间内的最大距离值的体素,比较完所有体素后得到初始筛选的候选体素。然而,这些体素并非全部都属于骨架。因此,利用最大内切球再对这些候选体素进行约束,对于每个候选体素找出其最大内切球,将此最大内切球所包裹的所有体素再进行距离值比较,选择其中距离值最大的体素与最大内切球球心距离值(半径)作比较。若该体素距离值大于该最大内切球半径,则将此体素作为该局部的骨架点。若该体素距离值小于该最大内切球半径,则将此最大内切球的球心作为该局部的体素点。

3) 骨架点连接形成骨架。此部分主要是考虑骨架点连接的规则,根据已求得的骨架点形成骨架。必须保证骨架点连接不能重复、乱序和错漏。

2 最大内切球逼近

三维模型骨架就是模型M中所有最大内切球球心的集合[6]。笔者提出的最大内切球逼近算法主要思想:从模型内部任一点出发,计算其与表面最近点之间的矢量并向模型内部延伸来调整点的位置,从而将初始点位置从低距离值往高距离值的场内移动,经多次调整内部点位置便可以找到三维模型的最大内切球及其球心。

设三维网格模型M(x,y,z)={vk,k=1,2,…,N},其中(x,y,z)是顶点v的坐标,N是顶点数目,则距离值函数为

D(p(x′,y′,z′),v(x,y,z))=

(1)

式中v为距离点p最近的模型表面点。图2为Human模型局部放大距离场灰度编码图,颜色越浅代表距离值越大(模型中心为灰白色,模型边界为灰黑色)。

图2 距离场灰度编码Fig.2 Distance field color coding

定义函数Extend_Len(p′,p″,l)来调整点的位置。假设给定点p′和点p″,沿矢量p′p″延长距离l得到点p‴,则

p‴(x‴,y‴,z‴)=Extend_Len(p′,p″,l)

相关文档
最新文档