2. наличие подключения к сети Интернет;
. наличие свободной памяти размером не менее 128 МБ;
. ОС Android версии не менее 2.3.3.
Требования к информационным структурам и методам решения
Для решения задач обработки видео необходимо использовать вычислительный кластер. Основной парадигмой разработки серверной части системы должен являться сервис-ориентированный подход. Данное требование обусловлено тем, что данный подход обеспечит наиболее быструю обработку видеоданных и модульность самой системы, что, в свою очередь, позволить увеличить расширяемость системы в целом.
Требования к исходным кодам и языкам программирования
Требования к системе:
Требуемая операционная система - Linux
Требуется наличие в системе наиболее распространенных видео кодаков
Требования к языку программирования, компилятору, библиотекам:
Язык написания программы - с /с++
Код должен компилироваться компилятором из коллекции GCC
Не допускается применение платных библиотек с закрытыми исходными кодами
Рекомендуется использовать библиотеку OpenCV
Требования к защите информации и программ
Требования к защите информации и программ не предъявляются.
Специальные требования отсутствуют.
Данный программный продукт не подразумевает получения экономической прибыли и не используется в коммерческих целях.
Программный продукт должен сопровождаться пояснительной запиской, содержащей:
· описание всех реализованных фильтров;
· руководство пользователя
для конфигурирования и запуска системы.
Весь цикл разработки подсистемы обработки делиться на следующие этапы:
) исследование и обоснование стадии создания;
) научно-исследовательская работа;
) разработка и утверждение технического задания;
) разработка алгоритма решения задачи;
) определение формы представления входных и выходных данных;
) разработка структуры программы;
) программирование и отладка программы;
) проведение испытаний системы;
) анализ результатов испытаний;
) оформление рабочей документации;
3. Обзор аналогов
На данный момент существует ряд сервисов, предоставляющих возможности по созданию и просмотру видео трансляций в режиме реального времени. В этом разделе будут рассмотрены основные из них.
Данный сервис разработан компанией Qik. В январе 2011 года была куплена компанией Skype, которая в свою очередь была куплена компанией Microsoft в мае 2011 года. На данный момент владельцем и разработчиком технологии является Microsoft Skype Division.- это приложения для создания видео трансляций в режиме реального времени и двухсторонних конференций, которое позволяет пользователям транслировать видеопотоки со своих телефонов в сеть Интернет [1].
Данный сервис бесплатно предоставляет клиент для просмотра, создания прямой трансляции и записи до 25 видео в расширении VGA. При регистрации премиум-аккаунта у пользователя появляется возможность посылать и получать видео письма, записывать видео в HD качестве, обращаться в приоритетную службу поддержки, использовать службу Qik Desktop для загрузки и синхронизации видео с разных устройств. На сегодняшний момент данный сервис доступен на платформах Google Android, Apple iOS, BlackBerry, Symbian OS [2].
Ключевым отличием разрабатываемой системы от системы Qik будет предоставление пользователю возможности обработки видео (фильтры, выделение контуров, осветление, затемнение и т.д.).
Проект, разрабатываемый одноименной шведской фирмой, предоставляет возможности транслирования видео с различных платформ (Android, iOS, Symbian) [3]. По своим функциональным возможностям очень близок к Qik.
В данном проекте также нет возможности фильтрации и какой-либо обработки видео на сервере. Также не предоставляется клиент для просмотра трансляций. Соответственно все трансляции необходимо просматривать через web-интерфейс.
Данный широкораспространенный сервис лишь частично напоминает разрабатываемую систему, так как Youtube предназначен для хранения видео, а не трансляции в режиме онлайн. В данном сервисе для просмотра пользователем видео, находящегося на сервере используется технология peer-to-peer, что положительно сказывается на скорости загрузки видео пользователями. Для просмотра архива трансляций в разрабатываемом проекте будет использована схожая технология.
Ключевое отличие - ориентированность на обработку и просмотр
уже готовых видео-файлов, а не потоков видео, поступающих в режиме онлайн.
Свободная утилита для захвата, монтажа и редактирования видеопотока для платформы Windows, лицензированная на условиях GNU General Public License (GPL) [4]. Может использоваться для простых линейных операций над файлами формата видео. Также VirtualDub может использовать встроенные фильтры или подключаемые модули сторонних разработчиков.
В частности, по адресу [5] доступно большое количество модулей, разработанных в лаборатории компьютерной графики ВМиК МГУ. В том числе на сайте представлены фильтры, позволяющие удалять шум с видео, восстанавливать его качество после сжатия, изменять яркость и контрастность, повысить резкость.
Очевидным недостатком утилиты VirtualDub является ее платформозависимость, а также привязанность к определенному формату обрабатываемых файлов - avi.
Профессиональная программа для монтажа и редактирования видео. Способна изменять яркость и контрастность, размывать и добавлять резкости, работать с цветовым балансом изображения [6]. Основным недостатком являются ее высокие ресурсозатраты, из-за чего последние версии программы не способны работать с 32-х битными системами. Так же к недостаткам можно отнести то, что программа доступна только для операционных систем Windows и Mac OS X.
Программа для создания/редактирования видео. Входит в состав клиентских версий ОС windows, позволяет применять к видео простые эффекты, вроде изменения разрешения видеоклипа.
AvideMux - свободная, кроссплатформенная программа для
быстрого редактирования видеофайлов (удаления ненужных частей, наложения
всевозможных фильтров и последующего кодирования). Поддерживаемые форматы видео
AVI, MPEG, MP4/MOV, OGM, ASF/WMV, MKV и FLV, имеется богатый набор
фильтров (в их числе фильтры устранения шума и повышения резкости).
4. Выбор технологии реализации и инструментария
Главным требованием, выдвигаемым к выбору инструментария
является скорость работы. Согласно техническому заданию, подсистема подготовки
видеопотока должна стремиться минимизировать задержку воспроизведения видео
вследствие применения алгоритмов обработки. Исходя из этих соображений было
принято решение об использовании языка С++ вместе с открытой библиотекой
компьютерного зрения OpenCV.
(GNU Compiler Collection - Коллекция компиляторов GNU) - набор компиляторов для различных языков программирования, разработанный в рамках проекта GNU. GCC является свободным программным обеспечением, распространяется фондом свободного программного обеспечения (FSF) на условиях GNU GPL и GNU. Он используется как стандартный компилятор для свободных UNIX-подобных операционных систем [7].поддерживается группой программистов со всего мира. GCC является лидером по количеству процессоров и операционных систем, которые он поддерживает.
Будучи официальным компилятором системы GNU, GCC также является главным компилятором для сборки ряда других операционных систем, среди них: различные варианты Linux и BSD, а также ReactOS, Mac OS X, OpenSolaris, NeXTSTEP и BeOS.часто выбирается для разработки программного обеспечения, которое должно работать на большом числе различных аппаратных платформ. Различия между «родными» для каждой из аппаратных платформ компиляторами приводят к трудностям при разработке кода, который бы корректно компилировался разными компиляторами, а кроме того, при использовании различных компиляторов сильно усложняются сборочные скрипты, которые должны собирать ПО для всех аппаратных платформ. При использовании GCC для компиляции кода под разные платформы будет использован один и тот же синтаксический анализатор. Поэтому если удалось собрать программу для одной из целевых платформ, то велика вероятность, что программа нормально соберётся и для других платформ.
Внешний интерфейс GCC является стандартом для компиляторов на
платформе UNIX. Пользователь вызывает управляющую программу, которая называется
gcc. Она интерпретирует аргументы командной строки, определяет и запускает для
каждого входного файла свои компиляторы нужного языка, запускает, если
необходимо, ассемблер и компоновщик.версии 4.2.1 и старше выпускался под
лицензией GNU General Public License версии 2. Все последующие версии
лицензируются по GPL версии 3 [7].
это высокоуровневая библиотека алгоритмов машинного зрения с открытым исходным кодом. Предоставляет широкий ряд инструментальных средств для обработки и распознавания графических изображений, оптимизированных для работы в режиме реального времени.
С момента своего альфа-релиза в январе 1999 года, OpenCV была использована во многих приложениях и научно-исследовательских работах, в том числе: наложение обычных карт и фотографий со спутника, выравнивание документов при сканировании, удаление шума из медицинских изображений, анализ объектов, системы безопасности, автоматическое наблюдение, системы контроля качества на производстве, калибровка камер, а также беспилотные летательные, наземные и подводные аппараты [8].
Библиотека написана на оптимизированном С и может работать с многоядерными процессорами. Также существуют средства позволяющие использовать ее с языками Java, Python, Matlab и др. Является кроссплатформенной, может быть установлена на операционных системах Windows, Linux, Android и Mac OS X.
Библиотека свободна как для академического или коммерческого использования.
Платформы и инструменты, поддерживаемые библиотекой OpenCV [9]:
1. Microsoft Windows: компиляторы Microsoft Visual C++ (6.0,.NET 2003), Intel Compiler, Borland C++, Mingw (GCC 3.x).
2. Linux: GCC (2.9x, 3.x), Intel Compiler: «./configure-make-make install», RPM (spec файл включен в поставку).
. Linux: GCC (2.9x, 3.x), Intel Compiler: «./configure-make-make install», RPM (spec файл включен в поставку).
. Mac OS X: GCC (3.x, 4.x).
. Android.
. iOS - неофициально.
Средства GUI, захват видео:
1. Microsoft Windows: DirectShow, VfW, MIL, CMU1394.
2. Linux: V4L2, DC1394, FFMPEG.
. Mac OS X: QuickTime.
5. Реализация системы
.1 Обзор существующих алгоритмов обработки изображений
Цифровой шум - это дефект изображения, представляющий собой случайным образом расположенные области, имеющие размеры близкие к размеру пикселя и отличающиеся от исходного изображения яркостью или цветом. Шумоподавление играет важную роль при передаче, обработке и сжатии видеопоследовательностей и изображений [10].
Шум на видео может возникать по нескольким причинам [12]:
1. Неидеальное оборудование для захвата видео.
2. Плохие условия съемки - например, ночная фото/видеосъемка, съемка в ненастную погоду.
. Помехи при передаче по аналоговым каналам - наводки от источников электромагнитных полей, собственные шумы активных компонентов (усилителей) линии передачи. Примером может служить телевизионный сигнал.
. Неточности фильтрации при выделении яркостного и цветоразностных сигналов из аналогового композитного сигнала и т. п.
Величина шума на изображении может варьироваться от почти незаметного пятнышка на цифровой фотографии, сделанной в хорошем свете, до астрономических снимков, шум на которых скрывает большую часть полезной информации, получить которую можно только путем трудоемкой обработки изображения.
Шум бывает разных типов, в зависимости от характера случайного распределения помех на изображении. На практике наиболее часто встречаются следующие его виды:
Белый Гауссовский шум
Одним из самых распространенных шумов является адиттивный гауссовский шум, который характеризуется добавлением к каждому пикселю изображения значений с нормальным распределением и с нулевым средним значением. Термин «аддитивный» означает, что данный вид шума суммируется с полезным сигналом. Возникает при плохих условиях приема сигнала [12].
Цифровой шум
Причина возникновения цифрового шума чаще всего связана с особенностями аппаратуры, используемой для съемки - обычно с недостаточной светочувствительностью матрицы. Данный вид шума характеризуется заменой части пикселей на изображении значениями фиксированной или случайной величины [13]. Если яркость точек примерно равна, цифровой шум также называют «импульсным». Если интенсивность точек может меняться от черного к белому, такой шум называют шумом типа «соль и перец».
Обычно данный тип шума оказывает влияние только на небольшое число пикселей изображения.
Комбинированный шум
Значительно реже встречаются случаи, когда изображение в равном объеме зашумлено гауссовским шумом и случайными импульсами. Такую совокупность называют комбинированным шумом.
Дефекты сканирования изображений
Так же на изображении могут появляться посторонние эффекты, такие как трещины, царапины, помятости. Эти артефакты не имеют однородной структуры, определение их формы и расположения в основном не поддается математическому анализу. Борьба с дефектами такого рода возможна только с помощью ручной обработки изображения, поэтому в данной работе они не рассматриваются.
Существует большое количество алгоритмов устранения шума с изображений, причем их могут применять не только специальные программы обработки, но и некоторые фото и видеокамеры. Не смотря на это до сих пор не существует универсального алгоритма фильтрации, так как при обработке изображения неизменно встает необходимость выбора между степенью устранения нежелательных эффектов и сохранностью мелких деталей, имеющих аналогичные шуму характеристики. Кроме того, алгоритм, легко справляющийся с одним видом шума, может только испортить изображение с другим типом помех.
Рассмотрим несколько наиболее известных алгоритмов подавления шума на изображениях.
Линейное усреднение пикселей
Простейшая идея удаления шума - усреднять значения пикселей в пространственной окрестности [12]. Поскольку шум меняется независимо от пикселя к пикселю, шумы соседних пикселей при суммировании будут компенсировать друг друга. Задается прямоугольное окно, которое по очереди накладывается на каждый пиксель изображения. Значение центрального пикселя вычисляется на основе анализа всех соседних с ним пикселей, попавших в область окна. Соответственно, чем больше взятое окно, тем более усредненное значение получится в итоге, что приводит к сильному размывающему эффекту.
В простейшем варианте анализ соседних пикселей заключается в нахождении их среднего арифметического значения. Для уменьшения влияния пикселей, не принадлежащих той же области что и рассматриваемый (например, темному контуру на светлом фоне) можно ввести некоторый числовой порог и учитывать при вычислении только тех соседей, отличие которых от центрального пикселя не превосходит этот порог. Чем большей будет пороговая величина, тем сильнее будет происходить усреднение. Рассмотренный вариант можно усложнить, введя весовые коэффициенты для каждого соседнего пикселя в зависимости от их расстояния до цента рассматриваемой области.