DE69421158T2 - Bewegungsprädiktionsprozessor und -vorrichtung - Google Patents
Bewegungsprädiktionsprozessor und -vorrichtungInfo
- Publication number
- DE69421158T2 DE69421158T2 DE69421158T DE69421158T DE69421158T2 DE 69421158 T2 DE69421158 T2 DE 69421158T2 DE 69421158 T DE69421158 T DE 69421158T DE 69421158 T DE69421158 T DE 69421158T DE 69421158 T2 DE69421158 T2 DE 69421158T2
- Authority
- DE
- Germany
- Prior art keywords
- motion prediction
- motion
- block
- prediction
- motion vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/43—Hardware specially adapted for motion estimation or compensation
- H04N19/433—Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/14—Picture signal circuitry for video frequency region
- H04N5/144—Movement detection
- H04N5/145—Movement estimation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Image Analysis (AREA)
- Processing Or Creating Images (AREA)
- Image Processing (AREA)
Description
- Diese Erfindung betrifft einen Prozessor zum Durchführen einer Bewegungsvorhersage, die in einem Bildverarbeitungsgerät verwendet wird, zum Komprimieren der Datenmenge für eine Bewegungsbild - Abbildung. Genauer gesagt betrifft die vorliegende Erfindung Bewegungsvorhersageprozessoren, die parallel betrieben werden.
- Da Bewegungsbilder eine extrem große Datenmenge haben, ist es erforderlich, Daten auf der Übertragungs oder Aufzeichnungsseite zu komprimieren und die komprimierten Daten auf der Empfangs- oder Wiedergabeseite zu expandieren. Eine derartige Kompression/Expansion wird auch Codieren/Decodieren genannt, und solche Systeme wie das System CCITT Recommendation H.261 zur Verwendung bei beispielsweise einem Bildtelefon - oder einem Telekonferenzsystem und MPEG (Expertengruppe für eine Abbildcodierung bewegter Bilder) zum Aufzeichnen des Bildes auf einem Speichermedium sind gegenwärtig bekannt.
- Bei einem solchen Kompressionssystem wird gegenwärtig das Frame - zu - Frame - Vorhersagecodiersystem zur Bewegungskompensation verwendet, wobei deshalb, weil die Korrelation zwischen Frames, die das Bewegungsbild bilden, einen hohen Wert hat, ein Vorhersageframe unter Verwendung eines zuvor codierten Frames formuliert wird, und der Unterschied zwischen dem Frame, der gerade codiert wird, der hierin aktueller Frame genannt wird, und dem Vorhersageframe, d. h. der Vorhersagefehler, wird zum Verbessern des Kompressionsverhältnisses codiert.
- Zusätzlich wird deshalb, weil ein sich bewegendes Objekt seine Position in einem Frame Stück für Stück etwas ändert, wenn der Vorhersageframe bewegt wird, um der Bewegung des Objekts zu folgen, und der Vorhersageframe darauffolgend genommen wird, der Vorhersagefehler zum entsprechenden Erhöhen des Kompressionsverhältnisses verringert. Die Informationen, die eine solche Bewegung darstellen, werden Bewegungsvektor genannt und werden zusammen mit den Vorhersagefehlern übertragen oder aufgezeichnet.
- Der Vorhersageframe wird aus dem in der Vergangenheit übertragenen oder aufgezeichneten Frame formuliert. Gemäß dem System CCITT Recommendation H.261 wird der Frame, der dem aktuellen Frame direkt vorangeht, als der Vorhersageframe verwendet.
- Beim MPEG- System können zusätzlich zu einem vergangenen Frame, der dem aktuellen Frame um einige Frames vorangeht, ein zukünftiger Frame, der dem aktuellen Frame um einige Frames nachfolgt, und ein bei einer Interpolation des vergangenen und des zukünftigen Frames entlang der Zeitachse erhaltener imaginärer Frame als der Vorhersageframe verwendet werden.
- Jedoch dann, wenn der Vorhersageframe aus einem solchen zukünftigen Frame zu formulieren ist, wird die Framesequenz verändert, so daß der aktuelle Frame zeitweilig nach dem zukünftigen Frame codiert wird, auf den er sich bezieht.
- Wenn die Korrelation zwischen dem aktuellen Frame und dem Vorhersageframe niedrig ist, wie beispielsweise dann, wenn die Szene des Bewegungsbildes geändert worden ist, wird das Kompressionsverhältnis höher werden, wenn der aktuelle Frame unabhängig codiert wird, als dann, wenn der Vorhersageframe codiert wird. Somit muß das Codieren des Vorhersagefehlers zur Kompression adaptiv umgeschaltet oder geändert werden, um ein Codieren des aktuellen Frames zu lenken, oder umgekehrt.
- Das Vorhersagecodieren, das einen vergangenen Frame als den Vorhersageframe verwendet, wird die Vorwärtsvorhersagecodierung genannt, während dasjenige, das einen zukünftigen Frame als den Vorhersageframe verwendet, die Rückwärtsvorhersagecodierung genannt wird, und dasjenige das einen durch Interpolieren des vergangenen und des zukünftigen Frames auf der Zeitachse erhaltenen imaginären Frame als den Vorhersageframe verwendet, das bidirektionale Vorhersagecodieren genannt wird. Diese drei werden Frame-zu-Frame-Codierung genannt.
- Die direkte Codierung des aktuellen Frames wird die Innerframe-Codierung genannt.
- Das MPEG- System stellt die Vorwärtsvorhersagecodierung, die Rückwärtsvorhersagecodierung, die bidirektionale Vorhersagecodierung und die Innerframe - Vorhersagecodierung zur Verfügung, während das System CCITT Recommendation H.261 die Vorwärtsvorhersagecodierung und die Innerframe-Codierung zur Verfügung stellt.
- Die Fig. 10 und 13 zeigen die praktischen Verarbeitungssequenzen für das Bewegungsbild-Codiersystem gemäß dem System CCITT Recommendation H.261 und diejenigen für das Bewegungsbild-Codiersystem gemäß dem MPEG- System.
- Die vorliegende Erfindung ist auf den Bewegungsvorhersageprozessor zum Ausführen einer in Fig. 10 gezeigten Bewegungsvorhersageeinheit 111 und einer in Fig. 13 gezeigten Bewegungsvorhersageeinheit 121 gerichtet. Jedoch wird zuerst das Codiersystem in seiner Gesamtheit unter Bezugnahme auf die Zeichnungen erklärt.
- Gemäß Fig. 10 wird das Bewegungsbild-Codiersystem gemäß CCITT Recommendation H.261 erklärt.
- Der aktuelle Frame wird in viele rechteckförmige Blöcke unterteilt, wie es in Fig. 11 gezeigt ist, wobei diese Blöcke sequentiell einem Anschluß 100 der Fig. 10 zum Codieren zugeführt werden. Die Blockgröße ist 16 · 16 Pixel, d. h. eine Matrix von 16 horizontalen Pixeln mal 16 vertikalen Pixeln. Jedoch erfolgt die folgende Beschreibung der Einfachheit halber unter Bezugnahme auf einen Block mit einer kleineren Größe.
- Im aktuellen Frame wird der gegenwärtig verarbeitete Block aktueller Block genannt.
- Innerhalb eines Referenzframespeichers 112 wird ein Referenzframe gespeichert, auf den beim Finden des Bewegungsvektors Bezug genommen wird. Gemäß dem System CCITT Recommendation H.261 werden Luminanzkomponenten eines direkt vorangehenden Frames, auf welchen zur Vorwärtsvorhersage Bezug genommen wird, im Speicher 112 gespeichert.
- Der aktuelle Block und ein aus dem Referenzframespeicher 112 ausgelesener Referenzbereich werden zur Bewegungsvorhersageeinheit 111 geführt. Der Refe renzbereich ist normalerweise ein Bereich, der bezüglich der Größe größer als der aktuelle Block ist und einen Block bei derselben Position innerhalb des Referenzframes umgibt. Der Bewegungsvektor wird innerhalb dieses Referenzbereichs erfaßt.
- Eine Bewegungsvektor-Erfassungseinheit 114 innerhalb der Bewegungsvorhersageeinheit 111 sucht nach einem Block im Referenzbereich, der die stärkste Ähnlichkeit zum aktuellen Block hat, und der hierin Ähnlichkeitsblock genannt wird, und gibt einen Bewegungsvektor zu einem lokalen Decodierframespeicher 110 aus.
- Die Fig. 11 zeigt die Beziehung zwischen den Bildern. Der Unterschied bzw. die Differenz zwischen einer Position 3 des aktuellen Blocks und einer Position 6 des Ähnlichkeitsblocks 5, der durch die Suche im Referenzbereich 4 auf dem aktuellen Frame 1 gefunden wird, stellt einen Bewegungsvektor 7 des aktuellen Blocks dar.
- Aus der Bewegungsvektorerfassung 114 in der Bewegungsvorhersageeinheit 111 werden in einer Codierungstyp-Beurteilungseinheit 115 in der Bewegungsvorhersageeinheit 111 Daten zum Beurteilen der Ähnlichkeit zwischen dem aktuellen Block und dem Ähnlichkeitsblock berechnet, und welche von der Vorwärtsvorhersagecodierung oder der Innerframe-Codierung in bezug auf das Kompressionsverhältnis höher ist. Der Codierungstyp wird als Ergebnis einer solchen Beurteilung zu einem Selektor 102 ausgegeben.
- Mit dem Selektor 102 sind ein von einem lokalen Decodierframespeicher 110 ausgegebener Vorhersageblock und ein Block mit nur Nullen verbunden. Der Vorhersageblock ist ein Block, der bei einer Position des Ähnlichkeitsblocks des im lokalen Decodierframespeicher 110 gespeicherten Frames angeordnet ist. Die Stelle im Frame des Vorhersageblocks wird aus dem Eingangsbewegungsvektor und der aktuellen Blockposition bestimmt und wird entsprechend ausgegeben.
- Der Selektor 102 wählt den Vorhersageblock oder den Block mit nur Nullen, wenn der Codierungstyp die Vorwärtsvorhersagecodierung bzw. die Innerframe - Codierung ist, und gibt den ausgewählten Block zu einem Subtrahierer 101 und einem Addierer 109 aus. Somit gibt der Subtrahierer 101 die Differenz zwischen dem aktuellen Block und dem Vorhersageblock aus, d. h. einen Vorhersagefehlerblock, wenn der Codierungstyp die Vorwärtsvorhersagecodierung ist, wohingegen er die Differenz zwischen dem aktuellen Block und einem Block mit nur Nullen ausgibt, d. h. den aktuellen Block selbst, wenn der Codierungstyp die Innerframe- Codierung ist.
- Der Vorhersagefehlerblock oder der aktuelle Block wird in einer Einheit zur diskreten Kosinustransformation (DCT) 103 durch eine zweidimensionale diskrete Kosinustransformation in Frequenzkomponenten umgewandelt, die bei einem Quantisierer 104 ausgegeben werden, der die Frequenzkomponenten durch einen Parameter teilt, der Quantisierungsschwellenwert genannt wird.
- Der Quantisierungsschwellenwert wird in bezug auf die Größe in Richtung zu einer höheren Frequenz und in Richtung zu einer niedrigeren Frequenz jeweils größer oder kleiner. Folglich werden die Informationen in den Hochfrequenzkomponenten zu einem größeren oder kleineren Ausmaß verloren. Jedoch kann dies kaum visuell wahrgenommen werden, so daß eine Datenkompression möglich wird, ohne die Bildqualität zu verschlechtern.
- Die quantisierten Frequenzkomponenten werden in einer Huffman-Codiereinheit 105 durch Verwenden statistischer Eigenschaften weiter komprimiert und zu einem Selektor 113 ausgegeben. Der bei der Bewegungsvorhersageeinheit 111 ausgegebene Codiertyp wird zusammen mit dem Bewegungsvektor ausgegeben, wenn er die Vorwärtsvorhersagecodierung ist.
- Da der aktuelle Frame als Vorhersageframe für einen nachfolgenden Frame verwendet wird, werden die quantisierten Frequenzkomponenten bei einer Invers - Quantisierungseinheit 107 ausgegeben, die die quantisierten Frequenzkomponenten mit dem Quantisierungsschwellenwert multipliziert, um die Frequenzkomponenten wiederherzustellen.
- Die so wiederhergestellten Frequenzkomponenten werden mit einer zweidimensionalen inversen diskreten Kosinustransformation durch eine Invers -DCT- oder IDCT- Einheit 108 verarbeitet, um den Vorhersagefehlerblock oder den aktuellen Block wiederherzustellen, der zum Addierer einer Additionseinheit 109 ausgegeben wird. Aufgrund des Quantisierungsfehlers und des Verarbeitungsfehlers, die von der DCT und der IDCT kommen, ist der so wiederhergestellte Block nicht vollständig übereinstimmend mit dem aktuellen Block oder dem zur DCT- Einheit 103 eingegebenen Vorhersagefehlerblock. Es ist jedoch für den wiederhergestellten Block möglich, Werte anzunehmen, die dem aktuellen Block oder dem Vorhersagefehlerblock ausreichend nahe sind.
- Wenn der Codierungstyp die Vorwärtsvorhersagecodierung ist, addiert der Addierer 109 den wiederhergestellten Vorhersagefehlerblock zum Vorhersageblock, der vom Selektor 102 ausgegeben wird, um den aktuellen Block in den Speicher 110 wiederherzustellen. Wenn der Codierungstyp die Innerframe-Codierung ist, werden der wiederhergestellte aktuelle Block und der Block mit nur Nullen zum Wiederherstellen des aktuellen Blocks auf ähnliche Weise miteinander addiert.
- Der so decodierte aktuelle Block wird im lokalen decodierten Framespeicher 110 gespeichert, um als Vorhersageblock für nachfolgende Frames verwendet zu werden. Ebenso werden die Inhalte des Referenzframespeichers 112 einem Updaten unterzogen. Der im Referenzframespeicher 112 gespeicherte Referenzframe enthält auch einen Luminanzkomponentenblock, der unter decodierten Blöcken ist, die im lokalen decodierten Framespeicher 110 gespeichert sind, und der für eine Bewegungsvorhersage verwendet wird.
- Wie es oben diskutiert ist, wird der aktuelle Frame durch die Vorwärtsvorhersagecodierung oder die Innerframe-Codierung Block für Block komprimiert.
- Die Bewegungsvorhersageeinheit 111 in Fig. 10 spielt die Rolle eines Suchens nach einem Ähnlichkeitsblock im Referenzbereich, um den Bewegungsvektor zu erfassen und um den Codierungstyp zu bestimmen. Der Bewegungsvektor wird durch Aufteilen in Blöcke derselben Größe wie der aktuelle Block innerhalb des Referenzbereichs, durch Berechnen der Summe von Absolutwerten von Fehlern von Pixeln, die die Blöcke bilden, und durch Nehmen des Blocks mit dem minimalen Wert der Absolutwerte der Fehler als den Ähnlichkeitsblock erfaßt. Dieser Summenwert wird hierin die Summe von Absolutwerten der Vorhersagefehler genannt.
- Unter der Annahme, daß bei der Blockgröße von M horizontalen Pixeln mal N vertikalen Pixeln der aktuelle Block f(ix, iy) ist und der von innerhalb des Referenzbereichs abgeschnittene bzw. abgeteilte Block g(ix + vx, iy + vy) ist, wobei ix, iy jeweils für horizontale und vertikale Koordinatenwerte mit 0 ≤ ix und iy ≤ M-1 steht und vx und vy jeweils für horizontale und vertikale Komponenten steht, die die Positionsdifferenz vom aktuellen Block darstellen, ist der Ähnlichkeitsblock ein Block mit dem kleinsten Wert der Summen von Absolutwerten der Vorhersagefehler, was durch die folgende Gleichung (1) dargestellt wird, während der Bewegungsvektor durch (vx, vy) gegeben ist:
- Summe von Absolutwerten von Vorhersagefehlern:
- Das Aufteilen der Blöcke derselben Größe wie der aktuelle Block innerhalb des Referenzbereichs und das Berechnen der Summen von Absolutwerten der Vorhersagefehler für diese Blöcke wird hierin Blockanpassung genannt.
- Wie für den Codierungstyp wird es bevorzugt, die Codierungsquantität, die für eine Vorwärtsvorhersagecodierung erforderlich ist, und diejenige, die für eine Innerframe-Codierung erforderlich ist, direkt zu vergleichen und den Codierungstyp mit dem kleineren Wert der Codierungsquantität auszuwählen.
- Jedoch ist dieses Verfahren im allgemeinen nicht geeignet, weil das Codieren zweimal ausgeführt wird, wodurch sich die Verarbeitung in die Länge zieht. Folglich ist es die aktuelle Praxis, abzuschätzen, welcher der Codierungstypen die kleinere Codierungsquantität ergibt, um den Codierungstyp auszuwählen.
- Dafür wird die Summe von Absolutwerten der Abweichungen vom Mittelwert des aktuellen Blocks, die durch die Formel (2) dargestellt wird und die hierin die Summe von Absolutwerten von AC- Komponenten genannt wird, mit der Summe von Absolutwerten der Vorhersagefehler verglichen, wie sie zur Zeit der Bewegungsvektorerfassung gefunden wird.
- Beispielsweise wird die Vorwärtsvorhersagecodierung oder die Innerframe- Codierung angenommen, wenn jeweils (der kleinste Wert der Summe der Absolutwerte der Vorhersagefehler) < (Summe der Absolutwerte der AC- Komponenten) oder (der kleinste Wert der Summe der Absolutwerte der Vorhersagefehler) ≤ (Summe der Absolutwerte der AC- Komponenten) gilt.
- Die Summe der Absolutwerte der AC- Komponenten
- Wobei der Mittelwert favr durch die folgende Gleichung (2)' gegeben ist:
- Nun wird das Bewegungsbild-Codierungssystem gemäß dem MPEG- System der Fig. 13 erklärt. Beim MPEG- System sind vier Codierungstypen verfügbar, d. h. die Vorwärtsvorhersagecodierung, die Rückwärtsvorhersagecodierung, die bidirektionale Vorhersagecodierung und die Innerframe - Vorhersage - Codierung. Es ist nötig, das Vorhersagecodierungssystem zu der Zeit einer Beurteilung des Codierungstyps auszuwählen.
- Dafür enthält das Bewegungsbild-Codierungssystem der Fig. 13 zusätzlich zu den Komponenten, die in Fig. 10 gezeigt sind, eine Einheit 116 zum Bilden eines bidirektionalen Vorhersageblocks und einen Selektor 118. Darüber hinaus ist eine Vorhersagefehler-Bewertungseinheit 126 zum Auswählen eines Vorhersageblocks, der das höchste Kompressionsverhältnis unter den drei Kandidatenvorhersageblöcken ergibt, in der Bewegungsvorhersageeinheit 121 vorgesehen.
- Der lokale Decodierframespeicher 110 und der Referenzframespeicher 112 speichern zwei Frames, nämlich einen vergangenen Frame für eine Vorwärtsvorhersage und einen zukünftigen Frame für eine Rückwärtsvorhersage. Die Verarbeitungsoperationen sind sonst dieselben wie diejenigen, die unter Bezugnahme auf Fig. 10 erklärt sind. Im folgenden wird der Unterschied gegenüber dem System der Fig. 10 erklärt.
- Der aktuelle Block und der aus dem Referenzframespeicher 112 ausgelesene Referenzbereich werden zur Bewegungsvorhersageeinheit 121 zugeführt. Da der Bewegungsvektor aus zwei Frames gefunden wird, nämlich einem vergangenen Frame und einem zukünftigen Frame beim MPEG-System, wird der Referenzbereich getrennt von den zwei Frames bei der Verarbeitung eines aktuellen Blocks gelesen, und die Bewegungsvektorerfassung wird zweimal ausgeführt. Die jeweiligen Bewegungsvektoren werden zum lokalen Decodierframespeicher 110 ausgegeben. Der Kandidat für die Vorhersageblöcke, die zur Vorwärtsvorhersagecodierung und zur Rückwärtsvorhersagecodierung verwendet werden, werden von den darin gespeicherten vergangenen und zukünftigen Frames ausgegeben.
- Für die Kandidaten für Vorwärts- und Rückwärtsvorhersageblöcke wird in einer Einheit 116 zum Bilden eines bidirektionalen Vorhersageblocks ein Durchschnitt gebildet, um den Kandidaten für Vorhersageblöcke zu erzeugen, die bei der bidirektionalen Vorhersagecodierung verwendet werden. Die drei Kandidaten für Vorhersageblöcke werden zum Selektor 118 und einer Vorhersagefehler - Bewertungseinheit 126 der Bewegungsvorhersageeinheit 121 ausgegeben.
- Die Vorhersagefehler-Bewertungseinheit 126 wählt einen der drei Vorhersagekandidatenblöcke aus, von welchem angenommen wird, daß er das höchste Kompressionsverhältnis ergibt. Für eine derartige Auswahl wird ein solcher Kandidat ausgewählt, der den kleinsten Wert der Summe von Absolutwerten der Vorhersagefehler ergibt, der durch Einsetzen jedes Vorhersagekandidatenblocks in die Stelle von g(ix + iy, iy + vy) der obigen Gleichung (1) berechnet wird. Das Innerframevorhersage-System, wie es ausgewählt ist, und die entsprechende Summe von Absolutwerten der Vorhersagefehler werden zu einer Codierungstyp- Beurteilungseinheit 125 ausgegeben.
- Ähnlich wie die Codierungstyp-Beurteilungseinheit 115 (Fig. 10) vergleicht die Codierungstyp-Beurteilungseinheit 125 die Summe von Absolutwerten der AC- Komponenten des aktuellen Blocks und die Summe von Absolutwerten der Vorhersagefehler, die von der Vorhersagefehler-Bewertungseinheit 126 eingegeben wird, um zwischen der Frame-zu-Frame-Codierung und der Innerframe-Codierung zu entscheiden. Der Codierungstyp wird als das Ergebnis der Beurteilung zu den Selektoren 102, 118 ausgegeben.
- Der Codierungstyp des MPEG- Systems ist einer der Vorwärtsvorhersagecodierung, der Rückwärtsvorhersagecodierung, der bidirektionalen Vorhersagecodierung und der Innerframevorhersage- Codierung, wie es oben angegeben ist. Der Selektor 102 wählt den Block von nur Nullen aus, wenn der Codierungstyp die Innerframecodierung ist, und sonst die Ausgabe des Selektors 118.
- Einer von 3 Typen von Vorhersageblockkandidaten und dem Block von nur Nullen wird vom Selektor 118 ausgegeben. Wie beim Bewegungsbild-Codierungssystem der Fig. 10 wird ein Vorhersagefehlerblock oder ein aktueller Block von einem Subtrahierer 101 ausgegeben und wird in darauffolgenden Schritten codiert.
- Wenn der aktuelle Frame als Vorhersageframe für nachfolgende Frames verwendet wird, wird der durch den Addierer 109 decodierte aktuelle Block mit einem älteren Frame im lokalen Decodierframespeicher 110 ausgetauscht, während auch der Referenzframespeicher 112 einem Updaten unterzogen wird. Wenn die Größe des Referenzbereichs N horizontale Pixel mal N vertikale Pixel (N > M) ist, muß eine Blockanpassung (N - M + 1)² mal für eine Bewegungsvektorerfassung durchgeführt werden, um den minimalen Wert aus den (N - M + 1)² Summen von Absolutwerten der Vorhersagefehler zu finden. Die Summe der absoluten Fehlerwerte muß M² mal für jede Blockanpassung gefunden werden. Wenn der Referenzbereich breit ist und innerhalb des Bildes begrenzt ist, wird das Kompressionsverhältnis wahrscheinlich erhöht, während die Bildqualität beibehalten wird.
- Da die Bewegungsvektorerfassung äußerst viele Berechnungen benötigt, sind Versuche zur Verringerung der Verarbeitungszeit durchgeführt worden.
- Die Summe der Absolutwerte der AC- Komponenten, die durch die Gleichung (2) dargestellt wird, kann durch Setzen von g(ix + vx, iy + vy) der Gleichung (1) auf fvar gefunden werden. Darüber hinaus kann fvar auch durch Setzen von g(ix + vx, iy + vy) der Gleichung (1) auf 0 und eine Teilung durch (M X M) gefunden werden. Da M häufig eine Potenz von 2 ist, kann die Division durch Abschneiden von niederwertigeren Bits ausgeführt werden. Somit ist es bei einer Vorrichtung zum Berechnen der Summe von Absolutwerten der Vorhersagefehler möglich, Bewertungsdaten zu finden, die zum Bestimmen des Codierungstyps erforderlich sind.
- Als herkömmliche Vorrichtungen zum Erfassen des Bewegungsvektors sind im japanischen offengelegten Patent JP-A-3-106283 oder in der japanischen Patentveröffentlichung mit der Nr. JP-A-5-012916 Bewegungsvektorerfassungsvorrichtungen offenbart. Eine Vorrichtung zum Erfassen des Bewegungsvektors durch ein Verarbeitungsmodul mit vielen Blockanpassungseinrichtungen ist in dem ersteren vorgeschlagen, während im letzteren eine Anordnung zum Erfassen des Bewegungsvektors mit höherer Geschwindigkeit durch Verbinden einer Vielzahl von diesen Verarbeitungsmodulen miteinander vorgeschlagen ist.
- Fig. 4 zeigt in einem Blockdiagramm einen Bewegungsvektorprozessor, der die Bewegungsvektorerfassungsvorrichtung verwendet, die in der japanischen Patentveröffentlichung mit der Nr. JP-A-5-012916 offenbart ist. Dieser Bewegungsvorhersageprozessor hat drei Verarbeitungsmodule, die jeweils den Bewegungsvektor in einem Bereich von ± 1 horizontalen Pixel und ± 4 vertikalen Pixel erfassen können, und er erfaßt den Bewegungsvektor in einem Bereich von ± 4 horizontalen Pixeln und ± 4 vertikalen Pixeln.
- Der aktuelle Block enthält drei horizontale Pixel mal drei vertikale Pixel, und der Referenzbereich enthält 11 horizontale Pixel mal 11 vertikale Pixel, wobei der Referenzbereich derart positioniert ist, daß er beim aktuellen Block zentriert ist. Dä der Referenzbereich vom aktuellen Block aus um ± 4 horizontale Pixel und ± 4 vertikale Pixel vergrößert ist, kann der Bewegungsvektor innerhalb dieses Bereichs erfaßt werden.
- Beim gegenwärtigen Beispiel muß der minimale Wert aus 92 Summen von Absolutwerten der Vorhersagefehler gefunden werden, die durch (11 - 3 + 1)² = 9² Blockanpassungsoperationen erhalten werden.
- Unter der Annahme, daß der Referenzbereich g(kx, ky) ist, wie es in Fig. 5 gezeigt ist, wobei kx, ky jeweils für horizontale und vertikale Koordinaten mit 0 ≤ kx, ky ≤1 10 steht, ist der Bereich, der durch das Verarbeitungsmodul 75 der Fig. 4 in Anspruch genommen wird, 0 ≤ kx 4 und 0 ≤ ky ≤ 10; der Bereich, der durch das Verarbeitungsmodul 76 der Fig. 4 in Anspruch genommen wird, ist 3 ≤ kx 7 und 0 ≤ ky ≤ 10; und der Bereich, der durch das Verarbeitungsmodul 77 der Fig. 4 in Anspruch genommen wird ist 6 ≤ kx 10 und 0 ≤ ky ≤ 10, wobei jeder Bereich 5 horizontale Pixel und 11 vertikale Pixel hat.
- In diesen Bereichen wiederholt jedes Verarbeitungsmodul die Blockanpassung dreimal in der horizontalen Richtung und neunmal in der vertikalen Richtung. Da der Referenzbereich, der durch ein jeweiliges Verarbeitungsmodul in Anspruch genommen wird, fünf horizontale Pixel mal elf vertikale Pixel ist, kann der Bewegungsvektor innerhalb eines Bereichs von ± 1 horizontale Pixel und ± 4 vertikale Pixel erfaßt werden.
- Jedes Verarbeitungsmodul hat drei Blockanpassungseinrichtungen darin, wie es in Fig. 4 gezeigt ist. Der zugeteilte Bewegungsvektorerfassungsbereich ist in drei Unterbereiche unterteilt, von welchen jeder durch drei Blockanpassungseinrichtungen behandelt wird.
- Beispielsweise wiederholt die erste Blockanpassungseinrichtung 161 des Moduls 75 die Blockanpassung neunmal innerhalb von 0 ≤ kx ≤ 2 und 0 ≤ ky ≤ 10 in der vertikalen Richtung. Die zweite Blockanpassungseinrichtung 162 wiederholt die Blockanpassung neunmal innerhalb von 1 ≤ kx ≤ 3 und 0 ≤ ky ≤ 10 in der vertikalen Richtung. Die dritte Blockanpassungseinrichtung 163 wiederholt die Blockanpassung neunmal innerhalb von 2 ≤kx ≤ 4 und 0 ≤ ky ≤ 10 in der vertikalen Richtung. Somit führt das Verarbeitungsmodul 75 eine Blockanpassung dreimal in der horizontalen Richtung und neunmal in der vertikalen Richtung in einem Bereich von 0 kx ≤ 4 und 0 ≤ ky ≤ 10 aus.
- Zum Zuführen der Pixel des Referenzbereichs zu diesen Verarbeitungsmodulen ist der Referenzbereich in vier Unterbereiche unterteilt, was einer mehr als die Anzahl der Verarbeitungsmodule ist, und die Pixel werden parallel zugeführt.
- Nun wird die Verarbeitungszeit erklärt. Jedes Verarbeitungsmodul behandelt den ihm zugeteilten Bereich durch neun Zyklen, wobei jeder Zyklus aus drei horizontalen Blockanpassungsoperationen besteht. Somit führt jede der drei Blockanpassungseinrichtungen eine Blockanpassung einmal in jedem Zyklus durch.
- Im ersten Zyklus wird der aktuelle Block f(ix, iy) zu einem Anschluß 70 in der Abtastsequenz Pixel für Pixel in der horizontalen Richtung eingegeben, d. h. in der Sequenz von f(0,0), f(1,0), f(2,0), f(0,1)... f(2, 2). Es wird angemerkt, daß ix und iy jeweils für horizontale und vertikale Koordinaten mit 0 ≤ ix, i< ≤ 2 steht.
- Diese Pixel werden von einer Signalleitung 171 nach einer Verzögerung von drei Pixeln einzeln zum Verarbeitungsmodul 76 zugeführt. Das bedeutet, daß f(0,0) auf der Signalleitung 171 erscheint, wenn f(1, 1) zum Anschluß 70 zugeführt wird. Die Pixel werden nach einer Verzögerung von drei Pixeln auf ähnliche Weise von der Signalleitung 172 zum Verarbeitungsmodul 77 zugeführt.
- Vom Anschluß 71 werden obere neun Pixel von g(kx, ky), die bei B1 in Fig. 5 gezeigt sind, (0 ≤ kx ≤ 2 und 0 ≤ ky ≤ 10), in der Abtastsequenz Pixel für Pixel in der horizontalen Richtung eingegeben, d. h. in der Sequenz von g(0,0), g(1,0), g(2,0), g(0,1), ... g(2, 2). Diese Pixel werden zu einer derartigen Zeitgabe eingegeben, daß g(0,0) zum Anschluß 71 zugeführt wird, wenn f(0,0) zum Anschluß 70 zugeführt wird.
- Von einem Anschluß 72 werden obere neun Pixel von g(kx, ky), die bei B2 in Fig. 5 gezeigt sind, (0 ≤ ky ≤ 10), nach einer Verzögerung um drei Pixel gegenüber g(0,0) in der Sequenz einer horizontalen Abtastung von einem Pixel eingegeben, d. h. in der Sequenz von g(3,0), g(4,0), g(5,0), g(3,1)... g(5,2).
- Von einem Anschluß 73 werden obere neun Pixel von g(kx, ky), die bei B3 in Fig. 5 gezeigt sind, (6 ≤ kx ≤ 8 und 8 ≤ ky ≤ 10), nach einer Verzögerung um drei Pixel gegenüber g(3,0) in der Sequenz von g(6,0), g(7,0), g(8,0), g(6,1)... g(8,2) auf ähnliche Weise wie oben eingegeben.
- Von einem Anschluß 74 werden nach einer Verzögerung von drei Pixeln gegenüber g(6,0) obere sechs Pixel von g(kx, ky), die bei B4 in Fig. 5 gezeigt sind, (9 < kx ≤ 10 und 0 ≤ ky ≤ 10), in der Sequenz einer horizontalen Abtastung von einem Pixel eingegeben, d. h. in der Sequenz von g(9,0), g(10,0), X, g(9,1), ... g(10,2). Das bedeutet, daß durch Addieren von einer weiteren Zeile zur rechten Seite bestimmt wird, daß neun Pixel vorhanden sind. X bedeutet ungültige Eingangsdaten. Somit werden die Pixel in der folgenden Sequenz eingegeben.
- f(0,0) f(1,0) f(2,0) f(0,1) f(1, 1) f(2,1) f(0,2) f(1, 2) f(2, 2)
- g(0,0) g(1,0) g(2,0) g(0,1) g(1, 1) g(2,1) g(0,2) g(1, 2) g(2, 2)
- g(3,0) g(4,0) g(5,0) g(3,1) g(4,1) g(5,1) g(3,2) g(4,2) g(5,2)
- Die Pixel werden beim Verarbeitungsmodul 76 mit einer Verzögerung von drei Pixel gegenüber dem Verarbeitungsmodul 75 in der folgenden Sequenz eingegeben:
- f(0,0) f(1,0) f(2,0) f(0,1) f(1, 1) f(2,1) f(0,2) f(1, 2) f(2, 2)
- g(3,0) g(4,0) g(5,0) g(3,1) g(4,1) g(5,1) g(3,2) g(4,2) g(5,2)
- g(6,0) g(7,0) g(8,0) g(6,1) g(7,1) g(8,1) g(6,2) g(7,2) g(8,2)
- Die Pixel werden beim Verarbeitungsmodul 77 mit einer Verzögerung von drei Pixel gegenüber dem Verarbeitungsmodul 76 in der folgenden Sequenz eingegeben:
- f(0,0) f(1,0) f(2,0) f(0,1) f(1, 1) f(2,1) f(0,2) f(1, 2) f(2, 2)
- g(6,O) g(7,0) g(8,O) g(6,1) g(7,1) g(8,1) g(6,2) g(7,2) g(8,2)
- g(9,0) g(10,0) X g(9,1) g(10,1) X g(9,2) g(10,2) X
- Durch Zuführen der Pixel des aktuellen Blocks auf diese Weise und durch geeignetes Auswählen der Pixel aus einem der gegenwärtig zugeführten Referenzbereiche in der folgenden Weise, ist es möglich, mit den drei Blockanpassungseinrichtungen des Verarbeitungsmoduls 75 Berechnungen für die Summe von Absolutwerten der Vorhersagefehler der obigen Gleichung (1) auszuführen, um den ersten Zyklus auszuführen. Im folgenden wird g(kx, ky) durch die erste Blockanpassungseinrichtung 161 des Verarbeitungsmoduls 75 ausgewählt.
- g(0,0) g(1,0) g(2,0) g(0,1) g(1, 1) g(2,1) g(0,2) g(1, 2) g(2, 2)
- Das folgende ist g(kx, ky), das durch die zweite Blockanpassungseinrichtung 162 des Verarbeitungsmoduls 75 ausgewählt wird. Eine Auswahl der Anschlüsse 71, 72 wird durch einen Selektor 166 durchgeführt.
- g(1,0) g(2,0) g(1, 1) g(2,1) g(1, 2) g(2, 2)
- g(3,0) g(3,1) g(3,2)
- Das folgende ist g(kx, ky), das durch die dritte Blockanpassungseinrichtung 163 des Verarbeitungsmoduls 75 ausgewählt wird. Eine Auswahl der Anschlüsse 71, 72 wird durch einen Selektor 167 durchgeführt.
- g(2,0) g(2,1) g(2, 2)
- g(3,0) g(4,0) g(3,1) g(4,1) g(3,2) g(4,2)
- Durch Berechnen und Akkumulieren von absoluten Fehlerwerten zwischen diesen Pixeln und den Pixeln des zum Anschluß 70 zugeführten aktuellen Blocks, wird eine Blockanpassung im ersten Zyklus dreimal in der horizontalen Richtung ausgeführt.
- Gleichermaßen ist es für die drei Blockanpassungseinrichtungen des Verarbeitungsmoduls 76 möglich, den ersten Zyklus auszuführen, wenn nach einer Verzögerung von drei Pixeln gegenüber dem Verarbeitungsmodul 75 eines der Pixel des Referenzbereichs auf die folgende Weise geeignet ausgewählt wird. Das folgende ist g(kx, ky), das durch die erste Blockanpassungseinrichtung des Verarbeitungsmoduls 76 ausgewählt wird.
- g(3,0) g(4,0) g(5,0) g(3,1) g(4,1) g(5,1) g(3,2) g(4,2) g(5,2)
- Das folgende ist g(kx, ky), das durch die zweite Blockanpassungseinrichtung des Verarbeitungsmoduls 76 ausgewählt wird.
- g(4,0) g(5,0) g(4,1) g(5,1) g(4,2) g(5,2)
- g(6,0) g(6,1) g(6,2)
- Das folgende ist g(kx, ky), das durch die dritte Blockanpassungseinrichtung des Verarbeitungsmoduls 76 ausgewählt wird.
- g(5,0) g(5,1) g(5,2)
- g(6,0) g(7,0) g(6,1)g(7,1) g(6,2) g(7,2)
- Durch Berechnen und Akkumulieren von absoluten Fehlerwerten zwischen diesen Pixeln und den Pixeln des zum Anschluß 171 zugeführten aktuellen Blocks wird eine Blockanpassung für den ersten Zyklus dreimal in der horizontalen Richtung ausgeführt.
- Gleichermaßen ist es für die drei Blockanpassungseinrichtungen des Verarbeitungsmoduls 77 möglich, den ersten Zyklus auszuführen, wenn nach einer Verzögerung von drei Pixeln gegenüber dem Verarbeitungsmodul 76 die Pixel von einem der Referenzbereiche auf die folgende Weise geeignet ausgewählt werden. Das folgende ist g(kx, ky), das durch die erste Blockanpassungseinrichtung des Verarbeitungsmoduls 77 ausgewählt wird.
- g(60) g(7,0) 9(8,0) g(6,1) g(7,1) 9(8,1) g(6,2) 9(7,2) g(8,2)
- Das folgende ist g(kx, ky), das durch die zweite Blockanpassungseinrichtung des Verarbeitungsmoduls 77 ausgewählt wird.
- g(7,0) g(8,0) g(7,1) g(8,1) g(7,2) g(8,2)
- g(g,0) g(911) g(92)
- Das folgende ist g(kx, ky), das durch die dritte Blockanpassungseinrichtung des Verarbeitungsmoduls 77 ausgewählt wird.
- g(80)g(8,1) g(8,2)
- g(9,0) g(10,0) g(9,1) g(10,1) g(9,2) g(10,2)
- Durch Berechnen und Akkumulieren von absoluten Fehlerwerten zwischen diesen Pixeln und den Pixeln des zum Anschluß 172 zugeführten aktuellen Blocks wird eine Blockanpassung für den ersten Zyklus dreimal in der horizontalen Richtung ausgeführt.
- Die drei Verarbeitungsmodule 75 bis 77 führen eine Blockanpassung des ersten Zyklus aus. Ein erster Vergleichszyklus wird nach dem Ende des ersten Zyklus ausgeführt. Die drei Summen der Absolutwerte der Vorhersagefehler, wie sie im Verarbeitungsmodul 76 abgeleitet werden, werden durch eine Übertragungseinrichtung 164 sequentiell zur Vergleichseinrichtung 165 ausgegeben.
- Gleichermaßen überträgt das Verarbeitungsmodul 76 die drei Summen von Absolutwerten der Vorhersagefehler über die Signalleitung 174 zum Verarbeitungsmodul 75. Diese Summen werden durch die Übertragungseinrichtung 164 im Verarbeitungsmodul 75 sequentiell zur Vergleichseinrichtung 165 im Verarbeitungsmodul 75 übertragen.
- Gleichermaßen überträgt das Verarbeitungsmodul 77 die drei Summen von Absolutwerten der Vorhersagefehler über die Signalleitung 173 zum Verarbeitungsmodul 76. Diese Summen werden durch die Übertragungseinrichtung im Verarbeitungsmodul 76 sequentiell zum Verarbeitungsmodul 75 übertragen.
- Der Vergleichseinrichtung 175 im Verarbeitungsmodul 75 werden drei Summen von Absolutwerten der Vorhersagefehler zugeführt, wie sie durch das Verarbeitungsmodul 76 gefunden werden, in Aufeinanderfolge zu den drei Summen von Absolutwerten der Vorhersagefehler, wie sie durch das Verarbeitungsmodul 75 gefunden werden, und ihr werden auch drei Summen von Absolutwerten der Vorhersagefehler zugeführt, wie sie durch das Verarbeitungsmodul 77 gefunden werden.
- Die Vergleichseinrichtung 165 im Verarbeitungsmodul 75 prüft die neun Summen von Absolutwerten der Vorhersagefehler des ersten Zyklus, die zu ihr übertragen werden, und vergleicht sie mit dem gegenwärtig kleinsten Wert, um den kleinsten Wert und die Stelle, wo er erzeugt worden ist, einem Updaten zu unterziehen. So mit können der kleinste Wert der Summen der Absolutwerte der Vorhersagefehler des ersten Zyklus und die Blockposition im Referenzbereich, wo der kleinste Wert erzeugt worden ist, erhalten werden.
- Wenn der aktuelle Block in der oberen linken Ecke des Bildes ist, sind der Bereich von 0 ≤ kx ≤ 3 auf der linken Seite des aktuellen Blocks des Referenzbereichs und 0 ≤ ky ≤ 10 auf der oberen Seite davon nicht im Bildbereich begrenzt. Somit werden normalerweise ungültige Daten in diese Bereiche des Referenzbereichs gelesen, so daß der ausgegebene Summenwert ungültig ist. Somit überwacht die Referenzbereichs-Überwachungseinrichtung 78 die Koordinate des aktuellen Blocks auf dem Frame durch Bezugnahme auf den Bewegungsvektor-Erfassungsbereich und steuert die Komparatoreinrichtung 165 im Verarbeitungsmodul 75 so, daß die Summe von Absolutwerten der Vorhersagefehler, bei welcher der Referenzbereich außerhalb des Bildes ist, nicht beachtet wird.
- Dann wird der zweite Zyklus ausgeführt. Im zweiten Zyklus wird auf ähnliche Weise wie beim ersten Zyklus der aktuelle Block f(ix, iy) zum Anschluß 70 in der Sequenz eines Abtastens in der horizontalen Richtung Pixel für Pixel, d. h. in der Sequenz von f(0,0), f(1,0), f(2,0), f(0,1), ..., f(2, 2), eingegeben. Vom Anschluß 71 werden neun Pixel unter ky = 1 von g(kx, ky) (3 ≤ kx ≤ 10 und 0 ≤ ky ≤ 10), die in Fig. 5 bei B1 gezeigt sind, in der Sequenz von g(0,1), g(1,1), g(2,1), g(0,2), ..., g(2,3) eingegeben. Diese werden so zugeführt, daß f(0,0) und g(0,1) wie im ersten Zyklus gleichzeitig an den jeweiligen Anschlüssen 70, 71 erscheinen.
- Vom Anschluß 72 werden untere neun Pixel unter ky = 1 von g(kx, ky) (3 ≤ kx ≤ 10 und 0 ≤ ky ≤ 10), wie es in Fig. 5 bei B2 gezeigt ist, in der Sequenz von f(3,1), f(4,1), f(5,1), f(3,2), ... f(5,3) nach einer Verzögerung von 3 Pixel gegenüber g(0,1) eingegeben. Vom Anschluß 73 werden untere neun Pixel unter ky = 1 von g(kx, ky) (6 ≤ kx ≤ 8 und 0 ≤ ky ≤ 10), wie es in Fig. 5 bei B3 gezeigt ist, in der Sequenz von f(6,1), f(7,1), f(8,1), f(8,2), ... f(8,3) eingegeben.
- Nach einer Verzögerung von drei Pixeln gegenüber g(6,1) werden untere sechs Pixel von g(kx, ky), die in Fig. 5 bei B4 gezeigt sind, (9 ≤ kx ≤ 10 und 0 ≤ ky ≤ 10) in der Sequenz von g(9,1), g(10,1), X, g(9,2), ... g(10,3) eingegeben. Das bedeutet, daß durch Addieren von einer Zeile mehr zur rechten Seite bestimmt wird, daß neun Pixel vorhanden sind. X bedeutet ungültige Eingangsdaten.
- Durch Zuführen von Pixeln in vertikaler Richtung bei einer Zeile unter den Pixeln, die während des ersten Zyklus ausgelesen werden, wie es oben beschrieben ist, werden drei Blockanpassungsoperationen bei jedem Verarbeitungsblock ausgeführt, wie im ersten Zyklus.
- Dann wird der zweite Vergleichszyklus ausgeführt. Die neun Summen von Absolutwerten der Vorhersagefehler werden eine nach der anderen zur Komparatoreinrichtung 165 des Verarbeitungsmoduls 75 übertragen, wie im ersten Vergleichszyklus, und mit dem kleinsten Wert des ersten Zyklus verglichen, um den kleinsten Wert und die Blockposition, wo er aufgetreten ist, einem Updaten zu unterziehen. Als Ergebnis werden der kleinste Wert der Summen von Absolutwerten der Vorhersagefehler bis zum zweiten Zyklus und die Blockposition im Referenzbereich gefunden.
- Durch siebenmaliges Wiederholen des obigen Zyklus kann der Block mit dem kleinsten Wert der Summen von Absolutwerten der Vorhersagefehler, d. h. der Ähnlichkeitsblock, innerhalb des Referenzbereichs von elf horizontalen Pixeln mal elf vertikalen Pixeln gefunden werden. Somit können der kleinste Wert der Summen von Absolutwerten der Vorhersagefehler und der Bewegungsvektor gefunden werden. Der kleinste Wert der Summen von Absolutwerten der Vorhersagefehler wird einem Codierungstyp-Selektor 160 zugeführt, während der Bewegungsvektor einem Anschluß 176 zugeführt wird.
- Die Summe von Absolutwerten von AC- Komponenten sind durch eine AC- Komponenten - Absolutwertsummen - Berechnungseinrichtung 79 abzuleiten. Dies wird mit einer Anordnung ausgeführt, die eine Blockanpassungseinrichtung hat, die ähnlich dem Verarbeitungsmodul ist, und zwar durch Zuführen des aktuellen Blocks und Null zu jeweils einem und dem anderen der Eingänge während des ersten Zyklus zum Berechnen von favr der Gleichung (2)' und durch Zuführen des aktuellen Blocks und von fvar zu einem und dem anderen Eingang während des zweiten Zyklus.
- Dem Codierungstyp-Selektor 160 werden die Summe von Absolutwerten von AC- Komponenten und die minimalen Werte der Summe von Absolutwerten der Vorhersagefehler zugeführt, und er wählt die Vorwärtsvorhersagecodierung oder die Innerframe-Codierung aus, wenn (der minimale Wert der Summe der Absolutwerte der Vorhersagefehler) < (Summe der Absolutwerte der AC- Komponenten) bzw. (der minimale Wert der Summe der Absolutwerte der Vorhersagefehler) (Summe der Absolutwerte der AC- Komponenten) gilt, um die ausgewählte Codierung bei einem Anschluß 175 auszugeben.
- Auf diese Weise werden der durch die Bewegungsvorhersage 111 des in Fig. 10 gezeigten Bewegungsbild-Codierungssystems ausgegebene Codierungstyp und der Bewegungsvektor jeweils an Anschlüssen 175, 176 ausgegeben.
- Die Art der Verarbeitung durch das herkömmliche System ist in Fig. 6 gezeigt, wobei der durch das Verarbeitungsmodul 75 ausgeführte Zyklus bei Pj (j = 1 bis 9) gezeigt ist, der durch das Verarbeitungsmodul 76 ausgeführte Zyklus bei Qj (j = 1 bis 9) gezeigt ist und der durch das Verarbeitungsmodul 77 ausgeführte Zyklus bei Rj (j = 1 bis 9) gezeigt ist. Der am Ende des Zyklus ausgeführte Vergleichszyklus ist durch Cj (j = 1 bis 9) gezeigt. Es gibt eine Verzögerung von drei Pixeln zwischen den Verarbeitungszeiten von Pj,Qj und Rj.
- Das obige Beispiel bezieht sich auf einen aktuellen Block von drei horizontalen Pixeln mal drei vertikalen Pixeln und den Referenzbereich von 11 horizontalen Pixeln mal 11 vertikalen Pixeln. Allgemein kann eine Bewegungsvektorerfassung des aktuellen Blocks von M horizontalen Pixeln mal M vertikalen Pixeln im Referenzbereich von N' horizontalen Pixeln mal N' vertikalen Pixeln durch Verbinden von m Stufen von Verarbeitungsmodulen ausgeführt werden, die jeweils p Blockanpassungseinrichtungen haben. N' wird durch die folgende Gleichung (3) dargestellt, wobei p in bezug auf seinen Wert angesichts der Effizienz vorzugsweise in der Größenordnung von M ist.
- N' = M + p - 1 +(m - 1)p = M + mp - 1 ...(3)
- Zur Ausführung wird der Referenzbereich in (m + 1) Unterbereiche unterteilt, von welchen Pixel gleichzeitig zu m Verarbeitungsmodulen zugeführt werden müssen. Für m = 3 wird der Referenzbereich in vier Unterbereiche B1, B2, B3 und B4 unterteilt.
- Wie es oben beschrieben ist, werden im herkömmlichen Vorhersageprozessor, wie er in Fig. 4 gezeigt ist, zum parallelen Durchführen einer Blockanpassung drei Verarbeitungsmodule 75-77 verwendet, so daß der Bewegungsvektor über einen wei teren Bereich als bei der Verwendung eines einzigen Verarbeitungsmoduls erfaßt werden kann.
- Jedoch dann, wenn der Bewegungsvektor-Erfassungsbereich zum Verbessern des Kompressionsverhältnisses weiter zu vergrößern ist, während die Bildqualität beibehalten wird, lassen die herkömmlichen Vorhersageprozessoren viel zu wünschen übrig. Wenn angenommen wird, daß jedes Verarbeitungsmodul p Blockanpassungseinrichtungen hat, die in m Stufen verbunden sind, wird die gesamte Verarbeitungszeit aufgrund der Verarbeitungsverzögerung von p Pixeln zwischen den Verarbeitungsmodulen mit einem Erhöhen in bezug auf die Anzahl von Stufen erhöht. Folglich wird es schwierig, die Echtzeitverarbeitung zu implementieren.
- Darüber hinaus werden deshalb, weil der Referenzbereich in m+1 Unterbereiche aufgeteilt werden muß, von welchen Pixel zu einer voreingestellten Zeitgabe parallel gelesen werden müssen, der Speicher zur Speicherung des Referenzbereichs und der Adressengenerator in bezug auf die Struktur kompliziert. Somit tritt beim herkömmlichen Bewegungsvorhersageprozessor ein derartiges Problem auf, daß es nicht einfach ist, die Anzahl der Verarbeitungsmodule zum weiteren Erhöhen des Erfassungsbereichs der Bewegungsvektorerfassung zu erhöhen.
- EP-A-0 535 746 offenbart eine Einrichtung zur Bewegungsvektorabschätzung, zur Bewegungsbildcodierung und -speicherung. Beim Codieren eines Frames in einer digitalisierten Bewegungsbildsequenz wird der Frame in Blöcke von Pixeln und einen Bewegungsvektor, der zum Vorhersagen der Inhalte jedes Blocks A aus einem Block in einem vorherigen Frame gefunden wird, unterteilt. Vektoren werden basierend auf einem Startvektor bewertet, der der geschätzte Bewegungsvektor für einen benachbarten Block im selben Frame ist. Zum Zulassen einer parallelen Verarbeitung von mehreren Pixelblöcken werden Blöcke einer Zeile im aktuellen Frame einem Prozessor zugeordnet, und ein Startvektor wird aus einem Block erhalten, der zuvor durch denselben Prozessor verarbeitet wird. Weitere Startvektoren werden, wenn es gewünscht wird, von benachbarten Blöcken in benachbarten Frames der Sequenz erhalten.
- Signal processing of HDTV, III, Turin, 4.-6. September 1991, Yasuda et al., S. 173- 179 beschreibt eine Chipgruppe für eine HDTV- und eine TV-Echtzeit- Bewegungsschätzung unter Verwenden der Blockanpassungs- und/oder Phasenkorrelations-Algorithmen. Eine Blockgröße, ein Suchbereich, Fensterpositionen, eine Unterabtastung und eine Genauigkeit einer Bewegungsabschätzung sind programmierbar.
- Es ist daher eine Aufgabe der vorliegenden Erfindung, einen Bewegungsvorhersageprozessor zu schaffen, der den Bereich einer Bewegungsvektorerfassung schneller erhöhen kann.
- Zum Lösen der obigen Aufgabe schafft die vorliegende Erfindung einen Bewegungsvorhersageprozessor mit den Merkmalen des Anspruchs 1. Weitere Verbesserungen können durch den Gegenstand der Unteransprüche erreicht werden.
- Gemäß einem Aspekt ist ein Bewegungsvorhersageprozessor geschaffen, der folgendes aufweist: eine erste Einrichtung zum Unterteilen eines Frames in Blöcke und zum Lesen der Blöcke, eine zweite Einrichtung zum Bestimmen von Codierungstypdaten, die den Typ einer Frame-zu-Frame-Vorhersagecodierung oder einer Innerframe-Codierung Block für Block anzeigen, eine dritte Einrichtung zum Erfassen eines Bewegungsvektors im Fall eines Durchführens der Frame-zu- Frame-Vorhersagecodierung, und eine vierte Einrichtung zum Erzeugen einer Adresse zum Auslesen eines Referenzbereichs aus einem Referenzframespeicher. Auf den Referenzbereich wird beim Erfassen des Bewegungsvektors Bezug genommen. Die erste Einrichtung berechnet die Koordinaten des Blocks, der gerade verarbeitet wird, während die vierte Einrichtung einen Versatz zur Adresse zum Modifizieren der Position des Referenzbereichs addiert. Die dritte Einrichtung berechnet Bewertungsdaten zum Abschätzen der Codierungsquantität im Fall eines Durchführens der Frame-zu-Frame-Codierung. Der Bewegungsvorhersageprozessor weist weiterhin eine Einrichtung zum Ausgeben der Koordinaten der Blöcke, der Bewertungsdaten, des Bewegungsvektors und der Codierungstypdaten zu einer voreingestellten Zeitgabe auf.
- Der Bewegungsvektorprozessor weist vorzugsweise eine Einrichtung zum Erzeugen einer Paketadresse zur voreingestellten Zeitgabe auf, wobei die erste Einrichtung, die dritte Einrichtung und die zweite Einrichtung jeweils die Blockkoordinaten, die Bewertungsdaten und den Bewegungsvektor und die Codierungstypdaten in Antwort auf den Wert der Paketadresse ausgeben.
- Im Bewegungsvektorprozessor wird eine Paketadresse zur voreingestellten Zeitgabe von außerhalb zugeführt, und in Antwort auf den Wert der Paketadresse werden die Blockkoordinaten, die Bewertungsdaten, der Bewegungsvektor und die Codierungstypdaten jeweils ausgelesen, und der Versatz für die vierte Einrichtung wird eingestellt.
- Gemäß einem weiteren Aspekt schafft die vorliegende Erfindung eine Bewegungsvorhersagevorrichtung mit einer Anordnung von n Bewegungsvorhersageprozessoren vom obigen Typ, wobei n > 1 gilt und mit jeweils n Referenzframespeichern, die mit den n Bewegungsvorhersageprozessoren verbunden sind, wobei der Block, der in einen ersten der n Bewegungsvorhersageprozessoren eintritt, zu den übrigen (n- 1) Bewegungsvorhersageprozessoren zugeführt wird. Ein Offset von 0 wird an den ersten Bewegungsvorhersageprozessor angelegt, und an die (n-1) Bewegungsvorhersageprozessoren wird ein derartiger Offset angelegt, daß die jeweiligen Referenzbereiche unterschiedlich vom Referenzbereich des ersten Bewegungsvorhersageprozessors sind. Die Vorrichtung weist eine Auswahleinrichtung zum Auswählen desjenigen Bewegungsvorhersageprozessors auf, dessen Referenzbereich innerhalb des Bildes begrenzt ist, und zum Auswählen des Bewegungsvorhersageprozessors, der die kleinsten Bewegungsdaten ergeben wird, und eine Einrichtung zum Korrigieren des Bewegungsvektors, der durch den Bewegungsvorhersageprozessor ausgegeben wird, der durch die Auswahleinrichtung beim Übereinstimmen mit dem Offset ausgewählt wird, der zum Bewegungsvorhersageprozessor geliefert wird.
- Es ist vorzugsweise ein Bewegungsvorhersageprozessor geschaffen, der folgendes aufweist:
- einen ersten Adressengenerator, der eine Adresse zum Lesen eines Blocks erzeugt, wobei der Block aus einem Frame geteilt ist, und die Koordinaten des Blocks berechnet, der gerade verarbeitet wird;
- einen Codierungstypselektor, der Codierungstypdaten bestimmt, die den Typ einer Frame-zu-Frame-Vorhersagecodierung oder einer Innerframe-Codierung Block für Block anzeigen;
- eine Arithmetik - und Logikeinheit, die einen Bewegungsvektor im Fall eines Durchführens der Frame-zu-Frame-Vorhersagecodierung erfaßt und Bewertungsdaten zum Abschätzen der Codierungsmenge bzw. -quantität im Fall eines Durchführens der Innerframe-Codierung berechnet; , und
- einen zweiten Adressengenerator, der eine Adresse zum Auslesen eines Referenzbereichs aus einem Referenzframespeicher erzeugt, wobei auf den Referenzbereich beim Erfassen des Bewegungsvektors und beim Addieren eines Offsets zu der Adresse zum Modifizieren der Position des Referenzbereichs Bezug genommen wird;
- wobei der Bewegungsvorhersageprozessor weiterhin so angeordnet ist, daß er die Koordinaten der Blöcke, der Bewertungsdaten, des Bewegungsvektors und der Codierungstypdaten zu einer voreingestellten Zeitgabe ausgibt.
- Der Bewegungsvektorprozessor weist weiterhin vorzugsweise einen Paketadressengenerator zum Erzeugen einer Paketadresse zur voreingestellten Zeitgabe auf, wobei der erste Adressengenerator, die Arithmetik - und Logikeinheit und der Codierungstypselektor jeweils in Antwort auf den Wert der Paketadresse die Blockkoordinaten, die Bewertungsdaten und den Bewegungsvektor und die Codierungstypdaten ausgeben.
- Im Bewegungsvektorprozessor wird vorzugsweise eine Paketadresse zur voreingestellten Zeitgabe von außerhalb zugeführt, und in Antwort auf den Wert der Paketadresse werden die Blockkoordinaten, die Bewertungsdaten, der Bewegungsvektor und die Koordinierungstypdaten jeweils ausgelesen, und der Offset für den zweiten Adressengenerator wird eingestellt.
- Es ist auch eine Bewegungsvorhersagevorrichtung geschaffen, die eine Anordnung von n Bewegungsvorhersageprozessoren aufweist, wie es oben definiert ist, wobei n > 1 gilt, und die einen Referenzframespeicher hat, der mit einem jeweiligen der n Bewegungsvorhersageprozessoren verbunden ist, wobei der Block, der in einen ersten der n Bewegungsvorhersageprozessoren eintritt, zu den übrigen (n-1) Bewegungsvorhersageprozessoren zugeführt wird, und wobei ein Offset von 0 an den ersten Bewegungsvorhersageprozessor angelegt wird,
- wobei ein derartiger Offset an die (n-1) Bewegungsvorhersageprozessoren angelegt wird, daß die jeweiligen Referenzbereiche in bezug auf Positionen gegenüber dem Referenzbereich des ersten Bewegungsvorhersageprozessors unterschiedlich sind,
- wobei die Vorrichtung eine Auswahleinheit zum Auswählen desjenigen Bewegungsvorhersageprozessors aufweist, dessen Referenzbereich innerhalb einer Bildebene begrenzt ist, und zum Auswählen des Bewegungsvorhersageprozessors, der die kleinsten Bewertungsdaten ergeben wird, und
- einen Bewegungsvektorkorrektor zum Ausgeben des Bewegungsvektors, der durch den Bewegungsvorhersageprozessor ausgegeben wird, der durch die Auswahleinheit ausgewählt ist, nach einem Korrigieren des Ausgangsbewegungsvektors beim Übereinstimmen mit dem Offset, der zum Bewegungsvorhersageprozessor geliefert wird.
- Eine Vielzahl der Bewegungsvorhersageprozessoren kann parallel angeordnet sein, um den Bereich einer Erfassung des Bewegungsvektors zu vergrößern. Bei einer derartigen Anordnung wird eine beim herkömmlichen System erzeugte Pixelverzögerung nicht erzeugt, so daß die gesamte Verarbeitungszeit im wesentlichen nicht geändert wird, verglichen mit einer Anordnung, die einen einzigen Bewegungsvorhersageprozessor aufweist.
- Genauer gesagt wird unter der Annahme, daß der aktuelle Block die allgemein verwendete Größe von 16 horizontalen Pixeln mal 16 vertikale Pixeln hat, wobei die herkömmlichen Bewegungsvorhersageprozessoren, die die Arithmetik - und Logikmodule mit beispielsweise 15 Blockanpassungseinrichtungen aufweisen, in drei Stufen angeordnet sind, wie es in Fig. 4 gezeigt ist, eine Verzögerung von 30 Pixeln erzeugt, da die Beendigung des Verarbeitungszyklus des ersten Rang- bzw. Stufenmoduls bis zur Beendigung desjenigen des dritten Stufenmoduls zur Verzögerung hinzukommt, die für den Vergleichszyklus richtig ist. Andererseits beenden bei einer parallelen Konfiguration der Bewegungsvorhersageprozessoren gemäß der vorliegenden Erfindung alle Bewegungsvorhersageprozessoren die Verarbeitung gleichzeitig, so daß die Verarbeitungszeit entsprechend reduziert wird. Als Ergebnis davon wird eine Echtzeitverarbeitung selbst in dem Fall möglich, daß die Anzahl der parallel angeordneten Bewegungsvorhersageprozessoren erhöht wird, um den Bereich einer Erfassung des Bewegungsvektors weiter zu vergrößern.
- Zusätzlich sind die parallel angeordneten Bewegungsvorhersageprozessoren jeweils mit eigenen Referenzframespeichern versehen, die Daten gleichzeitig schreiben und lesen. Obwohl die Speicherkapazität auf diese Weise wahrscheinlich zu erhöhen ist, werden die Speicherkonfiguration und die Adressengeneratorkonfiguration im wesentlichen nicht gegenüber der Anordnung geändert, die den einzelnen Prozessor verwendet. Somit kann die vorliegende Erfindung im Aufbau flexibler modifiziert werden, als es beim herkömmlichen System möglich ist.
- Mit dem vorliegenden Bewegungsvorhersageprozessor kann der Bereich einer Erfassung des Bewegungsvektors vergrößert werden, und das Kompressionsverhältnis kann entsprechend erhöht werden, ohne die Bildqualität zu verschlechtern.
- Es ist ein Bewegungsvorhersageprozessor und eine Bewegungsvorhersagevorrichtung zum Ausgeben des Codierungstyps geschaffen, der die Frame-zu-Frame - Vorhersagecodierung oder die Innerframe-Vorhersagecodierung bestimmt, und eines Bewegungsvektors im Fall eines Durchführens der Frame-zu-Frame - Vorhersagecodierung, wobei ein gegenwärtig verarbeiteter Block zu einer voreingestellten Zeitgabe ausgegeben wird, wenn ein Offset an die Adresse zum Lesen des Referenzbereichs aus dem Referenzframespeicher angelegt wird, und zum Ausgeben von Bewertungsdaten zum Abschätzen der Codierungsquantität im Fall eines Durchführens der Frame-zu-Frame-Vorhersagecodierung.
- Eine Vielzahl ( = n) von solchen Bewegungsvorhersageprozessoren ist angeordnet und jeweils mit Referenzframespeichern versehen. Referenzbereiche, die voneinander unterschiedlich sind, werden jeweils zu den n Bewegungsvorhersageprozessoren zugeführt und die Ausgabe des Bewegungsvorhersageprozessors mit den kleinsten Bewertungsdaten, welche die beste Ähnlichkeit ergeben, wird unter denjenigen Bewegungsvorhersageprozessoren ausgewählt, deren Referenzbereiche innerhalb des Bildes begrenzt sind. Der durch den so ausgewählten Prozessor ausgegebene Bewegungsvektor wird korrigiert und ausgegeben.
- Der Bereich einer Erfassung des Bewegungsvektors kann durch Aufreihen mehrerer Bewegungsvorhersageprozessoren der vorliegenden Erfindung in paralleler Form vergrößert werden, ohne die gesamte Verarbeitungszeit wesentlich zu ändern, wie es nachfolgend beschrieben wird. Das bedeutet, daß dann, wenn mehrere Bewegungsvorhersageprozessoren parallel angeordnet sind, alle Prozessoren die Verarbeitungsoperationen gleichzeitig beenden, wodurch die Verarbeitungszeit verkürzt wird. Somit wird die Echtzeitverarbeitung möglich, wenn die Anzahl der Bewegungsvorhersageprozessoren zum weiteren Vergrößern des Bereichs des Bewegungsvektors erhöht wird, so daß eine Bewegungskompensation, die zum System CCITT Recommendation H.261 oder zum System MPEG gehört, behandelt werden kann.
- Die obigen und andere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden Beschreibung in Zusammenhang mit den beigefügten Zeichnungen klarer, wobei:
- Fig. 1 ein Blockdiagramm ist, das einen Bewegungsvorhersageprozessor zeigt, der beim ersten Ausführungsbeispiel der vorliegenden Erfindung verwendet wird,
- Fig. 2 ein Blockdiagramm ist, das das erste Ausführungsbeispiel der Erfindung mit mehreren parallel angeordneten Bewegungsvorhersageprozessoren der Fig. 1 zeigt,
- Fig. 3A einen Referenzbereich der in Fig. 2 gezeigten Anordnung darstellt,
- Fig. 3B die Verarbeitungszeit der in Fig. 2 gezeigten Anordnung darstellt,
- Fig. 4 ein Blockdiagramm ist, das die Struktur eines herkömmlichen Bewegungsvorhersageprozessors zeigt,
- Fig. 5 einen Referenzbereich des Beispiels nach dem Stand der Technik darstellt,
- Fig. 6 ein Zeitdiagramm ist, das die Verarbeitungszeit des Beispiels nach dem Stand der Technik zeigt,
- Fig. 7 ein Blockdiagramm ist, das einen Bewegungsvorhersageprozessor zeigt, der beim zweiten Ausführungsbeispiel der vorliegenden Erfindung verwendet wird,
- Fig. 8 ein Blockdiagramm ist, das das zweite Ausführungsbeispiel der Erfindung zeigt, wobei die Prozessoren der Fig. 7 parallel angeordnet sind,
- Fig. 9 einen Referenzbereich des Beispiels der in Fig. 8 gezeigten Anwendung darstellt,
- Fig. 10 ein Blockdiagramm ist, das ein Bewegungsbild-Codierungssystem zeigt,
- Fig. 11 den Bewegungsvektor darstellt,
- Fig. 12 eine Referenzframespeicheradresse darstellt,
- Fig. 13 das Bewegungsbild-Codierungssystem darstellt, und
- Fig. 14 ein Zeitdiagramm ist, da die Zeitbeziehung bei der vorliegenden Erfindung darstellt.
- Gemäß Fig. 1 führt ein Bewegungsvorhersageprozessor, der beim ersten Ausführungsbeispiel der Erfindung verwendet wird, eine Operation entsprechend der Bewegungsvorhersageeinheit 111 durch, die in Fig. 10 gezeigt ist. Fig. 2 zeigt ein Beispiel einer Anwendung, wobei zum Vergrößern des Referenzbereichs fünf Bewegungsvorhersageprozessoren 30-1 bis 30-5 parallel angeordnet sind, von welchen jeder den Blockaufbau hat, wie es in Fig. 1 gezeigt ist. Diese Anwendung führt eine Verarbeitung entsprechend der in Fig. 10 gezeigten Bewegungsvorhersageeinheit 111 durch. Als erstes wird die Schaltungsoperation des in Fig. 1 gezeigten Bewegungsvorhersageprozessors erklärt, und dann wird das Beispiel der in Fig. 2 gezeigten Anwendung erklärt.
- Es wird angenommen, daß der aktuelle Block eine Größe von 4 horizontalen Pixeln mal 4 vertikalen Pixeln hat und der aktuelle Frame und der Referenzframe beide eine Größe von NX horizontalen Pixeln mal NY vertikalen Pixeln hat. NX ist ein Vielfaches der Anzahl von Pixeln (vier) des aktuellen Blocks in der horizontalen Richtung und NY ist ein Vielfaches der Anzahl von Pixeln (vier) des aktuellen Blocks in der vertikalen Richtung. Wenn diese Bedingungen nicht erfüllt sind, können Pixel auf geeignete Weise an der rechten Seite und am unteren Ende des Bildes hinzugefügt werden, so daß die Anzahl von Pixeln Vielfache der Anzahl von Pixeln des aktuellen Blocks in der horizontalen Richtung und in der vertikalen Richtung wird.
- Es wird ebenso angenommen, daß ein Pixel in einer Adresse des Referenzframespeichers gehalten wird, wie es in Fig. 12 gezeigt ist. Das bedeutet, daß dann, wenn der Referenzframe h(jx, jy) ist, wobei jx, jy horizontale und vertikale Koordinaten mit 0 ≤ jx ≤ NX-1, 0 ≤ jy ≤ NY-1 sind, die erste horizontale Zeile (jy = 0) ab der Adresse 0 bis zur Adresse NX - 1 sequentiell gespeichert wird. Pixel werden Zeile für Zeile auf gleiche Weise gespeichert, so daß die NY-te Zeile für jy = NY - 1 Adressen NX(NY-1) bis NX*NY-1 tragen wird. Somit wird die Adresse von h(jx, jy) jx*NX+jx.
- Der Referenzbereich hat eine Größe von 8 horizontalen Pixel mal 8 vertikalen Pixeln. Der Referenzbereich, wie er auf den Frame projiziert ist, ist ein Bereich, der sich sowohl in vertikaler Richtung als auch in horizontaler Richtung um zwei Pixel erstreckt, wobei die Position des aktuellen Blocks auf dem Frame das Zentrum ist. Somit sind mit dem erfaßbaren Bewegungsvektor (vx, vy) vx und vy als -2 ≤ vx ≤ 2 und -2 ≤ vy ≤ 2 gegeben.
- Gemäß Fig. 1 ist der Bewegungsvorhersageprozessor 30 aus einer Verarbeitungseinheit oder einer Arithmetik - und Logikeinheit 31, Adressengeneratoren 33 und 35, einem Codierungstypselektor 32, einem Paketadressengenerator 34, einer Paketadressenleitung 37 und einer Paketdatenleitung 36 aufgebaut. Von diesen sind die Arithmetik - und Logikeinheit 31 und die Adressengeneratoren 33, 35 gleich der Bewegungsvektorerfassungseinheit 114 der Fig. 10, während der Codierungstypselektor 32 und der Paketadressengenerator 34 äquivalent zur Codierungstyp- Beurteilungseinheit 115 sind. Nun wird die Operation des Bewegungsvorhersageprozessors erklärt.
- Auf den aktuellen Block des im aktuellen Framespeicher 11 gespeicherten aktuellen Frames wird durch Anschlüsse 13 mit den durch den Adressengenerator 35 ausgegebenen Adressen zugegriffen, und er wird dann von einem Anschluß 12 zur Arithmetik - und Logikeinheit 31 geführt. Auf den Referenzbereich des im Referenzframespeicher 21 gespeicherten Referenzframes wird durch Anschlüsse 16 mit durch den Adressengenerator 33 ausgegebenen Adressen zugegriffen, und er wird dann von einem Anschluß 15 zur Arithmetik - und Logikeinheit 31 geführt.
- Die Arithmetik - und Logikeinheit 31 führt die durch die Gleichung (1) als herkömmlich zum Berechnen des kleinsten Wertes der Summen von Absolutwerten der Vorhersagefehler und der durch die obige Gleichung (2) dargestellten Summen von Absolutwerten der AC- Komponenten des aktuellen Blocks dargestellte Blockanpassungsoperation durch.
- Der Referenzbereich wird von den Koordinaten auf dem Frame des aktuellen Blocks überwacht, die durch den Adressengenerator 33 ausgegeben werden, und den Bewegungsvektor-Erfassungsbereich. Die Absolutwerte der Vorhersagefehler, bei welchen der Referenzbereich außerhalb des Bildes ist, werden nicht beachtet. Da -2 ≤ vx ≤ 2 und -2 ≤ vx ≤ 2 gilt, ist ein Teil des Referenzbereich außerhalb des Bildes, wenn der aktuelle Block am oberen, am unteren, am linken oder am rechten Ende des aktuellen Frames ist.
- Mit der Anordnung des herkömmlichen Verarbeitungsmoduls, das in Fig. 4 gezeigt ist, kann dies durch ein einzelnes Verarbeitungsmodul mit drei Blockanpassungseinrichtungen, einer AC- Zeilensegment - Absolutwertberechnungseinrichtung 79 und einer Referenzbereichs-Überwachungseinrichtung 78 implementiert sein. Fünfundzwanzig (25) Blockanpassungsoperationen sind dabei zum Erfassen eines Bewegungsvektors eines aktuellen Blocks erforderlich.
- Die Arithmetik - und Logikeinheit 31 decodiert Adressensignale auf der Paketadressenleitung 37 und gibt einen Bewegungsvektor auf der Paketdatenleitung 36 aus, wenn die Paketadresse gleich 3 ist. Die Arithmetik - und Logikeinheit 31 gibt über einen Bus 31-2 die Summe der Absolutwerte von Vorhersagefehlern zum Codierungstypselektor 32 und zur Paketdatenleitung 36 aus, wenn die Paketadresse der Paketadressenleitung 37 1 ist, während sie über einen Bus 31-2 die Summe der Absolutwerte der AC- Komponenten zum Codierungstypselektor 32 ausgibt.
- Der Codierungstypselektor 32 führt die Beurteilung gleich derjenigen durch das herkömmliche System durch. Das bedeutet, daß die Vorwärtsvorhersagecodierung oder die Innerframe-Codierung ausgewählt wird, wenn (der kleinste Wert der Summe der Absolutwerte von Vorhersagefehlern) < (Summe von Absolutwerten von AC- Komponenten) bzw. (der kleinste Wert der Summe der Absolutwerte von Vorhersagefehlern) (Summe von Absolutwerten von AC- Komponenten) gilt. Der Codierungstypselektor 32 decodiert die Paketadressensignale auf der Paketadressenleitung 37 und gibt den Codierungstyp auf der Datenleitung 36 aus, wenn die Paketadresse 2 ist.
- Der Adressengenerator 35 gibt Adressen der Pixel der aktuellen Adresse zum aktuellen Framespeicher 11 über den Anschluß 13 aus, während er das Paketadressensignal auf der Paketadressenleitung 37 decodiert und die Koordinaten des Pixels der oberen linken Ecke des Blocks, die die Adresse auf dem Frame des aktuellen Blocks anzeigen, auf der Datenleitung 36 ausgibt, wenn die Paketadresse 0 ist.
- Der Adressengenerator 33 gibt die Adresse, addiert mit dem Offset, der vom Anschluß 17 über den Anschluß 16 zum Referenzframespeicher 21 zugeführt wird, aus.
- Wenn die Koordinate der linken oberen Ecke des aktuellen Blocks (ix, iy) ist, wobei 0 ≤ ix ≤ NX, 0 ≤ iy ≤ NY gilt, werden die Koordinaten (jx, jy) der Pixel, die den Referenzbereich bilden, ix-2 ≤ jx ≤ ix+5, iy-2 ≤ jy ≤ iy+5. Da die Adresse des Referenzframespeichers zugeteilt wird, wie es in Fig. 12 gezeigt ist, ist die durch den Adressengenerator 33 zum Auslesen des Referenzbereichs erzeugte Adresse gegeben, wie es folgt, wenn die Zeilen des Referenzbereichs ab der Leitung am oberen Ende zuerst gezählt werden.
- 1. Zeile des Referenzbereichs: (iy-2)*NX + ix - 2 + Offset, ...,(iy -2)*NX + ix + 5 + Offset 2. Zeile des Referenzbereichs: (iy-1)*NX + ix - 2 + Offset, ...,(iy - 1)*NX + ix + 5 + Offset
- ·
- ·
- ·
- 8. Zeile des Referenzbereichs: (iy+5)*NX + ix - 2 + Offset, ...,(iy - 5)*NX + ix + 5 + Offset ...(4)
- Der Bewegungsvorhersageprozessor 30 gibt die Koordinaten des aktuellen Blocks auf dem Frame, den kleinsten Wert der Summen der Absolutwerte der Vorhersagefehler, den Codierungstyp und den Bewegungsvektor aus.
- Ein Paketadressengenerator 34 ist zum Steuern der Ausgabezeitgabe des Bewegungsvektors vorgesehen. Wenn das Impulssignal an den Anschluß 19 angelegt wird, erzeugt der Paketadressengenerator 34 sequentiell Paketadressen 0 bis 3 und gibt sie somit zur Paketadressenleitung 37 aus. Die Paketadressenleitung 37 ist mit Adressengenerator 35, der Arithmetik - und Logikeinheit 31 und dem Codie rungstypselektor 32 verbunden, der Paketdaten über die Paketdatenleitung 36 zum Anschluß 14 in der Sequenz ausgibt, wie es in (5) gezeigt ist,
- Operationen werden nachfolgend unter Bezugnahme auf die Fig. 1 und 2 und ebenso auf Fig. 14 beschrieben, die ein Beispiel der Zeitgabe für eine Einblockverarbeitung durch den Bewegungsvorhersageprozessor 30 zeigt. Ein Zeitgabegenerator 61 (Fig. 2) wird im folgenden Beispiel einer Anwendung erklärt. Eine oder mehrere Signalleitungen können zum Zuführen der mehreren Zeitgabesignale (Impulssignale) vorgesehen sein. Ein Ausgangsimpulssignal eines Zeitgabegenerators 61 wird an den Anschluß 19 jedes der Prozessoren 30-1 bis 30-5 angelegt. Der Paketadressengenerator 34 (Fig. 1) gibt die Paketadressen 0 bis 3 auf der Paketadressenleitung 37 zyklisch aus, wie es in Fig. 14 gezeigt ist. Wenn die Paketadresse zu 0 geändert wird, beginnen die Adressengeneratoren 33 und 35 ihre Operation, und die Arithmetik - und Logikeinheit 31 beginnt ihre Verarbeitungsoperationen. Die Arithmetik - und Logikeinheit 31 gibt den kleinsten Wert der Summen der Absolutwerte der Vorhersagefehler oder den Bewegungsvektor auf der Paketdatenleitung 36 aus, wenn die Paketadresse jeweils 1 oder 2 ist. Das Zeitdiagramm der Fig. 14 dient nur zur Erklärung, und die Zeitgabebreiten sind nicht auf diejenigen beschränkt, die in Fig. 14 gezeigt sind.
- Die Operation des Falls, bei welchem der einzelne Bewegungsvorhersageprozessor 30 der in Fig. 1 gezeigten vorliegenden Schaltung auf die Bewegungsvorhersage 111 des in Fig. 10 gezeigten Bewegungsbild-Codierungssystems angewendet wird, wird erklärt. Null wird an den Anschluß 17 angelegt. Da der Offset für den Adressengenerator 33 0 ist, wird die in Fig. 12 gezeigte Referenzframespeicheradresse direkt aus der Gleichung 4 ausgegeben. Somit kann der Referenzbereich zur Bewegungsvorhersageeinheit 111 zugeführt werden.
- Das Impulssignal wird an den Anschluß 19 vom Zeitgabegenerator (in Fig. 10 nicht gezeigt) zu einer Zeit einer Beendigung einer Verarbeitung für den aktuellen Block angelegt, so daß die durch die obige Beschreibung (5) gezeigten Paketdaten vom Anschluß 14 ausgegeben werden. Der Codierungstyp von der Einheit 115, der zum Selektor 102 der Fig. 10 auszugeben ist, und der Bewegungsvektor, der zum lokalen Decodierframespeicher 110 auszugeben ist, können durch Holen der Paketdaten erzeugt werden, die den Paketadressen 2 und 3 entsprechen. Der in Fig. 1 gezeigte Bewegungsvorhersageprozessor 30 führt somit durch die Bewegungsvorhersageeinheit 111 des in Fig. 10 gezeigten Bewegungsbild-Codierungssystems ausgegebene Daten zu. Das bedeutet, daß die in Fig. 1 gezeigte vorliegende Schaltung auf die Bewegungsvorhersageeinheit 111 des Bewegungsbild- Codierungssystems der Fig. 10 angewendet werden kann.
- Die Luminanzkomponenten des außerhalb des Bewegungsvorhersageprozessors 30 decodierten aktuellen Blocks werden im Referenzframespeicher 21 der Fig. 1 gespeichert. Die Schreibadresse wird von außerhalb zugeführt.
- Gemäß dem ersten Ausführungsbeispiel der in Fig. 2 gezeigten Erfindung sind fünf Bewegungsvorhersageprozessoren 30-1 bis 30-5 parallel angeordnet, wie es oben angegeben ist. Der Bewegungsvektor wird über einen weiteren Bereich erfaßt, als es mit dem in Fig. 1 gezeigten Bewegungsvorhersageprozessor 30 möglich ist, um das Kompressionsverhältnis zu erhöhen.
- Diese Anordnung ist aus dem aktuellen Framespeicher 11, den Bewegungsvorhersageprozessoren 30-1 bis 30-5, Referenzframespeichern 56, 57, 58, 59 und 60, einem Zeitgabegenerator 61, einem Referenzpositionsindikator 64, einem Vorhersageergebnisindikator 64, einem Vorhersageergebnisselektor 62 und einen Bewegungsvektorkorrektor 63 aufgebaut. Die Referenzframespeicher 56 bis 60 sind dieselben wie der Referenzframespeicher 21, wie er in Fig. 1 gezeigt ist.
- Nun wird die Operation des ersten Ausführungsbeispiels erklärt. Die fünf Bewegungsvorhersageprozessoren 30-1 bis 30-5 beginnen die jeweiligen Verarbeitungsoperationen gleichzeitig synchron zueinander. Jedoch werden die folgenden Offsetwerte an den Anschluß 17 jedes Prozessors 30 an die jeweiligen Bewegungsvorhersageprozessoren angelegt.
- Bewegungsvorhersageprozessor 30-1 : 0
- Bewegungsvorhersageprozessor 30-2: - N X * 4 - 4
- Bewegungsvorhersageprozessor 30-3: - N X * 4 + 4
- Bewegungsvorhersageprozessor 30-4: + N X * 4 - 4
- Bewegungsvorhersageprozessor 30-5: + N X * 4 + 4
- Der auf die Adresse angewendete Offset, die ausgegeben wird, wenn die Pixel des Referenzbereichs aus dem Referenzframespeicher 21 ausgelesen werden, wird an den Anschluß 17 jedes Prozessors 30 angelegt. Wenn die durch den Bewegungsvorhersageprozessor 30-1 zu seinem zugehörigen Referenzframespeicher ausgegebene Adresse jy*NY+jx ist und das auszulesende Pixel des Referenzbereichs (jx, jy) ist, werden die durch die übrigen Prozessoren 30-2 bis 30-5 gleichzeitig ausgegebenen Adressen wie folgt:
- Bewegungsvorhersageprozessor 30-2: jy* NX + jx - NY* 4 - 4 = NX(jy-4)+ jx - 4 Bewegungsvorhersageprozessor 30-3: jy* NX + jx - NY* 4 + 4 = Nx(jy-4)+ jx + 4 Bewegungsvorhersageprozessor 30-4: jy* NX + jx + NY* 4 - 4)NX(jy + 4)+ jx - 4 Bewegungsvorhersageprozessor 30-5: jy* NX + jx + NY* 4 + 4 = NX(jy+4)+ jx + 4
- ...(6)
- Diese Adressen werden jeweils zu den Referenzframespeichern 56 bis 59 ausgegeben, die mit den jeweiligen Bewegungsvorhersageprozessoren verbunden sind. Jeder Referenzframespeicher speichert gleichzeitig die Luminanzkomponenten des decodierten aktuellen Blocks über einen Anschluß 20 und unterzieht sie einem Updaten.
- Dieselbe Adresse ist als Schreibadresse von außerhalb gezeigt. Folglich ist dann, wenn der Referenzbereich des Bewegungsvorhersageprozessors 30-1 ein Bereich 151 ist, der aus 8 horizontalen Pixeln mal 8 vertikalen Pixeln gebildet ist, wie es in Fig. 3A schattiert gezeigt ist, der Referenzbereich des Bewegungsvorhersageprozessors 30-2 ein Bereich 152 von 8 horizontalen Pixeln mal 8 vertikalen Pixeln, was vier Pixel links und vier Pixel oberhalb vom Referenzbereich des Bewegungsvorhersageprozessors 30-1 ist. Gleichermaßen werden die Referenzbereiche der Bewegungsvorhersageprozessoren 30-3 bis 30-5 jeweils die in Fig. 3A gezeigten Bereiche 153 bis 155.
- Der aktuelle Block wird aus dem aktuellen Framespeicher 11 gemäß den Adressen gelesen, die durch den Bewegungsvorhersageprozessor 30-1 ausgegeben werden und die zu den Bewegungsvorhersageprozessoren 30-1 bis 30-5 zugeführt werden. Da die Bewegungsvorhersageprozessoren 30 synchron betrieben werden, können ihnen derselbe aktuelle Block und unterschiedliche Referenzbereiche, die in Fig. 3A gezeigt sind, zugeführt werden. Somit suchen die fünf Bewegungsvorhersageprozessoren 30 nach unterschiedlichen Ähnlichkeitsblöcken, die ihnen zugeteilt sind, durch eine parallele Operation.
- Wenn die Verarbeitung eines aktuellen Blocks beendet ist, gibt der Zeitgabegenerator 61 ein Impulssignal zu jedem Bewegungsvorhersageprozessor 30 aus, der gleichzeitig die jeweiligen Paketdaten zu einem Vorhersageergebnisselektor 62 ausgibt.
- Der Vorhersageergebnisselektor 62 wählt eines der Paketdaten aus, die durch die fünf Bewegungsvorhersageprozessoren 30-1 bis 30-5 ausgegeben werden, und gibt den Codierungstyp zum Anschluß 22 aus, während er den Bewegungsvektor und die ausgewählte Bewegungsvorhersageprozessorzahl zum Bewegungsvektorkorrektor 63 ausgibt, der dann den Bewegungsvektor gegenüber dem eingegebenen Bewegungsvektor und der ausgewählten Bewegungsvorhersageprozessornummer korrigiert und den korrigierten Bewegungsvektor zum Anschluß 23 ausgibt.
- Der Vorhersageergebnisselektor 62 arbeitet auf folgende Weise. Der Vorhersageergebnisselektor 62 empfängt ein Zeitgabesignal entsprechend der Paketadresse 0 vom Zeitgabegenerator 61 und gibt die Koordinaten auf dem Frame des aktuellen Blocks vom Ausgang des Bewegungsvorhersageprozessors 30-1 ein. Der Vorhersageergebnisselektor 62 schließt auch den Ausgang des Bewegungsvorhersageprozessors aus, für welchen der Referenzbereich außerhalb der Bildebene ist.
- Das bedeutet, daß die Koordinaten der linken oberen Ecke des aktuellen Blocks als die Koordinaten auf dem Frame des aktuellen Blocks ausgegeben werden. Wenn diese Koordinaten als (ix, iy) (0 ≤ ix ≤Nx, 0 ≤ iy ≤ Ny) dargestellt sind und wenn ix = 0 und iy = 4 gilt, ist ein Teil der Referenzbereiche 152, 154 auf der linken Seite der Fig. 3 außerhalb der Bildebene. Wenn ix = NX - 8 und ix = NX - 4 gilt, ist ein Teil der Referenzbereiche 154 und 155 auf der rechten Seite der Fig. 3 außerhalb der Bildebene.
- Gleichermaßen ist dann, wenn iy = 0 und iy = 4, ein Teil der Referenzbereiche 152, 153 an der oberen Seite der Fig. 3 außerhalb der Bildebene. Wenn iy = NY - 8 und iy = NY - 4, ist ein Teil der Referenzbereiche 154 und 155 an der unteren Seite der Fig. 3 außerhalb der Bildebene.
- Jedoch deshalb, weil die Bewegungsvorhersageprozessoren 30-1 bis 30-5 basierend auf den Koordinaten auf dem Frame des aktuellen Blocks beurteilen, ob der Referenzbereich außerhalb der Bildebene ist, geben die Prozessoren 30-2 bis 30- 5, die andere als der Prozessor 30-1 mit dem Offset gleich Null sind, nahe dem Bildrand eine falsche Beurteilung. Somit sind der Bewegungsvektor etc., welche in diesen Fällen ausgegeben werden, wahrscheinlich das Ergebnis eines Auslesens eines ungültigen Referenzbereichs. Somit beurteilt der Vorhersageergebnisselektor 62 erneut, ob der Referenzbereich innerhalb der Bildebene ist, um die Ausgaben der Prozessoren zu eliminieren, für welche der Referenzbereich außerhalb der Bildebene fällt.
- Es wird angemerkt, daß die falsche Beurteilung auch in Fällen gegeben ist, die andere als der Fall sind, in welchem der Referenzbereich aus der Bildebene fällt. Das bedeutet, daß dann, wenn ix = NY - 8, ix = NY - 4 und iy = NY - 8, jy = NY - 4, ein Teil des Referenzbereichs dazu bestimmt ist, außerhalb der Bildebene zu sein, selbst wenn der Referenzbereich innerhalb der Bildebene ist, und die zugehörigen Summen der Absolutwerte der Vorhersagefehler werden nicht beachtet.
- Für ix = 0, ix = 4, iy = NY - 8, iy = NY - 4, bestimmt der Bewegungsvorhersageprozessor 30-3 einen Teil des Referenzbereichs dazu, außerhalb der Bildebene zu sein, selbst wenn der Referenzbereich innerhalb der Bildebene ist, und beachtet die zugehörigen Summen der Absolutwerte der Vorhersagefehler nicht. Die Bewegungsvorhersageprozessoren 30-4 und 30-5 arbeiten auf gleiche Weise jeweils für ix = NX - 8, ix = NX - 4, iy = 0, iy = 4 und für ix = 0, ix = 4, iy = 0, ix = 4.
- Jedoch wird das Ergebnis eines Auslesens des Blocks, der die stärkste Ähnlichkeit zum aktuellen Block hat, innerhalb des Referenzbereichs, der dazu bestimmt wird, innerhalb der Bildebene zu sein, ausgegeben. Somit unterscheidet sich das Ergebnis wahrscheinlich bis zu einem gewissen Maß. Wenn ein solcher Block von den Ausgaben der fünf Bewegungsvorhersageprozessoren ausgewählt wird, ist das Ergebnis kein Fehler, da das Auslesen nicht in einem ungültigen Referenzbereich durchgeführt worden ist.
- Als nächstes empfängt der Vorhersageergebnisselektor 62 ein Zeitgabesignal entsprechend der Paketadresse 1 vom Zeitgabegenerator 61, und ihm werden die Summen der Absolutwerte der Vorhersagefehler von den Ausgängen der nicht ausgeschlossenen Bewegungsvorhersageprozessoren zugeführt. Der Bewegungsvorhersageprozessor, der den kleinsten Wert ausgibt, wird ausgewählt, und die entsprechende Zahl wird ausgewählt. Die Zahlen 30-1 bis 30-5, die dieselben wie diejenigen sind, die in Fig. 2 verwendet werden, werden der Annehmlichkeit halber verwendet. Der kleinste Wert wird die Summe der Absolutwerte der Vorhersagefehler des Blocks, der die stärkste Ähnlichkeit zum aktuellen Block hat, innerhalb des Bereichs, kombiniert aus den Referenzbereichen, die durch die jeweiligen Bewegungsvorhersageprozessoren in Betracht gezogen wurden.
- Als nächstes empfängt der Vorhersageergebnisselektor 62 ein Zeitgabesignal entsprechend der Paketadresse 2 vom Zeitgabegenerator 61, und ihm wird der Codierungstyp vom Ausgang des Bewegungsvorhersageprozessors zugeführt, der ausgewählt wird, wie es oben beschrieben ist. Der Codierungstyp ist ein solcher Typ, wie er unter Verwendung der kleinsten Summe der Absolutwerte der Vorhersagefehler und der Summe der Absolutwerte der AC- Komponenten ausgewählt wird, die zu den Bewegungsvektorprozessoren zugeführt werden. Dieser Codierungstyp wird zum Anschluß 22 ausgegeben.
- Der Vorhersageergebnisselektor 62 empfängt ein Zeitgabesignal entsprechend der Paketadresse 3 vom Zeitgabegenerator 61, und ihm wird der Codierungstyp vom Ausgang des Bewegungsvorhersageprozessors zugeführt, der ausgewählt wird, wie es oben beschrieben ist. Der Eingangsbewegungsvektor wird zur Bewegungsvektor-Korrektureinheit 63 zusammen mit der Nummer des Bewegungsvorhersageprozessors ausgegeben.
- Die Bewegungsvektor-Korrektureinheit 63 korrigiert den Bewegungsvektor in Abhängigkeit von der Zahl des Eingangs - Bewegungsvorhersageprozessors. Wenn der Eingangsbewegungsvektor (vx, vy) (-2 ≤ vx ≤ 2, -2 ≤ vy ≤ 2) ist, wird der auf die folgende Weise korrigierte Bewegungsvektor am Anschluß 23 ausgegeben:
- Da die Korrektur den Unterschied in bezug auf die Positionen der Referenzbereiche der jeweiligen Bewegungsvorhersageprozessoren und beispielsweise dem Referenzbereich des Bewegungsvorhersageprozessors 30-2 berücksichtigt, ist der Bereich 152 in Fig. 3 vier Pixel nach links und vier Pixel oberhalb vom Referenzbereich des Bewegungsvorhersageprozessors 30-1, und der aktuelle Bewegungsvektor wird ein richtiger Wert, der der Korrektur durch die obige Gleichung (7) unterzogen ist. Dasselbe kann von den Bewegungsvorhersageprozessoren 30-3 bis 30-5 in dem Sinne gesagt werden, daß der Bewegungsvektor von einem der Korrektur durch die Gleichung (7) unterzogener richtiger Wert ist.
- Durch Verwenden der fünf Bewegungsvorhersageprozessoren 30-1 bis 30-5, die den Bewegungsvektor durch eine parallele Operation innerhalb des Referenzbereichs erfassen, der in der Bildebene enthalten ist, werden der richtige Bewegungsvektor und der Codiertyp, die durch die Bewegungsvorhersageprozessoren mit dem kleinsten Wert der Summe der Absolutwerte der Vorhersagefehler ausgegeben werden, an den Anschlüssen 22, 23 ausgegeben.
- In diesem Fall wird der Erfassungsbereich des richtigen Bewegungsvektors, der durch jeden Bewegungsvorhersageprozessor in Betracht gezogen wird, wie folgt.
- Bewegungsvorhersageprozessor 30-1: -2 ≤ vx ≤ 2, -2 ≤ vx ≤2
- Bewegungsvorhersageprozessor 30-2: -6 ≤ vx ≤ -2, -6 ≤ vy ≤ -2
- Bewegungsvorhersageprozessor 30-3: 2 ≤ vx ≤ 6, -6 ≤ vy ≤ -2
- Bewegungsvorhersageprozessor 30-4: -6 ≤ vx ≤ -2, 2 ≤ vy ≤ 6
- Bewegungsvorhersageprozessor 30-5 : 2 ≤ vx ≤ 6, 2 ≤ vy ≤ 6 Mit dem oben beschriebenen Beispiel einer Anwendung des in Fig. 2 gezeigten Bewegungsvorhersageprozessors kann ein Vektorerfassungsbereich realisiert werden, der fünfmal so groß wie derjenige bei der Verwendung eines einzelnen Bewegungsvorhersageprozessors ist, mit der Ausnahme der Bildrandteile, wobei durch Verwenden von fünf Bewegungsvorhersageprozessoren jeweils der Bewegungsvektor von ± 2 horizontalen Pixeln und ± 2 vertikalen Pixeln erfaßt werden kann.
- Da die jeweiligen Bewegungsvorhersageprozessoren 30 die Verarbeitung gleichzeitig beginnen und beenden, entspricht die Verarbeitungszeit der Verarbeitungszeit des einzelnen Bewegungsvorhersageprozessors, addiert mit der Verarbeitungszeit des Vorhersageergebnisselektors 62 und des Bewegungsvektorkorrektors 63, wie es in Fig. 3B gezeigt ist. Die letztere Verarbeitungszeit kann kleiner als diejenige des Bewegungsvorhersageprozessors sein, der eine Blockanpassung 25 mal durchführt.
- Bei der Anwendung, wie sie in Fig. 2 gezeigt ist, sind fünf Bewegungsvorhersageprozessoren 30-1 bis 30-5 parallel angeordnet. Es ist jedoch offensichtlich, daß eine größere Anzahl von Bewegungsvorhersageprozessoren auf gleiche Weise angeordnet werden kann, um den Erfassungsbereich des Bewegungsvektors zu vergrößern. Die Verarbeitungszeit ist im wesentlichen gegenüber derjenigen unverändert, bei welcher der einzelne Bewegungsvorhersageprozessor verwendet wird, selbst wenn eine größere Anzahl von Bewegungsvorhersageprozessoren parallel angeordnet ist. Darüber hinaus ist es nur nötig, den Vorhersageergebnisselektor 62 und den Bewegungsvektorkorrektur 63 hinzuzufügen, wodurch der Schaltungsaufbau vereinfacht wird.
- Wendet man sich der Fig. 7 zu, ist ein beim zweiten Ausführungsbeispiel der vorliegenden Erfindung verwendeter Bewegungsvorhersageprozessor 40 durch die Verarbeitung der Bewegungsvorhersage 121 des in Fig. 13 gezeigten Bewegungsbild-Codierungssystems beansprucht. Fig. 8 zeigt ein Beispiel einer Anwendung zum Vergrößern des Referenzbereichs durch paralleles Anordnen zweier Bewegungsvorhersageprozessoren 40-1 bis 40-3, von welchen jeder identisch zum Prozessor 40 ist, wie er in Fig. 7 gezeigt ist. Dieses Beispiel einer Anwendung ist auf ähnliche Weise durch die Bewegungsvorhersage 121, die in Fig. 13 gezeigt ist, beansprucht.
- Die Hauptunterschiede der Anordnung gegenüber der Anordnung der Fig. 1 bestehen darin, daß die vorliegende Anordnung auf eine Bewegungsvorhersage des Bewegungsbild-Codierungssystems gemäß dem MPEG- System gerichtet ist, die eine Vorwärtsvorhersagecodierung, eine Rückwärtsvorhersagecodierung, eine bidirektionale Vorhersagecodierung und eine Innerframe-Vorhersagecodierung handhaben kann, und daß, während die Anordnung der Fig. 1 den Paketadressengenerator im Bewegungsvorhersageprozessor hat und eine Ausgabe als die Paketdaten ausgibt, das Ausführungsbeispiel der Fig. 7 Ausgangsdaten durch Bestimmen der Adresse von außerhalb ausliest.
- Vor einer Erklärung des zweiten Ausführungsbeispiels, das in Fig. 8 gezeigt ist, wird die Operation des Bewegungsvorhersageprozessors der Fig. 7 erklärt.
- Der in Fig. 7 gezeigte Bewegungsvorhersageprozessor 40 enthält eine Arithmetik - und Logikeinheit 31, Adressengeneratoren 33 und 35, einen Codierungstypselektor 45, eine Vorhersagefehler-Bewertungseinheit 46 und ein Offsetregister 42. Der aktuelle Framespeicher 11 und der Referenzframespeicher 21 sind, wie bei der Schaltung der Fig. 1, auch vorgesehen.
- Davon sind die Arithmetik - und Logikeinheit 31, die Adressengeneratoren 33, 35 und das Offsetregister 42 gleich der Bewegungsvektor-Erfassungseinheit 24 der Fig. 13, während der Codierungstypselektor 45 und die Vorhersagefehler-Bewertungseinheit 46 gleich der Codierungstyp-Beurteilungseinheit 125 der Fig. 13 bzw. der Vorhersagefehlerbewertung 126 der Fig. 13 sind. Der aktuelle Framespeicher 11 und der Referenzframespeicher 21 sind auch vorgesehen, um den aktuellen Block von 4 horizontalen Pixeln und 4 vertikalen Pixeln und den Referenzbereich von 8 horizontalen Pixeln und 8 vertikalen Pixeln zur Verarbeitungseinrichtung 31 gemäß den jeweiligen durch die Adressengeneratoren 33, 35 erzeugten Adressen zuzuführen.
- Beim MPEG- System werden zwei Frames, die Vorwärts- und Rückwärtsvorhersage genannt werden, im Referenzframespeicher 21 gespeichert. Die Adressen für den Referenzframespeicher 21 werden so ausgewählt, daß der erste Frame bei denselben Adressen gespeichert wird, wie denjenigen für den Frame, der in Fig. 12 gezeigt ist, und der zweite Frame in derselben Pixelsequenz wie derjenigen des ersten Frames ab der letzten Adresse des ersten Frames, nämlich NX*NY bis zu 2*NX*NY-1, gespeichert wird.
- Die Arithmetik - und Logikeinheit 31 ist dieselbe wie die Arithmetik - und Logikeinheit 31 des Ausführungsbeispiels der Fig. 1 und erfaßt den Bewegungsvektor im Bereich von ± 2 horizontalen Pixeln und ± 2 vertikalen Pixeln in einem derartigen Bereich, daß der Referenzbereich innerhalb der Bildebene liegt. Die Summe von Absolutwerten der AC- Komponenten des aktuellen Blocks wird auch gefunden.
- In Verbindung mit dem von der Arithmetik - und Logikeinheit 31 ausgegebenen Bewegungsvektor treten Vorhersageblockkandidaten für eine Vorwärtsvorhersagecodierung, eine Rückwärtsvorhersagecodierung und eine bidirektionale Vorhersagecodierung jeweils in Anschlüsse 47, 48, 49 ein. Die Vorhersagefehler - Bewertungseinrichtung 46 berechnet die Summen der Absolutwerte der Vorhersagefehler für die Vorhersageblockkandidaten und den aktuellen Block.
- Dies kann durch Ersetzen von g(ix + vx, iy + vy) der Gleichung (1) durch die jeweiligen Vorhersagekandidatenblöcke erreicht werden, und zwar unter Verwendung der Blockanpassungseinrichtung der Verarbeitungsmodule des herkömmlichen Systems, das beispielsweise in Fig. 4 gezeigt ist, wie in der Berechnungseinrichtung für die Summen von Absolutwerten der AC- Komponenten 79. Die Vorhersagefehler-Bewertungseinheit 46 gibt zu einem Typenselektor 45 den kleinsten Wert unter den drei Summen der Absolutwerte der Vorhersagefehler und ein Signal zur Unterscheidung zwischen den Frame - zu - Frame - Vorhersagesystemen, d. h. der Vorwärtsvorhersagecodierung, der Rückwärtsvorhersagecodierung und der bidirektionalen Vorhersagecodierung, aus, für welche der kleinste Wert erzeugt worden ist.
- Der Codierungstypselektor 45 beurteilt den Codierungstyp basierend auf dem Identifizierungssignal, das vom Anschluß 46 eingegeben wird, derart, daß er eine Vorwärtsvorhersagecodierung, eine Rückwärtsvorhersagecodierung und eine bidirektionale Vorherseagecodierung ist, wenn (der kleinste Wert der Summe der Absolutwerte der Vorhersagefehler) < (Summe von Absolutwerten von AC- Komponenten) gilt, und beurteilt den Codierungstyp derart, daß er eine Innerframe- Codierung ist, wenn (der kleinste Wert der Summe der Absolutwerte der Vorhersagefehler) (Summe der Absolutwerte der AC- Komponenten) gilt, wie beim oben beschriebenen Beispiel.
- Der Adressengenerator 33 gibt die Adresse addiert mit einem Offset vom Anschluß 16 aus, wie beim vorherigen Beispiel der Fig. 1. Jedoch wird der Offset vom Offsetregister 42 angelegt, wie es in Fig. 7 gezeigt ist. Wenn die Koordinaten des Pixels in der linken oberen Ecke des aktuellen Blocks (ix, iy) (0 ≤ ix < NX, 0 ≤ iy < NY) sind, werden die Koordinaten der Pixel, die den Referenzbereich Qx, jy) (0 s jx < NX, 0 ≤ jy < NY) bilden, ix-2 ≤ jx ≤ ix+5, iy-2 ≤ jy ≤ iy+5.
- Der Frame, der ab der Adresse 0 beginnt, und ein weiterer Frame, der ab der Adresse NX*NY beginnt, sind im Referenzframespeicher gespeichert, so daß dann, wenn eine Basis auf die Adresse des ersten Pixels des Frames eingestellt wird, wobei der erste Frame 0 ist und der zweite Frame NX*NY ist, die durch den Adressengenerator 33 zum Lesen des Referenzbereichs ausgegebenen Adressen wie folgt werden.
- 1. Zeile des Referenzbereichs:
- Basis +(iy-2)*NX + ix - 2+ Offset, ..., Basis +(iy-2)*NX + ix + 5 + Offset
- 2. Zeile des Referenzbereichs:
- Basis +(iy-1)*NX + ix - 2 + Offset,..., Basis +(iy-1)*NX + ix + 5 + Offset
- ·
- ·
- ·
- 8. Zeile des Referenzbereichs:
- Basis +(iy+5)*NX + ix - 2 + Offset, ...,Basis +(iy+5)*NX + ix + 5 + Offset ...(8)
- Der Bewegungsvorhersageprozessor 40 der Fig. 7 gibt dieselben Daten, wie sie oben unter (5) aufgelistet sind, am Anschluß 43 aus, wie bei der Schaltung der Fig. 1. Diese Daten werden durch Bestimmen der Adressen von außerhalb über einen Anschluß 44 ausgelesen. Es wird angenommen, daß die Adressen und die Daten einander entsprechen, wie es unten in (9) gezeigt ist. Das Offsetregister 42 hat auch Adressen, und die Adressen und die Daten werden über Anschlüsse 44, 43 bestimmt, und Schreibimpulse werden am Anschluß 41 zum Schreiben angelegt.
- Nun wird die Operation des einzelnen Bewegungsvorhersageprozessors 40, der in Fig. 7 gezeigt ist, wie er auf die Bewegungsvorhersage 121 des Bewegungsbild- Codierungssystems der Fig. 13 angewendet wird. Vor einem Beginnen der Verarbeitung wird 0 bei den Anschlüssen 44, 43 eingestellt, und der Schreibimpuls wird an den Anschluß 41 zum Schreiben von 0 zum Offsetregister 42 angelegt. Somit wird der an die zum Referenzframespeicher 21 auszugebende Adresse anzulegende Offset 0. Die Adressen mit dem 0 - Wert des Offsets, die in der Gleichung (8) gezeigt sind, werden zum Lesen des Referenzbereichs ausgegeben.
- Der aktuelle Block und der Referenzbereich werden zuerst jeweils aus dem aktuellen Framespeicher 11 und aus dem vergangenen Frame gelesen, und der Bewegungsvektor für den vergangenen Referenzframe wird erfaßt. Durch Einstellen von 3 am Anschluß 44 von außerhalb und durch Auslesen des Werts am Anschluß 43 wird der Bewegungsvektor für den vergangenen Referenzframe zum lokalen Decodierframespeicher 110 ausgegeben, der in Fig. 13 gezeigt ist.
- Der aktuelle Frame und der Referenzbereich werden aus dem aktuellen Speicher 11 und dem zukünftigen Frame gelesen, und der Bewegungsvektor für den zukünftigen Referenzframe wird erfaßt. Durch Einstellen von 3 am Anschluß 44 von außerhalb und durch Auslesen des Werts am Anschluß 43 wird der Bewegungsvektor für den zukünftigen Referenzframe zum lokalen Decodierframespeicher 110 ausgegeben, der in Fig. 13 gezeigt ist.
- Drei unterschiedliche Vorhersageblockkandidaten, zu denen der ausgegebene Bewegungsvektor gehört, treten in die Anschlüsse 47, 48, 49 ein. Der aktuelle Frame wird vom aktuellen Framespeicher gelesen, und die Summen der Absolutwerte der Vorhersagefehler dazwischen werden berechnet. Der kleinste Summen - Wert und das Signal zum Identifizieren des Frame - zu - Frame - Vorhersagessytems, für welches der kleinste Wert erhalten worden ist, werden zum Codierungstypselektor 45 ausgegeben.
- Dann wird durch Einstellen von 2 am Anschluß 44 und durch Auslesen des Werts des Anschlusses 43 der Codierungstyp bei den Selektoren 102, 118 ausgegeben, die in Fig. 13 gezeigt sind.
- Es ist aus dem Obigen zu sehen, daß der in Fig. 7 gezeigte Bewegungsvorhersageprozessor auf die Bewegungsvorhersage 121 des in Fig. 13 gezeigten Bewegungsbild - Vorhersagesystems angewendet werden kann.
- Nun wird unter Bezugnahme auf Fig. 8 das zweite Ausführungsbeispiel der Erfindung erklärt. Beim vorliegenden Ausführungsbeispiel sind drei Bewegungsvorhersageprozessoren 40, wie sie in Fig. 7 gezeigt sind, als die Prozessoren 40-1 bis 40-3 zum Vergrößern des Bewegungsvektor - Erfassungsbereichs zum Verbessern des Kompressionsverhältnisses parallel angeordnet. Das vorliegende Beispiel einer Anwendung führt die Verarbeitung für die Bewegungsvorhersage durch, die in Fig. 13 gezeigt ist.
- Die Anordnung der Fig. 8 weist den aktuellen Framespeicher 11 auf, der derselbe wie derjenige der Fig. 7 ist, drei Bewegungsvorhersageprozessoren 40-1 bis 40-3, die jeweils mit Referenzframespeichern 84, 85 und 86 und Adressendecodierern 87, 88 und 89 verbunden sind, eine Steuerung 90 und einen Zeitgabegenerator 94. Jeder der Referenzframespeicher 81, 82, 83 ist derselbe wie der in Fig. 7 gezeigte Referenzframespeicher 21.
- Die Vorhersagekandidatenblöcke für die Vorwärtsvorhersagecodierung, die Rückwärtsvorhersagecodierung und die bidirektionale Vorhersagecodierung treten nur in den Bewegungsvorhersageprozessor 40-1 ein.
- Die Steuerung 90 liest und schreibt Daten der Bewegungsvorhersageprozessoren 40-1 bis 40-3 über den Adressenbus 91 und den Datenbus 92. Das Schreibimpulssignal wird von der Signalleitung 93 zugeführt. Dafür werden den Daten für die jeweiligen Bewegungsvorhersageprozessoren, die oben in (9) gezeigt sind, unterschiedliche Adressen zugeteilt. Die Adressendecodierer 87 bis 89 decodieren die über den Adressenbus 91 ausgegebenen Adressen zum Lesen und Schreiben von Daten für die Bewegungsvorhersageprozessoren 40-1 bis 40-3.
- Die Adressen werden durch zwei Ziffern dargestellt und bezeichnen die Bewegungsvorhersageprozessoren 40-1, 40-2 oder 40-3, wenn die Ziffer, die an der Zehnerstelle steht, jeweils 1, 2 oder 3 ist. Beispielsweise zeigt die Adresse 12 den Codierungstyp des Bewegungsvorhersageprozessors 40-1 an.
- Nun wird die Operation des vorliegenden Ausführungsbeispiels erklärt. Die drei Bewegungsvorhersageprozessoren beginnen die Verarbeitung gleichzeitig und synchronisiert in bezug auf ihre Operationen, wie beim Beispiel der in Fig. 2 gezeigten Anwendung. In den Offsetregistern 42 der Bewegungsvorhersageprozessoren (siehe Fig. 7) stellt die Steuerung 90 die folgenden Werte im voraus ein. Es wird angemerkt, daß das Schreiben in das Offsetregister 42 des Bewegungsvorhersageprozessors 40-1 durch Ausgeben von 14 und 0 jeweils auf dem Adressenbus 9 und dem Datenbus realisiert wird, und durch Ausgeben des Schreibimpulses auf der Signalleitung 93.
- Bewegungsvorhersageprozessor 40-1 0
- Bewegungsvorhersageprozessor 40-2 -4
- Bewegungsvorhersageprozessor 40-3 +4
- Das Offsetregister 42 führt der Adresse einen Offset zu, die ausgegeben wird, wenn die Pixel vom Referenzbereich ausgelesen werden, so daß dann, wenn die Adresse, die durch den Bewegungsvorhersageprozessor 40-1 ausgegeben wird, Basis + jy*NX + jx ist und das Pixel des zu lesenden Referenzbereichs h(jx, jy) ist, die durch die jeweiligen Prozessoren gleichzeitig ausgegebenen Adressen wie folgt werden:
- Bewegungsvorhersageprozessor 40-2:
- Basis + jy*NY + jx - 4 = Basis + NX*jy + jx - 4
- Bewegungsvorhersageprozessor 40-3:
- Basis + jy*NY + jx + 4 = Basis + NX*jy + jx + 4
- Diese Adressen werden zu den Referenzframespeichern 84 bis 86 ausgegeben, die mit den jeweiligen Bewegungsvorhersageprozessoren verbunden sind. In den jeweiligen Referenzframespeichern werden Luminanzkomponenten des aktuellen Blocks, der auf eine ähnliche Weise wie in Fig. 13 decodiert wird, gleichzeitig gespeichert und vom Anschluß 20 einem Updaten unterzogen.
- Dieselben Schreibadressen werden zu dieser Zeit von außerhalb bestimmt. Folglich ist dann, wenn der Referenzbereich des Bewegungsvorhersageprozessors 40- 1 der Bereich 181 aus 8 horizontalen Pixeln mal 8 vertikalen Pixeln ist, der in Fig. 9 schattiert gezeigt ist, der Referenzbereich des Bewegungsvorhersageprozessors 40-2 ein Bereich 182 von 8 horizontalen Pixeln mal 8 vertikalen Pixeln um 4 Pixel in horizontaler Richtung gegenüber dem Referenzbereich des Bewegungsvorhersageprozessors 40-1 versetzt. Gleichermaßen ist der Referenzbereich des Bewegungsvorhersageprozessors 40-3 ein Bereich 183, wie es in Fig. 9 gezeigt ist. Dieselbe Beziehung gut für vergangene und zukünftige Referenzframes.
- Aus dem aktuellen Frame 1 wird der aktuelle Block gemäß den Adressen ausgelesen, die durch den Bewegungsvorhersageprozessor 40-1 ausgegeben werden, um zu den Bewegungsvorhersageprozessoren 40-1 bis 40-3 ausgegeben zu werden. Da die jeweiligen Bewegungsvorhersageprozessoren synchron betrieben werden, werden den drei Bewegungsvorhersageprozessoren derselbe aktuelle Block und unterschiedliche Referenzbereiche zugeführt, die in Fig. 9 gezeigt sind. Somit wird der Ähnlichkeitsblock durch eine parallele Operation innerhalb der unterschiedlichen zugeteilten Referenzbereiche ausgelesen.
- Zu der Zeit, zu der der Bewegungsvektor für den vergangenen Referenzframe gefunden worden ist, gibt der Zeitgabegenerator 94 ein Signal zur Steuerung 90 aus, die Daten der jeweiligen Prozessoren sequentiell ausliest.
- Zuerst wird 10 auf dem Adressenbus 91 ausgegeben, und die Koordinatenwerte aus dem Frame des aktuellen Blocks, die durch den Bewegungsvorhersageprozessor 40-1 ausgegeben werden, werden eingegeben. Die Steuerung 90 bestimmt die Bewegungsvorhersageprozessoren, von welchen die Referenzbereiche in der Bildebene liegen, wie beim Beispiel der in Fig. 2 gezeigten Anwendung. Der kleinste Wert der Summen der Absolutwerte der Vorhersagefehler des Bewegungsvorhersageprozessors, von welchem der Referenzbereich in der Bildebene liegt, wird ausgelesen. Beispielsweise gibt die Steuerung 90 dann, wenn die Referenzbereiche der Bewegungsvorhersageprozessoren 40-1 und 40-2 in der Bildebene liegen, 11 und 12 auf dem Adressenbus aus, um den kleinsten Wert der Summen der Absolutwerte der Vorhersagefehler auszulesen, um den kleinsten Summenwert auszuwählen.
- Der Bewegungsvektor für den vergangenen Referenzframe, der durch den Bewegungsvorhersageprozessor mit dem kleinsten Summenwert ausgegeben wird, wird durch die Steuerung 90 durch eine ähnliche Einrichtung ausgelesen und auf ähnliche Weise wie bei der beim Beispiel der in Fig. 2 gezeigten Anwendung korrigiert. Wenn die durch die jeweiligen Bewegungsvorhersageprozessoren ausgegebenen Bewegungsvektoren (vx, vy) (-2 ≤ vx ≤ 2, -2 ≤ vy ≤ 2) sind, wird die Korrektur auf folgende Weise durchgeführt.
- Nummer des Bewegungsvorhersagepro - Korrektur-Bewegungsvektor zessors
- 40-1: (vx, vy)
- 40-2: (vx-4, vy)
- 40-3: (vx+4, vy)
- ...(10)
- Der Bewegungsvektor für den korrigierten vergangenen Referenzframe wird am Anschluß 23 ausgegeben. Diese Korrektur berücksichtigt die Positionsdifferenz zwischen den Referenzbereichen der jeweiligen Bewegungsvorhersageprozessoren. Beispielsweise wird deshalb, weil der Referenzbereich des Bewegungsvorhersageprozessors 40-2 ein Bereich 182 der Fig. 9 ist, der um vier Pixel in Richtung nach links gegenüber dem Referenzbereich des Bewegungsvorhersageprozessors 40-1 versetzt ist, der aktuelle Vektor richtig, wenn er gemäß dem obigen Ausdruck (10) korrigiert wird. Dasselbe kann vom Bewegungsvorhersageprozessor 40-3 gesagt werden.
- Zu der Zeit, zu der der Bewegungsvektor für den zukünftigen Referenzframe gefunden worden ist, gibt der Zeitgabegenerator 94 ein Signal zur Steuerung 90 aus, die dann einen Bewegungsvektor für den zukünftigen Referenzframe, der auf dieselbe Weise wie der Bewegungsvektor für den vergangenen Frame korrigiert ist, am Anschluß 23 aus.
- Zu der Zeit, zu der die Codierung durch den Codierungstypselektor des Bewegungsvorhersageprozessors 40-1 bestimmt worden ist, gibt der Zeitgabegenerator 94 ein Signal zur Steuerung 90 aus, die dann den Codierungstyp durch eine ähnliche Einrichtung ausliest und die ausgelesenen Daten am Anschluß 22 ausgibt.
- Durch Auslesen der Vorhersageergebnisse durch die jeweiligen Bewegungsvorhersageprozessoren durch die obige Ablauffolge ist es bei dem Beispiel der in Fig. 8 gezeigten Anwendung möglich, die Verarbeitung der in Fig. 13 gezeigten Bewegungsvorhersage 121 auszuführen.
- Aus der Gleichung (10) sind die Erfassungsbereiche für den Bewegungsvektor, der durch die jeweiligen Bewegungsvorhersageprozessoren in Anspruch genommen wird, wie folgt gegeben.
- Bewegungsvorhersageprozessor 40-1: -2 ≤ vx ≤ 2, -2 ≤ vy ≤ 2 Bewegungsvorhersageprozessor 40-2: -6 ≤ vx ≤ -2, -2 ≤ vy ≤ 2 Bewegungsvorhersageprozessor 40-3 : 2 ≤ vx ≤ 6, -2 ≤ vy ≤ 2
- Somit ist der Erfassungsbereich für den Bewegungsvektor in seiner Gesamtheit ± 6 horizontale Pixel und ± 2 vertikale Pixel für sowohl den Bewegungsvektor vor dem vergangenen Frame als auch den Bewegungsvektor vor dem vergangenen Frame.
- Beim zweiten Ausführungsbeispiel, das in Fig. 8 gezeigt ist, kann der Bewegungsvektor-Erfassungsbereich dreimal so groß wie derjenige, der bei der Verwendung eines einzelnen Bewegungsvorhersageprozessors erreicht wird, durch Verwenden dreier Bewegungsvorhersageprozessoren realisiert werden, die den Bewegungsvektor von ± 2 horizontalen Pixeln und ± 2 vertikalen Pixeln erfassen können, mit der Ausnahme des Bildendes oder von Randbereichen.
- Zusätzlich entspricht deshalb, weil jeder Bewegungsvorhersageprozessor die Verarbeitungsoperation gleichzeitig beginnt und beendet, die Verarbeitungszeit des vorliegenden Beispiels der Anwendung derjenigen durch den einzelnen Bewegungsvorhersageprozessor, addiert mit der Verarbeitungszeit für die Steuerung. Die letztere Verarbeitungszeit kann verglichen mit derjenigen der jeweiligen Bewegungsvorhersageprozessoren reduziert werden, die die Blockanpassung 25 mal ausführen.
- In Fig. 8 sind drei Prozessoren parallel angeordnet. Es ist jedoch klar, daß eine größere Anzahl von Bewegungsvorhersageprozessoren parallel angeordnet werden kann, um den Erfassungsbereich des Bewegungsvektors zu vergrößern, und zwar durch eine ähnliche Technik, ohne die Verarbeitungszeit, verglichen mit derjenigen für den einzelnen Prozessor, wesentlich zu ändern.
- Bei den oben beschriebenen Ausführungsbeispielen der vorliegenden Erfindung ist es möglich, mehrere Bewegungsvorhersageprozessoren parallel anzuordnen, um den Bewegungsvektor-Erfassungsbereich zu vergrößern, ohne daß die gesamte Verarbeitungszeit im Vergleich mit dem Fall eines Verwendens des einzelnen Prozessors wesentlich geändert wird. Insbesondere wird unter der Annahme, daß der aktuelle Block die allgemein verwendete Größe von 16 horizontalen Pixeln mal 16 vertikalen Pixeln hat und die herkömmlichen Bewegungsvorhersageprozessoren, die die Arithmetik - und Logikmodule mit beispielsweise 15 Blockanpassungseinrichtungen aufweisen, in drei Stufen angeordnet sind, wie es in Fig. 4 gezeigt ist, seit der Beendigung des Verarbeitungszyklus des ersten Stufenmoduls bis zur Beendigung desjenigen des dritten Stufenmoduls zusätzlich zur Verzögerung, die richtig für den Vergleichszyklus ist, eine Verzögerung von 30 Pixeln erzeugt.
- Gegensätzlich dazu beenden dann, wenn mehrere Bewegungsvorhersageprozessoren gemäß der vorliegenden Erfindung verwendet werden, alle Prozessoren die Verarbeitung gleichzeitig, ohne die Verzögerung von Pixeln zu erzeugen, wie beim Beispiel nach dem Stand der Technik, wodurch die Verarbeitungszeit verringert wird.
- Die Erfindung kann in anderen spezifischen Formen ausgeführt werden, ohne von ihren wesentlichen Eigenschaften abzuweichen. Die vorliegenden Ausführungsbeispiele sollen daher in jeder Hinsicht als illustrativ und nicht als beschränkend angesehen werden.
Claims (8)
1. Bewegungsvorhersagevorrichtung, die folgendes aufweist:
eine Matrix aus n Bewegungsvorhersageprozessoren (30-1, ..., 30-5),
wobei n > 1 gilt, die jeweils einen damit verbundenen zugehörigen
Referenzframespeicher (56; ...; 60) haben, wobei ein aktueller Block von Bilddaten, der
in einen ersten der n Bewegungsvorhersageprozessoren zur Verarbeitung
dadurch eintritt, auch gleichzeitig zu den übrigen n-1
Bewegungsvorhersageprozessoren zugeführt wird, wobei jeder der
Bewegungsvorhersageprozessoren folgendes aufweist:
einen ersten Adressengenerator (35) zum Erzeugen einer Adresse zum
Lesen des aktuellen Blocks, wobei der Block aus einem Frame abgeteilt ist,
und zum Berechnen von Koordinaten des Blocks, der gerade verarbeitet wird;
einen Codierungstyp-Selektor (32; 45), der Codierungstypdaten bestimmt,
die eine einer Frame-zu-Frame-Vorhersagecodierung und einer Innerframe-
Codierung auf einer blockweisen Basis anzeigen;
ein Rechenwerk (31; 46) zum Erfassen eines Bewegungsvektors für den
aktuellen Block und zum Berechnen von Bewertungsdaten zum Abschätzen
einer Codierungsquantität; und
einen zweiten Adressengenerator (33) zum Erzeugen einer Adresse zum
Auslesen von Daten eines Referenzbereichs aus dem Referenzframespeicher
des Bewegungsvorhersageprozessors, wobei auf den Referenzbereich Bezug
genommen wird, wenn der Bewegungsvektor erfaßt wird, und zum Addieren
einer Distanzadresse zu der Adresse zum Modifizieren der Position des
Referenzbereichs;
eine Einrichtung zum Ausgeben der Koordinaten der Blöcke, der
Bewertungsdaten, des Bewegungsvektors und der Codierungstypdaten zu einer
voreingestellten Zeitgabe;
wobei die Vorrichtung derart aufgebaut ist, daß jeder der
Bewegungsvorhersageprozessoren dann, wenn die Verarbeitung des Blocks, der gerade
verarbeitet wird, beendet ist, im wesentlichen gleichzeitig die Koordinaten des
Blocks, der gerade verarbeitet wird, die Bewertungsdaten, den
Bewegungsvektor und die Codierungstypdaten zur voreingestellten Zeitgabe ausgibt.
2. Bewegungsvorhersagevorrichtung nach Anspruch 1, die weiterhin einen
Paketadressengenerator (34; 90) zum Erzeugen einer Paketadresse zur
voreingestellten Zeitgabe aufweist, wobei der erste Adressengenerator, das
Rechenwerk und der Codierungstyp-Selektor die Blockkoordinaten, die
Bewertungsdaten und den Bewegungsvektor und die Codierungstypdaten jeweils in
Antwort auf den Wert der Paketadresse ausgeben.
3. Bewegungsvorhersagevorrichtung nach Anspruch 1, wobei eine
Paketadresse zur voreingestellten Zeitgabe von außerhalb zugeführt wird, und, in
Antwort auf den Wert der Paketadresse, die Blockkoordinaten, die
Bewertungsdaten, der Bewegungsvektor und die Codierungstypdaten jeweils ausgelesen
werden und die Distanzadresse für den zweiten Adressengenerator
eingestellt wird.
4. Bewegungsvorhersagevorrichtung nach Anspruch 1, wobei eine
Distanzadresse von Null an den ersten Bewegungsvorhersageprozessor angelegt
wird,
eine andere Distanzadresse an jeden der n-1 übrigen
Bewegungsvorhersageprozessoren angelegt wird, so daß die jeweiligen Referenzbereiche in
bezug auf eine Position vom Referenzbereich des ersten
Bewegungsvorhersageprozessors unterschiedlich sind,
wobei die Vorrichtung weiterhin folgendes aufweist:
eine Auswahleinheit
(62; 90) zum Auswählen der Ausgangsdaten jenes
Bewegungsvorhersageprozessors, der seinen Referenzbereich innerhalb der Bildebene begrenzt
hat, und zum Ergeben von Bewertungsdaten, die der stärksten Ähnlichkeit
zum aktuellen Block entsprechen, und
einen Bewegungsvektorkorrektor (63; 90) zum Ausgeben des
Bewegungsvektors, der durch den Bewegungsvorhersageprozessor ausgegeben
wird, der durch die Auswahleinheit ausgewählt wird, nach einem Korrigieren
des ausgegebenen Bewegungsvektors gemäß der Distanzadresse, die dem
Bewegungsvorhersageprozessor geboten wird.
5. Bewegungsvorhersagevorrichtung nach Anspruch 1, die weiterhin einen
Bewegungsvektorkorrektor (63; 90) zum Korrigieren einer
Bewegungsvektorausgabe gemäß der durch den jeweiligen Bewegungsvorhersageprozessor
angelegten Distanzadresse aufweist.
6. Bewegungsvorhersagevorrichtung nach Anspruch 1, die eine Einrichtung für
die Frame-zu-Frame-Vorhersagecodierung aufweist, die eine
Vorwärtsvorhersagecodierung, eine Rückwärtsvorhersagecodierung und eine bidirektionale
Vorhersagecodierung aufweist.
7. Bewegungsvorhersagevorrichtung nach Anspruch 1, die eine Einrichtung für
eine Innerframe-Vorhersagecodierung aufweist, die eine
Vorwärtsvorhersagecodierung aufweist.
8. Bewegungsvorhersagevorrichtung nach Anspruch 5, wobei eine
Distanzadresse von Null an den ersten Bewegungsvorhersageprozessor angelegt
wird,
die an die übrigen der Bewegungsvorhersageprozessoren angelegten
Distanzadressen derart sind, daß die jeweiligen Referenzbereiche in bezug
auf die Position vom Referenzbereich des ersten
Bewegungsvorhersageprozessors unterschiedlich sind, und
die Vorrichtung folgendes aufweist:
eine Auswahleinheit (62; 90) zum
Auswählen der Ausgangsdaten desjenigen
Bewegungsvorhersageprozessors, der seinen Referenzbereich innerhalb der Bildebene begrenzt hat, und
zum Ergeben von Bewertungsdaten, die der stärksten Ähnlichkeit zum
aktuellen Block entsprechen, und
eine Einrichtung zum Ausgeben des Bewegungsvektors (63; 90), der
durch den Bewegungsvorhersageprozessor ausgegeben wird, der durch die
Auswahleinheit ausgewählt wird, nachdem der Ausgangsbewegungsvektor
durch den Bewegungsvektorkorrektur korrigiert ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34591693A JP3031152B2 (ja) | 1993-12-24 | 1993-12-24 | 動き予測プロセッサ及び動き予測装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69421158D1 DE69421158D1 (de) | 1999-11-18 |
DE69421158T2 true DE69421158T2 (de) | 2000-08-17 |
Family
ID=18379872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69421158T Expired - Fee Related DE69421158T2 (de) | 1993-12-24 | 1994-12-23 | Bewegungsprädiktionsprozessor und -vorrichtung |
Country Status (4)
Country | Link |
---|---|
US (1) | US5717462A (de) |
EP (1) | EP0660615B1 (de) |
JP (1) | JP3031152B2 (de) |
DE (1) | DE69421158T2 (de) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2671820B2 (ja) * | 1994-09-28 | 1997-11-05 | 日本電気株式会社 | 両方向予測方法及び両方向予測装置 |
US6057893A (en) * | 1995-12-28 | 2000-05-02 | Sony Corporation | Picture encoding method, picture encoding apparatus, picture transmitting method and picture recording medium |
DE69717359T2 (de) * | 1996-07-29 | 2003-04-30 | Matsushita Electric Industrial Co., Ltd. | Verfahren zur Komprimierung und Dekomprimierung von eindimensionalen Zeitserien |
WO1998036576A1 (en) * | 1997-02-13 | 1998-08-20 | Mitsubishi Denki Kabushiki Kaisha | Moving picture prediction system |
JP4010024B2 (ja) * | 1997-09-02 | 2007-11-21 | ソニー株式会社 | 圧縮動画像信号のデコード装置 |
DE69803195T2 (de) * | 1997-11-27 | 2002-08-29 | British Telecommunications P.L.C., London | Codeumsetzung |
JPH11168730A (ja) | 1997-12-04 | 1999-06-22 | Nec Corp | 画像圧縮装置 |
JP4142180B2 (ja) | 1998-10-29 | 2008-08-27 | 富士通株式会社 | 動きベクトル符号化装置および復号装置 |
JP3611507B2 (ja) * | 2000-05-30 | 2005-01-19 | 松下電器産業株式会社 | 動きベクトル検出装置 |
KR20030009669A (ko) * | 2001-07-23 | 2003-02-05 | 삼성전자주식회사 | 다채널 영상 부호화기 및 그 부호화 방법 |
US8275047B2 (en) * | 2001-09-20 | 2012-09-25 | Xilinx, Inc. | Method and device for block-based conditional motion compensation |
FR2830159A1 (fr) * | 2001-09-24 | 2003-03-28 | Thomson Licensing Sa | Procede de codage selon la norme mpeg |
TWI260509B (en) | 2002-08-15 | 2006-08-21 | Sony Corp | Method and apparatus for processing image data and semiconductor storage device |
JP3941644B2 (ja) * | 2002-08-15 | 2007-07-04 | ソニー株式会社 | 画像処理装置および画像処理方法 |
US7269288B2 (en) * | 2003-07-30 | 2007-09-11 | Mediatek Inc. | Apparatus for parallel calculation of prediction bits in a spatially predicted coded block pattern and method thereof |
KR100716999B1 (ko) * | 2005-06-03 | 2007-05-10 | 삼성전자주식회사 | 영상의 대칭성을 이용한 인트라 예측 방법, 이를 이용한영상의 복호화, 부호화 방법 및 장치 |
JP4799477B2 (ja) * | 2007-05-08 | 2011-10-26 | キヤノン株式会社 | 画像符号化装置及び画像符号化方法 |
KR20080107965A (ko) * | 2007-06-08 | 2008-12-11 | 삼성전자주식회사 | 객체 경계 기반 파티션을 이용한 영상의 부호화, 복호화방법 및 장치 |
JP4935771B2 (ja) * | 2008-06-27 | 2012-05-23 | 三菱電機株式会社 | 動きベクトル検出装置および動画像符号化装置 |
JP5462305B2 (ja) * | 2012-03-12 | 2014-04-02 | 株式会社東芝 | 画像処理装置、画像処理方法およびそのプログラム |
GB2512829B (en) | 2013-04-05 | 2015-05-27 | Canon Kk | Method and apparatus for encoding or decoding an image with inter layer motion information prediction according to motion information compression scheme |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0624985B1 (de) * | 1987-04-28 | 2001-03-14 | Mitsubishi Denki Kabushiki Kaisha | System zur Bildcodierung und -decodierung |
JPH03106283A (ja) * | 1989-09-20 | 1991-05-02 | Graphics Commun Technol:Kk | 動ベクトル検出装置 |
EP0424026B1 (de) * | 1989-10-14 | 1997-07-23 | Sony Corporation | Anordnung und Verfahren zum Übertragen eines Videosignals |
JPH03252287A (ja) * | 1990-02-28 | 1991-11-11 | Victor Co Of Japan Ltd | 動画像圧縮装置 |
FR2670923A1 (fr) * | 1990-12-21 | 1992-06-26 | Philips Lab Electronique | Dispositif de correlation. |
US5138447A (en) * | 1991-02-11 | 1992-08-11 | General Instrument Corporation | Method and apparatus for communicating compressed digital video signals using multiple processors |
US5212742A (en) * | 1991-05-24 | 1993-05-18 | Apple Computer, Inc. | Method and apparatus for encoding/decoding image data |
JPH0512916A (ja) * | 1991-06-28 | 1993-01-22 | Toshiba Corp | 異方導電性接着剤の導電粒子 |
EP0535746B1 (de) * | 1991-09-30 | 1997-01-29 | Philips Electronics Uk Limited | Bewegungsvektorschätzung, Bewegungsbildkodierung- und -speicherung |
US5289577A (en) * | 1992-06-04 | 1994-02-22 | International Business Machines Incorporated | Process-pipeline architecture for image/video processing |
FR2699780B1 (fr) * | 1992-12-22 | 1995-03-17 | Philips Electronique Lab | Dispositif de traitement récursif de signal vidéo comprenant une pluralité de branches. |
JP3190755B2 (ja) * | 1993-01-22 | 2001-07-23 | 株式会社東芝 | 復号装置 |
US5398079A (en) * | 1993-01-27 | 1995-03-14 | General Instrument Corporation | Half-pixel interpolation for a motion compensated digital video system |
US5453799A (en) * | 1993-11-05 | 1995-09-26 | Comsat Corporation | Unified motion estimation architecture |
US5510842A (en) * | 1994-05-04 | 1996-04-23 | Matsushita Electric Corporation Of America | Parallel architecture for a high definition television video decoder having multiple independent frame memories |
-
1993
- 1993-12-24 JP JP34591693A patent/JP3031152B2/ja not_active Expired - Fee Related
-
1994
- 1994-12-22 US US08/361,652 patent/US5717462A/en not_active Expired - Fee Related
- 1994-12-23 DE DE69421158T patent/DE69421158T2/de not_active Expired - Fee Related
- 1994-12-23 EP EP19940120543 patent/EP0660615B1/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0660615B1 (de) | 1999-10-13 |
DE69421158D1 (de) | 1999-11-18 |
JP3031152B2 (ja) | 2000-04-10 |
EP0660615A3 (de) | 1996-04-24 |
JPH07193822A (ja) | 1995-07-28 |
EP0660615A2 (de) | 1995-06-28 |
US5717462A (en) | 1998-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69421158T2 (de) | Bewegungsprädiktionsprozessor und -vorrichtung | |
EP0259562B1 (de) | Verfahren zur bewegungskompensierten Bild-zu-Bild-Prädiktionscodierung | |
DE69524235T2 (de) | Verfahren und vorrichtung zur global-zu-lokal-block-bewegungsschätzung | |
DE69801209T2 (de) | Hierarchischer rekursiver Bewegungsschätzer für Bewegtbildkodierer | |
DE69429377T2 (de) | Halbpixelinterpolation für ein bewegungskompensiertes Digitalvideosystem | |
DE69803639T2 (de) | Vorrichtung und Verfahren zur Detektion eines Bewegungsvektors | |
DE69524522T2 (de) | Verfahren und System zur bidirektionalen Bewegungskompensation zur Kompression bewegter Bilder | |
DE69130329T2 (de) | System und verfahren zur codierung eines zeilensprunghalbbildes | |
DE69123705T2 (de) | Verfahren zur Kompression von bewegten Bildsignalen nach dem Zeilensprungverfahren | |
DE69324486T2 (de) | Bildsignalumsetzer | |
DE3885695T2 (de) | Bewegungsabschätzung. | |
DE69224055T2 (de) | Bildsignalkodier- und -dekodiergerät | |
DE69032437T2 (de) | Bewegungseinschätzer | |
DE69329983T2 (de) | Bildverarbeitungsverfahren und -vorrichtung | |
DE69031105T2 (de) | Videosignalkodierungsverfahren | |
DE69709914T2 (de) | Vorrichtung zur Bildvorhersage und -decodierung | |
DE69419827T2 (de) | Bewegungsvektorbestimmungsvorrichtung für Bewegtbilder | |
DE19704439C2 (de) | Verfahren und Vorrichtung zur Bewegungsschätzung in einem digitalen Videocodierer unter Verwendung von Trajektorien | |
DE69031638T2 (de) | System zum Übertragen von Bildinformation | |
DE69517625T2 (de) | Vorrichtung und Verfahren zur Detektion von Bewegungsvektoren | |
DE69511119T2 (de) | Kodierung eines feldes von bewegungsvektoren | |
EP0368151A2 (de) | Verfahren zur Bestimmung von Suchpositionen zur Bewegungsschätzung | |
DE4442643B4 (de) | Verfahren zum Abschätzen der Bewegung in einem Bewegtbild | |
DE69024002T2 (de) | Vorrichtung zum Codieren von zweidimensionalen Informationen und entsprechende Decodiervorrichtung. | |
DE69329478T2 (de) | Vorrichtung zur Bildkodierung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |