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

2.2 Библиотеки компьютерного зрения

OpenCV (Open Source Computer Vision Library) — кросс-платформенная библиотека алгоритмов компьютерного зрения, обработки изображений и машинного обучения, выпущенная Intel в 2000 году под лицензией BSD [7]. К 2025 году OpenCV достигла версии 4.8.0, включает >2500 оптимизированных алгоритмов и поддерживает языки C++, Python, Java, MATLAB. Библиотека применяется в автономных транспортных средствах (Tesla Autopilot до 2021 года использовала OpenCV для предобработки [6]), промышленных системах контроля качества (распознавание дефектов на конвейерах КАМАЗ, ГАЗ) и медицинской диагностике (анализ рентгеновских снимков в системах ООО «ЦРТ», Москва).

2.3 Протоколы обмена: WebSocket и json

Передача координат объекта от серверного модуля (Python) к клиенту визуализации (Godot) требует протокола, обеспечивающего низкую задержку, двунаправленность (клиент может отправлять команды серверу) и структурированный формат данных. В разрабатываемой системе выбрана связка WebSocket (транспортный уровень) и JSON (формат сериализации данных) с семантикой JSON-RPC 2.0 для организации вызовов процедур [17].

WebSocket (RFC 6455) — протокол полнодуплексной связи поверх одного TCP-соединения. В отличие от HTTP, где клиент вынужден постоянно опрашивать сервер (polling), WebSocket позволяет серверу отправлять данные клиенту асинхронно в любой момент. Это критически важно для задачи реального времени: сервер обработки видео вычисляет новые координаты объекта с частотой 25 Гц и должен немедленно передать их клиенту для визуализации [20].

Основные характеристики WebSocket, определившие его выбор:

  1. Низкая задержка — после установки соединения отсутствуют накладные расходы на заголовки HTTP (до 800 байт против 2–10 байт в WebSocket-фреймах).

  2. Двунаправленность — клиент может отправлять команды без установки нового соединения.

  3. -Поддержка в Godot — движок имеет встроенный класс `WebSocketClient`, который полностью реализует протокол и интегрируется с циклом обработки событий.

  4. Поддержка в Python — библиотека `websockets` (асинхронная) и `websocket-client` (синхронная) обеспечивают простой API.

Альтернативные протоколы были рассмотрены и отклонены по следующим причинам:

  1. REST (HTTP) — требует постоянных запросов от клиента (polling), что создаёт избыточную нагрузку и увеличивает задержку до 200–300 мс.

  2. gRPC — эффективен для высоконагруженных систем, но требует генерации кода из .proto-файлов, что усложняет прототипирование; поддержка в Godot отсутствует.

  3. MQTT — протокол публикации/подписки, избыточен для сценария «один сервер — один клиент»; требует брокера (например, Mosquitto).

Выводы по второму разделу

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

  1. В качестве языка программирования для серверной части выбран Python 3.11. Несмотря на более низкую производительность по сравнению с C++ (58 мс против 22 мс обработки кадра), Python обеспечивает высокую скорость прототипирования, богатую экосистему библиотек компьютерного зрения (OpenCV-Python, NumPy) и встроенную поддержку асинхронности (asyncio, websockets). Динамическая типизация и наличие REPL существенно ускоряют экспериментальную отладку параметров стереосопоставления.

  2. Библиотекой компьютерного зрения определена OpenCV 4.8. Данный выбор обусловлен её статусом де-факто стандарта в области компьютерного зрения, наличием полной поддержки Python, реализацией всех необходимых алгоритмов (калибровка, ректификация, вычитание фона MOG2, стереосопоставление StereoBM, триангуляция), а также открытой лицензией BSD, не налагающей ограничений на коммерческое использование.

  3. Для передачи данных от сервера к клиенту визуализации выбран протокол WebSocket в связке с форматом JSON и семантикой JSON-RPC 2.0. WebSocket обеспечивает полнодуплексную связь с низкой задержкой (заголовки фреймов 2–10 байт против до 800 байт у HTTP), позволяет серверу асинхронно отправлять координаты клиенту без необходимости постоянных запросов (polling) и имеет встроенную поддержку в Godot 4 (класс WebSocketClient) и Python (библиотека websockets). Альтернативные протоколы (REST, gRPC, MQTT) отклонены из-за избыточности, отсутствия поддержки в Godot или неприемлемых задержек.

  4. Среда визуализации Godot 4 выбрана как современный, бесплатный и открытый игровой движок, предоставляющий мощные средства для создания трёхмерных сцен, поддержку WebSocket «из коробки», возможность кроссплатформенной компиляции и низкий порог входа благодаря встроенному языку GDScript. Godot 4 также позволяет создавать виртуальный стенд для тестирования алгоритмов без физических камер, что значительно упрощает отладку и верификацию.

  5. Таким образом, выбранный технологический стек (Python 3.11 + OpenCV 4.8 + WebSocket/JSON-RPC + Godot 4) является сбалансированным решением, полностью отвечающим поставленным требованиям по производительности, функциональности, скорости разработки и возможности дальнейшего сопровождения. Все компоненты являются открытыми, кроссплатформенными и имеют активное сообщество, что обеспечивает независимость от зарубежных поставщиков и возможность адаптации под конкретные технологические задачи.

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