DE4322343A1 - Bewegungsvektor-Erfassungsmittel zum Kompensieren von Bewegungen in einem bewegten Bild - Google Patents

Bewegungsvektor-Erfassungsmittel zum Kompensieren von Bewegungen in einem bewegten Bild

Info

Publication number
DE4322343A1
DE4322343A1 DE4322343A DE4322343A DE4322343A1 DE 4322343 A1 DE4322343 A1 DE 4322343A1 DE 4322343 A DE4322343 A DE 4322343A DE 4322343 A DE4322343 A DE 4322343A DE 4322343 A1 DE4322343 A1 DE 4322343A1
Authority
DE
Germany
Prior art keywords
data
block
motion vector
value
pixel
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.)
Granted
Application number
DE4322343A
Other languages
English (en)
Other versions
DE4322343C2 (de
Inventor
Shinichi Uramoto
Mitsuyoshi Suzuki
Akihiko Takabatake
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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
Priority claimed from JP4178399A external-priority patent/JPH0630399A/ja
Priority claimed from JP10543293A external-priority patent/JP3084170B2/ja
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of DE4322343A1 publication Critical patent/DE4322343A1/de
Application granted granted Critical
Publication of DE4322343C2 publication Critical patent/DE4322343C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region
    • H04N5/144Movement detection
    • H04N5/145Movement estimation
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or 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
    • 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/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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)
  • Signal Processing (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)

Description

Die Erfindung betrifft eine Vorrichtung nach dem Oberbegriff des Anspruches 1, 33, 35, 37, 38, 39, 41 oder 44. Die Erfindung betrifft ein Mittel zum Erfassen des Bewegungsvektors, der zur Kompensation der Bewegungen in einem bewegten Bild benutzt wird.
Zur Übertragung und Speicherung von Bildsignalen mit einer großen Menge an Daten ist ein Datenkompressionsverfahren zur Verminderung der Datenmenge unabdingbar. Die Bilddaten weisen aufgrund der Korrelation benachbarter Bildpunkte (Pixel) und der Erkennungseigenschaften des Menschen einen hohen Redundanzgrad auf. Dieses Datenkompressionsverfahren zur Unterdrückung der Redundanz von Daten, um die Menge der Übertragungsdaten zu vermindern, wird als hocheffiziente Codierung bezeichnet. Interbild-Vorhersage- Codierung (Interframe-Predictive-Codierung) ist als ein hocheffizientes Codierungssystem bekannt. Die Interframe-Predictive- Codierung wird im folgenden beschrieben.
Es wird der Vorhersagefehler (Prediction-Fehler) berechnet, der die Differenz zwischen dem jeweiligen Pixelwert im gegenwärtigen Bild (Frame), das zu codieren ist, und dem jeweiligen Pixelwert der entsprechenden Stelle im vorherigen Bild, auf das bezogen wird, darstellt. Dieser berechnete Vorhersagefehler wird im folgenden Codierungsvorgang benutzt. Dieses System ist vorteilhaft zur hocheffizienten Codierung von Bildern, die eine geringe Bewegung aufweisen, da hier eine hohe Korrelation zwischen den Bildern besteht. Daher tritt das Problem auf, daß der Fehler für Bilder groß wird, die eine erhebliche Bewegung aufweisen, da ihre Korrelation niedrig ist. Das erhöht die zu übertragende Datenmenge.
Ein Interbild-Vorhersage-Codierungssystem mit Bewegungskompensation ist bekannt, um das oben beschriebene Problem zu lösen. Entsprechend diesem System wird unter Verwendung von Pixeldaten des gegenwärtigen und des vorherigen Bildes ein Bewegungsvektor berechnet, bevor der Vorhersagefehler berechnet wird. Das Vorhersagebild des vorherigen Bildes wird entsprechend dem berechneten Bewegungsvektor verschoben. Genauer gesagt wird ein Referenzpixel, das den Pixelwert an einer Stelle darstellt, die um den Bewegungsvektor im vorherigen Bild verschoben ist, als Erwartungswert verwendet. Dann wird der Vorhersagefehler des jeweiligen Pixels zwischen dem bewegten vorherigen Bild und dem gegenwärtigen Bild berechnet, und der Vorhersagefehler und der Bewegungsvektor werden übertragen.
Fig. 92 zeigt ein Blockdiagramm der Struktur eines Codierers zum Codieren von Bilddaten entsprechend dem Vorhersagecodierungssystem mit Bewegungskompensation. Wie in Fig. 92 gezeigt ist, weist der Codierer eine Vorverarbeitungsschaltung 910 zum Ausführen einer vorbestimmten Vorverarbeitung mit einem Eingabebildsignal, eine Quellencodierungsschaltung 912 zum Entfernen von Redundanzen und Ausführen einer Quantisierung bezüglich einem vorverarbeiteten Signal von der Vorverarbeitungsschaltung 910, eine Videomultiplex- Codierungsschaltung 914 zum Codieren entsprechend einem vorbestimmten Format und zum Multiplexen einen Signals von der Quellencodierungsschaltung 912 in einen Codezug mit einer vorbestimmten Datenstruktur auf.
Die Vorverarbeitungsschaltung 910 verwendet Zeit- und Raumfilter, um ein Eingabebildsignal in ein allgemeines Zwischenformat (CIF) umzuwandeln, und führt einen Filterungsprozeß aus, um Störungen zu entfernen.
Die Quellencodierungsschaltung 912 führt einen orthogonalen Transformationsprozeß wie z. B. einen diskrete Cosinustransformation (DCT) mit einem zugeführten Signal aus, kompensiert hinsichtlich einer Bewegung des Eingabesignals und quantisiert den orthogonal transformierten Bildwert.
Die Videomultiplex-Codierungsschaltung 914 führt eine zweidimensionale Codierung variabler Länge bezüglich einem zugeführten Bildsignal aus, und führt ferner eine Codierung variabler Länge für die verschiedenen Attribute (z. B. den Bewegungsvektor) eines Blocks, der eine Datenverarbeitungseinheit darstellt, gefolgt vom Multiplexen desselben in einen Codezug mit einer vorbestimmten Datenstruktur aus.
Der Codierer weist ferner einen Übertragungspuffer 916 zum Puffern von Bilddaten von der Videomultiplex-Codierungsschaltung 914 und eine Übertragungscodierungsschaltung 918 zum Anpassen von Bilddaten vom Übertragungspuffer 916 an den Übertragungskanal auf.
Der Übertragungspuffer 916 glättet die Informationserzeugungsgeschwindigkeit auf eine konstante Rate. Die Übertragungscodierungsschaltung 918 führt eine Addition eines Fehlerkorrekturbits und eines Audiosignalwerts aus.
Fig. 93 zeigt die genaue Struktur der Quellencodierungsschaltung von Fig. 92. Wie in Fig. 92 gezeigt ist, weist die Quellencodierungsschaltung ein Bewegungskompensations- Vorhersagemittel 920 zum Erfassen des Bewegungsvektors für ein Eingabebildsignal, um ein Bewegungs-kompensiertes Referenzpixel entsprechend dem erfaßten Bewegungsvektor zu erzeugen, ein Schleifenfilter 922 zum Ausführen eines Filterungsprozesses mit dem Referenzpixelwert vom Bewegungskompensations-Vorhersagemittel 920, einen Subtrahierer 924 zu Ermitteln der Differenz zwischen dem Ausgangssignal des Schleifenfilters 922 und dem Eingabebildsignal, einen Orthogonaltransformierer 926 zum Ausführen einer orthogonalen Transformation mit dem Ausgangssignal des Subtrahierers 924 und einen Quantisierer 928 zum Ausführen einer Quantisierung mit dem orthogonal transformierten Wert vom Orthogonaltransformierer 926 auf.
Das Bewegungskompensations-Vorhersagemittel 920, dessen Aufbau später beschrieben im Detail wird, weist einen Bildspeicher zum Speichern der Pixeldaten des vorherigen Bildes auf, wobei der Bewegungsvektor entsprechend einem Eingabebildsignal und dem Pixelwert im Bildspeicher erfaßt wird, um einen Referenzpixelwert zu erzeugen, für den die Bewegung kompensiert ist. Das Schleifenfilter 922 ist zur Verbesserung der Bildqualität geschaffen.
Der Orthogonaltransformierer 926 führt eine orthogonale Transformation wie z. B. eine DCT-Transformation mit den Daten vom Subtrahierer 924 in Einheiten eines Blocks vorbestimmter Größe (im allgemeinen 8·8 Pixel) aus. Der Quantisierer 928 führt eine Quantisierung der orthogonal transformierten Pixelwerte aus.
Durch das Bewegungskompensations-Vorhersagemittel 920 und den Subtrahierer 924 wird eine Interframe-Predictive-Codierung mit Bewegungskompensation ausgeführt, um die Zeitredundanz aus einem bewegten Bildsignal zu entfernen. Darüber hinaus wird durch die orthogonale Transformation des Orthogonaltransformierers 926 die räumliche Redundanz in einem bewegten Bildsignal entfernt.
Die Quellencodierungsschaltung weist ferner einen inversen Quantisierer 930 zum Umwandeln des Signalzustands der vom Quantisierer 928 quantisierten Daten in den Zustand vor der Quantisierung, einen inversen Orthogonaltransformierer 932 zum Ausführen einer inversen orthogonalen Transformation mit dem Ausgangssignal des inversen Quantisierer 930 und einen Addierer 934 zum Addieren der Ausgangssignale des Schleifenfilters 922 und des inversen Orthogonaltransformierers 932 auf. Ein Bild, das zur Zwischenbildvorhersage für das nächste Bild benutzt wird, wird vom inversen Quantisierer 930 und dem inversen Orthogonaltransformierer 932 erzeugt. Die erzeugten Bilddaten werden in den Bildspeicher im Bewegungskompensations-Vorhersagemittel 920 geschrieben. Weil ein Eingabebildsignal (Zwischenbild-Differenzwert) addiert wird, werden die Daten des gegenwärtigen Bildes reproduziert. Dieser inverse Quantisierungs-, inverse Orthogonaltransformations- und Additionsprozeß wird zusammen allgemein als lokale Decodierungsprozedur bezeichnet.
Die Berechnung eines Bewegungsvektors wird im folgenden im Detail beschrieben. Im allgemeinen wird ein Block-Matching-Verfahren zur Berechnung des Bewegungsvektors benutzt.
Wie in Fig. 94A gezeigt ist, wird ein Fall betrachtet, bei dem ein Bild A im (m-1)-ten Bild wie das Bild A′ im m-ten Bild verschoben wird. Beim Block-Matching-Verfahren wird ein Bild in Blöcke aus P·Q Pixeln (im allgemeinen gilt P=Q) unterteilt. Im vorherigen Bild wird ein Block gesucht, der dem betrachteten Block im gegenwärtigen Block am nächsten liegt. Diese Verschiebung des betrachteten Blocks gegenüber dem am nächsten liegenden Block im vorherigen Bild wird als Bewegungsvektor bezeichnet.
Wie in Fig. 94B gezeigt ist, wird angenommen, daß das m-te Bild das zu codierende Bild ist. Das Bild ist in Blöcke aus N·N Pixeln unterteilt. Es wird angenommen, daß der Wert der Pixeldaten an der Stelle links oben (Nk, Nl) im Block der N·N Pixel im m-ten Bild gleich Xm(Nk, Nl) ist. Es wird die Summe der absoluten Differenzen des vorherigen Bildes mit der Pixelposition, die um die Position (i, j) verschoben ist, und dem Block des gegenwärtigen Bildes ermittelt. Durch Verändern des Verschiebungswerts (i, j) werden jeweilige Summen der Absolutdifferenzen erhalten. Diejenige Position (i, j), die zum kleinsten Wert der Absolutdifferenz führt, wird als Bewegungsvektor bezeichnet.
Es ist notwendig, pro Pixelblock einen Bewegungsvektor zu übertragen. Wenn die Blockgröße vermindert wird, erhöht sich die Übertragungsinformation und verhindert eine effektive Datenkompression. Wenn die Blockgröße erhöht wird, wird die effektive Erfassung des Bewegungsvektors schwierig. Hier wird die Blockgröße auf 16·16 Pixel eingestellt, und der Suchbereich für den Bewegungsvektor (maximal variierter Bereich für i, j ) wird auf den Bereich -15 bis +15 Pixel eingestellt. Im folgenden wird detailliert die Berechnung des Bewegungsvektors nach dem Block-Matching- Verfahren beschrieben.
Fig. 95 zeigt ein Diagramm zur Beschreibung des Bewegungsvektor- Berechnungsverfahrens nach dem Block-Matching-Verfahren. Ein Bild 950 aus 352 Punkten mal 288 Zeilen wird als Beispiel herangezogen. Bild 950 wird in Blöcke unterteilt, wobei ein Block eine 16·16 Pixelgruppe umfaßt. Die Erfassung des Bewegungsvektors wird mittels dieser Blockeinheit ausgeführt. Es wird angenommen, daß ein Suchblock 956 (im weiteren als "Suchbereich" bezeichnet) einen Blockbereich darstellt, der ±16 Pixel in horizontaler und vertikaler Richtung ausgehend vom Block 954 umfaßt, der einen Block im vorherigen Bild an einer Stelle entsprechend dem Block 952 darstellt, der erfaßt werden soll (im weiteren als "Musterblock" bezeichnet). Mit anderen Worten wird ein Suchblock 956 aus 48·48 Pixeln, der um den Block 954 zentriert ist, als Suchbereich gebildet. Die Suche des Bewegungsvektors bezüglich dem Musterblock 952 wird innerhalb dieses Suchbereichs ausgeführt. Die Erfassung des Bewegungsvektors entsprechend dem Block-Matching-Verfahren weist die folgenden Schritte auf.
Es wird ein Vorhersagebildblock (in Fig. 95 durch (i, j) angegeben) mit einer Verschiebung entsprechend einem Kandidaten für den Bewegungsvektor ermittelt. Dann wird ein Kennungsfunktionswert, wie z. B. die Summe der Absolutdifferenzen (oder Summe der quadrierten Differenzen) zwischen den Pixeln des ermittelten Blocks und denen an einer entsprechenden Stelle des Musterblocks bestimmt.
Der oben beschriebene Vorgang wird für alle Verschiebungen (i, j) im Bereich (-16, -16) bis (+16, +16) ausgeführt. Wenn die Kennungsfunktionen (Kennungswerte) für alle Vorhersagebildblöcke bestimmt worden sind, wird der Vorhersagebildblock mit der minimalen Kennungsfunktion ermittelt. Der Vektor vom Block (der in Fig. 95 durch (0, 0) angegebene Block 954) an einer Stelle, die im Musterblock (im weiteren als True-Backside bezeichnet) identisch ist, in Richtung dem Vorhersagebildblock mit dem kleinsten Kennungsfunktionswert wird als Bewegungsvektor für den Musterblock bestimmt.
Es sind verschiedene Strukturen zum Ermitteln dieses bewegten Bildes durch Hardware vorgeschlagen worden.
Fig. 96 zeigt eine Struktur eines Bewegungsvektor-Erfassungsmittels, das in den Proceedings of ICASSP ′89, IEEE 1989, S. 2453-2456 von A. Artier et al beschrieben ist. Wie in Fig. 96 gezeigt ist, weist ein Bewegungsvektor-Erfassungsmittel ein Suchbereich-Eingaberegister 962 zum Eingeben von Pixeldaten des Suchbereichs einer Spalte, ein Prozessorfeld 966 mit einer Mehrzahl von Prozessoren, die in einer Matrix aus Zeilen und Spalten, die der Anzahl nach gleich den Punkten des Musterblocks sind, Suchbereich-Seitenregister 964a und 964b zum Speichern einer Spalte von Daten im Suchbereich für das Prozessorfeld, und eine Bewegungsvektor-Erfassungseinheit 968 zum Erfassen eines Bewegungsvektors entsprechend dem Berechnungsergebnisses des Prozessorfeldes 966 auf.
Im Prozessorfeld 966 sind die Prozessoren jeweils entsprechend einem Verschiebungsvektor (i, j) angeordnet. Genauer gesagt berechnet der Prozessor Pÿ in der i-ten Zeile und j-ten Spalte den Verschiebungsvektor D(i, j).
Fig. 97 zeigt die Struktur eines Prozessors, der im Prozessorfeld von Fig. 96 enthalten ist. Wie in Fig. 97 gezeigt ist, weist der Prozessor 970 in 3-Eingangs-Register 972 zum Empfangen von Suchfelddaten, die von Prozessoren in drei Richtungen in horizontaler und vertikaler Richtung des Feldes übertragen werden, und das von einem Auswahlsignal SEL abhängig ist, um eines der drei Eingangssignale durchzulassen, eine Abweichungsberechnungseinheit 974 zum Berechnen der Abweichung (Summe der Absolutdifferenzen) entsprechend dem Suchbereichwert Y vom 3-Eingangs-Register 972 und dem extern angelegten Musterblockwert X voneinander, und ein 2-Eingangs-Register 976 zum Empfangen des Abweichungswerts D von der Abweichungsberechnungseinheit 974 und eines Abweichungswerts von einem horizontal benachbarten Prozessor, um einen der Abweichungswerte in Abhängigkeit vom Auswahlsignal To durchzulassen, auf.
Beim in Fig. 96 dargestellten Prozessorfeld ist dieser Prozessor in zweidimensionaler Weise entsprechend allen Verschiebungsvektoren angeordnet, die Kandidaten für den Bewegungsvektor im Suchbereich darstellen. Jedem Prozessor 970 des Prozessorfeldes 966 (siehe Fig. 96) werden dieselben Musterblockdaten X zugeführt. Hier werden die entsprechenden Daten des Suchbereichblocks dem Prozessor 970 zugeführt. Genauer gesagt wird dem Prozessor Pÿ der Suchbereich- Blockwert Y(i+m, j+n) zugeführt, wenn der Musterblockwert X z. B. gleich X(m, n) ist. Der Suchfensterwert wird über die Suchbereich- Seitenregister 964a und 964b sowie den jeweiligen Prozessor 970 im Prozessorfeld 966 übertragen. Um einen genauen Suchbereich-Blockwert Y(m+i, n+j) bezüglich einem extern angelegten Musterblockwert X(m, n) zu liefern, müssen die Musterblockdaten und die Suchbereich- Blockdaten entsprechend einer vorbestimmten Regel abgesucht werden.
Fig. 98 zeigt ein Verfahren zum Absuchen von Werten des Musterblocks. Wie in Fig. 98 dargestellt ist, werden die Musterblockdaten nach unten entlang einer Spalte und dann in der benachbarten Spalte nach oben abgesucht, wie durch den Pfeil im Musterblock 999 dargestellt ist. Dieses Abtastverfahren wird als "Snake-Abtastung" (schlangenförmige Abtastung) bezeichnet. Die dem Prozessorfeld zugeführten Suchbereich-Blockdaten werden ähnlich dieser "Snake-Abtastung" der Musterblockdaten abgesucht. Jeder Prozessor muß die Suchbereichdaten in der vertikalen Richtung der Fig. 91 oder in der horizontalen Richtung der Fig. 97 entsprechend seiner Stelle in der Anordnung übertragen. Zu diesem Zweck ist das 3-Eingangs-Register 972 gebildet.
Das 2-Eingangs-Register 976 ist gebildet, um die vom Prozessor berechnete Abweichung zur Bewegungsvektor-Erfassungseinheit 968 zu übertragen und einen Verschiebungsvektor zur ermitteln, der die minimale Abweichung liefert. Die Bewegungsvektor-Erfassungseinheit 968 erfaßt das Minimum der Abweichung von jedem Prozessor, um die Prozessorposition zu bestimmen, die die Minimalabweichung, d. h. den Bewegungsvektor, liefert. Im folgenden wird kurz der Betrieb der Bewegungsvektor-Erfassungseinheit von Fig. 96 beschrieben.
Im Prozessorfeld 966 berechnet der Prozessor Pÿ in der i-ten Zeile und der j-ten Spalte die Abweichung D(i, j), die folgendermaßen ausgedrückt ist:
D(i, j) = Σ |X(m,n) - Y(m+1,n+j|.
Hier wird die Gesamtsumme Σ für m und n ausgeführt. Der Variationsbereich für m und n wird durch die Größe des Suchbereichs bestimmt.
Es wird ein Fall betrachtet, bei dem Pixel in M Zeilen und N Spalten als Musterblock 980 angeordnet sind, wie in Fig. 99 dargestellt ist. Im ersten Zyklus werden die Suchbereich-Blockdaten, die durch das Bezugszeichen 982 angegeben werden, im jeweiligen Prozessor im Prozessorfeld gespeichert. Das Pixel X(1,1) der ersten Zeile und ersten Spalte im Musterblock 980 wird allen Prozessoren im Prozessorfeld als externer Wert zugeführt. Jeder Prozessor 970 ermittelt die Absolutdifferenz zwischen dem gespeicherten Suchfensterwert Y und dem extern angelegten Musterblockwert X und akkumuliert die Werte.
Im nächsten Zyklus wird der Suchfeldwert im Prozessorfeld um eine Zeile nach unten verschoben, wie in Fig. 99 gezeigt ist. Unter diesen Umständen wird der nächste Pixelwert X(2,1) vom Musterblock 980 geliefert. Der gespeicherte Suchfeldwert im jeweiligen Prozessor 970 ist gleich Y(m+i+1, n+j). Die Absolutdifferenz der Werte X und Y wird berechnet und dann akkumuliert. Dieser Vorgang wird M-mal wiederholt.
Durch M-maliges Wiederholen des oben beschriebenen Vorgangs wird eine Spalte von Suchfeldpixeln über das in Fig. 96 gezeigte Suchfeldeingaberegister 962 geschrieben. Die Pixeldaten einer Spalte im Suchfeld, die nicht länger notwendig sind, werden gelöscht. Dann werden neue Suchfelddaten in den Suchbereich-Seitenregistern 964a und 964b sowie im Prozessorfeld 966 gespeichert. Dieser Vorgang wird wiederholt ausgeführt.
Wie in Fig. 100 dargestellt ist, wird mit anderen Worten eine Summe der Absolutdifferenzen unter Verwendung des Suchfensters 990 berechnet, auf das M solche Zyklen folgen. Dann wird eine ähnliche Berechnung unter Verwendung der Daten des Suchfensters 992, des Suchfensters 994, . . . ausgeführt. Wenn die Berechnung der Pixeldaten für den Suchbereich 996 ausgeführt wird, wird die Abweichung D(i, j) bestimmt und im Prozessor Pÿ gespeichert.
Die im jeweiligen Prozessor Pÿ ermittelte Abweichung D(i, j) wird zur Bewegungsvektor-Erfassungseinheit 968 (siehe Fig. 96) übertragen, wobei die minimale Abweichung als Bewegungsvektor bestimmt wird.
Die oben beschriebene Bewegungsvektor-Erfassungseinheit erfaßt den Bewegungsvektor unter Verwendung von Pixeldaten eines Suchbereichs und der Pixeldaten eines Musterblocks. Der ermittelte Bewegungsvektor wird als Bewegungsvektor mit ganzzahliger Genauigkeit bezeichnet. Der Grund dafür ist, daß die minimale Einheit der horizontalen und vertikalen Komponenten des Bewegungsvektors gleich einem Pixel ist. Diese Bewegungsvektor mit ganzzahliger Genauigkeit ist in Codierungssystemen bewegter Bilder für Bildtelephone und TV-Konferenzen definiert (CCITT-Empfehlung H.261).
In einem Codierungssystemen bewegter Bilder vom Speichertyp, das digitale Speichermedien benutzt, ist eine Erfassungsgenauigkeit in Einheiten zu 1/2 Pixeln notwendig (im weiteren als 1/2-Pixel- Genauigkeit bezeichnet). Die Erfassung mit einer größeren Genauigkeit als ganzzahliger Genauigkeit wird als "gebrochene Genauigkeit" ("Fractional Precision") bezeichnet. Bei der Bewegungskompensation mit 1/2-Pixel-Genauigkeit wird eine um ein Pixel verschobene Stelle auf einem Referenzbild zur Vorhersage gesucht. Ferner wird durch Interpolation ein Wert zwischen Pixeln erzeugt, wodurch ein Matching für den interpolierten Wert ausgeführt wird. Bewegungskompensation unter Verwendung eine Bewegungsvektors mit 1/2-Pixel-Genauigkeit wird als "Halbpixel-Bewegungskompensation" (Half-Pel-Bewegungskompensation) bezeichnet.
Fig. 101 zeigt schematisch die Struktur einer Bewegungsvektor- Erfassungseinheit mit gebrochener Genauigkeit. Die Struktur der in Fig. 101 gezeigten Einheit ist z. B. in den Proceedings of ICASSP ′89, IEEE, 1989, S. 2437-2440 beschrieben.
Wie in Fig. 101 gezeigt ist, weist eine Bewegungsvektor- Erfassungseinheit mit gebrochener Genauigkeit einen Referenzbildspeicher 101 zum Speichern von Pixeldaten eines ganzen Referenzbildes für ein vorheriges Bild, einen Speicher für das gegenwärtige Bild 102 zum Speichern der Bilddaten des gesamten gegenwärtigen Bildes, und eine erste Betriebseinheit 805 zum Auslesen der Suchfenster-Blockdaten und der Musterblockdaten aus den Speichern 801 und 802 über Datenleitungen 807 und 809 auf, um einen Bewegungsvektor mit ganzzahliger Genauigkeit zu ermitteln. Der von der ersten Betriebseinheit ausgeführte Prozeß ist ähnlich dem bereits beschriebenen Prozeß.
Die Bewegungsvektor-Erfassungseinheit mit gebrochener Genauigkeit weist ferner einen Suchfensterspeicher für gebrochene Genauigkeit 804 zum Empfangen von Suchfenster-Blockdaten vom Referenzbildspeicher 801 über eine Datenleitung 808 und zum Speichern von diesen, einen Musterspeicher für gebrochene Genauigkeit 803 zum Empfangen der gegenwärtig benutzten Musterblockdaten vom Speicher für das gegenwärtige Bild 802 über eine Datenleitung 810 und zum Speichern von diesen, und eine zweite Betriebseinheit 806 zum Empfangen der Pixeldaten vom Musterspeicher für gebrochene Genauigkeit 803 und dem Suchfensterspeicher für gebrochene Genauigkeit 804 über Datenleitungen 811 bzw. 812 auf, um einen Bewegungsvektor mit gebrochener Genauigkeit zu ermitteln. Der von der ersten Betriebseinheit 805 erfaßte Bewegungsvektor wird über eine Signalleitung 813 der zweiten Betriebseinheit 806 zugeführt. Die zweite Betriebseinheit 806 überträgt auf einer Signalleitung 814 einen Satz bestehend aus dem Bewegungsvektor dieser ganzzahligen Genauigkeit und ein neu ermitteltes bewegtes Bild mit gebrochener Genauigkeit. Im folgenden wird der Betrieb beschrieben.
Zunächst liest die erste Betriebseinheit 805 Suchfenster-Blockdaten und Musterblockdaten aus dem Referenzbildspeicher 801 bzw. dem Speicher für das gegenwärtige Bild 802 aus, um eine Kennungsfunktion (einen Kennungswert) für den jeweiligen Verschiebungsvektor zu bestimmen. Wenn alle Suchfenster-Blockdaten im Suchbereich aus dem Referenzbildspeicher 801 ausgelesen worden sind, um Kennungswerte zu bestimmen, erfaßt die erste Betriebseinheit 805 den minimalen der ermittelten Kennungswerte, um den Verschiebungsvektor entsprechend dem minimalen Kennungswert als Bewegungsvektor zu bestimmen.
Wenn ein Bewegungsvektor bestimmt worden ist, überträgt der Speicher für das gegenwärtige Bild 802 die benutzten Musterblockdaten über die Datenleitung 810 zum Musterspeicher für gebrochene Genauigkeit 803. Die Suchfenster-Blockdaten entsprechend dem Verschiebungsvektor, die den Bewegungsvektor liefern, und seine Randdaten im Referenzbildspeicher 801 werden über die Datenleitung 808 zum Suchfensterspeicher für gebrochene Genauigkeit 804 übertragen. Wenn der Suchfensterblock z. B. aus 16·16 Pixeln besteht, werden 18·18-Pixel-Daten einschließlich den Randpixeldaten vom Referenzbildspeicher 801 zum Suchfensterspeicher für gebrochene Genauigkeit 804 übertragen.
Damit werden Pixeldaten des Musterblocks des Bereichs 820 (durch leere Kreise angegeben) im Musterspeicher 803 abgelegt, wie in Fig. 102 gezeigt ist. Im Suchfensterspeicher 804 werden die durch den Bereich 822 angegebenen Suchfenster-Blockdaten gespeichert. Im folgenden wird der Betrieb der zweiten Betriebseinheit 806 ausgeführt.
Es wird ein Interpolationsprozeß für die jeweiligen Pixeldaten (die durch leere Kreise angegeben sind) des Suchfensterblocks 822 ausgeführt, um Interpolationsdaten zwischen den Pixeln zu erzeugen. Fig. 102 zeigt den Fall der Erfassung eines bewegten Bildes mit 1/2-Pixel-Genauigkeit. Die Kandidaten für den Bewegungsvektor sind 16 Verschiebungsvektoren einschließlich den gebrochenen Komponenten zwischen (-1/2, -1/2) bis (1/2, 1/2). Mit anderen Worten werden im Fall von 1/2-Pixel-Genauigkeit 16 Suchfensterblöcke gebildet, wobei die Berechnung der Kennungswerte für jeden Block ausgeführt wird. Beim Erfassen des Bewegungsvektors mit 1/2-Pixel-Genauigkeit werden der Interpolationswert zwischen zwei Pixeln P(A) und P(B) durch (P(A) + P(B))/2 und der Interpolationswert zwischen vier Pixeln P(A), P(B), P(C) und P(D) durch (P(A) + P(B) + P(C) + P(D))/4 berechnet, wie durch die x-Marken in Fig. 102 dargestellt ist. Für den Interpolationswert wird eine Rundung ausgeführt. Für den erzeugten Interpolationswert wird ein Vorgang ähnlich dem für die Erfassung des Bewegungsvektors mit ganzzahliger Genauigkeit ausgeführt.
Fig. 103 zeigt die Beziehung zwischen einem Bewegungsvektor mit ganzzahliger Genauigkeit und Bewegungsvektor mit gebrochener Genauigkeit. Wie in Fig. 103 dargestellt ist, ist ein Verschiebungsvektor in Einheiten zu einem Pixel in vertikaler und horizontaler Richtung angeordnet (angedeutet durch einen leeren Kreis in der Zeichnung). Ein Verschiebungsvektor mit gebrochener Genauigkeit wird durch die zweite Betriebseinheit für den Rand eines Bewegungsvektors MI erhalten (angedeutet durch die unterbrochene Linie für einen leeren Kreis). Dann wird ein Verschiebungsvektor, der den minimalen Wert liefert, aus den Verschiebungsvektoren und den Komponenten mit gebrochener Genauigkeit erhalten und mit dem Bewegungsvektor MI mit ganzzahliger Genauigkeit kombiniert, wodurch ein Bewegungsvektor MF mit gebrochener Genauigkeit ermittelt wird.
Das oben beschriebene Bewegungsvektor-Erfassungsmittel weist die folgenden zu lösenden Probleme auf.
Beim in Fig. 96 gezeigten Bewegungsvektor-Erfassungsmittel werden dieselben Musterblockdaten an alle Prozessoren im Prozessorfeld angelegt. Das bedeutet, daß eine starke Treiberfähigkeit in der Schaltung zum Schreiben der Pixeldaten des Musterblocks notwendig ist. Das führt zu einer Erhöhung der Stromaufnahme in der Schaltung zum Schreiben der Musterblock-Pixeldaten. Damit wird die Leistungsaufnahme der gesamten Vorrichtung erhöht.
Bei dem in Fig. 96 gezeigten Bewegungsvektor-Erfassungsmittel entspricht jeder Prozessor im Prozessorfeld einem Verschiebungsvektor, der ein Kandidat für einen Bewegungsvektor darstellt. Wenn der Suchbereich +16 bis -16 in vertikaler Richtung und -16 bis +16 in horizontaler Richtung beträgt, erreicht die Anzahl der Verschiebungsvektoren, die Kandidaten für den Bewegungsvektor sind, die Zahl 33·33=1089. Das erhöht die Anzahl der Prozessoren entsprechend. Dies führt zu dem Problem, daß die belegte Fläche der Vorrichtung groß ist.
In jedem Betriebszyklus werden Daten über einen Prozessor übertragen. Ein 3-Eingangs-Register wird benutzt, um die Datenübertragungsrichtung festzulegen. Das führt zu dem Problem einer erhöhten Leistungsaufnahme zum Zeitpunkt der Datenübertragung.
Ferner berechnet jeder Prozessor im Bewegungsvektor-Erfassungsmittel der Fig. 96 einen Kennungswert (eine Abweichung). Genauer gesagt wird eine Berechnung der absoluten Differenz (oder quadrierten Differenz) ausgeführt, auf die eine Akkumulierung des berechneten Ergebnisses folgt. Somit wird die von den Prozessoren belegte Fläche erhöht. Das führt zu einer Erhöhung des verbrauchten Stroms.
Das in Fig. 101 gezeigte Bewegungsvektor-Erfassungsmittel mit gebrochener Genauigkeit weist einen Bildspeicher mit ganzzahliger Genauigkeit und einen Bildspeicher mit gebrochener Genauigkeit auf. Beim Bewegungsvektor-Erfassungsvorgang mit gebrochener Genauigkeit müssen die erforderlichen Suchfenster-Blockdaten vom Referenzbildspeicher mit ganzzahliger Genauigkeit zum Suchfensterspeicher mit gebrochener Genauigkeit übertragen werden. Nach der Übertragung der Daten an den Suchfensterspeicher müssen die Suchfenster-Blockdaten erneut aus dem Suchfensterspeicher ausgelesen werden, um eine Erfassung des Bewegungsvektors mit gebrochener Genauigkeit auszuführen. Es erfolgt ein häufiger Zugriff auf den Speicher, wodurch der Durchsatz des gesamten Bewegungsvektor- Erfassungsmittels durch die Zugriffszeit des Speichers bestimmt wird. Das führt zu dem Problem, daß ein Bewegungsvektor nicht mit hoher Geschwindigkeit erfaßt werden kann.
Nachdem Daten vom Speicher für das gegenwärtige Bild zum Musterspeicher für gebrochene Genauigkeit übertragen worden sind, müssen die Musterblockdaten aus dem Musterspeicher ausgelesen werden, wodurch die Zugriffszeit auf den Bildspeicher, der die gegenwärtigen Bilddaten speichert, erhöht wird. Der Durchsatz des Bewegungsvektor-Erfassungsmittels wird von der Zugriffszeit auf den Speicher für das gegenwärtige Bild bestimmt. Daher kann der Bewegungsvektor nicht mit hoher Geschwindigkeit erfaßt werden.
Aufgabe der Erfindung ist es, ein Bewegungsvektor-Erfassungsmittel zu schaffen, das einen Bewegungsvektor mit hoher Geschwindigkeit erfassen kann. Außerdem soll ein Bewegungsvektor-Erfassungsmittel gebildet werden, das mit niedriger Leistungsaufnahme arbeitet. Ferner soll ein Bewegungsvektor-Erfassungsmittel geschaffen werden, dessen Belegungsfläche vermindert ist. Weiterhin soll ein Bewegungsvektor-Erfassungsmittel gebildet werden, das einen Bewegungsvektor genau bestimmen kann.
Die Aufgabe wird gelöst durch die in Anspruch 1, 33, 35, 37, 38, 39, 41 oder 44 gekennzeichnete Vorrichtung. Ein erfindungsgemäßes Bewegungsvektor-Erfassungsmittel weist Elementprozessoren auf, die in einem Feld angeordnet sind und jeweils Musterblockdaten und Suchfenster-Blockdaten speichern, die von anderen verschieden sind, wodurch ein Kennungswert für einen Verschiebungsvektor durch gleichzeitiges Treiben der im Feld angeordneten Prozessoren berechnet wird. Die Suchfenster-Blockdaten werden in nur einer Richtung im Prozessorfeld übertragen, und die nicht mehr benötigten Suchfenster-Blockdaten werden sequentiell ausgeschoben.
Bei der Erfassung des Bewegungsvektors mit gebrochener Genauigkeit und des Bewegungsvektors mit Interpolationsvorhersage werden die vom Prozessorfeld ausgeschobenen Daten benutzt.
Beim erfindungsgemäßen Bewegungsvektor-Erfassungsmittel entspricht die maximale Anzahl von Elementprozessoren der Anzahl von Pixeln im Musterblock. Daher kann die Anzahl der Elementprozessoren vermindert werden.
Die Musterblockdaten bleiben im Prozessor bis der zugehörige Bewegungsvektor ermittelt worden ist. Weil nur die Suchfensterdaten übertragen werden, kann die Strom-/Leistungsaufnahme zum Zeitpunkt der Datenübertragung vermindert werden.
Weil nur einen vorbestimmte Berechnung im Elementprozessor ausgeführt wird, und der endgültige Kennungswert, der die Beziehung zwischen den Blöcken angibt, durch ein extern zum Feld gebildetes Kennungswert-Erzeugungsmittel ermittelt wird, kann die Belegungsfläche des Prozessorfeldes vermindert werden. Das führt zu einer Verminderung der Belegungsfläche der Vorrichtung.
Weitere Merkmale und Zweckmäßigkeiten der Erfindung ergeben sich aus der Beschreibung von Ausführungsbeispielen anhand der Figuren. Von den Figuren zeigen:
Fig. 1 einen Überblick der Struktur eines Bewegungsvektor- Erfassungsmittels nach einer ersten Ausführungsform der vorliegenden Erfindung;
Fig. 2 das Suchfeld und den Suchbereich für einen Musterblock, der vom Bewegungsvektor-Erfassungsmittel der Fig. 1 verwendet wird;
Fig. 3 die Struktur eines Elementprozessors im Prozessorfeld der Fig. 1;
Fig. 4 die Struktur des gesamten Prozessorfeldes von Fig. 1;
Fig. 5 eine Modifikation des Prozessorfeldes von Fig. 1;
Fig. 6A und 6B die Positionsbeziehung der gespeicherten Daten im Prozessorfeld von Fig. 1;
Fig. 7 die Verteilung der gespeicherten Daten im Prozessorfeld von Fig. 1;
Fig. 8 die Verteilung der gespeicherten Daten im linearen Prozessorfeld einer Spalte im Prozessorfeld von Fig. 1;
Fig. 9 ein Diagramm zum Beschreiben des Betriebs des Bewegungsvektor-Erfassungsmittels von Fig. 1;
Fig. 10A und 10B die Änderung und Verteilung der Daten im Prozessorfeld, nachdem die Erzeugung eines Kennungswertes abgeschlossen ist;
Fig. 11A und 11B die Beziehung zwischen den gespeicherten Daten und einem Verschiebungsvektor im Prozessorfeld von Fig. 4 sowie die Verteilung der gespeicherten Daten;
Fig. 12A und 12B die Positionsbeziehung zwischen dem Musterblock und dem Suchfensterblock, wenn die Erzeugung eines Kennungswertes für ein Suchfenster abgeschlossen ist, und die Verteilung der gespeicherten Daten im Prozessorfeld;
Fig. 13 die Positionsbeziehung zwischen dem Musterblock und dem Suchfenster beim Laden des nächsten Suchfensters nach einer Ausführungsform der vorliegenden Erfindung;
Fig. 14 die Positionsbeziehung zwischen dem Suchfensterblock und dem Musterblock, wenn unter Verwendung des in Fig. 13 dargestellten Suchfensters ein Kennungswert erzeugt wird;
Fig. 15 die Positionsbeziehung zwischen dem Suchfensterblock und dem Musterblock, wenn ein Bewegungsvektor- Ermittlungsvorgang abgeschlossen ist;
Fig. 16 die Verteilung der gespeicherten Daten im Prozessorfeld bezüglich dem Suchfensterblock und der Musterblockpositionsbeziehung von Fig. 15;
Fig. 17 die Elementprozessoranordnung im Prozessorfeld;
Fig. 18 die Anordnung der Musterdaten, die im Elementprozessor von Fig. 17 gespeichert sind;
Fig. 19 die Anordnung der Pixeldaten im Suchfeld für den Musterblock von Fig. 18;
Fig. 20 den Variationsbereich des Verschiebungsvektor im Suchfeld der Fig. 19;
Fig. 21 die Verteilung der Suchfensterdaten im Prozessorfeld im Startzustand;
Fig. 22 und 23 die Änderung der Verteilung der Suchfensterdaten im Prozessorfeld;
Fig. 24 die Abtastrichtung der Suchfensterdaten im Suchbereich;
Fig. 25 spezifisch die Struktur eines Elementprozessors von Fig. 3;
Fig. 26 spezifisch die Struktur einer Absolutdifferenzschaltung von Fig. 25;
Fig. 27 ein Signaldiagramm für den Betrieb eines verallgemeinerten Elementprozessors von Fig. 25;
Fig. 28 ein Diagramm zur Beschreibung des Betriebs des Elementprozessors von Fig. 25;
Fig. 29 ein Signaldiagramm eines anderen Betriebszustands für den Elementprozessor von Fig. 25;
Fig. 30 die Verteilung der Pixeldaten, die das effektive Rechenergebnis zum Betriebszeitpunkt im Betriebssignaldiagramm der Fig. 29 liefern;
Fig. 31 spezifisch die Struktur eines Elementprozessors zur Realisierung des Betriebs von Fig. 30;
Fig. 32 ein Beispiel der Struktur eines Datenregisters, das im Elementprozessor benutzt wird;
Fig. 33 eine andere Struktur für einen Elementprozessor;
Fig. 34 eine andere Struktur für einen Elementprozessor;
Fig. 35 eine andere Struktur für ein Datenregister;
Fig. 36 eine Struktur für ein Datenregister, das die Einheitsstruktur von Fig. 35 enthält;
Fig. 37 eine Struktur des Datenpuffers von Fig. 4;
Fig. 38 eine Struktur einer anderen Absolutdifferenzschaltung, die im Elementprozessor nach der vorliegenden Erfindung benutzt wird;
Fig. 39 die Struktur einer Summierungseinheit, wenn die Absolutdifferenzschaltung von Fig. 38 benutzt wird;
Fig. 40 eine spezifische Struktur für die Summierungseinheit von Fig. 39;
Fig. 41 die Struktur des 4-zu-2-Komprimierers der Fig. 39;
Fig. 42 eine spezifische Struktur für die Summierungseinheit von Fig. 39;
Fig. 43 eine spezifische Struktur für den Komparator von Fig. 1;
Fig. 44 eine spezifische Struktur für den Komparator von Fig. 1;
Fig. 45 die Struktur des Komparators von Fig. 44;
Fig. 46 die Struktur der Aktualisierungssteuereinheit von Fig. 44;
Fig. 47 eine Tabelle für Prioritätsspezifizierungswerte für jeden Verschiebungsvektor, die vom Prioritätskomparator der Fig. 44 gespeichert wird;
Fig. 48 die Struktur des Prioritätskomparators von Fig. 44;
Fig. 49 ein Beispiel für die Folge der Inkrementierung/ Dekrementierung der Addierer-/Subtrahiererschaltung der Fig. 48;
Fig. 50 eine spezifische Struktur der Addierer/ Subtrahiererschaltung der Fig. 48;
Fig. 51 spezifisch die Struktur eines Bewegungsvektor- Erfassungsmittels nach einer zweiten Ausführungsform der vorliegenden Erfindung;
Fig. 52 eine spezifische Struktur des Bewegungsvektor- Erfassungsmittels von Fig. 51;
Fig. 53 eine spezifische Struktur der Pufferspeicherschaltung von Fig. 52;
Fig. 54 die Verteilung der gespeicherten Daten im Pufferspeicher von Fig. 53;
Fig. 55 die Struktur des Betriebs der Pufferspeicherschaltung von Fig. 53;
Fig. 56 spezifisch die Struktur der zweiten Betriebsvorrichtung von Fig. 51;
Fig. 57 die spezifische Struktur der Vorhersagebild- Erzeugungsschaltung mit gebrochener Genauigkeit von Fig. 56;
Fig. 58 die Struktur der Absolutdifferenz-Summierungsschaltung von Fig. 56;
Fig. 59 ein Diagramm zur Erläuterung des Betriebs der zweiten Betriebsvorrichtung;
Fig. 60 spezifisch einer Struktur der zweiten Betriebsvorrichtung von Fig. 52;
Fig. 61 eine Modifikation des Bewegungsvektor-Erfassungsmittels von Fig. 52;
Fig. 62 eine Struktur des Betriebs des Bewegungsvektor- Erfassungsmittels von Fig. 61;
Fig. 63 eine andere Struktur des Bewegungsvektor-Erfassungsmittels von Fig. 52;
Fig. 64 eine Modifikation des Bewegungsvektor-Erfassungsmittels von Fig. 63;
Fig. 65 das Suchfeld und den Musterblock, die bei der dritten Ausführungsform benutzt werden, sowie den Suchbereich;
Fig. 66 die Anordnung des Musterblocks, der bei der dritten Ausführungsform benutzt wird;
Fig. 67 ein Diagramm zur Erläuterung des Betriebs nach der dritten Ausführungsform der vorliegenden Erfindung;
Fig. 68 ein Diagramm zur Erläuterung des Betriebs eines Bewegungsvektor-Erfassungsmittels nach der dritten Ausführungsform der vorliegenden Erfindung;
Fig. 69-71 Diagramme zur Erläuterung des Betriebs des Bewegungsvektor-Erfassungsmittels nach der dritten Ausführungsform der vorliegenden Erfindung;
Fig. 72 ein Signaldiagramm der Bewegungsvektorerzeugung im Bewegungsvektor-Erfassungsmittel nach der dritten Ausführungsform der vorliegenden Erfindung;
Fig. 73 die Struktur des Elementprozessors, der bei der dritten Ausführungsform der vorliegenden Erfindung;
Fig. 74 und 75 die Struktur zur Erzeugung von Daten zweier Musterblöcke für den Elementprozessor von Fig. 73;
Fig. 76 eine weitere Struktur des Elementprozessors von Fig. 73;
Fig. 77A und 77B spezifisch die Struktur der Komparatoreinheit des Bewegungsvektor-Erfassungsmittels nach der dritten Ausführungsform der vorliegenden Erfindung;
Fig. 78 die Struktur einer Vorrichtung bei der Kombination der dritten Ausführungsform der vorliegenden Erfindung mit dem Bewegungsvektor-Erfassungsmittel mit gebrochener Genauigkeit;
Fig. 79 und 80 eine andere Struktur und deren Betrieb, wenn das Bewegungsvektor-Erfassungsmittel nach der dritten Ausführungsform mit dem Bewegungsvektor-Erfassungsmittel mit gebrochener Genauigkeit kombiniert wird;
Fig. 81 die Struktur eines Bewegungsvektor-Erfassungsmittels nach einer vierten Ausführungsform der vorliegenden Erfindung;
Fig. 82 die Struktur der Bewegungsvektor-Erfassungseinheit mit Interpolationsvorhersage nach Fig. 81;
Fig. 83 die Strukturen der Referenzbild-Erzeugungsschaltung mit Interpolationsvorhersage und der Bewegungsvektor- Erfassungseinheit mit Interpolationsvorhersage von Fig. 82;
Fig. 84 spezifisch die Struktur der Bewegungsvektor- Erfassungsschaltung von Fig. 82;
Fig. 85 die detaillierte Struktur der Schaltung von Fig. 84;
Fig. 86 eine Modifizierung der Referenzbild-Erzeugungsschaltung mit Interpolationsvorhersage von Fig. 82;
Fig. 87 eine weitere Struktur der Bewegungsvektor- Erfassungseinheit mit Interpolationsvorhersage;
Fig. 88 eine Modifikation des Bewegungsvektor-Erfassungsmittels nach der vierten Ausführungsform;
Fig. 89 die Datenverarbeitungsweise im Bewegungsvektor- Erfassungsmittel nach der vierten Ausführungsform;
Fig. 90 ein Beispiel für die Anwendung des Bewegungsvektor- Erfassungsmittels nach der vierten Ausführungsform;
Fig. 91 eine weitere Struktur des Bewegungsvektor- Erfassungsmittels nach der vierten Ausführungsform;
Fig. 92 eine Struktur einer Bildsignal-Codierungsschaltung;
Fig. 93 eine Struktur der Quellencodierungsschaltung von Fig. 92;
Fig. 94A und 94B Diagramme zur Erläuterung des Bewegungskompensationsvorgangs eines Bildes;
Fig. 95 den Suchbereich und die Musterblockanordnung bei der Bewegungskompensation nach dem Block-Matching-Verfahren und die Beziehung eines Bewegungsvektors;
Fig. 96 die Struktur eines Bewegungsvektor-Erfassungsmittels;
Fig. 97 die Struktur eines Elementprozessors, der im Prozessorfeld der Fig. 96 enthalten ist;
Fig. 98 die Abtastung des Musterblocks im Bewegungsvektor- Erfassungsmittel von Fig. 96 sowie das Abtastverfahren des Suchfensters;
Fig. 99 den Betrieb des Bewegungsvektor-Erfassungsmittels von Fig. 96;
Fig. 100 ein Diagramm zur Beschreibung des Betriebs eines Bewegungsvektor-Erfassungsmittels;
Fig. 101 eine weitere Struktur eines Bewegungsvektor- Erfassungsmittels;
Fig. 102 ein Diagramm zur Erläuterung des Verfahrens zur Erzeugung eines Bewegungsvektors mit gebrochener Genauigkeit; und
Fig. 103 ein Diagramm zur Erläuterung des Bewegungsvektors mit gebrochener Genauigkeit.
Ausführungsform 1
Fig. 1 zeigt ein Blockschaltbild der Struktur eines Bewegungsvektor- Erfassungsmittels nach einer ersten Ausführungsform der vorliegenden Erfindung. Das Bewegungsvektor-Erfassungsmittel von Fig. 1 erfaßt einen Bewegungsvektor mit ganzzahliger Genauigkeit.
Wie in Fig. 1 gezeigt ist, weist das Bewegungsvektor- Erfassungsmittel eine Eingabeeinheit 2 zum Empfangen von Suchfensterdaten Y und Musterdaten X, um die zugeführten Daten zu einem vorbestimmten Zeitpunkt bereitzustellen, eine Betriebseinheit 1 zum Berechnen eines Kennungswertes (einer Kennungsfunktion), der sich auf einen Verschiebungsvektor für einen Musterblock entsprechend den von der Eingabeeinheit 2 ausgegebenen Daten bezieht, und eine Komparatoreinheit 3 zum Empfangen eines Kennungswertes (Σ|a-b|), der durch die Betriebseinheit 1 ermittelt wird, und zum Ermitteln des minimalen Kennungswertes für einen Musterblock, auf, um einen Verschiebungsvektor entsprechend diesem minimalen Kennungswert als Bewegungsvektor zu bestimmen. Der Bewegungsvektor wird von der Komparatoreinheit 3 abgegeben.
Die Betriebseinheit 1 weist ein Prozessorfeld 10 mit einer Mehrzahl von Elementprozessoren, die in einem Feld angeordnet sind, und eine Summierungseinheit 12 zum Ermitteln der Gesamtsumme der Berechnungsergebniswerte (Absolutdifferenzen bei der vorliegenden Ausführungsform), die vom jeweiligen Prozessor im Prozessorfeld 10 geliefert werden, auf. Jeder Elementprozessor im Prozessorfeld 10 speichert verschiedene Musterblockdaten und berechnet die Komponente eines Kennungswertes, der die Korrelation zwischen einem Musterblock und einem Suchfensterblock angibt. Im Prozessorfeld 10 werden die Musterblockdaten während des Betriebszyklus zum Ermitteln eines Bewegungsvektors für diesen Musterblock konstant gespeichert. Die Suchfenster-Blockdaten werden im Prozessorfeld für jeweils einen Berechnungszyklus um einen Pixelwert verschoben. Damit kann für jeden Verschiebungsvektor ein Kennungswert mit einem minimalen Suchfenster-Datentransfer berechnet werden, um die Strom- /Leistungsaufnahme zu vermindern. Im folgenden wird die Struktur der in Fig. 1 gezeigten Betriebseinheit 1 genau beschrieben.
Fig. 2 zeigt ein Diagramm, das die Größe eines Musterblocks und eines Suchbereichs angibt, die bei der vorliegenden Erfindung benutzt werden. Der Musterblock 20 weist Pixel auf, die in Q Zeilen und P Spalten angeordnet sind. Der Suchbereich 22 weist einen Suchbereich zwischen +t1 und -t2 in horizontaler Richtung und einen Suchbereich zwischen +r1 und -r2 in vertikaler Richtung auf. Genauer gesagt weist der Suchbereich 22 (t2+P+t1)·(r2+Q+r1) Pixel auf.
Fig. 3 zeigt schematisch die Struktur eines Elementprozessors, der im Prozessorfeld von Fig. 1 enthalten ist. Wie in Fig. 3 dargestellt ist, weist ein Elementprozessor PE M Datenregister 25-1 bis 25-M auf, die zum Speichern von Musterblockdaten kaskadenförmig miteinander verbunden sind. Die Datenregister 25-1 bis 25-M speichern verschiedene Musterblockdaten. Die Datenregister 25-1 bis 25-M entsprechend den Speichervorrichtungen im ersten Speichermittel.
Der Elementprozessor PE weist ferner N Stufen von kaskadenförmig verbundenen Datenregistern 26-1 bis 26-N zum Speichern von Suchfensterdaten auf. Die Datenregister 26-1 bis 26-N entsprechen den jeweiligen Speichervorrichtungen im zweiten Speichermittel. N ist eine ganzzahliges Vielfaches von M (n-mal). Die Anzahl der Zeilen Q im Musterblock ist ein ganzzahliges Vielfaches der Anzahl M der Stufen von Datenregistern 25-1 bis 25-M. Bei diesem Elementprozessor PE wird die Berechnung unter Verwendung der in den M Datenregistern 25-1 bis 25-M gespeicherten Musterblockdaten ausgeführt. Hier können die Datenregister 26-1 bis 26-N zum Speichern der Suchfensterdaten in einer 1-zu-1-Entsprechung zu den Datenregistern 25-1 bis 25-M zur Speicherung der Musterblockdaten (N=M) gebildet sein, um die Berechnung unter Verwendung der im jeweiligen Register gespeicherten Daten auszuführen.
Der Elementprozessor PE führt die Berechnung für die M Musterblockwerte aus. Das Rechenmittel im Elementprozessor PE wird in gemultiplexter Weise für die M Datenregister 25-1 bis 25-M verwendet. Genauer gesagt ist bei der vorliegenden Ausführungsform nur ein Rechenmittel im Elementprozessor PE gebildet.
Die Suchfensterdaten und die Musterblockdaten werden nur zwischen benachbarten Elementprozessoren in nur einer Richtung übertragen.
Fig. 4 zeigt eine Struktur für das Prozessorfeld von Fig. 1. Wie in Fig. 4 dargestellt ist, weist ein Prozessorfeld 10 lineare Prozessorfelder LA1 bis LAP auf, die in P Spalten angeordnet sind. Die linearen Prozessorfelder LA1 bis LAP besitzen dieselbe Struktur, wobei jedes Prozessorfeld m Elementprozessoren PE1-PEm, die in kaskadierender Weise miteinander verbunden sind, und einen Datenpuffer DL zum Speichern von R (=r1+r2) Suchfensterwerten, die als Verzögerungsmittel dienen, aufweist.
Die Elementprozessoren PE1-PEm übertragen die Suchfensterdaten und die Musterblockdaten in einer einzigen Richtung (in Fig. 4 vertikal nach oben) im selben linearen Prozessorfeld LA1. Beim Übertragen von Daten in ein benachbartes lineares Prozessorfeld wird der Suchfensterwert vom am weitesten in Übertragungsrichtung befindlichen Elementprozessor PE1 an den Datenpuffer DL des benachbarten linearen Prozessorfeldes (in Fig. 4 nach links) angelegt. Der Musterblockwert vom am weitesten in Übertragungsrichtung befindlichen Elementprozessor PE1 wird an den am weitesten entgegen der Übertragungsrichtung befindlichen Elementprozessor PEm des benachbarten linearen Prozessorfeldes angelegt. Genauer gesagt werden der Suchfensterwert über den Elementprozessor PE und den Datenpuffer DL und der Musterblockwert nur über den Elementprozessor PE übertragen.
Zusätzlich zur oben erwähnten Verzögerungsfunktion weist der Datenpuffer DL eine Funktion zum Ausgeben des zugeführten Wertes in FIFO-Weise (First-In-First-Out) auf. Daher können R Daten-Latches mit Schiebefunktion oder R Register-Files (Registersätze), die Daten speichern, als Datenpuffer DL benutzt werden.
Beim oben beschriebenen Prozessorfeld 10 kann eine ausreichende Verdrahtungsfläche für die Signalleitungen sichergestellt werden, und die belegte Verdrahtungsfläche kann durch paralleles Anordnen der Signalleitungen, die die Suchfensterdaten übertragen, und der Signalleitungen, die die Musterdaten übertragen, minimiert werden. Der Grund dafür ist, daß der Bereich, der der Breite des Elementprozessors PE entspricht, als Verdrahtungsbereich verwendet werden kann.
Fig. 5 zeigt eine weitere Möglichkeit für den Datenübertragungspfad. Der Datenübertragungspfad kann so gebildet sein, daß die Musterdaten-Übertragungsrichtung 32 und die Suchfensterdaten- Übertragungsrichtung 30 orthogonal sind, wie in Fig. 5 dargestellt ist. Weil die Bildsignale in einem allgemeinen Bildspeicher rasterförmig abgetastet werden, werden aufeinanderfolgende Bilddaten sequentiell in Zeilenrichtung (in horizontaler Richtung in der Figur) gespeichert. Wenn ein Wert in der horizontalen Richtung von Fig. 5 übertragen werden soll, können die Daten derselben Zeile angesprochen und sequentiell aus dem Bildspeicher ausgelesen werden. Das ist für das Datenlesen und die Datenübertragung sehr angenehm. Die Suchfensterdaten und die Musterdaten werden in jedem Elementprozessor in nur einer Richtung übertragen. Im folgenden wird der Betrieb beschrieben.
Es wird ein Fall betrachtet, bei dem ein Bild in 8·8 Makroblöcke unterteilt ist, wie in Fig. 6 dargestellt ist. Wie in Fig. 6 gezeigt ist, wird der schraffierte Bereich eines Makroblocks im gegenwärtigen Bild 36 als Musterblock TB1 angenommen. Für den Musterblock TB1 soll ein Bewegungsvektor bestimmt werden.
Hier sind die schraffierten Makroblöcke MB1, MB2 und MB3 im vorangehenden Bild 35, das in Fig. 6B dargestellt ist, im Prozessorfeld 10 gespeichert. Die Pixeldaten des Musterblocks TB1, der in Fig. 6A gezeigt ist, sind im jeweiligen Datenregister im Elementprozessor PE gespeichert. Q/m Musterblockwerte, die in der Figur in vertikaler Richtung angeordnet sind, sind in einem Elementprozessor PE gespeichert. Hinsichtlich der Suchfensterdaten sind Q·n/m in vertikaler Richtung benachbarte Pixelwerte in einem Elementprozessor gespeichert. In einem Elementprozessorfeld 10 sind Q Suchfenster-Pixelwerte in vertikaler Richtung und P Suchfenster- Pixelwerte in horizontaler Richtung gespeichert, d. h. insgesamt P·Q Suchfenster-Pixelwerte. Jeder der P·Q Pixelwerte wird in der folgenden Beschreibung als "Suchfensterblock-Pixelwert" bezeichnet. Die restlichen R Suchfenster-Pixelwerte sind im Datenpuffer DL gespeichert. Dieser Zustand ist in Fig. 7 dargestellt.
Genauer gesagt implementieren die Suchfensterdaten aus P·Q Pixelwerten einen Suchfensterblock 42 und werden im jeweiligen Elementprozessor PE im Prozessorfeld gespeichert. Die restlichen (r1+r2)·P Pixelwerte werden im Datenpuffer DL gespeichert. Der im Datenpuffer DL gespeicherte Pixeldatenbereich 44 wird im folgenden als "Seitenfensterblock" bezeichnet. In der folgenden Beschreibung wird der Suchfensterblock 42 kombiniert mit dem Seitenfensterblock als Suchfenster 40 bezeichnet.
Wie in Fig. 8 gezeigt ist, werden M Musterblockdaten und N Suchfensterdaten in einem Elementprozessor PE gespeichert. Weil m Elementprozessoren PE kaskadenförmig verbunden sind, werden die Musterpixeldaten, die durch die jeweilige von Q Spalten angeordnet werden, im Elementprozessor PE in einem linearen Prozessorfeld gespeichert. Im folgenden wird deren spezifischer Betrieb beschrieben.
Um die folgende Beschreibung zu vereinfachen, werden folgende Bedingungen angenommen.
Musterblockgröße P=Q=16
Suchbereich für den Bewegungsvektor r1=r2=15, T2=2, T1=15, m=8 M=N=2.
Fig. 9 zeigt den Datenspeicherungszustand im ersten Betriebszyklus des Bewegungsvektor-Ermittlungsvorgangs. Wie in Fig. 9 gezeigt ist, sind die Daten des Musterblocks 43, die aus den Pixeldaten von 16 Zeilen und 16 Spalten gebildet werden, im jeweiligen Prozessor PE des Prozessorfeldes 10 gespeichert. Entsprechend werden die Pixeldaten des Suchfensterblocks 42 aus 16 Zeilen mal 16 Spalten im jeweiligen Prozessor PE im Prozessorfeld gespeichert. Dieser Zustand entspricht dem Verschiebungsvektor (0, -15). In diesem Zustand ermittelt jeder Elementprozessor die absolute Differenz des Musterblockwertes und eines entsprechenden Suchfensterwertes. Die vom jeweiligen Elementprozessor PE ermittelte absolute Differenz wird zur Summierungseinheit 12 übertragen, um dort akkumuliert zu werden. Die Gesamtsumme wird dazu benutzt, einen Kennungswert (eine Kennungsfunktion) entsprechend diesem Verschiebungsvektor (0, -15) zu bestimmen.
Die Musterblockdaten werden im jeweiligen Elementprozessor gehalten, und nur die Suchfensterblockdaten werden um ein Pixel verschoben.
In diesem Zustand wird der Wert in der obersten Zeile im Suchfensterblock 42 zum Datenpuffer DL der benachbarten Spalte übertragen, wie das in Fig. 10A dargestellt ist. Als Reaktion darauf wird der erste Pixelwert des Suchfensterblocks ausgeschoben. Parallel zur diesem Ausschiebevorgang wird ein neuer Suchfensterblockwert eingegeben. Der ausgeschobene Suchfensterblockwert und der neu eingeschobene Suchfensterblockwert sind in den schraffierten Bereichen der Fig. 10A dargestellt.
Damit wird im Elementprozessor PE im Prozessorfeld der im Suchfenster 40 um eine Zeile nach unten verschobene Suchfensterblock 42a gespeichert. Hier ist die Versetzung zwischen dem Musterblock 43 und dem Suchfensterblock 42a gleich dem Vektor (0, -14).
Unter dieser Bedingung wird die Berechnung der absoluten Differenz und die Akkumulierung ähnlich wie beim oben beschriebenen Vorgang ausgeführt, um einen Kennungswert für den Verschiebungsvektor (0, -14) zu erhalten.
Wenn dieser Vorgang wiederholt wird, bis der Verschiebungsvektor (0, 0) erreicht ist, entspricht der Suchfensterblock 42b im Suchfenster 40 der True-Backside des Musterblocks 43, wie in Fig. 11A dargestellt ist. Unter Beachtung der Daten im Suchfenster 40, die im Prozessorfeld gespeichert sind, werden die Suchfensterdaten von 15·16 Pixeln einer Position, die im oberen Bereich um eine Spalte nach rechts verschoben ist, gespeichert. Durch Ausschieben von einem Bit an Suchfensterdaten, das für die Berechnung des Kennungswertes nicht länger notwendig ist, werden parallel zur Kennungswertberechnung die Suchfensterdaten der nächsten Spalte neu gespeichert.
Wenn der Verschiebungsvektor dann gleich (0, +15) wird, befindet sich der Suchfensterblock 42c im unteren Bereich des Suchfensters 40, wie in Fig. 12A dargestellt ist. Nachdem in diesem Zustand der Kennungswert für diesen Verschiebungsvektor (0, +15) berechnet worden ist, wird der nicht länger benötigte Suchfensterwert PY1 aus dem Prozessorfeld ausgeschoben und ein neuer Suchfensterwert PY2 wird eingeschoben. Dieser Schiebevorgang wird 16mal wiederholt. Durch die Schiebevorgänge werden alle Daten für den Berechnungsvorgang im nächsten Schritt ermittelt.
Im nächsten Schritt wird die Berechnung eines Kennungswertes für das im Suchbereich um eine Spalte nach rechts verschobene Suchfenster ausgeführt. Genauer gesagt wird das nächste Suchfenster 40a im Suchbereich 45 aus Pixeldaten an einer Position gebildet, die gegenüber dem ursprünglichen Suchfenster 40 um eine Spalte nach rechts verschoben ist, wie in Fig. 13 dargestellt ist. Beim in Fig. 12B gezeigten Zustand werden die Pixeldaten eines Bereichs 50, der durch Schraffurlinien angegeben wird, im Prozessorfeld gespeichert. Um im jeweiligen Elementprozessor im Prozessorfeld die Suchfenster- Blockdaten an der oberen Position des Suchfensters 40a, das in Fig. 13 gezeigt ist, zu speichern, werden die restlichen 15 Pixelwerte eingeschoben, wie oben für die Fig. 12B beschrieben worden ist. Damit wird der am weitesten oben befindliche Suchfensterblock 42d im Suchfenster 40a neu im jeweiligen Elementprozessor PE im Prozessorfeld gespeichert. Das entspricht dem Zustand, bei dem der Suchfensterblock 42d und der Musterblock 43 entsprechend einem Verschiebungsvektor (1, -15) im Elementprozessor gespeichert sind. Die Berechnung der absoluten Differenz und der Gesamtsumme, d. h. die Berechnung des Kennungswertes, wird in diesem Zustand ausgeführt. In Fig. 14 zeigt der Bereich einer Spalte, der durch eine gestrichelte Linie angegeben wird, die ausgeschobenen Suchfensterdaten und die eingeschobenen Suchfensterdaten.
Durch (15+15+1+16)·15+(15+15+1)=736maliges Ausführen der oben beschriebenen Schiebeoperation wird die Berechnung eines Kennungswertes für einen Verschiebungsvektor (15, 15) ausgeführt, wie in Fig. 15 dargestellt ist. Genauer gesagt wird die Berechnung eines Kennungswertes für den Musterblock 43 für den rechts unten befindlichen Suchfensterblock 42e im Suchbereich 45 ausgeführt.
In diesem Zustand wird der Wert eines Bereichs 50a, der durch die Schraffurlinien in Fig. 16 angegeben ist, im Elementprozessor im Prozessorfeld gespeichert. Die Wert im restlichen Bereich (Seitenfensterbereich) 52 aus 16·30 Pixeln werden im Datenpuffer gespeichert. Durch Ausführen der oben angeführten Operation können alle für den Musterblock 43 erforderlichen Kennungsfunktionen (Kennungswerte) berechnet werden. Der minimale Kennungswert (Kennungsfunktion) aller berechneten Kennungsfunktionen (Kennungswerte) wird in der Komparatoreinheit ermittelt, wodurch der entsprechende Verschiebungsvektor als Bewegungsvektor für den Musterblock 43 bestimmt wird.
Im folgenden wird die Bewegung der oben beschriebenen Pixeldaten auf der Basis der Suchfenster-Pixeldaten beschrieben. Wie in Fig. 17 gezeigt ist, wird angenommen, daß das Prozessorfeld 10 64 Elementprozessoren PE0-PE63 aufweist, die in 8 Zeilen und 8 Spalten angeordnet sind. In Fig. 17 ist der Puffer DL nicht dargestellt. Die Elementprozessoren PE0-PE63 speichern jeweils Pixelwerte des Musterblocks. Dieser Musterblock weist Pixelwerte a0, 0 bis a7, 7 auf, die in 8 Zeilen und 8 Spalten angeordnet sind, wie Fig. 18 zeigt. Der Pixelwert ai, j gibt den Pixelwert in der i-ten Zeile und j-ten Spalte im Musterblock aus 8 Zeilen und 8 Spalten an. Die Musterpixeldaten a0, 0-a7, 7 befinden sich während der Bewegungsvektor-Berechnungsphase in einem entsprechenden Elementprozessor.
Es wird angenommen, daß der Suchbereich -8 bis +8 in horizontaler Richtung und -8 bis +8 in vertikaler Richtung beträgt. Fig. 19 zeigt eine Anordnung der Pixeldaten im halben Suchbereich, d. h. im Abschnitt 0 bis +8 des Suchbereichs in horizontaler Richtung. Genauer gesagt weist der Suchbereich Pixelwerte b0, 0 bis b23, 15 auf, die in 24 Zeilen und 16 Spalten angeordnet sind, wie in Fig. 19 dargestellt ist. bi, j gibt ein Referenzpixel an, das im Suchbereich in der i-ten Zeile und j-ten Spalte angeordnet ist.
Mit der in den Fig. 17, 18 und 19 gezeigten Anordnung wird ein Kennungswert für jeden der Verschiebungsvektoren (0, 8) bis (8, 8) berechnet. Obwohl die Elementprozessoren PE0-PE63 in einer Matrix angeordnet sind, ist die Übertragungsrichtung der Daten nur unidirektional. Wie in Fig. 21 gezeigt ist, sind die Elementprozessoren PE0-PE63 des Prozessorfeldes 10 und die Puffer DL für die Suchfenster-Pixeldaten in einer Spalte angeordnet.
Wie in Fig. 21 gezeigt ist, weist die Prozessorspalte PL1 Elementprozessoren PE0-PE7 und die Prozessorspalte PL2 Elementprozessoren PE8-PE15 auf. Eine Prozessorspalte PLk weist Elementprozessoren PE(8k) bis PE(8k+7) auf, wobei gilt k=0 bis 7. Zwischen den Prozessorspalten PLk und PL(k+1) ist ein Puffer DL(k+1) gebildet. Darüber hinaus ist ein Puffer DL8 am Eingangsabschnitt der am weitesten entgegen der Übertragungsrichtung befindlichen Prozessorspalte PL7 (dem Pixeldaten-Eingabeabschnitt am nächsten) gebildet. Jeder der Puffer DL1-DL8 speichert Pixeldaten und überträgt den Wert in nur einer Richtung.
Als Anfangszustand wird der Zustand betrachtet, in dem die Suchfensterdaten b0, 0-b7, 0 in der Prozessorspalte PL0 und die Pixeldaten b8, 0-b23, 0 im Puffer DL1 gespeichert sind, wie in Fig. 21 dargestellt ist. Mit anderen Worten wird der Zustand betrachtet, bei dem die 0-te bis 23-te Zeile und 0-te bis 7-te Spalte im Suchbereich der Fig. 19 gespeichert sind. Pixeldaten der 0-ten bis 7-ten Zeile und der 0-ten bis 7-ten Spalte im Suchbereich von Fig. 19 sind in den Prozessorspalten PL0-PL7 gespeichert. Hier sind Pixelwerte der Musterpixeldaten a0, 0-a7, 7 in entsprechenden Elementprozessoren PE0-PE63 gespeichert, so daß eine Spalte von Musterpixeldaten a0, k bis a7, k in einer Prozessorspalte PLk gespeichert sind. Dieser Zustand entspricht einem Verschiebungsvektor (0, -8), und ein Kennungswert für diesen Verschiebungsvektor wird berechnet.
Im nächsten Zyklus wird der Suchfenster-Pixelwert ausgeschoben. Wie in Fig. 22(a) dargestellt ist, wird genauer gesagt der Pixelwert b0, 0 ausgeschoben und der Pixelwert b0, 8 wird eingeschoben. Dieser Schiebevorgang wird über einen Puffer ausgeführt (angegeben durch die Schraffur in Fig. 22). Die Pixeldaten eines Suchfensterblocks, der im Suchbereich der Fig. 19 um eine Zeile nach unten verschoben ist, werden in den Prozessorspalten PL0-PL7 gespeichert. Dieser neue Suchfensterblock entspricht einem Verschiebungsvektor (0, -7). (Die Musterblockdaten werden nicht verschoben). Durch Ausführen der Berechnung in diesem Zustand wird ein Kennungswert für den Verschiebungsvektor (0, -7) berechnet.
Wie in Fig. 22(b) dargestellt ist, wird dann der Pixelwert b1, 8 der 1-ten Zeile und 8-ten Spalte eingeschoben, und der Pixelwert b1, 0 wird ausgeschoben. Der Speicherpixelwert in den Prozessorspalten PL0-PL7 wird um eine Zeile (in Fig. 19) nach unten verschoben. Das bedeutet, daß eine Prozessorspalte PLk die Suchfenster-Blockdaten b2, k bis b9, k speichert. Dieser Suchfensterblock entspricht einem Verschiebungsvektor (0, -6), und ein Kennungswert für diesen Verschiebungsvektor wird berechnet.
Durch Ausführen des oben beschriebenen Schiebe- und Berechnungsvorgangs werden der Pixelwert b7, 8 eingeschoben und der Pixelwert b7, 0 ausgeschoben, wie in Fig. 22(c) dargestellt ist. Die Pixeldaten b8, k bis b15, k werden in der Prozessorspalte PLk gespeichert. Der in den Prozessorspalten PL0-PL7 gespeicherte Suchfensterblock entspricht einem Verschiebungsvektor (0, 0).
Wenn der Schiebe-/Berechnungsvorgang achtmal ausgeführt wird, nachdem ein Kennungswert für den Verschiebungsvektor (0, 0) berechnet worden ist, wird der Pixelwert b15, 8 eingeschoben und der Pixelwert b15, 0 ausgeschoben, wie in Fig. 22(d) dargestellt ist. Die Pixeldaten eines Suchfensterblocks entsprechend dem Verschiebungsvektor (0, 8) werden in der Prozessorspalte gespeichert. Dieser Suchfensterblocks entspricht einem Verschiebungsvektor (0, 8).
Auf die Berechnung des Kennungswertes für den Verschiebungsvektor (0, 8) folgt die Berechnung des Kennungswertes für den Verschiebungsvektor (1, -8). Hier sind jedoch die Pixeldaten der 8- ten Spalte im Suchbereich noch nicht eingeschoben worden. Daher werden die restlichen Suchfenster-Pixeldaten b16, 8 bis b23, 8 in der 8-ten Spalte eingeschoben. Als Reaktion darauf werden die nicht mehr benötigten Pixeldaten b16, 0 bis b23, 0 ausgeschoben. Das ist in Fig. 23(a) dargestellt. Beim in Fig. 23(a) gezeigten Zustand werden die Pixeldaten b0, k+1 bis b7, k+1 in der Prozessorspalte PLk gespeichert. Genauer gesagt werden die Suchfenster-Pixeldaten für den Verschiebungsvektor (1, -8) in den Elementprozessoren PE0-PE63 gespeichert, und der Kennungswert für den Verschiebungsvektor (1, - 8) wird berechnet.
Erneut wird der Schiebe-/Berechnungsvorgang für einen Pixelwert ausgeführt. Genauer gesagt wird der Pixelwert b0, 9 eingeschobene und der Pixelwert b0, 1 wird ausgeschoben, wie in Fig. 23(b) dargestellt ist, wodurch die Berechnung eines Kennungswertes für den Verschiebungsvektor (1, -7) ausgeführt wird.
Der oben beschriebene Vorgang wird wiederholt, bis der Pixelwert b15, 16 und der Pixelwert b15, 8 eingeschoben bzw. ausgeschoben worden sind, wie in Fig. 23(c) dargestellt ist, um die Berechnung eines Kennungswertes für den letzten Verschiebungsvektor (8, 8) auszuführen.
Der oben beschriebene Schiebevorgang für einen Suchfeld-Pixelwert ist äquivalent der Bildung einer 1-Pixel-Datenspalte durch Aneinanderhängen jeder Spalte in der Matrix des Suchbereichs der Fig. 19 und Verschieben der 1-Pixel-Werte jeweils um eins. Der Puffer wird eingesetzt, so daß der erforderliche Pixelwert (Suchfenster-Blockwert) im Elementprozessor gespeichert wird.
Bei der oben beschriebenen Struktur befindet sich der Musterblockwert im jeweiligen Elementprozessor im Proz 99999 00070 552 001000280000000200012000285919988800040 0002004322343 00004 99880essorfeld. Nur der Wert im Suchfeld wird für jeden Betriebszyklus verschoben. Die Abtastrichtung der Daten im Suchbereich ist unidirektional (in der Figur nach unten) im Suchbereich 45, wie in Fig. 24 dargestellt ist. Weil die Datenübertragung des Suchfeldes nur in einer Richtung ausgeführt wird, ist keine Schaltung notwendig, die die Datenübertragungsrichtung auswählt, so daß die für den Datentransfer erforderliche Komplexität vermindert wird. Ferner kann durch die Verringerung der Schaltungskomplexität die Leistungsaufnahme vermindert werden.
Fig. 25 zeigt die Struktur eines Elementprozessors PE genauer. Bei der vorherigen Struktur sind nur das Suchfensterdaten-Speichermittel und das Musterblockdaten-Speichermittel beschrieben worden. Im folgenden wird unter Bezugnahme auf die Fig. 25 eine genaue Struktur des Elementprozessors PE beschrieben.
Wie in Fig. 25 dargestellt ist, weist ein Elementprozessor PE zwei Stufen kaskadenförmig verbundener Register 26-1 und 26-2 zum Speichern von Suchfensterdaten, einen Selektor 60 zum Auswählen der in einem der Register 26-1 und 26-2 gespeicherten Daten entsprechend einem Auswahlsignal SEL, zwei Stufen kaskadenförmig verbundener Register 25-1 und 25-2 zum Speichern von Musterdaten, einen Selektor 62 zum Auswählen der in einem der Register 25-1 und 25-2 gespeicherten Daten entsprechend einem Auswahlsignal SEL1, und eine Absolutdifferenzschaltung 64 zur Ermittlung der absoluten Differenz der von den Selektoren 60 und 62 ausgewählten Daten auf. Diese Struktur entspricht M=N=2 in Fig. 3.
Die Register 26-1 und 26-2 bilden eine Schieberegisterstufe, um entsprechend einem nicht dargestellten Taktsignal zugeführte Daten zu übertragen und zu verriegeln. In ähnlicher Weise bilden die Register 25-1 und 25-2 ein Schieberegister, um entsprechend einem nicht dargestellten Transfertaktsignal zugeführte Musterblockdaten zu übertragen und zu verriegeln.
Der Selektor 60 arbeitet synchron zum Selektor 62 und wählt einen Satz von Registerpaaren 26-1 und 25-1 oder 26-2 und 25-2 aus.
Bei der in Fig. 25 dargestellten Struktur führt ein Elementprozessor PE die Berechnung für zwei Pixel von Musterblockdaten aus.
Die Musterblockdaten befinden sich in den Registern 25-1 und 25-2 bis ein entsprechender Bewegungsvektor ermittelt worden ist. Die Suchfensterdaten speichernden Register 26-1 und 26-2 werden pro Zyklus um ein Pixel verschoben. Die Selektoren 60 und 62 wählen während eines Übertragungszyklus eines Suchfensters für einen Pixelwert abwechselnd zwei Register aus. Mit anderen Worten führt die Absolutdifferenzschaltung 64 die Berechnung eines absoluten Differenz in einem Halbzyklus des Suchfensterdaten- Übertragungszyklus aus.
Fig. 26 zeigt eine genaue Struktur der Absolutdifferenzschaltung von Fig. 25. Wie in Fig. 26 dargestellt ist, weist die Absolutdifferenzschaltung 64 einen Subtrahierer 70 mit einem negativen Eingang (A) zum Empfangen des Suchfensterwertes vom Selektor 60 der Fig. 25 und einen positiven Eingang (B) zum Empfangen des Musterblockwertes vom Selektor 62 der Fig. 25 auf. Der Subtrahierer 70 stellt das Subtraktionsergebnis in einer Mehrfachbitnotation mit Vorzeichen dar. Das Vorzeichenbit S(A<B) wird gleich "1", wenn der Suchfensterwert größer als der Musterblockwert ist, sonst ist es gleich "0". Es wird angenommen, daß der Ausgang des Subtrahierers 70 den Wert in Zweierkomplementdarstellung angibt. Die Absolutdifferenzschaltung 64 weist ferner eine XODER-Schaltung 72 zum Empfangen des Vorzeichenbits S(A<B) und der restlichen Bits vom Subtrahierer 70 (im weiteren als "Magnitudenbits" bezeichnet) und einen Inkrementierer 74 zum Addieren von eins zum Ausgangsergebnis der XODER-Schaltung 72 entsprechend dem Vorzeichenbit S(A<B) auf. Der Inkrementierer 74 addiert eins zum Ausgangsergebnis der XODER- Schaltung 72, wenn das Vorzeichenbit S(A<B) gleich "1" ist. Wenn das Vorzeichenbit S(A<B) gleich "0" ist, addiert der Inkrementierer 74 addiert nicht den Wert eins zum Ausgangsergebnis der XODER-Schaltung 72, sondern läßt den Wert unverändert durch. Die XODER-Schaltung 72 führt die Berechnung für einen Pixelwert (Mehrfachbitwert) aus. Jedes Bit des Pixelwertes wird in Abhängigkeit vom Wert des Magnitudenbits invertiert oder nicht invertiert.
Wenn das Vorzeichenbit S(A<B) gleich "0" ist, läßt die XODER- Schaltung 72 die Magnitudenbits (die restlichen Bits ohne das Vorzeichenbit vom Ausgang des Subtrahierers 70) vom Subtrahierer 70 durch. Wenn das Vorzeichenbit S(A<B) gleich "1" ist, invertiert die XODER-Schaltung 72 jedes der Magnitudenbits vom Subtrahierer 70. Genauer gesagt wird in der XODER-Schaltung 72 eine Modulo-2-Addition eines jeden Magnitudenbits vom Subtrahierer 70 und des Vorzeichenbits S(A<B) ausgeführt.
Der Subtrahierer 70 führt die Berechnung von (B-A) aus. Wenn das Subtraktionsergebnis positiv ist, ist das Vorzeichenbit S(A<B) gleich "0", wenn es negativ ist, gleich "1". Das Ausgangsergebnis des Subtrahierers 70 wird in Zweierkomplementdarstellung angegeben. Daher wird durch selektives Ausführen einer Bitinversion oder einer 1-Inkrementierung des Ausgangsergebnisses des Subtrahierer entsprechend dem Vorzeichenbit S(A<B) mit der XODER-Schaltung 72 und dem Inkrementierer 74 die absolute Differenz von |B-A| ausgegeben.
Bei der in Fig. 25 dargestellten Struktur weist ein Elementprozessor PE zwei Speicherregister für Suchfenster-Blockdaten und zwei Speicherregister für Musterblockdaten auf. Dieser Zustand entspricht M=N=2. In diesem Zustand führen die Selektoren 60 und 62 einen Auswahlvorgang mit der zweifachen Bittransferrate für die Suchfensterdaten aus. Entsprechend führt die Absolutdifferenzschaltung 64 die Berechnung mit der doppelten Geschwindigkeit der Suchfensterdatenbit-Transferrate aus. Wenn N Register gebildet sind, wählen die Selektoren 60 und 62 sequentiell N Register entsprechend den Auswahlsignalen SEL0 und SEL1 innerhalb eines Zyklus des Suchfenster-Datentransfers aus, wie in Fig. 27 gezeigt ist. In diesem Fall führt die Absolutdifferenzschaltung die Berechnung mit der N-fachen Geschwindigkeit der Bittransferrate der Suchfensterdaten aus (hier gilt N=M).
Durch Verwenden der zwei Speicherregister für die Suchfenster- Blockdaten und der zwei Speicherregister für die Musterblockdaten, die in Fig. 25 dargestellt sind, um die Absolutdifferenzberechnung auszuführen, indem die zwei Sätze von Registern abwechselnd getrieben werden, wird die Absolutdifferenzberechnung hinsichtlich zweier Pixelwerten in einem Elementprozessor innerhalb eines Transferzyklus ausgeführt, wie in Fig. 28 dargestellt ist. Eine solche Struktur ermöglicht die Absolutdifferenzberechnung mit einer auf die Hälfte verminderten Anzahl von Elementprozessoren und besitzt den Vorteil, daß die Größe des Prozessorfeldes vermindert wird. In diesem Fall kann ein weiterer Vorteil durch Bilden einer Mehrzahl von Datenspeicherregistern erzielt werden.
Wie in Fig. 29 dargestellt ist, werden die Auswahlsignale SEL0 und SEL1 mit dem zweifachen der Transferrate der Suchfensterdaten umgeschaltet. In diesem Fall wird eine Auswahl ähnlich der zum Zeitpunkt der Berechnung für die zwei Pixelwertsätze ausgeführt. Ein Betriebseinheit-Aktivierungssteuersignal ΦS wird mit derselben Rate wie die Übertragungsrate der Suchfensterdaten erzeugt (siehe Fig. 29). Hier wird nur das Rechenergebnis (Absolutdifferenz) für den Satz von Pixeldaten erzeugt, der zuerst durch die Auswahlsignale SEL0 und SEL1 ausgewählt worden ist. Das Rechenergebnis für den zweiten Satz von Pixelwerten, die durch die zweiten Auswahlsignale SEL0 und SEL1 angegeben werden, wird nicht ausgegeben. Die Suchfenster-Blockdaten werden in jedem Zyklus um ein Pixel verschoben. Die Musterblockdaten befinden sich im Prozessorfeld bis ein Bewegungsvektor bestimmt worden ist. Daher ist das äquivalent zum Ausführen eines Subsampling (einer Subabtastung) für ein Rechenergebnis bei einer Bewegungsvektorberechnung, wie in Fig. 30 dargestellt ist. Die Bestimmungspunkte für die Absolutdifferenzberechnung können ausgewählt und eine Kennungsfunktion (ein Kennungswert) kann unter Verwendung einer Rechenschaltung niedriger Geschwindigkeit erzeugt werden. Damit kann die Leistungsaufnahme vermindert und die Schaltungskomplexität der Kennungswert-Erzeugungsschaltung reduziert werden.
Im Elementprozessor wird die Absolutdifferenzberechnung ausgeführt unter Verwendung von nur einem der Musterblockwerte, wie in Fig. 30 dargestellt ist. (In Fig. 30 wird nur der Pixelwert im Musterblock 43 benutzt, der schraffiert ist.) In diesem Fall ist es nicht notwendig, alle Pixeldaten des Musterblocks 43 im Elementprozessor des Prozessorfeldes zu speichern, um das Subsampling auszuführen. Denselben Effekt kann man erzielen durch Speichern von nur den erforderlichen gültigen Daten im Elementprozessor.
Fig. 31 zeigt eine weitere Struktur für den Elementprozessor. Wie in Fig. 31 dargestellt ist, weist ein Elementprozessor PE zwei Stufen kaskadenförmig verbundener Speicherregister 26-1 und 26-2 für Suchfensterdaten, einen Selektor 60 zum sequentiellen Auswählen der in den Registern 26-1 und 26-2 gespeicherten Daten entsprechend einem Auswahlsignal SEL, ein Einstufenregister 25 zum Speichern von Musterblockdaten, und eine Absolutdifferenzschaltung 64 zur Ermittlung der absoluten Differenz des vom Selektor ausgewählten Wertes und des im Register 25 gespeicherten Wertes auf.
Im Register 25, das die Musterblockdaten speichert, wird nur der gültige Wert (Wert des schraffierten Bereichs) im Musterblock 43 der Fig. 30 gespeichert. Der Selektor 60 wählt die in den Registern 26-1 und 26-2 gespeicherten Daten entsprechend einem Auswahlsignal SEL mit der zweifachen Rate der Transferrate der Suchfensterdaten Y aus. Die Absolutdifferenzschaltung 64 führt die Berechnung mit einer Rate aus, die gleich der Transferrate der Suchfensterdaten Y ist. Folglich wird die Absolutdifferenz der in einem der Register 26-1 und 26-2 gespeicherten Daten und dem im Register 25 gespeicherten Wert konstant gebildet. Die Absolutdifferenzschaltung 64 führt die Berechnung entsprechend den angelegten Daten aus, und ein Daten- Latch für das Subsampling kann an der Ausgangsstufe der Absolutdifferenzschaltung 64 gebildet sein.
Entsprechend der oben beschriebenen Struktur kann die Berechnung des Bewegungsvektors für einen Musterblock mit hoher Geschwindigkeit ausgeführt werden. Ferner kann die Schaltungskomplexität eines Elementprozessors vermindert werden.
Statt den Selektor 60 zu verwenden, kann durch Verdrahtung eine Struktur implementiert werden, um Daten entweder vom Register 26-1 oder vom Register 26-2 zur Absolutdifferenzschaltung 64 zu übertragen, so daß die Kennungswertberechnung für die in Fig. 30 gezeigten gültigen Daten des Musterblocks 43 ausgeführt wird.
Fig. 32 zeigt ein Beispiel für die Struktur eines Datenregisters. Wie in Fig. 32 dargestellt ist, weist ein Datenregister die Struktur eines Schieberegisters auf. Das Schieberegister SR weist einen n- Kanal MOS-Transistor (Feldeffekttransistor mit isoliertem Gate) NT1 zum Empfangen eines Transfertaktsignals Φ an seinem Gate und einen p-Kanal MOS-Transistor PT1 zum Empfangen eines komplementären Transfertaktsignals /Φ an seinem Gate auf. Die Transistoren NT1 und PT1 implementieren ein CMOS-Übertragungsgatter zum Übertragen eines angelegten Wertes in Abhängigkeit von einem Taktsignal Φ.
Das Schieberegister SR weist ferner eine Inverterschaltung IV1 zum Invertieren von Daten, die von den Transistoren NT1 und PT1 übertragen werden, eine Inverterschaltung IV2 zum Invertieren und Übertragen der Ausgangsdaten der Inverterschaltung IV1 an den Eingang der Inverterschaltung IV1, einen n-Kanal MOS-Transistor NT2 zum Empfangen eines Transfertaktsignals /Φ an seinem Gate, einen p- Kanal MOS-Transistor PT2 zum Empfangen eines Transfertaktsignals Φ an seinem Gate, eine Inverterschaltung IV3 zum Invertieren der von den Transistoren NT2 und PT2 übertragenen Daten, und eine Inverterschaltung IV4 zum Invertieren und Ausgeben der Ausgangswerte der Inverterschaltung IV3, um sie dem Eingang der Inverterschaltung IV3 zuzuführen, auf.
Die Inverterschaltungen IV1 und IV2 bilden eine erste Inverter- Latch-Schaltung, und die Inverterschaltungen IV3 und IV4 bilden eine zweite Inverter-Latch-Schaltung. Die Transistoren NT2 und PT2 implementieren ein CMOS-Übertragungsgatter zum Übertragen angelegter Daten in Abhängigkeit von einem komplementären Transfertaktsignal |Φ.
Eine Mehrzahl von Schieberegistern, die in Fig. Fig. 32 dargestellt sind, sind entsprechend der Bitanzahl der Pixelwerte parallel gebildet.
Durch Verwenden des Schieberegisters SR der Fig. 32 als Suchfensterdaten-Speicherregister und Musterblockdaten- Speicherregister, wird auf einfache Weise eine unidirektionale Übertragung der Pixeldaten und eine Datenauswahl realisiert. Wenn ein Wert an eine Absolutdifferenzschaltung angelegt werden soll, wird der Wert vom Eingangsbereich der Inverterschaltung IV3 abgenommen.
Fig. 33 zeigt eine weitere Struktur für einen Elementprozessor. Wie in Fig. 33 dargestellt ist, weist ein Elementprozessor PE einen N- Wort-Registersatz (N-Wort-Register-File) 73 zum Speichern von Suchfensterdaten aus N Worten, einen M-Wort-Registersatz 75 zum Speichern von Musterblockdaten aus M Worten, und eine Absolutdifferenzschaltung 64 zur Bildung einer absoluten Differenz der vom N-Wort-Registersatz 73 und dem M-Wort-Registersatz 75 ausgelesenen Daten auf. Ein Wort entspricht einem Pixelwert. Aus dem N-Wort-Registersatz 73 und dem M-Wort-Registersatz 75 werden jeweils Daten von einem Wort ausgelesen und der Absolutdifferenzschaltung 64 zugeführt. Die Registersätze 73 und 75 weisen eine Mehrzahl von Registern mit FIFO-Struktur auf.
Bei der oben beschriebenen Struktur ist es nicht notwendig, eine Auswahlschaltung zu bilden. Ein Satz entsprechender Pixelwerte kann durch Ausführen eines synchronen Datenauslesens in den Registersätzen 73 und 75 an die Absolutdifferenzschaltung 64 angelegt werden. Die Struktur eines Registersatzes wird später detailliert beschrieben. Die Berechnungsrate oder Datenausgaberate der Absolutdifferenzschaltung 64 wird vom Verarbeitungsverfahren (Subsampling oder Abtastung aller Pixelwerte) bestimmt.
Fig. 34 zeigt eine weitere Struktur für einen Elementprozessor. Wie in Fig. 34 dargestellt ist, weist ein Elementprozessor PE eine Absolutdifferenz -Summierungs-Schaltung 65 anstelle der Absolutdifferenzschaltung 64 auf. Genauer gesagt führt der in Fig. 34 dargestellte Elementprozessor PE die Berechnung einer absoluten Differenz des Musterblockwertes aus M Worten, die im M-Wort- Registersatz 75 gespeichert sind, und eine Akkumulierung der absoluten Differenzen aus. Weil die partielle Summe der M Musterblock-Pixelwerte zur Summierungseinheit übertragen wird, kann die Berechnung der Gesamtsumme beschleunigt werden.
Fig. 35 zeigt die Struktur eines Bits im Registersatz der Fig. 33 und 34. Wie in Fig. 35 dargestellt ist, weist die Basiseinheit eines Registersatzes eine Speicherzelle MC auf, die entsprechend der Kreuzung einer Wortleitung WL mit einem Bitleitungspaar BL und /BL angeordnet ist. Die Speicherzelle MC mit SRAM-Speicherzellenstruktur weist n-Kanal MOS-Transistoren NT10 und NT12, deren Source und Drain kreuzgekoppelt sind, einen als Widerstand geschalteten n-Kanal MOS- Transistor NT14, der als Lastelement zum Hochziehen des Speicherknotens SN1 auf einen H-Pegel (logisch hoch) wirkt, einen als Widerstand geschalteten n-Kanal MOS-Transistor NT16 zum Hochziehen des Speicherknotens SN2, und n-Kanal MOS-Transistoren NT18 und NT20 zum Verbinden der Speicherknoten SN1 und SN2 mit den Bitleitungen BL bzw. /BL in Abhängigkeit vom Signalpotential auf der Wortleitung WL auf. Diese Speicherzelle MC verwendet eine kreuzgekoppelte Inverterschaltung als Speicherelement. Weil ihre Strukturkomponenten sechs Transistoren umfassen, kann die Belegungsfläche je Bit gegenüber dem in Fig. 32 dargestellten Schieberegister vermindert werden.
Fig. 36 zeigt die Struktur eines Registersatzes. Wie in Fig. 36 dargestellt ist, weist ein Registersatz ein Speicherzellenfeld 80 mit Speicherzellen nach Fig. 35, die in einer Matrix angeordnet sind, einen Schreibadreßzeiger 82 zum Erzeugen einer Schreibadresse, eine Schreibsteuerschaltung 84 zum Auswählen eines Wortes im Speicherzellenfeld 80 entsprechend einer Adresse vom Adreßzeiger 82 zum Schreiben von Daten in das ausgewählte Wort, einen Lesezeiger 88 zum Erzeugen einer Auslese-Wortadresse, und eine Auslesesteuerschaltung 86 zum Auswählen eines entsprechenden Wortes im Speicherzellenfeld 80 entsprechend der Adresse vom Adreßzeiger 88 zum Auslesen von Daten aus dem ausgewählten Wort auf. Das Speicherzellenfeld 80 speichert einen Pixelwert in einem Wortbereich. Ein Wort kann einer Wortleitung entsprechen.
Beim Datenschreiben erzeugt der Adreßzeiger 82 eine Schreibadresse. Die Schreibsteuerschaltung 84 wählt eine entsprechende Wortleitung WL und ein Bitleitungspaar (wenn eine Mehrzahl von Worten in einer Bitleitung gespeichert ist) entsprechend der erzeugten Schreibadresse aus. Unter der Steuerung der Schreibsteuerschaltung werden Schreibdaten in das ausgewählte Wort geschrieben. Beim Datenlesen wird in ähnlicher Weise ein Wort durch den Adreßzeiger 88 und die Auslese-Steuerschaltung 86 ausgewählt, wodurch die Daten des ausgewählten Wortes ausgelesen werden.
Beim Pixeldaten-Schiebevorgang wird vom Adreßzeiger 88 die Adresse erzeugt, bei der der älteste Wert gespeichert ist. Die Lesesteuerschaltung 86 wählt dieses älteste Datenwort aus und liest den Wert des entsprechenden Wortes vom Speicherzellenfeld 80. Der Adreßzeiger 82 gibt eine Adresse an, die auf die zuletzt geschriebene Adresse folgt. Die Schreibsteuerschaltung 84 wählt die Adreßposition aus, die auf das zuletzt geschriebene Wort folgt, um Daten in diese Adreßstelle zu schreiben. Damit wird eine Übertragung der Suchfensterdaten eines Pixels oder die Übertragung der Musterblockdaten realisiert. Weil der Schreibpfad und der Lesepfad verschieden sind, kollidieren die Auslesedaten und die Schreibdaten nicht. Diese Struktur kann auf einfache Weise durch einen Ringzähler mit einem maximalen Zählwert M als Adreßzeiger 82 und 88 realisiert werden.
Beim Rechenvorgang zur Bestimmung der absoluten Differenz erzeugt der Leseadreßzeiger 88 eine Adresse so, daß die in einer vorbestimmten Reihenfolge gespeicherten M Worte sequentiell ausgewählt werden. In diesem Fall wird das Auslesen eines Datenwortes beginnend mit dem zuletzt geschriebenen Wert sequentiell ausgeführt, wenn die Struktur gleich N<M ist, wobei ein Subsampling ausgeführt wird. Wenn N=M ist und kein Subsampling ausgeführt wird, erzeugt der Adreßzeiger 88 eine Adresse, um alle in vorbestimmter Reihenfolge gespeicherten Wortdaten sequentiell auszulesen.
Wenn das Subsampling ausgeführt wird, kann nur der geforderte Wert mit einer vorbestimmten Subsampling-Rate ausgelesen werden.
Wenn bei der Initialisierung Werte aus N Worten oder M Worten in den jeweiligen Registersatz geschrieben werden sollen, wird die Datenübertragung über den Registersatz ausgeführt. In diesem Fall ist eine Struktur erlaubt, bei der Daten sequentiell wortweise ausgelesen und geschrieben werden, wenn Daten aus N oder M Worten im am weitesten in Transferrichtung befindlichen Registersatz gespeichert sind. Das wird durch eine Struktur realisiert, bei der die Auslese-Steuerschaltung 86 aktiviert wird, wenn die Adresse des Adreßzeigers 82 einen vorbestimmten Wert erreicht. Ferner kann ein Pfad gebildet sein, der die Schreibdaten nur bei der Initialisierung direkt zu einem Auslesedatenpfad weiterleitet (Bypass-Pfad). Im Fall einer solchen Struktur wird der Bypass-Pfad blockiert, wenn die Anzahl der Transfertaktsignale im jeweiligen Registersatz einen vorbestimmten Wert erreicht. Nachdem das Datenschreiben ausgeführt und das Schreiben abgeschlossen ist, wird das Datenschreiben gesperrt.
Der in Fig. 36 dargestellte Registersatz kann als Seitenfenster- Datenspeicherpuffer in Fig. 4 benutzt werden.
Fig. 37 zeigt ein Beispiel für eine Struktur des Datenpuffers von Fig. 4. Wie in Fig. 37 dargestellt ist, weist der Datenpuffer DL R- Wort-Register 90 zum Speichern der Daten von R Worten auf. Das R- Wort-Register 90 kann die Struktur des in Fig. 36 gezeigten Dual- Port-Speichers aufweisen. Es kann aus einem Schieberegister bestehen, das die Daten von R Worten speichert. Darüber hinaus kann eine Struktur mit Verzögerungselementen wie z. B. kaskenförmig verbundenen D-Latches benutzt werden.
Unter Verwendung eines Registersatzes als Verzögerungsmittel anstelle von Schieberegistern können die Schaltungskomplexität und die Leistungsaufnahme vermindert werden (aufgrund der verminderten Anzahl von Transistoren).
Fig. 38 zeigt eine weitere Struktur für eine Absolutdifferenzschaltung. Die in Fig. 38 dargestellte Absolutdifferenzschaltung weist einen Subtrahierer 70 zum Ausführen einer Subtraktion der Suchfensterdaten und Musterblockdaten und eine XODER-Schaltung 72 zum Empfangen eines Magnitudenbits und eines Vorzeichenbits S(A<B), die vom Subtrahierer 70 ausgegeben werden, auf. Die in Fig. 38 gezeigte Absolutdifferenzschaltung unterscheidet sich von der in Fig. 26 dargestellten Absolutdifferenzschaltung dahingehend, daß kein Inkrementierer vorhanden ist. Der Inkrementierer dient zur Addition von eins zum Ausgabeergebnis der XODER-Schaltung 72, wenn das Vorzeichenbit S(A<B) gleich "1" ist. Die Addition dieser eins wird in der Absolutdifferenzschaltung 64 von Fig. 38 nicht ausgeführt. Sie wird in der Summierungseinheit der nächsten Stufe ausgeführt. Genauer gesagt liefert die Absolutdifferenzschaltung 64 von Fig. 38 eine absolute Differenz PE# und ein Vorzeichenbit S#, um sie an die Summierungseinheit der nächsten Stufe anzulegen.
Fig. 39 zeigt ein Blockschaltbild einer Struktur der Summierungseinheit, wenn die Absolutdifferenzschaltung 64 von Fig. 38 benutzt wird. Wie in Fig. 39 dargestellt ist, addiert die Summierungseinheit 12 die Werte PE#1-PE#n entsprechend den Absolutdifferenzen von den n Elementprozessoren und die Vorzeichenbits S#1-S#n. PE#1-PE#n entsprechend den Absolutdifferenzen sind Multibitwerte und die Vorzeichenbits S#1-S#n sind 1-Bit-Werte. Die Summierungseinheit 12 besteht aus einem Komprimierer, der Volladdierer aufweist, die die Werte PE#1-PE#n entsprechend den Absolutdifferenzen empfangen. Die Struktur der Summierungseinheit 12 wird später beschrieben. Die Vorzeichenbits S#1-S#n werden dem Übertrageingang des niederwertigsten Bits dieses Komprimierers zugeführt. Damit wird die Geschwindigkeit des Summierungsvorgangs erhöht und die Vorrichtungskomplexität vermindert.
Fig. 40 zeigt ein Beispiel für die Struktur der Summierungseinheit von Fig. 39. Fig. 40 zeigt eine Struktur, bei der die Ausgangsergebnisse der n Elementprozessoren addiert werden. Die Struktur der Fig. 40 wird entsprechend der Anzahl von Elementprozessoren erweitert.
Wie in Fig. 40 dargestellt ist, weist die Summierungseinheit 12 einen 4-zu-2-Komprimierer 102a zum Empfangen der Werte P#1-P#4 entsprechend den absoluten Differenzen von den vier Elementprozessoren an den Eingängen A, B, C bzw. D und eines Vorzeichenbits 5#1 an seinem Übertrageingang zur Addition, um das Additionsergebnis an den zwei Ausgängen E und F abzugeben, einen 4- zu-2-Komprimierer 102b zum Empfangen der Werte P#5-P#8 entsprechend den absoluten Differenzen an den Eingängen A-D und eines Vorzeichenbits 5#2 am Übertrageingang des niederwertigsten Bits, um diese zu addieren und das Additionsergebnis an den zwei Ausgängen E und F abzugeben, und einen 4-zu-2-Komprimierer 102c zum Empfangen der Ausgangswerte der 4-zu-2-Komprimierer 102a und 102b an den vier Eingängen A, B, C bzw. D und der Vorzeichenbits 5#3, S#4 und 5#5 an seinen niederwertigsten Bitpositionen auf. Der 4-zu-2-Komprimierer 102c kann die drei Vorzeichenbits 5#3, S#4 und 5#5 empfangen, weil er zwei Stufen von Volladdiererschaltungen aufweist. Deren Struktur wird später genau beschrieben.
Die Summierungseinheit 12 weist ferner einen Addierer 104 zum Empfangen der Ausgangswerte des 4-zu-2-Komprimierers 102c (E und F) an seinen Eingängen A und B und der Vorzeichenbits 5#6, 5#7 und S#8 an den Übertrageingängen der niederwertigsten Bits auf. Vom Addierer 104 wird ein Summierungsergebnis geliefert.
Die Summierungseinheit 12 weist eine sogenannte Wallace-Baum- Struktur auf, um die Summierung mit hoher Geschwindigkeit mit minimierter Verzögerung der Übertragausbreitung zu ermöglichen. Die Summierungseinheit 12 der Fig. 40 weist keinen Akkumulator auf. Wenn die Rechenrate höher als die Suchfensterdaten-Übertragungsrate ist, ist es notwendig, die Addition mehrfach auszuführen. Zu diesem Zweck ist ein Akkumulator am Ausgangsabschnitt der Addiererschaltung 104 gebildet (wenn der Elementprozessor eine Mehrzahl von Speichermitteln für Musterblockdaten aufweist). Das Additionsergebnis (die Summe der absoluten Differenzen) kann für jeden Rechenzyklus vom Elementprozessor zur Summierungseinheit übertragen werden.
Weil bei der oben beschriebenen Struktur das Vorzeichenbit an den Übertrageingang des niederwertigsten Bits angelegt wird, kann die Addition mit hoher Geschwindigkeit bei geringer Schaltungskomplexität ausgeführt werden. Im folgenden werden die Struktur des 4-zu-2-Komprimierers (4-Eingangs-2-Ausgangs-Addierers) und die genaue Struktur der Summierungseinheit beschrieben.
Fig. 41 zeigt eine genaue Struktur des 4-zu-2-Komprimierers von Fig. 40. Der in Fig. 41 dargestellte 4-zu-2-Komprimierer weist eine Struktur entsprechend einer Datenbreite von vier Bit auf. Die Struktur von Fig. 41 wird entsprechend dem Anstieg der Bitbreite der Eingabedaten erweitert.
Wie in Fig. 41 dargestellt ist, weist ein 4-zu-2-Komprimierer 102 Volladdiererschaltungen 110a, 110b, 110c und 110d auf, die parallel angeordnet sind und jeweils Eingänge A und B, einen Übertrageingang Cin, einen Übertragausgang Co und einen Summenausgang S aufweisen.
Jede der Volladdiererschaltungen 110a-110d weist Eingänge A und B, die 4-Bit-Eingangsdaten A<3; 0< und B<3; 0< empfangen, und der Übertrageingang Cin empfängt Eingabedaten C<3; 0<. Die Daten A<3; 0< geben an, daß der Wert A aus den vier Bit A3-A0 mit dem höchstwertigen Bit A3 und dem niederwertigsten Bit A0 besteht.
Der 4-zu-2-Komprimierer 102 weist ferner Volladdiererschaltungen 110e, 110f, 110g und 110h auf zum Addieren der Summenausgaben S und der Übertragausgaben Co der Volladdiererschaltungen 110a-110d der ersten Stufe und der Eingangsdaten D<3; 0<. Die Volladdiererschaltungen 110a-110d und 110e-110h sind entsprechend den Stellen ausgerichtet. Die Summenausgaben S der Volladdiererschaltungen 110a-110d der ersten Stufe werden den Eingängen (A oder B) der entsprechenden Volladdiererschaltung der nachfolgenden Stufe zugeführt. Die Übertragausgaben Co der Volladdiererschaltungen 110a-110d der ersten Stufe werden den Übertrageingängen der Volladdiererschaltungen mit einer um ein Bit höheren Wertigkeit in der folgenden Stufe zugeführt. In der Volladdiererschaltung (FA) wird 0 dem Übertrageingang 104 der Volladdiererschaltung 110h des niederwertigsten Bit zugeführt. Das bedeutet, daß der Übertrageingang der Volladdiererschaltung 110h ein leerer Übertrag ist. Bei der vorliegenden Ausführungsform wird ein Vorzeichenbit S# an diesen leeren Übertrag 104 angelegt. 5-Bit-Daten E<4; 0< und F<4; 0< werden vom 4-zu-2-Komprimierer 102 abgegeben. Der Summenausgang S der Volladdiererschaltungen (FA) 110a-110h liefert die Datenbits F<3; 0<, und der Übertragausgang der Volladdiererschaltungen (FA) 110a-110h liefert die Datenbits E<4; 0<. Der Übertragausgang der Volladdiererschaltung 110a der ersten Stufe liefert das Datenbit F<4<.
Bei der in Fig. 41 dargestellten Struktur des 4-zu-2-Komprimierers 102 tritt keine Übertragausbreitung auf. Die zur Berechnung erforderliche Verzögerungszeit wird durch die zwei Stufen von Volladdiererschaltungen verursacht. Damit kann die Addition mit hoher Geschwindigkeit ausgeführt werden. Ferner kann die Addition der Absolutdifferenzen ausgeführt werden, ohne die Schaltungskomplexität aufgrund eines Vorzeichenbits S#, das an einen leeren Übertrageingang 104 angelegt wird, zu erhöhen.
Fig. 42 zeigt die Verbindung der Schaltungsstruktur von Fig. 40. Die in Fig. 42 dargestellte Summierungseinheit verwendet den 4-zu-2- Komprimierer von Fig. 41. Hier wird die absolute Differenz P#i als (Pi3, Pi2, Pi1, Pi0) ausgedrückt.
Der 4-zu-2-Komprimierer 102a weist Volladdiererschaltungen FA1-FA4 zum Addieren der Absolutdifferenzen P#1-P#3 und Volladdiererschaltungen FA5, FA6, FA7 und FA8 zum Addieren der Ausgaben der Volladdiererschaltungen FA1-FA4 und einer absoluten Differenz P#4 auf. Ein Vorzeichenbit S#1 wird an den Übertrageingang der Volladdiererschaltung FA8 angelegt.
Der 4-zu-2-Komprimierer 102b weist Volladdiererschaltungen FA9, FA10, FA11 und FA12 zum Addieren der absoluten Differenzen P#5-P#7 und Volladdiererschaltungen FA13, FA14, FA15 und FA16 zum Addieren der Ausgaben der Volladdiererschaltungen FA9-FA12 und einer absoluten Differenz P#8 auf. Ein Vorzeichenbit 5#2 wird an den Übertrageingang der Volladdiererschaltung FA16 angelegt.
Der 4-zu-2-Komprimierer 102c weist Volladdiererschaltungen FA17-FA21 zum Addieren der Ausgabe des 4-zu-2-Komprimierers 102a mit einer ersten Ausgabe des 4-zu-2-Komprimierers 102b (der Summenausgabe der Volladdiererschaltungen FA13-FA16 und der Übertragausgabe der Volladdiererschaltung FA9) und Volladdiererschaltungen FA22-FA26 zum Addieren der Ausgaben der Volladdiererschaltungen FA17-FA21 mit dem des 4-zu-2-Komprimierers 102a mit der zweiten Aüsgabe des 4-zu-2- Komprimierers 102b (der der Übertragausgabe Volladdiererschaltungen FA13-FA16) auf. Vorzeichenbits 5#4 und 5#5 werden an den Übertrageingang bzw. den ersten Eingang der Volladdiererschaltung FA26 angelegt.
Der Addierer 104 weist eine Volladdiererschaltung FA27 zum Addieren der Vorzeichenbits S#6-S#8, Volladdiererschaltungen FA28-FA33 zum Addieren der Ausgabe der Volladdiererschaltung FA27 und der Ausgabe des 4-zu-2-Komprimierers 102c und Volladdiererschaltungen FA34-FA39 zum Empfangen der Ausgaben der Volladdiererschaltungen FA28-FA33 und zum Ausgeben des endgültigen Additionsergebnisses auf. Die Volladdiererschaltungen FA28-FA33 bilden einen 3-zu-2-Komprimierer. Die Volladdiererschaltungen FA34-FA39 bilden einen Addierer mit Ripple-Übertrag. Es können auch andere Addiererstrukturen benutzt werden (z. B. Übertrag-Look-Ahead-Addierer).
Durch Ausführen der Addition unter Verwendung des in Fig. 42 gezeigten Komprimierers kann die Verzögerung, die die Übertragausbreitung begleitet, auf ein Minimum gedrückt werden, um die Addition mit hoher Geschwindigkeit auszuführen.
[Komparator I]
Fig. 43 zeigt eine weitere Struktur für die in Fig. 1 dargestellte Komparatoreinheit. (Die Prioritätsidentifizierungsfunktion ist nicht angegeben.) Wie in Fig. 43 dargestellt ist, weist die Komparatoreinheit 3 ein Register-Latch 130 zum Speichern eines Kennungswertes (Kennungsfunktion) von der Summierungseinheit, einen Komparator 132 zum Vergleichen der Größe des Kennungswertes, der im Register-Latch 130 gespeichert ist, mit dem Kennungswert (Kennungsfunktion), der neu von der Summierungseinheit geliefert wird, einen Zähler 134 zum Zählen der Zyklusnummer der Kennungswertberechnung, und ein Register-Latch 136, das von der Ausgabe des Komparators 132 abhängig ist, um den Zählwert des Zählers 134 zu speichern, auf. Ein Bewegungsvektor kann direkt vom Register-Latch 136 ausgegeben werden, oder es kann ein Dekoder gebildet sein, um die Ausgabe des Register-Latches 136 in ein vorbestimmtes Format zu codieren, wie in der Zeichnung durch den Block 137 mit gestrichelten Linien dargestellt ist. Im folgenden wird nun der Betrieb beschrieben.
Am Anfang der Bewegungsvektorberechnung für einen Musterblock werden der Zähler 134, das Register-Latch 130 und das Register-Latch 136 zurückgesetzt. Der Initialisierungswert des Register-Latch 130 wird auf einen Wert eingestellt, der größer als der maximale Kennungswert ist (z. B. alle Bit gleich "1"). Wenn ein Kennungswert für einen Verschiebungsvektor geliefert wird, vergleicht der Komparator 132 den im Register-Latch 130 gespeicherten Wert mit dem Kennungswert, der von der Summierungseinheit geliefert wird. Wenn der neu zugeführte Kennungswert (Kennungsfunktion) von der Summierungseinheit kleiner als der im Register-Latch 130 gespeicherte Wert ist, erzeugt der Komparator 132 ein Verriegelungsanweisungssignal. Als Reaktion darauf speichert das Register-Latch 130 den Kennungswert (Kennungsfunktion) von der Summierungseinheit. In gleicher Weise verriegelt das Register-Latch 136 den Zählwert des Zählers 134 als Kandidaten für einen Bewegungsvektor.
Für den nächsten Verschiebungsvektor reagiert der Zähler 134 auf ein Steuersignal ΦC, um den Zählwert um 1 zu erhöhen. Wenn eine Kennungswertberechnung abgeschlossen ist, vergleicht der Komparator 132 die Größe des neu von der Summierungseinheit zugeführten Kennungswertes (Kennungsfunktion) mit dem im Register-Latch 130 gespeicherten Wert. Wenn der neu angelegte Kennungswert größer als der im Register-Latch 130 gespeicherte Wert ist, erzeugt der Komparator 132 kein Verriegelungsanweisungssignal. Wenn der neu angelegte Kennungswert (Kennungsfunktion) dagegen kleiner als der im Register-Latch 130 gespeicherte Wert ist, wird das Verriegelungsanweisungssignal erzeugt. Dieser Vorgang wird für alle Kennungswerte aller Verschiebungsvektoren ausgeführt. Damit wird der minimale aller Kennungswerte im Register-Latch 130 gespeichert. Im Register-Latch 136 ist der Zählwert des Zählers 134 verriegelt, der den Zyklus angibt, der den minimalen Kennungswert liefert. Der Zählwert des Zählers 134 wird als Bewegungsvektor benutzt.
Wenn dieser Bewegungsvektor ermittelt worden ist, werden der Zähler 134 und die Register-Latches 130 und 136 erneut initialisiert, wodurch die Berechnung für einen Bewegungsvektor des nächsten Musterblocks ausgeführt wird.
[Komparator II]
Fig. 44 zeigt eine weitere Struktur für eine Komparatoreinheit.
Wie in Fig. 44 dargestellt ist, weist die Komparatoreinheit 3 ein erstes Register 621 zum Speichern des minimalen Kennungswertes Evm und einen Komparator 613 zum Vergleichen des Kennungswertes Ev (=Σ|a-b|) von einer Betriebseinheit 1 und des minimalen Kennungswertes Evm, der im ersten Register 621 gespeichert ist, auf. Der Komparator 613 aktiviert das Signal Ev-EQ auf der Signalleitung 617, wenn der Kennungswert Ev gleich dem minimalen Kennungswert Evm ist.
Wenn ein Kennungswert Ev kleiner als der minimale Kennungswert Evm ist, wird der neu von der Betriebseinheit 1 gelieferte Kennungswert Ev als minimaler Kennungswert übernommen, und das Signal Ev-LT auf der Signalleitung 618 wird aktiviert.
Die Komparatoreinheit 3 weist ferner einen Prioritätskomparator 615, der von einem Signal Ev-EQ vom Komparator 613 abhängig ist, zum Vergleichen der Priorität, die dem Verschiebungsvektor entsprechend dem Kennungswert Ev zugeordnet ist, und der Priorität, die dem Verschiebungsvektor entsprechend dem minimalen, im ersten Register 614 gespeicherten Kennungswert Evm zugeordnet ist, auf. Der Komparator 615 aktiviert das Signal Pr-LT auf der Signalleitung 619, wenn die Priorität des Verschiebungsvektors, der dem gegenwärtig angelegten Kennungswert Ev entspricht, höher als die Priorität des Verschiebungsvektors ist, der dem minimalen Kennungswert Evm entspricht.
Die Komparatoreinheit 3 weist ferner eine Aktualisierungssteuereinheit 616 auf zum Ausführen einer Aktualisierung/Beibehaltung des Kennungswerts, der im ersten Register 614 gehalten ist, entsprechend den Signalen Ev-EQ und Ev-LT vom Komparator 613 und einem Signal Pr-LT vom Prioritätskomparator 615. Die Aktualisierungssteuereinheit 619 aktiviert ein Signal Ev-UP auf der Signalleitung 620, wenn die Signale Pr-LT und Ev-EQ beide aktiviert sind, oder wenn das Signal Ev-LT aktiviert ist. Das erste Register 614 reagiert auf das aktivierte Signal Ev-UP, um den gespeicherten Wert durch den gegenwärtig angelegten Kennungswert Ev zu ersetzen.
Der im ersten Register 614 gespeicherte Kennungswert Evm wird aktualisiert, wenn: (i) der gegenwärtig angelegte Kennungswert Ev kleiner als der Kennungswert Evm ist, der im ersten Register 614 gespeichert ist; und (ii) der Kennungswert Ev gleich Evm ist und die Priorität des Verschiebungsvektors, der zum neuen Kennungswert Ev gehört, höher als die Priorität des Verschiebungsvektors ist, der zum Kennungswert Evm gehört, der im ersten Register 614 gespeichert ist.
Wie in Fig. 45 dargestellt ist, weist der Komparator 613 eine Übereinstimmungserfassungsschaltung 701 zum Erfassen der Übereinstimmung des neuen Kennungswertes Ev und des Kennungswertes Evm, der im ersten Register 614 gespeichert ist, und eine Komparatorschaltung 702 zum Vergleichen der Größe der Kennungswerte Ev und Evm auf. Ein Signal Ev-EQ wird von der Übereinstimmungserfassungsschaltung 701 und ein Signal Ev-LT von der Komparatorschaltung 702 abgegeben. Der Komparator 702 aktiviert ein Signal Ev-LT, wenn die Kennungswerte Ev und Evm miteinander übereinstimmen.
Wie in Fig. 46 gezeigt ist, weist die Aktualisierungssteuereinheit 616 ein UND-Gatter 622 und ein ODER-Gatter 623 auf. Dem ersten Eingangsanschluß des UND-Gatters 622 wird über die Signalleitung 617 das Signal Ev-EQ, das unter Bezugnahme auf Fig. 45 beschrieben worden ist, und dem zweiten Eingangsanschluß wird über die Signalleitung 619 das Signal Pr-LT zugeführt. Dem ersten Eingangsanschluß des ODER-Gatters 623 wird das Ausgangssignal des UND-Gatters 622 und dem zweiten Eingangsanschluß wird über die Signalleitung 618 das Signal Ev-LT zugeführt. Der Ausgang des ODER- Gatters 623 gibt über die Signalleitung 620 das Signal Ev-UP ab. Daher wird der Ausgabewert Ev-UP durch folgende Logikgleichung ausgedrückt:
Ev-UP= (Ev-EQ·Pr-LT) + (Ev-LT).
Das Signal Ev-UP wird dem Prioritätskomparator 615 als Signal Pr-UP zur Prioritätsspezifikation und Aktualisierungsanweisung zugeführt.
Die Aktualisierungssteuereinheit 616 weist ferner ein Vektorregister 710 auf, das vom Signal Ev-UP (Pr-UP) abhängig ist, zum Verriegeln und Halten des Verschiebungsvektors entsprechend dem gegenwärtigen Kennungswert, der vom Zähler 711 geliefert wird. Der Zähler 711 inkrementiert den Zählwert jedesmal dann, wenn ein Kennungswert Ev geliefert wird, um Daten auszugeben, die einen entsprechenden Verschiebungsvektor angeben. Der Zähler 711 kann getrennt für die horizontale und die vertikale Komponente des Bewegungsvektors gebildet sein. Der Zählwert des Zählers 711 kann direkt als Wert des Bewegungsvektors benutzt werden. Es ist nur eine Codierung erforderlich, damit er zum Zeitpunkt der Codierung einem Bewegungsvektor entspricht.
Fig. 47 zeigt eine Prioritätsspezifizierungswert für jeden Verschiebungsvektor, der durch den Prioritätskomparator 615 bei der Bestimmung der Priorität benutzt wird. In Fig. 47 sind die Prioritätsspezifizierungswerte für die jeweiligen Verschiebungsvektoren angegeben, wenn es 15·15=225 Verschiebungsvektoren (-7, -7) bis (7, 7) gibt.
In Fig. 47 geben die Zahlen in der obersten Zeile und der am weitesten links befindlichen Spalte die horizontale bzw. vertikale Komponente eines Bewegungsvektors (Verschiebungsvektors) an. Die Zahlen in Fig. 47 stellen die Priorität für einen Bewegungsvektor mit horizontalen/vertikalen Komponenten dar, die im oberen und linken Bereich angegeben sind. Es wird angenommen, daß eine größere Zahl eine höhere Priorität darstellt.
Beispielsweise ist die Priorität für den Bewegungsvektor (horizontale Komponente, vertikale Komponente)=(0, 0), d. h. die True-Backside am höchsten, nämlich gleich 15, und die Priorität für die Bewegungsvektoren (-7, -5) und (-7, -7) sind gleich 3 bzw. 1. Wenn die Werte der zwei Kennungsfunktionen für die Bewegungsvektoren (-7, -5) und (-7, -7) identisch und minimal sind, wird daher der Bewegungsvektor (-7, -5) mit höherer Priorität benutzt.
Aus Fig. 47 ist ersichtlich, daß manche Bewegungsvektoren dieselbe Priorität aufweisen. Für den Fall gleicher Priorität wird der linken Seite, d. h. der horizontalen Komponente des Bewegungsvektors, der dem negativen Maximalwert näher liegt, Priorität eingeräumt. Ist die Priorität immer noch nicht bestimmt, ist also mit anderen Worten der Wert identisch und ist die horizontale Komponente der Bewegungsvektoren in Fig. 47 gleich, so wird der oberen Seite, d. h. der vertikalen Komponente des Bewegungsvektors, der dem negativen Maximalwert näher liegt, Priorität eingeräumt.
Die in Fig. 47 dargestellten Prioritäten basieren auf der 4-Wege­ Distanz von der True-Backside. Genauer gesagt, wird denjenigen eine höhere Priorität zugeordnet, die eine kleinere Summe der Absolutwerte der horizontalen Komponenten und der Absolutwerte der vertikalen Komponenten eines Bewegungsvektors aufweisen.
Im allgemeinen wird ein Bewegungsvektor unter Verwendung eines Codes variabler Länge von der Codiererseite zur Decoderseite übertragen. Wenn der Absolutwert der jeweiligen Komponenten eines Bewegungsvektors größer ist, wird häufig auch der entsprechende Code variabler Länge umfangreicher. Beispielsweise ist in einem Codierungssystem für bewegte Bilder (CCITT H.261) für Bildtelefone und Videokonferenzen der Code variabler Länge für die horizontalen und vertikalen Komponenten eines Bewegungsvektors mit dem Wert 3 gleich "00010". Wenn der Wert des Bewegungsvektors gleich 4 ist, dann lautet der Code variabler Länge "0000110". Durch Erhöhen der Priorität eines Bewegungsvektors (Verschiebungsvektors) proportional zu einer kleineren Summe der Absolutwerte der horizontalen Komponente und der vertikalen Komponente des Bewegungsvektors wird ein Bewegungsvektor mit geringer Codelänge ausgewählt, und die Übertragungsdaten können effektiv komprimiert werden. Das wird im folgenden im Detail beschrieben.
Es wird ein Fall betrachtet, in dem die Werte der Kennungsfunktionen für zwei vorhergesagte Bildblöcke für einen Bewegungsvektor (3, 3) und einen Bewegungsvektor (3, 4) eine identische Zahl und den minimalen Wert annehmen. Weil die Priorität der beiden angeführten Bewegungsvektoren entsprechend Fig. 47 gleich 9 und 8 sind, wird ersterem Priorität eingeräumt. Das führt zu einem Bewegungsvektor (3, 3). Wenn die Priorität entsprechend dem Verfahren nach Fig. 47 zugeordnet wird, wird ein Bewegungsvektor mit geringerer Codelänge ausgewählt.
Weil bei der vorliegenden Ausführungsform dem einen Bewegungsvektor mit geringerer Summe der Absolutwerte der horizontalen und vertikalen Komponente eine höhere Priorität an zwei Punkten der Fig. 47 eingeräumt wird, wird nicht derjenige mit der größeren Codelänge ausgewählt.
Wenn die Priorität nach Fig. 47 gleich ist, wird der horizontalen Komponente des Bewegungsvektors, die dem negativen Maximalwert näher liegt, Priorität eingeräumt. Kann die Priorität immer noch nicht bestimmt werden, wird der vertikalen Komponente des Bewegungsvektors, die dem negativen Maximalwert näher liegt, Priorität eingeräumt. Das ist jedoch nur ein Beispiel, und Bewegungsvektoren derselben Priorität können einer anderen Prioritätszuordnung unterworfen werden. Wenn die Prioritäten nach Fig. 47 identisch sind, kann der vertikalen Komponente eines Bewegungsvektors, die dem negativen Maximalwert näher liegt, Priorität eingeräumt werden, und falls die Priorität immer noch nicht bestimmt ist, kann der horizontalen Komponente eines Bewegungsvektors, die dem negativen Maximalwert näher liegt, Priorität eingeräumt werden. Wenn die Priorität nach Fig. 47 gleich ist, kann alternativ der horizontalen Komponente des Bewegungsvektors, die dem positiven Maximalwert näher liegt, Priorität eingeräumt werden, und falls die Priorität immer noch nicht bestimmt ist, kann der vertikalen Komponente des Bewegungsvektors, die dem positiven Maximalwert näher liegt, Priorität eingeräumt werden.
Darüber hinaus kann die Richtung, die Priorität gibt, für jede vertikale oder horizontale Linie geändert werden. Wenn z. B. die Priorität nach Fig. 47 identisch ist, kann der horizontalen Komponente des Bewegungsvektors, die dem negativen Maximalwert näher liegt, Priorität eingeräumt werden. Wenn die horizontalen Komponenten der Bewegungsvektoren gleich sind, kann der vertikalen Komponente des Bewegungsvektors, die dem negativen Maximalwert näher liegt, in der ersten Spalte Priorität eingeräumt werden, und der vertikalen Komponente des Bewegungsvektors, die dem positiven Maximalwert näher liegt, kann in der zweiten Spalte Priorität eingeräumt werden. Auf das folgt eine Prioritätsangabe entsprechend einer Wiederholung des angegebenen Verfahrens.
Es ist ferner möglich, Priorität in aufsteigender oder absteigender Reihenfolge zu geben, die entsprechend der Kennungswert- Berechnungsreihenfolge des Bewegungsvektors auftritt, ohne die Größe der Werte der horizontalen, vertikalen oder beiden Komponenten zu berücksichtigen.
Wenn die Priorität gleich ist, sind die Summen der Absolutwerte der horizontalen Komponenten und der Absolutwerte der vertikalen Komponenten der Verschiebungsvektoren identisch. Im allgemeinen ist die Codelänge bei der Codierung zur Übertragung identisch, so daß ein ähnlicher Effekt erzielt werden kann.
Fig. 48 zeigt eine Struktur für den in Fig. 44 dargestellten Prioritätskomparator. Wie in Fig. 48 gezeigt ist, weist der Prioritätskomparator 615 eine Prioritätserzeugungsschaltung 632 zum Erzeugen von Prioritätsdaten für einen Bewegungsvektor (Verschiebungsvektor), der zum gegenwärtigen Kennungswert Ev gehört, ein drittes Register 627 zum Halten der Prioritätsdaten, die zum Kennungswert gehören (bezüglich einem Verschiebungsvektor), der im ersten Register 614 (siehe Fig. 44) gespeichert ist, und einen Komparator 626 zum Vergleichen der Prioritätsdaten Pr von der Erzeugungsschaltung 632 auf, wobei Prioritätsdaten Prm im dritten Register 627 gespeichert sind. Das dritte Register 627 aktualisiert seinen Inhalt entsprechend der Aktivierung des Signals Pr-UP.
Der Komparator 626 nimmt einen aktiven Zustand an, wenn das Signal Ev-EQ aktiviert wird, um einen Vergleich der Prioritätsdaten Pr und Pm auszuführen. Der Komparator 626 kann so geschaffen sein, daß er ständig einen Vergleich ausführt. Wenn der Prioritätswert Pr kleiner als Prm ist, aktiviert der Komparator 626 das Signal Pr-LT auf der Signalleitung 619. Die Struktur für den Betrieb, wenn die Werte Pr und Prm gleich sind, ist hier nicht dargestellt. Wie in Fig. 46 gezeigt ist, führt die angegebene Struktur zu einem deaktivierten Zustand des Signals Pr-LT, wenn Pr=Prm gilt, und das Vektorregister 710 wird nicht aktualisiert, weil das Vektorregister 710 entsprechend der Aktivierung des Signals Pr-UP aktualisiert wird. Der zuvor erzeugte Bewegungsvektor (Verschiebungsvektor) wird gehalten (falls Pr=Prm).
Wenn der Wert Pr gleich Prm ist, wird vom Komparator 626 ein Signal Pr-EQ erzeugt. Es kann eine Struktur implementiert werden, bei der eine Auswahl entsprechend einer vorbestimmten Regel (eines der oben beschriebenen Prioritätsentscheidungsverfahren) für den Verschiebungsvektor im Vektorregister 710 und den gegenwärtigen Verschiebungsvektor (Ausgabe des Zählers 711 in Fig. 46) entsprechend der Aktivierung des Signals Pr-EQ ausgeführt wird.
Die Prioritätserzeugungsschaltung 632 weist ein zweites Register 624 zum Halten des Prioritätswertes Pr für den gegenwärtigen Verschiebungsvektor und eine Addierer/Subtrahiererschaltung 625c zum Inkrementieren oder Dekrementieren des vom zweiten Register 624 erzeugten Prioritätswerts Pr um eins. Die Ausgabe Pr′ der Addierer/Subtrahiererschaltung 625 wird dem zweiten Register 624 zugeführt.
Nun wird der Betrieb der in Fig. 48 gezeigten Prioritätskomparatoreinheit beschrieben. Der Prioritätswert Pr wird über die Signalleitung 628 einem ersten Eingang des Komparators 626 zugeführt. An den zweiten Eingang des Komparators 626 wird über die Signalleitung 630 das Ausgangssignal Prm des dritten Registers 627 angelegt. Der Komparator 626 führt einen Vergleich der Größen der beiden Prioritäten Pr und Prm aus, die an die beiden Eingänge angelegt werden. Wenn Pr<Prm gilt, wird daher ein Signal Pr-LT als Priorität aktiviert, weil der verglichene Kennungswert Ev höher als die Priorität entsprechend dem Kennungswert Evm ist.
Als Reaktion auf die Aktivierung des Signals Pr-LT wird der Inhalt des Vektorregisters 710 aktualisiert, und der Inhalt des dritten Registers 627 wird durch den Prioritätswert Prm aktualisiert.
In der Prioritätserzeugungsschaltung 632 wird die Aktualisierung des Prioritätswertes Pr automatisch ausgeführt. Der Prioritätswert Pr wird im zweiten Register gehalten. In Abhängigkeit von einem Steuersignal, wie z. B. einem extern angelegten Taktsignal, wird der Addierer/Subtrahierer 625 mit der Eingabe des Wertes Pr inkrementiert oder dekrementiert, wodurch das Ergebnis zum zweiten Register 624 zurückgegeben wird, um eine gewünschten Prioritätswert zu erhalten.
Es wird ein Fall betrachtet, bei dem die Priorität beginnend mit der linken oberen Zeile eingestellt wird, wie in Fig. 47 dargestellt ist. In diesem Fall wird eine 1 im zweiten Register 624 gespeichert, und es wird entsprechend der in Fig. 49 angegebenen Regel eine sequentielle Inkrementierung oder Dekrementierung ausgeführt. In Fig. 49 gibt das Pluszeichen "+" an, daß eine Inkrementierung notwendig ist, um einen Prioritätswert für den nächsten Bewegungsvektor zu erzeugen, und das Minuszeichen "-" gibt an, daß eine Dekrementierung notwendig ist, um einen Prioritätswert für den nächsten Bewegungsvektor zu erzeugen. Hier ist der nachfolgende Vektor der Bewegungsvektor einer benachbarten, niedrigeren Zeile (die vertikale Komponente des Bewegungsvektors wird um +1 erhöht), wenn sie nicht die letzte Zeile ist. Für den Fall der letzten Zeile ist der nachfolgende Vektor der Bewegungsvektor entsprechend der obersten Zeile der rechten Spalte. Durch diese Inkrementierung/Dekrementierung werden die gewünschten Prioritätsdaten erzeugt.
Wie in Fig. 50 dargestellt ist, weist die Prioritätserzeugungsschaltung 625 einen Selektor 720 zum Durchlassen der Werte "1" und "-1" unter der Kontroller der Steuerung 730, und einen Addierer 722 zum Addieren der Ausgabe des Selektors 720 und des Wertes Pr. Der Wert Pr′ wird vom Addierer 722 geliefert. Die Steuerung 730 erzeugt ein Steuersignal in der Reihenfolge, die in Fig. 49 angegeben ist ("+" entspricht einer "1"-Auswahl und "-" einer "-1"-Auswahl), mit einem (nicht gezeigten) Taktsignal, das die Ausgabetaktung des Kennungswertes definiert. Die Steuerung 730 wird z. B. durch eine vorprogrammierte Sequenzsteuerung realisiert.
Obwohl oben eine Beschreibung erfolgt ist, bei der der Prioritätswert nur natürliche Werte annimmt, ist der Wert nicht notwendigerweise auf eine natürliche Zahl beschränkt, weil nur der Absolutwert von Bedeutung ist. Daher ist der Prozeß der Prioritätserzeugungsschaltung 632 nicht auf das Inkrementieren/Dekrementieren beschränkt, und es kann ein beliebiger Wert für das Inkrementieren und Dekrementieren genommen werden, solange der Absolutwert des Inkrementierens/Dekrementierens gleich ist.
Wenn man die Schaltungskomplexität für die Realisierung der Prioritätserzeugungsschaltung 632 betrachtet, so müssen ein 4-Bit- Register und eine Schaltung mit einer 4-Bit-Inkrementierungs- /Dekrementierungsfunktion, wie z. B. ein 4-Bit-Addierer, für die Prioritätsspezifizierung nach der Fig. 47 gebildet werden, weil die obere Grenze für die Priorität gleich 15 ist. Für den Fall einer Implementierung mit einer gewöhnlichen integrierten CMOS-Schaltung kann sie durch ungefähr 200 Transistoren realisiert werden. Das führt zu einer Schaltungskomplexität, die ausreichend niedriger als im Fall der Implementierung mit ROMs ist. Für den Fall der Implementierung mit ROMs sind vier Bit in horizontaler und vertikaler Richtung erforderlich (eine Gesamtbreite von 15 zwischen -7 und +7). Das führt zu 28 Worten für einen Bewegungsvektor. Weil der Wert (Priorität) einen Maximalwert von 15 aufweist, sind vier Bits notwendig. Das führt zu einer Kapazität von 4·28=1024 Bits.
Ausführungsform 2
Fig. 51 zeigt schematisch einen Überblick über die Struktur eines Bewegungsvektor-Erfassungsmittels nach einer zweiten Ausführungsform der vorliegenden Erfindung. Wie in Fig. 51 dargestellt ist, weist das Bewegungsvektor-Erfassungsmittel ein erstes Berechnungsmittel 210 zum Empfangen von Suchfensterdaten Y und Musterblockdaten X zum Bestimmen eines Bewegungsvektors mit ganzzahliger Genauigkeit, und ein zweites Berechnungsmittel 250 zum direkten Empfangen von Suchfensterdaten SY und Musterblockdaten TX vom ersten Berechnungsmittel 210 zum Bestimmen eines Bewegungsvektors mit gebrochener Genauigkeit auf. Wie bei der ersten Ausführungsform dargestellt ist, weist das erste Berechnungsmittel 210 ein Prozessorfeld 10 mit Elementprozessoren, die in einem zweidimensionalen Feld angeordnet sind, eine Summierungseinheit 12 zum Summieren der absoluten Differenzen vom jeweiligen Elementprozessor im Prozessorfeld 10, und eine Komparatoreinheit 3 zum Bestimmen eines Bewegungsvektors entsprechend der Summe (dem Kennungswert) von der Summierungseinheit 12 auf. Die Musterblockdaten TX und Suchfensterdaten SY, die im Prozessorfeld 10 gespeichert sind und entsprechend dessen Betrieb ausgeschoben werden, werden direkt an das zweite Berechnungsmittel 250 angelegt. Der Betrieb des zweiten Berechnungsmittels 250 wird durch eine Vergleichsergebnisindikator (Verriegelungsanweisungssignal) von der Komparatoreinheit 3 gesteuert.
Entsprechend der in Fig. 51 dargestellten Struktur des Bewegungsvektor-Erfassungsmittels werden die Suchfensterdaten und die Musterblockdaten zur Erfassung eines Bewegungsvektors mit ganzzahliger Genauigkeit im ersten Berechnungsmittel 210 verwendet, nachdem sie aus dem Bildspeicher gelesen worden sind, worauf die benutzten Suchfensterdaten und Musterblockdaten vom ersten Berechnungsmittel zum zweiten Berechnungsmittel übertragen werden. Damit ist bei der Bestimmung eines Bewegungsvektors mit gebrochener Genauigkeit kein Zugriff auf den Bildspeicher erforderlich, so daß der Bewegungsvektor mit gebrochener Genauigkeit mit hoher Geschwindigkeit bestimmt werden kann.
Fig. 52 zeigt ein Beispiel für die Struktur des Datenübertragungssystems zwischen dem Prozessorfeld 10 im ersten Berechnungsmittel 210 und dem zweitem Berechnungsmittel 250 bei der zweiten Ausführungsform. Wie in Fig. 52 dargestellt ist, werden die Musterblockdaten TX vom Prozessorfeld 10 direkt an das zweite Berechnungsmittel 250 angelegt, und die Suchfensterdaten SY vom Prozessorfeld 10 werden durch eine Verzögerungsschaltung 260 um eine vorbestimmte Zeitspanne verzögert, um dann in einer Pufferspeicherschaltung 270 gespeichert zu werden. Die Pufferspeicherschaltung 270 speichert die Suchfensterdaten, die zur Erfassung des Bewegungsvektors mit gebrochener Genauigkeit notwendig sind. Wenn z. B. die Größe eines Makroblockes (Musterblock und Suchfensterblock) 16·16 Pixel beträgt, wird für gebrochene Genauigkeit in der Pufferspeicherschaltung 270 ein Suchfensterblock einschließlich dem Rand gespeichert, d.h. 18·18 Pixel.
Ein Bewegungsvektor mit gebrochener Genauigkeit wird unter Verwendung der Suchfensterdaten, die in der Pufferspeicherschaltung 270 gespeichert sind, und der Musterblockdaten TX vom Prozessorfeld 10 bestimmt. Die von der Verzögerungsschaltung 260 gelieferte Verzögerung wird von der Speicherkapazität der Pufferspeicherschaltung 270 bestimmt. Wenn die Pufferspeicherschaltung 270 eine Kapazität zur Speicherung aller Pixel im Suchbereich aufweist, ist keine Verzögerungsschaltung 260 notwendig. Es wird ein Fall betrachtet, bei dem die Speicherkapazität der Pufferspeicherschaltung 270 eine minimale Kapazität von 18·18 Pixeln beträgt. Die Verzögerungsschaltung 260 liefert z. B. eine Verzögerungszeit in Höhe der Zeitspanne, die zum Übertragen von einer Pixelspalte im Suchbereich erforderlich ist.
Fig. 53 zeigt ein Beispiel der Struktur der Pufferspeicherschaltung von Fig. 52. Wie in Fig. 53 dargestellt ist, weist die Pufferspeicherschaltung 270 einen Speicher 272 zum Speichern der Suchfensterdaten SY vom Prozessorfeld 10 und eine Schreib- /Lesesteuerschaltung 274 zur Steuerung des Datenschreibens und Datenlesens in den bzw. aus dem Speicher 272 auf. Der Ausgangsknoten Do des Speichers 272 ist mit dem zweiten Berechnungsmittel 250 verbunden.
Die Schreib-/Lesesteuerschaltung 274 weist eine Schreibadresse- Erzeugungsschaltung 281 zum Erzeugen einer Schreibadresse für den Speicher 272, eine Ausleseadresse-Erzeugungsschaltung 283 zum Erzeugen einer Ausleseadresse für den Speicher 272, eine Steuerschaltung 286 zum Erzeugen eines Signals zum Steuern des Auslesemodus und des Schreibmodus des Speichers 272, und einen Selektor 284 zum Auswählen von entweder einer Schreibadresse oder einer Ausleseadresse unter der Steuerung der Steuerschaltung 286, um sie dem Adreßeingabeknoten A des Speichers 272 zuzuführen, auf.
Die Schreibadresse-Erzeugungsschaltung 281 reagiert auf ein Verriegelungsanweisungssignal RΦ von der Komparatoreinheit 3 der Fig. 51, um eine Schreibadresse zu erzeugen. Wenn dieses Verriegelungsanweisungssignal RΦ erzeugt wird, wird die Schreibadresse auf den Anfangswert zurückgesetzt. Die Schreibadresse-Erzeugungsschaltung 281 erzeugt eine Schreibadresse z. B. beginnend bei der Adresse 0 in Abhängigkeit von einem Taktsignal Φ. In ähnlicher Weise erzeugt die Ausleseadresse- Erzeugungsschaltung 283 eine Ausleseadresse beginnend bei der Adresse 0 in Abhängigkeit von der Steuerschaltung 286. Der Selektor 281 wählt eine Schreibadresse von der Schreibadresse- Erzeugungsschaltung 281 aus, wenn die Steuerschaltung 286 das Datenschreiben anweist. Wenn die Steuerschaltung 286 einen Auslesemodus anweist, so wählt der Selektor 284 eine Ausleseadresse von der Ausleseadresse-Erzeugungsschaltung 283 aus.
Die Steuerschaltung 286 reagiert auf ein Suchfensterdaten- Übertragungstaktsignal Φ, um ein Signal zu erzeugen, das die Datenschreib- und Datenlesetaktung für den Speicher 272 bestimmt. Die Steuerschaltung 286 reagiert auf ein Betriebsmodus- Anweisungssignal ΦRW, um eine Signal zu erzeugen, das den Schreib- und Lesebetrieb des Speichers 272 steuert. Wenn der Speicher 272 aus einem dynamischen Direktzugriffsspeicher gebildet ist, so erzeugt die Steuerschaltung 286 ein Zeilenadreß-Abtastsignal /RAS, ein Spaltenadreß-Abtastsignal /CAS, ein Schreibaktivierungssignal /WE und eine Ausgabeaktivierungssignal /OE (wenn der Ausgang drei Zustände annehmen kann).
Das an die Steuerschaltung 286 angelegte Steuersignal NRW kann von einer externen Steuerung geliefert werden. Wenn der Zählwert des Zählers 134 der in Fig. 43 dargestellten Komparatoreinheit 3 einen vorbestimmten Zählwert erreicht, wird ein Hochzählsignal erzeugt. Dieses Hochzählsignal kann als Steuersignal ΦRW benutzt werden. Der Grund dafür ist, daß die Bildung eines Kennungswertes für einen Musterblock kontinuierlich ausgeführt wird, bis der Zählwert des Zählers (siehe Fig. 43) einen vorbestimmten Wert erreicht. Im folgenden wird der Betrieb beschrieben.
Es wird ein Fall betrachtet, bei dem das Suchfenster der Fig. 54 eine Größe von 48·16 Pixeln und ein Makroblock (Musterblock und Suchfensterblock) eine Größe von 16·16 Pixeln aufweist. Es wird angenommen, daß die Kennungswertberechnung für den Suchfensterblock 42 ausgeführt wird. Der zur Bestimmung des Bewegungsvektors mit gebrochener Genauigkeit für den Suchfensterblock 42 erforderliche Bereich ist ein Bereich 48 mit 18·18 Pixeln einschließlich dem Bereich 42. Der Bereich 48 weist Pixeldaten P0-P325 auf, wie in Fig. 54 dargestellt ist.
Wie in Fig. 55 gezeigt ist, wird das Taktsignal Φ mit jedem Transfer der Suchfenster-Pixeldaten erzeugt. Wenn ein Taktsignal Φ erzeugt wird, werden die Suchfensterdaten um ein Pixel ausgeschoben. Bei der Berechnung eines Kennungswertes für den Suchfensterblock 42 weist die Ausgabe der in Fig. 52 gezeigten Verzögerungsschaltung 260 einen Wert entsprechend dem Pixel P0 auf. Wenn der Kennungswert des Suchfensterblocks 42 der minimale Wert der erhaltenen Kennungswerte ist, wird vom Komparator, der in Fig. 43 dargestellt ist, ein Verriegelungsanweisungssignal RΦ erzeugt. In Abhängigkeit davon wird die Schreibadresse der Schreibadresse-Erzeugungsschaltung 281 auf den Anfangswert 0 zurückgesetzt. Dann wird der Pixelwert P0 an die Stelle der Adresse 0 im Speicher 272 geschrieben. Anschließend werden 18 Pixelwerte, d. h. P1 . . . P17 an die Stellen der Adressen 1-17 geschrieben (wenn das Signal RΦ nicht erzeugt wird).
Um das Schreiben unnötiger Daten zu verhindern, nimmt die Schreibadresse-Erzeugungsschaltung 281 für 30 Taktsignalperioden, d. h. 30 Φ-Perioden, einen Pausezustand ein. Dadurch wird das Schreiben von Daten in den Speicher 272 gesperrt. Die Bestimmung eines Pausezustands zum Sperren des Datenschreibens wird durch eine Struktur implementiert, bei der der Speicher 272 für 30 Φ-Perioden in einen Pausezustand versetzt wird, wenn das Zählsignal Φ 18mal gezählt worden ist, weil das Verriegelungsanweisungssignal RΦ an die Steuerschaltung 286 angelegt wird.
Wenn 30 Taktsignalperioden (30 Φ-Zyklen) vorbei sind, so erzeugt die Schreibadresse-Erzeugungsschaltung 281 erneut eine Schreibadresse. Hier ist die Adresse gleich 18, so daß der Pixelwert P18 an der Stelle der Adresse 18 gespeichert wird. Anschließend wird der oben beschriebene Betrieb wiederholt ausgeführt. Bei der Änderung des Musterblocks wird der Suchbereich in horizontaler Richtung um einen Makroblock verschoben. Daher können alle Daten, die zur Erfassung eines Bewegungsvektors mit gebrochener Genauigkeit notwendig sind, selbst dann ermittelt werden, wenn sich der Makroblock, der einen Bewegungsvektor liefert, an der Grenze des Suchbereichs befindet. In diesem Fall können Daten, die außerhalb des Suchbereichs liegen, vernachlässigt werden. Es können benachbarte Daten innerhalb des Bereichs verwendet werden.
Entsprechend dem oben beschriebenen Betrieb weist der Speicher 272 nur die Daten eines Suchfensterblocks auf, die entsprechend einem Verschiebungsvektor gespeichert sind, der einen Kandidaten für den Bewegungsvektor darstellt. Die Speicherkapazität des Speichers 272 kann gleich der minimalen Speicherkapazität von 18·18 Worten sein, um die Vorrichtungsgröße zu vermindern.
Für den Fall einer Struktur, bei der die Pufferspeicherschaltung 270 alle Pixeldaten des gesamten Suchbereiches für einen Musterblock speichert, ist keine Verzögerungsschaltung 260 erforderlich. In diesem Fall wird eine Ausleseadresse entsprechend dem Wert eines Bewegungsvektors von der Komparatoreinheit 3 erzeugt.
Fig. 56 zeigt eine Struktur für das zweite Berechnungsmittel, das in den Fig. 51 und 562 dargestellt ist. Wie in Fig. 56 gezeigt ist, weist das zweite Berechnungsmittel 250 eine Erzeugungsschaltung 302 für ein Vorhersagebild mit gebrochener Genauigkeit zum Empfangen von Suchfensterdaten (genauer gesagt: der Ausgabe des Pufferspeichers) vom ersten Berechnungsmittel (Prozessorfeld), um ein Vorhersagebild zu erzeugen, das für gebrochene Genauigkeit notwendig ist, eine Absolutdifferenz-Summierungsschaltung 304 zum Ermitteln der Summe der Absolutdifferenzen der Pixeldaten des Vorhersagebildes, das von der Erzeugungsschaltung 302 erzeugt worden ist, und der Musterblockdaten X, und eine Komparatoreinheit 306 zum Erfassen des Verschiebungsvektors, der die minimale Summe der Absolutdifferenzen der Ausgaben der Absolutdifferenz-Summierungsschaltung 304 liefert, auf. Die Erzeugungsschaltung 302 für ein Vorhersagebild mit gebrochener Genauigkeit erzeugt parallel eine Mehrzahl von Pixeldaten für das Vorhersagebild. Die Absolutdifferenz- Summierungsschaltung 304 erzeugt außerdem parallel den Kennungswert für einen Verschiebungsvektor, der einen Kandidaten für den Bewegungsvektors darstellt. Die Komparatoreinheit 306 erfaßt die minimale aller Summen von Absolutdifferenzen, die von der Absolutdifferenz-Summierungsschaltung 304 geliefert werden, wodurch der Verschiebungsvektor entsprechend dieser minimalen Absolutdifferenzensumme als Bewegungsvektor bestimmt wird. Im folgenden wird die genaue Struktur einer jeden Schaltungskomponente beschrieben.
Fig. 57 zeigt eine genaue Struktur der Erzeugungsschaltung für ein Vorhersagebild mit gebrochener Genauigkeit, die in Fig. 56 dargestellt ist. Wie in Fig. 57 gezeigt ist, weist die Erzeugungsschaltung 302 für ein Vorhersagebild mit gebrochener Genauigkeit eine Verzögerungsschaltung 310 zum Verzögern zugeführter Suchfensterdaten um eine vorbestimmte Zeitspanne, einen Addierer 312 zum Addieren der Ausgaben der Verzögerungsschaltung 310 und der Suchfensterdaten Y, und einen Multiplizierer 314 zum Multiplizieren eines Koeffizienten (1/2) mit der Ausgabe des Addierers 312. Der Multiplizierer 314 kann durch ein Schiebemittel implementiert werden, das angelegte Werte in Richtung der nächst niedrigeren Bitstelle verschiebt. Die von der Verzögerungsschaltung 310 gelieferte Verzögerungszeit wird in Abhängigkeit davon bestimmt, welchem Verschiebungsvektor die Erzeugungsschaltung 302 für ein Vorhersagebild mit gebrochener Genauigkeit entspricht. Die Verzögerungszeit der Verzögerungsschaltung 310 wird später beschrieben. Die in Fig. 57 dargestellte Erzeugungsschaltung 302 für ein Vorhersagebild mit gebrochener Genauigkeit wird dazu benutzt, einen Bewegungsvektor mit 1/2-Pixel-Genauigkeit zu bestimmen.
Fig. 58 zeigt eine genaue Struktur der Absolutdifferenzen- Summierungsschaltung von Fig. 56. Wie in Fig. 58 dargestellt ist, weist die Absolutdifferenzen-Summierungsschaltung 304 einen Subtrahierer 320 zum Ausführen eines Subtraktion eines Interpolationswertes YF, der von der Erzeugungsschaltung 302 für ein Vorhersagebild mit gebrochener Genauigkeit geliefert wird, und eines Musterblockwertes X, eine Absolutwertschaltung 322 zum Bestimmen des Absolutwertes der Ausgabe des Subtrahierers 320, und eine Akkumulierungsschaltung 324 zum Akkumulieren der Ausgaben der Absolutwertschaltung 322 auf. Ein Beispiel für eine Struktur des zweiten Berechnungsmittels zur Bestimmung des Bewegungsvektors mit gebrochener Genauigkeit wird im folgenden beschrieben.
Fig. 59 zeigt ein Diagramm zur Erläuterung des Betriebs zur Bestimmung eines Bewegungsvektors mit gebrochener Genauigkeit durch das zweite Berechnungsmittel. Das zweite Berechnungsmittel 250 erfaßt einen Bewegungsvektor mit einer Genauigkeit von 1/2 Pixel. Es wird ein Fall betrachtet, bei dem acht Punkte als Kandidaten für einen Bewegungsvektor vorhanden sind. Mit anderen Worten erhält man Pixeldaten für acht Nachbarn Q1-Q4 und Q6-Q9 für ein Zielpixel durch Interpolation. Ein Kennungswert, der einen Kandidaten für den Bewegungsvektor angibt, wird durch Ermitteln der Absolutdifferenzen der Pixelwerte Q1-Q4 und Q6-Q9, die durch Interpolation erhalten wurden, und der Musterblockdaten X sowie deren Akkumulierung berechnet.
Hier wird angenommen, daß die Suchfensterdaten gleich P1-P9 sind, der Abstand zwischen den Pixeln benachbarter Spalten gleich T und die Verzögerungszeit zwischen benachbarten Zeilen gleich H (18T: bei einer Größe des Suchfensterblocks mit gebrochener Genauigkeit von 18·18 Pixeln) ist. In Fig. 59 ist die Anordnung der Zeilen und Spalten entgegengesetzt der, die für die obige Ausführungsform gezeigt ist. Der Suchfensterblockwert vom Prozessorfeld wird entlang der Spaltenrichtung des Suchfensters sequentiell ausgeschoben. In gleicher Weise werden die Musterblockdaten entlang der Spaltenrichtung ausgeschoben (wenn die Musterblockdaten- und die Suchfensterdaten-Übertragungsleitung parallel angeordnet sind). In Fig. 59 braucht nur das Bezugszeichen, das dem jeweiligen Pixel zugeordnet ist, geändert zu werden (Zeilen und Spalten ersetzen), und es tritt kein besonderes Problem auf. Die Struktur zur Erfassung des Bewegungsvektors mit gebrochener Genauigkeit unter Verwendung der interpolierten Suchfensterdaten Q1-Q4 und Q6-Q9, die in Fig. 59 dargestellt sind, wird im folgenden beschrieben.
Fig. 60 zeigt genau eine Struktur für das zweite Berechnungsmittel. Wie in Fig. 60 dargestellt ist, weist das zweite Berechnungsmittel 250 eine Verzögerungsschaltung 335a zum Verzögern eines zugeführten Suchfensterwerts um 1H und eine Verzögerungsschaltung 335b zum weiteren Verzögern der Ausgabe der Verzögerungsschaltung 335a um 1H auf. Ein Pfad, der Daten entsprechend jeder Zeile von Fig. 59 erzeugt, wird durch kaskadenförmiges Verbinden zweier Stufen von Verzögerungsschaltungen 335a und 335b gebildet.
Das in Fig. 60 dargestellte zweite Berechnungsmittel weist ferner eine Verzögerungsschaltung 336a zum Verzögern eines eingegebenen Suchfensterwertes P um 1T, eine Verzögerungsschaltung 336d zum Verzögern der Ausgabe der Verzögerungsschaltung 336a um 1T, eine Verzögerungsschaltung 336b zum Verzögern der Ausgabe der 1H- Verzögerungsschaltung 335a um 1T, eine Verzögerungsschaltung 336e zum Verzögern der Ausgabe der Verzögerungsschaltung 335b um 1T, eine Verzögerungsschaltung 336c zum Verzögern der Ausgabe der 1H- Verzögerungsschaltung 335b um 1T, und eine Verzögerungsschaltung 336f zum Verzögern der Ausgabe der Verzögerungsschaltung 336c um 1T auf. Durch die 1T-Verzögerungsschaltungen 336a-336f werden die Suchfensterdaten erzeugt, die für die Interpolation notwendig sind.
Das zweite Berechnungsmittel 250 weist ferner eine Additions- Schiebe-Schaltung 330a zum Addieren eines eingegebenen Suchfensterwertes P und der Ausgabe der 1T-Verzögerungsschaltung 336a und zum Multiplizieren desselben mit einem Koeffizienten (1/2) auf. Die Additions-Schiebe-Schaltung 330a realisiert die Multiplikation des Koeffizienten (1/2) durch einen Schiebevorgang.
Das zweite Berechnungsmittel 250 weist ferner eine Additions- Schiebe-Schaltung 330b zum Ausführen eines Additions-Schiebe- Vorgangs mit der Ausgabe der 1T-Verzögerungsschaltung 336a und der Ausgabe der 1T-Verzögerungsschaltung 336e, eine Additions-Schiebe- Schaltung 330c zum Ausführen eines Additions-Schiebe-Vorgangs mit den Ausgaben der 1T-Verzögerungsschaltungen 336b und 336e, eine Additions-Schiebe-Schaltung 330d zum Ausführen eines Additions- Schiebe-Vorgangs mit den Ausgaben der 1H-Verzögerungsschaltung 335a und der 1T-Verzögerungsschaltung 336b, eine Additions-Schiebe- Schaltung 330e zum Ausführen eines Additions-Schiebe-Vorgangs mit den Ausgaben der 1H-Verzögerungsschaltung 335b und der 1T- Verzögerungsschaltung 336c, und eine Additions-Schiebe-Schaltung 330f zum Ausführen eines Additions-Schiebe-Vorgangs mit den Ausgaben der 1T-Verzögerungsschaltung 336c und der 1T-Verzögerungsschaltung 336f auf. Durch die Additions-Schiebe-Schaltungen 330a-330f werden Daten zur Erzeugung von Interpolationsdaten zwischen vier Pixeln erzeugt.
Das zweite Berechnungsmittel 250 weist ferner eine Additions- Schiebe-Schaltung 330g zum Ausführen eines Additions-Schiebe- Vorgangs mit den Ausgaben der Additions-Schiebe-Schaltung 330a und der Additions-Schiebe-Schaltung 330d, eine Additions-Schiebe- Schaltung 330h zum Ausführen eines Additions-Schiebe-Vorgangs mit den Ausgaben der 1T-Verzögerungsschaltungen 336a und 336b, eine Additions-Schiebe-Schaltung 330i zum Ausführen eines Additions- Schiebe-Vorgangs mit den Ausgaben der Additions-Schiebe-Schaltungen 330b und 330c, eine Additions-Schiebe-Schaltung 330j zum Ausführen eines Additions-Schiebe-Vorgangs mit den Ausgaben der 1T- Verzögerungsschaltung 336b und der IH-Verzögerungsschaltung 335a, eine Additions-Schiebe-Schaltung 330k zum Ausführen eines Additions- Schiebe-Vorgangs mit den Ausgaben der 1T-Verzögerungsschaltungen 336e und 336b, eine Additions-Schiebe-Schaltung 330l zum Ausführen eines Additions-Schiebe-Vorgangs mit den Ausgaben der Additions- Schiebe-Schaltungen 330d und 330e, eine Additions-Schiebe-Schaltung 330m zum Ausführen eines Additions-Schiebe-Vorgangs mit den Ausgaben der 1T-Verzögerungsschaltungen 336b und 336c, und eine Additions- Schiebe-Schaltung 330n zum Ausführen eines Additions-Schiebe- Vorgangs mit den Ausgaben der Additions-Schiebe-Schaltungen 330c und 330f auf. Von den Additions-Schiebe-Schaltungen 330g-330n werden Pixeldaten erzeugt, die sich an den Positionen der Interpolationspixeldaten Q9-Q6 und Q4-Q1 befinden.
Die Absolutdifferenz-Summierungsschaltung 304 enthalten Absolutwert- Summierungsschaltungen 304a-304h, um die Ausgaben Q9-Q6 und Q4-Q0 der Additions-Schiebe-Schaltungen 330g-330n und die Musterblockdaten A zur Bestimmung der Summe der Absolutdifferenzen der angelegten Signale zu ermitteln. Die Suchfenster-Blockdaten und die Musterblockdaten A weisen eine Beziehung nach Art der True-Backside auf (innerhalb des Blockes).
Die Ausgaben der Absolutdifferenz-Summierungsschaltungen 304a-304h werden parallel an die Komparatoreinheit 306 angelegt, wobei ein Verschiebungsvektor, der die minimale Summe der Absolutdifferenzen liefert, als Bewegungsvektor bestimmt wird. Die Komparatoreinheit 306 vergleicht die Ausgaben der Absolutdifferenz- Summierungsschaltungen 304a-304h, um den Code als Bewegungsvektor auszugeben, der an die Absolutdifferenz-Summierungsschaltung angelegt wird, die den minimalen Wert liefert. Die Absolutdifferenz- Summierungsschaltungen 304a-304h entsprechen jeweils einem Verschiebungsvektor, die acht Kennungswerte liefern. Daher kann ein Bewegungsvektor mit gebrochener Genauigkeit bestimmt werden.
Bei der in Fig. 60 dargestellten Struktur können nur ein oder vier Absolutdifferenz-Summierungsschaltungen gebildet sein, wodurch die Ausgaben der in zeitlich-gemultiplexter Weise aktivierten Additions- Schiebe-Schaltungen 330g-330n sequentiell addiert und akkumuliert werden. Für den Fall einer gemeinsam benutzten Struktur wird das Akkumulationsergebnis in der Absolutdifferenz-Summierungsschaltung im Registersatz gespeichert, wodurch die Akkumulierung unter Verwendung der Werte im Registersatz ausgeführt wird. In diesem Fall kann die Komparatoreinheit 306 eine Struktur benutzen, die ähnlich der Struktur der in Fig. 43 dargestellten Komparatoreinheit ist. Der Grund dafür ist, daß der Vergleichsvorgang sequentiell ausgeführt wird.
Bei der oben beschriebenen Struktur wird ein Bewegungsvektor mit einer Genauigkeit von 1/2 Pixel erfaßt. Es kann eine Struktur zur Bestimmung eines Bewegungsvektors mit noch höherer Genauigkeit (stärker gebrochenen Genauigkeit), wie z. B. einer Genauigkeit von 1/4 Pixel, benutzt werden. Obwohl es acht Kennungspunkte gibt, kann eine Struktur benutzt werden, die mehr Kennungspunkte verwendet.
Fig. 61 zeigt eine Modifikation der zweiten Ausführungsform der vorliegenden Erfindung. Das in Fig. 61 dargestellte Bewegungsvektor- Erfassungsmittel weist zwischen dem ersten Berechnungsmittel 210 zur Bestimmung eines Bewegungsvektors mit ganzzahliger Genauigkeit und eines zweiten Berechnungsmittels 250 zur Bestimmung eines Bewegungsvektors mit gebrochener Genauigkeit Pufferspeicher 280 und 282 auf. Die Pufferspeicher 280 und 282 speichern Musterblockdaten TX und Suchfensterdaten SY, die vom ersten Berechnungsmittel 210 geliefert werden. Die Strukturen der Pufferspeicher 280 und 282 sind ähnlich der in Fig. 53 dargestellten Struktur. Der Pufferspeicher 280 kann eine Kapazität zum Speichern aller Pixeldaten im Musterblock und der Pufferspeicher 282 eine Kapazität zum Speichern aller Pixeldaten im Suchbereich für diesen Musterblock aufweisen. Der Pufferspeicher 282 kann wie bei der vorherigen Ausführungsform auch eine Kapazität nur zum Speichern der Pixeldaten eines Bereichs aufweisen, der zur Bestimmung des Bewegungsvektors mit gebrochener Genauigkeit erforderlich ist.
Bei der in Fig. 52 dargestellten Struktur werden die Musterblockdaten TX vom ersten Berechnungsmittel 210 direkt an das zweite Berechnungsmittel 250 angelegt. Für den Fall einer solchen Struktur ist die Erfassungsvorgangszeitspanne für den Bewegungsvektor mit gebrochener Genauigkeit gleich der Ladezeit der Musterblockdaten in das Prozessorfeld im ersten Berechnungsmittel 210. Der Grund dafür ist, daß die Musterblockdaten während dieser Zeit sequentiell aus dem Prozessorfeld ausgeschoben werden. In diesem Fall muß das zweite Berechnungsmittel 250 die Berechnung mit einer Rate ausführen, die im wesentlichen gleich der Transferrate der Musterblockdaten ist.
Das zweite Berechnungsmittel 250 kann jedoch eine Berechnung mit einem ausreichenden Betriebsrahmen ausführen, wenn die Pufferspeicher 280 und 282 für die Musterblockdaten TX und die Suchfensterdaten SY gebildet werden, wie in Fig. 61 dargestellt ist. Das vereinfacht die rechtzeitige Bereitstellung der Musterblockdaten TX und der Suchfensterdaten SY.
Für den Fall der in Fig. 61 dargestellten Struktur kann der Rechenvorgang der ersten und zweiten Berechnungsmittel 210 und 250 nach Art einer Pipeline ausgeführt werden, wie in Fig. 62 gezeigt ist. Fig. 62 ist ein Diagramm zur Erläuterung der Betriebsweise des Bewegungsvektor-Erfassungsmittels nach Fig. 61. In Fig. 61 ist die Zeit auf der Abszisse aufgetragen. Im ersten Berechnungsmittel 210 wird der Prozeß für den N-ten Makroblock (Musterblock) ausgeführt, wodurch die Bestimmung eines Bewegungsvektors für den N-ten Makroblock (Musterblock) abgeschlossen wird. Unter Verwendung der Suchfensterdaten und der Musterblockdaten, die im Prozeß für den N- ten Makroblock benutzt worden sind, wird im zweiten Berechnungsmittel 250 die Erfassung eines Bewegungsvektors mit gebrochener Genauigkeit für den N-ten Makroblock ausgeführt.
Parallel zum Bestimmungsvorgang des Bewegungsvektors mit gebrochener Genauigkeit für den N-ten Makroblock wird im ersten Berechnungsmittel eine Erfassung des Bewegungsvektors mit ganzzahliger Genauigkeit für den (N+1)-ten Makroblock (Musterblock) ausgeführt. Durch Schaffen einer Pipeline für den Betrieb des ersten und des zweiten Berechnungsmittels 210 und 250, wie das oben beschrieben ist, kann der Betrieb des ersten Berechnungsmittels 210 und der Betrieb des zweiten Berechnungsmittels 250 in zeitlichem Sinne unabhängig voneinander ausgeführt werden, so daß die Erfassung eines Bewegungsvektors mit gebrochener Genauigkeit in einem ausreichenden Betriebsrahmen hinsichtlich der Zeitanforderungen an die Berechnung ausgeführt werden kann. Das erste und zweite Berechnungsmittel 210 und 250 werden in diesem Fall also parallel zueinander betrieben, so daß die Erfassung eines Bewegungsvektors mit gebrochener Genauigkeit mit hoher Geschwindigkeit ausgeführt werden kann.
Obwohl bei der in Fig. 61 gezeigten Struktur der Pufferspeicher 280 zur Speicherung der Musterblockdaten TX benutzt worden ist, kann das eine Element mit einer Verzögerungsfunktion sein (eine Verzögerungsleitung oder ein Zeilenspeicher).
Fig. 63 zeigt eine weitere Modifikation der zweiten Ausführungsform der vorliegenden Erfindung. Fig. 63 stellt den Abschnitt eines ersten Berechnungsmittels zur Erfassung eines Bewegungsvektors mit ganzzahliger Genauigkeit dar. Wie in Fig. 63 gezeigt ist, weist das erste Berechnungsmittel 400 Elementbetriebseinheiten 411a-411w auf, die kaskadenförmig miteinander verbunden sind. Jede der Elementbetriebseinheiten 411a-411w mit jeweils derselben Struktur weist Register 413a-413w zum Verriegeln der Suchfensterdaten, Register 414a-414w zum Verriegeln der Musterblockdaten und Absolutdifferenzschaltungen 412a-412w zum Bestimmen der Absolutdifferenz von Daten, die in einem entsprechenden der Suchfensterregister 413a-413w und einem entsprechenden der Musterblockdaten-Speicherregister 414a-414w gespeichert sind, auf.
Die Register 413a-413w können Daten in nur einer Richtung übertragen. Die Register 414a-414w können Speicherdaten auch zu einer benachbarten Elementbetriebseinheit in nur einer Richtung übertragen. Zum Suchfensterregister 413a in der ersten Stufe der Elementbetriebseinheit 411a werden die Suchfensterdaten vom Bildspeicher 401 über die Signalleitung 415 übertragen. Zum Musterblock-Datenregister 414a der Elementbetriebseinheit 411a werden die Musterblockdaten vom Bildspeicher 402 über die Signalleitung 416 übertragen. Der Bildspeicher 401 speichert alle Pixeldaten im Referenzbild (vorherigen Bild). Der Bildspeicher 402 speichert alle Pixeldaten des gegenwärtigen Bildes. Die Elementbetriebseinheiten 411a-411w sind zahlenmäßig entsprechend der Größe eines Makroblockes gebildet. Genauer gesagt sind insgesamt 256 Elementbetriebseinheiten 411a-411w gebildet, wenn die Größe eines Musterblocks 16 Zeilen mal 16 Spalten beträgt. Das erste Berechnungsmittel 410 weist ferner eine Summierungseinheit 417 zum Addieren der Ausgaben der Absolutdifferenzschaltungen 412a-412w der Elementbetriebseinheiten 411a-411w und eine Komparatoreinheit 418 zum Erfassen des minimalen Kennungswertes in Abhängigkeit von der Ausgabe der Summierungseinheit 417 zum Bestimmen des Verschiebungsvektors eines entsprechenden Suchfensterblocks als Bewegungsvektor auf.
Bei der in Fig. 63 dargestellten Struktur speichert das erste Berechnungsmittel 400 die Musterblockdaten in den Registern 414a-414w, und die Daten eines Suchfensterblocks sind in den Registern 413a-413w gespeichert. Wenn ein Berechnungszyklus (Kennungswert- Bestimmungszyklus) abgeschlossen ist, wird eine Zeile oder eine Spalte von Daten des Suchfensterblocks ausgeschoben. Die ausgeschobenen Suchfensterdaten SY werden dem zweiten Berechnungsmittel zugeführt. In ähnlicher Weise werden die Musterblockdaten TX im nachfolgenden Erfassungszyklus für einen Bewegungsvektor ausgeschoben und an das zweite Berechnungsmittel angelegt. Die zur Erfassung eines Bewegungsvektors mit gebrochener Genauigkeit erforderlichen Suchfensterdaten unter den ausgeschobenen Suchfensterdaten SY werden unter Verwendung der in Fig. 53 dargestellten Struktur abgeleitet.
Bei der in Fig. 63 dargestellten Struktur kann ein ähnlicher Effekt durch Versetzen aller Register 414a-414w in einen Durchlaßzustand, um dieselben Musterblockdaten den Elementbetriebseinheiten 411a-411w zuzuführen, wodurch die Suchfensterdaten um ein Pixel in Richtung der Register 413a-413w ein- oder ausgeschoben werden. In diesem Fall werden Suchfensterdaten so angelegt, daß die angelegten Musterblockdaten TX und die angelegten Suchfensterdaten denselben Verschiebungsvektor aufweisen. In diesem Fall wird anstelle einer Absolutdifferenzschaltung eine Absolutdifferenz-Summierungsschaltung verwendet. Es können auch andere Strukturen benutzt werden, und jede Schaltungsstruktur ist erlaubt, solange eine Funktion zur Erfassung eines Bewegungsvektors mit ganzzahliger Genauigkeit enthalten ist.
Für den Fall der Struktur, bei der Elementbetriebseinheiten kaskadenförmig miteinander verbunden sind, wie in Fig. 63 dargestellt ist, können Suchfensterdaten, die zur Berechnung mit gebrochener Genauigkeit erforderlich sind, auf einfache Weise ermittelt werden. Genauer gesagt ist ein Schieberegister an der Ausgangsstufe der Suchfensterdaten gebildet, und es ist eine Latch- Schaltung zum Verriegeln der Suchfensterdaten in einem geeigneten Abstand in der Elementbetriebseinheit gebildet. Die Stelle, an der die Latch-Schaltung gebildet ist, entspricht der Stelle, die um ein Pixel eines Suchfensterblocks entfernt ist. Genauer gesagt werden im ersten Berechnungsmittel 400 alle Suchfensterdaten verriegelt, die für eine gebrochene Genauigkeit erforderlich sind, und eine Elementbetriebseinheit ist nur für den Pixelwert gebildet, der zur Erfassung des Bewegungsvektors mit ganzzahliger Genauigkeit notwendig ist, um diese Erfassung des Bewegungsvektors mit ganzzahliger Genauigkeit auszuführen. Weil in diesem Fall die für eine gebrochene Genauigkeit erforderlichen Suchfensterdaten parallel zur Bildung der Musterblockdaten TX sequentiell ausgeschoben werden, können Fensterdaten, die für ein Referenzbild notwendig sind, bei der Erfassung des Bewegungsvektors mit gebrochener Genauigkeit einfach erhalten werden. Damit wird die Struktur der Vorrichtung vereinfacht.
Wenn die Größe des Musterblocks und des Suchfensterblocks z. B. jeweils 16·16 Pixel beträgt, beträgt die Blockgröße des Suchfensters, das zur Erfassung des Bewegungsvektors mit gebrochener Genauigkeit erforderlich ist, 18·18 Pixel. Hier ist ein Schieberegister, das die ersten 18 Pixel verriegelt, an der Ausgangsstufe gebildet, und eine Latch-Schaltung zum Verriegeln der Daten vom jeweiligen oberen und unteren einen Bit außerhalb der jeweiligen Spalte des Suchfensterblocks (16·16 Pixel) ist an einer vorbestimmten Stelle zwischen den Elementbetriebseinheiten gebildet. In diesem Fall werden die für eine gebrochene Genauigkeit erforderlichen Suchfensterdaten aus dem Bildspeicher zum ersten Berechnungsmittel ausgelesen. Dieser Zustand ist in Fig. 64 dargestellt.
Wie in Fig. 64 dargestellt ist, werden die Daten des Suchfensterblocks 434 in den Elementbetriebseinheiten 441a-441f gespeichert. Fig. 64 zeigt den Zustand, in dem der Suchfenster- Blockwert YB in der Elementbetriebseinheit 411d gespeichert ist. Beim Erfassen des Bewegungsvektors mit gebrochener Genauigkeit werden die Pixeldaten des Bereichs 438 einschließlich dem Randpixel 436 des Suchfensterblocks 434 verwendet. Die Daten des Randpixelbereichs 436 werden im jeweiligen Latch- und Schieberegister gespeichert.
In Fig. 64 ist der Zustand der Daten für das Randpixel YA, das in der Latch-Schaltung 430a verriegelt sind, dargestellt. Die Randpixelspalte (dargestellt als Pixel YC) ist in der Ausgangsstufe des Schieberegisters 432a und die andere Pixelspalte (dargestellt als Pixel YD) ist im Eingangsbereich des Schieberegisters 432b gespeichert. Alle Daten des Bereichs 438 werden aus dem Bildspeicher 401 ausgelesen. Es sei bemerkt, daß für jeden Kennungswert- Erzeugungszyklus eine Spalte oder eine Zeile von Suchfensterdaten des Bereichs 438 eingeschoben oder ausgeschoben wird. Entsprechend dieser Struktur können Pixeldaten, die zur Erfassung des Bewegungsvektors mit gebrochener Genauigkeit erforderlich sind, auf einfache Weise erzeugt werden, um sie einem zweiten Berechnungsmittel zuzuführen und eine Erfassung des Bewegungsvektors mit gebrochener Genauigkeit auszuführen. Die Elementbetriebseinheiten 411a-411f können in einer Matrix angeordnet sein (die Datenübertragungsrichtung kann unidirektional sein).
Ausführungsform 3
Ausführungsform 1 und Ausführungsform 2 sind beschrieben worden, wobei der Bewegungsvektor für einen Musterblock ermittelt worden ist. Die Erfassung der Bewegungsvektoren von zwei Musterblöcken kann auch parallel ausgeführt werden. Im folgenden wird eine Struktur dazu beschrieben.
Fig. 65 zeigt die Größen des Suchbereichs und des Musterblocks. Wie in Fig. 65 dargestellt ist, weist der Suchbereich 45 eine Größe von 48·48 Pixeln und der Musterblock 43 eine Größe von 16·16 Pixeln auf. Der Suchbereich beträgt +16 bis -16 in horizontaler und +16 bis -16 in vertikaler Richtung.
Wie in Fig. 66 dargestellt ist, wird der Fall betrachtet, daß der jeweilige Bewegungsvektor mit zwei benachbarten Makroblöcken TB1 und TB2 als Musterblock im gegenwärtigen Bild 49 ermittelt wird. Bei der vorliegenden Ausführungsform wird das Prozessorfeld mit der in den Fig. 1 und 4 gezeigten Struktur benutzt. Im Prozessorfeld sind die Pixeldaten des in Fig. 67 dargestellten Suchfensters 40 gespeichert.
Es wird ein Fall betrachtet, bei dem der Suchfensterblock 42 im jeweiligen Elementprozessor im Prozessorfeld gespeichert ist, wie Fig. 67 zeigt. Hier lautet der Verschiebungsvektor für den Musterblock TB1 (0, -16) und der Verschiebungsvektor für den Musterblock TB2 (-16, -16). Für den Suchfensterblock 42a lautet der Verschiebungsvektor des Musterblocks TB1 (+16, -16) und der Verschiebungsvektor des Musterblocks TB2 (0, -16). Die Berechnungen der Kennungswerte für die zwei Musterblöcke TB1 und TB2 werden parallel ausgeführt.
Der Elementprozessor PE im Prozessorfeld speichert den in Fig. 67 dargestellte Suchfensterblock 42. In ähnlicher Weise werden die Pixeldaten der Musterblöcke TB1 und TB2 gespeichert, wobei die Anordnungsreihenfolge auf dem Bild im jeweiligen Elementprozessor des Prozessorfeldes beibehalten wird. 70903 00070 552 001000280000000200012000285917079200040 0002004322343 00004 70784Die Struktur dieses Elementprozessors wird später beschrieben.
Der Betrieb des Elementprozessors ist im wesentlichen gleich dem Betrieb, der unter Bezugnahme auf die Ausführungsformen 1 und 2 beschrieben worden ist.
Wie in Fig. 68 gezeigt ist, werden die Kennungswerte für die Verschiebungsvektoren (0, -16) und (-16, -16) für die Musterblöcke TB1 und TB2 unter Verwendung des Suchfensterblocks 42 berechnet.
Wenn die Berechnung der Kennungswerte für die Verschiebungsvektoren (0, -16) und (-16, -16) abgeschlossen ist, wird im Prozessorfeld der Schiebebetrieb um ein Pixel ausgeführt.
In diesem Zustand wird der Suchfensterblock 42 im Suchfenster 40 um eine Zeile nach unten verschoben, wie in Fig. 65 dargestellt ist (angegeben durch Block 42a). Der Verschiebungsvektor für den Suchfensterblock 42a des Musterblocks TB1 ist gleich (0, -15) und der Verschiebungsvektor des Musterblocks TB2 ist gleich (-16, -15).
Der oben beschriebene Vorgang wird wiederholt. Wenn 33 Zyklen abgeschlossen sind, wird der Suchfensterblock 42b in den Elementprozessoren im Prozessorfeld gespeichert. In diesem Zustand lautet der Verschiebungsvektor des Musterblocks TB1 (0, 16) und der Verschiebungsvektor des Musterblocks TB2 (-16, 16). Durch weiteres Ausführen des Verschiebevorganges der Suchfensterdaten wird das Suchfenster 40 um eine Spalte nach rechts verschoben, und die Ermittlung des Bewegungsvektors wird unter Verwendung des neuen Suchfensters 40a ausgeführt.
Genauer gesagt wird die Ermittlung des Bewegungsvektors wird unter Verwendung des am weitesten oben befindlichen Suchfensterblocks 42c im neuen Suchfenster 40a ausgeführt, wie in Fig. 71 dargestellt ist. Für den Suchfensterblock 42c lautet der Verschiebungsvektor des Musterblocks TB1 (1, -15) und der Verschiebungsvektor des Musterblocks TB2 (-15, -16).
Durch Wiederholen dieses Vorgangs, um die Bestimmung des Bewegungsvektors für den unteren Suchfensterblock 42d im Suchfenster 40b abzuschließen, wird der Zyklus zur Bestimmung des Bewegungsvektors für den Musterblock TB1 abgeschlossen. Es wird angenommen, daß der Prozeß für die 16 Spalten von -16 bis -1 der horizontalen Komponente bereits abgeschlossen ist, bevor das Suchfenster 40 angewandt wird. In diesem Zustand kann ein Kennungswert für die 1089 (=33·33) Punkte der Ermittlung, die die Kandidaten für den Bewegungsvektor des Musterblocks TB1 angeben, berechnet werden, um den Bewegungsvektor zu bestimmen. Der Bewegungsvektor für den Musterblock TB2 kann durch Ausführen dieses Vorgangs für den Musterblock TB2 erfaßt werden.
Genauer gesagt kann der Bestimmungsvorgang des Bewegungsvektor für die Musterblöcke TB1 und TB2 in paralleler Weise ausgeführt werden, wie in Fig. 72 gezeigt ist, wobei die Bewegungsvektor-Bestimmungszyklen um einen halben Zyklus überlappen. Das erlaubt die Ausführung der Bewegungskompensierung für ein Bild mit hoher Geschwindigkeit. Die Struktur zum Ausführen einer solchen Bestimmung der Bewegungsvektoren für die beiden Musterblöcke wird im folgenden beschrieben.
Fig. 73 zeigt die Struktur eines Elementprozessors, der bei der dritten Ausführungsform der vorliegenden Erfindung benutzt wird. Wie in Fig. 73 dargestellt ist, weist ein Elementprozessor PE ein Suchfenster-Datenregister 505c zum Speichern der Suchfensterdaten von einem benachbarten Elementprozessor, ein rechtes Musterdatenregister 505a zum Speichern der Pixeldaten des Musterblocks der rechten Seite, die von einem benachbarten Elementprozessor geliefert werden, ein linkes Musterdatenregister 505b zum Speichern der Pixeldaten des Musterblocks der linken Seite, die von einem benachbarten Elementprozessor geliefert werden, einen Selektor 506 zum Auswählen der Ausgabe von entweder dem Musterdatenregister 505a oder 505b und eine Absolutdifferenzschaltung 507 zum Empfangen der Ausgaben des Registers 505c und des Selektors 506 über die Signalleitungen 510 bzw. 509, um die Berechnung einer absoluten Differenz auszuführen, auf.
Die Ausgabe der Absolutdifferenzschaltung 507 wird der Summierungseinheit über die Signalleitung 511 zugeführt. Der in Fig. 73 dargestellte Elementprozessor PE ist in einem zweidimensionalen Feld angeordnet, wie in Fig. 4 gezeigt ist. Die Musterblockdaten werden aktualisiert, nachdem die Bestimmung des Bewegungsvektors für 16 Spalten (die 16 Spalten des Suchbereichs) der horizontalen Komponenten ausgeführt worden ist. Hier können der Musterblock der rechten Seite und der Musterblock der linken Seite nicht gleichzeitig aktualisiert werden, und nur die in einem Musterblock- Datenregister gespeicherten Daten können aktualisiert werden. Als Reaktion darauf wird die Auswahl des Selektors umgeschaltet. Im jeweiligen Betriebszyklen muß lediglich die Auswahlfolge für einen Block identisch sein.
Die Strukturen der Absolutdifferenzschaltung 507 und der Summierungseinheit sind ähnlich den unter Strukturen, die für die erste und zweite Ausführungsform beschrieben worden sind. Weil der Betrieb des Elementprozessors PE ähnlich ist, werden die Details nicht wiederholt. Die Musterdatenregister 505a und 505b werden vom Selektor 506 sequentiell ausgewählt, und die Absolutdifferenz der Suchfenster-Blockdaten, die im Suchfenster-Datenregister 505c gespeichert sind, wird bestimmt. Daher werden die Absolutdifferenz des Musterblocks der rechten Seite und die Absolutdifferenz des Musterblocks der linken Seite von der Absolutdifferenzschaltung 507 in zeitlich-gemultiplexter Weise geliefert und der Summierungseinheit zugeführt.
Die Fig. 74 und 75 zeigen Strukturen zur Erzeugung der Musterblockdaten der rechten Seite und der Musterblockdaten der linken Seite. Wie in Fig. 74 gezeigt ist, werden die Musterblockdaten der rechten Seite direkt aus dem Bildspeicher 550 des gegenwärtigen Bildes ausgelesen, und die Musterblockdaten der linken Seite werden aus dem Pufferspeicher 552 ausgelesen. Der Pufferspeicher 552 speichert sequentiell die Musterblockdaten der rechten Seite, die aus dem Bildspeicher 550 für das gegenwärtige Bild ausgelesen worden sind. Für den Pufferspeicher 552 kann ein Multiportspeicher benutzt werden, der getrennte Schreib- und Lesepfade aufweist, wie unter Bezugnahme auf Fig. 54 beschrieben worden ist. Alternativ kann ein FIFO-Speicher verwendet werden. Der Pufferspeicher 552 muß eine Speicherkapazität aufweisen, die ausreicht, alle Pixeldaten des Musterblockes zu speichern. Der Bildspeicher 550 für das gegenwärtige Bild speichert alle Pixeldaten des gegenwärtigen Bildes. Bei der in Fig. 74 gezeigten Struktur werden der Musterblock der rechten Seite und der Musterblock der linken Seite zusammen aktualisiert, wenn der Bestimmungsvorgang für den Bewegungsvektor für die 16 Spalten in horizontaler Richtung des Prozessorfeldes abgeschlossen ist.
Fig. 75 zeigt eine Struktur zur Aktualisierung von nur einem Musterblockwert im Prozessorfeld. Wie in Fig. 75 dargestellt ist, werden die aus dem Bildspeicher 550 ausgelesenen Musterblockdaten des gegenwärtigen Bildes vom Selektor 554 als Musterblockdaten der rechten Seite oder als Musterblockdaten der linken Seite ausgegeben. Der Selektor 554 überträgt die aus dem Bildspeicher 550 ausgelesenen Musterblockdaten des gegenwärtigen Bildes zum Musterblock-Datenpfad der rechten Seite oder dem Musterblock-Datenpfad der linken Seite. Im Elementprozessor PE, der in Fig. 73 dargestellt ist, werden nur die Daten aktualisiert, die entweder im Musterdatenregister 505a der rechten Seite oder im Musterdatenregister 505b der linken Seite gespeichert sind. Als Reaktion auf das Umschalten der Auswahlart des Selektors 554 wird die Auswahlfolge des in Fig. 73 gezeigten Selektors 506 umgeschaltet.
Fig. 76 zeigt eine weitere Struktur für einen Elementprozessor. Wie in Fig. 76 dargestellt ist, weist der Elementprozessor PE zwei Absolutdifferenzschaltungen 507a und 507b auf. Die Absolutdifferenzschaltung 507a ermittelt die Absolutdifferenz der Daten, die im Suchfenster-Datenregister 505c gespeichert sind, und der Daten, die im Musterdatenregister 505a der rechten Seite gespeichert sind. Die Absolutdifferenzschaltung 507b ermittelt die Absolutdifferenz der Daten, die im Suchfenster-Datenregister 505c gespeichert sind, und der Daten, die im Musterdatenregister 505b der linken Seite gespeichert sind. Die Ausgaben der Absolutdifferenzschaltungen 507a und 507b werden über die Signalleitungen 511a bzw. 511b zur Summierungseinheit übertragen. Zwei den Absolutdifferenzschaltungen 507a und 507b entsprechende Summierungsschaltungen können in der Summierungseinheit gebildet sein. Es kann eine Struktur benutzt werden, bei der eine Summierungsschaltung über einen Selektor in zeitlich-gemultiplexter Weise getrieben wird.
Bei der oben beschriebenen Elementprozessorstruktur ist beschrieben worden, daß die Musterdaten zwischen benachbarten Elementprozessoren übertragen werden. Wenn diese Musterblockdaten nicht direkt zur Bewegungsvektor-Bestimmungseinheit mit gebrochener Genauigkeit übertragen werden, kann eine Struktur benutzt werden, bei der die Musterdaten direkt an den jeweiligen Elementprozessor angelegt werden, ohne die Musterblockdaten zwischen benachbarten Elementprozessoren zu verschieben. Der Grund dafür ist, daß sich die Musterblockdaten während des Bewegungsvektor-Bestimmungsvorgang im Prozessorfeld befinden (es ist keine Verschiebung notwendig).
Fig. 77 zeigt die Strukturen der Summierungseinheit und der Vergleichseinheit. Wie in Fig. 77A dargestellt ist, empfängt die Summierungseinheit 560 parallel die Absolutdifferenz von der Absolutdifferenzschaltung, die im Elementprozessor PE enthalten ist, um die Berechnung einer Gesamtsumme auszuführen. Die Ausgabe der Summierungseinheit 560 wird an eine rechte Komparatoreinheit 562 und eine linke Komparatoreinheit 564 angelegt. Die rechte und die linke Komparatoreinheit 562 und 564 werden in Abhängigkeit von Aktivierungssignalen Φ1 bzw. Φ2 aktiviert. Die rechte Komparatoreinheit 562 bestimmt einen Bewegungsvektor für den Musterblock der rechten Seite und die linke Komparatoreinheit 564 einen Bewegungsvektor für den Musterblock der linken Seite. Die Struktur der Summierungseinheit 560 und der Komparatoreinheiten 562 und 564 können die Strukturen der vorherigen Ausführungsformen benutzen. Genauer gesagt können die in den Fig. 40 bis 42 dargestellten Strukturen für die Summierungseinheit 560 und die in Fig. 43 dargestellte Struktur für die Komparatoreinheiten 562 und 564 verwendet werden. Die Aktivierungssteuersignale Φ1 und Φ2 werden zur Aktivierung der Komparatoren benutzt, die in der Komparatoreinheit enthalten sind, und zur Steuerung des Verriegelungsvorgangs eines Register-Latch benutzt.
Bei der in Fig. 77A dargestellten Struktur werden von der Summierungseinheit 560 ein Kennungswert für die Musterblöcke der rechten und der linken Seite in zeitlich-gemultiplexter Weise ausgegeben. In diesem Fall kann ein Selektor 566 zwischen der Summierungseinheit 560 und den Komparatoreinheiten 562 und 564 gebildet sein, der von einem Steuersignal ΦC abhängig ist, um den Signalübertragungspfad umzuschalten, wie in Fig. 77B dargestellt ist, so daß der Vergleichsbetrieb sichergestellt ist. Der Selektor 566 schaltet den Signalübertragungspfad unter der Steuerung des Steuersignals ΦC entsprechend dem Kennungswert der Musterblöcke der rechten und linken Seite, um den Kennungswert von der Summierungseinheit 560 den entsprechenden Komparatoreinheiten der rechten oder linken Seite 562 und 564 zuzuführen.
Wenn der Elementprozessor zwei Absolutdifferenzschaltungen aufweist, wie in Fig. 76 dargestellt ist, so kann die Summierungseinheit 560 zwei Summierungsschaltungen enthalten. In diesem Fall werden von der Summierungseinheit 560 Kennungswerte für die Musterblöcke der rechten Seite und der linken Seite parallel ausgegeben. Ein Multiplexer zum Auswählen eines Absolutdifferenzschaltungsgruppe (links/rechts) kann im Eingangsabschnitt der Summierungseinheit 560 gebildet sein.
Fig. 78 zeigt die Struktur zum parallelen Ausführen der Erfassung eines Bewegungsvektors mit gebrochener Genauigkeit für zwei Musterblöcke.
Wie in Fig. 78 dargestellt ist, weist die Vorrichtung zum Erfassen eines Bewegungsvektors mit gebrochener Genauigkeit Pufferspeicher 580 und 582 zum Speichern der Suchfensterdaten, die zur Erfassung eines Bewegungsvektors mit gebrochener Genauigkeit erforderlich sind, unter den Suchfensterdaten, die vom Prozessorfeld zur Erfassung eines Bewegungsvektors mit ganzzahliger Genauigkeit geliefert werden, ein Berechnungsmittel 584 für einen Bewegungsvektor mit gebrochener Genauigkeit zum Empfangen der Suchfensterdaten vom Pufferspeicher 580 und der Musterblockdaten der linken Seite zum Bestimmen eines Bewegungsvektors mit gebrochener Genauigkeit, und ein Berechnungsmittel 586 zum Empfangen der Suchfensterdaten vom Pufferspeicher 582 und der Musterblockdaten der rechten Seite zum Bestimmen eines Bewegungsvektors mit gebrochener Genauigkeit auf.
Die Pufferspeicher 580 und 582 führenden Schreibbetrieb von Suchfensterdaten in Abhängigkeit von Schreibsteuersignalen ΦA und ΦB aus. Die Steuersignale ΦA und ΦB werden von den Komparatoreinheiten 564 bzw. 562 erzeugt. Eine Struktur ähnlich der für die zweite Ausführungsform beschriebenen Struktur wird für die Pufferspeicher 580 und 582 verwendet. Die im Pufferspeicher 580 gespeicherten Daten werden für die Bestimmung eines Bewegungsvektors mit ganzzahliger Genauigkeit für den Musterblock der linken Seite sequentiell ausgelesen, und die im Pufferspeicher 582 gespeicherten Daten werden für die Bestimmung eines Bewegungsvektors für den Musterblock der rechten Seite ausgelesen. Die Struktur ähnlich der für die zweite Ausführungsform beschriebenen Struktur wird für die Berechnungsmittel 584 und 586 für einen Bewegungsvektor mit gebrochener Genauigkeit verwendet. Der Betrieb der Berechnungsmittel 584 und 586 für einen Bewegungsvektor mit gebrochener Genauigkeit ist ähnlich dem Betrieb, der für die zweite Ausführungsform beschrieben worden ist. Details werden nicht wiederholt.
Die Musterblockdaten der rechten Seite und die Musterblockdaten der linken Seite weisen für die Ausgabezeit eine Abweichung von einem Zyklus entsprechend 16 horizontalen Komponenten auf. Für den Fall, daß sowohl die Musterblockdaten der rechten Seite als auch der linken Seite jeweils nach 16 Zyklen horizontaler Komponenten aktualisiert werden, werden Puffermittel für die Musterblockdaten der rechten Seite und der linken Seite gebildet, um deren Ausgabezeiten abzustimmen. In diesem Fall tritt eine Zeitabweichung während der Bewegungsvektor-Bestimmungsperiode für die Musterblöcke der rechten und linken Seite auf. In ähnlicher Weise tritt eine Zeitabweichung für die Berechnung des Bewegungsvektors mit gebrochener Genauigkeit auf. In diesem Fall kann das Berechnungsmittel für den Bewegungsvektor mit gebrochener Genauigkeit gemeinsam für die Musterblöcke der rechten und der linken Seite benutzt werden.
Fig. 79 zeigt eine Modifikation der Struktur des Bewegungsvektor- Erfassungsmittels mit gebrochener Genauigkeit von Fig. 78. Wie in Fig. 79 dargestellt ist, weist die Struktur zur Erfassung eines Bewegungsvektors mit gebrochener Genauigkeit einen Pufferspeicher 590 zum Speichern von Musterblockdaten der linken Seite, Pufferspeicher 592 und 594 zum Speichern von Suchfensterdaten in Abhängigkeit von den Steuersignalen ΦA bzw. ΦB, einen Pufferspeicher 596 zum Speichern von Musterblockdaten der rechten Seite, einen Selektor 598 zum Auswählen eines Satzes von Musterdaten und Suchfensterdaten aus den Daten, die von den Pufferspeichern 590, 592, 594 und 596 ausgelesen werden, und ein zweites Berechnungsmittel 599 zum Erfassen eines Bewegungsvektors mit gebrochener Genauigkeit entsprechend den Musterdaten und Suchfensterdaten, die vom Selektor 598 geliefert werden, auf.
Der Selektor 598 wählt bei der Bestimmung eines Bewegungsvektors mit gebrochener Genauigkeit für den Musterblock der linken Seite die in den Pufferspeichern 590 und 592 gespeicherten Daten aus. Bei der Bestimmung eines Bewegungsvektors mit gebrochener Genauigkeit für den Musterblock der rechten Seite wählt der Selektor 598 die aus den Pufferspeichern 594 und 596 gelesenen Daten aus. Das zweite Berechnungsmittel 599 bestimmt einen Bewegungsvektor mit gebrochener Genauigkeit entsprechend den zugeführten Musterdaten und den Suchfensterdaten.
Die Verwendung der Pufferspeicher 590, 592, 594 und 596 stellt die Erfassung eines Bewegungsvektor mit gebrochener Genauigkeit für die Musterblöcke der linken und rechten Seite sicher. Wie in Fig. 80 dargestellt ist, kann die Erfassung eines Bewegungsvektor mit gebrochener Genauigkeit für die Musterblöcke der linken und rechten Seite nach Art einer Pipeline parallel zur Bestimmung eines Bewegungsvektor mit ganzzahliger Genauigkeit für die Musterblöcke der linken und rechten Seite ausgeführt werden. Entsprechend dieser Struktur kann man ein effizienteres Bewegungsvektor- Bestimmungsmittel mit geringerer Schaltungskomplexität erzielen.
Bei der in Fig. 79 gezeigten Struktur ist die Auslesetaktung der Daten aus dem Pufferspeicher nicht im genauesten Maße beschrieben worden. Ähnlich wie bei der Beschreibung der zweiten Ausführungsform zum Ausführen der Bestimmung eines Bewegungsvektors mit gebrochener Genauigkeit muß jedoch für die Musterblockdaten eine Struktur verwendet werden, bei der das Schreiben von Musterblockdaten entsprechend einem Bewegungsvektor-Bestimmungssignal von der Komparatoreinheit des Berechnungsmittels mit ganzzahliger Genauigkeit ausgeführt wird, und wobei Daten nach Abschluß des Schreibens aller Daten gelesen werden.
Durch Anwenden eines Pufferungsprozesses auch auf die Musterblockdaten mittels eines Pufferspeichers kann der Erfassungsvorgang eines Bewegungsvektors mit gebrochener Genauigkeit und der Erfassungsvorgang eines Bewegungsvektors mit ganzzahliger Genauigkeit nach Art einer Pipeline ausgeführt werden, um einen Bewegungsvektor mit hoher Geschwindigkeit zu erfassen, wie in Fig. 80 dargestellt ist. Fig. 80 zeigt ein Beispiel für eine Folge zur Erfassung eines Bewegungsvektors mit ganzzahliger Genauigkeit und eines Bewegungsvektors mit gebrochener Genauigkeit für die Makroblöcke #1 bis #6.
Ausführungsform 4
In der Speichermedium-Codierungstechnik wird ein Bildsignal bei der Bildverarbeitung keiner Beschränkung hinsichtlich der Zeitachse unterworfen. Der Grund dafür ist, daß das Bildsignal in einem Speichermedium wie z. B. CD-ROM gespeichert wird. Für den Fall der Bewegungskompensation bei Bildern für Speichermedien sind drei Bewegungskompensationsarten möglich: (i) Vorwärtsbewegungskompensation der Vorhersage der Gegenwart aus der Vergangenheit, (ii) Rückwärtsbewegungskompensation der Vorhersage der Zukunft aus der Gegenwart und (iii) Interpolationsbewegungskompensation der Vorhersage der Gegenwart aus der Vergangenheit und Zukunft. Die Vorwärts- und Rückwärtsbewegungskompensation können die Strukturen der Ausführungsformen 1 bis 3 verwenden, weil ein Referenzbild und das gegenwärtige Bild in der unidirektionalen Vorhersage verwendet werden (im folgenden als "unidirektionale Vorhersage" bezeichnet).
Die Interpolationsbewegungskompensation erfordert Referenzbilder der Vergangenheit und der Zukunft sowie das gegenwärtige Bild. Bei der Interpolationsbewegungskompensation werden die zwei Referenzbilder (Referenzbild der Vergangenheit und Referenzbild der Zukunft) zusammengeführt, wobei der zeitliche Abstand zwischen den zwei Referenzbildern und dem gegenwärtigen Referenzbild in Betracht gezogen wird. Unter Verwendung des zusammengeführten Referenzbildes (Block) wird der Erwartungswert für die Bewegungskompensation des gegenwärtigen Bildes ermittelt. Um einen Bewegungsvektor für das zusammengeführte Referenzbild (Block) zu ermitteln, muß aus dem Bewegungsvektor, der aus dem Makroblock des Referenzbildes der Vergangenheit erhalten wird, und dem Bewegungsvektor, der aus dem Makroblock des Referenzbildes der Zukunft erhalten wird, ein optimaler Bewegungsvektor bestimmt werden. Ein derartiger Prozeß wird z. B. für ein B-Bild im Motion Picture Image Coding Standard for Storage Media of MPEG (Motion Picture Image Coding Experts Group) ausgeführt (Standard für Speichermedien für die Codierung bewegter Bilder der MPEG).
Obwohl die Anwendung nicht auf ein B-Bild beschränkt ist wird im folgenden als vierte Ausführungsform eine Struktur zur Erfassung eines Bewegungsvektors durch Interpolationsvorhersage beschrieben.
Wie in Fig. 81 dargestellt ist, weist ein Bewegungsvektor- Bestimmungsmittel für Interpolationsvorhersage eine erste Suchbereichdaten-Speichereinheit 1001 zum Speichern der Pixeldaten eines ersten Speicherbereichs, eine Musterdaten-Speichereinheit 1000 zum Speichern von Pixeldaten des Musters des gegenwärtigen Bildes, und eine zweite Suchbereichdaten-Speichereinheit 1002 zum Speichern der Pixeldaten eines zweiten Speicherbereichs auf. Die erste und die zweite Suchbereichdaten-Speichereinheit 1001 und 1002 können Bildspeicher zum Speichern der Pixeldaten des ersten und zweiten Referenzbildes sein. Die Musterdaten-Speichereinheit 1000 kann ein Bildspeicher zum Speichern der Pixeldaten des gegenwärtigen Bildes sein. Das erste oder das zweite Referenzbild ist das Bild der Vergangenheit und das andere ist das Bild der Zukunft. Für den Fall einer Struktur, die durch Zusammenführen einer Mehrzahl von Bildern in unidirektionaler Weise eine Bewegungskompensation ausführt, können das erste und zweite Referenzbild auf der Zeitachse in derselben Richtung bezüglich des gegenwärtigen Bildes angeordnet sein.
Das Bewegungsvektor-Bestimmungsmittel für Interpolationsvorhersage weist ferner eine erste Bewegungserfassungseinheit 1003 für unidirektionale Vorhersage zum Empfangen der Musterblock-Pixeldaten von der Datenspeichereinheit 1000 und der Suchbereichdaten (Suchfensterdaten) von der ersten Suchbereichdaten-Speichereinheit 1001 zum Bestimmen eines ersten Bewegungsvektors mva und eine zweite Bewegungserfassungseinheit 1004 für unidirektionale Vorhersage zum Bestimmen eines zweiten Bewegungsvektors aus den Musterblock- Pixeldaten von der Datenspeichereinheit 1000 und den Suchbereichdaten, die von der zweiten Suchbereichdaten- Speichereinheit 1002 ausgelesen werden, auf.
Die erste Bewegungserfassungseinheit 1003 für unidirektionale Vorhersage weist einen Elementprozessor auf, der in der ersten bis dritten Ausführungsform verwendet wird. Die erste Bewegungserfassungseinheit 1003 für unidirektionale Vorhersage weist eine erste Rechenschaltung 1011 zum Ausführen eines Block-Matching- Prozesses für die angelegten Suchbereichdaten und Musterblockdaten, um einen Bewegungsvektor mva und einen Kennungswert eva zu bestimmen, und einen ersten Pufferspeicher 1013 zum Speichern von Suchfenster-Blockdaten entsprechend einem Bewegungsvektor, der von der ersten Rechenschaltung 1011 bestimmt wird, auf.
Der Pufferspeicher 1013 weist eine Struktur ähnlich derjenigen auf, die bei der zweiten Ausführungsform zur Erfassung eines Bewegungsvektors mit gebrochener Genauigkeit benutzt wird. Genauer gesagt speichert der erste Pufferspeicher 1013 Suchfenster- Pixeldaten, die sequentiell aus der ersten Rechenschaltung 1011 ausgeschoben werden. Der erste Pufferspeicher 1013 kann eine Speicherkapazität aufweisen, die ausreicht, alle Pixeldaten der Suchbereiches zu speichern, und er kann eine Speicherkapazität aufweisen, die ausreicht, die Pixeldaten eines Suchfensterblocks zu speichern. Das Lesen und Schreiben von Pixeldaten in den Pufferspeicher 1013 wird z. B. unter Verwendung des in Fig. 53 gezeigten Steuersystems ausgeführt. Es sei bemerkt, daß die Randpixel des Suchfensterblocks zur Erfassung eines Bewegungsvektors mit ganzzahliger Genauigkeit nicht erforderlich sind.
Die zweite Bewegungserfassungseinheit 1004 für unidirektionale Vorhersage weist eine ähnliche Struktur wie die erste Bewegungserfassungseinheit 1003 für unidirektionale Vorhersage auf und umfaßt eine zweite Rechenschaltung 1012 und einen zweiten Pufferspeicher 1014. Die zweite Bewegungserfassungseinheit 1004 für unidirektionale Vorhersage ermittelt einen Bewegungsvektor mvb und einen Kennungswert evb durch Anwenden eines Block-Matching-Prozesses auf die zugeführten Suchbereich-Pixeldaten und die Musterblockdaten. Der zweite Pufferspeicher 1014 empfängt Suchfensterdaten von der zweiten Rechenschaltung 1012, um die Suchfensterblock-Pixeldaten entsprechend dem Bewegungsvektor mvb zu speichern. Der zweite Puffer kann so implementiert sein, daß er alle Pixeldaten im Suchbereich speichert und nur die Suchfenster-Blockdaten entsprechend dem Bewegungsvektor mvb ausgibt.
Suchfenster-Blockdaten entsprechend den Bewegungsvektoren mva und mvb vom ersten und zweiten Pufferspeicher 1013 und 1014 als Teilreferenz-Bilddaten RPa und RPb werden ausgelesen und zusammen mit den Bewegungsvektoren mva und mvb sowie den Kennungswerten eva und evb an das Bewegungsbestimmungsmittel 1005 für Interpolationsvorhersage angelegt.
Die erste und zweite Rechenschaltung 1011 und 1012 weisen ein Prozessorfeld, eine Summierungseinheit und eine Komparatoreinheit ähnlich der bei der ersten bis dritten Ausführungsform dargestellten Struktur auf und führen eine Berechnung eines Kennungswertes und die Erfassung eines Bewegungsvektors in paralleler Weise entsprechend einem ähnlichen Verfahren aus. Der erste und zweite Pufferspeicher 1013 und 1014 speichert Suchfenster-Pixeldaten, die aus der ersten und zweiten Rechenschaltung 1011 bzw. 1012 ausgeschoben werden.
Der erste und zweite Pufferspeicher 1013 und 1014 reagiert auf ein Steuersignal von der Komparatoreinheit, die in der ersten und zweiten Rechenschaltung 1011 und 1012 vorhanden ist, um Suchfensterblock-Pixeldaten für einen Verschiebungsvektor zu speichern, der einen Kandidaten für einen Bewegungsvektor darstellt (wenn die Speicherkapazität dem Suchfensterblock entspricht). In der Komparatoreinheit wird das zum Signal, das zum Zeitpunkt der Aktualisierungsfestlegung eines Verschiebungsvektors erzeugt wird, als Datenschreib-Steuersignal verwendet. Weil der Wert, der das erste Pixel des Suchfensterblocks darstellt, aus der Rechenschaltung ausgeschoben wird, kann der Pixelwert eines Suchfensterblocks entsprechend einem Verschiebungsvektor, der einen Bewegungsvektorkandidaten darstellt, stets durch Rückstellen eines Adreßsignals in Abhängigkeit von einem Steuersignal von der Komparatoreinheit gespeichert werden. Beim Auslesen von Daten werden Daten aus der Startadresse (Rückstelladresse) gelesen, nachdem ein Bewegungsvektor-Bestimmungszyklus abgeschlossen ist. Dieses Steuerverfahren ist dem Verfahren ähnlich, das unter Bezugnahme auf Fig. 55 beschrieben worden ist. (Block 48 in Fig. 54 kann als Suchfensterblock angenommen werden. Ein Verzögerungsmittel für das Randpixel ist nicht notwendig.)
Wenn der erste und zweite Pufferspeicher 1013 und 1014 alle Pixeldaten des Suchbereichs speichert, kann der Wert eines Bewegungsvektors als Startadresse beim Auslesen der Daten benutzt werden (wenn der Bewegungsvektor als Zählwert des Zählers ausgedrückt wird; siehe Fig. 43). Durch Ausführen eines Adreßüberspringvorgangs kann das Auslesen unnötiger Suchfenster- Pixeldaten verhindert werden. Der Betrieb der ersten und zweiten unidirektionalen Bewegungserfassungseinheiten 1003 und 1004 ist ähnlich dem Betrieb der ersten bis dritten Ausführungsformen, und Details des Betriebs werden nicht wiederholt.
Im folgenden werden Struktur und Betrieb eines Bewegungsbestimmungsmittels 1005 zur Interpolationsvorhersage beschrieben. Bei der Bestimmung eines Interpolationsbewegungsvektors werden auch die Teilreferenzbilddaten im Pufferspeicher ausgegeben. Diese ausgegebenen Teilreferenzbilddaten werden zur Vorhersagewerterzeugung verwendet.
Wie in Fig. 82 dargestellt ist, weist ein Bewegungsbestimmungsmittel 1005 zur Interpolationsvorhersage eine Referenzbild- Erzeugungsschaltung 1020 für die Interpolationsvorhersage, die Teilreferenzbilddaten (die Suchfenster-Blockdaten des ersten und zweiten Suchbereichs entsprechend den Bewegungsvektoren mva und mvb) vom ersten und zweiten Pufferspeicher zum Erzeugen eines Referenzbildes (im weiteren als zusammengeführter Suchfensterblock bezeichnet), das für die Interpolationsvorhersage erforderlich ist, einen Pufferspeicher 1021 zum Speichern der Musterblockdaten TP, eine Bewegungsvektor-Bestimmungsbetriebseinheit 1022 für die Interpolationsvorhersage zum Ausführen eines Block-Matchings zwischen den zusammengeführten Suchfensterblock-Pixeldaten von der Referenzbild-Erzeugungsschaltung 1020 für die Interpolationsvorhersage und den Musterblock-Pixeldaten, die aus dem Pufferspeicher 1021 ausgelesen werden (in diesem Fall die Berechnung eines Kennungswertes, der die Korrelation zwischen dem zusammengeführten Suchfensterblock und dem Musterblock angibt), zum Erzeugen eines Interpolationsvorhersage-Kennungswertes evc, und eine Bewegungsvektor-Bestimmungsschaltung 1024 zum Erfassen eines optimalen Bewegungsvektors aus dem Interpolationsvorhersage­ Kennungswert evc von der Bewegungsvektor-Bestimmungsbetriebseinheit 1022 für die Interpolationsvorhersage und dem ersten und zweiten Kennungswert eva und evb von den ersten und zweiten Rechenschaltungen auf.
Der Pufferspeicher 1021 speichert die Musterdaten von der Musterdaten-Speichereinheit 1000, die in Fig. 81 gezeigt ist, parallel zum Laden der ersten und zweiten Rechenschaltungen 1011 und 1012. Das Auslesen der Daten aus dem Pufferspeicher 1021 wird synchron zum Datenlesen aus dem ersten und zweiten Pufferspeicher 1013 und 1014 ausgeführt.
Die Referenzbild-Erzeugungsschaltung 1020 für die Interpolationsvorhersage führt eine vorbestimmte Operation hinsichtlich der zugeführten Pixeldaten RPa und RPb aus. Diese Operation kann das arithmetische Mittel (RPa+RPb)/2 sein. Alternativ kann eine gewichtete Mittelung wie z. B. (m·RPa+n·RPb)/(m+n) ausgeführt werden. Die Gewichte m und n werden durch den zeitlichen Abstand zwischen dem gegenwärtigen Bild und den jeweiligen ersten und zweiten Referenzbildern (die den ersten und zweiten Suchbereich enthalten) bestimmt. Das Gewicht steigt für ein Referenzbild mit geringem zeitlichem Abstand an. Der Grund dafür ist, daß die Änderung gegenüber dem gegenwärtigen Bild mit einem verminderten Zeitabstand sinkt.
Die Bewegungsvektor-Bestimmungsbetriebseinheit 1022 für Interpolationsvorhersage ermittelt z. B. eine Summe der Absolutdifferenzen der zusammengeführten Suchfenster-Pixeldaten RPc von der Schaltung 1020 und der Musterblock-Pixeldaten TP, um einen Kennungswert evc zu erzeugen. Als Alternative zur Berechnung der Summe der Absolutdifferenzen kann eine Berechnung wie z. B. die Summe der quadrierten Differenzen ausgeführt werden. Jede Berechnung, die zu einem Kennungswert führt, der die Korrelation der Blöcke angibt, ist annehmbar. Die zusammengeführten Pixeldaten RPc von der Schaltung 1020 und die Musterblockdaten vom Pufferspeicher 1021 werden der Betriebseinheit 1022 pixelweise zugeführt, wodurch die vorbestimmte Berechnung sequentiell ausgeführt wird. Wenn diese Berechnung abgeschlossen ist, wird ein Kennungswert evc erzeugt.
Die Bewegungsvektor-Bestimmungsschaltung 1024 vergleicht die Größen der Kennungswerte evc von der Betriebseinheit 1022 und die Kennungswerte eva und evb von der ersten und zweiten Rechenschaltung, um einen Bewegungsvektor entsprechend dem minimalen Kennungswert als optimalen Bewegungsvektor MV für die Interpolationsvorhersage zu liefern.
Die Bestimmungsschaltung 1024 liefert sequentiell Bewegungsvektoren mva und mvb in einer vorbestimmten Reihenfolge (oder parallel), wenn der Kennungswert evc von der Betriebseinheit 1022 minimal ist. Die Bestimmungsschaltung 1024 kann so implementiert werden, daß sie einen Kennungswert EV entsprechend dem optimalen Bewegungsvektor MV liefert.
Weil das Auslesen eines Referenzbildes und die Berechnung eines Bewegungsvektors mit Interpolationsvorhersage durch die oben beschriebene Struktur möglich ist, wird der Zugriff auf den Bildspeicher, der das Referenzbild speichert, eliminiert. Daher kann die Berechnung eines Bewegungsvektors mit Interpolationsvorhersage mit hoher Geschwindigkeit ausgeführt werden. Teilreferenzbilder der Pufferspeicher 1013 und 1014 werden zusammen mit der Bestimmung des Bewegungsvektors MV geliefert.
Wenn nur die Erfassung eines Bewegungsvektors mit Interpolationsvorhersage erforderlich ist, kann eine Struktur benutzt werden, bei der Pixeldaten durch die Referenzbild- Erzeugungsschaltung 1020 für die Interpolationsvorhersage zusammengeführt (interpoliert) werden, die aus dem ersten und zweiten Suchbereich ausgelesen werden, um die zusammengeführten Pixeldaten und die Musterblock-Pixeldaten dem Prozessorfeld (mit einer Struktur ähnlich der Struktur der ersten und zweiten Rechenschaltung) zuzuführen und einen Bewegungsvektor zu bestimmen. Durch Verwenden der ersten unidirektionalen Bewegungserfassungseinheit 1003 zum Erfassen eines Bewegungsvektors mit Vorwärtsvorhersage und der zweiten unidirektionalen Bewegungserfassungseinheit 1004 zum Erfassen eines Bewegungsvektors mit Rückwärtsvorhersage kann die Bestimmung eines Bewegungsvektors für die Interpolationsvorhersage (bidirektionale Vorhersage) realisiert werden, ohne die Vorrichtungskomplexität zu erhöhen. Im folgenden wird die Struktur einer jeden Komponente beschrieben.
Fig. 83 zeigt die Struktur einer Referenzbild-Erzeugungsschaltung für Interpolationsvorhersage und eine Bewegungsvektor- Bestimmungsbetriebseinheit für Interpolationsvorhersage nach Fig. 82. Die Referenzbild-Erzeugungsschaltung 1020 für Interpolationsvorhersage weist eine Mittelungsschaltung 1030 zum Bestimmen des Mittels der Pixeldaten PXa und PXb der Teilreferenzbilder RPa und RPb auf. Die Mittelungsschaltung 1030 führt die Berechnung von (v·PXa+wPXb)/(v+w) aus, wobei v=w erlaubt ist, und v und w können entsprechend dem zeitlichen Abstand hinsichtlich des gegenwärtigen Bildes (Musterblock) bestimmt sein. Die Mittelungsschaltung 1030 kann aus einer Multiplikationsschaltung (Multiplikation der Koeffizienten v und w), einer Addiererschaltung und einer Dividiererschaltung gebildet sein. Alternativ kann sie unter Verwendung eines ROM (mit den Werte PXa und PXb als Adresse) gebildet werden.
Die Betriebseinheit 1022 weist eine Absolutdifferenzschaltung 1031 zum Bestimmen der absoluten Differenz |TPa-PXc| zwischen den zusammengeführten Pixeldaten PXc von der Mittelungsschaltung 1030 und den Musterblock-Pixeldaten TPa sowie einen Akkumulator 1032 zum Akkumulieren der Ausgaben der Absolutdifferenzschaltung 1031, um einen Kennungswert evc zu erzeugen, auf. Für die Komponente 1031, die in der Betriebseinheit 1022 benutzt wird, kann eine Struktur ähnlich der für Ausführungsform 1 beschriebenen (siehe Fig. 26) verwendet werden. Eine Struktur mit einem allgemeinen Register und ein Addierer können für den Akkumulator 1032 verwendet werden.
Die Betriebseinheit 1022 kann aus einer Summierungsschaltung für quadrierte Differenzen gebildet werden.
Fig. 84 zeigt die Struktur der Bewegungsvektor-Bestimmungseinheit 1024 von Fig. 82. Wie in Fig. 84 dargestellt ist, weist die Bewegungsvektor-Bestimmungseinheit 1024 eine Minimalwertschaltung 1035 zum Bestimmen des Minimalwertes MIN{eva, evb, evc} aller Kennungswerte eva, evb und evc und eine Auswahlschaltung 1036, die von der Minimalwertinformation von der Minimalwertschaltung 1035 abhängig ist, zum Auswählen von einem oder beiden Bewegungsvektoren mva und mvb auf. Die Auswahlschaltung 1036 wählt den Bewegungsvektor mva oder mvb aus, wenn die Minimalwertschaltung 1035 den Kennungswert eva oder evb auswählt, und die Auswahlschaltung 1036 wählt beide Bewegungsvektoren mva und mvb aus, wenn die Minimalwertschaltung 1035 den Kennungswert evc auswählt.
Fig. 85 zeigt die Strukturen der Minimalwertschaltung und der Auswahlschaltung von Fig. 84 im Detail. Wie in Fig. 85 dargestellt ist, weist die Minimalwertschaltung 1035 Register 1041 und 1042 zum Speichern der Kennungswerte eva bzw. evb, einen Komparator 1043 zum Vergleichen der Größe der Kennungswerte eva und evb, die in den jeweiligen Registern 1041 und 1042 gespeichert sind, und eine Auswahlschaltung 1044, die von der Ausgabe des Komparators 1043 abhängig ist, zum Durchlassen von einem der Kennungswerte eva und evb, die in den Registern 1041 und 1042 gespeichert sind, auf.
Der Komparator 1043 liefert eine Signal eines ersten Logikpegels (z. B. "H"), wenn der Kennungswert eva größer ist, ansonsten ein Signal mit einem zweiten Logikpegel (z. B. "L"). Die Auswahlschaltung 1044 wählt beim Empfang des Signals des ersten Logikpegels den Kennungswert evb vom Register 1042 und beim Empfang des Signals des zweiten Logikpegels den Kennungswert eva vom Register 1041 aus. Daher wird von der Auswahlschaltung 1044 der kleinere Kennungswert MIN{eva, evb} der Kennungswerte eva und evb geliefert.
Die Minimalwertschaltung 1035 weist ferner ein Register 1045 zum zeitweisen Speichern eines Kennungswertes evc (eine Kennungswertes für die Interpolationsvorhersage), einen Komparator 1046 zum Vergleichen der Ausgabe der Auswahlschaltung 1044 mit dem Kennungswert evc vom Register 1045, und eine Auswahlschaltung 1047, die von der Ausgabe des Komparators 1046 abhängig ist, zum Durchlassen von entweder der Ausgabe der Auswahlschaltung 1044 oder dem Kennungswert evc vom Register 1045 auf.
Die Komparatorschaltung 1046 liefert ein Signal des ersten Logikpegels, wenn die Ausgabe der Auswahlschaltung 1044 größer als der Kennungswert evc ist, ansonsten ein Signal des zweiten Logikpegels. Die Auswahlschaltung 1047 wählt den Kennungswert evc vom Register 1045, wenn ein Signal des ersten Logikpegels vom Komparator 1046 geliefert wird, und die Ausgabe der Auswahlschaltung 1044, wenn ein Signal des zweiten Logikpegels geliefert wird, aus. Genauer gesagt wird ein Minimalwert MIN{evc, MIN(eva, evb)}=MIN(eva, evb, evc) von der Auswahlschaltung 1047 als Kennungswert EV ausgegeben.
Wenn die Werte der beiden Eingaben im jeweiligen der Komparatoren 1043 und 1046 gleich sind, so kann eine der beiden entsprechend einer vorbestimmten Priorität ausgewählt werden.
Die Auswahlschaltung 1036 weist Register 1050 und 1051 zum zeitweisen Speichern der Bewegungsvektoren mva und mvb, eine Auswahlschaltung 1052, die von der Ausgabe des Komparators 1043 in der Minimalwertschaltung 1035 abhängig ist, zum Durchlassen von einer der Ausgaben der Register 1050 und 1051, eine Gatterschaltung 1053, die von der Ausgabe des Komparators 1046 abhängig ist, zum selektiven Durchlassen der Ausgabe der Auswahlschaltung 1052, und ein Register 1054, das von der Ausgabe des Komparators 1046 abhängig ist, zum sequentiellen oder parallelen Bereitstellen der Bewegungsvektoren mva und mvb aus den Registern 1050 und 1051 auf.
Die Auswahlschaltung 1052 führt einen Betrieb ähnlich dem der Auswahlschaltung 1044 aus, um einen Bewegungsvektor entsprechend dem ausgewählten (kleineren) Kennungswert auszugeben. Die Gatterschaltung 1053 erreicht einen Ausgangszustand hoher Impedanz, wenn der Komparator 1046 ein Signal des ersten Logikpegels liefert, das den Kennungswert eva auswählt, und die Ausgabe der Auswahlschaltung 1052 liefert, wenn ein Signal mit dem zweiten Logikpegel vom Komparator 1046 abgegeben wird.
Das Register 1054 arbeitet komplementär zur Gatterschaltung 1053. Das Register 1054 liefert die Bewegungsvektoren mva und mvb von den Registern 1050 und 1051, wenn ein Signal des ersten Logikpegels angelegt wird, und erreicht einen Ausgangszustand hoher Impedanz, wenn ein Signal des zweiten Logikpegels zugeführt wird.
Fig. 86 zeigt eine Modifikation der Referenzbild-Erzeugungsschaltung für Interpolationsvorhersage. Zusätzlich zu der in Fig. 83 dargestellten Struktur weist diese Bilderzeugungsschaltung 1022 eine Mittelungsschaltung 1060 zum Bestimmen der Mittelwerte der Bewegungsvektoren mva und mvb von der ersten und zweiten Berechnungsschaltung auf. Die Mittelungsschaltung 1060 weist eine Struktur ähnlich der Struktur der Mittelungsschaltung von Fig. 83 auf und bestimmt den Mittelwert der Pixeldaten. In Abhängigkeit vom Interpolationsvorhersage-Referenzbild wird auch der Bewegungsvektor interpoliert.
Die Auswahlschaltung 1036 wählt unter den Bewegungsvektoren mva, mvb und mvc einen Bewegungsvektor entsprechend dem minimalen Kennungswert aus, der durch die Minimalwertschaltung bestimmt wird. Die Struktur der in Fig. 86 dargestellten Auswahlschaltung wird durch eine Gatterschaltung implementiert, die selektiv den Inhalt des Registers 1054 von Fig. 85 entsprechend der Ausgabe des Komparators 1046 durchläßt.
Fig. 87 zeigt schematisch eine Modifikation der vierten Ausführungsform. Wie in Fig. 87 dargestellt ist, werden Teilreferenzbilddaten mit einem ersten und einem zweiten Suchfensterblock 1102 und 1104 entsprechend den Bewegungsvektoren mva und mvb im ersten und zweiten Pufferspeicher 1013 und 1014 gespeichert, die in Fig. 81 gezeigt sind. Die Teilreferenzbildblöcke 1101 und 1103 weisen erste und zweite Suchfensterblöcke 1102 und 1104 und jeweils deren Randpixel auf. Die Struktur zum Speichern solcher Teilreferenzbildblöcke 1102 und 1104 im ersten und zweiten Pufferspeicher 1013 und 1014 kann unter Verwendung der Struktur zur Berechnung eines Bewegungsvektors mit ganzzahliger Genauigkeit entsprechend der dritten Ausführungsform implementiert werden.
In der Referenzbild-Erzeugungsschaltung für Interpolationsvorhersage wird ein Mittelungsprozeß der Teilreferenzbilder 1103 und 1101 ausgeführt, um ein Interpolationsvorhersage-Referenzbild 1105 zu erzeugen, wodurch ein Bewegungsvektor des Musterblocks 1107 mit diesem Referenzbild 1105 als Suchbereich bestimmt wird. Mit anderen Worten wird die Berechnung eines Kennungswertes für jeden zusammengeführten Suchfensterblock 1106 im zusammengeführten Referenzbild 1105 ausgeführt, um einen Bewegungsvektor auf der Basis der berechneten Kennungswerte zu bestimmen.
Das Verfahren kann so ausgeführt werden, daß Daten pixelweise aus jedem der Pufferspeicher 1013, 1014 und 1021 ausgelesen und zusammengeführt werden, um ein zusammengeführtes Suchfenster zu erzeugen und die Berechnung eines Kennungswertes auszuführen. Weil der Zugriff auf einen Bildspeicher für die Interpolationsvorhersage nicht erforderlich ist, kann die Berechnung eines Bewegungsvektors parallel zur Berechnung eines Vorhersagesignals durch die Interpolationsvorhersage ausgeführt werden. Daher kann die Interpolationsbewegungskompensation mit hoher Geschwindigkeit ausgeführt werden. Alternativ kann die Berechnung eines Kennungswertes durch eine Verarbeitungseinheit mit dem Prozessorfeld, das für die Ausführungsformen 1 bis 3 gezeigt ist, ausgeführt werden. Musterblock-Pixeldaten werden in einem Prozessorfeld gespeichert und die zusammengeführten (interpolierten) Pixeldaten, die durch Mittelung der Pixeldaten vom ersten und zweiten Pufferspeicher 1013 und 1014 erhalten werden, werden zum Prozessorfeld übertragen. Ein Bewegungsvektor und ein Kennungswert werden erhalten, wodurch ein Kennungswert evc mit den Kennungswerten eva und evb von der ersten und zweiten Verarbeitungseinheit 1003 und 1004 in der Bestimmungseinheit verglichen werden. In Abhängigkeit vom Berechnungsergebnis wird die Auswahl eines Bewegungsvektors ausgeführt.
Darüber hinaus können die in Fig. 88 gezeigten Musterblockdaten, die aus der Rechenschaltung 1011 oder 1012 (Rechenschaltung 1011 in Fig. 88) der unidirektionalen Vorhersagebewegungserfassungseinheit 1003 oder 1004 ausgeschoben werden, an das Bewegungsbestimmungsmittel 1005 mit Interpolationsvorhersage angelegt werden. In diesem Fall kann eine unidirektionale Vorhersagebewegungserfassung und eine Interpolationsvorhersagebewegungserfassung nach Art einer Pipeline ausgeführt werden, wie in Fig. 89 dargestellt ist.
Wie Fig. 89 zeigt, wird die Interpolationsvorhersage­ Bewegungserfassung (i) parallel zum Ausschieben des Musterblocks TP (TP1, TP2) ausgeführt, der zur unidirektionalen Vorhersagebewegungserfassung benutzt wird. Der erste und zweite Pufferspeicher 1013 und 1014 speichern die erforderlichen Suchfenster-Blockdaten. Durch Auslesen von Daten synchron zum Ausschieben der Musterblock-Pixeldaten aus den Pufferspeichern 1013 und 1014 kann dieser Pipeline-Vorgang realisiert werden. Bei diesem Vorgang speichern die Pufferspeicher 1013 und 1014 Suchfenster- Blockdaten und entsprechen einem Zustand, in dem die Randpixeldaten nicht gespeichert sind. Bei dieser Struktur ist der Pufferspeicher, der im Bewegungsbestimmungsmittel 1005 mit Interpolationsvorhersage gebildet ist, durch einen Puffer zum Einstellen der Zeitabstimmung ersetzt worden.
Bei der Interpolationsvorhersage-Bewegungserfassung (ii) nach Fig. 89 wird die Interpolationsvorhersage-Bewegungserfassung parallel zur Verarbeitung des Musterblocks in unidirektionaler Vorhersagebewegungserfassung ausgeführt. Die Musterblockdaten werden im Pufferspeicher gespeichert, um einer Verarbeitung unterworfen zu werden. Beim Ausschieben des Musterblocks TP werden die von der unidirektionalen Bewegungserfassungseinheit 1003 ausgeschobenen Musterblock-Pixeldaten in den Pufferspeicher der Bewegungserfassungseinheit für Interpolationsvorhersage geladen. Der Prozeß kann selbst dann mit hoher Geschwindigkeit ausgeführt werden, wenn das Teilreferenzbild für die Interpolationsvorhersage die Randpixel des Suchfensterblocks enthält.
Fig. 90 zeigt die Struktur einer Vorrichtung, die den Bewegungsvektor verwendet, der in der vierten Ausführungsform bestimmt wird. Genauer gesagt zeigt Fig. 90 die Struktur einer Quellencodierungsschaltung, die bei der Codierung eines bewegten Bildes benutzt wird. Wie in Fig. 90 dargestellt ist, weist eine Quellencodierungsschaltung eine Struktur auf, die ähnlich der in Fig. 93 gezeigten ist, und umfaßt einen Subtrahierer 1110, einen Orthogonaltransformierer (DCT) 1111, ein Quantisierungsmittel 1112, ein Invers-Quantisierungsmittel 1113, einen Invers- Orthogonaltransformierer (DCT) 1114 und einen Addierer 1115. Die Funktionen dieser Komponenten sind ähnlich denen der Fig. 93.
Die Quellencodierungsschaltung weist ferner einen Bildspeicher 1116 zum Empfangen und Speichern der Ausgabe des Addierers 1115 über einen Schalter SW3, einen Bildspeicher 1117 zum Empfangen und Speichern der gespeicherten Daten des Bildspeichers 1116, eine Rückwärtsbewegungs-Kompensierungsschaltung 1118 zum Ausführen einer Rückwärtsbewegungskompensation unter Verwendung der Daten, die im Bildspeicher 1116 gespeichert sind, eine Vorwärtsbewegungs- Kompensierungsschaltung 1120 zum Ausführen einer Vorwärtsbewegungskompensation unter Verwendung der Daten, die im Bildspeicher 1117 gespeichert sind, und eine Interpolationsbewegungs-Kompensierungsschaltung 1119 zum Ausführen einer Interpolationsbewegungskompensation unter Verwendung der Daten, die in den Bildspeichern 1116 und 1117 gespeichert sind, auf.
Die Rückwärtsbewegungs-Kompensierungsschaltung 1118 verwendet das Zukunftsbild, das im Bildspeicher 1116 gespeichert ist, als Referenzbild, um ein Kennungssignal entsprechend z. B. einem Bewegungsvektor mva zu erzeugen.
Die Vorwärtsbewegungs-Kompensierungsschaltung 1120 verwendet das Vergangenheitsbild, das im Bildspeicher 1117 gespeichert ist, als Referenzbild, um ein Kennungssignal entsprechend z. B. einem Bewegungsvektor mvb zu erzeugen.
Die Interpolationsbewegungs-Kompensierungsschaltung 1119 führt die Bilddaten zusammen, die aus dem Bildspeichern 1116 und 1117 gelesen oder von den Kompensierungsschaltungen 1118 und 1120 geliefert werden, um ein Referenzbild für die Erzeugung eines Kennungssignals entsprechend einem Bewegungsvektor MV zu bilden.
Die Ausgaben der Bewegungskompensierungsschaltungen 1118-1120 werden über einen Schalter SW4 dem Subtrahierer 1110 zugeführt. Der Subtrahierer 1110 empfängt ferner die Ausgabe der Pixel- Neuzuordnungsschaltung 1124. Entweder die Ausgabe des Subtrahierers 1110 oder der Neuzuordnungsschaltung 1124 wird vom Schalter SW1 ausgewählt und dem Orthogonaltransformierer 1111 zugeführt. Die Ausgabe des Schalters SW4 wird dem Addierer 1115 über einen Schalter SW2 zugeführt. Die Auswahl der Anschlüsse der Schalter SW1-SW4 wird durch eine Steuerschaltung 1122 ausgeführt.
Die Pixel-Neuzuordnungsschaltung 1124 ist gebildet, weil es notwendig ist, die Reihenfolge der verarbeiteten Bilder für bidirektionale Vorhersage zu unterscheiden, d. h. die Interpolationsvorhersage von der Bildreihenfolge der Originalbilder.
Bei der in der Zeichnung dargestellten Vorrichtung weist ein Bild im allgemeinen ein I-Bild, durch das nur eine Zwischenbildcodierung ausgeführt wird, ein P-Bild, durch das eine unidirektionale Vorhersage-(Zwischenbildvorhersage-)Codierung ausgeführt wird, und eine B-Bild, durch das eine Interpolationsvorhersage ausgeführt wird, auf. Bei der Codierung werden das I-Bild und dann das P-Bild vor dem B-Bild in der Bildfolge verarbeitet. Darauf folgt die Verarbeitung des B-Bilds unter Verwendung der Vergangenheits- und Zukunftsbilder I und P. Diese aufeinanderfolgende Verarbeitung wird durch die Pixel-Neuzuordnungsschaltung 1124 realisiert, und die Schalter SW1-SW4 wählen den Signalpfad entsprechend dem zu verarbeitenden Bild aus. Der Schalter SW1 wählt die Ausgabe der Pixel-Neuzuordnungsschaltung 1124 zum Zeitpunkt der Verarbeitung des I-Bildes aus. Hier sind die Schalter SW2 und SW3 offen. Die Kompensierungsschaltungen 1118 und 1120 können von der Interpolationskompensierungsschaltung 1119 gemeinsam benutzt werden, wie durch die gestrichelte Linie dargestellt ist, wobei die Schaltung 1119 den Detektor 1105 und Puffer 1013 und 1014 aufweist.
Diese Anordnung vermindert die Vorrichtungsgröße aufgrund der gemeinsamen Benutzung des Prozessorfeldes.
Im Vergleich zur Quellencodierungsschaltung der Fig. 90, erlaubt die Struktur nach der vierten Ausführungsform die Erzeugung der Bewegungsvektoren mva, mvb und MV mit einem gemeinsamen Prozessorfeld. Dadurch ist eine schnelle Bildverarbeitung möglich, weil die Anzahl der Zugriffe auf die Bildspeicher 1116 und 1117 für die Bewegungsvektorerfassung vermindert wird. Der Grund dafür ist, daß der Suchfensterblock (Teilreferenzbild) zusammen mit dem erfaßten Bewegungsvektor erzeugt wird. Die Pixeldaten dieses Teilreferenzbildes können als Kennungssignal verwendet werden.
Fig. 91 zeigt eine weitere Struktur nach der vierten Ausführungsform. Wie in Fig. 91 dargestellt ist, weist das Bewegungsvektor-Bestimmungsmittel eine erste Bewegungserfassungseinheit 1150 für unidirektionale Vorhersage, eine zweite Bewegungserfassungseinheit 1160 für unidirektionale Vorhersage und eine Bewegungserfassungseinheit 1170 für Interpolationsvorhersage auf.
Die erste Bewegungserfassungseinheit 1150 für unidirektionale Vorhersage weist eine erste Bewegungserfassungseinheit 1151 mit ganzzahliger Genauigkeit, die erste Suchfensterdaten und Musterdaten zum Bestimmen eines Bewegungsvektors mit ganzzahliger Genauigkeit durch einen Block-Matching-Prozeß und eines entsprechenden Kennungswertes empfängt, einen ersten Pufferspeicher 1152 zum Speichern von Suchfensterdaten Sa von der ersten Bewegungserfassungseinheit 1151 mit ganzzahliger Genauigkeit, und eine erste Bewegungserfassungseinheit 1153 mit höherer Genauigkeit, die einen Bewegungsvektor mvai, einen Kennungswert evai und Musterblockdaten TPa von der Bewegungserfassungseinheit 1151 empfängt, um einen Bewegungsvektor mva mit gebrochener Genauigkeit (höherer Genauigkeit) und einen Kennungswert zu bestimmen, auf.
Der erste Pufferspeicher 1152 speichert einen Suchfensterblock entsprechend einem Bewegungsvektor mvai mit ganzzahliger Genauigkeit und Pixeldaten eines Bereichs mit den Randpixeln. Die erste Bewegungserfassungseinheit 1153 mit höherer Genauigkeit erzeugt einen Bewegungsvektor mva mit höherer Genauigkeit und einen entsprechenden Kennungswert eva unter Verwendung der Musterblockdaten TPa und der Pixeldaten des ersten Pufferspeichers 1152. Struktur und Betrieb der ersten Bewegungserfassungseinheit 1150 für unidirektionale Vorhersage sind ähnlich denen der Ausführungsform 2, die in den Fig. 51-64 gezeigt ist.
Die zweite Bewegungserfassungseinheit 1160 für unidirektionale Vorhersage weist eine ähnliche Struktur wie die erste Bewegungserfassungseinheit 1150 für unidirektionale Vorhersage auf und umfaßt eine zweite Bewegungserfassungseinheit 1161 mit ganzzahliger Genauigkeit, die zweite Suchfensterdaten und Musterdaten empfängt, einen zweiten Pufferspeicher 1162 zum Speichern von Suchfensterdaten Sb von der Erfassungseinheit 1161 und eine zweite Bewegungserfassungseinheit 1163 mit höherer Genauigkeit zum Empfangen von Musterblockdaten TPb von der Bewegungserfassungseinheit 1161 und Suchfensterdaten vom zweiten Pufferspeicher 1162, um einen Bewegungsvektor mvb mit höherer Genauigkeit und einen entsprechenden Kennungswert evb zu bestimmen. Der Betrieb der zweiten Bewegungserfassungseinheit 1160 für unidirektionale Vorhersage ist ähnlich dem der zweiten Ausführungsform.
Die Bewegungserfassungseinheit 1170 für Interpolationsvorhersage empfängt Bewegungsvektoren mva und mvb höherer Genauigkeit, Kennungswerte eva und evb und Teilreferenzbilder RPa und RPb von der ersten und zweiten Bewegungserfassungseinheit 1150 bzw. 1160 für unidirektionale Vorhersage, um einen optimalen Bewegungsvektor MV für den Musterblock zu bestimmen. Ein entsprechender Kennungswert EV kann dem Bewegungsvektor MV zugeordnet sein. Die Struktur der Bewegungserfassungseinheit 1170 für Interpolationsvorhersage ist ähnlich der in Fig. 82 dargestellten. Der Betrieb zur Erfassung eines Bewegungsvektors mit höherer Genauigkeit unterscheidet sich aber. Unter Bezugnahme auf Fig. 82 wird im folgenden der Betrieb kurz beschrieben.
In der Referenzbild-Erzeugungsschaltung 1020 mit Interpolationsvorhersage wird ein Interpolationsreferenzbild RPc aus den Teilreferenz-Bilddaten RPa und RPb erzeugt. Dieser Vorgang ist gleich wie für die ganzzahlige Genauigkeit. Die Bewegungsvektor- Bestimmungsbetriebseinheit 1022 für Interpolationsvorhersage ermittelt einen Bewegungsvektor mvc mit höherer Genauigkeit und einen entsprechenden Kennungswert evc aus den Musterblock-Pixeldaten vom Pufferspeicher 1021 und dem Interpolationsreferenzbild von der Schaltung 1020. Um die Erfassung mit höherer Genauigkeit auszuführen, weist die Bestimmungsbetriebseinheit 1022 z. B. die in Fig. 60 dargestellte Struktur auf.
Die Bewegungsvektor-Bestimmungsschaltung 1024 bestimmt den minimalen der Kennungswerte eva, evb und evc, um einen Bewegungsvektor entsprechend dem minimalen Kennungswert auszuwählen und auszugeben. Der minimale Kennungswert EV kann zusammen damit ausgegeben werden Gleichzeitig mit der Erfassung des Bewegungsvektors werden die in den Pufferspeichern 1152 und 1162 gespeicherten Teilreferenzbilder ausgelesen, um ein Referenzbild eines Bereichs entsprechend dem Bewegungsvektor MV und einen Kennungswert zu erzeugen.
Die zur Erfassung eines Bewegungsvektors für unidirektionale Vorhersage mit höherer Genauigkeit benutzten Pufferspeicher 1152 und 1162 können zur Bestimmung eines Bewegungsvektors für Interpolationsvorhersage verwendet werden. Daher kann die Erfassung eines Bewegungsvektors für Interpolationsvorhersage mit höherer Genauigkeit mit hoher Geschwindigkeit ausgeführt werden, ohne die Anzahl der Zugriffe auf den Bildspeicher und die Vorrichtungskomplexität zu erhöhen.
Ähnlich der Interpolationsbewegungserfassung mit ganzzahliger Genauigkeit können die Musterblockdaten von der Bewegungserfassungseinheit für unidirektionale Vorhersage 1150 oder 1160 zur Erfassungseinheit 1170 übertragen werden. In diesem Fall können die Erfassung eines Bewegungsvektors mit ganzzahliger Genauigkeit, eines Bewegungsvektors mit höherer Genauigkeit und eines Bewegungsvektors mit Interpolationsvorhersage nach Art einer Pipeline ausgeführt werden.
Für die Struktur der Interpolationsvorhersage-Bewegungserfassung mit höherer Genauigkeit ist die Modifikation anwendbar, die für die Bewegungsvektorerfassung mit Interpolationsvorhersage mit ganzzahliger Genauigkeit beschrieben worden ist.
Entsprechend der vorliegenden Erfindung können die Elementprozessoren in einem zweidimensionalen Feld angeordnet sein, und die Musterblockdaten sind im Prozessorfeld gespeichert, um einen Kennungswert zu berechnen, der zur Bestimmung eines Bewegungsvektors erforderlich ist. Es ist daher möglich, einen Bewegungsvektor mit niedriger Schaltungskomplexität und geringer Leistungsaufnahme zu bestimmen.
Weil die Elementprozessoren in einem Feld angeordnet sind und die Suchfensterdaten und Musterblockdaten in diesem Feld in unidirektionaler Weise verschoben werden, können Daten, die zur Erfassung eines Bewegungsvektors mit gebrochener Genauigkeit erforderlich sind, unter Verwendung der Daten verarbeitet werden, die zur Erfassung eines Bewegungsvektors mit ganzzahliger Genauigkeit benutzt werden. Das ermöglicht die Bestimmung eines Bewegungsvektors mit gebrochener Genauigkeit mit hoher Geschwindigkeit.
Andere charakteristische Effekte der vorliegenden Erfindung werden im folgenden zusammengefaßt.
  • 1) Elementprozessoren, die Suchfensterdaten und Musterdaten speichern können, sind in einem zweidimensionalen Feld angeordnet, wobei Daten in nur einer Richtung im zweidimensionalen Feld übertragen werden. Daher wird die Schaltungskomplexität vermindert, die für die Datenübertragung notwendig ist, und man kann ein Bewegungsvektor-Erfassungsmittel mit geringer Belegungsfläche, das mit niedriger Leistungsaufnahme arbeitet, erhalten.
  • 2) Die Suchfensterdaten und Musterdaten, die zur Erfassung eines Bewegungsvektors mit ganzzahliger Genauigkeit benutzt werden, werden ohne Bildspeicher direkt zur Erfassung eines Bewegungsvektors mit gebrochener Genauigkeit verwendet. Daher wird die Anzahl der Zugriffe auf einen Bildspeicher reduziert, und ein Bewegungsvektor mit gebrochener Genauigkeit kann mit hoher Geschwindigkeit erfaßt werden.
  • 3) Die Elementprozessoren können eine Mehrzahl von Suchfensterdaten und/oder eine Mehrzahl von Musterblockdaten speichern, um die Belegungsfläche des Prozessorfeldes zu vermindern. Daher erhält man ein Bewegungsvektor-Erfassungsmittel mit geringer Belegungsfläche. Weil die Anzahl der Elementprozessoren vermindert wird, können die Komponenten des Rechenschaltungssystems zur Berechnung eines Kennungswertes wie z. B. der Absolutdifferenz entsprechend reduziert werden, um ein Bewegungsvektor-Erfassungsmittel mit geringer Leistungsaufnahme zu erhalten.
  • 4) Weil das Rechenmittel zur Berechnung eines Kennungswertes für einen Bewegungsvektor in Kombination mit einem Vorzeichenbit und Magnitudenbits gebildet ist, ist kein Inkrementierer zur Darstellung eines negativen Zahl in Zweierkomplementdarstellung erforderlich. Daher kann man einen Elementprozessor mit geringer Belegungsfläche erzielen. Entsprechend kann die Leistungsaufnahme eingespart werden, die für den Inkrementierer notwendig war.
  • 5) Die Summierungsschaltung zur Erzeugung eines Kennungswertes kann durch Volladdiererschaltungen gebildet werden, die in Form eines Baums angeordnet sind. Weil ein Vorzeichenbit auf das niederwertigste Bit in der Volladdierer-Schaltungsstufe angewandt wird, kann man eine Summierungsschaltung erhalten, die mit hoher Geschwindigkeit arbeitet und eine geringe Belegungsfläche aufweist. Daher kann ein Bewegungsvektor mit hoher Geschwindigkeit erfaßt werden.
  • 6) Die Pixeldaten des Suchfensters sind im Prozessorfeld gespeichert, und die Musterblockdaten befinden sich im Prozessorfeld. Daher kann man ein Bewegungsvektor-Bestimmungsmittel erzielen, das mit geringer Leistungsaufnahme arbeitet und eine geringe Belegungsfläche aufweist.
  • 7) Weil die Suchfensterdaten im Prozessorfeld in nur einer Richtung übertragen werden, werden diejenigen Daten aus dem Prozessorfeld ausgeschoben, die zur Erzeugung eines Kennungswertes nicht erforderlich sind, und die als nächstes notwendigen Suchfensterdaten werden in das Prozessorfeld eingeschoben. Daher können die Suchfensterdaten im Prozessorfeld effektiv gespeichert werden, und man kann ein Bewegungsvektor-Bestimmungsmittel mit geringer Belegungsfläche erzielen, das mit hoher Geschwindigkeit und geringer Leistungsaufnahme arbeitet.
  • 8) Die Transferrichtung der Musterblockdaten im Prozessorfeld ist orthogonal zur Transferrichtung der Suchfensterdaten. Weil die Musterblockdaten im Bildspeicher entsprechend der Rasterabtastung angeordnet sind, können Daten im Prozessorfeld entsprechend der Speicherweise der Musterblockdaten gespeichert sein. Daher können Musterdaten schnell in das Prozessorfeld geladen werden.
  • 9) Die Transferrichtung der Suchfensterdaten im Prozessorfeld ist parallel zur Transferrichtung der Musterblockdaten. Damit kann die Verdrahtungsbelegungsfläche, die zur Übertragung beider Daten erforderlich ist, reduziert werden, um ein Prozessorfeld mit geringer Belegungsfläche zu realisieren.
  • 10) Weil die Berechnung N-mal schneller als die Übertragung der Suchfensterdaten ausgeführt wird, kann ein Bewegungsvektor- Kennungswert effizient erzeugt werden.
  • 11) Die zur Erzeugung eines Kennungswertes notwendigen Musterblockdaten können entsprechend einem Subsampling abgetastet werden, um die präzise Erfassung eines Bewegungsvektors für Bilddaten mit einer hohen Bildrate zu ermöglichen.
  • 12) Daten der zwei Musterblöcke werden im jeweiligen Elementprozessor gespeichert, wobei die Erzeugung eines Kennungswertes für die zwei Musterblöcke unter Verwendung derselben Suchfenster-Blockdaten ausgeführt werden kann. Daher kann der Zugriff auf einen Bildspeicher effizient ausgeführt werden, um Suchfensterdaten auszulesen. Das ermöglicht die Erfassung eines Bewegungsvektors mit hoher Geschwindigkeit.
  • 13) Die Bestimmung eines Bewegungsvektors wird für zwei Musterblöcke gleichzeitig ausgeführt, und die Anzahl der Zugriffe auf den Bildspeicher zum Auslesen von Suchfensterdaten kann signifikant vermindert werden. Daher kann ein Bewegungsvektor effizient und mit hoher Geschwindigkeit erfaßt werden.
  • 14) Wenn eine Mehrzahl von Bewegungsvektoren existiert, die alle den minimalen Wert einer Kennungsfunktion liefern, wird dem Bewegungsvektor Priorität eingeräumt, der die kleinere Summe der Absolutwerte der Bewegungsvektorkomponenten aufweist. Daher kann ein Bewegungsvektor-Bestimmungsmittel gebildet werden, das einen Bildkomprimierungsprozeß effizient realisiert. Darüber hinaus kann ein Bewegungsvektor-Bestimmungsmittel mit geringerer Schaltungskomplexität realisiert werden, das für eine integrierte Schaltung geeignet ist, weil die Erzeugung der Prioritätsreihenfolge einfach aus der Inkrementierung oder Dekrementierung um einen Einheitswert realisiert werden kann.
  • 15) Die Anzahl der Zugriffe auf den Bildspeicher zur Erfassung eines Bewegungsvektors mit Interpolationsvorhersage wird vermindert, und die Erfassung eines Bewegungsvektors mit Interpolationsvorhersage kann mit hoher Geschwindigkeit ausgeführt werden.
  • 16) Weil der Pufferspeicher zur Erfassung eines Bewegungsvektors mit höherer Genauigkeit für unidirektionale Vorhersage zur Erfassung eines Bewegungsvektors mit höherer Genauigkeit für Interpolationsvorhersage verwendet wird, wird die Komplexität der Vorrichtung kaum vergrößert.
  • 17) Weil alle erforderlichen Daten von der Bewegungsvektor- Erfassungseinheit für unidirektionale Vorhersage zur Bewegungsvektor-Erfassungseinheit für Interpolationsvorhersage übertragen werden, kann der Prozeß nach Art einer Pipeline ausgeführt werden, um ein schnelle Verarbeitung zu ermöglichen.

Claims (44)

1. Mittel zum Erfassen eines Bewegungsvektors nach einem Block- Matching-Prozeß für ein gegenwärtiges und eine Referenzbild, gekennzeichnet, durch
eine Mehrzahl von Verarbeitungselementen (PE; 411a-411w), die jeweils ein erstes Speichermittel (25; 75; 505a, 505b; 414a-414w) zum Speichern der Pixeldaten eines Blockes des gegenwärtigen Bildes, ein zweites Speichermittel (26; 73; 505c; 413a-413w) zum Speichern der Pixeldaten eines Blockes in einem Suchbereich, der zum Block im Referenzbild gehört, und ein Rechenmittel (64; 511; 412a-412w) zum Ausführen einer vorbestimmten Berechnung mit den Daten, die im ersten und im zweiten Speichermittel gespeichert sind, aufweisen, wobei die zweiten Speichermittel in Reihe geschaltet sind, um Daten in nur einer Richtung zu übertragen;
ein Kennungswert-Erzeugungsmittel (12; 417; 560), das von den Ausgaben des Rechenmittels in den Verarbeitungselementen abhängig ist, zum Erzeugen eines Kennungswertes, der die Korrelation zwischen dem gegenwärtigen Bildblock und dem Referenzbildblock angibt, und ein Bestimmungsmittel (3; 132; 562, 564), das vom Kennungswert vom Kennungswert-Erzeugungsmittel abhängig ist, zum Bestimmen eines Bewegungsvektors für den gegenwärtigen Bildblock.
2. Mittel nach Anspruch 1,
gekennzeichnet durch
ein zusätzliches Verarbeitungsmittel (599; 584, 586; 250; 1005), das zum Empfangen von mindestens den Referenzbilddaten oder den gegenwärtigen Bilddaten von den Verarbeitungselementen geschaltet ist, um einen anderen Bewegungsvektors für den Block des gegenwärtigen Bildes zu berechnen,
wobei das Bestimmungsmittel einen Bewegungsvektor mit ganzzahliger Genauigkeit und der andere Bewegungsvektor einen Bewegungsvektor mit gebrochener Genauigkeit liefert.
3. Mittel nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß das erste Speichermittel ein Mittel (25-1 bis 25-M; 75) zum Speichern von M-Pixel-Daten entsprechend M verschiedenen Pixeln im Block des gegenwärtigen Bildes aufweist, und das zweite Speichermittel ein Mittel (26-1 bis 26-N; 73) zum Speichern von N- Pixel-Daten entsprechend N verschiedenen Pixeln im Block des Referenzbildes aufweist, wobei M und N jeweils ganze Zahlen sind und N größer oder gleich M ist.
4. Mittel nach Anspruch 3, dadurch gekennzeichnet, daß jedes Verarbeitungselement ferner ein Auswahlmittel (60, 62) zum Auswählen eines Pixelwertes aus dem ersten Speichermittel und eines entsprechenden Pixelwertes aus dem zweiten Speichermittel aufweist, um den ausgewählten Pixelwert dem Berechnungsmittel zuzuführen.
5. Mittel nach Anspruch 4, dadurch gekennzeichnet, daß M gleich N ist, und das Auswahlmittel (60, 62) alle Pixelwerte im ersten Speichermittel (25-1, 25-2) mit einer ersten Rate auswählt, die M-mal schneller als die Rate ist, mit der ein Pixelwert des Referenzbildes durch die Verarbeitungselemente übertragen wird.
6. Mittel nach Anspruch 5, dadurch gekennzeichnet, daß das Rechenmittel (64) mit der ersten Rate arbeitet.
7. Mittel nach Anspruch 5, dadurch gekennzeichnet, daß das Rechenmittel (64) mit einer zweiten Rate arbeitet, die geringer als die erste Rate ist, wobei die erste Rate ein ganzzahliges Vielfaches der zweiten Rate ist.
8. Mittel nach Anspruch 4, dadurch gekennzeichnet, daß N größer als M ist, und das Auswahlmittel (60, 62) alle Pixelwerte im ersten Speichermittel (25-1, 25-2) auswählt, und das Rechenmittel die vorbestimmte Berechnung synchron zum Auswahlmittel ausführt.
9. Mittel nach Anspruch 3, dadurch gekennzeichnet, daß das Verarbeitungsmittel (PE) ferner ein Mittel (60, 62; 60) zum Ausführen eines Subsampling mit den Ausgaben des Berechnungsmittels aufweist.
10. Mittel nach Anspruch 3, dadurch gekennzeichnet, daß M gleich 1 und N gleich 2 ist, und das Rechenmittel (64) mit derselben Rate rechnet wie die Rate, mit der ein Pixelwert des Referenzbildes durch die Verarbeitungselemente übertragen wird.
11. Mittel nach einem der Ansprüche 1 bis 10, dadurch gekennzeichnet, daß das Rechenmittel (64) ein Subtraktionsmittel (70) zum Ausführen einer Subtraktion eines gespeicherten Pixelwertes des Blocks des gegenwärtigen Bildes und eines gespeicherten Pixelwertes des Suchbereichblocks, um ein Vorzeichenbit, das das Vorzeichen des Subtraktionsergebnisses anzeigt, und Magnitudenbits, die die Größe des Subtraktionsergebnisses anzeigen, zu erzeugen, und ein Gattermittel (72) zum Ausführen einer Modulo-2-Addition des Vorzeichenbits und des jeweiligen Magnitudenbits, um eine absolute Differenz der Subtraktion zu erzeugen, aufweist.
12. Mittel nach Anspruch 11, dadurch gekennzeichnet, daß das Kennungswert-Erzeugungsmittel (12) ein Summierungsmittel (12) zum Ermitteln einer Summe der Ausgaben der Rechenmittel (64) aufweist, und das Summierungsmittel eine Mehrzahl von Stufen von Volladdierern (104) aufweist, die in Form eines Baumes geschaltet sind, so daß die Ausgabe eines Volladdieres in einer Stufe dem Eingang eines Volladdierers in einer nachfolgenden Stufe zugeführt wird, und das Vorzeichenbit vom Subtraktionsmittel dem Übertrageingang des Volladdierers des niederwertigsten Bits in der jeweiligen Stufe zugeführt wird.
13. Mittel nach Anspruch 3, dadurch gekennzeichnet, daß der Block des gegenwärtigen Bildes Pixel aufweist, die in Q Zeilen und P Spalten angeordnet sind, wobei P und Q jeweils ganze Zahlen sind, und die Verarbeitungselemente in P linearen Feldern (LA) entsprechend den P Spalten angeordnet sind, wobei jedes lineare Feld Q/M kaskadierte Verarbeitungselemente und ein drittes Speichermittel (DL) zum Speichern von R verschiedenen Werten im Suchbereich, der den Block des Referenzbildes enthält, aufweist, und die Summe von R und Q gleich der Anzahl der Pixel ist, die in einer Spalte des Suchbereichs angeordnet sind.
14. Mittel nach Anspruch 13, dadurch gekennzeichnet, daß jedes dritte Speichermittel (DL) ein Mittel zum Empfangen eines Suchbereichwertes über ein Verarbeitungselement in einer vorherigen Spalte und zum Übertragen eines Wertes des Suchbereichs an ein Verarbeitungselement in einer entsprechenden Spalte aufweist.
15. Mittel nach Anspruch 13 oder 14, dadurch gekennzeichnet, daß das Verarbeitungselement (PE) zum Übertragen von Daten des Blocks des gegenwärtigen Bildes und von Daten des Blocks des Referenzbildes in orthogonalen Richtungen betreibbar ist.
16. Mittel nach Anspruch 13 oder 14, dadurch gekennzeichnet, daß das Verarbeitungselement (PE) zum Übertragen von Daten des Blocks des gegenwärtigen Bildes und von Daten des Blocks des Referenzbildes in derselben Richtung und zum Übertragen der Daten des Blocks des gegenwärtigen Bildes an ein Verarbeitungselement in einer benachbarten Spalte durch keines der dritten Speichermittel betreibbar ist.
17. Mittel nach Anspruch 3, dadurch gekennzeichnet, daß das Rechenmittel (64) so betreibbar ist, daß es die Berechnung mit einer ersten Rate ausführen kann, die N-mal höher als die Rate ist, mit der die Referenzbild-Blockdaten übertragen werden.
18. Mittel nach Anspruch 3, dadurch gekennzeichnet, daß das Rechenmittel (64) so betreibbar ist, daß es die Berechnung mit einer ersten Rate ausführen kann, die M-mal höher als die Rate ist, mit der die Referenzbild-Blockdaten übertragen werden.
19. Mittel nach Anspruch 17 oder 18, dadurch gekennzeichnet, daß das Verarbeitungselement (PE) ein Auswahlmittel (60, 62) zum sequentiellen Auswählen eines Datensatzes im ersten Speichermittel und eines Wertes im zweiten Speichermittel mit einer ersten Rate aufweist.
20. Mittel nach Anspruch 1, dadurch gekennzeichnet, daß das erste Speichermittel verschiedene Pixeldaten des gegenwärtigen Bildblockes speichert und jedes der zweiten Speichermittel verschiedene Pixeldaten des Referenzbildblockes speichert, und wobei jedes Verarbeitungselement (PE) ferner ein Schiebemittel (SR) aufweist zum Übertragen eines Pixelwertes vom zweiten Speichermittel, während der Pixelwert im ersten Speichermittel beibehalten wird, um jeweils den Kennungswert zu erzeugen.
21. Mittel nach Anspruch 1, dadurch gekennzeichnet, daß das erste Speichermittel ein erstes Speicherelement (505a) zum Speichern eines ersten Musterblockwertes im gegenwärtigen Bildblock und ein zweites Speicherelement (505b) zum Speichern eines zweiten Musterblockwertes im gegenwärtigen Bildblock aufweist, und jedes Verarbeitungselement (PE) ferner ein Auswahlmittel (506) aufweist zum alternativen Auswählen des ersten Musterblockwertes und des zweiten Musterblockwertes zur Übertragung zum Rechenmittel, so daß das Rechenmittel die vorbestimmte Berechnung sowohl mit dem Wert des ersten Musterblocks und dem Referenzbild-Blockwert als auch dem Wert des zweiten Musterblocks und dem Referenzbild-Blockwert ausführt.
22. Mittel nach Anspruch 1, dadurch gekennzeichnet, daß das Bestimmungsmittel (3)
ein erstes Registermittel (614) zum Speichern eines minimalen Kennungswertes,
ein Vergleichsmittel (613) zum Vergleichen eines gegenwärtigen Kennungswertes vom Kennungswert-Erzeugungsmittel (12) mit dem minimalen Kennungswert,
ein Erzeugungsmittel (711) zum Erzeugen eines Verschiebungsvektors, der die Verschiebung zwischen dem ersten Block und dem zweiten Block in Vektornotation mit einer horizontalen und einer vertikalen Komponente angibt,
ein zweites Registermittel (710) zum Speichern eines Verschiebungsvektors als Kandidaten für den Bewegungsvektor,
ein vom Vergleichsmittel, das erfaßt hat, daß ein gegenwärtiger Kennungswert gleich dem minimalen Kennungswert ist, abhängiges Prioritätsmittel (615) zum Bestimmen, welcher der beiden Kennungswerte die höhere Priorität besitzt, wobei das Prioritätsmittel ein Mittel (626, 627, 632) umfaßt zum Bestimmen, daß ein Kennungswert mit einem zugehörigen Verschiebungsvektor ein höhere Priorität besitzt, falls die Summe der Absolutwerte der horizontalen und vertikalen Komponenten kleiner ist, und
ein Aktualisierungsmittel (616), das vom Vergleichsmittel abhängig ist, zum Ersetzen des minimalen Kennungswertes durch den gegenwärtigen Kennungswert und zum Ersetzen des Inhaltes des zweiten Registermittels durch die Ausgabe des Erzeugungsmittels aufweist.
23. Mittel nach Anspruch 22, dadurch gekennzeichnet, daß das Prioritätsmittel (615)
ein drittes Registermittel (624) zum Speichern eines Prioritätswertes für den gegenwärtigen Kennungswert,
ein Prioritätsaktualisierungsmittel (625) zum Ersetzen des Prioritätswertes im dritten Registermittel durch einen vorbestimmten Wert für jede Erzeugung eines Verschiebungsvektors,
ein viertes Registermittel (627) zum Speichern eines Prioritätswertes, der zum minimalen Kennungswert im ersten Registermittel gehört, und
ein Vergleichsmittel (626) zum Vergleichen des Prioritätswertes im dritten Registermittel und des Prioritätswertes im vierten Registermittel, aufweist,
wobei das Aktualisierungsmittel (616) den Wert im vierten Registermittel in Abhängigkeit vom Vergleichsmittel durch den Wert im dritten Registermittel ersetzt.
24. Mittel nach Anspruch 1, dadurch gekennzeichnet, daß die Verarbeitungselemente in einem Feld (10) angeordnet sind, und das Feld mit jeder Erzeugung eines Kennungswertes einen Referenzbild-Blockwert und auch den Blockwert des gegenwärtigen Bildes ausschiebt, und wobei das Mittel ferner ein Pufferspeichermittel (260, 270; 282), das vom Bestimmungsmittel abhängig ist, zum Speichern der Daten eines Blockes des Referenzbildes, die zum bestimmten Bewegungsvektor gehören, und ein zusätzliches Verarbeitungsmittel (250), das die Bildblockdaten des gegenwärtigen Bildes vom Feld und die Daten vom Pufferspeichermittel empfängt, um einen Block-Matching-Prozeß auszuführen und einen anderen Bewegungsvektor mit einer anderen Genauigkeit zu bestimmen, aufweist.
25. Mittel nach Anspruch 24, gekennzeichnet durch einen weiteren Pufferspeicher (28), der zwischen dem Feld und dem zusätzlichen Verarbeitungsmittel zum Speichern der Daten des gegenwärtigen Bildblockes gebildet ist.
26. Mittel nach Anspruch 24, dadurch gekennzeichnet, daß der Pufferspeicher (260, 270; 282) einen Suchblock, der einen Referenzbildblock enthält, der zum Bewegungsvektor gehört, und seine Randpixeldaten speichert, und wobei das zusätzliche Verarbeitungsmittel (250) einen Bewegungsvektor mit gebrochener Genauigkeit und das Bestimmungsmittel (3) einen Bewegungsvektor mit ganzzahliger Genauigkeit ermittelt.
27. Mittel nach Anspruch 1, dadurch gekennzeichnet, daß
die Mehrzahl von Verarbeitungselementen (PE), das Kennungswert- Erzeugungsmittel und das Bestimmungsmittel eine erste Verarbeitungsstruktur zum Empfangen von Daten eines ersten Referenzbildes bilden, und wobei das Mittel ferner eine zweite Verarbeitungsstruktur (1003, 1004; 1150, 1160) mit derselben Struktur wie die erste Verarbeitungsstruktur zum Empfangen von Daten eines zweiten Referenzbildes, wobei die erste und die zweite Verarbeitungsstruktur dieselben Blockdaten des gegenwärtigen Bildes empfangen,
ein erstes Speichermittel (1013; 1152), das Daten eines Blockes des ersten Referenzbildes, das zum ersten Bewegungsvektor gehört, der von der ersten Verarbeitungsstruktur bestimmt wird, empfängt und speichert,
ein zweites Speichermittel (1014; 1162), das Daten eines Blockes des zweiten Referenzbildes von der zweiten Verarbeitungsstruktur empfängt und speichert,
ein Interpolationsmittel (1005; 1170) zum Empfangen von Daten vom ersten und zweiten Speichermittel zum Erzeugen von Daten eines dritten Referenzbildblockes durch Interpolation der empfangenen Daten,
ein Bewegungsvektor-Bestimmungsmittel (1022), das von den Blockdaten des gegenwärtigen Bildes und den dritten Referenzbild-Blockdaten abhängig ist, zum Erzeugen eines zweiten Kennungswertes, das die Korrelation zwischen dem Block des gegenwärtigen Bildes und dem Block des dritten Referenzbildes angibt, und
ein Entscheidungsmittel (1024), das von den Kennungswerte, die zu den Bewegungsvektoren gehören und von der ersten und zweiten Struktur empfangen werden, und dem zweiten Kennungswert vom Bewegungsvektor-Bestimmungsmittel abhängig ist, zum Erzeugen eines endgültigen Bewegungsvektors aufweist.
28. Mittel nach Anspruch 27, dadurch gekennzeichnet, daß das Entscheidungsmittel (1024) ein Mittel (1035, 1036) zum Ermitteln des minimalen Wertes unter den Kennungswerten und dem zweiten Kennungswert und zum Auswählen eines Bewegungsvektors entsprechend dem minimalen Wert als endgültigem Bewegungsvektor.
29. Mittel nach Anspruch 27, dadurch gekennzeichnet, daß das Bewegungsvektor-Bestimmungsmittel (1024) ein Mittel zum Bestimmen des Bewegungsvektors des gegenwärtigen Bildblockes für den dritten Referenzbildblock über einen Block-Matching-Prozeß aufweist.
30. Mittel nach Anspruch 27, dadurch gekennzeichnet, daß das Bewegungsvektor-Bestimmungsmittel (1024) die Blockdaten des gegenwärtigen Bildes über eine der ersten und zweiten Verarbeitungsstrukturen empfängt.
31. Mittel nach Anspruch 27, gekennzeichnet durch ein drittes Verarbeitungsmittel (1153), das die Blockdaten des gegenwärtigen Bildes von der ersten Verarbeitungsstruktur (1151) und Daten eines ersten Referenzbildes vom ersten Speichermittel (1152) empfängt, zum Bestimmen eines Bewegungsvektors und eines Kennungswertes des gegenwärtigen Bildblockes für das erste Referenzbild, um die erhaltenen Bewegungsvektordaten und den Kennungswert dem Entscheidungsmittel (1170; 1024) zuzuführen, und ein viertes Verarbeitungsmittel (1123), das die gegenwärtigen Bilddaten von der zweiten Verarbeitungsstruktur (1161) und die zweiten Referenzbilddaten vom zweiten Speichermittel (1163) empfängt, zum Bestimmen eines Bewegungsvektors und eines Kennungswertes des gegenwärtigen Bildblockes für das zweite Referenzbild, um die erhaltenen Bewegungsvektordaten und den Kennungswert dem Entscheidungsmittel zuzuführen.
32. Mittel zum Bestimmen eines Bewegungsvektors für einen Musterblock mit Pixeln aus Q Zeilen und P Spalten in einem gegenwärtigen Bild über einen Block-Matching-Prozeß in einem Suchbereich mit vorbestimmter Größe eines Referenzbildes, wobei der Suchbereich ein Suchfenster aufweist, das dieselbe Breite wie der Musterblock besitzt, und P und Q ganze Zahlen sind, gekennzeichnet durch
lineare Felder (LA), die in P Spalten angeordnet sind, wobei jedes lineare Feld
Q/M kaskadierte Verarbeitungselemente (PE), die jeweils einen ersten Datenspeicher (25; 75) zum Speichern von M verschiedenen Pixelwerten des Musterblocks, einen zweiten Datenspeicher (26; 73) zum Speichern von N verschiedenen Pixelwerten des Suchfensters und ein
Rechenmittel (64) zum Ausführen einer vorbestimmten Berechnung mit den Daten, die im ersten und zweiten Speicher gespeichert sind, wobei N und M ganze Zahlen sind und N ein ganzzahliges Vielfaches von M ist, und
ein drittes Speichermittel (DL) zum Speichern von R verschiedenen Werten des Suchbereichs, wobei die Summe von R und Q gleich der Anzahl der Pixel ist, die in einer Spalte des Suchbereichs angeordnet sind, aufweist.
33. Mittel nach Anspruch 32, dadurch gekennzeichnet, daß die linearen Felder (LA) in Reihe geschaltet sind, um Daten des Musterblockes über den ersten Speicher (25; 75) zu übertragen und Daten des Suchbereiches über den zweiten Speicher (26; 73) und den dritten Speicher (DL) zu übertragen.
34. Mittel zum Bestimmen eines Bewegungsvektors, der in einer Vorhersagecodierung mit Bewegungskompensation verwendet wird, über einen Block-Matching-Prozeß des gegenwärtigen Bildes mit einem Referenzbild, gekennzeichnet durch
einen ersten Speicher (505a) zum Speichern von Pixeldaten eines ersten Musterblocks im gegenwärtigen Bild,
einen zweiten Speicher (505b) zum Speichern von Pixeldaten eines zweiten Musterblocks im gegenwärtigen Bild,
einen dritten Speicher (505c) zum Speichern von Pixeldaten eines Suchfensterblocks im Referenzbild, das zum ersten und zweiten Musterblock gehört,
ein Kennungswert-Erzeugungsmittel (507, 12) zum Ausführen einer vorbestimmten Berechnung mit sowohl den Pixeldaten des ersten Speichers und den Pixeldaten des dritten Speichers als auch den Pixeldaten des zweiten Speichers und den Pixeldaten des dritten Speichers, um Kennungswerte zu erzeugen, die die Korrelationsbeziehungen zwischen dem ersten Musterblock und dem Suchfensterblock sowie zwischen dem zweiten Musterblock und dem Suchfensterblock angeben, und
ein Mittel (3), das vom Kennungswert-Erzeugungsmittel abhängig ist, zum Ausführen eines Erfassungsvorganges zum parallelen Bestimmen von Bewegungsvektoren für den ersten und zweiten Musterblock.
35. Mittel nach Anspruch 34, dadurch gekennzeichnet, daß der erste und zweite Musterblock im gegenwärtigen Bild benachbart zueinander sind.
36. Mittel zum Bestimmen eines Bewegungsvektors, der in einer Vorhersagecodierung mit Bewegungskompensation verwendet wird, über einen Block-Matching-Prozeß der Daten eine Musterblocks in einem gegenwärtigen Bild und dem Suchbereich in einem Referenzbild, wobei der Suchbereich ein Suchfenster aufweist, gekennzeichnet durch
ein Prozessorfeld (10) mit einer Mehrzahl von Verarbeitungselementen (PE), die jeweils Pixeldaten des Musterblocks und Pixeldaten des Suchfensters speichern und eine vorbestimmte Berechnung mit den Musterblock-Pixeldaten und den Suchfenster-Pixeldaten ausführen, wobei jedes Verarbeitungselement so betreibbar ist, daß es Daten in unidirektionaler Weise verschiebt,
ein erstes Mittel (3), das von den Ausgaben der Verarbeitungselemente abhängig ist, zum Erfassen eines Bewegungsvektors mit ganzzahliger Genauigkeit für einen Musterblock, und
eine Verarbeitungseinheit (25), die mindestens den Musterblockwert oder das Suchfenster vom Prozessorfeld empfängt, um für den Musterblock einen Bewegungsvektor mit gebrochener Genauigkeit zu bestimmen.
37. Mittel zum Bestimmen eines Bewegungsvektors, der in einer Vorhersagecodierung mit Bewegungskompensation verwendet wird, über einen Block-Matching-Prozeß des gegenwärtigen Bildes und eines Referenzbildes, gekennzeichnet durch
ein Suchmittel (1, 613, 614) zum Suchen des minimalen Wertes einer Kennungsfunktion für einen Verschiebungsvektor, die als Indikator zum Suchen des Bewegungsvektors im Block-Matching-Prozeß verwendet wird,
ein Erfassungsmittel (615), das vom Suchmittel abhängig ist und erfaßt, daß mehrere Kennungsfunktionen denselben minimalen Wert liefern, um einer Kennungsfunktion höchste Priorität zu geben, die zu einem Verschiebungsvektor gehört, für den die Summe der Absolutwerte der horizontalen und vertikalen Komponenten am kleinsten ist, und
ein Mittel (616, 710), das vom Suchmittel und dem Erfassungsmittel abhängig ist, zum Erfassen des Bewegungsvektors unter den Verschiebungsvektoren, wobei der Bewegungsvektor zu der Kennungsfunktion gehört, die den minimalen Wert liefert oder die den minimalen Wert und die höchste Priorität liefert.
38. Mittel zum Bestimmen eines Bewegungsvektors über einen Block- Matching-Prozeß des gegenwärtigen Bildes und eines Referenzbildes, gekennzeichnet durch
einen ersten Speicher (25; 75), der für jedes Pixel eines Musterblockes des gegenwärtigen Bildes gebildet ist, zum Speichern entsprechender Pixeldaten,
einen zweiten Speicher (26; 73), der für jedes Pixel eines Suchfensterblockes eines Suchbereichs des Referenzbildes gebildet ist, zum Speichern entsprechender Pixeldaten,
ein Kennungsmittel (64, 12) zum Ausführen einer vorbestimmten Berechnung mit Daten des ersten Speichers und Daten des zweiten Speichers, um einen Kennungswert zu erzeugen, der die Korrelationsbeziehung zwischen dem Musterblock und dem Suchfensterblock angibt, und
ein Erfassungsmittel (3), das vom Rechenmittel abhängig ist, zum Erfassen eines Bewegungsvektors für den Musterblock,
wobei das Kennungsmittel so betreibbar ist, daß es die Berechnung für jede Verschiebung der Daten um ein Pixel über den zweiten Speicher ausführen kann, während der Wert im ersten Speicher beibehalten wird.
39. Mittel nach Anspruch 38, dadurch gekennzeichnet, daß das Kennungsmittel (64, 12) ein Rechenmittel (64), das für eine erste Mehrzahl von Pixeln des Musterblocks und für eine zweite Mehrzahl von Pixeln des Suchfensterblocks gebildet ist, zum Ausführen der vorbestimmten Berechnung, und ein Auswahlmittel (60, 62), das entsprechend dem Rechenmittel gebildet ist, zum Auswählen von Daten des ersten und zweiten Speichers, um sie dem entsprechenden Rechenmittel zuzuführen, aufweist.
40. Mittel zum Bestimmen eines Bewegungsvektors über einen Block- Matching-Prozeß des gegenwärtigen Bildes und eines Referenzbildes, gekennzeichnet durch
eine Mehrzahl von Bewegungserfassungsmitteln mit unidirektionaler Vorhersage (1011, 1012; 1151, 1161), jeweils zum Erfassen eines Bewegungsvektors eines Musterblocks im gegenwärtigen Bild entsprechend einem Kennungswert, der über den Block-Matching-Prozeß des Musterblocks und eines Suchbereichs im Referenzbild erhalten wird, wobei jedes der Bewegungserfassungsmittel mit unidirektionaler Vorhersage Daten von verschiedenen Referenzbildern von anderen Mitteln empfängt,
eine Mehrzahl von Pufferspeichern (1013, 1014; 1152, 1162), die entsprechend jedem der Bewegungserfassungsmitteln mit unidirektionaler Vorhersage gebildet sind, jeweils zum Speichern von Daten eines Teilreferenzbildes, das zum Bewegungsvektor gehört, der vom entsprechenden Bewegungserfassungsmittel mit unidirektionaler Vorhersage im Referenzbild erfaßt wird,
ein Interpolationsmittel (1020) zum Empfangen und Kombinieren der Teilreferenzbilddaten von der Mehrzahl von Pufferspeichern, um Daten des interpolierten Referenzbildes zu erzeugen,
ein Erfassungsmittel für den interpolierten Bewegungsvektor (1022) zum Ausführen eines Block-Matching-Prozesses mit den Daten des Musterblocks und dem interpolierten Referenzbild, um einen Kennungswert zu erzeugen, der das Ergebnis des Block-Matching- Prozesses angibt, und
ein Bestimmungsmittel (1024), das vom Kennungswert des Erfassungsmittels für den interpolierten Bewegungsvektor und den Kennungswerten, die zu den Bewegungsvektoren vpn der Mehrzahl von Bewegungserfassungsmitteln mit unidirektionaler Vorhersage gehören, abhängig ist, zum Erzeugen eines endgültigen Bewegungsvektors aus den Bewegungsvektoren.
41. Mittel nach Anspruch 40, gekennzeichnet durch eine Mehrzahl von Verarbeitungsmitteln (1153, 1163), die entsprechend der Mehrzahl von Bewegungserfassungsmitteln (1151, 1161) mit unidirektionaler Vorhersage gebildet sind, zum Ausführen des Block-Matching-Prozesses mit Daten des Musterblocks und dem Teilreferenzbild, das in einem entsprechenden Puffer gespeichert ist, zum Erzeugen eines Bewegungsvektors und eines Kennungswertes, um sie dem Bestimmungsmittel (1024) zuzuführen.
42. Mittel nach Anspruch 40, dadurch gekennzeichnet, daß die Musterblockdaten dem Erfassungsmittel für den interpolierten Bewegungsvektor über eines der Mehrzahl von Bewegungserfassungsmitteln (1011, 1012) mit unidirektionaler Vorhersage zugeführt werden.
43. Verfahren zum Bestimmen eines Bewegungsvektors über einen Block- Matching-Prozeß mit dem gegenwärtigen Bild und einem Referenzbild, gekennzeichnet durch die Schritte:
Speichern der Daten eines Musterblocks des gegenwärtigem Bildes in ersten Speicherelementen,
Speichern der Daten eines Suchfensterblocks des Referenzbildes in zweiten Speicherelementen,
Ausführen einer vorbestimmten Berechnung mit Daten, die in den ersten und zweiten Speicherelementen gespeichert sind, um einen Kennungswert zu erzeugen, der die Korrelationsbeziehung zwischen dem Musterblock und dem Suchfensterblock angibt,
Schieben der Daten über die zweiten Speicherelemente in unidirektionaler Weise, um Daten eines anderen Suchfensterblocks in die zweiten Speicherelemente zu laden,
Wiederholen der Schritte zum Ausführen der vorbestimmten Berechnung und Schieben der Daten, bis alle Suchfensterblöcke im Suchbereich, der zum Musterblock gehört, der Kennungswertberechnung unterworfen worden sind, und
Bestimmen eines Bewegungsvektors entsprechend den Kennungswerten.
44. Verfahren nach Anspruch 43, dadurch gekennzeichnet, daß der Schritt des Ausführens der vorbestimmten Berechnung die Schritte sequentielles Auswählen einer Mehrzahl von Datensätzen von den ersten und zweiten Speicherelementen, und
Ausführen der Berechnung durch Rechenmittel, die jeweils einzeln für die Mehrzahl von Datensätzen gebildet sind, wobei jedes Rechenmittel die Berechnung mit den Datensätze sequentiell ausführt, aufweist.
DE4322343A 1992-07-06 1993-07-05 Mittel zum Erfassen eines Bewegungsvektors und Verfahren zum Bestimmen eines Bewegungsvektors Expired - Fee Related DE4322343C2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP4178399A JPH0630399A (ja) 1992-07-06 1992-07-06 動きベクトル検出方法および検出装置
JP21596692 1992-08-13
JP10543293A JP3084170B2 (ja) 1992-08-13 1993-05-06 動きベクトル検出装置

Publications (2)

Publication Number Publication Date
DE4322343A1 true DE4322343A1 (de) 1994-01-13
DE4322343C2 DE4322343C2 (de) 1996-10-02

Family

ID=27310482

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4322343A Expired - Fee Related DE4322343C2 (de) 1992-07-06 1993-07-05 Mittel zum Erfassen eines Bewegungsvektors und Verfahren zum Bestimmen eines Bewegungsvektors

Country Status (3)

Country Link
US (1) US5400087A (de)
DE (1) DE4322343C2 (de)
FR (1) FR2693290B1 (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19501551A1 (de) * 1994-01-21 1995-08-03 Mitsubishi Electric Corp Bewegungsvektor-Ermittlungseinrichtung, welche dazu in der Lage ist, sich einer Mehrzahl von Voraussagearten anzupassen
DE19549369C2 (de) * 1994-01-21 1997-11-27 Mitsubishi Electric Corp Bewegungsvektor-Ermittlungseinrichtung
DE19549500C2 (de) * 1994-01-21 2000-05-25 Mitsubishi Electric Corp Bewegungsvektor-Ermittlungseinrichtung

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07115646A (ja) * 1993-10-20 1995-05-02 Sony Corp 画像処理装置
US5659364A (en) * 1993-12-24 1997-08-19 Matsushita Electric Industrial Co., Ltd. Motion vector detection circuit
JPH0865685A (ja) * 1994-08-23 1996-03-08 Nec Corp 動きベクトル検出回路
US5619268A (en) * 1995-01-17 1997-04-08 Graphics Communication Laboratories Motion estimation method and apparatus for calculating a motion vector
US5712799A (en) * 1995-04-04 1998-01-27 Chromatic Research, Inc. Method and structure for performing motion estimation using reduced precision pixel intensity values
GB2301971B (en) * 1995-06-06 1999-10-06 Sony Uk Ltd Video compression
JP2798120B2 (ja) * 1995-08-04 1998-09-17 日本電気株式会社 動き補償フレーム間予測方法及び動き補償フレーム間予測装置
JPH0965339A (ja) * 1995-08-18 1997-03-07 Mitsubishi Electric Corp 画像ブロック動き検出装置
WO1997016926A1 (en) * 1995-10-31 1997-05-09 Sarnoff Corporation Method and apparatus for determining ambient conditions from an image sequence
WO1997016921A1 (en) * 1995-10-31 1997-05-09 Sarnoff Corporation Method and apparatus for generating a reference image from an image sequence
KR0177985B1 (ko) * 1995-11-17 1999-05-15 김광호 프로세서의 벡터 데이터 조정 장치
US5889891A (en) * 1995-11-21 1999-03-30 Regents Of The University Of California Universal codebook vector quantization with constrained storage
KR0151922B1 (ko) * 1995-12-12 1998-10-15 양승택 필드 및 프레임 움직임 추정 장치
US5682204A (en) * 1995-12-26 1997-10-28 C Cube Microsystems, Inc. Video encoder which uses intra-coding when an activity level of a current macro-block is smaller than a threshold level
US6049362A (en) * 1996-02-14 2000-04-11 International Business Machines Corporation Dual prime motion estimation system and method
US5768537A (en) * 1996-02-22 1998-06-16 International Business Machines Corporation Scalable MPEG2 compliant video encoder
JPH1079947A (ja) * 1996-09-03 1998-03-24 Mitsubishi Electric Corp 動きベクトル検出装置
JP3019787B2 (ja) 1996-09-20 2000-03-13 日本電気株式会社 動きベクトル検出装置
US6611559B1 (en) * 1996-09-24 2003-08-26 Matsushita Electric Industrial Co., Ltd. Apparatus and method of detecting motion vectors by calculating a correlation degree between each candidate block
US6058142A (en) * 1996-11-29 2000-05-02 Sony Corporation Image processing apparatus
GB2327827B (en) * 1996-11-29 1999-06-30 Sony Corp Image processing apparatus
US6151632A (en) * 1997-03-14 2000-11-21 Microsoft Corporation Method and apparatus for distributed transmission of real-time multimedia information
US6584226B1 (en) * 1997-03-14 2003-06-24 Microsoft Corporation Method and apparatus for implementing motion estimation in video compression
AU1941797A (en) * 1997-03-17 1998-10-12 Mitsubishi Denki Kabushiki Kaisha Image encoder, image decoder, image encoding method, image decoding method and image encoding/decoding system
JPH10327415A (ja) * 1997-05-22 1998-12-08 Mitsubishi Electric Corp 動きベクトル検出装置
JP2976932B2 (ja) * 1997-06-09 1999-11-10 日本電気株式会社 画像照合回路および画像照合集積回路
JPH118856A (ja) * 1997-06-17 1999-01-12 Mitsubishi Electric Corp 画像符号化方法及びその装置
US6212237B1 (en) * 1997-06-17 2001-04-03 Nippon Telegraph And Telephone Corporation Motion vector search methods, motion vector search apparatus, and storage media storing a motion vector search program
EP0896300B1 (de) * 1997-08-07 2002-01-30 Matsushita Electric Industrial Co., Ltd. Vorrichtung und Verfahren zur Detektion eines Bewegungsvektors
JPH11112991A (ja) * 1997-10-08 1999-04-23 Sharp Corp 動きベクトル検出装置
JPH11168727A (ja) 1997-12-02 1999-06-22 Mitsubishi Electric Corp 動きベクトル検出装置
JPH11259662A (ja) * 1998-01-09 1999-09-24 Hewlett Packard Co <Hp> 画像フレ―ムの移動検出方法および装置
JPH11346369A (ja) * 1998-06-01 1999-12-14 Nec Corp 動ベクトル検出回路
JP4026238B2 (ja) * 1998-07-23 2007-12-26 ソニー株式会社 画像復号装置及び画像復号方法
US6233236B1 (en) * 1999-01-12 2001-05-15 Mcdata Corporation Method and apparatus for measuring traffic within a switch
US7382736B2 (en) * 1999-01-12 2008-06-03 Mcdata Corporation Method for scoring queued frames for selective transmission through a switch
JP2000270328A (ja) * 1999-03-17 2000-09-29 Mitsubishi Electric Corp 動きベクトル検出装置
JP2000308064A (ja) * 1999-04-22 2000-11-02 Mitsubishi Electric Corp 動きベクトル検出装置
KR100549919B1 (ko) * 2000-12-15 2006-02-06 주식회사 케이티 소요클럭사이클수 감축을 위한 초대규모 집적회로 장치
JP2002232911A (ja) * 2001-02-01 2002-08-16 Mitsubishi Electric Corp 動きベクトル検出装置及び動きベクトル検出方法
CN1301491C (zh) * 2001-03-13 2007-02-21 伊强德斯股份有限公司 视觉装置、联动式计数器及图象检测器
KR100413770B1 (ko) * 2001-09-19 2004-01-03 삼성전자주식회사 완전 탐색블록 정합회로 및 완전 탐색블록 정합방법
KR100412501B1 (ko) * 2001-11-30 2003-12-31 삼성전자주식회사 움직임 보상을 위한 화소값 선택 장치 및 방법
DE10302003B4 (de) * 2002-02-26 2011-06-16 Thomson Licensing S.A. Verfahren und Schaltung zur Bestimmung des Rauschanteils in einem Videosignal
WO2004012459A1 (ja) * 2002-07-26 2004-02-05 Matsushita Electric Industrial Co., Ltd. 動画像符号化方法、動画像復号化方法および記録媒体
JP4462823B2 (ja) * 2002-11-20 2010-05-12 ソニー株式会社 画像信号の処理装置および処理方法、それに使用される係数データの生成装置および生成方法、並びに各方法を実行するためのプログラム
JP2004179687A (ja) * 2002-11-22 2004-06-24 Toshiba Corp 動画像符号化/復号化方法及び装置
JP4003128B2 (ja) * 2002-12-24 2007-11-07 ソニー株式会社 画像データ処理装置および方法、記録媒体、並びにプログラム
GB2397957A (en) * 2003-01-30 2004-08-04 Qinetiq Ltd Target detection
JP4671696B2 (ja) * 2004-01-14 2011-04-20 パナソニック株式会社 動きベクトル検出装置
US20050163221A1 (en) * 2004-01-14 2005-07-28 Matsushita Electric Industrial Co., Ltd. Motion vector detecting device
US20050238102A1 (en) * 2004-04-23 2005-10-27 Samsung Electronics Co., Ltd. Hierarchical motion estimation apparatus and method
TWI253024B (en) * 2004-07-20 2006-04-11 Realtek Semiconductor Corp Method and apparatus for block matching
JP3880985B2 (ja) * 2004-08-05 2007-02-14 松下電器産業株式会社 動きベクトル検出装置および動きベクトル検出方法
TWI243600B (en) * 2004-09-17 2005-11-11 Primax Electronics Ltd Selected area comparison method with high-operational efficient
US20060259737A1 (en) * 2005-05-10 2006-11-16 Telairity Semiconductor, Inc. Vector processor with special purpose registers and high speed memory access
US20070150697A1 (en) * 2005-05-10 2007-06-28 Telairity Semiconductor, Inc. Vector processor with multi-pipe vector block matching
CN101300849B (zh) * 2005-11-01 2011-07-06 三叉微系统(远东)有限公司 数据处理系统
JP4793070B2 (ja) * 2006-04-12 2011-10-12 ソニー株式会社 動きベクトル探索方法及び装置
US20080031333A1 (en) * 2006-08-02 2008-02-07 Xinghai Billy Li Motion compensation module and methods for use therewith
KR100874949B1 (ko) 2006-11-15 2008-12-19 삼성전자주식회사 단일 명령 다중 자료 프로세서 및 그것을 위한 메모리어레이 구조
EP1927949A1 (de) * 2006-12-01 2008-06-04 Thomson Licensing Verarbeitungselement-Array mit lokalen Registern
EP1927950A1 (de) * 2006-12-01 2008-06-04 Thomson Licensing Verarbeitungselement-Array mit lokalen Registern
TWI469642B (zh) * 2006-12-04 2015-01-11 Nat Inst Chung Shan Science & Technology Compression of image data
US20090074310A1 (en) * 2007-09-19 2009-03-19 Chung Shan Institute Of Science And Technology, Armaments Bureau, M.N.D. Image data compression method
US20110173596A1 (en) * 2007-11-28 2011-07-14 Martin Vorbach Method for facilitating compilation of high-level code for varying architectures
JP5171539B2 (ja) * 2007-11-29 2013-03-27 キヤノン株式会社 共鳴トンネル構造体
US8477847B2 (en) * 2007-12-17 2013-07-02 Vixs Systems, Inc. Motion compensation module with fast intra pulse code modulation mode decisions and methods for use therewith
US8189668B2 (en) * 2007-12-18 2012-05-29 Vixs Systems, Inc. Video codec with shared intra-prediction module and method for use therewith
US8213512B2 (en) * 2008-05-28 2012-07-03 Cyberlink Corp. Determining an intermediate image
CN101477412B (zh) * 2008-06-27 2011-12-14 北京希格玛和芯微电子技术有限公司 子像素级精度的运动感知方法
FR2939207A1 (fr) * 2008-12-02 2010-06-04 Thales Sa Procede de filtrage cinematique temporel multidimensionnel de plots radar, de tour d'antenne a tour d'antenne
TWI399094B (zh) * 2009-06-30 2013-06-11 Silicon Integrated Sys Corp 自適應移動補償內插法與其裝置
US8654852B2 (en) * 2010-06-07 2014-02-18 Himax Technologies Ltd. Circuit for performing motion estimation and motion compensation
TWI571828B (zh) * 2013-01-02 2017-02-21 奇高電子股份有限公司 光學導航方法以及相關裝置
US20150146784A1 (en) * 2013-11-26 2015-05-28 Vixs Systems Inc. Motion compensation with moving window
WO2019072368A1 (en) 2017-10-09 2019-04-18 Huawei Technologies Co., Ltd. LIMITED MEMORY ACCESS WINDOW FOR MOTION VECTOR REFINEMENT
US11199561B2 (en) * 2018-12-31 2021-12-14 Robert Bosch Gmbh System and method for standardized evaluation of activity sequences
US11012708B1 (en) * 2019-12-04 2021-05-18 Amazon Technologies, Inc. Low-latency motion search for video encoder
US11601656B2 (en) * 2021-06-16 2023-03-07 Western Digital Technologies, Inc. Video processing in a data storage device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0309251A1 (de) * 1987-09-25 1989-03-29 BRITISH TELECOMMUNICATIONS public limited company Bewegungsabschätzung
EP0395293A1 (de) * 1989-04-26 1990-10-31 BRITISH TELECOMMUNICATIONS public limited company Bewegungseinschätzer
US5072293A (en) * 1989-08-29 1991-12-10 U.S. Philips Corporation Method of estimating motion in a picture signal
DE4023449C1 (de) * 1990-07-24 1992-01-23 Ant Nachrichtentechnik Gmbh, 7150 Backnang, De
US5173771A (en) * 1989-08-29 1992-12-22 Sony Corporation Motion detecting circuit for video image

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61113377A (ja) * 1984-11-07 1986-05-31 Sony Corp テレビジヨン信号の動き検出装置
GB2214751B (en) * 1988-02-01 1992-06-17 Plessey Co Plc Video signal coding
US4897720A (en) * 1988-03-14 1990-01-30 Bell Communications Research, Inc. Circuit implementation of block matching algorithm
JP2652195B2 (ja) * 1988-05-23 1997-09-10 富士通株式会社 ブロツクマツチング型動き検出回路
US4937666A (en) * 1989-12-04 1990-06-26 Bell Communications Research, Inc. Circuit implementation of block matching algorithm with fractional precision
JPH0453389A (ja) * 1990-06-21 1992-02-20 Graphics Commun Technol:Kk 動ベクトル検出装置
JPH04139986A (ja) * 1990-09-29 1992-05-13 Victor Co Of Japan Ltd 画像信号の動き補償予測符号化/復号化装置
GB2252468B (en) * 1991-02-04 1994-10-19 Sony Broadcast & Communication Television standards converters
US5276513A (en) * 1992-06-10 1994-01-04 Rca Thomson Licensing Corporation Implementation architecture for performing hierarchical motion analysis of video images in real time

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0309251A1 (de) * 1987-09-25 1989-03-29 BRITISH TELECOMMUNICATIONS public limited company Bewegungsabschätzung
EP0395293A1 (de) * 1989-04-26 1990-10-31 BRITISH TELECOMMUNICATIONS public limited company Bewegungseinschätzer
US5072293A (en) * 1989-08-29 1991-12-10 U.S. Philips Corporation Method of estimating motion in a picture signal
US5173771A (en) * 1989-08-29 1992-12-22 Sony Corporation Motion detecting circuit for video image
DE4023449C1 (de) * 1990-07-24 1992-01-23 Ant Nachrichtentechnik Gmbh, 7150 Backnang, De

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19501551A1 (de) * 1994-01-21 1995-08-03 Mitsubishi Electric Corp Bewegungsvektor-Ermittlungseinrichtung, welche dazu in der Lage ist, sich einer Mehrzahl von Voraussagearten anzupassen
DE19549369C2 (de) * 1994-01-21 1997-11-27 Mitsubishi Electric Corp Bewegungsvektor-Ermittlungseinrichtung
DE19549371C2 (de) * 1994-01-21 1997-11-27 Mitsubishi Electric Corp Bewegungsvektor-Ermittlungseinrichtung
DE19501551C2 (de) * 1994-01-21 1999-06-17 Mitsubishi Electric Corp Bewegungsvektor-Ermittlungseinrichtung zum Erzeugen einer Mehrzahl von Bewegungsvektoren
DE19549500C2 (de) * 1994-01-21 2000-05-25 Mitsubishi Electric Corp Bewegungsvektor-Ermittlungseinrichtung
US6674798B2 (en) 1994-01-21 2004-01-06 Renesas Technology Corp. Motion vector detecting device capable of accommodating a plurality of predictive modes
DE19549370B4 (de) * 1994-01-21 2004-03-18 Mitsubishi Denki K.K. Bewegungsvektor-Ermittlungseinrichtung

Also Published As

Publication number Publication date
FR2693290A1 (fr) 1994-01-07
FR2693290B1 (fr) 1995-07-28
DE4322343C2 (de) 1996-10-02
US5400087A (en) 1995-03-21

Similar Documents

Publication Publication Date Title
DE4322343C2 (de) Mittel zum Erfassen eines Bewegungsvektors und Verfahren zum Bestimmen eines Bewegungsvektors
DE19501551C2 (de) Bewegungsvektor-Ermittlungseinrichtung zum Erzeugen einer Mehrzahl von Bewegungsvektoren
EP0259562B1 (de) Verfahren zur bewegungskompensierten Bild-zu-Bild-Prädiktionscodierung
DE69836473T2 (de) Bewegungsschätzung und bewegungskompensierte interpolation
DD293933A5 (de) Bewegungsabschaetzeinrichtung
DE60014444T2 (de) Verfahren und vorrichtung zur bewegungsschätzung unter verwendung von nachbarmacroblöcken
DE69908562T2 (de) Bewegungsvektorenextrapolation zur transkodierung von videosequenzen
DE19506372B4 (de) Bi-Direktionales Bewegungsschätzverfahren und ein dafür vorgesehenes Gerät
DE4206280C2 (de) Verfahren zum Aufzeigen eines Bewegungsvektors
DE3704777C1 (de) Verfahren zum UEbertragen und zum Wiedergeben von Fernsehbildsequenzen
DE69628467T2 (de) Videokodierung- und dekodierungsvorrichtung
DE60307354T2 (de) Chrominanz-Bewegungsvektorrundung
DE69632232T2 (de) Verfahren und Vorrichtung zur Komprimierung von Videoinformationen mit bewegungsabhängiger Prädiktion
US5949486A (en) Unit for detecting motion vector for motion compensation
DE19521973A1 (de) Bilddecodiervorrichtung
DE19704439A1 (de) Verfahren und Vorrichtung zur Bewegungsschätzung in einem digitalen Videocodierer unter Verwendung von Trajektorien
DE69433537T2 (de) Vorrichtung zur Dekodierung von Bewegtbilddaten
DE60207756T2 (de) Bilddatenzugriff
DE3338855A1 (de) Videosignalverarbeitungsvorrichtung
DE69912208T2 (de) Verfahren und Vorrichtung zur Videocodierung mit hoher Effizienz
DE69628269T2 (de) Konversionsverfahren einer Ausgangsdatenfolge in Invers-DCT und Schaltung davon
DE19524688C1 (de) Verfahren zur Dekodierung und Kodierung eines komprimierten Videodatenstroms mit reduziertem Speicherbedarf
DE69636352T2 (de) Hierarchische Kodierungs-Vorrichtung und -Verfahren mit Speicher für ein digitales Bildsignal
DE19951341B4 (de) Verfahren zur bewegungskompensierenden Prädiktion von Bewegtbildern sowie Einrichtung hierzu
EP1110407B1 (de) Verfahren und anordnung zur codierung und decodierung eines digitalisierten bildes mit anwendung eines gesamtbewegungsvektors

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee