CN102982567B - 一种基于统计分析的变形体碰撞检测剔除方法 - Google Patents
一种基于统计分析的变形体碰撞检测剔除方法 Download PDFInfo
- Publication number
- CN102982567B CN102982567B CN201210414664.3A CN201210414664A CN102982567B CN 102982567 B CN102982567 B CN 102982567B CN 201210414664 A CN201210414664 A CN 201210414664A CN 102982567 B CN102982567 B CN 102982567B
- Authority
- CN
- China
- Prior art keywords
- coordinate
- model
- subspace
- matrix
- training set
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02A—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02A50/00—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE in human health protection, e.g. against extreme weather
- Y02A50/30—Against vector-borne diseases, e.g. mosquito-borne, fly-borne, tick-borne or waterborne diseases whose impact is exacerbated by climate change
Abstract
本发明提供一种基于统计分析的变形体碰撞检测剔除方法,该方法构建包含初始帧模型的训练集,并对训练集进行降维获得降维子空间基向量矩阵A;基于矩阵A,建立层次包围盒并计算出任意两叶节点间剔除阈值Rmn和模型子空间坐标,并建立Rmn与模型子空间坐标的关系矩阵;对训练集和矩阵A使用关键点选择算法计算获得一个关键点集Kp;输入一组新的关键点坐标作为控制点,计算出其对应的子空间坐标,并借助矩阵A还原完整模型的顶点坐标实现变形过程,并通过关键点子空间坐标获得等增广的子空间坐标;基于关键点子空间坐标获得一个增广的子空间坐标,并计算出一个模型的剔除基准值q和更新的碰撞剔除阈值Rmn,通过比较二者的大小关系确定是否进行剔除。
Description
技术领域
本发明属于计算机虚拟现实和计算机图形学技术领域,具体地说是一种基于统计分析的变形体碰撞检测剔除方法,该方法利用统计分析的方式对三角网格模型的降维表示计算一个简单的剔除基准,在检测流程中根据该基准减少检测的次数,用于提升变形体碰撞检测过程的效率。
背景技术
在当前的变形体碰撞检测剔除方法研究中,大致可分为基于图形和基于图像的碰撞检测算法。基于图像的碰撞检测算法一般利用图形硬件对物体的二维图像采样和相应的深度信息来判别两物体之间的相交情况。文献1-SHINYAM,FORGUE M.1991.Interference detection through rasterization[J].Journal ofVisualization and Computer Animation131-134.开创性地剔除了图形硬件辅助进行基于图像的检测方法。在绘制凸体的同时,保存视窗中每个像素上物体的最大和最小深度序列,并将它们按大小顺序排列;然后检测物体在某一像素上的最大深度值是否与其最小深度值相邻来判别相交情况这类算法的优势在于,能有效利用图形硬件加速技术来减轻CPU的计算负荷,从而达到提高算法效率的目的;算法本身对于场景的复杂性不敏感,适合于复杂体间的碰撞检测;对同一复杂度的场景而言,碰撞检测时间变化不大,具有较高的平稳性,有利于预测碰撞检测过程。但该类方法研究进展相对比较缓慢,主要问题集中在检测精度依赖于分辨率,一旦有很复杂的场景遮挡关系可能造成大量的错误判断;算法对于非凸体及大规模场景的适用性研究有待进一步开展;而CPU与GPU间的负载平衡问题亟待解决。
在基于图形的碰撞检测上,研究人员己经做了大量的工作,形成了空间分解法和层次包围体法等成熟算法。其目标都是尽可能地减少需进行相交测试的几何对象的数目,即所谓的碰撞检测剔除,以提高算法的实时性。空间分割法由于存储量大、灵活性差,通常适用于稀疏环境中分布比较均匀的几何对象间的碰撞检测;层次包围盒法则应用得更为广泛,适用于复杂环境中的碰撞检测。文献2-Jernej Barbic,Doug L.James.2010.Subspace Self-collision Culling.ACMTransactions on Graphics(TOG).Vol.29,No.4,Article 81.提出了一种在层次包围盒法的基础上,加入一个浮点数表示子空间剔除基准,根据模型的包围盒叶节点之间的距离关系构建剔除阈值,依此判定叶节点是否没有碰撞的可能而进行剔除,提高效率。但这种方法构造的碰撞检测剔除阈值是静态的,在训练阶段生成之后就不进行更新,当模型进行了较大程度的变形,或者变形多帧以后,该阈值很可能不适合当前的情况而造成检测错误——即漏检。而如果简单使用文章中的方法更新剔除阈值,由于计算量很大,将极大地降低时间效率,完全不能满足应用对时间的需求。
发明内容
本发明的技术解决问题:克服现有技术的不足,提供一种基于统计分析的变形体碰撞检测剔除方法,该方法可以针对连续变形的模型计算动态更新的子空间剔除阈值的方法,并且该方法将模型变形和碰撞剔除统一在了同样的流程框架下。该方法相比于以往的方法可以适用于变形较大和连续变形的模型,解决了漏检情况大幅升高的问题。
本发明的技术解决方案:一种基于统计分析的变形体碰撞检测剔除方法,其步骤如下:
步骤(1)、构建包含初始帧模型的建训练集,并对训练集进行降维获得降维子空间基向量矩阵A;
步骤(2)、基于初始帧模型和子空间基向量矩阵A,建立层次包围盒(BVH)并计算出任意两叶节点间剔除阈值Rmn,和模型子空间坐标,并建立Rmn与模型子空间坐标的关系矩阵;
步骤(3)、对训练集和矩阵A使用关键点选择算法计算获得一个关键点集Kp;
步骤(4)、输入一组新的关键点坐标作为控制点,计算出其对应的子空间坐标,并借助矩阵A还原完整模型的顶点坐标,实现变形过程;
步骤(5)、基于关键点子空间坐标获得一个增广的子空间坐标,并进一步计算出一个模型的剔除基准值q和更新的碰撞剔除阈值Kp,通过比较二者的大小关系确定是否进行剔除。
所述步骤(1)中构建训练集并生成降维子空间基向量矩阵A的方法为:训练集的构建应包含初始帧模型以及同一模型的多个姿态;通过训练集获得降维子空间A的方法为:先对训练集进行主成分分析(PCA)过程,然后对获得的矩阵截取前K个主成分,再进行方差最大正交旋转,得到所需的降维子空间基向量矩阵A。
所述步骤(2)中,剔除阈值Rmn与模型子空间坐标的关系矩阵的构建方法为:利用步骤(1)中构建的训练集中的初始帧模型坐标F,建立层次包围盒(BVH),通过求解多个简化的二次方程,获得任两个叶节点间的剔除阈值Rmn;再由模型坐标F和子空间基A,通过最小二乘法计算出模型子空间坐标p;最后再次使用最小二乘法并建立Rmn与p的变换关系矩阵。
所述步骤(3)中,构建关键点集的方法为:首先用在模型表面均匀选点的方式选择一个较小的初始点集;然后利用步骤(1)中得到的矩阵A,取其各基向量中具有最大偏移和与最大偏移内积数值最大的点加入关键点集;通过评价完整的控制矩阵A和pkey还原的训练集坐标与原训练集模型坐标的误差是否足够小,决定是否结束关键点集的增加过程。
所述步骤(4)中,实现变形过程的方法是:根据输入的控制点坐标和步骤(3)确定的关键点集,通过最小二乘求解仅包含关键点的子空间坐标pkey;再根据步骤(1)中构建的矩阵A和pkey可以用矩阵乘法还原出原始坐标空间的模型坐标,实现变形。
所述步骤(5)中,获得增广子空间坐标以计算剔除基准和阈值以决定剔除与否的方法为:根据步骤(5)中得到的关键点处的子空间坐标pkey经过简单的补零增广到维度为模型顶点个数的坐标p;通过计算p的M范式q:可以得到当前模型的剔除基准q;再根据步骤(2)确定的变换关系矩阵B,可以得到更新的剔除阈值Rmn′,在遍历BVH的叶节点过程中,首先判断q和当前节点的Rmn′的值的大小关系,如果q<Rmn′则可以判定没有发生碰撞,否则以传统方法进行碰撞检测。
本发明与现有技术相比的优点在于:
(1)、本发明使用了一个统一的框架,将变形过程和碰撞检测剔除过程纳入到基于同一子空间的统一表示模式下,便于实现。
(2)、本发明算法适应性强,既可以使用在离散碰撞检测中,也可以使用在连续碰撞检测中。
(3)、本发明引入了对碰撞剔除阈值的动态更新过程,可以适用于变形较大和连续变形的模型,解决了漏检情况大幅升高的问题。
附图说明
图1为本发明算法流程图;
图2为进行PCA和方差最大正交旋转的效果示意图;
图3为均匀选点方法示意图。
具体实施方式
图1为本发明算法流程图,如图1所示,本发明具体实现步骤如下:
步骤S101,在步骤S101中,构建训练集T的方法为选择拓扑关系不变的一系列三角网格模型,这些模型应当尽量涵盖不同的姿势。训练集的构建结果是训练集矩阵T,其每一行代表一个模型的姿势,每一列是不同姿势模型对应的顶点坐标。对矩阵T进行PCA分解,可以得到主成分矩阵R0,设模型定点数为n,则其维数为n×n;截取R0的前K个主成分,K的取值可以根据经验取10,或根据主成分矩阵R0对应的特征向量矩阵决定,非零的特征向量个数即为K的取值。对截取后的矩阵R进行方差最大正交旋转,可以获得更加优化的子空间基向量。该方法的基本思想是,使公共因子的相对负荷——的方差之和最大,且保持原公共因子的正交性和公共方差总和不变。这种方法可使每个因子上的具有最大载荷的变量数最小,因此可以简化对因子的解释。该旋转过程可以通过如下方式实现:
通过该过程可以得到的旋转后的子空间基向量表示A∈Rn×K,它包含n个顶点;这个过程如图2所示。
在步骤S102中,基于步骤S101中提及的初始帧模型建立BVH,方法使用传统的自顶向下的划分建立即可;并计算出任意两叶节点间剔除阈值Rmn。计算剔除阈值的方法为通过求解二次方程获得。定义为三角面片τi的顶点坐标,为各顶点的子空间模式,则有:
其中(i=1,2)。针对基元碰撞检测,此方程可以拆分为6个代表顶点-三角面片相交情况和9个代表边-边相交情况的子问题。对于顶点-三角面片的情况,令p0,pj(j=1,2,3)代表顶点和三角面片的坐标,代表顶点的子空间模式,代表三角形的子空间模式,u,v,w代表三角形的重心,因此有u+v+w=1。因此,通过对u,v求解拉格朗日最优解,||p2||可以表示为u,v的最优化目标函数:
BVF(u,v)=α11u2+2α12uv+α22v2-2α01u-2α02v+α00
通过求解BVF(u,v)的最小值,可以得到9个所需的剔除阈值的备选项;而边-边的情况可以通过同样的方法进行分析和求解(定义):
BEE(u)=α11u2+2α01u+α00
从而得到6个所需剔除阈值的备选项。从所有的15个备选项中选择最小的,作为剔除阈值Rmn。
而子空间模型坐标p可以通过初始帧模型坐标f和子空间基向量矩阵A通过最小二乘方法求得:
f=Ap
之后根据获得的子空间坐标p计算变换矩阵B:
Rmn=pB
在步骤S103中,构建关键点集首先需要使用在模型表面均匀选点的方式选择一个较小的初始点集。其实现过程如图3所示:首先将全部的顶点纳入备选集合,然后以任一点为起始点适合模型大小的一个半径(如模型长度的2%),从备选集中去除所有除该点外的顶点;然后换一个还在备选集中的点,重复上述过程直至全部点都被去除或者遍历到。然后,利用步骤S101中得到的矩阵A,取其各基向量v中具有最大偏移和与最大偏移内积数值最大的两个点加入关键点集(设要加入的点为i,j):
每次加入新的点之后,计算仅包含关键点的训练集模型坐标Tkey和控制矩阵Akey所确定的子空间坐标pkey,通过评价完整的控制矩阵A和pkey还原的训练集坐标与原训练集模型坐标的误差:
e=T-Apkey
当误差足够小(10-10),就结束关键点集的增加过程,完成关键点集构建;否则重复上述过程直至误差达到要求。
在步骤S104中,输入的新控制点是与步骤S103确定的关键点集相对应的。用新的控制点坐标fc和Akey,由fc=Akeypc可以计算出新模型的子空间坐标pc;再通过子空间坐标pc和完整的基向量A就可以计算出新一帧的全部顶点坐标fn,从而实现变形过程。
在步骤S105中,增广的子空间坐标计算方法是,根据步骤S104中得到的pkey经过简单的补零增广到维度为模型顶点个数的坐标p;通过计算p的M范式(M可以取单位阵I)q:
可以得到当前模型的剔除基准q;再根据q和步骤S102确定的变换关系矩阵B,可以得到更新的剔除阈值Rmn′。获得这些数据之后,在遍历BVH的叶节点过程中,首先判断q和当前节点的Rmn′的值的大小关系,如果q<Rmn′则可以判定没有发生碰撞,对当前检测分支进行剔除,否则使用传统的方法进行碰撞检测。
Claims (1)
1.一种基于统计分析的变形体碰撞检测剔除方法,其特征在于:该方法的步骤如下:
步骤(1)、构建包含初始帧模型的训练集T,并对训练集进行降维获得降维子空间基向量矩阵A;
所述步骤(1)中,训练集的构建应包含初始帧模型以及同一模型的多个姿态;通过训练集获得降维子空间基向量矩阵A的方法为:先对训练集进行主成分分析(PCA)过程,然后对获得的矩阵截取前K个主成分,再进行方差最大正交旋转,得到所需的降维子空间基向量矩阵A;
步骤(2)、基于初始帧模型和降维子空间基向量矩阵A,建立层次包围盒(BVH)并计算出任意两叶节点间剔除阈值Rmn和模型子空间坐标,并建立Rmn与模型子空间坐标的关系矩阵;
所述步骤(2)中,剔除阈值Rmn与模型子空间坐标的关系矩阵的构建方法为:利用步骤(1)中构建的训练集中的初始帧模型坐标F,建立层次包围盒(BVH),通过求解二次方程获得任两个叶节点间的剔除阈值Rmn;再由模型坐标F和降维子空间基向量矩阵A,通过最小二乘法计算出模型子空间坐标p;最后再次使用最小二乘法并建立Rmn与p的变换关系矩阵;
步骤(3)、对训练集和矩阵A使用关键点选择算法计算获得一个关键点集Kp;
所述步骤(3)中,构建关键点集的方法为:首先用在模型表面均匀选点的方式选择一个较小的初始点集;然后利用步骤(1)中得到的矩阵A,取其各基向量中具有最大偏移和与最大偏移内积数值最大的点加入关键点集;通过评价完整的降维子空间基向量矩阵A和关键点的子空间坐标pkey,还原训练集坐标与原训练集模型坐标的误差e:
e=T-Apkey
当误差e足够小,就结束关键点集的增加过程,完成关键点集构建;否则重复上述过程直至误差达到要求,即是否足够小以使误差满足要求,决定是否结束关键点集的增加过程;
步骤(4)、输入一组新的关键点坐标作为控制点,计算出其对应的模型子空间坐标,并借助矩阵A还原完整模型的顶点坐标,实现变形过程;
所述步骤(4)中,实现变形过程是:根据输入的控制点坐标和步骤(3)确定的关键点集,通过最小二乘求解仅包含关键点的子空间坐标pkey;再根据步骤(1)中构建的矩阵A和pkey可以用矩阵乘法还原出训练集原始坐标空间的模型坐标,实现变形;
步骤(5)、基于关键点的子空间坐标获得一个增广的子空间坐标,并进一步计算出一个完整模型的剔除基准值q和更新的剔除阈值Rmn′,通过比较二者的大小关系确定是否进行剔除;
所述步骤(5)具体实现为:根据步骤(4)中得到的关键点处的子空间坐标pkey经过简单的补零增广到维度为模型顶点个数的坐标p1;通过计算p1的M范式q:可以得到当前模型的剔除基准q;再根据步骤(2)确定的变换关系矩阵B,可以得到更新的剔除阈值Rmn′,在遍历BVH的叶节点过程中,首先判断q和当前节点的Rmn′的值的大小关系,如果q<Rmn′则可以判定没有发生碰撞,否则以现有的方法进行碰撞检测。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210414664.3A CN102982567B (zh) | 2012-10-25 | 2012-10-25 | 一种基于统计分析的变形体碰撞检测剔除方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210414664.3A CN102982567B (zh) | 2012-10-25 | 2012-10-25 | 一种基于统计分析的变形体碰撞检测剔除方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102982567A CN102982567A (zh) | 2013-03-20 |
CN102982567B true CN102982567B (zh) | 2015-09-09 |
Family
ID=47856506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210414664.3A Expired - Fee Related CN102982567B (zh) | 2012-10-25 | 2012-10-25 | 一种基于统计分析的变形体碰撞检测剔除方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102982567B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104776968B (zh) * | 2015-04-03 | 2018-03-20 | 华东师范大学 | 一种多关节模型穿透深度的计算方法 |
CN105701349B (zh) * | 2016-01-13 | 2018-10-23 | 河海大学 | 非均匀颗粒离散单元快速线性接触检测方法 |
CN109741483B (zh) * | 2018-12-11 | 2021-12-03 | 成都路行通信息技术有限公司 | 一种基于车联网平台的汽车碰撞检测方法 |
CN110806581B (zh) * | 2019-10-21 | 2022-03-29 | 边缘智能研究院南京有限公司 | 医疗推车防碰撞检测方法、装置和系统 |
CN111814970B (zh) * | 2020-06-28 | 2021-02-23 | 盾钰(上海)互联网科技有限公司 | 基于神经网络的实时物理引擎增强计算方法、介质及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609992A (zh) * | 2012-02-12 | 2012-07-25 | 北京航空航天大学 | 基于三角网格变形体的自碰撞检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120055089A (ko) * | 2010-11-23 | 2012-05-31 | 이화여자대학교 산학협력단 | 부하분산을 이용한 병렬형 충돌검사 방법과 병렬형 거리계산 방법 |
-
2012
- 2012-10-25 CN CN201210414664.3A patent/CN102982567B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609992A (zh) * | 2012-02-12 | 2012-07-25 | 北京航空航天大学 | 基于三角网格变形体的自碰撞检测方法 |
Non-Patent Citations (3)
Title |
---|
Jernej Barbic等.Subspace Self-Collision Culling.《ACM Transactions on Graphics (TOG)》.2010,第29卷(第4期), * |
基于BVH的快速碰撞检测技术的研究;卓婧等;《科技视界》;20120925(第27期);第60-62页 * |
实时碰撞检测算法综述;邹益胜等;《计算机应用研究》;20080131;第25卷(第1期);第8-12页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102982567A (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111062282B (zh) | 基于改进yolov3模型的变电站指针式仪表识别方法 | |
CN102982567B (zh) | 一种基于统计分析的变形体碰撞检测剔除方法 | |
Chen et al. | A computational method for automated detection of engineering structures with cyclic symmetries | |
Frishman et al. | Multi-level graph layout on the GPU | |
Barbič et al. | Subspace self-collision culling | |
CN108959794B (zh) | 一种基于深度学习的结构频响动力学模型修正方法 | |
CN105488515A (zh) | 训练卷积神经网路分类器的方法和图像处理装置 | |
CN104036550B (zh) | 基于形状语义的建筑立面激光雷达点云解译与重建的方法 | |
CN105842676A (zh) | 一种雷达盲区分析方法及装置 | |
CN103839292A (zh) | 对等值面进行采样并生成高质量三角网格的方法 | |
CN103700091A (zh) | 基于多尺度低秩分解且结构信息敏感的图像显著性物体检测方法 | |
CN106250933A (zh) | 基于fpga的数据聚类的方法、系统及fpga处理器 | |
CN106557323A (zh) | 一种网络图可视化布局方法及装置 | |
CN115179326B (zh) | 一种面向关节型机器人的连续碰撞检测方法 | |
CN106548478A (zh) | 基于局部拟合图像的活动轮廓图像分割方法 | |
CN103226825B (zh) | 基于低秩稀疏模型的遥感图像变化检测方法 | |
CN107204040A (zh) | 多点地质统计学建模方法及装置、计算机存储介质 | |
CN107193923A (zh) | 一种二维地理空间快速矢量叠加的方法及系统 | |
CN105354812A (zh) | 基于多Kinect协同的深度阈值分割算法识别轮廓交互方法 | |
CN106355646A (zh) | 应用于图像处理的表面细化方法、装置以及系统 | |
CN110610539A (zh) | 地层曲面构建方法和装置、设备及储存介质 | |
CN105956318A (zh) | 基于改进分裂 h-k 聚类方法的风电场机群划分方法 | |
CN103366092B (zh) | 基于状态转移的工程风险监测系统及方法 | |
Fu et al. | The ACA–BEM approach with a binary-key mosaic partitioning for modelling multiple bubble dynamics | |
JP5767576B2 (ja) | システム同定のための行列格納方法、プログラム及びシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150909 Termination date: 20181025 |
|
CF01 | Termination of patent right due to non-payment of annual fee |