-
GEBIET DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft ein Verfahren zum Codieren von segmentierten
Bildern oder Partitionen, die in einheitliche Regionen unterteilt
sind, denen jeweils spezifische Label zugeordnet sind, und eine entsprechende
Vorrichtung. Diese Erfindung weist hauptsächlich Anwendungen auf, die
sich auf den MPEG-4-Standard beziehen, zur Implementierung von MPEG-4-Codierern.
-
HINTERGRUND DER ERFINDUNG
-
Konventionelle
Verfahren zum Codieren von segmentierten Bildern – oder Partitionen – gelten
allgemein als ziemlich aufwendig hinsichtlich der Bitmenge, z.B.
ein Durchschnittswert von 1,3 Bit je Konturpixel bei der sogenannten
Kettencodierungstechnik. Deshalb sind verlustreiche Formcodierungstechniken
vorgeschlagen worden, doch Verluste in der Forminformation haben
oft eine inakzeptable Verschlechterung der subjektiven Qualität des Bilds
zur Folge, das auf der Basis der decodierten Bilds angezeigt wird.
-
Quasi-verlustlose
Formcodierungstechniken (und daher im weiteren Sinne quasi-verlustlose
Partitionscodierungstechniken) sind vorgeschlagen worden. Zum Beispiel
erlaubt der Multiple Grid Chain Code (MGCC)-Ansatz, der im Dokument „Multiple
grid chain coding of binary shapes" von P. Nunes, F. Ferreira und F. Marqués (Proceedings
of International Conference of Image Processing, vol. III, SS. 114-117,
26.-29. Oktober 1997, Santa Barbara, Kalifornien, USA) beschrieben
wird, das leistungsfähige
Codieren der binären
Forminformation von Videoobjekten im Kontext objektbasierter Videocodierungssysteme.
Dieser Ansatz erlaubt auch die generelle Partitionscodierung, wobei
er mit sehr wenigen und kontrollierten Verlusten einhergeht, die
nur auf isolierte Bildemente (Pixel) beschränkt sind, die den Grenzen der
Regionen jeder Partition angehören.
-
Dieser
konventionelle MGCC-Ansatz stützt
sich auf eine Konturdarstellung der Partition. Wie in 1 gezeigt,
die eine kleine Partition der Größe N × M mit
zum Beispiel drei Regionen veranschaulicht, denen jeweilige Label
(in diesem Fall durch graue, schwarze und weiße Kreise dargestellt) zugewiesen
sind, weist jedes Pixel vier ver schiedene zugehörige Konturelemente auf. 2 zeigt
dieselbe Partition wie in 1, doch mit
Angabe der spezifischen Konturelemente, die die Änderungen zwischen jedem Paar
Nachbarpixel anzeigt, die nicht der gleichen Region angehören. 3 zeigt
in einer entsprechenden Matrix mit (2N + 1) × (2M + 1) Stellen die Implementierung
beider Gitter: Das zu den Pixelstellen (= die Kreise) gehörige und
das, das sich auf die Konturstellen (= die Liniensegmente) bezieht.
Die Konturelemente, die zwischen Pixeln mit verschiedenen Labeln
angeordnet sind, gelten als aktiv.
-
Ein
Element des Konturgitters kann seinerseits bis zu sechs aktive Nachbarn
haben, wie in 4 gezeigt, und aufgrund dessen
wird das Konturgitter allgemein als Sechseckgitter bezeichnet. Eine
Methode, die Partitionsinformation in das Konturgitter zu codieren,
besteht darin, einen Anfangspunkt im Gitter zu wählen und die aktiven Stellen
bis zum Ende der entsprechenden Kontur zu verfolgen. Diese Methode
führt eine
verlustlose Codierung der Partitionsinformation durch, indem sie
die Bewegung von einem aktuellen Konturelement zum folgenden Nachbarkonturelement
codiert (nur drei mögliche
Bewegungen: geradeaus, rechts, links).
-
Eine
andere Konturverfolgungsmethode besteht darin, sich mit größeren Schritten
durch die Kontur zu bewegen, wobei nur Konturelemente codiert werden,
die durch solche größeren Schritte
verbunden werden: Im oben angeführten
Dokument verwendet die beschriebene MGCC-Technik Basiszellen aus
3 × 3
Pixeln, wie die in 5 gezeigte, wo alle Kontur-
und Pixelstellen in der Zelle dargestellt sind. Aus Gründen der
Komprimierungsleistung werden zwei Zelltypen verwendet: Linksläufig, wie
in 6, oder rechtsläufig, wie in 7. Die
Indexierungsweise der verschiedenen Konturelemente in jedem Zelltyp
ist angegeben: Die Konturanfangsstelle ist durch das Symbol 0 angegeben,
und die anderen durch die Symbole 1 bis 7, wobei das Symbol 1 der Stelle
zugewiesen wird, die auf der gleichen Seite der Zelle liegt wie
das Symbol 0. Um eine Zelle zu kennzeichnen, sind daher drei Parameter
notwendig: Ihre Konturanfangsstelle, ihr Typ (rechtsläufig oder
linksläufig) und
ihre Orientierung (=östlich
oder westlich bei einer Zelle mit einem horizontalen Anfangskonturelement, nördlich oder
südlich
bei einem vertikalen). Der Codierungsalgorithmus wählt zwischen
jedem dieser zwei Zelltypen, um die Zahl der Konturelemente, die
pro Zelle codiert werden, zu maximieren.
-
Die
MGCC-Technik verwendet diese Indexierung sowie deren möglichen
Drehungen. Ausgehend vom Eingangselement der Zelle, das in 6 mit
einer 0 indexiert ist, kann jedes Ausgangselement aus dem Satz (1,
2, ..., 6, 7) erreicht werden, der Weg durch die Zelle wird jedoch
durch das Ausgangselement nicht eindeutig definiert: Wie im Beispiel
von 8 und 9 gezeigt, kann eine Bewegung
(in diesem Fall von 0 bis 4) tatsächlich zwei verschiedenen Konturkonfigurationen
entsprechen. Die Konturelemente im Inneren der Zelle (8, 9, 10,
11), die nicht codiert sind, führen
zu einer Mehrdeutigkeit im Codierungsprozess, da zwei verschiedene Sätze von
Konturstellen (0, 8, 9, 4) oder (0, 11, 10, 4) möglich sind. Diese Mehrdeutigkeit
führt zu
Codierungsverlusten. Dennoch ist der einzig mögliche Fehler das falsche Labelling
des zentralen Pixels der Zelle, d.h., nur eines isolierten Grenzpixels.
-
In
einem Konturverfolgungsprozess werden dann mehre Zellen miteinander
verbunden, um die Kontur zu vervollständigen. Um zwei Zellen zu verbinden,
wird die Ausgangskonturstelle der aktuellen Zelle zur Eingangskonturstelle
der folgenden Zelle, wie in 10 gezeigt.
Wenn mit dem MGCC-Ansatz die Grenze einer Einzelregion codiert wird,
wird der so erzeugte Bitstrom deshalb enthalten: (a) Die Position
des Konturanfangsstelle und (b) die Kette von Symbolen, die die
Bewegungen darstellen, die zur Verfolgung der Kontur durchgeführt wurde.
-
Im
Konturverfolgungsprozess ist es erforderlich, die Position der Basiszelle
durch das Gitter progressiv zu verändern. Die vorgeschlagene Technik
wird zum Beispiel im Artikel „Encoding
of line drawings with a multiple grid chain code" beschrieben, von T. Minami und K. Shinohara,
IEEE Transactions an Pattern Analysis and Machine Intelligence,
vol. PAMI-8, Nr. 2, März
1986, SS. 269-276. Das Grundprinzip wird Bezug nehmend auf 11 bis 15 erläutert.
-
Wie
in 11 angegeben, das ein Codierungsbeispiel mit einem
festen Gitter zeigt, wurde hier in der ersten Zelle (die eine linksläufige ist)
durch ein Kontursegment das Symbol 4 codiert. Wenn Zellen des gleichen Gitters
verwendet werden, wird das Symbol 7 (12) in
der zweiten Zelle zur Verfolgung der Kontur benutzt (wobei das Symbol
0 stets die neue Anfangs- bzw. Eingangsstelle ist), und das Symbol
2 (13) in der dritten, wobei diese zweite und dritte
Zelle in diesem Fall rechtsdrehend sind. Demnach werden drei Zellen
benötigt,
um die Kontur von der ersten Anfangsstelle aus zu verfolgen. Demgegenüber werden
nur zwei benötigt, wenn
das Gitter (d.h., tatsächlich
die Position des Zentrums der Zelle) geändert wird: Wie in 14 und 15 gezeigt,
die eine Modifikation des Gitters in Bezug auf das Beispiel von 11 bis 13 veranschaulichen,
wird nun nur eine zweite Zelle benötigt, um zur selben Ausgangsstelle
zu gelangen.
-
Diese
Lösung
von 14 und 15 führt zu einer
kompakteren Darstellung der Kontur. Doch drei verschiedene Klassen
von Gittern sind dann notwendig, um die Verschiebung jedes Gitters
in Bezug auf den Ursprung der entsprechenden Zelle (GO genannt)
vor dieser Verschiebung zu definieren. Diese drei Klassen G1, G2,
G3 werden, definiert durch die Position (x, y) des Pixels, das der
Ursprung jedes Zelltyps ist, in Bezug auf das Pixel, das der Ursprung
der entsprechenden Zelle ist, wie in der folgenden Klassifikationstabelle
angegeben:
-
-
Im
Beispiel von 10 wurde eine Zelle der Klasse
G2 verwendet (in Bezug auf die entsprechende aktuelle Zelle G0);
in einem anderen Beispiel, das in 16 dargestellt
ist, wurde eine Zelle der Klasse G1 verwendet (in Bezug auf die
entsprechende aktuelle Zelle G0).
-
Der
oben beschriebene MGCC-Ansatz kann aber nur verwendet werden, um
binäre
Partitionen zu codieren. Im Falle von generell segmentierten Bildern
enthalten die Partitionen Regionen, die gemeinsame Konturen aufweisen,
weshalb dieser Absatz nicht mehr geeignet ist.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Eine
Aufgabe der Erfindung ist daher die Bereitstellung eines verbesserten
Verfahrens, das auch das Konturgitter des zuvor definierten Typs
verwendet, aber zu einer generellen und leistungsfähigeren
Codierung der Kontursegmente der Regionen eines Bilds führt.
-
Zu
diesem Zweck betrifft die Erfindung ein Codierverfahren, um einen
sogenannten Intramode-Codierprozess jeder aufeinanderfolgenden Partition
zu definieren, umfassend die Schritte des:
- (a)
Umwandelns des Labelbilds in eine Beschreibung in Form einer Konturelementkette,
in welcher die Elemente anhand ihrer Bewegungen durch aufeinanderfolgende
Basiszellen zwischen einem Eingangspunkt und einem Ausgangspunkt
dieser Zellen definiert werden;
- (b) Verfolgens, innerhalb jeder aufeinanderfolgenden Zelle,
jeder Kontur von ihrem Konturanfangspunkt, der zuvor extrahiert
wurde, zu ihrem Ende, durch Speichern von Kettensymbolen, die sowohl
den Eingangs-, Innen- und Ausgangskonturelementen dieser Zelle als
auch den Prioritäten
zwischen möglichen mehrfachen
Ausgangselementen entsprechen, wobei dieser Verfolgungsschritt vorgesehen
ist, um die Konturelemente einer Priorität des Typs „geradeaus-rechts-links" entsprechend zu
wählen;
- (c) Wiederholens dieser Schritte bis zum Ende jedes aufeinanderfolgenden
Kontursegments der betreffenden Partition;
- (d) Codierens der Information, die in jeder Zelle dem Anfangspunkt
jedes Konturelements und der zugehörigen Bewegungskette zwischen
diesem Anfangspunkt und dem Anfangspunkt der folgenden Zelle entspricht;
wobei
dieses Verfahren ferner dadurch gekennzeichnet ist, dass der Verfolgungsschritt
einen prioritätsbestimmenden
Unterschritt umfasst, der vorgesehen ist, um in jeder Zelle, die
von Mehrfachausgängen
betroffen ist, den Ausgangskonturpunkt mit der höchsten Priorität auf der
Basis des längsten
Konturwegs zu bestimmen, der den Eingangskonturpunkt mit den möglichen
Ausgangskonturpunkten verbindet, wobei die übrigen Ausgangskonturpunkte
dann der Priorität
des Typs „geradeaus-rechts-links" entsprechend geordnet
werden.
-
Das
Dokument „Shape
and location coding for contour images", F. Marqués et al., PCS'93, 17-19. März 1993,
Proceedings of the Picture Coding Symposium, Lausanne, SFIT, Schweiz,
das eine Formcodierungstechnik beschreibt, in der zu codierende
Konturelemente mit einer Priorität
des Typs „geradeaus-rechts-links" verfolgt werden,
beschreibt jedoch keine Verbesserung der Art, die es erlaubt, in
diesem Verfolgungsschritt in Zellen, die von Mehrfachausgängen betroffen
sind, eine bessere Definition der Priorität zwischen Ausgangskonturpunkten
zu erhalten.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
Merkmale und Vorteile der Erfindung werden nun Bezug nehmend auf
die beiliegenden Zeichnungen ausführlicher beschrieben, wobei:
-
1 ein
Beispiel einer Partition der Größe M × N (wobei
in diesen Fall M = N = 5) zeigt, und 2 die gleiche
Partition mit den Konturelementen, die die Grenzen zwischen verschiedenen
Regionen formen;
-
3 beide
Gitter vereint (das eine mit den Pixelstellen und das andere mit
den Konturstellen);
-
4 eine
Darstellung der sechs aktiven Nachbarn eines Konturelements des
Konturgitters ist;
-
5 eine
Basiszelle mit 3 × 3
Pixeln zeigt, die in der MGCC-Technik verwendet wird;
-
6 und 7 die
Indexierungsweise der Konturelemente bei einer linksläufigen und
einer rechtsläufigen
Zelle zeigen, und 8 und 9 für dieselben
Eingangs- und Ausgangselemente einer Zelle zwei verschiedene Konturkonfigurationen
in dieser Zelle zeigen;
-
10, 11 bis 13, 14 bis 15 und 16 zwei
verschiedene Lösungen
zeigen, um Zellen bei einem Konturverfolgungsprozess zu verbinden;
-
17 ein
Flussdiagramm ist, das ein komplettes Schema des erfindungsgemäßen MGCC-Codierverfahrens
zeigt;
-
18 und 19 den
Schritt, in diesem Codierverfahren, der Konturverfolgung innerhalb
einer Zelle des Gitters veranschaulichen, und 20 bis 22 veranschaulichen,
wie zwei Ausgangskonturen während eines
Prioritätsbestimmungsschritts
geordnet werden;
-
23 und 24 zwei
Beispiele von Zellen mit Mehrfachausgängen zeigen;
-
25 bis 28 eine
andere Implementierung der Erfindung darstellen, auch Scalable Mode-Codierung
genannt;
-
29 ein
spezielles Beispiel einer Zelle im Falle einer anderen modifizierten
Implementierung der Erfindung zeigt, Intermode-Codierung genannt.
-
AUSFÜHRLICHE
BESCHREIBUNG DER ERFINDUNG
-
Das
Flussdiagramm in 17 entspricht einem Grundschema
eines erfindungsgemäßen MGCC-Intramode-Codierverfahrens.
Dieser MGCC-Codierprozess wird auf Konturbilder angewandt, die auf
einem Konturgitter des Typs definiert sind, wie er Bezug nehmend
auf 4 und 5 beschrieben wurde. Eine Partition, die
gewöhnlich
in Form von Labels beschrieben wird, muss demnach in eine Beschreibung
von Kontur elementen im Sechseckgitter umgewandelt werden. Die Hauptschritte
des vorgeschlagenen Verfahrens, die im Block durchgeführt werden,
der in 17 durch das Bezugszeichen 400 bezeichnet
ist, sind daher die folgenden: Erzeugung des Konturbilds, Extraktion
der Anfangspunkte aus dem Bild, Zellcharakterisierung, Konturverfolgung,
Bestimmung der Priorität
in der Konturverfolgung, Verwaltung der Mehrfachpunkte, Ende des
Prozesses und Extraktion des nächsten
Anfangspunkts, wobei auf diese Schritte die Endcodierungsschritte
folgen.
-
Der
erste Schritt 401 des vorgeschlagenen Verfahrens ist vorgesehen,
um die Konturbilder zu erzeugen, die später codiert werden. Die Originalpartitionen,
die in Form von Bildlabeln beschrieben sind, müssen daher in eine Beschreibung
in Form von Konturelementen umgewandelt werden, die mit dem oben
beschriebenen Sechseckgitter definiert werden.
-
Der
zweite Schritt 402 ist vorgesehen, um alle Konturanfangspunkte
aus dem Bild zu extrahieren. Es ist hier anzumerken, dass das Bild
rasterweise (von oben nach unten und von links nach rechts) abgetastet wird.
Ein MGCC-Verfahren codiert eine Bildkontur, indem es jede Region
(oder Cluster von Regionen, zum Beispiel, wenn mehrere innere Regionen,
die keinen Konturkontaktpunkt zu anderen Regionen aufweisen und
daher keinen Tripelpunkt ergeben) einzeln adressiert. Die erste
Kontur, die zu berücksichtigen
ist, ist dann stets die Kontur des Bildrahmens: Da dem Empfänger die
Form solch eines Bildrahmens bereits bekannt ist, ist die einzige
Information, die von diesem Bildrahmen codiert zu werden braucht,
die Position der Anfangspunkte, die den Anfang neuer Kontursegmente
definieren. In der Praxis werden Konturpunkte, die diesen Rahmen
berühren
(das heißt,
die Charakteristik der Zelle, die diese spezifischen Konturpunkte
als Eingangskontur aufweist) in einen Puffer (eine FIFO-Warteschlange)
gespeichert und dann „SCHWEBENDE" Punkte genannt (zur spezifischen
Behandlung, wie weiter unten beschrieben).
-
Der
dritte Schritt 403 ist einer zur Zellcharakterisierung.
Denn sobald der Anfangspunkt einer Kontur gewählt wurde, muss die Zelle,
die ihn definiert, charakterisiert werden. Für alle Anfangspunke wird die
Klasse des Gitters auf G0 gesetzt (siehe die obige Klassifikationstabelle).
Im Fall eines Konturanfangspunkts, der die Rahmenkontur berührt, legt
die Seite des Rahmens, auf der dieser Punkt angeordnet ist, die
Orientierung und den Typ der Zelle fest, wie in dieser Tabelle gezeigt
(wo c und cc jeweils rechtsläufig
und linksläufig
bedeuten).
-
-
Wie
zu ersehen ist, wird im Falle eines Anfangspunkts in einem inneren
Cluster von Regionen aufgrund der verwendeten Abtastung der Typ
auf „linksdrehend" und die Orientierung
auf „östlich" gesetzt. Im Falle
einer Zelle, deren Eingangskonturstelle weder ein Konturpunkt ist,
der den Rahmen berührt,
noch der Anfangspunkt eines Clusters, hängt deren Charakterisierung
von der Vorhersage auf der Basis der Bewegung ab, die in der vorherigen
Zelle durchgeführt
wurde. Demnach ist die Eingangskontur der aktuellen Zelle die Ausgangskontur
der vorherigen, und die Zuweisung der Orientierung und des Zelltyps
folgt den Regeln, die in Tabelle 3 angegeben sind, in welcher die
zweite Zeile (N, E, S, W, c, cc) die Daten der aktuellen Zelle darstellt:
-
-
Sobald
eine Zelle charakterisiert worden ist, muss die Konturinformation
in der Zelle in der Symbolkette gespeichert werden. Ein Konturverfolgungsschritt 404 ist
dann vorgesehen. In diesem Schritt werden nur die Konturelemente
berücksichtigt,
die mit der Anfangskontur der Zelle verbunden sind, wobei die anderen
innerhalb der Zelle (die nicht mit der Anfangskontur verbunden sind),
zurückgezogen
und später
während
des Verfolgungsprozesses analysiert werden. Ausgehend von der Eingangskontur
wird die Verfolgung mit der folgenden Priorität durchgeführt: geradeaus – rechts – links,
so dass eine Liste von Ausgangskonturen erzeugt wird, die mit der
Eingangskontur verbunden sind. Während
dieses Verfolgungsvorgangs werden Kontureingangs- und -ausgangspunkte
als EINAUS markiert, und die anderen Konturpunkte innerhalb der
Zelle, die zur Verbindung der Eingangs- und Ausgangskonturen notwendig
sind, werden als INNEN markiert. Dieser Schritt 404 der
Konturverfolgung innerhalb der Zelle wird in 18 und 18 veranschaulicht.
Eine Originalzelle ist in 18 dargestellt:
Weil die Ausgänge
5 und 6 nicht mit dem Eingang verbunden sind, werden sie in 19 zurückgezogen.
Die Konturen, die weder Eingangs- noch Ausgangsstellen sind, werden
als INNEN markiert.
-
Der
Satz von Konturen, die erkannt wurden, werden dann in der Symbolkette
gespeichert. Wenn nur eine Ausgangskontur gefunden wird, wird die
Bewegung, die die Eingangs- mit der Ausgangskontur verbindet, gespeichert;
wenn mehrfache Ausgangspunkte erkannt werden, wird die Zelle zum
Codieren der Konturkonfiguration mehr als ein Symbol erfordern,
Ein Prioritätsbestimmungsschritt 405 ist
dann vorgesehen.
-
In
diesem Schritt startet für
jeden zusätzlichen
Ausgang die Unterkette, die die Konturinformation in der Zelle beschreibt,
mit einem Symbol M, was für "Mehrfachausgang" steht. Wenn die
Unterkette einer Zelle mit n Symbolen M startet, beschreiben die
folgenden (n + 1) Symbole daher ihre verschiedenen aktiven Ausgänge. Der
Satz Ausgangskonturen wird in einer bestimmten Reihenfolge in der
Kette gespeichert (was später im
Decoder von Nutzen sein wird, um die Unsicherheit des zentralen
Pixels der Zelle zu lösen).
Das Symbol, das sich auf die Ausgangskontur mit der höchsten Priorität bezieht,
wird direkt nach dem Satz der Symbole M in die Kette eingefügt und wird
zur Eingangskontur für
die nächste
Zelle (wenn die Kontur nicht abgeschlossen wird). Das Symbol mit
der höchsten
Priorität
wird durch die Länge
des Kontursegments festgelegt, das die Eingangskontur mit jeder
der Ausgangskonturen verbindet: Es ist das Symbol mit dem längsten Weg,
was den Vorteil aufweist, dass die Zahl der Konturelemente, die
pro Zelle codiert wird, maximiert wird. Wenn zwei Konturelemente
gleiche lang sind, wird die Zweideutigkeit durch Berücksichtigung,
der vorgenannten Verfolgungspriorität gelöst: geradeaus – rechts – links.
Die anderen Ausgangskonturen werden nicht auf der Basis des Längenkriteriums
geordnet (solch eine Ordnung würde
nur sehr wenig Unsicherheitsfälle
lösen,
während
sie die Komplexität
des Decoders erhöhen
würde),
sondern auf der Basis der Verfolgungspriorität (geradeaus – rechts – links).
-
Beispiele
können
zum besseren Verständnis
gegeben werden. Die Ordnung von zwei Ausgangskonturen wird in 20 bis 22 gezeigt.
In 20 führt
der längste
Weg zum Ausgang 1, und die Symbole in der Kette sind daher M15.
In 21 führt
der längste
Weg zu 5: Die Symbole sind demnach M51. Dieser Satz von Symbolen
ergibt aber keine einmalige Zellkonfiguration, weil das dritte Beispiel
von 22 zur gleichen Darstellung M51 führt. Im
diesem letzten Fall sind die Wege, die zu den beiden Ausgängen (5
und 1) führen, gleich
lang: Der Verfolgungspriorität
gemäß ist die
resultierende Kette deshalb M51.
-
Für den Fall
einer Unterkette mit n Symbolen M werden in 23 und 24 zwei
Beispiel von Zellen mit Mehrfachzellen gegeben. Das Beispiel von 23 entspricht
einer Zelle mit zwei Tripelpunkten. Die Symbolkette, die die Konturinformation
dieser Zelle beschreibt, ist MM153. (es ist anzumerken, dass das
Symbol 5 in der Unterkette zuerst auftritt, obwohl der der Weg,
der zum Ausgang 3 führt,
länger
ist als der, der zum Ausgang 5 führt:
Dies ist auf die Ordnung der Nichtprioritätssymbole zurückzuführen, die
auf der Verfolgungspriorität
statt auf dem Längenkriterium
basiert). Im Beispiel von 24, wo
ein Quadrupelpunkt vorliegt, ist die Symbolkette, die die Konturinformation
dieser Zelle beschreibt, MM356 (der Weg, der zu 3 führt, ist
der längste, und
die Verfolgungspriorität
gibt 5 die Priorität
gegenüber
6).
-
Wenn
in einer Zelle ein Mehrfachausgang beobachtet wird, wird daher ein
spezifisches Symbol in die Unterkette eingefügt, wie soeben beschrieben.
Auf diesen Vorgang folgt eine Mehrfachpunktverwaltungsschritt 406.
Während
dieses Schritts wird der Ausgang mit geringerer Priorität (es sei
denn, er schließt
das Kontursegment ab) in einen Puffer für schwebende Punkte (eine FIFO-Warteschlange)
gespeichert, und alle Ausgangspunkte, die auf diese Weise im Puffer
gespeichert werden, werden mit der Markierung „SCHWEBEND" versehen.
-
Der
Grund für
solch einen Markierungsvorgang ist, dass nicht alle Punkte, die
im Speicher gespeichert werden, in Zukunft gebracht werden, um auf
ein neues Kontursegment zu verweisen. Denn während des Verfolgungsprozesses
kann eine neue Zelle einen Konturpunkt enthalten, der bereits zuvor
als „SCHWEBEND" markiert wurde.
In diesem Fall ist das Segment, das diesem „SCHWEBENDEN" Konturpunkt zugeordnet
war, bereits fertig, und der entsprechende Mehrfachpunkt muss aus
der Kette entfernt werden (beim Löschen der Wirkung eines Mehrfachpunkts
aus der Kette müssen
zwei Symbole entfernt werden: Das Symbol M für Mehrfachpunkts wird zuerst
aufgehoben, und dann wird die Bewegung entfernt, die den Eingang
der Zelle mit dem betreffenden Mehrfachpunkt verbunden hat, was
zum Beispiel dazu führt,
dass in der Unterkette nur noch das einzige Symbol 3 übrig bleibt,
wenn die Information in einer Zelle zuvor mit der Unterkette M35
codiert war und die neue Zelle für
den zweiten Ausgang gilt, der sich auf die Bewegung zu 5 bezieht).
-
Darüber hinaus
muss die betreffende Ausgangskontur entweder aus dem Puffer der
möglichen
Anfangspunke, wenn sie den Rahmen berührt, oder aus dem Puffer für „SCHWEBENDE" Punkte entfernt
werden. Schließlich
muss die Markierung des erstgenannten Ausgangspunkts – die in
Bezug auf die Bewegung zu 5 – aktualisiert
werden. Wenn die neue Zelle diesen Konturpunkt als Ausgang aufweist,
wechselt seine Markierung von „SCHWEBEND" zu „EINAUS". Wenn den neue Zelle
diesen Konturpunkt als inneren Konturpunkt aufweist, wechselt seine
Markierung von „SCHWEBEND" zu „INNEN".
-
Der
letzte Schritt des Verfolgungsprozesses, in 17 durch
das Bezugszeichen 407 bezeichnet, ist vorgesehen, um eine
Kontur (Test 471), einen Cluster (Test 472) oder
die Partition (Test 473) zu beenden. Das Ende eines Kontursegments
basiert auf den Konturelementen, die zuvor während des Verfolgungsprozesses als „EINAUS" markiert wurden.
Wenn eine Ausgangskontur in einer Zelle mit einer Kontur übereinstimmt,
die als „EINAUS" markiert ist, ist
dieser Zweig des Kontursegments abgeschlossen. Wenn die Ausgangskontur
die mit der höchsten
Priorität
ist, ist das Ende des Konturelements erreicht (auf der Decoderseite
erlaubt dies den Abschluss von Konturen an bekannten Konturstellen
und die Vermeidung einer möglichen
Spaltung von Regionen). Ferner, wenn die Ausgangskontur als „INNEN" oder „SCHWEBEND" markiert ist, aber
eine der folgenden Konturstellen, die von ihr aus erreicht werden
können, „EINAUS" ist, wird die Kontur
(oder der Zweig) ebenfalls beendet.
-
Wenn
ein Kontursegment endet, muss geprüft werden, ob der Cluster von
Regionen fertiggestellt ist. Der Puffer der „SCHWEBENDEN" Punkte wird zuerst
geprüft,
um zu sehen, ob weitere „SCHWEBENDE" Punkte in ihm vorhanden
sind, oder ob alle davon bereits extrahiert wurden. Wenn keine „SCHWEBENDEN" Punkte übrig sind,
wird der Puffer der möglichen
Anfangspunkte (Anfangspunkte, die den Rahmen berühren) geprüft (die Extraktion der Konturen
zuerst aus dem Puffer der „SCHWEBENDEN" Punkte erfolgt aus
Gründen der
Codierungsleistung). Wenn beide Puffer leer sind, ist der Cluster
fertig und ein neuer (falls vorhanden) wird auf entsprechende Weise
in Betracht gezogen.
-
Wie
zuvor erwähnt,
wird das Bild rasterweise (von oben nach unten und von links nach
rechts) abgetastet, und die erste uncodierte aktive Kontur wird
als der Anfangspunkt für
einen neuen Cluster von Regionen genommen. Wenn keine uncodierten
aktiven Konturen mehr vorhanden sind, ist die gesamte Partition
codiert worden.
-
Dieser
letzte Schritt des Verfolgungsprozesses ist daher in die drei Unterschritte 471 bis 473 unterteilt. Solange
die Kontur nicht beendet ist (Test 471), erlaubt die Rückwärtsverbindung,
die Schritte 403, 404, 405, 406 zu
wiederholen. Sobald eine Kontur beendet ist, wird der Test „Ende des
Clusters" vorgenommen
(Testunterschritt 472). Solange der Cluster von Regionen
nicht fertig ist, wird die folgende Prozedur durchgeführt. Der
Puffer der „SCHWEBENDEN" Punkte wird geprüft (Vorgang 74:
Auffinden eines gespeicherten schwebenden Punkts), um zu sehen,
ob weitere „SCHWEBENDE" Punkte darin vorhanden
sind. Wenn alle davon bereits extrahiert wurden, wird der Puffer
der möglichen
Anfangspunke, die den Rahmen berühren,
geprüft
(die Extraktion der Konturen zuerst aus dem Puffer der „SCHWEBENDEN" Punkte erfolgt aus
Gründen
der Codierungsleistung). Wenn beide Puffer leer sind, ist der Cluster
fertig, und ein neuer Cluster von Regionen wird in Betracht gezogen
(Vorgang 73: Extraktion des nächsten Anfangspunkts). Wenn
keine uncodierten aktiven Konturen mehr vorhanden sind (Test 473),
bedeutet dies, dass die gesamte Partition verarbeitet wurde.
-
Der
letzte Schritt des Partitionscodierungsverfahrens ist ein Entropiecodierungsschritt 408,
umfassend einen ersten Codierungsunterschritt 481 zum Codieren
der Information der Anfangspunke und einen zweiten Codierungsunterschritt 482 zum
Codieren der Bewegungskette.
-
Zur
Implementierung des Unterschritts 481 ist es notwendig,
zwischen den äußeren Anfangspunkten und
den inneren zu unterscheiden. Alle Anfangspunke, die den Rahmen
berühren
(d.h., sich auf den ersten Cluster beziehen), werden zusammen als
Kopfsatz der ersten Bewegungskette codiert. Für jeden Anfangspunkt, der den
Rahmen berührt,
wird die Position des Rahmenpunkts vor diesem Anfangspunkt codiert.
Diese Anfangspunkte werden anhand zwei verschiedener Wortlängen indexiert:
P Bits werden für die
horizontale Abmessung des Bilds (Ober- und Unterseite) verwendet,
und Q Bits für
die vertikale (linke und rechte Seite), mit zum Beispiel P = log2[dim_x] und Q = log2[dim_y].
Wenn auf einer Seite des Rahmens schließlich keine zu codierenden
Punkte übrig
bleiben, wird ein spezifisches Wort benutzt, um diese Situation
anzuzeigen (zum Beispiel PT oder QT). Wenn der letzte den Rahmen berührende Anfangspunkt
codiert worden ist, wird ein anderes spezifisches Wort (zum Beispiel
Po oder Qo) verwendet,
um den Start der Bewegungskette anzuzeigen. Wenn keine Anfangspunkte
auf dem Rahmen vorhanden sind, steht das Wort Po vor
einem Code („intern_ip"), der dem ersten
inneren Anfangspunkt gegeben wird. Die Codierungsweise dieser verschiedenen
Situationen, die verschiedenen Zahlen von Anfangspunkten auf den
vier Seiten des Rahmens entsprechen, ist in der folgenden Tabelle
angegeben:
-
-
Innere
Anfangspunkte werden auf entsprechende Weise indexiert. Da sie erhalten
wurden, indem das Bild von oben nach unten abgetastet wurde, entspricht
ein innerer Anfangspunkt stets einer horizontalen Konturstelle.
Deshalb werden nur die horizontalen Konturen indexiert.
-
Auch
wenn zur Implementierung des Unterschritts 482 die optimale
Lösung
die Analyse der Wahrscheinlichkeiten der für jede codierte Partition beinhaltet,
wurden gute Ergebnisse mit einer einfacheren, nicht optimalen Lösung erhalten,
die einen generischen Satz von Tabellen verwendet, dementsprechend
die Partition je nach Zahl ihrer Regionen klassifiziert werden (um
die homogene Symbolwahrscheinlichkeit zu behandeln). Drei Gruppen
von Analysen werden abhängig
von der Dichte (niedrig, mittel, hoch) angeboten, und es werden
Huffmantabellen verwendet, die jeweils diesen Gruppen zugewiesen
sind.
-
-
-
-
Die
Erfindung, wie sie oben beschrieben wurde, ist keineswegs auf die
genannten und gezeigten Ausführungsformen
eingeschränkt,
und Alternativen oder Verbesserungen können auf deren Basis vorgeschlagen werden.
-
Zum
Beispiel kann die Implementierung des Intramode-MGCC-Codierungsverfahrens
auf einen Scalable Mode-Codierungsansatz angewandt werden. Der Fall
von zwei Schichten – einer
Basic-Layer und einer Enhancement-Layer – wird nun beschrieben, doch
die Ausweitung auf mehrere Schichten liegt auch im Rahmen der Erfindung.
-
Für eine gegebene
Partition kann ein Teilsatz ihrer Konturen separat gesendet werden,
um eine Grobdarstellung zu formen, die die Basic-Layer darstellt.
Die übrigen
Konturen, die die Enhancement-Layer darstellen, die mit der Basic-Layer
die Formung der kompletten Partition erlaubt, können in einem späteren Schritt gesendet
werden. Dies wird in 25 bis 28 veranschaulicht,
wo eine komplette Partition eines in 25 gezeigten
Bilds in 26 dargestellt ist, die Basic-Layer
in 27 gezeigt wird und 28 die
Konturen enthält,
die zur Enhancement-Layer gehörigen.
-
Es
ist anzumerken, dass die Definition der Basic-Layer anwendungsabhängig sein
kann. Je nach Anwendung können
verschiedene Konturensätze
verwendet werden, um jeweils die zwei Lagers zu formen. Im Beispiel
von 25 bis 28 wurden
die zwei Lagers gewählt,
um die separate Codierung von spezifischen Objekten anzusprechen (wobei
die Basic-Layer dem Umriss von zwei Personen entspricht). Da die
Basic-Layer und die Enhancement-Layer separat codiert wurden, kann
das Decodieren der Basic-Layer auch unabhängig erfolgen, wenn diese grobe
Partition ausreicht, oder in Verbindung mit der Enhancement-Layer,
wenn die komplette Partition benötigt
wird.
-
Die
Codierung der Basic-Layer wird dem zuvor beschriebenen Verfahren
entsprechend durchgeführt. Um
die Codierungsleistung der Basic-Layer so hoch zu halten, als wäre sie die
einzige Information, die zu übertragen
ist, wurde kein zusätzliches
Symbol in den Bitstrom der Basic-Layer eingefügt, um die mögliche Decodierung
der Enhancement-Layer zu erlauben.
-
Zur
Codierung der Enhancement-Layer müssen einige Schritte des Intramode-MGCC-Verfahrens
in Bezug auf die Codierung der Basic-Layer geändert werden, vor allem der
Schritt der Extraktion der Anfangspunkte. Der MGCC-Ansatz codiert
die Basic-Layer,
indem er jeden Cluster von Regionen separat adressiert. Im Falle
der Enhancement-Layer
werden Cluster von Kontursegmenten adressiert. Im Intramode-MGCC-Verfahren
werden Anfangspunkte, die den Rahmen berühren, unter Ausnutzung der
Tatsache codiert, dass der Rahmen auf der Decoderseite bekannt ist.
Dieses Konzept wird weiter ausgenutzt, da im Scalable Mode dem Empfänger die
komplette Basic-Layer bekannt ist (mit Ausnahme der Unsicherheitspixel
im Zentrum der MGCC-Zellen). Die Anfangspunkte der Enhancement-Kontursegmente
werden direkt auf bekannten Konturen angeordnet: Dies sind alle
Konturen, die während
des Codierungsvorgangs der Basic-Layer als „RAHMEN" oder „EINAUS" markiert wurden. Bekannte Konturelemente,
die als Anfangspunkte verwendet werden, werden indexiert, wobei
das Bild von oben nach unten und von links nach rechts abgetastet
wird.
-
Es
ist anzumerken, dass Anfangspunkte nicht als Nachbarkonturstellen
der bekannten Kontur definiert werden können, wie dies im Intramode-MGCC-Verfahren
der Fall ist. Im Unterschied zur Codierung von Anfangspunkten, die
im Intramode-MGCC-Verfahren
den Rahmen berühren,
sind zwei Anfangskonturstellen möglich,
wenn ein anderes bekanntes Konturelement als Bezug verwendet wird.
Konturpunkte von der Basic-Layer,
die mit der Enhancement-Layer in Kontakt sind, werden daher in einen
Puffer der möglichen
Anfangspunk gespeichert und als „SCHWEBEND" markiert.
-
Wenn
keine Konturpunkte vorhanden sind, die mit der Basispartition in
Kontakt sind, geht der Prozess zum Schritt „Ende der Partition" über und extrahiert den Konturanfangspunkt
der ersten Region, wenn eine innere Region im Bild vorhanden ist.
-
Wenn
solch ein Anfangspunkt vorliegt, werden die gleiche Orientierung
und der gleiche Zelltyp verwendet wie die, die an dieser spezifischen
Stelle beim Codieren der Basic-Layer definiert wurden. Die Charakterisierung
von Zellen, die keine Anfangspunkte enthalten, ändert sich nicht.
-
Wie
zuvor werden Konturstellen innerhalb der Zelle, die mit der Anfangskontur
nicht verbunden sind, zurückgezogen.
Darüber
hinaus werden Konturen, die zur Basispartition gehören, nur
als Anfangs- oder Endpunkte eines Enhancement-Kontursegments berücksichtigt.
Die Verwaltung der Mehrfachpunkte und Prioritäten bei der Konturverfolgung
wird in Bezug auf den Fall der Basic-Layer nicht modifiziert.
-
In
der Enhancement-Layer basiert das Ende eines Konturelements auf
die Konturelemente entweder aus der Basic- oder der Enhancement-Layer,
die zuvor während
des Verfolgungsschritts als „EINAUS" markiert wurden.
Wenn die Ausgangskontur die mit der höchsten Priorität ist, ist
das Ende des Kontursegments erreicht. Wenn die Ausgangskontur zudem
als „INNEN" (aus der Basic-
oder Enhancement-Layer) oder „SCHWEBEND" (nur aus der Enhancement-Layer)
markiert ist, aber eine der folgenden Konturstellen, die von diesem aus
erreicht werden kann, „EINAUS" sind, ist die Kontur
(oder der Zweig) ebenfalls beendet. Schließlich werden das Ende des Clusters
und das Ende der Partition wie im Intramode-MGCC-Verfahren erkannt.
-
Das
vorgeschlagene Intramode-MGCC-Verfahren kann auch auf ein Intermode-MGCC-Verfahren ausgeweitet
werden. Denn es ist bekannt, dass es zur leistungsfähigen Codierung
einer Bildpartitionssequenz erforderlich ist, die zeitliche Redundanz
zu ausnutzen, die zwischen aufeinanderfolgenden Partitionen in der Sequenz
besteht; Das Dokument
EP 0789973 (PHF95553)
beschreibt eine Codierungstechnik, in welcher Regionen der aktuellen
Partition entweder im Intramode oder im Intermode codiert werden,
um die Codierungsleistung zu erhöhen.
In beiden Modi kann das MGCC-Verfahren angewandt werden, um die
Menge der Codierungsbits zu verringern. Der generische Ansatz der
Intermode-Partitionscodierung wird daher zuerst in Gedächtnis zurückgerufen,
und dann werden Änderungen
detailliert, die zur Anpassung des Intramode-MGCC-Verfahrens notwendig
sind.
-
Eine
Sequenz von Partitionen wird allgemein auf der Basis der Schätzung der
Bewegung zwischen aufeinanderfolgenden Partitionen codiert (wobei
diese Schätzung
auf einem Schätzverfahren
und einem Bewegungsmodell basiert). Sobald die Bewegungs parameter
erhalten wurde, werden sie benutzt, um die Form der Regionen in
der folgenden Partition vorherzusagen. Es kann sein, dass einige
Regionen in der neuen Partitionen im Intramode codiert werden müssen, weil
sie in dieser Partition erstmals aufgetreten sind, oder weil es
effizienter schien, sie auf diese Weise zu codieren. Diese Intraregionen,
die an sich schon eine Partition formen, werden zuerst codiert.
Nach ihrer Übertragung
kann der Empfänger
mit ihnen auch eine entsprechende Partition erzeugen, und eine zugehörige Maske,
die das Bild in einen Intrabereich, dessen Regionen bereits verfügbar sind,
und in einen Interbereich aufteilt, dessen Regionen bewegungskompensiert
werden. Die Kompensation wird durchgeführt, indem jeder Bewegungsparametersatz
für alle
Pixel im Interbereich getestet wird: Die Kompensation gilt nur dann
als gültig,
falls der Parametersatz, der zu einer Region Ri gehört, wenn
auf ein bestimmtes Pixel angewandt wird, es zu einem Pixel in der
vorherigen Partition kompensiert, das auch der Region Ri angehört. Wenn
die kompensierten Konturen nicht genau mit den Konturen der Originalpartition übereinstimmen,
wird der Satz von Konturen, die anders sind, als Fehler der kompensierten
Partition gesendet. In der Praxis werden Konturen aus der Originalpartition
und Konturen der Intra- und Interregionen, die nach dem Bewegungskompensationsschritt
erhalten wurden, addiert, um ein einzelnes Konturenbild zu ergeben,
eine Art Überpartition,
in der neue Regionen durch den Schnittpunkt der originalen Interregion-Konturen
und bewegungskompensierten Konturen geformt werden. Nachdem einige
dieser Regionen entfernt worden sind (Vereinfachungsschritt), werden
Konturen aus der Originalpartition, die zu den übrig bleibenden neuen Regionen gehören (die
nicht durch den Vereinfachungsschritt beseitigt wurden) gemeinsam
mit ihren eigenen Labels übertragen.
-
Das
Intramode-MGCC-Verfahren kann auch in der Intermode-Technik angewandt
werden, um den Satz von Intraregionen sowie die zusätzlichen
Kontursegmente zu codieren, die den Fehler der kompensierten Partition
bleiben. Dieser Satz von Intraregionen formt eine Partition, die
direkt mit dem Intramode-MGCC-Verfahren codiert werden kann. Die
einzige Verfeinerung, die in die Decodierung der Intraregionen eingeführt werden
kann, betrifft die Unsicherheitspixel, die im Zentrum einiger Zellen
auftreten, was der Fall jener Zellen ist, die zu Konturen an der
Grenze zwischen Intra- und Interregionen gehören. Diese Pixel werden im
Intramode nicht direkt einer Region zugewiesen, sondern vielmehr
im Intermodus analysiert, als Intermode-Pixel verarbeitet und je
nachdem, ob ein Satz von Bewegungsparameter zu diesen passt oder
nicht, jeweils der zugehörigen
Region oder der Intraregion zugewiesen. 29 zeigt
ein Beispiel, wo eine Zelle Pixel aus Intraregionen (schwarze Kreise)
und Zellen aus Interregionen (weiße Kreise) enthält: Weil
das zentrale Pixel in der Zelle einer Inter- oder einer Intraregion
angehören
kann (seine vier Konturstellen sind noch nicht markiert), wird sein Label
in der Intramode-Codierung nicht entschieden, und diese Entscheidung
wird auf den Intermode-Decodierungsschritt verschoben.
-
Die
zusätzlichen
Kontursegmente, die die Kompensationsfehler beschreiben, werden
auf der Basis der zuvor decodierten Konturen codiert. Es ist tatsächlich ein
vereinfachter Fall des Scalable Mode-MGCC-Verfahrens, der hierin
oben beschrieben wurde. Sowohl der Sender als auch der Empfänger verfügen über die
gleiche Information über
den Konturensatz, der im Intramode übertragen wird, und den Satz
bewegungskompensierter Konturen. Diese Information kann daher im
Scalable Mode-MGCC-Verfahren die Rolle der Basic-Layer spielen,
und die Kompensationsfehler-Konturen die Rolle der Enhancement-Layer. Dennoch ist das
Intermode-MGCC-Verfahren einfacher als das Scalable Mode-MGCC-Verfahren, weil
die Intramode-Konturen und die bewegungskompensierten Konturen im
Codierer und Decodierer vollständig
bekannt sind.
-
Auf
diese Weise können
Anfangskontursegmente jeden vorherigen Konturpunkt zugewiesen werden, und
nicht nur jenen, die als „EINAUS" markiert wurden
oder zum Rahmen gehören
(die gleiche Methode kann beim Abschließen einer Kontur befolgt werden).
-
Legende der Zeichnungen
-
17
-