-
Die vorliegende Erfindung bezieht
sich auf ein Verfahren zum Decodieren codierter, segmentierter Bilder
oder Aufteilungen, aufgeteilt in homogene Gebiete, denen je spezifische
Etiketten zugeordnet sind, und auf eine entsprechende Decodieranordnung.
Die vorliegende Erfindung findet hauptsächlich Anwendung in dem Bereich
der MPEG-4-Norm,
beispielsweise zum Implementieren von MPEG-4-Decodern.
-
Die "multiple grid chain code" Annäherung (MGCC),
beschrieben in dem Dokument: "Multiple
grid chain coding of binary shapes" von P. Nunes, F. Ferreira und F. Marques,
in "Proceedings
of International Conference on Image Processing" Heft III Seiten 114–117, Oktober 26–29, 1997,
Santa Barbara, Kalifornien, USA, ermöglicht es, binäre Forminformation
von Videoobjekten im Kontext objektbasierter Video-Codierungsschemen
auf effiziente Weise zu codieren. Diese Annäherung ruht auf einer Konturendarstellung
der Aufteilung. Wie in 1 dargestellt,
die eine kleine allgemeine Aufteilung zur Größe von N × M mit beispielsweise drei Gebieten
darstellt, mit denen betreffende Etiketten assoziiert sind (in dem
vorliegenden Fall dargestellt durch graue, schwarze und weiße Kreise),
hat jedes Pixel vier verschiedene assoziierte Konturelemente. 2 zeigt dieselbe Aufteilung
wie in 1 dargestellt,
aber mit der Angabe der spezifischen Konturelementen, welche die Änderungen
zwischen jedem Paar benachbarter Pixel definieren, die nicht zu
demselben Gebiet gehören. 3 zeigt in einer entsprechenden
Matrix von (2N + 1) × (2M
+ 1) Stellen die Implementierung der beiden Gitter: das mit den
Pixelstellen (=Kreisen) assoziierte Gitter und das auf die Konturstellen
(= die Liniensegmente) bezogene Gitter. Die Konturelemente, die
zwischen Pixeln verschiedener Etiketten liegen, werden als aktiv betrachtet.
-
Wie in 4 dargestellt,
kann ein Element des Konturgitters bis zu sechs aktive Nachbarn
haben: dadurch wird das Konturgitter meistens als hexagonales Gitter
bezeichnet. Eine herkömmliche
An und Weise die Aufteilungsinformation in dem Konturgitter zu codieren
ist, einen Ausgangspunkt in dem Gitter zu wählen und den aktiven Stellen
bis ans Ende der Kontur zu folgen. Dieses Verfahren liefert eine
verlustfreie Codierung der Aufteilungsinformation, durch Codierung
der Bewegung von einem aktuellen Konturele ment bis an das nächste benachbarte
Konturelement (nur drei mögliche
Bewegungen; geradeaus, rechts, links).
-
Ein anderes Kontur-Folgeverfahren
ist eine Bewegung über
die Kontur unter Verwendung größerer Schritte,
wobei nur Konturelemente codiert werden, die durch solche große Schritte
gekoppelt sind: in dem oben genannten Dokument benutzt die beschriebene
MGCC-Technik Basiszellen von 3 × 3
Pixeln, wie in 5 dargestellt,
wobei alle Kontur- und
Pixelstellen dargestellt sind. Aus Gründen der Kompressionseffizienz werden
dann zwei Typen von Zellen verwendet: im Uhrzeigergegensinn, wie
in 6, oder im Uhrzeigersinn, wie
in 7. Die Art und Weise
zum Indizieren der verschiedenen Konturelemente in jedem Zellentyp
ist dargestellt: die Ausgangs-Konturstelle ist durch das Symbol
0 angegeben und die anderen durch die Symbole 1 bis 7, wobei das
Symbol 1 der Stelle zugeordnet ist, die sich an derselben Seite
der Zelle befindet, wie das Symbol 0. Folglich sind zum Charakterisieren
einer Zelle drei Parameter erforderlich: die Ausgangs-Konturstelle,
deren Typ (im Uhrzeigersinn oder im Uhrzeigergegensinn), und deren
Orientierung (= Ost oder West für eine
Zelle mit einem horizontalen Ausgangs-Konturelement, Nord oder Süd für eine vertikale
Zelle). Der Codierungsalgorithmus selektiert zwischen jedem der
zwei Zellentypen zur Maximierung der Anzahl Konturelemente, die
je Zelle codiert werden.
-
Die MGCC-Technik verwendet die genannte
Indizierung, sowie deren mögliche
Drehungen. Ausgehend von dem Eingangselement der durch eine 0 in 6 bezeichneten Zelle, kann
jedes Ausgangselement von dem Satz (1, 2, ..., 6, 7) erreicht werden,
aber die Art und Weise, durch die Zelle zu gehen ist nicht durch das
Ausgangselement eindeutig definiert: wie in dem Beispiel nach den 8 und 9 dargestellt, kann eine Bewegung (in
diesem Fall von 0 nach 4) tatsächlich
zwei verschiedenen Konturkonfigurationen entsprechen. Die Konturelemente
innerhalb der Zelle (8, 9, 10, 11),
nicht codiert, führen
eine Zweideutigkeit in den Codierungsprozess ein, wobei zwei verschiedene
Sätze von
Konturstellen (0, 8, 9, 4) oder (0, 11, 10,
4) möglich
sind. Die Zweideutigkeit führt
Codierungsverluste ein. Dennoch ist der einzig mögliche Fehler die fehlerhafte
Etikettierung des zentralen Pixels der Zelle, d. h. nur eines isolierten
Grenzpixels.
-
In einem Kontur-Folgeprozess werden
dann verschiedene Zellen gekoppelt um die Kontur komplette zu machen.
Zum Koppeln von zwei Zellen wird die Ausgangskonturstelle der aktuellen
Zelle die Eingangskonturstelle der nachfolgenden Zelle, wie 10 zeigt. Beim Codieren
der Begrenzung eines einzigen Gebietes mit der MGCC- Annäherung enthält der auf
diese Weise erzeugte Bitstrom: (a) die Position der Ausgangskonturstelle,
und (b) die Kette von Symbolen, welche die durchgeführten Bewegungen
darstellen um der Kontur zu folgen.
-
In dem Kontur-Folgeprozess ist es
erforderlich, die Position der Basiszelle durch das Gitter hindurch progressiv
zu ändern.
Die vorgeschlagene Technik ist beispielsweise in dem Artikel: "Encoding of line
drawings with a multiple grid chain code" von T. Minami und K. Shinohara in "IEEE Transactions
on Pattern Analysis and Machine Intelligence", Heft PAMI-8, Nr. 2, März 1986,
Seiten 269–276
beschrieben worden. Das Basisprinzip der genannten Technik wird
anhand der 11 bis 15 näher erläutert.
-
Wie in 11 tatsächlich angegeben,
wobei ein Beispiel der Codierung mit einem festen Gitter gegeben
wird, ist mittels des Symbols 4 in der ersten Zelle (einer Zelle
im Uhrzeigergegensinn) codiert worden. Wenn Zellen desselben Gitters
verwendet werden, wird das Symbol 7 (12)
in der zweiten Zelle verwendet zur Befolgung der Kontur (wobei das
Symbol 0 immer die neue Ausgangs- oder Eingangsstelle ist), und
das Symbol 2 (13) in
der dritten Zelle, wobei diese zweite und dritte Zelle in dem Fall
Zellen im Uhrzeigersinn sind. Drei Zellen sind erforderlich zur
Befolgung der Kontur von der ersten Ausgangsstelle. Im Gegensatz
dazu sind nur zwei Zellen erforderlich, wenn das Gitter (d. h. im
Wesentlichen die Position der Mitte der Zelle) geändert wird:
wie in den 14 und 15 dargestellt, zeigen diese
eine Modifikation des Gitters in Bezug auf das Beispiel der 11 bis 13, nur wird in diesem Fall nur eine
einzige Zelle gebraucht um zu derselben Ausgangsstelle zu gelangen.
-
Diese Lösung der 14 und 15 führt zu einer
gedrängteren
Darstellung der Kontur. Dann sich aber drei verschiedene Gitterklassen
erforderlich zum Definieren der Verschiebung jedes Gitters gegenüber dem Ursprung
der entsprechenden Zelle (als GO bezeichnet) vor der genannten Verschiebung.
Diese drei Klassen G1, G2, G3 werden difiniert, wie in der nachfolgenden
Klassifikationstafel angegeben (Tafel 1) durch die Position (x,
y) des Pixels, das der Ursprung jedes Zellentyps ist, gegenüber dem
Pixel, das der Ursprung der genannten entsprechenden Zelle ist:
-
-
In dem Beispiel nach 10 wurde eine Zelle der Klasse G2 verwendet
gegenüber
der entsprechenden aktuellen Zelle G0. In einem anderen Beispiel,
dargestellt in 16, wird
eine Zelle der Klassen G1 verwendet, gegenüber der entsprechenden Stromzelle
G0.
-
Die oben beschriebene MGCC-Annäherung kann
aber nur verwendet werden zum Codieren binärer Aufteilungen. Im Falle
allgemein segmentierter Bilder enthalten die Aufteilungen Gebiete,
die Konturen gemeinsam haben. Eine mehr geeignete Annäherung ist
in dem Internationalen Patentanmeldungsdokument WO-A1-00/19375,
eingereicht am 22. September 1999, beschrieben worden, das sich
bezieht auf ein Verfahren zum Codieren segmentierter Bilder, oder
Aufteilungen (aufgeteilt in homogene Gebiete, denen spezifische Etiketten
zugeordnet sind), wobei dieses Verfahren für jede nachfolgende Aufteilung
die nachfolgenden Schritte umfasst:
-
- (a) das Übersetzen
des Bild von Etiketten in eine Beschreibung in Termen einer Kette
von Konturelementen, wobei die Elemente mit Hilfe deren Bewegungen
durch aufeinander folgende Basiszellen definiert werden, zwischen
einem Eingangspunkt und einem Ausgangspunkt der genannten Zellen;
- (b) Befolgung innerhalb jeder nachfolgenden Zelle jeder Kontur
von dem Ausgangskonturpunkt, der vorher extrahiert wurde, zu dem
Ende durch Speicherung der Kettensymbole entsprechend den Eingangs-,
den internen und den Ausgangskonturelementen der genannten Zelle
sowie entsprechend Prioritäten
zwischen vielen Ausgangselementen;
- (c) Wiederholung dieser Schritte bis ans Ende jedes nachfolgenden
Kontursegmentes der betreffenden Aufteilung;
- (d) Codierung der Information entsprechend in jeder Zelle dem
Ausgangspunkt jedes Kontursegmentes und entsprechend der assoziierten
Kette von Bewegungen zwischen dieses Ausgangspunkt und dem der nachfolgenden
Zelle.
-
Diese aufeinander folgenden Schritte
definieren einen sog. Intra-Mode-Codierungsprozess
von Bildaufteilungen. Durch Einführung
des Konzeptes des Dreifachpunktes an der Schnittstelle zweier verschiedener Konturen,
wodurch es ermöglicht
wird, den Ausgangspunkt (oder die Ausgangs-Konturstelle) einer neuen
Kontur (noch nicht codiert) gegenüber der vorhergehenden Kontur
zu orten und durch Einführung
für diese
Dreifachpunkte eines neuen Symbols in die Codierungskette wird eine
effiziente Codierung erhalten: während
die MGCC-Annäherung
den Konturverkettungszellen befolgt, werden in dem vorliegenden
Fall Dreifachpunkte ersetzt, und zwar durch das Konzept von Zellen
mit vielen Ausgängen.
-
Das Flussdiagramm nach 17 entspricht der Basisimplementierung.
Die Hauptschritte des dargelegten Prozesses sind die Folgenden:
das Erzeugen des Konturbildes, das Extrahieren der Ausgangspunkte aus
dem Bild, Zellencharakterisierung, Konturbefolgung, Ermittlung der
Priorität
in der Konturbefolgung, Verwaltung der vielen Punkte, Ende des Prozesses,
und Extraktion des nächsten
Ausgangspunktes, wobei diesen Schritten die schlussendlichen Codierungsschritte
folgen.
-
Der erste Schritt 401 ermöglicht die
Erzeugung der Konturbilder, die nachher codiert werden. Die ursprünglichen
Aufteilungen, beschrieben in Termen von Bildern von Etiketten, werden
in eine Beschreibung in Termen von Konturelementen übersetzt,
definiert mit dem oben beschriebenen hexagonalen Gitter. Der zweite Schritt 402 wird
durchgeführt
zum Extrahieren aller Ausgangskonturpunkte aus dem Bild. Die erste
zu betrachtende Kontur ist die Kontur des Bildrahmens: da der Empfänger bereits
die Form eines derartigen Bildrahmens kennt, ist die einzige Information,
die aus dieser Rahmenkontur codiert werden muss, die Positionen
der Ausgangspunkte, die den Anfang neuer Kontursegmente definieren
werden. Konturpunkte die dieses Rahmen kontaktieren (im Wesentlichen
die Charakteristiken der Zelle, die als Eingangskontur diese spezifische
Konturpunkte hat) werden in einem Puffer gespeichert (FIFO-Speicher)
und werden als "HÄNGENDE" Punkte bezeichnet,
und zwar wegen einer spezifischen Behandlung, wie nachher noch näher erläutert wird.
-
Der dritte Schritt 403 ist
ein Zellencharakterisierungsschritt. Wenn der Ausgangspunkt einer
Kontur einmal selektiert worden ist, soll die durch diesen Punkt
definierte Zelle charakterisiert werden. Für alle Ausgangspunkte wird
die Klasse des Gitters auf GO gesetzt (siehe die vorhergehende Klassifizierung,
TAFEL 1). Im Falle eines Ausgangskon turpunktes, der die Rahmenkontur
kontaktiert, legt die Seite des Rahmens, wo der genannte Punkt geortet
ist, die Orientierung und den Typ der Zelle fest, wie in der Tafel
2 dargestellt (wobei c und cc im Uhrzeigersinn bzw. im Uhrzeigergegensinn
bedeutet):
-
-
Wie ersichtlich wird im Falle eines
Ausgangspunktes eines Innenclusters von Gebieten durch die angenommene
Abtastung der Typ auf "im
Uhrzeigergegensinn" gesetzt
und die Orientierung auf "Osten". Im Falle einer
Zelle, deren Eingangskonturstelle weder ein Konturpunkt ist, der
den Rahmen kontaktiert, noch der Ausgangspunkt eines Clusters ist,
ist die Charakterisierung abhängig
von der Prädiktion
auf Basis der Bewegung, durchgeführt
in der vorhergehenden Zelle. Auf diese Weise ist die Eingangskontur
der aktuellen Zelle die Ausgangskontur der vorhergehenden Zelle
und die Zuordnung der Orientierung und des Zellentyps folgt den
in der Tafel 3 angegebenen Regeln, wobei die zweite Reihe (N, E,
S, W, c, cc) die Daten der aktuellen Zelle darstellt:
-
-
Wenn eine Zelle einmal charakterisiert
worden ist, soll die Konturinformation in der Zelle in der Kette von
Symbolen gespeichert werden. Ein Kontur-Folgeschritt 404 ist
dann vorgesehen. In dem genannten Schritt werden nur diejenigen
Konturelemente, die mit der Ausgangskontur der Zelle gekoppelt ist,
berücksichtigt,
wobei die anderen innerhalb der Zelle (nicht mit der Ausgangskontur
gekoppelt) zurückgezogen
werden und später
während
des Folgeprozesses analysiert werden. Ausgehend von der Eingangskontur
erfolgt die Befolgung mit der nachfolgenden Priorität: geradeaus – rechts – links,
so dass eine Liste von Ausgangskonturen, die mit der Eingangskontur
gekoppelt sind, geschaffen wird. Während dieses Folgevorgangs
werden Eingangs- und Ausgangskonturpunkte als "INOUT" gemerkt und die anderen Konturpunkte
innerhalb der Zelle, notwendig zum Koppeln der Eingangs- und der Ausgangskonturen,
die aber weder Eingangsstellen, noch Ausgangsstellen sind, werden
als "INTERN" gemerkt. Dieser
Schritt 404 der Konturbefolgung innerhalb der Zelle ist
in den 18 und 19 dargestellt. Eine ursprüngliche
Zelle ist in 18 dargestellt:
da die Ausgänge
5 und 6 nicht mit dem Eingang verbunden sind, werden sie in 19 zurückgezogen. Die Konturen, die
detektiert worden sind, sollen danach in der Kette von Symbolen
gespeichert werden. Wenn nur eine Ausgangskontur gefunden wird,
wird die Bewegung, welche die Eingangskontur mit der Ausgangskontur
koppelt, gespeichert; wenn viele Ausgangspunkte detektiert werden,
wird die Zelle mehr als nur ein Symbol braucht zum Codieren der
Konturkonfiguration.
-
Ein Prioritätsbestimmungsschritt 405 wird
danach durchgeführt.
In diesem Schritt startet die Hilfskette, welche die Konturinformation
in der Zelle beschreibt, mit einem Symbol M (entsprechend "Mehrfachausgang") für jeden
zusätzlichen
Ausgang. Auf diese Weise beschreiben, wenn die Hilfskette einer
Zelle mit n Symbolen M startet, die nachfolgenden (n + 1) Symbole
die verschiedenen aktiven Ausgänge.
Der Satz von Ausgangskonturen wird in der Kette in einer spezifischen
Reihenfolge gespeichert. Das auf die Ausgangskontur mit der höchsten Priorität bezogene
Symbol wird unmittelbar nach dem Satz mit Symbolen M in die Kette
eingeführt und
wird für
die nächste
Zelle die Eingangskontur sein (wenn die Kontur nicht geschlossen
ist). Das Symbol mit der höchsten
Priorität
wird durch die Länge
desjenigen Kontursegmentes festgelegt, das die Eingangskontur mit
jeder der Ausgangskonturen koppelt: es ist dasjenige Symbol, das
der längsten
Strecke entspricht, was den Vorteil der Maximierung der Anzahl je
Zelle codierter Konturelemente hat. Wenn zwei Kontureegmente die gleiche
Länge haben,
wird die Zweideutigkeit dadurch gelöst, dass die vorher angegebene
Folgepriorität
berücksichtigt
wird: geradeaus – rechts – links.
Die anderen Ausgangskonturen werden nicht auf Basis des Längenkriteriums
geordnet, aber auf Basis der Folgepriorität (geradeaus – rechts – links).
-
Zum besseren Verständnis sind
Beispiele gegeben. Die Reihenfolge von zwei Ausgangskonturen ist in
den 20 bis 22 dargestellt. In 20 führt die längste Strecke zu dem Ausgang
1 und die Symbole in der Kette sind deswegen M15. In 21 führt die längste Strecke zu 5: Die Symbole
sind nun M51. Dieser Satz von Symbolen führt nicht zu einer einzigartigen
Zellenkonfiguration, da das dritte Beispiel nach 22 zu derselben Darstellung M51 führt. In
diesem letzteren Fall haben die Strecken, die zu den beiden Ausgängen (5 und
1) führen,
haben die gleiche Länge:
basierend auf die Folgepriorität
ist die resultierende Kette dann M51.
-
Für
den Fall einer Hilfskette mit n Symbolen M, sind in den 23 und 24 zwei Beispiele von Zellen mit vielen
Ausgängen
gegeben. Das Beispiel nach 23 entspricht
einer Zelle mit zwei Dreifachpunkten. Die Kette von Symbolen, welche
die Konturinformation dieser Zelle beschreiben, ist MM 153 (obschon
die Strecke, die zu dem Ausgang 3 führt, länger ist als die, welche zu
dem Ausgang 5 fuhrt, das genannte Symbol 5 erscheint zuerst in der
Hilfskette: wegen der Reihenfolge der nicht-Prioritätssymbole,
die auf der Folgepriorität basiert
statt auf dem Längenkriterium).
In dem Beispiel nach 24,
wo es einen Quadrupelpunkt gibt, wobei die Kette von Symbolen diese
Zellenkonturinformation MM 356 ist (die Strecke, die zu 3 führt, ist
die längste Strecke
und die Folgepriorität
gibt die Priorität
zu 5 gegenüber
6).
-
Wenn ein Mehrfachausgang in einer
Zelle detektiert wird, ist dazu ein spezifisches Symbol in der Hilfskette
eingeschlossen, wie oben beschrieben worden ist. Diesem Vorgang
folgt ein Vielfachpunkt-Verwaltungswschritt 406. Während dieses
Schrittes wird der Ausgang mit weniger Priorität (es sei denn, er schließt das Kontursegment)
in einem Puffer anstehender Punkte (einem FIFO-Spiecher) gespeichert
und alle Ausgangspunkte, die auf diese Weise in dem Puffer gespeichert
werden, empfangen die Markierung "PEN-DING". Der Grund eines
derartigen Markierungsvorgangs ist, dass nicht alle Punkte, die
in dem Puffer gespeichert sind, künftig erforderlich sind um
auf ein neues Kontursegment zu verweisen. Während des Folgeprozesses kann eine
neue Zelle tatsächlich
einen Konturpunkt mit der Markierung "PENDING" enthalten. In diesem Fall war das Segment,
das mit diesem "PENDING" Konturpunkt assoziiert
war, bereits vervollständigt
und der entspre chende Mehrfachpunkt soll aus der Kette entfernt
werden (wenn der Effekt eines Mehrfachpunktes von der Kette gelöscht wird,
sollen zwei Symbole entfernt werden: das Symbol M Drain-Elektrode
Mehrfachpunktes wird zunächst
gelöscht
und die Bewegung, die den Eingang der Zelle mit dem assoziierten
Mehrfachausgang koppelte, wird danach entfernt, was beispielsweise
dazu führt,
dass nur das einzelne Symbol 3 in der Hilfskette bleibt, wenn die
Information in einer Zelle vorher mit der Hilfskette M35 codiert
wurde, und eine neue Zelle den zweiten Ausgang deckt, der mit der
Bewegung nach 5 relatiert ist). Außerdem soll die betreffende
Ausgangskontur entweder aus dem Puffer möglicher Ausgangspunkte entfernt
werden, wenn er den Rahmen kontaktiert, oder aus dem Puffer von "PEN-DING" Punkten. Zum Schluss
soll die Markierung des vorhergehenden Ausgangspunktes – der mit
der Bewegung nach 5 assoziiert ist – aktualisiert werden. Wenn
die neue Zelle diesen Konturpunkt als Ausgang hat, verlagert sich
die Markierung von "PENDING" zu "I-NOUT".
Wenn die neue Zelle diesen Konturpunkt als einen inneren Konturpunkt
hat, verlagert sich die Markierung von "PENDING" zu "INTERNAL".
-
Der letzte Schritt des Folgeprozesses,
spezifiziert in 17 durch
das Bezugszeichen 407, ist vorgesehen zum Beenden einer
Kontur (Test 471), eines Clusters (Test 472),
oder der Aufteilung (Test 473). Das Ende eines Kontursegmentes
stützt
sich auf die vorher während
des Folgeprozesses als "INOUT" markierten Konturelemente.
Wenn eine Ausgangskontur in einer Zelle mit einer als "INOUT" markierten Kontur
zusammenfällt,
wird dieser Zweig des Kontursegmentes geschlossen. Wenn die Ausgangskontur
die Kontur der höchsten
Priorität
ist, wird das Ende des Kontursegmentes erreicht (an der Decoderseite,
ermöglicht
dies Konturen zu schließen
an bekannten Konturstellen und eine etwaige Aufteilung zu vermeiden).
Weiterhin wird, wenn die Ausgangskontur als "INTERNAL" oder als "PENDING" markiert ist aber eine der nachfolgenden
Konturstellen, die daraus erreicht werden kann, eine "INOUT" ist, die Kontur
(oder der Zweig) ebenfalls beendet. Wenn ein Kontursegment endet,
soll überprüft werden,
ob das Cluster von Gebieten beendet worden ist. Der Puffer von "PENDING" Punkten wird zunächst überprüft, um zu
sehen, ob es weitere "PENDING" Punkte darin gibt
oder ob sie alle bereits extrahiert worden sind. Wenn keine "PENDING" Punkte übrig geblieben
sind, wird der Puffer möglicher
Ausgangspunkte (Ausgangspunkte, die den Rahmen berühren) überprüft (der
Grund um zunächst
diejenigen Konturen aus dem Puffer mit "PENDING" Punkten zu extrahieren ist der Codierungseffizienz
wegen). Wenn die beiden Puffer leer sind, wird das Cluster beendet und
es wird ein neues (falls vorhanden) auf gleiche Weise betrachtet.
Wie oben bereits erwähnt,
wird das Bild rasterweise abgetastet (von oben nach unten und von
links nach rechts) und die erste nicht codierte aktive Kontur wird
als der Ausgangspunkt für
ein neues Cluster von Gebieten genommen. Wenn es nicht mehr nicht
codierte aktive Konturen gibt, ist die ganze Aufteilung codiert
worden.
-
Dieser letzte Schritt des Folgeprozesses
wird dazu in die drei Teilschritte 471 bis 473 unterteilt.
Solange eine Kontur nicht beendet ist (Test 471), ermöglicht eine
Rückwärtsverbindung
die Wiederholung der Schritte 403, 404, 405, 406.
Sobald eine Kontur beendet ist, wird der Test "Ende des Clusters" durchgeführt (Test 472). Solange
das Cluster der Gebiete nicht beendet ist, wird die nachfolgende
Prozedur durchgeführt.
Der Puffer mit "PENDING" Punkten wird geprüft (Vorgang 74:
Wiederkehr eines gespeicherten "pending" Punktes) um zu sehen,
ob es weitere "PENDING" Punkte darin gibt.
Wenn alle Punkt bereits extrahiert worden sind, wird das Puffer
möglicher
Ausgangspunkte, die den Rahmen berühren, überprüft (der Grund um zunächst diese Konturen
aus dem Puffer mit "PEN-DING" Punkten zu extrahieren
ist der Codierungseffizienz wegen). Wenn die beiden Puffer leer
sind, wird das Cluster beendet und ein neues Cluster mit Gebieten
wird betrachtet (Vorgang 73: Extraktion des nächsten Ausgangspunktes).
Wenn es keine nicht-codierten aktiven Konturen mehr gibt (Test 473),
ist die ganze Aufteilung verarbeitet.
-
Wenn die ganze Aufteilung verarbeitet
worden ist, ist der letzte Schritt des Aufteilungscodierungsverfahrens
ein Entropiecodierungsschritt 408, einschließlich eines
ersten Codierungshilfsschrittes 481 zum Codieren der Information
von Ausgangspunkten und eines zweiten Codierungshilfsschrittes 482 zum
Codieren der Kette von Bewegungen.
-
Für
die Implementierung des Hilfsschrittes 481 ist es notwendig
zu unterscheiden zwischen den externen Ausgangspunkten und den internen
Ausgangspunkten. Alle Ausgangspunkte, die den Rahmen berühren (d.
h. in Bezug aus das erste Cluster) werden zusammen als ein Kopf
der ersten Kette von Bewegungen codiert. Für jeden Ausgangspunkt, der
den Rahmen berührt,
wird die Position des Punktes des Rahmens, der dem genannten Ausgangspunkt
vorhergeht, codiert. Diese Ausgangspunkte werden indiziert, dank
zweier verschiedener Wortlängen:
P Bits werden benutzt für
die horizontale Abmessung des Bildes (obere und untere Seite) und
Q Bits für
die vertikale Abmessung des Bildes (linke und rechte Seite), mit
beispielsweise P = log2[dim_x] und Q = log2[dim_y]. Wenn es zum Schluss an einer Seite
des Rahmens keine restlichen Punkte mehr gibt, die codiert werden
müssen,
wird ein bestimmtes Wort benutzt um diese Situation anzugeben (beispielsweise
PT oder QT). Wenn
der letzte Ausgangspunkt, der den Rahmen berührt, codiert worden ist, wird
ein anderes spezifisches Wort (beispielsweise po oder
Qo) verwendet um den Start der Kette von
Bewegungen anzugeben. Wenn es keine Ausgangspunkte auf dem Rahmen
gibt, geht das Wort Po dem Code, und zwar "intern_ip" des ersten internen
Ausgangspunktes vorher. Die An und Weise, diese jeweiligen Situationen
zu codieren, entsprechend verschiedenen Anzahlen von Ausgangspunkten
an den vier Seiten des Rahmens ist in der Tafel 4 angegeben (bot
= unten):
-
-
Innere Ausgangspunkte werden auf
gleiche Weise indiziert. Da sie durch Abtastung des Bildes von oben
nach unten erhalten worden sind, entspricht ein innerer Ausgangspunkt
immer einer horizontalen Konturstelle. Nur die horizontalen Konturen
werden dazu indiziert.
-
Die obenstehende Beschreibung Bezug
sich, wie angegeben, auf ein Codierungsverfahren, das es ermöglicht,
segmentierte Bilder entsprechend einer verallgemeinerten MGCC-Annäherung zu
codieren. Wenn die codierten Signale übertragen (und/oder gespeichert)
werden, müssen
sie letztendlich decodiert werden, und zwar nach dem Übertragungsschritt.
Die Hauptaufgabe eines MGCC-Decodierungsverfahrens und einer dazu
vorgesehenen Anordnung soll dieselbe Anzahl Gebiete in der decodierten
Aufteilung haben wie die ursprüngliche
Aufteilung.
-
Wenn aber das Codierungsverfahren
durchgeführt
wird, wird, wegen der Tatsache, dass dieser Codierungsprozess lokal
ist (d. h. Zelle für
Zelle durchgeführt)
die mögliche
Unsicherheit in dem zentralen Pixel jeder Zelle dazu führen, wenn
die ganze Aufteilung gleichzeitig analysiert wird, dass Inkonsistenzen
in den decodierten Konturen entstehen: es können neue Gebiete erzeugt werden,
oder Gebiete können
aufgeteilt werden, so dass die decodierten Konturen mit dem ursprünglichen
Bitstrom nicht länger
in Übereinstimmung
sind.
-
Um dieses Problem zu lösen wäre es möglich, die
Hilfskette mit Information von jeder Zelle zu decodieren, wobei
alle vorher decodierten Konturen berücksichtigt werden, und dass
danach bei jedem Schritt überprüft wird,
ob die kompletten decodierten Konturen nach wie vor mit dem ursprünglichen
Bitstrom in Übereinstimmung
sind. Eine derartige Annäherung
steigert die Komplexität
des Decoders, da das ganze Bild analysiert werden soll, damit die
Information jeder Zelle decodiert wird. Wenn die Hilfskette mit
Information von jeder Zelle im Gegensatz dazu dadurch decodiert
wird, dass auf di9e vorhergehende Konturinformation in dem örtlichen
Gebiet beachtet wird, das von der Zelle bedeckt wird, können mögliche Inkonsistenzen
zwar gelöst werden,
aber durch Lösung
derselben können
neue in einer vorhergehenden Zelle geschaffen werden, weil diese
zweite Annäherung
nicht die Anzahl Abtastungen gewährleistet,
die zum Lösen
möglicher
Inkonsistenzen erforderlich sind und eine weitere Abtastung notwendig
sein wird zum Lösen
dieses neuen Problems.
-
Deswegen ist es u. a. eine Aufgabe
der vorliegenden Erfindung ein Aufteilungsdecodierverfahren vorzuschlagen
mit einer geringeren Komplexität
und dennoch effizient zur Vermeidung von Inkonsistenzen in den decodierten
Konturen.
-
Dazu bezieht sich die vorliegende
Erfindung auf ein Decodierverfahren der eingangs beschriebenen Art,
das weiterhin dadurch gekennzeichnet ist, dass es die nachfolgenden
Verfahrensschritte umfasst:
- – (A) einen
Vorwärts-Decodierschritt,
vorgesehen zum Decodieren aller Konturpunkte innerhalb der genannten
Kettensymbole, die mit Sicherheit in der decodierten Aufteilung
sind und zum Detektieren örtlicher Inkonsistenzen;
- – (B)
einen Rückwärts-Decodierschritt,
vorgesehen zum auf eine rückwärtige Weise
Folgen der decodierten Konturen und zum Lösen auf Basis von Markierungen
zugeordnet zu Konturen in jeder genannten Zelle und eingeführt während der
Detektion dieser Inkonsistenzen;
wobei die Konflikte zwischen
der aktuellen Hilfsketteninformation, assoziiert mit jeder genannten
Zelle und vorher decodierten Konturen, deren Markierungen eine einwandfreie
Decodierung der aktuellen Hilfskette nicht erlauben.
-
Das Basisprinzip des genannten Decodierungsverfahrens
ist das Verteilen des Decodierungsprozesses in zwei Hauptschritte:
einen Vorwärts-Decodierschritt
und ei nen Rückwärts-Decodierschritt,
die beide auf Zellenpegel funktionieren (wenn das Codierungsverfahren
ermöglicht
hat, die zu decodierenden Signale zum erhalten). Der erste Schritt,
der Vorwärtsschritt,
ist hauptsächlich
dazu vorgesehen, alle Konturpunkte, die sicher sind, festzulegen
und Inkonsistenzen zu detektieren, während der rückwärtige Decodierungsschritt vorgesehen
ist, zum Lösen
dieser Inkonsistenzen basierend nur auf spezifische Markierungen,
eingeführt
während
des Vorwärts-Decodierschrittes,
ohne dass der ursprüngliche
codierte Bitstrom gespeichert werden soll, was während dieses zweiten Schrittes
nicht üblich
ist.
-
Ausführungsbeispiele der Erfindung
sind in der Zeichnung dargestellt und werden im vorliegenden Fall näher beschrieben.
Es zeigen:
-
(A) 1–24 eine MGCC-Codierungstechnik,
die es ermöglicht,
dass die codierten Signale erzeugt werden, die unter Anwendung des
Decodierverfahrens nach der vorliegenden Erfindung verarbeitet werden:
-
1 ein
Beispiel einer Aufteilung der Größe M × N (in
diesem Fall mit M = N = 5) und 2 dieselbe Aufteilung
mit den Konturelementen, welche die Begrenzungen zwischen den verschiedenen
Gebieten definieren,
-
3 assoziiert
das Gitter, das mit den Pixelstellen übereinstimmt, und das Gitter,
das mit den Konturstellen assoziiert ist,
-
4 eine
Darstellung der sechs aktiven Nachbarn eines Konturelementes des
Konturgitters,
-
5 eine
Basiszelle von 3 × 3
Pixeln, verwendet in der MGCC-Technik;
-
6 und 7 eine Darstellung der An
und Weise der Indizierung der Konturelemente für eine Uhrzeigergegensinn-Zelle
und eine Uhrzeigersinn-Zelle und die 8 und 9 zeigen für dieselben
Eingangs- und Ausgangselemente einer Zelle zwei verschiedene Konturkonfigurationen
in der genannten Zelle;
-
10, 11 bis 13, 14 bis 15 und 16 zeigen zwei einzelne Lösungen zum
Koppeln von Zellen für
einen Kontur-Folgeprozess,
-
17 ein
Flussdiagramm, das ein komplettes Schema der genannten MGCC-Codierungstechnik darstellt,
wobei die codierten Signale erzeugt werden, die nun nach der vorliegenden
Erfindung verarbeitet werden,
-
18 und 19 zeigen bei dem genannten
Codierungsverfahren den Schritt der Konturbefolgung innerhalb einer
Zelle des Gitters und 20 bis 22 zeigen, wie zwei Ausgangskonturen
während
des Prioritätsbestimmungsschrittes
geordnet werden sollen,
-
(B) 25 bis 50 beziehen sich auf das
Aufteilungsdecodierungsverfahren nach der vorliegenden Erfindung,
-
25 ein
Flussdiagramm, das ein Schema einer Ausführungsform des Aufteilungsdecodierungsverfahren
nach der vorliegenden Erfindung darstellt, und 26 zeigt einen Satz von Markierungen,
die nützlich sein
werden zur Beschreibung aller Ziffern, die das Verfahren des genannten
Decodierungsverfahrens illustrieren,
-
27 bis 36 einen Satz von Konturfigurationen,
nützlich
zum Verständnis
des Konturerzeugungshilfsschrittes des genannten Decodierungsverfahrens,
-
37 und 38 ein Beispiel des Typs
des Konfliktes, das während
des Fehlersteuerhilfsschrittes des Decodierungsverfahrens auftreten
kann, und 39 bis 41 zeigen einige Situationen
während
dieses Teilschrittes,
-
42 bis 45 eine An Konturfiguration,
die zu einer Inkonsistenz bei der Implementierung des Decodierungsverfahrens
führt,
-
46 bis 49 eine andere Ausführungsform
des Aufteilungsdecodierungsverfahrens nach der vorliegenden Erfindung,
-
50 auf
sehr schematische Weise die aufeinander folgenden Schritte und Hilfsschritte
der Decodierungsannäherung
auf skalierbare An und Weise.
-
In dem Flussdiagramm nach 25, das einem Basisschema
eines MGCC-Intramode-Decodierungsverfahrens
nach der vorliegenden Erfindung entspricht, sind die Haupt-Hilfsschritte
des Vorwärts-Decodierungsschrittes
die Folgenden: Verwaltung der Ausgangspunkte, Zellencharakterisierung,
Konturerzeugung in der Zelle, Verwaltung der Mehrfachpunkte, Fehlersteuerung,
Ende des Prozesses, während
die Haupt-Hilfsschritte des rückwärtigen Decodierungsschrittes
die Folgenden sind: Wiedergewinnung eines Schließpunktes, Detektion der inversen
Spurfolge, Fehlersteuerung, Ende des Prozesses und Erzeugung des
schlussendlichen Bildes.
-
Der erste Hilfsschritt 501 des
Vorwärts-Decodierungsschrittes
ist vorgesehen zum Selektieren der Ausgangspunkte. Der erste Teile
des Eingangsbitstroms, der die Symbolkette bildet, enthält die Position
des ersten Ausgangspunktes. Wenn es mehrere Kontursegmente gibt,
ausgehend von dem Rahmen des aktuellen Bildes, wird das erste als Ausgangspunkt
selektiert und die anderen Punkte werden in einem Puffer von Ausgangspunkten,
die den genannten Rahmen kontaktieren, gespeichert. Wenn es keine
Kontur gibt, ausgehend von dem Rahmen, ist die erste Information
in der Kette die Position des Ausgangspunktes eines inneren Clusters
von Gebieten.
-
Der zweite Hilfsschritt 502 ist
ein Zellencharakterisierungsschritt. Die Zellen, deren Eingangspunkt
einem Ausgangspunkt entspricht, werden entsprechend demselben Satz
von Regeln charakterisiert wie in der Tafel 2 (Schritt 403)
definiert. Für
Zellen, deren Eingangskontur nicht ein Ausgangspunkt ist, werden
auf dieselbe An und Weise charakterisiert wie in dem Codierungsteil
(siehe Tafel 3) angegeben.
-
Der dritte Hilfsschritt 503,
vorgesehen zur Konturerzeugung in jeder Zelle, benutzt die Information,
die in der mit einer Zelle assoziierten Hilfskette enthalten ist,
sowie die Konturen, die bereits in dem Gebiet verfügbar sind,
das durch diese Zelle bedeckt wird, um einen Vorschlag der Konturkonfiguration
zu machen, beschrieben durch die Hilfskette. In diesem Vorschlag
liegen Konturelemente in der Zelle und denen werden Markierungen
zugeordnet. Diese Markierungen sind:
– "sure_input": die Eingangskonturstelle für jede Zelle,
die sicherlich zu der ursprünglichen
Aufteilung gehört;
– "sure_link": eine Konturstelle,
die im Innern der Zelle liegt, die durch die Konturkonfiguration
in dem Decodierungsprozess, sicherlich zu der ursprünglichen
Aufteilung gehört;
– "sure_output": die Ausgangskonturstelle
für jede
Zelle, die sicherlich zu der ursprünglichen Aufteilung gehört;
– "sure_not": eine Konturstelle,
die in dem Innern der Zelle liegt, die wegen der Konturkonfiguration
in dem Decodierungsprozess, sicherlich nicht zu der ursprünglichen
Aufteilung gehört;
– "likely": eine Konturstelle
in dem Innern der Zelle, die, da dies zu einer glatten Konturkonfiguration
führt,
als erste Lösung
für die
Kontur innerhalb der Zelle vorgeschlagen wird;
– "unlikely": eine Konturstelle
in dem Innern der Zelle, die, da dies nicht zu einer glatten Konturkonfiguration führt, nicht
als erste Lösung
für die
Kontur innerhalb der Zelle vorgeschlagen wird.
-
Offenbar können in diesem Hilfsschritt 503 vorher
decodierte Konturelemente (d. h. Konturen, die bereits in dem Gebiet
verfügbar
waren, das durch die Zelle bedeckt wird und deswegen von der Decodierung vorhergehender
Hilfsketten herrühren)
nicht ihre Position oder deren Markierung ändern. In allen Figuren, die das
Verhalten des Decodierungsverfahrens illustrieren, wird der Satz
mit Markierungen dargestellt, wie in 26 angegeben.
-
Der erste Vorschlag für die Hilfsketten
mit einem einzigen Symbol (1, 2, ..., 7) wird gegeben durch den Satz
mit Konturkonfigurationen, dargestellt in den 27 bis 33.
Die Ungewissheit in dem zentralen Pixel, in allen Beispielen in
der nachfolgenden Beschreibung und in den Figuren dargestellt als
ein gestrichelter Kreis, ist dadurch aufgelöst worden, dass die meist geschmeidigen
Konfigurationen angepasst werden, die am wahrscheinlichsten in den
ursprünglichen
Aufteilungen erscheinen (dies aber ist anhängig von dem Segmentierungsverfahren,
das angewandt worden ist zum Erzeugen der Aufteilungen, und diese
Wahl kann deswegen geändert
werden).
-
Die Eingangskontur für jede Zelle
wird als "sure_input" markiert und die
Ausgangskontur als "sure_output". Im Wesentlichen
stimmt die Markierung "sure_input" nicht mit einem
einzigen Wert überein, sondern
mit einem Satz von Werten, welche die Reihenfolge indizieren, in
der die jeweiligen Eingangskonturen verkettet sind. Auf diese Weise
wird, wenn eine Zelle initialisiert wird, der Index aktualisiert
("sure_input" = "sure_input" + 1) und der Eingangspunkt
empfängt
den aktualisierten Index "sure_input".
-
Andererseits soll, wenn der Eingang
die Markierung "sure_output" hat, auf den neuen
Indexwert "sure_input" aktualisiert werden,
was notwendig sein wird, damit die invertierte Befolgung während des
rückwärtigen Decodierungsschrittes
ermöglicht
wird. Weiterhin wird die Charakterisierung der invertierten Zelle
(d. h. deren Typ und deren Orientierung) in einem Puffer gespeichert
(hier einem FILO-Speicher) mit Zellencharakterisierung, und zwar
zur Hilfe der inversen Befolgung. Eine einfache Regel zum Erhalten
der inversen Orientierung der aktuellen Zelle basiert auf der Schätzung der
Orientierung der nachfolgenden Zelle. Die Regeln um von einer direkten
zu einer invertierten Zellencharakterisierung zu gehen, sind in
der Tafel 5 dargestellt:
-
-
Je nach der Konturkonfiguration werden
einige Konturstellen als "sure_not" markiert: sie können nicht zu
der Endaufteilung gehören,
da die Hilfskette, welche die Zelle definiert, vermeidet, dass sie
aktiv werden. Wenn wir nun die Zelle betrachten, die in 34 dargestellt ist, dann
gibt dies ein Beispiel dieses Typs von Konfigurationen, die Hilfskette
enthält
nur das Symbol 7 und desweg en können
weder die Konturstelle 8 noch die Stelle 11 aktiv
werden (sie würden
eine Vielfachpunkt ergeben): diese Konturstellen können als "sure_not" bezeichnet werden
(wenn der Vielfachpunkt wirklich bestehen würde, wäre er in der Kette als M X
7 erschienen, da 7 die möglichst
kurze Strecke ist und jeder anderer möglicher Ausgang "X" eine höhere Priorität haben würde).
-
Die Konturelemente, die in dem Innern
einer Zelle liegen (8, 9, 10, 11)
die vorgeschlagen werden um die Eingangskontur mit den Ausgangskonturen
zu verbinden, werden als "likely" markiert, und diejenigen,
die nicht vorgeschlagen worden sind, werden als "unlikely" markiert. Diese Entscheidung wird angepasst
zum Analysieren aller Information in dem Gebiet, das durch die Zelle
bedeckt wird. Zunächst
wird, bei einer bestimmten Hilfskette, der Satz mit Konfigurationen,
vorgeschlagen in den 27 bis 33, angenommen. Wenn die
Hilfskette mehr als ein einziges Symbol enthält und Ungewissheit präsentiert,
wird es als eine Konturkonfiguration decodiert, die zu der minimalen
Anzahl Konturelemente führt:
wenn sie überhaupt
keine Ungewissheit zeigt (siehe den Fall von M15, beschrieben in
Bezug auf 20), werden
die inneren Konturstellen als "sure_link" markiert.
-
Die Ausgangskonturkonfiguration wird
mit der anderen Konturinformation kombiniert, die bereits in der Zelle
vorhanden ist, und die Übereinstimmung
der schlussendlichen Konturkonfiguration in Bezug auf die Hilfskette
wird überprüft. Nach
der genannten globalen Analyse der Zelle kann die vorgeschlagene
Konturkonfiguration sich ändern.
In den 35 und 36 ist ein Beispiel einer
Konfigurationsanalyse dargestellt. Das empfangene Symbol ist eine
3 und die Zelle hatte bereits die Konturstellen 5 und 6 markiert.
Wenn die Ausgangskonfiguration angenommen gewesen wäre, würde die
Strecke abwärts
zu der Konturstelle 3 zu Vielfachausgängen führen, die nicht in der Hilfskette
erscheinen (siehe 35).
Der Vorschlag der inneren Konturen wird deswegen modifiziert und
die zweitmögliche
Konfiguration für
das Symbol 3 wird genommen (siehe 36).
Die Endmarkierungen der inneren Konturen sind abhängig von
den Markierungen von Konturelementen 5 und 6: so wie, in dem Beispiel
der 35 und 36, die Elemente 5 und 6
als "sure_input" oder als "sure_output" markiert sind, so
sind die Elemente 8 und 9 als "sure_not" und die Elemente 10 und 11 als "sure_link" markiert (da dies die
einzig mögliche
Konfiguration sein wird: siehe 36),
während,
wenn die Elemente 5 und 6 als "likely" markiert wären, würden die
Elemente 8 und 9 als "unlikely" markiert sein und die Elemente 10 und 11 als "likely" (da es nicht genügend Information
gibt zum Fixieren der Konfiguration, und wobei die Vorgeschlagene dann
mit der vorhergehenden und der aktuellen Hilfskette kohärent ist).
-
In Anbetracht des oben beschriebenen
ganzen Kontur-Erzeugungshilfsschrittes 503 sei bemerkt, dass,
obschon das Decodierungsverfahren nach der vorliegenden Erfindung
die vorher decodierten Symbole bevorzugt, je dichter die Aufteilung
ist, umso geringer der Betrag an Ungewissheit in dem Decodierungsprozess
ist.
-
Offenbar kann die übertragene
Hilfskette einer Zelle Symbole eines Mehrfachpunktes enthalten.
In Übereinstimmung
mit dem vierten Hilfsschritt 504, vorgesehen zur Verwaltung
derartiger Mehrfachpunkte, werden die Ausgangspunkte, die mit den
genannten Symbolen assoziiert sind, in dem Puffer der Ausgangspunkte gespeichert.
Dennoch, wenn ein derartiger assoziierter Ausgangspunkt einem Pixel
entspricht, das als "sure_input" markiert ist, oder
wenn eine der nachfolgenden Konturstellen, die von hieraus erreicht
werden kann, ein "sure_input" ist, bezeichnet
der Mehrfachpunkt, dass dieser Zweig der Kontur eine Kontur schließt und der
Ausgangspunkt braucht nicht unbedingt gespeichert zu werden zum
Orten des Ausgangspunktes einer künftigen Kontursegmentes (die
An und Weise, wie geschlossen werden muss, wird nachher noch detailliert
beschrieben, und zwar in Bezug auf die Beschreibung des sechsten
Hilfsschrittes 506).
-
Es sei ebenfalls bemerkt, dass der
dritte Hilfsschritt 503 wegen der Konturerzeugung in jeder
Zelle, nicht immer Probleme innerhalb der Zellen vermeidet, da es
nur erlaubt ist, die Stelle und den Wert der aktuellen Konturpunkte
zu variieren, nicht aber die Stelle und den Wert der vorhergehenden
Punkte. Ein fünfter Hilfsschritt 505 ist
danach für
eine Fehlersteuerung vorgesehen. In dem genannten Schritt werden
Konfigurationen, die nicht mit der Hilfskette übereinstimmen, werden detektiert
und Konturmarkierungen werden entfernt (d. h. Kontursegmente werden
geöffnet)
um die Kette vorzubereiten wegen des rückwärtigen Decodierungsschrittes,
der die Probleme lösen
wird. Die genannten Konflikte werden verursacht durch die Existenz
vorher decodierter Konturen, deren Markierungen eine einwandfreie
Decodierung der aktuelle Hilfskette nicht erlauben. In diesem Fall
müssen
die Konturstellen der vorhergehenden Hilfskette, welche die Inkonsistenz
erzeugen, die Markierung "likely" haben. Die An und
Weise, deutlich zu machen, dass die Zelle nicht mit den vorhergehenden
Hilfsketten übereinstimmt,
ist mit Hilfe eines Aktualisierungsvorgangs der Markierungen dieser
Konturpunkte zu "unlikely" oder zu "sure_not" (d. h. durch Öffnung des
Kontursegmentes). Die Endlösung
dieses Problems wird aufgeschoben, da dies eine mehr globale Übersicht
der Aufteilungsstruktur erfordert, nur möglich während des rückwärtigen Decodierungsschrittes.
-
Ein Beispiel dieses Typs eines Konfliktes
ist in 37 und 38 dargestellt. In 37 hat die Hilfskette ein
einzigartiges Symbol 3 und in der Zelle wurden die Konturelemente
1 und 2 vorher markiert als "likely" und die Konturelemente
5 und 6 als "sure_input", "sure_link" oder "sure_output". Der Konturerzeugungshilfsschritt 503 hat
die Konturkonfiguration des Symbols 3 geändert und hat die Konturelemente 8 und 9 als "sure_not" markiert und die
Konturelemente 10 und 11 als "sure_link" markiert. Die neue Konfiguration führt jedoch
zu einem Mehrfachpunkt, wie in 37 dargestellt.
Die Elemente 1 und 2 sind als "sure_not" in 38 markiert, wobei das Kontursegment
geöffnet
wird, um das Vorhandensein einer Inkonsistenz in der decodierten
Aufteilung zu zeigen.
-
Ein sechster und letzter Aufsatz 506 ist
vorgesehen, in dem Vorwärtsdecodierschritt
zum Schließen einer
Kontur (Test 561: Kontur schließen ?), eines Clusters (Test 562:
Ende des Clusters ?) oder der Aufteilung (Test 563: Ende
der Aufteilung ?). Wenn die Bewegung mit der höchsten Priorität in der
Hilfskette zu einem Konturpixel führt, das als "sure_input" oder "frame" markiert ist, oder
wenn einer der nachfolgenden Nachbarn dieses Pixels ein Konturpixel
ist mit der Markierung "sure_input" oder "frame", wird die Kontur
geschlossen und dieser Punkt empfängt die Markierung "sure_output". Wenn er aber mit
einem aktuellen "sure_input" übereinstimmt, sollte die Markierung
nicht geändert
werden, da die Reihenfolge der Indizierung während des rückwärtigen Decodierungsschrittes
verlorengehen würde.
Weiterhin sollen die Konturelemente, die mit der höchsten Priorität in der
Zelle assoziiert sind und das Schließen einer Kontur markieren,
in einem Puffer von Schließpunkten
gespeichert werden (FILO-Speicher), da sie als Ausgangspunkte in
der invertierten Befolgung des rückwärtigen Decodierungsschrittes
verwendet werden.
-
Wenn ein Kontursegment endet (solange
es nicht geendet hat ist eine Rückwärtsverbindung
zu dem Hilfsschritt vorgesehen) wird geprüft, ob das Cluster von Gebieten
ebenfalls beendet ist (Test 562). Der Puffer der Ausgangspunkte
wird zunächst
geprüft,
um zu sehen, ob es weitere Ausgangspunkte darin gibt, oder ob sie
alle bereits extrahiert worden sind. Wenn der Puffer mit Ausgangspunkten
beendet ist, wird der Puffer von Ausgangspunkten, die den Rahmen
kontaktieren, geprüft.
Wenn ein Ausgangspunkt aus einem dieser Puffer extrahiert wird,
aktualisiert die Ausgangskontur die Markierung von "sure_output" zu "sure_input". Diese Ausgangskontur
empfängt
aber nicht den nachfolgenden Wert des Indexes "sure_input", sondern den Wert des nachfolgenden
Indexes plus Eins ("sure_input" + 1). Der Grund
dieses Sprunges in der Indexreihenfolge wird nachher näher erläutert, und
zwar in Bezug auf den schließenden
Hilfsschrittes des rückwärtigen Decodierungsschrittes.
Wenn es dennoch Ausgangspunkte gibt (Ende des Clusters ? NO), findet
ein Hilfsschritt 75 der Wiederherstellung des gespeicherten
Punktes statt, und es ist eine rückwärtige Verbindung
zu dem Hilfsschritt 502 vorgesehen. Wenn keine Ausgangspunkte
mehr übrig
sind, wird das Cluster beendet und die nächste Information in der Kette
bezieht sich auf einen neuen Eingangspunkt eines anderen Clusters
(rückwärtige Verbindung 76).
Wenn es in der Kette keine weiteren Symbole mehr gibt ist der vorwärtige Decodierungsschritt beendet
(Ende der Aufteilung) und der rückwärtige Decodierungs-Hilfsschritt
wird nachstehend beschrieben.
-
Der erste Hilfsschritt 601 dieses
rückwärtigen Decodierungsschrittes
ist vorgesehen zum Sammeln von Ausgangspunkten. Da die Befolgung
der Konturen während
des rückwärtigen Decodierungsschrittes
einer Strecke folgen wird, die gegenüber der während des vorwärtigen Decodierungsschrittes
aufgebaut worden ist, invertiert ist, wird der Satz der Ausgangspunkte
für diese
inverse Befolgung von dem Puffer der schließenden Punkte, erzeugt während des
sechsten Hilfsschrittes 506, erhalten (Verbindung 81).
-
Eine Detektion der invertierten Befolgung
wird dann in einem zweiten Hilfsschritt 602 durchgeführt. Zum
Schaffen der invertierten Zellen sollen die Eingangskontur und die
Orientierung und der Typ jeder Zelle verfügbar sein. Die Eingangskontur
kann entweder aus dem Puffer der schließenden Punkte erhalten werden, wenn
es ein Ausgangspunkt eines Kontursegmentes in der invertierten Befolgung
ist, oder durch die Ausgangskontur der vorher invertierten Zelle.
Die Orientierungs- und Typeninformation der inversen Zelle wird
unmittelbar aus dem Puffer der Zellencharakteristiken erhalten,
die während
des Vorwärts-Decodierungsschrittes erzeugt
worden sind. Der Ausgang der invertierten Zelle wird durch Überprüfung der
Markierungen der sieben möglichen
Ausgangskonturen erhalten: die Ausgangskontur ist diejenige, die
mit dem vorhergehenden "sure_input" Index markiert worden
ist (es sei bemerkt, dass diese Ausgangskontur nicht durch Befolgung
der Kontur in dem Innern der Zelle erhalten werden kann, da einige
Kontursegmente während
des vorwärtigen
Decodierungsschrittes geöffnet
sein können).
-
Ein dritter Hilfsschritt 603 ist
zur Steuerung eines Fehlers vorgesehen. Wenn eine invertierte Zelle
einmal einwandfrei gebildet worden ist, sollen mögliche offene Konturen innerhalb
der Zelle definiert werden, was nur auf Basis der Verbindung zwischen
den Eingangs- und Ausgangskonturen der Zelle gemacht wird (d. h. der
Verbindung zwischen der Ausgangskontur mit der höchsten Priorität bzw. der
Eingangskontur der direkten Zelle) Die Definition dieser Verbindung
ist die einzig notwendige Aufgabe. Wenn die Zelle etwas Ungewissheit zeigt
(dies soll nur in dem zentralen Pixel sein), wird dies gelöst, wenn
die längste
Strecke in der Zelle fixiert wird (d. h. die Streckenverbindung
in der direkten Zelle (die Eingangskontur und die Ausgangskontur
mit der höchsten
Priorität).
-
Der Fehlersteuer-Hilfsschritt 603 ermöglicht es,
dass die Markierungen der Stellenkonturen in der Zelle aktualisiert
werden. Stellenkonturen mit der Markierung "likely" oder "unlikely" können
entweder Markierungen wie "sure_link" oder "sure_not" empfangen, wenn
keine Ungewissheit gegeben wird, oder eine neue Markierung "more_likely", wenn es nach wie
vor eine bestimmte Ungewissheit gibt. Diese neue Markierung bezeichnet,
dass nach der Analyse der Zelle in der invertierten Richtung diese
betreffenden Konturpunkte vorgeschlagen werden als gehören sie
zu der Aufteilung (ein derartiger neuer Markierungstyp ist notwendig
um einen Unterschied zwischen dem Vorschlag in dem vor wärtigen Decodierungsschritt
und dem in dem rückwärtigen Decodierungsschritt
zu machen). Die Markierung der Konturstellen als "sure_link" oder "more_likely" können zu
neuen Mehrfachpunkten in der Zelle führen. Wenn Konturstellen, die
vorher als "likely" markiert wirden sind,
diejenigen kontaktieren, die zu "sure_link" oder "more_likely" aktualisiert worden
sind, werden sie als "sure_not" oder als "unlikely" markiert und künftige invertierte
Zellen werden die Kontur schließen.
-
Ein Beispiel dieser Art der Entscheidung
ist in den 39 bis 41 gegeben. 39 zeigt eine Situation, in der in dem
Vorwärts-Decodierungsschritt
die Hilfskette ein einzigartiges Symbol 3 hatte und die Zelle Konturelemente
1, 2, 5, 6 hatte, die vorher als "likely" markiert waren. Als Ergebnis des dritten
Hilfsschrittes 503 des Vorwärts-Decodierungsschrittes (Konturerzeugung
in jeder Zelle), werden die Konturstellen 8 und 9 als "likely" markiert und 10 und 11 als "unlikely" markiert. In dem
fünften
Hilfsschritt 505 (Fehlersteuer-Hilfsschritt) des Vorwärts-Decodierungsschrittes
wurden die Konturen, die den Eingang 0 und den Ausgang verbinden,
geöffnet
und sie werden danach zu "unlikely" aktualisiert, wie
in 40 angegeben. In
dem Fehlersteuer-Hilfsschritt 603 des rückwärtigen Decodierungsschrittes
wird entschieden, die Konturelemente 8 und 9 als "more_likely" und 10 und 11 als "unlikely" zu markieren, wie
in 41 angegeben ist
(diese Wahl ist beliebig und das Umgekehrte könnte angenommen werden). Weiterhin
werden, da diese Konfiguration einen neuen Dreifachpunkt schafft,
die Ausgänge
1 und 2 zu "unlikely" aktualisiert werden
(siehe auch 41).
-
In dem vorstehenden Fall kontaktieren
die neuen Konturstellen, die als "more_likely" markiert sind, andere Konturstellen,
die als "likely" markiert sind. Im
Fall der Erzeugung neuer Mehrfachpunkte durch Kontaktierung eines
Paares Konturstellen, markiert als "more_likely", mit einem anderen Paar, markiert als "sure_link" oder "more_likely", sollte die Inkonsistenz
auf eine andere Art und Weise gelöst werden. Solche Situationen, wobei
die Analyse der Aufteilung außerhalb
der aktuellen Zelle erweitert werden sollte, entsprechen einer falschen
Wahl, die in vorher rückwärtig decodierten
Zellen gemacht worden ist, wodurch zwei verschiedene Arten von Inkonsistenzen
auftreten können.
-
Die erste Art Inkonsistenz erscheint,
wenn ein Einzelpixelgebiet erzeugt wird, was für das zentrale Pixel der Zelle
oder bei den Pixeln in der Mitte der Zellenseiten auftreten kann
(d. h. für
Pixel, die nicht in einer Ecke der Zelle liegen). Die vier Konturstel len
um solche Pixel herum werden danach als "sure_input", "sure_link", "sure_output", "more_likely" oder "likely" markiert. Wenigstens
eine der Konturstellen wird entweder "more_likely" oder "likely" sein und eine der anderen Konturen,
die als "likely" (dies ist die erste
Wahl) oder "more_likely" (dies ist die zweite
Wahl) markiert ist, wird zu "unlikely" aktualisiert (dieses
Aktualisieren öffnet nicht
die Kontur, da die anderen drei Konturstellen eine geschlossene
Kontur gewährleisten).
Zur Lösung
einer Inkonsistenz eines der Pixel in der Mitte der Zellenseite,
braucht nur eine Konturstelle, die außerhalb der Zelle liegt, analysiert
zu werden (da dieser Fall nur selten auftritt und die externe Konturstelle
nahe bei der Zelle liegt, ist diese Prozedur nach wie vor örtlich und
steigert die Komplexität
des Verfahrens nicht).
-
Die zweite An Inkonsistenz erscheint,
wenn Gebiete in zwei nicht verbundene Gebiete aufgeteilt werden,
die in Gebieten auftreten können,
die eine diagonale Verlängerung
einer Pixelbreite haben. Wenn das Pixel, das diese Verlängerung
bildet, in einer der Ecken der Zelle liegt, können die Konturen in der Zelle
zu "more_likely" aktualisiert werden,
wodurch das Gebiet in zwei gebiete aufgeteilt wird.
-
Eine Konturkonfiguration führt zu dem
Fall, wie dieser in den 42 bis 45 dargestellt ist. Ein Teil
eines ursprünglichen
Konturbildes und dessen Codierung ist in 42 dargestellt. Der Satz mit Zellen,
welche die Inkonsistenz schaffen wird, wird durch Pfeile und Buchstaben
angegeben, welche die Konturbefolgung markieren: die erste Zelle
AB wird mit der Hilfskette 3 codiert, die zweite Zelle CD, die einen
Mehrfachpunkt darstellt, wird mit der Hilfskette M13 codiert und
die letzte Zelle EF erfordert nur ein einziges Symbol 3.
-
43 illustriert
den vorwärtigen
Decodierungsschritt. Die "likely"-Markierungen, die durch die Decodierung
des Symbols 3 der Zelle AB geschaffen sind, werden aktualisiert,
wenn die Zelle CD decodiert wird. Da die Hilfskette M13 keine Ungewissheit
einführt,
werden alle inneren Konturen als "sure_link" markiert. Der Kontakt mit den Ausgängen 5 und
6, die von der Zelle AB als "likely" markiert sind, führt zu einem
neuen Mehrfachpunkt. Zur Lösung
dieses Problems werden die Markierungen der Ausgänge 5 und 6 zu "sure_not" aktualisiert. Die
Decodierung der Zelle EF markiert die inneren Konturstellen 8 und 9 als "unlikely" und 10 und 11 als "likely".
-
Der rückwärtige Decodierungsschritt startet
durch Decodierung der ersten invertierten Zelle ZY (siehe 44) und, wie in der genannten
Figur dargestellt, aktuali siert die Konturstellen 10 und 11 (Indices
der invertierten Zelle) zu "more_likely". Der Prozess ändert überhaupt
keine Markierung in der zweiten invertierten Zelle XW. Zum Schluss
werden die internen Konturstellen 8 und 9 der
dritten Zelle VU als "sure_link" markiert. Beim Markieren
der Konturstellen 8 und 9 wird eine Inkonsistenz
geschaffen, da die zwei Ausgänge
1 und 2 als "more_likely" markiert werden.
In diesem Stadium wird das mit weißen Pixeln markierte Gebiet
in zwei Gebiete aufgeteilt und der Prozess erfordert, dass die zwei
Konturstellen 1 und 2 der Zelle VU, die als "more_likely" markiert sind, zu "sure_ not" aktualisiert werden.
-
Die Art und Weise, die Existenz dieser
Art von Problemen zu detektieren ist die Tatsache, dass eine Markierung "more_likely" aktualisiert worden
ist, d. h. eine während
des rückwärtigen Decodierungsschrittes vorher
durchgeführte
Entscheidung wurde geändert.
Dieses Problem soll gelöst
werden (da keine weitere Analyse an diesen Konturen durchgeführt wird),
was durch eine Verbreitung der Aktualisierung der Konturmarkierungen
durch die Aufteilung verwirklicht wird. In diesem Fall erfordert
die Verbreitung die Analyse von Konturpixeln, die außerhalb
der Zelle liegen. Dennoch wird die Inkonsistenz nur durch Behandlung
von Paaren von Konturstellen gelöst,
die in der Richtung der diagonalen Linie liegen, die den zentralen
Punkt der Zelle mit der Ecke der Zelle verbindet, die das Problem
verursacht. In dem Beispiel nach 44 soll
die Aktualisierung, die an den Konturstellen 1 und 2 der Zelle VU
durchgeführt
worden ist, in der Richtung der Diagonalen fortgesetzt werden. Wie
in 45 dargestellt,
werden die Pixel 8 und 9 der Zelle ZY auf diese
Weise als "sure_link" markiert (es sei
bemerkt, dass die Anzahl Paare zu aktualisierender Konturstellen
durch die Anzahl benachbarter paralleler Gebiete einer einzigen
Pixelbreite festgelegt wird, welche die Fortsetzung finden wird:
offenbar erscheinen solche Fälle
sehr selten und, sollten sie erscheinen, so ist die Anzahl paralleler
Gebiete ziemlich klein, was zur Folge hat, dass der Prozess lokal
bleibt und die Komplexität
nicht steigert).
-
Ein vierter Hilfsschritt 604 ermöglicht es,
eine Kontur (Test 641: Ende der Kontur ?) oder die Aufteilung zu
schließen
(Test 642: Ende der Aufteilung ?). Das Ende einer Kontur
in der inversen Befolgung wird detektiert, wenn von der letzten
Ausgangskontur die Zelle, die unter Verwendung der Zellencharakteristiken
erzeugt worden ist, kein Pixel findet, das markiert ist mit dem
vorhergehenden Index "sure_input" (wenn die Kontur nicht
beendet ist, wird eine rückwärtige Verbindung 77 zu
dem Hilfsschritt 602 vorgesehen). Wie in der Beschreibung
in Bezug auf den schließenden
Hilfsschritt 506 des vorwär tigen Decodierungsschrittes
erläutert, werden
Ausgangspunkte mit dem Index "sure_input
+ 1" markiert und
dieser Spalt in der Indizierungsreihenfolge bezeichnet das Ende
des Kontursegmentes in der inversen Befolgung. In diesem Fall wird
ein neuer Ausgangspunkt aus dem Puffer mit Schießpunkten erhalten und die Charakteristiken
der bereits extrahierten Zelle werden benutzt zum Aufbauen der neuen
Zelle an dieser Stelle. In dem rückwärtigen Decodierungsschritt
wird das Konzept des Clusters von Gebieten nicht aufbewahrt, da
alle Ausgangspunkte von Kontursegmenten in dem Puffer von schließenden Punkten
ohne Unterschied gespeichert sind. Deswegen überprüft das Verfahren nur (nachdem
das Ende eines Kontursegmentes detektiert worden ist), ob es Ausgangspunkte
in dem Puffer mit schließenden
Punkten gibt (Rückwärtsverbindung 78 zu
dem Hilfsschritt 501). Die Aufteilung ist komplett, wenn
der Puffer leer ist.
-
Ein fünfter und letzter Hilfsschritt 605 ist
vorgesehen zum Erzeugen eines Etikettbildes. Das Endkonturbild wird
dadurch geschaffen, dass alle Konturen als "frame", "sure_input", "sure_link", "sure_output" und "more_likely" markiert werden.
Aus diesem Konturbild wird ein herkömmliches Verfahren einer Aufteilungserzeugung
angewandt zum Erhalten des Endetikettbildes.
-
Die vorliegende Erfindung, wie diese
obenstehend beschrieben worden ist, wird durch keine Mittel auf die
genannte und dargestellte Ausführungsform
begrenzt und Alternativen oder Verbesserungen können auf dieser Basis vorgeschlagen
werden.
-
Es ist beispielsweise bekannt, dass
das Verfahren zum Codieren segmentierter Bilder, wie in dem bereits
genannten Internationalen Patentanmeldungsdokument WO-A1-0019375 beschrieben,
erweitert werden kann, entweder zu einer Codierungsannäherung einer
skalierbaren Mode oder zu einer Codierungsannäherung einer inneren Mode.
Diese Annäherungen
werden zurückgerufen,
und zwar vor der Beschreibung entsprechend den Decodierungsannäherungen.
-
In Bezug auf die Codierungsannäherung der
skalierbaren Mode wird nur der Fall von zwei Schichten (einer Basisschicht
und einer Verbesserungsschicht) beschrieben, aber die Beschreibung
kann auf den Fall mehrerer Schichten erweitert werden.
-
Wenn eine bestimmte Aufteilung gegeben
ist, kann ein Hilfssatz der Konturen einzeln gesendet werden, die
eine grobe Darstellung bildet, welche die Basisschicht bildet. Die
restlichen Konturen, welche die Verbesserungsschicht bilden, die
es ermöglicht,
dass mit der Basisschicht die komplette Aufteilung gebildet wird, kann
in einem späteren Schritt
gesendet werden. Dies ist in den 46 bis 49 dargestellt, wobei eine
komplette Aufteilung des in 46 dargestellten
Bildes in 47, die Basisschicht
in 48 dargestellt ist
und wobei 49 die Konturen
enthält,
die mit der Verbesserungsschicht assoziiert ist (die Definition
der Basisschicht kann abhängig
sein von den Applikationen und es können verschiedene Sätze von
Konturen selektiert werden zum Bilden der zwei Schichten: in dem
Beispiel nach 46 bis 49 sind die zwei Schichten
gewählt worden
zum Adressieren der einzelnen Codierung spezifischer Objekte, wobei
die Basisschicht der Form der zwei Personen entspricht).
-
Die Codierung der Basisschicht erfolgt
entsprechend dem oben beschriebenen Verfahren, damit die Codierungseffizienz
der genannten Basisschicht so hoch gehalten wird, wie dies wäre, wenn
sie die einzige zu übertragende
Information wäre
(es sind keine zusätzlichen
Symbole in den Bitstrom der Basisschicht eingeschlossen). Zum Codieren
der Verbesserungsschicht erfordern einige Schritte des Intra-Mode-MGCC-Verfahrens Änderungen
in Bezug auf die Codierung der Basisschicht, insbesondere den Schritt
der Extraktion der Ausgangspunkte. Die MGCC-Annäherung codiert die Basisschicht,
die jedes Cluster von Gebieten einzeln adressiert. Im Falle der
Verbesserungsschicht werden Cluster von Kontursegmenten adressiert.
Bei dem Intra-Mode-MGCC-Verfahren werden Ausgangspunkte, die den
Rahmen kontaktieren, codiert unter Ausnutzung der Tatsache, dass
der Rahmen an der Decodierungsseite bekannt ist. Weiterer Gewinn
wird erhalten aus diesem Konzept, da in der skalierbaren Mode, der
Empfänger
kennt die komplette Basisschicht (mit der Ausnahme der Ungewissheitspixel
in der Mitte der MGCC-Zellen). Die Ausgangspunkte der Verbesserungskontursegmente
liegen unmittelbar auf bekannten Konturen: dies sind alle Konturen,
die während
des Basisschicht-Codierungsprozesses als "FRAME" oder "INOUT" markiert sind. Bekannte Konturelemente,
benutzt als Ausgangspunkte, werden indiziert, wobei das Bild von
oben nach unten und von links nach rechts abgetastet wird.
-
Es sei bemerkt, dass Ausgangspunkte
nicht als Nachbarkonturstellen der bekannten Kontur definiert werden
können,
wie dies bei dem Intra-Mode-MGCC-Verfahren
geschieht. Anders als beim Codieren von Ausgangspunkten, die den
Rahmen kontaktieren, in dem genannten Intra-Mode-MGCC-Verfahren
sind zwei Ausgangskonturstellen möglich im Falle der Verwendung
eines anderen bekannten Konturelementes als Bezugswert. Konturpunkte
aus der Basisschicht, welche die Verbesserungsschicht kontak tieren,
werden in einem Puffer möglicher
Ausgangspunkte gespeichert und als "PENDING" markiert.
-
Wenn es keine Konturpunkte gibt,
welche die Basisaufteilung kontaktieren, schreitet der Prozess herunter
zu dem "end of partition" Schritt und, wenn
es ein inneres Gebiet in dem Bild gibt, extrahiert es den Ausgangskonturpunkt
des ersten Gebietes. Wenn ein derartiger Ausgangspunkt gegeben ist,
werden beim Codieren der Basisschicht die gleiche Orientierung und
der gleiche Zellentyp wie an dieser spezifischen Stelle definiert,
verwendet. Die Charakterisierung von Zellen, die keine Ausgangspunkte
enthalten, variiert nicht. Die Oben erwähnt, werden Konturstellen innerhalb
der Zelle, die nicht mit der Ausgangskontur verbunden sind, zurückgewiesen.
Außerdem
werden Konturen, die zu der Basisaufteilung gehören, nur als Ausgangs- oder
als Schließpunkte
eines Verbesserungskontursegmentes berücksichtigt. Die Verwaltung
von Mehrfachpunkten und Prioritäten
in der Konturverfolgung wird nicht in Bezug auf den Fall der Basisschicht
modifiziert.
-
In der Verbesserungsschicht basiert
das Ende-einer-Kontur-Segment auf den Konturelementen von der Basisschicht
oder von der Verbesserungsschicht, die vorher während des Befolgungsschrittes
als "INOUT" markiert wurde.
Wenn die Ausgangskontur die Kontur der höchsten Priorität ist, wird
das Ende-einer-Kontur-Segment erreicht. Außerdem, wenn die Ausgangskontur
als "INTERNAL" (von der Basisschicht
oder der Verbesserungsschicht) oder "PENDING" markiert ist (nur von der Verbesserungsschicht)
aber eine der nachfolgenden Konturstellen, die von daraus erreicht
werden kann, eine "INOUT"-Stelle ist, wird
die Kontur (oder der Zweig) auch beendet. Zum Schluss werden das
Ende des Clusters und das Ende der Aufteilung detektiert, wie in
dem Intra-Mode-MGCC-Verfahren detektiert.
-
Eine Decodierungsannäherung entsprechend
der Codierungstechnik mit skalierbarer Mode ist die Folgende. Die
unabhängige
Codierung der Basisschicht und der Verbesserungsschicht ist ebenfalls
an der Decodierungsseite möglich.
Wenn aber die komplette Aufteilung wiedergegeben werden soll, wird
die Decodierung der beiden Schichten verschachtelt, und zwar entsprechend
den nachfolgenden Schritten, beschrieben in Bezug auf 50.
-
Die Basisschicht wird zunächst in
Vorwärtsrichtung
decodiert (der Basisschicht-Vorwärtsdecodierungsschritt 700),
aber die rückwärtige Decodierung
wird aufgeschoben. Die sechs Hilfsschritte dieses vorwärtigen Decodierungsschrittes
der Basisschicht sind die gleichen wie vorher in Bezug auf die erste
Implementierung, mit Ausnahme des dritten Schrittes, des Hilfsschrittes
zur Konturerzeugung in jeder Zelle, die durch einen Hilfsschritt 703 ersetzt
wird (siehe 50). In
diesem modifizierten Hilfsschritt 703 sollte beim Analysieren
einer Zelle die Verwendung der Markierung "sure_not" beschränkt werden. Diese Markierung
könnte
verwendet werden im Falle der ersten Implementierung (Intra-Mode)
da einige Symbole, die sich auf die Reihenfolge der Vielfachausgänge stützen, die
Existenz einiger aktiver Konturstellen vermieden (dies ist der Fall
der in den 20 bis 22 oder in 34 dargestellten Beispiele). In der skalierbaren
Mode aber müssen
diese Seiten nicht als "sure_not" markiert werden,
da die Codierung der Basisschicht ohne Berücksichtigung der Existenz der
Verbesserungsschicht erfolgt ist. Auf diese Weise kann eine Konturstelle,
die in der Basisschicht nicht aktiv war, in der Verbesserungsschicht
aktive werden.
-
Die Information der Verbesserungsschicht
wird nun decodiert, wobei die bereits decodierte Basisschicht berücksichtigt
wird. Es wird zunächst
ein Vorwärts-Decodierungsschritt 800 einer
Verbesserungsschicht durchgeführt
und dem folgt ein rückwärtiger Decodierungsschritt 900 der
Verbesserungsschicht, dem an sich wieder der rückwärtige aufgeschobene Decodierungsschritt 1000 der
Basisschicht folgt.
-
Der Schritt 800 umfasst,
wie der Basisschicht Vorwärtsdecodierungsschritt 700,
sechs Schritte:
- (a) Selektion der Ausgangspunkte
(Hilfsschritt 801): die Ausgangspunkte der Verbesserungskontursegmente
können
nur Ausgangspunkte von Clustern von Gebieten oder Punkten aus der
Basisaufteilung sein (diejenigen, die als "frame" oder als "sure_input" markiert sind). Wenn es mehrere Kontursegmente
gibt, ausgehend von der Basisaufteilung, wird das erste als Ausgangspunkt
selektiert und die anderen werden in einem Puffer gespeichert (einem
FIFO-Speicher) von Ausgangspunkten auf der Basisaufteilung. Wenn es
keine Kontur gibt, ausgehend von der Basisaufteilung, startet die
Kette mit der Position des Ausgangspunktes eines inneren Clusters
von Gebieten.
- (b) Zellencharakterisierung (Hilfsschritt 502): dieser
Hilfsschritt variiert nicht von dem Basisschicht-Vorwärtsdecodierungsschritt
zu dem Verbesserungsschicht-Vorwärtsdecodierungsschritt.
- (c) Konturerzeugung in jeder Zelle (Hilfsschritt 803):
wenn die Markierungen, die durch den Basisschicht-Vorwärtsdecodierungsschritt 700 eingeführt wurden,
hier verwendet wer den, können
Eingangskonturen von Zellen bereits die Markierung "sure_input" von der Basisschicht
haben. Da diese Markierungen für
den Basisschicht-Vorwärtsdecodierungsschritt 1000 erforderlich
sind, können
sie nicht gelöscht
werden, Einige Konturpunkte empfangen dadurch zwei Markierungen,
die je mit einer anderen Schicht assoziiert sind. Die Eingangskontur
zu einer Zelle ist als "sure_input_enh" (enh = enhancement)
und die Ausgangskonturen sind als "sure_output_enh" markiert. Da in der Basisschicht die
Markierung "sure_input_enh" einem Satz von Werten
entspricht, der die Reihenfolge angibt, in der die jeweiligen Eingangskonturen
verkettet werden. Abhängig
von der Konturkonfiguration können
einige Konturstellen als "sure_not" oder als "sure_link" markiert sein; diese
Markierung kann in der Verbesserungsschicht benutzt werden, da die
Codierung dieser Schicht bereits die ganze Aufteilungsinformation
berücksichtigt.
- (d) Verwaltung von Mehrfachausgängen (Hilfsschritt 504),
und:
- (e) Fehlersteuerung (Hilfsschritt 505): diese zwei
Hilfsschritte 504 und 505 variieren nicht von
dem Basisschicht-Vorwärtsdecodierungsschritt
zu dem Verbesserungsschicht-Vorwärtsdecodierungsschritt.
- (f) Schließung
der Kontur oder der Aufteilung (Hilfsschritt 806): wie
bei der Basisaufteilung, wird der Index "sure_input_enh" erhöht
wird, wenn ein Ausgangspunkt aus einem der Puffer extrahiert wird.
-
Der Schritt 900 umfasst
nur drei Hilfsschritte (es ist kein schließender Hilfsschritt vorgesehen,
da die Basisschicht sowieso rückwärts decodiert
werden soll):
- (a) Selektion der Ausgangspunkte
(Hilfsschritt 901): da die Verbesserungsschicht-Rückwärtsdecodierungsschritt 900 die
Konturen befolgt, die der invertierten Strecke folgen, die durch
den Verbesserungsschicht-Vorwärtsdecodierungsschritt 800 gebildet
ist, wird der Satz von Ausgangspunkten für die genannte inverse Befolgung
aus dem Puffer schließender
Punkte erhalten, erzeugt in dem genannten Verbesserungsschicht-Vorwärtsdecodierungsschritt.
- (b) Detektion der inversen Befolgung (Hilfsschritt 902):
dieser Hilfsschritt entspricht dem, der in der Intra-Mode (Hilfsschritt 502)
durchgeführt
wurde, mit Ausnahme der Tatsache, dass nun berücksichtigt werden soll, dass
der zu befolgende Index "sure_input_enh" ist.
- (c) Fehlersteuerung (Hilfsschritt 603): dieser Hilfsschritt
variiert nicht von dem Basisschicht-Rückwärtsdecodierungsschritt zu dem
Verbesserungsschicht- Rückwärtsdecodierungsschritt.
-
Der Basisschicht-Rückwärtsdecodierungsschritt 1000 kann
nun durchgeführt
werden. Das Ende einer Kontur in der inversen Befolgung wird detektiert,
wenn von der letzten Ausgangskontur, die Zelle, die erzeugt wurde
unter Verwendung der Zellencharakteristiken, kein Pixel findet,
das mit dem vorhergehenden Index "sure_input_enh" markiert ist. Andererseits wird das
Ende der Aufteilung detektiert, wie in der Intra-Mode. Konturen
werden geschlossen und Inkonsistenzen werden gelöst, wobei vorhergehende Markierungen
(möglichst) beibehalten
werden.
-
Text in der
Zeichnung
-
Fig. 25
-
- Bitstrom
- Nein
- Nein
- Ja
- Ja
- Nein
- Ja
- Nein
- Ja
- Nein
- Ja
- Aufteilung
-
Fig. 26
-
- Eher
- Wahrscheinlich
- Unwahrscheinlich
- unsicher