Использование OpenCV в задачах распознавания образов
Устройство и компоненты системы машинного (компьютерного) зрения. Изучение основных возможностей библиотеки OpenCV в задачах распознавания образов. Описание алгоритмов поиска, обработки и анализа изображений объектов методом сравнения их контуров.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 07.08.2018 |
Размер файла | 6,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
· Хорошее отношение сигнала к шуму, то есть детектор должен выделять все истинные границы и при этом не выделять ложные.
· Хорошая локализация. Точки, отмеченные как границы, должны располагаться как можно ближе к истинному положению границ.
· Единственность отклика на границу (это требование содержится в первом критерии, однако математическая формулировка первого критерия не обеспечивает выполнение данного пункта).
Хотя детектор границ Canny и был разработан в самом начале развития систем компьютерного зрения, он до сих пор является одним из наиболее часто используемых. Кроме некоторых частных случаев, трудно найти другой детектор, который работал бы существенно лучше детектора границ Canny, и практически все работы по сравнительному исследованию детекторов границ содержат его в качестве некого своего рода эталона. Так как он восприимчив к шумам, лучше не применять данный метод на необработанных изображения, а предварительно по максимуму удалить с изображения все шумы.
В OpenCV, детектор границ Кенни реализован функцией cvCanny(), которая обрабатывает только одноканальные изображения (например, в градациях серого). Функция cvCanny() на языке C++ имеет следующий синтаксис:
image -- одноканальное изображение для обработки (градации серого) edges -- одноканальное изображение для хранения границ, найденных функцией threshold1 -- порог минимума threshold2 -- порог максимума aperture_size -- размер для оператора Собеля
Результаты работы детектора границ Кенни в значительной степени зависят от выбранных значений порога максимума и минимума, что позволяет регулировать чувствительность обнаружения границ во время выполнения его работы. Ниже представлены результаты работы детектора границ Кенни в зависимости от выбранного порога максимума и минимума.
Рис. 4.5 - Исходное изображение
При значениях порога минимума и максимума, равными 10, чувствительность оказалась слишком высокой, в результате чего детектор границ обработал слишком много помех, хотя контуры изображения уже вполне различимы (рис. 4.6). Однако с таким результатом дальнейшая работа становится трудновыполнимой, поэтому требуется подборка нужных значений.
Рис. 4.6 - Изображение после применения к нему детектора границ Кенни.
Для снижения уровня чувствительности детектора границ необходимо экспериментальным образом подобрать необходимые значения минимума и максимума порога определения. Удовлетворительного распознавания границ с сохранением довольно подробной детализацией внутренних линий объекта и чёткого внешнего контура удаётся получить, если увеличить оба значения порога до 50 (рис. 4.7):
При увеличении порога максимума до 100 сохраняется чёткий внешний контур изображения, в то время как внутренняя детализация сводится к минимуму (рис. 4.8):
Рис. 4.7 - Изображение после применения к нему детектора границ Кенни.
Рис. 4.8 - Изображение после применения к нему детектора границ.
Дальнейшее увеличение порогов чувствительности вместе с заметным снижением детализации приводит к образованию разрывов во внешнем контуре объекта, что недопустимо (рис. 4.9):
Рис. 4.9 - Изображение после применения к нему детектора границ.
4.5 Нахождение контуров
Контурный анализ -- это один из важных и очень полезных методов описания, хранения, распознавания, сравнения и поиска графических образов или объектов. Контурный анализ предпочтительно проводить после предварительной обработки изображения.
Контур -- это внешние очертания (границы) предмета или объекта на изображении. При проведении контурного анализа:
· полагается, что контур содержит достаточную информацию о внешней форме объекта;
· внутренние точки объекта во внимание не принимаются.
Вышеприведённые положения, разумеется, накладывают существенные ограничения на область применения контурного анализа, которые, в основном, связаны с проблемами выделения контура на изображениях:
· из-за одинаковой яркости с фоном объект может не иметь чёткой границы, или может быть зашумлён помехами, что приводит к невозможности выделения контура;
· перекрытие объектов или их группировка приводит к тому, что контур выделяется неправильно и не соответствует границе объекта.
Однако, переход к рассмотрению только контуров объектов на изображениях позволяет уйти от пространства этого изображения к пространству контуров, что существенно снижает сложность алгоритмов и вычислений.
Таким образом, контурный анализ имеет довольно слабую устойчивость к помехам, и любое пересечение или лишь частичная видимость объекта приводит либо к невозможности детектирования, либо к ложным срабатываниям, но простота и быстродействие контурного анализа, позволяют вполне успешно применять данный подход (при чётко выраженном объекте на контрастном фоне и отсутствии помех).
Библиотека OpenCV реализует удобные методы для детектирования и манипуляции с контурами изображения. Для поиска контуров используется функция cvFindContours(). Функция cvFindContours() на языке C++ имеет следующий синтаксис:
image -- исходное 8-битное одноканальное изображение (ненулевые пиксели обрабатываются как 1, а нулевые -- 0) Для получения такого изображения из градаций серого можно, например, использовать функции cvThreshold() или cvCanny(). storage -- хранилище памяти для хранения данных найденных контуров first_contour -- указатель, который будет указывать на первый элемент последовательности, содержащей данные найденных контуров header_size -- размер заголовка элемента последовательности mode -- режим поиска:
method -- метод аппроксимации:
offset -- смещение, на которое сдвигать точки контура. Отобразить найденные контуры можно с помощью функции cvDrawContours():
img -- изображение на котором будут нарисованы контуры contour -- указатель на первый контур external_color -- цвет внешних контуров hole_color -- цвет внутренних контуров(отверстие) max_level -- максимальный уровень для отображения контуров (0 -- только данный контур, 1 -- данный и все следующие на данном уровне, 2 -- все следующие контуры и все контуры на следующем уровне и т.д. ) thickness -- толщина линии для отображения контуров (если величина отрицательная, то область, ограниченная контуром заливается выбранным цветом ) line_type -- тип линии
Результат операции поиска и отрисовки на изображении найденных контуров представлен на рисунке 4.11. На этапе анализа эти контуры могут использоваться для распознавания изображённого объекта.
Рис. 4.10 - Входное изображение
Рис. 4.11 - Найденные контуры.
5. Анализ изображений
Полученные на предыдущем этапе контуры изображения будут использоваться для обнаружения объектов на изображении. Для этого найденный контур будет сравниваться с заданным заранее контуром предмета, который необходимо найти.
Сравнение контуров -- распространённая задача, возникающая, например, при решении проблемы поиска заданного объекта на изображении.
Самый простой вариант сравнения пары контуров -- это рассчитать их моменты. Момент -- это суммарная характеристика контура, рассчитанная интегрированием (суммированием) всех пикселей контура. Момент (p,q) определяется формулой:
(5.1)
где p и q -- порядок возведения в степень соответствующего параметра при суммировании; n -- число пикселей контура.
Исходя из определения, можно сделать вывод, что момент m равен длине пикселей контура (вернее сказать -- площадь, но так как мы рассматриваем не полигон, а границу, то уместно вести речь о длине)
array - растровое изображение (одноканальное, 8-битное 2D-массив элементов с плавающей точкой) или массив ( 1xN или Nx1 ) 2D-точек (Point или Point2f ). moments - возвращаемые моменты binary - если задан, то все ненулевые пиксели исходной картинки интерпретируются, как 1.
Также может использоваться класс cv::Moments():
Таким образом, сравнение двух контуров можно свести к сравнению их моментов. Однако моменты, найденные по простой формуле, имеют существенные недостатки:
· они не позволяют сравнивать контуры одинаковой формы, но разных размеров, поэтому их, сначала нужно нормализовать (операция приведения контуров к единой длине позволяет добиться инвариантности к масштабу).
· зависят от системы координат, а значит не позволят определить повёрнутую фигуру.
Поэтому, лучше использовать нормализованные инвариантные моменты. В библиотеке OpenCV для этого применяется следующая функция:
Функция cvGetCentralMoment() служит для вычисления центральных моментов (central moments), которое производится по следующей формуле:
(5.2)
где , -- центр масс:
(5.3)
И функция cvGetNormalizedCentralMoment(), которая служит для вычисления нормализованных центральных моментов (normalized central moments):
Таким образом, распознавание объекта на изображении происходит при помощи сравнения формы его внешних контуров с формой внешнего контура объекта-образца, которая определяется с помощью вычисления центра масс каждого из объектов.
При моделировании использовалась функция cvMatchShapes(), вычисляющая нормализованные центральные моменты двух поданных в качестве входных параметров контуров изображений и сравнивающая их формы с помощью функций, описанных выше.
В качестве распознаваемых предметов в данном случае будут использоваться геометрические фигуры разной формы для лучшей наглядности работы алгоритма.
Распознавание происходит следующим образом. Сначала в файл, по умолчанию названный template.jpg, помещается изображение, которое необходимо будет найти. Этот файл расположен в папке с проектом, и при необходимости может иметь другое название и расширение.
Рис. 5.1 - Файл template.jpg
Затем происходит чтение этого файла, после чего к нему применяются алгоритмы обработки изображения, рассмотренные ранее, а именно преобразование к черно-белому формату, размытие изображения по Гауссу, и потом с помощью детектора границ на нём синим цветом выделяется внешний контур (рис. 5.2).
Рис. 5.2 - Выделение контура объекта
После того, как было обработано изображение с объектом, который требуется найти, аналогичным образом обрабатывается изображение, на котором ведётся поиск объекта. Найденные на нём контуры сохраняются в массив, после чего сравниваются с формой контура образца. При этом объекты могут отличаться размером и цветом, но должны быть одинаковой формы. При нахождении совпадения, контур найденного объекта выделяется красной линией (рис. 5.3).
Также этот алгоритм будет работать, если входное изображение заменить на видеопоток, получаемый с камеры. Если на нём будет находиться какой-либо предмет круглой формы, или иной другой формы, соответствующей форме объекта-образца, он также будет распознан и выделен.
Если же необходимо обеспечить распознавание нескольких объектов, то все они должны быть расположены в файле, из которого считывался образец, после чего должен быть создан массив контуров с этими образцами, с каждым из которых потом будет проводиться сравнение найденных в видеопотоке контуров.
Рис. 5.3 - Контуры найденных объектов
Заключение
В рамках выполнения выпускной работы были исследованы алгоритмы распознавания объектов методом сравнения их контуров и был пройден ряд этапов, в ходе которых были достигнуты следующие результаты:
· проведен анализ предметной области: рассмотрены основные понятия, определения и дальнейшие перспективы развития компьютерного зрения.
· был выбран инструментарий, изучены особенности его применения и использование определенных навыков и знаний, полученных в ходе обучения в университете.
· в ходе исследования алгоритмов была выполнена их реализация, тестирование и были сделаны выводы о применимости алгоритмов.
· был проведен анализ результатов, полученных в ходе исследования алгоритмов.
К основным преимуществам использования в качестве ключевого признака такого свойства объектов, как внешние контуры объекта для его определения относятся быстрота выделения объекта и малая требовательность к ресурсам, к недостаткам же относится слабая устойчивость к помехам и не допустимость пересечения или частичной видимости объекта.
Размещено на Allbest.ru
...Подобные документы
Анализ основных аспектов технологии компьютерного зрения, необходимых для выполнения работы. Изучение характеристик библиотеки OpenCV, оценка актуальности работы по распознаванию жестов рук. Поэтапный отчет о работе над программным обеспечением.
курсовая работа [669,9 K], добавлен 20.05.2017Метод главных компонент. Процесс распознавания. Ковариационная матрица, диагональная матрица собственных чисел. Использовании метрики Махаланобиса и Гауссовского распределения для оценки близости изображений. Входные вектора. Библиотека OpenCV.
статья [22,1 K], добавлен 29.09.2008Оптико-электронная система идентификации объектов подвижного состава железнодорожного транспорта. Автоматический комплекс распознавания автомобильных номеров. Принципы и этапы работы систем оптического распознавания. Особенности реализации алгоритмов.
дипломная работа [887,3 K], добавлен 26.11.2013OpenCV – библиотека компьютерного зрения с открытым исходным кодом, предоставляющая набор типов данных, функций и численных алгоритмов для обработки изображений. Ее реализация на C/C++. Цели использования технологии. Основные модули библиотек 1-3.
презентация [121,8 K], добавлен 14.12.2013Основные понятия теории распознавания образов и ее значение. Сущность математической теории распознавания образов. Основные задачи, возникающие при разработке систем распознавания образов. Классификация систем распознавания образов реального времени.
курсовая работа [462,2 K], добавлен 15.01.2014Теоретические основы распознавания образов. Функциональная схема системы распознавания. Применение байесовских методов при решении задачи распознавания образов. Байесовская сегментация изображений. Модель TAN при решении задачи классификации образов.
дипломная работа [1019,9 K], добавлен 13.10.2017Обзор задач, возникающих при разработке систем распознавания образов. Обучаемые классификаторы образов. Алгоритм персептрона и его модификации. Создание программы, предназначенной для классификации образов методом наименьшей среднеквадратической ошибки.
курсовая работа [645,2 K], добавлен 05.04.2015Анализ существующих проблем и обзор библиотеки обработки изображений и алгоритмов общего назначения OpenCV. Особенности разработки и детальный анализ требований к программе. Основная логика ее работы и реализация. Трекинг лица и объекта по цвету.
дипломная работа [1,3 M], добавлен 26.06.2017Понятие и особенности построения алгоритмов распознавания образов. Различные подходы к типологии методов распознавания. Изучение основных способов представления знаний. Характеристика интенсиональных и экстенсиональных методов, оценка их качества.
презентация [31,6 K], добавлен 06.01.2014Выбор типа и структуры нейронной сети. Подбор метода распознавания, структурная схема сети Хопфилда. Обучение системы распознавания образов. Особенности работы с программой, ее достоинства и недостатки. Описание интерфейса пользователя и экранных форм.
курсовая работа [3,0 M], добавлен 14.11.2013Основные цели и задачи построения систем распознавания. Построение математической модели системы распознавания образов на примере алгоритма идентификации объектов военной техники в автоматизированных телекоммуникационных комплексах систем управления.
дипломная работа [332,2 K], добавлен 30.11.2012Понятие системы распознавания образов. Классификация систем распознавания. Разработка системы распознавания формы микрообъектов. Алгоритм для создания системы распознавания микрообъектов на кристаллограмме, особенности его реализации в программной среде.
курсовая работа [16,2 M], добавлен 21.06.2014Появление технических систем автоматического распознавания. Человек как элемент или звено сложных автоматических систем. Возможности автоматических распознающих устройств. Этапы создания системы распознавания образов. Процессы измерения и кодирования.
презентация [523,7 K], добавлен 14.08.2013Методы распознавания образов (классификаторы): байесовский, линейный, метод потенциальных функций. Разработка программы распознавания человека по его фотографиям. Примеры работы классификаторов, экспериментальные результаты о точности работы методов.
курсовая работа [2,7 M], добавлен 15.08.2011Создание программного средства, осуществляющего распознавание зрительных образов на базе искусственных нейронных сетей. Методы, использующиеся для распознавания образов. Пандемониум Селфриджа. Персептрон Розенблатта. Правило формирования цепного кода.
дипломная работа [554,8 K], добавлен 06.04.2014Определение компьютерной графики, задачи, виды, области применения. Способы распознавания образов, системы технического зрения. Инструменты для синтеза изображений и обработки визуальной информации. Представление цветов, форматы графических файлов.
шпаргалка [49,9 K], добавлен 13.09.2011Описание структурной схемы искусственного нейрона. Характеристика искусственной нейронной сети как математической модели и устройств параллельных вычислений на основе микропроцессоров. Применение нейронной сети для распознавания образов и сжатия данных.
презентация [387,5 K], добавлен 11.12.2015Распознавание образов - задача идентификации объекта или определения его свойств по его изображению или аудиозаписи. История теоретических и технических изменений в данной области. Методы и принципы, применяемые в вычислительной технике для распознавания.
реферат [413,6 K], добавлен 10.04.2010Словесный, графический, табличный, программный способы представления алгоритма. Основные конструкции в любом алгоритмическом языке. Теория обнаружения, различения и оценивания сигналов. Радиолокационные системы обнаружения. Система распознавания образов.
презентация [4,8 M], добавлен 09.06.2015Искусственные нейронные сети как одна из широко известных и используемых моделей машинного обучения. Знакомство с особенностями разработки системы распознавания изображений на основе аппарата искусственных нейронных сетей. Анализ типов машинного обучения.
дипломная работа [1,8 M], добавлен 08.02.2017