DE69831961T2 - Bildobjekterzeugungsverfahren für objektbasierte kodierungssysteme unter verwendung von masken und gerundeten mittelwerten - Google Patents

Bildobjekterzeugungsverfahren für objektbasierte kodierungssysteme unter verwendung von masken und gerundeten mittelwerten Download PDF

Info

Publication number
DE69831961T2
DE69831961T2 DE69831961T DE69831961T DE69831961T2 DE 69831961 T2 DE69831961 T2 DE 69831961T2 DE 69831961 T DE69831961 T DE 69831961T DE 69831961 T DE69831961 T DE 69831961T DE 69831961 T2 DE69831961 T2 DE 69831961T2
Authority
DE
Germany
Prior art keywords
sprite
pixel
video
pixels
image
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
DE69831961T
Other languages
English (en)
Other versions
DE69831961D1 (de
Inventor
Chuang Gu
Ming-Chieh Lee
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of DE69831961D1 publication Critical patent/DE69831961D1/de
Application granted granted Critical
Publication of DE69831961T2 publication Critical patent/DE69831961T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/649Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding the transform being applied to non rectangular image segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • H04N19/23Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding with coding of regions that are present throughout a whole video segment, e.g. sprites, background or mosaic
    • 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/543Motion estimation other than block-based using regions
    • 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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft eine objekt-basierte Videokodierung und insbesondere die Erzeugung eines Sprite genannten Bildes, das Pixeldaten enthält, um ein Videoobjekt in jedem Einzelbild einer Videosequenz zu rekonstruieren.
  • HINTERGRUND DER ERFINDUNG
  • Auf analogen Videosignalen basierende Vollbewegungsvideodarstellungen sind seit langer Zeit in der Form des Fernsehens verfügbar. Mit der Zunahme der Leistungsfähigkeit und Wirtschaftlichkeit bei der Computerverarbeitung in neuerer Zeit werden auf digitalen Videosignalen basierende Vollbewegungsdarstellungen in weiterem Umfang verfügbar. Digitale Videosysteme können beträchtliche Verbesserungen gegenüber herkömmlichen analogen Videosystemen bei der Erzeugung, Abwandlung, Übertragung, Speicherung und dem Abspielen von Vollbewegungsvideosequenzen bieten.
  • Digitale Videoanzeigen umfassen eine große Anzahl von Einzelbildern, die bei Frequenzen zwischen 30 und 75 Hz nacheinander abgespielt bzw. wiedergegeben werden. Bei jedem Einzelbild handelt es sich um ein auf der Auflösung der Anzeige eines bestimmten Systems basierendes, aus einem Array aus Pixeln gebildetes Standbild. Beispielsweise umfassen auf VHS basierende Systeme Auflösungen der Darstellungen von 320 × 480 Pixeln, auf NTSC basierende Systeme Auflösungen der Darstellungen von 720 × 486 Pixel und sich in der Entwicklung befindende Systeme des hochauflösenden Fernsehens (HDTV) Auflösungen der Darstellungen von 1360 × 1024 Pixeln.
  • Die Menge der in Videosequenzen enthaltenen digitalen Rohinformationen ist enorm. Mit einer herkömmlichen Ausstattung eines Personalcomputers ist eine Speicherung und Übertragung dieser Mengen von Videoinformationen nicht durchführbar. Unter Bezugnahme auf eine digitalisierte Form eines VHS-Bildformats mit einer relativ niedrigen Auflösung von 320 × 480 Pixeln, würde ein Film in voller Länge mit einer Dauer von zwei Stunden 100 Gigabyte an digitalen Videoinformationen entsprechen. Im Vergleich dazu umfassen herkömm liche optische CDs Kapazitäten von ungefähr 0,6 Gigabyte, magnetische Festplatten Kapazitäten von 1-2 Gigabyte und sich in der Entwicklung befindende optische CDs Kapazitäten von bis zu 8 Gigabyte.
  • Um die Beschränkungen bei der Speicherung oder Übertragung derartiger enormer Mengen an digitalen Videoinformationen anzusprechen, wurden verschiedene Videokompressionsstandards bzw. Prozesse einschließlich von MPEG-1, MPEG-2 und H.26X festgelegt. Bei diesen herkömmlichen Videokompressionstechniken werden Ähnlichkeiten zwischen aufeinanderfolgenden Einzelbildern verwendet, die als zeitliche oder Zwischenbildkorrelationen bezeichnet werden, um eine Zwischenbildkompression bereitzustellen, bei der auf Pixeln basierende Darstellungen von Einzelbildern in Darstellungen von Bewegungen umgewandelt werden. Zusätzlich werden bei den herkömmlichen Videokompressionstechniken Ähnlichkeiten in Einzelbildern verwendet, die als räumliche oder Intrabildkorrelationen bezeichnet werden, um eine Intrabildkompression zu liefern, bei der die Darstellungen von Bildern innerhalb eines Einzelbildes weiter komprimiert sind. Die Zwischenbildkompression basiert auf herkömmlichen Prozessen zur Komprimierung von Standbildern, wie beispielsweise der Kodierung mit diskreter Cosinustransformation (DCT).
  • Obwohl sie sich in ihren speziellen Implementierungen unterscheiden, sind sich die Videokompressionsstandards MPEG-1, MPEG-2 und H.26X in einer Anzahl von Gesichtspunkten ähnlich. Die folgende Beschreibung des MPEG-2 Videokompressionsstandards ist im allgemeinen auch auf die anderen anwendbar.
  • Durch MPEG-2 wird eine Zwischenbildkompression und Intrabildkompression bereitgestellt, die auf quadratischen Blöcken bzw. Arrays aus Pixeln in Videobildern basiert. Ein Videobild wird in Transformationsblöcke unterteilt, die Größen von 16 × 16 Pixeln aufweisen. Für jeden Transformationsblock TN in einem Einzelbild N wird eine Suche durch das Bild nach einem nächsten nachfolgenden Videobild N+1 oder einem unmittelbar vorhergehenden Einzelbild N-1 (d.h. bidirektional) durchgeführt, um die jeweils ähnlichsten Transformationsblöcke TN+1 oder TN-1 zu identifizieren.
  • Idealerweise und mit Bezugnahme auf eine Suche nach dem nächsten nachfolgenden Einzelbild sind die Pixel in den Transformationsblöcken TN und TN+1, selbst wenn die Transformationsblöcke in ihren jeweiligen Einzelbildern unterschiedliche Positionen aufweisen, identisch. Unter diesen Umständen ist die Pixelinformation im Transformationsblock TN+1 redundant zu der im Transformationsblock TN. Eine Kompression wird durch Substituieren der Pixelinformation im Transformationsblock TN+1 durch die Translation bezüglich der Position zwischen den Transformationsblöcken TN und TN+1 erreicht. Bei diesem vereinfachten Beispiel wird ein einzelner Translationsvektor (DX, DY) für die den 256 Pixeln im Transformationsblock TN+1 zugeordnete Videoinformation definiert.
  • Häufig sind jedoch die Videoinformationen (d.h. Pixel) in den entsprechenden Transformationsblöcken TN und TN+1 nicht identisch. Die Differenz zwischen ihnen wird als ein Transformationsblockfehler E bezeichnet, der häufig beträchtlich ist. Obwohl er mit einem herkömmlichen Kompressionsprozeß, wie beispielsweise der Kodierung mit diskreter Cosinustransformation (DCT) komprimiert wird, ist der Transformationsblockfehler E störend und begrenzt den Umfang (Geschwindigkeit) und die Genauigkeit, mit der Videosignale komprimiert werden können.
  • Bei blockbasierten Videokompressionsverfahren treten aus mehreren Gründen große Transformationsblockfehler E auf. Die blockbasierte Bewegungsabschätzung stellt lediglich die Translationsbewegung zwischen aufeinanderfolgenden Einzelbildern dar. Die einzige Änderung zwischen entsprechenden Transformationsblöcken TN und TN+1, die dargestellt werden kann, ist eine Änderung der relativen Position der Transformationsblöcke. Ein Nachteil derartiger Darstellungen besteht darin, daß Vollbewegungsvideosequenzen häufig andere komplexe Bewegungen als eine Translation umfassen, wie beispielsweise eine Drehung, eine Vergrößerung und eine Scherung. Eine Darstellung derartiger komplexer Bewegungen mit einfachen translatorischen Näherungen führt zu beträchtlichen Fehlern.
  • Ein weiterer Gesichtspunkt von Videodarstellungen besteht darin, daß sie typischerweise mehrere Bildmerkmale oder „Videoobjekte" umfassen, die sich ändern oder sich relativ zueinander bewegen. Bei Videoobjekten kann es sich um unterschiedliche Zeichen, Gegenstände oder eine Szenerie in einer Videodarstellung handeln. Bezüglich einer Szene in einem Film könnte es sich beispielsweise bei jeder Person (d.h. Schauspieler) und jedem Gegenstand (d.h. Requisiten) in der Szene um ein unterschiedliches Objekt handeln. Jedes dieser Objekte wird durch eine nicht rechteckige Gruppe von Pixeln in jedem Einzelbild einer Videosequenz dargestellt.
  • Die relative Bewegung zwischen Objekten in einer Videosequenz stellt eine weitere Quelle für beträchtliche Transformationsblockfehler E bei herkömmlichen Videokompressionsprozessen dar. Aufgrund der regelmäßigen Konfiguration und Größe der Transformationsblöcke umfassen viele dieser Blöcke Teile verschiedener Objekte. Eine relative Bewegung zwischen den Objekten während aufeinanderfolgender Einzelbilder kann zu einer extrem niedrigen Korrelation (d.h. großen Transformationsfehlern E) zwischen entsprechenden Transformationsblöcken führen. Ähnlich werden durch das Erscheinen von Teilen der Objekte in nachfolgenden Einzelbildern (z.B. wenn sich eine Person dreht) ebenfalls große Transformationsfehler E eingeführt.
  • Herkömmliche Videokompressionsverfahren erscheinen aufgrund der Größe der Transformationsfehler E inhärent beschränkt zu sein. Mit der zunehmenden Nachfrage nach der Fähigkeit zur digitalen Wiedergabe von Videos, sind verbesserte digitale Videokompressionsprozesse erforderlich.
  • Im Artikel von Irani et al. mit dem Titel „Efficient Representations of Video Sequences and Their Application" wird die Verwendung von Mosaiken zur Darstellung von Videosequenzen bei verschiedenen Anwendungen beschrieben. Im Artikel von DuFaux et al. mit dem Titel „Background Mosaicking for Low Bit Rate Video Coding" wird eine Technik zum Aufbau eines auf Mosaikbildung basierenden Hintergrundspeichers beschrieben. In der internationalen Patentanmeldung mit der Offenlegungsnummer WO 96/15508 („D3") wird eine automatische Erzeugung eines Mosaiks aus einer Vielzahl von Eingabebildern beschrieben.
  • Im von der internationalen Organisation für Standardisierung ausgegebenen Dokument MPEG97/N1642 wird ein Verfahren offenbart, das eine Sprite-basierte Kodierung umfaßt. Bei diesem Verfahren werden statische Offline-Sprites und dynamische Online-Sprites unterschieden. Dynamische Sprites werden als Referenzen zur prädiktiven Kodierung verwendet, wobei die Bewegung unter Verwendung von Verziehungsparametern für den Sprite kompensiert wird. Ein dynamischer Sprite wird dynamisch sowohl im Kodierer als auch im Dekodierer online während der Kodierung aufgebaut.
  • ABRISS DER ERFINDUNG
  • Gemäß einem Gesichtspunkt der Erfindung wird in einem Computersystem ein Verfahren zur Erzeugung eines Sprites in einem Computersystem, ein Verfahren zur Erzeugung eines Sprites für eine objektbasierte Videokodierung einer Videosequenz bereitgestellt, wobei der Sprite zur Darstellung eines Videoobjektes in der Videosequenz vorgesehen ist, wobei das Verfahren die Schritte umfaßt: Segmentieren des Videoobjektes aus einem Einzelbild der Videosequenz durch Bilden einer inneren Kontur der Objektbegrenzung, Erweitern der inneren Kontur zur Bildung einer äußeren Kontur und Klassifizieren von Pixeln zwischen der inneren und der äußeren Kontur als im Inneren des Objektes, um die Objektbegrenzung und eine entsprechende Maske für das Videoobjekt im Bild zu definieren; Auswählen von zumindest zwei Merkmalspunkten des Objekts in einem Anfangsbild, Definieren eines Blocks mehrerer um jeden gewählten Merkmalspunkt zentrierter Pixel und Abgleichen des Blocks mit einem entsprechenden Block in einem nachfolgenden Einzelbild; Berechnen von Bewegungsparametern, welche die Bewegung eines Videoobjekts in einem momentanen Bild im Verhältnis zu einem zuvor erstellten Sprite abschätzen, umfassend den Schritt eines Verwendens von Masken des Objekts und des Sprites, um sicherzustellen, daß lediglich eine auf Pixeln im Videoobjekt, die auf Pixelorte innerhalb des Sprites abgebildet werden, basierende Bewegung abgeschätzt wird; Verziehen des Videoobjekts mit den Bewegungsparametern, um eine Bewegung zwischen dem Videoobjekt im momentanen Videobild und dem Sprite zu kompensieren; und inkrementelles Mischen des Videoobjekts in den Sprite durch Kombinieren von Pixeln im Videoobjekt mit Pixeln des Sprites, die sich an entsprechenden Positionen befinden, wie durch die Bewegungsparameter bestimmt wurde.
  • Beim Berechnen der Bewegungsparameter für jedes Bild werden vom Verfahren die Masken des Objekts und des Sprites (oder Referenzobjektes) verwendet, um sicherzustellen, daß damit eine lediglich auf Pixeln im Videoobjekt, die auf Pixelorte innerhalb des Sprites oder Referenzobjektes abgebildet werden, basierende Bewegung durch dieses abgeschätzt wird. Bei diesem Ansatz wird der Fehler im globalen Abschätzungsprozeß der Bewegung reduziert und sichergestellt, daß die Bewegung eines Videoobjektes lediglich auf der Bewegung des Objektes im Verhältnis zum Sprite basiert.
  • Das oben umrissene Verfahren zur Erzeugung von Sprites kann in einem eigenständigen Modul, das statische Sprites offline erzeugt, wie auch in einem in einen Kodierer und einen Dekodierer integrierten Modul, implementiert sein, um dynamische Sprites online zu erzeugen. Diese Erfindung kann in einem Softwaremodul implementiert sein, das in einem Computer ausgeführt wird oder in einer Sonderhardware zur Videokodierung.
  • Andere Eigenschaften und Vorteile der Erfindung werden unter Bezugnahme auf die folgende detaillierte Beschreibung und die beigefügten Zeichnungen ersichtlich.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm eines Computersystems, das zur Implementierung eines Verfahrens und einer Vorrichtung zur Verkörperung der Erfindung verwendet werden kann.
  • 2A und 2B sind vereinfachte Darstellungen eines Anzeigebildes einer Videoanzeigevorrichtung, in welchen zwei einem Videosignal entsprechende aufeinanderfolgende Einzelbilder gezeigt sind.
  • 3A ist ein verallgemeinertes Funktionsblockdiagramm eines Videokompressionskodierungsprozesses zur Komprimierung digitalisierter Videosignale, die eine dargestellte Bewegung in Videosequenzen mehrerer Einzelbilder wiedergeben. 3B ist ein Funktionsblockdiagramm eines Objektstammkodierungsprozesses gemäß dieser Erfindung.
  • 4 ist ein Funktionsblockdiagramm eines Objektsegmentierungsprozesses zur Segmentierung ausgewählter Objekte aus einem Einzelbild einer Videosequenz.
  • 5A ist eine vereinfachte Darstellung eines Anzeigebildes der Videoanzeigevorrichtung aus 2A und 5B ist eine vergrößerte Darstellung eines Teils des Anzeigebildes aus 5A.
  • 6 ist ein Funktionsblockdiagramm eines Polygonabgleichsprozesses zur Bestimmung eines Bewegungsvektors für entsprechende Paare von Pixeln in entsprechenden Objekten in aufeinanderfolgenden Einzelbildern.
  • 7A und 7B sind vereinfachte Darstellungen eines Anzeigebildes, die zwei aufeinanderfolgende Einzelbilder mit zwei entsprechenden Objekte zeigen.
  • 8 ist ein Funktionsblockdiagramm eines alternativen Pixelblockkorrelationsprozesses.
  • 9A ist eine schematische Darstellung eines ersten Pixelblocks, der zur Identifizierung entsprechender Pixel in unterschiedlichen Einzelbildern verwendet wird. 9B ist eine schematische Darstellung eines Arrays von Pixeln, die einem Suchbereich in einem vorangehenden Einzelbild entsprechen, wobei sich entsprechende Pixel gesucht werden. 9C-9G sind schematische Darstellungen des ersten Pixelblocks, der über das Pixelarray aus 9B abgetastet wird, um entsprechende Pixel zu identifizieren.
  • 10A ist eine schematische Darstellung eines zweiten Pixelblocks, der zur Identifizierung entsprechender Pixel in unterschiedlichen Einzelbildern verwendet wird. 10B-10F sind schematische Darstellungen des zweiten Pixelblocks, der über das Pixelarray aus 9B zur Identifizierung entsprechender Pixel abgetastet wird.
  • 11A ist eine schematische Darstellung eines dritten Pixelblocks, der zur Identifizierung entsprechender Pixel in unterschiedlichen Einzelbildern verwendet wird. 11B-11F sind schematische Darstellungen des dritten Pixelblocks, der über das Pixelarray aus 9B abgetastet wird.
  • 12 ist ein Funktionsblockdiagramm eines mehrdimensionalen Transformationsverfahrens, das ein Erzeugen einer Abbildung zwischen Objekten in einem ersten und zweiten nachfolgenden Einzelbild und ein Quantisieren der Abbildung zur Übertragung oder Speicherung umfaßt.
  • 13 ist eine vereinfachte Darstellung eines Anzeigebildes, in der das Einzelbild aus 7B zur Darstellung des mehrdimensionalen Transformationsverfahrens aus 12 gezeigt ist.
  • 14 ist eine vergrößerte vereinfachte Darstellung, die drei ausgewählte Pixel eines bei der Quantisierung von affinen mit dem Verfahren aus 12 bestimmten Transformationskoeffizienten verwendeten Transformationsblocks zeigt.
  • 15 ist ein Funktionsblockdiagramm eines Optimierungsverfahrens für Transformationsblöcke, das bei einer alternativen Ausführungsform des mehrdimensionalen Transformationsverfahrens aus 12 verwendet wird.
  • 16 ist eine vereinfachte bruchstückhafte Darstellung eines Anzeigebildes, in dem das Einzelbild aus 7 gezeigt ist, zur Darstellung des Optimierungsverfahrens für Transformationsblöcke aus 15.
  • 17A und 17B sind ein Funktionsblockdiagramm eines Präkompressionsextrapolationsverfahrens zum Extrapolieren von Einzelbildern mit einer willkürlichen Konfiguration in eine vorbestimmte Konfiguration zur Vereinfachung der Kompression.
  • 18A-18D sind Darstellungen eines Anzeigebildes, in dem ein einfaches Objekt wiedergegeben ist zur Darstellung verschiedener Gesichtspunkte des Extrapolationsverfahrens aus 14.
  • 19A und 19B sind Funktionsblockdiagramme eines Kodierungsverfahrens bzw. eines Dekodierungsverfahrens, bei welchen ein Laplace-Pyramidenkodierungsverfahren gemäß dieser Erfindung verwendet wird.
  • 20A-20D sind vereinfachte Darstellungen der Farbkomponentenwerte einer willkürlichen Gruppe oder Arrays aus Pixeln, die gemäß dem Kodierungsprozeß aus 19A verarbeitet werden.
  • 21 ist ein Funktionsblockdiagramm eines Bewegungsvektorkodierungsprozesses gemäß dieser Erfindung.
  • 22 ist ein Funktionsblockdiagramm eines alternativen quantisierten Objektkodierungs-Dekodierungsprozesses.
  • 23A ist ein verallgemeinertes Funktionsblockdiagramm eines auf den Kodierungsprozeß aus 3 abgestimmten Videokompressionsdekodierungsprozesses. 23B ist ein Funktionsdiagramm eines Objektstammdekodierungsprozesses gemäß dieser Erfindung.
  • 24A ist eine Diagrammdarstellung eines herkömmlichen Kettenkodierungsformates. 24B ist eine vereinfachte Darstellung eines beispielhaften Umrisses zur Verarbeitung mit dem Kettencodeformat aus 24A.
  • 25A ist ein Funktionsblockdiagramm eines Kettenkodierungsprozesses gemäß dieser Erfindung.
  • 25B ist eine Diagrammdarstellung eines Kettencodeformats.
  • 25C ist eine Diagrammdarstellung eines speziellen Falls von beim Prozeß aus 25A verwendeten Modifizierungen des Kettencodes.
  • 26 ist ein Funktionsblockdiagramm eines Sprite-Erzeugungs- oder Kodierungsprozesses.
  • 27A und 27B sind ein erstes bzw. zweites durch Bitmaps definiertes Objekt, die Gitter aus über die Objekte überlagerten Dreiecken gemäß dem Prozeß aus 26 aufweisen.
  • 28 ist ein Funktionsblockdiagramm eines dem Kodierungsprozeß aus 26 entsprechenden Sprite-Dekodierungsprozesses.
  • 29 ist ein Funktionsblockdiagramm eines vereinfachten Dekodierungsprozesses für vollständig definierte Objekte.
  • 30 zeigt ein Beispiel, anhand dessen gezeigt ist, wie ein Sprite aus einer Videosequenz zu erzeugen ist.
  • 31 ist ein Blockdiagramm, das einen Sprite-Generator zeigt.
  • 32 ist ein Ablaufdiagramm, das ein Verfahren zur Erzeugung von Sprites für ein objektbasiertes Kodierungssystem zeigt.
  • 33 ist ein Ablaufdiagramm, das ein Verfahren zur Abschätzung einer globalen Bewegung zeigt.
  • DETAILLIERTE BESCHREIBUNG
  • Unter Bezugnahme auf 1 handelt es sich bei einer Betriebsumgebung für die bevorzugte Ausführungsform der vorliegenden Erfindung um ein Computersystem 20 entweder einer Mehrzweckbauart oder einer zweckbestimmten Bauart, das zumindest eine Hochgeschwindigkeitsverarbeitungseinheit (CPU) 22 in Verbindung mit einem Speichersystem 24, eine Eingabevorrichtung 26 und eine Ausgabevorrichtung 28 umfaßt. Diese Elemente sind mittels einer Busstruktur 30 zwischenverbunden.
  • Die dargestellte CPU 22 umfaßt einen bekannten Aufbau und umfaßt eine ALU 32 zur Durchführung von Berechnungen, eine Gruppe von Registern 34 zur temporären Speicherung von Daten und Befehlen und eine Steuerungseinheit 36 zur Steuerung des Betriebs des Systems 20. Bei der CPU 22 kann es sich um einen Prozessor mit irgendeiner einer Vielzahl von Architekturen einschließlich von Alpha von Digital, MIPS von MIPS Technology, NEC, IDT, Siemens und anderen, x86 von Intel und anderen, einschließlich von Cyrix, AMD und Nexgen und des PowerPc von IBM und Motorola handeln.
  • Das Speichersystem 24 umfaßt einen Hauptspeicher 38 und einen Sekundärspeicher 40. Der dargestellte Hauptspeicher 38 hat die Form von 16 Megabyte eines Halbleiter RAM-Speichers. Der Sekundärspeicher 40 hat die Form eines Langzeitspeichers, wie beispielsweise eines ROMs, einer optischen oder magnetischen Platte, eines Flashspeichers oder eines Bandes. Für den Fachmann ist verständlich, daß das Speichersystem 24 viele andere alternative Komponenten umfassen kann.
  • Die Eingabevorrichtung und die Ausgabevorrichtung 26, 28 sind ebenfalls bekannt. Die Eingabevorrichtung 26 kann eine Tastatur, eine Maus, einen physikalischen Transducer (z.B. ein Mikrophon), etc. umfassen. Die Ausgabevorrichtung 28 kann eine Anzeige, einen Drucker, einen Transducer (z.B. einen Lautsprecher), etc. umfassen. Einige Vorrichtungen, wie beispielsweise eine Netzschnittstelle oder ein Modem können als Eingabe und/oder Ausgabevorrichtung verwendet werden.
  • Wie dem Fachmann ebenfalls bekannt ist, umfaßt das Computersystem 20 des weiteren ein Betriebssystem und zumindest ein Anwendungsprogramm. Das Betriebssystem ist die Gruppe von Software, mit der der Betrieb des Computersystems und die Zuweisung von Ressourcen gesteuert wird. Das Anwendungsprogramm ist die Gruppe von Software mit der ein vom Nutzer gewünschter Prozeß ausgeführt wird, wobei Gebrauch von den durch das Betriebssystem verfügbar gemachten Ressourcen des Computers gemacht wird. Beide befinden sich im dargestellten Speichersystem 24.
  • Gemäß der Praxis des Computerprogrammierfachmanns wird die vorliegende Erfindung, soweit nichts anderes angegeben ist, im folgenden mit Bezugnahme auf symbolische Darstellungen von Operationen beschrieben, die vom Computersystem 20 ausgeführt werden. Derartige Operationen werden manchmal als von einem Computer ausgeführt bezeichnet. Es ist verständlich, daß die Operationen, die symbolisch wiedergegeben sind, die Handhabung der Datenbits repräsentierenden elektrischen Signale durch die CPU 22 und die Pflege von Datenbits an Speicherorten im Speichersystem 24 sowie andere Signalverarbeitungen umfassen. Die Speicherorte, an welchen Datenbits aufrechterhalten werden, sind physikalische Orte, die spezielle elektrische, magnetische oder optische, den Datenbits entsprechende Eigenschaften aufweisen.
  • 2A und 2B sind vereinfachte Darstellungen eines Anzeigebildes 50 einer Videoanzeigevorrichtung 52 (zum Beispiel ein Fernseh- oder Computermonitor), in welchen zwei aufeinanderfolgende Einzelbilder 54a und 54b einer Videobildsequenz dargestellt sind, die elektronisch durch ein entsprechendes Videosignal wiedergegeben werden. Videosignale können in irgendeiner einer Vielzahl von Videosignalformaten einschließlich von analogen Fernsehvideoformaten, wie beispielsweise NTSC, PAL und SECAM, und gepixelten oder digitalisierten Videosignalformaten, wie beispielsweise VGA, CGA und EGA, die typischerweise in Computeranzeigen verwendet werden, vorliegen. Vorzugsweise liegen die Einzelbildern entsprechenden Videosignale in einem digitalisierten Videosignalformat entweder so, wie sie ursprünglich erzeugt wurden oder durch Umwandlung aus einem analogen Videosignalformat vor, wie im Stand der Technik bekannt ist.
  • Die Einzelbilder 54a und 54b umfassen jeweils ein rechteckiges massives Bildmerkmal 56 und ein Pyramidenbildmerkmal 58, die vor einem Hintergrund 60 angeordnet sind. Die Bildmerkmale 56 und 58 in den Einzelbildern 54a und 54b weisen ein unterschiedliches Aussehen auf, da verschiedene Teile verdeckt und sichtbar sind. Für den Zweck der folgenden Beschreibung wird die spezielle Form eines Einzelbildes in einem Einzelbild als Objekt oder alternativ als Maske bezeichnet. Dementsprechend ist das rechteckige massive Bildmerkmal 56 als rechteckige massive Objekte 56a und 56b in den jeweiligen Einzelbildern 54a und 54b gezeigt und das Pyramidenbildmerkmal 58 als Pyramidenobjekte 58a und 58b in den jeweiligen Einzelbildern 54a und 54b gezeigt.
  • Das Pyramidenbildmerkmal 58 ist in den Einzelbildern 54a und 54b in derselben Position und Orientierung gezeigt und würde, wenn es in einer Videosequenz gezeigt wird, als bewegungslos „erscheinen". Der rechteckige massive Körper 56 ist in den Einzelbildern 54a und 54b mit einer unterschiedlichen Orientierung und Position relativ zur Pyramide 58 gezeigt und würde als sich relativ zur Pyramide 58 bewegend und drehend „erscheinen", wenn er in der Videosequenz gezeigt wird. Die Erscheinungsbilder der Bildmerkmale 58 und 60 sind figurativ und übertrieben. Die Einzelbilder einer Videosequenz werden typischerweise mit Geschwindigkeiten im Bereich von 30-80 Hz angezeigt. Die menschliche Wahrnehmung einer Videobewegung erfordert typischerweise mehr als zwei Einzelbilder. Die Einzelbilder 54a und 54b stellen zum Zweck einer Veranschaulichung der vorliegenden Erfindung daher eine vereinfachte Darstellung einer herkömmlichen Videosequenz dar. Darüber hinaus ist ersichtlich, daß die vorliegende Erfindung in keiner Weise auf derartige vereinfachte Videobilder, Bildmerkmale oder Sequenzen beschränkt ist und im Gegensatz dazu auf Videobilder und Sequenzen mit beliebiger Komplexität anwendbar ist.
  • Übersicht über den Videokompressionskodierungsprozeß
  • 3A ist ein verallgemeinertes Funktionsblockdiagramm eines Videokompressionskodierungsprozesses 64 zur Komprimierung digitalisierter Videosignale, die eine Darstellung einer Bewegung in Videosequenzen aus mehreren Einzelbildern bilden. Die Komprimierung von Videoinformationen (d.h. Videosequenzen oder Signalen) kann eine sparsame Speicherung und Übertragung von digitalen Videoinformationen in Anwendungen darstellen, die beispielsweise interaktive oder digitale Fernseh- und multimediale Computeranwendungen umfassen. Aus Gründen der Kürze werden die Funktionsblöcken des Kodierungsprozesses 64 zugeordneten Bezugszeichen austauschbar auch mit Bezug auf die durch die Funktionsblöcke erzielten Ergebnisse verwendet.
  • Bei herkömmlichen Videokompressionstechniken werden Ähnlichkeiten zwischen aufeinanderfolgenden Einzelbildern, die als zeitliche oder Zwischenbildkorrelation bezeichnet werden, zur Erzielung einer Zwischenrahmenkompression verwendet, bei der auf Pixeln basierende Darstellungen von Einzelbildern in Bewegungsdarstellungen umgewandelt werden. Zusätzlich werden bei herkömmlichen Videokompressionstechniken Ähnlichkeiten innerhalb von Einzelbildern, die als räumliche oder Intrabildkorrelation bezeichnet werden, zur Erzielung einer Intrabildkompression verwendet, bei der die Bewegungsdarstellungen innerhalb eines Einzelbildes weiter komprimiert sind.
  • Bei derartigen herkömmlichen Videokompressionstechniken, einschließlich von MPEG-1, MPEG-2 und H.26X werden die zeitlichen und räumlichen Korrelationen relativ zu einfachen Translationen fester, regelmäßiger (z.B. quadratischer) Pixelarrays bestimmt. Die Videoinformationen umfassen im allgemeinen jedoch beliebige Videobewegungen, die nicht korrekt durch eine Translation quadratischer Pixelarrays wiedergegeben werden können. Folglich umfassen herkömmliche Videokompressionstechniken typischerweise beträchtliche Fehlerkomponenten, wodurch die Kompressionsrate und Genauigkeit beschränkt wird.
  • Im Gegensatz dazu wird beim Kodierungsprozeß 64 eine objektbasierte Videokompression zur Verbesserung der Genauigkeit und Vielseitigkeit der Kodierung von Zwischenbildbewegungs- und Intrabildmerkmalen verwendet. Mit dem Kodierungsprozeß 64 werden eher Informationen mit Bezug auf Objekte mit willkürlichen Konfigurationen als feste regelmäßige Pixelarrays komprimiert. Dadurch werden die Fehlerkomponenten reduziert und die Kompressionseffizienz und Genauigkeit erhöht. Als weiterer Vorteil bietet die objektbasierte Videokompression Möglichkeiten für eine interaktive Videoeditierung zur Verarbeitung komprimierter Videoinformationen.
  • Mit Bezugnahme auf 3A gibt der Funktionsblock 66 an, daß nutzerdefinierte Objekte in Einzelbildern einer Videosequenz von anderen Objekten in den Einzelbildern segmentiert werden. Die Objekte können jede beliebige Konfiguration aufweisen und geben vorzugsweise unterschiedliche Bildmerkmale in einem Anzeigebild wieder. Die Segmentierung umfaßt die Identifizierung der den Objekten entsprechenden Pixel in den Einzelbildern. Die nutzerdefinierten Objekte werden in jedem Einzelbild in der Videosequenz definiert. In 2A und 2B werden beispielsweise rechteckige massive Objekte 56a und 56b und Pyramidenobjekte 58a und 58b getrennt segmentiert.
  • Die segmentierten Objekte werden durch binäre oder Mehrbit (z.B. 8-Bit) „Alphakanal"-Masken der Objekte wiedergegeben. Die Objektmasken geben die Größe, Konfiguration und Position eines Objekts auf einer Pixel-für-Pixel Basis wieder. Aus Gründen der Vereinfachung ist die folgende Beschreibung auf binäre Masken gerichtet, in welchen jedes Pixel des Objektes durch ein einzelnes binäres Bit wiedergegeben wird und nicht durch die typischen 24-Bit (d.h. 8 Bits für jeden der drei Farbkomponentenwerte). Mehrbit (z.B. 8-Bit)-Masken werden ebenfalls verwendet.
  • Der Funktionsblock 68 gibt an, daß „Merkmalspunkte" jedes Objektes durch einen Nutzer definiert werden. Die Merkmalspunkte sind vorzugsweise unterscheidbare Merkmale oder Aspekte des Objektes. Beispielsweise könnten Ecken 70a-70c und Ecken 72a-72c von einem Nutzer als Merkmalspunkt des rechteckigen massiven Körpers 56 bzw. der Pyramide 58 definiert werden. Die jeder Objektmaske entsprechenden Pixel und deren Merkmalspunkte in jedem Einzelbild werden in einer Objektdatenbasis gespeichert, die vom Speichersystem 24 umfaßt ist.
  • Der Funktionsblock 74 gibt an, daß Änderungen der Positionen von Merkmalspunkten in aufeinanderfolgenden Einzelbildern identifiziert und für die Merkmalspunkte zwischen aufeinanderfolgenden Einzelbildern Trajektorien bestimmt werden. Die Trajektorien geben die Richtung und den Umfang der Bewegung der Merkmalspunkte wieder. Der Funktionsblock 76 gibt an, daß die Trajektorien der Merkmalspunkte im Objekt zwischen dem vorangehenden Bild N-1 und dem momentanen Bild N ebenfalls aus der Objektdatenbasis abgerufen werden.
  • Der Funktionsblock 78 gibt an, daß für das Objekt zwischen dem vorangehenden Bild N-1 und dem momentanen Bild N eine spärliche Bewegungstransformation bestimmt wird. Die spärliche Bewegungstransformation basiert auf den Merkmalspunkttrajektorien zwischen den Bildern N-1 und N. Die spärliche Bewegungstransformation gewährleistet eine Näherung der Änderung des Objektes zwischen dem vorangehenden Bild N-1 und dem momentanen Bild N.
  • Der Funktionsblock 80 gibt an, daß eine Maske eines Objekts in einem momentanen Bild aus der Objektdatenbasis im Speichersystem 24 abgerufen wird.
  • Der Funktionsblock 90 gibt an, daß ein quantisiertes Stammobjekt oder „Sprite" aus den Objekten oder Masken 66, die einem Einzelbild in einer Einzelbildsequenz und Merkmalspunkttrajektorien 74 entsprechen, gebildet wird. Das Stammobjekt umfaßt vorzugsweise alle Aspekte oder Eigenschaften eines Objektes, die in mehreren Bildern wiedergegeben werden. Mit Bezugnahme auf 2A und 2B umfaßt beispielsweise der rechteckige massive Körper 56 im Bild 54b eine Seite 78b, die im Bild 54a nicht gezeigt ist. Ähnlich umfaßt der rechteckige massive Körper 56 im Bild 54a eine Seite 78a, die im Bild 54b nicht gezeigt ist. Das Stammobjekt für den rechteckigen massiven Körper 56 umfaßt beide Seiten 78a und 78b.
  • Eine spärliche Bewegungstransformation 78 bietet häufig nicht eine vollständige Wiedergabe der Änderung im Objekt zwischen den Bildern N-1 und N. Beispielsweise könnte ein Objekt in einem vorangehenden Bild N-1, wie beispielsweise das rechteckige Objekt 54a, nicht alle Merkmale des Objekts im momentanen Bild N, wie beispielsweise die Seite 78b des rechteckigen Objekts 54b umfassen.
  • Um die Genauigkeit der Transformation zu verbessern wird daher beispielsweise durch eine logische UND-Funktion eine Schnittmenge der Masken des Objekts im vorangehenden Bild N-1 und im momentanen Bild N bestimmt, wie im Stand der Technik bekannt ist. Die Maske des Objekts im momentanen Bild N wird von der resultierenden Schnittmenge subtrahiert, um alle Abschnitte oder Merkmale des Objektes im momentanen Bild N, die nicht im Objekt im vorangehenden Bild N-1 enthalten sind, zu identifizieren (z.B. die Seite 78b des rechteckigen Objektes 54b, wie oben beschrieben wurde). Die neu identifizierten Abschnitte des Objektes werden in das Stammobjekt 90 integriert, so daß es eine vollständige Wiedergabe des Objektes in den Bildern N-1 und N umfaßt.
  • Der Funktionsblock 96 gibt an, daß eine quantisierte Form eines Objektes 98 in einem vorangehenden Bild N-1 (z.B. das rechteckige massive Objekt 56a im Einzelbild 54a) durch eine komplexe Bewegungstransformation transformiert wird, um eine vorhergesagte Form des Objektes 102 in einem momentanen Bild N zu liefern (z.B. das rechteckige massive Objekt 56b im Einzelbild 54b). Diese Transformation gewährleistet eine objektbasierte Zwischenbildkompression.
  • Die komplexe Bewegungstransformation umfaßt vorzugsweise die Bestimmung einer affinen Transformation zwischen dem quantisierten vorangehenden Objekt 98 im Bild N-1 und dem Objekt im momentanen Bild N und die Anwendung der affinen Transformation auf das quantisierte vorangehende Objekt 98. Die bevorzugte affine Transformation wird durch affine Transformationskoeffizienten 104 wiedergegeben und ist dazu eingerichtet, eine Translation, Drehung, Vergrößerung und Scherung zu beschreiben. Die affine Transformation wird aus einer dichten Bewegungsabschätzung, die vorzugsweise eine Pixel-für-Pixel Abbildung zwischen einem vorangehenden quantisierten Objekt 98 und dem Objekt im momentanen Bild N umfaßt, bestimmt.
  • Das vorbestimmte momentane Objekt 102 wird durch das quantisierte vorangehende Objekt 98 wiedergegeben, das durch die dichte Bewegungstransformation 96 modifiziert ist, und ist dazu geeignet, eine relativ komplexe Bewegung zusammen mit allen neuen Bildaspekten, die vom Stammobjekt 90 erhalten wurden, darzustellen. Derartige objektbasierte Darstellungen sind relativ genau, da Fehler, die sich aus den typischerweise ändernden Beziehungen zwischen verschiedenen Objekten in verschiedenen Einzelbildern ergeben, durch die mit den Objekten verbundene wahrnehmbare und räumliche Kontinuität eliminiert werden. Darüber hinaus ermöglichen es die objektbasierten Darstellungen einem Nutzer verschiedene Objekte mit unterschiedlichen Auflösungsniveaus wiederzugeben, um die relative Effizienz und Genauigkeit zur Darstellung von Objekten mit unterschiedlicher Komplexität zu optimieren.
  • Der Funktionsblock 106 gibt an, daß für das Einzelbild N das vorhergesagte momentane Objekt 102 vom ursprünglichen Objekt 108 für das momentane Bild N subtrahiert wird, um einen abgeschätzten Fehler 110 im vorhergesagten Objekt 102 zu bestimmen. Der abgeschätzte Fehler 110 ist eine komprimierte Darstellung des momentanen Objekts 108 im Einzelbild N im Verhältnis zum quantisierten vorangehenden Objekt 98. Insbesondere kann das momentane Objekt 108 aus dem abgeschätzten Fehler 110 und dem quantisierten vorangehenden Objekt 98 dekodiert bzw. rekonstruiert werden.
  • Der Funktionsblock 112 gibt an, daß der abgeschätzte Fehler 110 mit einem herkömmlichen „verlustbehafteten" Standbildkompressionsverfahren, wie beispielsweise einer Gitter-Subband-(wavelet)-Kompression oder einer Kodierung, wie sie in „Multirate Systems and Filter Banks" von Vaidyanathan, PTR Prentice-Hall, Inc., Englewood Cliffs, New Jersey, (1993) beschrieben ist oder einer Kodierung mit diskreter Cosinustransformation (DCT) wie sie in „JPEG: Still Image Data Compression Standard" von Pennebaker et al., Van Nostrand Reinhold, New York (1993) beschrieben ist, komprimiert oder „kodiert" wird.
  • Wie im Stand der Technik bekannt ist, werden durch „verlustbehaftete" Kompressionsverfahren in einem gewissen Umfang Datenverzerrungen eingeführt, um eine erhöhte Datenkompression zu gewährleisten. Die Datenverzerrung bezieht sich auf Änderungen zwischen den ursprünglichen Daten vor der Komprimierung und den nach der Kompression und Dekompression erhaltenen Daten. Zur Veranschaulichung wird im folgenden angenommen, daß es sich bei der Komprimierung oder Kodierung des Funktionsblocks 102 um eine Wavelet-Kodierung handelt.
  • Der Funktionsblock 114 gibt an, daß der mit Wavelet-Kodierung abgeschätzte Fehler aus dem Funktionsblock 112 mit Hilfe eines herkömmlichen „verlustfreien" Standbildkompressionsverfahrens zur Bildung komprimierter Daten 116 weiter komprimiert bzw. „kodiert" wird. Ein bevorzugtes herkömmliches „verlustfreies" Standbildkompressionsverfahren ist die beispielsweise in „JPEG: Still Image Data Compression Standard" von Pennebaker et al. beschriebene Entropiekodierung. Wie im Stand der Technik bekannt ist, werden durch „verlustfreie" Kompressionsverfahren keine Datenverzerrungen eingeführt.
  • Der Wavelet-kodierte abgeschätzte Fehler aus dem Funktionsblock 112 für das Objekt im Bild N wird in einer Fehlerrückkopplungsschleife 118 verwendet, um ein vorangehendes quantisiertes Objekt für das nachfolgende Bild N+1 zu erhalten. Als Anfangsschritt in der Rückkopplungsschleife 118 gibt der Funktionsblock 120 an, daß der Wavelet-kodierte abgeschätzte Fehler vom Funktionsblock 112 invers Wavelet-kodiert bzw. Wavelet-dekodiert wird, um einen quantisierten Fehler 122 für das Objekt im Einzelbild N zu bilden.
  • Die Wirkung des aufeinanderfolgenden Kodierens und Dekodierens des abgeschätzten Fehlers 110 mit Hilfe eines verlustbehafteten Standbildkompressionsverfahrens besteht darin, aus dem quantisierten Fehler 122 Videoinformationen wegzulassen, die von Betrachtern im allgemeinen nicht wahrnehmbar sind. Diese Informationen umfassen typischerweise höhere Frequenzen. Im Ergebnis kann durch Weglassen derartiger höherfrequenter Komponenten typischerweise eine Bildkompression von bis zu ungefähr 200 % mit lediglich einer minimalen Verschlechterung der Bildqualität bereitgestellt werden.
  • Der Funktionsblock 124 gibt an, daß der quantisierte Fehler 122 und das vorhergesagte Objekt 102 beide für das Einzelbild N addiert werden, um ein quantisiertes Objekt 126 für das Einzelbild N zu bilden. Nach einer Zeitkoordinationsverzögerung 128 wird das quantisierte Objekt 126 das quantisierte vorangehende Objekt 98 und wird als Basis zur Verarbeitung des entsprechenden Objekts im Einzelbild N+1 verwendet.
  • Im Kodierungsprozeß 64 wird die zeitliche Korrelation entsprechender Objekte in aufeinanderfolgenden Einzelbildern verwendet, um eine verbesserte Zwischenbildkompression zu erhalten, und wird die räumliche Korrelation innerhalb von Objekten verwendet, um eine genaue und wirkungsvolle Intrabildkompression zu erhalten. Für die Zwischenbildkompression werden eine Bewegungsabschätzung und Kompensation durchgeführt, so daß ein in einem Bild definiertes Objekt in einem nachfolgenden Bild abgeschätzt werden kann. Die auf der Bewegung basierende Abschätzung des Objektes im nachfolgenden Bild erfordert beträchtlich weniger Informationen als eine herkömmliche blockbasierte Darstellung des Objektes. Zur Intrabildkompression wird ein abgeschätztes Fehlersignal für jedes Objekt komprimiert, um die räumliche Korrelation des Objektes in einem Bild zu nutzen und um zu ermöglichen, daß unterschiedliche Objekte mit unterschiedlichen Auflösungen wiedergegeben werden. Die Rückkopplungsschleife 118 ermöglicht, daß Objekte in nachfolgenden Bildern aus vollständig dekomprimierten Objekten vorhergesagt werden können, wodurch eine Akkumulation des Abschätzungsfehlers verhindert wird.
  • Der Kodierungsprozeß 64 liefert als eine Ausgabe eine komprimierte oder kodierte Darstellung eines digitalisierten Videosignals, das eine in Videosequenzen mehrerer Einzelbilder dargestellte Bewegung wiedergibt. Die komprimierte bzw. kodierte Darstellung umfaßt Objektmasken 66, Merkmalspunkte 68, affine Transformationskoeffizienten 104 und komprimierte Fehlerdaten 116. Die kodierte Darstellung kann entsprechend der speziellen Anwendung, in der die Videoinformationen verwendet werden, gespeichert oder übertragen werden.
  • 3B ist ein Funktionsblockdiagramm eines Stammobjektkodierungsprozesses 130 zur Kodierung oder Komprimierung eines Stammobjektes 90. Der Funktionsblock 132 gibt an, daß das Stammobjekt 90 mit Hilfe eines herkömmlichen „verlustbehafteten" Standbildkompressionsverfahrens, wie beispielsweise einer Gitter-Subband-(Wavelet)-Kompression oder mit einer Kodierung mit diskreter Cosinustransformation (DCT) komprimiert bzw. kodiert wird. Vorzugsweise wird im Funktionsblock 132 eine Wavelet-Kodierung verwendet.
  • Der Funktionsblock 134 gibt an, daß das Wavelet-kodierte Stammobjekt aus dem Funktionsblock 132 mit Hilfe eines herkömmlichen „verlustfreien" Standbildkompressionsverfahrens zur Bildung von komprimierten Stammobjektdaten 136 weiter komprimiert bzw. kodiert wird. Ein bevorzugtes herkömmliches verlustfreies Standbildkompressionsverfahren ist die Entropie-Kodierung.
  • Der Kodierungsprozeß 130 liefert als eine Ausgabe ein komprimiertes Stammobjekt 136. Zusammen mit den vom Kodierungsprozeß 64 gelieferten komprimierten bzw. kodierten Darstellungen kann das komprimierte Stammobjekt 136 nach einer Speicherung oder Übertragung dekomprimiert bzw. dekodiert werden, um eine Videosequenz mehrerer Einzelbilder zu erhalten.
  • Der Kodierungsprozeß 64 wird mit Bezugnahme auf eine Kodierung von Videoinformation, die einem einzelnen Objekt in einem Einzelbild entsprechen, beschrieben. Wie in 2A und 2B gezeigt ist und oben angegeben wurde, wird der Kodierungsprozeß 64 getrennt für jedes der Objekte in einem Einzelbild (z.B. Objekte 56 und 58 aus 2A und 2B) durchgeführt. Darüber hinaus umfassen viele Videobilder einen Hintergrund, auf dem eine beliebige Zahl von Bildmerkmalen oder Objekten wiedergegeben ist. Vorzugsweise wird der Hintergrund gemäß dieser Erfindung als ein Objekt verarbeitet, nachdem alle durch den Nutzer bezeichneten Objekte verarbeitet wurden.
  • Die Verarbeitung der Objekte in einem Einzelbild erfordert, daß die Objekte getrennt identifiziert werden. Vorzugsweise wird der Kodierungsprozeß 64 auf die Objekte eines Einzelbildes beginnend mit dem sich am weitesten im Vordergrund befindenden Objekt bzw. Objekten angewandt und schreitet sukzessive zum sich am weitesten im Hintergrund befindenden Objekt fort (z.B. dem Hintergrund). Die Zusammensetzung der kodierten Objekte in ein Videobild erfolgt vorzugsweise vom sich am weitesten im Hintergrund befindenden Objekt (z.B. dem Hintergrund) und sukzessive zu dem sich am weitesten im Vordergrund befindenden Objekt (z.B. dem rechteckigen massiven Körper 56 in den 2A und 2B). Die Schichtung der kodierten Objekte kann als getrennte den Objekten eines Einzelbildes zugeordnete Schichtungsdaten übermittelt werden oder alternativ durch Übertragen oder Erhalten der kodierten Objekte in einer der Schichtung oder Zusammensetzungssequenz entsprechenden Sequenz.
  • Objektsegmentierung und Tracking
  • Bei einer bevorzugten Ausführungsform erlaubt die Segmentierung von Objekten in Einzelbilder, auf die im Funktionsblock 66 Bezug genommen wurde, eine interaktive Segmentierung durch den Nutzer. Die Objektsegmentierung gemäß dieser Erfindung gewährt eine verbesserte Genauigkeit bei der Segmentierung von Objekten und ist verhältnismäßig schnell und gewährleistet Nutzern eine optimale Flexibilität bei der Definition der zu segmentierenden Objekte.
  • 4 ist ein Funktionsblockdiagramm eines Objektssegmentierungsprozesses 140 zur Segmentierung ausgewählter Objekte aus einem Einzelbild einer Videosequenz. Die Objektsegmentierung gemäß dem Prozeß 140 gewährleistet eine wahrnehmbare Gruppierung von Objekten, die genau und schnell ist und von Nutzern einfach bestimmt werden kann.
  • Bei 5A handelt es sich um eine vereinfachte Darstellung eines Anzeigebildes 50 einer Videoanzeigevorrichtung 52, das ein Einzelbild 54a und die Segmentierung des rechteckigen massiven Objektes 56a zeigt. Bei seiner Wiedergabe auf dem Anzeigebild 50 umfaßt das rechteckige massive Objekt 56a eine Objektbegrenzung 142 (die aus Gründen der Klarheit vom Objekt 56a getrennt gezeigt ist), durch die das Innere 144 eines Objektes abgegrenzt wird. Das Innere 144 des Objektes bezieht sich auf die Kontur des Objektes 56a auf dem Anzeigebild 50 und kann im allgemeinen einer inneren Oberfläche oder, wie gezeigt ist, einer äußeren Oberfläche des Bildmerkmals entsprechen. Bei 5B handelt es sich um eine vergrößerte Darstellung eines Teils des Anzeigebildes 50, in dem die halbautomatische Segmentierung des rechteckigen massiven Objektes 56a gezeigt ist. Die folgende Beschreibung wird speziell unter Bezugnahme auf das rechteckige massive Objekt 56a angegeben, ist jedoch auf ähnliche Weise auf jedes aus einem Einzelbild zu segmentierende Objekt anwendbar.
  • Der Funktionsblock 146 gibt an, daß von einem Nutzer im Inneren 144 des Objektes eine innere Kontur 148 der Objektbegrenzung 142 gebildet wird. Die innere Kontur 148 wird vom Nutzer vorzugsweise mit Hilfe eines herkömmlichen Pointers bzw. einer Cursor-Steuerungsvorrichtung, wie beispielsweise einer Maus oder einem Trackball gebildet. Die innere Kontur 148 wird innerhalb einer nominalen Entfernung 150 von der Objektbegrenzung 142 gebildet. Die nominale Entfernung 150 wird vom Nutzer ausreichend groß gewählt, so daß der Nutzer die innere Kontur 148 relativ schnell innerhalb der nominalen Distanz 150 von der Begrenzung 142 bilden kann. Die nominale Distanz 150 entspricht beispielsweise einem Bereich zwischen ungefähr 4 und 10 Pixeln.
  • Der Funktionsblock 146 wird in Verbindung mit einem Schlüsselbild einer Videosequenz durchgeführt. Mit Bezugnahme auf eine Szene in einem herkömmlichen Film könnte es sich bei dem Schlüsselbild beispielsweise um das erste Bild mehrerer Bilder in einer Szene handeln. Durch die Teilnahme des Nutzers an dieser Funktion wird der Objektsegmentierungsprozeß 140 halbautomatisch, wobei jedoch die Genauigkeit und Flexibilität, mit der Objekte segmentiert werden, beträchtlich erhöht werden. Objekte in nachfolgenden Einzelbildern werden anders als das Schlüsselbild automatisch segmentiert, wie nachfolgend in weiteren Einzelheiten beschrieben ist.
  • Der Funktionsblock 152 gibt an, daß die innere Kontur 148 automatisch erweitert wird, um eine äußere Kontur 156 zu bilden. Die Bildung der äußeren Kontur 156 erfolgt als eine relativ einfache Bildvergrößerung der Kontur 148, so daß die äußere Kontur 156 bei einer durch den Nutzer definierten Anzahl von Pixeln von der inneren Kontur 148 entfernt befindet. Vorzugsweise umfaßt die Entfernung zwischen der inneren Kontur 148 und der äußeren Kontur 156 näherungsweise das Doppelte der Entfernung 150.
  • Der Funktionsblock 158 gibt an, daß Pixel zwischen der inneren Kontur 148 und der äußeren Kontur 156 gemäß vordefinierter Attribute danach klassifiziert werden, ob sie sich innerhalb des Inneren 144 des Objektes befinden, um dadurch automatisch die Objektbegrenzung 142 und eine entsprechende Maske 80 der mit Bezug auf 3A beschriebenen Art zu festzulegen. Vorzugsweise umfassen die Bildattribute die Pixelfarbe und Position, wobei jedoch eines dieser Attribute alleine verwendet werden könnte oder zusammen mit anderen Attributen.
  • Bei der bevorzugten Ausführungsform wird durch jedes der Pixel auf der inneren Kontur 148 und der äußeren Kontur 156 ein „Clusterzentrum" definiert, das als fünfdimensionaler Vektor in der Form (r, g, b, x, y) dargestellt ist. Die Ausdrücke r, g und b entsprechen der jeweiligen jedem der Pixel zugeordneten roten, grünen und blauen Farbkomponente und die Ausdrücke x und y entsprechen den Pixelorten. Die den Pixeln auf der inneren Kontur 148 entsprechenden Clusterzentrumsvektoren der Zahl m werden als {I0, I1, ..., Im-1} bezeichnet und die Clusterzentrumsvektoren der Zahl n, die den Pixeln auf der äußeren Kontur 156 entsprechen, werden als {O0, O1, ..., On-1} bezeichnet.
  • Pixel zwischen den Clusterzentrumsvektoren Ii und Oj werden durch Identifizieren des Vektors zu dem sich jedes Pixel im fünfdimensionalen Vektorraum am nächsten befindet, klassifiziert. Für jedes Pixel wird die absolute Entfernung di und dj zu den jeweiligen Clusterzentrumsvektoren Ii und Oj gemäß den folgenden Gleichungen berechnet: dj = WFarbe(Ir-ri I + Ig-gi I + b-bi I) + wKoord(IX-Xi I + Iy-yi I), 0≤1≤m, dj = WFarbe(Ir-rj I + Ig-gj I + Ib-bj i) + wKoord(Ix-xj I + Iy-yj I), O≤j<n,in welchen wFarbe und wKoord Gewichtungsfaktoren für die jeweilige Farb- und Pixelpositionsinformation sind. Die Gewichtungsfaktoren wFarbe und wKoord umfassen Werte mit einer Summe von 1 und sind ansonsten von einem Nutzer wählbar. Vorzugsweise umfassen die Gewichtungsfaktoren wFarbe und wKoord einen gleichen Wert von 0,5. Gemäß der minimalen fünfdimensionalen Distanz zu einem der Clusterzentrumsvektoren Ii und Oj wird jedes Pixel dem Inneren 144 oder Äußeren eines Objektes zugeordnet.
  • Der Funktionsblock 162 gibt an, daß ein Nutzer zumindest zwei und vorzugsweise mehr (z.B. 4 bis 6) Merkmalspunkte in jedem Objekt eines Anfangsbildes bzw. Schlüsselbildes wählt. Vorzugsweise handelt es sich bei den Merkmalspunkten um relativ unterschiedliche Ansichten des Objektes. Mit Bezugnahme auf das rechteckige massive Bildmerkmal 56 könnten beispielsweise die Ecken 70a-70c als Merkmalspunkte gewählt werden.
  • Der Funktionsblock 164 gibt an, daß ein Block 166 aus mehreren um jeden gewählten Merkmalspunkt (z.B. die Ecken 70a-70c) zentrierten Pixeln definiert wird und mit einem entsprechenden Block in einem nachfolgenden Einzelbild (z.B. dem nächsten nachfolgenden Einzelbild) abgeglichen wird. Der Pixelblock 166 ist vom Nutzer definiert, umfaßt jedoch vorzugsweise ein 32 × 32 Pixelarray, das lediglich Pixel im Inneren 144 eines Bildes umfaßt. Alle Pixel 168 (die durch die Schraffur gekennzeichnet sind) des Pixelblocks 166, die aus dem Inneren 144 des Objektes herausfallen, werden weggelassen, wie durch den Funktionsblock 158 definiert ist (z.B. die Ecken 70b und 70c). Die Pixelblöcke 166 werden mit den entsprechenden Pixelblöcken im nächsten Einzelbild entsprechend einem minimalen absoluten Fehler abgeglichen, der mit Hilfe eines herkömmlichen Blockabgleichsprozesses oder Polygonabgleichprozesses bestimmt wird, wie in weiteren Einzelheiten im folgenden beschrieben wird.
  • Der Funktionsblock 170 gibt an, daß eine spärliche Bewegungstransformation eines Objektes aus den entsprechenden Merkmalspunkten in zwei aufeinanderfolgenden Einzelbildern bestimmt wird. Der Funktionsblock 172 gibt an, daß die Maske 80 des momentanen Einzelbildes gemäß der spärlichen Bewegungstransformation transformiert wird, um eine Abschätzung der Maske 80 für das nächste Einzelbild zu liefern. Jeder Merkmalspunkt in einem momentanen Bild, der nicht in einem nachfolgenden Einzelbild identifiziert wird, bleibt unberücksichtigt.
  • Der Funktionsblock 174 gibt an, daß die resultierende Abschätzung der Maske 80 für das nächste Einzelbild um ein Bild verzögert wird und als Kontur 176 für einen nächsten nachfolgenden Zyklus dient. Ähnlich gibt der Funktionsbock 178 an, daß auch die entsprechenden Merkmalspunkte um ein Bild verzögert werden und als Anfangsmerkmalspunkte 180 für das nächste, folgende Bild verwendet werden.
  • Polygonabgleichsverfahren
  • 6 ist ein Funktionsblockdiagramm eines Polygonabgleichsprozesses 200 zur Bestimmung eines Bewegungsvektors für jedes Paar sich entsprechender Pixel in aufeinanderfolgenden Einzelbildern. Eine derartige Bestimmung eines komplexen Bewegungsvektors bildet die Basis zur Bestimmung der komplexen Bewegungstransformationen 96 aus 3A.
  • Der Polygonabgleichprozeß 200 ist ähnlich wie der herkömmliche Blockabgleichsprozeß dazu eingerichtet, eine umfassende Bewegung zwischen aufeinanderfolgenden Einzelbildern zu bestimmen. Im Gegensatz zum herkömmlichen Blockabgleichsprozeß behält der Polygonabgleichsprozeß 200 seine Genauigkeit auch für sich in der Nähe oder an einer Objektbegrenzung befindende Pixel bei und erzeugt deutlich weniger Fehler. Eine bevorzugte Ausführungsform eines Polygonabgleichsverfahrens 200 umfaßt eine verbesserte Recheneffizienz.
  • Das Polygonblockverfahren 200 wird mit Bezugnahme auf 7A und 7B beschrieben, wobei es sich um vereinfachte Darstellungen eines Anzeigebildes 50 handelt, in welchen zwei aufeinanderfolgende Einzelbilder 202a und 202b gezeigt sind, in welchen ein Bildmerkmal 204 als Objekt 204a bzw. 204b wiedergegeben ist.
  • Der Funktionsblock 206 gibt an, daß Objekte 204a und 204b für die Einzelbilder 202a und 202b identifiziert werden und beispielsweise mit Hilfe des Objektsegmentierungsverfahrens 140 segmentiert werden.
  • Der Funktionsblock 208 gibt an, daß Abmessungen für einen auf das Objekt 204a und einen Suchbereich 212 um das Objekt 204a anzuwendenden Pixelblock 210b bestimmt werden (z.B. 15 × 15 Pixel). Durch den Pixelblock 210b wird ein Bereich um jedes Pixel im Objekt 204b definiert, wobei für diesen Bereich ein entsprechender Pixelblock 210a im Objekt 204a identifiziert wird. Durch den Suchbereich 212 wird ein Bereich festgelegt, in dem ein entsprechender Pixelblock 210a gesucht wird. Vorzugsweise handelt es sich bei dem Pixelblock 210b und dem Suchbereich 212 um rechteckige Pixelarrays, die durch den Nutzer definierte Größen aufweisen.
  • Der Funktionsblock 214 gibt an, daß ein Anfangspixel 216 im Objekt 204b identifiziert wird und als das momentane Pixel bezeichnet wird. Das Anfangspixel 216 kann durch irgendeines einer Vielzahl von Kriterien bestimmt werden, wie beispielsweise als das Pixel am Ort mit der größten vertikalen Erstreckung und der minimalen horizontalen Erstreckung. Sind die Pixel auf dem Anzeigebild 50 gemäß einer Koordinatenachse 220 angeordnet, wie gezeigt ist, kann das Anfangspixel 216 als das Pixel des Objekts 214b mit einem maximalen y-Koordinatenwert und einem minimalen x-Koordinatenwert dargestellt werden.
  • Der Funktionsblock 222 gibt an, daß der Pixelblock 210b um das momentane Pixel zentriert ist und sich um dieses erstreckt.
  • Der Funktionsblock 224 gibt eine Prüfung wieder, ob der Pixelblock 210b Pixel umfaßt, die nicht im Objekt 204b enthalten sind (z.B. die mit der Schraffur in 7B bezeichneten Pixel 226). Diese Prüfung wird mit Bezugnahme auf die gemäß dem Funktionsblock 206 identifizierten Objekte durchgeführt. Immer wenn Pixel im am momentanen Pixel positionierten Pixelblock 210b aus dem Objekt 204b herausfallen, schreitet der Funktionsblock 224 zum Funktionsblock 228 fort und ansonsten zum Funktionsblock 232.
  • Der Funktionsblock 228 gibt an, daß Pixel des Pixelblocks 210b, die aus dem Objekt 204b herausfallen (z.B. Pixel 226) aus dem durch den Pixelblock 210b definierten Bereich weggelassen werden, so daß dieser lediglich Pixel innerhalb des Objekts 204b umfaßt.
  • Im Ergebnis wird durch den Pixelblock 210b ein Bereich definiert, der typischerweise eine polygonale Form umfaßt, die komplexer ist als der ursprünglich definierte quadratische oder rechteckige Bereich.
  • Der Funktionsblock 232 gibt an, daß ein Pixel im Objekt 204a als dem momentanen Pixel im Objekt 204b entsprechend definiert wurde. Das Pixel im Objekt 204a wird als das vorangehende entsprechende Pixel bezeichnet. Vorzugsweise wird das vorangehende entsprechende Pixel durch Bilden eines Pixelblocks 210a um jedes Pixel im Suchbereich 212 und durch Bestimmen einer Korrelation zwischen dem Pixelblock 210a und dem Pixelblock 210b um das momentane Pixel im Objekt 204b identifiziert. Jede Korrelation zwischen den Pixelblöcken 210a und 210b kann beispielsweise mit Hilfe eines absoluten Fehlers bestimmt werden. Das vorangehende entsprechende Pixel wird durch Identifizieren des Pixelblocks 210a im Suchbereich 212 identifiziert, für den der mittlere absolute Fehler im Verhältnis zum Pixelblock 210b minimiert ist. Ein mittlerer absoluter Fehler E für einen Pixelblock 210a im Verhältnis zum Pixelblock 210b kann bestimmt werden als:
    Figure 00250001
    wobei die Ausdrücke rij, gij und bij der jeweiligen roten, grünen und blauen Farbkomponente entsprechen, die jedem der Pixel im Pixelblock 210b zugeordnet ist, und die Ausdrücke rij', gij' und bij' der jeweiligen roten, grünen und blauen Farbkomponente entsprechen, die jedem der Pixel im Pixelblock 210a zugeordnet ist.
  • Wie oben dargestellt, implizieren die Summierungen, um den mittleren absoluten Fehler E zu erhalten, Pixelblöcke mit Pixelarrays, die Abmessungen von mxn Pixeln aufweisen. Die Pixelblöcke 210b mit polygonaler Konfiguration werden relativ einfach beispielsweise durch Definieren von Nullwerten für die Farbkomponenten aller Pixel außerhalb der polygonalen Pixelblöcke 210b angepaßt.
  • Der Funktionsblock 234 gibt an, daß ein Bewegungsvektor MV zwischen jedem Pixel im Objekt 204b und dem entsprechenden vorangehenden Pixel im Objekt 204a bestimmt wird. Ein Bewegungsvektor wird als die Differenz zwischen den Orten des Pixels im Objekt 204b und dem entsprechenden vorangehenden Pixel im Objekt 204a definiert: MV = (|x, – x'k|,|y, – y'k|),wobei die Ausdrücke xj und yj der jeweiligen x- und y-Koordinatenposition des Pixels im Pixelblock 210b und die Ausdrücke xk' und yk' der jeweiligen x- und y-Koordinatenposition des entsprechenden vorangehenden Pixels im Pixelblock 210a entsprechen.
  • Der Funktionsblock 236 gibt eine Prüfung wieder, ob das Objekt 204b irgendwelche verbleibenden Pixel umfaßt. Immer wenn das Objekt 204b verbleibende Pixel umfaßt, schreitet der Funktionsblock 236 zum Funktionsblock 238 fort und ansonsten zum Endblock 240.
  • Der Funktionsblock 238 gibt an, daß ein nächstes Pixel im Objekt 204b gemäß einem vorbestimmten Format bzw. einer Sequenz identifiziert wird. Ist das Anfangspixel, wie oben mit Bezugnahme auf den Funktionsblock 214 beschrieben wurde, gewählt, können nachfolgende Pixel definiert werden, indem zuerst das nächste benachbarte Pixel in einer Reihe identifiziert wird (d.h. mit einem gemeinsamen y-Koordinatenwert) und, falls das Objekt 204 keine weiteren Pixel in einer Reihe umfaßt, durch Fortschreiten zum ersten oder sich am weitesten links befindenden Pixel (d.h. mit dem minimalen x-Koordinatenwert) in einer nächsten tieferen Reihe. Das so identifizierte Pixel wird als das momentane Pixel bezeichnet und der Funktionsblock 238 kehrt zum Funktionsblock 222 zurück.
  • Mit dem Polygonblockverfahren 200 werden entsprechende Pixel selbst dann genau identifiziert, wenn sie sich am oder in der Nähe der Objektbegrenzung befinden. Eine beträchtliche Fehlerquelle bei herkömmlichen Blockabgleichsprozessen wird dadurch eliminiert, daß Pixel von Pixelblöcken 210b, die aus dem Objekt 204 herausfallen, weggelassen werden bzw. unberücksichtigt bleiben. Bei herkömmlichen Blockabgleichsprozessen wird starr eine gleichförmige Pixelblockkonfiguration und ohne Bezugnahme auf ein segmentiertes Objekt angewandt. Die gleichförmigen Blockkonfigurationen verursachen beträchtliche Fehler für Pixel neben der Begrenzung eines Objekts, da die Pixel außerhalb des Objekts beträchtlichen Änderungen unterliegen können, wenn sich das Objekt bewegt oder sich sein Hintergrund ändert. Mit derartigen von herkömmlichen Blockabgleichsprozessen umfaßten irrelevanten Pixeländerungen können Pixel in der Umgebung einer Objektbegrenzung nicht genau mit den entsprechenden Pixeln in vorangehenden Einzelbildern korreliert werden.
  • Für jedes Pixel im Objekt 204b wird ein entsprechendes vorangehendes Pixel im Objekt 204a durch Vergleichen des Pixelblocks 210b mit einem Pixelblock 210a für jedes der Pixel im vorangehenden Objekt 204a identifiziert. Das entsprechende vorangehende Pixel ist das Pixel im Objekt 204a, das den Pixelblock 210a umfaßt, der am besten mit dem Pixelblock 210b korreliert. Bei einer Verarbeitung in herkömmlicher Weise kann eine derartige Bestimmung einen beträchtlichen Rechenaufwand zur Bestimmung jedes entsprechenden vorangehenden Pixels erfordern. Beispielsweise sind für Pixelblöcke mit Abmessungen von n × n Pixeln, die wesentlich geringer sind als ein Suchbereich 212 mit Abmessungen von m × m Pixeln, ungefähr n2 × m2-Berechnungen erforderlich, um jedes entsprechende vorangehende Pixel im vorangehenden Objekt 204a zu identifizieren.
  • Pixelblockkorrelationsprozeß
  • 8 ist ein Funktionsblockdiagramm eines modifizierten Pixelblockkorrelationsprozesses 260, durch den vorzugsweise der mit Bezug auf den Funktionsblock 232 beschriebene ersetzt wird. Beim modifizierten Korrelationsprozeß 260 wird eine beim Korrelieren der Pixelblöcke 210b und 210a inhärente Redundanz dazu verwendet, die Zahl der erforderlichen Berechnungen beträchtlich zu reduzieren.
  • Der Korrelationsprozeß 260 wird mit Bezugnahme auf 9A-9G und 10A-10G beschrieben, in welchen schematisch beliebige Pixelgruppen wiedergegeben sind, die aufeinanderfolgenden Einzelbildern 202a und 202b entsprechen. Insbesondere handelt es sich bei 9A um eine schematische Darstellung eines Pixelblocks 262 mit Abmessungen von 5 × 5 Pixeln, wobei jedes dieser einem unterschiedlichen Pixel entspricht. Die Pixel des Pixelblocks 262 sind als ein rechteckiges regelmäßiges Pixelarray angeordnet, das unterschiedliche Spalten 264 umfaßt. In 9A ist ein Pixelarray 266 mit Abmessungen von q × q Pixeln dargestellt, das einem Suchbereich 212 in einem vorangehenden Einzelbild 202a entspricht. Jede der Ziffern in 9B gibt ein unterschiedliches Pixel wieder. Obwohl der Korrelationsprozeß 260 mit Bezugnahme auf einen herkömmlichen rechteckigen regelmäßigen Pixelblock 262 beschrieben wurde, ist er auf ähnliche Weise auf polygonale Pixelblöcke der mit Bezug auf den Polygonabgleichsprozeß 200 beschriebenen Art anwendbar.
  • Der Funktionsblock 268 gibt an, daß ein Anfangspixelblock (z.B. Pixelblock 262) mit Bezug zu einem zentralen Pixel M definiert und über einen Suchbereich 212 (z.B. Pixelarray 262) im allgemeinen in einem Rastermuster (das teilweise in 7A gezeigt ist) wie bei einem herkömmlichen Blockabgleichsprozeß abgetastet wird. Die 9C-9G zeigen schematisch fünf der näherungsweise q2 Schritte im Blockabgleichsprozeß zwischen dem Pixelblock 262 und dem Pixelarray 266.
  • Obwohl das Abtasten des Pixelblocks 262 über das Pixelarray 266 in herkömmlicher Weise durchgeführt wird, werden die Berechnungen, die die Korrelation zwischen diesen betreffen, gemäß dieser Erfindung auf andere Weise ausgeführt. Insbesondere wird eine Korrelation (z.B. ein mittlerer absoluter Fehler) bestimmt und für jede Spalte 264 des Pixelblocks 262 an jeder Abtastposition gespeichert. Die Korrelation, die für jede Spalte 264 des Pixelblocks 262 an jeder abgetasteten Position bestimmt und gespeichert wird, wird als eine Spaltenkorrelation 270 bezeichnet, wobei mehrere davon symbolisch in den 9C-9G durch Bezugnahme auf die korrelierten Pixel angegeben sind. Als Beispiel zeigt 9C eine Spaltenkorrelation 270(1), die für die einzelne Spalte 264 des Pixelblocks 262 bestimmt wurde, der mit dem Pixelarray 266 ausgerichtet ist. Auf ähnliche Weise zeigt 9D Spaltenkorrelationen 270(2) und 270(3), die für die beiden Spalten 264 des Pixelblocks 262 bestimmt wurden, der mit dem Pixelarray 266 ausgerichtet ist. In 9E-9G sind ähnliche Spaltenkorrelationen mit dem Pixelblock 262 an drei beispielhaften aufeinanderfolgenden Abtastpositionen relativ zum Pixelarray 266 gezeigt.
  • Das Abtasten des Anfangspixelblocks 262 über das Pixelarray 266 liefert ein gespeichertes Array bzw. eine Datenbasis von Spaltenkorrelationen. Mit einem Pixelblock 262 mit einer Zahl r von Spalten 264 und einem Pixelarray 266 mit q × q Pixeln, umfaßt die Spaltenkorrelationsdatenbasis näherungsweise eine Zahl von rq2 Spaltenkorrelationen. Diese Zahl von Spaltenkorrelationen ist lediglich näherungsweise, da der Pixelblock 262 vorzugsweise am Anfang über das Pixelarray 266 so abgetastet wird, daß das Pixel M mit der ersten Reihe von Pixeln im Pixelarray 266 ausgerichtet ist.
  • Die verbleibenden Schritte, die mit dem in 9C angegebenen beginnen, treten nach zwei vollständigen Abtastungen des Pixelblocks 262 über das Pixelarray 266 auf (d.h. wobei das Pixel M mit der ersten und der zweiten Reihe des Pixelarrays 266 ausgerichtet ist).
  • Der Funktionsblock 274 gibt an, daß ein nächster Pixelblock 276 (10A) beispielsweise aus dem Einzelbild 202b mit Bezug zu einem zentralen Pixel N in derselben Reihe wie das Pixel 1V1 definiert wird. Der Pixelblock 276 umfaßt eine Spalte 278 aus Pixeln, die nicht vom Pixelblock 262 umfaßt sind, und Spalten 280 aus Pixeln, die vom Pixelblock 262 umfaßt sind. Der Pixelblock 276 umfaßt jedoch keine Spalte 282 (9A) die vom Pixelblock 262 umfaßt ist. Eine derartige inkrementelle Definition eines nächsten Pixelblocks 276 ist im wesentlichen dieselbe, die bei herkömmlichen Blockabgleichsprozessen verwendet wird.
  • Der Funktionsblock 284 gibt an, daß der Pixelblock 276 über das Pixelarray 266 in der oben mit Bezugnahme auf den Funktionsblock 268 beschriebenen Weise abgetastet wird. Wie die 9C-9G, geben auch die 10B-10G das Abtasten des Pixelblocks 276 über das Pixelarray 266 wieder.
  • Der Funktionsblock 286 gibt an, daß eine Spaltenkorrelation für die Spalte 278 bestimmt wird und bei jeder Abtastposition gespeichert wird. Dementsprechend werden Spaltenkorrelationen 288(1)-288(5) mit Bezug zu den abgetasteten Positionen der Spalte 278 erzeugt, die in den entsprechenden 10B-10F gezeigt sind.
  • Der Funktionsblock 290 gibt an, daß für jede der Spalten 280 im Pixelblock 276 eine gespeicherte Spaltenbestimmung für jede Abtastposition, die zuvor berechnet und im Funktionsblock 268 gespeichert wurde, abgerufen wird. Beispielsweise handelt es sich bei der Spaltenkorrelation 270(1) aus 9C um dieselbe wie die Spaltenkorrelation 270'(1) aus 10C. In ähnlicher Weise handelt es sich bei den Spaltenkorrelationen 270'(2), 270'(3), 270'(5)-270'(8) und 270'(15)-270'(18) aus den 10D-10F um dieselben wie die entsprechenden Spaltenkorrelationen in 9D, 9E, und 9G. Daher wird für den Pixelblock 276 lediglich eine Spaltenkorrelation 288 für jede Abtastposition berechnet. Im Ergebnis wird die Zahl der für den Pixelblock 276 erforderlichen Berechnungen um nahezu 80 % reduziert.
  • Der Funktionsblock 292 gibt an, daß ein nachfolgender Pixelblock 294 (11A) mit Bezug zu einem zentralen Pixel R in der nächsten nachfolgenden Reihe im Verhältnis zum Pixel M definiert wird. Der Pixelblock 294 umfaßt Spalten 296 aus Pixeln, die ähnlich zu den Spalten 264 aus Pixeln im Pixelblock 262 aus 9A sind, sich davon jedoch unterscheiden. Insbesondere umfassen die Spalten 296 Pixel A'-E', die nicht in den Spalten 264 enthalten sind. Eine derartige inkrementelle Definition eines nachfolgenden Pixelblocks 294 ist im wesentlichen dieselbe, die bei herkömmlichen Blockabgleichsprozessen verwendet wird.
  • Der Funktionsblock 298 gibt an, daß der Pixelblock 294 über das Pixelarray 266 (9B) in der oben mit Bezugnahme auf die Funktionsblöcke 268 und 276 beschriebene Weise abgetastet wird. Die 11B-11F geben das Abtasten des Pixelblocks 294 über das Pixelarray 266 wieder.
  • Der Funktionsblock 300 gibt an, daß eine Spaltenkorrelation für jede der Spalten 296 bestimmt und gespeichert wird. Dementsprechend werden Spaltenkorrelationen 302(1)-302(18) mit Bezug zu den abgetasteten Positionen der Spalten 296, die in 11D-11F gezeigt sind, erzeugt.
  • Jede der Spaltenkorrelationen 302(1)-302(8) kann in einer verkürzten Weise mit Bezugnahme auf die bezüglich des Pixelblocks 262 (9A) erstellten Spaltenkorrelationen berechnet werden.
  • Beispielsweise umfassen die Spaltenkorrelationen 302(4)-302(8) aus 11D Unterspaltenkorrelationen 304'(4)-304'(8), bei welchen es sich um dieselben wie bei den Unterspaltenkorrelationen 304(4)-304(8) aus 9E handelt. Dementsprechend können die Spaltenkorrelationen 302(4)-302(8) aus entsprechenden Spaltenkorrelationen 270(4)-270(8) durch Subtrahieren von Korrelationswerten für die Pixel 01A, 02B, 03C, 04D und 05E von den letzteren bestimmt werden, um jeweils Unterspaltenkorrelationen 304(4)-304(8) zu bilden. Die Spaltenkorrelationen 302(4)-302(8) können durch Addieren von Korrelationswerten für die Pixelpaare 56A', 57B', 58C', 59D' und 50E' zu den jeweils entsprechenden Unterspaltenkorrelationswerten 304(4)-304(8) erhalten werden.
  • Die Bestimmung der Spaltenkorrelationen 302(4)-302(8) aus den entsprechenden Spaltenkorrelationen 270(4)-270(8) zieht ein Subtrahieren von individuellen Pixelkorrelationswerten nach sich, die den Pixelreihen A-E des Pixelblocks 262 entsprechen, die nicht im Pixelblock 294 enthalten sind, und ein Addieren von Pixelkorrelationswerten für die Pixelreihen A'-E', die vom Pixelblock 294 umfaßt sind, jedoch nicht vom Pixelblock 262. Bei diesem Verfahren werden für jede der Spaltenkorrelationen 302(4)-302(8) die fünf Additionen, die erforderlich wären, um jede Spaltenkorrelation auf herkömmliche Weise zu bestimmen, durch eine Subtraktion und eine Addition ersetzt. Bei Pixelblöcken mit größeren Abmessungen, wie sie bevorzugt sind, ist die Verbesserung gemäß diesem Verfahren gegenüber herkömmlichen Berechnungsverfahren sogar noch größer. Bei herkömmlichen Blockabgleichsprozessen werden lediglich Gesamtblockkorrelationen für jede Abtastposition eines Anfangspixelblocks 262 im Verhältnis zum Pixelarray 266 identifiziert. Folglich müssen alle Korrelationswerte für alle Pixel für jede Abtastposition getrennt berechnet werden. Im Gegensatz dazu werden beim Korrelationsprozeß 260 gespeicherte Spaltenkorrelationen 270 verwendet, um die Zahl der erforderlichen Berechnungen deutlich zu reduzieren. Die durch den Korrelationsprozeß 260 erzielten Verbesserungen bezüglich der Geschwindigkeit und der Anforderungen an die Prozessorressourcen gleichen die Systemanforderungen zur Speicherung der Spaltenkorrelationen mehr als aus.
  • Es ist verständlich, daß der Korrelationsprozeß 260 mit Bezugnahme auf die 9-11 zur Darstellung spezieller Eigenschaften dieser Erfindung angegeben wurde. Wie in den Darstellungen gezeigt ist, umfaßt diese Erfindung wiederkehrende oder zyklische Merkmale, die für eine Ausführung durch ein Computersystem besonders geeignet sind. Diese wiederkehrenden oder zyklischen Merkmale hängen von den Dimensionen der Pixelblöcke und den Pixelarrays ab, sind gut verstanden und können vom Fachmann implementiert werden.
  • Multidimensionale Transformation
  • 12 zeigt ein Funktionsblockdiagramm eines Transformationsverfahrens 350, das eine Erzeugung einer multidimensionalen Transformation zwischen Objekten in einem ersten und einem zweiten nachfolgenden Einzelbild und eine Quantisierung der Abbildung zur Übertragung oder Speicherung umfaßt. Die multidimensionale Transformation wird vorzugsweise in Verbindung mit dem Funktionsblock 96 aus 3 verwendet. Das Transformationsverfahren 350 wird mit Bezugnahme auf 7A und 13 beschrieben, wobei es sich bei der letzteren Figur ähnlich wie bei 7B um eine vereinfachte Darstellung eines Anzeigebildes 50 handelt, das ein Einzelbild 202b zeigt, in dem ein Bildmerkmal 204, wie beispielsweise das Objekt 204b, wiedergegeben ist.
  • Das Transformationsverfahren 350 liefert vorzugsweise eine multidimensionale affine Transformation, die dazu geeignet ist, eine komplexe Bewegung wiederzugeben, die entweder beliebige oder alle von einer Translation, Drehung, Vergrößerung und Scherung umfaßt. Das Transformationsverfahren 350 bietet eine beträchtliche Verbesserung gegenüber herkömmlichen Videokompressionsverfahren, wie beispielsweise MPEG-1, MPEG-2 und H.26X, die lediglich eindimensional sind und lediglich eine Translation wiedergeben. Diesbezüglich bezieht sich die Dimensionalität einer Transformation auf die Zahl der Koordinaten in der verallgemeinerten Form der Transformation, wie nachfolgend in weiteren Einzelheiten beschrieben wird. Die Zunahme der Genauigkeit mit der eine komplexe Bewegung gemäß dieser Erfindung dargestellt wird, führt zu weniger Fehlern als bei herkömmlichen Darstellungen, wodurch die Kompressionseffizienz erhöht wird.
  • Der Funktionsblock 352 gibt an, daß eine Abschätzung einer komplexen Bewegung der Pixel in den Objekten 204a und 204b bestimmt wird. Vorzugsweise wird die Abschätzung der komplexen Bewegung durch einen Polygonabgleichsprozeß 200 erhalten. Wie oben beschrieben wurde, umfaßt die Abschätzung einer komplexen Bewegung Bewegungsvektoren zwischen Pixeln an Koordinaten (xi, yi) im Objekt 204b des Einzelbilds 202b und entsprechenden Pixeln an den Orten (xi', yi') des Objekts 204a im Einzelbild 202a.
  • Der Funktionsblock 354 gibt an, daß ein Array aus Transformationsblöcken 356 definiert wird, das das Objekt 204b umfaßt. Vorzugsweise handelt es sich bei den Transformationsblöcken 356 um rechteckige regelmäßige Pixelarrays mit Abmessungen von beispielsweise 32 × 32 Pixeln.
  • Der Funktionsblock 358 gibt an, daß für jeden Transformationsblock 356 eine multidimensionale affine Transformation erzeugt wird. Vorzugsweise sind die affinen Transformationen von erster Ordnung und werden dargestellt als: xi' = axi + byi + c yi' = dxi + eyi + f, und werden unter Bezugnahme auf alle Pixel bestimmt, für die die Bewegungsvektoren relativ zuverlässig sind. Diese affinen Transformationen umfassen zwei Dimensionen, da xi' und yi' relativ zu zwei Koordinaten xi und yi definiert sind.
  • Die relative Zuverlässigkeit der Bewegungsvektoren bezieht sich auf die Genauigkeit, mit der der Bewegungsvektor zwischen zwei entsprechenden Pixeln eindeutig im Verhältnis zu anderen Pixeln bestimmt werden kann. Beispielsweise können Bewegungsvektoren zwischen bestimmten Pixeln, die sich in relativ großen Pixelarrays befinden und gleichförmig gefärbt sind (z.B. Schwarz) typischerweise nicht genau bestimmt werden. Insbesondere haben für ein schwarzes Pixel in einem ersten Einzelbild viele Pixel im Pixelarray des nachfolgenden Einzelbildes dieselbe Korrelation (d.h. mittleren absoluten Fehlerwert zwischen den Pixelblöcken).
  • Im Gegensatz dazu weisen Pixelarrays, in welchen Pixel unterschiedlichen Merkmalen entsprechen, typischerweise relativ hohe Korrelationen für bestimmte sich entsprechende Pixel in aufeinanderfolgenden Einzelbildern auf.
  • Die relativ hohen Korrelationen werden vorzugsweise als eine Bestimmung eines minimalen absoluten Fehlerwerts für bestimmte Pixel wiedergegeben. Bewegungsvektoren mit relativ hoher Zuverlässigkeit können daher mit Bezug zu solchen eindeutig niedrigen Fehlerwerten bestimmt werden. Beispielsweise kann ein Bewegungsvektor mit hoher Zuverlässigkeit als ein solcher definiert werden, bei dem der minimale absolute Fehlerwert für den Bewegungsvektor um einen Differenzbetrag niedriger ist als der nächstgrößere mit dem Pixel verbundene Fehlerwert, der größer ist als ein Schwellendifferenzbetrag. Alternativ können Bewegungsvektoren hoher Zuverlässigkeit mit Bezug zur Ableitung zweiter Ordnung der absoluten Fehlerwerte definiert werden, auf deren Grundlage hin die Korrelationen bestimmt werden. Eine Ableitung zweiter Ordnung die größer ist als ein bestimmter Wert würde eine relativ hohe Korrelation zwischen bestimmten entsprechenden Pixeln anzeigen.
  • Mit einer Anzahl n von Pixeln bei derartigen Bewegungsvektoren hoher Zuverlässigkeit werden die bevorzugten affinen Transformationsgleichungen mit Bezug zur Zahl n entsprechender Pixel in den Einzelbildern 202a und 202b gelöst. Die Einzelbilder müssen zumindest drei entsprechende Pixel in den Einzelbildern 202a und 202b mit Bewegungsvektoren hoher Zuverlässigkeit umfassen, um nach den sechs unbekannten Koeffizienten a, b, c, d, e und f der bevorzugten affinen Transformationsgleichungen auflösen zu können. Bei den bevorzugten Abmessungen umfaßt jeder Transformationsblock 356 210 Pixel, von welchen typischerweise eine beträchtliche Anzahl Bewegungsvektoren mit relativ hoher Zuverlässigkeit aufweist. Dementsprechend sind die affinen Transformationsgleichungen überbestimmt, da eine beträchtlich größere Anzahl von Pixeln für die Lösung nach den Koeffizienten a, b, c, d, e und f verfügbar ist.
  • Die resultierende Zahl n an Gleichungen kann durch den linearen algebraischen Ausdruck dargestellt werden:
    Figure 00340001
  • Vorzugsweise werden diese Gleichungen mit Hilfe eines herkömmlichen Verfahrens zur Singulärwertzerlegung (SWZ) gelöst, das einen minimalen Fehler der kleinsten Quadrate für die Näherung der komplexen Bewegungsvektoren liefert. Ein herkömmliches SWZ-Verfahren wird beispielsweise in „Numerical Recipes in C" von Press et al., Cambridge University Press, (1992) beschrieben.
  • Wie oben beschrieben wurde, sind die bevorzugten zweidimensionalen affinen Transformationsgleichungen dazu geeignet, eine Translation, Drehung, Vergrößerung und Scherung von Transformationsblöcken 356 zwischen aufeinanderfolgenden Einzelbildern 202a und 202b wiederzugeben. Im Gegensatz dazu werden bei herkömmlichen Bewegungstransformationsverfahren, die bei früheren Kompressionsstandards verwendet werden, vereinfachte Transformationsgleichungen in der folgenden Form verwendet: xi' = xi + g yi' = yi + h
  • Die früheren vereinfachten Transformationsgleichungen geben eine Bewegung lediglich durch zwei Koeffizienten g und h wieder, was lediglich ein Drittel der Menge an Informationen (d.h. Koeffizienten) dargestellt, die mit den bevorzugten multidimensionalen Transformationsgleichungen erhalten werden. Um eine höhere Komprimierung der durch das Transformationsverfahren 350 erhaltenen Informationen im Verhältnis zu herkömmlichen Komprimierungsverfahren zu erhalten, sind die Abmessungen des Transformationsblocks 356 vorzugsweise mehr als das Dreifache größer als die bei den MPEG-1 und MPEG-2 Komprimierungsverfahren verwendeten 16 × 16 Pixelblöcke. Die bevorzugten 32 × 32 Abmessungen von Pixeln der Transformationsblöcke 356 umfassen das Vierfache der Zahl der bei den Transformationsblöcken herkömmlicher Transformationsverfahren verwendeten Pixel. Die größeren Abmessungen der Transformationsblöcke 356 erlauben zusammen mit der verbesserten Genauigkeit mit der die affinen Transformationskoeffizienten eine Bewegung der Transformationsblöcke 356 wiedergeben, daß das Transformationsverfahren 350 eine höhere Komprimierung liefern kann, als herkömmliche Komprimierungsverfahren.
  • Es ist ersichtlich, daß die gemäß der vorliegenden Erfindung erzeugten affinen Koeffizienten typischerweise nicht ganzzahlige Fließkommawerte sind, deren angemessene Komprimierung ohne Beeinträchtigung ihrer Genauigkeit schwierig wäre. Dementsprechend wird bevorzugt, den affinen Transformationskoeffizienten zu quantisieren, um die zur Speicherung oder Übertragung desselben erforderliche Bandweite zu reduzieren.
  • Der Funktionsblock 362 gibt an, daß die mit Bezugnahme auf den Funktionsblock 358 erzeugten affinen Transformationskoeffizienten quantisiert werden, um die zur Speicherung oder Übertragung derselben erforderliche Bandbreite zu reduzieren. 14 ist eine vergrößer te bruchstückhafte Darstellung eines Transformationsblocks 356, der diese drei ausgewählten Pixel 364a, 364b und 364c zeigt, aus welchen die sechs bevorzugten affinen Transformationskoeffizienten a-f bestimmt werden können.
  • Die Pixel 364a-364c werden als Pixelkoordinaten (x1, y1), (x2, y2) bzw. (x3, y3) dargestellt. Basierend auf der Abschätzung der komplexen Bewegung gemäß dem Funktionsblock 352 weisen die Pixel 364a-364c jeweils entsprechende Pixel (x1', y1'), (x2', y2') und (x3', y3') im vorangehenden Einzelbild 202a auf. In herkömmlicher Weise werden die Pixelorte (xi, yi) durch ganzzahlige Werte wiedergegeben und sind Lösungen der affinen Transformationsgleichungen, auf welchen die bevorzugten affinen Transformationskoeffizienten basieren. Dementsprechend werden ausgewählte Pixel 364a-364c zur Berechnung der entsprechenden Pixel aus dem vorangehenden Einzelbild 202a verwendet, wobei es sich typischerweise um Fließkommawerte handelt.
  • Die Quantisierung dieser Fließkommawerte wird durch Umwandeln der Differenz zwischen entsprechenden Pixeln (xi-xi', yi-yi') in ein ganzzahliges Format durchgeführt. Die affinen Transformationskoeffizienten werden bestimmt, indem zuerst die Pixelwerte (xi', yi') aus den Differenzvektoren und den Pixelwerten (xi, yi) berechnet werden und danach die multidimensionalen Transformationsgleichungen des Funktionsblocks 358 hinsichtlich der Pixelwerte (xi', yi') gelöst werden.
  • Wie in 14 gezeigt ist, werden die Pixel 364a-364c vorzugsweise über den Transformationsblock 356 verteilt, um die Sensitivität der Quantisierung gegenüber lokalen Änderungen im Transformationsblock 356 zu minimieren. Vorzugsweise wird das Pixel 364a an oder in der Nähe des Zentrums des Transformationsblocks 356 positioniert und werden die Pixel 364b und 364c an oberen Ecken angeordnet. Bei der bevorzugten Ausführungsform haben auch die gewählten Pixel für jeden der Transformationsblöcke 356 im Objekt 204b dieselben Positionen, wodurch der Quantisierungsprozeß wirkungsvoll ausgeführt werden kann.
  • Ein weiterer Gesichtspunkt des Quantisierungsverfahrens gemäß dem Funktionsblock 362 ist, daß unterschiedliche Quantisierungsniveaus verwendet werden können, um variierende Bewegungsgrade wiederzugeben. Im Ergebnis kann eine relativ einfache Bewegung (z.B. Translation) durch weniger gewählte Punkte 364 wiedergegeben werden, als zur Wiedergabe einer komplexen Bewegung erforderlich sind. Bezüglich der oben beschriebenen affinen Transformationsgleichungen sind das Pixel 364a (x1, y1) vom Objekt 204b und das entsprechende Pixel (x1', y1') vom Objekt 204a ausreichend, um vereinfachte affine Transformationsgleichungen der folgenden Form zu lösen: x1' = y1 + c y1' = y1 + f,welche eine Translation zwischen einander folgenden Einzelbildern wiedergeben. Speziell das Pixel 364a wird verwendet, da seine zentrale Position im allgemeinen eine Translationsbewegung unabhängig von den anderen Bewegungstypen wiedergibt. Dementsprechend kann eine vereinfachte Bewegung, wie beispielsweise eine Translation, mit vereinfachten affinen Transformationsgleichungen, die ein Drittel der zur Darstellung einer komplexen Bewegung erforderlichen Daten erfordern, von einem Nutzer selektiv wiedergegeben werden.
  • Auf ähnliche Weise sind ein Paar gewählter Pixel (x1, y1) (z.B. Pixel 364a) und (x2, y2) (d.h. eines der Pixel 364b und 364c) aus dem Objekt 204b und die entsprechenden Pixel (x1', y1') und (x2', y2') aus dem Objekt 204a ausreichend, um vereinfachte affine Transformationsgleichungen der folgenden Form zu lösen: x1' = ax1 + c yi' = ey1 + f1,die zur Darstellung von Bewegungen geeignet sind, die eine Translation und eine Vergrößerung zwischen aufeinanderfolgenden Einzelbildern umfassen. In der vereinfachten Form: x' = acosθx + sinθy + c y' = –sinθx + acosθy + fsind die entsprechenden Paare gewählter Pixel dazu geeignet, Bewegungen wiederzugeben, die eine Translation, Drehung und eine isotrope Vergrößerung darstellen. Bei dieser vereinfachten Form ermöglichen es die gemeinsamen Koeffizienten der x- und y-Variablen, daß die Gleichungen durch zwei entsprechende Pixelpaare gelöst werden können.
  • Dementsprechend kann eine mäßig komplexe Bewegung, die eine Translation, Drehung und eine Vergrößerung umfaßt, von einem Nutzer selektiv mit teilweise vereinfachten affinen Transformationsgleichungen wiedergegeben werden. Derartige Gleichungen würden zwei Drittel der zur Darstellung einer komplexen Bewegung erforderlichen Daten erfordern. Ein Hinzufügen des dritten ausgewählten Pixels (x3, y3) vom Objekt 204b, des entsprechenden Pixels (x3', y3') vom Objekt 204a und der vollständigen bevorzugten affinen Transformationsgleichungen erlaubt es einem Nutzer, eine Scherung zwischen aufeinanderfolgenden Einzelbildern wiederzugeben.
  • Eine bevorzugte Ausführungsform des Transformationsverfahrens 350 (12) wird unter Verwendung gleichförmiger Transformationsblöcke 356 mit Größen von beispielsweise 32 × 32 Pixel beschrieben. Die mit Bezugnahme auf den Funktionsblock 358 beschriebenen multidimensionalen affinen Transformation werden mit Bezugnahme auf die Transformationsblöcke 356 bestimmt. Es ist verständlich, daß die Größen der Transformationsblöcke 356 das von diesem Verfahren gelieferte Komprimierungsverhältnis direkt beeinflussen.
  • Zur Darstellung von Transformationen eines Objekts zwischen Einzelbildern sind weniger Transformationsblöcke 356 mit relativ großen Abmessungen erforderlich als Transformationsblöcke 356 mit geringeren Abmessungen. Eine Folge von gleichförmigen großen Transformationsblöcken 350 ist, daß für jeden Transformationsblock ein entsprechend größerer Fehler eingeführt werden kann. Dementsprechend umfassen die gleich bemessenen Transformationsblöcke 356 typischerweise gemäßigte Abmessungen, um diese in Konflikt stehenden Leistungsbeschränkungen auszugleichen.
  • Transformationsblockoptimierung
  • 15 zeigt ein Funktionsblockdiagramm eines Transformationsblockoptimierungsverfahrens 370, von dem die Größen der Transformationsblöcke, die eine minimale Fehlerschwelle gewährleisten, automatisch gewählt werden. Das Optimierungsverfahren 370 wird mit Bezugnahme auf 16 beschrieben, wobei es sich um eine vereinfachte Darstellung eines Anzeigebildes 50 handelt, das einen Teil eines Einzelbildes 202b mit dem Objekt 204 zeigt.
  • Der Funktionsblock 372 gibt an, daß ein Anfangstransformationsblock 374 mit Bezug zum Objekt 204b definiert wird. Der Anfangstransformationsblock 374 umfaßt vorzugsweise die maximalen Abmessungen, die von einem Nutzer gewählt werden können und beispielsweise 64 × 64 Pixel umfassen. Der Anfangstransformationsblock 374 wird als der momentane Transformationsblock bezeichnet.
  • Der Funktionsblock 376 gibt an, daß ein momentanes Signal-Rausch-Verhältnis (MSRV) im Zusammenhang mit dem momentanen Transformationsblock berechnet wird. Das Signal-Rausch-Verhältnis wird vorzugsweise als das Verhältnis der Änderung der Farbkomponentenwerte des Pixels im momentanen Transformationsblock (d.h. das Signal) zur Änderung der Farbkomponentenwerte der mit dem abgeschätzten Fehler 98 verbundenen Pixel (3) berechnet.
  • Der Funktionsblock 378 gibt an, daß der momentane Transformationsblock (z.B. der Transformationsblock 374) beispielsweise in vier gleiche Unterblöcke 380a-380d unterteilt wird, affine Transformationen für jeden der Unterblöcke 380a-380d bestimmt werden und ein zukünftiges Signal-Rausch-Verhältnis bezüglich der affinen Transformationen bestimmt wird. Das zukünftige Signal-Rausch-Verhältnis wird im wesentlichen in derselben Weise berechnet wie das mit Bezugnahme auf den Funktionsblock 376 beschriebene Signal-Rausch-Verhältnis.
  • Der Prüfblock 382 stellt eine Überprüfung dar, ob das zukünftige Signal-Rausch-Verhältnis um mehr als einen durch einen Nutzer gewählten Schwellenbetrag größer ist als das momentane Signal-Rausch-Verhältnis. Diese Überprüfung gibt eine Feststellung wieder, daß eine weitere Unterteilung des momentanen Transformationsblocks (z.B. des Transformationsblocks 374) die Genauigkeit der affinen Transformationen um zumindest den Schwellenbetrag verbessern würde. Immer wenn das zukünftige Signal-Rausch-Verhältnis um mehr als den Schwellenbetrag größer ist als das momentane Signal-Rausch-Verhältnis schreitet der Prüfblock 382 zum Funktionsblock 384 fort und ansonsten zum Funktionsblock 388.
  • Der Funktionsblock 384 gibt an, daß Unterblöcke 380a-380d nacheinander als der momentane Transformationsblock bestimmt werden und jeweils analysiert wird, ob sie weiter unterteilt werden müssen. Zur Veranschaulichung wird der Unterblock 380a als die momentane Transformation bestimmt und gemäß dem Funktionsblock 376 bearbeitet und in Unter blöcke 386a-386d weiter unterteilt. Der Funktionsblock 388 gibt an, daß ein nächster nachfolgender Transformationsblock 374' identifiziert und als ein Anfangs- bzw. momentaner Transformationsblock bezeichnet wird.
  • Vorkomprimierungs-Extrapolationsverfahren
  • 17A und 17B sind Funktionsblockdiagramme eines Vorkomprimierungs-Extrapolationsverfahrens 400 zum Extrapolieren von Bildmerkmalen mit einer beliebigen Konfiguration in eine vordefinierte Konfiguration, um eine Komprimierung gemäß dem Funktionsblock 112 des Kodierungsprozesses 64 (beide aus 3) zu erleichtern. Das Extrapolationsverfahren 400 ermöglicht, daß die Kompression des Funktionsblocks 112 in einer herkömmlichen Weise, wie beispielsweise mit DCT oder einer Gitter-Wavelet-Komprimierung durchgeführt werden kann, wie oben beschrieben wurde.
  • Konventionelle Standbildkomprimierungsverfahren, wie beispielsweise die Gitter-Wavelet-Komprimierung oder diskrete Cosinustransformationen (DCT) werden auf rechteckige Pixelarrays durchgeführt. Wie oben beschrieben wurde, sind die Verfahren gemäß der vorliegenden Erfindung jedoch auf Bildmerkmale oder Objekte mit beliebiger Konfiguration anwendbar. Eine Extrapolation derartiger Objekte oder Bildmerkmale in eine rechteckige Pixelarraykonfiguration ermöglicht eine Verwendung herkömmlicher Standbildkomprimierungsverfahren, wie beispielsweise der Gitter-Wavelet-Komprimierung oder von DCT. Nachfolgend wird das Extrapolationsverfahren 400 mit Bezugnahme auf die 18A-18D beschrieben, wobei es sich um Darstellungen des Anzeigebilds 50 handelt, auf dem ein einfaches Objekt 402 wiedergegeben ist, um verschiedene Aspekte des Extrapolationsverfahrens 400 darzustellen.
  • Der Funktionsblock 404 gibt an, daß eine Extrapolationsblockbegrenzung 406 um das Objekt 402 definiert wurde. Die Extrapolationsblockbegrenzung 406 ist vorzugsweise rechteckig. Unter Bezugnahme auf 18 basiert die Ausbildung der Extrapolationsblockbegrenzung 406 um das Objekt 402 auf einer Identifizierung einer Begrenzung 408 des Objekts 402 beispielsweise durch ein Objektsegmentierungsverfahren 140 (4). Die Extrapolationsblockbegrenzung 406 ist zur Veranschaulichung so gezeigt, daß sie das Objekt 402 vollständig umfaßt. Es ist jedoch verständlich, daß die Extrapolationsblockbegrenzung 406 alternativ lediglich einen Teil des Objekts 402 umfassen könnte. Wie mit Bezugnahme auf das Objekt segmentierungsverfahren 140 beschrieben wurde, umfassen im Objekt 402 beinhaltete Pixel Farbkomponentenwerte, die sich von jenen der nicht im Objekt 402 enthaltenen Pixel unterscheiden.
  • Der Funktionsblock 410 gibt an, daß allen von der Extrapolationsblockgrenze 406 umgrenzten Pixeln 412, die nicht im Objekt 402 enthalten sind, ein vordefinierter Wert, wie beispielsweise ein Nullwert, für jede der Farbkomponenten zugeordnet wird.
  • Der Funktionsblock 414 gibt an, daß horizontale Pixellinien innerhalb der Extrapolationsblockbegrenzung 406 abgetastet werden, um horizontale Linien mit horizontalen Pixelsegmenten zu identifizieren, die Farbkomponentenwerte umfassen, die sowohl Null als auch nicht Null sind.
  • Der Funktionsblock 416 gibt eine Prüfung wieder, ob die horizontalen Pixelsegmente, die die Farbkomponentenwerte von Null aufweisen, an beiden Enden durch die Begrenzung 408 des Objekts 402 begrenzt sind. Unter Bezugnahme auf 18B gibt der Bereich 418 horizontale Pixelsegmente mit Farbkomponentenwerten von Null wieder, die an beiden Enden durch die Umgrenzung 408 begrenzt sind. Die Regionen 420 stellen horizontale Pixelsegmente dar, die Farbkomponentenwerte von Null aufweisen und die nur an einem Ende durch die Begrenzung 408 begrenzt sind. Der Funktionsblock 416 schreitet zum Funktionsblock 426 für Bereiche 418 fort, in welchen die Pixelsegmente Farbkomponentenwerte von Null aufweisen, die an beiden Enden durch die Begrenzung 408 des Objekts 402 begrenzt sind, und ansonsten zum Funktionsblock 422.
  • Der Funktionsblock 422 gibt an, daß den Pixeln in jedem horizontalen Pixelsegment eines Bereichs 420 die Farbkomponentenwerte eines Pixels 424 (wovon lediglich einige beispielhafte gezeigt sind) in den entsprechenden horizontalen Linien und der Begrenzung 408 des Objekts 402 zugeordnet werden. Alternativ sind die den Pixeln in den Bereichen 420 zugeordneten Farbkomponentenwerte funktionsgemäß mit den Farbkomponentenwerten der Pixel 424 verbunden.
  • Der Funktionsblock 426 gibt an, daß den Pixel in jedem horizontalen Pixelsegment im Bereich 418 Farbkomponentenwerte zugeordnet werden, die einem Mittelwert der Farbkom ponentenwerte der Pixel 428a und 428b, die sich in den entsprechenden horizontalen Linien und auf der Begrenzung 408 befinden, entsprechen und vorzugsweise dazu gleich sind.
  • Der Funktionsblock 430 gibt an, daß vertikale Pixellinien innerhalb der Extrapolationsblockbegrenzung 406 abgetastet werden, um vertikale Linien mit vertikalen Pixelsegmenten zu identifizieren, die Farbkomponentenwerte aufweisen, die sowohl Null als auch nicht Null sind.
  • Der Funktionsblock 432 gibt eine Prüfung wieder, ob die vertikalen Pixelsegmente in den vertikalen Zeilen, die die Farbkomponentenwerte von Null aufweisen, an beiden Enden durch die Begrenzung 408 des Objektes 402 begrenzt sind. Unter Bezugnahme auf 18C gibt der Bereich 434 vertikale Pixelsegmente wieder, die Farbkomponentenwerte von Null aufweisen, die an beiden Enden durch die Begrenzung 408 begrenzt sind. Die Bereiche 436 geben vertikale Pixelsegmente wieder, die Farbkomponentenwerte von Null aufweisen und die lediglich an einem Ende durch die Begrenzung 408 begrenzt sind. Der Funktionsblock 432 schreitet zum Funktionsblock 444 für den Bereich 434 fort, in dem die vertikalen Pixelsegmente Farbkomponentenwerte von Null aufweisen und an beiden Enden durch die Begrenzung 408 des Objekts 402 begrenzt sind, und ansonsten zum Funktionsblock 438.
  • Der Funktionsblock 438 gibt an, daß den Pixeln in jedem vertikalen Pixelsegment des Bereichs 436 die Farbkomponentenwerten der Pixel 442 (wovon lediglich einige beispielhafte gezeigt sind) in den vertikalen Zeilen und auf der Begrenzung 408 des Objekts 402 zugeordnet sind. Alternativ sind die den Pixeln im Bereich 436 zugeordneten Farbkomponentenwerten funktionsgemäß mit den Farbkomponentenwerten der Pixel 442 verbunden.
  • Der Funktionsblock 444 gibt an, daß den Pixeln in jedem vertikalen Pixelsegment im Bereich 434 Farbkomponentenwerte zugeordnet werden, die einem Mittelwert der Farbkomponentenwerte der Pixel 446a und 446b, die sich in den horizontalen Zeilen und auf der Begrenzung 408 befinden, entsprechen und vorzugsweise dazu gleich sind.
  • Der Funktionsblock 448 gibt an, daß Pixeln, die sich sowohl in horizontalen als auch vertikalen Pixelsegmenten befinden und denen Farbkomponentenwerte gemäß diesem Verfahren zugeordnet werden, zusammengesetzte Farbkomponentenwerte zugeordnet werden, die zu den Farbkomponentenwerten, die den Pixeln ansonsten entsprechend ihren horizontalen und vertikalen Pixelsegmenten zugeordnet werden, in Beziehung stehen und vorzugsweise der Mittelwert davon sind.
  • Beispiele von Pixeln, welchen derartige zusammengesetzte Farbkomponentenwerte zugeordnet sind, sind die Pixel in den Bereichen 418 und 434.
  • Der Funktionsblock 450 gibt an, daß Bereichen 452 aus Pixeln, die durch die Extrapolationsblockbegrenzung 406 begrenzt sind und die Begrenzung 408 des Objekts entlang einer horizontalen oder vertikalen Zeile nicht schneiden, zusammengesetzte Farbkomponentenwerte zugeordnet werden, die mit den zu benachbarten Pixeln zugeordneten Farbkomponentenwerten in Beziehung stehen und vorzugsweise gleich dem Mittelwert derselben sind. Unter Bezugnahme auf 18D wird jedem Pixel 454 in den Bereichen 452 ein Farbkomponentenwert zugeordnet, bei dem es sich vorzugsweise um den Mittelwert der Farbkomponentenwerte der Pixel 456a und 456b handelt, die mit dem Pixel 454 entlang entsprechender horizontaler und vertikaler Zeilen ausgerichtet sind und zuvor mittels dieses Verfahrens zugeordnete Farbkomponentenwerte aufweisen, die nicht Null sind.
  • Ein Vorteil des Objektextrapolationsprozesses 400 besteht darin, daß im Objekt 402 nicht beinhalteten Pixeln gleichmäßig variierende Farbkomponentenwerte zugewiesen werden und damit die Komprimierungsfähigkeiten und Genauigkeit herkömmlicher Standbildkomprimierungsverfahren optimiert werden. Im Gegensatz dazu wird bei Null-Füll-(zero padding)- oder Spiegelbildverfahren des Stands der Technik, wie sie in „Transform Coding of Arbitrarily-Shaped Image Segments" von Chang et al., ACM Multimedia, S. 83-88, Juni 1993 beschrieben sind, eine Komprimierung auf extrapolierte Objekte angewandt, die mit Pixeln ausgefüllt sind, die Farbkomponentenwerte von Null aufweisen, wie beispielsweise die im Funktionsblock 410 angewandten. Die dramatische Bildänderung, die zwischen einem Objekt und den mit Nullen gefüllten Bereichen auftritt, verursacht hochfrequente Änderungen, die schwierig zu komprimieren sind oder Bildartefakte bei der Komprimierung hervorrufen. Mit dem Objektextrapolationsverfahren 400 werden diese Nachteile überwunden.
  • Alternatives Kodierungsverfahren
  • 19A ist ein Funktionsblockdiagramm eines Kodierungsverfahrens 500, bei dem eine Laplace'sche Pyramidenkodierung mit Einheitsfiltern angewandt wird, die nicht lineare Aspekte von Bildmerkmalen, wie beispielsweise Ränder, beibehält, während sie ebenfalls eine hohe Komprimierung bietet. Herkömmliche Laplace'sche Pyramidenkodierer werden beispielsweise in „Laplacian Pyramid as a Compact Image Code" von Bun und Addleson, IEEE Trans. Comm., Vol. 31, Nr. 4, S. 532-540, April 1983 beschrieben. Das Kodierungsverfahren 500 ist dazu geeignet, die mit Bezugnahme auf den Funktionsblock 112 des in 3 gezeigten Videokomprimierungskodierungsprozesses 64 beschriebene Kodierung zu liefern, sowie immer dann, wenn eine DCT oder Wavelet-Kodierung vorgeschlagen oder verwendet wird. Beispielhaft wird das Kodierungsverfahren 500 mit Bezugnahme auf eine Kodierung eines abgeschätzten Fehlers 110 beschrieben (3).
  • Ein erster Dezimierungsfilter 502 erhält einem abgeschätzten Fehler 110 (3) entsprechende Informationen und filtert die Pixel entsprechend einem Filterkriterium. Bei einem herkömmlichen Laplace'schen Pyramidenverfahren handelt es sich bei dem Dezimierungsfilter um einen Tiefpaßfilter, wie beispielsweise eine Gauß'sche Gewichtungsfunktion. Gemäß dem Kodierungsverfahren 500 wird beim Dezimierungsfilter 502 jedoch vorzugsweise ein Medianfilter und insbesondere ein nicht separierbarer 3 × 3 Medianfilter verwendet.
  • Als Veranschaulichung ist in 20A eine vereinfachte Wiedergabe der Farbkomponentenwerte für eine Farbkomponente (z.B. Rot) für eine beliebige Gruppe oder Array von Pixeln 504 gezeigt. Obwohl sie mit besonderer Bezugnahme auf rote Farbkomponentenwerte beschrieben wird, kann diese Darstellung einfach auf grüne und blaue Farbkomponentenwerte von Pixeln 504 angewandt werden.
  • Mit Bezugnahme auf die bevorzugte Ausführungsform des Dezimierungsfilters 502 werden Filterblöcke 506 mit Abmessungen von 3 × 3 Pixeln unter den Pixeln 504 definiert. Für jeden Pixelblock 506 wird der mittlere Pixelintensitätswert identifiziert oder gewählt. Mit Bezugnahme auf die Pixelblöcke 506a-506c liefert der Dezimierungsfilter 502 beispielsweise die entsprechenden Werte von 8, 9 und 10, die als die ersten drei Pixel 512 in 20B aufgelistet sind.
  • Es ist jedoch verständlich, daß beim Dezimierungsfilter 502 andere Medianfilter gemäß dieser Erfindung verwendet werden könnten. Dementsprechend würde durch den Medianfilter für jede Gruppe von Pixeln mit zugeordneten Farbkomponentenwerten von {a0, a1, ..., an-1} ein Mittelwert aM ausgewählt.
  • Ein erster 2 × 2 Überabtastfilter 514 tastet abwechselnd Pixel 512 in vertikaler und horizontaler Richtung ab, um eine zusätzliche Komprimierung zu gewährleisten. 20C gibt eine resultierende komprimierte Gruppe von Pixeln 515 wieder.
  • Ein 2 × 2 Überabtastfilter 516 fügt ein Pixel mit dem Wert Null an der Stelle jedes vom Unterabtastfilter 514 ausgelassenen Pixel 512 ein und der Interpolationsfilter 518 weist dem Pixel mit Wert Null einen Pixelwert gemäß einem Mittelwert der gegenüberliegenden benachbarten Pixel oder einen zuvor zugewiesenen Wert zu, wenn das Pixel mit dem Wert Null nicht zwischen einem Paar gegenüberliegender Pixel mit einem Wert, der nicht Null ist, liegt. Zur Veranschaulichung gibt 20D eine resultierende Gruppe bzw. Array aus Pixelwerten 520 wieder.
  • Zwischen den Farbkomponentenwerten der Gruppe von Pixeln 504 und den entsprechenden Farbkomponentenwerten für eine Gruppe von Pixeln 520 wird eine Differenz 522 gebildet, um eine Bildkomponente I0 nullter Ordnung zu bilden.
  • Ein zweiter Dezimierungsfilter 526 empfängt Farbkomponentenwerte, die der komprimierten Gruppe von Pixeln 515 entsprechen, die vom ersten 2 × 2 Unterabtastfilter 514 erzeugt wurden. Der Dezimierungsfilter 526 ist vorzugsweise derselbe, wie der Dezimierungsfilter 502 (z.B. ein nicht separierbarer 3 × 3 Medianfilter). Dementsprechend hat der Dezimierungsfilter 526 dieselbe Funktionsweise wie der Dezimierungsfilter 502 und liefert eine resultierende komprimierte Gruppe aus Pixeln bzw. ein Pixelarray (nicht gezeigt) an einen zweiten 2 × 2 Unterabtastfilter 528.
  • Der Unterabtastfilter 528 hat dieselbe Funktionsweise wie der Unterabtastfilter 514 und bildet eine Bildkomponente L2 zweiter Ordnung, die ebenfalls zu einem 2 × 2 Überabtastfilter 530 und einem Interpolationsfilter 531 zugeführt wird, die dieselbe Funktionsweise aufweisen wie der Überabtastfilter 516 bzw. der Interpolationsfilter 518. Zur Bildung einer Bildkomponente I1 erster Ordnung wird die Differenz zwischen den Farbkomponentenwerten der Gruppe von Pixeln 515 und den resultierenden Farbkomponentenwerten gebildet, die vom Interpolationsfilter 531 geliefert werden.
  • Die Bildkomponenten I0, I1 und L2 sind jeweilige Gruppen von Farbkomponentenwerten, die die Farbkomponentenwerte für ein n × n Pixelarray 504 darstellen. nxn, n2 × n2 , n4 × n4
  • Die Bildkomponente I0 behält die Komponenten mit großer Frequenz bzw. Häufigkeit (z.B. Ränder) eines durch die ursprüngliche Pixelgruppe 504 wiedergegebenen Bildes bei. Die Bildkomponenten I1 und L2 geben Gesichtspunkte mit geringer Häufigkeit des ursprünglichen Bildes wieder. Die Bildkomponenten I0, I1 und L2 liefern eine relative Komprimierung des Ursprungsbildes. Die Bildkomponenten I0 und I1 behalten Merkmale (z.B. Ränder) mit großer Häufigkeit in einem Format bei, das aufgrund der relativ großen Korrelation zwischen den Werten benachbarter Pixel stark komprimierbar ist. Die Bildkomponente L2 kann nicht so einfach komprimiert werden, da sie primär Bildmerkmale geringer Häufigkeit beinhaltet, jedoch eine Gruppe mit relativ kleiner Größe ist.
  • 19B ist ein Funktionsblockdiagramm eines Dekodierungsverfahrens 536 mit dem mittels des Kodierungsverfahrens 500 erzeugte Bildkomponenten I0, I1 und L2 dekodiert bzw. invers kodiert werden. Das Dekodierungsverfahren 536 umfaßt einen ersten 2 x 2 Überabtastfilter 538, der eine Bildkomponente L2 empfängt und ein Pixel mit dem Wert Null zwischen jeweils zwei benachbarte Pixel eines Pixelpaares einfügt. Ein Interpolationsfilter 539 weist dem Pixel mit Wert Null einen Pixelwert zu, bei dem es sich vorzugsweise um einen Mittelwert der Werte der benachbarten Pixel handelt, oder um einen zuvor zugewiesenen Wert, falls das Pixel mit dem Wert Null nicht zwischen zwei Pixeln eines Paares sich gegenüberliegender Pixel mit einem Wert, der nicht Null ist, liegt. Der erste 2 × 2 Überabtastfilter 538 hat im wesentlichen dieselbe Funktionsweise wie die Überabtastfilter 516 und 530 aus 19A und der Interpolationsfilter 539 hat im wesentlichen dieselbe Funktionsweise wie die Interpolationsfilter 518 und 531.
  • Eine Summe 540 zwischen der Bildkomponente I1 und den Farbkomponentenwerten, die der dekomprimierten Pixelgruppe entsprechen, die vom ersten 2 × 2 Überabtastfilter 538 und vom Interpolationsfilter 539 erzeugt wurden, wird bestimmt. Von einem zweiten 2 × 2 Überabtastfilter 542 wird ein Pixel mit dem Wert Null zwischen benachbarten Pixel jedes Paares von Pixeln eingefügt, das durch die Summe 540 erzeugt wird. Ein Interpolationsfilter 543 weist dem Pixelwert Null einen Pixelwert zu, der einen Mittelwert der Werte der benachbarten Pixel umfaßt oder einen zuvor zugewiesenen Wert, falls das Pixel mit dem Wert Null nicht zwischen gegenüberliegenden Pixeln eines Paares mit Werten, die nicht Null sind, liegt. Der Überabtastfilter 542 und der Interpolationsfilter 543 sind im wesentlichen dieselben wie der Überabtastfilter 538 bzw. der Interpolationsfilter 539.
  • Die Bildkomponente I0 und die Farbkomponentenwerte, die der dekomprimierten vom zweiten 2 × 2 Überabtastfilter 542 und dem Interpolationsfilter 532 erzeugten dekomprimierten Pixelgruppe entsprechen, werden in einer Summe 544 summiert. Die Summe 544 liefert einen dekomprimierten abgeschätzten Fehler 110, der dem abgeschätzten Fehler 110 entspricht, der zum Kodierungsprozeß 500 zugeführt wird.
  • Transformationskodierung von Bewegungsvektoren
  • Bei herkömmlichen Videokomprimierungskodierungsprozessen, wie beispielsweise MPEG-1 oder MPEG-2 werden lediglich spärliche Bewegungsvektorfelder verwendet, um die Bewegung von beträchtlich größeren Pixelarrays mit einer regelmäßigen Größe und Konfiguration darzustellen. Die Bewegungsvektorfelder sind insofern spärlich, daß lediglich ein Bewegungsvektor zur Darstellung der Bewegung eines Pixelarrays mit Abmessungen von beispielsweise 16 × 16 Pixeln verwendet wird. Die spärlichen Bewegungsvektorfelder liefern zusammen mit einer Transformationskodierung darunterliegender Bilder oder Pixel beispielsweise durch eine Kodierung mit diskreter Cosinustransformation (DCT) eine herkömmliche Videokomprimierungskodierung.
  • Im Gegensatz dazu werden beim Videokomprimierungskodierungsprozeß 64 (3) dichte Bewegungsvektorfelder verwendet, in welchen Bewegungsvektoren für alle oder nahezu alle Pixel eines Objekts bestimmt werden. Mit derartigen dichten Bewegungsvektorfeldern wird die Genauigkeit, mit der eine Bewegung zwischen entsprechenden Pixeln wiedergegeben wird, beträchtlich verbessert. Obwohl durch die erhöhte Genauigkeit die mit herkömmlichen Wiedergaben mit spärlichen Bewegungsvektorfeldern verbundenen Fehler beträchtlich reduziert werden können, stellt die zusätzliche in dichten Bewegungsvektorfeldern enthaltene Information einen Anstieg der Menge der eine Videosequenz darstellenden Informationen dar. Daher werden gemäß dieser Erfindung dichte Bewegungsvektorfelder ihrerseits komprimiert oder kodiert, um das durch diese Erfindung enthaltene Kompressionsverhältnis zu verbessern.
  • 21 ist ein Funktionsblockdiagramm eines Bewegungsvektorkodierungsprozesses 560 zur Kodierung oder Komprimierung von Bewegungsvektorfeldern und vorzugsweise von dichten Bewegungsvektorfeldern, wie solchen, die gemäß der dichten Bewegungstransformation 96 aus 3 erzeugt werden. Es ist verständlich, daß derartige dichte Bewegungsvektorfelder aus einem gewählten Objekt typischerweise eine größere Kontinuität oder „Glattheit" aufweisen als die dem Objekt entsprechenden zugrundeliegenden Pixel. Im Ergebnis wird mit der Komprimierung bzw. Kodierung der dichten Bewegungsvektorfelder ein größeres Komprimierungsverhältnis erreicht als es mit der Komprimierung bzw. Kodierung der zugrundeliegenden Pixel erreicht würde.
  • Der Funktionsblock 562 gibt an, daß ein dichtes Bewegungsvektorfeld für ein Objekt oder einen Teil eines Objekts beispielsweise entsprechend den Prozessen des Funktionsblocks 96, der mit Bezugnahme auf 3 beschrieben wurde, erhalten wird. Dementsprechend entspricht das dichte Bewegungsvektorfeld einem Objekt oder einem anderen Bildteil mit einer beliebigen Konfiguration oder Größe.
  • Der Funktionsblock 564 gibt an, daß die Konfiguration des dichten Bewegungsvektorfeldes in eine regelmäßige, vorzugsweise rechteckige Konfiguration extrapoliert wird, um eine Kodierung oder Komprimierung zu erleichtern. Vorzugsweise wird die Konfiguration des dichten Bewegungsvektorfeldes in eine rechteckige Konfiguration mit dem unter Bezugnahme auf 17A und 17B beschriebenen Vorkomprimierungs-Extrapolationsverfahren 400 extrapoliert. Es ist verständlich, daß herkömmliche Extrapolationsverfahren, wie beispielsweise ein Spiegelbildverfahren alternativ verwendet werden könnten.
  • Der Funktionsblock 566 gibt an, daß das dichte Bewegungsvektorfeld mit seiner extrapolierten regelmäßigen Konfiguration gemäß herkömmlichen Kodierungstransformationen, wie beispielsweise der diskreten Cosinustransformation (DCT) oder der Gitter-Wavelet-Komprimierung, wobei das erste bevorzugt wird, kodiert bzw. komprimiert wird.
  • Der Funktionsblock 568 gibt an, daß das kodierte dichte Bewegungsvektorfeld mittels eines herkömmlichen verlustfreien Standbildkomprimierungsverfahrens, wie beispielsweise der Entropiekodierung, weiter komprimiert oder kodiert wird, um ein kodiertes dichte Bewe gungsvektorfeld 570 zu bilden. Ein derartiges Standbildkomprimierungsverfahren wird mit Bezugnahme auf den Funktionsblock 114 aus 3 beschrieben.
  • Komprimierung quantisierter Objekte aus früheren Videobildern
  • Mit Bezugnahme auf 3 wird von einem Videokomprimierungskodierungsprozeß 64 ein quantisiertes früheres Objekt 98, das mit Bezugnahme auf ein früheres Bild N-1 bestimmt wird, verwendet, um ein entsprechendes Objekt in einem nächsten nachfolgenden Bild N zu kodieren. Als eine Konsequenz erfordert der Kodierungsprozeß 64, daß das quantisierte frühere Objekt 98 in einem zugänglichen Speicherpuffer gespeichert wird. Bei Auflösungen herkömmlicher Videoanzeigen würde ein derartiger Speicherpuffer eine Kapazität von zumindest einem Megabyte erfordern, um das quantisierte frühere Objekt 98 für ein einziges Videobild zu speichern. Anzeigeformate mit höherer Auflösung würden entsprechend größere Speicherpuffer erfordern.
  • 22 ist ein Funktionsblockdiagramm eines quantisierten Objekt-Kodierer-Dekodierer-(Codec)-Prozesses 600 mit dem quantisierte früherer Objekte 98 komprimiert und selektiv dekomprimiert werden, um die für einen Speicherpuffer für quantisierte Objekte erforderliche Kapazität zu reduzieren.
  • Der Funktionsblock 602 gibt an, daß jedes quantisierte Objekt 98 in einem Einzelbild Block-für-Block mittels eines verlustbehafteten Kodierungs- oder Komprimierungsverfahrens, wie beispielsweise der Kodierung mit diskreter Cosinustransformation (DCT) oder Gitter-Subband-(Wavelet)-Komprimierung kodiert wird.
  • Der Funktionsblock 604 gibt an, daß die kodierten oder komprimierten quantisierten Objekte in einem Speicherpuffer (nicht gezeigt) gespeichert werden.
  • Der Funktionsblock 606 gibt an, daß die kodierten quantisierten Objekte aus dem Speicherpuffer in Vorwegnahme einer Verarbeitung eines entsprechenden Objektes in einem nächsten nachfolgenden Videobild abgerufen werden.
  • Der Funktionsblock 608 gibt an, daß das kodierte quantisierte Objekt beispielsweise mit einer DCT oder Wavelet-Dekodierung gemäß den mit Bezug zum Funktionsblock 602 verwendeten Kodierungsprozessen invers kodiert wird.
  • Der Codec-Prozeß 600 ermöglicht es, die Kapazität des entsprechenden Speicherpuffers um bis zu 80 % zu reduzieren. Darüber hinaus ist verständlich, daß der Codec-Prozeß 600 auf ähnliche Weise auf den Dekodierungsprozeß entsprechend dem Videokomprimierungskodierungsprozeß 64 anwendbar wäre.
  • Videokomprimierungsdekodierungsprozeß: Überblick
  • Der Videokomprimierungskodierungsprozeß 64 aus 3 liefert kodierte bzw. komprimierte Darstellungen von Videosignalen, die Videosequenzen aus mehreren Einzelbildern entsprechen. Die komprimierten Darstellungen umfassen Objektmasken 66, Merkmalspunkte 68, affine Transformationskoeffizienten 104 und komprimierte Fehlerdaten 116 vom Kodierungsprozeß 64 und komprimierte Stammobjekte 136 vom Kodierungsprozeß 130. Diese komprimierten Darstellungen vereinfachen eine Speicherung oder Übertragung von Videoinformationen und sind dazu geeignet, Komprimierungsverhältnisse zu erzielen, die um bis zu 300 % größer sind als die mit herkömmlichen Videokomprimierungsverfahren, wie beispielsweise MPEG-2, erzielbaren.
  • Es ist verständlich, daß ein Abrufen derartiger komprimierter Videoinformationen aus einem Datenspeicher oder ein Empfang einer Übertragung der Videoinformationen erfordert, daß sie dekodiert bzw. dekomprimiert werden, um das ursprüngliche Videosignal zu rekonstruieren, so daß es mit einer Anzeigevorrichtung, wie beispielsweise einer Videoanzeigevorrichtung 52 (2A und 2B) wiedergegeben werden kann. Wie bei herkömmlichen Kodierungsprozessen, wie beispielsweise MPEG-1, MPEG-2 und H.26X ist die Dekomprimierung oder Dekodierung der Videoinformationen im wesentlichen das Inverse des Prozesses, mit dem das ursprüngliche Videosignal kodiert bzw. komprimiert wurde.
  • 23A ist ein Funktionsblockdiagramm eines Videokomprimierungsdekodierungsprozesses 700 zur Dekomprimierung von mittels des Videokomprimierungskodierungsprozesses 64 aus 3 erzeugten Videoinformationen. Aus Gründen der Konsistenz mit der Beschreibung des Kodierungsprozesses 64 wird der Dekodierungsprozeß 700 unter Bezugnahme auf 2A und 2B beschrieben. Vom Dekodierungsprozeß 700 werden kodierte Videoinformationen, die Objektmasken 66, Merkmalspunkte 68, komprimierte Stammobjekte 136, affine Transformationskoeffizienten 104 und komprimierte Fehlerdaten 116 umfassen, aus dem Speicher abgerufen oder als eine Übertragung empfangen.
  • Vom Dekodierungsprozeß 700 werden Schritte durchgeführt, bei welchen es sich um das Inverse der vom Kodierungsprozeß 64 durchgeführten Schritte (3) handelt. Dementsprechend würde jeder der oben beschriebenen bevorzugten Schritte des Kodierungsprozesses 64, der ein Dekodierungsgegenstück aufweist, auf ähnliche Weise umgekehrt werden.
  • Der Funktionsblock 702 gibt an, daß Masken 66, Merkmalspunkte 68, Transformationskoeffizienten 104 und komprimierte Fehlerdaten 116 aus dem Speicher abgerufen werden oder als eine Übertragung zur Verarbeitung durch den Dekodierungsprozeß 700 empfangen werden.
  • 23B ist ein Funktionsblockdiagramm eines Stammobjektdekodierungsprozesses 704 zur Dekodierung bzw. Dekomprimierung eines komprimierten Stammobjekts 136. Der Funktionsblock 706 gibt an, daß komprimierte Stammobjektdaten 136 durch die Invertierung des herkömmlichen verlustlosen Entropiekodierungsverfahrens im Funktionsblock 134 aus 3B Entropie-dekodiert werden. Der Funktionsblock 708 gibt an, daß das Entropie-dekodierte Stammobjekt vom Funktionsblock 706 gemäß einer Invertierung des herkömmlichen verlustbehafteten Wavelet-Kodierungsprozesses dekodiert wird, der im Funktionsblock 132 aus 3B verwendet wird.
  • Der Funktionsblock 712 gibt an, daß dichte Bewegungstransformationen, vorzugsweise mehrdimensionale affine Transformationen, aus den affinen Koeffizienten 104 erzeugt werden. Vorzugsweise werden die affinen Koeffizienten 104 gemäß dem Transformationsverfahren 350 (12) quantisiert und die affinen Transformationen aus den quantisierten affinen Koeffizienten durch Durchführen der Invertierung der mit Bezugnahme auf den Funktionsblock 362 (12) beschriebenen Schritte erzeugt.
  • Der Funktionsblock 714 gibt an, daß eine quantisierte Form eines Objekts 716 in einem früheren Bild N-1 (z.B. das rechtwinklige massive Objekt 56a im Einzelbild 54a), die über eine Zeitverzögerung 718 geliefert wird, mittels einer dichten Bewegungstransformation transformiert wird, um eine vorhergesagte Form des Objekts 720 in einem momentanen Bild N (zum Beispiel das rechteckige massive Objekt 56b im Einzelbild 54b) zu liefern.
  • Der Funktionsblock 722 gibt an, daß für das Einzelbild N das vorhergesagte momentane Objekt 720 zu einem quantisierten Fehler 724, der aus den komprimierten Fehlerdaten 116 erzeugt wird, hinzugefügt wird. Insbesondere gibt der Funktionsblock 726 an, daß komprimierte Fehlerdaten 116 durch einen zum Kompressionsprozeß 114 (3A) inversen Prozeß dekodiert werden. Bei der bevorzugten Ausführungsform basieren die Funktionsblöcke 114 und 726 auf einem herkömmlichen verlustlosen Standbildkomprimierungsverfahren, wie beispielsweise der Entropie-Kodierung.
  • Der Funktionsblock 728 gibt an, daß die Entropie-dekodierten Fehlerdaten vom Funktionsblock 726 mittels eines herkömmlichen verlustbehafteten Standbildkomprimierungsverfahrens, das dem im Funktionsblock 112 (3A) verwendeten entspricht, weiter dekomprimiert bzw. dekodiert werden. Bei der bevorzugten Ausführungsform erfolgt die Dekomprimierung bzw. Dekodierung des Funktionsblocks 728 mittels eines Gitter-Subband-(Wavelet)-Prozesses oder eines Prozesses mit diskreter Cosinustransformation (DCT).
  • Der Funktionsblock 722 liefert ein quantisiertes Objekt 730 für das Bild N als die Summe des vorhergesagten Objektes 720 und des quantisierten Fehlers 724, der ein rekonstruiertes oder dekomprimiertes Objekt 732 darstellt, das zum Funktionsblock 718 zur Rekonstruktion des Objekts in nachfolgenden Rahmen geliefert wird.
  • Der Funktionsblock 734 gibt an, daß das quantisierte Objekt 732 mit anderen Objekten eines momentanen Einzelbildes N zusammengesetzt wird, um ein dekomprimiertes Videosignal zu bilden.
  • Vereinfachte Kettenkodierung
  • Masken, Objekte, Sprites und andere graphische Features werden allgemein durch ihre Konturen wiedergegeben. Wie in 5A gezeigt und mit Bezugnahme darauf erläutert ist, wird beispielsweise das rechteckige massive Objekt 56A durch eine Objektbegrenzung bzw. Kontur 142 begrenzt. Ein herkömmlicher Prozeß bzw. eine Kodierung oder Komprimierung von Konturen wird als Kettenkodierung bezeichnet.
  • In 24A ist ein herkömmlicher Achtpunkte-Kettencode 800 gezeigt, mit dem Konturen in einem herkömmlichen rechteckig-linearen Pixelarray definiert werden. Basierend auf einem momentanen Pixelort X erstreckt sich ein nächster nachfolgender Pixelort in der Kontur in einer der Richtungen 802a-802h. Der Kettencodewert für das nächste nachfolgende Pixel ist der der speziellen Richtung 802 entsprechende numerische Wert. Als Beispiel entspricht die rechte horizontale Richtung 802a dem Kettencodewert O und die vertikale Richtung 802g nach unten dem Kettencodewert 6. Jede kontinuierliche Kontur kann ausgehend vom Achtpunkt-Kettencode 800 beschrieben werden.
  • Unter Bezugnahme auf 24B kann eine Kontur 804, die durch mit X und A-G bezeichnete Pixel 806 wiedergegeben wird, auf herkömmliche Weise mit der Kettencodesequenz {00764432} kodiert werden. Insbesondere sind beginnend am Pixel X, die Pixel A und B relativ zu entsprechenden Pixeln X und A in Richtung 0 positioniert. Das Pixel C ist relativ zum Pixel B in Richtung 7 positioniert. Die verbleibenden Pixel D-G sind auf ähnliche Weise in den oben aufgelisteten Kettencodewerten entsprechenden Richtungen positioniert. In einer binären Darstellung wird jeder herkömmliche Kettencodewert durch drei digitale Bits wiedergegeben.
  • 25A ist ein Funktionsblockdiagramm eines Kettencodeprozesses 810, der zur Erzielung von Konturkompressionsverhältnissen, die zumindest ungefähr das Doppelte herkömmlicher Kettenkodeprozesse umfassen, geeignet ist. Mit dem Kettencodeprozeß 810 werden derartige verbesserte Komprimierungsverhältnisse durch Begrenzung der Zahl der Kettencodes und Definition derselben im Verhältnis zur Ausrichtung von Paaren benachbarter Pixel erreicht. Basierend auf Experimenten wurde festgestellt, daß die begrenzten Kettencodes des Kettencodeprozesses 810 unmittelbar mehr als 99,8 % von Pixelausrichtungen von Objekt- oder Maskenkonturen darstellen. Spezielle Kettencodeabwandlungen tragen den restlichen weniger als 0,2 % der Pixelausrichtung Rechnung, wie im folgenden in weiteren Einzelheiten beschrieben wird.
  • Der Funktionsblock 816 gibt an, daß eine Kontur für eine Maske, ein Objekt oder einen Sprite erhalten wird. Die Kontur kann beispielsweise mittels des mit Bezugnahme auf 4 und 5 beschriebenen Objektsegmentierungsprozesses 140 erhalten werden.
  • Der Funktionsblock 818 gibt an, daß ein Anfangspixel in der Kontur identifiziert wird. Das Anfangspixel kann durch allgemeine Verfahren, wie beispielsweise als das Pixel mit minimalen X-Achsen- und Y-Achsen-Koordinatenpositionen, identifiziert werden.
  • Der Funktionsblock 820 gibt an, daß ein vorbestimmter Kettencode zur Darstellung der Beziehung zwischen dem Anfangspixel und dem nächsten benachbarten Pixel in der Kontur zugeordnet wird. Vorzugsweise entspricht der vorbestimmte Kettencode einer Richtung nach vorne.
  • 25B ist eine diagrammartige Darstellung eines Dreipunkt-Kettencodes 822. Der Kettencode 822 umfaßt drei Kettencodes 824a, 824b und 824c, die einer Richtung 826a nach vorne, einer Richtung 826b nach links bzw. einer Richtung 826c nach rechts entsprechen. Die Richtungen 826a-826c sind relativ zu einer vorangehenden Ausrichtungsrichtung 828 zwischen einem momentanen Pixel 830 und einem benachbarten Pixel 832 definiert, das dem vorangehenden Pixel im Kettencode entspricht.
  • Die vorangehende Ausrichtungsrichtung 828 kann sich in eine der in 24A gezeigten Richtungen erstrecken und ist zur Veranschaulichung mit einer bestimmten Orientierung (d.h. horizontal nach rechts) gezeigt. Die Richtung 826a ist daher als dieselbe Richtung wie die Richtung 828 definiert. Die Richtungen 826b und 826c unterscheiden sich von der Richtung 828 durch Verschiebungen um ein Pixel nach links und nach rechts.
  • Experimentell wurde festgestellt, daß etwas mehr als 50 % der Kettencodes 824 einer Richtung 826a nach vorne entsprechen und etwas weniger als 25 % der Kettencodes 824 jeder der Richtungen 826b und 826c entsprechen.
  • Der Funktionsblock 836 gibt eine Prüfung wieder, ob das nächste benachbarte Pixel in der Kontur einer der Richtungen 826 entspricht. Immer wenn das nächste benachbarte Pixel in der Kontur einer der Richtungen 826 entspricht, schreitet der Funktionsblock 836 zum Funktionsblock 838 fort und ansonsten zum Funktionsblock 840.
  • Der Funktionsblock 838 gibt an, daß dem nächsten benachbarten Pixel ein Kettencode 824 zugewiesen wird, der seiner Richtung 826 relativ zur Richtung 828 entlang der das benachbarte vorangehende Pixelpaar ausgerichtet ist, entspricht.
  • Der Funktionsblock 840 gibt an, daß eine Pixelsequenz, die einer der Richtungen 826 entspricht, die aktuelle nicht konforme Pixelsequenz ersetzt. Basierend auf Experimenten wurde bestimmt, daß derartige Substituierungen typischerweise bei weniger als 0,2 % der Pixelsequenzen in einer Kontur auftreten und daß ihnen mit einer von sechs Spezialfallabwandlungen Rechnung getragen werden kann.
  • 25C ist eine diagrammatische Darstellung der sechs Spezialfallabwandlungen 842 für eine Umwandlung von nicht konformen Pixelsequenzen in Pixelsequenzen, die den Richtungen 826 entsprechen. Innerhalb jeder Modifizierung 842 wird eine Pixelsequenz 844 in eine Pixelsequenz 846 umgewandelt. In jeder der Pixelsequenzen 844 aus benachbarten jeweiligen Pixeln X1, X2, a, b entspricht aufgrund der Ausrichtung des Pixels a relativ zur Ausrichtung der Pixel X1 und X2 die Richtung zwischen den Pixeln a und b nicht einer der Richtungen 826.
  • In der Pixelsequenz 844a geben die Anfangspixelausrichtungen 850a und 852a eine nicht konforme rechtwinklige Richtungsänderung wieder. Dementsprechend wird in der Pixelsequenz 846qa das Pixel a der Pixelsequenz 844a weggelassen, was zu einer Pixelrichtung 854a führt, die der Pixelrichtung 826a entspricht. Mit den Pixelsequenzmodifizierungen 842b-842f werden auf ähnliche Weise nicht konforme Pixelsequenzen 844b-844f in konforme entsprechende Sequenzen 846b-846f umgewandelt.
  • Bei den Pixelsequenzmodifizierungen 842 werden Pixel weggelassen, die Änderungen der Pixelrichtungsausrichtungen von 90° oder mehr im Verhältnis zu den Ausrichtungen benachbarter vorangehender Pixel X1 und X2 bewirken. Ein Wirkung besteht darin, den minimalen Krümmungsradius einer einen rechten Winkel wiedergebenden Kontur auf mehr als drei Pixel zu erhöhen. Die Pixelmodifizierungen 842 erzeugen somit einen kleineren Verlust eines extrem feinen Konturdetails. Gemäß dieser Erfindung wurde jedoch festgestellt, daß der Verlust derartiger Details unter den meisten Betrachtungsbedingungen akzeptabel ist.
  • Der Funktionsblock 860 gibt eine Prüfung wieder, ob es in der Kontur ein weiteres Pixel gibt, dem ein Kettencode zuzuweisen ist. Immer wenn es in der Kontur ein weiteres Pixel gibt, dem ein Kettencode zuzuweisen ist, kehrt der Funktionsblock zum Funktionsblock 836 zurück und schreitet ansonsten zum Funktionsblock 862 fort.
  • Der Funktionsblock 862 gibt an, daß nicht konforme Richtungen der Pixelausrichtung, die vom Prozeß gemäß dem Funktionsblock 840 eingeführt oder übernommen werden, entfernt werden. Bei einer bevorzugten Ausführungsform können die nicht konformen Richtungsänderungen einfach durch Rückkehr zum Funktionsblock 816 und durch Wiederholen des Prozesses 810 weggelassen werden, bis keine nicht konformen Pixelsequenzen übrig bleiben, was typischerweise mit weniger als acht Wiederholungen erreicht wird. Bei einer alternativen Ausführungsform können derartige übernommene, nicht konforme Richtungsänderungen in „Echtzeit" durch Überprüfen auf übernommene nicht konforme Richtungsänderungen jedesmal wenn eine nicht konforme Richtungsänderung modifiziert wird und durch Korrigieren desselben, korrigiert werden.
  • Der Funktionsblock 864 gibt an, daß ein Huffman-Code aus dem resultierenden vereinfachten Kettencode erzeugt wird. Bei Kettencodes 824a-824c, die Richtungen 826a-826c entsprechen, die für ungefähr 50 %, 25 % und 25 % der Pixel in einer Kontur auftreten, werden entsprechende Huffman-Codes von 0, 11 und 10 zugewiesen. Derartige Huffman-Codes erster Ordnung ermöglichen, daß der Kettenprozeß 810 Konturen mit einer Bitrate von weniger als 1,5 Bit pro Pixel in der Kontur darstellen kann. Eine derartige Bitrate stellt ungefähr eine 50%-ige Verbesserung des Kompressionsverhältnisses gegenüber herkömmlichen Kettencodeprozessen dar.
  • Es ist verständlich, daß eine Huffman-Codierung höherer Ordnung höhere Kompressionsverhältnisse liefern könnte. Eine Huffman-Codierung höherer Ordnung umfaßt beispielsweise eine Zuordnung vorbestimmter Werte zu vorgewählten Sequenzen von Huffman-Codes erster Ordnung.
  • Sprite-Erzeugung: Überblick
  • Bei der Sprite-Erzeugung handelt es sich um einen Prozeß, der in Verbindung mit einem kodierungsbestimmten Bewegungsvideo (Film) verwendet wird, der einen Aufbau eines charakteristischen Bildes umfaßt, das ein nicht rechteckiges Videoobjekt in jedem Bild einer Videosequenz wiedergibt. Bei der Sprite-Erzeugung werden Bitmaps zu Bitmapreihen vergrößert, die mehrere sequentielle Bitmaps von sequentiellen Bildern von einer Bildquelle umfassen. Um das Problem verdeckter Pixel zu bewältigen, gemäß dem sich Objekte oder Figu ren relativ zueinander bewegen oder eine Figur eine andere in ähnlicher Weise verdeckt, wie eine Figur im Vordergrund den Hintergrund verdeckt, wird eine Erweiterung verwendet. Wenn sich beispielsweise eine Figur im Vordergrund bewegt und teilweise neuen Hintergrund freigibt, besteht keine Möglichkeit diesen neuen Hintergrund aus einer früheren Bitmap aufzubauen, sofern die frühere Bitmap nicht zunächst durch Einbeziehen der Pixel in diese erweitert wurde, die in der nachfolgenden Bitmap aufgedeckt werden. Bei diesem Verfahren wird ein unvollständiges Bild einer Figur herangezogen und der Blick in die Zukunft gerichqtet, um Pixel zu finden, die zum Bild gehören, jedoch nicht unmittelbar sichtbar sind. Diese Pixel werden dann dazu verwendet, eine zusammengesetzte Bitmap für die Figur zu erzeugen. Mit der zusammengesetzten Bitmap kann jede zukünftige Ansicht der Figur durch Verzerren der zusammengesetzten Bitmap erzeugt werden.
  • Implementierung der Sprite-Erzeugung unter Verwendung von Merkmalspunkten
  • Der Kodierungsprozeß wird durch eine Bedienungsperson begonnen, welche die Figuren und die Teile der Figuren einer momentanen Bitmap aus einer momentanen Bitmapreihe identifiziert. Merkmals- oder Verzerrungspunkte werden durch die Bedienungsperson an den Merkmalen der Teile um welche sich die Teile der Figuren bewegen, ausgewählt. Auf die Teile der momentanen Bitmap wird ein momentanes Netz aus Dreiecken überlagert. Die Dreiecke, die das momentane Netz aus Dreiecken bilden, werden durch Verbinden benachbarter Verzerrungspunkte gebildet. Die Verzerrungspunkte sind die Scheitelpunkte der Dreiecke. Die momentane Lage jedes Dreiecks in der momentanen Bitmap wird bestimmt und in der Speichervorrichtung gespeichert. Ein Teil von Daten der momentanen Bitmap, die das erste Bild in der momentanen Lage jedes Dreiecks definieren, wird für einen weiteren Gebrauch zurückgehalten.
  • Eine nachfolgende Bitmap, die ein zweites Bild der momentanen Bitmapreihe definiert, wird von der Bildquelle erhalten und die Figuren und die Teile der Figur werden von der Bedienungsperson identifiziert. Als nächstes wird das momentane Netz aus Dreiecken von der momentanen Bitmap der nachfolgenden Bitmap überlagert. Die Verzerrungspunkte eines momentanen Netzes aus Dreiecken werden neu ausgerichtet, so daß sie mit den Merkmalen der entsprechenden Figuren in der nachfolgenden Bitmap entsprechen. Die neu ausgerichteten Verzerrungspunkte bilden ein nachfolgendes Gitter aus Dreiecken in der nachfolgenden Bitmap des zweiten Bildes. Die nachfolgende Lage jedes Dreiecks in der nachfolgenden Bitmap wird bestimmt und in der Speichervorrichtung gespeichert. Ein Teil der Daten der nachfolgenden Bitmap, die das zweite Bild in der nachfolgenden Lage jedes Dreiecks bilden, wird für einen weiteren Gebrauch zurückgehalten.
  • Der Prozeß der Bestimmung und Speicherung der momentanen und nachfolgenden Lage jedes Dreiecks wird für die Vielzahl von sequentiellen Bitmaps der momentanen Bitmapreihe wiederholt. Wenn dieser Prozeß abgeschlossen ist, wird ein gemitteltes Bild jedes Dreiecks in der momentanen Bitmapreihe aus den getrennt zurückgehaltenen Daten bestimmt. Das gemittelte Bild jedes Dreiecks wird in der Speichervorrichtung gespeichert.
  • Bei der Wiedergabe werden das gemittelte Bild jedes Dreiecks der momentanen Bitmapreihe und die momentane Lage jedes Dreiecks der momentanen Bitmap aus der Speichervorrichtung abgerufen. Durch Berechnen einer Transformationslösung zur Transformation des gemittelten Bildes jedes Dreiecks in der momentanen Bitmapreihe in die momentane Lage jedes Dreiecks der momentanen Bitmap und Anwenden der Transformationslösung auf das gemittelte Bild jedes Dreiecks wird eine vorhergesagte Bitmap erzeugt.
  • In Verbindung mit einem wiedergabebestimmten Bewegungsvideo (Videospiel), bei dem die Bilder durch ein Steuerungsprogramm bei der Wiedergabe bestimmt werden, wird eine Sprite-Bitmap in ihrer Gesamtheit in einer Speichervorrichtung gespeichert. Die Sprite-Bitmap umfaßt mehrere Datenbits, die ein Sprite-Bild definieren. Die Sprite-Bitmap wird auf einem Monitor angezeigt und die Teile des Sprites werden durch eine Bedienungsperson identifiziert und Verzerrungspunkte werden für die Teile des Sprites ausgewählt.
  • Auf die Teile der Sprite-Bitmap wird ein Netz aus Dreiecken überlagert. Die Dreiecke, die das Netz aus Dreiecken bilden, werden durch Verbinden benachbarter Verzerrungspunkte gebildet. Die Verzerrungspunkte sind die Scheitelpunkte der Dreiecke. Die Lage jedes Dreiecks der Sprite-Bitmap wird bestimmt und in der Speichervorrichtung gespeichert.
  • Bei der Wiedergabe wird eine nachfolgende Lage jedes Dreiecks von einem Steuerungsprogramm empfangen. Die Sprite-Bitmap und die nachfolgende Lage jedes Dreiecks in der Sprite-Bitmap werden von der Speichervorrichtung abgerufen und zum Anzeigeprozessor weitergegeben. Die nachfolgende Lage jedes Dreiecks wird auch an den Anzeigeprozessor weitergegeben.
  • Eine Transformationslösung wird für jedes Dreieck in der Sprite-Bitmap berechnet. Dann wird eine nachfolgende Bitmap im Anzeigeprozessor durch Anwenden der Transformationslösung auf jedes aus der Sprite-Bitmap abgeleitete Dreieck erzeugt, die das Sprite-Bild in der Lage jedes Dreiecks definiert. Der Anzeigeprozessor gibt die nachfolgende Sprite-Bitmap an einen Monitor zur Anzeige weiter. Dieser Prozeß wird für jede nachfolgende Lage jedes vom Steuerungsprogramm abgerufenen Dreiecks wiederholt.
  • Wie in 26 gezeigt ist, beginnt eine Kodierungsprozedur für ein Filmbewegungsvideo beim Schritt 900, indem die CPU 22 eine momentane Bitmapreihe von einer Bildquelle empfängt. Die momentane Bitmapreihe umfaßt mehrere sequentielle Bitmaps sequentieller Bilder. Die momentane Bitmapreihe umfaßt eine momentane Bitmap, die mehrere Datenbits aufweist, die ein erstes Bild von der Bildquelle definieren. Das erste Bild umfaßt zumindest eine Figur mit zumindest einem Teil.
  • Fortschreitend zum Schritt 902 wird das erste Bild für die Bedienungsperson auf dem Monitor 28 angezeigt. Vom Monitor 28 werden die Figuren des ersten Bildes in der momentanen Bitmap von der Bedienungsperson identifiziert. Die Teile der Figur in der momentanen Bitmap werden dann von der Bedienungsperson im Schritt 904 identifiziert.
  • Als nächstes wählt die Bedienungsperson im Schritt 906 Merkmals- oder Verzerrungspunkte in der momentanen Bitmap aus. Die Verzerrungspunkte werden so gewählt, daß die Verzerrungspunkte mit Merkmalen in der Bitmap übereinstimmen, an welchen eine relative Bewegung eines Teils wahrscheinlich auftreten wird. Für den Fachmann ist verständlich, daß die Figuren, die Teile der Figuren und die Verzerrungspunkte in der Bitmap mit dem Computersystem 20 oder mit Unterstützung durch dieses identifiziert werden können. Es wird jedoch bevorzugt, daß die Bedienungsperson die Figuren, die Teile der Figuren und die Verzerrungspunkte in der Bitmap identifiziert.
  • Fortschreitend zum Schritt 908 wird ein momentanes Netz aus Dreiecken auf die Teile der momentanen Bitmap mittels des Computersystems 20 überlagert. Mit Bezugnahme auf 27A umfaßt das momentane Netz Dreiecke, die durch Verbinden benachbarter Verzerrungspunkte gebildet sind. Die Verzerrungspunkte bilden die Scheitelpunkte der Dreiecke. Insbesondere umfaßt das erste Bild der momentanen Bitmap eine Figur, bei der es sich um eine Person 970 handelt. Die Person 970 umfaßt sechs Teile entsprechend einem Kopf 972, einem Torso 974, einem rechten Arm 976, einem linken Arm 978, einem rechten Bein 980 und einem linken Bein 982. Die Verzerrungspunkte werden an jedem Teil der Person 970 so gewählt, daß die Verzerrungspunkte mit Merkmalen übereinstimmen an welchen eine relative Bewegung eines Teils wahrscheinlich auftreten wird. Ein momentanes Netz wird über jedes Teil überlagert, wobei die Dreiecke jedes momentanen Netzes durch Verbinden benachbarter Verzerrungspunkte gebildet sind. Somit bilden die Verzerrungspunkte die Scheitelpunkte der Dreiecke.
  • Im Schritt 910 bestimmt das Computersystem 20 eine momentane Lage jedes Dreiecks in der momentanen Bitmap. Die momentane Lage jedes Dreiecks in der momentanen Bitmap wird durch den Ort der Verzerrungspunkte definiert, die die Scheitelpunkte des Dreiecks bilden. Im Schritt 912 wird die momentane Lage jedes Dreiecks in der Speichervorrichtung gespeichert. Ein Teil von aus der momentanen Bitmap abgeleiteten Daten, die das erste Bild in der momentanen Lage jedes Dreiecks definieren, wird beim Schritt 914 zurückgehalten.
  • Als nächstes wird im Schritt 916 eine der momentanen Bitmapreihe nachfolgende Bitmap von der CPU 22 empfangen. Die nachfolgende Bitmap umfaßt eine Vielzahl von Datenbits, die ein zweites Bild der momentanen Bitmapreihe definieren. Das zweite Bild kann Figuren umfassen, die den Figuren im ersten Bild entsprechen oder nicht. Für die folgenden Schritte wird angenommen, daß das zweite Bild Figuren aufweist, die den Figuren im ersten Bild entsprechen. Im Schritt 918 wird das momentane Netz aus Dreiecken der nachfolgenden Bitmap überlagert. Das zweite Bild mit dem überlagerten Dreiecksnetz wird für die Bedienungsperson auf dem Monitor 28 angezeigt.
  • Im Schritt 920 werden die Verzerrungspunkte durch die Bedienungsperson mit Unterstützung des Computersystems 20 neu ausgerichtet, so daß sie mit entsprechenden Merkmalen in der nachfolgenden Bitmap übereinstimmen. Die Verzerrung wird vom Computersystem 20 unter Verwendung eines Blockabgleichs neu ausgerichtet. Fehler werden von der Bedienungsperson korrigiert. Unter Bezugnahme auf 27B bilden die neu ausgerichteten Verzerrungspunkte ein nachfolgendes Netz aus Dreiecken. Die neu ausgerichteten Verzerrungspunkte sind die Scheitelpunkte der Dreiecke. Insbesondere umfaß das zweite Bild der nachfolgenden Bitmap einer Person 970 einen Kopf 972, einen Torso 974, einen rechten Arm 976, einen linken Arm 978, ein rechtes Bein 980 und ein linkes Bein 982. Im zweiten Bild ist je doch der rechte Arm 980 gehoben. Die momentanen Netze des ersten Bildes wurden über jedes Teil überlagert und ihre Verzerrungspunkte neu ausgerichtet, so daß sie mit entsprechenden Merkmalen im zweiten Bild übereinstimmen. Die neu ausgerichteten Verzerrungspunkte definieren nachfolgende Netze aus Dreiecken. Die nachfolgenden Netze umfassen Dreiecke, die durch Verbinden der neu ausgerichteten Verzerrungspunkte gebildet sind. Somit bilden die neu ausgerichteten Verzerrungspunkte die Scheitel der Dreiecke der nachfolgenden Netze.
  • Fortschreitend zum Schritt 922 wird eine nachfolgende Lage jedes Dreiecks der nachfolgenden Bitmap durch das Computersystem 20 bestimmt. Im Schritt 924 wird die nachfolgende Lage jedes Dreiecks in der nachfolgenden Bitmap in der Speichervorrichtung gespeichert. Ein aus der nachfolgenden Bitmap abgeleiteter Teil von Daten, die das zweite Bild in der nachfolgenden Lage jedes Dreiecks definieren, wird im Schritt 926 zurückgehalten. Der Schritt 926 führt zu einem Entscheidungsschritt 928, an dem bestimmt wird, ob eine nächste nachfolgende Bitmap existiert.
  • Falls eine nächste nachfolgende Bitmap existiert, führt der JA-Zweig des Entscheidungsschritts 928 zum Schritt 930, bei dem die nachfolgende Bitmap die momentane Bitmap wird. Der Schritt 930 kehrt zum Schritt 916 zurück, bei dem eine der momentanen Bitmapreihe nachfolgende Bitmap von der CPU 22 empfangen wird. Falls eine nächste nachfolgende Bitmap nicht existiert, führt der NEIN-Zweig des Entscheidungsschritts 928 zum Schritt 932, bei dem ein gemitteltes Bild für jedes Dreieck der momentanen Bitmapreihe bestimmt wird. Das gemittelte Bild ist der Mittelwert der Pixel eines Dreiecks. Der Gebrauch des gemittelten Bildes macht den Prozeß weniger anfällig für eine Degenerierung. Fortschreitend zum Schritt 934 wird das gemittelte Bild jedes Dreiecks der momentanen Bitmapreihe in der Speichervorrichtung gespeichert.
  • Als nächstes wird im Schritt 936 die momentane Lage jedes Dreiecks in der momentanen Bitmap aus der Speichervorrichtung abgerufen. Eine affine Transformationslösung zur Transformation des gemittelten Bildes jedes Dreiecks auf den momentanen Ort des Dreiecks in der momentanen Bitmap wird dann vom Computersystem 20 im Schritt 938 berechnet. Im Schritt 940 wird eine vorhergesagte Bitmap durch Anwenden der Transformationslösung des gemittelten Bildes jedes Dreiecks auf die momentane Lage jedes Dreiecks in der momentanen Bitmap erzeugt. Die vorhergesagte Bitmap wird mit der momentanen Bitmap im Schritt 942 verglichen.
  • Im Schritt 944 wird eine Korrekturbitmap erzeugt. Die korrigierte Bitmap umfaßt die Datenbits der momentanen Bitmap, die durch die vorhergesagte Bitmap nicht richtig vorhergesagt wurden. Die korrigierte Bitmap wird dann im Schritt 948 in der Speichervorrichtung gespeichert. Der Schritt 948 führt zum Entscheidungsschritt 950, in dem bestimmt wird, ob eine nachfolgende Bitmap existiert.
  • Falls eine nachfolgende Bitmap existiert, führt der JA-Zweig des Entscheidungsschritts 950 zum Schritt 952, in dem die nachfolgende Bitmap die momentane Bitmap wird. Der Schritt 952 kehrt zum Schritt 936 zurück, in dem die momentane Lage jedes Dreiecks in der momentanen Bitmap aus der Speichervorrichtung abgerufen wird. Falls eine nächste nachfolgende Bitmap nicht existiert, führt der NEIN-Zweig des Entscheidungsschritts 950 zum Entscheidungsschritt 954, in dem bestimmt wird, ob eine nachfolgende Bitmapreihe existiert. Falls eine nachfolgende Bitmapreihe nicht existiert, ist die Kodierung beendet und der NEIN-Zweig des Entscheidungsschritts 954 führt zum Schritt 956. Falls eine nachfolgende Bitmapreihe existiert, führt der JA-Zweig des Entscheidungsschritts 954 zum Schritt 958, in dem die CPU 22 die nachfolgende Bitmapreihe als die momentane Bitmapreihe empfängt. Der Schritt 956 kehrt zum Schritt 902 zurück, in dem die Figuren des ersten Bildes der momentanen Bitmapreihe durch die Bedienungsperson identifiziert werden.
  • Der Prozeß aus 26 beschreibt die Erzeugung eines Sprites oder Stammobjekts 90 zur Verwendung im Kodierungsprozeß 64 aus 3. Der Prozeß des Gebrauchs des Stammobjekts 90 zur Bildung vorhergesagter Objekte 102 wird mit Bezugnahme auf 28 beschrieben.
  • Wie in 28 beschrieben ist, beginnt die Prozedur im Schritt 1000 mit dem Abruf einer momentanen Bitmapreihe. Die momentane Bitmapreihe umfaßt mehrere sequentielle Bitmaps sequentieller Bilder. Die momentane Bitmapreihe umfaßt eine momentane Bitmap, die eine Vielzahl von Datenbits aufweist, die ein erstes Bild von der Bildquelle definieren. Das erste Bild umfaßt zumindest eine Figur mit zumindest einem Teil.
  • Im Schritt 1002 wird das gemittelte Bild jedes Dreiecks der momentanen Bitmapreihe aus der Speichervorrichtung abgerufen. Das gemittelte Bild jedes Dreiecks wird dann zu einem Anzeigeprozessor (nicht gezeigt) im Schritt 704 weitergegeben. Es ist ersichtlich, daß das Computersystem 20 (1) optional auch einen Anzeigeprozessor oder andere zweckbestimmte Komponenten zur Ausführung von Prozessen dieser Erfindung umfassen kann. Fortschreitend zum Schritt 1006 wird die momentane Lage jedes Dreiecks in der momentanen Bitmap aus der Speichervorrichtung abgerufen. Die momentane Lage jedes Dreiecks wird im Schritt 1008 an den Anzeigeprozessor weitergegeben.
  • Als nächstes wird eine Lösung einer affinen Transformation zur Übertragung eines gemittelten Bildes jedes Dreiecks in die momentane Lage jedes Dreiecks in der momentanen Bitmap mit dem Anzeigeprozessor im Schritt 1010 berechnet. Fortschreitend zum Schritt 1012 wird eine vorhergesagte Bitmap vom Anzeigeprozessor durch Anwenden der Lösung der Transformation zum Übertragen des gemittelten Bildes jedes Dreiecks in die momentane Lage jedes Dreiecks in der momentanen Bitmap erzeugt.
  • Im Schritt 1014 wird eine Korrekturbitmap für die momentane Bitmap aus der Speichervorrichtung abgerufen. Die Korrekturbitmap wird im Schritt 716 zum Anzeigeprozessor weitergegeben. Dann wird eine Anzeigebitmap im Anzeigeprozessor durch Überlagern der vorhergesagten Bitmap und der Korrekturbitmap erzeugt. Der Anzeigeprozessor behält eine Kopie des gemittelten Bildes jedes Dreiecks und gibt die Anzeigebitmap zum Bildpuffer zur Anzeige auf dem Monitor weiter.
  • Als nächstes wird im Entscheidungsschritt 1020 bestimmt, ob eine der momentanen Bitmapreihe nachfolgende Bitmap existiert. Falls eine der momentanen Bitmapreihe nachfolgende Bitmap existiert, führt der JA-Zweig des Entscheidungsschritts 1020 zum Schritt 1022. Im Schritt 1022 wird die nachfolgende Bitmap die momentane Bitmap. Der Schritt 1022 kehrt zum Schritt 1006 zurück, in dem die Lage jedes Dreiecks in der momentanen Bitmap von der Speichervorrichtung abgerufen wird.
  • Zurückkehrend zum Entscheidungsschritt 1020, führt der NEIN-Zweig des Entscheidungsschritts 1020 zum Entscheidungsschritt 1024, falls eine der momentanen Bitmapreihe nachfolgende Bitmap nicht existiert. Im Entscheidungsschritt 1024 wird bestimmt, ob eine nachfolgende Bitmapreihe existiert. Falls eine nachfolgende Bitmapreihe nicht existiert, endet der Prozeß und der NEIN-Zweig des Entscheidungsschritts 1024 führt zum Schritt 1026. Falls eine nachfolgende Bitmapreihe existiert, führt der JA-Zweig des Entscheidungsschritts 1024 zum Schritt 1028. Im Schritt 1028 wird die nachfolgende Bitmapreihe die momentane Bitmapreihe. Der Schritt 1028 kehrt zum Schritt 1000 zurück.
  • Vereinfachte Objektkodierung unter Verwendung von Sprites
  • 29 ist ein Funktionsblockdiagramm eines vereinfachten Kompressionsverfahrens 1100 für eine bevorzugte Verwendung in Verbindung mit einem Videokomprimierungskodierungsprozeß 64 und einem Videokomprimierungsdekodierungsprozeß 700, die mit Bezugnahme auf 3A bzw. 23A beschrieben werden. Das vereinfachte Objektkomprimierungsverfahren 1100 ist auf eine Kodierung und Dekodierung komprimierter Videodarstellungen Sprite-definierter Objekte gerichtet, die vollständig über eine Videosequenz ab dem Zeitpunkt, zu dem das Objekt zum ersten Mal auftritt, definiert sind, wie im folgenden in weiteren Einzelheiten beschrieben wird.
  • Im vereinfachten Komprimierungsverfahren 1100 werden der Kodierungsprozeß 64 und der Dekodierungsprozeß 700 vorzugsweise auf allgemeine Videosequenzen oder Informationen angewandt, die zumindest ein Sprite-definiertes Objekt und zumindest ein allgemeines Videoobjekt umfassen, das nicht vollständig ab seinem ersten Auftreten in der Videosequenz definiert ist. Das allgemeine Videoobjekt bzw. die allgemeinen Videoobjekte der allgemeinen Videosequenz werden vorzugsweise durch den Kodierungsprozeß 64 und den Dekodierungsprozeß 700, die oben beschrieben wurden, verarbeitet. Das Sprite-definierte Objekt bzw. die Sprite-definierten Objekte der allgemeinen Videosequenz werden vorzugsweise mit dem vereinfachten Kompressionsverfahren 1100 verarbeitet.
  • Das Sprite-definierte Objekt bzw. die Sprite-definierten Objekte bilden eine Untergruppe der allgemeinen Objekte in der allgemeinen Videosequenz und umfassen mehr verfügbare Informationen, wenn sie das erste Mal in einer Videosequenz auftreten als andere Objekte. Das vereinfachte Kompressionsverfahren 1100 ermöglicht es, die für Sprite-definierte Objekte verfügbaren zusätzlichen Informationen effizienter zu nutzen als mit dem Kodierungsprozeß 64 und dem Dekodierungsprozeß 700. Im Ergebnis kann eine Verarbeitung des Sprite-definierten Objektes bzw. der Sprite-definierten Objekte der allgemeinen Videosequenz ge mäß dem vereinfachten Prozeß 1100 die Bitratenerfordernisse und die Effizienz der Speicherung oder Übertragung der allgemeinen Videoinformationen weiter verbessern.
  • Sprite-definierte Objekte sind ab ihrem ersten Auftreten über die ganze Videosequenz durch einen „Sprite" und eine oder mehrere Trajektorien bzw. Bahnen vollständig definiert. Der Sprite umfaßt alle Bildcharakteristika eines Objekts über die ganze Videosequenz und eine oder mehrere Trajektorien verziehen oder transformieren den Sprite, um das Objekt in jedem Rahmen der Videosequenz wiederzugeben. Bei einigen Anwendungen sind die Objekte durch Beleuchtungs- oder Transparenzfaktoren weiter definiert bzw. modifiziert, die ebenfalls ab dem ersten Auftreten des Objekts in der Videosequenz bekannt sind. Sprite-definierte Objekte treten beispielsweise häufig bei Videokonferenzen und computererzeugten Graphikanwendungen auf. Das vereinfachte Komprimierungsverfahren 1100 ist auch beispielsweise bei der allgemeinen Videokomprimierung, Multimedienanwendungen, der digitalen Videoarchivierung, beim Netz- oder Internetbrowsen und bei einer Videoübertragung anwendbar.
  • Unter Bezugnahme auf 29 gibt der Prozeßblock 1102 an, daß Objektinformationen in Bezug zu jedem von mehreren Objekten in einer allgemeinen Videosequenz beispielsweise entsprechend den Funktionsblöcken 66-96 des Videokomprimierungskodierungsprozesses 64 (3A) erhalten werden. Zumindest eines der Objekte in der Videosequenz ist ein Sprite-erzeugtes Objekt für das alle Für die Videosequenz erforderlichen Objektinformationen am Anfang der Videosequenz verfügbar bzw. „bekannt" sind. Die Objektinformationen für das Sprite-definierte Objekt bzw. die Sprite-definierten Objekte umfassen einen Sprite, der alle Bildcharakteristika des Objekts über die ganze Videosequenz und eine Trajektorie umfaßt, die den Sprite verzieht bzw. transformiert, um das Objekt in jedem Rahmen der Videosequenz wiederzugeben. Die Videosequenz ist insofern allgemein, als sie zumindest ein allgemeines Videoobjekt umfaßt oder umfassen kann, bei dem es sich nicht um ein Sprite-erzeugtes Objekt handelt.
  • Bezüglich computererzeugter Graphiken werden beispielsweise Objekte im allgemeinen durch Sprites (oder mathematisch definierte Objektmodelle) und Trajektorien wiedergegeben, die am Beginn einer Videosequenz oder wenn die Objekte zum ersten Mal in der Videosequenz auftreten, verfügbar sind. Die Trajektorie, die manchmal als Transformationsinformation bezeichnet wird, wird zur Erzeugung des Objektes über die ganze Videosequenz verwendet und ist somit verfügbar. Die Transformationsinformation kann in der Form multidimen sionaler affiner Transformationen oder perspektivischer Transformationen vorliegen. Wie oben unter Bezugnahme auf das in 12 gezeigte Transformationsverfahren 350 beschrieben wurde, werden affine Transformationen vorzugsweise dargestellt als: x' = ax + by + c x' = dx + ey + f.
  • Alternativ kann die Transformationsinformation in der Form perspektivischer Transformationen vorliegen, die vorzugsweise wiedergegeben werden als: x' = (ax + by + c)/(gx + by + 1), y' = (dx + ey + f)/(gx + by + 1),wie beispielsweise in „Digital Image Warping" von George Wolberg, IEEE, 1990 beschrieben wird.
  • Wie mit Bezugnahme auf den Sprite-Erzeugungs- oder Kodierungsprozeß aus 26 beschrieben wurde (z.B. Schritt 936) werden viele Sprites oder Objekte im allgemeinen durch mehr als eine affine Transformation und daher mehr als eine Trajektorie wiedergegeben. Es ist ersichtlich, daß Bezugnahmen in dieser Beschreibung bezüglich des vereinfachten Komprimierungsverfahrens 1100 auf eine Transformation (entweder affin oder perspektivisch) oder Trajektorie im Singular lediglich veranschaulichend sind und keine implizite Beschränkung dieses Verfahrens beabsichtigt wird.
  • Mit Bezug auf eine Videokonferenzanwendung kann beispielsweise ein dem Hintergrund der Videokonferenzszene entsprechendes Objekt als ein Sprite-definiertes Objekt gebildet werden, das durch Abbilden des Hintergrundes ausschließlich während einer Hintergrundspriteabbildungsperiode erhalten wird. Die Transformationsinformation wäre in diesem Beispiel eine Identitätstransformation, mit der das Objekt während der Videoszene in einem statischen Zustand gehalten wird. Bei einer derartigen Anwendung würde durch die Vereinfachung der Darstellung des Hintergrundobjektes die zur Übertragung einer Videosequenz oder Konferenz erforderliche Bandbreite beträchtlich verringert werden.
  • Es ist ersichtlich, daß diese beiden Beispiele lediglich veranschaulichend sind und keine Beschränkung auf Arten oder Anwendungen von Sprites darstellen. Beispielsweise könnte ein mit einem Computer erzeugter graphischer Hintergrund der durch eine einfache Translation transformiert wird, entweder zusammen mit anderen vom Computer erzeugten Graphikobjekten oder Videographikobjekten verwendet werden.
  • Der Prozeßblock 1104 gibt an, daß die Sprite-definierten Objekte sich von den allgemeinen Objekten hinsichtlich der Objektinformationen unterscheiden, die zu jedem von mehreren Objekten in der allgemeinen Videosequenz in Beziehung stehen. Die Sprite-definierten Objekte werden gemäß den folgenden Prozeßschritten des vereinfachten Komprimierungsprozesses 1100 verarbeitet. Die allgemeinen Objekte werden vorzugsweise gemäß dem Kodierungsprozeß 64 und dem Dekodierungsprozeß 700 aus 3A bzw. 23A verarbeitet. Die Sprite-definierten Objekte können beispielsweise durch Etikettieren derselben als solche bei ihrer Erzeugung unterschieden werden.
  • Bezüglich einer Videokonferenzanwendung könnte es sich beispielsweise bei einem dem Hintergrund der Videokonferenzszene entsprechenden Objekt um ein Sprite-definiertes Objekt handeln, das durch Abbilden des Hintergrunds allein während einer Hintergrundabbildungsperiode erhalten wird. Als ein weiteres Beispiel werden vom Computer erzeugte Graphikobjekte typischerweise vollständig mit Hilfe von Daten oder Algorithmen erzeugt und wären typischerweise Sprite-definierte Objekte. In allgemeinen Live-Handlungs-Videosequenzen könnten einige Objekte von einer die Kodierung durchführenden Bedienungsperson manuell als Sprite-definiert markiert werden.
  • Der Prozeßblock 1106 gibt an, daß die Spriteinformationen und Transformationsinformationen durch einen vereinfachten Kodierungsprozeß kodiert werden. Vorzugsweise werden die Spriteinformationen durch einen herkömmlichen verlustbehafteten Kodierungsprozeß wie beispielsweise die Wavelet- oder DCT-Kodierung aufgezeichnet, wie oben beschrieben wurde. Immer wenn sprite-definierte Objekte durch zusätzliche Faktoren, wie beispielsweise Belichtungs- oder Transparenzfaktoren (die ab dem ersten Auftreten des Objektes in der Videosequenz bekannt sind) weiter definiert oder modifiziert werden, werden die zusätzlichen Faktoren ebenfalls in derselben Weise wie der Sprite kodiert. Das Kodieren des Sprites und von zusätzlichen Faktoren kann des weiteren beispielsweise die Anwendung eines Vorkomprimie rungs-Extrapolationsverfahrens 400 (17A und 17B) zur Erzielung einer verstärkten Komprimierung bzw. Kodierung umfassen.
  • Die Trajektorien bzw. Transformationsinformation werden als Trajektorien dargestellt und vorzugsweise mit einer verlustfreien Kodierungstechnik, wie beispielsweise der QM-Kodierung kodiert bzw. komprimiert, die in „JPEG: Still Image Data Compression Standard", William B. Pennebaker und Joan L. Mitchell, Van Nostrand Reinhold, New York, 1993 beschrieben ist. Es ist ersichtlich, daß andere verlustfreie Kodierungstechniken, wie beispielsweise die Huffman-Kodierung, geeignet sind. Zur Veranschaulichung ist die folgende Beschreibung auf die QM-Kodierung gerichtet.
  • Die Orte von Merkmalspunkten im Sprite werden als die Basis jeder Trajektorie festgesetzt. Die x- und y-Komponenten jeder Trajektorie werden differentiell kodiert und verknüpft, bevor sie der QM-Kodierung unterzogen werden, um eine Darstellung bzw. einen Bitstrom zu bilden, der die Koordinaten der Merkmalspunkte oder Pixel im Sprite und die Koordinatendifferenzen zwischen den Merkmalspunkten oder Pixeln im Sprite und den entsprechenden Merkmalspunkten oder Pixeln des entsprechenden Objekts in nachfolgenden Einzelbildern aufweist. Für eine Videosequenz mit einer Zahl T von Einzelbildern und einem Sprite mit einer Zahl N von Trajektorien sind für als (xi(j), yi (j)), i = 1, ..., T, j = 1, ..., N dargestellte Orte von Merkmalspunkten die Werte, die vorzugsweise QM-kodiert werden: xi (1), Δx2 (1), ..., ΔxT (1), y1 (1), Δy2 (1), ..., ΔyT (1), xi (2), Δx2 (2), ..., ΔxT (2), y1 (2), Δy2 (2), ..., ΔyT (2), xi (N), Δx2 (N), ..., ΔxT (N), y1 (N), Δy2 (N), ..., ΔyT (N),
  • Der Prozeßblock 1108 gibt an, daß die kodierten Sprite-erzeugten Objekte entsprechend typischer Verwendungen kodierter oder komprimierter digitaler Informationen einschließlich von Multimedienanwendungen, digitaler Videoarchivierung, Netz- oder Internetbrowsen und Videoübertragung gespeichert oder übertragen und abgerufen oder empfangen werden.
  • Der Prozeßblock 1110 gibt an, daß die vom Speicher abgerufenen oder über eine Übertragung empfangenen kodierten Sprite-erzeugten Objekte dekodiert werden. Die kodierte Trajektorie wird QM-dekodiert und der Sprite wird gemäß dem Format dekodiert, in dem er kodiert wurde (z.B. DCT).
  • Überblick über Sprites bei der objektbasierten Videokodierung
  • Bei einem Sprite handelt es sich um ein aus Pixeln gebildetes Bild, das ein Videoobjekt über eine ganze Videosequenz wiedergibt. Ein den Hintergrund einer Szene über eine gesamte Videosequenz wiedergebender Sprite enthält beispielsweise alle über die gesamte Sequenz sichtbaren Pixel des Hintergrundobjekts. Teile des Hintergrundobjekts, die für einen Teil der Sequenz verdeckt sind und während des Restes der Sequenz sichtbar sind, werden dennoch dazu verwendet, den Sprite für die gesamte Sequenz zu erzeugen. Da der Sprite alle Teile des Hintergrundobjekts enthält, die zumindest einmal während der Videosequenz sichtbar sind, kann der Sprite direkt zur Rekonstruktion der Hintergrundobjekte oder zur vorhersagenden Kodierung der Hintergrundobjekte verwendet werden.
  • Es gibt zwei Haupttypen von Sprites: (1) statische Offline-Sprites und (2) dynamische Online-Sprites. Statische Sprites sind Sprites, die direkt kopiert werden (einschließlich eines geeigneten Verziehens und Zurechtschneidens), um das Videoobjekt aus dem Sprite für ein Bild in einer Videosequenz zu rekonstruieren. Ein statischer Sprite wird offline aufgebaut und die Textur und die Form des statischen Sprites wird getrennt von der Kodierung des Videos selbst kodiert und übertragen. Im Offline-Fall wird ein statischer Sprite unter Verwendung eines Videoobjekts aus jedem Bild in eine Videosequenz erzeugt.
  • Ein dynamischer Sprite unterscheidet sich von einem statischen Sprite darin, daß er als eine Referenz beim vorhersagenden Kodieren verwendet wird. Beim vorhersagenden Kodieren wird die Bewegung eines Videoobjekts unter Verwendung von Bewegungsparametern für den Sprite kompensiert. Ein dynamischer Sprite wird dynamisch während der Kodierung sowohl im Kodierer als auch im Dekodierer offline aufgebaut.
  • Statische Offline-Sprites sind für synthetische Objekte besonders geeignet. Sie sind jedoch auch für natürliche Objekte geeignet, die hauptsächlich eine starre Bewegung ausführen. Dynamische Online-Sprites werden in einer verbesserten vorhersagenden Kodierungsumgebung verwendet. Im Fall normaler Videoobjekte werden dynamische Online-Sprites bevorzugt, um die Latenz zu reduzieren oder um Einzelheiten zu bewahren, die durch eine lokale Bewegung verursacht werden.
  • Ein wichtiger Gesichtspunkt einer sprite-basierten Kodierung besteht im Verfahren zur Erzeugung von Sprites. Bei den Verfahren zur Online- und Offline-Erzeugung von Sprites wird ein ähnlicher Ansatz verwendet. Im Offline-Fall werden vom Sprite-Erzeugungsverfahren die Videoobjekte aus allen Bildern verwendet, um den Sprite aufzubauen, bevor die Videosequenz kodiert wird. Im Online-Fall erzeugen der Kodierer und der Dekodierer einen Sprite aus dem momentanen Videoobjekt und einem für das vorangehende Bild rekonstruierten Videoobjekt (das zuvor konstruierte Videoobjekt oder „Referenzobjekt").
  • Der Prozeß der Sprite-Erzeugung umfaßt die folgenden Schritte:
    • 1) Durchführen einer globalen Bewegungsabschätzung, um zu bestimmen, wie jedes Pixel in einem Videoobjekt auf ein entsprechendes Pixel im Sprite abgebildet wird;
    • 2) Gebrauch der allgemeinen Bewegungsabschätzungsparameter, um das Videoobjekt in das Koordinatensystem des Sprites zu verziehen; und
    • 3) Mischen der Pixel des verzogenen Objekts mit den entsprechenden Pixeln des Sprites.
  • In 30 ist ein Beispiel von Videoobjekten in einer Videosequenz gezeigt, um den Prozeß zur Erzeugung eines Sprites zu veranschaulichen. In diesem Beispiel sind vier Einzelbilder (0-3) gezeigt, von welchen jedes ein Videoobjekt I0-I3 abbildet, das eine Saftdose darstellt. Die Pfeile im Einzelbild 0 geben die Bewegungsrichtung der Saftdose über die Videosequenz an. Insbesondere taumelt die Saftdose um die Enden und dreht sich leicht um ihre als gestrichelte Linie gezeigte Achse. Beim Vorwärtstaumeln dreht sich die Saftdose ebenfalls etwas, so daß die linke Seite des „JUICE"-Etiketts verdeckt wird und die rechte Seite des Etiketts sichtbar wird. Die unten in 30 gezeigten Bilder sind die inkrementell aus den Videoobjekten jedes Bildes aufgebauten Sprites. Jedes Bild S0-S3 gibt den aus dem verzogenen Videoobjekt jedes Bildes aufgebauten Sprite wieder.
  • 31 ist ein Blockdiagramm, das einen Sprite-Generator zeigt. Der Bewegungsabschätzungsblock 1200 führt eine „globale Bewegungsabschätzung" basierend auf dem Videoobjekt des momentanen Bildes, des aus dem Videoobjekt in den vorangehenden Rahmen aufgebauten Sprites und den Masken des momentanen Videoobjekts und Sprites durch. Im Fall eines statischen Offline-Sprites schätzt der globale Bewegungsabschätzungsblock die relative Bewegung zwischen dem Videoobjekt des momentanen Rahmens und dem aus den Videoob jekten vorangehender Rahmen aufgebauten Sprite ab. Der globale Bewegungsabschätzungsblock führt dieselbe Funktion für dynamische Sprites aus mit der Ausnahme durch, daß die Bewegung zwischen einem Videoobjekt des momentanen Bildes und einem zuvor aufgebauten Objekt abgeschätzt wird.
  • Die globale Bewegung des Videoobjektes wird auf der Basis eines geometrischen Bewegungsmodells, wie beispielsweise einer perspektivischen Transformation, modelliert. Die momentane Implementierung des Sprite-Generators basiert auf der perspektivischen Transformation, wobei er jedoch auch andere Arten von Transformationen ausführt, bei welchen es sich um Spezialfälle der perspektivischen Transformation, einschließlich keiner Bewegung (stationär), einer translatorischen Bewegung, einer isotropischen Vergrößerung, einer Drehung und Translation und einer affinen Transformation handelt. Diese Transformationen definieren die Bewegung des Videoobjekts relativ zu einem Sprite. Die jede Transformation wiedergebenden Daten (die Transformationsinformationen) können als eine Gruppe von Bewegungsparametern wiedergegeben werden. Wenn beispielsweise das globale Bewegungsmodell auf einer perspektivischen Transformation basiert, können die Bewegungsparameter als eine Gruppe von Bewegungskoeffizienten wiedergegeben werden. Diese Bewegungskoeffizienten entsprechen den Elementen in der perspektivischen Transformationsmatrix, die zum Verziehen eines Videoobjekts (d.h. von Punkten im Videoobjekt) in den Koordinatenraum des Sprites verwendet wird. Wie oben beschrieben wurde, können die Bewegungsparameter auch als eine Reihe von Trajektorien oder Bewegungsvektoren dargestellt werden, die definieren, wie sich Referenzpunkte in einem Videoobjekt relativ zum Koordinatenraum des Sprites bewegen.
  • Bei unserer Implementierung berechnet der Bewegungsabschätzungblock 1200 Bewegungsparameter, die dazu verwendet werden, jedes Videoobjekt in den zuvor aufgebauten Sprite zu verziehen. Anfangs wird der Sprite auf das Videoobjekt des ersten Bildes (Bild 0) eingestellt, wie in 30 gezeigt ist. Dann versucht der Bewegungsabschätzungsblock 1200 die Gruppe von Bewegungsparametern zu finden, mit welchen der Intensitätsfehler zwischen jedem Pixel in einem verzogenen Videoobjekt und seinem entsprechenden Pixel im Sprite minimiert wird.
  • Der in 31 gezeigte Verziehungsblock 1202 gibt den Prozeß der Transformation von Pixelkoordinaten in einem Videoobjekt in Koordinaten in einem Sprite oder Referenzobjekt wieder. Er verwendet Bewegungsparameter, um das Videoobjekt für das momentane Bild (das momentane Videoobjekt) in Sprite-Koordinaten zu übertragen. Beispielsweise in 30 werden die Bewegungsparameter für das Videoobjekt I1 dazu verwendet, um I1 in den Sprite So zu verziehen. Wenn eine perspektivische Transformation als das Bewegungsmodell verwendet wird, wird vom Verziehungsblock 1202 die aus den Bewegungskoeffizienten gebildete perspektivische Transformationsmatrix verwendet, um das Videoobjekt in den Koordinatenraum des Sprites zu verziehen.
  • Der Mischungsblock 1204 gibt den Prozeß des Kombinierens eines verzogenen Objektes mit einem Sprite oder Referenzobjekt wieder. Im Fall des dynamischen Online-Sprites mischt der Mischungsblock 1204 das momentane Objekt mit dem zuvor aufgebauten Objekt. Ein Vorteil unserer Implementierung besteht darin, daß jedes verzogene Videoobjekt inkrementell vom Mischungsblock 1204 mit dem Sprite derart gemischt wird, daß jedes Videoobjekt einen im wesentlichen gleichen Beitrag zum Sprite liefert. Um dies zu erreichen, gewichtet der Mischungsblock die Pixel vom Sprite proportional zur Zahl der Videoobjekte aus den vorangehenden Bildern, aus welchen der Sprite aufgebaut wurde. Dadurch wird sichergestellt, daß der Sprite im wesentlichen denselben Beitrag von jedem Videoobjekt über eine Videosequenz erhält. Der spezielle Ansatz zum Mischen von Sprites mit verzogenen Videoobjekten wird im folgenden in weiteren Einzelheiten erläutert.
  • 30 zeigt ein Beispiel, wie der Sprite durch Mischen eines verzogenen Objekts mit einem zuvor aufgebauten Sprite für jedes Bild aufgebaut wird. Beispielsweise wird der Sprite S1 vom Mischungsblock durch Mischen des Sprites So mit dem verzogenen Videoobjekt W1 aufgebaut. Man beachte, daß der Sprite für jedes Bild durch Mischen des zuvor aufgebauten Sprites mit dem verzogenen Videoobjekt für das momentane Bild aktualisiert wird.
  • Wie in 31 gezeigt ist, wird der Sprite in einem Bildspeicher 1206 gespeichert. Der Bewegungsabschätzungsblock 1200 greift auf den Sprite aus dem Bildspeicher zu, um die Bewegungsparameter für jedes Videoobjekt in der Videosequenz zu berechnen. Insbesondere werden bei der Bewegungsabschätzung die Masken und Texturdaten für das momentane Videoobjekt und den Sprite zur Berechnung der Bewegungskoeffizienten einer 2D-Transformation verwendet, bei der die relative Bewegung zwischen dem momentanen Videoobjekt und dem Sprite abgeschätzt wird.
  • Nachdem nunmehr ein Überblick über den Sprite-Erzeugungsprozeß gegeben wurde, ist eine Betrachtung hilfreich, wie Sprites und Bewegungsparameter kodiert werden, um zu verstehen, wie Sprites bei der objektbasierten Videokodierung verwendet werden.
  • Sprite-Kodierung
  • Sprites werden kodiert durch Kodieren ihrer Textur, Form und Bewegungsparameter. Die Textur und die Form eines Sprites kann unter Verwendung der oben beschriebenen Techniken kodiert werden.
  • Ein Weg zur Kodierung der Bewegungsparameter jedes Videoobjekts besteht darin, die Trajektorie von Referenzpunkten des Videoobjekts aufzuzeichnen. Beispielsweise können die Bewegungskoeffizienten einer perspektivischen Transformation unter Verwendung der Koordinaten von vier oder mehr Referenzpunkten des Videoobjekts und entsprechender „verzogener" Referenzpunkte im Sprite kodiert werden. Unter Verwendung dieser vier Paare von Referenzpunkten können die Bewegungskoeffizienten der bei der Bewegungsabschätzung verwendeten Transformation vom Videodekoder abgeleitet werden.
  • Die zur Kodierung der Bewegungskoeffizienten einer Transformation benötigte Zahl von Referenzpunkten hängt von der Art der Transformation ab. In der folgenden Beschreibung werden die zur Kodierung einer perspektivischen Transformation und der Spezialfälle der perspektivischen Transformation (affine, isotrope Vergrößerung, Drehung und Translation, translatorische Bewegung, stationär (keine Bewegung)) benötigten Referenzpunkte zusammengefaßt.
  • Die bei der globalen Bewegungsabschätzung verwendete perspektivische Transformation kann ausgedrückt werden als: x' = (ax + by + c)/(gx + by + 1), y' = (dx + ey + f)/(gx + by + 1),wobei {a, b, c, d, e, f, g, h} die Bewegungskoeffizienten der Transformation sind, (x, y) die Koordinate eines Pixels im momentanen Videoobjekt und (x', y') die verzogene Koordinate ist. Im Fall eines dynamischen Offline-Sprites ist die Koordinate (x', y') die im Koordinaten system des Videoobjekts angegebene Koordinate eines Pixels in einem vorangehenden Videoobjekt. Im Fall eines statischen Offline-Sprites ist die Koordinate (x', y') die im Sprite-Koordinatensystem angegebene Koordinate im Sprite. Als die verzogene Koordinate wird die Koordinate des „entsprechenden Pixels" im Sprite bezeichnet, da diese Koordinate den Ort des Pixels im Sprite identifiziert, der dem Pixel im Videoobjekt entspricht.
  • Zumindest vier Referenzpunkte werden benötigt, um die Bewegungskoeffizienten der perspektivischen Transformation zu kodieren. Transformationen, mit welchen eine weniger komplexe Bewegung modelliert wird, können als Spezialfälle der perspektivischen Transformation behandelt werden. Diese Transformationen umfassen eine isotrope Vergrößerung, Drehung und Translation, die affine Transformation, Translation und Stationarität.
  • 1. Affine Transformation
  • Zur Darstellung einer affinen Transformation (am Kodierer) und zur Auflösung nach den Koeffizienten {a, b, c, d, e, f} (am Dekodierer) werden drei Punkte benötigt (kodiert). x' = ax + by + c y' = dx + ey + f.
  • 2. Isotrope Vergrößerung, Drehung und Translation
  • Diese Bewegungsart kann unter Verwendung von zwei Referenzpunkten kodiert werden. In diesem Fall ist g = h = 0. Die Transformationsgleichung kann ausgedrückt werden als: x' = acosg x + asing y + c y' = –asingq x + a cosq y + f.
  • Sie kann vereinfacht werden zu x' = ax + by + c, y' = –bx + ay + f, wobei a = acosq und b = singq. Da es unter der Annahme von zwei Punktepaaren (zwei im Sprite und zwei in einem Videoobjekt) vier Unbekannte gibt, kann der Dekoder diese beiden Gleichungen nach den Transformationskoeffizienten auflösen und die Verziehung durchführen.
  • 3. Translation
  • Lediglich ein Punkt wird benötigt und somit kodiert, wenn die Bewegung eines Videoobjekts translatorisch ist. In diesem Fall ist a = 1 = e = 1, b = g = h = d = 0 und können die Transformationsgleichungen ausgedrückt werden als: x' = x + c, y' = y + f.
  • Am Dekoder ist ein Punktepaar (eines am Sprite und eines am momentanen Videoobjekt) ausreichend, um nach c und f aufzulösen.
  • 4. Stationarität
  • Für ein stationäres Objekt wird kein Referenzpunkt benötigt. In diesem Fall ist:
    a = e = 1 und b = c = d = f = g = h = 0, d.h. x' = x und y' = y.
  • Die Orte der Referenzpunkte werden in den Koordinatensystemen der Videoobjekte und Sprites angegeben. Die Videoobjekte und Sprites umfassen ein Array aus Pixeln in ihren jeweiligen Koordinatenräumen. Die Pixelintensitätswerte umfassen Luminanz- und Chrominanzwerte.
  • Ein herkömmlicher Weg zur Darstellung des Ortes von Pixeln in den Videoobjekten und Sprites besteht darin, zweidimensionale Indexwerte zu verwenden, die den Ort eines Pixels im Verhältnis zu einem Ursprung definieren. Beispielsweise kann der Ursprung als das Luminanzpixel oben links definiert werden. Der Ort eines Pixels kann dann in Abhängigkeit von den zweidimensionalen Indexwerten ausgedrückt werden. Eine beispielhafte Darstellung des Ortes eines Pixels in einem Videoobjekt als zweidimensionale Indexwerte i und j ist wie folgt.
  • Luminanzpixel im Videoobjekt: x = j, y = j, Chrominanzpixel im Videoobjekt: x = 2ic + 0,5, y = 2jc + 0,5,wobei die Indexwerte i, j, ic, jc ganze Zahlen sind.
  • Die Genauigkeit der Bewegungsvektoren für jedes Pixel in einem Videoobjekt kann unter Verwendung eines Verziehungsgenauigkeitsparameters s definiert werden. Unter der Annahme, daß die Bewegungsvektoren die Pixelgenauigkeit 1 ÷ s (mögliche Werte für s sind 2, 4, 8 oder 16) annehmen, kann die Beziehung zwischen den Indexwerten und den Koordinaten in einem Sprite oder Referenzvideoobjekt wie folgt definiert werden.
  • Das Luminanzpixel in einem Sprite oder einem Referenzvideoobjekt kann ausgedrückt werden als: x' = i' ÷ s, y' = j' ÷ s,
  • Das Chrominanzpixel in einem Sprite oder einem Referenzvideoobjekt kann ausgedrückt werden als: x' = 2ic' ÷ s + 0,5 y' = 2jc' ÷ s + 0,5 wobei die Indexwerte i', j', ic' und jc' ganze Zahlen sind. Während die verzogenen Koordinaten (x', y') mit einer Genauigkeit von unter einem Pixel ausgedrückt werden können, umfassen Sprites typischerweise nur Pixel auf einem ganzzahligen Pixelnetz. Daher wird eine bilineare Interpolation zur Berechnung der entsprechenden Pixelwerte (x', y') für Pixel (x, y) im Videoobjekt verwendet.
  • Die Referenzpunkte eines Videoobjektes können als die Ecken eines Begrenzungskastens eines Videoobjekts gewählt werden. Der Begrenzungskasten eines Videoobjektes ist ein rechteckiger Bereich, der die Pixel im Videoobjekt umschließt. Unter Verwendung dieses Formats können die vier Ecken des Begrenzungskastens des Videoobjekts durch die obere linke Ecke des Begrenzungskastens zusammen mit der Breite und Höhe des Begrenzungskastens wiedergegeben werden. Die im globalen Bewegungsmodell verwendeten Bewegungskoeffizienten können dann von den vier Referenzkoordinaten im Sprite und dem Ort und der Größe des Begrenzungskastens des Videoobjekts abgeleitet werden.
  • Zusammenfassend werden die Bewegungsparameter unter Verwendung einer globalen Bewegungsabschätzung berechnet. Das Bewegungsmodell basiert auf einer zweidimensionalen Transformation, mit der die Koordinaten von Pixeln in einem Videoobjekt in entsprechende Koordinaten in einem Sprite verzogen werden. Die Bewegungsparameter können als eine Gruppe von Trajektorien unter Verwendung von Referenzpunkten im Videoobjekt und im Sprite oder als eine Gruppe von Bewegungskoeffizienten kodiert werden. Im ersten Fall können die Bewegungskoeffizienten von den Referenzpunkten abgeleitet werden. Eine Transformationsfunktion wird verwendet, um ein Pixel in einem Videoobjekt in einen Sprite basierend auf den Bewegungskoeffizienten zu verziehen. Wenn der Ort von Pixeln in den Videoobjekten und Sprites als zweidimensionale Indexwerte ausgedrückt wird, wie oben beschrieben wurde, kann die Transformationsfunktion als zweidimensionale Indexwerte im Videoobjekt und im Sprite ausgedrückt werden.
  • Implementierung des Sprite-Erzeugungsverfahrens unter Verwendung von Masken und einem abgerundeten Durchschnittswert
  • Diese Implementierung des Sprite-Erzeugungsverfahrens umfaßt die folgenden drei Komponenten:
    • 1) Auffinden der Bewegungsparameter zwischen einem Videoobjekt in dem momentanen Bild und dem zuvor aufgebauten Sprite unter Verwendung der für das vorangehende Videoobjekt berechneten Bewegungsparameter als Ausgangspunkt für das momentane Objekt;
    • 2) Verziehen des Videoobjekts für das momentane Bild in den zuvor aufgebauten Sprite unter Verwendung der Bewegungsparameter aus dem Schritt 1; und
    • 3) Mischen des verzogenen Objekts mit dem zuvor aufgebauten Sprite unter Verwendung eines abgerundeten Mittelwerts.
  • Betrachtet wird der Fall, in dem eine Videosequenz aus n Einzelbildern besteht, wobei jedes Einzelbild i ein ein Videoobjekt darstellendes Bild Ii, i = 0, 1, ..., n-1 umfaßt. Die Implementierung des Sprite-Erzeugungsverfahrens kann wie folgt zusammengefaßt werden:
    S0 = I0, M0 = I (identische Transformation)
    For (i = 1, i < n; i++){
    Mi = Mi-1
    Finde perspektivische Bewegungsparameter Mi zwischen Ii und Si-1;
    Verziehe Ii in Richtung Si-1 unter Verwendung von Mi, um das verzogene Bild Wi zu erhalten;
    Mische Wi mit Si-1 um Si unter Verwendung von Si = (i·Si-1 + Wi)/(i + 1) zu erhalten
    }
  • 32 ist ein Ablaufdiagramm, das die Schritte in diesem Sprite-Erzeugungsverfahren zeigt. Das Verfahren beginnt mit einer Initialisierung der Werte des Sprites und der Bewegungskoeffizienten, wie im Schritt 1300 gezeigt ist. Der Sprite wird anfangs dem Videoobjekt des Rahmens 0 gleichgesetzt. Die Bewegungskoeffizienten werden anfangs auf die Identitätstransformation gesetzt.
  • Nach der Initialisierung der Sprite- und Bewegungskoeffizienten wird der Sprite aus dem Videoobjekt in jedem Bild der Videosequenz inkrementell durch das Verfahren aufgebaut. Um den Sprite inkrementell aufzubauen, wird vom Verfahren eine Reihe von Schritten für das Videoobjekt Ii in jedem Rahmen wiederholt. 32 gibt den iterativen Charakter des Verfahrens unter Verwendung einer FOR-Schleife 1302 wieder. Der erste Hauptschritt für jedes Bild besteht in der Durchführung der globalen Bewegungsabschätzung. Bei dieser Implementierung beginnt der Prozeß zur Bewegungsabschätzung durch eine Initialisierung der Bewegungskoeffizienten unter Verwendung der Bewegungskoeffizienten im vorangehenden Rahmen, wie im Schritt 1304 gezeigt ist, worauf die Berechnung der Bewegungskoeffizienten für das momentane Videoobjekt folgt, wie im Schritt 1306 gezeigt ist. Vor einer Berechnung der Bewegungskoeffzienten Mi für das momentane Videoobjekt Ii werden die Bewegungskoeffizienten zu Anfang auf die Bewegungskoeffizienten Mi-1 eingestellt, die für das vorangehende Videoobjekt Ii-1 berechnet wurden. Vom Verfahren werden dann die Bewegungskoeffizienten Mi berechnet, mit welchen die Bewegung zwischen Ii und Si-1 berechnet wird.
  • Unter Verwendung der vorangegangenen Bewegung eines Objektes als Ausgangspunkt wird die Bewegungsabschätzung verbessert, da es wahrscheinlich ist, daß die Bewegung für das momentane Bild der Bewegung des vorangegangenen Bildes ähnlich ist. Bei der Abschätzung der Bewegung eines Videoobjekts relativ zum Sprite versucht das Verfahren die Gruppe von Pixeln im Sprite zu finden, die den besten Abgleich für die Pixel im momentanen Videoobjekt bilden. Unter Verwendung der vorangegangenen Bewegung als Ausgangspunkt wird die Suche hinsichtlich der Rechenzeit effizienter, da die Zahl der Iterationen reduziert wird, um die beste Übereinstimmung oder zumindest eine Übereinstimmung mit einem akzeptablen Fehler herauszufinden.
  • Nach der Berechnung der Bewegungskoeffizienten für das momentane Bild wird das momentane Videoobjekt Ii durch das Verfahren zum Koordinatenraum von Si-1 unter Verwendung der Bewegungskoeffizienten Mi verzogen, wie im Schritt 1308 gezeigt ist. Das Ergebnis dieses Schritts 1308 ist ein verzogenes Videoobjekt Wi im Sprite-Koordinatenraum. Durch das Verfahren wird dann das verzogene Bild Wi mit Si basierend auf dem folgenden Ausdruck gemischt: Si = (i·Si-1 + Wi)/(i + 1). Dies ist in 32 als Schritt 1310 dargestellt. Man beachte, daß der Sprite Si im Verhältnis zur Zahl der Rahmen i, aus welchen er aufgebaut wurde, gewichtet wird. Somit liefert jedes verzogene Bild einen gleichen Beitrag zum endgültigen Sprite.
  • Während des Mischungsschrittes wird durch das Verfahren jedes Pixel im Videoobjekt abgetastet und zu Sprite-Koordinaten unter Verwendung der auf den momentanen Bewegungskoeffizienten basierenden 2D-Transformation verzogen. Falls das verzogene Pixel aus der Maske des Sprites herausfällt, wird es zum Sprite hinzugefügt. Ansonsten, falls es ins In nere der Maske fällt, wird es mit dem Sprite unter Verwendung des Verfahrens mit abgerundetem Mittelwert gemischt: Si = (i·Si-1 + Wi)/(i + 1).
  • Die Schritte 1304-1310 werden für jedes Einzelbild in der Videosequenz vom Verfahren wiederholt. Somit werden nach dem Mischungsschritt das Einzelbild durch das Verfahren inkrementiert und wird die Schleife zurück zum Schritt 1304 geschlossen, um die Bewegungsparameter für das nächste Bild zu berechnen.
  • Bewegungsabschätzung
  • Einer der Hauptschritte beim Sprite-Erzeugungsverfahren besteht darin, die globalen Bewegungsparameter für das momentane Videoobjekt unter Verwendung eines Bewegungsmodells zu berechnen. Bei unserer Implementierung basiert das globale Bewegungsmodell auf einer zweidimensionalen planaren perspektivischen Transformation. Durch diese perspektivische Transformation wird ein Bild, das momentane Videoobjekt, in ein anderes Bild, den zuvor aufgebauten Sprite oder Videoobjekt abgebildet.
  • Es wird angenommen, daß die beiden betrachteten Bilder I(x, y, w) und I'(x', y', w') sind. Unter Verwendung von homogenen Koordinaten kann eine zweidimensionale planare perspektivische Transformation ausgedrückt werden als:
    Figure 00800001
    wobei (x, y, w) eine homogene Koordinate eines Pixels im ersten Bild I ist, (x', y', w') eine homogene Koordinate des entsprechenden Pixels im zweiten Bild I' ist und
    Figure 00800002
    eine Matrix aus Bewegungsparametern ist, die die perspektivische Transformation darstellen.
  • Die Bewegungsparameter werden manchmal als Verziehungskoeffizienten oder Bewegungskoeffizienten bezeichnet.
  • Der Ausdruck für die zweidimensionale perspektivische Transformation kann auch geschrieben werden als:
    Figure 00810001
    wodurch eine verzogene Koordinate in Abhängigkeit von den Koordinaten im ersten Bild I ausgedrückt wird.
  • Das Ziel bei der Berechnung der Bewegungsparameter besteht darin, eine Gruppe von Bewegungsparametern zu finden, mit welchen der Fehler zwischen Pixelwerten im ersten Bild I und entsprechenden Pixelwerten im zweiten Bild I' minimiert wird. Für jedes Pixel im ersten Bild I, das sich bei den Koordinaten (x, y) befindet, befindet sich das dazu entsprechende Pixel im zweiten Bild I' bei (x', y').
  • Die Aufgabe der Bewegungsabschätzungskomponente ist bei dieser Implementierung, die Summe der Intensitätsfehlerquadrate über alle entsprechende Pixelpaare i im Inneren des ersten und zweiten Bildes zu minimieren. Im Fall eines statischen Offline-Sprites ist das erste Bild I das Videoobjekt für das momentane Einzelbild und das zweite Bild I' der aus den Videoobjekten vorhergehender Bilder (dem zuvor aufgebauten Sprite) aufgebaute Sprite. Im Fall eines dynamischen Online-Sprites ist das erste Bild I das Videoobjekt für das momentane Einzelbild und das zweite Bild I' das für das vorherige Einzelbild (das zuvor aufgebaute Videoobjekt) aufgebaute Videoobjekt.
  • Sowohl der Sprite als auch das Videoobjekt haben Masken, die ihre Form definieren. Durch die Form wird die Grenze (die auch als die Kontur bezeichnet wird) des nicht rechteckigen Objektes, wie beispielsweise eines Videoobjekts oder eines Sprites definiert. Beim Fehlerminimierungsproblem erfolgt lediglich eine Fokussierung auf Fälle, in welchen ein Pixel im ersten Bild in die Maske des ersten Bildes fällt und sein entsprechendes Pixel im zweiten Bild in die Maske des zweiten Bildes fällt. Um dies zu erreichen, wird ein Gewichtungspara meter wi von der Minimierungsroutine auf i gesetzt, wenn (x, y) innerhalb der Maske von I und (x', y') innerhalb der Maske von I' liegt.
  • Somit kann unter Verwendung dieses Gewichtungsparameters die Summe der Fehlerquadrate zwischen Pixeln im Videoobjekt und entsprechenden Pixeln, im Sprite ausgedrückt werden als:
    Figure 00820001
    wobei wi der Gewichtungsparameter ist, I(xi, yi) das i-te Pixel im momentanen Videoobjekt und I'(xi', yi') das entsprechende Pixel im zuvor aufgebauten Sprite (oder Videoobjekt im Fall eines dynamischen Sprites) ist.
  • Eine Zahl von Standardminimierungslogarithmen kann verwendet werden, um dieses Minimierungsproblem zu lösen. Bei einer Implementierung wird der iterative nicht-lineare Minimierungsalgorithmus von Levenberg-Marquardt zur Durchführung der Minimierung verwendet. Bei diesem Algorithmus werden die partiellen Ableitungen von ei im Verhältnis zu den unbekannten Bewegungsparametern {m0, ..., m7} berechnet. Beispielsweise ist
    Figure 00820002
    wobei Di der Nenner ist. Aus diesen partiellen Ableitungen berechnet der Algorithmus eine näherungsweise Hess'sche Matrix A und den gewichteten Gradientenvektor b mit den Komponenten
    Figure 00820003
    und aktualisiert dann die Bewegungsparameterabschätzung m um einen Betrag Δm = A–1b.
  • 33 ist ein Ablaufdiagramm, das eine Implementierung des globalen Bewegungsabschätzungsverfahrens zeigt. Das globale Abschätzungsverfahren umfaßt zwei Hauptkomponenten: 1) für jedes Pixel i im Videoobjekt wird der Beitrag jedes Pixels im Videoobjekt zur Hess'schen Matrix A und dem Gradientenvektor b berechnet (Schritte 1330-1340); 2) basierend auf dem momentanen Wert der Hess'schen Matrix und des Gradientenvektors wird nach Δm aufgelöst und werden dann die Bewegungskoeffizienten aktualisiert (Schritte 1342-1348). Diese beiden Teile können mehrmals wiederholt werden, um die Bewegungskoeffizienten zu verfeinern und die Intensitätsfehler zwischen den Pixeln des Videoobjekts und den entsprechenden Pixeln im Sprite zu minimieren.
  • Für jedes Pixel i im Inneren der Masken am Ort (xi, yi) (Schritt 1330) berechnet das Verfahren die entsprechende Position (xi', yi') im Sprite durch Verziehen des Ortes (xi, yi) unter Verwendung der momentanen Werte der Bewegungskoeffizienten. Wie oben beschrieben wurde, werden vom Verfahren die Bewegungskoeffizienten des vorherigen Einzelbildes als Ausgangspunkt verwendet. Die Bewegungskoeffizienten werden bei jeder Iteration durch das globale Bewegungsabschätzungsverfahren verfeinert.
  • Nach dem Verziehen der Position eines Pixels unter Verwendung der momentanen Bewegungskoeffizienten bestimmt das Verfahren, ob die entsprechende Position (xi', yi') innerhalb der Maske des Sprites liegt (1334). Falls dies nicht der Fall ist, springt es zum nächsten Pixel (1334).
  • Falls sich die entsprechende Position (xi', yi') innerhalb der Maske des Sprites befindet, berechnet das Verfahren den Fehler ei zwischen dem Pixelwert bei (xi, yi) und dem Pixelwert bei (xi', yi') (1336). Als nächstes berechnet es die partielle Ableitung von ei bezüglich jedes Bewegungskoeffizienten mk (k = 0, 1, 2, ..., 8) (1338). Schließlich addiert das Verfahren den Beitrag des Pixels zu A und b basierend auf den partiellen Ableitungen und den in den Schritten 1336 und 1338 berechneten Fehlerwerten.
  • Sobald das Verfahren den Beitrag jedes Pixels zu A und b berechnet hat, erfolgt als nächstes die Lösung des Gleichungssystems AΔm =: b und eine Aktualisierung der Bewegungsparameter mt+1 = mt + Δm, wie in den Schritten 1342 und 1344 gezeigt ist. Vom Verfahren wird dann der gesamte Prozeß für die nächste Iteration wiederholt (1346). Um die Bewegungskoeffizienten zu verfeinern, wird der oben angegebene Prozeß vom Verfahren für eine bestimmte Anzahl von Schritten t, wie z.B. t = 8, wiederholt.
  • Verzerrung eines Videoobjekts unter Verwendung der Bewegungsparameter
  • Sobald die Bewegungsparameter erhalten sind, wird das momentane Videoobjekt durch das Sprite-Erzeugungsverfahren in den zuvor aufgebauten Sprite verzerrt. 30 ist ein Beispiel, wie das Videoobjekt Ii jedes Einzelbilds in den zuvor aufgebauten Sprite Si-1 verzogen wird.
  • Mischen eines Videoobjekts mit einem zuvor aufgebauten Sprite
  • Bei jedem neuen Einzelbild in der Videosequenz wird der Sprite durch Mischen des momentanen verzogenen Videoobjekts mit dem aus früheren Einzelbildern aufgebauten Sprite aktualisiert. Eine herkömmliche Art diese beiden Bilder zu mischen besteht darin, das momentane, verzogene Videoobjekt mit dem Sprite zu mitteln. Durch die Mittelung wird jedoch tendenziell ein zu starkes Gewicht auf das momentane Videoobjekt gelegt. Folglich kann das Rauschen in jedem individuellen Bild die endgültige Qualität des Sprites beeinflussen. Um diese Problem zu lösen, wird bei unserer Implementierung ein abgerundetes Mittelungsverfahren zur Mischung des momentanen, verzogenen Videoobjekts mit dem Sprite verwendet.
  • Es sei angenommen, daß die Videosequenz n Einzelbilder umfaßt und jedes Einzelbild ein verzogenes Bild aufweist, das das momentane verzogene Bild für das Einzelbild darstellt, Wi, i = 0, 1, ..., n-1. Der Sprite Sk wird unter Verwendung von Wi, i = 0, ..., k-1 erzeugt. Der endgültige Sprite ist Sn. Vorzugsweise sollte der endgültige Sprite einen gleichen Beitrag vom verzogenen Videoobjekt jedes Einzelbilds umfassen, so daß: Sn = (W0 + ... + Wn-1)/nGemäß unserer Implementierung wird das aufgezeichnete Bild inkrementell in Richtung des früheren Sprites gemischt, um den momentanen Sprite zu erhalten, wobei eine gleiche Gewichtung auf jedes individuelle Bild gelegt wird.
  • Ein spezieller Ausdruck, wie gemäß der Implementierung jedes Videoobjekt mit dem Sprite inkrementell gemischt wird, ist wie folgt: Si = (i·Si-1 + Wi)/(i + 1)
  • Unser Ansatz zur Erzeugung von Sprites hat eine Vielzahl von Vorteilen. Erstens wird die Maske des momentanen Videoobjektes und Sprites zur Sicherstellung verwendet, daß die Bewegungskoeffizienten lediglich basierend auf Pixeln im Videoobjekt, die zu Pixeln im Inneren des Sprites verzogen werden, berechnet werden. Ein weiterer Vorteil besteht darin, daß als Ausgangspunkt die Bewegungskoeffizienten des vorherigen Einzelbilds zur Abschätzung der Bewegung des Videoobjekts im momentanen Einzelbild verwendet werden. Dadurch wird der Bewegungsabschätzungsprozeß wirksamer und liefert tendenziell genauere Bewegungsparameter. Noch ein weiterer Vorteil besteht in der Art und Weise, in der mit dem Verfahren Videoobjekte mit dem Sprite oder Referenzobjekt unter Verwendung einer abgerundeten Mittelung gemischt werden. Insbesondere wird gemäß dem Verfahren der Sprite (oder das Referenzobjekt) durch Gewichten des Sprites im Verhältnis zur Zahl der in diesen gemischten Videoobjekte inkrementell aktualisiert, um sicherzustellen, daß jedes Videoobjekt im wesentlichen denselben Beitrag zum endgültigen Sprite liefert. Durch diese Form des Mischens wird der Einfluß von Rauschen vom Videoobjekt jedes Einzelbilds im Sprite reduziert.
  • Das Sprite-Erzeugungsverfahren wurde im Kontext spezifischer Videokodierungstechniken beschrieben. Es wird jedoch nicht beabsichtigt, daß die Erfindung auf die oben beschriebenen Kodierungsverfahren beschränkt ist. Wie in der gesamten Beschreibung erwähnt wurde, kann das Sprite-Erzeugungsverfahren als unabhängiges Modul zur Erzeugung statischer Offline-Sprites sowie als Teil eines Kodierers und Dekodierers zur Erzeugung von dynamischen Online-Sprites verwendet werden. Das Sprite-Erzeugungsverfahren kann als eine Gruppe von Softwarebefehlen implementiert sein und in einem Allzweckcomputer ausgeführt werden, als zweckgebundene Logikhardware, wie beispielsweise als ein digitaler Videokodierer/-Dekodierer oder als eine Kombination aus Software und Hardwarekomponenten implementiert sein.
  • In Anbetracht der vielen möglichen Ausführungsformen, auf die die Prinzipien der Erfindung angewendet werden können, ist zu beachten, daß die oben angegebenen Implementierungen lediglich beispielhaft für die Erfindung sind und nicht als eine Beschränkung des Umfangs der Erfindung zu betrachten sind. Vielmehr ist der Umfang der Erfindung durch die folgenden Ansprüche definiert.

Claims (18)

  1. In einem Computersystem, ein Verfahren zur Erzeugung eines Sprites für eine Objektbasierte Videokodierung einer Videosequenz, wobei der Sprite zur Darstellung eines Videoobjektes in der Videosequenz bestimmt ist, wobei das Verfahren die Schritte umfaßt: Segmentieren des Videoobjektes aus einem Einzelbild der Videosequenz durch Bilden einer inneren Kontur der Objektbegrenzung, Erweitern der inneren Kontur zur Bildung einer äußeren Kontur und Klassifizieren von Pixeln zwischen der inneren und der äußeren Kontur als im Inneren des Objektes, um die Objektbegrenzung und eine entsprechende Maske für das Videoobjekt im Bild zu definieren; Auswählen von zumindest zwei Merkmalspunkten des Objekts in einem Anfangsbild, Definieren eines Blocks mehrerer um jeden gewählten Merkmalspunkt zentrierter Pixel und Abgleichen des Blocks mit einem entsprechenden Block in einem nachfolgenden Einzelbild; Berechnen von Bewegungsparametern, welche die Bewegung eines Videoobjekts in einem momentanen Bild im Verhältnis zu einem zuvor erstellten Sprite abschätzen, umfassend den Schritt eines Verwendens von Masken des Objekts und des Sprites, um sicherzustellen, daß lediglich eine auf Pixeln im Videoobjekt, die auf Pixelorte innerhalb des Sprites abgebildet werden, basierende Bewegung abgeschätzt wird; Verziehen des Videoobjekts mit den Bewegungsparametern, um eine Bewegung zwischen dem Videoobjekt im momentanen Videobild und dem Sprite zu kompensieren; und inkrementelles Mischen des Videoobjekts in den Sprite durch Kombinieren von Pixeln im Videoobjekt mit Pixeln des Sprites, die sich an entsprechenden Positionen befinden, wie durch die Bewegungsparameter bestimmt wurde.
  2. Verfahren nach Anspruch 1, wobei die Bewegungsparameter eine Gruppe von Bewegungskoeffizienten sind und der Schritt eines Berechnens von Bewegungsparametern einen Versuch umfaßt, eine Gruppe von Bewegungskoeffizienten zu finden, die Fehler zwischen Pixelwerten im Videoobjekt für ein momentanes Bild und Pixelwerten an entsprechenden Pixelpositionen im zuvor aufgebauten Sprite minimieren, wobei die entsprechenden Pixelpositionen durch Verziehen von Pixelkoordinaten von Pixeln und des Videoobjekts zum Koordinatenraum des Sprites bestimmt werden und wobei der Minimierungsschritt ein Verwenden der Masken umfaßt, um sicherzustellen, daß der Fehler lediglich für Fälle berechnet wird, in welchen ein Pixel im Videoobjekt ein entsprechendes Pixel innerhalb der Maske des zuvor erstellten Sprites aufweist.
  3. Verfahren nach Anspruch 1 oder 2, wobei der Schritt eines inkrementellen Mischens des Videoobjekts in den Sprite ein Gewichten des zuvor erstellten Sprites im Verhältnis zur Häufigkeit mit der der Sprite mit dem verzogenen Videoobjekt eines vorherigen Bildes aktualisiert wurde, umfaßt, so daß jedes verzogene Videoobjekt in der Sequenz im wesentlichen denselben Beitrag zu einem endgültigen Sprite leistet, der das Videoobjekt während der gesamten Videosequenz wiedergibt.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei der Sprite ein statischer Sprite ist.
  5. Verfahren nach einem der Ansprüche 1 bis 3, wobei der Sprite ein dynamischer Sprite ist.
  6. Verfahren nach einem der vorhergehenden Ansprüche, wobei der Sprite anfangs ein entsprechendes Videoobjekt in einem ersten Videobild ist.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Berechnen von Bewegungsparametern anfangs ein Verwenden von Bewegungsparameterwerten, die für ein vorheriges Videoobjekt berechnet wurden, als ein Startpunkt für das momentane Objekt umfaßt.
  8. Verfahren nach einem der vorhergehenden Ansprüche, das des weiteren den Schritt eines Speicherns des Sprites umfaßt, so daß der Sprite zugänglich ist, um die Bewegungsparameter für jedes Videoobjekt in der Videosequenz zu berechnen.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Bewegungsparameter für eine perspektivische Umformung, eine einfache Übersetzung der Umformung oder eine affine Umformung bestimmt sind.
  10. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Objektmaske einen binären Wert pro Pixel des Videoobjekts im momentanen Videobild aufweist.
  11. Verfahren nach einem der Ansprüche 1 bis 9, wobei die Objektmaske einen Multibitwert pro Pixel des Videoobjektes im momentanen Videobild aufweist.
  12. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Spritemaske einen binären Wert pro Pixel des Sprites aufweist.
  13. Verfahren nach einem der Ansprüche 1 bis 11, wobei die Spritemaske einen Multibitwert pro Pixel des Sprites aufweist.
  14. Verfahren nach einem der vorhergehenden Ansprüche, umfassend die Schritte: Kodieren des Sprites; und Kodieren zusätzlicher Helligkeits- oder Transparenzfaktoren für den Sprite in derselben Weise wie den Sprite.
  15. Verfahren nach Anspruch 14, wobei der Sprite und die zusätzlichen Helligkeits- oder Transparenzfaktoren des Sprites durch Wavelet-Kodierung umfaßt werden.
  16. Verfahren nach Anspruch 14, wobei der Sprite und die zusätzlichen Helligkeits- oder Transparenzfaktoren durch diskrete Kosinustransformationskodierung kodiert werden.
  17. Computerprogramm, umfassend ein Computerprogrammcodemittel, das zur Durchführung aller Schritte irgendeines der vorhergehenden Ansprüche eingerichtet ist, wenn das Programm auf einem Computer läuft.
  18. Computerprogramm nach Anspruch 17, das auf einem computerlesbaren Medium enthalten ist.
DE69831961T 1997-06-23 1998-06-22 Bildobjekterzeugungsverfahren für objektbasierte kodierungssysteme unter verwendung von masken und gerundeten mittelwerten Expired - Lifetime DE69831961T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US881901 1997-06-23
US08/881,901 US6037988A (en) 1996-03-22 1997-06-23 Method for generating sprites for object-based coding sytems using masks and rounding average
PCT/US1998/013009 WO1998059497A1 (en) 1997-06-23 1998-06-22 Method for generating sprites for object-based coding systems using masks and rounding average

Publications (2)

Publication Number Publication Date
DE69831961D1 DE69831961D1 (de) 2006-03-02
DE69831961T2 true DE69831961T2 (de) 2006-07-27

Family

ID=25379431

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69831961T Expired - Lifetime DE69831961T2 (de) 1997-06-23 1998-06-22 Bildobjekterzeugungsverfahren für objektbasierte kodierungssysteme unter verwendung von masken und gerundeten mittelwerten

Country Status (6)

Country Link
US (1) US6037988A (de)
EP (1) EP1016286B1 (de)
JP (1) JP4572010B2 (de)
CA (1) CA2294388C (de)
DE (1) DE69831961T2 (de)
WO (1) WO1998059497A1 (de)

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2870415B2 (ja) * 1994-08-22 1999-03-17 日本電気株式会社 領域分割方法および装置
EP1042736B1 (de) * 1996-12-30 2003-09-24 Sharp Kabushiki Kaisha Sprite-gestütztes videocodiersystem
EP1010318A4 (de) 1997-02-14 2001-01-31 Univ Columbia Objektbasierter audiovisueller terminal und datenstromstruktur
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
US6400831B2 (en) 1998-04-02 2002-06-04 Microsoft Corporation Semantic video object segmentation and tracking
US7360230B1 (en) * 1998-07-27 2008-04-15 Microsoft Corporation Overlay management
EP1042918A1 (de) * 1998-08-05 2000-10-11 Koninklijke Philips Electronics N.V. Verfahren und vorrichtung zur erzeugung eines stehbildes
JP2002522836A (ja) * 1998-08-05 2002-07-23 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 静止画像生成方法および装置
JP2002522983A (ja) * 1998-08-05 2002-07-23 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 静止画像生成方法及び装置
US6924832B1 (en) * 1998-08-07 2005-08-02 Be Here Corporation Method, apparatus & computer program product for tracking objects in a warped video image
US6459822B1 (en) * 1998-08-26 2002-10-01 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Video image stabilization and registration
US6711278B1 (en) * 1998-09-10 2004-03-23 Microsoft Corporation Tracking semantic objects in vector image sequences
US6205422B1 (en) 1998-11-30 2001-03-20 Microsoft Corporation Morphological pure speech detection using valley percentage
US6252975B1 (en) * 1998-12-17 2001-06-26 Xerox Corporation Method and system for real time feature based motion analysis for key frame selection from a video
US7184482B2 (en) * 1999-04-17 2007-02-27 Altera Corporation Encoding system using motion vectors to represent frame-to-frame changes, wherein a decoder uses predictions of motion vectors in decoding
WO2001022733A1 (en) 1999-09-21 2001-03-29 Koninklijke Philips Electronics N.V. Method of global motion estimation
US6973130B1 (en) * 2000-04-25 2005-12-06 Wee Susie J Compressed video signal including information for independently coded regions
US6970510B1 (en) 2000-04-25 2005-11-29 Wee Susie J Method for downstream editing of compressed video
US7084877B1 (en) * 2000-06-06 2006-08-01 General Instrument Corporation Global motion estimation for sprite generation
DE60039689D1 (de) * 2000-07-10 2008-09-11 St Microelectronics Srl Verfahren zur Kompression digitaler Bilder
US6718066B1 (en) 2000-08-14 2004-04-06 The Hong Kong University Of Science And Technology Method and apparatus for coding an image object of arbitrary shape
FR2813485B1 (fr) * 2000-08-24 2003-12-26 France Telecom Procede de construction d'au moins une image interpolee entre deux images d'une sequence animee, procedes de codage et de decodage, signal et support de donnees correspondant
US6665450B1 (en) * 2000-09-08 2003-12-16 Avid Technology, Inc. Interpolation of a sequence of images using motion analysis
JP3859989B2 (ja) * 2000-10-30 2006-12-20 株式会社モノリス 画像マッチング方法およびその方法を利用可能な画像処理方法と装置
US7003061B2 (en) * 2000-12-21 2006-02-21 Adobe Systems Incorporated Image extraction from complex scenes in digital video
EP1368787A1 (de) * 2001-02-28 2003-12-10 PTS Corporation Dynamische kettenbasierte schwellwertbildung
JP2002359842A (ja) * 2001-05-31 2002-12-13 Monolith Co Ltd 画像符号化方法と装置および画像復号方法と装置
US7050500B2 (en) * 2001-08-23 2006-05-23 Sharp Laboratories Of America, Inc. Method and apparatus for motion vector coding with global motion parameters
US7227896B2 (en) * 2001-10-04 2007-06-05 Sharp Laboratories Of America, Inc. Method and apparatus for global motion estimation
KR20030059399A (ko) * 2001-12-29 2003-07-10 엘지전자 주식회사 모자이크 영상 생성장치 및 방법과 모자이크 영상 기반동영상 재생방법
US7194676B2 (en) 2002-03-01 2007-03-20 Avid Technology, Inc. Performance retiming effects on synchronized data in an editing system
US7602848B2 (en) * 2002-03-26 2009-10-13 General Instrument Corporation Methods and apparatus for efficient global motion compensation encoding and associated decoding
AU2003246185A1 (en) * 2002-06-25 2004-01-06 Matsushita Electric Industrial Co., Ltd. Motion detection device and noise reduction device using that
US7421129B2 (en) * 2002-09-04 2008-09-02 Microsoft Corporation Image compression and synthesis for video effects
US7085434B2 (en) * 2002-10-01 2006-08-01 International Business Machines Corporation Sprite recognition in animated sequences
US7146058B2 (en) * 2003-04-26 2006-12-05 Hewlett-Packard Development Company, L.P. Compression of images using object maps
US7558320B2 (en) * 2003-06-13 2009-07-07 Microsoft Corporation Quality control in frame interpolation with motion analysis
US7408986B2 (en) * 2003-06-13 2008-08-05 Microsoft Corporation Increasing motion smoothness using frame interpolation with motion analysis
US8638846B1 (en) * 2003-06-23 2014-01-28 At&T Intellectual Property Ii, L.P. Systems and methods for encoding and decoding video streams
TWI273778B (en) * 2003-11-10 2007-02-11 Sunplus Technology Co Ltd Method to merge the system data in image memory system
US7983835B2 (en) 2004-11-03 2011-07-19 Lagassey Paul J Modular intelligent transportation system
ATE511210T1 (de) * 2004-06-10 2011-06-15 Soitec Silicon On Insulator Verfahren für das herstellen eines soi wafers
US9578345B2 (en) 2005-03-31 2017-02-21 Euclid Discoveries, Llc Model-based video encoding and decoding
US9743078B2 (en) 2004-07-30 2017-08-22 Euclid Discoveries, Llc Standards-compliant model-based video encoding and decoding
US9532069B2 (en) 2004-07-30 2016-12-27 Euclid Discoveries, Llc Video compression repository and model reuse
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
US7483572B2 (en) * 2004-08-25 2009-01-27 Mitsubishi Electric Research Laboratories, Inc. Recovering a non-linear warping function from images
WO2006055512A2 (en) * 2004-11-17 2006-05-26 Euclid Discoveries, Llc Apparatus and method for processing video data
JP2008529414A (ja) * 2005-01-28 2008-07-31 ユークリッド・ディスカバリーズ・エルエルシー ビデオデータを処理する装置および方法
IL170320A (en) * 2005-08-17 2010-04-29 Orad Hi Tec Systems Ltd System and method for managing the visual effects insertion in a video stream
US8130330B2 (en) * 2005-12-05 2012-03-06 Seiko Epson Corporation Immersive surround visual fields
TWI317472B (en) * 2005-12-23 2009-11-21 Hon Hai Prec Ind Co Ltd Multimedia device testing system and method for the same
KR100698640B1 (ko) * 2005-12-30 2007-03-21 고려대학교 산학협력단 와핑 변환을 이용한 프레임 보간 방법 및 그 장치
JP2009540675A (ja) * 2006-06-08 2009-11-19 ユークリッド・ディスカバリーズ・エルエルシー ビデオデータを処理する装置および方法
US8243118B2 (en) 2007-01-23 2012-08-14 Euclid Discoveries, Llc Systems and methods for providing personal video services
EP2106663A2 (de) 2007-01-23 2009-10-07 Euclid Discoveries, LLC Objektarchivierungssysteme und -verfahren
JP4875007B2 (ja) * 2007-02-09 2012-02-15 パナソニック株式会社 動画像符号化装置、動画像符号化方法、及び、動画像復号化装置
CN101878486B (zh) * 2007-11-30 2016-10-26 杜比实验室特许公司 处理运动图像序列的方法和设备
US8345158B2 (en) * 2008-03-21 2013-01-01 Sony Corporation Merging video with time-decimated high-resolution imagery to form high-resolution video frames
EP2345256B1 (de) 2008-10-07 2018-03-14 Euclid Discoveries, LLC Auf merkmalen basierende videokomprimierung
US8866834B2 (en) * 2009-11-12 2014-10-21 Bally Gaming, Inc. System and method for sprite capture and creation
JP2011146980A (ja) * 2010-01-15 2011-07-28 Sony Corp 画像処理装置および方法
WO2013139394A1 (en) * 2012-03-22 2013-09-26 Nokia Siemens Networks Oy Enhanced policy control framework for object-based media transmission in evolved packet systems
US8731329B2 (en) * 2012-07-16 2014-05-20 Adobe Systems Incorporated Systems and methods for rolling shutter artifact repair
KR102121558B1 (ko) * 2013-03-15 2020-06-10 삼성전자주식회사 비디오 이미지의 안정화 방법, 후처리 장치 및 이를 포함하는 비디오 디코더
US9621917B2 (en) 2014-03-10 2017-04-11 Euclid Discoveries, Llc Continuous block tracking for temporal prediction in video encoding
US10097851B2 (en) 2014-03-10 2018-10-09 Euclid Discoveries, Llc Perceptual optimization for model-based video encoding
US10091507B2 (en) 2014-03-10 2018-10-02 Euclid Discoveries, Llc Perceptual optimization for model-based video encoding
US10462490B2 (en) * 2015-11-06 2019-10-29 Raytheon Company Efficient video data representation and content based video retrieval framework
US10460453B2 (en) * 2015-12-30 2019-10-29 Texas Instruments Incorporated Feature point identification in sparse optical flow based tracking in a computer vision system
US10462482B2 (en) 2017-01-31 2019-10-29 Google Llc Multi-reference compound prediction of a block using a mask mode
WO2019124191A1 (ja) * 2017-12-18 2019-06-27 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
KR102559203B1 (ko) * 2018-10-01 2023-07-25 삼성전자주식회사 포즈 정보를 출력하는 방법 및 장치
US11412260B2 (en) * 2018-10-29 2022-08-09 Google Llc Geometric transforms for image compression
US11212521B2 (en) * 2018-11-07 2021-12-28 Avago Technologies International Sales Pte. Limited Control of memory bandwidth consumption of affine mode in versatile video coding
US20210127125A1 (en) * 2019-10-23 2021-04-29 Facebook Technologies, Llc Reducing size and power consumption for frame buffers using lossy compression
US20210304457A1 (en) * 2020-03-31 2021-09-30 The Regents Of The University Of California Using neural networks to estimate motion vectors for motion corrected pet image reconstruction
WO2021247459A1 (en) * 2020-05-31 2021-12-09 Dimension, Inc. Improved superresolution-enabled (sre) video codec

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4307377A (en) * 1979-11-09 1981-12-22 Bell Telephone Laboratories, Incorporated Vector coding of computer graphics material
GB8311813D0 (en) * 1983-04-29 1983-06-02 West G A W Coding and storing raster scan images
DE3515159A1 (de) * 1984-04-27 1985-10-31 Canon K.K., Tokio/Tokyo Bildverarbeitungseinrichtung
US4727422A (en) * 1985-06-03 1988-02-23 Picturetel Corporation Method and apparatus for efficiently communicating image sequence having improved motion compensation
JPH0766446B2 (ja) * 1985-11-27 1995-07-19 株式会社日立製作所 移動物体像を抽出する方法
US4905295A (en) * 1986-11-13 1990-02-27 Ricoh Company, Ltd. Code sequence matching method and apparatus
US4961231A (en) * 1987-01-20 1990-10-02 Ricoh Company, Ltd. Pattern recognition method
US4729020A (en) * 1987-06-01 1988-03-01 Delta Information Systems System for formatting digital signals to be transmitted
US5136659A (en) * 1987-06-30 1992-08-04 Kokusai Denshin Denwa Kabushiki Kaisha Intelligent coding system for picture signal
US5031225A (en) * 1987-12-09 1991-07-09 Ricoh Company, Ltd. Character recognition method for recognizing character in an arbitrary rotation position
US5034986A (en) * 1989-03-01 1991-07-23 Siemens Aktiengesellschaft Method for detecting and tracking moving objects in a digital image sequence having a stationary background
US5073955A (en) * 1989-06-16 1991-12-17 Siemens Aktiengesellschaft Method for recognizing previously localized characters present in digital gray tone images, particularly for recognizing characters struck into metal surfaces
JP2953712B2 (ja) * 1989-09-27 1999-09-27 株式会社東芝 移動物体検知装置
US5148497A (en) * 1990-02-14 1992-09-15 Massachusetts Institute Of Technology Fractal-based image compression and interpolation
US5155594A (en) * 1990-05-11 1992-10-13 Picturetel Corporation Hierarchical encoding method and apparatus employing background references for efficiently communicating image sequences
JP3037383B2 (ja) * 1990-09-03 2000-04-24 キヤノン株式会社 画像処理システム及びその方法
JP2873338B2 (ja) * 1991-09-17 1999-03-24 富士通株式会社 動物体認識装置
JP2856229B2 (ja) * 1991-09-18 1999-02-10 財団法人ニューメディア開発協会 画像切り出し箇所検出方法
US5430811A (en) * 1991-12-25 1995-07-04 Matsushita Electric Industrial Co., Ltd. Method for interpolating missing pixels and an apparatus employing the method
JP2790562B2 (ja) * 1992-01-06 1998-08-27 富士写真フイルム株式会社 画像処理方法
DE69322423T2 (de) * 1992-03-13 1999-06-02 Canon Kk Vorrichtung zur Detektion von Bewegungsvektoren
GB2266023B (en) * 1992-03-31 1995-09-06 Sony Broadcast & Communication Motion dependent video signal processing
US5706417A (en) * 1992-05-27 1998-01-06 Massachusetts Institute Of Technology Layered representation for image coding
JP3679426B2 (ja) * 1993-03-15 2005-08-03 マサチューセッツ・インスティチュート・オブ・テクノロジー 画像データを符号化して夫々がコヒーレントな動きの領域を表わす複数の層とそれら層に付随する動きパラメータとにするシステム
US5500933A (en) * 1993-04-28 1996-03-19 Canon Information Systems, Inc. Display system which displays motion video objects combined with other visual objects
US5329311A (en) * 1993-05-11 1994-07-12 The University Of British Columbia System for determining noise content of a video signal in the disclosure
EP0625853B1 (de) * 1993-05-21 1999-03-03 Nippon Telegraph And Telephone Corporation Bewegtbildkoder und -dekoder
US5477272A (en) * 1993-07-22 1995-12-19 Gte Laboratories Incorporated Variable-block size multi-resolution motion estimation scheme for pyramid coding
US5594504A (en) * 1994-07-06 1997-01-14 Lucent Technologies Inc. Predictive video coding using a motion vector updating routine
KR100287211B1 (ko) * 1994-08-30 2001-04-16 윤종용 양방향 움직임 추정방법 및 장치
DE69525127T2 (de) * 1994-10-28 2002-10-02 Oki Electric Ind Co Ltd Gerät und Verfahren zur Kodierung und Dekodierung von Bildern unter Verwendung einer Kantensynthese und einer Wavelet-Rücktransformation
US5649032A (en) * 1994-11-14 1997-07-15 David Sarnoff Research Center, Inc. System for automatically aligning images to form a mosaic image
EP0720383B1 (de) * 1994-12-30 2000-09-13 Daewoo Electronics Co., Ltd Verfahren und Vorrichtung zur Bewegungsvektorendetektion in einem Bildkodierer mit Bilddezimation
EP0721287A1 (de) * 1995-01-09 1996-07-10 Daewoo Electronics Co., Ltd Verfahren und Vorrichtung zur Kodierung eines Videosignals
KR0171146B1 (ko) * 1995-03-18 1999-03-20 배순훈 특징점을 이용한 움직임 벡터 검출 장치
KR0171147B1 (ko) * 1995-03-20 1999-03-20 배순훈 그레디언트 변화를 이용한 특징점 선정장치
KR0171143B1 (ko) * 1995-03-20 1999-03-20 배순훈 육각그리드에서의 삼각구조 형성 장치
KR0171118B1 (ko) * 1995-03-20 1999-03-20 배순훈 비디오신호 부호화 장치
KR0181027B1 (ko) * 1995-03-20 1999-05-01 배순훈 화소 단위 움직임 추정을 이용하는 영상처리 시스템
JP3612360B2 (ja) * 1995-04-10 2005-01-19 株式会社大宇エレクトロニクス 移動物体分割法を用いた動画像の動き推定方法
US5621660A (en) * 1995-04-18 1997-04-15 Sun Microsystems, Inc. Software-based encoder for a software-implemented end-to-end scalable video delivery system
KR0171154B1 (ko) * 1995-04-29 1999-03-20 배순훈 특징점 기반 움직임 추정을 이용하여 비디오 신호를 부호화하는 방법 및 장치
KR0181063B1 (ko) * 1995-04-29 1999-05-01 배순훈 특징점을 이용한 움직임 보상에서의 그리드 형성방법 및 장치
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
US5668608A (en) * 1995-07-26 1997-09-16 Daewoo Electronics Co., Ltd. Motion vector estimation method and apparatus for use in an image signal encoding system
KR0178229B1 (ko) * 1995-08-08 1999-05-01 배순훈 특징점에 근거한 화소단위 움직임 추정을 이용한 영상 처리 장치
US5959673A (en) * 1995-10-05 1999-09-28 Microsoft Corporation Transform coding of dense motion vector fields for frame and object based video coding applications
US5692063A (en) * 1996-01-19 1997-11-25 Microsoft Corporation Method and system for unrestricted motion estimation for video
US5778098A (en) * 1996-03-22 1998-07-07 Microsoft Corporation Sprite coding

Also Published As

Publication number Publication date
US6037988A (en) 2000-03-14
CA2294388C (en) 2007-04-24
CA2294388A1 (en) 1998-12-30
EP1016286A1 (de) 2000-07-05
JP4572010B2 (ja) 2010-10-27
DE69831961D1 (de) 2006-03-02
EP1016286B1 (de) 2005-10-19
WO1998059497A1 (en) 1998-12-30
JP2002506585A (ja) 2002-02-26
EP1016286A4 (de) 2003-07-09

Similar Documents

Publication Publication Date Title
DE69831961T2 (de) Bildobjekterzeugungsverfahren für objektbasierte kodierungssysteme unter verwendung von masken und gerundeten mittelwerten
DE69723550T2 (de) Kodierung und dekodierung von grafischen symbolen
DE69634962T2 (de) Extrapolation von Pixelwerten eines in einem Block enthaltenen Videoobjektes
US5799113A (en) Method for expanding contracted video images
US6075875A (en) Segmentation of image features using hierarchical analysis of multi-valued image data and weighted averaging of segmentation results
US5787203A (en) Method and system for filtering compressed video images
US5946419A (en) Separate shape and texture coding of transparency data for video coding applications
US5692063A (en) Method and system for unrestricted motion estimation for video
WO1997013372A9 (en) Feature-based video compression method
DE19739266A1 (de) Verfahren und Vorrichtung zum Kodieren binärer Formen
DE69915843T2 (de) Teilbandkodierung/-dekodierung
EP0956539A1 (de) Verfahren und anordnung zur codierung und decodierung eines digitalisierten bildes
EP1110407B1 (de) Verfahren und anordnung zur codierung und decodierung eines digitalisierten bildes mit anwendung eines gesamtbewegungsvektors
EP0981909B1 (de) Verfahren und vorrichtung zur codierung und decodierung eines digitalisierten bildes
WO2001049038A1 (de) Verfahren, anordnung und computerprogrammerzeugnis zur prädiktion bei der codierung eines in bildblöcke unterteilten bildes
DE19944300C2 (de) Verfahren, Anordnung und Computerprogrammerzeugnis zur Bewegungsschätzung bei der Codierung von einem Bildobjekt in einem Bild
DE10007171A1 (de) Verfahren und Anordnung zur Codierung bzw. zur Codierung und Decodierung einer Zahlenfolge
DE10301572B4 (de) Verfahren zum Komprimieren einer Folge von Bildern
WO2008052773A2 (de) Verfahren und system zur kompression von volumendaten
WO2000049525A1 (de) Verfahren und anordnung zum abspeichern von mindestens einem bild mit zugehöriger relationalen information
WO2001033827A2 (de) Verfahren und anordnung zur transformation eines bildblocks aus bildblockpunkten
WO2000025232A1 (de) Verfahren und anordnung zur codierung, decodierung und übertragung eines digitalisierten bildes

Legal Events

Date Code Title Description
8364 No opposition during term of opposition