-
Die vorliegende Erfindung bezieht
sich auf eine Kontur-Decodiervorrichtung zum Decodieren von Konturinformationen,
kodiert durch einen Kettencode.
-
Umfangreiche Untersuchungs- und Entwicklungsanstrengungen
werden für
einen digitalen Video- und Audio-Service vorgenommen. Insbesondere
befindet sich ein bidirektionaler Multimedia-Service in einer aktiven
Entwicklung. Ein digitaler Video-Service über einen in der Bandbreite
begrenzten Kommunikationskanal erfordert eine hohe Kompressionsrate.
Dabei ist es schwierig, eine solche hohe Kompressionsrate unter
Verwendung eines auf einem Block basierenden Bewegungs-Kompensations-
und -Transformations-Codierverfahrens
zu erzielen, wie beispielsweise existierende MPEG (Motion Picture
Experts Group)-1 und MPEG-2. Da das Codierverfahren in den existierenden
MPEG-1 und MPEG-2 auf einer Block-Struktur von Bildern basiert, ist
es nicht einfach, eine flexible und unabhängige Kodierung jedes Objekts
oder Bereichs entsprechend einer erforderlichen Kompressionsrate
durchzuführen.
Demzufolge wird benötigt,
dass ein gegebenes Bild in Objekte unterteilt wird, von denen jedes unabhängig verarbeitet
werden kann. Eine unabhänige
Codierung jedes Bereichs oder Objekts, bezeichnet als eine „objekt-basierende
Codierung", erfordert eine
Beschreibung einer Objekt-Form. Die Form-Informationen werden zu
einem Decodierer als Konturinformationen übertragen.
-
Ein Kettencodierverfahren ist als
ein allgemeines, verlustloses Konturinformations-Codierverfahren bekannt. Das Kettencodierverfahren
stellt die Kontur, unter Verwendung der acht Richtungsvektoren,
wie dies in 1A dargestellt
ist, dar. Als erstes wählt
das Kettencodierverfahren eine Stelle eines Anfangs-Konturpixels
aus, um ein Abtasten der Konturform zu beginnen. Ein Kontur-Pixel
ist ein Pixel, das die Kontur bildet. Ein Kettencodierbeispiel ist
in 1B dargestellt. In
dem Fall des Anfangspixels, das eine Kettencodierung startet, sollten
horizontale und vertikale Koordinatenwerte des Anfangspixels übertragen
werden. Dabei ist, da die Koordinatenwerte des Anfangspixels eine
relativ hohe Rate einer Übertragungsmenge
im Fall eines Mediums, das eine niedrige Übertragungsrate erfordert,
belegen, eine zusätzliche
Kompression erforderlich. Demzufolge werden die horizontalen und
vertikalen Koordinatenwerte des Anfangspixels in der variablen Länge codiert
und übertragen,
oder irgendeiner der horizontalen und vertikalen Koordina tenwerte
des Anfangspixels wird unabhängig
in der variablen Länge
codiert und ein Differenzwert zwischen dem anderen Koordinatenwert
und dem unabhängig
in der variablen Länge
codierten Koordinatenwert wird in der variablen Länge codiert
und übertragen.
-
Die
EP 0 682 455 A beschreibt ein Bildsignal-Codier-
und -Decodierverfahren, bei dem Merkmals-Punkte in einem Bildsignal
erfasst werden und Informationen, die sich auf die Merkmalspunkte
beziehen, ketten-codiert werden. Eine stochastische Korrelation
zwischen einem vorhergehenden und einem momentanen Bildpunkt ermöglicht,
dass die Anzahl von Coden, die die Positionen der Merkmalspunkte
angeben, verringert werden.
-
Es ist wichtig, eine effiziente Decodiervorrichtung
zu haben, um die komprimierten Anfangs-Stellen- und Kettencode zu
decodieren.
-
Es ist eine Aufgabe von bevorzugten
Ausführungsformen
der vorliegenden Erfindung, eine Kontur-Decodiervorrichtung zum
Aufnehmen und Decodieren von Objekt-Konturinformationen eines Bilds, das
unter Verwendung eines Kettencodes codiert ist, zu schaffen.
-
Gemäß einem ersten Aspekt der Erfindung wird
eine Vorrichtung zum Decodieren einer Objektkontur aus einem Bitstrom
unter Verwendung eines Kettencodes codierter Konturinformationen
geschaffen, wobei die Kontur-Decodiervorrichtung umfasst: eine Demultiplexiereinrichtung,
die in Funktion den Bitstrom der Konturinformationen in Anfangs-Konturpixel-Informationen
und Kettencode-Informationen trennt; einen Anfangs-Konturpixel-Decodierer,
der in Funktion durch die Demultiplexiereinrichtung abgetrennte
Anfangs-Konturpixel-Informationen decodiert und Horizontal- sowie
Vertikal-Koordinatenwerte
des Anfangspixels ausgibt; und eine Kettencode-Decodiereinrichtung,
die in Funktion Horizontal- und Vertikal-Koordinatenwerte eines
vorangehenden Konturpixels speichert, einen inkrementierenden sowie
einen dekrementierenden Wert auswählt, der durch die von der
Demultiplexiereinrichtung ausgegebenen Kettencode-Informationen
angezeigt wird, Koordinatenwerte eines folgenden Konturpixels unter
Verwendung der ausgewählten
inkrementierenden und dekrementierenden Werte sowie der gespeicherten
Koordinatenwerte berechnet und Horizontal- sowie Vertikal-Koordinaten
ausgibt, an denen sich ein Konturpixel befindet, dadurch gekennzeichnet,
dass die Kettencode-Decodiereinrichtung umfasst: ein erstes Schaltglied,
das so eingerichtet ist, dass es zwischen den Horizontal- und Vertikal-Koordinatenwerten
eines vorangehenden Konturpixels und eines Anfangs-Konturpixels
auswählt
und so eingerichtet ist, dass es ausgewählte Koordinatenwerte ausgibt;
ein er stes Verzögerungsglied,
das so eingerichtet ist, dass es den Horizontal-Koordinatenwert
eines vorangehenden Konturpixels verzögert; ein zweites Schaltglied,
das so eingerichtet ist, dass es einen von Werten, die Horizontalpositionseinstellungen
darstellen, so beispielsweise eine ein Pixel zurückliegende Position (–1), eine
momentane Pixelposition (0) und eine ein Pixel weiterliegende Position
(+1) entsprechend dem ausgewählten
inkrementierenden und dekrementierenden Wert auswählt; ein
erstes Addierglied, das so eingerichtet ist, dass es den von dem
ersten Schalter ausgegebenen Horizontal-Koordinatenwert und den
durch den zweiten Schalter ausgewählten Wert addiert; ein zweites
Verzögerungsglied,
das so eingerichtet ist, dass es den Vertikal-Koordinatenwert des
vorangehenden Konturpixels verzögert;
ein drittes Schaltglied, das so eingerichtet ist, dass es einen von
Werten, die Vertikalpositionseinstellung darstellen, wie beispielsweise
eine eine Zeile zurückliegende
Position (–1),
eine momentane Zeilenposition (0) und eine eine Zeile weiterliegende
Position (+1) entsprechend dem ausgewählten inkrementierenden und
dem dekrementierenden Wert auswählt;
und ein zweites Addierglied, das so eingerichtet ist, dass es den
von dem ersten Schalter ausgegebenen Vertikal-Koordinatenwert und
den durch den dritten Schalter ausgewählten Wert addiert.
-
Die Vorrichtung weist weiterhin vorzugsweise
eine Konturpixel-Darstellungseinheit, die einen Wert, der ein Konturpixel
darstellt, auf einem Pixel anzeigt, das durch die durch den Anfangs-Konturpixel-Decodierer
und die Kettencode-Decodiereinrichtung decodierten Koordinatenwerte
dargestellt wird, wobei der Anfangs-Konturpixel-Decoder umfasst:
einen Demultiplexer, der die Anfangs-Konturpixelinformationen in
Horizontal- und Vertikal-Koordinatenwerte
trennt; einen ersten Decodierer variabler Länge, der den durch den Demultiplexer
abgetrennten Horizontal-Koordinatenwert mit variabler Länge decodiert und
das Ergebnis ausgibt; und einen zweiten Decodierer variabler Länge für eine variable
Längencodierung
des vertikalen Koordinatenwerts, separiert durch den Demultiplexer,
und Ausgeben des Ergebnisses.
-
Vorzugsweise weist die Anfangs-Kontur-Pixeldecodiereinrichtung
auf einen Demultiplexer, der die Anfangs-Konturpixel-Informationen
in einen Bezugswert und einen Differenzwert gegenüber dem Bezugswert
trennt; einen ersten Decodierer variabler Länge, der den durch den Demultiplexer
abgetrennten Bezugswert mit variabler Länge decodiert und das Ergebnis
ausgibt; einen zweiten Decodierer variabler Länge, der den durch den Demultiplexer
abgetrennten Differenzwert mit variabler Länge decodiert und das Ergebnis ausgibt;
und ein Addierglied, das die Ausgänge von dem ersten und dem
zweiten Decodierer variabler Länge
addiert und das addierte Ergebnis als einen Koordinatenwert des
anderen ausgibt.
-
Der Bezugs-Koordinatenwert kann ein
Horizontal-Koordinatenwert sein.
-
Der Bezugs-Koordiantenwert kann ein
Vertikal-Koordinatenwert sein.
-
Die Kettencode-Decodiereinrichtung
speichert vorzugsweise die inkrementierenden und dekrementierenden
Werte in Form einer Durchsichtstabelle.
-
Vorzugsweise wählen das zweite und das dritte
Schaltglied in der Kettencode-Decodiereinrichtung "0" aus, wenn die Koordinaten von Anfangs-Konturpixeln
dem ersten und dem zweiten Addierglied zugeführt werden.
-
Für
ein besseres Verständnis
der Erfindung, und um zu zeigen, wie Ausführungsformen derselben tatsächlich ausgeführt werden
können,
wird nun Bezug, anhand eines Beispiels, auf die beigefügten, schematischen
Zeichnungen genommen, in denen:
-
1A zeigt
eine Ansicht, die acht Richtungsvektoren, verwendet für ein Kettencodieren, darstellt;
-
1B zeigt
eine Ansicht, die ein Beispiel zum Erläutern von Konturpixeln und
einer Kettencodierung darstellt;
-
2 zeigt
ein Blockdiagramm einer Kontur-Decodiervorrichtung gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung;
-
3 zeigt
ein detailliertes Blockdiagramm der Anfangs-Konturpixel-Decodiereinrichtung
der 2;
-
4 zeigt
ein Tabellendiagramm, dass Umschaltsteuersignale zum Steuern von
Verbindungszuständen
der Schalter in 2 darstellt;
und
-
5 zeigt
ein detailliertes Diagramm der Kettencode-Decodier-Steuereinrichtung
der 2.
-
Eine bevorzugte Ausführungsform
der vorliegenden Erfindung wird im Detail unter Bezugnahme auf die
beigefügten
Zeichnungen beschrieben.
-
In 2,
die eine Kontur-Decodiervorrichtung gemäß einer bevorzugten Ausführungsform
der vorliegenden Erfindung darstellt, empfängt eine Demultiplexiereinheit 21 eine
Bit-Folge der Konturinformationen, codiert unter Verwendung eines
Kettencodes. Die Demultiplexiereinheit 21 separiert die empfangene
Bitfolge in die Anfangs-Kontur-Pixel-Informationen und die Kettencode-Informationen
und gibt die separierten Anfangs- Konturpixel-Informationen
und Kettencode-Informationen zu einer Anfangs-Kontur-Pixel-Decodiereinrichtung 22 und
einer Kettencode-Decodiersteuereinheit 23, jeweils, aus. Die
Anfangs-Kontur-Pixel-Decodiereinrichtung 22 empfängt die
Anfangs-Kontur-Pixel-Informationen, ausgegeben
von der Demultiplexiereinheit 21, und decodiert die empfangenen
Anfangs-Kontur-Pixel-Informationen.
-
3 zeigt
ein detailliertes Diagramm der Anfangs-Kontur-Pixel-Decodiereinrichtung 22,
dargestellt in 2. Einer
eines horizontalen und vertikalen Koordinatenwerts des Konturpixels,
wo ein Ketten-Codieren beginnt, ist in der variablen Länge als
ein Referenzkoordinatenwert codiert, und ein Differenzwert zwischen
dem anderen Koordinatenwert und dem Referenzkoordinatenwert wird
in der variablen Länge
codiert und übertragen. 3 stellt ein Beispiel eines
Falls dar, bei dem ein horizontaler Koordinatenwert in der variablen
Länge in
einen Referenzkoordinatenwert codiert ist.
-
In 3 separiert
ein Demultiplexer 31 die empfangenen Anfangs-Konturpixel-Informationen in einen
Referenz-Koordinatenwert und einen Differenzwert. Ein erster Variable-Länge-Decodierer 32 empfängt den
Referenz-Koordinatenwert, separiert durch den Demultiplexer 31,
und decodiert ihn in der variablen Länge. Ein zweiter Variable-Längen-Dedodierer 33 empfängt eine
in der variablen Länge
codierte Koordinaten-Differenz der anderen Koordinaten- und Referenzkoordinatenwerte
und dekodiert ihn in der variablen Länge. Der Koordinatenwert, in der
variablen Länge
durch den zweiten Variable-Längen-Decodierer 33 decodiert,
wird zu dem decodierten Referenzkoordinatenwert durch einen Addierer 34 hinzuaddiert.
Als Ergebnis wird ein decodierter, vertikaler Koordinatenwert durch
den Addierer 34 ausgegeben. Wie wiederum 2 zeigt, werden der horizontale Koordinatenwert,
decodiert durch den ersten Variable-Längen-Kodierer 32,
und der vertikale Koordinatenwert, ausgegeben von dem Addierer 34,
an festgelegte Kontakte „0" eines ersten und zweiten
Umschaltelements 111 und 112 in einem ersten Schalter 11 jeweils
angelegt.
-
Während
der Zeit, zu der die Anfangs-Kontur-Pixel-Informationen decodiert
werden, werden sich bewegende Kontakte von Schaltern 11 bis 13 mit den
festgelegten Kontakten „0" entsprechend Umschaltsteuersignalen
SW1 bis SW3, zugeführt
von der Kettencode-Decodiersteuereinheit 23,
verbunden, was nachfolgend beschrieben werden wird.
-
Der decodierte, horizontale Koordinatenwert wird
an eine Kontur-Pixel-Darstellungseinheit 28 über das
Umschaltelement 111 des ersten Schalters 11 und
einen Addierer 24 angelegt, und der decodierte, vertikale
Koordinatenwert wird an die Kontur-Pixeldarstellungseinheit 28 über das
Umschaltelement 112 des ersten Schalters 11 und
des Addierers 26 angelegt. Die Konturpixel-Darstellungseinheit 28 stellt die
Konturpixel in einem Frame-Speicher (nicht dargestellt) dar. Die
Konturpixel-Darstellungseinheit 28 initialisiert jeden
Pixelwert in dem Frame-Speicher durch ein extern eingegebenes Reset-Signal vor einem
Decodieren der Konturinformationen, und zwar als einen Nicht-Kontur-Anzeigewert. Danach
wird, wenn die horizontalen und vertikalen Koordinatenwerte von
den Addierern 24 und 26 angelegt sind, der Pixelwert
an der Pixelposition, bezeichnet durch die angelegten horizontalen
und vertikalen Koordinatenwerte, dargestellt.
-
Wenn ein Decodieren der Anfangs-Konturpixel-Informationen
abschließt,
beginnt das Kettencode-Informations-Decodieren durch die Kettencode-Decodiersteuereinrichtung 23.
In weiterem Detail werden die Koordinatenwerte der nächsten Konturpixel,
dem Anfangs-Konturpixel, dargestellt durch die Koordinatenwerte,
folgend, decodiert durch den Anfangs-Konturpixel-Decodierer 22,
daraufhin berechnet.
-
Kettencode-Informationen, das bedeutet
zu welcher Richtung ein Stromkonturpixel von einem vorherigen Konturpixel
positioniert ist, werden durch die horizontalen und vertikalen Code,
angezeigt durch jeden Richtungsvektor, dargestellt in 1A, bestimmt. Die Kettencode-Decodiersteuereinrichtung 23 speichert
die horizontalen und vertikalen Code jedes Richtungsvektors in der
Form einer Durchsichtstabelle.
-
4 stellt
eine Durchsichtstabelle dar, die die horizontalen und vertikalen
Code jedes Richtungsvektors der 1A enthält. Die
Durchsichtstabelle der 4 speichert
Status-Werte von Steuersignalen SW1, SW2 und SW3. SW1 dient zum
Steuern einer Zufuhr der Koordinaten von Konturpixeln. SW2 und SW3
dienen zum Steuern von Berechnungen von H_ADDR und V_ADDR entsprechend
jedem Richtungsvektor.
-
Wie 5 zeigt,
die eine detaillierte Struktur der Kettencode-Decodiersteuereinrichtung 23 der 2 darstellt, werden die
Kettencode-Informationen, separiert durch die Demultiplixiereinheit 21,
zu einer Adresse ADDR0 + 1 durch einen Addierer 51 hinzuaddiert.
Das addierte Ergebnis des Addierers 51 wird als eine Lese-Adresse für die Umschaltsteuersignale
SW1 bis SW3, gespeichert in der Durchsichtstabelle 52,
verwendet. Wenn die Anfangs-Kontur-Pixel-Informationen decodiert
sind, wird der Ausgang des Addierers 51 nicht verwendet,
und anstelle davon werden Umschaltsteuersignale SW1 von „0" SW2 von „0" und SW3 von „0", bezeichnet durch
die Adresse ADDR0, ausgegeben. In dem anderen Fall werden die Umschaltsteuersignale
SW1 bis SW3, ausgegeben von der Durchsichtstabelle 52,
zu dem ersten bis dritten Schalter 11 bis 13 zugeführt, die zum
Steuern der Verbindungszustände
der jeweiligen Schalter 11 bis 13 verwendet werden.
-
Die horizontalen und vertikalen Koordinatenwerte
des decodierten Anfangspixels werden zu der ersten und der zweiten
Verzögerung 25 und 27 jeweils
eingegeben. Die horizontalen und vertikalen Koordinatenwerte des
Anfangs-Konturpixels werden durch die erste und die zweite Verzögerung 25 und 27 während der
Zeit verzögert,
zu der die Kettencode-Decodiersteuereinrichtung 23 in Bezug
auf die nächsten
Kettencode-Informationen
arbeitet. Während
der Zeit, zu der die Kettencode-Informationen decodiert sind, werden
die sich bewegenden Kontakte der Umschaltelemente 111 und 112 in
dem ersten Schalter 11 mit den festgelegten Kontakten „1" entsprechend dem
ersten Umschaltsteuersignal SW1, zugeführt von der Kettencode-Decodiersteuereinrichtung 23,
verbunden. Demzufolge werden die Koordinatenwerte, verzögert durch
die Verzögerungen 25 und 27,
zurück
zu den Addierern 24 und 26 über die Umschaltelemente 111 und 112 in
dem ersten Schalter 11 jeweils geführt.
-
Der zweite Schalter 12 wählt eine
von horizontalen Positionen aus, wie beispielsweise eine Position
vor einem Pixel (–1),
eine momentane Pixel-Position (0) und eine Position nach einem Pixel (+1)
entsprechend dem zweiten Umschaltsignal SW2, ausgegeben von der
Kettencode-Decodiersteuereinheit 23, aus, um auszuwählen, wo
der horizontale Koordinatenwert eines Konturpixels von dem horizontalen
Wert des vorherigen Konturpixels aus positioniert ist. Der erste
Addierer 24 addiert den horizontalen Koordinatenwert des
zurückgeführten, vorherigen
Konturpixels und des Werts, ausgewählt über den zweiten Schalter 12, und gibt
das addierte Ergebnis als den horizontalen Koordinatenwert H_ADDR
des momentanen Konturpixels aus.
-
Der dritte Schalter 13 wählt eine
von vertikalen Positionen, wie beispielsweise eine Position vor einer
Linie (–1),
eine momentane Linienposition (0) und eine Position nach einer Linie
(+1) entsprechend dem dritten Umschaltsignal SW3, ausgegeben von der
Kettencode-Decodiersteuereinrichtung 13 aus, um auszuwählen, wo
der vertikale Koordinatenwert eines Konturpixels von dem vertikalen
Koordinatenwert des vorherigen Konturpixexls positioniert ist. Der zweite
Addierer 26 addiert den vertikalen Koordinatenwert des
zurückgeführten, vorherigen
Konturpixels und den Wert, ausgewählt über den dritten Schalter 13,
und gibt das addierte Ergebnis als den vertikalen Koordinatenwert
V_ADDR des momentanen Konturpixels aus. Der Horizontal- und Vertikal- Koordinatenwert,
ausgegebenen von den Addierern 24 und 26, werden
an die Konturpixel-Anzeige 28 angelegt und gleichzeitig
zu den Verzögerungen 25 und 27 eingegeben,
um so zur Berechnung des nächsten Kontur-Pixels
verwendet zu werden.
-
Falls der Horizontal- und Vertikal-
Koordinatenwert H_ADDR und V_ADDR von den Addierern 24 und 26 eingegeben
sind, zeigt die Konturpixel-Anzeige 28 den Konturpixelwert
an einer Pixelposition, dargestellt durch die eingegebenen horizontalen
und vertikalen Koordinatenwerte, an.
-
Der Anfangs-Konturpixel-Decodierer 22 ist
in Bezug auf nur den Fall eines Decodierens von Koordinatenwerten,
codiert mit einer Differenz zwischen dem Referenzcoordinatenwert
und einem des horizontalen und vertikalen Koordinatenwerts beschrieben
worden. Es ist allerdings offensichtlich, dass ein Fall, bei dem
die Koordinatenwerte individuell in der variablen Länge codiert
sind, innerhalb des Schutzumfangs der vorliegenden Erfindung ausgeführt werden
kann.
-
Wie vorstehend beschrieben ist, kann
die Konturdecodiervorrichtung effektiv Konturinformationen, codiert
mit einem Kettencode, decodieren.
-
Während
nur bestimmte Ausführungsformen der
Erfindung spezifisch hier beschrieben worden sind, wird ersichtlich
werden, dass zahlreiche Modifikationen vorgenommen werden können, ohne
den Schutzumfang der Erfindung zu verlassen. Ein Beispiel ist die
Verwendung einer differentiellen Kettencodierung anstelle der Kettencodierung.