1. Field of the Invention
Apparatuses and methods consistent with the present invention relate to encoding a video signal, and more particularly, to encoding a video signal with improved compression efficiency using model switching in motion estimation of a sub-pixel.
2. Description of the Related Art
In video compression techniques, in order to compress a macroblock of a current frame utilizing temporal similarity of adjacent frames, the most similar areas are searched for among previous frames. This process is called a motion estimation process. Among the previous frames associated with the motion estimation process, vectors pointing to the most similar areas obtained through the motion estimation process are called motion vectors. To determine regional similarity between a block of the current picture and an adjacent block, a difference between regions, called a block matching error, is measured. In measuring the block matching error, a variety of techniques are used, including a sum of absolute difference (SAD) technique, a mean of absolute difference technique (MAD), a mean of square error (MSE) technique, and so on. As the difference between two blocks becomes smaller, the two blocks are considered as being more similar.
Meanwhile, to increase video compression efficiency, motion vectors in units of sub-pixels such as half pixels or quarter pixels are used.
e=A
f=(A+B+1)/2
g=(A+C+1)/2
h=(A+B+C+D+2)/4 [Equation 1]
Half pixel values can be estimated through values of neighboring integer pixels, and quarter pixel values can be estimated by searching values of neighboring half pixels or neighboring integer pixels. As the accuracy of a half pixel motion vector or a quarter pixel motion vector increases, a number of search points required for motion estimation increases. Accordingly, a computational amount sharply increases.
To address this, there have been proposed model-based sub-pixel motion vector estimation techniques, in which an error between neighboring points corresponding to a sub-pixel motion vector is calculated using models for blocks corresponding to integer pixel motion vectors without computing the block error of the sub-pixel motion vector.
Such model-based sub-pixel motion vector estimation techniques, however, exhibit different accuracy depending on the compressed video. Thus, an appropriate model should be used for achieve higher compression efficiency. Since an error between models differs according to video signal characteristics, use of a single model involves a limitation. In order to increase the compression efficiency, therefore, it is necessary to use a model with a higher accuracy.
The present invention provides a method and an apparatus for encoding a video signal with improved compression efficiency by selecting one among a plurality of models to be used in sub-pixel motion estimation.
The present invention also provides a method and apparatus for increasing a bit rate by adaptively selecting a model according to video signal characteristics.
The above stated aspects as well as other aspects of the present invention will become clear to those skilled in the art upon review of the following description.
According to an aspect off the present invention, there is provided an encoding method for increasing compression efficiency using model switching in motion estimation of a sub-pixel, the encoding method including obtaining a motion vector of a pixel existing on a block, generating a plurality of motion estimation models using a value of the motion vector, comparing estimation errors of the plurality of motion estimation models with one another, and selecting one of the plurality of motion estimation models according to the comparing of the estimation errors, and performing sub-pixel motion estimation using the selected motion estimation model.
According to another aspect of the present invention, there is provided an encoder for increasing compression efficiency using model switching in motion estimation of a sub-pixel, the encoder including a pixel calculator obtaining a motion vector of a pixel existing on a block, a model calculator generating a plurality of motion estimation models using a value of the motion vector obtained from the pixel calculator, a model selector comparing estimation errors of the plurality of motion estimation models with one another, and selecting one of the plurality of motion estimation models according to the comparing of the estimation errors, and a motion estimator performing sub-pixel motion estimation using the selected motion estimation model.
The above and other features and advantages of the present invention will become more apparent by describing in detail preferred embodiments thereof with reference to the attached drawings, in which:
Advantages and features of the present invention and methods of accomplishing the same may be understood more readily by reference to the following detailed description of exemplary embodiments and the accompanying drawings. The present invention may, however, be embodied in many different forms and should not be construed as being limited to the exemplary embodiments set forth herein. Rather, these exemplary embodiments are provided so that this disclosure will be thorough and complete and will fully convey the concept of the invention to those skilled in the art, and the present invention will only be defined by the appended claims. Like reference numerals refer to like elements throughout the specification.
The present invention is described hereinafter with reference to flowchart illustrations of methods according to exemplary embodiments of the invention. It will be understood that each block of the flowchart illustrations and combinations of blocks in the flowchart illustrations can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general purpose computer, special purpose computer or other programmable data processing apparatuses to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatuses, create means for implementing the functions specified in the flowchart block or blocks. These computer program instructions may also be stored in a computer usable or computer-readable memory that can direct a computer or other programmable data processing apparatuses to function in a particular manner such that the instructions stored in the computer usable or computer-readable memory produce an article of manufacture including instruction means that implement the function specified in the flowchart block or blocks. The computer program instructions may also be downloaded into a computer or other programmable data processing apparatuses, causing a series of operational steps to be performed on the computer or other programmable apparatuses to produce a computer implemented process such that the instructions that execute on the computer or other programmable apparatuses provide steps for implementing the functions specified in the flowchart block or blocks.
Each block of the flowchart illustrations may represent a module, segment or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that in some alternative implementations the functions noted in the blocks may occur out of order. For example, two blocks shown in succession may in fact be executed almost concurrently or the blocks may sometimes be executed in reverse order, depending upon the functionality involved.
A linear (LIN) model shown in
ε(x)=a|x−b|+c, a>0, |b|<0.5, c>0, [Equation 2]
whereas a quadratic model shown in
ε(x)=ax2+bx+c, (a>0). [Equation 3]
Since the model-based estimation method shown in
To calculate a motion vector of a half pixel, error criterion values at the half pixel can be measured by interpolating error criterion values of a full pixel (integer pixel). Since a motion vector generally exists in horizontal and vertical directions, motion vector estimation can be performed in both directions.
For example, the LIN interpolation model or QUAD model shown in
When a value of a sub-pixel such as a half pixel or a quarter-pixel is calculated using the model, the sub-pixel accuracy may depend upon the model selected. In addition, since the accuracy depends upon input data as well, it is quite important which model to select.
Therefore, as shown in
In operation S310, motion vectors of reference pixels are obtained. For example, in case of obtaining a motion vector of a half pixel, motion vectors of surrounding integer pixels as reference pixels are obtained. In case of obtaining a motion vector of a quarter-pixel, motion vectors of surrounding half pixels or integer pixels as reference pixels are obtained. Since a motion vector can be represented by x- and y-direction components, the procedure shown in
In operation S320, estimation models, i.e., first and second models, are generated using x and y values, i.e., the obtained motion vectors of the reference pixels. The estimation models may be an LIN model and a QUAD model, as shown in
The estimation models can be used in a wide variety of manners and two or more estimation models can be generated. Meanwhile, even a single estimation model may be regarded as independent two estimation models if it generates slightly different two or more models by being set with two or more parameters.
After generating two or more models, sub-pixel motion vectors to be searched in the respective models are estimated. Referring to graphs shown in FIGS, 2A and 2B, an error for motion vectors 0.5 and 1.5 can be computed using the integer pixel motion vectors of 0, 1, and 2. Then, an estimation error of the first model and an estimation error of the second model are compared with each other in operation S330. In operation S340, it is determined whether the estimation error of the first model is smaller than the estimation error of the second model or not. If it is determined that the estimation error of the first model is smaller than the estimation error of the second model, suggesting that the first model has higher accuracy, the first model is selected in performing sub-pixel motion estimation in operation S350.
If it is determined that the estimation error of the first model is greater than the estimation error of the second model, suggesting that the second model has higher accuracy, the second model is selected in performing sub-pixel motion estimation in operation S360.
The determination of model selection may be done for each sub-pixel, macroblock, or subblock. However, if the determination of model selection is often done to increase the accuracy, a computation amount may unduly increase. Accordingly, the optimal trade-off of encoding conditions is dependent on the computation amount and the accuracy.
In
First, the LIN model can be implemented according to Equation 2. In Equation 2, x represents a value of 0, 1, or −1, and MAD error values ε(−1), ε(0), and ε(1) at integer locations can be expressed in Equation 4:
ε(−1)=a+ab+c
ε(0)=ab+c, if b<0; and
−ab+c, otherwise
ε(1)=a−a−ab+c [Equation 4]
Vector E, X, and A is necessary to calculate a, b and c. These vectors are defined in Equation 5 below. The vector E is represented with the MAD error value having x values of −1, 0 and 1, and the vector X is represented with a matrix of parameters of a, ab, and c. The relationship of the matrix can be expressed by E=XA.
To deduce the Equation 2, the vector matrix can be written by Equation 6:
[Equation 6]
The model parameters can be obtained according to Equation 7:
Since the values of a, b and c are computed using Equation 7, the LIN model can be generated. Further, error values at other locations, for example, ε(−2) and ε(2), can also be calculated using the LIN model according to Equation 8:
ε(−2)=2a+ab+c
ε(2)=2a−ab+c [Equation 8]
The QUAD model can be obtained in a manner similar to the above-described process. That is to say, error values at integer locations can be obtained by applying −1, 0 and 1 to the x value in Equation 3, as given by Equation 9:
ε(−1)=a−b+c
ε(0)=c
ε(1)=a+b+c [Equation 9]
The vectors E, X and A given in Equation 5 are defined in Equation 10:
To deduce the Equation 3, the vector matrix can be written by Equation 11:
The model parameters can be obtained according to Equation 12 below:
The computed values of a, b and c are used in obtaining the QUAD model represented in Equation 3 and the error values at other locations, for example, ε(−2) and ε(2), can also be generated using the QUAD model according to Equation 13 below:
ε(−2)=4a−2b+c
ε(2)=4a+2b+c [Equation 13]
The above-described processes are provided as only exemplary embodiments for obtaining an LIN model and a QUAD model, and changes or modifications of the process may be made according to the model used.
The video encoder 400 shown in
The integer pixel calculator 410 calculates a motion vector of an integer pixel from an input video signal. Then, the motion vector of the integer pixel is used to estimate a sub-pixel motion vector. Of course, the integer pixel calculator 410 also calculates a motion vector of a half pixel and generates data used to estimate a quarter pixel motion vector according to the type of a sub-pixel. That is to say, the integer pixel calculator 410 is an example of an integer pixel calculator providing data necessary for estimating a smaller unit sub-pixel motion vector.
The first model calculator 421, the second model calculator 422, and the N-th model calculator 429 generate estimation models using the calculation result from the integer pixel calculator 410. In addition, the first model calculator 421, the second model calculator 422, and the N-th model calculator 429 calculate errors of half pixels to be obtained using the estimation models. Each model calculator may be independently implemented by model within an encoder. Also, there may be a model calculator capable of calculating a plurality of models using input integer pixel information.
The model selector 430 compares errors between each of motion vectors from the calculated plurality of models with one another and selects a model having the smallest error. The selected model having the smallest error is to be used later when encoding a half pixel or quarter pixel motion vector.
The motion estimator 450 estimates a motion vector of a sub-pixel such as a half pixel or a quarter pixel according to the selected model. The motion estimator 450 may perform motion estimation by frame, macroblock, or subblock, according to the selected model.
As shown in
Model switching can be expressed as Equation 15:
A model having the smallest difference is selected at the current location and an estimation process is then performed.
In addition to the LIN and QUAD models, any one among a variety of models that has the smallest difference can be used for motion estimation. Furthermore, motion estimation can be performed over processing time by frame, macroblock, or subblock.
As described above, the present invention provides for an apparatus and a method for encoding a video signal by selecting one among a plurality of models for estimating a sub-pixel motion vector.
In addition, the present invention allows a model to be adaptively selected according to characteristics of a video signal, thereby increasing compression efficiency.
Although an exemplary embodiments of the present invention have been shown and described, the present invention is not limited to the described embodiment. Instead, it would be appreciated by those skilled in the art that changes may be made to the embodiment without departing from the principles and spirit of the invention, the scope of which is defined by the claims and their equivalents.
Number | Date | Country | Kind |
---|---|---|---|
10-2006-0035906 | Apr 2006 | KR | national |
This application claims priority from Korean Patent Application No. 10-2006-0035906 filed on Apr. 20, 2006 in the Korean Intellectual Property Office, and U.S. Provisional Patent Application No. 60/690,131 filed on Jun. 14, 2005 in the United States Patent and Trademark Office, the disclosures of which are incorporated herein by reference in their entirety.
Number | Date | Country | |
---|---|---|---|
60690131 | Jun 2005 | US |