Классификация внутри команды Своих роботов нам необходимо отличать друг от друга. Это требуется для установления соответствия изображения (координаты в картине поля) робота и управляемого объекта (подробнее в разделе Синхронизация именований роботов).
Классификация будет проводиться не таким образом как первичная. Мы будем определять по нескольким кадрам среднее содержание каждого из дополнительных цветов для каждого робота нашей команды. Эти средние содержания и еще нулевое значение будут составлять координаты точки в пространстве признаков. Последняя нулевая координата будет соответствовать расстоянию от классифицируемого объекта до предыдущего расположения объекта с такой верхушкой.
Каждому возможному верху робота будет соответствовать точка на гиперплоскости с нулевой координатой расстояния. Будем классифицировать изображения на последующих кадрах согласно близости в этом пространстве. К конкретной точке будет классифицироваться тот объект, чье положение в пространстве признаков наиболее близкое. Т.к. проценты содержания различных цветов у разных верхушек сильно отличаются, то такой вариант классификации не приводит к неверной классификации, если на новом кадре объект с одной верхушкой встал на место, где был объект другой верхушки на предыдущем кадре.
Выбор ориентации роботов Установив геометрию области робота для роботов команды, нам также требуется выбрать ориентацию робота, т.е. определить в какую сторону направлен робот. Обратимся к Error: Reference source not found. Стрелка изображает направление робота. Нам необходимо определить какая из частей робота является задней правой. Для этих целей мы возьмем границу, построенную на 4 вершинах, которые были получены грубой оценкой above. И построим линии, параллельные линиям границы, через центр робота. Далее, используя описание области горизонтальными отрезками и уравнения построенных линий, пройдем по всем точкам четырех областей и получим проценты содержания вторичных цветов в этих областях. Область, в которой будет наибольшее содержание цвета направления, будет выбрана за искомую.
Теперь надо напомнить про выбор цвета направления. Этот пункт мало изменился с момента прошлой реализации ([3]), однако изложим его кратко здесь.
Новый вариант дизайна заимствует раскраску от старого (Error: Reference source not found). Правило выбора цвета направления такое: первым назначается зеленый цвет и из 4 областей выбирается та, где этого цвета больше всего. Если зеленого цвета нет или мало (порог выбирается как четверть порога наименьших интересуемых областей из этапа отсечения фона), то назначается следующий цвет красный, если и его мало, то малиновый.
О преобразовании координат. Определение области обработки Задачей нашей системы является получение координат объектов для использования их в навигации и игровых алгоритмах. Причем необходимо, чтобы координаты поля давались не в системе координат изображения камеры, а в реальных координатах поля.
Геометрическая модель камеры описывается своими внутренними, внешними параметрами и коэффициентами дисторсии. Внутренние параметры – это фокусное расстояние камеры, сдвиг центра изображения в пикселях, а также размер эффективного пикселя. Внешние параметры – матрица поворота и вектор трансляции, которые переводят систему координат, связанную с камерой в систему координат, выбранную в качестве внешней глобальной системы координат.
Существует много реализаций точной калибровки камеры с использованием стандартных изображений, показываемых камере в различных положениях. В текущей реализации калибровка проводилась при использовании Matlab Calibration Toolbox [14]. В будущем планируется реализовать калибровку в рамках системы с использованием данных, вычисляемых системой.
Обозначенная выше программа по серии изображений определяет внутренние параметры, коэффициенты дисторсии и внешние параметры для каждого изображения. Далее, используя методы библиотеки OpenCV [12] получается карта преобразования изображения для коррекции дисторсии. Карта - это соответствие координаты пикселя – координаты пикселя, хранимое в памяти компьютера в виде двух массивов размеров изображения (для и для координат в конечной системе). Преобразование происходит так: значения каналов изображения в точке определяются так: , кроме того, значения и могут быть не целыми, и в этом случае может применяться интерполяция по значениям соседних пикселей. Но вычислительные нагрузки не позволяют использовать нам карты с нецелыми значениями и интерполяцию, поэтому вычисленная карта преобразуется в целочисленный формат по методу ближайшего соседа.
С помощью внешних средств мы определяем параметры, зависящие от камеры, но не от положения ее подвеса. Далее, для завершения построения преобразования из координат изображения в реальные координаты, нам необходимо определить внешние параметры камеры, т.е. преобразование к системе, связанной с полем.
В качестве системы, связанной с полем мы используем систему координат, проходящую по длинной стороне поля и границе ворот поля. В качестве центра используется точка пересечения этих прямых.
Нашей задачей является определение координат точек, по которым мы могли бы построить проективное преобразование, переводящее координаты в изображении (после компенсации дисторсии) в координаты поля. Вообще, мы будем находить преобразование, которое будет переводить координаты изображения в координаты плоскости, параллельной плоскости поля, так, чтобы его можно было представить картой преобразования изображения и отобразить на экране изображение в новых координатах, как будто камера не подвержена дисторсии и плоскость проецирования параллельна плоскости поля.
После компенсации дисторсии геометрическая модель камеры сводится к проективному преобразованию. В самом деле (см. [4]), для внутренних параметров, в случае, когда координаты точек в пространстве измеряются в системе координат проходящей через центр линзы:
(1)
Теперь, мы обладаем системой координат с корректным масштабом. Далее мы имеем внешнюю систему координат, в которой и желаем видеть координаты точек изображения. Также мы знаем, что от системы координат, связанной с камерой она отличается трехмерным поворотом и переносом (внешние параметры камеры):
(2)
Где – матрица поворота, – вектор переноса.
Т.е. в результате мы получим проективное преобразование с произвольной матрицей (3)
Рисунок 10. Схема игрового поля с точками калибровки
и найти нам необходимо будет как раз эту матрицу.
Далее, обратимся к рисунку (Рисунок 10), на котором отмечено 12 точек. Задача – положить на стенки, которые имеют практически одинаковые с роботом высоты, квадрат (можно использовать верх робота) таким образом, чтобы центр квадрата лежал в отмеченных точках. Затем будет запущен цикл распознавания и определения координат, который, найдя в положенных точках квадраты, определит их координаты на изображении с учетом компенсации дисторсии. В результате, мы получим 12 пар соответствий координаты изображения – координаты в реальной системе координат. Неизвестными являются три параметра поворота и 3 параметра переноса. Для определения внешних параметров по этим данным в реализации была использована функция библиотеки OpenCV [12].
Далее, нам необходимо изменить размер обозреваемой области, так чтобы выпрямленная область помещалась в размер изображения. Для этого проведем простое преобразование, умножив все координаты на коэффициент. Для вычисления коэффициента возьмем отрезки и (Рисунок 10), обозначенные на рисунке, и разрешение изображения на . Коэффициент будет равен .
Преобразование координат изображения будет иметь вид
(4)
взяты из формулы (3).
Как уже говорилось выше, преобразование будет совершаться над изображением с помощью карты преобразования по формуле:
Мы уже построили карту, задающую преобразование компенсации дисторсии. В эту карту необходимо добавить преобразование, задаваемое формулой (3) и обращением формулы (4). Фактически, если координаты на исходном изображении, координаты на изображении со скомпенсированной дисторсией, а координаты на изображении желаемого формата и – карта для компенсации дисторсии, то для новой карты верно следующее
Вернемся к преобразованию (3). Пусть и строки матрицы , тогда, т.к. из (3) следует, что , то
Т.е. для всех пар необходимо в элемент матрицы с координатами положить значение элемента матрицы с координатами , вычисляемым по этим формулам. Теперь, после инициализации карты, для всех процессов обработки видеоинформации в качестве первого шага добавляется преобразование с помощью подсчитанной карты. А для всех координат найденных объектов для перевода их в реальную систему координат, надо разделить их на (формула (4)).
|