【问题标题】:Motion detection in compressed domain (JPEG/Mpeg4/H264)压缩域中的运动检测(JPEG/Mpeg4/H264)
【发布时间】:2012-04-23 15:00:12
【问题描述】:

大家!

我处理来自 IP 摄像机的视频,并编写了基于解压缩视频分析的运动检测算法。但我真的更快。我找到了几篇关于压缩域分析的论文,但没有找到任何实现。 谁能给我推荐一些代码?

找到的材料:
http://www.ist-live.org/intranet/school-of-informatics-university-of-bradford001-7/41410206.pdf/view
http://doc.rero.ch/lm.php?url=1000,43,4,20061128120121-NA/Bracamonte_Javier_-_A_Low_Complexity_Change_Detection_Algorithm_20061128.pdf

【问题讨论】:

  • 您是否尝试检测视频流或 JPEG 帧中的运动?在压缩视频流的 P 和 B 帧中检测运动并不难,因为唯一被压缩的是帧到帧的变化。一系列 JPEG 图像是一个不同的故事,因为每一帧都是完全内部压缩的。使用 JPEG 图像的频域将具有挑战性,但我想您可以检查每个 MCU 的帧间绝对差的总和。变化的总和和位置会提醒您运动。
  • 是的,我检测到来自网络摄像机的视频流中的运动。视频流可以是三种流行类型之一:MJPEG(JPEG 图像系列,但据我所知,无需完全重新压缩也可以检测它们之间的变化)、MPEG4 和 H.264。最好从任何给定的流类型开始。

标签: jpeg motion-detection mpeg-4


【解决方案1】:

我必须检测 H.264 视频中的运动,对我来说,帧大小是一个非常好的指标。

我使用 ffprobe(来自 ffmpeg 项目)来导出帧大小,如下所示:

./ffprobe -show_frames -pretty video.mp4 | grep 'size' | grep -o '[0-9]*' > sizes.txt

在我的情况下,无移动意味着更大的 I 帧(对我来说,每 30 帧就是一个 I 帧),而介于两者之间的某些帧的尺寸更小.

我是视频编码的新手,所以我猜这些东西可能在很大程度上取决于视频信号的编码和类型,但值得一看,因为它的试用速度非常快。导出帧大小并查看例如MATLAB。


编辑: 最后,我重新编码了视频,使每一秒帧都是一个 I 帧,因为这样可以提供更好的时间分辨率。我没有测试的一个想法是反转视频并做同样的事情,这应该可以更准确地估计运动开始/结束的时间,类似于通过前向后向滤波消除相位延迟。

【讨论】:

    【解决方案2】:

    https://github.com/Breakthrough/DVR-Scan

    DVR-Scan 是一个跨平台的命令行 (CLI) 应用程序, 自动检测视频文件中的运动事件(例如安全 相机镜头)。除了定位时间和持续时间 每个运动事件,DVR-Scan 将保存每个运动事件的镜头 到一个新的、单独的视频剪辑。 DVR-Scan 不仅免费,而且 开源软件 (FOSS),用 Python 编写,基于 Numpy 和 OpenCV,它被构建为可扩展和可破解的。

    我可以确认它与 MPEG4 (H264) AVI 文件完美配合。 对于 1200x900 视频,我的笔记本电脑配备 i5 4300U CPU 的扫描速度约为 30 fps。

    您可以查看所用算法的来源。

    以下是来自同一作者的一些解释性教程链接: https://github.com/Breakthrough/python-scene-detection-tutorial

    另见Python scene change detection

    【讨论】:

      猜你喜欢
      • 2010-12-29
      • 2013-04-01
      • 1970-01-01
      • 2010-10-10
      • 2014-02-02
      • 2011-03-29
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多