-
Die
Erfindung betrifft ein Kompressions/Dekompressionsverfahren sowie
ein Dekompressionssystem zum Dekomprimieren von komprimierten Daten
nach den unabhängigen
Ansprüchen
1, 5, 8 und 9.
-
Datenkompressionsschemen
sind heute in Computersystemen weit 30 verbreitet. Diese Datenkompressionsschemen
bestehen aus miteinander verbundenen Stufen, um eine Kompression
oder eine Dekompression zu schaffen. Die einzelnen Stufen können kaskadenartig
ausgeführte
Anordnungen von Datenkompressionsschemen enthalten. Beispielsweise
werden gemäß der JPEG-(Joint
Photographic Experts Group) Standbild-Kompressionsnorm die Daten
mit Hilfe einer zweidimensionalen diskreten Kosinus-Transformation transformiert,
und dann werden die Koeffizienten quantisiert. Hierauf folgt eine
Differenz Puls-Code-Modulation (DPCM) der Gleichspannungs-Koeffizienten
und ein Lauflängencodieren
der Wechselspannungs-Koeffizienten.
Schließlich
werden die Ergebnisse nach den Huffman-Verfahren codiert. Da der
Dekompressionsteil eines Datenkompressionsystems das Inverse des
Kompressionsteils ist, sind Decodierer in aufeinander folgenden
Stufen kaskadenartig angeordnet.
-
Derartige
Datenkompressionstechniken sind mit Verlusten behaftet. In einer
verlustbehafteten Kompressionstechnik wird ein Teil der eingegebenen
Daten während
einer Kompression eliminiert oder quantisiert, so daß die komprimierten
Daten nicht in einem exakten "Duplikat" der eingegebenen
Daten dekomprimiert werden können.
Eine verlustbehaftete Bildkompression kommt oft bei Mehrfachstufen
vor.
-
Ein
Beispiel eines solchen Systems ist in 1 dargestellt.
Manchmal laufen die kaskadenartig angeordneten Stufen bei verschiedenen
Raten ab.
-
Für Echtzeitsysteme
mit kaskadenartig angeordneten asynchronen Stufen wird das Puffern
der Daten ein größeres Auslegungsproblem.
In 1 erhält
ein verlustbehafteter Kompressor 101 einen Dateneingang 110 mit
einer Rate R. In einer Ausführungsform
kann der Kompressor 101 ein Transformationscode-(TC-) Kompressor
sein, welcher Koeffizienten entsprechend den eingegebenen Daten
bei einer eingestellten Rate von R erzeugt. Der Ausgang des Kompressor 101 ist
mit dem Eingang eines Lauflängen-Codierers
(RLE) 102 verbunden, welcher den Ausgang von dem Kompressor 101 mit
einer Rate R erhält
und komprimiert. Ein Lauflängen-Codierer 102 ist
ein veränderlicher
Längencodierer
und erzeugt Token bzw. Belegungsbits (wobei nachfolgend der Einfachheit
halber nur noch von Token gesprochen ist) mit einer durchschnittlichen,
aber nicht konstanten Rate von 35 R–G entsprechend dessen Eingang.
Die Token, die von dem Lauflängen-Codierer 102 abgegeben
worden sind, sind mit dem Eingang eines Codierers 103 verbunden,
welcher die empfangenen Token in Code-Worte codiert. Diese Code-Worte
werden mit einer mittleren Rate von R–G erzeugt. Die Code-Worte
werden dann gespeichert oder auf einem Kanal übertragen.
-
Eine
Dekompression eines komprimierten Datenstroms mit Hilfe des Systems
in 1 ist der Kompression sehr ähnlich, mit der Ausnahme, daß die Stufen
umgekehrt werden. Der Decodierer 106 erhält den komprimierten
Datenstrom und erzeugt Token mit einer mittleren, aber nicht konstanten
Rate R–G.
Die Token werden von einem Lauflängen-Codierer 105 empfangen,
welcher Koeffizienten mit einer Rate R erzeugt. Die Koeffizienten
werden von einem verlustbehafteten Dekompressor 104 empfangen,
welcher einen rekonstruierten Dateneingang 111 erzeugt.
-
Wie
beschrieben, laufen die Stufen in dem verlustbehafteten Bildkompressionssystem
mit verschiedenen Raten ab. Die Raten der Stufen sind R und R–G, wobei
gilt: R > G ≥ 0. Dies ist
hauptsächlich
dem veränderten
Längencodieren
(d.h., dem Lauflängen-Codierer/Decodierer)
zuzuschreiben. Wenn in diesem Beispiel der Codierer und der Deco dierer
mit einer Rate R laufen, gibt es keine Schwierigkeit, da die synchron
betrieben werden können.
Andererseits ist ein Puffer notwendig, um die Rate des Codierers
und Decodierers zu mitteln.
-
Wenn
beim Stand der Technik eine langsamere Stufe nicht in der Lage ist,
zumindest mit einer Burstrate R betrieben zu werden, kann ein FIFO-Puffer
verwendet werden. Ein FIFO-Puffer
ist eine 30 bekannte asynchrone Lösung, um ihn zwischen Stufen
zwischenzuschalten, welche mit unterschiedlichen Raten arbeiten.
Mit Hilfe des FIFO-Puffers kann eine vorhergehende schnellere Stufe
mit ihrer maximalen Rate betrieben werden, bis der FIFO-Puffer voll
ist. Der FIFO-Puffer mittelt im wesentlichen die Raten von Ausgangscodes.
-
Die
Größe des notwendigen
FIFO-Puffers hängt
davon ab, wie lang ein Mitteln stattfindet. Mit anderen Worten,
die Größe des FI – FO-Puffers
bestimmt das Mittelungsf enster. wenn die FIFO-Größe die Größe des Bildes
ist, dann kann sich der FIFO-Puffer an alle Burstraten anpassen.
Je größer jedoch
die Größe des Puffers ist,
um so höher
werden die Kosten. Darüber
hinaus bewirkt eine größer bemessene
Größe eine
verminderte Rückkehr
infolge der minimalen Anzahl von Situationen, welche der erhöhten Größe des Puffers
angepaßt sind.
-
Ebenso
sind oft Codierer und Decodierer in anwenderspezifischen integrierten
Schaltungen (ASICs) implementiert. wenn ein Puffer erforderlich
ist, kann der Puffer auf demselben integrierten Schaltungschip wie der
Decodierer enthalten sein. Die Größe des Speichers steht in direkter
Beziehung zu der Gesamtgröße des Chips.
Je größer die
Größe des Puffers
ist, umso größer ist
die Größe der integrierten
Schaltung. Größere integrierte
Schaltungen kosten üblicherweise
mehr. Um die Chipgröße kleiner
zu halten, und dadurch die Gesamtkosten des Chips zu reduzieren,
sollte der Puffer auf die kleinstmögliche Größe verringert werden. Daher sollte
auch die Größe des Pufferspeichers
reduziert werden, die erforderlich ist, um die Kosten des Systems wirksam
zu reduzieren.
-
Aus
der ISO/IEC 11172–3,
International Standard, first edition, 1993-08-01 und der TECHNER,
D.: Der MPEG-2-Standard. In: FKT, 48. Jahrg. Nr. 4/1994, S. 155
bis 163 ist der MGEG-Audio-Standard, Layer 1 bis 3 bekannt. Bei
diesem Standard werden die Eingangs daten blockweise, nämlich in
Abschnitten zu je 1152 PCM-Abtastwerten in eine erste Symbolart
transformationscodiert, nämlich
in die Bits ihrer Spektralwert. Anschließend werden die Bits der Spektralwerte
auf die maximal mögliche
Menge eines MPEG-Audio-Datenblocks
begrenzt und daraufhin wurden die weitergegebenen Bits eines MPEG-Audio-Datenblocks kanalkodiert oder
bei dem Layer 3 explizit entropiecodiert. Bei diesem bekannten Codiersystemen
aus MGEG-2-Audio-Standard, Layer 1 bis 3, die eine Blockstruktur,
eine kaskadenartige Anordnung, und Codeworte am Ausgang des Kanalcoders
oder des Huffman-Encoders aufeisen, sind Übergabespeicher für die Ausgangs-
und Eingangsdaten der Codierstufe vorhanden, die dieses Codiersystem
in der Regel auf einer echtzeitfähigen
Rechenmaschine implementieren, wobei die einzelnen Codier-Blöcke üblicherweise
als Unterprogramme realisiert sind, und somit Übergabespeicher für die Ausgangs-
und Eingangsdaten der Codierstufe zwingend nötig sind.
-
Aus
der
US 4,394,774 , der
US 5,046,121 , der
US 5,051,840 und der
EP 0 426 260 A2 ist
das sog. "zonal
coding" von Transformationskoeffizienten
bekannt, bei welchem nur die signifikanten Koeffizienten, bei Bildern
sind dies die niederfrequenten Transformationskoeffizienten bis
zu einer vorherbestimmten Anzahl von Koeffizienten übertragen
werden.
-
Der
Erfindung liegt die Aufgabe zugrunde, die Reduzierung der Größe eines
Puffers in einem verlustbehafteten Datenkompressionssystem zu ermitteln.
Die genante Aufgabe wird durch die Gegenstände der unabhängigen Ansprüche gelöst. Zweckmäßige Ausführungsformen
werden in den Unteransprüchen
definiert.
-
Nachfolgend
wird die Erfindung anhand von bevorzugten Ausführungsformen unter Bezugnahme
auf die anliegenden Zeichnungen im einzelnen erläutert. Es zeigen:
-
1 ein
Blockdiagramm eines verlustbehafteten Bildkompressionssystems;
-
2 ein
Blockdiagramm einer Ausführungsform
eines Datenkompressionssystems gemäß der Erfindung;
-
3 ein
Ablaufdiagramm eines Kompressions/Dekompressionsprozesses der Erfindung;
-
4 ein
Ablaufdiagramm eines Prozesses gemäß der Erfindung, und
-
5 ein
Schaltungsdiagramm der Blockend-Schaltung gemäß der Erfindung.
-
Nunmehr
werden ein Verfahren und eine Einrichtung zum Komprimieren und Dekomprimieren
von Daten beschrieben. In der folgenden detaillierten Beschreibung
der Erfindung werden zahlreiche spezifische Details festgelegt,
wie spezifische Taktgeschwindigkeiten, Bitraten, Puffergrößen etc.,
um ein genaues Verständnis
der Erfindung zu schaffen. Die Erfindung ist jedoch nicht auf diese
spezifischen Details in der Praxis beschränkt.
-
2 ist
ein Blockdiagramm einer Ausführungsform
eines Kompressions/Dekompressionssystems gemäß der Erfindung. Das in 2 dargestellte
System ist ein verlustbehaftetes Kompressionssystem. Das System
arbeitet sehr ähnlich
wie das System in 1; eine speziffische Implementierung
jeder der Blöcke
in 1 ist in 2 enthalten.
In 2 werden Echtzeit-Bilddaten von einem Transformations-Kompressor 202 aufgenommen,
welcher Koeffizienten als Ausgangssignale erzeugt, welche von einem
Lauflängen-Codierer 203 aufgenommen
werden. Der Lauflängen-Codierer 203 erzeugt
Token, welche von einer vorzeitigen Blockende-Schaltung 211 empfangen
werden. Die Schaltung 211 gibt Token ab, welche von einem
FIFO 212 aufgenommen werden. Der FIFO 212 ist
freigestellt und für
das System nicht erforderlich, um die Erfindung anzuwenden. Ein
Huffman-Codierer 204 ist vorgesehen, um Token von dem FIFO 212 aufzunehmen
und codiert die Token, um komprimierte Daten zu erzeugen. Die komprimierten
Daten werden in einen Kanal 205 abgegeben. Der Kanal 205 kann
einen Speicher oder eine Speichereinheit oder in anderen Ausführungsformen
ein Übertragungsmedium
aufweisen.
-
Von
dem Kanal 205 aus werden die komprimierten Daten von einem
Huffman-Decodierer 206 aufgenommen, welcher die komprimierten
Daten in Token decodiert. Die von dem Huffman-Decodierer 206 abgegebenen
Token werden in einem FIFO 207 gespeichert. Bei der Erfindung
kann der FIFO 207 eine Speichereinheit oder ein Puffer
sein. Die in dem FIFO 207 gespeicherten Token werden von
einem Lauflängen-Decodierer 208 aufgenommen,
welcher die Token in Koeffizienten decodiert, welche von einem Transformations-Dekompressor 209 aufgenommen
werden. Die Ausgangswerte des Transformations-Dekompressors 209 sind
Echtzeit-Bilddaten.
-
Der
Transformations-Kompressor 202, der Lauflängen-Codierer 203,
die vorzeitige Blockende-Schaltung 211, der (freigestellte)
FIFO 212 und der Huffman-Codierer 204 bilden den
Codierteil des erfindungsgemäßen Systems.
Der Huffman-Decodierer 206, der FIFO 207, der
Lauflängen-Decodierer 208 und
der Transformations-Dekompressor 209 stellen den Decodierteil
des erfindungsgemäßen Systems
dar.
-
In
der Erfindung sind der Huffman-Decodierer 206 und FIFO 207 in
einer einzigen anwenderspezifischen integrierten Schaltung (ASIC)
integriert. Da FIFO 207 auf einem Chip untergebracht ist,
beeinflußt
dessen Größe unmittelbar
die Gesamtgröße des ASIC.
Bei der Erfindung ist die FIFO-Tiefe begrenzt, welche für das Datenkompressionssystem
erforderlich ist. In einer Ausführugnsform
ist die Decodierer-FIFO-Tiefe von FIFO 207 auf 16 8-Bit-Token und irgendwelche
zusätzlichen
Bits begrenzt, welche dem Token zugeordnet sind, oder bei einer
entsprechenden Norm (z.B. JPEG) erforderlich sind. Auf diese Weise
wird die Größe des ASIC genauso
begrenzt.
-
3 ist
ein Ablaufdiagramm der Arbeitsweise des Systems der 2.
Echtzeit-Bilddaten werden von dem Transformations-Kompressor 102 in
der Raster-Abtastreihenfolge(Verarbeitungsblock 301) erhalten.
In einer Ausführungsform
komprimiert der Kompressor 202 die Bilddaten mit Hilfe
der JPEG-Norm (Verarbeitungsblock 302). Der Kompressor 202 segmentiert
anfangs das Bild in (8 × 8)
Pixel-Blöcke.
Dann sieht der Kompressor 202 eine Transformation jedes
Blockes vor, um Koeffizienten zu erzeugen. Bei der Erfindung führt der
Kompressor 302 eine diskrete Kosinus-Transformation (DCT)
durch. Bei der Erfindung werden dieses Transformations-Koeffizienten
dann nicht-gleichförmig
quantisiert, um 64 quantisierte Koeffizienten zu erzeugen, welche
dann in einer Zick-Zack-Reihenfolge im Lauflängen-Codierer 203 angeboten
werden.
-
Der
Lauflängen-Codierer 203 führt eine
Lauflängen-Codierung
in der Zick-Zack-Koeffizientenfolge durch, um Token zu erzeugen
(Verarbeitungsblock 303). Der Lauflängen-Codierer 203 codiert
eine Reihe von Null-Koeffizienten in einem Token, welche eine Kategorie
und einen Zählwert
haben, welcher die Anzahl an Null-Token anzeigt. In JPEG gibt es drei
Typen von Token. Für
jeden Block haben die Gleichspannungs-Koeffizienten ein Gleichspannungs-Token
zur Folge. Irgendein Nicht-Null-Wechselspannungskoeffizient führt zu einem
wechselspannungs-Token. Wechselspannungs-Token bestehen aus zwei
Teilen. Ein Teil eines Wechselspannungs-Tokens drückt die
Nicht-Null-wechselspannungskoeffizientengröße aus. Ein zweiter Teil Wechselspannungs-Token
drückt
einen Anzahl von benachbarten Nullwert-Koeffizienten aus, welche
dem Nicht-Null-Wechselspannungskoeffizienten in der Zick-Zack-Reihenfolge
vorausgingen. Ein Blockende-(EOB-)Token wird abgegeben, nachdem
die letzten Nicht-Null-Koeffizienten in dem Block codiert worden sind
(wenn nicht der allerletzte Koeffizient nicht-null ist).
-
Die
Token werden von einer vorzeitigen Blockende-Schaltung 211 empfangen,
welche die Anzahl an Token für
einen ganz bestimmten Block auf eine vorherbestimmte Anzahl begrenzt.
(Verarbeitungsblock 304). Dies wird in einer Ausführungsform
dadurch erreicht, daß irgendein
Token über
der vorherbestimmten Anzahl abgebrochen wird. Die Token können dann
im FIFO 212 gespeichert werden (Verarbeitungsblock 305).
Der FIFO 212 wird verwendet, damit der Lauflängen-Codierer 203 und
der Huffman-Codierer 204 synchron arbeiten, wenn es zwischen
den beiden eine Raten-Fehlanpassung gibt. Wenn die Daten so codiert
werden, wie sie verfügbar
werden, so daß der
Codierteil des Systems einer Pipeline ähnelt, ist der FIFO 212 nicht
erforderlich.
-
Die
Token werden von dem Huffman-Codierer 204 (von dem FIFO 212 aus
oder von der vorzeitigen Blockende-Schaltung 211, wenn
der FIFO 212 in dem System nicht enthalten ist) aufgenommen,
welcher die Token in Code-Worte codiert (Verarbeitungsblock 306).
Die von dem Huffman-Codierer 204 abgegebenen Code-Worte
stellen die komprimierten Daten dar und werden an einen Kanal 205 abgegeben
oder in einem Speicher gespeichert (Verarbeitungsblock 307).
-
Dekompression
ist die Umkehr von Kompression. Die komprimierten Daten von dem
Kanal 205 werden von einem Huffman-Decodierer 206 aufgenommen,
welcher Token erzeugt (Verarbeitungsblock 308). Der FIFO 207 speichert
die Token, bis sie ein Lauflängen-Decodierer 208 decodieren
kann (Verarbietungsblock 309). Der Decodierer 208 decodiert
die Token von dem FIFO 207, um Koeffizienten zu erzeugen
(Verarbeitungsblock 310). Diese Koeffizienten werden von
dem Transformations-Dekompressor 209 aufgenommen, welcher
sie dann in Bilddaten dekomprimiert (Verarbeitungsblock 311).
-
Bei
der Erfindung sind die FIFO-Speicher 212 und 207 freigestellt
und können
enthalten sein, um eine asynchrone Lösung beim Zwischenschalten
zwischen Stufen zu schaffen, welche mit verschiedenen Raten arbeiten.
Beispielsweise würde
der FIFO 212 enthalten sein, wenn der Lauflängen-Codierer 203 und
der Huffman-Codierer 204 mit verschiedenen Raten arbeiten,
während
der FIFO 207 enthalten sein würde, wenn der Huffman-Decodierer 206 und
der Lauflängen-Decodierer 208 mit
verschiedenen Raten arbeiten.
-
Bei
der Erfindung ist die Größe des FIFO 207 begrenzt,
indem die Anzahl an Code-Worten begrenzt wird, welche der Huffman-Decodierer 206 zu
behandeln hat. Bei der Erfindung wird die Anzahl an Code-Worten,
welche der Huffman-Decodierer 206 behandelt, durch die
Anzahl an Code-Worten begrenzt, welche von dem Huffman-Codierer 204 erzeugt
worden sind. Die Anzahl an Codeworten, welche von dem Huffman-Codierer 204 erzeugt
worden sind, ist in direkte Beziehung zu der Anzahl an Token gebracht,
die er behandelt. Um die Anzahl an Token zu begrenzen, welche aufgenommen
werden, um dem Huffman-Codierer 204 codiert zu werden,
werden gemäß der Erfindung
Blöcke
beschnitten, welche mehr als eine vorherbestimmte Anzahl von Token
haben. Blöcke
mit mehr als einer vorherbestimmten Anzahl an Token werden durch
Erzwingen eines Blockende-Token beschnitten, wenn die Anzahl an
Token, welche von dem Codierer 203 erzeugt worden sind,
einen vom Benutzer gewählten
Schwellenwert erreicht hat. In einer Ausführungsform ist die vorherbestimmte
Anzahl an Token 32 Token pro Block. Da nur Nicht-Null-Koeffizienten
Token erzeugen, werden durch das Begrenzen der Anzahl an Nicht-Null-Gleichspannungskoeffizienten
in jedem Block die FIFO-Anforderungen reduziert. Folglich wird durch
Erzwingen eines vorzeitigen Blockende-Token der früher als
die normale Blockende-Bedingung erfolgt, die Anzahl an Token pro
Block bei dem Huffman-Codierer 204 unmittelbar begrenzt.
-
Die
Erfindung könnte
verwendet werden, um die Größe des FIFO-Speichers 212 in
dem Codierteil des Systems zu reduzieren, wenn es eine Raten-Fehlanpassung
zwischen dem Lauflängen-Codierer 203 und
dem Huffman-Codierer 204 gibt. In diesem Fall wird der
Teil der Koeffizienten in einem Block, welche größer als eine vorherbestimmte
Anzahl sind, beschnitten, so daß die
Anzahl an Token, die erzeugt werden können, auf ein vorherbestimmtes
Maximum begrenzt ist. Auf diese Weise wird die Anzahl an Token pro
Block direkt begrenzt.
-
Die
maximale Anzahl an Token pro Block, welche der Huffman-Codierer
oder -Decodierer verarbeiten muß,
kann entsprechend den Verhältnissen
zwischen den verschiedenen Betriebsraten ausgelegt werden. Wenn
beispielsweise der verlustbehaftete Kompressor mit einer Rate/Frequenz
von 20MHz läuft
und der Huffman-Codierer mit einer 10MHz-Token-Rate läuft, beträgt die maximale
Durchschnittsrate (R–G),
welche der Huffman-Codierer behandeln kann:
wobei die Komponenten in
diesem Beispiel Koeffizienten sind. Folglich ist in diesem Beispiel
die Anzahl an Token/Block auf 32 begrenzt. Dieses System gleicht
auch einen Decodierer aus, welcher mit der halben Rate des verlustbehafteten
Kompressors verläuft,
ob es nun den Codierer gibt oder nicht.
-
Zu
beachten ist, daß die
Erfindung nicht auf Kompressions- und Dekompressionssysteme beschränkt ist,
welche auf Blöcken
basieren. Stattdessen kann die Erfindung bei anderen Schemen/Verfahren
verwendet werden, in welchen die Daten in vordefinierte Einheiten
aufgeteilt sind. Auch ist die Erfindung nicht auf ein Benutzen von
Koeffizienten und Token beschränkt
und kann daher bei Systemen verwendet werden, in welchen die Einheiten
eine gewisse Anzahl von Komponenten enthalten.
-
Ein
vorzeitiger Blockende-Prozeß der
Erfindung ist in 4 dargestellt. Bei der Erfindung
beginnt der Prozeß durch
Initialisieren des Token-Zählens
bei null (Verarbeitungsblock 400). In einer Ausführungsform kommt
dies am Anfang jedes Blockes vor. Token werden als ein Ergebnis
des Codierprozesses abgegeben. (Verarbeitungsblock 401).
Als nächstes
werden bei der Erfindung die Anzahl Token gezählt, wenn sie abgegeben werden
(Verarbeitungsblock 402). Durch eine Kontrolle wird festgestellt,
ob alle Token abgenommen worden sind (Verarbeitungsblock 403).
Wenn dem so ist, endet die Verarbeitung dieses Blockes. Wenn dem
nicht so ist, wird die Verarbeitung im Prozeßblock 404 fortgesetzt.
-
Bei
einer Überprüfung wird
bestimmt, ob die Anzahl. an abgegebenen Token den benutzer-spezifischen
Grenzwert erreicht hat (Verarbeitungsblock 404). Bei einer
Ausführungsform
liegt der benutzer-spezifische Grenzwert bei 32 Token.
Wenn dieser Grenzwert für
einen vorgegebenen Block erreicht ist, wird die Verarbeitung beim
Verarbeitungsblock 405 fortgesetzt, wo ein Blockende (EOB-)Token
abgegeben wird, und die verbleibenden Koeffi zienten in diesem Block
werden verworfen. Wenn der Grenzwert nicht erreicht worden ist, dann
wird das Token noch abgegeben, um von dem Huffman-Decodierer codiert
zu werden, und die Verarbeitung wird beim Verarbeitungsblock 401 fortgesetzt.
-
Der
Ausgang des Systems ist vollständig
JPEG-kompatibel. Ferner wird bei der Erfindung eine verlustbehaftete
Stufe vor dem verlustfreien Codierer hinzugefügt. Durch das Hinzufügen der
verlustbehafteten Stufe in dem Codierer ist gemäß der Erfindung ein Ausfallen
in der verlustbehafteten Stufe in dem Decodierer infolge einer Raten-Fehlanpassung
vermieden.
-
Es
sollte beachtet werden, daß ein
Verwerfen der restlichen Koeffizienten analog einem Quantisieren der
Hochfrequenz-Koeffizienten schwerwiegender in diesen Blöcken ist.
Zu beachten ist, daß nur
auf Blöcke mit
vielen Hochfrequenz-Koeffizienten eingewirkt wird. Ein Eliminieren
der Hochfrequenz-Koeffizienten hat einen kaum visuell feststellbaren
Nachteil bei den rekonstruierten Bildern zur Folge.
-
5 ist
ein Blockdiagramm einer Ausführungsform
der Schaltungsanordnung die erforderlich ist, um ein vorzeitiges
Blockende durchzuführen.
In 5 weist die vorzeitige Blockende-Schaltung 500 einen
Zähler 501,
ein Register 502, einen Vergleicher 503, einen
Multiplexer 504 und ein UND-Glied 505 auf. An
den Freigabeeingang des Zählers 501 wird
das TOKEN-CLK-Signal
angelegt. An den Rücksetzeingang
des Zählers 501 wird
das BLOCK-CLK-Signal angelegt. Der Ausgang des Zählers 501 ist mit
den A-Eingang des Vergleichers 503 verbunden. Der B-Eingang
des Vergleichers 503 ist mit dem Ausgang des Registers 502 verbunden. Der
Eingang des Registers 502 weist 6 Daten-Bit Leitungen D0
bis D5 und ein Schreibfreigabe-(WEN)Signal auf. Der Ausgang des
Vergleichers 503 ist mit einem Eingang des UND-Glieds 505 verbunden.
An den anderen Eingang des UND-Glieds 505 wird das TOKEN-CK-Signal
angelegt. Das Ausgangssignal des UND-Glieds 505 ist der
Huffman-Taktimpuls HUFFMAN-ENC-CLK. Der Ausgang des Vergleichers 503 ist
auch mit dem Steuereingang des Multiplexers (MUX) 504 verbunden.
An einen Eingang von MUX 504 werden die von dem Huffmann-Decodierer 504 erzeugten
Token angelegt. An den anderen Eingang von MUX 504 wird
das Blockende-Token angelegt (EOB-TOKEN). In einer Ausführungsform
ist das EOB-TOKEN fest verdrahtet. In anderen Ausführungsformen
wird das EOB-TOKEN programmiert. Der Ausgang von MUX 504 ist
das mittels des Huffman-Codierers zu codierende Token (HUFFMAN-ENC-TOKEN).
-
Der
Zähler 501 zählt die
Anzahl Token in jedem Block über
das TOKEN-CLK-Signal. Der Zähler 501 wird
am Ende jedes Blockes rückgesetzt.
In einer Ausführungsform
wird der Zähler 501 mit
Hilfe des BLOCK-CLK-Signals rückgesetzt,
welches am Anfang eines neuen Blocks eingeführt wird. Das Register 502 enthält die maximale
Anzahl von zulässigen
Token. Der Wert wird in das Register 502 eingeschrieben,
wobei das WEN-Signal eingefügt
(aserting) wird. Wenn das WEN-Signal eingesetzt wird, werden die
Bits an den Daten-Eingängen
D0 bis D5 gehalten und in dem Register 502 gespeichert.
Bei einer Ausführungsform
ist ein Register 502 ein 6 Bit-Zähler, so daß Zahlen von 0 bis 63 gespeichert
werden können.
-
Der
Vergleicher 503 prüft
den Wert des Zählers 501 gegenüber dem
Wert im Register 502. Solange der Wert im Register 502 größer oder
gleich dem Wert im Zähler 501 ist,
ist der Ausgang des Vergleichers 503 "1" (d.h, hoch). Der "1"-Ausgang
bewirkt das Auswählen
der von dem MUX 504 abgegebenen Token, so daß ein Huffman-codiertes
Token abgegeben wird. Der binäre "1"-Ausgang des Vergleichers 503 gibt
das UND-Glied 505 frei, so daß, wenn der Token-Takt hoch
wird, ein Taktsignal wirksam von dem UND-Glied 505 als das Huffman-codierte
Taktsignal abgegeben wird. Wenn der Wert im Zähler 501 größer oder
gleich dem wert im Register 502 ist, ist das Ausgangssignal
des Vergleichers 503 eine Null, wodurch angezeigt wird,
daß es über dem
Token-Grenz wert liegt. In diesem Fall wird der Token-Taktausgang
von dem UND-Glied 505 gesperrt, indem einer der Eingänge des
UND-Glieds 505 0 ist. Ebenso bewirkt "0"-Ausgang
des Vergleichers 503, daß der Nulleingang des MUX 504 gewählt wird,
wodurch von dem MUX 504 das Blockende-(EOB-)Token abgegeben
wird. Folglich wird, solange der Wert im Register 502 größer als
der wert im Zähler 501 ist,
ein Token erzeugt. Andernfalls wird das Blockende-Token abgegeben,
und es werden keine weiteren Token erzeugt, bis der Zähler 501 durch
die wahre Blockende-Bedingung rückgesetzt
wird.
-
Die
vorzeitige Blockende-Schaltung 500 kann gesperrt werden,
indem das Register 502 um eins weniger als die Anzahl Pixels
in dem Block initialisiert wird. In einer Ausführungsform, in welcher die
Blöcke
eine Größe von (8
x 8) haben, bewirkt ein Plazieren des Werts von 63 in dem Register 502,
daß die
vorzeitige Blockende-Schaltung 500 gesperrt wird. Dies
ist darauf zurückzuführen, daß der Vergleicher
immer "1" abgibt, bis der
Token-Zählstand
63 oder größer ist.
Zu diesem Zeitpunkt wird dann das Blockende automatisch irgendwie abgegeben.
Daher wird niemals ein erzwungenes Blockende-Token erzeugt.
-
Gemäß der Erfindung
bleibt der Decodierer unverändert.
Daher ist, um die Erfindung durchzuführen, keine Änderung
beim Decodieren der Erfindung erforderlich. Folglich können bereits
existierende Decoder-Chips und -Auslegungen ohne weiteres verwendet
werden, um den Decodierteil des Systems der Erfindung auszuführen.
-
Die
festgestellte Bildqualität
der Erfindung ist infolge des vorzeitigen Blockende-Token-Systems
nicht herabgesetzt. In einem JPEG-System werden die Transformations-Koeffizienten
nicht-gleichförmig
quantisiert. Im allgemeinen werden die Hochfrequenz-Koeffizienten
größer quantisiert,
da das visuelle menschliche System weniger empfindlich ist bei hohen
Raumfre quenzen. Nur durch Beschneiden von Hochfrequenz-Koeffizienten
wird bei der Erfindung dieser Vorteil vorteilhaft ausgenutzt, um
ein Bild mit im wesentlichen derselben Qualität wie bei einem Bild zu erzeugen,
das ohne das vorzeitige Blockende gemäß der Erfindung komprimiert ist,
soweit das visuelle menschliche System dies überhaupt wahrnehmen kann. Ferner
sind die Blöcke,
welche viele Nicht-Null-Wechselspannungskoeffizienten haben (und
daher einem Beschneiden durch ein vorzeitiges Blockende unterzogen
werden) visuell verrauscht. Das visuelle menschliche System ist
unempfindlich gegenüber
einer Quantisierung von verrauschten Bildbereichen, so daß ein wahrgenommener
Qualitätsverlust
im Bild gering ist. Folglich wird bei dem Verfahren und bei der
Einrichtung der Erfindung die Anzahl an Gleichspannungs-Token pro
Block von dem Codierer aus direkt begrenzt. Auf diese weise kann
ein Decodierer einer vorherbestimmten Größe mit einer geringen Auswirkung
auf die visuelle Qualität
oder die Bitrate des Systems bei verringerten Hardware-Kosten erreicht
werden.
-
Vorstehend
ist somit ein Kompressions- und ein Dekompressionssystem beschrieben
worden.
-
Zu 1
- 110
- DATENEINGABE
- 101
- VERLUSTBEHAFTETER
KOMPRESSOR
- 102a
- ZUSÄTZLICHER
FIFO
- 103
- CODIERER
- 103a
- ZU
KANAL ODER SPEICHER
- 111
- REKONSTRUIERTER
DATENEINGANG
- 104
- VERLUSTBEHAFTETER
DEKOMPRESSOR
- 105a
- ZUSÄTZLICHER
FIFO
- 106
- DECODIERER
- 106a
- VOM
KANAL ODER SPEICHER
-
Zu 2
- 202
- TRANSFORMATIONS-KOMPRESSOR
- 203
- LAUFLÄNGEN-CODIERER
- 211
- VORZEITIGES
BLOCKENDE
- 204
- HUFFMAN-CODIERER
- 205
- KANAL
- 206
- HUFFMAN-DECODIERER
- 208
- LAUFLÄNGEN-DECODIERER
- 209
- TRANSFORMATIONS-DEKOMPRESSOR
- 209a
- ECHTZEIT-BILDDATEN
-
Zu 3
- 301
- VIDEO-BILDDATEN
ERZEUGEN
- 302
- DIE
VIDEO-BILDDATEN IN KOEFFIZIENTEN KOMPRIMIEREN
- 303
- LAUFLÄNGEN-CODIEREN
DER KOEFFIZIENTEN, UM TOKEN ZU ERZEUGEN
- 304
- BEGRENZEN
DER TOKEN AUF EINE VORHERBESTIMMTE ANZAHL
- 305
- DIE
TOKEN IN EINEM FIFO SPEICHERN (FREIGESTELLT)
- 306
- TOKEN
IN CODE-WORTE CODIEREN
- 307
- CODE-WORTE
AN KANAL ABGEBEN (ODER CODE-WORTE IN SPEICHER SPEICHERN)
- 308
- HUFFMAN-DECODIEREN
DER KOMPRIMIERTEN DATEN, UM TOKEN ZU ERZEUGEN
- 309
- TOKEN
IN EINEM FIFO SPEICHERN
- 310
- TOKEN
IM FIFO DECODIEREN, UM KOEFFIZENTEN ZU ERZEUGEN
- 311
- DIE
KOEFFIZIENTEN IN VIDEO-BILDDATEN DEKOMPRIMIEREN
-
Zu 4
- 400
- TOKEN-ZÄHLWERT AUF
NULL INITIALISIEREN
- 401
- EIN
TOKEN ABGEBEN
- 402
- DIE
ANZAHL TOKEN SO ZÄHLEN,
WIE SIE ABGEGEBEN WERDEN
- 403
- SIND
ALLE TOKEN VON DEM BLOCK ERSCHÖPFT?
- 404
- IST
ZÄHLWERT > BENUTZERSPEZIFIZIERTER
GRENZWERT?
- 405
- BLOCKENDE-TOKEN
WIRD ABGEGEBEN UND VERBLEIBENDE KOEFFIZIENTEN IN DIESEM BLOCK WERDEN
AUSGESCHIEDEN
-
ZU 5
- 501
- ÄHLER
- 505
- UND-GLIED
- 503
- VERGLEICHER ≥