Abstract:
A method for block-based motion estimation, the flexible triangle search (FTS) algorithm is provided. The FTS is based on the simplex algorithm for optimization adapted to an integer grid. The proposed algorithm is highly flexible because of its ability to quickly change its search direction and to move toward the target of the search criterion. Motion estimation in a search window is in relation to a reference window. The motion estimation comprises searching. Searching is comprised of the steps of expanding, translating, contracting and reflecting. A system for block-based motion estimation is also provided.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS  
       [0001]     This application claims priority to U.S. provisional patent application Ser. No. 60/604,884, filed 27 Aug. 2004. 
     
    
     FIELD OF THE INVENTION  
       [0002]     The invention relates to a method for estimating motion to promote efficient video compression. More specifically, this invention is a method for estimating motion, using an integer grid and look up tables. A system for implementation of the method is also provided.  
       BACKGROUND OF THE INVENTION  
       [0003]     Video compression standards are used extensively in industrial applications such as video conferencing, video telephony, video surveillance, video streaming, video recording, video editing and digital camera/video capture (in the digital camera market). Motion estimation is one of the key components in several video compression algorithms and standards [1]-[7]. The main purpose of motion estimation is to reduce temporal redundancy between frames in a video sequence.  
         [0004]     These functions are used as part of video compression standards such as, but not limited to, MPEG-1, MPEG-2, H.263, and H.264. Motion estimation functions find blocks that closely match between two different video frames. Once these matching blocks are found, only the differences between those blocks are coded. As a result, fewer bits are needed to store or encode the block information. The more efficient the motion search algorithm, the better the compression that can be achieved. In addition, the quality of the coded video can also be indirectly improved when motion estimation is used. This is because when fewer bits are needed to code a video frame, the remaining bits can be used to improve the coding quality. In other words, two applications with the same bandwidth requirements but different motion estimation algorithms can produce different coded quality. In a typical video compression standard application with a video encoder, motion estimation computations account for approximately 30-50% of required computations by the encoder.  
         [0000]     The Video Compression Process  
         [0005]     The process of encoding video frames is shown in  FIG. 1 . Video frames are divided into three main video types I, P, and B. I, P, and B are the frame types in video compression. I is Intra coded frame and does not require motion estimation. P is Predicted frame. The coding of this frame is done using motion estimation with respect to a previous I or P frame. B is Bidirectional predicted frame. B frames are coded using motion estimation with reference to the previous or next frame in time. While there are differences between encoding video frames, in general, each frame is divided into macroblocks. Discrete Cosine Transform “DCT” and Quantization is applied to each block. The resultant data are then coded using variable length coding.  
         [0006]     DCT is applied to each block as given by the equation  
         F   ⁡     (     u   ,   v     )       =       1   4     ⁢     C   ⁡     (   u   )       ⁢     C   ⁡     (   v   )       ⁢       ∑     m   =   0     7     ⁢       ∑     n   =   0     7     ⁢       f   ⁡     (     m   ,   n     )       ⁢     cos   ⁡     (         π   ⁡     (       2   ⁢   m     +   1     )       ⁢   u     16     )       ⁢     cos   ⁡     (         π   ⁡     (       2   ⁢   n     +   1     )       ⁢   v     16     )                   
 
 where u, v, m. n=0, 1, . . . , 7, and  
         C   ⁡     (   ω   )       ⁢     {           1     2             ω   =   0             1       otherwise               
 
         [0007]     Then the DCT coefficients are uniformly quantized.  
         [0008]     The coefficient F(0,0) is called the DC coefficient while all other coefficients are called AC coefficients. The DC coefficient F(0,0) is divided by 8, and the result is rounded to the nearest integer in [−256, 255], i.e., 
 
QF(0,0)= NINT[F (0,0)/8]
 
 where NINT is the nearest integer value. 
 
         [0009]     The AC coefficients, i.e. F(u,v), are first multiplied by 16, and the result is divided by a weight, Q(u,v), times the quantizer scale (MQUNAT)  
         QF   ⁡     [     u   ,   v     ]       =       16   ⁢     F   ⁡     [     u   ,   v     ]           qQ   ⁡     [     u   ,   v     ]             
 
 where Q[u,v] is the quantization matrix and q is MQUNAT. The quantization matrix sets the relative quantization step for each coefficient in the block. MQUNAT is used as another factor to satisfy the required bit rate. MQUNAT together with the quantization matrix determine the actual quantization factor and actual coarseness of the block. The quantization matrix can be altered for each sequence in MPEG-1 as well as each picture in MPEG-2. On the other hand, MQUNAT can be changed for each macroblock. 
 
         [0010]     In coding of I frames, the quantized coefficients are scanned in a zigzag pattern and ordered into symbols. Each symbol consists of a [run, level] pair. The level indicates the value of nonzero coefficient while run indicates the number of preceding zeros to that symbol. The symbols are then coded using a variable length coder.  
         [0011]     P and B frames are inter-coded using ME/MC (Motion Compensation). In ME/MC[19], the frame which is being compressed is called the current frame. The nearest I or P frame is called the reference frame. ME algorithms work on macroblock level. Block matching algorithms BMAs [20-28] are used to find the macroblock in the reference frame that has minimum difference from the macroblock being coded in the current frame. The main idea of BMA is to reduce the amount of computations by either reducing the search area or the number of search steps [1]. After motion estimation, the displacement vector and the prediction difference error can be used to reconstruct the macroblock. The prediction error is DCT processed and quantized. The remaining step involves entropy coding is similar to that of I frames.  
         [0012]     Motion estimation can be done with respect to a previous or next reference frame in the time domain. If the reference frame is before the current frame, this kind of ME is called forward ME. If the reference frame is after the current frame, it is called backward ME. Sometimes two reference frames can be used together and this is called bidirectional motion compensation. P frames are coded using the immediate previous I, or P frames (forward prediction). B-frames, on the other hand, are coded using forward prediction as in P frames, backward predication using a future reference frame, or bidirectionally coded using both future and past frames.  
         [0013]     Macroblocks can have different types even within a single I, P, or B pictures. In I picture macroblocks can be coded with different effective quantization matrices and without ME. This type of macroblocks is referred to as intra-macroblock. In a P picture, a macroblock can be coded as intra-macorblock or inter-macroblock. Inter-macroblocks are coded using ME/MC. Sometimes after quantisization of a macroblock, all coefficients are zero, so there is no need to code that macroblock. This is called a skipped macroblock.  
         [0014]     Sometimes it is more efficient not to perform ME/MC. In this case the motion vector is set to zero. This type of motion vector is called zero motion vector. In a B picture, macroblock types are similar to those in P pictures except there is an additional of forward and bidirectional coded macroblock. The choice of a macroblock type depends on the picture type and how much compression each macroblock type will provide.  
         [0015]     At the decoder side, the operation is the reverse to that of the encoder side. Coefficients of each block are decoded, then inverse quantization as well as transformation decoding is applied to each the blocks of each macroblock. Motion compensation is then applied to macroblocks coded using motion estimation. Finally, frames are reordered back and the decoder output is according to their temporal reference.  
         [0000]     Motion Estimation Algorithms:  
         [0016]     Motion estimation (ME) algorithms can be classified as block-based, pixel-based, or region-based. Block-based algorithms are the most popular because of the simplicity in both software and hardware.  
         [0017]     In block-based motion estimation, each frame is divided into a group of equally sized blocks called macroblocks and a single vector is used to represent motion for each macroblock. This motion vector is obtained by finding the best match between the block in the frame to be compressed, called the current frame, and the reference frame. The main parameters of the block-based motion estimation (ME) process are the search window size, the matching criterion, and the search algorithm. The search window is the area in the search frame in which the search for the best matching block is performed between the search window and the corresponding window in the reference frame (the reference window). The search window is defined by the location of its origin (its upper left corner) and its size. The matching criterion is the evaluation function that measures the degree of matching between two blocks. Different matching criteria are available such as, but not limited to, the sum of absolute difference (SAD), the cross correlation (CC) and the mean-square error (MSE). SAD is the most commonly used because of the simplicity and ease of its implementation. SAD is Determined as:  
         SAD   ⁡     (     V   i     )       =       ∑     x   =   0     M     ⁢       ∑     y   =   0     N     ⁢              S   l     ⁡     (     x   ,   y     )       -       S     l   -   1       ⁡     (       x   +   dx     ,     y   +   dy       )                      
 
 where M and N are the block width and height, respectively, Sl(x,y) is the pixel value of frame l at relative position x,y from the macroblock origin, and Vi=(dx,dy) is the displacement vector. 
 
         [0018]     There is a wide range of block matching algorithms, (BMAs) presented in the literature [8-23]. A full or exhaustive search is the simplest one leading to the minimum SAD in the search window. It has, however, the drawback of high computational complexity. This makes full search (FS) not suitable for real time video compression applications. Other available block matching algorithms apply fast search techniques such as 2-D logarithmic search (2DS) [9], cross search (CS) [10], three-step search (TSS) [11], hierarchical BMA [12], hexagon search (HS) [13], diamond search (DS) [14-16], and the simplex search (SS) [19-23]. In these algorithms, only selected subsets of search positions are evaluated. This reduces the amount of computation, but can lead to motion vectors corresponding to local minima of the matching criterion. The group of BMAs presented in [19-23] is based on the simplex optimization algorithm and has been found to yield quite good results. The use of the well known simplex optimization algorithm to find the minimum of the SAD is motivated by the fact that the simplex technique has the capacity to quickly change search direction and perform a coarse or fine search as necessary [17-18].  
         [0000]     Performance Measurements:  
         [0019]     In order to compare between different search algorithms, evaluation criteria are used. The performance of any video encoder can be measured using one or more of these criteria such as the computational complexity of the video encoder, the quality of the produced bitstream, and the resultant compression ratio. The computational complexity of the encoding process is related mainly to motion estimation part of the algorithm. Some fast motion estimation algorithms can almost produce the same bitstream quality and compression ratio with less computation overhead as compared to the slower motion estimation algorithms. The quality of the produced bitstream can be measured by both quantitative and qualitative measures. An example of the measurement criteria is the average peak signal to noise ratio (PSNR). This is used to compare quality of the coded video frame. In addition, the visual quality of the reconstructed frames is used as a qualitative or subjective measurement of the encoder performance.  
         [0020]     PSNR is calculated as  
         PSNR   =     10   ⁢   log   ⁢           ⁢       255   2     MSE         ,       
 
 where  
       MSE   =       1   NM     ⁢       ∑     k   =   1     N     ⁢       ∑     l   =   1     M     ⁢       (         o     i   ,   j       ⁡     (     k   ,   l     )       -       r     i   ,   j       ⁡     (     k   ,   l     )         )     2               
 
 Where o i,j  is the pixel value at location (i,j) in the original frame, r i,j  is the pixel value at location (i,j) in the reconstructed frame. N, M are number of frame pixels in both horizontal and vertical directions. 
 
         [0021]     The compression ratio can be measured by means of estimation accuracy. Estimation accuracy is defined as the measure of the accuracy of matches located. Estimation accuracy can be evaluated by measuring the entropy of prediction errors generated after ME/MC. Lower entropy indicates higher compression. The first order entropy (H) is given by  
       H   =     -       ∑     i   =   1     N     ⁢       p   i     ⁡     [       log   2     ⁡     (     p   i     )       ]               
 
 where N bounds all possible error values. The histogram of prediction errors can be used for estimation of p i  where p i  is the probability of a symbol with value equal to i. 
 
 Hexagon-Based and Diamond-Based Search Algorithms: 
 
         [0022]     The basic search unit for hexagon-based searching is a hexagon, and similarly, the basic search unit in diamond-based searching is a diamond. (See WO0232145 for a description of hex-based searching). In both cases, the size is fixed during the search and is only contracted once the final iteration is complete. Movement during the iterations is towards the minimum and will continue until no further improvement is obtained. A number of positions are evaluated, and a decision as to the next move is made. The next move can be one of translation, or one level contraction. There is no expansion.  
         [0000]     Simplex Search Algorithm:  
         [0023]     The simplex algorithm is a technique used in optimization when the derivatives of the performance index are not available, or difficult to obtain [18]. In the two-dimensional simplex search, a search triangle is used to locate a minimum of the performance index or error function. The search domain is a continuous domain rather than an integer-based domain. The error function is evaluated at the triangle vertices, which represent possible minimum locations. The locations of the triangle vertices are modified in a manner that moves the triangle towards possible minimum locations by moving the triangle away from locations of high error function values. Only one point in the triangle is changed at any given time. During these movements, the search triangle can undergo the operations of reflection, expansion, and contraction. These operations are required to efficiently move the triangle towards the minimum location or resize the triangle. Consequently, the search can quickly change direction depending on the search results, or become more coarse or more fine as necessary. The algorithm&#39;s main operations can be briefly described as follows:  
         [0024]     Reflection: In this operation the triangle is reflected away from the vertex with the maximum error value. The vertex with the maximum error value is identified and its new location is calculated by reflecting it with respect to the remaining two vertices. If the value of the error function at the vertex after reflection is less than the value of the error function at the location before reflection, then the reflection operation is considered to be successful and a new triangle with the new vertex instead of the maximum-error vertex is obtained. Thus, using reflection, the triangle is moved in the direction of the minimum error.  
         [0025]     Expansion: After a successful reflection the possibility of finding a vertex with lower error function value can be further investigated by moving the reflection vertex further in the same direction. If the value of the error function at the vertex obtained after expansion is lower than the error function value at the vertex after reflection, the vertex obtained after expansion is used as the vertex of the search triangle. Thus expansion increases the size of the triangle allowing it to move faster towards the minimum using a coarser search.  
         [0026]     Contraction: The contraction operation is the opposite of expansion. It is used when both reflection and expansion operations fail. In such a case, the search triangle is close to the minimum location and the size of the triangle is reduced to conduct a finer search and find the minimum location. If the algorithm has already reached the lowest triangle size and no more contraction can be achieved, then the algorithm stops.  
         [0027]     The ability of the simplex algorithm to change the search direction and to switch between coarse and fine searches makes it a good candidate to be used for BMA [19-23]. However, the original simplex algorithm was intended for continuous variables while BMAs are required to use a discrete grid for the variables. The movement of the triangle is therefore not completely controllable. This sometimes results in the collapse of the triangle into one or two vertices. Further, the simplex search requires many floating-point calculations, which makes the search slower compared to other integer-based algorithms. It is an object of the invention to overcome the deficiencies in the prior art.  
       SUMMARY OF THE INVENTION  
       [0028]     The invention provides a new fast BMA developed by adapting the simplex algorithm to a discrete search grid. This algorithm begins with predefined sets of triangles. Through the use of the predefined sets of triangles the search operations can be carried out without floating point operations and without having to adapt the triangle obtained at each step of the algorithm to the discrete search grid. Once underway, the search is able to change the size of the triangles to allow for coarse and fine searches.  
         [0029]     In one embodiment of the invention a method for estimating block motion in a search window for use in compression of two dimensional data, for example, video outputs is provided. The motion estimation in the search window is in relation to a reference window, and comprises searching, which in turn comprises initiating formation of a polygon, then expanding, translating, contracting and reflecting the polygon, such that in use, coding information is provided to improve the performance of compression.  
         [0030]     In another aspect of the invention, the search window is in a current frame and the reference window is in a frame before or after the current frame.  
         [0031]     In another aspect of the invention, the search window and the reference window are comprised of a plurality of points, a selected search point in the search window comprising a vertex of said polygon, the vertex corresponding with a reference point in the reference window.  
         [0032]     In another aspect of the invention, the method is further defined as determining an error value between the vertex and the reference point.  
         [0033]     In another aspect of the invention, searching moves away from vertices having maximum error values.  
         [0034]     In another aspect of the invention, searching is integer-based.  
         [0035]     In another aspect of the invention the method further comprises computing using look up tables.  
         [0036]     In another aspect of the invention expanding is further defined as changing at least two vertices.  
         [0037]     In another aspect of the invention, expanding is further defined as changing at least three vertices.  
         [0038]     In another aspect of the invention, contracting is further defined as changing at least two vertices.  
         [0039]     In another aspect of the invention, contracting is further defined as changing at least three vertices.  
         [0040]     In another aspect of the invention, expanding and contracting occur repetitively, such that in operation, an area defined by the vertices increases and decreases successively.  
         [0041]     In another aspect of the invention, determining an error value is further defined as determining a sum of absolute difference.  
         [0042]     In another aspect of the invention, the polygon is a triangle.  
         [0043]     In another aspect of the invention, the polygon is a parallelogram.  
         [0044]     In another aspect of the invention, the polygon is a hexagon.  
         [0045]     In another embodiment of the invention, a system for estimating block motion for coding and compressing two dimensional data, for example, video outputs is provided. The system comprises a search window, a reference window, and means for searching and comparing points between the reference window. The search window comprises selected search points and the reference window comprises reference points. The means for searching and comparing comprise means to initiate the search, means to expand the search, means to contract the search, means to reflect the search and means to translate the search, such that in use, coding information is provided to improve the performance of compressing two dimensional data.  
         [0046]     In another aspect of the invention, the means for searching and comparing is integer-based.  
         [0047]     In another aspect of the invention, the system further comprises look up tables.  
         [0048]     In another aspect of the invention, the method further comprises coarse and fine searches.  
         [0049]     In another aspect of the invention, the system is provided as computer hardware.  
         [0050]     In another aspect of the invention, the system is provided as computer software  
         [0051]     In another aspect of the invention, the software is provided as a CD ROM.  
         [0052]     In another aspect of the invention, the software is provided on the world wide web. 
     
    
     FIGURES  
       [0053]      FIG. 1 . Prior art showing the location of a motion estimator in coding and compressing data.  
         [0054]      FIG. 2 . Motion estimation in accordance with the method of the invention.  
         [0055]      FIG. 3 . Possible reflections for level 0 triangles in accordance with the method of the invention. The original triangle T00 is shown using a solid line and the resulting level 1 triangles are shown using dotted lines.  
         [0056]      FIG. 4 . Result of reflection followed by expansion of triangle T00 as outlined in Table 1, in accordance with the method of the invention.  
         [0057]      FIG. 5 . Relation between reflection, expansion, translation, contraction and triangle levels in accordance with the method of the invention.  
         [0058]      FIG. 6 . Flow chart of flexible polygon motion estimation in accordance with the method of the invention.  
         [0059]      FIG. 7 . Comparison between FS, FTS, MTSS and SS for PSNR vs frames.  
         [0060]      FIG. 8 . Comparison between FS, FTS, MTSS and SS for PSNR vs. Bit Rate for the Foreman QCIF. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0061]     A system for estimating block motion for coding and compressing data, generally referred to as a motion estimator  10  is shown in the prior art of  FIG. 1 . The motion estimator  10  determines motion in a block  12  of a search window  14 , with reference to a block  16  having the same location, but in a reference window  18 , as shown in  FIG. 2 . The reference window  18  is in a reference frame  20  located either before or after the search window  14 . The search window  14  is in the current frame  22 . The search window  14  and the reference window  18  have a plurality of points  24  as shown in  FIG. 3 . Any given point  24  can be selected to form the vertex  26  of a polygon, which in the preferred embodiment is a triangle  28 , but which can be a parallelogram or a hexagon, but is not limited to these shapes. The vertices  26 ,  30 ,  32  in the search window  14  correspond with reference points in the reference window  18 . The search is based on using sets of triangles  34 ,  36 ,  38 , for example, but not limited to three triangles of different sizes to perform the search, as shown in  FIG. 4 . The vertices  26 ,  30 , 32  of these triangles are always on an integer grid  40 . The triangles  34 ,  36 ,  38  have different sizes to perform coarse or fine searches. A given triangle is defined by its identification id and its level, i.e., T21 stands for triangle T, id 2, and level 1. The ids for the three levels are: 
        Level 0={T00,T01,T02,T03}    Level 1={T10,T11,T12,T13,T14,T15}    Level 2={T20,T21,T22,T23,T24,T25}       
 
         [0065]     The vertices  26 ,  30 ,  32  of the first triangle  34  are denoted as V0, VA, VB where V0 is the center point and VA, VB are the vertices  26 ,  30 ,  32  in counterclockwise rotation from V0. Thus, the coordinates of the three vertices  26 ,  30 ,  32  of the triangle  34  can be obtained from the triangle name and the coordinates of V0. More than three levels can be used, however, three levels are satisfactory for the commonly used window sizes.  
         [0066]     Based on the above definition of the triangles  34 ,  36 ,  38 , the basic operations of the search (reflection, expansion, contraction, and translation) can be easily described using look-up tables, as shown in Table 1, and can be computed without floating point operations. The relationships between the various actions are shown in  FIG. 5 . Similar tables for reflection and expansion can be constructed for the other two levels. Contraction from level 2 to 1 is straightforward since the triangle orientation does not change. Table 2 presents contraction from level 1 to 0. The importance of these tables is that the search algorithm can be implemented using look-up tables and thus the computational efficiency can be greatly increased. A flow chart of a search is shown in  FIG. 6 .  
         [0067]     The search algorithm can now be described as follows: 
    Given a reference frame Sl−1(x,y), an M×N macroblock in the current frame Sl(x,y), find the displacement vector Vmin so that SAD(Vmin) is minimized in the search window.    
 
         [0069]     The details of the algorithm are as follows: 
    Prediction of the starting triangle     Prediction of starting triangle: Level 0 has 4 possible starting triangles T00, T01, T02, and T03. Select the triangle according to the following criterion     Calculate SAD values for 4 vertices surrounding the origin V i , i=1, 2, 3, 4     Calculate SAD for each quarter, Q i  as follows 
 
 SAD ( Q   i )= SAD ( V   i+1 )+ SAD ( V   i+2 ), i=0, 1, 2 
 
 SAD ( Q   3 )= SAD ( V   4 )+ SAD (V 1 ), i=3 
    Select Q min =min(Q i ), i=0, 1, 2, 3     Select the triangle that lies in Q min  as FTS starting triangle 
 
 SAD Buffer 
   
 
         [0076]     FTS uses a SAD buffer to avoid repeated SAD computations. The SAD buffer is reset for each new Macroblock search before FTS starts. Then each newly computed SAD value is stored in the buffer. The stored value is indexed by x-y position. Then, for each additional SAD computation during FTS iterations, the SAD buffer is checked if it the required value has already been computed and stored. If the value is already stored, the stored value is used. Otherwise, the SAD value is computed and then stored in the buffer.  
         [0000]     Step 1: Initialization  
         [0077]     Initialize the current triangle level, current triangle within that set using steps above, and initial triangle vertices V0, VA, and VB in the search area. Choose V0 at the origin of the search window. Initialize the iteration counter K=0. Initialize translation vector Vd to 0 and displacement vector Vmin to V0. Reset or clear SAD buffer  
         [0000]     Step 2  
         [0078]     Determine the SAD for each new triangle vertex in the current triangle. Identify the vertex with the highest SAD value as Vh and the vertex with the lowest SAD value as Vl.  
         [0079]     If the previous step was a successful expansion or translation operation, go to step 6, otherwise continue to step 3.  
         [0000]     Step 3: Reflection  
         [0080]     Get a new vertex Vr, by reflecting the Vh of the current triangle using the table corresponding to the current level and calculate SAD(Vr).  
         [0081]     If SAD(Vr)&lt;SAD(Vh), go to step 4, otherwise go to step 5.  
         [0000]     Step 4: Expansion  
         [0082]     Locate the expansion vertex Ve for the current triangle using the appropriate triangle level table.  
         [0083]     If SAD(Ve)&lt;SAD(Vr), then expansion was successful; increase the triangle level and update the current triangle. Calculate the translation vector between the reflection and expansion vertices, Vd using Vd=Ve−Vr.  
         [0084]     If SAD(Ve)&lt;SAD(Vmin), set Vmin=Ve. Go back to step 2 with K=K+1.  
         [0085]     If SAD(Ve)&gt;=SAD(Vr), then expansion was not successful. Update the current triangle by replacing Vh by Vr. If SAD(Vr)&lt;SAD(Vmin) set Vmin=Vr. Go back to step 2 with K=K+1.  
         [0000]     Step 5: Contraction  
         [0086]     Contract the triangle by reducing the triangle level, update the current triangle and go to step 2 with K=K+1.  
         [0000]     Step 6: Translation  
         [0087]     Find a new vertex, Vt, by translating Vl using Vt=Vl+Vd and calculate SAD(Vt).  
         [0088]     If SAD(Vt)&lt;SAD(Vl), then translation was successful; replace Vl by Vt. If SAD(Vl)&lt;SAD(Vmin), set Vmin=Vl. Go back to step 2 with K=K+1.  
         [0089]     If SAD(Vt)&gt;=SAD(Vl), then translation was not successful; set Vl as the origin of the next search triangle and continue from step 3 with K=K+1  
         [0090]     Termination Conditions: The search is terminated if  
         [0091]     No more successful reflections, expansions, or contractions operations are possible.  
         [0092]     The number of search iterations reaches a pre-specified limit KMax.  
         [0093]     The value of SAD becomes less than a pre-specified threshold ExitSAD.  
       EXAMPLE 1  
       [0094]     An example of the search pattern using the search of the present invention is shown in  FIG. 4 . The search starts at the center of the search window and concludes with finding Vmin the location with the minimum SAD.  
         [0000]     1. Start:  
         [0095]     The triangle search starts at level 0, current triangle T00 with initial vertices V1, V3, and V2. In this case SAD(V1) is the maximum and SAD(V3) is the minimum. Thus, V1 is set equal to Vh, V3 to Vl and Vmin to V3.  
         [0000]     2. Reflection:  
         [0096]     The triangle vertex V1 is reflected to V4. Since SAD(V4)&lt;SAD(V1), reflection is successful and should be followed by expansion.  
         [0000]     3. Expansion:  
         [0097]     Test for expansion at V5 and since SAD(V5)&lt;SAD(V4), expansion is successful. The current triangle is then expanded to T14 (based on Table 1) with vertices V2, V 5, and V 6. Vd is calculated from Vd=Ve−Vr=(1,1). Since in this case, SAD(V5)&gt;SAD(Vmin), Vmin will not be updated.  
         [0000]     4. Translation:  
         [0098]     Since the last operation was a successful expansion, translation is attempted. Using the translation vector Vd=(1,1) from the expansion step, a translation of the current triangle is attempted to V7, V 8, and V 9. In this triangle, SAD(V9) is the maximum error, SAD(V 8) is the minimum error and this error is less then SAD(Vmin). As a result Vmin is updated to be equal to V8.  
         [0000]     5. Reflection:  
         [0099]     Since the last operation was a successful translation, more translation is attempted which does not lead to a vertex with a lower error than SAD(V8). Thus, a reflection is attempted by reflecting V9 to V10. Since SAD(V10)&lt;SAD(V9), this is successful reflection. In the reflected triangle SAD(V7) is the maximum error. Further, SAD(V10)&gt;SAD(V8) and Vmin is not updated.  
         [0000]     6. Reflection:  
         [0100]     Expansion is not successful, so reflection is attempted by reflecting V7 to V11. Since SAD(V11)&lt;SAD(V8)&lt;SAD(V7), the reflection was successful and also Vmin is updated to V11.  
         [0101]     7. Contraction:  
         [0102]     Expansion and reflection are not successful and thus contraction is attempted. Based on Table 2, T12 is contacted to T00. In the new triangle SAD(V12) is the lowest and is also lower than SAD(Vmin). Thus Vmin is updated to V12.  
         [0000]     8. Exit:  
         [0103]     Additional reflection does not lead to lower values for SAD. In addition, it is not possible to contract to a lower level. The algorithm will exit with the location of the minimum SAD value in Vmin.  
         [0000]     V. Simulation Results  
         [0104]     The search (referred to as FTS) was implemented as part of an H.263 encoder. The technique was compared with the modified-three-step search (MTSS) [11], the full search (FS), and the SS [19] algorithms. MTSS is well known for its low computation requirements while FS leads to the minimum SAD in the search range.  
         [0105]     For purposes of comparison, scenes with different kinds of movement were used. QCIF sequences with 176×144 pixels (99 macroblocks) were used. Except for the search algorithm, all other encoding parameters were kept fixed. These parameters include: 
    Macroblock size (16×16)     Same search area size (32×32)     Same Rate control and quantization parameter selection     Motion vector prediction is included     Early exit condition when SAD value become less than a specified value (ExitSAD).     Same number of I and P frames    
 
         [0112]     The comparison criteria were chosen to be the average number of block matching evaluations to evaluate computational complexity, the compression ratio to evaluate efficiency, and the peak signal to noise ratio (PSNR) between the original frames and the reconstructed frames to evaluate quality.  
         [0113]     Table 3 lists the average number of block matching comparisons per frame obtained. As it can be seen, the average number of block matching comparisons required by the FTS is less than that of the MTSS, the FS, or the SS. As the average number of block matching comparisons is an indication of the computation complexity, and thus the speed of the algorithm, the results obtained confirmed that the FTS is faster than any of the other three techniques.  
         [0114]     The compression ratio comparison results and average number of bits used for coding motion vectors are listed in Table 4 and Table 5 respectively.  
         [0115]     Compression ratio results indicate that FTS is capable of producing almost the same compression as FS and slightly better compression than MTSS.  
         [0116]     The average PSNR is shown in Table 6. In addition,  FIG. 7  displays the PSNR values for each frame of the ‘foreman’ sequence for the four algorithms.  
         [0117]     It can be inferred from  FIG. 7  that the PSNR values produced by the FTS are comparable to those of MTSS and very close to those of FS. However, the SS has a lower PSNR value.  FIG. 8  shown the change of PSNR at different bit rates. Except for FS, FTS is comparable to the other algorithms.  
         [0118]     From the above comparison, it is clear that the compression ratios, as well as the average PSNR and visual quality of the reconstructed frames using FTS, MTSS and FS, are not significantly different. This indicates that the significant reduction of the computational complexity obtained using the FTS was not at the expense of deterioration in visual quality or compression efficiency.  
         [0000]     Half-Pixel FTS  
         [0119]     The FTS was also implemented at half-pixel accuracy. In the general case, the FTS is used at full-pixel accuracy to get a full-pixel motion vector. Then a separate or independent algorithm is used to determine the half-pixel accuracy. Results indicate the number of block matching required by full-pixel and half-pixel were almost the same even so full-pixel is more complicated. These results are attributed to the efficiency of FTS at full-pixel level. As a result, an extended version of FTS was used where FTS perform the search directly at half-pixel accuracy. In this case, an interpolated search area is used instead of the default search area. The use of this extension to FTS eliminates the need for using a half-pixel stage after the full-pixel stage.  
         [0120]     The foregoing is a description of the preferred embodiment of the invention. As would be known to one skilled in the art, variations that do not alter the scope of the invention are contemplated. For example, while a method is described, the described invention also contemplates hardware, such as a chip, or software to provide the method. The software may be available to individual users, for example on a CD ROM, or may be accessed over the web.  
                                                                                                                                                           TABLE 1                                       Results of       Results of   Expansion   Results of   Expansion           reflection of   Expansion of   reflection of   of V A     reflection of   of V B             V 0  around   V 0  reflection-   V A  around   reflection-   V B  around   reflection-           V A , V B     vertex   V 0 , V B     vertex   V 0 , V A     vertex            Current   New   Origin   Test   New   New   Origin   Test   New   New   Origin   Test   New       Triangle,   Triangle,   Shift   Point   Triangle,   Triangle,   Shift   Point   Triangle,   Triangle,   Shift   Point   Triangle,       Level 0   Level 0   V 0     Ve   Level 1   Level 0   V 0     Ve   Level 1   Level 0   V 0     Ve   Level 1                                                                                T00                                 T02   (1,1)   (2,2)   T14   T03   (0,0)   (0,−2)   T12   T01   (0,0)   (−2,0)   T11               T01                                 T03   (−1,1)   (−2,2)   T10   T00   (0,0)   (2,0)   T13   T02   (0,0)   (0,−2)   T12               T02                                 T00   (−1,−1)   (−2,−2)   T11   T01   (0,0)   (0,2)   T15   T03   (0,0)   (2,0)   T14               T03                                 T01   (1,−1)   (2,−2)   T13   T02   (0,0)   (−2,0)   T10   T00   (0,0)   (0,2)   T15                  
 
         [0121]    
       
         
               
               
               
             
           
               
                   
                 TABLE 2 
               
               
                   
                   
               
               
                   
                   
               
               
                   
                 Level 1 
                   
               
               
                   
                 Original 
                 Level 0 
               
               
                   
                 Triangle 
                 New Triangle 
               
               
                   
                   
               
             
             
               
                   
                 T10 
                 T03 
               
               
                   
                 T11 
                 T00 
               
               
                   
                 T12 
                 T00 
               
               
                   
                 T13 
                 T01 
               
               
                   
                 T14 
                 T02 
               
               
                   
                 T15 
                 T02 
               
               
                   
                   
               
             
          
         
       
     
         [0122]    
       
         
               
               
               
               
               
               
             
               
               
               
               
               
               
             
           
               
                   
                 TABLE 3 
               
               
                   
                   
               
               
                   
                   
               
               
                   
                 Sequence 
                 FS 
                 MTSS 
                 SS 
                 FTS 
               
               
                   
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 Akyio 
                 780.63 
                 21.49 
                 14.43 
                 6.21 
               
               
                   
                 News 
                 774.77 
                 21.48 
                 14.41 
                 6.62 
               
               
                   
                 Miss 
                 765.35 
                 21.50 
                 16.80 
                 10.45 
               
               
                   
                 America 
               
               
                   
                 Foreman 
                 710.94 
                 21.81 
                 15.39 
                 8.49 
               
               
                   
                 Coastguard 
                 719.88 
                 21.60 
                 14.96 
                 7.32 
               
               
                   
                 Carphone 
                 745.28 
                 21.46 
                 15.87 
                 8.32 
               
               
                   
                 Silent 
                 760.62 
                 21.46 
                 14.68 
                 7.29 
               
               
                   
                   
               
             
          
         
       
     
         [0123]    
       
         
               
               
               
               
               
               
             
               
               
               
               
               
               
             
           
               
                   
                 TABLE 4 
               
               
                   
                   
               
               
                   
                   
               
               
                   
                 Sequence 
                 FS 
                 MTSS 
                 SS 
                 FTS 
               
               
                   
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 Akyio 
                 217 
                 212 
                 214 
                 216 
               
               
                   
                 News 
                 96 
                 92 
                 94 
                 95 
               
               
                   
                 Miss 
                 247 
                 223 
                 237 
                 229 
               
               
                   
                 America 
               
               
                   
                 Foreman 
                 66 
                 52 
                 50 
                 49 
               
               
                   
                 Coastguard 
                 42 
                 38 
                 32 
                 34 
               
               
                   
                 Carphone 
                 93 
                 87 
                 86 
                 84 
               
               
                   
                 Silent 
                 109 
                 107 
                 102 
                 103 
               
               
                   
                   
               
             
          
         
       
     
         [0124]    
       
         
               
               
               
               
               
               
             
               
               
               
               
               
               
             
           
               
                   
                 TABLE 5 
               
               
                   
                   
               
               
                   
                   
               
               
                   
                 Sequence 
                 FS 
                 MTSS 
                 SS 
                 FTS 
               
               
                   
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 Akyio 
                 78 
                 80 
                 75 
                 76 
               
               
                   
                 News 
                 165 
                 171 
                 144 
                 145 
               
               
                   
                 Miss 
                 222 
                 235 
                 205 
                 206 
               
               
                   
                 America 
               
               
                   
                 Foreman 
                 773 
                 850 
                 485 
                 465 
               
               
                   
                 Coastguard 
                 601 
                 616 
                 474 
                 474 
               
               
                   
                 Carphone 
                 474 
                 466 
                 374 
                 373 
               
               
                   
                 Silent 
                 279 
                 251 
                 210 
                 217 
               
               
                   
                   
               
             
          
         
       
     
         [0125]    
       
         
               
               
               
               
               
               
             
               
               
               
               
               
               
             
           
               
                   
                 TABLE 6 
               
               
                   
                   
               
               
                   
                   
               
               
                   
                 Sequence 
                 FS 
                 MTSS 
                 SS 
                 FTS 
               
               
                   
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 Akyio 
                 33.83 
                 33.83 
                 33.80 
                 33.80 
               
               
                   
                 News 
                 31.89 
                 31.92 
                 31.90 
                 31.85 
               
               
                   
                 Miss 
                 36.36 
                 36.19 
                 36.28 
                 36.38 
               
               
                   
                 America 
               
               
                   
                 Foreman 
                 31.07 
                 30.76 
                 30.86 
                 31.07 
               
               
                   
                 Coastguard 
                 29.69 
                 29.63 
                 29.56 
                 29.62 
               
               
                   
                 Carphone 
                 32.40 
                 32.27 
                 32.32 
                 32.38 
               
               
                   
                 Silent 
                 31.87 
                 31.91 
                 31.97 
                 31.97 
               
               
                   
                   
               
             
          
         
       
     
       REFERENCES  
       [0126]     [1] ISO/IEC 11172, “Coding of Moving Pictures and Associated Audio for Digital Storage Media at up to about 1.5 Mbits/s,” International Organization for Standardization, 1992.  
         [0127]     [2] ISO/IEC CD 13818, “Generic Coding of Moving Pictures and Associated Audio,” International Organization for Standardization, 1994.  
         [0128]     [3] D. Le Gall, “MPEG: a video compression standard for multimedia Applications,” Communications of the ACM, vol. 34, no. 4, pp. 47-63, April 1991.  
         [0129]     [4] D. Le Gall, “The MPEG video compression algorithm,” Signal Processing: Image Communication, vol. ˜4, pp. 129-140, 1992.  
         [0130]     [5] G. Morrison, “Video coding standards for multimedia: JPEG, H.261, MPEG”, IEE Colloquium on Technology Support of Multimedia, Digest no. 088, pp. 2.1-2.4, April 1992.  
         [0131]     [6] V. Bhaskaran and K. Konstantinides, Image and Video Compression Standards Algorithms and Architectures, Kluwer Academic Publishers, Boston, September 1995.  
         [0132]     [7] P. Kuhn, Algorithms, Complexity Analysis and VLSI Architectures for MPEG-4 Motion Estimation, Kluwer Academic Publishers, Boston, 1999.  
         [0133]     [8] H. Musmann, P. Pirsch, and H. Grallert, “Advances in picture coding,” Proc. IEEE, vol. 73, no. 4, pp. 523-548, April 1985.  
         [0134]     [9] J. Jain and A. Jain, “Displacement measurement and its application in interframe image coding,” IEEE Trans. Commun., vol. 29, no. 12, pp. 1799-1806, 1981.  
         [0135]     [10] M. Ghanbari, “The cross-search algorithm for motion estimation,” IEEE Trans. Commun., vol. 38, no. 7, pp. 950-953, July 1990.  
         [0136]     [11] T. Koga, “Motion compensated interframe coding for video conferencing,” Proc. National Telecommunications Conference, New Orleans, Nov. 29-Dec. 3, G5.3.1-G5.3.5, 1981.  
         [0137]     [12] B. Paul and E. Viscito, “Hierarchical motion estimation with 2-scale tilings,” In Proc. of IEEE International Conference on Image Processing, pp. 260-264, 1994.  
         [0138]     [13] C. Zhu, X. Lin, and L.-P. Chau, “Hexagon-based search pattern for fast block motion estimation,” IEEE Transactions on Circuits and Systems for Video Technology, vol. 12, no. 5, pp. 349-355, 2002  
         [0139]     [14] C.-H. Cheung and L.-M. Po, “A novel cross-diamond search algorithm for fast block motion estimation,” IEEE Transactions on Circuits and Systems for Video Technology, vol. 12, no. 12, pp. 1168-1177, 2002  
         [0140]     [15] S. Zhu and K.-k. Ma, “A new diamond search algorithm for fast block-matching motion estimation,” IEEE Transactions Image Processing, vol. 9, pp. 287-290, 2000.  
         [0141]     [16] J. Y. Tham, S. Ranganath, M. Ranganath, and A. A. Kassim, “A novel unrestricted center-biased diamond search algorithm for block motion estimation,” IEEE Transactions on Circuits and Systems for Video Technology, vol. 8, pp. 369-377, 1998  
         [0142]     [17] D. Himmelblau, Applied Nonlinear Programming, McGraw-Hill Inc., New York, 1972.  
         [0143]     [18] B. Bunday, Basic Optimization Methods, Edward Arnold Publishers, 1984.  
         [0144]     [19] M. Rehan, A. Antoniou, and P. Agathoklis, “A new fast block matching algorithm using the simplex technique,” Proc. of the IEEE Symposium on Advances in Digital Filtering and Signal Processing, 1998, pp. 30-33.  
         [0145]     [20] M. E. Al-Mualla, C. N. Canagarajah, and D. R. Bull, “A simplex minimization for single and multiple-reference motion estimation,” IEEE Transactions on Circuits and Systems for Video Technology, vol. 11, no. 12, pp. 1209-1220, 2001.  
         [0146]     [21] M. E. Al-Mualla, C. N. Canagarajah, and D. R. Bull, “Simplex minimisation for multiple-reference motion estimation”, Circuits and Systems, 2000. Proceedings. ISCAS 2000 Geneva. The 2000 IEEE International Symposium on, vol 4, 28-31, pp 733-736 vol. 4, 2000.  
         [0147]     [22] M. E. Al-Mualla, C. N. Canagarajah, and D. R. Bull, “Simplex minimisation for fast long-term memory motion estimation”, Electronics Letters, vol: 37, issue: 5, pp 290-292, 2001  
         [0148]     [23] M. E. Al-Mualla, C. N. Canagarajah, and D. R. Bull, “Simplex minimisation for fast block matching motion estimation”, Electronics Letters, vol: 34, issue: 4, pp 351-352, 1998  
         [0149]     [24] M. Rehan, P. Agathoklis, and A. Antoniou, “Flexible triangle search algorithm for block-based motion estimation” Proc. of the IEEE PACRIM Conf. on Communications, Computers and Signal Processing, Victoria, BC, August 2003, pp. 233-236.