Ein 4K-Bild enthält mehr als acht Millionen Pixel. Das Senden von dreißig dieser Bilder pro Sekunde ohne Komprimierung erzeugt einen sehr großen Datenstrom. USB-Kameramodule verwenden daher oft MJPEG, da die JPEG-Komprimierung die Datenmenge reduziert, die über die USB-Verbindung übertragen werden muss.
USB2.0 hat eine deutlich geringere praktische Bandbreite als USB3.x. Selbst bei USB3.x können unkomprimierte Modi mit hoher Bitrate mit anderen Geräten und Host-Controller-Grenzen konkurrieren. MJPEG ermöglicht es derselben physischen Schnittstelle, eine höhere Auflösung oder Bildrate zu übertragen, indem die Anzahl der Bytes pro Bild reduziert wird.
Im Gegensatz zu Video-Codecs mit langem GOP wie H.264/H.265 komprimiert MJPEG einzelne Bilder als JPEG-Bilder. Dies macht den zufälligen Bildzugriff relativ einfach und vermeidet Abhängigkeiten von der Vorhersage zwischen den Bildern. Für einige Bildverarbeitungsanwendungen ist diese Einfachheit nützlich, auch wenn Komprimierungsartefakte bestehen bleiben.
Komprimierung lässt Daten nicht verschwinden; sie verlagert die Arbeit woanders hin. Die Kamera oder die Bridge komprimiert das Bild, und der Host dekodiert es. Ein schwacher eingebetteter Prozessor kann selbst mit mehreren 4K-MJPEG-Streams überfordert sein, selbst wenn der USB-Bus sie übertragen kann.
Messen Sie für Multi-Kamera-Systeme sowohl die USB-Auslastung als auch die CPU/GPU-Dekodierlast.
Der Host muss immer noch den Modus aushandeln, den Stream empfangen, Bilder dekodieren und in den Speicher verschieben. Software-Frameworks können Puffer kopieren oder Farbformate konvertieren, was zu Latenz führt. Kabelqualität und die gemeinsame Nutzung des USB-Controllers können ebenfalls die nachhaltige Leistung beeinträchtigen.
Eine Spezifikation sollte auf dem endgültigen Host verifiziert werden, anstatt von einem erfolgreichen Test auf einem Desktop-PC angenommen zu werden.
Wenn ein Algorithmus empfindlich auf JPEG-Artefakte reagiert, konsistente Pixelwerte benötigt oder Decoder-Latenz vermeidet, kann YUY2 oder ein anderer unkomprimierter/roher Pfad bevorzugt werden. In diesem Fall können USB3.x, eine niedrigere Auflösung, eine niedrigere Bildrate oder eine andere Schnittstelle erforderlich sein.
Vergleichen Sie die Modustabelle: Auflösung, Bildrate und Format. Überprüfen Sie dann die USB-Version, die Host-Dekodierlast, die Latenz und ob die Anwendung jedes Bild verarbeitet. Ein Modul, das ‘4K30’ bewirbt, kann sich sehr unterschiedlich verhalten, je nachdem, ob dieser Modus MJPEG, H.264 oder ein anderes Format ist.
Eine einzelne 4K30-MJPEG-Kamera kann zuverlässig auf einem Host gestreamt werden, aber vier identische Kameras können die USB-Topologie oder die Decoder-Ressourcen überlasten. Die Komprimierung reduzierte die Bandbreite jedes Links, aber das Gesamtsystem muss immer noch vier Streams empfangen und dekodieren. Multi-Kamera-Design erfordert daher aggregierte Messungen, keine Annahmen pro Kamera.
Die vollständige Aussage sollte Format und Schnittstelle enthalten: zum Beispiel 3840×2160 bei 30 fps in MJPEG über eine bestimmte USB-Verbindung. Ohne das Format verbirgt die Zahl die wichtigste technische Einschränkung. Diese Lesegewohnheit verhindert viele Auswahlfehler.
Es ist ein verlustbehaftetes Komprimierungsformat, daher sind Artefakte möglich. Ob sie wichtig sind, hängt von den Komprimierungseinstellungen und der Anwendung ab.
H.265 kann effizienter komprimieren, fügt aber Codec-Komplexität und oft mehr Latenz hinzu. MJPEG ist einfach und bildunabhängig.
Es kann für einige Formate und Implementierungen möglich sein, aber die genaue Datenrate, der Protokoll-Overhead und die Host-Pipeline müssen überprüft werden. Gehen Sie nicht allein vom Schnittstellennamen aus.