Abstract:
There is provided a method of Motion Estimation in digital video, comprising carrying out an initial search to determine an initial search best candidate motion vector for a source macroblock, carrying out a main search to determine a main search best candidate motion vector for a source macroblock, carrying out a prediction search, centred on the best candidate from the initial search, to determine a prediction search best candidate motion vector for a source macroblock, carrying out a first extended search, centred on the best result from the initial, main and prediction searches, to determine a first extended search best candidate motion vector for a source macroblock, carrying out a second extended search, centred on the best result from the initial, main, prediction and first extended searches, to determine a second extended search best candidate motion vector for a source macroblock, and providing the second extended search best candidate motion vector to a subsequent video encoding process. There is also provided apparatus adapted to carry out the Motion Estimation in digital video method.

Description:
TECHNICAL FIELD 
       [0001]    The invention is related to digital video compression in general, and in particular to an improved method of, and apparatus for, the Motion Estimation stage in such digital video compression methods. 
       BACKGROUND 
       [0002]    During the Motion Estimation stage, analysis of a sequence of pictures from the video stream is carried out in order to measure the ways in which elements of each picture move from picture to picture, and to express these movements in the form of Motion Vectors (MV). 
         [0003]    Video compression methods are used within digital television broadcasting systems to reduce the data rate per channel while maintaining picture quality. It is a primary objective of these methods that the instantaneous demand for transmission capacity of the moving television picture sequence is substantially met at all times despite its varying complexity. Typical transmission channels used to convey audio-visual material have fixed bit rates and so the varying demand for capacity of the picture sequence may not always be satisfied. 
         [0004]    It is an inevitable result of the process that for extremes of highly complex picture behaviour the picture quality may occasionally be compromised in order that the bit rate criteria are met. By choosing a bit rate that is too low, poor quality will result for a significant proportion of the time. Conversely, a bit rate that is too high will meet quality needs, but will waste transmission capacity for a significant proportion of the time. Thus, some kind of control mechanism is required that evens out the peaks and troughs of demand so that a given fixed bit rate is adequate to deliver good picture quality at all times. 
         [0005]    Part of such control should ideally take some objective measure of the picture quality into account, so that the distortion in the picture is known to some degree. A key parameter in this process is the Quantisation Parameter (QP) whose value determines the degree of quantisation applied, thereby ultimately controlling the final bit rate. 
         [0006]    The optimisation of this whole process is called Rate Distortion Optimisation (RDO) and it is an inherent part of practical realisations of modern compression methods. RDO aims to balance between the bits spent on a picture and the distortion in the picture to give the most efficient video encoding. The MV search method and apparatus described herein provides improved compression data (in the form of MV candidates) to the RDO process for the RDO process to work with, but is not itself part of RDO. 
         [0007]    The complex methods currently employed have become very sophisticated and use a variety of techniques in concert to achieve the objective of coding complex picture sequences using minimum bit rate. Typically, in such methods the compressed picture sequence of the television signal is hierarchically structured at a number of levels, each enabling the full set of coding tools available to be applied efficiently. 
         [0008]    At the highest of these levels, the picture sequence is organised into contiguous Groups of Pictures (GOP)  100  (see  FIG. 1 ) and each group is further organised so that the first picture of each GOP is coded without reference to any other picture in the sequence. This is known as Intra-picture coding and the resultant picture is called an I picture  110 . Subsequent pictures in the GOP are coded differentially with respect to other pictures in the GOP, including the initial I picture  110 . For example, the second picture in the GOP is typically predicted directly from the I picture  110  and the differences between them, being small, are then coded. The resultant picture is known as a Predicted or P picture  120 , Typically the number of bits required to code this P picture  120  is smaller than that needed for an I picture  110 . The next picture of the GOP may also be predicted in turn from this P picture  120  and this pattern may repeat for the remainder of the GOP. These P predictions are uni-directional and use past pictures to predict future ones in a sequence of mutual dependence. 
         [0009]    It is also possible to code pictures in the GOP using Bi-directional prediction, that is, potentially using both past and future pictures and so this is known as a B picture  130 . A B picture  130  typically needs fewer bits than a P picture  120 . 
         [0010]    Thus, a typical simple GOP may utilise more B  130  and P  120  pictures relative to the number of I pictures  110 . For example, they may have a structure such as that illustrated by  FIG. 1  that is a short example of the form IPBP, which repeats for each successive GOP. A more typical structure might have many more B and P pictures, such as IPPBPPB or IBBPBBP etc. The absolute GOP structure  100  and GOP length are arbitrary and may be set by the system designer to suit the needs of a given application. It should be noted in  FIG. 1  that the B picture  130  can not be coded until the following P picture  120  has itself been coded. Furthermore this B picture  130  cannot be decoded until the following P picture  120  has been received and decoded. It is therefore common practice that the natural order of the pictures is changed in transmission in order to send the independent reference P pictures  120  before the dependent B pictures  130 . The natural order is restored at the decoder prior to display. 
         [0011]    In video systems deployed in broadcasting (and most other professional applications), a two dimensional image of a scene is usually scanned in a raster fashion from top left to bottom right, in a series of so-called horizontal lines and then each scan is repeated regularly to produce a sequence of pictures. The resolution or sharpness of the picture is determined by the number of picture elements or pixels allocated to the scan. The shape of the picture, its aspect ratio, determines the relationship between the number of horizontal and vertical pixels. In most digital video systems (especially broadcast) these numbers are standardised. 
         [0012]    It is typical of television pictures that their representation takes one of two forms. Either the individual picture scans are completed using only one pass of the image, or they are done in two parts, where half the scan is done in a first pass, where only the odd numbered horizontal lines are taken, and the second half is done a second pass, where the remaining even numbered lines are taken. The former scan is called Progressive or Sequential scan, and the latter is called an Interlaced scan. 
         [0013]    The first pass of the interlaced scan produces the so-called Top Field and the second pass the Bottom Field. The two fields together cover the same number of pixels as the complete Progressive scan and the complete picture is called a Frame or Picture. 
         [0014]    The various picture formats used in the industry are denoted by a convention that gives the number of horizontal lines forming the picture, followed by the letter, I or P, to define whether an Interlaced or Progressive format is used, for example 1080i=1080 horizontal lines in Interlaced scan mode, whilst 720p=720 horizontal lines in Progressive scan mode, etc. 
         [0015]    It is clear that any movement in the picture during the Interlace scan will result in a degree of dislocation between the pixels of each Field, and that the degree of dislocation will be more severe the greater the speed of motion. This dislocation can cause a significant loss of efficiency in the compression of moving pictures and so it is better to code rapidly moving picture sequences Field by Field. All currently used video compression methods recognise this issue and allow both Field and Frame modes to be chosen using a Picture Adaptive Field/Frame (PAFF) method as the picture behaviour demands. 
         [0016]    The ITU-T H.264 (MPEG 4 part 10) standard is used widely in the most recent commercial video compression products, and includes among its features the use of GOPs and a Field/Frame mode. In particular the coding of both P and B pictures in the GOP uses Inter-Field or Frame predictive methods. In order to extract the best performance from the method, it divides each complete picture  200 , either a Frame or a Field, into a large number of contiguous, rectilinear blocks of pixels as illustrated by  FIG. 2 . The most significant of these blocks is a square group of pixels called a Macroblock (MB)  210  that is always 16×16 luminance pixels is size. All the major analytical processing elements are performed on the luminance signal with the results being applied to both Luminance and Chrominance. The predictive coding process operates primarily at MB level and the coding of a given MB  210  in a given picture is performed using a prediction from a block or blocks within another picture  200  or pictures in the GOP  100  used as references, and which have already been coded. 
         [0017]    However, the H.264 Inter prediction method allows not only whole MBs  210  to be predicted from a number of reference pictures, but it also allows various sub-divisions or Partitions of MBs to be predicted (some of which are known as Sub-Macroblocks-SMB—rather than Partitions). 
         [0018]    For example, as illustrated by  FIGS. 3(   a )-( d ), in addition to the whole MB option  210 , there are: two partitions 8 pixels horizontally×16 pixels vertically  211 ; two partitions each 16 pixels horizontally×8 pixels vertically  212 ; and four partitions 8 pixels horizontally×8 pixels vertically  213  can be selected. Each may have a MV assigned. 
         [0019]    It is also possible (in H.264), for each MB to be sub-divided to form SMBs of 8×8 pixels that may also be Partitioned as illustrated by  FIGS. 3  ( e )-( h ). The options are that SMBs may each be treated as: a whole SMB  214 ; or partitioned into 4 pixels×8 pixels  215 ; two 8 pixels×4 pixels  216 ; or four 4 pixels×4 pixels blocks  217 . In a given MB the SMB partitions may be different in each SMB. 
         [0020]      FIGS. 3  ( a )-( h ) are illustrations of all possible sub-divisions of the MB  210  and show the labelling convention to identify each partition. This added sophistication compared to MPEG-2, for example, contributes to the superior performance of the H.264 compression standard. In the particular case of encoding a B Field/Frame the reference pictures may be from previous pictures in display order—so called reference list0 pictures—or from later pictures in display order—reference list1. 
         [0021]    Where significant amounts of motion occur, good prediction performance can be obtained by compensating for that motion by seeking to find blocks of pixels in selected reference pictures  430  that match a given block in the picture currently being coded  420  (i.e. the picture of interest). The amount of movement for each MB between successive pictures is detected and measured using a searching process called Motion Estimation (ME) and is expressed as a Motion Vector (MV)  440 . The result is illustrated in  FIG. 4 , where the region of the picture  410  over which a search is made is also identified. 
         [0022]    The search area is symmetrically arranged around the centre of the MB. The MV, that is the position of the best match for the MB, is expressed as the number of pixels vertically and horizontally from the reference position to the MB. Whilst the MV properties are defined in current video compression standards, the ME process is not and video compression product manufacturers are free to devise and implement their own methods. The MV is used in the encoding process, but is also conveyed to the decoder to enable that decoder to identify the correct reference blocks to be used in reconstructing each MB in the picture. Motion search methods are commonly used to identify a number of best match blocks, or candidates, from a single reference picture or from several of them. These candidates can be combined in list0/list1 pairs to produce Bi-predicted candidates. Furthermore 16×16 pixel MBs  210 , and 8×8 pixel partitions  214  may also be predicted using the so-called Direct Mode. 
         [0023]    As a result of all these options there may be several Inter prediction candidates for each MB and each Partition that must be compared to find the best, most efficient coding. This flexibility in the number of choices available improves the performance of the method, but at the expense of the additional processing resources required to evaluate each of the coding options. Each assessment must be completed within the duration period of the MB. The computing power and speed to do this are challenging, and so an efficient practical method of achieving the result is extremely desirable. For example, in a high definition encoder working on a 1920×1080 pixel picture format (1080p), where a typical Frame period is 33.3 milliseconds (at the worst case scenario of 60 Hz display rate) there are 120×68=8160 MBs, each MB therefore having to be completely coded in less than 4 microseconds. 
         [0024]    To achieve efficient and accurate video encoding the comparison of the candidates ideally takes account of how good the quality of the output image will be, and also how many bits will be taken to encode the candidate. The Rate-Distortion Optimization technique solves this problem by taking into account both a video quality metric, measuring the Distortion as the deviation from the source material, and the bit cost for each possible decision outcome. All current commercial video compression products and methods employ some form of RDO in their implementation. 
         [0025]    The most commonly used RDO process is expressed in the following equation: 
         [0000]      RDO Result=λ R+D  
 
         [0000]    where “RDO Result” is a measure of the quality of encoding, λ is the Lagrangian multiplier, R is a measure of the Bit Rate, based on a bit cost estimate, and D is a measure of the picture Distortion value based on an estimate of the deviation of the coded image from the original. 
         [0026]    The bit cost estimate R is comprised of three main components representing the contributions to the total bit cost. These are: 
         [0000]    (a) the Motion Vector Differences (MVD) contribution R MV ;
 
(b) the coded transform coefficients or residuals contribution, R R ; and
 
(c) the contribution from the other syntax elements of the macroblock layer syntax R O .
 
         [0027]    Once assembled the complete stream of coded data is passed through an Entropy coding stage that uses complex statistical analysis to further reduce the bit rate. A thorough calculation of the bit rate cost would ideally include the entropy encoding stage, but it is very complex to do so, and is hence not practical. 
         [0028]    To perform a thorough and complete RDO assessment of a High Definition (HD) picture over a large area out of each of a number of reference pictures, for each MB and possible MB partition, requires considerable computational resources and is currently impractical despite being the theoretically desirable method. Practical solutions are therefore required that offer high performance with computational resources that are affordable. It has been found that dedicated hardware resources can offer the best solution to this problem, by allowing the most processing steps to be carried out per unit time, and hence evaluation of more options to be achieved within a given clocking rate. The use of general purpose computing resources or DSP devices that run software solutions is feasible, but they do not provide the benefits of dedicated solutions. 
         [0029]    It is desirable to address the way in which MV estimates are calculated by assuring the most efficient use of given hardware resources, so that the available MV options can be assessed optimally during ME. 
         [0030]    Both H.264 as a standard compression method, and RDO as a means of optimising performance, are known. However, there are many aspects of the implementation of a particular compression standard for an encoder that are not defined by the standard and are hence left to the designer of a particular implementation. These include the particular method of motion vector selection used (i.e. the motion search or Motion Estimation (ME) method). Motion estimation can be designed to include a simple form of RDO by including both a distortion term normally calculated using sum of absolute differences (SAD) of pixel values, and a rate cost term normally calculated from the size of the motion vectors difference (MVD) from the pseudo motion vector predictor (MVP), in calculating the score used for comparing best match positions. 
         [0031]    A high performance 1080i H.264 encoder may use, for example, four reference fields and 16×8, 8×16 and 8×8 partitions, with a search range of +/−120 by +/−56 pixels. For a real-time broadcast video encoder of this type generally only dedicated hardware designs based on high speed Field Programmable Gate Array (FPGA) or Application Specific Integrated Circuit (ASIC) devices are capable of the required processing. 
         [0032]    There are many different possible motion search methods, and there are many different methods in use within H.264 software and hardware video encoders. Examples of currently known Motion Search methods include: 
         [0033]    Exhaustive methods, that search every possible position within the search area in every reference picture. If the search range covers the whole reference picture then this results in the best possible match for every picture, giving the best video encoding performance. For non-Real Time applications or those deployed for low resolution pictures this method is sometimes a practical option. However, for a real-time 1080i broadcast quality High Definition encoder exhaustively searching even a moderate search range results in more computation required than is practical, and so some compromises have to be made that require adaptation of the exhaustive search. 
         [0034]    Sub-sampled Hierarchical methods. The methods have several stages:
       The first stage searches every possible position within the search range using a sub-sampled version of either the Source picture, each reference picture or both. Sub-sampling significantly decreases the number of pixels involved in computation and so eases implementation problems. Sub-sampling by a factor of 2 in each axis results in a sixteen (i.e. 2 4 ) fold decrease in computation load, and sub-sampling by a factor of 4 in each axis provides a 256 (i.e. 4 4 ) fold decrease.   Later stages use the full image to refine the search around the best result from the first stage.       
 
         [0037]    While the sub-sampling method of computation makes real-time encoding feasible, sub-sampling the image decreases the accuracy of pixel block matches. The greater the degree of sub-sampling, the greater the inherent uncertainty in the search results and so sub-sampling can result in rapidly diminishing returns. For some demanding video sequences, and for HDTV applications, sub-sampling leads to significant false matching to real motion in the first stage, which cannot be corrected in the later stages. This leads to sub-optimal results, which reduces video encoding performance. 
         [0038]    A state of the art method currently used within the JVT H.264 reference software is called the un-symmetrical cross multi-hexagonal search method (UMHexagonS). This method has been shown to perform well for HD video, giving well-matched motion vectors at a reasonable computational cost. 
         [0039]    The hexagonal method has a number of stages: 
         [0000]    1. An initial search to find the best candidate out of the [0,0] position, the 4 neighbour MB&#39;s MVs positions and a MVP position. Only the exact position is searched each time.
 
2. A 2-pixel spaced cross search across the search range centred at the best result from stage 1, i.e. intersecting vertical and horizontal lines of positions.
 
3. A small exhaustive search over a square area centred at the best result from stage 2.
 
4. A sparse search in 16-point hexagonal patterns radiating out over the search range centred at the best result from stage 1, i.e. a set of concentric “circles”, each “circle” being a set of 16 points along the sides of a hexagon.
 
5. A small 6-point hexagonal search centred around the best result so far.
 
6. Repeat stage 5 (up to a maximum of 5 times) until convergence on one position.
 
         [0040]    Despite its apparent performance advantages, this method is difficult to implement efficiently in practical hardware (FPGA or ASIC) for the following reasons:
       The method requires data to be fetched for a complex pattern of positions (the pattern is complex because the hexagonal shape does not lie conveniently on a rectilinear grid of pixels and because the centre of the hexagonal shape is not known in advance). Data fetched for 1 position cannot easily be used for another neighbouring position due to the hexagonal patterns and variations in the method and so the fetching process is not efficient.   The multiple sequential stages, which require different levels of computation, make the method difficult to implement efficiently in a highly parallel design.   The time taken to compute the method for one MB is not constant due to the variable number of stage 6 iterations (i.e. repeats of stage 5, depending on the rate of convergence). To ensure that the field/frame time is not exceeded, but is fully utilized for all picture content, is complex.   If MB partitions are searched independently from the whole MB, the best positions for them will diverge from the best position for the MB, hence separate resources must be used for the searching each of the partitions, which increases the design complexity, hence size on die, and costs to implement.       
 
         [0045]    Accordingly, the following invention describes a motion search method and apparatus that offer better performance than currently employed methods, providing a set of MV candidates that can be used in later stages of encoding. 
       SUMMARY 
       [0046]    Embodiments of the present invention provide a method of Motion Estimation in digital video, comprising carrying out an initial search to determine an initial search best candidate motion vector for a source macroblock. A main search is carried out to determine a main search best candidate motion vector for a source macroblock. A prediction search is carried out, centred on the best candidate from the initial search, to determine a prediction search best candidate motion vector for a source macroblock. A first extended search is carried out, centred on the best result from the initial, main or prediction searches, to determine a first extended search best candidate motion vector for a source macroblock. A second extended search is carried out, centred on the best result from the initial, main, prediction or first extended searches, to determine a second extended search best candidate motion vector for a source macroblock. The second extended search best candidate motion vector is provided to a subsequent video encoding process. 
         [0047]    Optionally, the initial search comprises an exhaustive search of a quadrilateral array of partition positions, and is carried out at a plurality of starting search positions. A typical implementation may use 6 starting positions. 
         [0048]    Optionally, a one of the starting search positions for the initial search is based upon a pseudo motion vector predictor derived from motion vectors of macroblocks neighbouring the source macroblock. 
         [0049]    Optionally, the neighbouring macroblocks are labelled A to D according to the compression standard in use, and the pseudo motion vector predictor is derived according to the following rules: if motion vectors for the neighbouring macroblocks A, B and C are available, then the pseudo motion vector predictor is the median of said three neighbouring macroblock motion vectors; or if the motion vector for macroblock C is not available then use the motion vector of macroblock D instead, such that the pseudo motion vector predictor is the median of the A, B and D neighbouring macroblock motion vectors; or if the motion vector for macroblock A is not available, then use the zero motion vector instead, such that the pseudo motion vector predictor is the median of a zero motion vector ([0,0]), B and C neighbouring macroblock motion vectors; or if none of the motion vectors for the neighbouring macroblocks from a row above the source macroblock, then use the motion vector for macroblock A only. 
         [0050]    Optionally, the main search comprises an at least a four pixel spaced apart quadrilateral grid based search of a whole selected search range. 
         [0051]    Optionally, the main search is a sparse grid search centred at the current macroblock position, as opposed to centred at a position resultant from the initial search. This means that the main search may be carried out before the initial search in some implementations. 
         [0052]    Optionally, the main search comprises an eight pixel spaced apart quadrilateral grid based search. Such a spacing provides good performance at relatively low execution clock cycle requirements. 
         [0053]    Optionally, the prediction search comprises an exhaustive search of a quadrilateral array of partition positions, centred on a position of the best candidate motion vector from the first initial search. 
         [0054]    Optionally, the first extended search comprises an at least two pixel spaced apart search of a quadrilateral array of partition positions. 
         [0055]    Optionally, the second extended search comprises an exhaustive search of a quadrilateral array of positions, preferably centred around the best result from all the previous search stages. 
         [0056]    Optionally, the prediction search is square, and the remaining searches are rectangular. 
         [0057]    Optionally, the search range used for a particular search step comprises between 16 by 8 pixels and 4 by 2 pixels for the initial search, between +/−240 by +/−112 pixels and +/−60 by +/−28 pixels for the main search, between 16 by 16 pixels and 4 by 4 pixels for the prediction search, between 64 by 32 pixels and 16 by 8 pixels for the first extended search and between 32 by 16 pixels and 8 by 4 pixels for the second extended search. 
         [0058]    Embodiments of the present invention also provide a Motion estimation apparatus comprising a search control block, and a difference core block, wherein said search control apparatus is adapted to carry out any of the above described methods. 
         [0059]    Optionally, the Motion estimation apparatus comprises a portion of a video encoder. 
         [0060]    Optionally, the apparatus is pipelined, and the search control block controls the motion estimation method such that the pipeline is always full. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0061]    An efficient method of Motion Estimation in hardware for digital video will now be described, by way of example only, with reference to the accompanying drawings in which: 
           [0062]      FIG. 1  shows an exemplary Group of Pictures structure showing prediction relationships; 
           [0063]      FIG. 2  shows how a complete picture of a digital video sequence is divided into macroblocks; 
           [0064]      FIG. 3  shows the different partition types for macroblocks and sub-macroblocks allowed by the H.264 compression standard; 
           [0065]      FIG. 4  shows an exemplary search area, relative to a complete picture, for a given source macroblock, with a best match position and resultant Motion Vector; 
           [0066]      FIG. 5  shows a high level flow diagram of a method of motion estimation according to an embodiment of the present invention; 
           [0067]      FIG. 6  shows neighbouring macroblocks whose Motion Vector estimates are used in the initial stage of the method of motion estimation according to an embodiment of the present invention; 
           [0068]      FIG. 7  shows the initial search stage of the method of motion estimation according to an embodiment of the present invention; 
           [0069]      FIG. 8  shows the main search stage of the method of motion estimation according to an embodiment of the present invention; 
           [0070]      FIG. 9  shows the prediction search stage of the method of motion estimation according to an embodiment of the present invention; 
           [0071]      FIG. 10  shows the extended search stage A of the method of motion estimation according to an embodiment of the present invention; 
           [0072]      FIG. 11  shows the extended search stage B of the method of motion estimation according to an embodiment of the present invention; 
           [0073]      FIG. 12  shows example search regions for the initial stage of  FIG. 7 , according to the method of motion estimation according to an embodiment of the present invention; 
           [0074]      FIG. 13  shows the search region for the main stage of  FIG. 8 , according to the method of motion estimation according to an embodiment of the present invention; 
           [0075]      FIG. 14  shows an example search region for the prediction stage of  FIG. 9 , according to the method of motion estimation according to an embodiment of the present invention; 
           [0076]      FIG. 15  shows example search regions for the extended search A stage of  FIG. 10 , according to the method of motion estimation according to an embodiment of the present invention; 
           [0077]      FIG. 16  shows example search regions for the extended search B stage of  FIG. 11 , according to the method of motion estimation according to an embodiment of the present invention; 
           [0078]      FIG. 17  shows all the search regions of  FIGS. 12 to 16  superimposed together; 
           [0079]      FIG. 18  shows a block schematic diagram of hardware adapted to carry out the method of motion estimation according to an embodiment of the present invention; 
           [0080]      FIG. 19  shows an exemplary pipeline, showing how an embodiment of the invention overcomes pipeline delays. 
       
    
    
     DETAILED DESCRIPTION 
       [0081]    An embodiment of the invention will now be described with reference to the accompanying drawings in which the same or similar parts or steps have been given the same or similar reference numerals. 
         [0082]    The invention is a motion search method of comparable or better performance than the existing solutions, but which can also be efficiently implemented in hardware (FPGA or ASIC). Its purpose is to choose a number of integer pixel candidate MVs for the current MB and its partitions. These candidates are then refined to sub-pixel MVs and presented as possible coding options to the MB encoding process. 
         [0083]    The method has the following stages, which are illustrated in  FIG. 5 : 
         [0000]    1. Initial search  510 . A 1 pixel spaced (i.e. exhaustive) search around the [0,0] position, the 4 neighbour MB prediction positions and the Motion Vector Predictor (MVP) position.
 
2. Main search  520 . A 4 pixel (or more) spaced search in a sparse rectangular grid array covering the whole search range. Note this search is not dependent upon the result from the Initial search.
 
3. Prediction search  530 . A larger 1 pixel spaced search centred on the best result of stage 1.
 
4. Extended Search A  540 . For the whole MB and each partition independently, a 2 pixel spaced search centred on the best result so far out of stages 1 to 3. The complete set of these searches is done before progressing to the next stage.
 
5. Extended Search B  550 . For the whole MB and each partition independently, a 1 pixel spaced search centred on the best result so far out of stages 1 to 4. The results of this search will be the results of the ME for the current MB and its partitions.
 
         [0084]    Stages 1 to 3 can be carried out concurrently for each of the MB and sub-MB partition sizes, whereas Stages 4 and 5 are carried out for MB first, then partition0 16×8, then partition1 16×8, etc (i.e. in decreasing partition size). Note that not all partition sizes are used in every implementation; hence some may be skipped (see below for more details). 
         [0085]    These stages are described in more detail below. 
         [0086]    The following are definitions as per the H.264 video compression standard:
       source MB  420 —the current MB being encoded, i.e. the MB that is being tested at each position.   source MB partitions—possible partitions of the current MB being encoded.   MB A  451 —the source MB to the left of the one being encoded—i.e. the previous MB to be encoded (see  FIG. 6 ).   MB B  452 —the source MB above the one being encoded (see  FIG. 6 ).   MB C  453 —the source MB diagonally above and to the right of the one being encoded (see  FIG. 6 ).   MB D  454 —the source MB diagonally above and to the left of the one being encoded (see  FIG. 6 ).   reference pictures—previously encoded pictures kept as reference, against which the best match for the source MB we will attempt to find.       
 
         [0094]    The pseudo Motion Vector Predictor (MVP) of stage 1(f) (see below) is calculated from the MVs of the neighbours of the same reference as follows: 
         [0000]    1. If MB A, MB B and MB C are available, then for each component the MVP is equal to the median of the 3 MVs:  461   462   463 .
 
2. If MB C is not available, then the MV for MB D is used instead  464 .
 
3. If MB A is not available, then [0,0] is taken to be its MV—i.e. a zero MV.
 
4. If none of the neighbours from the row above are available then the MV value for MB A is used  461 .
 
         [0095]    This pseudo MVP portion of the method above is based on the H.264 definition of the calculation of the real MVP (see H.264 section 8.4.1.3.1). In most implementations, the real MVP cannot be calculated at this time, as the decision on how to encode the neighbours has not been taken. The pseudo MVP assumes that the neighbours are encoded using motion compensation from the same reference picture. 
         [0096]    The stages identified above will now be described in greater detail as follows: 
       1. Initial Search. 
       [0097]    This first stage is intended to review the MV results found by the estimation of previous MBs in the vicinity of the current MB with a view to finding suitable MV estimates that can be used for the source MB. That is, the pixels of a MB in the current picture are the source data for a comparison with pixels taken from the regions in the reference pictures around those previously estimated MVs. An exhaustive search is performed over a 1 pixel  701  grid  700  for an 8×4 array of positions (see  FIG. 7 , from a first MB position  710  to a last MB position  720 ) around 6 initial positions located at the following places:
       a. The [0,0] position. The majority of blocks in a picture are often stationary so that a good prediction for the MV of the source MB is the MV for the MB in the same place in the reference picture, i.e. the [0,0] Motion Vector. A search around this point could be successful in the presence of small amounts of motion or due to the effect of noise.   b. The position predicted by using the MV found for the MB A neighbour  461  within the reference picture currently being searched (see  FIG. 6 ). There is a high probability that the motion of a block will be closely matched to that of a neighbouring block.   c. The position predicted by using the MV found for the MB B neighbour  462  within the reference picture currently being searched (see  FIG. 6 ). There is a high probability that the motion of a block will be closely matched to that of a neighbouring block.   d. The position predicted by using the MV found for the MB C neighbour  463  within the reference picture currently being searched (see  FIG. 6 ). There is a high probability that the motion of a block will be closely matched to that of a neighbouring block.   e. The position predicted by using the MV found for the MB D neighbour  464  within the reference picture currently being searched (see  FIG. 6 ). There is a high probability that the motion of a block will be closely matched to that of a neighbouring block.   f. The position predicted by using a pseudo Motion Vector Predictor based on the real MVP as defined above. The pseudo MVP is a derived MV based on a combination of the MVs of adjacent MBs. It can be the case that the motion of a block along one axis may be close to that of one of its neighbours, but the motion in the other axis may be close to that of another neighbour. The pseudo MVP is calculated as the median MV of the neighbouring MBs done separately for each axis. If a MB/Partition is coded with a MV equal to the MVP then it will have zero MVD cost, making it an efficient coding choice.       
 
       2. Main Search. 
       [0104]    This stage covers the whole selected search range (+/−120 by +/−56), but searches a rectangular grid  800  spaced at 4 pixel intervals  801 , centred at the current source MB position, as illustrated by  FIG. 8 . The source MB  420  is compared to every possible MB position on the grid, to arrive at a best match  430 , and associated MV  440 . A minority of video sequences have fast motion where MVs between fields/frames will be large. This stage is designed to have a good probability of picking up these large MVs  440  without the high computational cost of searching all positions with single pixel precision. Assuming the object(s) in motion are of a reasonable size (greater than 8×8 pixels) and of fairly consistent texture then at least one of the positions in this search should give a reasonable match. The extended search stages (see stages 4 &amp; 5 below) should then refine this initial MV match down to the nearest pixel. This search is extensive and takes up a considerable part of the time available to calculate results. 
       3. Prediction Search. 
       [0105]    This stage is an exhaustive search  900 , i.e. to 1 pixel precision  701 , for an 8×8 array of positions (see  FIG. 9 , from a first MB position  910  to a last MB position  920 ) centred on the best result of stage 1. It is assumed that the initial search has correctly identified that the motion is most closely correlated with one of the 6 initial positions, but also that the relatively small 8×4 initial search did not cover the best match position. So this stage will extend the area around the best position from that initial search to give a greater chance of discovering the actual best match position. As this stage depends upon the initial search results, it does not directly follow the initial search stage to allow for pipeline delay in the implementation, without unused cycles between stages as illustrated in  FIG. 19  and described in more detail below. 
       4. Extended Search A. 
       [0106]    The best match positions and costs for the whole MB and each of its partitions separately were identified in stages 2 and 3 above and the best of them selected as the optimum candidate. This first extended stage is centred on that best result so far and is run independently for each partition. A 32×16 pixel area  1000  is searched over a grid array spaced at 2 pixels  1002 , from a first MB position  1010  to a last MB position  1020 , as illustrated by  FIG. 10 . This stage is designed to refine the MV towards the best possible match without the computational cost of searching all the positions within the 32×16 pixel area. 
       5. Extended Search B. 
       [0107]    This stage is run for each partition independently for the same reason as extended search A. A 16×8 pixel area  1100 , centred on the best result so far for the partition, is searched exhaustively (i.e. at 1 pixel spacing  701 ), from a first MB position  1110  to a last MB position  1120 , as illustrated in  FIG. 11 . This stage is designed to refine the MV down to the best possible match MV with single pixel precision. 
         [0108]    The foregoing has provided a general overview of the proposed motion estimation method. The aforementioned search window sizes are all compromises between speed of comparison vs accuracy, and hence other sizes may be used. However, the aforementioned search window sizes have been found by experimentation to produce very acceptable results, whilst still being fully executable within the frame rate of a 60 Hz HDTV signal. The following provides more details on an exemplary specific implementation for a 1080i video signal. 
       1080i Implementation Example 
       [0109]      FIGS. 12 to 16  illustrate all the searches, stage by stage, for clarity and  FIG. 17  superimposes them all. They are all example figures based on coding a 1080i picture sequence. The large number of searches provided by the present invention has made it necessary to spread the searches widely over the search area for the purposes of illustrative clarity. In practice, the searches are more likely to be clustered closely together. In all of  FIGS. 12 to 17 , the results from the different stages, reference pictures and MB Partitions are identified by the form and legend of each rectangular block. 
         [0000]    1.  FIG. 12  shows the 6 search regions for the Initial search stage (items 1 (a) to 1(f) above).
 
2.  FIG. 13  shows the search regions for the Main Search stage (Item 2 above) where all positions on a 4 pixel spaced grid are searched within the search area. The blocks  1310  shown outlined with dotted lines and with labels such as 2.x.y each contain all 16 of the search positions that are conducted in one clock cycle. A sequential search through all the blocks will result in a unique best match for the whole search and this produces a MV that points to somewhere in the search region but only to a precision of the nearest 4 pixels. This search is the most intensive of all to carry out.
 
3.  FIG. 14  shows the prediction search stage where the best result from the initial search stage is used as the centre of another search.
 
4.  FIG. 15  shows the search regions for extended search A. The nine search regions for this stage are shown and each is labelled with its partition size and index.
 
5.  FIG. 6  shows the search regions for extended search B. The nine search regions for this stage are shown and each is labelled with its partition size and index.
 
         [0110]      FIG. 17  shows all the regions of all the search stages superimposed. 
         [0111]    Once one complete reference picture has been searched according to the above described method, the set of MV results is stored and the process moves on to provide MVs for other reference pictures. What results from these searches is a set of MVs per reference picture that is passed on to the sub-pixel refinement and encoding process. 
       Implementation Details 
       [0112]    The above described method can be implemented in hardware in the form shown in  FIG. 18 . This design can be used for both 1080i and 720p standard picture configurations, 1080p configuration or all partitions configuration. The grey shaded Find Best blocks for 4×4, 4×8 and 8×4 (1834b) are only used in the ‘all partitions configuration’ (see more details below). 
         [0113]    To achieve the throughput required, 16 positions are searched per clock cycle. The 16 positions are labelled A 0  to D 3 . 
         [0114]    The major processing blocks of the Motion Search hardware  1800  in  FIG. 18  are: 
         [0000]    1. Reference Alignment  1840 . Within its cache  1845  this block stores, for each of the four reference pictures, an area which is at least the size of the search range around the current MB. In response to the control signals from the search control block  1860  it produces the reference data (16×16 pixels) for all the 16 positions being searched in each clock cycle.
 
2. Search Control  1860 . This block is the main state machine, which runs the search method and controls the other blocks, via control signal paths  1865  and  1866 . It takes the best positions  1835  calculated by the Find Best portions  1834  of the difference core  1830  (see below), and provides the results  1870  to a refinement stage.
 
3. Difference Core  1830 . This block calculates the difference values, using difference blocks  1831 , between the source data  1810  and reference data  1820  (as passed from the reference cache  1845 , in the form of reference data A 0 -D 3   1850 ) for the 16 positions searched each clock cycle. The differences are calculated initially on a 4×4 pixel block basis, and the appropriate blocks are hierarchically summed to give the difference values for all possible partitions. For each partition in each of the 16 search positions, a rate estimate is calculated from the MVD to the pseudo MVP. This allows a simplified use of the RDO equation (Cost=λR+D), to give a score for each partition at each position. These values are used to find the best position during the search stage, for each partition.
 
1080i/720p Configuration
 
         [0115]    These designs are based on searching a range of +/−120 by +/−56 pixels in four reference pictures for all MBs within a 1080i field or 720p frame. The higher the number of reference pictures (fields or frames) searched, the better the chances of finding the best match in all the possible references. Limitations on the available processing time means there is a limit on the number of pictures that can be practically used, but the number of references is also limited by the level setting as described in H.264 Appendix A. It is assumed that only the partition sizes 16×16, 16×8, 8×16 and 8×8 are used for these cases. 
         [0116]    The search control block runs the search method for a pair of reference pictures together to allow pipelining (see  FIG. 19 ) as follows: 
         [0000]    1. Initial search Reference 0=12 cycles. As an 8×4 area is searched and a 4×4 area is searched per cycle this stage takes 2 cycles for each of the 6 centre positions searched.
 
2. Main search Reference 0=105 cycles. As a 240×112 area is searched and a 16×16 area is searched per cycle this stage takes 15×7 cycles.
 
3. Prediction search Reference 0=4 cycles. As an 8×8 area is searched and a 4×4 area is searched per cycle this stage takes 4 cycles. This stage is centred on the best position from the initial search.
 
4. Initial search Reference 1=12 cycles. As above.
 
5. Main search Reference 1=105 cycles. As above.
 
6. Prediction search Reference 1=4 cycles. As above.
 
7. Extended Search A Reference 0=32 cycles.
       a. 16×16 MB=8 cycles. As a 32×16 area is searched and an 8×8 area is searched per cycle this stage takes 8 cycles. This stage is centred on the best position for the 16×16 MB so far.   b. 16×8 partitions=[2×] 4 cycles. This stage is performed separately for each 16×8 partition. As a 32×16 area is searched and two 8×8 areas are searched per cycle this stage takes 4 cycles per partition. This stage is centred on the best position for the 16×8 partition so far.   c. 8×16 partitions=[2×] 4 cycles. This stage is performed separately for each 8×16 partition. As a 32×16 area is searched and two 8×8 areas are searched per cycle this stage takes 4 cycles per partition. This stage is centred on the best position for the 8×16 partition so far.   d. 8×8 partitions=[4×] 2 cycles. This stage is performed separately for each 8×8 partition. As a 32×16 area is searched and four 8×8 areas are searched per cycle this stage takes 2 cycles per partition. This stage is centred on the best position for the 8×8 partition so far.
 
8. Extended Search B Reference 0=32 cycles.
   e. 16×16 MB=8 cycles. As a 16×8 area is searched and a 4×4 area is searched per cycle this stage takes 8 cycles. This stage is centred on the best position for the 16×16 MB so far.   f. 16×8 partitions=[2×] 4 cycles. This stage is performed separately for each 16×8 partition. As a 16×8 area is searched and two 4×4 areas are searched per cycle this stage takes 4 cycles per partition. This stage is centred on the best position for the 16×8 partition so far.   g. 8×16 partitions=[2×] 4 cycles. This stage is performed separately for each 8×16 partition. As a 16×8 area is searched and two 4×4 areas are searched per cycle this stage takes 4 cycles per partition. This stage is centred on the best position for the 8×16 partition so far.   h. 8×8 partitions=[4×] 2 cycles. This stage is performed separately for each 8×8 partition. As a 16×8 area is searched and four 4×4 areas are searched per cycle this stage takes 2 cycles per partition. This stage is centred on the best position for the 8×8 partition so far.
 
9. Extended Search A Reference 1=32 cycles. As above.
 
10. Extended Search B Reference 1=32 cycles. As above.
       
 
         [0125]    The total cycles taken to run the whole method for two reference pictures is: 
         [0000]      2×[12+4+105+32+32]32]=378.
 
         [0126]    For four reference pictures it is 756 cycles. Therefore, an implementation of the method running at 189 MHz would be sufficient to search a MB within a 4 μs period, which is the requirement for encoding 1080i or 720p in real-time. 
         [0127]    It has been shown that increasing the vertical spacing of the grid for the main search stage to 8 (as opposed to 4 discussed above) gives very little performance degradation. As increasing the vertical spacing decreases the number of cycles taken for this main stage to execute (i.e. down to [15×4]=60 cycles), this in turn allows a reduction in the required clock speed down to 140 MHz. 
       1080p Configuration 
       [0128]    A similar implementation can be used for encoding 1080p frames. The major difference is that only two reference pictures are searched for all the MBs within a 1080p frame, given that each MB must now be calculated within 2 μs (since the progressive picture has twice as many MBs to encode per unit time). 
         [0129]    Again to achieve this, 16 positions are searched per clock cycle and it is assumed that the partition sizes 16×16, 16×8, 8×16 and 8×8 only are used. 
         [0130]    In this case, the total cycles taken to run the whole algorithm for two reference pictures is: 
         [0000]      2×[12+4+105+32+32]=378.
 
         [0131]    Therefore an implementation of the algorithm running at 189 MHz would be sufficient to search a MB within the 2 μs period, which is the requirement for encoding 1080p in real-time. 
         [0132]    Again increasing the vertical spacing of the grid for the main search stage to 8 gives very little performance degradation and allows a reduction in required clock speed to 140 MHz. 
       All Partition Sizes Configuration 
       [0133]    The method and apparatus can be run in a configuration where all the partition sizes 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 and 4×4 are used. Partitions sizes below 8×8 have not been shown to give any video encoding performance gain for HD video so are not currently included in the 1080i/720p or 1080p configurations, however they have been shown to give a performance gain for SD video. 
         [0134]    An all partition configuration includes the grey blocks in  FIG. 19 . 
         [0135]    The search control block runs the search method for a pair of reference pictures as follows: 
         [0000]    1. Initial search Reference 0=12 cycles. As for 1080i configuration.
 
2. Main search Reference 0=105 cycles. As for 1080i configuration.
 
3. Prediction search Reference 0=4 cycles. As for 1080i configuration.
 
4. Initial search Reference 1=12 cycles. As for 1080i configuration.
 
5. Main search Reference 1=105 cycles. As for 1080i configuration.
 
6. Prediction search Reference 1=4 cycles. As for 1080i configuration.
 
7. Extended Search A Reference 0=96 cycles.
       a. 16×16 MB=8 cycles. As a 32×16 area is searched and an 8×8 area is searched per cycle this stage takes 8 cycles. This stage is centred on the best position for the 16×16 MB so far.   b. 16×8 partitions=[2×] 4 cycles. This stage is performed separately for each 16×8 partition. As a 32×16 area is searched and two 8×8 areas are searched per cycle this stage takes 4 cycles per partition. This stage is centred on the best position for the 16×8 partition so far.   c. 8×16 partitions=[2×] 4 cycles. This stage is performed separately for each 8×16 partition. As a 32×16 area is searched and two 8×8 areas are searched per cycle this stage takes 4 cycles per partition. This stage is centred on the best position for the 8×16 partition so far.   d. 8×8 partitions=[4×] 2 cycles. This stage is performed separately for each 8×8 partition. As a 32×16 area is searched and four 8×8 areas are searched per cycle this stage takes 2 cycles per partition. This stage is centred on the best position for the 8×8 partition so far.   e. 8×4 partitions=[8×] 2 cycles. This stage is performed separately for each 8×8 partition. As a 32×16 area is searched and four 8×8 areas are searched per cycle this stage takes 2 cycles per partition. This stage is centred on the best position for the 8×4 partition so far.   f. 4×8 partitions=[8×] 2 cycles. This stage is performed separately for each 8×8 partition. As a 32×16 area is searched and four 8×8 areas are searched per cycle this stage takes 2 cycles per partition. This stage is centred on the best position for the 4×8 partition so far.   g. 4×4 partitions=[16×] 2 cycles. This stage is performed separately for each 8×8 partition. As a 32×16 area is searched and four 8×8 areas are searched per cycle this stage takes 2 cycles per partition. This stage is centred on the best position for the 4×4 partition so far.
 
8. Extended Search B Reference 0=96 cycles.
   h. 16×16 MB=8 cycles. As an 16×8 area is searched and a 4×4 area is searched per cycle this stage takes 8 cycles. This stage is centred on the best position for the 16×16 MB so far.   i. 16×8 partitions=[2×] 4 cycles. This stage is performed separately for each 16×8 partition. As a 16×8 area is searched and two 4×4 areas are searched per cycle this stage takes 4 cycles per partition. This stage is centred on the best position for the 16×8 partition so far.   j. 8×16 partitions=[2×] 4 cycles. This stage is performed separately for each 8×16 partition. As a 16×8 area is searched and two 4×4 areas are searched per cycle this stage takes 4 cycles per partition. This stage is centred on the best position for the 8×16 partition so far.   k. 8×8 partitions=[4×] 2 cycles. This stage is performed separately for each 8×8 partition. As a 16×8 area is searched and four 4×4 areas are searched per cycle this stage takes 2 cycles per partition. This stage is centred on the best position for the 8×8 partition so far.   l. 8×4 partitions=[8×] 2 cycles. This stage is performed separately for each 8×8 partition. As a 16×8 area is searched and four 4×4 areas are searched per cycle this stage takes 2 cycles per partition. This stage is centred on the best position for the 8×8 partition so far.   m. 4×8 partitions=[8×] 2 cycles. This stage is performed separately for each 8×8 partition. As a 16×8 area is searched and four 4×4 areas are searched per cycle this stage takes 2 cycles per partition. This stage is centred on the best position for the 8×8 partition so far.   n. 4×4 partitions=[16×] 2 cycles. This stage is performed separately for each 8×8 partition. As a 16×8 area is searched and four 4×4 areas are searched per cycle this stage takes 2 cycles per partition. This stage is centred on the best position for the 8×8 partition so far.
 
9. Extended Search A Reference 1=96 cycles. As above.
 
10. Extended Search B Reference 1=96 cycles. As above.
       
 
         [0150]    The total cycles taken to run the whole method for two reference pictures is therefore: 
         [0000]      2×[12+4+105+96+96]=626.
 
         [0151]    For four reference pictures it is double, i.e. 1252 cycles. 
         [0152]    Therefore an implementation of the described method running at 63 MHz would be sufficient to search a MB within a 20 μs period, which is the time allowed to encode a MB in real time at 720×576 Standard Definition video. 
         [0153]    The above described method and apparatus has similar or better performance to other state of the art motion Search methods. 
         [0154]    The method can be implemented efficiently in hardware (FPGA or ASIC) at a relatively low clock speed (e.g. 140 MHz, as discussed above), even for encoding HDTV video in real-time. 
         [0155]    The method allows all the difference blocks to be fully utilised in parallel during the whole MB period, maximising the searching performed for the resources used. Assuming at least two reference pictures, the method can be implemented in a pipelined design, where the method does not need to wait before starting any of the stages for the results of the previous stage. 
         [0156]    Searching positions close together within the reference pictures massively reduces the bandwidth requirement on the reference cache. So although 16 positions (each requiring 16×16 pixels of input reference data) are searched in parallel, all the data can be fetched from within one 4 pixel aligned, 32×32 pixel area. The reduced bandwidth requirement and data alignment allows the reference cache to be implemented in internal RAM. 
         [0157]    The method searches partitions independently from whole MBs without a large increase in processing, as the first stages (1-3) are common. The difference values calculated for partitions are added together to give the differences values for larger partitions and ultimately the whole MB. Accordingly, the resultant Motion Search method and apparatus is much more efficient in its use of the available processing resources, hence more candidates can be processed within the MB period for a given design size and clock speed. 
         [0158]    The method can be applied efficiently for any selection of partition sizes, from no partitions (i.e. only 16×16 MBs), to all possible partitions (i.e. 16×16s MBs down to 4×4s sub-MBs). 
         [0159]    The method can be applied efficiently for 2, 4 or any 2 N  number of reference pictures per MB. 
         [0160]    As mentioned previously, the method may be embodied as a specially programmed, or hardware designed, integrated circuit that operates to carry out the method on reference picture data loaded into the said integrated circuit. The integrated circuit may be formed as part of a general purpose computing device, such as a PC, and the like, or it may be formed as part of a more specialised device, such as a games console, mobile phone, portable computer device or specialist/broadcast hardware video encoder. 
         [0161]    One exemplary hardware embodiment is that of a Field Programmable Gate Array (FPGA) programmed to carry out the described method, located on a daughterboard of a rack mounted video encoder, for use in, for example, a television studio or location video uplink van supporting an in-the-field news team. 
         [0162]    Another exemplary hardware embodiment of the present invention is that of a video encoder comprising an Application Specific Integrated Circuit (ASIC). 
         [0163]    It will be apparent to the skilled person that the exact order and content of the processing order in the method described herein may be altered according to the requirements of a particular set of execution parameters, such as speed of encoding, accuracy, and the like. Accordingly, the claim numbering is not to be construed as a strict limitation on the ability to move steps between claims, and as such portions of dependent claims maybe utilised freely.