Horn-Schunck 光流计算

Posted

技术标签:

【中文标题】Horn-Schunck 光流计算【英文标题】:Horn-Schunck optical flow calculations 【发布时间】:2013-03-01 10:44:47 【问题描述】:

我正在研究用于计算视频光流的 Horn-schunck 方法。我的代码是用 C 语言编写的,这意味着我要从头开始实现所有算法,包括对图像进行灰度缩放、计算导数等。我无法完全吸收该方法的精髓。我得到的最终流矩阵将包含每个像素的位移向量,对吧?对于每个像素,流矩阵中的值表示它在下一张图像中的位移量。

当我的所有像素值都在 0 到 255 之间时,我的所有计算都在这些像素值上完成,结果输出给出了位移,例如 1920 X 1080 图像。

【问题讨论】:

【参考方案1】:

您的方法的结果将是一个具有两个通道或两个矩阵的矩阵,一个用于 u(或 dx)方向/位移,另一个用于 v(或 dy)方向/位移。这意味着你有一个向量场

[u(x,y) v(x,y] = optical flow for each position (x,y) in your image

此向量字段(此字段的值)具有浮动精度。这意味着例如u(0,0) = 0.2 v(0,0) = 0.13。因此,在您的计算机的一部分中,您已将输入图像的灰度值转换为浮动值。这主要是在计算梯度时完成的,例如用 sobel 算子。 OpenCV 库有一个 Horn-Schunk 实现。虽然阅读代码需要一些时间,但您可以放心,这是实现此方法的一种非常有效的方式。

【讨论】:

以上是关于Horn-Schunck 光流计算的主要内容,如果未能解决你的问题,请参考以下文章

Horn-Schunck 光流实现问题

图像配准基于Horn-Schunck和Lucas-Kanade等光流场实现图像配准matlab源码含GUI界面

用于计算光流空间导数的 Python 库

计算机视觉图像处理面试笔试题整理——光流算法

在计算光流时,为啥帧没有价值?

光流算法:关于根据光流(单目)或视差(双目)进行图像变换的原理