光流:时间导数到底是什么?



我试图理解图像中时间导数的含义。虽然我理解亮度恒常方程,但我不明白为什么取两幅图像之间的差异会给我时间导数。

取两帧之间的差异可以得到两者之间每个像素的像素强度差异,但这与询问图像在一定时间内的变化量有何相同?

图像I(x,y,t)的时间导数dI/dt是图像在特定位置随时间的变化率。如您所指出的,这是两帧之间像素强度的差异。考虑单个像素在(x,y),导数的有限差分近似为

f_d = ( I(x,y,t+delta) - I(x,y,t) ) / delta这样f_d -> dI/dtdelta -> 0.

在这种情况下,delta只是设置为 1。因此,我们通过相邻帧之间的差异来近似图像导数(相对于时间)。


一个可能令人困惑的方面是这与图像物体的移动有何关系。例如,如果你有一些物理学背景,你可能会考虑欧拉参考系和拉格朗日参考系之间的区别:在更直观的拉格朗日观点中,你认为一个物体通过跟踪它移动的像素(空间)来移动,例如看着一只猫跳过栅栏。欧拉的观点更接近我们在光流中所做的,是跟踪单个像素上发生的事情,并且永远不要将我们的眼睛从它身上移开。当猫经过(像素)空间的那个区域时,像素的值会发生变化,然后在它消失时恢复到"正常"。

这两种观点在某种意义上是等价的,但在不同情况下可能有用。在计算机视觉中,跟踪物体很难,而计算这些类似欧拉的时间导数很容易。理想情况下,我们可以跟踪猫:考虑一个点p(t)=(x_p(t),y_p(t))比如它的头,然后计算dp/dt并找出所有tp(t),并将其用于下游处理。不幸的是,这很难,所以我们希望亮度恒常性通常是局部正确的,并使用光流来估计dp/dt。当然,dI/dt通常不能很好地对应于dp/dt(这就是为什么亮度恒常性是一个假设)。例如,考虑一个围绕静止球体移动的光:dI/dt会很大,但dp/dt会为零。

后续帧之间的差是时间导数的有限差分近似。

如果将值除以帧之间的时间(即乘以每秒帧数值),则将获得正确的单位。

最新更新