1. Technical Field
The present disclosure relates to moving picture coding systems, and more particularly to a system and a method for estimating a sum of absolute differences (SAD).
2. Description of Related Art
Generally in moving picture coding, differences between a current frame and a reference frame, instead of all the information of each frame of the moving picture, are coded. Since temporally successive frames are often highly correlated, the differences may be very small, therefore, the moving picture can be compressed efficiently without processing all the information of the moving picture.
Intra and inter predictions are generally used in such moving picture coding to exploit temporal and spatial redundancy correspondingly for data compression. Motion estimations are needed in inter predictions. In motion estimations, the current frame may be divided into a plurality of macro blocks (MBs) of pixels. Each of the plurality of MBs is compared with candidate blocks in a search area of the reference frame to find a matched block in the candidate blocks. The moving picture can be reproduced by coding, decoding, and compensating motion vectors (MVs) between the plurality of MBs and the corresponding matched blocks in the reference frame.
An SAD is used to determine whether an MB and a candidate block match. A conventional method for calculating the SAD between the MB and the candidate block is expressed as:
wherein M and N are respectively numbers of pixels along a horizontal axis and a longitudinal axis in each of the MB and the candidate block. A size of each of the MBs and the candidate block is expressed as M*N, (x, y) are coordinates of pixels of the MB (ft) in the current frame, (x+j, y+k) are coordinates of pixels of the candidate block (ft−1) in the reference frame. It is considered that the candidate block matches the MB when the SAD is minimum. This method is still troublesome because differences between all of the pixels of the MB and the corresponding pixels of the candidate block should be added together, and a complicated calculation is needed.
Referring to
The block dividing module 11 divides each of the plurality of macro blocks 100 into a plurality of sub macro blocks of pixels. Each pixel has a pixel value representing an image characteristic. Take one of the plurality of macro blocks 100 for example, the macro block 100 includes 256 pixels 101 arrayed in 16 rows and 16 lines, and is divided into nine sub macro blocks SMB1-SMB9 by the block dividing module 11. Each of the sub macro blocks SMB1-SMB9 includes M*N pixels. M represents a number of the pixels along a horizontal axis in each of the sub macro blocks SMB1-SMB9. N represents a number of the pixels along a longitudinal axis in each of the sub macro blocks SMB1-SMB9. For example, in the sub macro block SMB1, both M and N are equal to 5, therefore, the sub macro block SMB1 includes 25 pixels. In this embodiment, each of the sub macro blocks SMB5, SMB6, and SMB7 includes 25 pixels. The macro block SMB4 includes 36 pixels. Each of the sub macro blocks SMB2, SMB3, SMB8, and SMB9 includes 30 pixels.
Referring to
One of the plurality of candidate blocks 210 which matches the macro block 100 may be found by comparing at least one of the plurality of candidate block 210 with the macro block 100 according to a predetermined sequence. For example, a candidate block 220, which is at the center of the search area 200, may be firstly compared with the micro block 100 to obtain a SAD of the macro block 100 relative to the candidate block 220. If the SAD is less than a predetermined value then it is accepted as a match of the macro block 100 and the candidate block 220. If the candidate block 220 does not match the macro block 100, the macro block 100 is compared with other candidate blocks 210 according to the predetermined sequence.
During estimation of the SAD between the macro block 100 and the candidate block 220, the pixel selecting module 12 selects a plurality of pixels from each of the sub macro blocks SMB1-SMB9 to be compared with each pixels of the candidate block 220. In this illustrated embodiment, the selected pixels are indicated by shadow, and function as sample pixels 102. For example, a pixel, which is at a center point of the macro block SMB1, and four pixels around the center point are selected to be the sample pixels 102. The value of each of the sample pixels 102 is compared with the value of each pixel of the candidate block 220 by the comparing and calculating module 13, as a result, a relative pixel that is most similar to the sample pixels 102 can be found in the candidate block 200. For example, it may be determined that a relative pixel 221 as illustrated in
The comparing and calculating module 13 obtains an absolute difference between the values of each of the sample pixels 102 and the corresponding relative pixel, and averages the absolute differences between the sample pixels 102 of each of the sub macro blocks SMB1-SMB9 and the corresponding relative pixels to obtain an average value. Each of the average values is multiplied by the number of the sample pixels 102 of a corresponding one of the sub macro blocks SMB1-SMB9 to obtain a sub SAD (SSAD). The SAD of the macro block 100 is determined by adding the SSADs of all of the sub macro blocks SMB1-SMB9 together by the comparing and calculating module 13.
The determining module 14 compares the SAD to the predetermined value. If the SAD is less than the predetermined value then it is accepted as a match of the macro block 100 and the candidate block 220. That is to say, a reference position of the macro block 100 is found in the search area 200 of the reference frame. The SAD is assigned to be zero when it is less than the predetermined value, representing that a motion estimation of the macro block 100 is finished, without comparing the macro block 100 to other candidate blocks 210 in the search area 200. If the SAD is equal to or greater than the predetermined value, the system 1 estimates a SAD between the macro block 100 and other candidate blocks 210, until a match of the macro block 100 and a candidate block 210 is accepted.
Referring to
In step S1, a parameter i is initialized to be one. The parameter i represents serial numbers of the sub macro blocks SMB1-SMB9. For example, the parameter i represents the second sub macro block SMB2 when it is equal to two.
In step S2, the pixel selecting module 12 selects a plurality of sample pixels 102 from pixels 101 of one of the sub macro blocks SMB1-SMB9, the serial number of the one of the sub macro blocks SMB1-SMB9 is i. In this embodiment, a pixel located at a center point of the one of the sub macro blocks SMB1-SMB9 and four pixels around the center point are selected.
In step S3, the comparing and calculating module 13 obtains the absolute difference between the pixel values of each sample pixel 102 of the one of the sub macro blocks SMB1-SMB9 and a corresponding relative pixel of a candidate block, such as the candidate block 220, and averages the absolute differences of the one of the sub macro blocks SMB1-SMB9 to obtain an average value.
In step S4, the processor 20 determines whether the parameter i is equal to 1, 5, 6, or 7. If the parameter i is equal to 1, 5, 6, or 7, step S5 as detailed below is executed, and step S9 is also executed. If the parameter i is not equal to 1, 5, 6, or 7, step S6 as detailed below is executed.
In step S5, the comparing and calculating module 13 multiplies the average value of the one of the sub macro blocks by 25 to obtain a sub SAD (SSAD) of the one of the sub macro blocks. In this step, the one of the sub macro blocks may be the sub macro block SMB1, SMB5, SMB6, or SMB7, each of which includes 25 pixels.
In step S6, the processor 20 determines whether the parameter i is equal to 2, 3, 8, or 9. If the parameter i is equal to 2, 3, 8, or 9, step S7 as detailed below is executed, and step S9 is also executed. If the parameter is not equal to 2, 3, 8, or 9, step S8 is executed.
In step S7, the comparing and calculating module 30 multiplies the average value of the one of the sub macro blocks by 30 to obtain the SSAD of the one of the sub macro blocks. In this step, the one of the sub macro blocks may be the sub macro block SMB2, SMB3, SMB8, or SMB9, each of which includes 30 pixels.
In step S8, the average value of the one of the sub macro blocks is multiplied by 36 to obtain the SSAD of the one of the sub macro blocks. In this step, the one of the sub macro blocks is the sub macro block SMB4, which includes 36 pixels.
In step S9, all of the obtained SSAD are added together to obtain a value of the SAD, and the parameter i is increased by 1.
In step S10, the processor 20 determines whether the parameter i is equal to 10. If the parameter i is not equal to 10, the procedure returns to step S2. If the parameter i is equal to 10, the procedure goes to step S11.
In step S11, the determining module 14 determines whether the SAD is less than the predetermined value. If the SAD is less than the predetermined value, the procedure goes to step S12. If the SAD is not less than the predetermined value, the procedure ends.
In step S12, the SAD is assigned to be zero.
In this embodiment, if the SAD is equal to or greater than the predetermined value, the comparison between the macro block 100 and the candidate block 220 is finished, and the macro block 100 is compared with another one of the candidate blocks 210 in the search area 200, until the SAD is less than the predetermined value.
According to above described steps S1-S12, the sub SAD of the macro block SMB1 is firstly obtained, and the SSADs of the macro blocks SMB1-SMB9 are obtained in sequence according to changes of the value of the parameter i.
A complicated estimation of the SAD is avoided since it is unnecessary to compare each of the pixels 101 in the macro block 100 with the pixels of the corresponding candidate block in the search area 200. A speed of the motion estimation of the macro block 100 can be increased because the SAD is compared with a predetermined value, if the SAD is less than the predetermined value, the motion estimation can be finished in advance. The system 1 can be used in any block based motion estimation. For example, the system 1 can be used in block based motion estimation of video compression technologies, such as H.264, and MPEG4 (moving picture experts group 4).
The foregoing description of the exemplary embodiments of the disclosure has been presented only for the purposes of illustration and description and is not intended to be exhaustive or to limit the disclosure to the precise forms disclosed. Many modifications and variations are possible in light of the above everything. The embodiments were chosen and described in order to explain the principles of the disclosure and their practical application so as to enable others of ordinary skill in the art to utilize the disclosure and various embodiments and with various modifications as are suited to the particular use contemplated. Alternative embodiments will become apparent to those of ordinary skills in the art to which the present disclosure pertains without departing from its spirit and scope. Accordingly, the scope of the present disclosure is defined by the appended claims rather than the foregoing description and the exemplary embodiments described therein.
Number | Date | Country | Kind |
---|---|---|---|
200910303547.8 | Jun 2009 | CN | national |