Научная статья на тему 'ОБНАРУЖЕНИЕ ДВИЖУЩИХСЯ ОБЪЕКТОВ С ПОМОЩЬЮ КОМПЬЮТЕРНОГО ЗРЕНИЯ И БИБЛИОТЕКИ OPENCV'

ОБНАРУЖЕНИЕ ДВИЖУЩИХСЯ ОБЪЕКТОВ С ПОМОЩЬЮ КОМПЬЮТЕРНОГО ЗРЕНИЯ И БИБЛИОТЕКИ OPENCV Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
202
34
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
КОМПЬЮТЕРНОЕ ЗРЕНИЕ / АЛГОРИТМ ВЫЧИТАНИЯ ЗАДНЕГО ПЛАНА

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Ледяев В.П.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Ледяев В.П.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

DETECTING MOVING OBJECTS WITH COMPUTER VISION AND OPENCV LIBRARY

The method of detecting moving objects, based on computer vision technology using the background subtraction algorithm is reviewed in the article

Текст научной работы на тему «ОБНАРУЖЕНИЕ ДВИЖУЩИХСЯ ОБЪЕКТОВ С ПОМОЩЬЮ КОМПЬЮТЕРНОГО ЗРЕНИЯ И БИБЛИОТЕКИ OPENCV»

УДК 004.93'1

Ледяев В.П. магистрант

факультет "Компьютерные системы и сети" Белорусский государственный университет информатики и радиоэлектроники Беларусь, г. Минск ОБНАРУЖЕНИЕ ДВИЖУЩИХСЯ ОБЪЕКТОВ С ПОМОЩЬЮ КОМПЬЮТЕРНОГО ЗРЕНИЯ И БИБЛИОТЕКИ OPENCV

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

Ключевые слова: компьютерное зрение, алгоритм вычитания заднего плана, OpenCV

Ledyaev V. candidate for a master's degree Faculty of Computer Systems and Networks Belarussian State University of Informatics and Radioelectronics

Belarus, Minsk

DETECTING MOVING OBJECTS WITH COMPUTER VISION AND OPENCV LIBRARY

The method of detecting moving objects, based on computer vision technology using the background subtraction algorithm is reviewed in the article

Keywords: computer vision, background subtraction algorithm, OpenCV

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

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

Для этого будет использован язык программирования Python и библиотека OpenCV с достаточно простой идеей определения движения с помощью алгоритма вычитания заднего плана (background subtraction).

Работа состоит из нескольких этапов:

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

2. Рассмотрения алгоритмов библиотеки OpenCV

3. Рассмотрение фильтров изображений бибилиотеки OpenCV

Алгоритмы вычитания заднего плана

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

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

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

Для примера можно рассмотреть видео с камеры наблюдения жилой комнаты. В момент, когда в комнате никого нет, изображение на видео не меняется от кадра к кадру, оно статично. Назовем такое изображение задний план или background_layer. Таким образом для того, чтобы получить объекты, которые двигаются на изображении (foreground_objects) нужно взять разницу текущего кадра (сштепМтате) и заднего плана:

foreground_objects = current_frame - background_layer На картинке можно увидеть принцип работы данных алгоритмов.

currentframe

THRESHOLD

foreground mask

background model

В некоторых случаях, тяжело получить статическое изображение из-за изменения света, изменений положения одного объекта другим, изменений положения камеры и др. В таких случаях нужно сохранять какое-то количество кадров и пытаться выяснить, какие пиксели не изменяются от кадра к кадру, чтобы затем сделать их частью заднего плана. Ситуация усложняется, при появлении тени объектов. Так как тень движется вместе с объектом, то при простом вычитании тень также определится, как объект переднего плана.

Алгоритмы библиотеки OpenCV

Для решения данной задачи в библиотеке ОрепСУ было реализовано три алгоритма.

BackgroundSubtractorMOG - это реализация алгоритма представления модели фона смесью Гауссовых распределений. Используется метод для моделирования каждого фонового пикселя смесью К гауссовых распределений (К= 3-5). Веса смесей представляют временные пропорции, в течении которых их цвета оставались неизменными. Вероятные цвета фона -те цвета, которые более продолжительны по времени и более статичны.

BackgroundSubtractorMOG2 - улучшение предыдущего алгоритма. Одна важная особенность этого алгоритма в том, что он выбирает подходящее число Гауссовых распределений на каждый пиксель. Это

предоставляет лучшую адаптацию к изменениям освещения. Также в данной реализации есть возможность определения и отделения теней на изображениях.

BackgroundSubtractorGMG - данный алгоритм сочетает статистическую оценку фона изображения с попиксельной Байесовской сегментацией

Результат работы данных алгоритмов представлен ниже.

Оригинал:

BackgroundSubtractorMOG: BackgroundSubtractorMOG2: BackgroundSubtractorGMG:

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

Фильтры изображений OpenCV Фильтры, предоставляемые библиотекой OpenCV значительно помогают избавиться от шума на изображениях. Рассмотрим каждый фильтр в отдельности.

Фильтр closing полезен при закрытии небольших отверстий внутри объектов переднего плана или небольших черных точек на объекте:

ф •

Фильтр opening используется для уменьшения шума рядом с объектом:

Фильтр dilation используется для увеличения объектов, что способствует объединению разорванных частей объекта:

Функция, используемая для фильтрации:

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))

# Заполняем маленькие промежутки

closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

# Убираем шум

opening = cv2.morphologyEx(closing, cv2.MORPH_OPEN, kernel)

# Объединяем объекты

dilation = cv2.dilate(opening, kernel, iterations=5) dilation

Результат:

i

i

н

Заключение

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

Использованные источники:

1. https://en.wikipedia.org/wiki/Background subtraction

2. https://docs.opencv.org/3.2.0/d 1 /dc5/tutorial background subtraction.html

3. https://medium.com/machine-learning-world/tutorial-making-road-trafflc-counting-app-based-on-computer-vision-and-opencv-166937911660

4. https://www.pyimagesearch.com/2015/11/09/pedestrian-detection-opencv/

а

i Надоели баннеры? Вы всегда можете отключить рекламу.