DE102006061647B3 - Vorrichtung und Verfahren zum Kodieren eines Transformationskoeffizientenblockes - Google Patents

Vorrichtung und Verfahren zum Kodieren eines Transformationskoeffizientenblockes Download PDF

Info

Publication number
DE102006061647B3
DE102006061647B3 DE200610061647 DE102006061647A DE102006061647B3 DE 102006061647 B3 DE102006061647 B3 DE 102006061647B3 DE 200610061647 DE200610061647 DE 200610061647 DE 102006061647 A DE102006061647 A DE 102006061647A DE 102006061647 B3 DE102006061647 B3 DE 102006061647B3
Authority
DE
Germany
Prior art keywords
bit
magnitude
bits
predetermined
tuple
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
DE200610061647
Other languages
English (en)
Inventor
Jörg Mohr
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.)
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Original Assignee
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
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 Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV filed Critical Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Priority to DE200610061647 priority Critical patent/DE102006061647B3/de
Priority to PCT/EP2007/010756 priority patent/WO2008080516A1/de
Priority to EP09011939A priority patent/EP2131596B1/de
Priority to US12/521,276 priority patent/US20100111432A1/en
Priority to JP2009543355A priority patent/JP4745445B2/ja
Priority to EP07856524A priority patent/EP2109993B1/de
Application granted granted Critical
Publication of DE102006061647B3 publication Critical patent/DE102006061647B3/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • 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/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • H04N19/64Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission
    • H04N19/647Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission using significance based coding, e.g. Embedded Zerotrees of Wavelets [EZW] or Set Partitioning in Hierarchical Trees [SPIHT]
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]

Landscapes

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

Abstract

Eine Vorrichtung zum Kodieren eines Blockes von Transformationskoeffizienten, wobei die Transformationskoeffizienten jeweils mittels mehrerer Betragsbits dargestellt sind, so dass dieselben eine Folge von Betragsbitebenen definieren, umfasst einen Vorkodierer zum Durchlaufen der Betragsbits einer vorbestimmten der Betragsbitebenen in Tupeln von jeweils einer Mehrzahl von benachbarten Betragsbits und Kodieren vorbestimmter der Betragsbits der Tupel in Datenwörter derart, dass ein vorbestimmtes Betragsbit zusammen mit einem zugeordneten Vorzeichenbit in eines der Datenwörter kodiert wird, oder dass ein vorbestimmtes Betragsbit zusammen mit einem anderen vorbestimmten Betragsbit des gleichen Tupels in eines der Datenwörter kodiert wird, einen Datenwortzwischenspeicher zum Zwischenspeichern der Datenwörter und einen Entropiekodierer zum Kodieren der Datenwörter aus dem Datenwortzwischenspeicher in einen kodierten Datenstrom.

Description

  • Die vorliegende Erfindung bezieht sich auf die Kodierung von Transformationskoeffizientenblöcken, wie z. B. eines Bildes, wie sie beispielsweise im Verlauf der digitalen Bildkompressionsmethode nach dem JPEG2000-Standard vorkommt.
  • Die Schritte des JPEG2000-Kodierprozesses umfassen ein optionales Aufteilen des Bildes in sogenannte Kacheln bzw. Tiles, d. h. rechteckige Bildbereiche, eine Gleichsignalanteilpegelverschiebung, eine optionale Transformation der Farbkomponenten, die Durchführung einer diskreten Wavelet-Transformation, eine skalare Quantisierung der Wavelet-Koeffizienten, eine Anordnung der quantisierten Wavelet-Koeffizienten in zweidimensionalen Feldern, sogenannten „Codeblöcken", eine Block-Kodierung umfassend einen sogenannten „Koeffizientenbitmodellierprozess" und einen arithmetischen Kodiervorgang sowie ein Anordnen der kodierten Codeblock-Daten zu einem standardkonformen Kodierstrom. Beschrieben sind die Schritte beispielsweise in Christopoulos et al.: The JPEG2000 Still Image Coding System: An Overview, IEEE Transactions an Consumer Electronics, Bd. 46, Nr. 4, S. 1103–1127, November 2000.
  • Der rechenintensivste Teil unter diesen Schritten ist das Koeffizientenbitmodellieren. Bei diesem Schritt wird ein Codeblock in sogenannte Magnitude- bzw. Betragsbitebenen zerlegt, die in der Reihenfolge von den MSBs bzw. den signifikantesten Bits zu den LSBs bzw. den wenigst signifikanten Bits angeordnet bzw. erzeugt werden, sowie zugehörige Vorzeichenbits, die gesondert gehandhabt bzw. betrachtet werden. Jede Betragsbitebene wird in einer Folge von drei Coding-Pässen bzw. Kodierdurchläufen moduliert, mit Ausnahme der ersten Bitebene, die nur mit einem Kodierdurchlauf moduliert wird. Diese Kodierdurchläufe durchlaufen die Bits einer Betragsbitebene in einer bestimmten Reihenfolge. Angefangen wird am Bit der Position oben links, dann drei darunter liegende Bits, bevor um eine Spalte nach rechts gesprungen wird. So entsteht ein sogenannter Stripe bzw. Streifen der Breite des Codeblocks und der Höhe von vier Koeffizienten. Nachdem ein Codeblock so in horizontaler Richtung prozessiert wurde, wird der nächste Stripe vier Koeffizientenpositionen tiefer verarbeitet usw.
  • ISO/IEC15444-1 beschreibt näher, ob und welches Kodierschema während eines Kodierdurchlaufes zur Anwendung kommt. Insbesondere wird diese Entscheidung koeffizientenweise getroffen. In anderen Worten ausgedrückt werden beim ersten Kodierdurchlauf nur bestimmte Koeffizienten moduliert. Unter den restlichen Koeffizienten kodiert der zweite Kodierdurchlauf ebenfalls einen Teil. Der Rest wird von dem dritten Kodierdurchlauf modelliert. Welcher Koeffizient zu welchem Kodierdurchlauf gehört, hängt u. a. davon ab, ob der jeweilige Koeffizient signifikant ist bzw. von der Signifikanz seiner direkten Nachbarn. ISO/IEC15444-1, im Folgenden kurz der Standard genannt, definiert hierzu eine binäre Statusvariable für jeden Koeffizienten in einem Codeblock, den sogenannten „Signifikanzstatus". Anfänglich auf „insignifikant" initialisiert, wechselt sie auf „signifikant" an der Betragsbitebene, an der erstmalig ein gesetztes Bit des Koeffizienten zu modellieren ist und bleibt so bis zum Ende der Modellierung dieses Codeblocks gesetzt.
  • Für ein Bit eines Koeffizienten, das während eines Kodierdurchlaufes in einer bestimmten Bitebene durch ein Kodierschema modelliert wird, wird ein Datenbit zusammen mit jeweils einem Kontext-Index erzeugt. Dieser Kontext-Index ergibt sich in erster Linie aus den Signifikanzstatus-Variablen des Koeffizienten und seiner Nachbarn. Bei bestimmten Kodierdurchläufen, nämlich dem ersten und dem dritten, ergibt sich, dass auch das Vorzeichenbit des aktuellen Koeffizienten zusammen mit einem Kontext-Index zu mo dellieren ist, der wiederum von den Signifikanzstatusvariablen und der Vorzeichen seiner Nachbarn abhängt. Ein sogenanntes „Betragsverfeinerungs"- bzw. MR-Kodierschema bzw. der zweite Kodierdurchlauf wertet zusätzlich aus, ob dieses Schema bereits bei vorhergehenden Bitebenen auf den zu modellierenden Koeffizienten angewendet wurde, oder zum ersten Mal. Der nachgeschaltete arithmetische Kodierer erwartet die Bit-Kontext-Paare in der auf die oben beschriebene Weise festgelegten Reihenfolge.
  • Folgt man der Reihenfolge, in der die Bit-Kontext-Paare von dem arithmetischen Kodierer gemäß dem Standard zu Enkodieren sind, ergibt sich daraus eine sequentielle Folge in Bezug auf die Kodierdurchläufe, wie sie im Vorhergehenden beschrieben wurde, und wie sie insbesondere auch durch Software-Implementierungen eingehalten wird. Durch Implementierungen in Hardware lässt sich eine höhere Kodiergeschwindigkeit erreichen. Beispielsweise können mehrere Codeblöcke unabhängig voneinander gleichzeitig kodiert werden, indem mehrere Blockkodierer parallel instantiiert werden. Dies stellt allerdings einen enormen Ressourcenverbrauch dar, wie z. B. im Hinblick auf die benötigten Transistoren auf einer integrierten Schaltung oder im Hinblick auf die Gatteräquivalente bei einem FPGA (Field Programmable Gate Array).
  • In Lian et al.: Analysis and Architecture Design of Block-Coding Engine for EBCOT in JPEG 2000, IEEE Transactions an Circuits and Systems for Video Technology, Bd. 13, Nr. 3, März 2003, S. 219–230, wird beispielsweise ein Hardwaredesign des Block-Coders in JPEG2000 beschrieben, bei der Einsparungen an erforderlichen Überprüfungen pro Koeffizient in jedem Durchlauf, ob der jeweilige Koeffizient zu dem jeweiligen Durchlauf gehört, erzielt werden, indem die Zugehörigkeitsüberprüfungen parallelisiert werden und je nach Zugehörigkeit keines oder eines oder mehr Bits zu dem jeweiligen Durchlauf 4-er-Spalten oder Gruppen von 4-er-Spalten pro Durchlauf übersprungen werden. Einen Schritt weiter geht eine in Gangadhar und Bhatia: FPGA based EBCOT Architecture for JPEG2000, Field-Programmable Technology (FPT), 2003, Proceedings 2003, IEE International Conference, S. 228 bis 233, vorgeschlagene Hardwarelösung für den JPEG2000-Blockkodierer, wonach die Durchläufe parallelisiert werden, so dass weniger Taktzyklen zur Kodierung der Codeblöcke notwendig sind. Neben einem Speicher zur Speicherung der Betragsbits und Vorzeichenbits ist dabei ein Puffer zur Zwischenspeicherung aktualisierter Signifikanzstatusvariablen zwischen einer Verarbeitungseinheit vorgesehenen, die sich um den ersten Kodierdurchlauf kümmert, und einer zweiten Verarbeitungseinheit, die für die Kodierdurchläufe 2 und 3 zuständig ist.
  • Es bleibt aber weiterhin wünschenswert, eine in Hardware effektiv implementierbare Lösung für die Kodierung von Transformationskoeffizientenblöcken zu finden, wie sie eben beispielsweise bei der JPEG2000-Kodierung vorkommt.
  • In der US 2004/0228539 A1 wird ein Bitebenen-Codierungsdurchlaufgenerator beschrieben, der ein Bildcodierungsverfahren durchführt, das folgende Schritte umfasst: Teilen eines Eingangsbildes in Teilbänder mittels einer Wavelet-Transformation; Teilen jedes der bei dem Schritt der Wavelet-Transformation erzeugten Teilbänder in Codeblöcke, die jeweils eine vorbestimmte Größe aufweisen; Erzeugen einer Bitebene, die von einem höchstwertigen Bit bis zu einem mindestwertigen Bit in Einheiten des Codeblocks umfasst; Verarbeiten jedes von Abtastpunkten in der Bitebene anhand einer beliebigen einer Mehrzahl von Codierdurchläufen; und Durchführen einer arithmetischen Codierung gemäß Ergebnissen der Codierdurchlaufverarbeitung; bei der Codierdurchlaufverarbeitung werden aus einer Speicherungseinrichtung Signifikanz/Nicht-Signifikanz-Informationen ausgelesen, die angeben, ob Abtastpunkte in einem Bereich, der die Position eines derzeit in der Verarbeitung befindlichen Abtastpunktes umfasst und der durch eine vorbestimmte Anzahl von Abtastwerten besetzt ist, und diejenigen, die um den Bereich herum existieren, signifikant oder nicht-signifikant sind, und es wird ein paralleler Vergleich zwischen den Signifikanz/Nicht-Signifikanz-Informationen und einer Mehrzahl von voreingestellten übereinstimmenden Mustern durchgeführt, wodurch ein nächster zu verarbeitender Abtastpunkt erfasst wird.
  • In der US 2002/0027516 A1 wird ein Verfahren zur Entropiecodieren von Symbolen beschrieben, die für einen Codeblock, der Transformationskoeffizienten eines Digitalbildes aufweist, repräsentativ sind. Das Verfahren umfasst einen Signifikanzfortpflanzungsdurchlauf, einen Betragsverfeinerungsdurchlauf und einen Reinigungsdurchlauf zum Entropiecodieren der Symbole. Das Verfahren erzeugt vor dem Signifikanzfortpflanzungsdurchlauf der aktuellen Bitebene eine erste Liste von Positionen derjenigen Koeffizienten in dem Codeblock, die Symbole aufweisen, die während des Signifikanzfortpflanzungsdurchlaufs der aktuellen Bitebene entropiecodiert werden sollen. Das Verfahren erzeugt vor dem Betragsverfeinerungsdurchlauf der aktuellen Bitebene ferner eine zweite Liste von Positionen derjenigen Koeffizienten in dem Codeblock, die Symbole aufweisen, die während des Betragsverfeinerungsdurchlaufs der aktuellen Bitebene entropiecodiert werden sollen. Das Verfahren erzeugt ferner vor dem Reinigungsdurchlauf der aktuellen Bitebene eine dritte Liste von Positionen derjenigen Koeffizienten in dem Codeblock, die Symbole aufweisen, die während des Reinigungsdurchlaufs der aktuellen Bitebene entropiecodiert werden sollen.
  • In der US 2003/035476 A1 liest ein Bitebenen-Prozessor einen Codeblock, der als Einheit zum arithmetischen Codieren dient, aus einem SRAM aus. Nach einem Konvertieren des Codeblocks in die Form einer Bitebene liefert der Bitebenenprozessor Bitdaten an einen Durchlaufprozessor. Der Durchlaufprozessor umfasst einen s-Durchlauf-Prozessor, einen r-Durchlauf-Prozessor und einen c-Durchlauf-Prozessor. Jede von s-Durchlauf-, r-Durchlauf- und c-Durchlauf- Verarbeitungen wird parallel in einem derartigen Zustand durchgeführt, dass eine Startzeit derselben durch einen Betrieb zweier Verzögerungseinheiten um eine vorbestimmte Einheitszeit verschoben wird. Beispielsweise werden bei JPEG200 Spezialzweck-Unterteileinheiten, die Daten in drei jeweilige Durchläufe eines s-Durchlaufs (Signifikanzdurchlaufs), r-Durchlaufs (Verfeinerungsdurchlaufs) und c-Durchlaufs (Reinigungsdurchlaufs) aufteilen/einteilen, und Verarbeitungsvorgänge dieser Spezialzweck-Unterteileinheiten parallelisiert. In diesem Fall wird auf Ergebnisse von Durchlaufverarbeitungen in einer Bitebene eines Bits hoher Ordnung zum Zeitpunkt einer Durchlaufverarbeitung in einer Bitebene eines Bits niedriger Ordnung Bezug genommen. Die Vorverarbeitungen durch die Mehrzahl von Spezialzweck-Unterteileinheiten können parallel ausgeführt werden, während eine zeitliche Verzögerung in einem Umfang gehalten wird, dass eine Quer-Bezugnahme, die unter den Ergebnissen der Vorverarbeitungen nötig ist, durchgeführt wird. Beispielsweise kann diese Quer-Bezugnahme eine in einer Richtung erfolgende Bezugnahme sein, so dass auf ein Verarbeitungsergebnis des s-Durchlaufs bei der r-Durchlauf-Verarbeitung Bezug genommen wird und auf ein Verarbeitungsergebnis des r-Durchlaufs bei der c-Durchlauf-Verarbeitung Bezug genommen wird.
  • Die US 2005/0094881 A1 beschreibt eine Codiervorrichtung und ein Codierverfahren, bei denen eingegebene Bildinformationen durch Folgendes codiert werden: Speichern, in einer Speicherungseinrichtung, von Zustandsquantitätsinformationen, die eine vorbestimmte Zustandsquantität darstellen, die verwendet werden soll, während sie gemäß einem Verarbeitungsstatus des Codierprozesses sequentiell aktualisiert werden, wenn ein vorbestimmter Codierprozess an den Bildinformationen durchgeführt wird; Durchführen des Codierprozesses an den Bildinformationen für jede der Verarbeitungseinheiten durch Verwendung der diesen entsprechenden Zustandsquantitätsinformationen mit einer vorbestimmten Mehrzahl von Pixeln als Verarbeitungseinheit, wobei die Zu standsquantitätsinformationen mit der Mehrzahl von Pixeln, die der Verarbeitungseinheit der Bildinformationen entsprechen, als ein Wort in der Speicherungseinrichtung gespeichert werden, und wobei die Zustandsquantitätsinformationen, die zum Durchführen des Codierprozesses an den Bildinformationen der Verarbeitungseinheit notwendig sind, in Einheiten der Wörter aus der Speicherungseinrichtung ausgelesen werden.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren und eine Vorrichtung zum Kodieren eines Blockes von Transformationskoeffizienten, wie z. B. diejenigen eines Bildes, zu schaffen, die eine effektivere Implementierung in Hardware ermöglichen.
  • Diese Aufgabe wird durch eine Vorrichtung gemäß Anspruch 1 und ein Verfahren gemäß Anspruch 26 gelöst.
  • Eine erfindungsgemäße Vorrichtung zum Kodieren eines Blockes von Transformationskoeffizienten, wobei die Transformationskoeffizienten jeweils mittels mehrerer Betragsbits dargestellt sind, so dass dieselben eine Folge von Betragsbitebenen definieren, umfasst einen Vorkodierer zum Durchlaufen der Betragsbits einer vorbestimmten der Betragsbitebenen in Tupeln von jeweils einer Mehrzahl von benachbarten Betragsbits und Kodieren vorbestimmter der Betragsbits der Tupel in Datenwörter derart, dass ein vorbestimmtes Betragsbit zusammen mit einem zugeordneten Vorzeichenbit in eines der Datenwörter kodiert wird, oder dass ein vorbestimmtes Betragsbit zusammen mit einem anderen vorbestimmten Betragsbit des gleichen Tupels in eines der Datenwörter kodiert wird, einen Datenwortzwischenspeicher zum Zwischenspeichern der Datenwörter und einen Entropiekodierer zum Kodieren der Datenwörter (aus dem Datenwortzwischenspeicher in einen kodierten Datenstrom.
  • Ein Kerngedanke der vorliegenden Erfindung besteht darin, dass durch die Verwendung eines Vorkodierers, der beim Durchlaufen der Betragsbits einer vorbestimmten Betragsbitebene in Tupeln von jeweils einer Mehrzahl von benachbarten Betragsbits vorbestimmte der Betragsbits der Tupel jeweils aber zusammen mit einem Vorzeichenbit oder zu mehreren zusammen in ein Datenwort kodiert, und eines Zwischenspeichers für die Datenwörter, der zwischen den Vorkodierer auf der einen Seite und einen Entropiekodierer auf der anderen Seite geschaltet ist, eine schnellere Abarbeitung bzw. Kodierung erzielt werden kann. Die Unabhängigkeit des Kodiererbetriebs von dem Entropiekodiererbetrieb ermöglicht zudem, dass der Entropiekodierer beispielsweise Datenwörter anderer Vorkodierer, die für andere vorbestimmte Betragsbits zuständig sind, kodieren kann, während der Vorkodierer bereits eine nächste Betragsbitebene durchläuft.
  • Gemäß einem Ausführungsbeispiel der vorliegenden Erfindung kodiert der Vorkodierer zusammen mit einem vorbestimmten Betragsbit auch ein zugehöriges Vorzeichenbit in ein Datenwort, so dass das Datenwort beispielsweise ein Teildatenwort für das Betragsbit und ein Teildatenwort das zugehörige Vorzeichenbit aufweist. Die beiden Vorgänge können somit parallel zueinander in einem Taktzyklus vorkodiert werden. Der Entropiekodierer kann aus dem Datenwort in dem Zwischenspeicher das Betragsbit rekonstruieren und entropiekodieren und danach die Entropiekodierung des Vorzeichenbits abhängig von der Signifikanz des soeben enkodierten Betragsbits vornehmen oder nicht.
  • Gemäß einem weiteren Ausführungsbeispiel nimmt der Vorkodierer beim Durchlaufen der vorbestimmten Betragsbits die Vorkodierung so vor, dass in ein Datenwort wenigstens zwei vorbestimmte Betragsbits innerhalb eines Tupels kodiert werden. Dazu weist der Vorkodierer beispielsweise für jedes Betragsbit in einem Tupel eine Vorkodierereinheit zum Kodieren des betreffenden Betragsbits in ein Teildatenwort auf, die zusammen in einem Datenwort für das Tupel umfasst sind, so dass wiederum alle Verarbeitungen parallel durchgeführt werden. Zudem kann es vorgesehen sein, dass die Teildatenwörter, aus denen das entsprechende Betragsbit und der zugehörige Kontext für die Entropiekodierung entnehmbar sind, einen reservierten Zustand aufweisen, der anzeigt, dass das betreffende Betragsbit des entsprechenden Tupels nicht zu dem vorbestimmten Betragsbit gehört, so dass der Entropiekodierer in den Datenstrom zu kodierende Betragsbits von solchen, die nicht in den Datenstrom zu kodieren sind, unterscheiden kann.
  • Weitere Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die Figuren näher erläutert. Es zeigen:
  • 1 ein Blockschaltbild eines Bildkomprimierers, bei dem die erfindungsgemäße Transformationskoeffizientenblockkodierung angewendet werden kann;
  • 2 eine schematische Darstellung einer Aufteilung der Transformationskoeffizienten in Betragsbits und Vorzeichenbits;
  • 3 ein Blockschaltbild eines Blockkodierers gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 4 ein Blockschaltbild der Bitmodelliereinheit des Kodierdurchlaufes 1 (Pass 1) aus 3 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 5 ein Blockschaltbild der Bitmodelliereinheit für den Kodierdurchlauf 2 (Pass 2) aus 3 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 6 ein Blockschaltbild der Bitmodelliereinheit für den Kodierdurchlauf 3 (Pass 3) aus 3 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 7 ein Blockschaltbild des Durchlauf- bzw. Pass-Entscheiders von 3 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 8 eine schematische Darstellung zur Veranschaulichung der Größe der Schieberegistereinheit von 3 und des in derselben zu einem jeweiligen Zeitpunkt gespeicherten Inhalts; und
  • 9 ein Blockschaltbild eines Blockkodierers gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung.
  • 1 zeigt einen Bildkomprimierer 10 als Beispiel für einen Anwendungsfall, bei dem die nachfolgend beschriebenen Ausführungsbeispiele vorteilhaft verwendet werden können. Der Bildkomprimierer 10 von 1 ist dazu ausgelegt, ein Quellbild 12 bestehend aus beispielsweise in Spalten und Zeilen angeordneten Abtastwerten bzw. Pixelwerten in einen kodierten Datenstrom bzw. Codestrom 14 zu komprimieren. Dazu umfasst der Komprimierer 10 von 1 beispielsweise eine Hintereinanderschaltung von optional einem Kachelaufteiler 16, einem Gleichanteilpegelverschieber 18, optional einem Farbtransformator 20, einem Transformator 22 zur räumlichen spektralen Zerlegung, einem optionalen Quantisierer 24, einem Blockkodierer bzw. Block-Coder 26 und einem Datenanordner 28. Der Kachelaufteiler teilt das Bild 12 in beispielsweise rechteckige Bildbereiche auf, sogenannte Tiles bzw. Kacheln. Die weitere Verarbeitung wird pro Tile bzw. Kachel durchgeführt, so dass die weitere Komprimierung in den einzelnen Kacheln unabhängig voneinander stattfindet. Der Gleichsignalpegelverschieber 18 führt innerhalb jeder Kachel eine über alle Pixel der entsprechenden Kachel gleichmäßige Gleichsignalverschiebung durch, so dass beispielsweise nachher der Mittelwert der Pixelwerte, wie z. B. der Luminanzwerte, Null ergibt. Der Farbtransformator 20 führt optional noch eine Farbtransformation an den Pixelwerten durch, wobei die Farbtransformation optional ist und natürlich nur in dem Fall von Farbbildern 12 stattfindet. Daraufhin führt der Transformator 22 eine räumliche spektrale Zerlegung pro Kachel durch. In dem Fall eines zu erzeugenden JPEG2000-Codestromes 14 ist die Transformation beispielsweise einer Wavelettransformation, genauer eine diskrete Wavelettransformation, die auf jede Kachel einzeln angewendet wird. Auf diese Weise wird jede Kachel in unterschiedliche Auflösungspegel bzw. Zerlegungspegel zerlegt, die aus Subbändern von Transformationskoeffizienten bestehen, die Frequenzcharakteristika von lokalen Bereichen jeder Kachel beschreiben. Die Transformationskoeffizienten können bereits ganzzahlig sein. Der Quantisierer 24 unterzieht die Transformationskoeffizienten optional einer skalaren Quantisierung und fasst dieselben zu Codeblöcken zusammen, d. h. zu beispielsweise rechteckigen Arrays von Transformationskoeffizienten. Der Blockkodierer 26 entropiekodiert bitebenenweise die Transformationskoeffizienten in den Codeblöcken in Datenströme, woraufhin der Datenanordner 28 die arithmetisch kodierten Codeblock-Datenströme noch geeignet anordnet, um den Codestrom 14 zu bilden, wie z. B. einen JPEG2000-konformen Codestrom.
  • Der Blockkodierer 26 weist insbesondere, wie es in 1 gezeigt ist, einen Koeffizientenbitmodellierer 30 mit einem nachgeschalteten arithmetischen Kodierer 31 auf. Der Koeffizientenbitmodellierer 30 ordnet den Betragsbits der Koeffizienten Kontexte zu, die von dem arithmetischen Kodierer 32 zur arithmetischen Kodierung verwendet werden. Insbesondere ist der arithmetische Kodierer 32 ein kontextabhängig arbeitender binärer arithmetischer Kodierer, der ausgebil det ist, um ein aktuelles Intervall, das den augenblicklichen Zustand des arithmetischen Kodierers darstellt, abhängig von Schätzwahrscheinlichkeiten für das Auftreten eines jeweiligen Bitwertes für das nächste zu enkodierende Bit in zwei Hälften zu unterteilen, und unter diesen Hälften eine auszuwählen, um das aktuelle Intervall auf dieses Intervall zu beschränken, je nachdem wie der tatsächliche Bitwert des aktuellen zu kodierenden Bits ist, wobei die Schätzwahrscheinlichkeiten für jeden Kontext unterschiedlich sind, und der Kontext durch den Koeffizientenbitmodellierer 30 abhängig von benachbarten Signifikanzen und/oder Betragsbitwerten und einer Mehrzahl von möglichen Kontexten ermittelt wird. Der Kodierer kann dabei zudem adaptiv arbeiten, um die vorinitialisierten Schätzwahrscheinlichkeiten während der Kodierung an die tatsächlichen Wahrscheinlichkeiten pro Kontext anzupassen.
  • Die nachfolgende Erläuterung von Ausführungsbeispielen der vorliegenden Erfindung konzentriert sich zunächst auf eine JPEG2000-konforme Kompression, weshalb im Folgenden vor diesem Hintergrund die Aufgabe des Blockkodierers 26 näher veranschaulicht werden soll. Insbesondere sind von dem Blockkodierer 26 die einzelnen Betragsbits der Transformationskoeffizienten in einem Block in einer vorbestimmten bzw. festgelegten Reihenfolge in den arithmetisch kodierten Datenstrom des arithmetischen Kodierers 32 zu kodieren, nämlich insbesondere zunächst bitebenenweise von der signifikantesten Bitebene zur wenigst signifikanten Bitebene und innerhalb dieser Bitebenen durch Scannen der Koeffizientenbetragsbits in drei Durchläufen in einer festgelegten Scanreihenfolge, wobei in jedem Durchlauf nur Betragsbit kodiert werden, die bestimmte Kriterien erfüllen, derart, dass mit den drei Durchläufen aus dem arithmetisch kodierten Datenstrom alle Betragsbits rekonstruierbar sind. Um die Aufteilung in Bitebenen und die Scanreihenfolge innerhalb dieser Ebenen zu veranschaulichen, zeigt 2 exemplarisch einen Codeblock der Größe 3 × 8.
  • Insbesondere zeigt 2 bei 34 exemplarisch einen 3 × 8-Codeblock mit 3 × 8 Transformationskoeffizienten a bis x. Wie es durch den Pfeil 36 angedeutet ist, wird jeder Koeffizient a bis x durch n Betragsbits a1 ... n, x1 ... xn sowie ein jeweiliges Vorzeichenbit avz, ..., xvz dargestellt, wobei die Aufspaltung 36 in Betragsbits und Vorzeichenbits beispielsweise inhärent aus der Art der diskreten Wavelettransformation 22 hervorgeht oder aus der Quantisierung 24 (1). Die MSBs bzw. signifikantesten Betragsbits sind beispielsweise die Bits a1 ... x1 und bilden eine erste Betragsbitebene 381 . Ebenso lassen sich die anderen Betragsbits zu entsprechenden Bitebenen 382 ... 38n zusammenfassen. Jede Bitebene 381 ... 38n sowie die Vorzeichenbits 40 bilden also jeweils ein 3 × 8 Bitarray.
  • Die vorerwähnte Scanreihenfolge sieht nun vor, dass die Bits einer Bitebene 381 ... 38n in Viererspalten bzw. Tupeln von je vier in Spaltenrichtung benachbarten Betragsbits von einem Zeilenende aus bis zu dem anderen, d. h. streifenweise, gescannt werden, woraufhin der nächste Streifen in den nächsten Zeilen gescannt wird, und innerhalb jedes Viererspaltenvektors bzw. jedes Tupels die Betragsbits von oben nach unten gescannt werden. Für die Bitebenen 381 ... 38n lässt sich das Scanmuster folglich darstellen als
    ai, bi, ci, di, ii, ji, ki, li, qi, ri, si, ti, ei, fi, gi, hi, mi, ni, oi, pi, ui, νi, wi, xi, mit i = 1 ... n,
    wobei dieses Scanmuster hier exemplarisch sechs Viererspalten bzw. Tupel und zwei Streifen umfasst.
  • Ein dreifaches Scannen der Betragsbits der einzelnen Bitebenen wird nun gemäß dem nachfolgend beschriebenen Ausführungsbeispiel für einen Block-Coder 26 dadurch vermieden, dass die den jeweiligen Durchläufen zugeordneten Betragsbits mittels eines Scans erkannt und in Datenworte kodiert werden, aus denen sich die Bitwerte und die zugeordneten Kontexte ergeben, woraufhin dieselben nach Zwischenspeiche rung in einem Zwischenspeicher in geeigneter Reiheinfolge in einen arithmetisch kodierten Datenstrom enkodiert werden. Dabei wird auch ein ständiges Nachschlagen in einem Speicher vermieden, indem die Betragsbits und Vorzeichenbits zwischengespeichert sind.
  • 3 zeigt einen Blockkodierer 100 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Er umfasst eine Speichereinheit 102, einen Bitextraktor 104, eine Schieberegistereinheit 106, eine Koeffizientenbitmodelliererstufe 108, einen Zwischenspeicher 110 und eine arithmetische Kodiereinrichtung 112. Die Speichereinheit 102 ist beispielsweise ein Direktzugriffsspeicher, wie z. B. ein RAM, und fungiert als Schnittstelle zum Erhalt der quantisierten vorzeichenbehafteten Transformationskoeffizienten der zu kodierenden Codeblöcke, wie z. B. des Codeblocks 34 von 2. Der Bitextraktor 104 ist mit dem Speicher 102 gekoppelt, um auf den Speicherinhalt der Speichereinheit 102 Zugriffe 114 durchführen zu können, um von der Speichereinheit 102 Betragsbits und Vorzeichenbits zu lesen. Wann und auf welche Betragsbits und/oder Vorzeichenbits der Bitextraktor 104 zugreift, wird im Folgenden näher beschrieben. Jedenfalls ist der Bitextraktor 104 zuständig dafür, die Schieberegistereinheit 106 basierend auf den ausgelesenen Informationen von der Speichereinheit 102 mit Bits zu befüllen, die von der Koeffizientenbitmodellierstufe 108 benötigt werden, um die notwendigen Kontexterstellungen bzw. die notwendige Vorkodierung vorzunehmen. Etwas konkreter ausgedrückt, scannt der Bitextraktor 104 auf eine im Folgenden noch etwas detaillierter dargestellte Art und Weise Betragsbitebene für Betragsbitebene die Betragsbits der aktuellen Betragsbitebene entlang der vorgeschriebenen Streifen und befüllt die Schieberegistereinheit 106 während des Scannens fortwährend mit Informationen, so dass die Schieberegistereinheit 106 aufgrund ihrer Schieberegisterlänge, Informationsbits bezüglich eines aktuellen Ausschnitts der aktuellen Betragsbitebene entlang der Streifen umfasst, die die Koeffizientenbitmodellierstufe 108 aktuell für ihre Kontexterstellung bzw. Vorkodierung benötigt. Im Vorgriff auf die spätere detailliertere Beschreibung bildet der Bitextraktor 104 beispielsweise aus den Koeffizientenbetragsbits und den Vorzeichenbits durch bloße Übernahme die neu aufzunehmenden Betragsbits 108 der aktuellen Bitebene, durch bloße Übernahme die neu aufzunehmenden Vorzeichenbits 118 und durch geeignetes Kombinieren zugehörige Statusbits 120 und führt diese der Schieberegistereinheit 106 zu, die so dimensioniert ist, dass sie die einzelnen Bits 108, 110, 112 in einer Tiefe einer jeweiligen geeigneten Anzahl von Schiebestufen bzw. -rängen halten kann, wie es im Folgenden noch näher beschrieben wird. Am Rand des Codeblocks befindliche Nachbarbits werden entsprechend mit Nullen aufgefüllt, wie es in 3 exemplarisch für die oberen Nachbarbits dargestellt ist.
  • Vereinfachend ist in 3 dargestellt, das Schieberegister 106 sähe jeweils vier Register (schattiert dargestellt) zusammen mit je 14 Nachbarregistern vor, und zwar jeweils für die Koeffizientenbits 108, Vorzeichenbits 118 und Statusbits 120. Die Schieberegistereinheit 106 kann somit als mehrere Schieberegister 1061,2,3,4 aufweisend angesehen werden, jeweils eine für die Betragsbits, Vorzeichenbits und zwei unterschiedliche Statusbits, die im Folgenden noch näher beschrieben werden, wobei diese einzelnen Schieberegister 1061...4 miteinander synchronisiert sind, so dass pro Schiebeimpuls sämtliche Registerinhalte gleichzeitig um eine Position horizontal bzw. um einen Schieberegisterrang, d. h. um einen 6-er-Vektor in 3, weitergeschoben werden.
  • Intern zergliedert sich die Koeffizientenbitmodellierstufe 108 in mehrere Bitmodelliereinheiten 1081 , 1082 und 1083 , von denen die erste für den Pass 1 bzw. Durchlauf 1, die zweite für den Durchlauf 2 bzw. Pass 2 und die dritte für den Pass 3 bzw. Durchlauf 3 zuständig ist, und die im Folgenden noch näher beschrieben werden. Die einzelnen Einheiten 1081 1083 sind jeweils mit jeweiligen Bitregistern der Schieberegister 1061 1064 gekoppelt, um die entsprechenden Registerinhalte zu analysieren und für jedes zu modellierende Bit aus einem aktuellen Tupel von Betragsbits, das in 3 den schraffierten Registern entspricht, festzustellen, ob es gemäß dem jeweiligen Durchlauf bzw. Pass zu modellieren ist oder nicht, und, wenn ja, mit welchem Resultat. Die Bitmodelliereinheiten 1081 1083 sind insbesondere dazu ausgebildet, pro Tupel oder pro zu dem jeweiligen Pass gehörigen Betragsbit ein entsprechend vorkodiertes Datenwort inklusive im Folgenden noch näher erläuterter Steuerbits zu erzeugen und in jeweiligen Zwischenspeichern 1101 , 1102 und 1103 der Zwischenspeicherstufe 110 abzulegen. Datenworte, die zu Tupeln gehören, in denen sich kein zu dem jeweiligen Durchlauf gehöriges Betragsbit befindet, können verworfen werden, wie es im Folgenden beschrieben werden wird, ebenso wie Datenworte für nicht zu dem jeweiligen Durchlauf gehörige Betragsbits.
  • Die Bitmodelliereinheiten 1081 1083 können insbesondere ausgelegt sein, um in den Datenworten Steuerbits einzustellen, die durch die anschließende arithmetische Kodiereinrichtung 112 verwendet werden können, um die in die Zwischenspeicher 1101 1103 abgelegten Datenworte bzw. die in dieselben kodierten Betragsbits in der geeigneten Reihenfolge und unter Verwendung des richtigen Kontexts oder unter Aussetzung der arithmetischen Kodierung in einem anderen Modus, wie z. B. einem Klartextmodus, in den Datenstrom einzufügen, wie es im Folgenden noch näher erörtert werden wird. Hierzu weist die arithmetische Kodiereinrichtung 112 insbesondere einen Durchlaufentscheider 122 auf, dem ein arithmetischer Kodierer 124 nachgeschaltet ist. Der Durchlaufentscheider 122 fungiert als Kodierer der vorkodierten Datenworte in den Zwischenspeichern 1101 1103 und ist hierzu mit letztgenannten gekoppelt. Aus diesen Datenworten rekonstruiert der Durchlaufentscheider 122 die in den einzelnen Durchläufen 1, 2 und 3 bzw. Pass 1, Pass 2 und Pass 3 kontextmodellierten Bits mit zugehörigem Kontext und leitet diese Paare in der geeigneten Reihenfolge, d. h. Pass 1 ge folgt von Pass 2 gefolgt von Pass 3, an den arithmetischen Kodierer 124 weiter, wobei die weitergeleiteten Informationen neben den Bitwerten und den zugehörigen Kontextindizes auch Informationen über durch den arithmetischen Kodierer 124 zu verwendende Kodiermodi beinhalten können oder dgl., wobei die Steuersignale von dem Entscheider 122 zu dem arithmetischen Kodierer 124 in 3 allgemein mit 126 angezeigt sind. In anderen Worten ausgedrückt kodiert der Pass-Entscheider 122 die ausgelesenen Datenwörter in den Zwischenspeichern 110 zurück in Bit-Kontext-Paare 126 und führt diese dem nachgeschalteten arithmetischen Kodierer 124 in vorgeschriebener Weise und geeigneter Repräsentierung zu.
  • Im Vorhergehenden wurde grob der Aufbau des Blockkodierers 100 von 3 beschrieben sowie die Aufgaben und Funktionalitäten der einzelnen Einheiten grob skizziert. Bevor im Folgenden mit der detaillierten Beschreibung der Bitmodelliereinheiten 1081 1083 und des Pass-Entscheiders 122 und basierend darauf einer detaillieren Beschreibung der Funktionsweise des Blockkodierers 100 fortgefahren wird, soll im Folgenden noch einmal kurz grob das allgemeine Ziel des Zusammenspiels der Einheiten von 3 beschrieben werden, um auf diese Weise einen Überblick zu geben, der für das Verständnis der nachfolgenden detaillierten Beschreibung hilfreich sein kann. Wie bereits erwähnt, sorgt der Bitextraktor 104 für die Befüllung der Schieberegistereinheit 106. Der Bitextraktor 104 scannt dabei streifenweise die aktuelle Betragsbitebene. In erster Näherung kann man sich deshalb die Schieberegistereinheit 106 als ein Fenster vorstellen, das sich über die aktuelle Betragsbitebene entlang der Scanreihenfolge bewegt, mit dazu synchroner Bewegung eines entsprechenden Fensters in der Vorzeichenbitebene 40 (2) und unter Zwischenspeicherung dazugehöriger Statusbits für diese Fensterinhalte. Die Bitmodelliereinheiten 1081 1083 benötigen für ihre Arbeit keine weiteren Informationen als diejenigen in der Schieberegistereinheit 106, weshalb langwierige Speicherzugriffe 114 auf die Spei chereinheit 102 nicht notwendig sind. Zudem ist nur ein Durchlauf durch die aktuelle Betragsbitebene notwendig, obwohl von dem Standard wie im Vorhergehenden erörtert drei Durchläufe zur Festlegung der Reihenfolge festgelegt sind, in der die Betragbits in den Datenstrom kodiert werden sollen. Um Letzteres zu erzielen, kümmert sich jede der Bitmodelliereinheiten 1081 1083 nur um diejenigen Betragsbits in den Vierertupeln, die zu dem jeweiligen eigenen Pass gehören. Allgemein kann man sagen, dass sich der Pass 1 um Betragsbits von Transformationskoeffizienten kümmert, die noch nicht signifikant sind, d. h. deren Betragsbits in den signifikanteren Betragsbitebenen Null bzw. nicht-signifikant sind, aber zu Transformationskoeffizienten benachbart sind, die signifikant sind. Um Verwirrungen auszuschließen, wird darauf hingewiesen, dass ein Transformationskoeffizient in einer bestimmten Betragsbitebene als signifikant bezeichnet wird, wenn zumindest einer der Betragsbits in den signifikanteren Betragsbitebenen 1 ist, und derselbe in einer bestimmten Betragsbitebene „signifikant wird", wenn keiner der Betragsbits in den signifikanteren Betragsbitebenen 1 ist aber er während der Kodierung der aktuellen Bitebene noch in dieser Ebene durch ein Betragsbit von 1 signifikant wird. Ein Betragsbit wird als signifikant bezeichnet, wenn er 1 ist. Der Pass 2 kümmert sich um Transformationskoeffizienten, die in der aktuellen Betragsbitebene bereits signifikant sind. Der Pass 3 schließlich adressiert die restlichen Betragsbits, d. h. die Betragsbits von Transformationskoeffizienten, die nicht-signifikant sind und nicht in den Pass 1 fielen.
  • Die Signifikanzen der Transformationskoeffizienten in der aktuell zu kodierenden Betragsbitebene spielen bei der Modell- bzw. Kontextbildung, die durch die Bitmodelliereinheiten 1081 1083 durchgeführt wird, eine große Rolle, da hieraus die Kontexte bestimmt werden und diese Information bei Dekodierung bereits auch dem Dekodierer vorliegt und er somit die Kontextmodellierung nachbilden kann. Bereits jetzt sei darauf hingewiesen, dass die Entscheidung, ob ein bestimmtes Betragbit zu dem Pass 3 gehört mitunter davon abhängt, ob eines der Nachbarbetragsbits zwar in logischer Abfolge vor Pass 1 zu einem nicht-signifikanten Transformationskoeffizienten gehört, aber zu dem Pass 1 gehört und somit gegebenenfalls virtuell bzw. gemäß der im Standard festgelegten Reihenfolge, wonach die Durchläufe nacheinander durchgeführt werden, noch vor dem Ende des Pass 1 signifikant wird, in welchem Fall nämlich das entsprechende Betragsbit gegebenenfalls doch nicht dem Pass 3 angehört, sondern dem Pass 1. Das Problem des Signifikantwerdens von Nachbarbetragsbits betrifft aber natürlich nur diejenigen Nachbarbetragsbits, die gemäß der Betragsbitscanreihenfolge vor dem aktuell betrachteten Betragsbit liegen.
  • Die Bitmodelliereinheiten 1081 1083 füllen ihre jeweiligen Zwischenspeicher 1101 1103 mit aufeinander folgenden Datenworten, die der Reihe nach von dem Pass-Entscheider 122 ausgelesen werden, und zwar betragsbitebenenweise, also mit dem Zwischenspeicher 1101 beginnend so lange bis das letzte Datenwort der aktuellen Betragsbitebene ausgelesen worden ist, daraufhin fortfahrend mit dem Zwischenspeicher 1102 , so lange bis das letzte Datenwort aus der aktuellen Betragsbitebene ausgelesen worden ist, wiederum gefolgt von dem Zwischenspeicher 1103 , so lange bis dort das letzte Datenwort ausgelesen worden ist, wobei ausnahmsweise in der ersten bzw. signifikantesten Betragsbitebene gleich mit dem Zwischenspeicher 1103 begonnen wird, da dort noch kein Transformationskoeffizient signifikant ist, und somit auch kein Betragsbit dieser Ebene einem anderen Paß angehören kann als Pass 3. Die Datenwörter werden in dem Pass-Entscheider 122 auch dekodiert und in entsprechende Steuersignale für den arithmetischen Kodierer 124 umgewandelt, der daraus einen kodierten Datenstrom für den Codeblock bildet.
  • Im Folgenden wird nun vorab der interne Aufbau der Bitmodelliereinheiten sowie des Pass-Entscheiders von 3 näher beschrieben. 4 zeigt den Aufbau der Bitmodellier einheit 1081 . Sie ist für den Pass 1 zuständig, d. h. für den ersten Kodierdurchlauf, der auch als „Signifikanzfortpflanzungsdurchlauf" bzw. „significance propagation pass", bezeichnet wird, weil er Betragsbits von Transformationskoeffizienten betrifft, die sich in der Nähe von bereits signifikanten Transformationskoeffizienten befinden und somit wahrscheinlicher signifikant werden als solche Transformationskoeffizienten, die sich weiter entfernt von bereits signifikanten befinden. Wie im Vorhergehenden erwähnt, basiert die Entscheidung, ob ein entsprechendes Betragsbit in dem Kodierdurchlauf Pass 1 zu modellieren ist, darauf, ob der entsprechende Koeffizient für die aktuelle Bitebene noch insignifikant ist und mindestens einer seiner direkten Nachbarkoeffizienten signifikant ist oder im Verlaufe des ersten Durchlaufs signifikant wird.
  • Die Bitmodelliereinheit 1081 weist eine Analysevorhersageeinheit 200, eine Betragsbitvorkodiereinheit 202, letzterer eingangsseitig vorgeschaltete Multiplexer 204, 206, eine Vorzeichenbitvorkodiereinheit 208, letzterer eingangsseitig vorgeschaltete Multiplexer 210, 212, einen Aktualisierungsdemultiplexer 214, einen Gültigkeitsbitmultiplexer 216, ein Vierbitregister 218, einen Taktzähler 220, einen Koeffizientenwähler 222 sowie eine Steuerbitsteuerung 224 auf, wobei in 4 zum leichteren Verständnis noch der Zwischenspeicher 1101 sowie die Schieberegistereinheit 106 dargestellt sind.
  • Die Analysevorhersageeinheit 200 ist dazu vorgesehen, vorab, d. h. im Vorgriff auf das Schieben des nächsten zu bearbeitenden Tupels in den Teil des Schieberegisters 106, an dem die Bitmodelliereinheit 1081 das zu bearbeitende Tupel erwartet, welche Stelle in 4 mit Schraffur dargestellt sind, festzustellen, welche dieser Betragsbits dem Pass 1 angehören. Die Analyse/Vorhersageeinheit 200 trifft diese Entscheidung beispielsweise immer dann, wenn die Schieberegistereinheit 106 durch den Bitextraktor 104 (3) neu befüllt wird, d. h. bei jedem Schiebeimpuls. In 4 trifft die Analysevorhersageeinheit 200 beispielsweise die Entscheidung über Zugehörigkeit oder Nicht-Zugehörigkeit der Betragsbits des 4-er-Vektors qm, rm, sm, tm, die beim nächsten Schiebevorgang in der Registereinheit 106 zu dem aktuellen Tupel werden bzw. in den schraffierten Registerbereich verschoben werden, wo momentan die Betragsbits im, jm, km und lm befindlich sind. Um die Vorhersage treffen zu können, ist die Analyse/Vorhersageeinheit 200 mit Registerzellen der Registereinheit 106 gekoppelt, und zwar mit dem Teil 1062 , der die Betragsbits betrifft, wie es mit einem Pfeil 226 angedeutet ist, und dem Teil 1063 , der die ersten Statusbits betrifft, wie es mit einem Pfeil 228 angedeutet ist, wobei die ersten Statusbits die Signifikanz entsprechender Koeffizienten bezüglich der aktuellen Bitebene anzeigen, wie es im Folgenden noch detailliert erörtert wird.
  • An einen Ausgang der Analyse/Vorhersageeinheit 200 schließt sich das Register 218 an, um von der Analyse/Vorhersageeinheit 200 das Ergebnis der Vorhersage in Form eines 4-Bit-Vektors zu erhalten, der pro Betragsbit des als nächstes aktuellen Tupels durch ein entsprechendes Bit iae, jae, kae und lae aufweist, das angibt, ob das jeweilige Betragsbit qm, rm, sm bzw. tm im Nachfolgenden Schiebezyklus durch die Bitmodelliereinheit 1081 zu verarbeiten ist oder nicht.
  • Sowohl ein Eingang des Multiplexers 216 als auch ein Eingang des Koeffizientenwählers 222 sind mit dem Register 218 gekoppelt. Der Koeffizientenwähler 222 ist ausgebildet, um auf Basis des Registerinhaltes des Registers 218 die zu modellierenden bzw. vorzukodierenden Betragsbits des Passes 1 auszuwählen und diese Auswahl in Form eines Multiplexersteuersignals an den Multiplexer 210, 212, 204, 206 und 216 bzw. den Demultiplexer 214 mitzuteilen. Die Analyse/Vorhersageeinheit 200 gibt ferner eine Vorhersage über die Anzahl der zum Pass 1 gehörigen Betragsbits in dem als nächstes an der Reihe seienden Tupels aus, und zwar an den Taktzähler 220, der auf diese Weise an dem Beginn jedes Schiebezyklus bzw. nach einem Schiebevorgang in dem Schieberegister 106 auf einen Wert vorinitialisiert ist, der der Anzahl der zu dem Pass 1 gehörigen Betragsbits in dem aktuellen Betragsbittupel entspricht. Der Taktzähler 220 dekrementiert dann beispielsweise seinen Zählerinhalt basierend auf einen Verarbeitungstakt, den derselbe von dem Koeffizientenwähler 222 erhält, der in dem Verarbeitungstakt das Multiplexersignal nacheinander auf die zu dem Pass 1 gehörigen Betragsbits einstellt, wie sie in dem Register 218 angezeigt sind.
  • Der Multiplexer 216 ist ausgebildet, um abhängig von dem Multiplexersignal von dem Koeffizientenwähler 222 das durch das Multiplexersignal angezeigte Bit aus dem Register 218 als Gültigkeitsbit bzw. Valid-Bit an seinen Zwischenspeicher 1101 auszugeben. Der Multiplexer 204 ist eingangsseitig mit speziellen Registerzellen bzw. Registerplätzen der Schieberegistereinheit aus dem Teil 1062 für die Betragsbits gekoppelt, und ist ausgebildet, um abhängig von dem Multiplexersteuersignal von dem Koeffizientenwähler 222 eine das durch das Multiplexersignal angezeigte Bit speichernde der Betragsbitregisterzellen mit einem Eingang der Betragsbitvorkodiereinheit 202 und optional einem Eingang der Vorzeichenbitvorkodiereinheit 208 zu koppeln, indem ein entsprechender der Eingänge des Multiplexers 204 auf einen entsprechenden Ausgang des Multiplexers 204 geführt wird. Entsprechendes gilt auch für die Multiplexer 210, 212 und 206. Der Multiplexer 210 beispielsweise ist eingangsseitig mit speziellen Vorzeichenbitzellen aus dem Teil 1061 der Schieberegistereinheit 106 gekoppelt und ausgebildet, um abhängig von dem Multiplexersignal einen entsprechenden Teilsatz dieser Registerinhalte bzw. Vorzeichenbits über den Ausgang des Multiplexers 210 an einen weiteren Eingang der Vorzeichenbitvorkodiereinheit 208 auszugeben. In entsprechender Weise ist der Multiplexer 212 zwischen spezielle Registerzellen aus dem Teil 1063 für die ersten Statusbits der Schieberegistereinheit 106 und einen weiteren Eingang der Vorzeichenbitvorkodiereinheit 208 und der Multi plexer 206 zwischen spezielle Registerzellen in dem Teil 1063 der Schieberegistereinheit 106 und einen weiteren Eingang der Betragsbitvorkodiereinheit 202 geschaltet, um abhängig von dem Multiplexersignal einen Teil der ersten Statusbits dieser speziellen Registerzellen an die jeweilige Einheit auszugeben.
  • Die so eingehenden Signale werden von den Vorkodiereinheiten 208 und 202 verwendet, um jeweils ein Paar aus Datenbit 230 bzw. 232 und Kontext-Index bestehend aus 2 Bits 234 bzw. 236 auszugeben, wobei das Datenbit den Bitwert des Vorzeichenbits bzw. des Betragsbits des durch das Multiplexersignal angezeigten aktuell zu verarbeitenden Transformationskoeffizienten angibt, während der Kontextindex jeweils dazu auf den zugehörigen zu verwendenden Kontext zeigt.
  • Wie es in 4 durch einen Pfeil 238 angezeigt ist, kann es vorgesehen sein, dass die Vorzeichenbitvorkodiereinheit 208 zusätzlich bei Ihrer Kodierung bzw. Kontextbildung ein Bypass-Modus-Bit 240 verwendet, das von der Steuerbitsteuerung 224 neben einem Pass-Ende-Bit 242 ausgegeben wird. Die Bedeutung dieser Steuerbits 240 und 242 wird im Folgenden noch näher erörtert. Die Bits 230, 242 bilden zusammen ein 12-Bit-Wort 244, das in den Zwischenspeicher 2101 eingegeben wird. Der Zwischenspeicher 1101 kann ausgebildet sein, um lediglich Datenwörter 244 zwischenzuspeichern, bei denen das gleichzeitig eintreffende Gültigkeitsbit 246, das von dem Multiplexer 216 ausgegeben wird, anzeigt, dass das aktuelle Multiplexersignal auf einen zu dem Pass 1 gehöriges Betragsbit zeigte.
  • Wie es in 4 ferner zu sehen ist, wird das von der Betragsbitvorkodiereinheit 202 ausgegebene Datenbit 232 auf einen Eingang des Demultiplexers 214 rückgekoppelt. Letztere ist ausgangsseitig mit Registerzellen aus dem Bereich 1063 gekoppelt, nämlich denjenigen, die die ersten Statusbits für die aktuellen Betragsbits (schraffiert dargestellt) enthält, um abhängig von dem Multiplexersignal das Datenbit 232 zur Aktualisierung des ersten Statusbits zu verwenden, das dem Betragsbit zugeordnet ist, das gerade durch die Betragsbitvorkodiereinheit 202 modelliert worden ist. Auf diese Weise wird nämlich die Signifikanz des entsprechenden Koeffizienten aktualisiert.
  • Die vorhergehende Beschreibung ging lediglich grob auf den Aufbau und die Einzelfunktionsweise der Komponenten der Bitmodelliereinheit 1081 ein. Im Folgenden soll deshalb das Zusammenspiel der einzelnen Komponenten der Bitmodelliereinheit 1081 im Zusammenspiel mit der Schieberegistereinheit 106, dem Zwischenspeicher 1101 sowie dem Bitextraktor 104 unter gleichzeitiger Bezugnahme auf 8 und 3 näher erläutert werden. 8 versinnbildlicht einen Ausschnitt aus der Speichereinheit 102 (3) nämlich einen Ausschnitt aus den Betragsbits und Vorzeichenbits der Transformationskoeffizienten eines aktuell zu kodierenden Codeblocks. Insbesondere sind die einzelnen Vorzeichenbits und Betragsbits durch Würfel 250 bzw. 252 versinnbildlicht. Insbesondere sind die Vorzeichenbits 250 in Zeilen und Spalten nebeneinander liegend angeordnet dargestellt, in Entsprechung der entsprechenden Transformationskoeffizienten in dem zu kodierenden Codeblock. Nur ein Ausschnitt der Vorzeichenbits 250 ist gezeigt, und zwar ein Ausschnitt aus Vorzeichenbits 250 in einem aktuellen Streifen 254 plus der angrenzenden Zeilen 256 bzw. 258 des darüber und darunter befindlichen Streifens. Auch die Betragsbits 252 der aktuellen Bitebene sind als in Zeilen und Spalten nebeneinander liegend dargestellt, wobei ebenfalls lediglich ein Teil bzw. Ausschnitt aus der aktuellen Bitebene dargestellt ist, der dem Teil aus der Vorzeichenbitebene entspricht, d. h. einem Teil eines entsprechenden Streifens 260 mit den Betragsbits 252 der darüber und darunter befindlichen Zeile 262 und 264. Lediglich der Vollständigkeit halber wird darauf hingewiesen, dass in vertikaler Richtung zueinander ausgerichtete Betrags- und Vorzeichenbits in einander entsprechenden Zeilen unter den Zeilen 254264 in 8 zu gleichen Transformationskoeffizienten gehören sollen.
  • Die Betragsbits von weniger signifikanten Bitebenen als der aktuellen Bitebene sind in 8 nicht dargestellt. Signifikantere und somit bereits kodierte Betragsbits der signifikanteren Bitebenen sind allerdings in 8 erkennbar und liegen der Reihe nach hinter der aktuellen Bitebene.
  • Wie nun bereits im Vorhergehenden beschrieben wurde, füllt der Bitextraktor 104 bei jedem Schiebevorgang der Schieberegistereinheit 106 mittels Speicherzugriffen 114 (2) letztere wieder mit Vorzeichenbits 250 bzw. Betragsbits 252 aus der Speichereinheit 102, 3, so dass sich in dem Schieberegister 106 zu jedem Zeitpunkt immer ein Ausschnitt aus der Vorzeichenbitebene bzw. der aktuellen Betragsbitebene befindet. Diese Ausschnitte sind in 8 bei 266 und 268 hervorgehoben dargestellt. Wie zu erkennen ist, befindet sich zu einem betrachteten Zeitpunkt in dem Teil 1061 der Schieberegistereinheit ein Ausschnitt aus dem Vorzeichenbitarray von fünf aufeinander folgenden Spalten und sechs übereinander liegenden Zeilen, nämlich den vier Zeilen des aktuellen Streifens 254 und der Nachbarzeilen 256 und 258. Auf entsprechende Weise befindet sich in dem Teil 1062 der Schieberegister 106 zu jedem Zeitpunkt ein Ausschnitt aus der aktuellen Betragsbitebene von vier Spalten Länge zu je sechs Zeilen 260264.
  • Wie es in 8 zu erkennen ist, sind die Ausschnitte 266 und 268 der in den Zeilen 1061 und 1062 der Schieberegistereinheit 106 gespeicherten Vorzeichenbits 250 bzw. Betragsbits 252 derart zueinander ausgerichtet, dass zu einem Transformationskoeffizienten, für die augenblickliche Betragsbits 252 in dem Teil 1062 zwischengespeichert ist, auch das entsprechende Vorzeichenbit 250 des jeweiligen Transformationskoeffizienten in dem Teil 1061 zwischengespeichert ist. Insbesondere ist in der Schieberegistereinheit für jedes zu speichernde Bit eine Registerzelle vorgesehen, die in 8 ebenfalls als durch die Würfel in den entsprechenden Abschnitten 266 und 268 versinnbildlicht an gesehen werden können. Die Registerzellen der Teile 1061 und 1062 sind dabei derart miteinander verschaltet, dass die Registerinhalte in 8 von rechts nach links verschoben werden, so dass bei jedem Schiebevorgang eine Spalte von Vorzeichenbits 250 bzw. Betragsbits 252 die Schieberegistereinheit 106 auf der einen Seite, in 8 nämlich links, verlässt, und an dem anderen Ende des Schieberegisters die entsprechenden Teile 1061 und 1062 mit einer nächsten Spalte 270 bzw. 272 von Vorzeichenbits 250 bzw. Betragsbits 252 aufgefüllt werden. In 8 entspricht dies einer Verschiebung des zwischengespeicherten Abschnittes 266 bzw. 268 in der Vorzeichenbitebene bzw. Betragsbitebene pro Schiebevorgang virtuell um eine Spalte nach rechts. Der Bitextraktor 104 ist nun derart ausgebildet, dass er die Befüllung des Teiles 1061 und 1062 mit Vorzeichenbits 250 bzw. Betragsbits 252 durchführt, die eine aneinander zugeordnete Spalte von Transformationskoeffizienten betreffen, so dass sich der Versatz zwischen dem Inhalt des Vorzeichenbitteiles 1061 und dem augenblicklichen Inhalt des Betragsbitinhaltes 1062 der Schieberegistereinheit 106 am hinteren Schieberegisterende ergibt, wo Vorzeichenbits in dem Teil 1061 zwischengespeichert sind, die diesen Teil beim nächsten Schiebevorgang verlassen, und für die keine Betragsbits mehr in dem Teil 1062 zwischengespeichert sind.
  • Wie bereits im Vorhergehenden erwähnt, benötigen die Bitmodelliereinheiten 1081 und 1082 für ihre Verarbeitung auch Statusbits, nämlich erste und zweite Statusbits. Die ersten Statusbits geben jeweils für einen Transformationskoeffizienten an, ob derselbe bezüglich der aktuellen Betragsbitebene signifikant ist oder nicht. Erneut sei darauf hingewiesen, dass sich der Zustand der Signifikanz der aktuellen Betragsbitebene für einen Transformationskoeffizienten nach dem – bzw. währenddessen – virtuellen ersten Durchlauf bzw. Pass 1 ändern kann. Der Teil 1063 der Schieberegistereinheit 106 ist nun derart dimensioniert, dass er für sechs aufeinander folgende Spalten von Transformationskoeffizien ten in den Zeilen 260264 entsprechenden Zeilen jeweils ein Statusbit 274 speichert, die in 8 ebenfalls als Würfel dargestellt sind. Insbesondere speichert die Schieberegistereinheit 106 in dem Teil 1063 zu jedem Zeitpunkt erste Statusbits 274 für Transformationskoeffizienten von sechs benachbarten Spalten zu je sechs Zeilen, von denen fünf Spalten die ersten Statusbits zu Transformationskoeffizienten enthalten, zu denen die Vorzeichenbits 250 in dem Ausschnitt 266 des Teils 1061 enthalten sind. Zusätzlich sind erste Statusbits für Transformationskoeffizienten in einer 6-er Spalte von Transformationskoeffizienten enthalten, mit deren Vorzeichenbits 250 bzw. Betragsbits der aktuellen Bitebene die Teile 1061 und 1062 der Schieberegistereinheit 106 erst beim nächsten Schiebevorgang befüllt werden.
  • In der Darstellung von 8 können ebenfalls die Würfel 274 gleichzeitig auch als die entsprechenden Registerzellen angesehen werden, die derart verschaltet sind, dass sie ihre Inhalte spaltenweise verschieben, und zwar in 8 ebenfalls von rechts nach links im gleichen Takt wie die anderen Teile 1061 und 1062 . Die Befüllung übernimmt ebenfalls der Bitextraktor 104 und zwar durch Bitkombination, wie z. B. ein logisches ODER zwischen in Signifikanzrichtung in einer Linie angeordneten Bits, auf der Basis der durch Schraffur hervorgehobenen Betragsbits 276 in den signifikanteren Betragsbitebenen als der aktuellen Betragsbitebene für Transformationskoeffizienten, die an den Positionen der Spalte 272 befindlich sind, mit deren Betragsbits der aktuellen Bitebene die Registerzellen am vorderen Ende des Teils 1062 der Schieberegistereinheit 106 erst beim nächsten Schiebeimpuls befüllt werden. Der Befüllvorgang, der zu den jüngsten Einträgen in dem ersten-Statusbit-Teil 1063 geführt hat, ist in 8 mit dem Pfeil 278 angedeutet.
  • Schließlich ist auch in dem Schieberegister 106 ein Teil 1064 vorgesehen, in dem zweite Statusbits gespeichert sind, deren Bedeutung und Relevanz noch aus der folgenden Beschreibung deutlich wird. Jedenfalls speichert der Teil 1064 die zweiten Statusbits für Transformationskoeffizienten lediglich einer Spalte und zwar in lediglich vier Zeilen, die den Zeilen des Streifens 260 bzw. 254 entsprechen, wobei die zweiten Statusbits ebenfalls als Würfel versinnbildlicht sind, die mit dem Bezugszeichen 280 angezeigt sind. Bei jedem Schiebevorgang in der Schieberegistereinheit 106 werden die zweiten Statusbits 280 aktualisiert, derart, dass sie immer für die Transformationskoeffizienten definiert sind, deren Betragsbit in der ausgangsseitigen Spalte in dem Streifen 260 zwischengespeichert sind, um beim nächsten Schiebevorgang aus dem Teil 1062 der Schieberegistereinheit 106 verdrängt zu werden. Der Bit-Extraktor 104 aktualisiert die zweiten Statusbits 280 bei jedem Schiebevorgang der Schieberegister 106 aus schraffiert hervorgehobenen Betragsbits 282 in signifikanteren Betragsbitebenen als der aktuellen Betragsbitebene für die soeben erwähnten Transformationskoeffizienten in dem Streifen 260, indem der Bitextraktor 104 für jeden Transformationskoeffizienten die entsprechenden Betragsbits daraufhin überprüft, ob zumindest zwei dieser Betragsbits Eins bzw. signifikant sind.
  • Zurückkehrend zur 4 ist nun die Analyse/Vorhersageeinheit 200 derart mit den Teilen 1062 und 1063 der Schieberegistereinheit 106 gekoppelt, dass sie zur Vorhersage der Betragsbitzugehörigkeit des nächsten zu modellierenden Betragsbittupels den Inhalt der Registerzellen aus dem Teil 1062 sowie die ersten Statusbits in denjenigen Registerzellen des Teils 1063 der Schieberegistereinheit 106 erhält, die mit gestrichelten Linien angezeigt und mit dem Bezugszeichen 282 bzw. 284 versehen sind. Um dies ein weniger näher zu veranschaulichen, werden im Folgenden speziell angesprochene Registerzellen bzw. Bits in den Teilen 1061 1064 jeweils mit einem Indexpaar #,# versehen, das kodiert in Spaltennummer und Zeilennummer von der linken oberen Ecke ausgehend die Registerzellen- bzw. Bitposition angibt. So spannt der Bereich 282 beispielsweise den Bereich der Bereich der Betragsbits 2523,2 bis 2524,5 auf und der Bereich 284 den Bereich der Bits 2744,1 bis 2746,6 . Die Analyse/Vorhersageeinheit 200 verwendet nun die ihr zugeführten Informationen, um die Zugehörigkeit der Betragsbits an den Positionen 2524,2 bis 2524,5 zu dem ersten Pass vorherzusagen, welche Betragsbits das als nächstes an der Reihe seiende Tupel bilden, das zumindest in dem Fall, dass sich unter den Betragsbits ein zu dem Pass 1 Gehöriges befindet, von den Vorkodiereinheiten 202, 208 verarbeitet wird.
  • Die Betragsbits in dem Bereich 282 verwendet die Analyse/Vorhersageeinheit 200, um berücksichtigen zu können, dass nicht alle Statusbits in dem zweiten Bereich 284 so aktualisiert sind, wie sie es in dem Fall der Dekodierung in dem Dekodierer an der gleichen Stelle bei der Dekodierung des Pass 1 sein werden. Zusätzlich verwendet die Analyse/Vorhersageeinheit 200 zu ihrer Vorhersage das letzte Vorhersageergebnis, das sie an die Register 218 ausgab, und in dem Schieberegisterspeicherzustand von 8 die Transformationskoeffizientenpositionen betrifft, die in dem Teil 1063 mit der Strich-Punkt-Punkt-Linie 286 markiert sind, die auch gleichzeitig die Transformationskoeffizientenpositionen markieren, die dem aktuell zu modellierenden Tupel entsprechen. Zum Beispiel kann die Analyse/Vorhersageeinheit 200 eine Noch-Nicht-Aktualisiertheit des ersten Statusbits 2744,2 abhängig von einer UND-Verknüpfung des Bits iae des letzten Vorhersageergebnisses mit dem Betragsbit 2523,2 berücksichtigen, indem sie das Ergebnis dieser UND-Verknüpfung mit dem ersten Statusbit 2744,2 ODER-verknüpft.
  • Für das erste Statusbit 2745,2 kann die Analyse/Vorhersageeinheit 200 die Noch-Nicht-Aktualisiertheit dadurch adressieren, dass sie das Ergebnis einer ODER-Verknüpfung der acht direkten Nachbarbits 274 mit vorbeschriebener Aktualisierungskompensation für die Statusbits 274 4,2 und 2744,3 mit dem Betragsbit 2524,2 UND-verknüpft. Mit solchermaßen virtuell aktualisierten ersten Steuerbits kann die Analyse/Vorhersageeinheit 200 die Zugehörigkeit von beispielsweise dem Betragsbit 2524,3 durch eine ODER-Verknüpfung der acht ersten Steuerbits der acht unmittelbaren Nachbar-Koeffizienten unter anschließender UND-Verknüpfung mit dem Inversen bzw. der Negation des Statusbits 2745,3 ermitteln. Auf diese Weise überprüft folglich die Analyse/Vorhersageeinheit 202 für jeden der zu modellierenden Betragsbits 2524,2 bis 2524,5 , ob die entsprechenden Transformationskoeffizienten, die sie darstellen, noch insignifikant sind, sowie ob die direkten Nachbar-Koeffizienten schon signifikant sind bzw. zumindest einer derselben schon signifikant ist, und zwar bereits eine Spalte vor der aktuell zu modellierenden Spalte 2523,2 bis 2523,5 und unter Berücksichtigung der Signifikanzen, wie sie sich bei ordentlichem Durchlauf des Pass 1 bis zu dem jeweiligen Betragsbit in 2523,2 bis 2523,5 ergeben hätten.
  • Das Analyseergebnis wird dann von der Einheit 200, wie bereits beschrieben, als 4-Bit-Vektor an das Register 218 ausgegeben, um nach dem nächsten Schiebevorgang der Schieberegistereinheit 106 am Eingang des Multiplexers 216 bzw. des Koeffizientenwählers 222 anzuliegen. Mit nur einer zusätzlichen arithmetischen Addieroperation unter den Bitwerten, die dieselbe an die Register 218 ausgibt, kann die Analyse/Vorhersageeinheit 200 auch das Vorhersageergebnis liefern und an den Bitzähler 220 vor Beginn des nächsten Schiebevorganges in das Schieberegistereinheit 106 ausgeben, das angibt, wie viele der Betragsbits in dem nächsten zu modellierenden Tupel dem Pass 1 angehören. Zeigt das Register 218 an, dass keines der Betragsbits des aktuellen Tupels 2523,2 bis 2523,5 zu dem Pass 1 gehört, so stellt der Koeffizientenwähler 222 das Multiplexersignal beliebig ein, wie z. B. auf einen vorbestimmten Wert, der nicht von dem Registerinhalt des Registers 218 abhängt, wodurch der Multiplexer 216 eines der nicht-gesetzten Bits in dem Register 218 als Gültigkeitsbit 246 an den Zwischenspeicher 2101 ausgibt. Selbst wenn also die Vorkodiereinheiten 202, 208 und die Steuerbitsteuerung 224 zusammen ein 12-Bit-Wort 244 bilden und an den Zwischenspeicher 1101 ausgeben, so nimmt der Zwischenspeicher 1101 beispielsweise die Zwischenspeicherung dieses Datenwortes 244 nicht vor, weil das Gültigkeitsbit nicht gesetzt ist. Zur Stromersparnis kann es jedoch vorgesehen sein, dass beispielsweise der Betrieb der Vorkodiereinheiten 202, 208 in einem solchen Fall unterbunden wird, wie es exemplarisch durch einen Pfeil 288 in 4 angedeutet ist. Natürlich wäre es ferner möglich, dass der Zwischenspeicher 1101 die Speicherung der Datenworte 244 unabhängig davon vornimmt, ob das Gültigkeitsbit gesetzt ist oder nicht, in welchem Fall der Zwischenspeicher 1101 das Gültigkeitsbit einfach zusammen mit dem 12 Bit-Wort zwischenspeichert, wobei diese Vorgehensweise allerdings einen größeren Speicherplatz in dem Zwischenspeicher 1101 erforderlich macht.
  • Anderenfalls jedoch, d. h. in dem Fall zumindest eines gesetzten Bits in dem Register 218, das anzeigt, dass das entsprechende Betragsbit unter den aktuell zu modellierenden Betragsbits 2523,2 bis 2523,5 dem Pass 1 angehört, stellt in aufeinander folgenden Arbeitszyklen der Koeffizientenwähler 222 das Multiplexersignal sequentiell unten entsprechend den gesetzten Bits in dem Register 218 auf die dem Pass 1 angehörigen Koeffizienten ein. In dem Verarbeitungstakt generieren dann die Steuerbitsteuerung 224 und die Vorkodiereinheiten 202 und 208 zu jedem dieser dem Pass 1 angehörigen Betragsbits ein 12 Bit-Datenwort 244, das zusammen mit einem gesetzten Gültigkeitsbit 246 an den Zwischenspeicher 1101 ausgegeben wird, der aufgrund des gesetzten Gültigkeitsbits diese Datenwörter in der eintreffenden Reihenfolge speichert. Insbesondere geht der Koeffizientenwähler 222 die zu dem Pass 1 gehörigen Betragsbits innerhalb der Spalte 2523,2 bis 2523,5 von oben nach unten durch, wie es gemäß der Scanreihenfolge der Decoder auch erwartet.
  • In jedem Verarbeitungszyklus verarbeiten die Vorkodiereinheiten 202 und 208 die ihnen zu Verfügung stehenden Infor mationen gemäß einem jeweiligen Kodierungsschema, um die Datenbits 230 bzw. 232 und die zugehörigen Kontext-Indizes 234 und 236 zu bestimmen. Die Vorkodiereinheit 202 führt ein sogenanntes Signifikanzfortpflanzungs- bzw. SP-Kodierschema aus. Danach wird der Kontext-Index 236 mittels logischer Verknüpfung der Signifikanzen der Nachbar-Koeffizienten gebildet. Zeigt also beispielsweise das aktuelle Multiplexersignal auf das Betragsbit 2523,3 , so leitet der Multiplexer 206 die ersten Statusbits 2743,2 bis 2745,2 , 2743,4 bis 2745,4 , 2743,3 und 2745,3 weiter. Insgesamt ist folglich eingangsseitig der Multiplexer 206 mit den Registerzellen gekoppelt, die von der gestrichelten Linie 290 in 8 umgeben sind. Der Multiplexer 204 ist eingangsseitig mit den Registerpositionen in dem Bereich 1062 gekoppelt, der dem aktuell zu modellierenden Tupel entspricht und mit einer gestrichelten Linie 292 gekennzeichnet ist. Der Multiplexer 204 gibt den durch das Multiplexersignal angezeigten Betragsbitwert an die Vorkodiereinheit 202 aus, damit diese das Datenbit 232 entsprechend einstellen kann.
  • Die Vorzeichenbitvorkodiereinheit 208 kann, wie es in 4 durch die gestrichelte Verbindungslinie 294 angezeigt ist, ebenfalls den Betragsbitwert des durch das Multiplexersignal angezeigten Betragsbits erhalten, um abhängig davon eine Verarbeitung zu unterbinden oder durchzuführen. Denn decoderseitig erwartet der Dekodierer eine Kodierung des Vorzeichenbits eines Transformationskoeffizienten ohnehin nur dann, wenn er das erste Mal signifikant wird, nämlich unmittelbar nach Erhalt des entsprechenden Datenbits dieses Betragskoeffizienten, so dass in diesem Fall in dem Datenwort 244 die entsprechenden Bits 230 und 234 unbeachtlich sind. Die durch die Einheit 208 ausgegeben Datenbits und Kontext-Indizes 230, 234 sind anders ausgedrückt nur dann relevant, wenn das Datenbit 232, das durch die Betragsvorkodiereinheit 202 ausgegeben wird, signifikant bzw. gesetzt ist. Die Verbindung 294 zwischen dem Ausgang des Multiplexers 204 und der Vorkodiereinheit 208 kann allerdings auch fehlen, in welchem Fall die Werte, die das Da tenbit 230 bzw. der Kontext-Index 234 annehmen, für die nachfolgende Überarbeitung allerdings unbeachtlich ist.
  • Jedenfalls führt die Vorzeichenbitvorkodiereinheit 208 ein sogenanntes Vorzeichenkodier- bzw. SC-(SC = sign coding)Schema durch, wonach das Datenbit 230 den Wert des Vorzeichens zu dem durch das Multiplexersignal angezeigten Transformationskoeffizienten und der zugehörige Kontext-Index 234 auf einen Kontext eingestellt wird, welcher von einer logischen Verknüpfung der Signifikanzen und Vorzeichen der Nachbar-Koeffizienten abhängt, und zwar gemäß dem JPEG2000-Standard, der hier ja exemplarisch adressiert wird, lediglich die Nachbar-Koeffizienten in Spalten- und Zeilenrichtung. Zeigt beispielsweise das Multiplexersignal auf das Betragsbit 2523,3 , so ermittelt die Vorkodiereinheit 208 das Datenbit 230 aus dem Vorzeichenbit 2504,3 und den hierzu benachbarten Vorzeichenbits 2503,3 , 2505,3 , 2504,2 und 2504,4 unter Berücksichtigung, dass für den Dekodierer noch nicht alle Vorzeichenbits bekannt sind, was hier durch Auswertung der ersten Steuerbits der Nachbarbits berücksichtigt wird, nämlich von 2743,3 und 2744,2 . Dementsprechend ist der Multiplexer 210 eingangsseitig mit Registerzellen innerhalb des mit der gestrichelten Linie 294 markierten Bereichs gekoppelt, während der Multiplexer 212 eingangsseitig mit einem Teil der Registerzellen innerhalb des Bereichs 290 gekoppelt ist, um jeweils einen Teil dieser Registerzellen abhängig von dem Multiplexersignal von dem Koeffizientenwähler 222 mit der Vorzeichenbitvorkodierungseinheit 208 zu koppeln.
  • Die Steuerbitsteuerung 224 setzt in jedem Verarbeitungszyklus der Vorkodiereinheiten 202 und 208 die Steuerbits 240 und 242, die die nachfolgende arithmetische Kodierungseinrichtung 112 (3) beispielsweise darüber informieren sollen, ob der Bypass-Modus für den jeweiligen Transformationskoeffizienten des Datenworts 244 aktiv sein soll, und ob der aktuelle Coding-Pass zu Ende ist. Genauer ausgedrückt, setzt die Steuerbitsteuerung 224 das Pass-Ende-Bit 242 in dem Fall, dass das aktuelle zu modellierende Tupel die letzten Betragsbits in der aktuellen Betragsbitebene beinhaltet, z. B. die Betragsbits ui, vi, wi und xi in der aktuellen Bitebene i in dem Beispiel von 2. Das Bypass-Modus-Bit 240 stellt die Steuerbitsteuerung 224 beispielsweise in Abhängigkeit von der Tiefe der aktuellen Betragsbitebene ein, so dass beispielsweise nach der vierten kodierten Bitebene das Bit 240 den Bypass-Modus anzeigt, was anzeigt, dass ab diesem Zeitpunkt die Pass-1-Daten in Rohform bzw. unkomprimiert in den Datenstrom am Ausgang der arithmetischen Kodiereinrichtung 112 eingebracht werden sollen.
  • Schließlich sei noch bemerkt, dass der Zwischenspeicher 1101 in dem Fall, dass er ausgebildet ist, um Datenwörter 244 abhängig von dem Gültigkeitsbit 246 zwischenzuspeichern oder zu verwerfen, insbesondere so ausgebildet ist, dass der Zwischenspeicher 2101 das Datenwort 244 in dem Fall eines gesetzten Pass-Ende-Bits 242 aber auch dann zwischenspeichert, wenn das entsprechende Gültigkeitsbit 246 nicht gesetzt ist. Verschiedene Maßnahmen können in diesem Fall dafür vorgesehen sein, dass das Datenwort das eigentliche ungesetzte Gültigkeitsbit 246 widerspiegelt, wie z. B. das kodieren des Restes der Datenwortes 244 außer dem Pass-Ende-Bit zu einem ansonsten nicht gültigen, da mit Pass 1 zugehörigen Betragsbit nicht vorkommenden Zustand.
  • Wie bereits erwähnt, wird der Taktzähler 220 nach jedem Schiebevorgang auf die Vorhersage vorinitialisiert, wie viele Koeffizienten in einer Spalte moduliert werden bzw. zu modellieren sind. Da diese Vorhersage bereits eine Spalte vor der aktuell zu modellierenden Spalte ausgeführt wird, liegt das Ergebnis für den Taktzähler 22 bereits beim Schiebevorgang selbst vor. Ist das Ergebnis bzw. die Vorinitialisierung 0 oder 1, kann mit dem nächsten Takt sofort der nächste Schiebevorgang der Schieberegistereinheit 106 ausgelöst werden, was der Taktzähler 220 entsprechend veranlasst. Bei größeren vorinitialisierten Werten verzögert der Taktzähler 220 entsprechend die Ausgabe des Schiebeimpulses 296 an die Schieberegistereinheit 106. Wie es im Folgenden ferner erwähnt werden wird, berücksichtigt der Taktzähler 220 dabei ferner, ob die parallele Verarbeitung durch die Bitmodelliereinheiten 1082 bzw. 1083 weit genug fortgeschritten ist. Das Vorhersageergebnis bezüglich der Anzahl zugehöriger Betragsbits wird, wie im Vorhergehenden erwähnt, mittels logischer Verknüpfung aus dem 4-Bit-Vektor für das Register 218 und der Signifikanzstatusvariablen gebildet.
  • Obwohl im Vorhergehenden bereits angedeutet wird noch einmal hervorgehoben, wie die Aktualisierung der ersten Statusbits über den Demultiplexer 214 verläuft. Wie bereits erwähnt zeigen die ersten Statusbits 274 an, ob ein betreffender Transformationskoeffizient bereits signifikant ist oder nicht, bezogen auf die aktuelle Bitebene. Eine Aktualisierung kann also lediglich einen Übergang von nicht-signifikant auf signifikant bedeuten. Die Kopplung des Datenbits 232 über den Demultiplexer 214 mit der entsprechenden Registerzelle innerhalb des Bereiches 286 des Teils 1063 der Schieberegistereinheit 106 ist deshalb vorzugsweise derart ausgebildet, dass die Rückkopplung zu einer Aktualisierung des augenblicklichen Registerzellenzustands des dem Datenbit 232 entsprechenden ersten Statusbits mit einem Wert führt, der einer logischen ODER-Verknüpfung des augenblicklichen Zustands mit dem Datenbit 232 entspricht. Zudem sollten entsprechende Vorkehrungen getroffen werden, so dass das Datenbit 232 0 ist, wenn das Gültigkeitsbit 246 nicht gesetzt ist. Anders ausgedrückt ist der Demultiplexer 214 ausgangsseitig mit den Registerzellen innerhalb des Bereiches 286 gekoppelt und ausgebildet, um abhängig von dem Multiplexersignal von dem Koeffizientenwähler 222 den Datenbitausgang der Vorkodiereinheit 102 auf die vorbeschriebene ODER-Verknüpfungsweise mit der entsprechenden erstes-Statusbit-Registerzelle des durch das Multiplexersignal angezeigten Transformationskoeffizienten zu koppeln.
  • Nachdem im Vorhergehenden die Funktionsweise der für den ersten Kodierpass zugständigen Bitmodelliereinheit 1081 beschrieben worden ist, wird im Folgenden die Funktionsweise der für den zweiten Kodierpass zuständigen Bitmodelliereinheit 1082 beschrieben, wozu auf 5 Bezug genommen wird. Im Unterschied zu dem ersten Kodierdurchlauf bzw. Pass 1 ist der zweite Kodierdurchlauf bzw. Pass 2 für Betragsbits zuständig, die zu bereits signifikanten Transformationskoeffizienten gehören. Der zweite Kodierdurchlauf wird gemäß dem JPEG2000-Kodierschema auch Betragsverfeinerungsdurchlauf bzw. Magnitude Refinement Pass genannt, wobei derselbe für Betragsbits relevant ist, die zu Koeffizienten gehören, die bereits vor jeglichem Kodierdurchlauf der aktuellen Betragsbitebene bereits signifikant sind aber eben nicht erst durch den ersten Pass signifikant werden. Das bedeutet, dass die Entscheidung über die Zugehörigkeit eines Betragsbits zu dem zweiten Kodierdurchlauf auf der Grundlage der Statusbits in dem Teil 1063 der Schieberegistereinheit 106 getroffen werden sollte, der noch nicht durch die Rückkopplung über den Demultiplexer 214 innerhalb des Speichers 286 aktualisiert worden ist, d. h. den ersten Statusbits in Registerzellen rechts hiervon aus der Perspektive von 8. Umgekehrt werden aber Kontexte der zu dem zweiten Pass gehörigen Betragsbits, wie im Folgenden noch detaillierter beschrieben, auf der Grundlage der aktualisierten ersten Statusbits ermittelt, weshalb die Bitmodelliereinheit 1082 ebenso wie die im Anschluss daran beschriebene Bitmodelliereinheit 1083 die Modellierung bezüglich Betragsbits vornehmen, die von den aktuell modellierten Betragsbits der Bitmodelliereinheit 1081 in Einheiten der Schieberegisterränge ausreichend zeitlich zurückliegen. In dem vorliegend beschrieben exemplarischen Fall wird exemplarisch von einem festen Versatz von zwei Schiebeimpulsen ausgegangen, obwohl, wie es im Anschluss noch näher ausgeführt wird, auch eine variable Gestaltung dieses Versatzes unter Einhaltung eines Mindestabstandes, wie z. B. den zwei Schieberegisterrängen, vorgesehen sein kann.
  • 5 zeigt den Aufbau der Bitmodelliereinheit 1082 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Analog zur 4 ist sie wieder zusammen mit der Schieberegistereinheit 106 und dem zugehörigen Zwischenspeicher 1102 gezeigt. Die Bitmodelliereinheit 1082 umfasst einen Anwendungsentscheider 300, einen Vorkodierer 302, eine Steuerbitsteuerung 304, ein 4-Bit-Register 306 und einen Summenschwellwertentscheider 308. Der Anwendungsentscheider 300 ist mit dem Teil 1063 der Schieberegistereinheit 106 eingangsseitig gekoppelt und ausgangsseitig mit dem 4-Bit-Register 306. Sowohl ein Eingang des Vorkodierers 302 als auch ein Eingang des Summenschwellwertentscheiders 308 sind mit dem Register 306 gekoppelt. Eingangsseitig ist der Vorkodierer 302 zudem mit Teilen 1062 , 1063 und 1064 der Schieberegistereinheit 106 gekoppelt. Intern umfasst der Vorkodierer 302 vier zueinander entsprechend ausgeführte Betragsbitvorkodiereinheiten 3021 bis 3024 , eine für jedes Betragsbit des aktuellen Tupels, die auch in 5 schraffiert versinnbildlicht sind. Jede der Vorkodiereinheiten 3021 bis 3024 umfasst einen Ausgang 310 für ein Datenbit und einen 2-Bit-Ausgang 312 für einen Kontext-Index. Die Steuerbitsteuerung 304 umfasst einen Ausgang 314 für ein Pass-Ende-Bit und einen Ausgang 316 für ein Bypass-Modus-Bit, wobei die Ausgänge 310 bis 316 zusammen einen 14-Bit-Ausgang für ein 14-Bit-Wort 318 definieren, der mit einem Eingang des Zwischenspeichers 1102 gekoppelt ist. Auch ein Ausgang des Summenschwellwertentscheiders 308 ist mit einem weiteren Eingang des Zwischenspeichers 1102 gekoppelt, um ein Gültigkeitsbit 320 an den Zwischenspeicher 1102 auszugeben.
  • Nachdem im Vorhergehenden der Aufbau der Bitmodelliereinheit 1082 beschrieben worden ist, wird im Folgenden ihre Funktionsweise beschrieben. Der Anwendungsentscheider 300 ist ausgebildet, um auf Basis seiner Eingangsinformationen in dem Register 306 pro aktuell zu modellierendem Betragsbit ein Informationsbit iae, jae, kae und lae zu bilden, die anzeigen, ob das jeweilige Betragsbit zu dem Pass 2 gehört oder nicht, um dasselbe um eine geeignete Anzahl von Schiebeimpulsen der Schieberegistereinheit verzögert in das Register 306 zu schreiben. Die Verzögerung rührt daher, dass eingangsseitig der Vorkodierer 102 mit Registerzellen des Betragsbitteils 1062 der Schieberegistereinheit 106 gekoppelt ist, die gegenüber den Registerpositionen der Betragsbits, zu denen der Anwendungsentscheider 300 aktuell die ersten Steuerbits auswertet, hier exemplarisch um drei Schieberänge nachgeordnet ist, wobei erstere Registerpositionen innerhalb des Teils 1062 mit einer Strich-Punkt-Linie 322 markiert sind. Insbesondere ist nun eingangsseitig die Vorkodiereinheit 3021 mit der Registerzelle 2521,2 und innerhalb des Registers 306 mit dem Eintrag iae gekoppelt, die Vorkodiereinheit 3022 mit der Registerzelle 2521,3 und dem Bit jae des Registers 306 usw. Jede der Vorkodiereinheiten 3021 bis 3024 ist somit für einen unterschiedlichen der Betragsbits in der aktuell zu modellierenden 4-er-Spalte 322 zuständig.
  • Jede Vorkodiereinheit 3021 bis 3024 stellt ihr Datenbit gemäß Ihrem Betragsbit aus den Zellen 322 ein. Den Kontextindex bestimmen sie abhängig von den aktualisierten Signifikanzen der Nachbarkoeffizienten, wozu der Vorkodierer 302 mit den Registerzellen des Teils 1063 der Schieberegistereinheit 106 gekoppelt ist, der in 8 mit einer Strich-Punkt-Linie 324 gekennzeichnet ist. Insbesondere ist beispielsweise die Vorkodiereinheit 3021 mit den Registerzellen 2741,1 bis 2743,1 , 2741,3 bis 2743,3 , 2741,2 und 2743,2 gekoppelt, die somit Koeffizienten betreffen, die dasjenige des Betragsbits 2521,2 umgeben. Insbesondere legt jede Kodiereinheit 3021 bis 3024 ihren Kontextindex 312 durch Bildung aus einer logischen Verknüpfung der ersten Steuerbits 274 dieser Nachbarkoeffizienten fest. Sollte dabei allerdings der zugehörige Eintrag in dem Register 306 der jeweiligen Vorkodiereinheit 3021 bis 3024 anzeigen, dass ihr jeweiliges Betragsbit gar nicht dem Pass 2 angehört, so setzt sie die Kontextindexbits 312 auf eine Bitkombination, die keinem sinnvollen Kontextindex entspricht und somit aus sich allein heraus erkennen lässt, dass das entsprechend zugehörige Datenbit 310 ungültig ist.
  • Zusätzlich ist der Vorkodierer 302 mit den Registerzellen 280 aus dem Teil 1064 der Schieberegistereinheit gekoppelt, insbesondere jede Vorkodiereinheit 3021 bis 3024 mit der entsprechenden Registerzelle für das dem jeweiligen Betragsbit zugeordnete zweite Statusbit. Dabei sind die Vorkodiereinheiten 3021 bis 3024 so ausgelegt, dass die Kontextindizes 312, die sie ausgeben, nicht nur von der soeben beschriebenen logischen Verknüpfung, sondern ferner auch von dem jeweiligen zweiten Statusbit abhängen, d. h. also davon, ob der betreffende Transformationskoeffizient bereits ein Betragsbit in den vorhergehenden signifikanteren Betragsbitebenen besaß, dass den zweiten Kodierdurchlauf bzw. Pass 2 durchlief oder nicht. Die Kopplung des Vorkodierers 302 mit den Registerzellen des Teils 1064 ist in 8 mit der Strich-Punkt-Linie 326 angedeutet.
  • Die Steuerbitsteuerung 304 stellt das Bypass-Modus-Bit 316 beispielsweise gleichartig ein wie im Vorhergehenden Bezug nehmend auf die Steuerung 224 beschrieben. Gleiches gilt für das Pass-Ende-Bit 314. Auch die Steuerbitsteuerung 304 setzt folglich die Steuerbits 314 und 316, um der nachfolgenden arithmetischen Kodiereinrichtung Informationen zu liefern, die anzeigen, ob der sogenannte Bypass-Modus aktiv sein soll, oder ob der aktuelle Coding-Pass zu Ende ist.
  • Wie bereits erwähnt, bilden die Bits 310316 das Datenwort 318. Der Zwischenspeicher 3102 ist nun beispielsweise ausgebildet, um das 14-Bit-Wort 318 nur dann in den Zwischenspeicher aufzunehmen, wenn das Gültigkeitsbit 320 gesetzt ist, es sei denn, das Pass-Ende-Bit 314 ist gesetzt, in welchem Fall das Datenwort 318 auf jeden Fall in den Zwischenspeicher 3102 eingespeichert wird. Die Zusammenfassung von Gültigkeitsbit und 14-Bit-Wort 318 zu einem größeren Datenwort mit Einspeicherung auf jeden Fall ist natürlich alternativ ebenfalls möglich, wie es bereits Bezug nehmend auf 4 beschrieben worden war.
  • Der Summenschwellwertentscheider 308 summiert die Bits in dem Register 306 und überprüft, ob die Summe größer oder gleich 1 ist, um das Gültigkeitsbit 320 entsprechend dem Überprüfungsergebnis einzustellen, und um auf diese Weise das Gültigkeitsbit zu setzen, wenn zumindest einer der aktuell zu modifizierenden Betragsbits in dem aktuellen Tupel dem Pass 2 angehört.
  • Die Bitmodelliereinheit 1082 ist folglich in der Lage, die dem Pass 2 zugehörigen Betragsbits innerhalb eines aktuellen Tupels 322 in einem Verarbeitungszyklus in ein Datenwort 318 vorzukodieren. Wie viele der Paare von Datenbit und Kontextindex in dem 14-Bit-Datenwort 318 tatsächlich gültig sind bzw. in den zu kodierenden Datenstrom am Ausgang des arithmetischen Kodierers 124 (3) einzubringen sind, geht aus diesen Paaren selbst hervor, indem dieselben in dem negativen Fall eine spezielle Bitkombination aufweisen, die keine gültige Kombination aus Datenbit und Kontextindex bzw. kein gültiger Kontext ist. Insofern benötigt die Bitmodelliereinheit 1082 auch keine Schiebeimpulsausgabefähigkeit, da sie mindestens so schnell ist wie die beschriebene Bitmodelliereinheit 1081 , die ja zumindest einen Verarbeitungszyklus pro zum Pass 1 gehörigem Betragsbit benötigt.
  • Im Folgenden wird Aufbau und Funktionsweise der Bitmodelliereinheit 1083 für den dritten Kodierpass beschrieben. Dabei wird Bezug auf 6 genommen. Der Aufbau ist im Hinblick auf die Blöcke und deren Kopplung untereinander ähnlich zu dem Fall der Bitmodelliereinheit 1081 von 4. Zur Vermeidung unnötiger Wiederholungen sind deshalb in 6 Elemente, die grundsätzlich gleiche Aufgaben übernehmen wie Elemente aus 4 mit Bezugszeichen versehen, die sich von denjenigen aus 4 lediglich um die erste Ziffer bzw. die Hunderterstelle unterscheiden, und zwar so, dass sie eine Vier anstelle einer Zwei aufweisen. Insbesondere sind alle Elemente aus 4 auch in 6 dargestellt, mit dem Unterschied, dass es sich bei dem in 6 gezeigten Zwischenspeicher natürlich um den Zwischenspeicher 1103 handelt, mit dem Unterschied, dass die Steuerbitkontrolle neben dem Pass-Ende-Bit 442 ein Block-Ende-Bit 440 ausgibt und kein Bypass-Ende-Bit, und mit dem Unterschied, dass die Vorzeichenbitvorkodiereinheit 408 keine Kopplung mit der Steuerbitkontrolle 424 aufweist. Unterschiede in Funktionalität und genauer Verschaltung mit der Schieberegistereinheit 106 der einander entsprechenden Elemente in 4 und 6 gehen aus der nachfolgenden Beschreibung hervor, so dass Funktionalitätsbeschreibungen, die im Folgenden erläutert werden, entsprechende Funktionalitätsbeschreibungen bezüglich der entsprechenden Elemente Bezug nehmend auf 4 insofern ersetzen sollen. Im Übrigen wird bezüglich Funktionalität und Verschaltung auf die Beschreibung von 4 verwiesen.
  • Zusätzlich zu den vorerwähnten Elementen umfasst die Bitmodelliereinheit 1083 eine Lauflängenkodiereinheit 500, die einen Eingang aufweist, der mit dem Register 418 gekoppelt ist, sowie einen Eingang, der mit einem weiteren Ausgang der Analyse/Vorhersageeinheit 400 gekoppelt ist. Ein Ausgang der Lauflängenkodiereinheit 500 ist dazu vorgesehen, ein Lauflängensymbol 502 mit drei Bits auszugeben, um zusammen mit den anderen Ausgabebits 430436 und 440, 442 das in den Zwischenspeicher 1103 eingehende Datenwort 444 zu bilden, das somit ein 15-Bit-Datenwort 444 ist.
  • Der dritte Kodierdurchlauf, für den die Bitmodelliereinheit 1083 zuständig ist, kommt zum Tragen, wenn der zu modellierende Koeffizient für die aktuelle Bitebene noch insignifikant ist, und nicht von dem ersten Durchlauf erfasst wurde. Er wird somit auch als „clean-up pass" bezeichnet. Die Funktionsweise des dritten Kodierdurchlaufes ähnelt hinsichtlich der Kontextbildung und Vorkodierung dem ersten Durchlauf, ist aber um eine sogenannte Lauflängen- bzw. RL- (RL = one length = Lauflänge)Primitive erweitert. Anders ausgedrückt ist der dritte Kodierdurchlauf für die restlichen Betragsbits zuständig, die weder dem ersten noch dem zweiten Kodierdurchlauf angehören, wobei die Kodierung der Pass-3-Betragsbits in der aktuellen 4-er-Spalte wie in dem Fall von Pass 1 erfolgt, mit der Ausnahme, dass in dem Fall, dass alle Betragsbits in der aktuellen 4-er-Spalte einem noch nicht signifikanten Transformationskoeffizienten zugeordnet sind und lediglich insignifikante Nachbarkoeffizienten aufweisen, in welchem Fall der Lauflängenmodus einsetzt, der von oben bis unten den Lauf von insignifikant bleibenden Betragsbits in dem aktuellen Tupel angibt und somit lediglich unterbrochen wird, falls einer der Betragsbits der aktuellen 4-er-Spalte in der aktuellen Bitebene signifikant wird bzw. einen Betragsbitwert von 1 aufweist, von wo an die darauf folgenden Betragsbits in dieser 4-er-Spalte wie in dem Fall von Pass 1 weiterkodiert werden und das Vorzeichen des die RL-Primitive unterbrechenden Koeffizienten kodiert wird.
  • Nach diesem kurzen Überblick über den Pass 3 wird wieder in Zusammenschau der 6 und 8 die Funktionsweise der Einheit 1083 erläutert. Da der Pass 3 definitionsgemäß der letzte unter den sequentiellen Passes bzw. Durchläufen ist, beziehen sich die Signifikanzüberprüfungen jeweils auf die bereits durch die Bitmodelliereinheit 1081 aktualisierten ersten Statusbits, d. h. die ersten Statusbits links des Bereiches 286 in 8. Die Überprüfung der Nachbarkoeffizientensignifikanzen in Betracht ziehend, sollte der Bereich der aktuellen 4-er-Spalte zumindest zwei Schieberegisterränge hinter dem aktuellen Bereich 282 der Bitmodelliereinheit 1081 liegen. Gemäß dem Ausführungsbeispiel von 6 liegt der aktuelle Bereich genau zwei Schieberegisterringe hinter diesem Bereich. Allerdings kann es, wie im Vorhergehenden Bezug nehmend auf den Pass 2 erläutert, auch vorgesehen sein, dass der Aufbau der Schieberegistereinheit gegenüber 8 modifiziert wird, um auch einen variablen Versatz zu ermöglichen, so dass die Verarbeitungsgeschwindigkeit der beiden Einheiten 1081 und 1083 entkoppelt ist.
  • Im Folgenden soll Bezug auf die 6 und 8 in Zusammenschau genommen werden, um die Funktionsweise der Bitmodelliereinheit 1083 zu veranschaulichen. Die Analyse/Vorhersageeinheit 400 überprüft wieder vorab das 4-er-Tuple von Betragsbits 2522,2 bis 2522,5 , das als nächstes zur Modellierung in der Einheit 1083 vorgesehen ist, welche derselben dem Pass 3 angehören, d. h. welche nicht dem Pass 1 oder dem Pass 2 angehören, und ist dazu über die Kopplung 428 mit Registerzellen des Teils 1063 der Schieberegistereinheit 106 gekoppelt, wobei diese Schieberegisterzellen in 8 mit der Strich-3-Punkt-Linie 504 umrahmt sind. Unter diesen ersten Statusbits in dem Bereich 504 bedürfen die Statusbits innerhalb des Bereiches 286 einer Aktualisierung bzw. einer Berücksichtigung, dass dieselben gegebenenfalls während des ersten Durchlaufs signifikant werden, wozu die Analyse/Vorhersageeinheit auch das vorherige, bezüglich des vorherigen Schiebezyklus erhaltene Vorhersageergebnis der Analyse/Vorhersageeinheit 200 der Bitmodelliereinheit 1081 verwendet sowie die Betragsbits in dem zugehörigen Bereich 292, wozu die Analyse/Vorhersageeinheit 400 über die Kopplung 446 ebenfalls mit den Registerzellen in dem Bereich 292 gekoppelt ist. Zudem verwendet die Analyse/Vorhersageeinheit 400 analog zu dem Fall von 4 ihr letztes Vorhersageergebnis für die Vorhersage, welches sich für die aktuelle Vorhersage natürlich auf die Betragsbits in dem aktuell zu modellierenden Bereich bezieht, um nämlich die Aktualisierungen der Signifikanzen in den Positionen 2742,2 bis 2742,5 aufgrund des eigenen Kodierdurchlaufes, d. h. des Kodierdurchlaufes 3, zu berücksichtigen, der erst im laufenden Schiebezyklus erfolgt, wozu die Analyse/Vorhersageeinheit 400 ebenfalls mit weiteren Betragsbitregisterzellen innerhalb des Bereiches 1062 der Schieberegister 106 gekoppelt ist, nämlich denen der aktuellen 4-er-Spalte innerhalb des mit der Strich-3-Punkt-Linie 506 gekennzeichneten Bereiches. Das Vorhersageergebnis gibt die Analyse/Vorhersageeinheit 400 wie in dem Fall von 4 in das Register 418 für den nächsten Schiebezyklus aus.
  • Die Lauflängenkodiereinheit 500 wertet bei Beginn des Schiebezyklus, bei dem also die bezüglich ihrer Pass3-Zugehörigkeit vorhergesagten Betragsbits in dem Teil 1062 der Schieberegistereinheit 106 vorgeschoben worden sind, um das aktuelle Betragsbittupel darzustellen, zusammen mit den aktuellen Betragsbits, auf die sich die Vorhersage in dem Register 418 bezieht und die sie gemäß dem Beispiel von 6 von der Analyse/Vorhersageeinheit 400 weitergeleitet bekommt, den 4-Bit-Vektor in dem Register 418 aus, um erstens festzustellen, ob die Lauflängenprimitive Anwendung finden soll, d. h. alle Betragsbits des aktuellen 4-er-Tupels dem dritten Kodierdurchlauf zugeordnet sind, und, falls dies der Fall ist, ob sie aufgrund eines signifikant werdenden Betragsbits unter denselben an irgendeiner Stelle unterbrochen wird, um abhängig von dieser Auswertung das Lauflängensymbol 502 einzustellen. Ab dem signifikant werdenden Betragsbit, d. h. alle Betragsbits nach dem signifikant werdenden bis unten, inklusive des signifikant werdenden, da für diesen ja noch das Vorzeichen in den kodierten Datenstrom zu kodieren ist, werden von dem Koeffizientenwähler 422 in ein entsprechendes Multiplexersignal umgewandelt, so dass die Kodiereinheiten 402 und 408 auf die oben beschriebene Weise für diese Betragsbits entsprechende Paare von Datenbit und Kontextbit 430436 erzeugen. Wie bereits im Vorhergehenden erwähnt, benötigen die Vorkodiereinheiten 402 und 408 hierzu einen Verarbeitungszyklus pro Betragsbit. Es wird deshalb lediglich nur ein Datenwort 444 für eine 4-er-Spalte durch die Bitmodelliereinheit 1083 in dem Lauflängenkodierfall nur dann erzeugt, solange sich nicht mehr als ein signifikant werdender Betragsbit unter den vier aktuellen Betragsbits befindet. Anderenfalls werden mehrere 15-Bit-Datenworte 444 erzeugt, wobei nur in dem ersten Datenwort 444 das Lauflängensymbol 502 anzeigt, dass die Lauflängenprimitive zur Anwendung kam, und ansonsten anzeigt, dass es unbeachtlich ist.
  • Obwohl der Pass 3 der letzte Durchlauf ist, wird das Betragsdatenbit 432 am Ausgang der Vorkodiereinheit 402 über den Demultiplexer 414 in den Teil 1063 der Schieberegistereinheit 106 rückgekoppelt, und zwar abhängig von dem Multiplexersignal von dem Koeffizientenwähler 422 in die entsprechende Registerzelle innerhalb der 4-er-Spalte von Registerzellen 2742,2 bis 2742,5 . der Grund dafür besteht darin, dass beim nächsten Schiebevorgang, bei dem diese 4-er-Spalte in 8 um eine Position nach links verschoben wird, bezüglich der Signifikanzen aktualisiert sein soll. Ausgangsseitig ist der Demultiplexer 414 mit den Registerzellen 2742,2 bis 2742,5 gekoppelt. Eingangsseitig ist der Multiplexer 404 mit den Registerzellen innerhalb des Bereiches 506 gekoppelt. Der Multiplexer 406 ist eingangsseitig mit den Registerzellen innerhalb des Bereiches 508 gekoppelt, der die ersten Statusbits für einen Bereich beinhaltet, den die aktuelle 4-er-Spalte von Betragsbits 506 inklusive Nachbarkoeffizienten umgibt. Der Multiplexer 410 ist mit dem entsprechenden Bereich von Registerzellen innerhalb des Bereiches 1061 der Schieberegistereinheit 106 gekoppelt, der in 8 mit 510 hervorgehoben ist. Der Multiplexer 412 ist eingangsseitig mit Registerzellen innerhalb des Bereiches 508 gekoppelt, und zwar beispielsweise den Registerzellen 2741,2 bis 2741,5 und 2742,1 bis 2742,4 .
  • Auf die vorgeschriebene Weise sorgt folglich die Bitmodelliereinheit 1083 dafür, dass eine Analyse der zu modellierenden Koeffizienten stattfindet, ob sie noch insignifikant sind, sowie eine Analyse der direkten Nachbar-Koeffizienten, ob sie schon signifikant sind, und zwar derart, dass die Analyse bereits eine Spalte vor der aktuell zu modellierenden Spalte stattfindet. Das Analyseergebnis wird wieder als 4-Bit-Vektor ausgegeben, und zwar in das Register 418, auf der Basis welchen Vektors die Entscheidung getroffen wird, ob die RL-Primitive auf die vier aktuellen Koeffizienten angewendet wird. Wenn die Bedingung erfüllt ist, was von der Lauflängenkodiereinheit 500 geprüft wird, wird natürlich über den Multiplexer 516 auch das Gültigkeitsbit gesetzt, da jedes Bit in dem Register 418 gesetzt ist, und die Kodiereinheit 500 führt das Lauflängenkodierschema aus, was die Festlegung des Symbols 502 beinhaltet, das repräsentiert, ob die RL-Primitive zur Anwendung kam und gegebenenfalls an welcher Position ein Koeffizient signifikant wird. Wenn mindestens ein Koeffizient in dem aktuellen Tupel signifikant wird, wird zudem durch die Vorkodiereinheit 408 für das den Lauf unterbrechende Betragsbit das zugehörige Vorzeichen kodiert (die Bits 432 und 436 sind in diesem Verarbeitungszyklus unbeachtlich). Für die auf das die RL-Primitive unterbrechende Betragsbit folgenden Bitpositionen wird durch die Vorkodiereinheit 402 das bereits im Vorhergehenden beschriebene SP-Kodierschema für jeden folgenden Koeffizienten in der aktuellen Spalte ausgeführt, was die Festlegung eines Datenbits und eines passenden Kontextindex beinhaltet, welches mittels logischer Verknüpfungen der Signifikanzen der Nachbar-Koeffizienten gebildet wird. Zusätzlich wird für diese nachfolgenden Bitpositionen, wenn das Datenbit des SP-Kodierschemas bzw. das entsprechende Betragsbit an der jeweiligen Bitposition gesetzt ist, was über die Verbindung 494 überprüfbar ist, durch die Vorkodiereinheit 408 die Ausführung des SC-Schemas ausgeführt, was die Festlegung eines Datenbits und eines passenden Kontext-Index, welches mittels logischer Verknüpfungen der Signifikanzen und Vorzeichen der Nachbar-Koeffizienten gebildet wird, beinhaltet. Die Steuerbits 440 und 442 werden von der Steuerbitsteuerung 424 gesetzt, die der nachfolgenden arithmetischen Kodiereinrichtung mitteilen, ob der aktuelle Kodierdurchlauf bzw. der aktuelle Codeblock zu Ende sind. Letzteres trifft bei dem Beispiel von 2 beispielsweise bei dem Tupel un, vn, wn, xn zu. Datenbits und Kontext-Indizes der SP- und SC-Schemata sowie dem Symbol 502 und der Steuerbits 440 und 424 werden zu dem 15-Bit-Datenwort 444 zusammengefasst, das in dem Zwischenspeicher 1103 bei gesetztem Gültigkeitsbit und auf jeden Fall dann, wenn das Pass-Ende-Bit 442 gesetzt ist, eingespeichert wird.
  • Natürlich wird von der Analyse-Vorhersageeinheit 400 auch die Vorhersage getroffen, wie viele Koeffizienten in einer Spalte modelliert werden, wobei diese Vorhersage bereits eine Spalte vor der aktuell zu modellierenden Spalte ausgeführt wird, so dass das Ergebnis bereits beim Schiebevorgang vorliegt, wobei, falls das Ergebnis „0" oder „1" ist, mit dem nächsten Takt sofort der nächste Schiebevorgang folgen könnte, was der Taktzähler 426 der Schieberegistereinheit 106 mitteilt. Das Vorhersageergebnis wird mittels logischer Verknüpfung aus dem Vier-Bit-Vektor sowie der Signifikanzstatusvariablen gebildet, wie es im Vorhergehenden beschrieben worden ist, wobei in der Schieberegistereinheit 106 entsprechende Vorkehrungen getroffen sind, dass der Schiebevorgang tatsächlich nur dann durchgeführt wird, wenn beide Einheiten 1081 und 1083 ihren Schiebeimpuls an die Schieberegistereinheit 106 weitergeleitet haben, um sicherzustellen, dass nicht zu früh mit einem Schiebevorgang begonnen wird.
  • Nach der Beschreibung der drei Bitmodelliereinheiten 1081 bis 1083 wird kurz wieder auf 3 Bezug genommen, bevor mit der detaillierten Beschreibung des internen Aufbaus des Durchlaufentscheiders 122 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung fortgefahren wird. Wie im Vorhergehenden beschrieben, arbeiten die drei Bitmodelliereinheiten 1081 bis 1083 weitestgehend unabhängig voneinander und vor allem parallel zueinander in einem gemeinsamen Scan mit einem leichten Versatz zueinander die Betragsbits der aktuellen Betragsbitebene ab. Die Datenworte werden jeweils in einem eigenen der Zwischenspeicher 1101 bis 1103 der Reihe nach abgelegt. Die Zwischenspeicher 1101 bis 1103 sind dabei so ausgeführt, dass die Reihenfolge der jeweiligen abgelegten Datenworte beim Auslesen erhalten bleibt. Dazu könnten die Zwischenspeicher 1101 bis 1103 beispielsweise als FIFO-Speicher (First-In-Fist-Out) ausgelegt sein. Andere Ausführungen sind natürlich ebenfalls möglich, wie z. B. Implementierungen als Ringspeicher, aber auch direkt adressierbare oder inhaltsadressierbare Speicher in dem Fall entsprechender Vorkehrungen zur geeigneten Auslesereihenfolge, wobei dementsprechend die Speicher nicht getrennt für jede Modelliereinheit vorhanden sein müssen.
  • Der Durchlaufentscheider 122 dekodiert nun die Datenworte in einer geeigneten Reihenfolge und wandelt sie um in entsprechende Steuersignale für den arithmetischen Kodierer 124. Insbesondere liest der Durchlaufentscheider 122 die Datenworte zunächst des ersten Durchlaufs aus, bis dieser beendet ist, was durch das Pass-Ende-Bit angezeigt wird, daraufhin die Datenworte des zweiten kodierten Durchlaufs aus dem Zwischenspeicher 1102 , bis dort das Pass-Ende-Bit gesetzt ist, und dann die Datenworte aus dem Zwischenspeicher 1103 ... Dadurch wird die Kodierreihenfolge eingehalten, wie sie eigentlich der Dekodierer erwartet.
  • 7 zeigt den internen Aufbau des Durchlaufentscheiders 122 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung in einem mit dem arithmetischen Kodierer 124 auf der einen und den Zwischenspeichern 1101 , 1102 und 1103 auf der anderen Seite gekoppelten Zustand. Insbesondere umfasst der Durchlaufentscheider 122 von 7 drei Datenwortdekodierer 6001 , 6002 und 6003 , die zwischen einem jeweiligen der Zwischenspeicher 1101 bis 1103 auf der einen Seite und entsprechend der Eingänge eines Multiplexers 602 auf der anderen Seite geschaltet sind. Ferner umfasst der Durchlaufentscheider 122 eine Steuerung 604.
  • Zwischen jedem Paar von Zwischenspeichern 1101 bis 1103 und Datenwortdekodierer 6001 bis 6003 ist eine jeweilige Datenwortleitung 6061 , 6062 bzw. 6063 vorgesehen, um das nächste Datenwort aus dem jeweiligen Zwischenspeicher zu lesen. Anforderungs- und Bestätigungssignalleitungen 6081 bis 6082 und 6083 sind ebenfalls zwischen diesen Paaren vorgesehen, um in einem Handshake-Verfahren die Datenworte auszulesen. Ausgangsseitig weist jeder Datenwortdekodierer 6001 bis 6003 fünf Signalverbindungen 6101 , 6102 und 6103 zu entspre chenden Eingängen des Multiplexers 602 auf. Die Signalverbindungen 6101 bis 6103 umfassen jeweils eine Datenbit-, Kontextindex-, Gültigkeitsbit-, Bypass-Modus-Bit- und Durchlauf-Ende-Bit-Verbindung. Lediglich die Bypass-Modus-Bit-Verbindung ist in dem Fall des Datenwortdekodierers 6003 durch eine Block-Ende-Bit-Verbindung ersetzt. Eingangsseitig ist die Steuerung 604 mit jeweils dem Pass-Ende-Bit-Ausgängen der Datenwortdekodierer 6001 bis 6003 sowie mit dem Block-Ende-Bit-Ausgang des Datenwortdekodierers 6003 gekoppelt. Die Steuerung umfasst ferner einen Ausgang, der mit einem Steuereingang des Multiplexers 602 gekoppelt ist. Zudem tauschen die Datenwortdekodierer 6001 bis 6003 Steuersignale mit der Steuerung 604 aus, die beispielsweise ebenfalls der Realisierung eines Handshaking-Verfahrens dienen können. Ausgangsseitig umfasst der Multiplexer 602 sechs Signalverbindungen 612 zu dem arithmetischen Kodierer 124, nämlich die vorerwähnten Signalverbindungen für Datenbit, Kontextindex, Gültigkeitsbit, Bypass-Modus-Bit, Pass-Ende-Bit und Block-Ende-Bit. Zudem ist der arithmetische Kodierer 124 über einen Rückkopplungspfad 614 mit der Steuerung 604 gekoppelt, um letzterer mitteilen zu können, ob er wieder aufnahmefähig ist, um weitere Daten auf den Signalverbindungen 612 zu verarbeiten.
  • Während des Betriebes lesen nun die Datenwortdekodierer 6001 bis 6003 nacheinander die Datenworte aus dem jeweiligen der drei Zwischenspeicher 1101 bis 1103 aus und dekodieren die Datenworte. Der Datenwortdekodierer 6001 kodiert die 12-Bit-Datenworte jeweils zurück in einen oder zwei Datenbündel, um sie in einem oder zwei aufeinander folgenden Takten an den Multiplexer 602 über die Signalverbindungen 6101 weiterzuleiten, nämlich ein Signalbündel mit dem Betragsdatenbit und dem zugehörigen Kontext-Index für die Koeffizientenbitmodellierung sowie einem weiteren Signalbündel, wenn das Betragsdatenbit gesetzt ist, mit einem Datenbit, das dann das Vorzeichen anzeigt, und dem zugehörigen Kontext-Index. Ist das Datenbit gültig, setzt der Dekodierer 6001 auch das Gültigkeitsbit. Das Bypass-Modus-Bit und das Pass-Ende-Bit auf den Signalleitungen 6101 leitet der Dekodierer 6001 unmittelbar aus dem 12-Bit-Datenwort her.
  • Der Dekodierer 6002 verhält sich ähnlich. Auch er nimmt eine Dekodierung der Datenworte von dem Zwischenspeicher 1102 zurück in Datenbits und Kontext-Indizes für die Koeffizienten-Modellierung von bis zu vier Koeffizienten vor, um so jedes 14-Bit-Datenwort in Form von einem bis zu vier aufeinanderfolgenden Signalbündeln auf den Signalleitungen 6102 an den Multiplexer 602 weiterzuleiten. Der Datenwortdekodierer 6003 verhält sich auf ähnliche Weise, indem derselbe die ankommenden 15-Bit-Datenworte aus dem Zwischenspeicher 1103 zurück in Lauflängensymbole, Datenbits und Kontext-Indizes für die Koeffizienten-Modellierung sowie, wenn das Datenbit gesetzt ist, die Vorzeichenbit-Modellierung umwandelt und in einem bzw. zwei aufeinanderfolgenden Signalbündeln auf den Signalleitungen 6103 an dem Multiplexer 602 weiterleitet. Kommt allerdings die RL-Primitve zum Tragen, was aus dem RL-Symbol hervorgeht, so erfolgt die Umwandlung durch den Datenwortdekodierer 6003 in ein – in dem Fall der vollständigen Lauflänge bzw. keinem signifikant werdenden Betragsbit unter lauter Pass 3 Bits – bis vier – in dem Fall eines signifikant werdenden Betragsbits unter lauter Pass 3 Bits an der zweiten Position von Oben innerhalb des Tupels – Signalbündel. Die Steuerung 604 wertet die Pass-Ende-Bits aus, um nacheinander erstmal die Signalleitungen 6101 mit den entsprechenden Signalleitungen der Signalleitungen 612 zu verbinden, daraufhin die Signalleitungen 6102 und daraufhin wiederum die Signalleitungen 6103 . Auf diese Weise erhält der arithmetische Kodierer 124 mit jedem Datenbit und Kontext-Index auch eine Information darüber, ob der Bypass-Modus für den jeweiligen Koeffizienten zu verwenden ist, und ob der aktuelle Kodierdurchlauf bzw. Codeblock zu Ende ist. In dem erstgenannten Fall unterbricht der arithmetische Kodierer 124 nämlich seine arithmetische Intervallteilung und fügt das entsprechende Datenbit bei gesetztem Bypass-Modus-Bit im Klartext in den arithmetischen Datenstrom ein, und in dem zweiten Fall setzt der arithmetische Kodierer sein aktuelles Intervall wieder auf den vorbestimmten Wert zurück, ebenso wie Wahrscheinlichkeitsschätzwerte der einzelnen Kontexte in dem Fall, dass der arithmetische Kodierer adaptiv ausgeführt ist. Durch die oben beschriebenen Handshake-Verbindungen wird der Informationsfluss innerhalb des Durchlaufentscheiders 122 in Abhängigkeit davon gesteuert, ob die Zwischenspeicher 1101 bis 1103 Daten enthalten bzw. ob der arithmetische Kodierer bereit ist, Daten anzunehmen.
  • Der oben beschriebene Blockkodierer nach den 38 lässt sich in Hardware realisieren und stellt in diesem Fall einen Hardware-basierten JPEG2000-Blockkodierer dar, bei dem durch die oben veranschaulichte Parallelverarbeitung und die Durchlaufzugehörigkeitsvorhersage die Anzahl der benötigten Prozessschritte bei der Kontext-Modellierung reduziert ist. Je nach Kodierdurchlauf wurde entweder in einem Schritt ein Koeffizientenbit gleichzeitig mit seinem Vorzeichenbit modelliert oder in einem Schritt eine Spalte von bis zu vier Koeffizientenbits gleichzeitig modelliert oder in einem Schritt eine Spalte von bis zu vier Koeffizientenbits in einer sogenannten Lauflängenprimitive modelliert, wobei im selben Schritt der signifikant werdende Koeffizient zusammen mit seinem Vorzeichenbit modelliert wird.
  • Des Weiteren war eine Vorhersage vorgesehen, wie viele Koeffizienten in einer Spalte in einem Schritt modelliert werden können. Diese Maßnahmen bewirken bei einem getakteten Prozess bei gleicher Taktfrequenz die Kodierung eines Kodierdurchlaufes in weniger Zeit, da Wartezeiten auf Registersetzvorgänge entfallen, bis zu vier Koeffizienten gleichzeitig modelliert werden können, bis zu vier Modelliervorgänge in einem Schritt erfolgen können, bereits am Beginn des Modelliervorgangs einer Spalte bekannt ist, wie viele Koeffizienten in einem Schritt modelliert werden können, wodurch zeitaufwendige Prüffunktionen während der Modellierung entfallen.
  • Zudem ermöglichte die Bitextraktion eine Reduktion der mitzuprotokollierenden und zu aktualisierenden gesonderten Statusvariablen für jeden Koeffizienten eines Codeblocks, womit einerseits die benötigte Speichergröße reduziert werden kann und andererseits die Kodierung eines Kodierdurchlaufes beschleunigt werden kann, da zusätzliche Lese- und Schreibvorgänge entfallen.
  • Ein Vorteil des Blockkodierers von 38 besteht insbesondere darin, dass je nach Kodierdurchlauf bis zu vier in einem Streifen untereinander liegende Koeffizientenbits gleichzeitig modelliert wurden, um Informationsworte zu generieren, die gegebenenfalls sogar komprimierte Informationen für bis zu vier Bit-Kontext-Paare beinhalten können. Diese Informationsworte werden zwischengespeichert und durch geeignete Evaluierung in einem Decoder dem nachgeschalteten arithmetischen Kodierer in einer geeigneten Darstellung und in der korrekten Reihenfolge zugeführt auf die Art und Weise, wie es im Vorhergehenden beschrieben wurde. Durch obige Maßnahmen wurde die Koeffizientenbitmodellierung so verbessert, dass sie eine leichtere Hardwareimplementierung ermöglicht.
  • Wie im Vorhergehenden beschrieben enthält der Bitextraktor von einer Speichereinheit einen Vektor von Koeffizienten, um aus jedem Koeffizienten k des Vektors für die zu kodierende Bitebene m Informationen zu extrahieren, die das Betragsbit km, das Vorzeichenbit kvz und Statusbits kst aufweisen, wobei die Statusbits wiederum aus dem Bit bestehen, das anzeigt, ob der Koeffizient in der Bitebene m schon signifikant ist, wozu für alle Betragsbits oberhalb der aktuellen Ebene überprüft wird, ob ein Bit gesetzt ist. wobei, wenn mindestens ein Bit gesetzt ist, der Koeffizient in dieser Bitebene signifikant ist, und dem Bit, das anzeigt, ob das MR-Kodierschema zum ersten Mal oder bereits vorher schon Mal auf diesen Koeffizienten angewendet worden ist, wozu für alle Betragsbits oberhalb der aktuellen Bit ebene überprüft wird, ob eines dieser Bits gesetzt ist, wobei, wenn mindestens zwei Bits gesetzt sind, dann das MR-Kodierschema für den Koeffizienten schon einmal angewendet worden ist. Durch diese Extraktion kann wie im Vorhergehen erwähnt auf gesonderte Statusvariablen für jeden Koeffizienten eines Kodierblocks verzichtet werden, da diese Informationen für jeden Streifen aufs Neue bestimmt werden und nur für die Dauer der Kodierung gehalten werden müssen, wodurch einerseits die benötigte Speichergröße reduziert und andererseits die Kodierung des Kodierdurchlaufes beschleunigt werden kann, da zusätzliche Lese- und Schreibvorgänge entfallen.
  • Eine Hardwareimplentierung gemäß den 38 lässt also erwarten, dass in einem getakteten Prozess bei gleicher Taktfrequenz die Kodierung eines Kodierdurchlaufes wesentlich schneller erfolgen kann, da wie oben erwähnt Wartezeiten auf Register-Setzvorgänge entfallen, bis zu vier Koeffizienten gleichzeitig modelliert werden können, bis zu fünf Modelliervorgänge in einem Schritt erfolgen können, bereits am Beginn des Modelliervorganges einer Spalte bekannt ist, wie viel Koeffizienten in einem Schritt modelliert werden können, wodurch zeitaufwendige Prüffunktionen während der Modellierung entfallen, und zusätzliche Lese- und Schreibvorgänge für die Statusvariablen entfallen. Diese Vorteile sind für einen Komprimierer, wie er in 1 gezeigt ist, und bei dem der Kodierer von 3 eingesetzt werden kann, von hohem Wert. Denn in mehreren Untersuchungen wurde bereits festgestellt, dass der Blockkodierer und vor allem die Koeffizientenbitmodellierung die aufwendigste Operation innerhalb des JPEG2000-Kodierprozesses darstellt. In dem bereits in der Beschreibungseinleitung der vorliegenden Anmeldung genannten Artikel von Lian et al. wird beispielsweise ein Untersuchungsergebnis vorgestellt, wonach fast 52% der Rechenleistung eines Computers für die Summe aller drei Kodierdurchläufe benötigt wird. Eine Beschleunigung des Koeffizientenbitmodelliervorganges wirkt sich somit signifikant für den gesamten Kodierprozess aus.
  • Bei Implementierungen, bei denen eine höhere Kodiergeschwindigkeit durch Mehrfachinstantiierung des Blockkodierers erreicht wird, können somit Resourcen eingespart werden, damit dem Ausführungsbeispiel nach 38 weniger Kodiereinheiten zur Erlangung der gleichen Kodiergeschwindigkeit notwendig sind.
  • Soeben erwähnte Implementierungen lassen sich beispielsweise auf FPGAs (Field Programmable Logic Array = Vorortprogrammierbare Logik Arrays) aber auch als integrierte Schaltung bzw. ASIC (ASIC = Application Specific Integrated Circuit = anwendungsspezifische integrierte Schaltung) realisieren. Für ein FPGA wurde bereits eine Hardwareimplementierung umgesetzt, wozu die entsprechende Funktionseinheiten durch VHDL beschrieben und mit geeigneten Werkzeugen übersetzt und für die Zielplattform synthetisiert wurden.
  • Verschiedene Modifikationen können an den Ausführungsbeispielen nach 38 vorgenommen werden. Beispielsweise kann das Schieberegister 106 anders ausgeführt sein. Insbesondere kann es beispielsweise mehr Schieberegisterränge aufweisen, d. h. in 8 also nach links hin ausgeweitet sein. Ferner kann der Versatz zwischen den aktuellen 4-er-Vektoren 292, 322 und 506 auch größer sein als die zwei Schieberegisterränge, wie es in 8 gezeigt ist. Zudem ist es möglich, dass der Versatz variabel ist. Hierzu ist beispielsweise die Schieberegistereinheit nicht einheitlich ausgeführt, wie es in 8 gezeigt ist, sondern als Zwei Schieberegister, eines für die Bitmodelliereinheit 1081 und eine weitere für die Bitmodelliereinheiten 1082 und 1083 , wobei zwischen denselben ein FIFO-Speicher angeordnet ist, um als variabler Puffer zwischen den Schieberegistern zu dienen.
  • Im Vorhergehenden wurde erwähnt, dass die Vorzeichenbitvorkodiereinheiten auf Basis der ersten Steuerbits feststellen, ob die jeweiligen Vorzeichenbits der Nachbarkoeffizienten dekodiererseitig bekannt sind oder nicht. Im Nor malfall ist dann das erste Steuerbit des Transformationskoeffizienten, das oben an dem betreffenden aktuellen Koeffizienten angrenzt, als über den Demultiplexer 214 bzw. 414 aktualisiert anzusehen. Sollte das jedoch aufgrund von Signallaufzeitüberlegungen dazu führen, dass die Verarbeitungszyklen sich verzögern, so wäre es ebenfalls möglich, dass die Vorzeichenbitvorkodiereinheiten ein noch nicht aktualisiertes erstes Steuerbit des oberen nächsten Nachbarkoeffizienten mittels des entsprechenden Betragsbits dieses Nachbarkoeffizienten virtuell aktualisieren.
  • Im Vorhergehenden wurden auch zur Vereinfachung der Darstellung Randproblematiken beispielsweise am Rand der Bitebenen, am Ende und am Anfang eines Streifens usw. nicht weiter vertieft, um die vorhergehende Beschreibung nicht unnötig zu verkomplizieren. Nicht vorhandene oder dem Dekodierer nicht zur Verfügung stehenden Daten können vereinbarungsgemäß auf eine vorzugsweise decoderseitig bekannte Weise auf vorbestimmte Werte eingestellt werden. Es können zudem bei dem Blockkodierer nach 3 bei der Kodierung der Betragsbits der Streifen die jeweils angrenzenden Zeilen der angrenzenden Streifen unberücksichtigt bleiben. In diesem Fall wäre dann beispielsweise auch das Schieberegister kleiner, um in jedem der Teile 1061 bis 1063 lediglich die vier Zeilen der Streifen zu umfassen.
  • 9 zeigt ein etwas allgemeineres Beispiel eines Blockkodierers. Der Blockkodierer von 9, der allgemein mit 700 angezeigt ist, umfasst einen Vorkodierer 702, einen Zwischenspeicher 704 und einen Entropiekodierer 706. Der zu kodierende Transformationskoeffizientenblock ist in 9 bei 708 dargestellt. Der Vorkodierer 702 ist wie die im Vorhergehenden erläuterten Bitmodelliereinheiten dazu ausgelegt, die Transformationskoeffizienten 710, die in Zeilen und Spalten angeordnet sind, in Tupeln 712 zu hier exemplarisch ebenfalls vier in Spaltenrichtung benachbarten Transformationskoeffizienten 710 zu durchlaufen. Insbesondere ist der Vorkodierer 702 dazu ausgelegt, die mehreren Be tragsbits, durch die die Transformationskoeffizienten 710 dargestellt sind, um mehrere Bitebenen zu definieren, bitebenenweise zu durchlaufen, um insbesondere in jeder Bitebene die Betragsbits in Tupeln 712 zu durchlaufen. Dabei nimmt der Vorkodierer 702 eine Vorkodierung vorbestimmter der Betragsbits vor, wie z. B. lediglich der Betragsbits von signifikanten Transformationskoeffizienten, wie es bei der Bitmodelliereinheit 1082 der Fall war, oder lediglich der Betragsbits von insignifikanten Transformationskoeffizienten, wie es bei den Bitmodelliereinheiten 1081 und 1083 der Fall war. Dabei nimmt der Vorkodierer 702 die Vorkodierung der vorbestimmten Betragsbits derart vor, dass es dieselben tupelweise in ein Datenwort 714 kodiert, also maximal vier in dem exemplarischen Fall von 9 oder betragsbitweise, aber dann derart, dass in das Datenwort 714 zusammen mit dem Betragsbit auch ein zugehöriges Vorzeichen kodiert wird.
  • In dem Zwischenspeicher 714 befindet sich somit in sehr komprimierter Form eine Kodierung der vorbestimmten Betragsbits gegebenenfalls mit zugehörigen Vorzeichen. Der Vorkodierer umgekehrt benötigt lediglich einen Verarbeitungstakt bzw. einen Verarbeitungszyklus pro Datenwort, so dass der Durchlaufvorgang schnell ist.
  • Der Entropiekodierer ist ausgebildet ist, um die Datenwörter aus dem Zwischenspeicher 704 in der Reihenfolge ihrer Einspeicherung zu erhalten und einer Entropiekodierung zu unterziehen, wobei seine Verarbeitungsgeschwindigkeit aufgrund der Zwischenspeicherung in dem Zwischenspeicher 704 unabhängig von derjenigen des Vorkodierers 702 sein kann, solange die Puffergröße des Zwischenspeichers 704 ausreichend ist.
  • Natürlich ist die Größe des Tupels nicht auf vier Betragsbits beschränkt und auch nicht auf eine Spaltenanordnung der in dem Tupel 712 benachbarten Betragsbits. Obwohl bei dem Ausführungsbeispiel von 9 lediglich vorbestimmte der Betragsbits von dem Vorkodierer 702 erfasst werden und somit eine verlustbehaftete Kompression der Transformationskoeffizientendaten vorgenommenen wird, kann analog zu dem vorhergehenden Ausführungsbeispiel dem Paar aus Vorkodierer 702 und Zwischenspeicher 704 ein weiteres Paar von Vorkodierer und Zwischenspeicher parallel geschaltet sein, um weitere andere vorbestimmte Betragsbits zu kodieren, wobei dann in dem Entropiekodierer 706 ähnlich der Entropiekodiereinrichtung 112 ein Entscheider vorgesehen sein kann, um die in den Datenworten vorkodierten Betragsbits durch gegebenenfalls Vorzeichenbits in einer geeigneten Reihenfolge in den Datenstrom an dem Ausgang des Entropiekodierers zu kodieren. Gemäß einer weiteren Modifikation kann zusätzlich oder alternativ dem Vorkodierer 702 ähnlich dem Ausführungsbeispiel von 3 ein Bitextraktor und eine Schieberegistereinheit vorgeschaltet sein, so dass der Vorkodierer auf der Basis der in dieser Schieberegistereinheit enthaltenen Informationen arbeiten kann, wie z. B. zusammen mit einem parallel geschalteten Vorkodierer.
  • Abhängig von den Gegebenheiten können beschriebene Abläufe zur Transformationskoeffizientenblockkodierung nicht nur in Hardware, sondern natürlich auch in Software implementiert werden. Die Implementation kann auf einem digitalen Speichermedium, insbesondere einer Diskette, einer CD oder einer DVD mit elektronisch auslesbaren Steuersignalen erfolgen, die so mit einem programmierbaren Computersystem zusammenwirken können, dass das entsprechende Verfahren ausgeführt wird. Allgemein besteht die Erfindung somit auch in einem Computer-Programm-Produkt mit einem auf einem maschinenlesbaren Träger gespeicherten Programmcode zur Durchführung eines obiger Verfahren, wenn das Computer-Programm-Produkt auf einem Rechner abläuft. Mit anderen Worten ausgedrückt kann die Erfindung somit als ein Computer-Programm mit einem Programmcode zur Durchführung eines obiger Verfahren realisiert werden, wenn das Computer-Programm auf einem Computer abläuft. Hierbei ist unter einem Computer jegliche Form eines Prozessors zu verstehen, der ausgelegt ist, um ein Programm oder einen Programmcode auszuführen, also insbesondere auch Mikrocontroller oder dergleichen.

Claims (27)

  1. Vorrichtung zum Kodieren eines Blockes (34; 708) von Transformationskoeffizienten (710), wobei die Transformationskoeffizienten jeweils mittels mehrerer Betragsbits (252) dargestellt sind, so dass dieselben eine Folge von Betragsbitebenen (381 ... 38n ) definieren, mit einem Vorkodierer (1081 ; 1082 ; 1083 ; 702) zum Durchlaufen der Betragsbits einer vorbestimmten der Betragsbitebenen (381 ... 38n ) in Tupeln (292; 322; 506; 712) von jeweils einer Mehrzahl von benachbarten Betragsbits und Kodieren vorbestimmter der Betragsbits der Tupel in Datenwörter derart, dass ein vorbestimmtes Betragsbit zusammen mit einem zugeordneten Vorzeichenbit in eines der Datenwörter (244; 444; 714) kodiert wird, oder dass ein vorbestimmtes Betragsbit zusammen mit einem anderen vorbestimmten Betragsbit des gleichen Tupels in eines der Datenwörter (318; 444; 714) kodiert wird; einem Datenwortzwischenspeicher (1101 ; 1102 ; 1103 ; 704) zum Zwischenspeichern der Datenwörter (244; 318; 444; 714); und einem Entropiekodierer (112; 706) zum Kodieren der Datenwörter (244; 318; 444; 714) aus dem Datenwortzwischenspeicher in einen kodierten Datenstrom.
  2. Vorrichtung gemäß Anspruch 1, bei der die Transformationskoeffizienten jeweils mittels der mehreren Betragsbits (252) sowie einem zugehörigen Vorzeichenbit (250) dargestellt sind, und der Vorkodierer (1081 ; 1083 ; 702) derart ausgebildet ist, dass die Kodierung der vorbestimmten Betragsbits auch von dem diesem vorbestimmten Betragsbit zugehörigen Vorzeichenbit abhängt.
  3. Vorrichtung gemäß Anspruch 2, bei der der Vorkodierer (1081 ; 1083 ; 702) derart ausgebildet ist, dass die Kodierung der vorbestimmten Betragsbits auch von Vorzeichenbits abhängt, die den Betragsbits zugehörig sind, die zu den vorbestimmten Betragsbits benachbart sind.
  4. Vorrichtung gemäß Anspruch 3, bei der der Vorkodierer (1081 ; 1083 ; 702) derart ausgebildet ist, dass die Kodierung der vorbestimmten Betragsbits auch von ersten Statusbits (274) abhängt, die für die Transformationskoeffizienten, die durch die vorbestimmten Betragsbits und Betragsbits, die zu den vorbestimmten Betragsbits benachbart sind, dargestellt sind, eine Signifikanz bezogen auf die vorbestimmte Betragsbitebene anzeigen.
  5. Vorrichtung gemäß einem der vorhergehenden Ansprüche, bei denen dem Vorkodierer (1081 ; 1083 ; 702) ein Zwischenspeicher (106) sowie ein Bitextraktor (104) zum, beim Durchlaufen der Betragsbits in Tupeln, Befüllen des Zwischenspeichers (106) mit einem Tupel einer Mehrzahl von benachbarten Betragsbits der vorbestimmten Betragsbitebene, das gemäß einer Reihenfolge des Durchlaufens frühestens als nächstes Tupel an der Reihe ist, zugehörigen Vorzeichenbits zu den Betragsbits des frühestens als nächstes an der Reihe seienden Tupels, und ersten Statusbits, die für die Transformationskoeffizienten, die durch eine Mehrzahl von benachbarten Betragsbits der vorbestimmten Betragsbitebene eines gemäß der Reihenfolge des Durchlaufens frühestens als übernächstes an der Reihe seiendes Tupels dargestellt sind, eine Signifi kanz bezogen auf die vorbestimmte Betragsbitebene anzeigen, vorgeschaltet ist, und der Vorkodierer ausgebildet ist, um die Kodierung auf Basis eines Inhalts des Zwischenspeichers durchzuführen.
  6. Vorrichtung gemäß Anspruch 5, bei der der Bitextraktor (104) ausgebildet ist, um zur Befüllung des Zwischenspeichers (106) die ersten Statusbits (274) aus Betragsbits (276) zu ermitteln, die die gleichen Transformationskoeffizienten darstellen wie die Betragsbits des frühestens als übernächstes an der Reihe seienden Tupels, aber in signifikanteren Betragsbitebenen liegen als dieselben.
  7. Vorrichtung gemäß Anspruch 5 oder 6, bei der der Bitextraktor (104) ausgebildet ist, um zur Befüllung des Zwischenspeichers (106) die Mehrzahl von benachbarten Betragsbits des frühestens als nächstes zu kodierenden Tupels und die dazugehörigen Vorzeichenbits durch einen Speicherzugriff (114) auf einen Speicher (102) zu erhalten, der die Betragsbits und Vorzeichenbits speichert.
  8. Vorrichtung gemäß einem der Ansprüche 5 bis 7, bei der der Zwischenspeicher ein Schieberegister (106) aufweist, das erste Statusbits (274), mit denen der Zwischenspeicher (106) gefüllt wird, erst nach mehr als fünf Schiebeoperationen verliert, und/oder Betragsbits (252), mit denen der Zwischenspeicher (106) gefüllt wird, erst nach mehr als drei Schiebeoperationen und/oder Vorzeichenbits (250), mit denen der Zwischenspeicher (106) befüllt wird, erst nach mehr als vier Schiebeoperationen verliert.
  9. Vorrichtung gemäß einem der Ansprüche 4 bis 8, bei der der Vorkodierer (1081 ), eine Betragsbitvorkodiereinheit (202), die ausgebildet ist, um auf Basis eines zugeführten Betragsbits unter den benachbarten Betragsbits eines gemäß einer Reihenfolge des Durchlaufens aktuell an der Reihe seienden Tupels (282), und ersten Statusbits (290) für die Transformationskoeffizienten, die durch eine erste Mehrzahl von Betragsbits der vorbestimmten Betragsbitebene dargestellt sind, die zu dem zugeführten Betragsbit benachbart sind, ein erstes Teildatenwort zu erzeugen, aus dem das zugeführte Betragsbit (232) sowie ein zugehöriger Betragsbitkontext (236) ermittelbar ist, und eine Vorzeichenbitvorkodiereinheit (208), die ausgebildet ist, um auf Basis des dem zugeführten Betragsbit zugehörigen Vorzeichenbits (250); von einer zweiten Mehrzahl von Betragsbits der vorbestimmten Betragsbitebene, die zu dem zugeführten Betragsbit benachbart sind, zugehörigen Vorzeichenbits (294); und der ersten Statusbits (290) für die Transformationskoeffizienten, die durch die zweite Mehrzahl von Betragsbits der vorbestimmten Betragsbitebene dargestellt sind, ein zweites Teildatenwort zu erzeugen, aus dem das dem zugeführten Betragsbit zugehörige Vorzeichenbit (234) sowie ein zugehöriger Vorzeichenbitkontext (236) ermittelbar sind, aufweist, und derart ausgebildet ist, dass das Datenwort (244) des zugeführten Betragsbits das erste Teildatenwort und das zweite Teildatenwort umfasst, und wobei der Entropiekodierer (112) ausgebildet ist, um aus dem ersten Teildatenwort das zugeführte Betragsbit sowie den zugehörigen Betragsbitkontext zu ermitteln und das zugeführte Betragsbit unter Verwendung des zugeführten Betragsbitkontexts kontext-abhängig arithmetisch in den Datenstrom zu kodieren, und, falls der zugeführte Betragsbit signifikant ist, aus dem zweiten Teildatenwort, das dem zugeführten Betragsbit zugehörige Vorzeichenbit sowie den demselben zugehörigen Vorzeichenbitkontext zu ermitteln und das dem zugeführten Betragsbit zugehörige Vorzeichenbit unter Verwendung des zugehörigen Vorzeichenbitkontexts kontextabhängig arithmetisch in den Datenstrom zu kodieren.
  10. Vorrichtung gemäß Anspruch 9, bei der der Vorkodierer (108) eine Multiplexschaltung aufweist, die eine erste Multiplexerschaltung (204), der durch ein Steuersignal ein beliebiges der Betragsbits des gerade an der Reihe seienden Tupels (282) anzeigbar ist, und die ausgebildet ist, um das angezeigte Betragsbit als das zugeführte Betragsbit der Betragsbitvorkodiereinheit (202) zuzuführen; eine zweite Multiplexerschaltung (206, 212), die durch das Steuersignal steuerbar ist, um die ersten Statusbits (290) für Transformationskoeffizienten, die durch eine dritte Mehrzahl von Betragsbits der vorbestimmten Betragsbitebene dar gestellt sind, die zu dem angezeigten Betragsbit benachbart sind, als die ersten Steuerbits für die Transformationskoeffizienten, die durch die erste Mehrzahl von Betragsbits dargestellt sind, der Betragsbitvorkodiereinheit (202) zuzuführen, und die ersten Statusbits (290) für Transformationskoeffizienten, die durch eine vierte Mehrzahl von Betragsbits der vorbestimmten Betragsbitebene dargestellt sind, die zu dem angezeigten Betragsbit benachbart sind, als die ersten Steuerbits für die Transformationskoeffizienten, die durch die zweite Mehrzahl von Betragsbits dargestellt sind, der Vorzeichenbitvorkodiereinheit (208) zuzuführen; eine dritte Multiplexereinheit (210), die durch das Steuersignal steuerbar ist, um die dem angezeigten Betragsbit und der vierten Mehrzahl von Betragsbits der vorbestimmten Betragsbitebene zugehörigen Vorzeichenbits (294) als das dem vorgegebenen Betragsbit zugehörige Vorzeichenbit und die der zweiten Mehrzahl von Betragsbits zugehörigen Vorzeichenbits der Vorzeichenbitvorkodiereinheit (208) zuzuführen, aufweist.
  11. Vorrichtung gemäß einem der Ansprüche 4 bis 10, bei der der Vorkodierer (1081 ; 1083 ) eine Vorhersageeinrichtung (200; 400) zum Vorhersagen aufweist, ob und, wenn ja, welcher der Betragsbits unter den benachbarten Betragsbits der vorbestimmten Betragsbitebene eines gemäß der Reihenfolge des Durchlaufens als nächstes an der Reihe seienden Tupels (2745,2 bis 2745,5 ; 2743,2 bis 2743,5 ) zu den vorbestimmten Betragsbits gehört, wobei die Vorhersageeinrichtung ausgebildet ist, die Vorhersage auf Basis der Be tragsbits (282) der vorbestimmten Betragsbitebene des als nächstes an der Reihe seienden Tupels und des aktuell an der Reihe seienden Tupels und der ersten Statusbits (284; 504) für die Transformationskoeffizienten, die durch die Betragsbits der vorbestimmten Betragsbitebene des als nächstes an der Reihe seienden Tupels, des aktuell an der Reihe seienden Tupels und des als übernächstes an der Reihe seienden Tupels dargestellt sind, zu treffen.
  12. Vorrichtung gemäß Anspruch 11, bei der die Vorhersageeinrichtung (200) derart ausgebildet ist, dass die Vorhersage, ob und, wenn ja, welcher der Betragsbits unter den benachbarten Betragsbits der vorbestimmten Betragsbitebene eines gemäß der Reihenfolge des Durchlaufens als nächstes an der Reihe seienden Tupels zu den vorbestimmten Betragsbits gehört, auch von einer vorherigen Vorhersage (218) der Vorhersageeinrichtung abhängt, ob und wenn ja, welche der Betragsbits unter den benachbarten Betragsbits der vorbestimmten Betragsbitebene eines gemäß der Reihenfolge des Durchlaufens aktuell an der Reihe seienden Tupels zu dem vorbestimmten Betragsbit gehört.
  13. Vorrichtung gemäß Anspruch 11, bei der die Vorhersageeinrichtung (200) derart ausgebildet ist, dass die Vorhersage, ob und, wenn ja, welcher der Betragsbits unter den benachbarten Betragsbits der vorbestimmten Betragsbitebene eines gemäß der Reihenfolge des Durchlaufens als nächstes an der Reihe seienden Tupels zu dem vorbestimmten Betragsbit gehört, auch von ersten Statusbits (2743,2 bis 2743,5 ) für die Transformationskoeffizienten abhängt, die durch die Betragsbits der vorbestimmten Betragsbitebene des gemäß der Reihenfolge des Durchlaufens zuletzt an der Reihe gewesenen Tupels dargestellt sind.
  14. Vorrichtung gemäß einem der Ansprüche 11 bis 13, bei der die Vorhersageeinrichtung (200) ausgebildet ist, um ein Ergebnis der Vorhersage in Form eines Bitvektors (218) auszugeben, der pro Betragsbit des als nächstes an der Reihe seienden Tupels ein Vektorbit (iae, jae, kae, lae) aufweist, das die Zugehörigkeit oder Nicht-Zugehörigkeit des jeweiligen Betragsbits des als nächstes an der Reihe seienden Tupels anzeigt.
  15. Vorrichtung gemäß einem der Ansprüche 11 bis 14, bei der der Vorkodierer (1081 ) ferner einen Schiebeimpulsgenerator (200, 220) aufweist, der ausgebildet ist, um auf Basis der Betragsbits der vorbestimmten Betragsbitebenen des als nächstes an der Reihe seienden Tupels und des aktuell an der Reihe seienden Tupels und der ersten Steuerbits für Transformationskoeffizienten, die durch Betragsbits der vorbestimmten Betragsbitebene des als nächstes an der Reihe seienden Tupels, des aktuell an der Reihe seienden Tupels und des als übernächstes an der Reihe seienden Tupels dargestellt sind, vorherzusagen, wie viele der Betragsbits unter den benachbarten Betragsbit der vorbestimmten Betragsbitebene des als nächstes an der Reihe seienden Tupels zu den vorbestimmten Betragsbits gehören, und basierend auf der vorhergesagten Anzahl und einem Verarbeitungstakt, in Einheiten wessen die Kodierung der vorbestimmten Betragsbits in Datenworte durchgeführt wird, um keinen, einen oder mehrere Taktzyklen des Verarbeitungstaktes verzögert, ein Schiebeimpuls an ein Schieberegister (106) auszugeben.
  16. Vorrichtung gemäß einem der Ansprüche 4 bis 15, bei der der Vorkodierer (1081 ; 1083 ) ferner eine Multiplexeransteuerung (422, 222) aufweist, die ausgebildet ist, um an eine Multiplexerschaltung (204, 206, 210, 212) ein Steuersignal auszugeben, das in einer vorbestimmten Reihenfolge unter den benachbarten Betragsbits eines aktuell an der Reihe seienden Tupels se quentiell diejenigen Betragsbits anzeigt, die zu den vorbestimmten Betragsbits gehören.
  17. Vorrichtung gemäß einem der Ansprüche 1 bis 16, bei der der Vorkodierer (1081 , 1082 , 1083 ) ausgebildet ist, um beim Durchlaufen auch jeweils ein Datenwort für Tupel zu erzeugen, unter dessen benachbarten Betragsbits keines zu den vorbestimmten Betragsbits gehört, und ein Gültigkeitsbit (246; 320; 446) abhängig davon zu setzen, ob sich unter den Betragsbits in einem gemäß der Reihenfolge des Durchlaufens aktuell an der Reihe seienden Tupels ein vorbestimmtes Betragsbit befindet, und der Datenwortzwischenspeicher (1101 ; 1102 ; 1103 ) ausgebildet ist, um nur in dem Fall eines gesetzten Gültigkeitsbits das jeweilige Datenwort (244; 318; 444) zwischenzuspeichern oder dann, wenn das jeweilige Datenwort (244; 318; 444) für das letzte Tupel in der vorbestimmten Betragsbitebene erzeugt worden ist.
  18. Vorrichtung gemäß einem der vorhergehenden Ansprüche, bei der der Vorkodierer (1081 , 1082 , 1083 ) derart ausgebildet ist, dass das Durchlaufen der Betragsbits der vorbestimmten Betragsbitebene streifenweise erfolgt, derart, dass die benachbarten Bits jedes Tupels in einer Spalte des Blocks liegen, und unmittelbar aufeinander folgende Tupel Spalte an Spalte nebeneinander liegen oder in unmittelbar benachbarten Streifen von Zeilen des Blocks mit einem der beiden Tupel an einem Ende eines der unmittelbar benachbarten Streifen und dem anderen der beiden Tupel an einem gegenüberliegenden Ende des anderen der unmittelbar benachbarten Streifen.
  19. Vorrichtung gemäß einem der vorhergehenden Ansprüche, bei der der Vorkodierer (1081 , 1082 , 1083 ) derart ausgebildet ist, dass derselbe auf das Durchlaufen der vorbestimmten Betragsbitebene hin eine weniger signifikante Betragsbitebene durchläuft und die vorbestimm ten Betragsbits der weniger signifikanten Betragsbitebene in Datenworte kodiert.
  20. Vorrichtung gemäß einem der vorhergehenden Ansprüche, bei der der Vorkodierer (1081 , 1083 ) derart ausgebildet ist, dass derselbe für jedes vorbestimmte Betragsbit ein Bypass-Modus-Bit (240, 440) des jeweiligen Datenworts abhängig von einer Bittiefe einstellt, die der vorbestimmten Betragsbitebene zugeordnet ist.
  21. Vorrichtung gemäß Anspruch 4, bei der der Vorkodierer, derart ausgebildet ist, dass die Kodierung jedes Tupels einer Mehrzahl von benachbarten Betragsbits auch von ersten Statusbits (274) abhängt, die für die Transformationskoeffizienten, die durch die vorbestimmten Betragsbits und Betragsbits, die zu den vorbestimmten Betragsbits benachbart sind, dargestellt sind, eine Signifikanz bezogen auf die vorbestimmte Betragsbitebene anzeigen, sowie von zweiten Statusbits (280), die für die Transformationskoeffizienten, die durch vorbestimmte Betragsbits dargestellt sind, anzeigen, ob für den jeweiligen Transformationskoeffizienten zwei oder mehr als zwei Betragsbits unter den Betragsbits, die die jeweiligen Transformationskoeffizienten darstellen und sich in signifikanteren Betragsbitebenen befinden als die vorbestimmte Betragsbitebene, existieren, die signifikant sind.
  22. Vorrichtung gemäß Anspruch 21, bei der der Vorkodierer (1082 ) pro Betragsbit der Mehrzahl von benachbarten Betragsbits der Tupel eine Betragsbitvorkodiereinheit (302# ) aufweist, die ausgebildet ist, um auf Basis des jeweiligen Betragsbits unter den benachbarten Betragsbits eines gemäß einer Reihenfolge des Durchlaufens aktuell an der Reihe seienden Tupels (322), der ersten Statusbits (324) für die Transformationskoeffizienten, die durch eine siebte Mehrzahl von Betragsbits der vorbestimmten Betragsbitebene dargestellt sind, die zu dem jeweiligen Betragsbit benachbart sind, und des zweiten Statusbits (280) für den Transformationskoeffizienten, der durch das jeweilige Betragsbit dargestellt ist, ein jeweiliges Teildatenwort zu erzeugen, aus dem das jeweilige Betragsbit (310) sowie ein zugehöriger Betragsbitkontext (312) ermittelbar ist, aufweist und derart ausgebildet ist, dass die Teildatenworte gemeinsam das Datenwort (318) des oder der vorbestimmten Betragsbits des aktuell an der Reihe seienden Tupels ergeben, und dass ausschließlich anhand des Datenworts ermittelbar ist, welche der Teildatenworte für Betragsbits erzeugt worden sind, die zu den vorbestimmten Betragsbits gehören, wobei der Entropiekodierer ausgebildet ist, um aus den Teildatenworten zu ermitteln, welche derselben für Betragsbits, die zu den vorbestimmten Betragsbits gehören, erzeugt wurden, und aus diesen das jeweilige Betragsbit sowie den dazugehörigen Betragsbitkontext zu ermitteln, und das jeweilige Betragsbit unter Verwendung des zugehörigen Betragsbitkontexts kontextabhängig arithmetisch in den Datenstrom zu kodieren.
  23. Vorrichtung gemäß Anspruch 22, bei der Vorkodierer eine Vorhersageeinrichtung (300) zum Vorhersagen aufweist, ob, und, wenn ja, welcher oder welche der Betragsbits unter den benachbarten Betragsbits der vorbestimmten Betragsbitebene eines gemäß der Reihenfolge des Durchlaufens als frühestens übernächstes an der Reihe seienden Tupels zu den vorbestimmten Betragsbits gehört, wobei die Vorhersageeinrichtung ausgebildet ist, um die Vorhersage auf Basis der ersten Statusbits für die Transformationskoeffizienten, die durch die Betragsbits der vorbestimmten Betragsbitebene eines frühestens übernächstes an der Reihe seienden Tupels dargestellt sind, zu treffen.
  24. Vorrichtung gemäß Anspruch 11, bei der der Vorkodierer (1083 ), eine Lauflängenkodiereinheit (500), die basierend auf einem Vorhersageergebnis (418) der Vorhersageinrichtung (400) in dem Zustand, bei dem das als nächstes an der Reihe seiende Tupel aktuell an die Reihe kommt, ein Lauflängenteildatenwort (446) erzeugt, aus dem ermittelbar ist, wie viele der Betragsbits des an die Reihe kommenden Tupels in einer vorbestimmten Betragsbitreihenfolge unter denselben durchgehend insignifikant sind, sowie, falls einer der Betragsbits des an die Reihe kommenden Tupels existiert, der signifikant ist und nicht das erste Betragsbit in diesem Tupel in der Betragsbitreihenfolge ist, an welcher Position sich das in der Betragsbitreihenfolge erste signifikante Betragsbit befindet, eine Koeffizientenwählereinheit (422), die ausgebildet ist, um basierend auf einem Vorhersageergebnis (418) der Vorhersageinrichtung (400) in dem Zustand, bei dem das als nächstes an der Reihe seiende Tupel aktuell an die Reihe kommt, ein Steuersignal auszugeben, das in der Betragsbitreihenfolge sequentiell das in der Betragsbitreihenfolge erste signifikante Betragsbit und die auf das in der Betragsbitreihenfolge erste signifikante Betragsbit folgenden Betragsbits des an die Reihe kommenden Tupels vorgibt, und eine Betragsbitvorkodiereinheit (402), die ausgebildet ist, um abhängig von dem Steuersignal jeweils auf Basis eines jeweils vorgegebenen Betragsbits unter den benachbarten Betragsbits des an die Reihe kommenden Tupels, und ersten Statusbits (510) für die Transformationskoeffizienten, die durch eine erste Mehrzahl von Betragsbits der vorbestimmten Betragsbitebene dargestellt sind, die zu dem jeweils vorgegebenen Betragsbit benachbart sind, ein erstes Teildatenwort zu erzeugen, aus dem das jeweils vorgegebene Betragsbit (432) sowie ein zugehöriger Betragsbitkontext (436) ermittelbar ist, und eine Vorzeichenbitvorkodiereinheit (408), die ausgebildet ist, um abhängig von dem Steuersignal auf Basis des dem jeweils vorgegebenen Betragsbit zugehörigen Vorzeichenbit; von einer zweiten Mehrzahl von Betragsbits der vorbestimmten Betragsbitebene, die zu dem jeweils vorgegebenen Betragsbit benachbart sind, zugehörigen Vorzeichenbits (510); und der ersten Statusbits (508) für die Transformationskoeffizienten, die durch die zweite Mehrzahl von Betragsbits der vorbestimmten Betragsbitebene dargestellt sind, ein zweites Teildatenwort zu erzeugen, aus dem das dem jeweils vorgegebenen Betragsbit zugehörige Vorzeichenbit (434) sowie ein zugehöriger Vorzeichenbitkontext (436) ermittelbar sind, aufweist, und derart ausgebildet ist, dass eines der Datenwörter (444) das erste Teildatenwort, das zweite Teildatenwort und das Lauflängendatenwort umfasst, und wobei der Entropiekodierer (112) ausgebildet ist, um aus dem Lauflängendatenwort (446) eine Information über die in der vorbestimmten Betragsbitreihenfolge durchgehend insignifikanten Betragsbits zu ermitteln und arithmetisch in den Datenstrom zu kodieren, aus dem ersten Teildatenwort – außer in dem Fall des in der Betragsbitreihenfolge ersten signifikanten Betragsbits – das jeweils vorgegebene Betragsbit sowie den zugehörigen Betragsbitkontext zu ermitteln und das jeweils Betragsbit unter Verwendung des zugeführten Betragsbitkontexts kontext-abhängig arithmetisch in den Datenstrom zu kodieren, und, falls das jeweils vorgegebene Betragsbit signifikant ist, – auch in dem Fall des in der Betragsbitreihenfolge ersten signifikanten Betragsbits – aus dem zweiten Teildatenwort, das dem jeweils vorgegebenen Betragsbit zugehörige Vorzeichenbit sowie den demselben zugehörigen Vorzeichenbitkontext zu ermitteln und das dem jeweils vorgegebenen Betragsbit zugehörige Vorzeichenbit unter Verwendung des zugehörigen Vorzeichenbitkontexts kontextabhängig arithmetisch in den Datenstrom zu kodieren.
  25. Vorrichtung gemäß einem der vorhergehenden Ansprüche, wobei der Vorkodierer ferner ausgebildet ist, um beim Durchlaufen andere, zu den vorbestimmten Betragsbits unterschiedliche Betragsbits der Tupel in weitere Datenwörter derart zu kodieren, dass eines der anderen Betragsbits zusammen mit einem zugeordneten Vorzeichenbit in eines der Datenwörter (244; 444; 714) ko diert wird, oder dass eines der anderen Betragsbits zusammen mit einem anderen der anderen Betragsbits des gleichen Tupels in eines der Datenwörter (318; 444; 714) kodiert wird, wobei die Vorrichtung ferner einen weiteren Zwischenspeicher zum Zwischenspeichern der weiteren Datenworte aufweist, und der Entropiekodierer ausgebildet ist, um zunächst die Datenworte in dem Zwischenspeicher und dann die weiteren Datenworte in dem weiteren Zwischenspeicher in den kodierten Datenstrom zu kodieren.
  26. Verfahren zum Kodieren eines Blockes (34; 708) von Transformationskoeffizienten (710), wobei die Transformationskoeffizienten jeweils mittels mehrerer Betragsbits (252) dargestellt sind, so dass dieselben eine Folge von Betragsbitebenen (381 ... 38n ) definieren, mit folgenden Schritten: Durchlaufen der Betragsbits einer vorbestimmten der Betragsbitebenen (381 ... 38n ) in Tupeln (292; 322; 506; 712) von jeweils einer Mehrzahl von benachbarten Betragsbits unter Kodieren vorbestimmter der Betragsbits der Tupel in Datenwörter derart, dass ein vorbestimmtes Betragsbit zusammen mit einem zugeordneten Vorzeichenbit in eines der Datenwörter (244; 444; 714) kodiert wird, oder dass ein vorbestimmtes Betragsbit zusammen mit einem anderen vorbestimmten Betragsbit des gleichen Tupels in eines der Datenwörter (318; 444; 714) kodiert wird; Zwischenspeichern der Datenwörter (244; 318; 444; 714); und Kodieren der zwischengespeicherten Datenwörter (244; 318; 444; 714) in einen kodierten Datenstrom.
  27. Programm mit einem Programmcode zum Durchführen des Verfahrens nach Anspruch 26, wenn das Programm auf einem Prozessor abläuft.
DE200610061647 2006-12-27 2006-12-27 Vorrichtung und Verfahren zum Kodieren eines Transformationskoeffizientenblockes Expired - Fee Related DE102006061647B3 (de)

Priority Applications (6)

Application Number Priority Date Filing Date Title
DE200610061647 DE102006061647B3 (de) 2006-12-27 2006-12-27 Vorrichtung und Verfahren zum Kodieren eines Transformationskoeffizientenblockes
PCT/EP2007/010756 WO2008080516A1 (de) 2006-12-27 2007-12-10 Vorrichtung und verfahren zum kodieren eines transformationskoeffizientenblockes
EP09011939A EP2131596B1 (de) 2006-12-27 2007-12-10 Vorrichtung und Verfahren zum Kodieren eines Transformationskoeffizientenblockes
US12/521,276 US20100111432A1 (en) 2006-12-27 2007-12-10 Device and Method for Coding a Transformation Coefficient Block
JP2009543355A JP4745445B2 (ja) 2006-12-27 2007-12-10 変換係数ブロックを符号化するための装置と方法
EP07856524A EP2109993B1 (de) 2006-12-27 2007-12-10 Vorrichtung und verfahren zum kodieren eines transformationskoeffizientenblockes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200610061647 DE102006061647B3 (de) 2006-12-27 2006-12-27 Vorrichtung und Verfahren zum Kodieren eines Transformationskoeffizientenblockes

Publications (1)

Publication Number Publication Date
DE102006061647B3 true DE102006061647B3 (de) 2008-08-28

Family

ID=39646313

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200610061647 Expired - Fee Related DE102006061647B3 (de) 2006-12-27 2006-12-27 Vorrichtung und Verfahren zum Kodieren eines Transformationskoeffizientenblockes

Country Status (1)

Country Link
DE (1) DE102006061647B3 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113556556A (zh) * 2010-04-13 2021-10-26 Ge视频压缩有限责任公司 显著性图和变换系数块的编码

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020027516A1 (en) * 2000-09-01 2002-03-07 Dominic Yip Entropy encoding and decoding
US20030035476A1 (en) * 2001-07-12 2003-02-20 Sanyo Electric Co., Ltd. Image coding apparatus and image coding method
US20040228539A1 (en) * 2002-08-14 2004-11-18 Sony Corporation Image coding apparatus and method, and program and recording medium
US20050094881A1 (en) * 2003-10-10 2005-05-05 Satoshi Takagi Encoding apparatus and method, and decoding apparatus, method and program

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020027516A1 (en) * 2000-09-01 2002-03-07 Dominic Yip Entropy encoding and decoding
US20030035476A1 (en) * 2001-07-12 2003-02-20 Sanyo Electric Co., Ltd. Image coding apparatus and image coding method
US20040228539A1 (en) * 2002-08-14 2004-11-18 Sony Corporation Image coding apparatus and method, and program and recording medium
US20050094881A1 (en) * 2003-10-10 2005-05-05 Satoshi Takagi Encoding apparatus and method, and decoding apparatus, method and program

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
CHRISTOPOLOUS et al.: The JPEG2000 Still Image Coding System: An Overview; In: IEEE Transactions on Consumer Electronics, Bd. 46, Nr. 4, S. 1103- 1127, November 2000
CHRISTOPOLOUS et al.: The JPEG2000 Still Image Coding System: An Overview; In: IEEE Transactions on Consumer Electronics, Bd. 46, Nr. 4, S. 11031127, November 2000 *
GANGADHAR M., BHATIA D.: FPGA Based EBCOT Archi- tecture for JPEG2000. In: Field-Programmable Tech- nology (FPT), 2003, Proceedings 2003, IEE Interna- tional Conference, S. 228-233
GANGADHAR M., BHATIA D.: FPGA Based EBCOT Architecture for JPEG2000. In: Field-Programmable Technology (FPT), 2003, Proceedings 2003, IEE International Conference, S. 228-233 *
LIAN et al.: Analysis and Architecture Design of Block-Coding Engine for EBCOT in JPEG2000. In: IEEE Transactions on Circuits and Systems for Video Technology, Bd. 13, Nr. 3, März 2003, S. 219-230 *
Standard ISO/IEC15444-1, S. 1-12 sowie Annex D (S. 101-112) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113556556A (zh) * 2010-04-13 2021-10-26 Ge视频压缩有限责任公司 显著性图和变换系数块的编码

Similar Documents

Publication Publication Date Title
EP2109993B1 (de) Vorrichtung und verfahren zum kodieren eines transformationskoeffizientenblockes
DE3750791T2 (de) Sehr schnelle Transformationsvorrichtung.
EP2489187B1 (de) Verfahren zur codierung von symbolen aus einer folge digitalisierter bilder
EP0368139B1 (de) Verfahren zur Codierung von Restfehlerbildern
DE69737514T2 (de) System und verfahren zum bearbeiten wellenartiger und umgekehrten wellenartigen transformationen von digitalen daten
EP0309669B1 (de) Verfahren zur szenenmodellgestützten Bilddatenreduktion für digitale Fernsehsignale
DE4133460C2 (de) Verfahren zum Verdichten von Bildern
DE3789116T2 (de) Prozessor zur zweidimensionalen diskreten cosinustransformation.
DE69111633T2 (de) Vorrichtungen zur variablen Längen-Kodierung und Dekodierung von digitalen Daten.
DE2640140C2 (de) Verfahren und Anordnung zur redundanzvermindernden Bildcodierung
DE3850627T2 (de) Vorrichtung zum Codieren von digitalen Videosignalen und eine entsprechende Decodiervorrichtung.
DE2706080C2 (de) Verfahren zur adaptiven Quantisierung von Transformationskoeffizienten eines Bildes und Anordnung zum Durchführen des Verfahrens
DE4314741A1 (de) Dekodierer-Architektur nach Huffman für eine höhere Betriebsgeschwindigkeit und reduzierten Speicherbedarf
WO2003094529A2 (de) Verfahren von transformations-koeffizienten in bild-oder videokodierern
DE112009004320T5 (de) Speicher-Untersystem
DE102016125131A1 (de) Effiziente Erzeugung stochastischer Spike-Muster in kernbasierten neuromorphen Systemen
DE68926676T2 (de) Verfahren und gerät zur statistischen kodierung von digitalen daten
DE202017007520U1 (de) Bewegungskompensation durch maschinelles Lernen
EP3624456A1 (de) Verfahren zur kompression und dekompression von bilddaten
DE68918590T2 (de) Gerät zur dekodierung von mit variabler länge kodierten daten.
EP0974105B1 (de) Verfahren zur mehrdimensionalen, diskreten wavelet-transformation und transformationseinheit zur durchführung des verfahrens
DE3876771T2 (de) Adaptives verfahren zur transformationskodierung und -dekodierung einer folge von bildern und einrichtungen zur durchfuehrung dieses verfahrens.
DE60012717T2 (de) Bildcodierung unter verwendung einer umordnung von wavelet-koeffizienten
DE102006061647B3 (de) Vorrichtung und Verfahren zum Kodieren eines Transformationskoeffizientenblockes
DE102006061648B4 (de) Transformationskoeffizientenblockkodierung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140701