DE102019103346A1 - Ssim-basierte rate-distortion-optimierung für eine verbesserte wahrnehmbare qualität bei videos - Google Patents

Ssim-basierte rate-distortion-optimierung für eine verbesserte wahrnehmbare qualität bei videos Download PDF

Info

Publication number
DE102019103346A1
DE102019103346A1 DE102019103346.2A DE102019103346A DE102019103346A1 DE 102019103346 A1 DE102019103346 A1 DE 102019103346A1 DE 102019103346 A DE102019103346 A DE 102019103346A DE 102019103346 A1 DE102019103346 A1 DE 102019103346A1
Authority
DE
Germany
Prior art keywords
block
distortion
ssim
prediction modes
video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019103346.2A
Other languages
English (en)
Inventor
Megamus Zhang
Jant Chen
Steven Feng
Shining Yi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102019103346A1 publication Critical patent/DE102019103346A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock

Abstract

Echtzeit-, in Hardware implementierbare Verfahren einer Rate-Distortion-Optimierung, RTO, basierend auf einer strukturierten Ähnlichkeit, SSIM, für eine Videoübertragung werden beschrieben. Die offenbarten Verfahren stellen eine effiziente Anwendung von SSIM als eine Verzerrungsmetrik beim Auswählen von Vorhersagemodi zum Codieren eines Videos für eine Übertragung bereit. Auf einem hohen Niveau spezifiziert ein Vorhersagemodus, welche vorher codierte Gruppe von Pixeln eingesetzt werden kann, um einen folgenden Block von Pixeln in einem Video-Frame zu codieren. Zuerst wird eine Verzerrungsmetrik mit einer geringeren Rechenanforderung verwendet, um eine Teilmenge von KandidatenVorhersagemodi auszuwählen. Dann wird eine SSIM-basierte Auswahl aus der Teilmenge mit einer höheren Rechenanforderung vorgenommen. Durch den Einsatz der offenbarten Verfahren während einer Videocodierung wird ein Kompromiss zwischen der Verzerrung und der Übertragungsrate erzielt, welcher für eine menschliche Wahrnehmung relevanter ist.

Description

  • BEREICH DER ERFINDUNG
  • Diese Technologie bezieht sich auf die Videoübertragung im Allgemeinen und insbesondere auf die Verbesserung der wahrnehmbaren Qualität eines übertragenen Videos.
  • HINTERGRUND UND ZUSAMMENFASSUNG
  • Ein Video verbraucht einen erheblichen Umfang an Netzwerkbandbreite zwischen einem sendenden Computersystem und einem empfangenden Computersystem und kann auch eine erhebliche Bandbreite von den internen Verbindungsnetzwerken eines Computersystems in Beschlag nehmen. Die für die Übertragung eines bestimmten Videostroms erforderliche Bandbreite hängt von der Qualität des Videos und/oder der Codierung des Videos ab. Die Übertragung von Videos in einer höheren als der erforderlichen Qualität kann eine unnötig hohe Bandbreite beanspruchen.
  • Viele herkömmliche Video-Encoder arbeiten, indem sie einen Codierungsmodus wählen, der die höchste Bildqualität liefert. Die höchste Bildqualität erfordert typischerweise eine relativ hohe Anzahl von Bits für die Codierung. In einigen Fällen kann jedoch trotz der größeren Anzahl von Bits, die für die Codierung verwendet werden, keine signifikante Verbesserung der wahrnehmbaren Qualität im codierten Bild beobachtet werden. In einigen Fällen kann der Encoder in der Lage sein, weniger Bits zu verwenden, ohne die Qualität des vom Benutzer wahrgenommenen Bildes erheblich zu beeinträchtigen.
  • Als nicht einschränkendes Beispiel verwendet der H.264 Advanced Video Compression Standard eine Vorhersage, um die Menge der zu übertragenden oder zu speichernden Daten zu minimieren. Anstatt jeden Videoblock so zu codieren, als wäre es der einzige Block, der codiert wird, nutzt ein H.264-Encoder die bereits bei anderen Blöcken durchgeführte Codierung. Da Teile eines Bildes oft anderen Teilen desselben Bildes und/oder den letzten vorherigen Bildern ähnlich sind, kann der Encoder versuchen, zu codierende Bildteile anhand zuvor codierter Daten vorherzusagen. Der Encoder subtrahiert den aktuellen Block von der Vorhersage, die er erzeugt hat, um eine Differenz zu bilden. Wenn die Vorhersage genau ist, dann sind die Differenzdaten viel kleiner als die Daten, die den Bildteil selbst spezifizieren. Das ist wie ein Frühstück mit deinem Freund. Dein Freund gibt eine aufwendige Frühstücksbestellung auf und du sagst: „Ich nehme das Gleiche, aber mit Rühreiern statt pochierten.“
  • Je besser die Vorhersage ist, desto kleiner sind die Differenzdaten. Da Bildblöcke in ihren Eigenschaften unterschiedlich sein können, verwendet H.264 eine Reihe von verschiedenen Vorhersagemodi, um die beste Vorhersage zu erhalten. Wie ein Zimmermann, der in seinen Werkzeugkasten greift und das beste Werkzeug für den Job auswählt, wird ein H.264-Encoder versuchen, den besten Vorhersagemodus für den jeweiligen Teil des Bildes auszuwählen, das er codiert. Ein H.264-Encoder verfügt beispielsweise über eine Toolbox mit 9 verschiedenen Vorhersagemodi für die Luma- (Helligkeits-) Vorhersage für einen 4x4-Makroblock. Einige der neun Vorhersagemodi arbeiten vertikal, andere horizontal und wieder andere diagonal. Einige arbeiten von oben nach unten oder von links nach rechts, andere von unten nach oben oder von rechts nach links. Einige verwenden Extrapolation, andere Mittelwertbildung. Verschiedene Vorhersagemodi führen zu unterschiedlichen Vorhersageergebnissen.
  • Der H.264-Encoder bestimmt durch Testen der Ergebnisse, welcher Vorhersagemodus der Beste ist. Ein gängiger Test für die Luma-Vorhersagemodi wird beispielsweise „Summe der absoluten Fehler“ genannt. Aus den Testergebnissen ermittelt der Encoder, welche Vorhersage die geringsten Fehler ergibt. Siehe z.B. Richardson, The H.264 Advanced Compression Standard (2d. Ed., Wiley & Sons 2010), Kapitel 6, das hier durch Verweis aufgenommen wird. Während die Prüfung auf den kleinsten absoluten Fehler im Allgemeinen die höchste Bildqualität liefert, gibt es Fälle, in denen der Benutzer möglicherweise keinen signifikanten Unterschied in der Bildqualität wahrnimmt, der es rechtfertigt, einen aufwändigeren (in Bezug auf die Bitanzahl) Vorhersagemodus zu verwenden. Analog dazu ist ein professioneller Rennfahrer oft bereit, das Geld für den Kauf des leistungsstärksten Antriebsstrangs auszugeben, während ein Pendler keinen großen Leistungsunterschied zwischen einem leistungsstarken Rennmotor und einem leistungsschwächeren, aber kraftstoffsparenden Antriebsstrang bemerken wird.
  • Rate-Distortion-Optimization (RDO) ermöglicht die Optimierung des Betriebs eines Video-Encoders, indem solche Situationen vermieden werden. Anstatt nur einen Codiermodus zu wählen, der die höchste Qualität liefert, wird das Video mit einer niedrigeren Qualität codiert, so dass die Bitrate verbessert werden kann. RDO sieht vor, dass die Bitrate des codierten Videos reduziert wird, indem einige Verzerrungen im Video zugelassen werden, um eine optimierte Videoqualität unter bestimmten Ratenbeschränkungen zu erreichen. Die Bitrate entspricht der Datenmenge, die zur Codierung des Videos benötigt wird, und die Verzerrung entspricht dem Verlust der Videoqualität. Mit RDO können die Rate und die Verzerrung des übertragenen Videos so gesteuert werden, dass sie zwischen einem ersten Extrem, bei dem die codierte Bitrate auf eine maximale Rate auf Kosten eines relativ hohen Verzerrungsgrades eingestellt ist, und einem zweiten Extrem, bei dem eine maximale Verzerrung auf Kosten einer relativ niedrigen Bitrate definiert ist, liegen.
  • RDO wird in aktuellen Videosystemen häufig verwendet, um die Videoverzerrung D (z.B. erziele die beste Videoqualität) bei einer Ratenbeschränkung Rc zu minimieren, wobei das Optimierungsproblem wie folgt formuliert werden kann: m i n { D } ,   s . t .   R R c .
    Figure DE102019103346A1_0001
    In der Praxis wird das Lagrange-Multiplikator-Verfahren verwendet, um das oben beschriebene bedingte Problem in eine unbedingte Form zu überführen: m i n { J } , J = D + λ R ,
    Figure DE102019103346A1_0002
    wobei λ der Lagrange-Multiplikator ist. λ ist normalerweise abhängig vom Quantisierungsparameter (QP) für den Encoder.
  • Die meisten herkömmlichen RDO-Techniken verwenden die Sum of Squared Difference (SSD) („Summe der quadrierten Differenzen“) zur Berechnung der Verzerrungsmetrik. Die SSD-RDO-Technik zielt auf die Verbesserung des wahrnehmbaren Signal-Rausch-Verhältnisses (PSNR („Perceptual Signal to Noise Ratio“)) ab. Viele Studien haben jedoch gezeigt, dass berechnete PSNR-Metriken oft nicht mit ausreichender Genauigkeit der menschlichen Wahrnehmung entsprechen.
  • SSIM (Structural Similarity) ist eine erst kürzlich vorgeschlagene Verzerrungsmetrik, die der menschlichen visuellen Wahrnehmung näher kommt. Wang, Zhou, et al. „Image quality assessment: from error visibility to structural similarity.“ IEEE-Transactions on image processing 13.4 (2004): 600-612, dessen gesamter Inhalt hier durch Verweis aufgenommen wird, stellt eine Beschreibung von SSIM bereit. Aufgrund seiner hohen Übereinstimmung mit der tatsächlichen visuellen Wahrnehmung des Menschen wird SSIM weithin für den Einsatz in allen Videoverteilungssystemen vorgeschlagen, einschließlich beispielsweise Rundfunk, Kabel- und Satellitenfernsehen.
  • SSIM-RDO verwendet im Gegensatz zu vielen herkömmlichen RDO-Techniken einen SSIM-Score als Verzerrungsmetrik. Studien haben gezeigt, dass SSIM-RDO bei gleicher Bitrate eine bessere wahrnehmbare Videoqualität liefern kann als SSD-RDO. Da SSIM als Videoqualitätsmetrik immer beliebter wird, ist es wichtig, eine effiziente mit Hardware implementierbare SSIM-RDO zu entwickeln.
  • Der Ansatz, der durch exemplarische nicht einschränkende Ausführungsformen hier bereitgestellt wird, ermöglicht eine effiziente Implementierung von SSIM.
  • Figurenliste
  • Die folgende detaillierte Beschreibung exemplarischer, nicht einschränkender, illustrativer Ausführungsformen ist in Verbindung mit deren Figuren zu lesen:
    • 1 stellt eine Videoübertragungsumgebung mit einem Videoencoder, der die hybride SSIM-RDO implementiert, gemäß einigen exemplarischen Ausführungsformen dar.
    • 2 stellt ein Flussdiagramm für ein Videocodierungsverfahren, das die hybride SSIM-RDO implementiert, gemäß einigen exemplarischen Ausführungsformen dar.
    • 3 ist ein Blockdiagramm eines Video-Encoders, der die hybride SSIM-RDO gemäß einigen exemplarischen Ausführungsformen implementiert.
    • 4 stellt ein Flussdiagramm eines Verfahrens, bei dem für einen Makroblock ein Vorhersagemodus ausgewählt wird, gemäß einigen exemplarischen Ausführungsformen dar.
    • 5 stellt ein Blockdiagramm eines Prozessors mit einem Video-Encoder, der die hybride SSIM-RDO implementiert, gemäß einigen exemplarischen Ausführungsformen dar.
    • 6 stellt einen Makroblock und eine Erweiterung des Makroblocks, die vor der Berechnung der Verzerrungsmetriken für den Makroblock vorgenommen wird, gemäß einigen exemplarischen Ausführungsformen dar.
    • 7 ist eine grafische Darstellung von originalen und rekonstruierten Luma-Makroblöcken und ein verschiebbares Fenster, das für die Berechnung der Verzerrungsmetriken verwendet wird, gemäß einigen exemplarischen Ausführungsformen.
    • 8 ist eine grafische Darstellung von originalen und rekonstruierten Chroma-Makroblöcken und ein verschiebbares Fenster, das für die Berechnung der Verzerrungsmetriken verwendet wird, gemäß einigen exemplarischen Ausführungsformen.
    • 9A und 9B stellen exemplarischen Pseudocode für eine Hardware-Implementierung einer SSIM-Berechnung gemäß einer exemplarischen Ausführungsform dar.
    • 10 stellt eine Beziehung zwischen einem Erfolg und einem Skalierungsfaktor für den SSIM-Lagrange-Multiplikator gemäß einer exemplarischen Ausführungsform dar.
    • 11 A und 11B veranschaulichen ein erstes Beispiel eines Videobildes, das mit SSIM verarbeitet wurde, die in jedem Makroblock berechnet wurde, bzw. SSIM, die in den erweiterten Makroblöcken berechnet wurde.
    • 12A und 12B veranschaulichen ein zweites Beispiel eines Videobildes, das mit SSD-RDO bzw. mit hybrider SSIM-RDO verarbeitet wurde, gemäß einer exemplarischen Ausführungsform.
    • 13A und 13B veranschaulichen ein drittes Beispiel eines Videobildes, das mit SSD-RDO bzw. mit hybrider SSIM-RDO verarbeitet wurde, entsprechend einer exemplarischen Ausführungsform.
  • DETAILLIERTE BESCHREIBUNG VON NICHT EINSCHRÄNKENDEN EXEMPLARISCHEN AUSFÜHRUNGSFORMEN
  • Beispielhafte Ausführungsformen ermöglichen eine Videoübertragung mit optimierter Qualität und Geschwindigkeit durch den Einsatz von hybriden SSIM-RDO-Techniken. Die hybriden SSIM-RDO-Techniken bieten effiziente Implementierungen von SSIM als Verzerrungsmetrik, die bei der Auswahl von Vorhersagemodi zur Codierung von Videos für die Übertragung verwendet wird. Durch die Verwendung von SSIM, die der tatsächlichen menschlichen Wahrnehmung als Verzerrungsmetrik näher kommt, ermöglichen Ausführungsformen die Optimierung der Verzerrung gegenüber dem Ratenkoeffizienten auf eine Weise, die für die menschliche Wahrnehmung am relevantesten ist. Darüber hinaus ermöglichen Ausführungsformen die Implementierung von SSIM in Hardware und damit noch höhere Geschwindigkeiten als bei Software-Implementierungen.
  • Beispielhafte Ausführungsformen gehen auf die Einschränkungen konventioneller RDO-Techniken ein. Im Gegensatz zu herkömmlichen Techniken wie SSD-RDO, die SSD als Verzerrungsmetrik bei der Auswahl von Vorhersagemodi für die Videocodierung verwenden, von denen bekannt ist, dass sie der tatsächlichen menschlichen Wahrnehmung schlecht entsprechen, optimieren beispielsweise die hybriden SSIM-RDO-Techniken die Codierung auf eine Weise, die die menschliche Wahrnehmung von Videos genauer widerspiegelt und somit ein Video liefert, das im Einklang mit einer besseren wahrnehmbaren Qualität als herkömmliche Techniken optimiert ist. Gleichzeitig lösen exemplarische Ausführungsformen Probleme bei bestimmten konventionellen SSIM-RDO-Techniken, indem sie effiziente und in Hardware implementierbare Implementierungen der hochgenauen, aber rechnerisch komplexen RDO-Technik bereitstellen.
  • Beispielhafte Einsatzumgebungen
  • 1 stellt eine exemplarische Umgebung dar, in der bestimmte Ausführungsformen implementiert werden können. Die Umgebung 100 weist eine Video-Sendevorrichtung 101, die einen hybriden SSIM-RDO-Videoencoder 105 aufweist, ein Verbindungsnetzwerk 102 und eine Video-Empfangsvorrichtung 103 mit einem Videodecoder 106 auf. Eine Anzeige 104 kann mit der Videoempfangsvorrichtung 103 verbunden sein. Die Video-Sendevorrichtung 101 empfängt Eingabe-Rohvideoströme (z.B. einen unkomprimierten Videostrom) von einer oder mehreren Kameras oder anderen Videoquellen (nicht dargestellt) und codiert das Eingabe-Rohvideo im Encoder 105 in ein komprimiertes Video gemäß einem vorgegebenen Übertragungsformat. Der Encoder 105 codiert das Eingabevideo mit einem Codierungsverfahren, wie es in Bezug auf die folgenden 2 und 4 beschrieben wird. Das codierte Video, das über das Verbindungsnetzwerk 102 übertragen wird, wird im Videodecoder 106 decodiert. Das decodierte Video kann auf der Anzeige 104 angezeigt und/oder auf einer digitalen Speichervorrichtung (nicht separat dargestellt) zur weiteren Verarbeitung gespeichert werden. In einigen Ausführungsformen kann das komprimierte Video zur späteren Anzeige und/oder Verarbeitung gespeichert werden. In einigen Ausführungsformen sind der Encoder und der Decoder in der Lage, ein Video in einem Standardformat wie beispielsweise H.264 zu senden und zu empfangen, ohne darauf beschränkt zu sein. Der Encoder 105 ist speziell konfiguriert, um zusätzlich zur Durchführung der Verarbeitung, die für die Codierung gemäß einem ausgewählten Codierungsformat wie H.264 erforderlich ist, die hybride SSIM-RDO auszuführen. Der Decoder 106 ist konfiguriert, um Videos zu verarbeiten (z.B. das Video in eine dekomprimierte Form zu decodieren, die für die Anzeige auf einem Bildschirm geeignet ist), die gemäß dem ausgewählten Standard wie H.264 codiert sind, und sollte keine zusätzlichen Funktionen aufweisen (und erfordert dies auch nicht), die speziell für die Unterstützung der hybriden SSIM-RDO implementiert sind. In einigen Ausführungsformen kann der Encoder 105 jedoch die hybride SSIM-RDO so implementieren, dass der Decoder 106 zusätzliche Merkmale aufweisen muss, die speziell zur Unterstützung der hybriden SSIM-RDO implementiert sind.
  • Gemäß einigen Ausführungsformen sind die Sendevorrichtung 101 und die Empfangsvorrichtung 103 physikalisch getrennte elektronische Vorrichtungen, die über ein Kommunikationsnetzwerk 102 wie das Internet, ein lokales Netzwerk oder ein Weitverkehrsnetzwerk verbunden sind. Das Netzwerk 102 kann drahtgebundene Kommunikationsverbindungen und/oder drahtlose Kommunikationsverbindungen aufweisen. In einigen Ausführungsformen können die Vorrichtungen 101 und 103 geografisch getrennt sein. In einigen Ausführungsformen können die Vorrichtungen 101 und 103 getrennt, aber relativ nahe beieinander angeordnet sein, z.B. innerhalb eines Fahrzeugs (z.B. eines autonomen Fahrzeugs).
  • Gemäß einigen anderen Ausführungsformen befinden sich die Sendevorrichtung 101 und die Empfangsvorrichtung 103 beide auf derselben Verarbeitungsvorrichtung, wie beispielsweise bei einem System-on-Chip (SoC). In solchen Ausführungsformen kann beispielsweise die Umgebung 100 ein SoC sein, das in Anwendungen wie dem Empfangen von Videoeingaben von einer oder mehreren Kameras oder anderen Videoquellen und, nach der Verarbeitung der Videoeingabe im SoC, dem Anzeigen auf einer Anzeigevorrichtung verwendet werden kann. In einer bestimmten exemplarischen Ausführungsform kann das SoC in ein autonomes Fahrzeug integriert sein und Eingaben von einer Vielzahl von Kameras empfangen und verarbeiten, die im gesamten Fahrzeug angeordnet sind. Das SoC kann dann ein verarbeitetes Bild auf einem Armaturenbrett oder einer anderen Anzeige im Fahrzeug anzeigen, das Video für die weitere Verarbeitung speichern und/oder das codierte Video über ein Netzwerk an einen entfernten Ort übertragen.
  • Hybrides SSIM-RDO-Videocodierungsverfahren
  • 2 stellt ein Flussdiagramm für einen Videocodierverfahren 200, das die hybride SSIM-RDO implementiert, gemäß einigen exemplarischen Ausführungsformen dar. Das Videocodierverfahren 200 kann beispielsweise in einem hybriden SSIM-RDO-Encoder, wie dem in 1 dargestellten Encoder 105, implementiert sein. Das codierte Video kann an ein Netzwerk wie das Netzwerk 102 ausgegeben werden und kann von einem Decoder 106 empfangen und decodiert werden, der ebenfalls mit dem Netzwerk verbunden ist.
  • Das Codierverfahren 200 kann bei Schritt bzw. Vorgang 202 eingegeben werden, wenn das Eingabe-Rohvideo von einer oder mehreren Videoquellen empfangen wird. Das Eingabe-Rohvideo kann ein Video sein, das von einer oder mehreren Kameras oder anderen Sensoren aufgenommen wurde. In einigen Ausführungsformen kann das eingegebene Rohvideo von einem Prozessor generiert sein (z.B. die Ausgabe eines Computerspiels) und kann Kamera- oder andere Sensoreingaben aufweisen oder nicht.
  • Das Eingabe-Rohvideo kann in den Vorgängen 204-208 gemäß einem Codierungsformat wie z.B. H.264 verarbeitet werden. Obwohl H.264 in dieser Offenbarung für die beschriebenen Ausführungsformen als primäre Videocodiersyntax verwendet wird, versteht der Fachmann, dass die Ausführungsformen nicht auf H.264 als Codierungs- und/oder Ausgabevideobitstreamformat beschränkt sind. Die Lehren dieser Offenbarung können auch auf andere Videocodierungs- und/oder Bitstromformate wie H.265, MPEG4, MPEG2 und/oder jede Videocodierungstechnik anwendbar sein, die eine Auswahl von Codierungsmodi zur Steuerung der Rate und/oder des Verzerrungsgrades erfordert.
  • Bei Vorgang 204 wird das Eingabevideo mit der in dieser Offenbarung beschriebenen hybriden SSIM-RDO-Technik codiert. Wie im Folgenden, z.B. mit Bezug zu den 3-4, beschrieben ist, wählt die hybride SSIM-RDO den optimalen Vorhersagemodus (z.B. aus den vielen im H.264-Standard spezifizierten Intra- und Inter-Vorhersagemodi) für jeden Block eines vorbestimmten Blocktyps (z.B. Makroblocks) in einem Frame eines Eingabevideo aus, gemäß dem der Block des vorbestimmten Blocktyps für das Ausgabevideo transformiert und quantisiert wird.
  • Im Beispiel von nicht einschränkenden Ausführungsformen stellt ein Vorhersagemodus eine Spezifikation bereit, wie eine zuvor codierte Gruppe von Pixeln verwendet werden kann, um einen nachfolgenden Block zu codieren. Der Vorhersagemodus kann auch die Art und Weise festlegen, wie die angegebene Gruppe von zuvor codierten Pixeln zu verwenden ist, um den vorhergesagten Block zu erzeugen. Jedes Videocodierungsformat (z.B. H.264, H.265, etc.) kann einen oder mehrere Vorhersagemodi definieren, die verwendet werden können, um vorhergesagte Blöcke zu erzeugen, die diesem Codierungsformat entsprechen. Wie im Folgenden in Bezug auf H.264 beschrieben ist, kann der für ein bestimmtes Codierungsformat definierte Satz von Vorhersagemodi einen Intra-Vorhersagemodus und/oder einen Inter-Vorhersagemodus umfassen. Nachdem ein vorhergesagter Block erzeugt wurde, wie im Folgenden näher beschrieben wird, wird die Differenz zwischen dem vorhergesagten Block und dem Eingabeblock in einem Restblock dargestellt, der dann codiert und übertragen werden kann. Der Restblock enthält alle oder zumindest die Mehrheit der Informationen, die schließlich an den Decoder über den Inhalt des Eingabeblocks übertragen werden. Somit ist die Videoqualität des Restblocks zumindest weitgehend entscheidend für die Qualität des Videos, das am Decoder wiedererzeugt werden kann. Daraus folgt, dass, da der Restblock teilweise basierend auf dem vorhergesagten Block bestimmt wird und da der vorhergesagte Block primär basierend auf dem Vorhersagemodus bestimmt wird, die Auswahl des optimalen Vorhersagemodus für jeden Eingabeblock ein wichtiger Aspekt ist, der die Qualität des Videos beeinflusst, das am Decoder reproduzierbar ist.
  • Um einen Block eines Eingabevideos zu codieren, wird in exemplarischen Ausführungsformen die hybride SSIM-RDO, die in Bezug auf die 3 und 4 beschrieben werden kann, verwendet, um eine Vielzahl von Vorhersagemodi effizient auszuwerten und als den optimalen Vorhersagemodus den Vorhersagemodus auszuwählen, der den entsprechenden codierten Restblock geliefert wird, wobei die beste (und/oder optimale) Wahrnehmungsqualität geliefert wird. Ein Restblock, der einem Eingabevideo-Block entspricht, kann dann mit dem ausgewählten Vorhersagemodus erzeugt und codiert werden.
  • Bei Vorgang 206 wird das Eingabevideo, das nach der hybriden SSIM-RDO-Technik bei Vorgang 204 codiert wird, bezüglich Entropie codiert bzw. entropiecodiert. Die Entropiecodierung beinhaltet das Durchführen einer Codierung, wie beispielsweise einer Codierung mit variabler Länge (z.B. VLC) oder einer Adaptiven Binären Arithmetischen Codierung (z.B. CABAC) auf dem bereits transformierten/quantisierten Video.
  • Bei Vorgang 208 wird der bezüglich Entropie codierte Frame übertragen. In einigen Ausführungsformen beinhaltet die Übertragung einer Sequenz von Einzelbildern in H.264 das Übertragen von Einzelbildern, um eine Gruppe von Bildern ((„Group of Pictures“) GOP) zu bilden, d.h. eine Sequenz von Einzelbildern, die ein oder mehrere I-Frames, die eigenständig codiert sind, P-Frames, die vom nächstgelegenen I- oder P-Frame vorwärts vorhergesagt werden, und B-Frames, die bidirektional von den nächstgelegenen vergangenen oder zukünftigen I- oder P-Frames vorhergesagt werden. Die codierten Daten können einer Netzwerkabstraktionsschicht zugeordnet werden, die in einem Netzwerk oder einer anderen Verbindungsmatrix gemäß einem geeigneten Transportschichtformat, wie beispielsweise RTP/IP für drahtgebundene oder drahtlose Kommunikation, Dateiformate wie MP4, H.32X-Konferenz, MPEG2 oder dergleichen, übertragen werden.
  • Gemäß zumindest einigen Ausführungsformen ändert die hybride SSIM-RDO-Verarbeitung die Syntaxstruktur des codierten Bitstroms nicht. Das heißt, ein Encoder und ein Decoder, die für H.264-Video-Bitströme eines bestimmten Satzes von H.264-Profilen und -Levels konfiguriert sind, sind auch in der Lage, H.264-Video-Bitströme zu verarbeiten, unabhängig davon, ob das Video mit der in dieser Anmeldung beschriebenen hybriden SSIM-RDO codiert wird oder nicht. Alternativ können einige Ausführungsformen erfordern, dass der Decoder beispielsweise aufgrund eines Parameters im empfangenen Videobitstrom erkennt, dass der Videobitstrom mit der hybriden SSIM-RDO codiert ist. So kann der Decoder beispielsweise in einigen Ausführungsformen eine oder mehrere Einstellungen für eine Anzeigevorrichtung unterschiedlich konfigurieren (z.B. unterschiedliche Anzeigequalitätsstufen), je nachdem, ob ein Parameter im Videostrom anzeigt, dass ein Block oder Frame gemäß SSIM-RDO codiert ist. In einigen anderen Ausführungsformen kann der Decoder seine eigenen Decodierkonfigurationen ändern (z.B. den Zugriff auf eine Teilmenge der verfügbaren H.264-Profile und - Stufen optimieren), je nachdem, ob der Video-Bitstrom gemäß SSIM-RDO codiert ist oder nicht.
  • Beispielhaftes Blockdiagramm eines Encoders
  • 3 stellt ein Blockdiagramm eines Video-Encoders 300 zur Implementierung der hybriden SSIM-RDO gemäß einigen exemplarischen Ausführungsformen dar.
  • Der Encoder 300 kann einen Transformations-Codierungs-Abschnitt 302, einen Entropie-Codierungsabschnitt 308, einen Frame-Übertragungsabschnitt 310, einen Abschnitt 312 der hybriden SSIM-RDO-, einen Vorhersageabschnitt 314, einen Blockrekonstruktionsabschnitt 316, einen Speicher für rekonstruierte Blöcke 318, eine Rohvideo-Empfangsschnittstelle 322 und einen Restsignalgenerator 320 beinhalten. Der Fachmann erkennt, dass der Encoder 300 in einigen Ausführungsformen einen oder mehrere der in 3 dargestellten Abschnitte nicht aufweisen kann und/oder einen oder mehrere zusätzliche Abschnitte aufweisen kann, die in 3 nicht dargestellt sind.
  • Die Rohvideo-Empfangsschnittstelle 322 ist konfiguriert, um ein Roheingabevideo von einer oder mehreren Kameras und/oder anderen Videoquellen zu empfangen. Das Roheingabevideo kann in Frames, Makroblöcken und/oder Blöcken in einem Speicher der Empfangsschnittstelle 322 ausgebildet sein. Ein Eingaberohvideo-Frame 331 des empfangenen Rohvideos kann dem Vorhersageabschnitt 314, dem Restsignalgenerator 320 und Abschnitt 312 der hybriden SSIM-RDO bereitgestellt werden, ein Block 332 eines vorbestimmten Blocktyps (z.B. ein Makroblock) gleichzeitig. Operationen wie Trimmen / Cropping, Farbkonvertierung/-korrektur und/oder Rauschunterdrückung der unkomprimierten Rohdaten der Videoquelle können am Eingabe-Frame oder Block durchgeführt werden, bevor sie im Encoder 300 weiterverarbeitet werden.
  • Die Verarbeitung des Eingabevideos im Encoder 300 kann blockweise für jeden Block des vorgegebenen Blocktyps im Eingabeframe erfolgen. In dieser Offenbarung wird ein Makroblock, wie er in H.264 definiert ist, als ein Block des vorgegebenen Blocktyps betrachtet. Im H.264-Standard, der das YCbCr-Farbformat verwendet, umfasst ein Makroblock einen 16x16 Block mit Y-Daten (Luminanzdaten oder „luma“) und jeweils einen 8x8 Block für die Cb- und Cr-Daten (Chrominanzdaten oder „Chroma“). Wenn ein Makroblock übertragen wird, können die Daten für den Makroblock als Makroblock-Header gefolgt von Daten für entsprechende Blöcke im Makroblock angeordnet sein. Obwohl ein Makroblock per Definition in H.264 einen Luma-Block und zwei Chroma-Blöcke beinhaltet, kann sich die Verwendung des Begriffs Makroblock in dieser Offenbarung auf eine beliebige Kombination aus diesem Luma-Block und den beiden Chroma-Blöcken beziehen.
  • Der Vorhersageabschnitt 314 erzeugt abhängig von dem Eingabeframe 331 und/oder Makroblock 332 von der Empfangsschnittstelle 322 und/oder einem oder mehreren zuvor rekonstruierten Frames/Makroblöcken aus dem Speicher 318 für rekonstruierte Blöcke einen vorhergesagten Frame oder vorhergesagten Makroblock. Während der Verarbeitung eines Eingabeframes 331 im Encoder 300 wird jeder Block (z.B. Makroblock 332) räumlich oder zeitlich vorhergesagt. Eine räumliche Vorhersage (auch Intra-Frame-Vorhersage genannt) identifiziert eine Gruppe von Samples oder Blöcken, die ähnliche Eigenschaften (z.B. Farbe, Intensität usw.) aufweisen, und verwendet eine gemeinsame Darstellung für die jeweiligen Samples oder Blöcke dieser Gruppe. Die zeitliche Vorhersage (auch als Inter-Frames-Vorhersage bezeichnet) prognostiziert die Bewegung zwischen den Frames basierend auf einem oder mehreren vorherigen Frames, die aus dem Speicher 318 für rekonstruierte Blöcke abgerufen werden können.
  • Die vorhergesagten Frames für jeden Block werden gemäß einem jeweils ausgewählten Vorhersagemodus erzeugt. In einigen Ausführungsformen kann jedoch die Auswahl eines Vorhersagemodus für eine Gruppe von einem oder mehreren Blöcken vorgenommen werden.
  • H.264 definiert viele Variationen bei den Vorhersagemodi, aus denen ein oder mehrere Vorhersagemodi ausgewählt werden können, die zum Erzeugen eines vorhergesagten Blocks verwendet werden können. Für die Intra-Mode-Vorhersage wird der aktuelle Block durch benachbarte Pixel im oberen und linken Block vorhergesagt, die im gleichen Eingabe-Frame früher decodiert werden. H.264 definiert 9 Intra-Vorhersagemodi für 4 × 4 Luma-Blöcke und 4 Intra-Vorhersagemodi für 16×16 Luma-Blöcke. Jeder der von H.264 definierten Vorhersagemodi spezifiziert eine jeweils andere Art und Weise, wie Samples aus einem oberen Block und/oder einem linken Block zum Bestimmen eines vorhergesagten Blocks verwendet werden.
  • Die Inter-Modus-Vorhersage prognostiziert Blöcke eines Eingabe-Frames basierend auf den Blöcken in einem oder mehreren zuvor aufgetretenen Frames. Für die Inter-Modus-Vorhersage sind in H.264 sieben Modi mit unterschiedlichen Partitionsgrößen und -formen angegeben.
  • H.264 definiert mehrere Partitionstypen für Makroblock-Partitionen, innerhalb derer jeder der Inter-Vorhersage-Modi bewertet wird. Jeder Partitionstyp ist eine Blockgröße zum Unterteilen eines Makroblocks in einen oder mehrere Blöcke (bezüglich der H.264-Inter-Vorhersage auch als „Partitionen“ bezeichnet). Bewegungsvektoren werden für jede der Partitionen bei den angegebenen Partitionstypen berechnet. Gemäß einigen Ausführungsformen kann für jeden Bewegungsvektor ein SATD-Wert (Summe der absolut transformierten Differenzen) berechnet werden, und die Bewegungsvektoren mit dem geringsten SATD-Wert können für jeden Partitionstyp ausgewählt werden. Die Inter-Modus-Bewertungen können dann mit dem ausgewählten Bewegungsvektor für jeden Partitionstyp durchgeführt werden.
  • Einige Ausführungsformen können auch einen Skip-Modus beinhalten, bei dem die Vorhersage eines Blocks vollständig übersprungen wird und keine Informationen für diesen Block an den Decoder gesendet werden. Der Decoder, der keinen Restfehler für den übersprungenen Block erhält, rekonstruiert den Block aus benachbarten Blöcken. Der Encoder kann den Skip-Modus wählen, wenn die Rate-Distortion-Kosten des Skip-Modus niedriger sind als bei jedem Intra- oder Inter-Modus.
  • Der Restfehler-Signalgenerator 320 erzeugt einen Restfehler-Makroblock von Videodaten, der dem Eingabevideo-Makroblock entspricht, indem er beispielsweise einen vorhergesagten Makroblock (z.B. wie durch den Vorhersageabschnitt 314 bestimmt) vom Eingabe-Makroblock subtrahiert. Der Unterschied in den Makroblockinformationen (d.h. dem Vorhersagefehler) zwischen dem Eingabevideo-Makroblock und dem vorhergesagten Makroblock wird als Restfehler-Makroblock oder Restfehler bezeichnet.
  • Der vom Restfehler-Signalgenerator 320 erzeugte Restfehler-Makroblock wird in den Transformations-Codierungsabschnitt 302 eingegeben, der Operationen wie das Transformieren und Quantisieren des Restfehler-Makroblocks durchführt. Der Transformationsabschnitt 304 wendet eine Transformation auf den Restfehler-Makroblock an, um einen Satz von Transformationskoeffizienten zu erhalten, die dem Inhalt dieses Makroblocks entsprechen. So kann beispielsweise eine diskrete Cosinustransformation (DCT) auf den Eingabevideo-Makroblock angewendet werden, um einen entsprechenden Transformations-Makroblock aus DCT-Koeffizienten zu erhalten. In einigen Ausführungsformen kann eine DCT-Transformation auf entsprechende 4x4-Blöcke im Makroblock angewendet werden.
  • Während der Transformationsabschnitt 304 den Restfehler in einen Satz von Transformationskoeffizienten umwandelt, komprimiert der Quantisierungsabschnitt 306 den Satz von Transformationskoeffizienten des Frames weiter, indem er die Koeffizienten mit der minimalen (oder zumindest einer niedrigeren) Genauigkeit darstellt, die erforderlich ist, um die gewünschte Videoqualität zu erreichen. Viele Videocodierstandards, wie beispielsweise H.264, verwenden eine einheitliche Quantisierung, bei der der Koeffizientenraum als eine Reihe von gleich großen Intervallen betrachtet wird. Es kann jedoch eine ungleichmäßige Quantisierung verwendet werden. Sowohl der Transformationsabschnitt 304 als auch der Quantisierungsabschnitt 306 arbeiten so, dass der Restfehler-Makroblock Block für Block (z.B. durch Verarbeitung aufeinanderfolgender 8x8 Blöcke innerhalb eines 16x16 Makroblocks mit Luma-Informationen) in eine kompaktere Form gebracht wird.
  • Der Abschnitt 312 der hybriden SSIM-RDO arbeitet als Rate-Distortion-Optimierer, der das Verzerrungsniveau und die Bitrate des Ausgabevideos verwaltet, und einen Rate-Bestimmungsabschnitt 327, einen SSD-Distortion-Bestimmungsabschnitt 325, einen SSIM-Distortion-Bestimmungsabschnitt 326, einen Lambda-Bestimmungsabschnitt 328, einen Speicher 329, einen Over-Fetching-Abschnitt 330, einen SSD-Modus-Identifizierer 335 und einen SSIM-Modus- Identifizierer 336 beinhaltet. Der SSD-Distortion-Bestimmungsabschnitt 325 und der SSIM-Distortion-Bestimmungsabschnitt 326 können als Distortion-Bestimmer bezeichnet werden. Der SSD-Modus- Identifizierer 335 und der SSIM-Modus- Identifizierer 336 können als Vorhersagemodus- Identifizierer bezeichnet werden. Der Abschnitt 312 der hybriden SSIM-RDO führt SSD- und SSIM-Berechnungen an originalen und rekonstruierten Makroblöcken und/oder Frames durch, um Vorhersagemodi gemäß SSD-RDO und SSIM-RDO zu bestimmen. Gemäß einigen Ausführungsformen werden eine Kopie des Roh-Video-Makroblocks, eine Kopie des Restfehler-Makroblocks nach der Transformation und Quantisierung, aber vor der Rekonstruktion oder Entropiecodierung, und eine Kopie des rekonstruierten Makroblocks vom Abschnitt 312 der hybriden SSIM-RDO empfangen.
  • In den in Bezug auf 3 beschriebenen exemplarischen Ausführungsformen werden die Distortion-Metriken (z.B. SSD und SSIM) im Pixelbereich berechnet, z.B. unter Verwendung des ursprünglichen Makroblocks (z.B. Makroblocks 332 vor dem Restfehler-Signalgenerator 320) vor der Transformation und des rekonstruierten Blocks nach der inversen Transformation. Es ist jedoch zu beachten, dass in einigen Ausführungsformen die Distortion-Metriken in der Transformations-Domäne berechnet werden können, wobei z.B. eine Kopie des ursprünglichen Makroblocks nach der Anwendung der Transformation und der rekonstruierte Frame nach der inversen Quantisierung, aber vor der Anwendung der inversen Transformation, verwendet werden.
  • Ein Schalter 324 kann betätigt werden, um die Kopie des Restfehler-Makroblocks nach der Transformation und Quantisierung bei dem Abschnitt 312 der hybriden SSIM-RDO bereitzustellen. So kann der Schalter beispielsweise in einem von zwei Zuständen betrieben werden: In einem Übertragungszustand kann der Schalter 324 konfiguriert sein, um den Makroblock zum Entropiecodierer zu leiten, und in einem Modusauswahlzustand kann der Schalter konfiguriert sein, um die Makroblöcke zu dem Abschnitt 312 der hybriden SSIM-RDO zu leiten. Während einer Modusauswahl kann der Schalter 324 somit die Ausgabe des Quantisierungsabschnitts 306 auf den Abschnitt 312 der hybriden SSIM-RDO und auf den Blockrekonstruktions-Abschnitt 316 lenken. Die Kopie des am Blockrekonstruktionsabschnitt 316 erhaltenen Restfehler-Makroblocks wird rekonstruiert, indem sie einer inversen Quantisierung und inversen Transformation unterzogen wird, um eine Rekonstruktion des Restfehler-Makroblocks zu erhalten. Die Rekonstruktion des Restfehler-Makroblocks kann einer Bewegungskompensation (wenn der Restfehler basierend auf einer Bewegungsvorhersage erzeugt wurde) und/oder einer inversen Intra-Vorhersage (wenn der Restfehler basierend auf einer Intra-Vorhersage erzeugt wurde) unterzogen werden, um dann eine Rekonstruktion des eingegebenen Makroblocks zu erhalten. Die Rekonstruktion des Eingabe-Makroblocks kann im Blockrekonstruktionsspeicher 318 gespeichert werden.
  • Wie bereits erwähnt, arbeiten RDO-Techniken so, dass sie den am besten geeigneten Vorhersagemodus auswählen und gleichzeitig die Videoqualität und die Bitrate optimieren. Herkömmliche H.264-Encoder sind konfiguriert, um alle verfügbaren Vorhersagemodi zu testen, indem sie die mit jedem Modus verbundenen Kosten auswerten und dann den kostengünstigsten Modus auswählen. Die Kosten können sich auf das Verhältnis des inkrementellen Qualitätsverlustes (z.B. bestimmt durch die Differenz der Verzerrung bzw. Distortion in ursprünglichen und rekonstruierten Makroblöcken/Frames) und der inkrementellen Biteinsparungen (z.B. bestimmt durch die Differenz bei den Bits, die zur Codierung des Originals und des rekonstruierten Makroblocks/Frames benötigt werden) beziehen.
  • Wenn die SSIM als Distortionmetrik verwendet wird (wenn SSIM zum Schätzen von Verzerrungen verwendet wird), sind aufgrund der hohen Rechenkomplexität von SSIM die mit der Vollmodusentscheidung von H.264 verbundenen Rechenkosten/Aufwendungen für eine praktische Hardware-Implementierung von Echtzeitanwendungen der Videocodierung zu hoch. So wären beispielsweise ein oder mehrere von der Die-Space, den Kosten für die erforderliche HardwareSchaltung und/oder der für die Verarbeitung benötigten Zeit unerschwinglich. Die Erfinder beobachteten anhand empirischer Studien, dass in einer großen Mehrheit der Fälle der von der SSIM-RDO ausgewählte Vorhersagemodus auch zu den wenigen besten Vorhersagemodi gehört, die nach SSD-RDO geordnet sind. Die Erfinder verstanden auch, dass diese Übereinstimmung zwischen der einfacheren SSD und der komplexeren SSIM genutzt werden kann, um die Vorteile der genaueren SSIM-basierten Modusauswahl zu erhalten und gleichzeitig die Technik mit wesentlich geringeren Kosten und höherer Effizienz als die SSIM-basierte Modusauswahl zu implementieren.
  • Der Verlust der Videoqualität durch Quantisierung kann mit der hybriden SSIM-RDO verwaltet werden. So kann beispielsweise der entsprechende Quantisierungsparameter (QP) für die Quantisierung basierend auf einer für den Frame berechneten Distortion-Metrik berechnet werden. In einigen Ausführungsformen können der QP- und der Lagrange-Multiplikator für alle Blöcke des Videobildes konstant sein.
  • Eine Kopie des transformierten/quantisierten Makroblocks wird am Blockrekonstruktionsabschnitt 316 empfangen, der betrieben werden kann, um eine inverse Quantisierung, inverse Transformation und/oder Bewegungskompensation durchzuführen, um einen rekonstruierten Frame korrespondierend mit dem Eingabe-Frame zu erzeugen. Der rekonstruierte Frame/Makroblock kann anschließend für die Vorhersage usw. nachfolgender Frames verwendet werden. Die Bewegungskompensation für die Rekonstruktion kann basierend auf Informationen zur Bewegungsschätzung für diesen Eingabe-Frame, wie sie aus dem Vorhersageabschnitt 314 empfangen werden, durchgeführt werden.
  • Die dem Frame zugeordnete Bitrate kann durch den Ratenbestimmungsabschnitt 327 aus der Kopie des transformierten und quantisierten Restfehler-Makroblocks bestimmt werden. So kann beispielsweise die Anzahl der Bits, die für die Codierung des Makroblocks erforderlich sind, oder ein anderen Maß, abhängig von welchem die Anzahl der Bits bestimmt werden kann, als die dem Makroblock zugeordnete Rate bestimmt werden. In einigen Ausführungsformen kann die Rate aus dem transformierten und quantisierten Makroblock bestimmt werden, nachdem er ebenfalls einer Entropiecodierung unterzogen wurde. So erhält beispielsweise in solchen Ausführungsformen anstelle oder zusätzlich zum Empfangen einer Kopie des transformierten und quantisierten Makroblocks im Abschnitt 312 der hybriden SSIM-RDO der Abschnitt 312 der hybriden SSIM-RDO eine Kopie des transformierten und quantisierten Makroblocks, nachdem er im Entropiecodierungsabschnitt 308 entropiecodiert wurde.
  • Die dem Frame zugeordnete SSD-Distortion kann durch den Abschnitt 325 zur Bestimmung der SSD-Distortion bestimmt werden. Die SSD-Distortion bzw. SSD-Verzerrung kann wie folgt bestimmt werden: D S S D = i ( x i y i ) 2 ,
    Figure DE102019103346A1_0003
    wobei x, y die beiden zu vergleichenden Bildbereiche (z.B. entsprechende Blöcke im ursprünglichen Makroblock und rekonstruierten Makroblock) sind.
  • Die mit dem Frame verbundene SSIM-Distortion kann durch den SSIM-Distortionbestimmungsabschnitt 326 bestimmt werden. Wie bereits erwähnt ist, ist die SSIM eine Metrik für das Testen und Optimieren der wahrnehmbaren Videoqualität und berücksichtigt übergeordnete strukturelle Informationen im Videoinhalt. Im Gegensatz zu fehlerbasierten Metriken wie PSNR, die mit der Wahrnehmung des menschlichen Auges unvereinbar sein können, berücksichtigt SSIM das menschliche Sehsystem. Der SSIM-Index kann so konfiguriert werden, dass er ein Dezimalwert zwischen 0 und 1 ist, wobei ein Wert von 0 eine Nullkorrelation mit dem Originalbild impliziert, während eine 1 genau das gleiche Bild wie das Originalbild impliziert. Die SSIM-basierte Distortionmetrik DSSIM kann wie folgt berechnet werden: D S S I M ( x , y ) = ( 2 μ x + μ y + c 1 μ x 2 + μ y 2 + c 1 ) ( 2 σ x σ y + c 2 σ x 2 + σ y 2 + c 2 ) ,
    Figure DE102019103346A1_0004
    wobei µx, µy, σx, σy, σxy Mittelwert, Standardabweichung bzw. Kovarianz von x und y sind; c1, c2 sind Konstanten, c1, c2 in Gleichung 4 sind konstant, wobei c1 = (k1 × L)2, c2 = (k2 × L)2, k1 = 0,01, k2 = 0,03, L = 255 für eine 8-Bit-Sequenz gelten. Der Mittelwert stellt die Leuchtdichtekomponente des Vergleichs zwischen x und y dar, die Varianz stellt die Kontrastkomponente dar, und die Kovarianz stellt die Strukturkomponente dar. Der Mittelwert, die Varianz und die Kovarianz werden wie folgt berechnet: μ = x , y I ( x , y ) N
    Figure DE102019103346A1_0005
    σ 2 = x , y ( I ( x , y ) μ ) 2 N
    Figure DE102019103346A1_0006
    σ x y = x , y I x ( x , y ) I y ( x , y ) N μ x μ y
    Figure DE102019103346A1_0007
    wobei N die Anzahl der Pixel in dem Block/Frame ist, für den DSSIM berechnet wird.
  • Die obigen Berechnungen liefern eine SSIM-Metrik mit folgenden Eigenschaften: Symmetrie (z.B. DSSIM(x, y) = DSSIM(y, x)); Normierung (z.B. 0 ≤ DSSIM(x, y) ≤ 1, je näher bei 1, desto besser ist die Qualität und umgekehrt); und nur ein Maximum (z.B. DSSIM(x, y) = 1 wenn und nur wenn x = y).
  • Zur Vereinfachung der Berechnung wird in einigen beispielhaften Ausführungsformen dSSIM wie folgt von DSSIM berechnet: d S S I M = i = 0 9 ( 1 D S S I M , i )
    Figure DE102019103346A1_0008
  • dSSIM ermöglicht die Neuformulierung der RDO, um die Minimierung von dSSIM zu nutzen, anstatt DSSIM zu maximieren.
  • Herkömmliche SSIM-RDO-Algorithmen berechnen DSSIM vollständig innerhalb des aktuellen Makroblocks. Das heißt, bei herkömmlichen Techniken wird die SSIM-Metrik vollständig innerhalb der Grenzen des 16x16 Luma-Makroblocks und/oder des 8x8 Chroma-Makroblocks berechnet. Die Erfinder erkannten, dass eine solche Berechnung bei großer Bildauflösung das Auftreten von Rauschartefakten (z.B. Blockartefakten) verursacht. Denn wenn die Bildgröße groß ist, neigt die Textur innerhalb eines Makroblocks dazu, glatt zu sein, und wenn DSSIM innerhalb des Makroblocks berechnet wird, wird der RDO-Prozess wahrscheinlich oft in eine Lösung eines lokalen Minimums geleitet, wodurch eine erhebliche Verzerrung bzw. Distortion an der Makroblockgrenze entsteht. Um dies zu umgehen, erweitern exemplarische Ausführungsformen zunächst sowohl den ursprünglichen Makroblock als auch den rekonstruierten Makroblock mit Originalpixeln (z.B. Pixel aus dem Eingabe-Rohvideo) zum Auffüllen des Makroblockpaares und berechnen dann DSSIM auf dem erweiterten Blockpaar. Durch diese Art der Berechnung von DSSIM wird die Verzerrung an den Makroblockgrenzen auch bei der RDO berücksichtigt.
  • So wird in Ausführungsformen die SSIM-Berechnung nicht auf die originalgroßen Makroblöcke, sondern auf erweiterte Makroblöcke durchgeführt. So wird beispielsweise ein 16x16 Luma-Block auf 24x24 und ein 8x8 Chroma-Block auf 16x16 erweitert, bevor DSSIM für den Makroblock berechnet wird. 6-8 beschreiben die Erweiterung von Makroblöcken genauer. Der Over-Fetching-Abschnitt 330 kann die Logik beinhalten, um die Art und Größe des Makroblocks zu bestimmen und Padding-Pixel aus den eingegebenen Videodaten zu erhalten, wie beispielsweise von der Empfangsschnittstelle 322. So kann beispielsweise der Over-Fetching-Abschnitt 330 die Pixelpositionen der Padding-Pixel basierend auf der Position des aktuellen Makroblocks in einem Eingabeframe bestimmen und die Padding-Pixel anfordern.
  • Die Auswahl des Vorhersagemodus für einen Makroblock kann nach Auswertung der durch jeden der Vorhersagemodi erzeugten Verzerrung erfolgen. Wie bereits erwähnt, kann jeder Vorhersagemodus viele Variationen beinhalten, die auch einzeln zur Auswahl als ausgewählter Vorhersagemodus für den Makroblock ausgewertet werden können. Um die Implementierungskomplexität des Verfahrens zu reduzieren, um die Hardware-Implementierung effizient und umsetzbar zu halten, wird die DSSIM nur fürden Siegerkandidaten jedes Vorhersagemodus berechnet. Die SSD-RDO, die rechnerisch wesentlich einfacher ist als die SSIM-RDO, wird verwendet, um den Siegerkandidaten für jeden Vorhersagemodus zu bestimmen. So kann beispielsweise der SSD-Modus-Identifizierer 335 die Siegerkandidaten für Vorhersagemodi unter Verwendung von Gleichung 16 aus einer Reihe von Vorhersagemodi auswählen, die standardmäßig oder durch Konfiguration identifiziert wurden. Die Berechnung der Distortionmetriken und die Auswahl des Vorhersagemodus werden im Folgenden und in Bezug auf 4 näher beschrieben. Beispielhafter Pseudocode für die Hardware-Implementierung von DSSIM für einen 8x8-Block ist in den 9A und 9B dargestellt.
  • Der Lagrange-Multiplikator (hier auch „Lambda“ genannt) für den Frame kann im Lambda-Bestimmungsabschnitt 328 berechnet werden. Die Lambda-Schätzung ist ein wesentlicher Aspekt bei der SSIM-RDO. In vielerlei Hinsicht hat das Lambda einen signifikanten Einfluss auf den Erfolg bei Bitrateneinsparungen usw. bei der SSIM-RDO. Im Gegensatz zur SSD-RDO, bei der die Rate-to-Distortion-Kurve analytisch beschrieben werden kann, ist das Verhältnis zwischen DSSIM und Rate stark vom Inhalt abhängig, was die Abschätzung des optimalen Lambdas erschwert. Herkömmliche SSIM-RDO-Techniken verwenden hochkomplexe Algorithmen, um das Lambda auf Frame- oder Makroblockebene zu bestimmen. Siehe z.B. Shiqi Wang, et al. „SSIM-Motivated Rate-Distortion Optimization for Video Coding", IEEE Trans. On Circuits and Systems for Video Tech.; 22.4 (2012):516-529.
  • Im Gegensatz zur Lambda-Bestimmung bei den konventionellen SSIM-Verfahren stellt das hybride SSIM-RDO-Verfahren ein rechnerisch einfaches bezüglich des Frame-Levels aktualisiertes Lambda bereit. Das Lambda-Bestimmungsverfahren bei dem hybriden SSIM-RDO-Verfahren basiert auf folgender Annahme: Der von der SSD-RDO und SSIM-RDO bestimmte Siegerkandidatenmodus sollte in vielen Fällen gleich sein (da PSNR und SSIM stark korreliert sind), und wenn also die DSSIM (oder die entsprechende dSSIM) auf die ähnliche Größe der SSD skaliert wird, dann sollte λSSIM, der der DSSIM zugeordnete Lagrange-Multiplikator ist, auch zu dem λSSD ähnlich sein. Darauf aufbauend kann das einfache Lambda-Bestimmungsverfahren auf Frameebene für den Frame n wie in Gleichung 9 dargestellt implementiert werden. λ S S I M , n = λ S S D S
    Figure DE102019103346A1_0009
    wobei der Skalierungsfaktor s basierend auf der DSSD/dSSIM-Verzerrung auf Frameebene wie folgt berechnet wird: s n = { s 0 ,   n = 1 ( s n 1 + s n 2 2 ) ,   n > 1
    Figure DE102019103346A1_0010
    s n = frame  n  total  D S S D frame  n  total  d S S I M
    Figure DE102019103346A1_0011
    Die Erfinder beobachteten auch, dass zumindest in einigen Ausführungsformen ein verbesserter Codierungserfolg erreicht werden kann, indem ein Skalierungsfaktor mit λSSIM multipliziert wird. Dieser Aspekt wird im Folgenden in Bezug auf 10 näher beschrieben. Basierend auf den Beobachtungen, wie sie in 10 zu sehen sind, kann ein Skalierungsmultiplikator s' berechnet werden, um den berechneten λSSIM zu verfeinern: λ S S I M , n ' = s ' × λ S S I M , n
    Figure DE102019103346A1_0012
    wobei s'mit der Bewegung in der Videosequenz in Beziehung steht und proportional zur Bewegungsintensität ist. In einigen exemplarischen Ausführungsformen kann die durchschnittliche Bewegungsvektorstatistik für die verarbeiteten Makroblöcke erhalten werden, und diese Informationen können zur Darstellung der Bewegungsintensität verwendet werden. Darüber hinaus könnte in exemplarischen Ausführungsformen eine lineare Beziehung verwendet werden, um den durchschnittlichen Bewegungsvektor (average MV) auf den Skalierungsfaktor abzubilden: s ' = a × a v e r a g e   M V + b
    Figure DE102019103346A1_0013
    wobei die Konstanten a, b anhand von Sequenzen trainiert werden können, die dem gerade codierten Video ähneln. So kann beispielsweise durch Ändern von a und b eine unterschiedliche Qualität (z.B. eine Bitstromreduzierung unter dem gleichen SSIM-Score) aus mehreren Sample-Videos erhalten werden, und die a und b, die die beste Qualität (maximale Bitstromreduzierung) ergeben, können für die nachfolgende Codierung ausgewählt werden.
  • Die berechneten Distortion-Werte und Lambda-Werte können in den Speicherpuffern 329 gespeichert werden.
  • Der Abschnitt 312 der hybriden SSIM-RDO bestimmt einen endgültigen Vorhersagemodus für den Makroblock. So kann beispielsweise der SSIM-Modus-Identifizierer 336 den endgültigen Vorhersagemodus unter Verwendung der Gleichung 17 oder 18 aus einer Teilmenge von Vorhersagemodi auswählen, die unter Verwendung der SSD-RDO als Kandidatenvorhersagemodi identifiziert wurden. Die Bestimmung oder Auswahl des endgültigen Vorhersagemodus wird dem Vorhersageabschnitt 314 und/oder dem Transformations-Codierungsabschnitt 302 mitgeteilt. Der Vorhersageabschnitt 314 und/oder der Transformations-Codierungsabschnitt 302 setzen dann fort, um eine Codierung des Restfehlers gemäß dem endgültigen Vorhersagemodus zu erstellen und stellen den gemäß dem ausgewählten endgültigen Vorhersagemodus codierten Restfehler dem Entropie-Codierungsabschnitt 308 zur Entropiecodierung und nachfolgenden Übertragung zur Verfügung.
  • In Verbindung mit dem gemäß dem endgültigen Vorhersagemodus codierten Restfehler können dem Entropie-Codierer auch Informationen, wie beispielsweise der Vorhersagemodus und die Bewegungsvektoren (MVs), zur Übertragung an einen Decodierer bereitgestellt werden. Diese Informationen können auch dem Blockrekonstruktionsabschnitt 316 zur Verfügung gestellt werden (z.B. können Bewegungsvektoren vom Vorhersageabschnitt 314 dem Blockrekonstruktionsabschnitt 316 bereitgestellt werden), um eine Rekonstruktion des Eingabevideobilds oder des Makroblocks zu ermöglichen.
  • Der Entropie-Codierer 308 führt die Entropiecodierung auf dem Frame durch. Die quantisierten Transformationskoeffizienten können weiterverarbeitet (z.B. abgerundet, gescannt, skaliert, etc.) und dann entropiecodiert werden. Wie bei den Quantisierungsschritten kann die Anzahl der den Koeffizienten zugeordneten Bits einheitlich oder uneinheitlich (z.B. VLC) sein. Zusätzlich zu den Transformationskoeffizienten kann die Entropiecodierung verwendet werden, um andere Syntaxelemente wie Bewegungsvektoren und Vorhersagemodi zu komprimieren.
  • Der entropiecodierte Frame wird dann vom Sender 310 verarbeitet und übertragen.
  • Beispiel SSIM-RDO-Verfahren
  • 4 stellt ein Flussdiagramm eines Verfahrens 400 für die hybride SSIM-RDO dar, bei dem für einen Makroblock gemäß einigen exemplarischen Ausführungsformen ein Vorhersagemodus ausgewählt wird. Das Verfahren 400 kann z.B. während der Verarbeitung des Vorgangs 204 im Verfahren 200, wie vorstehend beschrieben, durchgeführt werden. Das Verfahren 400 kann beispielsweise durch den Abschnitt 312 der hybriden SSIM-RDO in dem Encoder 300 durchgeführt werden.
  • Nach dem Beginn des Verfahrens 400 wird im Schritt 402 Frame n des unbearbeiteten (z.B. unkomprimierten) Eingabevideos empfangen. Die Berechnung der Distortion-Metriken kann Makroblock für Makroblock in Frame n erfolgen.
  • Bei Schritt 404 wird der hybride SSIM-Lagrange-Multiplikator λSSIM für Frame n berechnet, basierend auf den für den vorherigen Frame (Frame n-1) berechneten Verzerrungsmetriken. Der λSSIM wird durch Anpassung der Lagrange-Konstante abgeleitet, um eine Inhaltsempfindlichkeit bezüglich der Metrik bereitzustellen. Durch dieses Vorgehen und die Aktualisierung des λSSIM Frame für Frame wird die SSIM-RDO für jeden Frame auch für den Inhalt des vorherigen Frames sensibilisiert. Die folgende Formel kann in einigen Ausführungsformen verwendet werden, um den λSSIM für jeden Vorhersagemodus zu bestimmen: λ S S I M , n = λ s  wobei  s = S S D n 1 S S I M n 1
    Figure DE102019103346A1_0014
  • Die DSSD-Werte und die DSSlM-Werte (und/oder die entsprechenden dSSlM-Werte) für jeden Makroblock des vorherigen Frames n-1 können aus einem Speicher, wie beispielsweise dem Speicher 329 in 3, bezogen werden.
  • In einigen anderen Ausführungsformen kann der hybride SSIM-Lagrange-Parameter wie folgt berechnet werden: λ S S I M , n = λ S S D , n ( ( S n 1 + S n 2 ) / 2 )
    Figure DE102019103346A1_0015
    wobei Sn-1 = avg(DSSD des Frames n-1) / avg(dSSlM des Frames n-1) und Sn-2 = avg(DSSD des Frames n-2) / avg(dSSIM des Frames n-2) gilt. Die Berechnung nach Gleichung 15 setzt die Beibehaltung der SSD- und SSIM-Werte für die Makroblöcke oder zumindest des Mittelwerts dieser Werte für die beiden vorhergehenden Frames voraus. Darüber hinaus ermöglicht Gleichung 15 auch, dass der λSSIM direkter mit dem λSSD in Verbindung steht.
  • Während der Schritt 404 einmal für Frame n durchgeführt werden kann, werden die Schritte 406-416 für jeden Makroblock i des Frames n durchgeführt.
  • Bei Schritt 406 wird ein Makroblock i ausgewählt. Die Makroblöcke in Frame n können in einer vorgegebenen Reihenfolge verarbeitet werden. So können beispielsweise die Makroblöcke von oben links in dem Frame Zeile für Zeile von links nach rechts verarbeitet werden.
  • Bei Schritt 408 wird unter Verwendung der SSD-RDO für jeden aus einer Vielzahl von Vorhersagemodi die Option Minimalkostenmodus ausgewählt.
  • Wie vorstehend in Bezug auf den Vorhersageabschnitt 312 beschrieben ist, können einige Vorhersagemodi mehr als eine Variation dieses Modus aufweisen. Zum Beispiel definiert H.264 für die Intra-Modus-Vorhersage 9 Vorhersagemodi für 4 × 4 Luma-Blöcke und 4 Vorhersagemodi für 16×16 Luma-Blöcke. Für die Inter-Modus-Vorhersage sind in H.264 sieben Modi mit unterschiedlichen Größen und Formen spezifiziert.
  • Für jeden Vorhersagemodus wird die DSSD für jede seiner Variationen bestimmt, und die minimalen SSD-RDO-Kosten werden als die bezüglich der SSD ausgewählten Variante (oben als „Siegerkandidat“ bezeichnet) für diesen Vorhersagemodus bestimmt.
  • Die DSSD für jede Variante kann mit der Gleichung 3 berechnet werden.
  • Die SSD-RDO-Kosten für jede Variante können basierend auf Gleichung 16 bestimmt werden. m i n { J S S D } ,   J S S D = D S S D + λ S S D × R ,
    Figure DE102019103346A1_0016
  • Es sei darauf hingewiesen, dass die DSSD-Berechnung für jede Variante mit jeder bekannten SSD-RDO-Technik durchgeführt werden kann.
  • Für jeden Vorhersagemodus wird die Variante mit den minimalen SSD-RDO-Kosten als Vertreter (hier auch als „Siegerkandidat“ bezeichnet) für diesen Vorhersagemodus ausgewählt. Verfahren zur Berechnung der DSSD und zur Auswahl des Vorhersagemodus mit den minimalen SSD-RDO-Kosten sind bekannt. Ein Beispiel für die SSD-RDO-Technik ist in Sze, Vivienne, Madhukar Budagavi und Gary J. Sullivan, „High Efficiency Video Coding (HEVC)“, Integrated Circuit and Systems, Algorithms and Architectures, Springer 39 (2014): 40, Abschnitt 11.6.3 „Hardware-Oriented Two-Step RDO Algorithm“ offenbart, der hiermit als Referenz aufgenommen wird.
  • Die berechneten DSSD-Werte werden gespeichert. Sie können beispielsweise in einem Speicher 329 gespeichert werden.
  • Bei Schritt 410 wird der DSSIM-Wert für jede der ausgewählten Vorhersageoptionen mit minimalen SSD-Kosten berechnet. Die Anzahl der Vorhersagemodi und/oder die Anzahl der Varianten in jedem Vorhersagemodus, für den DSSIM berechnet wird, kann vom Benutzer konfigurierbar und/oder statisch oder dynamisch bestimmt werden, basierend auf einem oder mehreren Faktoren wie beispielsweise Verarbeitungsmöglichkeiten und/oder den Echtzeit-Leistungsanforderungen der Videoanwendung. Obwohl also in der beschriebenen exemplarischen Ausführungsform für jeden dem Encoder und dem spezifischen Codierungsformat (z.B. H.264) zur Verfügung stehenden Vorhersagemodus die Variante mit der minimalen berechneten SSD-Distortion ausgewählt wird, um auch die DSSIM zu bestimmen, können andere Ausführungsformen so konfiguriert sein, dass sie dafür mehr als eine Variante für jeden Vorhersagemodus auswählen. Gleichung 4 kann verwendet werden, um den DSSIM-Wert für jede der ausgewählten Vorhersagemodusoptionen mit minimalen SSD-Kosten zu berechnen.
  • Die Berechnung des DSSlM-Wertes für einen Makroblock wird im Folgenden in Bezug auf die 6-8 beschrieben. Wie dort beschrieben ist, wird der DSSIM-Wert für jeden einzelnen Blockgrößenbereich in dem Makroblock berechnet und dann zusammengefasst, wenn alle Blöcke verarbeitet wurden. Darüber hinaus werden die DSSlM-Werte, wie dort beschrieben ist, auf erweiterten Makroblöcken berechnet. Pixel aus den Eingabevideodaten zusätzlich zu den Pixeln des aktuellen Makroblocks, die als Padding-Pixel zum Erzeugen der erweiterten Makroblöcke verwendet werden, können durch den Overfetching-Abschnitt 330 erhalten werden.
  • Die berechneten DSSIM- und/oder entsprechenden dSSIM-Werte werden gespeichert. Sie können beispielsweise in einem Speicher 329 gespeichert werden.
  • Bei Schritt 412 wird der beste SSIM-basierte Vorhersagemodus für Mi bestimmt basierend auf: m i n { J S S I M } ,   J S S I M = d S S I M + λ S S I M × R ,
    Figure DE102019103346A1_0017
  • Gleichung 17 kann umgeschrieben werden in m i n { J S S I M } ,   λ S S I M × J S S I M = 1 λ S S I M × d S S I M + R
    Figure DE102019103346A1_0018
  • Gleichung 18 formuliert die Minimierung in einer anderen Weise als die SSD-RDO, wobei λ mit R multipliziert wird, und sieht vor, dass λ mit dSSIM multipliziert wird. Da λSSIM typischerweise sehr klein ist (z.B. kleiner als 1), ist die Übergabe von 1/ λSSIM an die Hardware effizienter.
  • Bei Schritt 414 wird dem Encoder der beste SSIM-basierte Vorhersagemodus zur Codierung von Mi zur Verfügung gestellt. In einigen Ausführungsformen kann der Modus mit dem niedrigsten JSSIM gemäß Gleichung 17 als der beste SSIM-basierte Vorhersagemodus ausgewählt werden. In einigen Ausführungsformen können für die Verarbeitung von SSD-RDO und SSIM-RDO Stufen mit zwei Pipelines verwendet werden, um den Durchsatz zu erhöhen. Insgesamt ist der Encoder in einigen Beispielausführungen so ausgelegt, dass er die Schritte 406 - 414 für einen Makroblock innerhalb von 500 Zyklen für ein 3840 × 2160 Video (32400 MBs) bei 60 Frames pro Sekunde bei 1 GHz durchführt.
  • Als Reaktion auf den besten Vorhersagemodus für den Makroblock Mi, der identifiziert wird, gibt der Encoder dann den Makroblock Mi aus, nachdem er den Restfehler des Eingabemakroblocks Mi in Bezug auf einen vorhergesagten Makroblock berechnet hat, der im ausgewählten Vorhersagemodus vorhergesagt wurde. Der Restfehler des Makroblocks wird dann transformiert und quantisiert, bevor er entropiecodiert wird.
  • Bei Vorgang 416 wird bestimmt, ob noch weitere Makroblöcke unverarbeitet sind. Die Entscheidung bei Schritt 416 ermöglicht es, ausgewählte Schritte des Verfahrens 400 zu wiederholen, so dass jeder Makroblock des Frames verarbeitet wird, um den besten Vorhersagemodus für ihn zu bestimmen.
  • In Schritt 418 werden ΣDSSDn und ΣDSSIMn für jeden Vorhersagemodus berechnet und gespeichert. Das heißt, DSSD und DSSIM werden für jeden Modus gespeichert. In einigen Ausführungsformen wird zusätzlich zu oder anstelle von DSSIM dSSIM berechnet (siehe Gleichung 8 oben) und gespeichert.
  • Nach dem Schritt 418 kann die SSIM-Verarbeitung des Frames n abgeschlossen sein.
  • Ein Encoder, der konfiguriert ist, um die Auswahl des Vorhersagemodus unter Verwendung des hybriden SSIM-RDO-Verfahrens 400 durchzuführen, bietet eine hohe Leistung und eine hohe Qualitätssteigerung.
  • Das oben beschriebene hybride SSIM-RDO-Verfahren ermöglicht eine effiziente Implementierung der SSIM-RDO, die als Hardware implementierbar und zu Echtzeitanwendungen kompatibel ist. In dem in Bezug auf 4 beschriebenen H.264-Beispiel ermöglicht die hybride SSIM-RDO-Technik, anstatt die hochkomplexe SSIM-Metrik für jede der vielen Varianten in jedem der acht Vorhersagemodi berechnen zu müssen, eine vollständige Entscheidung über den Vorhersagemodus, indem die SSIM-Berechnung nur einmal für jeden der acht in H.264 definierten Vorhersagemodi (z.B. Inter-Modus für die Partitionsgrößen 16×16, 16×8, 8×16 und 8×8, Skip-Modus, Intra-Modus 4×4, Intra-Modus 8×8 und Intra-Modus 16×16) durchgeführt wird, und setzt auf die rechnerisch einfachere SSD-RDO, um der SSIM-Berechnung den besten Kandidaten für jeden Vorhersagemodus aus den vielen Varianten dieses Vorhersagemodus zur Verfügung zu stellen.
  • In einer exemplarischen Ausführungsform ist das SSD-RDO-Verfahren, das den besten Kandidaten unter den Varianten für jeden Vorhersagemodus bestimmt, die Berechnung von dSSIM für jeden Vorhersagemodus und die Auswahl des besten Vorhersagemodus basierend auf dSSIM in Hardware implementiert (z.B. Hardware-Schaltungen, die für SSIM-Berechnungen in dem SSIM-Verzerrungsbestimmungsabschnitt 326 und in dem Abschnitt 312 der hybriden SSIM-RDO vorgesehen sind), während die DSSD/dSSIM-Berechnung des Frames n und die Berechnung von λSSIM für Frame n+1 in Software durchgeführt werden. 1/λSSIM wird an die Hardware übergeben. Die Hardware aktualisiert die DSSD,/dSSIM-Summe einmalig für jeden Makroblock, so dass die Software am Ende eines Frames die gesamte Verzerrungsstatistik von der Hardware erhalten und das entsprechende Lambda für das nächste Frame berechnen kann. Ein Vorteil dieser Implementierung in der Hardware ist die geringe Komplexität, bei der die Software lediglich benötigt wird, um das Verzerrungsverhältnis zwischen DSSD/dSSIM und dem Scale-Lambda zu erhalten.
  • Experimentelle Ergebnisse, die die hybride SSIM-RDO mit der SSD-RDO bei gleicher Wahrnehmungsqualität verglichen, zeigten, dass das Verfahren 400 eine hohe Qualität (mit einem Minimum an Verzerrungsartefakten) für kleine und große Auflösungen (z.B. QCIF~4K) liefert. Dies steht im Gegensatz zu herkömmlichen SSIM-RDO-Techniken, die erheblichen blockartigen Rauschartefakten ausgesetzt sind.
  • Beispielhafte SoC-Implementierung
  • 5 stellt ein Blockdiagramm eines Beispielprozessors oder SoC 500 mit einem Video-Encoder, der die hybride SSIM-RDO implementiert, gemäß einigen exemplarischen Ausführungsformen dar.
  • Das SoC 500 beinhaltet auf einem einzigen Chip einen Videoencoder 502 mit hybrider SSIM-RDO, eine CPU 504 und einen Speicher 506, die durch eine Verbindungsmatrix oder ein Netzwerk 508 verbunden sind. In einigen Ausführungsformen kann ein Videodecoder 510 im SoC 500 enthalten sein. Das SoC 500 kann eine Eingangsschnittstelle zum Empfangen von Videodaten von der Kamera und/oder anderen Sensoren 512 aufweisen. Der Videodecoder 510 kann an eine Ausgabeschnittstelle angeschlossen werden, über die ein decodiertes Video an eine Anzeige 514 bereitgestellt werden kann.
  • Das beispielhafte SoC 500 kann in verschiedenen Computerumgebungen eingesetzt werden und kann in Anwendungen verwendet werden, die Anzeigen steuern, verschiedene Steueroperationen durchführen, andere Ein-/Ausgaben durchführen und/oder Berechnungen durchführen. Das beispielhafte SoC kann in einem autonomen Fahrzeug als Primär- oder Backup-Steuerung eingesetzt werden, um das Fahrzeug in Echtzeit zu steuern, basierend auf Eingaben, die von mehreren Quellen wie Kameras, Lidar, Radar, Ultraschallsensoren, GPS, Geschwindigkeitssensoren, Trägheitssensoren, Fahrzeugsubsystemen (z.B. Bremssubsystem, Lenksubsystem, Antriebssubsystem, etc.) empfangen werden. Das SoC kann tiefe neuronale Netze auf einer oder mehreren GPUs im SoC verwenden, um Sensordaten und andere Eingaben zu verarbeiten, um Befehle zur Steuerung der verschiedenen Subsysteme des Fahrzeugs während der automatisierten Fahrt zu erzeugen.
  • Der Videoencoder 502 mit hybrider SSIM-RDO kann dem in Bezug auf 3 beschriebenen Videoencoder 300 und/oder dem in Bezug auf 5 beschriebenen Videoencoder 105 ähnlich sein.
  • Die CPU 504 kann beispielsweise eine handelsübliche CPU oder einen anderen benutzerdefinierten Prozessor aufweisen. Die CPU ist in einigen beispielhaften Ausführungen in erster Linie für die Ausführung von Anwendungen und die Gesamtsteuerung des SoC 500 verantwortlich. Die CPU kann einen einzelnen Prozessorkern oder mehr als einen Prozessorkern (eine „Multicore-CPU“) beinhalten. In einigen Ausführungsformen kann das SoC 500 mehr als eine CPU beinhalten.
  • Der Speicher 506 kann einen Direktzugriffsspeicher (RAM) wie ein dynamisches RAM (DRAM), DDRAM oder dergleichen umfassen, das die Speicherung von Anweisungen und Daten während des Betriebs von Anwendungen für den Zugriff durch die CPU 504 und/oder andere Komponenten des SoC ermöglicht. Der Speicher 506 kann einen Registerspeicher aufweisen. Obwohl es nicht separat angegeben ist, kann das SoC 500 auch einen oder mehrere persistente Speicher aufweisen.
  • Zu den Verbindungen oder Schnittstellen 508 gehören ein oder mehrere Busse (auch „Datenverbindungen“ genannt) wie z.B. PCI Express (PCIE), NVLINK, USB, Thunderbolt, PCI, IDE, AGP etc. Die Verbindungen 508 ermöglichen die Verbindung zwischen CPU 504, Speicher 506, Schnittstellen zu einer Anzeige 514, Schnittstellen zu I/O-Vorrichtungen 512 wie Kameras und Sensoren usw. und allen anderen daran angeschlossenen Vorrichtungen, einschließlich Vorrichtungen außerhalb des SoC 500. Die Verbindungen 508 können Busse mit gleicher oder unterschiedlicher Geschwindigkeit, Kapazität und/oder Kommunikations-/Übertragungsprotokollen beinhalten. So können beispielsweise Hochgeschwindigkeitsbusse wie PCIE, NVLINK, USB-C, Thunderbolt und dergleichen die CPU und einen oder mehrere Video-Encoder 502 und Videodecoder 510 miteinander und/oder mit dem Systemspeicher verbinden.
  • Der Videodecoder 510 kann dem in Bezug auf 1 beschriebenen Videodecoder 106 ähnlich sein und kann zum Empfangen und Decodieren von Videos, die mit dem Videoencoder 502 codiert wurden, verwendet werden. In einigen Ausführungsformen kann der Decoder 510 beim Aufbau einer Videoverbindung dem Encoder 502 den Satz von Vorhersagemodi signalisieren, die der Decoder decodieren kann. Als Reaktion darauf kann der Encoder 502 seine Auswahl des Vorhersagemodus einschränken, um nur Vorhersagemodi auszuwählen, die vom Decoder identifiziert wurden. So kann beispielsweise der Encoder beim Empfangen der Benachrichtigung vom Decoder den anfänglichen Satz von Vorhersagemodi konfigurieren, so dass die SSD-RDO nur für die vom Decoder identifizierten Vorhersagemodi ausgeführt wird, und/oder ausgewählte Anzeigegeräteeinstellungen gemäß der empfangenen Benachrichtigung konfigurieren.
  • Eine oder mehrere GPUs (nicht separat in 5 dargestellt) können Bilder verarbeiten und für die Anzeige auf der Anzeige 514 darstellen. Die gerenderten Bilder können auf dem decodierten Video des Videodecoders 510 basieren. In einigen Ausführungsformen kann die GPU andere Arten der Verarbeitung durchführen, wie beispielsweise Anwendungen oder Teile von Anwendungen. In einigen Ausführungsformen können die eine oder mehreren GPUs verwendet werden, um rechenintensive Anwendungen oder Teile von Anwendungen oder Anwendungen mit Parallelverarbeitung auszuführen. In einigen Fällen kann die GPU eine von der CPU 504 erzeugte und/oder im Speicher 506 gespeicherte Anzeigeliste ausführen, um unbearbeitete Videodaten für die Codierung durch den Encoder 502 mit hybrider SSIM-RDO zu erzeugen, bevor sie an einen entfernten Decoder oder Decoder 510 zur Anzeige und/oder Speicherung übertragen werden. Data-Mining-Anwendungen, Wettervorhersagen, neuronale Netze, Deep-Learning-Anwendungen usw. sind einige Beispielanwendungen, die ganz oder teilweise in der GPU ausgeführt werden können, während Bilder und/oder Videos zur Codierung durch den Encoder 502 und/oder zur Anzeige erzeugt werden.
  • Beispielhafte SSIM-Verzerrunqsberechnunq
  • 6 stellt einen Makroblock 602 und einen entsprechend erweiterten Makroblock 606 entsprechend einigen exemplarischen Ausführungsformen dar. Die SSIM-Verzerrungsmetrik DSSIM für Makroblock 602 wird basierend auf dem entsprechenden erweiterten Makroblock 606 bestimmt. Der erweiterte Makroblock 606 beinhaltet den ursprünglichen Makroblock 602 und eine vorbestimmte Anzahl von Polstern (Padding) 604 in einem Bereich an den Rändern des ursprünglichen Makroblocks. In einer exemplarischen Ausführungsform kann die vorgegebene Anzahl von Pixeln für das Padding eine Erweiterung von 4 Pixeln auf jeder Seite sein. So wird beispielsweise bei einem Original-Makroblock 602 der Größe 16 × 16 Pixel dem entsprechende erweiterten Makroblock 606 4 Pixel an jeder Seite hinzugefügt, was zu einem erweiterten Makroblock von 24 × 24 Pixel führt.
  • 7 ist gemäß einigen exemplarischen Ausführungsformen eine grafische Darstellung eines erweiterten ursprünglichen Makroblocks 702 und eines erweiterten rekonstruierten Makroblocks 704, wobei Luma-Pixel und ein gleitendes Fenster 712, das für die Berechnung der SSIM-Verzerrungsmetrik verwendet wird, dargestellt sind. Wie bereits erwähnt ist, wird der erweiterte ursprüngliche Makroblock durch Erweitern des ursprünglichen Makroblocks um 16 × 16 Luma-Pixel erzeugt (der nicht erweiterte ursprüngliche Makroblock ist nicht dargestellt). Ebenso wird der erweiterte rekonstruierte Makroblock 704 mit 24 × 24 Pixeln erzeugt, indem der tatsächlich rekonstruierte Makroblock 706 mit einer Größe von 16 × 16 Luma-Pixeln durch Hinzufügen von Padding-Pixeln auf jeder Seite erweitert wird. Die Erweiterung des 16×16 rekonstruierten Makroblocks wird durch Hinzufügen entsprechender Pixel aus dem erweiterten ursprünglichen Makroblock erreicht. Das heißt, für ein Paar des erweiterten ursprünglichen Makroblocks und des entsprechenden erweiterten rekonstruierten Makroblocks werden dieselben Pixel als Padding verwendet. Das heißt, die dem rekonstruierten Makroblock hinzugefügten Erweiterungspixel sind dieselben Pixel aus dem Erweiterungsbereich des entsprechenden ursprünglichen Makroblocks. In exemplarischen Ausführungsformen sind die Padding-Pixel Pixel, die dem ursprünglichen Makroblock in den Eingabevideodaten benachbart sind.
  • Bei der Berechnung des DSSIM-Wertes für jeden der ursprünglichen und rekonstruierten Makroblöcke werden die entsprechend erweiterten Original-Makroblöcke und die erweiterten rekonstruierten Makroblöcke (z.B. wie durch 708 dargestellt) verwendet. Die Berechnung erfolgt, indem Blöcke (z.B. 8x8 Blöcke, wie durch den Block 712 veranschaulicht) in einem gleitenden Fenster 712 nacheinander berücksichtigt werden. Jede Position 710 stellt die linke obere Kantenposition des Blocks des gleitenden Fensters dar. Dadurch wird das gleitende Fenster so bewegt, dass eine Überlappung zwischen den jeweiligen Messblöcken entsteht.
  • Das Padding dient zur Berechnung von DSSIM an Makroblockgrenzen. Das Padding ermöglicht es, blockartigen Artefakte zu minimieren, die häufig bei großen Bildern auftreten. Bei großen Bildabmessungen ist die Varianz eines Makroblocks in der Regel gering, und wenn die Verzerrung strikt innerhalb des Makroblocks berechnet wird, kann die SSIM-RDO dazu neigen, bei einem lokalen Minimum steckenzubleiben, was oft zu schweren blockartigen Effekten führt. Dieser Effekt tritt eher bei Gaming-Sequenzen und bei großen QPs auf.
  • So wird, wie es in 7 dargestellt ist, unter Verwendung der erweiterten Makroblöcke jeder SSIM-Wert innerhalb eines 8x8-Fensters berechnet, was insgesamt 25 Werte für einen Luma-Makroblock ergibt. Ebenso werden für jeden Chroma-Makroblock insgesamt 9 Werte erhalten, die innerhalb der jeweiligen 8x8 Fenster berechnet wurden (ein Chroma-Makroblock ist in 8 dargestellt). Die aufsummierten SSIM-Werte für die 25 (9 für Chroma) Positionen stellen die DSSIM-Verzerrung für den Makroblock dar.
  • 8 ist gemäß einigen exemplarischen Ausführungsformen eine grafische Darstellung des erweiterten ursprünglichen 802 und des erweiterten rekonstruierten 804 Chroma-Makroblocks und eines gleitenden Fensters 812, das für die Berechnung der jeweiligen SSIM-Werte für überlappende Blöcke 812 verwendet wird. Das gleitende Fenster 812 bewegt sich zu jeder angezeigten Position 810, während dabei die DSSIM für den Makroblock 808 berechnet wird. Die DSSIM für den Makroblock 808 ist die Summe der SSIM-Werte, die an den jeweiligen Positionen des gleitenden Fensters 812 berechnet wurden.
  • Beispielhafter SSIM-Pseudo-Code
  • 9A und 9B stellen exemplarisch einen Pseudocode zur Berechnung von SSIM auf einem Block von Pixeln innerhalb eines Makroblocks gemäß einigen exemplarischen Ausführungsformen dar. Der exemplarische Pseudocode stellt in Kombination mit der Verwendung von SSD-RDO zur Auswahl einer Teilmenge von Vorhersagemodi, um SSIM auszuwerten, in den 9A und 9B eine effiziente Implementierung der Berechnung von DSSIM in Hardware bei der Implementierung des hybriden SSIM-RDO-Verfahrens dar.
  • Der Pseudocode, der in den 9A-9B dargestellt ist, stellt eine in Hardware implementierbare Implementierung von Gleichung 4 bereit.
  • Steuerung des Lagrange-Multiplikators
  • 10 stellt exemplarische Versuchsergebnisse einer Änderung des Lagrange-Multiplikators λSSIM bei mehreren Common Intermediate Format (CIF)-Sequenzen dar. In diesem Experiment wurden verschiedene Codierungserfolge erzielt, indem der geschätzte λSSIM von 0,5x bis 4x variiert wurde. Das Ergebnis zeigt, dass der geschätzte λSSIM weit von dem optimalen entfernt sein kann, z.B. kann der optimale λSSIM fast 4x des geschätzten Wertes betragen. Der beobachtete Codierungserfolg beträgt 5% (1x) vs. 14% (4x).
  • Eine wichtige Beobachtung in 10 ist, dass für verschiedene Sequenzen die Kurve Lagrange-Multiplikator vs. Erfolg unterschiedlich ist. So nimmt beispielsweise bei den Sequenzen Akiyo und Container der Erfolg ab, wenn der Multiplikator größer wird, während bei der Sequenz Soccer die Verstärkung mit dem Multiplikator ansteigt. Ein wichtiger Unterschied zwischen ihnen ist die Bewegungsintensität. Insbesondere bei den Sequenzen Container und Akiyo gibt es wenig Bewegung in der Sequenz, und die Szene bleibt fast still, während sich die Szene bei der Sequenz Soccer mit der Zeit dramatisch verändert.
  • Basierend auf den Beobachtungen aus 10 kann ein skalierter Lagrange-Multiplikator λ'SSIM,n bestimmt werden, z.B. unter Verwendung der obigen Gleichungen 12 und 13. λ'SSIM,n kann bei Auswahl des Skalierungsfaktors s' (siehe Gleichung 13 oben) einen größeren Erfolg in einer für die Eigenschaften (z.B. Bewegungscharakteristik) der Eingabevideodaten geeigneten Weise ergeben.
  • Beispielhafte anschauliche Videobilder
  • 11A stellt ein erstes Beispiel eines Videoframes, der mit SSIM-RDO verarbeitet wurde, dar, wobei SSIM vollständig innerhalb eines Makroblocks berechnet wurde, und 11B stellt denselben Frame, der mit SSIM-RDO verarbeitet wurde, dar, wobei SSIM jedoch auf erweiterten Makroblöcken berechnet wurde, wie es in den 6-7 dargestellt ist. Erhebliche blockartige Rauschartefakte sind in 11A in der Nähe der Mitte der Unterkante des Bildes sichtbar. Diese Artefakte sind in 11B deutlich reduziert und nahezu eliminiert, wenn die SSIM-Verzerrungsmetrik in Bezug auf den erweiterten Makroblock berechnet wird.
  • 12A stellt ein exemplarisches Videobild, das mit der SSD-RDO verarbeitet wurde, und 12B stellt dasselbe Bild, das mit der hybriden SSIM-RDO verarbeitet wurde, gemäß einer exemplarischen Ausführungsform dar. Ersteres ist H.264 codiert mit der SSD-RDO und hat eine Bitrate von 1,78 Mbit/s und eine SSIM von 0,86. Letzteres ist H.264 codiert mit der hybriden SSIM-RDO und hat eine Bitrate von 1,75 Mbit/s und eine SSIM von 0,88. In 12A ist zu beobachten, dass die Handläufe an mehreren Stellen im SSD-RDO-Bild fast ausgelöscht sind. In 12B sind dagegen die Handläufe klarer erkennbar.
  • 13A stellt ein exemplarisches Videobild, das mit der SSD-RDO verarbeitet wurde, und 13B stellt dasselbe Bild, das mit der hybriden SSIM-RDO verarbeitet wurde, gemäß einer exemplarischen Ausführungsform dar. Ersteres ist H.264 codiert mit SSD-RDO und hat eine Bitrate von 1,78 Mbit/s und eine SSIM von 0,86. Letzteres ist H.264 codiert mit der hybriden SSIM-RDO und hat eine Bitrate von 1,75 Mbit/s und eine SSIM von 0,88. In 13A ist zu erkennen, dass die Streifen an der Wand im SSD-RDO-Bild verschwommen sind. Im Gegensatz dazu zeigt 13B schärfere Streifen an der Wand.
  • Die in dieser Offenbarung beschriebenen hybriden SSIM-RDO-Techniken weisen ein hohes Leistungsvermögen und einen hohen Qualitätsgewinn auf. Im Gegensatz zu herkömmlichen Techniken eignet sich die hybride SSIM-RDO sowohl für kleine als auch für große Auflösungen (z.B. QCIF ~ 4K). In Experimenten zur Messung des Qualitätsgewinns wurde der Bitrateneinsparungsanteil der hybriden SSIM-RDO-Technik mit dem von SSD-RDO bei gleicher Wahrnehmungsqualität für eine Spielvideosequenz und für eine natürliche Videosequenz verglichen. Die Bitrateneinsparungen wurden bei mehreren Bitraten und bei mehreren Auflösungen gemessen. Die hybride SSIM-RDO führte zu Bitrateneinsparungen von 10,27% bei Spielen und 10,65% bei natürlichen Videos.
  • Obwohl die exemplarischen Ausführungsformen hauptsächlich in Bezug auf H.264 als Codierungstechnik und/oder codierte Video-Bitstromsyntax beschrieben wurden, sind Ausführungsformen nicht darauf beschränkt. Der Fachmann versteht, dass die Lehren dieser Anwendung auf andere Codierungsverfahren und/oder codierte Video-Bitstromsyntaxen angewendet werden können, bei denen mehrere Vorhersage- und/oder Codierungsformate ausgewertet werden, um eine am besten geeignete Codierung für Video und/oder Audio auszuwählen. Es wird darauf hingewiesen, dass, obwohl SSD und SSD-RDO in den beschriebenen Beispielen verwendet werden, um Siegerkandidaten aus verfügbaren Vorhersagemodi auszuwählen, andere Verzerrungsschätzverfahren zusätzlich zu oder anstelle von SSD und SSD-RDO verwendet werden können. Der Fachmann versteht auch, dass, während das beschriebene hybride SSIM-RDO-Verfahren so konzipiert ist, dass es in Hardware implementierbar ist, wie es oben im Detail beschrieben ist, exemplarische Ausführungsformen verschiedene Umfänge an Software zur Implementierung des Verfahrens verwenden können, und dass diese Software in Computercode ausgestaltet sein kann, der in einem Laufwerk, Flash-Speicher oder einer anderen nicht flüchtigen computerlesbaren Speichervorrichtung gespeichert ist.
  • Wann immer in diesem Dokument beschrieben ist, dass ein bestimmtes Element in „einigen Ausführungsformen“, „verschiedenen Ausführungsformen“, „bestimmten Ausführungsformen“, „bestimmten exemplarischen Ausführungsformen, „einigen exemplarischen Ausführungsformen“, „einer exemplarischen Ausführungsform“ oder wann immer eine andere ähnliche Sprache verwendet wird, sollte verstanden werden, dass das betreffende Element in mindestens einer Ausführungsform vorhanden ist, jedoch nicht unbedingt in allen Ausführungsformen vorhanden ist. Wenn in diesem Dokument beschrieben ist, dass eine Aktion ausgeführt werden „kann“ oder „könnte“, dass ein Merkmal oder eine Komponente in einem bestimmten Kontext enthalten sein oder in einem bestimmten Kontext anwendbar sein „kann“ oder „könnte“, dass ein bestimmtes Element ein bestimmtes Attribut besitzen „kann“ oder „könnte“, oder wenn eine ähnliche Phrase mit dem Begriff „kann“ oder „könnte“ verwendet wird, sollte verstanden werden, dass die gegebene Aktion, Merkmal, Komponente, Attribut, etc. in mindestens einer Ausführungsform vorhanden ist, jedoch nicht unbedingt in allen Ausführungsformen vorhanden ist. Die in diesem Dokument verwendeten Begriffe und Phrasen sowie deren Variationen sind, sofern nicht ausdrücklich anders angegeben, als offen bzw. breit und nicht als einschränkend auszulegen. Als Beispiele für das Vorstehende: „und/oder“ beinhaltet alle Kombinationen von einem oder mehreren der zugehörigen aufgeführten Punkte (z.B, a und/oder b bedeutet a, b oder a und b); die Singularformen „ein“, „eine“, „einer“ oder „das“, „die“ und „der“ sollten als Bedeutung „mindestens ein bzw. eine“, „ein bzw. eine oder mehrere“ oder dergleichen gelesen werden; der Begriff „Beispiel“ wird verwendet, um Beispiele für das zu behandelnde Thema zu liefern, nicht eine vollständige oder einschränkende Liste davon; die Begriffe „umfassen“ und „einschließen“ (und andere Konjugationen und andere Variationen davon) spezifizieren das Vorhandensein der zugehörigen aufgeführten Elemente, schließen aber das Vorhandensein oder Hinzufügen eines oder mehrerer anderer Elemente nicht aus; und wenn ein Element als „optional“ bezeichnet wird, sollte diese Beschreibung nicht so verstanden werden, dass sie darauf hinweist, dass andere Elemente nicht optional sind.
  • Obwohl die Erfindung im Zusammenhang mit Ausführungsformen beschrieben worden ist, die derzeit als die praktischsten und am meisten bevorzugten angesehen werden, ist zu verstehen, dass die Erfindung nicht auf die offenbarten Ausführungsformen beschränkt werden darf. Während beispielsweise die oben genannte Diskussion am Beispiel bestimmter Hardware dargestellt wurde, kann jede Art oder Anzahl von Prozessoren verwendet werden. Im Gegenteil, es sollen verschiedene Änderungen und gleichwertige Anordnungen abgedeckt sein, die im Geist und Umfang der beigefügten Ansprüche enthalten sind.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • Siehe z.B. Shiqi Wang, et al. „SSIM-Motivated Rate-Distortion Optimization for Video Coding“, IEEE Trans. On Circuits and Systems for Video Tech.; 22.4 (2012):516-529 [0057]

Claims (22)

  1. Video-Encoder umfassend: einen Verzerrungsschätzer, welcher eine Verzerrung eines Blocks von Pixeln bei einer Gruppe von Vorhersagemodi berechnet, abhängig von der berechneten Verzerrung eine Teilmenge der Gruppe der Vorhersagemodi auswählt und eine Verzerrungsschätzung einer strukturierten Ähnlichkeit, SSIM, einsetzt, um die Verzerrung des Blocks von Pixeln für jeden Vorhersagemodus in der ausgewählten Teilmenge zu berechnen; und einen Vorhersagemodus-Identifizierer, welcher einen der Vorhersagemodi in der Teilmenge zur Verwendung bei einer Codierung des Blocks von Pixeln abhängig von den berechneten Verzerrungen und Bitraten zum Codieren des Blockes identifiziert.
  2. Video-Encoder nach Anspruch 1, wobei der Verzerrungsschätzer ausgestaltet ist, um einen erweiterten Block auszubilden, welcher den Block und einen Bereich von zusätzlichen Pixeln aufweist, und um die Berechnung mittels der Verzerrungsschätzung der SSIM in dem erweiterten Block, welcher den Bereich der zusätzlichen Pixel aufweist, durchzuführen.
  3. Video-Encoder nach Anspruch 1 oder 2, wobei der Vorhersagemodus-Identifizierer ausgestaltet ist, um einen Multiplikator abhängig von Verzerrungswerten von zumindest einem vorherigen Frame eines Eingabevideos zu bestimmen und um das Identifizieren abhängig von zumindest den Berechnungen mittels der Verzerrungsschätzung der SSIM, den Bitraten und dem Multiplikators durchzuführen.
  4. Video-Encoder nach Anspruch 3, wobei der Vorhersagemodus-Identifizierer darüber hinaus ausgestaltet ist, um den Multiplikator gemäß zumindest einem Merkmal des Eingabe-Videos zu skalieren; und um das Identifizieren abhängig von zumindest den Schätzungen mittels der Verzerrungsschätzung der SSIM, den Bitraten und dem skalierten Multiplikator durchzuführen.
  5. Video-Encoder nach einem der vorhergehenden Ansprüche, wobei der Verzerrungsschätzer eine Verzerrungsschätzung einer Summe von quadrierten Differenzen, SSD, einsetzt, um die Verzerrung des Blocks von Pixeln bei der Gruppe von Vorhersagemodi zu berechnen.
  6. Video-Encoder nach einem der vorhergehenden Ansprüche, wobei der Verzerrungsschätzer und der Vorhersagemodus-Identifizierer auf einem Ein-Chip-System vorhanden sind.
  7. Video-Encoder nach einem der vorhergehenden Ansprüche, wobei der Verzerrungsschätzer und der Vorhersagemodus-Identifizierer eine Hardwareschaltung aufweisen, welche bestimmt ist, um die Verzerrung des Blocks von Pixeln bei der Gruppe von Vorhersagemodi zu berechnen, um abhängig von der berechneten Verzerrung die Teilmenge der Gruppe der Vorhersagemodi auszuwählen, und um die Verzerrungsschätzung der SSIM einzusetzen, um die Verzerrung des Blocks von Pixeln für jeden Vorhersagemodus in der ausgewählten Teilmenge zu berechnen.
  8. Verfahren zum Steuern einer Bildqualität und/oder einer Bitrate eines ausgehenden Videostroms, wobei das Verfahren durch ein elektronisches Verarbeitungssystem ausgeführt wird und umfasst: Berechnen mittels eines ersten Typs einer Verzerrungsschätzung auf einem Block von Pixeln von einem Frame eines Eingabe-Videos erster Verzerrungswerte für eine erste Mehrzahl von Vorhersagemodi; Auswählen abhängig von zumindest den ersten Verzerrungswerten einer zweiten Mehrzahl von Vorhersagemodi, wobei die zweite Mehrzahl eine Teilmenge der ersten Mehrzahl von Vorhersagemodi ist; Berechnen mittels einer Verzerrungsschätzung einer strukturierten Ähnlichkeit, SSIM, auf dem Block zweiter Verzerrungswerte für jeden Vorhersagemodus in der zweiten Mehrzahl von Vorhersagemodi; Identifizieren abhängig von den zweiten Verzerrungswerten und Bitraten zum Codieren des Blocks gemäß den entsprechenden der zweiten Mehrzahl von Vorhersagemodi eines Vorhersagemodus zum Codieren des Blocks; Codieren des Blocks mittels des identifizierten Vorhersagemodus; und Übertragen des codierten Blocks in dem ausgehenden Videostrom.
  9. Verfahren nach Anspruch 8, wobei das Berechnen der zweiten Verzerrungswerte ein Ausbilden eines erweiterten Blocks, welcher den Block und einen Bereich von zusätzlichen Pixeln aufweist, und ein Durchführen des Berechnens in dem erweiterten Block, welcher den Bereich von zusätzlichen Pixeln aufweist, umfasst.
  10. Verfahren nach Anspruch 9, wobei das Ausbilden des erweiterten Blocks ein Auffüllen des Blocks mit zusätzlichen Pixeln von dem Frame des Eingabe-Videos aufweist und wobei das Berechnen der zweiten Verzerrungswerte darüber hinaus umfasst: Erweitern eines rekonstruierten Blocks, welcher von dem Block abgeleitet wird, durch ein Auffüllen mittels der zusätzlichen Pixel; und Durchführen des Berechnens der zweiten Verzerrungswerte abhängig von dem erweiterten Block und dem erweiterten rekonstruierten Block.
  11. Verfahren nach Anspruch 10, wobei das Berechnen der zweiten Verzerrungswerte abhängig von dem erweiterten Block und dem erweiterten rekonstruierten Block umfasst: Bestimmen in jeweils dem erweiterten Block und dem erweiterten rekonstruierten Block von Verzerrungs-Scores der SSIM für eine Gruppe von Teilblöcken, wobei jeder Teilblock teilweise zumindest einen anderen Teilblock überlappt; und Bestimmen der zweiten Verzerrungswerte abhängig von den bestimmten Verzerrungs-Scores der SSIM.
  12. Verfahren nach einem der Ansprüche 8 bis 11, wobei das Berechnen der zweiten Verzerrungswerte umfasst: Bestimmen in jeweils dem Block und einem rekonstruierten Block von Verzerrungs-Scores der SSIM für eine Gruppe von Teilblöcken, wobei jeder Teilblock teilweise zumindest einen anderen Teilblock überlappt; und Bestimmen der zweiten Verzerrungswerte abhängig von den bestimmten Verzerrungs-Scores der SSIM.
  13. Verfahren nach einem der Ansprüche 8 bis 12, wobei das Identifizieren eines Vorhersagemodus zum Codieren des ausgewählten Blocks umfasst: Bestimmen eines Multiplikators abhängig von Verzerrungswerten von zumindest einem vorherigen Frame des Eingabe-Videos; und Durchführen des Identifizierens abhängig von zumindest den zweiten Verzerrungswerten, Bitraten und dem Multiplikator.
  14. Verfahren nach Anspruch 13, wobei das Identifizieren eines Vorhersagemodus zum Codieren des ausgewählten Blocks darüber hinaus umfasst: Skalieren des Multiplikators entsprechend mindestens einem Merkmal des Eingabe-Videos; und Durchführen des Identifizierens abhängig von zumindest den zweiten Verzerrungswerten, Bitraten und dem skalierten Multiplikator.
  15. Verfahren nach Anspruch 13 oder 14, wobei die Verzerrungswerte von zumindest einem vorherigen Frame Verzerrungswerte, welche gemäß dem ersten Typ einer Verzerrungsschätzung bestimmt sind, und Verzerrungswerte, welche gemäß der Verzerrungsschätzung der SSIM bestimmt sind, aufweisen.
  16. Verfahren nach einem der Ansprüche 13 bis 15, wobei die Verzerrungswerte von zumindest einem vorherigen Frame Verzerrungswerte von zwei aufeinanderfolgenden vorherigen Frames aufweisen.
  17. Verfahrensanspruch 13, wobei der Multiplikator von Frame zu Frame neu berechnet wird.
  18. Verfahren nach einem der Ansprüche 8 bis 17, wobei der erste Typ der Verzerrungsschätzung eine Verzerrungsschätzung einer Summe von quadrierten Differenzen, SSD, aufweist.
  19. Verfahren nach einem der Ansprüche 8 bis 18, wobei die erste Mehrzahl von Vorhersagemodi eine Gruppe von Inter-Vorhersagemodi und eine Gruppe von Intra-Vorhersagemodi aufweist, und wobei die Anzahl der Vorhersagemodi, welche für die zweite Mehrzahl ausgewählt wird, konfigurierbar ist.
  20. Verfahren nach Anspruch 19, wobei die Gruppe von Inter-Vorhersagemodi eine entsprechende Mehrzahl von Inter-Vorhersagemodi für jede einer Mehrzahl von Partitionstypen aufweist, und wobei die Gruppe von Intra-Vorhersagemodi eine entsprechende Mehrzahl von Intra-Vorhersagemodi für jede einer Mehrzahl von Blockgrößen aufweist, und wobei das Auswählen einer zweiten Mehrzahl von Vorhersagemodi ein Auswählen von mindestens einem Inter-Vorhersagemodus für jeden der Partitionstypen und von zumindest einem Intra-Vorhersagemodus für jede der Blockgrößen umfasst.
  21. Nicht flüchtiges von einem Computer lesbares Speichermedium mit darauf gespeicherten Anweisungen, welche, wenn sie durch eine Verarbeitungsschaltung ausgeführt werden, bewirken, dass die Verarbeitungsschaltung Operationen ausführt, welche umfassen: Berechnen von ersten Verzerrungswerten für eine erste Mehrzahl von Vorhersagemodi mittels eines ersten Typs einer Verzerrungsschätzung auf einem Block von Pixeln von einem Frame eines Eingabe-Videos; Auswählen einer zweiten Mehrzahl von Vorhersagemodi abhängig von zumindest den ersten Verzerrungswerten, wobei die zweite Mehrzahl eine Teilmenge der ersten Mehrzahl von Vorhersagemodi ist; Berechnen von zweiten Verzerrungswerten für jeden Vorhersagemodus in der zweiten Mehrzahl von Vorhersagemodi mittels einer Verzerrungsschätzung einer strukturierten Ähnlichkeit, SSIM, auf den Block; Identifizieren eines Vorhersagemodus zum Codieren des Blocks abhängig von den zweiten Verzerrungswerten und Bitraten zum Codieren des Blocks gemäß entsprechenden der zweiten Mehrzahl von Vorhersagemodi; und Codieren des Blocks mittels des identifizierten Vorhersagemodus.
  22. Video-Encoder umfassend: einen Video-Receiver, welcher einen Videostrom decodiert, der einen Block von Pixeln aufweist, welche mittels eines Vorhersagemodus von einer identifizierten Gruppe von Vorhersagemodi, die zum Decodieren kompatibel sind, codiert sind, wobei der Block von Pixeln durch einen Video-Encoder codiert ist, welcher eine Verzerrung des Blocks durch die Gruppe von Vorhersagemodi, welche für das Decodieren kompatibel sind, berechnet, eine Teilmenge der Gruppe von Vorhersagemodi basierend auf der berechneten Verzerrung auswählt, eine Verzerrungsschätzung einer strukturierten Ähnlichkeit, SSIM, einsetzt, um eine Verzerrung des Blocks von Pixeln für jeden Vorhersagemodus in der ausgewählten Teilmenge zu berechnen, und einen der Vorhersagemodi in der Teilmenge abhängig von der Schätzung und den Bitraten zum Codieren des Blocks identifiziert, um diesen beim Codieren des Blocks einzusetzen; und einen Decodierfähigkeitsidentifizierer, welcher bezüglich des Video-Encoders die Gruppe von Vorhersagemodi identifiziert, welche zum Decodieren kompatibel sind, und/oder einen vorhersageabhängigen Konfigurator, welcher eine Konfiguration in dem Video-Decoder abhängig von einem Erfassen eines Hinweises auf die Verzerrungsschätzung einer SSIM von dem Video-Encoder ändert.
DE102019103346.2A 2018-03-12 2019-02-11 Ssim-basierte rate-distortion-optimierung für eine verbesserte wahrnehmbare qualität bei videos Pending DE102019103346A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/918,761 US11064203B2 (en) 2018-03-12 2018-03-12 SSIM-based rate distortion optimization for improved video perceptual quality
US15/918,761 2018-03-12

Publications (1)

Publication Number Publication Date
DE102019103346A1 true DE102019103346A1 (de) 2019-09-12

Family

ID=67701809

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019103346.2A Pending DE102019103346A1 (de) 2018-03-12 2019-02-11 Ssim-basierte rate-distortion-optimierung für eine verbesserte wahrnehmbare qualität bei videos

Country Status (2)

Country Link
US (1) US11064203B2 (de)
DE (1) DE102019103346A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10880354B2 (en) * 2018-11-28 2020-12-29 Netflix, Inc. Techniques for encoding a media title while constraining quality variations
WO2020150654A1 (en) * 2019-01-17 2020-07-23 Brightcove Inc. Optimal multi-codec abr ladder design
CN111447438B (zh) * 2020-04-24 2023-05-26 西安理工大学 一种面向通用视频编码的快速帧内预测模式判决方法
CN111510722A (zh) * 2020-04-27 2020-08-07 王程 一种抗误码性能卓越的视频图像高质量转码方法
US11341682B2 (en) 2020-08-13 2022-05-24 Argo AI, LLC Testing and validation of a camera under electromagnetic interference
US11368672B2 (en) 2020-09-14 2022-06-21 Argo AI, LLC Validation of a camera cleaning system
CN112637597B (zh) * 2020-12-24 2022-10-18 深圳大学 Jpeg图像压缩方法、装置、计算机设备及存储介质
CN113099226B (zh) * 2021-04-09 2023-01-20 杭州电子科技大学 面向智慧法院场景的多层次感知视频编码算法优化方法
US11700382B1 (en) * 2021-11-03 2023-07-11 Meta Platforms, Inc. Systems and methods for improving mode decisions in hardware video encoders

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8467448B2 (en) * 2006-11-15 2013-06-18 Motorola Mobility Llc Apparatus and method for fast intra/inter macro-block mode decision for video encoding
NO332189B1 (no) * 2010-02-17 2012-07-23 Cisco Systems Int Sarl Fremgangsmate for videokoding
US9781449B2 (en) * 2011-10-06 2017-10-03 Synopsys, Inc. Rate distortion optimization in image and video encoding
US9118345B2 (en) * 2012-10-04 2015-08-25 Altera Corporation Data compression profiler for configuration of compression

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Siehe z.B. Shiqi Wang, et al. „SSIM-Motivated Rate-Distortion Optimization for Video Coding", IEEE Trans. On Circuits and Systems for Video Tech.; 22.4 (2012):516-529

Also Published As

Publication number Publication date
US11064203B2 (en) 2021-07-13
US20190281302A1 (en) 2019-09-12

Similar Documents

Publication Publication Date Title
DE102019103346A1 (de) Ssim-basierte rate-distortion-optimierung für eine verbesserte wahrnehmbare qualität bei videos
DE69837003T2 (de) Vorrichtung und verfahren zur optimierung der bitratensteurung in einem kodiersystem
DE69738264T2 (de) Videokodierungs- und Videodekodierungsvorrichtung
DE69635369T2 (de) Videokodierungsvorrichtung
DE60305325T2 (de) System und verfahren zur ratenverzerrungsoptimierten datenpartitionierung zur videocodierung unter verwendung von rückwärtsadaption
DE10253380B4 (de) Verfahren und Einrichtung zum Kodieren sich bewegender Bilder mit fester Rechenkomplexität
DE69839100T2 (de) Verbesserte Videokodierung unter Verwendung von adaptiven Blockparametern für kodierte/unkodierte Blöcke
DE69921108T2 (de) Verfahren und vorrichtung zur adaptiven codierung eines videodatenstroms
DE102016125353A1 (de) Kodierratensteuerung von echtzeitvideos unter verwendung einer dynamischen auflösungsumschaltung
DE202016008175U1 (de) Adaptive gerichtete Intra-Prädiktion mit Blockgröße
DE10300048A1 (de) Verfahren und Vorrichtung zur Bildcodierung und -decodierung
DE102013105461A1 (de) Ratensteuerverfahren für mehrschichtige Videocodierung, sowie Videocodiervorrichtung und Videosignalverarbeitungsvorrichtung, welche das Ratensteuerverfahren verwenden
DE202016008177U1 (de) Bewegungsvektoraufteilung des letzten Frames
DE69935564T2 (de) Kodiervorrichtung und -verfahren
DE112017003212T5 (de) Verfahren und System zur Videocodierung mit Kontextdecodierung und Rekonstruktionsumgehung
DE102014006433A1 (de) Codierung eines Bildes
DE102016125591A1 (de) Hybrid-Prädiktionsmodi zur Kodierung von Videos
DE102011008630A1 (de) Techniken zur Bewegungsseinschätzung
DE102016125604A1 (de) Intelligente Sortierung der rekursiven Blockaufteilung für die erweiterte Intra-Prädiktion bei der Videocodierung
DE60213039T2 (de) MPEG4-Videokodierung mit "skipped macroblock" Mode
DE102020125206A1 (de) Verfahren und system zur mehrkanalvideocodierung mit frameratenänderung und kanalübergreifender referenzierung
DE102019215911A1 (de) Adaptive inhaltsquantisierung zur videocodierung
DE10296787B4 (de) Selektive Prädikation für ein Intra-Codieren eines Videodatenblocks
DE112012006541T5 (de) Verfahren zur Videokompression
DE102016124917A1 (de) Anpassungsfähige Kachel-Daten-Grössenkodierung für Video- und Bildkompression

Legal Events

Date Code Title Description
R012 Request for examination validly filed