-
Die
vorliegende Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung
für das
Dekodieren eines Videosignals; und insbesondere auf ein Verfahren
und eine Vorrichtung, die Konturen von in einem Videosignal enthaltenen
Objekten genauer dekodieren können,
wodurch Reproduktionsfehler in den dekodierten Konturen reduziert
werden.
-
In
Digitalfernsehsystemen, wie z. B. Videotelefonfernsehsystemen, Telekonferenzfernsehsystemen
und hochauflösenden
Fernsehsystemen, wird eine große
Menge von digitalen Daten benötigt,
um jedes Videorahmensignal zu definieren, da ein Videozeilensignal
in dem Videorahmensignal eine Sequenz von digitalen Daten aufweist,
die als Pixelwerte bezeichnet werden. Da jedoch die verfügbare Frequenzbandbreite
eines herkömmlichen Übertragungskanals
beschränkt
ist, ist es, um die große Menge
von digitalen Daten darüber
zu senden, unvermeidlich, das Volumen von Daten durch die Verwendung
verschiedener Datenkompressionstechniken zu komprimieren oder zu
reduzieren, besonders im Fall von solchen Videosignalkodierern mit
niedrigen Bitraten, wie z. B. bei Videotelefon- und Telekonferenzsystemen.
-
Eine
solche Technik zum Kodieren von Videosignalen für ein Kodierungssystem mit
niedriger Bitrate ist eine objektorientierte Analysesynthesekodierungstechnik,
bei der ein Eingangsvideobild in Objekte unterteilt wird und drei
Sätze von
Parametern zum Definieren der Bewegung, der Kontur und der Pixeldaten
jedes Objekts über
verschiedene Kodierungskanäle
verarbeitet werden.
-
US-A-3 987 412 offenbart
ein Verfahren und eine Vorrichtung für Bilddatenkompression auf
der Basis von Grenzverfolgung und durch das Kodieren von inneren
und äußeren Rändern von
Objekten.
-
WO 97/09828 offenbart ein
Verfahren und ein System zum Kodieren einer Sequenz von segmentierten
Bildern, die eine Mehrzahl von Bereichen und zugeordneten Kennsätzen aufweisen
und aufeinander folgende Teile definieren, wo bei das Verfahren und
das System die Operationen des Schätzens eines Bewegungsmodells,
das für
jeden der Bereiche die Entwicklung der Segmentierung von einem vorherigen
Teil zu dem gegenwärtigen
Teil kennzeichnet, und des Kodierens der Kontur und der Textur jedes
Bereichs des gegenwärtigen
Teils aufweisen.
-
XP010146206 „Motion
and Region Overlapping Estimation for Segmentation-Based Video Coding", 13. November 1994,
offenbart ein Verfahren von Bewegungs- und Bereichsüberlappungsschätzung für auf Segmentierung
basierende Videokodierung.
-
Beim
Verarbeiten einer Kontur eines Objekts ist für die Analyse und Synthese
der Objektform Konturinformation wichtig. Ein klassisches Kodierungsverfahren
zum Darstellen der Konturinformation ist ein Kettenkodierungsverfahren.
Das Kettenkodierungsverfahren erfordert jedoch eine beträchtliche Bitmenge
für deren
Darstellung, auch wenn das Verfahren keinerlei Verlust in der Konturinformation
erleidet.
-
Um
den Nachteil zu überwinden,
wurden mehrere Verfahren zur Kodierung von Konturinformation, einschließlich einer
polygonalen Annäherung,
vorgeschlagen.
-
Bei
der polygonalen Annäherung
werden Anfangsscheitel einer Kontur aus einer Vielzahl von Konturpixeln,
die die Kontur bilden, detektiert. Das heißt, wenn die Kontur eine offene
Schleife ist, werden die zwei Endpunkte der offenen Schleife als
die Anfangsscheitel der Kontur bestimmt, und wenn das nicht der
Fall ist, werden die zwei weitest entfernten Punkte auf der Kontur
die Anfangsscheitel. Nach dem Detektieren von zwei Scheiteln auf
der Kontur wird eine gerade Linie zwischen den zwei Scheiteln gezogen.
Und dann werden rechtwinklige Abstände von Konturpixeln auf einem
Kontursegment, das die zwei Scheitel mit der geraden Linie verbindet,
bestimmt. Aus den Konturpixeln auf dem Kontursegment, das der geraden
Linie entspricht, wird ein Konturpixel mit einem größten rechtwinkligen
Abstand als ein nächster
Scheitel detektiert, wenn der größte rechtwinklige
Abstand größer als
ein vorherbestimmter Schwellenwert ist. Durch das rekursive Ausführen des
oben genannten Prozesses wird eine Anzahl von Scheiteln auf der
Kontur detektiert und wird Scheitelinformation kodiert, die die
Positionen aller Scheitel auf der Kontur darstellt.
-
Mit
Bezug auf 1 ist ein schematisches Blockdiagramm
eines herkömmlichen
Konturkodierers 10 gezeigt, der einen Konturextraktionsblock 11, einen
Konturkodierungsblock 12, einen Konturtypkodierungsblock 14 und
einen Multiplexer (MUX) 16 aufweist.
-
Der
Konturextraktionsblock 11 extrahiert Konturen aus einem
eingegebenen Konturmaskenbild und koppelt die extrahierten Konturen
mit dem Konturkodierungsblock 12 und die Typen der extrahierten
Konturen mit dem Kodierungstypkodierungsblock 14.
-
Ferner
prüft der
Konturextraktionsblock 11 den Typ jeder extrahierten Kontur,
um der Kontur einen Index zu geben, der identifiziert, ob es eine äußere oder
eine innere Kontur ist, und überträgt die Indizes
der Konturen an den Konturtypkodierungsblock 14, wobei
die äußere Kontur
eine an dem äußeren Rand
eines Objekts positionierte Kontur darstellt und die innere Kontur
eine Kontur an dem Rand zwischen einem Objekt und einem Loch innerhalb
der Kontur bezeichnet. Mit Bezug auf 3A und 4A sind beispielhafte
Objekte O(1), O(2) und O(3) dargestellt, von denen jedes äußere Konturen
E(1), E(2) und E(3) bzw. innere Konturen I(1), I(2) und I(3) hat.
Der Konturkodierungsblock 12 kodiert die Konturen durch die
Verwendung einer Konturannäherungstechnik,
z. B. polygonaler Annäherung,
um dadurch dem MUX 16 kodierte Konturen zu liefern. Die
Konturindizes werden an dem Konturtypkodierungsblock 14 kodiert und
dem MUX 16 geliefert.
-
An
dem MUX 16 werden die kodierten Konturen und Indizes gemultiplext
und als kodierte Konturdaten für
deren Übertragung
an einen (nicht gezeigten) Sender gesendet.
-
In
einem Decoder wird an einem Empfangsende die Kontur des Objekts
auf der Basis der kodierten Konturdaten von dem Sendeende rekonstruiert. In
dem Fall, in dem die Kontur auf der Basis der Annäherungstechnik
kodiert wird, treten dort jedoch normalerweise Annäherungsfehler
in der dekodierten Kontur auf, was eine schädliche Wirkung in dem dekodierten
Bild mit sich bringt.
-
Die
möglichen
Fehler, die in dekodierten Konturen auftreten können, sind beispielhaft in 3B und 4B gezeigt,
die dekodierte Bilder der in 3A bzw. 4A gezeigten
Objekte darstellen. Die zwei separaten äußeren Konturen E(1) und E(2)
der zwei in 3A gezeigten Objekte O(1) und
O(2) werden in rekonstruierte Konturen E(1)' und E(2)' dekodiert und gehen auf Grund von Annäherungsfehlern
ineinander über,
wie in 3B gezeigt. 4B stellt
eine rekonstruierte innere Kontur I(3)' dar, die auf Grund von Annäherungsfehlern
aus der dekodierten äußeren Kontur
E(3)' hervorragt,
wobei sich in dem Originalbild die innere Kontur I(3) innerhalb
der äußeren Kontur
E(3) befindet, wie in 4A gezeigt.
-
Es
ist deshalb eine Aufgabe der vorliegenden Erfindung, ein Verfahren
und eine Vorrichtung bereitzustellen, die die Annäherungsfehler
in dem rekonstruierten Konturbild kompensieren können.
-
Gemäß einem
Aspekt der vorliegenden Erfindung ist ein Verfahren für die Verwendung
in einem Konturdekoder zum Rekonstruieren einer Kontur eines Objekts
in einem Bild mit einem oder mehreren Objekten darin auf der Basis
von kodierten Konturdaten für
die Kontur vorgesehen, wobei die kodierten Konturdaten durch eine
polygonale Annäherung
der Kontur des Objekts erhalten werden und wobei jede Kontur in
dem Bild entweder als eine äußere oder eine
innere Kontur kategorisiert wird, wobei die kodierten Konturdaten
für jede
Kontur einen Index enthalten, der den Typ von jeder Kontur und ein
Objekt, zu dem jede Kontur gehört,
identifiziert, und, wenn ein Objekt eine äußere und eine innere Kontur
hat, kodierte Konturdaten für
die äußere Kontur
vor den kodierten Daten für
die innere Kontur in den Konturdecoder eingegeben werden, wobei
das Verfahren folgende Schritte aufweist: (a) Dekodieren der kodierten
Konturdaten für
eine erste Kontur, um dadurch eine rekonstruierte erste Kontur zu
erzeugen; (b) Dekodieren von kodierten Konturdaten für eine nächste Kontur,
um dadurch deren Typ zu detektieren und eine rekonstruierte nächste Kontur
zu schaffen; (c) Überprüfen, ob
die rekonstruierte nächste Kontur
mit irgendwelchen der zuvor rekonstruierten Konturen überlappt;
(d) wenn keine der zuvor rekonstruierten Konturen mit der rekonstruierten
nächsten Kontur überlappt, Einstellen
der rekonstruierten nächsten
Kontur als eine gegenwärtig
rekonstruierte Kontur; (e) wenn die rekonstruierte nächste Kontur vom äußeren Typ
ist und mit einer zuvor rekonstruierten Kontur überlappt, Modifizieren der
rekonstruierten nächsten
Kontur, so dass sie nicht mit der zuvor rekonstruierten Kontur überlappt,
und Einstellen der modifizierten Kontur als die gegenwärtig rekonstruierte
Kontur; (f) wenn die rekonstruierte nächste Kontur vom inneren Typ
ist und mit einer zuvor rekonstruierten äußeren Kontur eines identischen
Objekts überlappt, Ändern der
rekonstruierten nächsten
Kontur, so dass sie nicht mit der zuvor rekonstruierten äußeren Kontur überlappt,
und Einstellen der geänderten
Kontur als die gegenwärtig
rekonstruierte Kontur; und (g) Wiederholen der Schritte (b) bis
(f) für
jede der übrigen
Konturen.
-
Gemäß einem
anderen Aspekt der vorliegenden Erfindung ist eine Vorrichtung für das Rekonstruieren
einer Kontur eines Objekts in einem Bild mit einem oder mehreren
Objekten darin auf der Basis von kodierten Konturdaten für die Kontur
und einer zuvor rekonstruierten Kontur für ein in dem Bild enthaltenes
Objekt vorgesehen, wobei die kodierten Konturdaten durch eine polygonale
Annäherung
an die Kontur des Objekts erlangt werden und wobei jede Kontur in
dem Bild entweder als ein äußerer oder
ein innerer Konturtyp kategorisiert wird, wobei die kodierten Konturdaten
für jede
Kontur einen Index aufweisen, der den Typ jeder Kontur und ein Objekt, zu
dem jede Kontur gehört,
identifiziert, und eine äußere Kontur
vor einer inneren Kontur eines identischen Objekts rekonstruiert
wird, wobei die Vorrichtung aufweist:
eine Einrichtung für das Speichern
von einer oder mehreren zuvor rekonstruierten Konturen;
eine
Einrichtung für
das Dekodieren von kodierten Konturdaten für eine gegenwärtige Kontur,
um dadurch den Typ der gegenwärtigen
Kontur zu detektieren und eine rekonstruierte gegenwärtige Kontur
zu schaffen; und eine Einrichtung als Antwort auf den Typ der gegenwärtigen Kontur
für das
Modifizieren der rekonstruierten gegenwärtigen Kontur, so dass sie
mit keiner der zuvor rekonstruierten Konturen überlappt.
-
Die
oben genannten und andere Aufgaben und Merkmale der vorliegenden
Erfindung werden aus der folgenden Beschreibung von bevorzugten Ausführungsformen
in Verbindung mit den beiliegenden Zeichnungen ersichtlich:
-
1 beschreibt
ein schematisches Blockdiagramm einer herkömmlichen Vorrichtung zum Kodieren
einer Kontur eines Objekts, die kodierte Konturdaten liefert, die
in eine erfindungsgemäße Dekodierungsvorrichtung
eingegeben werden, die von der Erfindung vorgeschlagen wird;
-
2 zeigt
ein Blockdiagramm der erfindungsgemäßen Dekodierungsvorrichtung
gemäß der vorliegenden
Erfindung;
-
3A bis 3C stellen
beispielhafte Dekodierungen von äußeren Konturen
dar; und
-
4A bis 4C stellen
beispielhafte Dekodierungen einer inneren Kontur dar, die in einer äußeren Kontur
enthalten ist.
-
Mit
Bezug auf 2 ist ein erfindungsgemäßer Konturdecoder
für das
Kompensieren der in dem dekodierten Konturbild aufgetretenen Annäherungsfehler
dargestellt, wobei der Konturdecoder 20 einen Demultiplexer
(DEMUX) 21, einen Konturtypdekodierungsblock 22,
einen Konturdekodierungsblock 23, einen Schalter 24,
einen Block zum Rekonstruieren von äußeren Konturen 25,
einen Block zum Rekonstruieren von inneren Konturen 26,
einen Speicher 27 und einen Maskenrekonstruktionsblock 28 aufweist.
-
In
den DEMUX 21 eingegeben werden die kodierten Konturdaten
von dem (nicht gezeigten) Sender, wobei die kodierten Konturdaten
kodierte Konturinformation und kodierte Konturindizes aufweisen.
Der DEMUX 21 trennt die kodierten Konturdaten in die kodierte
Konturinformation und die kodierten Konturindizes, die Konturtypen
darstellen, und liefert diese dem Konturdekodierungsblock 23 bzw.
dem Konturtypdekodierungsblock 22.
-
Der
Konturtypdekodierungsblock 22 dekodiert die kodierten Konturindizes,
um dadurch einen Konturindex für
jede Kontur an den Schalter 24 zu liefern, wobei der Konturindex
einen Index und einen Typ für
eine Kontur darstellt. Der Konturdekodierungsblock 23 dekodiert
die kodierte Konturinformation in dekodierte Konturdaten, z. B.
dekodierte Scheiteldaten, für
jede Kontur und liefert sie dem Schalter 24.
-
Der
Schalter 24 koppelt die dekodierten Konturdaten für jede Kontur
und deren Konturindex entweder mit dem Block zur Rekonstruktion
von äußeren Konturen 25 oder
dem Block zum Rekonstruieren von inneren Konturen 26 auf
der Basis des Konturindexes für
jede ihm eingegebene Kontur. Zum Beispiel werden die dekodierten
Konturdaten für
die äußeren Konturen
E(1) bis E(3) und die dekodierten Konturdaten für die inneren Konturen I(1)
bis I(3), gezeigt in 3A und 4A entsprechend
an den Block zur Rekonstruktion von äußeren Konturen 25 oder
den Block zur Rekonstruktion von inneren Konturen 26 übertragen.
-
Der
Block zur Rekonstruktion von äußeren Konturen 25 rekonstruiert
eine gegenwärtige äußere Kontur
auf der Basis der ihm eingegebenen dekodierten Konturdaten und modifiziert
die rekonstruierte gegenwärtige
Kontur, so dass sie nicht mit anderen zuvor rekonstruierten Konturen
in dem Speicher 27 überlappt.
Das heißt,
nach dem Rekonstruieren der gegenwärtigen äußeren Kontur ruft der Block
zur Rekonstruktion von äußeren Konturen 25 die
zuvor rekonstruierten Konturen aus dem Speicher 27 ab,
um zu detektieren, ob irgendeine Konturüberlappung mit der rekonstruierten
gegenwärtigen
Kontur existiert. Wenn es eine zuvor rekonstruierte Kontur gibt,
die mit der gegenwärtigen
Kontur überlappt,
ersetzt der Block zur Rekonstruktion von äußeren Konturen 25 einen überlappenden
Teil der rekonstruierten gegenwärtigen
Kontur durch ein neues Kontursegment, das nicht mit der zuvor rekonstruierten
Kontur überlappt. Mit
anderen Worten werden, wie in 3B gezeigt, wenn
eine rekonstruierte gegenwärtige
Kontur E(2)' mit
einer zuvor rekonstruierten Kontur E(1)' überlappt,
das Objekt O(2)' und
das Objekt O(1)',
die durch entsprechende Konturen E(2)' und E(1)' definiert sind, zu einem Objekt vermischt.
In einem solchen Fall wird der Teil des Objekts O(2)', der mit dem Objekt
O(1)' überlappt,
als ein Teil des Objekts O(1)' erklärt und wird
ein geändertes
Kontursegment außerhalb
der zuvor rekonstruierten Kontur gezeichnet. In einer bevorzugten
Ausführungsform
der Erfindung wird das geänderte
Kontursegment durch das Verbinden von Pixeln gemacht, die zu dem
Objekt O(2)' gehören und
der zuvor rekonstruierten Kontur E(1)' benachbart sind. Folglich können zwei
verschiedene Konturen O(1) und O(2), die in 3A gezeigt
sind, in zwei Objekte O(1)' und O(2)'' aufgeteilt werden, wie in 3C gezeigt.
Die rekonstruierten gegenwärtigen äußeren Konturdaten
werden dann dem Speicher 27 zugeführt und darin gespeichert.
-
In
der Zwischenzeit rekonstruiert der Block zum Rekonstruieren von
inneren Konturen 26 eine gegenwärtige innere Kontur mit Bezug
auf die aus dem Speicher 27 gelieferten zuvor rekonstruierten äußeren Konturen.
Das heißt,
der Block zum Rekonstruieren von inneren Konturen 26 rekonstruiert
die gegenwärtige
innere Kontur auf der Basis derer dekodierten Konturdaten, die von
dem Schalter 24 geliefert werden, und findet eine passende äußere Kontur
der gegenwärtigen
inneren Kontur unter den zuvor rekonstruierten Konturen in dem Speicher 27.
Mit anderen Worten findet, wenn die rekonstruierte gegenwärtige innere
Kontur einen Index I(n)' hat,
der Block zum Rekonstruieren von inneren Konturen 26 die
Kontur mit einem Index E(n)' unter
den zuvor rekonstruierten Konturen aus dem Speicher 27,
wobei die Konturen mit Indizes I(n)' und E(n)' eine innere bzw. eine äußere Kontur
eines Objekts O(n)' sind. Dann überprüft der Block
zum Rekonstruieren von inneren Konturen 26, ob die Kontur
I(n)' über E(n)' hervorragt oder
nicht. Wenn nicht, liefert der Block zum Rekonstruieren von inneren
Konturen 26 dem Speicher 27 die rekonstruierten
gegenwärtigen
inneren Konturdaten ohne weitere Verarbeitung. Wenn die Kontur I(n)' aus der Kontur E(n)' heraus ragt, entfernt der
Block zum Rekonstruieren von inneren Konturen 26 den Teil
der Kontur I(n)',
der sich in der Kontur E(n)' befindet,
und liefert dem Speicher 27 die Konturdaten für den restlichen
Teil der Kontur I(n)'.
Zum Beispiel ragt die rekonstruierte gegenwärtige innere Kontur I(3)' des Objekts O(3)' aus deren entsprechenden
rekonstruierten äußeren Kontur
E(3)' heraus, wie
in 4B gezeigt. In einem solchen Fall wird der Teil
der Kontur I(3)',
der außerhalb
der Kontur E(3) liegt, nicht als Teil der inneren Kontur betrachtet
und wird deshalb verworfen, um dadurch nur die rekonstruierte innere
Kontur zu liefern, die in deren entsprechenden äußeren Kontur enthalten ist, wie
in 4C. Folglich wird die innere Kontur so rekonstruiert,
dass sie nicht über
die äußere Kontur
herausragt, in der sie enthalten sein soll. Die rekonstruierten
gegenwärtigen
inneren Konturdaten werden mit dem Speicher 27 gekoppelt
und darin gespeichert. Es sollte aus dem oben Genannten ersichtlich sein,
dass gemäß der vorliegenden
Erfindung eine äußere Kontur
eines Objekts vor einer inneren Kontur des Objekts rekonstruiert
werden sollte, um die innere Kontur richtig zu rekonstruieren.
-
Der
Speicher 27 speichert alle ihm von dem Block zum Rekonstruieren
von inneren Konturen 25 bzw. dem Block zum Rekonstruieren
von äußeren Konturen 26 eingegebenen
Konturen und liefert die in ihm gespeicherten Konturen beim Rekonstruieren
einer gegenwärtigen
Kontur als einen Bezug. Wenn die Rekonstruktion aller Konturen beendet
ist, werden rekonstruierte Konturdaten für die gespeicherten Konturen
in dem Speicher 27 einem nächsten (nicht gezeigten) Prozessor
zur Rekonstruktion der Bilddaten der Objekte geliefert.
-
Auch
wenn die vorliegende Erfindung in Bezug auf die bevorzugten Ausführungsformen
beschrieben wurde, können
andere Modifikationen und Variationen gemacht werden, ohne vom Umfang
der vorliegenden Erfindung abzuweichen, wie er in den folgenden
Ansprüchen
dargelegt ist.