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

Posted

技术标签:

【中文标题】用于计算光流空间导数的 Python 库【英文标题】:Python library for computing spatial derivatives of optical flow 【发布时间】:2011-10-27 19:04:54 【问题描述】:

我正在尝试在 Python 中使用 OpenCV 从视频中计算差分图像速度不变量(例如卷曲、发散、变形等)。为此,我需要计算光流 x、y 方向的空间导数。不幸的是,OpenCV 似乎只提供用于计算光流的 API,而不是它的衍生产品。

是否有任何 Python 库可用于计算光流的空间导数? 我发现这个 SO 问题与Lucas Kanade Optical Flow, Direction Vector 有点相似,并且该人编写了用于计算空间导数的代码,但如果可能的话,我会喜欢一个库而不是自己编写代码。任何建议将不胜感激!

【问题讨论】:

为什么要自己写代码?将该人的代码转储到文件夹中,添加__init__.pyimport 它也不是一个真正的库......它也是有人自己编写的代码:P Python 中的库只是一个包含 Python 文件的文件夹。另外,计算光流的导数不是一项相当简单的任务吗?您只需对数据进行平滑处理,用多项式对其进行近似,然后对多项式进行微分即可。 很可能是;在我的谷歌搜索中,我发现的“光流导数”的唯一结果是 1)如何计算光流,以及 2)很难消化的非常技术性的学术文章。我希望一个图书馆已经存在,但如果我能弄清楚我在这方面做什么,我可以自己写它。我理解主要思想,但技术细节我不确定,因为我找不到很好的解释。 【参考方案1】:

这就是我看到它的方式(我已经使用了一点光流):

您想计算光流场的各个偏导数;一个用于x 方向,一个用于y

我会尝试这样解决问题:

将流数组/矩阵拆分为两个矩阵:xy 流。 对于其中的每一个,您都可以走天真的路线,只做一个简单的区别:derivative = current_state - last_state。但是这种方法非常混乱,因为导数会对最轻微的错误很敏感。 为了解决这个问题,您可以使用易于微分的回归曲线(如多项式)来近似数据点的一部分(可能是整行?)。

只需区分近似曲线,就可以开始了。

您也可以只对单个矩阵进行平滑处理并进行简单的差分,这应该比近似数据点快得多,但应该更能容忍错误。

【讨论】:

这一切都很有意义。我想我正在寻找的是高级直觉(将易于微分的多项式与数据拟合)与执行该任务的代码之间的某种概念联系。我找到了 scipy.signal 库,它似乎有我需要的东西,但现在我遇到了 Python TypeErrors。然而,这可能值得提出自己的问题。谢谢你的帮助!另外,喜欢搅拌机! :) 大声笑,没问题。我喜欢这种东西。

以上是关于用于计算光流空间导数的 Python 库的主要内容,如果未能解决你的问题,请参考以下文章

Horn-Schunck 光流计算

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

KLT 光流

使用 python 的 OpenCV 光流

光流(Optical flow)-视频分析基础概念

使用 FFmpeg 计算光流大小