-
Hintergrund der Erfindung
-
Die
Erfindung betrifft allgemein ein Bewegtbild-Decodiersystem, das
in einer Vorrichtung/einem System zum Übertragen, Speichern und Wiedergeben
eines Bewegtbildes, wie etwa einem Videotelefon, einer Videokonferenzeinheit,
einem transportierbaren bzw. tragbaren Informationsendgerät, einem digitalen
Videodisksystem und einer digitalen Fernsehrundübertragungseinheit vorgesehen
ist. Im Einzelnen betrifft die Erfindung ein System zum Komprimieren
und Codieren von Bilddaten in eine geringere Menge von Daten. Die
Erfindung betrifft insbesondere ein Bewegtbild-Decodiersystem, das
eine große Fehlerwiderstandsfähigkeit
hat, selbst wenn die Codierbilddaten mittels eines Mediums bzw.
Trägers übertragen/gespeichert
werden, das bzw. der leicht Fehler erzeugt, wie etwa ein Funkkanal,
und das das Bewegtbild in guter Qualität übertragen/speichern kann.
-
Die
Erfindung betrifft allgemein ein Decodierungssystem mit variabler
Wortlänge.
-
In
den zurückliegenden
Jahren sind als Technik zur Komprimierung und zur Codierung von
Bilddaten in eine geringere Menge von Daten zum effizienten Übertragen
und Speichern der Bilddaten verschiedene Verfahren entwickelt und
vorgeschlagen worden, wie etwa die Bewegungskompensation, die diskrete
Konsinustransformation, die Unterbandcodierung (subband coding),
die Pyramidencodierung und die Kombination davon. Insbesondere ist
als internationales Standardverfahren zum Komprimieren und Codieren
eines Bewegtbildes "ISO-MPEG1, MPEG2,
ITU-T·H.
261, H. 262" standardisiert.
Alle diese sind in Verfahren beinhaltet, die eine diskrete Kosinustransformationscodierung
mit bewegungskompensierter adaptiver Prädiktion verwenden, die im Detail
in "International
Standard of Multimedia Coding" (von
Hiroshi Yasuda, veröffentlicht
durch Maruzen, Juni 1991) (Literatur 1) usw. beschrieben sind. Der
Ausdruck "MPEG" bedeutet "Moving Picture Experts
Group", die einer
Organisation entspricht, die die Standardisierungsarbeit eines Codierverfahrens zum
Speichern eines Farbbewegungsbildes bearbeitet. Der Ausdruck "MPEG" wird ebenso als
der Standardisierungsname eines Codierverfahrens verwendet, dessen
Spezifikation durch die Organisation "MPEG" bestimmt
worden ist.
-
Als
ein Beispiel von konventionellen Bewegtbild-Codiersystemen zeigt
das Blockschaltbild in 1(a) ein Codiersystem,
das die diskrete Kosinustransformation mit adaptiver Bewegungskompensationsprädiktion
verwendet. Zunächst
werden einem Codiersystem eingespeiste Bilddaten 331 in
Bereiche unterteilt, die durch eine Bereichsunterteileinheit 301 definiert
sind. Danach werden gemäß der Darstellung
von 2(a) die Codierungen in einer
Blockreihenfolge von dem obersten linken Bereich zu dem untersten
linken Bereich ausgeführt
und wird gemäß der Darstellung
von 2(b) eine kontinuierliche Codefolge
in einem Rahmensynchronisationssignal konfiguriert. In einem Codierer
wird zunächst
die adapitive Bewegungskompensationsprädiktion ausgeführt. In 1(a) erfaßt ein Generator eines adaptiven
Bewegungskompensationsprädiktionssignals
einen Bewegungsvektor zwischen einem Eingangsbild und einem Bild,
das in einem Rahmenspeicher 305 gespeichert worden ist
und codiert und lokal decodiert worden ist, und erzeugt ein adaptives
Bewegungskompensationsprädiktionssignal.
Danach wird aus den Intrarahmencodierungen (ein Prädiktionssignal
= 0), bei denen die Bewegungskompensationsprädiktion und das Eingangssignal
in der Codierung, wie sie sind, gesendet werden, ein für die Codierung geeigneter
Prädiktionsmodus
ausgewählt
und das entsprechende Prädiktionssignal 333 ausgegeben.
-
In
einer Subtrahiereinheit 306 wird das ausgewählte Prädiktionssignal 333 von
dem Eingangssignal zum Ausgeben eines Prädiktionsrestsignals 334 subtrahiert.
Bezüglich
jedem Block einer vorbestimmten Größe wird die diskrete Kosinustransformation
(DCT) des Prädiktionsrestsignals 334 mittels einer
diskreten Kosinustransformationseinheit 307 ausgeführt und
wird ihre Quantisierung mittels einer Quantiziereinheit 308 ausgeführt. Die
Ausgabe der Quantiziereinheit 308 wird in zwei Abschnitte
unterteilt, eine davon wird mit dem Bewegungsvektor mittels eines
Multiplexers 309 gemultiplext, um ausgegeben zu werden,
und der andere davon wird invers quantiziert mittels einer inversen
Quantiziereinheit 312 und die inverse bzw. umgekehrte diskrete
Kosinustransformationseinheit (inverse DCT) davon wird durch eine
Inverse-Diskrete-Konsinustransformationseinheit 313 ausgeführt. Die
Ausgabe der Inverse-Diskrete-Konsinustransformationseinheit 313 wird
zu dem adaptiven Prädiktionssignal 333 mittels einer
Addiereinheit 314 addiert, um in dem Rahmenspeicher 305 aufgezeichnet
zu werden.
-
Bei
einem derartigen konventionellen Bewegtbildcodiersystem bestehen
die folgenden Probleme: Zunächst
bestehen die Probleme darin, dass, falls ein Fehler bei einem Abschnitt
eines Codes mit variabler Wortlänge
auftritt, ein Außertrittfallen
der Codierung mit variabler Wortlänge erzeugt wird, und dass,
selbst wenn die nachfolgenden Daten korrekt empfangen werden, sie
in einen fehlerhaften Wert decodiert werden. Folglich beeinflußt der Fehler
in diesem Abschnitt die nachfolgende Decodierung, die mit einer
großen
Verschlechterung der Bildqualität
in Bezug steht. Aus diesem Grund werden bei einem konventionellen
Verfahren, falls ein Fehler erfasst wird, die Daten nicht berücksichtigt,
bis das Rahmensynchronisationssignal (PSC) des nächsten Rahmens empfangen wird.
Wird jedoch eine derartige Verarbeitung ausgeführt, wird die Bildqualität stark verschlechtert,
da die Datenmenge im Vergleich zu der natürlichen Datenmenge stark verringert
wird.
-
Als
ein Verfahren zum Lösen
derartiger Probleme haben Nakamura und Nakai ein hocheffizientes
Bewegtbild-Codierverfahren, das die Fehlerwiderstandsfähigkeit
berücksichtigt,
in dem Picture Coding Symposium 1994 (PCSJ94) vorgeschlagen (vgl. Literatur
2: "Moving Picture
High-Efficient Coding Method
Considering Error Resistance" von
Matsui und Nakai, Picture Coding Symposium 1994, 1-1). Obwohl die
Bewegtbildcodierung einen Code mit variabler Wortlänge verwendet,
besteht der Nachteil, dass bei dem Code mit variabler Wortlänge das
Außertrittfallen
auftritt, falls ein Fehler darin auftritt. Der Code mit variabler
Wortlänge
ist jedoch ebenso dadurch gekennzeichnet, dass, selbst wenn das
Außertrittfallen
in Folge von Fehlern auftritt, er decodiert wird, wie er ist, so
dass die Pause zwischen Codierungen automatisch mit der korrekten
Pause übereinstimmt,
so dass seine Synchronisation wiederhergestellt wird. Selbst wenn
der Synchronismus wiederhergestellt wird, ist es unmöglich, einen
Bereich zu identifizieren, der den Daten entspricht, so dass die Daten
nach einer Synchronisationswiederherstellung nicht wieder verwendet
werden können.
Das vorstehende Verfahren ist dadurch gekennzeichnet, dass das Codierungsserienbeschreibende
Verfahren von der konventionellen Anordnung der Bereiche zu der Anordnung
einer Vielzahl von Einheiten von Bereichen in der hinteren Prädiktionsrestcodierungsfolge geändert wird,
nachdem eine Codierung mit variabler Wortlänge in die Einheiten von Bereichen
gemäß den Inhalten
von Daten unterteilt ist, wie es in 1(b) gezeigt
ist, so dass die selbst synchronisierende Heilung der Codierung
mit variabler Wortlänge
verwendet werden kann. In diesem Verfahren wird, selbst wenn ein
Fehler auftritt, die Decodierung aufgeführt, wie sie ist, bis das Rahmensynchronisationssignal des
nächsten
Rahmens empfangen wird, so dass es möglich ist, die Kopfdaten, die
in dem Präfixabschnitt decodiert
worden sind, zusammen mit dem deco dierten Wert des Reduktionsrestsignals
in der Reihenfolge von dem Suffix zu verwenden, so dass die Menge verfügbarer Daten
ansteigt.
-
Bei
diesem Verfahren bestehen jedoch die nachstehenden Probleme. Bei
einem Kanal mit einer hohen Fehlerrate, bei dem eine Vielzahl von
Fehlern in Daten eines Rahmens vorhanden sind, verringern sich die
verfügbaren
Daten. Verringern sich die decodierbaren Bereiche, werden die Bereiche
mit einer hohen Wahrscheinlichkeit zur Decodierung an einen bestimmten
Bereich (dem oberen Abschnitt eines Bildschirms) unabhängig von
der Charakteristik des Bildes konzentriert. D.h., dass nur unbedeutende
Bereiche, wie etwa der Hintergrund, ausgespart werden und es uneffizient
ist, da bedeutende Bereiche im Zentrum des Bildschirms vorhanden
sind, wenn die gewöhnliche
Verwendung betrachtet wird. Wenn die Bereiche, die nicht decodiert
werden konnten, auf der Grundlage der Bereiche vorhergesagt werden,
die decodiert werden konnten, muss der gesamte Bildschirm auf der
Grundlage lokal konzentrierter Bereiche vorhergesagt werden, so
dass es schwierig ist, die Bereiche vorherzusagen, die nicht decodiert
werden können.
Tritt ein Fehler in der ersten Hälfte
der Kopfdaten auf, kann, selbst wenn alle die hinteren Prädiktionsrestdaten
decodiert werden können,
nur der Bereich decodiert werden, in dem die erste Hälfte der
Kopfdaten decodiert werden konnte.. D.h., da die hinteren PrädiktionsPrädiktionsdaten
auf der ersten Hälfte
der Kopfdaten beruhen, sind die Daten, die decodiert werden konnten,
nicht nötig.
-
1(c) zeigt ein Blockschaltbild zur Veranschaulichung
des prinzipiellen Aufbaus eines konventionellen Bewegtbild-Decodiersystems.
Das System ist derart ausgeführt,
dass eine Decodierung eines Bilddatensignals durch eine Betriebsweise
erlangt wird, die umgekehrt zu der von 1(a) ist.
-
3 zeigt
eine Darstellung zur Veranschaulichung eines Beispiels von konventionellen Abtastreihenfolgen
von DCT-Koeffizienten. Die Abtastung wurde in Zick-Zack-Form als
Verlauf dieser Fig. ausgeführt.
-
4 zeigt
ein Beispiel von konventionellen Codierverfahren zum Einfügen von
Synchronisationssignalen in Rahmen. Wird die Codierung der Bereiche
gemäß der Darstellung
von 4(a) ausgeführt, wird ein Synchronisationssignal
bei jeder Blockzeileneinheit (n ≥ 1)
gemäß der Darstellung
von 4(b) eingefügt, so dass die Gelegenheit
für eine Synchronisationsheilung
ansteigt.
-
Wie
vorstehend angeführt,
besteht bei konventionellen Bewegtbild-Codier- und/oder Decodiersystemen
ein Nachteil darin, dass, falls ein Fehler in einem Code mit variabler
Wortlänge
auftritt, die Qualität
des decodierten Bildes in Folge des Außertrittfallens des Signals
mit variabler Wortlänge
stark verringert wird. Es besteht ebenso der Nachteil, dass, falls nur
ein Teil der Bilddaten in Folge des Fehlers decodiert werden kann,
die Wahrscheinlichkeit der Decodierung jeder der Bereiche auf einem
bestimmten Abschnitt konzentriert wird, was ineffizient ist.
-
Dabei
ist ein Code mit variabler Wortlänge eine
Reihe von Codes, bei welchen auf der Grundlage der Häufigkeit
des Auftretens von Symbolen ein Code mit kurzer Wortlänge einem
Symbol, dass häufig
auftritt, zugeordnet wird und ein Code mit einer großen Länge einem
Symbol zugeordnet wird, das selten auftritt, um die mittlere Codelänge zu verkürzen. Wenn
daher der Code mit variabler Wortlänge verwendet wird, kann die
Datenmenge im Vergleich zu den Daten vor der Codierung stark komprimiert werden.
Als Verfahren zum Konfigurieren eines derartigen Codes mit variabler
Wortlänge
ist der Huffmann-Algorithmus, der der geeignetste für eine speicherlose
Quelle ist, bekannt.
-
Bei
dem Code mit variabler Wortlänge
besteht ein allgemeines Problem darin, dass, wenn ein Fehler bei
der Codierung von Daten in Folge eines Kanalfehlers oder aus weiteren
Gründen
in die Codierdaten eingemischt wird, die Daten nach dem Einmischen
des Fehlers übertragen
werden, so dass die Daten durch ein Decodiersystem nicht korrekt
decodiert werden können.
Aus diesem Grund werden allgemein, wenn ein Fehler auftreten kann,
Synchronisiercode an regelmäßigen Intervallen
zum Verhindern der Ausbreitung des Fehlers eingefügt. Den Synchronisiercodes
wird ein Bit-Muster zugewiesen, das durch Kombination von Codes
mit variabler Wortlänge
nicht auftritt. Gemäß diesem
Verfahren kann, selbst wenn ein Fehler bei der Codierung von Daten auftritt,
so dass die Decodierung nicht ausgeführt werden konnte, die Ausbreitung
des Fehlers zum korrekten Decodieren der Daten durch Suchen des nächsten Synchronisiercodes
verhindert werden. Falls jedoch derartige Synchronisiercode verwendet werden,
ist es unmöglich,
die Codierdaten zwischen der Stelle, an welcher ein Fehler auftritt,
so dass eine korrekte Decodierung nicht möglich ist, und der Stelle zu
Decodieren, an der der nächste
Synchronisiercode gesucht wird, wie es in 33(a) gezeigt
ist.
-
Es
ist daher ein Verfahren zum Ändern
der Konfiguration eines Codes mit variabler Wortlänge von
einer gewöhnlichen
Konfiguration, wie sie in
34 gezeigt
ist, in eine weitere Konfiguration, wie sie in
35 gezeigt ist, bekannt, so dass er in der üblichen
Vorwärtsrichtung
und der Rückwärtsrichtung
decodiert werden kann. Darüber
hinaus kann ein derartiger Code für eine Rückwärtswiedergabe in einem Speichermedium
wie etwa einem Plattenspeicher, der Codierdaten speichert, verwendet
werden, da die Codierdaten ebenso in der Rückwärtsrichtung gelesen werden
können.
Ein derartiger Code mit variabler Wortlänge, der in der Vorwärtsrichtung
als auch in der Rückwärtsrichtung
decodiert werden kann, wird nachstehend als "reversibler Code" bezeichnet. Ein Beispiel von reversiblen
Codes ist in der
japanischen Patentoffenlegungsschrift
Nr. 530027 mit dem Titel "Reversible and Variable-Length Coding
Method" offenbart.
Der reversible Code ist ein Code mit variabler Wortlänge, der
in der Rückwärtsrichtung
und nicht nur in der Vorwärtsrichtung
decodiert werden kann, indem Bits dem Suffix von Codeworten des
Huffmann-Code hinzugefügt werden,
der ein Code mit variabler Wortlänge
ist, der in der Vorwärtsrichtung
decodierbar ist, wie es in
34 gezeigt
ist, unter der Bedingung, dass die jeweiligen Codeworte nicht mit
dem Suffix eines anderen Codewortes größerer Länge übereinstimmen, wie es in
35 gezeigt ist.
-
Da
jedoch bei dem reversiblen Code Bits dem Suffix von Codeworten eines
Codes mit variabler Wortlänge,
die nur in der Vorwärtsrichtung
decodiert werden können,
hinzugefügt
werden, wird die Zahl nutzloser Bits erhöht, so dass die mittlere Codelänge erhöht wird.
Folglich wird im Vergleich zu einem Code mit variabler Wortlänge, der
nur in der Vorwärtsrichtung
decodiert werden kann, die Codiereffizienz stark verringert.
-
Ein
weiteres Problem besteht darin, das ein konventioneller reversibler
Code nicht praktikabel ist, da die Speicherkapazität, die für ein Codiersystem und/oder
Decodiersystem mit variabler Wortlänge notwendig ist, erhöht wird,
wenn die Zahl der Quellsymbole groß ist. Ein Beispiel für den Fall,
dass die Zahl der Quellsymbole groß ist, ist die Codierung von DCT-Koeffizienten,
die häufig
für die
Bilddatencodierung eines Bewegtbildes oder eines Stehbildes verwendet
werden. Bei der Bilddatencodierung wird gewöhnlich eine 8×8 DCT (diskrete
Kosinustransformierung) ausgeführt
und wird dann die lineare Quantizierung von 8 Bits bezüglich orthogonal
transformierten Koeffizienten, genannt DCT-Koeffizienten ausgeführt, die
auf diese Weise erlangt werden. Danach wird bezüglich den quantizierten DCT-Koeffizienten
die Zick-Zack-Abtastung, die von ei nem niedrigen Bereich startet,
ausgeführt
und wird die Codierung mit variabler Wortlänge als ein Satz der Koeffizienten
eines Null-Laufes (zero-run) und von Nicht-Null (not-zero) ausgeführt.
-
Beispielsweise
in der ITU-T Entwurfempfehlung H. 263 (1995) liegt der Quantizierunsindexwert zwischen
-127 und +127 (da der Indexwert 0 im Lauf ist, ist die Indexzahl
253), ist das Maximum der Null-Lauf-Zahl 63 und erfolgt eine Codierung
für die Unterscheidung,
ob es sich bei dem letzten DCT-Koeffizienten des Blocks um einen
Nicht-Null-Koeffizient handelt. Aus diesem Grund ist die Zahl der
Quellsymbole sehr groß,
d.h. 253 × 64 × 2 = 32384.
Daher wird in der H. 263, obwohl der DCT-Koeffizient, der eine große Auftrittswahrscheinlichkeit
hat, durch den Code mit variabler Wortlänge codiert wird, der DCT-Koeffizient
mit einer geringen Auftrittswahrscheinlichkeit durch einen Code
mit fixer Wortlänge von
insgesamt 15 Bits codiert, der einen Code mit einem Bit als Code,
der die Unterscheidung repräsentiert,
ob es sich um den letzten Nicht-Null-Koeffizienten des Blocks handelt,
einen Code von 6 Bits für
einen Null-Lauf und einen Code von 8 Bits für einen Quantizierungsindex
enthält,
und es wird danach ein Code, der als Escape-Code bezeichnet wird,
dem Präfix
des Codes mit fester Wortlänge
hinzugefügt.
-
Falls
Codeworttabellen alle die Codeworte aufweisen, kann die Codierung
und/oder Decodierung ebenso ausgeführt werden. Da jedoch gemäß der vorstehenden
Codekonfiguration der Code mit fixer Wortlänge von 15 Bits unabhängig von
dem Code mit variabler Wortlänge
codiert und/oder decodiert werden kann, können nur DCT-Koeffizienten
mit einer hohen Auftrittswahrscheinlichkeit und eine Codeworttabelle
mit Escape-Coden vorbereitet werden. Daher kann die Codeworttabelle
von Coden mit variabler Wortlänge
zur Verringerung der Speicherkapazität entfallen.
-
Wie
vorstehend angeführt
ist es jedoch bei konventionellen reversiblen Coden notwendig, Bits dem
Suffix der Codeworte eines Codes mit variabler Wortlänge, der
nur in der Vorwärtsrichtung
decodiert werden kann, hinzuzufügen,
so dass der Escape-Code nicht hinzugefügt werden kann. Daher ist es
notwendig, Codeworte vorzubereiten, die allen den Quellsymbolen
entsprechen, selbst wenn die Zahl der Quellsymbole groß ist, so
dass die Speicherkapazität
immens wird.
-
Wie
vorstehend angeführt
werden die konventionellen reversiblen Code (d.h. die Code mit variabler
Wortlänge,
die in der Vorwärtsrichtung
und in der Rückwärtsrichtung
decodiert werden können), durch
Hinzufügen
von Bits zu dem Suffix der Codeworte eines Codes mit variabler Wortlänge, der
nur in der Vorwärtsrichtung
decodiert werden kann, konfiguriert. Daher besteht ein Nachteil
darin, dass die Zahl von nutzlosen Bitmustern erhöht wird,
so dass die mittlere Codelänge
erhöht
wird. Darüber
hinaus besteht ein Nachteil darin, dass ein Codiersystem und/oder
Decodiersystem mit variabler Wortlänge, das eine derartigen reversiblen
Code verwendet, nicht praktikabel ist, da es notwendig ist, eine
Codeworttabelle mit Codeworten in allen Fällen vorzubereiten, die allen
den Quellsymbolen entsprechen und da eine große Speicherkapazität erforderlich
ist, falls die Zahl der Quellsymbole wie bei der Bilddatencodierung
groß ist.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Es
ist daher eine Aufgabe der vorliegenden Erfindung, ein Bewegtbild-Decodierungssystem
bereitzustellen, wie es in den Ansprüchen definert ist, das eine
starke Störung
der Qualität
eines decodierten Bildes selbst dann begrenzen kann, falls ein Fehler
in irgendwelchen Abschnitten eines Codes auftritt, und dass effizient
den Code selbst dann decodieren kann, falls nur ein Teil des Codes
aufgrund des Fehlers decodiert werden kann.
-
Um
die zuvor erwähnte
und andere Aufgaben zu erreichen, weist ein Bewegtbild-Codierungssystem
auf: ein Codiermittel zum Codieren von eingegebenen Bilddaten; ein
Unterteilungsmittel zum Unterteilen eines Codestrings, der von dem
Codiermittel ausgegeben wird, in eine Mehrzahl von Codestrings;
und ein Codezeilenumordnungsmittel zum Ausgeben von einem aus der
Mehrzahl von Codestrings in einer Eingabereihenfolge, und zum Ausgeben
des anderen Codestrings in einer zu der Eingabereihenfolge umgekehrten
Reihenfolge nach dem Unterteilen des Codestrings in vorbestimmte
Einheiten. Bei diesem System wird der Codestring durch zwei Codestrings
ausgedrückt,
von denen einer in der Vorwärtsrichtung
von dem Präfix
zu dem Suffix angeordnet ist, und von denen der andere in der Rückwärtsrichtung
von dem Suffix zu dem Präfix
angeordnet ist, anders als bei dem herkömmlichen Codieren, bei dem
der Codestring durch einen Codestring ausgedrückt wird, so dass der Fehler,
der in einem der Datensätze
erzeugt wird, die anderen Daten nicht beeinflusst. Darum ist es
möglich,
zu verhindern, dass die Bildqualität durch Decodieren der Daten,
in denen irgendwelche Fehler nicht gefunden worden sind, stark gestört wird,
und es ist außerdem möglich, die
Daten, die aufgrund von Fehlern nicht decodiert worden sind, mittels
der Daten, die decodiert worden sind, vorherzusagen.
-
Ein
Bewegtbild-Codierungssystem weist auf: ein Bereichsunterteilungsmittel
zum Unterteilen eines Bilddatensignals, das eingegeben wird, für jeden Rahmen
(Frame) in eine Mehrzahl von Bereichen; ein Bereichsumordnungsmittel
zum Umordnen (Rearrangieren) von Bereichen bezüglich jedes der Bereiche, die
durch das Bereichsunterteilungsmittel unterteilt worden sind; und
ein Codiermittel zum Codieren der entsprechenden Bereiche, die durch
das Bereichsunterteilungsmittel unterteilt worden sind. Bei diesem
System sind, wenn der Codestring durch zwei Codestrings ausgedrückt wird,
anders als bei der herkömmlichen
Codierung, bei der der Codestring durch einen Codestring ausgedrückt wird,
deren Codierreihenfolgen voneinander derart unterschiedlich, dass
sie komplementär
zueinander sind. Darum ist es, selbst falls nur ein Teil der Daten
decodiert werden konnte, da Fehler in einer oder beiden Zeilen aufgetreten
sind, möglich,
die Wahrscheinlichkeit des Decodieren des gesamten Bildes (Screens)
oder von wichtigen Bereichen durch Kombinieren der beiden Datenätze zu erhöhen.
-
Ein
Bewegtbild-Decodiersystem weist auf: ein Eingabemittel zum Eingeben
eines ersten Codestrings, der in einer Reihenfolge von dem Präfix zu dem
Suffix angeordnet ist, und eines zweiten Codestrings, der in einer
Reihenfolge von dem Suffix zu dem Präfix in der Rückwärtsrichtung
angeordnet ist; und ein Decodiermittel zum Decodieren des ersten Codestrings
in einer Reihenfolge von dem Präfix
m dem Suffix und zum Decodieren des zweiten Codestrings in einer
Reihenfolge von dem Suffix zu dem Präfix in der Rückwärtsrichtung.
In diesem System werden der erste Codestring, der in der Vorwärtsrichtung
von dem Präfix
zu dem Suffix angeordnet ist, und die zweite Zeile, die in der Rückwärtsrichtung von
dem Suffix zu dem Präfix
angeordnet ist, decodiert. Darum kann, selbst falls ein Fehler in
einer der Zeilen auftritt, das Decodieren ohne Beeinflussen der anderen
Zeile ausgeführt
werden.
-
Ein
Bewegtbild-Decodiersystem weist auf: ein Eingabemittel zum Eingeben
des Codestrings, der in eine Mehrzahl von Bereichen bezüglich jedes der
Rahmen unterteilt worden ist; ein Decodiermittel zum Decodieren
des Codestrings von jedem der Bereiche, der von dem Eingabemittel
geliefert wird, und ein Umordnungsmittel zum Umordnen der Daten
jedes der Bereiche, die von dem Decodiermittel geliefert werden,
in der korrekten Reihenfolge. In diesem System sind in dem Codestring
die Bereiche in der Reihenfolge der Wichtigkeit in dem umgeordneten Bild
angeordnet. Darum, selbst falls ein Fehler in einem Teil der Daten
auftritt, ist der Bereich, der der codiert werden konnte, ein wichtiger
Abschnitt, so dass es möglich
ist, das Fehlen des wichtigen Abschnitts des Bildes im Vergleich
zu dem herkömmlichen
System zu begrenzen.
-
Bin
Bewegtbild-Decodiersystem weist ein Detektionsmittel zum Detektieren
eines Fehlers bezüglich
des ersten und zweiten Codestrings bzw. der/des codierten Daten/Signals
auf, bei dem das Decodieren nur unter Verwendung der Daten ausgeführt wird,
in denen kein Fehler durch das Fehlerdetektionsmittel detektiert
worden ist. In diesem System wird die Detektion eines Fehlers ausgeführt, wenn der
unterteilte Codestring decodiert wird. Darum ist es möglich, ein
reproduziertes Bild mittels nur der korrekt decodierten Daten zu
bilden. Es ist auch möglich,
die Daten, die nicht decodiert werden konnten, mittels der korrekt
detektierten Daten vorherzusagen und zu ergänzen.
-
Ein
Bewegtbild-Decodiersystem weist ein Fehlerdetektionsmittel zum Detektieren
eines Fehlers bezüglich
des Codestrings und der/des decodierten Daten/Signals; und ein Vorhersagemittel
zum Vorhersagen des Bereichs, der nicht decodiert werden konnte,
auf der Basis des decodierten Bereichs, wenn ein Fehler mittels
des Fehlerdetektionssystems detektiert worden ist, auf. Bei diesem
System können die
Bereiche mit einer höheren
Wahrscheinlichkeit der Decodierung in beiden Teilen des in zwei
Teile geteilten Codestrings die Bereiche mit einer niedrigeren Wahrscheinlichkeit
der Decodierung in den beiden Teilen des in zwei Teile geteilten
Codestrings ergänzen.
Darum ist es möglich,
die Daten des Bereichs, dem Daten fehlen, vorherzusagen und zu ergänzen.
-
Ein
Bewegtbild-Codiersystem weist ein Änderungsmittel zum Ändern der
Reihenfolge der Umordnung der Bereiche durch das Bereichsumordnungsmittel;
und ein Codiermittel zum Codieren der Daten, die repräsentativ
für die
Reihenfolge der Umordnung sind, auf. Bei diesem System kann die
Codierreihenfolge der Bereiche entsprechend des Bildes geändert werden.
Darum ist es, selbst falls die Daten aufgrund von Fehlern nicht
vollständig
decodiert werden konnten, möglich,
die Wahrscheinlichkeit des Decodieren mindestens des wichtigen Abschnitts
zu erhöhen.
-
Ein
Bewegtbild-Decodierungssystem weist Mittel zum Umordnen und Decodieren
von Bereichen entsprechend den Bereichsumordnungsdaten, die in dem
Codestring enthalten sind, auf. Bei diesem System wird der Codestring,
dessen Codierungsreichenfolge entsprechend des Bildes geändert worden
ist, decodiert. Darum ist es, selbst falls die Daten aufgrund von
Fehlern nicht vollständig
decodiert werden konnten, möglich,
die Wahrscheinlichkeit des Decodieren bezüglich des wichtigen Abschnitts
der codierten Daten zu erhöhen.
-
Es
ist eine andere Aufgabe der vorliegenden Erfindung, ein praktikables
Codierungs- und/oder Decodierungssystem mit variabler Wortlänge, das
in der Vorwärtsrichtung
und in der Rückwärtsrichtung decodiert
werden kann, anzugeben.
-
Im
Einzelnen ist es Aufgabe der Erfindung, ein Codierungs- und/oder
Decodierungssystem mit variabler Wortlänge bereitzustellen, das in
der Vorwärtsrichtung
und in der Rückwärtstrichtung
decodiert werden kann und bei dem die Zahl der nutzlosen Bitmuster
gering ist und die Codiereffizenz hoch ist.
-
Eine
weitere Aufgabe der Erfindung ist die Bereitstellung eines Decodierungssystems
und/oder eines Decodierungssystems mit variabler Wortlänge, das
in der Vorwärtsrichtung
und in der Rückwärtsrichtung
decodiert werden kann und das eine große Speicherkapazität nicht
benötigt,
selbst wenn die Zahl der Quellsymbole groß ist.
-
Um
die vorstehenden und anderen Aufgaben zu erreichen, weist ein Codierungssystem
mit variabler Wortlänge,
das Codeworte einer Mehrzahl von Quellsymbolen zuordnet, wobei die
Codeworte eine Codelänge
entsprechend der Wahrscheinlichkeit der Quellsymbole aufweisen,
und das als codierte Daten die Codeworte, die den eingegebenen Quellsymbolen
entsprechen, ausgibt, auf: eine Codeworttabelle zum Speichern einer
Mehrzahl von Codeworten, die den Quellsymbolen entsprechen sollen,
wobei die Codeworte so konfiguriert sind, dass sie die Pause zwischen
Codes durch die Gewichte der Codeworte bestimmen können; und
ein Codiermittel zum Auswählen
eines Codewortes, das dem eingegebenen Quellsymbol entspricht, aus
der Codeworttabelle und zum Ausgeben des ausgewählten Codewortes als codierte
Daten.
-
Der
Begriff „Gewicht
eines Codewortes" entspricht
einer Hamming-Distanz von dem Minimal- oder Maximalwert des Codeworts.
Wenn das Codewort ein Binarcode ist, ist der Minimalwert des Codewortes
gleich „0" in allen Fällen und
der Maximalwert des Codewortes ist gleich „1" in allen Fällen, so dass das Gewicht des
Codewortes der Zahl „1" oder „0" entspricht. Die
Position, bei der das Gewicht des Codeworts ein vorbestimmter Wert
ist, zeigt die Pause zwischen den Codes in dem Code variabler Länge an.
-
Bezüglich der
Mehrzahl von Codeworten, die in der Codeworttabelle gespeichert
sind, ist es unnötig,
dass ein Code mit fester Länge,
d.h. eine konstante Länge
von Code, zu mindestens dem Präfix oder
Suffix desselben addiert wird.
-
In
dem Codierungssystem mit variabler Länge entsprechend des neunten
Aspekts der vorliegenden Erfindung wird ein Code variabler Länge konfiguriert
durch Codeworte, bei dem die Pause zwischen des Codes, d.h. die
Codelänge,
bestimmt wird durch das Gewicht des Codewortes, was ein Wert ist,
der unabhängig
von der Reihenfolge des Codewortes ist. Darum ist dieser Code variabler
Länge ein
reversibler Code, der in entweder der Vorwärtsrichtung oder der Rückwärtsrichtung
decodiert werden kann, da die Pause zwischen den Codes in entweder
der Vorwärtsrichtung
oder der Rückwärtsrichtung
gesucht werden kann.
-
Zusätzlich wird,
anders als bei einem Code, bei dem Bits zu dem Suffix eines Codes
variabler Länger
addiert werden, der nur in der Vorwärtsrichtung decodierbar ist,
wie ein reversibler Code, der in der zuvor erwähnten japanischen Patentoffenlegungsschrift
offenbart ist, ein reversibler Code ursprünglich ohne das Hinzufügen von überschüssigen Bits
konfiguriert, so dass es möglich
ist, einen Code variabler Länge
zu erhalten, bei dem die Anzahl der nutzlosen Bitmuster klein ist
und bei dem die Codierungseffizienz groß ist.
-
Darüber hinaus
kann ein Code variabler Länge
in Übereinstimmung
mit der Wahrscheinlichkeit der Erscheinung von Quellsymbolen erhalten
werden durch Auswählen
einer Mehrzahl von Code konfigurierenden Verfahren und eines Codes
mit der minimalen Durchschnittscodelänge aus Parametern auf der
Basis der Wahrscheinlichkeit der Quellsymbole.
-
Ein
Decodierungssystem variabler Länge, das
in der Vorwärtsrichtung
und der Rückwärtsrichtung
decodiert werden kann und das einen Code variabler Länge decodiert,
in den Synchronisierungscodes bei regelmäßigen Intervallen eingesetzt
sind, weist auf: ein Vorwärtsdecodiermittel
zum Decodieren eines Codes variabler Länge in der Vorwärtsrichtung
und Detektieren eines Fehlers eines Codewortes des Codes variabler
Länge;
ein Rückwärtsdecodiermittel
zum Decodieren des Codes variabler Länge in der Rückwärtsrichtung
und zum Detektieren eines Fehlers eines Codeworts des Codes variabler Länge; und
ein Decodierwertentscheidungsmittel zum Entscheiden eines decodierten
Wertes auf der Basis der decodierten Ergebnisse durch das Vorwärtsdecodiermittel
und das Rückwärtsdecodiermittel,
bei dem der decodierte Wert an der Position, in der der Fehler decodiert
wird entsprechend der Ergebnisse der Detektion des Fehlers durch
das Vorwärtsdecodiermittel
und das Rückwärtsdecodiermittel.
-
Insbesondere
bei dem Decodierwertentscheidungsmittel, (a) wenn Fehler sowohl
durch das Vorwärtsdecodiermittel
als auch das Rückwärtsdecodiermittel
detektiert worden sind und wenn die detektierten Positionen der
Fehler einander nicht passiert haben, wird nur das decodierte Ergebnis,
bei dem kein Fehler detektiert worden ist, als der decodierte Wert
verwendet, (b) wenn Fehler durch sowohl das Vorwärtsdecodiermittel als auch
das Rückwärtsdecodiermittel
detektiert worden sind und wenn die detektieren Positionen der Fehler
einander passiert haben, wird das decodierte Ergebnis, bei dem kein
Fehler durch sowohl das Vorwärtsdecodiermittel
als auch das Rückwärtsdecodiermittel
detektiert worden ist, als der decodierte Wert verwendet, (c) wenn
ein Fehler durch das Vorwärtsdecodiermittel
oder das Rückwärtsdecodiermittel
detektiert worden ist, wird der decodierte Wert bezüglich des
Codewortes an der Position, an der der Fehler detektiert worden
ist, aufgegeben und der decodierte Wert in der Rückwärtsrichtung wird als der decodierte
Wert bezüglich
des nachfolgenden Codewortes verwendet, und (d) wenn Fehler bezüglich des
selben Codewortes durch das Vorwärtsdecodiermittel
und das Rückwärtsdecodiermittel
detektiert worden sind, wird der detektierte Wert bezüglich des
Codewortes an der Position, an der ein Fehler detektiert worden
ist, aufgegeben und das decodierte Ergebnis in der Rückwärtsrichtung wird
als der decodierte Wert bezüglich
des nachfolgenden Codewortes verwendet.
-
Bei
diesem Decodierungssystem variabler Länge ist es, wenn der decodierte
Wert auf der Basis der decodierten Ergebnisse durch das Vorwärtsdecodiermittel
und das Rückwärtsdecodiermittel,
die eine Funktion zum Detektieren von Fehlern in Codeworten des
Codes variabler Länge
verwenden, entschieden wird, möglich,
den reversiblen Code, der von dem zuvor erwähnten Codiersystem variabler
Länge ausgegeben
worden ist, gegenüber
den Fehlern wie Kanalfehlern, durch Entscheiden des decodierten Wertes
an der Position, an der die Fehler detektiert worden sind, entsprechend
der detektierten Ergebnisse der Fehler durch das Vorwärtsdecodiermittel und
das Rückwärtsdecodiermittel
effektiv zu decodieren.
-
Ein
Codiersystem variabler Länge,
das eine Mehrzahl von Quellsymbolen zuordnet, wobei die Codeworte
eine Codelänge
aufweisen, die der Wahrscheinlichkeit des Quellsymbols entspricht,
und das ein Codewort, dass dem eingegebenen Quellsymbol entspricht,
als codierte Daten ausgibt, weist auf: eine Codeworttabelle zum
Speichern einer Mehrzahl von Codeworten, die in der Vorwärtsrichtung
und der Rückwärtsrichtung
decodiert werden können,
damit sie unterschiedlichen Quellsymbolen entsprechen; und ein Codiermittel
zum Auswählen
eines Codewortes, das dem eingegebenen Quellsymbol entspricht, aus
der Codeworttabelle, wenn das Codewort, dass dem eingegebenen Quellsymbol
entspricht, in der Codeworttabelle gespeichert worden ist, und zum Ausgeben
des ausgewählten
Codeworts als codierte Daten, und zum Ausgeben eines Codewortes,
bei dem spezifische Codes (Escape-Codes), die in der Vorwärtsrichtung
und der Rückwärtsrichtung
codiert werden können,
dem Präfix
und Suffix eines Codes fester Länge
hinzugefügt
sind, als codierte Daten, wenn das Codewort, das dem eingegebenen
Quellsymbol entspricht, nicht in der Codeworttabelle gespeichert
war.
-
Ein
Decodiersystem variabler Länge,
das an ein Codiersystem variabler Länge entsprechend der elften
Ausführungsform
der vorliegenden Erfindung angepasst werden kann und das codierte
Daten von Codes variabler Länge,
die in der Vorwärtsrichtung und
der Rückwärtsrichtung
decodierbar sind, decodiert, weist auf: ein Vorwärtsdecodiermittel zum Decodieren
eines Codes variabler Länge
in der Vorwärtsrichtung;
ein Rückwärtsdecodiermittel
zum Decodieren eines Codes variabler Länge in der Rückwärtsrichtung;
und ein Decodiermittel für
einen Code mit fester Länge
zum Decodieren eines Codes mit fester Länge, bei dem, wenn spezifische
Codes (Escape-Codes), die repräsentativ
für das
Präfix
und das Suffix eines Codes mit fester Länge sind, decodiert worden
sind, wenn der Code variabler Länge
durch das Vorwärtsdecodiermittel
und das Rückwärtsdecodiermittel
decodiert wird, die nachfolgenden codierten Daten durch das Decodiermittel
für den
Code mit fester Länge
decodiert werden.
-
Bei
dem Codiersystem mit variabler Länge und
dem Decodiersystem mit variabler Länge entsprechend der elften
und zwölften
Aspekte der vorliegenden Erfindung ist es, z.B., möglich, ein
Quellsymbol mit einer niedrigen Wahrscheinlichkeit der Erscheinung
als einen Code mit fester Länge
zu codieren, dem ein Escape-Code hinzugefügt wird, und es ist möglich den
Codeabschnitt mit fester Länge
unabhängig
von einem reversiblen Code zu codieren und/oder zu decodieren, so
dass es möglich
ist, die maximale Codelänge
zu begrenzen und die Speicherkapazität zu vermindern, falls die
Anzahl der Quellsymbole, die eingegeben werden können, sich erhöht.
-
Ein
Decodiersystem mit variabler Länge,
das codierte Daten eines Codes variabler Länge, die in der Vorwärtsrichtung
und der Rückwärtsrichtung
decodierbar sind, decodiert. Bei diesem System wird die Codelänge eines
Codes variabler Länge
abgeleitet auf der Basis der Anzahl einer vorbestimmten „1" oder „0" des Codeworts, und
der Wert, der durch ein Pascal-Dreieck bestimmt wird, wird dann
zu dem Wert einer Verbindung hinzugefügt. Dann werden die Reihenfolgewerte
von verschiedenen Codeworten der selben Codelänge mittels eines gerichteten
Graphen abgeleitet, bei dem die Pfeile von jeder Verbindung zu nächsten Verbindung „1" und „0" der Codeworte entsprechen,
und ein decodierter Wert wird mittels des Reihenfolgewertes und
des gerichteten Graphen berechnet.
-
Bei
diesem Decodiersystem variabler Länge ist es möglich, die
Pause zwischen den Codes durch die Anzahl der Gewichte der Codeworte
zu bestimmen, d.h., die Codelänge, ähnlich zu
dem Codiersystem variabler Länge
entsprechend der neunten Ausführungsform
der vorliegenden Erfindung. Zusätzlich verwendet
dieses System Codeworte variabler Länge, die die konfiguriert sind
durch Codeworte, die in der Vorwärtsrichtung
und der Rückwärtsrichtung
decodierbar sind, wobei der Wert, der durch ein Pascal-Dreieck bestimmt
wird, dem Wert einer Verbindung zugeordnet wird, und der decodierte
Wert wird berechnet durch den gerichteten Graphen (Decodiergraph),
bei dem die Pfeile von jeder Verbindung zu der nächsten Verbindung „1" und „0" der Codeworte entsprechen.
Darum ist es möglich,
den Code variabler Länge
mit einer kleinen Speicherkapazität zu decodieren, selbst falls
die Anzahl der Quellsymbole groß ist.
-
Ein
Codiersystem variabler Länge,
das einem orthogonalen Transformationskoeffizienten, der durch die
orthogonale Transformierte jedes Blocks mittels eines Bewegtbild-Codierers
erzeugt werden kann, ein Codewort, das eine Codelänge aufweist, die
der Wahrscheinlichkeit des orthogonalen Transformationskoezienten
entspricht, zuordnet und das das Codewort, das dem orthogonalen
Transformationskoeffizienten entspricht, der durch den Bewegtbild-Codierer
erzeugt worden ist, als codierte Daten ausgibt, weist auf: eine
erste Codeworttabelle, die für jeden
aus der Mehrzahl von Codiermodi des Bewegtbild-Codierers vorgesehen
ist, zum Speichern einer Mehrzahl von Codeworten, die in der Vorwärtsrichtung
und der Rückwärtsrichtung
decodierbar sind, so dass die Codeworte entsprechend dem orthogonalen Transformationskoeffizienten
des Blocks, der ein anderer als der letzte Block ist, entsprechen;
eine zweite Codeworttabelle, die für eine Mehrzahl von Codiermodi
des Bewegtbild-Codierers gemeinsam vorgesehen ist, zum Speichern
einer Mehrzahl von Codeworten, die in der Vorwärtsrichtung und der Rückwärtsrichtung
decodierbar sind, so dass die Codeworte entsprechend den orthogonalen
Transformationskoeffizienten des letzten Blocks entsprechen; und
ein Codiermittel zum Auswählen
eines Codewortes, dass dem orthogonalen Transformationskoeffizienten
entspricht, der durch den Bewegtbild-Codierer erzeugt worden ist,
aus den ersten und zweiten Codeworttabellen und zum Ausgeben des
ausgewählten Codeworts
als codierte Daten.
-
Ein
Decodiersystem variabler Länge,
das an das Codiersystem variabler Länge entsprechend der vierzehnten
Aspekt der vorliegenden Erfindung angepasst werden kann und bei
dem ein Bewegtbild-Decodierer codierte Daten decodiert, die in einen Code
variabler Länge
decodiert sind, der einen orthogonalen Transformationskoeffizienten,
der erzeugt worden ist durch die orthogonale Transformierte jeden
Blocks mittels eines Bewegtbild-Codierers, in der Vorwärtsrichtung
und der Rückwärtsrichtung
decodieren kann, weist auf: ein Vorwärtsdecodiermittel zum Decodieren
eines Codes variabler Länge
in der Vorwärtsrichtung;
und ein Rückwärtsdecodiermittel zum
Decodieren eines Codes variabler Länge in der Rückwärtsrichtung,
bei dem das Vorwärtsdecodiermittel
den Code variabler Länge
decodiert, wobei der letzte Block bestimmt wird auf der Basis der
Erscheinung eines Codeworts, das repräsentativ für den orthogonalen Transformationskoeffizienten
des letzten Blockes ist, und wenn das Rückwärtsdecodiermittel den Code
variabler Länge
decodiert, der Kopf des Blockes bestimmt wird durch das Codewort,
das repräsentativ
für den
letzten orthogonalen Koeffizienten des letzten Blockes ist.
-
Da
das Codierverfahren in einem Bewegtbild-Codierer/Decodierer eine
Syntax aufweist, ist es für
den Codierer/Decodierer erforderlich, dass er zum Decodieren eines
Codes variabler Länge
in beiden Richtungen in der Lage ist, und dass er ihn syntaktisch
in beiden Richtungen decodieren kann. Das Codiersystem variabler
Länge und
das Decodiersystem variabler Länge
entsprechend den vierzehnten und fünfzehnten Ausführungsformen
können
die zuvor erwähnten
Anforderungen jedoch erfüllen.
D.h., die Syntax in dem Bewegtbild-Codierer/Decodierer verspricht, dass
die codierten Daten in einer Hierarchie derart ausgebildet sind,
dass, z.B., die obere Hierarchie Modidaten aufweist, die repräsentativ
für die
codierten Modi, Bewegungsvektoren usw. sind, und dass die untere
Hierarchie orthogonale Transformationskoeffizienten wie DCT-Koeffizienten
enthält. Zusätzlich können entsprechend
der Syntax des Bewegtbild-Codierers/Decodierers, angenommen, dass die
Codiermodi in jedes der Blöcke
(Makroblock) bereits in der unteren Hierarchie durch das Decodieren der
oberen Hierarchie gefunden worden sind, die Decodierungen in beiden
Richtungen ausgeführt
werden, falls die Pause zwischen den Blöcken gesucht wird.
-
Bei
dem Codiersystem und/oder dem Decodiersystem variabler Länge entsprechend
der vierzehnten und fünfzehnten
Aspekte der vorliegenden Erfindung ist die erste Codeworttabelle,
die den orthogonalen Transformationskoeffizienten entspricht, die
andere als der letzte des Blockes sind, bezüglich jedes der Mehrzahl der
Codiermodi konfiguriert. Jedoch wird die zweite Codeworttabelle,
die dem orthogonalen Transformationskoeffizienten des Letzten der
Blöcke
entspricht, für
die entsprechenden Codiermodi gemeinsam benutzt, so dass es möglich ist, mit
der Änderung
der Codeworttabellen durch den Codiermodi Schritt zu halten und
die Pause zwischen den Blöcken
durch die Erscheinung des Codewortes, das repräsentativ für den letzten orthogonalen
Transformationskoeffizienten des letzten Blockes ist, zu finden,
so dass das Decodieren syntaktisch in beiden Richtungen sein kann.
-
In
unterschiedlichen Codiermodi, z.B. in dem Intramode und dem Intermode,
sind die erzeugten orthogonalen Transformationskoeffizienten unterschiedlich
in ihrer Häufigkeit
der Erscheinung, so dass es möglich
ist, die Codiereffizienz durch unabhängiges Bereitstellen der zweiten
Codeworttabelle zu erhöhen.
-
Kurzbeschreibung der Zeichnungen
-
Die
Erfindung wird aus der nachstehenden detaillierten Beschreibung
in Verbindung mit der angefügten
Zeichnung von den bevorzugten Ausführungsbeispielen der Erfindung
erläutert.
Die Zeichnung soll jedoch nicht eine Beschränkung der Erfindung auf ein
bestimmtes Ausführunsbeispiel
mit sich bringen, sondern lediglich der Erläuterung und dem Verständnis dienen.
-
Es
zeigen:
-
1(a) ein Blockschaltbild eines konventionellen
Bewegtbild-Codierungssystems;
-
1(b) eine Darstellung zum Veranschaulichung
einer Codefolge, die durch das konventionelle Bewegtbild-Codierungssystem
codiert ist;
-
1(c) ein Blockschaltbild zur Veranschaulichung
eines konventionellen Bewegtbild-Decodiersystems;
-
2 eine
Darstellung zur Veranschaulichung der Codierreihenfolge des konventionellen
Bewegtbild-Codiersystems;
-
3 eine
Darstellung zur Veranschaulichung eines Beispiels der konventionellen
Reihenfolge zum Abtasten von DCT-Koeffizienten;
-
4 eine
Ansicht zur Veranschaulichung eines Beispiels von konventionellen
Verfahren zum Einfügen
von Synchronisiersignalen;
-
5 ein
Blockschaltbild zur Veranschaulichung des Grundkonzepts eines Bewegtbild-Codiersystems gemäß einem
Ausführungsbeispiel
der Erfindung;
-
6 eine
Darstellung zur Veranschaulichung einer Codefolge, die durch das
Codierungssystem aus 5 ausgebildet ist;
-
7 ein
Blockschaltbild zur Veranschaulichung des ersten bevorzugten Ausführungsbeispiels eines
Bewegtbild-Codierungssystems;
-
8 eine
Darstellung zur Veranschaulichung eines Beispiels der Reihenfolge
zum Umordnen von Bereichen in einem Bewegtbild-Codierungssystem;
-
9 eine
Darstellung zur Veranschaulichung einer Codefolge, die durch ein
Bewegtbild-Codierungssystem codiert ist;
-
10 eine
Darstellung zur Veranschaulichung eines Beispiels der Reihenfolge
zum Umordnen von Bereichen in einem Bewegtbild-Codiersystem;
-
11 eine
Darstellung zur Veranschaulichung eines Beispiels der Reihenfolge
zum Umordnen von Bereichen in einem Bewegtbild-Codiersystems;
-
12 eine
Darstellung eines Beispiels der Reihenfolge zum Umordnen von Bereichen,
wenn der zentrale Bereich gemäß einem
Ausführungsbeispiel
der Erfindung festgelegt wird;
-
13 eine
Ansicht zur Veranschaulichung eines Verfahrens zum Anordnen einer
Codefolge, wenn ein Ausführungsbeispiel
der Erfindung auf die Code angewendet wird, die in beiden Richtung
decodiert werden können;
-
14 ein
Blockschaltbild des zweiten bevorzugten Ausführungsbeispiels eines Bewegtbild-Codiersystems;
-
15 eine
Ansicht zur Veranschaulichung des Unterschieds zwischen dem ersten
und dem zweiten bevorzugten Ausführungsbeispiel;
-
16 eine
Ansicht zur Veranschaulichung eines Beispiels der Reihenfolge zum
Abtasten von DCT-Koeffizienten gemäß einem Ausführungsbeispiel
der Erfindung;
-
17 eine
Ansicht zur Veranschaulichung eines Beispiels zum Teilen der Abtastung
von DCT-Koeffizienten in der Reihenfolge, die die Beziehung zwischen
der horizontalen und der vertikalen Richtung berücksichtigt;
-
18 ein
Blockschaltbild des bevorzugten Ausführungsbeispiels eines Bewegtbild-Decodiersystems gemäß der Erfindung;
-
19 eine
Ansicht des bevorzugten Ausführungsbeispiels
entsprechend der Hierachiecodierung;
-
20 eine
Ansicht des bevorzugten Ausführungsbeispiels
entsprechend der Hierachiecodierung;
-
21 eine
Ansicht zur Veranschaulichung eines Hierachiecodierungsverfahrens
und eines Beispiels von konventionellen Hierachiecodierungsverfahren;
-
22 eine
Ansicht des bevorzugten Ausführungsbeispiel
entsprechend der Hierachiecodierung;
-
23 eine
Ansicht zur Veranschaulichung des Auftretens von Fehlern in dem
bevorzugten Ausführungsbeispiel
entsprechend der Hierachiecodierung gemäß der Erfindung;
-
24 eine
Ansicht zur Veranschaulichung des bevorzugten Ausführungsbeispiels
der Anwendung der Hierachiecodierung;
-
25 eine
Ansicht zur Veranschaulichung von drei Codefolgen gemäß einem
Ausführungsbeispiel
der Erfindung;
-
26 eine
Ansicht zur Veranschaulichung einer Codefolge, wenn die Verzögerung einer
Verarbeitungsoperation gemäß einem
Ausführungsbeispiel
der Erfindung verringert werden kann;
-
27 eine
Ansicht zur Veranschaulichung, dass ein Verfahren zum Anordnen von
Bereichen in der Reihenfolge der Bedeutung auf ein Verfahren zum
Konfigurieren eines Rahmens durch eine Vielzahl von Synchronisationsblöcken gemäß einem Ausführungsbeispiel
der Erfindung angewendet wird;
-
28 eine Ansicht des bevorzugten Ausführungsbeispiels
einer Codefolge, die für
einen Code mit fixer Wortlänge
angewendet wird, gemäß der Erfindung;
-
29 eine Ansicht des weiteren bevorzugten Ausführunsbeispiels
einer Codefolge, die auf einen Code mit fixer Wortlänge angewendet
wird, gemäß der Erfindung;
-
30 eine Ansicht des bevorzugten Ausführungsbeispiels
einer Codefolge, die zusätzliche Daten
verwendet, gemäß der Erfindung;
-
31 eine Ansicht des bevorzugten Ausführungsbeispiels
eines Bewegtbild-Codierungssystems
und/oder Decodierungssystems gemäß der Erfindung,
das auf ein Funkkommunikationssystem angewendet wird; und
-
32 eine Ansicht des bevorzugten Ausführungsbeispiels
eines Bewegtbild-Codierungssystems
und/oder Decodierungssystems gemäß der Erfindung,
das auf ein Funkkommunikationssystem angewendet wird;
-
33 eine Ansicht zur Veranschaulichung eines allgemeinen
Verfahrens zum Decodieren eines reversiblen Codes;
-
34 eine Ansicht zum Erläutern eines gewöhnlichen
Codes mit variabler Wortlänge;
-
35 eine Ansicht zur Erläuterung eines konventionellen
reversiblen Codes;
-
36 ein Blockschaltbild des ersten bevorzugten
Ausführungsbeispiels
eines Codierungssystems und/oder Decodierungssystems mit variabler Wortlänge;
-
37 eine Ansicht zur Erläuterung des Betriebes des Decodierwert-Entscheidungsabschnittes von 36;
-
38 ein Blockschaltbild eines Codeworttabellenvorbereitungsabschnittes
von 36;
-
39 eine Ansicht zur Veranschaulichung eines Verfahrens
zum Vorbereiten eines Binärcodesystems,
bei dem Gewichtungen, die einen Code mit variabler Wortlänge konfigurieren,
konstant sind;
-
40 eine Ansicht zur Veranschaulichung eines ersten
Codewort-Konfigurierverfahrens in dem Codewortkonfigurierabschnitt
von 38;
-
41 eine Ansicht zur Veranschaulichung von Decodierbäumen in
der Vorwärtsrichtung
und in der Rückwärtsrichtung,
die aus Codeworten vorbereitet sind, die durch das erste Codewort-Konfigurierverfahren
konfiguriert sind;
-
42 eine Ansicht zur Veranschaulichung eines zweiten
Codewort-Konfigurierverfahrens
in dem Codewortkonfigurierabschnitt von 38;
-
43 eine Ansicht zur Veranschaulichung von Decodierbäumen in
der Vorwärtsrichtung
und in der Rückwärtsrichtung,
die aus Codeworten vorbereitet sind, die durch das zweite Codewortkonfigurierverfahren
konfiguriert sind;
-
44 eine Ansicht zur Veranschaulichung eines dritten
Codewortkonfigurierverfahrens in dem Codewortkonfigurierabschnitt
von 38;
-
45 eine Ansicht zur Veranschaulichung von Decodierbäumen in
der Vorwärtsrichtung
und in der Rückwärtsrichtung,
die aus Codeworten vorbereitet sind, die durch das dritte Codewortkonfigurierverfahren
konfiguriert sind;
-
46 eine Ansicht zur Veranschaulichung eines Codeverkürzungsverfahrens
in dem Codewortkonfigurierabschnitt von 38;
-
47 eine Ansicht zur Veranschaulichung von Decodierbäumen in
der Vorwärtsrichtung
und in der Rückwärtsrichtung,
die durch Codeworte vorbereitet sind, die durch das Codeverkürzungsverfahren verkürzt sind;
-
48 eine Ansicht zur Veranschaulichung eines Codeerweiterungsverfahrens
in dem Codewortkonfigurterabschnitt von 38;
-
49 eine Ansicht zur Veranschaulichung des Vergleiches
zwischen den Charakteristiken eines Codes mit variabler Wortlänge, der
durch das bevorzugte Ausführungsbeispiel
der Erfindung konfiguriert ist, und einem konventionellen Code mit
variabler Wortlänge;
-
50 ein Blockschaltbild des zweiten bevorzugten
Ausführungsbeispiels
eines Codierungssystems und/oder Decodierungssystems mit variabler
Wortlänge
gemäß der Erfindung;
-
51 eine Ansicht zur Veranschaulichung eines Codewort-Konfigurierverfahrens
in dem Codewortkonfigurierabschnitt von 50;
-
52 eine Ansicht zur Veranschaulichung eines Verfahrens
zum Zählen
eines Binärcodesystems,
bei dem Gewichtungen konstant sind;
-
53 eine Ansicht zur Veranschaulichung der Operationen
eines Vorwärtsdecodierers
und eines Rückwärtsdecodierers;
-
54 eine Ansicht zur Veranschaulichung des Vergleiches
zwischen einem konventionellen Decodierbaum und einem Decodiergraph
des bevorzugten Ausführungsbeispiels;
-
55 eine Ansicht zur Erläuterung einer Decodierwerttabelle
des bevorzugten Ausführungsbeispiels;
-
56 ein Blockschaltbild zur Veranschaulichung eines
Prinzipaufbaues eines Bewegtbild-Codiersystems
und/oder Decodiersystems, in dem ein Codierungssystems und/oder
Decodierungssystems mit variabler Wortlänge gemäß der Erfindung enthalten ist;
-
57 eine Darstellung zur Veranschaulichung der
Syntax zum Codieren von Daten in dem Bewegtbild-Codierungssystem
und/oder Decodierungssystem des bevorzugten Ausführungsbeispiels;
-
58 ein Blockschaltbild zur Veranschaulichung des
Bewegtbild-Multiplexabschnitts und des Bewegtbild-Multiplexunterteilabschnitts
von 56;
-
59 eine Ansicht zur Veranschaulichung eines Teils
einer Codeworttabelle von Nicht-LETZTEN-Koeffizienten
von INTRA und INTER in dem gleichen bevorzugten Ausführungsbeispiel;
-
60 eine Ansicht zur Veranschaulichung eines weiteren
Teils der Codeworttabelle von Nicht-LETZTEN-Koeffizienten von INTRA
und INTER in dem gleichen bevorzugten Ausführungsbeispiel;
-
61 eine Ansicht zur Veranschaulichung eines Teils
einer Codeworttabelle von Letzten-Koeffizienten von INTRA und INTER
in dem gleichen bevorzugten Ausführungsbeispiel;
-
62 eine Ansicht zur Veranschaulichung eines weiteren
Teils der Codeworttabelle von LETZTEN-Koeffizienten aus INTRA und
INTER in dem gleichen bevorzugten Ausführungsbeispiel;
-
63 eine Darstellung zur Veranschaulichung einer
Codeworttabelle von Escape-Coden in dem gleichen bevorzugten Ausführungsbeispiel;
-
64 eine Ansicht zur Veranschaulichung eines Codierverfahrens
von Codeworten, die nicht in der Codeworttabelle in dem gleichen
bevorzugten Ausführungsbeispiel
existieren;
-
65 eine Ansicht zur Veranschaulichung eines Beispiels
zum Codieren von Daten in dem gleichen bevorzugten Ausführungsbeispiel;
-
66 eine Ansicht zur Veranschaulichung eines Decodiergraphen
in dem gleichen bevorzugten Ausführungsbeispiel;
-
67 eine Ansicht zur Veranschaulichung eines Teils
einer Decodierwerttabelle von Nicht-LETZTEN-Koeffizienten von INTRA
und INTER in dem gleichen bevorzugten Ausführungsbeispiel;
-
68 eine Ansicht zur Veranschaulichung eines weiteren
Teils der Decodierwerttabelle von Nicht-LETZTEN-Koeffizienten von
INTRA und INTER in dem gleichen bevorzugten Ausführungsbeispiel;
-
69 eine Ansicht zur Veranschaulichung einer Codierwerttabelle
von LETZTEN-Koeffizienten von
INTRA und INTER in dem gleichen bevorzugten Ausführungsbeispiel;
-
70 eine Ansicht zur Veranschaulichung einer Decodierwerttabelle
von Escape-Coden in dem gleichen bevorzugten Ausführungsbeispiel;
-
71 eine Ansicht zur Erläuterung des Betriebes des Decodierwertentscheidungsabschnittes von 50;
-
72 eine Ansicht zur Veranschaulichung der Codier-/Decodierreihenfolge
eines Makroblockes in dem gleichen bevorzugten Ausführungsbeispiel; und
-
73 eine Ansicht zur Veranschaulichung eines Beispiels
eines Systems, in dem ein Codiersystem und/oder Decodiersystem in
variabler Wortlänge gemäß der Erfindung
enthalten ist.
-
Beschreibung des bevorzugten
Ausführungsbeispiels
-
Unter
Bezugnahme auf die angefügten Zeichnungen,
insbesondere auf 5 bis 32, werden
nachstehend bevorzugte Ausführungsbeispiele
eines Bewegtbild-Codierungssystems und/oder Decodierungssystems
gemäß der Erfindung
erläutert.
-
Zunächst wird
der Gesamtaufbau der Erfindung durch 5 beschrieben,
die das Konzept eines Bewegtbild-Codierungssystems zeigt. Die eingegebenen
Bilddaten werden durch ein Codiermittel 10 komprimiert
und codiert, so dass zwei Codefolgen einer vorbestimmten Anordnung
gebildet werden. Das Codiermittel 10 enthält ein Bereichunterteilungsmittel 11 zum
Unterteilen eines Bildschirms in vorbestimmte Bereiche, ein Bereichumordnungsmittel 12 zum Umordnen
der unterteilten Bereiche beispielsweise auf der Grundlage eines
Standards wie etwa der Bedeutung und ein Codezeilenbildungsmittel 13 zum Ausbilden
von zwei Codefolgen bezüglich
den umgeordneten Bereichen. Die durch das Codiermittel ausgebildete
Codefolge wird durch ein Codezeilenunterteilmittel 14 unterteilt.
Danach wird ein Rahmen mittels eines Codezeilenumordnungsmittels 15 umgeordnet,
wobei die zwei Codefolgen in einem Rahmen zu dem Zentrum des Rahmens
in der Vorwärtsrichtung
und in der Rückwärtsrichtung
von zwei Rahmensynchronisationsignalen (PSC), zwischen die der Rahmen
eingefügt
ist, umgeordnet wird. Diese Bedingung ist in einem Datenrahmen von 6 gezeigt.
-
7 zeigt
ein Blockschaltbild des ersten bevorzugten Ausführungsbeispiels eines Bewegtbild- Codierungssystems
gemäß der Erfindung.
In dem bevorzugten Ausführungsbeispiel
verwendet das Bewegtbild-Codiersystem das diskrete Kosinustransformationscodiersystem
mit bewegungskompensierter adaptiver Prädiktion.
-
Das
diskrete Kosinustransformationscodiersystem mit bewegungskompensierter
adaptiver Prädiktion
ist in der vorstehend angeführten
Literatur 1 im Detail beschrieben. Daher wird nur ihr Konzept beschrieben
und wird der Unterschied zwischen dem System der Erfindung und dem
konventionellen System im Detail beschrieben.
-
In
einer Bereichsunterteilungseinheit 101 werden Bilddaten 131 in
vorbestimmte Bereiche unterteilt und werden diese danach zu einer
Bereichsumordnungseinheit 102 übertragen. In der Bereichsumordnungseinheit 102 werden
die Bereiche auf der Grundlage der Daten einer Bereichsumordnungstabelle 103,
die die Reihenfolge bzw. Zählreihenfolge der
Umordnung definiert, umgeordnet und werden die Daten der umgeordneten
Bereiche für
jeden Bereich zu einer bewegungskompensierten adaptiven Prädiktionseinheit 104 übertragen.
Da die Abschnitte bezüglich
der Umordnung der Bereiche für
die Erfindung von Bedeutung sind, werden sie nach der Erläuterung
des Konzepts des Blockschaltbilds im Detail beschrieben.
-
In
der bewegungskompensierten adaptiven Prädiktionseinheit 104 werden
die letzten Rahmendaten, die aus dem Rahmenspeicher 105 ausgelesen
sind, in dem der letzte Rahmen gespeichert ist, der codiert/decodiert
worden ist, mit dem gegenwärtigen
Rahmendaten verglichen, die bezüglich
jedes der Bereiche unterteilt sind. Darüber hinaus wird berechnet,
zu welchen Abschnitt der Bereich des gegenwärtigen Rahmens bewegt worden
ist, d.h. welche Distanz der Bereich zu dem gegenwärtigen Rahmen
bewegt worden ist, so dass es als Bewegungsvektor ausgedrückt wird
(eine derartige Serie von Operationen wird als Bewegungskompensation
bezeichnet).
-
In
einer Subtrahiereinheit 106 werden die Daten jedes der
Bereiche des letzten Rahmens, der bewegungskompensiert worden ist,
von den Daten jedes der Bereiche des gegenwärtigen Rahmens subtrahiert
und werden die Differenzdaten (d.h. die Daten des gegenwärtigen Rahmens,
der ausreichend zum Ausdruck gebracht worden ist, lediglich in dem
die Bewegungsdaten bezüglich
des letzten Rahmens betrachtet werden) mittels einer diskreten Kosinustransformationseinheit 107 und
einer Quantisiereinheit 108 codiert. Die Codierdaten und
der Bewegungsvektor werden mittels eines Multiplexers 109 gemultiplext
und die Codefolge wird in zwei Teile mittels einer Codezeilenteileinheit 110 unterteilt.
Die Teile werden mittels einer Codezeilenumordnungseinheit 111 umgeordnet,
zum Übertragen
zu der Senke über
einen Kanal. Da die Codefolgenunterteileinheit 110 und
die Codefolgenumordnungseinheit 111 ebenso für die Erfindung
von Bedeutung sind, werden sie wie die vorstehend angeführte Bereichsumordnungseinheit
im weiteren im Detail beschrieben.
-
Andererseits
werden die codierten Daten jedes der Bereiche als ein bewegungskompensierter Fehler
mittels einer Rückquantiziereinheit 112 und
einer diskreten Kosinusrücktransformationseinheit 113 decodiert.
Mittels einer Addiereinheit 114 wird der bewegungskompensierte
Fehler zu den letzten Rahmendaten nach der Bewegungskompensation
addiert und werden die Daten des gegenwärtigen Rahmens zum Speichern
in dem Rahmenspeicher reproduziert.
-
In
dem konventionellen Bewegungskompensationscodiersystem wird, nachdem
der Bereich durch die Bereichsunterteileinheit 101 unterteilt
ist, die Codierung bezüglich
jedes der Bereiche in der Reihenfolge ausgeführt, die in 2 gezeigt
ist. Andererseits wird gemäß der Erfindung,
nachdem der Bereich unterteilt ist, eine Neuverarbeitung mittels der
Bereichsumordnungseinheit 102 für eine Codierung ausgeführt. 8 zeigt
ein Beispiel der Reihenfolge der Umordnung der unterteilten Bereiche.
Die Bereichsumordnungstabelle 103, die Codierreihenfolge
der Bereiche speichert, ist vorbereitet und die Bereichsumordnungseinheit 102 ordnet
die Bereiche auf der Grundlage der Tabelle 103 um. Gemäß der Erfindung
wird die Codefolge, die mittels der Bereichsumordnungseinheit 102 umgeordnet
und codiert worden ist, in zwei Zeilen von Coden mittels der Codefolgenunterteileinheit 110 unterteilt.
Im Falle von 8 ist er in eine erste Codefolge
und in eine zweite Codefolge unterteilt, die jeweils 8(a) und 8(b) entsprechen.
-
Danach
schreitet in der Codezeilenumordnungseinheit 111 die erste
Codefolge von dem Synchronisiersignal voran, um in der Vorwärtsrichtung von
dem Präfix
zu dem Suffix angeordnet zu sein, und schreitet die zweite Codefolge
von der ersten Codefolge voran, um in der Rückwärtsrichtung an dem Präfix zu dem
Suffix angeordnet zu sein, um zu dem Kanal übertragen zu werden. 9 zeigt
ein Verfahren zum Umordnen der Codefolge zum Übertragen zu dem Kanal. Auf
diese Weise kann aus den beiden unterteilten Codefolgen die erste
Codefolge durch Suchen des Rahmensynchronisationssignals des gegenwärtigen Rahmens
decodiert werden und kann die zweite Codefolge durch Suchen des
Rahmensynchronisationssignals des nächsten Rahmens decodiert werden,
da die Codefolge von dem Synchronisiersignal in der Rückwärtsrichtung
angeordnet ist. In konventionellen Systemen müssen, wenn ein Fehler in der
Mitte der Decodierung auftritt, alle die Daten bis zu dem Rahmensynchronisationssignal des
nächsten
Rahmens verworfen werden, so dass die Bildqualität stark verschlechtert wird.
Im Gegensatz dazu können
gemäß der Erfindung,
falls die Daten eines der Codefolgen in Folge eines Fehlers nicht decodiert
werden können
und falls der Endabschnitt der ersten Codefolge in Folge des Außertrittfallens des
Codes mit variabler Wortlänge
nicht identifiziert werden kann, die Daten unabhängig von der ersten Codefolge
decodiert werden, da die zweite Codefolge lediglich von dem Rahmensynchronisationssignal des
nächsten
Rahmens abhängig
ist. Auf diese Weise beeinflußt
gemäß der Erfindung
der Fehler, der in einem der Codefolgen erzeugt wird, nicht die
andere Codefolge. Daher ist es möglich,
das Problem konventioneller Systeme zu lösen, dass die Kopfdaten von
den Enddaten abhängen.
-
Selbst
wenn die Daten eines der Codefolgen verworfen worden sind oder selbst
wenn die Daten von beiden Codefolgen nur bis zu ihrer Mitte decodiert
worden sind, kann verhindert werden, dass die Bereiche, die decodiert
werden, an bestimmten Bereichen des Bildschirms konzentriert werden,
da die Codierreihenfolge gemäß 8 geändert ist.
Da darüberhinaus
die Bereiche, die decodiert worden sind, einheitlich an dem gesamten
Bildschirm vorhanden sind, ist es leicht möglich, den Bereich vorherzusagen,
der nicht decodiert worden ist, mittels der Daten, die decodiert
worden sind. Daher ist es möglich,
die Bilddaten des gegenwärtigen
Rahmens als Bilddaten zu decodieren, die ein bestimmtes Maß an Bildqualität haben,
so dass die Bildqualität
nicht stark verschlechtert wird, obwohl sie nicht perfekt ist.
-
In
dem ersten bevorzugten Ausführungsbeispiel
der Erfindung wird der erste und der zweite Aspekt der Erfindung
kombiniert. Es ist jedoch nicht erforderlich, dass sie kombiniert
werden und sie können
unabhängig
ausgeführt
werden. Obwohl gemäß dem ersten
bevorzugten Ausführungsbeispiel
der Erfindung das diskrete Kosinustransformationscodierungssystem
mit bewegungskompensierter adaptiver Prädiktion verwendet wird, sollte
die Erfindung nicht auf dieses Codierungssystem beschränkt werden und
kann die Erfindung auf weitere Bildcodiersystem angewendet werden.
-
10 und 11 zeigen
Beispiele der Bereichsumordnungstabellen. Beispielsweise für den Fall
der Anwendung auf ein Eingangsbild, bei dem bedeutende Daten (Bewegung,
Gesicht usw.) im Zentrum des Bildschirms angeordnet sind, werden die
Daten derart umgeordnet, dass der Bereich des Zentrums des Bildschirms
bei dem Präfix
angeordnet wird. Bei einer Umordnung auf derartige Weise ist es möglich, die
Wahrscheinlichkeit der Decodierung des bedeutenden Bereichs im Vergleich
zu den konventionellen System zu erhöhen, falls das Außertrittfallen des
Codes mit variabler Wortlänge
in Folge eines Fehlers auftritt. Der Grund, warum die Erfindung
diesen vorteilhaften Effekt aufweist, liegt darin, dass, wenn ein
Fehler auftritt, die Wahrscheinlichkeit der Unmöglichkeit zum Decodieren in
Folge der Natur des Codes mit variabler Wortlänge ansteigt, sowie die Daten
dem Ende zugehen. Es ist ebenso möglich, eine Umordnungstabelle
bezüglich
jedes der Eingangsbilder durch Suchen des bedeutenden zentralen
Abschnittes auf der Grundlage des Wertes des Bewegungsvektors usw.
zum Codieren von Bereichen spiralförmig von den Koordinaten des
zentralen Abschnitts zu schalten oder vorzubereiten, wie es in 12 gezeigt
ist. In diesem Falle ist es erforderlich, zwischen der Codierseite
und der Decodierseite beispielsweise durch Einfügen der Daten, die repräsentativ
für die
Koordinaten des bedeutenden Steuerabschnittes sind, in die Codefolge
jedes der Rahmen nach dem Rahmensynchronisiersignal unterscheiden.
Darüber
hinaus ist es möglich,
eine Vielzahl der gleichen Umordnungstabellen auf der Codierseite und
der Decodierseite vorzubereiten und die Umordnungstabellen auf der
Decodierseite derart zu schalten, dass ihre Zahl identisch zu der
Zahl der Umordnungstabelle auf der Codierseite ist, die auf der Grundlage
des Bildes geschaltet worden ist.
-
Wird
beispielsweise der Code mit variabler Wortlänge, der in beiden Richtungen
decodiert werden kann, verwendet, ist es möglich, den Code in der Vorwärtsrichtung
und in der Rückwärtsrichtung
als eine Codefolge ohne Unterteilen der Codefolge in zwei Teile
in der Vorwärtsrichtung
und in der Rückwärtsrichtung
zu decodieren. In diesem Fall ist es möglich, die Wahrscheinlichkeit
der Decodierung eines bedeutenden Abschnittes durch die Umordnung der
Codefolge zu erhöhen,
wie es in 8, 10, 11 und 12 gezeigt
ist. Als ein Beispiel davon zeigt 13 ein
Verfahren zum Umordnen der Codefolge, wenn der Code mit variabler
Wortlänge,
der in beiden Richtungen decodiert werden kann, verwendet wird.
In der Fig. entsprechen die Blöcke
von Zahlen Makroblöcken,
wenn die Codierung ausgeführt wird.
-
Das
zweite bevorzugte Ausführungsbeispiel eines
Codiersystems gemäß der Erfindung
wird nachstehend beschrieben:
-
14 zeigt
ein Blockschaltbild zur Veranschaulichung des zweiten bevorzugten
Ausführungsbeispiels
der Erfindung. In dem ersten bevorzugten Ausführungsbeispiel von 7 werden
die Daten des gesamten Bildschirms in die von zwei Gruppen von Bereichen
unterteilt und werden in die entsprechende Codefolge mittels der
Codefolgenunterteileinheit 110 unterteilt. In dem zweiten
bevorzugten Ausführungsbeispiel
enthält
anstelle jeweils der ersten und der zweiten Codefolge, die alle
die Bereiche des gesamten Bildschirms enthalten, die Codefolge jedes
der Bereiche nur einen von zwei Bereichen, die mittels einer DCT-Koeffizientenunterteileinheit 220 unterteilt
sind.
-
Selbst
wenn auf diese Weise die Daten eines der Codefolgen verworfen werden,
ist es möglich, wenn
die Daten der anderen Codefolge decodiert werden können, diese
Daten mit einem bestimmten Maß an
Qualität
zu decodieren, obwohl die Qualität jedes
der Bereiche geringer als die übliche
Qualität ist,
so dass es möglich
ist, eine uniforme Bildqualität auf
den gesamten Bildschirm im Vergleich zu den ersten bevorzugten Ausführungsbeispiel
zu erlangen. Alternativ können
andere Daten als die DCT-Koeffizienten in zwei Teile zum Codieren
unterteilt werden.
-
Als
Aufbau zum Unterteilen der Daten jedes der Bereiche in zwei Teile
ist das nachstehende Beispiel ausgeführt. In konventionellen Systemen
wird der Koeffizient, der durch die diskrete Kosinusinformation
eines adaptiven Prädiktionssignals
erlangt ist, durch eine Zick-Zack-Abtastung, wie sie in 3 gezeigt
ist, codiert. Andererseits werden gemäß der Erfindung die Daten jedes
der Bereiche in Koeffizienten ungerader Zahlen und Koeffizienten
gerader Zahlen unterteilt, wie es in 16 gezeigt
ist. Alternativ können
sie in Abschnitte mit enger Verbindung zu der horizontalen Richtung
und Abschnitte mit enger Verbindung zu der vertikalen Richtung unterteilt
werden. Obwohl die Reihe der DCT-Koeffizienten auf der Grundlage
der gewöhnlichen
Zick-Zack-Abtastung in dem vorstehend angeführten Beispiel (16)
unterteilt ist, können
die DCT-Koeffizienten auf der Grundlage einer für das Bild geeigneten Abtastung
gemäß der Erfindung
unterteilt sein.
-
18 zeigt
ein Bewegtbild-Decodiersystem gemäß dem Bewegtbild-Codiersystem
von 5. Nachdem die Rahmensynchronisationssignale der Codefolge,
die von dem Codierungssystem zum Speichern übertragen wird, erfaßt sind,
wird eine Serie von Verarbeitungen ausgeführt. D.h., das prädiktive
Fehlersignal für
jedes der Bereiche wird auf der Grundlage der Daten einer Codierreihenfolgetabelle 1103 decodiert,
die Rückquantizierung
wird mittels einer Rückquantiziereinheit 1112 ausgeführt und
die diskrete Kosinusrücktransformation
wird mittels einer diskreten Kosinusrücktransformationseinheit 1113 ausgeführt. Dabei
wird die gelesene Codefolge in einem Codefolgenspeicher 116 gespeichert.
Wenn die Codierung des vorderen Teils der ersten Codefolge beendet
ist, oder wenn es in Folge gewisser Fehler unmöglich war, den vorderen Teil
zu decodieren, wird die Decodierverarbeitung gestoppt und wird die
Codefolge weiterhin in dem Codefolgenspeicher 116 gespeichert,
bis das Rahmensynchronisationssignal des nächsten Rahmens empfangen wird.
Ist das Rahmensynchronisationssignal des nächsten Rahmens herausgefunden
worden, werden die Inhalte des Codefolgenspeichers 1116 Bit
für Bit
von dem letzten Bit umgekehrt gelesen und decodiert. Nach Ausführung der
Decodierung gleichartig zu der des vorderen Teils der ersten Codefolge
wird, wenn die Decodierung beendet ist oder wenn es unmöglich war,
den vorderen Teil in Folge von Fehlern zu decodieren, die Decodierverarbeitung
beendet und werden die decodierten Daten des vorderen Teils der ersten
Daten und des hinteren Teils der zweiten Daten als Decodierdaten
kombiniert.
-
Danach
werden die Decodierdaten zu einem Prädiktionssignal mittels einer
Addiereinheit 114 zum Erlangen reproduzierter Bilddaten
addiert. Die reproduzierten Bilddaten werden nach außerhalb
des Systems ausgegeben und in einem Rahmenspeicher 1105 aufgezeichnet.
Wie vorstehend angeführt
werden zwei Codefolgen, die in zwei Teile unterteilt sind, einer
davon wurde in der Vorwärtsrichtung
angeordnet und der andere davon wurde in der Rückwärtsrichtung angeordnet, decodiert,
so dass, selbst wenn es unmöglich
war, die Daten eines der beiden Codefolgen in Folge von Fehlern
zu decodieren, dies nicht die weitere Codefolge beeinflußt und es
möglich
ist, die Daten der anderen Codefolge zu decodieren. Da darüber hinaus
die Codierreihenfolge durch Umordnen der Bereiche geändert wird,
ist es möglich,
wenn Fehlerdetektoren 1126 und 1127 Fehler detektieren, im
Vergleich zu den konventionellen Systemen die Bereiche, die nicht
decodiert werden konnten, auf der Grundlage der Bereiche, die decodiert
werden konnten, leicht vorherzusagen und komplementär auszuführen.
-
Nachfolgend
wird ein Codiersystem beschrieben, bei dem die Übertragung mittels zweier Kanäle mit unterschiedlichen
Fehlerraten ausgeführt wird.
Wird die Übertragung
mittels zweier Kanäle
mit unterschiedlichen Fehlerraten ausgeführt, wurde häufig ein
Hierarchiecodiermittel verwendet, durch welches, wenn ein Fehler
auftritt, die bedeutenden Daten mit bedeutendem Einfluß über einen
Kanal mit guter Qualität
mit geringer Fehlerrate und die Daten ohne Bedeutung über einen
Kanal mit hoher Fehlerrate übertragen
werden. Bezüglich
der Daten, die jeweils zu dem Kanal mit einer geringen Fehlerrate
(einer höheren
Schicht) und dem Kanal einer höheren Fehlerrate
(einer niedrigeren Schicht) übertragen werden,
werden daher die Umordnung der Bereiche, die Unterteilung der Codefolge
und die Umordnung der Codefolge durch das gleiche Verfahren wie
in dem ersten und dem zweiten bevorzugten Ausführungsbeispiel ausgeführt, so
dass die gleiche Verarbeitung bezüglich der hierarchischen Codierung
ausgeführt
werden kann. 19 zeigt ein Beispiel von Codefolgen,
wenn sie mit der Hierarchiebildung kombiniert werden. In diesem
Beispiel werden aus der Codefolge die Bereiche, die zum Codieren
umgeordnet worden sind, mit bedeutenden Daten, wie etwa Modusdaten
und einem Bewegungsvektor der Codefolge der oberen Schicht eingegeben
und wird ein prädiktives
Differenzsignal der Codefolge der niedrigeren Schicht eingegeben.
-
Danach
werden die Codefolgen jedes der Hierarchien in zwei Teile unterteilt,
wobei eines davon in der Vorwärtsrichtung
von dem Präfix
zu dem Ende umgeordnet wird, und das andere davon in der Rückwärtsrichtung
von dem Suffix zu dem Kopf umgeordnet wird. Sind die Codefolgen
wie in dem ersten bevorzugten Ausführungsbeispiel unterteilt,
ist es möglich,
die obere Schicht oder die untere Schicht einzustellen, falls die
gleichen Unterteilverfahren in der oberen Schicht und in der unteren
Schicht ausgeführt werden.
Für den
Fall, dass die Bereiche in einem Rahmen in zwei Teile unterteilt
werden, wird angenommen, falls die Codefolgen an einem der zwei
Teile konzentriert sind, dass die Fehlerrate der oberen Schicht
gering ist, so dass die Codefolge der oberen Schicht nicht unterteilt
wird zum Ausdrücken
der oberen Schicht durch eine Codefolge, wie sie in 20 gezeigt
ist, und die Codefolge nur für
die Codefolge der niedrigeren Schicht unterteilt wird. In diesem
Fall wird die Zahl der Bereiche, die in 8(a) und 8(b) enthalten sind, derart geändert, so
dass die Codemengen der zwei Codefolgen der niedrigeren Schicht zueinander
gleich sind. D.h., die Zahl der enthaltenen Bereiche wird nicht
gleich gemacht, in dem sie auf der Grundlage der Modusdaten der
oberen Schicht dynamisch geändert
werden. Auf diese Weise können
die Codemengen der unterteilten zwei Teile der Codefolge der unteren
Schicht zu der anderen gleich gemacht werden.
-
Obwohl
der Prädiktionsfehler
von den weiteren Daten in dem vorstehend ausgeführten Beispielen getrennt ist,
können
die Bewegungsvektoren in die obere und die untere Schicht gemäß der Codemenge
des Bewegungsvektors unterteilt werden. Wenn die Codemenge des Bewegungsvektors
gering ist und Platz in der oberen Schicht ist, können alternativ
einige der DCT-Koeffizienten der prädiktiven Signale in die obere
und in die untere Schicht usw. unterteilt werden.
-
Gemäß der Darstellung
von 21 sind in einem System zum Anordnen einer bedeutenden
Codefolge an dem vorderen Abschnitt bezüglich eines Kanals und zum
Anordnen einer Codefolge ohne Bedeutung zum Fortführen der
bedeutenden Codefolge die bedeutenden Codefolgen in 21(a) in
der Vorwärtsrichtung
angeordnet und sind die Codefolgen ohne Bedeutung in der Rückwärtsrichtung
angeordnet, so dass die bedeutenden Codefolgen an dem hinteren Abschnitt
angeordnet sind (21(c)). Folglich
ist es möglich,
in korrekter Weise eine größere Menge
von Daten zu decodieren, selbst wenn Fehler auftreten, im Vergleich
zu dem konventionellen System, wie es in 21(b) dargestellt
ist. In diesem Fall sind die Daten der unteren Schicht, die den
Daten entsprechen, die an dem Kopf der Codefolge der oberen Schicht
angeordnet sind (Codefolge in der Vorwärtsrichtung), an dem Kopf der
Codefolge der unteren Schicht angeordnet (Codefolge in der Rückwärtsrichtung).
Da die Wahrscheinlichkeit zum korrekten Decodieren der Daten des
Kopfes größer ist
in der Codierung mit variabler Wortlänge, ist, falls das System
des bevorzugten Ausführungsbeispiels
angewendet wird, wie es in 22 gezeigt
ist, sowie die Daten an einem vorderen Abschnitt der oberen Schicht
angeordnet sind und sowie die Daten an einem hinteren Abschnitt
der niedrigeren Schicht angeordnet sind, die Wahrscheinlichkeit
zum decodiert werden groß.
-
Aus
Systemen zum Codieren Einheit für
Einheit, wie etwa Block für
Block, ist in einem hierarchischen Codiersystem zum Unterteilen
der Daten jeder Einheit in die obere Schicht und in die untere Schicht und
zum Codieren der unterteilten Daten die Effizienz hoch, sowie die
Daten der unteren Schicht, die den Daten der oberen Schicht entsprechen,
an dem hinteren Abschnitt angeordnet sind (nahe dem Synchronisationssignal
des hinteren Abschnitts). Dies ist in 23 im Detail
gezeigt. Falls sie in diesem Fall gemäß der Darstellung von 23(b) angeordnet sind, und nicht wie in 23(a), sind keine oberen Daten vorhanden,
die den unteren Daten entsprechen, die korrekt decodiert worden
sind. Falls daher die Decodierung auf der Stufe der Codeworte ausgeführt werden
konnte, kann das Bilddatensignal nicht daraus reproduziert werden.
-
Für den Fall,
dass ein Bewegtbild-Codiersystem und/oder Decodiersystem gemäß der Erfindung auf
das Hierarchiecodiersystem angewendet wird, können die Codefolge, die in
Vorwärtsrichtung
angeordnet ist, und die Codefolge, die in der Rückwärtsrichtung angeordnet ist,
jeweils in einer Hierarchie ausgebildet sein, ohne dass das System
der Erfindung auf jeden der ausgebildeten Folgen in einer hierarchischen
Codefolge wie in dem vorstehend angeführten bevorzugten Ausführungsbeispiel
angewendet wird.
-
24 zeigt
den Aufbau einer Codefolge zum Erläutern des bevorzugten Ausführungsbeispiels
für die
Ausbildung einer Hierarchie jedes der Codefolgen. Gemäß der Darstellung
von 24 wird in diesem bevorzugten Ausführungsbeispiel
jedes der Codefolgen, die in zwei Teile unterteilt sind, in einer
Hierarchie ausgebildet. Beispielsweise werden zunächst die
Bilddaten eines Rahmens verschachtelt abgetastet, zum Unterteilen
in zwei Felder, wobei eines davon als Codefolge in der Vorwärtsrichtung
ausgebildet ist und das andere davon als Codefolge in der Rückwärtsrichtung
ausgebildet ist. Danach wird in der jeweiligen Codefolge die Hierarchie
derartig ausgebildet, dass die Daten, die immer für eine Codierung
notwendig sind, als die oberen Daten angeordnet sind und die restlichen
Daten usw. als die unteren Daten angeordnet sind.
-
Falls
in dem auf derartige Weise in einer Hierarchie ausgebildeten Codefolge
einer der Codefolgen in Folge von Fehlern nicht decodiert werden kann,
kann die andere Codefolge komplett decodiert werden. Daher ist es
im Vergleich zu der getrennten Hierarchiebildung der oberen und
der unteren Daten leicht und effizient möglich, die hierarchische Codierung
auszuführen.
Es ist ebenso möglich,
die Codes in einem System in einer Hierarchie effizient auszuführen, die
nicht verwendet werden können,
ohne dass die oberen Daten komplett decodiert worden sind, selbst
wenn die unteren Daten decodiert worden sind. Als das System, das
nicht verwendet werden kann, ohne dass die oberen Daten komplett
decodiert worden sind, selbst wenn die unteren Daten decodiert worden
sind, wird ein System betrachtet, bei dem beispielsweise in 19 kein
Synchronisationssignal zwischen den oberen und den unteren Daten
eingefügt
ist oder keine Zeigerdaten, die das Ende der oberen Daten darstellen,
hinzugefügt
sind, usw. In dem bevorzugten Ausführungsbeispiel von 15 kann,
obwohl es möglich
ist, den Nachteil zu eliminieren, dass keine Daten verwendet werden, ohne
dass die unteren Daten decodiert worden sind, selbst wenn die oberen
Daten decodiert worden sind, durch Einfügen eines Synchronisationssignals
zwischen den oberen und den unteren Daten oder durch Hinzufügen von
Zeigerdaten usw. der vorstehend angeführte Nachteil durch die hierarchische
Codierung wie in dem bevorzugten Ausführungsbeispiel sehr leicht
eliminiert werden.
-
Unter
Bezugnahme auf 25 wird nachstehend ein weiteres
bevorzugtes Ausführungsbeispiel eines
Bewegtbild-Codierungssystems gemäß der Erfindung
erläutert,
bei dem Bewegtbilddaten in drei zu codierende Codefolgen unterteilt
sind.
-
In
dem bevorzugten Ausführungsbeispiel werden
Bewegtbilddaten im Hinblick auf das vorstehend angeführte Konzept
der hierarchischen Codierung codiert. Beispielsweise werden bedeutende
Daten in zwei Teile geteilt, so dass eine erste und eine zweite
Codefolge ausgebildet werden, und die Daten, die nicht in den Codefolgen
der bedeutenden Daten enthalten sind, bilden eine dritte Codefolge. Nachdem
die erste bis dritte Codefolge gemäß der Bedeutung der Daten ausgebildet
sind, wird die Codefolge im Einzelnen ausgebildet, wie es im unteren Bereich
von 25 gezeigt ist. Durch die Anordnung von Coden
auf derartige Weise können
bedeutende Daten geschützt
werden.
-
Wenn
beispielsweise das hierarchische Codieren gemäß der Darstellung von 25 auf
das Codieren von Bilddaten angewendet wird, werden die Modusdaten
und der Bewegungsvektor dem Abschnitt bedeutender Daten zugeordnet
und werden diese Daten in zwei Codefolgen im Hinblick auf die Position
an dem Bildschirm unterteilt, in der diese Daten angeordnet sind.
Bei dieser Unterteilung werden, selbst wenn einer der zwei Codefolgen
für bedeutende
Daten in Folge von Fehlern fehlen, zum Kompensieren der Fehler für die weitere
Codefolge die Makroblöcke
derartig ausgewählt,
dass ein schachbrettartiges Muster ausgebildet wird, so dass beispielsweise
die schwarzen Blöcke
des schachbrettartigen Musters der ersten Codefolge entsprechen
und die weißen
Blöcke
davon der zweiten Codefolge entsprechen. Folglich kann die Verarbeitung
wie etwa eine Übermittlung
(flashing) und ein Zurückhalten (concealment)
leicht ausgeführt
werden.
-
Wie
vorstehend ausgeführt
können
die bedeutenden Daten in die anzuordnende erste und zweite Codefolge
unterteilt werden und kann der Rest der dritten Codefolge zugewiesen
werden. Um die Fehlerwiderstandsfähigkeit der dritten Codefolge selbst
zu verbessern, kann alternativ ein Code mit fester Wortlänge oder
ein Code mit variabler Wortlänge,
die in beiden Richtungen decodiert werden können, in der dritten Codefolge
vorgesehen sein.
-
Die
vorstehend angeführte
Konstruktion kann mit der Verdoppelung der Zeichenfolge kombiniert
sein. Durch Verwenden der zweiten Codefolge, die gleich oder ähnlich zu
der ersten Codefolge ist, und durch Anordnen der Codefolge, wie
es im unteren Bereich von 25 gezeigt
ist, wird die erste Codefolge üblicherweise
nur in der Vorwärtsrichtung
decodiert und können
komplette Bilddaten ohne Fehler durch Decodieren der zweiten Codefolge
in der Rückwärtsrichtung
erlangt werden, wenn Fehler in der ersten Codefolge auftreten.
-
Bezüglich der
Anordnungsreihenfolge jedes der Codefolgen und der Positionsbeziehung
auf dem Bildschirm werden darüber
hinaus beispielsweise die Daten der ersten Codefolge dem entsprechenden Bildelementen
von dem oberen linken Abschnitt zu dem unteren linken Abschnitt
des Bildschirms zugewiesen und werden die Daten der zweiten Codefolge den
entsprechenden Bildelementen von dem unteren rechten Abschnitt zu
dem oberen linken Abschnitt zugeordnet, so dass es möglich ist,
in duplizierter Weise die erste Codefolge, die von dem oberen linken Abschnitt
zu dem unteren rechten Abschnitt decodiert ist, und die zweite Codefolge,
die von dem unteren rechten Abschnitt zu dem oberen linken Abschnitt decodiert
ist, zu verwenden, falls ein Fehler in einem der Codeworte auftritt.
Falls beispielsweise ein Fehler an einer Position eines der Codefolgen
auftritt, kann auf diese Weise die erste und die zweite Codefolge
in der Vorwärtsrichtung
und in der Rückwärtsrichtung
jeweils decodiert werden, so dass sie einander kompensieren, so
dass es möglich
ist, die Wahrscheinlichkeit von Daten zu erhöhen, die decodiert werden.
Selbst wenn beide Folgen der paarweisen der Codefolgen nicht komplett
in der Reihenfolge zum Konfigurieren der Codefolge decodiert werden können, können sie
durch den anderen kompensiert werden, so dass es möglich ist,
die Rate der Daten zu erhöhen,
die korrekt decodiert werden können,
wenn ein Fehler in einem der Codeworte auftritt.
-
Da
es darüber
hinaus nicht erforderlich ist, zusätzlich ein Synchronisiersignal
usw. dem Präfix der
duplizierten Daten hinzuzufügen,
ist die Effizienz höher,
als wenn sie einfach dupliziert wird.
-
Der
Aufbau sollte nicht auf die Anordnung beschränkt werden, die in 25 gezeigt
ist, und sie kann auf eine der weiteren bevorzugten Ausführungsbeispiele
der Erfindung durch Verwenden einer der Codefolgen als eine gewöhnliche
Codefolge und der weiteren Codefolge als eine Hilfscodefolge angewendet
werden.
-
Als
ein Beispiel von praktikablen Anwendungen können die Codeworte gemäß immer
kleineren Dateneinheiten in der Vorwärtsrichtung und der Rückwärtsrichtung
und nicht für
jede Codefolge in der Vorwärtsrichtung
und in der Rückwärtsrichtung angeordnet
werden. In allen vorstehend angeführten bevorzugten Ausführungsbeispielen
sind die Codefolgen in zwei Dateneinheiten auf der Grundlage eines
bestimmten Standards unterteilt und werden die Codeworte in einer
der Dateneinheiten in der Vorwärtsrichtung
und in der anderen Dateneinheit in der Rückwärtsrichtung angeordnet. Die
Codefolge, die in der Rückwärtsrichtung
bei der Codierung angeordnet wird, muß nach einer temporären Speicherung
in einem Zwischenspeicher umgeordnet und ausgegeben werden. Daher
bestehen Nachteile darin, dass die Umordnung nicht ausgeführt werden
kann, ohne dass die Decodierung beendet ist, so dass der Verarbeitungsvorgang
verzögert
wird.
-
Um
die Verzögerung
des Verarbeitungsvorgangs zu verringern, wird nicht eine relativ
große
Einheit, wie etwa eine Codefolge, als Dateneinheit für eine Codierung
verwendet und kann beispielsweise die Codierung in der Rückwärtsrichtung
unter Verwendung einer kleinen Einheit, wie etwa einer Makroblockeinheit
ausgeführt
werden. Das bevorzugte Ausführungsbeispiel
ist in 26 gezeigt. Wenn in 26 die
Daten von Mikroblöcken
MB 1 bis MB 10 in Hälften
unterteilt sind, werden die Makroblöcke MB6 bis MB10, die in der
Rückwärtsrichtung
angeordnet sind, nicht als Gruppe umgeordnet und sind die Daten
jedes der Makroblöcke
zum Codieren angeordnet.
-
In
dem bevorzugten Ausführungsbeispiel muß die Decodierung
mit einem Start von MB 10 aus mittels einer Decodiereinheit ausgeführt werden.
Bei einer gewöhnlichen
Decodiereinheit müssen
die Daten jedoch geordnet startend von dem Makroblock MB1 decodiert
werden, da die Daten des letzten Makroblocks in den Daten des gegenwärtigen Makroblocks
derart verwendet werden, dass der Unterschied zwischen dem letzten
Makroblock und dem gegenwärtigen
Makroblock codiert wird und der gegenwärtige Makroblock mittels des
Differenzsignals decodiert wird.
-
In
dem bevorzugten Ausführungsbeispiel werden
daher zusätzliche
Daten derart hinzugefügt, dass
eine geordnete Decodierung startend von den hinteren Daten zum Eliminieren
des vorstehend angeführten
Nachteils, dass die Decodierung in der Vorwärtsrichtung ausgeführt werden
muß, möglich wird. Beispielsweise
werden bezüglich
der Daten zum Codieren der Differenz zwischen den gegenwärtigen Daten
und den letzten Daten, wie etwa das Bewegungsvektors und der Quantizierungsbreite,
die aktuellen Werte des Bewegungsvektors und der Quantizierungsbreite
des Makroblocks MB10 als zusätzliche
Daten derart hinzugefügt,
dass die Decodierung in der Reihenfolge mit einem Start von den
hinteren Daten ausgeführt
werden kann. Die Decodierung kann daher von dem Makroblock MB10
gestartet werden. Da daher die Daten bezüglich der Differenz zwischen
den Makroblöcken
MB9 und MB10 in den Daten des Makroblocks MB10 enthalten sind, werden
derartige Daten zum Decodieren des Makroblocks MB9 verwendet. Danach
wird das Decodieren in gleichartiger Weise in der Rückwärtsrichtung,
wie etwa in der Reihenfolge MB8, MB7 und MB6 ausgeführt, so
dass es möglich
ist, eine Gruppe von Daten komplett zu decodieren. Die zusätzlichen
Daten müssen
nicht immer zu den Positionen, die in 26 gezeigt
sind, hinzugefügt
werden und können
zu beliebigen Positionen hinzugefügt werden, solange die Positionen
identifiziert werden können,
bevor die in der Rückwärtsrichtung
angeordneten Codeworte decodiert werden.
-
Während die
bevorzugten Ausführungsbeispiele
der hierarchischen Codierung vorstehend beschrieben worden sind,
sollten die vorstehend angeführten
Verfahren nicht auf das Verfahren zum Anordnen der Codefolge beschränkt werden,
wenn eine Codierung der Daten unterschiedlicher Bedeutung, wie etwa
der oberen und der unteren Schichten ausgeführt wird, und kann das gleiche
Verfahren auf zwei Codefolgen der gleichen Bedeutung angewendet werden.
-
Darüber hinaus
kann ein Codiersystem gemäß der Erfindung
nicht nur auf zwei Schichten, wie etwa der oberen und der unteren
Schicht angewendet werden, sondern kann die Erfindung ebenso auf eine
Gruppe von Daten von Multistufungen (Multiechelon) in gleichartiger
Weise zu dem vorstehend Angeführten
angewendet werden.
-
Ferner
werden in den vorstehend angeführten
bevorzugten Ausführungsbeispielen
die Codefolgen Rahmen für
Rahmen umgeordnet und wird die Synchronisation mittels Rahmensynchronisiersignalen
ausgeführt.
Es muß jedoch
nicht mittels Rahmensynchronisiersignalen ausgeführt werden und es können alle
Fälle verwendet
werden, falls ein Synchronisationssignal nach der zweiten Codefolge
vor der ersten Codefolge vorhanden ist. Sind beispielsweise eine
Mehrzahl von Synchronisiersignalen in einem Rahmen (beispielsweise,
wenn Synchronisiersignale für
jede Zeile von 2(a) eingefügt sind)
in dem konventionellen System vorhanden ist, können INTRA-Rahmen-Synchronisiersignale
in jede Zeile gemäß der Darstellung
von 2(b) eingefügt werden und können die
Bereichsumordnung, die Codierunterteilung und die Codefolgenumordnung
in einer Zeile als eine Einheit, die Bereiche zwischen den benachbarten
Synchronisiersignalen enthalten, wie es in 2(b) dargestellt
ist, ausgeführt
werden. D.h., wie das konventionelle System von 2(b) kann
die konventionelle Umordnung gemäß der Darstellung von 2(c) ausgeführt werden.
-
27 zeigt
eine Ansicht zur Veranschaulichung, dass ein Verfahren zum Anordnen
von einem bedeutenden Bereich auf ein Verfahren angewendet wird,
bei dem ein Rahmen eine Vielzahl von Synchronisierblöcken enthält. In diesem
Verfahren werden Synchronisiersignale, die sich von dem Rahmensynchronisiersignal
(PSC) unterscheiden, in den Rahmen derart eingefügt, dass die Daten, die nicht
verwendet werden können,
selbst wenn ein Fehler auftritt, abnehmen. Ein derartiges Verfahren
wurde konventionell gemäß der Darstellung
von 4 verwendet. Bezüglich jedes Synchronisationsblocks,
bei denen das Innere des Rahmens unterteilt worden ist, kann der
Synchronisationsblock, der in der Reihenfolge von 27(a) codiert
worden ist, einem ersten Synchronisationsblock entsprechen und kann
der Synchronisationsblock, der in der Reihenfolge von 27(b) codiert worden ist, einem zweiten
Synchronisationsblock entsprechen, so dass, selbst wenn einer der
Synchronisationsblöcke
in Folge von Fehlern fehlt, es möglich
ist, die Wahrscheinlichkeit einer korrekten Decodierung ansteigt,
wie der Block von Bedeutung ist.
-
In
dem vorstehend angeführten
bevorzugten Ausführungsbeispiel
kann die Decodierung in beiden Richtungen durch Hinzufügen von
Synchronisationssignalen am Kopf und am Ende der Codierfolge ausgeführt werden.
Gemäß der Erfindung
sind die Synchronisiersignale nicht im Einzelnen erforderlich, solange
der letzte Abschnitt der Codefolge vor einer Decodierung der Codefolge
identifiziert werden kann.
-
Das
bevorzugte Ausführungsbeispiel
eines Systems, das keine Synchronisiersignale verwendet, wird nachstehend
beschrieben.
-
Bei
einem Codiersystem, bei dem die Codierung mit fixer Wortlänge von
Daten einer vorbestimmten Einheit wie etwa eines Rahmens oder mehrerer Makroblöcke für eine Ausgabe
ausgeführt
wird, können
der Kopf jeder Codefolge, die in der Vorwärtsrichtung angeordnet ist,
und der Codefolge, die in der Rückwärtsrichtung
angeordnet ist, unabhängig
von Synchronisiersignalen usw. auf der Decodierseite identifiziert
werden. 28 zeigt ein Beispiel der Anwendung
eines Codiersystems gemäß der Erfindung auf
die Codierfolge, die in einer fixen Wortlänge codiert worden ist. In
dem Beispiel wird die Erfindung auf eine Codefolge angewendet, die
mit fixer Wortlänge
codiert worden ist, so dass m Bits durch Kombinieren von N-Makroblöcken (MB)
vorhanden sind. Da in dem bevorzugten Ausführungsbeispiel gemäß der Darstellung
von 29 der Kopf der Codefolge, die
in der Rückwärtsrichtung
angeordnet ist, immer alle m Bits angeordnet ist, ist es nicht erforderlich, Synchronisiersignale
in die Codefolge einzufügen,
so dass die Decodierung regulär
und korrekt ausgeführt werden
kann.
-
Entgegen
der vorstehend angeführten
Konstruktion wird nachstehend ein System beschrieben, bei dem die
Daten nicht eine fixe Länge
der vorstehend angeführten
vorbestimmten Einheit aufweisen, sondern der Kopfabschnitt einer
Codefolge, die in der Rückwärtsrichtung
angeordnet ist, ohne Verwendung von Synchronisiersignalen identifiziert
werden kann.
-
In
dem bevorzugten Ausführungsbeispiel des
Systems werden die Daten zum Identifizieren der Position des Präfixes der
Codefolge in der Rückwärtsrichtung
einer Ausgangscodefolge hinzugefügt. 30 zeigt die Codefolge in dem bevorzugten Ausführungsbeispiel.
Durch Anordnen der Zeigerdaten, die die Präfixposition darstellen, an
der Position des Rahmenkopfes oder an einer dazu entsprechenden Position
wird das Präfix
der Codefolge, die in der Rückwärtsrichtung
angeordnet ist, unter Verwendung der Zeigerdaten auf der Decodierseite
identifiziert und wird die Codierfolge decodiert. Auf diese Weise kann
der Schwanz bzw. das Ende der Codefolge durch eine vorbestimmte
Einheit anstelle von Synchronisiersignalen identifiziert werden,
so dass die Erfindung auf ein Codiersystem mit variabler Wortlänge angewendet
werden kann.
-
Das
bevorzugte Ausführungsbeispiel
einer Hochgeschwindigkeitswiedergabe, die auf das vorstehend angeführte erste
und zweite bevorzugte Ausführungsbeispiel
angewendet werden kann, wird nachstehend beschrieben.
-
Im
Falle einer Hochgeschwindigkeitsvorwärtswiedergabe wird, nachdem
das Rahmensynchronisiersignal, das den Kopf des Rahmens darstellt,
empfangen ist, nur die erste Codefolge an dem Kopf, die in der Vorwärtsrichtung
beschrieben ist, durch den vorstehend angeführten Decodierprozeß zum Voranschreiten
zur Verarbeitung des nächsten Rahmens
decodiert. Die Daten, die der zweiten Codefolge entsprechen, die
in der Rückwärtsrichtung umgeordnet
ist, kann mittels der durch die erste Codefolge usw. decodierten
Daten interpoliert werden.
-
Im
Falle einer Hochgeschwindigkeitsrückwärtswiedergabe wird gleichartig
zu der Hochgeschwindigkeitsvorwärtswiedergabe
das Rahmensynchronisiersignal in der Rückwärtsrichtung gesucht und wird
nur die zweite Codefolge, die in der Rückwärtsrichtung umgeordnet ist,
decodiert, nachdem das Rahmensynchronisiersignal empfangen ist. Da
in diesem Fall die Bilddaten des letzten Rahmens erforderlich sind,
wenn die bewegungskompensierte adaptive Prädiktionscodierung verwendet
wird, ist es erforderlich, nur den Rahmen auszuwählen, der nicht die Bewegungskompensation
verwendet.
-
31 zeigt das dritte bevorzugte Ausführungsbeispiel
eines Bewegtbild-Codierungssystems und/oder Decodierungssystems
gemäß der Erfindung,
das auf eine Funkkommunikation angewendet wird. In 31 beinhaltet das Funkkommunikationssystem ein
Bildübertragungssystem 20 und
ein Bildwiedergabesystem 30 und werden die Bilddaten über eine
Basisstation 41 mit einem Netz 40 übertragen und
empfangen.
-
Das
Bildübertragungssystem 20 enthält einen
Bilddatensignaleingangsabschnitt 21, einen Quellencodierabschnitt 22 mit
einem Fehlerwiderstandsverarbeitungsabschnitt 23, einem
Kanalcodierabschnitt 24 und einem Funkabschnitt 25.
Bei dem Quellencodierabschnitt 22 werden die diskrete Kosinustransformation
(DCT), die Quantisierung usw. ausgeführt. In dem Kanalcodierabschnitt 24 werden
die Erfassung und Korrektur des Fehlers der Codierdaten usw. ausgeführt.
-
Das
Bildwiedergabesystem 30 enthält einen Funkabschnitt 31,
einen Kanaldecodierabschnitt 32, einen Informationsquellendecodierabschnitt 33 mit einem
Fehlerwiderstandsverarbeitungsabschnitt 34 und einen Bilddatensignalausgangsabschnitt 35.
-
32 zeigt ein Beispiel von Anwendungen eines Bewegtbild-Koodierungssystems
und/oder Decodierungssystems gemäß der Erfindung.
Gemäß der Darstellung
von 32 wird das Bewegtbild mittels
Endgeräten 50,
wie etwa einem Laptopcomputer 51 und einem Tischcomputer 52, über Basisstationen 41, 42 und 43 des
Funkkommunikationsnetzes 40 gesendet und empfangen.
-
Wie
vorstehend angeführt,
ist gemäß der Erfindung
ein Bewegtbild-Codiersystem und/oder Decodiersystem vorgesehen,
das die Verschlechterung der Qualität eines decodierten Bildes
in Folge von Fehlern eines Codes, die bei der Übertragung und Speicherung
auftreten, verringern kann.
-
Darüber hinaus
werden Codierdaten bei der Codierung eines Bewegtbildes in eine
Vielzahl von Gruppen von Codierdaten unterteilt. Zumindest eine der
Gruppen von Codierdaten ist in der Vorwärtsrichtung beschrieben und
die weiteren Gruppen der Codierdaten sind in der Rückwärtsrichtung
beschrieben, so dass es möglich
ist, die Decodiereffizienz von Bewegtbilddaten zu verbessern und
zu verhindern, dass die Qualität
des decodierten Bildes stark verschlechtert wird.
-
Wenn
darüber
hinaus zwei unabhängige
Codefolgen von einem Eingangsbild durch Codieren eines Bewegtbildes
ausgegeben werden, werden die durch Unterteilen des Eingangsbildes
erlangten jeweiligen Bereiche in unterschiedlicher Reihenfolge codiert.
Selbst wenn die Decodierung in Folge von Fehlern, die in der Mitte
jedes der Daten von beiden Codefolgen auftreten, unmöglich war,
wird der Abschnitt, der decodiert werden konnte, nicht auf einen Teil
eines Bildschirms konzentriert, so dass es möglich ist, den ganzen Bildschirm
oder einen bedeutenden Abschnitt des Bildschirms in vorzüglicher
Weise wiederzugeben.
-
Unter
Bezugnahme auf 36 bis 73 werden
nachstehend die bevorzugten Ausführungsbeispiele
eines Codiersystems und/oder Decodiersystems mit variabler Wortlänge gemäß der Erfindung
beschrieben.
-
36 zeigt ein Blockschaltbild des ersten bevorzugten
Ausführungsbeispiels
eines Codiersystems und/oder Decodiersystems mit variabler Wortlänge gemäß der Erfindung.
Das Codierungssystem und/oder Decodierungssystem mit variabler Wortlänge in dem
bevorzugten Ausführungsbeispiel
enthält einen
Codeworttabellenvorbereitungsabschnitt 101, einen Codierabschnitt 114,
ein Übertragungs-
oder Speichersystem 104 und einen Decodierabschnitt 115.
Zunächst
wird die Funktion jedes dieser Abschnitte kurz beschrieben.
-
Der
Codeworttabellenvorbereitungsabschnitt 101 bereitet Codeworttabellen
auf der Grundlage der Wahrscheinlichkeiten von Quellsymbolen zum Übertragen
der vorbereiteten Codeworttabellen zu einer Codiertabelle 102 in
dem Codierabschnitt 114 und eine Vorwärtscodeworttabelle 110 und
eine Rückwärtscodeworttabelle 122 in
dem Decodierabschnitt 115 vor. Der Codierabschnitt 114 codiert
das Quellsymbol in ein Codewort mit variabler Wortlänge zum
Ausgeben des codierten Codes mit variabler Wortlänge an das Übertragungs- oder Speichersystem 104 als
Codierdaten. Der Decodierabschnitt 115 decodiert die durch
die Übertragungs-
oder Speichereinheit 104 eingespeisten Codierdaten zum
Reproduzieren des ursprünglichen
Quellsymbols.
-
Der
detaillierte Aufbau und Betrieb jedes der Abschnitte im bevorzugten
Ausführungsbeispiel
wird nachstehend beschrieben.
-
In
dem Codierabschnitt 114 wird das eingespeiste Quellsymbol
zu einer Codiereinheit 103 eingespeist. Andererseits speichert
die Codeworttabelle 102 Quellsymbole, die durch den Codeworttabellenvorbereitungsabschnitt 101 vorbereitet
worden sind, und Codeworte von Coden mit variabler Wortlänge, die
den Quellsymbolen entsprechen. Die Codiereinheit 103 wählt ein
Codewort, das dem eingespeisten Quellsymbol entspricht, aus den
in der Codeworttabelle 102 gespeicherten Codeworten aus
und gibt das ausgewählte
Codewort als Codierdaten aus. Die Codierdaten werden zu der Decodiereinheit 115 über das Übertragungs-
oder Speichersystem 104 übertragen. Dabei wird ein Synchronisiercode
in die Codierdaten mit regelmäßigen Intervalen
eingefügt.
-
In
dem Decodierabschnitt 115 erfaßt ein Synchronisiercodeerfassungsabschnitt 105 einen
Synchronisiercode auf der Grundlage der Codierdaten, die durch das Übertragungs-
oder Speichersystem 104 eingespeist sind, und speichert
ein Zwischenspeicher 106 die Codierdaten zwischen benachbarten
Synchronisiercoden. In einer Vorwärtsdecodiereinheit 107 werden
die in dem Zwischenspeicher 106 gespeicherten Codierdaten
in einer Abfolge, die von dem Kopf der Codierdaten startet, auf
der Grundlage eines von einem Vorwärtsdecodierbaumvorbereitungsabschnitt 101 zugeführten Vorwärtsdecodierbaums
decodiert. In einer Rückwärtsdecodiereinheit 108 werden
die in dem Zwischenspeicher 106 gespeicherten Decodierdaten
in einer Abfolge decodiert, die von dem Ende der Codierdaten startet,
auf der Grundlage eines von einem Rückwärtsdecodierbaumvorbereitungsabschnitt 113 zugeführten Rückwärtsdecodierbaums.
-
Ein
Decodierwertentscheidungsabschnitt 109 entscheidet einen
decodierten Wert auf der Grundlage eines durch die Vorwärtsdecodiereinheit 107 erlangten
decodierten Ergebnisses (das nachstehend als "Vorwärtsdecodierergebnis" bezeichnet wird)
und eines decodierten Ergebnisses, das durch die Rückwärtsdecodiereinheit 108 erlangt
wird (das nachstehend als "Rückwärtsdecodierergebnis" bezeichnet wird)
und gibt ein decodiertes Endergebnis aus. D.h., da ein Bitmuster,
das nicht in dem Decodierbaum erscheint, auftritt, falls ein Fehler
in den Decodierdaten auftritt, kann die Existenz des Fehlers erfaßt werden,
so dass der Decodierentscheidungsabschnitt 109 einen decodierten
Wert auf der Grundlage des Vorwärtsdecodierergebnisses
und des Rückwärtsdecodierergebnisses
gemäß der Darstellung von 37 beschließt. 37 zeigt ein Verfahren zum Entscheiden von decodierten
Werten zwischen den benachbarten Synchronisiercoden.
-
Gemäß der Darstellung
von 37(a) werden zunächst, wenn
die Position eines Codewortes, bei dem ein Fehler erfaßt wird,
in dem decodierten Ergebnis in der Vorwärtsrichtung nicht mit der Fehlererfassungsposition
in dem decodierten Ergebnis in der Rückwärtsrichtung zusammentrifft,
nur die decodierten Ergebnisse, bei welchen kein Fehler erfaßt wird,
als decodierte Werte verwendet und werden die decodierten Ergebnisse
an zwei Fehlererfassungspositionen nicht als decodierte Werte verwendet,
so dass sie verworfen werden.
-
Gemäß der Darstellung
von 37(b) werden, wenn die Fehlererfassungspositionen
in den decodierten Ergebnissen in der Vorwärtsrichtung und der Rückwärtsrichtung
einander passiert haben, die decodierten Ergebnisse, bei welchen
kein Fehler erfaßt
wird, als decodierte Werte verwendet. In diesem Fall werden die
decodierten Ergebnisse zwischen den Codeworten bei den zwei Fehlerfassungspositionen
nicht als decodierte Werte verwendet, so dass sie verworfen werden.
-
Darüber hinaus
wird gemäß der Darstellung in 37(c), wenn ein Fehler lediglich in einem
der decodierten Ergebnisse in der Vorwärtsrichtung und der Rückwärtsrichtung
erfaßt
worden ist (in diesem Fall ist ein Fehler nur in dem decodierten
Ergebnis in der Vorwärtsrichtung
erfaßt
worden), der decodierte Wert bezüglich
dem Codewort an der Fehlererfassungsposition verworfen und werden
die decodierten Ergebnisse in der Rückwärtsrichtung als decodierte Werte
bezüglich
den folgenden Codeworten verwendet.
-
Darüber hinaus
wird gemäß der Darstellung von 37(d), wenn Fehler bezüglich dem gleichen Codewort
in den decodierten Ergebnissen sowohl in der Vorwärtsrichtung
als auch in der Rückwärtsrichtung
erfaßt
werden, der decodierte Wert bezüglich dem
Codewort an der Fehlererfassungsposition verworfen und werden die
decodierten Ergebnisse in der Rückwärtsrichtung
als decodierte Werte bezüglich den
nachfolgenden Codeworten in gleichartiger Weise zu 37(c) verwendet.
-
Der
Codeworttabellenvorbereitungsabschnitt 101 bereitet eine
Codeworttabelle, die sowohl in der Vorwärtsrichtung als auch in der
Rückwärtsrichtung
decodiert werden kann, auf der Grundlage der Wahrscheinlichkeit
eines Quellsymbols vor. Die durch den Codeworttabellenvorbereitungsabschnitt 101 vorbereitete
Codeworttabelle wird zu der Codeworttabelle 102 in dem
Codierabschnitt 114 und zu einer Vorwärtscodeworttabelle 110 und
einer Rückwärtscodeworttabelle 112 in
dem Decodierabschnitt 115 übertragen. In dem Vorwärtsdecodierbaumvorbereitungsabschnitt 111 wird
ein Vorwärtsdecodierbaum
auf der Grundlage der Vorwärtscodeworttabelle 110 vorbereitet.
Darüber
hinaus wird in dem Rückwärtsdecodierbaumvorbereitungsabschnitt 113 ein
Rückwärtsdecodierbaum
auf der Grundlage der Rückwärtscodeworttabelle 112 vorbereitet.
-
38 zeigt ein Blockschaltbild des Codeworttabellenvorbereitungsabschnitts 101.
Ein Codeauswahlabschnitt 21 speist Daten der Wahrscheinlichkeit
des Quellsymbols ein und wählt
ein Codesystem mit der minimalen mittleren Codelänge aus auswählbaren
Codesystemen auf der Grundlage der Daten der Wahrscheinlichkeit
des Quellsymbols zum Übertragen
des ausgewählten
Ergebnisses zu einem Codewortkonfigurierabschnitt 22 aus.
Der Codewortkonfigurierabschnitt 22 konfiguriert Codeworte des
durch den Codewortauswahlabschnitt 21 ausgewählten Codes.
Die durch den Codewortkonfigurierabschnitt 22 vorbereitete
Codeworttabelle wird zu der Codeworttabelle 102 in dem
Codierabschnitt 114 und der Vorwärtscodeworttabelle 110 in
dem Decodierabschnitt 115 übertragen. Zu der Rückwärtscodeworttabelle 112 in
dem Decodierabschnitt 115 wird die in der Rückwärtsrichtung
der Vorwärtsrichtung
beschriebene Codeworttabelle übertragen.
-
In
dem Codeauswahlabschnitt
21 werden die eingespeisten Quellsymbole
in der Reihenfolge der Wahrscheinlichkeit umgeordnet, so dass S
= |S1, S2, ..., Sn| ist, und auf der Grundlage der Wahrscheinlichkeiten
P der Quellsymbole S wird ein Code C, der die folgende Formel erfüllt, aus
einem Satz von konfigurierbaren Coden C ausgewählt.
wobei Li eine Codelänge ist,
die durch eine Gewichtung eines Codewortes berechnet werden kann,
die durch den Codewortkonfigurierabschnitt
22 gegeben. ist.
In diesem Fall ist die Gewichtung eines Codewortes die Anzahl von "1" oder "0" in
dem Codewort.
-
Nachstehend
wird ein Verfahren zum Konfigurieren eines Codewortes in dem Codewortkonfigurierabschnitt 22 beschrieben.
-
39 zeigt ein Beispiel eines Verfahrens zum Konfigurieren
eines Binärcodesystems,
bei dem die Gewichtungen bzw. Wertigkeiten für Code mit variabler Wortlänge, konstant
sind. Gemäß der Darstellung
von 39(a) wir ein gitterartig gerichteter Graph
von dem Startpunkt zu dem Endpunkt ausgebildet. In dem gewichteten
Graph entspricht für
den Fall, dass der Verlauf von dem Startpunkt zu dem Endpunkt folgt, "1" dem Binärcode, wenn der linke Kurs
ausgewählt
ist, und "0" entspricht dem Binärcode, wenn
der rechte Kurs ausgewählt
wird, so dass ein Binärcodesystem
ausgebildet wird, wie es in 39(b) gezeigt
ist. In diesem Beispiel hat das konfigurierte Binärcodesystem
eine Codelänge
von 5 Bits und eine Wertigkeit (die Anzahl von "1) von zwei. Allgemein ist die Zahl
der Binärcodesysteme,
die eine Codelänge
von N-Bits und eine Wertigkeit von W haben, gleich zu der Zahl der
Kombinationen, die durch Auswählen
von W aus N ausgebildet wird. In diesem Fall gibt es zehn Binärcodesysteme,
da die Zahl der Kombinationen durch Auswählen von zwei aus 5 ausgebildet
ist.
-
40 zeigt ein erstes Verfahren zum Konfigurieren
von Codeworten eines Codes in variabler Wortlänge in dem Codewortkonfigurierabschnitt 22, der
sowohl in der Vorwärtsrichtung
als auch in der Rückwärtsrichtung
decodiert werden kann (was nachstehend als "reversibler Code" bezeichnet wird). Gemäß der Darstellung
auf der linken Seite von 40 ist
zunächst
ein Binarcodesystem, das das Quellsymbol 1 aufweist (in diesem Fall
9) und bei dem die Wichtung (die Anzahl von "1")
konstant ist (in diesem Fall 1) in der Reihenfolge einer kürzeren Codelänge mit
dem Verfahren von 39 konfiguriert. Gemäß der Darstellung
von 40 wird dann "1" dem Kopf und dem Ende jedes der Binärcodesystem hinzugefügt und wird "0" dem kürzesten Code zugewiesen, so
dass die Codeworte des reversiblen Codes konfiguriert sind. Der
reversible Code startet immer von dem Code "0" bezüglich dem
Quellsymbol A und von dem Code "1" bezüglich den
weiteren Quellsymbolen B bis J zum Ausbilden einer Codekonfiguration,
bei der der Code beendet ist, wenn dreimal "1" auftritt,
d.h. die Pause zwischen Coden (die Codelänge) kann erfaßt werden.
-
Die
notwendigen und ausreichenden Bedingungen, dass der Code mit variabler
Wortlänge
ein reversibler Code ist, d.h. der Code kann sowohl in der Vorwärts- als
auch in der Rückwärtsrichtung
decodiert werden, sind, dass alle die Codeworte den Blättern des
Decodierbaums in der Vorwärtsrichtung
und den Blättern
des Decodierbaums in der Rückwärtsrichtung
zugewiesen sind. Die Blätter
des Decodierbaums stehen für
das Ende des Decodierbaums, d.h. eine Stelle, an der nichts davor
ist. In dem Code mit variabler Wortlänge von 40 sind
beispielsweise die Codeworte, die allen den Quellsymbolen A bis
J entsprechen, den Blättern
des Decodierbaums in der Vorwärtsrichtung
gemäß der Darstellung
von 41(a) sowie den Blättern des
Decodierbaums in der Rückwärtsrichtung
gemäß der Darstellung
von 41(b) zugewiesen. Daher kann er
sowohl in der Vorwärts-
als auch in der Rückwärtsrichtung
decodiert werden.
-
Die
Parameter bei dem Verfahren zum Konfigurieren von Codeworten eines
Codes mit variabler Wortlänge
von 40 kann verschiedenen Wahrscheinlichkeiten
von Quellsymbolen entsprechen, indem als die Wertigkeit die Anzahl
von "1" in den Codeworten
und eine natürliche
Zahl W, die nicht kleiner als 2 ist, ausgewählt wird. Natürlich kann
das gleiche Ergebnis durch Umkehren der Bits zum Betrachten der
Anzahl von "0" als die Wertigkeit
erlangt werden.
-
42 zeigt ein zweites Verfahren zum Konfigurieren
von Codeworten eines reversiblen Codes in dem Codewortkonfigurierabschnitt
22. Zunächst wird
gemäß der linken
Seite von 42 ein Binärcodesystem, das ein Quellsymbol
2 aufweist und bei dem die Gewichtung (die Anzahl von "1") konstant ist (in diesem Fall 1) in
der Reihenfolge einer kürzeren Codelänge durch
das Verfahren von 39 konfiguriert. Danach wird,
wie es in der Mitte von 43 gezeigt
ist, "1" dem Kopf und dem
Ende jedes der Binärcodesysteme
hinzugefügt
und werden die Codeworte, die durch Umkehren der Bits der Codeworte
erlangt werden, den Binärcodesystemen
hinzugefügt, wie
es in 42 gezeigt ist.
-
Bei
dem Code mit variabler Wortlänge
kann die Codelänge
gefunden werden, indem die Zahl der Symbole am Beginn jedes Codes
gezählt
wird. In dem Beispiel von 43,
wenn vier Symbole am Beginn jedes der Code auftreten, sind die Code
beendet, d.h. die Pause zwischen Coden (die Codelänge) kann
erfaßt
werden.
-
Bei
dem Code mit variabler Wortlänge
von 42 sind die Codeworte, die
allen den Quellsymbolen A bis J entsprechen, den Blättern des
Decodierbaums in der Vorwärtsrichtung,
wie er in 43(a) gezeigt ist, sowie
den Blättern
des Decodierbaums in der Rückwärtsrichtung,
wie er in 43(b) gezeigt ist, zugeordnet.
Daher kann er sowohl in der Vorwärts-
als auch in der Rückwärtsrichtung
decodiert werden.
-
44 zeigt ein drittes Verfahren zum Konfigurieren
von Codeworten eines reversiblen Codes in dem Codewortkonfigurierabschnitt 22.
Bei dem reversiblen Code kann die Codelänge der Codeworte gefunden
werden, wenn die Anzahl von "0" gleich zu der Zahl
von "1" ist. D.h., es wird
ein gitterartig gerichteter Graph, wie er in 44(a) gezeigt
ist, betrachtet. In diesem gerichteten Graph entspricht, wenn der linke
Kurs, der von dem Startpunkt startet, ausgewählt wird, '0' dem
Binärcode,
und wenn der rechte Kurs ausgewählt
wird, entspricht "1" diesem, so dass Codeworte
durch den Kurs ausgebildet werden, der die Punkte an der Diagonallinie
erreicht, die durch den Startpunkt verläuft.
-
In
diesem Fall sind die Codeworte, die allen den Quellsymbolen A bis
J entsprechen, den Blättern des
Decodierbaums in der Vorwärtsrichtung
zugewiesen, wie es in 45(a) gezeigt
ist, sowie den Blättern
des Decodierbaums in der Rückwärtsrichtung
zugewiesen, wie es in 45(b) gezeigt
ist, so dass ersichtlich ist, dass sie sowohl in der Vorwärtsrichtung
als auch in der Rückwärtsrichtung
decodiert sein können.
-
Ein
Verfahren zum Verkürzen
eines reversiblen Codes gemäß einem
Ausführungsbeispiel
der Erfindung wird nachstehend beschrieben.
-
Da
die Zahl der Quellsymbole, d.h. die Zahl der Code eines Codes mit
variabler Wortlänge
begrenzt ist, ist es möglich
einen Teil eines Codes eines variablen Codes zu verkürzen. Der
Ausdruck "Verkürzen" bedeutet, dass die
Codelänge
eines Teils eines Codes verkürzt
wird, ohne dass die Codelänge von
weiteren Coden erhöht
wird. 46 zeigt ein Beispiel eines
Verfahrens zum Verkürzen
eines reversiblen Codes. Wird beispielsweise in dem reversiblen
Code, wie er in 42 gezeigt wird, ein Bit an dem
Ende der Codeworte, die den Quellsymbolen G, H, I und J entsprechen,
entfernt, ist es möglich,
den reversiblen Code sowohl in der Vorwärts- als auch in der Rückwärtsrichtung
zu decodieren. Durch Anwendung dessen wird die Codelänge von
vier Codeworten, die den Quellsymbolen G, H, J und J entsprechen,
in 46 verkürzt.
-
In
dem Code mit variabler Wortlänge,
wie er in 46 gezeigt ist, sind die Codeworte,
die allen den Quellsymbolen A bis J entsprechen, den Blättern des
Decodierbaums in der Vorwärtsrichtung,
wie es in 47(a) gezeigt ist, sowie
den Blättern
des Decodierbaums in der Rückwärtsrichtung,
wie es in 47(b) gezeigt ist, zugeordnet.
Daher kann er sowohl in der Vorwärts-
als auch in der Rückwärtsrichtung
decodiert werden.
-
Unter
Bezugnahme auf 48 wird nachstehend ein Verfahren
zum Erweitern eines reversiblen Codes gemäß einem Ausführungsbeispiel
der Erfindung erläutert.
-
Die
Erweiterung eines reversiblen Codes kann durch Hinzufügen eines
Codes mit fixer Wortlänge
zum Kopf und/oder zum Ende eines jeden Codes zum Erhöhen der
Zahl der Codeworte der gesamten Codelänge erfolgen. In einem Beispiel
von 48 wird ein Code mit fixer
Wortlänge von
zwei Bits dem Ende jedes reversiblen Codes hinzugefügt, wie
es auf der linken Seite gezeigt ist. Obwohl in diesem Fall die Codelänge jedes
reversiblen Codes im Gesamten um zwei Bits ansteigt, wird die Zahl
der Codeworte der gleichen Codelänge
um das Vierfache erhöht.
Wird ein Code mit fixer Wortlänge
von N-Bits hinzugefügt,
können
allgemein, obwohl die Codelänge
im Gesamten um N-Bits ansteigt, die Zahl der Codeworte der gleichen
Codelänge
um das 2N-fache ansteigen. Da der Code mit fixer Wortlänge klar
ein reversibler Code ist, bleibt er, falls ein Code mit fixer Wortlänge dem
Kopf oder dem Ende des reversiblen Codes hinzugefügt wird,
ein reversibler Code.
-
49 zeigt den Vergleich zwischen einem reversiblen
Code, der durch Codieren mit variabler Wortlänge von Quellsymbolen erlangt
wird, die dem Alphabet in Englisch entsprechen, gemäß einem Ausführungsbeispiel
der Erfindung und einem reversiblen Code, der in der japanischen
Patentoffenlegungsschrift Nr. 5-300027 offenbart ist. Der reversible
Code gemäß dem Ausführungsbeispiel
der Erfindung, wie er in 49 gezeigt
ist, ist ein Code, der durch Hinzufügen eines Codes mit fixer Wortlänge von
2 Bits an das Ende eines Codes erweitert ist, wenn die Wertigkeit
des Codewortes in dem Verfahren, wie es in 40 gezeigt
ist, null ist.
-
Obwohl
der reversible Code gemäß dem Ausführungsbeispiel
der Erfindung dem Hufmanns-Code unterlegen ist, der dem optimalen
Code für
einen Code mit variabler Wortlänge
entspricht, der nur in der Vorwärtsrichtung
decodiert werden kann, ist seine mittlere Codelänge kürzer als der reversible Code,
der in der vorstehend angeführten
japanischen Patentoffenlegungsschrift offenbart ist, und weist eine
bessere Leistungsfähigkeit
auf. Der bekannte reversible Code ist ein Code, bei dem Bits dem
Ende des Hufmanns-Codes hinzugefügt
werden, der ein Code mit variabler Wortlänge ist, der nur in der Vorwärtsrichtung
decodierbar ist. Andererseits werden gemäß dem Ausführungsbeispiel der Erfindung
exzessive Bits hinzugefügt
und ist ein reversibler Code ursprünglich konfiguriert, so dass
die Zahl von nutzlosen Bit-Mustern gering ist.
-
Das
zweite bevorzugte Ausführungsbeispiel eines
Codiersystems und/oder Decodiersystems mit variabler Wortlänge gemäß der Erfindung
wird nachstehend beschrieben.
-
50 zeigt ein Blockschaltbild des zweiten bevorzugten
Ausführungsbeispiels
eines Codiersystems und/oder Decodiersystems mit variabler Wortlänge gemäß der Erfindung.
Das Codiersystem und/oder Decodiersystem mit variabler Wortlänge in dem
bevorzugten Ausführungsbeispiel
enthält
allgemein einen Codeworttabellenvorbereitungsabschnitt 201,
einen Codierabschnitt 213, ein Übertragungs- und Speichersystem 205 und
einen Decodierabschnitt 214.
-
Die
Funktionsweise jeder dieser Abschnitte wird nachstehend kurz beschrieben.
Der Codeworttabellenvorbereitungsabschnitt 201 enthält eine
Codeworttabelle auf der Grundlage der Wahrscheinlichkeit eines Quellsymbols
zum Übertragen
davon zu einer Codiertabelle 202 in dem Codierabschnitt 213 und
zum Übertragen
der Parameter der Codierworte der vorbereiteten Codeworttabelle
zu einem Decodiergraph und einem Decodierwerttabellenvorbereitungsabschnitt 208 in
dem Decodierabschnitt 214. Der Codierabschnitt 213 codiert
das Quellsymbol zu einem Code mit variabler Wortlänge zum
Ausgeben des Codes mit variabler Wortlänge zu dem Übertragungs- oder Speichersystem 205 als
Codierdaten. Der Decodierabschnitt 214 decodiert die über das Übertragungs-
oder Speichersystem 205 eingespeisten Codierdaten zum Wiedergeben
des ursprünglichen
Quellsymbols.
-
Der
detaillierte Aufbau und Betrieb jedes Abschnittes im bevorzugten
Ausführungsbeispiels
wird nachstehend beschrieben.
-
In
dem Codierabschnitt 213 wird das eingespeiste Quellsymbol
einem Codierer 203 eingespeist. Andererseits speichert
die Codeworttabelle 202 die Quellsymbole, die durch den
Codeworttabellenvorbereitungsabschnitt 201 vorbereitet
worden sind, und die Codeworte der Code mit variabler Wortlänge, die
den Quellsymbolen entsprechen. Jedoch die Codeworttabelle 202 enthält nicht
alle die Codeworte, die allen den Quellsymbolen entsprechen, die eingespeist
werden können,
und sie speichert nur die Codeworte, die einem Teil der Quellsymbole
entsprechen, die eine relativ hohe Auftrittswahrscheinlichkeit aufweisen.
Der Codierer 203 wählt
ein Codewort, das dem eingespeisten Quellsymbol entspricht, aus
den in der Codeworttabelle 202 gespeicherten Codeworten
aus und gibt es als Codierdaten aus.
-
Wird
ein Quellsymbol, bei dem kein entsprechendes Codewort in der Codeworttabelle 202 enthalten
ist, d.h. ein Quellsymbol mit relativ geringer Auftrittswahrscheinlichkeit,
eingespeist zu dem Codierabschnitt 213, wird ein Code mit
fixer Wortlänge, der
dem Quellsymbol entspricht, durch einen Codierabschnitt 204 für einen
Code mit fixer Wortlänge
vorbereitet und wird ein Escape-Code in der Codeworttabelle 202 dem
Präfix
und dem Suffix des Codes mit fixer Wortlänge zum Konfigurieren von Codeworten hinzugefügt, die
als Codierdaten ausgegeben werden.
-
Die
auf diese Weise von dem Codierer 203 in dem Codierabschnitt 213 ausgegebenen
Codierdaten werden zu dem Decodierer 214 über das Übertragungs-
oder Speichersystem 205 übertragen. Dabei wird ein Synchronisiercode
mit jeder vorbestimmten Periode in die Codierdaten eingefügt.
-
Der
Decodierabschnitt 214 enthält einen Synchronisiercodedetektierabschnitt 206,
einen Zwischenspeicher 207, den Decodiergraphen- und Decodierwerttabellenvorbereitungsabschnitt 208,
einen Vorwärtsdecodierer 209,
einen Decodierabschnitt 210 mit fixer Wortlänge und
einen Rückwärtsdecodierer 211 und
einen Decodierwertentscheidungsabschnitt 212. Zunächst erfaßt der Synchronisiercodeerfassungsabschnitt 206 einen
Synchronisiercode auf der Grundlage der durch das Übertragungs-
und Speichersystem 205 eingespeisten Codierdaten und speichert
der Zwischenspeicher 207 die Codierdaten zwischen den benachbarten
Synchronisiercoden. In dem Vorwärtsdecodierer 209 werden
die in dem Zwischenspeicher 207 gespeicherten Codierdaten
in einer Abfolge decodiert, die von dem Präfix der Codierdaten startet.
In dem Rückwärtsdecodierer 211 werden
die in dem Zwischenspeicher 207 gespeicherten Decodierdaten
in einer Abfolge decodiert, die von dem Suffix der Codierdaten startet.
Der Decodierwertentscheidungsabschnitt 212 entscheidet
einen Decodierwert auf der Grundlage eines decodierten Ergebnisses,
das durch den Vorwärtsdecodierer 209 erlangt
wird (welches nachstehend als "vorwärtsdecodierter
Wert" bezeichnet wird)
und eines decodierten Ergebnisses, das durch den Rückwärtsdecodierer 211 erlangt
wird (das nachstehend als "rückwärtsdecodierter
Wert" bezeichnet
wird), und gibt ein endgültig
decodiertes Ergebnis aus.
-
51 zeigt ein Verfahren zum Hinzufügen von
Escape-Coden zu dem Kopf und zu dem Ende von Coden mit fixer Wortlänge zum
Konfigurieren von Codeworten in dem Codeworttabellenvorbereitungsabschnitt 201.
Gemäß der Darstellung
von 51(a) ist das durch den Codeworttabellenvorbereitungsabschnitt 201 vorbereitete
Codewort grundsätzlich
ein reversibler Code, bei dem eine Pause eines Codes durch das Auftreten
von drei "1" mit Ausnahme des Quellsymbols "A" erfaßt werden kann. Der reversible Code
wird nachstehend als "Code
(1)" bezeichnet.
-
Andererseits
ist ein Code (2), wie er in 51(b) gezeigt
ist, durch neuerliches Hinzufügen zu
dem Code (1) eines Codewortes, das durch Hinzufügen zu dem Kopf und dem Ende
eines Codes mit fixer Wortlänge
von 3 Bit konfiguriert ist, wobei das Codewort "1011" dem
Quellsymbol "C" des Codes (1) als
Escape-Code zum Darstellen des Kopfes und des Endes des Codes mit
fixer Wortlänge
entspricht. Die Abschnitte des reversiblen Codes des Codes (2),
die dem Code (1) entsprechen, verwenden jedoch nicht das Codewort "1011", das als der Escape-Code
in dem Code (2) verwendet wird und verwenden nur die Codeworte,
die den Quellsymbolen A bis I entsprechen, wobei die Zahl davon
um eins geringer als die des Codes (1) ist. Aus dem Vergleich von 51(a) und 51(b) ist
klar ersichtlich, dass die Anzahl der Quellsymbole, die codiert
werden können,
von "10" des Codes (1) auf "17" des Codes (2) ansteigt.
-
Um
einen derartigen Code (2), wie er aus 51(a) und 51(b) ersichtlich ist, zu decodieren, wird
der Code (1) immer einmal decodiert, wenn der Code (2) in der Vorwärts- und
Rückwärtsrichtung
decodiert wird, und kann der Code mit fixer Wortlänge in der
Vorwärts-
und der Rückwärtsrichtung
decodiert werden. Falls daher der Code (1) in der Vorwärts- und
in der Rückwärtsrichtung
decodiert werden kann, kann der Code (2) in der Vorwärts- und
in der Rückwärtsrichtung
decodiert werden.
-
Für den Fall
von konventionellen reversiblen Coden ist es notwendig, alle die
Codeworte, die den Quellsymbolen entsprechen, die eingespeist werden können, als
Codeworttabellen in dem Codierer 213 und dem Decodierer 214 vorzubereiten.
Andererseits kann in dem Code (2) der Codeabschnitt mit fixer Wortlänge separat
als Binärcode
mit 3 Bit in dem Codierabschnitt 204 für einen Code mit fixer Wortlänge und
dem Decodierabschnitt 210 für den Code mit fixer Wortlänge vorbereitet
sein, so dass die Codeworttabelle 202 nur die Codeworte
des Codes (1) speichert. Daher ist es möglich, die Speicherkapazität des Codiersystems
und/oder Decodiersystems mit variabler Wortlänge im Vergleich zu den konventionellen
reversiblen Coden stark zu verringern.
-
Der
Decodiergraph und Decodierwerttabellenvorbereitungsabschnitt 208 bereitet
einen Decodiergraphen auf der Grundlage eines Shalkwijk's Algorithmus und
eine Decodierwerttabelle vor. Der Vorwärtsdecodierer 209 und
der Rückwärtsdecodierer 211 decodieren
Code auf der Grundlage der Decodiergraphen und der Decodierwerttabelle.
-
52 zeigt ein Verfahren zum Zählen eines Binärwertsystems
einer konstanten Wertigkeit. Als ein Beispiel eines Algorithmuses
zum Zählen
eines Binärcodesystems
mit konstanter Wertigkeit ist der Algorithmus, der in "An algorithm for
source coding" (J.P.M.
Shalkwijk; IEEE Trans. Inform Theory, vol. IT-18, No. 3, pp. 395-399,
May 1972) als Shalkwijk's Algorithmus
bekannt. In dem Shalkwijk's
Algorithmus ist ein gitterartig gerichteter Graph, der sich von
dem Startpunkt zu dem Endpunkt erstreckt, auf der Grundlage eines "Pascal-Dreiecks" ausgebildet, wie es
in 52(a) gezeigt ist. Der durch eine
Zahl einer Verbindung ausgedrückte
Wert ist gleich der Gesamtzahl der Werte der Verbindungen an den
Startpunkten der Pfeile, die an der vorstehend angeführten Verbindung
eintreffen, unter der Annahme, dass der Wert an dem Startpunkt 1
ist. D.h., die Werte der jeweiligen Verbindungen werden durch das
Pascalsche Dreieck bestimmt.
-
Für den Fall,
dass der Kurs von dem Startpunkt zu dem Endpunkt gemäß den eingespeisten Quellsymbolen
in dem gerichteten Graph von 52(a) verläuft, kann
ein Binärcodesystem
mit einer Wertigkeit von 2 ausgebildet werden, indem "0" des Codewortes zum Entsprechen des
Binärcodes veranlaßt wird,
wenn der linke Kurs (Pfeil) ausgewählt wird, und "1" des Codewortes zum Entsprechen des
Binärcodes
veranlaßt
wird, wenn der rechte Kurs (Pfeil) ausgewählt wird. Die Gesamtzahl der Werte,
die durch Subtrahieren des Wertes an der Verbindung des Startpunktes
eines Pfeils von dem Wert an der Verbindung des Endpunktes eines
Pfeils erlangt wird, wenn "0" ausgewählt ist,
ist der Rangordnungswert bzw. Zählwert
(rank Order value) bezüglich
der Codeworte der gleichen Codelänge
in dem Binärcodesystem.
Falls beispielsweise das eingespeiste Quellsymbol "01001" ist, ist der Rangordnungswert
der Gesamtwert der Differenzen zwischen den Werten an Verbindungen
bezüglich
drei "0", d.h. (1-1) + (3-2)
+ (4-3) = 2. Der
Rangordnungswert bedeutet einen Wert zum Bestimmen der Reihenfolgen verschiedener
Codeworte der gleichen Codelänge. 52(b) zeigt die Beziehung zwischen dem
Quellsymbol und dem Rangordnungswert in diesem Fall.
-
Das
Beispiel der Anwendung des Shalkwijk's Algorithmus zum Codieren ist bekannt.
In diesem Fall wird die Codierung durch Transformieren des Wertes,
der dem vorstehend angeführten
Rangordnungswert entspricht, in einen Binarcode ausgeführt. Andererseits
wird gemäß dem bevorzugten
Ausführungsbeispiel
der Erfindung der Algorithmus für
das Decodieren, wie nachstehend ausgeführt, verwendet.
-
D.h.,
in dem Decodiergraphen- und Decodierwerttabellenvorbereitungsabschnitt 208 wird
ein gerichteter Graph als Decodiergraph auf der Grundlage des vorstehend
angeführten
Shalkwijk's Algorithmus
vorbereitet. D.h., der Decodiergraph ist ein gerichteter Graph,
bei dem die Werte, die durch das Pascalsche Dreieck bestimmt werden,
die Werte an Verbindungen sind und die Pfeile durch "1" und "0" ausgedrückt werden.
Ein Beispiel davon ist in 53(a) gezeigt. 53(b) zeigt ein Beispiel eines Verfahrens
zum Berechnen eines decodierten Wertes in dem Vorwärtsdecodierer 208 und
dem Rückwärtsdecodierer 211,
die diesen Decodiergraphen verwenden.
-
Der
Code (1), wie er in 51(a) gezeigt
ist, ist ein reversibler Code, bei dem eine Pause durch einen Punkt
gesucht werden kann, bei dem drei "1" auftreten.
Für den
Fall, dass ein decodierter Wert des reversiblen Codes für den Code
(1) berechnet wird, wird bezüglich
der Vorwärtsrichtung
0 dem decodierten Wert zugeführt,
falls das Präfix
des reversiblen Codes "0" ist, und wird "1" am Kopf und "1" am
Ende entfernt, falls das Präfix
nicht "0" ist und wird dann
der Rangordnungswert auf der Grundlage des Shalkwijk's Algorithmus berechnet.
Da nun die Zahl der Codeworte mit einer kürzeren Codelänge als
eines zu decodierenden Codewortes +1 ist, das der Gesamtwert der
Werte der Verbindungen entlang der Linie ist, die nach rechts von
dem Endpunkt in 53(a) geneigt ist,
wird der decodierte Wert durch Addieren des Rangordnungswertes zu
dem Gesamtwert erlangt.
-
Andererseits
wird bezüglich
der Rückwärtsrichtung
gleichartig zu der Vorwärtsrichtung
0 dem decodierten Wert zugeführt,
falls der Kopf des reversiblen Codes "0" ist
und werden "1" am Kopf und "1" am Ende entfernt, falls der Kopf nicht "0" ist. Nachdem danach die Restabschnitte
umgekehrt sind, wird der Rangordnungswert auf der Grundlage des
Shalkwijk's Algorithmus
berechnet. Der decodierte Wert wird erlangt, indem der Rangordnungswert
zu dem Gesamtwert der Werte der Verbindungen entlang der Linie addiert
wird, die nach rechts von dem Endpunkt geneigt ist.
-
Unter
Bezugnahme auf 53(a) und 53(b) wird das Verfahren zum Berechnen
eines decodierten Wertes im Detail beschrieben. Falls beispielsweise
das Codewort eines reversiblen Codes, das zu decodieren ist, "10101" ist, werden "1" am Kopf und "1" am
Ende zu "010" entfernt. Ist der
Rangordnungswert bezüglich
dem "010" auf der Grundlage
des Shalkwijk's
Algorithmuses hergeleitet, ist er (1-1) + (3-2) = 1 bezüglich zwei "0"en. Da in diesem Fall die Gesamtzahl
der Werte der Verbindungen entlang der Linie, die nach rechts von
dem Endpunkt geneigt ist, 1 + 2 = 3 ist, kann der decodierte Wert
zu 5 berechnet werden, in dem der Wert +1 (=4) zu dem Rangordnungswert
(=1) addiert wird.
-
Wird
die Decodierung mittels eines derartigen Decodiergraphen ausgeführt, ist
es möglich,
die Speicherkapazität
stark zu verringern. 54(a) und 54(b) zeigen den Unterschied zwischen den
notwendigen Speicherkapazitäten
bei dem konventionellen Codierverfahren, das ein Codierbaum verwendet, und
dem Codierverfahren, das einen Decodiergraphen gemäß dem bevorzugten
Ausführungsbeispiel verwendet.
Wird die Anzahl der Verbindungen in beiden Verfahren verglichen,
ist, obwohl die Anzahl der Pfeile, die sich von jedem der Verbindungen
erstrecken, in jedem der vorstehend angeführten Verfahren zwei ist, die
Zahl der Pfeile, die jeden der Verbindungen erreichen, unterschiedlich.
D.h., im Falle des Decodierbaumes von 54(a) ist
die Zahl der Pfeile, die jeden der Verbindungen erreichen, immer
1. Andererseits erreichen für
den Fall des Decodierbaums von 54(a) zwei
Pfeile jeden der Verbindungen, so dass die Gesamtzahl der für das gleiche
Codewort notwendigen Verbindungen sich verringert. In diesem Beispiel
sind, obwohl fünfzehn
Verbindungen für
den Decodierbaum von 54(a) notwendig
sind, nur acht Verbindungen für
den Decodierbaum von 54(b) notwendig.
Es besteht daher ein Vorteil darin, dass die für das Decodierverfahren, das
einen Decodiergraphen gemäß dem bevorzugten
Ausführungsbeispiel
verwendet, notwendig ist, geringer als die für das konventionelle Decodierverfahren,
das einen Decodierbaum verwendet, ist.
-
Um
den Code (2) zu decodieren, zu dem ein Escape-Code addiert ist,
wie es in 51(b) gezeigt ist, sind
zwei Decodierwerttabellen vorbereitet, d.h. die Decodierwerttabelle
des Codes (1), wie sie in 55(a) gezeigt
ist, und die Decodierwerttabelle von Coden mit fixer Wortlänge, wie
sie in 55(b) gezeigt ist. Wenn ein
Escape-Code in der Decodierwerttabelle der Code (1) decodiert wird,
wird die Decodierwerttabelle mit Coden fester Wortlänge gelesen.
Für den
Fall, dass das Codewort "101100011011" ist, wird beispielsweise
das "10111" am Präfix, d.h.
der Escape-Code decodiert, wird das nachfolgende "001" von drei Bits als
Code mit fixer Wortlänge betrachtet
und wird die Decodierung in dem Decodierabschnitt 210 für einen
Code mit fixer Wortlänge
ausgeführt.
Da in diesem Fall 1 als der Decodierwert "001" hergeleitet
wird, wird das Quellsymbol "K" als das decodierte
Ergebnis auf der Grundlage der Decodierwerttabelle der Code mit
fixer Wortlänge
von 55(a) hergeleitet.
-
Das
bevorzugte Ausführungsbeispiels
eines Codiersystems und/oder Decodiersystems mit variabler Wortlänge, das
auf ein Bewegtbild-Codier- und/oder Decodiersystem angewendet wird,
gemäß der Erfindung,
wird nachstehend beschrieben.
-
56 zeigt ein Blockschaltbild, das schematisch
ein Bewegtbild-Codiersystem und/oder Decodiersystem zeigt, in dem
das vorstehend angeführte
Codiersystem und/oder Decodiersystem mit variabler Wortlänge beinhaltet
ist.
-
Bei
einem Bewegtbildcodierer 709, wie er in 56(a) gezeigt
ist, werden die Codierung mit variabler Wortlänge, die Kanalcodierung, das
Multiplexen usw. der durch einen Quellcodierer 702 codierten Daten
durch einen Bewegtbildmultiplexabschnitt 703 ausgeführt. Nachdem
darüber
hinaus das Glätten
der Übertragungsgeschwindigkeit
durch einen Übertragungszwischenspeicher 704 ausgeführt ist,
werden sie zu einem Übertragungs-
oder Speichersystem 705 als Codierdaten übertragen.
Ein Steuerabschnitt 701 steuert den Quellcodierer 702 und
den Bewegtbildmultiplexabschnitt 703 im Hinblick auf die
Speicherkapazität
des Übertragungszwischenspeichers 704.
-
Andererseits
werden in einem Bewegtbilddecodierabschnitt 710, wie er
in 56(b) gezeigt ist, die von dem Übertragungs-
oder Speichersystem 705 übertragenen Codierdaten temporär in einem Empfangszwischenspeicher 706 gespeichert.
Nachdem darüber
hinaus nach dem Multiplexteil die Kanalcodedecodierung und die Decodierung
für den Code
mit variabler Wortlänge
der Decodierdaten durch einen Bewegtbild-Multiplexteilabschnitt 707 ausgeführt werden,
werden die Daten zu einem Quelldecodierer 708 übertragen
und wird ein Bewegtbild schließlich
decodiert.
-
57 zeigt die Syntax des Bewegtbildcodierverfahrens
in dem Bewegtbildcodierer 709 und dem Bewegtbildmultiplexteilabschnitt 707 von 56. In der oberen Schicht der Bildschichten, wie es in 57(a) gezeigt ist, werden Daten wie etwa Modusdaten,
Bewegungsvektordaten und INTRA-DC eines Makroblocks, die sich von
den DCT-Koeffizientendaten unterscheiden, beschrieben und in ihrer
unteren Schicht werden DCT-Koeffizientendaten beschrieben. Der reversible
Code gemäß der Erfindung
wird auf die untere Schicht angewendet.
-
58(a) und 58(b) zeigen
Blockschaltbilder zur Veranschaulichung der detaillierten Konstruktionen
des Bewegtbildmultiplexabschnittes 703 und des Bewegtbildmultiplexteilabschnittes 707 von 56. Aus den von dem Quellcodierer 702 von 56 zugeführten
Codierdaten wird bezüglich
der Daten wie etwa der Modusdaten, der Bewegungsvektordaten und
der INTRA-DC-Daten, die sich von den DCT-Koeffizientendaten unterscheiden,
die in der oberen Schicht beschrieben sind, nachdem die übliche Codierung
mit variabler Wortlänge
in einem Codierer 901 mit variabler Wortlänge der
oberen Schicht ausgeführt
ist, die Kanalcodierung in einem Kanalcodierer 902 der
oberen Schicht mittels eines Fehlerkorrekturerfassungssignals ausgeführt, das eine
hohe Korrekturkapazität
aufweist, obwohl es eine hohe Redundanz aufweist, und werden die
auf diese Weise verarbeiteten Daten zu einem Multiplexabschnitt 905 übertragen.
-
Andererseits
werden aus den von dem Quellcodierer 702 zugeführten Codierdaten
die DCT-Koeffizientendaten
in reversible Daten mittels eines Codierers 903 mit variabler
Wortlänge
der unteren Schicht codiert. Nachdem danach dessen Kanalcodierung
in einem Kanalcodierer 904 der unteren Schicht mittels
eines Fehlerkorrekturerfassungssignals ausgeführt wird, das eine geringe
Redundanz aufweist, werden die auf diese Weise verarbeiteten Daten
zu dem Multiplexabschnitt 905 übertragen. In dem Multiplexabschnitt 905 werden
Codierdaten der oberen und der unteren Schicht zum Übertragen
zu dem Übertragungszwischenspeicher 904 gemultiplext.
-
In
dem Bewegtbild-Multiplexteilabschnitt 707, wie er in 58(b) gezeigt ist, werden die von dem
Empfangszwischenspeicher 706 zugeführten Codierdaten in die obere
und die untere Schicht mittels eines Multiplexteilabschnitts 906 unterteilt.
Die Codierdaten in der oberen Schicht werden mittels eines Kanaldecodieres 907 der
oberen Schicht decodiert und das decodierte Ergebnis wird zu einem
Decodierer 909 mit variabler Wortlänge der oberen Schicht übertragen.
Die Codierdaten in der unteren Schicht werden mittels eines Kanaldecodierers 908 der
unteren Schicht decodiert und das decodierte Ergebnis wird zu einem
Decodierer 910 mit variabler Wortlänge der unteren Schicht übertragen.
-
Der
Decodierer 910 mit variabler Wortlänge der unteren Schicht decodiert
den reversiblen Code und überträgt das decodierte
Ergebnis zu dem Quelldecodierer 708 und dem Decodierer 909 mit
variabler Wortlänge
der oberen Schicht. Der Decodierer 909 mit variabler Wortlänge der
oberen Schicht decodiert den Code mit variabler Wortlänge, der
als Codierdaten der oberen Schicht dient, und schreibt die Codierergebnisse
auf der Grundlage des decodierten Ergebnisses des Decodierers 910 mit
variabler Wortlänge
der oberen Schicht neu.
-
Der
Codierer 903 mit variabler Wortlänge der unteren Schicht in 58(a) entspricht dem Codierabschnitt 213 in 50 und der Decodierer 910 mit variabler
Wortlänge
der unteren Schicht in 58(b) entspricht
dem Decodierabschnitt 214 in 50.
-
Aus
dem Bewegtbild-Codiersystem und/oder Decodiersystem des bevorzugten
Ausführungsbeispiels
ist ersichtlich, dass, wenn das Codierverfahren eine Syntax aufweist,
wie sie in 57 gezeigt ist, es nicht nur
für den
Code mit variabler Wortlänge
selbst notwendig ist, dass er in beiden Richtung decodiert werden
kann, sondern dass es ebenso für
den Code mit variabler Wortlänge
notwendig ist, das er syntaktisch in beiden Richtungen decodiert
werden kann. In dem bevorzugten Ausführungsbeispiel kann dieses Erfordernis
durch die Codeworttabelle erfüllt
werden, wie sie nachstehend beschrieben ist.
-
59 bis 63 zeigen
Beispiele einer Codeworttabelle von Coden mit variabler Wortlänge von
DCT-Koeffizienten, die in dem Codierer 903 mit variabler
Wortlänge
der unteren Schicht verwendet werden. Darüber hinaus zeigt 64 eine Codeworttabelle von Escape-Coden.
-
In
dem Quellcodierern 702 wird bezüglich eines Blockes mit 8×8 DCT-Koeffizienten
nach einer Quantisierung der Abtastung in dem Block ausgeführt, um
einen LETZTEN-Wert bzw. LAST (O: Nicht-Null-Koeffizient an dem von
dem letzten des Blocks unterschiedlichen Abschnitt; 1: Nicht-Null-Koeffizient
beim Letzten des Blocks), einen LAUF-Wert bzw. RUN (die Zahl eines
Null-Laufes vor dem Nicht-Null-Koeffizienten) und einen PEGEL-Wert bzw.
LEVEL (dem Absolutwert des Koeffizienten) zum Übertragen des Ergebnisses zu
dem Bewegtbildcodier 709 zu erlangen.
-
Der
Codierer 903 mit variabler Wortlänge der unteren Schicht in
dem Bewegtbildcodierer 709 enthält eine Codeworttabelle (eine
erste Codeworttabelle) von Nicht-LETZTEN-Koeffizienten, wobei die
reversiblen Code (VLC-Code) den Nicht-LETZTEN-Koeffizienten, den
LAUF-Werten und PEGEL-Werten von INTRA und INTER entsprechen, wie
es in 59 und 60 gezeigt
ist, und eine Codeworttabelle (eine zweite Codeworttabelle) von
LETZTEN-Koeffizienten, bei welchen die reversiblen Code (VLC-Code) den
LETZTEN-Koeffizienten, den LAUF-Werten und den PEGEL-Werten von
INTRA und INTER entsprechen, wie es in 61 und 62 gezeigt
ist. Auf der Grundlage der Modusdaten werden für den Fall INTRA die Codeworttabellen
der Nicht-LETZTEN-Koeffizienten
und der LETZTEN-Koeffizienten von INTRA ausgewählt, und für den Fall für INTER werden
die Codeworttabellen der Nicht-LETZTEN-Koeffizienten und der LETZTEN-Koeffizienten von
INTER zum Ausführen
der Codierung ausgewählt.
Ferner gibt "S" bei dem letzten
Bit des VLC-Codes in 61 und 62 das
Vorzeichen des PEGEL-Wertes an. Ist "S" "0" ist das Vorzeichen des PEGEL-Wertes
positiv, und ist "S" "1",
ist S negativ.
-
Bezüglich der
Koeffizienten, die nicht in dem Codewort existieren, werden der
LAUF-Wert und der Absolut-Wert des PEGEL-Wertes in einen Code mit fixer
Wortlänge
codiert, wie es in 64 gezeigt ist, und wird ein
Escape-Code dem Kopf und dem Ende des Codes mit fixer Wortlänge addiert,
so dass die Vorzeichen der LETZTEN-Koeffizienten und des PEGEL-Wertes
durch das letzte Bit des Escape-Codes bestimmt werden können. 63 zeigt eine Codeworttabelle der Escape-Code.
In dieser Tabelle gibt "t" am letzten Bit des
VLC-Codes, der als Escape-Code verwendet wird, an, ob der Escape-Code
ein LETZTER-Koeffizient ist, wenn "t" dem
Kopf des Codes mit fixer Wortlänge
hinzugefügt
wird. Ist "T" "0", ist
der Escape-Code ein Nicht-LETZTER-Koeffizient, und,
wenn "t" "1" ist,
ist der Escape-Code ein LETZTER-Koeffizient. Darüber hinaus gibt "t" das Vorzeichen des PEGEL-Wertes an.
Ist es "0", ist das Vorzeichen
des PEGEL-Wertes positiv, und ist es "1",
ist das Vorzeichen des PEGEL-Wertes negativ.
-
65 zeigt ein Beispiel von Codierdaten des bevorzugten
Ausführungsbeispiels.
Gemäß der Darstellung
von 65 kann, wenn die Decodierung in
der Vorwärtsrichtung
in der unteren Schicht ausgeführt
wird, da der Code des LETZTEN-Koeffizienten immer am Ende eines
Blockes mit DCT-Koeffizienten von 8×8-Bildelementen existiert,
das Ende des Blocks bestimmt werden. Wenn andererseits die Decodierung
in Rückwärtsrichtung
ausgeführt
wird, kann der Kopf des Blocks auf der Grundlage des Auftretens
des Codes des LETZTEN-Koeffizienten des letzten Blocks in einer
Adresse bestimmt werden. In diesem Code wird der LETZTE-Koeffizient
gemeinsam in einem INTRA-Modus und in einem INTER-Modus verwendet,
so dass es möglich
ist, den Kopf des Blocks zu bestimmen, selbst wenn der Modus für jeden
Makroblock existiert.
-
Bezüglich dem
ersten Block in der unteren Schicht wird vorab ein Dummy-LETZTER-Koeffizient bei
dem Präfix
der unteren Schicht mittels des Codierers 903 mit variabler
Wortlänge
der unteren Schicht codiert oder es wird in dem Decodierer 910 mit
variabler Wortlänge
der unteren Schicht die Zahl der Bits der unteren Schicht vorab
auf der Grundlage der Zahl der Bits zu einem Synchronisiersignal
des nächsten Rahmens
berechnet, um es mit der Zahl der decodierten Bits zu vergleichen,
oder ein Dummy-LETZTER-Koeffizient wird dem Kopf der unteren Schicht mittels
eines Zwischenspeichers in dem Decodierer 910 mit variabler
Wortlänge
der unteren Schicht eingefügt,
so dass es möglich
ist, den Kopf der unteren Schicht zu bestimmen, wenn das Decodieren
in der Rückwärtsrichtung
ausgeführt
wird.
-
Für den Fall
der Vorwärtsrichtung
werden die in der Codeworttabelle gemäß der Darstellung der 59 bis 62 gespeicherten
reversiblen Code gelesen, bis zwei "0"en
auftreten, falls das erste Bit des Kopfes "0" ist,
und bis zwei "1"en auftreten, falls das
erste Bit des Kopfes "1" ist, so dass ersichtlich
ist, dass das nächste
Bit das letzte Bit ist, das das Vorzeichen des PEGEL-Wertes darstellt.
Im Falle der Rückwärtsrichtung
gibt das erste "1"-Bit das Vorzeichen
des PEGEL-Wertes
an, so dass der reversible Code gelesen werden kann, bis zwei "0"en auftreten, falls das nächste Bit "0" ist und bis zwei "1"en
auftreten, falls das nächste
Bit "1" ist.
-
66 zeigt einen Decodiergraphen zum Decodieren
des reversiblen Codes, der auf den Code mit variabler Wortlänge des
DCT-Koeffizienten angewendet wird, der in dem Codierer 903 mit
variabler Wortlänge
der unteren Schicht in dem bevorzugten Ausführungsbeispiel verwendet wird.
Bezüglich
der Codierdaten, die das Bit des Kopfes und die zwei Bits des Endes
in der Vorwärtsrichtung
entfernen, kann der decodierte Wert durch die Decodiergraphen berechnet
werden.
-
Falls
in diesem Decodiergraphen das Bit am Kopf "0" ist,
verläuft
er entlang des rechten Pfeiles, wenn "0" auftritt,
und verläuft
es entlang des linken Pfeiles, wenn "1" auftritt.
Ist das Bit am Kopf "1", verläuft er entlang
des rechten Pfeiles, wenn "1" auftritt, und verläuft er entlang
des linken Pfeiles, wenn "0" auftritt.
-
Wenn
gemäß dem Shalkwijk's Algorithmuses,
wie er vorstehend angeführt
ist, der linke Pfeil ausgewählt
wird, kann ein Rangordnungswert bezüglich Binärcodesystemen der gleichen
Codelänge dem
Gesamtwert der Werte entsprechen, die durch Subtrahieren des Wertes
der Verbindung an dem Startpunkt des Pfeiles von dem Wert der Verbindung an
dessen Endpunkt erlangt werden.
-
Falls
andererseits der Bit an dem Kopf "0" ist, kann
der decodierte Wert ein Wert sein, der durch Addieren des Rangordnungswertes
zu dem Doppelten der Größe des Gesamtwertes
der Werte der Verbindungen entlang der Linie erlangt wird, die nach rechts
von der Verbindung an dem Endpunkt geneigt ist. Falls das Bit an
dem Präfix "1" ist, kann der decodierte Wert ein Wert
sein, der durch Addieren des Wertes der Verbindung an dem Endpunkt
zum Zweifachen der Größe des Gesamtwertes
der Werte der Verbindungen entlang der Linie erlangt wird, die nach rechts
von der Verbindung an dem Endpunkt sich neigt.
-
Ist
beispielsweise die Codefolge, die zu decodieren ist, "0110101", werden das erste
Bit am Kopf und die zwei Bits am Ende in der Vorwärtsrichtung
entfernt, so dass "111101" erlangt wird. Da
das Bit am Kopf "0" ist, folgt ein Verlauf
entlang des rechten Pfeils, wenn "0" in
dem decodierten Graph auftritt und folgt ein Verlauf entlang des
linken Pfeils, wenn "1" darin auftritt.
Da in diesem Fall der Unterschied zwischen den Werten der Verbindungen
bei einem Verlauf entlang des linken Pfeils (1-1) + (1-1) + (4-3) =
1 ist, ist der Rangordnungswert 1. Da das Bit mit der höchsten Wertigkeit "0" ist, wird dreizehn erlangt, indem die
Rangordnungszahl 1 dem Zweifachen der Größe des Gesamtwertes der Werte
der Verbindungen entlang der Linie hinzugefügt wird, die nach rechts von
der Verbindung an dem Endpunkt geneigt ist, d.h. (1+2+3) × 2 = 12,
und es ist möglich,
den decodierten Wert des Codewortes mit dreizehn herzuleiten.
-
67 bis 69 zeigen
Beispiel von Decodierwerttabellen, die in dem Decodierer 910 mit
variabler Länge
der unteren Schicht verwendet werden. 67 bis 68 zeigen
Beispiel von Decodierwerttabellen von Nicht-LETZTEN-Koeffizienten,
bei welchen die Nicht-LETZTEN- Koeffizienten,
die LAUF-Werte und die PEGEL-Werte von INTRA und INTER den decodierten
Werten entsprechen. 69(a) und 69(b) zeigen eine Decodierwerttabelle von
LETZTEN-Koeffizienten,
bei welchen LETZTE-Koeffizienten, LAUF-Werte und PEGEL-Werte von
INTRA und INTER den decodierten Werten entsprechen. Darüber hinaus
zeigt 69(c) eine Decodierwerttabelle
von Escape-Coden.
-
In
diesen Beispielen kann aus 69(a) entnommen
werden, dass beispielsweise bei dem Decodierwert 13 der LETZTE-Koeffizient
1 ist, die LAUF-Zahl 3 ist, der ABSOLUT-Wert des PEGEL-Werts 1 ist.
Da darüber
hinaus das Bit mit der geringsten Wertigkeit "1" ist,
ist ersichtlich, dass der PEGEL-Wert negativ ist. Darüber hinaus
ist aus 69(c) ersichtlich, dass der
Escape-Code decodiert worden ist, wenn der decodierte Wert 41 decodiert
worden ist. Es wird bestimmt, ob es sich um einen LETZTEN-Koeffizienten
oder einen Nicht-LETZTEN-Koeffizienten
beim letzten Bit des Escape-Codes handelt. Bezüglich der nachfolgenden dreizehn Bits
werden der LAUF-Wert und der ABSOLUT-Wert des PEGEL-Wertes in dem
Decodierabschnitt 210 mit fixer Wortlänge decodiert. Danach wird
wieder der Escape-Code decodiert und wird das Vorzeichen des PEGEL-Wertes
durch das letzte Bit bestimmt.
-
Als
ein Beispiel wird der Fall angeführt,
dass die Codefolge des zu codierenden Gegenstandes die Folge "110000010000111000101111000010" ist. Da in diesem
Fall das letzte Bit des Escape-Codes "11000010" beim Präfix "0" ist, handelt es sich um einen Nicht-LETZTEN-Koeffizienten
und wird der Code mit fixer Wortlänge der nachfolgenden dreizehn
Bits berechnet. Da die signifikanteren sechs Bits der nachfolgenden
dreizehn Bits den LAUF-Wert angeben, ist der LAUF-Wert 7 aus "000111". Da die weniger
signifikanten sieben Bits den Absolutwert des PEGEL-Wertes angeben,
ist der Absolutwert des PEGEL-Wertes 12 aus "0001011". Da das letzte Bit des Escape-Codes "11000010" "0" ist,
ist der PEGEL-Wert positiv. Auf diese Weise kann die Decodierung
ausgeführt
werden.
-
Der
Decodierwertentscheidungsabschnitt 212 entscheidet einen
decodierten Wert auf der Grundlage des auf diese Weise durch den
Vorwärtsdecodierer 209 erlangten
decodierten Ergebnisses (was nachstehend als "vorwärtsdecodiertes
Ergebnis" bezeichnet
wird) und dem decodierten Ergebnis, das durch den Rückwärtsdecodierer 211 erlangt
wird (das nachstehend als "rückwärtsdecodiertes
Ergebnis" bezeichnet
wird), und gibt ein decodiertes Endergebnis aus.
-
D.h.,
falls ein Fehler in Codierdaten auftritt, kann, da das Bitmuster,
das vorhanden war, als decodiertes Ergebnis des Kanalcodierers 908 der
unteren Schicht oder als ein Codewort auftritt, die Existenz des
Fehlers gesucht werden. Daher entscheidet der Decodierwertentscheidungsabschnitt 212 den decodierten
Wert auf der Grundlage der decodierten Ergebnisse in der Vorwärtsrichtung
und der Rückwärtsrichtung,
wie es in 36 gezeigt ist. Ferner zeigt 71 ein Verfahren zum Entscheiden eines decodierten
Wertes in der unteren Schicht.
-
Gemäß der Darstellung
von 71(a) werden zunächst, wenn
die Positionen (erfaßte
Positionen der Fehler) der Makroblöcke, in welchen Fehler in den
vorwärtsdecodierten
und rückwärtsdecodierten
Ergebnissen nicht zueinander passen, nur das decodierte Ergebnis
des Makroblocks als der decodierte Wert verwendet, in welchem kein
Fehler erfaßt worden
ist, und werden die decodierten Ergebnisse an den zwei fehlerbehafteten
Positionen nicht als der decodierte Wert verwendet. Auf der Grundlage
des decodierten Ergebnisses der Modusdaten in der oberen Schicht
wird dann das decodierte Ergebnis in der oberen Schicht derart neu
geschrieben, dass der INTRA-Makroblock durch den letzten Rahmen
angegeben wird, wie er ist, und der INTER-Makroblock nur durch die
Bewegungskompensation von dem letzten Rahmen angegeben wird.
-
Darüber hinaus
wird, wie es in 71(b) gezeigt ist,
wenn die erfaßten
fehlerbehafteten Positionen für
das vorwärtsdecodierte
und das rückwärtsdecodierte
Ergebnis zueinander passen, das decodierte Ergebnis, bei dem kein
Fehler in beiden decodierten Ergebnissen erfaßt worden ist, als decodierter Wert
verwendet. In diesem Fall werden die decodierten Ergebnisse zwischen
den Codeworten der zwei erfaßten
fehlerbehafteten Positionen nicht als decodierte Werte verwendet.
Auf der Grundlage des decodierten Ergebnisses der Modusdaten in
der oberen Schicht wird darüber
hinaus das decodierte Ergebnis in der oberen Schicht neu geschrieben,
so dass der INTRA-Makroblock durch den letzten Rahmen, wie er ist,
angegeben wird, und der INTER-Makroblock nur
durch die Bewegungskompensation von dem letzten Rahmen angegeben
wird.
-
Wenn
gemäß der Darstellung
von 71(c) ein Fehler in nur einem
der decodierten Ergebnisse in der Vorwärts- und der Rückwärtsrichtung
erfaßt
worden ist (beispielsweise ist ein Fehler nur in dem vorwärts erfaßten Ergebnis
erfaßt
worden), wird der Makroblock nicht als decodierter Wert verwendet.
Auf der Grundlage des decodierten Ergebnisses der Modusdaten in
der oberen Schicht wird darüber
hinaus das decodierte Ergebnis in der oberen Schicht derart neu
geschrieben, dass der INTRA-Makroblock durch den letzten Rahmen,
wie er ist, angegeben wird, und der INTER-Makroblock nur durch die Bewegungskompensation
von dem letzten Rahmen angegeben wird. Als der decodierte Wert bezüglich den
nachfolgenden Makroblöcken,
wird der decodierte Wert in der Rückwärtsrichtung verwendet.
-
Die
Codier-/Decodierreihenfolge des Makroblocks kann durch ein Verfahren
bestimmt werden, dass sich von dem des vorstehend angeführten bevorzugten
Ausführungsbeispieles
unterscheidet. Beispielsweise kann ein Verfahren zum Bestimmen der Reihenfolge,
wie es in 72 gezeigt ist, verwendet werden,
so dass die bedeutenden zentralen Abschnitte des decodierten Bildschirms
gesichert werden können,
wenn ein Fehler auftritt. D.h., auf der Grundlage der Decodierung
in beiden Richtungen wird, da die Möglichkeit, dass der erste Abschnitt
und der letzte Abschnitt der Codierdaten zwischen den benachbarten
Synchronisiercoden korrekt decodiert sind, hoch ist, die Reihenfolge
derart bestimmt, dass diese Abschnitte an dem zentralen Abschnitt
angeordnet werden.
-
Während ferner
die bevorzugten Ausführungsbeispiele
der Erfindung auf die Codierung mit variabler Wortlänge eines
DCT-Koeffizienten angewendet worden ist, kann die Erfindung auf
die Codierung mit variabler Wortlänge weiterer Quellsymbole angewendet
werden. Darüber
hinaus wurde die Erfindung in den vorstehend angeführten bevorzugten Ausführungsbeispielen
lediglich auf Binärcode
angewendet, sie kann jedoch leicht auf hyperkomplexe Code angewendet
werden und es können
die gleichen Effekte erlangt werden.
-
Schließlich wird
unter Bezugnahme auf 72 als eine Anwendung der Erfindung
das bevorzugte Ausführungsbeispiel
eines Bild-Senders-Empfängers,
auf den ein Codiersystem und/oder Decodiersystem mit variabler Wortlänge gemäß der Erfindung
angewendet wird, nachstehend beschrieben.
-
Ein
Bilddatensignal, das durch eine in einem Personalcomputer (PC) 1001 vorgesehene
Kamera 1002 eingespeist wird, wird mittels eines Codiersystems mit
variabler Wortlänge,
das in dem PC 1001 vorgesehen ist, codiert. In diesem Fall sind
das Quellsymbol beispielsweise DCT- Koeffizientendaten, die durch die diskrete
Kosinustransformation eines Eingangsbilddatensignals oder eines
prädiktiven
Fehlersignals erlangt werden, das eine Differenz zwischen einem
Eingangsbilddatensignal und einem prädiktiven Bilddatensignal entspricht,
mittels einer DCT-Schaltung
zum Quantizieren durch eine Quantizierschaltung. Natürlich ist
das Quellsymbol nicht auf derartige DCT-Koeffizientendaten beschränkt. Die von
dem Codiersystem mit variabler Wortlänge ausgegebenen Codierdaten
werden mit weiteren Audiodaten usw. gemultiplext und dann zu einem
Audio-Sender-Empfänger 1003 zum
Empfangen durch weitere Audio-Sender-Empfänger 1004 übertragen. Das
durch den Audio-Sender-Empfänger 1004 empfangene
Signal wird in Codierdaten, Audiodaten usw. unterteilt. Die Codierdaten
des Bilddatensignals werden durch ein Decodiersystem mit variabler
Wortlänge,
das in einer Arbeitsstation (EWS) 1005 vorgesehen ist,
zum Anzeigen an einer Anzeige des EWS 1005 decodiert.
-
Andererseits
wird das Bilddatensignal, das durch eine in dem EWS 1005 vorgesehene
Kamera 1006 eingespeist wird, mittels eines Codiersystems mit
variabler Wortlänge,
das in dem EWS 1005 vorgesehen ist, gleichartig zu dem
vorstehend angeführten
Verfahren codiert. Die Codierdaten werden mit weiteren Audiodaten
usw. gemultiplext und durch den Audio-Sender-Empfänger 1004 zum
Empfangen durch den Audio-Sender-Empfänger 1003 übertragen.
Das durch den Audio-Sender-Empfänger 1003 empfangene
Signal wird in Codierdaten, Audiodaten usw. unterteilt. Die Codierdaten
des Bilddatensignals werden mittels eines in dem PC 1001 vorgesehenen Decodiersystems
mit variabler Wortlänge
decodiert und an einer Anzeige des PC 1001 angezeigt.
-
Das
Codiersystem und/oder Decodiersystem mit variabler Wortlänge gemäß der Erfindung
hat eine Codelänge,
die der Auftrittswahrscheinlichkeit eines Quellsymbols entspricht.
Das System hat darüber
hinaus eine hohe Effizienz, da die Zahl nutzloser Bitmuster kleiner
als bei dem konventionellen System ist. Darüber hinaus kann es einen reversiblen Code
mit variabler Wortlänge
konfigurieren, der sowohl in der Vorwärts- als auch in der Rückwärtsrichtung
decodiert werden kann. Darüber
hinaus ist es insbesondere für
einen Sender-Empfänger
nützlich, der
einen Kanal verwendet, bei dem viele Fehler auftreten, wie etwa
bei einem Audiokanal, wie er in 73 gezeigt
ist.
-
Wie
vorstehend angeführt,
kann ein Codiersystem und/oder Decodiersystem mit variabler Wortlänge gemäß der Erfindung
eine Decodierung mit einer geringeren Speicherkapazität als bei
konventionellen Systemen ausführen
und kann zum Codieren angewendet werden, wobei die Zahl der Quellsymbole
groß ist,
obwohl konventionelle Systeme nicht darauf angewendet werden können.
-
Im
Einzelnen kann es auf ein Bewegtbild-Codiersystem und/oder Decodiersystem
angewendet werden und kann ein Bewegtbild-Codiersystem und/oder
Decodiersystem geliefert werden, das widerstandsfähig gegenüber Fehlern
ist.
-
Wie
vorstehend angeführt,
ist gemäß der Erfindung
ein Codiersystem und/oder Decodiersystem mit variabler Wortlänge vorgesehen,
das sowohl in der Vorwärtsrichtung
als auch in der Rückwärtsrichtung
decodieren kann und das hinsichtlich der Gesichtspunkte der Codiereffizienz,
der für
das System notwendigen Speicherkapazität, usw. praktisch ist.
-
D.h.,
das erste bevorzugte Ausführungsbeispiel
eines Codiersystems mit variabler Wortlänge gemäß der Erfindung enthält eine
Codeworttabelle, die sowohl in der Vorwärts- als auch in der Rückwärtsrichtung
decodiert werden kann und die eine Vielzahl von Codeworten zum Entsprechen
mit Quellsymbolen speichert, wobei die Mehrzahl der Codeworte derart
konfiguriert ist, das eine Pause des Codewortes durch die Wertigkeit
des Codewortes, d.h. durch die Anzahl von "1" oder "0" des Codewortes, gesucht werden kann.
Durch Auswählen
eines Codewortes, das dem eingespeisten Quellsymbol entspricht,
aus der Codeworttabelle ist es möglich,
einen Code mit variabler Wortlänge
zu erlangen, bei dem die Zahl der nutzlosen Bitmuster klein ist
und die Codiereffizienz hoch ist. Durch Auswählen eines Codes mit der minimalen
mittleren Codelänge
aus einer Mehrzahl von Codekonfigurierverfahren und Parameter auf
der Grundlage der Wahrscheinlichkeit des Quellsymbols ist es ferner
möglich,
einen Code mit variabler Wortlänge
zu produzieren, der der Auftrittswahrscheinlichkeit des Quellsymbols
entspricht.
-
Gemäß dem ersten
bevorzugten Ausführungsbeispiel
eines Decodiersystems mit variabler Wortlänge wird, wenn der decodierte
Wert auf der Grundlage der decodierten Ergebnisse des Codes mit
variabler Wortlänge
sowohl in der Vorwärts-
als auch in der Rückwärtsrichtung
bestimmt ist, durch Bestimmen des decodierten Wertes bei der erfaßten fehlerbehafteten
Position gemäß dem erfaßten Ergebnis
des Fehlers, wenn die decodierten Ergebnisse erlangt sind, wenn der
von dem vorstehend angeführten
Codiersystem mit variabler Wortlänge
ausgegebene reversible Code über
einen Kanal übertragen wird,
bei dem viele Fehler auftreten, wie etwa einem Audiokanal, die Decodierung
gegen den Fehler effektiv ausgeführt,
so dass das ursprüngliche
Quellsymbol stabil wiedergegeben werden kann.
-
Gemäß dem zweiten
bevorzugten Ausführungsbeispiel
eines Codiersystem und/oder Decodiersystems mit variabler Wortlänge ist
es möglich, ein
Quellsymbol mit einer geringen Auftrittswahrscheinlichkeit als einen
Code mit fixer Wortlänge
zu codieren, zu welchem ein Escape-Code hinzugefügt wird, und den Codeabschnitt
mit fixer Wortlänge
unabhängig
von dem reversiblen Code zu codieren/zu decodieren. Falls daher
ein Quellsymbol, dessen Zahl sehr groß ist, wie etwa der quantizierte
orthogonale Transformationskoeffizient, in dem Bildcodierer/Bilddecodierer
codiert wird, ist es möglich,
die maximale Codelänge
zu verringern und effektiv die Speicherkapazität zu verringern.
-
Das
dritte bevorzugte Ausführungsbeispiel eines
Decodiersystems mit variabler Wortlänge verwendet ein Codewort
mit variabler Wortlänge,
das die Codelänge
durch die Zahl der Wertigkeiten der Codeworte bestimmen kann und
das durch Codeworte konfiguriert ist, die sowohl in der Vorwärts- als
auch in der Rückwärtsrichtung
decodierbar sind. In diesem System wird der durch das Pascalsche
Dreieck bestimmt Wert als der Wert einer Verbindung verwendet und
wird der decodierte Wert auf der Grundlage eines gerichteten Graphen
(eines decodierten Graphen) berechnet, bei dem die Pfeile von den
jeweiligen Verbindungen zu der nächsten
Verbindung einer "1" und "0" entsprechen, so dass es möglich ist,
einen Code mit variabler Wortlänge
mit einer geringen Speicherkapazität zu decodieren, selbst wenn
die Zahl der Quellsymbole groß ist.
-
Gemäß dem vierten
bevorzugten Ausführungsbeispiel
eines Codiersystems und/oder Decodiersystems mit variabler Wortlänge wird
eine erste Codeworttabelle, die den orthogonalen Tranformationkoeffizienten
entspricht, die sich von dem Letzten eines Blocks unterscheiden,
für jeden
einer Mehrzahl von Codemodi konfiguriert. Durch Verwendung einer zweiten
Codeworttabelle, die dem Letzten des Blocks gemeinsam für jede der
Codemodie entspricht, ist es möglich,
die Änderung
der Codeworttabelle durch den Codemodus zu behandeln und eine Pause
des Blocks durch Auftreten eines Codewortes zu suchen, das den letzten
orthogonalen Transformationskoeffizienten des letzten Blocks darstellt.
Daher kann die Decodierung in beiden Richtungen syntaktisch ausgeführt werden.
Durch separates Bereitstellen der zweiten Codeworttabelle bezüglich der
erzeugten orthogonalen Transformationskoeffizienten wie etwa eines
INTRA-Modus und eines INTER-Modus und einer Mehrzahl von Codiermodi
mit verschiedener Auftrittshäufigkeit
kann die Codiereffizienz verbessert werden.