首先, 这不是使用内插法或者外插法可以得到的.
要从动态的2维图像中提取出三维信息, 通常要用到
optical flow算法, 这个算法也广泛地被用在表情识别, 动作捕捉等应用领域.

使用两张角度不同的静态图像合成连贯的动画,难度有多大?插图

图1, Optical flow的一个典型求解结果。

简单地说, 给定两张连续的图片,
optical flow的目的是找出一个合理的速度场V, S.T. 这两张图片满足
此速度的一个convection方程
\frac{\partial I}{\partial t}+V\cdot\nabla I= \frac{D I}{D t} = 0\epsilon_a

就是说, 我们希望找出一个速度场, 使得图片2可以通过按照这个速度场
来位移图片1得到.

这只是问题的定义, 那么该如何求解呢? 简单的说, 我们希望找到这样一
组在图像I1 里头的点, 以及它们经过某个速度场移动后对应到的I2里头的
点, 最小化在这些点处采集到的像素颜色值的差.
这样的速度场, 该满足什么约束条件呢?
1. 如果这个运动只是发生在平移, 旋转等情况下的, 速度场V满足
\nabla^2 V = 0\epsilon_b
或者
u_{x}^{2}+u_{y}^{2} + v_{x}^{2} + v_{y}^{2} = 0\epsilon_b
所以, 我们想最小化误差1加误差2 在整个域内的积分:
\min \epsilon = \int\int (\epsilon_a + \alpha\epsilon_b) d\Omega

变分(calculus of variation) 告诉我们,
I_{x}^{2}u+I_x I_y v = \alpha^{2} \nabla^2 u - I_x I_t
I_{x}I_{y}u+ I_y ^2 v = \alpha^{2} \nabla^2 v - I_y I_t

到此为止, 我们用有限差分方法来离散Laplace算子和整个计算域,
已经有足够的能力求解出所想要的u和v了.
我们可以使用迭代法来求解出这个方程组, 比如(Gauss – Seidel,
Conjugate gradient…(这个系数矩阵应该是对称的) )

在得到速度场V之后, 我们就可以按照速度场去移动I1 的像素, 然后得到
动画序列了.

同样的原理, 在motion/expression capture中, 我们就能用得到的速度场来估算绑定
在人身上的那些点的运动了.

also, 在这里附上一个关于optical flow的课程.
https://www.youtube.com/watch?v=5VyLAH8BhF8

— 完 —

本文作者:张心欣

【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)

此问题还有 6 个回答,查看全部。

分享到