KR20000061805A - Method of and apparatus for acquiring motion vectors of control points by vector quantization in control grid interpolation coder - Google Patents
Method of and apparatus for acquiring motion vectors of control points by vector quantization in control grid interpolation coder Download PDFInfo
- Publication number
- KR20000061805A KR20000061805A KR1019990011149A KR19990011149A KR20000061805A KR 20000061805 A KR20000061805 A KR 20000061805A KR 1019990011149 A KR1019990011149 A KR 1019990011149A KR 19990011149 A KR19990011149 A KR 19990011149A KR 20000061805 A KR20000061805 A KR 20000061805A
- Authority
- KR
- South Korea
- Prior art keywords
- vector
- motion vector
- component
- control point
- motion
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
본 발명은 제어그리드보간(Control grid interpolation ) 방식에 의한 움직임 추정시에 벡터양자화 기술을 이용하여 제어점(Control point )의 움직임 벡터 (Motion Vector)를 산출하는 기술에 관한 것으로 특히, 단위블럭의 보상오차를 가중치로 이용하여 벡터양자화하는 벡터양자화를 이용한 제어점의 움직임 벡터 산출 방법 및 장치에 관한 것이다.The present invention relates to a technique for calculating a motion vector of a control point using a vector quantization technique when estimating motion by a control grid interpolation method, in particular, a compensation error of a unit block. The present invention relates to a method and apparatus for calculating a motion vector of a control point using vector quantization for quantizing a vector using a weight as a weight.
일반적으로, 영상신호 처리기술에서 '움직임 추정(motion estimation)'이란 연속되는 영상신호에서 현재 프레임(current frame)의 화소(pixel)들이 이전 프레임(previous frame)에 비해 어느 정도 움직였는지를 벡터로 표시한 움직임 벡터 (motion vector)를 추정하여, 전체 영상을 전송하는 대신에, 이들 움직임 벡터를 전송함으로써 전송정보를 줄이는 기술(즉, 영상압축)을 말하는 것이다.In general, 'motion estimation' in a video signal processing technology indicates, in vector, how much pixels of a current frame have moved compared to a previous frame in a continuous video signal. Instead of estimating a motion vector and transmitting the entire image, a technique of reducing transmission information by transmitting these motion vectors (ie, image compression) is described.
이러한 움직임 추정에서 널리 사용되는 블럭 정합 알고리즘(BMA: Block Matching Algorithm)은 도 1에 도시된 바와 같이, 화면의 움직임이 수평 또는 수직으로 평행 이동한 것으로 가정하여, 움직임이 일어난 프레임(즉, 현재 프레임)의 블럭영상이 움직임이 일어나기 전 프레임(즉, 이전 프레임)의 어느 위치에 있는 블럭영상과 가장 일치하는가를 추정하여 그 위치를 움직임 벡터로서 추정하는 방법이다. 이때, 블럭의 크기로는 8 x 8, 16 x 16( 가로 픽셀 수 x 세로 픽셀 수 )을 주로 사용한다. 여기서, 현재 프레임의 레퍼런스 블럭(reference block 혹은 current block)과 가장 유사한 이전 블럭을 찾기 위하여 이전 프레임(previous frame)에서 레퍼런스 블럭의 위치를 중심으로 일정 범위 안을 찾게 되는데, 이러한 범위를 "서치 윈도우(search window 혹은 area)"라 하고, 이러한 서치 윈도우안에서 각 후보블럭(candidate block)과의 차를 디스토션(distortion; 또는 절대에러(AE)라고도 한다)이라 하며, 두 블럭간의 유사정도를 나타낸다.The block matching algorithm (BMA) widely used in such motion estimation assumes that the motion of the screen is moved horizontally or vertically in parallel, as shown in FIG. ) Is a method of estimating the position of the block image at the position of the frame image (ie, the previous frame) before the motion occurs most, and estimating the position as a motion vector. At this time, the size of the block is mainly used 8 x 8, 16 x 16 (the number of horizontal pixels x the number of vertical pixels). Here, in order to find the previous block most similar to the reference block or current block of the current frame, the search is performed within a predetermined range around the position of the reference block in the previous frame. window or area), and the difference between each candidate block in this search window is called a distortion (also called an absolute error (AE)), and indicates the degree of similarity between the two blocks.
또한, 서치 윈도우안의 모든 후보블럭과 레퍼런스 블럭을 비교하는 것을 "풀 서치 블럭매칭(full search block matching algorithm)"이라 하며, 수식적으로 가장 일치하는 블럭을 찾기 위하여 연속된 두 프레임의 영상중에서, 이전 프레임을 f1(x,y), 현재 프레임을 f2(x,y)라 했을 때, f2(x,y)와 f1(x-a, y-b)에서 a,b를 변화시켜 가면서 f1(x-a,y-b)와 f2(x,y)의 차를 구하여, 그 차가 최소가 되는 (a,b)를 움직임 벡터로 예측한다. 이와 같이 블럭간의 최소오차를 구하는 방법으로는 평균절대오차(MAE:Mean Absolute Error)와 평균제곱오차(MSE:Mean Squared Error)등이 있다.In addition, comparing all candidate blocks and reference blocks in the search window is called a "full search block matching algorithm". When f 1 (x, y) is used as the frame and f 2 (x, y) as the current frame, f 1 (x, y) and f 1 (xa, yb) are changed by changing a, b to f 1 ( The difference between xa, yb) and f 2 (x, y) is obtained, and (a, b) at which the difference is minimum is predicted as a motion vector. As such, the minimum error between blocks includes a mean absolute error (MAE) and a mean squared error (MSE).
그런데 이러한 블럭매칭알고리즘(BMA)은 널리 알려진 바와 같이, 블럭단위로 획일적으로 움직임 벡터를 구하기 때문에 구획효과(Blocking effect)가 발생되어 화질이 열화되는 문제점이 있다.However, the block matching algorithm (BMA), as is widely known, has a problem of degrading image quality due to a blocking effect due to obtaining a motion vector uniformly in units of blocks.
한편, 움직임 추정을 블럭이 아닌 화소(pixel) 단위로 할 경우에 구획효과( Blocking effect)는 방지되나 각 화소의 움직임 벡터를 산출하기 위하여 계산량이 막대하게 증가하기 때문에 실제 사용되기 어려운 문제점이 있다.On the other hand, when the motion estimation is performed in units of pixels rather than blocks, the blocking effect is prevented, but the computational amount is greatly increased to calculate the motion vector of each pixel.
따라서 이와 같은 블럭단위의 움직임 추정과 화소단위의 움직임 추정이 갖는 장점들을 결합하여, 계산량을 줄이면서도 화소별로 각각의 움직임 벡터를 구할 수 있는 제어 그리드 보간(Control Grid Interpolation) 기술이 제안되어 널리 연구되고 있다. 즉, 제어 그리드 보간( CGI: Control Grid Interpolation)기법은 기존의 블럭 정합 알고리즘(BMA:Block Matching Algorithm)기법과 비교하여 구조는 복잡하나 다양한 모델의 움직임을 표현할 수 있고, 구획효과를 방지할 수 있다는 장점이 있다.Therefore, by combining the advantages of the block-based motion estimation and the pixel-based motion estimation, a control grid interpolation technique that can calculate the motion vector for each pixel while reducing the calculation amount has been proposed and widely studied. have. In other words, the control grid interpolation (CGI) technique is complicated in comparison with the conventional block matching algorithm (BMA) technique, but it can express the movement of various models and prevent compartment effects. There is an advantage.
이러한 제어 그리드 보간법은 도 2a에 도시된 바와 같이, 한 프레임의 영상을 소정 단위의 영역으로 구분하여 제어점(CP11~CP67)을 설정하고, 제어점들의 움직임 벡터를 구하는 것이다. 그리고 제어점들의 움직임 벡터가 구해지면 도 2b에 도시된 바와 같이 제어점 사이의 픽셀들의 움직임 벡터를 보간에 의해서 산출한다. 도 2a,b에서 CP11~CP67은 제어점을 나타낸다.In the control grid interpolation method, as illustrated in FIG. 2A, control points CP11 to CP67 are set by dividing an image of one frame into regions of a predetermined unit, and motion vectors of the control points are obtained. When the motion vectors of the control points are obtained, as shown in FIG. 2B, the motion vectors of the pixels between the control points are calculated by interpolation. In Figs. 2A and 2B, CP11 to CP67 represent control points.
이와 같이 제어그리드보간법은 각 픽셀들의 움직임 벡터를 일일이 구하는 것이 아니라 제어점들의 움직임 벡터만을 구한 후, 보간에 의해 제어점 사이의 픽셀들의 움직임 벡터를 구하므로써 BMA보다는 실제적인 움직임 벡터를 구할 수 있다. 이때 제어점은 NxN 블럭들의 경계점으로 정의할 수 있으며, 인접한 제어점의 움직임 벡터 값에 영향을 받는다. 따라서 제어점의 움직임 벡터를 구하기 위해서는 각 제어점에 초기값을 부여한 후, 프레임의 시작부분부터 끝부분까지 순차적으로 최적화 과정을 진행한다. 이때 최적화된 제어점의 움직임 벡터값도 다음 제어점의 움직임 벡터값이 최적화되면서 변함에 따라 다시 최적화될 필요가 있기 때문에, 제어점들에 대한 최적화가 진행되면서 이전 제어점들의 움직임 벡터값도 연쇄적으로 변하게 된다. 즉, 종래에는 제어점의 움직임 벡터를 최적화하는 과정에서 인접하는 제어점의 값이 변함에 따라 한 프레임의 전체 제어점에 대한 최적화가 완료될 때까지 순환반복적인 검색이 필요하게 되어 계산량이 증가하게 되는 문제점이 있다.As described above, the control grid interpolation method obtains the motion vectors of the control points rather than the motion vectors of each pixel, and then obtains the actual motion vector rather than the BMA by interpolating the motion vectors of the pixels between the control points. In this case, the control point may be defined as a boundary point of NxN blocks, and is affected by the motion vector value of the adjacent control point. Therefore, in order to obtain the motion vector of the control point, the initial value is given to each control point, and the optimization process is sequentially performed from the beginning to the end of the frame. At this time, the motion vector value of the optimized control point also needs to be optimized again as the motion vector value of the next control point is optimized, and thus the motion vector value of the previous control points is changed in series as the optimization of the control points proceeds. In other words, in the process of optimizing the motion vector of the control point, as the value of the adjacent control point changes, the recursive search is required until the optimization of the entire control point of one frame is completed. have.
이와 같이, 제어그리드 보간법을 사용하기 위해서는 각 제어점에서의 최적 움직임 벡터를 계산하기 위해서 많은 계산을 필요로하기 때문에 이용에 문제점이 있다. 이러한 문제점을 보완하기 위하여 기존의 BMA에 사용되었던 기법을 비롯하여 순환반복 검색의 회수를 효과적으로 줄일 수 있는 기법 등이 제안되었으나 기존의 기법 모두 순환반복 검색의 틀안에서 움직임 벡터를 추출하기 위한 시도로서 계산량절감에 한계가 있다. 따라서 실제 응용에서 제어 그리드 보간(CGI) 기술을 사용하기 위해서는 순환반복 검색이 불필요한 새로운 움직임 벡터 추출기법이 요구된다.As described above, in order to use the control grid interpolation method, a lot of calculations are required to calculate an optimal motion vector at each control point, which is problematic in use. In order to compensate for this problem, techniques that have been used in the existing BMA as well as techniques that can effectively reduce the number of recursive retrieval searches have been proposed. There is a limit to. Therefore, in order to use the control grid interpolation (CGI) technique in practical applications, a new motion vector extraction technique is required, which requires no recursive recursive search.
이에 본 발명은 상기와 같은 문제점을 해소하기 위하여 안출된 것으로, 제어그리드 보간 기법에 따른 제어점(control points)들의 움직임 벡터들을 벡터 양자화 (VQ: vector quantization) 기술을 이용하여 구하는 방법 및 그 장치를 제공하는데 그 목적이 있다.Accordingly, the present invention has been made to solve the above problems, and provides a method and apparatus for obtaining motion vectors of control points according to a control grid interpolation technique using vector quantization (VQ) technology. Its purpose is to.
상기와 같은 목적을 달성하기 위하여 본 발명의 방법은, 입력영상 화소들을 소정 크기의 블럭으로 구분하여 블럭매칭알고리즘 (BMA)에 따라 각 블럭들의 움직임 벡터(MV)와 움직임보상오차(MCE)를 산출하는 단계; 입력영상 화소들의 블럭 경계에서 제어점(control point)을 정의하는 단계; 산출하고자 하는 현재 제어점을 중심으로 소정 크기의 블럭영역(N x N)을 설정하여 입력벡터를 형성하는 단계; NxN 입력벡터의 움직임보상오차(MCE)로부터 가중치를 산출하는 단계; 코드북의 코드워드와 입력벡터, 가중치를 소정 식에 대입하여 평균제곱오차 (MSE)를 구하는 단계; 및 입력벡터에 대한 각 코드워드의 평균제곱오차(MSE)를 비교하여 평균제곱오차(MSE)가 최소인 코드워드를 제어점의 움직임 벡터로서 출력하는 단계(S6)를 포함하는 것을 특징으로 한다.In order to achieve the above object, the method of the present invention divides the input image pixels into blocks having a predetermined size and calculates a motion vector (MV) and a motion compensation error (MCE) of each block according to a block matching algorithm (BMA). Making; Defining a control point at a block boundary of the input image pixels; Forming an input vector by setting a block area N × N having a predetermined size around a current control point to be calculated; Calculating a weight from a motion compensation error (MCE) of the N × N input vector; Obtaining a mean square error (MSE) by substituting a codeword, an input vector, and a weight of a codebook into a predetermined equation; And comparing the mean square error (MSE) of each codeword with respect to the input vector, and outputting a codeword having a minimum mean square error (MSE) as a motion vector of the control point (S6).
그리고 상기와 같은 목적을 달성하기 위한 본 발명의 장치는 입력영상을 프레임 단위로 저장하기 위한 프레임 메모리; 상기 프레임 메모리로부터 소정 크기의 블럭단위로 영상 데이터를 입력받아 블럭정합알고리즘(BMA)에 따라 움직임 벡터와 움직임보상오차를 구하는 블럭정합알고리즘 처리부; 상기 블럭정합알고리즘 처리부에서 산출된 움직임 벡터와 움직임보상오차를 저장하기 위한 메모리; 상기 메모리로부터 입력벡터에 대응하는 움직임보상오차를 입력받아 가중치를 계산하는 가중치계산부; x성분 코드북; 상기 메모리로부터 움직임 벡터의 x성분을 입력벡터로서 읽어와 상기 x성분 코드북의 코드워드와 상기 가중치를 소정 식에 대입하여 평균제곱오차를 구하고, 이 평균제곱오차가 최소인 코드워드를 제어점의 x성분 움직임벡터로서 출력하는 x성분 벡터 양자화기; y성분 코드북; 및 상기 메모리로부터 움직임 벡터의 y성분을 입력벡터로서 읽어와 상기 y성분 코드북의 코드워드와 상기 가중치를 소정 식에 대입하여 평균제곱오차를 구하고, 이 평균제곱오차가 최소인 코드워드를 제어점의 y성분 움직임벡터로서 출력하는 y성분 벡터 양자화기를 포함하는 것을 특징으로 한다.In addition, the apparatus of the present invention for achieving the above object comprises a frame memory for storing the input image in units of frames; A block matching algorithm processing unit which receives image data in units of blocks of a predetermined size from the frame memory and obtains a motion vector and a motion compensation error according to a block matching algorithm (BMA); A memory for storing a motion vector and a motion compensation error calculated by the block matching algorithm processor; A weight calculator configured to receive a motion compensation error corresponding to the input vector from the memory and calculate a weight; x component codebook; The x component of the motion vector is read from the memory as an input vector, the codeword of the x component codebook and the weight are substituted into a predetermined equation to obtain an average square error, and the code component having the minimum square error is the x component of the control point. An x component vector quantizer for outputting as a motion vector; y component codebook; And reading the y component of the motion vector from the memory as an input vector, substituting the codeword of the y component codebook and the weight into a predetermined equation to obtain an average square error, and calculating the codeword having the minimum square error of the control point y And a y component vector quantizer output as the component motion vector.
도 1은 블럭정합알고리즘(BMA)을 설명하기 위하여 도시한 개념도,1 is a conceptual diagram for explaining a block matching algorithm (BMA),
도 2a,b는 제어그리드보간(CGI) 방식에 따른 움직임 추정 기술을 설명하기 위하여 도시한 개념도,2A and 2B are conceptual views illustrating a motion estimation technique based on control grid interpolation (CGI);
도 3은 본 발명에 따라 제어점을 중심으로 형성된 블록들의 예를 도시한 도면,3 illustrates an example of blocks formed around a control point according to the present invention;
도 4는 본 발명에 따라 제어점의 움직임 벡터를 구하는 장치의 구성을 도시한 블럭도,4 is a block diagram showing the configuration of an apparatus for obtaining a motion vector of a control point according to the present invention;
도 5는 본 발명에 따라 제어점의 움직임 벡터를 구하는 방법을 도시한 흐름도이다.5 is a flowchart illustrating a method of obtaining a motion vector of a control point according to the present invention.
* 도면의 주요부분에 대한 부호의 설명* Explanation of symbols for main parts of the drawings
10: 프레임 메모리20: BMA처리부10: frame memory 20: BMA processing unit
30: 메모리40: 가중치 계산부30: memory 40: weight calculation unit
50,50': 벡터양자화기60,60': 코드북50,50 ': vector quantizer 60,60': codebook
70: 출력벡터 형성부70: output vector forming unit
이하에서는 첨부된 도면을 참조하여 본 발명의 실시예를 자세히 설명하기로 한다.Hereinafter, with reference to the accompanying drawings will be described an embodiment of the present invention;
먼저, 본 발명의 이해를 위하여 벡터 양자화 기술에 대해 간단히 설명한다.벡터양자화(VQ)는 K 공간의 벡터를 유한개의 코드북(codebook)에 매핑(mapping)시키는 방식으로서, 특히 복호기(Decoder)의 구조가 간단하다. 이러한 VQ는 벡터의 차원이 커질수록 그 성능이 향상되나, 실제 부호화 과정상에서 계산량이 차원의 증가에 따라 급격히 증가하고, 코드북의 설계가 어려워지기 때문에 벡터의 차원은 적정 수준으로 제한된다.First, a vector quantization technique will be briefly described for understanding of the present invention. Vector quantization (VQ) is a method of mapping a vector of K-space into a finite codebook, in particular, the structure of a decoder. Is simple. The performance of the VQ is improved as the dimension of the vector increases. However, since the amount of computation increases rapidly as the dimension increases in the actual encoding process, and the design of the codebook becomes difficult, the dimension of the vector is limited to an appropriate level.
앞서 설명한 바와 같이, VQ는 K공간의 벡터를 유한개의 코드북으로 매핑시키는 것이므로, 다음 수학식〈1〉과 같이 표현된다.As described above, since VQ maps a vector of K-space to a finite codebook, it is represented by the following equation (1).
상기 수학식〈1〉에서 k= 1....N 이고, min-1은 왜곡치를 최소화하는 코드북(codebook)상의 코드워드 Xk를 나타내며, d는 왜곡계수(distortion measure)를 나타낸다. 이때 왜곡계수는 입력벡터와 코드워드의 차로부터 정의할 수 있다.In Equation (1), k = 1 .... N, min -1 represents a codeword X k on a codebook for minimizing distortion, and d represents a distortion measure. In this case, the distortion coefficient may be defined from the difference between the input vector and the codeword.
VQ 부호기는 상기 수학식〈1〉과 같이 입력벡터 X에 대해 코드북으로부터 왜곡치가 최소인 코드워드 Xk를 찾아(search) 입력벡터 X나 코드워드 Xk대신에 코드워드 Xk를 표시하는 지표(INDEX)를 송신하여 고도의 압축을 이룩하게 되고, 수신측의 VQ 복호기에서는 수신된 지표(INDEX)로부터 룩업테이블을 사용하여 송신측과 동일한 코드북으로부터 해당 코드워드 Xk를 찾아 원래의 정보를 복원하게 된다. 이때, VQ 부호기는 입력벡터 X로부터 왜곡치가 최소인 코드워드 Xk를 찾기 위한 과정이 복잡하나 VQ 복호기는 지표(INDEX)로부터 해당 부호를 꺼내기만 하므로 간단하게 구현될 수 있다.The VQ encoder finds a codeword X k having a minimum distortion value from the codebook with respect to the input vector X as shown in Equation (1), and displays an index that represents the codeword X k instead of the input vector X or the codeword X k . INDEX) is used to achieve a high level of compression, and the VQ decoder at the receiver uses a lookup table from the received index to find the corresponding codeword X k from the same codebook as the transmitter and restore the original information. do. At this time, the VQ encoder is complicated to find the codeword X k having the minimum distortion value from the input vector X, but the VQ decoder can be implemented simply because it only extracts the corresponding code from the index INDEX.
한편, 상기 수학식〈1〉로 주어지는 VQ의 코드북(codebook)을 만드는 일반적인 방법으로는 LBG(Linde, Buzo 및 Gray: 인명임)알고리즘이 널리 사용되는데, LBG알고리즘의 개요는 코드워드는 입력벡터에 가장 가까운(distortion 측면에서) 코드워드이어야 한다는 조건(nearest neighbor condition)과 같은 코드워드로 부호화되는 벡터들의 중심점(distortion 측면에서)이 코드워드이어야 한다는 조건(centroid condition)의 두가지 제한 조건에 따라 반복적으로 코드북을 만들어 나가는 것이다. 이와 같이 코드북이 완성된 후, VQ 부호기는 입력벡터와 코드북의 코드워드를 비교하여 왜곡치를 최소로 하는 코드워드를 찾아 지표(INDEX)를 구한다.On the other hand, LBG (Linde, Buzo and Gray: Algorithm) algorithm is widely used as a general method for making a VQ codebook given by Equation < 1 >. Repeatedly with two constraints: the center point of the vectors encoded with the codeword (in terms of distortion) must be the codeword, such as the nearest neighbor condition. Is to create a codebook. After the codebook is completed as described above, the VQ encoder compares an input vector with a codeword of the codebook to find a codeword that minimizes distortion and obtains an index.
도 3은 본 발명에 따른 제어점의 움직임 벡터 추정 개념을 도시한 개념도이다. 본 발명의 실시예에서 제어점의 움직임 벡터는 도 3에 도시된 바와 같이, 제어점(cp)에 인접하는 4 x 4 블럭들의 움직임 벡터들에 의해 정해지는데, 각 블럭의 움직임 벡터를 MV1 ~ MV16이라 한다. 이때, 각 블럭의 움직임 벡터는 통상의 블럭매칭알고리즘(BMA)에 의해 미리 구해진 것이고, 제어점(cp)의 움직임 벡터는 인접하는 블럭들의 움직임 벡터를 벡터 양자화 기술을 이용하여 구한다. 즉, 제어점(cp)의 움직임 벡터는 인접하는 블럭들에 의해 영향을 받게 되므로 제어점(cp)을 중심으로 적정한 크기의 인접한 블럭군을 형성(이를 '블럭영역'이라 한다)한 후, 인접블럭들의 움직임 벡터를 입력벡터로 하는 벡터 양자화 기술에 의해 구한다. 예컨대, 제어점(cp)을 중심으로 2 x 2 혹은 4 x 4등의 인접블럭군(블럭영역)을 형성할 경우에 4개의 움직임 벡터 혹은 16개의 움직임 벡터로부터 제어점(cp)의 움직임 벡터를 구할 수 있다.3 is a conceptual diagram illustrating a motion vector estimation concept of a control point according to the present invention. In the embodiment of the present invention, as shown in Figure 3, the motion vector of the control point is determined by the motion vectors of the 4 x 4 blocks adjacent to the control point (cp), the motion vector of each block is called MV1 ~ MV16 . At this time, the motion vector of each block is obtained in advance by a conventional block matching algorithm (BMA), and the motion vector of the control point cp is obtained by using vector quantization techniques. That is, since the motion vector of the control point cp is influenced by the adjacent blocks, an adjacent block group of appropriate size is formed around the control point cp (called a 'block area'), and then Obtained by a vector quantization technique using a motion vector as an input vector. For example, in the case of forming an adjacent block group (block area) such as 2 x 2 or 4 x 4 around the control point cp, the motion vector of the control point cp can be obtained from four motion vectors or 16 motion vectors. have.
본 발명의 실시예에서와 같이 NxN(4x4)의 움직임 벡터로부터 통상의 벡터 양자화 기술을 적용하여 제어점의 움직임 벡터를 구할 경우에 NxN 움직임 벡터의 수평(x)성분과 수직(y)성분을 각각 L, M개의 코드워드를 갖는 수평(x)성분 VQ와 수직(y)성분 VQ에 입력하여 다음 수학식2 및 수학식3과 같은 방식으로 각 성분의 평균제곱오차(MSE:Mean Square Error)를 구해 각 코드워드와 입력벡터간의 차를 계산한다. 그리고 가장 작은 평균제곱오차를 나타내는 코드워드가 선택되면, 그 코드워드에 할당된 값을 제어점의 움직임 벡터로서 출력한다.As in the embodiment of the present invention, when a motion vector of a control point is obtained by applying a conventional vector quantization technique from a motion vector of NxN (4x4), the horizontal (x) component and the vertical (y) component of the NxN motion vector are respectively L. The mean square error (MSE: Mean Square Error) of each component is obtained by inputting the horizontal (x) component VQ and the vertical (y) component VQ having M codewords. Compute the difference between each codeword and input vector. When a codeword showing the smallest mean square error is selected, the value assigned to the codeword is output as a motion vector of the control point.
상기 수학식2와 수학식 3에서 Ex는 움직임 벡터의 x성분 평균제곱오차(MSE)를 나타내고, Ey는 움직임 벡터의 y성분 평균제곱오차(MSE)를 나타내며, MVx(i,j)는 움직임 벡터의 x성분, MVy(i,j)는 움직임 벡터의 y성분을 나타낸다. 그리고 Cl x(i,j)는 x성분 코드북의 코드워드를 나타내고, Cl y(i,j)는 y성분 코드북의 코드워드를 나타낸다.In Equations 2 and 3, Ex represents an x-component mean square error (MSE) of the motion vector, Ey represents an y-component mean square error (MSE) of the motion vector, and MVx (i, j) represents a motion vector. X component, MVy (i, j) represents the y component of the motion vector. And C l x (i, j) represents the codeword of the x component codebook, and C l y (i, j) represents the codeword of the y component codebook.
그런데 수학식 2 및 수학식 3과 같은 MSE를 사용할 경우에 그 값은 단순한 벡터간의 차로서, 상기 MSE를 최소로 하는 것과 해당 영역의 움직임 보상오차(MCE)를 최소화하는 것과는 차이가 있을 수 있다. 여기서, 움직임 보상오차란, BMA에 따라 움직임 벡터를 구하는 과정에서 최종적으로 구해진 움직임 벡터의 후보블럭과 레퍼런스 블럭과의 차이를 뜻한다.However, when MSEs such as Equation 2 and Equation 3 are used, the values are simple differences between vectors, and there may be a difference between minimizing the MSE and minimizing the motion compensation error (MCE) of the corresponding region. Here, the motion compensation error means a difference between the candidate block and the reference block of the motion vector finally obtained in the process of obtaining the motion vector according to the BMA.
따라서 본 발명은 벡터양자화 과정에서 움직임 보상오차(MCE:Motion Compensation Error)를 고려하여 MSE를 산출하므로써 보다 최적의 움직임 벡터를 구할 수 있게 한 것이다.Therefore, the present invention is to obtain a more optimal motion vector by calculating the MSE in consideration of the motion compensation error (MCE: Motion Compensation Error) in the vector quantization process.
도 4는 본 발명에 따라 제어점의 움직임 벡터를 구하는 장치의 구성을 도시한 블럭도로서, 이 장치는 프레임 메모리(10), BMA처리부(20), 움직임 벡터 메모리(30), 가중치 계산부(40), x성분 벡터 양자화기(50), x성분 코드북(60), y성분 벡터 양자화기(50'), y성분 코드북(60'), 출력벡터 형성부(70)로 구성되어 있다.4 is a block diagram showing a configuration of an apparatus for obtaining a motion vector of a control point according to the present invention, which includes a frame memory 10, a BMA processing unit 20, a motion vector memory 30, and a weight calculation unit 40. ), an x component vector quantizer 50, an x component codebook 60, a y component vector quantizer 50 ′, a y component code book 60 ′, and an output vector forming unit 70.
도 4를 참조하면, 프레임 메모리(10)는 부호화를 위한 현재 프레임의 영상과 이전 프레임의 영상을 프레임 단위로 저장하고 있고, BMA처리부(20)는 프레임 메모리(10)로부터 레퍼런스블럭을 입력받아 이전 프레임의 후보블럭과 비교하여 그 블럭의 움직임 벡터를 산출한다. 이때 BMA처리부(20)는 해당 블럭의 움직임 벡터와 함께 움직임 벡터의 움직임 보상 오차(MCE)를 출력한다.Referring to FIG. 4, the frame memory 10 stores an image of a current frame for encoding and an image of a previous frame in units of frames, and the BMA processing unit 20 receives a reference block from the frame memory 10 to transfer the image. The motion vector of the block is calculated by comparing with the candidate block of the frame. In this case, the BMA processor 20 outputs a motion compensation error (MCE) of the motion vector together with the motion vector of the corresponding block.
메모리(30)는 블럭정합알고리즘 (BMA) 처리부(20)의 움직임 벡터(MV)와 해당 움직임 보상오차를 저장하고 있다. 이때 메모리(30)는 적어도 도 3에 도시된 바와 같은 4 x 4 움직임 벡터들과 그 움직임보상오차(MCE)를 저장하고 있어야 한다.The memory 30 stores a motion vector MV of the block matching algorithm (BMA) processing unit 20 and a corresponding motion compensation error. In this case, the memory 30 should store at least 4 × 4 motion vectors and its motion compensation error MCE as shown in FIG. 3.
가중치 계산부(40)는 메모리로부터 입력벡터의 움직임보상오차(MCE)를 입력받아 가중치(W)를 산출하여 x성분 벡터양자화기와 y성분 벡터양자화기에 제공한다. 이때 가중치(W(i,j))는 다음 수학식4와 같이 구해진다.The weight calculator 40 receives the motion compensation error MCE of the input vector from the memory, calculates the weight W, and provides the weight W to the x component vector quantizer and the y component vector quantizer. At this time, the weight W (i, j) is obtained as in Equation 4 below.
x성분 코드북(60)은 움직임 벡터의 x성분 입력벡터에 대한 코드워드들을 저장하고 있고, x성분 벡터양자화기(50)는 메모리(30)로부터 움직임 벡터의 x 성분 입력벡터를 읽어와 코드북(60)의 코드워드(Cl x(i,j))와 가중치(W(i,j))를 고려하여 다음 수학식5와 같이 평균제곱오차(MSE)를 구하고, 그 값이 최소인 코드워드를 제어점의 x성분 움직임 벡터로서 출력한다.The x-component codebook 60 stores codewords for the x-component input vector of the motion vector, and the x-component vector quantizer 50 reads the x-component input vector of the motion vector from the memory 30 to read the codebook 60. In consideration of the codeword C l x (i, j) and the weight W (i, j), the mean square error (MSE) is obtained as shown in Equation 5 below. Output as the x component motion vector of the control point.
y성분 코드북(60')은 움직임 벡터의 y성분 입력벡터에 대한 코드워드들을 저장하고 있고, y성분 벡터양자화기(50')는 메모리(30)로부터 움직임 벡터의 y성분 입력벡터(MVy(i,j))를 읽어와 코드북(60')의 코드워드(Cm y(i,j))와 가중치(W(i,j))를 고려하여 다음 수학식6과 같이 평균제곱오차(MSE)를 구하고, 그 값이 최소인 코드워드를 제어점의 y성분 움직임 벡터로서 출력한다.The y component codebook 60 'stores codewords for the y component input vector of the motion vector, and the y component vector quantizer 50' stores the y component input vector MV y ( i, j)), and taking into account the codewords C m y (i, j) and weights W (i, j) of the codebook 60 ', the mean square error (MSE) ), And the codeword having the minimum value is output as the y component motion vector of the control point.
출력벡터 형성부(70)는 x성분 벡터양자화기(50)와 y성분 벡터양자화기(50')가 출력하는 동일한 제어점의 x성분 움직임 벡터와 y성분 움직임 벡터를 결합하여 동일한 타이밍에 출력한다.The output vector forming unit 70 combines the x component motion vector and the y component motion vector of the same control point output from the x component vector quantizer 50 and the y component vector quantizer 50 'and outputs the same components at the same timing.
도 5는 본 발명에 따른 제어점의 움직임 벡터 산출절차를 도시한 흐름도이다. 도 5를 참조하면, 본 발명의 절차는 입력영상 화소들을 소정 픽셀 크기의 블럭으로 구분하여 블럭매칭알고리즘(BMA)에 따라 각 블럭들의 움직임 벡터와 움직임보상오차(MCE)를 산출하는 단계(S1)와, 입력영상 화소들의 블럭 경계에서 제어점(control point)을 정의하는 단계 (S2), 산출하고자 하는 현재 제어점을 중심으로 소정 크기의 블럭영역(N x N 블럭)을 설정하여 입력벡터를 형성하는 단계(S3), NxN 입력벡터의 움직임보상오차(MCE)로부터 가중치를 산출하는 단계(S4), 코드북의 코드워드와 입력벡터, 가중치를 상기 수학식5 및 수학식6에 대입하여 평균제곱오차(MSE)를 구하는 단계(S5), 입력벡터에 대한 각 코드워드의 평균제곱오차(MSE)를 비교하여 평균제곱오차(MSE)가 최소인 코드워드를 제어점의 움직임 벡터로서 출력하는 단계(S6)로 구성된다.5 is a flowchart illustrating a motion vector calculation procedure of a control point according to the present invention. Referring to FIG. 5, the procedure of the present invention divides the input image pixels into blocks having a predetermined pixel size and calculates a motion vector and a motion compensation error MCE of each block according to a block matching algorithm BMA. And defining a control point at block boundaries of the input image pixels (S2), and forming a input vector by setting a block area (N x N blocks) of a predetermined size around the current control point to be calculated. (S3), calculating a weight from the motion compensation error (MCE) of the N × N input vector (S4), substituting the codeword, the input vector, and the weight of the codebook into Equation 5 and Equation 6 to obtain the mean square error (MSE). ), And comparing the mean square error (MSE) of each codeword with respect to the input vector (S5) and outputting a codeword having a minimum mean square error (MSE) as a motion vector of the control point (S6). do.
좀 더 자세히 살펴보면, 단계 S1에서는 입력영상을 프레임 메모리(10)에 저장한 후, 블럭으로 구분하여 각 블럭의 움직임 벡터와 움직임 보상오차(MCE)를 BMA에 따라 구한다. 이때, 블럭의 크기는 필요에 따라 8x8 픽셀 혹은 16x16 픽셀 등으로 다양하게 정할 수 있다.In more detail, in step S1, the input image is stored in the frame memory 10, and then divided into blocks to obtain a motion vector and a motion compensation error (MCE) of each block according to the BMA. In this case, the size of the block may be variously determined as 8x8 pixels or 16x16 pixels as necessary.
이어 단계 S2 에서는 프레임 메모리(10)의 블럭 경계점에 제어점(CP:control point)을 설정하고, 단계 S3에서는 현재 제어점을 중심으로 소정 크기(NxN)의 블럭영역을 설정하여 입력벡터를 형성한다. 이때 움직임 벡터의 x성분과 y성분은 서로 구분되어 x성분 입력벡터와 y성분 입력벡터를 형성하게 된다.Subsequently, in step S2, a control point (CP) is set at a block boundary point of the frame memory 10, and in step S3, a block area having a predetermined size (NxN) is set around the current control point to form an input vector. At this time, the x component and the y component of the motion vector are separated from each other to form an x component input vector and a y component input vector.
그리고 단계 S4에서는 상기 수학식 4에 따라 움직임보상오차(MCE)로부터 가중치(W(i,j))를 산출하고, 단계 S5에서는 x 성분 입력벡터를 x성분 코드북(60)의 코드워드와 가중치를 고려하여 수학식5에 따라 계산하여 MSE를 구함과 아울러, y 성분 입력벡터를 y성분 코드북(60')의 코드워드와 가중치를 고려하여 수학식6에 따라 계산하여 MSE를 구한다. 단계 S6에서는 수학식5 및 수학식6에 따라 구해진 MSE를 각각 비교하여 MSE가 최소인 x성분 코드워드와 y성분 코드워드를 제어점의 움직임 벡터로서 출력한다.In step S4, the weight W (i, j) is calculated from the motion compensation error MCE according to Equation 4, and in step S5, the x component input vector is converted into the codeword and weight of the x component codebook 60. In addition, the MSE is obtained by calculating according to Equation 5 and the y component input vector is calculated according to Equation 6 in consideration of the codeword and weight of the y component codebook 60 'to obtain the MSE. In step S6, the MSEs calculated according to Equations 5 and 6 are compared, respectively, and an x component codeword and a y component codeword having the minimum MSE are output as a motion vector of the control point.
이상에서 살펴본 바와 같이, 본 발명은 영상부호화 기술에 제어그리드보간(CGI) 방식을 적용하여 움직임 추정을 할 경우에, 종래와 같이 순환반복적인 검색을 필요로 하지 않고 벡터양자화 기술을 이용하여 간단하게 제어점의 움직임 벡터를 구할 수 있는 효과가 있다. 특히, 벡터 양자화 기술을 적용함에 있어서 움직임보상오차(MCE)를 가중치로 하여 정밀하게 평균제곱오차(MSE)를 계산하므로써 최적의 움직임 벡터를 구할 수 있다.As described above, when the present invention performs motion estimation by applying a control grid interpolation (CGI) method to an image encoding technique, the present invention simply does not require a cyclic repetitive search and uses a vector quantization technique. This has the effect of obtaining the motion vector of the control point. In particular, in applying the vector quantization technique, an optimal motion vector can be obtained by accurately calculating the mean square error (MSE) by using the motion compensation error (MCE) as a weight.
Claims (3)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019990011149A KR100296099B1 (en) | 1999-03-31 | 1999-03-31 | Method of and apparatus for acquiring motion vectors of control points by vector quantization in control grid interpolation coder |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019990011149A KR100296099B1 (en) | 1999-03-31 | 1999-03-31 | Method of and apparatus for acquiring motion vectors of control points by vector quantization in control grid interpolation coder |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20000061805A true KR20000061805A (en) | 2000-10-25 |
KR100296099B1 KR100296099B1 (en) | 2001-07-12 |
Family
ID=19578305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019990011149A KR100296099B1 (en) | 1999-03-31 | 1999-03-31 | Method of and apparatus for acquiring motion vectors of control points by vector quantization in control grid interpolation coder |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100296099B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7620107B2 (en) | 2004-03-12 | 2009-11-17 | Samsung Electronics Co., Ltd. | Video transcoding method and apparatus and motion vector interpolation method |
-
1999
- 1999-03-31 KR KR1019990011149A patent/KR100296099B1/en not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7620107B2 (en) | 2004-03-12 | 2009-11-17 | Samsung Electronics Co., Ltd. | Video transcoding method and apparatus and motion vector interpolation method |
Also Published As
Publication number | Publication date |
---|---|
KR100296099B1 (en) | 2001-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR0178231B1 (en) | Method and apparatus for detecting motion vectors based on hierarchical motion estimation | |
US5657087A (en) | Motion compensation encoding method and apparatus adaptive to motion amount | |
US8135070B2 (en) | Video coding method and apparatus for calculating motion vectors of the vertices of a patch of an image and transmitting information of horizontal and vertical components of the motion vectors | |
US5587741A (en) | Apparatus and method for detecting motion vectors to half-pixel accuracy | |
JP3013698B2 (en) | Vector quantization encoding device and decoding device | |
KR20000036099A (en) | Bit allocation for sequence image compression | |
KR100296099B1 (en) | Method of and apparatus for acquiring motion vectors of control points by vector quantization in control grid interpolation coder | |
KR100296097B1 (en) | Method of and apparatus for acquiring motion vectors of control points in control grid interpolation | |
JP3235453B2 (en) | Image coding device | |
JPH0262178A (en) | Motion detection system for picture processor | |
KR100302129B1 (en) | Apparatus for acquiring motion vectors of control points in control grid interpolation | |
KR100316411B1 (en) | Apparatus for acquiring motion vectors of control points by classified vector quantization in control grid interpolation coder | |
KR0152014B1 (en) | Method and apparauts for moving estimation in image data compression | |
JP3309519B2 (en) | Motion vector detection device | |
KR100296098B1 (en) | Apparatus for acquiring motion vectors of control points by seperated vector quantization in control grid interpolation coder | |
JPH0569354B2 (en) | ||
KR100296100B1 (en) | Apparatus for interpolating pixel motion vectors according to block patterns classified by vector quantization in control grid interpolation decoder | |
KR100240620B1 (en) | Method and apparatus to form symmetric search windows for bidirectional half pel motion estimation | |
JPH08116541A (en) | Image coder | |
KR100331048B1 (en) | Apparatus for interpolating pixel motion vectors in control grid interpolation decoder | |
JP2765528B2 (en) | Half-pixel accuracy motion vector search device | |
KR960013234B1 (en) | Koga - 3 stop motion vector detecting method for movement detecting apparatus | |
KR0154948B1 (en) | Motion vector search apparatus using the gradient and the intensity similarity of the moving picture | |
KR100617177B1 (en) | Motion estimation method | |
KR970010096B1 (en) | Two layer motion estimation apparatus and method for image data compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130502 Year of fee payment: 13 |
|
FPAY | Annual fee payment |
Payment date: 20140507 Year of fee payment: 14 |
|
LAPS | Lapse due to unpaid annual fee |