DE112004002977T5 - Fast multi-frame motion estimation with adaptive search strategies - Google Patents

Fast multi-frame motion estimation with adaptive search strategies Download PDF

Info

Publication number
DE112004002977T5
DE112004002977T5 DE112004002977T DE112004002977T DE112004002977T5 DE 112004002977 T5 DE112004002977 T5 DE 112004002977T5 DE 112004002977 T DE112004002977 T DE 112004002977T DE 112004002977 T DE112004002977 T DE 112004002977T DE 112004002977 T5 DE112004002977 T5 DE 112004002977T5
Authority
DE
Germany
Prior art keywords
frame
frames
block
image data
motion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE112004002977T
Other languages
German (de)
Inventor
Eric Li
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112004002977T5 publication Critical patent/DE112004002977T5/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/533Motion estimation using multistep search, e.g. 2D-log search or one-at-a-time search [OTS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Abstract

Verfahren, das aufweist:
Überprüfen einer statistischen Verteilung von Bewegungsvektoren, die für die Bewegungskompensation in einem ersten Frame aus Bilddaten verwendet werden, wobei das Überprüfen dazu dient, ein Verteilungsmodell der Bewegungsvektoren in dem ersten Frame zu erzeugen; und
Auswählen, basierend wenigstens teilweise auf dem Verteilungsmodell, eines Suchmusters für den passenden Block zur Verwendung in bezug auf einen zweiten Frame aus Bilddaten, wobei der zweite Frame in einer Folge aus Frames aus Bilddaten dem ersten Frame folgt.
A method comprising:
Examining a statistical distribution of motion vectors used for motion compensation in a first frame of image data, the checking serving to generate a distribution model of the motion vectors in the first frame; and
Selecting, based at least in part on the distribution model, a search pattern for the matching block for use with respect to a second frame of image data, wherein the second frame in a sequence of frames of image data follows the first frame.

Figure 00000001
Figure 00000001

Description

HINTERGRUNDBACKGROUND

Bewegungskompensation wird oftmals in Verbindung mit Kompressionscodierung von Bilddaten verwendet. Der vorgeschlagene Standard H.264 (formaler bekannt als der Advanced Video Coding (AVC)-Standard, entwickelt von dem Joint Video Team (JVT), gemeinsam gebildet von Motion Picture Experts Group (MPEG) der International Organization for Stan dardization (ISO) und der Video Coding Experts Croup (VCEG) der International Telecommunication Union Telecommunication Standardization Sector (ITU-T)) ist ein Beispiel einer Technik für die Kompressionssodierung von Bilddaten unter Verwendung von Bewegungskompensation. Bei der H.264-Codierung wird ein rechtwinkliger Block aus Pixeldaten von einem Referenzblock in einem vorangehenden Frame subtrahiert, und die sich ergebende Differenzinformation wird umgewandelt, um Koeffizientendaten zu erzeugen. Die Koeffizientendaten werden quantisiert, und die sich ergebende Information wird dann für die Übertragung und/oder das Aufzeichnen neu geordnet und entropie-verschlüsselt.motion compensation is often associated with compression coding of image data used. The proposed standard H.264 (formally known as the Advanced Video Coding (AVC) standard, developed by the Joint Video Team (JVT), formed by Motion Picture Experts Group (MPEG) of the International Organization for Stan dardization (ISO) and the International Coding Experts Croup (VCEG) Telecommunication Union Telecommunication Standardization Sector (ITU-T)) is an example of a technique for compression encoding of image data using motion compensation. For H.264 encoding becomes a rectangular block of pixel data from a reference block subtracted in a previous frame, and the resulting difference information is converted to produce coefficient data. The coefficient data will be quantized, and the resulting information is then transferred and / or reordering and entropy-encrypting.

Um vorteilhaft die zeitliche Redundanz in dem Videosignal zu nutzen, selbst wenn es Bewegung und/oder Kamerabewegung in dem Bild gibt, kann der Referenzblock in dem Bild-Frame von dem Block weg verlagert werden, der gegenwärtig codiert wird. Der Prozeß der "Bewegungsabschätzung" bestimmt, welcher Pixelblock in dem vorangegangenen Frame (innerhalb eines Suchfensters) am besten zu dem Pixelblock paßt, der gegenwärtig codiert wird. Die Verlagerung zwischen dem gegenwärtig codierten Block und dem am besten passenden Block in dem vorangehenden Frame wird als ein "Bewegungsvektor" bezeichnet, der das Ergebnis ist, welches von dem Bewegungsabschätzungsprozeß erzeugt wird. Der Bewegungsvektor wird in "Nebeninformation" eingeschlossen, die zusammen mit der transformierten, quantisierten, neu angeordneten, entropie-verschlüsselten Differenzinformation für den gegenwärtigen Block übertragen wird. Die Bewegungskompensation ermöglicht eine Minimierung der Unterschiede zwischen dem gegenwärtigen Pixelblock und dem Referenzblock, so daß die Menge an Daten, die gesendet/aufgezeichnet werden muß, minimiert werden kann.Around advantageous to use the temporal redundancy in the video signal, even if there is movement and / or camera movement in the picture, can the reference block in the image frame away from the block currently being encoded. The process of "motion estimation" determines which Pixel block in the previous frame (within a search window) best fits the pixel block, the present is coded. The shift between the currently coded Block and the best matching block in the previous frame is referred to as a "motion vector" which the result is that generated by the motion estimation process. The motion vector is included in "side information", which together with the transformed, quantized, rearranged, entropy-encrypted Difference information for the current one Transfer block becomes. The motion compensation allows minimization of the differences between the present Pixel block and the reference block, so that the amount of data sent / recorded must become, can be minimized.

Ein Thema, das bei dem bewegungskompensierten Video-Kompressionssodieren auftritt, ist der Aufwand der Verarbeitung, der für die Codierung erforderlich ist. Die Bewegungsabschätzung kann einen beträchtlichen Teil der Last der Verarbeitung aufweisen, insbesondere wenn ein sogenannter "Vollsuche"- Algorithmus benutzt wird. Sogenannte "Schnellsuche"-Algorithmen sind auch vorgeschlagen worden, bei denen reduziertes Suchmuster verwendet wird, mit geringen Abnahmen in der Bildqualität.One Subject that in the motion-compensated video compression-encode occurs, the overhead of processing that is required for the encoding is. The motion estimation can be a considerable Part of the load of processing, especially if a so called "full search" algorithm becomes. So-called "quick search" algorithms are also proposed have been used with reduced search pattern, with low Decreases in image quality.

KURZBESCHREIBUNG DER ZEICHNUNGENSUMMARY THE DRAWINGS

1 ist ein Blockschaubild eines Bilddaten-Verarbeitungssystems auf hoher Ebene gemäß einigen Ausführungsformen. 1 FIG. 10 is a block diagram of a high level image data processing system according to some embodiments. FIG.

2 ist ein Blockschaubild einer kompressionscodierenden Komponente für Bilddaten des Systems der 1. 2 FIG. 12 is a block diagram of a compression coding component for image data of the system of FIG 1 ,

3 veranschaulicht in Funktionalblockform die Arbeitsweise der kompressionscodierenden Komponente der 2. 3 illustrates in functional block form the operation of the compression coding component of the 2 ,

4A-4C bilden zusammen ein Ablaufdiagramm, welches einen Bewegungsabschätzungsprozeß veranschaulicht, der manchen Ausführungsformen durch die kompressionscodierende Komponente der 2 durchgeführt wird. 4A - 4C Together, they form a flow chart illustrating a motion estimation process of some embodiments by the compression coding component of FIG 2 is carried out.

5 veranschaulicht in schematischer Weise ein hexagonales Suchmuster, das bei einigen Gelegenheiten in dem Bewegungsabschätzungsprozeß der 4A-4C eingesetzt wird. 5 Fig. 12 schematically illustrates a hexagonal search pattern which, on some occasions in the motion estimation process of Figs 4A - 4C is used.

6 veranschaulicht in schematischer Weise ein Kreuz-Suchmuster, das bei einigen weiteren Gelegenheiten in dem Bewegungsabschätzungsprozeß der 4A-4C verwendet worden ist. 6 Fig. 12 schematically illustrates a cross search pattern which on some other occasions in the motion estimation process of Figs 4A - 4C has been used.

GENAUE BESCHREIBUNGPRECISE DESCRIPTION

1 ist ein Blockschaubild eines Bilddaten-Verarbeitungssystems 100 gemäß einigen Ausführungsformen. Das Bilddaten-Verarbeitungssystem 100 umfaßt eine kompressionscodie rende Komponente 102, die gemäß einigen Ausführungsformen bereitgestellt wird. Das System 100 umfaßt eine Quelle 104 für Bilddaten-Frames. Die Quelle für Bilddaten-Frames ist mit der kompressionscodierenden Komponente gekoppelt, um eine Abfolge an Bilddaten-Frames an die kompressionscodierende Komponente zu liefern. Die Quelle für Bilddaten-Frames kann zum Beispiel eine Videokamera, eine Telekamera, eine Wiedergabevorrichtung für ein digitales Videoband usw. sein. 1 Fig. 10 is a block diagram of an image data processing system 100 according to some embodiments. The image data processing system 100 comprises a kompressioncodie-generating component 102 provided in accordance with some embodiments. The system 100 includes a source 104 for image data frames. The source of image data frames is coupled to the compression coding component to provide a sequence of image data frames to the compression coding component. The source of image data frames may be, for example, a video camera, a telecamera, a digital video tape recorder, and so forth.

Das System 100 umfaßt auch einen Sendekanal 106. Die kompressionscodierende Komponente ist mit dem Sendekanal gekoppelt, um kompressionscodierte Bilddaten zur Verfügung zu stellen. Der Sendekanal kann so arbeiten, daß er die kompressionscodierten Bilddaten an einen anderen Ort sendet und/oder die kompressionscodierten Bilddaten auf einem Aufzeichnungsmedium (nicht getrennt gezeigt) speichert.The system 100 also includes a broadcast channel 106 , The compression coding component is coupled to the transmit channel to provide compression coded image data. The transmission channel may operate to transmit the compression coded image data to another location and / or to store the compression coded image data on a recording medium (not shown separately).

2 ist ein Blockschaubild einer Ausführungsform der die Bilddaten kompressionscodierenden Komponente 102. Die kompressionscodierende Komponente 102 kann einen Prozessor 202 umfassen. Der Prozessor 202 kann zum Beispiel ein universeller Prozessor sein, sowie ein herkömmlicher Mikroprozessor und/oder ein digitaler Signalprozessor (DSP). Die kompressionscodierende Komponente 102 kann auch eine Speichervorrichtung 204 umfassen, die an den Prozessor gekoppelt ist. Die Speichervorrichtung 204 kann Programmbefehle speichern, die den Prozessor so steuern, daß bewirkt wird, daß der Prozessor Kompressionscodierung der Bilddaten gemäß einigen Ausführungsformen, wie hiernach beschrieben, ausführt. 2 FIG. 12 is a block diagram of one embodiment of the image data compression-coding component. FIG 102 , The compression coding component 102 can be a processor 202 include. The processor 202 For example, it may be a general-purpose processor, as well as a conventional microprocessor and / or digital signal processor (DSP). The compression coding component 102 can also be a storage device 204 which is coupled to the processor. The storage device 204 may store program instructions that control the processor to cause the processor to perform compression encoding of the image data according to some embodiments as described below.

Die kompressionscodierende Komponente kann auch einen Arbeitsspeicher 206 (z.B. RAM-Speicher mit wahlfreiem Zugriff) umfassen, der an den Prozessor 202 gekoppelt ist.The compression coding component may also have a working memory 206 (eg RAM random access memory) connected to the processor 202 is coupled.

Bei anderen Ausführungsformen kann die kompressionscodierende Komponente 102 als eine anwendungsspezifische integrierte Schaltung (ASIC) implementiert werden, die so konfigu riert ist, daß sie das Kompressionssodieren der Bilddaten gemäß einigen Ausführungsformen, wie hiernach beschrieben durchführt.In other embodiments, the compression coding component 102 as an application specific integrated circuit (ASIC) configured to perform the compression-encoding of the image data according to some embodiments as described hereinafter.

3 veranschaulicht in Funktionalblockform die Arbeitsweise der kompressionscodierenden Komponente 102. 3 illustrates in functional block form the operation of the compression coding component 102 ,

In 3 ist der eingegebene Bilddaten-Frame, der gerade kompressionscodiert wird, mit 302 bezeichnet. Gemäß dem Standard H.264 kann jeder "Makroblock" (Block mit 16×16 Pixeln) separat verarbeitet werden. Darüber hinaus kann jeder Makroblock unterteilt werden, wenn es vorteilhaft ist, dies zu tun, in 8×16, 16×8 oder 8×8 Blöcke. Jeder 8×8 Block kann weiter unterteilt werden, wiederum, wenn es vorteilhaft ist, dies zu tun, in 8×4, 4×8 oder 4×4 Blöcke.In 3 is the input image data frame being compression-coded with 302 designated. According to the standard H.264 each "macro block" (block with 16 × 16 pixels) can be processed separately. Moreover, if it is advantageous to do so, each macroblock can be subdivided into 8x16, 16x8 or 8x8 blocks. Each 8x8 block can be further subdivided, again, if it is advantageous to do so, in 8x4, 4x8 or 4x4 blocks.

Jeder Makroblock, ob er unterteilt ist oder nicht, kann entweder im "Intra" oder "Inter"-Modus codiert werden (d.h. entweder Intra-Frame- oder Inter-Frame-Prädiktion). Die Auswahl zwischen einem Inter-Prädiktions- oder Intra-Prädiktions-Referenzblock ist durch einen Schalter 306 angegeben. Die Ausgabe des Schalters 306 ist der vorausberechnete Referenzblock. Der vorausberechnete Referenzblock wird aus einem rekonstruierten Frame gewonnen, welcher entweder der gegenwärtig verarbeitete Frame (ungefiltert) in dem Fall der Intra-Prädiktion 308 ist, oder ein vorangegangener Frame 310, der bei 312 gefiltert und bei 314 gespeichert worden ist, möglicherweise zusammen mit einem oder mehreren weiteren vorangegangenen Frames.Each macroblock, whether it is subdivided or not, can be encoded in either "intra" or "inter" mode (ie, either intra-frame or inter-frame prediction). The selection between an inter-prediction or intra-prediction reference block is through a switch 306 specified. The output of the switch 306 is the precalculated reference block. The precomputed reference block is obtained from a reconstructed frame which is either the currently processed frame (unfiltered) in the case of intra-prediction 308 is, or a previous frame 310 who at 312 filtered and at 314 has been stored, possibly together with one or more other previous frames.

Bei einigen Ausführungsformen können bis zu fünf frühere Referenz-Frames ausgewählt werden, um dem vorhergesagten Referenzblock in dem Inter-Modus zur Verfügung zu stellen. Diese fünf früheren Frames können in umgekehrter zeitlicher Reihenfolge als "Ref0", "Ref1", "Ref2", "Ref3" und "Ref4" bezeichnet werden. Ref0 kann der Frame in der Eingangssequenz von Bilddaten-Frames sein, der unmittelbar dem Frame vorangeht, der gerade kompressions codiert wird; Ref1 kann in der Folge der Bilddaten-Frames unmittelbar Ref0 vorangehen; Ref2 kann in der Folge der Bilddaten-Frames unmittelbar Ref1 vorangehen; Ref3 kann in der Folge der Bilddaten-Frames unmittelbar Ref2 vorangehen; und Ref4 kann in der Folge der Bilddaten-Frames unmittelbar Ref3 vorangehen.at some embodiments can up to five earlier Reference frames selected to the predicted reference block in the inter mode disposal to deliver. These five earlier Frames can in reverse order of time are referred to as "Ref0", "Ref1", "Ref2", "Ref3" and "Ref4". Ref0 can be the frame in the input sequence of image data frames which immediately precedes the frame which is currently encoding compression becomes; Ref1 can in the sequence of image data frames immediately Ref0 precede; Ref2 can be immediate in the sequence of image data frames Go ahead to Ref1; Ref3 can be immediate in the sequence of image data frames Head for Ref2; and Ref4 may be in the sequence of image data frames immediately precede Ref3.

Wie bei 316 angegeben, kann ein Bewegungsabschätzungs-Algorithmus auf einen Referenz-Frame angewendet werden, um den am besten passenden Block oder Unterblock in einem Referenz-Frame für den gegenwärtigen Block oder Unterblock in dem gegenwärtigen Frame zu finden. Einzelheiten eines Bewegungsabschätzungs-Algorithmus, der gemäß einigen Ausführungsformen zur Verfügung gestellt wird, werden hiernach dargelegt. Mit der Ausnahme des Bewegungsabschätzungs-Algorithmus, wie er hiernach beschrieben wird, kann der gesamte kompressionscodierende Prozeß, der in 3 veranschaulicht ist, im allgemeinen gemäß herkömmlichen Grundsätzen durchgeführt werden, sowie denjenigen, die in dem Standard H.264 dargelegt sind.As in 316 For example, a motion estimation algorithm may be applied to a reference frame to find the best matching block or sub-block in a reference frame for the current block or sub-block in the current frame. Details of a motion estimation algorithm provided in accordance with some embodiments are set forth hereinafter. With the exception of the motion estimation algorithm, as described below, the entire compression coding process that is described in US Pat 3 are generally performed in accordance with conventional principles, as well as those set forth in the H.264 standard.

Wenn man den Bewegungsvektor verwendet, der durch den Bewegungsabschätzungs-Prozeß 316 erzeugt worden ist, wird Bewegungskompensation 318 auf einen Referenz-Frame angewendet, um einen Referenzblock auszuwählen. Über die Schaltfunktion 306 wird der Referenzblock an eine Differenzfunktion 320 geliefert, welche den Referenzblock von dem Block subtrahiert, der gegenwärtig kompressionscodiert wird. (Es wird angemerkt werden, daß im Intra-Modus ein Referenzblock von dem gegenwärtigen Frame verwendet wird.) Der Differenzdatenblock, der durch Subtrahieren des Referenzblocks von dem gegenwärtig codierten Block erzeugt wird, wird transformiert, indem eine Blocktransformation (wie bei 322 angegeben) verwendet wird, und die sich ergebenden Transformationskoeffizienten werden quantisiert, wie es bei 324 angegeben ist. Die quantisierten Transformationskoeffizienten werden dann neu angeordnet (Block 326), um den Codierwirkungsgrad zu verbessern, und dann der Entropie-Verschlüsselung unterworfen (Block 328). An diesem Punkt ist ein komprimierter Bitstrom erzeugt worden, einschließlich der entropie-verschlüsselten, neu geordneten, quantisierten Transformationskoeffizienten, ebenso wie Nebeninformation, die z.B. den Prädikti onsmodus, die Größe des Quantisierungsschrittes, Blockabmessungen, Bewegungsvektor usw. identifiziert. De Bitstrom kann auch an eine Netzwerkabstraktionsschicht (NAL – Network Abstraction Layer) für das Senden oder Speichern gegeben werden.Using the motion vector generated by the motion estimation process 316 has been generated, motion compensation 318 applied to a reference frame to select a reference block. About the switching function 306 the reference block becomes a difference function 320 which subtracts the reference block from the block currently being compression-coded. (It will be noted that in intra-mode, a reference block from the current frame is used.) The difference data block, which is generated by subtracting the reference block from the currently coded block, is transformed by a block transform (as in FIG 322 indicated), and the resulting transform coefficients are quantized as in 324 is specified. The quantized transform coefficients are then rearranged (block 326 ) to improve coding efficiency and then subjected to entropy encryption (Block 328 ). At this point, a compressed bitstream has been generated, including the entropy-coded, rearranged, quantized transform coefficients, as well as side information, such as the prediction mode, the size of the quantization step, block dimensions, motion vector, etc. identified. The bit stream can also be passed to a network abstraction layer (NAL) for transmission or storage.

Ein Rekonstruktionszweigprozeß 330 nimmt die quantisierten Transformationskoeffizienten und invertiert die Quantisierung (Block 332) und wendet dann eine inverse Transformation (Block 334) auf die dequantisierten Daten an, um Differenzdaten zu erzeugen. Die Differenzdaten werden an der Summenfunktion 336 zu dem Referenzblock addiert, um einen wieder aufgebauten Block zu erzeugen. Der sich ergebende wieder aufgebaute Block kann für die Intra-Prädiktion bei 308 oder kombiniert mit anderen Blöcken, um einen rekonstruierten Frame zu bilden, der bei 312 gefiltert und bei 314 als Referenz-Frame für die Inter-Prädiktion gespeichert ist, verwendet werden.A reconstruction branch process 330 takes the quantized transform coefficients and inverts the quantization (block 332 ) and then applies an inverse transformation (block 334 ) to the dequantized data to generate difference data. The difference data are at the sum function 336 is added to the reference block to produce a reconstructed block. The resulting reconstructed block can be used for intra-prediction 308 or combined with other blocks to form a reconstructed frame at 312 filtered and at 314 is stored as a reference frame for inter-prediction.

Die 4A-4C zusammen bilden ein Ablaufdiagramm, das den Bewegungsabschätzungs-Algorithmus 316 der 3 veranschaulicht, wie er gemäß einigen Ausführungsformen zur Verfügung gestellt wird.The 4A - 4C Together, a flowchart that composes the motion estimation algorithm 316 of the 3 illustrates how it is provided according to some embodiments.

In 4A stellt der Block 402 den Beginn des Bewegungsabschätzungs-Algorithmus in bezug auf einen Makroblock des Bilddaten-Frame dar, gerade kompressionscodiert wird. Der Block 404 zeigt an, daß der Bewegungsabschätzungs-Algorithmus auf jeden der möglichen unterschiedlichen Block- oder Unterblockgrößen oder -formen angewendet wird, um die Auswahl der optimalen Blockgröße/form vom Gesichtspunkt des Minimierens der Menge an Differenzdaten her zu ermöglichen. Bei einigen Ausführungsformen betrachtet die Blockgrößenauswahlschleife 404 jede der Blockgrößen/formen 16×16, 8×16, 16×8, 8×8, 4×8, 8×4 und 4×4. Die Reihenfolge, in der die unterschiedlichen Blockgrößen betrachtet werden, kann der abnehmenden Größe von 16×16 bis 4×4 folgen, um Nutzen aus der Bewegungsvektorinformation der oberen Schicht zu ziehen.In 4A represents the block 402 the beginning of the motion estimation algorithm with respect to a macroblock of the image data frame is being compression-coded. The block 404 indicates that the motion estimation algorithm is applied to each of the possible different block or sub-block sizes or shapes to allow selection of the optimal block size / shape from the viewpoint of minimizing the amount of difference data. In some embodiments, the block size selection loop looks at 404 each of the block sizes / forms 16x16, 8x16, 16x8, 8x8, 4x8, 8x4 and 4x4. The order in which the different block sizes are considered may follow the decreasing size of 16 × 16 to 4 × 4 to take advantage of the motion vector information of the upper layer.

Eingebettet in die Blockgrößenauswahlschleife 404 ist eine Referenz-Frame-Schleife 406, die bewirkt, daß eine volle oder abgeschnittene Menge aus Referenz-Frames in bezug auf den gegenwärtigen Block/Unterblock betrachtet wird. Bei einigen Ausführungsformen umfaßt der volle Satz der Referenz-Frames Ref0, Ref1, Ref2, Rf3 und Ref4, und der abgeschnittene Satz Referenz-Frames umfaßt Ref0, Ref1 und Ref2. Gemäß einigen Ausführungsformen wird eine Auswahl zwischen dem vollen oder abgeschnittenen Satz von Referenz-Frames entsprechend Kriterien, die hiernach beschrieben werden, getroffen. Unter einem anderen Gesichtspunkt her können Rei0, Ref1 und Ref2 so betrachtet werden, daß sie einen ersten Satz Referenz-Frames bilden, der bei einigen Ausführungsformen in allen Fällen überprüft wird, während Ref3 und Ref4 so betrachtet werden können, daß sie einen zweiten (tatsächlich früheren) Satz aus Referenz-Frames bilden, der bei diesen Ausführungsformen manchmal nicht überprüft wird. Ref0 kann als der "letzte" der Frames des ersten Satzes der Referenz-Frames bezeichnet werden; Ref1 kann als der "mittlere" der Frames des ersten Satzes der Referenz-Frames bezeichnet werden; Ref2 kann als der "früheste" der Frames des ersten Satzes der Referenz-Frames bezeichnet werden; Ref3 kann als der „spätere" der Frames des zweiten Satzes der Referenz-Frames bezeichnet werden; und Ref4 kann als der „frühere" der Frames des zweiten Satzes der Referenz-Frames bezeichnet werden. Die Reihenfolge, in der die Referenz-Frames betrachtet werden, kann so sein, wie es im zweiten Satz dieses Absatzes genannt ist (d.h. der jüngste wird als der erste betrachtet).Embedded in the block size selection loop 404 is a reference frame loop 406 which causes a full or truncated set of reference frames to be considered with respect to the current block / sub-block. In some embodiments, the full set of reference frames includes Ref0, Ref1, Ref2, Rf3, and Ref4, and the truncated set of reference frames includes Ref0, Ref1, and Ref2. In accordance with some embodiments, a selection is made between the full or truncated set of reference frames according to criteria described hereinafter. In another aspect, Rei0, Ref1, and Ref2 may be considered to form a first set of reference frames, which in some embodiments will be checked in all cases, while Ref3 and Ref4 may be considered to have a second (actually former) set of reference frames, which is sometimes not checked in these embodiments. Ref0 may be referred to as the "last" of the frames of the first set of reference frames; Ref1 may be referred to as the "middle" of the frames of the first set of reference frames; Ref2 may be referred to as the "earliest" of the frames of the first set of reference frames; Ref3 may be referred to as the "later" one of the frames of the second set of reference frames, and Ref4 may be referred to as the "earlier" one of the frames of the second set of reference frames. The order in which the reference frames are considered may be as stated in the second sentence of this paragraph (ie the most recent is considered the first).

Wie hierin und in den angefügten Ansprüchen verwendet, braucht ein "Satz aus Referenz-Frames" nicht mehr als einen Frame zu umfassen.As here and in the attached claims used, needs a "sentence from reference frames "not more than one Frame to include.

Somit geht für den Makroblock, der gerade kompressionscodiert wird, für den gesamten Block oder den Unterblock, der nun betrachtet wird, und für den Referenz-Frame, der gerade betrachtet wird, der folgende Prozeß weiter. Zunächst, im Block 408, wird eine statistische Analyse in bezug auf die Bewegungsvektoren durchgeführt, die erzeugt worden sind, als der Bewegungsabschätzungs-Algorithmus auf den Referenz-Frame, der gerade betrachtet wird, angewendet wurde. Es kann erwartet werden, daß die Bewegungsvektoren ungefähr mit einer symmetrischen exponentiellen Verteilung übereinstimmen. Es kann angenommen werden, daß die Bewegungsvektoren in der X- und Y-Richtung unabhängig sind, so daß die kombinierte Wahrscheinlichkeitsverteilung definiert werden kann als: PBV(x,y) = PX(x)PY(y), (1)wobei PX(x) und PY(y) die Wahrscheinlichkeitsverteilungen der Bewegungsvektoren in der X- bzw. Y-Richtung sind. Sowohl PX(x) und PY(y) können einer exponentiellen Verteilung entsprechen, wie sie hiernach definiert ist: P(n) = λ, für n = 0 (2a) P(n) = (1/2)λβ|n|, für n ungleich Null (2b) Thus, for the macroblock that is being compression coded, the following process continues for the entire block or subblock now being considered and for the reference frame being considered. First, in the block 408 , a statistical analysis is performed on the motion vectors that were generated when the motion estimation algorithm was applied to the reference frame being considered. It can be expected that the motion vectors approximately agree with a symmetric exponential distribution. It can be assumed that the motion vectors in the X and Y directions are independent, so that the combined probability distribution can be defined as: P BV (x, y) = P X (X) P Y (y), (1) where P X (x) and P Y (y) are the probability distributions of the motion vectors in the X and Y directions, respectively. Both P X (x) and P Y (y) may correspond to an exponential distribution as defined hereafter: P (n) = λ, for n = 0 (2a) P (n) = (1/2) λβ | N | , for n not equal to zero (2b)

In Hinsicht auf die physikalische Bedeutung der Wahrscheinlichkeitsverteilung sollte die Gleichung (2) die Einschränkung erfüllen, daß die Summe der Wahrscheinlichkeit in dem Suchfenster 1 ist. Mit anderen Worten, wenn die Größe des Suchfensters W ist, ist die Summierung der P(n) über n in dem Bereich -W bis W = 1.In Regard to the physical meaning of the probability distribution The equation (2) should satisfy the restriction that the sum of the probability in the search window is 1. In other words, if the size of the search window W is, the summation of the P (n) over n is in the range -W to W = 1.

Der mittlere absolute Wert BVmittel der Bewegungsvektoren kann als die Summe P(n)(|n| + 1) über n in dem Bereich -W bis W definiert werden.The mean absolute value of the motion vectors BV medium can be used as the sum of P (n) are defined by W on n in the range -W (| + 1 | n).

Aus dem Voranstehenden kann das Folgende erhalten werden: λ = 1/BVmittel (3a) β = 1 – (1/BVmittel) (3b) From the foregoing, the following can be obtained: λ = 1 / BV medium (3a) β = 1 - (1 / BV medium (3b)

Ein Wahrscheinlichkeitsverteilungsmodell von Bewegungsvektoren in dem Referenz-Frame, der gerade betrachtet wird, kann aus BVmittel abgeleitet werden. (Wie es den Fachleuten vertraut ist, ist ein "Wahrscheinlichkeitsverteilungsmodell" einer Variable, das auch als "Wahrscheinlichkeitsmodell" oder "Verteilungsmodell" bezeichnet werden kann, der Bereich der Variable und der zugeordneten Wahrscheinlichkeiten.) Da BVmittel sich während einer typischen Sequenz aus Frames ziemlich langsam ändert, kann BVmittel als ein Parameter verwendet werden, um Eigenschaften zukünftiger Frames vorauszusagen, sowie die des Frames, der gerade codiert wird. Es ist wahrscheinlich, daß die Bewegungsvektoren in einer diamantförmigen Fläche verteilt sind. Somit kann es möglich sein, die kleinste diamantförmige Fläche zu finden, in der sich wenigstens 99% der Bewegungsvektoren befinden. D.h., der Wert M kann gefunden werden, der der kleinste Wert ist, für den die Summierung von P(n) für n über den Bereich -M bis M nicht kleiner als 0,99 ist. Diese Bedingung kann anders ausgedrückt werden als λ(1 + β + β2 + ... + βM) >= 0,99 (4) A probability distribution model of motion vectors in the reference frame being considered may be derived from BV means . (As is familiar to those skilled, is a "probability distribution model" of a variable that can be referred to as "probability model" or "distribution model", the area of the variable and associated probabilities.) Since BV medium during a typical sequence of frames rather slow changes, BV can be used medium as a parameter to predict characteristics of future frames, and is being encoded to the frame. It is likely that the motion vectors are distributed in a diamond-shaped area. Thus, it may be possible to find the smallest diamond-shaped area in which at least 99% of the motion vectors are located. That is, the value M can be found which is the smallest value for which the summation of P (n) for n over the range -M to M is not smaller than 0.99. This condition can be expressed differently λ (1 + β + β 2 + ... + β M )> = 0.99 (4)

Es wird bemerkt werden, daß der Ausdruck λ(1 + β + β2 + ... + βM) basierend auf den Wert BVmittel bewertet werden kann, da sowohl λ als auch β abhängig von BVmittel ausgedrückt worden sind (Gleichung 3).It will be noted that the term λ (1 + β + β 2 + ... + β M ) can be evaluated based on the value BV means , since both λ and β have been expressed as a function of BV means (Equation 3) ).

Der Wert von M, zu dem man durch diesen Prozeß gelangt, kann auch als die "ADL" (adaptive Diamantenlänge) bezeichnet werden. Die Berechnung der ADL für den Referenz-Frame, der gerade betrachtet wird, auf der Grundlage der obigen Ergebnisse ist das Ergebnis der statistischen Analyse des Blocks 408.The value of M to get through this process can also be referred to as the "ADL" (Adaptive Diamond Length). The calculation of the ADL for the reference frame being considered based on the above results is the result of the statistical analysis of the block 408 ,

Im Block 410 wird ein Satz von Kandidaten-Bewegungsvektoren zusammengesetzt. Bei einigen Ausführungsformen umfaßt der Satz aus Kandidaten-Bewegungsvektoren alle folgenden:

  • (A) Den jeweiligen Bewegungsvektor (drei insgesamt) aus jedem der folgenden Blöcke des Frames, der gerade kompressionscodiert wird – der Block oberhalb des gerade betrachteten Blockes, der Block oberhalb und rechts des gerade betrachteten Blockes und der Block links des gerade betrachteten Blockes; es wird verstanden werden, daß diese drei Blöcke an den gerade betrachteten Block anschließen;
  • (B) den jeweiligen Bewegungsvektor für jeden Block (wenn es ihn gibt), der eine Übermenge des gerade codierten Blockes ist (wenn der gerade betrachtete Block der Makroblock selbst ist, dann gibt es keinen Block, der seine Übermenge ist; wenn jedoch zum Beispiel der gerade betrachtete Block ein 8×16 Block ist, dann ist der 16×16 Makroblock des gerade codierten Frames eine Übermenge des gerade betrachteten Blocks; gleichermaßen, wenn der gerade betrachtete Block ein 8×8 Block ist, dann sind die 16×16, 8×16 und 16×8 Blöcke die Übermengen des gerade betrachteten Blocks);
  • (C) den Bewegungsvektor für den Pixelblock von Ref0, der in Größe und Ort dem Bild-Frame zu dem gerade betrachteten Pixelblock entspricht; und
  • (D) eine Untermenge von Kandidaten-Bewegungsvektoren, jede erhalten durch anwenden eines Skalierfaktors auf den jeweiligen Bewegungsvektor für den Pixelblock jeweils von Ref1, Ref2, Ref3 und Ref4, der in Größe und Ort dem Bild-Frame für den gerade betrachteten Pixelblock entspricht. Der Skalierfaktor in jedem Fall kann proportional zu dem zeitlichen Abstand zwischen dem Referenz-Frame und dem gegenwärtigen Frame sein.
In the block 410 a set of candidate motion vectors is assembled. In some embodiments, the set of candidate motion vectors includes all of the following:
  • (A) The respective motion vector (three total) from each of the following blocks of the frame being compression encoded - the block above the block being considered, the block above and to the right of the block being considered, and the block to the left of the block being considered; it will be understood that these three blocks connect to the block being considered;
  • (B) the respective motion vector for each block (if any) which is a superset of the block being encoded (if the block being considered is the macroblock itself, then there is no block that is its superset, if, however, for example if the block being considered is an 8x16 block, then the 16x16 macroblock of the currently coded frame is a superset of the block being considered, similarly, if the block being considered is an 8x8 block, then the 16x16 block is 8x16 and 16x8 blocks the supersets of the block being considered);
  • (C) the motion vector for the pixel block of Ref0 corresponding in size and location to the image frame to the pixel block being considered; and
  • (D) a subset of candidate motion vectors, each obtained by applying a scaling factor to the respective motion vector for the pixel block of Ref1, Ref2, Ref3 and Ref4, respectively, which in size and location corresponds to the image frame for the pixel block being considered. The scaling factor in each case can be proportional to the time interval between the reference frame and the current frame.

Im Entscheidungsblock 412 wird bestimmt, welche die größte Anzahl von Kandidaten-Bewegungsvektoren ist, die einander gleich sind, und ob diese Anzahl von Bewegungsvektoren eine Schwelle überschreitet. Dann wird dieser weit verbreitete Bewegungsvektor als der Bewegungsvektor für den Block, der gerade betrachtet wird, angesehen. Sonst fährt die Be wegungsabschätzung für den Block, der gerade betrachtet wird, mit dem Entscheidungsblock 416 (4B) fort. Im Entscheidungsblock 416 wird festgestellt, ob der gerade betrachtete Pixelblock ein Nullblock ist (alle Pixeldaten gleich Null). Wenn dies der Fall ist, wird der Null-Bewegungsvektor als der Bewegungsvektor für den gerade betrachteten Pixelblock betrachtet, wie es bei 418 angezeigt ist. Ansonsten wird jeder Referenz-Pixelblock, der durch einen der Kandidaten-Bewegungsvektoren bezeichnet wird, überprüft, um die Differenz zwischen dem gegenwärtig betrachteten Pixelblock und dem gerade überprüften Referenz-Pixelblock zu bestimmen. Der Kandidaten-Bewegungsvektor, der der kleinsten dieser Differenzen entspricht, wird zeitweilig (wie bei 420 angegeben) als der Bewegungsvektor für den gerade betrachteten Pixelblock oder den vorliegenden Frame ausgewählt, abhängig von der weiteren Suche nach einem optimal passenden Referenz-Pixelblock, wie hiernach beschrieben.In the decision block 412 is determined which is the largest number of candidate motion vectors equal to each other and whether this number of motion vectors exceeds a threshold. Then, this widely used motion vector is regarded as the motion vector for the block being considered. Otherwise, the motion estimation for the block being considered moves to the decision block 416 ( 4B ). In the decision block 416 a determination is made as to whether the pixel block being considered is a null block (all pixel data equal to zero). If so, the zero motion vector is considered to be the motion vector for the pixel block being considered, as in FIG 418 is displayed. Otherwise, each reference pixel block, designated by one of the candidate motion vectors, is examined to determine the difference between the currently considered pixel block and the reference pixel block being examined. The candidate motion vector corresponding to the smallest of these differences becomes temporary (as in FIG 420 indicated) as the motion vector for the pixel block or frame currently under consideration, depending on the further search for an optimally matching reference pixel block, as described hereinafter.

Es wird als nächstes im Entscheidungsblock 422 bestimmt, ob der Kandidaten-Bewegungsvektor, der zeitweilig bei 420 ausgewählt worden ist, der Null-Bewegungsvektor ist. Wenn dies der Fall ist, wird dann, wie bei 424 angegeben, eine Suche nach einem passenden Block in dem gerade betrachteten Referenzrahmen nach dem am besten passenden Referenz-Pixelblock durchgeführt, wobei ein Kreuz-Suchmuster verwendet wird, wie es hiernach beschrieben ist. Ansonsten wird bestimmt, ob eine kompakte Suchfläche erwartet wird (Entscheidungsblock 425), basierend auf der statistischen Analyse des Blocks 408 (4A) und möglicherweise basierend auf anderen Faktoren. Zum Beispiel wird als ein vorläufiger Test ein Mittelwert des jeweiligen Bewegungsvektors für jede der angrenzenden Pixelblöcke in dem gerade codierten Frame erhalten: den Block oberhalb des gerade betrachteten Pixelblocks; des Blocks oben rechts des gerade betrachteten Pixelblocks und des Blocks links zum gerade betrachteten Pixelblock. Wenn dieser Mittelwert beispielsweise wenigstens gleich 4 ist, dann wird ein hexagonales Suchmuster für das weitere Suchen nach einem passenden Block verwendet, wie es hiernach beschrieben wird. Sonst wird die ADL, die bei 408 berechnet worden ist, mit einem Schwellenwert (z. B. 4) verglichen, und wenn die ADL wenigstens gleich dem Schwellenwert ist, wird ein hexagonales Suchmuster verwendet (wie es bei 426, 4B angegeben ist). Sonst (d. h. wenn ADL < dem Schwellenwert), dann wird das Kreuz-Suchmuster verwendet, wie es bei 428 angegeben ist.It will be next in the decision block 422 determines if the candidate motion vector is temporary at 420 has been selected, which is zero motion vector. If this is the case, then as with 424 4, a search for a matching block in the currently considered reference frame is performed for the best matching reference pixel block, using a cross-search pattern as described below. Otherwise it is determined if a compact search area is expected (decision block 425 ), based on the statistical analysis of the block 408 ( 4A ) and possibly based on other factors. For example, as a preliminary test, an average of the respective motion vector for each of the adjacent pixel blocks in the frame being encoded is obtained: the block above the pixel block being considered; of the block at the top right of the currently considered pixel block and the block to the left of the currently considered pixel block. For example, if this average is at least equal to 4, then a hexagonal search pattern is used for further searching for a matching block, as will be described hereinafter. Otherwise the ADL will be on 408 is compared with a threshold (eg 4), and if the ADL is at least equal to the threshold, a hexagonal search pattern is used (as with FIG 426 . 4B is specified). Otherwise (ie, if ADL <the threshold), then the cross search pattern is used, as with 428 is specified.

Ein Beispiel eines hexagonalen Suchmusters ist schematisch in 5 veranschaulicht. Ein Beispiel eines hexagonalen Suchmusters ist auch in einem Artikel mit dem Titel "Hexagon-Based Search Pattern for Fast Block Motion Estimation (hexagonal basiertes Suchmuster für schnelle Blockbewegungs-Abschätzung)" von Ce Zhu u. a., IEEE Transactions on Circuits and Systems for Video Technology, Band 12, Nr. 5, May 2002; Seiten 349–355 beschrieben.An example of a hexagonal search pattern is shown schematically in FIG 5 illustrated. An example of a hexagonal search pattern is also contained in an article entitled "Hexagon-Based Search Pattern for Fast Block Motion Estimation" by Ce Zhu et al., IEEE Transactions on Circuits and Systems for Video Technology, Vol. 12, No. 5, May 2002; Pages 349-355.

In 5 entspricht jedem Schnittpunkt des Gitters einem Pixelort in dem Referenz-Frame, der gerade betrachtet wird. Der Startpunkt 502 der Suche in der Mitte des anfänglichen hexagonalen Suchmusters entspricht dem Pixelort, der durch den Kandidaten-Bewegungsvektor angegeben ist, welcher zeitweilig bei 420 (4B) ausgewählt worden ist. Weiter mit Bezug auf 5 ist jeder der anderen Suchpunkte 504, 506, 508, 510, 512, 514, welcher das Gleichgewicht des anfänglichen hexagonalen Suchmusters herstellt, entweder zwei Pixel über oder zwei Pixel hinauf oder hinunter oder einen Pixel über dem Startpunkt 502 der Suche. Die jeweiligen (Kandidaten-)Referenz-Pixelblöcke, die den sieben anfänglichen Suchpunkten entsprechen, werden jeder mit dem Pixelblock verglichen, der gerade wegen der Codierung betrachtet wird, und der Suchpunkt, der dem Kandidaten-Referenz-Pixelblock entspricht, der am besten zu dem Pixelblock paßt, der gerade für die Codierung betrachtet wird, wird als der "Gewinner" erklärt. Für die Zwecke dieses Beispieles wird angenommen, daß Punkt 506 der Gewinner ist. Eine Erweiterung des hexagonalen Suchmusters in die Richtung des Gewinners geschieht dann, was in diesem Fall zu den zusätzlichen Suchpunkten 516, 518, 520 führt. Der Gewinner aus diesen drei neuen Punkten und der vorangehende Gewinner 506 werden dann bestimmt. Wieder zu Zwecken dieses Beispiels wird angenommen, daß Punkt 520 der neue Gewinner ist. Das Suchmuster wird noch einmal in die Richtung des neuen Gewinners erweitert, was in diesem Fall zu neuen Suchpunkten 522, 524, 526 führt. Wieder werden die neuen Suchpunkte und die jüngsten Gewinner verglichen. Es wird nun angenommen, daß in dieser neuen Runde Punkt 520 der Gewinner bleibt. Als Ergebnis wird ein kleines Muster aus vier Punkten 528, 530, 532, 534 unmittelbar oberhalb, unterhalb und an den Seiten des Gewinners 520 miteinander und mit 520 verglichen, und der Gewinner aus diesen fünf wird als der Bewegungsvektor für den Pixelblock, der gegenwärtig für das Codieren betrachtet wird, ausgewählt.In 5 Each intersection of the grid corresponds to a pixel location in the reference frame being viewed. The starting point 502 the search in the middle of the initial hexagonal search pattern corresponds to the pixel location indicated by the candidate motion vector, which is temporarily at 420 ( 4B ) has been selected. Continue with reference to 5 is each of the other search points 504 . 506 . 508 . 510 . 512 . 514 which establishes the equilibrium of the initial hexagonal search pattern, either two pixels above or two pixels up or down, or one pixel above the starting point 502 the search. The respective (candidate) reference pixel blocks corresponding to the seven initial search points are each compared with the pixel block which is currently being considered for coding, and the search point corresponding to the candidate reference pixel block is the best one for Pixel block just considered for coding will be declared as the "winner". For the purposes of this example, it is assumed that point 506 the winner is. An extension of the hexagonal search pattern in the direction of the winner then happens, which in this case is the additional search points 516 . 518 . 520 leads. The winner of these three new points and the previous winner 506 are then determined. Again for purposes of this example, it is assumed that point 520 the new winner is. The search pattern is once again extended in the direction of the new winner, which in this case to new search points 522 . 524 . 526 leads. Again the new search points and the recent winners are compared. It is now assumed that in this new round point 520 the winner remains. As a result, a small pattern of four points 528 . 530 . 532 . 534 immediately above, below and on the sides of the winner 520 with each other and with 520 and the winner of these five is selected as the motion vector for the pixel block currently being considered for encoding.

Das oben beschriebene hexagonale Suchmuster kann für ein effizientes Suchen sorgen, wenn eine relativ große Fläche durchquert werden muß. Als ein weiteres Beispiel des hexagonalen Suchmusters kann das Muster, das aus den Punkten 502, 504, 506, 508, 510, 512 und 514 gebildet ist, um 90° um den Punkt 502 gedreht werden, um ein alternatives anfängliches hexagonales Suchmuster zur Verfügung zu stellen.The hexagonal search pattern described above can provide efficient searching when traversing a relatively large area. As another example of the hexagonal search pattern, the pattern that results from the points 502 . 504 . 506 . 508 . 510 . 512 and 514 is formed 90 ° around the point 502 rotated to provide an alternative initial hexagonal search pattern.

Ein Beispiel eines Kreuz-Suchmusters ist schematisch in 6 veranschaulicht.An example of a cross search pattern is schematically shown in FIG 6 illustrated.

Wie in 5 entsprechen die Schnittpunkte des Gitters in 6 jeweils einem Pixelort in dem Referenz-Frame, der gerade betrachtet wird. Der Startpunkt 602 der Suche entspricht dem Pixelort, der durch den Kandidaten-Bewegungsvektor angegeben ist, welcher zeitweilig bei 420 (4B) ausgewählt worden ist. Weiter mit Bezug auf 6 besteht der Ausgleich des anfänglichen Kreuz (d. h. kreuzförmigen) Suchmusters aus den vier Punkten 604, 606, 608 und 610, die unmittelbar oberhalb, unterhalb und an den Seiten des Startpunktes 602 sind. Die jeweiligen (Kandidaten-)Referenz-Pixelblöcke, die den fünf anfänglichen Suchpunkten entsprechen, werden jeder mit dem Pixelblock, der gerade für die Codierung betrachtet wird, verglichen, und der Suchpunkt, der dem Kandidaten-Referenz-Pixelblock entspricht, der am besten mit dem Pixelblock übereinstimmt, der gerade für die Codierung betrachtet wird, wird als der Gewinner erklärt. Für die Zwecke dieses Beispieles wird angenommen, daß Punkt 604 der Gewinner ist. Eine Erweiterung des Kreuz-Suchmusters in die Richtung des Gewinners geschieht dann, was in diesem Fall zu drei zusätzlichen Suchpunkten 6012, 615, 616 führt. Der Gewinner aus diesen drei neuen Suchpunkten und der vorangehende Gewinner 604 werden dann bestimmt. Wieder für die Zwecke dieses Beispiels wird angenommen, daß der Punkt 612 der neue Gewinner ist. Das Suchmuster wird noch einmal in die Richtung des Gewinners erweitert, was neue Suchpunkte 618, 620 hervorbringt. (Wenn 614 der Gewinner gewesen wäre, würde es drei neue Suchpunkte gegeben haben.) Es wird als nächstes angenommen, daß 612 der Gewinner bleibt, wenn die Punkte 618 und 620 betrachtet werden, so daß die Suche endet, und 612 wird als der Bewegungsvektor für den Pixelblock, der gerade für die Codierung betrachtet wird, ausgewählt.As in 5 correspond to the intersections of the grid in 6 each one pixel location in the reference frame being viewed. The starting point 602 The search corresponds to the pixel location indicated by the candidate motion vector, which is temporarily at 420 ( 4B ) has been selected. Continue with reference to 6 Compensation of the initial cross (ie cross-shaped) search pattern consists of the four points 604 . 606 . 608 and 610 that are immediately above, below and on the sides of the starting point 602 are. The respective (candidate) reference pixel blocks corresponding to the five initial search points are each compared with the pixel block currently being considered for coding, and the search point corresponding to the candidate reference pixel block is best compared with the pixel block currently being considered for encoding is declared the winner. For the purposes of this example, it is assumed that point 604 the winner is. An extension of the cross search pattern in the Direction of the winner then happens, which in this case to three additional search points 6012 . 615 . 616 leads. The winner from these three new search points and the previous winner 604 are then determined. Again for purposes of this example, it is assumed that the point 612 the new winner is. The search pattern is once again extended in the direction of the winner, resulting in new search points 618 . 620 produces. (If 614 would have been the winner, there would have been three new search points.) It is next assumed that 612 the winner stays when the points 618 and 620 be considered, so that the search ends, and 612 is selected as the motion vector for the pixel block currently being considered for encoding.

Das Kreuz-Suchmuster, das oben beschrieben worden ist, kann für eine effiziente Suche sorgen, wenn eine relative kleine Fläche durchquert werden muß. Bei einigen Ausführungsformen wird das wahrscheinlich bessere Suchmuster zwischen hexagonal und kreuzförmig adaptiv ausgewählt, basierend wenigstens teilweise auf der statistischen Verteilung der Bewegungsvektoren in einem Referenz-Frame, der vor dem Frame liegt, der gerade codiert wird. Dies kann vorteilhaft durch den zeitlich vorausberechneten Wert der Verteilung des Bewegungsvektors in dem früheren Frame geschehen, um die wahrscheinliche Wahrscheinlichkeit in dem gegenwärtigen Frame vorauszusagen. Als Alternative kann ein anderer Schwellenwert als 4 verwendet werden.The Cross-search pattern, which has been described above, can be efficient Search when a relatively small area has to be traversed. For some embodiments probably the better search pattern between hexagonal and cruciform adaptively selected, based at least in part on the statistical distribution the motion vectors in a reference frame, in front of the frame which is currently being coded. This can be beneficial by the temporally precalculated value of the distribution of the motion vector in the earlier Frame happen to the probable probability in the current Predict the frame. As an alternative, another threshold be used as 4.

Wenn einmal der Bewegungsvektor für den Pixelblock des gegenwärtigen Frames bestimmt worden ist, der gerade verarbeitet wird und für den Referenz-Frame, der gerade betrachtet wird, wird als nächstes bestimmt (Entscheidungsblock 430, 4C), ob die Referenz-Frame-Schleife vollendet ist. Dies kann eine Bestimmung umfassen, ob die Referenz-Frame-Schleife abgeschnitten werden sollte, indem z. B. Ref3 und Ref4 aus der Betrachtung weggelassen werden. Die letztere Bestimmung kann gemacht werden, wenn die Betrachtung von Ref2 beendet ist, wobei an diesem Punkt jeweilige Bewegungsvektoren für den gegenwärtigen Pixelblock des gegenwärtigen Frames für jeden, Ref0, Ref1 und Ref2 bestimmt worden sind.Once the motion vector has been determined for the pixel block of the current frame being processed and for the reference frame being considered, it is determined next (decision block 430 . 4C ), whether the reference frame loop is completed. This may include a determination as to whether the reference frame loop should be truncated, e.g. Ref3 and Ref4 may be omitted from consideration. The latter determination can be made when the consideration of Ref2 has ended, at which point respective motion vectors for the current pixel block of the current frame have been determined for each, Ref0, Ref1 and Ref2.

Bei einigen Ausführungsformen kann die Betrachtung von Ref3 und Ref4 übersprungen werden, wenn die folgenden Bedingungen gelten:

  • (A) |(2 × BVRef0) – BVRef1| < TBV ;
  • (B) |(3 × BVRef0) – BVRef2| < TBV ;
  • (C) KostenRef0 < KostenRef1 ; and
  • (D) KostenRef0 < KostenRef2
In some embodiments, consideration of Ref3 and Ref4 may be skipped if the following conditions apply:
  • (A) | (2 × BV Ref0 ) - BV Ref 1 | <T BV ;
  • (B) | (3 × BV Ref0 ) - BV Ref2 | <T BV ;
  • (C) costs Ref0 <Costs Ref 1 ; and
  • (D) costs Ref0 <Costs Ref2

Bei dem voranstehenden Satz von Bedingungen ist BVRef0 der Bewegungsvektor, der für den gerade codierten Pixelblock mit Bezug auf Ref0 bestimmt worden ist; BVRef1 ist der Bewegungsvektor, der für den gerade codierten Pixelblock mit Ref1 bestimmt worden ist; BVRef2 ist der Bewegungsvektor, der für den gerade codierten Pixelblock mit Bezug auf Ref2 bestimmt worden ist; und TBV ist ein Schwellenwert, der für die Abschneidebedingung der Referenz-Frame-Schleife benutzt wird (bei einigen Ausführungsformen kann TBV gleich 4 sein). Weiter ist "Kosten" eine Kostenfunktion, die die Kosten des Codierens des gegenwärtigen codierten Pixelblocks als eine Differenz relativ zu dem Referenz-Pixelblock mißt, auf den in dem jeweiligen Referenz-Frame durch den Bewegungsvektor gezeigt wird, der für den Frame bestimmt worden ist. Mit anderen Worten gibt die "Kosten"-Funktion einen Grad der Blockpassung zwischen dem gerade codierten Pixelblock und dem vorgeschlagenen Referenz-Pixelblock für den jeweiligen Referenz-Frame an. Es wird auch verstanden werden, daß eine Bestimmung, ob die vier oben aufgeführten Bedingungen erfüllt worden sind, eine Bewertung eines Ergebnisses der Bewegungsabschätzung bildet, die in bezug auf den gegenwärtigen Frame (und genauer auf den gegenwärtigen Pixelblock des gegenwärtigen Frames) mit Bezug auf Ref0, Ref1 und Ref2 durchgeführt worden ist. Bei anderen Ausführungsformen kann die Bewertung einer solchen Bewegungsabschätzung auf anderen Wegen durchgeführt werden.In the above set of conditions, BV Ref0 is the motion vector determined for the pixel block being coded with reference to Ref0; BV Ref1 is the motion vector which has been determined to be Ref1 for the pixel block being coded; BV Ref2 is the motion vector determined for the pixel block being coded with reference to Ref2; and T BV is a threshold used for the truncation condition of the reference frame loop (in some embodiments, T BV may equal 4). Further, "cost" is a cost function that measures the cost of encoding the current encoded pixel block as a difference relative to the reference pixel block pointed to in the respective reference frame by the motion vector determined for the frame. In other words, the "cost" function indicates a degree of block matching between the pixel block being coded and the proposed reference pixel block for the respective reference frame. It will also be understood that a determination of whether the four conditions listed above have been met constitutes an evaluation of a result of the motion estimation relating to the current frame (and more particularly to the current pixel block of the current frame) with reference to Ref0 , Ref1 and Ref2 has been performed. In other embodiments, the evaluation of such motion estimation may be performed in other ways.

Wenn alle vier obigen Bedingungen erfüllt sind, kann geschlossen werden, daß die Betrachtung von Ref1 und Ref2 keine bessere Blockpassung erzeugte als Ref0 und daß es sehr unwahrscheinlich ist, daß die Betrachtung von Ref3 und Ref4 eine bessere Blockpassung erzeugen würde. Es wird daher bestimmt, daß die Referenz-Frame-Schleife abgeschnitten werden sollte, indem die Betrachtung von Ref3 und Ref4 übersprungen wird, um Verarbeitungsressourcen zu sparen und die Beendigung der Bewegungsabschätzung zu beschleunigen.If all four of the above conditions are met, can be concluded that the Consideration of Ref1 and Ref2 did not produce a better block fit as Ref0 and that it It is very unlikely that the Consider Ref3 and Ref4 to create a better block fit would. It is therefore determined that the Reference frame loop should be cut off by viewing skipped from Ref3 and Ref4 In order to save processing resources and to complete the motion estimation accelerate.

Somit endet im Entscheidungsblock 430 die Referenzr-Frame-Schleife, wenn entweder der eben betrachtete Referenz-Frame Ref4 ist oder wenn der eben betrachtete Referenz-Frame Ref2 ist und die Bedingungen zum Abschneiden der Referenz-Frame-Schleife erfüllt sind. Wenn die Referenz-Frame-Schleife nicht endet, geht der Prozeß der 4A4C in der Schleife zurück zu 408 in 4A, und der nächste (d. h. nächstfrühere) Referenz-Frame wird betrachtet. Wenn die Referenz-Frame-Schleife endet, dann geht der Prozeß vom Entscheidungsblock 430 (4C) zum Entscheidungsblock 432 weiter.Thus ends in the decision block 430 the Referenzr frame loop, if either the reference frame just considered Ref4 or if the just considered reference frame is Ref2 and the Conditions for truncating the reference frame loop are met. If the reference frame loop does not finish, the process goes to 4A - 4C in the loop back to 408 in 4A , and the next (ie, sooner-earlier) reference frame is considered. If the reference frame loop ends, then the process goes from the decision block 430 ( 4C ) to the decision block 432 further.

Es sollte verstanden werden, daß bei einigen Ausführungsformen die Gesamtzahl der Referenz-Frames, die möglicherweise betrachtet werden, eine andere als fünf sein kann, und/oder die Anzahl der Referenz-Frames, die übersprungen werden, wenn dies basierend auf den Ergebnissen des Betrachtens späterer Referenz-Frames garantiert werden kann, eine andere als zwei sein kann.It should be understood that at some embodiments the total number of reference frames that may be considered a other than five can be, and / or the number of reference frames that skipped if this is based on the results of viewing later Reference frames can be guaranteed to be other than two can.

Im Entscheidungsblock 432 wird berücksichtigt, ob alle unterschiedlichen Blockgrößen/formen für den gerade codierten Pixel-Makroblock betrachtet worden sind. Wenn nicht, läuft der Prozeß der 4A4C in der Schleife zurück zu 406, und die nächste Blockgröße/form wird betrachtet. Sonst (d. h. wenn alle Blockgrößen/formen betrachtet worden sind) geht der Prozeß weiter zum Block 434 in 4C.In the decision block 432 It is considered whether all different block sizes / shapes have been considered for the pixel macroblock being encoded. If not, the process of 4A - 4C in the loop back to 406 , and the next block size / shape is considered. Otherwise (ie, if all block sizes / shapes have been considered) the process continues to the block 434 in 4C ,

Im Block 434 wird die beste Blockgröße/form (d. h. die Blockgröße/form, für die das beste Passen gefunden worden ist) zum Zwecke des Codierens des gegenwärtigen Pixel-Makroblocks ausgewählt. Bei einigen Ausführungsformen kann dies entsprechend herkömmlicher Praktiken geschehen. Es wird auch verstanden werden, daß der am besten passende Referenzblock für jede Größe/Form eines Blockes aus den jeweiligen Referenzblöcken für die verschiedenen betrachteten Referenz-Frames ausgewählt worden ist. Dies kann auch in Übereinstimmung mit herkömmlichen Praktiken geschehen sein. Somit ist die Bewegungsabschät zung für den gegenwärtigen Makroblock nun beendet, und der Prozeß der 4A4C kann nun auf den nächsten Makroblock des gegenwärtigen Frames angewendet werden.In the block 434 For example, the best block size / shape (ie, the block size / shape for which the best match has been found) is selected for the purpose of encoding the current pixel macroblock. In some embodiments, this may be done in accordance with conventional practices. It will also be understood that the most appropriate reference block for each size / shape of a block has been selected from the respective reference blocks for the various reference frames considered. This can also be done in accordance with conventional practices. Thus, the motion estimation for the current macroblock is now completed, and the process of 4A - 4C can now be applied to the next macroblock of the current frame.

Mit dem oben mit Bezug auf die 4A4C beschriebenen Prozeß kann die Bewegungsabschätzung schneller durchgeführt werden, als mit anderen "schnellen" Bewegungsabschätzungs-Algorithmen, mit vergleichbaren Ergebnissen, was die Bildqualität betrifft.With the above with respect to the 4A - 4C the motion estimation can be performed faster than with other "fast" motion estimation algorithms, with comparable results in terms of image quality.

Die Reihenfolge, in der die verschiedenen Teile des Bildabschätzungs-Algorithmus durchgeführt werden, können von der Reihenfolge, die in den 4A4C angegeben worden ist, geändert werden.The order in which the various parts of the image estimation algorithm are performed may be determined by the order in which 4A - 4C has been changed.

Die Auswahl eines Suchmusters für einen passenden Block im Block 424 (4B) braucht nicht auf die Auswahl zwischen zwei Suchmuster beschränkt zu werden und kann zwischen anderen Suchmustern als einem hexagonalen Suchmuster und einem Kreuz-Suchmuster ausgewählt werden.The selection of a search pattern for a suitable block in the block 424 ( 4B ) does not need to be limited to the selection between two search patterns and can be selected between other search patterns than a hexagonal search pattern and a cross search pattern.

Die hierin beschriebenen mehreren Ausführungsformen sind nur für den Zweck der Veranschaulichung. Die verschiedenen hierin beschriebenen Merkmale brauchen nicht alle zusammen verwendet zu werden, und irgendeines oder mehrere dieser Merkmale können in einer einzelnen Ausführungsform enthalten sein. Daher werden die Fachleute aus dieser Beschreibung erkennen, daß weitere Ausführungsformen mit verschiedenen Modifikationen und Änderungen in die Praxis umgesetzt werden können.The Several embodiments described herein are for purpose only the illustration. The various features described herein not all need to be used together, and any or more of these features in a single embodiment be included. Therefore, the experts of this description recognize that more embodiments implemented with various modifications and changes in practice can be.

ZUSAMMENFASSUNGSUMMARY

Ein Verfahren umfaßt das Überprüfen einer statistischen Verteilung von Bewegungsvektoren, die für die Bewegungskompensation in einem ersten Frame aus Bilddaten benutzt werden. Die Überprüfung besteht darin, ein Verteilungsmodell der Bewegungsvektoren in dem ersten Frame zu erzeugen. Das Verfahren umfaßt weiter das Auswählen, basierend wenigstens teilweise auf dem Verteilungsmodell, eines Suchmusters, das an den Block angepaßt ist, zur Verwendung in bezug auf einen zweiten Frame aus Bilddaten. Der zweite Frame folgt dem ersten Frame in einer Abfolge von Frames aus Bilddaten.One Method includes checking a statistical Distribution of motion vectors used for motion compensation be used in a first frame of image data. The review exists therein, a distribution model of the motion vectors in the first one Frame to generate. The method further includes selecting based at least partially on the distribution model, a search pattern, which is adapted to the block, for use with respect to a second frame of image data. Of the second frame follows the first frame in a sequence of frames from image data.

Claims (32)

Verfahren, das aufweist: Überprüfen einer statistischen Verteilung von Bewegungsvektoren, die für die Bewegungskompensation in einem ersten Frame aus Bilddaten verwendet werden, wobei das Überprüfen dazu dient, ein Verteilungsmodell der Bewegungsvektoren in dem ersten Frame zu erzeugen; und Auswählen, basierend wenigstens teilweise auf dem Verteilungsmodell, eines Suchmusters für den passenden Block zur Verwendung in bezug auf einen zweiten Frame aus Bilddaten, wobei der zweite Frame in einer Folge aus Frames aus Bilddaten dem ersten Frame folgt.A method comprising: Check one statistical distribution of motion vectors used for motion compensation in a first frame of image data, checking to do so serves as a distribution model of the motion vectors in the first frame to create; and Choose, based at least in part on the distribution model, one Search pattern for the appropriate block for use with respect to a second frame from image data, the second frame in a sequence of frames from image data follows the first frame. Verfahren nach Anspruch 1, bei dem das Auswählen das Auswählen zwischen einem hexagonalen Suchmuster und einem Kreuz-Suchmuster umfaßt.The method of claim 1, wherein selecting the Choose between a hexagonal search pattern and a cross search pattern includes. Verfahren nach Anspruch 1, bei dem das Überprüfen das Berechnen eines Mittelwerts der Bewegungsvektoren, die für die Bewegungskompensation in dem ersten Frame benutzt werden, umfaßt.The method of claim 1, wherein the checking is the Calculate an average of the motion vectors used for motion compensation in the first frame. Verfahren nach Anspruch 1, bei dem das Überprüfen das Berechnen einer Abmessung einer diamantförmigen Fläche, die wenigstens 99% der Bewegungsvektoren enthält, die für die Bewegungskompensation in dem ersten Frame benutzt wurden, umfaßt.The method of claim 1, wherein the over check calculating a dimension of a diamond-shaped area containing at least 99% of the motion vectors used for the motion compensation in the first frame. Verfahren nach Anspruch 1, das weiter aufweist: Bestimmen eines Bewegungsvektors zur Verwendung in bezug auf einen Block aus Pixeldaten des zweiten Frames, wobei das Bestimmen mit dem ausgewählten Suchmuster für den passenden Block durchgeführt wird.The method of claim 1, further comprising: Determine of a motion vector for use with respect to a block Pixel data of the second frame, wherein determining with the selected search pattern for the matching block performed becomes. Verfahren nach Anspruch 5, das weiter aufweist: Das Durchführen einer bewegungskompensierten Kompressionscodierung des Blocks aus Pixeldaten des zweiten Frames, wobei das bewegungskompensierte Kompressi onscodieren den Bewegungsvektor zur Verwendung mit Bezug auf den Block aus Pixeldaten des zweiten Frames verwendet.The method of claim 5, further comprising: The Carry out a motion-compensated compression coding of the block Pixel data of the second frame, wherein the motion compensated Kompressi oncoderieren the motion vector for use with respect to the block of pixel data of the second frame. Verfahren, das aufweist: Bestimmen einer Eigenschaft eines ersten Frames aus Bilddaten; und Auswählen, auf der Basis der bestimmten Eigenschaft, zwischen einem ersten Suchmuster für einen passenden Block zur Verwendung mit Bezug auf einen zweiten Frame aus Bilddaten und einem zweiten Suchmuster für einen passenden Block zur Verwendung in bezug auf den zweiten Frame aus Bilddaten, wobei der zweite Frame unmittelbar dem ersten Frame in einer Abfolge von Frames aus Bilddaten folgt.A method comprising: Determine a property a first frame of image data; and Select, based on the specific Property, between a first search pattern for a matching block Use with respect to a second frame of image data and a second search pattern for a matching block for use with respect to the second frame from image data, wherein the second frame is immediately the first frame in a sequence of frames of image data follows. Verfahren nach Anspruch 7, bei dem das Bestimmen das Analysieren einer statistischen Verteilung von Bewegungsvektoren für den ersten Frame umfaßt.The method of claim 7, wherein determining analyzing a statistical distribution of motion vectors for the first frame included. Verfahren nach Anspruch 7, bei dem das Auswählen das Auswählen zwischen einem hexagonalen Suchmuster und einem Kreuz-Suchmuster umfaßt.The method of claim 7, wherein selecting the Choose between a hexagonal search pattern and a cross search pattern includes. Verfahren nach Anspruch 7, das weiter aufweist: Bestimmen eines Bewegungsvektors zur Verwendung mit Bezug auf einen Block aus Pixeldaten des zweiten Frames, wobei das Bestimmen mit dem ausgewählten Suchmuster für einen passenden Block durchgeführt wird.The method of claim 7, further comprising: Determine a motion vector for use with respect to a block from pixel data of the second frame, wherein determining with the selected search pattern for one matching block performed becomes. Verfahren nach Anspruch 10, das weiter aufweist: Durchführen bewegungskompensierter Kompressionscodierung des Blocks aus Pixeldaten des zweiten Frames, wobei die bewegungskompensierte Kompressionscodie rung den Bewegungsvektor zur Verwendung mit Bezug auf den Block aus Pixeldaten des zweiten Frames verwendet.The method of claim 10, further comprising: Perform motion-compensated Compression coding of the block of pixel data of the second frame, wherein the motion compensated compression coding is the motion vector for use with respect to the block of pixel data of the second Frames used. Verfahren, das aufweist: Durchführen der ersten Bewegungsabschätzung in bezug auf einen gegenwärtigen Frame einer Abfolge von Frames aus Bilddaten, wobei die erste Bewegungsabschätzung mit Bezug auf einen ersten Satz aus Referenz-Frames durchgeführt wird, wobei der erste Satz, wobei der erste Satz der Referenz-Frames dem gegenwärtigen Frame in der Abfolge der Frames aus Bilddaten vorangeht; Bewerten eines Ergebnisses der ersten Bewegungsabschätzung; und Bestimmen, basierend auf dem Ergebnis der Bewertung, ob eine zweite Bewegungsabschätzung in bezug auf den gegenwärtigen Frame durchgeführt wird, wobei die zweite Bewegungsabschätzung mit Bezug auf einen zweiten Satz aus Referenz-Frames durchgeführt wird, der sich von dem ersten Satz aus Referenz-Frames unterscheidet, wobei der zweite Satz aus Referenz-Frames dem ersten Satz aus Referenz-Frames in der Abfolge der Frames der Bilddaten vorangeht.A method comprising: Perform the first motion estimation in relation to a present one Frame of a sequence of frames of image data, wherein the first motion estimation with Reference to a first set of reference frames is performed wherein the first set, wherein the first set of reference frames corresponds to current Precedes frame in the sequence of frames of image data; assess a result of the first motion estimation; and Determine, based on the result of the evaluation, whether a second motion estimation in with reference to the present Frame performed is, wherein the second motion estimation with respect to a second Set of reference frames carried out which differs from the first set of reference frames, wherein the second set of reference frames is the first set of reference frames in the sequence precedes the frames of the image data. Verfahren nach Anspruch 12, bei dem: der erste Satz aus Referenz-Frames drei Referenz-Frames umfaßt, die unmittelbar den gegenwärtigen Frame in der Abfolge der Frames aus Bilddaten vorausgehen; und der zweite Satz aus Referenz-Frames zwei Frames umfaßt, die unmittelbar dem ersten Satz aus Referenz-Frames in der Abfolge der Frames aus Bilddaten vorausgehen.The method of claim 12, wherein: the first Set of reference frames includes three reference frames, the immediately the current one Precede frame in the sequence of frames from image data; and of the second set of reference frames comprises two frames immediately adjacent to the first one Set of reference frames in the sequence of frames from image data precede. Verfahren nach Anspruch 13, bei dem das Bewerten das Vergleichen einer Differenz zwischen einem ersten Bewegungsvektor, der mit Bezug auf einen mittleren der Frames des ersten Satzes der Referenz-Frames erhalten worden ist, und einem Vielfachen eines zweiten Bewegungsvektors, der mit Bezug auf einen letzten der Frames des ersten Satzes von Referenz-Frames erhalten worden ist, mit einem Schwellenwert umfaßt.The method of claim 13, wherein the evaluating comparing a difference between a first motion vector, with respect to a middle one of the frames of the first set of Reference frames has been obtained, and a multiple of one second motion vector related to a last of the frames of the first set of reference frames, with a threshold includes. Verfahren nach Anspruch 13, bei dem das Bewerten das Vergleichen einer Differenz zwischen einem ersten Bewegungsvektor, der mit Bezug auf einen frühesten der Frames aus dem ersten Satz der Referenz-Frames erhalten worden ist, und einem Vielfachen eines zweiten Bewegungsvektors, der mit Bezug auf einen letzten der Frames des ersten Satzes der Referenz-Frames erhalten worden ist, mit einem Schwellenwert umfaßt.The method of claim 13, wherein the evaluating comparing a difference between a first motion vector, the earliest with regard to the frames have been obtained from the first set of reference frames , and a multiple of a second motion vector, with respect to to a last of the frames of the first set of reference frames has been obtained with a threshold. Verfahren nach Anspruch 13, bei dem das Bewerten das Vergleichen eines Grades des Blockpassens, der mit Bezug auf einen mittleren der Frames des ersten Satzes der Referenz-Frames erhalten worden ist, mit einem Grad des Blockpassens, der mit Bezug auf einen letzten der Frames des ersten Satzes der Referenz-Frames erhalten worden ist, umfaßt.The method of claim 13, wherein the evaluating comprises comparing a degree of block matching obtained with respect to an average one of the frames of the first set of reference frames with a degree of block matching with respect to a last one of the frames ers set of reference frames. Verfahren nach Anspruch 13, bei dem das Bewerten das Vergleichen eines Grades des Blockpassens, der mit Bezug auf einen frühesten der Frames des ersten Satzes der Referenz-Frames erhalten worden ist, mit einem Grad des Blockpassens, der mit Bezug auf einen letzten der Frames des ersten Satzes der Referenz-Frames erhalten worden ist, umfaßt.The method of claim 13, wherein the evaluating comparing a degree of block matching, with reference to a earliest the frames of the first set of reference frames have been obtained is, with a degree of block matching, with respect to one last the frames of the first set of reference frames have been obtained is included. Verfahren nach Anspruch 13, bei dem das Bewerten umfaßt: Vergleichen einer Differenz zwischen dem Doppelten eines ersten Bewegungsvektors der mit Bezug auf einen letzten der Frames des ersten Satzes der Referenz-Frames erhalten worden ist, und einem zweiten Bewegungsvektor, der mit Bezug auf einen mittleren der Frames des ersten Satzes der Referenz-Frames erhalten worden ist, mit einem Schwellenwert; Vergleichen einer Differenz zwischen dem Dreifachen des ersten Bewegungsvektors und einem dritten Bewegungsvektor, der mit Bezug auf einen frühesten der Frames des ersten Satzes der Referenz-Frames erhalten worden ist, mit dem Schwellenwert; Vergleichen eines Grades des Blockpassens, der mit Bezug auf den mittleren der Frames des ersten Satzes der Referenz-Frames erhalten worden ist, mit einem Grad des Blockpassens, der mit Bezug auf den letzten der Frames im ersten Satz der Referenz-Frames erhalten worden ist; und Vergleichen eines Grades des Blockpassens, der mit Bezug auf den frühesten der Frames des ersten Satzes der Referenz-Frames erhalten worden ist, mit dem Grad des Blockpassens, der mit Bezug auf den letzten der Frames des ersten Satzes der Referenz-Frames erhalten worden ist.The method of claim 13, wherein the evaluating comprising: to compare a difference between twice a first motion vector with respect to a last of the frames of the first sentence of Reference frames, and a second motion vector, with respect to a middle one of the frames of the first set of Reference frames have been obtained, with a threshold; to compare a difference between three times the first motion vector and a third motion vector related to an earliest of the Frames of the first set of reference frames has been obtained with the threshold; Comparing a degree of block matching, with respect to the middle of the frames of the first sentence of the Reference frames has been obtained, with a degree of block matching, obtained with respect to the last of the frames in the first set of reference frames is; and Comparing a degree of block matching, with respect to at the earliest the frames of the first set of reference frames have been obtained is, with the degree of blockpassing, with respect to the last one the frames of the first set of reference frames have been obtained is. Verfahren nach Anspruch 12, bei dem der erste Satz aus Referenz-Frames wenigstens zwei Frames umfaßt.The method of claim 12, wherein the first sentence from reference frames comprises at least two frames. Verfahren nach Anspruch 19, bei dem das Bewerten des Vergleichen eines Grades des Blockpassens, der mit Bezug auf einen früheren der Frames des ersten Satzes der Referenz-Frames erhalten worden ist, mit einem Grad des Blockpassens, der mit Bezug auf einen späteren der Frames des ersten Satzes der Referenz-Frames erhalten worden ist, umfaßt.The method of claim 19, wherein evaluating comparing a degree of block matching, with reference to an earlier one the frames of the first set of reference frames have been obtained is, with a degree of block matching, with respect to a later of the Frames of the first set of reference frames has been obtained includes. Verfahren nach Anspruch 19, bei dem das Bewerten das Berechnen einer Differenz umfaßt, indem ein erster Bewegungsvektor, der mit Bezug auf späteren der Frames erhalten worden ist, von einem Vielfachen eines zweiten Bewegungsvektors, der mit Bezug auf den früheren der Frames erhalten worden ist, subtrahiert wird.The method of claim 19, wherein evaluating calculating a difference by using a first motion vector, with reference to later of the frames has been obtained by a multiple of a second Motion vector obtained with respect to the earlier frame is subtracted. Verfahren nach Anspruch 21, bei dem das Bewerten weiter das Vergleichen der Differenz mit einem Schwellenwert umfaßt.The method of claim 21, wherein evaluating further comprising comparing the difference to a threshold. Vorrichtung, die aufweist: ein Speichermedium, in dem Befehle gespeichert sind, die, wenn sie von einer Maschine ausgeführt werden, zu dem folgenden führen: Überprüfen einer statistischen Verteilung von Bewegungsvektoren, die für die Bewegungskompensation in einem ersten Frame aus Bilddaten benutzt werden, wobei das Überprüfen dazu dient, ein Verteilungsmodell der Bewegungsvektoren in dem ersten Frame zu erzeugen; und Auswählen, basierend wenigstens teilweise auf dem Verteilungsmodell, eines Suchmusters für einen passenden Block zur Verwendung mit Bezug auf einen zweiten Frame aus Bilddaten, wobei der zweite Frame dem ersten Frame in einer Abfolge von Frames aus Bilddaten folgt.Apparatus comprising: a storage medium, where commands are stored, which, when taken from a machine be executed lead to the following: Check one statistical distribution of motion vectors used for motion compensation in a first frame of image data, with checking to do so serves as a distribution model of the motion vectors in the first Generate frame; and Choose, based at least in part on the distribution model, one Search pattern for a matching block for use with respect to a second one Frame of image data, where the second frame is the first frame in a sequence of frames of image data follows. Vorrichtung nach Anspruch 23, bei dem das Auswählen das Auswählen zwischen einem hexagonalen Suchmuster und einem Kreuz-Suchmuster umfaßt.Apparatus according to claim 23, wherein said selecting Choose between a hexagonal search pattern and a cross search pattern includes. Vorrichtung nach Anspruch 23, bei dem das Überprüfen das Berechnen einer Abmessung einer diamantförmigen Fläche umfaßt, welche wenigstens 99% der Bewegungs vektoren enthält, die für die Bewegungskompensation in dem ersten Frame benutzt wird.Apparatus according to claim 23, wherein said checking is Calculating a dimension of a diamond-shaped surface comprising at least 99% of the Contains motion vectors, the for the motion compensation is used in the first frame. Verfahren, das aufweist: Bestimmen einer Vielzahl von Kandidaten-Bewegungsvektoren für einen ersten Pixelblock in einem vorliegenden Rahmen einer Abfolge von Rahmen aus Bilddaten, wobei die Kandidaten-Bewegungsvektoren wenigstens zwei der folgenden umfassen: (a) einen Bewegungsvektor für einen Pixelblock, der an den ersten Pixelblock angrenzt; (b) einen Bewegungsvektor für einen Pixelblock, der eine Übermenge des ersten Pixelblocks ist; (c) einen Bewegungsvektor für einen zweiten Pixelblock, der ein Teil eines ersten Referenz-Frames aus Bilddaten ist, der dem gegenwärtigen Frame in der Abfolge der Frames aus Bilddaten unmittelbar vorangeht, wobei der zweite Pixelblock eine Position in dem ersten Referenz-Frame hat, der einer Position des ersten Pixelblocks in dem gegenwärtigen Frame entspricht; und (d) einen skalierten Bewegungsvektor für einen dritten Pixelblock, der Teil eines zweiten Referenz-Frames ist, wobei der zweite Referenz-Frame dem ersten Referenz-Frame in der Abfolge von Frames aus Bilddaten vorangeht, wobei der dritte Pixelblock eine Position in dem zweiten Referenz-Frame hat, der einer Position des ersten Pixelblocks in dem vorliegenden Frame entspricht; Bestimmen einer Zahl aus der Vielzahl der Kandidaten-Bewegungsvektoren, die dieselben sind; und Vergleichen der Zahl mit einem Schwellenwert.A method comprising: determining a plurality of candidate motion vectors for a first pixel block in a given frame of a sequence of frames of image data, wherein the candidate motion vectors comprise at least two of the following: (a) a motion vector for a pixel block corresponding to the adjacent to the first pixel block; (b) a motion vector for a pixel block that is a superset of the first pixel block; (c) a motion vector for a second pixel block that is part of a first reference frame of image data immediately preceding the current frame in the sequence of frames of image data, the second pixel block having a position in the first reference frame, which corresponds to a position of the first pixel block in the current frame; and (d) a scaled motion vector for a third pixel block that is part of a second reference frame, wherein the second reference frame precedes the first reference frame in the sequence of frames of image data, wherein the third pixel block occupies a position in the second Reference frame corresponding to a position of the first pixel block in the present frame; Determining a number from the variety of Kandida ten motion vectors that are the same; and comparing the number to a threshold. Verfahren nach Anspruch 26, das weiter aufweist: wenn die Zahl den Schwellenwert überschreitet, Setzen eines Wertes eines Bewegungsvektors für den ersten Pixelblock, wobei der Wert gleich einem Wert der Kandidaten-Bewegungsvektoren ist, die dieselben sind.The method of claim 26, further comprising: if the number exceeds the threshold, Setting a value of a motion vector for the first pixel block, wherein the value is equal to a value of the candidate motion vectors, they are the same. Verfahren nach Anspruch 26, bei dem die Kandidaten-Bewegungsvektoren jeden der folgenden umfassen: (a) einen jeweiligen Bewegungsvektor für jeden der drei Pixelblöcke, die an den ersten Pixelblock angrenzen; (b) einen Bewegungsvektor für einen Pixelblock, der eine Übermenge des ersten Pixelblocks ist; (c) einen Bewegungsvektor für einen zweiten Pixelblock, der Teil eines ersten Referenz-Frames von Bilddaten ist, der dem gegenwärtigen Frame in der Abfolge von Frames aus Bilddaten unmittelbar vorangeht, wobei der zweite Pixelblock eine Position in dem ersten Referenz-Frame hat, die einer Position des ersten Pixelblocks in dem gegenwärtigen Frame entspricht; und (d) einen skalierten Bewegungsvektor für einen dritten Pixelblock, der Teil eines zweiten Referenz-Frames ist, wobei der zweite Referenz-Frame dem ersten Referenz-Frame in der Abfolge von Frames aus Bilddaten vorangeht, wobei der dritte Pixelblock eine Position in dem zweiten Referenz-Frame hat, die einer Position des ersten Pixelblocks in dem gegenwärtigen Frame entspricht.The method of claim 26, wherein the candidate motion vectors each of the following include: (a) a respective motion vector for each the three pixel blocks, adjacent to the first pixel block; (b) a motion vector for one Pixelblock, which is a superset the first pixel block is; (c) a motion vector for one second pixel block, which is part of a first reference frame of image data that is the present one Frame in the sequence of frames immediately preceded by image data, wherein the second pixel block is a position in the first reference frame which corresponds to a position of the first pixel block in the current frame; and (d) a scaled motion vector for a third pixel block, which is part of a second reference frame, the second reference frame the first reference frame in the sequence of frames of image data preceded, wherein the third pixel block a position in the second Reference frame has a position of the first pixel block in the current one Frame corresponds. Verfahren, das aufweist: Durchführen einer ersten Bewegungsabschätzung in bezug auf einen gegenwärtigen Frame einer Abfolge von Frames aus Bilddaten, wobei die erste Bewegungsabschätzung mit Bezug auf einen ersten Satz von Referenz-Frames durchgeführt wird, wobei der erste Satz der Referenz-Frames dem gegenwärtigen Frame in der Abfolge von Frames aus Bilddaten vorangeht; Bewerten eines Ergebnisses der ersten Bewegungsabschätzung; und Bestimmen, basierend auf einem Ergebnis der Bewertung, ob eine zweite Bewegungsabschätzung mit Bezug auf den gegenwärtigen Frame durchgeführt wird, wobei die zweite Bewegungsabschätzung mit Bezug auf einen zweiten Satz von Referenz-Frames durchgeführt wird, der sich von dem ersten Satz der Referenz-Frames unterscheidet, wobei der zweite Satz der Referenz-Frames dem ersten Satz der Referenz-Frames in der Abfolge der Frames aus Bilddaten vorangeht, wobei die erste Bewegungsabschätzung umfaßt: Bestimmen einer Vielzahl von Kandidaten-Bewegungsvektoren für einen ersten Pixelblock in dem vorliegenden Frame, wobei die Kandidaten-Bewegungsvektoren wenigstens zwei der folgenden umfassen: (a) einen Bewegungsvektor für einen Pixelblock, der an den ersten Pixelblock angrenzt; (b) einen Bewegungsvektor für einen Pixelblock, der eine Übermenge des ersten Pixelblocks ist; (c) einen Bewegungsvektor für einen zweiten Pixelblock, der ein Teil eines Referenz-Frames ist, welcher ein letzter Frame in dem ersten Satz aus Referenzframes ist, wobei der zweite Pixelblock eine Position in dem Referenz-Frame hat, der einer Position des ersten Pixelblocks in dem vorliegenden Frame entspricht; und (d) einen skalierten Bewegungsvektor für einen dritten Pixelblock, der Teil eines weiteren Referenz-Frames ist, wobei der weitere Referenz-Frame dem letzten Frame in dem ersten Satz der Referenz-Frames vorangeht, wobei der dritte Pixelblock eine Position in dem weiteren Referenz-Frame hat, die einer Position des ersten Pixelblocks in dem vorliegenden Frame entspricht; Bestimmen einer Anzahl für die Vielzahl von Kandidaten-Bewegungsvektoren, die dieselben sind; und Vergleichen der Zahl mit einem Schwellenwert; und wobei die erste Bewegungsabschätzung weiter umfaßt: Bestimmung einer Eigenschaft eines Frames aus Bilddaten, der in der Abfolge der Frames vor dem gegenwärtigen Frame ist; und Auswählen, auf der Basis der bestimmten Eigenschaften, eines Suchmusters für einen passenden Block zur Verwendung mit Bezug auf den vorliegenden Frame, wobei der vorangehende Frame dem vorliegenden Frame in der Abfolge von Frames unmittelbar vorausgeht.A method comprising: Perform a first motion estimation in relation to a present one Frame of a sequence of frames of image data, wherein the first motion estimation with Reference to a first set of reference frames is performed wherein the first set of reference frames is the current frame precedes in the sequence of frames of image data; assess a result of the first motion estimation; and Determine, based on a result of the evaluation, whether a second motion estimation with respect on the present Frame is performed, the second motion estimation is performed with respect to a second set of reference frames other than the first sentence of the reference frames is different, with the second sentence of the reference frames the first set of reference frames in the sequence of frames Image data precedes, wherein the first motion estimation comprises: Determine a plurality of candidate motion vectors for one first pixel block in the present frame, wherein the candidate motion vectors at least two of the following include: (a) a motion vector for one Pixel block adjacent to the first pixel block; (b) one Motion vector for a pixel block that is a superset the first pixel block is; (c) a motion vector for one second pixel block, which is a part of a reference frame, which is a last frame in the first set of reference frames, where the second pixel block has a position in the reference frame, the one Position of the first pixel block in the present frame; and (d) a scaled motion vector for a third pixel block, which is part of another reference frame, with the further reference frame precedes the last frame in the first set of reference frames, wherein the third pixel block is a position in the further reference frame which has a position of the first pixel block in the present Frame corresponds; Determining a number for the plurality of candidate motion vectors, they are the same; and Comparing the number to a threshold; and the first motion estimation further comprises: determination a property of a frame of image data that is in sequence the frames before the current one Frame is; and Choose, based on the specific properties, a search pattern for one matching block for use with respect to the present frame, the previous frame being the current frame in the sequence preceded by frames immediately. Verfahren nach Anspruch 29, bei dem das Bestimmen der Eigenschaft des vorigen Frames das Analysieren einer statistischen Verteilung von Bewegungsvektoren für den vorigen Frame umfaßt.The method of claim 29, wherein determining the property of the previous frame analyzing a statistical Distribution of motion vectors for the previous frame includes. Verfahren nach Anspruch 30, bei dem das Wählen das Auswählen zwischen einem hexagonalen Suchmuster und einem Kreuz-Suchmuster umfaßt.The method of claim 30, wherein selecting said Choose between a hexagonal search pattern and a cross search pattern includes. Verfahren nach Anspruch 31, bei dem: der erste Satz der Referenz-Frames drei Referenz-Frames umfaßt, die dem gegenwärtigen Frame in der Abfolge der Frames aus Bilddaten unmittelbar vorausgehen; und der zweite Satz der Referenz-Frames zwei Frames umfaßt, die dem ersten Satz der Referenz-Frames in der Abfolge der Frames aus Bilddaten unmittelbar vorausgehen.The method of claim 31, wherein: the first Set of reference frames includes three reference frames, the the current one Precede frame in the sequence of frames of image data; and the second set of reference frames comprises two frames, the the first set of reference frames in the sequence of frames Immediately precede image data.
DE112004002977T 2004-10-14 2004-10-14 Fast multi-frame motion estimation with adaptive search strategies Withdrawn DE112004002977T5 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2004/001172 WO2006039843A1 (en) 2004-10-14 2004-10-14 Fast multi-frame motion estimation with adaptive search strategies

Publications (1)

Publication Number Publication Date
DE112004002977T5 true DE112004002977T5 (en) 2007-09-20

Family

ID=36148039

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112004002977T Withdrawn DE112004002977T5 (en) 2004-10-14 2004-10-14 Fast multi-frame motion estimation with adaptive search strategies

Country Status (3)

Country Link
CN (1) CN101061722B (en)
DE (1) DE112004002977T5 (en)
WO (1) WO2006039843A1 (en)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9078009B2 (en) 2010-02-19 2015-07-07 Skype Data compression for video utilizing non-translational motion information
US9819358B2 (en) 2010-02-19 2017-11-14 Skype Entropy encoding based on observed frequency
US9313526B2 (en) 2010-02-19 2016-04-12 Skype Data compression for video
US9609342B2 (en) 2010-02-19 2017-03-28 Skype Compression for frames of a video signal using selected candidate blocks
CN102387361B (en) * 2010-09-02 2016-06-01 乐金电子(中国)研究开发中心有限公司 The reference frame processing method of coding and decoding video and Video Codec
CN102045568B (en) * 2010-12-30 2012-08-08 福州瑞芯微电子有限公司 Matching circuit structure and method for realizing diagonal matching motion estimation by double-slant grid scanning
CN104811726B (en) * 2015-04-24 2018-12-18 宏祐图像科技(上海)有限公司 The candidate motion vector selection method of estimation in frame per second conversion
CN106604028A (en) * 2015-10-16 2017-04-26 中兴通讯股份有限公司 Encoding processing method and device, decoding processing method and device, encoder, and decoder
CN111652905B (en) * 2020-04-27 2023-07-07 长春理工大学 One-dimensional block matching motion estimation method and device

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0955941A (en) * 1995-08-16 1997-02-25 Sony Corp Picture encoding method/device and recording device for picture encoding data
CN1198245C (en) * 1998-09-07 2005-04-20 汤姆森多媒体公司 Method for motion estimation for transmission cost reduction of motion vectors
CN1147159C (en) * 1999-04-27 2004-04-21 三星电子株式会社 Method and device for evaluate high speed motion of real time motion image coding
EP1279293A1 (en) * 2000-01-21 2003-01-29 Nokia Corporation A motion estimation method and a system for a video coder
US6567469B1 (en) * 2000-03-23 2003-05-20 Koninklijke Philips Electronics N.V. Motion estimation algorithm suitable for H.261 videoconferencing applications
JP2001285874A (en) * 2000-03-28 2001-10-12 Nec Corp Device for searching motion vector, its method and recording medium for recording program
JP2004221757A (en) * 2003-01-10 2004-08-05 Renesas Technology Corp Motion detector and searching area shape variable- motion detector

Also Published As

Publication number Publication date
CN101061722B (en) 2013-03-27
WO2006039843A1 (en) 2006-04-20
CN101061722A (en) 2007-10-24

Similar Documents

Publication Publication Date Title
DE69836609T2 (en) Conversion of DV encoded video data into MPEG format
DE69738264T2 (en) Video encoding and video decoding device
DE10300528B4 (en) Calculation method for a prediction motion vector
DE69635369T2 (en) The video coding apparatus
DE69826823T2 (en) METHOD FOR VIDEO CODING WITH VARIABLE BITRATE AND CORRESPONDING VIDEO PROCESSOR
DE60027955T2 (en) Method and apparatus for context-based inter / intra coding mode selection
DE60220106T2 (en) Method and device for reducing interference in decoded images with postfiltering
DE102010025816A1 (en) Methods and systems for estimating motion based on reconstructed reference frames at a video decoder
DE10253380B4 (en) Method and apparatus for encoding moving pictures with fixed computational complexity
DE69935478T2 (en) moving picture
DE69921108T2 (en) METHOD AND DEVICE FOR ADAPTIVELY CODING A VIDEO DATA STREAM
DE19825042C2 (en) Motion vector coding method in MPEG-4
DE19704439C2 (en) Method and device for motion estimation in a digital video encoder using trajectories
DE19758761B4 (en) A method of intra-coding an image formed by a pixel matrix
DE19643915A1 (en) Method and circuit for determining a quantization interval in an image encoder
DE102014006433A1 (en) Encoding a picture
DE10300533A9 (en) Direct mode motion vector calculation method for B-pictures
DE102019103346A1 (en) SSIM-BASED RATE-DISTORTION OPTIMIZATION FOR IMPROVED TRACEABLE QUALITY IN VIDEOS
DE10300048A1 (en) Image coding method for motion picture expert groups, involves image quantizing data in accordance with quantization parameter, and coding entropy of quantized image data using entropy coding unit
DE112006000270T5 (en) Work buffer for storing loop filter intermediate data
DE60318758T2 (en) Encoding method and decoding method for moving pictures
DE69630199T2 (en) METHOD AND DEVICE FOR SELECTIVE COMPRESSION OF VIDEO CODEC
DE4442643B4 (en) Method for estimating motion in a moving image
EP1665805B1 (en) Method for transcoding a data stream comprising one or more coded, digitised images using intra-prediction modes
DE10296787B4 (en) Selective predication for intra-coding a video data block

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04N0007260000

Ipc: H04N0019000000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04N0007260000

Ipc: H04N0019000000

Effective date: 20131204

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee