Мне нужно отправить видео с камеры Kinect по сети. Я захватываю видео из следующих двух источников Kinect:
- Цветное 2D-видео (RGB). 32 бита на пиксель. 640x480 при 30 кадрах в секунду.
- Данные о глубине (D). 16 бит на пиксель, представляющие расстояние до ближайшего объекта в миллиметрах. 640x480 при 30 кадрах в секунду.
Это соответствует пропускной способности не менее примерно 53 МБ/с. Вот почему мне нужно кодировать (сжимать) оба источника видео в источнике, а затем декодировать в месте назначения. Данные RGB-D будут обрабатываться алгоритмом отслеживания объекта на цели.
До сих пор я нашел много статей, обсуждающих алгоритмы для решения этой задачи, например, эту: Внутрикадровое сжатие RGB и глубины для 3D-видео с низкой пропускной способностью
Проблема в том, что описанные в таких статьях алгоритмы не имеют общедоступной реализации. Я знаю, что мог бы реализовать их сам, но они используют многие другие сложные алгоритмы обработки изображений, о которых у меня нет достаточных знаний (обнаружение краев, характеристика контуров и т. д.).
На самом деле я также нашел некоторые библиотеки C++, основанные на использовании дискретного медианного фильтра, дельты (избегайте отправки избыточных данных) и сжатия LZ4: http://thebytekitchen.com/2014/03/24/data-сжатиедляkinect/
У меня вопрос: есть ли более простой и/или более эффективный способ сжатия данных RGB-D из источника Kinect?
PS: я пишу код на C++.