вторник, 17 июня 2008 г.

Роботы и обработка изображений

О машинном зрении я ранее "заикался" в статьях про RoboRealm и про робот-калькулятор.

В продолжение этой темы, хочу рассказать немного теории, уверен, многим будет полезно. Обещаю: буду стараться излагать кратко и без занудства :)

Для начала отмечу, что любительская робототехника (где для распознавания почти всегда используются веб-камеры, или даже камеры мобильных телефонов), является достаточно сложной сферой для применения алгоритмов распознавания изображений. Это обусловлено следующими основными проблемами:

  1. Изображения с веб-камер изобилуют шумами
  2. И не обеспечивают достаточной для уверенного распознавания разрешающей способности
  3. Почти всегда присутствует сложный фон, обусловленный пребыванием робота в заставленной квартире, или на оживленной улице
  4. Требуемая освещенность, достаточная для распознавания, часто недостижима
  5. Объекты представлены в самых разных расцветках, проекциях, вариациях и модификациях

Однако, ограниченные задачи распознавание в робототехнике решать может вполне. Например, робот сможет иногда опознать, когда ему улыбаются; скорее всего сможет объехать большинство стульев в Вашей квартире; увидит специально оборудованное место для зарядки; и т.д. Поэтому, рассмотрим-ка, господа, технику обработки изображения. Обычно обработка проводится в три этапа (в скобках после названия этапа приводятся его альтернативные названия):

  1. Предобработка: избавление от шума. Часто является встроенной возможностью фото- или видеокамеры.
  2. Сегментация (индексация, выделение характеристик): процесс поиска однородных частей на изображении. В основном однородность определяется либо по яркости, либо по типу текстур. Иногда также используются методы поиска границ внутри изображения. После сегментации изображений, возникающие помехи (неверно определенные области, слишком маленькие области и т.п.) удаляют с помощью графических фильтров.
  3. Распознавание (классификация, принятие решения): это конечный этап обработки, сверяющий тем или иным методом изображение и его части с образцами, которые требуется распознать.

Рассмотрим подробно процесс распознавания...

Существует четыре основных и общепризнанных (насколько я знаю) подхода к распознаванию образов:

  1. Сравнение с образцом (корреляция): подход основан на геометрической нормализации изображения, и вычислении "расстояния" получившейся нормализации до прототипа.
  2. Статистические методы (признаковые): сводятся к выделению "признаков" изображения (например, количество изломов линий, средняя длина линий, средняя площадь однородной области, и т.п.). Затем, производится сравнение этих признаков с известными статистическими распределениями этих же признаков в образцах (понятно, что в таком случае образцов одного и того же объекта должно существовать достаточно большое число). Таким образом, подбирается наиболее близкий прототип для изображения.
  3. Нейронные сети: выбирается тип искусственной нейронной сети, и проводится ее обучение по известным образцам.
  4. Структурные и синтаксические методы: образец разбирается на более простые элементы, и строится правило зависимости от вхождения/не вхождения того или иного элемента или последовательностей. Затем те же элементы ищутся в изображении, и применяются ранее выделенные правила.

Напоследок - несколько комментариев:

  • В силу особенностей современной электронной базы, нейронные сети для своей работы могут потребовать слишком много времени и оказаться по этому параметру неэффективными для применения в роботах. Причем, проблема может возникнуть как при обучении сети, так и при непосредственно распознавании. Насколько мне известно, в современных задачах именно распознавания изображений - нейронные сети применяются сравнительно редко.
  • Cравнение с образцом - тоже очень трудоемкий с точки зрения вычислений метод. Используются сложные математические преобразования.
  • Второй и четвертый подходы имеют немало сходства, поэтому иногда их объединяют в одну группу.
  • Не обязательно использование только одного подхода. Подходы могут применяться последовательно. Чаще всего сначала с помощью "быстрых" методов отсекается большая часть изображений, а затем к оставшимся применяются "медленные" (трудоемкие) методы.

P.S. Я прекрасно понимаю, что обзор не совсем полон. Возможно, стоило бы также упомянуть, например, о нормализации изображений, более подробно рассмотреть методы сегментации, и т.д. Однако, насколько мне известно, многие из моих читателей - студенты. Студентам же, что общеизвестно, теория не слишком нравится. Так что, я немножко изложение сократил :)

1 комментарий:

  1. эх это все хорошо. Я в интернете уже 2 день ищу реализации определения объекта и не найти =(

    ОтветитьУдалить

Внимание! Реклама и прочий спам будут беспощадно удаляться.