DE69609931T2 - Verfahren zur Datenverarbeitung in matrixförmigen Netzwerken in einem Bewegungsschätzungssystem - Google Patents

Verfahren zur Datenverarbeitung in matrixförmigen Netzwerken in einem Bewegungsschätzungssystem

Info

Publication number
DE69609931T2
DE69609931T2 DE69609931T DE69609931T DE69609931T2 DE 69609931 T2 DE69609931 T2 DE 69609931T2 DE 69609931 T DE69609931 T DE 69609931T DE 69609931 T DE69609931 T DE 69609931T DE 69609931 T2 DE69609931 T2 DE 69609931T2
Authority
DE
Germany
Prior art keywords
networks
network
block
blocks
band
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 - Fee Related
Application number
DE69609931T
Other languages
English (en)
Other versions
DE69609931D1 (de
Inventor
Mohamed Daoudi
Alain Pirson
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.)
Vantiva SA
Original Assignee
Thomson Multimedia SA
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 Thomson Multimedia SA filed Critical Thomson Multimedia SA
Publication of DE69609931D1 publication Critical patent/DE69609931D1/de
Application granted granted Critical
Publication of DE69609931T2 publication Critical patent/DE69609931T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/223Analysis of motion using block-matching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Processing Or Creating Images (AREA)

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zur Datenverarbeitung in matrixförmigen Netzwerken in einem Bewegungsschätzungssystem. Das Verfahren gemäß der Erfindung wird insbesondere in Fernseh-Bildkodern benutzt, die ein Verfahren zur Bewegungskompensation anwenden.
  • Eine gewisse Anzahl von Systemen zur Bildkomprimierung basiert auf einer Verarbeitung in Pixelblöcken. Im Falle von MPEG2 (für "Motion Picture Expert Group") sind die Bilder in Blöcke von 8 · 8 Pixeln aufgeteilt, wobei vier Blöcke in einen Makroblock von 16 · 16 Pixeln eingefügt sind. Die Blöcke oder die Makroblöcke unterliegen verschiedenen Verarbeitungsvorgängen für die Redundanzreduktion zwischen Bildern und innerhalb desselben Bildes. Eine der angewendeten Verarbeitungsvorgänge ist die Bewegungsschätzung. Dieses Verfahren besteht in einer Schätzung der Verschiebung eines Teils des laufenden Bildes gegenüber vorangehenden oder künftigen Bildern. Auf diese Weise werden ein oder mehrere Bewegungsvektoren gebildet, die die Verschiebung bestimmen. Diese Bewegungsvektoren ermöglichen es, aus den vorangehenden oder künftigen Bildern eine Voraussage des laufenden Bildes vorzunehmen. Es wird dann die Differenz zwischen dieser Voraussage und dem laufenden Bild bestimmt, und es ist diese Differenz, die für die folgende Komprimierung angewendet wird. Zur Zeit werden Bewegungsvektoren für sogenannte "Inter" und "bidirektionale" Bilder benutzt, können jedoch auch für sogenannte "intra"-Bilder benutzt werden, mit dem Zweck, die Auswirkungen möglicher Übertragungsfehler zu verringern.
  • Die Bewegungsschätzung wird im allgemeinen für jeden Makroblock durchgeführt. Anstelle eines vorangehenden Bildes ist es auch möglich, ein in dem Koder gespeichertes Referenzbild anzuwenden, wobei dieses Bild einem durch einen Dekoder dekodierten Bild entspricht (das bedeutet ein Bild, das Informationsverluste aufgrund der Komprimierung berücksichtigt).
  • Eine Lösung zur Bestimmung des "besten" Makroblocks in dem Referenzbild besteht in einem Vergleich des laufenden Makroblocks mit jedem Makroblock des Referenzbildes. Als Vergleichskriterium wird eine Fehlerfunktion Err definiert, die für jede mögliche Lage des Makroblocks in dem Referenzbild berechnet wird. Die Lage, die den kleinsten Wert für die Funktion Err gibt, wird den Verschiebevektor bestimmen. Letzterer kann verschiedene Genauigkeitswerte haben, abhängig von der verfügbaren Berechnungskapazität und der für die Kodierung der Bewegungsvektoren vorgesehenen Durchlaßbandbreite. Eine Genauigkeit mit einem Bruchteil eines Pixels kann durch eine Inter-Pixel-Interpolation durchgeführt werden. Wenn die Bewegungsvektoren in der Amplitude begrenzt sind, wird ein Untersuchungsfenster geeigneter Größe um die durch den laufenden Makroblock bestimmte Lage angeordnet.
  • Die Berechnung der Bewegungsvektoren erfordert große Berechnungskapazitäten, die mit der gewünschten Genauigkeit, der Bildauflösung, ihrer Frequenz usw. ansteigen.
  • Eine üblicherweise benutzte Fehlerfunktion ist:
  • Err(m, n) = D(a(i, j), b(i + m, j + n))
  • wobei i und j die Lagen innerhalb eines Makroblocks bezeichnen, wobei m und n die Koordinaten eines Bewegungsvektors bezeichnen und wobei a und b die Luminanzwerte der Pixel des laufenden Makroblocks beziehungsweise des verschobenen Makroblocks des Fensters oder des Suchbildes bezeichnen.
  • Die Funktion D kann zum Beispiel sein: D(x, y) = x-y .
  • Ein Prozessor für die Bewegungsschätzung und ein Coprozessor auf der Basis von systolischen Netzwerken sind beschrieben in der französischen Patentanmeldung 94 10158, angemeldet auf den Namen von Thomson Consumer Electronics am 19. August 1994.
  • Die systolischen Netzwerke sind Schaltungen, die die Auswertung der Verzerrung zwischen einem laufenden Pixelblock und einem Block derselben Größe eines Untersuchungsfensters eines vergangenen oder künftigen Bildes durchführen. Die systolischen Netzwerke enthalten Speicherelemente für die Speicherung der laufenden Blöcke. Diese laufenden Blöcke werden mit Blöcken derselben Größe von einem Referenzfenster verglichen. Die Blöcke des Referenzfensters werden in der Form von Pixelbändern in die systolischen Netzwerke eingegeben und breiten sich darin Spalte für Spalte aus.
  • Die verschiedenen systolischen Netzwerke des Coprozessors können in verschiedenen Betriebsmodi benutzt werden. Insbesondere können systolische Netzwerke in Reihe ausgebildet werden, um verschiedene laufende Blöcke zu verarbeiten.
  • Die Aufgabe der Erfindung besteht darin, die Speisung der systolischen Netzwerke mit Daten zu optimieren.
  • Gegenstand der Erfindung ist ein Verfahren zur Datenverarbeitung in matrixförmigen Netzwerken in einem Bewegungsschätzungssystem, dadurch gekennzeichnet, daß jedes Netzwerk eine Berechnung der Verzerrung für einen Pixelblock in einem laufenden Bild durchführt, daß wenigstens zwei Netzwerke in Reihe liegen und die Berechnungen für wenigstens zwei aneinanderliegende Blöcke des laufenden Bildes durchführen, daß das Referenzfenster der Gesamtheit dieser Blöcke entspricht, die in Pixelbändern in das erste der Netzwerke eingegeben werden und sich von Netzwerk zu Netzwerk in der Reihe von Netzwerken ausbreiten, daß die Zuordnung der Blöcke zu den Netzwerken und die Eingaberichtung des Bandes in die Netzwerke derart ist, daß der letze Teil des in das Netzwerk eingegebenen Bandes einem Teil des Fensters des Block entspricht, der dem ersten der Netzwerke zugeordnet ist.
  • Gemäß einer besonderen Ausführungsform sind die Referenzfenster um Lagen von laufenden Blöcken zentriert, und die Fenster der beiden aneinanderliegenden Blöcke sind um einen Block verschoben.
  • Gemäß einer besonderen Ausführungsform weisen die verschiedenen Fenster identische Abmessungen auf, und die Zuordnung der Blöcke zu den Netzwerken und die Eingaberichtung des Bandes in die Netzwerke sind derart ausgebildet, daß die ersten Berechnungsergebnisse für die Verzerrung, die durch die verschiedenen Netzwerke erfolgen, zur gleichen Zeit verfügbar sind.
  • Gemäß einer besonderen Ausführungsform werden ein erster Block und ein zweiter Block, die horizontal aneinander liegen, durch ein erstes Netzwerk bzw. ein zweites Netzwerk, die in dieser Reihenfolge in Reihe liegen, verarbeitet, und die Eingabe des Pixelbandes durch das erste Netzwerk beginnt in einer solchen Richtung, daß der Teil des Bandes, der dem dem zweiten Block zugeordneten Fenster entspricht, als erster eingegeben wird.
  • Gemäß einer besonderen Ausführungsform werden dann, wenn das Ende eines Pixelbandes Teilen der Referenzfenster entspricht, die normalerweise durch ein einen gegebenen Block verarbeitendes besonderes Netzwerk nicht berücksichtigt werden müssen, dennoch die Berechnungsergebnisse aus den diesen Teilen der Fenster entsprechenden Daten berücksichtigt, um das Referenzfenster zu vergrößern, das normalerweise dem durch das besondere Netzwerk verarbeiteten Block zugeordnet ist.
  • Weitere Merkmale und Vorteile der Erfindung ergeben sich aus der Beschreibung eines nicht einschränkenden besonderen Ausführungsbeispiels, das in den beigefügten Figuren beschrieben wird.
  • - Fig. 1 zeigt ein Funktionsdiagramm eines Prozessors für eine Bewegungsschätzung,
  • - Fig. 2a und 2b zeigen schematisch die angewendete Strategie für den Vergleich gemäß dem vorliegenden Ausführungsbeispiel,
  • - Fig. 3 zeigt ein Funktionsdiagramm eines systolischen Netzwerks, das für die Berechnung der Bewegungsvektoren angewendet wird,
  • - Fig. 4 zeigt ein Funktionsdiagramm einer sogenannten "S"-Zelle des systolischen Netzwerks von Fig. 3,
  • - Fig. 5 zeigt ein Funktionsdiagramm eines vereinfachten systolischen Netzwerks, das die Erläuterung der Wirkungsweise in dem nichtverschachtelten Modus ermöglicht,
  • - Fig. 6 zeigt ein Funktionsdiagramm eines vereinfachten systolischen Netzwerks, das die Erläuterung der Wirkungsweise im verschachtelten Modus ermöglicht,
  • - Fig. 7 zeigt ein Funktionsdiagramm des Coprozessors gemäß einer ersten Variante,
  • - Fig. 8 zeigt ein Funktionsdiagramm des Coprozessors gemäß einer zweiten Variante,
  • - Fig. 9 zeigt die Anordnung von zwei Referenzfenstern, die den beiden aneinanderliegenden Blöcken entsprechen,
  • - Fig. 10 zeigt die Speisung der beiden in Reihe angeordneten systolischen Netzwerke mit Daten gemäß einem ersten Beispiel,
  • - Fig. 11 zeigt die Speisung von zwei in Reihe liegenden systolischen Netzwerken mit Daten gemäß einem ersten Ausführungsbeispiel der Erfindung,
  • - Fig. 12 zeigt die Speisung der beiden in Reihe liegenden systolischen Netzwerke mit Daten gemäß einem zweiten Ausführungsbeispiel der Erfindung.
  • Zunächst wird ein Beispiel eines Prozessors für die Bewegungsschätzung zur Durchführung der Erfindung beschrieben. Die Beschreibung beruht insbesondere auf der Beschreibung des Coprozessors, der das Bauteil darstellt, das die Berechnung des jedem Bewegungsvektor zugeordneten Fehlers bewirkt.
  • Für weitere Informationen über die Anwendung von Bewegungsvektoren bei der Komprimierung von Bildern entsprechend den MPEG-Normen wird verwiesen auf:
  • "Information technology, Generic coding of moving pictures and associated audio, Recommendation H.262 ISO/IEC 13818-2 (Video) Committee Draft of November 1993."
  • Der Prozessor für die Bewegungsschätzung ermöglicht die Berechnung verschiedener Typen von Bewegungsvektoren, abhängig von den Anforderungen der MPEG-Norm: Vektoren für Halbbilder oder Bilder, Vektoren eines vorangehenden Bildes zu dem laufenden Bild oder eines künftigen Bildes zu dem laufenden Bild ("Vorwärts-Vektoren" beziehungsweise "Rückwärts-Vektoren" oder "forward vectors" und "backward vectors" in der englischen Sprache). Im folgenden wird aus Gründen der Klarheit der Erläuterung das Beispiel von Vektoren von einem vorangehenden Bild zu dem laufenden Bild gewählt. Natürlich ist die Erfindung nicht auf das dargestellte Ausführungsbeispiel beschränkt.
  • Fig. 1 zeigt die Wirkungsweise eines Prozessors 101 für die Bewegungsschätzung.
  • Der Prozessor 101 enthält eine Steuereinheit RISC 102 (dabei bedeutet RISC: Reduced Instruction Set Computer"), einen Coprozessor 103 für systolische Netzwerke, drei unabhängige Eingangsstufen 104, 105, 106 zum Laden der Bilder, eine Ausgangsstufe 107 zur Lieferung der Bewegungsvektoren sowie ein örtliches RAM und ein örtliches ROM (mit 108 beziehungsweise 109 bezeichnet).
  • Die Anwesenheit mehrerer unabhängiger Eingangsstufen macht es möglich, mit beliebig vielen unabhängigen Videoquellen zu arbeiten. Gemäß einer Variante der Ausführungsform ist jede Eingangsstufe mit einer Unterabtast- Schaltung zur Durchführung einer hierarchischen Bewegungsschätzung versehen.
  • Die verschiedenen erwähnten Teilsysteme kommunizieren über einen Datenbus 111, der unter anderem mit einem externen Speicher vom Typ DRAM 110 verbunden ist. Eine Speicher-Verwaltungseinheit 112 regelt den Datenfluß zwischen den örtlichen Speichern. Die den Bildern entsprechenden Daten (Referenzbilder oder laufende Bilder) werden dem dynamischen Speicher 110 zugeführt. Als nächstes werden sie ausgelesen und rechtzeitig dem Coprozessor 103 zugeführt. Die durch den Coprozessor 103 berechneten Bewegungsvektoren werden über einen Pufferspeicher 114 vom Typ MV BUFF dem dynamischen Speicherllo zugeführt. Im geeigneten Zeitpunkt werden diese Vektoren ausgelesen und über die Ausgangsstufe 107 übertragen.
  • Der Prozessor 101 ist außerdem mit einem eine Schnittstelle bildenden Mikroprozessor 115 versehen, der zur Programmierung und zur Konfiguration der Steuereinheit 102 durch Fernladen des Kodes und der Berechnungsparameter dient. Die in dem dynamischen Speicher 110 gespeicherten Bewegungsvektoren sind außerdem über die Schnittstelle 115 zugänglich.
  • Eine Einheit MAX-AVR 113 berechnet den mittleren Bewegungsvektor und den maximalen Bewegungsvektor für jedes Bild.
  • Die Steuereinheit RISC 102 ist gemäß dem vorliegenden Beispiel ein Prozessor mit 19 Bit, enthaltend 62 Register und einen Datenspeicher für 64 Wörter. Die Rolle der Steuereinheit 102 besteht darin, die Anforderungen von den verschiedenen Einheiten des Prozessors 101 zu verarbeiten und sie rechtzeitig zu aktivieren.
  • Die Steuereinheit RISC 102 ist mit dem örtlichen RAM 108 und dem örtlichen ROM 109 verbunden, wobei der letztere allgemein angewendete Programme enthält.
  • Der Coprozessor 103 enthält mehrere, parallel oder in Reihe arbeitende systolische Netzwerke, abhängig von der programmierten Konfiguration. Im folgenden wird zunächst die Wirkungsweise eines einzigen systolischen Netzwerks beschrieben. Das ermöglicht ein besseres Verständnis der Wirkungsweise des Coprozessors 103, der gemäß dem vorliegenden Beispiel acht dieser Netzwerke enthält oder amalgamiert.
  • Fig. 2a zeigt den einfachsten Fall des Informationsflusses in dem systolischen Netzwerk. Die grundsätzliche Wirkungsweise des Netzwerks besteht in dem Vergleich eines laufenden Pixelblocks mit dem Inhalt eines Referenzfensters. Der laufende Block wird in dem systolischen Netzwerk 201 gespeichert. Das Referenzfenster wird bandweise dem Netzwerk zugeführt. Für jede mögliche Lage wird die Fehlerfunktion Err berechnet.
  • Aus den verschiedenen Werten der Fehlerfunktion für denselben laufenden Block, jedoch aus verschiedenen aus den Untersuchungsfenstern extrahierten Blöcken, ermittelt ein Bauteil 202 den am besten geeigneten Vektor. Dieses Bauteil wird später mehr im Detail beschrieben.
  • Fig. 2b beschreibt das Verfahren zur Ermittlung der Bänder, die dem systolischen Netzwerk zuzuführen sind. Jedes Band enthält eine Anzahl von Zeilen mit Pixeln, die der Anzahl der Zeilen des Netzwerks entspricht (4 entsprechend dem vorliegenden Beispiel). Das erste Band enthält die ersten vier Zeilen des Referenzfensters. Wenn das erste Band vollständig verarbeitet worden ist, wird die Verarbeitung mit dem folgenden Band fortgesetzt, die die drei letzten Zeilen des ersten Bandes sowie die unmittelbar auf dieses erste Band folgende Zeile enthält. Jedes Band wird daher um eine Zeile relativ zu dem vorangehenden Band versetzt.
  • Jedes Band wird dem systolischen Netzwerk Spalte für Spalte zugeführt. Der laufende Block, der dieselbe Anzahl von Zeilen wie jedes Band enthält, wird auf diese Weise mit allen Blöcken gleicher Größe jedes Bandes verglichen. Schließlich wird der laufende Block mit allen Blöcken gleicher Größe des Referenzfensters verglichen sein. Genauso viele Werte der Fehlerfunktion werden berechnet und zu dem Bauteil 202 übertragen sein.
  • Es sei bemerkt, daß sich zwei Bänder nur um eine Zeile mit Pixeln unterscheiden. Diese Redundanz wird später ausgewertet, um die Ladung mit Daten von dem Speicher 10 zu begrenzen.
  • Fig. 3 zeigt ein systolisches Netzwerk mit vier Zeilen und fünf Spalten. Dieses Netzwerk enthält sogenannte "S"-Zellen, Puffer "B", Addierstufen "Add", Umgehungszellen 301 und eine letze Umgehungszelle 302.
  • Die Zellen S bewirken die Berechnung a-b , wobei a und b die Werte eines Pixels des laufenden Blocks beziehungsweise eines Pixels des Referenzfensters sind. Der Ausgang jeder Zelle S derselben Zeile ist über einen Puffer B mit dem Eingang der folgenden Zelle S verbunden. Ein Puffer B liegt außerdem vor jeder ersten Zelle S einer Zeile. Die Pixelwerte b breiten sich von einem Puffer zu einem nächsten Puffer in derselben Zeile bei jedem Zyklus aus. Die Puffer halten die Werte b aufrecht, während die Zellen S ihre Berechnungen durchführen.
  • Jede Zelle S besitzt außerdem einen Ausgang C, der das Ergebnis des Vorgangs a-b liefert. Die Ausgänge C sind außerdem mit Puffern B verbunden. Alle Puffer B derselben Spalte sind mit derselben Addierstufe Add verbunden. Es gibt somit genauso viele Addierstufen wie Spalten.
  • Der Ausgang einer Addierstufe ist über drei in Reihe liegende Puffer B mit dem Eingang der folgenden Addierstufe verbunden. Entsprechend dem gewählten Operationsmodus wird der letzte der drei Puffer durch eine Umgehungszelle 301 kurzgeschlossen oder nicht kurzgeschlossen.
  • Die letzte Umgehungszelle lieferte entweder einen Wert der Fehlerfunktion bei jedem Zyklus in einem nicht-verschachtelten normalen Betrieb oder einen Wert der Fehlerfunktion in jedem zweiten Zyklus im verschachtelten Modus. Im letzten Fall addiert die in dieser letzten Umgehungszelle 301 integrierte Addierstufe zwei aufeinanderfolgende Werte der Fehlerfunktion.
  • Gemäß einer Variante der Ausführungsform werden die Addierstufen Add mit Hilfe von Addierstufen mit drei Eingängen gebildet (sogenannte "Three input carry save adders").
  • Fig. 4 zeigt mehr im Detail die Funktionen einer Zelle S. Die Zelle S enthält einen Eingang 401, einen direkt mit dem Eingang 401 verbundenen Ausgang 402, eine Berechnungseinheit 403 mit zwei Eingängen, von denen einer mit dem Eingang 401 und der andere mit dem Ausgang eines Multiplexers 404 verbunden ist, der es ermöglicht, mittels einer Auswahlleitung 405 entweder den Inhalt eines Puffers 406 oder den Inhalt eines Puffers 407 auszuwählen. Die Eingänge der Puffer 406 und 407 sind ebenso mit dem Eingang 401 der Zelle verbunden.
  • Jeder der beiden Puffer enthält einen Pixelwert eines laufenden Blocks. Diese Werte werden in einem geeigneten Zeitpunkt über den Eingang 401 geladen. Die Steuerschaltungen der Puffer sind bekannt und werden daher nicht mehr im Detail dargestellt. Die Anwesenheit von zwei Puffern parallel ermöglicht es unter anderem, zur selben Zeit zwei laufende Blöcke in einem einzigen systolischen Netzwerk zu speichern. Somit können zwei Vergleichsvorgänge für dieselbe Lage in dem Referenzfenster durchgeführt werden. Die Menge der zwischen dem dynamischen Speicher 10 und dem Coprozessor 3 laufenden Daten wird auf diese Weise verringert.
  • Die Anwesenheit von zwei Puffern in jeder Zelle S ermöglicht darüberhinaus einen sogenannten verschachtelten Betrieb, der es möglich macht, die Anzahl an Zeilen des laufenden Blocks gegenüber der Anzahl an Zeilen des systolischen Netzwerks zu verdoppeln. Dieser Betrieb wird später erörtert.
  • Die Berechnungseinheit liefert den Absolutwert der Differenz der beiden ihren Eingängen zugeführten Werte.
  • Es sei bemerkt, daß im Rahmen dieses Beispiels die Werte b der Pixel des Referenzfensters in den Puffern B zwischen den Zellen S gespeichert werden, während die Werte a der Pixel des laufenden Blocks oder der laufenden Blöcke in den Puffern der Zellen S gespeichert werden.
  • Es sei auch bemerkt, daß die Funktionen der Akkumulation der durch die Zellen S erzeugten Zwischenergebnisse vollständig durch die Addierstufen am Fuße jeder Spalte der Zellen S erfolgten.
  • Die normale Wirkungsweise (nicht verschachtelt) des systolischen Netzwerks wird mittels des Schemas von Fig. 5 erläutert. Dieses Schema zeigt ein systolisches Netzwerk mit einer einzigen Zeile und acht Spalten. Die Wirkungsweise eines Netzwerks mit einer größeren Anzahl an Zeilen ist vollständig ähnlich, wobei die Ergebnisse am Ausgang jeder Zelle S (Ausgang S) im selben Zeitpunkt den Addierstufen zugeführt werden. Im Rahmen der normalen Wirkungsweise werden nur zwei Puffer zwischen jeder Addierstufe am Ende der Spalte benötigt. Zur Klarheit des Schemas sind der dritte Puffer und die Umgehungszelle nicht dargestellt.
  • Die Pixelwerte wurden bereits in dem Netzwerk gespeichert. Ein Wert b ist am Eingang des Netzwerks bei jedem Zyklus dargestellt. Tabelle 1 zeigt den Verlauf der Ausgänge C über eine bestimmte Anzahl an Zyklen. Tabelle 1
  • Während des Zyklus 0 wird der Wert b0 in dem ersten Puffer B (Bezugszeichen 501) am Eingang des Netzwerks gespeichert. Es ist nur beim Zyklus 1 der Fall, daß das durch die erste Zelle S gelieferte Ergebnis in dem Puffer 502 am Ausgang C0 gespeichert wird. Während des Zyklus 1 wird der Wert b0 ebenso durch den zweiten Puffer B 503 gespeichert.
  • In einem gegebenen Zeitpunkt in der Funktionsweise des Netzwerks muß am Ausgang der letzten Addierstufe die Summe aller Absolutwerte der Differenzen, die einer gegebenen Lage des laufenden Blocks entsprechen (in diesem Fall eine Zeile mit acht Pixeln), in dem Referenzfenster zurückgewonnen werden. Die Ergebnisse, die dem Pegel der Addierstufen für die erste Zeile des Referenzfensters hinzugefügt werden müssen, sind in Tabelle 1 in fetter Schrift dargestellt.
  • Diese Funktion der Akkumulation bedingt die durch die Puffer 504 zwischen den Addierstufen eingefügte Verzögerung. Es ist leicht erkennbar, daß eine Verzögerung von zwei Zyklen eingeführt werden muß, damit die Ausbreitung der Ergebnisse beim Pegel der Addierstufen richtig erfolgt. Das erklärt die Anwesenheit der beiden Puffer zwischen jeder Addierstufe. Jeder Puffer führt eine Verzögerung um einen Zyklus ein, In anderen Worten, die beiden Puffer 504 und 505 zwischen den beiden ersten Addierstufen beseitigen die durch die Puffer 501 und 502 eingeführte Verzögerung.
  • Am Ende des fünfzehnten Zyklus ist der Wert der Funktion Err für die erste mögliche Lage des laufenden Blocks am Ausgang 506 des Netzwerks dargestellt.
  • Es sei erwähnt, daß bei dieser Wirkungsweise nur eine der in jeder Zelle gespeicherten Werte benutzt wird. Gemäß einer Variante der Ausführungsform wird ein einziger Puffer für die Speicherung der Pixelwerte des laufenden Blocks in jeder Zelle S benutzt.
  • Fig. 6 und Tabelle 7 zeigen die Wirkungsweise eines systolischen Netzwerks in dem sogenannten verschachtelten Modus. Dieser Modus macht es möglich, Fehlerfunktionen für laufende Blöcke zu bestimmen, die eine Anzahl an Zeilen gleich dem Doppelten der Anzahl an Zeilen des systolischen Netzwerks enthalten. Das erfolgt in einfacher Weise durch Hinzufügung eines zusätzlichen Puffers in jeder Zelle S sowie eines zusätzlichen Puffers zwischen jeder Addierstufe.
  • Fig. 6 ist ähnlich zu Fig. 5. abgesehen von der Tatsache, daß ein zusätzlicher Puffer zwischen jedem Paar von Addierstufen eingefügt ist. Außerdem enthält jede Zeile S die beiden in Fig. 4 dargestellten internen Puffer. Während der geradzahligen Zyklen wird der Inhalt des ersten Puffers jeder Zelle S mit der entsprechenden Berechnungseinheit gemultiplext, während der Inhalt des zweiten Puffers während der ungeradzahligen Zyklen benutzt wird.
  • Der laufende Block mit verdoppelter Größe wird in zwei einander vertikal überlappende Unterblöcke a und a' aufgetrennt. Der erste Unterblock a wird in den ersten Puffern jeder Zelle S gespeichert, während der zweite Unterblock a' in den zweiten Puffern jeder Zelle S gespeichert wird.
  • Das Band des Referenzfensters enthält in identischer Weise die doppelte Anzahl von Zeilen. Es enthält ein oberes Unterband b und ein unters Unterband b'. Während eines geradzahligen Zyklus wird eine Spalte des Unterbands b an dem Eingang des systolischen Netzwerks dargestellt, während eine Spalte von b' während der ungeradzahligen Zyklen dargestellt wird.
  • Tabelle 2 gibt den Zustand der Ausgänge c nach jedem Zyklus wieder. Wie vorher zeigen die fetten Schriftzeichen die Zwischenergebnisse an, die hinzugefügt werden müssen, um eine einem Unterblock entsprechende Fehlerfunktion zu bilden.
  • Die Abwechslung zwischen den beiden Unterblöcken und den beiden Unterbändern führt bezüglich eines nicht-verschachtelten Betriebs eine zusätzliche Verzögerung um einen Zyklus zwischen der Anwesenheit am Ausgang einer Addierstufe des Gesamtfehlers entsprechend einer gegebenen Lage und der Anwesenheit des dem Eingang der nächsten Addierstufe entsprechenden Zwischenergebnisses ein. Aus diesem Grund ist ein dritter Puffer zwischen jedem Paar von Addierstufen eingefügt.
  • Die letzte Addierstufe 601 des Netzwerks von Fig. 6 ist einerseits mit einem ersten Eingang einer Addierstufe 602 und andererseits mit einem Puffer 603 verbunden, dessen Ausgang mit dem zweiten Eingang der Addierstufe 602 verbunden ist.
  • Die einem Unterblock entsprechende Fehlerfunktion wird bei jedem Zyklus an den Ausgang der Addierstufe 601 geliefert (sobald das Netzwerk einmal richtig initialisiert worden ist). Tabelle 2 zeigt, daß der dem Unterblock a' entsprechende Wert der Fehlerfunktion gegenüber dem dem Unterblock a entsprechenden Wert um einen Zyklus verzögert ist. Die beiden Werte müssen addiert werden, um den dem gesamten Block a+a' entsprechenden Wert der Fehlerfunktion zu erhalten.
  • Dieser sogenannte verschachtelte Funktionsmodus ist sehr nützlich, da er es ermöglicht, die Größe des Datenbus zu verringern, der die Pixelbänder dem Prozessor zuführt.
  • Gemäß einer Variante der Ausführungsform ist das systolische Netzwerk dafür ausgebildet, laufende Blöcke zu verarbeiten, die eine Anzahl an Zeilen gleich dem N-fachen der Anzahl der Zeilen des Netzwerks enthalten, wobei N eine ganze Zahl größer als 2 ist. In diesem Fall wird man so viele Puffer vorsehen, wie sie in jeder Zelle S notwendig sind. Tabelle 2
  • Fig. 7 zeigt schematisch den Coprozessor gemäß einer ersten Variante des Ausführungsbeispiels. Gemäß dieser Variante enthält der Coprozessor zehn sogenannte FIFOs (first in first out) 701 bis 710, die parallel mit dem Datenbus 11 verbunden sind. Die Anzahl der Datenwörter je FIFO bestimmt die Anzahl der Spalten der Pixel des Untersuchungsfensters. Die Ausgänge der Speicher 701 bis 710 sind mit einer Kommutierschaltung 712 verbunden, die zehn Eingänge und acht Ausgänge 714 bis 721 aufweist.
  • Die Schaltung 712 ermöglicht die Verbindung des Ausgangs jedes der zehn FIFOs mit jedem der acht Ausgänge der Schaltung. Jedes FIFO enthält eine vollständige Zeile des Untersuchungsfensters. Die acht FIFOs, die in einem gegebenen Zeitpunkt mit einem Ausgang verbunden sind, entsprechen den Zeilen des Bandes des verarbeiteten Untersuchungsfensters.
  • Die beiden nicht angeschlossenen zusätzlichen FIFOs werden durch den Datenbus von den in dem Speicher 10 gespeicherten Daten geladen. Die geladenen Daten entsprechen den Zeilen des Untersuchungsfensters, die sich von den derzeit verarbeiteten Bändern unterscheiden.
  • Es sei zum Beispiel angenommen, daß das erste Band von acht Zeilen L1 bis L8 eines Untersuchungsfensters in den FIFOs 701 bis 708 enthalten ist. Während der Verarbeitung dieser acht Zeilen wird die Zeile L9 in das FIFO 709 geladen. Wenn die Verarbeitung des ersten Bandes beendet ist, wird die in dem FIFO 701 gespeicherte Zeile L1 nutzlos. Das zweite Band enthält praktisch die Zeilen L2 bis L9. Die Verarbeitung dieses zweiten Bandes kann daher ohne Totzeit beginnen, da das vollständige Band in den FIFOs vorhanden ist. Die Kommutierschaltung 802 vom Typ "crossbar" hat die Aufgabe, die richtige Reihenfolge der gespeicherten Zeilen vor der Zuführung zu den systolischen Netzwerken 722 bis 725 wiederherzustellen.
  • In dem Fall, wo die Bänder acht Zeilen aufweisen, genügen neun FIFOs für den beschriebenen Betrieb. Das zehnte FIFO wird zum Beispiel benutzt, wenn zwei Bänder mit vier Zeilen parallel verarbeitet werden.
  • Gemäß der vorliegenden Variante sind vier systolische Netzwerke 722 bis 725 mit vier Zeilen und sechzehn Spalten jedes mit den Ausgängen der Kommutierschaltung verbunden. Vereinbarungsgemäß sagt man, daß der Ausgang 714 die obere Zeile eines Bandes mit acht Zeilen darstellt, während der Ausgang 721 die untere Zeile darstellt. Das erste und das dritte Netzwerk (722 beziehungsweise 724) sind mit den vier oberen Ausgängen 714 bis 717 verbunden, während das zweite und das vierte Netzwerk (723 beziehungsweise 725) mit den vier unteren Ausgängen 718 bis 721 verbunden sind.
  • Die obige Anordnung ermöglicht eine flexible Verarbeitung von laufenden Blöcken mit unterschiedlicher Größe. Tatsächlich können die vier Netzwerke auf verschiedene Weise angesehen werden:
  • Acht Netzwerke mit 4 · 8 Elementen, wobei jedes Netzwerk mit 4 · 16 Elementen zwei laufende Blöcke mit 4 · 8 Elementen verarbeitet,
  • Vier Netzwerke mit 8 · 8 Elementen,
  • Zwei Netzwerke mit 8 · 16 Elementen,
  • Zwei Netzwerke mit 16 · 16 Elementen.
  • Im letzten Fall arbeiten die Netzwerke im verschachtelten Modus, wobei nur acht Ausgänge und nicht sechzehn verfügbar sind. Die acht Ausgänge liefern abwechselnd Spalten mit acht Pixeln eines oberen Bandes und eines unteren Bandes des Referenzfensters.
  • Offensichtlich kann man auch erwägen, sechzehn FIFOs anstelle von acht zu benutzen (ohne die FIFOs zu zählen, die für das Laden der nächsten Zeile benötigt werden).
  • Wie bereits vorher erwähnt, bestimmt die Tiefe der FIFOs die Breite des Referenzfensters. In dem Fall, wo man mit Netzwerken mit 4 · 8 Elementen arbeitet, ist es möglich, die FIFOs in Paaren zu gruppieren und das Äquivalent einer Zeile von Pixeln mit doppelter Länge in jedem Paar von FIFOs zu speichern.
  • Fig. 7 zeigt außerdem in Form von Pfeilen die Art der Gruppierung der Berechnungsergebnisse am Ausgang jedes Netzwerks mit 4 · 16 Elementen gemäß dem Betriebsmodus.
  • Fig. 8 zeigt eine zweite Variante. Neun FIFOs (unter dem Bezugszeichen 801 gruppiert) speisen eine Kommutierschaltung 802. Der Coprozessor gemäß dem vorliegenden Beispiel enthält acht systolische Netzwerke 803 bis 810 mit 4 · 8 Elementen. Tatsächlich sind zwei Netzwerke 4 · 8 in Kaskade der Fig. 8 äquivalent zu einem Netzwerk 4 · 16 von Fig. 7. Fig. 8 zeigt noch besser die Übertragung der Berechnungsergebnisse jedes der Netzwerke, wenn acht laufende Blöcke von 4 · 8 parallel verarbeitet werden. Die beiden oberen Netzwerke 803 und 804 sind als Beispiel angeführt. Das endgültige Ergebnis (das heißt der Wert der Fehlerfunktion) am Ausgang des Netzwerks 803 wird direkt zu dem Netzwerk 804 übertragen. Abhängig davon, ob man mit acht laufenden Blöcken mit 4 · 4 oder mit vier laufenden Blöcken mit 8 · 8 arbeitet, muß, das Ergebnis am Ausgang des Netzwerks 803 für die spätere Verarbeitung verfügbar sein oder auch nicht verfügbar sein. In dem Fall, wo man mit acht laufenden Blöcken mit 4 · 4 Pixeln arbeitet, wird dieses Ergebnis für die Bestimmung des Bewegungsvektors des durch das Netzwerk 803 verarbeiteten Blocks benötigt.
  • Gemäß der vorliegenden Variante ist jedem Netzwerk mit 4 · 8 Elementen eine Zelle M zugeordnet. Jede Zelle M bestimmt den Minimalwert der Fehlerfunktion am Ausgang eines der Netzwerke aus allen einem Block zugeordneten Fehlerwerten und behält die Koordinaten des zugehörigen Bewegungsvektors in dem Speicher. Die Ergebnisse werden über einen speziellen Datenbus 811 übertragen.
  • Die Ausgänge der Netzwerke 803 und 804, 807 und 808 sind jede mit dem Eingang eines Multiplexers mit zwei Eingängen verbunden, dessen Ausgang mit dem Eingang der zugehörigen Zelle M verbunden ist. Der Ausgang jedes derselben Netzwerke ist außerdem mit dem Eingang einer Addierstufe mit zwei Eingängen verbunden, die an ihrem anderen Eingang den Ausgang des unmittelbar darunterliegenden Netzwerks empfängt. Für die Netzwerke 803, 804, 807 und 808 sind dieses jeweils die Ausgänge der Netzwerke 805, 806, 809 und 810.
  • Wenn der Prozessor auf acht laufenden Blöcken mit je 4 · 8 Pixeln arbeitet, ist der Ausgang jedes Netzwerks direkt mit der zugehörigen Zelle M verbunden. Jede Zelle bestimmt dann für sich alleine den Minimalwert der Fehlerfunktion und den Bewegungsvektor. Das ergibt acht verschiedene Vektoren. Die Werte der Fehlerfunktion am Ausgang der Netzwerke 803, 805, 807 und 809 werden nicht zu den Netzwerken übertragen, die auf diese in Reihe folgen.
  • Wenn der Prozessor auf vier Blöcken mit 8 · 8 Pixeln arbeitet, schalten die Multiplexer derart um, daß eine der Zellen M, die den beiden auf demselben Block arbeitenden Zellen überlagert sind, die Summe der Werte der Fehlerfunktionen empfängt, die durch diese beiden Netzwerke berechnet werden. Zum Beispiel bewirkt die dem Netzwerk 803 zugeordnete Zelle M ihre Berechnungen aus den Werten der Fehlerfunktion, die den 8 · 8 in den Netzwerken 803 und 805 verarbeiteten Block entsprechen. Daraus ergibt sich ein einziger Vektor. Wie im Falle des vorangehenden Absatzes werden die Werte der Fehlerfunktion, die sich aus der ersten Spalte der Netzwerke ergibt, nicht zu der zweiten Spalte übertragen.
  • Wenn der Prozessor auf zwei Blöcken mit 8 · 16 Pixeln arbeitet, werden nur die den Netzwerken 804 und 808 zugeordneten Zellen M benutzt. Diese Paare von Netzwerken 4 · 8 803 und 804, 805 und 806, 807 und 808 und schließlich 809 und 810 werden so gedeutet, daß jede nur ein kontinuierliches Netzwerk mit den Abmessungen 4 · 16 bildet. Zum Beispiel addiert die dem Netzwerk 804 zugeordnete Addierstufe die von den Netzwerken 804 und 806 ausgehenden Fehler. Die durch die Netzwerke 803 und 805 berechneten Werte der Fehlerfunktion sind in den Werten der Fehlerfunktion enthalten, die durch die Netzwerke 804 und 806 berechnet und über die Verbindungen zwischen den Netzwerken 803 und 804 beziehungsweise 805 und 806 zu diesen übertragen werden.
  • Im Falle eines verschachtelten Modus ist das Prinzip identisch. Einfach angenommen, die Zelle oder die Zellen M halten zwei Bewegungsvektoren aufrecht, eine für jeden Block.
  • Die Kommutation der Multiplexer wird durch die Steuerstufe 2 der Fig. 1 in Abhängigkeit von dem gewählten Betriebsmodus gesteuert.
  • Fig. 9 zeigt die Anordnung der beiden Referenzfenster, wenn zwei laufende Blöcke verarbeitet werden müssen. Diese laufenden Blöcke tragen die Bezugsziffern 1 und 2. Die Bezugsziffern X1Min und X1 Max bezeichnen die Abszissen des dem Block 1 entsprechenden Referenzfensters, während X2Min und X2Max die Abszissen des dem Block 2 zwei entsprechenden Referenzfensters bezeichnen. Die Lage der Blöcke 1 und 2 entspricht in dem vorliegenden Beispiel im wesentlichen der Mitte der Fenster. Es ist ersichtlich, daß die beiden Fenster den gesamten Teil zwischen den Abszissen X2Min und X2Max gemeinsam haben.
  • Der systolische Coprozessor ermöglicht eine Verarbeitung, die nur einen Durchlauf der Pixel zwischen den Abszissen X1Min und X2Max für die Berechnungen für die beiden Blöcke 1 und 2 erfordert.
  • Wie oben beschrieben, können zwei systolische Netzwerke in Reihe (wie zum Beispiel die beiden Netzwerke 803 und 804) zwei getrennte Blöcke verarbeiten. Während die Pixeldaten in durchsichtiger Weise von einem Netzwerk zu dem nächsten laufen, werden die durch das erste Netzwerk berechneten Werte der Fehlerfunktion nicht einfach zu dem folgenden Netzwerk übertragen. Die dem ersten beziehungsweise dem zweiten Netzwerk zugeordneten beiden Zellen M stellen getrennt die Werte der jedem der beiden Netzwerke entsprechenden Fehlerfunktionen wieder her.
  • Fig. 10 zeigt ein erstes Beispiel der Anordnung und der Einführung der Pixeldaten in die beiden in Reihe angeordneten systolischen Netzwerke. Zur Erläuterung dient das obere Band der Pixel zwischen den Abszissen X1Min und X2Max. Die Bezugsziffern A und B bezeichnen die Lagen der ersten Blöcke in den beiden Referenzfenstern, die mit den laufenden Blöcken zu vergleichen sind, und lassen besser die Art erkennen, in der die Daten in das Netzwerk eingeführt werden.
  • Es scheint natürlich, den Block 1 durch das erste systolische Netzwerk (zum Beispiel das Netzwerk 803) und den Block 2 durch das zweite Netzwerk (zum Beispiel 804) zu verarbeiten. Somit entspricht diese Anordnung der natürlichen Anordnung der Blöcke 1 und 2 in dem laufenden Bild. Außerdem wäre dann, wenn die beiden Netzwerke in Reihe arbeiten (gemäß einem anderen Betriebsmodus) auf einem Block mit der doppelten Größe relativ zu der Größe eines der Blöcke 1 oder 2 diese Anordnung völlig natürlich.
  • Somit ist ersichtlich, daß diese Anordnung Vorteile für das im folgenden anhand der Fig. 11 beschriebene erfindungsgemäße Verfahren liefert.
  • In Tabelle 1 ist ersichtlich, daß für Netzwerke mit einer Länge von acht Pixeln die für die letzte Spalte des ersten Referenzblocks vorgenommene Berechnung nur beim Zyklus 15 erfolgt.
  • Wenn man die Anordnung von Fig. 10 betrachtet, sind die Berechnungen für den Block A und den Block 1 nach dem Zyklus 15 beendet. Diejenige, die dem Block A und dem Block B entsprechen, werden erst zu Beginn des Zyklus 17 beginnen, wenn der gesamte Block B das erste Netzwerk passiert hat.
  • Es ist daher ersichtlich, daß das erste gültige Ergebnis (entsprechend dem Block A) von dem ersten Netzwerk nicht zur selben Zeit wie das erste gültige Ergebnis (entsprechend Block B) von dem zweiten Netzwerk verfügbar sein wird.
  • Das erfordert eine versetzte oder gestaffelte Verwaltung der Ergebnisse jedes der Netzwerke, wodurch das System komplexer wird.
  • Außerdem muß das Band in das Netzwerk gelangen, bis der Block C von Fig. 10 sich vollständig in dem zweiten Netzwerk befindet. Das besagt, daß 2*(X2Max-X1 Min+X2Min-X1 Min) Zyklen notwendig sind, um das gesamte Band zu verarbeiten. Das erste Netzwerk wird unnütze Berechnungen durchführen, während der Block C in das zweite Netzwerk gelangt, und umgekehrt wird das zweite Netzwerk unnütze Berechnungen durchführen, während es darauf wartet, daß die erste Spalte von Pixeln des Block B ihn über das erste Netzwerk erreicht. Gemäß einer Variante der Ausführungsform wird dieser Nachteil dadurch minimiert, daß alle Bänder eines Bildes kontinuierlich verarbeitet werden, indem ein Band nach dem anderen, ohne Lücken zu belassen, in das systolische Netzwerk eingegeben wird.
  • Fig. 11 zeigt ein besonderes Beispiel des Verfahrens gemäß der Erfindung. Die beiden Blöcke 1 und 2 werden derart gespeichert, daß ihre Anordnung invers zu ihrer Anordnung in dem laufenden Bild ist. In diesem Fall wird der Block 2 in dem ersten Netzwerk gespeichert, während der Block 1 in dem folgenden Netzwerk gespeichert wird.
  • Auf diese Weise wird der Block A durch das zweite Netzwerk zur gleichen Zeit wie der Block B verarbeitet, und die Ergebnisse für ein und dasselbe Band sind parallel und zur gleichen Zeit für beide Blöcke verfügbar. Solange die erste Spalte von Pixeln des Blocks A das zweite Netzwerk nicht erreicht hat, sind die durch die beiden Netzwerke durchgeführten Berechnungen unnütz (zumindest wenn die Berechnung eines vorangehenden Bandes nicht zuende geht). Es ist jedoch nicht notwendig, darauf zu warten, daß der Block C vollständig das erste Netzwerk durchläuft, da er nur durch dieses erste Netzwerk verarbeitet wird. Es ergibt sich daher eine Zeitersparnis entsprechend einem vollständigen Block (16 Zyklen), entweder für das verarbeitete Band oder für das verarbeitete Bild, wenn man eine kontinuierliche Einführung der Bänder annimmt.
  • Gemäß einer Variante der Ausführungsform der Erfindung werden die durch das erste Netzwerk gelieferten Ergebnisse berücksichtigt, selbst was die dem Block A entsprechenden Pixel betrifft. Das führt eine Asymmetrie des Referenzfensters um die Lage des Blocks 2 ein. In dem Maße, wie diese Asymmetrie nicht stört (die derart ermittelten Bewegungsvektoren können nicht maximale negative und positive Komponenten gleicher Amplitude enthalten), erweitert diese Variante das Referenzfeld, ohne die Gesamt- Berechnungszeit zu verlängern. Diese Variante kann ebenso zu Beginn eines Bandes wie auch an seinem Ende angewendet werden. Trotzdem geht in diesem Fall der Vorteil, daß die Ergebnisse für die beiden Blöcke zur gleichen Zeit verfügbar sind, verloren.
  • Es sei bemerkt, daß die Umkehr der Blöcke 1 und 2 bezüglich der Lage gemäß Fig. 10 zu demselben Ergebnis führt, wie wenn die Anordnung von Fig. 10 beibehalten und das Band von Pixeln während seiner Umkehr eingefügt würde. Das bedeutet, daß mit den Pixeln mit der Abszisse X2Max begonnen und mit denen mit der Abszisse X2Min beendet wird. In diesem Fall werden die Pixel in jedem der laufenden Blöcke 1 und 2 invertiert. Dieser Ausführungsmodus ist in Fig. 12 dargestellt.
  • Die Erfindung ist nicht auf das Beispiel des beschriebenen systolischen Netzwerks beschränkt, sondern ebenso bei andern Typen von Netzwerken anwendbar, die insbesondere für die Bewegungsschätzung angewendet werden.
  • Außerdem können mehr als zwei Netzwerke in Reihe angeordnet sein.

Claims (5)

1. Verfahren zur Datenverarbeitung in matrixförmigen Netzwerken (803, 804) in einem Bewegungsschätzungssystem, dadurch gekennzeichnet, daß jedes Netzwerk (803, 804) eine Berechnung der Verzerrung (Err) für einen Pixelblock (1, 2) in einem laufenden Bild durchführt, daß wenigstens zwei Netzwerke (803, 804) in Reihe liegen und die Berechnungen für wenigstens zwei aneinanderliegende Blöcke (1, 2) des laufenden Bildes durchführen, daß das Referenzfenster der Gesamtheit dieser Blöcke entspricht, die in Pixelbändern in das erste der Netzwerke (803) eingegeben werden und sich von Netzwerk zu Netzwerk in der Reihe von Netzwerken ausbreiten, daß die Zuordnung der Blöcke (1, 2) zu den Netzwerken und die Eingaberichtung des Bandes in die Netwerke derart ist, daß der letze Teil (C, bzw. A) des in das Netzwerk eingegebenen Bandes einem Teil des Fensters des Block (2 bzw. 1) entspricht, der dem ersten der Netzwerke zugeordnet ist.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Referenzfenster um Lagen von laufenden Blöcken zentriert sind und die Fenster der beiden aneinanderliegenden Blöcke dadurch um einen Block verschoben sind.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß die verschiedenen Fenster identische Abmessungen aufweisen, daß die Zuordnung der Blöcke (1, 2) zu den Netzwerken und die Eingaberichtung des Bandes in die Netzwerke derart ausgebildet ist, daß die ersten Berechnungsergebnisse für die Verzerrung, die durch die verschiedenen Netzwerke erfolgen, zur gleichen Zeit verfügbar sind.
4. Verfahren nach einem der Ansprüche 2 bis 3, dadurch gekennzeichnet, daß ein erster Block (1) und ein zweiter Block (2), die horizontal aneinander liegen, durch ein erstes Netzwerk (803) bzw. ein zweites Netzwerk (804), die in dieser Reihenfolge in Reihe liegen, verarbeitet werden, daß die Eingabe des Pixelbandes durch das erste Netzwerk in einer solchen Richtung beginnt, daß der Teil des Bandes, der dem dem zweiten Block (2) zugeordneten Fenster entspricht, als erstes eingegeben wird.
5. Verfahren nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, daß dann, wenn das Ende eines Pixelbandes Teilen der Referenzfenster entspricht, die normalerweise durch ein einen gegebenen Block verarbeitendes besonderes Netzwerk nicht berücksichtigt werden müssen, dennoch die Berechnungsergebnisse aus den diesen Teilen der Fenster entsprechenden Daten berücksichtigt werden, um das Referenzfenster zu vergrößern, das normalerweise dem durch das besondere Netzwerk verarbeiteten Block zugeordnet ist.
DE69609931T 1995-12-06 1996-12-05 Verfahren zur Datenverarbeitung in matrixförmigen Netzwerken in einem Bewegungsschätzungssystem Expired - Fee Related DE69609931T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9514432A FR2742248B1 (fr) 1995-12-06 1995-12-06 Procede de traitement de donnees dans des reseaux matriciels dans un systeme d'estimation de mouvement

Publications (2)

Publication Number Publication Date
DE69609931D1 DE69609931D1 (de) 2000-09-28
DE69609931T2 true DE69609931T2 (de) 2001-03-29

Family

ID=9485205

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69609931T Expired - Fee Related DE69609931T2 (de) 1995-12-06 1996-12-05 Verfahren zur Datenverarbeitung in matrixförmigen Netzwerken in einem Bewegungsschätzungssystem

Country Status (6)

Country Link
US (1) US5870500A (de)
EP (1) EP0778544B1 (de)
JP (1) JPH09182088A (de)
CN (1) CN1115880C (de)
DE (1) DE69609931T2 (de)
FR (1) FR2742248B1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3226020B2 (ja) * 1997-05-28 2001-11-05 日本電気株式会社 動きベクトル検出装置
JP3540142B2 (ja) * 1998-01-30 2004-07-07 株式会社東芝 動きベクトル検出回路および動きベクトル検出方法
US6400764B1 (en) * 1999-04-06 2002-06-04 Koninklijke Philips Electronics N. V. Motion estimation method featuring orthogonal-sum concurrent multi matching
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
JP4164257B2 (ja) * 2001-12-06 2008-10-15 キヤノン株式会社 画像処理装置、画像処理方法、プログラム、及び記憶媒体
JP2004005287A (ja) * 2002-06-03 2004-01-08 Hitachi Ltd コプロセッサを搭載したプロセッサシステム
US7817717B2 (en) * 2002-06-18 2010-10-19 Qualcomm Incorporated Motion estimation techniques for video encoding
JP3934568B2 (ja) * 2003-03-04 2007-06-20 松下電器産業株式会社 動画符号化方法および装置
CN100356780C (zh) * 2005-02-03 2007-12-19 清华大学 用于压缩视频信号解码的图像存储方法
TWI277010B (en) * 2005-09-08 2007-03-21 Quanta Comp Inc Motion vector estimation system and method
KR100856411B1 (ko) * 2006-12-01 2008-09-04 삼성전자주식회사 조도 보상 방법 및 그 장치와 그 방법을 기록한 컴퓨터로 읽을 수 있는 기록매체

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04207788A (ja) * 1990-11-30 1992-07-29 Sony Corp 画像信号符号化装置及び方法
US5198901A (en) * 1991-09-23 1993-03-30 Matsushita Electric Corporation Of America Derivation and use of motion vectors in a differential pulse code modulation system
JPH0595540A (ja) * 1991-09-30 1993-04-16 Sony Corp 動画像符号化装置
US5594813A (en) * 1992-02-19 1997-01-14 Integrated Information Technology, Inc. Programmable architecture and methods for motion estimation
WO1993023816A1 (en) * 1992-05-18 1993-11-25 Silicon Engines Inc. System and method for cross correlation with application to video motion vector estimation
JPH06205388A (ja) * 1992-12-28 1994-07-22 Canon Inc 画像符号化装置
DE69327040T2 (de) * 1993-02-22 2000-04-13 Industrial Technology Research Institute, Chutung Blockübereinstimmungsarchitektur mit mehreren Modulen
US5467413A (en) * 1993-05-20 1995-11-14 Radius Inc. Method and apparatus for vector quantization for real-time playback on low cost personal computers
JP3153404B2 (ja) * 1994-02-02 2001-04-09 松下電器産業株式会社 ディジタルビデオ・ビットストリームコーダ
TW321748B (de) * 1994-02-23 1997-12-01 Rca Thomson Licensing Corp
FR2723796B1 (fr) * 1994-08-19 1996-11-29 Thomson Consumer Electronics Dispositif d'estimation de mouvement
US5596369A (en) * 1995-01-24 1997-01-21 Lsi Logic Corporation Statistically derived method and system for decoding MPEG motion compensation and transform coded video data

Also Published As

Publication number Publication date
FR2742248B1 (fr) 1998-01-23
FR2742248A1 (fr) 1997-06-13
JPH09182088A (ja) 1997-07-11
EP0778544A1 (de) 1997-06-11
CN1115880C (zh) 2003-07-23
DE69609931D1 (de) 2000-09-28
EP0778544B1 (de) 2000-08-23
US5870500A (en) 1999-02-09
CN1156384A (zh) 1997-08-06

Similar Documents

Publication Publication Date Title
DE69032874T2 (de) Codiersystem für bewegte Bilder nach der Multiprozessorart und Bildprozessor
DE69405740T2 (de) Verfahren und anordnung für bewegungskompensierende interpolation
DE69806580T2 (de) Adaptives filter
DE4206280C2 (de) Verfahren zum Aufzeigen eines Bewegungsvektors
DE69522861T2 (de) Verfahren und Einrichtung zur Codeumwandlung von codiertem Datenstrom
DE69330620T2 (de) Verfahren und Einrichtung zur Bildkodierung
DE69801209T2 (de) Hierarchischer rekursiver Bewegungsschätzer für Bewegtbildkodierer
DE69022705T2 (de) System zur Kodierung/Dekodierung von digitalen Signalen zur Übertragung und/oder Speicherung.
DE68924043T2 (de) Verfahren und Schaltung zur Blockverarbeitung von zweidimensionalen Signalen in beweglichen Bildern.
DD293933A5 (de) Bewegungsabschaetzeinrichtung
DE69521873T2 (de) Verfahren zum Auswählen von Bewegungsvektoren und Bildverarbeitungsvorrichtung zur Durchführung des Verfahrens
DE69506059T2 (de) Blockübereinstimmungsverfahren mit reduzierter Anzahl von Zugriffen auf einem Referenz-Rasterspeicher
DE69609931T2 (de) Verfahren zur Datenverarbeitung in matrixförmigen Netzwerken in einem Bewegungsschätzungssystem
DE69024002T2 (de) Vorrichtung zum Codieren von zweidimensionalen Informationen und entsprechende Decodiervorrichtung.
DE69232215T2 (de) Einrichtung zur Bildkodierung
DE69620932T2 (de) Verfahren zum Kodieren und Dekodieren von Bewegtbildsignalen
DE4408522C2 (de) Vorrichtung zur Bilddatenverarbeitung und Verfahren zur Verarbeitung von Bilddaten
DE69802269T2 (de) Vorrichtung und verfahren zum vergleichen von pixelblöcken
DE69328346T2 (de) Vorrichtung zur Kodierung von digitalen Fernbildsignalen
DE69327040T2 (de) Blockübereinstimmungsarchitektur mit mehreren Modulen
DE102006008780A1 (de) System von Komplexitätsvorverarbeitung innerhalb eines Bildes
EP0525900B1 (de) Filterschaltung zur Vorverarbeitung eines Videosignals
DE69026538T2 (de) Signalverarbeitungseinrichtungen vor und nach Übertragung und/oder Speicherung mit Datenflussverminderung, und Verfahren zur Übertragung und/oder Speicherung von Signalen mit solchen Einrichtungen
DE69636352T2 (de) Hierarchische Kodierungs-Vorrichtung und -Verfahren mit Speicher für ein digitales Bildsignal
EP1110407B1 (de) Verfahren und anordnung zur codierung und decodierung eines digitalisierten bildes mit anwendung eines gesamtbewegungsvektors

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)
8339 Ceased/non-payment of the annual fee