Диплом_Елкин

advertisement
Московский Государственный Университет им. М.В.Ломоносова
Механико-математический факультет
ВЫПУСКНАЯ ДИПЛОМНАЯ РАБОТА
РАЗРАБОТКА МЕТОДОВ
ТЕХНИЧЕСКОГО ЗРЕНИЯ И ОБРАБОТКИ ДАННЫХ
ДЛЯ КОМПЛЕКСА ПРОГРАММНЫХ СРЕДСТВ
СИСТЕМЫ РОБОТОВ КЛАССА MIROSOT
Научный руководитель
Кузьмин Е.П.
Рецензент
Иванов Д.В.
Студент 511 группы
Елкин Е.В.
Москва, 2007
Оглавление
Введение .........................................................................................................................................3
1.
Структура программного обеспечения ................................................................................5
1.1. Системная интеграция ....................................................................................................6
1.1.1. Синхронизация именований роботов ....................................................................7
1.1.2. Начальное позиционирование роботов .................................................................8
1.2. Командно-информационный интерфейс ......................................................................9
1.2.1. Описание и необходимость введения ....................................................................9
1.2.2. Задание движений. Возможные подходы .............................................................9
1.2.3. Реализация интерфейса .........................................................................................10
1.2.4. Необходимость введения функций отладки .......................................................11
1.2.5. Управление параметрами .....................................................................................11
1.2.6. Реализация интерфейса: функции, экспортируемые из DLL ............................12
1.3. Состояния системы .......................................................................................................12
2. Компонента зрения ..............................................................................................................15
2.1. Общая схема распознавания ........................................................................................16
2.2. Алгоритм отсечения фона ............................................................................................18
2.2.1. Этап 1. Сегментация по модели ...........................................................................18
2.2.2. Этап 2. Сегментация светлых и темных ..............................................................22
2.2.3. Этап 3. Сегментация по геометрии областей......................................................22
2.2.4. Вид области, полученной отсечением по модели ..............................................23
2.2.5. Вид области, полученной после всех этапов отсечения фона ..........................23
2.2.6. Результат ................................................................................................................23
2.2.7. Оптимизация алгоритма отсечения фона ............................................................23
2.3. Алгоритм классификации объектов ............................................................................25
2.3.1. Классификация цветов ..........................................................................................25
2.3.2. Настройка классификации цветов .......................................................................27
2.3.3. Классификация на основные классы ...................................................................28
2.4. Вычисление координат робота ....................................................................................29
2.4.1. Метод нахождения положения. Устойчивость к ошибкам. ..............................29
2.4.2. Метод нахождения вершин ..................................................................................33
2.4.3. Определение позиции. Выводы. ..........................................................................36
2.5. Субпиксельное нахождение границы .........................................................................37
2.5.1. Изменение дизайна наклеек .................................................................................41
2.5.2. Внедрение субпиксельного определения ............................................................41
2.5.3. Вид субпиксельной границы ................................................................................43
2.5.4. Субпиксельное вычисление координат центра ..................................................43
2.5.5. Результаты ..............................................................................................................44
2.6. Классификация внутри команды .................................................................................44
2.7. Выбор ориентации роботов .........................................................................................45
2.8. О преобразовании координат. Определение области обработки .............................45
2.9. Пример слежения за траекторией объекта .................................................................50
Заключение...................................................................................................................................51
Список литературы ......................................................................................................................52
2
Введение
Роботы
класса
Mirosot
предназначены
для
командной
игры
в
робофутбол
(международный термин Robosoccer) по правилам федерации FIRA. Согласно этим
правилам в робофутбол играют маленькие роботы (см. Рисунок 1), размерами не более 7.5
на 7.5 на 7.5 см, в командах по 5-11 участников. Для навигации роботов каждая команда
использует собственную камеру, которую располагает на высоте 2.5 метра над полем, эта
камера соединяется с компьютером, на котором происходит обработка видеоинформации,
принятие командных решений, согласование действий роботов и связь с роботами по
радиоканалу.
Рисунок 1. Роботы для игры робофутбол в лиге MIROSOT
Комплект программного обеспечения, необходимого для работоспособности команды
роботов состоит из компоненты технического зрения, компоненты коллективного
поведения и методов обработки данных, обеспечивающих передачу информации между
этими компонентами и объектами системы, такими как роботы и камера. Работа разбита
на две части. В первой части будет описана структура программного обеспечения
команды роботов, а также методы обмена информацией для двух главных компонент
программы. Во второй части работы будут подробно описаны методы технического
зрения. С помощью этих методов производится большая часть информации для принятия
3
игровых решений. Роботы поставляют только информацию о своем внутреннем состоянии
и готовности действовать, а вся информация об их положении, ориентации, положении
роботов противника и мяча получается методами технического зрения по информации с
камеры. Поэтому в данной работе разработке этих методов уделяется особое внимание.
Один из вариантов компоненты зрения уже был описан в работе [3]. Затем в процессе
подготовки к соревнованиям FIRA RoboWorld’2006 были разработаны методы обмена
информацией. Результаты тестов, проведенных в рамках этих соревнований, выявили ряд
недостатков компоненты зрения. В данной работе будет описан новый подход,
учитывающий эти недостатки и исправляющий их. Также, чтобы были понятны принципы
применения методов распознавания, будет дано описание всей структуры программы.
4
Настройщик
Камера
Компонента
зрения
Интерфейс
Отображение
информации
Системная
интеграция
«subclass»
Компонента
автоматической
расстановки
Робот
«subclass»
Коммандноинформационный
интерфейс
Протокол
радио
Компонента
коллективного поведения
Рисунок 2. Схема программного обеспечения
1. Структура программного обеспечения
Исходно система роботов представляет собой набор, состоящий из роботов, аксессуаров
(радиомодулей), камеры, сервера и программного обеспечения сервера.
Программное обеспечение реализовано как целое приложение, содержащее в себе
компоненту зрения, системной интеграции и интерфейс пользователя. Для этого
приложения компонента коллективной игры является внешним подключаемым модулем.
Такое построение позволяет разделить разработку двух основных компонент и
оптимизировать процесс отладки коллективной игры, не проводя многократно начальной
настройки параметров программного обеспечения, относящихся к другим частям.
Цель такого приложения – обеспечить базу для написания игровых алгоритмов и
алгоритмов коллективного поведения применительно к роботам; так чтобы требования к
знаниям в технике и других областях (прежде всего обработка изображений, управление и
навигация в механических системах) для автора этих алгоритмов были как можно меньше.
Эти требования были вызваны трудностью привыкания людей (прежде всего это
5
относится к студентам), специализирующихся в теории игр и искусственном интеллекте
применительно к играм, к реалиям мира робототехники.
На Рисунок 2 представлена общая схема программного обеспечения и отношения его с
внешними участниками. Такими участниками могут быть: Настройщик, Камера, Робот (в
системе может быть до 11 штук). Компонентами программного обеспечения являются:
Компонента
зрения,
Компонента
Системной
подкомпоненты:
Интерфейс
пользователя,
Интеграции.
В
Блок
последней
Командно-информационный
отображения
мы
интерфейс
выделим
и
информации,
две
важные
Протокол
Радио,
обеспечивающие обмен информацией с компонентой командной игры и роботами
системы.
Для внешнего участника Камера необходимо обрабатывать потоки информации
(изображения), поступающие с камеры, преобразовывать их в картину поля 1, выводить
результаты и различную отладочную информацию модуля зрения в графическом виде
(накладывая ее на изображение) для того, чтобы Настройщик мог увидеть эту
информацию.
Участник Робот непосредственно общается с группой Протокол радио, которая является
подгруппой группы Системная интеграция, однако с действиями по отношению к
роботам связана большая часть активности группы.
Актер Настройщик должен обладать информацией о работе системы и иметь
возможность влиять на ее работу. Поэтому его непосредственное участие происходит в
группах Интерфейс и Отображение информации.
Две компоненты: командного алгоритма и автоматической расстановки получают
информацию
и
передают
команды,
используя
методы
компоненты
Командно-
информационный интерфейс, входящей в состав компоненты Системная интеграция.
Эти две компоненты формируют команды движений для роботов и работают либо одна,
либо другая, по желанию пользователя. (Согласно правилам, автоматическая расстановка
происходит во время, когда игра остановлена по решению судьи матча)
Схема также отражает, какие компоненты непосредственно обмениваются результатами
работы для выполнения своих целей.
1.1. Системная интеграция
Остановимся на работе группы системная интеграция. В общих словах ее целью является
связывание результатов компоненты зрения с командами управления для выработки
Картиной поля называется набор визуальных объектов найденных на поле с их координатами,
соответствием свой – чужой – мяч и соответствием своих роботов их именам.
1
6
сообщений - команд роботам. А также посылка этих сообщений согласно определенному
протоколу по радио.
Фактически, внутри компоненты системной интеграции существует виртуальное
представление всей команды роботов, отражающее как параметры положения роботов,
так и состояния роботов. Команды задаются в терминах движений. Такие движения могут
отрабатываться как роботом самостоятельно, так и при сочетании управления внутри
робота с навигацией по камере (к первому классу относятся простые команды поворота и
отработки скоростей колес, ко второму все остальные). Как будет описано ниже, одной из
наиболее универсальных команд в командном интерфейсе является «Проехать в точку
поля с заданным конечным направлением». В этой работе мы не будем вдаваться в
проблемы навигации и управления, которые решаются для достижения этой цели. Однако
это требует хранения некоего набора
информации для каждого робота, включая
информацию о заданном движении и об успехе выполнения этого движения, последняя
может быть прочитана внешним алгоритмом в любой момент. Внутреннее состояние
представления робота может меняться по приходу новой картины поля либо по приходу
сообщения от робота.
1.1.1. Синхронизация именований роботов
Опишем еще одну важную функцию по интегрированию действий системы. Компонента
зрения при построении картины поля использует некую нумерацию образов роботов. Она
базируется на начальном расположении роботов на поле. В начальный момент (т.е. в
момент окончания настройки и перехода в режим игры) записываются данные об образах
роботов (прежде всего цвета) и количество роботов. Эта записанная информация
используется для создания шаблона картины поля. Для всех последующих моментов
обработки результат записывается в картину по этому шаблону. Т.е. координаты роботов
команды записываются в том порядке, в котором роботы были в начальный момент. Эту
нумерацию мы назовем нумерацией образов роботов. Она будет использоваться и при
создании представления роботов в системном интеграторе и в командно-информационном
интерфейсе.
Существует другая нумерация, основанная на именах (номерах) роботов прописанных
внутри самих роботов (для избегания путаницы номера записываются на роботах, чтобы
человек понимал, с каким роботом он имеет дело). Также существует третья нумерация –
нумерация радиомодулей-клиентов, располагаемых на роботах, она проводится по
порядку
первичных
запросов,
посланных
главному
модулю
(радиомодулю,
подключенному к компьютеру). Появление последней нумерации связано со спецификой
7
построения сети радиомодулей. На программное обеспечение ложится задача по
синхронизации всех трех нумераций.
Первой проводится синхронизация второй и третьей нумераций. В момент включения
радиомодуля - клиента он начинает посылать запросы определенного формата,
означающие, что он включен и не подключен к серверному модулю. Серверный модуль,
если он включен, и компонента протокола радио инициализировала его, принимает этот
запрос, выдает клиенту адрес радиоканала, дает свой адрес и возвращает адрес клиента
программе. Программа посылает стандартный запрос, на который отвечают все роботы,
по этому адресу и получает обратно сообщение, в котором указан номер робота с радио,
инициировавшим выдачу адресов. Аналогичным образом этот процесс происходит для
всех остальных роботов. Таблица соответствия хранится в компоненте протокол радио,
вне нее известны только номера роботов, но не адреса. Компонента сама при посылках
сообщений добавляет адрес радио.
Соответствие нумераций 1-2 задается вручную, т.к. это не вызывает трудностей у
человека и крайне удобно, потому что в тестах часто принимают участие не все роботы и
часто с разным соответствием цвета верха робота и номера робота.
1.1.2. Начальное позиционирование роботов
Согласно правилам игры перед началом игры и после назначения штрафов роботы
должны самостоятельно перестраиваться так, чтобы занять начальные положения:
базовое, в случае свободного мяча, в случае пенальти. Конечно, допускается небольшая
корректировка роботов в конечном положении, но рекомендуется, чтобы роботы
достигали этого положения самостоятельно.
Для удобного задания таких начальных положений в программном обеспечении был
реализован менеджер начальных позиций, позволяющий работать с множеством
запомненных начальных положений. Для каждого начального положения возможен
просмотр и изменение конечных положений и направлений роботов. При этом положения
и направления графически отображаются, путем добавление информации в изображения
до его отображения на экране.
По команде пользователя начинается автоматическое позиционирование, в текущей
реализации роботам задается конечная точка в желаемом месте и далее робот по прямой
траектории движется в направлении заданной точки. Такое планирование воспринимается
компонентой системной интеграции через командно-информационный интерфейс,
подобно планированию игры.
8
1.2. Командно-информационный интерфейс
1.2.1. Описание и необходимость введения
Одной из задач, решаемой системой является возможность использования алгоритмов
поведения команды роботов, написанных сторонними разработчиками. При этом
необходимо было выработать термины, в которых описывается этот алгоритм. Эти
термины должны обладать стандартными в таких случаях свойствами обобщения,
позволяющими разработчику не вникать в тонкости системы.
Общее описание задачи для этого алгоритма: по получаемым картинам поля.
(Напоминание: картина поля – это продукт модуля распознавания, содержит координаты
объектов интереса: роботов своей команды, роботов противника, мячика) вырабатывать
стратегию командной игры для роботов в терминах действий, описываемых человеческим
языком.
1.2.2. Задание движений. Возможные подходы
Существует несколько походов к тому, насколько надо обобщать термины действий.
Опишем их.
Первый подход имеет самую низкую степень обобщения, он позволяет программисту
алгоритма управлять скоростью каждого колеса робота. Система в этом случае
гарантирует только точность этих скоростей. Пользователю же потребуется самому
синтезировать траектории движения робота. Несмотря на простоту, этот метод
востребован многими потенциальными авторами алгоритмов, т.к. он совпадает со
способами, используемыми в симуляторах футбола роботов (FIRA Simurosot, Robocup
Soccer Simulation, а также известному в России симулятору кафедры теоретической
механики МГУ). Также по косвенным данным мы можем судить, что этот подход
используется многими противниками. Однако людям опытным в игре на симуляторах
приходится сталкивать с некоторыми специфическими проблемами, не отраженными в
симуляторах (за исключением Robocup Soccer Simulator, не распространенного в России);
это проблемы ошибок определения, проблема задержки между фиксированием
изображения и исполнением команд роботами и проблема нечеткой отработки команд.
Существует много работ по преодолению этих проблем, но тогда автору алгоритма
приходиться вникать в управление роботами, что наша система должна стараться
исключать. Поэтому появились еще несколько подходов.
Второй подход чуть более общий. Он основан на том, что автор алгоритмов задает
траектории движения путем складывания их из шаблонных траекторий. В качестве
9
шаблонных траекторий (примитивов) используются отрезок прямой, дуга окружности и
нереализуемый в терминах первого подхода поворот на месте. Этот подход появился
первым, т.к. задачи стабилизации траекторий являются классическими задачами
управления роботами. Казалось бы, автор алгоритмов мог бы с легкостью графического
редактора рисовать пути, составленные из примитивов, для успешного выполнения
роботом заданий. Однако, в этом случае траектория пользователя будет иметь разрыв в
момент переключения с одной траектории на другую и поведение робота на
переключении может быть далеко от запланированного. Для исправления подобных
ошибок разрабатывается третий подход.
Третий подход облает наибольшей абстракцией. Роботы управляются командами, такими
как приехать в точку с заданным конечным положением, повернуться на месте, проехать
прямо, а также более общими, такими как ударить по мячику, сделать пас в направлении,
объехать робота противника. При третьем подходе автор не заботится о том, как
построиться траектория робота и как он будет ее выполнять. Он только может оценить
время выполнения и знать, что система будет отрабатывать действие оптимальным (в
некотором смысле) способом, т.е. не поедет в точку сделав петлю по всему полю. Первая
часть функций этого подхода является адаптацией второго подхода с попыткой исправить
ошибки разрывов траекторий, перенося задачи перехода от одного примитива к другому
внутрь каждого робота. В этом случае робот сам внутри знает свои координаты и
управляет собственным движением, но без учета информации с камеры ошибки
измерений приведут к скорому уходу робота с траектории. Так что, при этом подходе
коррекция роботов становится еще одной задачей сервера.
В дополнение ко всему сказанному, заметим, что более высокая степень обобщения
дополняет задачи сервера еще более сложной задачей предоставления интерфейса в этих
обобщенных терминах и при разных внутренних реализациях управления роботами на
сервер выпадает разная доля вычислений по управлению роботами.
Все эти возможности задания управления роботами должны поддерживаться интерфейсом
внешнего алгоритма с возможностью использовать любой из них. На текущий момент в
интерфейсе отражены только первые два подхода.
1.2.3. Реализация интерфейса
Автор игрового алгоритма должен иметь возможность разрабатывать и отлаживать
алгоритм максимально удобно и быстро.
Например, при разработке структуры внешнего алгоритма мы отталкивались от
следующей идеи: автор алгоритма должен иметь возможность многократного запуска, не
10
останавливая работу сервера и не производя никаких длинных последовательностей
действий снова и снова.
Поэтому, естественно, что игровой алгоритм реализован как динамически подключаемая
библиотека (DLL), с возможностью ее подключения и отключения во время работы
сервера.
1.2.4. Необходимость введения функций отладки
Обрисуем две особенности системы, которые затрудняют отладку игрового алгоритма.
1. Подключаемая библиотека (DLL) чаще всего в совокупности с сервером,
представленным лишь исполняемым файлом, делает невозможной отладку в
терминах языка C++.
2. Большинство ошибок и особенностей проступают только в динамике системы, т.е.
при ее безостановочной работе, обрабатывая все новые и новые данные.
Поэтому пользователь алгоритма может производить обработку результатов только
постфактум, т.е. записывая информацию по тесту в файл, и затем по записанным данным,
определяя ошибки. Система должна обеспечивать интерфейс для таких действий,
позволяя просматривать записанные данные, как во время теста, так и после его
окончания.
Кроме того весьма полезным на практике оказалась возможность рисования
простых примитивов поверх изображения, пришедшего с камеры. Автор игрового
алгоритма рисование таких примитивов производит в метрических координатах поля (т.е
в мм). Система же переводит метрические координаты в координаты изображения для
отображения их.
1.2.5. Управление параметрами
Практика показала, что для увеличения скорости разработки, программист игрового
алгоритма должен иметь быстрый доступ к некоторому набору настраиваемых
параметров, которые присутствуют в его коде. Для этого он может из библиотеки или
стороннего приложения создать диалоговое окно с настройкой параметров или изменять
текстовой файл, постоянно читаемый алгоритмом. Первый способ требует от него
времени на разработку, второй не всегда удобен. Большая часть таких параметров
выглядят как целочисленные или дробные (можно считать с постоянным числом знаков
после точки), ограниченные некоторым интервалом изменения. Поэтому в системе был
разработан стандартный подход быстрого доступа к этим параметрам.
11
В графическом интерфейсе программы был выделено некоторое количество мест со
стандартизованным составным объектом диалогового окна для изменения параметров.
Этот объект состоит из элемента графического интерфейса типа Static Text для названия,
элемента типа Slider Bar для отражения интервала изменения и элемента типа Edit Box для
отражения значения параметра. Цена деления Slider Bar равна минимально возможному
изменению параметра (для целочисленного это 1, для параметра с фиксированной точкой
это 10-p, где p – число точек после запятой).
1.2.6. Реализация интерфейса: функции, экспортируемые из DLL
Функции DLL вызываются системой при следующих событиях: загрузка DLL, выгрузка
DLL и получение информации от модуля распознавания. Все эти три события отражены в
модуле в качестве функций, внутри которых автору внешнего алгоритма разрешается
добавление своего программного кода.
Функции интерфейса имеют свои функции контейнеры, описанные в DLL.
Все функции интерфейса вызываются из DLL, а тела их располагаются в программесервере. Для того, чтобы можно было вызывать эти функции необходима передача их
адресов в DLL. Для этой цели существует специальная служебная функция.
Эта функция вызывается несколько раз сразу после загрузки DLL и каждый раз в качестве
аргумента имеет адрес функции и номер вызова. И в программе-сервере и в DLL
внешнего алгоритма заложен один и тот же порядок функций.
Адреса функций сохраняются, и когда внешний алгоритм вызывает функцию интерфейса,
описанную в DLL, та вызывает соответствующую ей функцию программы сервера,
располагаемую по полученному адресу.
При таком построении, автор внешнего алгоритма имеет в своем распоряжении набор
функций в обычном понимании, с которым и работает.
1.3. Состояния системы
Каждая компонента системы находится в каком либо состоянии, в зависимости от этого
состояния она реагирует на внешние события. Для понимания принципов работы системы
полезно будет описать главные состояния системы (состояния компоненты зрения). Эти
состояния являются главными и первичными причинами, определяющими деятельность
всего программного обеспечения.
Перечислим состояния компоненты зрения:
1. Остановлена
12
Начальное состояние. В нем программа уже запущена, но не произведены
необходимые настройки для начала работы. Сразу после произведения таких настроек
система изменяет состояние на следующее.
2. Просмотр изображения без обработки
Это состояние, в котором компонента зрения не производит обработку изображения,
но передает изображение в Блок отображения информации, в котором оно становится
видимым пользователю
3. Просмотр изображения после применения восстановления геометрии
В этом состоянии
обработки не происходит, за исключением применения
преобразования, описанного в пункте «О преобразовании координат. Определение
области обработки». Это преобразование в дальнейшем всегда будет применяться
первым для любого процесса включающего в себя обработку изображения.
4. Запись фона
Запись модели фона, описанной в разделе Этап 1. Сегментация по модели
5. Получение точек геометрической калибровки
Получение точек, для дополнения карты преобразования как описано в разделе О
преобразовании координат. Определение области обработки
6. Настройка классификатора цветов с использованием шаблона
Первоначальная настройка цветов, позволяющая оценить границы различных цветов.
Описание находится в разделе Настройка классификации цветов
7. Просмотр алгоритмов для настройки параметров
7.1. Результат сегментации по модели фона без дополнительной фильтрации
(раздел Этап 1. Сегментация по модели).
7.2. Результат компенсации фона (раздел Алгоритм отсечения фона)
7.3. Цвета всех точек объектов полученных после компенсации фона (раздел
Классификация цветов)
Используется для дополнительной настройки классификатора цветов.
7.4. Результат как при первоначальном распознавании
8. Первоначальное распознавание
Включает в себя создание первое создание картины поля, запоминание какие верха
роботов встречаются. Отображается результат классификации свой – чужой – мяч шум только с использованием цветовой информации.
9. Просмотр результата первоначального распознавания (статичное изображение)
Собственно показ результата предыдущего шага, т.к. на нем обработка происходит
один раз и далее переход в это состояние
13
10. Распознавание для игры
Здесь происходит полная обработка с использованием всех алгоритмов
Описанные состояния можно разбить на две группы: состояния настройки (0-7) и
состояния игры (8-10). Отличие этих состояний в том, что переключения между
состояниями первой группы пользователь может производить произвольно, а состояния
второй группы проходят последовательно.
Полезным и как показала практика, крайне необходимым свойством является то, что не
обязательно проходить все состояния настройки. Особенно это касается состояния 3, в
котором запоминаются также границы поля, чтобы не находить объекты вокруг поля
(часто там можно «найти» руки зрителей); и состояния 4, которое для выполнения своей
задачи требует очистки поля от любых объектов.
Когда компонента зрения находится в состояниях игры, то в процесс обработки кадра
включается и компонента Системная интеграция. Она не обрабатывает изображение, но
производит действия по каждому получению картины поля. В состоянии 8 она производит
инициализацию радио и игрового алгоритма. А в состоянии 10 получает указания от
внешнего алгоритма и отрабатывает их независимо от него. Также в этом состоянии
компонента Системной интеграции имеет два под состояния: пауза и работа.
Переключение между ними осуществляет пользователь. Наличие этих двух состояний
требуется правилами игры. Кроме всего прочего в состоянии
10 Системное
интегрирование может накладывать дополнительную информацию на изображение, для
отображения статуса своей работы. Например, путь робота по координатам самого робота
или какие-то конструкции планирования пути для отладки.
14
2. Компонента зрения
Опишем процесс распознавания каждого приходящего кадра для выделения картины
игрового поля. Каждая из двух играющих команд располагает на высоте 2.5 метра над
полем камеру (Рисунок 3). Рекомендуемое фокусное расстояние 6 мм, в этом случае поле
занимает большую часть изображения.
Само поле имеет размеры 220 на 180 см. Оно черного цвета с линиями разметки белого
цвета и толщиной 3мм (см. [12]). Наши роботы имеют максимально допустимые размеры
по длине и ширине (7.5 см) и высоту 4.8см. Таким образом, размер робота на изображении
будет примерно 20 на 20 пикселей. Размер мяча 9-10 пикселей.
Согласно правилам две играющие команды по жребию выбирают цвет: желтый для одной
команды и синий для другой. Этот цвет называется командным и не может
Рисунок 3. Робототехническая система
использоваться на роботах противоположной команды. На роботах сверху расположены
простые фигуры из нескольких цветов, дизайн которых разрабатывается каждой командой
самостоятельно, однако важным и главным правилом является наличие области
командного цвета и размера не менее 3.5 на 3.5 см. (см. [12]). Эта формулировка не очень
понятна: должна ли область быть квадратом, или квадрат должен вписываться в область?
Более точной формулировкой, считающейся правильной в данный момент является такая:
область командного цвета должна иметь площадь не менее 12.25 см2 (3.5*3.5).
15
Кроме того на роботах рекомендуется также располагать области других цветов для
идентификации роботов в команде и других служебных нужд. Практически все команды
располагают области для определения направления своих роботов. И несколько команд
использует одинаковые наклейки для всех или части своих роботов. Использование
одинаковых наклеек для части роботов практикуется в большой лиге Mirosot, где
участников 11 с каждой стороны, поле имеет большие размеры и правила игры
ограничивают перемещения роботов, вследствие чего роботы с одинаковыми наклейками
всегда будут в разных частях поля, например в защите и в нападении. Команды со всеми
одинаковыми роботами используют смешанный алгоритм идентификации по данным, как
с камеры, так и от самих роботов. Это сознательное усложнение на практике не приносит
никакой пользы, кроме возможности неограниченно увеличивать количество роботов, что
для задач игры не нужно.
2.1. Общая схема распознавания
Как и любая другая команда, мы выбираем удобный дизайн верха робота. В частности в
предыдущей реализации компоненты зрения (см. [3]) использовались такие квадраты
(Рисунок 4)
Рисунок 4. Старый вариант верха роботов
Для игры в Германии использовался модифицированный дизайн (Рисунок 5), квадраты
направления были уменьшены, чтобы квадрат 3.5 на 3.5 вписывался в область желтого
цвета, но т.к. этот пункт правил следует читать по-другому (выше было
дано пояснение), то при разработке нового дизайна это не учитывалось.
Изменения дизайна в новом варианте обусловлены необходимостью
корректной работы алгоритма уточнения положения робота (см. раздел
Изменение дизайна наклеек). Вид наклеек с возможностью уточнения
границы изображен на Рисунок 6.
Рисунок 5.
Модификация
для правила 3.5
на 3.5
16
Распознавание можно разделить на несколько этапов:

Отсечение фона.

Первичная
идентификация
(или
идентификация
по
основным цветам)

Определение положения и уточнение границ

Повторная идентификация с учетом положения и всех
дизайн наклеек
цветов

Рисунок 6. Новый
Запись результатов
На Рисунок 7 изображена схема обмена информацией. В овалах
показаны
объекты
хранения
информации
для
процесса
распознавания.
Такой
информацией являются изображение, подлежащее обработке, результат работы с
Картина поля (N-1 шаг)
1. Отсечение фона
Изображение
2. Первая идентификация
4. Вторая
идентификация
3. Определение положения
5. Запись результатов
Картина поля (N шаг)
Рисунок 7. Схема процесса распознавания
17
предыдущим изображением и результат, который мы получим после процесса обработки.
В прямоугольниках расположены этапы распознавания, они пронумерованы в порядке их
выполнения. Стрелки обозначают направления потоков информации.
2.2. Алгоритм отсечения фона
Целью системы является получение информации о том, какие объекты находятся на поле
и информации о положении этих объектов.
В выборе первого шага основным критерием является уменьшение количества
информации. Исходно на вход системы подается цветное изображение в формате RGB24 с
разрешением 640 на 480 (в версии системы со старой камерой) и с разрешением 780 на
580 для версии с новой камерой. Эта информация избыточна для наших целей и первым
шагом будет избавление от большей ее части.
Для этого в предыдущей работе применялась адаптивная сегментация изображения,
отделяющая фон от объекта. Она состояла из нескольких этапов, на каждом из которых
уточнялись области объекта изъятием из них дополнительных точек.
2.2.1. Этап 1. Сегментация по модели
На первом этапе сегментация проводилась на базе модели. Считалось, что изображение,
полученное с камеры, является суммой истинного изображения и шума, обладающего
нормальным распределением с нулевым средним.
Таким образом, предполагалось, что влияние всех внутренних процессов камеры можно
описать моделью нормального фона, считая, что каждая ячейка камеры (более того, на
каждый датчик цвета камеры) подвергается искажению, прибавлением случайной
величины, распределенной нормально с нулевым средним.
Тогда, если сцена перед камерой не меняется, то изменения в приходящих кадрах вызваны
именно добавлением этого шума, и возможно оценивание параметров этого шума.
Вообще, если оценивать по стационарной сцене величину
влияния шума, то практика
показывает, что действие шума зависит не только и не столько от ячейки камеры, сколько
от того, что находится в области, откуда ячейка камеры собирает свет.
Например, стационарной сценой, типичной для решаемой задачи является пустое поле,
которое по требованиям федерации FIRA представляет собой черный «прямоугольник» с
расчерченными линиями разметки. Типичные линии – центральная, и линии зоны ворот,
18
кроме того центральная окружность, полуокружности зоны ворот и, иногда, белая или
серая надпись FIRA посередине. Ширина линий 3мм, и на изображении
они будут попадать в зону собирания лучей 1-2 датчиков (считая по горизонтали, либо
вертикали).
Если нарисовать графики каналов R, G и B для пикселей одной строки (Рисунок 8), то мы
заметим стандартное увеличение средней величины значения канала к центру кадра и
скачки значений в точках пересечения горизонтали белыми полосами.
Более интересный эффект можно увидеть, если мы будем строить такие графики для
последовательных кадров, то даже зрительно можно заметить разницу в разбросе
пикселей на однородном фоне и на пересечении с тонкой линей (которая будет состоять
как бы из двух переходов цвета). Это хорошо заметно, если построить такие графики для
оценки величины
для каждого пикселя строки.
Сегментация по модели будет проходить путем запоминания картины фона с
R
G
B
Рисунок 8. Графики каналов R,G,B для строки изображения поля с разметкой. Пики
соответствуют линиям разметки. При построении таких графиков в реальном времени
видны постоянное сильное изменение максимального уровня пика. На картине фона им
соответствуют максимумы дисперсии.
19
последующим вычитанием и применением порога. Только в картину фона мы будем
включать также аддитивный шум. Пусть у нас есть N кадров, на которых присутствует
только фон. Наблюдаемое поле случайных величин
распределено нормально со
средним
последовательным кадрам, в
и дисперсией
. Модель строится по
которых присутствует только фон. Для нахождения оценок параметров распределений
можно использовать общепринятые формулы для среднего
дисперсии
и для
. Однако, при такой реализации нам необходимо
сначала сохранить все кадры, а затем произвести вычисление по этим формулам. Таким
образом,
необходимо
хранение
информации
объемом
байт
(изображения формата RGB24). Часто это неудобно, т.к. при больших значениях
мы
получаем большие необходимые количества памяти.
Обработка будет занимать
действий сложения для вычисления µ, и еще столько же
действий сложения для вычисления σ. Кроме того потребуется еще
действий
типа деления. Это происходит на стадии инициализации, поэтому не так страшно, что по
окончании сохранения всех кадров программа замирает на секунду, чтобы посчитать
параметры модели. Но «замирание» программы нервирует пользователя.
Можно записать формулы в итеративном виде, когда мы храним постоянно только
и для вычислений используем время между приходами кадров. Для этого будем
хранить значения
и
, где
и
– оценки значений µ и σ по первым
кадрам. По этим значениям и значениям нового кадра мы должны вычислить новые
оценки. Как показано в работе (Елкин, 2006) эти формулы будут иметь вид
Для построенной модели, для всех кадров после инициализационных
порог следующим образом: если величина
удовлетворяет порогу
, мы применяем
, то говорим, что значение
. Напомним, что модель строится для каждого канала цвета
R,G и B. Поэтому общим правилом сегментирования будет: если значения хотя бы одного
из каналов R,G или B для этого пикселя не удовлетворяет порогу, то пиксель
сегментируется как пиксель объекта иначе этот пиксель фоновый. Параметр
реальзован с возможностью изменения пользователем во время работы, но в большинстве
20
случаев используется значение
, которое соответствует теории доверительных
интервалов.
Заметим, что можно строить модель только по одному каналу (или по интенсивности,
подсчитываемой по всем трем каналам), однако на практике применение всех трех
каналов оправдано, т.к. случается так, что некоторые пиксели внутри объекта имеют не
высокую интенсивность, но для одного из каналов значение чуть-чуть больше порогового
значения. Это чаще каналы R или B, т.к. вклад в интенсивность у них меньше, чем у G.
Улучшить определение в этом случае модно за счет выбора коэффициентов для подсчета
интенсивности, однако метод с тремя каналами показывает стабильные результаты в
отличие от метода с модификациями интенсивности.
Результаты сегментации по модели будут иметь характерный вид с шумом типа соль и
перец.
Этот шум нивелируется добавлением фильтров по размеру областей. Но, неприятным
моментом является то, что форма полученных областей не будет похожа на форму
квадратных наклеек. В «объект» также будут сегментированы тени, стороны робота и
переходные точки.
Note:
Для старой камеры, переходные точки, вследствие аналогового считывания
сигнала, складывались в горизонтальные полоски, т.е. часто шум выглядел как полоски, а
не точки. Для новой камеры эта проблема не так заметна, однако переходные точки
остаются.
Также практика показала, что при длительной работе с однажды инициализированной
моделью фона, время от времени могут происходить изменения в обстановке
выливающиеся в смещении среднего значения фоновых точек, что приводит к появлению
областей, не являющихся объектами, но классифицируемых как объекты. Во многих
случаях нижеследующие этапы классификации исправляют эти ошибки, но они не могут
справиться с такими смещениями на белых полосах либо белых стенках поля. Что
приводит к проблемам при определении роботов, когда те находятся вблизи этих
аномальных областей. Поэтому, в качестве выхода было реализовано изменение модели
«на лету» по методу Running Gaussian Average [5]. Для этого параметры модели для
следующего кадра преобразуются, используя значения в текущем кадре по формулам:
Коэффициент α часто имеет значение 0.05, но имеется возможность изменять его. Однако,
если эти формулы для дисперсии не удобны, т.к. при сегментации используются (а,
21
следовательно и хранится)
, а для этого метода нужен квадрат этой величины.
Поэтому, в реализации предусмотрено отключение использования обновления дисперсии,
и в большинстве случаев, при нормальной функциональности обновление дисперсии не
производится.
2.2.2. Этап 2. Сегментация светлых и темных
Классически, для разделения информации о цвете пикселя на информацию о его яркости,
его тоне, используют цветовое пространство из семейства HS*, мы будем использовать
HSL. Нас интересуют только значения пикселей, которые на первом этапе были
классифицированы как объектные, поэтому, только их значения переводятся в HSL. Для
сегментации мы используем только значения S и L. Все три значения потребуются нам
позднее, при определении цветов.
Идея сегментации, что пиксели объекта имеют, как правило, яркость и насыщенность
большую, чем большинство пикселей фона (поле в основе своей черное). Поэтому огрехи
первого шага (шум соль и перец, а также неточности вокруг объекта) можно исправить,
применив к ним фильтрацию. Для этого выделим 4 порога, по два для каналов S и L
максимальный и минимальный, таким образом, выделив отрезок по каждой из этих
компонент при непопадании в который пиксель причисляется к фону. Часто, но не всегда,
верхние
границы
отрезков
устанавливаются
равными
максимально
возможным
значениям.
2.2.3. Этап 3. Сегментация по геометрии областей
Используя метод, описанный в [2], мы объединяем пиксели в области. Основное
преимущество этого метода, в том, что он за один проход объединяет пиксели в линии, и
далее работает только с линиями, которыми и описывает области в результате. Т.е.
количество вычислений будет порядка
количество линий, и
, где
– количество пикселей, а
–
. При объединении используется 4-связанность пикселей.
Во время объединения к областям применяются различные фильтры размеров. Не
запоминаются области малые по размеру по горизонтали либо вертикали; малые по
площади; малые по площади ограничивающего прямоугольника. Геометрические
параметры области, такие как площадь, крайние значения по координатам, считаются при
ее создании.
Все размерные параметры подбираются из расчета по высоте подвеса камеры, ее
разрешения и размеров робота и мяча. На практике, подстройка подсчитанных таким
неточным образом границ не требуется, хотя в реализации такая возможность имеется.
22
2.2.4. Вид области, полученной отсечением по модели
Рисунок 9. Область после отсечения по модели
Вид области робота (Рисунок 9), после обработки только первым шагом. Заметны
неровности краев, характерные для пороговой обработки.
2.2.5. Вид области, полученной после всех этапов отсечения фона
Рисунок 10. Область после всех этапов отсечения
Область после всех этапов обработки (Рисунок 10) уже имеет гладкую границу, исчезает
шум.
2.2.6. Результат
В результате, получается область, описанная в терминах списка линий, довольно точно
описывающая объект. Кроме того, подсчитаны размеры объекта, его центр масс, площадь,
границы по осям координат, а также значения пикселей в цветовых пространствах RGB и
HSL.
Эти данные являются результатом этого этапа и будут использованы далее.
2.2.7. Оптимизация алгоритма отсечения фона
Алгоритм отсечения фона (а точнее его первый этап) является единственным алгоритмом,
проводимым на всем изображении. Все остальные алгоритмы проводятся над описанием
области объекта линиями, либо на «изображении» объекта в пространствах RGB или HSL,
т.е. с количеством информации много меньшим, чем исходное изображение. Поэтому,
основная вычислительная нагрузка ложится на первый этап отсечения фона. И
23
приоритетной задачей по улучшению этого алгоритма является уменьшение области
поиска объектов.
Согласно правилам игры, на поле могут находится 5 своих, 5 чужих роботов и мяч. Про
роботов мы можем строить предположение (см. [10, 11]) об их предельных скоростях и
ускорениях. Конструкция своих роботов нам известна, и мы точно знаем и максимальную
скорость, и максимальное ускорение (
) ([13]), поэтому мы можем
построить области, в которых робот команды не может переместиться, если до этого он
был обнаружен в другой области. Вообще, мы можем оценить также и возможные
скорость и ускорение команды противника, т.к. часто команды анонсируют эти
параметры, и положение в мире на рынке двигателей малого размеры позволяет делать
оценки сверху этих параметров. Например, максимально заявленная скорость на
прошедшем чемпионате мира в Дортмунде, Германия, была у команды из Китая
, причем реальность этой цифры уже может быть поставлена под сомнение.
Таким образом, если закладывать ее как максимальную скорость, то мы получим
гарантированную оценку. Подобной информации об ускорении, к сожалению, нет, однако
есть данные, что команда из Сингапура, победившая на чемпионате, может ездить с
ускорением
[10]. Исходя из общих соображений, максимальное ускорение,
которое стоит ожидать в ближайшем будущем, не будет превосходить двойного этого
значения (и это самая пессимистичная оценка).
Частота съема информации с камеры составляет 36 герц, т.е. 36 раз в секунду, а время
между съемом информации
расстояние
. Поэтому робот проехать прямо может максимум на
. Если мы не считаем скорость вражеских роботов, то для них область
поиска сводится к кругу этого радиуса. Для своих роботов мы знаем скорости, задаваемые
ему алгоритмом игры, а также направление. Поэтому можем сократить области, обрезав
область в направлении противоположном направлению движения. Пусть в момент
задана скорость
, и робот располагался под углом α к горизонтальной оси координат,
тогда по приходу следующего кадра, он сможет сместиться в направлении
расстояние
была
только на
. Причем надо заметить, что за 1 такт робот не успеет сбросить
скорость с максимума, да и вообще не успеет сильно изменить ее. Поэтому наших роботов
надо искать в прямоугольниках, вытянутых вдоль предыдущего направления и имеющих
небольшой отступ в противоположном направлении и боковых направлениях.
Для простоты вычислений область приближается прямоугольником, расположенным по
осям координат. При таком представлении мы по номеру строки определяем отрезки, в
которых производится поиск пикселей объектов. Если при этом пиксели прилегают к
24
краю области, то надо продолжить поиск отрезка вне области интереса, чтобы области
интереса не сказывались на форме объектов.
Теперь, при создании областей мы сохраняем кроме прочих параметров номера областей
интереса, в которых лежит данный объект.
2.3. Алгоритм классификации объектов
Данные об объектах, полученные после отсечения фона, поступают для классификации
объектов на своих чужих и мяч.
В правилах FIRA описано, что на поле находятся роботы и мячик для гольфа оранжевого
цвета [9]. Роботы должны иметь сверху кусок размером не менее 3.5 на 3.5 см цвета
команды имеющий не очень сложную форму. Цвет команды выбирается либо синий, либо
желтый по жребию. Кроме того, на роботе могут быть еще цветные куски для внутренних
целей команды, но они не могут совпадать с цветом, выбранным противником, для
идентификации команды. Также команды стараются избегать использования цветов,
похожих на оранжевый цвет мячика, хотя это и не запрещено правилами.
Формулировку относительно использования цветов следует понимать так: на роботе
должен быть кусок командного цвета площадью
и формой максимально
неудобной для противника, и максимально удобной для тебя. Цвет этого куска желтый
или синий, причем оттенки цветов выбираются командами по-разному. Другие цвета на
роботе не должны быть с человеческой точки зрения быть синими либо желтыми, но это
не запрещает использование пограничных цветов типа белого с теплыми или холодными
тонами, чтобы команда противников потратила кучу времени на настройку программы
для отделения этого цвета от своего командного. В этом случае команда может
потребовать замены цвета, но решение принимается судьей матча, и скорее оно будет
отрицательным, если с человеческой точки зрения кусок цвета не похож на командный.
Поэтому команде надо иметь большой запас в разделении цветов.
Как уже было сказано, для своих целей мы используем наклейки вида (Рисунок 4, Рисунок
6). Т.е. половина или более области занято командным цветом и 1 или два куска
дополнительно используются для определения ориентации и разделения роботов в
команде.
2.3.1. Классификация цветов
Для классификации в предыдущей версии реализации использовалась только одна
компонента H пространства HSL для определения цвета [3]. Согласно определению
пространства HSL оно оптимизировано для отделения информации по тону цвета и по его
25
яркости [1]. Компонента H (hue) – цветовой тон, хроматическая составляющая, как бы
отвечающая за длину волны света попавшего в датчик; S (saturation) – насыщенность
показывает, насколько цвет отличается от серого цвета с тем же цветовым тоном; L
(lightness) – яркость, яркость света зарегистрированного датчиком.
Однако разделение цветовой информации не является полным [1]. Поэтому в предыдущей
реализации использование только одной компоненты было слабым местом и давало
большое количество ошибок в различных ситуациях. Поэтому, в новой версии, основным
улучшением в этом направлении стало введение классификации по всем трем
компонентам.
Кроме того, в этой области также были проблемы, которые привели к выбору новой
камеры. Это прежде всего возникновение перетекания цветов и как следствия ложных
цветов. Преобразование сигнала в аналоговый для последующей передачи в режиме PAL,
как уже отмечалось ранее, дает эффект сглаживания переходов цветов. Аналоговый
сигнал не может меняться скачкообразно; внутренние параметры камеры ограничивают
величину производной сигнала. Поэтому на соседних цветах, особенно на тех, где
используются разные компоненты RGB (например, синий – красный) должно быть так,
что компонента цвета (например, B) в одном пикселе велика, а в следующем мала. Но на
самом деле, начиная с пикселя в котором должно было произойти изменение (в нашем
примере там, где компонента мала) происходит переходный процесс в несколько пикселей
с последовательным уменьшением значений канала до требуемого значения. На переходе
синий – красный участвуют две компоненты цвета, одна из которых растет, а другая
убывает. И в результате, мы получаем спектр переходных цветов синий – фиолетовый –
малиновый – красный, причем этот спектр цветов может погребать под собой весь
конечный цвет. Для своих роботов наклейки были спроектированы так, что конечный цвет
оставался, однако приходилось прибегать к различным ухищрениям при определении
направления и робота в команде, т.к. в сине – красном роботе непременно находился
малиновый
цвет
(фиолетового
при
определенном
дизайне
наклеек
находилось
пренебрежимо мало). Новая камера не имеет промежуточных процессов преобразования в
аналоговый сигнал с последующей оцифровкой, поэтому переходные процессы
затрагивают лишь пограничные пиксели и влияние их на картину цвета в целом
пренебрежимо мало.
Опишем систему определения цветов в новой реализации.
Пусть у нас есть именованный набор цветов: красно-оранжевый, желтый, зеленый, синий,
фиолетовый и малиновый. Для каждого и этих цветов существует 6 пороговых значений,
задающих отрезки по 3м каналам. Замечу, что в этой реализации возможно использование
26
как пространства HSL, так и пространства RGB. В книге (Гонсалес, и др., 2006) замечают,
что практика показывает, что отделение одного цвета от других лучше производить в RGB
нежели в HSL [1]. А в различных описаниях команд MiroSot встречаются использования и
того и другого пространства причем выводы о том, какое лучше неоднозначны. Эти
пороговые значения можно изменять в программе, и они сохраняются от запуска к
запуску.
Кроме
того,
программа
определяет
неоднозначности
и
препятствует
пользователю задавать границы отрезков с неоднозначностью.
Цвет пикселя относится к именованному значению в случае, если значения компонент
цвета лежат в трех отрезках соответственно.
2.3.2. Настройка классификации цветов
Настройка границ цветов производится вручную. Это крайне неудобно, т.к. отнимает
много
времени,
поэтому
было
задумано
создать
некую
автоматическую
или
полуавтоматическую систему автоматической инициализации цветов. В книге (Гонсалес,
и др., 2006) описан возможный подход, при котором запоминаются значения пикселей
известной цветовой разметки, по значениям цветов которых определяется среднее и
разброс для именованного цвета [1].
Используя этот подход, был реализован следующий метод настройки. Будем показывать
камере настроечную матрицу цветов, состоящую из нескольких одноцветных квадратов.
Размер матрицы 6 на , где
– это количество оттенков. По идее, чем больше оттенков мы
выберем, тем точнее получим настройку, однако создание матрицы с большим
количеством оттенков задача более сложная, чем полезная. Поэтому, на практике
используется матрица с двумя оттенками. Далее, система – сервер переводится
пользователем в состояние настройки цветов. В этом состоянии обработка приходящих
изображений осуществляется так: применяется алгоритм отсечения фона на полном
изображении, найденные области после всех фильтраций расцениваются как цветовые
квадраты матрицы, и в соответствии с координатами этих областей, определяется, какому
элементу цветовой матрицы соответствует та или иная область.
Далее, по всем пикселям, отнесенным таким образом к именованным цветам считаются
среднее значение и разброс по каналам (RGB или HSL) и по ним определяются границы
отрезков на каждом из каналов.
Полученные настройки на практике оказываются недостаточно точными, и их приходится
подстраивать вручную, чтобы корректно классифицировались цвета на переходах. Для
удобства такой настройки в реализации системы добавлена возможность увеличения
части изображения до или после обработки. С помощью этой возможности пользователь
27
может определить какие пиксели были сегментированы к каким цветам, а также
определить значения цветов пикселей в пространствах HSL или RGB.
2.3.3. Классификация на основные классы
Напомним, что объекты на поле мы разделяем на роботов чужих, роботов своих и мяч.
Для определения направления дальнейших действий с объектом, нам требуется
определить, к какому классу он относится.
Информация, используемая для классификации, полученная на предыдущих этапах:
именованный цвет точек объекта, а также расстояние от центра масс области до
положения объекта на предыдущем кадре (здесь включена возможность, что объект на
предыдущем кадре найден не был).
Известная информация об объектах:

Для роботов команды: наибольший процент среди именованных цветов
пикселей имеет командный цвет, и противоположный цвет не может иметь
большой процент (он может образоваться лишь случайно на краях объекта из-за
переходов)

Для роботов противника: мы не уверены в том, какие цвета могут встречаться
на объекте и как они, взаимодействуя друг с другом,
отобразятся на
изображении с камеры, однако мы можем утверждать, что в области,
расцениваемой
как
изображение
робота
противника,
присутствует
противоположный цвет, причем его процент значимый.

Мяч – это объект красно-оранжевого цвета и наличие там других цветов
невозможно.

В дизайне некоторых верхушек других команд цвета кусков разделены
небольшими областями черного цвета. В большинстве случаев (во всех со
старой камерой) эти области не приводят к разделению изображений вражеских
роботов на несколько областей, так как поглощаются переходными процессами,
однако при разработке алгоритма мы попытаемся учесть возможность
разделения вражеского робота. В этом случае алгоритм должен определить в
качестве
робота
часть,
содержащую
цвет
команды
противника.
Для
корректности определения остальные части должны определиться как объекты
вне нашего интереса (будем называть их «белые объекты», по цвету которым
они будут выделяться в реализации)

Алгоритм отсечения фона часто не имеет возможности отделить мяч от робота,
который его ведет в момент съемки, поэтому алгоритм должен уметь находить
28
среди других объектов, но при этом не путать этот случай с теми случаями,
когда алгоритм отсечения фона не смог найти мяч.
Для классификации по основным классам будем использовать два признака. Процент
основного цвета и расстояние до ближайшего места расположения объектов каждого
класса объектов (мяч, свои роботы, чужие роботы). В каждом классе выбираются веса
для процента и для расстояния, и вычисляется значение для этого класса. Если быть
более точным то в классификатор добавляется не расстояние, а его функция, которая
при нулевом расстоянии дает единицу, и стремится к нулю при стремлении расстояния
к бесконечности. Кроме того, используется расстояние, деленное на диагональ
изображения. Формула для значения выглядит так:
Объект причисляется к классу с максимальным значением, если его вес больше
порога, иначе объект причисляется к шуму.
Такое строение классификатора позволяет учитывать не только количество цвета в
объекте, но и дальность от предыдущего положения, что автоматически избавляет нас
от случайных ошибок путаницы роботов своей и чужой команды в случае, если они
далеко и на чужом роботе есть цвет, определяемый при определенных условиях как
командный.
2.4. Вычисление координат робота
Под координатами робота понимается точка в трехмерном евклидовом пространстве.
Координаты этой точки (x,y,α) обозначают положение робота в двумерной системе
координат, связанной с полем и угол направления робота в этой же системе координат.
Для мяча и чужих роботов мы рассматриваем двумерное пространство координат (x,y).
Мы рассмотрим метод, описанный в предыдущей работе и его улучшение для увеличения
качества. Под качеством понимается точность и устойчивость к ошибкам.
2.4.1. Метод нахождения положения. Устойчивость к ошибкам.
Для вычисления положения использовался распространенный метод нахождения центра
масс. Распределение масс считалось равномерным. Т.е. определялось среднее по всем
точкам от координат (x,y).
Действительно, для всех объектов, которые нам интересны центр масс видимого региона
совпадает с той точкой, координаты которой мы желаем определить (варианты видимых
регионов – квадрат и круг).
29
Здесь надо сделать оговорку, что мы не делаем
никаких предположений насчет того, какой формы
регионы мы получим у роботов противника. Но для
Xz
Xd
d
этих объектов точность определения положения
важна меньше, поэтому полученная точка, если она
p
v
находится в пределах размера вражеского робота,
Xp
будет достаточным приближением его положения.
Проведем
простой
теоретический
расчет,
показывающий качественно устойчивость этого
Рисунок 11. Векторы сдвига центра
алгоритма к ошибкам сегментации.
масс. Вектор p получается из-за
Разделим ошибки, проявляющиеся при сегментации
потерянной области, вектор d из-за
на два рода. Ошибки первого рода: добавление
добавленной. Для сдвига берется
взвешенная сумма этих векторов.
Если веса равны 1 (что вообще
говоря не происходит), то v будет
вектором сдвига.
ложных точек Ошибки второго рода: потери точек
объекта.
Пусть
–
точки
объекта,
–
добавленные ложные точки, кроме того точки
потеряны при сегментации (d ≥ 0 –
количество добавленных точек, p ≥ 0 – количество потерянных точек). Пусть
искомый
центр объекта, учитывая, что известными формами объекта являются круг и квадрат, то
совпадает с центром масс, взятым по точкам объекта.
. Теперь рассмотрим
центр масс фигуры, полученной сегментированием.
Вектор смещения центра масс из-за ошибок сегментирования будет равен
Учитывая, что
и
,
– центры масс добавленных и потерянных
точек
Это означает, что суммарный вектор ошибки состоит из разности вектора смещения в
сторону центра масс добавленных и вектора смещения в сторону центра потерянных с
30
весовыми коэффициентами, показывающими вес точек этой ошибки по сравнению с
точками, которые были найдены правильно.
В самом деле, добавленные точки «утяжеляют» наш объект, смещая центр масс к себе, а
потерянные «уменьшают», смещая центр масс от себя. (Рисунок 11)
На величину вектора сдвига влияет не только количество точек, сегментированных
неправильно, но и симметричность их распределения относительно центра масс. Регион
наблюдаемых объектов также обладает свойством симметричности. Ошибки первого типа
располагаются в окрестности границы объекта (если алгоритм сегментации не вызывает
значительных несимметричных изменений формы объекта).
По этому, вполне ожидаемо, добавление ошибок первого типа, вызванных некими
причинами, действие равномерно на всем изображении (или хотя бы в пределах размеров
объектов)
будет оказывать влияние, пропорционально их количеству, но с малым
коэффициентом.
Рассуждения о симметричности также применимы к ошибкам второго рода, за одним
исключением.
Ошибки второго рода, можно разделить на ошибки, примыкающие к границе объекта и
ошибки, создающие ложные границы внутри объекта. Для ошибок, примыкающих к
границе справедливо также, что часто влияние источника их возникновения сказывается
равномерно на границе и вследствие ее симметрии влияние этих ошибок также снижается.
Используемый алгоритм сегментации (в своей изначальной форме, т.е. использующий
только значение компонент цвета пикселя) допускает образование ошибок второго рода,
создающих ложные границы. Эти ошибки обычно вызываются особенностями цветов
объекта, например, при переходе красный-зеленый точки на границе имеют низкую
интенсивность по всем трем компонентам и могут быть причислены к фону.
Эти особенности не обладают симметричностью и вносят существенный вклад в
изменение центра
тяжести.
Особенно
заметно,
если
на
границе
симметрично
распределены ошибки второго типа в большом количестве. Тогда их вклад не большой
(вследствие симметричности) однако к ним прибавляется вклад ошибок внутри и при
несимметричности их суммарный вектор направления смещения будет обладать
существенным модулем, кроме того этот вектор будет умножен на суммарное количество
ошибок второго рода, которое также существенно. А в результате получаем большую
ошибку определения центра масс.
Внутренние ошибки второго типа легко устранимы, если использовать, например,
медианную фильтрацию или найти внешнюю границу и определять регион объекта как
все внутренние точки границы.
31
Заметим, что медианная фильтрация использовалась в предыдущей работе для подобной
цели. Однако медианный фильтр внесет дополнительные ошибки в определении границы
объекта, что приводит к необходимости отказаться от него в будущем.
В качестве итога, рассмотрим, что можно сделать для улучшения определения положения.
Алгоритм нахождения центра масс толерантен к шуму (ошибка делится на площадь
объекта). И поэтому мы оставляем этот метод для нахождения положения.
Казалось бы, что можно улучшить этот метод введением весов точек для уменьшения
влияния граничного шума.
. Т.е. исходя из
знания формы искомой фигуры и желаемого распределения цветов в ней, мы уменьшаем
вес точек, которые более вероятно не являются точками региона объекта.
Можно предлагать различные методы для выявления таких функций. Однако
высказывается предположение, что верно одно из двух:
1. Мы знаем, как вычислять весовую функцию F - значит, мы знаем центр масс, и
формула оказывается бесполезной, т.к. она не уточняет центр масс, а только еще
раз дает уже известный результат.
2. Весовое распределение F вносит дополнительную ошибку, либо не изменяет
устойчивость.
Проведем рассуждения, приводящие к такому предположению.
1. F центрально. Т.е. если объект определен правильно, то результат суммы должен
совпадать с центром.
. Наше распределение не должно давать
постоянной ошибки.
2. Логически можно разделить F на функции от трех сложных переменных
a.
– непосредственно вектор координат. Если существует зависимость от
этой переменной, то весовая функция меняется при переносе координат и
поступательных движениях объекта.
b.
– цветовая информация об объекте. Важным является то,
что эта информация не зависит от положения объекта
c.
– положение точки внутри объекта
3. Какие способы в этом случае учета информации пунктов b и c может быть.
Например, цветовая информация может быть учтена сравнением цветов с
некоторой моделью, однако не понятно как это делать, не зная положение объекта.
Другой способ брать коэффициент из метода сегментации
, который
использовался для сравнения с порогом. Однако вычисление коэффициентов через
32
него введет дополнительную ошибку, т.к. самые яркие области сосредоточены не
внутри центра.
4. Для информации о положении можно, например, считать вес как функцию от
расстояния до границы. Однако т.к. действия ошибок, прежде всего, сказываются
на границе, то увеличения точности ожидать не приходится.
5. Если веса считать по функции расстояния от центра области, полученного по
границе или по центру всей наблюдаемой области (что эквивалентно), то мы
получим формулу, которая притягивает точку к этому центру.
6. Если рассматривать точки области, как реализации случайной величины с
симметричным распределением относительно центра объекта, то оценка центра
масс с равномерной массой будет наилучшим.
7. Получим еще один вполне ожидаемый результат. Для этого рассмотрим область ,
отличающуюся от реальной области , добавлением одной лишней точки. Ошибка,
возникающая при использовании весовой функции в системе координат,
проходящей через реальный центр, будет
,
–
веса, построенные на базе наблюдаемой области . Если веса выбраны так, чтобы и
«лишней»
точки
сумма
равняется
нулю.
Например
,
то
, т.е. наилучшей функцией в этом случае будет например
индикатор области
, которую мы считаем неизвестной. Также уменьшению
ошибки способствует симметричность функции
, но подсчет непостоянной
симметричной функции основывается на знании центра, а эту информацию мы
тоже считаем недоступной.
Таким образом, есть смысл отказаться от поиска весовой функции, и модифицировать
качество алгоритма двумя путями:
1. Улучшать точность построения границы
2. Стремится к симметричности расположения ошибок по границе.
Далее будет описан метод уточнения границы, включенный в данную реализацию.
2.4.2. Метод нахождения вершин
Рассмотрим теперь использовавшийся в предыдущей работе метод нахождения вершин.
Этот метод применялся для нахождения направления роботов команды.
Он заключался в том, чтобы брать в качестве вершин точки объекта, через которые
проходит ограничивающий прямоугольник. Если на какой-либо из границ таких точек
оказывается много, то берется средняя из таких точек. Исключение составляют малые
33
углы поворота робота, для которых в качестве границы брался сам ограничивающий
прямоугольник. Для определения какой метод надо использовать используется оценка
угла по отношению площадей области и ограничивающего прямоугольника. Из простых
геометрических соображений:
Ox.
. α – угол между стороной квадрата и осью
– площадь ограничивающего квадрата,
– площадь области.
Очевидной проблемой такого подхода. Является то, что во всех случаях, когда
срабатывает критерий малости угла мы получаем ошибку определения из-за того, что
считаем в этом случае угол равным нулю. Ошибки построения области не дают нам
сделать порог малым. Например, в реализации системы использовался порог 10 градусов.
Покажем влияние ошибок на этот метод оценки, чтобы продемонстрировать, почему
нельзя эту оценку самостоятельно использовать для определения угла.
Для этого построим графики влияния ошибки на разницу реального и определяемого угла.
Обратим формулу:
;
; Как видим, разница углов
будет сложной функцией от ошибки.
Разделим ошибки, возникающие в результате неправильного определения площади
фигуры (т.е. добавление и потеря пикселей), не затрагивающее углы квадрата. И ошибки
«срезания» углов квадрата. Тогда оценки площадей, полученные от реальных данных,
будут
для площади области и
Рисунок 12. Ошибка в определении угла. При постоянной ошибке первого рода. Слева
1/20 площади. Справа -1/20 площади
34
Для площади ограничивающего прямоугольника. Здесь
аддитивная ошибка
первого типа, мы будем предполагать ее принадлежащей отрезку
.
– количество углов (от 0 до 4) подвергающихся ошибке второго рода.
и
являются функциями от количества углов и сдвигом внутрь фигуры из-за
«срезания» угла.
В качестве исходных параметров будем задавать
рассматривать типичный случай
, α,
,
,
. Будем
, реальные значения этой площади лежат вблизи
этого значения.
Для начала построим график, считая, что ошибок второго типа нет. На рисунке (Рисунок
12) изображены графики зависимости невязки от угла поворота квадрата для постоянных
значений
ошибки
отрицательного.
увеличении
наблюдается
положительного
Интересно,
угла
до
что
45
и
при
градусов
увеличение
влияния
постоянной ошибки. Это свойство не
позволяет
использовать
этот
метод
самостоятельно для нахождения угла.
Для
определения,
когда
угол
использование этого алгоритма кажется
допустимым. В самом деле, при такой
ошибке
пороги,
рассчитываемые
по
желаемой ошибке 5-10 градусов, могут
Рисунок 13. Зависимость ошибки по углу от
ошибки по площади (-1/10...1/10) площади
быть использованы. Для иллюстрации
этого приведем также график зависимости ошибки угла от ошибки первого типа при
постоянном угле 20 градусов (Рисунок 13).
Большие ошибки по углу возникают в результате действия ошибок второго типа.
Рассмотрим подробнее их влияние. Для начала определимся, что допустимыми
значениями ошибок
являются значения в отрезке [0,3] причем матожидание
величины ошибки не нулевое.
Значения
интересующие нас 2 и 4. Т.е. ошибка действует симметрично, либо
только для углов одной координаты, либо для всех четырех. Причем действие на каждый
угол одинаковое. Этот факт был получен опытным путем и объясняется особенностями
алгоритмов сегментации, описанными выше.
35
Влияние ошибки сказывается и на площадь,
error2
считаемую по количеству точек, и на площадь
ограничивающего прямоугольника.
err
or2
Для площади по точкам, нам необходимо
вычисть площадь угловых треугольников
*co
s
a
a
отрезаемых горизонтальной или вертикальной
расстоянии
.
от
угла
Площадь
на
такого
a
e rr
треугольника (Рисунок 14) будет составлять
sin
a
располагающейся
or2
*
линией,
, т.е. ошибка для площади по пикселям будет
.
Рисунок 14. Площадь треугольника
Для вычисления площади ограничивающего
квадрата введем размер
потерянного угла
, тогда для
количества углов 2 и 4
Сначала построим график при постоянном угле в 20 градусов и вариации ошибки error2 от
-4 до 4 пикселей (Рисунок 15). Видим большой отклик при любой отрицательной ошибке
(т.е. не срезания, а добавления углов), и ошибку порядка 10 градусов при ошибке срезания
одного пикселя. Немного лучшая ситуация в случае двух углов, ошибка определения угла
при срезании одного пикселя.
2.4.3. Определение позиции. Выводы.
Предположим, что сегментация, проделанная на предыдущем шаге, была
произведена без ошибок, т.е. алгоритм сегментации показал свой наилучший результат, на
который был способен. Замечание состоит в том, что и в этом случае мы получаем
ошибку, связанную с тем, что алгоритм сегментации работает с целыми значениями
пикселей, следовательно, в нем изначально заложена ошибка, связанная с дискретизацией
определения границы.
36
Рисунок 15. Зависимость ошибки по углу от ошибки "срезания" углов.
Справа: подвержены 4 угла, Слева: подвержены 2 угла
Кроме того возможность возникновения ошибок потерь пикселей внутри области
приводит нас к мысли о том, что необходимо вводить дополнительно алгоритм
позиционирования границы и считать положение и угол по результату его работы. Кроме
того, если алгоритм нахождения положения сохраняется неизменным, то алгоритм
определения угла будет изменен на метод с большей аккуратностью.
Сегментация, проведенная на первом шаге, дает нам примерное положение объекта
и его границы, поэтому можно ввести дополнительно алгоритм с большим количеством
вычислений, так как область поиска границы достаточно мала.
2.5. Субпиксельное нахождение границы
Существует большое количество работ, в которых описываются и исследуются
методы субпиксельного нахождения объектов. Выберем для нашей системы один,
основанный на введении дополнительного шага к распространенному алгоритму поиска
пикселей границы.
Реализуемый алгоритм основан на базе метода немаксимального подавления (Nonmaxima supression), используемого, например, в алгоритме Canny Edge detector [6, 7].
Основное отличие от алгоритма Canny в том, что наш алгоритм находит границу с
дробными координатами, используя при этом больше вычислений, но не стремится к
нахождению слабых границ, т.е. использует один порог.
Опишем действия этого алгоритма: для всех точек области, тестируемой на
наличие границ
1. Гауссовский фильтр сглаживания со стандартным размером окна 5 и
коэффициентом
.
37
Мы будем использовать градиент изображения, посчитанный оконным методом
(маска Собеля). Как известно, результат разностных методов будет как бы
усиливать шум, подаваемый на вход этих методов. В качестве примера
проиллюстрируем результаты, описанные в [4].
Пусть наше изображение подвержено аддитивному гауссовскому шуму. Тогда
свертка с ядром, обладающим конечным носителем (например, вычисление
градиента с помощью маски Собеля) будет отдельно влиять на изображение и
на шум.
Тогда для результирующего распределения шума можно выразить среднее и
разброс
Маска Собеля имеет вид
. Разброс, получаемый в результате
. Таким образом, при оценках градиента (и особенно нормы градиента), мы
получаем большое влияние ошибки на входные данные алгоритма, практически
не предусматривающего существование шума. Поэтому, в качестве первого
шага мы выбираем подавление шума гауссовским сглаживанием.
2. Применение прямой и повернутой маски Собел, для определения компонент
вектора градиента.
Метод
немаксимального
подавления
использует
свойства
градиента
изображения.
3. Определение нормы этого вектора.
Для последнего шага нашего алгоритма потребуется именно норма, а не квадрат
нормы. Имеет смысл извлекать квадрат только перед последним шагом.
4. Точка M не является точкой границы объекта, если она не является точкой
локального максимума модуля градиента в направлении градиента.
Это базовая идея метода немаксимального подавления. Проверка этого шага
производится так: строится прямая из тестируемой точки в направлении
градиента и приближаются значения точек пересечения этой прямой с
38
горизонтальными либо вертикальными линиями, соединяющими восемь
соседей точки. Традиционно для Canny используется приближение ближайшего
соседа. Т.е за значение градиента в точках пересечения берется значение в
ближайшей точке из соседей тестируемой точки. Кроме этого варианта в
литературе ([8]) описаны результаты работы алгоритмов с линейным и
квадратичным приближением значений точек пересечения. В нашем алгоритме
мы будем использовать золотую середину, т.е. линейное приближение.
Простейший метод не будет давать требуемого улучшения точности, а
квадратичный требует много дополнительных вычислений.
5. Заметим, что локальные минимумы четвертого шага часто могут быть ложными
границами, т.к. частично компенсированный шум, все же может создавать
небольшое различие в интенсивности, а четвертый шаг улавливает даже малые
точки максимума. Поэтому целесообразно ввести порог на значение модуля
градиента, точки с модулем ниже которого не будут рассматриваться в шаге 4
вообще. Значение этого порога не должно быть большим, т.к. остаточные
шумовые локальные максимумы малы.
6. Точки, прошедшие шаги 5 и 4 подвергаются уточнению положения. Идея в
дополнительном сдвиге вдоль прямой задаваемой градиентом для получения
реальной точки максимума в этом направлении.
Для реализации этой идеи используется квадратичная модель. Используются
три точки, участвующие в сравнениях четвертого шага, для построения
параболы, точку максимума которой и будем считать граничной точкой
объекта. Если рассматривать прямую, задаваемую градиентом, то эти три точки
имеют координаты -1,0,1. Пусть значения нормы градиента в этих точках
соответственно, тогда точка максимума параболы, построенной на точках
будет в точке на прямой с координатой
Более конкретно, если
.
– точка локального максимума, полученная на 5м
шаге, то уточненная точка максимума будет находиться в точке
Покажем на простом примере (подробнее в [8]), почему была выбрана именно
квадратичная модель.
Напомним, что мы рассматриваем прямую на изображении, т.е одномерное
изображение.
39
Общая модель идеальной ячейки одномерной матрицы камеры (линейки)
будет иметь вид ([4])
где
освещенность точки
пространственная реакция,
светом с длиной волны
–
,
– реакция ячейки на длину волны, T – время экспозиции.
Для нашей цели перепишем эту формулу в более простом виде. Положим
, т.е.
состоит из одного значения длины волны и реакция на
него идеальна и не зависит от положения.
В этой формуле,
сила отраженного света, пришедшего в регистрирующую
ячейку от точки с координатой p. Не рассматриваем геометрические аспекты изменения
координат.
Рассмотрим простую модельную задачу. Пусть распределение отраженного света носит
такой характер
,
Что качественно означает, что объект занимает часть прямой до точки
, и наш
алгоритм должен найти положение границы, т.е. скачка с 1 до нуля.
В модельной задаче функция
будет иметь вид
Градиентный оператор можно задать как общий оператор производной, который можно
выразить разностной схемой. В общем виде записывается так:
Согласно шагу 6 используются три точки с координатами k=-1,0,1. Посчитаем значения
производной в них:
40
Заметим, что положение точки максимума параболы не зависит от переносов вдоль оси
и растяжений/сжатий по этой оси. Поэтому, можно выбрать
.
Теперь возьмем нормы градиента
И для уточняющего сдвига получим
т.е. фактическое значение точки
изменения. В заключение заметим, что использование симметричного фильтра для
подавления шума не вносит дополнительную ошибку в определение точки перехода.
Мы получаем новый ассиметричный оператор дифференцирования, получаемый как
суперпозиция симметричного сглаживания и антисимметричного дифференцирования. И
для него также верны все предыдущие вычисления.
2.5.1. Изменение дизайна наклеек
Для этого алгоритма нам потребовалось изменить дизайн наклеек. В новом дизайне
цветовые квадраты сдвинуты немного внутрь и на границе у нас только один цвет. Такой
дизайн не допускает образование на границе области встречи сразу трех цветов (см.
Рисунок 16). Выделенной области образовывался разрыв границы, т.е. пиксели, где
граница должна была быть, по методу немаксимального подавления не определялись
таковыми. Новый дизайн базируется на первоначальном варианте с полными квадратами
(Рисунок 4), он заимствует от него цветовую раскраску (3 двухцветных робота и два
трехцветных) и правило определения направления. Отличием является то, что квадраты
вторичных цветов в этом варианте немного уменьшаются и сдвигаются к центру, так,
чтобы на границе была значительная
Место потери
границы
видимая камерой прожилка командного
цвета. Заметим, что новый дизайн не
нарушает
работу методов вторичного
распознавания.
2.5.2. Внедрение субпиксельного
определения
В
предыдущем
пункте
был
описан
алгоритм тестирования целокоординатных
Рисунок 16. Место потери границы
точек изображения на предмет наличия в
41
них границы и определение вектора сдвига точек границы для получения более точных ее
значений. Обычно такой алгоритм применяют в некоторой области изображения и затем
находят связанные границы и работают с ними. Но, во-первых у нас уже есть информация
о границе (сегментация дает область и можно определить ее границу), а во-вторых
использование дополнительной сегментации может потребовать слияние отдельных
фрагментов границ и убирание лишних границ. Поэтому тестирование будем проводить
только точек располагающихся вблизи предыдущей найденной границы. Поясним этот
процесс.
Вначале нам требуется найти границу области, полученной на
этапе отсечения. Напомним, что она хранится в формате,
поставляемом алгоритмом сегментации ([2]), т.е. в виде списка
горизонтальных линий. Для каждой линии хранится начало и
конец, а также координата по вертикали. Заведем массивы
начал и концов для каждой строчки (размер возьмем из
ограничивающего квадрата). Пройдем по списку и будем
Рисунок 17. Порядок
проверки пикселей
сохранять в массиве левых координат наименьшие из
координат отрезков этой строки, и наибольшие для правых
координат. Заметим, что при отсечении фона обычно
образуется по одному отрезку в каждой строке, что также согласуется с нашим
представлением об областях наших роботов. Кроме того, после этого собрав из массивов
список, мы получим объект без внутренних дырок.
Из этих двух массивов не сложно собрать цепочку точек границы (она может не быть
связанной в терминах обычной пиксельной связанности, т.к. точки в соседних строках
могут отстоять на много пикселей друг от друга). Такая цепочка собирается, например,
прохождением массива левых концов по возрастанию и правых по убыванию номеров
строк.
Далее для каждой точки цепочки нам необходимо проверить ее соседей. Проверку будем
проводить по часовой стрелке, начиная снизу (Рисунок 17). Также будем хранить маску
уже проверенных пикселей, чтобы не производить лишние вычисления.
42
2.5.3. Вид субпиксельной границы
В качестве демонстрации результата (Рисунок 18)
этого метода продемонстрируем промежуточное
отладочное изображение уточненной границы
(белым цветом) изображенной на оригинальной
картинке с камеры. Для удобства отображена
увеличенная часть изображения с роботом.
2.5.4. Субпиксельное
вычисление
Рисунок 18. Уточненная граница
координат центра
Напомним, что целью собирания этой цепочки было получение координат центра масс
робота. Это возможно сделать по границе, используя контурные моменты. Опишем
вкратце эту идею. Момент порядка
для произвольного региона
по определению
равен
Для
мы получим площадь фигуры, а центр масс будет находиться так:
С помощью формулы Грина моменты можно высчитать по контуру. Вывод формул для
вычисления моментов по контуру можно найти в [12]. Для интересующих нас моментов
они будут:
При выводе этих формул предполагалось, что контур замкнут, т.е.
и
соседние точки соединены линиями. Эти формулы можно использовать, если координаты
точек не целые, что важно для нас.
В реализации было решено отказаться от использования функции библиотеки Open CV
([12]), т.к. структура цепочки получаемой этой функцией на входе заставляет нас
производить
большое
количество
действий
по
преобразованию
данных,
плюс
43
разрабатывать алгоритм восстановления пропущенных точек. Также эта функция
проводит внутри проверки связанности и считает кроме этих моментов все моменты до
третьего порядка включительно, а также центрированные и нормированные моменты. Все
это делает более рациональным использование этих формул самостоятельно.
2.5.5. Результаты
С помощью нового алгоритма мы получаем уточненные координаты центра командных
роботов. Прежде всего этот алгоритм избавляет нас от неточностей отсекателя фона,
«налипших» и «пропавших» пикселей. А также дает значительное уточнение точности
вдоль оси перпендикулярной текущему движению робота. (Задержка измерения
координат не дает нам говорить об уточнении вдоль оси движения, частичная борьба с
этой задержкой остается направлением последующей работы)
2.6. Классификация внутри команды
Своих роботов нам необходимо отличать друг от друга. Это требуется для установления
соответствия изображения (координаты в картине поля) робота и управляемого объекта
(подробнее в разделе Синхронизация именований роботов).
Классификация будет проводиться не таким образом как первичная. Мы будем определять
по нескольким кадрам среднее содержание каждого из дополнительных цветов для
каждого робота нашей команды. Эти средние содержания и еще нулевое значение будут
составлять координаты точки в пространстве признаков. Последняя нулевая координата
будет соответствовать расстоянию от классифицируемого объекта до предыдущего
расположения объекта с такой верхушкой.
Каждому возможному верху робота будет соответствовать точка на гиперплоскости с
нулевой координатой расстояния. Будем классифицировать изображения на последующих
кадрах
согласно
близости
в
этом
пространстве.
К
конкретной
точке
будет
классифицироваться тот объект, чье положение в пространстве признаков наиболее
близкое. Т.к. проценты содержания различных цветов у разных верхушек сильно
отличаются, то такой вариант классификации не приводит к неверной классификации,
если на новом кадре объект с одной верхушкой встал на место, где был объект другой
верхушки на предыдущем кадре.
44
2.7. Выбор ориентации роботов
Установив геометрию области робота для роботов команды, нам
также требуется выбрать ориентацию робота, т.е. определить в
какую сторону направлен робот. Обратимся к
Рисунок 19.
Стрелка изображает направление робота. Нам необходимо
определить какая из частей робота является задней правой. Для
этих целей мы возьмем границу, построенную на 4 вершинах, Рисунок 19. Ориентация
которые были получены грубой оценкой выше. И построим
линии, параллельные линиям границы, через центр робота.
Далее, используя описание области горизонтальными отрезками
и уравнения построенных линий, пройдем по всем точкам
робота. Стрелка
указывает переднюю
часть робота. Разбиение
на 4 части параллельно
границе
четырех областей и получим проценты содержания вторичных
цветов в этих областях. Область, в которой будет наибольшее содержание цвета
направления, будет выбрана за искомую.
Теперь надо напомнить про выбор цвета направления. Этот пункт мало изменился с
момента прошлой реализации ([3]), однако изложим его кратко здесь.
Новый вариант дизайна заимствует раскраску от старого (Рисунок 4). Правило выбора
цвета направления такое: первым назначается зеленый цвет и из 4 областей выбирается та,
где этого цвета больше всего. Если зеленого цвета нет или мало (порог выбирается как
четверть порога наименьших интересуемых областей из этапа отсечения фона), то
назначается следующий цвет красный, если и его мало, то малиновый.
2.8. О преобразовании координат. Определение области обработки
Задачей нашей системы является получение координат объектов для использования их в
навигации и игровых алгоритмах. Причем необходимо, чтобы координаты поля давались
не в системе координат изображения камеры, а в реальных координатах поля.
Геометрическая
модель
камеры
описывается
своими
внутренними,
внешними
параметрами и коэффициентами дисторсии. Внутренние параметры – это фокусное
расстояние камеры, сдвиг центра изображения в пикселях, а также размер эффективного
пикселя. Внешние параметры – матрица поворота и вектор трансляции, которые
переводят систему координат, связанную с камерой в систему координат, выбранную в
качестве внешней глобальной системы координат.
Существует много реализаций точной калибровки камеры с использованием стандартных
изображений, показываемых камере в различных положениях. В текущей реализации
45
калибровка проводилась при использовании Matlab Calibration Toolbox [14]. В будущем
планируется реализовать калибровку в рамках системы с использованием данных,
вычисляемых системой.
Обозначенная выше программа по серии изображений определяет внутренние параметры,
коэффициенты дисторсии и внешние параметры для каждого изображения. Далее,
используя
методы
библиотеки
OpenCV
[12]
получается
карта
преобразования
изображения для коррекции дисторсии. Карта - это соответствие координаты пикселя –
координаты пикселя, хранимое в памяти компьютера в виде двух массивов размеров
изображения (для
так:
значения
и для
координат в конечной системе). Преобразование происходит
каналов
изображения
в
точке
определяются
, кроме того, значения
и
так:
могут быть
не целыми, и в этом случае может применяться интерполяция по значениям соседних
пикселей. Но вычислительные нагрузки не позволяют использовать нам карты с нецелыми
значениями и интерполяцию, поэтому вычисленная карта преобразуется в целочисленный
формат по методу ближайшего соседа.
С помощью внешних средств мы определяем параметры, зависящие от камеры, но не от
положения ее подвеса. Далее, для завершения построения преобразования из координат
изображения в реальные координаты, нам необходимо определить внешние параметры
камеры, т.е. преобразование к системе, связанной с полем.
В качестве системы, связанной с полем мы используем систему координат, проходящую
по длинной стороне поля и границе ворот поля. В качестве центра используется точка
пересечения этих прямых.
Нашей задачей является определение координат точек, по которым мы могли бы
построить проективное преобразование, переводящее координаты в изображении (после
компенсации дисторсии) в координаты поля. Вообще, мы будем находить преобразование,
которое
будет
переводить
координаты
изображения
в
координаты
плоскости,
параллельной плоскости поля, так, чтобы его можно было представить картой
преобразования изображения и отобразить на экране изображение в новых координатах,
как будто камера не подвержена дисторсии и плоскость проецирования параллельна
плоскости поля.
После компенсации дисторсии геометрическая модель камеры сводится к проективному
преобразованию. В самом деле (см. [4]), для внутренних параметров, в случае, когда
координаты точек в пространстве измеряются в системе координат проходящей через
центр линзы:
46
(1)
Теперь, мы обладаем системой координат с корректным масштабом. Далее мы имеем
внешнюю систему координат, в которой и желаем видеть координаты точек изображения.
Также мы знаем, что от системы координат, связанной с камерой она отличается
трехмерным поворотом и переносом (внешние параметры камеры):
(2)
Где
– матрица поворота,
– вектор переноса.
Т.е. в результате мы получим проективное преобразование с произвольной матрицей
(3)
и найти нам необходимо будет как раз эту матрицу.
H
Точка
калибр
овки
FIRA
W
Рисунок 20. Схема игрового поля с точками калибровки
47
Далее, обратимся к рисунку (Рисунок 20), на котором отмечено 12 точек. Задача –
положить на стенки, которые имеют практически одинаковые с роботом высоты, квадрат
(можно использовать верх робота) таким образом, чтобы центр квадрата лежал в
отмеченных точках. Затем будет запущен цикл распознавания и определения координат,
который, найдя в положенных точках квадраты, определит их координаты на
изображении с учетом компенсации дисторсии. В результате, мы получим 12 пар
соответствий координаты изображения – координаты в реальной системе координат.
Неизвестными являются три параметра поворота и 3 параметра переноса. Для
определения внешних параметров по этим данным в реализации была использована
функция библиотеки OpenCV [12].
Далее, нам необходимо изменить размер обозреваемой области, так чтобы выпрямленная
область помещалась в размер изображения. Для этого проведем простое преобразование,
умножив все координаты на коэффициент. Для вычисления коэффициента возьмем
отрезки
на
и
(Рисунок 20), обозначенные на рисунке, и разрешение изображения
. Коэффициент будет равен
.
Преобразование координат изображения будет иметь вид
(4)
взяты из формулы (3).
Как уже говорилось выше, преобразование будет совершаться над изображением с
помощью карты преобразования по формуле:
Мы уже построили карту, задающую преобразование компенсации дисторсии. В эту карту
необходимо добавить преобразование, задаваемое формулой (3) и обращением формулы
(4). Фактически, если
координаты на исходном изображении,
изображении со скомпенсированной дисторсией, а
желаемого формата и
карты
координаты на
координаты на изображении
– карта для компенсации дисторсии, то для новой
верно следующее
Вернемся к преобразованию (3). Пусть
строки матрицы
, тогда, т.к. из (3) следует, что
и
, то
48
Т.е. для всех пар
необходимо в элемент матрицы
положить значение элемента матрицы
с координатами
с координатами
, вычисляемым по этим
формулам.
Теперь, после инициализации карты, для всех процессов обработки видеоинформации в
качестве первого шага добавляется преобразование с помощью подсчитанной карты. А
для всех координат найденных объектов для перевода их в реальную систему координат,
надо разделить их на
(формула (4)).
49
2.9. Пример слежения за траекторией объекта
Следующая
серия
изображений
видеопоследовательности,
содержит
демонстрирующие
в
себе
несколько
траекторию
кадров
движения
из
робота,
отслеживаемую системой
50
Заключение
Целью данной работы было описание нового набора методов технического зрения и
принципов их применения в рамках робототехнической системы.
В прошлом году [3] уже было дано описание набора алгоритмов для построения процесса
распознавания. Этот набор алгоритмов проходил тестирование в ходе подготовки к
соревнованиям FIRA WorldCup 2006, проходившим в Германии в июле 2006 года.
Результаты тестирования определили слабые места многих алгоритмов. Поэтому в этом
году основной целью работы была модификация алгоритмов распознавания. В ходе
работы все алгоритмы претерпели изменения. Новый набор алгоритмов позволяет
сократить время обработки одного кадра, за счет уменьшения области поиска объекта.
Изменение методов классификации позволило уменьшить количество ошибок, связанных
с неправильной сегментацией объектов. Реализованный в рамках этой работы метод
уточнения поиска центра существенно повышает точность определения позиции и
позволяет использовать данные программы для геометрической калибровки камеры.
Введение
дополнительного
метода
геометрического
преобразования
изображения
позволило привести систему координат изображения к прямоугольному виду. Все эти
дополнения помогают упростить процесс разработки алгоритмов игры, т.к. их введение
уточняет качество отработки системой команд, задаваемых алгоритмом командной игры.
При написании новых алгоритмов новые методы сначала реализовывались на языке
Matlab и затем подвергались изолированному тестированию, и затем код переносился на
язык C++ для добавления в программу-сервер. Такой способ позволил существенно
оптимизировать процесс отладки
и сразу отбрасывать методы не прошедшие
тестирование, не прибегая к длительному процессу интеграции их в программу-сервер.
Реализованная система проходит тестирование в рамках подготовки к европейскому
чемпионату года Словакия, Кошице, май 2007 года и чемпионату мира в США, СанФранциско в июле 2007 года.
51
Список литературы
1. Гонсалес Р и Вудс Р Цифровая обработка изображений [Книга]. - Москва :
Техносфера, 2006. - стр. 432-439, 455-457.
2. Елкин Е. В. Разработка алгоритмов выделения связанных областей движущихся
сегментов в видео потоке [Доклад]. - [б.м.] : Механико-Математический факультет
МГУ, Курсовая, 2005.
3. Елкин Е. В. Разработка подсистемы технического зрения для программного
обеспечения робототехнической системы роботов класса Mirosot [Доклад] :
Курсовая работа / МГУ, механико-математический факультет. - 2006.
4. Понс Ж. и Форсайт Д. Компьютерное зрение: Современный подход [Книга]. Москва : [б.н.], 2004. - стр. 57-59, 251-254.
5. C. Wren A. Azarbayejani, T. Darrell, and A. Pentland Pfinder: Real-time Tracking of
the Human Body [Статья] // IEEE Trans. Pattern Analysis and Machine Intelligence. 1997 r.. - 7 : Т. 19. - стр. 780-785.
6. Canny J.F. A Computational Approach To Edge Detection [Article] // IEEE Trans.
Pattern Analysis and Machine Intelligence. - 1986. - 6 : Vol. 8. - pp. 679-714.
7. Canny J.F. Finding edges and lines in images [Доклад]. - [б.м.] : Technical Report AITR-720,Massachusets Institute of Technology, Artificial Intelligence Laboratory, 1983.
8. Devernay F. A Non-Maxima Suppression Method for Edge Detection with Sub-Pixel
Accuracy [Доклад]. - [б.м.] : INRIA, 1995.
9. FIRA FIRA MiroSot Game Rules [В Интернете] // FIRA. - 2006 r.. - 16 Март 2007 r.. http://www.fira.net.
10. Khiam Goh Pit [и др.] Socrates - Team Description Paper [Конференция] // Procedings
of FIRA RoboWorld Congress. - Dortmund, Germany : [б.н.], 2006.
11. Kopacek P., Würzl M. and Schierer E. Vision system and game - strategies for
robotsoccer [Report]. - 2005.
12. Open CV Open Source Computer Vision Library Reference manual. - 2001 r..
13. Yelkin E. and Pakhomov V. Introducing an another MiroSot Robosoccer System
[Conference] // Procedings of FIRA RoboWorld Congress. - Dortmund, Germany : [s.n.],
2006.
14. Jean-Yves Bouguet. Camera Calibration Toolbax for Matlab
52
Download