光流:时间导数到底是啥?

Posted

技术标签:

【中文标题】光流:时间导数到底是啥?【英文标题】:Optical Flow: What exactly is the temporal derivative?光流:时间导数到底是什么? 【发布时间】:2019-05-28 21:31:22 【问题描述】:

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

获取两帧之间的差异可以得到两者之间每个像素的像素强度差异,但这与询问图像在特定时间跨度内的变化有什么不同?

【问题讨论】:

【参考方案1】:

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

f_d = ( I(x,y,t+delta) - I(x,y,t) ) / delta 使f_d -> dI/dt 成为delta -> 0

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


可能令人困惑的一个方面是它与图像对象的移动有何关系。例如,如果您有一些物理背景,您可能会想到 Eulerian and Lagrangian frames of reference 之间的区别:在更直观的 拉格朗日 观点中,您考虑通过在像素(空间)上跟踪对象来移动对象它移动的,例如看着一只猫跳过栅栏。 欧拉 视图更接近于我们在光流中所做的工作,它是跟踪单个像素处发生的事情,并且永远不会离开它。当猫经过(像素)空间的那个区域时,像素的值会发生变化,然后在它消失后恢复“正常”。

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

【讨论】:

【参考方案2】:

后续帧之间的差异是时间导数的finite difference approximation。

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

【讨论】:

以上是关于光流:时间导数到底是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何计算光流的时间导数

Horn-Schunck 光流计算

OpenCV 的 Lucas-Kanade 光流代码中的“good_new = p1[st==1]”是啥意思

光流法详解之一(LK光流)

光流法

光流和时空有啥区别