Введение
Отличительная черта компьютерного зрения — это извлечение полезной и важной для нас информации из изображений или последовательности изображений. Компьютерное зрение сосредотачивается на обработке трех-мерных сцен, спроектированных на одно или несколько изображений. По одному или нескольким изображениям можно восстановить структуру или другую информацию о трехмерной сцене. Области применения компьютерного зрения необычайно широк: системы управления процессами (промышленные роботы, автономные транспортные средства), системы видеонаблюдения, системы организации информации (например, для индексации баз данных изображений), системы моделирования объектов или окружающей среды (анализ медицинских изображений, топографическое моделирование), системы взаимодействия (например, устройства ввода для системы человеко-машинного взаимодействия).
Для многих роботизированных систем необходимо обладать достаточными сведениями об окружающей области. На основе этой информации робот выбирает модель поведения. Таким образом, здесь используется информация о структуре окружающих объектов и отслеживается их движение, что позволяет роботу стабильно работать в условиях динамически меняющейся среды.
Главной задачей системы управления движением является планирование перемещений робота к некоторой целевой точке с учетом различных факторов. Информация об этих факторах содержится в видеопотоке, получаемом с камеры, расположенной на мобильной платформе. Значит, важно извлечь информацию из изображений. Для этого необходимо распознать образы окружающих предметов. А затем, система управления роботом может на основе этих данных, корректно сформировать целесообразное поведение робота, для выполнения поставленной задачи.
Постановка задачи
Необходимо разработать программное обеспечение и общие алгоритмы функционирования программно-аппаратного комплекса для распознавания объектов окружающей среды.
Методы исследования
Для решения поставленных задач используются методы теории, методы обработки цифровых изображений, теории нейронных сетей.
Программа, реализующая алгоритм, написана на языках C# и С++ с использованием библиотеки OpenCv.
Распознавание образов окружающих объектов внешней среды
Представим структуру системы для распознавания образов. Данная система обработки производит обработку и анализ изображений, поступающие от оптико-электронных систем. Учитывая характер решаемых задач, необходимо учесть следующие ограничения и особенности:
1) Информация о характеристиках фона и наблюдаемых объектов чаще всего содержит неточные размеры объектов или вовсе отсутствует.
2) В связи с ограниченностью времени на принятие решений и наличием замкнутого контура управления движением обработка, анализ и распознавание должны выполняться в реальном времени.
3) Работа системы управления, слежения и обработки должна проводиться при минимальном участии человека или в автономном режиме.
В сложных условиях, улучшить качество сигнала и результата наблюдения можно с помощью алгоритмов оценивания параметров геометрических преобразований изображений и методов пространственно-временной фильтрации. Среди них можно выделить четыре основных метода.
1. Для измерения положения неподвижных и движущихся объектов, наблюдаемых на однородном и неоднородном фоне используются методы на основе сравнения с эталоном.
2. Используя информацию о статистических свойствах объекта и фона можно выделять движущиеся и неподвижные объекты, наблюдаемые на сравнительно однородном фоне. Такие методы называются методы статистической сегментации.
3. При обнаружении объектов на фоне ясного или облачного неба максимальную эффективность показывают методы выделения объектов с помощью пространственной фильтрации. Данные методы используют операции линейной и нелинейной пространственной фильтрации изображений.
4. Методы выделения динамических изменений основаны на выделении изменений, происходящих с течением времени в наблюдаемой группе изображений. Такие методы применяются при решении задачи выделения движущихся объектов.
На рисунке 1 представлена структура системы обнаружения объектов, которая включает перечисленные выше концепции.
Рис. 1. Структура программно-алгоритмического обеспечения оптико-электронной системы обнаружения объектов.
Реализация алгоритма распознавания объектов внешней среды
В процессе функционирования робототехнической системы получается поток изображений, содержащий большое количество информации об окружающем мире. Однако перед выделением необходимой информации из изображений, их предварительно необходимо обработать.
В процессе предварительной подготовки над видеоизображением производятся следующие операции:
- преобразование цветного 4-канального изображения в черно-белое одноканальное;
- цифровая коррекция аберрации объектива телекамеры;
- фильтрация видеоизображения.
Решаться эти задачи должны в реальном времени при наличии ограничений на вычислительные ресурсы.
Захват видеоизображения. Преобразование цветного изображения в черно — белое. При ограниченных вычислительных ресурсах важно выбрать допустимый размер видеоизображения в пикселях, а также для хранения в памяти организовать структуру данных, которая бы обеспечивала быстрый доступ к изображению и удобную работы с ним. Для этого в библиотеке OpenCV есть специальный тип данных — структура IplImage. По сути это матрица интерпретированная как изображение.
Для решения задач обнаружения препятствий и распознавания образов необходимо наличие неискаженного изображения. Однако большинство объективов телекамер обладают искажающим эффектом (аберрацией). Объективы, в которых полностью устранена аберрация, обладают высокой стоимостью и большими массогабаритными характеристиками.
Для устранения аберрации объектива телекамеры предлагается использование алгоритма цифровой коррекции искажений на видеоизображении. Необходимым требованием к этим алгоритмам является достижение максимального быстродействия.
OpenCV предоставляет нам готовый к использованию алгоритм исправления искажений (undistortion), который принимает сырые изображения и коэффициенты искажения из cvCalibrateCamera2() и создает исправленное изображение.
При построении интеллектуального мобильного робота с высокой степенью интеллектуальности необходима такая система распознавания образов, которая позволила бы не только распознавать известные ей образы, но и обучаться новым.
Рассмотрим общий алгоритм распознавания
Общая последовательность действия при распознавании выглядит так:
- Предварительная обработка изображения — сглаживание, фильтрация помех, повышение контраста.
- Бинаризация изображения и выделение контуров объектов.
- Начальная фильтрация контуров по периметру, площади, коэффициенту формы.
- Приведение контуров к единой длине, сглаживание.
- Перебор всех найденных контуров, поиск шаблона, максимально похожего на данный контур.
Библиотека OpenCV предоставляет возможность разработчикам легко детектировать контуры изображения и манипулировать ими. Для поиска контуров предлагается использовать функцию cvFindContours().
Функция cvFindContours отыскивает контуры от монохромного изображения и возвращает число найденных контуров.
После того, как контуры обнаружены — их можно вывести в изображению с помощью функции cvDrawContours().
Для сглаживания и получения более аккуратных контуров можно воспользоваться функцией cvApproxPoly().
Когда камера движется на каком-либо объекте, то важно определить направление движения. В этом случае можно использовать следующую функцию в OpenCV — phaseCorrelate.
Функция используется для определения сдвигов между двумя изображениями (массивами).
Покажем работы алгоритма перевода изображения в экранные образы:
Рис. 2. Результат работы алгоритма перевода изображения в экранные образы.
Литература:
1. Юревич Е. И. Основы робототехники. — СПб.: БХВ-Петербург, 2007. — 416 с.
2. Bradsky G., Kaehler A. Learning OpenCV — O’Reilly, 2008. — 556 с.