DE202016008194U1 - Bewegungsvektorvorhersage durch Skalierung - Google Patents

Bewegungsvektorvorhersage durch Skalierung Download PDF

Info

Publication number
DE202016008194U1
DE202016008194U1 DE202016008194.3U DE202016008194U DE202016008194U1 DE 202016008194 U1 DE202016008194 U1 DE 202016008194U1 DE 202016008194 U DE202016008194 U DE 202016008194U DE 202016008194 U1 DE202016008194 U1 DE 202016008194U1
Authority
DE
Germany
Prior art keywords
frame
current
block
motion vectors
frames
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.)
Active
Application number
DE202016008194.3U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE202016008194U1 publication Critical patent/DE202016008194U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • 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/124Quantisation
    • 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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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
    • 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/182Methods 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 a pixel
    • 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/184Methods 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 bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Apparat für die Kodierung eines Videosignals, wobei das Videosignal Frames beinhaltet, die eine Videosequenz definieren, die Frames Blöcke haben und die Blöcke Pixel haben, der Apparat umfassend:
einen Prozessor; und
einen nichtflüchtigen Speicher, der die Anweisung speichert, die den Prozessor veranlasst, ein Verfahren auszuführen, das Folgendes beinhaltet:
das Bestimmen vorhergesagter Bewegungsvektoren für einen Block eines aktuellen Frames der Videosequenz basierend auf einem kombinierten Block in einem vorherigen Frame der Videosequenz und ersten und zweiten Referenzframes des vorherigen Frames in der Videosequenz;
das Bestimmen der aktuellen Bewegungsvektoren für den Block anhand erster und zweiter Referenzframes des aktuellen Frames durch Gewichtung der vorhergesagten Bewegungsvektoren anhand der zeitlichen Abstände zwischen dem vorherigen Frame und den ersten und zweiten Referenzframes des vorherigen Frames und zwischen dem aktuellen Frame und den ersten und zweiten Referenzframes des aktuellen Frames und Kombination mit in dem Videosignal enthaltenen Bits; und
das Dekodieren des Blocks unter Verwendung der aktuellen Bewegungsvektoren.

Description

  • HINTERGRUND
  • Digitale Videostreams stellen gewöhnlich Videos unter Verwendung einer Sequenz von Frames oder Standbildern dar. Jeder Frame kann eine Anzahl von Blöcken beinhalten, die wiederum Informationen mit der Beschreibung des Farbwertes, der Helligkeit oder anderer Attribute für Pixel enthalten können. Die Menge von Daten in einem typischen Videostream ist groß, und Übertragung und Speicherung des Videos können erhebliche Computer- oder Kommunikationsressourcen verwenden. Aufgrund der großen Datenmenge, um die es bei Videodaten geht, ist eine Hochleistungskompression für Übertragung und Speicherung erforderlich. Dieses bezieht häufig eine Inter-Vorhersage unter Verwendung von Bewegungsvektoren mit ein.
  • KURZDARSTELLUNG
  • Diese Offenbarung bezieht sich allgemein auf die Kodierung und Dekodierung von optischen Daten, wie Videostream-Daten, durch Vorhersage von Bewegungsvektoren für einen aktuellen Frame unter Verwendung von Bewegungsvektoren, die für ein früheres Standbild berechnet wurden.
  • Aspekte der hier beschriebenen Implementierungen schließen die Kodierung oder Dekodierung eines Videosignals einschließlich Frames ein, die eine Videosequenz definieren, wobei jeder Frame Blöcke und jeder Block Pixels hat, einschließlich der Feststellung der vorhergesagten Bewegungsvektoren für einen Block eines aktuellen Frames der Videosequenz auf der Grundlage eines kombinierten Blockes in einem früheren Frame der Videosequenz und der ersten und zweiten vorherigen Referenzframes der Videosequenz, der Feststellung der aktuellen Bewegungsvektoren auf der Grundlage der ersten und zweiten aktuellen Referenzframes durch Gewichtung der vorhergesagten Bewegungsvektoren anhand der zeitweiligen Entfernungen zwischen dem vorherigen Frame und den ersten und zweiten vorherigen Referenzframes und dem aktuellen Frame und den ersten und zweiten aktuellen Referenzframes und Kombination dieser Information mit in dem Videosignal enthaltenen Bits und Dekodierung des Blocks unter Verwendung der aktuellen Bewegungsvektoren.
  • Ein Aspekt eines hier beschriebenen Apparats ist ein Apparat für die Kodierung oder Dekodierung eines Videosignals einschließlich Frames ein, die eine Videosequenz definieren, wobei jeder Frame Blöcke und jeder Block Pixels hat, einschließlich Feststellung der vorhergesagten Bewegungsvektoren für einen Block eines aktuellen Frames der Videosequenz auf der Grundlage eines kombinierten Blockes in einem früheren Frame der Videosequenz und der ersten und zweiten vorherigen Referenzframes der Videosequenz, der Feststellung der aktuellen Bewegungsvektoren auf der Grundlage der ersten und zweiten aktuellen Referenzframes durch Gewichtung der vorhergesagten Bewegungsvektoren anhand der zeitweiligen Entfernungen zwischen dem vorherigen Frame und den ersten und zweiten vorherigen Referenzframes und dem aktuellen Frame und den ersten und zweiten aktuellen Referenzframes und Kombination dieser Information mit in dem Videosignal enthaltenen Bits und Dekodierung des Blocks unter Verwendung der aktuellen Bewegungsvektoren.
  • Diese und andere Aspekte dieser Offenbarung werden mit zusätzlichen Details in der folgenden ausführlichen Beschreibung, in den beigefügten Ansprüchen und in den angeschlossenen Abbildungen beschrieben.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Beschreibung hier nimmt Bezug auf die angeschlossenen nachstehend beschriebenen Zeichnungen, wobei die gleichen Referenznummern sich für mehrere Ansichten auf gleiche Teile beziehen.
  • 1 ist ein Schaubild eines Video-Kodierungs- und Dekodierungssystems.
  • 2 ist ein Blockdiagramm eines Beispiels für ein Computergerät, das eine Sende- oder eine Empfangsstation implementieren kann.
  • 3 ist ein Diagramm eines Videostreams, der zu kodieren und anschließend zu dekodieren ist.
  • 4 ist ein Blockdiagramm eines Kodierers entsprechend einem Aspekt der hier enthaltenen Lehre.
  • 5 ist ein Blockdiagramm eines Decoders entsprechend einem Aspekt der hier enthaltenen Lehre.
  • 6 ist ein Flussdiagramm eines Prozesses für die Kodierung oder die Dekodierung eines Blockes durch die Vorhersage von Bewegungsvektoren gemäß einer Implementierung dieser Offenbarung.
  • 7 ist ein Diagramm, das benutzt wird, um den Prozess von 6 zu erklären.
  • DETAILLIERTE BESCHREIBUNG
  • Ein Videostream kann durch eine Vielzahl von Techniken komprimiert werden, um die für das Senden oder Speichern des Videostreams erforderliche Bandbreite zu verringern. Ein Videostream kann durch einen Codec in ein Bitstream kodiert werden, der eine Komprimierung umfassen kann, und kann dann an einen Codec gesandt werden, der den Videostream dekodieren oder dekomprimieren kann, um ihn für die Betrachtung oder Weiterverarbeitung vorzubereiten. Die Kodierung eines Videostreams kann Parameter beinhalten, die Kompromisse zwischen der Videoqualität und der Bitstream-Größe schließen, wobei die Erhöhung der wahrgenommenen Qualität eines dekodierten Videostreams die Anzahl der für ein Senden oder Speichern des Bitstreams erforderlichen Bits erhöhen kann.
  • Eine Technik für das Erreichen einer überlegenen Komprimierungsleistung nutzt die räumliche und zeitliche Korrelation von Videosignalen durch eine räumliche und/oder bewegungskompensierte Vorhersage. Die Inter-Vorhersage verwendet z. B. einen Bewegungsvektor, um einen zuvor kodierten und dekodierten Block zu identifizieren, der einem aktuellen zu kodierenden Block gleicht. Durch die Kodierung des Bewegungsvektors und den Unterschied zwischen den beiden Blöcken kann ein Decoder den aktuellen Block neu erstellen. Die Intra-Vorhersage kann dagegen einen aktuellen Block unter Verwendung der Informationen von demselben Frame vorhersagen und den Unterschied zwischen den beiden zu dekodierenden Blöcken kodieren, um den aktuellen Block neu zu erstellen. Kodierer können die Blöcke eines Frames mit zwei oder mehr einer Vielzahl von Inter- und Intra-Vorhersagemodi kodieren und die Rate/die Verzerrung jedes Modus für jeden Block messen, um den Vorhersagemodus auszuwählen, der die geringste Verzerrung hat, wie dies durch Berechnung einer Summe absoluter Differenzen (SAD) gemessen wird, für die resultierende Rate, wie dies z. B. durch die Anzahl Bits in dem kodierten Bitstream gemessen wird.
  • Einige Codecs können die Anzahl der im Videostream zu sendenden Bits verringern, indem sie die aktuellen Bewegungsvektoren vorhersagen, die mit einem aktuellen Block eines aktuellen Frames verbunden sind. Aktuelle Bewegungsvektoren können mit den vorhergesagten Bewegungsvektoren auf der Grundlage der zuvor kodierten Blöcke in dem aktuellen Frame vorhergesagt werden. Die vorhergesagten Bewegungsvektoren können auf unterschiedliche Art und Weise gewichtet werden, um die Unterschiede bei den Referenzdaten zwischen den aktuellen Bewegungsvektoren und den vorhergesagten Bewegungsvektoren auszugleichen.
  • Die hier enthaltene Lehre beschreibt den Gebrauch von Referenzbewegungsvektoren von kombinierten Blöcken von den vorherigen Frames von dem Videostream, um aktuelle Bewegungsvektoren zu bilden. Die Referenzbewegungsvektoren können durch die Bestimmung der Unterschiede bei den zeitlichen Distanzen zwischen dem vorherigen Frame, bei dem es sich um einen aktuellen Referenzframe handeln kann, und dem vorherigen Referenzframe und dem aktuellen Frame und dem aktuellen Referenzframe gewichtet werden. Bei reibungslos wechselnden Videos haben die kombinierten Blöcke von den vorherigen Frames, die zeitlich nahe an dem aktuellen Frame einschließlich einem oder mehreren aktuellen Referenzframes liegen, höchstwahrscheinlich Bewegungsvektoren, die dem aktuellen Block ähnlich sind. Dies heißt, dass die Anzahl der Bits, die für die Kommunikation der Differenz zwischen den vorhergesagten Bewegungsvektoren und den aktuellen Bewegungsvektoren erforderlich sind, vorhersehbar klein ist und folglich in einer geringen festgelegten Anzahl von Bits übertragen werden kann.
  • Die Vorhersage aktueller Bewegungsvektoren unter Verwendung gewichteter vorhergesagter Bewegungsvektoren von vorherigen Frames kann einem Decoder angezeigt werden, indem Bits in den Videostream eingesetzt werden, um anzuzeigen, dass der aktuelle Block mit gewichteten vorhergesagten Bewegungsvektoren kodiert wird. Der Decoder kann die zeitlichen Distanzen verfolgen, die mit Referenzbildern verbunden sind, indem er die zeitlichen Distanzen jedes Mal zurücksetzt, wenn ein neuer I-Frame oder goldener Frame durch den Decoder empfangen wird. Dann werden die zeitlichen Distanzen jedes Mal aktualisiert, wenn ein Frame durch den Decoder verarbeitet wird. Wenn die zeitliche Distanz mit einem Frame verbunden ist, der für die Vorwärts-Vorhersage verwendet wird, kann die Aktualisierung die Erhöhung der zeitlichen Versetzung des Referenz-Frames vom aktuellen Frame beinhalten. Wenn die zeitliche Distanz mit einem Frame verbunden ist, der für die Rückwärts-Vorhersage verwendet wird, kann die Aktualisierung die Verringerung der zeitlichen Versetzung des Referenz-Frames vom aktuellen Frame beinhalten. Die Kodierung von Videodaten unter Verwendung vorhergesagter Bewegungsvektoren, wie hier beschrieben, können verbesserte Rate-/Verzerrungsabmessungen als Blocks haben, die ohne diese Technik kodiert wurden.
  • 1 ist ein Schaubild eines Video-Kodierungs- und Dekodierungssystems 100. Eine Sendestation 102 kann z. B. ein Computer sein, der eine interne Konfiguration von Hardware wie die in 2 beschriebene hat. Jedoch sind andere geeignete Implementierungen der Sendestation 102 möglich. So kann beispielsweise die Verarbeitung der Sendestation 102 auf mehrere Geräte verteilt werden.
  • Ein Netz 104 kann die Sendestation 102 und eine Empfangsstation 106 für die Kodierung und die Dekodierung des Videostreams miteinander verbinden. Spezifisch kann der Videostream in der Sendestation 102 kodiert werden, und der kodierte Videostream kann in der Empfangsstation 106 dekodiert werden. Das Netz 104 kann z. B. das Internet sein. Das Netz 104 kann auch ein lokales Netz (LAN), ein Weitverkehrsnetz (WAN), ein virtuelles privates Netz (VPN), ein Mobiltelefonnetz oder ein anderes Mittel für die Übermittlung des Videostreams von der Sendestation 102 an, in diesem Beispiel, die Empfangsstation 106 sein.
  • Die Empfangsstation 106 kann in einem Beispiel ein Computer sein, der eine interne Hardware-Konfiguration wie die in 2 beschriebene hat. Jedoch sind andere geeignete Implementierungen der Empfangsstation 106 möglich. So kann beispielsweise die Verarbeitung der Empfangsstation 106 auf mehrere Geräte verteilt werden.
  • Andere Implementierungen des Video-Kodierungs- und Dekodierungssystems 100 sind möglich. So kann beispielsweise eine Implementierung das Netz 104 auslassen. In einer anderen Implementierung kann ein Videostream für die Übermittlung an die Empfangsstation 106 oder ein anderes Gerät mit einem nicht-flüchtigen Speicher zu einem späteren Zeitpunkt kodiert und dann gespeichert werden. In einer Implementierung empfängt die Empfangsstation 106 (z. B. über das Netz 104, einen Computerbus und/oder irgendeinen Kommunikationspfad) den kodierten Videostream und speichert den Videostream für eine spätere Dekodierung. In einer Beispielimplementierung wird ein Real-Time Transport Protokol (RTP) für die Übermittlung des kodierten Videos über das Netz 104 verwendet. In einer anderen Implementierung kann ein anderes Transportprotokoll als RTP verwendet werden z. B. ein Videostreaming-Protokoll auf der Grundlage eines Hypertext-Transfer-Protokolls (HTTP).
  • Wenn sie z. B. in einem Videokonferenzschaltungssystem verwendet werden, können die Sendestation 102 und/oder die Empfangsstation 106 die Fähigkeit beinhalten, einen Videostream wie nachstehend beschrieben sowohl zu kodieren als auch zu dekodieren. So könnte beispielsweise die Empfangsstation 106 ein Videokonferenzteilnehmer sein, der einen kodierten Videobitstream von einem Videokonferenzserver (z. B. der Sendestation 102) empfängt, um ihn zu dekodieren und anzusehen, und weiterhin seinen eigenen Videobitstream kodiert und an den Videokonferenzserver für die Dekodierung und zur Ansicht durch andere Teilnehmer übermittelt.
  • 2 ist ein Blockdiagramm eines Beispiels für ein Computergerät 200, das eine Sende- oder Empfangsstation implementieren kann. So kann beispielsweise das Computergerät 200 ein oder beide, die Sendestation 102 und die Empfangsstation 106 von 1 implementieren. Das Computergerät 200 kann die Form eines Computersystems mit mehreren Computergeräten oder die Form eines einzelnen Computergerätes, z. B., eines mobilen Telefons, eines Tablet-Computers, eines Laptop-Computers, eines Notebook-Computers, eines Desktop-Computers und dergleichen annehmen.
  • Eine CPU 202 in dem Computergerät 200 kann eine Zentraleinheit sein. Alternativ kann die CPU 202 eine andere Art Gerät oder zahlreicher Geräte sein, die zur Manipulation oder zur Verarbeitung von bereits vorhandenen oder später zu entwickelnden Informationen fähig sind. Zwar können die offenbarten Implementierungen mit einem einzelnen Prozessor wie gezeigt ausgeübt werden, z. B. der CPU 202, aber die Vorteile bei der Geschwindigkeit und Leistungsfähigkeit können auch mit mehr als einem Prozessor erzielt werden.
  • Ein Speicher 204 in dem Computergerät 200 ist ein nicht-flüchtiger Speicher und kann ein Festspeicher-(ROM)Gerät oder ein Arbeitsspeicher (RAM) Gerät in einer Implementierung sein. Jegliche andere geeignete Art Speichergerät kann als Speicher 204 benutzt werden. Der Speicher 204 kann Code und Daten 206 beinhalten, auf die durch die CPU 202 mit einem Bus 212 zugegriffen wird. Der Speicher 204 kann weiterhin ein Betriebssystem 208 und Anwendungsprogramme 210 umfassen, wobei die Anwendungsprogramme 210 mindestens ein Programm beinhalten, das es der CPU 202 ermöglicht, die hier beschriebenen Verfahren durchzuführen. So können beispielsweise die Anwendungsprogramme 210 Anwendungen 1 bis N beinhalten, die weiterhin eine Videokodierungsanwendung beinhalten, die die hier beschriebenen Verfahren ausführt. Das Computergerät 200 kann auch einen Sekundärspeicher 214 beinhalten, bei dem es sich z. B. um eine kodierte Karte handeln kann, die mit einem mobilen Computergerät verwendet wird. Weil die Videokommunikations-Sitzungen eine bedeutende Menge Informationen enthalten können, können sie vollständig oder teilweise im Sekundärspeicher 214 gespeichert und in Speicher 204 geladen werden, wenn dies für die Verarbeitung notwendig ist.
  • Das Computergerät 200 kann auch eine oder mehrere Ausgabegeräte umfassen, wie eine Anzeige 218. Bei der Anzeige 218 kann es sich in einem Beispiel um eine berührungsempfindliche Anzeige handeln, die eine Anzeige mit einem berührungsempfindlichen Element kombiniert, das durch Berührungseingaben betätigt wird. Die Anzeige 218 kann über den Bus 212 mit der CPU 202 verbunden werden. Andere Ausgabemechanismen, die es einem Benutzer ermöglichen, das Computergerät 200 zu programmieren oder ansonsten zu benutzen, können zusätzlich zu oder als Alternative zur Anzeige 218 bereitgestellt werden. Wenn das Ausgabegerät eine Anzeige ist oder einschließt, kann die Anzeige auf verschiedene Arten implementiert werden, einschließlich durch eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhrenanzeige (CRT) oder eine LED-Anzeige, wie eine organische LED-(OLED)Anzeige.
  • Das Computergerät 200 kann auch Bildsensorgerät 220 beinhalten oder sich damit in Kommunikation befinden, z. B. eine Kamera oder ein anderes Bildsensorgerät 220, das bereits existiert oder erst noch entwickelt wird und das ein Bild wie das Bild eines Benutzers fühlen kann, der das Computergerät 200 betreibt. Das Bildsensorgerät 220 kann so positioniert werden, dass es auf den Benutzer gerichtet ist, der das Computergerät 200 betreibt. In einem Beispiel können die Position und die optische Achse des Bildsensorgerätes 220 so konfiguriert werden, dass das Blickfeld einen Bereich einschließt, der sich direkt neben der Anzeige 218 befindet und von dem aus die Anzeige 218 zu sehen ist.
  • Das Computergerät 200 kann auch Tonsensorgerät 222 beinhalten oder sich damit in Kommunikation befinden, z. B. ein Mikrofon oder ein anderes Tonsensorgerät, das bereits existiert oder erst noch entwickelt wird und das Töne in der Nähe des Computergerätes 200 fühlen kann. Das Tonsensorgerät 222 kann so positioniert werden, dass es auf den Benutzer gerichtet ist, der das Computergerät 200 betreibt und es kann so konfiguriert werden, dass es Töne empfängt, z. B. Sprache oder andere Äußerungen, die der Benutzer während der Betätigung des Computergerätes 200 verlauten lässt.
  • Auch wenn 2 die CPU 202 und den Speicher 204 der Computergerätes 200 so darstellt, dass sie in eine einzige Einheit integriert sind, können auch andere Konfigurationen verwendet werden. Die Tätigkeiten der CPU 202 kennen auf mehrere Maschinen (wobei jede Maschine einen oder mehrere Prozessoren hat), die direkt oder über ein lokales oder ein anderes Netz miteinander verbunden werden können, verteilt werden. Der Speicher 204 kann auf mehrere Maschinen wie einen netzbasierten Speicher oder Speicher in mehreren Maschinen verteilt werden, die die Tätigkeiten des Computergerätes 200 ausführen. Obgleich hier als einzelner Bus dargestellt, kann der Bus 212 des Computergerätes 200 aus mehreren Bussen bestehen. Weiterhin kann der Sekundärspeicher 214 direkt an die anderen Komponenten des Computergerätes 200 angeschlossen oder über ein Netz erreicht werden, und er kann eine einzelne integrierte Einheit wie eine kodierte Karte oder mehrere Einheiten wie mehrere kodierte Karten enthalten. Das Computergerät 200 kann daher in einer breiten Vielzahl von Konfigurationen implementiert werden.
  • 3 ist ein Diagramm eines Beispiels für einen Videostream 300, der zu kodieren und anschließend zu dekodieren ist. Der Videostream 300 schließt eine Videosequenz 302 ein. Auf der nächsten Stufe schließt die Videosequenz 302 eine Anzahl von angrenzenden Frames 304 ein. Zwar werden die drei Frames als die angrenzenden Frames 304 abgebildet, aber die Videosequenz 302 kann jede beliebige Anzahl angrenzender Frames 304 beinhalten. Die angrenzenden Frames 304 können dann weiter in einzelne Frames z. B. Frame 306 unterteilt werden. Auf der nächsten Stufe kann der Frame 306 in eine Reihe Ebenen oder Segmente 308 unterteilt werden. Die Segmente (oder Ebenen) 308 können Untergruppen von Frames sein, die z. B. eine Parallelverarbeitung ermöglichen. Die Segmente 308 können auch Untergruppen von Frames sein, die die Videodaten in unterschiedliche Farben aufteilen können. So kann beispielsweise der Frame 306 mit Farbvideodaten eine Helligkeitsebene und zwei Chrominanzebenen beinhalten. Die Segmente 308 können mit unterschiedlichen Auflösungen ausprobiert werden.
  • Unabhängig davon, ob der Frame 306 in die Segmente 308 unterteilt wird, kann der Frame 306 weiter in Blöcke 310 unterteilt werden, die Daten enthalten können, die z. B. 16×16 Pixel in Frame 306 entsprechen. Die Blöcke 310 können auch so geordnet werden, dass sie Daten von einen oder mehreren Ebenen von Pixeldaten enthalten. Die Blöcke 310 können auch jede andere geeignete Größe haben, wie 4×4 Pixel, 8×8 Pixel, 16×8 Pixel, 8×16 Pixel, 16×16 Pixel oder größer. Wenn nichts anderes angegeben wird, schließt der Begriff Block einen Makroblock ein. Der Frame 306 kann entsprechend den hier enthaltenen Lehren unterteilt werden, wie nachstehend ausführlicher besprochen wird.
  • 4 ist ein Blockdiagramm eines Kodierers 400 gemäß einer Implementierung. Der Kodierer 400 kann implementiert werden, wie vorstehend beschrieben, in der Sendestation 102 zum Beispiel durch Bereitstellung eines Computer-Softwareprogramms, das in einem Speicher, z. B. im Speicher 204, gespeichert wird. Das Computer-Softwareprogramm kann Maschinenanweisungen beinhalten, die, wenn sie von einem Prozessor wie der CPU 202 ausgeführt werden, die Sendestation 102 dazu veranlassen, Videodaten auf die in 4 beschriebene Weise zu kodieren. Der Kodierer 400 kann auch als spezialisierte Hardware implementiert werden, die z. B. in der Sendestation 102 eingeschlossen ist. Der Kodierer 400 hat die folgenden Stadien, um die verschiedenen Funktionen in einem Vorwärtspfad (durch die durchgehende Verbindungslinien gezeigt) auszuführen, um einen kodierten oder komprimierten Bitstream 420 mit dem Videostream 300 als Eingabe zu produzieren: eine Intra-/Inter-Vorhersagestufe 402, eine Transformationsstufe 404, eine Quantisierungsstufe 406 und eine Entropiekodierungsstufe 408. Der Kodierer 400 kann auch einen Rekonstruktionspfad beinhalten (durch die gepunkteten Verbindungslinien gezeigt), um einen Frame für die Kodierung zukünftiger Blöcke zu rekonstruieren. In 4 hat der Kodierer 400 die folgenden Stufen, um die verschiedenen Funktionen in dem Rekonstruktionspfad auszuführen: eine Dequantisierungsstufe 410, eine inverse Transformationsstufe 412, eine Rekonstruktionsstufe 414 und eine Schleifenfilterstufe 416. Andere strukturelle Variationen des Kodierers 400 können verwendet werden, um den Videostream 300 zu kodieren.
  • Wenn der Videostream 300 für die Kodierung dargestellt wird, kann jeder Frame 306 in den Einheiten der Blöcke verarbeitet werden. In der Intra-/Inter-Vorhersagestufe 402 kann jeder Block mit der Intra-Frame-Vorhersage (auch Intra-Vorhersage genannt) oder Inter-Frame-Vorhersage (hier auch Inter-Vorhersage oder Intervorhersage genannt) kodiert werden. Auf jeden Fall kann ein Vorhersageblock gebildet werden. Im Fall der Intra-Vorhersage kann ein Vorhersageblock aus Proben im aktuellen Frame gebildet werden, die vorher kodiert und rekonstruiert wurden. Im Fall der Inter-Vorhersage kann ein Vorhersageblock aus Proben in einem oder mehreren zuvor konstruierten Referenz-Frames gebildet werden, wie nachstehend ausführlicher besprochen.
  • Danach, immer noch unter Bezugnahme auf 4 kann der Vorhersageblock von dem aktuellen Block in der Intra-/Inter-Vorhersagestufe 402 abgezogen werden, um einen Restblock zu produzieren (auch Rest genannt). Die Transformationsstufe 404 wandelt den Restblock in Transformationskoeffizienten um, z. B. in der Frequenzdomain unter Verwendung von blockbasierten Transformationen. Solche blockbasierten Transformationen schließen beispielsweise die diskrete Kosinustransformation (DCT) und die asymmetrische diskrete Sinustransformation (ADST) ein. Andere blockbasierte Transformationen sind möglich. Außerdem können Kombinationen von unterschiedlichen Transformationen auf einen einzelnen Restblock angewandt werden. In einem Beispiel der Anwendung einer Transformation wandelt das DCT den Restblock in die Frequenzdomain um, in der die Transformations-Koeffizientenwerte auf räumlicher Frequenz basieren. Der Koeffizient mit der niedrigsten Frequenz (DC) oben links auf der Matrix und der Koeffizient mit der höchsten Frequenz unten rechts auf der Matrix. Es sollte anerkannt werden, dass die Größe eines Vorhersageblocks und folglich des sich daraus ergebenden Restblocks sich von der Größe des Transformationsblocks unterscheiden kann. So kann beispielsweise der Vorhersageblock in kleinere Blöcke aufgespalten werden, auf die unterschiedliche Transformationen angewandt werden.
  • Die Quantisierungsstufe 406 wandelt die Transformationskoeffizienten unter Verwendung eines Quantisiererwertes oder einer Quantisierungsstufe in diskrete Quantenwerte um, die als quantisierte Transformationskoeffizienten bezeichnet werden. So können beispielsweise die Transformationskoeffizienten durch den Quantisiererwert geteilt und gekürzt werden. Die quantisierten Transformationskoeffizienten werden dann durch die Entropiekodierstufe 408 entropiekodiert. Die Entropiekodierung kann mit einer Reihe von Techniken, einschließlich Token und Binärbäumen durchgeführt werden. Die entropiekodierten Koeffizienten, zusammen mit anderen Informationen, die für die Dekodierung des Blocks verwendet werden, die zum Beispiel die Transformationsart der verwendeten Vorhersage, die Bewegungsvektoren und den Quantisiererwert beinhalten können, werden dann an den komprimierten Bitstream 420 ausgegeben. Der komprimierte Bitstream 420 kann auch als ein kodierter Videostream oder kodierter Videobitstream bezeichnet werden, und die Bezeichnungen werden hier austauschbar verwendet.
  • Der Rekonstruktionspfad in 4 (dargestellt durch die punktierte Verbindungslinie) kann verwendet werden, um sicherzugehen, dass sowohl der Kodierer 400 als auch ein Decoder 500 (nachstehend beschrieben) die gleichen Referenz-Frames für die Dekodierung des komprimierten Bitstreams 420 verwenden. Der Rekonstruktionspfad führt Funktionen durch, die den Funktionen ähnlich sind, die während des nachstehend ausführlicher besprochenen Dekodierungsprozesses verwendet werden, einschließlich der Dequantisierung des quantisierten Transformationskoeffizienten auf der Dequantisierungsstufe 410 und der Transformation der dequantisierten Transformationskoeffizienten auf der inversen Transformationsstufe 412, um einen abgeleiteten Restblock zu produzieren (auch abgeleiteter Rest genannt). Auf der Rekonstruktionsstufe 414 kann der Vorhersageblock, der auf der Intra-/Inter-Vorhersagestufe 402 vorhergesagt wurde, zu dem abgeleiteten Restblock hinzugefügt werden, um einen rekonstruierten Block zu erstellen. Die Schleifenfilterstufe 416 kann auf den rekonstruierten Block angewandt werden, um Verzerrungen wie Blockartefakte zu verringern.
  • Andere Variationen des Kodierers 400 können verwendet werden, um den komprimierten Bitstream 420 zu kodieren. So kann beispielsweise ein nichttransformationsbasierter Kodierer 400 das Restsignal direkt ohne die Transformationsstufe 404 für bestimmte Blöcke oder Frames dequantisieren. In einer anderen Implementierung kann ein Kodierer 400 die Quantisierungsstufe 406 und die Dequantisierungsstufe 410 haben, die zu einer einzigen Stufe kombiniert werden.
  • 5 ist ein Blockdiagramm eines Decoders 500 gemäß einer anderen Implementierung. Der Decoder 500 kann in der Empfangsstation 106 implementiert werden, z. B. durch Bereitstellung eines Computer-Softwareprogramms, das im Speicher 204 gespeichert wird. Das Computer-Softwareprogramm kann Maschinenanweisungen beinhalten, die, wenn sie von einem Prozessor wie der CPU 202 ausgeführt werden, die Empfangsstation 106 dazu veranlassen, Videodaten auf die in 5 beschriebene Weise zu dekodieren. Der Decoder 500 kann auch in Hardware implementiert werden, die z. B. in der Sendestation 102 oder in der Empfangsstation 106 eingeschlossen ist.
  • Der Decoder 500, ähnlich dem vorstehend besprochenen Rekonstruktionspfad des Kodierers 400, schließt in einem Beispiel die folgenden Stufen ein, um die verschiedenen Funktionen auszuführen, um einen Ausgabe-Videostream 516 aus dem komprimierten Bitstream 420 zu produzieren: eine Entropiedekodierungsstufe 502, eine Dequantisierungsstufe 504, eine inverse Transformationsstufe 506, eine Intra-/Inter-Vorhersagestufe 508, eine Rekonstruktionsstufe 510, eine Schleifenfilterstufe 512 und eine Entblockungsfilterstufe 514. Andere strukturelle Variationen des Decoders 500 können verwendet werden, um den komprimierten Bitstream 420 zu dekodieren.
  • Wenn der komprimierte Bitstream 420 für die Dekodierung dargestellt wird, können die Datenelemente in dem komprimierten Bitstream 420 durch die Entropiedekodierungsstufe 502 dekodiert werden, um einen Satz quantisierter Transformationskoeffizienten zu produzieren. Die Dequantisierungsstufe 504 dequantisiert den quantisierten Transformationskoeffizienten (z. B. durch Multiplikation des quantisierten Transformationskoeffizienten mit dem Quantisiererwert), und die inverse Transformationsstufe 506 rücktransformiert die dequantisierten Transformationskoeffizienten durch Verwendung ausgewählter Transformationsarten, um einen abgeleiteten Restblock zu produzieren, der mit demjenigen identisch sein kann, der von der inversen Transformationsstufe 412 im Kodierer 400 erstellt wurde. Mit den aus dem komprimierten Bitstream 420 dekodierten Kopfzeileninformationen kann der Decoder 500 die Intra-/Inter-Vorhersagestufe 508 benutzen, um den gleichen Vorhersageblock zu erstellen, der im Kodierer 400 z. B. auf der Intra-/Inter-Vorhersagestufe 402, erstellt wurde. Auf der Rekonstruktionsstufe 510 kann der Vorhersageblock zu dem abgeleiteten Restblock hinzugefügt werden, um einen rekonstruierten Block zu erstellen. Die Schleifenfilterstufe 512 kann auf den rekonstruierten Block angewandt werden, um Blockartefakte zu verringern. Sonstige Filterungen können auf den rekonstruierten Block angewandt werden. In diesem Beispiel wird die Entblockungsfilterstufe 514 auf den rekonstruierten Block angewandt, um Blockierungsverzerrungen zu verringern, und das Resultat ist die Ausgabe des Ausgabevideostreams 516. Der Ausgabevideostream 516 kann auch als ein dekodierter Videostream bezeichnet werden, und die Bezeichnungen werden hier austauschbar verwendet.
  • Andere Variationen des Decoders 500 können verwendet werden, um den komprimierten Bitstream 420 zu dekodieren. So kann beispielsweise der Decoder 500 den Ausgabevideostream 516 ohne die Entblockungsfilterstufe 514 produzieren.
  • 6 ist ein Flussdiagramm eines Prozesses 600 für die Kodierung oder die Dekodierung eines Blocks durch die Vorhersage von Bewegungsvektoren unter Verwendung von vorherigen Frames gemäß einer Implementierung dieser Offenbarung. Das Verfahren oder der Prozess 600 können in einem System wie dem Computergerät 200 implementiert werden, um die Kodierung oder die Dekodierung eines Videostreams zu unterstützen. Der Prozess 600 kann beispielsweise als ein Softwareprogramm implementiert werden, das von einem Computergerät wie der Sendestation 102 oder der Empfangsstation 106 ausgeführt wird. Das Softwareprogramm kann computerlesbare Anweisungen enthalten, die in einem Speicher wie dem Speicher 204 gespeichert werden, der bei Ausführung durch einen Prozessor wie durch die CPU 202 das Computergerät zur Ausführung des Prozesses 600 veranlasst. Der Prozess 600 kann auch vollständig oder teilweise durch Verwendung von Hardware implementiert werden. Wie vorstehend erklärt, können einige Computergeräte mehrere Speicher und mehrere Prozessoren haben, und die Schritte oder Tätigkeiten des Prozesses 600 können in solchen Fällen auf unterschiedliche Prozessoren und Speicher aufgeteilt werden. Die Verwendung der Begriffe „Prozessor” und „Speicher” im Singular umfasst hier Computergeräte, die nur einen Prozessor haben oder einen Speicher haben, sowie Geräte, die mehrere Prozessoren oder Speicher haben, die jeweils jedes bei der Ausführung von einigen, aber nicht notwendigerweise allen aufgeführten Schritten verwendet werden können.
  • Der Einfachheit halber wird der Prozess 600 als eine Reihe von Schritten oder Tätigkeiten dargestellt und beschrieben. Jedoch können die Schritte und Tätigkeiten gemäß dieser Offenbarung in verschiedenen Reihenfolgen und/oder gleichzeitig auftreten. Außerdem können die Schritte oder Tätigkeiten gemäß dieser Offenbarung mit anderen Schritten oder Tätigkeiten auftreten, die hier nicht dargestellt und beschrieben werden. Außerdem sind eventuell nicht alle beschriebenen Schritte oder Tätigkeiten notwendig, um ein Verfahren gemäß dem offenbarten Gegenstand zu implementieren. Der Prozess 600 kann für jeden Frame des Eingabesignals wiederholt werden.
  • Wenn der Prozess 600 ein Kodierungsprozess ist, kann das Eingabesignal z. B. der Videostream 300 sein. Das Eingabesignal kann von dem Computergerät 200 empfangen werden, das den Prozess 600 in einer Reihe von Weisen ausführt. So kann beispielsweise das Eingabesignal durch das Bildsensorgerät 220 erfasst oder von einem anderen Gerät durch eine Eingabe empfangen werden, die an den Bus 212 angeschlossen ist. Das Eingabesignal könnte in einer anderen Implementierung vom Sekundärspeicher 214 abgerufen werden. Andere Arten des Empfangen und andere Quellen des Eingabesignals sind möglich. Zum Beispiel kann das Eingabesignal, wenn der Prozess 600 ein Dekodierungsprozess ist, ein kodierter Bitstream, wie der komprimierte Bitstream 420, sein.
  • Videokomprimierungsschemata können zuerst ein Bild in große Blöcke unterteilen. Ein Kodierer kann rekursiv große Blöcke in kleinere Blöcke aufteilen. Diese rekursiven Beziehungen zwischen Blöcken können durch eine oder mehrere Baumstrukturen dargestellt werden. Für jeden Block, der einen Blattknotenpunkt auf der Baumstruktur darstellt, kann der Kodierer die Intra- oder Inter-Vorhersage wählen, um einen Vorhersageblock zu produzieren. Ein Kodierer kann dann einen Restblock kodieren, der unter Verwendung des Vorhersageblocks mit verlustfreier algebraischer Kodierung gebildet wird. Aspekte der offenbarten Implementierungen schließen einen neuen Vorhersagemodus für die Produktion besserer Vorhersageblöcke für schwierig vorherzusagende Blöcke ein, um die Qualität der Vorhersage zu verbessern und so die gesamte Kodierungseffizienz zu verbessern.
  • Bei Videokomprimierungsschemata kann sich die Kodierung einzelner Blöcke entweder auf die Intra- oder auf die Inter-Vorhersage begründen. Im Fall der Inter-Vorhersage können die Vorhersagemodi die Modi beinhalten, die die Bewegungsvektorvorhersage mit Bewegungsvektoren anzeigen, die für Blöcke im gleichen Frame wie der aktuelle Block erstellt werden. Die hier offenbarten Aspekte schließen die neuen Vorhersagemodi ein, die die Bewegungsvektorvorhersage mit den gewichteten Bewegungsvektoren anzeigen, die mit Blöcken eines vorherigen Frames verbunden sind, die an Blöcken eines aktuellen Frames ausgerichtet wird.
  • 7 ist ein Diagramm, das die Frames 702, 704, 706, 708, 710, 712 eines Videostreams 700 auf einer Zeitleiste T zeigt. Videostream 700 schließt einen aktuellen Frame 710 und einen aktuellen Block 716 ein. Der Videostream schließt auch einen kombinierten Block 714 des vorherigen Frames 704 ein. Der kombinierte Block 714 wird mit dem aktuellen Block 716 zusammengefügt. In einem weich wechselnden Video können kombinierte Blöcke Bewegungsvektoren haben, die Bewegungsvektoren der aktuellen Blöcke sehr ähnlich sind. Der kombinierte Block 714 schließt die Bewegungsvektoren ein, die von den Vektoren mit der Bezeichnung MV1_PREV 7 und MV2_PREV angezeigt werden. Der kombinierte Block schließt auch die zeitlichen Abstände T1_PREV und T2_PREV ein. 7 zeigt auch den aktuellen Block 716 des aktuellen Frames 710, der Bewegungsvektoren hat, die durch die Vektoren mit den Bezeichnungen MV1_CURR und MV2_CURR angezeigt werden. Der aktuelle Block schließt auch die zeitlichen Abstände T1_CURR und T2_CURR ein.
  • Ein Bewegungsvektor stellt eine zeitliche Korrelation zwischen unterschiedlichen Videoframes dar, und eine solche Korrelation hängt eng mit der Zeitspanne zusammen, die zwischen dem aktuellen Frame und seinem Referenzframe abgelaufen ist. Wie in 7 für den kombinierten Block im zuvor kodierten Frame gezeigt, kann er bis 2 Bewegungsvektoren haben, einen Vorwärtsvektor (MV1_PREV), der sich auf einen Referenzframe in der Vergangenheit bezieht, und einen Rückwärtsvektor (MV2_PREV), der sich auf einen Referenzframe in der Zukunft bezieht. T1_PREV zeigt die Zeitspanne zwischen dem vorherigen Frame und seinem Vorwärtsreferenzframe an, während T2_PREV die Zeitspanne zwischen dem vorherigen Frame und seinem Rückwärtsreferenzframe anzeigt. Ähnlich kann der aktuelle Frame auch bis 2 Bewegungsvektoren, MV1_CURR und MV2_CURR haben, und zwei Zeitspannen T1_CURR und T2_CURR zeigen die Zeit zwischen dem aktuellen Frame und seinen eigenen Vorwärts- und Rückwärtsreferenzframes an.
  • Angenommen, dass die Mehrzahl der translatorischen Bewegung zwischen den Frames weich ist, können die Zeitspannen zwischen dem vorherigen Frame und seinen Referenzen untersucht und mit den Zeitspannen zwischen dem aktuellen Frame und seinen eigenen Referenzen verglichen werden. Der vorherige Bewegungsvektor des kombinierten Blocks kann entsprechend skaliert werden, so dass er dem Verhältnis zwischen den zwei Zeitspannen entspricht, und dann als Bewegungsvektor-Referenzkandidat für die Kodierung des aktuellen Bewegungsvektors verwendet werden.
  • Zum Beispiel können für die Kodierung des Vorwärtsbewegungsvektors MV1_CURR für den aktuellen Block entweder MV1_PREV oder MV2_PREV, wenn sie verfügbar sind, als die Bewegungsvektor-Referenzkandidaten für die Kodierung von MV1_CURR verwendet werden:
    Bewegungsvektor-Referenzkandidat 1: MV1_PREV/T1_PREV·T1_CURR
    Bewegungsvektor-Referenzkandidat 2: MV2_PREV/T2_PRFV·T1_CURR
  • Auf ähnliche Weise können wir zwei Bewegungsvektor-Referenzkandidaten für die Kodierung von MV2_CURR erhalten:
    Bewegungsvektor-Referenzkandidat 1: MV1_PREV/T1_PREV·T2_CURR
    Bewegungsvektor-Referenzkandidat 2: MV2_PREV/T2_PREV·T2_CURR
  • Zurück zu 6, kann Schritt 602 des Prozesses 600 die zeitlichen Abstände des vorherigen Frames für den kombinierten Block 714, z. B. T1_PREV und T2_PREV, bestimmen. Aspekte der offenbarten Implementierungen können T1_PREV und T2_PREV bestimmen, indem sie die Bits untersuchen, die z. B. mit einem kombinierten Block 714 verbunden sind. Diese Bits werden bei Empfang eines I-Frame zurückgesetzt und können den zeitlichen Abstand anzeigen, indem man ihn als Versetzung in Frames von dem aktuellen Frame kodiert. Während der Decoder Frames verarbeitet, können die Versetzungen aktualisiert werden, so dass sie die richtigen zeitlichen Abstände darstellen, während die Frames vorrücken, indem sie die Versetzung erhöhen, wenn der Frame für die Vorwärtsvorhersage verwendet wird, und indem sie die Versetzung verringern, wenn der Frame für die Rückwärtsvorhersage benutzt wird.
  • Bei Schritt 604 des Prozesses 600 können zeitliche Abstände des aktuellen Frames für den aktuellen Block 716, z. B. T1_CURR und T2_CURR, bestimmt werden. Aspekte der offenbarten Implementierung können T1_CURR und T2_CURR anhand der Informationen bestimmen, die in Videostream 700 eingeschlossen sind, um die Bewegungsvorhersage auszuführen. Ein Schritt 606 des Prozesses 600 kann die vorherigen Bewegungsvektoren MV1_PREV und MV2_PREV anhand der Bits bestimmen, die im Videostream eingeschlossen sind und z. B. am kombinierten Block 714 gespeichert werden. Auf Schritt 608 kann der Prozess 600 die vorherigen Bewegungsvektoren anhand der Kombination der aktuellen zeitlichen Abstände mit den vorherigen zeitlichen Abständen gewichten. Wie in 7 zu sehen ist, können, da die zeitlichen Abständen T1_PREV und DER T2_PREV sich von zeitlichen Abständen T1_CURR und T2_CURR unterscheiden können, die Vektoren MV1_PREV und MV2_PREV sich von den Vektoren MV1_CURR und MV2_CURR unterscheiden. Die vorherigen Bewegungsvektoren MV1_PREV und MV2_PREV des kombinierten Blocks können entsprechend gewichtet oder skaliert werden, um das Verhältnis zwischen den zwei Zeitabständen anzupassen. Eine solche gewichtete oder skalierte Bewegung kann eine effektive Vorhersage für die Kodierung der aktuellen Bewegungsvektoren bereitstellen.
  • Zurück zu 6, auf Schritt 610 dekodiert der Prozess 600 den aktuellen Block 716. Der aktuelle Block 714 kann mit den aktuellen Bewegungsvektoren dekodiert werden, indem die in dem Videostream für einen aktuellen Block 716 übertragenen Bewegungsvektoren zu den gewichteten vorhergesagten Bewegungsvektoren MV1_PREV und MV1_PREV von Schritt 608 hinzugefügt werden, um aktuelle Bewegungsvektoren MV1_CURR und MV2_CURR zu erzeugen. Die aktuellen Bewegungsvektoren MV1_CURR und MV2_CURR werden mit den aktuellen Referenzframes 708, 712 verwendet, um den aktuellen Block 716 vorherzusagen.
  • Die Kodierung eines Blocks entsprechend den Aspekten der offenbarten Implementierungen schließt die Bestimmung der gewichteten vorhergesagten Bewegungsvektoren MV1_PREV und MV2_PREV und das Subtrahieren von den aktuellen Bewegungsvektoren MV1_CURR und MV2_CURR und die Kodierung der Differenz in den Videostream als kleine festgelegte Anzahl Bits als die Bewegungsvektoren zusammen mit Bits ein, die anzeigen, dass diese Inter-Vorhersagemodi kombinierte Blöcke in vorherigen Frames verwenden. Folglich fügen offenbarte Aspekte Bits hinzu, die zeitliche Informationen der Frame-Kopfzeile jedes Referenzframes darstellen. Z. Z. ist in einigen Codecs ein einzelnes Bit mit jedem Referenzframe verbunden und zeigt an, ob sich der Referenzframe zeitlich vor oder hinter dem gegenwärtigen Frame befindet. Weitere zeitliche Informationen können zu jedem der Referenzframes hinzugefügt werden. So kann beispielsweise eine festgelegte Anzahl Bits verwendet werden, um den zeitlichen Abstand (Zeitspanne) zwischen dem aktuellen kodierten Frame und dem Referenzframe zu kodieren. Unter Verwendung solcher zeitlicher Abstandsinformationen können mehr zeitliche Bewegungsvektor-Referenzkandidaten erhalten werden, um die aktuellen Bewegungsvektoren effektiver zu kodieren. Eine solche skalierte Bewegungsvektorverarbeitung kann einen neuen Inter-Vorhersage-Kodierungsmodus in den Codecs für eine effizientere Kodierung bereitstellen.
  • Das Hinzufügen zeitlicher Informationen zu der Frame-Kopfzeile für jeden Referenzframe kann einen Bitrate-Kostennachteil nach sich ziehen. Um solche zeitlichen Informationsaspekte der offenbarten Implementierungen effektiv zu kodieren, behalten Sie das Update auf dem Referenzbildspeicher im Auge. Wenn z. B. der Referenzbildspeicher aktualisiert wird, wenn ein I-Frame oder Schlüssel-Frame kodiert und in den Referenzbildspeicher gelegt wird, kann der Absolutwert der Zeitspanne für jeden Referenzframe kodiert und in den Videostream geschrieben werden. Andernfalls, wenn ein I-Frame kodiert und in den Videostream geschrieben wird, kann ihre entsprechende Zeitspanne für diejenigen Referenzframes, die nicht aktualisiert werden und in dem Referenzspeicher für die Kodierung des folgenden Frames bleiben, dementsprechend erneut berechnet werden, ohne dass zusätzliche Informationen im Bitstream benötigen werden, wie folgt: Wenn der Referenzframe für eine Vorwärtsvorhersage benutzt wird, nimmt seine Zeitspanne um ein Frameintervall zu; ansonsten, wenn er für eine rückwärtige Vorhersage verwendet wird, verringert sich seine Zeitspanne um ein Frameintervall. Wenn ein Referenzframe aktualisiert wird, wird seine Zeitspanne zurückgesetzt, und der entsprechende Absolutwert wird kodiert und in den Bitstream geschrieben. Auf diese Weise kann die Zahl der Bits, die die Bewegungsvektoren beschreiben, minimiert werden, während die gleiche dekodierte Videoqualität beibehalten wird.
  • Die vorstehend beschriebenen Aspekte der Kodierung und der Dekodierung veranschaulichen einige Beispiele für Kodierungs- und Dekodierungstechniken. Jedoch gilt es zu verstehen, dass die Kodierung und die Dekodierung, wie diese Begriffe in den Ansprüchen verwendet werden, Komprimierung, Dekomprimierung, Transformation oder jegliche andere Verarbeitung oder Änderung von Daten bedeuten können.
  • Die Wörter „Beispiel” und „Aspekt” werden hier so verwendet, dass sie als Beispiel oder Illustration dienend bedeuten. Ein Aspekt oder Design, der/das hier als „Beispiel” oder „Aspekt” beschrieben wird, ist nicht notwendigerweise als vorteilhaft oder bevorzugt gegenüber anderen Aspekten oder Designs auszulegen. Vielmehr soll der Gebrauch des Wortes „Beispiel” oder „Aspekt” Konzepte auf eine konkrete Art und Weise darstellen. Wie in dieser Anmeldung verwendet, bedeutet der Begriff „oder” eine einschließliches „oder”, nicht ein ausschließliches „oder”. Das heißt, wenn nicht anders angegeben oder aus dem Kontext offensichtlich, umfasst „X schließt A oder B ein” alle natürlichen eingeschlossenen Permutationen. Das heißt, wenn X A beinhaltet; wenn X B beinhaltet; oder wenn X A und B beinhaltet, dann trifft „X beinhaltet A oder B” auf alle der vorstehenden Fälle zu. Zusätzlich sollten die in diesen Anmeldung und den beigefügten Ansprüchen verwendeten Artikel „ein” und „eine” im Allgemeinen so ausgelegt werden, dass sie „eines oder mehrere” bedeuten, es sei denn, es ist ausdrücklich etwas anderes angegeben oder aus dem Kontext offensichtlich, dass der Singular gemeint ist. Außerdem bedeutet der Gebrauch des Begriffs „eine Implementierung” nicht, dass dieselbe Ausführungsform oder Implementierung gemeint ist, wenn dies nicht so beschrieben wird.
  • Implementierungen der Sendestation 102 und/oder der Empfangsstation 106 (und die darauf gespeicherten oder davon ausgeführten Algorithmen, Verfahren, Anweisungen usw., einschließlich durch den Kodierer 400 und den Decoder 500) können in Hardware, in Software oder in jeglicher Kombination davon verwirklicht werden. Die Hardware kann beispielsweise Computer, IP-Kerne, anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logikfelder, optische Prozessoren, programmierbare Logikcontroller, Mikrocode, Mikrocontroller, Servers, Mikroprozessoren, digitale Signalprozessoren oder jede andere geeignete Schaltung umfassen. In den Ansprüchen sollte der Begriff „Prozessor” so verstanden werden, dass er jegliche der vorstehenden Hardware, entweder einzeln oder in Kombination, umfasst. Die Begriffe „Signal” und „Daten” werden austauschbar verwendet. Weiterhin müssen Teile der Sendestation 102 und der Empfangsstation 106 nicht notwendigerweise auf die gleiche Weise implementiert werden.
  • Weiterhin können z. B. in einem Aspekt die Sendestation 102 oder die Empfangsstation 106 mit einem Allzweckcomputer oder -prozessor mit einem Computerprogramm implementiert werden, das, wenn es ausgeführt wird, jegliche der hier beschriebenen Verfahren, Algorithmen und/oder der Anweisungen ausführt. Zusätzlich oder alternativ kann beispielsweise ein Spezialcomputer/-prozessor verwendet werden, der andere Hardware für das Ausführen jeglicher der hier beschriebenen Verfahren, Algorithmen oder Anweisungen enthalten kann.
  • Die Sendestation 102 und die Empfangsstation 106 können z. B. auf Computern in einem Videokonferenzsystem implementiert werden. Alternativ kann die Sendestation 102 auf einem Server und die Empfangsstation 106 kann auf einem vom Server getrennten Gerät implementiert werden, z. B. einem Handkommunikationsgerät. In diesem Fall kann die Sendestation 102 den Inhalt mit einem Kodierer 400 in ein kodiertes Videosignal kodieren und das kodierte Videosignal an das Kommunikationsgerät übertragen. Das Kommunikationsgerät wiederum kann dann das kodierte Videosignal mit einem Decoder 500 dekodieren. Alternativ kann das Kommunikationsgerät den Inhalt dekodieren, der lokal auf dem Kommunikationsgerät gespeichert ist, z. B. Inhalt, der nicht von der Sendestation 102 übertragen wurde. Andere geeignete Übertragungs- und Empfangsschemata zur Implementierung sind verfügbar. So kann beispielsweise die Empfangsstation 106 im Allgemeinen ein stationärer PC sein anstatt eines mobilen Kommunikationsgerätes, und/oder ein Gerät. das einen Kodierer 400 einschließt, kann auch einen Decoder 500 beinhalten.
  • Weiterhin können alle oder ein Teil der Implementierungen der vorliegenden Lehren die Form eines Computerprogrammproduktes annehmen, auf das z. B. von einem materiellen vom Computer zu nutzenden oder computerlesbaren Medium aus zugegriffen werden kann. Ein vom Computer zu nutzendes oder computerlesbares Medium kann jegliches Gerät sein, das z. B. das Programm für die Nutzung durch oder in Zusammenhang mit einem Prozessor greifbar enthalten, speichern, kommunizieren oder transportieren kann. Bei dem Medium kann es sich z. B. um ein elektronisches, magnetisches, optisches, elektromagnetisches oder ein Halbleitergerät handeln. Andere geeignete Medien sind ebenfalls vorhanden.
  • Die vorstehend beschriebenen Ausführungsformen, Implementierungen und Aspekte wurden beschrieben, um ein einfaches Verständnis der vorliegenden Erfindung zu ermöglichen, und begrenzen die vorliegende Erfindung nicht. Ganz im Gegenteil soll die Erfindung verschiedene Änderungen und ähnliche Arrangements umfassen, die im Umfang der beigefügten Ansprüche beinhaltet sind, und der Umfang soll im weitest möglichen Sinne ausgelegt werden, so dass er all solche Änderungen und entsprechende Strukturen umfasst, wie nach dem Gesetz zulässig sind.

Claims (6)

  1. Apparat für die Kodierung eines Videosignals, wobei das Videosignal Frames beinhaltet, die eine Videosequenz definieren, die Frames Blöcke haben und die Blöcke Pixel haben, der Apparat umfassend: einen Prozessor; und einen nichtflüchtigen Speicher, der die Anweisung speichert, die den Prozessor veranlasst, ein Verfahren auszuführen, das Folgendes beinhaltet: das Bestimmen vorhergesagter Bewegungsvektoren für einen Block eines aktuellen Frames der Videosequenz basierend auf einem kombinierten Block in einem vorherigen Frame der Videosequenz und ersten und zweiten Referenzframes des vorherigen Frames in der Videosequenz; das Bestimmen der aktuellen Bewegungsvektoren für den Block anhand erster und zweiter Referenzframes des aktuellen Frames durch Gewichtung der vorhergesagten Bewegungsvektoren anhand der zeitlichen Abstände zwischen dem vorherigen Frame und den ersten und zweiten Referenzframes des vorherigen Frames und zwischen dem aktuellen Frame und den ersten und zweiten Referenzframes des aktuellen Frames und Kombination mit in dem Videosignal enthaltenen Bits; und das Dekodieren des Blocks unter Verwendung der aktuellen Bewegungsvektoren.
  2. Apparat nach Anspruch 1, wobei die Dekodierung des Blocks auf den in dem Videosignal eingeschlossen Bits basiert, die einen Kodierungsmodus anzeigen und wobei die aktuellen Bewegungsvektoren auf der Grundlage der Gewichtung der vorhergesagten Bewegungsvektoren sowie der Bits bestimmt werden, die im Videosignal eingeschlossen sind.
  3. Apparat nach Anspruch 1 oder 2, wobei die zeitlichen Abstände durch eine festgelegte Anzahl Bits angezeigt werden, die in dem Videosignal eingeschlossen sind, das die zeitlichen Abstände zwischen dem aktuellen Frame und sowohl den ersten als auch den zweiten Referenzframes des aktuellen Frames und zwischen dem aktuellen Frame und den ersten und zweiten Referenzframes des vorherigen Frames anzeigt.
  4. Apparat nach Anspruch 3, wobei die zeitlichen Abstände als Versetzung von dem aktuellen Frame kodiert werden.
  5. Apparat nach Anspruch 3, wobei ein zeitlicher Abstand der zeitlichen Abstände zuerst als Versetzung von einem I-Frame kodiert und dann jedes Mal aktualisiert wird, wenn ein Frame verarbeitet und wenn ein neuer I-Frame übertragen wird.
  6. Apparat nach Anspruch 5, wobei die Aktualisierung der Versetzung die Erhöhung der Versetzung durch ein Frameintervall beinhaltet, wenn der Rahmen für die Vorwärtsvorhersage benutzt wird.
DE202016008194.3U 2016-03-18 2016-12-20 Bewegungsvektorvorhersage durch Skalierung Active DE202016008194U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/074,442 US10271062B2 (en) 2016-03-18 2016-03-18 Motion vector prediction through scaling
US15/074,442 2016-03-18

Publications (1)

Publication Number Publication Date
DE202016008194U1 true DE202016008194U1 (de) 2017-04-25

Family

ID=57799818

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202016008194.3U Active DE202016008194U1 (de) 2016-03-18 2016-12-20 Bewegungsvektorvorhersage durch Skalierung
DE102016124909.2A Pending DE102016124909A1 (de) 2016-03-18 2016-12-20 Bewegungsvektorvorhersage durch Skalierung

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE102016124909.2A Pending DE102016124909A1 (de) 2016-03-18 2016-12-20 Bewegungsvektorvorhersage durch Skalierung

Country Status (5)

Country Link
US (1) US10271062B2 (de)
CN (1) CN107205156B (de)
DE (2) DE202016008194U1 (de)
GB (1) GB2548450B (de)
WO (1) WO2017160363A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10873775B2 (en) * 2017-06-12 2020-12-22 Netflix, Inc. Staggered key frame video encoding
WO2019183906A1 (zh) 2018-03-29 2019-10-03 华为技术有限公司 帧间预测的方法和装置
CN110800297B (zh) * 2018-07-27 2022-10-04 深圳市大疆创新科技有限公司 视频编码方法及装置、计算机可读存储介质
US11665365B2 (en) * 2018-09-14 2023-05-30 Google Llc Motion prediction coding with coframe motion vectors
CN111263166B (zh) * 2018-11-30 2022-10-11 华为技术有限公司 一种视频图像预测方法及装置
CN112135127B (zh) * 2019-11-05 2021-09-21 杭州海康威视数字技术股份有限公司 一种编解码方法、装置、设备及机器可读存储介质
CN112203091B (zh) * 2020-12-04 2021-05-04 浙江智慧视频安防创新中心有限公司 基于二次多项式的运动矢量预测方法、系统及计算机介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020122491A1 (en) * 2001-01-03 2002-09-05 Marta Karczewicz Video decoder architecture and method for using same
US6920175B2 (en) * 2001-01-03 2005-07-19 Nokia Corporation Video coding architecture and methods for using same
US20080165860A1 (en) 2006-08-31 2008-07-10 Zohair Sahraoui H.264 Data processing
KR101505195B1 (ko) 2008-02-20 2015-03-24 삼성전자주식회사 직접 모드 부호화 및 복호화 방법
KR101377527B1 (ko) * 2008-10-14 2014-03-25 에스케이 텔레콤주식회사 복수 개의 참조 픽처의 움직임 벡터 부호화/복호화 방법 및장치와 그를 이용한 영상 부호화/복호화 장치 및 방법
KR101522850B1 (ko) 2010-01-14 2015-05-26 삼성전자주식회사 움직임 벡터를 부호화, 복호화하는 방법 및 장치
CN102835111B (zh) * 2010-01-19 2015-08-12 三星电子株式会社 使用先前块的运动矢量作为当前块的运动矢量来对图像进行编码/解码的方法和设备
RU2609083C2 (ru) 2011-10-28 2017-01-30 Сан Пэтент Траст Способ кодирования изображений, способ декодирования изображений, устройство кодирования изображений и устройство декодирования изображений
JP5485969B2 (ja) * 2011-11-07 2014-05-07 株式会社Nttドコモ 動画像予測符号化装置、動画像予測符号化方法、動画像予測符号化プログラム、動画像予測復号装置、動画像予測復号方法及び動画像予測復号プログラム

Also Published As

Publication number Publication date
GB2548450A (en) 2017-09-20
US10271062B2 (en) 2019-04-23
CN107205156B (zh) 2020-03-03
CN107205156A (zh) 2017-09-26
GB201621551D0 (en) 2017-02-01
DE102016124909A1 (de) 2017-09-21
GB2548450B (en) 2020-09-16
US20170272770A1 (en) 2017-09-21
WO2017160363A1 (en) 2017-09-21

Similar Documents

Publication Publication Date Title
DE202016008194U1 (de) Bewegungsvektorvorhersage durch Skalierung
DE102016125379B4 (de) Bewegungsvektoraufteilung des letzten Frames
DE102016125117B4 (de) Bewegungsvektorkodierung mit dynamischen Referenzbewegungsvektoren
DE202016008192U1 (de) Auswahl des Referenz-Bewegungsvektors über Referenzeinzelbild Puffer-Nachverfolgung
DE202016008175U1 (de) Adaptive gerichtete Intra-Prädiktion mit Blockgröße
DE102016125353A1 (de) Kodierratensteuerung von echtzeitvideos unter verwendung einer dynamischen auflösungsumschaltung
DE202016008155U1 (de) Hybrid-Prädiktionsmodi zur Kodierung von Videos
US9807423B1 (en) Hybrid transform scheme for video coding
DE202016008178U1 (de) Bewegungsvektorvorhersage mittels eines vorhergehenden Einzelbildresiduums
EP3571841B1 (de) Gleichstromkoeffizientes zeichencodierungsschema
US10506240B2 (en) Smart reordering in recursive block partitioning for advanced intra prediction in video coding
US10798402B2 (en) Same frame motion estimation and compensation
DE102019103346A1 (de) Ssim-basierte rate-distortion-optimierung für eine verbesserte wahrnehmbare qualität bei videos
US10009622B1 (en) Video coding with degradation of residuals
DE112015003805T5 (de) Bewegungskompensierte partitionierung
DE102016125086A1 (de) Adaptiver direktionaler Schleifenfilter
DE69915843T2 (de) Teilbandkodierung/-dekodierung
DE202016008207U1 (de) Kodierinterpolationsfilter
DE102016015996B3 (de) Anpassungsfähige Kachel-Daten-Grössenkodierung für Video- und Bildkompression
US9681128B1 (en) Adaptive pre-transform scanning patterns for video and image compression
DE102016125593B4 (de) Dynamischer Kodiermodus für Referenz-Bewegungsvektoren
US20200084478A1 (en) Video coding using separate learning and filtering pathways
DE102015103827A9 (de) Fehlerverfolgung und Fehlerabschwächung für Videokompression auf Bewegungskompensationsbasis
DE202016008206U1 (de) Abschätzung einer Bewegung in einem superweiten Bereich zur Kodierung eines Videos
DE10243568A1 (de) Verfahren zur skalierbaren Videocodierung eines Videobildsignals sowie ein zugehöriger Codec

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years