Подсистема подготовки видеопотока к онлайн-трансляции
Анализ существующих алгоритмов фильтрации и сегментации изображений. Разработка алгоритмов обработки видеопотока на основе выделенных быстрых методов. Реализация принимающей части цепочки сервер-клиент, получающую видеопоток с мобильного устройства.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 24.01.2016 |
Размер файла | 337,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
ПОДСИСТЕМА ПОДГОТОВКИ ВИДЕОПОТОКА К ОНАЛАЙН-ТРАНСЛЯЦИИ
Введение
Вычислительная техника давно стала привычным средством решения множества разноплановых задач, важнейшей из которых является обработка, хранение и передача информации.
В начале развития компьютерной техники вся информация в основном представлялась в цифровом, а позже в текстовом виде. Но с увеличением вычислительной мощности электронных устройств все большее значение приобретает именно медиа-информация.
Изображения и видео могут использоваться для поиска и распознавания информации, но в первую очередь как средство её хранения и передачи. Повсеместное распространение электронных мобильных устройств, таких как телефоны, КПК, и смартфоны, их все возрастающие технические характеристики делают такой обмен доступным широкому кругу людей. Возможность снять видео и позже выложить его в сеть сейчас предоставляет очень много различных сервисов, коммерческих и нет.
В связи с этим большую важность сегодня приобретает такой раздел компьютерной графики как улучшение качества изображений. Так как видео-поток, по сути является совокупностью изображений-кадров, классические алгоритмы обработки изображений применимы и к видео. Проблему составляют только сложные ресурсоемкие вычисления, происходящие во время этой обработки. До недавних пор даже незначительная коррекция видео приводила к ощутимой задержке при его воспроизведении, в связи с чем большинство существующих программ обработки предназначены для повышения качества уже отснятых видео-файлов.
Предметной областью данного дипломного проекта является сервис онлайн-трансляции видео.
Иногда в жизни возникают ситуации, когда требуется передать видео по сети в реальном времени. Примерами могут служить получающие все большее распространение онлайн-видеоконференции, новости с места событий в прямом эфире, информация с камер слежения и т.п. Подобный функционал способен предоставить сервис онлайн-трансляции видео.
Трансляция может происходить с различных мобильных устройств, имеющих доступ в интернет. Необходимым условием работы является установленное на транслирующем устройстве приложение для создания трансляций. Запустив это приложение пользователь активирует камеру своего устройства, записываемые при этом видео и аудио по сети отправляются на сервер.
Сервер принимает входящий поток от устройства и организует доступ к нему других пользователей, отображая ссылку на транслируемый поток в списке текущих трансляций. На странице транслируемого потока присутствует проигрыватель, отображающий получаемое видео и аудио в режиме реального времени.
В качестве стороны, принимающей трансляцию может выступать как клиентское приложение для мобильного устройства, так и веб-клиент (браузер).
Принимающее мобильное устройство должно иметь доступ в интернет, а также установленное приложение для просмотра трансляций. После запуска приложения пользователь может ввести сам или выбрать среди доступных на сервере ссылку на транслируемый видео-поток. После этого мобильное устройство начинает получать видео- и аудиоданные от сервера и воспроизводить их. Просмотр продолжается до остановки трансляции или выключения приложения.
На текущий момент клиентская часть сервиса ориентирована на операционную систему Android, и, соответственно, на поддерживающие её мобильные устройства.
Трансляция может происходить не только с различных устройств, но и в самых различных ситуациях. При использовании камер с низким разрешением, при съемке в плохую погоду, даже просто вследствие передачи по сети на видео могут появляться нежелательные эффекты, такие как шумы, проблемы с освещением, вибрация. Кроме того, принимающее устройство может не совпадать по характеристикам с передающим. В случае, если видео транслируется, к примеру с профессиональной камеры, а принимается на дешевом мобильном телефоне, нет смысла увеличивать трафик передавая неизменный видеопоток устройству, которое все равно не сможет воспроизвести его в полной мере. И наоборот, если входное видео низкого качества предполагается к воспроизведению на устройстве с высокими характеристиками, можно постараться его улучшить (повысить разрешение, сгладить, настроить резкость и контрастность)
Все это подводит к необходимости создания сервиса предобработки изображений перед трансляцией. Проблема состоит в том, что обработка видео требует больших временных затрат, что неприемлемо при онлайн-трансляции, когда даже малейшая задержка сразу заметна.
Актуальность дипломной работы заключается разработке алгоритмов улучшения качества видео-потока, не привязанных к конкретной платформе, а также в применении высокопроизводительных вычислительных систем для минимизации задержки, возникающей при обработке.
1. Постановка задачи
Предмет исследования: Возможность (целесообразность) применения алгоритмов обработки изображений для подготовки видеопотока к трансляции в реальном времени.
Цель дипломной работы:
Разработка алгоритмов обработки видеопотока, адаптированных к режиму онлайн-трансляции и их реализация на конечном множестве вычислительных узлов (вычислительном кластере) в виде совокупности сервисов, каждый из которых представляет отдельный фильтр.
Для достижения поставленной цели можно выделить следующие задачи:
1. Провести анализ существующих алгоритмов фильтрации и сегментации изображений.
2. Выявить наиболее быстрые методы.
3. Разработать алгоритмы обработки видеопотока на основе выделенных методов.
4. Реализовать разработанные алгоритмы на ЭВМ с использованием языка С++, в среде разработки Visual Studio.
5. Перенести разработанные алгоритмы на ОС Linux.
6. Реализовать принимающую часть цепочки сервер-клиент, получающую видеопоток с мобильного устройства.
Поставленные задачи реализуются с использованием следующих средств:
1. Изучение и анализ литературных источников по фильтрации и сегментации изображений.
2. Изучение и анализ литературных источников по обработке видеопотоков.
3. Изучение документации к открытой библиотеке компьютерного зрения OpenCV.
Критерий эффективности -- разработка системы подготовки видеопотока к трансляции, минимизация задержки отображения видеопотока подверженного предварительной обработке фильтрами.
Разрабатываемое ПО, должно включать в себя набор следующих компонентов:
- шумоподавляющий фильтр
- фильтр резкости
- фильтр цветокоррекции
- компонент сегментации
- компонент выделения контуров
- компонент интерполяции кадра (изменения разрешения)
2. Техническое задание
2.1 Введение
Разрабатываемый комплекс программ предназначен для предварительной обработки видеопотока, участвующего в трансляции в режиме реального времени. Обработка позволяет повысить качество транслируемого видео, устранить негативные эффекты, возникающие вследствие сжатия и перекодировки потока, а также несовершенства записывающего оборудования.
Область применения разрабатываемой системы достаточно многогранна. На принципах онлайн-трансляции основаны видеоконференции, получающие все более широкое распространение как средство ведения диалога (например, между бизнес-партнерами). Другим примером надлежащего применения сервиса видео-трансляции могут служить новости, репортажи с мест важных событий в прямом эфире, трансляция спортивных мероприятий. Немаловажной областью применения является передача в реальном времени видеопотока с камер наблюдения.
2.2 Основание для разработки
алгоритм видеопоток мобильный сервер
Задание на дипломный проект по специальности «230105 - Программное обеспечение вычислительной техники и автоматизированных систем».
Томский государственный университет систем управления и радиоэлектроники. Факультет систем управления. Кафедра автоматизированных систем управления.
2.3 Назначение разработки
Система онлайн-трансляции разрабатывается в рамках исследования для гранта «Методы и технологии разработки сервис-ориентированных систем анализа и идентификации изображений». Главным вопросом исследования является целесообразность применения распределенных вычислений для ускорения обработки транслируемого видео-потока.
2.4 Требования к программе
Система должна представлять собой набор программ, ключевыми из которых будут:
1. Клиентское приложение для создания трансляций (мобильные устройства под управлением ОС Android).
2. Клиентское приложение для просмотра трансляций (мобильные устройства под управлением ОС Android).
3. Серверное приложение для просмотра трансляций через web-интерфейс (сервер под управлением ОС Linux).
4. Планировщик (сервер под управлением ОС Linux).
5. Менеджер потоков (сервер под управлением ОС Linux).
6. Набор сервисов для обработки изображения (узлы обработки/сервер).
Примечание: система по возможности должна обладать свойством расширяемости. Это необходимо для того, чтобы в будущем была возможность добавить клиентские приложения и на другие платформы.
Требования к функционалу клиентских приложений для создания трансляций
Приложение должно предоставлять возможность создавать трансляцию видео и аудио потоков с мобильных устройств в режиме реального времени.
Для работы приложения, установленного на неком мобильном устройстве, требуется наличие у этого устройства исправно работающей камеры, микрофона и стабильного доступа в интернет. В случае несоблюдения одного из этих условий приложение должно выдавать пользователю соответствующую информацию, диагностирующую проблему и предлагающую способы ее решения: проверить подключение к интернету, настроить камеру или микрофон, вести трансляцию только видео или только аудио и т.д.
Если все условия для нормальной работы приложения соблюдены, оно должно запросить у пользователя данные(логин-пароль) для регистрации видеопотока на сервере. После ввода необходимой информации и начала трансляции приложение должно предоставить пользователю ссылку на эту трансляцию.
Требования к функционалу клиентских приложений для просмотра трансляций
Данное приложение должно предоставлять возможность воспроизведения видео и аудио потоков, получаемых с сервера на мобильном устройстве в режиме реального времени.
Для работы приложения необходимо наличие на мобильном устройстве доступа к сети Интернет. В случае его отсутствия клиентское приложение должно выдавать соответствующее диагностическое сообщение и прекращать работу.
Иначе пользователю необходимо предоставить возможность выбрать желаемую для воспроизведения видеотрансляцию из списка доступных на сервере.
Интерфейс приложения для просмотра трансляций должен содержать кнопки, позволяющие остановить и вновь возобновить воспроизведение получаемого потока.
Требования к функционалу web-клиента для просмотра трансляций.
Web-клиент для просмотра трансляций должен предоставлять следующие функции:
1. Регистрация пользователя в системе.
2. Авторизация пользователя.
3. Выдача списка текущих трансляций.
4. Выход на трансляцию по прямой ссылке.
На странице с выбранной трансляцией должен присутствовать проигрыватель, который будет отображать видео, получаемое от пользователя, создавшего трансляцию, в режиме реального времени.
Требования к функционалу подсистемы обработки видеопотока перед трансляцией на принимающее устройство.
Подсистема должна быть представлена в виде нескольких отдельных программ, каждая из которых должна представлять собой соответствующий фильтр:
1. Фильтрация адиттивного белого шума.
2. Фильтрация импульсного шума.
3. Фильтр изменяющий резкость изображения.
4. Фильтр цветокоррекции (осветление, повышение контрастности).
5. Выделение контуров на изображении.
6. Сегментация изображения.
7. Изменение размера кадра (Для передачи видео между устройствами с разными характеристиками).
Требования к надежности
Разрабатываемая подсистема должна быть устойчива:
1. к внезапному обрыву связи
2. к искажению входной информации
3. к отсутствию части входной информации
4. к изменению количества доступных вычислительных узлов
5. к локальным техническим сбоям на вычислительных узлах
Требования к обеспечению надежного функционирования программного комплекса
Надежное (устойчивое) функционирование программного комплекса должно быть обеспечено выполнением совокупности организационно-технических мероприятий, перечень которых приведен ниже:
1. Организацией бесперебойного питания технических средств.
2. Использованием лицензионного программного обеспечения.
3. Регулярным выполнением рекомендаций Министерства труда и социального развития РФ, изложенных в Постановлении от 23 июля 1998 г. Об утверждении межотраслевых типовых норм времени на работы по сервисному обслуживанию ПЭВМ и оргтехники и сопровождению программных средств».
4. регулярным выполнением требований ГОСТ 51188-98. Защита информации. Испытания программных средств на наличие компьютерных вирусов.
Время восстановление после отказа
Время восстановления после отказа, вызванного сбоем электропитания технических средств (иными внешними факторами), не фатальным сбоем (не крахом) операционной системы, не должно превышать 30-ти минут при условии соблюдения условий эксплуатации технических и программных средств. Время восстановления после отказа, вызванного неисправностью технических средств, фатальным сбоем (крахом) операционной системы, не должно превышать времени, требуемого на устранение неисправностей технических средств и переустановки программных средств.
Отказы из-за некорректных действий пользователей системы
Отказы программы вследствие некорректных действий пользователя при взаимодействии с программой недопустимы.
Требования к составу и параметрам технических средств
Вычислительный кластер, состоящий из 1 управляющего узла и нескольких вычислительных узлов с наличием доступа к сети Интернет.
Требования к управляющим и вычислительным узлам:
1. процессор Intel Xeon 5300;
2. количество процессоров/ядер - 2/8;
3. разрядность - 64;
4. тактовая частота - 2,3 Ггц;
5. не менее 8 Гб оперативной памяти;
6. не менее 160 Гб жесткий диск.
Требования к клиентам под управлением ОС Android:
1. наличие камеры и (или) микрофона;
2. наличие подключения к сети Интернет;
3. наличие свободной памяти размером не менее 128 МБ;
4. ОС Android версии не менее 2.3.3.
Требования к информационной и программной совместимости
Требования к информационным структурам и методам решения
Для решения задач обработки видео необходимо использовать вычислительный кластер. Основной парадигмой разработки серверной части системы должен являться сервис-ориентированный подход. Данное требование обусловлено тем, что данный подход обеспечит наиболее быструю обработку видеоданных и модульность самой системы, что, в свою очередь, позволить увеличить расширяемость системы в целом.
Требования к исходным кодам и языкам программирования
Требования к системе:
Требуемая операционная система -- Linux
Требуется наличие в системе наиболее распространенных видео кодаков
Требования к языку программирования, компилятору, библиотекам:
Язык написания программы -- с /с++
Код должен компилироваться компилятором из коллекции GCC
Не допускается применение платных библиотек с закрытыми исходными кодами
Рекомендуется использовать библиотеку OpenCV
Требования к защите информации и программ
Требования к защите информации и программ не предъявляются.
Специальные требования
Специальные требования отсутствуют.
Технико-экономические показатели
Данный программный продукт не подразумевает получения экономической прибыли и не используется в коммерческих целях.
Требования к программной документации
Программный продукт должен сопровождаться пояснительной запиской, содержащей:
· описание всех реализованных фильтров;
· руководство пользователя для конфигурирования и запуска системы.
2.5 Стадии и этапы разработки
Весь цикл разработки подсистемы обработки делиться на следующие этапы:
1) исследование и обоснование стадии создания;
2) научно-исследовательская работа;
3) разработка и утверждение технического задания;
4) разработка алгоритма решения задачи;
5) определение формы представления входных и выходных данных;
6) разработка структуры программы;
7) программирование и отладка программы;
8) проведение испытаний системы;
9) анализ результатов испытаний;
10) оформление рабочей документации;
3. Обзор аналогов
3.1 Аналоги сервиса видео-трансляции
На данный момент существует ряд сервисов, предоставляющих возможности по созданию и просмотру видео трансляций в режиме реального времени. В этом разделе будут рассмотрены основные из них.
Данный сервис разработан компанией Qik. В январе 2011 года была куплена компанией Skype, которая в свою очередь была куплена компанией Microsoft в мае 2011 года. На данный момент владельцем и разработчиком технологии является Microsoft Skype Division.
Qik - это приложения для создания видео трансляций в режиме реального времени и двухсторонних конференций, которое позволяет пользователям транслировать видеопотоки со своих телефонов в сеть Интернет [1].
Данный сервис бесплатно предоставляет клиент для просмотра, создания прямой трансляции и записи до 25 видео в расширении VGA. При регистрации премиум-аккаунта у пользователя появляется возможность посылать и получать видео письма, записывать видео в HD качестве, обращаться в приоритетную службу поддержки, использовать службу Qik Desktop для загрузки и синхронизации видео с разных устройств. На сегодняшний момент данный сервис доступен на платформах Google Android, Apple iOS, BlackBerry, Symbian OS [2].
Ключевым отличием разрабатываемой системы от системы Qik будет предоставление пользователю возможности обработки видео (фильтры, выделение контуров, осветление, затемнение и т.д.).
Проект, разрабатываемый одноименной шведской фирмой, предоставляет возможности транслирования видео с различных платформ (Android, iOS, Symbian) [3]. По своим функциональным возможностям очень близок к Qik.
В данном проекте также нет возможности фильтрации и какой-либо обработки видео на сервере. Также не предоставляется клиент для просмотра трансляций. Соответственно все трансляции необходимо просматривать через web-интерфейс.
Сервисы видео хостинга на примере Youtube
Данный широкораспространенный сервис лишь частично напоминает разрабатываемую систему, так как Youtube предназначен для хранения видео, а не трансляции в режиме онлайн. В данном сервисе для просмотра пользователем видео, находящегося на сервере используется технология peer-to-peer, что положительно сказывается на скорости загрузки видео пользователями. Для просмотра архива трансляций в разрабатываемом проекте будет использована схожая технология.
Ключевое отличие - ориентированность на обработку и просмотр уже готовых видео-файлов, а не потоков видео, поступающих в режиме онлайн.
3.2 Аналоги представленных фильтров обработки видео-потока
Свободная утилита для захвата, монтажа и редактирования видеопотока для платформы Windows, лицензированная на условиях GNU General Public License (GPL) [4]. Может использоваться для простых линейных операций над файлами формата видео. Также VirtualDub может использовать встроенные фильтры или подключаемые модули сторонних разработчиков.
В частности, по адресу [5] доступно большое количество модулей, разработанных в лаборатории компьютерной графики ВМиК МГУ. В том числе на сайте представлены фильтры, позволяющие удалять шум с видео, восстанавливать его качество после сжатия, изменять яркость и контрастность, повысить резкость.
Очевидным недостатком утилиты VirtualDub является ее платформозависимость, а также привязанность к определенному формату обрабатываемых файлов -- avi.
Adobe Premiere Pro
Профессиональная программа для монтажа и редактирования видео. Способна изменять яркость и контрастность, размывать и добавлять резкости, работать с цветовым балансом изображения [6]. Основным недостатком являются ее высокие ресурсозатраты, из-за чего последние версии программы не способны работать с 32-х битными системами. Так же к недостаткам можно отнести то, что программа доступна только для операционных систем Windows и Mac OS X.
Windows Movie Maker
Программа для создания/редактирования видео. Входит в состав клиентских версий ОС windows, позволяет применять к видео простые эффекты, вроде изменения разрешения видеоклипа.
AvideMux - свободная, кроссплатформенная программа для быстрого редактирования видеофайлов (удаления ненужных частей, наложения всевозможных фильтров и последующего кодирования). Поддерживаемые форматы видео AVI, MPEG, MP4/MOV, OGM, ASF/WMV, MKV и FLV, имеется богатый набор фильтров (в их числе фильтры устранения шума и повышения резкости).
4. Выбор технологии реализации и инструментария
4.1 Требования, выдвигаемые к инструментарию
Главным требованием, выдвигаемым к выбору инструментария является скорость работы. Согласно техническому заданию, подсистема подготовки видеопотока должна стремиться минимизировать задержку воспроизведения видео вследствие применения алгоритмов обработки. Исходя из этих соображений было принято решение об использовании языка С++ вместе с открытой библиотекой компьютерного зрения OpenCV.
4.2 Компилятор GCC
GCC (GNU Compiler Collection - Коллекция компиляторов GNU) -- набор компиляторов для различных языков программирования, разработанный в рамках проекта GNU. GCC является свободным программным обеспечением, распространяется фондом свободного программного обеспечения (FSF) на условиях GNU GPL и GNU. Он используется как стандартный компилятор для свободных UNIX-подобных операционных систем [7].
GCC поддерживается группой программистов со всего мира. GCC является лидером по количеству процессоров и операционных систем, которые он поддерживает.
Будучи официальным компилятором системы GNU, GCC также является главным компилятором для сборки ряда других операционных систем, среди них: различные варианты Linux и BSD, а также ReactOS, Mac OS X, OpenSolaris, NeXTSTEP и BeOS.
GCC часто выбирается для разработки программного обеспечения, которое должно работать на большом числе различных аппаратных платформ. Различия между «родными» для каждой из аппаратных платформ компиляторами приводят к трудностям при разработке кода, который бы корректно компилировался разными компиляторами, а кроме того, при использовании различных компиляторов сильно усложняются сборочные скрипты, которые должны собирать ПО для всех аппаратных платформ. При использовании GCC для компиляции кода под разные платформы будет использован один и тот же синтаксический анализатор. Поэтому если удалось собрать программу для одной из целевых платформ, то велика вероятность, что программа нормально соберётся и для других платформ.
Внешний интерфейс GCC является стандартом для компиляторов на платформе UNIX. Пользователь вызывает управляющую программу, которая называется gcc. Она интерпретирует аргументы командной строки, определяет и запускает для каждого входного файла свои компиляторы нужного языка, запускает, если необходимо, ассемблер и компоновщик.
GCC версии 4.2.1 и старше выпускался под лицензией GNU General Public License версии 2. Все последующие версии лицензируются по GPL версии 3 [7].
4.3 Библиотека OpenCV
OpenCV это высокоуровневая библиотека алгоритмов машинного зрения с открытым исходным кодом. Предоставляет широкий ряд инструментальных средств для обработки и распознавания графических изображений, оптимизированных для работы в режиме реального времени.
С момента своего альфа-релиза в январе 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 файл включен в поставку).
3. Linux: GCC (2.9x, 3.x), Intel Compiler: «./configure-make-make install», RPM (spec файл включен в поставку).
4. Mac OS X: GCC (3.x, 4.x).
5. Android.
6. iOS -- неофициально.
Средства GUI, захват видео:
1. Microsoft Windows: DirectShow, VfW, MIL, CMU1394.
2. Linux: V4L2, DC1394, FFMPEG.
3. Mac OS X: QuickTime.
5. Реализация системы
5.1 Обзор существующих алгоритмов обработки изображений
Цифровой шум - это дефект изображения, представляющий собой случайным образом расположенные области, имеющие размеры близкие к размеру пикселя и отличающиеся от исходного изображения яркостью или цветом. Шумоподавление играет важную роль при передаче, обработке и сжатии видеопоследовательностей и изображений [10].
Шум на видео может возникать по нескольким причинам [12]:
1. Неидеальное оборудование для захвата видео.
2. Плохие условия съемки - например, ночная фото/видеосъемка, съемка в ненастную погоду.
3. Помехи при передаче по аналоговым каналам - наводки от источников электромагнитных полей, собственные шумы активных компонентов (усилителей) линии передачи. Примером может служить телевизионный сигнал.
4. Неточности фильтрации при выделении яркостного и цветоразностных сигналов из аналогового композитного сигнала и т. п.
Величина шума на изображении может варьироваться от почти незаметного пятнышка на цифровой фотографии, сделанной в хорошем свете, до астрономических снимков, шум на которых скрывает большую часть полезной информации, получить которую можно только путем трудоемкой обработки изображения.
Шум бывает разных типов, в зависимости от характера случайного распределения помех на изображении. На практике наиболее часто встречаются следующие его виды:
Белый Гауссовский шум
Одним из самых распространенных шумов является адиттивный гауссовский шум, который характеризуется добавлением к каждому пикселю изображения значений с нормальным распределением и с нулевым средним значением. Термин «аддитивный» означает, что данный вид шума суммируется с полезным сигналом. Возникает при плохих условиях приема сигнала [12].
Цифровой шум
Причина возникновения цифрового шума чаще всего связана с особенностями аппаратуры, используемой для съемки -- обычно с недостаточной светочувствительностью матрицы. Данный вид шума характеризуется заменой части пикселей на изображении значениями фиксированной или случайной величины [13]. Если яркость точек примерно равна, цифровой шум также называют «импульсным». Если интенсивность точек может меняться от черного к белому, такой шум называют шумом типа «соль и перец».
Обычно данный тип шума оказывает влияние только на небольшое число пикселей изображения.
Комбинированный шум
Значительно реже встречаются случаи, когда изображение в равном объеме зашумлено гауссовским шумом и случайными импульсами. Такую совокупность называют комбинированным шумом.
Дефекты сканирования изображений
Так же на изображении могут появляться посторонние эффекты, такие как трещины, царапины, помятости. Эти артефакты не имеют однородной структуры, определение их формы и расположения в основном не поддается математическому анализу. Борьба с дефектами такого рода возможна только с помощью ручной обработки изображения, поэтому в данной работе они не рассматриваются.
Алгоритмы удаления шума
Существует большое количество алгоритмов устранения шума с изображений, причем их могут применять не только специальные программы обработки, но и некоторые фото и видеокамеры. Не смотря на это до сих пор не существует универсального алгоритма фильтрации, так как при обработке изображения неизменно встает необходимость выбора между степенью устранения нежелательных эффектов и сохранностью мелких деталей, имеющих аналогичные шуму характеристики. Кроме того, алгоритм, легко справляющийся с одним видом шума, может только испортить изображение с другим типом помех.
Рассмотрим несколько наиболее известных алгоритмов подавления шума на изображениях.
Линейное усреднение пикселей
Простейшая идея удаления шума - усреднять значения пикселей в пространственной окрестности [12]. Поскольку шум меняется независимо от пикселя к пикселю, шумы соседних пикселей при суммировании будут компенсировать друг друга. Задается прямоугольное окно, которое по очереди накладывается на каждый пиксель изображения. Значение центрального пикселя вычисляется на основе анализа всех соседних с ним пикселей, попавших в область окна. Соответственно, чем больше взятое окно, тем более усредненное значение получится в итоге, что приводит к сильному размывающему эффекту.
В простейшем варианте анализ соседних пикселей заключается в нахождении их среднего арифметического значения. Для уменьшения влияния пикселей, не принадлежащих той же области что и рассматриваемый (например, темному контуру на светлом фоне) можно ввести некоторый числовой порог и учитывать при вычислении только тех соседей, отличие которых от центрального пикселя не превосходит этот порог. Чем большей будет пороговая величина, тем сильнее будет происходить усреднение. Рассмотренный вариант можно усложнить, введя весовые коэффициенты для каждого соседнего пикселя в зависимости от их расстояния до цента рассматриваемой области.
Данный метод можно применять также во временной области, усредняя каждый пиксель по соседним кадрам видеопотока (каждый пиксель будет усредняться по пикселям, расположенным в той же позиции в соседних кадрах).
Этот алгоритм очень прост, но он не дает хорошего результата, вместе с тем приводя к сильному размытию деталей изображения.
Фильтр Гаусса
Имеет принцип действия сходный с предыдущим методом и так же относится к числу сглаживающих фильтров. Однако шумоподавление при помощи линейного усредняющего фильтра имеет существенный недостаток: все соседи обрабатываемого пикселя оказывают на результат одинаковый эффект, независимо от их расстояния до него. Фильтр Гаусса так же усредняет центральный пиксель и его соседей в некоторой области, только происходит это по определенному закону, который задает функция Гаусса.
(5.1)
Где параметр у задает степень размытия, а параметр A обеспечивает нормировку [12]. В итоге центральный пиксель рассматриваемой области будет имеет наибольшее значение, соответствующее пику распределения Гаусса. Значения остальных элементов будут оказывать все меньшее влияние по мере удаления от центра.
Матричный фильтр, посчитанный по указанной формуле, называется гауссианом; чем больше его размер, тем сильнее размытие (при фиксированном у). Поскольку данный фильтр сепарабелен, то его можно представить в виде:
(5.2)
Отсюда следует, что свертку можно производить последовательно по строкам и по столбцам, что приводит к значительному ускорению работы метода при больших размерах фильтра.
Алгоритм 2Dcleaner
Заменяет каждый пиксель изображения средним значением соседних пикселей, взятых в области ограниченной некоторым радиусом. При этом рассматриваются не все точки, попавшие в радиус, а только те, значение которых отличается от центрального пикселя не более чем на некоторую заранее заданную величину (порог) [14]. Благодаря этому равномерно окрашенные области размываются сильнее, чем резкие границы объектов. Это позволяет снизить низкоуровневый шум на изображении, вместе с тем сохранив нетронутыми мелкие детали.
Медианная фильтрация
Линейные алгоритмы оказываются очень эффективными при подавлении помех гауссовского характера, когда соседние пиксели хоть и имеют некоторый случайный разброс значений, но все же остаются в пределах некоторого среднего значения, характерного для области, к которой они принадлежат. Однако порой приходится иметь дело с изображениями, искаженными другими видами помех. Примером такой помехи является импульсный шум, проявляющийся в наличии на изображении хаотично разбросанных точек случайной яркости. Усреднение в этом случае “размазывает” каждую такую точку на соседние пиксели, приводя к ухудшению качества изображения.
Стандартным способом подавления импульсного шума является медианная фильтрация. Этот нелинейный метод обработки изображений позволяет устранить резкие выбросы, но, в отличие от усредняющих линейных алгоритмов, оставляет монотонные последовательности пикселей без изменения. Благодаря этому, медианные фильтры способны сохранять без искажений контуры объектов и перепады между областями различной яркости, при этом эффективно подавляя некоррелированные помехи и малоразмерные детали.
Принцип фильтрации: Задается некое окно нечетного размера, последовательно накладывающееся на каждый пиксель изображения. Среди всех пикселей, попавших в рассматриваемую область, включая центральный, ищется медианное значение, которое в итоге присваивается центральному пикселю области. Под медианой в данном случае понимается срединный элемент массива отсортированных значений пикселей, принадлежащих области. Нечетный размер окна выбирается именно для того чтобы обеспечить существование срединного пикселя.
Возможно применение медианного фильтра и для подавления белого гауссовского шума на изображении. Однако исследование подавления шума при помощи медианной фильтрации показывает, что ее эффективность при решении этой задачи ниже, чем у линейной фильтрации [15].
Медианная фильтрация не лишена недостатка, свойственного большинству шумоподавляющих фильтров - при увеличении размера маски для улучшения степени подавления шума происходит снижение четкости изображения и размытие его контуров. Однако существует возможность свести негативные эффекты к минимуму, применяя медианную фильтрацию с динамическим размером маски (аддитивная медианная фильтрация) [16] Ее принцип остается тем же, только размер скользящего окна фильтрации может изменяться в зависимости от яркости соседних пикселей.
Повышение резкости изображения
Практически все алгоритмы подавления шума на изображении приводят его размытию, в результате теряются мелкие детали, затрудняется восприятие изображения. Частично компенсировать этот негативный эффект и восстановить утраченный контурный контраст и цветовые переходы способен фильтр повышения резкости изображения. Резкость может зависеть и от многих других факторов - от качества объектива, от используемой диафрагмы, от толщины анти-муарового фильтра, находящегося на матрице большинства цифровых камер, в различной степени размывающего изображение. Также резкость изображений зачастую необходимо увеличивать после уменьшения их размеров, потому что при этом неизбежно теряется часть информации а с ней и чёткость контуров.
Нерезкое маскирование - это прием, позволяющий за счет усиления контраста переходов между тонами изображения улучшить его визуальное восприятие из-за иллюзии повышения резкости. На самом деле резкость остается на том же уровне, ведь в принципе невозможно восстановить утерянные детали изображения, но улучшение контраста между участками разной яркости приводит к тому что изображение воспринимается как более четкое.
Рисунок 5.1 - Иллюстрация понятия «резкость контура»
Резкость изображения зависит от величины перепада яркости между областями (W), образующими его контуры, и от резкости изменения этого перепада (H).
Прием нерезкого маскирования был впервые применен еще для обработки пленочных фотографий [17]. Приспособленный к цифровой обработке изображений метод мало отличается от оригинального: из изображения вычитается так называемая “нерезкая маска” - его размытая и инвертированная копия. Итогом становится новое изображение, содержащее только светлые контуры оригинала. Темные контуры можно получить простым инвертированием результата.
Если в дальнейшем вычесть из исходного изображения темные контуры и прибавить светлые, получится значительное усиление контрастности на каждом перепаде яркости.
Для размытия оригинала с целью получения “нерезкой маски” можно использовать любой из шумоподавляющих фильтров, например, фильтр Гаусса.
Рисунок 5.2 - Результат применение нерезкого маскирования
Операция свертки довольно часто применяется при обработке изображений. Кроме повышения резкости она используется для размытия, увеличения яркости, осветления и т.д.
Свёрткой изображения называют операцию вычисления нового значения заданного пикселя, при которой учитываются значения окружающих его соседних пикселей. В общем значении, этот термин означает некоторое действие, которое выполняется над каждой частью изображения [8].
Главным элементом свертки является маска свертки - это матрица (произвольного размера и отношения сторон). Часто такую маску называют фильтром, ядром, шаблоном или окном. Значения элементов матрицы принято называть коэффициентами.
Чаще всего в качестве ядра свертки используется квадратная матрица.
Обработка изображения операцией свертки происходит следующим образом: На каждый пикселю изображения последовательно накладывается центральный элемент матрицы, называемый “якорем”. Новое значение рассматриваемого пикселя вычисляется как сумма значений соседних пикселей, умноженных на соответствующие им коэффициенты маски свертки.
Получаемый эффект зависит от выбранного ядра свертки.
Ядро контрастоповышающего фильтра имеет значение, большее 1, в точке (0, 0), при общей сумме всех значений, равной 1. Например, контрастоповышающим фильтром является фильтры с ядрами, задаваемыми матрицами [18]:
Эффект повышения контраста достигается за счет того, что фильтр подчеркивает разницу между интенсивностями соседних пикселей, удаляя эти интенсивности друг от друга. Этот эффект будет тем сильней, чем больше значение центрального члена ядра.
Линейная контрастно-повышающая фильтрация на основе свертки может привести к возникновению видимых цветных ореолов вокруг контуров изображения.
Компенсация разности освещения
Проблемы освещенности изображения чаще всего возникают при попадании в кадр окон, солнца или других нерегулируемых источников света.
Такая ситуация называется «избытком света» и приводит к тому, что из-за слишком яркого контрфорсного освещения детали и цвета предметов, расположенных на фоне чересчур ярких объектов, теряются, становясь трудно различимыми.
Так же часто встречается ситуация недостатка света. Её причиной может быть съемка в темных помещениях с плохой освещенностью, а также ограниченный диапазон чувствительности видеоаппаратуры.
Алгоритм Single Scale Retinex
При попытке осветлить изображение путем увеличения яркости каждого пикселя на некоторое фиксированное значение, изначально светлые участки могут оказаться совсем засвеченными.
В таких случаях требуется применять “умную” цветокоррекцию, которая была бы способна выравнивать освещение на изображении, обрабатывая светлые участки в меньшей степени нежели темные.
Этим требованиям удовлетворяет алгоритм Single Scale Retinex, основанный на принципах устройства рецепторов сетчатки глаза. Основная цель алгоритма - разделить изображение на компоненты, отвечающие отдельно за освещенность и детали. Так как проблемы в изображении связаны с освещением сцены, то, получив компоненту, отвечающую за освещение, становится возможным преобразовать её отдельно от изображения, тем самым значительно повысив его качество.
Любое изображение можно представить, как произведение высокочастотного сигнала (отражение - R) и низкочастотного сигнала (освещенность - I) [19].
S(x,y) = I(x,y) * R(x,y)(5.6)
Рисунок 5.3 - Представление изображения в алгоритме Retinex.
Приближенное изображение освещения можно получить с помощью низкочастотной фильтрации -- иными словами, просто размыть исходное изображение, к примеру, фильтром Гаусса.
I(x,y)=G*S(x,y)
где G -- Гауссовский фильтр
Так как логарифм сигнала не меняет частотность, и благодаря свойствам логарифмической функции (логарифм от произведения равен сумме логарифмов сомножителей), задачу разделения произведения сигналов можно упростить до задачи разделения суммы сигналов.
После этого останется только взять от полученного сигнала экспоненту, чтобы вернуть его к исходному масштабу амплитуд. Полученную высокочастотную компоненту можно сложить с размытым и осветленным исходным изображением, выступающим в качестве новой модели освещенности.
Полученный от выравнивания освещенности эффект может оказаться слишком сильным (темные области станут по яркости такими же, как и светлые). Чтобы уменьшить эффект, можно просто смешать обработанное изображение с исходным в определенной пропорции.
Гамма-коррекция
Изначальное предназначение гамма-коррекции - компенсация различий в отображаемых цветах на различных устройствах вывода так, чтобы изображение выглядело одинаково при просмотре на различных мониторах. Благодаря нелинейному виду применяемой степенной функции, гамма-коррекция позволяет также повысить контрастность затемненных участков изображения, не засвечивая яркие детали и не теряя различимость границ объектов изображения.
Информация о яркости в аналоговом виде в телевидении, а также в цифровом виде в большинстве распространённых графических форматов, хранится в нелинейной шкале. Яркость пиксела на экране монитора можно считать пропорциональной
где I -- яркость пиксела на экране дисплея (или яркости составляющих цвета, красной, зелёной и синей по отдельности),
V -- численное значение цвета от 0 до 1, а
г -- показатель гамма-коррекции [20].
Если г меньше 1, то характеристика передачи уровней будет выпуклой и результирующее изображение будет светлее, чем исходное. Если г больше 1, то характеристика передачи уровней будет вогнутой и результирующее изображение будет темнее, чем исходное.
По умолчанию параметр г равен 1, что соответствует линейной характеристике передачи уровней и отсутствию гамма - коррекции.
Выделение контуров изображения
Контурный анализ может применяться для описания, распознавания, сравнения и поиска графических объектов, представленных в виде внешних очертаний. Так как использование контуров исключает из рассмотрения внутренние точки объекта, это позволяет значительно снизить вычислительную и алгоритмическую сложность данных операций.
Рисунок 5.4 - Изменение вида степенной функции в зависимости от параметра г
Контур объекта - это список точек, которые представляют собой некую кривую на изображении, отделяющую объект от фона. Чаще всего вдоль контура наблюдается скачок по яркости или цвету [8].
Для упрощения поиска контуров на изображении можно предварительно провести его бинаризацию.
Фильтр Собеля выделяет границы объектов основываясь на их яркости. Так как составляющая цвета при этом не учитывается, изображения предварительно должны быть преобразованы в оттенки серого.
Фильтр Собеля применяется последовательно к каждому пикселю, вычисляя приближенное значение градиента его яркости. Градиент для каждой точки изображения (функция яркости) -- это двумерный вектор, компонентами которого являются производные яркости изображения по горизонтали и вертикали [21].
В каждой точке изображения градиентный вектор ориентирован в направлении наибольшего увеличения яркости, а его длина соответствует величине изменения яркости. Эти данные позволяют сделать предположение о вероятности нахождения рассматриваемой точки на границе некого объекта, а так же об ориентации этой границы.
Т.о. результатом работы оператора Собеля в точке области постоянной яркости будет нулевой вектор, а в точке, лежащей на границе областей различной яркости -- вектор, пересекающий границу в направлении увеличения яркости.
Для вычисления приближенных значений производных в каждой точке изображения фильтр Собеля использует свертку с матрицей размером 3Ч3.
Коэффициенты матрицы Собеля [21]:
Итоговая величина градиента вычисляется путем аппроксимируции по формуле:
|G| = |Gx| + |Gy|
Детектор границ Кенни
Хотя работа Кенни была проведена на заре компьютерного зрения (1986), детектор границ Кенни до сих пор является одним из лучших детекторов. Метод Кенни является многоэтапным алгоритмом, и включает в себя следующие шаги [22]:
1. Очистка изображения от шума и лишних деталей.
2. Очистка изображения от шума и лишних деталей.
3. Поиск градиентов изображения, к примеру, оператором Собеля.
4. Подавление не-максимумов. Только локальные максимумы отмечаются как границы.
5. Двойная пороговая фильтрация. Потенциальные границы определяются порогами.
6. Трассировка контуров (Связать края в контуры)
Так как малейший шум на изображении может нарушить целостность его контуров, перед началом поиска рекомендуется провести фильтрацию изображения любым шумоподавляющим методом. В силу высокой скорости работы и простоты реализации, наиболее часто используется фильтр Гаусса. Границы на изображении могут находиться в различных направлениях, поэтому алгоритм Кенни использует четыре фильтра для выявления горизонтальных, вертикальных и диагональных границ. Воспользовавшись оператором обнаружения границ (например, оператором Собеля) получается значение для первой производной в горизонтальном направлении (Gу) и вертикальном направлении (Gx). Из этого градиента можно получить угол направления границы:
Q=arctan(Gx/Gy)
Угол направления границы округляется до одной из четырех углов, представляющих вертикаль, горизонталь и две диагонали (например, 0, 45, 90 и 135 градусов). Границами объявляются только те пиксели, в которых достигается локальный максимум градиента в направлении вектора градиента. Значение направления должно быть кратно 45°. После подавления не-максимумов, края становятся более точными и тонкими.
На следующем шаге путем пороговой фильтрации для каждого рассматриваемого пикселя определяется, относится ли он к границам изображения. Чем выше будет порог, тем более однородными будут находимые контуры, однако слабые края могут быть проигнорированы. С другой стороны, при уменьшении порога повышается восприимчивость алгоритма к шуму. Выделение границ Кенни использует два порога фильтрации: если значение пикселя выше верхней границы - он принимает максимальное значение (граница считается достоверной), если ниже - пиксель подавляется, точки со значением, попадающим в диапазон между порогов, принимают фиксированное среднее значение (они будут уточнены на следующем этапе).
Последний этап обработки изображения заключается в связывании отдельных краев в однородные контуры. Пиксели, получившие на предыдущем шаге среднее значение либо подавляются (если они не соприкасаются ни с одним из уже обнаруженных краев) либо присоединяются к соответствующему контуру.
Сегментация
Большая часть изображений, получаемых с фото- и видеоаппаратуры являются растровыми, то есть состоящими из цветных точек, расположенных в виде прямоугольной сетки. Однако люди воспринимают окружающий мир как совокупность цельных объектов, а не матрицу из точек. Человеческий мозг способен объеденить разрозненные детали изображения в однородные области, на подсознательном уровне четко разделив его на объекты. Этот процесс называется сегментацией, и может быть реализован программно при решении задачи компьютерного анализа изображения и распознавания образов. Сегментация выполняется на первых этапах анализа, и качество её выполнения может оказать сильное влияние на его скорость и точность.
Методы сегментации можно разделить на два класса: автоматические - не требующие взаимодействия с пользователем и интерактивные - использующие пользовательский ввод непосредственно в процессе работы.
Во первом случае никакая априорная информация о свойствах областей не используется, зато на само разбиение изображения накладываются некоторые условия (например, все области должны быть однородны по цвету и текстуре). Так как при такой постановке задачи сегментации не используется априорная информация об изображенных объектах, то методы этой группы универсальны и применимы к любым изображениям.
Для грубой оценки качества метода в конкретной задаче обычно фиксируют несколько свойств, которыми должна обладать хорошая сегментация:
§ однородность регионов (однородность цвета или текстуры);
§ непохожесть соседних регионов;
§ гладкость границы региона;
§ маленькое количество мелких «дырок» внутри регионов [23];
Пороговая сегментация
Пороговая обработка является самым простым методом, ориентированным на обработку изображений, отдельные однородные участки которых различаются средней яркостью. Однако если изображение освещено неравномерно, часть объектов может совпасть по интенсивности с фоном, что сделает пороговую сегментацию неэффективной.
Простейшим и вместе с тем часто применяемым видом пороговой сегментации является бинарная сегментация, когда на изображении выделяется только два типа однородных участков [24].
При этом преобразование каждой точки исходного изображения в выходное выполняется по правилу:
где x0 - единственный параметр обработки, называемый порогом. Уровни выходной яркости y0 и y1, могут быть произвольными, они лишь выполняют функции меток, при помощи которых осуществляется разметка получаемой карты - отнесение ее точек к классам К1 или К2 соответственно. Если образуемый препарат подготавливается для визуального восприятия, то часто их значения соответствуют уровням черного и белого. Если существует более двух классов, то при пороговой обработке должно быть задано семейство порогов, отделяющих яркости различных классов друг от друга.
Пороговая сегментация хорошо подходит для выделения на изображении малого количества не пересекающихся объектов, имеющих однородную структуру и резко выделяющихся из фона. С увеличением степени неоднородности изображения, а значит, количества сегментов и их сложности, данный тип сегментации становиться неэффективным.
Сегментация основанная на разбиении графа
Методы теории графов - одно из наиболее активно развивающихся направлений в сегментации изображений.
Общая идея методов этой группы следующая. Изображение представляется в виде взвешенного графа, с вершинами в точках изображения. Вес ребра графа отражает сходство точек в некотором смысле (расстояние между точками по некоторой метрике). Разбиение изображения моделируется разрезами графа [23].
Обычно в методах теории графов вводится функционал «стоимости» разреза, отражающий качество полученной сегментации. Так задача разбиения изображения на однородные области сводится к оптимизационной задаче поиска разреза минимальной стоимости на графе. Такой подход позволяет помимо однородности цвета и текстуры сегментов управлять также формой сегментов, их размером, сложностью границ и т. п.
Подобные документы
Изучение и программная реализация в среде Matlab методов обработки, анализа, фильтрации, сегментации и улучшения качества рентгеновских медицинских изображений. Цифровые рентгенографические системы. Разработка статически обоснованных алгоритмов.
курсовая работа [4,7 M], добавлен 20.01.2016Методы восстановления видеоряда при потерях в канале передачи данных. Битовая скорость данных. Клиент-серверная архитектура. Робастная оценка потерь. Внедрение помехоустойчивого кодирования в алгоритм адаптации видеопотока. Метод наложения избыточности.
дипломная работа [428,5 K], добавлен 22.11.2015Выбор методов обработки и сегментации изображений. Математические основы примененных фильтров. Гистограмма яркости изображения. Программная реализация комплексного метода обработки изображений. Тестирование разработанного программного обеспечения.
курсовая работа [1,3 M], добавлен 18.01.2017Анализ существующих алгоритмов обработки информации человеком и современных моделей памяти. Разработка алгоритмов и математической модели ассоциативного мышления. Имитационная модель обработки информации. Компьютерный эксперимент по тестированию модели.
курсовая работа [2,3 M], добавлен 19.11.2014Расчет нагрузки от трансляции цифрового видеопотока в районы обслуживания провайдера для вещания в стандарте DVB-T. Обеспечение трафика услуг транспортной магистрали. Каналы передачи данных VoIP, IPTV, Интернет. Оборудование и системы управления сетью.
курсовая работа [756,8 K], добавлен 08.02.2016Характеристика модели клиент-сервер как технологии взаимодействия в информационной сети. Разработка и описание алгоритмов работы приложений на платформе Win32 в среде Microsoft Visual Studio, использующих для межпроцессного взаимодействия сокеты.
курсовая работа [544,6 K], добавлен 02.06.2014Положения алгоритмов сжатия изображений. Классы приложений и изображений, критерии сравнения алгоритмов. Проблемы алгоритмов архивации с потерями. Конвейер операций, используемый в алгоритме JPEG. Характеристика фрактального и рекурсивного алгоритмов.
реферат [242,9 K], добавлен 24.04.2015Обработка изображений на современных вычислительных устройствах. Устройство и представление различных форматов изображений. Исследование алгоритмов обработки изображений на базе различных архитектур. Сжатие изображений на основе сверточных нейросетей.
дипломная работа [6,1 M], добавлен 03.06.2022Проблема улучшения качества отпечатков пальца с целью повышения эффективности работы алгоритмов биометрической аутентификации. Обзор алгоритмов обработки изображений отпечатков пальцев. Анализ алгоритма, основанного на использовании преобразования Габора.
дипломная работа [4,5 M], добавлен 16.07.2014Обнаружение деталей и их границ изображения. Применение ранговых алгоритмов. Использование алгоритмов адаптивного квантования мод в режиме пофрагментной обработки. Обобщенная линейная фильтрация изображений. Восстановление отсутствующих участков.
курсовая работа [1,8 M], добавлен 17.06.2013