на главную ] 

О задаче поиска объекта на изображении.
Часть 1: Базовые методы.

Евгений Борисов

понедельник, 24 июля 2017 г.

В этой статье привёден обзор методов поиска объекта на изображении.

1. Введение

Множество практических задач от автоматизации контроля на производстве до конструирования роботизированных автомобилей непосредственно связаны с задачей поиска объектов на изображении. Для её решения можно применять две разные стратегии, которые зависят от условий съёмки - моделирование фона и моделирование объекта.

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

Решение задачи с моделированием фона для неподвижной камерой можно найти в [1].

Далее будем рассматривать применение второй стратегии, т.е. моделирование объекта поиска.

2. Обзор методов

В этом разделе мы приведём список подходов, с помощью которых можно успешно решать задачу поиска объекта на изображении, в порядке возрастания сложности.
  1. Цветовые фильтры - если объект существенно выделяется на фоне по цвету, то можно подобрать соответствующий фильтр.
  2. Выделение и анализ контуров - если мы знаем, что объект имеет форму, например, круга, то можно поискать окружности на изображении.
  3. Сопоставление с шаблоном - у нас есть изображение объекта, ищем в другом изображении области совпадающие с этим изображением объекта.
  4. Работа с особыми точками - на картинке с объектом ищем особенности (например углы), которые пытаемся сопоставить с такими особенностями на другом изображении.
  5. Методы машинного обучения - обучаем классификатор на картинках с объектом, некоторым способом разделяем изображение на части, проверяем классификатором каждую часть на наличие объекта.
Далее мы рассмотрим эти методы подробней.


3. Цветовые фильтры

Метод цветовых фильтров можно применять в случаях, когда объект существенно отличаться от фона по цвету и освещение равномерно и не изменяется.


Рис.2: подбор параметров фильтра (красный)

Рис.3: результат работы детектора (красный)

Подробней о методе цветовых фильтров можно почитать в [2].


4. Выделение и анализ контуров

Если объект на фоне по цвету существенным образом не выделяется и/или имеет сложную раскраску, то применение метода цветовых фильтров не даст хороших результатов.

В этом случае можно попробовать применить метод выделения и анализа контуров. Для этого мы выделяем границы на изображении. Границы это места резкого изменения градиента яркости, их можно найти с помощью метода Canny [3]. Далее мы можем проверить выделенные линии-границы на соответствие геометрическим контурам объекта, это можно сделать применив метод Хафа (Hough Transform) [3], например мы можем поискать в границах окружности.

HoughCircles 0 HoughCircles 1
HoughCircles 2 HoughCircles 3
Рис.4:поиск окружностей

Этот метод также можно применять совместно с цветовыми фильтрами. Подробней о выделении и анализе контуров можно почитать в [2].

Исходный код примера c поиском окружностей можно скачать [ здесь].

5. Сопоставление с шаблоном

Если изображение имеет множество мелких деталей то анализ контуров может быть затруднён. В этом случае можно применить метод сопоставления с шаблоном (template matching). Он заключается в следующем - берем картинку с объектом (рис.5) и ищем на большом изображении области совпадающие с изображением объекта (рис.6,7).

template matching example 1
Рис 5: объект для поиска

template matching example 2
Рис.6: исходное изображение
template matching example 3
Рис.7: результат поиска

Подробней о методе сопоставления с шаблоном можно послушать лекцию [4].

Исходный код примера можно скачать [ здесь].


6. Работа с особыми точками

Метод сопоставления с шаблоном, описанный в предыдущем разделе, ищет точные совпадения точек шаблона с точками изображения. Если изображение повёрнуто или масштабировано относительно параметров шаблона то этот метод работает плохо. Для преодоления этих ограничений применяют методы основанные на т.н. особых точках, их мы рассмотрим далее.

Особая точка (key point) это небольшая область, которая существенным образом выделяется на изображении. Существует несколько методов определения таких точек, это могут быть углы (Harris corner detector)[5] или блобы (blob, капля) [6], т.е. небольшие области одинаковой яркости, достаточно чёткой границей, выделяющиеся на общем фоне.

Для особой точки вычисляют т.н. дескриптор - характеристику особой точки. Дескриптор вычисляют по заданной окрестности особой точки, как направления градиентов яркости разных частей этой окрестности. Существует несколько методов расчёта дескрипторов для особых точек: SIFT, SURF, ORB и др. Надо отметить, что некоторые методы расчёта дескрипторов являются запатентованными (например SIFT) и их коммерческое использование ограничено. Подробней про особые точки на изображениях и методах работы с ними можно послушать лекцию [7].

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

  1. На картинке с объектом ищем особые точки объекта и вычисляем их дескрипторы.
  2. На анализируемом изображении тоже ищем особые точки и вычисляем для них дескрипторы.
  3. Сравниваем дескрипторы особых точек объекта и дескрипторы особых точек, найденных на изображении.
  4. Если найдено достаточное количество соответствий то помечаем область с соответствующими точками.
Ниже на рис.8 представлены результаты работы метода поиска объекта по особым точкам.

sift
Рис 8: детектор объектов по особым точкам

Исходный код примера можно скачать [ здесь].

7. Методы машинного обучения

Метод поиска объектов путём сравнение наборов особых точек имеет свои недостатки, один из них это плохая обобщающая способность.

Если у нас стоит задача, например, выделения лиц людей на фото, то по особым точкам наш метод будет искать одну конкретную фотографию. Ту фотографию, на которой были выделены особые точки, остальные лица будут выделятся хуже, потому как им, скорее всего, соответствуют другие наборы особых точек. Результаты могут быть ещё хуже если изменить ракурс съемки.

Для решения этих проблем нам уже необходимы методы машинного обучения и не одна картинка с объектом но целые учебные наборы из сотен (а в некоторых случаях - сотен тысяч) разных картинок с изображением объекта в разных условиях.

Применение методов машинного обучения для поиска объектов на изображении мы рассмотрим во второй части этой статьи.


Литература

  1. Е.С.Борисов Детектор объектов для неподвижных камер.
    - http://mechanoid.kiev.ua/cv-backgr.html
  2. Е.С.Борисов Обработка видео: детектор объектов на основе цветовых фильтров.
    - http://mechanoid.kiev.ua/cv-detector-color.html
  3. Е.С.Борисов Базовые методы обработки изображений.
    - http://mechanoid.kiev.ua/cv-base.html
  4. Антон Конушин Компьютерное зрение (2011). Лекция 3. Простые методы анализа изображений. Сопоставление шаблонов.
    - http://www.youtube.com/watch?v=TE99wDbRrUI
  5. OpenCV documentation: Harris Corner Detection
    - http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_features_harris/py_features_harris.html
  6. Wikipedia: Blob_detection
    - http://en.wikipedia.org/wiki/Blob_detection
  7. Антон Конушин Компьютерное зрение (2011). Лекция 5. Локальные особенности
    - http://www.youtube.com/watch?v=vFseUICis-s
При использовании материалов этого сайта, пожалуйста вставляйте в свой текст ссылку на мою статью.