Non-Rigid Structure-From-Motion

Google搜索第一项就是这个

http://www.cs.dartmouth.edu/~lorenzo/nrsfm.html

类似的还有这个

http://www2.ece.ohio-state.edu/~gotardop/index.html#Publications

 

花很长时间想在Cpp上实现其一,

使用Eigen算是出来了

结果和论文中一致

但是在debug模式下编译运行都是很慢的

release下还能用

慢的原因是有几处是求逆矩阵、SVD分解、稀松矩阵。

1.求逆矩阵可以这样

// Solve Ax = b. Result stored in x. Matlab: x = A \ b.
x = A.ldlt().solve(b));  // A sym. p.s.d.    #include <Eigen/Cholesky>
x = A.llt() .solve(b));  // A sym. p.d.      #include <Eigen/Cholesky>
x = A.lu()  .solve(b));  // Stable and fast. #include <Eigen/LU>
x = A.qr()  .solve(b));  // No pivoting.     #include <Eigen/QR>
x = A.svd() .solve(b));  // Stable, slowest. #include <Eigen/SVD>

但是好像没有A / b

 

2.redsvd

 

3.对于很大一个稀松矩阵。好像现在Eigen还不支持,导致一个 很大的矩阵需要在循环中计算,耗时很大

 

posted @ 2014-10-11 21:09  jalps  阅读(728)  评论(0编辑  收藏  举报