Кадр 4K содержит более восьми миллионов пикселей. Отправка тридцати таких кадров в секунду без сжатия создает очень большой поток данных. Поэтому модули USB-камер часто используют MJPEG, поскольку сжатие JPEG уменьшает объем данных, которые должны передаваться по USB-соединению.
USB 2.0 имеет гораздо меньшую практическую пропускную способность, чем USB 3.x. Даже в USB 3.x режимы с высокой скоростью передачи данных без сжатия могут конкурировать с другими устройствами и ограничениями хост-контроллера. MJPEG позволяет тому же физическому интерфейсу передавать более высокое разрешение или частоту кадров за счет уменьшения количества байтов на кадр.
В отличие от видеокодеков с длинным GOP, таких как H.264/H.265, MJPEG сжимает отдельные кадры как изображения JPEG. Это делает случайный доступ к кадрам относительно простым и позволяет избежать зависимостей от межфреймового предсказания. Для некоторых приложений машинного зрения такая простота полезна, даже несмотря на остаточные артефакты сжатия.
Сжатие не устраняет данные, оно переносит работу в другое место. Камера или мост сжимает изображение, а хост декодирует его. Слабый встроенный процессор может испытывать трудности с несколькими потоками 4K MJPEG, даже если USB-шина может их передавать.
Для многокамерных систем измеряйте как загрузку USB, так и нагрузку на декодирование ЦП/ГП.
Хост по-прежнему должен согласовать режим, получить поток, декодировать кадры и переместить их в память. Программные фреймворки могут копировать буферы или преобразовывать цветовые форматы, добавляя задержку. Качество кабеля и совместное использование USB-контроллера также могут повлиять на устойчивую производительность.
Спецификация должна быть проверена на конечном хосте, а не предполагаться на основе успешного теста на настольном ПК.
Если алгоритм чувствителен к артефактам JPEG, требует постоянных значений пикселей или избегает задержки декодера, предпочтительнее может быть YUY2 или другой путь без сжатия/сырой. В этом случае может потребоваться USB 3.x, более низкое разрешение, более низкая частота кадров или другой интерфейс.
Сравните таблицу режимов: разрешение, частоту кадров и формат. Затем проверьте версию USB, нагрузку на декодирование хоста, задержку и обрабатывает ли приложение каждый кадр. Модуль, рекламирующий «4K30», может вести себя очень по-разному в зависимости от того, является ли этот режим MJPEG, H.264 или другим форматом.
Одна 4K30 MJPEG-камера может надежно передавать данные на хост, но четыре идентичные камеры могут перегрузить топологию USB или ресурсы декодера. Сжатие уменьшило пропускную способность каждого канала, но объединенная система по-прежнему должна получать и декодировать четыре потока. Поэтому проектирование многокамерных систем требует совокупных измерений, а не предположений для каждой камеры.
Полное утверждение должно включать формат и интерфейс: например, 3840 × 2160 при 30 кадрах в секунду в MJPEG через определенное USB-соединение. Без формата число скрывает ключевое инженерное ограничение. Такая привычка чтения предотвращает многие ошибки выбора.
Это формат сжатия с потерями, поэтому возможны артефакты. Имеют ли они значение, зависит от настроек сжатия и приложения.
H.265 может сжимать более эффективно, но добавляет сложность кодека и часто большую задержку. MJPEG прост и независим от кадров.
Это может быть возможно для некоторых форматов и реализаций, но необходимо проверить точную скорость передачи данных, накладные расходы протокола и конвейер хоста. Не предполагайте этого только по названию интерфейса.