DE69923232T2 - Verbesserte bewegungsschätzung und blockübereinstimmungsmuster - Google Patents

Verbesserte bewegungsschätzung und blockübereinstimmungsmuster Download PDF

Info

Publication number
DE69923232T2
DE69923232T2 DE69923232T DE69923232T DE69923232T2 DE 69923232 T2 DE69923232 T2 DE 69923232T2 DE 69923232 T DE69923232 T DE 69923232T DE 69923232 T DE69923232 T DE 69923232T DE 69923232 T2 DE69923232 T2 DE 69923232T2
Authority
DE
Germany
Prior art keywords
block
search
motion
motion vector
target
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
DE69923232T
Other languages
English (en)
Other versions
DE69923232D1 (de
Inventor
Shou-Jen Wu (Joseph)
Chih-Lung Lin (Bruce)
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 DE69923232D1 publication Critical patent/DE69923232D1/de
Application granted granted Critical
Publication of DE69923232T2 publication Critical patent/DE69923232T2/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/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/567Motion estimation based on rate distortion criteria
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Television Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Ultra Sonic Daignosis Equipment (AREA)
  • Image Analysis (AREA)

Description

  • SACHGEBIET DER ERFINDUNG
  • Die Erfindung bezieht sich auf das Video-Kodieren und, insbesondere, auf ein verbessertes Verfahren zum Durchführen einer Bewegungsschätzung in Video-Kodieranwendungen.
  • HINTERGRUND
  • Voll-Bewegungs-Video-Anzeigen, basierend auf analogen Video-Signalen, sind seit langer Zeit in der Form des Fernsehens verfügbar gewesen. Mit den neueren Fortschritten in Computer-Verarbeitungsfähigkeiten und der Erschwinglichkeit davon sind Voll-Bewegungs-Video-Anzeigen, basierend auf digitalen Video-Signalen, weit verbreitet verfügbar geworden. Digitale Video-Systeme können wesentliche Verbesserungen gegenüber herkömmlichen, analogen Video-Systemen beim Erzeugen, Modifizieren, Senden, Speichern und Abspielen von Voll-Bewegungs-Video-Sequenzen liefern.
  • Digitale Video-Anzeigen umfassen große Anzahlen von Einzelbildern, die aufeinander folgend unter Frequenzen von zwischen 30 und 75 Hz abgespielt und gestaltet werden. Jedes Einzelbild ist ein Standbild, gebildet aus einem Feld von Pixeln, basierend auf der Auflösung der Anzeige eines bestimmten Systems. Als Beispiele haben auf VHS basierende Systeme Auflösungen von 320×480 Pixeln gezeigt, auf NTSC-basierende Systeme haben Anzeige-Auflösungen 720×486 Pixeln gezeigt, und High-Definition-Television-(HDTV)-Systeme, die sich noch in der Entwicklung befinden, haben Auflösungen von 1360×1024 Pixeln gezeigt.
  • Die Mengen von digitalen Ausgangs-Informationen, umfasst in Video-Sequenzen, sind umfangreich. Eine Speicherung und ein Senden dieser Mengen von Video-Informationen ist mit der herkömmlichen Gerätschaft eines Personal Computers nicht durchführbar. Es wird zum Beispiel eine digitalisierte Form eines VHS-Bildformats mit relativ niedriger Auflösung, das eine Auflösung von 320×480 Pixel besitzt, betrachtet. Ein Bewegungsbild mit voller Länge, mit einer Dauer von zwei Stunden, bei dieser Auflösung entspricht digitalen Video-Informationen von 100 Gigabyte. Als Vergleich besitzen herkömmliche, optische Kompakt-Disks Kapazitäten von ungefähr 0,6 Gigabyte, magnetische Festplatten besitzen Kapazitäten von 1–2 Gigabyte, und optische Kompakt-Disks, die sich noch in der Entwicklung befinden, besitzen Kapazitäten von bis zu 8 Gigabyte.
  • Um sich den Beschränkungen beim Speichern oder Übertragen solcher umfangreicher Mengen von digitalen Video-Informationen zuzuwenden, sind verschiedene Video-Kompressions-Standards oder -Prozesse eingerichtet worden, einschließlich MPEG-1, MPEG-2 und H.26X. Diese Video-Kompressionstechniken verwenden Ähnlichkeiten zwischen aufeinander folgenden Bild-Frames, bezeichnet als temporäre oder Interframe-Korrelation, um eine Interframe-Kompression zu erreichen, bei der Bewegungsdaten und Fehlersignale verwendet werden, um Änderungen zwischen Frames beziehungsweise Einzelbildern zu codieren.
  • Zusätzlich verwenden die herkömmlichen Video-Kompressionstechniken Ähnlichkeiten innerhalb von Einzelbildern, bezeichnet als eine räumliche oder Intraframe-Korrelation, um eine Intraframe-Kompression zu erreichen, bei der die Bildabtastungen innerhalb eines Bild-Frames komprimiert werden. Eine Intraframe-Kompression basiert auf herkömmlichen Prozessen, um stehende Bilder zu komprimieren, wie beispielsweise ein Kodieren mittels diskreter Kosinustransformation (DCT). Dieser Typ eines Kodierens wird manchmal als "Textur-" oder "Transformations-" Kodierung bezeichnet. Eine "Textur" bezieht sich allgemein auf ein zweidimensionales Feld von Bild-Abtast-Werten, wie beispielsweise ein Feld aus Chrominanz- und Luminanz-Werten oder ein Feld aus Alpha-(Opazitäts)-Werten. Der Ausdruck "Transformation" in diesem Zusammenhang bezieht sich darauf, wie Bild-Abtastungen in räumliche Frequenz-Komponenten während des Kodier-Vorgangs transformiert werden. Diese Verwendung des Ausdrucks "Transformation" sollte von einer geometrischen Transformation unterschieden werden, die dazu verwendet wird, Szenenänderungen in einigen Interframe-Kompressions-Verfahren abzuschätzen.
  • Eine Interframe-Kompression verwendet typischerweise eine Bewegungs-Abschätzung und -Kompensation, um Szenenänderungen zwischen Frames beziehungsweise Einzelbildern zu kodieren. Eine Bewegungs-Abschätzung ist ein Vorgang zum Abschätzen der Bewegung von Bildabtastungen (z. B. Pixeln) zwischen Einzelbildern. Unter Verwendung einer Bewegungs-Abschätzung versucht der Kodierer Blöcke von Pixeln in einem Einzelbild an entsprechende Pixel in einem anderen Einzelbild an zupassen. Nachdem der ähnlichste Block in einem gegebenen Suchbereich gefunden ist, wird die Änderung in der Position der Pixel-Stellen der entsprechenden Pixel approximiert und als Bewegungsdaten, wie beispielsweise ein Bewegungsvektor dargestellt. Eine Bewegungskompensation ist ein Vorgang zum Bestimmen eines vorhergesagten Bilds und zum Berechnen des Fehlers zwischen dem vorhergesagten Bild und dem originalen Bild. Unter Verwendung einer Bewegungskompensation wendet der Kodierer die Bewegungsdaten auf ein Bild an und berechnet ein vorhergesagtes Bild. Die Differenz zwischen dem vorhergesagten Bild und dem Eingabebild wird als Fehlersignal bezeichnet. Da das Fehlersignal nur ein Feld von Werten ist, die die Differenz zwischen Bildabtast-Werten darstellen, kann es unter Verwendung desselben Textur-Kodierverfahrens komprimiert werden, wie es für ein Intraframe-Kodieren von Bildabtastungen verwendet wird.
  • Obwohl sich die MPEG-1, MPEG-2 und H.26X Video-Kompensations-Standards in spezifischen Ausführungen unterscheiden, sind sie in einer Anzahl von Aspekten ähnlich. Die nachfolgende Beschreibung des MPEG-2 Video-Kompressions-Standards ist allgemein bei den anderen anwendbar.
  • MPEG-2 liefert eine Interframe-Kompression und eine Intraframe-Kompression, basierend auf quadratischen Blöcken oder Feldern von Pixeln in Videobildern. Ein Videobild wird in Bild-Abtast-Blöcke, bezeichnet als Makro-Blöcke, unterteilt, die Dimensionen von 16×16 Pixeln haben. In MPEG-2 weist ein Makro-Block vier Luminanz-Blöcke (jeder Block umfasst 8×8 Abtastungen einer Luminanz (Y)) und zwei Chrominanz-Blöcke (ein 8×8 Abtastblock jeweils für Cb und Cr) auf.
  • In MPEG-2 wird ein Interframe-Kodieren in Bezug auf Makro-Blöcke durchgeführt. Ein MPEG-2 Kodierer führt eine Bewegungs-Abschätzung und -Kompensation durch, um Bewegungsvektoren und Block-Fehlersignale zu berechnen. Für jeden Block MN in einem Bildframe N wird eine Suche über das Bild eines nächsten, darauf folgenden Video-Frame N + 1 oder eines unmittelbar vorhergehenden Bild-Frame N – 1 (d. h. bidirektional) durchgeführt, um die ähnlichsten, jeweiligen Blöcke MN–1 oder MN+1 zu identifizieren. Die Lage des ähnlichsten Blocks, relativ zu dem Block MN, wird mit einem Bewegungsvektor (DX, DY) kodiert. Der Bewegungsvektor wird dann dazu verwendet, einen Block von vorhergesagten Abtastwerten zu berechnen. Diese vorhergesagten Abtastwerte werden mit einem Block MN verglichen, um das Block-Fehlersignal zu bestim men. Das Fehlersignal wird unter Verwendung eines Textur-Kodierverfahrens, wie beispielsweise eines Kodierens mittels diskreter Kosinustransformation (DCT), komprimiert.
  • Auf einem Objekt basierende Video-Kodiertechniken sind als eine Verbesserung in Bezug auf die herkömmlichen, auf einem Frame bzw. Einzelbild basierenden Kodier-Standards vorgeschlagen worden. In einem auf einem Objekt basierenden Kodieren werden wahlweise geformte Bild-Merkmale von den Einzelbildern in der Video-Sequenz unter Verwendung eines Verfahrens, bezeichnet als "Segmentation", separiert. Die Video-Objekte oder "Segmente" werden unabhängig kodiert. Eine auf einem Objekt basierende Kodierung kann die Kompressionsrate verbessern, da sie die Interframe-Korrelation zwischen Video-Objekten in aufeinander folgenden Frames erhöht. Sie ist auch für eine Vielfalt von Anwendungen vorteilhaft, die einen Zugriff zu Objekten in einer Video-Sequenz und eine Spurung davon erfordern.
  • In den auf einem Objekt basierenden Video-Kodier-Verfahren, vorgeschlagen für den MPEG-4 Standard, werden die Form, die Bewegung und die Textur von Video-Objekten unabhängig kodiert. Die Form eines Objekts wird durch eine binäre oder Alpha-Maske dargestellt, die die Grenze des wahlweise geformten Objekts in einem Videoframe definiert. Die Bewegung eines Objekts ist ähnlich zu den Bewegungsdaten von MPEG-2, mit der Ausnahme, dass sie ein wahlweise geformtes Bild des Objekts anwendet, das von einem rechteckigen Frame bzw. Einzelbild segmentiert worden ist. Eine Bewegungs-Abschätzung und Kompensation wird in Bezug auf Blöcke einer "Video-Objekt-Ebene", im Gegensatz zu dem gesamten Frame, durchgeführt. Die Video-Objekt-Ebene ist der Name für das geformte Bild eines Objekts in einem einzelnen Frame.
  • Die Textur eines Video-Objekts sind die Bild-Abtast-Informationen in einer Video-Objekt-Ebene, die innerhalb der Form des Objekts fällt. Eine Textur-Kodierung von Bild-Abtastungen eines Objekts und von Fehlersignalen wird unter Verwendung ähnlicher Textur-Kodierverfahren wie bei der auf einem Frame basierenden Kodierung durchgeführt. Zum Beispiel kann ein segmentiertes Bild in ein begrenzendes Rechteck hinein, gebildet aus Makro-Blöcken, angepasst werden. Das rechteckige Bild, gebildet durch das begrenzende Rechteck, kann ähnlich eines rechteckigen Bilds bzw. Frames komprimiert werden, mit der Ausnahme, dass transparente Makro-Blöcke nicht kodiert werden müssen. Teilweise transparente Blöcke werden nach Auffüllen der Bereiche des Blocks, die außerhalb der Formgrenze des Objekts fallen, mit Abtast-Werten in einer Technik, bezeichnet als "Padding", kodiert.
  • In sowohl einem auf einem Einzelbild basierenden als auch in einem auf einem Objekt basierenden Video-Kodieren ist der Vorgang einer Bewegungs-Abschätzung ein solcher, der der wichtigste Teil des Kodiersystems im Hinblick auf sowohl die Geschwindigkeit des Kodiervorgangs ebenso wie im Hinblick auf die Qualität des Videos ist. Sowohl der H 263 als auch der MPEG-4 Kodier-Standard führen eine Bewegungs-Abschätzung in Bezug auf Makro-Blöcke durch. Das Ziel des Vorgangs einer Bewegungs-Abschätzung ist dasjenige, den Makro-Block in einem Referenzbild zu finden, der zu dem kleinsten Fehlersignal nach einer Bewegungskompensation führt. Durch Minimieren des Fehlersignals versucht der Kodierer die Zahl von Bits, die benötigt werden, um den Makro-Block zu kodieren, zu minimieren. Allerdings muss, zusätzlich zu einem Kodieren des Fehlersignals, der Kodierer auch den Makro-Block-Header und Bewegungsvektoren kodieren. Während ein Minimieren des Fehlersignals die Zahl von Bits, die benötigt werden, um das Fehlersignal zu kodieren, minimieren kann, führt dies nicht notwendigerweise zu der effizientesten Kodierung des gesamten Makro-Blocks.
  • Die Europäische Patentanmeldung Nr. 0 535 746 A2 beschreibt ein Verfahren zum Abschätzen von Bewegungsvektoren für Blöcke von Pixeln in einem Einzelbild einer digitalisierten Bewegungs-Bild-Sequenz, wobei eine Vektorsuche basierend auf mindestens einen Ausgangsvektor herum, abgeleitet von einem früheren, abgeschätzten Vektor für einen Pixel-Block, der ein Nachbar eines gegebenen Pixel-Blocks ist, durchgeführt wird. "Advances Motion Estimation for Moving Picture Experts Group Encoders" IBM Technical Disclosure Bulletin Vol. 39, No. 4 (April 1996) beschreibt eine Bewegungs-Abschätzung, durchgeführt unter Auswählen eines Bewegungsvektors mit dem kleinsten, modifizierten Fehler, wobei der modifizierte Fehler die Norm der Differenz zwischen dem momentanen und Referenzblöcken plus einem Positionsfehler ist.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein verbessertes Blockanpassungsverfahren für eine Bewegungs-Abschätzung, ein verbessertes Verfahren zum Durchführen einer Bewegungs-Abschätzung ebenso wie eine verbesserte Bewegungs-Schätzeinrichtung zum Durchführen einer Blockanpassungssuche zu schaffen.
  • Diese Aufgabe wird durch den Gegenstand der unabhängigen Ansprüche 1, 7 und 11 gelöst.
  • Bevorzugte Ausführungsformen sind Gegenstand der abhängigen Ansprüche. Weitere Vorteile und Merkmale werden aus der nachfolgenden, detaillierten Beschreibung und den beigefügten Zeichnungen ersichtlich werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt ein Blockdiagramm eines Video Kodierers
  • 2 zeigt ein Blockdiagramm eines Video-Dekodierers
  • 3 zeigt ein Diagramm, das ein Beispiel eines Quellen- und Soll-Einzelbilds darstellt, um einen Bewegungs-Abschätzungs-Vorgang, verwendet für ein Video-Kodieren, darzustellen.
  • 4 zeigt ein Diagramm, dass ein Beispiel von Makro-Blöcken und den Bewegungsvektoren, zugeordnet zu diesen Blöcken in einem Video-Einzelbild, darstellt, um zu zeigen, wie ein Bewegungsvektor für einen Makro-Block voherzusagen ist.
  • 5 zeigt ein Diagramm eines erweiterten Suchbereichs in einem Ziel-Einzelbild, wie beispielsweise das eine, das in 3 darstellt ist, um ein Spiralsuchmuster, verwendet in eine Blockanpassung darzustellen.
  • 6 zeigt ein Diagramm, das ein Spiralsuchmuster, ausgehend von einer Startstelle, die gegenüber einer optimaleren Startstelle aus verschoben ist, darstellt.
  • 7 zeigt ein Flussdiagramm, das die Betriebsweise einer Ausführung eines Kodierers darstellt, der eine kombinierte Messung eines Bewegungsvektors und von Fehlersignaldaten als die Suchkriterien in dem Blockanpassungsprozess verwendet.
  • 8 zeigt ein Diagramm einer Bewegungs-Schätzeinrichtung, die eine modifizierte Summe einer Differenzberechnung als die Suchkriterien in diesem Blockanpassungsprozess verwendet.
  • 9 zeigt ein Blockdiagramm eines Computersystems, das als eine Betriebsumgebung für eine Software-Umsetzung der Erfindung dient.
  • Einführung
  • Der erste Abschnitt nachfolgend ist eine Beschreibung eines Video-Kodierers und -Dekodierers. Darauf folgende Abschnitte beschreiben eine Ausführung der Erfindung in einem Kodierer. Die Kodierer-Ausführung ist spezifisch für Kodierblöcke aus Pixeln ausgelegt (z. B. Makro-Blöcke, wie sie in Video-Kodier-Standards MPEG-4 und H263 definiert sind). Jeder der Makro-Blöcke für vorhergesagte Einzelbilder umfasst Header-Parameter, einen Bewegungsvektor und ein in Bezug auf die Textur kodiertes Fehlersi gnal. Die Kodierer-Ausführung verbessert eine Kodiereffektivität unter Verwendung einer Messung der kombinierten Bewegungs- und Fehlerdaten, wenn nach einem passenden Block in einem Blockanpassungsvorgang gesucht wird. Da diese Maßnahme ein vollständigeres Bild des Kodier-Overhead, zugeordnet einem Auswählen eines bestimmten Bewegungsvektors, berücksichtigt, verbessert sie die Kodiereffektivität. Die Kodiererausführung ist auch schneller, da sie ein verbessertes Suchmuster verwendet und die Suche, benötigt dazu, den Bewegungsvektor zu finden, verringert.
  • Die Erfindung, ebenso wie die spezifische Kodierer-Ausführung, die nachfolgend beschrieben ist, wenden sowohl eine auf einem Einzelbild basierende als auch eine auf einem Objekt basierende Video-Kodierung an. Da ein auf einem Objekt basierender Kodierer und ein Dekodierer alle Merkmale eines auf einem Einzelbild basierenden Kodierer und Dekodierer umfassen, bildet die nachfolgende Diskussion eine gute Grundlage zum Ausführen der Erfindung in entweder einer auf einem Einzelbild basierenden oder einer auf einem Objekt basierenden Kodieranwendung.
  • Beschreibung eines beispielhaften Kodierers und Dekodierers
  • 1 zeigt ein Blockdiagramm, das eine Ausführung eines auf einem Objekt basierenden Video-Kodierers darstellt. Der Eingang 30 zu dem Kodierer umfasst Bilder, die die Video-Objekte in jedem Einzelbild, die Form jedes Video-Objekts und die begrenzenden Rechtecke darstellen. Die Form-Informationen sind verfügbar, bevor der Kodierer Textur- oder Bewegungsdaten kodiert. Eine auf einem Einzelbild basierende Kodierung unterscheidet sich dahingehend, dass das gesamte Einzelbild ohne Form-Informationen kodiert ist, und der Eingang 30 besteht aus einer Reihe von Einzelbildern.
  • Das Form-Kodier-Modul 32 liest die Definition eines Objekts, umfassend sein begrenzendes Rechteck, und erweitert das begrenzende Rechteck zu einem ganzzahligen Vielfachen von Makro-Blöcken. Die Form-Informationen für ein Objekt weisen eine Maske oder eine "Alpha-Ebene" auf. Das Form-Kodier-Modul 32 liest diese Maske und komprimiert sie, unter Verwendung von, zum Beispiel, eines herkömmlichen Kettenkodier-Verfahrens, um die Kontur des Objekts zu kodieren.
  • Ein Bewegungs-Abschätzungs-Modul 34 liest ein Objekt, einschließlich seines begrenzenden Rechtecks und eines zuvor rekonstruierten Bilds 36, und berechnet Bewegungs-Schätzdaten, verwendet dazu, die Bewegung eines Objekts von einem Einzelbild zu einem anderen vorherzusagen. Das Bewegungs-Schätz-Modul 34 sucht nach dem ähnlichsten Makro-Block in dem rekonstruierten Bild für jeden Makro-Block in dem momentanen Bild, um einen Bewegungsvektor für jeden Makro-Block zu berechnen. Das spezifische Format des Bewegungsvektors von dem Bewegungs-Schätz-Modul 34 kann, in Abhängigkeit von dem Bewegungs-Schätz-Verfahren, das verwendet ist, variieren. In der Ausführung, die nachfolgend beschrieben ist; ist ein Bewegungsvektor für jeden Makro-Block vorhanden, der mit derzeitigen MPEG und H26X Formaten konsistent ist.
  • Das Bewegungs-Kompensations-Modul 38 liest die Bewegungsvektoren, berechnet durch das Bewegungs-Abschätzungs-Modul und das zuvor rekonstruierte Bild 36, und berechnet ein vorhergesagtes Bild für das momentane Einzelbild. Jedes Pixel in dem vorhergesagten Bild wird unter Verwendung des Bewegungsvektors für den Makro-Block konstruiert, den er einbezieht, um das entsprechende Pixel in dem zuvor rekonstruierten Bild 36 zu finden. Der Kodierer findet dann den Unterschied zwischen den Bild-Abtastwerten in dem Eingangsbildblock, wie dies in dem Eingang 30 spezifiziert ist, und den entsprechenden Abtastwerten in dem Block des vorhergesagten Bilds, wie dies in dem Bewegungs-Kompensations-Modul 38 berechnet ist, um das Fehlersignal für den Makro-Block zu bestimmen.
  • Ein Textur-Kodier-Modul 40 komprimiert dieses Fehlersignal für interframekodierte Objekte und komprimiert Bild-Abtastwerte für das Objekt von der Eingangsdatenfolge 30 für intraframe-kodierte Objekte. Der Rückführpfad 42 von dem Textur-Kodier-Modul 40 stellt das Fehlersignal dar. Der Kodierer verwendet die Fehlersignalblöcke zusammen mit den Blöcken für das vorhergesagte Bild von dem Bewegungs-Kompensations-Modul, um das zuvor rekonstruierte Bild 36 zu berechnen.
  • Das Textur-Kodier-Modul 40 kodiert Intraframe- und Fehlersignaldaten für ein Objekt unter Verwendung irgendeiner Vielfalt von Standbild-Kompressions-Techniken. Beispielhafte Kompressionstechniken umfassen DCT, Wavelet, ebenso wie andere herkömmliche Bild-Kompressions-Verfahren.
  • Die Bit-Folge der komprimierten Video-Sequenz umfasst kodierte Informationen Für die Form, Bewegung und Textur von den Formkodier-, Bewegungs-Abschätzungs- und Textur-Kodier-Modulen. Ein Multiplexer 44 kombiniert und formatiert diese Daten in die geeignete Syntax und gibt sie zu dem Puffer 46 aus.
  • Während der Kodierer in einer Hardware oder Software ausgeführt werden kann, wird er am wahrscheinlichsten in einer Software ausgeführt. In einer Software-Ausführung stellen die Module in dem Kodierer Software-Anweisungen, gespeichert in einem Speicher eines Computers und ausgeführt in dem Prozessor, und die Video-Daten, gespeichert in einem Speicher, dar. Ein Software Kodierer kann auf einer Vielfalt von herkömmlichen, mittels Computer lesbaren Medien gespeichert und verteilt werden. Bei Hardware-Ausführungen sind die Kodierer-Module in einer digitalen Logik, vorzugsweise in einer integrierten Schaltung, ausgeführt. Einige der Kodierer-Funktionen können in digitalen, logischen Vorrichtungen für spezielle Zwecke in einer Computer-Umgebung optimiert werden, um die Verarbeitungsbelastung von einem Host-Computer wegzunehmen.
  • 2 zeigt ein Blockdiagramm, das einen Dekodierer für ein auf einem Objekt basierenden Video-Kodier-Verfahren darstellt. Ein Demultiplexer 60 nimmt eine Bit-Datenfolge, die eine komprimierte Video-Sequenz darstellt, auf und separiert Formen und in Bezug auf Bewegung und Textur kodierte Daten auf einer Basis Objekt für Objekt. Der Demultiplexer umfasst auch einen Bewegungsvektor-Dekodierer, der den Bewegungsvektor für jeden Makro-Block von einem Einzelcode variabler Länge rekonstruiert.
  • Ein Formdekodier-Modul 64 dekodiert die Form oder die Kontur für das momentane Objekt, das verarbeitet werden soll. Um dies vorzunehmen, setzt es einen Formdekodierer ein, der das inverse des Formdekodier-Verfahrens, verwendet in dem Kodierer der 1, umsetzt. Die sich ergebenden Formdaten sind eine Maske, wie beispielsweise eine binäre Alpha-Ebene oder eine Grauskalierungs-Alpha-Ebene, die die Form des Objekts darstellt.
  • Das Bewegungsdekodier-Modul 66 dekodiert die Bewegungsinformationen in der Bit-Datenfolge. Die dekodierten Bewegungsinformationen umfassen die Bewegungsvektoren für jeden Makro-Block, die für Entropy-Code in der ankommenden Bit-Datenfolge rekonstruiert sind. Das Bewegungsdekodier-Modul 66 führt diese Bewegungsinformationen zu dem Bewegungs-Kompensations-Modul 68 zu und das Bewegungs-Kompensations-Modul 68 verwendet die Bewegungsvektoren, um Abtastungen eines vorhergesagten Bilds in den zuvor rekonstruierten Objektdaten 70 zu finden.
  • Das Textur-Dekodier-Modul 74 dekodiert Fehlersignale für interframe-kodierte Textur-Daten und ein Feld von Farbwerten für Intraframe-Textur-Daten und führt diese Informationen zu einem Modul 72 zum Berechnen und akkumulieren des rekonstruierten Bilds weiter. Für intraframe-kodierte Objekte dekodiert das Textur-Dekodier-Modul 74 die Bildabtastwerte für das Objekt und platziert das rekonstruierte Objekt in das Modul 72 für das rekonstruierte Objekt. Zuvor rekonstruierte Objekte werden temporär in dem Objektspeicher 70 gespeichert und werden dazu verwendet, das Objekt für andere Frames zu konstruieren.
  • Ähnlich zu dem Kodierer kann der Dekodierer in einer Hardware, einer Software oder in einer Kombination von beiden umgesetzt werden. In Software-Ausführungen sind die Module in dem Dekodierer Software-Instruktionen, gespeichert in einem Speicher eines Computers und ausgeführt durch den Prozessor, und Video-Daten, gespeichert in einem Speicher. Ein Software-Dekodierer kann auf einer Vielzahl von herkömmlichen, mittels Computer lesbaren Medien gespeichert und darauf verteilt sein. In Hardware-Ausführungen werden die Dekodierer-Module in einer digitalen Logik, vorzugsweise in einer integrierten Schaltung, ausgeführt. Einige der Dekodierer-Funktionen können in digitalen logischen Vorrichtungen für spezielle Zwecke in der Umgebung eines Computers optimiert werden, um die Verarbeitungsbelastung von dem Host-Computer wegzunehmen.
  • Verbesserte Bewegungs-Abschätzung und Block-Anpassungs-Muster
  • Bevor die Ausführung des Kodierers im Detail beschrieben wird, ist es hilfreich, mit einem Beispiel des Bewegungs-Schätzvorgangs zu beginnen. 3 zeigt ein Beispiel eines Quellen- und Ziel-Einzelbilds 300, 302 in einer einfachen Video-Sequenz. Jedes Einzelbild umfasst ein Vordergrundobjekt (sich bewegender Kopf 304) und Hintergrundobjekte 306 (z. B. ein stehendes Haus und ein Baum in dem Hintergrund). Der Vorgang einer Bewegungs-Abschätzung approximiert die Bewegung von Pixeln in dem Quellen-Einzelbild relativ zu dem Ziel-Einzelbild. Um dies vorzunehmen, wählt die Bewegungs-Schätzeinrichtung in dem Kodierer einen Quellenblock von Pixeln 308 in einem Quellen-Einzelbild und einen Suchbereich 310 in einem Ziel-Einzelbild aus. Unter Folgen einem Suchpfad in dem Ziel-Bild passt die Bewegungs-Schätzeinrichtung die Pixel-Werte in dem Quellenblock an Pixel-Werte an entsprechenden Stellen eines Bereichs in dem Suchbereich 310 an. An jeder Stufe entlang des Suchpfads berechnet die Bewegungs-Schätzeinrichtung ein Fehlersignal, was eine Messung der Differenz zwischen den Pixel-Werten in dem Quellenblock und den Pixel-Werten an entsprechenden Stellen in dem Suchbereich ist. Dieses Fehlersignal wird typischerweise als die Summe von absoluten Differenzen (SAD) berechnet, kann allerdings auch als die Summe von quadratischen Differenzen berechnet werden. Dieser Vorgang wird oftmals als Blockanpassung bezeichnet, da die Suche nach einem Block von Pixeln sieht, der am nächsten den Quellenblock anpasst.
  • Nach Identifizieren von Anpassungsblöcken approximiert die Bewegungs-Schätzeinrichtung die Bewegung von Pixeln in dem Quellen-Einzelbild mit Bewegungsparametern, die die Bewegung zwischen jedem Quellen Pixel und einer entsprechenden Pixelstelle in dem Ziel-Einzelbild definieren. Die Bewegungs-Parameter können für jedes Pixel oder für jeden Block von Pixeln kodiert sein. In einigen Fällen sind die Bewegungs-Parameter die Koeffizienten einer geometrischen Transformation (z. B. eine affine oder perspektivische Transformation), die die Bewegung eines Pixels oder Blocks von Pixeln für die Quelle des Ziel-Einzelbilds beschreibt. Diese Koeffizienten können als eine Reihe von Bewegungsvektoren kodiert sein, die die Bewegung von Grenzpunkten für einen Block von Pixeln beschreiben. Der Dekodierer leitet dann die Bewegungs-Koeffizienten von den Referenzpunkten ab. Eine alternative Maßnahme ist diejenige, einen einzelnen Bewegungsvektor pro Block aus Pixeln in dem Quellen-Einzelbild auszuwählen, das die Translationsbewegung aller Pixel in dem Quellenblock beschreibt.
  • Sowohl der Kodierer als auch der Dekodierer verwenden die Bewegungs-Parameter in derselben Art und Weise, um vorhergesagte Pixel für jedes Pixel in dem Quellen-Bild zu berechnen. Da die vorbeschriebenen Pixel nicht perfekt die Quellen-Pixel anpassen, berechnet die Bewegungs-Kompensations-Komponente des Kodierers ein Fehlersignal als die Differenz zwischen den vorhergesagten Pixeln und den entsprechenden Quellen-Pixeln. Im Gegensatz dazu, den tatsächlichen Pixel-Wert für jedes Pixel in den Quellen-Einzelbildern zu kodieren, kodiert der Kodierer die Bewegungs-Parameter, die Pixel in dem Ziel-Einzelbild, und ein Fehlersignal, wie es in der Bewegungs-Kompensations-Komponente berechnet ist.
  • Die Kodiererausführung verbessert die Kodier-Effektivität und die Qualität der inter-kodierten Videobilder unter Verwendung von modifizierten Kriterien zum Ausbilden eines passenden Blocks von Pixeln in dem Zielbereich. Diese modifizierten Kriterien sind eine kombinierte Messung der Bewegungs- und Fehlersignaldaten für Interframe-Blöcke. Die Kodierer-Ausführungsform verwendet dieselbe Blockgröße und dasselbe Blockformat wie die MPEG-4 und H263 Kodier-Standards, so dass diese Blöcke als Makro-Blöcke bezeichnet werden.
  • Unter einem hohen Niveau beziehungsweise Pegel können die kombinierte Messung der Bewegung und des Fehlersignals ausgedrückt werden als:
    COMBINED_MEASURE = A·Bits(Bewegungsvektor) + SD;
    wobei A ein Parameter zum Einstellen der Messung der Bits, benötigt dazu, den Bewegungsvektor (Bits) zu kodieren, ist, und SD eine Summe der Differenzen ist. In der Kodierer-Ausführungsform ist SD die Summe von absoluten Differenzen. Der Parameter A wendet sich zwei Punkten zu. Erstens umfasst er eine Gewichtungskomponente, die von dem Quantisierungsschritt abhängig ist, verwendet für das Bild, das kodiert werden soll. Da der Bewegungsvektor und das Fehlersignal in unterschiedlichen Einheiten ausgedrückt werden, nimmt diese Gewichtungskomponente eine Einstellung der Differenz in Einheiten als eine Funktion des Quantisierungsschritts vor. Als Zweites umfasst der Parameter A eine Konstante, die berechnet wird, um die Zahl von Bits für das Video-Clip, das kodiert werden soll, zu verringern. Die Konstante wird durch Experimentieren mit dem Video-Clip ausgewählt, um einen Wert für die Konstante zu finden, die die Bits, benötigt dazu, Interframe-Makro-Blöcke zu kodieren, minimiert.
  • Mit den Ausführungsdetails, die vorstehend angegeben sind, können die kombinierte Messung der Bewegung und die Fehlersignaldaten als eine modifizierte Summe von absoluten Differenzen ausgedrückt werden.
    Modifizierte SAD = K·Qs·Bits(Bewegungsvektor) + SAD,
    wobei K die Konstante ist, optimiert so, um die Interframe-Bits für den Video-Clip zu verringern, Qs ein Parameter pro Frame ist, der den Quantisierungsschritt einstellt, „Bits" eine Messung der Anzahl von Bits ist, benötigt dazu, den Bewegungsvektor für den Block aus Pixeln in dem Quellen-Bild-Einzelbild, das kodiert werden soll, zu kodieren, und SAD eine Summe von absoluten Differenzen zwischen Bit-Abtastungen des Quellenblocks und Bild-Abtastwerten an entsprechenden Stellen in einem Ziel-Block ist. Der Bewegungsvektor definiert die Stelle des Ziel-Blocks relativ zu dem Quellenblock.
  • Experimente zeigen, dass der vorstehende Ausdruck für die modifizierten SAD das Kodier-Overhead für Interframe-Makro-Blöcke relativ zu einer Blockanpassung, ba sierend nur auf SAD, verringert. Insbesondere erreicht die modifizierte SAD eine bessere Funktionsweise für Video-Szenen mit geringer Bewegung (d. h., wo SAD dazu tendiert, relativ klein zu werden).
  • Die neuen Kriterien zum Durchführen einer Block-Anpassung werden dazu verwendet; einen passenden Block in dem Zielbereich zu suchen: Die Suche beginnt an einer Startstelle in dem Suchbereich des Ziel-Einzelbilds und schreitet dann entlang eines Suchpfads fort. An jedem Schritt entlang des Suchpfands evaluiert das Bewegungs-Abschätzungs-Modul die kombinierte Messung von Bewegungs- und Fehlersignaldaten. Zur Vereinfachung wird diese Menge als die kombinierten Suchkriterien (Combined Search Criteria – CSC) bezeichnet. Die Aufgabe der Suche ist diejenige, den Wert von CSC für Ziel-Blöcke von Pixeln, angeordnet in dem Suchbereich, zu minimieren.
  • Bevor die Suche beginnt, wählt der Kodierer eine Such-Start-Stelle aus. Vorzugsweise wird die Starstelle, basierend auf dem Bewegungsvektor, berechnet für benachbarte Blöcke, ausgewählt. Da die Bewegung von benachbarten Blöcken dazu tendiert, ähnlich zu dem Block zu sein, der von Interesse ist, ist es wahrscheinlich, dass ein Startpunkt, basierend auf den benachbarten Bewegungsvektoren, die nächste Suche nahe dem passenden Block in dem Suchbereich beginnt. 4 zeigt ein Diagramm, das den momentanen Makro-Block 400, umgeben durch benachbarte Makro-Blöcke 404410, und deren Bewegungsvektoren 414420 darstellt. Das Bewegungs-Abschätzungs-Modul berechnet eine Startstelle durch Berechnen eines Prädiktors für den momentanen Block. Der Prädiktor wird als der Median der X und Y Bewegungsvektor-Komponenten des linken Blocks 410, des oberen Blocks 406 und des oberen rechten Blocks 408 berechnet. Der Median der X-Komponenten dieser Kandidaten-Blöcke ist der Prädiktor für die X-Komponente, und der Median der Y-Komponente dieser Blöcke ist der Prädiktor für die Y-Komponente.
  • Nach Berechnen der Startstelle schreitet das Bewegungs-Schätz-Modul entlang eines Suchpfads fort und evaluiert die CSC für Ziel-Blöcke, angeordnet unter Schritten entlang des Pfads. Insbesondere verwendet die Kodierer-Ausführungsform einen spiralförmigen Suchpfad, wo sich jeder Suchschritt weiter von der Startstelle bewegt. 5 stellt ein Beispiel eines spiralförmigen Suchpfads in einer erweiterten Version des Suchbereichs 500, dargestellt in 3, dar. Der erste Ziel-Block 502 ist ungefähr an der Startstelle zentriert, die durch den Prädiktor-Bewegungsvektor 504 definiert ist. Die Punkte (z. B. 506, 508) sind Beispiele der Schritte entlang des spiralförmigen Suchpfads.
  • 6 stellt ein weiteres, detailliertes Beispiel der Schritte in dem spiralförmigen Suchpfad in der Kodierer-Ausführungsform dar. Jede Zahl entspricht einem Schritt in dem Suchpfad. Der Startpunkt des Suchpfads ist; in den meisten Fällen; die Stelle, die durch den Bewegungsvektor-Prädiktor vorhergesagt ist.
  • Vorzugsweise sollten die Schritte in der spiralförmigen Suche in zunehmenden Abständen von der Startstelle aus geordnet sein. Wie weiter nachfolgend erläutert ist, kann diese Ordnung die Suche optimieren, indem dem Block-Anpassungs-Prozess ermöglicht wird, einen passenden Block zu identifizieren, ohne eine vollständige Suche in dem Suchbereich vorzunehmen. Die Kodierer-Ausführungsform ist so ausgelegt, dass sie mit dem MPEG-4 Kodier-Standard kompatibel ist. Aufgrund der Einschränkungen, die der Größe der Bewegungsvektoren in MPEG-4 auferlegt sind, kann der Bewegungsvektor-Prädiktor nicht immer einen guten Startpunkt für die spiralförmige Suche darstellen. Um dieses Problem darzustellen, wird das Beispiel, dargestellt in 6, betrachtet, wo der unterbrochene Bewegungsvektor 600 die erwünschte Startstelle für eine Suche darstellt und der durchgezogene Bewegungsvektor 602 der Bewegungsvektor ist, der sich aufgrund der Begrenzung der Bewegungsvektorgröße in dem MPEG-4-Standard ergibt. Im Gegensatz zu einem Starten der Suche an dem Punkt, angezeigt durch den Bewegungsvektor-Prädiktor 600, wird die Suche dazu gebracht, an dem Punkt zu starten, der durch den begrenzten Bewegungsvektor 602 angegeben ist.
  • Eine Art und Weise, um diese Einschränkung zu überwinden, ist diejenige, die Suchreihenfolge von Stellen in dem Zielbereich durch eine Stelle von dem erwünschten Startpunkt aus (z. B. der Punkt des Bewegungsvektor-Prädiktors) zu sortieren. Diese Maßnahme erhöht allerdings das Verarbeitungs-Overhead für eine Bewegungs-Abschätzung.
  • Eine andere Maßnahme, verwendet in der Kodierer-Ausführungsform, ist diejenige, die Suchreihenfolge so zu mischen und zu sortieren, dass die Blöcke, die dahingehend wahrscheinlich sind, dass sie die nächste Anpassung sind, zuerst gesucht werden. Insbesondere mischt der Kodierer die Suchreihenfolge so, dass die Ziel-Blöcke, die näher zu dem Prädiktor-Punkt liegen, zuerst gesucht werden.
  • Diese Maßnahme kann besser unter Betrachtung des Beispiels, dargestellt in 6, gesehen werden. Die ursprüngliche Suchreihenfolge für den Blockanpassungs-Vorgang ist {1, 2, 3, ...48}.
  • Die gemischte Suchreihenfolge ist {15, 16, 17, 18, ...48, 14, 13, 12, ...,1}.
  • Diese Ausführungsform berechnet die verschobene Suchreihenfolge in zwei Stufen beziehungsweise Schritten: Zuerst berechnet sie den Abstand zwischen der gewünschten Spiralsuchmitte (d. h. dem erwünschten Startpunkt) und dem vorhergesagten Punkt, der an einer unterschiedlichen Stelle gegenüber dem erwünschten Startpunkt aufgrund der Beschränkungen in Bezug auf die Bewegungsvektorgröße liegt. Als Nächstes sucht sie einen neuen, vorberechneten Startpunkt für diesen Abstand. Dieser Durchsichtsvorgang führt zu einem neuen Startindex in der Suchreihenfolge (z. B. 15 in dem vorstehenden Beispiel).
  • Diese Einstellung der Suchreihenfolge ist ein spezieller Fall, wo der erwünschte Startpunkt der spiralförmigen Suche unterschiedlich zu dem vorhergesagten Punkt ist. Der erwünschte Startpunkt wird durch Auffinden des Medians der X- und Y-Komponenten der benachbarten Bewegungsvektoren berechnet, wie dies vorstehend erläutert ist, ohne irgendeine Einschränkung in Bezug auf die Bewegungsvektorgröße. Der vorhergesagte Punkt wird in derselben Art und Weise berechnet, mit der Ausnahme, dass er durch die Kodier-Standard-Begrenzung begrenzt ist, die die Größe des Bewegungsvektors begrenzt. Als eine Folge sind der erwünschte Suchstartpunkt und der vorhergesagte Punkt dann unterschiedlich, wenn die Begrenzung in Bezug auf die Bewegungsvektorgröße eine Verringerung in der Größe eines Bewegungsvektors verursacht, verwendet dazu, den vorhergesagten Punkt zu berechnen.
  • In der Ausführungsform werden die vorberechneten Startpunkte in einer Tabelle gespeichert, die, unter Vorgabe des Abstands, berechnet in dem ersten Schritt, einen Startindex für den ersten Block in der verschobenen Suchreihenfolge liefert. In dem Beispiel, das vorstehend dargestellt ist, ist der Startindex eine Zahl, ausgewählt von 1 bis 48, wobei jeder Index einem Suchpunkt in einer spiralförmigen Suchreihenfolge entspricht.
  • Die Definition der Tabelle in der Ausführung kann ausgedrückt werden als:
    Neuer Start-Index = F(d);
    wobei d der Abstand ist, der in Schritt 1 berechnet ist.
  • Unter Vorgabe eines Abstands d führt die Funktion F(d) einen Index y zurück, so dass für jeden Index i, wo i > y gilt, der Abstand zwischen der spiralförmigen Suchmitte P0 und den Koordinaten Pi der Suchstelle für den Index i immer größer als oder gleich zu (d – 1) ist; und für jeden Index i, wo i < y gilt, ist der Abstand zwischen Pi und P0 immer kleiner als oder gleich zu (d – 1).
  • Auf andere Art und Weise ausgedrückt, ist die Tabelle definiert als:
    F(d) = y; für i > y, Abstand (P0, Pi ≥ (d – 1); und
    für i < y, Abstand (P0, Pi) < (d – 1).
  • Diese neue Suchreihenfolge wird die Punkte suchen, die am nächsten zu dem erwünschten Startpunkt, früher als die ursprüngliche Reihenfolge, liegt. Diese alternative Maßnahme vermeidet den zusätzlichen Verarbeitungs-Overhead eines Sortierens der Suchreihenfolge mit einem Abstand von dem erwünschten Startpunkt aus, wenn dieser Punkt gegenüber dem vorhergesagten Punkt unterschiedlich ist.
  • Die Kodierer-Ausführungsform verwendet die kombinierten Suchkriterien (z. B. die modifizierten SAD) in Verbindung mit einer spiralförmigen Suche, um die Geschwindigkeit des Bewegungs-Abschätzungs-Vorgangs zu erhöhen. Ein Attribut der CSC ist dasjenige, dass sie ermöglicht, dass der Blockanpassungsvorgang die Suche ohne Erreichen des Endes des Suchpfads beendet. Dieses Attribut resultiert aus den folgenden Merkmalen des Suchvorgangs:
    • 1) die CSC setzen die Größe des Bewegungsvektors ein; und
    • 2) der spiralförmige Suchpfad erhöht die Größe des Bewegungsvektors mit jedem Schritt.
  • Um dieses Merkmal darzustellen, wird der folgende Ausdruck für die CSC betrachtet:
    COMBINED_MEASURE = A·Bits(Bewegungsvektor) + SD
  • Da sich die Zahl von Schritten immer von der spiralförmigen Mitte aus erhöht, erhöht sich auch die Zahl von Bits, verwendet dazu, den Bewegungsvektor zu kodieren.
  • Der minimale Wert für die CSC an jedem Schritt ist:
    CSCmin = A·Bits(Bewegungsvektor).
  • Dies ergibt sich dort, wo der Wert von SD Null ist. Aufgrund der Tatsache, dass sich die Bits, benötigt dazu, den Bewegungsvektor zu kodieren, mit jedem Schritt in dem spiralförmigen Suchpfad erhöhen, erhöht sich auch der minimale Wert für CSC an jedem Schritt:
    CSCmin(i + 1) ≥ CSC(i), wobei i der Schritt in dem spiralförmigen Suchpfad ist.
  • Im Hinblick auf die Attribute der spiralförmigen Suche, die vorstehend angegeben ist, kann der Blockanpassungs-Vorang die Suche an dem Punkt beenden, wo das momentane CSCmin größer als oder gleich zu dem minimalen CSC ist, gefunden bis zu diesem Punkt (CSCgespeichert). Insbesondere ergibt sich, falls das CSCmin für einen Punkt s existiert, so dass gilt:
    CSCmin(s) ≥ CSCgespeichert,
    dann für alle i größer als s in dem Suchpfad:
    CSC(i) ≥ CSCmin(s) ≥ CSCgespeichert für alle i > s.
  • Die variable „CSCgespeichert" ist der minimale Wert für CSC für irgendeinen der Suchpunkte, der bis hier in dem spiralförmigen Suchpfad besucht ist. Um von diesem Merkmal vorteilhaft Gebrauch zu machen, protokolliert die Kodierer-Ausführungsform den minimalen Wert für CSC, der bis hier gefunden ist, und vergleicht ihn mit CSCmin für den momentanen Schritt. Falls CSCmin für den momentanen Suchpunkt größer als oder gleich zu CSCgespeichert ist, dann beendet sie die Suche und verwendet den Suchpunkt, der zu dem minimalen CSC-Wert resultierte.
  • 7 zeigt ein Flussdiagramm, das die Betriebsweise der Kodierer-Ausführungsform darstellt. Dieses Diagramm setzt die Merkmale ein, die vorstehend zum Verbessern der Kodiereffektivität und der Kodiergeschwindigkeit beschrieben sind. Wie in 7 dargestellt ist, beginnt der Kodierer durch Berechnen des Such-Start-Punkts (Schritt 700). In diesem Schritt berechnet der Kodierer den Bewegungsvektor-Prädiktor von den Bewegungsvektoren von benachbarten Blöcken, wie dies vorstehend erläutert ist. Falls der vorhergesagte Bewegungsvektor aufgrund der Begrenzungen in Bezug auf die Bewegungsvektorgröße in dem MPEG-4 Kodier-Standard begrenzt ist (Entscheidungsschritt 702), dann verschiebt der Kodierer die Suchreihenfolge. Genauer gesagt, verschiebt der Kodierer die Suchreihenfolge so, dass die Ziel-Blöcke, die näher zu dem tatsächlichen, vorhergesagten Punkt liegen, eher evaluiert werden (Schritt 704) als Blöcke, die nahe der Stelle des vorhergesagten Punkts angeordnet sind, der sich aus der Beschränkung in Bezug auf die Bewegungsvektorgröße ergibt.
  • Als Nächstes beginnt der Kodierer den Blockanpassungsvorgang, der Suchreihenfolge folgend, die im Schritt 704 bestimmt ist. Für jeden Ziel-Block entlang des Suchpfads berechnet der Kodierer die Summe von absoluten Differenzen (SAD) zwischen den Abtastwerten in dem Quellenblock und dem Ziel-Block (Schritt 706). Er berechnet dann eine Messung der kombinierten Bewegungsvektor- und Fehlersignaldaten, bezeichnet als die modifizierten SAD (Schritt 708). In dieser Ausführungsform wird diese Menge als die modifizierten SAD bezeichnet und ist eine Kombination von minimalen, modifizierten SAD und den SAD für den momentanen Block, wobei die minimalen, modifizierten SAD für einen Block berechnet werden als:
    modifizierte SADmin = K·Qs·Bits(Bewegungsvektor), so dass
    modifizierte SAD = modifizierte SADmin + SAD.
  • Die Berechnung der modifizierten SAD ist in weiterem Detail in 8 dargestellt.
  • In Anwendungen, wo die SAD klein sind (z. B. Szenen mit geringer Bewegung), kann die Suche beendet werden, falls die minimalen, modifizierten SAD für den momentanen Block größer als oder gleich zu dem gespeicherten Wert der modifizierten SAD sind. Um zu bestimmen, ob die Suche fortzuführen ist, vergleicht der Kodierer die momentanen, minimalen, modifizierten SAD für den momentanen Ziel-Block mit einem gespeicherten Wert der modifizierten SAD (Schritt 710). Falls die momentanen, modifizierten SADmin geringer als die minimalen SAD sind, die bis hier gefunden sind, aktualisiert der Kodierer den gespeicherten Wert der modifizierten SAD (Schritt 712) und schreitet zu dem nächsten Punkt in dem Suchpfad fort (Schritt 714). Zu Anfang wird der gespeicherte Wert der modifizierten SAD auf die modifizierten SAD des ersten Blocks in der Suche eingestellt. An darauf folgenden Ziel-Blöcken in dem Suchpfad wird der gespeicherte Wert der modifizierten SAD auf die momentanen, modifizierten SAD eingestellt, falls die momentanen, modifizierten SAD geringer als der zuvor gespeicherte Wert sind. Wie in 7 dargestellt ist, hält die Suche an, falls die minimalen, modifizierten SAD für den momentanen Block größer als oder gleich zu dem niedrigsten Wert der modifizierten SAD, die bis hier gefunden sind, sind.
  • 8 zeigt ein Blockdiagramm einer Ausführungsform einer Bewegungs-Schätzeinrichtung 800, die das Verfahren, dargestellt in 7, einsetzt. Der Bewegungsvektor-Prädiktor 802 stellt die Berechnung des vorhergesagten Bewegungsvektors dar. Er nimmt die Bewegungsvektoren von benachbarten Blöcken und berechnet einen vorhergesagten Bewegungsvektor für den momentanen Block. Die Suchpfad-Steuerung 804 verwendet den vorhergesagten Bewegungsvektor, um den Startpunkt der Suche für einen passenden Block in einem Suchbereich des Ziel-Einzelbilds zu bestimmen. Die Eingaben zu der Suchpfad-Steuerung, TARGET und SOURCE, sind die Ziel- und Quellenbilder. Für jeden Quellenblock in dem Quellenbild berechnet die Suchpfad-Steuerung die Suchstartstelle in dem Ziel-Bild und die Suchreihenfolge und die Stelle der Ziel-Blöcke in dem Ziel-Bild. Die Suchreihenfolge folgt einem spiralförmigen Pfad von dem Punkt, identifiziert durch den vorhergesagten Bewegungsvektor. Falls die Größe des vorhergesagten Bewegungsvektors aufgrund der Begrenzung der Größe der Bewegungsvektoren begrenzt ist, wählt die Suchpfad-Steuerung eine verschobene Suchreihenfolge so aus, wie dies vorstehend beschrieben ist.
  • Der Subtrahierer 806 berechnet die Differenzen zwischen den Pixel-Werten in dem Quellenblock und dem momentanen Ziel-Block, wie dies durch den Suchpfad vorgegeben ist. Der SAD-Akkumulator 808 summiert die Differenzen auf und akkumuliert die Summe für den momentanen Block.
  • Die Bewegungs-Schätzeinrichtung evaluiert das Overhead, das den Bewegungsvektor-Bits zuschreibbar ist, basierend auf dem Bewegungsvektor für die momentane Position in dem Suchpfad. Jeder Schritt in der Suche besitzt einen Bewegungsvektor, der dazu zugeordnet ist. Unter Kenntnis der Größe dieses Bewegungsvektors kann die Bewegungs-Schätzeinrichtung dann die Zahl von Bits, die dem Bewegungsvektor für den momentanen Schritt zugeschrieben sind, berechnen. Sie stellt dann das Bewegungsvektor-Overhead (z. B. die Bits, die benötigt werden um den Bewegungsvektor zu kodieren) mit einer Konstanten K und dem Quantisierungsschritt Qs ein. Der Multiplizierer 810 berechnet die minimalen, modifizierten SAD für den momentanen Schritt als
    Bits(Bewegungsvektor)·K·Qs.
  • Der minimale Wert der modifizierten SAD für den momentanen Block (modifizierte SADmin) kann dann dazu verwendet werden, zu bestimmen, ob die Suche weiter fortzuführen ist, wie dies vorstehend erläutert ist. Insbesondere vergleicht ein Komparator 812 die modifizierten SADmin für den momentanen Block mit dem gespeicherten Wert der modifizierten SAD. Falls das modifizierte SADmin größer als oder gleich zu dem gespeicherten Wert ist, dann kann die Bewegungs-Schätzeinrichtung die Suche anhalten und den Ziel-Block mit dem minimalen SAD verwenden, um den Bewegungsvektor für den momentanen Makro-Block zu berechnen. Falls dies nicht der Fall ist, dann schreitet die Suche fort zu dem nächsten Suchpunkt in der Suchreihenfolge.
  • Die Bewegungs-Schätzeinrichtung berechnet die modifizierten SAD für jeden Ziel-Block als die Summe des minimalen, modifizierten SAD (K·Qs Bits(Bewegungsvektor)) und die SAD für den momentanen Block. Die Bewegungs-Schätzeinrichtung vollzieht dann die niedrigsten modifizierten SAD, die bisher gefunden sind (modifizierte SADgespeichert), zusammen mit dem Bewegungsvektor für den Ziel-Block, der diesen niedrigsten Wert ergab, nach. Der zweite Komparator 816, dargestellt in 8, stellt den Vorgang eines Aktualisierens des niedrigsten, modifizierten SAD-Werts, gefunden in der Suche, nachdem jeder Ziel-Block evaluiert ist, dar. Wenn die Suche endet, wird der Bewegungsvektor, der dem Ziel-Block zugeordnet ist, der den niedrigsten, modifizierten SAD-Wert besitzt, für den Makro-Block kodiert.
  • Kurze Übersicht eines Computersystems
  • 9 und die nachfolgende Diskussion sind dazu vorgesehen, eine kurze, allgemeine Beschreibung einer geeigneten Berechnungsumgebung anzugeben, in der die Erfindung ausgeführt werden kann. Obwohl die Erfindung oder Aspekte davon in einer Hardware-Vorrichtung ausgeführt werden können, werden der Kodierer und der Dekodierer, die vorstehend beschrieben sind, in durch einen Computer ausführbare Instruktionen, organisiert in Programm-Modulen, ausgeführt. Die Programm-Module umfassen die Routines, Programme, Objekte, Komponenten und Daten-Strukturen, die die Aufgaben durchführen und die Daten-Typen, die vorstehend beschrieben sind, umsetzen.
  • Während 9 einen typischen Aufbau eines Desktop-Computers darstellt, kann die Erfindung in anderen Konfigurationen eines Computersystems ausgeführt werden, einschließlich von in der Hand haltbaren Vorrichtungen, Multiprozessor-Systemen, auf einem Mikroprozessor basierende oder programmierbare Verbraucher-Elektroniken, Minicomputern, Main-Frame-Computern und dergleichen. Die Erfindung kann auch in verteilten Berechnungsumgebungen verwendet werden, wo Aufgaben durch Fernverarbeitungs-Vorrichtungen durchgeführt werden, die über ein Kommunikationsnetzwerk miteinander vernetzt sind. In einer verteilten Berechnungsumgebung können Programm-Module in sowohl lokalen als auch entfernten Speicher-Vorrichtungen angeordnet sein.
  • 9 stellt ein Beispiel eines Computersystems dar, das als eine Arbeitsumgebung für die Erfindung dient. Das Computersystem umfasst einen Personal-Computer 920, umfassend eine Verarbeitungseinheit 921, einen Systemspeicher 922 und einen System-Bus 923, der verschiedene Systemkomponenten, einschließlich des Systemspeichers, mit der Verarbeitungseinheit 921, verbindet. Der System-Bus kann irgendeinen von verschiedenen Typen von Bus-Strukturen, einschließlich eines Speicher-Busses oder einer Speicher Steuereinrichtung, eines peripheren Busses und eines lokalen Busses, unter Verwendung einer Bus-Architektur, wie beispielsweise PCI, VESA, Microchannel (MCA), ISA und EISA, um nur einige zu nennen, aufweisen. Der Systemspeicher umfasst einen Read Only Memory (ROM) 924 und einen Random Access Memory (RAM) 925. Ein Basis-Eingangs/Ausgangs-System 926 (BIOS), das die Basis-Routines enthält, die dabei helfen, Informationen zwischen Elementen innerhalb des Personal-Computers 920 zu übertragen, wie beispielsweise während eines Start-up, ist in dem ROM 924 gespeichert. Der Personal-Computer 920 umfasst weiterhin ein Festplattenlaufwerk 927, ein Magnetplattenlaufwerk 928, z. B. um von einer entnehmbaren Platte 929 zu lesen und darauf zu schreiben, und ein optisches Plattenlaufwerk 930, z. B. zum Lesen einer CD-ROM-Disk 931 oder um von einem anderen optischen Medium zu lesen oder darauf zu schreiben. Das Festplattenlaufwerk 927, das Magnetplattenlaufwerk 928 und das optische Plattenlaufwerk 930 sind mit dem System-Bus 923 durch eine Festplattenlaufwerk-Schnittstelle 932, eine Magnetplattenlaufwerk-Schnittstelle 933 und eine Schnittstelle 934 für ein optisches Laufwerk, jeweils, verbunden. Die Laufwerke und deren zugeordnete, mittels Computer lesbare Medien bilden einen nicht flüchtigen Speicher für Daten, Daten-Strukturen, durch einen Computer ausführbare Instruktionen (Programm-Code, wie beispielsweise dynamisches Verknüpfungs-Libraries und ausführbare Dateien), usw., für den Personal-Computer 920. Obwohl sich die Beschreibung von computer-lesbaren Medien vorstehend auf ein Festplattenlaufwerk, eine entnehmbare, magnetische Platte und eine CD bezieht, kann sie auch andere Typen von Medien umfassen, die durch einen Computer lesbar sind, wie beispielsweise magnetische Kassetten, Flash-Memory-Cards, Digital-Video-Disks, Bernoulli-Cartridges, und dergleichen.
  • Eine Anzahl von Programm-Modulen kann in den Laufwerken und dem RAM 925 gespeichert sein, einschließlich eines Betriebssystems 935, von einem oder mehren Anwendungsprogrammen) 936, anderen Programm-Modulen 937 und Programm-Daten 938. Ein Benutzer kann Befehle und Informationen in den Personal-Computer 920 über ein Tastenfeld 940 und eine Hinweisvorrichtung, wie beispielsweise eine Maus 942, eingeben. Andere Eingabevorrichtungen (nicht dargestellt) können ein Mikrofon, einen Joy-Stick, ein Game-Pad, eine Satelliten-Schüssel, einen Scanner oder dergleichen umfassen. Diese und andere Eingabevorrichtungen sind oftmals mit der Verarbeitungseinheit 921 über eine serielle Anschluss-Schnittstelle 946 verbunden, die mit dem System-Bus gekoppelt ist, können allerdings auch durch andere Schnittstellen verbunden sein, wie beispielsweise einem parallelen Port, einem Game-Port oder einem universellen, seriellen Bus (USB). Ein Monitor 947 oder ein anderer Typ einer Anzeigevorrichtung ist auch mit dem System-Bus 923 über eine Schnittstelle, wie beispielsweise eine Anzeigesteuereinheit oder ein Video-Adapter 948, verbunden. Zusätzlich zu dem Monitor umfassen Personal-Computer typischerweise andere periphere Ausgabevorrichtungen (nicht dargestellt), wie beispielsweise Lautsprecher und Drucker.
  • Der Personal-Computer 920 kann in einer vernetzten Umgebung arbeiten, die logische Verbindungen zu einer oder zu mehreren entfernten Computern verwendet, wie beispielsweise einem entfernten Computer 949. Der entfernte Computer 949 kann ein Server, ein Router, eine Peer-Vorrichtung oder ein anderer Netzwerkknoten sein und umfasst typischerweise viele oder alle der Elemente, die relativ zu dem Personal-Computer 920 beschrieben sind, obwohl nur eine Speichervorrichtung 950 in 9 dargestellt worden ist. Die logischen Verbindungen, die in 9 dargestellt sind, umfassen ein Local-Area-Network (LAN) 951 und ein Wide-Area-Network (WAN) 952. Solche vernetzten Umgebungen sind in Büros, in weltweiten Computer-Netzwerken, in Intranets und dem Internet üblich.
  • Der Personal-Computer 920 ist, wenn er in einer LAN-Netzwerkumgebung verwendet wird, mit dem lokalen Netzwerk 951 über eine Netzwerkschnittstelle oder einen Adapter 953 verbunden. Wenn er in einer WAN-Netzwerkumgebung verwendet ist, umfasst der Personal-Computer 920 typischerweise ein Modem 954 oder eine andere Einrichtung zum Einrichten von Kommunikationen über das Wide-Area-Network 952, wie beispielsweise das Internet. Das Modem 954, das intern oder extern vorliegen kann, ist mit dem System-Bus 923 über die serielle Anschluss-Schnittstelle 946 verbunden. In einer vernetzen Umgebung können Programm-Module, die relativ zu dem Personal-Computer 920 gezeigt sind, oder Bereiche davon, in der Fernspeicher-Vorrichtung gespeichert sein. Die Netzwerk-Verbindungen, die dargestellt sind, sind nur Beispiele, und andere Einrichtungen, um eine Kommunikationsverbindung zwischen den Computern einzurichten, können verwendet werden.
  • Schlussfolgerung
  • Während die Erfindung unter Verwendung einer spezifischen Ausführungsform als ein Beispiel dargestellt worden ist, ist der Schutzumfang der Erfindung nicht auf die spezifische Ausführungsform, die vorstehend beschrieben ist, beschränkt. Zum Beispiel berechnet die Ausführungsform, die vorstehend beschrieben ist, ein Maß der kombinierten Bewegungsvektor- und Fehlersignale für einen Makro-Block unter Verwendung einer spezifischen Formel, die die Bits, verwendet dazu, den Bewegungsvektor zu kodieren, gewichtet. Allerdings kann die Art und Weise, in der das Overhead des Bewegungsvektors und das Fehlersignal gemessen werden, mit der Ausführungsform variieren.
  • Während der spiralförmige Suchpfad, der vorstehend beschrieben ist, Vorteile in Bezug auf eine Erhöhung der Geschwindigkeit des Kodierers besitzt, ist es nicht notwendig, diese Maßnahme in allen Ausführungsformen der Erfindung zu verwenden. Ähnlich kann die Maßnahme eines Verschiebens der Suchreihenfolge nur in Fällen angewandt werden, bei denen die Einschränkungen in Bezug auf eine Bewegungsvektorgröße zu einer Startstelle für die Block-Anpassungs-Suche führt, die nicht ganz optimal ist. Allerdings sind dabei Vorteile vorhanden, einen Suchpfad auszuwählen und/oder die Suchreihenfolge zu Suchblöcken hin zu verschieben, die wahrscheinlicher dahingehend sind, dass sie ein niedrigeres, kombiniertes Bewegungsvektor- und Fehlersignal-Overhead haben.

Claims (16)

  1. Block-Matching-Verfahren zur Bewegungsschätzung in einer Video-Sequenz, wobei das Verfahren umfasst: für einen Quellen-Block (308) eines Quellen-Einzelbildes (300) Suchen nach einem übereinstimmenden Ziel-Block auf mehreren Ziel-Blöcken eines Ziel-Einzelbildes (302), wobei für jeden gesuchten Ziel-Block das Suchen einschließt: Berechnen eines Bewegungsvektoraufwandes zum Codieren des gesuchten Ziel-Blocks; Gewichten des Bewegungsvektoraufwandes mit einem Quantisierungsschritt-Faktor; und Berechnen eines Übereinstimmungskriteriums für den gesuchten Ziel-Block, das wenigstens teilweise auf dem gewichteten Bewegungsvektoraufwand basiert; und Auswählen des übereinstimmenden Ziel-Blocks auf Basis der entsprechenden Übereinstimmungskriterien für die gesuchten Ziel-Blöcke.
  2. Verfahren nach Anspruch 1, wobei das Übereinstimmungskriterium für jeden gesuchten Ziel-Block des Weiteren wenigstens teilweise auf einem Fehlermaß zwischen dem gesuchten Ziel-Block und dem Quellen-Block (308) basiert.
  3. Verfahren nach Anspruch 1, wobei für jeden gesuchten Ziel-Block das Suchen des Weiteren einschließt: Gewichten des Bewegungsvektoraufwandes mit einer Konstante, wobei die Konstante über die Video-Sequenz optimiert wird, um den Kodieraufwand zu verringern.
  4. Verfahren nach Anspruch 1, wobei ein spiralförmiges Suchmuster die Reihenfolge steuert, in der die mehreren Ziel-Blöcke gesucht werden.
  5. Verfahren nach Anspruch 4, wobei das Verfahren des Weiteren umfasst: Umordnen des spiralförmigen Suchmusters, um Bewegungsvektor-Größenbeschränkungen auszugleichen.
  6. Verfahren nach Anspruch 4, wobei das Übereinstimmungskriterium für jeden gesuchten Ziel-Block des Weiteren wenigstens teilweise auf einem Fehlennaß zwischen dem gesuchten Ziel-Block und dem Quellen-Block (308) basiert, und wobei für jeden gesuchten Ziel-Block das Suchen des Weiteren einschließt: wenn der gewichtete Bewegungsvektoraufwand für den gesuchten Ziel-Block ein Kriterium bester Übereinstimmung für zuvor gesuchte Ziel-Block übersteigt, Beenden des Suchens.
  7. Verfahren zum Durchführen von Bewegungsschätzung bei Video-Kodier-Anwendungen, wobei das Verfahren umfasst: für einen Quellen-Block (308) in einem Quellen-Einzelbild (300) Suchen nach einem übereinstimmenden Block unter Ziel-Blöcken in einem Ziel-Einzelbild (302), das einschließt: Berechnen eines Fehlersignals zwischen Pixel-Werten an Pixel-Positionen in dem Quellen-Block (308) aus dem Quellen-Einzelbild (300) und Pixel-Werten an entsprechenden Pixel-Positionen in Ziel-Blöcken in dem Ziel-Einzelbild (302); und Berechnen eines Maßes kombinierter Bewegungsdaten und Fehlersignaldaten für die Ziel-Blöcke, wobei ein Quantisierungsschritt-Faktor die Bewegungsdaten gewichtet; Auswählen eines Ziel-Blocks aus den Ziel-Blöcken mit einem minimalen kombinierten Maß von Bewegungs- und Fehlersignaldaten für die Ziel-Blöcke; und unter Verwendung von Bewegungsdaten Nähern von Bewegung zwischen den Pixeln des Quellen-Blocks (308) und des ausgewählten Ziel-Blocks, um den Quellen-Block (308) zu kodieren.
  8. Verfahren nach Anspruch 7, wobei sich die Ziel-Blöcke in zunehmenden Abständen von einem Ausgangs-Suchpunkt befinden.
  9. Verfahren nach Anspruch 7, das des Weiteren einschließt: Vorhersagen eines Bewegungsvektors für den Quellen-Block (308).
  10. Computerlesbares Medium mit Befehlen zum Durchführen des Verfahrens nach einem der Ansprüche 1 bis 9.
  11. Bewegungs-Schätzeinrichtung zum Durchführen einer Block-Übereinstimmungs-Suche in einer Video-Codiereinrichtung, wobei die Bewegungs-Schätzeinrichtung umfasst: einen Subtrahierer (806), der Differenzen zwischen Pixel-Werten in einem Quellen-Block (308) eines Quellen-Einzelbildes (300) und einem Ziel-Block eines Ziel-Einzelbildes (302) berechnet; einen Akkumulator, der mit dem Subtrahierer (806) in Verbindung steht, um ein Fehlersignal für den Ziel-Block zu berechnen; einen Addierer, der mit dem Akkumulator in Verbindung steht, um das Fehlersignal und ein Maß des Bewegungsvektoraufwandes für den Ziel-Block zu addieren, und kombiniertes Maß von Bewegungsvektor- und Fehlersignaldaten für den Ziel-Block zu berechnen, wobei eine Quantisierungsschritt-Faktor das Maß des Bewegungsvektoraufwandes gewichtet; und einen Komparator (816), der das kombinierte Maß der Bewegungsvektor- und Fehlersignaldaten mit einem zuvor berechneten kombinierten Maß von Bewegungsvektor- und Fehlersignaldaten für einen anderen Ziel-Block vergleicht, um einen Ziel-Block in dem Ziel-Einzelbild (302) mit einem minimalen kombinierten Maß an Bewegungsvektor- und Fehlersignaldaten zu finden.
  12. Bewegungs-Schätzeinrichtung nach Anspruch 11, die des Weiteren eine Suchweg-Steuerung (804) enthält, die eine Sequenz von Ziel-Blöcken, die in den Subtrahierer (806) eingegeben werden, so steuert, dass die Sequenz einen spiralförmigen Suchweg in dem Ziel-Einzelbild (302) bildet.
  13. Bewegungs-Schätzeinrichtung nach Anspruch 12, wobei die Suchweg-Steuerung (804) eine erste Such-Sequenz von Ziel-Blöcken auswählt, wenn ein vorhergesagter Bewegungsvektor für den Quellen-Block (308) durch eine Begrenzung der Bewegungsvektor-Größe geändert wird, und eine zweite Such-Sequenz auswählt, wenn der vorhergesagte Bewegungsvektor nicht durch die Begrenzung der Bewegungsvektor-Größe verändert wird.
  14. Bewegungs-Schätzeinrichtung nach Anspruch 11, die des Weiteren eine Bewegungsvektor-Vorhersageeinrichtung (802) enthält, die eine Anfangsposition für die Suche auf Basis wenigstens eines Bewegungsvektors vorhersagt, der für einen an dem Quellen-Block (308) in dem Quellen-Einzelbild (300) angrenzenden Block berechnet wird.
  15. Bewegungs-Schätzeinrichtung nach Ansprach 11, die des Weiteren einen Komparator (812) enthält, der in Verbindung mit einer Suchweg-Steuerung (804) steht, um die Suche zu beenden, wenn ein Maß des Bewegungsvektor-Codieraufwandes ein kombiniertes Maß von Bewegungs- und Fehlersignaldaten für einen Ziel-Block übersteigt, der zuvor auf einem Suchweg bewertet wurde.
  16. Bewegungs-Schätzeinrichtung nach Anspruch 15, wobei die Suchweg-Steuerung (804) eine Sequenz von Ziel-Blöcken, die in den Subtrahierer (806) eingegeben werden, so bereitstellt, dass die Sequenz einen spiralförmigen Suchweg in dem Ziel-Einzelbild (302) bildet.
DE69923232T 1998-11-30 1999-11-30 Verbesserte bewegungsschätzung und blockübereinstimmungsmuster Expired - Lifetime DE69923232T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201279 1998-11-30
US09/201,279 US6418166B1 (en) 1998-11-30 1998-11-30 Motion estimation and block matching pattern
PCT/US1999/028396 WO2000033580A1 (en) 1998-11-30 1999-11-30 Improved motion estimation and block matching pattern

Publications (2)

Publication Number Publication Date
DE69923232D1 DE69923232D1 (de) 2005-02-17
DE69923232T2 true DE69923232T2 (de) 2005-06-23

Family

ID=22745216

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69923232T Expired - Lifetime DE69923232T2 (de) 1998-11-30 1999-11-30 Verbesserte bewegungsschätzung und blockübereinstimmungsmuster
DE69942107T Expired - Lifetime DE69942107D1 (de) 1998-11-30 1999-11-30 Verbesserte Bewegungsschätzung und Blockübereinstimmungsmuster

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE69942107T Expired - Lifetime DE69942107D1 (de) 1998-11-30 1999-11-30 Verbesserte Bewegungsschätzung und Blockübereinstimmungsmuster

Country Status (6)

Country Link
US (1) US6418166B1 (de)
EP (2) EP1389016B1 (de)
JP (1) JP4662636B2 (de)
AT (2) ATE460047T1 (de)
DE (2) DE69923232T2 (de)
WO (1) WO2000033580A1 (de)

Families Citing this family (154)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6499060B1 (en) 1999-03-12 2002-12-24 Microsoft Corporation Media coding for loss recovery with remotely predicted data units
DE60003070T2 (de) * 1999-08-11 2004-04-01 Nokia Corp. Adaptive bewegungsvektorfeldkodierung
US6735249B1 (en) * 1999-08-11 2004-05-11 Nokia Corporation Apparatus, and associated method, for forming a compressed motion vector field utilizing predictive motion coding
KR100601618B1 (ko) * 1999-08-27 2006-07-14 삼성전자주식회사 계층적 움직임 추정기를 위한 최적의 데이터 공급장치 및 그방법
US7269785B1 (en) * 1999-12-30 2007-09-11 Genesis Microchip Inc. Digital manipulation of video in digital video player
US6567469B1 (en) * 2000-03-23 2003-05-20 Koninklijke Philips Electronics N.V. Motion estimation algorithm suitable for H.261 videoconferencing applications
EP1287665A2 (de) * 2000-05-19 2003-03-05 Koninklijke Philips Electronics N.V. Verfahren system und gerät zur bewegungsschätzung unter verwendung von blockübereinstimmungen
TW550953B (en) * 2000-06-16 2003-09-01 Intel Corp Method of performing motion estimation
GB2372848B (en) * 2001-02-20 2004-10-27 Advanced Risc Mach Ltd Data processing using a coprocessor
KR20040035593A (ko) * 2001-03-07 2004-04-29 피티에스 코포레이션 모션 매칭을 위한 국부적 제약
US6934336B2 (en) * 2001-07-26 2005-08-23 Matsushita Electric Industrial Co., Ltd. Area expansion apparatus, area expansion method, and area expansion program
US8275047B2 (en) * 2001-09-20 2012-09-25 Xilinx, Inc. Method and device for block-based conditional motion compensation
FR2830159A1 (fr) * 2001-09-24 2003-03-28 Thomson Licensing Sa Procede de codage selon la norme mpeg
JP3823804B2 (ja) * 2001-10-22 2006-09-20 ソニー株式会社 信号処理方法及び装置、信号処理プログラム、並びに記録媒体
CN101448162B (zh) * 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US7092584B2 (en) * 2002-01-04 2006-08-15 Time Warner Entertainment Company Lp Registration of separations
EP1347649A1 (de) * 2002-03-18 2003-09-24 Lg Electronics Inc. Verfahren und Anordnung zur Festellung des B-Bild Modus in einem System zur Kodierung von Video
EP1361541B1 (de) * 2002-04-09 2011-06-22 STMicroelectronics Srl Verfahren und Vorrichtung zur globalen Bewegungsschätzung innerhalb einer Bildsequenz, z.B. für optische Mäuse
US7620109B2 (en) * 2002-04-10 2009-11-17 Microsoft Corporation Sub-pixel interpolation in motion estimation and compensation
US7116831B2 (en) * 2002-04-10 2006-10-03 Microsoft Corporation Chrominance motion vector rounding
US7305034B2 (en) * 2002-04-10 2007-12-04 Microsoft Corporation Rounding control for multi-stage interpolation
US7110459B2 (en) * 2002-04-10 2006-09-19 Microsoft Corporation Approximate bicubic filter
US7817717B2 (en) 2002-06-18 2010-10-19 Qualcomm Incorporated Motion estimation techniques for video encoding
US7224731B2 (en) * 2002-06-28 2007-05-29 Microsoft Corporation Motion estimation/compensation for screen capture video
US7379496B2 (en) * 2002-09-04 2008-05-27 Microsoft Corporation Multi-resolution video coding and decoding
US6757434B2 (en) * 2002-11-12 2004-06-29 Nokia Corporation Region-of-interest tracking method and device for wavelet-based video coding
FR2852773A1 (fr) * 2003-03-20 2004-09-24 France Telecom Procedes et dispositifs de codage et de decodage d'une sequence d'images par decomposition mouvement/texture et codage par ondelettes
US9330060B1 (en) 2003-04-15 2016-05-03 Nvidia Corporation Method and device for encoding and decoding video image data
US8824553B2 (en) 2003-05-12 2014-09-02 Google Inc. Video compression method
US7336707B2 (en) * 2003-06-06 2008-02-26 Samsung Electronics Co., Ltd. Method and apparatus for detecting improper area for motion compensation in video signal
US8660182B2 (en) * 2003-06-09 2014-02-25 Nvidia Corporation MPEG motion estimation based on dual start points
US10554985B2 (en) 2003-07-18 2020-02-04 Microsoft Technology Licensing, Llc DC coefficient signaling at small quantization step sizes
US7580584B2 (en) * 2003-07-18 2009-08-25 Microsoft Corporation Adaptive multiple quantization
US20050013498A1 (en) 2003-07-18 2005-01-20 Microsoft Corporation Coding of motion vector information
US7602851B2 (en) * 2003-07-18 2009-10-13 Microsoft Corporation Intelligent differential quantization of video coding
US8218624B2 (en) * 2003-07-18 2012-07-10 Microsoft Corporation Fractional quantization step sizes for high bit rates
US7426308B2 (en) * 2003-07-18 2008-09-16 Microsoft Corporation Intraframe and interframe interlace coding and decoding
US7738554B2 (en) 2003-07-18 2010-06-15 Microsoft Corporation DC coefficient signaling at small quantization step sizes
KR100594056B1 (ko) * 2003-09-01 2006-07-03 삼성전자주식회사 효율적인 비트율 제어를 위한 h.263/mpeg 비디오인코더 및 그 제어 방법
US7317839B2 (en) * 2003-09-07 2008-01-08 Microsoft Corporation Chroma motion vector derivation for interlaced forward-predicted fields
US7822123B2 (en) * 2004-10-06 2010-10-26 Microsoft Corporation Efficient repeat padding for hybrid video sequence with arbitrary video resolution
US8064520B2 (en) 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
US7567617B2 (en) 2003-09-07 2009-07-28 Microsoft Corporation Predicting motion vectors for fields of forward-predicted interlaced video frames
US7724827B2 (en) 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US20050117639A1 (en) * 2003-10-24 2005-06-02 Turaga Deepak S. Optimal spatio-temporal transformations for reduction of quantization noise propagation effects
US7526025B2 (en) * 2003-10-24 2009-04-28 Sony Corporation Lifting-based implementations of orthonormal spatio-temporal transformations
US20070127575A1 (en) * 2003-11-11 2007-06-07 Cheng-Tsai Ho Method and related apparatus for motion estimation
TWI227641B (en) * 2003-11-11 2005-02-01 Mediatek Inc Method and related apparatus for motion estimation
CN100353768C (zh) * 2003-11-26 2007-12-05 联发科技股份有限公司 在视频压缩系统中进行运动估测的方法及相关装置
US7649539B2 (en) * 2004-03-10 2010-01-19 Microsoft Corporation Image formats for video capture, processing and display
JP2005303576A (ja) * 2004-04-09 2005-10-27 Sony Corp 画像信号処理装置および方法、記録媒体、プログラム、並びにビデオカメラ
US20050238102A1 (en) * 2004-04-23 2005-10-27 Samsung Electronics Co., Ltd. Hierarchical motion estimation apparatus and method
US7801383B2 (en) * 2004-05-15 2010-09-21 Microsoft Corporation Embedded scalar quantizers with arbitrary dead-zone ratios
KR20050114751A (ko) * 2004-06-01 2005-12-06 경희대학교 산학협력단 예측 부호화/복호화 장치 및 예측 부호화/복호화 방법
US7953152B1 (en) 2004-06-28 2011-05-31 Google Inc. Video compression and encoding method
US20060002472A1 (en) * 2004-06-30 2006-01-05 Mehta Kalpesh D Various methods and apparatuses for motion estimation
US8442108B2 (en) * 2004-07-12 2013-05-14 Microsoft Corporation Adaptive updates in motion-compensated temporal filtering
US8340177B2 (en) * 2004-07-12 2012-12-25 Microsoft Corporation Embedded base layer codec for 3D sub-band coding
US8374238B2 (en) * 2004-07-13 2013-02-12 Microsoft Corporation Spatial scalability in 3D sub-band decoding of SDMCTF-encoded video
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
US9578345B2 (en) 2005-03-31 2017-02-21 Euclid Discoveries, Llc Model-based video encoding and decoding
JP2006074474A (ja) * 2004-09-02 2006-03-16 Toshiba Corp 動画像符号化装置、動画像符号化方法および動画像符号化プログラム
US9071847B2 (en) * 2004-10-06 2015-06-30 Microsoft Technology Licensing, Llc Variable coding resolution in video codec
US8243820B2 (en) * 2004-10-06 2012-08-14 Microsoft Corporation Decoding variable coded resolution video with native range/resolution post-processing operation
US7839933B2 (en) * 2004-10-06 2010-11-23 Microsoft Corporation Adaptive vertical macroblock alignment for mixed frame video sequences
US20060120612A1 (en) * 2004-12-08 2006-06-08 Sharath Manjunath Motion estimation techniques for video encoding
TWI288353B (en) * 2004-12-24 2007-10-11 Lite On Semiconductor Corp Motion detection method
US8634413B2 (en) 2004-12-30 2014-01-21 Microsoft Corporation Use of frame caching to improve packet loss recovery
TW200633539A (en) * 2005-03-09 2006-09-16 Pixart Imaging Inc Estimation method of motion vector based on distance weighted searching sequence
US20060233258A1 (en) * 2005-04-15 2006-10-19 Microsoft Corporation Scalable motion estimation
US8422546B2 (en) * 2005-05-25 2013-04-16 Microsoft Corporation Adaptive video encoding using a perceptual model
US7809214B2 (en) * 2005-08-22 2010-10-05 Samsung Electronics Co., Ltd. Device and a method for identifying movement patterns
US7808478B2 (en) * 2005-08-22 2010-10-05 Samsung Electronics Co., Ltd. Autonomous handheld device having a drawing tool
KR100714698B1 (ko) * 2005-08-29 2007-05-07 삼성전자주식회사 향상된 움직임 추정 방법, 상기 방법을 이용한 비디오인코딩 방법 및 장치
US8761259B2 (en) * 2005-09-22 2014-06-24 Qualcomm Incorporated Multi-dimensional neighboring block prediction for video encoding
US8731071B1 (en) 2005-12-15 2014-05-20 Nvidia Corporation System for performing finite input response (FIR) filtering in motion estimation
TWI305109B (en) * 2005-12-30 2009-01-01 Altek Corp Method for processing motion image
US7956930B2 (en) * 2006-01-06 2011-06-07 Microsoft Corporation Resampling and picture resizing operations for multi-resolution video coding and decoding
US8724702B1 (en) 2006-03-29 2014-05-13 Nvidia Corporation Methods and systems for motion estimation used in video coding
US8059721B2 (en) 2006-04-07 2011-11-15 Microsoft Corporation Estimating sample-domain distortion in the transform domain with rounding compensation
US8155195B2 (en) * 2006-04-07 2012-04-10 Microsoft Corporation Switching distortion metrics during motion estimation
US8503536B2 (en) 2006-04-07 2013-08-06 Microsoft Corporation Quantization adjustments for DC shift artifacts
US7995649B2 (en) 2006-04-07 2011-08-09 Microsoft Corporation Quantization adjustment based on texture level
US8494052B2 (en) * 2006-04-07 2013-07-23 Microsoft Corporation Dynamic selection of motion estimation search ranges and extended motion vector ranges
US8130828B2 (en) 2006-04-07 2012-03-06 Microsoft Corporation Adjusting quantization to preserve non-zero AC coefficients
US7974340B2 (en) 2006-04-07 2011-07-05 Microsoft Corporation Adaptive B-picture quantization control
US8880571B2 (en) * 2006-05-05 2014-11-04 Microsoft Corporation High dynamic range data format conversions for digital media
US8711925B2 (en) 2006-05-05 2014-04-29 Microsoft Corporation Flexible quantization
US20070268964A1 (en) * 2006-05-22 2007-11-22 Microsoft Corporation Unit co-location-based motion estimation
US8660380B2 (en) * 2006-08-25 2014-02-25 Nvidia Corporation Method and system for performing two-dimensional transform on data value array with reduced power consumption
US8238424B2 (en) 2007-02-09 2012-08-07 Microsoft Corporation Complexity-based adaptive preprocessing for multiple-pass video compression
US8054886B2 (en) 2007-02-21 2011-11-08 Microsoft Corporation Signaling and use of chroma sample positioning information
US8107571B2 (en) * 2007-03-20 2012-01-31 Microsoft Corporation Parameterized filters and signaling techniques
US8498335B2 (en) 2007-03-26 2013-07-30 Microsoft Corporation Adaptive deadzone size adjustment in quantization
US8243797B2 (en) 2007-03-30 2012-08-14 Microsoft Corporation Regions of interest for quality adjustments
US8442337B2 (en) 2007-04-18 2013-05-14 Microsoft Corporation Encoding adjustments for animation content
US8488676B2 (en) * 2007-05-14 2013-07-16 Himax Technologies Limited Motion estimation method
US20080291209A1 (en) * 2007-05-25 2008-11-27 Nvidia Corporation Encoding Multi-media Signals
US8756482B2 (en) * 2007-05-25 2014-06-17 Nvidia Corporation Efficient encoding/decoding of a sequence of data frames
US8331438B2 (en) 2007-06-05 2012-12-11 Microsoft Corporation Adaptive selection of picture-level quantization parameters for predicted video pictures
US9118927B2 (en) * 2007-06-13 2015-08-25 Nvidia Corporation Sub-pixel interpolation and its application in motion compensated encoding of a video signal
US8873625B2 (en) * 2007-07-18 2014-10-28 Nvidia Corporation Enhanced compression in representing non-frame-edge blocks of image frames
US8144780B2 (en) * 2007-09-24 2012-03-27 Microsoft Corporation Detecting visual gestural patterns
US8953673B2 (en) * 2008-02-29 2015-02-10 Microsoft Corporation Scalable video coding and decoding with sample bit depth and chroma high-pass residual layers
US8711948B2 (en) * 2008-03-21 2014-04-29 Microsoft Corporation Motion-compensated prediction of inter-layer residuals
US8189933B2 (en) 2008-03-31 2012-05-29 Microsoft Corporation Classifying and controlling encoding quality for textured, dark smooth and smooth video content
WO2009131382A2 (en) * 2008-04-22 2009-10-29 Core Logic Inc. Apparatus and method for correcting moving image wavering
US8897359B2 (en) 2008-06-03 2014-11-25 Microsoft Corporation Adaptive quantization for enhancement layer video coding
US9571856B2 (en) 2008-08-25 2017-02-14 Microsoft Technology Licensing, Llc Conversion operations in scalable video encoding and decoding
US8213503B2 (en) 2008-09-05 2012-07-03 Microsoft Corporation Skip modes for inter-layer residual video coding and decoding
US8311111B2 (en) 2008-09-11 2012-11-13 Google Inc. System and method for decoding using parallel processing
US8325796B2 (en) 2008-09-11 2012-12-04 Google Inc. System and method for video coding using adaptive segmentation
US8326075B2 (en) 2008-09-11 2012-12-04 Google Inc. System and method for video encoding using adaptive loop filter
JP5206273B2 (ja) * 2008-09-25 2013-06-12 沖電気工業株式会社 画像符号化装置、画像符号化システム
US8666181B2 (en) * 2008-12-10 2014-03-04 Nvidia Corporation Adaptive multiple engine image motion detection system and method
US8498493B1 (en) 2009-06-02 2013-07-30 Imagination Technologies Limited Directional cross hair search system and method for determining a preferred motion vector
US8811473B2 (en) * 2009-07-07 2014-08-19 Panasonic Corporation Moving picture decoding device, moving picture decoding method, moving picture decoding system, integrated circuit, and program
US8179474B2 (en) * 2009-09-02 2012-05-15 Sony Corporation Fast iterative motion estimation method on gradually changing images
US8488007B2 (en) * 2010-01-19 2013-07-16 Sony Corporation Method to estimate segmented motion
US8285079B2 (en) * 2010-03-19 2012-10-09 Sony Corporation Method for highly accurate estimation of motion using phase correlation
WO2012048055A1 (en) 2010-10-05 2012-04-12 General Instrument Corporation Coding and decoding utilizing adaptive context model selection with zigzag scan
US8938001B1 (en) 2011-04-05 2015-01-20 Google Inc. Apparatus and method for coding using combinations
US8781004B1 (en) 2011-04-07 2014-07-15 Google Inc. System and method for encoding video using variable loop filter
US9154799B2 (en) 2011-04-07 2015-10-06 Google Inc. Encoding and decoding motion via image segmentation
US8780996B2 (en) 2011-04-07 2014-07-15 Google, Inc. System and method for encoding and decoding video data
US8780971B1 (en) 2011-04-07 2014-07-15 Google, Inc. System and method of encoding using selectable loop filters
BR122021004576B1 (pt) 2011-06-28 2022-07-26 Samsung Electronics Co., Ltd Aparelho de decodificação de vídeo
CN104918055B (zh) * 2011-06-28 2019-07-26 三星电子株式会社 用于使用帧内预测进行图像编码和解码的方法和设备
US8891616B1 (en) 2011-07-27 2014-11-18 Google Inc. Method and apparatus for entropy encoding based on encoding cost
PL3454561T3 (pl) * 2011-09-14 2020-05-18 Samsung Electronics Co., Ltd. Sposób i urządzenie do kodowania jednostki predykcji (pu) w oparciu o jej rozmiar i odpowiadające urządzenie do dekodowania
US8885706B2 (en) 2011-09-16 2014-11-11 Google Inc. Apparatus and methodology for a video codec system with noise reduction capability
TWI493977B (zh) * 2011-09-20 2015-07-21 Hannstar Display Corp 影像搜尋模組及其方法
US9247257B1 (en) 2011-11-30 2016-01-26 Google Inc. Segmentation based entropy encoding and decoding
US9262670B2 (en) 2012-02-10 2016-02-16 Google Inc. Adaptive region of interest
US9131073B1 (en) 2012-03-02 2015-09-08 Google Inc. Motion estimation aided noise reduction
US11039138B1 (en) 2012-03-08 2021-06-15 Google Llc Adaptive coding of prediction modes using probability distributions
US9774856B1 (en) 2012-07-02 2017-09-26 Google Inc. Adaptive stochastic entropy coding
US9344729B1 (en) 2012-07-11 2016-05-17 Google Inc. Selective prediction signal filtering
US9509998B1 (en) 2013-04-04 2016-11-29 Google Inc. Conditional predictive multi-symbol run-length coding
US11425395B2 (en) 2013-08-20 2022-08-23 Google Llc Encoding and decoding using tiling
US9392288B2 (en) 2013-10-17 2016-07-12 Google Inc. Video coding using scatter-based scan tables
US9179151B2 (en) 2013-10-18 2015-11-03 Google Inc. Spatial proximity context entropy coding
US9942560B2 (en) 2014-01-08 2018-04-10 Microsoft Technology Licensing, Llc Encoding screen capture data
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
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
US9621917B2 (en) 2014-03-10 2017-04-11 Euclid Discoveries, Llc Continuous block tracking for temporal prediction in video encoding
CN105338281B (zh) * 2014-06-27 2018-07-31 阿里巴巴集团控股有限公司 一种视频显示方法和装置
US10102613B2 (en) 2014-09-25 2018-10-16 Google Llc Frequency-domain denoising
TWI613914B (zh) * 2016-11-30 2018-02-01 聖約翰科技大學 影音傳送系統及其影音接收系統
CN112738529B (zh) * 2020-12-23 2023-07-07 北京百度网讯科技有限公司 帧间预测方法、装置、设备、存储介质以及程序产品
CN115529459B (zh) * 2022-10-10 2024-02-02 格兰菲智能科技有限公司 中心点搜索方法、装置、计算机设备、存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0752953B2 (ja) * 1987-02-25 1995-06-05 日本電信電話株式会社 動き補償符号化における動きベクトル評価方法
JPS63267080A (ja) * 1987-04-24 1988-11-04 Nippon Telegr & Teleph Corp <Ntt> 映像信号伝送方式
US5379351A (en) 1992-02-19 1995-01-03 Integrated Information Technology, Inc. Video compression/decompression processing and processors
JP2521145B2 (ja) 1989-02-20 1996-07-31 日本ビクター株式会社 動き補償予測符号化復号化方式
ATE162037T1 (de) 1991-05-24 1998-01-15 British Broadcasting Corp Videobildverarbeitung
US5428396A (en) 1991-08-03 1995-06-27 Sony Corporation Variable length coding/decoding method for motion vectors
DE69217150T2 (de) * 1991-09-30 1997-07-17 Philips Electronics Nv Bewegungsvektorschätzung, Bewegungsbildkodierung- und -speicherung
JPH06233279A (ja) * 1993-02-01 1994-08-19 Matsushita Electric Ind Co Ltd 動き補償符号化装置
US5592226A (en) 1994-01-26 1997-01-07 Btg Usa Inc. Method and apparatus for video data compression using temporally adaptive motion interpolation
US5684538A (en) * 1994-08-18 1997-11-04 Hitachi, Ltd. System and method for performing video coding/decoding using motion compensation
EP0731614B1 (de) 1995-03-10 2002-02-06 Kabushiki Kaisha Toshiba Bildkodierungs-/-dekodierungsvorrichtung
KR0171118B1 (ko) * 1995-03-20 1999-03-20 배순훈 비디오신호 부호화 장치
DE19521992A1 (de) * 1995-06-20 1997-01-02 Bosch Gmbh Robert Verfahren zur Erzeugung eines Stroms von Bilddaten für die Übertragung eines Bildes und Verfahren zur Auswertung eines Stroms von Bilddaten
US5764805A (en) 1995-10-25 1998-06-09 David Sarnoff Research Center, Inc. Low bit rate video encoder using overlapping block motion compensation and zerotree wavelet coding
US5768537A (en) * 1996-02-22 1998-06-16 International Business Machines Corporation Scalable MPEG2 compliant video encoder
US5847776A (en) 1996-06-24 1998-12-08 Vdonet Corporation Ltd. Method for entropy constrained motion estimation and coding of motion vectors with increased search range
EP0825778A3 (de) 1996-08-22 1998-06-10 Cirrus Logic, Inc. Verfahren zur Bewegungsschätzung
JP3774954B2 (ja) * 1996-10-30 2006-05-17 株式会社日立製作所 動画像の符号化方法
US6195389B1 (en) * 1998-04-16 2001-02-27 Scientific-Atlanta, Inc. Motion estimation system and methods

Also Published As

Publication number Publication date
JP4662636B2 (ja) 2011-03-30
ATE460047T1 (de) 2010-03-15
DE69942107D1 (de) 2010-04-15
JP2002532026A (ja) 2002-09-24
WO2000033580A1 (en) 2000-06-08
EP1147668B1 (de) 2005-01-12
DE69923232D1 (de) 2005-02-17
EP1389016B1 (de) 2010-03-03
ATE287180T1 (de) 2005-01-15
US6418166B1 (en) 2002-07-09
EP1147668A1 (de) 2001-10-24
EP1389016A2 (de) 2004-02-11
EP1389016A3 (de) 2006-05-10

Similar Documents

Publication Publication Date Title
DE69923232T2 (de) Verbesserte bewegungsschätzung und blockübereinstimmungsmuster
DE69937462T2 (de) Effiziente macroblockheaderkodierung zur videokompression
DE69839100T2 (de) Verbesserte Videokodierung unter Verwendung von adaptiven Blockparametern für kodierte/unkodierte Blöcke
DE19704439C2 (de) Verfahren und Vorrichtung zur Bewegungsschätzung in einem digitalen Videocodierer unter Verwendung von Trajektorien
DE19758761B4 (de) Verfahren zum Intrakodieren eines von einer Pixelmatrix gebildeten Bildes
DE60220106T2 (de) Verfahren und Vorrichtung zur Reduzierung von Störungen in dekodierten Bildern mit Nachfilterung
DE602004008763T2 (de) Videotranskodierung
DE19734882C2 (de) Verfahren zum Kodieren von Bewegungsvektoren bei Filmaufnahmen
DE69920429T2 (de) Bewegungsschätzungssystem und -verfahren
US6618507B1 (en) Methods of feature extraction of video sequences
US6751350B2 (en) Mosaic generation and sprite-based coding with automatic foreground and background separation
DE69722637T2 (de) Bewegungsschätzungssystem und -verfahren für einen videokodierer
US7764738B2 (en) Adaptive motion estimation and mode decision apparatus and method for H.264 video codec
KR100226722B1 (ko) 동영상 움직임 벡터 추정 방법
DE69913990T2 (de) System zum editieren komprimierter bildsequenzen
DE60309375T2 (de) Parametrisierung für verlauf-kompensation
DE69912084T2 (de) Verfahren zur Erkennung von Szenenüberblendungen zur Indexierung von Videosequenzen
DE19825042A1 (de) Verfahren zur Bewegungsvektorcodierung bei MPEG-4
DE102004021854A1 (de) Vorrichtung für sowohl eine Block-Matching Motion Compensation als auch eine Global Motion Compensation sowie Verfahren hierfür
DE19743202A1 (de) Verfahren und Vorrichtung zum Codieren eines Bewegungsvektors
DE60207756T2 (de) Bilddatenzugriff
EP0985317B1 (de) Verfahren zur codierung und decodierung eines digitalisierten bildes
DE19524872C1 (de) Verfahren und Anordnung zur Codierung und Decodierung von einem Videodatenstrom für alle Bildelemente des Videodatenstroms
Sudhakar et al. ASABSA: adaptive shape assisted block search algorithm and fuzzy holoentropy-enabled cost function for motion vector computation
DE602004007682T2 (de) Leistungsoptimiertes colokalisiertes bewegungschätzverfahren

Legal Events

Date Code Title Description
8364 No opposition during term of opposition