DE19758761B4 - Verfahren zum Intrakodieren eines von einer Pixelmatrix gebildeten Bildes - Google Patents

Verfahren zum Intrakodieren eines von einer Pixelmatrix gebildeten Bildes Download PDF

Info

Publication number
DE19758761B4
DE19758761B4 DE19758761A DE19758761A DE19758761B4 DE 19758761 B4 DE19758761 B4 DE 19758761B4 DE 19758761 A DE19758761 A DE 19758761A DE 19758761 A DE19758761 A DE 19758761A DE 19758761 B4 DE19758761 B4 DE 19758761B4
Authority
DE
Germany
Prior art keywords
quad
branching
block
coding
blocks
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.)
Expired - Fee Related
Application number
DE19758761A
Other languages
English (en)
Inventor
Hak-Leong Los Altos Ng
Xiaonong Cupertino Ran
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.)
National Semiconductor Corp
Original Assignee
National Semiconductor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Semiconductor Corp filed Critical National Semiconductor Corp
Priority to DE1997115075 priority Critical patent/DE19715075B4/de
Priority claimed from DE1997115075 external-priority patent/DE19715075B4/de
Application granted granted Critical
Publication of DE19758761B4 publication Critical patent/DE19758761B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • 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/57Motion estimation characterised by a search window with variable size or shape
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • 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/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Verfahren zum Intrakodieren eines Bildes, bei dem das Bild in Wurzelblöcke zerlegt wird, wobei für jeden Wurzelblock eine Quadverzweigungsunterteilung, die mehrere Blöcke verschiedener Größe aufweist, bestimmt wird, und die Blöcke kodiert werden, indem für jeden Block ein Vektor, der den Bildinhalt im Block anzeigt, bestimmt, ein Basisvektor, der von Vektoren für einen oder mehrere zuvor kodierte Blöcke in der Quadverzweigungsunterteilung abhängt, ausgewählt, und die Differenz zwischen Vektor und Basisvektor ermittelt und kodiert wird, gekennzeichnet dadurch, dass die Quadverzweigungsunterteilung für jeden Wurzelblock bestimmt wird, indem eine erste, einer ersten Quadverzweigungsstruktur zugeordnete Quadverzweigungsunterteilung für eine erste, den Wurzelblock repräsentierende Matrix, die erste Farbkomponenten von Pixeln im Wurzelblock enthält, bestimmt wird, eine zweite Matrix, die zweite Farbkomponenten von Pixeln im Wurzelblock enthält, in eine zweite, der ersten Quadverzweigungsstruktur zugeordnete Quadverzweigungsunterteilung unterteilt wird, und Blöcke der zweiten Quadverzweigungsunterteilung zusammengeführt werden, um eine dritte Quadverzweigungsunterteilung zu bilden, die einer zweiten Quadverzweigungsstruktur zugeordnet ist, die einen...

Description

  • Die Erfindung betrifft Verfahren zum Intrakodieren eines Bildes nach dem Oberbegriff des Anspruchs 1.
  • Viele Arten von Videokodierern komprimieren Videobilder, um die Menge an Daten zu reduzieren, die über digitale Kanäle übertragen oder in Speichern oder sonstigen Medien gespeichert werden. Typischerweise empfängt ein Videokodierer ein digitales Video-Einzelbild als Pixeltabellen, die eine Serie von Einzelbildern repräsentieren, die nacheinander wiedergegeben werden, um ein bewegliches Bild zu ergeben. Der Videokörper setzt die Pixeltabellen in kodierte Videodaten um, welche weniger Bits für ihren Ausdruck benötigen. Ein ideales Kodierverfahren für einen Videokodierer hat geringen Rechenaufwand, um schnelle Kodierung mit minimalem Prozessorschaltkreisaufwand zu ermöglichen, hohe Kompression, um die für die Übertragung oder Speicherung der Videodaten benötigte Bandbreite zu reduzieren, und erhält gleichwohl eine hohe Bildqualität nach dem Kodieren aufrecht. Solche idealen Kodierverfahren sind schwierig zu erzielen. Üblicherweise muß der Rechenaufwand erhöht und/oder die Bildqualität abgesenkt werden, um die Kompression zu verbessern. Kodierverfahren, welche die Kompression ohne entsprechende Zunahme des Rechenaufwandes verbessern oder die den Rechenaufwand verringern, ohne einen entsprechenden Verlust an Kompression oder Bildqualität mit sich zu bringen, werden benötigt.
  • Ein ideales Kodierverfahren existiert nicht. Für bestimmte Anwendungsfälle geeignete Kodierverfahren werden typischerweise entsprechend der Kompression ausgewählt, die für die verfügbare Bandbreite benötigt und von der verfügbaren Rechenleistung zur Verfügung gestellt werden kann. Ein Anwendungsfall, bei dem Video über einen Kanal mit sehr begrenzter Bandbreite übertragen wird, verwendet oft eine komplizierte Kodierung, um die Menge an Daten erheblich zu reduzieren, die benötigt wird, um akkurat ein Videobild zu übertragen. Dies erfordert Rechenressourcen hinreichender Leistung, um komplizierte Kodierungen bei der Bildrate des Videobildes auszuführen. Komplizierte Kodierungen können ungeeignet für Anwendungsfälle mit begrenzten oder von mehreren benutzten Rechenleistungsressourcen und einem Kanal mit relativ großer Übertragungsbandbreite sein.
  • Das Auswählen eines geeigneten Videokodierverfahrens für einen Software-Kodierer, der auf einer Mehrzahl von Plattformen mit unterschiedlichen Niveaus der verfügbaren Rechenleistung läuft, wirft zusätzliche Probleme auf. Wenn ein Kodierverfahren minimaler Schwierigkeit für eine Plattform niedriger Leistung geeignet ausgewählt wird, leidet die Videokompression oft, so daß die Übertragungskanalbandbreite überlastet werden kann (sie ist dann nicht in der Lage, die gewünschte Bildfrequenz einzuhalten), während die Rechenleistung von Plattformen höherer Leistung verschwendet wird. Wenn im Gegensatz dazu ein hochkomplexes Kodierverfahren verwendet wird, können Plattformen niedriger Leistung möglicherweise nicht in der Lage sein, Video mit der gewünschten Bildrate zu kodieren, und Übertragungskanalbandbreite kann verschwendet werden auf Kosten der Rechenleistung, die für andere Zwecke verwendet werden könnte.
  • Aus der IEEE Transactions an Image Processing, Vol. 3, Nr. 2, 1994, Seiten 207 bis 215 ist bekannt, eine ein Graustufenbild repräsentierende Pixelmatrix in eine Quadverzweigungsstruktur aufzuteilen und diese Struktur zu kodieren, wobei die Information über einen Pixel in dem Graustufenbild aus einer Komponente besteht.
  • Die IEEE Transactions an Image Processing, Vol. 5, Nr. 1, 1996, Seiten 4 bis 15, offenbart eine Baumstruktur im Zusammenhang mit Schwarz-Weiß-Bildern, wobei die Baumstruktur zur Strukturierung und Lokalisierung der Bildinformation in unterschiedliche Levels verwendet wird. Die Levels unterscheiden sich in ihrer Wichtigkeit bezüglich einer Bildrekonstruktion, wobei niedrigeren Levels bei der Bildrekonstruktion eine höhere Bedeutung zukommt.
  • Die Fernseh- und Kinotechnik, Nr. 5, 1994, Seiten 227 bis 237, offenbart eine Übersicht über den MPEG-2-Video-Standard, wobei im wesentlichen Algorithmen der Videokodierung vorgestellt werden.
  • DE 195 01 551 A1 offenbart eine Bewegungsvektor-Ermittlungseinrichtung. Bei einem farbigen Bild weist die Pixelmatrix aus mehreren Komponenten bestehende Einträge für jeweils einen Pixel auf, wobei die Komponenten in Kombination die Farbe des entsprechenden Pixels angeben. Eine Kodierung dieses farbigen Bildes ist mittels des Verfahrens nicht möglich, da die Kodierung mehrkomponentiger Einträge nicht vorgesehen ist.
  • Aus US 5 446 806 ist die Verwendung einer Quadtree-Verzweigung bei der Codierung eines Bildes in Form einer Pixelmatrix bekannt.
  • Unter anderem in Maragos, P. et al. "Two-Dimensional Linear Prediction and Its Application to Adaptive Predictive Coding of Images", in: IEEE TRANSACTIONS an ACOUSTICS, SPEECH and SIGNAL PROCESSING; Band ASSP-32, Heft 6, 1984, S. 1213–1229 wird eine ADPCM beschrieben, bei der ein Einzelbild dem "INTRAFRAME ADPCM" unterzogen wird, unter Berücksichtigung einer Prädiktion, sowie einer adaptiven Quantisierung. Es wird dort beschrieben, dass dabei die adaptive Prädiktion verwendet wird, um aus den bereits codierten Pixeln eines Bildes einen Schätzwert für das neu zu kodierende Pixel zu erhalten, so dass nur die Differenz zu diesem Schätzwert quantisiert und kodiert werden muss.
  • Aufgabe der Erfindung ist es daher, ein Verfahren nach dem Oberbegriff des Anspruchs 1 zu schaffen, das effizient ein farbiges Bild unter Verwendung der Quadverzweigungsstruktur kodiert.
  • Diese Aufgabe wird entsprechend den Merkmalen des Anspruchs 1 gelöst. Dadurch ist es möglich, ein farbiges Bild zu kodieren, dessen Information pro Pixel mehrere Komponenten aufweist, wobei die ersten Komponenten der Pixel in einer ersten Quadverzweigungsstruktur kodiert werden und eine weitere Komponente in einer weiteren Quadverzweigungsstruktur, die ein Unterbaum der ersten Quadverzweigungsstruktur ist, aufgeteilt und kodiert wird. Eine verbesserte Kompression ist möglich, da eine die weitere Komponente repräsentierende Kodierung Stämme der ersten Quadverzweigungsstruktur schafft, und nur die zusätzlichen Zweige in der ersten Quadverzweigungsstruktur kodiert werden müssen.
  • Vorteilhafte Weiterbildungen sind den Unteransprüchen zu entnehmen. Die Erfindung wird anhand der in den beigefügten Abbildungen dargestellten Ausführungsbeispiele näher beschrieben.
  • 1A bzw. 1B illustrieren eine Quadverzweigungsaufteilung eines Blocks und die zugeordnete Quadverzweigungsstruktur.
  • 2 illustriert Beziehungen zwischen Quadverzwiegungsaufteilungen und Quadverzweigungsstrukturen von drei Farbkomponenten in einem Kodierverfahren gemäß einer Ausführungsform.
  • 3 ist ein Flußdiagramm eines Intrakodierprozesses gemäß einer Ausführungsform.
  • 4 ist ein Flußdiagramm eines bekannten Interkodierprozesses.
  • 5A und 5B illustrieren einen Video-Kodierprozeß und einen Kodierer gemäß einer Ausführungsform.
  • 6A und 6B illustrieren einen Video-Kodierprozeß und einen Kodierer gemäß einer anderen Ausführungsform.
  • 7 zeigt Graphiken, die Prozentsätze von Interkodierlängen, die geringer sind als eine Schwelle sind, verwendete Intracodes und eine Reduktion in der Bitrate als Funktionen einer bei dem Kodierverfahren nach der 6A verwendeten Schwelle illustrieren.
  • 8 ist ein Flußdiagramm eines Prozesses, welcher die Kodierkomplexität gemäß der Anwendung eines Prozessors oder eines Kommunikationskanals ändert.
  • 9 illustriert die Beziehungen zwischen Kodierkomplexität, Bits-Bild (Kompression) und kodierter Bildqualität für einen Kodierprozeß gemäß einer Ausführungsform.
  • Ein Videobild besteht konventionellerweise aus einer Sequenz von Einzelbildern, welche Zeitpunkte in dem Videobild repräsentieren und die sequentiell wiedergegeben werden, um die Illusion der Bewegung zu bewirken. Jedes Einzelbild eines Videobildes kann digital durch Pixeltabellen repräsentiert werden, die eine oder mehrere zweidimensionale Matrizen von Pixelwerten umfassen, wobei jeder Pixelwert ein Charakteristikum einer Fläche (Bildelement oder Pixel) in dem Videobild zu einem Zeitpunkt entsprechend dem Einzelbild identifiziert. Beispielsweise hat in einer Wiedergabe eines Videoeinzelbildes, gewöhnlich als YUV-Farbwiedergabe bezeichnet, jedes Einzelbild drei entsprechende zweidimensionale Matrizen von Pixelwerten, wobei eine Matrix die Y-Komponenten (d. h. Luminanzen) der Pixel in dem Einzelbild repräsentiert und zwei Matrizen U- und V-Komponenten (d. h. Chrominanzen) von Pixeln in dem Einzelbild repräsentieren.
  • Das Kodieren setzt die Pixelmatrizenwerte in Codes um, welche weniger Bits benötigen als die Originalmatrizen, um diese auszudrücken. Das Videobild kann dann gespeichert oder übertragen werden, wobei weniger Speicherraum oder Bandbreite benötigt wird. Bei einer Art von Kodierprozeß, wie durch das Protokoll H.263 für Videophone definiert, ist jedes Einzelbild eines Videobildes entweder ein Intra-Einzelbild, das intrakodiert ist, oder ein Inter-Einzelbild, das interkodiert ist. Intrakodierung kodiert ein Einzelbild unter Verwendung nur der Pixelwerte für das Einzelbild und ist auf Standbilder und Einzelbilder oder Blöcke innerhalb eines beweglichen Bildes anwendbar. Interkodierung kombiniert Pixelwerte eines laufenden Einzelbildes mit Information von vorherigen Einzelbildern und ist generell auf bewegliche Bildkodierung anwendbar.
  • Während des Kodierens wird ein Einzelbild typischerweise in Wurzelblöcke aufgeteilt, die typischerweise 16 mal 16 oder 32 mal 32 Pixel umfassen, um die Berechnungsschwierigkeiten zu vermeiden, die von der Manipulation größerer Matrizen von Pixelwerten stammen können. Die Wurzelblöcke werden dann kodiert. US 5 446 806 beschreibt einen quadverzweigungsstrukturierten Kodierprozeß, der eine festgelegte Anzahl von Walsh-Transformationskoeffizienten anwendet, um den Inhalt der Blöcke (oder Unterblöcke) zu repräsentieren. Auf den Inhalt dieser Druckschrift wird ausdrücklich Bezug genommen. Gemäß einem Quadverzweigungsstrukturkodierprozeß werden Unterblöcke von einer vorbestimmten anfänglichen Aufteilung eines Wurzelblocks zusammengeführt, um einen größeren Unterblock zu bilden, wenn der Inhalt des größeren Unterblocks adäquat durch einige wenige Codewerte beschrieben werden kann.
  • 1A bzw. 1B zeigen eine beispielhafte Quad- oder Vierfachverzweigungsaufteilung 100 eines Blocks von Pixelwerten und die resultierende Quadverzweigungsstruktur 150 für den Block. Die Quadverzweigungsaufteilung 100 enthält Unterblöcke a bis s von Pixelwerten, die aus dem ursprünglichen Block durch einen Zusammenführungsprozeß ausgewählt werden. US 5 446 806 beschreibt einen Zusammenführungsprozeß, bei dem eine festgelegte Anzahl von Walsh-Transformationskoeffizienten den Inhalt jedes Unterblocks a bis s beschreibt und Blöcke zusammengeführt wurden zur Bildung von Unterblöcken a bis s, wenn die festgelegte Anzahl von Walsh-Transformationskoeffizienten für den zusammengeführten Block den Fehler pro Pixel um weniger als einen Schwellenwert erhöhte. Die Quadverzweigungsstruktur 150 besteht aus Zweigen, welche Knoten auf vier Niveaus 0 bis 3 verbinden, wobei jedes Niveau n einer vorgewählten Aufteilung des Blocks 100 in 4n Unterblöcke entspricht. Das Niveau 0 entspricht einer Aufteilung mit einem einzigen Unterblock, d. h. dem ursprünglichen Block, und das Aufteilen jedes Blocks in eine vorgewählte Aufteilung entsprechend einem Niveau (n-1) in vier kleinere Blöcke bildet die vorgewählte Aufteilung entsprechend jedes Niveau n. Die Aufteilung auf höchstem Niveau kann einen Pixelwert pro Block enthalten oder so viele Pixelwerte, wie es Koeffizienten gibt, um einen Block entsprechend einem Blattknoten der Quadverzweigungsstruktur 150 zu beschreiben.
  • Jeder Knoten in der Quadverzweigungsstruktur 150 identifiziert einen Block in einer vorgewählten Aufteilung entsprechend dem Niveau des Knotens. Knoten mit Zweigen zu einem nächsthöheren Niveau identifizieren Blöcke, die nicht in der Quadverzweigungsaufteilung 100 sind. Blattknoten der Quadverzweigungsstruktur 150 (d. h. Knoten ohne Zweige, die sich zu höheren Niveaus erstrecken) zeigen Blöcke a bis s an, die sich in der Quadverzweigungsaufteilung 100 befinden. Ein für den Wurzelblock erzeugter Quadverzweigungscode indiziert die Quadverzweigungsstruktur 150 und umfaßt Werte, welche den Inhalt der Blöcke beschreiben, zugeordnet den Blattknoten der Quadverzweigungsstruktur 150 (d. h. dem Inhalt der Blöcke a bis s).
  • Bei YUV-Farbvideo werden drei Komponenten Y (Luminanz), U und V (Chrominanzen) eines Wurzelbloks durch drei Matrizen von Pixelwerten repräsentiert. Matrizen für das Repräsentieren der Komponenten U und V enthalten oft weniger Pixelwerte als die Matrix, welche die V-Komponente des Wurzelblocks repräsentiert Beispielsweise hat bei einem bekannten YUV-4:1:1-Format eine Fläche in einem Einzelbild, das durch vier Y-Werte repräsentiert wird (normalerweise vier Pixel) nur einen U-Wert und einen V-Wert. Demgemäß wird ein 16-mal-16-Pixelwurzelblock durch eine 16-mal-16-Matrix von Y-Werten, eine 8-mal-8-Matrix von U-Werten und eine 8-mal-8-Matrix von V-Werten repräsentiert. Die Matrizen der Y-Werte, der U-Werte und der V-Werte haben zugeordnete Quadverzweigungsstrukturen, die hier als der Y-Baum, der U-Baum und der V-Baum bezeichnet werden.
  • Gemäß einem Aspekt der Erfindung soll der V-Baum für ein Einzelbild ein Unterbaum des U-Baums für das Einzelbild sein, der seinerseits ein Unterbaum des Y-Baums für das Einzelbild sein soll. 2 illustriert ein Beispiel der Beziehung zwischen einem V-Baum 235, einem U-Baum 225 und einem V-Baum 215 für ein Einzelbild und entsprechende Quadverzweigungsaufteilungen 230, 220 bzw. 210 einer 16-mal-16-Matrix von Y-Werten, einer 8-mal-8-Matrix von U-Werten und einer 8-mal-8-Matrix von V-Werten.
  • Die Voraussetzungen bezüglich des V-Baums 235, U-Baums 225 und V-Baums 215 vereinfachen das Kodieren eines Wurzelblocks, weil der sich verzweigende Y-Baum 235 den U-Baum 225 erzeugt und der sich verzweigende U-Baum 225 den V-Baum 215 erzeugt. Im einzelnen beginnt ein Kodierverfahren mit einer vorgewählten Aufteilung der Matrix von Y-Werten auf höchstem Niveau (beispielsweise Niveau 3) und bestimmt, welche Sätze von vier Blöcken in der auf höchstem Niveau liegenden Aufteilung zusammengeführt werden sollten. Das Zusammenführen bildet eine Zwischenaufteilung, die Blöcke von der vorgewählten Aufteilung höchsten Niveaus (beispielsweise Niveau 3) und Blöcke von einem nächstniedrigeren Niveau (beispielsweise Niveau 2) der vorgewählten Aufteilung enthält. Das Zusammenführen setzt sich fort unter Prüfen und Zusammenführen von Blöcken auf zunehmend niedrigeren Niveaus, bis keine weitere Zusammenführung mehr erforderlich ist und die Quadverzweigungsaufteilung 230 erreicht ist. Die Quadverzweigungsaufteilung 230 definiert die Struktur des V-Baums 235.
  • Der Y-Baum 235 seinerseits definiert eine beginnende Aufteilung 221, aus der die Aufteilung 220 und der U-Baum 225 bestimmt werden. Die Aufteilung 221 enthält Blöcke von U-Werten, zugeordnet dem Y-Baum 235. Wenn beispielsweise Block U vorbestimmte Aufteilungen entsprechend jedem Niveau des V-Baums 235 hat, identifizieren die Blattknoten des V-Baums 235 Blöcke in der Aufteilung 221. Wenn die Matrix von U-Werten eine geringere Zahl von Niveaus der vorbestimmten Aufteilungen hat, weil die U-Matrix kleiner ist, werden die Zweige des höchsten Niveaus 235 verzweigt, wenn der U-Baum 221 gebildet wird. Wenn beispielsweise die Quadverzweigungsaufteilung 230 eine 16-mal16-Matrix von V-Werten ist, enthält jeder Block g, h, i, j, o, p, q und r in der Aufteilung des Niveaus 3 der Y-Matrix ein Pixel. Die Aufteilung 220, die eine 8-mal-8-Pixelwertmatrix ist, hat keine Niveau-3-Aufteilung, da das Niveau 2 der vorbestimmten Aufteilung nur einen U-Wert pro Block hat. Das Verzweigen des dritten Niveaus vom Y-Baum 235 liefert eine Quadverzweigungsstruktur mit drei Niveaus, die der beginnenden Aufteilung 221 entspricht. Blockzusammenführungstests setzen vier Blöcke von demselben Niveau, um zu bestimmen, ob irgendein Satz von vier Blöcken in der Aufteilung 221 verbunden werden sollten. In 2 verbinden sich die Blöcke m, n, o' und s zur Bildung des Blockes m'.
  • Der V-Baum 215 wird aus einer beginnenden Verzweigung, die durch den U-Baum 225 definiert ist, bestimmt. Das Verbinden von Blöcken in der beginnenden Verzweigung erzeugt die Quadverzweigungsaufteilung 210, die der Quadverzweigungsstruktur des V-Baums 215 zugeordnet ist. In 2 verbinden sich Blöcke von V-Werten, zugeordnet den Blöcken a, b, c und d, zur Bildung des Blocks a'. In einer alternativen Ausführungsform der Erfindung soll der V-Baum 215 ein Unterbaum des Y-Baums 235 sein, und irgendein U-Baum 225 soll ein Unterbaum des V-Baums 215 sein. In noch einer anderen alternativen Ausführungsform sollen der V-Baum 215 und der U-Baum 225 Unterbäume vom Y-Baum 235 sein, nicht jedoch untereinander Unterbäume bilden.
  • Für natürliche Videos erzeugen die Unterbaumbeschränkungen wenig Verzerrung in dem dekodierten Video, weil die drei Farbkomponenten miteinander in Beziehung stehen. Wenn ein Block von Y-Werten ähnlich ist, sind die Chancen gut, daß U-Werte und V-Werte in dem Block hinreichend ähnlich sind, so daß das Kombinieren der Werte in einen einzigen Block keine große Verzerrung in dem kodierten Bild hervorruft. Die erforderliche Kodierschwierigkeit wird verringert, weil die Bestimmung von U-Bäumen und V-Bäumen aus einer entwickelten Quadverzweigung mit weniger möglichen zu überprüfenden Verbindungen beginnt. Die Kompression tendiert dahin, besser zu werden, weil ein den V-Baum repräsentierender Code Stämme vom U-Baum schafft und nur die zusätzlichen Zweige in dem U-Baum kodiert werden, um den U-Baum zu repräsentieren. In ähnlicher Weise liefert der U-Baum Stämme des Y-Baumes, und nur die zusätzlichen Zweige im Y-Baum werden kodiert. Bei der Alternative wird die Beziehung zwischen der ersten kodierten Quadverzweigungsstruktur und einer zweiten kodierten Quadverzweigungsstruktur durch Zweige indiziert, die von der ersten Quadverzweigungsstruktur entnommen oder dieser zugefügt werden, um die zweite Quadverzweigungsstruktur zu bilden.
  • Ein Vorteil der Unterbaumbeschränkungen besteht in verringerter Schwierigkeit der Dekodierungsberechnung. Da ein für Y-Werte zusammengefügter Block immer einen Satz von U- und V-Werten hat, kann, wenn eine Farbkonversion zur RGB-Domäne benötigt wird, die gesamte Fläche des Blocks mit einem einzigen RGB-Vektor gefüllt werden, und keine weitere Bedienungsüberprüfung oder Aufteilung ist erforderlich. Die Beschränkungen hinsichtlich der Quadverzweigungsstrukturen für die Farbkomponenten betreffen nicht nur YUV-Farbe, sondern sind auch bei anderen Farbformaten einschließlich RGB-Farben anwenbar.
  • Die Beschränkungen hinsichtlich der Quadverzweigungsstrukturen, welche Y-, U- und V-Matrizen für ein Einzelbild eines Videos beschreiben, sind auf Intrakodierung und Interkodierung anwendbar. Gemäß einem anderen Aspekt der Erfindung verbessert die Intrablockdifferentialimpulscodemodulation (DPCM) die Kompression von intrakodierten Blöcken mit oder ohne die Beschränkungen der Quadverzweigungen für Farbkomponentenmatrizen. Für Intra-Block-DPCM-Kodierung wird eine Differenz zwischen einem Basisvektor und Codevektor, welcher den Inhalt eines Blocks oder Unterblocks innerhalb eines Einzelbildes beschreibt, bestimmt, bevor der Codevektor quantisiert wird und die Entropie oder die Lauflänge kodiert werden. Wenn der Basisvektor richtig ausgewählt ist, ist die Differenz klein und die Kompression wird verbessert.
  • Ein Anwendungsbeispiel von Intra-Block-DPCM-Kodierung wird für die Quadverzweigung beschrieben, wo die strukturierte Walsh-Transformationskodierung auf den Block gemäß 1 angewandt wird, obwohl auch die Intra-Block-DPCM auf Intrakodierung angewandt wird mit oder ohne aufgeteilte Blöcke gemäß einer Quadverzweigungsstruktur oder Codevektoren, die Walsh-Transformationskoeffizienten sind. Quadverzweigungsstrukturierte Walsh-Transformationskodierung speichert eine feste Zahl von Walsh-Transformationskoeffizienten pro Blattknoten in einer Quadverzweigungsstruktur unabhängig von der Größe des Unterblocks, der durch den Blattknoten repräsentiert wird. Wenn beispielsweise die Unterblöcke a und g durch 4-mal-4- bzw. 2-mal-2-Matrizen von Pixelwerten repräsentiert werden, sind die Walsh-Transformationen der Blöcke a bzw. g 4-mal-4- bzw. 2-mal-2-Matrizen von Walsh-Transformationskoeffizienten. Ein einzelner Koeffizient w00 oder vier Koeffizienten w00, w01, w10 und w11 aus den Walsh-Transformationen können pro Blattknoten kodiert werden. Die kodierten Koeffizienten werden hier mit einem Codevektor W bezeichnet, und für das beispielhaft gewählte Kodierverfahren ist der Codevektor W gleich {w00} oder {w00, w01, w10, w11}. Der Codevektor W für einen Knoten a wird als Wa bezeichnet und ähnlich für die anderen Knoten. Ein beispielweiser Quadverzweigungscode stellt die Codevektoren in einer eindimensionalen Reihenfolge Wa, Wb, Wc, Wd, ...., Wr, Ws bereit, die einem Zickzackmuster durch die Unterblöcke in der Quadverzweigungsaufteilung 100 folgt, so daß die in dem Quadverzweigungscode aufeinanderfolgenden Codevektoren typischerweise nahe beieinander in dem Wurzelblock sind.
  • Eine beispielsweise Ausführung der DPCM-Intrakodierung verwendet einen Basisvektor W*, der mit demselben bekannten Wert für jeden Wurzelblock beginnt, seinen Wert jedoch während des Kodierens jedes Wurzelblocks ändert. Ein hier als eindimensionales DPCM bezeichnetes, als Beispiel gewähltes DPCM-Intrakodierverfahren umfaßt vier Schritte für jeden Unterblock x eines intrakodierten Blocks, (1) berechne Wx – W*, (2) quantisierte Wx – W* mit einem Quantisierer gleicher Schrittgröße, (3) setze W* gleich W* plus der quantisierte Wert Wx – W* und (4) kodiere den quantisierten Wert Wx – W* mit einem Entropie-Kodierer. Nachdem jeder Block kodiert ist, ist der Basisvektor W* gleich dem dekodierten Wert für den gerade kodierten Vektor Wx. Wenn der nächste Codevektor W(x + 1) eine Fläche nahe dem durch Wx repräsentierten Bereich repräsentiert, werden die kodierten Vektoren Wx und W(x + 1) oft ähnlich sein, und die Differenz W(x + 1) – Wx klein. Demgemäß komprimiert die Entropie-Kodierung effizient die quantisierten Differenzen.
  • 3 illustriert ein allgemeineres DPCM-Intrakodierverfahren, das bei 310 mit dem Auswählen eines Unterblocks x eines der Intrakodierung zu unterwerfenden Blocks beginnt. Die Reihenfolge, in der die Unterblöcke ausgewählt und kodiert werden, bestimmt die Information, die einem Dekoder verfügbar ist, um bei 320 den Basisvektor W* für nachfolgend kodierte Unterblöcke auszuwählen. In einer Ausführungsform der Erfindung hat der ausgewählte Basisvektor W* einen festliegenden, dem Kodierer wie auch dem Dekoder bekannten Wert für den ersten Unterblock jedes Wurzelblocks. Alternativ könnte der Basisvektor W* auf den festen Wert wenige häufig zurückgesetzt werden, beispielsweise zu Beginn jedes Einzelbildes. Einige Vorteile des Beginnens mit einem festen Basisvektor W* bestehen darin, daß keine Bits benötigt werden, um einen anfänglichen Basisvektor zu übertragen, und das Starten jedes Wurzelblocks mit dem festen Basisvektor setzt das Kodieren zurück und stabilisiert es durch Verringerung der Ausbreitung von Fehlern.
  • Nach dem anfänglich festgelegten Wert für den Basisvektor W* ändert sich der Basisvektor W* entsprechend den vorher kodierten Vektoren. Wenn beispielsweise die Codevektoren Wa bis Ws in dieser Reihenfolge übertragen werden, kann der Basisvektor W*, der für den Unterblock b ausgewählt wird, von dem Code des Vektors Wa abhängen. Der Basisvektor W*, ausgewählt für den Unterblock c, kann von den kodierten Vektoren Wa und Wb abhängen, und der Basisvektor für einen ausgewählten Unterblock kann generell abhängen von den Codevektoren, die vor dem Codevektor für den ausgewählten Unterblock bereitgestellt wurden. Eindimensionale DPCM-Intrakodierung verwendet dekodiert Vektoren W(x – 1) für den Basisvektor W*, wenn der Vektor Wx kodiert wird. Wenn die Reihenfolge a bis s einem Zickzackweg durch die Quadverzweigungsaufteilung 100 folgt, wird der Basisvektor W* oft, jedoch nicht immer ein Codevektor eines Unterblocks nahe dem gerade zu kodierenden Unterblock sein.
  • Ein zweidimensionales DPCM-Intrakodierverfahren wählt W* als eine Funktion der vorher kodierten Vektoren, die an den im Schritt 310 ausgewählten Unterblock angrenzen. Beispielsweise wird W* als gleich Wa für die Unterblöcke b und c gewählt, und W* wird als Wb, Wc oder ein gewichtetes Mittel aus Wa, Wb und Wc gewählt, wenn der Unterblock d kodiert wird. Beim zweidimensionalen DPCM-Intrakodieren wird der Basisvektor bezüglich geometrischer Nähe zu dem zu kodierenden Unterblock gewählt anstatt bezüglich der Nähe in der Codesequenz. Der Kodierer und der Dekodierer können irgendeine gewünschte vordefinierte Regel für das Auswählen des Basisvektors W* im Schritt 320 verwenden.
  • Sobald der Basisvektor W* gewählt ist, wird die Differenz Wx – W* im Schritt 330 bestimmt, diese Differenz wird im Schritt 340 quantisiert und im Schritt 350 entropiekodiert. Die Quantisierung im Schritt 340 erfolgt unter Anwendung einer gleichförmigen Schrittgröße, welche die Differenz Wx – W* durch eine feste Schrittgröße teilt und das Resultat bis auf eine festgelegte Anzahl von Bits abschneidet. Gleiche Schrittgrößenquantisierung liefert ein einfaches Quantisierverfahren, das in Kombination mit Entropiekodierung die Videodaten effizient komprimiert. Die Entropiekodierung kann beispielsweise die Huffman-Kodierung oder arithmetische Kodierung sein. Nach der Entropiekodierung 350 wird die DPCM-Intrakodierung des Wurzelblocks fortgesetzt, indem bei 310 ein anderer Unterblock gewählt wird, oder sie wird nach dem letzten Unterblock beendet.
  • Intrakodierte Einzelbilder sind solche, bei denen alle Wurzelblöcke intrakodiert sind. Interkodierte Einzelbilder können einige interkodierte Wurzelblöcke und einige intrakodierte Wurzelblöcke haben. Interkodierung eines Wurzelblocks beginnt gewöhnlich mit der Bewegungsabschätzung, wobei nach einem vorher dekodierten Einzelbild bezüglich eines prädiktiven Blocks gesucht wird, der sich eng an das laufende Einzelbild anpaßt. Wenn einmal ein solcher prädiktiver Block für den Wurzelblock gefunden ist, kann ein quadverzweigungsstrukturierter Kodierprozeß oder irgendein anderer Kodierprozeß die Differenz zwischen dem Wurzelblock des prädiktiven Blocks kodieren. Idealerweise enthält ein kodierter Differenzblock ausschließlich oder fast nur Nullen oder eine andere Kombination von Werten, die effizient komprimiert sind. In einigen Fällen jedoch, wenn die Bewegungsabschätzung keinen gut passenden prädiktiven Block findet, resultiert geringe oder gar keine Kompression.
  • 4 illustriert ein relativ einfaches Kodierverfahren 400, das die Interkodierung 410 bei jedem Wurzelblock eines Intereinzelbildes ausführt und bei 420 den resultierenden Intercode speichert. Das Kodierverfahren 400 verwendet die Intercodes und die Bewegungsvektoren, welche die prädiktiven Blöcke identifizieren, unabhängig von dem resultierenden Grad der Kompression. Die Anwendungen von Kodierverfahren 400 umfassen einen Videokodierer, der einen Ausgang von einer Videokamera empfängt und komprimiertes Videobild in einem Datenpuffer oder einem anderen Speicher eines Speichermediums, wie einer Festplatte oder einer optischen Platte speichert. Die komprimierten Videodaten können auch über einen Kanal übertragen werden, beispielsweise nach Speicherung der komprimierten Daten in einem Videodatenpuffer. In Fällen, wo ein Videobild sich schnell ändert, kann das Kodierverfahren 400 möglicherweise keine große Kompression und Speicherung bewirken, oder die verfügbare Bandbreite kann ausgeschöpft sein, bevor ein Videobild vollständig ist.
  • 5A und 5B illustrieren ein Videokodierverfahren 500, das eine bessere Kompression liefert als Kodierverfahren 400 bzw. einen Videokodierer 550, der das Videokodierverfahren 500 implementiert. Das Videokodierverfahren 500 arbeitet an Blöcken eines Intereinzelbildes, gespeichert in einem Speicher 560. In anfänglichen Schritten 510 und 520 des Videokodierverfahrens 500 interkodieren bzw. intrakodieren Kodierelemente 570 bzw. 574 im Intercode (Schritt 510) bzw. Intracode (Schritt 520) einen Wurzelblock. Kodierelemente 570 und 575 können getrennte Schaltkreise sein, welche unabhängig die jeweiligen Kodierprozesse ausführen oder Software-Prozesse, die sequentiell von einem Prozessor ausgeführt werden, und die Kodierschritte 510 und 520 werden entweder seriell oder parallel ausgeführt, abhängig von den Fähigkeiten des Videokodierers 550. Da die Intrablockkodierung dieselbe für Intereinzelbilder ist, kann Kodierelement 575 auch Blöcke der Intraeinzelbilder kodieren. Die Kodierelemente 570 und 575 liefern in einem dekodierten Bild etwa gleiche Qualität. Beispielsweise halten äquivalente Quantisierungsschrittgrößen (und Zusammenfügungsschwellen für Quadverzweigungskodierung) ähnliche Verzerrungspegel in dekodierten Bildern.
  • Ein Größenkomparator 580 vergleicht im Schritt 530 einen Intercode vom Kodierelement 570 mit einem Intracode vom Kodierelement 575, um festzustellen, welcher der beiden Codes kürzer ist. Der Größenkomparator 580 erzeugt ein Steuerbit, das einem Multiplexer 590 angelegt wird, um auszuwählen, ob der Intercode von Kodierelement 570 oder der Intracode von Kodierelement 575 in einen kodierten Bitstrom vom Videokodierer 550 eingefügt wird. Das Steuerbit wird ebenfalls in den Bitstrom eingefügt, um einem Dekodierer anzuzeigen, ob der Block intrakodiert oder interkodiert ist. Der Schritt 540 oder 545 speichert denjenigen der Codes, der die wenigsten Bits enthält, und der nicht verwendete Code wird verworfen. Das Kodierverfahren 500 kodiert jeden Wurzelblock zweimal (Schritte 510 und 520) und benötigt demgemäß mehr Berechnungen als das Kodierverfahren 400, das einfach einen Intercode für jeden Wurzelblock festlegt. Das Kodierverfahren 500 verbessert jedoch die mittlere Kompression, weil kleinere Intracodes manchmal größere Intercodes ersetzen.
  • 6A bzw. 6B illustrieren ein Kodierverfahren 600 bzw. einen Videokodierer 670, mit dem das Kodierverfahren 600 ausgeführt wird. Der Videokodierer 670 enthält viele gleiche Elemente wie der Videokodierer 550 aus 5B, und die obige Beschreibung der Elemente des Videokodierers 550 liest sich auch auf Elemente des Videokodierers 670, welche dasselbe Bezugszeichen haben. Der Videokodierer 670 enthält auch einen Schwellenkomparator 685, der im Schritt 620 eine Schwellenlänge tH mit der Länge (in Bits) eines Intercode von Interkodierelement 570 vergleicht. Wenn der Intercode länger ist als die Schwellenlänge tH, entsperrt der Schwellenkomparator 685 das Kodierelement 575, das im Schritt 640 den Wurzelblock intrakodiert, und dann vergleicht der Größenkomparator 680 im Schritt 650 die Längen des Intracode und des Intercode. Nach dem Vergleich im Schritt 650 wird im Schritt 630 bzw. 660 der kürzeste von Intracode und Intercode verwendet.
  • Wenn der Intercode kürzer ist als die Schwellenlänge tH, wird das Kodierelement 575 gesperrt, und der Größenkomparator 680 erzeugt automatisch ein Steuerbit zur Anzeige, das der Block interkodiert ist. Multiplexer 590 wählt den Intercode, und das Kodieren des Blocks ist beendet, ohne je den Intracode für den Block zu berechnen. In einer Ausführungsform, wo die Kodierelemente 570 und 575 sequentiell arbeiten, erhöht das Weglassen des Intradodierens für bereits intrakodierte Blöcke die Kodiergeschwindigkeit des Videokodierers 670 relativ zum Videokodierer 550.
  • Die Komplexität (d. h. die erforderlich Anzahl von Berechnungen) für das Kodierverfahren 600 hängt von der Anzahl von Wurzelblöcken ab, für die sowohl Interkodierung 610 als auch Intrakodierung 640 ausgeführt werden. Die Schwellenlänge tH steuert die Komplexität des Videokodierers 670 und kann in einem Software-Kodierer eingestellt werden, um in einer Mehrzahlunterschiedlicher Plattformen mit unterschiedlichen Größen der verfügbaren Rechenleistung und Übertragungsbandbreite angewandt zu werden.
  • 7 zeigt eine Aufzeichnung 710 des Prozentsatzes von Intercodes, die länger sind als die Schwellenlänge tH. In einem Extrem ist die Schwellenlänge tH null, so daß 100% der Intercodes länger sind als die Schwelle tH, und ein Videokodierer festlegt, daß für jeden Wurzelblock ein Intercode und ein Intracode gebildet werden. Diese Schwellenlänge tH ist für Software-Kodierer nützlich, die auf Plattformen laufen, welche mit Hochleistungsprozessoren bestückt sind und mit geringen Bandbreiten aufweisenden Übertragungskanälen arbeiten, beispielsweise ein leistungsstarker Arbeitsplatzrechner, der mit herkömmlichen Telefonleitungen verbunden ist und Software-Videophonanwendungen ausführt. Im anderen Extremfall ist die Schwelle tH sehr groß, und der Videokodierer 670 interkodiert nur Wurzelblöcke von Zwischenbildern. Dies ist am besten für einen Computer geeignet, der nicht leistungsstark ist, jedoch mit einem Übertragungskanal hoher Bandbreite, wie dem IsoEthernet, verbunden ist. In unterschiedlichen Systemen kann die Schwellenlänge tH voreingestellt werden, je nach den Möglichkeiten des Videokodierers, der das Kodierverfahren 600 ausführt.
  • Die Aufzeichnung 720 in 7 zeigt einen Prozentsatz, der angibt, wie groß das Verhältnis der Zahl von Intracodes vom Vidokodierer 670 zur Anzahl von Intracodes vom Videokodierer 550 ist. Wenn die Schwellenlänge tH null ist, bestimmt der Videokodierer 670 einen Intracode und einen Intercode für jeden Wurzelblock und ist in der Lage, alle kürzeren Intracodes zu finden, die vom Videokodierer 550 gefunden werden. Wenn die Schwellenlänge tH erhöht wird, berechnet der Videokodierer 670 keinen Intracode für jeden Block, und der Videokodierer 670 liefert weniger Kompression als der Videokodierer 550, weil Videokodierer 670 einige der kürzeren Intracodes berechnet. Die Aufzeichnung 730 zeigt den Prozentsatz der Kompressionsverbesserung, erzielt vom Videokodierer 550, der auch von dem Videokodierer 670 erreicht wird. Die Aufzeichnung 710 ist konkav, während die Aufzeichnungen 720 und 730 konvex sind. Demgemäß eliminiert eine Schwellenlänge tH0, die sehr wenig Verlust an Kompression bewirkt, das Intrakodieren von vielen Blöcken.
  • Bei den meisten Videokonferenzsystemen ändert sich die Ballance zwischen der Rechenleistung und der verfügbaren Bandbreite für Videodaten, und keine Schwellenlänge tH paßt immer zu solchen Systemen. Gemäß einem Aspekt der Erfindung, dargestellt in 8, überprüft ein Rückkopplungspfad 800 periodisch im Schritt 810 den Prozessor und die verwendete Bandbreite und regelt dann im Schritt 820 oder 830 die Schwellenlänge tH, die beim Kodierverfahren 600 verwendet wird nach, um bei einer optimalen Rechenleistung zu arbeiten, welche den Prozessor- und die Bandbreitenlasten zum Ausgleich bringt. Der Rückkopplungspfad 800 kann einmal ausgeführt werden, bevor jeder Wurzelblock kodiert wird, wenn das Kodierverfahren 600 angewandt wird. Alternativ wird der Rückkopplungspfad 800 in regelmäßigen Zeitintervallen oder in anderen Intervallen einmal pro Einzelbilddaten ausgeführt.
  • Zur Überprüfung bezüglich Bandbreitenengpässen kann der Videokodierer die Menge an Daten überprüfen, die in einem Videodatenpuffer gespeichert sind, um festzulegen, ob die Bandbreite des Übertragungskanals ausreicht, um die komprimierten Daten, wie erzeugt, zu übertragen. Wenn der Videodatenpuffer nahezu voll ist, wird die Schwellenlänge tH im Schritt 830 abgesenkt, um die Rechenleistung und Kompression zu steigern. Alternativ wird, wenn der Videodatenpuffer Platz für mehr Daten hat und die Prozessorausnutzung hoch ist, die Schwellenlänge tH erhöht, um die Rechenleistung zu verringern.
  • Einige Prozessoren haben einen Ausnutzungsgradindex, der in einem Register zur Anzeige des Prozessorauslastungsgrades gespeichert ist. Solche Auslastungsindizes, wenn verfügbar, können direkt gelesen werden, wenn im Schritt 810 nach Engpässen gesucht wird. Alternativ haben Betriebssysteme wie Windows NT und Windows 95 für den Benutzer zugängliche Register, die den Auslastungsgrad des Prozessors anzeigen.
  • Bei älteren Systemen, wo der Prozessorauslastungsgrad schwierig zu bestimmen ist, kann das Verfahren 800 auch nur den Sendepuffer überprüfen, um die Kodierrate mit der Übertragungsrate zu vergleichen. Wenn die Kodierrate höher ist (d. h. der Sendepuffer nahezu voll ist), wird die Rechenleistung erhöht, um eine optimale Rechenleistung für die verfügbare Übertragungsrate zu wählen. Wenn die Kodierrate niedriger ist (d. h. der Sendepuffer leer ist), wird die Rechenleistung verringert, um die Verwendung der verfügbaren Bandbreite zu maximieren oder die mögliche Minimalrechenleistung für den Kodierprozeß zu erreichen.
  • Das Ändern der Schwellenlänge tH ändert nicht das Format des resultierenden Intercode oder die Qualität des durch einen Code erreichten Bildes. Demgemäß ist die Schwellenlänge tH irrelvant für einen Dekodierer und braucht nicht übertragen zu werden. Das Ändern der Schwellenlänge tH nimmt lediglich einen Ausgleich zwischen der Kompression (der Anzahl von Bits in dem Code) und der Rechenleistung vor (oder der Anzahl von für das Kodieren benötigten Berechnungen). Das Ändern der Rechenleistung eines Kodierverfahrens ohne Änderung des Codeformats oder der Bildqualität wird auf anderem Weg als der Änderung der Schwellenlänge tH erreicht, die festlegt, ob Intrakodierung versucht werden sollte. Beispielsweise bestimmt die Größe eines Suchfensters bei der Bewegungsabschätzung eine Beeinflussung des Kodierrechenaufwandes. Ein großes Suchfenster enthält mehr zu untersuchende Punkte und benötigt deshalb mehr Berechnungen. Alternativ können Bewegungsabschätzverfahren zwischen dem Suchen jedes Punktes in einem Suchfenster umschalten auf eine hierarchische Suchtechnik, die nur ausgewählte Punkte in dem Suchfenster untersucht. Generell verbessern mehr Suchpunkte die Chance, den besten prädiktiven Block zu finden und die Kompression auf Kosten zusätzlicher Berechnungen zu verbessern. Das Ändern des Verfahrens oder des Umfangs der Suche nach einem prädiktiven Block während der Bewegungsabschätzung ändert nicht das Format der Codes oder die Qualität des Bildes.
  • Wenn eine weitere Verbesserung der Kompression benötigt wird, kann Bildqualität geopfert werden, um dafür die Bitrate zu reduzieren. Beispielsweise können die Quantisierungsschrittgrößen erhöht werden, um die mittlere Anzahl von Bits pro Einzelbild zu verringern. 9 zeigt eine dreidimensionale Graphik, welche den Rechenaufwand, die mittlere Zahl von Bits pro Einzelbild und das Spitzensignal/Rausch-Verhältnis (PSNR) für das oben beschriebene Kodierverfahren 600 in Beziehung setzt. Ein Software-Kodierer kann die Parameter des Kodierverfahrens einstellen, um den Rechenaufwand, die Bitrate, die Bildqualität oder eine Kombination dieser drei abhängig von der Anwendung des Kodierers aufrechtzuerhalten.
  • Kurven 910 und 915 sind Kurven konstanten Rechenaufwands. Kurve 910 ist der maximale Rechenaufwand, der dann benötigt wird, wenn die Schwelle tH bei null ist. Die Linie 915 zeigt minimalen Rechenaufwand, der auftritt, wenn die Schwellenlänge tH hoch ist. Eine gewünschte Bitrate und PSNR können durch angemessene Auswahl des Rechenaufwands erzielt werden, vorausgesetzt, daß die gewünschte Bitrate und PSNR innerhalb des Bereichs der Oberflächenbegrenzung durch die Kurven 910 und 915 liegen. Sobald einmal die Kurve 910 maximalen Rechenaufwands erreicht ist, kann PSNR abgesenkt werden, um die gewünschte Bitrate zu erreichen. Der Rechenaufwand innerhalb des Bereichs, der von der Maximalkurve und der Minimalkurve der Linien 910 bzw. 915 vorgegeben ist, kann gewählt werden und aufrechterhalten werden durch Einstellen der Bitrate und/oder des PSNR. Die Kurven 920, 922, 924 und 926 zeigen, wie der Rechenaufwand und/oder Bitrate sich für eine konstante Bildqualität (PSNR) ändern, und die Kurven 930, 932, 934 und 936 zeigen, wie der Rechenaufwand und/oder die Qualität sich für eine konstante Bitrate änderten. Gemäß einem Aspekt der Erfindung fügt der Kodierrechenaufwand einen zusätzlichen Freiheitsgrad hinzu, der einstellbar ist, um die Ziele der Begrenzungen eines Videokodierers zu erreichen.

Claims (1)

  1. Verfahren zum Intrakodieren eines Bildes, bei dem das Bild in Wurzelblöcke zerlegt wird, wobei für jeden Wurzelblock eine Quadverzweigungsunterteilung, die mehrere Blöcke verschiedener Größe aufweist, bestimmt wird, und die Blöcke kodiert werden, indem für jeden Block ein Vektor, der den Bildinhalt im Block anzeigt, bestimmt, ein Basisvektor, der von Vektoren für einen oder mehrere zuvor kodierte Blöcke in der Quadverzweigungsunterteilung abhängt, ausgewählt, und die Differenz zwischen Vektor und Basisvektor ermittelt und kodiert wird, gekennzeichnet dadurch, dass die Quadverzweigungsunterteilung für jeden Wurzelblock bestimmt wird, indem eine erste, einer ersten Quadverzweigungsstruktur zugeordnete Quadverzweigungsunterteilung für eine erste, den Wurzelblock repräsentierende Matrix, die erste Farbkomponenten von Pixeln im Wurzelblock enthält, bestimmt wird, eine zweite Matrix, die zweite Farbkomponenten von Pixeln im Wurzelblock enthält, in eine zweite, der ersten Quadverzweigungsstruktur zugeordnete Quadverzweigungsunterteilung unterteilt wird, und Blöcke der zweiten Quadverzweigungsunterteilung zusammengeführt werden, um eine dritte Quadverzweigungsunterteilung zu bilden, die einer zweiten Quadverzweigungsstruktur zugeordnet ist, die einen Unterbaum der ersten Quadverzweigungsstruktur bildet und durch Entfernen von Zweigen aus der ersten Quadverzweigungsstruktur gebildet wird.
DE19758761A 1996-04-11 1997-04-11 Verfahren zum Intrakodieren eines von einer Pixelmatrix gebildeten Bildes Expired - Fee Related DE19758761B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE1997115075 DE19715075B4 (de) 1996-04-11 1997-04-11 Verfahren zum Kodieren eines von einer Pixelmatrix gebildeten Bildes

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/631,652 1996-04-11
US08/631,652 US6005981A (en) 1996-04-11 1996-04-11 Quadtree-structured coding of color images and intra-coded images
DE1997115075 DE19715075B4 (de) 1996-04-11 1997-04-11 Verfahren zum Kodieren eines von einer Pixelmatrix gebildeten Bildes

Publications (1)

Publication Number Publication Date
DE19758761B4 true DE19758761B4 (de) 2009-06-18

Family

ID=24532148

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19758761A Expired - Fee Related DE19758761B4 (de) 1996-04-11 1997-04-11 Verfahren zum Intrakodieren eines von einer Pixelmatrix gebildeten Bildes

Country Status (3)

Country Link
US (1) US6005981A (de)
KR (1) KR970073151A (de)
DE (1) DE19758761B4 (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6633611B2 (en) * 1997-04-24 2003-10-14 Mitsubishi Denki Kabushiki Kaisha Method and apparatus for region-based moving image encoding and decoding
EP0998810A1 (de) * 1998-05-20 2000-05-10 Koninklijke Philips Electronics N.V. Kodierung von blockstrukturierten daten
AUPP366598A0 (en) * 1998-05-22 1998-06-18 Canon Kabushiki Kaisha Deriving polygonal boundaries from quadtree representation
US6256415B1 (en) * 1998-06-10 2001-07-03 Seiko Epson Corporation Two row buffer image compression (TROBIC)
US6226636B1 (en) * 1998-11-20 2001-05-01 Philips Electronics North America Corp. System for retrieving images using a database
US6389417B1 (en) * 1999-06-29 2002-05-14 Samsung Electronics Co., Ltd. Method and apparatus for searching a digital image
KR100361340B1 (ko) * 2000-05-15 2002-12-05 엘지전자 주식회사 씨피유 클럭 제어 방법
JP2003143609A (ja) * 2001-08-21 2003-05-16 Canon Inc 画像処理装置、画像処理方法、記録媒体及びプログラム
CN1723706B (zh) * 2003-01-07 2010-09-22 汤姆森特许公司 用于宏块分割部分的混合块间/块内编码的装置和方法
US7310445B2 (en) * 2003-11-26 2007-12-18 International Business Machines Corporation Classification of image blocks by region contrast significance and uses therefor in selective image enhancement in video and image coding
US7564874B2 (en) 2004-09-17 2009-07-21 Uni-Pixel Displays, Inc. Enhanced bandwidth data encoding method
US20060215755A1 (en) * 2005-03-24 2006-09-28 Mediatek Incorporation Video encoding methods and systems for battery-powered apparatus
JP2007166039A (ja) * 2005-12-09 2007-06-28 Matsushita Electric Ind Co Ltd 画像符号化装置
US8019179B2 (en) * 2006-01-19 2011-09-13 Qualcomm Incorporated Hand jitter reduction for compensating for linear displacement
US7970239B2 (en) 2006-01-19 2011-06-28 Qualcomm Incorporated Hand jitter reduction compensating for rotational motion
US8120658B2 (en) * 2006-01-19 2012-02-21 Qualcomm Incorporated Hand jitter reduction system for cameras
JP4555257B2 (ja) * 2006-06-06 2010-09-29 パナソニック株式会社 画像符号化装置
US8270469B2 (en) * 2006-12-15 2012-09-18 Precoad Inc. Encoding video at multiple resolution levels
KR101624649B1 (ko) * 2009-08-14 2016-05-26 삼성전자주식회사 계층적인 부호화 블록 패턴 정보를 이용한 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
US8503539B2 (en) 2010-02-26 2013-08-06 Bao Tran High definition personal computer (PC) cam
TWI757963B (zh) 2010-04-13 2022-03-11 美商Ge影像壓縮有限公司 樣本區域合併技術
KR102696978B1 (ko) 2010-04-13 2024-08-20 지이 비디오 컴프레션, 엘엘씨 샘플 배열 멀티트리 세부분할에서 계승
EP2947884B1 (de) 2010-04-13 2019-07-24 GE Video Compression, LLC Videocodierung mit bildunterteilungen in multipler baumstruktur
KR101447796B1 (ko) 2010-04-13 2014-10-07 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 평면 간 예측
CN106131557A (zh) * 2010-06-07 2016-11-16 数码士有限公司 解码高分辨率图像的方法和装置
US8488890B1 (en) * 2010-06-11 2013-07-16 Nvidia Corporation Partial coverage layers for color compression
EP2942957A1 (de) * 2010-07-02 2015-11-11 HUMAX Holdings Co., Ltd. Vorrichtung zur decodierung von bildern zur intraprädiktion
AU2011308154B2 (en) * 2010-09-30 2015-10-08 Samsung Electronics Co., Ltd. Video encoding method for encoding hierarchical-structure symbols and a device therefor, and video decoding method for decoding hierarchical-structure symbols and a device therefor
US9848197B2 (en) * 2011-03-10 2017-12-19 Qualcomm Incorporated Transforms in video coding
WO2015006245A1 (en) * 2013-07-08 2015-01-15 Sony Corporation Base color merging for multi-stage base color and index map (mbcim) for rext
JP5755781B2 (ja) * 2014-05-07 2015-07-29 フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン 平面間予測
WO2018142903A1 (en) * 2017-01-31 2018-08-09 Sharp Kabushiki Kaisha Systems and methods for partitioning a picture into video blocks for video coding
EP3742403A4 (de) * 2018-01-19 2021-03-17 Panasonic Intellectual Property Corporation of America Verfahren zur codierung dreidimensionaler daten, verfahren zur decodierung dreidimensionaler daten, vorrichtung zur codierung dreidimensionaler daten und vorrichtung zur decodierung dreidimensionaler daten
JP7273339B2 (ja) * 2019-06-24 2023-05-15 日本電信電話株式会社 画像符号化方法、及び画像復号方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19501551A1 (de) * 1994-01-21 1995-08-03 Mitsubishi Electric Corp Bewegungsvektor-Ermittlungseinrichtung, welche dazu in der Lage ist, sich einer Mehrzahl von Voraussagearten anzupassen
US5446806A (en) * 1993-11-15 1995-08-29 National Semiconductor Corporation Quadtree-structured Walsh transform video/image coding

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4944023A (en) * 1987-05-19 1990-07-24 Ricoh Company, Ltd. Method of describing image information
US4811112A (en) * 1987-07-24 1989-03-07 American Telephone And Telegraph Company, At&T Bell Laboratories Vector DPCM image coding method and apparatus
US5021971A (en) * 1989-12-07 1991-06-04 Unisys Corporation Reflective binary encoder for vector quantization
US5509089A (en) * 1993-09-09 1996-04-16 Intel Corporation Method and system for encoding images using temporal filtering

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446806A (en) * 1993-11-15 1995-08-29 National Semiconductor Corporation Quadtree-structured Walsh transform video/image coding
DE19501551A1 (de) * 1994-01-21 1995-08-03 Mitsubishi Electric Corp Bewegungsvektor-Ermittlungseinrichtung, welche dazu in der Lage ist, sich einer Mehrzahl von Voraussagearten anzupassen

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
AVERBUSH,A.; LAZAR,D.; ISRAELI,M.: Image compression using wavelet transform and multiresolutiondecomposition. In: IEEE Transactions on Image Processing, Vol. 5, Nr. 1, 1996, S. 4-15 *
MARAGOS,P.; SCHAFER,R.; MERSEREAU,M.: Two-Dimensional Linear Prediction and Its Application to Adaptive Predictive Coding of Images. In: IEEE TRANSACTIONS on ACOUSTICS, SPEECH, and SIGNAL PROCESSING, Vol. ASSP-32, No. 6, 1984, S. 1213-1229 *
SHUSTERMAN,E. FEDER,M.: Image compression via quadtree decomposition algorithms. In: IEEE Transactions on Image Processing, Vol. 3, Nr. 2, 1994, S. 207-215 AVERBUSH,A. LAZAR,D. ISRAELI,M.: Image compression using wavelet transform and multiresolutiondecomposition. In: IEEE Transactions on Image Processing, Vol. 5, Nr. 1, 1996, S. 4-15 TEICHNER,D.: Der MPEG-2-Standard. In: Fernseh- und Kino-Technik, Nr. 5, 1994, S. 227-237 MARAGOS,P. SCHAFER,R. MERSEREAU,M.: Two-Dimensional Linear Prediction and Its Application to Adaptive Predictive Coding of Images. In: IEEE TRANSACTIONS on ACOUSTICS, SPEECH, and SIGNAL PROCESSING, Vol. ASSP-32, No. 6, 1984, S. 1213-1229
SHUSTERMAN,E.; FEDER,M.: Image compression via quadtree decomposition algorithms. In: IEEE Transactions on Image Processing, Vol. 3, Nr. 2, 1994, S. 207-215 *
TEICHNER,D.: Der MPEG-2-Standard. In: Fernseh- und Kino-Technik, Nr. 5, 1994, S. 227-237 *

Also Published As

Publication number Publication date
KR970073151A (ko) 1997-11-07
US6005981A (en) 1999-12-21

Similar Documents

Publication Publication Date Title
DE19758761B4 (de) Verfahren zum Intrakodieren eines von einer Pixelmatrix gebildeten Bildes
DE69333288T2 (de) Verbesserte vektorquantisierung
DE69738494T2 (de) Videokodierungs- und Videodekodierungsvorrichtung
DE69130214T2 (de) Bilddatenkompression mit adaptiver Blockgrössenauswahl
DE69633129T2 (de) Waveletbaum-bildcoder mit überlappenden bildblöcken
DE69432142T2 (de) Verfahren und vorrichtung zur effizienten transkodierung
DE69116869T2 (de) Digitale bildkodierung mit einer zufallsabtastung der bilder
DE69233411T2 (de) Verfahren und Einrichtung zur Kompression von sich bewegenden Videobildern mit adaptiver Bitzuordnung und Quantisierung
DE69606441T2 (de) Videodatenkodierer und -dekodierer
DE60305325T2 (de) System und verfahren zur ratenverzerrungsoptimierten datenpartitionierung zur videocodierung unter verwendung von rückwärtsadaption
DE10190285B4 (de) Verfahren und System zur Verarbeitung von komprimierten Videosignalen
DE69937462T2 (de) Effiziente macroblockheaderkodierung zur videokompression
DE69332584T2 (de) Verbesserte vorverarbeitung und nachverarbeitung von vektorquantifizierung
DE69425047T2 (de) Adaptives variables längenkodierungs- und -dekodierungsverfahren für bilddaten
DE60125301T2 (de) Videosignaltranskodierung
DE69810669T2 (de) Verfahren zur rechnerisch graziösen Degradierung in einem audio-visuellen Kompressionssystem
DE69805099T2 (de) Verbesserte videocodierung und decodierung unter verwendung von adaptiven blockparametern für codierte/uncodierte blöcke
DE10300048B4 (de) Verfahren und Vorrichtung zur Bildcodierung und -decodierung
DE69635369T2 (de) Videokodierungsvorrichtung
DE19704439C2 (de) Verfahren und Vorrichtung zur Bewegungsschätzung in einem digitalen Videocodierer unter Verwendung von Trajektorien
DE69516734T2 (de) Bildverarbeitungsverfahren und -gerät
DE69624669T2 (de) Videokodierer und -dekodierersystem und -methoden
DE69805228T2 (de) Videosignalkodierung mit adaptiver Quantisierung
DE602004001993T2 (de) Transformations basiertes restbewegungsrahmen kodierungsverfahren mit übervollständiger basis und zugehörige vorrichtung zur videokompression
DE19739266B4 (de) Verfahren und Vorrichtung zum Kodieren binärer Formen

Legal Events

Date Code Title Description
Q172 Divided out of (supplement):

Ref document number: 19715075

Country of ref document: DE

Kind code of ref document: P

8110 Request for examination paragraph 44
AC Divided out of

Ref document number: 19715075

Country of ref document: DE

Kind code of ref document: P

AC Divided out of

Ref document number: 19715075

Country of ref document: DE

Kind code of ref document: P

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee