Исследование алгоритмов отслеживания объектов на видео
Решение инженерных задач при работе с визуальными данными. Базовые структуры данных. Базовые операции над многомерными числовыми массивами. Калибровка камер, элементы восстановления пространственной структуры. Анализ движения, слежение за объектами.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 21.06.2011 |
Размер файла | 4,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки Российской Федерации
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОУ ВПО «Северо-Кавказский государственный технический университет»
Факультет информационных технологий и телекоммуникаций
«Допустить к защите»
Заведующий кафедрой ЗИ
А. Ф. Чипига
подпись инициалы, фамилия
КУРСОВАЯ РАБОТА
НА ТЕМУ:
Исследование алгоритмов отслеживания объектов на видео
Автор дипломного проекта Гладков Никита Васильевич
Специальность 090105 «Комплексное обеспечение информационной безопасности автоматизированных систем»
Группа БАС-081
Обозначение курсового проекта КР-СевКавГТУ-081024-11
Проектировал Н. В. Гладков
Руководитель работы Р. А. Воронкин
Курсовая работа защищена с оценкой:
Ставрополь, 2011
Министерство образования и науки Российской Федерации
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОУ ВПО «Северо-Кавказский государственный технический университет»
Факультет информационных технологий и телекоммуникаций
«Допустить к защите»
Заведующий кафедрой ЗИ
А. Ф. Чипига
подпись инициалы, фамилия
КУРСОВАЯ РАБОТА
НА ТЕМУ:
Исследование алгоритмов отслеживания объектов на видео
Автор дипломного проекта Гладков Никита Васильевич
Специальность 090105 «Комплексное обеспечение информационной безопасности автоматизированных систем»
Группа БАС-081
Обозначение курсового проекта КР-СевКавГТУ-081024-11
Проектировал Н. В. Гладков
Руководитель работы Р. А. Воронкин
Курсовая работа защищена с оценкой:
Ставрополь, 2011
Содержание
Введение
OpenCV
Анализ задачи
Сегментация изображений
Практическая реализация. Постановка задачи и выбор пути
Листинг программы
Заключение
Список использованной литературы
Введение
В настоящее время вычислительная техника используется во многих областях человеческой деятельности, являясь удобным и многофункциональным инструментом решения широкого круга задач. Многие отрасли техники, имеющие отношение к получению, обработке, хранению и передаче информации, в значительной степени ориентируются в настоящее время на развитие систем, в которых информация имеет характер изображений.
Вместе с тем, решение научных и инженерных задач при работе с визуальными данными требует особых усилий, опирающихся на знание специфических методов, поскольку традиционная идеология одномерных сигналов и систем мало пригодна в этих случаях. В особой мере это проявляется при создании новых типов информационных систем, решающих такие проблемы, которые до сих пор в науке и технике не решались, и которые решаются сейчас благодаря использованию информации визуального характера.
Цель машинного зрения - принятие решений о реальных физических объектах и сценах, основываясь на воспринимаемых изображениях. Машинное зрение теснейшим образом взаимодействует с областью обработки видеоизображений, часто трудно однозначно отнести возникающие задачи и применяемые методы решения к одной из этих областей.
Видео представляет собой поток сменяющих друг друга кадров, и в своей курсовой работе я рассмотрю алгоритмы распознавания объекта на изображении. Для обеспечения отслеживания объектов (изображений) на видео, достаточно будет организовать последовательную передачу кадров видеозаписи в программу для их обработки, с последующим обнаружением перемещения объекта с помощью сравнения двух кадров.
OpenCV
Для решения поставленной задачи, я решил воспользоваться OpenVC. Это библиотека, написанная на языке высокого уровня (C/C++), которая содержит алгоритмы для: интерпретации изображений, калибровки камеры по эталону, устранение оптических искажений, определение сходства, анализ перемещения объекта, определение формы объекта и слежение за объектом, 3D-реконструкция, сегментация объекта, распознавание жестов и т.д.
Эта библиотека популярна за счёт своей открытости и возможности бесплатно использовать как в учебных, так и коммерческих целях.
Фактически, OpenCV - это набор типов данных, функций и классов для обработки изображений алгоритмами компьютерного зрения.
Основные модули библиотеки:
cxcore -- ядро
* содержит базовые структуры данных и алгоритмы:
· базовые операции над многомерными числовыми массивами;
· матричная алгебра, математические функции, генераторы случайных чисел;
· Запись/восстановление структур данных в/из XML;
· базовые функции 2D графики;
CV -- модуль обработки изображений и компьютерного зрения:
· базовые операции над изображениями (фильтрация, геометрические преобразования, преобразование цветовых пространств и т. д.);
· анализ изображений (выбор отличительных признаков, морфология, поиск контуров, гистограммы);
· анализ движения, слежение за объектами;
· обнаружение объектов, в частности лиц;
· калибровка камер, элементы восстановления пространственной структуры;
Highgui -- модуль для ввода/вывода изображений и видео, создания пользовательского интерфейса:
· захват видео с камер и из видео файлов, чтение/запись статических изображений;
· функции для организации простого UI (все демо приложения используют HighGUI);
Cvaux -- экспериментальные и устаревшие функции:
· стерео калибрация;
· само калибрация;
· поиск стерео соответствия;
· нахождение и описание черт лица.
CvCam -- захват видео:
· позволяет осуществлять захват видео с цифровых видеокамер (поддержка прекращена и в последних версиях этот модуль отсутствует).
Как видно из описания модулей библиотеки OpenCV - она предоставляет широкие возможности для реализации поставленной в курсовой работе задаче, а именно организации отслеживания объекта на видео.
Анализ задачи
движение слежение камера массив
Выделение объекта на изображении
Для успешного решения задачи распознавания, необходимо выделить искомый объект на изображении, и привести его к нормализованному виду, пригодному для распознавания.
Основной метод нахождения объекта на изображении - сравнение исследуемого изображения с эталонным. При конечной его реализации, возможны значительные изменения в алгоритме нахождения объектов.
Критерием успешности выполнения алгоритма, могут служить:
· Оценка успешности человеком.
· Анализ количества найденных объектов.
· Анализ размеров найденных объектов.
· Анализ расположения найденных объектов.
· Анализ цветов найденных объектов.
Распознавание объекта
Данное раздел включает в себя широкий класс задач, различающихся в основном тем, каким образом задаются характеристики объекта и в как требуется его классифицировать.
Методы, применяемые для решения поставленной задачи, во многом зависят от особенностей объекта, который требуется локализовать. Зачастую, постановка задачи неформальна - описать свойства нужного объекта в математических терминах бывает достаточно сложно, поэтому задание часто звучит, например, так - нужно найти на изображении все, похожее вот на "это" (картинка с примером). Или, даже просто словами - найти на изображении всех, скажем, божьих коровок. Соответственно, решение задачи заключается в формулировке свойств распознаваемого объекта и конструировании устойчивого метода нахождения объектов, отвечающих указанным свойствам.
В числе основных сложностей при решении данной задачи - большое разнообразие входных данных и трудность выделения общих свойств внешнего вида для объектов естественного происхождения. Объекты искусственного происхождения обычно распознавать значительно легче.
В методах описания свойств объекта для нахождения можно выделить два крайних направления:
1. Обобщение и использование эмпирических данных и правил об объекте (top-down, bottom-up)
Идея заключается в нахождении, обобщении и формулировке в математических терминах эмпирических наблюдений и правил о том, как на изображениях обычно выглядит интересующий нас объект. Продолжая пример с божьей коровкой, можно подметить следующее:
1. Божьи коровки обычно рыжего или красного цвета;
2. На спине у них обычно присутствует некоторое количество черных пятен (можно также посчитать примерное соотношения размера пятен с размером насекомого);
3. Спина у них разделена на две половинки темной линией, обычно видимой. С одной из сторон этой линии у божьей коровки голова - темная, соотносящаяся по размерам с телом в некоторой пропорции;
4. Сверху божья коровка выглядит примерно как эллипс;
Хорошо, если известны дополнительные условия задачи и получения входных изображений, например:
1. Приблизительно известны ожидаемые размеры божьих коровок (то есть известно увеличение камеры и расстояние до снимаемого объекта);
2. Нас интересуют только божьи коровки, сидящие на листьях (значит, если принять, что листья зеленые, можно рассматривать только объекты, находящиеся на зеленом фоне);
Опираясь на перечисленные правила можно построить некий алгоритм их проверки и нахождения объектов на изображении, отвечающих этим правилам. Сложность заключается в том, что, во-первых, правила могут не описывать всех свойств объекта, во-вторых, правила могут выполняться не всегда, в-третьих, в процессе нахождения правил и их математической формулировке происходит ряд упрощений, уводя все дальше от вида реального объекта. Понятно, что успешность описанного метод напрямую зависит от фантазии и наблюдательности разработчика.
2. Моделирование внешнего вида объекта, использование инструментария распознавания образов (pattern recognition).
Суть этого подхода заключается в вычислении некоторых числовых характеристик изображения моделируемого объекта (вектора признаков) и применение различных математических методов для определения "похожести" тестовых изображений на изображение объекта, основываясь на этих характеристиках.
Например, само изображение требуемого объекта можно напрямую представить как вектор в многомерном пространстве и натренировать некоторый классификатор с помощью набора примеров изображений объектов. Классификатор в данном случае означает некоторый инструмент, принимающий на вход изображение, представленное в виде вектора в многомерном пространстве, и выдающего на выходе некую информацию, классифицирующую входное изображение относительно некоторого признака.
Примеры часто используемых классификаторов:
1. Метод наименьших квадратов;
2. Прямое сравнение по какой-либо метрике пространства векторов признаков (например, сумме разности каждого элемента вектора) тестового изображения с изображениями-шаблонами;
3. Нейросети (обычно для черно-белых изображений) - на входы нейросети подаются значения элементов вектора, на выходах формируется сигнал, классифицирующий объект на изображении;
4. Метод опорных векторов - для распознавания изображений;
5. Моделирование многомерной функции распределения векторов признаков изображений объекта, оценка вероятности принадлежности тестового изображению к смоделированному распределению (факторный анализ, метод главных компонент, анализ независимых компонент, линейный дискриминантный анализ);
6. Деформируемые модели;
Прямое представление черно-белого изображения размера m*n в качестве вектора порождает пространство размерности m*n (яркость каждого пикселя - значение элемента вектора в таком пространстве). То есть изображение сравнительно небольшого разрешения (100x100) порождает пространство размерности 10,000. Работать в таком пространстве непросто, поэтому применяются различные методики снижения размерности, например метод главных компонент (principal components analysis, PCA)
Другие примеры характеристик (признаков) изображений, используемых для их классификации и распознавания:
1. Статистика распределения цветов (в различных представлениях, в том числе гистограмма изображения);
2. Статистические моменты (среднее, дисперсия, скрытые Марковские модели);
Количество и свойства графических примитивов в объекте (прямых линий, окружностей - для распознавания символов) (на основе преобразования Хафа)
Преобразование Хафа (Hough Transform) -- это метод для поиска линий, кругов и других простых форм на изображении.
Метод Хафа был впервые применен для анализа изображений пузырьковой камеры. Преобразование Хафа предназначено для поиска объектов, принадлежащих определённому классу фигур с использованием процедуры голосования. Процедура голосования применяется к пространству параметров, из которого и получаются объекты определённого класса фигур по локальному максимуму в, так называемом, накопительном пространстве (accumulator space) которое строится при вычислении трансформации Хафа.
Существует и так называемое Обобщённое преобразование Хафа, с помощью которого можно искать фигуры произвольной формы.
Детектор границ Кенни
Края (границы) -- это такие кривые на изображении, вдоль которых происходит резкое изменение яркости или других видов неоднородностей.
Проще говоря, край -- это резкий переход/изменение яркости.
Причины возникновения краёв
· изменение освещенности;
· изменение цвета;
· изменение глубины сцены (ориентации поверхности).
Получается, что края отражают важные особенности изображения и поэтому, целями преобразования изображения в набор кривых являются:
· выделение существенных характеристик изображения;
· сокращение объема информации для последующего анализа.
Самым популярным методом выделения границ является детектор границ Кенни. Хотя работа Кенни была проведена на заре компьютерного зрения (1986), детектор границ Кенни до сих пор является одним из лучших детекторов.
Шаги детектора
· Убрать шум и лишние детали из изображения;
· Рассчитать градиент изображения;
· Сделать края тонкими (edge thinning);
· Связать края в контура (edge linking).
Детектор использует фильтр на основе первой производной от гауссианы. Так как он восприимчив к шумам - лучше не применять данный метод на необработанных изображения. Сначала, исходные изображения нужно свернуть с гауссовым фильтром. Границы на изображении могут находиться в различных направлениях, поэтому алгоритм Кенни использует четыре фильтра для выявления горизонтальных, вертикальных и диагональных границ.
Сегментация изображений
Сегментация изображений, как и выделение границ объектов, играет важную роль в системах Computer Vision и применяются для задач распознавания сцен и выделения (определения) объектов. По большому счету, это такой же инструмент, как, например, сортировка, предназначенный для решения более высокоуровневых задач.
К областям, получаемым в результате сегментации, предъявляются следующие требования:
1. Области должны быть однородны относительно определенных характеристик.
2. Внутренние части областей должны быть простыми без большого количества маленьких отверстий.
3. Смежные области должны существенно отличаться по значениям выбранных характеристик, относительно которых они считаются однородными.
4. Границы каждого сегмента должны быть простыми, пространственно точными.
Сегментация является наиболее критической процедурой процесса автоматизации анализа изображений, поскольку ее результаты влияют в дальнейшем на все последующие действия, связанные с анализом изображения: представление выделенных объектов и их текстовое описание, измерение признаков, а также другие задачи более высокого уровня
Выделяют следующие алгоритмы сегментации:
1. Алгоритмы пороговой обработки.
2. Алгоритмы классификации пикселей (включая релаксацию, подходы на основе случайного поля марковского типа и подходы на основе нейронных сетей).
3. Алгоритмы сегментации изображений, воспроизводящих трехмерную структуру сцены.
4. Алгоритмы сегментации цветных изображений.
5. Алгоритмы выделения краев.
Алгоритм пороговой обработки
Некоторые задачи обработки изображения связаны с преобразованием полутонового изображения (то есть такого, которое имеет много градаций яркости) в бинарное (двухградационное). Такое преобразование осуществляется в первую очередь для того, чтобы сократить информационную избыточность изображения, оставить в нем только ту информацию, которая нужна для решения конкретной задачи. В бинарном изображении должны быть сохранены интересующие нас детали (например, очертания изображенных объектов) и исключены несущественные особенности (фон).
Пороговая обработка полутонового изображения заключается в разделении всех элементов изображения на два класса по признаку яркости, где f0 - некоторое "пороговое" значение яркости.
При выполнении пороговой обработки основной вопрос состоит в выборе порога f0 . Пусть полутоновое изображение содержит интересующие нас объекты одной яркости на фоне другой яркости (типичные примеры: машинописный текст, чертежи, медицинские пробы под микроскопом и т. д.). На практике, однако, встречаются определенные трудности, связанные с тем, что, во-первых, изображение искажено шумом и, во-вторых, как для объектов, так и для фона характерен некоторый разброс яркостей. В результате пики функции плотности распределения “расплываются”.
Алгоритм классификации пикселя
Алгоритм классификации очень прост: применение порога к весу текущего процесса. Если значение веса текущего процесса больше чем значение порога, то пиксель классифицируется как заднеплановый, иначе он классифицируется как переднеплановый.
Метод, используемый для классификации пикселей допускает принадлежность к заднему плану сразу нескольких процессов. Именно по этом при наличии динамического заднего плана алгоритм через некоторое время адаптируется к его повторяющимся движениям. Более того, алгоритм способен адаптироваться к таким движениям сцены как дождь или снег. Также алгоритм способен адаптироваться к изменениям заднего плана т.к. через некоторое время после изменения вес созданного при изменении процесса превысит порог и он начнет сегментироваться в задний план. К медленным изменениям освещения алгоритм способен адаптироваться благодаря системе оценки параметров, т.к. по мере плавного изменения цвета пикселей заднего плана алгоритм будет переобучаться на новые значения. К быстрым изменениям освещения алгоритм адаптируется также, как он адаптируется к изменениям заднего плана.
Алгоритмы сегментации изображений, воспроизводящих трехмерную структуру сцены
Оптический поток -- это изображение видимого движения объектов, поверхностей или краев сцены, получаемое в результате перемещения наблюдателя (глаз или камеры) относительно сцены. Алгоритмы, основанные на оптическом потоке, такие как регистрация движения, сегментация объектов, кодирование движений и подсчет диспаритета в стерео используют это движение объектов, поверхностей и краев.
Методы, основанные на оптическом потоке, вычисляют движение между двумя кадрами, взятыми в момент времени и , в каждом пикселе.
Алгоритмы оптического потока не только определяют поле потока, но и используют оптический поток при анализе трехмерной сущности и структуры сцены, а также 3D движения объектов и наблюдателя относительно сцены.
Оптический поток используется не только для определения движения наблюдателя и объектов относительно сцены, но и для изучения структуры объектов. Поскольку, определение движения и создание карт структуры окружающей среды, являются неотъемлемой частью животного (человеческого) зрения, то реализация этой врожденной способности средствами компьютера является неотъемлемой частью компьютерного зрения.
Для наглядности можно представить видео ролик из пяти кадров в котором шар движется из нижнего левого угла в правый верхний. Методы нахождения движения могут определить, что на двумерной плоскости шар движется вверх и вправо и векторы, описывающие это движение могут быть получены из последовательности кадров. При сжатии видео это правильное описание последовательности кадров. Однако, в области компьютерного зрения без дополнительной информации нельзя сказать движется ли шар вправо, а наблюдатель стоит на месте, или шар покоится, а наблюдатель движется влево.
Алгоритмы сегментации цветных изображений
Сегментация цветного изображения это процесс выделения из пространства изображения одной или нескольких связных областей, удовлетворяющих критерию однородности, основанному на признаках, вычисляемых из значений нескольких цветовых компонентов. Эти компоненты определены в выбранной модели цветового пространства.
Возможно, наиболее важный признак метода сегментации это способ определения области. Можно выделить 4 основных типа определений:
1. Область это связное подмножество множества пикселов, определенное порождающей функцией, заданной в пространстве цветов. Семейство алгоритмов, использующих такое определение области, называют пиксельными алгоритмами сегментации. Выделяется несколько групп пиксельных алгоритмов:
1) Пороговое отсечение. В данной группе алгоритмов строятся гистограммы цветовых признаков. Для автоматического поиска по гистограммам порогов, как правило, используются алгоритмы, применяемые при обработке полутоновых изображений, например, критерий Отсу.
2) Кластеризация в пространстве цветов. Значения пикселей собираются в группы (кластеры) с одним или более представителем, которые используются далее в процессе классификации.
3) Кластеризация в пространстве цветов с использованием аппарата нечеткой логики (fuzzy logic). Для всех пикселей вычисляются нечеткие функции принадлежности и определяются нечеткие кластеры. Четкие кластеры получаются в результате анализа степени принадлежности. Далее изображение разбивается на связные области.
2. Область это максимальное по площади связное множество пикселей, для которого выполняется свойство однородности. Алгоритмы, использующие такой подход, можно разделить на две группы:
1) Методы наращения областей. Задается некоторое количество базовых однородных областей, после чего используются различные стратегии для объединения соседних областей.
2) Методы разбиения-слияния. Такие алгоритмы начинают работать с неоднородными областями, разбивая их до получения однородных областей, после чего применяют некоторые эвристические подходы для объединения с целью получить максимальные по площади области.
3. Область это связное множество пикселей, окруженное граничными пикселями, образующими цветовой контур. Области также однородны, т.к. они являются дополнением множества неоднородных областей, образованных граничными пикселями. Часто контур имеет разрывы и необходимо решать задачу замыкания контуров.
Локальные методы для определения граничных точек используют информацию из окрестности этой точки. Глобальные методы выполняют глобальную оптимизацию, и, таким образом, граничная точка может быть определена в результате многих шагов оптимизации, включающих изменения больших участков изображения.
4. Области соответствуют поверхностям или объектам из однородного материала, т.е. области представляют связный материал в сцене. Основное отличие данных методов от вышеперечисленных состоит в том, что учитываются отражающие свойства материалов сцены. Таким образом, применение данного класса алгоритмов ограничивается набором объектов, для которых хорошо известны и могут быть смоделированы их отражающие свойства.
Алгоритмы выделения краев
Существует множество подходов к выделению границ, но практически все можно разделить на две категории: методы, основанные на поиске максимумов, и методы, основанные на поиске нулей. Методы, основанные на поиске максимумов, выделяют границы с помощью вычисления «силы края», обычно выражения первой производной, такого как величина градиента, и затем поиска локальных максимумов силы края, используя предполагаемое направление границы, обычно перпендикуляр к вектору градиента. Методы, основанные на поиске нулей, ищут пересечения оси абсцисс выражения второй производной , обычно нули Лапласиана или нули нелинейного дифференциального выражения
В своей работе я уже описал самые распространенные алгоритмы - алгоритм Канни и преобразование Хафа. Однако существует еще целый ряд эффективных алгоритмов
Оператор Собеля. Это дискретный дифференциальный оператор, вычисляющий приближенное значение градиента яркости изображения. Результатом применения оператора Собеля в каждой точке изображения является либо вектор градиента яркости в этой точке, либо его норма. Оператор Собеля основан на свёртке изображения небольшими сепарабельными целочисленными фильтрами в вертикальном и горизонтальном направлениях, поэтому его относительно легко вычислять.
Если проще, то оператор вычисляет градиент яркости изображения в каждой точке. Так находится направление наибольшего увеличения яркости и величина её изменения в этом направлении. Результат показывает, насколько «резко» или «плавно» меняется яркость изображения в каждой точке, а значит, вероятность нахождения точки на грани, а также ориентацию границы. На практике, вычисление величины изменения яркости (вероятности принадлежности к грани) надежнее и проще в интерпретации, чем расчет направления.
Математически, градиент функции двух переменных для каждой точки изображения (которой и является функция яркости) -- двумерный вектор, компонентами которого являются производные яркости изображения по горизонтали и вертикали. В каждой точке изображения градиентный вектор ориентирован в направлении наибольшего увеличения яркости, а его длина соответствует величине изменения яркости. Это означает, что результатом оператора Собеля в точке области постоянной яркости будет нулевой вектор, а в точке, лежащей на границе областей различной яркости -- вектор, пересекающий границу в направлении увеличения яркости.
Алгоритм Робертса
Он представляет собой первое известное решение задачи об удалении невидимых линий. Алгоритм, прежде всего, удаляет из каждого тела те ребра или грани, которые экранируются самим телом. Затем каждое из видимых ребер каждого тела сравнивается с каждым из оставшихся тел для определения того, какая его часть или части, если таковые есть, экранируются этими телами. Поэтому вычислительная трудоемкость алгоритма Робертса растет теоретически, как квадрат числа объектов. Это в сочетании с ростом интереса к растровым дисплеям, работающим в пространстве изображения, привело к снижению интереса к алгоритму Робертса. Однако математические методы, используемые в этом алгоритме, просты, мощны и точны. Кроме того, этот алгоритм можно использовать для иллюстрации некоторых важных концепций. Работа Алгоритм Робертса проходит в два этапа:
1. Определение нелицевых граней для каждого тела отдельно.
2. Определение и удаление невидимых ребер.
Оператор Робертса используется ради быстроты вычислений, но он проигрывает в сравнении с альтернативами с его значительной проблемой чувствительности к шуму. Он даёт линии тоньше, чем другие методы выделения границ.
Вывод: в процессе анализа задачи мною были рассмотрены наиболее эффективные алгоритмы определения объекта на изображении, что является необходимым условием для успешной реализации практической части курсовой работы.
Практическая реализация
Для решения практической части я решил выбрать подход выделения объектов на изображениях по распределению цветовой гаммы. Данный подход является в своей основе достаточно простым, но, не смотря на это, может давать хорошие результаты в ряде случае. Иногда этот подход применяется как первоначальный этап обработки изображения, для решения более сложных задач, например детектирования лиц. Такой подход может использоваться и в системах трекинга, если цвет объекта отличается от фона.
Постановка задачи
В моем распоряжении имеется видеозапись, на которой отчетливо виден баскетбольный мяч ярко оранжевого цвета.
Рассмотрим задачу отслеживания движений баскетбольного мяча. Есть входной поток изображения. На каждом кадре изображения необходимо определить наличие или отсутствие баскетбольного мяча. Мяч при детектировании выделить окружностью.
Решение задачи разбивается на несколько этапов:
· выделения пикселей, соответствующих баскетбольному мячу;
· выделение контурами найденные объекты;
· нахождении контура мяча;
· построение окружности, в которую попадают все точки контура мяча.
С помощью средств OpenCV данная задача решается очень просто. На рисунках 1а представлены примеры кадров с баскетбольным мячом. Мячу соответствуют в основном оранжевые пиксели. Поэтому для выделения большинства из них достаточно следующего условия:
· R > 1.5*G, R > 2*B,
где R, G, и B - соответствующие компоненты пикселя.
На рисунке 1 представлены результаты выделения пикселей, соответствующих мячу, что показано в виде белых пикселей на чёрном фоне.
а) |
б) |
Рисунок 1. Исходные изображения (а), изображения с выделенными пикселями, соответствующими цвету мяча (б)
Из найденных контуров необходимо выделения максимального, который в данном примере будет соответствовать мячу. Результаты выделения максимального контура представлены на рисунке 2а.
Далее необходимо найти центр и радиус окружности, соответствующей области мяча. Для этого в OpenCV есть функция cvMinEnclosingCircle. Ниже приведено её описание.
int cvMinEnclosingCircle(const CvArr* points,
CvPoint2D32f* center,
float* radius);
Параметры:
· points - последовательность или массив 2D точек;
· center - выходной параметр: центр окружности;
· radius - выходной параметр: радиус окружности.
Функция ищет минимальную окружность, включающую в себя все точки последовательности. При невозможности найти окружность функция возвращает 0.
На рисунке 2б приведены примеры выделения окружностей для приведенных случаев.
а) |
б) |
Рисунок 2. Выделение контура мяча (а), выделение окружности (б)
Установка программы
Программа носит демонстрационный характер показывая возможность распознавания и отслеживания объекта на видео. Установки не требует. Для запуска программы достаточно запустить скомпилированный .exe файл. Предварительно следует скопировать видеозапись на которой следует распознать объект в папку с программой
Листинг программы
#include “cv.h”
#include “highgui.h”
#include <stdio.h>
#include <ctype.h>
void FindBall(IplImage* Img);
void Counter(IplImage* img);
CvPoint2D32f center;
float radius;
long pointer=0;
int main( int argc, char** argv )
{
CvCapture* capture = 0;
capture = cvCaptureFromAVI( “capture-1.avi” );
cvNamedWindow( “Demo”, 1 );
for(;;)
{
IplImage* frame = 0;
int i, k, c;
frame = cvQueryFrame( capture );
if( !frame )
break;
FindBall(frame);
cvShowImage( “Demo”, frame );
c = cvWaitKey(50);
if( (char)c == 27 )
break;
pointer++;
}
cvWaitKey(0);
// освобождаем ресурсы
cvReleaseCapture( &capture );
cvDestroyWindow(”Demo”);
return 0;
}
void FindBall(IplImage* Img)
{
// Создаём 8-битную, 3-канальную картинку
IplImage* Image=cvCreateImage( cvGetSize(Img), 8, 3 );
cvCopy(Img,Image);
//Теперь необходимо получить доступ к всем пикселям.
uchar* ptr1;
ptr1 = (uchar*) (Image->imageData );
int i,j;
for(i=0;i<Img->height;i++)
for(j=0;j<Img->width;j++)
{
//наше условие для поиска оранжевых пикселей R > 1.5*G, R > 2*B
if (ptr1[j*3+2+i*Image->widthStep]>1.5*ptr1[j*3+1+i*Image->widthStep] &&
ptr1[j*3+2+i*Image->widthStep]>2*ptr1[j*3+i*Image->widthStep])
{
ptr1[j*3+i*Image->widthStep]=255;
ptr1[j*3+1+i*Image->widthStep]=255;
ptr1[j*3+2+i*Image->widthStep]=255;
}
else
{
ptr1[j*3+i*Image->widthStep]=0;
ptr1[j*3+1+i*Image->widthStep]=0;
ptr1[j*3+2+i*Image->widthStep]=0;
}
}
//Выделение контуров и поиск наибольшего контура
Counter(Image);
if (center.x>-1)
{
CvPoint p;
p.x=center.x;
p.y=center.y;
cvCircle( Img, p, radius, CV_RGB(255,0,0), 3, 8, 0 );
}
cvReleaseImage( &Image );
}
void Counter(IplImage* img)
{
IplImage* img_gray= cvCreateImage( cvSize(img->width,img->height), 8, 1);
CvSeq* contours = 0;
CvMemStorage* storage = cvCreateMemStorage(0);
cvCvtColor( img, img_gray, CV_BGR2GRAY );
cvFindContours( img_gray, storage, &contours, sizeof(CvContour),
CV_RETR_LIST , CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) );
CvSeq* h_next=0;
//Поиск максимального контура
for( CvSeq* c=contours; c!=NULL; c=c->h_next )
{
if (c!=contours)
{
//Проверяем какой контур больше
if (h_next->total>=c->total)
{
h_next->h_next=h_next->h_next->h_next;
continue;
}
}
h_next=c;
}
center.x=-1;
if (h_next->total<200) return;//нет мяча - слишком маленькие контуры
cvDrawContours( img, h_next, CV_RGB(255,0,0), CV_RGB(0,255,0),2, 2, CV_AA, cvPoint(0,0) );
//Минимальная окружность
cvMinEnclosingCircle(h_next,¢er,&radius);
// освобождаем ресурсы
cvReleaseMemStorage( &storage);
cvReleaseImage( &img_gray );}
Заключение
Результатом написания данной курсовой работы стала программная реализация одного из алгоритмов отслеживания объекта на видео, а именно алгоритм выделения объектов на изображениях по распределению цветовой гаммы. Данный подход является в своей основе достаточно простым, но, не смотря на это, может давать хорошие результаты в ряде случае. Иногда этот подход применяется как первоначальный этап обработки изображения, иногда для решения более сложных задач.
Написанная программа носит демонстративный характер, показывая хорошие результаты по определению и детектированию объектов определенной формы (формы шара) и определенного цвета (оранжевого) на видео.
Успешная реализация стала возможна после изучения основных алгоритмов сегментации изображения и распознавания объектов на изображения, а так же благодаря встроенным в библиотеку OpenCV алгоритмам для обработки изображений алгоритмами компьютерного зрения.
Список литературы
1. Хорн Б.К.П. Зрение роботов: Пер. с англ. - М.; Мир, 1989. - 487 с., ил.
2. Gary Bradski, Adrian Kaehler «Learning OpenCV. Computer vision with the OpenCV library».
3. Бакут П.А., Колмогоров Г.С. Сегментация изображений: методы выделения границ областей.
4. Бакут П.А., Колмогоров Г.С., Ворновицкий И.Э. Сегментация изображений: методы пороговой обработки, 1987. №10, с. 6-24.
5. Компьютерное зрение / Л. Шапиро, Дж. Стокман; Пер. с англ. - М.: БИНОМ. Лаборатория знаний, 2006. - 752 с.
6. Ярославский Л., Введение в цифровую обработку изображений, 1979. Глава -- Препарирование изображений.
7. И.М.Журавель «Краткий курс теории обработки изображений»: Границы изображений: Края и их обнаружение.
8. Анисимов Б.В. Распознавание и цифровая обработка изображений - М.: Высш. школа, 1983 - 295с.
9. Денисов Д.А., Низовкин В.А. Сегментация изображений на ЭВМ, 1985. №10, с. 5-31.
10. Гонсалес Р., Вудс Р. Цифровая обработка изображений / Москва: Техносфера, 2006.- 1072 с.
11. Махфуд У.А. Комбинированные алгоритмы сегментации цветных изображений.: дис. канд. тех. наук: 05.13.01/ У.А. Махфуд; Институт технической кибернетики национальной академии наук Беларуси. - Минск, 2002.
12. Иванов В.К., Пащенко Р.Э., Стадник А.М., Яцевич С.Е., Кучук Г.А. Фрактальный анализ изображений лесных массивов, 2005, №12, pp. 55-62.
Размещено на Allbest.ru
Подобные документы
Свойства алгоритма как определенного содержания и порядка действий над объектами. Базовые алгоритмические структуры: следование, ветвление, повторение. Структурированные типы данных. Реализация на языке программирования задач при помощи алгоритмов.
контрольная работа [598,6 K], добавлен 06.12.2014Решение задач, прямо связанных с применением циклов и массивов. Условия применения различных видов циклической структуры. Операторы цикла с предусловием while, постусловием do-while и for. Особенности работы с одномерными и двумерными массивами.
курсовая работа [1,1 M], добавлен 31.08.2019Алгоритмы, базовые структуры. Описание последовательности действий над заданными объектами для получения конечного результата. Линейный и разветвляющийся процессы. Знакомство со средой разработки, проектирование решения линейных задач средствами VBA.
реферат [268,9 K], добавлен 21.09.2009Разработка программы для решения инженерных задач с использованием функций, процедур и сложных типов данных, в том числе динамических массивов и объединений. Интерфейс ввода/вывода. Схемы алгоритмов отдельных подзадач. Технические требования к программе.
курсовая работа [60,7 K], добавлен 26.11.2012Основные типичные системы управления базами данных. Способы описания взаимодействий между объектами и атрибутами. Структурная и управляющая части иерархической модели базы данных. Представление связей, операции над данными в иерархической модели.
реферат [30,5 K], добавлен 22.02.2011Обзор рекламного ролика Vodafone "Bubbles". Слежение за точками и плоскостью в двухмерном трекинге. Трехмерный трекинг: захват движения и системы, основанные на принципе фотограмметрии. Методика создания ролика в условиях малобюджетной видео-студии.
дипломная работа [8,6 M], добавлен 25.01.2012Пример дерева решений. Анализ древовидной структуры данных. Предикторные (зависимые) переменные как признаки, описывающие свойства анализируемых объектов. Решение задач классификации и численного прогнозирования с помощью деревьев классификации.
презентация [391,1 K], добавлен 09.10.2013Сущность языка программирования, идентификатора, структуры данных. Хранение информации, алгоритмы их обработки и особенности запоминающих устройств. Классификация структур данных и алгоритмов. Операции над структурами данных и технология программирования.
контрольная работа [19,6 K], добавлен 11.12.2011Базы данных с двумерными файлами и реляционные системы управления базами данных (СУБД). Создание базы данных и обработка запросов к ним с помощью СУБД. Основные типы баз данных. Базовые понятия реляционных баз данных. Фундаментальные свойства отношений.
реферат [57,1 K], добавлен 20.12.2010Понятие и структура банка данных. Основные структурные элементы базы данных. Система управления базами данных. Преимущества централизации управления данными. Понятие информационного объекта. Современные технологии, используемые в работе с данными.
курсовая работа [1,8 M], добавлен 02.07.2011