2012-04-11 3 views
2

все!Обнаружение движения в сжатом домене (JPEG/Mpeg4/H264)

Я обрабатываю видео с 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

+0

Вы пытаетесь обнаружить движение в видеопотоках или в JPEG-кадрах? Не так сложно обнаружить движение в кадрах P и B сжатого видеопотока, поскольку единственное, что сжимается, - это кадр для изменения кадра. Ряд изображений JPEG - это другая история, поскольку каждый кадр полностью сжимается. Работа с частотной областью изображений JPEG будет сложной задачей, но я полагаю, вы могли бы проверить сумму взаимных кадров абсолютных различий для каждого MCU. Суммы и позиции изменений будут предупреждать вас о движении. – BitBank

+0

Да, я обнаруживаю движение в видеопотоках с ip-камер. Видеопоток может быть одним из трех популярных типов: MJPEG (серия изображений JPEG, но, как я знаю, все еще можно обнаружить изменения между ними без полной рекомпрессии), MPEG4 и H.264. Было бы неплохо начать с любого из данных типов потоков. – paft

ответ

2

Я должен был обнаруживать движение в H.264-видео, и для меня размер кадра был очень хорошим показателем.

Я использовал ffprobe (из проекта FFmpeg), чтобы экспортировать размеры кадров, как это:

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

В моем случае нет движения означает больше I-кадров (для меня, каждый 30-й кадр был I-кадром) и меньшими размерами для некоторых из промежутков между кадрами.

Я новичок в кодировании видео, поэтому я думаю, что эти вещи могут сильно зависеть от кодирования и типа видеосигнала, но это стоит посмотреть, так как очень быстро попробовать. Экспортируйте рамки и смотрите, например. Matlab.


Edit: В конце концов я вновь закодированного видео, так что каждый второй кадр был I-кадра, так как это дает лучшее разрешение по времени. Одна из идей, которые я не тестировал, - это обратить вспять видео и сделать то же самое, это должно дать более точные оценки того, когда движение началось/закончилось, сродни снятию фазовой задержки с помощью фильтрации вперед-назад.