您的位置:首页 > 运维架构

3D【2】非刚性配准:Optimal Step Nonrigid ICP Algorithms for Surface Registration 阅读笔记

2018-02-06 15:13 801 查看
最近在研究人脸3d重建的内容,配准是训练出一个类似Basel Face Model的一个前期3d数据处理过程。由于从设备扫描出来的3d人脸的顶点个数非常多,而像BFM这样的模型中一个3d face的顶点为53490个点。为了用一个顶点较少的模板来表示一个从设备扫描出来的3d face,我们需要用到配准算法。在3d face的配准中使用的是非刚性配准,意思是模板除了平移,缩放和旋转之外,还可以变形。在配准中,模板是作为source,从设备扫描出来的3d face作为target,配准的目的是找到一个变换(在该论文中是为每个顶点分别找到一个变换矩阵),使得source能够表示target。

该论文提出的非刚性ICP算法可以用来3d face的配准,论文A 3D Morphable Model learnt from 10,000 faces使用的也是该方法。non-rigid ICP算法有三个损失函数,分别是Data loss、Smoothness loss和Landmarks loss。

假设模板S=(V,E)S=(V,E),其中V是顶点,有n个;E是边。另外每个顶点的变换矩阵XiXi大小是3∗43∗4,这样所有顶点的变换矩阵可表示为X=[X1,...,Xn]TX=[X1,...,Xn]T,大小为3*4n。

Data loss:

Ed(X)=∑vi∈Vwidist2(,Xivi)Ed(X)=∑vi∈Vwidist2(T,Xivi)

其中,vivi是模板中的第i个顶点,wiwi为权重。该损失函数计算的时候,需要从3d face(T)中找到与模板顶点i最进的点,然后计算距离。

Smoothness loss:

Es(X)=∑(i,j)∈E||(Xi−Xj)G||2FEs(X)=∑(i,j)∈E||(Xi−Xj)G||F2

其中,G=diag(1,1,1,γ)G=diag(1,1,1,γ),γγ用来权衡旋转和平移。该损失函数的作用是,使变换后的模板尽量平滑。

Landmarks loss:

El(X)=∑(vi,l)∈L||Xivi−l||El(X)=∑(vi,l)∈L||Xivi−l||

其中l是target的特征点,L=(vi1,li),...,(vil,ll)L=(vi1,li),...,(vil,ll)。

整个优化损失函数为:

E=Ed(X)+αEs(X)+βEl(X)E=Ed(X)+αEs(X)+βEl(X)



其中αα的作用:

decreasing vector of real-valued stiffness parameters.

High stiffness parameters force global transformations whereas(整个3d face?)

low values allow for local deformations.(局部,眼镜之类的?)

论文后面是损失函数的矩阵形式,和没有数据部分(3d face的扫描数据一般没有脑袋部分)的补偿。

matlab代码

2018.2.24更新:

实验了一下,发现人脸特征点的作用比较大。如果没有人脸特征点的话,配准的结果会很差。该方法的效果还是非常不错的,不过比较耗时。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  3d
相关文章推荐