DE69913312T2 - Verfahren zum Decodieren segmentierter Bilder und Anordnung dazu - Google Patents

Verfahren zum Decodieren segmentierter Bilder und Anordnung dazu Download PDF

Info

Publication number
DE69913312T2
DE69913312T2 DE69913312T DE69913312T DE69913312T2 DE 69913312 T2 DE69913312 T2 DE 69913312T2 DE 69913312 T DE69913312 T DE 69913312T DE 69913312 T DE69913312 T DE 69913312T DE 69913312 T2 DE69913312 T2 DE 69913312T2
Authority
DE
Germany
Prior art keywords
contour
cell
points
decoding
chain
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69913312T
Other languages
English (en)
Other versions
DE69913312D1 (de
Inventor
Ferran Marques
Cristina Gomila
Antoni Gasull
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Application granted granted Critical
Publication of DE69913312D1 publication Critical patent/DE69913312D1/de
Publication of DE69913312T2 publication Critical patent/DE69913312T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/20Contour coding, e.g. using detection of edges

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

  • 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:
  • TAFEL 1
    Figure 00040001
  • 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):
  • TAFEL 2
    Figure 00060001
  • 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:
  • TAFEL 3
    Figure 00060002
  • 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):
  • TAFEL 4
    Figure 00110001
  • 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) 124 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:
  • TAFEL 5
    Figure 00170001
  • 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

Claims (3)

  1. Verfahren zum Decodieren codierter Signale, die aufeinander folgenden segmentierten Bildern oder Aufteilungen entsprechen, aufgeteilt in homogene Gebiete, denen bestimmte Label zugeordnet sind, wobei die genannten Aufteilungen mit Hilfe eines Codierungsverfahrens codiert worden sind, das für jede zu codierende Aufteilung die nachfolgenden Verfahrensschritte umfasst: – das Umsetzen des Bildes der Label in eine Beschreibung in Termen eine Konturelementekette, wobei die Elemente mit Hilfe deren Verlagerungen durch aufeinander folgende Basiszellen definiert werden, und zwar zwischen einem Eingangspunkt und einem Ausgangspunkt der genannten Zellen; – das Befolgen innerhalb jeder aufeinander folgenden Zelle jeder Kontur von dem Startkonturpunkt, vorher extrahiert, zu dem Ende dadurch, dass Kettensymbole gespeichert werden, die Eingangselementen, internen Elementen und Ausgangselementen der genannten Zelle sowie Prioritäten zwischen möglichen mehrfachen Ausgangselementen entsprechen; – das Wiederholen dieser Schritte bis ans Ende jeder Kontur der Aufteilung und das Codieren der Information in jeder Zelle entsprechend dem Ausgangspunkt jedes Kontursegmentes sowie der zugeordneten Kette von Bewegungen zwischen diesem Ausgangspunkt und dem der folgenden Zelle; wobei das genannte Decodierungsverfahren dadurch gekennzeichnet ist, dass es die nachfolgenden Verfahrensschritte umfasst: (A) einen Vorwärts-Decodierschritt, vorgesehen zum innerhalb der genannten Kettensymbole Decodieren aller Konturpunkte, die sicherlich in der decodierten Aufteilung liegen und zum Detektieren örtlicher Inkonsistenzen; (B) einen Rückwärts-Decodierschritt, vorgesehen um auf rückwärtige Weise die decodierten Konturen zu befolgen und auf Basis von Markierungen, zugeordnet zu Konturen, die in jeder genannten Zelle liegen, und während der Detektion dieser Inkonsistenzen eingeführt werden, die Konflikte zwischen der aktuellen Hilfsketteninformation, die mit jeder genannten Zelle assoziiert ist, und vorher decodierten Konturen, deren Markierungen die einwandfrei Decodierung der aktuellen Hilfskette nicht erlauben.
  2. Decodierungsverfahren nach Anspruch 1, dadurch gekennzeichnet, dass: (A) der genannte Vorwärts-Decodierungsschritt die nachfolgenden Teilschritte umfasst: – (a) das Ordnen des Satzes empfangener Ausgangspunkte; – (b) das Rekonstruieren des zu decodierenden Zellentyps; – (c) das in jeder Kette Verwenden der Hilfsketteninformation, die mit jeder genannten Zelle assoziiert ist, und der Konturen, die in dem Bereich bereits verfügbar sind, der durch die genannte Zelle bedeckt ist, und zwar zum Definieren einer Konturkonfiguration, welche die genannte Hilfskette beschreibt; – (d) das Selektieren, welche Mehrfach-Ausgangspunkte zu Startpunkten neuer Kontursegmente führen und das Speichern dieser Punkte; – (e) das Detektieren und Markieren etwaiger Konturinkonsistenzen innerhalb der genannten Zellen; – (f) das Wiederholen der vorhergehenden Teilschritte (b) bis (e) bis ans Ende jedes Kontursegmentes; (B) der genannte Rückwärts-Decodierungsschritt die nachfolgenden Teilschritte umfasst: – (g) das Wiederherstellen des Satzes von Startpunkten für die invertierte Befolgung; – (h) das Wiederherstellen der Charakterisierung jeder invertierten Zelle aus den gespeicherten Daten und aus der Analyse der genannten Markierungen; – (i) das Schließen der offenen Konturen und das Lösen von Konturinkonsistenzen außerhalb der Zellen; – (j) das Schließen jeder Kontur und der Aufteilung; – (k) das Erzeugen des schlussendlichen Konturbildes, das die markierten Konturelemente koppelt und das Erzeugen eines entsprechenden schlussendlichen Labelbildes.
  3. Decodierungsverfahren nach einem der Ansprüche 1 und 2, dadurch gekennzeichnet, dass wenn jede aktuelle Aufteilung vorher in eine Basisschicht und wenigstens eine Verbesserungsschicht aufgeteilt wurde, wobei die genannten Schichten dann nacheinander codiert wurden, mit, zur Codierung der Verbesserungsschicht, den nachfolgenden Änderungen: – in dem Extraktionsschritt: die Startpunkte der Kontursegmente werden mit den Konturpunkten von der Basisschicht assoziiert; – in dem Befolgungsschritt: alle Punkte, die zu der Basisschicht gehören, werden zurückgenommen; – in dem Wiederholungsschritt: das Schließen einer Kontur vor der Verarbeitung der nächsten wird mit Konturpunkten der Basisschicht und der Verbesserungsschicht assoziiert; dann wird die Decodierung der Basisschicht sowie der Verbesserungsschicht verschachtelt, wobei die Basisschicht zunächst in Vorwärtsrichtung decodiert wird, wobei die Verbesserungsschicht danach in Vorwärtsrichtung sowie in Rückwärtsrichtung decodiert wird, und wobei die Basisschicht zum Schluss in der Rückwärtsrichtung decodiert wird.
DE69913312T 1998-09-29 1999-09-27 Verfahren zum Decodieren segmentierter Bilder und Anordnung dazu Expired - Fee Related DE69913312T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP98402395 1998-09-29
EP98402395 1998-09-29
EP99401761 1999-07-13
EP99401761 1999-07-13
PCT/EP1999/007458 WO2000019376A1 (en) 1998-09-29 1999-09-27 Partition decoding method and device

Publications (2)

Publication Number Publication Date
DE69913312D1 DE69913312D1 (de) 2004-01-15
DE69913312T2 true DE69913312T2 (de) 2004-09-30

Family

ID=26151705

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69913312T Expired - Fee Related DE69913312T2 (de) 1998-09-29 1999-09-27 Verfahren zum Decodieren segmentierter Bilder und Anordnung dazu

Country Status (6)

Country Link
US (1) US6707946B1 (de)
EP (1) EP1046135B1 (de)
JP (1) JP2002526951A (de)
KR (1) KR100573506B1 (de)
DE (1) DE69913312T2 (de)
WO (1) WO2000019376A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7102812B2 (en) * 2002-10-15 2006-09-05 Corning Incorporated Devices and methods for raman amplification and dispersion compensation
JP4240331B2 (ja) * 2006-11-02 2009-03-18 ソニー株式会社 送信装置および方法、プログラム、並びに通信システム
US7940657B2 (en) * 2006-12-01 2011-05-10 Sonus Networks, Inc. Identifying attackers on a network
US7672336B2 (en) * 2006-12-01 2010-03-02 Sonus Networks, Inc. Filtering and policing for defending against denial of service attacks on a network
US7804774B2 (en) * 2006-12-01 2010-09-28 Sonus Networks, Inc. Scalable filtering and policing mechanism for protecting user traffic in a network
CN104662908B (zh) * 2012-09-24 2018-03-30 高通股份有限公司 深度图译码

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2935340B2 (ja) * 1995-03-17 1999-08-16 日本電気株式会社 ビデオデコード装置
DE69935655T2 (de) 1998-09-29 2007-12-27 Koninklijke Philips Electronics N.V. Verfahren und vorrichtung zum zerlegungskomprimieren

Also Published As

Publication number Publication date
EP1046135A1 (de) 2000-10-25
EP1046135B1 (de) 2003-12-03
KR20010032568A (ko) 2001-04-25
JP2002526951A (ja) 2002-08-20
KR100573506B1 (ko) 2006-04-26
WO2000019376A1 (en) 2000-04-06
DE69913312D1 (de) 2004-01-15
US6707946B1 (en) 2004-03-16

Similar Documents

Publication Publication Date Title
DE4005492C2 (de) Bildcodierverfahren
DE2640414C2 (de) Schaltungsanordnung ung Verfahren für die Kompressionscodierung unter Verwendung einer Korrelation zwischen zweidimensionalen, aus zweiwertigen digitalen Bildern abgeleiteten Matrizen
DE69937785T2 (de) Verfahren zur Selektion von Farbblockpunkten für die Blockkodierung
DE69738515T2 (de) Vorrichtung und verfahren für hybride kompression von rasterdaten
DE69731517T2 (de) Übertragung und empfang codierter videobilder
DE4242796C2 (de) Hocheffizientes Kodierverfahren für mit Zweipegelbildern vermischte natürliche Bilder
DE1549833C2 (de) Verfahren zum Erkennen von Zeichen
DE19606178C2 (de) Verfahren zum Komprimieren einer Anordnung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz
DE4428517C2 (de) Verfahren zum Behandeln eines Teiles eines komprimierten Bildes sowie Bildaufbereitungseinrichtung zur Durchführung dieses Verfahrens
DE2264090C3 (de) Datenverdichtung
DE69836432T2 (de) Bildcoder und -decoder
DE69434131T2 (de) Vorrichtung zur Segmentierung von aus Texturen bestehenden Bildern
DE2557553A1 (de) Verfahren und anordnung zur bilddatenverdichtung und -reexpansion
DE202017007520U1 (de) Bewegungskompensation durch maschinelles Lernen
DE69937833T2 (de) Verfahren und vorrichtung zur skalierbaren formkodierung
DE69935655T2 (de) Verfahren und vorrichtung zum zerlegungskomprimieren
DE19739266A1 (de) Verfahren und Vorrichtung zum Kodieren binärer Formen
DE4011758C2 (de)
DE3416795A1 (de) Bilddaten-kompressionssystem
EP0795841A2 (de) Verfahren zur Bildung einer Bild-Tranformationsmatrix
DE2459427A1 (de) Anordnung zum skelettieren von zeichen
DE69913312T2 (de) Verfahren zum Decodieren segmentierter Bilder und Anordnung dazu
DE112021000371T5 (de) Digitale bildbearbeitung
DE69910695T2 (de) Verfahren und Apparat zum Filtern von Bildfarbsignalen
DE3038953C2 (de) Verfahren zur Bandkompression

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee