DE102016125086A1 - Adaptiver direktionaler Schleifenfilter - Google Patents

Adaptiver direktionaler Schleifenfilter Download PDF

Info

Publication number
DE102016125086A1
DE102016125086A1 DE102016125086.4A DE102016125086A DE102016125086A1 DE 102016125086 A1 DE102016125086 A1 DE 102016125086A1 DE 102016125086 A DE102016125086 A DE 102016125086A DE 102016125086 A1 DE102016125086 A1 DE 102016125086A1
Authority
DE
Germany
Prior art keywords
filter
directional
angle
block
selecting
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.)
Ceased
Application number
DE102016125086.4A
Other languages
English (en)
Inventor
Yaowu Xu
Paul Wilkins
James Bankoski
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 DE102016125086A1 publication Critical patent/DE102016125086A1/de
Ceased 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/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/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • 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/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
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Landscapes

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

Abstract

Eine adaptive Richtungsschleifenfilterung kann die Anzahl der blockierenden Artefakte verringern, die durch Kodieren einer nicht senkrechten Bildkante in einem Einzelbild einer Videosequenz erzeugt werden. Ein Richtungsfilter ist aus einem Satz von Richtungsfiltern basierend auf einer Ausrichtung der Bildkanten oder Filterdaten ausgewählt, die als Teil der codierten Videosequenz in Verbindung mit dem Einzelbild beinhaltet sind. Die Auswahl kann das Auswählen eines Richtungsfilters auf der Basis eines direktionalen Intra-Vorhersagemodus, eines Filterwinkels der am ehesten einem Winkel entspricht, der explizit als Teil der Videosequenz signalisiert wird, die inkrementale Reduzierung der Anzahl an Blockierartefakten, einen Schwellenwert zum Blockieren von Artefakten oder eine Nutzungshäufigkeit des Filtergebrauchs beinhalten. Richtungsfilter des Satzes von Richtungsfiltern kann einen exklusiven Filterwinkel zwischen 0 und 180 Grad aufweisen.

Description

  • HINTERGRUND
  • Digitale Videoströme stellen typischerweise ein Video unter Verwendung einer Folge von Einzelbildern oder Standbildern dar. Jedes Einzelbild kann eine Anzahl an Blöcken beinhalten, die wiederum Informationen beinhalten können, die den Wert der Farbe, der Helligkeit oder anderer Attribute für Pixel beschreiben. Die Datenmenge in einem typischen Videostrom ist groß, und die Übertragung und Speicherung von Videos können signifikante Computer- oder Kommunikationsressourcen verwenden. Aufgrund der großen Datenmenge, die Videodaten beinhalten, wird zur Übertragung und Speicherung eine Hochleistungskompression Dekompression benötigt.
  • KURZDARSTELLUNG
  • Hierin offenbart sind Aspekte der Systeme, Verfahren und Vorrichtungen für die Verwendung einer adaptiven Richtungsschleifenfilterung, um die Anzahl an Blockierartefakten in einem Videostrom zu reduzieren. Eine Vorrichtung gemäß einem Aspekt der Offenbarung umfasst mindestens einen Prozessor, der konfiguriert ist, um Anweisungen auszuführen, die in einem nichtflüchtigen Speichermedium gespeichert sind, um in einem Einzelbild einer kodierten Videosequenz einen aktuellen Block zu identifizieren, der eine Bildkante beinhaltet, die nicht senkrecht zu einer Grenze des aktuellen Blocks ist, Auswählen eines Richtungsfilters aus einem Satz von Richtungsfiltern basierend auf Filtersignalisierungsdaten, die als Teil der kodierten Videosequenz in Verbindung mit dem Einzelbild beinhaltet sind, wobei jeder Richtungsfilter einen Filterwinkel aufweist und der ausgewählte Richtungsfilter auf die Bildkante anwendet.
  • Eine Vorrichtung gemäß einem weiteren Aspekt der Offenbarung umfasst mindestens einen Prozessor, der konfiguriert ist, um Anweisungen auszuführen, die in einem nichtflüchtigen Speichermedium gespeichert sind, um in einem aktuellen Block eines Einzelbildes eine Gruppe von Pixeln zu identifizieren, die eine Bildkante definieren, die nicht senkrecht zu einer Grenze des aktuellen Blocks ist, Auswählen eines Richtungsfilters aus einem Satz von Richtungsfiltern basierend auf Orientierung der Bildkante, wobei jeder Richtungsfilter einen Filterwinkel aufweist und den ausgewählten Richtungsfilter während einer Kodierung oder Dekodierung des Einzelbildes auf die Bildkante anwendet.
  • Ein Verfahren gemäß einem anderen Aspekt der Offenbarung ist ein Verfahren zum Kodieren und Dekodieren eines Videosignals unter Verwendung eines Computergeräts, wobei das Videosignal Einzelbilder beinhaltet, die eine Videosequenz definieren, wobei jedes Einzelbild Blöcke aufweist und jeder Block Pixel aufweist, umfasst das Verfahren, in einem aktuellen Block eines Einzelbildes eine Gruppe von Pixeln zu identifizieren, die eine Bildkante definieren, die nicht senkrecht zu einer Grenze des aktuellen Blocks ist, Auswählen eines Richtungsfilters aus einem Satz von Richtungsfiltern basierend auf einer Orientierung der Bildkanten oder Filtersignalisierungsdaten, die als Teil einer codierten Videosequenz in Verbindung mit dem Einzelbild beinhaltet sind, wobei jeder Richtungsfilter einen Filterwinkel aufweist, und Anwenden des ausgewählten Richtungsfilters an die an die Bildkante während einer Kodierung oder Dekodierung des Einzelbildes. Ein derartiges Verfahren und andere hierin offenbarte Verfahren können durch eine geeignete Datenverarbeitungsvorrichtung oder Vorrichtung, beispielsweise einem Videokodierer oder Videodekodierer einer derartigen Vorrichtung oder einem Gerät durchgeführt werden.
  • Diese und andere Aspekte der vorliegenden Offenbarung werden in der folgenden ausführlichen Beschreibung der Ausführungsformen, der beigefügten Ansprüche und der beigefügten Figuren offenbart.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Offenbarung wird am besten aus der folgenden ausführlichen Beschreibung verständlich, wenn diese in Verbindung mit den beigefügten Zeichnungen gelesen wird. Gleiche Zahlen beziehen sich auf gleiche Elemente in den verschiedenen Figuren, sofern nicht anders angegeben oder aus dem Kontext klar hervorgeht.
  • 1 ist eine schematische Darstellung eines Videokodier- und Dekodiersystems.
  • 2 ist ein ist ein Blockdiagramm eines Beispiels eines Computergeräts, das eine Sendestation oder eine Empfangsstation realisieren kann.
  • 3 ist ein Diagramm eines zu kodierenden und anschließend zu dekodierenden Videostroms.
  • 4 ist ein Blockdiagramm eines Dekodierers, gemäß den Lehren hierin.
  • 5 ist ein Blockdiagramm eines Dekodierers, gemäß einem anderen Aspekt der Lehren hierin.
  • 6 ist ein Flussdiagramm eines Beispiels eines Prozesses zum Verwenden einer adaptiven Richtungsschleifenfilterung, um die Anzahl an Blockierartefakten in einem Videostrom zu verringern.
  • 7 ist ein Flussdiagramm eines Beispiels für einen Prozess zum expliziten Signalisieren eines Filterwinkels für eine adaptive Richtungsschleifenfilterung.
  • 8 ist ein Flussdiagramm eines Beispiels für einen Prozess zum Verwenden eines oder mehrerer Filterwinkel für eine adaptive Richtungsschleifenfilterung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Viele Bild- und Videokodiertechniken verwenden blockbasierte Vorhersage-, Transformations- und Quantisierungsschemata. Die Verwendung von blockbasierter Vorhersage, Transformation und Quantisierung kann entlang von Blockgrenzen während der Kodierung zu Diskontinuitäten führen. Diese Diskontinuitäten, die üblicherweise als Blockartefakte bezeichnet werden, können visuell ablenkend sein und die Qualität des dekodierten Videos und die Wirksamkeit des Einzelbildes, das als Referenzeinzelbild für nachfolgende Einzelbilder verwendet wird, verringern. Diese Diskontinuitäten können durch die Anwendung eines Deblocking-Filters oder Schleifenfilters reduziert werden.
  • Ein Schleifenfilter wird an einem rekonstruierten Einzelbild oder einem Teil eines rekonstruierten Einzelbildes am Ende des Dekodierprozesses angewendet und verwendet, um Blockartefakte zu reduzieren. Sobald ein rekonstruiertes Einzelbild durch den Schleifenfilter verarbeitet ist, kann er als Referenzeinzelbild für die Vorhersage nachfolgender Einzelbilder beim Dekodieren einer Videosequenz verwendet werden. Konventionelle Schleifenfilter verwenden eine Technik zum Durchführen von Filteroperationen senkrecht zu den Blockgrenzen. So kann beispielsweise eine vertikale oder horizontale Grenze, die zwei benachbarte Blöcke in einem Einzelbild einer Videosequenz trennt, durch einen konventionellen Schleifenfilter verwendet werden, um eine Anzahl an Blockartefakten zu reduzieren, die innerhalb der benachbarten Blöcke angeordnet sind. Während diese Technik für Bildtexturen wirksam sein kann, die Bildkanten enthalten, die senkrecht zu Blockgrenzen sind, funktioniert es nicht gut mit Bildtexturen, die Bildkanten enthalten, die nicht senkrecht zu Blockgrenzen sind.
  • Implementierungen der vorliegenden Offenbarung beschreiben die Verwendung einer adaptiven Richtungsschleifenfilterung, um eine Anzahl an Blockartefakten eines Blocks zu reduzieren, innerhalb dessen eine Bildkante, die nicht senkrecht zu einer entsprechenden Blockgrenze ist, zumindest teilweise angeordnet ist. Ein anzuwendender Richtungsfilter kann aus einem Satz von Richtungsfiltern, der beispielsweise auf Daten basiert, die explizit als Teil der Videosequenz in Verbindung mit einem Einzelbild mit dem Block, einer Orientierung der nicht senkrechten Bildkante, einem Schwellenwert in Bezug auf eine Anzahl an Blockartefakten des Blocks, eine Nutzungsfrequenz oder andere Faktoren, ausgewählt werden. Weitere Einzelheiten der adaptiven Richtungsschleifenfilterung werden hierin mit anfänglicher Bezugnahme auf ein System beschrieben, in dem sie implementiert werden kann.
  • 1 ist eine schematische Darstellung eines Videokodier- und Dekodiersystems 100. Eine Sendestation 102 kann zum Beispiel ein Computer mit einer internen Hardwarekonfiguration sein, wie sie in 2 beschrieben ist. Jedoch sind auch andere geeignete Implementierungen der Sendestation 102 möglich. So kann beispielsweise die Verarbeitung der Sendestation 102 auf mehrere Geräte verteilt sein.
  • Ein Netzwerk 104 kann die Sendestation 102 und eine Empfangsstation 106 zum Kodieren und Dekodieren des Videostroms verbinden. Insbesondere kann der Videostrom in der Sendestation 102 kodiert werden und der kodierte Videostrom kann in der Empfangsstation 106 dekodiert werden. Das Netzwerk 104 kann zum Beispiel das Internet sein. Das Netzwerk 104 kann auch ein lokales Netzwerk (LAN), ein Weitverkehrsnetz (WAN), ein virtuelles privates Netzwerk (VPN), ein Mobilfunknetz oder jedes andere beliebige Mittel zum Übertragen des Videostroms von der Sendestation 102 zu der in diesem Beispiel genannten Empfangsstation 106.
  • Eine Empfangsstation 106 kann zum Beispiel ein Computer mit einer internen Hardwarekonfiguration sein, wie sie in 2 beschrieben ist. Jedoch sind auch andere geeignete Implementierungen der Empfangsstation 106 möglich. So kann beispielsweise die Verarbeitung der Empfangsstation 106 auf mehrere Geräte verteilt sein.
  • Es sind andere Implementierungen des Videocodierungs- und Decodierungssystems 100 möglich. So kann beispielsweise eine Implementierung das Netzwerk 104 auslassen. Bei einer anderen Implementierung kann ein Videostrom kodiert und dann für die Übertragung zu einem späteren Zeitpunkt an die Empfangsstation 106 oder an jedes andere Gerät mit einem Speicher gespeichert werden. Bei einer Implementierung empfängt die Empfangsstation 106 (z. B. über das Netzwerk 104 einen Computerbus und/oder einem Kommunikationspfad) den kodierten Videostrom und speichert den Videostrom für eine spätere Dekodierung. Bei einer Beispielimplementierung wird ein Echtzeit-Transportprotokoll (RTP) für die Übertragung des kodierten Videos über das Netzwerk 104 verwendet. Bei einer anderen Implementierung kann ein anderes Transportprotokoll als RTP verwendet werden, z. B. ein Hypertext Transfer Protocol(HTTP)-basiertes Video-Streaming-Protokoll.
  • Wenn in einem Videokonferenzsystem verwendet, können beispielsweise die Sendestation 102 und/oder die Empfangsstation 106 die Fähigkeit beinhalten, einen Videostrom zu kodieren und zu dekodieren, wie nachfolgend beschrieben. So könnte beispielsweise die Empfangsstation 106 ein Videokonferenzteilnehmer sein, der einen kodierten Videobitstrom von einem Videokonferenzserver (z. B. der Sendestation 102) empfängt, um seinen eigenen Videobitstrom zu dem Videokonferenzserver zu dekodieren und zu betrachten und weiter zu kodieren und seinen eigenen Video-Bitstrom zum Videokonferenzserver zum Dekodieren und Betrachten durch andere Teilnehmer zu übertragen.
  • 2 ist ein Blockdiagramm eines Beispiels eines Computergeräts 200, das eine Sendestation oder eine Empfangsstation realisieren kann. So kann beispielsweise das Computergerät 200 eine oder beide, die Sendestation 102 und die Empfangsstation 106 aus 1 implementieren. Das Computergerät 200 kann in Form eines Computersystems mit mehreren Computergeräten oder in Form eines einzigen Computergeräts, beispielsweise einem Mobiltelefon, einem Tablet-Computer, einem Laptop-Computer, einem Notebook-Computer, einem Desktop-Computer und dergleichen beinhaltet sein.
  • Eine CPU 202 im Computergerät 200 kann eine zentrale Verarbeitungseinheit sein. Alternativ kann die CPU 202 jede andere Art von Gerät oder mehrere Geräte sein, die in der Lage sind, Informationen zu manipulieren oder zu verarbeiten, die jetzt bestehen oder in Zukunft entwickelt werden. Obwohl die offenbarten Implementierungen mit einem einzigen Prozessor, wie z. B. der CPU 202, praktiziert werden können, können Vorteile in der Geschwindigkeit und Effizienz erreicht werden, wenn mehr als ein Prozessor verwendet wird.
  • Ein Speicher 204 im Computergerät 200 kann ein Nur-Lesespeicher (ROM) oder ein Schreib-Lese-Speicher (RAM) sein. Jede andere geeignete Art eines nichtflüchtigen Speichergeräts kann als Speicher 204 verwendet werden. Der Speicher 204 kann Code und Daten 206 beinhalten, auf die durch die CPU 202 unter Verwendung eines Busses 212 zugegriffen wird. Der Speicher 204 kann ferner ein Betriebssystem 208 und Anwendungsprogramme 210 beinhalten, wobei die Anwendungsprogramme 210 mindestens ein Programm beinhalten, das der CPU 202 ermöglicht, die hierin beschriebenen Verfahren durchzuführen. So können beispielsweise die Anwendungsprogramme 210 Anwendungen 1 bis N beinhalten, die ferner eine Videocodierungsanwendung beinhalten, welche die hierin beschriebenen Verfahren durchführt. Das Computergerät 200 kann auch einen Sekundärspeicher 214 beinhalten, beispielsweise eine Speicherkarte, der mit einem mobilen Computergerät verwendet werden kann. Da die Videokommunikationskonferenzen eine beträchtliche Menge an Informationen beinhalten können, können sie ganz oder teilweise in dem Sekundärspeicher 214 gespeichert und in den Speicher 204 geladen werden, wie dies für die Verarbeitung erforderlich ist.
  • Das Computergerät 200 kann auch eine oder mehrere Ausgabegeräte beinhalten, wie beispielsweise eine Anzeige 218. Das Display 218 kann in einem Beispiel ein berührungsempfindliches Display sein, das ein Display mit einem berührungsempfindlichen Element kombiniert, das betätigbar ist, um Berührungseingaben zu erfassen. Das Display 218 kann über den Bus 212 mit der CPU 202 gekoppelt sein. Andere Ausgabegeräte, die es einem Benutzer erlauben das Computergerät 200 zu programmieren oder anderweitig zu verwenden, können zusätzlich oder alternativ zum Display 218 vorgesehen sein. Wenn das Ausgabegerät ein Display ist oder beinhaltet, kann das Display auf verschiedene Arten implementiert werden, einschließlich durch ein Flüssigkristalldisplay (LCD), ein Kathodenstrahlröhren- (CRT)-Display oder ein Leuchtdiodendisplay (LED), wie beispielsweise ein Organisches LED (OLED) Display.
  • Das Computergerät 200 kann auch in Verbindung mit einem Bildaufnahmegerät 220, beispielsweise einer Kamera, oder jedem anderen Bildaufnahmegerät 220, das gegenwärtig vorhanden ist oder nachfolgend entwickelt wird, das ein Bild, beispielsweise das Bild eines Benutzers, der das Computergerät 200 bedient, beinhaltet sein. Das Bildaufnahmegerät 220 kann so positioniert sein, dass es auf den Benutzer gerichtet ist, der das Computergerät 200 bedient. In einem Beispiel können die Position und die optische Achse des Bildaufnahmegeräts 220 so konfiguriert sein, dass das Sichtfeld einen Bereich umfasst, der direkt an das Display 218 angrenzt und von dem das Display 218 sichtbar ist.
  • Das Computergerät 200 kann auch in Verbindung mit einem Audioaufnahmegerät 222, beispielsweise einem Mikrofon, oder jedem anderen Audioaufnahmegerät, das gegenwärtig vorhanden ist oder nachfolgend entwickelt wird, das Töne nahe des Computergeräts 200 erfassen kann, beinhaltet sein. Das Audioaufnahmegerät 222 kann so positioniert sein, dass es auf den Benutzer, der das Computergerät 200 betreibt, gerichtet ist und so konfiguriert werden, dass es vom Benutzer erzeugte Töne, beispielsweise Sprach- oder andere Äußerungen, empfängt, während der Benutzer das Computergerät 200 bedient.
  • Obwohl 2 die CPU 202 und den Speicher 204 des Computergeräts 200 wie in einer einzigen Einheit integriert darstellt, können andere Konfigurationen verwendet werden. Die Operationen der CPU 202 können auf mehrere Maschinen (jede Maschine mit einem oder mehreren der Prozessoren) verteilt werden, die direkt oder über einen lokalen Bereich oder ein anderes Netzwerk gekoppelt werden können. Der Speicher 204 kann über mehrere Maschinen, wie beispielsweise einen netzwerkbasierten Speicher oder Speicher, in mehreren Maschinen verteilt werden, die die Operationen des Computergeräts 200 ausführen. Obwohl hier als ein einzelner Bus dargestellt, kann der Bus 212 des Computergeräts 200 aus mehreren Bussen bestehen. Ferner kann der Sekundärspeicher 214 direkt mit den anderen Komponenten des Computergeräts 200 gekoppelt sein oder über ein Netzwerk zugänglich sein und kann eine einzelne integrierte Einheit, wie beispielsweise eine Speicherkarte oder mehrere Einheiten, wie mehrere Speicherkarten, umfassen. Das Computergerät 200 kann somit in einer Vielzahl von Konfigurationen implementiert werden.
  • 3 ist ein Diagramm eines Beispiels eines zu kodierenden und anschließend zu dekodierenden Videostroms 300. Der Videostrom 300 beinhaltet eine Videosequenz 302. Auf der nächsten Ebene beinhaltet die Videosequenz 302 eine Anzahl an benachbarten Einzelbildern 304. Während drei Einzelbilder als benachbarte Einzelbilder 304 dargestellt sind, kann die Videosequenz 302 eine beliebige Anzahl an benachbarten Einzelbildern 304 beinhalten. Die benachbarten Einzelbilder 304 können dann weiter in einzelne Einzelbilder, z. B. ein Einzelbild 306, unterteilt werden. Auf der nächsten Ebene kann das Einzelbild 306, in eine Reihe von Ebenen oder Segmente 308 unterteilt werden. Die Segmente (oder Ebenen) 308 können Teilmengen von Einzelbildern sein, die zum Beispiel eine Parallelverarbeitung ermöglichen. Die Segmente 308 können auch Teilmengen von Einzelbildern sein, die die Videodaten in separate Farben trennen können. So kann beispielsweise ein Einzelbild 306 von Farbvideodaten eine Luminanzebene und zwei Chrominanzebenen beinhalten. Die Segmente 308 können mit verschiedenen Auflösungen abgetastet werden.
  • Unabhängig davon, ob das Einzelbild 306 in Segmente 308 unterteilt ist, kann das Einzelbild 306 weiter in Blöcke 310 unterteilt werden, die Daten enthalten können, die beispielsweise 16×16 Pixeln im Einzelbild 306 entsprechen. Die Blöcke 310 können auch so angeordnet sein, dass sie Daten von einer oder mehreren Ebenen von Pixeldaten beinhalten. Die Blöcke 310 können auch aus einer beliebigen anderen geeigneten Größe, wie beispielsweise 4×4 Pixel, 8×8 Pixel, 16×8 Pixel, 8×16 Pixel, 16×16 Pixel oder größer sein. Wenn nicht anders angegeben, werden die hierin verwendeten Begriffe Block und Makroblock austauschbar verwendet.
  • 4 ein Blockdiagramm eines Kodierers 400 gemäß einer Implementierung. Der Kodierer 400 kann, wie vorstehend beschrieben, in der Sendestation 102 implementiert werden, wie beispielsweise durch Bereitstellen eines Computerspeicherprogramms, das zum Beispiel im Speicher 204 gespeichert ist. Das Computersoftwareprogramm kann Maschinenbefehle beinhalten, die, wenn sie durch einen Prozessor wie beispielsweise die CPU 202, ausgeführt werden, die Sendestation 102 veranlassen, Videodaten auf die Weise zu kodieren, wie in 4 beschrieben. Der Kodierer 400 kann als spezielle Hardware implementiert sein, beispielsweise in der Sendestation 102. In einer besonders wünschenswerten Implementierung ist der Kodierer 400 ein Hardware-Kodierer. Der Kodierer 400 weist die folgenden Schritte auf, um die verschiedenen Funktionen in einem Vorwärtspfad auszuführen (durch die durchgezogenen Verbindungslinien dargestellt), um einen kodierten oder komprimierten Bitstrom 420 unter Verwendung des Videostroms 300 als Eingabe zu erzeugen: eine Intra/Inter-Vorhersagestufe 402, eine Transformationsstufe 404, eine Quantisierungsstufe 406 und eine Entropiecodierungsstufe 408. Der Kodierer 400 kann auch einen Rekonstruktionspfad (durch punktierte Linien dargestellt) beinhalten, um eine Bildfolge für die Kodierung von zukünftigen Blöcken zu rekonstruieren. Wie in 4 dargestellt, weist der Kodierer 400 die folgenden Schritte auf, um die verschiedenen Funktionen im 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 Videostrom 300 zu kodieren.
  • Wenn der Videostrom 300 zur Kodierung dargestellt wird, kann das Einzelbild 306 in Blockeinheiten verarbeitet werden. In der Intra/Inter-Vorhersagestufe 402 kann jeder Block unter Verwendung einer Intraframe-Vorhersage codiert werden (auch Intra-Vorhersage genannt) oder Interframe-Vorhersage (auch Inter-Vorhersage genannt). In jedem Fall kann ein Vorhersageblock gebildet werden. Im Falle einer Intra-Vorhersage kann ein Vorhersageblock von Abtastwerten in der aktuellen Bildfolge, die zuvor kodiert und rekonstruiert wurde, gebildet werden. Im Falle einer Intra-Vorhersage kann ein Vorhersageblock von Abtastwerten in einem oder mehreren zuvor konstruierten Referenzeinzelbildern gebildet werden.
  • Als Nächstes bezugnehmend auf 4, kann der Vorhersageblock vom aktuellen Block an der Intra/Inter-Vorhersagestufe 402 subtrahiert werden, um einen Restblock (auch Residuum genannt) zu erzeugen. Die Transformationsstufe 404 transformiert den Rest in die Transformationskoeffizienten, zum Beispiel in den Frequenzbereich mittels blockbasierter Transformationen. Die Quantisierungsstufe 406 kann unter Verwendung eines Quantisiererwerts oder eines Quantisierungspegels die Transformationskoeffizienten in diskrete Quantenwerte umwandeln, die als quantisierte Transformationskoeffizienten bezeichnet werden. Die Transformationskoeffizienten können zum Beispiel durch den Quantisiererwert aufgeteilt und abgestumpft werden. Die quantisierten Transformationskoeffizienten werden dann durch die Entropiecodierungsstufe 408 entropiecodiert. Die entropiecodierten Koeffizienten und Informationen, die zum Dekodieren des Blocks verwendet werden, die zum Beispiel die Art der verwendeten Vorhersage, den Transformationstyp, die Bewegungsvektoren und den Quantisiererwert beinhalten, können an den komprimierten Bitstrom 420 ausgegeben werden. Der komprimierte Bitstrom 420 kann unter Verwendung verschiedener Techniken, wie beispielsweise der variablen Längenkodierung (VLC) oder der arithmetischen Kodierung, formatiert werden. Der komprimierte Bitstrom 420 kann auch als ein kodierter Videostrom oder codierter Videobitstrom bezeichnet werden, und die Begriffe werden hierin austauschbar verwendet.
  • Der Rekonstruktionsweg, wie in 4 dargestellt (durch die gestrichelten Verbindungslinien dargestellt), kann verwendet werden um sicherzustellen, dass sowohl der Kodierer 400 als auch ein Dekodierer 500 (nachfolgend beschrieben) dieselben Referenzeinzelbilder verwenden, um den komprimierten Bitstrom 420 zu dekodieren. Der Rekonstruktionspfad führt Funktionen aus, die ähnlich zu Funktionen sind, die während des Dekodierungsprozesses stattfinden, die nachfolgend ausführlicher erläutert werden, einschließlich der Dequantisierung der quantisierten Transformationskoeffizienten in der Dequantisierungsstufe 410 und der inversen Transformation der dequantisierten Transformationskoeffizienten an der inversen Transformationsstufe 412, um einen derivativen Restblock (auch als Derivatrest bezeichnet) zu erzeugen. In der Rekonstruktionsstufe 414 kann der Vorhersageblock, der bei der Intra/Inter-Vorhersagestufe 402 vorhergesagt wurde, dem Derivatrest hinzugefügt werden, um einen rekonstruierten Block zu erzeugen. Die Schleifenfilterstufe 416 kann auf den rekonstruierten Block angewendet werden, um Verzerrungen, wie zum Beispiel Blockierartefakte, zu reduzieren. Implementierungen zum Reduzieren von blockierten Artefakten als Teil einer Schleifenfilterstufe 416 der Dekodierung werden nachfolgend mit Bezug auf die 6, 7 und 8 erläutert, beispielsweise unter Verwendung einer adaptiven Richtungsschleifenfilterung, um eine Anzahl an blockierten Artefakten für eine nicht senkrechte Bildkante zu reduzieren.
  • Andere Variationen des Kodierers 400 können verwendet werden, um den komprimierten Bitstrom 420 zu kodieren. So kann beispielsweise nicht-transformbasierter Kodierer den Restblock direkt ohne die Transformationseinheit 404 für bestimmte Blöcke oder Einzelbilder quantisieren. Bei einer anderen Implementierung kann ein Kodierer die Quantisierungsstufe 406 und die Dequantisierungsstufe 410 zu einer einzigen Stufe kombinieren.
  • 5 ist ein Blockdiagramm eines Dekodierers 500 gemäß einer anderen Implementierung. Der Dekodierer 500 kann, kann beispielsweise in der Empfangsstation 106 implementiert werden, indem ein gespeichertes Computersoftwareprogramm im Speicher 204 bereitgestellt wird. Das Computersoftwareprogramm kann Maschinenbefehle beinhalten, die, wenn sie durch einen Prozessor wie beispielsweise die CPU 202, ausgeführt werden, die Empfangsstation 106 veranlasst, Videodaten auf die Weise zu dekodieren, wie in 5 beschrieben ist. Der Dekodierer 500 kann auch in Hardware implementiert sein, einschließlich beispielsweise in der Sendestation 102 oder der Empfangsstation 106.
  • Der Dekodierer 500, ähnlich dem Rekonstruktionspfad des Kodierers 400, der vorstehend erläutert wurde, beinhaltet in einem Beispiel die folgenden Schritte, um verschiedene Funktionen auszuführen, um einen Ausgangsvideostrom 516 aus dem komprimierten Bitstrom 420 zu erzeugen: eine Entropiedekodierungsstufe 502, eine Dequantisierungsstufe 504, eine inverse Transformationsstufe 506, eine Intra/Inter-Vorhersagestufe 508, eine Rekonstruktionsstufe 510, eine Schleifenfilterstufe 512 und eine Deblockingfilterstufe 514. Andere strukturelle Variationen des Dekodierers 500 können verwendet werden, um den komprimierten Bitstrom 420 zu dekodieren.
  • Wenn der komprimierte Bitstrom 420 zum Dekodieren dargestellt ist, können die Datenelemente innerhalb des komprimierten Bitstroms 420 durch die Entropie-Dekodierungsstufe 502 dekodiert werden, um einen Satz quantisierter Transformationskoeffizienten zu erzeugen. Die Dequantisierungsstufe 504 dequantisiert die quantisierten Transformationskoeffizienten (z. B. durch Multiplizieren der quantisierten Transformationskoeffizienten mit dem Quantisiererwert), und die inverse Transformationsstufe 506 invertiert die dequantisierten Transformationskoeffizienten, um einen derivaten Rest zu erzeugen, der mit dem identisch sein kann, der durch die inverse Transformationsstufe 412 in dem Kodierer 400 erzeugt wird. Unter Verwendung von Headerinformationen, die vom komprimierten Bitstrom 420 dekodiert wurden, kann der Dekodierer 500 die Intra/Inter-Vorhersagestufe 508 verwenden, um denselben Vorhersageblock zu erzeugen, wie er in dem Kodierer 400 erzeugt wurde, z. B. an der Intra/Inter-Vorhersagestufe 402. Bei der Rekonstruktionsstufe 510 kann der Vorhersageblock zum Derivatrest hinzugefügt werden, um einen rekonstruierten Block zu erzeugen. Die Schleifenfiltereinheit 512 kann auf den rekonstruierten Block angewendet werden, um Blockierartefakte zu reduzieren. Implementierungen zum Reduzieren von blockierten Artefakten als Teil einer Schleifenfilterstufe 512 eines Dekodierers 500 werden nachfolgend mit Bezug auf die 6, 7 und 8 erläutert, beispielsweise unter Verwendung einer adaptiven Richtungsschleifenfilterung, um eine Anzahl an blockierten Artefakten für eine nicht senkrechte Bildkante zu reduzieren.
  • Eine andere Filterung kann auf den rekonstruierten Block angewendet werden. In diesem Beispiel ist die Deblockierungsfilterstufe 514 an den rekonstruierten Block angelegt, um die Blockierverzerrung zu reduzieren, und das Ergebnis wird als der Ausgangsvideostrom 516 ausgegeben. Der Ausgabevideostrom 516 kann auch als ein dekodierter Videostrom bezeichnet werden, und die Begriffe werden hierin austauschbar verwendet. Andere strukturelle Variationen des Dekodierers 500 können verwendet werden, um den komprimierten Bitstrom 420 zu dekodieren. So kann beispielsweise der Dekodierer 500 den Ausgangsvideostrom 516 ohne die Deblockierungsfilterstufe 514 erzeugen.
  • Die 6, 7 und 8 sind Flussdiagramme von den Prozessen 600, 700 und 800, um die jeweilige Anzahl an blockierten Artefakten in einem Videostrom, die explizite Signalisierung eines Filterwinkels für eine adaptive Richtungsschleifenfilterung und die Verwendung eines oder mehrerer Filterwinkel für eine adaptive Richtungsschleifenfilterung zu reduzieren. Die Prozesse 600, 700 und 800 können in einem System, wie beispielsweise des Computergeräts 200, implementiert sein, um die Kodierung oder Dekodierung eines Videostroms zu unterstützen. Die Prozesse 600, 700 und 800 können beispielsweise als Softwareprogramm implementiert sein, das von einem Computergerät, wie der Sendestation 102 oder der Empfangsstation 106, ausgeführt wird. Das Softwareprogramm kann maschinenlesbare Anweisungen beinhalten, die in einem Speicher, wie beispielsweise dem Speicher 204 gespeichert sind, der, wenn er von einem Prozessor wie der CPU 202 ausgeführt wird, das Computergerät veranlasst, einen oder mehrere der Prozesse 600, 700 oder 800 auszuführen. Die Prozesse 600, 700 und 800 können auch ganz oder teilweise mit Hardware implementiert werden. Wie vorstehend erläutert, können einige Computergeräte mehrere Speicher und mehrere Prozessoren aufweisen und die Schritte oder Operationen von jedem der Prozesse 600, 700 und 800 können in diesen Fällen unter Verwendung verschiedener Prozessoren und Speicher verteilt werden. Die Verwendung der Begriffe „Prozessor” und „Speicher” hierin in der Singularform umfassen Computergeräte, die nur einen Prozessor oder einen Speicher aufweisen sowie Vorrichtungen mit mehreren Prozessoren oder Speichern, die jeweils in der Ausführung einiger, aber nicht notwendigerweise aller genannten Schritte verwendet werden können.
  • Zur Vereinfachung der Erläuterung ist jeweils jeder der Prozesse 600, 700 und 800 als eine Reihe von Schritten oder Operationen dargestellt und beschrieben. Schritte und Operationen in Übereinstimmung mit dieser Offenbarung können jedoch in verschiedenen Reihenfolgen und/oder gleichzeitig auftreten. Zusätzlich können Schritte oder Operationen in Übereinstimmung mit dieser Offenbarung mit anderen Schritten oder Operationen, die hierin nicht dargestellt und beschrieben werden, auftreten. Darüber hinaus sind nicht alle dargestellten Schritte oder Operationen erforderlich, um ein Verfahren gemäß dem offenbarten Gegenstand durchzuführen. Einer oder mehrere der Prozesse 600, 700 oder 800 können für jedes Einzelbild des Eingangssignals wiederholt werden.
  • 6 ist ein Flussdiagramm eines Beispiels für einen Prozess 600 zum Verwenden einer adaptiven Richtungsschleifenfilterung, um die Anzahl an blockierten Artefakten in einem Videostrom zu reduzieren. Bei der Operation 602 ist eine nicht senkrechte Bildflanke innerhalb eines Blocks eines aktuellen Einzelbildes des Videostroms identifiziert. Die nicht senkrechte Bildkante kann für eine Textur bezeichnend sein, die beispielsweise durch die Pixel des Blocks dargestellt und die nicht senkrecht zu einer entsprechenden Blockgrenze ist. Die nicht senkrechte Bildkante kann durch eine Gruppe von Pixeln definiert werden, die sich beispielsweise ganz oder teilweise innerhalb des Blocks und einem benachbarten Block, der die entsprechende Blockgrenze teilt, befinden können. Die Gruppe von Pixeln kann eine Pixelzeile sein, die eine Blockgrenze schneidet. Die nicht senkrechte Bildkante kann eine Orientierung indikativ eines Winkels aufweisen, an dem die nicht senkrechte Bildkante die entsprechende Blockgrenze schneidet.
  • Die nicht senkrechte Bildkante kann aus Daten, die als Teil einer Videosequenz beinhaltet sind, beispielsweise kommuniziert von einem Computergerät, wie beispielsweise der Sendestation 102, identifiziert werden. Die nicht senkrechte Bildkante kann aus im Speicher gespeicherten Daten, wie dem Speicher 204, identifiziert werden. Die nicht senkrechte Bildkante kann durch die Leistung oder Ausführung einer Kantenerkennungssoftware identifiziert werden. Die nicht senkrechte Bildkante kann dadurch identifiziert werden, dass zum Beispiel durch ein Computergerät, wie die Sendestation 102 oder die Empfangsstation 106, Daten ausgewählt werden die indikativ für Bilder einer Videosequenz sind, die die nicht senkrechte Bildkante aus einem Satz von Daten anzeigen oder darstellen. Die nicht senkrechte Bildkante kann durch ein Computergerät, wie beispielsweise der Sendestation 102 oder der Empfangsstation 106, identifiziert werden, das Daten erzeugt, die die nicht senkrechte Bildkante anzeigen oder darstellen. Implementierungen zum Identifizieren der nicht senkrechten Bildkante können Kombinationen des Vorstehenden oder andere Arten beinhalten, um die nicht senkrechte Bildkante zu identifizieren.
  • Bei Operation 604 wird ein Richtungsfilter für eine adaptive Richtungsschleifenfilterung ausgewählt. Das Richtungsfilter kann aus einem Satz von Richtungsfiltern ausgewählt werden, basierend auf einem Filterwinkel des Richtungsfilters. Der Satz von Richtungsfilter kann eine beliebige Anzahl an Richtungsfilter beinhalten. Der Filterwinkel, der einem vorgegebenen Richtungsfilter zugeordnet ist, kann exklusiv ein Winkel zwischen 0 und 180 Grad sein. In diesem Beispiel kann der Satz von Richtungsfiltern 178 Richtungsfilter umfassen, wobei jeder Richtungsfilter einen zugeordneten Filterwinkel von 1 Grad bis 179 Grad aufweist. Der Satz von Richtungsfiltern kann einen Satz von Richtungsfiltern umfassen, die am häufigsten für eine Richtungsfilterung verwendet werden. Der Satz von Richtungsfiltern kann beispielsweise zwei Richtungsfilter umfassen, wobei jeder einen Filterwinkel von 45 Grad und 135 Grad aufweist. Als ein weiteres Beispiel kann der Satz von Richtungsfiltern drei Richtungsfilter umfassen, wobei jeder einen Filterwinkel von 45 Grad, 22,5 Grad und 67,5 Grad aufweist. Die Komplexität eines Kodierers oder Dekodierers kann aufgrund der Anzahl an Richtungsfiltern innerhalb des Satzes erhöht werden. Das heißt, ein Satz mit einer großen Anzahl an Richtungsfiltern wird typischerweise mehr Komplexität zu einem Kodierer oder Dekodierer hinzufügen als ein Satz mit einer kleinen Anzahl an Richtungsfiltern.
  • Das Richtungsfilter kann basierend auf Filtersignalisierungsdaten aus dem Satz von Richtungsfiltern ausgewählt werden, die als Teil der komprimierten Daten einer codierten Videosequenz enthalten sind. Filter-Signalisierungsdaten können beispielsweise als Teil der Videosequenz kodiert werden, um den Winkel oder die Ausrichtung der nicht-senkrechten Bildkante anzuzeigen, die bei der Operation 602 vorstehend identifiziert wurde. Die Filtersignalisierungsdaten können als Teil einer Videosequenz in Verbindung mit einem Einzelbild codiert werden, welches den Block beinhaltet, dem die nicht senkrechte Bildkante entspricht. Die Filtersignalisierungsdaten können beispielsweise als Teil eines Headers des entsprechenden Blocks, ein Teil (z. B. einschließlich des Blocks) des Einzelbildes oder dem Einzelbild selbst beinhaltet sein. Der Richtungsfilter kann aus dem Satz von Richtungsfiltern auf der Grundlage einer Orientierung der nicht senkrechten Bildkante ausgewählt werden, beispielsweise ohne explizite Signalisierung der Orientierung als Teil einer kodierten Videosequenz. Der Richtungsfilter kann zum Beispiel basierend auf einer Ähnlichkeit oder Übereinstimmung zwischen einem Filterwinkel eines Richtungsfilters und der Orientierung der nicht senkrechten Bildkante ausgewählt werden.
  • Der Richtungsfilter kann basierend auf einem Schwellenwert für eine Anzahl an blockierenden Artefakten ausgewählt werden. Der Schwellenwert kann beispielsweise eine maximale Anzahl an blockierenden Artefakten angeben, die nach dem Anlegen eines Richtungsfilters im Block verbleiben. Als weiteres Beispiel kann der Schwellenwert eine MinimalAnzahl an blockierenden Artefakten angeben, die in dem Block in Reaktion auf die Anwendung eines Richtungsfilters reduziert werden. Der Richtungsfilter kann durch Anwenden verschiedener Richtungsfilter auf den Block ausgewählt werden, um gefilterte Blöcke zu erzeugen, wobei, wenn irgendeiner der gefilterten Blöcke dem angezeigten Schwellenwert entspricht, der entsprechende Richtungsfilter als Richtungsfilter gewählt werden kann. So können beispielsweise erste, zweite und dritte Richtungsfilter mit unterschiedlichen Filterwinkeln (z. B. 45 Grad, 22,5 Grad und 67,5 Grad, obwohl jeder beliebige andere Winkel zwischen 0 und 180 Grad exklusiv als der Filterwinkel für jeden einzelnen Richtungsfilter ausgewählt werden kann) auf einen Block angewendet werden, um erste, zweite und dritte gefilterte Blöcke zu erzeugen. Wenn einer der ersten, zweiten und dritten gefilterten Blöcke dem Schwellenwert entspricht (z. B. weil er eine Gesamtzahl an blockierenden Artefakten beinhaltet, die kleiner als der Schwellwert sind oder weil der entsprechende Richtungsfilter eine Anzahl an blockierenden Artefakten aus der ungefilterten Version des Blocks reduziert hat um einen bestimmten Betrag über dem Schwellenwert reduzierte), der entsprechende Richtungsfilter als Richtungsfilter für die adaptive Richtungsschleifenfilterung gewählt werden. Bei Implementierungen, bei denen mehr als einer der ersten, zweiten und dritten gefilterten Blöcke den Schwellenwert erfüllt, kann der Richtungsfilter entsprechend dem einen der ersten, zweiten oder dritten gefilterten Blöcke, die den Schwellenwert am meisten überschreiten, als Richtungsfilter ausgewählt werden. Bei Implementierungen, bei denen keiner der ersten, zweiten und dritten gefilterten Blöcke den Schwellenwert erfüllt, kann der Richtungsfilter entsprechend dem einen der ersten, zweiten oder dritten gefilterten Blöcke, die die Anzahl der blockierenden Artefakte von der ungefilterten Version der Blöcke am stärksten reduzieren, als Richtungsfilter ausgewählt werden. bei denen keiner der ersten, zweiten und dritten gefilterten Blöcke den Schwellwert erfüllt, können zusätzliche Richtungsfilter auf der Basis des Schwellwerts berücksichtigt werden.
  • Der Richtungsfilter kann auf der Grundlage einer Häufigkeit der Verwendung ausgewählt werden. So kann zum Beispiel der Richtungsfilter, der am häufigsten aus dem Satz von Richtungsfiltern verwendet wird, als Richtungsfilter ausgewählt werden. Der ausgewählte Richtungsfilter kann ein Richtungsfilter mit einem Filterwinkel sein, der eine Kombination von mehreren Filterwinkeln aus dem Satz von Richtungsfiltern ist. So kann beispielsweise der ausgewählte Richtungsfilter einen Filterwinkel aufweisen, welcher der Durchschnitt oder die Summierung von mehreren Filterwinkeln aus dem Satz von Richtungsfiltern ist. Weitere Implementierungen zum Auswählen des Richtungsfilters zur Verwendung bei der adaptiven Richtungsschleifenfilterung aus dem Satz von Richtungsfiltern werden nachfolgend mit Bezug auf die Prozesse 700 und 800 der 7 und 8 erörtert.
  • Der Richtungsfilter kann aus dem Satz von Richtungsfiltern durch auswählen, auserwählen oder anderweitiges Identifizieren des Richtungsfilters, beispielsweise über eine oder mehrere der vorgenannten Implementierungen. Der Richtungsfilter kann aus dem Satz von Richtungsfiltern ausgewählt werden, indem im Speicher gespeicherte Daten, wie beispielsweise aus dem Speicher 204, gelesen werden. Der Richtungsfilter kann aus dem Satz von Richtungsfiltern ausgewählt werden, indem Daten empfangen werden, die den Richtungsfilter darstellen, beispielsweise von der Sendestation 102. Das Richtungsfilter kann aus dem Satz von Richtungsfiltern ausgewählt werden, indem Daten beispielsweise durch die Sendestation 102 oder die Empfangsstation 106 erzeugt werden, die für den zu verwendenden Richtungsfilter bezeichnend oder repräsentativ ist. Implementierungen zum Auswählen des Richtungsfilters können Kombinationen der vorhergehenden oder anderen Arten zur Auswahl des Richtungsfilters beinhalten.
  • Bei der Operation 606 wird der vorstehend bei der Operation 604 ausgewählte Richtungsfilter angewendet, um eine adaptive Richtungsschleifenfilterung durchzuführen. Richtungsfilter angewendet, um eine adaptive Richtungsschleifenfilterung durchzuführen. Der ausgewählte Richtungsfilter kann während einer Kodierung oder Dekodierung eines Einzelbildes einer Videosequenz verwendet werden, indem eine Anzahl an blockierenden Artefakten innerhalb eines Blocks des Einzelbildes oder um eine Grenze eines Blocks, die dem Richtungsfilter entspricht, reduziert wird. So kann beispielsweise der ausgewählte Richtungsfilter verwendet werden, um eine adaptive Filterung an der nicht senkrechten Bildkante durchzuführen, die bei der Operation 602 vorstehende identifiziert wurde. Der ausgewählte Richtungsfilter kann durch Anweisungen ausgeführt werden, die von einem Prozessor, beispielsweise der CPU 202, ausgeführt und/oder in einem Speicher gespeichert werden, wie beispielsweise dem Speicher 204.
  • 7 ist ein Flussdiagramm eines Beispiels für einen Prozess 700 zum expliziten Signalisieren eines Filterwinkels für eine adaptive Richtungsschleifenfilterung. Das heißt, ein Filterwinkel kann explizit als Teil der Videosequenz in Verbindung mit einem Einzelbildmotiv signalisiert werden, sodass der dem Filterwinkel entsprechende Richtungsfilter für eine adaptive Richtungsschleifenfilterung ausgewählt werden kann. Der Filterwinkel kann explizit als Filtersignalisierungsdaten innerhalb eines Headers eines Blocks, eines Scheibe oder eines Einzelbildes angeordnet werden, der dem Block, der Scheibe oder dem Einzelbild zugeordnet ist, auf dem der entsprechende Richtungsfilter anzuwenden ist. Wenn zum Beispiel ein Einzelbild, das einen Block beinhaltet, bereits als Teil einer zu dekodierenden Videosequenz kodiert wurde, kann ein kodierter Header für den Block, der den Block oder das Einzelbild einschließlich der Scheibe und/oder den Block beinhaltet, Filtersignalisierungsdaten, die einen Filterwinkel beinhalten, zum Dekodieren des Einzelbildes verwendet werden. Die Filtersignalisierungsdaten können einem direktionalen Intra-Vorhersagemodus zugeordnet sein, der für die Vorhersage des Blocks verwendet wird. So kann beispielsweise der Vorhersagewinkel eines direktionalen Intra-Vorhersagemodus, der zum Kodieren des Blocks verwendet wird, als der Filterwinkel zum Auswählen des Richtungsfilters als Teil eines Dekodiervorgangs verwendet werden. Auf diese Weise können Daten, die den Intra-Vorhersagemodus darstellen, explizit als die Filtersignalisierungsdaten signalisiert werden.
  • Bei der Operation 702 werden Filtersignalisierungsdaten, die einer Videosequenz zugeordnet sind, identifiziert. Die Videosequenz kann komprimierte Daten sein, die eine codierte Videosequenz umfassen, die durch einen Kodierer an einen Dekodierer übermittelt werden. Die Filtersignalisierungsdaten können einem Einzelbild der Videosequenz, einer Scheibe eines Einzelbildes, einem Block einer Scheibe usw. zugeordnet sein. Die Filtersignalisierungsdaten können als verschiedene Daten implementiert sein, beispielsweise als Daten, die einen Intra-Vorhersagemodus angeben, der für die Vorhersage des Blocks, der Scheibe oder des Einzelbildes verwendet wird, oder Daten, die als Teil einer Videosequenz in Verbindung mit dem Einzelbild kodiert sind, die zum Beispiel in einem Header oder einem anderen Satz von Daten beinhaltet sind, die dem Block, der Scheibe oder dem Einzelbild zugeordnet sind. Die Filtersignalisierungsdaten können auf der Grundlage ihrer Implementierung verarbeitet werden.
  • Bei Operation 704 bestimmt der Prozess 700, ob die Filtersignalisierungsdaten auf einem direktionalen Intra-Vorhersagemodus basieren. Bei einer Implementierung kann dies durch ermitteln, ob ein direktionalen Intra-Vorhersagemodus zum Kodieren des Einzelbildes oder Blocks verwendet wurde erfolgen, und wenn ja, Ermitteln ob Daten, die den Vorhersagewinkel anzeigen, der von dem direktionalen Intra-Vorhersagemodus verwendet wird, als Teil der Videosequenz kodiert wurden. Als Reaktion auf das Ermitteln bei der Operation 704, dass die Filtersignalisierungsdaten auf einem direktionalen Intra-Vorhersagemodus basieren, fährt der Prozess 700 mit der Operation 706 fort, wo ein Vorhersagewinkel des direktionalen Intra-Vorhersagemodus, der verwendet wird, um das Einzelbild oder den Block vorherzusagen, identifiziert werden kann. Bei einigen Implementierungen kann der Vorhersagewinkel aus dem kodierten Einzelbild oder einem Header mit Daten, die den Vorhersagewinkel anzeigen, identifiziert werden. In Abhängigkeit von dem Codec zum Kodieren des Einzelbildes verwendet wird, kann der Vorhersagewinkel auf eine von einer festgelegten Anzahl an möglichen Vorhersagewinkeln beschränkt werden, oder er kann ein beliebiger Winkel sein, der durch den Codec verwendbar ist. Als Reaktion auf die Identifizierung des Vorhersagewinkels vervollständigt die Operation 708 den Prozess 700 durch Auswählen eines Richtungsfilters von einem Satz von Richtungsfiltern mit einem Filterwinkel, der dem Vorhersagewinkel am nächsten kommt. Die Operation 708 kann das Durchsuchen der Filterwinkel beinhalten, die den Richtungsfiltern des Satzes zugeordnet sind, um einen Filterwinkel zu finden, der bei Operation 706 identifizierten Vorhersagewinkel am nächsten kommt. Die Operation 708 kann das Ermitteln beinhalten, ob irgendwelche Filterwinkel, die den Richtungsfiltern des Satzes zugeordnet sind, mit dem Vorhersagewinkel übereinstimmen, und, wenn dies der Fall ist, Auswählen eines derartigen übereinstimmenden Richtungsfilters. Wenn keine den Richtungsfiltern zugeordneten Filterwinkel des Satzes mit dem Vorhersagewinkel übereinstimmen, kann die Operation 708 das Ermitteln beinhalten, ob irgendwelche Filterwinkel, die den Richtungsfiltern zugeordnet sind, innerhalb eines definierten Bereichs des Vorhersagewinkels vorhanden sind (z. B. mit 5 Grad des Vorhersagewinkels).
  • Als Reaktion auf das Ermitteln bei der Operation 704, dass die Filtersignalisierungsdaten nicht auf einem direktionalen Intra-Vorhersagemodus basieren, fährt der Prozess 700 mit der Operation 710 fort, wo ein signalisierter Filterwinkel, der in Verbindung mit dem Einzelbild kodiert ist, identifiziert wird. Der signalisierte Filterwinkel kann aus dem kodierten Einzelbild oder einem Header mit Daten, die den signalisierten Filterwinkel anzeigen, identifiziert werden. Als Antwort auf die Identifizierung des Vorhersagewinkels vervollständigt die Operation 712 den Prozess 700 durch Auswählen eines Richtungsfilters mit einem Filterwinkel, der dem Signalfilterwinkel von einem Satz von Richtungsfiltern am nächsten kommt. Die Operation 712 kann das Durchsuchen der Filterwinkel beinhalten, die den Richtungsfiltern des Satzes zugeordnet sind, um einen Filterwinkel zu finden, der bei Operation 710 dem identifizierten signalisierten Filterwinkel am nächsten kommt. Die Operation 712 kann das Ermitteln beinhalten, ob irgendwelche Filterwinkel, die den Richtungsfiltern des Satzes zugeordnet sind, mit dem signalisierten Filterwinkel übereinstimmen, und, wenn dies der Fall ist, Auswählen eines derartigen übereinstimmenden Richtungsfilters. Wenn keine den Richtungsfiltern zugeordneten Filterwinkel des Satzes mit dem signalisierten Filterwinkel übereinstimmen, kann die Operation 712 das Ermitteln beinhalten, ob irgendwelche Filterwinkel, die den Richtungsfiltern zugeordnet sind, innerhalb eines definierten Bereichs des signalisierten Filterwinkels vorhanden sind (z. B. mit 5 Grad des signalisierten Filterwinkels).
  • 8 ist ein Flussdiagramm eines Beispiels für einen Prozess 800 zum Verwenden eines oder mehrerer Filterwinkel für eine adaptive Richtungsschleifenfilterung. Implementierungen der vorliegenden Offenbarung können den Richtungsfilter basierend auf einer Orientierung oder einem Winkel der nicht-senkrechten Bildkante, die gefiltert werden soll, auswählen. So kann beispielsweise ein Richtungsfilter ausgewählt werden basierend darauf, wie ein zugehöriger Filterwinkel mit der nicht senkrechten Bildkantenorientierung verglichen wird, oder es können mehrere Richtungsfilter basierend auf einer Kombination ihrer zugeordneten Filterwinkel ausgewählt werden. Ein oder mehrere Richtungsfilter können für eine adaptive Richtungsschleifenfilterung ausgewählt werden, bei der der Filterwinkel mit der nicht senkrechten Bildkantenorientierung übereinstimmt (z. B. wenn der Winkel des Richtungsfilters dem Winkel der Bildkante entspricht). Die einen oder mehreren Richtungsfilter, die ausgewählt werden sollen, können durch Anwenden eines Richtungsfilters zu einem Zeitpunkt ermittelt und inkrementell bewertet werden, wie viele Blockartefakte aus dem Block als Ergebnis reduziert wurden. Falls erforderlich oder wünschenswert, beispielsweise wenn ein angelegter Richtungsfilter die Anzahl der Blockartefakte nicht ausreichend verringert hat oder der Filterwinkel des angelegten Richtungsfilters nicht oder nicht ähnlich genug zu der nicht senkrechten Bildkantenorientierung ist, können weitere Richtungsfilter angewendet werden.
  • Bei der Operation 802 wird ein erster Richtungsfilter an einen Block angelegt, der mindestens einen Teil der nicht senkrechten Bildkante aufweist, die in ihm angeordnet ist. Der erste verwendete Richtungsfilter, kann der Richtungsfilter des Satzes von Richtungsfiltern sein, der am häufigsten verwendet wird. So kann beispielsweise der am häufigsten verwendete Filterwinkel einer von 45 oder 135 Grad sein (z. B. wobei die Winkel zwischen Winkeln senkrecht zur Blockgrenze zentriert sind). Jedoch kann jeder Filterwinkel oder Winkel der am häufigsten verwendete Filterwinkel sein, beispielsweise auf der Basis der Bildkanten, die von den Richtungsfiltern des Satzes von Richtungsfiltern oder anderen Qualitäten in Bezug auf die Videosequenz gefiltert werden. Der bei der Operation 802 angelegte erste Richtungsfilter kann zufällig aus dem Satz von Richtungsfiltern ausgewählt werden. Der erste Richtungsfilter kann auf der Basis eines Index des Satzes von Richtungsfiltern ausgewählt werden. Dementsprechend kann die Auswahl des ersten Richtungsfilters vorsätzlich oder beliebig sein.
  • Nach der Auswahl kann der erste Richtungsfilter an den Block angelegt werden, um beispielsweise einen gefilterten Block zu erzeugen, der als vorübergehende Referenz zur Durchführung nachfolgender Operationen des Prozesses 800 verwendet werden kann. Bei der Operation 804 ermittelt der Prozess 800, ob die Anzahl an Blockierartefakten durch die Anwendung des ersten Richtungsfilters reduziert wurde. So kann beispielsweise der gefilterte Block eine Anzahl an Blockierartefakten aufweisen, die für die Anzahl an Blockierartefakten repräsentativ sind, die nach dem Anlegen des ersten Richtungsfilters im eigentlichen Block verbleiben würden. Somit kann die Operation 804 das Vergleichen einer Anzahl an Blockierartefakten in dem tatsächlichen Block mit demjenigen des gefilterten Blocks beinhalten. Wenn ermittelt wird, dass der gefilterte Block weniger Blockierartefakte aufweist als der eigentliche Block, kann ermittelt werden, dass die Anzahl der Blockierartefakte durch die Anwendung des ersten Richtungsfilters reduziert würde.
  • Als Reaktion darauf, dass die Anwendung des ersten Richtungsfilters keine Anzahl an Blockierartefakten im tatsächlichen Block verringert, fährt der Prozess 800 mit der Operation 806 fort, wo ein anderer Richtungsfilter für die Anwendung ausgewählt wird. Die Operation 806 kann das Ersetzen des gefilterten Blocks, der bei der Operation 802 erzeugt wird (oder eine vorhergehende Iteration der Operation 806, falls anwendbar) mit einem neuen gefilterten Block beinhalten, der basierend auf der Anwendung eines anderen Richtungsfilters als dem bei der Operation 802 ausgewählten Richtungsfilters (oder beliebigen Richtungsfiltern, die bei vorherigen Iterationen der Operation 806 ausgewählt wurden) erzeugt wird. Die Auswahl der verschiedenen Richtungsfilter für die Anwendung bei der Operation 806 kann beispielsweise durch Implementierungen ermittelt werden, die zur Auswahl des ersten Richtungsfilters bei Operation 802 verwendbar sind. Als Reaktion auf die Auswahl eines anderen Richtungsfilters bei der Operation 806 kehrt der Prozess 800 zur Operation 804 zurück, um zu ermitteln, ob die Anwendung dieses unterschiedlichen Richtungsfilters die Anzahl der Blockierartefakte im Block verringern würde. Implementierungen zum Ermitteln dieser sind vorstehend erläutert.
  • Als Reaktion darauf, dass die Anwendung des ersten Richtungsfilters (oder unterschiedlichen, als den anwendbaren) die Anzahl an Blockierartefakten im tatsächlichen Block verringern würde, fährt der Prozess 800 mit der Operation 808 fort, um zu ermitteln, ob eine zusätzliche Filterung notwendig oder wünschenswert ist. Operation 808 kann das Vergleichen des Filterwinkels des ausgewählten Richtungsfilters mit der Orientierung der nicht senkrechten Bildkante beinhalten. Wenn der Filterwinkel beispielsweise der Bildkantenorientierung entspricht, kann der ausgewählte Richtungsfilter als der optimale Richtungsfilter für die adaptive Richtungsschleifenfilterung ermittelt werden. Als ein weiteres Beispiel, bei dem der Filterwinkel des ausgewählten Richtungsfilters innerhalb eines definierten Bereichs der Bildkantenorientierung (z. B. innerhalb von 5 Grad der Bildkantenorientierung) liegt, kann der ausgewählte Richtungsfilter als ausreichend für eine adaptive Richtungsschleifenfilterung ermittelt werden. Operation 808 kann das Vergleichen der Anzahl an Blockierartefakten beinhalten, die auf einen Schwellwert reduziert werden, um zu ermitteln, ob der ausgewählte Richtungsfilter den Schwellenwert erfüllen würde. Der Schwellenwert kann beispielsweise eine annehmbare Anzahl an Blockierartefakten angeben, die in der Gesamtheit der Blockierartefakte verbleiben, die von dem tatsächlichen Block durch die Anwendung des ausgewählten Richtungsfilters reduziert werden sollen.
  • Als Reaktion darauf, dass bei der Operation 808 eine zusätzliche Filterung erforderlich oder wünschenswert ist, fährt der Prozess 800 mit der Operation 810 fort, wo zusätzlich zu dem zuvor ausgewählten Richtungsfilter ein weiterer Richtungsfilter angelegt wird. Das Anwenden des weiteren Richtungsfilters kann das Ersetzen des gefilterten Blocks, der bei Operation 802 erzeugt wird (oder Operation 806, falls anwendbar), mit einem neuen gefilterten Block, der basierend auf der Anwendung des ersten Richtungsfilters erzeugt wird, der bei Operation 802 ausgewählt wird (oder dem unterschiedlichen Richtungsfilter, der bei Operation 806 ausgewählt wird, falls anwendbar) und dem weiteren Richtungsfilter, der bei Operation 810 ausgewählt wird, beinhalten. Die Auswahl der verschiedenen Richtungsfilter für die Anwendung bei der Operation 806 kann beispielsweise durch Implementierungen ermittelt werden, die zur Auswahl des ersten Richtungsfilters bei Operation 802 (oder unterschiedlicher Richtungsfilter bei Operation 806, falls anwendbar) verwendbar sind. Nachdem der weitere Richtungsfilter bei Operation 810 angelegt wurde, kann der Prozess 800 zur Operation 804 zurückkehren, um zu ermitteln, ob die Anwendung des weiteren Richtungsfilters die Anzahl an Blockierartefakten in dem aktuellen Block weiter verringern würde (über der Anzahl, die in einer ersten Iteration der Operation 804 verbleibt). Als Reaktion darauf, dass die Anwendung des ersten Richtungsfilters die Anzahl an Blockierartefakten weiter verringern würde, kehrt der Prozess 800 zur Operation 808 zurück, um zu ermitteln, ob wiederum eine beliebige zusätzliche Filterung notwendig oder wünschenswert ist. Als Reaktion darauf, dass die Anwendung des weiteren Richtungsfilters die Anzahl an Blockierartefakten nicht weiter verringert, kehrt der Prozess 800 zur Operation 806 zurück, wo ein weiterer Richtungsfilter wird, um den weiteren Richtungsfilter zu ersetzen, der bei der Operation 810 ausgewählt wurde.
  • Wenn die Operation 808 für eine zweite oder weitere Iteration durchgeführt wird, können die Filterwinkel der ausgewählten Richtungsfilter kombiniert werden, um zu ermitteln, ob eine weitere zusätzliche Filterung notwendig oder wünschenswert ist. Die bei den Operationen 802, 806 und/oder 810 angewendeten Filterwinkel können beispielsweise für die Durchführung der Implementierungen der Operation 808 gemittelt, summiert oder auf eine andere Weise kombiniert werden. Als Reaktion darauf, dass bei der Operation 808 keine zusätzliche Filterung notwendig oder wünschenswert ist, fährt der Prozess 800 mit der Operation 812 fort, wo der eine oder die mehreren Richtungsfilter, die während der Durchführung des Prozesses 800 ausgewählt und angewendet werden, als Richtungsfilter für die Verwendung bei der adaptiven Richtungsschleifenfilterung (z. B. als Ausgangssignal der Operation 606 von 6).
  • Unter Verwendung von Ausführungsformen der vorliegenden Offenbarung, kann eine Anzahl an Blockierartefakten innerhalb eines Blocks durch Auswählen eines adaptiven Richtungsfilters, der einer nicht senkrechten Bildkante innerhalb des Blocks entspricht, verringert werden. Während Filter, die nur bezüglich der vertikalen und horizontalen Blockgrenzen arbeiten, nicht in der Lage sind, die Blockierartefakte um die Bildkante genau zu verringern, schränkt die adaptive Richtungsschleifenfilterung der vorliegenden Offenbarung die Deblockierungsfilteroperationen auf der Bildkante, basierend auf einem nicht senkrechten Winkel ein, an dem sie die anwendbaren Blockgrenzen schneidet. Somit können die hierin offenbarten Implementierungen verwendet werden, um den Bildinhalt eines Einzelbildes besser als typische horizontale, vertikale oder anderweitig nicht adaptive Winkelfilteroperationen zu bewahren. Ein Einzelbild, das unter Verwendung der hierin offenbarten Implementierungen verarbeitet wird, kann als ein Referenzeinzelbild zum Dekodieren von späteren Einzelbildern einer Videosequenz verwendet werden, beispielsweise, weil sein Einschluss einer verringerten Anzahl an Blockierartefakten genutzt werden kann, um Blockierartefakte zu verringern, die in diesen späteren Einzelbildern vorhanden sind.
  • Die vorstehend beschriebenen Aspekte der Kodierung und Dekodierung veranschaulichen einige Beispiele von Kodier- und Dekodierungstechniken. Es versteht sich jedoch, dass die Kodierung und Dekodierung, wie diese in den Ansprüchen verwendet werden, Komprimierung, Dekomprimierung, Transformation oder jede andere Verarbeitung oder Änderung von Daten bedeuten kann.
  • Das Wort „Beispiel” oder „Aspekt” wie hierin verwendet, dient als ein Beispiel, eine Instanz zu verstehen oder zu veranschaulichen. Jeder Aspekt oder ein Design, das hierin als „Beispiel” oder „Aspekt” beschrieben wird, ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs auszulegen. Vielmehr soll die Verwendung des Wortes „Beispiel” oder „Aspekt” Konzepte konkret darstellen. Wie in dieser Anmeldung verwendet, ist der Begriff „oder” eher als ein integratives „oder” als ein exklusives „oder” zu verstehen. Das heißt, sofern nicht anders angegeben oder klar aus dem Kontext hervorgeht, „beinhaltet X A oder B” und ist als eine der natürlichen inklusiven Permutationen zu verstehen. Das heißt, wenn X A beinhaltet; beinhaltet X B; oder wenn X sowohl A als auch B beinhaltet, beinhaltet „X A oder B” unter Bezug auf ein beliebiges vorstehendes Beispiel. Zusätzlich sollten die in dieser Anmeldung und den anhängenden Ansprüchen verwendeten Artikel „ein” und „eine” im Allgemeinen als „ein” oder „eine” verstanden werden, sofern nichts Anderes angegeben oder klar aus dem Zusammenhang zu einer singulären Form abgeleitet werden kann. Darüber hinaus soll die Verwendung des Begriffs „eine Implementierung” oder „Beispiel” oder „eine Implementierung” nicht bestimmungsgemäß als dieselbe Ausführungsform oder Implementierung angesehen werden, es sei denn, dies ist ausdrücklich so beschrieben.
  • Implementationen der Sendestation 102 und/oder der Empfangsstation 106 (und die Algorithmen, Verfahren, Anweisungen usw. die darauf gespeichert sind und/oder hierdurch ausgeführt werden, einschließlich derer durch den Kodierer 400 und den Dekodierer 500) kann in Hardware, Software oder einer beliebigen Kombination davon realisiert werden. Die Hardware kann beispielsweise Computer, Intellectual Property (IP) Kerne, anwendungsspezifische integrierte Schaltkreise (ASICs), programmierbare Logikarrays, optische Prozessoren, programmierbare Logiksteuerungen, Mikrocodes, Mikrocontroller, Server, Mikroprozessoren und digitale Signalprozessoren oder jede andere geeignete Schaltung beinhalten. In den Ansprüchen sollte der Begriff „Prozessor” als jede der vorgenannten Hardware entweder einzeln oder in Kombination verstanden werden. Die Begriffe „Signal” und „Daten” werden austauschbar verwendet. Ferner müssen Teile der Sendestation 102 und der Empfangsstation 106 nicht notwendigerweise in der gleichen Weise implementiert werden.
  • Ferner kann in einem Aspekt beispielsweise die Sendestation 102 oder die Empfangsstation 106 unter Verwendung eines Allzweckcomputers oder eines Allzweck-Prozessors mit einem Computerprogramm, das, wenn es ausgeführt wird, jede der jeweiligen Verfahren, Algorithmen und/oder Anweisungen, implementiert werden, wie hierin beschrieben. Zusätzlich oder alternativ kann beispielsweise ein spezieller Computer/Prozessor verwendet werden, der andere Hardware zur Durchführung eines der hierin beschriebenen Verfahren, Algorithmen oder Anweisungen beinhalten kann.
  • Die Sendestation 102 und die Empfangsstation 106 können beispielsweise auf Computern in einem Videokonferenzsystem implementiert sein. Alternativ kann die Sendestation 102 auf einem Server implementiert sein und die Empfangsstation 106 kann auf einem vom Server getrennten Gerät implementiert sein, wie beispielsweise einem Handkommunikationsgerät. In diesem Fall kann die Sendestation 102 Inhalte unter Verwendung des Kodierers 400 in ein kodiertes Videosignal kodieren und das kodierte Videosignal an das Kommunikationsgerät übertragen. Im Gegenzug kann das Kommunikationsgerät dann das kodierte Videosignal unter Verwendung des Dekodierers 500 dekodieren. Alternativ kann das Kommunikationsgerät einen lokal auf dem Kommunikationsgerät gespeicherten Inhalt dekodieren, beispielsweise einen Inhalt, der nicht von der Sendestation 102 übertragen wurde. Andere geeignete Sende- und Empfangsimplementierungsschemata sind verfügbar. So kann beispielsweise die Empfangsstation 106 ein allgemein stationärer Personalcomputer und nicht ein mobiles Kommunikationsgerät sein, und/oder ein Gerät, das den Kodierer 400 beinhaltet, kann auch einen Dekodierer 500 beinhalten.
  • Ferner können alle oder ein Teil der Implementierungen der vorliegenden Offenbarung die Form eines Computerprogrammprodukts annehmen, das zum Beispiel von einem computerverwendbaren oder computerlesbaren Medium zugänglich ist. Ein computerverwendbares oder computerlesbares Medium kann jedes Gerät sein, das zum Beispiel das Programm zur Verwendung durch oder in Verbindung mit einem beliebigen Prozessor fassbar beinhalten, speichern, kommunizieren oder transportieren kann. Das Medium kann beispielsweise ein elektronisches, magnetisches, optisches, elektromagnetisches oder eine Halbleitervorrichtung sein. Es sind auch andere geeignete Medien verfügbar.
  • Die vorstehendbeschriebenen Ausführungsformen, Implementierungen und Aspekte wurden beschrieben, um ein leichtes Verständnis der vorliegenden Erfindung zu ermöglichen und die vorliegende Erfindung nicht zu beschränken. Im Gegenteil soll die Erfindung verschiedene Modifikationen und äquivalente Anordnungen abdecken, die im Schutzumfang der beigefügten Ansprüche beinhaltet sind, wobei diesem Bereich die breiteste Auslegung zugestanden werden soll, um alle derartigen Modifikationen und äquivalenten Strukturen, die nach dem Gesetz zulässig sind, zu umfassen.

Claims (20)

  1. Vorrichtung, umfassend: mindestens einen Prozessor, der konfiguriert ist, um Instruktionen auszuführen, die in einem nichtflüchtigen Speichermedium gespeichert sind, zum: Identifizieren einer codierten Videosequenz in einem Einzelbild, eine Bildkante die nicht senkrecht zu einer Grenze eines aktuellen Blocks des Rahmens ist; Auswählen eines Richtungsfilters aus einem Satz von Richtungsfiltern basierend auf Filtersignalisierungsdaten, die als Teil der codierten Videosequenz in Verbindung mit dem Einzelbild beinhaltet sind, wobei jeder Richtungsfilter einen entsprechenden Filterwinkel aufweist; und Anwenden des ausgewählten Richtungsfilters auf die Bildkante.
  2. Vorrichtung nach Anspruch 1, wobei das Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern das Ausführen von Anweisungen umfasst, zum: Identifizieren, ob die Filtersignalisierungsdaten, ein Vorhersagewinkel, der einem direktionalen Intra-Vorhersagemodus zugeordnet ist, zum Kodieren des aktuellen Blocks verwendet werden; und Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern mit einem Filterwinkel, der am ehesten dem Vorhersagewinkel entspricht.
  3. Vorrichtung nach Anspruch 1, wobei das Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern das Ausführen von Anweisungen umfasst, zum: Identifizieren, als die Filtersignalisierungsdaten, einen signalisierten Filterwinkel, der in Verbindung mit dem Einzelbild codiert ist; und Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern mit einem Filterwinkel, der am ehesten dem signalisierten Filterwinkel entspricht.
  4. Vorrichtung nach Anspruch 1, wobei das Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern das Ausführen von Anweisungen umfasst, zum: Auswählen eines am häufigsten verwendeten Richtungsfilters des Satzes von Richtungsfiltern als Richtungsfilter.
  5. Vorrichtung nach einem der Ansprüche 1–4, wobei das Anwenden des Richtungsfilters das Ausführen von Anweisungen umfasst, zum: Anwenden einer adaptiven Filterung auf eine Gruppe von Pixeln, die die Grenze des aktuellen Blocks durch den Richtungsfilter, die Gruppe von Pixeln, die durch die Bildkante definiert sind, zu schneiden.
  6. Vorrichtung nach einem der Ansprüche 1–5, wobei ein Teil der Bildkante innerhalb eines zweiten Blocks des Einzelbildes angeordnet ist, wobei die Grenze den aktuellen Block und den zweiten Block trennt.
  7. Vorrichtung nach einem der Ansprüche 1–6, wobei der jeweilige Filterwinkel jedes Richtungsfilters des Satzes von Richtungsfiltern exklusiv ein Winkel zwischen 0 und 180 Grad ist.
  8. Vorrichtung, umfassend: mindestens einen Prozessor, der konfiguriert ist, um Instruktionen auszuführen, die in einem nichtflüchtigen Speichermedium gespeichert sind, zum: Identifizieren in einem aktuellen Block eines Einzelbildes eine Gruppe von Pixeln, die eine Bildkante definieren, die nicht senkrecht zu einer Grenze des aktuellen Blocks ist; Auswählen eines Richtungsfilters aus einem Satz von Richtungsfiltern basierend auf der Ausrichtung der Bildkante, wobei jeder Richtungsfilter einen entsprechenden Filterwinkel aufweist; und Anwenden des Richtungsfilters, der bei der Kodierung oder Dekodierung des Einzelbildes auf die Bildkante ausgewählt ist.
  9. Vorrichtung nach Anspruch 8, wobei das Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern das Ausführen von Anweisungen umfasst, zum: Anwenden eines ersten Richtungsfilters des Satzes von Richtungsfiltern, wobei der erste Richtungsfilter einen ersten Filterwinkel zum aktuellen Block aufweist, um einen ersten gefilterten Block zu erzeugen; als Reaktion auf das Bestimmen, dass eine Anzahl an Blockierartefakten des ersten gefilterten Blocks kleiner ist als eine Anzahl an Blockierartefakten des aktuellen Blocks ist, Anwenden eines zweiten Richtungsfilters des Satzes von Richtungsfiltern, wobei der zweite Richtungsfilter einen zweiten Filterwinkel an den ersten gefilterten Block aufweist, um einen zweiten gefilterten Block zu erzeugen; und als Reaktion auf das Bestimmen, dass eine Anzahl an Blockierartefakten des zweiten gefilterten Blocks kleiner ist als die Anzahl an Blockierartefakten des ersten gefilterten Blocks, Auswählen des ersten Richtungsfilters und des zweiten Richtungsfilters als Richtungsfilter, wobei der Filterwinkel des Richtungsfilters eine Kombination des ersten Filterwinkels und des zweiten Filterwinkels ist.
  10. Vorrichtung nach Anspruch 8, wobei das Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern das Ausführen von Anweisungen umfasst, zum: Anwenden eines ersten, zweiten und dritten Richtungsfilters des Satzes von Richtungsfiltern auf den aktuellen Block, um erste, zweite und dritte gefilterte Blöcke zu erzeugen, wobei das erste, das zweite und das dritte Richtungsfilter unterschiedliche Filterwinkel aufweisen; und als Reaktion auf das Bestimmen, dass einer der ersten, zweiten oder dritten gefilterten Blöcke eine Anzahl an Blockierartefakten unterhalb eines Schwellwertes aufweist, Auswählen des einen der ersten, zweiten oder dritten Richtungsfilter als Richtungsfilter; und als Reaktion auf das Bestimmen, dass einer der ersten, zweiten oder dritten gefilterten Blöcke eine Anzahl an Blockierartefakten unterhalb eines Schwellwertes aufweist, wobei das Auswählen des Richtungsfilters demjenigen des ersten, zweiten und dritten gefilterten Blöcke entspricht, eine geringste Anzahl an Blockierartefakten aufweist.
  11. Vorrichtung nach Anspruch 8, wobei das Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern das Ausführen von Anweisungen umfasst, zum: Auswählen eines am häufigsten verwendeten Richtungsfilters des Satzes von Richtungsfiltern als Richtungsfilter.
  12. Vorrichtung nach Anspruch 8, wobei das Anwenden des Richtungsfilters das Ausführen von Anweisungen umfasst, um: eine adaptive Filterung an die Gruppe von Pixeln unter Verwendung des ausgewählten Richtungsfilters anzuwenden, wobei die Gruppe von Pixeln die Grenze des aktuellen Blocks schneidet.
  13. Vorrichtung nach einem der Ansprüche 8–12, wobei die Gruppe von Pixeln Pixel beinhaltet, die innerhalb eines zweiten Blocks des Einzelbildes angeordnet ist, wobei die Grenze den aktuellen Block und den zweiten Block trennt.
  14. Vorrichtung nach einem der Ansprüche 8–13, wobei der jeweilige Filterwinkel jedes Richtungsfilters des Satzes von Richtungsfiltern exklusiv ein Winkel zwischen 0 und 180 Grad ist.
  15. Verfahren zum Codieren oder Decodieren eines Videosignals unter Verwendung eines Computergeräts, wobei das Videosignal Einzelbilder beinhaltet, die eine Videosequenz definieren, wobei die Einzelbilder Blöcke aufweisen und die Blöcke Pixel aufweisen, wobei das Verfahren Folgendes umfasst: das Identifizieren in einem aktuellen Block eines aktuellen Einzelbildes der Videosequenz, einer Gruppe von Pixeln, die eine Bildkante definieren, die nicht senkrecht zu einer Grenze des aktuellen Blocks ist; das Auswählen eines Richtungsfilters aus einem Satz von Richtungsfiltern basierend auf einer Ausrichtung der Bildkanten oder Filtersignalisierungsdaten, die als Teil der codierten Videosequenz in Verbindung mit dem aktuellen Einzelbild beinhaltet sind, wobei jeder Richtungsfilter einen entsprechenden Filterwinkel aufweist; und das Anwenden des ausgewählten Richtungsfilters, der bei der Kodierung oder Dekodierung des Einzelbildes auf die Bildkante ausgewählt ist.
  16. Verfahren nach Anspruch 15, wobei das Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern Folgendes umfasst: das Identifizieren, ob die Filtersignalisierungsdaten, eines Vorhersagewinkels, der einem direktionalen Intra-Vorhersagemodus zugeordnet ist, zum Kodieren des aktuellen Blocks verwendet werden; und das Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern mit einem Filterwinkel, der am ehesten dem Vorhersagewinkel entspricht.
  17. Verfahren nach Anspruch 15, wobei das Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern Folgendes umfasst: das Identifizieren, als die Filtersignalisierungsdaten eines signalisierten Filterwinkels, der in Verbindung mit dem Einzelbild codiert ist; und das Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern mit einem Filterwinkel, der am ehesten dem signalisierten Filterwinkel entspricht.
  18. Verfahren nach Anspruch 15, wobei das Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern Folgendes umfasst: das Anwenden eines ersten Richtungsfilters des Satzes von Richtungsfiltern, wobei der erste Richtungsfilter einen ersten Filterwinkel zum aktuellen Block aufweist, um einen ersten gefilterten Block zu erzeugen; als Reaktion darauf, dass eine Anzahl an Blockierartefakten des ersten gefilterten Blocks kleiner ist als eine Anzahl an Blockierartefakten des aktuellen Blocks ist, das Anwenden eines zweiten Richtungsfilters des Satzes von Richtungsfiltern, wobei der zweite Richtungsfilter einen zweiten Filterwinkel an den ersten gefilterten Block aufweist, um einen zweiten gefilterten Block zu erzeugen; und als Reaktion auf das Bestimmen, dass eine Anzahl an Blockierartefakten des zweiten gefilterten Blocks kleiner ist als die Anzahl an Blockierartefakten des ersten gefilterten Blocks, das Auswählen des ersten Richtungsfilters und des zweiten Richtungsfilters als Richtungsfilter, wobei der Filterwinkel des Richtungsfilters eine Kombination des ersten Filterwinkels und des zweiten Filterwinkels ist.
  19. Verfahren nach Anspruch 15, wobei das Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern Folgendes umfasst: das Anwenden eines ersten, zweiten und dritten Richtungsfilters des Satzes von Richtungsfiltern auf den aktuellen Block, um erste, zweite und dritte gefilterte Blöcke zu erzeugen, wobei das erste, das zweite und das dritte Richtungsfilter unterschiedliche Filterwinkel aufweisen; und als Reaktion auf das Bestimmen, dass einer der ersten, zweiten oder dritten gefilterten Blöcke eine Anzahl an Blockierartefakten unterhalb eines Schwellwertes aufweist, das Auswählen des einen der ersten, zweiten oder dritten Richtungsfilter als Richtungsfilter; und als Reaktion auf das Bestimmen, dass einer der ersten, zweiten oder dritten gefilterten Blöcke eine Anzahl an Blockierartefakten unterhalb eines Schwellwertes aufweist, das Auswählen des Richtungsfilters gemäß jenem des ersten, zweiten und dritten gefilterten Blocks, der eine geringste Anzahl an Blockierartefakten aufweist.
  20. Verfahren nach Anspruch 15, wobei das Auswählen des Richtungsfilters aus dem Satz von Richtungsfiltern umfasst: das Auswählen eines am häufigsten verwendeten Richtungsfilters des Satzes von Richtungsfiltern als Richtungsfilter.
DE102016125086.4A 2016-04-15 2016-12-21 Adaptiver direktionaler Schleifenfilter Ceased DE102016125086A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/130,022 US20170302965A1 (en) 2016-04-15 2016-04-15 Adaptive directional loop filter
US15/130,022 2016-04-15

Publications (1)

Publication Number Publication Date
DE102016125086A1 true DE102016125086A1 (de) 2017-10-19

Family

ID=57822050

Family Applications (2)

Application Number Title Priority Date Filing Date
DE102016125086.4A Ceased DE102016125086A1 (de) 2016-04-15 2016-12-21 Adaptiver direktionaler Schleifenfilter
DE202016008210.9U Active DE202016008210U1 (de) 2016-04-15 2016-12-21 Adaptiver direktionaler Schleifenfilter

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE202016008210.9U Active DE202016008210U1 (de) 2016-04-15 2016-12-21 Adaptiver direktionaler Schleifenfilter

Country Status (5)

Country Link
US (1) US20170302965A1 (de)
CN (1) CN107302700A (de)
DE (2) DE102016125086A1 (de)
GB (1) GB2549359A (de)
WO (1) WO2017180201A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10491897B2 (en) 2018-04-13 2019-11-26 Google Llc Spatially adaptive quantization-aware deblocking filter
US11272192B2 (en) * 2019-03-04 2022-03-08 Comcast Cable Communications, Llc Scene classification and learning for video compression
US10638130B1 (en) 2019-04-09 2020-04-28 Google Llc Entropy-inspired directional filtering for image coding
US11070848B2 (en) * 2019-06-24 2021-07-20 Tencent America LLC Method for efficient signaling of virtual boundary for loop filtering control
CN113766246A (zh) * 2020-06-05 2021-12-07 Oppo广东移动通信有限公司 图像编码方法、图像解码方法及相关装置
CN113965764B (zh) * 2020-07-21 2023-04-07 Oppo广东移动通信有限公司 图像编码方法、图像解码方法及相关装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367385A (en) * 1992-05-07 1994-11-22 Picturetel Corporation Method and apparatus for processing block coded image data to reduce boundary artifacts between adjacent image blocks
US7072525B1 (en) * 2001-02-16 2006-07-04 Yesvideo, Inc. Adaptive filtering of visual image using auxiliary image information
CN100581255C (zh) * 2006-11-30 2010-01-13 联合信源数字音视频技术(北京)有限公司 一种像素级环路滤波方法和滤波器
WO2009133844A1 (ja) * 2008-04-30 2009-11-05 株式会社 東芝 エッジを考慮したフィルタリング機能を備えた動画像符号化/復号化方法及び装置
TWI386068B (zh) * 2008-10-22 2013-02-11 Nippon Telegraph & Telephone 解塊處理方法、解塊處理裝置、解塊處理程式及記錄該程式之可由電腦讀取之記錄媒體
US9596485B2 (en) * 2008-10-27 2017-03-14 Sk Telecom Co., Ltd. Motion picture encoding/decoding apparatus, adaptive deblocking filtering apparatus and filtering method for same, and recording medium
KR101529992B1 (ko) * 2010-04-05 2015-06-18 삼성전자주식회사 픽셀 그룹별 픽셀값 보상을 위한 비디오 부호화 방법과 그 장치, 및 픽셀 그룹별 픽셀값 보상을 위한 비디오 복호화 방법과 그 장치
US8787443B2 (en) * 2010-10-05 2014-07-22 Microsoft Corporation Content adaptive deblocking during video encoding and decoding
US20120183078A1 (en) * 2011-01-14 2012-07-19 Samsung Electronics Co., Ltd. Filter adaptation with directional features for video/image coding
JP2013110518A (ja) * 2011-11-18 2013-06-06 Canon Inc 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
CN103220529B (zh) * 2013-04-15 2016-02-24 北京大学 一种视频编解码环路滤波的实现方法

Also Published As

Publication number Publication date
CN107302700A (zh) 2017-10-27
WO2017180201A1 (en) 2017-10-19
US20170302965A1 (en) 2017-10-19
GB201621727D0 (en) 2017-02-01
GB2549359A (en) 2017-10-18
DE202016008210U1 (de) 2017-04-27

Similar Documents

Publication Publication Date Title
DE102016125379B4 (de) Bewegungsvektoraufteilung des letzten Frames
DE102016125117B4 (de) Bewegungsvektorkodierung mit dynamischen Referenzbewegungsvektoren
DE102016125086A1 (de) Adaptiver direktionaler Schleifenfilter
DE202016008214U1 (de) Kodierratensteuerung von Echtzeitvideos unter Verwendung einer dynamischen Auflösungsumschaltung
EP1635578B1 (de) Verfahren und Anordnung zur Videocodierung, wobei die Videocodierung Texturanalyse und Textursynthese sowie Texturverzerrung umfasst, sowie ein entsprechendes Computerprogramm und ein entsprechendes computerlesbares Speichermedium
DE102019218837A1 (de) VERFAHREN UND SYSTE M ZUR NEURONALNETZ WERK-SCHLEIFENFILTERUNG ZUR VlDEOCODIERUNG
DE102016125094A1 (de) Auswahl des Referenz-Bewegungsvektors über Referenzeinzelbild Puffer-Nachverfolgung
DE202016008178U1 (de) Bewegungsvektorvorhersage mittels eines vorhergehenden Einzelbildresiduums
DE102016225270A1 (de) Verfahren, anwendungsprozessor, und mobiles endgerät zum verarbeiten eines referenzbildes
DE202016008175U1 (de) Adaptive gerichtete Intra-Prädiktion mit Blockgröße
DE102016125125B4 (de) Tile-Copying für Videokompression
DE202016008155U1 (de) Hybrid-Prädiktionsmodi zur Kodierung von Videos
DE202016008164U1 (de) Intelligente Sortierung der rekursiven Blockaufteilung für die erweiterte Intra-Prädiktion bei der Videocodierung
DE102013015821B4 (de) System und Verfahren zur Verbesserung der Videokodierung unter Verwendung von Inhaltsinformation
DE202016008194U1 (de) Bewegungsvektorvorhersage durch Skalierung
DE112022004563T5 (de) Hybride, auf einem neuronalen netzwerk basierende, end-to-end-bild- und video-codierverfahren
DE102016015996B3 (de) Anpassungsfähige Kachel-Daten-Grössenkodierung für Video- und Bildkompression
EP3434015A1 (de) Datenkompression mittels adaptiven unterabtastens
DE112015004399T5 (de) Frequenzbereichsentstörung
DE102011006036B4 (de) Verfahren und Vorrichtungen zur Bildung eines Prädiktionswertes
DE112015001531T5 (de) Datenkodierung und Dekodierung
DE102020207711B3 (de) Verfahren und vorrichtungen zur codierung von bilddaten
DE102016125593B4 (de) Dynamischer Kodiermodus für Referenz-Bewegungsvektoren
DE102004029086B4 (de) Verfahren zum Entblocken und Umcodieren eines Medienstroms
DE202016008206U1 (de) Abschätzung einer Bewegung in einem superweiten Bereich zur Kodierung eines Videos

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R138 Derivation of utility model

Ref document number: 202016008210

Country of ref document: DE

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: PROCK, THOMAS, DR., GB

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

R082 Change of representative

Representative=s name: PROCK, THOMAS, DR., GB

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final