- •Аннотация
- •Содержание
- •Введение
- •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 Тестирование
- •Выводы по четвёртому разделу
- •Заключение
- •Список использованных источников
1.4 Геометрическая модель простой триангуляции в стереосистеме
Рассмотрим две камеры с центрами проекции с точками фокуса F1 и F2, разнесенными на базисное расстояние B. Точка P в трехмерном пространстве проецируется на левую камеру в позицию p1 (u1, v₁) и на правую — в p2 (u2, v2). Прямые F1P и F2P, проходящие через центры камер и точку P, пересекаются в этой точке. [19]. Схема представлена на рисунке 1.1
Математически задача сводится к решению системы линейных уравнений. Введем систему координат: левая камера — начало отсчета, ось X направлена вправо вдоль базиса, ось Z — вперед (глубина), ось Y — вверх. Правая камера смещена на вектор t = (B, 0, 0). Для простоты полагаем, что оптические оси параллельны (ректифицированная конфигурация).
Проекция точки P(X, Y, Z) на левую камеру задается формулами:
u1 = f · X / Z + cx, (1.2)
v1 = f · Y / Z + cy, (1.3)
где f — фокусное расстояние в пикселях, (cx, cy) — координаты главной точки (обычно центр матрицы: cx = ширина/2, cy = высота/2). Для правой камеры:
u2 = f · (X − B) / Z + cx, (1.4)
v2 = f · Y / Z + cy. (1.5)
Вычтем из первого уравнения для u₁ второе для u₂:
u1 − u2 = f · B / Z. (1.6)
Диспаратность d определяется как d = u₁ − u₂ (горизонтальное смещение соответствующей точки между левым и правым изображением). Отсюда глубина:
Z = f · B / d. (1.7)
Координаты X и Y находятся из первых двух уравнений:
X = (u₁ − cx) · Z / f, (1.8)
Y = (v₁ − cy) · Z / f. (1.9)
Эти формулы составляют математическую модель простой триангуляции — метод, впервые формализованный Лонге-Хиггинсом [12].
Рисунок 1.1 – Геометрическая схема системы
Калибровка стереопары выполняется по методу Цая (Zhang, 2000) с использованием шахматного паттерна (checkerboard). OpenCV предоставляет функции calibrateCamera и stereoCalibrate. Типичная последовательность:
захват 20–30 изображений паттерна (плоская доска с чередующимися черными и белыми квадратами 10×7) под разными углами;
автоматическое обнаружение угловых точек (findChessboardCorners);
вычисление внутренних параметров каждой камеры (матрица K, коэффициенты дисторсии D);
вычисление внешних параметров (матрица поворота R, вектор трансляции T);
построение карт ректификации (функция stereoRectify, инициализация функций undistortMap) для быстрого преобразования кадров при обработке потока.
Альтернативный подход — использование фундаментальной матрицы F (8-точечный алгоритм Лонге-Хиггинса) [16] для некалиброванной стереосистемы. Матрица F связывает координаты соответствующих точек уравнением:
p₂ᵀ F p₁ = 0, (1.10)
где p₁, p₂ — однородные координаты точек в левом и правом изображениях. Однако метод применим лишь для относительной реконструкции (восстановление формы с точностью до масштаба), что недостаточно для задачи абсолютного позиционирования. Калиброванный подход, описанный выше, обеспечивает точность.
1.5 Особенности получения и синхронизации видеопотоков в ip-сетях
IP-камеры, в отличие от аналоговых систем (PAL / NTSC с композитным видеовыходом) и цифровых интерфейсов машинного зрения (GigE Vision, USB3 Vision), передают видеопоток в виде пакетов по стеку TCP/IP [13]. Типичный протокол — RTSP (Real Time Streaming Protocol, RFC 2326) для управления сессией и RTP (Real-time Transport Protocol, RFC 3550) для доставки медиаданных [5]. Эта архитектура обеспечивает гибкость развертывания — камеры подключаются к существующей локальной сети предприятия, но вносит вызовы синхронизации, задержек и потери пакетов.
Структура RTSP-сессии:
клиент (сервер обработки видео) отправляет запрос OPTIONS на URL rtsp://192.168.1.64:554/stream1;
камера отвечает списком поддерживаемых команд (DESCRIBE, SETUP, PLAY, TEARDOWN);
клиент запрашивает DESCRIBE — получает SDP (Session Description Protocol) с параметрами потока (кодек H.264, разрешение 1920×1080, частота 25 FPS);
команда SETUP инициирует RTP-канал (указывается пара портов UDP для RTP-данных и RTCP-управления);
команда PLAY запускает передачу видео; кадры поступают как RTP-пакеты с заголовками, содержащими временные метки (timestamp).
Для синхронизации изображений используется синхронизация на сервере
каждый кадр маркируется временной меткой RTCP SR (Sender Report), содержащей NTP-время (Network Time Protocol, точность ~1 мс в LAN);
сервер буферизует кадры обеих камер;
алгоритм выбирает пары кадров с минимальной разницей временных меток (оптимально ≤5 мс);
при превышении порога кадр с более ранней меткой отбрасывается.
