Uploaded by El Undead

Пример ВКР от моего руководителя

advertisement
Государственное бюджетное образовательное учреждение
высшего образования Московской области
«Университет «Дубна»
Филиал «Котельники»
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
БАКАЛАВРСКАЯ РАБОТА
Тема Распознавание и отслеживание динамического объекта
Ф.И.О. студента Шведова Александра Валерьевича
Группа ИВТ-41 Направление подготовки 09.03.01 «Информатика и
вычислительная техника»
Профильная направленность образовательной программы Технологии разработки
программного обеспечения
Выпускающая кафедра Информационные технологии в управлении
Руководитель работы
__________________________ /доц.Орлов Н.Н. /
подпись
Консультант (ы)
уч. степень, И.О. Фамилия
__________________________ /________________/
подпись
уч. степень, И.О. Фамилия
_________________________ /________________/
подпись
Рецензент
уч. степень, И.О. Фамилия
________________________
/_________________/
подпись
уч. степень, И.О. Фамилия
Выпускная квалификационная работа
допущена к защите
«_____» ________________ 20__ г.
Заведующий кафедрой
___________/ доц.Орлов Н.Н./
подпись
г. Котельники
1
уч. степень, И.О. Фамилия
Государственное бюджетное образовательное учреждение
высшего образования Московской области
«Университет «Дубна»
Филиал «Котельники»
УТВЕРЖДАЮ
Заведующий кафедрой
_______________________
________
/ Н.Н.Орлов /
(подпись)
(ФИО)
«04» декабря 2017г.
Задание
на выпускную квалификационную работу- бакалаврскую работу
Тема Распознавание и отслеживание динамического объекта
Утверждена приказом № 4752 от28.11.2017г.
Ф.И.О. студента Шведов Александр Валерьевич
Группа ИВТ-41 Направление подготовки 09.03.01 «Информатика и
вычислительная техника»
Профильная направленность образовательной программы Технологии разработки
программного обеспечения
Выпускающая кафедра Информационные технологии в управлении
Дата выдачи задания
«04» декабря 2017 г.
Дата завершения бакалаврской работы
«11» июня 2018г.
2
Исходные данные к работе:
Ресурсы OpenCV
Ресурсы EmguCV
Результаты работы:
ВВЕДЕНИЕ
1.АНАЛИЗ МЕТОДОВ ОБНАРУЖЕНИЯ ОБЪЕКТОВ
1.1Методы обнаружения
1.2Бинаризация изображение по порогу
1.3Преобразование Фурье
1.4Вейвлет-преобразования
1.5Фильтрация функций
1.6Фильтрация контуров
1.7Особые точки
1.8Методы машинного обучения
Выводы по главе
2.ОБЗОР ИСПОЛЬЗОВАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.1.Среда разработки
2.2.Платформа .NET Framework
2.3.Язык программирования
2.4.Используемые библиотеки
Выводы по главе
3.РАЗРАБОТКА МАКЕТА РОБОТИЗИРОВАННОЙ СИСТЕМЫ НА ПЛАТФОРМЕ ARDUINO
3.1Используемые средства и технические устройства
3.2Arduino Nano
3.3Шаговый двигатель 28BYJ-48
3.4Разработка корпуса
3.5Обмен информацией
Выводы по главе
4.РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
4.1Разработка графического интерфейса
4.2Разработка алгоритма поиска объекта по эталону
4.3 Описание работы программы
Выводы по главе
ЗАКЛЮЧЕНИЕ
Список литературы
Консультант (ы)
______________________ / _______________ /
подпись
И.О. Фамилия
______________________ / _______________ /
подпись
И.О. Фамилия
______________________ / _______________ /
подпись
Руководитель работы
И.О. Фамилия
____________________
подпись
Задание принял к исполнению
/ М.В.Сахаров /
И.О. Фамилия
«04» декабря 2017г.
________________
дата
подпись студента
Я, Шведов Александр Валерьевич, ознакомлен(а) с требованием об обязательности проверки
выпускной квалификационной работы на объем заимствования. Все прямые заимствования из
печатных и электронных источников, а также из защищенных ранее выпускных
квалификационных работ, кандидатских и докторских диссертаций, должны иметь в работе
соответствующие ссылки.
Я ознакомлен(а) с Порядком размещения текстов выпускных квалификационных работ
обучающихся по программам бакалавриата, программам специалитета и программам
магистратуры в электронной информационно-образовательной системе университета «Дубна» и
проверки на объем заимствования, согласно которому, обнаружение в выпускной
квалификационной работе заимствований, в том числе содержательных, неправомочных
заимствований является основанием для недопуска работы к защите и отчисления из университета
(филиала).
___________ /______________/
подпись
3
Фамилия И.О.
Содержание
ВВЕДЕНИЕ.............................................................................................................................................. 5
1.
АНАЛИЗ МЕТОДОВ ОБНАРУЖЕНИЯ ОБЪЕКТОВ............................................................... 10
1.1
Методы обнаружения............................................................................................................ 10
1.2
Бинаризация изображение по порогу .................................................................................. 12
1.3
Преобразование Фурье ......................................................................................................... 14
1.4
Вейвлет-преобразования....................................................................................................... 15
1.5
Фильтрация функций ............................................................................................................ 16
1.6
Фильтрация контуров ........................................................................................................... 18
1.7
Особые точки ......................................................................................................................... 19
1.8
Методы машинного обучения .............................................................................................. 20
Выводы по главе ................................................................................................................................ 21
2.
ОБЗОР ИСПОЛЬЗОВАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ................................... 22
2.1.
Среда разработки................................................................................................................... 22
2.2.
Платформа .NET Framework ................................................................................................ 23
2.3.
Язык программирования....................................................................................................... 26
2.4.
Используемые библиотеки ................................................................................................... 28
Выводы по главе................................................................................................................................ 31
3. РАЗРАБОТКА МАКЕТА РОБОТИЗИРОВАННОЙ СИСТЕМЫ НА ПЛАТФОРМЕ
ARDUINO .............................................................................................................................................. 32
3.1
Используемые средства и технические устройства ........................................................... 32
3.2
Arduino Nano .......................................................................................................................... 32
3.3
Шаговый двигатель 28BYJ-48.............................................................................................. 35
3.4
Разработка корпуса ............................................................................................................... 38
3.5
Обмен информацией ............................................................................................................. 40
Выводы по главе................................................................................................................................ 42
4.
РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ............................................................... 43
4.1
Разработка графического интерфейса ................................................................................. 43
4.2
Разработка алгоритма поиска объекта по эталону ............................................................. 45
4.3 Описание работы программы..................................................................................................... 51
Выводы по главе................................................................................................................................ 56
ЗАКЛЮЧЕНИЕ ..................................................................................................................................... 58
Список литературы ............................................................................................................................... 59
4
ВВЕДЕНИЕ
На данный момент с быстрым развитием компьютерных систем и
информационных
технологий
становятся
востребованными
системы
роботизации и автоматизации, как в промышленном и научном секторе, так и
в
повседневной
жизни.
В
следствии
этого
актуальна
разработка
производительных методах обработки входящей информации, в данном
случает потоке видеоданных. Эффективная обработка и использование
поступающей
информации
позволяет
существенно
повысить
производительность и расширить применяемость данных систем.
Обоснованием
вышесказанному
является
всеобщее
развитие
и
использование робототехнических устройств, охранных систем основанных
на
определении
изображений
и
детектировании
движений,
систем
распознания текстов и т.д. В последнее время все большее внимание уделяется
системам, использующим машинное зрение в качестве основного источника
информации. Это приводит к образованию потребности в совершенно новых
алгоритмах обработки и распознавания изображений.
Эффективность распознавания образов в процессе автоматизации
экономики
и
производства,
роботизации
спасательных
мероприятий,
роботизации военных сил и частных военных компаний, действующих в
интересах государства и других объединений, становится вопросом
сохранения человеческих жизней.
Тем не менее, задача распознавания образов до сих пор не решена в
полном объеме. Несмотря на это, в рамках значительных ограничений, есть
способы, позволяющие успешно решать поставленные задачи.
Компьютерное зрение (машинное зрение) —
это
совокупность
программно-технических средств, которые предоставляют считывание в
цифровой форме видеоизображений, их обработку и выдачу результата в
форме, которая подходит для его практического применения в реальном
масштабе
времени.
Классифицируют
монокулярное
и
бинокулярное
машинное зрение, предназначенных соответственно для построения и
5
обработки плоских и объемных изображений. Исследование компьютерного
зрения является научным направлением в области искусственного интеллекта
и связанных с ним технологий считывания изображений реальных объектов,
их обработки и использования полученных данных для автоматизированного
решения прикладных задач. Старт разработок, связанных с данным
направлением, относится к 1950-м годам. Первый успешное начинание в этой
области было достигнуто в Корнеллской лаборатории аэронавтики в 19581960 годах. На ЭВМ IBM-740 был реализован аппаратный вариант системы
распознавания элементарных зрительных образов — Mark I Perceptron (автор
разработки - Фрэнк Розенблатт).
На сегодняшний момент существует достаточно много различных
подходов к реализации систем машинного зрения, начиная от разнообразных
модификаций на тему сравнения полученного изображения с эталонным, и
заканчивая построением по изображениям сложных моделей в трехмерном
пространстве.
Когда человек наблюдает за окружающими его лицами людей,
предметами, природу, он не осмысляет какой объем труда проделывает его
мозг, чтобы обработать весь поток зрительной информации. Нам не составит
труда найти знакомого нам человека на фотографии, или отличить здание от
памятника. Казалось бы, наши компьютеры отлично могут хранить огромные
объемы информации, картинки, видео и аудио файлы. Что мешает им с такой
же легкостью найти фото нашего любимого человека из личной фотогалереи?
Этому препятствует ряд моментов:
1) Масштаб. Изображения имеют разный масштаб. Предметы, которые
мы воспринимаем как одинаковые, на самом деле занимают разную
площадь на разных изображениях.
2) Место. Интересующий нас объект может находиться в разных местах
изображения.
3) Фон и помехи. Предмет, который мы воспринимаем как что-то
отдельное, на изображении никак не выделен, и находится на фоне
6
других предметов. Кроме того, изображение не идеально и может
быть подвержено всякого рода искажениям и помехам.
4) Проекция, вращение и угол обзора. Изображение является лишь
двумерной проекцией нашего трехмерного мира. Поэтому поворот
объекта и изменение угла обзора кардинальным образом влияют на
его двумерную проекцию — изображение. Один и тот же объект
может давать совершенно разную картинку, в зависимости от
поворота или расстояния до него.
При этом образец на сцене может:
1.
иметь другой масштаб
2.
быть повернут в плоскости изображения
3.
быть в произвольном месте сцены
4.
может быть зашумлен, виден не полностью, частично заслонен
другими предметами
5.
может иметь отличную от образца яркость и контраст
6.
его может не быть совсем
Область машинного зрения, в свою очередь, развивается как теория и
технология создания машин, производящих обнаружение, отслеживание и
классификацию объектов. Как научная дисциплина, машинное зрение тесно
связано с машинным обучением и теорией детектировани образов, но
относится к более узкоспециализированной сфере теории и технологии
создания искусственных систем, получающих данные и оперирующих данным
из изображений. Автоматическое планирование или принятие решений на
основе подсистем машинного зрения так же занимает одну их важнейших
частей в области искусственного интеллекта, так как автономные системы
достаточно
сложного
уровня
организации,
выполняющие
некоторые
механические действия (например, передвижение робота через некоторую
среду), нуждаются в высокоуровневых данных, представляющих информацию
о той среде, в которой они работают.
7
Поэтому машинное зрение, как и обнаружение образов, тесно связано с
обработкой сигналов, ведь многочисленные методы обработки одномерных
сигналов могут быть естественным путём расширены для обработки
двумерных или многомерных сигналов в рамках теории машинного зрения,
использующей статистику, методы оптимизации и геометрии.
Область
обработки
преобразованиях
одних
изображений
сосредоточена
на
изображений
в
использованием
другие
с
анализе
и
математических методов.
Область машинного зрения, часто рассматриваемая как раздел более
общей теории компьютерного зрения, сосредоточена на технологиях
промышленного применения.
Существуют также и другие более узкие области, связанные, зависящие
или возникшие на основе теории компьютерного зрения, такие как, например,
область визуализации, сосредоточенная на процессе создания изображений,
их обработкой и анализом.
Теория компьютерного зрения исследует методы обработки не только
двухмерных изображений, но и работает с трёхмерными сценами, что будет
продемонстрировано в рамках данной работы.
В данный момент не существует ни стандартной формулировки
проблемы компьютерного зрения, ни формулировки того как должна решаться
проблема компьютерного зрения, вместо чего разработана масса методов для
решения различных строго определённых задач, при этом используемые
методы редко обобщаются для широкого круга применения. Как и в
рассмотренных выше двух крупных теориях, исследуемых и применяемых в
данной работе, этот фактор порождает сложности при решении общей
проблемы индукции в теории компьютерного зрения.
Целью дипломного проекта является разработка системы распознавания
и отслеживания динамического объекта по эталонному изображению с
помощью роботизированной системы компьютерного зрения.
Для достижения этих целей решались следующие задачи:
8
 Анализ методов детектирования объектов на изображении
 Анализ средств разработки для решения поставленной задачи
 Разработка роботизированной системы компьютерного зрения
 Разработка программного обеспечения, позволяющая распознавать и
отслеживать в пространстве динамический объект.
9
1. АНАЛИЗ МЕТОДОВ ОБНАРУЖЕНИЯ ОБЪЕКТОВ
1.1 Методы обнаружения
Распознавание объектов (рис 1.1) — это научная дисциплина, основной
целью которой является поиск объектов по нескольким критериям или
классам. Теория распознавания объектов — это раздел информатики, где
изучаются основы по разработке основных методов идентификации
предметов, явлений и сигналов. необходимость в таком распознавании
существует в различных областях, от компьютерного зрения, распознавания
символов, медицинской диагностики, распознавания речи и до узко
специальных проблем. Несмотря на то, что часть этих задач человеком
решаются на бессознательном уровне с высокой скоростью, до текущего
времени ещё не изобретено компьютерных программ, решающих их в столь
же общем виде.
Распознавание объектов
В связи с этим, задача распознавания объектов имеет повсеместное
распространение, также и в областях искусственного интеллекта и
робототехники. Возможность идентификации базируется на похожести
подобных объектов. Несмотря на то, что все явления и предметы не похожи
10
друг на друга, между некоторыми из них всегда можно найти сходства по тому
или иному признаку.
Все методы распознавания объектов делятся на два вида: методы,
основанные на теории решений и структурные методы.
Первые основаны на вычислении с помощью количественных величин,
таких как длина, текстура и т.д.
Вторые ориентированы на образы, для описания которых больше
подходят качественные величины, например, реляционные.
Также в распознавании объектов немаловажную роль играет обучение
на основе известной выборки.
Под образом подразумевается некоторая упорядоченная совокупность
признаков.
Классом
образов
называется
совокупность
объектов
с
одинаковыми свойствами. Классификатором или решающим правилом
называется правило отнесения образа к одному из классов на основании его
вектора признаков. На практике широкое применение имеют три формы
представления признаков: вектор признаков (для количественных величин),
символьная строка и деревья признаков (для структурных величин.
Методы, основанные на сопоставлении, представляют собой наборы
векторов признаков каждого класса объектов. Новый образ будет отнесен к
тому классу, который окажется наиболее близким, в пределах заранее
заданной метрики. Очевидно, что самый простой подход состоит в поиске
минимального расстояния, которое вычисляется при помощи евклидовых
норм между векторами признаков неизвестного объекта и векторами
прототипа. Вывод о принадлежности объекта к определенному классу
происходит
по
наименьшему
из
этих
расстояний.
Минимальный
классификатор расстояния хорошо работает в тех случаях, где расстояние
между точками математического ожидания классов велико по сравнению с
диапазоном разброса объектов каждого класса.
Не
менее
важными
являются
методы
распознавания
образов,
основанные на вероятностных классификаторах, по причине случайностей,
11
которые влияют на порождение классов образов. Следовательно, необходимо
выработать такой оптимальный подход, при использовании которого окажется
наименьшая вероятность появления ошибок.
Очень сложно однозначно ответить, как выглядит оптимальный метод,
описывающий
компьютерное зрение. Однако, можно
разделить все
существующие методы на три ступени: первичная обработка и фильтрация,
логическая оценка результатов фильтрации и алгоритмы принятия решений.
Как правило, для распознавания объектов на изображении необходимо
применить все эти этапы, однако бывает достаточно двух, или даже одного.
К группе фильтрации можно отнести методы, которые позволяют
определить на изображении интересующие объекты, без предварительного
анализа. Основная масса таких методов использует какую-либо единую
операцию ко всем точкам изображения одновременно. На данном уровне
анализ как правило не проводится.
1.2 Бинаризация изображение по порогу
Самым простым преобразованием является бинаризация изображения
по порогу (рис. 1.2).
Бинаризация изображений, т.е. перевод полноцветного или в градациях
серого изображения в монохромное, где присутствуют только два типа
пикселей (темные и светлые) имеет большое значение при распознавании
образов. Особенно это относится к бинарным объектам, таким, как штриховые
коды, текст, чертежи и т.п. Существуют различные подходы к бинаризации,
которые условно можно разделить на 2 группы:
пороговые;
адаптивные.
12
Бинаризация изображения по порогу
13
Для RGB изображения и изображения в градациях серого порогом
является значение цвета. Выбор порога, по которому происходит бинаризация,
во
многом
определяет
процесс
бинаризации.
Обычно
бинаризация
осуществляется с помощью адаптивного алгоритма, выбирающего порог.
Таким алгоритмом может являться выбор математического ожидания, моды
или пиков гистограммы. При работе с гистограммой бинаризация эффективна
для сегментации цветов.
Адаптивные методы работают с участками изображений и используются
при неоднородном освещении объектов.
1.3 Преобразование Фурье
Существующие
применены
в
классические
широком
спектре
методы
задач.
фильтрации
Наиболее
могут
быть
распространенным
классическим методом является преобразование Фурье (рис 1.3), однако он не
используется в изображениях в чистом виде. Однако для анализа изображений
часто бывает недостаточно простого одномерного преобразования, и
требуется гораздо более ресурсоемкое двумерное преобразование.
Преобразование Фурье
Этот метод применяется только в случае, если необходим анализ
спектра, поскольку использование свёртки интересующей области с уже
14
готовым фильтром оказывается быстрее и проще в реализации. Тем не менее,
одномерное преобразование Фурье применяется при компрессии изображений
Вычисление по такой формуле является достаточно трудоемким,
поэтому на практике чаще пользуются сверткой интересующей области с
помощью низкочастотных или высокочастотных фильтров, в зависимости от
конкретной задачи. Такое упрощение конечно, не позволяет более широкого
диапазона операций, таких как анализ, однако зачастую бывает достаточно
только результата без последующих преобразований.
1.4 Вейвлет-преобразования
Вейвлет-преобразования (рис.1.4) являются более перспективным и
современным методом обработки изображений, чем преобразование Фурье.
Они упрощают сжатие, анализ и передачу большого количества изображений.
Вейвлет-преобразования основаны на разложения по малым волнам
(вейвлетам) с изменяющейся частотой и ограничением по времени, в отличие
от преобразования Фурье, построенного на гармонических функциях.
Пример вейвлет-преобразования изображения.
В 1987 году Стефан Маллат впервые продемонстрировал, что вейвлеты
могут быть положены в основу принципиально нового метода обработки
изображений,
получившего
название
15
кратномасштабный
анализ. Как
очевидно из названия, кратномасштабная теория имеет дело с анализом
изображений при различных разрешениях, так как многие детали, незаметные
при одном масштабе, могут быть легко найдены при другом. Долгое время
вейвлеты обладали весьма ограниченным распространением, однако в
настоящий момент уже трудно уследить за всей информацией, имеющейся по
этой теме.
При взгляде на изображение, мы видим связанные наборы объектов
одинаковой яркости и структуры, которые объединяясь образуют предметы
или области отображения. Когда присутствуют одновременно, как маленькие
объекты, так и большие, то анализ изображения в разных разрешениях
позволит значительно расширить области обработки.
С математической точки зрения изображение является двумерной
матрицей значений яркости. Однако при переходе от одной его части к другой,
даже такие статистики первого порядка, как гистограммы значительно
меняются. Существует набор классических функций, применяемых в вейвлет
преобразованиях: вейвлет Хаара, вейвлет Морле, вейвлет Добеши и т.д.
Хорошим примером применения вейвлет анализа является задача поиска
блика в зрачке глаза, где вейвлетом является сам блик.
В основе вейвлетов лежит корреляция, которая может применяться как
в совокупности с другими методами, так и самостоятельно. При
распознавании образа в изображении это незаменимый инструмент.
1.5 Фильтрация функций
Другим не менее интересным классом фильтрации является фильтрация
функций. Она позволяет на простом изображении найти множество кусочков
простейших функций (прямая, парабола и т.д.). Наиболее известным является
преобразование Хафа, которое позволяет находить любые эффективно
вычислимые функции.
16
Преобразование
Хафа
(рис.
1.5)
позволяет
находить
любые
параметризуемые функции. Например окружности. Есть модифицированное
преобразование, которое позволяет искать любые фигуры.
Но вот при обработке изображений, оно, к сожалению, работает далеко
не всегда. Очень медленная скорость работы, очень высокая чувствительность
к качеству бинаризации. Даже в идеальных ситуациях лучше обходиться
другими методами.
Аналогом преобразования Хафа для прямых является преобразование
Радона . Оно вычисляется через БПФ, что даёт выигрыш производительности
в ситуации, когда точек очень много. К тому же его возможно применять к не
бинаризованному изображению.
Преобразование Хафа для поиска прямых линий
17
1.6 Фильтрация контуров
Отдельный раздел фильтрации — фильтрация контуров (рис. 1.6). Она
очень полезна в той ситуации, когда объект достаточно сложный, но имеет
четкие границы.
Рассмотренные фильтры могут решить большинство задач, однако не
стоит забывать о менее распространенных, но используемых в локальных
задачах: итерационные фильтры, курвлет и бамблет преобразования и т.д.
Поле фильтрации на выходе получается набор данных, поддающихся
обработке. Но порой они все же требуют дополнительных логических
преобразований. Поэтому необходимо введение методов, позволяющих
перейти от целого изображения к свойствам объектов на нем.
Методы математической морфологии являются средством перехода от
фильтрации к логике. Они позволяют убрать шумы на бинарном изображении,
изменив размер имеющихся элементов. Также существует множество
методов, которые позволяют идентифицировать объект по контуру. Такой
подход называется контурным анализом.
Фильтрацию контуров реализует ряд алгоритмов, таких как:
оператор
Кэнни,
являющийся
наиболее
часто
используемым
алгоритмом поиска контуров,
оператор Собеля,
оператор Лапласа,
оператор Прюитт,
оператор Робертса.
Алгоритм Кэнни реализует понятие подавления немаксимумов,
означающее, что пикселями границ объявляются пиксели, в которых
достигается локальный максимум градиента в направлении вектора градиента.
В компьютерном зрении и обработке изображений при поиске границ
объектов кроме особенных частных случаев трудно найти детектор, который
бы работал существенно лучше, чем детектор Кэнни.
18
Анализ и поиск контуров
1.7 Особые точки
Особые точки (рис. 1.7) предоставляют уникальные характеристики
объекта, позволяя сравнивать различные изображения одного объекта или
одного класса объектов между собой. Поэтому на практике особые точки
наиболее актуальны в задачах, в которых возможным решением является
19
обработка серии изображений или видеопотока и последующий анализ
полученных массивов особых точек.
Алгоритмы feature detection можно условно классифицировать по
степени стабильности точек при переходах от одного изображения (кадра)
объекта или класса объектов к другому. Сложность алгоритмов поиска
возрастает с требуемым уровнем стабильности искомых точек
Особые точки
1.8 Методы машинного обучения
Методы машинного обучения и принятия решений являются финальной
стадией в распознавании образов. Они находятся на стыке математической
статистики, методов оптимизации и классических математических дисциплин,
но имеет также и собственную специфику, связанную с проблемами
вычислительной эффективности и переобучения.
В большинстве случаев суть обучения заключается в следующем: на
основе обучающей выборки с признаками каждого класса построить такую
модель, с помощью которой машина сможет проанализировать новое
изображение и решить, какой из объектов имеется на изображении.
Существует два типа обучения: на основе человеческий знаний,
перенесенных в компьютер в виде базы и обучение по прецедентам
(индуктивное) основанное на выявлении закономерностей. В реальных
прикладных задачах входные данные об объектах могут быть неполными,
20
неточными, нечисловыми, разнородными. Эти особенности приводят к
большому разнообразию методов машинного обучения.
Выводы по главе
Таким образом, проведен краткий анализ существующих методов
машинного распознавания образов. Искусственный интеллект и некоторые
смежные области, такие как анализ сцен и машинное зрение, все еще
пребывают на начальных стадиях развития. Однако, описанные подходы
действительно крайне разнообразны и с помощью большинства из них можно
решить практически любую задачу распознавания образов.
21
2. ОБЗОР ИСПОЛЬЗОВАННОГО ПРОГРАММНОГО
ОБЕСПЕЧЕНИЯ
2.1.Среда разработки
В качестве среды разработки системы обнаружения объекта по шаблону
использовалась среда разработки Microsoft Visual Studio 2015.
Microsoft Visual Studio — это ассортимент продуктов компании
Microsoft, включающих интегрированную среду разработки программного
обеспечения и набор других инструментальных средств.
Данное программное обеспечение позволяют вести разработку как
консольных приложений, так и приложений с графическим интерфейсом,
включая приложения с поддержкой технологии Windows Forms, а также вебсайты, веб-приложения, веб-службы.
Visual Studio включает в себя редактор исходного кода с поддержкой
технологии IntelliSense и возможностью простейшего рефакторинга кода.
Встроенный отладчик может работать как отладчик уровня исходного кода,
так и отладчик машинного уровня. Остальные встраиваемые инструменты
включают в себя редактор форм, созданный для упрощения создания
графического интерфейса приложения, веб-редактор, дизайнер классов и
дизайнер схемы базы данных.
Visual Studio разрешает создавать и подключать сторонние дополнения
для увеличения функциональности практически на каждом уровне, включая
добавление поддержки систем контроля версий исходного кода (как,
например, Subversion и Visual SourceSafe), добавление новых наборов
инструментов (например, для редактирования и визуального проектирования
кода на предметно-ориентированных
языках программирования)
или
инструментов для прочих аспектов процесса разработки программного
обеспечения.
22
2.2.Платформа .NET Framework
.NET Framework - это программная среда, разработанная Microsoft,
которая работает в основном в Microsoft Windows (рис 2.1).
Стек компонентов .NET Framework
23
Он включает в себя большую библиотеку классов с именем Framework
Class Library (FCL) и обеспечивает взаимодействие языков (каждый язык
может использовать код, написанный на других языках) на нескольких языках
программирования.
Программы,
написанные
для
.NET
Framework,
выполняются в программной среде (в отличие от аппаратной среды),
называемой Common Language Runtime (CLR). CLR — это виртуальная
машина
приложенияпредоставляет
такие
услуги,
как
безопасность,
управление памятью и обработка исключений. Таким образом, компьютерный
код,
написанный
с
использованием
.NET
называется
Framework,
«управляемый код». FCL и CLR вместе составляют .NET Framework.
FCL обеспечивает пользовательский интерфейс, доступ к данным,
подключение к базе данных, криптографию, разработку веб-приложений,
численные алгоритмы и сетевые коммуникации. Программисты создают
программное обеспечение, комбинируя их исходный код с .NET Framework и
другими
библиотеками.
Фреймворк предназначен
для
использования
большинством новых приложений, созданных для платформы Windows.
Microsoft также создает интегрированную среду разработки для ПО .NET,
которая называется Visual Studio.
.NET
Framework
начинался
как
проприетарное
программное
обеспечение, хотя фирма работала над стандартизацией программного стека
практически сразу, еще до его первого выпуска. Несмотря на усилия по
стандартизации, разработчики,
в
основном
представители
сообществ
свободного программного обеспечения и программного обеспечения с
открытым исходным кодом, выразили свое беспокойство по поводу
выбранных условий и перспектив любой бесплатной реализации с открытым
исходным кодом, особенно в отношении патентов на программное
обеспечение . С тех пор Microsoft изменила разработку .NET, чтобы более
точно следовать современной модели программного проекта, разработанного
сообществом, в том числе выпустить обновление своего патента, обещающего
решить проблемы.
24
.NET Framework - семейство платформ .NET, предназначенных для
мобильных
компьютеров,
встроенных
устройств,
альтернативных
операционных систем и плагинов для веб-браузера. Сокращенная версия
платформы .NET Compact Framework доступна на платформах Windows CE,
включая устройства Windows Mobile, такие как смартфоны. .NET Micro
Framework
ориентирована
на
встраиваемые
устройства
с
очень
ограниченными ресурсами. Silverlight был доступен как плагин для веббраузер. Монодоступно для многих операционных систем и адаптировано под
популярные операционные системы для смартфонов (Android и iOS) и игровые
движки . .NET Core предназначена для универсальной платформы Windows
(UWP), а также для межплатформенных и облачных рабочих нагрузок.
.NET Framework включает в себя набор стандартных библиотек классов.
Библиотека классов организована в иерархию пространств имен. Большинство
встроенных интерфейсов прикладного программирования (API) являются
частью пространства имен System.*или Microsoft.*пространства имен. Эти
библиотеки классов реализуют многие общие функции, такие как чтение и
запись файлов, рендеринг графики, взаимодействие с базой данных и
манипулирование документами XML. Библиотеки классов доступны для всех
CLI-совместимых языков. Библиотека классов разделена на две части (без
четких границ): библиотека базовых классов (BCL) и библиотека классов
рамок (FCL).
BCL включает небольшое подмножество всей библиотеки классов и
является базовым набором классов, которые служат базовым API CLR. Для
.NET Framework большинство классов, которые считаются частью BCL,
находятся в mscorlib.dll, System.dllи System.Core.dll. Классы BCL доступны в
.NET Framework, а также в его альтернативных реализациях, включая .NET
Compact Framework, Microsoft Silverlight , .NET Core и Mono .
FCL является надмножеством BCL и относится ко всей библиотеке
классов, которая поставляется с .NET Framework. Он включает расширенный
набор библиотек, в том числе Windows Forms , ASP.NET и Windows
25
Presentation Foundation (WPF), а также расширения для библиотек базовых
классов
ADO.NET
,
Language
Integrated
Query
(LINQ),
Windows
Communication Foundation (WCF), и Фонд рабочих процессов (WF). FCL
намного больше по объему, чем стандартные библиотеки для языков,
подобных C ++ , и сопоставим по объему со стандартными библиотеками Java.
С введением альтернативных реализаций (например, Silverlight)
Microsoft представила концепцию Portable Class Libraries (PCL), позволяющую
библиотеке-потребителю работать на более чем одной платформе. С
дальнейшим
распространением
платформ
.NET
подход
PCL
не
масштабировался (PCL — это определенные пересечения поверхности API
между
двумя
или
более
платформами).
В
качестве
следующего
эволюционного шага PCL, .NET Standard Library была создана задним числом
на основеSystem.Runtime.dllоснованные на API, найденные в UWP и
Silverlight. Новые платформы .NET поощряются для реализации версии
стандартной
библиотеки,
позволяющей
им
повторно
использовать
существующие сторонние библиотеки для запуска без новых версий.
Стандартная библиотека .NET обеспечивает независимую эволюцию уровней
библиотеки и модели приложения в архитектуре .NET.
NuGet - менеджер пакетов для всех платформ .NET. Он используется для
извлечения сторонних библиотек в проект .NET с глобальным фидом
библиотек на NuGet.org. [46] Частные каналы могут поддерживаться отдельно,
например, сервером сборки или каталогом файловой системы.
2.3.Язык программирования.
C# — объектно-ориентированный язык программирования.
Разработан в 1998—2001 годах группой инженеров под руководством
Андерса Хейлсберга в компании Microsoft как язык разработки приложений
для
платформы
Microsoft
.NET
Framework
и
впоследствии
стандартизирован как ECMA-334 и ISO/IEC 23270. 45
Стандарт ECMA перечисляет цели разработки для C #:
26
был
Язык предназначен для того, чтобы быть простым, современным,
универсальным, объектно-ориентированным языком программирования .
Язык и его реализации должны обеспечивать поддержку принципов
разработки программного обеспечения, таких как строгая проверка типов,
проверка
границ
массивов
,
обнаружение
попыток
использовать
неинициализированные переменные и автоматический сбор мусора .
Надежность программного обеспечения, долговечность и производительность
программиста важны.
Язык предназначен для использования при разработке программных
компонентов, подходящих для развертывания в распределенных средах.
Переносимость очень важна для исходного кода и программистов,
особенно тех, кто уже знаком с C и C ++ .
Поддержка интернационализации очень важна.
C # предназначен для написания приложений как для размещенных, так
и для встроенных систем , начиная от очень больших, использующих сложные
операционные системы , и заканчивая очень маленькими, имеющими
специальные функции.
Хотя приложения C # должны быть экономичными в отношении
требований к памяти и вычислительной мощности , язык не должен был
напрямую конкурировать по производительности и размеру с языком C или
ассемблером.
C# принадлежит к семье языков с C-подобным синтаксисом, из них его
синтаксис наиболее схож с C++ и Java. Язык имеет статическую типизацию,
поддерживает полиморфизм, перегрузку операторов (в том числе операторов
явного и неявного приведения типа), делегаты, атрибуты, события, свойства,
обобщённые типы и методы, итераторы, анонимные функции с поддержкой
замыканий, LINQ, исключения, комментарии в формате XML.
Переняв многое от своих предшественников — языков C++, Pascal,
Модула, Smalltalk и, в особенности, Java — С#, опираясь на практику их
использования, исключает некоторые модели, зарекомендовавшие себя как
27
проблематичные при разработке программных систем, например, C# в
отличие от C++ не поддерживает множественное наследование классов
(между тем допускается множественное наследование интерфейсов).
Существует несколько реализаций C#:
- Реализация C# в виде компилятора csc.exe включена в состав .NET
Framework (включая .NET Micro Framework, .NET Compact Framework и его
реализации под Silverlight и Windows Phone 7);
- В составе проекта Rotor (Shared Source Common Language Infrastructure)
компании Microsoft;
- Проект Mono включает в себя реализацию C# с открытым исходным
кодом;
- Проект DotGNU также включает компилятор C# с открытым кодом; DotNetAnywhere — ориентированная на встраиваемые системы реализация
CLR, поддерживает практически всю спецификацию C# 2.0;
2.4.Используемые библиотеки
Для распознавания изображения и выделения контуров, а также доступа
к видеопотоку камеры используется библиотека EmguCV.
Emgu CV является кроссплатформенным .Net дополнением для
библиотеки OpenCV для обработки изображений. Разработано для работы с
.NET совместимыми языками, такими как C #, VB, VC ++, IronPython и т.д.,
может быть использовано в Visual Studio, Xamarin, работает с Windows, Linux,
Mac OS X, IOS, Android и Windows Phone.
Структура библиотеки EmguCV приведена на рисунке 2.2.
28
Структура библиотеки EmguCV
Emgu CV имеет два слоя:
- Базовый слой содержит функции, структуры и перечисления которые
напрямую отражены в OpenCV;
- Второй слой содержит классы, которые дополнены преимуществами
платформы .NET.
Основные преимущества EMGU CV.
1.
Кроссплатформенность.
EMGU CV полностью написана на языке С#. Разработчиками было
затрачено много сил для реализации «чистого» C#, так как потребовалась
29
замена заголовочных файлов, которые при использовании управляемого
кодана С++ могли быть просто включены в проект.
Преимуществом
использования
C#
для
разработки
является
возможность компиляции EMGU CV с использованием Mono – реализации
.NET Framework на базе свободного программного обеспечения. Это
позволяет использовать EMGU CV на большинстве актуальных настольных и
мобильных платформ.
2.
Возможность
использования
большого
числа
языков
программирования.
3. Наличие примеров использования и документации для каждого из
поддерживаемых языков.
OpenCV (англ. Open Source Computer Vision Library, библиотека
компьютерного зрения с открытым исходным кодом) — библиотека
алгоритмов компьютерного зрения, обработки изображений и численных
алгоритмов общего назначения с открытым кодом. Реализована на C/C++,
также разрабатывается для Python, Java, Ruby, Matlab, Lua и других языков.
Может свободно использоваться в академических и коммерческих целях —
распространяется в условиях лицензии BSD.
Структура библиотеки OpenCV приведена на рисунке 2.3.
Структура библиотеки OpenCV
30
Одной из основных целей OpenCV является предоставление простого в
использовании интерфейса, который позволит людям довольно таки быстро
строить
сложные
приложения,
использующие
компьютерное
зрения.
Библиотека OpenCV содержит более 500 функций, которые охватывают
многие области компьютерного зрения, такие как: инспекция фабричной
продукции,
медицина,
безопасность,
пользовательский
интерфейс,
калибровка камеры, стереозрение и робототехника. И все это благодаря тому,
что компьютерное зрение и машинное обучение часто идут "рука об руку", к
тому же OpenCV полностью включает в себя библиотеку общего назначения
MLL (Machine Learning Library). MLL библиотека ориентирована на
распознавание статических образов и кластеризацию. MLL очень полезна для
задач компьютерного зрения, которые составляют основу OpenCV, но она
довольно-таки обобщенная, чтобы решать конкретные проблемы машинного
обучения.
Библиотека OpenCV является структурированной библиотекой. Она
разделена на пять основных компонентов:
– Алгоритмы обработки изображений;
– Высокоуровневые алгоритмы компьютерного зрения;
– MLL — библиотека машинного обучения;
– HighGUI — процедуры и функции ввода и вывода для хранения и
загрузки видео и изображений;
– CXCore — основные структуры данных;
Выводы по главе
Таким образом определены необходимые для разработки среды и языки
программирования, которые способны решить поставленную задачу.
Выбран язык программирования C#, как один из наиболее подходящий
для решения поставленной задачи.
Разработка ведется с помощью интегрированной среды разработки
Microsoft Visual Studio.
31
3. РАЗРАБОТКА МАКЕТА РОБОТИЗИРОВАННОЙ СИСТЕМЫ НА
ПЛАТФОРМЕ ARDUINO
3.1 Используемые средства и технические устройства
После обнаружения и распознавания образа на изображение необходимо
следить за перемещением объекта и осуществлять поворот видеокамеры таким
образом, чтобы искомый объект оставался в центре кадра.
Для этих целей необходима роботизированная система, которая будет
осуществлять поворот камеры в двух плоскостях.
Основной управляющей платой роботизированной системы будет
аппаратно-программная система Arduino Nano.
Для поворота камеры используются шаговые двигатели 28BYJ-48.
3.2Arduino Nano
Основной управляющей платой роботизированной системы будет
аппаратно-программная система Arduino.
Программная часть состоит из бесплатной среды программирования для
написания программ, их компиляции и программирования аппаратуры.
Аппаратная часть состоит из смонтированных печатных плат, продающихся
как через официальные каналы, так и сторонними производителями.
Полностью открытая архитектура системы разрешает свободно копировать
или дополнять линейку плат Arduino.
Под торговой маркой Arduino выпускается несколько плат с
микроконтроллером.
В классической линейке устройств Arduino в основном применяются
микроконтроллеры Atmel AVR. Типичные процессорные платы:
2.
ATmega2560 (16 МГц, 256к Flash, 8к RAM, 54 порта, из них до 15 с
ШИМ и 16 АЦП). Платы «Mega».
3.
ATmega32U4 (16 МГц, 32к Flash, 2,5к RAM, 20 портов, из них до 7
с ШИМ и 12 АЦП). Платы «Leonardo», «Micro», «Yun» и др.
32
4.
ATmega328 (16 МГц, 32к Flash, 2к RAM, 14 портов, из них до 6 с
ШИМ и 8 АЦП). Платы «Uno», «Mini», «Nano», «Pro» и др.
В некоторых платах состав доступных портов и частота тактирования
могут отличаться.
Для управления роботизированной системы компьютерного зрения
выбрана плата Arduino Nano (рис 3.1) на микроконтроллере ATmega328.
Данная
плата
обладает
небольшими
размерами
производительность.
Arduino Nano
Характеристики Nano 3.0:
Количество выводов на плате: 32 шт.
Шаг выводов: 2,54 мм
33
и
необходимой
Микроконтроллер: ATmega328P-AU
Тактовая частота 16 MHz
Цифровые Входы / Выходы D0-: 22 из них 6 выходы ШИМ
Аналоговые входы A0 - A7: 8
Постоянный ток на выходе порта не более: 40 mA
ОЗУ RAM: 2 Кб
Флешь память программ: 32 Кб из них 2 Кб загрузчик
Энергонезависимая память EEPROM: 1 Кб
Напряжение питания без встроенного стабилизатора: 5 В
Входное напряжение (безопасное): 7 - 12 В
Входное напряжение (предельное): 6 - 20 В
Размер платы: 45 х 18 мм
Распиновка выводов микроконтроллера представлена на рисунке 3.2.
Распиновка выводов Arduino Nano
Назначение и обозначения выводов:
USB - USB-порт, предназначенный для подключения к компьютеру
через USB-кабель.
VIN -
подается питание от внешнего источника питания на 7-12В
Напряжение будет подаваться на стабилизатор и понижаться до 5 В. Поэтому
оптимально подавать на этот пин около 9 В.
34
5V – питание 5В
3.3V питание 3.3 В, которое формируется от внутреннего стабилизатора
платы. GND - земля (Ground Pin).
AREF - опорное напряжение для аналоговых входов. Используется по
необходимости (настраивается с помощью analogReference()).
IOREF - позволяет узнать рабочее напряжение микроконтроллера.
Reset - выполняет сброс микроконтроллера.
SDA, SCL - пины интерфейса TWI/I2C.
D0...D13 - цифровые входы/выходы.
0 (RX), 1 (TX) - выводы порта UART (последовательный порт Serial).
A1...A5 - аналоговые входы (могут использоваться и в качестве
цифровых).
3.3 Шаговый двигатель 28BYJ-48
Шаговые двигатели применяют в механических системах точного
позиционирования – ЧПУ станках, 3d-принтерах, принтерах, роботахманипуляторах. Шаговые двигатели преобразуют электрические импульсы в
перемещение вала на определенный угол. Минимально возможный угол
перемещения шагового двигателя, называется шагом.
В любительской робототехнике очень часто используют бюджетный
шаговый двигатель 28BYJ-48, в комплекте с которым продается драйвер
двигателя на микросхеме ULN2003, необходимый для подключения шагового
двигателя к плате Arduino.
Четырех фазный шаговый двигатель 28BYJ-48 (рис 3.3) — это
бесколлекторный
двигатель,
вращение
вала
осуществляется
шагами
(дискретное перемещение). На роторе (валу), расположен магнит, а вокруг
него расположены катушки, если поочередно подавать ток на эти катушки,
создается магнитное поле, которое отталкивает или притягивает магнитный
вал, тем самым заставляя двигатель вращаться. Такая конструкция позволяет
с большой точностью управлять валом, относительно катушек.
35
Шаговый двигатель 28byj-48
Характеристики шагового двигателя 28BYJ-48:
1.
Напряжение питания – 5В или 12В;
2.
Число фаз – 4;
3.
Коэффициент редукции – 1/63.68395;
4.
Количество шагов ротора – 64;
5.
Номинальная скорость вращения – 15 оборот/мин;
6.
Крутящий момент – 450 г*см;
7.
Размеры (диаметр,высота) –25x18 мм;
8.
Вес – 40 грамм.
9.
Модуль шагового двигателя ULN2003:
Цифровой вывод микроконтроллера может выдать ток ~40 мА, а одна
обмотка 28BYJ-48 в пике потребляем ~320 мА, таким образом, если
подключить двигатель напрямую, микроконтроллер сгорит. Для защиты и
управлением двигателя используется микросхема ULN2003A (рис3.4),
позволяющая управлять нагрузкой до 500 мА (один ключ).
36
Микросхема ULN2003
Микросхема ULN2003a — это транзисторная сборка Дарлингтона с
выходными ключами повышенной мощности, имеющая на выходах защитные
диоды, которые предназначены для защиты управляющих электрических
цепей от обратного выброса напряжения от индуктивной нагрузки.
Характеристики:
1.
Номинальный ток коллектора одного ключа — 0,5А;
2.
Максимальное напряжение на выходе до 50 В;
3.
Защитные диоды на выходах;
4.
Вход адаптирован к всевозможным видам логики;
5.
Возможность применения для управления реле.
37
Подключение шагового двигателя к плате Arduino приведено на рис 3.5.
Подключение шагового двигателя 28byj-48
3.4 Разработка корпуса
Чтобы разместить микроконтроллер, микросхемы и шаговые двигатели
необходимо разработать и изготовить корпус.
Для этих целей в среде Autodesk TinkerCAD были смоделированы детали
корпуса.
TinkerCAD – это онлайн сервис, который сейчас принадлежит самой
известной компании мира CAD-систем – Autodesk. TinkerCAD уже давно
известен многим как простая и бесплатная среда для обучения 3Dмоделированию. С ее помощью можно достаточно легко создавать свои
модели и отправлять их на 3D-печать.
TinkerCAD является бесплатным инструментом и может использоваться
начинающими в качестве простой среды для построения первых 3D объектов
и подготовки их к 3D-печати. В редакторе присутствует библиотека готовых
элементов, упрощающая быстрое создание моделей. Начинающим доступны
онлайн-учебники. Все инструменты бесплатны. Для работы в сервисе
необходимо получить учетную запись Autodesk. Среда моделирования
электронных схем TinkerCAD состоит из следующих компонентов:
Редактор электронных схем.
Эмулятор работы основных электронных компонентов.
38
Эмулятор контроллера Arduino.
Редактор скетчей, в том числе визуальный.
Система отладки и симулирования проектов с использованием Arduino
Смоделированные детали представлены на рисунке 3.6.
Модели деталей частей корпуса
После этого детали были отправлены в печать на 3Dпринтере.
3D-принтер — это специальное устройство для вывода трёхмерных
данных. В отличие от обычного принтера, который выводит двумерную
информацию на лист бумаги, 3D-принтер позволяет выводить трехмерную
информацию, т.е. создавать определенные физические объекты. В основе
технологии 3D-печати лежит принцип послойного создания (выращивания)
твердой модели.
Преимуществами подобных устройств перед обычными способами
создания моделей являются высокая скорость, простота и низкая стоимость.
Например, для того чтобы создать модель вручную может понадобиться
несколько недель или даже месяцев, в зависимости от сложности изделия. В
39
результате значительно повышаются затраты на разработку, увеличиваются
сроки выпуска готовой продукции. 3D-принтеры позволяют полностью
избавиться от ручного труда и создать модель будущего изделия всего за
несколько часов при этом исключая возможность ошибок, присущие
«человеческому фактору».
Детали, напечатаны на 3D принтерте из ABS и PLA пластика (рис 3.7).
Напечатанные на 3D принтере детали корпуса
3.5 Обмен информацией
Для связи микроконтроллера с компьютером используется COM-порт.
Набор функций Serial служит для связи устройства Ардуино с
компьютером
или
другими
устройствами,
поддерживающими
последовательный интерфейс обмена данными. Все платы Arduino имеют хотя
бы один последовательный порт (UART, иногда называют USART). Для
обмена данными Serial используют цифровые порты ввод/вывода 0 (RX) и 1
40
(TX), а также USB порт. Важно учитывать, что если вы используете функции
Serial, то нельзя одновременно с этим использовать порты 0 и 1 для других
целей.
Для реализации обмена данными между ПЭВМ и микроконтроллером
разработан протокол обмена данными при помощи АТ-команд.
Последовательность символов «AT» (с англ. «аttention» - внимание)
означает,
что
пришла
новая
команда.
Стандартным
ответом
AT
протоколаявляется последовательность «OK».
Общий формат команды выглядит так:
– каждая команда должна начинаться с «AT»;
– далее следует последовательность символов – кодов, чисел,
параметров;
– заканчивать команду принято управляющими символами «\r»
и «\n.
В ответе используется последовательность «OK\r\n».
Благодаря управляющим символам каждый ответ в окне монитора
последовательного порта будет печататься с новой строки.
Готовый и собранный макет показан на рисунке 3.8.
Связь с компьютером осуществляется через USB провод. Два шаговых
мотора позволяют совершать вращения в горизонтальной и вертикальных
плоскостях.
41
Готовый макет роботизированной системы
слежения
Выводы по главе
В ходе работы выбраны необходимые компоненты для разработки и
сборки роботизированной платформы для распознавания и слежения.
В качестве управляющей платы выбран микроконтроллер Arduino Nano,
обладающей
необходимой
производительностью
и
периферией
для
управления шаговыми моторами.
Выбраны шаговые моторы, способные решить поставленную задачу.
С помощью интернет среды 3D моделирования Autodesk TinkerCAD
смоделированы детали корпуса. Эти детали были распечатаны и собраны в
единый корпус.
Таким образом был полностью разработан макет роботизированной
платформы.
42
4. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
4.1Разработка графического интерфейса
Графический интерфейс пользователя является важнейшей частью
любой компьютерной программы или системы. От интерфейса зависит
скорость освоения системы пользователем и качество выполнения работы.
Графический интерфейс должен свести к минимуму возможность допущения
ошибок пользователем.
В ходе разработки программного обеспечения по распознаванию
объекта был разработан удобный графическиq интерфейс (рис 4.1).
Он спроектирован таким образом, что сводит к минимуму возможность
допущения ошибок пользователем.
Рисунок 4.1 Главное окно программы
Он представляет собой главное окно, на которое выводится потоковое
изображение с видеокамеры. При необходимости с помощью чек-боксов
пользователь может отобразить центр изображения и нарисовать сетку (рис
4.2).
43
Рисунок 4.2 Сетка
Кнопка «Задать эталон» активирует режим выбора шаблона на
изображение в виде желтого прямоугольника.
В окне «Эталон» отображается текущий объект для распознавания и
отслеживания (рис 4.3).
Рисунок 4.3 Эталон
Для начала распознавания объекта пользователю необходимо нажать
кнопку старт. После этого отслеживание начнется в автоматическом режиме.
44
4.2Разработка алгоритма поиска объекта по эталону
Основным классом, которые осуществляет поиск образа по эталону
является класс FFT.
class FFT
{
#region Variables
Point Object_Location = new Point();
#endregion
#region Constructors
public FFT(Image<Gray, Byte> Input_Image, Image<Gray,
Byte> Template)
{
Detect_objects(Input_Image.Copy(), Template.Copy());
}
public FFT()
{
}
#endregion
#region Public
public Point GetLocation()
{
return Object_Location;
}
public bool TrackObject(Image<Gray, Byte> Input_Image,
Image<Gray, Byte> Template)
{
return Detect_objects(Input_Image.Copy(),
Template.Copy());
}
#endregion
#region Private
private bool Detect_objects(Image<Gray,Byte>
Input_Image, Image<Gray, Byte> object_Image)
{
//..//
}
#endregion
}
45
Он содержит в себе переменную типа Point, которая хранит координаты
детектируемого объекта на экране.
В методе Detect_objects(Image<Gray,Byte> Input_Image, Image<Gray,
Byte> object_Image) происходит сопоставление шаблона с изображением на
экране.
Для этого нам необходимо само исходное изображение и изображение
эталона (рис. 4.4).
Рисунок 4.4 Ожидаемый результат работы алгоритма
Наша цель определить область соответствия.
Чтобы определить подходящую область, мы должны сравнить
изображение шаблона с исходным изображением, сдвинув его.
Под сдвигом (рис. 4.5) подразумевается перемещение шаблона по
одному пикселю за раз (слева-направо, вверх-вниз).
В каждом месте вычисляется метрика, чтобы она представляла,
насколько «хорошо» или «плохо» совпадение в этом месте (или насколько
шаблон похож на эту конкретную область исходного изображения).
46
Рисунок 4.5 Перемещение шаблона по одному пикселю за раз
(слева-направо, вверх-вниз)
Для каждого местоположения T над I сохраняется метрика в матрице
результатов(R). Каждое
местоположение
в R содержит
метрику
соответствия.
Рисунок
4.6
является
результатом R скольжения
шаблона
с
метрикой TM_CCORR_NORMED.
Самые яркие места указывают на самые высокие совпадения.
Как можно заметить, местоположение, помеченное красным кружком,
вероятно, имеет самое высокое значение, поэтому это местоположение
(прямоугольник, образованный этой точкой в виде угла, ширины и высоты,
равной изображению пятна), считается совпадением.
47
Рисунок 4.6 Определение местоположения
В
библиотеке
EmguCV
используются
следующие
сопоставления:
1.
Метод = CV_TM_SQDIFF
𝑅(𝑥, 𝑦) = ∑ (𝑇( 𝑥 ′ , 𝑦′) − 𝐼(𝑥 + 𝑥 ′ , 𝑦 + 𝑦′))2
𝑥 ′ ,𝑦′
2.
Метод = CV_TM_SQDIFF_NORMED
𝑅(𝑥, 𝑦) =
∑𝑥 ′,𝑦′(𝑇( 𝑥 ′ , 𝑦′) − 𝐼(𝑥 + 𝑥 ′ , 𝑦 + 𝑦′))2
√∑𝑥 ′,𝑦′(𝑇( 𝑥 ′ , 𝑦′)2 ∙ ∑𝑥 ′,𝑦′ 𝐼(𝑥 + 𝑥 ′ , 𝑦 + 𝑦′))2
3.
Метод = CV_TM_CCORR
𝑅(𝑥, 𝑦) = ∑ (𝑇( 𝑥 ′ , 𝑦′)2 ∙ ∑ 𝐼(𝑥 + 𝑥 ′ , 𝑦 + 𝑦′))
𝑥 ′ ,𝑦′
4.
𝑥 ′ ,𝑦′
Метод = CV_TM_CCORR_NORMED
𝑅(𝑥, 𝑦) =
∑𝑥 ′,𝑦′(𝑇( 𝑥 ′ , 𝑦′) ∙ 𝐼(𝑥 + 𝑥 ′ , 𝑦 + 𝑦′))2
√∑𝑥 ′,𝑦′(𝑇( 𝑥 ′ , 𝑦′)2 ∙ ∑𝑥 ′,𝑦′ 𝐼(𝑥 + 𝑥 ′ , 𝑦 + 𝑦′))2
5.
Метод = CV_TM_CCOEFF
2
𝑅(𝑥, 𝑦) = ∑ (𝑇′( 𝑥 ′ , 𝑦 ′) ∙ ∑ 𝐼(𝑥 + 𝑥 ′ , 𝑦 + 𝑦′))
𝑥 ′ ,𝑦 ′
𝑥 ′ ,𝑦 ′
48
методы
Где
𝑇 ′ (𝑥 ′ , 𝑦 ′ ) = 𝑇(𝑥 ′ , 𝑦 ′ ) − 1/(𝑤 ∙ ℎ) ∙ ∑ (𝑇( 𝑥 ′′ , 𝑦′′)
𝑥 ′′ ,𝑦 ′′
𝐼 ′ (𝑥 + 𝑥 ′ , 𝑦 + 𝑦 ′ ) = 𝐼(𝑥 + 𝑥 ′ , 𝑦 + 𝑦′) − 1/(𝑤 ∙ ℎ) ∙ ∑ 𝐼 ′ (𝑥 + 𝑥 ′ ′, 𝑦 + 𝑦 ′′ )
𝑥 ′′ ,𝑦 ′′
6.
Метод = CV_TM_CCOEFF_NORMED
𝑅(𝑥, 𝑦) =
∑𝑥 ′,𝑦′(𝑇′( 𝑥 ′ , 𝑦′) ∙ 𝐼′(𝑥 + 𝑥 ′ , 𝑦 + 𝑦′))
√∑𝑥 ′,𝑦′(𝑇′( 𝑥 ′ , 𝑦′)2 ∙ ∑𝑥 ′,𝑦′ 𝐼′(𝑥 + 𝑥 ′ , 𝑦 + 𝑦′))2
Допустим есть исходное изображение (рис. 4.7) и шаблон для поиска
(рис. 4.8)
Рисунок 4.7 Исходное изображение
Рисунок 4.8 шаблон
49
Сгенерированы следующие матрицы результатов (рис. 4.9)
Первая строка — это стандартные методы SQDIFF, CCORR и CCOEFF,
вторая строка — это те же методы в своей нормализованной версии. В первом
столбце, чем темнее, тем лучше совпадение, для двух других столбцов - чем
ярче место, тем выше совпадение.
Рисунок 4.9 Матрицы результатов
50
Верное распознание показано на рисунке 4.10.
Рисунок 4.10 Верное распознование
Стоит обратить внимание, что CCORR и CCDEFF дали ошибочные
лучшие совпадения, однако их нормализованная версия сделала это
правильно, это может быть связано с тем, что мы рассматриваем только «самое
высокое совпадение», а не другие возможные высокие совпадения.
4.3 Описание работы программы
Перед запуском программы необходимо подключить роботизированный
макет на базе Arduino к UCB порту ЭВМ.
После этого необходимо открыть программу, дважды щелкнув по
ярлыку.
В открывшемся окне (рис. 4.11) необходимо дождаться инициализации
программы и запуска видеокамеры.
51
Рисунок 4.11 Инициализация и запуск видеокамеры
Для поворота камеры в заданное место, необходимо сделать щелчок
левой кнопкой мышки на экране.
На экране отобразится вектор, указывающий направление перемещения
камеры (рис 4.13).
Рисунок 4.12 Вектор направления перемещения камеры
После этого необходимо дождаться завершений поворота камеры в
заданное положение (рис. 4.13).
52
Рисунок 4.13 Завершенный поворот камеры
Для начала детектирования изображений необходимо выбрать шаблон
для отслеживания.
С помощью кнопки «Задать эталон» пользователь может выбрать на
изображении с видеокамеры шаблон для поиска:
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
if (_Capture != null && SetEtalon)
{
//Set Template
SetTemplate(e.X, e.Y);
DisplayEtalon();
SetEtalon = false;
btnStartStop.Text = "Старт";
Start = false;
}
Передвигая курсор мыши по изображению, следует навести желтый
прямоугольник на образ, который следует распознать и отслеживать.
Пример работы программы приведен на рисунке 4.14.
53
Рисунок 4.14 Выбор шаблона
После нажатия на кнопку старт программа запустит алгоритм поиска
шаблона в изображение:
private bool Detect_objects(Image<Gray,Byte> Input_Image,
Image<Gray, Byte> object_Image)
{
Point dftSize = new Point(Input_Image.Width +
(object_Image.Width * 2), Input_Image.Height +
(object_Image.Height * 2));
bool Success = false;
using (Image<Gray, Byte> pad_array = new Image<Gray,
Byte>(dftSize.X, dftSize.Y))
{
pad_array.ROI = new
Rectangle(object_Image.Width, object_Image.Height,
Input_Image.Width, Input_Image.Height);
CvInvoke.cvCopy(Input_Image.Convert<Gray,
Byte>(), pad_array, IntPtr.Zero);
pad_array.ROI = (new Rectangle(0, 0, dftSize.X,
dftSize.Y));
using (Image<Gray, float> result_Matrix =
pad_array.MatchTemplate(object_Image,
TM_TYPE.CV_TM_CCOEFF_NORMED))
{
result_Matrix.ROI = new
Rectangle(object_Image.Width, object_Image.Height,
Input_Image.Width, Input_Image.Height);
54
Point[] MAX_Loc, Min_Loc;
double[] min, max;
result_Matrix.MinMax(out min, out max, out
Min_Loc, out MAX_Loc);
using (Image<Gray, double> RG_Image =
result_Matrix.Convert<Gray, double>().Copy())
{
if (max[0] > 0.4)
{
Object_Location = MAX_Loc[0];
Success = true;
}
}
}
}
return Success;
В случае успешного детектирования изображения алгоритм сохранит
координаты объекта на экране, и функция вернет значение Истина.
Искомый образ отображается в зеленом квадрате на экране (рис. 4.15).
Рисунок 4.15 Поиск образа в изображении.
Роботизированный макет, согласно алгоритму, совершит поворот
камеру таким образом, чтобы искомое изображение оказалось в центре экрана:
for (int i = 0; i<Math.Abs(NearestScaleLineXNum); i++)
{
if (CurPoint.X >= CenterPointX)
55
StepToGo(-1, DIRECTION.HORZ, 40);
else
StepToGo(1, DIRECTION.HORZ, 40);
}
for (int i = 0; i<Math.Abs(NearestScaleLineYNum); i++)
{
if (CurPoint.Y >= CenterPointY)
StepToGo(1, DIRECTION.VERT, 40);
else
StepToGo(-1, DIRECTION.VERT, 40);
}
Результат поворота приведен на рисунке 4.16.
Рисунок 4.16 Поворот камеры для центровки объекта на
экране
Выводы по главе
В данной главе описаны основные этапы разработки программноаппаратного комплекса.
Разобран основной процесс – процесс детектирования объекта,
Проведен разбор программы управления макетом, которая требуется
успешной совместной работы программной и аппаратной частей.
56
Проведено полное описание графического интерфейса программы. С
помощью данного описания пользователь может получить доступ ко всем
возможностям комплекса.
57
ЗАКЛЮЧЕНИЕ
Данная выпускная квалификационная работа посвящена решению
актуальной
задачи
–
разработке
программно-аппаратного
комплекса
определения параметров движения объектов. Одним из методов решения
данной задачи является метод поиска объекта на изображении с помощью
шаблона.
В ходе разработки комплекса были решены следующие частные задачи:
 Анализ методов детектирования объектов на изображении
 Анализ средств разработки для решения поставленной задачи
 Разработка роботизированной системы компьютерного зрения
 Разработка программного обеспечения, позволяющая распознавать и
отслеживать в пространстве динамический объект.
Комплекс позволяет осуществлять поиск объекта на изображении с
помощью метода поиска по шаблону
Результаты
работы
могут
быть
использованы
интеллектуальных следящих систем технического зрения.
58
при
создания
СПИСОК ЛИТЕРАТУРЫ
1.
Gary Bradski, Adrian Kaehler. Learning OpenCV: Computer Vision with
the OpenCV Library. – М.: O'Reilly Media, 2008. – 556 с.
2.
Andreas Kalva. Collision detection system using computer vision on low
power devices. – М.: LAP Lambert Academic Publishing, 2014. – 84 с.
3.
Ahmed Sohaib,Khurram Hassan Butt and Syed Fahad Ali Hashmi.
SIGNTIUM. – М.: LAP Lambert Academic Publishing, 2011. – 88 с.
4.
Глория Буэно Гарсия, Оскар Дениз Суарес, Хосе Луис Эспиноса
Аранда, Хесус Салидо Терсеро, Исмаэль Серрано Грасиа, Ноэлия
Валлез Энано. Обработка изображений с помощью OpenCV. – М.:
ДМК Пресс, 2016. – 210 с.
5.
Адриан Кэлер, Гэри Брэдски. Изучаем OpenCV 3. – М.: ДМК Пресс,
2017. – 826 с.
6.
Николай Прохоренок. OpenCV и Java. Обработка изображений и
компьютерное зрение. – СПб.: БХВ-Петербург, 2018. – 320 с.
7.
Р. Дуда, П. Харт Распознавание образов и анализ сцен. – М.: Мир,
1976. – 511 с.
8.
Верхаген К., Дейн Р., Грун Ф. Распознавание образов: Состояние и
перспективы. – М.: Радио и связь, 1985. - 104 с.
9.
Пересада В. П. Автоматическое распознавание образов. Библиотека
по автоматике, выпуск 392. – 1970. – С. 92.
10. Вапник В.Н., Червоненкис А.Я. – Теория распознавания образов и
стохастические проблемы обучения. – M.: Наука, 1974 г. – 416 с.
11. А. Б. Мерков - Распознавание образов. Введение в методы
статистического обучения. – М.: Едиториал УРСС, 2011 г. – 256 с.
12. А. С. Потапов - Распознавание образов и машинное восприятие. –
М.: Политехника, 2007 г. – 552 с.
13. Л. Шапиро, Дж. Стокман - Компьютерное зрение. – М.: Бином.
Лаборатория знаний, 2006 г. – 752 с.
59
14. Дэвид Форсайт, Жан Понс Компьютерное зрение. Современный
подход. – М.: Вильямс, 2004 г. – 928 с.
15. Б. А. Алпатов, П. В. Бабаян, О. Е. Балашов, А. И. Степашкин
Методы автоматического обнаружения и сопровождения объектов.
Обработка изображений и управление. – М.: Радиотехника, 2008 г.
– 176 с.
16. Herbert Bay, Tinne Tuytelaars, Luc Van Gool - SURF: Speeded Up
Robust Features.
17. Mikolajczyk, K., Schmid, C.: An affine invariant interest point detector.
In: ECCV. (2002) 128 – 142
18. Ke, Y., Sukthankar, R.: PCA-SIFT: A more distinctive representation for
local image descriptors. In: CVPR (2). (2004) 506 – 513
19. Tuytelaars, T., Van Gool, L.: Wide baseline stereo based on local,
affinely invariant regions. In: BMVC. (2000) 412 – 422
20. Matas, J., Chum, O., M., U., Pajdla, T.: Robust wide baseline stereo from
maximally stable extremal regions. In: BMVC. (2002) 384 – 393
21. Mikolajczyk, K., Schmid, C.: A performance evaluation of local
descriptors. In: CVPR. Volume 2. (2003) 257 – 263
22. Mikolajczyk, K., Schmid, C.: A performance evaluation of local
descriptors. PAMI 27(2005) 1615–1630 33
23. Mikolajczyk, K., Tuytelaars, T., Schmid, C., Zisserman, A., Matas, J.,
Schaffalitzky, F., Kadir, T., Van Gool, L.: A comparison of affine region
detectors. IJCV 65 (2005) 43–72
24. Harris, C., Stephens, M.: A combined corner and edge detector. In:
Proceedings of the Alvey Vision Conference. (1988) 147 – 151
25. Mikolajczyk, K., Schmid, C.: Indexing based on scale invariant interest
points. In: ICCV. Volume 1. (2001) 525 – 531
26. Волосатова Т. М., Яблоков В. Е. Слежение за выделенными
объектами на протяжении видеоряда, Инженерный вестник # 07,
июль 2015 УДК: 004.93`12
60
27. E. Булатников, А Гоева Сравнение библиотек компьтерного зрения
для примениния в приложении, использующем технологию
распознавания плоских изображений, Вестник МГУП имени Ивана
Федорова No 6’2015 УДК 004.02
28. Е. Козинов, В. Кустикова и др. Подходы к оптимизации и
распараллеливанию вычислений в задаче детектирования объектов
разных классов на изображении, Вестник Южно-Уральского
государственного университета No 47(306). Вып. 2 (2012)
29. Frucci, Maria; Sanniti di Baja, Gabriella (2008). «From Segmentation to
Binarization of Gray-level Images». Journal of Pattern Recognition
Research 3 (1): 1–13.
30. Shotton, J. Contour-based Learning for Object Detection / J. Shotton, A.
Blake, R. Cipolla // Proceedings of the 10th IEEE International
Conference on Computer Vision (ICCV’05). – 2005. – Vol. 1. – P. 503–
510.
31. 6. Amit, Y. 2D Object Detection and Recognition: models, algorithms
and networks / Y. Amit. – The MIT Press, 2002. – 325 p.
32. Прэтт, У. Цифровая обработка изображений/ У. Прэтт – М.:
Мир,1982. – 480 с.
61
Download