Skip to content

kivirciks/object_detection

Repository files navigation

Детектирование изображений

Входящие файлы

  • 4140_CV_ЛР2_Строкова.ipynb - ноутбук с программным кодом на Python;
  • 4140_CV_ЛР2_Строкова.pdf - текстовый отчет;
  • Каталог "Изображения" - исходные и итоговые изображения.

    Постановка задачи

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

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

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

    Задачи:
  • реализовать алгоритм прямого поиска одного изображения на другом (template matching);
  • реализовать алгоритм поиска ключевых точек эталона на входном изображении (ORB).

    Теоретическая база

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

    В данной работе будет реализован алгоритм детекции объектов. Программный код написан в Google Collaboratory на языке Python.

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

    Существует несколько методов matching template, в данной работе использовался cv.TM_CCOEFF (находятся глобальные максимумы с помощью функции minMaxLoc). Отмечу, что на вход может подаваться как черно-белое, так и цветное изображение, однако на выходе оно все равно преобразуется в одноканальное. Во второй половине работы опробован алгоритм ORB (Oriented FAST and Rotated BRIEF).

    Алгоритм работает следующим образом:
  • Особые точки обнаруживаются при помощи быстрого древовидного FAST (сравнивается яркость пикселей вокруг выбранной точки) на исходном изображении и на уменьшенном.
  • Для обнаруженных точек вычисляется мера Харриса, кандидаты с низким значением меры Харриса отбрасываются.
  • Вычисляется угол ориентации особой точки, на основе которого последовательность точек для бинарных сравнений в дескрипторе BRIEF поворачивается.
  • По полученным точкам вычисляется бинарный дескриптор BRIEF (набор признаков, который характеризует окрестность каждой особой точки).

    Прямой поиск одного изображения на другом (Template Matching)

    Для осуществления Template Matching считаем исходное изображение и вырезанный фрагмент, найдем объект, затем выведем итоговые изображения.

    Поиск ключевых точек эталона

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

    Выводы по работе

    Проведено детектирование объекта на изображении двумя разными методами: методом прямого поиска (matching template) и методом поиска ключевых точек эталона (с помощью метода ORB).

    На вход подавались 10 + 1 фотографий, сделанных с разных ракурсов. Также в предпоследнем изображении был выключен искусственный свет, а в последнем – вручную сделана обработка изображения (изменен контраст, насыщенность, яркость цвета). На выходе алгоритм выдавал рамку вокруг детектированного изображения. Можно заметить, что прямой поиск изображения дает лучшие результаты.

    Составим сравнительную таблицу, чтобы подтвердить гипотезу о лучшей работе прямого поиска. Будем использовать трех бальную шкалу, где 2 – объект полностью помещен в рамку, 1 – объект частично помещен в рамку (обрезана часть детектируемого изображения, очень большие «лишние» поля вокруг), 0 – изображение не найдено или очень большие границы рамки.

    Положение объекта Template Matching ORB
    0 Исходное изображение 2 1
    1 Снизу справа 2 0
    2 Сверху справа 2 0
    3 Сверху слева 2 1
    4 Снизу слева 2 1
    5 Вид сверху 1 0
    6 Вид с правого бока 2 1
    7 Вид с левого бока 2 1
    8 Вид снизу 1 2
    9 Вечернее освещение 2 1
    10 Ручное изменение цвета 2 1
    Сумма 20 9
    Таким образом, мы видим, что прямой поиск дает результат лучше, чем метод эталонных точек через ORB. Освещение и ручное изменение цветов на фотографиях на результат не повлияли.
  • About

    Лабораторная работа №2

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published