我写了一个使用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卡?有没有资源可以帮助我写作自己的方法?还有其他密集的算法可能表现更好吗?
谢谢!
由于出来的光流数据只有两个维度,您是否确定使用更高分辨率的图像可以获得更好的结果?我不会认为这会有很大的不同。也许你可以首先缩小镜头,比较全分辨率版本并检查精度 - 或者你可以增加'winSize'参数。 – Schnommus
是的,我缩小了用于光流分析的图像。分辨率太低时,会遗漏原始图像中的细节。理想情况下,我希望它能够以全分辨率运行。 – Ian