- •Аннотация
- •Содержание
- •Введение
- •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.10 Математическая модель простой триангуляции
В основе расчёта трёхмерных координат лежит модель параллельных оптических осей.
Две одинаковые камеры, разнесённые на расстояние базы B, имеют параллельные оптические оси и общее фокусное расстояние f(измеренное в пикселях). Искажениями объективов пренебрегаем или считаем их заранее скомпенсированными. Главные точки изображений совпадают с центрами сенсоров.
Алгоритм вычисления координат
1. Захватывают синхронизированные кадры с левой и правой камер.
2. На обоих изображениях находят целевой объект (шаблонное сопоставление, цветовая сегментация и т.п.). Получают координаты его центров
3. Вычисляют диспарантность
4. Рассчитывают глубину
5. Вычисляют координаты главной точки.
6. Тройка (X, Y, Z)1 с меткой времени передаётся в систему визуализации.
3.11 Математическая модель простой триангуляции
Синхронизация двух видеопотоков критична для корректности стереосопоставления: если левый и правый кадры сняты в разные моменты времени, движущийся объект окажется в разных позициях, что приведет к ложной диспаратности и ошибке позиционирования. Задача синхронизации — выбрать пары кадров, захваченных одновременно (с точностью до допустимого порога Δt).
RTCP Sender Report (SR): протокол RTCP передает периодические отчеты, включающие время (Network Time Protocol, 64 бита: 32 бита — секунды с 1900 года, 32 бита — доли секунды) и соответствующий ему RTP timestamp . Сервер обработки, получив SR от обеих камер, может привести timestamp к единой шкале времени.
Для синхронизации применяется алгоритм
Инициализация: при старте системы каждая камера отправляет RTCP SR; сервер запоминает пары (NTP₁, RTP_ts₁) для левой камеры и (NTP₂, RTP_ts₂) для правой.
Буферизация: кадры помещаются в очереди с метками времени t_left и t_right.
Выбор пар: сервер извлекает кадр из левой очереди с меткой t_left, ищет в правой очереди кадр с меткой t_right, минимизирующей |t_left − t_right|.
Проверка порога: если |t_left − t_right| < Δt_threshold (обычно 5 мс), пара принимается; иначе, если t_left < t_right, левый кадр отбрасывается (слишком старый), извлекается следующий; если t_left > t_right, правый кадр отбрасывается.
3.12 Модель данных
Для обеспечения сохранности параметров калибровки стереопары, логирования событий системы и ведения истории сеансов позиционирования в разрабатываемом программной системе предусмотрена легковесная реляционная база данных. С учётом специфики работы системы (отсутствие высоких требований к горизонтальному масштабированию и сложным запросам в реальном времени) в качестве системы управления базами данных выбрана SQLite 3. Использование SQLite позволяет хранить всю структуру в одном файле (например, tracking.db), что упрощает развёртывание инфраструктуры и не требует выделенного сервера БД.
Модель данных включает три основные сущности: calibration (параметры калибровки камер), sessions (сеансы позиционирования) и logs (системные события). Схема базы данных представлена на рисунке 3.1.
Рисунок 3.1 – Модель базы данных
Выводы по третьему разделу
В третьем разделе выполнено проектирование архитектуры системы трёхмерного позиционирования, а также разработаны математические модели ключевых подсистем, обеспечивающие требуемые функциональные и нефункциональные характеристики.
Спроектирована общая архитектура системы, следующая паттерну «клиент–сервер» с асинхронной обработкой на серверной стороне и событийно-управляемой логикой на клиенте. Серверная часть включает пять основных модулей: захвата видеопотоков (два независимых потока с буферизацией в потокобезопасные очереди), синхронизации и ректификации (выбор пар кадров с временной разницей менее 5 миллисекунд), стереосопоставления (вычисление карты диспаратности), триангуляции и детекции объекта (вычисление трёхмерных координат), а также WebSocket-сервера для передачи данных клиенту. Клиентская часть на Godot 4 обеспечивает визуализацию трёхмерной сцены с маркером объекта, обновляемым в реальном времени.
Разработана архитектура двухканального вычитания фона на основе алгоритма MOG2. Обоснована независимость фоновых моделей для левой и правой камер, обусловленная различной перспективой и некоррелированными источниками шумов. Предложен механизм адаптивного управления скоростью обучения модели: при обнаружении аномально высокой доли пикселей переднего плана (более тридцати процентов площади кадра) параметр скорости обучения увеличивается в три раза для ускоренной адаптации к резким изменениям освещения. В качестве координат объекта выбран центр ограничивающего прямоугольника, что обеспечивает устойчивость к разрывам маски и вычислительную простоту по сравнению с центром масс.
Разработана математическая модель простой триангуляции для ректифицированной стереопары с параллельными оптическими осями. Глубина сцены определяется как отношение произведения фокусного расстояния и базиса к диспаратности — горизонтальному смещению соответствующей точки между левым и правым изображениями. Горизонтальная и вертикальная координаты вычисляются через пропорциональное преобразование с использованием глубины и фокусного расстояния. Введена проверка вертикального рассогласования: если разница вертикальных координат центра объекта на левом и правом кадрах превышает два пикселя, кадр считается непригодным для триангуляции. Данное условие позволяет отбраковывать кадры с плохой синхронизацией или объектами, находящимися вне стереозоны.
Предложена модель синхронизации видеопотоков на основе временных меток RTCP, передаваемых в составе протокола RTP. Разработан алгоритм буферизации кадров обеих камер с последующим выбором пары, минимизирующей разницу временных меток. Установлен порог синхронизации в 5 миллисекунд, обеспечивающий погрешность позиционирования не более 5 миллиметров при скорости движения объекта до одного метра в секунду. При превышении порога более ранний кадр отбрасывается, что предотвращает использование десинхронизированных пар.
Разработана модель данных для обмена информацией между сервером и клиентом на основе протокола JSON-RPC версии 2.0. Определены типы сообщений: update_position для передачи трёхмерных координат с временной меткой, status для информирования о состоянии системы (калибровка, отслеживание, ошибка), command для управляющих команд от клиента (запуск отслеживания, остановка отслеживания, калибровка). Формат сообщений включает обязательные поля, указывающие версию протокола, метод вызова и параметры (координаты X, Y, Z в миллиметрах, временная метка в миллисекундах).
Предложена концепция среды виртуализации стереопары на базе игрового движка Godot 4, позволяющая генерировать синхронизированные пары изображений с точным знанием геометрии сцены. Виртуальный стенд обеспечивает полный контроль над параметрами камер (базис 150 миллиметров, фокусное расстояние около 770 пикселей при разрешении 1920 на 1080 пикселей), идеальную синхронизацию кадров и возможность программного движения тестового объекта по заданной траектории (синусоидальной или линейной). Использование виртуальной среды позволяет верифицировать алгоритмы вычитания фона и триангуляции без физических камер, значительно упрощая отладку и обеспечивая повторяемость экспериментов.
Таким образом, в третьем разделе полностью решены задачи проектирования архитектуры системы, разработки математических моделей триангуляции, синхронизации и вычитания фона, а также модели данных для взаимодействия компонентов системы. Спроектированная архитектура является модульной, масштабируемой и пригодной для реализации на выбранном технологическом стеке, что создаёт основу для последующей разработки и тестирования системы.
