Теоретический алгоритм для сжатия видео с потерями

от автора

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

Проблемы будущего

В начале 2013 года, YouTube побил свой рекорд по объему видео загружаемого на сервис в минуту. Более 100 часов видео обзоров, геймплеев, новостей, ну и конечно же котиков, загружаются на сервис каждые 60 секунд. День за днем эта цифра растет. С появлением Vine и видео в Instagram, количество видео данных создаваемых пользователями ежеминутно резко увеличилось. С ростом популярности интернет сервисов, доступности интернета, качества камер в мобильных телефонах и упрощением редактирования отснятого видео, число видео роликов с каждым годом будет все больше увеличиваться. Рано или поздно встанет вопрос о хранении всего отснятого материала на серверах видео хостингов.

Если сейчас достаточно провести апгрейд жестких дисков и количество места может увеличится в пару раз, но через какое-то время настанет физический лимит для хранения данных на жестких дисках. Он основан на принципе неопределенности Гейзенберга. Чем меньше расстояние между компонентами, тем выше шанс того, что бит поменяет своё состояние, что приведет к потере данных. Хоть сейчас SSD дискам далеко до этих ограничений, но тем не менее они существуют.

Развитие 3D видео

Сейчас идет бурное развитие 3D технологий, как съемки, так и отображения отснятого материала в 3D. Помимо всего прочего, 3D видео занимает в 2 раза больше дискового пространства, ведь для каждого глаза свой канал. Наступит день когда 3D камеры будут почти в каждом смартфоне, а пока есть только HTC Evo 3D и LG Optimus 3D.

Алгоритм сжатия

В большинстве случаев на видео запечатлены стандартные объекты, к примеру человек, машина, мяч и т.д. Эти объекты имеют определенную траекторию движения в пространстве относительно камеры. Для уменьшения количества дискового пространства занимаемого видео достаточно сохранить объекты и их траекторию движения, а затем воссоздать сцену «на лету».

Что будет происходить с видео после загрузки его на сервис:

  1. Обработка правого и левого канала для выделения объектов в видео
  2. Обработка выделенных объектов для определения их параметров и траектории движения
  3. Вырезание объектов из видео и сохранение только неопределенных частей сцены
  4. Сопоставление найденных объектов с базой 3D моделей
  5. Создания заголовков видео контейнера

Все тоже, только в картинках:

0. Исходное видео

1. Обработка правого и левого канала для выделения объектов в видео:

2. Обработка выделенных объектов для определения их параметров и траектории движения

3. Вырезание объектов из видео и сохранение только неопределенных частей сцены

4. Сопоставление найденных объектов с базой 3D моделей

5. Создания заголовков видео контейнера
Objects { 1 : 83213.3992.1337.113, 2 : 721.313.44, 3 : 72.815.664.2 }; Trajectory { 1 : [0 : { 'a' : 0, 'x' : 0, 'y' : 0, 'z' : 0 }, 132 : { 'a' : 0.1, 'x' : 1, 'y' : 0, 'z' : 0 } ] };

Ограничения алгоритма

Алгоритм обеспечивает хорошее сжатие только при наличии полной базы 3D объектов и большом количестве видео. Только в этом случае размер базы данных 3D объектов будет компенсирован сжатием. Этот алгоритм хорошо подойдет для огромных видео хостеров вроде YouTube, но маленькие хостеры скорее наоборот потратят слишком много места для хранения базы моделей.

Плюсы алгоритма

Большой плюс этого алгоритма, это возможность подмены объектов «на лету». Это может быть ответ на запрос пользователя, к примеру заменять всех монстров котятами. Тогда пользователь увидит:

Таким-же образом можно делать «анонимные» видео любого характера. То есть любых участвующих персонажей можно заменить на их 3D аналоги. Также, для максимального сжатия, можно собирать изображения неопознанных объектов, которые затем быть проанализированы и когда соберется достаточно качественных изображений, будет создана новая 3D модель, а видео с участием этих объектов пере-сжаты.

Такое сжатие видео может получить распространение только после совершенствования алгоритмов выделения и распознавания объектов. Хоть 3D видео и делает работу по обработке немного легче, сопоставление и вырезание объектов все равно остается нетривиальной задачей.

Я уверен что есть лучшие альтернативные методы сжатия видео с меньшими потерями, но я считаю что если вместо машины с царапиной на заднем левом крыле (которое не видно видео) будет стоять та-же машина без царапины, то смысл видео это не изменит. Кстати если клиенту передавать 3D объекты, где они могут кэшироваться, то воспроизведение HD роликов будет в разы быстрее, вне зависимости от скорости соединения и качества видео. Правда для этого понадобится быстрый алгоритм рендеринга моделей на клиенте. В крайнем случае видео можно собирать из частей с разных серверов, что заметно облегчит нагрузку на единичные машины и заодно увеличит скорость скачивание за счет многопоточности.

ссылка на оригинал статьи http://habrahabr.ru/post/197368/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *