Добавил:
У меня есть канал с приколами: t.me/urmipies_garbage Подпишитесь пж-пж!!!! Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Я получил 5 за защиту кста.docx
Скачиваний:
0
Добавлен:
02.09.2026
Размер:
352 Кб
Скачать

1.3 Алгоритмы вычитания фона в OpenCv

Библиотека компьютерного зрения OpenCV предоставляет несколько реализаций вычитания фона. Для данной работы наиболее актуальны два алгоритма: MOG2 (Mixture of Gaussians, версия 2) и KNN (K-Nearest Neighbors) [4].

Алгоритм MOG2 был предложен Зивковичем и ван дер Хейденом и развивает классический метод смеси гауссиан [1]. Для каждого пикселя строится модель, состоящая из K гауссовых распределений (обычно K = 3…5), каждое из которых характеризуется весом w_i, средним значением μ_i и дисперсией σ_i². Вероятность наблюдения значения пикселя x вычисляется как взвешенная сумма гауссиан:

P(x) = Σᵢ w_i · η(x | μ_i, σ_i) (1.1)

где η — функция плотности нормального распределения.

При поступлении нового кадра значение пикселя сравнивается с существующими гауссианами. Если значение попадает в интервал |x - μ_i| < 2.5σ_i, соответствующая гауссиана обновляется: её вес увеличивается, среднее и дисперсия сдвигаются в сторону нового значения по правилу скользящего среднего. Если совпадений нет, гауссиана с наименьшим весом заменяется новой со средним, равным текущему значению, высокой дисперсией и малым весом.

Гауссианы сортируются по отношению w_i/σ_i. Считается, что первые B гауссиан, сумма весов которых превышает порог T (обычно T = 0.7), описывают фон. Остальные гауссианы соответствуют переднему плану. Такой подход позволяет моделировать мультимодальные фоны — например, колышущиеся ветки деревьев или мерцающий монитор.

Дополнительным преимуществом MOG2 является встроенный механизм обнаружения теней. Тени классифицируются по признаку того, что они затемняют фон, но сохраняют его цветовую текстуру. Пиксель, идентифицированный как тень, не включается в маску переднего плана, что критически важно для задач стереозрения — тень в левой и правой камерах смещена по-разному, что может привести к ложной диспаратности [15].

Алгоритм KNN (K-Nearest Neighbors) использует иной подход. Для каждого пикселя сохраняется история его последних N значений (обычно N = 20…50) в цветовом пространстве. При классификации текущего значения подсчитывается, сколько исторических образцов находятся на расстоянии меньше порога d по метрике RGB или LAB. Если количество «близких» образцов превышает K (обычно K = 2…4), пиксель относится к фону, иначе — к переднему плану. KNN демонстрирует более высокую точность на сценах с быстрыми изменениями освещения, но требует больше памяти из-за хранения истории каждого пикселя.

Сравнение алгоритмов применительно к задаче стереопозиционирования представлено в таблице 1.1.

Таблица 1.1 - Сравнение алгоритмов применительно к задаче стереопозиционирования

Критерий

MOG2

KNN

Скорость обработки

8-10мс

12-15мс

Потребление памяти

низкое

среднее

Обнаружение теней

Да (встроено)

Нет (требуется постобработка)

Устойчивость к быстрым изменениям освещения

Средняя

Высокая

Сложность настройки

Параметров больше

Параметров меньше

В контексте трёхмерного позиционирования на основе стереопары вычитание фона выполняется независимо для левого и правого каналов. Это порождает несколько важных особенностей.

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

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

  3. После получения бинарных масок переднего плана производится поиск контуров (cv2.findContours) и выделение наибольшего связного компонента. Центр масс этого компонента вычисляется как среднее арифметическое координат всех входящих в него пикселей:

  4. u_center = (Σ u_i) / N, v_center = (Σ v_i) / N,

  5. где N — количество пикселей в контуре. Такой подход устойчив к небольшим разрывам в маске, которые могут возникнуть из-за шумов или неидеального вычитания фона. Полученные координаты (u_L, v_L) и (u_R, v_R) затем используются в модуле триангуляции для вычисления трёхмерных координат объекта.

Вычитание фона имеет ограничения: метод не работает, если объект неподвижен относительно сцены (он «сливается» с фоном), а также чувствителен к резким скачкам освещения. Для преодоления этих ограничений в данной работе предусмотрено периодическое принудительное переобучение модели фона по команде оператора, а также адаптивная регулировка порога τ в зависимости от глобальной яркости сцены. Тем не менее, для задачи позиционирования движущегося объекта в контролируемых условиях (производственная линия, складской робот) вычитание фона остаётся оптимальным выбором.

Соседние файлы в предмете Дипломная работа (подготовка и защита)