一种基于集群计算系统的三维模型库特征提取方法

文档序号:6471472阅读:172来源:国知局
专利名称:一种基于集群计算系统的三维模型库特征提取方法
技术领域
本发明属于计算机应用技术领域,涉及的是一种在集群计算系统下的三维模型库特 征提取方法。
背景技术
随着计算机图形学的发展、三维模型获取技术和图形硬件技术的提高,如今三维模 型已成为继声音、图像和视频之后的第四种多媒体数据类型。近年来,三维物体的数据 量飞速增长,如三维游戏素材库、工业机械零件库、药物分子模型库、地形地貌数据库 等三维模型库不断地被扩充或应用。另一方面,三维模型检索技术的应用目前已渗透到 军事、生产和生活等领域的各个方面,如虚拟现实、医药分子研究、战争仿真模拟、教 育军事训练、三维游戏、影视动画、工业产品设计、机械制造以及电子商务等。因此, 如何对海量的三维数据库实现快速和准确的检索现在已成为多媒体信息检索领域的一 个研究热点,并且具有巨大的经济价值和重要的现实意义。基于内容的三维模型检索的 本质是利用反映三维模型视觉特征的信息自动建立特征索引,从而达到检索三维模型的 目的。通常一个三维模型数据库所包含的三维模型数量相当庞大,而特征提取的过程又 是一个耗时较大的操作(目前在配置为Pentium(R) 4 3.00GHz CPU, 1G RAM的计算机 上处理时间一个三维模型的时间大都需要超过l秒),因此,采用普通的单机系统来实 现对整个三维模型库的特征提取将是一项计算时间非常漫长的过程。

发明内容
本发明所要解决的技术问题是提供一种基于集群计算系统的三维模型库特征提取 方法,以縮减整个特征提取过程的处理时间。
为解决上述技术问题,本发明采用的技术方案如下 一种基于集群计算系统的三维模型库特征提取方法,包括以下步骤-
(1) 操作员按照本发明所设计的任务说明书(包含对所要提取的三维模型文件的 存储地址、每个三维模型的数据量、总的文件个数等信息的描述)提交整个计算任务;
(2) 对计算任务的规模进行评估,评估的方法是假设提交的三维模型数据库一 共包含N个三维模型,每个三维模型文件的数据量分别是1111,1112,...,11^,则总的计算规s=X附,'
模估计为 i=1 。
(3) 依据集群系统中可使用的计算节点个数和计算任务的规模S为每一个计算节 点分配计算任务。假设集群系统当前可用的计算节点个数为K,则理想状态下每一个计 算节点的计算任务量为S/《,但由于特征提取算法的基本处理单位是单个三维模型文件, 而当i^j时未必有mi^mj,因此,每一个计算节点所应处理的三维模型文件数未必是 M《,本发明采用如下的方法来实现依据计算规模为计算节点分配计算任务
(a) 对所有三维模型按照其数据量的大小从小到大排序,假设得到排序结果为m,; <m'2<, ...,< /w V ;
(b) 为每一个计算节点分配一个变量S;,&,...,&,全部初始化为0;
(c) 对于每一个计算节点,循环地从排序表/n'/〈m'2〈,…,〈附V中取出三维模型作
为该节点需要处理的数据。每次都取表中数据量最小的那个三维模型,被取过的三维模 型将从排序表中去除,同时计算节点i所对应的变量&需要加上它所取的三维模型的大
小;
(d) 在步骤(c)的过程中,为第i个节点取得一个三维模型后,都检测到目前为止它 所得到的计算任务总规模S,是否超过S/《,如超过则第i个节点不再参与分配。
(4) 依据步骤(3)得到的分配结果,按照本发明制定的通信协议将三维模型文件 发送给各个计算子节点。具体的通信协议如下集群系统的头结点向第i个计算节点发 送三维模型文件按照如下的过程进行-
(a) 向第i个计算节点发出信号"DATA—START结点编号文件数FilesNum";
(b) 第i个计算节点收到信号后将接收文件数计数器Counter设为FilesNum,然后回 发信号"DATA—READY节点编号"给头结点,说明本节点准备好接收数据;
(c) 头节点收到第i个计算节点发来的信号后,按照(3)得到的分配结果,将三维 模型文件逐个发送给第i个计算节点;
(d) 第i个计算节点逐个接收三维模型文件。每次收到一个文件后都将Counter自减 1,当发现Counter为0时,发送信号"DATA—END节点编号"给头结点;
(e) 头结点标记第i个计算节点已经收到了全部数据,完成第i个子节点数据的发送 过程。
(5) 头结点向所有子节点广播一个开始启动计算的信号"START"。头结点中维护了一个节点状态表,当开始启动信号发出后,它便把所有节点的状态置为"忙碌"。
(6)子节点接收到开始信号便启动特征提取算法对所接收到的三维模型数据进行 特征提取过程。本发明不规定具体的特征提取算法,因为本发明适用所有的特征提取算 法。计算节点对三维模型文件处理的顺序是按照它们的数据量大小来进行的,数据量小 的先处理,大的后处理。计算节点对每一个三维模型文件进行处理后都会得到一个特征 向量。本发明将每一个特征向量都写入一个文件中,以原始的三维模型文件作为它的文 件名称,文件的后缀为".fV"。
、〃 3TT昇i T3总元战芏部:T百孤的二难悮至乂忏处埋厄,问大结总及达一T》T昇结 束信号"END节点编号"。
(8) 当头结点收到某个计算子节点i的"END节点编号"时,开始接收计算结果。 按照如下的过程进行
(a) 头结点向节点i发送"GET—RESULT"信号;
(b) 子节点收到"GET_RESULT"信号后便开始将所有特征文件发送给头结点。 发送完毕后自动进入闲置状态。
(c) 由于头结点一直维护了一个表,清楚某个节点分配多少个三维模型文件,所 以它可以据此判断某节点是否将所有的特征文件数发送完毕(因为特征文件数等于三维 模型文件数)。当头结点接收完毕子节点发送回来的全部特征文件后,便将该子节点的 状态置为"闲置"。
(9) 当头结点收到所有特征文件总数为要求计算的三维模型文件数时,完成整个 计算过程。
在这过程中,由于初始分配的计算任务未必均匀,所以在实际运行过程中会出现有 的计算节点提前完成计算任务而闲置,而有的计算节点仍处于忙碌状态,因此,为了充 分利用所有计算资源,在步骤(8)完成之后需要启动负载平衡过程,该过程如下
(a) 头节点扫描计算节点状态表,向所有状态为"忙碌"的节点发出一个 "NEED—HELP"的信号,询问它们是否需要别的节点帮助它负担部分计算任务。
(b) 计算节点收到"NEED—HELP"信号后,检查还剩下多少个三维模型文件没有 处理,当文件个数大于2时,向头结点发出信号"HELP节点编号X"。这里的X表示 需要其它节点帮忙处理的三维模型个数,对应的是剩下的文件里面的最后X个文件。由 于计算节点处理三维模型的过程是按顺序进行的,而头结点了解每一个计算节点所负责的三维模型文件,所以这里只需指出X,那么头结点便知道应该是将该计算节点所负责 的三维模型文件中最后的x个取出来。当该信号发出后,本节点将需要处理的三维模型 文件总数减掉x。如果不需要其它其它节点协助完成任务,则将x设为o。
(c) 头结点收到"HELP节点编号X"后,如果X为O说明子节点不需要帮助, 直接舍弃。否则,头结点将它维护的列表中把该该节点所要负责的三维模型文件总数减 掉X,并且将最后的X准备交给其它闲置的计算节点处理。
(d) 将所有需要闲置状态节点帮助完成的三维模型全部汇总起来,然后采用步骤 (3)的方法为闲置的节点分配计算任务,其后过程如(4)到(9)相同。
有益效果实验表明,通过采用本发明后,三维模型库特征提取的速度大幅提高, 其提高的幅度与集群计算系统的所采用的计算节点的个数近似成正比,即若集群计算系 统包含的节点个数为T个时,采用本发明对同一个三维模型库特征提取所消耗的时间约 为一般单机系统的1/T。


图l本发明整体流程图。 图2本发明头节点的流程图。 图3本发明计算子节点的流程图。 图4本发明负载平衡的流程图。 图5本发明的实验测试结果。
具体实施例方式
本发明通过利用集群计算系统多个计算节点可以并行执行的特点,提出了一种基于 集群计算系统的三维模型库特征提取的方法。所谓集群(Cluster)是指由两台或多台节 点机(服务器)构成的一种松散耦合的计算节点集合。每个集群节点都是一个独立的服 务器,它运行属于它自己的进程。而各个计算节点运行的进程可以彼此通信。本发明不 限定集群具体的硬件连接方式,但要求集群中具有头结点,它能够调度和协调其它节点 的运行。
图1是本发明的整体流程图。步骤1用户首先需要提供特征提取的三维模型库和相 应的任务说明书,前者是本发明处理的数据对象,而后者则指明了三维模型库的每个三 维模型的存储位置、数据量大小、全部的三维模型库个数等。步骤2对三维模型库的数据规模进行评估,即算出总的数据量。步骤3则依据当前集群计算系统包含的节点数对 计算任务进行划分,得到每一个计算节点应该处理的三维模型。步骤4将划分结果发送 给各个计算节点,然后在步骤5头结点发出启动信号通知各个计算节点。步骤6各个计 算节点对分给自己的三维模型进行特征提取,完成之后,在步骤7向头节点发出完成的 信号,此后步骤8头节点开始特征结果的汇总。全部提取结果接收完毕后完成整个三维 模型库的特征提取过程。
图2给出了本发明中头结点所涉及的流程图。步骤11头节点接收操作员提交的三维 模型库以及计算的任务说明书。步骤12对计算任务的规模进行评估,评估的方法是
假设提交的三维模型数据库一共包含N个三维模型,每个三维模型文件的数据量分别是
;v
mi ,m2 ,..., mN,则总的计算规模估计为 '=1 。步骤13依据集群系统中可使用的计算 节点个数和计算任务的规模S为每一个计算节点分配计算任务。假设集群系统当前可用 的计算节点个数为K,则理想状态下每一个计算节点的计算任务量为S/K,但由于特征 提取算法的基本处理单位是单个三维模型文件,而当i-j时未必有m尸mj,因此,每一 个计算节点所应处理的三维模型文件数未必是iWK,本发明采用如下的方法来实现依据 计算规模为计算节点分配计算任务(a)对所有三维模型按照其数据量的大小从小到大 排序,假设得到排序结果为/ '7< ^<,...,<附、;(b)为每一个计算节点分配一个变量 Sl&,…,&,全部初始化为0; (c)对于每一个计算节点,循环地从排序表附'7<; '2<,...,< 附V中取出三维模型作为该节点需要计算的数据,每次都取表中数据量最小的那个三维 模型,被取过的三维模型将从排序表中去除,同时计算节点i所对应的变量&需要加上 它所取的三维模型的大小;(d)在(c)的过程中,为第i个节点取得一个三维模型后,都 检测到目前为止它所得到的计算任务总规模&是否超过S/《,如超过则第i个节点不再 参与分配。步骤14依据步骤13得到的计算任务划分结果,头节点向每一个计算节点发 送信号"DATA—START结点编号文件数FilesNum",告知子节点开始准备接收三维模 型文件。步骤15头节点等待回复信号。步骤16头节点收到子节点的信号"DATA一READY 节点编号",说明该子节点已经准备好接收数据。步骤17将划分结果发送给各个计算子 节点。步骤18等待各个子节点回发。步骤19收到各个子节点的信号"DATA—END节 点编号",说明各个子节点已接收到完数据并准备好开始特征提取。步骤20向所有子节 点广播一个开始启动计算的信号"START"。步骤21头节点将节点状态表中各个节点的状态置为"忙碌"。步骤22头节点等待各个子节点回发信号。步骤23收到了第i个子节 点回发的"END节点编号"信号,说明该子节点己经完成了分派给它的特征提取任务。 于是步骤24头节点便向该子节点发出GET一RESULT信号,表明头节点当前已经准备好 接收特征提取结果。步骤25和26等待并接收子节点发送特征提取结果,由于头节点中 一直维护着一个记录了各个子节点计算任务的表,因此,每次接收一个结果文件后,在 步骤27,它都会检查是否接收完毕该子节点发送回的全部结果文件。若未接收完毕,则 跳回步骤25继续等待子节点发送其它的特征结果;否则如果接收完毕,则执行步骤28 将该节点的状态置为"闲置"。之后在步骤29检査是否全部的三维模型结果都已经收到, 若是则结束整个特征提取过程,否则进入步骤30启动负载平衡,之后进入步骤22。
图3为子节点的执行流程图,与图2头节点的流程图相对应。步骤101等待头节点 发出信号。步骤102收到头节点的"DATA_START结点编号文件数FilesNum"信号, 说明头节点准备发送需进行特征提取的三维模型文件过来。步骤103做好数据接收前的 一些准备工作,例如申请缓冲区、申请磁盘空间等。步骤104设置一个计数器Counter, 并将其初始化为要接收的文件数。步骤105发送"DATA一READY节点编号"给头节点, 说明本节点已经准备好接收数据。步骤106处于等待状态,而当头节点发送需要进行特 征提取的三维模型文件到达子节点时进入步骤107,之后步骤108将Counter的值自减1 。 步骤109检査Counter是否为0,若不为0,说明还有三维模型文件没有传送过来,因此 跳回步骤106,否则若Counter为0说明文件接收已经完毕,进入步骤110,发送信号 "DATA—END节点编号"给头节点。步骤111等待头节点回复。步骤112收到头节点 发送的START信号,说明可以开始特征提取工作,于是子节点进入步骤113开始进行 三维模型的特征提取。等待分派给自己的全部三维模型特征提取完毕后,进入步骤114, 向头节点发出信号"END节点编号"。步骤115等待头节点回复信号。步骤116收到头 节点的GET—RESULT信号,说明头节点己经准备好了接收提取结果。步骤117将特征 提取结果逐一发送给头节点。在步骤118本节点进入"闲置"状态,等待头节点的负载 平衡调度(当各个子节点都差不多刚好完成时,也可能没有平衡调度)。
图4是本发明启动负载平衡调度时头节点和子节点之间的协作图。头节点在步骤 1001首先扫描节点状态表,找出所有状态为"忙碌"的计算节点。步骤1002头节点向 这些忙碌的节点发出一个NEED—HELP信号,询问子节点是否需要负载平衡。子节点在 步骤1007收到NEED—HELP信号后,进入步骤1008评估当前本节点中还剩下多少个模型需要其它闲置的节点协助完成,步骤1009回发信号"HELP节点编号X"给头节点, 当X为0时说明该子节点不需要帮助。头节点在步骤1003收到子节点回发的HELP信 号,检查该子节点需要协助完成的三维模型个数X是否为O,为0则直接舍弃,不要考 虑,否则,头结点将它维护的列表中把该节点所要负责的三维模型文件总数减掉X,并 且将最后的X个三维模型准备交给其它闲置的计算节点处理。步骤1004头节点将所有 需要闲置状态节点帮助完成的三维模型全部汇总起来,在步骤1005采取如图2步骤12 的方法评估这些三维模型的规模,然后采用图2步骤13的方法为闲置的节点分配计算 i工分。(y口trj3^殊勺团z、团j Tmi5o:理孤/r主夭'itA。
图5是本发明的试验结果。当集群的计算节点只有1个时,相当于采用单机系统。 由图5的图表可见,当集群的计算节点增多时,集群系统的优势非常明显。
权利要求
1、一种基于集群计算系统的三维模型库特征提取方法,其特征在于该方法包括以下步骤(1)操作员提交整个计算任务;(2)头结点对计算任务的规模进行评估;(3)头结点依据集群系统中可使用的计算节点个数和计算任务的规模为每一个计算节点分配计算任务;(4)头结点依据步骤(3)得到的分配结果,将三维模型文件发送给各个计算子节点;(5)头结点向所有子节点广播一个开始启动计算的信号“START”;同时头结点中维护了一个节点状态表,当开始启动信号发出后,便把所有节点的状态置为“忙碌”;(6)子节点接收到开始信号便启动特征提取算法对所接收到的三维模型数据进行特征提取过程;(7)当计算i节点完成全部指派的三维模型文件处理后,向头结点发送一个计算结束信号“END节点编号”;(8)当头结点收到某个计算子节点i的“END节点编号”时,开始接收计算结果;(9)当头结点收到所有特征文件总数为要求计算的三维模型文件数时,完成整个计算过程。
2、 根据权利要求1所述的基于集群计算系统的三维模型库特征提取方法,其特征 在于步骤(2)中所述的评估采用如下方法假设提交的三维模型数据库一共包含N个 三维模型,每个三维模型文件的数据量分别是nu,m2,…,mN,则总的计算规模估计为
3、 根据权利要求1所述的基于集群计算系统的三维模型库特征提取方法,其特征 在于步骤(3)中为计算节点分配计算任务的方法包括如下步骤(a) 对所有三维模型按照其数据量的大小从小到大排序,得到排序结果为m、 </ '2<, .."< w V ;(b) 为每一个计算节点分配一个变量S;,&,...,&,全部初始化为0;(C)对于每一个计算节点,循环地从排序表附'7</ '2<,...,<附、中取出三维模型作为该节点需要处理的数据;每次都取表中数据量最小的那个三维模型,被取过的三维模型将从排序表中去除,同时计算节点i所对应的变量&需要加上它所取的三维模型的大 小;(d)在步骤(c)的过程中,为第i个节点取得一个三维模型后,都检测目前为止它所 得到的计算任务总规模&是否超过S/K,如超过则第i个节点不再参与分配。
4、 根据权利要求1所述的基于集群计算系统的三维模型库特征提取方法,其特征在于步骤(4)中头结点向第i个计算节点发送三维模型文件按照如下的过程进行(a) 向第i个计算节点发出信号"DATA_START结点编号文件数FilesNum";(b) 第i个计算节点收到信号后将接收文件数计数器Counter设为FiiesNum,然后 回发信号"DATA—READY节点编号"给头结点;(c) 头节点收到第i个计算节点发来的信号后,将三维模型文件逐个发送给第i个计 算节点;(d) 第i个计算节点逐个接收三维模型文件,每次收到一个文件后都将Counter自减 1,当发现Counter为0时,发送信号"DATA—END节点编号"给头结点;(e) 头结点标记第i个计算节点已经收到了全部数据,完成第i个子节点数据的发送 过程。 '一
5、 根据权利要求1所述的基于集群计算系统的三维模型库特征提取方法,其特征 在于步骤(8)中,头结点按照如下的过程接收子节点i的计算结果(a) 头结点向节点i发送"GET_RESULT"信号;(b) 子节点收到"GET—RESULT"信号后便开始将所有特征文件发送给头结点, 发送完毕后自动进入闲置状态;(c) 当头结点接收完毕子节点发送回来的全部特征文件后,便将该子节点的状态 置为"闲置"。
6、 根据权利要求1所述的基于集群计算系统的三维模型库特征提取方法,其特征 在于在步骤(8)完成之后需要启动负载平衡过程,该过程如下(a) 头节点扫描计算节点状态表,向所有状态为"忙碌"的节点发出一个 "NEED—HELP"的信号,询问它们是否需要别的节点帮助它负担部分计算任务;(b) 计算节点收到"NEED_HELP"信号后,检査还剩下多少个三维模型文件没有 处理,当文件个数大于2时,向头结点发出信号"HELP节点编号X",这里的X表示 需要其它节点帮忙处理的三维模型个数,对应的是剩下的文件里面的最后X个文件;当该信号发出后,本节点将需要处理的三维模型文件总数减掉X;如果不需要其它其它节 点协助完成任务,则将X设为0;(c) 头结点收到"HELP节点编号X"后,如果X为O说明子节点不需要帮助, 直接舍弃;否则,头结点将它维护的列表中把该该节点所要负责的三维模型文件总数减 掉X,并且将最后的X准备交给其它闲置的计算节点处理;(d) 头结点将所有需要闲置状态节点帮助完成的三维模型全部汇总起来,然后采用步骤(3)的方法为闲置的节点分配计算任务。
全文摘要
本发明公开了一种基于集群计算系统的三维模型库特征提取方法,用户首先需要提供特征提取的三维模型库和相应的任务说明书;头结点对三维模型库的数据规模进行评估;头结点依据当前集群计算系统包含的节点数对计算任务进行划分,得到每一个计算节点应该处理的三维模型;头结点将划分结果发送给各个计算节点;各个计算节点对分给自己的三维模型进行特征提取,完成之后,向头节点发出完成的信号,此后头节点开始特征结果的汇总;全部提取结果接收完毕后完成整个三维模型库的特征提取过程。采用本发明的方法,三维模型库特征提取的速度可以得到大幅的提高。
文档编号G06F17/30GK101441579SQ20081023543
公开日2009年5月27日 申请日期2008年12月2日 优先权日2008年12月2日
发明者杨育彬, 林金杰, 阮佳彬 申请人:南京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1