-
Die
Erfindung betrifft Bildverarbeitungssysteme und insbesondere Bildverarbeitungssysteme, welche
waveletbasierte Kodierungstechniken verwenden.
-
HINTERGRUND
DER OFFENBARUNG
-
Datenkompressionssysteme
sind nützlich zur
Darstellung von Information mit einer minimalen Anzahl von Bits
so genau wie möglich
und daher zum Minimieren der Menge an Daten, welche in einem Informationsspeicher
oder einem Übertragungssystem gespeichert
oder übertragen
werden müssen.
Eines der primären
Kompressionsmittel, welches im Stand der Technik verwendet wird,
entfernt redundante Information aus den Originaldaten ohne die Qualität der dekomprimierten
Daten verglichen mit den Originaldaten signifikant zu beeinflussen.
-
Eine
solche Kompressionstechnik erscheint in den Proceedings of the International
Conference on Acoustics, Speech and Signal Processing, San Francisco,
Cal., März
1992, Band IV, Seiten 657–660,
wo ein Signalkompressionssystem offenbart wird, welches eine hierarchische
Subbandzerlegung oder Wavelettransformation gefolgt von der hierarchisch
sukzessiven Approximations-entropiekodierten Quantisierung, welche
Zerotrees bzw. Null-Bäume
verwendet. Die Darstellung von Signaldaten, welche eine mehrfach
aufgelöste
hierarchische Subbanddarstellung verwendet, wurde von Burt et al.
in IEEE Trans. on Commun., Band Com-31, Nummer 4, April 1983, Seite
533 offenbart. Eine Waveletpyramide, auch als kritisch abgetastete
Quadraturspiegelfilter-(quadrature-mirror-filter, QMF-)Subbanddarstellung
bekannt, ist ein bestimmter Typ von mehrfach aufgelöster hierarchischer
Subbanddarstellung eines Bildes. Eine Waveletpyramide wurde von
Pentland et al. in Proc. Data Compression Conference 8. bis 11.
April, 1991, Snowbird, Utah offenbart. Eine QMF-Subbandpyramide
wurde in „Subband
Image Coding", J.
W. Woods, Herausgeber, Kluwer Academic Publishers, 1999 und I. Daubechies,
Ten Lectures on Wavelets, Society for Industrial and Applied Mathematics
(SIAM): Philadelphia, Pa., 1992 beschrieben.
-
Wavelettransformationen,
ansonsten bekannt als hierarchische Subbandzerlegung wurden kürzlich für Niedrigbitraten-Bildkompression
verwendet, da eine solche Zerlegung zu einer hierarchischen Mehrfachskalendarstellung
des Quellenbildes führt.
Wavelettransformationen werden auf einen wichtigen Aspekt der Niedrigbitraten-Bildkodierung angewandt:
Die Kodierung einer binären
Karte (einem Waveletbaum), welcher die Orte der von null verschiedenen
Werte anzeigt, welche ansonsten als die Signifikanzkarte der Transformationskoeffizienten bekannt
ist. Wenn eine skalare Quantisierung gefolgt von einer Entropiekodierung
verwendet wird, um sehr niedrige Bitraten zu erreichen, d.h. weniger
als 1 Bit pro pel, muss die Wahrscheinlichkeit des wahrscheinlichsten
Symbols nach der Quantisierung – das
Nullsymbol – extrem
hoch sein. Typischerweise muss ein großer Anteil der Bitvorgabe zum
Kodieren der Signifikanzkarte verwendet werden. Es folgt daraus,
daß eine
signifikante Verbesserung beim Kodieren der Signifikanzkarte sich
in eine signifikante Verbesserung bei der zum Speichern oder Übertragen vorbereitenden
Kompression von Information übersetzt.
-
Um
diese Aufgabe zu erreichen wurde eine neue Struktur, Zerotree genannt,
entwickelt. Ein Waveletkoeffizient wird als signifikant in Bezug
auf einen gegebenen Schwellenwert T bezeichnet, wenn der Koeffizient
einen Wert von weniger als oder gleich T aufweist. Der Zerotree
basiert auf der Annahme, daß dann
wenn ein Waveletkoeffizient auf einer groben Skala nicht signifikant
in Bezug auf einen gegebenen Schwellenwert T ist, alle Waveletkoeffizienten
der gleichen Orientierung an dem gleichen räumlichen Ort bei feineren Skalen
wahrscheinlich nicht signifikant in Bezug auf T sind. Empirische
Anzeichen legen nahe, daß diese
Annahme oft richtig ist.
-
Insbesondere
kann in einem hierarchischen Subbandsystem, mit der Ausnahme der
Subbänder mit
höchster
Frequenz, jeder Koeffizient auf einer gegebenen Skala gemäß einer
Struktur, die ein Waveletbaum genannt wird, in Beziehung zu einem
Satz von Koeffizienten bei der nächst
feineren Skala der gleichen Orientierung gesetzt werden. Die Koeffizienten
auf der gröberen
Skala werden die Vorgängerknoten
genannt und alle Koeffizienten, welche dem gleichen räumlichen
oder zeitlichen Ort auf der nächst
feineren Skala gleicher Orientierung entsprechen, werden Nachfolgeknoten
genannt. Für
einen gegebenen Vorgängerknoten
wird der Satz aller Koeffizienten bei allen feineren Skalen gleicher
Orientierung, welche dem gleichen Ort entsprechen, Nachkommen genannt. Ähnlich wird
für einen
gegebenen Nachfolgerknoten der Satz von Koeffizienten bei allen
gröberen
Skalen gleicher Orientierung, welche dem gleichen Ort entsprechen,
Vorfahren genannt. Mit der Ausnahme des Subbands mit der niedrigsten Frequenz
haben alle Vorgängerknoten
vier Nachfolgerknoten. Für
das Subband mit der niedrigsten Frequenz ist das Vorgänger-Nachfolger-Verhältnis so definiert,
daß jeder
Vorgängerknoten
drei Nachfolgerknoten hat.
-
Knoten
werden in der Reihenfolge der Skalen der Zerlegung von dem gröbsten Niveau
zu dem feinsten abgetastet. Dies bedeutet, daß kein Nachfolgerknoten abgetastet
wird, bevor nicht sein Vorgänger
und alle anderen Vorgänger
in allen Subbändern auf
der gleichen Skala wie dieser Vorgänger gerastert wurden. Dies
ist ein Typ eines modifizierten breitenorientierten, Subband für Subband-Durchlaufs, welcher über alle
Waveletbäume
ausgeführt
wird, die durch die Koeffizienten der Wavelettransformation des
zweidimensionalen Datensatzes definiert sind.
-
Ist
ein Schwellenwertniveau gegebenen, um zu bestimmen, ob ein Koeffizient
signifikant ist oder nicht, wird ein Knoten eine Zerotreewurzel
(ZERTROREE ROOT) wenn 1) der Koeffizient bei einem Knoten ist, welcher
einen nicht signifikanten Wert hat, 2) der Knoten nicht der Nachkomme
einer Wurzel ist, d.h. er nicht vollständig von einer gröberen Skala
vorhersehbar ist, und 3) alle seiner Nachkommen nicht signifikant
sind. Eine Zerotreewurzel wird mit einem speziellen Symbol kodiert,
welches anzeigt, daß die Nicht-Signifikanz
der Koeffizienten bei feineren Skalen vollständig vorhersehbar ist. Um die
binäre
Signifikanzkarte effizient zu kodieren, werden vier Symbole entropiekodiert:
Zerotree-Wurzel (ZEROTREE ROOT), isolierte Null (ISO-LATED ZERO) und zwei Nicht-Null-Symbole,
positiv signifikant (POSITIVE SIGNIFICANT) und negativ signifikant
(NEGATIVE SIGNIFICANT).
-
US-Patent
5,412,741, veröffentlicht
am 2. Mai 1995, offenbart eine Vorrichtung und ein Verfahren zum
Kodieren von Information mit einem hohen Grad an Kompression. Die
Vorrichtung verwendet eine Zerotreekodierung von Waveletkoeffizienten
auf eine viel effizientere Weise als alle vorherigen Techniken.
Der Schlüssel
zu dieser Vorrichtung ist die dynamische Erzeugung der Liste von
abzutastenden Koeffizientenindizes, wobei die dynamisch erzeugte Liste
nur Koeffizientenindizes enthält,
für welche
ein Symbol kodiert werden muss. Dies ist eine dramatische Verbesserung
gegenüber
dem Stand der Technik, in welchem eine statische Liste von Koeffizientenindizes
verwendet wird und jeder Koeffizient individuell geprüft werden
muss, um zu sehen ob a) ein Symbol kodiert werden muss oder ob b)
er vollständig
vorhersehbar ist.
-
Die
in dem '741-Patent
offenbarte Vorrichtung verwendet ein Verfahren zum Kodieren von
Information, welches die Schritte aufweist, Bilden einer Wavelettransformation
des Bildes, Bilden, eine Zerotreekarte der Waveletkoeffizienten,
Kodieren der signifikanten Koeffizienten auf einer anfänglichen,
dominanten Liste aus dem gröbsten
Niveau der Transformation und der Nachfolger dieser Koeffizienten,
deren Indizes an die dominanten Liste angehängt werden, wenn gefunden wird,
daß der
Koeffizient des Vorgängers
signifikant ist, Reduzieren des Schwellenwertes, Verfeinern der
Abschätzung
des Werts der signifikanten Koeffizienten, so daß die Genauigkeit der kodierten
Koeffizienten erhöht
wird und Zurückschleifen,
so daß die
dominante Liste erneut bei dem neuen reduzierten Schwellenwert abgetastet
wird.
-
Um
den iterativen Prozess auszuführen
wird das Verfahren des '741-Patents
durch Abtasten des Waveletbaums Subband für Subband ausgeführt, d.h.
alle Vorgängerknoten
werden kodiert, dann alle Nachfolger, dann alle Nach-Nachfolger
usw. und sie werden Bit-Ebene für
Bit- Ebene kodiert.
Da der Prozess durch die Waveletbaumdarstellung des Bildes iteriert,
kodiert diese Vorrichtung eines von vier Symbolen innerhalb der
Zerotreekarte. Jede Verbesserung in der Geschwindigkeit bei welcher
ein Waveletbaum verarbeitet wird, wäre vorteilhaft.
-
Daher
besteht im Stand der Technik ein Bedürfnis nach einem verbesserten
Verfahren zum Klassifizieren und Kodieren der Knoten eines Waveletbaums,
welches zu effizienterer Kodierung und schnellerer Verarbeitung
führt.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Gemäß einem
ersten Aspekt stellt die Erfindung ein Verfahren zum Kodieren eines
Eingabebildes bereit, wobei eine Wavelettransformation verwendet
wird, so daß ein
Waveletbaum erzeugt wird, welcher eine Mehrzahl von Knoten aufweist,
die in einer Vorgänger-Nachfolger-Beziehung organisiert sind,
wobei grob skalierte Knoten als Vorgängerknoten identifiziert werden
und fein skalierte Knoten, welche mindestens einem gleichen räumlichen
oder zeitlichen Ort eines entsprechenden Vorgängerknotens entsprechen, werden
als Nachfolgerknoten identifiziert, wobei dieses Verfahren die Schritte
aufweist:
Erzeugen eines Waveletbaums für das Eingangsbild, wobei der
Waveletbaum eine Mehrzahl von Koeffizienten hat, wobei jeder der
Mehrzahl von Koeffizienten einem Knoten des Waveletbaums entspricht,
Quantisieren
der Mehrzahl von Koeffizienten in einem tiefenorientierten oder
Depth-First-Muster,
wobei das tiefenorientierte Muster aufweist:
ein von-oben-nach-unten-Abtastmuster,
das von einem Vorgängermuster
startet und nach unten geht zu einem Nachfolgerknoten und zu jedem
nachfolgenden Knoten des Nachfolgers bevor zu einem benachbarten
Vorgängerknoten übergegangen
wird, wobei die auf den Nachfolgerknoten nachfolgenden Knoten in
Ihrem Ort dem Nachfolgerknoten entsprechen und eine feinere Skalierung
als die Skalierung des Nachfolgerknotens haben, oder
ein von-unten-nach-oben-Abtastmuster,
das von einem Nachfolgerknoten startet und nach oben zu einem Vorgängerknoten
verläuft
und durch jeden Vorläufer-
bzw. Vorgängerknoten
des besagten Vorgängerknotens
verläuft
bevor zu einem benachbarten Nachfolgerknoten übergegangen wird, wobei die dem
Vorgängerknoten
vorhergehenden Knoten Knoten sind, die zumindest entweder dem räumlichen oder
zeitlichen Ort des Vorgängerknotens
entsprechen und eine gröbere
Skalierung als der Vorgängerknoten
haben und wobei der benachbarte Nachfolgerknoten ein Knoten mit
demselben Vorgängerknoten
wie der besagte Nachfolgerknoten ist und dieselbe Skalierung wie
der Nachfolgerknoten hat und
Kodieren der Mehrzahl von Koeffizienten.
-
Gemäß einem
zweiten Aspekt liefert die Erfindung eine Vorrichtung für das Kodieren
eines Eingangsbildes unter Verwendung einer Wavelettransformation,
um einen Waveletbaum zu erzeugen mit einer Mehrzahl von Knoten,
die in einer Vorgänger-Nachfolger-Beziehung
angeordnet sind, wobei grob skalierte Knoten als Vorgängerknoten
identifiziert werden und fein skalierte Knoten, die zumindest demselben
räumlichen
oder zeitlichen Ort eines entsprechenden Vorgängerknotens entsprechen, als Nachfolgerknoten
identifiziert werden, wobei die Vorrichtung aufweist:
einen
Waveletbaumgenerator für
das Erzeugen eines Waveletbaums für das Eingangsbild, wobei der Waveletbaum
eine Mehrzahl von Koeffizienten hat, wobei jeder der Mehrzahl von
Koeffizienten einem Knoten des Waveletbaums entspricht,
einen
Quantisierer, der mit dem Waveletbaumgenerator verbunden ist, für das Quantisieren
der Mehrzahl von Koeffizienten in einem tiefenorientierten Muster,
wobei das tiefenorientierte Muster aufweist:
ein von-oben-nach-unten-Abtastmuster
beginnend von einem Vorgängerknoten
bis hinunter zu einem Nachfolgerknoten und zu einem der nachfolgenden Knoten
des Nachfolgerknotens, bevor ein benachbarter Vorgängerknoten
durchlaufen wird, wobei die nachfolgenden Knoten des Nachfolgers
im Ort dem Nachfolgerknoten entsprechen und eine feinere Skalierung
als die Skalierung des Nachfolgerknotens haben, oder
ein von-unten-nach-oben-Abtastmuster,
das von einem Nachfolgerknoten startet und nach oben durch einen
Vorgängerknoten
und alle Vorgängerknoten des
Vorgängers
verläuft,
bevor ein benachbarter Nachfolgerknoten durchlaufen wird, wobei
die Vorgängerknoten
des Vorgängers
Knoten sind, die zumindest demselben räumlichen oder zeitlichen Ort wie
der Vorgängerknoten
entsprechen und eine gröbere
Skalierung als der Vorgängerknoten
haben, und wobei der benachbarte Nachfolgerknoten ein Knoten mit
demselben Vorgängerknoten
wie der besagte Nachfolgerknoten ist und dieselbe Skalierung hat
wie der besagte Nachfolgerknoten, und
einen Kodierer, der mit
einem Symbolzuweiser verbunden ist, für das Kodieren der Mehrzahl
von Koeffizientensymbolen.
-
Zusätzlich weisen
Ausführungsformen
der Erfindung jedem Knoten eines der drei Symbole zu: Zerotree-Wurzel
(ZEROTREE ROOT), gewertete Zerotree-Wurzel (VALUED ZEROTREE ROOT)
und Wert (VALUE). Durch Verwenden von drei Symbolen und das effiziente
Baumdurchlaufmuster ist die Erfindung wesentlich effizienter zum
Kodieren eines Zerotrees als der Stand der Technik.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
Die
Lehren der vorliegenden Erfindung können leicht durch Betrachten
der folgenden detaillierten Beschreibung in Verbindung mit den beiliegenden
Zeichnungen verstanden werden, in denen:
-
1 ein
Blockdiagramm eines Bildkodierers der vorliegenden Erfindung ist,
-
2 ein
Flussdiagramm ist, welches das Kodierverfahren des in 1 gezeigten
Kodierers darstellt,
-
3 eine
schematische Darstellung der Vorgänger-Nachfolger-Abhängigkeiten
von Subbändern
in einem Bild ist, welches auf drei Skalen innerhalb eines Waveletbaums
gelegt ist,
-
4 ein
Vorgänger-Nachfolger-Verhältnis für drei Generationen
eines unterabgetasteten Bildes zeigt,
-
5 eine
schematische Darstellung der Wechselbeziehung verschiedener Knoten
innerhalb eines Waveletbaums zeigt,
-
6 eine
Waveletblockdarstellung eines Waveletbaums zeigt,
-
7 ein
Flussdiagramm einer Quantisierungsroutine zeigt, welche von der
vorliegenden Erfindung ausgeführt
wird,
-
8 ein
Flussdiagramm einer Symbolzuordnungsroutine zeigt, die von der vorliegenden
Erfindung ausgeführt
wird,
-
9 ein
Blockdiagramm einer Ausführungsform
einer Vektorwavelettransformation zeigt,
-
10 ein
Blockdiagramm einer anderen Ausführungsform
einer Vektor-Wavelettransformation
zeigt,
-
11 ein
Blockdiagramm einer Ausführungsform
einer skalaren Wavelettransformation zeigt, die von einer Vektor-
oder Objektgruppierung gefolgt wird,
-
12 ein
Blockdiagramm einer anderen Ausführungsform
einer skalaren Wavelettransformation zeigt, die von einer Vektor-
oder Objektgruppierung gefolgt wird,
-
13 ein
Beispiel eines Vektorwavelets zeigt,
-
14 ein
Vektor-Vorgänger-Nachfolger-Verhältnis zeigt,
-
15 ein
Objekt Vorgänger-Nachfolger-Verhältnis zeigt,
und
-
16 die
Reorganisation der Koeffizientenvektoren jedes Waveletbaums, so
daß ein „Waveletblock" gebildet wird, zeigt.
-
Um
das Verständnis
zu erleichtern wurden möglichst
identische Bezugszeichen verwendet, um identische Elemente zu bezeichnen,
welche den Figuren gemeinsam sind.
-
DETAILLIERTE BESCHREIBUNG
-
1 zeigt
ein Blockdiagramm eines Kodierers 100 der vorliegenden
Erfindung und 2 zeigt eine Flussdiagrammdarstellung
des Betriebs des Kodierers 100 aus 1. Um die
Erfindung am besten zu verstehen, sollte der Leser gleichzeitig
sowohl 1 als auch 2 betrachten,
während
er die folgende Beschreibung der Erfindung liest.
-
Der
Kodierer 100 weist einen Waveletbaumgenerator 104,
einen optionalen Waveletbaumreorganisierer 108, einen Quantisierer 110,
einen Symbolzuweiser 112 und einen Entropiekodierer 114. Jede
dieser Komponenten ist in Serie verbunden, so daß ein Bild bei Anschluss 102 zu
einem kodierten Ausgangsbild bei Anschluss 116 verarbeitet
wird. Das Eingangsbild ist typischerweise ein gepixeltes (digitalisiertes)
photographisches Bild, wie es von einem Bildscanner oder einem Computergrafiksystem erzeugt
werden kann. Jedoch kann das Eingangsbild auch ein Frame innerhalb
einer Serie von Videobildframes oder ein bewegungskompensierter
Rest-Frame, welcher von einem Videokodiersystem erzeugt wird, sein.
Im allgemeinen verarbeitet die Erfindung jede Form des digitalisierten
Bilds oder eines Teils davon. Daher beginnt das Arbeitsverfahren
im allgemeinen bei Schritt 202 mit dem Eingang eines „Bildes", d.h. jeder Form
von zweidimensionalen Daten.
-
Der
Waveletbaumgenerator 104 führt (bei Schritt 204)
eine Wavelet-hierarchische Subbandzerlegung aus, so daß eine konventionelle
Waveletbaumdarstellung des Eingangsbildes erzeugt wird. Um eine
solche Bildzerlegung zu erreichen, wird das Bild zerlegt, wobei
eine zweifach Unter- bzw. Subabtastung in jeder von zwei Dimensionen
in hoch horizontal-hoch vertikal (HH), hoch horizontal-niedrig vertikal
(HL), niedrig horizontal-hoch vertikal (LH) und niedrig horizontal-niedrig
vertikal (LL) Frequenzsubbänder
verwendet wird. Das LL-Subband wird dann weiter zweifach in jeder
der zwei Dimensionen unterabgetastet, so daß ein Satz von HH-, HL-, LH-
und LL-Subbändern
erzeugt wird. Dieses Unterabtasten wird rekursiv ausgeführt, so
daß ein
Array von Subbändern,
so wie das in 3, in dem drei Unterabtastungen
verwendet wurden, erzeugt wird. Vorzugsweise werden in der Praxis
vier oder mehr Unterabtastungen verwendet. Die Vorgänger-Nachfolger-Abhängigkeiten
zwischen Subbändern
sind als Pfeile dargestellt, welche von dem Subband der Vorgängerknoten
zu den Subbändern
der Nachfolgerknoten zeigen. Das Subband mit der niedrigsten Frequenz ist
das linke oberer LL3 und das Subband mit
der höchsten
Frequenz ist das rechte untere HH1. In diesem
Beispiel haben alle Nachfolgerknoten einen Vorgänger. Eine detaillierte Diskussion
der Subbandzerlegung ist in J. M. Sharpiro, „Embedded Image Coding Using
Zerotrees of Wavelet Coefficients", IEEE Trans. on Signal Processing,
Band 41, Nummer 12, Seiten 3445–62,
Dezember 1993 dargestellt.
-
4 zeigt
die Vorgänger-Nachfolger-Beziehung
für drei
Generationen eines unterabgetasteten Bildes. Ein einziger Vorgängerknoten 400 hat
vier Nachfolgerknoten 402, welche dem gleichen Bereich in
dem Bild entsprechen mit vierfacher Unterabtastung, d.h. zweimaliger
Unterabtastung in jeder der zwei Dimensionen. Jeder Nachfolgerknoten 402 hat vier
entsprechende Nachfolgerknoten 404 der nächsten Generation
mit einer weiteren viermaligen Unterabtastung. Die Beziehung oder
Datenstruktur, welche einen Vorgängerknoten
mit seinen Nachfolgern und Nach-Nachfolgern in Beziehung setzt,
ist ein Waveletbaum. Es ist zu beachten, daß jedes pel oder Pixel in dem
niedrig-niedrig Subband einen ihm zugeordneten Baum aufweist. Jedoch
wird die Mehrzahl von Bäumen,
die sich von dem niedrig-niedrig Subband aus erstrecken zusammen
genommen und sie werden im allgemeinen im Stand der Technik als „der" Waveletbaum des
Bilds diskutiert. Diese Offenbarung folgt auch dieser Nomenklatur.
-
Wie
in 1 und 2 gezeigt, quantisiert der Quantisierer 110 (bei
Schritt 210) die Koeffizienten des Waveletbaums in einem
tiefenorientierten Muster. Ein tiefenorientiertes Muster ist den
Kodiersystemen aus dem Stand der Technik sehr unähnlich darin, daß die Kodiersysteme
aus dem Stand der Technik den Waveletbaum in einem modifizierten breitenorientierten
Muster über
alle Subbänder durchlaufen,
d.h. alle Vorgängerknoten
quantisieren, dann alle Nachfolger, dann alle Nach-Nachfolger usw.
Im Gegenteil dazu durchläuft
das erfindungsgemäße Verfahren
jeden Baum in tiefenorientierter Weise, d.h. von der Wurzel in dem
niedrig-niedrig
Subband (LL3) durch die Nachfolger. 5 zeigt
das tiefenorientierte Muster, welches so verwendet wird, daß jeder
Baum durchlaufen wird. Zum Beispiel schreitet der erfindungsgemäße tiefenorientierte
Prozess beginnend bei Knoten 500 in LL3 und
dem fetten Pfand folgend zu Knoten 502 in dem Subband LH3 fort und dann zu Knoten 504 in
dem Subband LH2. Von Knoten 504 fährt der
tiefenorientierte Durchlaufprozess nachfolgend zu Knoten 506, 508, 510 und 512 innerhalb
des Subbands LH1 fort, d.h. zu allen Nachfolgern
des Knotens 504, dann fährt
er mit den Geschwistern von 504 (514, 524, 534)
fort, wobei die vier Nachfolger jedes Geschwisters vor dem nächsten Geschwister
und seinen Nachfolgern durchlaufen werden. Nachdem dieser gesamte
Ast des Baums durchlaufen ist, schreitet der Durchlaufprozess zu
einem anderen Nachfolgerknoten des Knotens 500 voran, z.
B. Knoten 544. Von diesem Knoten aus schreitet der Depth-First-Durchlaufprozess
zu den Knoten 546, 548, 550, 552 und 554 voran,
bevor er zu Knoten 556 usw. übergeht.
-
Wenn
jeder Ast durchlaufen ist, werden die Koeffizienten in diskrete
Werte quantisiert. Jeder Quantisierungsansatz kann mit der vorliegenden
Erfindung verwendet werden. Der Quantisierungsprozess bildet einen
kontinuierlichen Koeffizientenwert in einen diskreten Wert ab, welcher
entweder einen positiven Wert, einen negativen Wert oder einen Nullwert
aufweist. In der Summe werden in einem tiefenorientierten Abtastmuster
die Nachfolger 506, 508, 510 und 512 nach
ihrem Vorgänger 504 und
vor jedem der benachbarten Vorgänger 514, 524 und 534 abgetastet.
Auf diese Weise werden alle Koeffizienten, welche einen gegebenen
räumlichen
Ort darstellen, in aufsteigender Frequenzreihenfolge von dem Vorgänger 500 zu
dem Nachfolger 502 zu dem Nach-Nachfolger 504 usw.,
abgetastet, bevor die Koeffizienten des nächsten benachbarten räumlichen Orts
abgetastet werden.
-
Obwohl
die vorhergehende Beschreibung des tiefenorientierten Abtastmusters
als ein „von oben
nach unten"-Muster
diskutiert wurde, weist ein tiefenorientiertes Abtastmuster auch
ein Abtasten von unten nach oben auf. Daher kann die Quantisierung
auch durch Beginnen bei den „Blättern" des Baums (die untersten
Knoten) und Folgen den Baum hinauf, ausgeführt werden. Das Beispiel aus 5 verwendend
würden
in einem „von
unten nach oben"-Muster
die Knoten 506, 508, 510 und 512 zuerst
quantisiert, dann der Knoten 504 usw. den Baum hinauf zu 500 am
Schluss. Nachdem dieser Baum vollständig wäre, würde der Quantisierungsprozess einen
anderen Baum quantisieren und einen anderen usw. bis alle Knoten
in allen Bäumen
quantisiert wären.
Wie unten diskutiert wird, arbeitet die Erfindung effizienter, wenn
ein „von
unten nach oben"-Muster verwendet
wird als das von „oben
nach unten"-Muster.
-
Um
dieses tiefenorientierte Abtastmuster zu vereinfachen, reorganisiert
die Erfindung die quantisierten Koeffizienten jedes Waveletbaums,
so daß ein „Waveletblock" gebildet wird. Wie
in 1 und 2 gezeigt, wird die Reorganisation
(bei Schritt 206) in dem Waveletbaumreorganisierer 108 vor
der Quantisierung ausgeführt.
-
6 zeigt
schematisch einen Waveletblock 604, welcher von der Erfindung
erzeugt wird. Die Erfindung bildet einen Baum 602, welcher
sich von einem Pixel 600 in dem niedrig-niedrig Band 606 (LL3) in dem Waveletbaum 602 aus erstreckt
in einen Waveletblock 604 ab. jeder Waveletblock 604 eines Bildframes 608 weist
diese Koeffizienten auf allen Skalen und Orientierungen auf, welche
den Frame an dem räumlichen
Ort des Blocks innerhalb des Frames darstellen. Die Reorganisation
wird durch physikalisches Neuabbilden der Speicherorte der Koeffizienten
auf neue Speicherorte erreichet, welche die Waveletblocks bilden.
Daher werden alle Koeffizienten eines gegebenen Waveletblocks an
sequenziellen Adressorten gespeichert. Alternativ werden die Koeffizienten
nicht physikalisch neu angeordnet, sondern stattdessen in einen
virtuellen Speicher neu abgebildet. Daher wird ein Index auf den
physikalischen Speicher erzeugt, wobei der Index (virtueller Speicher)
Speicherorte aufweist, welche in zwei Waveletblocks angeordnet sind.
Für jeden
Zugriff auf den Index wird die Adresse in dem Index auf einen physikalischen
Speicherort abgebildet, an dem der Koeffizient gespeichert ist.
Daher werden durch einen virtuellen Speicheransatz die Vorteile
von Waveletblocks zugänglich
ohne physikalische Neuanordnung der Koeffizienten im Speicher.
-
Durch
Verwenden eines tiefenorientierten Abtastmusters wird jeder Waveletblock
vollständig abgetastet,
um seine Koeffizienten zu quantifizieren bevor der nächste Block
abgetastet wird, usw. Zum Beispiel wird in einem Rasterabtastmuster
durch den Frame des Waveletblocks Block 610 vollständig abgetastet,
dann Block 612, dann Block 614 usw.. Die Anordnung
von Blöcken
muss nicht in einem Rasterabtastmuster erfolgen, sondern kann in
jeder von der Anwendung erwünschten
Reihenfolge erfolgen. Dies schließt Objektorientierung ein,
wobei Blöcke,
welche bestimmten Objekten entsprechen vor anderen Objekten abgetastet
und kodiert werden. Da ein ganzer Block bei aufeinanderfolgenden
Speicheradressen angeordnet ist, kann der Block leicht durch Auswählen entweder
des ersten oder des letzten Speichereintrags für einen gegebenen Block und
durch Zugreifen auf alle anderen Adressen in aufsteigender oder
absteigender Reihenfolge in einem „von oben nach unten" oder „von unten
nach oben"-Muster
abgetastet werden.
-
Es
ist wichtig, daß mit
solcher Reorganisation jedem Waveletblock, basierend auf seinem
räumlichen
Ort in dem Frame, eine andere Quantisierungsskala zugeordnet werden
kann. Dies ermöglicht es,
daß der
Quantisierer 110 speziell einem räumlichen Ort der Koeffizienten
und/oder gemäß dem Frequenzband,
welches durch den Koeffizienten dargestellt wird, zugeordnet ist.
Daher kann die Skala des Quantisierers über ein Bild verschieden sein,
so daß das
Zentrum des Bilds oder bestimmte Objekte innerhalb des Bildes genauer
quantisiert sein können
als die Kanten. Ähnlich
könnte
die Quantisiererskala frequenzabhängig sein, so daß höhere Frequenzen (oder
für diesen
Zweck niedrigere Frequenzen, mittlere Frequenzen, verschiedene Frequenzbänder und ähnliches)
quantisiert werden können,
wobei eine Skala verwendet wird, welche von anderen Frequenzen verschieden
ist.
-
In
einer bestimmten Anwendung, wie z. B. einem Videotelefon, werden
die Vordergrundobjekte, z. B. der Kopf und die Schultern eines Anrufers,
zur Quantisierung mit höherer
Genauigkeit als die Hintergrundobjekte ausgewählt. Folglich wird die wichtige Information
genau kodiert und übertragen
während Hintergrundinformation
weniger genau kodiert wird. Die Verwendung von Waveletblocks erlaubt
eine einfache verzweigte Kodierung von Vordergrund- und Hintergrundinformation.
Nachdem ein Bereich zur genauen Kodierung ausgewählt ist, kann die Erfindung
die Blöcke,
welche eine genaue Kodierung erfordern, markieren. Daher quantisiert
der Quantisierer diese Blöcke,
wobei ein feinerer Quantisierungsschritt verwendet wird wie er für die nicht
markierten Blöcke
verwendet wird.
-
Obwohl
Waveletblöcke
eine intuitive Datenstruktur zum Implementieren der Erfindung bilden,
ist die Verwendung von Waveletblöcken
nicht für
die Realisierung des erfindungsgemäßen Kodierers 100 notwendig.
Wie unten diskutiert, kann eine konventionelle Baumstruktur in Verbindung
mit dem verbesserten Baumdurchlaufprozess der verbesserten Kodiertechnik
der vorliegenden Erfindung verwendet werden. Daher zeigen die 1 und 2 die
optionale Natur des Reorganisators als Pfad 106 und Pfad 208,
welche den Reorganisator bzw. seine zugeordnete Funktion umgehen.
-
Nach
der Quantisierung hat an jedem Knoten des Baums der quantisierte
Koeffizient entweder einen Nullwert oder einen von null verschiedenen
Wert. „Zerotrees" existieren, wo immer
der Koeffizient bei einem Knoten null ist und alle seine Nachkommen Zerotrees
bilden, d.h. alle nachfolgenden Knoten haben einen Nullwert. Die
quantisierten Koeffizienten des Waveletbaums werden durch nochmaliges
Abtasten jedes Baums in einer tiefenorientierten Weise effizient
kodiert. Daher arbeitet der Symbolzuordner 112 (bei Schritt 212)
durch Durchlaufen des Baums und Zuordnen bestimmter Symbole zu jedem
Knoten in Abhängigkeit
von dem quantisierten Wert des Knotens sowie von den quantisierten
Werten der Nachfolger des Knotens.
-
Insbesondere
ordnet das erfindungsgemäße Verfahren
jedem Knoten eines der drei Symbole zu: Zerotree-Wurzel (ZEROTREE
ROOT), gewertete Zerotree-Wurzel (VALUED ZEROTREE ROOT) and Wert
(VALUE). Ein ZEROTREE ROOT bezeichnet einen Koeffizienten, welcher
die Wurzel eines Zerotrees ist. Nach dem Abtasten, bei welchem Symbole zugeordnet
werden, muss der Zerotree nicht mehr weiter abgetastet werden, da
es bekannt ist, daß alle Koeffizienten
in dem Baum den Wert null haben. Ein VALUED ZEROTREE ROOT ist ein
Knoten, an dem der Koeffizient einen von null verschiedenen Wert
hat und alle vier Nachfolger ZEROTREE ROOTS sind. Das Kodierabtasten
dieses Baums wird niemals unter diesem Knoten fortgesetzt. Ein VALUE-Symbol identifiziert
einen Koeffizienten mit einem Wert, entweder null oder von null
verschieden, aber auch mit irgendeinem Nachkommen irgendwo weiter
entlang dem Baum, welcher einen von null verschiedenen Wert hat.
-
Um
die Bäume
am effizientesten abzutasten, so daß die Knoten quantifiziert
und ihnen Symbole zugeordnet werden, arbeitet der Quantisierer in
Verbindung mit dem Symbolzuordner. 7 zeigt
ein detailliertes Flussdiagramm einer Quantisierungsroutine 700,
welche so verwendet wird, daß die
Koeffizienten eines Zerotrees quantisiert werden und 8 zeigt
ein detailliertes Flussdiagramm einer Symbolzuordnungsroutine 800 zum
Zuordnen von Symbolwerten, so daß die quantisierten Koeffizientenwerte dargestellt
werden.
-
Die
Routine 700 beginnt bei Block 702 und wird fortgesetzt
zu Schritt 704, wo ein Koeffizientenwert aus einem Knoten
in einem Waveletbaum abgerufen wird. Wie unten diskutiert wird,
tastet die Quantisierungsroutine den Waveletbaum in einem tiefenorientierten „von unten
nach oben"-Muster
ab. Daher liegt die erste Adresse immer in dem höchsten Frequenzsubband und mit
jeder Iteration durch die Routine folgt die Routine den Baum hinauf
zu niedrigeren und niedrigeren Frequenzsubbändern. Wenn die quantisierten
Werte erzeugt sind, folgt die Routine den quantisierten Werten der
Nachfolgerknoten, d.h. sind die Nachfolger mit Werten behaftet oder
null. Bei Schritt 706 quantisiert die Routine den erhaltenen Koeffizientenwert
in einen positiven Wert, negativen Wert oder einen Nullwert. Bei
Schritt 708 wird eine Markierungskarte mit einem vorläufigen Symbolwert für den Knoten,
welcher dem gerade quantisierten Koeffizientenwert zugeordnet ist,
aktualisiert. Das Markierungskartensymbol hängt von dem Wert der Nachfolgerknoten
sowie dem Wert des derzeitigen Knotens ab. Es ist zu beachten, dass,
da das Abtasten von unten nach oben erfolgt, die Markierungskarte
nicht in der Lage ist, endgültig
anzuzeigen, ob ein Knoten ein ZEROTREE ROOT ist oder nicht. Folglich wird
nachdem allen Knoten ein vorläufiger
Symbolwert zugewiesen ist, der Baum erneut in einem Muster von oben
nach unten abgetastet, um endgültig Symbolwerte
zuzuweisen. Die Markierungskarte ist ein Index der Waveletbaumknoten,
welcher der durch die Quantisierungsroutine 700 gefüllt wird.
Bei jeder Adresse in der Markierungskarte speichert die Routine
ein vorläufiges
Symbol: Möglicher
Wert (VALUE), mögliche
gewertete Zerotree-Wurzel (VALUED ZEROTREE ROOT) oder mögliche Zerotree-Wurzel (ZEROTREE
ROOT). Wenn der quantisierte Koeffizientenwert einen Wert hat, wird
der Markierungskartenort für
diesen Koeffizienten mit einem möglichen
VALUE-Symbol markiert. Wenn der quantisierte Koeffizientenwert ein
Nullwert ist und alle Nachfolger des Knotens Nullwerte sind, dann
wird der Markierungskartenort mit einem möglichen ZEROTREE BOOT markiert.
Zuletzt wird, dann wenn der quantisierte Wert einen Wert hat und
seine Nachfolger alle Nullwerte sind, der Markierungskartenort mit
einem möglichen
VALUED ZEROTREE ROOT markiert.
-
Bei
Schritt 710 fragt die Routine ab, ob alle Knoten in dem
Baum quantisiert wurden. Wenn die Anfrage negativ beantwortet wird,
fährt die
Routine bei Schritt 712 fort, wo ein neuer (nächster)
Knoten in dem Baum zur Quantisierung ausgewählt wird. Die Routine kehrt
dann zu Schritt 704 zurück.
Wenn die Abfrage bei Schritt 710 beantwortet wird, fährt die Routine
bei Schritt 714 fort. Die Routine fragt bei Schritt 714 ab,
ob alle Bäume
quantisiert wurden. Wenn die Abfrage negativ beantwortet wird, wählt die Routine
bei Schritt 716 einen neuen (nächsten) Baum zur Quantisierung
aus. Wenn die Abfrage bei Schritt 714 bestätigend beantwortet
wird, fährt
die Routine zu Schritt 718 fort. An diesem Punkt in Routine 700 sind
alle Knoten in den Bäumen
quantisiert und einem vorläufigen
Symbol zugeordnet. Bei Schritt 718 ruft die Routine 700 die
Symbolzuordnungsroutine 800 aus 8 auf. Nachdem
die Symbole zugeordnet sind, endet Routine 700 bei Block 720.
-
Routine 800 tastet
die Bäume
in einem „von oben
nach unten"-Muster
ab, d.h. von der Wurzel zu den Blättern. Jedoch muss die Routine
nicht auf jeden Knoten zugreifen, da die Bäume bei jedem Auftreten eines
ZEROTREE ROOT oder eines VALUED ZEROTREE ROOT beschnitten werden.
Speziell wird bei Schritt 802 in die Routine 800 eingetreten und
diese fährt
mit Schritt 804 fort. Bei Schritt 804 erhält die Routine
einen quantisierten Koeffizienten von dem Baum der quantisierten
Koeffizienten. Bei Schritt 806 erhält die Routine das vorläufige Symbol in
der Markierungskarte, welches dem erhaltenen Koeffizienten entspricht.
Die Routine fragt bei Schritt 808 ab, ob das vorläufige Symbol
ein mögliches
ZEROTREE ROOT ist. Wenn die Abfrage bestätigend beantwortet wird, ordnet
die Routine bei Schritt 810 das ZEROTREE ROOT-Symbol dem Knoten
zu. Dann beschneidet bei Schritt 812 die Routine den Baum,
d.h. die Routine ignoriert alle Knoten unterhalb dieses ZEROTREE
ROOT-Knotens, da per Definition, alle Knoten einen Nullwert haben.
-
Die
Routine fragt bei Schritt 820 ab, ob alle Knoten ausgewählt wurden.
Wenn die Anfrage bei Schritt 820 negativ beantwortet wird,
fährt die
Routine entlang dem NEIN-Pfad zu Schritt 814 fort. Bei Schritt 814 wählt die
Routine den nächsten
Knoten aus nachdem alle abgeschnittenen Äste übersprungen wurden, so daß ein tiefenorientiertes „von oben nach
unten"-Abtasten ausgeführt wird.
-
Wenn
die Abfrage bei Schritt 808 negativ beantwortet wird, fährt die
Routine entlang dem NEIN-Pfad zu Schritt 816 fort. Bei
Schritt 816 fragt die Routine ab, ob die Markierungskarte
ein mögliches Symbol
eines möglichen
VALUED ZEROTREE enthält.
Wenn die Anfrage bei Schritt 816 bestätigend beantwortet wird, ordnet
die Routine bei Schritt 822 dem Knoten ein VALUED ZEROTREE
ROOT-Symbol zu, setzt den Wert auf eine Liste von Werten ungleich
null und beschneidet den Baum bei Schritt 824. Die Routine
fragt bei Schritt 820 an, ob alle Knoten ausgewählt wurden.
Wenn die Anfrage bei Schritt 820 negativ beantwortet wird,
fährt die
Routine zu Schritt 814 fort. Dann wählt die Routine bei Schritt 814 den
nächsten
Knoten zur Symbolzuordnung, wobei die beschnittenen Äste übersprungen
werden.
-
Wenn
die Anfrage bei Schritt 816 negativ beantwortet wird, ordnet
die Routine bei Schritt 818 dem Knoten ein VALUE-Symbol
zu und setzt einen Wert auf die Liste der Werte, welche den Wert
null enthalten. Die Routine fragt bei Schritt 820 ab, ob
alle Knoten ausgewählt
wurden. Wenn die Abfrage bei Schritt 820 negativ beantwortet
wird, fährt
die Routine zu Schritt 814 fort. Dann wählt die Routine bei Schritt 814 den
nächsten
Knoten zur Symbolzuordnung aus.
-
Die
Zuordnungsroutine fährt
fort bis allen Knoten Symbole zugeordnet wurden. Daher fährt, wenn
die Abfrage bei Schritt 820 bestätigend beantwortet wird, die
Routine zu Schritt 826 fort, wo die Routine 800 endet
oder sie kehrt zur Routine 700 zurück.
-
Die
Symbole und Werte werden (bei Schritt 214) kodiert, wobei
ein Entropiekodierer 114 wie z. B. ein konventioneller
arithmetischer Kodierer, verwendet wird. Ein möglicher Weg, eine Kodierung
zu erreichen, ist wie folgt. Die Symbole werden kodiert, wobei ein
Dreisymbolalphabet verwendet wird. Die Liste von Werten ungleich
null, welche eins zu eins den VALUED ZEROTREE ROOT-Symbolen entsprechen,
wird kodiert, wobei ein Alphabet verwendet wird, welches den Wert
null nicht aufweist. Die verbleibenden Koeffizienten, welche eins
zu eins den VALUE-Symbolen entsprechen, werden kodiert, wobei ein
Alphabet verwendet wird, das den Wert null nicht aufweist. Die verbleibenden
Koeffizienten, welche eins zu eins den VALUE-Symbolen entsprechen, werden kodiert,
wobei ein Alphabet verwendet wird, welches nicht den Wert null aufweist.
Für jeden
Knoten, welcher in einer Abtastung erreicht wird und der ein Blatt
ohne Nachfolger ist, wäre
kein Wurzelsymbol anwendbar. Daher können einige Bits durch Nicht-Kodieren
irgendeines Symbols für
diesen Knoten und Kodieren des Koeffizienten gespart werden, wobei
das Alphabet verwendet wird, welches den Wert null aufweist. Ein
anschaulicher Kodierer, welcher ein Dreisymbolkodieralphabet für die Symbole und
ein Mehrsymbolalphabet für
die Werte verwendet, würde
dem in Witten at al., „Arithmetic
Coding for Data Compression",
Comm. of the ACM, Band 30, Nummer 6, Seiten 520–540, Juni 1987 offenbarten folgen.
In der Tat werden Fachleute erkennen, daß die vorliegende Erfindung
durch einfaches Kodieren nur der Werte (oder Darstellungen dieser
Werte) der Koeffizienten gemäß den zugeordneten
Symbolen modifiziert werden kann. Es werden nämlich nur die Werte der Koeffizienten
kodiert ohne daß die
Symbole, welche die Wichtigkeit der Koeffizienten anzeigen, kodiert
werden müssen.
-
Der
Kodierer 100 erzeugt (bei Schritt 216) das kodierte
Ausgangsbild am Anschluss 116. Durch Verwenden der vorliegenden
Erfindung wird ein Bild schnell und effizient kodiert, wobei eines
von drei Symbolen bei jedem Knoten eines Waveletbaums verwendet
wird zuzüglich
Bits, um die Koeffizientenwerte zu kodieren.
-
Eine
Mehrzahl von alternativen Ausführungsformen
der vorliegenden Erfindung verwendet das vorliegende Kodierschema
zur Vektor- oder Objektzerotreekodierung für Bilder und Video. Und zwar wird
das vorliegende Kodierschema, wobei eine Wavelettransformation verwendet
wird, auf das Konzept der Vektor- (oder Objekt)-Zerotreekodierung
angewandt, welche eine Quantisierung und Zerotreeentropiekodierung
der quantisierten Waveletkoeffizienten verursacht. Jede der Vektor-
oder Objektzerotreekodierungsausführungsformen der vorliegenden Erfindung
stellt einen Vektor- oder Objetktansatz dar, so daß Zerotrees
verwendet werden, um Waveletkoeffizienten für Bilder oder Videoreste zu
kodieren. Jedem Knoten jedes Waveletbaums ist eine Liste von Koeffizienten
(ein Vektor) statt einem einzigen Koeffizienten zugeordnet. Baumknoten
werden abgetastet, Koeffizienten quantisiert und Symbole entropiekodiert,
wobei bei allem ein Verfahren verwendet wird, das Vektorzerotreeentropiekodierung
genannt wird. Die verschiedenen Vektor- oder Objektzerotreekodierungsausführungsformen
fallen in zwei Kategorien, skalare Wavelettransformation gefolgt
von Vektor- (oder Objekt-) Gruppierung oder Vektor- (oder Objekt-)
Gruppierung gefolgt von Vektorwavelettransformation. Und zwar wird
zunächst
ein Bild, ein Videoframe oder ein Frame von bewegungskompensierten
Videoresten entweder skalar wavelettransformiert oder vektorwavelettransformiert. 11 bis 12 stellen
die erste Kategorie dar, wobei das skalare Wavelet zuerst berechnet
wird und dann werden die Waveletkoeffizienten nach der Transformation
in Vektoren oder Objekte gruppiert. Im Gegensatz dazu stellen 9 bis 10 die
zweite Kategorie dar, wobei die Eingänge als Vektoren gruppiert
und dann durch eine Vektorwavelettransformation geleitet werden,
so daß die
Ausgänge
als Vektoren erzeugt werden. In beiden Fällen kann das Ergebnis als ein
Frame von Vektoren oder Objekten von Waveletkoeffizienten betrachtet
werden.
-
Kurzgefasst
werden in zwei Ausführungsformen
der Erfindung (9 und 10) Vektoren durch
eine festgelegte Kachelung der 2D-Matrix von Bild- oder Videopixeln
oder -resten definiert und die Wavelettransformation, welche berechnet
wird, ist eine Vektorwavelettransformation. Dann wird entweder eine
Vektorquantisierung oder eine skalare Quantisierung mit der Vektorzerotreeentropiekodierung
kombiniert, um ein kodiertes Ausgangsbild zu erhalten.
-
In
weiteren vier Ausführungsformen
der Erfindung (11 und 12) wird
eine skalare Wavelettransformation berechnet und dann werden entweder
Vektoren durch eine festgelegte Kachelung der 2D-Matrix von Waveletkoeffizienten
auf der gröbsten Skala
definiert oder es werden Objekte willkürlicher Größe und Form durch einen Segmentierungsalgorithmus
bestimmt (d.h. Erzeugen zweier Ausführungsformen). Die Vektoren
oder Objekte wiederum sind entweder vektorquantisiert oder skalar
quantisiert in Kombination mit einer Vektorzerotreeentropiekodierung,
so daß ein
kodiertes Ausgangsbild erhalten wird (d.h. Erzeugen zwei weiterer
Ausführungsformen
für insgesamt
vier Ausführungsformen). Eine
Form eines Vektorwavelets wird von W. Li und Y.–Q. Zhang, „Vector-Based Signal Processing
and Quantization for Image and Video Compression", Proceedings of the IEEE, Band 83,
Seiten 317–335, Februar
1995 offenbart.
-
13 stellen
ein Beispiel eines Vektorwavelets dar. Ein Vektorwavelet eines Bild- oder Videorestes
ist eine Transformation, wobei benachbarte Abtastungen des Bildes-
oder Videorestes so zusammengruppiert werden, so daß sie Vektoren
bilden und dann wird die Wavelettransformation auf diese Vektoren
angewandt. Eine Vektorwavelettransformation wird durch die folgenden
Schritte berechnet: Unterabtasten des Frames, so daß eine Anzahl
von unterabgetasteten Frames von räumlich beabstandeten, für den Frame
repräsentativen
Signalen erhalten wird, Transformieren jedes der unterabgetasteten Frames
durch eine diskrete Wa velettransformation, so daß eine entsprechenden Anzahl
von Frames von Waveletsignalen, die für die Wavelettransformation repräsentativ
sind, erhalten wird und Bilden von Signalen, die für den Vektor
repräsentativ
sind, aus entsprechenden nur für
die Koeffizienten repräsentativen
Signalen der entsprechenden Frames von für die Koeffizienten repräsentativen
Signalen.
-
Und
zwar wird der Frame (Eingangsbild) 1302 in seine 2-D-Polyphasenkomponenten
zerlegt. Jede Polyphasenkomponente ist ein räumlich versetzter Frame des
Originalframes dargestellt durch die vier (4) Deltafunktionen 13041 –13044 . Jeder räumlich versetzte Frame wird
dann mit Vierfach-Unterabtastung unterabgetastet, d.h. zweifaches
Unterabtasten in jeder der zwei Dimensionen durch den Unterabtaster 1306,
so daß die
Polyphasenkomponente erzeugt wird. Eine Wavelettransformation 1308 wird
wiederum auf jede Polyphasenkomponente angewandt und dann werden
Vektoren durch Zusammengruppieren der Transformationskoeffizienten
gebildet, einer aus jeder wavelettransformierten Komponente, mit
den gleichen Indizes. Auf diese Weise werden Vektoren von m × n Pixeln
in Vektoren von m × n
Koeffizienten 1310 transformiert.
-
Eine
Vektorwaveletransformation kann auch als eine Anzahl von überlagernden
Frames betrachtet werden und jeder Vektor oder jedes Objekt weisen einen
Koeffizienten aus jedem Frame auf, in welchem diese Koeffizienten
den gleichen Index tragen. Die Anzahl von Frames ist gleich der
Dimension des Vektors oder der Größe des Objekts.
-
Die
verschiedenen Ausführungsformen
werden nun detailliert gemäß 9 bis 12 diskutiert. Insbesondere
stellen die 11 bis 12 vier
Ausführungsformen
dar, die eine skalare Wavelettransformation gefolgt von Vektoren-
(oder Objekt-) Gruppierung anwenden. Da die Kodierer aus 11 und 12 viele Ähnlichkeiten
teilen, werden unten die verschiedenen Ausführungsformen gleichzeitig durch
die Verwendung von numerischen Bezeichnungen diskutiert. Der Kodierer 1100 (1200)
enthält einen
Waveletbaumgenerator 1103 (1203), einen Vektor- oder Objektorganisator 1104 (1204),
einen optionalen Vektor-/Objekt-Waveletbaumreorganisator 1108 (1208),
einen Vektorquantisierer 1110 (einen skalaren Quantisierer 1210 mit
einem Nachquantisierungsprozessor 1211), einen Symbolzuweiser 1112 (1212)
und einen Entropiekodierer 1114 (einen Vektorentropiekodierer 1214).
Jede dieser Komponenten ist in Serie verbunden, so daß ein Bild
am Anschluss 1102 (1202) in ein kodiertes Ausgangsbild
am Anschluss 1116 (1216) verarbeitet wird.
-
Der
Waveletbaumgenerator 1103 (1203) führt eine
hierarchische Wavelet-Subbandzerlegung so
durch, daß eine
konventionelle Waveletbaumdarstellung des Eingangsbildes 1102 (1202),
wie oben diskutiert, erzeugt wird. Der Vektoren- oder Objektorganisator 1104 (1204)
definiert wiederum Vektoren durch eine festgelegte Gruppierung von
benachbarten Koeffizienten in dem niedrig-niedrig Band der Waveletransformation.
Objekte werden durch Anwenden eines Segmentierungsalgorithmus auf
die Waveletkoeffizienten des niedrig-niedrig Bandes definiert. Die
Segmentierung wird als vollständig
und nicht überlappend
angenommen. Daher ist jeder Koeffizient in dem niedrig-niedrig Band
ein Element in einem und nur einem Vektor oder Objekt. Verschiedene
Segmentierungsalgorithmen können
auf die vorliegende Erfindung angewandt werden, wie von Patrick
Campbell McLean, in „Structured
Video Coding", Diplomarbeit
eingereicht im Bereich Medienwissenschaften, Massachusetts Institute
of Technology, Juni 1991 oder in Internationalanmeldung WO 96/15508,
veröffentlicht
am 23.05.1996, offenbart.
-
Gemäß 14 bis 15 wird
der Vektor 1402 oder das Objekt 1502 durch Hochabtasten
in höhere
Bänder
weitergeleitet, so daß ein
Entwurf 1404 (1504) bei der nächst feineren Skala definiert wird.
Um die Vektoren und/oder Objekte in der gleichen Größe wie auf
der gröberen
Skala zu erhalten, werden die Koeffizienten jedes Vektors oder Objekts in
dem Entwurf in vier Vektoren 1406 oder Objekten 1506,
wie in 14 bis 15 dargestellt,
neu gruppiert. Der Vektor oder das Objekt auf der gröberen Skala
wird der Vektor- oder Objektvorgänger
genannt und die vier Vektoren oder Objekte auf der nächst feineren
Skala werden die Vektor- oder Objektnachfolger genannt. Die vier
Vektor-/Objektnachfolger werden, durch Entnehmen der vier Polyphasenkomponenten 1408 (1508)
aus dem Entwurf extrahiert. Dies ist äquivalent zu einer verschobenen
Unterabtastung des Entwurfs. Beispiele des Vektor-Vorgänger-Nachfolger-Verhältnisses
und des Objekt-Vorgänger-Nachfolger-Verhältnisses
sind in 14 bzw. 15 gezeigt.
Diese Verhältnisse
definieren Vektor- oder Objektwaveletbäume.
-
Vektor-
oder Objektwaveletbäume
sind ähnlich
den Waveletbäumen
der Skalaren-ZTE-Kodierung,
außer
daß es
bei jedem Knoten dieser Vektor- oder Objektwaveletbäume einen
Vektor von Waveletkoeffizienten anstelle eines einzigen Werts gibt.
Bei der oben beschriebenen Skalaren-ZTE-Kodierung wird jeder Baum
tiefenorientiert von der Wurzel in dem niedrig-niedrig Band aus durch die Nachfolger und
Nach-Nachfolger durchlaufen. Wenn Knoten durchlaufen werden, werden
Koeffizienten gemäß der derzeitigen
Quantisierungsspezifikation quantisiert. Diese Quantisierung kann
als ein Vektor aus skalaren Quantisierungen durch den Quantisierer 1210 erfolgen
oder als eine einzelne Vektorquantisierung durch den Vektorquantisierer 1110.
Verschiedene Vektorquantisierungstechniken können wie von Allen Gersho et
al. in „Vector
Quantization and Signal Compression", Kluwer Academic Publishers (1992), offenbart,
verwendet werden.
-
Ähnlich der
oben beschriebenen skalaren ZTE-Kodierung, ist es vorteilhaft, die
Koeffizientenvektoren jedes Waveletbaums zu reorganisieren, so daß ein „Waveletblock" wie in 16 gezeigt,
gebildet wird. Um das tiefenorientierte Abtastmuster zu vereinfachen,
kann die Erfindung optional die quantisierten Koeffizienten jedes
Waveletbaums reorganisieren, so daß ein „Waveletblock" 1604 gebildet
wird. Wie in 11 und 12 gezeigt,
wird die Reorganisation in dem Vektoren-Objekt-Waveletbaumreorganisator 1108 (1208)
vor der Quantisierung erreicht. Da die Reorganisation optional ist,
zeigen beiden 11 und 12 den
optionalen Charakter des Reorganisators als einen Pfad 1106 bzw.
einen Pfad 1206, welche den Reorganisator und seine zugeordnete
Funktion umgehen.
-
16 stellt
schematisch einen Waveletblock 1604 dar, welcher durch
die Erfindung erzeugt wird. Jeder Waveletblock 1604 eines
Frames weist solche Koeffizientenvektoren auf allen Skalen und in allen
Orientierungen auf, welche den Frame an dem räumlichen Ort dieses Blocks
darstellen, welcher in aufsteigender Frequenzreihenfolge vom Vorgänger zu
den Nachfolgern zu den Nach-Nachfolgern organisiert ist. Und zwar
bildet die Erfindung den Baum 1602, welcher sich von einem
Vektor 1600 in dem niedrig-niedrig Band 1606 (LL3) in dem Waveletbaum 1602 erstreckt,
in einen Waveletblock 1604 ab. Solch eine Struktur erlaubt
es, im Fall einer skalaren Quantisierung dem Quanitisierungsfaktor
oder im Fall einer Vektorquantisierung dem Kodierungsbuch, sich an
jeden Block in Abhängigkeit
davon anzupassen, wo der Block räumlich
angeordnet ist und daher was er in dem Frame darstellt.
-
Durch
Verwendung eines tiefenorientierten Abtastmusters wird jeder Waveletblock
vollständig abgetastet,
um seine Koeffizientenvektoren zu quantisieren bevor der nächste Block
abgetastet wird, usw. Z. B. wird der Block 1610 vollständig abgetastet, dann
der Block 1612, dann der Block 1614, usw. in einem
Rasterabtastmuster durch den Frame von Waveletblöcken. Die Reihenfolge der Blöcke muss nicht
in einem Rasterabtastmuster erfolgen, sondern sie kann in jeder
Reihenfolge, wie von der Anwendung gefordert, erfolgen.
-
Darüber hinaus
stellt diese Erfindung zwei verschiedene Verfahren zum Ausführen der
Quantisierung der Vektoren von Waveletkoeffizienten dar. Die Quantisierung
kann als eine skalare Quantisierung auf jedem Element eines jeden
Vektors ausgeführt
werden oder sie kann als eine Vektorquantisierung an jedem Vektor
ausgeführt
werden. Bei jedem Knoten eines jeden Baums ordnet ein Symbolzuordner 1112 (1212)
ein Symbol zu, so daß der
quantisierte Vektor an diesem Knoten charakterisiert wird. Die Symbole
und die quantisierten Koeffizientenwerte werden alle kodiert, wobei
ein Entropiekodierer 1114 (1214) wie z. B. ein
arithmetischer Kodierer, verwendet wird.
-
Nach
jedem Typ von Quantisierung existieren Zerotrees, wo immer der Koeffizientenvektor
an einem Knoten der Nullvektor ist und alle Nachkommen Zerotrees
sind. Der Waveletbaum wird durch Zuordnen von Symbolen, um die Knoten
darzustellen und durch Beschneiden der Bäume bei Zerotrees effizient
dargestellt und kodiert. Ein arithmetischer Kodierer wird so verwendet,
daß die
minimale Anzahl von Bits nur solchen Symbolen und Werten zugeordnet
wird, welche von dem Dekodierer benötigt werden, um zuverlässig die
Bäume von
Waveletkoeffizientenvektoren zu rekonstruieren.
-
Eine
Ausführungsform
dieser Erfindung (wie in 12 gezeigt)
verwendet eine skalare Quantisierung der Elemente der Vektoren von
Waveletkoeffizienten. Nach der Quantisierung erhält jeder Vektor entweder nur
Nullen oder einen oder mehrere von null verschiedene Werte. Ein
Vektorzerotree existiert, wenn es einen Nullvektor an jedem Knoten
des Baums gibt. Eine Vektorzerotreewurzel ist die Wurzel eines Vektorzerotrees.
Der Koeffizientenvektor bei einer Vektorzerotreewurzel ist der Nullvektor
und alle Nachkommen der Vektorzerotreewurzel sind selbst Vektorzerotreewurzeln.
-
Zerotreewurzeln
sind wichtig, da Waveletbäume
bei Zerotreewurzeln beschnitten werden können und daher keine Bits benötigt werden,
um die Koeffizienten zu kodieren, welche weggeschnitten wurden.
Daher ist es, um die Kodierungseffizienz zu erhöhen, wünschenswert, nach einer Quantisierung
so viele Zerotrees wie möglich
zu haben. Ein Verfahren ist es, einen „Post-Quantisierungsprozessor" 1211 (1011)
so zu verwenden, daß irgendeine
Post-Quantisierungsverarbeitung
(wie in 10 und 12 dargestellt)
eines jeden Vektors ausgeführt
wird, in einem Bemühen,
ihn in den Nullvektor zu verändern, wenn
dies nur eine vernachlässigbare
zusätzliche Verzerrung
des letztlich rekonstruierten Frames verursachen würde. Ein
Maß für jeden
Vektor kann berechnet werden und wenn es unter einem Schwellenwert
liegt, würde
der Vektor auf null gesetzt.
-
Nach
skalarer Quantisierung der Vektorelemente und Post-Quantisierungsverarbeitung,
um die Vektoren zu den Nullvektoren zu zwingen, werden, wo erforderlich,
eine Abtastung und eine Klassifikation der Baumkonten in einer Weise ähnlich zu
der in der skalaren ZTE-Kodierung,
ausgeführt.
Jedem Knoten wird eines von drei Symbolen „Zerotreewurzel", „bewertete
Zerotreewurzel" und „Wert" zugewiesen. Diese
Symbole haben die gleiche Bedeutung wie in der skalaren ZTE-Kodierung,
außer
daß die Knoten
Vektoren sind und die Klassifikation von Nullen und Nicht-Nullen
sich auf den gesamten Vektor bezieht. Ein Entropiekodierer wird
so verwendet, daß die
Symbole und die Wertetabellen kodiert werden. Wertetabellen sind
wie in der skalaren ZTE-Kodierung konstruiert. Die Entropiekodierung
der Werte benötigt
die Verwendung einer Vektorentropiekodierung anstatt einer skalaren
Entropiekodierung.
-
Eine
Ausführungsform
dieser Erfindung (wie in 11 gezeigt)
verwendet eine Vektorquantisierung des Waveletkoeffizientenvektors.
Vektorquantisierung (VQ) ist ein ausgereiftes Gebiet und verschiedene
gewünschte
Formen von VQ können
verwendet werden. Wie oben diskutiert, ist es wünschenswert, die Anzahl von
Zerotreewurzeln zu erhöhen,
wenn dies die Verzerrung des rekonstruierten Frames nicht signifikant
erhöht.
Um dieses Ergebnis zu erreichen kann die VQ so angepasst werden,
daß sie
eine Form einer toten Zone verwendet, wobei Vektoren mit einem Maß unter
dem Schwellenwert auf dem Index abgebildet werden, welcher als der Nullvektor
rekonstruiert wird.
-
Vektorquantisierung
ersetzt den Vektor an jedem Knoten des Baums mit einem Index durch
ein Kodierbuch von Vektoren, welches den besten Rekonstruktionsvektor
für diesen
Knoten auswählt. Nachdem
eine Vektorquantisierung, eine Abtastung und eine Klassifikation
der Baumknoten auf eine Weise ähnlich
der in einer skalaren ZTE-Kodierung ausgeführt wurde, wird jedem Knoten
eines der drei Symbole zugeordnet: „Zerotreewurzel", „bewertete Zerotreewurzel" und „Wert". Diese Symbole haben die
gleiche Bedeutung wie in einer skalaren ZTE-Kodierung, außer daß die Knoten nun Indizes in
einem Kodierbuch sind und sich null oder nicht null auf den Kodierbucheintrag
für jeden
Index bezieht. Ein Entropiekodierer wird so verwendet, daß die Symbole
und die Indizetabellen kodiert werden. Die Indizetabellen werden
wie in der skalaren ZTE-Kodierung konstruiert.
-
9 und 10 stellen
alternative Ausführungsformen
der vorliegenden Erfindung dar, welche die Vektorwavelettransformation
verwenden. Wieder werden, da die Kodierer 900 und 1000 aus 9 und 20 gleich den Kodierern aus 11 bzw. 12 sind,
die Vorrichtungen 908 bis 914 und 1008 bis 10014 nicht
diskutiert. Da diese Vorrichtungen die gleichen Funktionen wie dies
von 1108 bis 1114 bzw. 1208 bis 1214 ausführen, sind
die Beschreibungen für
diese Vorrichtungen identisch mit der obigen Diskussion.
-
Jedoch
verwenden die Kodierer 900 und 1000 anders als
die Kodierer 1100 und 1200 einen Vektororganisator 903 (1003)
in Verbindung mit einem Vektorwaveletbaumgenerator 904 (1104),
wie oben gemäß 13 diskutiert.
Nachdem die Vektorwaveletbäume
erzeugt sind, verhalten sich die Kodierer 900 und 1000 ähnlich den
Kodierern 1100 bzw. 1200.
-
Für Fachleute
ist offensichtlich, daß obwohl die
Vektor- oder Objektwaveletkodierung das Zerotree-Entropie-(ZTE-)Kodierungsverfahren
verwendet, sie auch mit anderen Kodierverfahren, wie z. B. dem Embedded-Zerotree-Wavelet-(EZW-)Algorithmus
implementiert werden kann.
-
Obwohl
verschiedene Ausführungsformen, welche
die Lehren der vorliegenden Erfindung verwenden gezeigt und hierin
im Detail beschrieben wurden, können
Fachleute leicht viele andere veränderte Ausführungsformen konstruieren,
welche immer noch diese Lehren verwenden.