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