论文As-Rigid-As-Possible Surface Modeling 发表于SGP 2007,是变形领域的经典论文,目前引用已经超过1000次。网格变形要求产生视觉合理并且大致满足物理规律的变形效果,而模型细节的保持很大程度地满足了这种需求。刚性作为一个重要的属性在保细节方面具有明显的优势,从某种意义上讲,保持模型的刚性很大程度地促进了模型表面细节的保持。

先来看看文中的变形效果:

本文主要讲一下论文中的旋转矩阵RiR_iRi​的求解方法。

一、算法简介

如下图所示,ARAP变形算法首先定义网格顶点与1-邻域的边构成刚性变形单元,所有点的变形单元重叠地覆盖网格表面。

变形过程中假设变形单元仅仅发生旋转变换,形式化的表示如公式(1)所示,变形单元的刚性变换使得网格顶点相对于1-邻域顶点的位置保持不变,从而有效地保持了模型局部的细节。
pi′−pj′=Ri(pi−pj),∀j∈N(i)(1)p'_i-p'_j= R_i(p_i-p_j), \forall j \in N(i)\tag1pi′​−pj′​=Ri​(pi​−pj​),∀j∈N(i)(1)
其中,RiR_iRi​ 是该变形单元对应的旋转矩阵,pi,pjp_i,p_jpi​,pj​ 和 pi′,pj′p'_i,p'_jpi′​,pj′​ 是变形前后的网格顶点,这里点的表示是列向量。

每个变形单元的能量函数定义如下所示,通过最小化该能量函数实现模型的尽可能刚性变形:
E(Ci,Ci′)=∑j∈N(i)wij∣∣(pi′−pj′)−Ri(pi−pj)∣∣2(2)E(C_i,C_i' )= \sum_{j\in N(i)} w_{ij} \left| \left|(p'_i-p'_j) - R_i(p_i-p_j)\right|\right|^2 \tag2 E(Ci​,Ci′​)=j∈N(i)∑​wij​∣∣​∣∣​(pi′​−pj′​)−Ri​(pi​−pj​)∣∣​∣∣​2(2)

ARAP变形算法总的能量函数定义为:
E=∑i=1n∑j∈N(i)wij∣∣(pi′−pj′)−Ri(pi−pj)∣∣2(3)E= \sum^n_{i=1}\sum_{j\in N(i)} w_{ij} \left| \left|(p'_i-p'_j) - R_i(p_i-p_j)\right|\right|^2 \tag3 E=i=1∑n​j∈N(i)∑​wij​∣∣​∣∣​(pi′​−pj′​)−Ri​(pi​−pj​)∣∣​∣∣​2(3)

其中,CiC_iCi​和Ci′C_i'Ci′​分别表示变形前后模型顶点 pip_ipi​ 和 pi′p'_ipi′​ 对应的变形单元,N(i)N(i)N(i) 表示 pip_ipi​ 的1-邻域点的索引,而 pjp_jpj​ 和 pj′p'_jpj′​ 分别表示 pip_ipi​ 和 pi′p'_ipi′​ 的1-邻域顶点,RiR_iRi​表示CiC_iCi​到Ci′C_i'Ci′​的最优旋转矩阵,wijw_{ij}wij​是边eij=(pi,pj)e_{ij}=(p_i, p_j)eij​=(pi​,pj​)的权重, 定义如下所示。其中,αij\alpha_{ij}αij​ 和 βij\beta_{ij}βij​ 如上图所示。
wi,j=12(cotαij+cotβij)(4)w_{i,j} = \frac{1}{2}(cot\alpha_{ij} + cot \beta_{ij})\tag4wi,j​=21​(cotαij​+cotβij​)(4)

对于公式(3)所示的二次能量函数最小化中的每个变形单元,共有两个未知数:旋转矩阵RRR 和变形后的点坐标 P′P'P′(公式(2)中的pi′p'_ipi′​ 和 pj′p'_jpj′​). 论文采用迭代的方式进行优化求解:

  • 1)固定P′P'P′ 求解使得(3)最小的每个变形单元的最优旋转矩阵RiR_iRi​。
  • 2)在旋转矩阵RiR_iRi​已知的情况下,求解使得(3)最小的变形后的顶点坐标P′P'P′。
  • 3)返回1),直到能量误差小于用户指定的阈值为止。

接下来,重点讲一下如何求解RRR 和 P′P'P′.

二、已知P′P'P′求解旋转矩阵RRR

针对每个变形单元单独求解,令eij′=pi′−pj′,eij=pi−pje'_{ij} = p'_i-p'_j, e_{ij} = p_i-p_jeij′​=pi′​−pj′​,eij​=pi​−pj​, 公式(2)可以改写为:
E(Ci,Ci′)=∑j∈N(i)wij(eij′−Rieij)2=∑j∈N(i)wij(eij′Teij′−eij′TRieij+eijTRiTRieij)(5)E(C_i,C_i' )=\sum_{j\in N(i)}w_{ij}(e'_{ij}-R_ie_{ij})^2 =\sum_{j\in N(i)}w_{ij}(e'^T_{ij}e'_{ij}-e'^T_{ij}R_ie_{ij}+e^T_{ij}R^T_iR_ie_{ij})\tag5E(Ci​,Ci′​)=j∈N(i)∑​wij​(eij′​−Ri​eij​)2=j∈N(i)∑​wij​(eij′T​eij′​−eij′T​Ri​eij​+eijT​RiT​Ri​eij​)(5)
因为RRR是旋转矩阵(正交矩阵),RiTRi=IR^T_iR_i = IRiT​Ri​=I, 所以上式等于:
E(Ci,Ci′)=∑j∈N(i)wij(eij′Teij′−eij′TRieij+eijTeij)(6)E(C_i,C_i' )=\sum_{j\in N(i)}w_{ij}(e'^T_{ij}e'_{ij}-e'^T_{ij}R_ie_{ij}+e^T_{ij}e_{ij})\tag6E(Ci​,Ci′​)=j∈N(i)∑​wij​(eij′T​eij′​−eij′T​Ri​eij​+eijT​eij​)(6)
上式的最小值跟不含RiR_iRi​的项无关,因此:
Ri=arg min⁡Ri∑j∈N(i)wij(−eij′TRieij)=arg max⁡Ri∑j∈N(i)wijeij′TRieij(7)R_i = \argmin \limits_{R_i}\sum_{j\in N(i)}w_{ij}(-e'^T_{ij}R_ie_{ij}) = \argmax \limits_{R_i}\sum_{j\in N(i)}w_{ij}e'^T_{ij}R_ie_{ij}\tag7Ri​=Ri​argmin​j∈N(i)∑​wij​(−eij′T​Ri​eij​)=Ri​argmax​j∈N(i)∑​wij​eij′T​Ri​eij​(7)
上式可以写成矩阵的迹的形式(参见末尾示意图)进行改写:
Ri=arg max⁡RiTr(∑j∈N(i)wijRieijeij′T)(8)R_i =\argmax \limits_{R_i}Tr(\sum_{j\in N(i)}w_{ij}R_ie_{ij}e'^T_{ij}) \tag8Ri​=Ri​argmax​Tr(j∈N(i)∑​wij​Ri​eij​eij′T​)(8)

并将RiR_iRi​提到外面:
Ri=arg max⁡RiTr(Ri∑j∈N(i)wijeijeij′T)(9)R_i =\argmax \limits_{R_i}Tr(R_i\sum_{j\in N(i)}w_{ij}e_{ij}e'^T_{ij})\tag9Ri​=Ri​argmax​Tr(Ri​j∈N(i)∑​wij​eij​eij′T​)(9)

接下来就是如何求解这个旋转矩阵,假设Si=∑j∈N(i)wijeijeij′TS_i = \sum_{j\in N(i)}w_{ij}e_{ij}e'^T_{ij}Si​=∑j∈N(i)​wij​eij​eij′T​, 一般而言,SiS_iSi​ 可以通过奇异值分解得到:
Si=UiΣiViT(10)S_i = U_i\Sigma_iV^T_i\tag{10}Si​=Ui​Σi​ViT​(10)
那么(9)可以进一步写为:
Ri=arg max⁡RiTr(RiUiΣiViT)(11)R_i =\argmax \limits_{R_i}Tr(R_iU_i\Sigma_iV^T_i) \tag{11}Ri​=Ri​argmax​Tr(Ri​Ui​Σi​ViT​)(11)
根据Tr(AB)=Tr(BA)Tr(AB) = Tr(BA)Tr(AB)=Tr(BA),上式进一步改写:
Ri=arg max⁡RiTr(ViTRiUiΣi)(12)R_i =\argmax \limits_{R_i}Tr(V^T_iR_iU_i\Sigma_i) \tag{12}Ri​=Ri​argmax​Tr(ViT​Ri​Ui​Σi​)(12)

令:X=ViTRiUiX = V^T_iR_iU_iX=ViT​Ri​Ui​, 因为此三个矩阵都是正交矩阵,所以XXX也是正交矩阵,上式可以写成:
Ri=arg max⁡RiTr(XΣi)(13)R_i =\argmax \limits_{R_i}Tr(X\Sigma_i) \tag{13}Ri​=Ri​argmax​Tr(XΣi​)(13)
而:
Tr(XΣi)=X(1,1)Σi(1,1)+X(2,2)Σi(2,2)+X(3,3)Σi(3,3)(14)Tr(X\Sigma_i) = X_{(1,1)}\Sigma_i(1,1) + X_{(2,2)}\Sigma_i(2,2) + X_{(3,3)}\Sigma_i(3,3)\tag {14}Tr(XΣi​)=X(1,1)​Σi​(1,1)+X(2,2)​Σi​(2,2)+X(3,3)​Σi​(3,3)(14)
对于上式有两点需要注意:

1)Σi\Sigma_iΣi​保存了矩阵SiS_iSi​的所有奇异值,所以Σi\Sigma_iΣi​的对角线上的元素均大于等于0(奇异值分解的性质决定)。
2)另外,正交矩阵中的各元素的取值X(i,j)∈[0,1]X_{(i,j)} \in [0,1]X(i,j)​∈[0,1]。
因此,当X是单位阵时上式取得最大值,即Σi\Sigma_iΣi​对角线元素之和。因此只需要X=ViTRiUi=IX= V^T_iR_iU_i=IX=ViT​Ri​Ui​=I 即可,所以:
Ri=ViUiT(15)R_i = V_iU^T_i\tag{15}Ri​=Vi​UiT​(15)
这就是论文给出的最终的旋转矩阵的求解方法。

三、已知RRR求解变形后的顶点P′P'P′

这一步相对比较简单,直接对能量函数求导即可,具体推导就把论文中搬出来即可:
∂E(S′)∂pi′=∂∂pi′(∑j∈N(i)wij∥(pi′−pj′)−Ri(pi−pj)∥2+∑j∈N(i)wji∥(pj′−pi′)−Rj(pj−pi)∥2)==∑j∈N(i)2wij((pi′−pj′)−Ri(pi−pj))++∑j∈N(i)−2wji((pj′−pi′)−Rj(pj−pi)).(16)\begin{aligned} \frac{\partial E\left(\mathcal{S}^{\prime}\right)}{\partial \mathbf{p}_{i}^{\prime}} &=\frac{\partial}{\partial \mathbf{p}_{i}^{\prime}}\left(\sum_{j \in \mathcal{N}(i)} w_{i j}\left\|\left(\mathbf{p}_{i}^{\prime}-\mathbf{p}_{j}^{\prime}\right)-\mathbf{R}_{i}\left(\mathbf{p}_{i}-\mathbf{p}_{j}\right)\right\|^{2}\right.\\ &\left.+\sum_{j \in \mathcal{N}(i)} w_{j i}\left\|\left(\mathbf{p}_{j}^{\prime}-\mathbf{p}_{i}^{\prime}\right)-\mathbf{R}_{j}\left(\mathbf{p}_{j}-\mathbf{p}_{i}\right)\right\|^{2}\right)=\\ &=\sum_{j \in \mathcal{N}(i)} 2 w_{i j}\left(\left(\mathbf{p}_{i}^{\prime}-\mathbf{p}_{j}^{\prime}\right)-\mathbf{R}_{i}\left(\mathbf{p}_{i}-\mathbf{p}_{j}\right)\right)+\\ &+\sum_{j \in \mathcal{N}(i)}-2 w_{j i}\left(\left(\mathbf{p}_{j}^{\prime}-\mathbf{p}_{i}^{\prime}\right)-\mathbf{R}_{j}\left(\mathbf{p}_{j}-\mathbf{p}_{i}\right)\right) . \end{aligned}\tag{16} ∂pi′​∂E(S′)​​=∂pi′​∂​⎝⎛​j∈N(i)∑​wij​∥∥​(pi′​−pj′​)−Ri​(pi​−pj​)∥∥​2+j∈N(i)∑​wji​∥∥​(pj′​−pi′​)−Rj​(pj​−pi​)∥∥​2⎠⎞​==j∈N(i)∑​2wij​((pi′​−pj′​)−Ri​(pi​−pj​))++j∈N(i)∑​−2wji​((pj′​−pi′​)−Rj​(pj​−pi​)).​(16)
因为wij=wjiw_{ij} = w_{ji}wij​=wji​, 上式进一步改写为:
∂E(S′)∂pi′=∑j∈N(i)4wij((pi′−pj′)−12(Ri+Rj)(pi−pj))\frac{\partial E\left(\mathcal{S}^{\prime}\right)}{\partial \mathbf{p}_{i}^{\prime}}=\sum_{j \in \mathcal{N}(i)} 4 w_{i j}\left(\left(\mathbf{p}_{i}^{\prime}-\mathbf{p}_{j}^{\prime}\right)-\frac{1}{2}\left(\mathbf{R}_{i}+\mathbf{R}_{j}\right)\left(\mathbf{p}_{i}-\mathbf{p}_{j}\right)\right)∂pi′​∂E(S′)​=j∈N(i)∑​4wij​((pi′​−pj′​)−21​(Ri​+Rj​)(pi​−pj​))
令导数为0,则可以得到:
∑j∈N(i)wij(pi′−pj′)=∑j∈N(i)wij2(Ri+Rj)(pi−pj)(17)\sum_{j \in \mathcal{N}(i)} w_{i j}\left(\mathbf{p}_{i}^{\prime}-\mathbf{p}_{j}^{\prime}\right)=\sum_{j \in \mathcal{N}(i)} \frac{w_{i j}}{2}\left(\mathbf{R}_{i}+\mathbf{R}_{j}\right)\left(\mathbf{p}_{i}-\mathbf{p}_{j}\right) \tag{17}j∈N(i)∑​wij​(pi′​−pj′​)=j∈N(i)∑​2wij​​(Ri​+Rj​)(pi​−pj​)(17)
最终转换为一个线性方程组求解即可。

四、补充:(7)式到(8)式,矩阵到迹的表示

可令(7)式中的 A=wijeij′T,B=RieijA = w_{ij}e'^T_{ij}, B = R_ie_{ij}A=wij​eij′T​,B=Ri​eij​, 其中A是一行3列,B是3行一列,对于这种行矩阵跟列矩阵的乘法可以表示为矩阵的迹,下面展示了更一般的情况: A1×nBn×1=Tr(Bn×1A1×n)A_{1\times n}B_{n\times 1} = Tr(B_{n\times 1}A_{1\times n})A1×n​Bn×1​=Tr(Bn×1​A1×n​)。

参考资料:

[1] 知乎:用数学编辑3D模型(二)- As-Rigid-As-Possible
[2] 知乎:奇异值分解(SVD)
[3] 矩阵迹的性质和运算
[4] http://blog.csdn.net/seamanj/article/details/50597420 (Tr(M) >= Tr(RM))

经典论文推导: As-Rigid-As-Possible(ARAP) Surface Modeling相关推荐

  1. NeurIPS 2019 获奖论文出炉,微软华人学者Lin Xiao 获经典论文奖

    导语:历史之最,参会1.3万人~ 作为最久负盛名的机器学习顶会之一,今年 NeurIPS 2019 在召开之前就消息不断:在今年论文审稿期间,NeurIPS 2019 程序委员会主席专门发布声明称,1 ...

  2. GPT-3获NeurIPS 2020最佳论文奖,苹果华人学者获经典论文奖

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI NeurIPS 2020今天正式召开,今年共有1900篇论文被接收,创下历史新高. 今天早晨,大会评委会公布了获得最高荣誉的论文名单: 包 ...

  3. NeurIPS 2019最佳论文出炉,今年增设“新方向奖”,微软华人学者获经典论文奖...

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 第32届神经信息处理系统大会(NeurIPS 2019)今天在加拿大温哥华正式召开. 据大会官方介绍,今年的参会人数达到了空前的1.3万人 ...

  4. 计算机科学经典论文(zz)

    作者:g9yuayon from:http://blog.csdn.net/g9yuayon/article/details/1512851 从Jao的Programming Musing 看到的:B ...

  5. NeurIPS2019获奖论文!7篇论文斩获!微软华裔研究员斩获经典论文

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 :https://mediu ...

  6. 各个领域中的经典论文,看看你都读过哪些 - 易智编译EaseEditing

    易智编译提供个人定制一站式SCI期刊发表服务,拥有丰富的SCI期刊资源,大幅提高成功投稿命中率. 这篇文章以web of science为依据,选取了各个领域中引用最高的文章.他们是各个研究领域中的经 ...

  7. 沐神点赞!同济子豪兄精读AI经典论文,包括图像分类、目标检测、生成对抗网络、轻量化卷积神经网络等领域...

    读研/读博的你,是不是符合: 毕设/研一/博一科研小白刚进课题组,不知道如何写开题报告和综述? 前沿顶会.期刊论文.综述文献浩如烟海,不知道学习路径,无从下手? 导师放养,既不懂也不管,师兄各忙各的, ...

  8. [论文阅读] (23)恶意代码作者溯源(去匿名化)经典论文阅读:二进制和源代码对比

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  9. NLP经典论文:Layer Normalization 笔记

    NLP经典论文:Layer Normalization 笔记 论文 介绍 模型结构 batch normalization 和 layer normalization 的相同点 batch norma ...

最新文章

  1. PHP哈希表碰撞攻击原理
  2. matlab 图论工具箱
  3. logback-spring.xml 文件路径 相对路径_小白学 Python(18):基础文件操作
  4. 01)自学JavaScript
  5. 连接驱动_在jdbc中完成对于jdbc参数、jdbc变量,加载驱动,创建连接的封装
  6. Effective系列经典著作,铺就程序员殿堂之路
  7. element ui表单处理的简洁方法
  8. echarts 圆环图渐变
  9. [Bada开发]使用静态库
  10. Mach-O文件, 架构包framework的合并和拆分
  11. c语言 unpack函数,Pack/Unpack 总结
  12. 阿里RocketMQ创始人首次分享出这份RocketMQ技术内木神级架构手册
  13. Hypervisor小记
  14. 解密猫晚直播技术:如何保障全球200多个国家和地区同时在线狂欢?
  15. 免费的静态网页托管_如何使用自动管道免费托管静态站点
  16. javaweb企业员工考勤管理系统案例
  17. 解决:teamview持续很久显示连接未就绪
  18. 程序启动,遇到Process finished with exit code 1 解决方法
  19. 视频教程-Python开发全教程-Python
  20. ORB-SLAM3的Euroc数据集测试

热门文章

  1. HTML学生作业网页:使用HTML+CSS技术实现非遗文化网页设计题材【汉服文化—共12个页面】
  2. ipad分屏功能怎么开启_英雄联盟手游设置怎么调最合适?英雄联盟手游设置方法与新手开启功能解析...
  3. PHP配置环境搭建 MyEclipce添加PHP插件
  4. 想发国际期刊,这些工具和技巧你都知道吗?
  5. Sublime Text 3 Build 3065 All System CracKed By Hmily[LCG]
  6. 服务器输入不显示字,搜狗输入法打字不显示怎么办 快来看看解决办法
  7. Sleep(0)的妙用
  8. BUUCTF [HITCON 2016] Leaking
  9. 判断iOS6/iOS7, 3.5inch/4.0inch
  10. Android摄像头 只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整实现(原理 底层Surface