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.The
The present invention relates to the coding of transform coefficient blocks,
such as As an image, such as in the course of the digital
Image compression method according to the JPEG2000 standard occurs.
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 .The steps of the JPEG2000 encoding process include optionally splitting the image into so-called tiles, ie rectangular image areas, a DC signal level shift, an optional transformation of the color components, performing a discrete wavelet transform, a scalar quantization of the wavelet coefficients, an array the quantized wavelet coefficients in two-dimensional fields, so-called "code blocks", a block coding comprising a so-called "coefficient bit-modeling process" and an arithmetic coding operation, and arranging the coded code block data into a standard-compliant coding stream. For example, the steps are described in Christopoulos et al .: The JPEG2000 Still Image Coding System: An Overview, IEEE Transactions to Consumer Electronics, Vol. 46, No. 4, pp. 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.Of the
The most computationally intensive part among these steps is coefficient bit modeling.
In this step, a code block in so-called magnitude or
Amount bite levels decomposed in the order of the MSBs or
the most significant bits to the least significant LSBs
Bits are arranged or generated, as well as associated sign bits,
which are handled separately. Each amount bit level
is in a sequence of three coding passes
modulated, except for the first bit plane, with only one coding pass
is modulated. These coding passes go through the
Bits of an amount bitmap in a particular order. begun
will be at the bit of the top left position, then three underneath
Bits before jumping one column to the right. That's how it is
a so-called stripe of the width of the code block and the
Height of four coefficients. After a code block so in
processed in the horizontal direction becomes the next one
Stripe four coefficient positions processed deeper, etc.
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.ISO / IEC15444-1
describes in more detail whether and which coding scheme during
a coding pass is used. In particular, this will
Decision taken by coefficient. In other words
In the first coding pass, only certain coefficients are modulated.
Among the remaining coefficients encodes the second coding pass
also a part. The rest is from the third coding pass
modeled. Which coefficient belongs to which coding pass depends
u. a. depending on whether the respective coefficient is significant or
of the significance of its direct neighbors. ISO / IEC15444-1, in
Hereafter referred to as the standard, defines a binary one
Status variable for each coefficient in a block of code,
the so-called "significance status"
initialized to "insignificant", it changes to "significant"
at the amount bit level, at the first set bit of the coefficient
modeling is and remains so until the end of the modeling of this code block
set.
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 modellieren ist, der wiederum von den Signifikanzstatus variablen
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.For
a bit of a coefficient, during a coding pass
modeled in a given bit-plane by a coding scheme,
a data bit is generated together with a context index.
This context index results primarily from the significance status variables
the coefficient and its neighbors. For certain coding runs,
namely the first and the third, it turns out that too
the sign bit of the current coefficient together with a
Context Index is modeled, in turn, by the significance status variables
and the sign of its neighbors depends. A so-called "amount refinement" - or
MR coding scheme or the second coding pass additionally evaluates
whether this scheme already at previous bit levels on the
applied to coefficients to be modeled or to the first
Times. The downstream arithmetic coder expects the bit-context pairs
in the order specified in the manner described above.
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).follows
one of the order in which the bit-context pairs of the arithmetic
Encoders are to be encoded according to the standard,
this results in a sequential sequence with respect to the coding runs,
as described above and in particular
is also complied with by software implementations. Through implementations
in hardware can be a higher encoding speed
to reach. For example, several code blocks
independently coded simultaneously by multiple
Block encoders are instantiated in parallel. This does however
a huge resource consumption, such. B. with regard to
the required transistors on an integrated circuit
or with regard to the gate equivalents in an 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.In Lian et al .: Analysis and Architecture Design of Block Coding Engine for EBCOT in JPEG 2000, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 3, March 2003, pp. 219-230 For example, a hardware design of the block coder is described in JPEG2000, which saves on required checks per Coefficient in each pass, whether the respective coefficient belongs to the respective pass can be achieved by the membership checks are parallelized and, depending on the affiliation of no or one or more bits to the respective pass 4-er columns or groups of 4-er columns be skipped per pass. One step further is an in Gangadhar and Bhatia: FPGA based EBCOT Architecture for JPEG 2000, Field Programmable Technology (FPT), 2003, Proceedings 2003, IEE International Conference, pp. 228-233 , proposed hardware solution for the JPEG2000 block encoder, after which the runs are parallelized so that fewer clock cycles are required to code the blocks of code. In this case, in addition to a memory for storing the magnitude bits and sign bits, a buffer is provided for buffering updated significance status variables between a processing unit which handles the first coding pass and a second processing unit which is responsible for the coding passes 2 and 3.
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.It
but remains desirable to be effective in hardware
implementable solution for the coding of
Find transformation coefficient blocks as they do
just for example in the JPEG2000 encoding occurs.
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.The
The object of the present invention is a method
and an apparatus for coding a block of transform coefficients,
such as B. those of a picture, to create a more effective
Enable implementation in hardware.
Diese
Aufgabe wird durch eine Vorrichtung gemäß Anspruch
1 und ein Verfahren gemäß Anspruch 31 gelöst.These
Task is achieved by a device according to claim
1 and a method according to claim 31 solved.
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 eine Kodiereinrichtung
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 einen kodierten Datenstrom
und eine Vorhersageeinrichtung zum Vorhersagen, ob und, wenn ja,
welcher oder welche der Betragsbits unter den benachbarten Betragsbits der
vorbestimmten Betragsbitebene eines gemäß einer
Reihenfolge des Durchlaufens frühestens als nächstes
an der Reihe seienden Tupels zu den vorbestimmten Betragsbits gehört,
wobei die Kodiereinrichtung ausgebildet ist, um die Kodierung abhängig von
der Vorhersage vorzunehmen.A
Device according to the invention for coding a
Block of transformation coefficients, where the transformation coefficients
are each represented by means of several magnitude bits, so that the same
defining a sequence of amount bit planes includes an encoder
for traversing the magnitude bits of a predetermined one of the magnitude bit-planes
in tuples each of a plurality of adjacent magnitude bits
and encoding predetermined ones of the magnitude bits of the tuples into a coded data stream
and a predictor for predicting whether and, if so,
which or which of the magnitude bits among the adjacent magnitude bits of the
predetermined amount bit level of one according to a
Order of running at the earliest next
belonging to the series tuple to the predetermined magnitude bits,
wherein the coding means is adapted to the coding depending on
to make the prediction.
Ein
Kerngedanke der vorliegenden Erfindung besteht darin, dass eine
effektivere bzw. effizientere Implementierung in beispielsweise
Hardware einer Transformationskoeffizientenblockkodierung erreicht
werden kann, wenn eine Vorhersageeinrichtung vorgesehen wird, die
vorhersagt, ob und, wenn ja, welcher oder welche der Betragsbits
unter den benachbarten Betragsbits der vorbestimmten Betragsbitebene
eines gemäß einer Reihenfolge des Durchlaufens
frühestens als nächstes an der Reihe seienden
Tupels zu dem vorbestimmten Betragsbit gehört.One
The core idea of the present invention is that a
more effective or efficient implementation in for example
Hardware of a transform coefficient block coding reached
can be if a predictor is provided, the
predicts whether and, if so, which or which of the magnitude bits
below the adjacent magnitude bits of the predetermined magnitude bit-plane
one in accordance with a sequence of traversal
at the earliest next in line
Tupels belongs to the predetermined amount bit.
Gemäß einem
Ausführungsbeispiel der vorliegenden Erfindung basiert
die Vorhersage auf Betragsbits der aktuellen Betragsbitebene in
Tupeln, die gemäß der Reihenfolge des Durchlaufens
dem zuletzt an der Reihe gewesenen Tupel folgen. Beispielsweise
können diese Betragsbits dazu verwendet werden, Signifikanzinformationen
zu modifizieren bzw. zu aktualisieren, die für die Betragsbits
der auf das zuletzt an der Reihe gewesenen Tupel folgenden Tupel
die Signifikanz der durch dieselben dargestellten Transformationskoeffizienten
bezüglich der aktuellen Betragsbitebene anzeigen. Hierdurch
ist es möglich, eine virtuell geforderte sequentielle Durchführung
von Durchläufen der Betragsbits der aktuellen Betragsbitebene
in Tupeln für unterschiedliche der Betragsbits der aktuellen
Betragsbitebene in einem Durchlauf abzuarbeiten und dabei aber zu
berücksichtigen, dass gemäß der virtuellen
Reihenfolge später an der Reihe seiende Durchläufe
andere Signifikanzen sähen, wäre die virtuelle
Reihenfolge eingehalten worden. Eine Vorhersage, die von diesen Signifikanzinformationen
abhängt, wird somit auch ermöglicht, wenn die
Abarbeitung der virtuellen Folge von Durchläufen auf einmal
abgearbeitet wird.According to one
Embodiment of the present invention based
the prediction on amount bits of the current amount bit level in
Tuples, which according to the order of going through
follow the tuple last in line. For example
These magnitude bits can be used to provide significance information
to modify or update for the magnitude bits
the tuple following the last tuple on the line
the significance of the transformation coefficients represented by them
show the current amount bit level. hereby
is it possible to perform a virtually required sequential execution
of runs of the amount bits of the current amount bit level
in tuples for different of the magnitude bits of the current one
To process the amount bite level in one run, but to
take into account that according to the virtual
Order later in the series of runs
To see other significances would be virtual
Order has been adhered to. A prediction by this significance information
is thus also possible if the
Processing the virtual sequence of runs at once
is processed.
Das
gilt aber nicht nur für den Fall des parallelen Abarbeitens
virtuell sequentiell durchzuführender Durchläufe.
Ist auch unter den Betragsbits der Tupel eine virtuelle Durchlaufreihenfolge
festgelegt, in der der Durchlauf virtuell stattfinden sollen, und/oder
hängt die Zugehörigkeit eines speziellen Betragsbits
auch von der Signifikanz seiner Nachbarn ab, so ermöglicht
es die Verwendung der Betragsbits der aktuellen Betragsbitebene
in Tupeln, die gemäß der Reihenfolge des Durchlaufens
dem zuletzt an der Reihe gewesenen Tupel folgen, zu berücksichtigen,
dass für gemäß der virtuellen Intertupelreihenfolge
und/oder Innertupelreihenfolge später an der Reihe seiende
Betragsbits eine andere Zugehörigkeit gelten würde,
wäre die jeweilige virtuelle Inter- und/oder Innertupelreihenfolge
eingehalten worden.The
But not only applies to the case of parallel processing
virtually sequential runs to be performed.
Also, among the magnitude bits of the tuples is a virtual sweep order
determined in which the run should take place virtually, and / or
depends on the membership of a special amount bits
also from the significance of its neighbors, so allows
it is the use of the amount bits of the current amount bit level
in tuples, which according to the order of going through
to follow the tuples last in line,
that according to the virtual intertuple order
and / or inner tuple order later in the series
Amount bits another membership would apply
would be the respective virtual inter and / or inner tuple order
been complied with.
Allgemein
ermöglicht die Vorhersage, dass die Kodiereinrichtung unmittelbar
mit der Verarbeitung der vorbestimmten Betragsbits bzw. dem vorbestimmten
Betragsbit in dem aktuellen Tupel beginnen kann bzw. die Kodiereinrichtung
nur Verarbeitungszyklen für die Verarbeitung von Betragsbits
in den Tupeln benötigt, die auch zu den vorbestimmten Betragsbits
gehören. So kann die Kodiereinrichtung ausgebildet sein,
die Kodierung der vorbestimmten Betragsbits in den jeweiligen Tupeln
sequentiell vorzunehmen, und benötigt hierfür
lediglich die geringstmögliche Anzahl an Verarbeitungszyklen.
Es ist allerdings ebenfalls möglich, dass die Kodiereinrichtung zur
parallelen Verarbeitung aller Betragsbits in einem Tupel geeignet
ist, durch die Vorhersage allerdings in der Lage ist, in ein und
demselben Verarbeitungszyklus nicht nur die Betragsbitwerte an sich
zu berücksichtigen, sondern auch ob das jeweilige Betragsbit zu
dem vorbestimmten Betragsbit gehört oder nicht, um in dem
letztgenannten Fall noch in demselben Verarbeitungszyklus das entsprechende
Betragsbit in ein Paar aus Datenwert und zugeordnetem Kodierkontext
umzuwandeln, das einen Zustand aufweist, der für nicht
zu den vorbestimmten Betragsbits gehörende Betragsbits
nicht vorkommt, wie z. B. durch Einstellen eines nicht zulässigen
Kodierkontextes.In general, the prediction makes it possible for the coding device to start immediately with the processing of the predetermined magnitude bits or the predetermined magnitude bit in the current tuple, or the coding device only processing cycles are required for the processing of magnitude bits in the tuples which also belong to the predetermined magnitude bits. Thus, the encoder may be configured to sequentially perform the encoding of the predetermined magnitude bits in the respective tuples, thereby requiring only the least possible number of processing cycles. However, it is also possible that the coding device is suitable for processing all amount bits in a tuple in parallel, but by means of the prediction is able to take into account not only the amount bit values per se in one and the same processing cycle, but also whether the respective magnitude bit belongs to the predetermined magnitude bit in the latter case in the same processing cycle to convert the corresponding magnitude bit into a pair of data value and associated coding context having a state which does not occur for magnitude bits not belonging to the predetermined magnitude bits. By setting an illegal coding context.
Folglich
wird durch die Vorhersageeinrichtung eine schnellere Implementierung
einer Kodierung ermöglicht, die weniger Verarbeitungszyklen
benötigt.consequently
The predictor makes the implementation faster
coding allows fewer processing cycles
needed.
Weitere
Ausführungsbeispiele der vorliegenden Erfindung werden
nachfolgend Bezug nehmend auf die Figuren näher erläutert.
Es zeigen:Further
Embodiments of the present invention will be
subsequently explained in more detail with reference to the figures.
Show it:
1 ein
Blockschaltbild eines Bildkomprimierers, bei dem die erfindungsgemäße Transformationskoeffizientenblockkodierung
angewendet werden kann; 1 a block diagram of an image compressor, in which the transformation coefficient block coding according to the invention can be applied;
2 eine
schematische Darstellung einer Aufteilung der Transformationskoeffizienten
in Betragsbits und Vorzeichenbits; 2 a schematic representation of a division of the transformation coefficients in magnitude bits and sign bits;
3 ein
Blockschaltbild eines Blockkodierers gemäß einem
Ausführungsbeispiel der vorliegenden Erfindung; 3 a block diagram of a block encoder according to an embodiment of the present invention;
4 ein
Blockschaltbild der Bitmodelliereinheit des Kodierdurchlaufes 1
(Pass 1) aus 3 gemäß einem
Ausführungsbeispiel der vorliegenden Erfindung; 4 a block diagram of the bit modeling unit of the coding pass 1 (Pass 1) 3 according to an embodiment of the present invention;
5 ein
Blockschaltbild der Bitmodelliereinheit für den Kodierdurchlauf
2 (Pass 2) aus 3 gemäß einem
Ausführungsbeispiel der vorliegenden Erfindung; 5 a block diagram of the bit modeling unit for the coding pass 2 (Pass 2) 3 according to an embodiment of the present invention;
6 ein
Blockschaltbild der Bitmodelliereinheit für den Kodierdurchlauf
3 (Pass 3) aus 3 gemäß einem
Ausführungsbeispiel der vorliegenden Erfindung; 6 a block diagram of the bit modeling unit for the coding pass 3 (Pass 3) 3 according to an embodiment of the present invention;
7 ein
Blockschaltbild des Durchlauf- bzw. Pass-Entscheiders von 3 gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung; 7 a block diagram of the pass or decoder of 3 according to an embodiment of the present invention;
8 eine
schematische Darstellung zur Veranschaulichung der Größe
der Schieberegistereinheit von 3 und des
in derselben zu einem jeweiligen Zeitpunkt gespeicherten Inhalts;
und 8th a schematic representation for illustrating the size of the shift register unit of 3 and the content stored therein at a particular time; and
9 ein
Blockschaltbild eines Blockkodierers gemäß einem
weiteren Ausführungsbeispiel der vorliegenden Erfindung. 9 a block diagram of a block encoder according to another embodiment of the present invention.
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. 1 shows an image compressor 10 as an example of an application in which the embodiments described below can be used advantageously. The image compressor 10 from 1 is designed to be a source image 12 consisting of, for example, arranged in columns and rows samples or pixel values in a coded data stream or code stream 14 to compress. This includes the compressor 10 from 1 For example, a series connection of optionally a tile divider 16 , a DC level shifter 18 , optionally a color transformer 20 , a transformer 22 for spatial spectral decomposition, an optional quantizer 24 , a block coder or block coder 26 and a data folder 28 , The tile divider splits the picture 12 in, for example, rectangular image areas, so-called tiles or tiles. The further processing is carried out per tile or tile, so that the further compression in the individual tiles takes place independently of each other. The DC level shifter 18 Within each tile, a uniform DC signal shift takes place over all the pixels of the corresponding tile, so that, for example, the mean value of the pixel values, such as, for example, is subsequently determined. B. the luminance values, zero. The color transformer 20 optionally performs a color transformation on the pixel values, the color transformation being optional and of course only in the case of color images 12 takes place. Thereupon the transformer leads 22 a spatial spectral decomposition per tile through. In the case of a JPEG2000 code stream to be generated 14 For example, the transformation is, for example, a wavelet transform, more specifically, a discrete wavelet transform that is applied to each tile one at a time. In this way, each tile is decomposed into different resolution levels consisting of subbands of transform coefficients describing frequency characteristics of local areas of each tile. The transform coefficients can already be integers. The quantizer 24 optionally translates the transform coefficients to scalar quantization and merges them into code blocks, ie, for example, rectangular arrays of transform coefficients. The block encoder 26 entropy encodes the trans formation coefficients in the code blocks in data streams, whereupon the data folder 28 the arithmetic coded codeblock data streams still suitably order the code stream 14 to form, such. B. a JPEG2000-compliant code stream.
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 ausgebildet
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 ermit telt 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.The block encoder 26 In particular, as in 1 is shown a coefficient bit modeler 30 with a downstream arithmetic coder 31 on. The coefficient bit modeler 30 assigns to the magnitude bits of the coefficients contexts assigned by the arithmetic coder 32 be used for arithmetic coding. In particular, the arithmetic coder 32 a contextual binary arithmetic coder adapted to divide a current interval representing the current state of the arithmetic coder into two halves depending on estimated probabilities for occurrence of each bit value for the next bit to be encoded, and among these halves one to limit the current interval to this interval depending on how the actual bit value of the current bit to be coded is, the estimated probabilities being different for each context, and the context by the coefficient bit modeler 30 depending on adjacent significances and / or magnitude bit values and a plurality of possible contexts. The encoder may also adaptively adapt the pre-initialized estimates during encoding to the actual probabilities per context.
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.The following explanation of exemplary embodiments of the present invention initially concentrates on a JPEG2000-compliant compression, for which reason the object of the block coder in the following is this background 26 will be illustrated in more detail. In particular, from the block encoder 26 the individual magnitude bits of the transform coefficients in a block in a predetermined order into the arithmetic-coded data stream of the arithmetic coder 32 in particular first bitwise from the most significant bitplane to the least significant bitplane and within those bitplanes by scanning the coefficient magnitude bits in three passes in a fixed scan order, encoding in each pass only magnitude bits that meet certain criteria such that three passes from the arithmetic coded data stream all magnitude bits are reconstructed. To illustrate the split in bit planes and the scan order within those planes, shows 2 exemplarily a code block of size 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 ,
zusammen fassen. Jede Bitebene 381 ...38n sowie die Vorzeichenbits 40 bilden
also jeweils ein 3 × 8 Bitarray.In particular shows 2 at 34 exemplarily a 3 × 8 code block with 3 × 8 transformation coefficients a to x. As by the arrow 36 is indicated, each coefficient a to x by n amount bits a 1 ... n, ..., x 1 ... x n and a respective sign bit a vz , ..., x vz represented, wherein the splitting 36 in magnitude bits and sign bits, for example inherently from the type of discrete wavelet transform 22 or from quantization 24 ( 1 ). The MSBs or significant magnitude bits are, for example, the bits a 1 ... X 1 and form a first magnitude bit level 38 1 , Likewise, the other magnitude bits can be assigned to corresponding bit planes 38 2 ... 38 n , sum up. Every bit level 38 1 ... 38 n as well as the sign bits 40 So each form a 3 × 8 bit array.
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, vi, wi, xi,
mit i = 1...n,
wobei dieses Scanmuster hier exemplarisch sechs Viererspalten
bzw. Tupel und zwei Streifen umfasst.The aforementioned scan order now provides that the bits of a bit plane 38 1 ... 38 n in four columns or tuples of four column bits adjacent magnitude bits from one line end to the other, ie, stripwise, whereupon the next strip is scanned in the next lines, and within each four column vector or each tuple the magnitude bits from the top be scanned down. For the bit levels 38 1 ... 38 n Thus, the scan pattern can be displayed as
a i, b i, c i, d i, i i, j i, k i, l i, q i, r i, s i, t i, e i, f i, g i, h i, m i , n i , o i , p i , u i , v i , w i , x i , where i = 1 ... n,
this scan pattern here exemplarily comprises six quadruplets or tuples and two stripes.
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 Zwischenspeicherung 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.A triple scan of the magnitude bits of the individual bit planes will now be according to the embodiment described below for a block coder 26 This is avoided by the fact that the amount bits associated with the respective passes are detected by means of a scan and encoded into data words, from which the bit values and the associated contexts result, whereupon, after being buffered in a buffer, they are encoded in an arithmetically coded data stream in a suitable sequence. In this case, a constant lookup in a memory is avoided by the magnitude bits and sign bits are cached.
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
beispiels weise 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 befind liche Nachbarbits
werden entsprechend mit Nullen aufgefüllt, wie es in 3 exemplarisch
für die oberen Nachbarbits dargestellt ist. 3 shows a block encoder 100 according to an embodiment of the present invention. It comprises a storage unit 102 , a bitextractor 104 , a shift register unit 106 , a coefficient bit modeler stage 108 , a cache 110 and an arithmetic coding device 112 , The storage unit 102 example is a random access memory such. As a RAM, and acts as an interface for obtaining the quantized signed transformation coefficients of the code blocks to be coded, such. B. the code block 34 from 2 , The Bitextraktor 104 is with the store 102 coupled to the memory contents of the memory unit 102 Views 114 to be able to perform from the storage unit 102 To read magnitude bits and sign bits. When and on what magnitude bits and / or sign bits of the bitextractor 104 will be described in more detail below. Anyway, the Bitextraktor 104 responsible for this, the shift register unit 106 based on the information read from the storage unit 102 to fill with bits from the coefficient bit modeling stage 108 needed to make the necessary contexts or the necessary precoding. More specifically, the Bitextraktor scans 104 In a manner which will be described in more detail below, the amount bit-plane for the amount-bit-plane is the amount bits of the current amount bit-plane along the prescribed strips and fills the shift register unit 106 during the scanning process with information continuously, so that the shift register unit 106 due to its shift register length, comprises information bits relating to a current portion of the current magnitude bit plane along the stripes comprising the coefficient bit modeling stage 108 currently needed for their context creation or precoding. In anticipation of the later more detailed description forms the Bitextraktor 104 for example, from the coefficient magnitude bits and the sign bits by mere assumption the magnitude bits to be newly recorded 108 the current bit-plane, by mere assumption the new sign bits to be recorded 118 and by appropriate combining associated status bits 120 and feeds it to the shift register unit 106 too, which is sized to fit the individual bits 108 . 110 . 112 at a depth of a respective suitable number of shift stages, as will be described in more detail below. Neighbor bits located at the edge of the code block are respectively padded with zeros, as shown in FIG 3 is shown as an example for the upper neighbor bits.
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.Simplifying is in 3 shown, the shift register 106 see four registers each (shaded) together with each 14 neighbor registers, each for the coefficient bits 108 , Sign bits 118 and status bits 120 , The shift register unit 106 can thus be used as multiple shift registers 106 1,2,3,4 each one for the magnitude bits, sign bits and two different status bits which will be described in more detail below, these individual shift registers 106 1 ... 4 synchronized with each other, so that each shift pulse at the same time by one horizontal position or by a shift register rank, ie by a 6-he vector in 3 to be pushed further.
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. Da tenworte, 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.Internally, the coefficient bit modeling stage decomposes 108 into several bit-modeling units 108 1 . 108 2 and 3 of which the first is responsible for pass 1 or pass 1, the second pass 2 or pass 2 and the third pass 3 or pass 3, and which will be described in more detail below. The individual units 108 1 - 3 are each shift registers with respective bit registers 106 1 - 106 4 coupled to analyze the corresponding register contents and for each bit to be modeled from a current tuple of magnitude bits stored in 3 the hatched registers correspond to determine whether or not to model according to the respective pass or pass, and if so, with what result. The bit modeling units 108 1 - 3 are in particular designed to generate, per tuple or per amount bit belonging to the respective pass, a correspondingly precoded data word including control bits explained in more detail below and in respective latches 110 1 . 110 2 and 110 3 the cache stage 110 store. Data words belonging to tuples in which there is no magnitude bit associated with the respective run can be discarded, as will be described below, as well as data words for magnitude bits not associated with the respective run.
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 gefolgt 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.The bit modeling units 108 1 - 3 In particular, they can be designed to set control bits in the data words that are generated by the subsequent arithmetic coding device 112 can be used to put in the cache 110 1 - 110 3 stored data words or the magnitude bits encoded in the same in the appropriate order and using the correct context or subjecting the arithmetic coding in another mode, such. As a plain text mode to insert into the data stream, as will be discussed in more detail below. For this purpose, the arithmetic coding device 112 in particular a continuous decision maker 122 on which an arithmetic coder 124 is downstream. The pass decision maker 122 acts as encoder of the precoded data words in the latches 110 1 - 110 3 and is coupled with the latter. The pass decision maker reconstructs from these data words 122 contextualized bits with context associated with each of runs 1, 2 and 3 and pass 1, pass 2 and pass 3, respectively, and passes these pairs to the arithmetic coder in the appropriate order, ie pass 1 followed by pass 2 followed by pass 3 124 in addition to the bit values and the associated context indices, the forwarded information also contains information about the arithmetic coder 124 may include coding modes to be used or the like, wherein the control signals from the decision maker 122 to the arithmetic coder 124 in 3 generally with 126 are displayed. In other words, the passport decoder encodes 122 the read data words in the buffers 110 back to bit-context pairs 126 and leads this the downstream arithmetic coder 124 in a prescribed manner and appropriate representation.
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 Speichereinheit 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.The above has been roughly the structure of the block coder 100 from 3 described and the tasks and functionalities of the individual units roughly sketched. Before proceeding with the detailed description of the bit modeling units 108 1 - 3 and the passport-decision maker 122 and based thereon a detailed description of the operation of the block encoder 100 In the following, the general aim of the interaction of the units of 3 to give an overview which may be helpful in understanding the following detailed description. As already mentioned, the bitextractor ensures 104 for filling the shift register unit 106 , The Bitextraktor 104 scans the current amount bitmap in strips. As a first approximation one can therefore use the shift register unit 106 as a window moving across the current amount bit plane along the scan order, with synchronous movement of a corresponding window in the sign bit plane 40 ( 2 ) and caching associated status bits for these window contents. The bit modeling units 108 1 - 3 require no further information than those in the shift register unit for their work 106 That's why lengthy memory accesses 114 on the storage unit 102 are not necessary. In addition, only one pass through the current amount bit plane is necessary, although the standard, as discussed above, defines three passes for determining the order in which the magnitude bits are to be encoded into the data stream. To achieve the latter, each of the bit-modeling units takes care of it 108 1 - 3 only those amount bits in the quadruples that belong to the respective own pass. Generally speaking, passport 1 takes care of magnitude bits of transform coefficients that are not yet significant, ie whose magnitude bits in the more significant magnitude bit-planes are zero or non-significant, but adjacent to transform coefficients that are significant. To eliminate confusion, it is noted that a transform coefficient in a particular magnitude bit-plane is said to be significant if at least one of the magnitude bits in the more significant magnitude bit-planes is 1 and becomes "significant" in a particular magnitude bit-plane if none of the magnitude bits is in the more significant one However, during the coding of the current bit-plane, it is still significant at this level by an amount bit of 1. An amount-bit is said to be significant if it is 1. The pass-2 deals with transformation coefficients already significant in the current amount-bit-level Finally, pass 3 addresses the remaining magnitude bits, ie the magnitude bits of transform coefficients that are non-significant and did not fall into pass 1.
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.The significances of the transform coefficients in the magnitude bit-plane currently to be coded play in the modeling of the bit-modeling units 108 1 - 3 is carried out, a major role, since the contexts are determined from this and this information is already present at the decoder during decoding and thus he can emulate the context modeling. It should already be pointed out that the decision as to whether a certain amount bit belongs to the pass 3 sometimes depends on whether one of the neighboring amount bits, although in logical sequence before pass 1, belongs to a non-significant transformation coefficient but belongs to the pass 1 and thus If necessary, virtually or according to the order defined in the standard, according to which the runs are carried out in succession, becomes significant before the end of the pass 1, in which case the corresponding amount bit may not belong to the pass 3 but to the passport 1. The problem of course, the significance of neighboring magnitude bits is, of course, only those neighborhood amount bits that are ahead of the currently considered magnitude bit according to the magnitude bit scanning order.
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.The bit modeling units 108 1 - 3 fill their respective cache 110 1 - 110 3 with consecutive data words, in turn, from the passport decision maker 122 be read out, namely amount bitwise way, so with the cache 110 1 beginning until the last data word of the current amount bit plane has been read, then proceeding with the buffer 110 2 until the last data word has been read from the current amount bit level, again followed by the buffer 110 3 until the last data word has been read there, exceptionally in the first or most significant amount bit level equal to the buffer 110 3 is started because there is no transformation coefficient is significant, and thus no amount bit of this level can belong to another passport than pass 3. The data words are in the pass decision maker 122 also decoded and into corresponding control signals for the arithmetic coder 124 converted, which forms a coded data stream for the code block.
Im
Folgenden wird nun vorab der interne Aufbau der Bitmodelliereinheiten
sowie des Pass-Entscheiders von 3 näher
beschrieben. 4 zeigt den Aufbau der Bitmodelliereinheit 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.In the following, the internal structure of the bit-modeling units and the pass-decision maker of 3 described in more detail. 4 shows the structure of the bit modeling unit 108 1 , She is responsible for Pass 1, ie for the first code pass, also referred to as a "significance propagation pass", because it relates to magnitude bits of transform coefficients that are in the vicinity of already significant transform coefficients and, thus, are likely to become more significant than those transform coefficients that are farther away from already significant. As mentioned above, the decision as to whether to model a corresponding magnitude bit in the pass 1 pass is based on whether the corresponding coefficient for the current bit-plane is still insignificant and at least one of its direct neighbor coefficients is significant or significant in the course of the first pass becomes.
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.The bit modeling unit 108 1 has an analysis prediction unit 200 a magnitude bit pre-encoding unit 202 , the latter input side upstream multiplexer 204 . 206 , a sign bit precoding unit 208 , the latter input side upstream multiplexer 210 . 212 , an update demultiplexer 214 , a valid bit multiplexer 216 , a four-bit register 218 , a clock counter 220 , a coefficient selector 222 and a control bit control 224 on, in 4 for easier understanding even the cache 110 1 and the shift register unit 106 are shown.
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.The analysis predictor 200 is intended to advance, ie in anticipation of pushing the next tuple to be processed into the part of the shift register 106 at which the bit modeling unit 108 1 the tuple to be processed expects which spot in 4 are shown with hatching to determine which of these magnitude bits belong to pass 1. The analysis / prediction unit 200 For example, this decision is made whenever the shift register unit 106 through the Bitextraktor 104 ( 3 ) is refilled, ie at each shift pulse. In 4 meets the analysis prediction unit 200 For example, the decision on membership or non-membership of the magnitude bits of the 4-er vector q m , r m , s m , t m , the next shift in the register unit 106 to the current tuple or to the hatched register area, where currently the magnitude bits i m , j m , k m and l m are located. To make the prediction, the analysis / prediction unit is 200 with register cells of the register unit 106 coupled, with the part 106 2 that affects the magnitude bits, as with an arrow 226 is implied, and the part 106 3 that affects the first status bits, as with an arrow 228 is indicated, wherein the first status bits indicate the significance of corresponding coefficients with respect to the current bit plane, as will be discussed in more detail below.
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.To an output of the analysis / prediction unit 200 closes the register 218 to from the analysis / prediction unit 200 to obtain the result of the prediction in the form of a 4-bit vector having per magnitude bit of the next current tuple by a corresponding bit i ae , j ae , k ae and l ae indicating whether the respective magnitude bit q m , r m , s m and t m in the following shift cycle through the bit modeling unit 108 1 to process or not.
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.Both an input of the multiplexer 216 as well as an input of the coefficient selector 222 are with the register 218 coupled. The coefficient selector 222 is designed to be based on the register contents of the register 218 to select the amount bits of the pass 1 to be modeled or prescoded and this selection in the form of a multiplexer control signal to the multiplexer 210 . 212 . 204 . 206 and 216 or the demultiplexer 214 tell. The analysis / prediction unit 200 Further, there is a prediction about the number of magnitude bits associated with pass 1 in the next in-line tuple, to the clock counter 220 in this way at the beginning of each shift cycle or after a shift operation in the shift register 106 is pre-initialized to a value corresponding to the number of magnitude bits associated with pass 1 in the current magnitude bit tuple. The clock counter 220 For example, then it decrements its counter content based on a processing clock the same from the coefficient selector 222 receives, in the processing clock, the multiplexer signal sequentially to the amount associated with the pass 1 magnitude bits, as in the register 218 are displayed.
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 Multiplexer 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.The multiplexer 216 is configured to be dependent on the multiplexer signal from the coefficient selector 222 the bit indicated by the multiplexer signal from the register 218 as a valid bit or valid bit to its cache 110 1 issue. The multiplexer 204 is the input side with special register cells or register locations of the shift register unit from the part 106 2 for the magnitude bits, and is configured to be dependent on the multiplexer control signal from the coefficient selector 222 a bit bit register cell storing the bit indicated by the multiplexer signal, having an input of the magnitude bit precoding unit 202 and optionally an input of the sign bit precoding unit 208 to couple by a corresponding one of the inputs of the multiplexer 204 to a corresponding output of the multiplexer 204 to be led. The same applies to the multiplexer 210 . 212 and 206 , The multiplexer 210 For example, the input side with special sign bit cells from the part 106 1 the shift register unit 106 coupled and configured to, depending on the multiplexer signal, a corresponding subset of these register contents or sign bits via the output of the multiplexer 210 to another one transition of the sign bit precoding unit 208 issue. Similarly, the multiplexer 212 between special register cells from the part 106 3 for the first status bits of the shift register unit 106 and another input of the sign bit precoding unit 208 and the multiplexer 206 between special register cells in the part 106 3 the shift register unit 106 and another input of the magnitude bit pre-encoding unit 202 connected to output a part of the first status bits of these special register cells to the respective unit depending on the multiplexer signal.
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.The incoming signals are from the precoding units 208 and 202 used to each a pair of data bits 230 respectively. 232 and context index consisting of 2 bits 234 respectively. 236 where the data bit indicates the bit value of the sign bit or the magnitude bit of the transform coefficient currently being processed by the multiplexer signal, while the context index points to the associated context to be used respectively.
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.As it is in 4 through an arrow 238 is displayed, it may be provided that the sign bit precoding 208 additionally with your coding or context formation a bypass mode bit 240 used by the control bit control 224 next to a pass-end bit 242 is issued. The meaning of these control bits 240 and 242 will be discussed in more detail below. The bits 230 . 242 together form a 12-bit word 244 that in the cache 210 1 is entered. The cache 110 1 can be designed to only data words 244 to cache in which the simultaneously arriving validity bit 246 that from the multiplexer 216 indicating that the current multiplexer signal pointed to an amount bit associated with pass 1.
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.As it is in 4 It will also be seen that this is done by the magnitude bit pre-encoding unit 202 output data bit 232 to an input of the demultiplexer 214 fed back. The latter is the output side with register cells from the area 106 3 coupled, namely the one containing the first status bits for the current magnitude bits (shown hatched), depending on the multiplexer signal, the data bit 232 to use for updating the first status bit associated with the magnitude bit currently being generated by the magnitude bit precoding unit 202 has been modeled. In this way, namely, the significance of the corresponding coefficient is updated.
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 Schieberegisterein heit 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 254–264 in 8 zu
gleichen Transformationskoeffizienten gehören sollen.The preceding description was only roughly related to the construction and single-function manner of the components of the bit-modeling unit 108 1 one. In the following, therefore, the interaction of the individual components of the Bitmodelliereinheit 108 1 in interaction with the shift register unit 106 the cache 110 1 as well as the Bitextraktor 104 with simultaneous reference to 8th and 3 be explained in more detail. 8th symbolizes a section of the storage unit 102 ( 3 ) namely a section of the magnitude bits and sign bits of the transformation coefficients of a code block currently to be coded. In particular, the individual sign bits and magnitude bits are cubes 250 respectively. 252 symbolizes. In particular, the sign bits 250 shown juxtaposed in rows and columns, corresponding to the corresponding transform coefficients in the code block to be coded. Only a section of the sign bits 250 is shown, a section of sign bits 250 in a current strip 254 plus the adjacent lines 256 respectively. 258 the strip above and below it. Also the amount bits 252 the current bit plane are shown as juxtaposed in rows and columns, wherein also only a part or section of the current bit plane is shown, which corresponds to the part of the sign bit plane, ie a part of a corresponding strip 260 with the amount bits 252 the line above and below 262 and 264 , For the sake of completeness, it is pointed out that magnitude and sign bits aligned in the vertical direction are arranged in lines corresponding to one another among the lines 254 - 264 in 8th should belong to the same transformation coefficients.
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.The magnitude bits of less significant bit-planes than the current bit-plane are in 8th not shown. Significant and thus already encoded magnitude bits of the more significant bit planes are, however, in 8th recognizable and are behind the current bit level in turn.
Wie
nun bereits im Vorhergehenden beschrieben wurde, füllt
der Bitextraktor 104 bei jedem Schiebevorgang der Schiebe
registereinheit 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 260–264.As already described above, the bitextractor fills 104 at each sliding operation of the sliding register unit 106 by means of memory accesses 114 ( 2 ) the latter again with sign bits 250 or amount bits 252 from the storage unit 102 . 3 , so in the shift register 106 always a section of the sign bit plane or the current amount bit plane is always located. These cutouts are in 8th at 266 and 268 highlighted. As can be seen, is located at a given time in the part 106 1 the shift register unit is a section of the sign bit array of five consecutive columns and six superimposed lines, namely the four lines of the current strip 254 and the neighboring lines 256 and 258 , In a similar way is located in the part 106 2 the shift register 106 at any time a section of the current Amount bitmap of four columns of six lines each 260 - 264 ,
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
angesehen 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 Abschnit tes 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.As it is in 8th it can be seen, are the cutouts 266 and 268 the one in the lines 106 1 and 106 2 the shift register unit 106 stored sign bits 250 or amount bits 252 aligned such that to a transformation coefficient, for the momentary magnitude bits 252 in the part 106 2 is cached, including the corresponding sign bit 250 the respective transformation coefficient in the part 106 1 is cached. In particular, a register cell is provided in the shift register unit for each bit to be stored, which in 8th also as through the cubes in the corresponding sections 266 and 268 can be regarded as symbolized. The register cells of the parts 106 1 and 106 2 are interconnected in such a way that the register contents in 8th be shifted from right to left, so that with each shift a column of sign bits 250 or amount bits 252 the shift register unit 106 on the one hand, in 8th namely left, leaves, and at the other end of the shift register the corresponding parts 106 1 and 106 2 with a next column 270 respectively. 272 of sign bits 250 or amount bits 252 be filled. In 8th this corresponds to a shift of the cached portion 266 respectively. 268 in the sign bit plane or amount bit plane per shift virtually by one column to the right. The Bitextraktor 104 is now designed such that it is the filling of the part 106 1 and 106 2 with sign bits 250 or amount bits 252 which relates to a column of transform coefficients associated with each other, so that the offset between the contents of the sign bit part 106 1 and the current contents of the amount bit content 106 2 the shift register unit 106 at the rear shift register end, where sign bits in the part 106 1 are cached that leave this part at the next shift, and no more magnitude bits in the part 106 2 are cached.
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 Transformationskoeffizienten in den Zeilen 260–264 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.As already mentioned above, the bit modeling units require 108 1 and 108 2 for their processing also status bits, namely first and second status bits. The first status bits each indicate, for a transform coefficient, whether or not it is significant with respect to the current magnitude bit-plane. Again, it should be noted that the state of significance of the current magnitude bit-plane for a transform coefficient may change after-or during-virtual-first pass. The part 106 3 the shift register unit 106 is now dimensioned to be for six consecutive columns of transform coefficients in the rows 260 - 264 corresponding lines each have a status bit 274 stores in 8th are also shown as cubes. In particular, the shift register unit stores 106 in the part 106 3 first status bits at any time 274 for transform coefficients of six adjacent six-row columns, five of which contain the first status bits of transform coefficients, including the sign bits 250 in the clipping 266 of the part 106 1 are included. In addition, first status bits for transform coefficients are contained in a 6-column of transform coefficients, with their sign bits 250 or amount bits of the current bit plane the parts 106 1 and 106 2 the shift register unit 106 be filled only at the next shift.
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.In the presentation of 8th can also do the dice 274 at the same time be regarded as the corresponding register cells interconnected to shift their contents column by column, in 8th also from right to left in the same bar as the other parts 106 1 and 106 2 , The filling also takes over the Bitextraktor 104 by bit combination, such. A logical OR between bits arranged in a significant direction on the basis of the magnitude bits emphasized by hatching 276 in the more significant amount bit-planes than the current magnitude-bit-plane for transform coefficients that appear at the positions of the column 272 with their magnitude bits of the current bit plane, the register cells at the front end of the part 106 2 the shift register unit 106 be filled only at the next shift pulse. The filling process, which is among the most recent entries in the first status bit part 106 3 has been in is 8th with the arrow 278 indicated.
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 Schiebe registereinheit 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.Finally, also in the shift register 106 a part 106 4 provided in the second status bits are stored, whose meaning and relevance will become apparent from the following description. Anyhow, the part saves 106 4 the second status bits for transform coefficients of only one column in only four lines corresponding to the lines of the strip 260 respectively. 254 correspond, wherein the second status bits are also symbolized as cubes, denoted by the reference numeral 280 are displayed. Every time you shift in the shift register unit 106 become the second status bits 280 updated such that they are always defined for the transform coefficients, their magnitude bits in the output-side column in the stripe 260 are cached to the next shift from the part 106 2 the sliding register unit 106 to be displaced. The bit extractor 104 updates the second status bits 280 with each shift of the shift registers 106 hatched bits of magnitude highlighted 282 in more significant amounts than the current amount level for the just mentioned transform coefficients in the strip 260 by the bitextractor 104 for each transform coefficient, check the corresponding magnitude bits for at least two of these magnitude bits to be one or significant.
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 –1034 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.Returning to 4 is now the analysis / prediction unit 200 so with the parts 106 2 and 106 3 the shift register unit 106 coupled to predict the magnitude membership of the next magnitude bit tuple to be modeled, the contents of the register cells of the part 106 2 and the first status bits in those register cells of the part 106 3 the shift register unit 106 receives, indicated by dashed lines and by the reference numeral 282 respectively. 284 are provided. To illustrate this a little closer, in the following specifically addressed register cells or bits in the parts 106 1 - 103 4 each with an index pair #, # coded in the column number and line number starting from the top left corner indicates the register cell or bit position. That's how the area spans 282 for example, the range of the range of magnitude bits 252 3.2 to 252 4.5 on and the area 284 the range of bits 274 4.1 to 274 6.6 , The analysis / prediction unit 200 now uses the information supplied to it to determine the affiliation of the magnitude bits at the positions 252 4.2 to 252 4.5 to predict to the first pass which magnitude bits form the next-ranked tuple that, at least in the case that among the magnitude bits is one associated with pass 1, from the precode units 202 . 208 is processed.
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.The amount bits in the range 282 uses the analysis / prediction unit 200 to take into account that not all status bits in the second area 284 are updated as they will be in the case of decoding in the decoder at the same location in the decoding of the passport 1. In addition, the analysis / prediction unit uses 200 to their prediction the last forecast result that they sent to the registers 218 and in the shift register storage state of 8th the transform coefficient positions that are in the part 106 3 with the dash-dot-dot line 286 are marked, which also simultaneously mark the transformation coefficient positions which correspond to the tuple currently to be modeled. For example, the analysis / prediction unit 200 a not-yet-updated first status bit 274 4.2 dependent on ANDing the bit i ae of the last prediction result with the magnitude bit 252 3.2 take into account the result of this AND operation with the first status bit 274 4.2 ORed.
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 2744,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.For the first status bit 274 5.2 can be the analysis / prediction unit 200 address the not-yet-updated by being the result of ORing the eight immediate neighbor bits 274 with the above-described update compensation for the status bits 274 4.2 and 274 4.3 with the amount bit 252 4.2 ANDed. With such virtually updated first control bits, the analysis / prediction unit 200 the affiliation of, for example, the amount bit 252 4.3 by ORing the eight first control bits of the eight immediate neighboring coefficients, followed by ANDing with the inverse or the negation of the status bit 274 5.3 determine. Thus, the analysis / prediction unit checks in this way 202 for each of the magnitude bits to be modeled 252 4.2 to 252 4.5 whether the corresponding transformation coefficients that they represent are still insignificant, as well as whether the direct neighbor coefficients are already significant or at least one of them is already significant, already a column in front of the column currently to be modeled 252 3.2 to 252 3.5 and taking into account the significances, such as they are in proper passage of the passport 1 to the respective amount bit in 252 3.2 to 252 3.5 would have resulted.
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 ge setzt 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.The analysis result is then from the unit 200 as previously described, as a 4-bit vector to the register 218 is issued after the next shift operation of the shift register unit 106 at the input of the multiplexer 216 or the coefficient selector 222 to rest. With just one additional arithmetic adding operation among the bit values, the same to the registers 218 can output the analysis / prediction unit 200 also deliver the prediction result and to the bit counter 220 before starting the next shift into the shift register unit 106 which indicates how many of the magnitude bits in the next tuple to be modeled belong to pass 1. Shows the register 218 that none of the magnitude bits of the current tuple 252 3.2 to 252 3.5 belongs to the passport 1, so sets the coefficient selector 222 the multiplexer signal as desired, such. To a predetermined value that is not from the register contents of the register 218 depends, causing the multiplexer 216 one of the unset bits in the register 218 as valid bit 246 to the cache 210 1 outputs. So even if the precoding units 202 . 208 and the control bit control 224 together a 12-bit word 244 form and to the cache 110 1 spend, so takes the cache 110 1 For example, the caching of this data word 244 not available because the validity bit is not set. However, to save power, it may be provided that, for example, the operation of the precoding units 202 . 208 is prevented in such a case, as exemplified by an arrow 288 in 4 is indicated. Of course it would be further possible for the cache 110 1 the storage of data words 244 regardless of whether the validity bit is set or not, in which case the cache 110 1 the valid bit is simply cached along with the 12-bit word, but this approach takes up more space in the cache 110 1 required.
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.Otherwise, however, ie in the case of at least one set bit in the register 218 indicating that the corresponding magnitude bit is below the magnitude bits currently to be modeled 252 3.2 to 252 3.5 belongs to Pass 1, sets the coefficient selector in successive cycles 222 the multiplexer signal sequentially down corresponding to the set bits in the register 218 to the coefficients belonging to Pass 1. In the processing clock then generate the control bit control 224 and the precoding units 202 and 208 for each of these pass bits belonging to the 1 a 12-bit data word 244 , which together with a set validity bit 246 to the cache 110 1 is output, which stores these data words in the incoming order due to the valid bit set. In particular, the coefficient selector goes 222 the amount bits associated with pass 1 within the column 252 3.2 to 252 3.5 from top to bottom as it also expects according to the scanning order of the decoder.
In
jedem Verarbeitungszyklus verarbeiten die Vorkodiereinheiten 202 und 208 die
ihnen zu Verfügung stehenden Informationen 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.In each processing cycle, the precoding units process 202 and 208 the information available to them according to a respective coding scheme, the data bits 230 respectively. 232 and the associated context indexes 234 and 236 to determine. The precoding unit 202 implements a so-called significance propagation (SP) coding scheme. After that, the context index 236 formed by logically linking the significances of the neighbor coefficients. Thus, for example, shows the current multiplexer signal on the amount bit 252 3.3 so does the multiplexer 206 the first status bits 274 3.2 to 274 5.2 . 274 3.4 to 274 5.4 . 274 3.3 and 274 5.3 further. Overall, therefore, the input side of the multiplexer 206 coupled to the register cells by the dashed line 290 in 8th are surrounded. The multiplexer 204 is input side with the register positions in the area 106 2 coupled, which corresponds to the currently modeled tuple and with a dashed line 292 is marked. The multiplexer 204 indicates the magnitude bit value indicated by the multiplexer signal to the precode unit 202 off, so that this is the data bit 232 can adjust accordingly.
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 Datenbit 230 bzw. der
Kontext-Index 234 annehmen, für die nachfolgende Überarbeitung
allerdings unbeachtlich ist.The sign bit precoding unit 208 can, as it is in 4 through the dashed connecting line 294 is also displayed, the amount bit value of the magnitude bits indicated by the multiplexer signal is received to inhibit or perform processing depending thereon. On the decoder side, the decoder expects an encoding of the sign bit of a transformation coefficient anyway only if it becomes significant the first time, namely immediately after receipt of the corresponding data bit of this magnitude coefficient, so that in this case in the data word 244 the corresponding bits 230 and 234 are irrelevant. The by the unit 208 output data bits and context indices 230 . 234 in other words, they are only relevant if the data bit 232 by the amount pre-encoding unit 202 is issued, is significant or set. The connection 294 between the output of the multiplexer 204 and the precoding unit 208 However, it can also be missing, in which case the values that the data bit 230 or the context index 234 assume, for the subsequent revision, however, is irrelevant.
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.In any case, the sign bit precoding unit performs 208 a so-called sign coding or SC (SC = sign coding) scheme, after which the data bit 230 the value of the sign to the transform coefficient indicated by the multiplexer signal and the associated context index 234 is set to a context which depends on a logical combination of the significances and signs of the neighboring coefficients, according to the JPEG2000 standard, which is hereby addressed by way of example, only the neighboring coefficients in column and row direction. For example, shows the multiplexer signal on the magnitude bit 252 3.3 , so determines the Vorkodiereinheit 208 the data bit 230 from the sign bit 250 4.3 and the sign bits adjacent thereto 250 3.3 . 250 5.3 . 250 4.2 and 250 4.4 taking into account that not all sign bits are yet known for the decoder, which is taken into account here by evaluating the first control bits of the neighboring bits, namely 274 3.3 and 274 4.2 , Accordingly, the multiplexer 210 input side with register cells within the dashed line 294 coupled area while the multiplexer 212 on the input side with part of the register cells within the range 290 is coupled to each a part of these register cells depending on the multiplexer signal from the coefficient selector 222 with the sign bit precoding unit 208 to pair.
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.The control bit control 224 sets in each processing cycle of the precoding units 202 and 208 the control bits 240 and 242 representing the subsequent arithmetic coding device 112 ( 3 ) should inform, for example, whether the bypass mode for the respective transformation coefficient of the data word 244 should be active, and whether the current coding pass is over. More specifically, the control bit control sets 224 the Pass-end bit 242 in the case that the current tuple to be modeled includes the last magnitude bits in the current magnitude bit-plane, e.g. B. the magnitude bits u i , v i , w i and x i in the current bit plane i in the example of 2 , The bypass mode bit 240 provides the control bit control 224 For example, depending on the depth of the current magnitude bit plane, so that, for example, after the fourth coded bit plane, the bit 240 indicates the bypass mode, indicating that from this point on the pass-1 data is raw or uncompressed into the data stream at the output of the arithmetic encoder 112 should be introduced.
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.Finally, it should be noted that the cache 110 1 in the case that he is trained to data words 244 depending on the validity bit 246 temporarily store or discard, in particular, is designed so that the cache 210 1 the data word 244 in the case of a set pass-end bit 242 but also cached if the corresponding valid bit 246 not set. Various measures can be provided in this case for the data word to be the actual unactivated validity bit 246 reflects, such as B. coding the remainder of the data word 244 except for the pass-end bit for an otherwise invalid state, since Pass 1 associated with the magnitude bit does not occur.
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.As already mentioned, the clock counter becomes 220 after each shift to the prediction preinitializes how many coefficients in a column are modulated or to be modeled. Since this prediction already executes one column before the column currently being modeled, the result is for the clock counter 22 already during the sliding process itself. If the result or the preinitialization is 0 or 1, the next shift operation of the shift register unit can be immediate with the next cycle 106 be triggered, what the clock counter 220 prompted accordingly. For larger preinitialized values, the clock counter delays 220 according to the output of the shift pulse 296 to the shift register unit 106 , As will be further mentioned below, the clock counter takes into account 220 further, whether the parallel processing by the bit-modeling units 108 2 respectively. 3 has progressed far enough. The prediction result regarding the number of associated magnitude bits, as mentioned above, is logically combined from the 4-bit vector for the register 218 and the significance status variable.
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.Although previously indicated, it is emphasized once again how to update the first status bits via the demultiplexer 214 runs. As already mentioned, the first status bits show 274 whether a respective transformation coefficient is already significant or not, relative to the current bit-plane. An update can only mean a transition from non-significant to significant. The coupling of the data bit 232 over the demultiplexer 214 with the corresponding register cell within the range 286 of the part 106 3 the shift register unit 106 Therefore, it is preferably designed so that the feedback to an update of the current register cell state of the data bit 232 corresponding first status bits with a value that a logical OR of the current state with the data bit 232 equivalent. In addition, appropriate precautions should be taken so that the data bit 232 0 is when the validity bit 246 not set. In other words, the demultiplexer 214 on the output side with the register cells within the range 286 coupled and adapted to be dependent on the multiplexer signal from the coefficient selector 222 the data bit output of the precode unit 102 in the above-described OR operation, to the corresponding first status bit register cell of the transform coefficient indicated by the multiplexer signal.
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 Betragsverfeinerungsdurch lauf 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.After above, the operation of the first coding pass associated with the bit-modeling unit 108 1 In the following, the mode of operation of the bit modeling unit responsible for the second coding pass will be described below 108 2 what's up to 5 Reference is made. In contrast to the first coding pass or pass 1, the second coding pass or pass 2 is responsible for magnitude bits which belong to already significant transformation coefficients. The second encoding pass is also called Magnitude Refinement Pass according to the JPEG2000 coding scheme, which is relevant to magnitude bits belonging to coefficients already significant before any coding pass of the current magnitude bit-plane but not just the first pass become significant. That is, the decision on the membership of a magnitude bit to the second coding pass is based on the status bits in the part 106 3 the shift register unit 106 should not be taken, yet not by the feedback on the demultiplexer 214 inside the store 286 has been updated, ie the first status bits in register cells to the right thereof from the perspective of 8th , Conversely, however, contexts of the magnitude bits associated with the second pass, as described in more detail below, are determined based on the updated first status bits, for which reason the bit modeling unit 108 2 as well as the bit modeling unit described below 3 make the modeling in terms of magnitude bits, which from the aktu ell modeled magnitude bits of the bit modeling unit 108 1 are sufficiently in time in units of the shift register ranks. In the exemplary case described herein exemplary is assumed by a fixed offset of two shift pulses, although, as will be explained in more detail below, also a variable design of this offset while maintaining a minimum distance, such. B. the two shift registers, may be provided.
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. 5 shows the structure of the bit modeling unit 108 2 according to an embodiment of the present invention. Analogous to 4 is it back together with the shift register unit 106 and the associated cache 110 2 shown. The bit modeling unit 108 2 includes an application decision maker 300 , a precoder 302 , a control bit control 304 , a 4-bit register 306 and a sum threshold decisioner 308 , The application decision maker 300 is with the part 106 3 the shift register unit 106 coupled on the input side and on the output side with the 4-bit register 306 , Both an input of the precoder 302 as well as an input of the sum threshold decision maker 308 are with the register 306 coupled. On the input side is the precoder 302 also with parts 106 2 . 106 3 and 106 4 the shift register unit 106 coupled. Internally, the precoder includes 302 four mutually corresponding magnitude bit pre-encoding units 302 1 to 302 4 , one for each amount bit of the current tuple, which is also in 5 hatched are symbolized. Each of the precoding units 302 1 to 302 4 includes an exit 310 for a data bit and a 2-bit output 312 for a context index. The control bit control 304 includes an exit 314 for a pass end bit and an output 316 for a bypass mode bit, with the outputs 310 to 316 together a 14-bit output for a 14-bit word 318 define that with an input of the cache 110 2 is coupled. Also an output of the Sumschwellwertentscheiders 308 is with another input of the cache 110 2 coupled to a valid bit 320 to the cache 110 2 issue.
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.After the construction of the bit modeling unit 108 2 has been described, their operation will be described below. The application decision maker 300 is designed to be based on its input information in the register 306 for each amount bit to be currently modeled, form an information bit i ae , j ae , k ae and l ae indicating whether or not the respective magnitude bit belongs to the pass 2, by the same time by an appropriate number of shift pulses of the shift register unit delayed in the register 306 to write. The delay is due to the fact that the input side of the precoder 102 with register cells of the magnitude bit part 106 2 the shift register unit 106 which is opposite to the register positions of the magnitude bits to which the application decision maker 300 currently evaluates the first control bits, here by example by three slide length downstream, the former register positions within the part 106 2 with a dash-dot line 322 are marked. In particular, the input side is now the precoding unit 302 1 with the register cell 252 1.2 and within the register 306 coupled to the entry i ae , the precoding unit 302 2 with the register cell 252 1.3 and the bit j ae of the register 306 etc. Each of the precoding units 302 1 to 302 4 is thus for a different one of the magnitude bits in the 4-er column currently to be modeled 322 responsible.
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.Each precoding unit 302 1 to 302 4 puts its data bit out of cells according to its amount bit 322 one. They determine the context index depending on the updated significances of the neighboring coefficients, for which the precoder 302 with the register cells of the part 106 3 the shift register unit 106 is coupled in 8th with a dash-dot line 324 is marked. In particular, for example, the Vorkodiereinheit 302 1 with the register cells 274 1.1 to 274 3.1 . 274 1.3 to 274 3.3 . 274 1.2 and 274 3.2 coupled, which thus affect coefficients that that of the magnitude bits 252 1.2 surround. In particular, each coding unit sets 302 1 to 302 4 their context index 312 by forming a logical combination of the first control bits 274 of these neighboring coefficients. Should, however, the associated entry in the register 306 the respective precoding unit 302 1 to 302 4 indicate that their respective amount bit does not belong to pass 2, it sets the context index bits 312 to a bit combination that does not correspond to a meaningful context index and thus can be seen by itself that the corresponding data bit 310 is invalid.
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.In addition, the precoder is 302 with the register cells 280 from the part 106 4 the shift register unit coupled, in particular each Vorkodiereinheit 302 1 to 302 4 with the corresponding register cell for the second status bit assigned to the respective magnitude bit. Here are the Vorkodiereinheiten 302 1 to 302 4 designed so that the context indexes 312 which they output depend not only on the logic operation just described, but also on the respective second status bit, ie on whether the transformation coefficient in question already had an amount bit in the previous significant amount bit planes, that the second coding pass or pass 2 went through or not. The coupling of the precoder 302 with the register cells of the part 106 4 is in 8th with the dash-dot line 326 indicated.
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.The control bit control 304 sets the bypass mode bit 316 for example, a similar as previously referred to the controller 224 described. The same applies to the pass-end bit 314 , Also the control bit control 304 thus sets the control bits 314 and 316 to provide the subsequent arithmetic encoder information indicating whether the so-called bypass mode should be active or whether the current coding pass is over.
Wie
bereits erwähnt, bilden die Bits 310–316 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.As already mentioned, the bits form 310 - 316 the data word 318 , The cache 310 2 is now trained, for example, the 14-bit word 318 to include in the cache only if the valid bit 320 is set unless the pass-end bit 314 is set, in which case the data word 318 definitely in the cache 310 2 is stored. The summary of valid bit and 14-bit word 318 to a larger data word with storage in any case is of course also possible, as already referring to 4 had been described.
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.The sum threshold decision maker 308 sums the bits in the register 306 and checks if the sum is greater than or equal to 1 to the valid bit 320 in accordance with the result of the check, and thereby set the validity bit if at least one of the currently modifiable magnitude bits in the current tuple belongs to the pass2.
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 108, die ja
zumindest einen Verarbeitungszyklus pro zum Pass 1 gehörigem
Betragsbit benötigt.The bit modeling unit 108 2 is thus able, the amount bits associated with the pass 2 within a current tuple 322 in a processing cycle into a data word 318 precode. How many of the pairs of data bits and context index in the 14-bit data word 318 are actually valid or in the data stream to be encoded at the output of the arithmetic encoder 124 ( 3 ) are inherent in these pairs themselves, having in the negative case a special bit combination which is not a valid combination of data bit and context index or valid context. In this respect, the bit modeling unit needs 108 2 also no shift pulse output capability, since it is at least as fast as the described bit modeling unit 108 , which requires at least one processing cycle per amount bit associated with pass 1.
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 Ele mente 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.The following describes the structure and mode of operation of the bit modeling unit 3 for the third coding pass. This refers to 6 taken. The structure is similar to the case of the bit modeling unit in terms of the blocks and their coupling to each other 108 1 from 4 , To avoid unnecessary repetitions are therefore in 6 Elements that basically perform the same tasks as elements 4 provided with reference numerals, which are different from those of 4 differ only by the first digit or the hundredth place, in such a way that they have a four instead of a two. In particular, all elements are off 4 also in 6 shown, with the difference that it is in the in 6 Of course, the cache shown around the cache 110 3 with the difference being that the control bit control is next to the pass end bit 442 a block end bit 440 outputs and no bypass end bit, and with the difference that the sign bit precoding unit 408 no coupling with the control bit control 424 having. Differences in functionality and more precise connection with the shift register unit 106 the corresponding ele ments in 4 and 6 will be apparent from the following description, so that functionality descriptions, which will be explained below, corresponding function descriptions with respect to the corresponding elements with reference to 4 in this respect should replace. Incidentally, regarding functionality and interconnection, the description of 4 directed.
Zusätzlich
zu den vorerwähnten Elementen umfasst die Bitmodelliereinheit 1033 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 430–436 und 440, 442 das
in den Zwischenspeicher 1103 eingehende
Datenwort 444 zu bilden, das somit ein 15-Bit-Datenwort 444 ist.In addition to the aforementioned elements, the bit modeling unit includes 103 3 a run length encoding unit 500 having an input connected to the register 418 coupled to an input connected to another output of the analysis / prediction unit 400 is coupled. An output of the run length encoding unit 500 is intended to be a run length symbol 502 with three bits to output together with the other output bits 430 - 436 and 440 . 442 that in the cache 110 3 incoming data word 444 thus forming a 15-bit data word 444 is.
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.The third coding pass for which the bit modeling unit 3 is responsible, comes into play when the coefficient to be modeled for the current bit-plane is still insignificant, and was not covered by the first pass. It is thus also referred to as a "clean-up pass." The mode of operation of the third coding pass resembles the first pass in terms of context formation and precoding, but is extended by a so-called run length or RL (RL = one length) primitive. In other words, the third coding pass is responsible for the remaining magnitude bits which belong to neither the first nor the second coding pass, the coding of the pass-3 magnitude bits in the current 4-er column being the same as in the case of pass 1, with Exception that in the case that all magnitude bits in the current 4-er column are assigned a not yet significant transformation coefficient and have only insignificant neighboring coefficients, in which case the run-length mode sets in, from top to bottom the run of insignificant magnitude bits in indicates the current tuple and thus only interrupted if any of the magnitude bits of the current 4-er column in the current bit-plane becomes significant, or has an magnitude-bit-value of 1, from where the further magnitude bits in that 4-er column are further encoded as in the case of pass 1 and encodes the sign of the coefficient interrupting the RL primitive.
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.After this brief overview of the Pass 3 is again in synopsis of 6 and 8th the functioning of the unit 3 explained. Since pass 3 is by definition the last among the sequential passes, the significance checks each already refer to those already performed by the bit modeling unit 108 1 updated first status bits, ie the first status bits left of the range 286 in 8th , Taking into account the adjacency coefficient significance checks, the range of the current 4-column should be at least two shift register ranks beyond the current range 282 the bit modeling unit 108 1 lie. According to the embodiment of 6 The current range is exactly two shift register rings behind this range. However, as explained above with reference to the passport 2, it may also be provided that the structure of the shift register unit faces 8th is also modified to allow a variable offset, so that the processing speed of the two units 108 1 and 3 is decoupled.
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 Schieberegister einheit 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.The following is intended to refer to the 6 and 8th be taken in synopsis to the operation of the bit modeling unit 3 to illustrate. The analysis / prediction unit 400 again checks in advance the 4-tuple of magnitude bits 252 2.2 to 252 2.5 Next, for modeling in the unit 3 is provided, which belong to the passport 3, ie which do not belong to the passport 1 or the passport 2, and is about the coupling 428 with register cells of the part 106 3 the shift register unit 106 coupled, these shift register cells in 8th with the dash 3-point line 504 are framed. Among these first status bits in the range 504 require the status bits within the range 286 an updating or taking into account that they may become significant during the first pass, for which the analysis / prediction unit also includes the previous prediction result of the analysis / prediction unit obtained with respect to the previous shift cycle 200 the bit modeling unit 108 1 used and the magnitude bits in the associated area 292 including the analysis / prediction unit 400 over the coupling 446 also with the register cells in the area 292 is coupled. In addition, the analysis / prediction unit uses 400 analogous to the case of 4 its last prediction result for the prediction, which for the current prediction naturally relates to the magnitude bits in the area currently to be modeled, namely the updates of the significances in the positions 274 2.2 to 274 2.5 due to its own coding pass, ie the coding pass 3, which takes place only in the current shift cycle, including the analysis / prediction unit 400 also with further magnitude bit register cells within the range 106 2 the shift register 106 is coupled, namely those of the current 4-er column within the dashed 3-point line 506 marked area. The prediction result gives the analysis / prediction unit 400 as in the case of 4 in the register 418 for the next shift cycle.
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 ers tens 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 430–436 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,
inklusive des signifikant werdenden, da für diesen ja noch
das Vorzeichen in den kodierten Datenstrom zu kodieren ist und ansonsten anzeigt,
dass es unbeachtlich ist.The run-length coding unit 500 evaluates at the beginning of the shift cycle, in which therefore the amount bits predicted in terms of their Pass3 membership in the part 106 2 the shift register unit 106 have been advanced to represent the current magnitude bit, along with the current magnitude bits to which the prediction in the register 418 and according to the example of 6 from the analysis / prediction unit 400 gets the 4-bit vector in the register 418 to determine at the very least whether the run-length primitive is to be used, that is, all magnitude bits of the current 4-tuple are assigned to the third encoding pass, and if so, if they are below them at any point due to a significant magnitude bit is interrupted, depending on this evaluation, the run length symbol 502 adjust. From the significant amount bit, ie all amount bits after the becoming significant to below, including the significant, since this is still the sign in the coded data stream to be coded are from the coefficient selector 422 converted into a corresponding multiplexer signal, so that the coding units 402 and 408 in the manner described above for these magnitude bits corresponding pairs of data bits and context bits 430 - 436 produce. As already mentioned above, the precoding units require 402 and 408 this one processing cycle per amount bit. It is therefore only a single word 444 for a 4-column by the bit modeling unit 3 in the run-length coding case is only generated as long as there is no more than one significant amount bit among the four current magnitude bits. Otherwise, multiple 15-bit data words 444 generated, only in the first data word 444 the run length symbol 502 , including the significant, because for this is still the sign in the encoded data stream to encode and otherwise indicates that it is irrelevant.
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.Although pass 3 is the last pass, the amount data bit becomes 432 at the exit of Vorko the purity 402 over the demultiplexer 414 in the part 106 3 the shift register unit 106 fed back, depending on the multiplexer signal from the coefficient selector 422 into the corresponding register cell within the 4-column of register cells 274 2.2 to 274 2.5 , the reason for this is that at the next shift, this 4's column in 8th is shifted one position to the left, with respect to which significances should be updated.
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 .On the output side is the demultiplexer 414 with the register cells 274 2.2 to 274 2.5 coupled. The input side is the multiplexer 404 with the register cells within the range 506 coupled. The multiplexer 406 is input side with the register cells within the range 508 which includes the first status bits for an area that the current 4's column of magnitude bits 506 including adjacent coefficients. The multiplexer 410 is with the corresponding range of register cells within the range 106 1 the shift register unit 106 coupled in 8th With 510 is highlighted. The multiplexer 412 is input side with register cells within the range 508 coupled, for example, the register cells 274 1.2 to 274 1.5 and 274 2.1 to 274 2.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).Consequently, the bit modeling unit provides the prescribed manner 3 for an analysis of the coefficients to be modeled, whether they are still insignificant, and an analysis of the direct neighboring coefficients, whether they are already significant, and in such a way that the analysis already takes place one column in front of the column currently to be modeled. The analysis result is again output as a 4-bit vector, in the register 418 on the basis of which vector the decision is made whether the RL primitive is applied to the four current coefficients. If the condition is met, what of the runlength coding unit 500 is checked, of course, via the multiplexer 516 also set the valid bit since every bit in the register 418 is set, and the coding unit 500 executes the runlength coding scheme, which determines the designation of the symbol 502 which represents whether the RL primitive was used and, where appropriate, at which position a coefficient becomes significant. If at least one coefficient in the current tuple becomes significant, it will also become significant by the precoding unit 408 for which the run interrupting magnitude bit encodes the associated sign (the bits 432 and 436 are irrelevant in this processing cycle).
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.The bit positions following the magnitude bit interrupting the RL primitive are processed by the precode unit 402 executing the SP encoding scheme already described above for each successive coefficient in the current column, which involves establishing a data bit and matching context index formed by logically linking the significances of the neighbor coefficients. In addition, for these subsequent bit positions, when the data bit of the SP encoding scheme or the corresponding magnitude bit is set at the respective bit position, what happens over the connection 494 is verifiable by the precoding unit 408 execution of the SC scheme is carried out, which involves establishing a data bit and a matching context index formed by logically linking the significances and signs of the neighbor coefficients. The control bits 440 and 442 be from the control bit control 424 are set, which tell the subsequent arithmetic encoder whether the current coding pass or the current code block are over. The latter applies in the example of 2 for example, with the tuple u n , v n , w n , x n . Data bits and context indices of the SP and SC schemas and the symbol 502 and the control bits 440 and 424 become the 15-bit data word 444 summarized in the cache 110 3 if valid bit is set and in any case if the pass-end bit 442 is set, is stored.
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.Of course, from the analysis prediction unit 400 also predicted how many coefficients are modeled in a column, this prediction already being performed one column ahead of the column currently being modeled, so that the result is already present during the shift, and if the result is "0" or "1" is, with the next bar could immediately follow the next shift, which is the clock counter 426 the shift register unit 106 telling. The prediction result is formed by logically combining the four-bit vector and the significance status variable, as described above, in the shift register unit 106 appropriate precautions are taken that the sliding operation is actually only performed when both units 108 1 and 3 its shift pulse to the shift register unit 106 to make sure that you do not start pushing too soon.
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.After the description of the three Bitmodelliereinheiten 108 1 to 3 is briefly on again 3 With reference to the detailed description of the internal construction of the continuous flow separator 122 is continued according to an embodiment of the present invention. As described above, the three bit modeling units work 108 1 to 3 largely independent of each other and especially parallel to each other in a common scan with a slight offset to each other from the magnitude bits of the current amount bit plane. The data words are each in its own the cache 110 1 to 110 3 filed in sequence. The buffers 110 1 to 110 3 are executed so that the order of the respective stored data words is retained during reading. This could be the cache 110 1 to 110 3 For example, be designed as FIFO memory (First-In-Fist-Out). Other versions are of course also possible, such. B. implementations as a ring memory, but also directly addressable or content-addressable memory in the case of appropriate provisions for the appropriate read order, and accordingly the memory need not be available separately for each modeling unit.
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.The pass decision maker 122 Now decodes the data words in a suitable order and converts them into corresponding control signals for the arithmetic coder 124 , In particular, the pass decision maker reads 122 the data words first of the first pass until it is finished, which is indicated by the pass-end bit, then the data words of the second encoded pass from the buffer 110 2 until the pass-end bit is set, and then the data words from the cache 110 3 ... This respects the coding order as expected by the decoder.
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. 7 shows the internal structure of the flow separator 122 according to an embodiment of the present invention in one with the arithmetic coder 124 on the one and the latches 110 1 . 110 2 and 110 3 coupled state on the other side. In particular, the pass decision maker comprises 122 from 7 three data word decoders 600 1 . 600 2 and 600 3 between each one of the caches 110 1 to 110 3 on the one hand and according to the inputs of a multiplexer 602 switched on the other side. Furthermore, the pass decision maker includes 122 a controller 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 entsprechenden 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.Between each pair of buffers 110 1 to 110 3 and data word decoder 600 1 to 600 3 is a respective data word line 606 1 . 606 2 respectively. 606 3 provided to read the next data word from the respective cache. Request and acknowledge signal lines 608 1 to 608 2 and 608 3 are also provided between these pairs to read the data words in a handshake procedure. On the output side, each data word decoder 600 1 to 600 3 five signal connections 610 1 . 610 2 and 610 3 to corresponding inputs of the multiplexer 602 on. The signal connections 610 1 to 610 3 each comprise a data bit, context index, valid bit, bypass mode bit, and pass end bit connection. Only the bypass mode bit connection is in the case of the data word decoder 600 3 replaced by a block end-bit connection. On the input side is the controller 604 each with the pass-end bit outputs of the data word decoders 600 1 to 600 3 and with the block end bit output of the data word decoder 600 3 coupled. The controller further includes an output connected to a control input of the multiplexer 602 is coupled. In addition, the data word decoders swap 600 1 to 600 3 Control signals with the controller 604 from, for example, can also serve the realization of a handshaking process. On the output side, the multiplexer includes 602 six signal connections 612 to the arithmetic coder 124 Namely, the above-mentioned signal connections for data bit, context index, validity bit, bypass mode bit, pass end bit and block end bit. In addition, the arithmetic coder 124 via a feedback path 614 with the controller 604 to inform the latter if it is resumable to receive further data on the signal links 612 to process.
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.During operation, the data word decoders now read 600 1 to 600 3 successively the data words from the respective one of the three latches 110 1 to 110 3 off and decode the data words. The data word decoder 600 1 each encodes the 12-bit data words back into one or two bursts of data to the multiplexer in one or two consecutive clocks 602 over the signal connections 610 1 forward, namely a burst having the magnitude data bit and the associated context index for coefficient bit modeling, and another burst if the magnitude data bit is set, with a data bit indicating the sign, and the associated context index. If the data bit is valid, the decoder continues 600 1 also the validity bit. The bypass mode bit and the pass end bit on the signal lines 610 1 conducts the decoder 600 1 directly from the 12-bit data word.
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 der selbe 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.The decoder 600 2 behaves similarly. He also takes a decoding of the data words from the cache 110 2 back into data bits and context indices for coefficient modeling of up to four coefficients, so as to provide each 14-bit data word in the form of one to four consecutive bursts on the signal lines 610 2 to the multiplexer 602 forward. The data word decoder 600 3 Likewise, the same behaves the incoming 15-bit data words from the cache 110 3 back in run-length symbols, data bits, and context indices for coefficient modeling, and when the data bit is set, converts sign-bit modeling and in one or two consecutive bursts on the signal lines 610 3 at the multiplexer 602 forwards. However, the RL primitive comes to fruition, resulting from the RL symbol, the conversion is performed by the data word decoder 600 3 into a - in the case of the complete run length or no significant amount bit under all pass 3 bits - to four - in the case of a significant magnitude bit among all pass 3 bits at the second position from the top within the tuple signal burst. The control 604 evaluates the pass-end bits to successively first the signal lines 610 1 with the corresponding signal lines of the signal lines 612 to connect, then the signal lines 610 2 and then turn the signal lines 610 3 , In this way, the arithmetic coder gets 124 with each data bit and context index also information on whether to use the bypass mode for the respective coefficient and whether the current coding pass or code block is over. In the former case, the arithmetic coder interrupts 124 namely, its arithmetic interval division, and inserts the corresponding data bit in clear text into the arithmetic data stream when the bypass mode bit is set, and in the second case the arithmetic encoder resets its current interval back to the predetermined value, as well as probability estimates of the individual contexts in FIG in the case that the arithmetic coder is adaptive. Through the handshake connections described above, the flow of information within the flow decision maker becomes 122 depending on whether the caches 110 1 to 110 3 Data or whether the arithmetic coder is ready to accept data.
Der
oben beschriebene Blockkodierer nach den 3–8 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.The above-described block coder after the 3 - 8th can be implemented in hardware and in this case represents a hardware-based JPEG2000 block coder in which the number of process steps required in the context modeling is reduced by the above-illustrated parallel processing and the pass prediction. Depending on the coding pass, either in one step a coefficient bit was modeled simultaneously with its sign bit or in one step a column of up to four coefficient bits is modeled simultaneously or in one step a column of up to four coefficient bits is modeled in a so-called run length primitive, in the same step significant coefficient is modeled along with its sign bit.
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.Of
Furthermore, a prediction was provided, how many coefficients
can be modeled in a column in one step.
These measures result in a clocked process at
the same clock frequency, the coding of a coding cycle in less
Time, since waiting times for register set operations are eliminated,
up to four coefficients can be modeled simultaneously,
up to four modeling operations in one step
can, already at the beginning of the modeling process of a column
It is known how many coefficients are modeled in one step
which allows time-consuming test functions
during modeling omitted.
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.moreover
the bite extraction allowed a reduction of the to be logged
and to update separate status variables for
Each coefficient of a block of code, on the one hand, the required
Memory size can be reduced and on the other hand
the coding of a coding pass can be accelerated,
because additional read and write operations are eliminated.
Ein
Vorteil des Blockkodierers von 3–8 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.An advantage of the block coder of 3 - 8th consists, in particular, in the fact that, depending on the encoding cycle, up to four coefficient bits lying in a strip underneath were modeled simultaneously in order to generate information words which may possibly even contain compressed information for up to four bit context pairs. These information words are latched and fed by appropriate evaluation in a decoder to the downstream arithmetic coder in a suitable representation and in the correct order in the manner described above. By the above measures, coefficient bit modeling has been improved to allow easier hardware implementation.
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 Bitebene ü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.As described above, the bite extractor of a memory unit contains a vector of coefficients to extract from each coefficient k of the vector for the bit plane m to be coded information comprising the magnitude bit k m , the sign bit k vz, and status bits k st Status bits in turn consist of the bit which indicates whether the coefficient in the bit plane m is already significant, for which it is checked for all magnitude bits above the current level whether a bit is set. wherein, if at least one bit is set, the coefficient in that bit-plane is significant, and the bit indicating whether the MR-coding scheme has been applied to that coefficient for the first time or already before, for which all magnitude bits above that current bit-plane is checked to see if one of these bits is set, and if at least two bits are set, then the MR-coding scheme for the coefficient has already been applied once. As mentioned above, this extraction eliminates the need for separate state variables for each coefficient of a coding block since this information must be redetermined for each strip and held only for the duration of the coding, thereby reducing the amount of memory required and the coding the coding cycle can be accelerated because additional read and write operations omitted.
Eine
Hardwareimplentierung gemäß den 3–8 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 3–8 weniger
Kodiereinheiten zur Erlangung der gleichen Kodiergeschwindigkeit
notwendig sind.A hardware implementation according to the 3 - 8th Thus, it can be expected that in a clocked process at the same clock frequency the encoding of a coding cycle can be done much faster, because as mentioned above waits for register-setting processes omitted, up to four coefficients can be modeled simultaneously, up to five modeling can be done in one step It is already known at the beginning of the modeling process of a column how many coefficients can be modeled in one step, which eliminates time-consuming test functions during modeling and eliminates additional read and write operations for the status variables. These benefits are for a compressor, as in 1 is shown, and in which the encoder of 3 can be used, of high value. For it has already been stated in several studies that the block coder and above all the coefficient bit modeling represent the most complex operation within the JPEG2000 coding process. In the already mentioned in the introduction to the present application article of Lian et al , For example, we present a test result that requires nearly 52% of the computational power of a computer for the sum of all three encoding cycles. Acceleration of the coefficient bit modeling process thus significantly affects the entire coding process. In implementations in which a higher coding speed is achieved by multiple instantiation of the block coder, resources can thus be saved, thus according to the exemplary embodiment 3 - 8th less coding units are required to obtain the same coding speed.
Soeben
erwähnte Implementierungen lassen sich beispielsweise auf
FPGAs (Field Programmable Logic Array = Vorortpro grammierbare 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.Just
mentioned implementations can be, for example, on
FPGAs (Field Programmable Logic Array)
Arrays) but also as an integrated circuit or ASIC (ASIC = Application
Specific Integrated Circuit = application specific integrated
Circuit). For an FPGA has already been one
Implemented hardware implementation, including the corresponding functional units
described by VHDL and translated with appropriate tools
and synthesized for the target platform.
Verschiedene
Modifikationen können an den Ausführungsbeispielen
nach 3–8 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.Various modifications may be made to the embodiments 3 - 8th be made. For example, the shift register 106 be executed differently. In particular, it may for example have more shift register ranks, ie in 8th so be widened to the left. Furthermore, the offset between the current 4's vectors 292 . 322 and 506 also be larger than the two shift register ranks, as in 8th is shown. In addition, it is possible that the offset is variable. For this purpose, for example, the shift register unit is not executed uniformly, as in 8th but as two shift registers, one for the bit modeling unit 108 1 and another for the bit-modeling units 108 2 and 3 in which a FIFO memory is arranged between them to serve as a variable buffer between the shift registers.
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 Normalfall 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
Nachbar koeffizienten mittels des entsprechenden Betragsbits dieses
Nachbarkoeffizienten virtuell aktualisieren.In the foregoing, it has been mentioned that the sign bit pre-coding units based on the first control bits determine whether or not the respective sign bits of the neighboring coefficients are known on the decoder side. Normally, then, the first control bit of the transform coefficient adjacent to the top of the current coefficient concerned is than via the demultiplexer 214 respectively. 414 to be updated. However, should that, due to signal propagation delays, cause the processing cycles to be delayed, it would also be possible for the sign bit precompression units to virtually update a not yet updated first control bit of the upper nearest neighbor coefficient using the corresponding magnitude bit of that neighboring coefficient.
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.In the foregoing, for the sake of simplicity of illustration, marginal problems such as at the edge of bit planes, at the end and at the beginning of a stripe, etc. have not been further deepened so as not to unduly complicate the above description. Unavailable data or data that is not available to the decoder can be set according to agreement to predetermined values in a manner preferably known on the decoder side. It may also be in the block encoder after 3 when encoding the magnitude bits of the stripes, the respective adjacent rows of the adjacent stripes are disregarded. In that case, for example, the shift register would also be smaller to fit in each of the parts 106 1 to 106 3 just to cover the four lines of the strips.
9 zeigt
ein etwas allgemeineres Beispiel eines Blockkodierers. Der Blockkodierer
von 9, der allgemein mit 700 angezeigt ist,
umfasst eine Kodiereinrichtung 702 und eine Vorhersageeinrichtung 704.
Beide Einrichtungen 702 und 704 weisen Zugriff auf
den zu kodierenden Transformationskoeffizientenblock 706 auf.
Dabei ist die Kodiereinrichtung 702 wie die im Vorhergehenden
erläuterten Bitmodelliereinheiten in deren Zusammenspiel
mit der Schieberegistereinheit 106, dem Bitextraktor 104 sowie
den sich anschließenden arithmetischen Kodiereinrichtungen 112 dazu
ausgelegt, die Transformationskoeffizienten 710, die in
Spalten und Zeilen angeordnet sind, in Tupeln 712 zu je
vier hier exemplarisch ebenfalls in Spaltenrichtung benachbarten
Transformationskoeffizienten 710 zu durchlaufen. Insbesondere ist
die Kodiereinrichtung 702 dazu ausgelegt, die mehreren
Betragsbits, durch die die Transformationskoeffizienten 710 dargestellt
sind, um mehrere Bitebenen zu definieren, bitebenenweise zu durchlaufen,
um insbesondere in jeder Bitebene die Betragsbits in Tupeln 702 zu
durchlaufen. Dabei nimmt die Kodiereinrichtung 702 eine
Vorkodierung vorbe stimmter der Betragsbits vor, wie z. B. lediglich
der Betragsbits von signifikanten Transformationskoeffizienten,
wie es im Zusammenhang mit der Bitmodelliereinheit 1082 der Fall war, oder lediglich der Betragsbits
von insignifikanten Transformationskoeffizienten, wie es in dem
Zusammenhang mit den Bitmodelliereinheiten 1081 und 1083 der Fall war. Die vorbestimmten Betragsbits
kodiert die Kodiereinrichtung 702 in einen kodierten Datenstrom 714,
beispielsweise derart, dass die Reihenfolge, in der die vorbestimmten
Betragsbits in den kodierten Datenstrom 714 kodiert sind,
der Reihenfolge des Durchlaufs der Betragskoeffizienten in den Tupeln 712 entspricht, mit
der internen Betragsbitreihenfolge innerhalb jedes Tupels 712 von
beispielsweise oben nach unten, wie es auch bei den vorhergehenden
Ausführungsbeispielen exemplarisch der Fall war. Die Kodierung kann,
muss aber nicht, eine arithmetische Kodierung sein, wie es im Vorhergehenden
der Fall war. Eine andere Entropiekodierung ist allerdings ebenfalls möglich,
wie z. B. eine Huffman-Kodierung, oder aber eine Lauflängenkodierung
usw. 9 shows a more general example of a block encoder. The block coder of 9 who is generally with 700 is displayed, includes an encoder 702 and a predictor 704 , Both facilities 702 and 704 have access to the transform coefficient block to be coded 706 on. In this case, the coding device 702 like the bit modeling units discussed above in their interaction with the shift register unit 106 , the Bitextraktor 104 and the subsequent arithmetic coding 112 designed to the transformation coefficients 710 arranged in columns and rows, in tuples 712 in each case four transformation coefficients, also adjacent in the column direction, by way of example here 710 to go through. In particular, the coding device 702 adapted to the multiple magnitude bits by which the transform onskoeffizienten 710 are shown to define several bit planes, to pass through in bit-plane fashion, in particular in each bit plane, the magnitude bits in tuples 702 to go through. The encoder takes 702 a precoding vorbe agreed before the amount bits before, such. For example, only the magnitude bits of significant transform coefficients, as associated with the bit modeling unit 108 2 was the case, or just the magnitude bits of insignificant transform coefficients, as in the context of the bit-modeling units 108 1 and 3 the case was. The predetermined magnitude bits encode the encoder 702 in a coded data stream 714 , for example, such that the order in which the predetermined magnitude bits in the encoded data stream 714 the order of passage of the amount coefficients in the tuples 712 corresponds to the internal magnitude bit order within each tuple 712 from top to bottom, for example, as was the case with the previous embodiments. The coding can, but need not, be an arithmetic coding, as was the case previously. However, another entropy coding is also possible, such. As a Huffman coding, or a run-length coding, etc.
Die
Vorhersageeinrichtung 704 ist nun dazu ausgelegt, vorherzusagen,
ob und, wenn ja, welcher oder welche der Betragsbits unter den benachbarten Betragsbits
der vorbestimmten Betragsbitebene eines gemäß einer
Reihenfolge des Durchlaufens frühestens als nächstes
an der Reihe seienden Tupels zu den vorbestimmten Betragsbits gehört.
Diese Vorhersageergebnis 716 verwendet nun die Kodiereinrichtung 702,
um die Kodierung der vorbestimmten Betragsbits in den kodierten
Datenstrom in Abhängigkeit von der Vorhersage vorzunehmen.The predictor 704 is now adapted to predict whether and, if so, which one or more of the magnitude bits among the adjacent magnitude bits of the predetermined magnitude bit-plane of a tuple next in line according to an order of traversal belongs to the predetermined magnitude bits. This forecast result 716 now uses the encoder 702 to perform the coding of the predetermined magnitude bits in the coded data stream in dependence on the prediction.
Dabei
kann insbesondere die Kodiereinrichtung 702 beispielsweise ähnlich
der Betragsbitvorkodiereinheit 202 aus 4 eine
Einheit aufweisen, z. B. eine hartverdrahtete, mittels der die Kodiereinrichtung 702 in
der Lage ist, sequentiell in der vorerwähnten festgelegten
Reihenfolge ausgewählte der Betragsbits innerhalb des aktuellen
Tupels 712 zu kodieren. Da die Vorhersageeinrichtung 704 ihr
Vorhersageergebnis 716 bereits vorab für ein Tupel
liefert, bevor dieses Tupel in einem Verarbeitungszyklus durch die
Kodiereinrichtung 702 aktuell zu verarbeiten ist, kann
die Kodiereinrichtung 702 ihre sequentiell arbeitende Kodierschaltung
nacheinander ohne Taktverzögerung den bzw. die vorbestimmten
Betragsbits innerhalb des aktuellen Tupels 712 verarbeiten
lassen. So war das auch bei den Bitmodelliereinheiten 1081 und 1083 der
Fall.In particular, the coding device 702 for example, similar to the magnitude bit pre-encoding unit 202 out 4 have a unit, for. B. a hardwired, by means of the encoder 702 is capable of sequentially selecting, in the aforesaid predetermined order, the magnitude bits within the current tuple 712 to code. As the predicting device 704 their prediction result 716 already supplies in advance for a tuple, before this tuple in a processing cycle by the encoder 702 currently being processed, the encoder can 702 its sequentially operating coding circuit successively without clock delay the or the predetermined magnitude bits within the current tuple 712 process. So it was with the bit modeling units 108 1 and 3 the case.
Andererseits
kann die Kodiereinrichtung 702 ähnlich dem Betragsbitvorkodiereinheiten 3021-4 aus 5 mehrere
parallel arbeitende Kodiereinheiten aufweisen, so dass die Kodiereinrichtung 702 in
der Lage ist, in einem Verarbeitungszyklus parallel die mehreren
Betragsbits in dem aktuellen Tupel 712 zu verarbeiten.
In diesem Fall ist die Kodiereinrichtung 702 aber aufgrund
des Vorhersageergebnisses 716 in der Lage, noch in diesem
Verarbeitungstakt bzw. -Zyklus zu verhindern, dass alle Betragsbits
des aktuellen Tupels in der geforderten Reihenfolge in den kodierten
Datenstrom 714 gelangen, sondern vielmehr ist die Kodiereinrichtung 702 bei
der parallelen Verarbeitung dann in der Lage, die Zugehörigkeit
der einzelnen Betragsbits des aktuellen Tupels derart zu berücksichtigen,
dass nur die vorbestimmten Betragsbits in den kodierten Datenstrom
kodiert werden, wozu die Kodiereinrichtung 702 gemäß dem vorhergehenden
Ausführungsbeispiel der Bitmodelliereinheit 1082 als Vorkodierer einem Zwischenspeicher
vorgeschaltet sein kann, in dem die einzelnen Kodiereinheiten bzw.
Betragsbitvorkodiereinheiten ihre Teildatenworte schreiben, die
zusammen das Datenwort des entsprechenden Vorkodierers bilden, und
aus welchen Teildatenworten die sich anschließende Entropiekodiereinrichtung
anhand der einzelnen Teildatenworte einzeln für sich erkennt,
ob das jeweilige Teildatenwort zu einem vorbestimmten Betragsbit
gehört.On the other hand, the encoder 702 similar to the magnitude bit pre-encoding units 302 1-4 out 5 Have a plurality of coding units operating in parallel, so that the coding device 702 is capable, in a processing cycle, of paralleling the multiple magnitude bits in the current tuple 712 to process. In this case, the encoder is 702 but due to the prediction result 716 being able to prevent, even in this processing cycle, all sum bits of the current tuple in the required order in the coded data stream 714 but rather is the encoder 702 in the parallel processing then able to take into account the affiliation of the individual magnitude bits of the current tuple such that only the predetermined magnitude bits are encoded in the encoded data stream, including the encoder 702 according to the preceding embodiment of the bit modeling unit 108 2 as a precoder can be preceded by a buffer in which write the individual coding or magnitude bit precoding their partial data words, which together form the data word of the corresponding precoder, and from which partial data words the subsequent Entropiekodiereinrichtung recognizes individually based on the individual partial data words, whether the respective partial data word belongs to a predetermined amount bit.
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 der Kodiereinrichtung 702 erfasst
werden und somit eine verlustbehaftete Kompression der Transformationskoeffizientendaten
vorgenommen wird, kann analog zu dem vorhergehenden Ausführungsbeispiel
der Kodiereinrichtung 702 eine weitere Kodiereinrichtung
parallel geschaltet sein, um weitere andere vorbestimmte Betragsbits
zu kodieren. Sollte dann beispielsweise durch einen Standard oder
dergleichen festgelegt sein, dass in den kodierten Datenstrom 714 zunächst
die vorbestimmten Betragsbits der anderen Kodiereinrichtung in den
Datenstrom 414 zu kodieren sind und dann erst die vorbestimmten
Betragsbits der Kodiereinrichtung 702, kann sich im Anschluss
an die beiden Kodiereinrichtungen ein Entscheider befinden, der
die entsprechende Einbindung in den Datenstrom 714 vornimmt. Zudem
kann der Kodiereinrichtung 702 ähnlich dem vorhergehenden
Ausführungsbeispiel zusätzlich oder alternativ
ein Bitextraktor und eine Schieberegistereinheit vorgeschaltet sein,
so dass die Kodiereinrichtung 702 auf der Basis der in
dieser Schieberegistereinheit enthaltenen Informationen arbeiten kann,
wie z. B. zusammen mit der vorgeschriebenen parallel geschalteten
Kodiereinrichtung.Of course, the size of the tuple is not limited to four magnitude bits nor to a columnar array in the tuple 712 adjacent amount bits. Although in the embodiment of 9 only predetermined ones of the magnitude bits from the encoder 702 can be detected and thus a lossy compression of the transformation coefficient data is made, analogous to the previous embodiment of the encoder 702 a further coding means may be connected in parallel to code further other predetermined magnitude bits. Should then be determined for example by a standard or the like, that in the coded data stream 714 First, the predetermined magnitude bits of the other encoder in the data stream 414 are to be coded and then only the predetermined magnitude bits of the encoder 702 , After the two coding devices, there may be a decision maker who has the appropriate integration into the data stream 714 performs. In addition, the encoder 702 Similarly to the previous embodiment, additionally or alternatively a bit extractor and a shift register unit may be connected upstream, so that the coding device 702 based on the information contained in this shift register unit can work, such. B. together with the prescribed parallel encoder.
Die
Vorhersageeinrichtung 704 nimmt ihre Vorhersage beispielsweise
auf der Basis von Betragsbits vor, die in Richtung des Durchlaufens
der Betragsbits in Tupeln frühestens aktuell an der Reihe sind.
Auf diese Weise ist die Vorhersageeinrichtung 704 in der
Lage, zu berücksichtigen, dass Signifikanzen, die für
die Vorhersage der Vorhersageeinrichtung 704 mit entscheidend
sind, sich beispielsweise aufgrund der Kodierung durch die Kodiereinrichtung 702 noch ändern
kann. In dem Fall also, dass wie im Vorhergehenden die Bitmodelliereinheiten
die Kodiereinrichtung 702 ausgebildet ist, um in dem Fall, dass
sie ein vorbestimmtes Betragsbit in dem aktuellen Tupel kodiert,
das vorher einen nicht signifikanten Transformationskoeffizienten
darstellte, in der aktuellen Betragsbitebene allerdings 1 ist, wo durch
dieser Transformationskoeffizient nunmehr in der aktuellen Betragsbitebene
aber signifikant wird, die Signifikanz zu aktualisieren, kann die
Vorhersageeinrichtung 704 durch Auswerten entsprechender
Betragsbits noch nicht stattgefundene Fälle des Signifikanzwerdens von
Transformationskoeffizienten, die für die Vorhersage aber
relevant sind, durch Modifizieren der aktuellen Signifikanzen berücksichtigen.
Auf ähnliche Weise kann die Vorhersageeinrichtung 704 durch Auswertung
der entsprechenden Betragsbits gegebenenfalls berücksichtigen,
dass parallel geschaltete Kodiereinrichtungen noch Signifikanz-Werde-Ereignisse
auslösen, die das Vorhersageergebnis der Kodiereinrichtung 702 beeinflussen
könnte.The predictor 704 takes its prediction on the basis of Be at the earliest at the moment in the direction of passing the amount bits in tuples. In this way, the predictor 704 able to take into account that significant significance for the prediction of the predictor 704 are decisive, for example, due to the coding by the encoder 702 can still change. In the case that, as above, the bit-modeling units encode 702 is designed to be one in the current magnitude bit-plane in the case that it encodes a predetermined magnitude bit in the current tuple that previously represented a non-significant transform coefficient, but becomes significant by this transform coefficient now in the current magnitude bit-plane to update, the predictor 704 by evaluating corresponding magnitude bits, take account of cases of significance of transformation coefficients that are relevant to the prediction by modifying the current significances. Similarly, the predictor 704 optionally take into account, by evaluating the corresponding magnitude bits, that coding devices connected in parallel still trigger significance-becoming events which are the prediction result of the coding device 702 could influence.
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.Dependent
from the circumstances described procedures
for transform coefficient block coding not only in hardware,
but of course also be implemented in software.
The implementation may be on a digital storage medium, in particular
a floppy disk, a CD or a DVD with electronically readable
Control signals are made that way with a programmable computer system
can cooperate that the appropriate procedure
is performed. Generally, the invention thus consists
also in a computer program product with one on a machine-readable one
Carrier stored program code to carry out
an above procedure when the computer program product on a
Calculator expires. In other words
Thus, the invention can be thought of as a computer program with a program code
to implement an above method,
when the computer program runs on a computer.
Here, under a computer is any form of processor
to understand that is designed to be a program or a program code
execute, so in particular also microcontroller or
like.
ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDE IN THE DESCRIPTION
Diese Liste
der vom Anmelder aufgeführten Dokumente wurde automatisiert
erzeugt und ist ausschließlich zur besseren Information
des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen
Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt
keinerlei Haftung für etwaige Fehler oder Auslassungen.This list
The documents listed by the applicant have been automated
generated and is solely for better information
recorded by the reader. The list is not part of the German
Patent or utility model application. The DPMA takes over
no liability for any errors or omissions.
Zitierte Nicht-PatentliteraturCited non-patent literature
-
- 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 [0002] Christopoulos et al .: The JPEG2000 Still Image Coding System: An Overview, IEEE Transactions to Consumer Electronics, Vol. 46, No. 4, pp. 1103-1127, November 2000 [0002]
-
- 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 [0007] Lian et al .: Analysis and Architecture Design of Block Coding Engine for EBCOT in JPEG 2000, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 3, March 2003, pp. 219-230 [0007]
-
- Gangadhar und Bhatia: FPGA based EBCOT Architecture for JPEG2000,
Field-Programmable Technology (FPT), 2003, Proceedings 2003, IEE International
Conference, S. 228 bis 233 [0007] Gangadhar and Bhatia: FPGA based EBCOT Architecture for JPEG 2000, Field Programmable Technology (FPT), 2003, Proceedings 2003, IEE International Conference, pp. 228-233 [0007]
-
- Lian et al [0099] Lian et al. [0099]