- •Аннотация
- •Содержание
- •Введение
- •1. Анализ предметной области
- •1.1 Принципы построения систем трехмерного позиционирования на базе двух камер
- •1.2 Обнаружение движущихся объектов
- •1.3 Алгоритмы вычитания фона в OpenCv
- •1.4 Геометрическая модель простой триангуляции в стереосистеме
- •1.5 Особенности получения и синхронизации видеопотоков в ip-сетях
- •1.6 Требования к системе
- •Выводы по первому разделу
- •2. Выбор средств разработки
- •2.1 Выбор языка программирования для серверной части
- •2.2 Библиотеки компьютерного зрения
- •2.3 Протоколы обмена: WebSocket и json
- •Выводы по второму разделу
- •3. Моделирование системы
- •3.1 Архитектура системы
- •3.2 Среда виртуализации стереопары
- •3.3 Модель вычитания фона для стереопары
- •3.4 Архитектура двухканального вычитания фона
- •3.8 Вычисление центра ограничивающего квадрата
- •3.9 Адаптивное управление параметрами
- •3.10 Математическая модель простой триангуляции
- •3.11 Математическая модель простой триангуляции
- •3.12 Модель данных
- •Выводы по третьему разделу
- •4. Разработка приложения
- •4.1 Структура проекта
- •4.2 Реализация модуля захвата видеопотоков
- •4.3 Реализация вычитания фона и детекции объекта
- •4.4 Реализация триангуляции
- •4.5 Реализация клиента визуализации
- •4.6 Тестирование
- •Выводы по четвёртому разделу
- •Заключение
- •Список использованных источников
3.3 Модель вычитания фона для стереопары
В разрабатываемой системе трёхмерного позиционирования вычитание фона выполняет функцию детектора движущегося объекта. В отличие от сценариев монокулярного видеонаблюдения, где достаточно получить бинарную маску переднего плана, в стереосистеме возникает дополнительное требование: выделенные в левом и правом кадрах объекты должны соответствовать одному и тому же физическому телу в пространстве. Это накладывает ограничения на архитектуру модуля вычитания фона и способ постобработки масок.
3.4 Архитектура двухканального вычитания фона
Модель вычитания фона для стереопары строится как два независимых, но структурно идентичных канала обработки. Каждый канал включает следующие компоненты, применяемые последовательно к кадру:
Модель фона - статистическое описание статической сцены для конкретной камеры.
Классификатор пикселей - правило отнесения текущего значения к фону или переднему плану.
Постобработка маски - морфологические операции для удаления шумов и заполнения разрывов.
Выделение объекта - поиск контуров и вычисление центра ограничивающего квадрата.
Независимость каналов обусловлена тем, что левая и правая камеры имеют разные перспективы. Даже при идентичных оптических характеристиках и строгой параллельности оптических осей краевые области сцены, видимые только одной камерой, создают асимметрию фона. Источники шума (блики, тени от посторонних объектов) в каждой камере некоррелированы. Объединение каналов на раннем этапе привело бы к смешению разнородных статистических данных и снижению точности.
Формально, пусть левая камера в момент времени t формирует изображение с интенсивностью пикселя в координатах (u, v), обозначаемой как I_L(u, v, t). Аналогично для правой камеры — I_R(u, v, t). Для каждой камеры существует своя фоновая модель, обозначаемая B_L(u, v, t) для левой и B_R(u, v, t) для правой. Тогда маска переднего плана для левой камеры, обозначаемая F_L(u, v, t), равна единице (пиксель принадлежит объекту), если абсолютная разность между текущим значением пикселя и фоновой моделью превышает пороговое значение tau_L. В противном случае маска равна нулю. Аналогичное выражение записывается для правой камеры с порогом.
3.8 Вычисление центра ограничивающего квадрата
В данной системе координаты объекта определяются не как центр масс контура, а как центр ограничивающего прямоугольника. Ограничивающий прямоугольник — это наименьший прямоугольник, стороны которого параллельны осям изображения, полностью вмещающий контур объекта.
Для вычисления такого прямоугольника необходимо найти четыре величины: минимальную координату u среди всех пикселей контура (самый левый пиксель), максимальную координату u (самый правый пиксель), минимальную координату v (самый верхний пиксель) и максимальную координату v (самый нижний пиксель). Эти четыре числа определяют положение и размер прямоугольника.
Центр ограничивающего прямоугольника вычисляется как среднее арифметическое между минимальной и максимальной координатой по оси u (для получения горизонтальной координаты центра) и аналогично по оси v (для получения вертикальной координаты центра). Иными словами, горизонтальная координата центра u_center равна сумме u_min и u_max, делённой на два. Вертикальная координата v_center равна сумме v_min и v_max, делённой на два.
Выбор центра прямоугольника вместо центра масс обоснован следующими преимуществами. Во-первых, устойчивость к разрывам маски: если внутри контура есть небольшие отверстия (например, из-за плохого вычитания фона или текстуры объекта), центр масс может сместиться, тогда как центр прямоугольника останется стабильным, так как он зависит только от крайних точек. Во-вторых, вычислительная простота: поиск минимальных и максимальных координат требует однократного прохода по всем пикселям контура и не требует деления на площадь, что исключает возможные артефакты при малых площадях. В-третьих, предсказуемость: при повороте объекта вокруг своей оси центр масс может перемещаться (например, у вытянутого объекта), тогда как центр ограничивающего прямоугольника остаётся привязан к габаритным размерам.
В данной системе ректификация применяется до вычитания фона. Ректификация — это преобразование изображений, в результате которого эпиполярные линии становятся горизонтальными, а диспаратность (горизонтальное смещение соответствующих точек) проявляется только как сдвиг по оси u. Это означает, что изображения, поступающие на вход модуля вычитания фона, уже преобразованы так, что для любой точки пространства её проекции на левый и правый кадр имеют одинаковую вертикальную координату v. Такое свойство существенно упрощает последующую триангуляцию.
Из ректифицированных левого и правого кадров получаются центры ограничивающих прямоугольников — для левого кадра это (u_L, v_L), для правого — (u_R, v_R). В идеальном случае вертикальные координаты должны быть строго равны. На практике из-за погрешностей калибровки (неточного определения параметров камер) и шумов в изображениях возможно небольшое вертикальное рассогласование delta_v, вычисляемое как модуль разности между v_L и v_R.
Диспаратность d — ключевая величина для определения глубины — вычисляется как разность горизонтальных координат: u_L минус u_R. Для корректной работы требуется, чтобы диспаратность была положительной (объект находится перед плоскостью камер).
Если вертикальное рассогласование delta_v превышает порог epsilon_v, который эмпирически устанавливается в 2–3 пикселя, кадр считается плохо синхронизированным или объект находится вне стереозоны (вне области пересечения полей зрения двух камер). В таком случае триангуляция для данного кадра не выполняется, и система переходит к обработке следующей пары кадров.
