2011-09-01 24 views
2

我写了一个使用OpenCV的cvCalcOpticalFlowLK的程序。它在低分辨率网络摄像头输入上表现良好,但是我需要在全帧高清流上运行它,并在每帧的光流分析之后进行重要的其他计算。处理一个5分钟的视频缩小到1440x810需要4小时:(大部分时间都花费在cvCalcOpticalFlowLK提高密集光流分析(容易)的性能?

我研究了通过增加更多的原始CPU提高速度,但即使我得到一个8核心野兽,加速是理论上的理想(比如8倍,因为我基本上只使用我的2.9GHz核心之一),我只能得到4FPS,我想达到30FPS。似乎指向使用CUDA,OpenCL或GLSL(?)在GPU上实现它,我发现了一些概念验证实现(例如,http://nghiaho.com/?page_id=189),许多论文基本上都说“这是一个非常棒的GPU应用程序,我们做到了,这真棒,不,我们不会分享我们的代码。“不用说,我没有得到任何代码来运行。

有谁知道基于GPU的实现,可以在Mac上运行NVIDIA卡?有没有资源可以帮助我写作自己的方法?还有其他密集的算法可能表现更好吗?

谢谢!

+0

由于出来的光流数据只有两个维度,您是否确定使用更高分辨率的图像可以获得更好的结果?我不会认为这会有很大的不同。也许你可以首先缩小镜头,比较全分辨率版本并检查精度 - 或者你可以增加'winSize'参数。 – Schnommus

+0

是的,我缩小了用于光流分析的图像。分辨率太低时,会遗漏原始图像中的细节。理想情况下,我希望它能够以全分辨率运行。 – Ian

回答

1

OpenVidia Bayesian Optical Flow怎么样?另外,文件Real-Time Dense and Accurate Parallel Optical Flow using CUDA表示他们的工作可以在CUDA区域免费获得。我无法立即在那里找到它,但也许你会,或者可以写作者?

+0

谢谢。看起来像第一个是Windows,但可能提供一个很好的起点。第二篇是我在第一篇文章中提到的那些论文之一。也许写作者会有所帮助。在OpenVIDIA页面上也可以找到它,他们说它有一个LK教程:http://www.amazon.com/gp/product/0321749642 – Ian