【问题标题】:Lukas Kanade optical flow: Understanding the mathLucas Kanade 光流:理解数学
【发布时间】:2017-06-22 00:13:19
【问题描述】:

我找到了 LKT 算法here 的 Matlab 实现,它基于亮度恒常性方程。

该算法通过将图像与适当的 2x2 水平和垂直边缘梯度算子进行卷积来计算 x 和 y 方向的图像梯度。

经典文献中的亮度恒常方程的右侧是两个连续帧之间的差异。

但是,在上述链接所指的实现中,右手边是卷积的区别。

It_m = conv2(im1,[1,1;1,1]) + conv2(im2,[-1,-1;-1,-1]);

It_m 为什么不能简单地计算为:

it_m = im1 - im2;     

【问题讨论】:

  • 您需要一分钟来验证 conv2(x,[1,1;1,1]) 是否与 x 不同。
  • 你指的是这一行吗? It_m = conv2(im1, ones(2), '有效') + conv2(im2, -ones(2), '有效');请注意,这只是一个 2D 空间平滑器,并确保生成的 It_m 具有与 Ix_m 和 Iy_m 矩阵相同的大小(因为它们是使用带有 2x2 内核和“有效”选项的 conv2 处理的)。
  • @MBaz 我不认为他的困惑在于 conv2(x,[1,1;1,1]) 与 x 不同。我怀疑问题是为什么要使用该卷积,而不仅仅是在两个图像帧上逐个像素地计算时间导数。
  • @AtulIngle 你可能是对的。
  • @Raj 如果您在 StackOverflow 上使用 matlabimage processing 标签发布此问题,您会收到更好的回复

标签: matlab image-processing computer-vision object-recognition


【解决方案1】:

正如您所提到的,理论上仅针对光流计算说明逐像素差异。 然而,在实践中,所有自然(非合成)图像都包含一定程度的噪声。另一方面,微分是某种高通滤波器,会向信号强调(高通)噪声比。 因此,为了避免由噪声引起的伪影,通常在任何图像微分之前进行图像平滑(或低通滤波)(我们在边缘检测中也有这样的过程)。代码正是这样做的,即在图像上应用和移动平均滤波器以减少噪声效果。

It_m = conv2(im1,[1,1;1,1]) + conv2(im2,[-1,-1;-1,-1]);

【讨论】:

  • 感谢 MimSaad 明确过滤主题。赞成您的回答。
  • 我很高兴它有帮助!
  • 降噪很重要,但即使您有一个完全无噪点的图像,那么 2 个像素的差异也会在最终的光流输出中产生错误。有关详细信息,请参阅下面的答案
【解决方案2】:

(评论转换为答案。)

理论上,采用像素级差异并没有错:

Im_t = im1-im2;

计算时间导数。在计算时间导数时使用空间平滑器可以减轻噪声的影响。

此外,看看code 计算空间(x 和 y)导数的方式:

Ix_m = conv2(im1,[-1 1; -1 1], 'valid');

使用类似的内核计算时间导数并使用valid 选项确保矩阵It_xIt_yIm_t 具有兼容的大小。

【讨论】:

    【解决方案3】:

    时间偏导数(沿 t)连接到空间偏导数(沿 x 和 y)。

    将您正在分析的视频序列视为一个体积、时空体积。在任何给定点 (x,y,t),如果您想估计偏导数,即估计该点的 3D 梯度,那么您将受益于拥有相同内核支持的 3 个滤波器。

    有关为什么会这样的更多理论,请查看主题可引导过滤器,或者更好地查看偏导数应该是什么以及它如何与方向导数连接的基本概念。

    通常,首先估计 2D 梯度,然后人们倾向于认为时间导数其次是独立于 x 和 y 分量。这可能并且经常会导致最终光流计算中的数值错误。处理这些错误的常用方法是做一个正向和反向流估计,最后结合结果。

    考虑您正在估计的梯度的一种方法是它有一个 3D 支持区域。这种区域的最小尺寸应该是 2x2x2。

    如果您在第一张和第二张图像中都只使用 2x2 滤镜进行 2D 渐变,则通过平均两个滤镜的结果来收集 3D 体积的相应 FIR 滤镜。

    您应该在 2D 中具有相同的过滤器支持区域这一事实对大多数人来说是很清楚的:这就是为什么 Sobel 和 Scharr 算子看起来是这样的原因。

    您可以在Matlab toolbox that I made 中看到为光流精心设计的微分算子所获得的结果,部分是为了说明这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 2014-07-30
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多