首先, 这不是使用内插法或者外插法可以得到的.
要从动态的2维图像中提取出三维信息, 通常要用到
optical flow算法, 这个算法也广泛地被用在表情识别, 动作捕捉等应用领域.
图1, Optical flow的一个典型求解结果。
简单地说, 给定两张连续的图片,
optical flow的目的是找出一个合理的速度场V, S.T. 这两张图片满足
此速度的一个convection方程
就是说, 我们希望找出一个速度场, 使得图片2可以通过按照这个速度场
来位移图片1得到.
这只是问题的定义, 那么该如何求解呢? 简单的说, 我们希望找到这样一
组在图像I1 里头的点, 以及它们经过某个速度场移动后对应到的I2里头的
点, 最小化在这些点处采集到的像素颜色值的差.
这样的速度场, 该满足什么约束条件呢?
1. 如果这个运动只是发生在平移, 旋转等情况下的, 速度场V满足
或者
所以, 我们想最小化误差1加误差2 在整个域内的积分:
变分(calculus of variation) 告诉我们,
到此为止, 我们用有限差分方法来离散Laplace算子和整个计算域,
已经有足够的能力求解出所想要的u和v了.
我们可以使用迭代法来求解出这个方程组, 比如(Gauss – Seidel,
Conjugate gradient…(这个系数矩阵应该是对称的) )
在得到速度场V之后, 我们就可以按照速度场去移动I1 的像素, 然后得到
动画序列了.
同样的原理, 在motion/expression capture中, 我们就能用得到的速度场来估算绑定
在人身上的那些点的运动了.
also, 在这里附上一个关于optical flow的课程.
https://www.youtube.com/watch?v=5VyLAH8BhF8
— 完 —
本文作者:张心欣
【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)
此问题还有 6 个回答,查看全部。