Санкт-Петербургский Государственный Университет
Кафедра технологии программирования
Волков Андрей Геннадьевич
Выпускная квалификационная работа бакалавра
Формирование виртуального видеопотока
на основе кадров из смежных по точке
съёмки
Направление 010400
Прикладная математика и информатика
Научный
руководитель,
ст. преподаватель,
Севрюков С. Ю.
Санкт-Петербург
ОГЛАВЛЕНИЕ
ЦЕЛИ, ЗАДАЧИ И ВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ...............................5
ПОСТАНОВКА ЗАДАЧИ ДАННОЙ РАБОТЫ.................................................... 7
ГЛАВА 1. Определение требований и выбор подхода.........................................8
1.1. Исследование существующих решений в данной области и их оценка. .8
1.2. Формирование требований и установка ограничений............................13
1.3. Вывод...........................................................................................................15
ГЛАВА 2. Обзор алгоритмов поиска ключевых точек.......................................16
2.1. Алгоритм Speeded-Up Robust Features (SURF)........................................17
2.2. Алгоритм Oriented FAST and Rotated BRIEF (ORB)...............................19
2.3. Вывод...........................................................................................................21
ГЛАВА 3. Проектирование и разработка прототипа ПО...................................22
3.1. Индексирование..........................................................................................23
3.2. Сопоставление ключевых точек................................................................26
3.3. Фильтрация плохих пар ключевых точек.................................................27
3.3.1. Перекрёстная проверка........................................................................28
3.3.2. Проверка на соотношение...................................................................28
3.3.3. Проверка с RANSAC.............................................................................. 29
3.4. Синхронизация потоков видео.................................................................. 30
3.5. Синтезирование общего кадра.................................................................. 31
3.6. Полученные результаты............................................................................. 34
ГЛАВА 4. Тестирование прототипа.....................................................................35
4.1. Проверка на тестовых данных..................................................................35
4.2. Анализ результатов профилирования.......................................................36
4.3. Вывод...........................................................................................................38
ЗАКЛЮЧЕНИЕ......................................................................................................39
СПИСОК ЛИТЕРАТУРЫ И ИСТОЧНИКОВ.....................................................40
ПРИЛОЖЕНИЕ. Рекомендуемые статьи из документации OpenCV...............43
3
ВВЕДЕНИЕ
В последнее время можно отметить огромный скачок в развитии
портативных устройств. Так, например, появление цифровых фото и видео
камер привело к популяризации сообщества любителей фотографии, а
оснащение мобильных телефонов камерами высокого разрешения только
подкрепило этот успех.
В то же время устройства хранения данных не стоят на месте и
развиваются огромными темпами. Если в 1970-х годах в качестве накопителя
активно использовались магнитные дискеты, то в начале 2000-х появились
накопители с флеш-памятью, которые по размерам намного меньше, а по
техническим характеристикам превосходят дискеты в несколько десятков раз.
Исследователи и инженеры каждый год разрабатывают новые и
улучшают свои старые технологии и устройства, а компании-производители
делают их доступными для широкой аудитории. Удешевление и доступность
устройств видеозаписи привело к тому, что люди всё чаще и чаще стали
фиксировать различные моменты из своей жизни. Будь это какой-то концерт
любимой группы или какое-нибудь спортивное мероприятие, будь это
путешествие на другой континент или же какое-то необычное событие. В
современном обществе всё чаще проявляется тенденция на активное
использование социальных сетей, упрощающих процесс хранения и обмена
информацией, что также подтверждает статистика загрузки видео файлов на
крупнейшие видеохостинги [1].
Всё это привело к тому, что каждый день различные устройства в
совокупности порождают сотни терабайт, а то и больше, цифровой
информации. Разумеется, чтобы обеспечить возможность эффективного
просмотра или поиска данных, нужно использовать специальные
инструменты. На помощь нам приходят информационный поиск, базы
данных, машинное обучение и компьютерное зрение.
4
С каждым годом системы компьютерного зрения постепенно
внедряются в различные области: начиная с промышленности и заканчивая
повседневной жизнью. Основными задачами таких систем являются: анализ
и обработка изображений или видео, а также слежение за объектами, их
поиск и распознавание. Например, уже с 1970 года задача поиска
изображений по содержанию является актуальным направлением
исследований [2, 3]. Разумеется, задачи такого класса влекут за собой не
только сложность разработки методов решения, но и сложность разработки
способа оценивания качества конечных решений [3].
Перед человеком возникает вполне очевидная проблема: для усвоения
большого количества цифровой информации может потребоваться огромное
количество времени. Можно утверждать, что актуальность данной проблемы
подтверждается стремительным ростом цифровой информации и
необходимостью в быстрой и качественной её обработке. Следовательно,
встаёт вопрос, а что, если бы появилась такая система, которая бы позволила
пользователю перемещаться среди элементов коллекции видео?
На сегодняшний день для разработки программного обеспечения
наиболее популярной библиотекой компьютерного зрения, в которой
реализовано огромное количество популярных алгоритмов, является Open
Source Computer Vision Library (OpenCV). Эта библиотека с открытым
исходным кодом и распространяется под лицензией BSD, что позволяет
использовать её в коммерческих проектах. OpenCV включает в себя огромное
количество разных инструментов для работы с изображениями и видео,
помимо этого она ещё является и кроссплатформенной. Несомненным
плюсом является то, что присутствует поддержка графических процессоров.
Далее в данной работе будет рассмотрен один из способов решения
проблемы, конечным результатом которого является прототип программного
обеспечения, выполненный с использованием библиотеки OpenCV.
5
ЦЕЛИ, ЗАДАЧИ И ВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ
Основной целью данной работы является повышение эффективности
восприятия большого количества цифровой информации и сокращения
времени на её визуальный анализ.
Для эффективного восприятия цифровой информации предлагается
сформировать виртуальный видеопоток, который позволил бы конечному
пользователю перемещаться среди коллекции видео в любой момент
времени. Это позволит не только просматривать объекты с разных ракурсов,
но и сократить общее время на визуальную обработку. Для достижения
поставленной цели предлагается решить задачу проектирования и разработки
прототипа программы для создания и работы с виртуальным видеопотоком
среди некоторой коллекции видео.
Задача разработки прототипа программы должна обязательно включать
в себя решение и других задач, таких как:
Тестирование алгоритмов поиска ключевых точек;
Разбор метода использования индексной базы коллекции видео;
Разбор методик фильтрации плохих пар ключевых точек;
Разбор метода формирования общего кадра на основе кадров с
областью пересечения.
Рассмотренная в данной работе система может использоваться как в
важных инфраструктурах, так и в развлекательных проектах. Она может
стать частью как офлайновых систем, так и онлайновых сервисов, а в
частности:
Социальные сети с поддержкой видео (с поиском по тегам);
Видеохостинги;
Системы хранения информации — архивы.
6
Область применения подобного программного обеспечения очень
широкая, начиная с бытовой сферы и заканчивая промышленностью,
особенно можно выделить следующие:
Критические инфраструктуры (для обеспечения безопасности
прилегающей территории);
Аэропорты, железнодорожные станции, порты (для наблюдения
за рабочим процессом);
Популярные места в городах (для обеспечения порядка в
общественных местах, либо для обнаружения нарушителей);
В супермаркетах и гипермаркетах (для борьбы с нечестными
покупателями);
В спорте и киберспорте (для более наглядной визуализации).
7
ПОСТАНОВКА ЗАДАЧИ ДАННОЙ РАБОТЫ
Будем называть кадром изображение, которое было получено с камеры
(или с видео) в некоторый момент времени.
П
о
д видеопотоком б у д е м п о д р а з у м е в а т ь н е к о т о р у ю
последовательность кадров.
В качестве оператора будет понимается человек или установка с
аппаратом, который фиксирует окружающий мир на видео, записывая его на
некоторое устройство хранения данных.
Тогда сценой будет являться некая совокупность объектов, связанных
своим местоположением.
Пусть у нас имеется некоторая коллекция видео. Каждый элемент из
этой коллекции был получен от оператора. Местоположение и угол съёмки у
разных операторов может отличаться. Предполагается, что видео объединены
некоторой общей сценой. В данной работе допускается, что в одной
коллекции могут быть разные сцены. В рассматриваемой системе в
некоторый момент времени по команде пользователя нужно будет
осуществить переход между видеопотоками. Если в коллекции количество
видео больше двух, то система без участия человека должна выбрать нужное
видео, а также в нём выбрать точку старта. Момент времени выбирает сам
пользователь системы.
Стоит отметить, что видео не обязаны совпадать по размеру кадра, они
могут быть совсем разными по характеристикам, в том числе по частоте
кадров в секунду.
8
ГЛАВА 1. Определение требований и выбор
подхода
В данной главе будут проанализированы существующие решения, их
основные преимущества и недостатки. Будут сформулированы требования,
проанализированы возможные ограничения. Для решения поставленной
задачи будет выбран один из подходов.
1.1. Исследование существующих решений в данной
области и их оценка
Перед написанием работы были изучены схожие решения и таким
образом было выявлено несколько подходов к решению поставленной задачи.
Существует два подхода для реализации поставленной задачи: программный
и аппаратный. Каждый из них имеет как преимущества, так и недостатки.
В данной работе под аппаратным подходом будем подразумевать
некий комплекс, состоящий из оборудования для записи, передачи и хранения
визуальных данных, в который также включена специальная программная
часть, которая автоматизирует и согласует работу аппаратной части и
выполняет задачу склеивания видеопотоков.
Тогда под программным подходом будет подразумеваться комплекс
программ или алгоритмов, который автоматизирует работу с входными
данными для достижения конечного результата.
Безусловно, аппаратный подход к решению данной проблемы — это
такой вариант, в котором многие этапы оптимизированы и отлажены,
например, за счет доступа к оборудованию и его управления, качественных
входных данных и достаточных вычислительных мощностей. При решении
задачи таким подходом конечный результат и скорость работы держатся на
высоком уровне. Но у такого подхода есть серьезный недостаток:
оборудование, которое участвует в процессе, может стоить больших
9
денежных ресурсов, а также необходимо иметь специалиста (или команду),
который бы умел настраивать и работать с такой системой.
Яркий представитель такого подхода — Sony's 4K Camera Stitching
Technology [4]. В 2013 году корпорация Sony на конференции International
Broadcasting Convention (IBC) представила целый ряд интересных решений,
одним из таких решений стала система для создания прямых трансляций в
разрешении 4K. С каждым годом требования для производства прямых
трансляций меняются, поэтому необходимо не только функциональное
программное обеспечение, но и новое оборудование. Корпорация Sony не
стала ограничиваться только камерами с поддержкой разрешения HD, она
также разработала и другие не менее важные продукты. Так, в качестве
устройства записи 4K видео была представлена специальная компактная
камера PMW-F55 (рис. 1).
Рисунок 1. Камера Sony PMW-F55 (без объектива)
Эта система обеспечивает не только съемку в 4K, но еще и новые
возможности для производства HD видео, например, позволяет использовать
замедленную съемку. Разработанное корпорацией Sony программное
обеспечение 4K Stitching Software позволяет скоординировать две 4K камеры
для того, чтобы можно было объединять получаемые изображения в одно и
потом уже из него выделять любую часть для более детального наблюдения.
Корпорация Sony успешно испытали такую систему (рис. 2) в рамках
совместного проекта с FIFA TV на Кубке Конфедераций 2013 [5], который
проходил в Бразилии. Вещание происходило в формате HD на каждом из
10
двенадцати стадионов. Всего в совокупности было использовано больше 280
камер.
Рисунок 2. Общая схема системы Sony
Как уже было отмечено ранее, в процессе работы такой системы
используется специальное оборудование. Проанализировав информацию из
открытых источников [6, 7], в таблице 1 приведены данные о средней
стоимости оборудования на апрель 2016 года.
Таблица 1. Стоимость оборудования
Название оборудования
Стоимость, млн. руб
4K Live Camera System
2
Multi-format Switcher
7
Storage Unit
2
Multi-Port AV Storage Unit
3
4K LCD Monitor
1
Итого
15
Из таблицы 1 можно сделать вывод, что аппаратная часть такой
системы достаточно дорогостоящая, поэтому такую систему могут позволить
только большие компании.
11
Таким образом, у такого решения были выявлены следующие
негативные моменты. Решение от корпорации Sony работает только со своим
оборудованием, поэтому если что-то выйдет из строя или проекту нужна
будет масштабируемость, то это только отразится на привлечении
дополнительных денежных ресурсов. Кроме этого, эта система
разворачивается для каждого проекта индивидуально, поэтому необходимы
специалисты. С другой стороны, у такого решения есть и положительные
черты. Такая система позволяет работать с 4K видео в режиме реального
времени, что по меркам сегодняшнего дня очень неплохо. Использование
своего оборудования обеспечивает стабильное качество и хорошие
результаты.
Есть более простой, на первый взгляд, подход — программный. Но на
самом деле это не так, потому что стоит только изучить цикл работы
программного обеспечения, который реализует такой подход, и можно
отметить не только дополнительные этапы обработки изображений, но и
необходимость в устойчивых алгоритмах. Всё это нужно для того, чтобы
результат работы был на высоком уровне. Основным недостатком такого
подхода является очень большая зависимость от входных данных и
оборудования обработки цифровых данных. Также на такую систему могут
накладываться дополнительные ограничения.
Одним из представителей программного подхода является LensFrame™
(Video Stitching Software) [8]. Продукт разработан компанией Coherent
Synchro. Программное обеспечение LensFrame™ позволяет пользователям
объединять видео с разных HD камер в одно широкоугольное видео. Камеры
могут быть установлены в группах от 4-х штук. Это позволяет пользователю
охватывать большую область съёмки и использовать приближение, чтобы
более детально сфокусироваться на чем-нибудь. Видео с каждой камеры
может быть записано независимо от других камер. В LensFrame™ может
быть интегрирована система 3D визуализации, такой метод хорошо подходит
12
для наблюдения за большими мероприятиями, стадионами, аэропортами и т.
д.
Ключевые особенности:
Видеопотоки с нескольких видеокамер могут быть объединены в
одно видео, а также видео с каждой камеры может быть записано
независимо от других;
В систему может быть интегрировано приложение дополненной
реальности;
При необходимости пользователь может использовать джойстик
для управления виртуальной камерой;
Устройства записи устанавливаются в группы из 4, 8, 16 камер,
можно и больше.
Одним из основных недостатков программного обеспечения
LensFrame™ является то, что для начальной инициализации требуется
участие пользователя (рис. 3). Оно необходимо, чтобы расположить
видеопотоки в нужном порядке и друг относительно друга.
Рисунок 3. Ручная настройка положения видеопотоков
Если подвести краткий итог этого параграфа, то получается, что
каждый из подходов имеет особенности. Наиболее универсальным является
13
именно программный подход, потому что если к такому подходу добавить
поддержку оборудования, то можно получить полную программную часть
аппаратного подхода. В будущем, при изменении подхода или при требовании
к более качественному контенту, это позволит сэкономить денежные средства
на разработке ПО.
1.2. Формирование требований и установка ограничений
В данном параграфе мы рассмотрим основные требования и
ограничения. Все требования можно разделить на два вида: требования к
входным данным и требования к конечному продукту. Далее каждый пункт
будет рассмотрен подробнее.
Требования к операторам и их ограничения
Одно из требований связано с местоположением операторов, оно
должно быть таким, чтобы на кадрах всегда присутствовала общая область
съёмки (область пересечения). Ограничение в свою очередь связано с углом
между операторами (рис. 4). Снимок окружающего мира — это, по сути,
проекция трехмерного мира на двумерную плоскость, поэтому при сильном
изменении угла съёмки изображения могут измениться таким образом, что ни
один алгоритм из существующих на сегодняшний день не сможет найти
схожесть этих изображений. Таким образом, угол съёмки между операторами
должен варьироваться в некотором допустимом пределе. Предположительно,
для каждого устройства записи этот предел будет отличаться, потому что он
зависит от размера матрицы устройства записи, его фокусного расстояния,
угла обзора и дистанции до объекта.
14
Рисунок 4. Схематичный рисунок положения операторов друг относительно друга
Требования к входным данным
Под качеством съёмки будем иметь в виду не только степень
компрессии от оригинального изображения, но и возможность выделения из
него характерных объектов (например, из визуальных данных, которые были
получены в условиях очень плохого освещения, выделить объекты будет
очень сложно или даже невозможно). Следовательно, входные данные,
полученные от операторов, должны быть приемлемого качества съёмки.
Другим требованием будет необходимость в синхронизированных по
содержанию входных видео, иначе говоря — старт съёмки должен быть
произведён в один и тот же момент времени. Задача синхронизации видео по
содержанию является сложной задачей, решение которой требует огромного
количества времени и ресурсов. Например, в продукте от Coherent Synchro
изначально требуется вмешательство со стороны пользователя для
инициализации работы программы.
Требования к алгоритмам
На сегодняшний день описано множество алгоритмов для извлечения
данных из изображений, а также постоянно разрабатываются их
модификации. Существуют разные подходы: некоторые основаны на работе с
цветовой палитрой, некоторые на контурном анализе, некоторые на
15
особенностях изображений. Цифровая информация включает в себя большой
объём данных, поэтому процесс извлечения таких данных бывает иногда
затруднительным, из-за чего при выборе алгоритмов нужно принять во
внимание, что нужны такие, которые были бы не только быстрыми, но также
и устойчивыми к следующим особенностям:
Из-за качества съёмки или сжатия изображения могут быть
подвержены всякого рода шумам и искажениям;
Вариация масштаба. Не все изображения совпадают по
разрешению, но визуально они могут восприниматься как
одинаковые, поэтому если сравнивать их попиксельно, то в
действительности они могут быть совсем разными;
Разная локация объектов на изображении. На одном изображении
объекты могут сдвинуться, если сравнивать их положение с
положением объектов на другом изображении. Такой эффект
может получиться, если оператор сделал два снимка с
одинаковым ракурсом, но с разным местоположением;
Вращение и угол съёмки.
Таким образом, из множества всех алгоритмов, которые существуют на
данный момент, нужны такие методы, которые были бы основаны на
локальных особенностях изображения [9].
1.3. Вывод
На основании преимуществ и недостатков, а также с дальнейшей
перспективой развития такого программного обеспечения, для достижения
основной цели был выбран программный подход. С учетом требований к
алгоритмам для решения поставленной задачи был сделан выбор в пользу
алгоритмов для описания ключевых точек.
16
ГЛАВА 2. Обзор алгоритмов поиска ключевых точек
Под ключевой (особой) точкой будем подразумевать такую точку на
изображении, которая находится на некотором важном фрагменте
изображения. Такая точка обладает рядом свойств, что и делает её особой.
Распознавание изображений на основе ключевых точек применяется во
многих задачах. Результатом работы таких методов является множество
дескрипторов (числовой вектор, описывающий особенности изображения в
окрестности ключевой точки). В дальнейшем такие дескрипторы могут
сравниваться с другими по некоторой метрике (например, при помощи
Евклидова расстояния). Такая методика имеет свои положительные качества,
в основном они проявляются в следующем [10]:
1. Распознавание происходит хорошо при небольших изменениях
условий освещенности или же фоновых помехах.
2. Из-за того, что дескрипторы описывают небольшую область
вокруг особой точки, то их сравнение приводит к тому, что
итоговое число вычислений становится меньше.
3. Некоторые алгоритмы инварианты к масштабированию и
вращению.
Постановка задачи и требования к алгоритмам определяют некоторые
условия к выбору методов, поэтому чтобы выбрать тот, который бы
удовлетворял всем условиям, нужно провести тестирование имеющихся. Для
тестирования алгоритмов из библиотеки OpenCV была создана тестовая
выборка из изображений, которая была получена путем извлечения кадров из
видео с некоторым интервалом. Тестовая выборка содержит 500 элементов.
Из множества всех ныне существующих алгоритмов на сегодняшний день
необходимо выбрать такие, которые бы удовлетворяли следующим
критериям:
Высокая скорость работы. Скорость — один из самых важных
критериев при выборе алгоритмов извлечения данных из кадров,
особенно если нужно обрабатывать видеопоток в режиме
17
реального времени. Например, чтобы добиться плавности
обработки для видео с частотой кадров 30 в секунду, программа
на каждый кадр должна тратить не больше, чем 33
миллисекунды. Такого времени обработки вполне можно
достичь на современных многоядерных процессорах.
Не менее важным критерием является и качество. Под
качеством ключевых точек подразумевается степень их
инвариантности к изменениям масштаба, повороту, помехам и
другим параметрам съёмки, т. е. такие особенности
изображения, которые могут успешно использоваться для задач
слежения или сравнения (в частности, для SLAM, создания
панорам, нахождения объектов и т. д.). В данной главе качество
будет изучено на основе статей от авторов алгоритмов.
Конфигурация аппаратной части тестового стенда следующая:
процессор Intel i7 2670QM (2,2 ГГц);
оперативная память 6 Гб DDR3 (1333 МГц);
жёсткий диск (5400rpm, SATAII);
В качестве программной части было выбрано: операционная система
Windows 10 (x64), средство разработки Visual Studio 2013, язык
программирования C++, библиотека OpenCV 3.1.0.
На основе изученных публикаций [11, 12, 13, 14] и с учетом
поставленных требований было выбрано два метода, реализованных в
библиотеке OpenCV. Далее каждый из них будет рассмотрен подробнее.
2.1. Алгоритм Speeded-Up Robust Features (SURF)
В 2006 году вышла статья [13] про новый алгоритм, который
называется SURF. Авторами алгоритма была предложена более быстрая
версия SIFT [13, 15]. Данный алгоритм основан на тех же принципах и шагах,
что и SIFT, но использует немного другую схему. Сам метод выполняет
18
работу и по нахождению ключевых точек на изображении, и по созданию их
дескриптора.
Перед работой алгоритма каждое изображение представляется в
интегральном формате (Summed Area Table). Такой формат предлагает
использовать матрицу, размерность которой совпадает с размерами
изображения, а элементы которой вычисляются по формуле (1).
x
y
I ( x , y ) =∑ ∑ I ( i , j )
(1)
i =0 j=0
где I(i, j) — яркость пикселя входного изображения, (x, y) — координаты пикселя на
матрице
Поиск ключевых точек происходит при помощи матрицы Гессе. В
точках, где градиент яркости максимально изменяется, значение
определителя матрицы Гессе достигает своего экстремума. Такой подход
хорошо работает на обнаружении контрастных переходов или краев.
Использование гессиана наделяет метод свойством инвариантности к
повороту изображения (повернутое и оригинальное изображения будут иметь
одинаковый набор особых точек).
[
∂2 f
2
∂x
Gs ( f ( x , y ) ) =
∂2 f
∂ x∂ y
2
det ( Gs ) =
2
∂2 f
∂x∂ y
∂2 f
2
∂y
2
]
2
∂ f ∂ f
∂ f
−(
)
2
2
∂ x∂ y
∂x ∂ y
где Gs – матрица Гессе, f(x, y) – функция изменения градиента яркости
Для достижения инвариантности к масштабу SURF использует
фильтры разных размеров, поэтому для каждой обнаруженной ключевой
точки находятся направление градиента изменения яркости и её масштаб.
Результатом работы SURF является описание каждой особой точки в
виде вектора, состоящего из чисел с плавающей точкой. Размерность
дескриптора может быть либо 64, либо 128 (в OpenCV, по-умолчанию,
используется значение 128).
19
Алгоритм SURF хорошо работает при обработке изображений с
размытием и вращением, но на изображениях, в которых есть сильные
изменения освещения, он показывает результаты гораздо хуже.
В таблице 2 представлены результаты вычисления алгоритма SURF на
изображениях тестовой выборки.
Таблица 2. Результаты вычисления SURF
1920x1080
Среднее время
вычисления одного
изображения, с
2.1827
6728
1280x720
1.0233
3882
960x540
0.6777
2809
Разрешение изображения
Среднее количество
ключевых точек
Исходя из результатов проведенного тестирования, можно сделать вывод,
что обработка изображений требует такого количества времени, что без
оптимизации данное решение трудно использовать в системах, работающих в
режиме реального времени. Ещё одним из факторов, ограничивающим
использование алгоритма SURF, является то, что данный алгоритм является
запатентованным [16], поэтому это накладывает некоторые условия и
ограничения на создаваемый продукт.
2.2. Алгоритм Oriented FAST and Rotated BRIEF (ORB)
В 2011 году вышла статья [12] о более эффективной альтернативе, чем
SURF и SIFT. И действительно, авторами был предложен метод, который
превосходит ранее упомянутые алгоритмы в скорости вычисления, а самое
главное то, что этот алгоритм опубликован под BSD лицензией в библиотеке
OpenCV (начиная с версии 2.3).
В некоторых задачах ORB позволяет обнаруживать особенности
изображения в режиме реального времени. Такой подход к поиску ключевых
точек и их описания, как у ORB, позволяет использовать его на менее
мощной вычислительной технике.
20
Для нахождения ключевых точек используется алгоритм Features from
Accelerated Segment Test (FAST) [17], который уже давно зарекомендовал себя
как быстрый инструмент для детектирования локальных особенностей.
Метод FAST не инвариантен к поворотам. Чтобы это исправить, авторы
внесли в оригинальный алгоритм изменения.
Для описания ключевых точек используется дескриптор Binary Robust
Independent Elementary Features (BRIEF) [18]. Основная его цель заключается
в том, чтобы некую область из изображения можно было распознать с разных
ракурсов при небольших вычислительных затратах. В результате работы
этого дескриптора каждая точка описывается в виде бинарного вектора.
Алгоритм SURF при поиске изображения описывает все ключевые
точки, которые удалось найти, но ORB работает немного иначе: он
использует детектор углов Харриса, чтобы отсеять особые точки, оставив при
этом из них только определенное количество. Следовательно, чтобы можно
было сравнить скорость работы, в качестве входного параметра у алгоритма
ORB необходимо задать среднее количество ключевых точек, найденных
SURF.
В таблице 3 представлено среднее время вычисления алгоритма ORB
на изображениях тестовой выборки.
Таблица 3. Результаты вычисления ORB
1920x1080
Среднее время
вычисления одного
изображения, с
0.1786
6727
1280x720
0.0787
3882
960x540
0.0409
2806
Разрешение изображения
Среднее количество
ключевых точек
Опираясь на результаты тестирования, можно сказать, что у ORB,
действительно, сильной стороной является быстрота в создании
дескрипторов.
21
2.3. Вывод
Таким образом, были изучены характеристики двух алгоритмов,
входящих в состав OpenCV. ORB в тестах по времени оказался намного
быстрее, чем SURF. Данный алгоритм можно успешно применять на
маломощных устройствах. Для реализации прототипа с учетом поставленных
требований, а также качеств и характеристик был выбран ORB.
22
ГЛАВА 3. Проектирование и разработка прототипа
ПО
В данной главе будет описан разработанный прототип системы. Как
уже упоминалось ранее, предложенная система построена на методах и
алгоритмах, которые включены в библиотеку OpenCV 3.1.0.
Входные данные для программы представляют собой коллекцию видео.
С учетом требований видео файлы должны иметь область пересечения,
п о э том у в и ртуа л ь н ы й в и д е о п ото к буд е т п р ед с т а вл я т ь с о б о й
последовательность разных фрагментов видео из некоторой коллекции,
соединенных между собой общим кадром.
Разработка прототипа программного обеспечения для решения
основной задачи с учетом выбранного подхода, требований и ограничений
должна включать в себя две стадии работы:
1. Офлайн вычисления. Это такая стадия работы программного
обеспечения, в которой создается база данных индексов каждого
видеопотока.
2. Онлайн вычисления (в режиме реального времени). В этот
процесс входит поиск похожего видео для осуществления
трансформирования из одного видеопотока в другой.
Весь цикл работы конечного программного обеспечения можно
представить в виде блок-схемы, представленной на рисунке 5.
23
Рисунок 5. Блок-схема программы
При первом запуске программы должен быть инициализирован процесс
индексирования видео файлов. Если этот процесс уже был выполнен, то
должна быть проведена проверка актуальности данных, при необходимости
индексная база должна быть обновлена.
Далее в этой главе каждый этап работы программы будет рассмотрен
более детально.
3.1. Индексирование
В данной работе под индексированием будет пониматься процесс
создания файлов с специальной структурой (рис. 6), которая описывает
каждый кадр из видео. Как уже было ранее сказано, данный этап входит в
офлайн стадию работы программы. Такой подход к организации работы
программы способствует уменьшению нагрузки и увеличению скорости
работы при вычислениях в режиме реального времени.
24
Рисунок 6. Структура индексного файла видео в общем виде
Для того чтобы найти к текущему видео ему похожее, на данном этапе
была поставлена дополнительная задача, которая заключается в поиске
похожей сцены среди коллекции, что и у текущего видео. Основным
критерием выбора видео является то, что наш входной кадр из текущего
видеопотока принадлежит последовательности кадров из выбранного
видеопотока.
На помощь в решении этой задачи приходят инструменты машинного
обучения. Если представить, что каждое видео — это отдельный класс, а
набор кадров из одного видеопотока принадлежит к какому-то одному классу,
то задача сводится к классификации видео файлов.
Для достижения этой цели был выбран подход под названием «Мешок
визуальных слов». Основная идея его состоит в том, что у нас есть словарь, в
нашем случае — это словарь особенностей изображения («визуальных
слов»), по которому мы можем классифицировать принадлежность тех или
25
иных кадров к определенному классу [19]. Обобщённый процесс поиска
нужного видео выглядит следующим образом:
1. Имеется коллекция видео;
2. Для каждого видео извлекаются особые точки по всем кадрам. Их
дескрипторы добавляются в словарь;
3. Далее происходит кластеризация словаря, где центром каждого
кластера будет являться «визуальное слово»;
4. Частично повторяем шаг 2, только вместо добавления в словарь
соотносим ключевые особенности со словарем (т. е. строим
гистограмму частот каждого «визуального слова»). Таким
образом, получаем дескриптор словаря;
5. Имея дескриптор словаря и набор классов — обучаем
классификатор.
Для классификации кадров используется метод опорных векторов
(SVM) [20, 21]. Поскольку в классификаторе в качестве вектора-признака
используются гистограммы частот, то необходимо использовать специальное
ядро (формула 2).
− A(
K ( hi , h j )=e
(h i−h j )2
)
(h i +h j )
(2)
где hi , h j – гистограммы, A > 0
В конечном итоге, чтобы получить похожее видео из коллекции,
необходимо описать текущий кадр гистограммой частот из словаря, после
чего произвести классификацию полученного результата. В результате мы
получим название класса (видео).
Таким образом, с использованием классификатора можно найти
похожее видео. Результатом индексирования и решения дополнительной
задачи будет являться некоторая совокупность технических данных, которые
в будущем будут использованы при работе программы.
26
3.2. Сопоставление ключевых точек
В предыдущей главе уже были описаны методы для поиска ключевых
точек. Результатом работы таких алгоритмов является дескрипторы,
описывающие каждую особую точку.
Одним из важных шагов является сопоставление ключевых точек
(нахождение похожих). Это необходимо для того, чтобы найти похожие
изображения или присутствие объектов с одного изображения на другом. В
OpenCV есть два разных подхода: BruteForceMatcher и FlannBasedMatcher.
Основная идея первого метода заключается в том, что последовательно
каждый дескриптор из первого набора сравнивается с каждым дескриптором
второго набора, при этом каждый раз между ними считается расстояние для
нахождения ближайшего со седа. Таким образом, перебираются
всевозможные комбинации, что может заметно уменьшить скорость работы
при больших наборах данных.
Идея второго метода основывается на алгоритмах библиотеки Fast
Library for Approximate Nearest Neighbors (FLANN), а именно на построении
иерархического дерева k-средних. Такой подход оптимален при обработке
больших объёмов данных.
Во второй главе уже было сказано, что выбранный алгоритм ORB
позволяет задать конечное число ключевых точек. Следовательно, в данной
работе не имеет смысла рассматривать реализацию сразу двух методик,
поэтому было выбрано сопоставление путем перебора. Также алгоритм ORB
строит дескриптор в виде бинарного вектора. Следовательно, чтобы сравнить
два таких дескриптора, надо использовать специальную метрику. В качестве
метрики используется расстояние Хэмминга, которое определяет количество
различных позиций между двумя бинарными последовательностями. Такую
метрику можно представить в виде формулы 3.
hamming ( x , y )= ∑ 1,i=1, … ,n
(3)
xi ≠ yi
27
где x и y – дескрипторы (бинарные векторы)
3.3. Фильтрация плохих пар ключевых точек
Описанные в предыдущем параграфе алгоритмы для сопоставления
ключевых точек очень часто показывают большое количество плохих связей
(неверное соответствие ключевых точек). Если вовремя не фильтровать
плохие связи, то это может привести к отрицательным последствиям.
Например, особенно остро эта проблема ощущается в задаче создания
панорамы из нескольких фотографий, результатом в таком случае будет
некорректное объединение изображений.
Существуют различные методики для фильтрации плохих связей,
некоторые основаны на нахождении отношений между ключевыми точками
(например, фильтрация по расстоянию), а некоторые на составлении и
анализе матриц преобразования. В общем случае можно выделить два класса
фильтров. Первый класс — это простые фильтры, а второй — итеративные.
Важно понимать, что при работе с видео алгоритмы фильтрации должны
работать быстро. Далее в этой работе будут представлены такие фильтры,
которые не требуют большого количества времени на вычисления.
Рисунок 7. Пример плохих связей
28
Рисунок 8. Пример отфильтрованных связей
3.3.1. Перекрёстная проверка
Допустим, у нас есть два похожих изображения. Пусть детектором
была найдена одна ключевая точка x из первого изображения и
соответствующая ключевая точка y из второго изображения. Данный
алгоритм предполагает, что если сопоставление было сделано верно, то как к
точке x наиболее близка точка y, так и для точки y наиболее близка точка x.
Такой способ фильтрации позволяет отсечь большое количество
ложных пар и исключить такие пары, в которых одной ключевой точке
соответствует несколько других ключевых точек. В качестве побочного
эффекта может получиться так, что отфильтруются и хорошие связи.
Основным недостатком такой методики является то, что она требует немного
больше времени, чем фильтры из того же класса.
3.3.2. Проверка на соотношение
Допустим, у нас есть два похожих изображения. Пусть детектором
была найдена одна ключевая точка x из первого изображения и две
ближайшие точки y и z из второго изображения. Если расстояние от точки x
до y меньше, чем расстояние от точки x до z, то такая связь хорошая. Иначе
29
говоря, сопоставления будут являться хорошими, если они удовлетворяют
следующему условию (4).
d1
<ratio
(4)
d2
где d 1 – расстояние между дескрипторами x и y, d 2 – расстояние между
дескрипторами x и z, ratio – числовая константа такая, что 0 < ratio < 1
Основным недостатком такого фильтра является то, что необходимо
выбирать константу ratio. Если значение константы будет слишком большим,
то это может привести к тому, что большая часть ложных связей не будет
отфильтрована, а если значение будет малым, то произойдет уменьшение
количества связей в целом.
3.3.3. Проверка с RANSAC
Алгоритм RANSAC (RANdom Sample And Consensus) [22] был
предложен Фишером и Боллесом как метод для оценки модели при наличии
«плохих» точек. Этот метод работает хорошо даже в тех ситуациях, где
имеется более 50% «плохих» точек. Он широко используется в нескольких
областях компьютерного зрения и обработки изображений. На сегодняшний
день предложено несколько модификаций оригинального алгоритма [23, 24],
чтобы повысить скорость, надежность и точность алгоритма. В основе
алгоритма RANSAC лежат следующие шаги, которые подлежат многократной
итерации:
1. Случайным образом выбирается минимальное количество
тестируемых точек и с использованием этих точек вычисляется
модель.
2. Для вычисленной модели происходит классификация других
точек (без учета тех, которые используются на первом шаге),
которые делятся на допустимые и «плохие». Набор допустимых
точек откладывается для последующих итераций.
Таким образом, эти два шага вычисляются до тех пор, пока вероятность
найти лучший набор точек выше определенного значения.
30
При использовании RANSAC важно правильно выбирать количество
итераций алгоритма. Слишком малое количество итераций приведет к тому,
что правильное решение не будет найдено, а анализ слишком большого
количества случайных выборок потребует достаточно большого времени и не
приведет к улучшению результатов.
Если подвести краткий итог, то каждый из алгоритмов, который был
описан в этом параграфе, не гарантирует постоянство результата: от разных
входных данных будут получаться разные результаты, но они помогают
избавиться от большей части плохих связей. Также чтобы снизить риск того,
что плохие связи останутся, можно комбинировать эти фильтры.
3.4. Синхронизация потоков видео
В зависимости от устройства записи разные видео файлы могут
обладать абсолютно разными характеристиками. Среди них можно выделить
такие как компрессия, разрешение и частота кадров в секунду. Современные
устройства записи видео позволяют оператору самому выбирать количество
кадров в секунду из нескольких доступных вариантов, поэтому два
одинаковых видео, которые были сняты с разной частотой, визуально могут
восприниматься по-разному.
Перед синтезированием общего кадра важно, чтобы каждое видео
совпадало по частоте кадров, иначе может быть нарушена плавность
воспроизведения. Для этого предлагается минимизировать каждое видео,
которое имеет большую частоту, чем минимальное из коллекции, путем
исключения некоторых кадров. Например, пусть у нас есть два видео: первое
было снято с частотой кадров 30 в секунду, а второе — 60. Тогда для того
чтобы синхронизировать эти два видео, у второго видео необходимо убрать
каждый второй кадр.
31
3.5. Синтезирование общего кадра
В итоге возникает вполне логичный вопрос: а каким образом можно
объединить два видео? Решение можно найти в проективной геометрии.
Тогда заключительным этапом работы программного обеспечения для
решения задачи формирования общего кадра будет являться нахождение
специального преобразования, т. е. такого преобразования, которое позволит
точно перевести кадр с одного видеопотока в кадр из другого. Результаты,
полученные на предыдущих этапах, активно здесь используются.
Перед процессом синтезирования общего кадра необходимо найти
положение двух операторов друг относительно друга. В общем виде можно
выделить четыре основных положения, т. е. область пересечения кадров
может быть: сверху, справа, снизу и слева. В данной работе нам достаточно
будет только определить положение слева или справа. Чтобы найти
положение операторов, предлагается следующий алгоритм:
каждое входное изображение разбивается на две одинаковые
области (вертикальная линия разделения в середине кадра);
на каждой области считается количество ключевых точек,
которые имеют связь;
у каждого изображения вычисляется отношение количества
правых и левых точек.
Таким образом, если на первом кадре преобладают точки с правой
области, а на втором — точки с левой, то положение операторов будет
определено как первый слева, а второй справа. И наоборот.
Сам процесс синтезирования общего кадра происходит на основе
ключевых точек и их связей. Плохие пары обязательно должны быть
обработаны фильтром или их комбинацией. Имея хорошие пары ключевых
точек, нужно найти такое преобразование (рис. 9), которое бы позволило одно
изображение подстроить под другое так, чтобы конечный результат стал
одним полноценным кадром.
32
Рисунок 9. Стандартный набор 2D преобразований [25]
Одним из таких преобразований может быть перспективная
трансформация изображения. Основная идея заключается в том, что, имея
набор ключевых точек на одном изображении и соответствующий набор
точек на другом изображении, построить матрицу гомографии.
Матрица гомографии (H) описывает перемещение, вращение и
масштабирование, размерность такой матрицы получается 3х3. Допустим, у
нас есть точка p , и точка p' , которые связаны при помощи некоторого
коэффициента в проективном пространстве по формуле 5.
(5)
'
p Hp
p
где
T
p=( x , y , s)
'
[
]
u1 u4 u7
u2 u5 u8 p
u3 u 6 u9
, x и y – координаты пикселя на изображении, s – ненулевой
масштабный множитель, p ' =( x ' , y ' , s' )T
Задача нахождения матрицы гомографии эквивалентна решению
системы линейных уравнений, поэтому для того, чтобы определить 8
параметров, нам необходимо знать минимум 4 пары точек. Тогда девятый
параметр можно найти из условия (6).
‖U‖=1,U =[u1 ,u2 … u9 ]T
(6)
Для нахождения наилучшей матрицы используется алгоритм RANSAC,
который итеративно производит её оценку для случайно выбранных точек (в
нашем случае для того, чтобы оценить модель, это значение будет равно
четырём). После нахождения хорошей матрицы преобразования можно
выполнить объединение двух изображений (рис. 10).
33
Рисунок 10. Результат объединения изображений (наверху два кадра из двух видео,
внизу – общий кадр)
Сама процедура визуализации общего кадра может проходить двумя
способами. Один из них — это использование двумерной плоскости (рис. 10),
на которую будет размещено изображение из первого видеопотока и
изображение из второго видеопотока, которое трансформировано
относительного первого. Именно такой способ применяется в данной работе.
Другой же способ основан на создании трехмерного пространства, на которое
будут перенесены изображения для построения общего кадра. Если
представить, что каждое изображение представляет собой плоскость, то
сложность реализации такого подхода заключается в том, что необходимо
найти угол между этими двумя плоскостями. Ещё одним важным моментом
является то, что, если мы работаем в таком пространстве, повышаются
требования к операторам и входным данным. Но главной отличительной
особенностью такого подхода будет реализация виртуальной камеры, которая
добавит новые возможности и интерактивность.
34
3.6. Полученные результаты
В ходе работы сначала было выполнено проектирование программного
обеспечения, которое в дальнейшем было реализовано в виде прототипа.
Высокую сложность работы обуславливает обработка видео и требование в
быстрых и надёжных алгоритмах. Полученное решение полностью
удовлетворяет поставленным требованиям, а выбранный подход обладает
гибкостью в плане внедрения такой разработки в другие проекты.
Тематическая составляющая данной работы обладает огромным
потенциалом к развитию. И разработанный прототип тому не исключение,
потому что он обладает всеми свойствами для дальнейшего развития как со
стороны архитектуры, так и с идейной стороны. Одним из возможных
направлений развития может быть создание сервиса, который бы
коллекционировал видео с какого-нибудь определенного источника
(например, с видеохостинга) по некоторым событиям и создавал на их основе
краткую аннотацию без участия человека.
35
ГЛАВА 4. Тестирование прототипа
В этой главе будет произведено тестирование и будет дана
предварительная оценка прототипа и спроектированной архитектуры.
Основным объектом тестирования является процесс формирования
виртуального потока.
4.1. Проверка на тестовых данных
В реальном мире почти все цифровые данные подвергаются различным
видам компрессии. Это позволяет значительно сократить требуемое место
для хранения, поэтому основной целью этого параграфа является изучение
влияния разных входных данных на работу прототипа.
В качестве тестовых данных используются восемь видеофайлов,
которые удовлетворяют требованиям входных данных из первой главы.
Данное тестирование включает в себя проверку работы прототипа на кадрах
разного разрешения. Для сравнения производительности за основу метрики
было выбрано количество кадров в секунду у виртуального видеопотока.
Результат объединения двух видеопотоков проверялся экспертом
визуально. После работы программы ему предлагалось поставить одну из
четырех доступных оценок:
Отлично. Результат работы процесса склеивания очень похож на
единый кадр;
Хорошо. В результате наблюдались небольшие неточности;
Удовлетворительно. В р е зул ьт ат е б ы л и с у щ е с т в е н н ы е
недостатки;
Неудовлетворительно. Программа не смогла сформировать
виртуальный поток.
36
Таблица 4. Результаты тестирования
Разрешение видео
Среднее количество
кадров в секунду
Визуальная оценка
эксперта
1920x1080
5–7
отлично
1280x720
7–8
хорошо
960x540
13–14
хорошо
640x360
14–15
хорошо
И з таблицы 4 можно выделить то, что вне зависимости от разрешения
кадра качество склейки двух видеопотоков остается на хорошем уровне. В
процессе работы прототипа были зафиксированы падения в количестве
кадров в секунду. Это может говорить о том, что существуют проблемы в
архитектуре или в использованных алгоритмах, которые могут работать
медленно, либо текущих вычислительных мощностей недостаточно для
нормальной работы.
4.2. Анализ результатов профилирования
Для выявления мест понижения производительности программы в
исходном коде было проведено профилирование. Профилирование позволяет
изучить программу и найти в ней те функции, которые выполняются
медленно. В качестве профайлера использовался инструмент Visual Studio
Profiling Tool.
исунок 11. Результаты профилирования – Hot Path
Исходя из изображения 11, наиболее активной веткой является
сравнение дескрипторов. На самом деле, в этом нет ничего удивительного. В
третьей главе уже была описана методика сопоставления ключевых точек,
она, действительно, требует много ресурсов процессора.
37
Изображение 12 демонстрирует результаты выполнения наиболее
медленных функций в рамках работы всего программного обеспечения. Их и
стоит более подробно изучить. Первую позицию занимает функция, которая
работает с индексной структурой. Она производит считывание технической
информации о каждом кадре из текущего видео. Функции
findFundamentalMat и symmetryTest работают над фильтрацией плохих
сопоставлений. А warpPerspective и findHomography формируют общий кадр.
Резюмируя, можно сказать, что основными местами снижения
производительности являются (по убыванию): индексация и сопоставление
ключевых точек.
Рисунок 12. Результаты профилирования – Список функций (первая колонка – название
функции, вторая – количество вызовов, третья – процент затраченного инклюзивного
времени)
38
Рисунок 13. Результаты профилирования – Загрузка центрального процессора во время
работы
4.3. Вывод
Таким образом, было проведено тестирование, которое показало, что
некоторые процессы достаточно требовательны к ресурсам. Например, одной
из таких функций, является работа с индексной структурой. Следовательно,
можно сделать вывод, что решение для работы с файлами, которое
представлено в рамках библиотеки OpenCV, работает не наилучшим образом.
Стоит отметить, что прототип не является конечным программным
продуктом. Слабые места в реализованной программе очень сильно
повышают требования к вычислительной платформе (рис. 13), поэтому в
будущем предстоит провести много работы по оптимизации некоторых
процессов и улучшению архитектуры, но в целом текущий прототип
реализует все поставленные задачи.
39
ЗАКЛЮЧЕНИЕ
С одной стороны, нельзя сказать, что поставленная цель была
достигнута, поскольку для такого утверждения необходимо не только иметь
конечный программный продукт, но он ещё должен пройти проверку
временем. С другой стороны, можно твёрдо заявить, что существуют средства
и методы, позволяющие достигнуть цели без высоких затрат на приобретение
дорогостоящего оборудования и ПО.
В данной работке в качестве основных ключевых моментов можно
выделить следующее:
После изученных публикаций было выбрано два алгоритма,
которые создают описание особых точек. Каждый из них был
протестирован на скорость поиска и описания ключевых точек;
Для уменьшения нагрузки при работе программы в реальном
времени было решено использовать файлы со специальной
структурой. Каждый такой файл содержит информацию о
дескрипторах и ключевых точек каждого кадра;
Методы сопоставления особых точек нередко показывают
большое количество плохих пар, поэтому существует
необходимость в их фильтрации;
Для формирования виртуального потока используется
синтезирование общих кадров, которые объединены по некоторой
области пересечения.
Решение задач при стремлении достигнуть цель, позволило улучшить
список требований, обнаружить ряд проблем и, главное, получить бесценный
опыт решения столь сложных задач.
40
СПИСОК ЛИТЕРАТУРЫ И ИСТОЧНИКОВ
1. Статистика видео сервиса Youtube // URL:
http://www.statista.com/statistics/259477/hours-of-video-uploaded-toyoutube-every-minute/ (дата обращения: 16.03.2016).
2. Rui Y., Huang T. S. Image retrieval: Current techniques, promising directions,
and open issues // Journal of Visual Communication and Image
Representation. 1999. 10 (1). С. 39–62.
3. Пименов В. Ю. Простые методы поиска изображений по содержанию //
Российский семинар по Оценке Методов Информационного Поиска.
2010. С. 69–79.
4. Производство прямых трансляций // Sony URL:
http://www.sony.ru/pro/products/solutions-live-production (дата обращения:
13.01.2016).
5. 4K Live Production System at FIFA Confederations Cup 2013 // Sony URL:
https://pro.sony.com/bbsccms/assets/files/micro/4kliveproduction/brochures/4
K_Live_Production_FIFA_Confederations_Cup_2013_Brochure.pdf (дата
обращения: 17.01.2016).
6. B&H Photo Video Digital Cameras, Photography, Camcorders URL:
http://www.bhphotovideo.com (дата обращения: 04.04.2016).
7. WTS Broadcast: Broadcast and Production URL:
http://shop.wtsbroadcast.com (дата обращения: 04.04.2016).
8. Video Stitching Software // LensFrame™ URL:
http://www.coherentsynchro.com/portfolios/seo-optimization/ (дата
обращения: 06.01.2016).
41
9. Джгаркава Г. М., Лавров Д. Н. Использование метода Surf для
обнаружения устойчивых признаков изображения при создании
сферических панорамных снимков // МСиМ. 2011. №1 (22) С. 96–99.
10. Шапиро Л., Стокман Дж. Компьютерное зрение. – М.: БИНОМ.
Лаборатория знаний, 2006. – 752 с.
11. Schaeffer C. A. Comparison of Keypoint Descriptors in the Context of
Pedestrian Detection: FREAK vs. SURF vs. BRISK, 2013.
12. ORB: an efficient alternative to SIFT or SURF / Rublee E., Rabaud V.,
Konolige K., Bradski G. // Proceedings of 13th International Conference on
Computer Vision, Barcelona, 2011.
13. Bay H., Ess A., Tuytelaars T., Van Gool L. «SURF: Speeded Up Robust
Features», Computer Vision and Image Understanding (CVIU), Vol. 110, No.
3, pp. 346–359, 2008.
14. Chao J., Al-Nuaimi A., Schroth G., Steinbach E. G. (2013), Performance
comparison of various feature detector-descriptor combinations for contentbased image retrieval with JPEG-encoded query images., in 'MMSP', IEEE,
pp. 29-34.
15. David G. Lowe, «Object recognition from local scale-invariant
features» // International Conference on Computer Vision, Corfu, Greece
(September 1999), pp. 1150-1157.
16. Патент «Object detection using extended surf features» (US 20130272575
A1)
17. Rosten E., Drummond T. Machine learning for high speed corner detection //
9th European Conference on Computer Vision. Vol. 1. 2006. pp. 430–443.
42
18. Calonder M., Lepetit V., Strecha C., Fua P. BRIEF: Binary Robust
Independent Elementary Features // 11th European Conference on Computer
Vision (ECCV), Heraklion, Crete. LNCS Springer, September 2010.
19. Волков А.Г., Семёнов С.В., Севрюков С.Ю. Оценка влияния размера
словаря «Мешка визуальных слов» и компрессии кадра на скорость и
точность классификации видео // Процессы управления и устойчивость.
2016 (готовится к печати)
20. Дмитриев Д. В., Капранов С. Н. Применение алгоритмов сегментации
для классификации изображений [Электронный ресурс] // Современные
проблемы науки и образования. 2014. № 6. URL:http://www.scienceeducation.ru/ru/article/view?id=16490 (дата обращения: 17.03.2016).
21. Hastie T., Tibshirani R., Freidman J. The elements of statistical learning. Data
mining, inference and prediction. 2001. 745 p.
22. Martin A., Fischler and Robert C. Bolles «Random Sample Consensus: A
Paradigm for Model Fitting with Applications to Image Analysis and
Automated Cartography» // Comm. Of the ACM 24: 381–395.
23. O. Chum and J. Matas, Randomized RANSAC with test // 13th British
Machine Vision Conference, September 2002.
24. O. Chum and J. Matas, Matching with PROSAC - progressive sample
consensus // Proceedings of Conference on Computer Vision and Pattern
Recognition (San Diego), vol. 1, 2005, pp. 220–226.
25. R. Szeliski. Image Alignment and Stitching. In N. Paragios, Y. Chen, and O.
Faugeras, editors, Handbook of Mathematical Models in Computer Vision,
pp. 273–292. 2005.
43
ПРИЛОЖЕНИЕ. Рекомендуемые статьи из документации
OpenCV
1. http://docs.opencv.org/3.1.0/d5/df7/classcv_1_1xfeatures2d_1_1SURF.html
2. http://docs.opencv.org/3.1.0/db/d95/classcv_1_1ORB.html
3. http://docs.opencv.org/3.1.0/d5/d14/classcv_1_1BOWTrainer.html
4. http://docs.opencv.org/3.1.0/d2/d6b/classcv_1_1BOWImgDescriptorExtract
5.
6.
7.
8.
or.html
http://docs.opencv.org/3.1.0/d3/da1/classcv_1_1BFMatcher.html
http://docs.opencv.org/3.1.0/dc/de2/classcv_1_1FlannBasedMatcher.html
http://docs.opencv.org/3.1.0/d1/d2d/classcv_1_1ml_1_1SVM.html
http://docs.opencv.org/3.1.0/da/d56/classcv_1_1FileStorage.html
44
Отзывы:
Авторизуйтесь, чтобы оставить отзыв