用光流旋转物体?

Posted

技术标签:

【中文标题】用光流旋转物体?【英文标题】:rotating an object with opticalflow? 【发布时间】:2011-05-19 08:09:08 【问题描述】:

我对 C++ 和 openframeworks 比较陌生。我开始使用 Lucas Kanade 技术来操作对象。我在推动物体方面取得了一些成功,但不幸的是,我无法弄清楚如何正确旋转它们,甚至无法检测到何时发生旋转运动。

有没有人想分享任何指示或提示?

非常感谢, 否

【问题讨论】:

【参考方案1】:

光流计算本身并不能帮助您检测诸如“旋转运动”之类的东西。基本上,光流计算所做的只是逐个像素地查看变化,而旋转的意思是更大的像素变化聚合。一种算法需要检测诸如“对象边缘的所有像素都以(逆)顺时针方向流动”之类的东西。很难做到,而且我认为 OpenFrameworks 或 OpenCV 中没有任何东西可以帮助您。

您是否尝试检测图像中物体的旋转,或图像中会影响虚拟物体的旋转运动?如果是前者,我认为有 OpenCV 技术可以识别对象然后跟踪它们,包括旋转之类的东西。我认为要研究的东西就像“opencv object tracking”和“opencv object motion analysis”。

【讨论】:

我试图在图像中使用类似旋转的运动来影响虚拟对象。我想也许我会研究一下 opencv 的 camshift,谢谢。【参考方案2】:

计算运动的 2x3 仿射变换矩阵可能是一种解决方案。仿射变换矩阵包含平移和旋转运动至缩放。如果您使用的是 OpenCV,那么 cv::getAffineTransform 就是您要查找的内容,您可以在其中直接输入跟踪的特征点。

【讨论】:

以上是关于用光流旋转物体?的主要内容,如果未能解决你的问题,请参考以下文章

图像处理openCV光流法追踪运动物体

光流法详解之二(HS光流)

计算视频帧中物体的速度 - 光流(Matlab)

运动物体的光流:几个点

结合背景减法和光流

EmguCV:使用光流在运动物体上绘制轮廓?