на главную ] 

О задаче поиска объекта на изображении.

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

вторник, 20 июня 2017 г.

В этой статье мы поговорим о способах поиска объекта на картинке средствами OpenCV.

1. Введение

Множество практических задач от автоматизации контроля на производстве до конструирования роботизированных автомобилей непосредственно связаны с задачей поиска (локализации) объекта на изображении.

В зависимости от условий съёмки можно использовать два основных подхода.

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


    Рис.1: Смесь гауссиан в качестве модели фона

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

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

Далее рассмотрим некоторые решения задачи локализации объекта на изображении для подвижной камеры.

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

Идея метода состоит в следующем, на картинке с объектом и большом изображении ищем особые точки [5], для каждой точки по её окрестности вычисляем признаки (SIFT), далее сопоставляем точки из двух найденных наборов и ищем совпадения.

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

Подробней про особые точки на изображениях и методах работы с ними можно послушать лекцию [5].

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

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

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

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

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

Для, упомянутой выше, задачи выделения лиц людей на фото можно применять детектор Виолы-Джонса [6], который основан на методе AdaBoost [7].

viola-jones face detector

Рис.8: результат работы детектора лиц Виолы-Джонса

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

Для улучшения результатов можно использовать классификатор изображений на основе свёрточной сети [8].


Литература

  1. Е.С.Борисов Детектор объектов для неподвижных камер.
    - http://mechanoid.kiev.ua/cv-backgr.html
  2. Е.С.Борисов Обработка видео: детектор объектов на основе цветовых фильтров.
    - http://mechanoid.kiev.ua/cv-detector-color.html
  3. Антон Конушин Компьютерное зрение (2011). Лекция 3. Простые методы анализа изображений. Сопоставление шаблонов.
    - https://www.youtube.com/watch?v=TE99wDbRrUI
  4. Е.С.Борисов Базовые методы обработки изображений.
    - https://mechanoid.kiev.ua/cv-base.html
  5. Компьютерное зрение (2011). Лекция 5. Локальные особенности
    - https://www.youtube.com/watch?v=vFseUICis-s
  6. P.Viola,M.Jones Robust Real-Time Face Detection
    - https://www.vision.caltech.edu/html-files/EE148-2005-Spring/pprs/viola04ijcv.pdf
  7. Е.С.Борисов Бустинг - композиции классификаторов
    - http://mechanoid.kiev.ua/ml-adaboost.html
  8. Е.С.Борисов Классификатор изображений на основе свёрточной сети.
    - http://mechanoid.kiev.ua/ml-lenet.html
Яндекс.Метрика
TOP.zp.ua PR-CY.ru
При использовании материалов этого сайта, пожалуйста вставляйте в свой текст ссылку на мою статью.