DE69722040T2 - 2-d gittergeometrie und bewegungsvektorkompression - Google Patents

2-d gittergeometrie und bewegungsvektorkompression Download PDF

Info

Publication number
DE69722040T2
DE69722040T2 DE69722040T DE69722040T DE69722040T2 DE 69722040 T2 DE69722040 T2 DE 69722040T2 DE 69722040 T DE69722040 T DE 69722040T DE 69722040 T DE69722040 T DE 69722040T DE 69722040 T2 DE69722040 T2 DE 69722040T2
Authority
DE
Germany
Prior art keywords
grid
node
nodes
motion vector
coding
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 - Lifetime
Application number
DE69722040T
Other languages
English (en)
Other versions
DE69722040D1 (de
Inventor
J. Petrus VAN BEEK
Murat Ahmet TEKALP
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.)
Sharp Corp
Original Assignee
Sharp Corp
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 Sharp Corp filed Critical Sharp Corp
Publication of DE69722040D1 publication Critical patent/DE69722040D1/de
Application granted granted Critical
Publication of DE69722040T2 publication Critical patent/DE69722040T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Description

  • Gebiet der Erfindung
  • Die Erfindung liegt auf dem Gebiet der Codierung und Manipulation von Bildern, genauer gesagt, dem Codieren von Sequenzen von 2D-Gittern, die im Wesentlichen einer Sequenz von Bildern entsprechen.
  • Hintergrund der Erfindung
  • Ein 2D-Dreiecksgitter bezieht sich auf die Mosaikabbildung einer visuellen 2D-Objektebene in Dreiecksflecke. Die Ecken der Dreiecksflecke werden als "Knotenpunkte" bezeichnet. Die die Knotenpunkte verbindenden geradlinigen Segmente werden als "Ränder" bezeichnet.
  • Ein dynamisches 2D-Gitter besteht aus einer zeitlichen Sequenz von 2D-Dreiecksgittern, wobei jedes Gitter dieselbe Topologie (d. h. Struktur) aufweist, jedoch Knotenpositionen von einem Gitter zum nächsten verschieden sein können. So kann ein dynamisches 2D-Gitter durch die Geometrie des anfänglichen 2D-Gitters und Bewegungsvektoren an den Knotenpunkten für folgende Gitter definiert sein, wobei jeder Bewegungsvektor von einem Knotenpunkt des vorigen Gitters in der Sequenz zu einem Knotenpunkt des aktuellen Gitters zeigt. Ein dynamisches 2D-Gitter kann dazu verwendet werden, 2D-Animationen dadurch zu erzeugen, dass eine Textur aus einem Stehbild mittels gut bekannter Texturabbildungsmaßnahmen auf aufeinanderfolgende 2D-Gitter abgebildet wird. Zum Beispiel kann ein dynamisches Gitter dazu verwendet werden, eine wehende Flagge aus einem Stehbild einer Flagge zu erzeugen. Die örtlichen Deformationen der Textur im zeitlichen Ablauf werden durch die Bewegung von Gitternknoten von einem Gitter zum nächsten erfasst. Demgemäß können verschiedene Animationen derselben Textur durch verschiedene Sätze von Knoten-Bewegungsvektoren erzielt werden.
  • Der Texturabbildungsvorgang nutzt die Struktur des Gitters, d. h. die Art, in der die Knoten des Gitters miteinander verbunden sind, d. h. die Konfiguration der Ränder des Gitters. Ein Gitter kann eine spezifizierte, implizi te Struktur aufweisen, die eine gleichmäßige Struktur oder eine Delaunay-Struktur, wie von S. M. Omohundro in "The Delaunay triangulation and function learning", International Computer Science Institute Technical Report TR-90-001, University of California Berkeley, Januar 1990 beschrieben wurde.
  • Effizientes Codieren einer Animationssequenz kann dadurch bewerkstelligt werden, dass die Stehbildtextur und das zugegehörige 2D-Gitter, d. h. die Geometrie und die Knotenvektoren, gesondert codiert werden. Das zugeordnete 2D-Gitter ist durch die Geometrie des ersten Gitters und die Bewegungsvektoren der Knoten des ersten und der folgenden Gitter repräsentiert. Das 2D-Gitter wird dadurch codiert, dass die Geometrie des ersten Gitters und die Bewegungsvektoren der Knoten dieses ersten und der folgenden Gitter codiert werden.
  • Die hier beschriebene Gittergeometrie-Kompressionstechnik ist auf 2D-Dreiecksgitter mit impliziter Topologie, genauer gesagt, Gitter mit gleichmäßiger und mit Delaunay-Topologie beschränkt. In diesen Fällen ist die Gittertopologie implizit definiert, wobei die Orte der Gitterknoten (auch als Ecken bezeichnet) und einige Zusatzinformationen, die später detailliert spezifiziert wird, angegeben werden. Algorithmen zum Realisieren von Delaunay-Triangulationen sind in der Literatur verfügbar und werden hier nicht beschrieben. Es sei darauf hingewiesen, dass Delaunay-Triangulationen eindeutig definiert sind, außer dann, wenn die zu triangulierenden Knoten bestimmte Degenerationen hinsichtlich ihrer Orte enthalten. Hier sei angenommen, dass sowohl der Gittercodierer als auch der Gitterdecodierer eine Technik, über die sie sich vereinbart haben, dazu nutzen, derartige Degenerationen zu handhaben. Derartige Techniken sind dem Fachmann gut bekannt. Die hier beschriebene Gittergeometrie-Kompressionstechnik erlaubt für diese eingeschränkten Gitterklappen ein hohes Kompressionsverhältnis.
  • Eine Gitterbewegung effizient zu repräsentieren ist von Bedeutung, um auf Gittern basierende Animationen zu beschreiben. Hier wird eine Technik zur Kompression einer Gitterbewegung für den 2D-Fall beschrieben, wobei jedoch darauf hingewiesen sei, dass das Prinzip in unkomplizierter Weise auf den Fall von 3D-Gittern mit 3D-Bewegung erweitert werden kann. Ferner sei darauf hingewiesen, dass die hier beschriebene Gitterbewegungs-Kompressionstechnik direkt bei Gittern mit allgemeiner Topologie anwendbar ist, obwohl hier angegebene Beispiele Gitter mit eingeschränkter Topologie beschreiben. Schließlich sei darauf hingewiesen, dass die Prinzipien der Erfindung hin sichtlich Bewegungscodierung auch unkompliziert auf die Codierung von Attributen zum Aussehen einer Oberfläche angewandt werden können.
  • Die hier beschriebenen Codierverfahren können z. B. in Zusammenhang mit MPEG-4 verwendet werden. MPEG-4 ist ein objektbasierender Multimedia-Kompressionsstandard, wie er von der Motion Picture Experts Group entwickelt wird und der eine gesonderte Codierung verschiedener audiovisueller Objekte (AVO) in einer Szene erlaubt und eine Erweiterung der bisherigen Standards MPEG-1/2 bildet. Diese AVOs werden codiert und dann im Benutzerterminal entsprechend einem gesendeten Szene-Beschreibungsscript und/oder Wechselwirkung mit dem Benutzer zusammengesetzt, um Anzeigerahmen zu erstellen. Die visuellen Objekte können über einen natürlichen oder synthetischen Inhalt verfügen, einschließlich Audio, Video, 3D-Grafikmodellen, Rolltext und Grafikoverlays usw.
  • Zusammenfassung der Erfindung
  • Die Erfindung beinhaltet Verfahren zum Codieren von Gitterdaten in ein komprimiertes Format sowie Verfahren zum Decodieren des komprimierten Formats. Die Verwendung eines komprimierten Formats erleichtert effiziente Speicherung und Kommunikation der Gitterdaten. Die beschriebenen Codierverfahren sind verlustfrei, d. h., dass das komprimierte Format dieselbe Information repräsentiert, wie sie in den ursprünglichen Gitterdaten enthalten ist. Gleichzeitig verringert die Verwendung des komprimierten Formats den benötigten Umfang an Speicherraum oder die Kommunikationsbandbreite.
  • Zur Erfindung gehört ein Systemverfahren zum Codieren und Decodieren eines dynamischen Gitters, einschließlich des Codierens und Decodierens einer Gittergeometrie einer Gruppe von Knotenpunkten; sowie das Codieren und Decodieren eines Gitterknoten-Bewegungsvektors für jeden Knotenpunkt.
  • Es ist eine Aufgabe der Erfindung, ein System und ein Verfahren zum Codieren und Decodieren eines Gitters und der Verschiebung von Knotenpunkten von einem momentanen Rahmenzeitpunkt zum nächsten zu schaffen.
  • Kurze Beschreibung der Zeichnungen
  • 1 zeigt eine gitterbasierende Bewegungsmodellierung unter Verwendung eines Dreieckgitters.
  • 2 zeigt die Knotenbewegung und die Verformung eines Bildobjekts, wenn ihm ein Gitter überlagert wird.
  • 3 zeigt ein typisches Codierer/Decodierer-System.
  • 4 zeigt eine Animationsanwendung, wobei es sich um Prozesse durch das System der 3 handelt.
  • 5 zeigt ein verallgemeinertes, gleichmäßiges 2D-Gitter.
  • 6 zeigt vier Typen gleichmäßiger Gitter.
  • 7 zeigt eine Knotenpunkts-Reihenfolge in einem 2D-Dreiecksgitter vom Delaunay-Typ.
  • 8 zeigt eine Knotenpunkt-Reihenfolge in einem 2D-Dreiecksgitter vom gleichmäßigen Typ.
  • 9 zeigt einen Zwischenpunkt in einem Umfang-zuerst-Durchlauf eines 2D-Dreiecksgitters.
  • 10 zeigt einen Umfang-zuerst-Durchlauf von Dreiecken in einem 2D-Gitter.
  • 11 zeigt eine Gruppe decodierter Knotenpunkte und Gittergrenze-Randsegmenten.
  • 12 zeigt ein decodiertes Dreiecksgitter, das durch eingeschränkte Delaunay-Triangulation erhalten wurde.
  • Detaillierte Beschreibung der bevorzugten Ausführungsform
  • Gitterbasierte Bewegungsmodellierung für Videoverarbeitung
  • Die Modellierung und Abschätzung der Bewegung von Objekten in einer Sequenz von Bildrahmen ist in der Videoverarbeitung üblich und verfügt über eine Anzahl von Anwendungen. Eine übliche Vorgehensweise ist blockbasierte Bewegungsmodellierung, bei der Bewegungsparameter für jeden Rechteckblock von Pixeln unabhängig abgeschätzt werden. Genauer gesagt, hat sich das Translations-Blockbewegungsmodell für Videokompression als zufriedenstellend er wiesen; es wurde in internationalen Standards wie MPEG-1, -2 und -4 verwendet. In jüngerer Zeit wurde als auf einem 2D-Gitter basierende Bewegungsmodellierung als vielversprechende Alternative bei der Videoverarbeitung gegenüber blockbasierender Bewegungsmodellierung vorgeschlagen.
  • Ein 2D-Gitter ist eine Mosaikabbildung (oder Unterteilung) eines planaren 2D-Bereichs in Polygonflecke. Nachfolgend werden die Ecken der Polygonflecke als die Knotenpunkte des Gitters bezeichnet. Die Flecke sind im Allgemeinen Dreiecke oder Vierecke, was zu Dreiecks- bzw. Vierecksgittern führt. Siehe die 1a. Bei auf einem 2D-Gitter beruhender Bewegungsmodellierung wird ein 2D-Gitter einem Bild oder einer Gruppe von Bildern so zugeordnet, dass die polygonalen Gitterflecke Texturflecken in den Bildern entsprechen, wobei die Textur aus den Bildpixeln innerhalb eines Flecks besteht. Polygonflecke in einem Bezugsrahmen werden durch die Bewegungen der Knotenpunkte zu Polygonflecken eines anderen Rahmens verformt, und die Textur innerhalb jedes Flecks im Bezugsrahmen wird unter Verwendung parametrischer Abbildung als Funktion der Knotenpunkt-Bewegungsvektoren unter Verformung auf den anderen Rahmen abgebildet. Siehe die 1b und 1c. Hinsichtlich Dreiecksgittern wird affine Abbildung verwendet, die Translation, Rotation, Maßstabsänderung und Scherung abbilden kann. Es ist zu beachten, dass bei gitterbasierender Bewegungsmodellierung die Flecke im Bezugsrahmen oder im aktuellen Rahmen nicht überlappen. So wie hier verwendet, bedeutet die Aussage, dass zwei Dreiecke benachbart sind, dass sie einen Rand gemeinsam haben.
  • Wenn angenommen wird, dass der Parameterabschätzung vernünftige Einschränkungen auferlegt werden, kann eine affine Transformation die Kontinuität der Abbildung über die Grenzen benachbarter Dreiecke hinweg gewährleisten. Die beinhaltet, dass das ursprüngliche 2D-Bewegungsfeld durch die Bewegung der Knotenpunkte kompakt repräsentiert werden kann, woraus ein kontinuierliches, stückweise affine Bewegungsfeld rekonstruiert werden kann.
  • 3D-Polygongitter wurden für effiziente 3D-Objektgeometrie modellierung und -wiedergabe bei Computergrafik verwendet. Gleichungen, die parametrischen Abbildungen ähnlich sind, wie sei bei gitterbasierender Bewegungsmodellierung verwendet werden, wurden auch bei 3D-Grafiken dazu verwendet, eine Texturabbildung auszuführen, wobei es sich um eine beliebte Prozedur handelt, um natürliche Bilder mit Polygongittern wiederzugeben, die Grafikobjekte beschreiben, um fotorealistische Synthesebilder zu erhalten. Texturabbildung bei 3D-Grafik erfolgt durch Zuweisung einer Texturkoordinate (einer Pixelposition für ein 2D-Bild) für jeden 3D-Knotenpunkt im Polygongitter. So wird jedem Polygon-Oberflächenelement im 3D-Gitter ein Fleck des 2D-Bilds zugeordnet, der dann in das Polygongitter überführt wird, das der eigentlichen Verformungstransformation unterliegt. Eine Animation kann dadurch erzeugt werden, dass dasselbe Bild wiederholt in ein verformtes Gitter überführt wird. Ein ähnlicher Prozess kann mit 2D-Gittern ausgeführt werden, um ein Bild in eine animierte Bildsequenz zu überführen und Gitter entsprechend zu verformen.
  • Bewegungsabschätzung für gitterbasierende Videoverarbeitung
  • Die Bestimmung der Bewegung von 2D-Gittern aus einer vorgegebenen Bildsequenz erfolgt durch Abschätzen der Bewegung von Gitterknotenpunkten im Verlauf der Zeit. Im Fall einer auf einem 2D-Gitter beruhenden Bewegungsmodellierung betrifft die Bewegungsabschätzung die Suche in einem vorgegebenen Bezugsbild nach dem besten Orten der Knotenpunkte, so dass die dreieckigen Bildflecke im Bezugsrahmen optimal zu denen im aktuellen Bild passen. Das Gitter im anfänglichen Bezugsbild kann über regelmäßige Struktur verfügen, in welchem Fall es als gleichmäßiges Gitter bezeichnet wird, oder es kann an das Bild angepasst werden, in welchem Fall es als inhaltsbasiertes Gitter bezeichnet wird. Eine Beschreibung eines Algorithmus für ein inhaltsbasiertes (adaptives) Gitterdesign findet sich in der Literatur.
  • Für die Knotenbewegungsvektor-Suche von einem Rahmen zum nächsten wurden verschiedene Techniken vorgeschlagen. Das einfachste Verfahren besteht in der Erzeugung von Blöcken, die um die Knotenpunkte zentriert sind, wobei dann eine gradientenbasierte Technik oder eine Blockübereinstimmungsprüfung dazu verwendet wird, Bewegungsvektoren am Ort der Knoten aufzufinden. Durch hexagonale Übereinstimmungsprüfung und Übereinstimmungsprüfungstechniken für geschlossene Formen wird der optimale Bewegungsvektor an jedem Knoten bei parametrischer Verformung aller Flecke aufgefunden, die den Knoten umgeben, während Einschränkungen betreffend den Gitterzusammenhang durchgesetzt werden. Ein anderes Verfahren ist iterative, gradientenbasierte Optimierung von Knotenpunktorten, wobei Bildmerkmale und Gitterverformungskriterien berücksichtigt werden.
  • Es wird nun auf die 2 Bezug genommen, in der ein Bildobjekt 10 dargestellt ist. Die Bewegung der Knoten, wie der Knoten 12, 14, aus einem Bildobjekt 10 wird so beschrieben, dass das Bildobjekt in ein animiertes Bildobjekt 16, mit Knoten 12a, 14a transformiert wird. Die Bewegung der Knoten beschreibt eine örtliche Bewegung und Verformung des Objektbilds 10, über das ein Gitter 18 gelegt wird. Die Transformation, die das Gitter des Objekts 16 in das Bildobjekt 10 überführt, führt zu örtlicher Bewegung und Verformung sowie zu einer Maßstabsänderung des gesamten Bildobjekts.
  • Wie bereits angegeben, besteht eine Aufgabe der Erfindung darin, ein Verfahren zum Codieren und Decodieren eines Gitters und der Verschiebung von Knotenpunkten von einem Rahmenzeitpunkt zum nächsten zu schaffen. Die zu animierende Textur kann unter Verwendung eines Stehbild-Codierverfahrens codiert sein, wie bei MPEG-4 (Moving Picture Experts Group Standard 4) verwendet. Die zu animierende Textur kann ein Stehbild eines natürlichen Objekts sein, oder sie kann ein synthetisches (computererzeugtes) Bild sein.
  • Durch Anwenden des Decodierers werden die Textur und das Gitter decodiert und in Animation überführt. Die aktuelle Version von MPEG-4 Systems Working Draft (WD) spezifiziert ein Grundgerüst für animationsunterstützende Anwendungen, MPEG-4 Systems Working Draft V 5.0 of ISO/IEC 14496, Document No. N1825, Juli 1997, nachfolgend als MPEG-4 WD V 5.0 bezeichnet.
  • 2D-Gittercodierer
  • Als Erstes werden das Codieren der Gittergeometrie und dann das Codieren von Gitterbewegungsvektoren beschrieben. Es sei angenommen, dass die Gitterstruktur (d. h. die Topologie) bekannt ist und dass es sich entweder um ein gleichmäßiges Gitter oder ein Delaunay-Gitter handelt.
  • In den 3 und 4 ist ein typisches System dargestellt, das das erfindungsgemäße Verfahren nutzen kann, und es verfügt über ein Codierer-Untersystem 20, das in der 3 dargestellt ist. Das Untersystem 20 verfügt über einen Texturcodierer 22, der Stehbild-Texturdaten 22 empfängt und einen texturcodierten Bitstrom 26 erzeugt. Ein Gittercodierer 28 empfängt eine 2D-Gittersequenz 30. Der Codierer 28 verfügt über einen Geometriecodierer 32 und einen Bewegungsvektorcodierer 34. Der Codierer 28 erzeugt einen gittercodierten Bitstrom 36.
  • Das Decodier-Untersystem 20 ist in der 4 dargestellt, und es verfügt über einen Texturcodierer 38 und einen Gitterdecodierer 40. Der Gitterdecodierer 40 verfügt über einen Geometriedecodierer 42 und einen Bewegungsvektordecodierer 44. Das Ausgangssignal des Texturdecodierers 38 und des Git terdecodierers 40 führt zu Texturabbildungsdaten 46, die bei einer Animationsanwendung 48 verwendet werden, was zu einem animierten Bild 50 führt. Der Fachmann erkennt, dass zwar die bevorzugte Ausführungsform des erfindungsgemäßen Systems hinsichtlich der Manipulation eines Stehbilds beschrieben ist, dass jedoch auch andere Bilder, wie Videobilder, manipuliert werden können.
  • Gittergeometrie-Codierung
  • Da das anfängliche 2D-Dreiecksgitter entweder ein gleichmäßiges Gitter oder ein Delaunay-Gitter ist, wird die Topologie des Dreiecksgitters (Verbindungen zwischen Knotenpunkten) nicht codiert; es werden nur die 2D-Knotenpunktkoordinaten
    Figure 00080001
    codiert. Im Bitstrom kann ein spezielles Flag spezifizieren, ob das anfängliche Gitter gleichmäßig oder ein Delaunay-Gitter ist. Siehe die untenstehende Tabelle 8.
  • Im Fall eines gleichmäßigen Gitters werden fünf Parameter nr_of_mesh_nodes_hori, nr_or_mesh_nodes_verti, mesh rect size hori, mesh_rect_size_verti, und triangle split code (in der untenstehenden Tabelle 5 näher definiert und beschrieben) dazu verwendet, die vollständige Topologie und die Knotenpunktorte zu spezifizieren. Ein Beispiel eines gleichmäßigen 2D-Gitters ist in der 5, allgemein mit 60 gekennzeichnet, dargestellt, wobei die Anzahl der Knoten 62, die zur Hervorhebung als dunkle Kreise dargestellt sind, in der horizontalen und vertikalen Richtung die Werte 5 bzw. 4 hat. Das Aufteilen von Rechtecken in Dreiecke kann gemäß vier verschiedenen Schemas erfolgen, wie es in der 6 dargestellt ist. Einer dieser Typen ist in der 5 dargestellt, der triangle_split_code = '00' entspricht. Andere Codes sind ferner in der Tabelle 9 definiert. Die ersten zwei Parameter nr_of_mesh_nodes_hori, nr_or_mesh_nodes_verti spezifizieren die Anzahl der Knoten in der horizontalen bzw. vertikalen Richtung für das gleichmäßige Gitter. Die nächsten zwei Parameter mesh_rect_size_hori, mesh_rect_size_verti spezifizieren die horizontale bzw. vertikale Größe jedes Rechtecks (das zwei Dreiecke enthält) in Halbpixeleinheiten. Dies spezifiziert das Layout und die Abmessungen des Gitters. Der letzte Parameter triangle_split_code spezifiziert, wie jedes Rechteck unterteilt wird, um zwei Dreiecke zu bilden.
  • Delaunay-Gitter
  • Die Knotenpunktkoordinaten werden dadurch codiert, dass als Erstes die Grenzknotenpunkte und dann die inneren Knotenpunkte des Gitters codiert werden. Um die inneren Knotenpositionen zu codieren, werden die Knoten einzeln unter Verwendung einer Nächster-Nachbar-Strategie durchlaufen, und jede Knotenposition wird differenziell unter Verwendung der Position des zuvor codierten Knotens als Vorläufer codiert. Eine lineare Reihenfolge der Knotenpunkte wird so berechnet, dass jeder Knoten einmal durchfahren wird.
  • Wenn ein Knoten durchfahren wird, wird seine Position in Bezug auf den zuvor codierten Knoten differenzcodiert. Das heißt, dass die Differenz zwischen der Position des aktuellen Knotens und dem rekonstruierten Wert des vorigen Knotens unter Verwendung einer Codierung mit variabler Länge (VLC) codiert wird. Die Reihenfolge ist dergestalt, dass die Grenzknoten als Erstes durchlaufen werden, und dann die inneren Knoten. Durch Liefern der Gesamtanzahl der Knotenpunkte und der Anzahl der Grenzknotenpunkte ist dem Decodierer bekannt, wieviele Knotenpunkte folgen werden und wieviele davon Grenzknoten sind; so ist er dazu in der Lage, die Polygongrenze und die Orte aller Knoten zu rekonstruieren.
  • Diese Prozedur ist in der 7 veranschaulicht, die ein Beispiel eines kleinen Dreiecksgitters 70 ist. Die 7 zeigt den Durchlauf von Knotenpunkten eines 2D-Dreiecksgitters und die Reihenfolge der zu codierenden Knotenpunkte. Als Erstes werden die Grenzknoten p0 ... p9 entsprechend der Verbindungsart besucht, d. h., dass der nächste Knoten immer der nächste verbundene Knoten an der Grenze in der Gegenuhrzeigerrichtung ist. Dann werden die inneren Knoten p10 ... p14 entsprechend der Nähe besucht, d. h., dass der nächste Knoten immer der nächstliegende Knoten ist, der noch nicht codiert ist. Es werden die Gesamtanzahl der Knoten und die Anzahl der
    Figure 00090001
    malem Wert xn + yn definiert ist, wobei angenommen ist, dass der Ursprung des Ortskoorrdinantensystems oben links liegt. Wenn mehr als ein Punkt mit demselben Wert von xn + yn vorliegt, wird der Knotenpunkt mit Minimalwert
    Figure 00090002
    diert; dann werden alle anderen Grenzknoten auf ähnliche Weise codiert.
  • Dann wird der noch nicht codierte innere Knoten, der dem letzten Grenzknoten am nächsten liegt, aufgefunden, und es wird die Differenz zwischen diesen codiert. Dieser Knoten ist als der noch nicht codierte Knoten n mit dem Minimalwert von |xn – xlast| + |yn – ylast| definiert, wobei (xlast, ylast) die Koordinaten des zuvor codierten Knotens repräsentieren. Dann wird der noch nicht codierte Knoten, der dem zuletzt codierten Knoten am nächsten liegt, aufgefunden und die Differenz wird codiert, usw. Jeder Knotenpunkt verfügt über eine x- und eine y-Koordinate,
    Figure 00100001
    von denen jede von der entsprechenden Koordinate des zuvor codierten Knotenpunkts subtrahiert wird. Die zwei sich ergebenden Differenzwerte werden unter Verwendung einer Codierung mit variabler Länge (VLC) codiert. Bei einer speziellen Ausführungsform der Erfindung werden Codes variabler Länge verwendet, wie sie von MPEG-4 zum Codieren von Sprite(in einer Grafik freibewegliche Figur)-Trajektorien spezifiziert sind. Im Prinzip können spezielle Codes mit variabler Länge konzipiert werden.
  • Codierung von Knotenbewegungsvektoren
  • Figure 00100002
  • ..., N – 1 codiert. Es ist zu beachten, dass die Dreieckstopologie des Gitters über die ganze Sequenz hinweg dieselbe bleibt.
  • Nun werden zwei alternative Verfahren zur Codierung von Knotenbewegungsvektoren beschrieben, die beide eine Vorhersagecodierung der Knotenbewegungsvektoren beinhalten. Zur Vorhersagecodierung von Bewegungsvektoren gehört die Vorhersage jedes Bewegungsvektors mittels eines oder mehrerer bereits codierter Bewegungsvektoren anderer Knotenpunkte im Gitter; anschließend wird die Differenz zwischen dem vorhergesagten Vektor und dem tatsächlichen Bewegungsvektor an Stelle des Originals codiert. Das erste Verfahren, das Verfahren I, verwendet nur einen bereits codierten Bewegungsvektor zum Vorhersagen des Werts eines speziellen Bewegungsvektors. Das zweite Verfahren, das Verfahren II, verwendet zwei bereits codierte Bewegungsvektoren zum Vorhersagen des Werts eines speziellen Bewegungsvektors. Die Verfahren unterscheiden sich auch hinsichtlich der Wahl der Vorhersage-Bewegungsvektoren; beim Verfahren I ist der Vorhersage-Bewegungsvektor als solcher mit einer einfachen Knotenpunkt-Reihenfolge definiert; beim Verfahren II werden die Vorhersage-Bewegungsvektoren unter Verwendung eines Umfang-zuerst-Durchlaufs des Gitters definiert. Es ist zu beachten, dass die Bitstromsyntax zur Gitterbewegungscodierung, wie in der Tabelle 6 definiert, für das Verfahren I und das Verfahren II gleich ist.
  • Verfahren 2
  • Es wird eine eindeutige Reihenfolge verfügbarer Knotenpunkte
    Figure 00110001
    angenommen, wobei n die Reihenfolgenummer bezeichnet. Wenn das Gitter ein solches vom Delaunay-Typ ist, wie in der 7 dargestellt, ist die Reihenfolge einfach als diejenige Reihenfolge definiert, in der die Knotenpunktorte während der Gittergeometriecodierung codiert werden; d. h., dass der Knoten
    Figure 00110002
    tergeometriecodierung verwendete Reihenfolge beruht auf einem Durchlauf des Anfangsgitters, bei dem die Grenzknoten als erste besucht werden und dann die inneren Knoten besucht werden, wie bereits beschrieben.
  • Wenn das Gitter ein solches von gleichmäßigem Typ ist, wie in der 8 dargestellt, wird die Knotenreihenfolge auf Grundlage der Gitterstruktur wie folgt definiert. Der erste Knotenpunkt in der Reihenfolge
    Figure 00110003
    ist der Knotenpunkt, der ganz oben links im gleichmäßigen Gitter liegt; die folgenden Knotenpunkte in der Reihenfolge werden dadurch erhalten, dass die Knotenpunkte des gleichmäßigen Gitters von links nach rechts in der ersten (obersten) Reihe von Knotenpunkten durchlaufen werden; dann zum Knoten in der zweiten Reihe von Knoten unmittelbar unter dem letzten Knoten der ersten Reihe übergegangen wird; dann die zweite Reihe von rechts nach links durchlaufen wird; dann zur dritten Reihe von Knoten übergegangen wird und die dritte Reihe von links nach rechts durchlaufen wird, usw. Diese Reihenfolge ist durch einen einfachen Durchlauf des gleichmäßigen Gitters definiert.
  • Für jeden Knotenpunkt im Gitter wird ein Bitflag, das node_motion_vector_flag, codiert, um zu spezifizieren, ob dieser Knotenpunkt einen von null abweichenden Bewegungsvektor aufweist. Für jeden Knotenpunkt im Gitter mit einem von null abweichenden Bewegungsvektor wird ein Bewegungsvektor-Differenzvektor
    Figure 00110004
    codiert, um die Differenz zwischen dem Bewegungsvektor dieses Knotens und dem zuvor codierten Bewegungsvektor zu spezifizieren.
  • So ist der Codierprozess der Folgende. Die Bewegungsvektoren aller Knotenpunkte
    Figure 00110005
    n = 0, ..., N – 1 sind wie folgt definiert
    Figure 00110006
  • Wenn der erste Knotenpunkt in der oben definierten Reihenfolge einen Bewegungsvektor vom Wert null aufweist, d. h., wenn
    Figure 00120001
    gilt, werden für diese Knotenpunkt keine ewegungsvektordaten codiert. Wenn der erste Knoeinen von null abweichenden Bewegungsvektor aufweist, wird ein Vektor
    Figure 00120002
    definiert, des ersten Knotenpunkts entspricht:
    Figure 00120003
  • Der Vektor
    Figure 00120004
    wird durch VLC seiner x- und seiner y-Komponente codiert. Für alle anderen Knotenpunkte in der oben definierten Reihenfolge ist der Codierprozess der Folgende:
    Figure 00120005
    tordaten codiert. Andernfalls wird aus dem zuvor codierten Bewegungsvektor und dem aktuellen Bewegungsvektor durch die folgende Gleichung ein Bewegungsvektor-Differenzvektor
    Figure 00120006
    berechnet:
    Figure 00120007
  • Dann wird der Vektor
    Figure 00120008
    durch Codierung mit variabler Länge seiner x- und seiner y-Komponente codiert. So werden, um die tatsächlichen Bewegungsvektoren zu codieren, Differenzvektoren
    Figure 00120009
    einzeln in der oben spezifizierten Reihenfolge codiert.
  • Verfahren II: Bewegungsvektorvorhersage
  • Da Verfahren beruht auf einer Vorhersagecodiertechnik, bei der zwei Bewegungsvektoren zum Berechnen eines Vorhersagewerts verwendet werden. Die Vorhersagecodiertechnik des Verfahrens II nutzt speziell die folgende Technik der Bewegungsvektorvorhersage. Um den Bewegungsvektor eines Knoten
    Figure 00120010
    vorherzusagen und den Vorhersagefehlerwert zu codieren. Ausgehend von einem Anfangsdreieck tk, für das alle drei Knotenbewegungsvektoren codiert wurden, muss mindestens ein anderes, benachbartes Dreieck tw vorhanden sein, das über zwei mit tk gemeinsame Knoten verfügt. Da die Bewegungsvektoren der zwei Knoten, die tk und tw gemeinsam haben, bereits codiert sind, kön nen diese zwei Bewegungsvektoren dazu verwendet werden, den Bewegungsvektor des dritten Knotens in tw vorherzusagen. Der tatsächliche Vorhersagevektor
    Figure 00130001
    wird durch Mitteln der zwei Vorhersagebewegungsvektoren berechnet, und die Komponenten des Vorhersagewerts werden mit Halbpixelgenauigkeit gerundet, was wie folgt geschieht:
    Figure 00130002
  • Diese Vorhersageformel wird für alle Bewegungsvektoren verwendet, außer für die Codierung des ersten und des zweiten Codierungsvektors. Wenn der erste Bewegungsvektor codiert wird, wird der Vorhersagevektor auf den Nullvektor gesetzt:
    Figure 00130003
    Wenn der zweite Bewegungsvektor codiert wird, wird der Vorhersagevektor auf den ersten codierten Bewegungsvektor gesetzt:
    Figure 00130004
  • Für jeden Knotenpunkt n wird ein Vorhersagefehlervektor
    Figure 00130005
    dadurch berechnet, dass die Differenz zwischen dem Vorhersagevektor und dem tatsächlichen Bewegungsvektor gebildet wird.
  • Figure 00130006
  • Jeder Vorsagefehlervektor wird unter Verwendung einer Codierung mit variabler Länge codiert. Diese Prozedur wird wiederholt, während die Dreiecke und Knoten des Gitters durchlaufen werden, wie unten erläutert.
  • Es ist zu beachten, dass der Vorhersagefehlervektor nur für Knotenpunkte mit einem von null abweichenden Bewegungsvektor codiert wird. Für alle anderen Knotenpunkte ist der Bewegungsvektor einfach
    Figure 00130007
    . Das zuvor angegebene node_motion_vector_flag wird dazu verwendet, zu spezifizieren, ob ein Knoten einen von null abweichenden Bewegungsvektor aufweist oder nicht.
  • Verfahren II: Gitterdurchlauf
  • Um alle Dreiecke und Knoten im Gitter mit der Nummer k zu besuchen und um die vom Gitter k zum Gitter k + 1 definierten Bewegungsvektoren zu codieren wird ein Umfang-zuerst-Durchlauf verwendet. Der Umfang-zuerst-Durchlauf ist ein eindeutig definierter Durchlauf des Gitters in solcher Weise, dass jedes Dreieck genau einmal durchlaufen wird jeder Knoten mindestens einmal besucht wird. Dieser Durchlauf ist durch die Topologie des Gitters bestimmt, die dem Codierer dauernd bekannt ist und die dem Decodierer bekannt ist, sobald er einmal das Anfangsgitter decodiert hat, so dass der Durchlauf des Gitters sowohl im Codierer als auch im Decodierer auf genau dieselbe Weise ausgeführt werden kann.
  • Der Umfang-zuerst-Durchlauf der Gitterdreiecke ist wie folgt definiert, und er ist in der 9 veranschaulicht und allgemein mit 90 gekennzeichnet. Zunächst wird ein Anfangsdreieck 92 wie folgt definiert der Gitterknoten 94 oben links wird als Knoten n mit dem Minimalwert xn + yn definiert, wobei davon ausgegangen wird, dass der Ursprung des Ortskoordinatensystems oben links liegt. Wenn mehr als ein Knoten mit demselben Wert von xn + yn vorliegt, wird unter diesen Knotenpunkten derjenige mit dem Minimalwert von y ausgewählt. Der Rand 96 zwischen dem Gitterknoten oben links und dem nächsten Knoten 98 in der Uhrzeigerrichtung entlang der Grenze ist ein Rand des als Anfangsdreieck spezifizierten Dreiecks. Das Anfangsdreieck wird mit der Zahl null markiert.
  • Als Zweites werden alle anderen Dreiecke iterativ mit Zahlen 1, 2, ..., M – 1 markiert, wobei M die Anzahl der Dreiecke im Gitter ist. Unter allen markierten Dreiecken, die über benachbarte Dreiecke verfügen, die noch nicht markiert sind, wird das Dreieck mit der Markierung mit der niedrigsten Nummer aufgefunden. Dieses Dreieck wird nachfolgend wird nachfolgend als aktuelles Dreieck 100 bezeichnet. Bei der ersten Iteration wird das Anfangsdreieck zum aktuellen Dreieck. Der Basisrand dieses Dreiecks wird als Rand definiert, der das Dreieck mit dem bereits markierten benachbarten Dreieck mit der niedrigsten Zahl verbindet. Im Fall des Anfangsdreieck ist der Basisrand als Rand zwischen dem Knoten oben links und dem nächsten Knoten entlang der Grenze in der Uhrzeigerrichtung definiert. Es wird der rechte Rand des aktuellen Dreiecks als nächster Rand in der Gegenuhrzeigerrichtung in Bezug auf den Basisrand definiert; außerdem wird der linke Rand als nächster Rand in der Uhrzeigerrichtung in Bezug auf den Basisrand defi
    Figure 00140001
  • Als Drittes wird ermittelt, ob ein nicht markiertes Dreieck benachbart zum aktuellen Dreieck liegt, wobei der rechte Rand gemeinsam vorliegt. Wenn ein derartiges Dreieck vorhanden ist, wird es mit der nächsten verfügbaren Zahl markiert. Es wird ermittelt, ob ein nicht markiertes Dreieck benachbart zum aktuellen Dreieck liegt, wobei der linke Rand gemeinsam ist. Wenn ein derartiges Dreieck existiert, wird es mit der nächsten verfügbaren Zahl markiert. Dieser Prozess wird iterierend fortgesetzt, bis alle Dreiecke mit einer eindeutigen Zahl m markiert sind. Es wird nun auf die 9 Bezug genommen, in der ein Umfang-zuerst-Durchlauf für ein beispielhaftes 2D-Dreiecksgitter dargestellt ist. Der Durchlauf erfolgte bereits halb durch das Gitter – es wurden fünf Dreiecke markiert (mit Zahlen) und die Bewegungsvektoren von sechs Knotenpunkte wurden codiert (mit einem Kästchensymbol markiert). Das mit '3' markierte Dreieck ist das 'aktuelle Dreieck"; der Basisrand ist 'b'; der linke und der rechte Rand sind 'r' und '1'. Die Dreiecke, die als Nächstes markiert werden, sind die Dreiecke, die den rechten bzw. linken Rand mit dem aktuellen Dreieck gemeinsam haben. Nachdem diese Dreiecke markiert sind, ist das mit '4' markierte Dreieck das nächste 'aktuelle Dreieck' und es wird ein weiterer Bewegungsvektor codiert.
  • Die Reihenfolge der Dreiecke entsprechend den ihnen zugewiesenen Markierungszahlen definiert implizit die Reihenfolge, in der die Bewegungsvektordaten jedes Knotenpunkt codiert werden. Zunächst werden Bewegungsvektordaten für den Knoten oben links im Gitter codiert. Für den Bewegungsvektor dieses Knotens wird keine Vorhersage verwendet, so dass dessen Daten den Bewegungsvektor selbst spezifizieren. Dann werden Bewegungsvektordaten für den zweiten Knoten, der in der Uhrzeigerrichtung der nächste Knoten an der Grenze in Bezug auf den Knoten oben links ist, codiert. Diese Daten enthalten den Vorhersagefehler für den Bewegungsvektor dieses Knotens, wobei der Bewegungsvektor des Knotens oben links als Vorhersagewert verwendet wird. Diese erste zwei Knoten, die den Basisrand des Anfangsdreiecks bilden, werden mit der Markierung 'erledigt' markiert.
  • Während jeder Iteration des Umfang-zuerst-Durchlaufs werden, wie oben beschrieben, ausgehend vom Anfangsdreieck, die Bewegungsvektoren der zwei Knoten, die sich am selben Basisrand des aktuellen Dreiecks während dieser Iteration befinden, dazu verwendet, eine Vorhersage für den Bewegungsvektor des dritten Knotens dieses Dreiecks zu erzeugen. Wenn dieser dritte Knoten noch nicht mit 'erledigt' markiert ist, werden Vorhersagefehlerwerte dadurch berechnet, dass der Vorhersagewert vom aktuellen Bewegungsvektor subtrahiert wird, und die Bewegungsvektordaten werden durch VLC codiert.
  • Der dritte Knoten wird mit 'erledigt' markiert. Wenn der dritte Knoten bereits mit 'erledigt' markiert ist, wird er einfach ignoriert und es werden keine Daten codiert. Es ist zu beachten, dass wegen der Art des Durchlaufprozesses garantiert ist, dass die zwei Knoten am Basisrand des Dreiecks mit 'erledigt' markiert sind, wenn das Dreieck das 'aktuelle Dreieck' wird, was anzeigt, dass die zugehörigen Bewegungsvektoren bereits codiert sind und sie als Vorhersagewerte verwendet werden können. In der Tabelle 1 sind Bewegungsvektoren und Dreieckswarteschlange-Zustände für die Codierungsschritte des Verfahrens dargestellt.
  • Tabelle 1
    Figure 00160001
  • Der Umfang-zuerst-Durchlauf der Dreiecke und das Codieren der Knoten-Bewegungsvektordaten können gleichzeitig dadurch ausgeführt werden, dass eine Zuerst-ein-zuerst-aus(FIFO)-Schlange von Dreiecken verwendet wird. Es ist jedoch zu beachten, dass die folgende Beschreibung einer bevorzugte Ausführungsform der Erfindung dient und dass die Realisierung des Bewegungsvektor-Codierprozesses unter Verwendung einer Dreieckswarteschlange nur einer von mehreren Arten zum Realisieren eines Umfang-zuerst-Durchlaufs entspricht.
  • Die FIFO-Schlange wird dazu verwendet, zeitweilig Dreiecke tk einzuspeichern, wobei jedes Dreieck als geordnetes Tripel von Knotenpunkten tk =
    Figure 00160002
    so spezifiziert ist, dass die Knotenpunkte des Dreiecks in einer Reihenfolge in der Uhrzeigerrichtung gespeichert werden, wobei der erste und der zweite Knotenpunkt immer dem Basisrand des Dreiecks entsprechen.
  • Der Knoten oben links im Gitter und sein Nachbarknoten entlang der Grenze, in der Uhrzeigerrichtung, definieren zusammen das Anfangsdreieck beim Durchlauf. Die diesen zwei Knoten zugeordneten Bewegungsvektoren werden auf die oben beschriebene Weise codiert. Die (anfänglich leere) FIFO-Schlange wird nun dadurch initialisiert, dass das Anfangsdreieck am Ende angehängt wird. Ferner wird das Anfangsdreieck mit der Zahl null markiert und seine zwei bereits verarbeiteten Knoten werden als 'erledigt' markiert. Als Nächstes wird die FIFO-Schlange wie folgt verarbeitet, bis sie leer ist.
  • Das geordnete Tripel
    Figure 00170001
    das sich am Kopf der Schlange befindet, wird aus dieser entfernt. Der Basisrand, der rechte Rand und der linke Rand dieses Dreiecks können unmittelbar aus diesem Tripel identifiziert werden. Wenn der dritte Knoten
    Figure 00170002
    als 'erledigt' markiert ist, erfolgt keine weitere Aktion; andernfalls wird ein Vorhersagevektor unter Verwendung der bereits codierten Bewegungsvektoren, die den ersten zwei
    Figure 00170003
    diert. Der betroffene Knotenpunkt wird nun mit 'erledigt' markiert. Es wird ermittelt, ob tk über ein benachbartes Dreieck verfügt, das den rechten Rand gemeinsam hat, ohne bisherige Markierung. Wenn ein derartiges Dreieck vorhanden ist, wird es mit einer neuen Zahl markiert und an die Enden der Schlange angefügt. Es wird ermittelt, ob tk über ein benachbartes Dreieck verfügt, das den linken Rand gemeinsam hat, ohne bisherige Markierung. Wenn ein derartiges Dreieck existiert, wird es mit einer neuen Zahl markiert und an das Ende der Schlange angehängt.
  • Wenn alle Dreiecke mit einer Zahl markiert wurden, werden keine weiteren Dreiecke mehr an die Schlange angehängt. Wenn die Schlange leer ist, sind alle Dreiecke verarbeitet und alle Knotenbewegungsvektoren sind codiert.
  • Da jedes Dreieck im Gitter über mindestens einen angrenzenden Nachbar verfügt und da Dreiecke markiert werden, wenn sie besucht werden, wird jedes Dreieck genau einmal besucht und der Durchlauf endet dann (und nur dann), wenn alle Dreiecke besucht sind. Der Umfang-zuerst-Durchlauf von Dreiecken definiert die Reihenfolge, gemäß der Knotenpunkte besucht werden. Knotenpunkte können mehr als einmal besucht werden, jedoch werden ihre Bewegungsvektoren nur beim ersten Besuch eines Knotens codiert. Jeder Knoten wird bei der Codierung markiert, so dass kein Versuch erfolgt, den entsprechenden Bewegungsvektor erneut zu codieren. Die eindeutige Reihenfolge der Knotenpunkte entspricht der Reihenfolge der in den Bitstrom gegebenen Bewegungsvektordaten.
  • Der Umfang-zuerst-Durchlauf ist in der 10 für ein kleines Dreiecksgitter veranschaulicht, wobei ein Durchlauf von Dreiecken dargestellt ist, die wahlfrei mit t0, ..., t9 markiert sind, wobei die entsprechende Reihenfolge
    Figure 00180001
    warteschlange wird mit t3 initialisiert und t3 wird markiert. Der tatsächliche Umfang-zuerst-Durchlauf des Gitters startet nun durch Entnehmen des vorderen Elements aus der langen, in diesem Fall t3. Der Bewegungsvektor
    Figure 00180002
    Vorhersagewerte codiert, wobei der Vorhersagefehler in den Bitstrom gegeben wird. Der Knoten
    Figure 00180003
    wird mit 'erledigt' markiert. Der nächste Schritt besteht im Anfügen irgendwelcher Dreiecke benachbart zum aktuellen Dreieck t3, die noch nicht markiert sind, an die Dreiecks-Warteschlange. Das Dreieck rechts vom aktuellen Dreieck (in diesem Fall t5) wird als Erstes angehängt; dann das Dreieck auf der linken Seite (in diesem Fall t0); beide werden markiert.
  • Die nächste Iteration des Durchlaufs beginnt mit dem Entfernen des vorderen Elements aus der Warteschlange, in diesem Fall t5. Der Bewegungsvektor
    Figure 00180004
    Vorhersagewerten codiert, wobei der Vorhersagefehler aus dem Strom abgerufen wird. Der Knoten
    Figure 00180005
    wird als 'erledigt' markiert, und das verbundene Dreieck t8 wird an die Dreiecks-Warteschlange angehängt und markiert.
  • Derartige Iterationen dauern an, bis die Dreiecks-Warteschlange leer ist und alle Knotenbewegungsvektoren codiert sind. Die Schritte des Algorithmus sind in der Tabelle 1 veranschaulicht.
  • 2D-Gitterdecodierer
  • Gemäß der MPEG-4-Syntax, die hier später beschrieben wird, und unter erneuter Bezugnahme auf die 4 und die Tabellen 3–6 wird, nachdem mesh_object_start_code durch den Gitterdecodierer 40 decodiert wurde, eine Sequenz von Gitterobjektebenen codiert, bis_mesh_object_end_code erkannt wird. Das new_mesh_flag der Gitterobjektebenenklasse bestimmt, ob die folgenden Daten die Anfangsgeometrie eines neuen dynamischen Gitters spezifizieren, in welchem Fall die Daten an den Geometriedetektor 42 geliefert werden, oder ob sie die Bewegung von Knoten aus dem vorigen Gitter in das aktuelle Gitter in einer Abfolge von Gittern spezifizieren, in welchem Fall die Daten an den Bewegungsvektordecodierer 44 geliefert werden.
  • Nachfolgend wird die Decodierung der Gittergeometrie beschrieben, gefolgt von einer Beschreibung der Decodierung einer Gitterbewegung. Diese Beschreibung ist von allgemeiner Art, und sie kann unter Verwendung einer beliebigen anderen Syntax als der hier bei der bevorzugten Ausführungsform spezifizierten MPEG-4-Syntax realisiert werden.
  • Decodierung der Gittergeometrie
  • Da das anfängliche 2D-Dreiecksgitter entweder ein gleichmäßiges Gitter oder ein Delaunay-Gitter ist, wird die Gitterdreiecks-Topologie (Verbindungen zwischen Knotenpunkten) nicht codiert; es werden nur die 2D-Knotenpunktkoordinaten
    Figure 00190001
    codiert. Mesh_type_code (Tabelle 8) spezifiziert, ob das Anfangsgitter gleichmäßig oder vom Delaunay-Typ ist.
  • Gleichmäßiges Gitter
  • Wie bereits ausgeführt, spezifizieren fünf Parameter die Geometrie eines gleichmäßigen Gitters (Tabelle 5). Die zwei ersten decodierten Parameter spezifizieren die Anzahl der Knoten in der horizontalen bzw. vertikalen Richtung des gleichmäßigen Gitters. Die zwei nächsten decodierten Parameter spezifizieren die horizontale bzw. vertikale Größe jedes Rechtecks (das zwei Dreiecke enthält) in Einheiten, die auf halbe Pixeleinheiten genau sind. Der letzte Parameter spezifiziert, wie jedes Rechteck in zwei Dreiecke unterteilt wird.
  • Delaunay-Gitter
  • Als Erstes wird die Gesamtanzahl der Knotenpunkte im Gitter N decodiert; dann wird die Anzahl der Knotenpunkte auf der Grenze des Gitters Nb decodiert. Es wird darauf hingewiesen, dass N die Summe aus der Anzahl Ni der Knoten im Inneren des Gitters und der Anzahl Nb der Knoten auf der Grenze ist: N = Ni + Nb (8)
  • Dann werden die Orte von Knotenpunkten auf der Grenze und im Inneren decodiert. Der Ursprung des Ortskoordinatensystems wird oben links im Bildobjekt angenommen.
  • Es werden die x- und die y-Koordinate des ersten Knotenpunkts, mit einer Spezifizierung in Halbpixeleinheiten, unter Verwendung eines Codes fester Länge (FLC) decodiert. Alle anderen Knotenpunktorte werden dadurch berechnet, dass Differenzwerte zu bereits decodierten Knotenorten addiert werden. Inskesondere wird delta_x und delta_y zur x- bzw. zur y-Koordinate des zuvor decodierten Knotenorts addiert. Die Werte delta_x und delta_y werden jeweils dadurch decodiert, dass als Erstes ein Code variabler Länge (VLC) decodiert wird, der ihre jeweiligen Längen delta_x_len_vic und delta_y_len_vic spezifiziert, und dann ihre Werte decodiert werden. So
    Figure 00200001
    dadurch bestimmt, dass ein decodierter Wert zu den zuvor decodierten Knotenpunktkoordinaten addiert wird: xn = xn-1 + dxn und yn = yn–1 + dyn. Die Differenzwerte werden unter Verwendung von Codes variabler Länge, wie im Codierer verwendet wurden, decodiert.
  • Die Reihenfolge innerhalb der Sequenz decodierter Orte ist dergestalt, dass die ersten Nb Orte den Grenzknoten (in der Gegenuhrzeigerrichtung) entsprechen. Demgemäß kann der Decodierer, nachdem er die ersten Nb Orte empfangen hat, die Grenze des Gitters dadurch rekonstruieren, dass er jedes Paar aufeinanderfolgender Grenzknoten, sowie den ersten und den letzten, durch geradlinige Randsegmente verbindet. Die nächsten N – Nb Werte in der Sequenz decodierter Orte entsprechen inneren Knotenpunkten. So können, nachdem N Knoten empfangen wurden, die Orte sowohl der Grenz- als auch der inneren Knoten rekonstruiert werden, zusätzlich zur Polygonform der Grenze. Dies ist in der 11 dargestellt, die decodierte Knotenpunkte (Rechtecke) und Gittergrenze-Randsegmente (gerade Linien) zeigt, die den Eingangswerten der eingeschränkten Delaunay-Triangulation entsprechen.
  • Schließlich wird das Gitter dadurch erhalten, dass auf die Gruppe decodierter Knotenpunkte eine eingeschränkte Delaunay-Triangulation angewandt wird, wobei die Randsegmente an der Gittergrenze als Grenzwerte verwendet werden. Die Delaunay-Triangulation läuft dadurch ab, dass ein Rand zwischen zwei Knotenpunkten eingesetzt wird, wenn durch diese zwei Knotenpunkte ein Kreis verläuft, der in seinem Inneren keinen anderen Knotenpunkt enthält und keinen anderen Knotenpunkt schneidet. Die Randsegmente an der Grenze repräsentieren die einzigen Ausnahmen zu dieser Definition, und sie sollen im Prozess nicht entfernt werden. Ein Beispiel für ein durch eingeschränkte Triangulation der Knotenpunkte der 11 erhaltenes Gitter ist in der 12 dargestellt.
  • Decodierung von Knotenbewegungsvektoren
  • Figure 00210001
  • ters mit der Nummer k + 1 zu rekonstruieren. Es ist zu beachten, dass die Dreieckstopologie des Gitters über die gesamte Sequenz von Gittern hinweg dieselbe bleibt.
  • Wie bereits im Abschnitt mit der Überschrift "Codieren von Knotenbewegungsvektoren" erläutert, wurden zwei Verfahren zur Bewegungscodierung beschrieben. Demgemäß werden nun zwei Verfahren zur Bewegungsvektordecodierung beschrieben, die als Verfahren I und Verfahren II gekennzeichnet werden.
  • Verfahren I
  • Das Verfahren I beruht auf einer vorhersagenden Codierungstechnik, bei der nur ein Bewegungsvektor als Vorhersagewert verwendet wird. Es ist eine eindeutige Reihenfolge der Knotenpunkte
    Figure 00210002
    verfügbar, wobei n die Reihenfolgenummer bezeichnet. Wenn das Gitter ein solches vom Delaunay-Typ repräsentiert, ist diese Reihenfolge einfach als diejenige Reihenfolge definiert, in der die Knotenpunktsorte während der Gittergeometriedecodierung empfangen wurden. Der Knotenpunkt, für den der Ort als Erster empfangen
    Figure 00210003
    Knotenreihenfolge auf Grundlage der Gitterstruktur definiert, wie bereits im Abschnitt mit dem Titel "Codierung von Knotenbewegungsvektoren: Verfahren I" beschrieben. Diese Reihenfolge, die durch einen einfachen Durchlauf des gleichmäßigen Gitters definiert ist, ist in der 8 veranschaulicht.
  • Für jeden Knotenpunkt im Gitter spezifiziert ein 1-Bit-Flag, ob dieser Knotenpunkt über einen von null abweichenden Bewegungsvektor verfügt. Für jeden Knotenpunkt im Gitter mit einem von null abweichenden Bewegungsvektor spezifiziert ein Bewegungsvektor-Differenzvektor
    Figure 00220001
    die Differenz zwischen dem Bewegungsvektor dieses Knotens und dem zuvor decodierten Bewegungsvektor. Der Decodierprozess ist der Folgende: um die Bewegungsvektoren zu decodieren, werden die Vektoren
    Figure 00220002
    einzeln aus dem Bitstrom abgerufen und dazu verwendet, die neuen Orte von Knotenpunkten in der oben spezifizierten Reihenfolge zu berechnen. Wenn der erste Knotenpunkt in der Reihenfolge einen Bewegungsvektor vom Wert null aufweist, gilt:
    Figure 00220003
  • Wenn der erste Knotenpunkt in der Reihenfolge einen von null abweichenden Bewegungsvektor aufweist, wird der erste Vektor
    Figure 00220004
    aus dem Bitstrom abgerufen, und er spezifiziert direkt den Bewegungsvektor des ersten Knotenpunkts:
    Figure 00220005
  • Der neue Ort des ersten Knotenpunkts wird wie folge erhalten
  • Figure 00220006
  • Alle anderen aus dem Bitstrom abgerufenen Vektoren
    Figure 00220007
    sind Bewegungsvektor-Differenzvektoren, die zum zuvor decodierten Bewegungsvektor addiert werden, um den aktuellen Bewegungsvektor zu erhalt
    Figure 00220008
    n = 1, ..., N – 1 einen Bewegungsvektor vom Wert null aufweist, gilt:
    Figure 00220009
    während andernfalls gilt:
    Figure 00220010
  • Der neue Ort der Knotenpunkte
    Figure 00220011
    n = 1, ..., N – 1 wird wie folgt erhalten:
    Figure 00220012
  • Verfahren II: Bewegungsvektorvorhersage
  • Das Verfahren II beruht auf einer vorhersagenden Codiertechnik, bei der zwei Bewegungsvektoren zum Berechnen eines Vorhersagewerts verwendet werden. Die vorhersagende Decodiertechnik des Verfahrens II verwendet speziell
    Figure 00230001
    Vorhersagefehlerwert zu decodieren. Ausgehend von einem Anfangsdreiecke tk, von dem alle drei Knotenbewegungsvektoren decodiert wurden, muss mindestens ein anderes, benachbartes Dreieck tw vorhanden sein, das zwei Knoten mit tk gemeinsam hat. Da die Bewegungsvektoren der zwei Knoten, die tk und tw gemeinsam haben, bereits decodiert wurden, können diese zwei Bewegungsvektoren dazu verwendet werden, den Bewegungsvektor des dritten Knotens in tw vorherzusagen. Der tatsächliche Vorhersagevektor
    Figure 00230002
    wird durch Mitteln der zwei Vorhersagebewegungsvektoren berechnet, und die Komponenten des Vorhersagevektors werden wie folgt auf Halbpixelgenauigkeit gerundet:
    Figure 00230003
  • Der Bewegungsvektor selbst wird wie folgt berechnet:
    Figure 00230004
    wobei
    Figure 00230005
    den Vorhersagefehlervektor bezeichnet, dessen Komponenten aus Codes variabler Länge decodiert werden. Diese Prozedur wird wiederholt, während die Dreiecke und die Knoten des Gitters durchlaufen werden, wie unten erläutert. Während alle Dreiecke des Gitters besucht werden, werden die Bewegungsvektordaten jedes Knotens einzeln aus dem Bitstrom decodiert. Es ist zu beachten, dass zum Decodieren des ersten Bewegungsvektors keine Vorhersage verwendet wird:
    Figure 00230006
    und das nur der erste codierte Bewegungsvektor als Vorhersagewert zum Codieren des zweiten Bewegungsvektors verwendet wird:
    Figure 00230007
  • Es ist zu beachten, dass der Vorhersagefehlerwert nur für Knotenpunkte mit einem von null abweichenden Bewegungsvektor spezifiziert wird. Für alle anderen Knotenpunkte ist der Bewegungsvektor einfach
  • Figure 00240001
  • Verfahren II: Gitterdurchlauf
  • Es wird ein Umfang-zuerst-Durchlauf dazu verwendet, alle Dreiecke und Knoten im Gitter mit der Nummer k zu besuchen und die Bewegungsvektoren zu decodieren, die vom Gitter k zum Gitter k + 1 definiert sind. Der Umfangzuerst-Durchlauf der Dreiecke ist im Abschnitt "Codieren von Knotenbewegungsvektoren: Verfahren II" definiert, und er kann in ähnlicher Weise bei der Decodierphase angewandt werden.
  • Die Reihenfolge der Dreiecke entsprechend ihren Markierungszahlen, die ihnen während des Umfang-zuerst-Durchlaufs zugewiesen werden, definiert implizit die Reihenfolge, gemäß der die Bewegungsvektordaten für jeden Knotenpunkt decodiert werden, wie nachfolgend beschrieben. Zunächst werden aus dem Bitstrom Bewegungsvektordaten für den Knoten oben links im Gitter abgerufen. Für den Bewegungsvektor dieses Knotens wird keine Vorhersage verwendet, und demgemäß spezifiziert dieser Datenwert den Bewegungsvektor selbst. Bewegungsvektordaten für den zweiten Knoten, der der nächste Knoten auf der Grenze in der Uhrzeigerrichtung in Bezug auf den Knoten oben links ist, werden aus dem Bitstrom abgerufen. Diese Daten enthalten den Vorhersagefehler für den Bewegungsvektor dieses Knotens, wobei der Bewegungsvektor des Knotens oben links als Vorhersagewert verwendet wird. Diese ersten beiden Knoten (die den Basisrand des Anfangsdreiecks bilden) werden mit der Markierung 'erledigt' markiert.
  • Während jeder Iteration des oben beschriebenen Umfang-zuerst-Durchlaufs, und ausgehend vom Anfangsdreieck, werden die Bewegungsvektoren der zwei Knoten, die sich auf dem Basisrand des aktuellen Dreiecks während dieser Iteration befinden, dazu verwendet, einen Vorhersagewert für den Bewegungsvektor des dritten Knotens dieses Dreiecks zu erzeugen. Wenn dieser dritte Knoten noch nicht mit 'erledigt' markiert ist, werden Bewegungsvektordaten aus dem Bitstrom abgerufen und als Vorhersagefehlerwerte verwendet, d. h., dass die codierte Werte zum Vorhersagewert addiert werden, um den aktuellen Bewegungsvektor zu erhalten. Dann wird dieser dritte Knoten mit 'erledigt' markiert. Wenn der dritte Knoten bereits mit 'erledigt' markiert wird er einfach ignoriert und es werden keine Daten aus dem Bitstrom abgerufen. Auf Grund der Art des Durchlaufprozesses ist gewährleistet, dass die zwei Kno ten auf dem Basisrand eines Dreiecks als 'erledigt' markiert sind, wenn dieses Dreieck zum "aktuellen Dreieck2 wird, was anzeigt, dass seine Bewegungsvektoren bereits decodiert wurden und als Vorhersagewerte verwendet werden können.
  • Da jedes Dreieck in Gitter über mindestens einen angrenzenden Nachbar verfügt und da Dreiecke markiert werden, wenn sie besucht werden, wird jedes Dreieck genau einmal besucht, und der Durchlauf endet dann (und nur dann), wenn alle Dreiecke besucht sind. Knotenpunkte können mehr als einmal besucht werden, jedoch werden ihre Bewegungsvektoren nur beim ersten Besuch eines Knotens decodiert, und jeder Knoten wird beim Decodieren markiert, weswegen kein Versuch erfolgt, den entsprechenden Bewegungsvektor erneut zu decodieren. Die eindeutige Reihenfolge der Knotenpunkte entspricht der Reihenfolge der im Bitstrom vorhandenen Bewegungsvektordaten.
  • Ähnlich wie in der Codierphase können der Umfang-zuerst-Durchlauf der Dreiecke und das Decodieren der Knotenbewegungsvektordaten gleichzeitig unter Verwendung einer Zuerst-ein-zuerst-aus(FIFO)-Schlange von Dreiecken ausgeführt werden. Zu Einzelheiten wird auf den obigen Abschnitt "Codierung von Knotenbewegungsvektoren" und die 10 verwiesen, die den Umfang-zuerst-Durchlaufprozess während des Decodierens eines kleinen Dreiecksgitters veranschaulicht. Die 10 zeigt den Durchlauf von Dreiecken, die wahlfrei als t0, ..., t9 markiert sind, und die entsprechende Reihenfolge der
    Figure 00250001
    ecks-Warteschlange wird mit t3 initialisiert, und dann wird t3 markiert.
  • Der tatsächliche Umfang-zuerst-Durchlauf des Gitters beginnt durch Entfernen des vorderen Elements aus der Schlange, in diesem Fall t3. Nun wird der
    Figure 00250002
    als Vorhersagewerten und durch Abrufen des Vorhersagefehlers aus dem Bitstrom decodiert. Der Knoten
    Figure 00250003
    wird als 'erledigt' markiert. Der nächste Schritt besteht darin, irgendwelche Dreiecke angrenzend an das aktuelle Dreieck t3, die noch nicht markiert sind, in der Dreiecks-Warteschlange anzufügen. Das Dreieck rechts vom aktuellen Dreieck (in diesem Fall t5) wird als Erstes angehängt; dann das Dreieck auf der linken Seite (in diesem
  • Fall t0); beide werden markiert. Die nächste Iteration des Durchlaufs beginnt durch Entfernen des vorderen Elements aus der Schlange, in diesem
    Figure 00260001
    kiert, und das verbundene Dreieck t8 wird an die Dreiecks-Warteschlange angehängt und markiert. Derartige Iterationen dauern fort, bis die Dreiecks-Warteschlange leer ist und alle Knotenbewegungsvektoren decodiert sind; die Schritte des Algorithmus sind auch in der Tabelle 2 veranschaulicht.
  • Tabelle 2
    Figure 00260002
  • Bitstromsyntax und -semantik
  • Das Folgende betrifft eine Realisierung der Erfindung innerhalb der aktuellen Version von MPEG-4 Working Draft (WD) V 5.0. Dieser Working Draft spezifiziert nur den Decodierprozess. Das Folgende ist ein objektorientierter Pseudocomputercode zum Realisieren des Decodierprozesses für sowohl die Gittergeometrie als auch Bewegungsvektoren entsprechend der Struktur der aktuellen Spezifikation von MPEG-4 WD V 5.0.
  • Mesh Object
  • Die Klasse Mesh Object definiert die Syntax für eine Sequenz von 2D-Gittern.
  • Tabelle 3
    Figure 00270001
  • Mesh Object Plane
  • Die Klasse Mesh Object Plane definiert die Syntax zum Codieren eines einzelnen 2D-Gitters, entweder als neues Gitter oder in Bezug auf das zuvor codierte Gitter.
  • Tabelle 4
    Figure 00270002
  • Die Klasse Mesh Geometry definiert die Syntax zum Codieren eines einzelnen 2D-Gitters, das entweder ein gleichmäßiges Gitter oder eine trianguliertes Delaunay-Gitter sein kann.
  • Tabelle 5
    Figure 00280001
  • Die Klasse Mesh Motion definiert die Syntax zum Codieren der 2D-Bewegungsvektoren des vorigen 2D-Gitters auf das aktuelle Gitter, um dadurch das aktuelle 2D-Gitter zu codieren.
  • Tabelle 6
    Figure 00280002
  • Semantik der Syntax
  • Die Gitter-Bitstromsyntax besteht aus zwei Teilen: der Gittergeometrie und der Gitterbewegung. Die Gittergeometrie wird nur dann codiert, wenn ein neues Gitter initialisiert werden muss; sie besteht aus den Anfangspositionen der Gitterknoten. Die Gitterbewegung wird zu folgenden Zeitpunkten codiert, um die Bewegung des dynamischen Gitters zu beschreiben; sie besteht aus einem Bewegungsvektor für jeden Gitterknoten.
  • Die Syntax eines dynamischen Gitters erlaubt die Codierung verschiedener Typen von 2D-Gitterstrukturen, z. B. gleichmäßigen oder Delaunay-eingeschränkten, sowie verschiedene Größenbereiche für die Knotenbewegungsvektoren. Die Genauigkeit der Knotenkoordinaten und des Knotenbewegungsvektors beträgt 0,5 Pixel. Der 1-Bit-Code marker_bit wird auf "1" gesetzt. Wenn dieses Bit auf "1" gesetzt wird, verhindert es eine Emulation von Startcodes.
  • mesh_object_start_code
  • Dies ist der Bitstring '000001BC' in Hexadezimalnotation. Er markiert den Start eines Gitterobjekts. Dies ein eindeutiger Bitstring mit einer Länge von 32 Bits zu Synchronisierzwecken.
  • mesh_object_end_code
  • Dies ist ein Bitstring in Hexadezimalnotation. Er markiert das Ende eines Gitterobjekts. Es handelt sich um einen eindeutigen Code einer Länge von 32 Bits zu Synchronisierzwecken.
  • mesh_object_plane_start_code
  • Dies ist der Bitstring '000001BD' in Hexadezimalnotation. Er markiert den Start einer Gitterobjektebene. Es ist ein eindeutiger Code einer Länge von 32 Bits zu Synchronisationszwecken.
  • new_mesh_flag
  • Dies ist ein 1-Bit-Code, der spezifiziert, ob ein neues Gitter zu initialisieren ist oder das aktuelle Gitter hinsichtlich des vorigen Gitters codiert wird.
  • Tabelle 7
    Figure 00300001
  • mesh_type_code
  • Dies ist ein 1-Bit-Code, der den Typ der anfänglich codierten Gittergeometrie spezifiziert.
  • Tabelle 8
    Figure 00300002
  • nr_of_mesh_nodes_hori
  • Dies ist ein 10-Bit-Code zum Spezifizieren der Anzahl der Knoten in einer Reihe eines gleichmäßigen Gitters.
  • nr_of_mesh_nodes_verti
  • Dies ist ein 10-Bit-Code zum Spezifizieren der Anzahl der Knoten in einer Spalte eines gleichmäßigen Gitters.
  • mesh_rect_size_hori
  • Dies ein 8-Bit-Code zum Spezifizieren der Breite eines Rechtecks eines gleichmäßigen Gitters (das zwei Dreiecke enthält) in Halbpixeleinheiten.
  • mesh_rect_size_verti
  • Dies ist ein 8-Bit-Code zum Spezifizieren der Höhe eines Rechtecks eines gleichmäßigen Gitters (das zwei Dreiecke enthält) in Halbpixeleinheiten. triangle split code Dies ist ein 2-Bit-Code zum Spezifizieren, wie Rechtecke eines gleichmäßigen Gitters aufgeteilt werden, um Dreiecke zu bilden.
  • Tabelle 9
    Figure 00310001
  • mr_of_mesh_nodes
  • Dies ist ein 16-Bit-Code zum Definieren der Gesamtanzahl der Knoten (Ecken) eines (ungleichmäßigen) Delaunay-Gitters. Zu diesen Knoten gehören sowohl innere als auch Grenzknoten.
  • nr_of_boundary_nodes
  • Dies ist ein 10-Bit-Codes zum Definieren der Anzahl von Knoten (Ecken) auf der Grenze eines (ungleichmäßigen) Delaunay-Gitters.
  • node0_x
  • Dies ist ein 10-Bit-Code zum Spezifizieren der x-Koordinate des ersten Grenzknotens (Ecke) eines Gitters im Halbpixeleinheiten in Bezug auf ein Ortskoordinatensystem.
  • node0_y
  • Dies ist ein 10-Bit-Code zum Spezifizieren der y-Koordinate des ersten Grenzknotens (Ecke) eines Gitters im Halbpixeleinheiten in Bezug auf ein Ortskoordinatensystem.
  • delta_x_len_vic
  • Dies ist ein Code variabler Länge zum Spezifizieren der Länge des folgenden Codes delta_x. Die Codes delta_x_len_vic und delta_x spezifizieren gemeinsam die Differen zwischen den x-Koordinaten eines Knotens (Ecke) und des zuvor codierten Knotens (Ecke). Die Definition der Codes delta_x_len_vic und delta_x ist in MPEG-4 Video Verification Model 7.0 (VM 7.0) (N1642, Abschnitt 4.7.1.1) (April 1997), nachfolgend als MPEG-4 VVM 7.0 bezeichnet, angegeben, wo sie zur Codierung von Spritetrajektorien verwendet werden.
  • delta_x
  • Dies ist ein Code fester Länge zum Definieren des Werts der Differenz zwischen den x-Koordinaten eines Knotens (Ecke) und des zuvor codierten Knotens (Ecke). Die Definition der Codes delta_x_len_vic und delta_x sind in MPEG-4 WM 7.0, Abschnitt 4.7.1.1, angegeben, wo sie zur Codierung von Spritetrajektorien verwendet werden.
  • delta_y_len_vic
  • Dies ist ein Code variabler Länge zum Spezifizieren der Länge des folgenden Codes delta_y. Die Codes delta_y_len_vic und delta_y spezifizieren gemeinsam die Differen zwischen den y-Koordinaten eines Knotens (Ecke) und des zuvor codierten Knotens (Ecke). Die Definition der Codes delta_y_len_vic und delta_x ist in MPEG-4 VVM 7.0 , Abschnitt 4.7.1.1), angegeben, wo sie zur Codierung von Spritetrajektorien verwendet werden.
  • delta_y
  • Dies ist ein Code fester Länge zum Definieren des Werts der Differenz zwischen den y-Koordinaten eines Knotens (Ecke) und des zuvor codierten Kno tens (Ecke). Die Definition der Codes delta_y_len_vic und delta_y sind in MPEG-4 VVM 7.0, Abschnitt 4.7.1.1, angegeben, wo sie zur Codierung von Spritetrajektorien verwendet werden.
  • motion_range_code
  • Dies ist ein 2-Bit-Code zum Spezifizieren des Dynamikbereichs von Bewegungsvektoren.
  • Tabelle 10
    Figure 00330001
  • node_motion_vector_flag
  • Dies ist ein 1-Bit-Code zum Spezifizieren, ob ein Bewegungsvektor folgt. Wenn ein Knoten über einen Bewegungsvektor vom Wert null verfügt, wird der Bewegungsvektor nicht codiert; statt dessen wird ein mode_motion_vector_flag mit dem Wert "0" geliefert. Wenn dieses Flag auf "1" gesetzt ist, bedeutet es, dass der Knoten über ein von null abweichenden Bewegungsvektor verfügt.
  • delta_mv_x_vic
  • Dies ist ein Code variabler Länge, der (gemeinsam mit delta_mv_x_res) den Wert der Differenz für die x-Komponente des Bewegungsvektors eines Knotens im Vergleich zur x-Komponente eines Vorhersagebewegungsvektors definiert. Der Abschnitt zum Decodierprozess beschreibt, wie der Vorhersagebewegungsvektor aufgefunden wird. Die Definition der Codes delta mv_x_vic und delta_mv_x_res ist in MPEG-4 VVM 7.0, Abschnitt 6.1.8 und 6.1.9, Tabelle 30, angegeben, wo sie zur Bewegungsvektordifferenz-Codierung verwendet werden.
  • delta_mv_x_res
  • Dies ist ein Code fester Länge zum Definieren des Rest betreffend die Differenz von Bewegungsvektoren, mit Codierung durch delta_mv_x_vic. Die Definition der Codes delta_mv_x_vic und delta_mv_x_res ist in MPEG-4 WM 7.0, Abschnitt 6.1.8 und 6.1.9 angegeben, wo sie zur Bewegungsvektordifferenz-Codierung verwendet werden.
  • delta_mv_y_vic
  • Dies ist ein Code variabler Länge, der (gemeinsam mit delta delta_mv_y_res) den Wert der Differenz für die y-Komponente des Bewegungsvektors eines Knotens im Vergleich zur x-Komponente eines Vorhersagebewegungsvektors definiert. Der Abschnitt zum Decodierprozess beschreibt, wie der Vorhersagebewegungsvektor aufgefunden wird. Die Definition der Codes delta_mv_y_vic und delta_mv_y_res ist in MPEG-4 WM 7.0, Abschnitt 6.1.8 und 6 1.9, Tabelle 30, angegeben, wo sie zur Bewegungsvektordifferenz-Codierung verwendet werden.
  • delta_mv_y_res
  • Dies ist ein Code fester Länge zum Definieren des Rest betreffend die Differenz von Bewegungsvektoren, mit Codierung durch delta_mv_y_vic. Die Definition der Codes delta_mv_y_vic und delta_mv_y_res ist in MPEG-4 VVM 7.0, Abschnitt 6.1.8 und 6.1.9 angegeben, wo sie zur Bewegungsvektordifferenz-Codierung verwendet werden.
  • Industrielle Anwendungen
  • Die dynamische 2D-Gitter-Repräsentation unterstützt die folgenden Anwendungens
  • Manipulation von Videoobjekten
  • Bei 3D-Computergrafik werden die Animationsparameter eines 3D-Gittermodells häufig synthetisch spezifiziert. Die Animationsparameter eines 2D-Gittermodells können in ähnlicher Weise synthetisch spezifiziert werden, jedoch können sie auch durch Bewegungsabschätzungen einer natürlichen Videosequenz hergeleitet werden. So erlaubt eine Gittermodellierung die interaktive Kombination natürlicher und synthetischer Objekte innerhalb eines einheit lichen Grundgerüsts. Zu möglichen Anwendungen gehören Objekttransfiguration (Ersetzen eines Objekts durch ein anderes Objekt in bewegtem Video), verstärkte Realität (Verstärken/Überlagern eines Objekts in einem bewegten Video durch Grafik oder Text) und räumliche/zeitliche Bildinterpolation (Zoomen oder Wandlung der Vollbildrate).
  • Videokompression
  • Es hat sich gezeigt, dass Bewegungsabschätzung und -kompensation wichtige Werkzeuge sind, damit Videocodiersysteme hohe Kompressionsverhältnisse erzielen. Die Eigenschaften des gitterbasierten Bewegungsmodells machen es zu einer geeigneten Alternative zu blockbasierter Bewegungsmodellierung zur Verwendung als Bewegungskompensations-Werkzeug bei Videocodierung, in welchem Fall die Bewegungsvektoren der Gitterknoten an Stelle von Blockbewegungsvektoren übertragen werden. Gitterbasierte Videokompression kann z. B. dadurch ausgeführt werden, dass Texturkarten nur in ausgewählten Schlüsselrahmen übertragen werden und diese Texturkarten (ohne dass irgendein Vorhersagefehlerbild gesendet wird) für die dazwischen liegenden Rahmen unter Verwendung von 2D-Gitterinformation animiert werden. Nur die Bilddaten des ersten Rahmens einer Sequenz werden codiert, und auch die Gitterbewegungsdaten, die allen Rahmen der Sequenz entsprechen. Wenn das Anfangsgitter an den Bildinhalt angepasst wird, muss Information zur Geometrie des Anfangsgitters ebenfalls codiert und übertragen werden. Im Fall einer Videocodierung ist die Geometrie des Anfangsgitters manchmal eingeschränkt, um den damit einhergehenden Overhead einzugrenzen (z. B. gleichmäßige Gitter); jedoch können im Fall einer Multimediacodierung, bei der mehrere Objekte (Video, Audio, Text, 2D/3D-Gitter usw.) unabhängig codiert werden, allgemeinere Gittergeometrie-Kompressionschemas angewandt werden.
  • Indexerzeugung und Browsing betreffend Videobibliotheken
  • Inhaltsbasierender Direktzugriff auf einzelne Videoobjekte bildet ein wünschenswertes Merkmal für etliche verteilte Multimediaanwendungen, wie objektbasiertes Browsen/Editieren/Manipulieren von Videodatenbanken. Aus der inhaltsbasierten 2D-Dreiecksgitter-Repräsentation von Videoinformation, wie sie bei derartigen Anwendungen verwendbar ist, können nützliche Bewegungs- und Formmerkmale hergeleitet werden.
  • Demgemäß wurden ein System und ein Verfahren zur 2D-Gittergeometrie- und Bewegungsvektorkompression offenbart. Obwohl eine bevorzugte Ausführungs form des erfindungsgemäßen Verfahrens, und mehrere zugehörige Variationen, offenbart wurden, ist zu beachten, dass daran weitere Variationen und Modifizierungen vorgenommen werden können, ohne vom Schutzumfang der in den beigefügten Ansprüchen definierten Erfindung abzuweichen.

Claims (8)

  1. Verfahren zum Codieren und Decodieren eines dynamischen Gitters, umfassend: – Codieren und Decodieren einer Gittergeometrie aus einer Gruppe von Knotenpunkten; und – Codieren und Decodieren eines Gitterknoten-Bewegungsvektors für jeden Knotenpunkt; – wobei zum Codieren und Decodieren eines Gitterknoten-Bewegungsvektors Folgendes gehört: a) Komprimieren der Bewegungsvektoren für jeden Knotenpunkt unter Verwendung eines linearen Durchlaufs der Knotenpunkte und einer Vorhersage, unter Verwendung einer Vorhersage erster oder höherer Ordnung, folgender Bewegungsvektoren für jeden Knotenpunkt; oder b) Komprimieren der Bewegungsvektoren für jeden Knotenpunkt unter Verwendung eines Umfang-zuerst-Durchlaufs der Knotenpunkte und eines Vorhersagens, unter Verwendung einer Vorhersage zweiter oder höherer Ordnung, folgender Bewegungsvektoren für jeden Knotenpunkt; – wobei es zum Komprimieren/Vorhersagen in den Schritten a) bzw. b) gehört, Vorhersagefehler unter Verwendung von Codes variabler Länge zu codieren und zu decodieren.
  2. Verfahren nach Anspruch 1, bei dem das dynamische Gitter Polygonflecke enthält.
  3. Verfahren nach Anspruch 2, bei dem die Polygonflecke Dreiecke sind und die Knotenpunkte die diesen Dreiecken entsprechenden Ecken sind.
  4. Verfahren nach Anspruch 1, 2 oder 3, bei dem es zum Codieren und Decodieren einer Gittergeometrie gehört, eine Gittertopologie vom Delaunay-Typ zu komprimieren.
  5. Verfahren nach Anspruch 1, 2 oder 3, bei dem es zum Codieren und Decodieren einer Gittergeometrie gehört, eine Gittertopologie von gleichmäßigem Typ zu komprimieren.
  6. Verfahren nach Anspruch 1, 2 oder 3, bei dem die Gitterknotenpunkte für ein Gitter vom Delaunay-Typ durchlaufen und geordnet werden.
  7. Verfahren nach Anspruch 1, 2 oder 3, bei dem die Gitterknotenpunkte für ein Gitter von gleichmäßigem Typ durchlaufen und geordnet werden.
  8. System zum Codieren und Decodieren einer Abfolge von durch ein dynamisches Gitter repräsentierten Bildern, wobei das dynamische Gitter über eine vordefinierte Geometrie verfügt, die einem beliebigen, zu repräsentierenden Objekt entspricht, mit einer Gruppe von Knotenpunkten an beliebigen Stellen und Bewegungsvektoren für die Knotenpunkte, mit: – einem Codierer-Untersystem zum Codieren der Gittergeometrie der Gruppe von Knotenpunkten und zum Codieren eines Gitterknoten-Bewegungsvektors für jeden Knotenpunkt, mit: – einem Texturcodierer zum Codieren der Textur eines Bilds und zum Erzeugen eines Bildbitstroms hieraus; – einem Gittercodierer zum Codieren einer Gittersequenz, der einen Geometriecodierer zum Codieren der Geometrie eines Gitters und einen Bewegungsvektorcodierer zum Codieren der Bewegungsvektoren des Gitters und zum Erzeugen eines Gittercodebitstroms hieraus enthält; – einem Decodierer-Untersystem zum Decodieren der Gittergeometrie der Gruppe von Knotenpunkten und zum Decodieren eines Gitterknoten-Bewegungsvektors für jeden Knotenpunkt, mit: – einem Texturdecodierer zum Decodieren der Textur eines Bilds aus einem Bildbitstrom; – einem Gitterdecodierer zum Decodieren des Gittercodebitstroms, der einen Geometriedecodierer zum Decodieren der Geometrie des Gitters und einem Bewegungsvektordecodierer zum Decodieren der Bewegungsvektoren des Gitters enthält; und – einer Animationsanwendung zum Kombinieren der codierten Texturdaten und des decodierten Gitters und zum Erzeugen eines animierten Bilds hieraus.
DE69722040T 1996-12-16 1997-12-15 2-d gittergeometrie und bewegungsvektorkompression Expired - Lifetime DE69722040T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US3301196P 1996-12-16 1996-12-16
US33011P 1996-12-16
US08/942,313 US6047088A (en) 1996-12-16 1997-10-01 2D mesh geometry and motion vector compression
US942313 1997-10-01
PCT/JP1997/004607 WO1998027515A1 (en) 1996-12-16 1997-12-15 2-d mesh geometry and motion vector compression

Publications (2)

Publication Number Publication Date
DE69722040D1 DE69722040D1 (de) 2003-06-18
DE69722040T2 true DE69722040T2 (de) 2004-04-01

Family

ID=26709176

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69722040T Expired - Lifetime DE69722040T2 (de) 1996-12-16 1997-12-15 2-d gittergeometrie und bewegungsvektorkompression

Country Status (5)

Country Link
US (1) US6047088A (de)
EP (1) EP1008108B1 (de)
JP (1) JP2001506828A (de)
DE (1) DE69722040T2 (de)
WO (1) WO1998027515A1 (de)

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6525722B1 (en) 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
KR100215451B1 (ko) * 1996-05-29 1999-08-16 윤종용 임의형태 물체를 포함한 동화상의 부호화 및 복호화시스템
CA2281538C (en) * 1997-02-14 2006-01-03 The Trustees Of Columbia University In The City Of New York Object-based audio-visual terminal and bitstream structure
US7920143B1 (en) * 1997-03-27 2011-04-05 At&T Intellectual Property Ii, L.P. Method for defining animation parameters for an animation definition interface
KR100249223B1 (ko) * 1997-09-12 2000-03-15 구자홍 엠팩(mpeg)-4의움직임벡터코딩방법
US7199836B1 (en) * 1998-02-13 2007-04-03 The Trustees Of Columbia University In The City Of New York Object-based audio-visual terminal and bitstream structure
US6271861B1 (en) * 1998-04-07 2001-08-07 Adobe Systems Incorporated Smooth shading of an object
US6236738B1 (en) * 1998-04-09 2001-05-22 Board Of Trustees Of The Leland Stanford Junior University Spatiotemporal finite element method for motion analysis with velocity data
US6167159A (en) * 1998-04-30 2000-12-26 Virtue Ltd. Triangle mesh compression
US6342884B1 (en) 1999-02-03 2002-01-29 Isurftv Method and apparatus for using a general three-dimensional (3D) graphics pipeline for cost effective digital image and video editing, transformation, and representation
FR2794329B1 (fr) * 1999-05-26 2001-08-17 France Telecom Procede de codage d'images hierarchique, a mise en oeuvre selective d'un codage a base transformation reversible, et procede de decodage correspondant
FR2794269B1 (fr) * 1999-05-26 2001-08-17 France Telecom Procede de codage d'images, a partition triangulaire et transformation reversible, et procede de decodage correspondant
US6356457B1 (en) 1999-06-07 2002-03-12 Sun Microsystems, Inc. Circuit card support mechanism and method
US6792108B1 (en) * 1999-06-08 2004-09-14 Universite de Montrëal Aperiodic encryption for digital data
US6628277B1 (en) * 1999-06-14 2003-09-30 Sun Microsystems, Inc. Decompression of three-dimensional graphics data using mesh buffer references to reduce redundancy of processing
US8595764B2 (en) 1999-06-25 2013-11-26 Jlb Ventures, Llc Image-oriented electronic programming guide
FR2802377B1 (fr) * 1999-12-09 2002-03-08 France Telecom Procede d'estimation de mouvement entre deux images avec gestion des retournements de mailles et procede de codage correspondant
US6757330B1 (en) 2000-06-01 2004-06-29 Hewlett-Packard Development Company, L.P. Efficient implementation of half-pixel motion prediction
US6847684B1 (en) 2000-06-01 2005-01-25 Hewlett-Packard Development Company, L.P. Zero-block encoding
US6650335B2 (en) * 2001-02-22 2003-11-18 Mitsubishi Electric Research Laboratories, Inc. Method for extracting static and dynamic super-resolution textures form a sequence of images
US7623739B2 (en) * 2001-07-11 2009-11-24 Ecole Polytechnique Federale De Lausanne (Epfl) Method and computing system for creating and displaying images with animated microstructures
GB2379299B (en) 2001-09-04 2006-02-08 Imagination Tech Ltd A texturing system
US20030193503A1 (en) * 2002-04-10 2003-10-16 Mark Seminatore Computer animation system and method
US6947045B1 (en) 2002-07-19 2005-09-20 At&T Corporation Coding of animated 3-D wireframe models for internet streaming applications: methods, systems and program products
US8421804B2 (en) * 2005-02-16 2013-04-16 At&T Intellectual Property Ii, L.P. System and method of streaming 3-D wireframe animations
FR2852773A1 (fr) * 2003-03-20 2004-09-24 France Telecom Procedes et dispositifs de codage et de decodage d'une sequence d'images par decomposition mouvement/texture et codage par ondelettes
US7324105B1 (en) * 2003-04-10 2008-01-29 Nvidia Corporation Neighbor and edge indexing
US7313285B2 (en) * 2003-05-30 2007-12-25 Lucent Technologies Inc. Method and apparatus for compressing and decompressing images captured from viewpoints throughout N-dimensional space
US7983835B2 (en) 2004-11-03 2011-07-19 Lagassey Paul J Modular intelligent transportation system
US7529418B2 (en) * 2004-05-20 2009-05-05 Hewlett-Packard Development Company, L.P. Geometry and view assisted transmission of graphics image streams
US9743078B2 (en) 2004-07-30 2017-08-22 Euclid Discoveries, Llc Standards-compliant model-based video encoding and decoding
US8902971B2 (en) 2004-07-30 2014-12-02 Euclid Discoveries, Llc Video compression repository and model reuse
WO2008091483A2 (en) 2007-01-23 2008-07-31 Euclid Discoveries, Llc Computer method and apparatus for processing image data
US9532069B2 (en) 2004-07-30 2016-12-27 Euclid Discoveries, Llc Video compression repository and model reuse
US9578345B2 (en) 2005-03-31 2017-02-21 Euclid Discoveries, Llc Model-based video encoding and decoding
AU2006230545B2 (en) * 2005-03-31 2010-10-28 Euclid Discoveries, Llc Apparatus and method for processing video data
CN1852444B (zh) * 2005-12-28 2010-05-12 华为技术有限公司 基于小波的自适应视频编码方法
US7589746B2 (en) * 2006-03-23 2009-09-15 Intel Corporation Optimized frustum clipping via cached clip vertices
US20090115786A1 (en) * 2006-04-24 2009-05-07 Takamasa Shimasaki Drawing device, and drawing method
WO2008091484A2 (en) 2007-01-23 2008-07-31 Euclid Discoveries, Llc Object archival systems and methods
CN102685441A (zh) 2007-01-23 2012-09-19 欧几里得发现有限责任公司 用于提供个人视频服务的系统和方法
US8249371B2 (en) * 2007-02-23 2012-08-21 International Business Machines Corporation Selective predictor and selective predictive encoding for two-dimensional geometry compression
EP2345256B1 (de) 2008-10-07 2018-03-14 Euclid Discoveries, LLC Auf merkmalen basierende videokomprimierung
EP2387004B1 (de) 2010-05-11 2016-12-14 Dassault Systèmes Verlustfreie Kompression einer strukturierten Menge von Fließkommazahlen, insbesondere für CAD-Systeme
TW201141204A (en) * 2010-05-14 2011-11-16 Univ Nat Cheng Kung Method of warping video
US9588489B2 (en) * 2010-06-24 2017-03-07 Disney Enterprises, Inc. Computational highlight holography
JP5661359B2 (ja) 2010-07-16 2015-01-28 キヤノン株式会社 画像処理装置、画像処理方法、およびプログラム
US9582934B2 (en) * 2010-09-20 2017-02-28 Siemens Healthcare Gmbh Method and system for efficient extraction of a silhouette of a 3D mesh
US9392301B2 (en) * 2011-07-01 2016-07-12 Qualcomm Incorporated Context adaptive entropy coding for non-square blocks in video coding
US9161012B2 (en) * 2011-11-17 2015-10-13 Microsoft Technology Licensing, Llc Video compression using virtual skeleton
US9892535B1 (en) 2012-01-05 2018-02-13 Google Inc. Dynamic mesh generation to minimize fillrate utilization
EP2904584B1 (de) * 2012-10-05 2017-08-09 Universidade De Coimbra Verfahren zur ausrichtung und verfolgung von punktbereichen in bildern mit radialer verzerrung und ausgabe von bewegungsmodellparametern, verzerrungskalibrierung und zoomvariation
US10699361B2 (en) * 2012-11-21 2020-06-30 Ati Technologies Ulc Method and apparatus for enhanced processing of three dimensional (3D) graphics data
US9633459B2 (en) * 2013-08-23 2017-04-25 Disney Enterprises, Inc. Methods and systems for creating a hull that may have concavities
US9773331B2 (en) 2013-08-23 2017-09-26 Disney Enterprises, Inc. Methods and systems for efficient graphics rendering
US9621917B2 (en) 2014-03-10 2017-04-11 Euclid Discoveries, Llc Continuous block tracking for temporal prediction in video encoding
US10091507B2 (en) 2014-03-10 2018-10-02 Euclid Discoveries, Llc Perceptual optimization for model-based video encoding
US10097851B2 (en) 2014-03-10 2018-10-09 Euclid Discoveries, Llc Perceptual optimization for model-based video encoding
USRE49930E1 (en) 2015-03-26 2024-04-23 Universidade De Coimbra Methods and systems for computer-aided surgery using intra-operative video acquired by a free moving camera
EP3284252B1 (de) 2015-04-13 2021-07-21 Universidade De Coimbra Verfahren und systeme zur kameracharakterisierung hinsichtlich reaktionsunktion, farbe und bildrandabschattung unter ungleichmässiger beleuchtung
CN107292963B (zh) * 2016-04-12 2020-01-17 杭州海康威视数字技术股份有限公司 一种三维模型的调整方法及装置
WO2017191978A1 (en) 2016-05-02 2017-11-09 Samsung Electronics Co., Ltd. Method, apparatus, and recording medium for processing image
KR101763921B1 (ko) 2016-10-21 2017-08-01 (주)플럭스플래닛 컨텐츠 스트리밍 시스템 및 방법
US10796499B2 (en) 2017-03-14 2020-10-06 Universidade De Coimbra Systems and methods for 3D registration of curves and surfaces using local differential information
GB2563895B (en) * 2017-06-29 2019-09-18 Sony Interactive Entertainment Inc Video generation method and apparatus
US10708597B2 (en) 2018-02-01 2020-07-07 Microsoft Technology Licensing, Llc Techniques for extrapolating image frames
US11631218B2 (en) * 2018-12-11 2023-04-18 Google Llc Efficient compression of data representing triangular mesh attributes
US20200202622A1 (en) * 2018-12-19 2020-06-25 Nvidia Corporation Mesh reconstruction using data-driven priors
US20210287431A1 (en) * 2020-03-15 2021-09-16 Intel Corporation Apparatus and method for displaced mesh compression
US20220051466A1 (en) * 2020-08-17 2022-02-17 Intel Corporation Apparatus and method for compressing ray tracing acceleration structure build data

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE465394B (sv) * 1990-08-15 1991-09-02 Televerket Metod foer roerelsekompensering och elastisk deformation i bildsekvenser
JPH06325151A (ja) * 1993-03-17 1994-11-25 Fujitsu Ltd アニメーション編集装置
JP2838968B2 (ja) * 1994-01-31 1998-12-16 日本電気株式会社 半導体デバイスシミュレータのメッシュ生成方法
EP0731614B1 (de) * 1995-03-10 2002-02-06 Kabushiki Kaisha Toshiba Bildkodierungs-/-dekodierungsvorrichtung
US5654771A (en) * 1995-05-23 1997-08-05 The University Of Rochester Video compression system using a dense motion vector field and a triangular patch mesh overlay model
US5778192A (en) * 1995-10-26 1998-07-07 Motorola, Inc. Method and device for optimal bit allocation between different sources of information in digital video compression
US5825369A (en) * 1996-01-16 1998-10-20 International Business Machines Corporation Compression of simple geometric models using spanning trees
US5748789A (en) * 1996-10-31 1998-05-05 Microsoft Corporation Transparent block skipping in object-based video coding systems

Also Published As

Publication number Publication date
US6047088A (en) 2000-04-04
EP1008108B1 (de) 2003-05-14
DE69722040D1 (de) 2003-06-18
JP2001506828A (ja) 2001-05-22
WO1998027515A1 (en) 1998-06-25
EP1008108A1 (de) 2000-06-14

Similar Documents

Publication Publication Date Title
DE69722040T2 (de) 2-d gittergeometrie und bewegungsvektorkompression
DE69634962T2 (de) Extrapolation von Pixelwerten eines in einem Block enthaltenen Videoobjektes
DE69725483T2 (de) Gitternetzübertragung und -kodierung
DE69723550T2 (de) Kodierung und dekodierung von grafischen symbolen
DE69831961T2 (de) Bildobjekterzeugungsverfahren für objektbasierte kodierungssysteme unter verwendung von masken und gerundeten mittelwerten
DE69736852T2 (de) Codierung- und Decodierungssystem für bewegte Bilder mit beliebig geformten Objekten
DE69727109T2 (de) Verfahren und Gerät zur Bilddatenübertragung, Bildverarbeitung und Aufzeichnungsmedien dafür
WO2012110491A1 (de) Kodierverfahren und bildkodiervorrichtung zur kompression einer bildsequenz
DE202012013450U1 (de) Beschriftungspositionierbildwiedergabesystem zur Reduzierung des Kriechens bei Zoom-Aktivitäten
DE69726321T2 (de) Dekodierer mit Mitteln zur Ergänzung eines digitalen Bildes mit Bildelementen
DE112007000137T5 (de) Verfahren und Vorrichtung zum Codieren/Decodieren von Graphikdaten
DE19807053A1 (de) Strahltransformationsverfahren für eine schnelle Volumenaufbereitung für eine perspektivische Betrachtung
DE60022018T2 (de) Verfahren und vorichtung zur bewegungsvektorfeldkodierung
CN114463511A (zh) 一种基于Transformer解码器的3D人体模型重建方法
DE69738016T2 (de) Verfahren und Vorrichtung zur adaptiven Kodierung einer Objektkontur
EP2528042A1 (de) Verfahren und Vorrichtung zum Re-Meshing von 3D-Polygonmodellen
DE60031014T2 (de) Verfahren zur bewegungsschätzung zwischen zwei bildern mit verwaltung der wendung einer masche und entsprechendes kodierungsverfahren
EP1177690B1 (de) Verfahren und anordnungen zur rechnergestützten bewegungskompensation eines digitalisierten bildes sowie computerprogramm-erzeugnisse und computerlesbare speichermedien
DE19711670A1 (de) Verfahren und Vorrichtung zum Codieren des Umrisses eines Gegenstandes unter Verwendung des Flächenschwerpunktes
CN106157251A (zh) 一种基于柯西正则化的人脸超分辨率方法
DE19753444C2 (de) Lokalrelaxationsverfahren zur Bestimmung des optischen Flusses
EP2893510B1 (de) Verfahren und bildverarbeitungsanlage zum entfernen eines visuellen objektes aus einem bild
DE69818558T2 (de) Verfahren und Vorrichtung zur geometrischen Komprimierung von dreimensionalen Grafiken
DE19509373C1 (de) Verfahren und Anordnung zur objektbasierten Bildkodierung
EP0960390B1 (de) Verfahren und anordnung zur kodierung eines digitalisierten bildes

Legal Events

Date Code Title Description
8364 No opposition during term of opposition