1.5 GPixel/s komprimieren KTI-Projekt Hochgeschwindigkeitskameras mit integrierter Videokompression IMVS: Christoph Stamm IME: Michael Pichler, Dino Zardet, Nils Frey, Marcel Baier
in Zahlen und Stichworten Geplante Laufzeit 18 Monate, ab. 1.1.2016 (Verzögerung um 1 Jahr bei AOS) Projektkosten wer den Kuchen bäckt wer den Kuchen isst KTI 320 kfr AOS 350 kfr Projektablauf AOS entwickelt neue Kamera und neue Video-Verarbeitungssoftware IMVS entwickelt Videokompressionsverfahren (Codec) in C++ schnellen Decoder für die GPU in OpenCL IME adaptiert das Codec und entwickelt IME 260 kfr IMVS 90 kfr den Encoder des Videokompressionsverfahrens für ein FPGA AOS 320 kfr 02.05.2017 Highspeed Codec 2
es läuft nicht immer rund 02.05.2017 Highspeed Codec 3
Hintergrund kurz erklärt Problemstellung mit den sehr kompakten Hochgeschwindigkeitskameras der Firma AOS Technologies (Baden-Dättwil) lassen sich nur sehr kurze Aufnahmesequenzen (maximal 8 Sekunden) in der Kamera abspeichern bei der Überwachung von sehr schnellen industriellen Prozessen braucht es öfters längere Aufnahmesequenzen (z.b. 1 Minute), um unvorhergesehene Abläufe in einem Video festhalten zu können mögliche Lösungsansätze Konsequenzen Video-Streaming an PC verringerte Bildauflösung oder spezielle Hardware für Bildübertragung mehr Speicher in der Kamera sehr schneller Speicher ist sehr teuer und Kamera wird grösser Videodaten komprimieren Kamera benötigt mehr Rechenleistung 02.05.2017 Highspeed Codec 4
vom (Farb-)Bild zur Bewegung Maximale Bildauflösung 1696 x 1710 2.9 MPixel (soll in Zukunft erhöht werden) Bildraten 500 Bilder/s bei voller Auflösung 4500 Bilder/s bei 640 x 480 Sensortypen monochrom oder Bayer-Mask 02.05.2017 Highspeed Codec 5
komprimieren ja, aber Anforderungen an unseren Echtzeit-Encoder in der Kamera Echtzeitanforderung erfüllen: 1.5 GPixel/s minimaler Ressourcenverbrauch verlustlose Kompression (möglichst hohe Kompressionsrate) verlustbehaftete Kompression (möglichst hohe Videoqualität bei gegebener Kompressionsrate) abgeleitete Anforderungen Datenfolge des Sensors berücksichtigen minimaler Speicherbedarf (wenige Bildzeilen) möglichst einfache Arithmetik (nur ganze Zahlen, Add/Sub/Shift) möglichst gute Parallelisierbarkeit Konsequenzen Standard Video-/Bild-Codecs eignen sich nicht 02.05.2017 Highspeed Codec 6
in fünf Schritten zum Ziel FPN Pre-Correction color transform Bayer - YUVD FWT quantization encoding encoded image FPN Delta-Correct. inv. color transform YUVD - Bayer inverse FWT dequanti - zation decoding Originalbild Codierung Komprimiertes Schnelle Farbtransformation Fixed Quantisierung Pattern Diskrete (Huffman Noise Bild Wavelet-Transformation Removal und Run-Length (FPN) Encoding) (FWT) Bayer-Pattern Ziel möglichst Reduktion Informationskonzentration Rauschen RGGB kompakte, gute des der CMOS-Bildsensors Redundanz oder Anzahl Qualität Variante verlustlose unterschiedlicher bei innerhalb auf maximaler davon einen Speicherung entfernen eines Helligkeitskanal Codierungsgeschwindigkeit Wavelet-Koeffizienten Kanals und Y Erzeugung und von U (verlustbehaftet) und Koeffizienten minimaler V sind Chrominanzkanäle, Dateigrösse mit kleinem Absolutwert D ist die Gründifferenz 02.05.2017 Highspeed Codec 7
«CMOS» rauscht ganz schön übel 02.05.2017 Highspeed Codec 8
lästiges Rauschen unterdrücken Fixed Pattern Noise (FPN) Removal bisher: quadratische Korrekturfunktion pro Pixel: yy = aaxx 2 + bbbb + cc (3 Korrekturparameter a, b, c mit insgesamt 48 Bit pro Pixel) neu: Vorkorrektur mit 10 Bit pro Pixel Sensor- Frame vollständige FPN- Korrektur Bayer- Pattern PSNR Bayer- Pattern 10-Bit FPN- Pre- Correction HVC Encoding HVC Decoding FPN-Delta- Correction 02.05.2017 Highspeed Codec 9
Energie bündeln lohnt sich Ziel der Farbtransformation Bildenergie auf einen Kanal konzentrieren 02.05.2017 Highspeed Codec 10
mit kleinen Wellen trennen 1.E+11 1.E+10 1.E+09 1.E+08 1.E+07 1.E+06 1.E+05 1.E+04 1.E+03 1.E+02 1.E+01 1.E+00 Mehrstufige Wavelet- Transformation viel Detailinformation von Durchschnittsinformation trennen Hochpass-Filter und Tiefpass-Filter -512-488 -464-440 -416-392 -368-344 -320-296 -272-248 -224-200 -176-152 -128-104 -80-56 -32-8 16 40 64 88 112 136 160 184 208 232 256 280 304 328 352 376 400 424 448 472 496 02.05.2017 Highspeed Codec 11
Details der Details entfernen Quantisierung der Wavelet-Koeffizienten Quantisierungsparameter steuert die Stärke des Datenverlusts und somit die Kompressionsrate uniforme, skalare Quantisierung abhängig von Subband und Level Spannweiten sind Zweierpotenzen Neue Erkenntnis durch Variieren der Breite der Dead-Zone kann eine zusätzliche Verfeinerung der Quantisierung erreicht werden, z.b. 5 oder 9 Unterstufen Dead-Zone 02.05.2017 Highspeed Codec 12
Bildqualität kann gewählt werden Hochgeschwindigkeitskameras in Industrie und Forschung Kameras sind Messmittel zur Erzeugung «technischer» Bilder 02.05.2017 Highspeed Codec 13
Daten weiter eindampfen Codierung der quantisierten Wavelet-Koeffizienten häufige Wavelet-Koeffizienten (mit kleinem Absolutwert) sollen durch kurze Präfix-Codes repräsentiert werden Codewörter variieren in der Länge zwischen 1 und ca. 50 Bit Huffman-Codierung mit fixer Code-Tabelle lässt sich einfach parallelisieren zusätzliches adaptives Run-Length-Encoding von Nullersequenzen kann die Kompressionsrate weiter erhöhen erschwert aber die Parallelisierbarkeit und die Umsetzung in einem FPGA 02.05.2017 Highspeed Codec 14
Bildqualität in Zahlen ausgedrückt Original 40 db 35 db 31 db 02.05.2017 Highspeed Codec 15
der Einfluss der Todeszone PSNR [db] 100.0 90.0 80.0 70.0 60.0 50.0 40.0 30.0 20.0 10.0 0.0 infinity 48.8 PSNR of Airbag Q-MIZE 42.6 38.9 35.6 32.3 29.2 0 1 2 3 4 5 6 QP Ratio of Airbag Q-MIZE Dead-Zone 4/4 Dead-Zone 5/4 Dead-Zone 6/4 Dead-Zone 7/4 Dead-Zone 8/4 Compression Ratio 50.0 45.0 40.0 35.0 30.0 25.0 20.0 15.0 10.0 5.0 0.0 34.9 17.7 9.4 1.7 1.8 2.8 4.9 0 1 2 3 4 5 6 Dead-Zone 4/4 Dead-Zone 5/4 Dead-Zone 6/4 Dead-Zone 7/4 Dead-Zone 8/4 QP 02.05.2017 Highspeed Codec 16
die zu erwartenden Resultate 60.0 50.0 40.0 38.7 39.2 41.6 41.5 50.7 38.3 39.1 43.2 45.9 38.8 PSNR [db] 30.0 31.8 Ratio = 5 20.0 Ratio = 7.5 Ratio = 10 10.0 0.0 02.05.2017 Highspeed Codec 17
Umsetzung Encoder in Hardware Ziel: Verarbeitung von 500 Vollformat-Bilder pro Sekunde in Echtzeit = 1.5 GPixel/s = 11.6 Gbit/s Realisierung des Encoders 1. CPU 15 MPixel/s (f = 3 GHz) 2. GPU 150 MPixel/s (f = 1.1 GHz) 3. FPGA 1500 MPixel/s? (f = 103 MHz) 02.05.2017 Highspeed Codec 18
Was ist ein FPGA FPGA: Field Programmable Gate Array Im Feld programmierbare (Logik-)Gatter-Anordnung digitale Logikblöcke in einer regelmässigen Struktur angeordnet Funktion der einzelnen Logikblöcke ist vom Anwender programmierbar CLB: Configurable Logic Block PSM: Programmable Switch Matrix IOB: Input / Output Block 02.05.2017 Highspeed Codec 19
FPGA Design Flow Design Eingabe Simulation Synthese Simulation Implementation Simulation Programmierung 02.05.2017 Highspeed Codec 20
FPGA Entwicklung Keine Knopfdrucklösung (C++ -> FPGA) z.b. Adaptives RLE: 30 Zeilen C++ Code, 1 Monat Arbeit für VHDL Code C++ Code -> hardwarenahes bit-genaues C++ Modell VHDL codieren Vergleich der Ausgangsdaten (VHDL C++) hardwarenaher bit-genauer C++ Code vergleichen vergleichen vergleichen vergleichen vergleichen VHDL Code 02.05.2017 Highspeed Codec 21
Ein Blick ins Innere der Kamera 02.05.2017 Highspeed Codec 22
Anpassung Kamera-Hardware Sensor Recorder FPGA/ Memory CPU Sensor Coder FPGA Recorder FPGA/ Memory CPU 02.05.2017 Highspeed Compression 23
vom Kunstfehler zur Fehlerkunst Danke für Ihre Aufmerksamkeit CodecArt http://web.fhnw.ch/technik/projekte/computervision/codecart 02.05.2017 Highspeed Codec 24