h.264压缩视频中的对象跟踪

时间:2013-11-13 18:57:49

标签: c++ video h.264 beagleboard

我正在开展一个项目,要求我从连接到Beagleboard xm的网络摄像头中检测和跟踪实时视频中的人物。 我已经在像素域中使用Opencv完成了这项任务。电路板上的结果非常准确,但速度极慢。许多人建议我留下像素域并在h.264 / MPEG-4压缩视频中执行相同的任务,因为它会极大地减少计算开销。 我已经阅读了很多研究论文,但未能发现任何可用于分析和处理h.264压缩视频的软件平台或库。 如果有人能为我推荐一些h.264压缩视频分析库并引导我进一步指导我,我将感激不尽。

谢谢和问候。

3 个答案:

答案 0 :(得分:0)

我不确定这是多么实际(我从来没有尝试过这样做),但是我的猜测就是他们所指的那样会寻找一块所有(几乎)相同的运动矢量的宏块。

例如,假设您有一台没有平移的摄像头,图片显示汽车在屏幕上行驶。查看运动矢量,具有(大致)车形的一组宏块,这些宏块都具有相似的运动矢量(表示汽车的运动)。然后,您可以单独查看该块并尝试识别它,而不是查看您感兴趣的对象的整个图片。同样地,如果摄像机正在用汽车进行平移,那么你将拥有一个带有小运动矢量的汽车形状的块,并且大部分背景将在汽车运动的相反方向上具有相似的运动矢量。

但请注意,这可能是最不精确的。例如,让我们假设我们神秘的汽车在砖砌建筑物前面行驶,车头灯照亮了一些砖块。在这种情况下,一张照片中的砖块(很容易)可能(很容易)没有指向前一张照片中的同一块砖,而是指向前一张照片中的砖块,该砖块恰好被照亮。砖块足够相似,最接近的匹配将更多地取决于照明而不是砖本身。

答案 1 :(得分:0)

最终,您可以解析并确定h.264有一个对象,但这不会像您要查找的那样“对象跟踪”。 openCV是优秀的软件,它做得最好。你有没有考虑过将视频缩小到更小的分辨率,以便openCV更容易分析?

我认为你高估了这台45美元电脑的计算能力。物理识别和跟踪在计算上非常难以理解。我首先要看看你的电路板每秒可以跟踪和优化的帧数。开始查看瓶颈所在的位置,您可能最好处理原始视频,而不必先解码h.264视频。同样,RAW视频占用了大量的RAM,并且通过它进行处理需要大量的CPU。

最大限度地减少解码视频的开销,通过在分析前缩小视频来最小化RAM开销,但最后,您需要从1ghz,32位ARM处理器中获取大量数据。

答案 2 :(得分:-1)

FFMPEG是一个非常古老的图书馆,现在一天都不受支持。它在h.264压缩视频中的处理和对象跟踪方面的能力非常有限。大多数命令通常都已过时。 最好的方法是彻底研究h.264,然后尝试用Java或c#等语言实现自己的API。