Сжатие видео RGB-D с камеры Kinect

Мне нужно отправить видео с камеры Kinect по сети. Я захватываю видео из следующих двух источников Kinect:

  1. Цветное 2D-видео (RGB). 32 бита на пиксель. 640x480 при 30 кадрах в секунду.
  2. Данные о глубине (D). 16 бит на пиксель, представляющие расстояние до ближайшего объекта в миллиметрах. 640x480 при 30 кадрах в секунду.

Это соответствует пропускной способности не менее примерно 53 МБ/с. Вот почему мне нужно кодировать (сжимать) оба источника видео в источнике, а затем декодировать в месте назначения. Данные RGB-D будут обрабатываться алгоритмом отслеживания объекта на цели.

До сих пор я нашел много статей, обсуждающих алгоритмы для решения этой задачи, например, эту: Внутрикадровое сжатие RGB и глубины для 3D-видео с низкой пропускной способностью

Проблема в том, что описанные в таких статьях алгоритмы не имеют общедоступной реализации. Я знаю, что мог бы реализовать их сам, но они используют многие другие сложные алгоритмы обработки изображений, о которых у меня нет достаточных знаний (обнаружение краев, характеристика контуров и т. д.).

На самом деле я также нашел некоторые библиотеки C++, основанные на использовании дискретного медианного фильтра, дельты (избегайте отправки избыточных данных) и сжатия LZ4: http://thebytekitchen.com/2014/03/24/data-сжатиедляkinect/

У меня вопрос: есть ли более простой и/или более эффективный способ сжатия данных RGB-D из источника Kinect?

PS: я пишу код на C++.


person jaime.ferbec    schedule 15.12.2015    source источник


Ответы (1)


В недавнем поиске проблемы я нашел статью, в которой описывается сжатие изображений глубины с использованием видеокодека h264. Авторы также предоставляют базовое программное обеспечение:

Проблема в том, что h264 может создавать артефакты сжатия. Чтобы свести к минимуму ошибки, вносимые кодеком, изображение глубины разбивается на несколько каналов, которые представляют разные диапазоны расстояний.

person Lars Schillingmann    schedule 22.09.2017