DE69524235T2 - Verfahren und vorrichtung zur global-zu-lokal-block-bewegungsschätzung - Google Patents

Verfahren und vorrichtung zur global-zu-lokal-block-bewegungsschätzung

Info

Publication number
DE69524235T2
DE69524235T2 DE69524235T DE69524235T DE69524235T2 DE 69524235 T2 DE69524235 T2 DE 69524235T2 DE 69524235 T DE69524235 T DE 69524235T DE 69524235 T DE69524235 T DE 69524235T DE 69524235 T2 DE69524235 T2 DE 69524235T2
Authority
DE
Germany
Prior art keywords
block
metablock
frame
motion vector
estimated motion
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
DE69524235T
Other languages
English (en)
Other versions
DE69524235D1 (de
Inventor
John Ju
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.)
Sarnoff Corp
Original Assignee
Sarnoff 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 Sarnoff Corp filed Critical Sarnoff Corp
Publication of DE69524235D1 publication Critical patent/DE69524235D1/de
Application granted granted Critical
Publication of DE69524235T2 publication Critical patent/DE69524235T2/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
    • 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/53Multi-resolution motion estimation; Hierarchical motion estimation
    • 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/527Global motion vector estimation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Analysis (AREA)

Description

  • Die Erfindung bezieht sich allgemein auf ein System zum Codieren von Bildsequenzen und vor allem auf eine Vorrichtung und ein einhergehendes Verfahren zur Verringerung der rechnerischen Komplexität bei der Bestimmung von Bewegungsvektoren für eine blockbasierte Bewegungsabschätzung.
  • Eine Bildsequenz wie z. B. eine Videobildsequenz weist normalerweise eine Sequenz von Einzelbildern auf. Die Wiedergabe eines Videos, welches bewegende Objekte enthält, erfordert normalenrveise eine Bildgeschwindigkeit von dreißig Einzelbildern pro Sekunde, wobei jedes Einzelbild möglicherweise Informationen von mehr als einem Megabytes enthält. Folglich erfordert die Übertragung oder Speicherung entweder eine große Menge Übertragungsbandbreite oder Speicherkapazität. Um die benötigte Übertragungsbandbreite oder Speicherkapazität zu reduzieren, wird die Einzelbildsequenz komprimiert, so daß redundante Informationen innerhalb der Sequenz nicht gespeichert oder übertragen werden. Als solche ist die Bildsequenzkompression durch verschiedene Codierungstechniken in den vergangenen Jahren das Thema einer Vielzahl von Forschungsarbeiten gewesen. Fernsehen, Videokonferenz und CD-ROM-Archivierung sind Anwendungen, die aus der Videosequenzcodierung einen Nutzen ziehen können.
  • Um eine Bildfolge zu codieren, spielen allgemein Informationen, die die Bewegung des Objekts in einer Szene von einem Einzelbild zum nächsten betreffen, eine wichtige Rolle beim Codierungsprozeß. Wegen der hohen Redundanz, die innerhalb der meisten Bildfolgen zwischen aufeinanderfolgenden Einzelbildern existiert, kann durch die Benutzung einer Technik, die als Bewegungsabschätzung bekannt ist, eine erhebliche Datenkompression erreicht werden. Wenn in einer Sequenz keine Bewegung vorliegt, ist z. B. jedes Einzelbild in einer Sequenz identisch mit dem vorhergehenden Einzelbild in dieser Sequenz. Folglich müssen die redundanten Einzelbilder nicht gespeichert oder übertragen werden. Insoweit kann z. B. ein Empfänger einfach ein zuvor erhaltenes Einzelbild wiederholen, um eine Sequenz identischer Einzelbilder wiederzugeben, ohne unbedingt jedes Einzelbild in der Sequenz zu empfangen. Dieser Fall keiner Bewegung ist der einfachste Fall, in dem die Redundanz zwischen aufeinanderfolgenden Einzelbildern einer Videosequenz genutzt werden kann, um durch die Verwendung vorhergehender Einzelbilder ein neues Einzelbild vorherzusagen.
  • Normalerweise ist jedoch zumindest etwas Bewegung in einer Bildsequenz von einem Einzelbild zum nächsten. In einer Sequenz kann ein aktuelles Einzelbild durch die Verwendung eines unmittelbar vorhergehenden Einzelbildes und der Information rekonstruiert werden, die den Unterschied zwischen dem aktuellen und dem unmittelbar vorhergehenden Einzelbild darstellt. In einem einfachen Bildsequenzübertragungssystem wird z. B. am Sender ein aktuelles Einzelbild mit einem vorhergehenden Einzelbild verglichen, um die Bewegungsinformation zu bestimmen, das heißt den Unterschied zwischen den beiden Einzelbildern. Danach überträgt der Sender das vorhergehende Einzelbild und die Bewegungsinformation zu einem Empfänger. Am Empfänger wird das aktuelle Einzelbild durch Kombination des vorhergehenden Einzelbildes mit der Bewegungsinformation rekonstruiert. Folglich wird nur ein Einzelbild und die Unterschiedsinformation übertragen und empfangen und nicht zwei vollständige Einzelbilder. Um die erforderliche Bandbreite weiter zu verringern, kann das Bezugseinzelbild (z. B. das vorhergehende Einzelbild) durch die Verwendung verschiedener Unterabtasttechniken komprimiert werden. In Anwendungen wie Videokonferenz, Videotelefonie, und Digitalfernsehen ist die Bewegungsinformation der Schlüssel zur Datenkompression geworden. Die Extraktion der Bewegungsinformation aus einer Einzelbildsequenz ist jedoch selbst rechenintensiv, wodurch die Hardware, die dafür ausgelegt ist, die Bewegungsabschätzungsaufgabe durchzuführen, einer starken Belastung ausgesetzt ist.
  • Viele Systeme bestimmen die Bewegungsinformation, indem sie einen sogenannten blockbasierten Ansatz verwenden. Für Beispiele der verschiedenen blockbasierten Ansätze siehe US- Patente 4,924,310, veröffentlicht am 8. Mai 1990, 5,105,271, veröffentlicht am 14. April 1992 und 5,210,605, veröffentlicht am 11. Mai 1993. In einem einfachen blockbasierten Ansatz wird das aktuelle Einzelbild in eine Anzahl von Pixelblöcken (nachfolgend als aktuelle Blöcke bezeichnet) aufgeteilt. Für jeden dieser aktuellen Blöcke wird innerhalb eines ausgewählten Suchbereichs im vorhergehenden Einzelbild eine Suche nach einem Pixelblock durchgeführt, der "am besten" zum aktuellen Block paßt. Diese Suche wird typischerweise erreicht durch wiederholtes Vergleichen eines ausgewählten aktuellen Blocks mit ähnlich großen Pixelblöcken im ausgewählten Suchbereich des vorhergehenden Einzelbildes. Ist einmal eine Blockübereinstimmung gefunden worden; legt der Ort des übereinstimmenden Blocks im Suchbereich in dem vorhergehenden Einzelbild relativ zum Ort des aktuellen Blocks innerhalb des aktuellen Einzelbildes einen Bewegungsvektor fest. Dieser Ansatz, das heißt jeden aktuellen Block mit einem ganzen ausgewählten Suchbereich zu vergleichen, ist als ein vollständiger Suchansatz oder als der erschöpfende Suchansatz bekannt. Die Bestimmung eines Bewegungsvektors durch den erschöpfenden Suchansatz ist rechenintensiv. Als solche neigen diese Systeme dazu, relativ langsam in der Verarbeitung der Einzelbilder sowie teuer in der Herstellung zu sein.
  • Folglich gibt es auf diesem Gebiet einen Bedarf für eine Vorrichtung und ein einhergehendes Verfahren der Blockbewegungsabschätzung, welches eine geringere Rechenintensität besitzt als solche, die gegenwärtig im Stand der Technik existieren.
  • Die vorliegende Erfindung überwindet die Nachteile des Standes der Technik, indem sie eine globale bis lokale Blockbewegungsabschätzungseinrichtung und ein einhergehendes Verfahren zur Bestimmung von Bewegungsvektoren in einer recheneffizienten Art und Weise zur Verfügung stellt. Speziell verwendet die vorliegende Erfindung einen Zwei-Schritt-Prozeß, in welchem erstens eine Mehrzahl von abgeschätzten Bewegungsvektoren erzeugt wird und zweitens die abgeschätzten Bewegungsvektoren zu endgültigen Bewegungsvektoren verfeinert werden. Der erste Schritt wird durch Filterung und Dezimierung einer Sequenz von Einzelbildern erreicht, so daß die Vorrichtung eine Sequenz von Einzelbildern mit niedriger Auflösung erzeugt. Jedes Einzelbild niedriger Auflösung ist in eine Mehrzahl von Pixelblöcken unterteilt. Durch Verwendung der aufeinanderfolgenden Einzelbilder mit niedriger Auflösung führt die Vorrichtung eine erschöpfende Suche (nachfolgend als globale Suche bezeichnet) durch, um abgeschätzte Bewegungsvektoren zu erzeugen.
  • Insbesondere definiert die Vorrichtung innerhalb der beiden ausgewählten Einzelbilder mit niedriger Auflösung (ein aktuelles Einzelbild und ein vorhergehendes Einzelbild) eine Mehrzahl von aktuellen Pixelblöcken und eine Mehrzahl von vorhergehenden Pixelblöcken. Die vorhergehenden Blöcke sind einzelne Suchbereiche, die mehr Pixel als die aktuellen Blöcke aufweisen. Die Vorrichtung wählt zur Verarbeitung einen aktuellen und einen vorhergehenden Block aus. Durch Verwendung einer erschöpfenden Suchstrategie wird der ausgewählte aktuelle Block dann mit dem aktuellen Suchbereich verglichen, bis ein Pixelblock innerhalb des Suchbereichs gefunden ist, der im wesentlichen mit dem aktuellen Block übereinstimmt. Der Abstand zwischen dem Ort des übereinstimmenden Blocks im vorhergehenden Einzelbild und dem Ort des aktuellen Blocks im aktuellen Einzelbild legt einen abgeschätzten Bewegungsvektor fest. Dieser Suchprozeß wiederholt sich für jeden einzelnen aktuellen Block, bis die Vorrichtung für jeden aktuellen Block einen abgeschätzten Bewegungsvektor bestimmt. Da die Suche auf Bildern reduzierter (niedriger) Auflösung erfolgt, wird die Suche verhältnismäßig schnell erledigt.
  • Sind die abgeschätzten Bewegungsvektoren einmal berechnet, wählt die Vorrichtung dann vorhergehende und aktuelle Einzelbilder in der voll aufgelösten Einzelbildsequenz aus, die den Einzelbildern niedriger Auflösung entsprechen, die verwendet worden sind, um den Bewegungsvektor abzuschätzen. Indem sie diese aufeinanderfolgenden Einzelbilder mit voller Auflösung und die abgeschätzten Bewegungsvektoren verwendet, führt die Vorrichtung eine modifizierte erschöpfende Suche aus (nachfolgend als lokale Suche bezeichnet), um die endgültigen Bewegungsvektoren zu erzeugen. Speziell innerhalb dieser voll aufgelösten Einzelbilder unterteilt die Vorrichtung die Einzelbilder in vorhergehende Blöcke und aktuelle Pixelblöcke. Diese Blöcke innerhalb der voll aufgelösten Einzelbilder entsprechen denselben Blöcken innerhalb der niedrig aufgelösten Einzelbilder. Insoweit definiert der vorhergehende Block einen Suchbereich, der eine Größe besitzt, die größer ist als der aktuelle Block. Die Vorrichtung sucht den Suchbereich ab, um eine Übereinstimmung zwischen dem aktuellen Block und dem Suchbereich zu bestimmen. Der abgeschätzte Bewegungsvektor für einen gegebenen aktuellen Block mit niedriger Auflösung stellt jedoch einen anfänglichen Suchstartbereich für den aktuellen Block mit voller Auflösung innerhalb des Suchbereichs mit voller Auflösung bereit. Auf diese Weise wird eine Übereinstimmung schnell gefunden, ohne eine erschöpfende Suche innerhalb des Suchbereichs mit voller Auflösung durchzuführen.
  • Um die Rauschunempfindlichkeit der globalen Suche zu verbessern, werden die aktuellen Blöcke mit niedriger Auflösung als Metablöcke gebildet. Diese Metablöcke werden definiert durch eine Gruppe angrenzender aktueller Blöcke mit niedriger Auflösung. Normalerweise werden die Metablöcke in Subblöcke unterteilt, wobei jeder Subblock eine Mehrzahl aktueller Blöcke enthält. Der Metablock wird bei der globalen Suche anstelle eines individuellen aktuellen Blocks verwendet. Wenn eine Übereinstimmung für den Metablock mit Pixeln innerhalb des Suchbereichs mit niedriger Auflösung gefunden wird, wird sowohl ein Bewegungsvektor für jeden Subblock innerhalb des Metablocks als auch der Metablock als ganzer berechnet. Die Vorrichtung weist jedem der aktuellen Blöcke, die den Metablock aufweisen, einen abgeschätzten Bewegungsvektor zu. Diese Bewegungsvektoren werden entweder aus dem Bewegungsvektor des Subblocks, der den aktuellen Block enthält, aus dem Bewegungsvektor, der zu dem Metablock als ganzem gehört, oder aus einer Kombination aus den Subblock- und Metablockbewegungsvektoren ausgewählt. Sind abgeschätzte Bewegungsvektoren einmal den aktuellen Blöcken zugewiesen, wird eine lokale Suche, wie oben diskutiert, vervollständigt.
  • Die Lehre der vorliegenden Erfindung versteht man ohne weiteres beim Lesen der folgenden detaillierten Beschreibung in Verbindung mit den anliegenden Zeichnungen, in denen:
  • Fig. 1 ein Blockdiagramm des globalen bis lokalen Blockbewegungsabschätzungssystems der Erfindung ist;
  • Fig. 2 ein Flußdiagramm darstellt, welches den Betrieb des in Fig. 1 dargestellten Systems veranschaulicht;
  • Fig. 3 eine Darstellung einer Bildersequenz ist, die vom Bewegungsabschätzungssystem aus Fig. 1 verarbeitet worden ist;
  • Fig. 4 und 5 Darstellungen der Pixelmetablöcke sind, welche in einer alternativen Ausführungsform des Bewegungsabschätzungssystems der Fig. 1 verarbeitet worden sind;
  • Fig. 6 eine Darstellung einer Bildersequenz ist, die in einer alternativen Ausführungsform des Bewegungsabschätzungssystems aus Fig. 1 verarbeitet worden ist; und
  • Fig. 7 eine Darstellung eines systolischen Arrays für die Verwendung bei der Bestimmung der Bewegungsvektorinformation von Subblöcken innerhalb der Metablöcke aus Fig. 5 innerhalb einer alternativen Ausführungsform des Blockbewegungserkennungssystems aus Fig. 1 ist.
  • Um das Verständnis zu erleichtern, sind - soweit möglich - identische Bezugszahlen verwendet worden, um identische Elemente zu benennen, die den Figuren gemeinsam sind.
  • Fig. 1 zeigt ein Blockdiagramm einer bevorzugten Ausführungsform der vorliegenden Erfindung. Die vorliegende Erfindung, ein globales bis lokales Bewegungsabschätzungssystem 100 enthält einen Pyramidenprozessor 102, ein globales Suchsystem 104 und ein lokales Suchsystem 106. Insbesondere bildet eine Sequenz von Einzelbildern an Leitung 108 eine Eingangsgröße zum Bewegungsabschätzungssystem 100. Diese Bildsequenz ist sowohl ein Eingang zum Pyramidenprozessor 102 als auch zum lokalen Suchsystem 106. Im allgemeinen filtert (Filter 112) der Pyramidenprozessor 102 und dezimiert (Bilddezimierer 114) jedes Einzelbild sowie die Einzelbilder am Eingang eintreffen, um eine Sequenz auflösungsreduzierter Einzelbilder zu erzeugen. Das globale Suchsystem 104 analysiert diese auflösungsreduzierten Einzelbilder, um eine Mehrzahl von abgeschätzten Bewegungsvektoren zu erzeugen. Zuletzt analysiert das lokale Suchsystem 106 die Eingangssequenz der Einzelbilder mit Hilfe der abgeschätzten Bewegungsvektoren, um eine Mehrzahl von endgültigen Bewegungsvektoren zu erzeugen. Diese endgültigen Bewegungsvektoren können dann von einem Videoverarbeitungssystem (nicht dargestellt) verwendet werden, um die Videoinformation innerhalb der Einzelbilder zu komprimieren.
  • Genauer gesagt ist der Filter 112 innerhalb des Pyramidenprozessors 102 normalerweise ein Gauß-Filter, der gewichtete Summenoperationen ausführt, die nebeneinanderliegende Pixelwerte innerhalb eines Einzelbildes verwenden. Das gefilterte Pixel ist eine normalisierte gewichtete Summe eines Eingangspixels mit abnehmenden Beiträgen von zunehmend entfernten benachbarten Pixeln. Der Bilddezimierer 114 ist eine Standardpixelsubsignalabtastschaltung. Die Ausgabe des Pyramidenprozessors ist eine Sequenz von Einzelbildern, bei der jedes Einzelbild eine geringere Auflösung als sein entsprechendes Eingangseinxelbild besitzt. Beispielhaft ist der Dezimierer 114 ein Achtfach-Dezimierer, der die Anzahl der Pixel in einem gegebenen quadratischen Bereich um 1/64 verringert. Nachfolgend werden die Einzelbilder, die vom Pyramidenprozessor 102 erzeugt werden, als Einzelbilder mit niedriger Auflösung bezeichnet.
  • Das globale Suchsystem 104 vergleicht zwei aufeinanderfolgende Einzelbilder mit niedriger Auflösung, um abgeschätzte Bewegungsvektoren für die Bilder mit niedriger Auflösung zu bestimmen. Insbesondere werden die Einzelbilder mit niedriger Auflösung in Pixelblöcke unterteilt, so daß ein aktuelles Einzelbild eine Mehrzahl aktueller Blöcke enthält und ein vorhergehendes Einzelbild eine Mehrzahl von vorhergehenden Blöcken enthält. Die vorhergehenden Blöcke enthalten eine größere Zahl von Pixeln als der aktuelle Block, das heißt jeder aktuelle Block ist 2 Pixel mal 2 Pixel und jeder vorhergehende Block ist 32 Pixel mal 32 Pixel groß. Jeder aktuelle Block wird wiederholt mit einem ausgewählten vorhergehenden Block vergleichen, bis eine Übereinstimmung gefunden wird, das heißt, 4 Pixel in dem aktuellen Block werden mit 4 Pixeln von 1024 Pixeln im vorhergehenden Block verglichen, dann werden die 4 aktuellen Blockpixel bewegt und wieder verglichen, usw. Als solches führt das System innerhalb des Suchbereichs niedriger Auflösung eine erschöpfende Suche durch, die nachfolgend als globale Suche bezeichnet wird. Die Blöcke, welche den geringsten berechneten Fehler erzeugen, sind die passenden. Alternativ nimmt, wenn der berechnete Fehler kleiner als eine vordefinierte Fehlerschwelle ist, die Routine an, daß eine Übereinstimmung gefunden ist. Wenn eine Übereinstimmung gefunden ist, definiert die Differenz zwischen der Lage des aktuellen Blocks im aktuellen Einzelbild niedriger Auflösung und der Lage der Pixelblöcke, die mit dem aktuellen Block innerhalb des vorhergehenden Blocks übereinstimmen, einen abgeschätzten Bewegungsvektor. Dieser Prozeß wird für jeden aktuellen Block wiederholt, bis ein Bewegungsvektor für jeden aktuellen Block im aktuellen Einzelbild mit niedriger Auflösung berechnet ist. Diese abgeschätzten Bewegungsvektoren werden über Leitung 110 an das lokale Suchsystem gesendet.
  • Das lokale Suchsystem 106 führt eine modifizierte erschöpfende Suche (nachfolgend als eine lokale Suche bezeichnet) durch, wobei es Pixel innerhalb zweier nachfolgender voll aufgelöster Einzelbilder in der Eingangseinzelbildsequenz verwendet. Diese beiden Einzelbilder entsprechen den beiden Einzelbildern, die vorher vom Pyramidenprozessor 102 dezimiert und vom globalen Suchsystem 104 verglichen worden sind. Das lokale Suchsystem unterteilt ein aktuelles Einzelbild und vorhergehende Einzelbilder mit voller Auflösung in einer Anzahl von aktuellen Pixelblöcken und eine Anzahl vorhergehender Pixelblöcke. Der aktuelle Block enthält weniger Pixel als der vorhergehende Block, das heißt, jeder aktuelle Block enthält einen 16 Pixel mal 16 Pixel großen Bereich und jeder vorhergehende Block enthält einen 256 Pixel mal 256 Pixel großen Bereich. Das lokale Suchsystem beginnt seinen Vergleich, wobei es die abgeschätzten Bewegungsvektoren verwendet, die vom globalen Suchsystem geliefert worden sind. Als solcher beginnt der Vergleich innerhalb des Einzelbildes voller Auflösung an einem Ort, der den aktuellen Block innerhalb eines entsprechenden vorhergehenden Blocks plaziert, der der "besten" Übereinstimmungslage sehr nahe ist. Der. aktuelle Block benötigt typischerweise nur einen kleinen Bewegungsbeitrag, bis eine Übereinstimmung gefunden ist. Durch die Verwendung der abgeschätzten Bewegungsvektoren ist die lokale Suche folglich signifikant schneller als eine konventionelle erschöpfende Suche. Die Systemausgabe ist eine Sequenz endgültiger Bewegungsvektoren, die die Bewegung von einem Einzelbild zum nächsten in der Eingangseinzelbildsequenz darstellen. Stattdessen kann das System den übereinstimmenden Pixelblock innerhalb des vorhergehenden Einzelbildes voller Auflösung ausgeben, so daß diese übereinstimmenden Pixel von einem Bildverarbeitungssystem weiterbearbeitet werden können.
  • Fig. 2 stellt ein Flußdiagramm einer Routine dar, welche die Funktionsweise des in Fig. 1 gezeigten Systems veranschaulicht. Fig. 3 zeigt sowohl eine Darstellung der aktuellen als auch der vorhergehenden Einzelbilder mit voller und niedriger Auflösung. Um die Funktionsweise des Arbeitsverfahrens der vorliegenden Erfindung am besten zu verstehen, sollte der Leser gleichzeitig sowohl Fig. 2 als auch Fig. 3 heranziehen.
  • Beim Schritt 200 wird die Einzelbildsequenz mit voller Auflösung in das System eingegeben. In Fig. 3 ist die Einzelbildsequenz mit voller Auflösung durch die Einzelbilder 300 (das vorhergehende Einzelbild) und 302 (das aktuelle Einzelbild) dargestellt. Beim Schritt 202 in Fig. 2 wird jedes Einzelbild normalerweise von einem Gauß-Filter gefiltert. Danach, bei Schritt 204, wird jedes Einzelbild mit dezimiert, um Einzelbilder mit niedriger Auflösung zu erzeugen. Diese Einzelbilder mit niedriger Auflösung sind dargestellt als Einzelbilder 304 (vorhergehendes Einzelbild mit niedriger Auflösung) und 306 (aktuelles Einzelbild mit niedriger Auflösung). Bei Schritt 206 wählt die Routine ein aktuelles Einzelbild mit niedriger Auflösung 308 und ein vorhergehendes Einzelbild mit niedriger Auflösung 304 aus. Bei Schritt 208 werden die ausgewählten Einzelbilder in Pixelblöcke unterteilt, wodurch aktuelle und vorhergehende Blöcke definiert werden. Bei Schritt 210 wählt die Routine einen aktuellen Block 308 und einen entsprechenden vorhergehenden Block 310 aus. Der entsprechende vorhergehende Block definiert einen Suchbereich, innerhalb welchem eine Übereinstimmung mit dem aktuellen Block gesucht wird. Beim Schritt 212 werden die aktuellen und vorhergehenden Blöcke verglichen (in Fig. 3 durch den Pfeil 312 dargestellt). Beim Schritt 214 fragt die Routine ab, ob eine Übereinstimmung gefunden ist. Wenn die Antwort auf die Anfrage bei Schritt 214 negativ ist, fährt die Routine entlang des NEIN-Pfades bis Schritt 216 fort. Bei Schritt 216 ordnet die Routine den aktuellen Block innerhalb des vorhergehenden Blocks neu an und kehrt zu Schritt 212 zurück, wo ein anderer Vergleich geschaffen wird. Die Routine macht eine Schleife durch Schritt 216, bis bei Schritt 214 eine wesentliche Übereinstimmung gefunden ist. Ein anschauliches Beispiel einer Technik, um eine Übereinstimmungsentscheidung zu treffen, berechnet den minimalen quadratischen Fehler oder den mittleren absoluten Fehler für die verschiedenen Pixelvergleiche, die vom globalen Suchsystem durchgeführt werden. Die Blöcke, die den geringsten berechneten Fehler produzieren, werden die Übereinstimmung sein. Alternativ nimmt, wenn der berechnete Fehler stattdessen kleiner als eine vordefinierte Fehlerschwelle ist, die Routine an, daß eine Übereinstimmung gefunden ist. Danach bestimmt die Routine beim Schritt 218 einen abgeschätzten. Bewegungsvektor für den aktuellen Block, der gegenwärtig verarbeitet worden ist. Ist einmal der Bewegungsvektor berechnet worden, fragt die Routine beim Schritt 220 an, ob sämtliche aktuellen Blöcke nun ihnen zugeordnete Bewegungsvektoren haben. Wenn nein, schreitet die Routine entlang des NEIN-Pfades 222 bis Schritt 210 fort. Bei Schritt 210 werden ein anderer aktueller Block und ein zugeordneter vorhergehender Block ausgewählt und danach verarbeitet (global gesucht), um einen abgeschätzten Bewegungsvektor zu bestimmen. Wenn die Anfrage beim Schritt 220 positiv beantwortet wird, schreitet die Routine zu Schritt 224 fort. An diesem Punkt hat die Routine einen Satz abgeschätzter Bewegungsvektoren für jeden aktuellen Block im aktuellen Einzelbild mit niedriger Auflösung berechnet.
  • Bei Schritt 224 wählt die Routine ein aktuelles und vorhergehendes Einzelbild 302 und 300 aus der Eingangssequenz mit voller Auflösung aus, die den aktuellen und vorhergehenden Einzelbildern 306 und 304 mit niedriger Auflösung entsprechen, die benutzt worden sind, um den gegenwärtig verfügbaren Satz abgeschätzter Bewegungsvektoren zu bestimmen. Die ausgewählten Eingangseinzelbilder werden bei Schritt 226 unterteilt in aktuelle und vorhergehende Blöcke. Diese aktuellen und vorhergehenden Blöcke entsprechen wesentlich in Ihrer Position im wesentlichen innerhalb des Einzelbildes den aktuellen und vorhergehenden Blöcken, die aus den Einzelbildern mit niedriger Auflösung abgeleitet sind. Insoweit hat jeder gegebene aktuelle oder vorhergehende Block in den Einzelbildern mit voller Auflösung ein Äquivalent mit niedriger Auflösung in den Einzelbildern mit niedriger Auflösung.
  • Bei Schritt 228 wählt die Routine aus den Einzelbildern mit voller Auflösung einen aktuellen Block 314 und einen entsprechenden vorhergehenden Block 316 aus. Der entsprechende vorhergehende Block definiert einen Suchbereich innerhalb welchem eine Übereinstimmung mit dem aktuellen Block gesucht wird. Bei Schritt 230 wird ein abgeschätzter Bewegungsvektor verwendet (in Fig. 3 durch den Pfeil 318 dargestellt), um anfangs den aktuellen Block 314 innerhalb des Suchbereichs zu positionieren, der vom vorhergehenden Block 316 definiert ist. Der abgeschätzte Bewegungsvektor ist der Vektor, der dem aktuellen Block 308 innerhalb des Einzelbildes mit niedriger Auflösung zugeordnet ist, der dem aktuellen Block 314 im Einzelbild 302 mit voller Auflösung entspricht. Bei Schrill 232 werden die aktuellen und vorhergehenden Blöcke verglichen (in Fig. 3 durch den Pfeil 320 dargestellt). Die Routine fragt beim Schritt 234 ab, ob eine wesentliche Übereinstimmung gefunden ist. Das lokale Suchsystem führt eine erschöpfende Suche durch, welche minimale quadratische Fehler- oder mittlere Fehlerbetragstechniken verwendet, um die "beste" Übereinstimmung zwischen den Blöcken zu bestimmen. Da die Anfangsposition des aktuellen Blocks vom globalen Suchsystem bestimmt worden ist, beträgt der erforderliche Suchbereich für die lokale Suche typischerweise nur 2 bis 4 Pixel. Wenn die Antwort auf die Anfrage bei Schrift 232 negativ ist, schreitet die Routine entlang des NEIN-Pfades zum Schritt 236 fort. Bei Schritt 236 ordnet die Routine den aktuellen Block innerhalb des vorhergehenden Blocks 316 neu an und kehrt zum Schritt 232 zurück, wo ein weiterer Vergleich durchgeführt wird. Die Routine führt eine Schleife durch Schritt 236 aus, bis beim Schritt 234 eine Übereinstimmung gefunden ist. Danach bestimmt die Routine beim Schritt 238 einen endgültigen Bewegungsvektor für den aktuellen Block, der gegenwärtig verarbeitet worden ist.
  • Ist einmal ein endgültiger Bewegungsvektor berechnet, fragt die Routine beim Schritt 240 ab, ob sämtliche aktuellen Blöcke nun ihnen zugeordnete endgültige Bewegungsvektoren haben. Wenn nein, fährt die Routine entlang des NEIN-Pfades 242 zu Schritt 228 fort. Beim Schritt 228 werden der weitere aktuelle Block und der zugeordnete vorhergehende Block ausgewählt und danach verarbeitet, um einen Bewegungsvektor zu bestimmen. Wenn die Anfrage beim Schritt 240 positiv beantwortet worden ist, springt die Routine zum Schritt 244.
  • Zur Vereinfachung sind die beispielhaften vorhergehenden Blöcke 310 und 316 in Fig. 3 dargestellt, wie sie 256 · 256 Pixel bzw. 32 · 32 Pixel enthalten. In der Praxis jedoch erfordern diese Suchbereiche eine zusätzliche Pixelspalte und eine zusätzliche Pixelzeile, um die Bewegung der aktuellen Blöcke 314 und 308 innerhalb der Suchbereiche zu erlauben. Daher sind die Dimensionen der Suchbereiche gegenwärtig 256+1 Pixel plus die Länge des zugeordneten aktuellen Blocks (16 Pixel) bzw. 32+1 Pixel plus die Länge des zugeordneten aktuellen Blocks (2 Pixel in jeder Dimension).
  • Wie vorher beschrieben, bedeckt der aktuelle Block 308 mit niedriger Auflösung einen 2 · 2 Pixel-Bereich. Folglich enthält der Block nur 4 Pixel. Insoweit können die Vergleiche, die vom globalen Suchsystem durchgeführt werden, das einen aktuellen Block verwendet, der nur 4 Pixel enthält, unbefriedigende Ergebnisse liefern. Insbesondere können falsche Übereinstimmungen vom globalen Suchsystem ausfindig gemacht werden, weil die geringe Zahl der Pixel im aktuellen Block dazu neigt, mit Rauschen zu korrelieren.
  • Daher verwendet innerhalb des globalen bis lokalen Blockbewegungsabschätzungssystems eine Alternative zur Verwendung eines einzelnen aktuellen Blocks mit geringer Auflösung eine Anzahl von aktuellen Blöcken B0,0 bis Bn,n, die, wie in Fig. 4 gezeigt, in einem Metablock 400 angeordnet sind. In der bevorzugten Ausführungsform des Bewegungsabschätzungssystems wird ein Metablock 402 aus 16 aktuellen Blöcken B0,0-B3,3 gebildet. Insbesondere weist jeder aktuelle Block B0,0-B3,3 innerhalb des Metablocks 402 vier Pixel auf, die in einer 2 · 2 Matrix angeordnet sind, die einem undezimierten 16 · 16 Bereich innerhalb des aktuellen Einzelbildes mit voller Auflösung entsprechen.
  • Gemäß Fig. 5 ist der Metablock gezeigt, der in eine Zahl von sich unterscheidenden Testunterteilungen (auch als Subblöcke bezeichnet) unterteilt ist. Zum Beispiel kann der Metablock vertikal halbiert werden, um den Metablock 500 zu bilden, der zwei Testunterteilungen 504 und 506 hat, worin jede Testunterteilung vier Zeilen und zwei Spalten der aktuellen Blöcke aufweist. Ein Metablock kann auch horizontal halbiert werden, um den Metablock 502 bereitzustellen, der zwei Testunterteilungen 508 und 510 hat, worin jede Testunterteilung zwei Zeilen und vier Spalten von Testblöcken aufweist. Innerhalb des Blockbewegungsabschätzungssystems kann ein Metablock auch in jede andere zweckmäßige Zahl von Testunterteilungen aufgeteilt werden, die z. B. eine Unterteilung in Viertel beinhaltet, um die Testunterteilungen 512a-d innerhalb des Metablocks 514 zu bilden oder aber in die sich überlappenden Testunterteilungen 516, 518, 520, 522 innerhalb des Metablocks 524.
  • Fig. 6 zeigt eine Bildbearbeitungsdarstellung 600, um die Verwendung der Metablöcke bei der Durchführung der globalen Suche zu demonstrieren. Innerhalb der Bildverarbeitungsdarstellung 600 sind das vorhergehende Einzelbild 304 mit niedriger Auflösung und das aktuelle Einzelbild 306 mit niedriger Auflösung das Ergebnis der Dezimierungsoperationen, die vom Filter und Dezimierer auf dem vorhergehenden Eingangseinzelbild 300 bzw. auf dem aktuellen Eingangseinzelbild 302 durchgeführt worden sind, wie vorher beschrieben wurde. Wie auch vorher beschrieben wurde, ist der vorhergehende Block 310 mit niedriger Auflösung innerhalb des Einzelbildes 304 mit niedriger Auflösung angeordnet. Der Metablock 500, der die aktuellen Blöcke B0,0-B3,3 enthält, ist innerhalb des Einzelbildes 306 mit niedriger Auflösung angeordnet. Wenn Metablöcke verwendet werden, bestimmt das globale Suchsystem einen abgeschätzten Bewegungsvektor für jeden aktuellen Block B0,0-B3,3 innerhalb jedes Metablocks.
  • Ein beispielhafter 64 · 64 Pixel Metablock 602 mit voller Auflösung, der innerhalb des aktuellen Eingangseinzelbildes 302 angeordnet ist, enthält 16 aktuelle Blöcke B0,0-B3,3, welche jeweils aktuelle 16 · 16 Pixelblöcke mit voller Auflösung enthalten. Tatsächlich wird jeder Testblock B'i,j innerhalb des Metablocks 602 vom Dezimierer bearbeitet, um einen zugehörigen aktuellen Block Bi,j mit niedriger Auflösung innerhalb des Metablocks 500 bereitzustellen. Insoweit entspricht jeder B'i,j einem Bi,j. Das aktuelle Einzelbild mit voller Auflösung 302 wird von einer Mehrzahl von Metablöcken wie dem beispielhaften Metablock 602 bedeckt. Die Metablöcke 602 innerhalb des Einzelbildes 302 überlappen nicht miteinander. Jeder 64 · 64 Pixel Metablock 602 aus dieser Mehrzahl von Metablöcken entspricht einem 8 · 8 Metablock mit niedriger Auflösung so wie Metablock 500.
  • Wird die globale Suche verwendet, wird der Metablock 500 mit dem vorhergehenden Block 310 mit niedriger Auflösung (ein Suchbereich mit niedriger Auflösung) vom globalen Suchsystem für die beste Übereinstimmungsinformation verglichen. Dieser Vergleich ist durch den Pfeil 312 dargestellt. Auf diese Art und Weise bestimmt das globale Suchsystem die Bewegungsvektorinformationen für den Gesamtmetablock 500. Zusätzlich wird für jeden der Testblöcke B0,0-B3,3 innerhalb des Metablocks 500 die abgeschätzte Bewegungsvektorinformation bestimmt.
  • Zum Beispiel wird jedem Testblock B0,0-B3,3 einfach die Bewegungsvektorinformation zugewiesen, die vom globalen Suchsystem für den Gesamtmetablock 500 bestimmt worden ist. Dies vereinfacht die Arbeitsweise des Blockbewegungsabschätzungssystems stark. Diese Methode stellt jedoch eine relativ unpräzise Blockbewegungsabschätzung und schlechte Bildqualität bereit, weit die großen Abmessungen des Metablocks dazu führen können, daß mehrere Objekte abgedeckt werden, die sich in verschiedene Richtungen bewegen.
  • Um die Genauigkeit der Bewegungsvektorabschätzung zu verbessern, bestimmt das System einen abgeschätzten Bewegungsvektor für jede Unterteilung (sub-Block) des Metablocks 500. Zum Beispiel kann, wie in Fig. 5 gezeigt ist, der Metablock 500 unterteilt werden, um Metablock 514 zu bilden. In diesem Fall werden fünf abgeschätzte Bewegungsvektoren an jedem Übereinstimmungsort bestimmt. Insbesondere wird ein Bewegungsvektor für den Gesamtmetablock 514 bestimmt und einer für jede der vier Testunterteilungen 512a-b. Wenn ein Metablock unterteilt ist, um den Metablock 524 zu bilden, wird ein abgeschätzter Bewegungsvektor bestimmt für den Gesamtmetablock 524 und einer für jede der vier sich überlappenden Testunterteilungen 516, 518, 520 und 522. In jedem dieser Metablöcke werden die abgeschätzten Bewegungsvektoren für jede Unterteilung ihren einzelnen aktuellen Blöcken zugewiesen. Wenn jedoch mehrere Testunterteilungen einen bestimmten aktuellen Block überlappen, dann wird entweder einer der Bewegungsvektoren für diesen aktuellen Block ausgewählt oder die Bewegungsvektoren werden in einer bestimmten Art und Weise zu einem einzelnen Vektor zusammengefaßt, um diesen aktuellen Block darzustellen. Eine solche Kombination kann durch Mittelung, gewichtete Mittelung und ähnliches erreicht werden.
  • Im allgemeinen kann die Bildqualität durch Unterteilung eines Metablocks verbessert werden, welche die abgeschätzte Bewegungsvektorinformation für jede Unterteilung bestimmt und die Bewegungsvektorinformation für jede Unterteilung den Blöcken B0,0-Bn,n innerhalb der Unterteilung zuweist. Ferner kann die Bildqualität durch Unterteilung des Metablocks in eine größere Anzahl von Unterteilungen weiter verbessert werden. Wenn jedoch ein Metablock in eine Mehrzahl von 2 · 2 Pixelblöcken unterteilt ist, sind die Ergebnisse, wie vorher beschrieben, schlecht bezüglich des 2 · 2 Pixelblocks. Daher wird ein vernünftiger Unterteilungskompromiß gesucht, der solche Faktoren berücksichtigt wie Widerstand gegen Rauschen, falsche Übereinstimmungen, die Menge benötigter Hardware, Rauschunempfindlichkeit und Rechenintensität.
  • Wie vorher beschrieben, erzeugt die Verwendung unterteilter Metablöcke bei der Suche des Einzelbilds mit niedriger Auflösung mehrfache abgeschätzte Bewegungsvektoren, d. h. einen Vektor für den gesamten Metablock und einen für jeden unterteilten Bereich. Diese Vektoren werden bestimmt durch die Verwendung von Techniken wie kleinster quadratischer Fehler, um eine beste Übereinstimmung für den Metablock und seine einzelnen Komponenten zu berechnen. Diese abgeschätzten Vektoren werden dann dem lokalen Suchsystem zugeführt, wie durch den Weg 318 veranschaulicht.
  • Unter der Annahme eines Metablocks mit zwei Unterteilungen, z. B. Metablock 500, muß das lokale Suchsystem so drei in Frage kommende Lagen analysieren, bei denen eine minimale quadratische Fehlerübereinstimmung vom globalen Suchsystem gefunden wurde. Diese drei Lagen entsprechen dem Gesamtmetablock mit niedriger Auflösung und jeder der beiden Unterteilungen darin. Eine der drei Möglichkeiten muß daher für jeden lokalen Testblock B0,0'-B3,3' ausgewählt werden, um die Suche des lokalen Suchsystems auszuführen.
  • Eine dieser drei Möglichkeiten kann sofort für jeden aktuellen Block B0,0-B3,3 mit niedriger Auflösung ausgeschlossen weiden, weil jeder Block B0,0-B3,3 außerhalb von einer der Testunterteilungen 504 und 506 ist. Wird z. B. eine Anfangsposition für den Testblock B0,0 ausgewählt, kann die in Frage kommende Suchposition, die dem abgeschätzten Bewegungsvektor für die Testunterteilung 506 entspricht, ignoriert werden, da der Testblock B0,0 nicht innerhalb der Testunterteilung 506 angeordnet ist. Nur die in Frage kommenden Suchpositionen, die dem Gesamtmetablock 500 und der Testunterteilung 504 entsprechen, müssen in Betracht gezogen werden.
  • Auf diese Art und Weise wird ein Bewegungsvektor für jeden Block B0,0'-B3,3' ausgewählt, der entweder auf dem Gesamtmetablock 500 oder einer der Testunterteilungen 504, 506 basiert und nicht auf einem einzelnen 2 · 2 Pixelblock B0,0-B3,3 basiert. Weil der Metablock 500 und die Testunterteilungen 504, 506 viel größer als die 2 · 2 Blöcke B0,0-B3,3 sind, weist das globale bis lokale Blockbewegungsabschätzungssystem einen höheren Rauschwiderstand auf, weil die 2 · 2 Testblöcke viel wahrscheinlicher zufällig mit kleinen Bitmustern innerhalb des Suchbereichs mit niedriger Auflösung übereinstimmen.
  • Die Auswahl eines endgültigen Bewegungsvektors wird erreicht durch die Bestimmung der besten Übereinstimmung des Blocks B'i,j mit voller Auflösung für beide der zwei möglichen Startpositionen, wie durch die Pfeile 604 und 606 angedeutet ist. Dieses betrifft entweder die Auswahl des abgeschätzten Bewegungsvektors, der dem Gesamtmetablock 500 entspricht, oder der Auswahl der geeigneten Testunterteilung 504 und 506. Wenn eine der beiden möglichen Startpositionen innerhalb des Suchbereichs 316 ausgewählt wird, führt das lokale Suchsystem, wie vorher beschrieben, seine Suche durch.
  • In einer anderen Ausführungsform des Bewegungsabschätzungssystems kann eine vollständige Suche für jede der beiden möglichen in Frage kommenden Anfangspositionen für die Suche durchgeführt werden, um zwei lokale Suchergebnisse bereitzustellen. Das bessere der beiden lokalen Suchergebnisse kann benutzt werden, um einen Bewegungsvektor zu erzeugen. Es wird angenommen, daß diese Methode weniger effizient sein kann als die Auswahl eines einzelnen abgeschätzten Bewegungsvektors und die Durchführung einer einzelnen Suche gemäß des ausgewählten Bewegungsvektors.
  • Unter Bezugnahme auf Fig. 7 wird dort ein systolisches 8 · 8 Array gezeigt. Das systolische Array 130 ist ein gewöhnliches systolisches Array, das innerhalb des globalen bis lokalen Blockbewegungsabschätzungssystems verwendet werden kann, um gleichzeitig die Bewegungsvektorinformation eines Metablocks und jede der verschiedenen Testunterteilungen innerhalb des Metablocks zu bestimmen. Obwohl das systolische Array 700 einen bequemen Weg bereitstellt, um diese Bestimmungen zu machen, kann jedes bekannte Verfahren zur Bestimmung der Bewegungsvektorinformation verwendet werden, um die Bewegungsvektorinformation der verschiedenen möglichen Unterteilungen zu bestimmen, welche durch die Unterteilung eines Metablocks bestimmt werden können.
  • Das systolische Array 700 ist ein gewöhnliches systolisches Array, bei dem jeder Knoten Ni,j seine Knoteneingabe entweder von einer Arrayeingabe oder einer Knotenausgabe erhält und seine arithmetischen Knotenoperationen ausführt und seinen Knotenausgangswert entweder dem Arrayausgang oder dem Eingang eines anderen Knotens zuführt. Wenn die Unterschiede, die durch die Vergleiche des globalen Suchsystems bestimmt worden sind, dem systolischen Array zugeführt werden, kann folglich die abgeschätzte Bewegungsvektorinformation berechnet werden. Insbesondere kann die abgeschätzte Bewegungsvektorinformation für verschiedene Testunterteilungen innerhalb des Metablocks 500 mit niedriger Auflösung sofort bestimmt werden. Die Operationen des systolischen Arrays können durch Programmanweisungen durchgeführt werden, die von einem Computer oder von separater arithmetischer Schaltkreishardware ausgeführt werden.
  • Innerhalb des Metablocks 500 wird die abgeschätzte Bewegungsvektorinformation für die Testunterteilung 504 durch Summation der Ausgäben der Knoten N4,4 und N8,4 des systolischen Arrays erhalten. Die abgeschätzte Bewegungsvektorinformation für die Testunterteilung 506 wird durch Summation der Ausgaben der Knoten N4,8 und N8,8 erhalten. Die abgeschätzte Bewegungsvektorinformation für den Gesamtmetablock 500 wird durch Summation der Ausgaben der Bewegungsvektorinformationsknoten N4,4, N4,8, N8,4 und N8,8 erhalten.
  • In ähnlicher Weise werden für die Testunterteilungen 508 und 510 des Metablocks 502 die abgeschätzten Bewegungsvektorinformationsknoten N4,4 + N4,8 und N5,4 + N8,8 des systolischen Arrays summiert. Innerhalb des Testmetablocks 514 entspricht der abgeschätzte Bewegungsvektorinformationsknoten N4,4 der Testunterteilung 512a, der abgeschätzte Bewegungsvektorinformationsknoten N4,8 entspricht der Testunterteilung 512b, der abgeschätzte Bewegungsvektorinformationsknoten N8,4 entspricht der Testunterteilung 512c, und der abgeschätzte Bewegungsvektorinformationsknoten N8,8 entspricht der Testpartition 512d.
  • Es wird für Fachleute auf diesem Gebiet naheliegen, daß Änderungen der oben beschriebenen Ausführungsformen gemacht werden könnten, ohne von deren breiten Erfindungskonzepten abzuweichen. Es versteht sich daher, daß diese Erfindung nicht auf die besonderen offenbarten Ausführungsformen beschränkt ist, sondern es ist beabsichtigt, Modifikationen innerhalb des Umfangs der Erfindung zu umfassen, wie sie durch die angehängten Ansprüche definiert ist.

Claims (10)

1. Verfahren zum Abschätzen von Bewegungsvektoren, welches die Schritte aufweist:
Bereitstellen eines ersten Einzelbildes und eines zweiten Einzelbildes, wobei jedes Bild eine Mehrzahl von Pixeln enthält, die ein Bild wiedergeben,
Zusammenfassen eines Blocks von Pixeln in dem zweiten Einzelbild, um einen Metablock zu erzeugen, der eine Mehrzahl von Pixelblöcken verminderter Auflösung enthält, die in vordefinierte Unterblöcke aufgeteilt sind,
Durchführen einer Gesamtsuche in dem Suchbereich mit verminderter Auflösung unter Verwendung des Metablocks, bis der Metablock im wesentlichen mit einem passenden Block von Pixeln in dem Suchbereich mit reduzierter Auflösung zusammenpaßt, und
Berechnen einer Mehrzahl abgeschätzter Bewegungssektoren, die einem Abstand zwischen einem Ort jedes der Pixelblöcke mit verminderter Auflösung innerhalb des Metablockes in dem zweiten Bild sowie einem Ort des passenden Blocks von Pixeln innerhalb des ersten Einzelbildes entspricht.
2. Verfahren nach Anspruch 1, welches weiterhin die Schritte aufweist.
Auswählen eines abgeschätzten Bewegungsvektors aus der Mehrzahl abgeschätzter Bewegungsvektoren,
Positionieren eines Pixelblockes mit voller Auflösung an einer Ausgangsposition, die durch den ausgewählten, abgeschätzten Bewegungsvektor festgelegt wird, ausgehend von dem zweiten Einzelbild innerhalb eines Suchbereiches mit voller Auflösung in dem ersten Einzelbild,
Durchführen einer lokalen Suche innerhalb des Suchbereiches mit voller Auflösung von der Ausgangsposition aus unter Verwendung eines Pixelblockes voller Auflösung, bis der Pixelblock mit voller Auflösung im wesentlichen mit einem passenden Block von Pixeln in dem Suchbereich mit voller Auflösung zusammenpaßt, und
Berechnen eines endgültigen Bewegungsvektors, der einen Abstand zwischen einem Ort des Pixelblockes voller Auflösung innerhalb des zweiten Einzelbildes und einem Ort des passenden Pixelblockes innerhalb des ersten Einzelbildes entspricht.
3. Verfahren nach Anspruch 1, wobei der Schritt des Durchführens einer allgemeinen (globalen) Suche weiterhin die Schritte aufweist:
Verwenden des Metablocks, bis der Metablock im wesentlichen mit einem passenden Block von Pixeln in dem Suchbereich verminderter Auflösung zusammenpaßt, Berechnen eines abgeschätzten Bewegungsvektors für jeden der Unterblöcke und für den Metablock, und
Zuordnen eines abgeschätzten Bewegungsvektors zu jedem der Pixelblöcke verminderter Auflösung, welche den Metablock repräsentieren.
4. Verfahren nach Anspruch 3, wobei der Zuordnungsschritt weiterhin die Schritte aufweist:
Auswählen eines Blocks aus Pixeln verminderter Auflösung aus der Mehrzahl von Pixelblöcken mit verminderter Auflösung, und
Zuordnen eines abgeschätzten Bewegungsvektors zu dem ausgewählten Block aus Pixeln mit verminderter Auflösung, wobei der zugeordnete, abgeschätzte Vektor entweder aus dem abgeschätzten Bewegungsvektor ausgewählt wird, der für den Metablock berechnet wurde, oder aus den abgeschätzten Bewegungsvektoren, die für die Unterblöcke berechnet wurden.
5. Verfahren nach Anspruch 3, wobei der Zuordnungsschritt weiterhin die Schritte aufweist:
Auswählen eines Blocks aus Pixeln verminderter Auflösung aus der Mehrzahl von Blöcken von Pixeln verminderter Auflösung, und
Zuordnen eines abgeschätzten Bewegungsvektors mit dem ausgewählten Block aus Pixeln verminderter Auflösung, wobei der zugeordnete, abgeschätzte Bewegungsvektor eine Kombination des abgeschätzten Bewegungsvektors, welcher für den Metablock berechnet wurde, und von einem oder mehreren der abgeschätzten Bewegungsvektoren ist, die für die Unterblöcke berechnet wurden.
6. Vorrichtung zum Abschätzen von Bewegungsvektoren, welche als Eingabe ein erstes Einzelbild und ein zweites Einzelbild erhält, die jeweils eine Mehrzahl von Pixeln enthalten, welche ein Einzelbild repräsentieren, wobei die Vorrichtung aufweist:
einen Pyramidenprozessor, um einen Suchbereich innerhalb des ersten Einzelbildes aufzuteilen, um einen Suchbereich verminderter Auflösung zu erzeugen, und um einen Block von Pixeln in dem zweiten Einzelbild aufzuteilen, um einen Metablock zu erzeugen, der eine Mehrzahl von Blöcken aus Pixeln verminderter Auflösung enthält, die in vordefinierte Teilblöcke aufgeteilt werden,
eine globale Sucheinrichtung, die mit dem Pyramidenprozessor verbunden ist, um eine globale Suche innerhalb des Suchbereiches verminderter Auflösung durchzuführen, wobei der Metablock verwendet wird, bis er im wesentlichen mit einem geeigneten Block aus Pixeln in dem Suchbereich verminderter Auflösung zusammenpaßt, und
eine Einrichtung, die mit der globalen Sucheinrichtung verbunden ist, um eine Mehrzahl abgeschätzter Bewegungsvektoren zu berechnen, die einem Abstand zwischen einem Ort jedes der Blöcke aus der Mehrzahl von Blöcken verminderter Auflösung innerhalb des Metablockes in dem zweiten Einzelbild und einer Stelle des passenden Pixelblocks innerhalb des ersten Einzelbildes entsprechen.
7. Vorrichtung nach Anspruch 6, welche weiterhin aufweist:
eine Einrichtung zum Auswählen eines abgeschätzten Bewegungsvektors aus der Mehrzahl von abgeschätzten Bewegungsvektoren,
eine Einrichtung für das Anordnen eines Pixelblockes mit voller Auflösung an einer Anfangsposition, die durch den ausgewählten, abgeschätzten Bewegungsvektor definiert wird, ausgehend von einem zweiten Einzelbild, und zwar innerhalb eines Suchbereiches mit voller Auflösung in dem ersten Einzelbild,
eine lokale Sucheinrichtung für das Durchführen einer lokalen Suche innerhalb des Suchbereiches voller Auflösung, ausgehend von der Anfangsposition, unter Verwendung des Pixelblockes mit voller Auflösung, bis der Pixelblock voller Auflösung im wesentlichen mit einem passenden Block von Pixeln in dem Suchbereich voller Auflösung zusammenpaßt, und
eine Einrichtung zum Berechnen eines endgültigen Bewegungsvektors, der einen Abstand zwischen einer Stelle des Pixelblockes voller Auflösung in dem zweiten Einzelbild und einer Stelle des passenden Pixelblockes von Pixeln innerhalb des ersten Einzelbildes wiedergibt.
8. Vorrichtung nach Anspruch 7, wobei die globale Sucheinrichtung weiterhin aufweist:
eine Einrichtung für das Benutzen des Metablockes, bis der Metablock im wesentlichen mit einem passenden Block von Pixeln in dem Suchbereich reduzierter Auflösung zusammenpaßt,
eine Einrichtung zum Berechnen eines abgeschätzten Bewegungsvektors für jeden der Unterblöcke und für den Metablock, und
eine Einrichtung zum Zuordnen eines abgeschätzten Bewegungsvektors zu jedem der Pixelblöcke reduzierter Auflösung, die den Metablock bilden.
9. Vorrichtung nach Anspruch 8, wobei die Zuordnungseinrichtung weiterhin aufweist:
eine Einrichtung zum Auswählen eines Blocks von Pixeln reduzierter Auflösung aus der Mehrzahl von Pixelblöcken reduzierter Auflösung, und
eine Einrichtung zum Zuordnen eines abgeschätzten Bewegungsvektors zu dem ausgewählten Pixelblock reduzierter Auflösung, wobei der zugeordnete, abgeschätzte Bewegungsvektor entweder aus dem abgeschätzten Bewegungsvektor, der für den Metablock berechnet wurde, oder aus einem der abgeschätzten Bewegungsvektoren ausgewählt wird, die für die Unterblöcke berechnet wurden.
10. Vorrichtung nach Anspruch 8, wobei die Zuordnungseinrichtung weiterhin aufweist:
eine Einrichtung zum Auswählen eines Pixelblockes reduzierter Auflösung aus der Mehrzahl von Pixelblöcken reduzierter Auflösung, und
eine Einrichtung für das Zuordnen eines abgeschätzten Bewegungsvektors zudem ausgewählten Pixelblock reduzierter Auflösung, wobei der zugeordnete, abgeschätzte Bewegungsvektor eine Kombination aus dem abgeschätzten Bewegungsvektor, der für den Metablock berechnet wurde, und einem oder mehreren der abgeschätzten Bewegungsvektoren ist, die für die Unterblöcke berechnet wurden.
DE69524235T 1994-09-02 1995-09-05 Verfahren und vorrichtung zur global-zu-lokal-block-bewegungsschätzung Expired - Lifetime DE69524235T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US30002394A 1994-09-02 1994-09-02
PCT/US1995/010986 WO1996008114A1 (en) 1994-09-02 1995-09-05 Method and apparatus for global-to-local block motion estimation

Publications (2)

Publication Number Publication Date
DE69524235D1 DE69524235D1 (de) 2002-01-10
DE69524235T2 true DE69524235T2 (de) 2002-07-18

Family

ID=23157340

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69524235T Expired - Lifetime DE69524235T2 (de) 1994-09-02 1995-09-05 Verfahren und vorrichtung zur global-zu-lokal-block-bewegungsschätzung

Country Status (6)

Country Link
US (1) US5790206A (de)
EP (1) EP0779011B1 (de)
JP (2) JP3889040B2 (de)
KR (1) KR100378636B1 (de)
DE (1) DE69524235T2 (de)
WO (1) WO1996008114A1 (de)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3774954B2 (ja) 1996-10-30 2006-05-17 株式会社日立製作所 動画像の符号化方法
US6167090A (en) * 1996-12-26 2000-12-26 Nippon Steel Corporation Motion vector detecting apparatus
KR100341079B1 (ko) * 1997-01-10 2002-06-20 마츠시타 덴끼 산교 가부시키가이샤 화상 처리 방법 및 화상 처리 장치, 및 데이터 기록 매체
US6786420B1 (en) 1997-07-15 2004-09-07 Silverbrook Research Pty. Ltd. Data distribution mechanism in the form of ink dots on cards
US6618117B2 (en) 1997-07-12 2003-09-09 Silverbrook Research Pty Ltd Image sensing apparatus including a microcontroller
US6879341B1 (en) 1997-07-15 2005-04-12 Silverbrook Research Pty Ltd Digital camera system containing a VLIW vector processor
US7110024B1 (en) 1997-07-15 2006-09-19 Silverbrook Research Pty Ltd Digital camera system having motion deblurring means
US6624848B1 (en) 1997-07-15 2003-09-23 Silverbrook Research Pty Ltd Cascading image modification using multiple digital cameras incorporating image processing
US20040119829A1 (en) 1997-07-15 2004-06-24 Silverbrook Research Pty Ltd Printhead assembly for a print on demand digital camera system
US6690419B1 (en) 1997-07-15 2004-02-10 Silverbrook Research Pty Ltd Utilising eye detection methods for image processing in a digital image camera
IL122299A (en) * 1997-11-25 2003-11-23 Broadcom Corp Video encoding device
US6829301B1 (en) 1998-01-16 2004-12-07 Sarnoff Corporation Enhanced MPEG information distribution apparatus and method
JP3540142B2 (ja) * 1998-01-30 2004-07-07 株式会社東芝 動きベクトル検出回路および動きベクトル検出方法
US6560285B1 (en) 1998-03-30 2003-05-06 Sarnoff Corporation Region-based information compaction as for digital images
US6285711B1 (en) * 1998-05-20 2001-09-04 Sharp Laboratories Of America, Inc. Block matching-based method for estimating motion fields and global affine motion parameters in digital video sequences
EP1018841A4 (de) * 1998-07-22 2002-01-30 Mitsubishi Electric Corp Bildkodierungssystem
US6349286B2 (en) * 1998-09-03 2002-02-19 Siemens Information And Communications Network, Inc. System and method for automatic synchronization for multimedia presentations
DE19840735C2 (de) * 1998-09-07 2001-06-07 Bosch Gmbh Robert Blockbasierte Bewegungsschätzung bei der Bewegtbildkodierung
AUPP702098A0 (en) 1998-11-09 1998-12-03 Silverbrook Research Pty Ltd Image creation method and apparatus (ART73)
US6826294B1 (en) * 1999-03-05 2004-11-30 Koninklijke Philips Electronics N.V. Block matching motion estimation using reduced precision clustered predictions
AUPQ056099A0 (en) 1999-05-25 1999-06-17 Silverbrook Research Pty Ltd A method and apparatus (pprint01)
US6785427B1 (en) * 2000-09-20 2004-08-31 Arcsoft, Inc. Image matching using resolution pyramids with geometric constraints
WO2002035843A1 (en) * 2000-10-25 2002-05-02 Dynapel Systems, Inc. Video motion focus control
US7242717B2 (en) * 2001-06-08 2007-07-10 Sharp Laboratories Of America, Inc. Wavelet domain motion compensation system
KR100408294B1 (ko) * 2001-09-05 2003-12-01 삼성전자주식회사 저전송율 동영상 부호화에 적합한 움직임 추정 방법
KR100699821B1 (ko) * 2002-07-22 2007-03-27 삼성전자주식회사 가변 탐색창을 이용한 고속 움직임 추정방법
EP1387588A2 (de) * 2002-08-02 2004-02-04 KDDI Corporation Bildanpassungvorrichtung und -verfahren zur Bewegungsschätzung
US7400782B2 (en) * 2002-08-28 2008-07-15 Arcsoft, Inc. Image warping correction in forming 360 degree panoramic images
US7450642B2 (en) * 2002-11-13 2008-11-11 Sony Corporation Fast motion vector prediction method
KR100510137B1 (ko) * 2003-04-30 2005-08-26 삼성전자주식회사 고속 움직임 추정을 위한 참조 픽쳐 및 블록 모드 결정방법, 그 장치, 블록 모드 결정 방법 및 그 장치
US7471724B2 (en) * 2003-06-23 2008-12-30 Vichip Corp. Limited Method and apparatus for adaptive multiple-dimensional signal sequences encoding/decoding
US7409105B2 (en) * 2003-10-22 2008-08-05 Arcsoft, Inc. Panoramic maker engine for a low profile system
US7346109B2 (en) * 2003-12-23 2008-03-18 Genesis Microchip Inc. Motion vector computation for video sequences
DE102004017145B4 (de) * 2004-04-07 2006-02-16 Micronas Gmbh Verfahren und Vorrichtung zur Ermittlung von Bewegungvektoren, die Bildbereichen eines Bildes zugeordnet sind
US7953152B1 (en) 2004-06-28 2011-05-31 Google Inc. Video compression and encoding method
US7417670B1 (en) * 2005-01-12 2008-08-26 Ambarella, Inc. Digital video camera with binning or skipping correction
KR100699835B1 (ko) * 2005-03-09 2007-03-27 삼성전자주식회사 계층형 움직임 예측기 및 움직임벡터 예측방법
TWI283540B (en) * 2005-05-11 2007-07-01 Sunplus Technology Co Ltd Method and apparatus for image data storage
US20070009034A1 (en) * 2005-07-05 2007-01-11 Jarno Tulkki Apparatuses, computer program product, and method for digital image processing
US20070268406A1 (en) * 2006-05-22 2007-11-22 Broadcom Corporation, A California Corporation Video processing system that generates sub-frame metadata
KR101366092B1 (ko) 2006-10-13 2014-02-21 삼성전자주식회사 다시점 영상의 부호화, 복호화 방법 및 장치
KR101356735B1 (ko) * 2007-01-03 2014-02-03 삼성전자주식회사 전역 움직임 벡터를 사용해서 움직임 벡터를 추정하기 위한방법, 장치, 인코더, 디코더 및 복호화 방법
KR100823287B1 (ko) * 2007-01-03 2008-04-21 삼성전자주식회사 전역 차이 벡터를 이용한 다시점 영상의 부호화, 복호화방법 및 장치
US8548261B2 (en) 2007-04-11 2013-10-01 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding multi-view image
WO2009157707A2 (en) * 2008-06-24 2009-12-30 Samsung Electronics Co,. Ltd. Image processing method and apparatus
US9313526B2 (en) 2010-02-19 2016-04-12 Skype Data compression for video
US9078009B2 (en) * 2010-02-19 2015-07-07 Skype Data compression for video utilizing non-translational motion information
US8681873B2 (en) * 2010-02-19 2014-03-25 Skype Data compression for video
US9819358B2 (en) 2010-02-19 2017-11-14 Skype Entropy encoding based on observed frequency
US9609342B2 (en) * 2010-02-19 2017-03-28 Skype Compression for frames of a video signal using selected candidate blocks
US20130160043A1 (en) * 2010-05-24 2013-06-20 Vubites India Private Limited System and method for image matching for analysis and processing of a broadcast stream
US20150063451A1 (en) * 2013-09-05 2015-03-05 Microsoft Corporation Universal Screen Content Codec
US10148873B2 (en) * 2015-12-22 2018-12-04 Mitsubishi Electric Research Laboratories, Inc. Method and system for motion adaptive fusion of optical images and depth maps acquired by cameras and depth sensors
US10621446B2 (en) * 2016-12-22 2020-04-14 Texas Instruments Incorporated Handling perspective magnification in optical flow processing

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2599577B1 (fr) * 1986-05-29 1988-08-05 Guichard Jacques Procede de codage par transformation pour la transmission de signaux d'image.
EP0293644B1 (de) * 1987-06-02 1992-03-25 Siemens Aktiengesellschaft Verfahren zur Ermittlung von Bewegungsvektorfeldern aus digitalen Bildsequenzen
FR2651399B1 (fr) * 1989-08-29 1996-05-15 Thomson Consumer Electronics Procede et dispositif d'estimation et de codage hierarchise du mouvement de sequences d'images.
DE68922610T2 (de) * 1989-09-25 1996-02-22 Rai Radiotelevisione Italiana Umfassendes System zur Codierung und Übertragung von Videosignalen mit Bewegungsvektoren.
JPH03117991A (ja) * 1989-09-29 1991-05-20 Victor Co Of Japan Ltd 動きベクトル符号化装置及び復号化装置
JPH03256485A (ja) * 1990-03-06 1991-11-15 Victor Co Of Japan Ltd 動きベクトル検出回路
FR2663178B1 (fr) * 1990-06-06 1995-07-21 Thomson Csf Procede d'estimation hierarchique du mouvement dans une sequence d'images.
DE69029999T2 (de) * 1990-07-20 1997-08-14 Philips Electronics Nv Vorrichtung zur Verarbeitung von Bewegungsvektoren
US5144423A (en) * 1990-12-11 1992-09-01 At&T Bell Laboratories Hdtv encoder with forward estimation and constant rate motion vectors
US5210605A (en) * 1991-06-11 1993-05-11 Trustees Of Princeton University Method and apparatus for determining motion vectors for image sequences
FR2684258B1 (fr) * 1991-11-27 1998-06-05 Thomson Consumer Electronics Procede d'estimation et de codage hierarchise du mouvement de sequences d'images.
US5473379A (en) * 1993-11-04 1995-12-05 At&T Corp. Method and apparatus for improving motion compensation in digital video coding

Also Published As

Publication number Publication date
JPH10505210A (ja) 1998-05-19
EP0779011A4 (de) 1999-08-11
DE69524235D1 (de) 2002-01-10
EP0779011A1 (de) 1997-06-18
KR970705905A (ko) 1997-10-09
WO1996008114A1 (en) 1996-03-14
EP0779011B1 (de) 2001-11-28
JP3889040B2 (ja) 2007-03-07
JP2007026459A (ja) 2007-02-01
JP4444252B2 (ja) 2010-03-31
KR100378636B1 (ko) 2003-06-18
US5790206A (en) 1998-08-04

Similar Documents

Publication Publication Date Title
DE69524235T2 (de) Verfahren und vorrichtung zur global-zu-lokal-block-bewegungsschätzung
DE69529622T2 (de) Auf mosaiken basiertes bildverarbeitungssystem und verfahren zum verarbeiten von bildern
DE69333846T2 (de) Verfahren zur mischung von bildern und vorrichtung hierzu.
DE69422266T2 (de) Verfahren, Vorrichtung und Schaltung zur Verbesserung von Bewegungskompensation bei digitaler Bildkodierung
EP0293644B1 (de) Verfahren zur Ermittlung von Bewegungsvektorfeldern aus digitalen Bildsequenzen
DE19506372B4 (de) Bi-Direktionales Bewegungsschätzverfahren und ein dafür vorgesehenes Gerät
DE69413384T2 (de) Verfahren zum bestimmen der ungleichheit zwischen monoskopischen bildern, die ein stereoskopisches bild darstellen
DE69332348T2 (de) Architektur zur Ausführung der hierarchischen Bewegungsanalyse von Bildern in Echtzeit
DE69032437T2 (de) Bewegungseinschätzer
DE69217150T2 (de) Bewegungsvektorschätzung, Bewegungsbildkodierung- und -speicherung
DE3853555T2 (de) Verarbeitung des Bewegungsvektors in digitalen Fernsehbildern.
DE69031055T2 (de) Bewegungsabhängige Videosignalverarbeitung
DE69625632T2 (de) Verfahren und Vorrichtung zum Erzeugen eines Bildes hoher Auflösung aus einer Folge von Bewegungsbildern niedriger Auflösung
DE69836473T2 (de) Bewegungsschätzung und bewegungskompensierte interpolation
DE69812882T2 (de) Verfahren zur bewegungskompensierten Mehrhalbbildverbesserung von Videostandbildern
DE69628282T2 (de) Verfahren zur kompression mehrerer videobilder
DE69623330T2 (de) Merkmalbasiertes videokompressionsverfahren
DE69418244T2 (de) Videorauschreduktionsystem unter Verwendung einer Mehrbild-Bewegungsabschätzung, Unterdrückung von Abweichungen und Bahnkorrektur
DE69519398T2 (de) Abtastumsetzung mit Bewegungsadaptation unter Verwendung einer richtungsabhängigen Interpolation der Kanten
DE69801209T2 (de) Hierarchischer rekursiver Bewegungsschätzer für Bewegtbildkodierer
DE69229705T2 (de) Verfahren zur erkennung eines bewegungsvektors und vorrichtung dafür und system zur verarbeitung eines bildsignals mit dieser vorrichtung
DE69217444T2 (de) Rauschverminderung in bildübertragenen Videosignalen
DE69220975T2 (de) Kodierschaltung zur Transformationskodierung eines Bildsignals und Dekodierschaltung zum Dekodieren desselben
DE3885695T2 (de) Bewegungsabschätzung.
EP2490448A1 (de) Kodierverfahren und Bildkodiervorrichtung zur Kompression einer Bildsequenz

Legal Events

Date Code Title Description
8364 No opposition during term of opposition