格形变算法(Linear rotation-invariant coordinates和As-Rigid-As-Possible)
来源:互联网 发布:centos源码安装git 编辑:程序博客网 时间:2024/05/16 08:49
http://www.cnblogs.com/shushen/p/4977870.html
在三维网格形变算法中,个人比较喜欢下面两个算法,算法的效果都比较不错, 不同的是文章[Lipman et al. 2005]算法对控制点平移不太敏感。下面分别介绍这两个算法:
文章[Lipman et al. 2005]提出的网格形变算法需要求解两次稀疏线性方程组:第一个方程定义了网格上离散坐标系之间的关系,通过求解该方程可以重组每个顶点的坐标系;第二个方程记录了顶点在局部坐标系的位置信息,通过求解该方程可以得到每个顶点的几何坐标。
在网格顶点建立局部坐标系(b1i,b2i,Ni),i∈V。对于(i,j)∈E,定义差分算子δ:
δj(b1i) = b1j – b1i
δj(b2i) = b2j – b2i
δj(Ni) = Nj – Ni
将差分算子表示为b1i,b2i,Ni的形式:
δj(b1i) = C11ijb1i + C12ijb2i + C13ijNi
δj(b2i) = C21ijb1i + C22ijb2i + C23ijNi
δj(Ni) = C31ijb1i + C32ijb2i + C33ijNi
进一步表示为:
b1j = (C11ij+1)b1i + C12ijb2i + C13ijNi
b2j = C21ijb1i + (C22ij+1)b2i + C23ijNi
Nj = C31ijb1i + C32ijb2i + (C33ij+1)Ni
上式为第一个方程,记录了网格上离散坐标系之间的关系,其中的系数可以由原始网格得到。
xj -xi = <eij , b1i >b1i + <eij , b2i >b2i + <eij , Ni >Ni
上式为第二个方程,记录了顶点在局部坐标系的位置信息,其中的系数也可以由原始网格得到。
算法效果:
文章[Sorkine et al. 2007]提出了ARAP的网格形变算法,网格顶点的一环邻域三角片组成一个单元(Cell),当顶点i对应的单元Ci变形为Ci’时,定义其刚性(rigidity)能量函数为:
网格上所有单元的刚性能量之和为:
根据能量函数,算法实现过程分两步进行迭代,第一步更新Ri,第二步更新 pi’,下面为具体推导过程。
1.更新Ri:
设eij = pi - pj,那么能量函数E(S’)可以表示为:
忽略不含Ri的项,那么:
定义协方差矩阵Si:,将Si奇异值分解:Si = UiΣiViT,那么Ri = ViUiT。
2.更新pi’:
权重wij和wi分别为:wij = 1/2(cotαij + cotβij),wi = 1。我们将E(S’)对pi’求偏导,并令其等于零:
上式中wij = wji,于是,那么我们可以得到:
上式相当于求解稀疏矩阵方程组。
算法效果:
参考文献:
[1] Y. Lipman, O. Sorkine, D. Levin, and D. Cohen-Or. 2005. "Linear rotation-invariant coordinates for meshes." In ACM SIGGRAPH 2005 Papers (SIGGRAPH '05) 24:3 (2005), 479-487.
[2] O. Sorkine and M. Alexa. "As-Rigid-As-Possible Surface Modeling." In Proc. of Eurographics Symposium on Geometry Processing. Aire-la-Ville, Switzerland: Eurographics Association, 2007.
- 格形变算法(Linear rotation-invariant coordinates和As-Rigid-As-Possible)
- 格形变算法(Linear rotation-invariant coordinates和As-Rigid-As-Possible)
- as rigid as possible编译
- As-Rigid-As-Possible Surface Modeling
- As-Rigid-As-Possible Surface Modeling
- as precise as possible
- As Fast As Possible
- As Easy As Possible
- non-rigid shape registration using similarity-invariant differential coordinates
- Codeforces 701D. As Fast As Possible(二分)
- CodeForces - 701D As Fast As Possible (数学推导)
- Get Users Involved As Early As Possible
- As-Conformal-As-Possible Surface Registration
- Codeforces700A As Fast As Possible 数学推理
- CF 700A As Fast As Possible
- BNUOJ 52317 As Easy As possible
- as-conformal-as-possible discrete volumetric mapping
- As Easy As Possible 倍增法
- 点击按钮往word文件中固定地方添加数据库数据再下载
- C++ListControl颜色控制
- AndroidManifest配置文件中Action和Category的各个项--有道笔记整理
- ClassLoader 详解及用途(写的不错)
- Android 布局参数
- 格形变算法(Linear rotation-invariant coordinates和As-Rigid-As-Possible)
- 综述HTTP里Get与Post方式的区别
- fflush(stdin)和fflush(stdout)
- handler类的作用:--有道笔记的整理
- OpenCV提取图像颜色直方图
- 用做数学证明题的思维对android Scroller类的核心方法进行详解
- DBMS_PROFILER Package
- java.lang.Thread.sleep()方法和java.lang.Object.wait()方法的区别--有道笔记整理
- AjaxFileUpload 上傳圖片 後台