KR101318869B1 - Motion Vector Coding Method and Apparatus for Video Coding and Video Coding Method and Apparatus Using Same - Google Patents

Motion Vector Coding Method and Apparatus for Video Coding and Video Coding Method and Apparatus Using Same Download PDF

Info

Publication number
KR101318869B1
KR101318869B1 KR1020090080600A KR20090080600A KR101318869B1 KR 101318869 B1 KR101318869 B1 KR 101318869B1 KR 1020090080600 A KR1020090080600 A KR 1020090080600A KR 20090080600 A KR20090080600 A KR 20090080600A KR 101318869 B1 KR101318869 B1 KR 101318869B1
Authority
KR
South Korea
Prior art keywords
motion vector
differential
block
motion vectors
motion
Prior art date
Application number
KR1020090080600A
Other languages
Korean (ko)
Other versions
KR20110023023A (en
Inventor
김수년
임정연
김해광
전병우
문주희
이영렬
한종기
Original Assignee
에스케이텔레콤 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이텔레콤 주식회사 filed Critical 에스케이텔레콤 주식회사
Priority to KR1020090080600A priority Critical patent/KR101318869B1/en
Priority to PCT/KR2010/005788 priority patent/WO2011025301A2/en
Publication of KR20110023023A publication Critical patent/KR20110023023A/en
Application granted granted Critical
Publication of KR101318869B1 publication Critical patent/KR101318869B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 동영상 부호화를 위한 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치에 관한 것이다.The present invention relates to a motion vector encoding / decoding method and apparatus for video encoding, and an image encoding / decoding method and apparatus using the same.

본 발명은 블록의 움직임 벡터들, 예측 움직임 벡터들 및 차분 움직임 벡터들을 결정하고, 차분 움직임 벡터들의 평균 차분 움직임 벡터를 결정하며, 차분 움직임 벡터들에서 평균 차분 움직임 벡터를 감산하여 결정되는 차차분 움직임 벡터들을 부호화하여 움직임 벡터 부호화 데이터를 생성하는 것을 특징으로 하는 움직임 벡터 부호화 방법을 제공한다.The present invention determines a motion vector, predictive motion vectors, and differential motion vectors of a block, determines an average differential motion vector of differential motion vectors, and subtracts a motion determined by subtracting the average differential motion vector from the differential motion vectors. A motion vector encoding method is provided by encoding vectors to generate motion vector encoded data.

본 발명에 의하면, 움직임 벡터를 예측 부호화할 때, 차분 움직임 벡터의 성분의 값을 감소시킬 수 있으므로, 움직임 벡터가 부호화된 데이터의 비트량을 감소시킬 수 있으며, 그에 따라 동영상의 부호화 효율을 향상시킬 수 있다.According to the present invention, since the value of the component of the differential motion vector can be reduced when predicting and encoding the motion vector, the bit amount of the data encoded by the motion vector can be reduced, thereby improving the encoding efficiency of the video. Can be.

영상, 부호화, 복호화, 움직임 벡터, 차분, 평균, 비트량 Image, encoding, decoding, motion vector, difference, average, bit amount

Description

동영상 부호화를 위한 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치{Motion Vector Coding Method and Apparatus for Video Coding and Video Coding Method and Apparatus Using Same}Motion vector coding / decoding method and apparatus for video coding, and video coding / decoding method and apparatus using same {Motion Vector Coding Method and Apparatus for Video Coding and Video Coding Method and Apparatus Using Same}

본 발명은 동영상 부호화를 위한 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치에 관한 것이다. 더욱 상세하게는, 동영상을 움직임 보상 예측 부호화하기 위한 움직임 벡터를 부호화함에 따라 발생하는 비트량을 줄여 부호화 효율을 향상시키기 위한 방법 및 장치에 관한 것이다.The present invention relates to a motion vector encoding / decoding method and apparatus for video encoding, and an image encoding / decoding method and apparatus using the same. More specifically, the present invention relates to a method and apparatus for improving coding efficiency by reducing the amount of bits generated by encoding a motion vector for motion compensation predictive encoding of a video.

동영상 부호화 및 복호화 분야에서 통상적으로 사용되는 움직임 벡터 부호화 및 복호화 방법은 공간적으로 위치한 주변 블록의 움직임 벡터를 예측값으로 사용하여 움직임 예측된 해당 블록의 움직임 벡터에 대해 예측 부호화를 수행하는 것이다. 즉, 현재 블록의 움직임 벡터(이하, '현재 움직임 벡터'라 칭함)는 주변 블록의 움직임 벡터와 밀접한 상관관계를 가지고 있기 때문에, 소정의 방법을 통해 주변 블록의 움직임 벡터로부터 현재 움직임 벡터에 대한 예측값(이하, '예측 움직임 벡터'라 칭함)을 계산한 후, 현재 움직임 벡터의 값 자체를 부호화하지 않고 예측 움직임 벡터에 대한 차분 움직임 벡터만을 부호화함으로써 부호화해야 할 비트량을 상당히 줄여 부호화 효율을 높인다. 이뿐만 아니라, 이러한 예측 움직임 벡터를 최초 탐색점으로 하는 소정의 탐색범위를 이용하여 움직임 추정을 수행함으로써, 움직임 추정 과정에서 예측 움직임 벡터보다 더욱 유사한 움직임 벡터를 결정한다. 즉, 움직임 추정 과정에서 예측 움직임 벡터보다 더욱 유사한 움직임 벡터를 결정함으로써, 부호화해야 할 차분 움직임 벡터의 비트량을 감소시킨다.A motion vector encoding and decoding method commonly used in the field of video encoding and decoding is to perform predictive encoding on a motion vector of a motion predicted block using a motion vector of a spatially located neighboring block as a prediction value. That is, since the motion vector of the current block (hereinafter referred to as 'current motion vector') has a close correlation with the motion vector of the neighboring block, the predicted value for the current motion vector from the motion vector of the neighboring block by a predetermined method. After calculating (hereinafter, referred to as 'predictive motion vector'), the encoding efficiency is reduced by significantly reducing the amount of bits to be encoded by encoding only the differential motion vector for the predicted motion vector without encoding the value of the current motion vector itself. In addition, motion estimation is performed using a predetermined search range using the predicted motion vector as an initial search point, thereby determining a motion vector that is more similar to the predicted motion vector in the motion estimation process. That is, by determining a motion vector that is more similar than the predicted motion vector in the motion estimation process, the bit amount of the differential motion vector to be encoded is reduced.

통상적으로 이러한 움직임 벡터를 위한 예측 부호화에서는 효율적인 압축을 위하여 예측 움직임 벡터가 현재 움직임 벡터와 유사할수록 부호화 효율이 증대된다. 따라서, 단지 공간적으로 인접한 블록의 움직임 벡터뿐만 아니라, 시간적 또는 시공간적으로 인접한 블록의 움직임 벡터 또는 그들을 조합하는 방법으로 계산된 또 다른 움직임 벡터들로 이루어진 다수의 예측 움직임 벡터들을 후보로 생성하고, 그 중에서 현재 움직임 벡터의 부호화에 가장 적당한 것을 예측하여 사용하면 예측 부호화 효율을 더욱 증대시킬 수 있다. 이뿐만 아니라, 다수의 예측 움직임 벡터를 사용하면 각각의 예측 움직임 벡터에 따라 다수의 탐색 범위를 정의하고 움직임 추정을 수행함으로써, 현재 움직임 벡터를 각각의 예측 움직임 벡터보다 유사한 값으로 결정할 수 있으므로 부호화 효율을 더욱 증대시킬 수 있다. Typically, in the prediction encoding for such a motion vector, the encoding efficiency is increased as the prediction motion vector is similar to the current motion vector for efficient compression. Thus, candidates are generated that generate not only the motion vectors of the spatially adjacent blocks, but also a plurality of predictive motion vectors consisting of the motion vectors of temporally or spatiotemporally adjacent blocks or other motion vectors calculated by combining them. Predictive encoding efficiency can be further increased by predicting and using the most suitable for encoding the current motion vector. In addition, by using a plurality of prediction motion vectors, a plurality of search ranges are defined and motion estimation is performed according to each prediction motion vector, so that the current motion vector can be determined to have a value similar to that of each prediction motion vector. Can be further increased.

한편, 매크로블록과 같은 하나의 블록은 여러 서브블록으로 구성될 수 있고 각 서브블록마다 움직임 벡터를 가질 수 있으므로, 하나의 블록은 복수 개의 움직임 벡터를 가질 수 있다. 각 움직임 벡터는 x축 성분 및 y축 성분과 같은 두 개의 성분을 가지고 있다. 또한, 차분 움직임 벡터를 구성하는 두 개의 성분이 모두 '0'에 가까울수록 차분 움직임 벡터를 부호화하여 생성되는 데이터는 적은 비트수로 표현되어 부호화 효율이 좋아진다.Meanwhile, one block, such as a macroblock, may be composed of several subblocks, and each subblock may have a motion vector. Thus, one block may have a plurality of motion vectors. Each motion vector has two components, an x-axis component and a y-axis component. In addition, as the two components constituting the differential motion vector are closer to '0', data generated by encoding the differential motion vector is represented by a smaller number of bits, thereby improving encoding efficiency.

하지만, 하나의 블록이 여러 움직임 벡터를 가지는 여러 서브블록으로 구성되고 각 서브블록의 움직임 벡터들은 두 개의 성분을 가지고 있기 때문에, 통상적인 움직임 벡터 부호화 방식에 따르면, 하나의 블록에 대해 부호화해야 할 차분 움직임 벡터의 성분의 개수도 많아지므로, 차분 움직임 벡터의 절대값이 '0'에 근접하지 못할 가능성이 많아져서 움직임 벡터를 부호화하는 데 필요한 비트수가 증가하는 문제점이 있다.However, according to the conventional motion vector coding scheme, a difference to be coded for one block is required because a block is composed of several subblocks having several motion vectors and the motion vectors of each subblock have two components. Since the number of components of the motion vector is also increased, there is a possibility that the absolute value of the differential motion vector does not approach '0', thereby increasing the number of bits required for encoding the motion vector.

전술한 문제점을 해결하기 위해 본 발명은, 동영상의 움직임 예측 부호화에 이용되는 움직임 벡터를 예측 부호화할 때, 차분 움직임 벡터의 성분의 값을 줄여 움직임 벡터가 부호화된 데이터의 비트량을 감소시키는 데 주된 목적이 있다.In order to solve the above-described problem, the present invention is mainly used to reduce the amount of bits of data encoded with a motion vector by reducing the value of a component of a differential motion vector when predicting and encoding a motion vector used for motion prediction encoding of a video. There is a purpose.

전술한 목적을 달성하기 위해 본 발명은, 블록에 대한 움직임 벡터를 부호화하는 방법에 있어서, 블록의 움직임 벡터들, 예측 움직임 벡터들 및 차분 움직임 벡터들을 결정하는 단계; 차분 움직임 벡터들의 평균 차분 움직임 벡터를 결정하는 단계; 및 차분 움직임 벡터들에서 평균 차분 움직임 벡터를 감산하여 결정되는 차차분 움직임 벡터들을 부호화하여 움직임 벡터 부호화 데이터를 생성하는 단계를 포함하는 것을 특징으로 하는 움직임 벡터 부호화 방법을 제공한다.In order to achieve the above object, the present invention provides a method of encoding a motion vector for a block, comprising: determining motion blocks, predictive motion vectors, and differential motion vectors of a block; Determining an average differential motion vector of the differential motion vectors; And generating motion vector encoded data by encoding the differential differential motion vectors determined by subtracting the average differential motion vector from the differential motion vectors.

또한, 본 발명의 다른 목적에 의하면, 블록에 대한 움직임 벡터를 부호화하 는 장치에 있어서, 블록의 움직임 벡터들, 예측 움직임 벡터들 및 차분 움직임 벡터들을 결정하는 움직임 벡터 결정기; 차분 움직임 벡터들의 평균 차분 움직임 벡터를 결정하고, 차분 움직임 벡터들에서 평균 차분 움직임 벡터를 감산하여 결정되는 차차분 움직임 벡터들과 평균 차분 움직임 벡터를 부호화하여 차차분 부호화 데이터를 생성하며, 차차분 부호화 데이터의 비트량을 계산하는 차차분 움직임 벡터 부호화기; 차분 움직임 벡터들을 부호화하여 차분 부호화 데이터를 생성하며, 차분 부호화 데이터의 비트량을 계산하는 차분 움직임 벡터 부호화기; 및 블록 내의 움직임 벡터들의 개수, 차차분 부호화 데이터의 비트량 및 차분 부호화 데이터의 비트량 중 적어도 하나 이상을 기초로 차차분 부호화 데이터를 포함하는 움직임 벡터 부호화 데이터를 생성하는 움직임 벡터 부호화 데이터 생성기를 포함하는 것을 특징으로 하는 움직임 벡터 부호화 장치를 제공한다.According to another object of the present invention, there is provided an apparatus for encoding a motion vector for a block, comprising: a motion vector determiner for determining motion vectors, predicted motion vectors, and differential motion vectors of a block; Determine the differential motion vectors of the differential motion vectors, encode the differential motion vectors and the average differential motion vector determined by subtracting the average differential motion vector from the differential motion vectors, and generate differential differential encoded data; A differential motion vector encoder for calculating a bit amount of data; A differential motion vector encoder encoding differential motion vectors to generate differential coded data, and calculating a bit amount of differential coded data; And a motion vector encoded data generator configured to generate motion vector encoded data including differential encoded data based on at least one of the number of motion vectors in the block, the bit amount of the differentially encoded data, and the bit amount of the differentially encoded data. A motion vector encoding apparatus is provided.

또한, 본 발명의 또 다른 목적에 의하면, 블록의 움직임 벡터를 복호화하는 방법에 있어서, 움직임 벡터 부호화 데이터로부터 차차분 부호화 데이터를 추출하고 복호화하여 평균 차분 움직임 벡터와 차차분 움직임 벡터들을 복원하는 단계; 복원되는 차차분 움직임 벡터들과 복원되는 평균 차분 움직임 벡터를 더하여 블록의 차분 움직임 벡터들을 복원하는 단계; 및 블록의 예측 움직임 벡터들과 복원되는 차분 움직임 벡터들을 이용하여 블록의 움직임 벡터들을 복원하는 단계를 포함하는 것을 특징으로 하는 움직임 벡터 복호화 방법을 제공한다.According to still another object of the present invention, there is provided a method of decoding a motion vector of a block, the method comprising: extracting and decoding differential coded data from motion vector coded data to restore average differential motion vectors and differential motion vectors; Reconstructing the differential motion vectors of the block by adding the reconstructed differential motion vectors and the reconstructed average differential motion vector; And reconstructing the motion vectors of the block using the predicted motion vectors of the block and the reconstructed differential motion vectors.

또한, 본 발명의 또 다른 목적에 의하면, 블록의 움직임 벡터를 복호화하는 장치에 있어서, 움직임 벡터 부호화 데이터로부터 추출되는 차차분 부호화 데이터 를 복호화하여 평균 차분 움직임 벡터와 차차분 움직임 벡터들을 복원하고, 복원되는 차차분 움직임 벡터들과 복원되는 평균 차분 움직임 벡터를 더하여 블록의 차분 움직임 벡터들을 복원하는 차차분 움직임 벡터 복호화기; 움직임 벡터 부호화 데이터로부터 추출되는 차분 부호화 데이터를 복호화하여 블록의 차분 움직임 벡터들을 복원하는 차분 움직임 벡터 복호화기; 및 블록의 예측 움직임 벡터들과 복원되는 차분 움직임 벡터들을 이용하여 블록의 움직임 벡터들을 복원하는 움직임 벡터 복원기를 포함하는 것을 특징으로 하는 움직임 벡터 복호화 장치를 제공한다.According to still another object of the present invention, in an apparatus for decoding a motion vector of a block, the differential differential coded data extracted from the motion vector coded data is decoded to reconstruct and reconstruct average differential motion vectors and differential motion vectors. A differential motion vector decoder for reconstructing the differential motion vectors of the block by adding the differential motion vectors to be recovered and the average differential motion vectors to be reconstructed; A differential motion vector decoder for decoding differential coded data extracted from the motion vector coded data and reconstructing differential motion vectors of the block; And a motion vector reconstructor for reconstructing the motion vectors of the block by using the predicted motion vectors of the block and the differential motion vectors reconstructed.

또한, 본 발명의 또 다른 목적에 의하면, 영상을 블록 단위로 부호화하는 방법에 있어서, 블록의 움직임 벡터들과 예측 움직임 벡터들을 이용하여 결정되는 차분 움직임 벡터들의 평균 차분 움직임 벡터를 결정하는 단계; 차분 움직임 벡터들에서 평균 차분 움직임 벡터를 감산하여 결정되는 차차분 움직임 벡터들을 부호화하여 블록에 대한 움직임 벡터 부호화 데이터를 생성하는 단계; 움직임 벡터들을 이용하여 블록을 움직임 보상하여 예측 블록을 생성하는 단계; 블록과 예측 블록을 감산하여 잔여 블록을 생성하는 단계; 잔여 블록을 부호화하여 부호화된 잔여 데이터를 생성하는 단계; 및 부호화된 잔여 데이터 및 움직임 벡터 부호화 데이터를 포함하는 부호화 데이터를 생성하고 출력하는 단계를 포함하는 것을 특징으로 하는 영상 부호화 방법을 제공한다.According to still another object of the present invention, there is provided a method of encoding an image block by block, the method comprising: determining an average differential motion vector of differential motion vectors determined by using motion vectors and predicted motion vectors of a block; Generating motion vector encoded data for the block by encoding the differential motion vectors determined by subtracting the average differential motion vector from the differential motion vectors; Generating a predictive block by motion compensating the block using the motion vectors; Subtracting the block and the predictive block to generate a residual block; Encoding the residual block to generate encoded residual data; And generating and outputting encoded data including the encoded residual data and the motion vector encoded data.

또한, 본 발명의 또 다른 목적에 의하면, 영상을 블록 단위로 부호화하는 장치에 있어서, 블록의 움직임 벡터들과 예측 움직임 벡터들을 이용하여 결정되는 차분 움직임 벡터들의 평균 차분 움직임 벡터를 결정하고, 차분 움직임 벡터들에서 평균 차분 움직임 벡터를 감산하여 결정되는 차차분 움직임 벡터들을 부호화하여 블록에 대한 움직임 벡터 부호화 데이터를 생성하는 움직임 벡터 부호화기; 움직임 벡터들을 이용하여 블록을 움직임 보상하여 예측 블록을 생성하는 움직임 보상기; 블록과 예측 블록을 감산하여 잔여 블록을 생성하는 감산기; 잔여 블록을 부호화하여 부호화된 잔여 데이터를 생성하는 부호화기; 및 부호화된 잔여 데이터 및 움직임 벡터 부호화 데이터를 포함하는 부호화 데이터를 생성하고 부호화 데이터 생성기를 포함하는 것을 특징으로 하는 영상 부호화 장치를 제공한다.According to yet another object of the present invention, in the apparatus for encoding an image in units of blocks, an average differential motion vector of differential motion vectors determined using the motion vectors and the predictive motion vectors of the block is determined, and the differential motion is determined. A motion vector encoder for generating motion vector encoded data for the block by encoding the differential difference motion vectors determined by subtracting the average differential motion vector from the vectors; A motion compensator for generating a predictive block by motion compensating the block using the motion vectors; A subtractor which subtracts the block and the predictive block to produce a residual block; An encoder for encoding the residual block to generate encoded residual data; And generating encoded data including the encoded residual data and the motion vector encoded data, and including an encoded data generator.

또한, 본 발명의 또 다른 목적에 의하면, 영상을 블록 단위로 복호화하는 방법에 있어서, 부호화 데이터에 포함되는 움직임 벡터 부호화 데이터로부터 차차분 부호화 데이터를 추출하고 복호화하여 평균 차분 움직임 벡터와 차차분 움직임 벡터들을 복원하는 단계; 복원되는 차차분 움직임 벡터들과 복원되는 평균 차분 움직임 벡터를 더하여 블록의 차분 움직임 벡터들을 복원하는 단계; 블록의 예측 움직임 벡터들과 복원되는 차분 움직임 벡터들을 이용하여 블록의 움직임 벡터들을 복원하는 단계; 복원되는 움직임 벡터들을 이용하여 블록을 움직임 보상하여 예측 블록을 생성하는 단계; 부호화 데이터로부터 부호화된 잔여 데이터를 추출하고 복호화하여 잔여 블록을 복원하는 단계; 및 복원되는 잔여 블록과 예측 블록을 가산하여 블록을 복원하는 단계를 포함하는 것을 특징으로 하는 영상 복호화 방법을 제공한다.According to still another object of the present invention, in a method of decoding an image in block units, an average differential motion vector and a differential motion vector are extracted by extracting and decoding differential encoded data from motion vector encoded data included in encoded data. Restoring them; Reconstructing the differential motion vectors of the block by adding the reconstructed differential motion vectors and the reconstructed average differential motion vector; Reconstructing the motion vectors of the block using the predicted motion vectors of the block and the reconstructed differential motion vectors; Generating a prediction block by motion compensating the block using the reconstructed motion vectors; Restoring the residual block by extracting and decoding the encoded residual data from the encoded data; And reconstructing the block by adding the reconstructed residual block and the predictive block.

또한, 본 발명의 또 다른 목적에 의하면, 영상을 블록 단위로 복호화하는 장치에 있어서, 부호화 데이터로부터 움직임 벡터 부호화 데이터 및 부호화된 잔여 데이터를 추출하는 정보 추출기; 움직임 벡터 부호화 데이터로부터 차차분 부호화 데이터를 추출하고 복호화하여 평균 차분 움직임 벡터와 차차분 움직임 벡터들을 복원하고, 복원되는 차차분 움직임 벡터들과 복원되는 평균 차분 움직임 벡터를 더하여 블록의 차분 움직임 벡터들을 복원하며, 블록의 예측 움직임 벡터들과 복원되는 차분 움직임 벡터들을 이용하여 블록의 움직임 벡터들을 복원하는 움직임 벡터 복호화기; 복원되는 움직임 벡터들을 이용하여 블록을 움직임 보상하여 예측 블록을 생성하는 움직임 보상기; 부호화된 잔여 데이터를 복호화하여 잔여 블록을 복원하는 복호화기; 및 복원되는 잔여 블록과 예측 블록을 가산하여 블록을 복원하는 가산기를 포함하는 것을 특징으로 하는 영상 복호화 장치를 제공한다.According to still another object of the present invention, there is provided an apparatus for decoding an image in block units, comprising: an information extractor for extracting motion vector encoded data and encoded residual data from encoded data; Extract and decode the differential coded data from the motion vector coded data to reconstruct the average differential motion vector and the differential motion vectors, and restore the differential motion vectors of the block by adding the reconstructed differential motion vectors and the reconstructed average differential motion vector. A motion vector decoder for reconstructing the motion vectors of the block by using the predicted motion vectors of the block and the reconstructed differential motion vectors; A motion compensator for generating a prediction block by motion compensating the block using the reconstructed motion vectors; A decoder which decodes the encoded residual data and restores the residual block; And an adder for reconstructing the block by adding the reconstructed residual block and the predictive block.

이상에서 설명한 바와 같이 본 발명에 의하면, 움직임 벡터를 예측 부호화할 때, 차분 움직임 벡터의 성분의 값을 감소시킬 수 있으므로, 움직임 벡터가 부호화된 데이터의 비트량을 감소시킬 수 있으며, 그에 따라 동영상의 부호화 효율을 향상시킬 수 있다.As described above, according to the present invention, since the value of the component of the differential motion vector can be reduced when predicting and encoding the motion vector, the bit amount of the data encoded by the motion vector can be reduced. Encoding efficiency can be improved.

이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상 세한 설명은 생략한다.Hereinafter, some embodiments of the present invention will be described in detail with reference to exemplary drawings. In adding reference numerals to the components of each drawing, it should be noted that the same reference numerals are assigned to the same components as much as possible even though they are shown in different drawings. In addition, in describing the present invention, when it is determined that a detailed description of a related known configuration or function may obscure the gist of the present invention, the detailed description thereof will be omitted.

또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.In addition, in describing the component of this invention, terms, such as 1st, 2nd, A, B, (a), (b), can be used. These terms are intended to distinguish the constituent elements from other constituent elements, and the terms do not limit the nature, order or order of the constituent elements. When a component is described as being "connected", "coupled", or "connected" to another component, the component may be directly connected or connected to the other component, Quot; may be "connected," "coupled," or "connected. &Quot;

이하에서 후술할 영상 부호화 장치(Video Encoding Apparatus), 영상 복호화 장치(Video Decoding Apparatus), 움직임 벡터 부호화 장치(Motion Vector Encoding Apparatus) 또는 움직임 벡터 복호화 장치(Motion Vector Decoding Apparatus)는 개인용 컴퓨터(PC: Personal Computer), 노트북 컴퓨터, 개인 휴대 단말기(PDA: Personal Digital Assistant), 휴대형 멀티미디어 플레이어(PMP: Portable Multimedia Player), 플레이스테이션 포터블(PSP: PlayStation Portable), 이동통신 단말기(Mobile Communication Terminal) 등일 수 있으며, 각종 기기 또는 유무선 통신망과 통신을 수행하기 위한 통신 모뎀 등의 통신 장치, 움직임 벡터를 부호화하거나 복호화하거나 그를 이용하여 영상을 부호화하거나 복호화하하기 위한 각종 프로그램과 데이터를 저장하기 위한 메모리, 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등을 구비하는 다양한 장치를 의미한다.A video encoding apparatus (Video Encoding Apparatus), a video decoding apparatus (Video Decoding Apparatus), a motion vector encoding apparatus (Motion Vector Encoding Apparatus) or a motion vector decoding apparatus (Motion Vector Decoding Apparatus) will be described later. Computer), notebook computer, Personal Digital Assistant (PDA), Portable Multimedia Player (PMP), PlayStation Portable (PSP), Mobile Communication Terminal (Mobile Communication Terminal), etc., A communication device such as a communication modem for communicating with various devices or a wired / wireless communication network, a program for encoding or decoding a motion vector, a program for encoding or decoding an image using the motion vector, a memory for storing data, and a program Microprocessor for Operation and Control It means a variety of devices including a.

영상 부호화 장치에 의해 비트스트림으로 부호화된 영상은 실시간 또는 비실시간으로 인터넷, 근거리 무선 통신망, 무선랜망, 와이브로망, 이동통신망 등의 유무선 통신망 등을 통하거나 케이블, 범용 직렬 버스(USB: Universal Serial Bus) 등의 통신 인터페이스를 통해 영상 복호화 장치로 전송되어 영상 복호화 장치에서 복호화되어 영상으로 복원되고 재생될 수 있다.The video encoded in the bitstream by the video encoding apparatus is real-time or non-real-time through the wired / wireless communication network such as the Internet, a local area wireless communication network, a wireless LAN network, a WiBro network, a mobile communication network, or a cable, a universal serial bus (USB: Universal Serial Bus). The image decoding apparatus may be transmitted to the image decoding apparatus through a communication interface such as), and may be decoded by the image decoding apparatus to restore and reproduce the image.

영상 부호화 장치와 영상 복호화 장치에는 움직임 추정 및 움직임 보상을 이용한 인터 예측뿐만 아니라 인트라 예측을 수행하기 위한 기능이 구비될 수 있지만, 본 발명의 실시예와 직접적인 관계가 없기 때문에, 혼란을 방지하기 위해 상세한 설명을 생략한다.Although the image encoding apparatus and the image decoding apparatus may be provided with functions for performing intra prediction as well as inter prediction using motion estimation and motion compensation, since there is no direct relationship with the embodiment of the present invention, detailed information is provided to prevent confusion. Omit the description.

통상적으로 동영상은 일련의 픽처(Picture)로 구성되어 있으며, 각 픽처들은 블록(Block)으로 분할된다. 각 블록은 부호화 방법에 따라 크게 인트라 블록(Intra Block), 인터 블록(Inter Block)으로 분류된다. 인트라 블록은 인트라 예측 부호화(Intra Prediction Coding) 방식을 사용하여 부호화되는 블록을 뜻하는데, 인트라 예측 부호화란 현재 부호화를 수행하는 현재 픽처 내에서 이전에 부호화되고 복호화되어 복원된 블록들의 화소를 이용하여 현재 블록의 화소를 예측함으로써 예측 블록을 생성하고 현재 블록의 화소와의 차분값을 부호화하는 방식이다. 인터 블록은 인터 예측 부호화(Inter Prediction Coding)를 사용하여 부호화되는 블록을 뜻하는데, 인터 예측 부호화란 하나 이상의 과거 픽처 또는 미래 픽처를 참조하여 현재 픽처 내의 현재 블록을 예측함으로써 예측 블록을 생성하고 현재 블록과의 차분값을 부호화하는 방식이다. 여기서, 현재 픽처를 부호화하거나 복호화하는데 참조 되는 픽처를 참조 픽처(Reference Picture)라고 한다.In general, a moving picture is composed of a series of pictures, and each picture is divided into blocks. Each block is largely classified into an intra block and an inter block according to an encoding method. The intra-block refers to a block that is coded using Intra Prediction Coding (P-Coding) scheme. The intra-prediction coding is performed by using the pixels of previously decoded and decoded blocks in the current picture, A prediction block is generated by predicting the pixels of the block and a difference value between the pixel of the current block and the pixel of the current block is encoded. Inter-block refers to a block that is coded using Inter Prediction Coding. Inter-prediction coding refers to one or more past pictures or a future picture to generate a prediction block by predicting a current block in the current picture, And the difference value is encoded. Here, a picture referred to to encode or decode the current picture is referred to as a reference picture.

도 1은 H.264/AVC 표준에 따라 움직임 벡터를 부호화하는 과정을 설명하기 위한 예시도이다.1 is an exemplary diagram for explaining a process of coding a motion vector according to the H.264 / AVC standard.

도 1에서, 블록 D는 움직임 벡터를 부호화하고자 하는 현재 블록이고, 블록 A, 블록 B 및 블록 C는 블록 D에 대한 주변 블록을 나타낸다.

Figure 112009053086320-pat00001
,
Figure 112009053086320-pat00002
,
Figure 112009053086320-pat00003
Figure 112009053086320-pat00004
는 각각 블록 A, 블록 B, 블록 C, 블록 D가 갖는 움직임 벡터이고, 각각은 수평성분 (
Figure 112009053086320-pat00005
,
Figure 112009053086320-pat00006
,
Figure 112009053086320-pat00007
Figure 112009053086320-pat00008
)과 수직성분 (
Figure 112009053086320-pat00009
,
Figure 112009053086320-pat00010
,
Figure 112009053086320-pat00011
Figure 112009053086320-pat00012
)을 가지는 것으로 정의한다. 그리고 현재 블록의 움직임 벡터(이하 '현재 움직임 벡터'라 칭함)
Figure 112009053086320-pat00013
는 (2,0)이고, 주변 블록의 움직임 벡터인
Figure 112009053086320-pat00014
,
Figure 112009053086320-pat00015
Figure 112009053086320-pat00016
는 각각 (2,0), (2,1) 및 (2,2)인 것으로 가정한다. 또한, 전술한 현재 블록의 움직임 벡터에 대한 예측값(이하 '예측 움직임 벡터'라 칭함, PMV: Predicted Motion Vector)
Figure 112009053086320-pat00017
를 수학식 1과 같이 계산하며, 예측 움직임 벡터
Figure 112009053086320-pat00018
는 역시 각각은 수평성분(
Figure 112009053086320-pat00019
)과 수직성분(
Figure 112009053086320-pat00020
)을 가지는 것으로 정의한다.1, a block D is a current block to which a motion vector is to be coded, and a block A, a block B, and a block C represent neighboring blocks for the block D.
Figure 112009053086320-pat00001
,
Figure 112009053086320-pat00002
,
Figure 112009053086320-pat00003
And
Figure 112009053086320-pat00004
Are the motion vectors of the block A, the block B, the block C, and the block D, respectively,
Figure 112009053086320-pat00005
,
Figure 112009053086320-pat00006
,
Figure 112009053086320-pat00007
And
Figure 112009053086320-pat00008
) And the vertical component (
Figure 112009053086320-pat00009
,
Figure 112009053086320-pat00010
,
Figure 112009053086320-pat00011
And
Figure 112009053086320-pat00012
). And a motion vector of the current block (hereinafter referred to as a 'current motion vector').
Figure 112009053086320-pat00013
(2,0), and the motion vector of the neighboring block
Figure 112009053086320-pat00014
,
Figure 112009053086320-pat00015
And
Figure 112009053086320-pat00016
(2,0), (2,1) and (2,2), respectively. In addition, the above-described prediction value for the motion vector of the current block (hereinafter referred to as 'predicted motion vector', PMV: Predicted Motion Vector)
Figure 112009053086320-pat00017
Is calculated as shown in Equation (1), and the predicted motion vector
Figure 112009053086320-pat00018
Is also a horizontal component (
Figure 112009053086320-pat00019
) And the vertical component (
Figure 112009053086320-pat00020
).

Figure 112009053086320-pat00021
Figure 112009053086320-pat00021

수학식 1을 참조하면, 현재 움직임 벡터에 대한 예측 움직임 벡터는 주변 블록(블록 A, 블록 B, 블록 C)의 움직임 벡터의 중간값을 계산하는 Median(□)에 의 해 계산됨을 확인할 수 있다. 수학식 1을 이용하여 현재 움직임 벡터

Figure 112009053086320-pat00022
의 예측 움직임 벡터
Figure 112009053086320-pat00023
가 구해지면, 수학식 2를 사용하여 부호화해야 할 현재 움직임 벡터에서 예측 움직임 벡터를 차분한 차분 움직임 벡터
Figure 112009053086320-pat00024
를 구할 수 있으며, 이 차분 움직임 벡터는 엔트로피 부호화 등의 미리 정의된 소정의 방법에 의해 부호화되어 저장(또는 전송)된다.Referring to Equation 1, it can be seen that the predicted motion vector for the current motion vector is calculated by Median (□) that calculates the median value of the motion vectors of the neighboring blocks (blocks A, B, C). Using equation (1), the current motion vector
Figure 112009053086320-pat00022
≪ / RTI >
Figure 112009053086320-pat00023
Is obtained, the differential motion vector obtained by subtracting the predictive motion vector from the current motion vector to be encoded using Equation (2).
Figure 112009053086320-pat00024
And the differential motion vector is coded and stored (or transmitted) by a predetermined predetermined method such as entropy coding.

Figure 112009053086320-pat00025
Figure 112009053086320-pat00025

도 1에 예시되어 있는 것처럼, 현재 움직임 벡터

Figure 112009053086320-pat00026
가 (2,0)인 경우, 수학식 1에 의한 중간값을 사용한 예측 움직임 벡터는 (2,1)이 되며, 수학식 2에 의해 차분 움직임 벡터
Figure 112009053086320-pat00027
는 (0, 1)이 된다.As illustrated in FIG. 1, the current motion vector
Figure 112009053086320-pat00026
(2, 0), the predicted motion vector using the intermediate value according to Equation (1) becomes (2,1), and the differential motion vector
Figure 112009053086320-pat00027
(0, 1).

도 2는 엔트로피 부호화를 위한 심볼당 비트수를 나타낸 예시도이다.2 is an exemplary diagram illustrating the number of bits per symbol for entropy encoding.

움직임 벡터의 예측 부호화에서는 움직임 벡터의 효율적인 압축을 위해 차분 움직임 벡터를 가변 길이 부호화 테이블(Variable Length Coding Table)을 이용하여 부호화한다. 예를 들어, 도 1을 통해 전술한 차분 움직임 벡터

Figure 112009053086320-pat00028
를 도 2에 도시한 바와 같은 가변 길이 부호화 테이블을 이용하여 부호화하면, 모두 4 비트(수평 성분에 대해 1 비트, 수직 성분에 대해 3 비트)가 필요하다. 반면,
Figure 112009053086320-pat00029
인 (2,0)을 예측 움직임 벡터로 사용하면 차분 움직임 벡터
Figure 112009053086320-pat00030
가 (0,0)이 되어, 이를 부호화하는데 소요되는 비트량은 모두 2 비트(수평 성분에 대해 1 비트, 수직 성분에 대해 1 비트)가 된다. 따라서, 중간값을 사용한 예측 움직임 벡터를 사용하는 방법에 비해 2 비트를 감소시킬 수 있다.In predictive coding of motion vectors, differential motion vectors are encoded using a variable length coding table to efficiently compress the motion vectors. For example, the differential motion vector described above with reference to FIG.
Figure 112009053086320-pat00028
Is encoded using the variable length coding table as shown in FIG. 2, all four bits (one bit for the horizontal component and three bits for the vertical component) are required. On the other hand,
Figure 112009053086320-pat00029
(2, 0) is used as the predictive motion vector, the difference motion vector
Figure 112009053086320-pat00030
(0, 0), and the amount of bits required to encode it is 2 bits (1 bit for the horizontal component and 1 bit for the vertical component). Therefore, it is possible to reduce 2 bits as compared with a method using a predictive motion vector using an intermediate value.

한편, 가변 길이 부호화 테이블을 이용하여 차분 움직임 벡터를 부호화하는 경우, 현재 움직임 벡터를 구성하는 각 성분(Component)인 x축 성분과 y축 성분이 '0'에 가까울수록 부호화되는 데이터는 적은 비트수로 표현된다. 또한, 매크로블록과 같은 하나의 블록은 여러 서브블록으로 구성될 수 있고 각 서브블록마다 움직임 벡터를 가질 수 있으므로, 하나의 블록은 복수 개의 움직임 벡터를 가질 수 있다. 따라서, 하나의 블록이 J(단, J는 정수임) 개의 움직임 벡터를 가지는 경우, 부호화해야 할 움직임 벡터의 성분은 J×2 개가 된다. 예를 들어, H.264에서는 하나의 16x16 매크로블록은 4x4 서브블록으로 구성될 수 있고 각 서브블록마다 하나씩의 움직임 벡터를 가질 수 있으므로, 하나의 매크로블록은 16 개의 움직임 벡터를 가질 수 있다. 이 경우, 하나의 매크로블록에 대해 움직임 벡터를 부호화해야 하는 성분은 32 개가 된다.On the other hand, when the differential motion vector is encoded using the variable length coding table, as the x-axis component and the y-axis component, which are each component constituting the current motion vector, are closer to '0', the data to be encoded has fewer bits. It is expressed as In addition, one block, such as a macroblock, may be composed of several subblocks and each subblock may have a motion vector, and thus, one block may have a plurality of motion vectors. Therefore, when one block has J (where J is an integer) motion vectors, the components of the motion vector to be encoded are J × 2. For example, in H.264, one 16x16 macroblock may consist of 4x4 subblocks and may have one motion vector for each subblock, so that one macroblock may have 16 motion vectors. In this case, 32 components are required to encode a motion vector for one macroblock.

이와 같이, 하나의 매크로블록이 여러 움직임을 가지는 영역으로 구성되고 그로 인해 부호화해야 할 차분 움직임 벡터의 성분의 개수도 많아지므로, 차분 움직임 벡터의 절대값이 '0'에 근접하지 못할 가능성이 많아져서 움직임 벡터를 부호화하는 데 필요한 비트수가 증가하는 문제점이 있다.As described above, since one macroblock is composed of regions having several motions, and thus the number of components of the differential motion vector to be encoded increases, there is a high possibility that the absolute value of the differential motion vector does not approach '0'. There is a problem that the number of bits required for encoding a motion vector increases.

이를 위해, 본 발명의 일 실시예에서는 부호화해야 할 움직임 벡터들의 개수가 기준 개수보다 큰 블록의 경우, 블록 내의 모든 차분 움직임 벡터들의 성분의 평균값을 추가로 부호화하고 차분 움직임 벡터들에서 평균값을 뺀 차차분 움직임 벡터들을 부호화함으로써, 차분 움직임 벡터들을 부호화하는 경우보다 움직임 벡터를 부호화하는 데 소요되는 비트량을 줄임으로써 압축 효율을 향상시킨다.To this end, in an embodiment of the present invention, in the case of a block in which the number of motion vectors to be encoded is larger than the reference number, the difference of the components of all the differential motion vectors in the block is further encoded and the difference is obtained by subtracting the average value from the differential motion vectors. By encoding the partial motion vectors, the compression efficiency is improved by reducing the amount of bits required to encode the motion vector than in the case of encoding the differential motion vectors.

도 3은 본 발명의 일 실시예에 따른 영상 부호화 장치를 간략하게 나타낸 블록 구성도이다.3 is a block diagram schematically illustrating an image encoding apparatus according to an embodiment of the present invention.

도 3을 참조하면, 본 발명의 일 실시예에 따른 영상 부호화 장치(300)는 움직임 벡터 부호화기(Motion Vector Encoder, 310), 움직임 보상기(Motion Compensator, 320), 감산기(Subtracter, 330), 잔여 데이터 부호화기(Residual Data Encoder, 340), 엔트로피 부호화기(Entropy Encoder, 350), 부호화 데이터 생성기(Encoding Data Generator, 360), 잔여 데이터 복호화기(Residual Data Decoder, 370), 가산기(Adder, 380), 참조 픽처 메모리(Reference Picture Memory, 390) 및 제어기(Controller, 392)를 포함하여 구성될 수 있다.Referring to FIG. 3, the image encoding apparatus 300 according to an embodiment of the present invention includes a motion vector encoder 310, a motion compensator 320, a subtracter 330, and residual data. Encoder (Residual Data Encoder, 340), Entropy Encoder (350), Encoding Data Generator (Encoding Data Generator, 360), Residual Data Decoder (370), Adder (Adder, 380), Reference Picture The memory may include a reference picture memory 390 and a controller 392.

움직임 벡터 부호화기(310)는 블록의 움직임 벡터들과 예측 움직임 벡터들을 이용하여 결정되는 차분 움직임 벡터들의 평균 차분 움직임 벡터(Average Differential Motion Vector)를 결정하고, 차분 움직임 벡터들에서 평균 차분 움직임 벡터를 감산하여 결정되는 차차분 움직임 벡터들(Double Differential Motion Vector)을 부호화하여 블록에 대한 움직임 벡터 부호화 데이터(Motion Vector Encoding Data)를 생성한다.The motion vector encoder 310 determines an average differential motion vector of differential motion vectors determined using the motion vectors and the predictive motion vectors of the block, and subtracts the average differential motion vector from the differential motion vectors. By encoding the differential differential motion vectors (Double Differential Motion Vector) determined by the motion vector to generate a motion vector encoding data (Motion Vector Encoding Data) for the block.

이를 위해, 움직임 벡터 부호화기(310)는 제어기(392)로부터 블록에 대한 블록 모드(Block Mode)를 입력받아, 참조 픽처 메모리(390)에 저장된 적어도 하나 이 상의 참조 픽처를 참조하여, 입력된 블록 모드에 대응하는 단위(예를 들어, 16×16, 16×8, 8×16, 8×8, 8×4, 4×8, 4×4 화소 단위)로 현재 부호화하고자 하는 블록(이하 '현재 블록'이라 칭함)의 움직임 벡터를 추정한다.To this end, the motion vector encoder 310 receives a block mode for a block from the controller 392 and refers to at least one reference picture stored in the reference picture memory 390 to input the block mode. Block to be currently encoded in units corresponding to (for example, 16 × 16, 16 × 8, 8 × 16, 8 × 8, 8 × 4, 4 × 8, and 4 × 4 pixel units) Motion vector is estimated.

여기서, 블록 모드란 현재 블록의 부호화 모드를 나타내는 것으로서, 예를 들어, 인터 16x16, 인터 8x4 등과 같이 인터 예측 모드인지 여부와 인터 예측 모드에 대한 블록 크기를 나타내는 정보일 수 있다. 또한, 블록이란 영상을 부호화하기 위해 편의상 구분하는 화소 단위로서 4x4 화소 단위, 4x8 화소 단위 등 직사각형 또는 정사각형 모양을 가지는 화소 단위일 수 있다. 다만, 영상은 항상 블록 단위로 부호화될 수 있는 것은 아니며, 정형화되거나 정형화되지 않은 영역 단위로 부호화될 수 있다. 이하에서는 설명의 편의를 위해 영상이 블록 단위로 부호화되는 것으로 설명한다.Here, the block mode indicates an encoding mode of the current block and may be, for example, information indicating whether the inter prediction mode is an inter prediction mode and the block size for the inter prediction mode, such as inter 16x16 and inter 8x4. In addition, the block may be a pixel unit having a rectangular or square shape such as 4x4 pixel unit or 4x8 pixel unit as a pixel unit for convenience for encoding an image. However, an image may not always be encoded in a block unit, but may be encoded in a standardized or unstructured area unit. Hereinafter, for convenience of description, an image is encoded in block units.

이때, 움직임 벡터 부호화기(310)는 제어기(392)로부터 참조 픽처를 지시하는 정보를 제공받고, 제공된 정보에 의해 식별되는 참조 픽처를 참조하여 현재 블록의 움직임 벡터들을 추정할 수 있다. 또한, 이에 대한 대안으로서, 움직임 벡터 부호화기(310)는 제어부(392)로부터 단순히 블록 모드만을 입력받을 수 있다. 블록 모드만을 입력받은 경우, 움직임 벡터 부호화기(310)는 현재 블록을 포함하는 픽처(이하 '현재 픽처'라 칭함)와 시간적으로 주변에 위치하는 사용 가능한 모든 참조 픽처 각각에 대해 차이값을 연산하고, 최소의 차이값을 갖는 참조 픽처를 기준으로 현재 블록의 움직임 벡터들을 추정할 수 있다.In this case, the motion vector encoder 310 may receive information indicating a reference picture from the controller 392 and estimate motion vectors of the current block by referring to the reference picture identified by the provided information. In addition, as an alternative thereto, the motion vector encoder 310 may receive only a block mode from the controller 392. When only the block mode is input, the motion vector encoder 310 calculates a difference value for each picture including the current block (hereinafter referred to as a 'current picture') and all available reference pictures located in the temporal vicinity. The motion vectors of the current block may be estimated based on the reference picture having the minimum difference value.

움직임 보상기(320)는 움직임 벡터 부호화기(310)에 의해 결정되는 현재 블 록의 움직임 벡터들을 이용하여 현재 블록을 움직임 보상하여 예측 블록(Predicted Block)을 생성한다. 이를 위해, 움직임 보상기(320)는 움직임 벡터 부호화기(310)로부터 현재 블록의 움직임 벡터들과 참조 픽처에 대한 인덱스 정보를 전달받아, 전달된 움직임 벡터들을 이용하여 참조 픽처에 대해 움직임 보상을 수행함으로써 예측 블록을 생성한다.The motion compensator 320 generates a predicted block by motion compensating the current block using the motion vectors of the current block determined by the motion vector encoder 310. To this end, the motion compensator 320 receives the motion vectors of the current block and the index information of the reference picture from the motion vector encoder 310 and predicts by performing motion compensation on the reference picture using the transferred motion vectors. Create a block.

감산기(330)는 현재 블록과 예측 블록을 감산하여 잔여 블록(Residual Block)을 생성한다. 즉, 감산기(330)는 현재 블록의 원래의 화소값에서 예측 블록의 예측 화소값을 뺀 잔여 신호(Residual Signal)를 가지는 잔여 블록을 생성한다.The subtractor 330 subtracts the current block and the prediction block to generate a residual block. That is, the subtractor 330 generates a residual block having a residual signal obtained by subtracting the prediction pixel value of the prediction block from the original pixel value of the current block.

잔여 데이터 부호화기(340)는 잔여 블록을 변환(Transform) 및 양자화(Quantization)한다. 즉, 잔여 데이터 부호화기(340)는 잔여 블록의 잔여 신호를 주파수 영역으로 변환하여 잔여 블록의 각 잔여 신호를 변환 계수(Transform Coefficient)로 변환하고, 변환 계수를 갖는 잔여 블록을 양자화하여 양자화된 변환 계수를 가지는 잔여 블록을 생성한다. 여기서, 잔여 데이터 부호화기(340)는 하다마드 변환(Hadamard Transform), 이산 코사인 변환 기반 변환(DCT based Transform: Discrete Cosine Transform Based Transform) 등과 같은 공간축의 화상 신호를 주파수축으로 변환하는 다양한 변환 기법을 이용하여 잔여 신호를 주파수 영역으로 변환할 수 있는데, 주파수 영역으로 변환된 잔여 신호가 변환 계수가 된다. 또한, 잔여 데이터 부호화부(340)는 잔여 블록의 변환 계수를 데드존 균일 경계 양자화(DZUTQ: Dead Zone Uniform Threshold Quantization, 이하 'DZUTQ'라 칭함), 양자화 가중치 매트릭스(Quantization Weighted Matrix) 또는 이를 개량한 양 자화 기법 등을 사용하여 양자화할 수 있다.The residual data encoder 340 transforms and quantizes the residual block. That is, the residual data encoder 340 transforms the residual signal of the residual block into a frequency domain, converts each residual signal of the residual block into a transform coefficient, and quantizes the residual block having the transform coefficient to quantize the transform coefficient. Create a residual block with. Here, the residual data encoder 340 uses various transformation techniques for transforming an image signal of a spatial axis into a frequency axis such as a Hadamard transform and a Discrete Cosine Transform Based Transform (DCT based Transform). The residual signal can be converted into the frequency domain, and the residual signal converted into the frequency domain becomes a conversion coefficient. In addition, the residual data encoder 340 converts the transform coefficients of the residual block into dead zone uniform threshold quantization (DZUTQ), a quantization weighted matrix, or an improvement thereof. Quantization can be done using quantization techniques.

한편, 이상에서는 잔여 데이터 부호화기(340)가 잔여 블록을 변환하고 양자화하는 것으로 설명했지만, 잔여 블록을 변환하지 않거나 양자화하지 않을 수 있다. 즉, 잔여 데이터 부호화기(340)는 잔여 블록을 변환 계수로 변환하지 않고 양자화 과정만을 수행하거나 잔여 블록을 변환한 후 양자화하지 않을 수 있을 뿐만 아니라, 심지어는 변환과 양자화 과정을 모두 수행하지 않을 수 있다. 변환과 양자화 과정을 수행하지 않는 경우에는 본 발명의 일 실시예에 따른 영상 부호화 장치(300)에서 잔여 데이터 부호화기(340)는 생략될 수 있을 것이다.In the above description, the residual data encoder 340 transforms and quantizes the residual block, but the residual block may not be transformed or quantized. That is, the residual data encoder 340 may not only perform the quantization process without transforming the residual block into transform coefficients, or may not perform quantization after converting the residual block, and may not even perform both the transformation and quantization processes. . When the transformation and quantization processes are not performed, the residual data encoder 340 may be omitted in the image encoding apparatus 300 according to an embodiment of the present invention.

엔트로피 부호화기(350)는 잔여 데이터 부호화기(340)로부터 출력되는 잔여 블록을 엔트로피 부호화하여 부호화된 잔여 데이터를 출력한다. 즉, 엔트로피 부호화기(350)는 잔여 블록의 양자화된 변환 계수, 변환 계수 또는 잔여 신호를 지그재그 스캔과 같은 다양한 스캔 방식에 따라 스캔하여 양자화된 변환 계수열, 변환 계수열 또는 잔여 신호열을 생성하고 엔트로피 부호화(Entropy Coding) 기법 등 다양한 부호화 기법을 이용하여 부호화한다. 한편, 이러한 잔여 데이터 부호화기(340)와 엔트로피 부호화기(350)의 기능이 통합되어 하나의 부호화기로서 구현될 수도 있다. 즉, 하나의 부호화기로 구현되는 경우, 부호화기는 잔여 블록을 부호화하여 부호화된 잔여 데이터를 생성한다.The entropy encoder 350 entropy encodes a residual block output from the residual data encoder 340, and outputs encoded residual data. That is, the entropy encoder 350 scans the quantized transform coefficients, transform coefficients, or residual signals of the residual block according to various scan methods such as zigzag scan to generate quantized transform coefficient sequences, transform coefficient sequences, or residual signal sequences, and entropy encoding. Encoding is performed using various encoding techniques such as (Entropy Coding). Meanwhile, the functions of the residual data encoder 340 and the entropy encoder 350 may be integrated and implemented as one encoder. That is, when implemented with one encoder, the encoder generates encoded residual data by encoding the residual block.

부호화 데이터 생성기(360)는 부호화된 잔여 데이터 및 움직임 벡터 부호화 데이터를 포함하는 부호화 데이터를 생성하고 출력한다. 즉, 부호화 데이터 생성기(360)는 부호화기 또는 엔트로피 부호화기(350)로부터 출력되는 부호화된 잔여 데이터와 움직임 벡터 부호화기(310)로부터 출력되는 움직임 벡터 부호화 데이터를 포함하는 부호화 데이터를 생성하여 출력한다. 또한, 부호화 데이터 생성기(360)는 제어기(3920)로부터 출력되거나 기 설정된 현재 블록에 대한 블록 모드에 대한 정보를 부호화 데이터에 추가로 포함시켜 출력할 수 있다. 이러한 부호화 데이터 생성기(360)는 멀티플렉서(MUX: Multiplexer) 등과 같은 다중화기로 구현될 수 있다.The encoded data generator 360 generates and outputs encoded data including the encoded residual data and the motion vector encoded data. That is, the encoded data generator 360 generates and outputs encoded data including encoded residual data output from the encoder or entropy encoder 350 and motion vector encoded data output from the motion vector encoder 310. In addition, the encoded data generator 360 may additionally include information about a block mode for the current block that is output from the controller 3920 in the encoded data and output the encoded data. The encoded data generator 360 may be implemented as a multiplexer such as a multiplexer (MUX).

잔여 데이터 복호화기(370)는 잔여 데이터 부호화기(340)에 의해 양자화된 잔여 블록을 역 양자화(Inverse Quantization)하고 역 변환(Inverse Transform)한다. 즉, 복호화기(370)는 앙자화된 잔여 블록의 양자화된 변환 계수들을 역 양자화하여 변환 계수를 갖는 잔여 블록을 생성하고, 역 양자화된 잔여 블록을 역 변환하여 잔여 신호를 가지는 잔여 블록 즉, 복원된 잔여 블록을 생성한다. 여기서, 잔여 데이터 복호화기(370)는 잔여 데이터 부호화기(340)에서 이용한 변환 방식과 양자화 방식을 역으로 사용하여 역 변환 및 역 양자화할 수 있다. 또한, 잔여 데이터 부호화기(340)에서 변환만을 수행하고 양자화를 수행하지 않은 경우, 잔여 데이터 복호화기(370)는 역 변환만을 수행하고 역 양자화를 수행하지 않으며, 잔여 데이터 부호화기(340)에서 양자화만을 수행하고 변환을 수행하지 않은 경우에는 역 양자화만을 수행하고 역 변환을 수행하지 않을 수 있다. 만약, 잔여 데이터 부호화기(340)에서 변환 및 양자화를 모두 수행하지 않거나 잔여 데이터 부호화기(340)가 영상 부호화 장치(300)에 구성되지 않고 생략된 경우, 잔여 데이터 복호화기(370)도 역 변환 및 역 양자화를 모두 수행하지 않거나 영상 부호화 장치(300)에 구성되지 않고 생략될 수 있다.The residual data decoder 370 inverse quantizes and inverse transforms the residual block quantized by the residual data encoder 340. That is, the decoder 370 inversely quantizes the quantized transform coefficients of the angularized residual block to generate a residual block having the transform coefficient, and inversely transforms the inverse quantized residual block to restore the residual block having the residual signal, that is, reconstruction. Generated residual blocks. Here, the residual data decoder 370 may inverse transform and inverse quantize using an inverse transform method and a quantization method used in the residual data encoder 340. In addition, when only the transform is performed in the residual data encoder 340 and no quantization is performed, the residual data decoder 370 performs only inverse transform and does not perform inverse quantization, and performs only quantization in the residual data encoder 340. If no transformation is performed, only inverse quantization may be performed and inverse transformation may not be performed. If the residual data encoder 340 does not perform both the transformation and the quantization, or the residual data encoder 340 is omitted without being configured in the image encoding apparatus 300, the residual data decoder 370 may also perform inverse transformation and inverse. The quantization may not be performed or may be omitted without being configured in the image encoding apparatus 300.

가산기(380)는 움직임 보상기(320)에 의해 움직임 보상되어 출력되는 예측 블록과 잔여 데이터 복호화기(370)에 의해 복원된 잔여 블록을 가산하여 현재 블록을 복원한다. 참조 픽처 메모리(390)는 가산기(380)로부터 출력되는 복원된 현재 블록을 픽처 단위로 참조 픽처로서 저장하여 예측기의 움직임 벡터 부호화기(310) 또는 움직임 벡터 보상기(320)가 현재 블록의 다음 블록이나 향후 다른 블록을 부호화하기 위해 움직임을 추정 또는 보상할 때 참조 픽처로서 사용할 수 있도록 한다.The adder 380 reconstructs the current block by adding the prediction block motion-compensated by the motion compensator 320 and the residual block reconstructed by the residual data decoder 370. The reference picture memory 390 stores the reconstructed current block output from the adder 380 as a reference picture in picture units so that the motion vector encoder 310 or the motion vector compensator 320 of the predictor is the next block or the next block of the current block. It can be used as a reference picture when estimating or compensating for motion to code another block.

제어기(392)는 영상에서 현재 부호화하고자 하는 현재 블록에 선택될 수 있는 블록 모드들에 대해 소정의 최적 기준(예를 들어, 율-왜곡 최적화 기준)을 적용하여 현재 블록에 대한 블록 모드(예를 들어, 최소의 율-왜곡 비용을 갖는 블록 모드)를 결정한다. 영상 부호화 장치(300)에 블록 모드가 기 설정되어 있다면, 제어기(392)는 반드시 영상 부호화 장치(300)에 포함되지 않고 선택적으로 생략될 수 있지만, 생략되지 않고 영상 부호화 장치(300) 내의 각 구성 요소의 전반적인 동장을 제어하는 역할을 수행할 수 있다.The controller 392 applies a predetermined optimal criterion (e.g., rate-distortion optimization criterion) to block modes that can be selected to the current block to be currently encoded in the image. For example, the block mode with the minimum rate-distortion cost) is determined. If the block mode is pre-set in the video encoding apparatus 300, the controller 392 may not be included in the video encoding apparatus 300 and may be selectively omitted. However, the controller 392 is not omitted, and each component in the video encoding apparatus 300 may be omitted. It can play a role in controlling the overall dynamics of the element.

도 3에서는 도시하지 않았지만, 전술한 본 발명의 일 실시예에 따른 영상 부호화 장치(300)는 H.264/AVC 표준에 기초하여, 인트라 예측(Intra Prediction)을 위한 인트라 예측부, 복원된 현재 블록을 디블로킹 필터링(Deblocking Filtering)하는 디블록킹 필터부 등을 추가로 포함할 수 있다. 또한, 잔여 데이터 부호화기(340) 및 잔여 데이터 복호화기(370)는 H.264/AVC 표준에 기초하여, 특정 픽처(예를 들어, 인트라 픽처)에 대한 변환 및 양자화(또는 역 변환 및 역 양자화) 연 산을 추가로 수행할 수도 있다. 여기서, 디블로킹 필터링이란 영상을 블록 단위로 부호화하면서 발생하는 블록 왜곡을 감소시키는 작업을 말하며, 블록 경계와 매크로블록 경계에 디블로킹 필터를 적용하거나 매크로블록 경계에만 디블로킹 필터를 적용하거나 디블로킹 필터를 사용하지 않는 방법 중 하나를 선택적으로 사용할 수 있다.Although not shown in FIG. 3, the image encoding apparatus 300 according to an embodiment of the present invention described above includes an intra prediction unit for intra prediction, an intra prediction unit for intra prediction based on the H.264 / AVC standard, And a deblocking filter unit for deblocking filtering the received signal. In addition, residual data encoder 340 and residual data decoder 370 are based on the H.264 / AVC standard for transform and quantization (or inverse transform and inverse quantization) for a particular picture (e.g., an intra picture). Further calculations may be performed. Here, deblocking filtering refers to a task of reducing block distortion caused by coding an image block by block. The deblocking filter may be applied to a block boundary or a macro block boundary, a deblocking filter may be applied to a macro block boundary, Can be selectively used.

도 4는 본 발명의 일 실시예에 따른 움직임 벡터 부호화 장치를 간략하게 나타낸 블록 구성도이다.FIG. 4 is a block diagram of a motion vector coding apparatus according to an embodiment of the present invention. Referring to FIG.

본 발명의 일 실시예에 따른 움직임 벡터 부호화 장치는 도 3을 통해 전술한 본 발명의 일 실시예에 따른 영상 부호화 장치(300)에서는 움직임 벡터 부호화기(310)로 구현될 수 있으므로, 이하에서는 설명의 편의를 위해, 움직임 벡터 부호화기(310)라 칭한다.The motion vector encoding apparatus according to an embodiment of the present invention may be implemented as a motion vector encoder 310 in the image encoding apparatus 300 according to an embodiment of the present invention described above with reference to FIG. 3. For convenience, it is called a motion vector encoder 310.

움직임 벡터 부호화기(310)는 움직임 벡터 결정기(Motion Vector Determiner, 410), 차차분 움직임 벡터 부호화기(Double Differential Motion Vector Encoder, 420), 차분 움직임 벡터 부호화기(Differential Motion Vector Encoder, 430) 및 움직임 벡터 부호화 데이터 생성기(Motion Vector Encoding Data Generator, 440)를 포함하여 구성될 수 있다.The motion vector encoder 310 may include a motion vector determiner 410, a double differential motion vector encoder 420, a differential motion vector encoder 430, and motion vector encoded data. It may be configured to include a generator (Motion Vector Encoding Data Generator, 440).

움직임 벡터 결정기(410)는 현재 블록의 움직임 벡터들, 현재 블록의 예측 움직임 벡터들 및 현재 블록의 차분 움직임 벡터들을 결정한다. 즉, 움직임 벡터 결정기(410)는 현재 블록에 대해 움직임 추정 과정을 수행하여 현재 블록 내의 각 서브블록들에 대한 움직임 벡터들을 결정하고, 각 움직임 벡터들을 예측하여 예측 움직임 벡터들을 결정하며, 움직임 벡터들로부터 예측 움직임 벡터들을 뺀 차분 움직임 벡터들을 결정한다.The motion vector determiner 410 determines motion vectors of the current block, predictive motion vectors of the current block, and differential motion vectors of the current block. That is, the motion vector determiner 410 performs a motion estimation process on the current block to determine motion vectors for each subblock in the current block, predicts each motion vector to determine predicted motion vectors, and motion vectors. The differential motion vectors are determined by subtracting the prediction motion vectors from.

여기서, 현재 블록은 현재 부호화하고자 하는 블록을 말하며, 블록은 매크로블록 또는 복수 개의 매크로블록이 결합된 블록이 될 수도 있다. 또한, 현재 블록에 대해 결정되는 움직임 벡터들은 블록의 각 서브블록별로 복수 개의 참조 픽처에 대한 복수 개의 움직임 벡터를 포함할 수 있다. 즉, 현재 블록을 구성하는 각 서브블록에 대해 하나의 움직임 벡터만이 결정되는 것이 아니라 각 서브블록에 대해 복수 개의 움직임 벡터가 결정될 수 있다. 예를 들어, 현재 블록이 양방향 예측 부호화되는 B 타입의 매크로블록인 경우, 매크로블록의 각 서브블록은 두 개의 참조 픽처에 대한 두 개의 움직임 벡터들을 가질 수 있다. 따라서, 후술할 현재 블록의 차분 움직임 벡터들과 차차분 움직임 벡터들도 각 서브블록별로 복수 개가 결정될 수 있다.Here, the current block refers to a block to be currently encoded, and the block may be a macroblock or a block in which a plurality of macroblocks are combined. In addition, the motion vectors determined for the current block may include a plurality of motion vectors for a plurality of reference pictures for each subblock of the block. That is, not only one motion vector is determined for each subblock constituting the current block, but a plurality of motion vectors may be determined for each subblock. For example, when the current block is a B type macroblock that is bi-predictively coded, each subblock of the macroblock may have two motion vectors for two reference pictures. Accordingly, a plurality of differential motion vectors and differential motion vectors of a current block to be described later may be determined for each subblock.

차차분 움직임 벡터 부호화기(420)는 현재 블록의 차분 움직임 벡터들의 평균 차분 움직임 벡터를 결정하고, 차분 움직임 벡터들에서 평균 차분 움직임 벡터를 감산하여 결정되는 차차분 움직임 벡터들과 평균 차분 움직임 벡터를 부호화하여 차차분 부호화 데이터를 생성하며, 차차분 부호화 데이터의 비트량을 계산한다. 여기서, 평균 차분 움직임 벡터의 각 성분은 차분 움직임 벡터들의 각 성분을 더한 값을 움직임 벡터들의 개수의 두배로 나눈 값으로 결정되거나 차분 움직임 벡터들을 각 성분별로 더하고 각 성분별로 움직임 벡터들의 개수로 나눈 값으로 결정될 수 있다.The differential motion vector encoder 420 determines an average differential motion vector of the differential motion vectors of the current block and encodes the differential motion vectors and the average differential motion vector determined by subtracting the average differential motion vector from the differential motion vectors. To generate differential coded data, and calculate the bit amount of the differential coded data. Here, each component of the average differential motion vector is determined by dividing each component of the differential motion vectors by twice the number of motion vectors or adding differential motion vectors by each component and dividing by the number of motion vectors for each component. Can be determined.

매크로블록의 각 서블블록별 차분 움직임 벡터들을 예시적으로 나타낸 도 5를 참조하면, 매크로블록이 제 1 서브블록 내지 제 4 서브블록을 포함하고, 서브블록들의 차분 움직임 벡터들이 각각 (x1,y1), (x2,y2), (x3,y3), (x4,y4)라고 가정할 때, 매크로블록 내의 움직임 벡터들의 개수 J는 4가 되며, 평균 차분 움직임 벡터 (xa,ya)의 각 성분은 수학식 3 또는 수학식 4와 같이 결정될 수 있다.Referring to FIG. 5, which illustrates differential motion vectors for each subblock of a macroblock, the macroblock includes first to fourth subblocks, and the differential motion vectors of the subblocks are each (x1, y1). Assuming that (x2, y2), (x3, y3) and (x4, y4), the number of motion vectors J in the macroblock is 4, and each component of the mean differential motion vector (xa, ya) is It may be determined as in Equation 3 or Equation 4.

xa = ya = (x1+x2+x3+x4+y1+y2+y3+y4)/4×2xa = ya = (x1 + x2 + x3 + x4 + y1 + y2 + y3 + y4) / 4 × 2

즉, 수학식 3에 따르면, 평균 차분 움직임 벡터의 각 성분은 차분 움직임 벡터들의 각 성분을 모두 더한 값을 움직임 벡터들의 개수의 두배로 나눈 값으로 동일하게 결정될 수 있다.That is, according to Equation 3, each component of the average differential motion vector may be equally determined by dividing the sum of the components of the differential motion vectors by twice the number of motion vectors.

xa = (x1+x2+x3+x4)/4, ya = (y1+y2+y3+y4)/4xa = (x1 + x2 + x3 + x4) / 4, ya = (y1 + y2 + y3 + y4) / 4

즉, 수학식 4에 따르면, 평균 차분 움직임 벡터의 각 성분은 차분 움직임 벡터들을 각 성분별로 더하고 각 성분별로 움직임 벡터들의 개수로 나눈 값으로 각각 결정될 수 있다.That is, according to Equation 4, each component of the average differential motion vector may be determined as a value obtained by adding the differential motion vectors for each component and dividing by the number of motion vectors for each component.

수학식 4보다는 수학식 3에 의해 결정되는 평균 차분 움직임 벡터를 사용하는 것이 더욱 바람직할 수 있다. 수학식 3에 의해 결정되는 평균 차분 움직임 벡터의 각 성분은 x축 성분과 y축 성분을 모두 평균한 것이기 때문에, 차차분 움직임 벡터를 계산했을 때 수학식 4에 의해 결정된 평균 차분 움직임 벡터를 이용했을 때보다 더욱 '0'에 가까울 수 있기 때문이다. 다만, 수학식 3과 수학식 4는 평균 차 분 움직임 벡터를 결정하는 계산 방식을 예시적으로 설명한 것일 뿐, 평균 차분 움직임 벡터는 수학식 3 또는 수학식 4에 의한 계산 방식뿐만 아니라 다른 다양한 벡터의 평균 계산 방식에 의해 계산될 수 있다. It may be more desirable to use the average differential motion vector determined by equation (3) rather than equation (4). Since each component of the average differential motion vector determined by Equation 3 is the average of both the x-axis component and the y-axis component, the mean differential motion vector determined by Equation 4 is used when calculating the differential motion vector. Because it can be closer to zero than ever. However, Equations 3 and 4 merely illustrate calculation methods for determining the average differential motion vector, and the average differential motion vector is not only calculated based on Equation 3 or Equation 4 but also various other vectors. It can be calculated by the average calculation method.

차분 움직임 벡터 부호화기(430)는 현재 블록의 차분 움직임 벡터들을 부호화하여 차분 부호화 데이터를 생성하며, 차분 부호화 데이터의 비트량을 계산한다.The differential motion vector encoder 430 generates differential encoded data by encoding differential motion vectors of the current block, and calculates a bit amount of the differential encoded data.

움직임 벡터 부호화 데이터 생성기(440)는 현재 블록의 움직임 벡터들의 개수, 차차분 부호화 데이터의 비트량 및 차분 부호화 데이터의 비트량 중 적어도 하나 이상을 기초로 차차분 부호화 데이터를 포함하는 움직임 벡터 부호화 데이터를 생성한다.The motion vector encoded data generator 440 may generate motion vector encoded data including differential encoded data based on at least one of a number of motion vectors of the current block, a bit amount of differentially encoded data, and a bit amount of differentially encoded data. Create

이를 위해, 움직임 벡터 부호화 데이터 생성기(440)는 현재 블록의 움직임 벡터들의 개수가 기준 개수보다 크고 차차분 부호화 데이터의 비트량이 차분 부호화 데이터의 비트량보다 작은 경우, 차차분 움직임 벡터 부호화기(420)에 의해 부호화되어 생성되는 차차분 부호화 데이터를 포함하는 움직임 벡터 부호화 데이터를 생성할 수 있다. 이때, 움직임 벡터 부호화 데이터 생성기(440)는 움직임 벡터들의 개수가 기준 개수보다 큰 경우에는 차차분 플래그를 생성하여 움직임 벡터 부호화 데이터에 포함시킬 수 있다.To this end, when the number of motion vectors of the current block is larger than the reference number and the bit amount of the differentially encoded data is smaller than the bit amount of the differentially encoded data, the motion vector encoded data generator 440 may transmit the difference to the differential motion vector encoder 420. It is possible to generate motion vector encoded data including differentially encoded data generated by encoding. In this case, when the number of motion vectors is larger than the reference number, the motion vector encoded data generator 440 may generate a difference flag and include the motion vector in the motion vector encoded data.

또한, 움직임 벡터 부호화 데이터 생성기(440)는 현재 블록의 움직임 벡터들의 개수가 기준 개수보다 작거나 같은 경우, 또는 현재 블록의 움직임 벡터들의 개수가 기준 개수보다 크지만 차차분 부호화 데이터의 비트량이 차분 부호화 데이터의 비트량보다 크거나 같은 경우, 차분 움직임 벡터 부호화기(430)에 의해 부호화 되어 생성되는 차분 부호화 데이터를 포함하는 움직임 벡터 부호화 데이터를 생성할 수 있다. 이때, 움직임 벡터 부호화 데이터 생성기(440)는 움직임 벡터들의 개수가 기준 개수보다 큰 경우에는 차차분 플래그를 생성하여 움직임 벡터 부호화 데이터에 포함시킬 수 있다.Further, the motion vector encoded data generator 440 may perform differential encoding when the number of motion vectors of the current block is less than or equal to the reference number, or if the number of motion vectors of the current block is greater than the reference number, If it is greater than or equal to the bit amount of the data, motion vector encoded data including differential encoded data generated by encoding by the differential motion vector encoder 430 may be generated. In this case, when the number of motion vectors is larger than the reference number, the motion vector encoded data generator 440 may generate a difference flag and include the motion vector in the motion vector encoded data.

여기서, 차차분 플래그는 차차분 움직임 벡터의 부호화 여부를 나타내는 플래그로서, 적용 식별자 또는 미적용 식별자로 설정될 수 있다. 적용 식별자는 차차분 부호화 데이터의 비트량이 차분 부호화 데이터의 비트량보다 작아서 차차분 부호화 데이터를 포함하는 움직임 벡터 부호화 데이터를 생성하였음을 나타내는 것이며, 미적용 식별자는 차차분 부호화 데이터의 비트량이 차분 부호화 데이터의 비트량보다 크거나 같아서 차분 부호화 데이터를 포함하는 움직임 벡터 부호화 데이터를 생성하였음을 나타내는 것이다.Here, the difference flag is a flag indicating whether to encode a difference motion vector and may be set as an applied identifier or an unapplied identifier. The application identifier indicates that the motion vector encoded data including the differential encoded data is generated because the bit amount of the differentially encoded data is smaller than the bit amount of the differentially encoded data, and the unapplied identifier indicates that the bit amount of the differentially encoded data is It indicates that motion vector coded data including differential coded data is generated because it is greater than or equal to the bit amount.

이하에서는 이러한 움직임 벡터 부호화기(310)를 이용하여 움직임 벡터를 부호화하는 방법에 대해 설명한다.Hereinafter, a method of encoding a motion vector using the motion vector encoder 310 will be described.

움직임 벡터 부호화 방법에 따르면, 움직임 벡터 부호화기(310)는 현재 블록의 움직임 벡터들, 현재 블록의 예측 움직임 벡터들 및 현재 블록의 차분 움직임 벡터들을 결정하고, 차분 움직임 벡터들의 평균 차분 움직임 벡터를 결정하며, 차분 움직임 벡터들에서 평균 차분 움직임 벡터를 감산하여 결정되는 차차분 움직임 벡터들과 평균 차분 움직임 벡터를 부호화하여 움직임 벡터 부호화 데이터를 생성한다.According to the motion vector encoding method, the motion vector encoder 310 determines motion vectors of the current block, predictive motion vectors of the current block, and differential motion vectors of the current block, and determines an average differential motion vector of the differential motion vectors. The motion vector encoded data is generated by encoding the differential motion vectors and the average differential motion vector determined by subtracting the average differential motion vector from the differential motion vectors.

여기서, 움직임 벡터 부호화기(310)는 현재 블록의 움직임 벡터들의 개수를 결정하고, 움직임 벡터들의 개수가 기준 개수보다 큰 경우에만 평균 차분 움직임 벡터를 결정할 수 있다. 또한, 평균 차분 움직임 벡터의 각 성분은 차분 움직임 벡터들의 각 성분을 더한 값을 움직임 벡터들의 개수의 두배로 나눈 값으로 결정할 수 있다.Here, the motion vector encoder 310 may determine the number of motion vectors of the current block and determine the average differential motion vector only when the number of motion vectors is larger than the reference number. In addition, each component of the average differential motion vector may be determined as a value obtained by dividing the value of each component of the differential motion vectors by twice the number of motion vectors.

또한, 움직임 벡터 부호화기(310)는 차차분 움직임 벡터가 부호화된 차차분 부호화 데이터의 비트량이 차분 움직임 벡터가 부호화된 차분 부호화 데이터의 비트량보다 작은 경우, 차차분 부호화 데이터를 포함하는 움직임 벡터 부호화 데이터를 생성할 수 있다. 이때, 움직임 벡터 부호화 데이터는 차차분 움직임 벡터를 부호화함을 나타내는 적용 식별자로 설정되는 차차분 플래그를 추가로 포함할 수 있다.The motion vector encoder 310 may further include motion vector coded data including differential coded data when the bit amount of the differential coded data encoded with the differential motion vector is smaller than the bit amount of differential coded data encoded with the differential motion vector. Can be generated. In this case, the motion vector encoded data may further include a difference flag set as an application identifier indicating that the differential motion vector is encoded.

또한, 움직임 벡터 부호화기(310)는 차차분 움직임 벡터가 부호화된 차차분 부호화 데이터의 비트량이 차분 움직임 벡터가 부호화된 차분 부호화 데이터의 비트량보다 크거나 같은 경우, 차분 부호화 데이터를 포함하는 움직임 벡터 부호화 데이터를 생성할 수 있다. 이때, 움직임 벡터 부호화 데이터는 차분 움직임 벡터를 부호화함을 나타내는 미적용 식별자로 설정되는 차차분 플래그를 추가로 포함할 수 있다.In addition, the motion vector encoder 310 may encode a motion vector including differential encoded data when the bit amount of the differential encoded data encoded with the differential motion vector is greater than or equal to the bit amount of the differential encoded data encoded with the differential motion vector. You can generate data. In this case, the motion vector encoded data may further include a differential flag set as an unapplied identifier indicating that the differential motion vector is encoded.

여기서, 현재 블록은 매크로블록 또는 복수 개의 매크로블록이 결합된 블록일 수 있으며, 현재 블록의 움직임 벡터들은 블록의 각 서브블록별로 복수 개의 참조 픽처에 대한 복수 개의 움직임 벡터를 포함할 수 있다.Here, the current block may be a macroblock or a block in which a plurality of macroblocks are combined, and the motion vectors of the current block may include a plurality of motion vectors for a plurality of reference pictures for each subblock of the block.

이하에서는 도 6을 통해 본 발명의 일 실시예에 따른 움직임 벡터 부호화 방 법의 구체적인 구현 예를 설명한다.Hereinafter, a specific implementation example of a motion vector encoding method according to an embodiment of the present invention will be described with reference to FIG. 6.

도 6은 본 발명의 일 실시예에 따른 움직임 벡터 부호화 방법의 구체적인 구현 예를 설명하기 위한 순서도이다.6 is a flowchart illustrating a specific implementation of a motion vector encoding method according to an embodiment of the present invention.

움직임 벡터 부호화기(310)는 부호화하고자 하는 블록 즉, 현재 블록의 움직임 벡터들을 추정하여 결정하고, 추정된 움직임 벡터들을 예측하여 예측 움직임 벡터들을 결정하며, 움직임 벡터들에서 예측 움직임 벡터들을 감산하여 차분 움직임 벡터들을 결정한다(S610).The motion vector encoder 310 estimates and determines motion vectors of a block to be encoded, that is, a current block, predicts estimated motion vectors to determine predicted motion vectors, and subtracts predicted motion vectors from the motion vectors to perform differential motion. The vectors are determined (S610).

움직임 벡터 부호화기(310)는 현재 블록의 움직임 벡터들의 개수가 기준 개수보다 큰지 여부를 판단한다(S620). 여기서, 기준 개수란 현재 블록의 움직임 벡터들을 부호화하기 위해 차차분 움직임 벡터들을 부호화할 것인지 여부를 결정하기 위한 기준이 되는 현재 블록의 움직임 벡터들의 개수로서, 사용자로부터 입력되거나 다른 장치로부터 전달되거나 기타 다른 정보를 이용하여 결정될 수 있으며, 2 개 이상의 정수로 설정될 수 있다.The motion vector encoder 310 determines whether the number of motion vectors of the current block is greater than the reference number (S620). Here, the reference number is the number of motion vectors of the current block, which is a reference for determining whether to encode differential motion vectors to encode motion vectors of the current block, and is input from a user, transmitted from another device, or otherwise. It can be determined using the information, and can be set to two or more integers.

움직임 벡터 부호화기(310)는 단계 S620의 판단 결과, 현재 블록의 움직임 벡터들의 개수가 기준 개수보다 큰 경우, 현재 블록의 차분 움직임 벡터들의 평균 차분 움직임 벡터를 결정한다(S630). 예를 들어, 움직임 벡터 부호화기(310)는 현재 블록의 움직임 벡터의 개수가 4 개이고 기준 개수가 3 개인 경우, 단계 S610에서 결정된 현재 블록의 차분 움직임 벡터들의 평균 차분 움직임 벡터를 결정한다. 여기서, 평균 차분 움직임 벡터는 수학식 3 또는 수학식 4 등과 같은 다양한 벡터의 평균 계산 방식을 이용하여 결정될 수 있다.If the number of motion vectors of the current block is larger than the reference number, the motion vector encoder 310 determines an average differential motion vector of the differential motion vectors of the current block (S630). For example, if the number of motion vectors of the current block is four and the number of references is three, the motion vector encoder 310 determines an average differential motion vector of the differential motion vectors of the current block determined in step S610. Here, the average differential motion vector may be determined using an average calculation method of various vectors such as Equation 3 or Equation 4.

움직임 벡터 부호화기(310)는 차차분 부호화 데이터의 비트량(Bdd)와 차분 부호화 데이터의 비트량(Bd)를 결정한다(S640). 즉, 움직임 벡터 부호화기(310)는 단계 S610에서 결정된 현재 블록의 차분 움직임 벡터들에서 단계 S630에서 결정된 평균 차분 움직임 벡터를 감산하여 차차분 움직임 벡터들을 결정하고, 차차분 움직임 벡터들과 평균 차분 움직임 벡터를 엔트로피 부호화 등 다양한 방식으로 부호화하여 차차분 부호화 데이터를 생성하며, 차차분 부호화 데이터의 비트수를 파악하여 차분 부호화 데이터의 비트량(Bdd)을 결정한다. 또한, 이와 별도로 움직임 벡터 부호화기(310)는 단계 S610에서 결정된 현재 블록의 차분 움직임 벡터들을 부호화하여 차분 부호화 데이터를 생성하며, 차분 부호화 데이터의 비트수를 파악하여 차분 부호화 데이터의 비트량(Bd)을 결정한다.The motion vector encoder 310 determines the bit amount Bdd of the differential coded data and the bit amount Bd of the differential coded data (S640). That is, the motion vector encoder 310 determines the differential motion vectors by subtracting the average differential motion vector determined in step S630 from the differential motion vectors of the current block determined in step S610, and determines the differential motion vectors and the average differential motion vector. Is encoded by various methods such as entropy encoding to generate differential coded data. The number of bits of the differential coded data is determined to determine the bit amount Bdd of the differential coded data. In addition, the motion vector encoder 310 generates differential encoded data by encoding the differential motion vectors of the current block determined in step S610, and determines the number of bits of the differential encoded data to determine the bit amount Bd of the differential encoded data. Decide

움직임 벡터 부호화기(310)는 차차분 부호화 데이터의 비트량이 차분 부호화 데이터의 비트량보다 작은지 여부를 판단한다(S650). 움직임 벡터 부호화기(310)는 단계 S650의 판단 결과, 차차분 부호화 데이터의 비트량이 차분 부호화 데이터의 비트량보다 작은 경우, 차차분 플래그를 생성하여 차차분 움직임 벡터를 부호화함을 나타내는 적용 식별자(예를 들어, '1')를 설정하고(S660), 차차분 플래그 및 차차분 부호화 데이터를 포함하는 움직임 벡터 부호화 데이터를 생성한다(S670). 즉, 움직임 벡터 부호화기(310)는 움직임 벡터 복호화 장치 또는 영상 복호화 장치에서 움직임 벡터 부호화 데이터에 포함되는 정보가 차차분 움직임 벡터를 부호화한 정보들임을 식별할 수 있도록, 적용 식별자가 설정되는 차차분 플래그를 생성하고, 단계 S640에서 이미 부호화된 차차분 부호화 데이터와 차차분 플래그를 포함하는 움직임 벡터 부호화 데이터를 생성한다.The motion vector encoder 310 determines whether the bit amount of the differential coded data is smaller than the bit amount of the differential coded data (S650). When the motion vector encoder 310 determines that the bit amount of the differentially encoded data is smaller than the bit amount of the differentially coded data as a result of the determination in step S650, the motion vector encoder 310 generates a difference flag to encode the differential motion vector (e.g., For example, '1' is set (S660), and motion vector encoded data including differential flag and differential encoded data is generated (S670). In other words, the motion vector encoder 310 may identify the information included in the motion vector encoded data in the motion vector decoding apparatus or the image decoding apparatus as information obtained by encoding the differential motion vector. In step S640, motion vector encoded data including the differential coded data and the differential flag already encoded are generated.

움직임 벡터 부호화기(310)는 단계 S650의 판단 결과, 차차분 부호화 데이터의 비트량이 차분 부호화 데이터의 비트량보다 크거나 같은 경우, 차차분 플래그를 생성하여 차분 움직임 벡터를 부호화함을 나타내는 미적용 식별자(예를 들어, '0')를 설정하고(S680), 차차분 플래그 및 차분 부호화 데이터를 포함하는 움직임 벡터 부호화 데이터를 생성한다(S690). 즉, 움직임 벡터 부호화기(310)는 움직임 벡터 복호화 장치 또는 영상 복호화 장치에서 움직임 벡터 부호화 데이터에 포함되는 정보가 차분 움직임 벡터를 부호화한 정보들임을 식별할 수 있도록, 미적용 식별자가 설정되는 차차분 플래그를 생성하고, 단계 S640에서 이미 부호화된 차분 부호화 데이터와 차차분 플래그를 포함하는 움직임 벡터 부호화 데이터를 생성한다.If the motion vector encoder 310 determines that the bit amount of the differential coded data is greater than or equal to the bit amount of the differential coded data as a result of the determination in step S650, the motion vector encoder 310 generates an unapplied identifier indicating that the differential motion vector is encoded (eg, For example, '0' is set (S680), and motion vector coded data including a differential flag and differential coded data is generated (S690). That is, the motion vector encoder 310 may identify a difference flag in which an unapplied identifier is set so that the motion vector decoding apparatus or the image decoding apparatus may identify that the information included in the motion vector encoded data is the information encoding the differential motion vector. In operation S640, motion vector encoded data including the differential encoded data and the differential flag already encoded are generated.

한편, 움직임 벡터 부호화기(310)는 단계 S620의 판단 결과, 현재 블록의 움직임 벡터들의 개수가 기준 개수보다 작거나 같은 경우, 현재 블록의 차분 움직임 벡터들을 부호화하여 차분 부호화 데이터를 생성하고, 차분 부호화 데이터를 포함하는 움직임 벡터 부호화 데이터를 생성한다(S692).On the other hand, the motion vector encoder 310 generates differential encoded data by encoding differential motion vectors of the current block when the number of motion vectors of the current block is less than or equal to the reference number, as a result of the determination in step S620. Generates motion vector encoded data including a (S692).

단계 S620에서, 움직임 벡터 부호화기(310)가 움직임 벡터들의 개수가 기준 개수보다 큰지 여부를 판단하는 것은 현재 블록의 움직임 벡터들의 개수가 작은 경우 현재 블록은 움직임이 유사한 영역들로 구성될 가능성이 크므로 통상적인 방식과 같이, 차분 움직임 벡터를 부호화하는 것이 더욱 효율적일 수 있기 때문이다. 또한, 움직임 벡터들의 개수가 기준 개수보다 큰 경우에는 현재 블록은 움직임이 상이한 영역들로 구성될 가능성이 크므로 통상적인 방식보다는 본 발명의 일 실시 예와 같이 차차분 움직임 벡터를 부호화하는 것이 더욱 효율적일 수 있기 때문이다.In operation S620, the motion vector encoder 310 determines whether the number of motion vectors is greater than the reference number, since the current block is likely to include regions with similar motions when the number of motion vectors of the current block is small. As in the conventional manner, it may be more efficient to encode the differential motion vector. In addition, when the number of motion vectors is larger than the reference number, since the current block is likely to be composed of regions having different motions, it may be more efficient to encode the differential motion vectors as in the exemplary embodiment of the present invention rather than the conventional method. Because it can.

또한, 단계 S650에서, 움직임 벡터 부호화기(310)가 차차분 부호화 데이터의 비트량이 차분 부호화 데이터의 비트량보다 작은지 여부를 판단하는 것은 차차분 부호화 데이터의 비트량이 차분 부호화 데이터의 비트량보다 크거나 같은 경우, 차차분 부호화 데이터를 전송하면 비트량이 더 증가하여 부호화 효율이 더 저하될 수 있기 때문에 통상적인 방식과 같이, 차분 움직임 벡터를 부호화하는 것이 더욱 효율적일 수 있기 때문이다. 즉, 움직임 벡터 부호화기(310)는 현재 블록의 움직임 벡터들의 개수가 기준 개수보다 커서 현재 블록이 움직임 상이한 영역들로 구성될 가능성이 커진다고 해서 무조건 차차분 움직임 벡터들을 부호화하는 것이 아니라, 차차분 부호화 데이터의 비트량과 차분 부호화 데이터의 비트량을 비교하여 통상적인 차분 움직임 벡터 부호화 방식과 본 발명의 일 실시예에 따른 차차분 움직임 벡터 부호화 방식을 선택적으로 적용할 수 있다. 현재 블록의 움직임 벡터들의 개수가 기준 개수보다 커서 현재 블록이 움직임 상이한 영역들로 구성될 가능성이 크다고 해도, 차차분 부호화 데이터의 비트량이 차분 부호화 데이터의 비트량보다 크거나 같은 경우에는 통상적인 방식과 같이 차분 움직임 벡터를 부호화하는 것이 추가적인 연산이 불필요할 뿐만 아니라 비트량이 절약되어 더욱 효율적이기 때문이다.Further, in step S650, the motion vector encoder 310 determines whether the bit amount of the differential coded data is smaller than the bit amount of the differential coded data, or the bit amount of the differential coded data is larger than the bit amount of the differential coded data. In the same case, it is because it is more efficient to encode the differential motion vector as in the conventional method, because the bit amount is increased and the coding efficiency can be further reduced when the differential coded data is transmitted. That is, the motion vector encoder 310 does not unconditionally encode differential motion vectors because the number of motion vectors of the current block is greater than the reference number, so that the current block is likely to be composed of regions having different motions. The conventional differential motion vector encoding method and the differential motion vector encoding method according to an embodiment of the present invention may be selectively applied by comparing the bit amount of the bit rate with the bit amount of the differential encoded data. Although the number of motion vectors of the current block is larger than the reference number, and thus the possibility that the current block is composed of regions having different motions is large, the bit rate of the differentially encoded data is greater than or equal to the bit amount of the differentially encoded data. This is because the encoding of the differential motion vector is not only unnecessary, but also more efficient because the bit amount is saved.

도 7은 본 발명의 일 실시예에 따른 영상 복호화 장치를 간략하게 나타낸 블록 구성도이다.FIG. 7 is a block diagram illustrating a video decoding apparatus according to an embodiment of the present invention. Referring to FIG.

도 7을 참조하면, 본 발명의 일 실시예에 따른 영상 복호화 장치(700)는 정 보 추출기(Information Extractor, 710), 엔트로피 복호화기(Entropy Decoder, 720), 잔여 데이터 복호화기(Residual Data Decoder, 730), 움직임 벡터 복호화기(Motion Vector Decoder, 740), 움직임 보상기(Motion Compensator, 750), 가산기(Adder, 760) 및 참조 픽처 메모리(Reference Picture Memory, 770)를 포함하여 구성될 수 있다.Referring to FIG. 7, the image decoding apparatus 700 according to an embodiment of the present invention includes an information extractor 710, an entropy decoder 720, and a residual data decoder. 730), a motion vector decoder 740, a motion compensator 750, an adder 760, and a reference picture memory 770.

정보 추출기(710)는 부호화 데이터로부터 움직임 벡터 부호화 데이터 및 부호화된 잔여 데이터를 추출한다. 이를 위해, 정보 추출기(710)는 부호화 데이터를 입력받아 블록 모드에 대한 정보(예를 들면, 식별자)를 추출하고 추출된 블록 모드에 대한 정보를 출력한다. 또한, 정보 추출기(710)는 블록 모드가 움직임 벡터 생략 모드인 경우(예를 들면, 블록 모드가 인트라 16x16 모드, 인트라 4x4 모드 등인 경우), 부호화 데이터로부터 움직임 벡터 부호화 데이터를 추출하지 않고 부호화된 잔여 데이터를 추출하여 출력할 수 있다. 반면, 블록 모드가 움직임 벡터 생략 모드가 아닌 경우(예를 들면, 블록 모드가 인터 16x16 모드, 인터 4x4 모드, P8x8 모드 등인 경우), 정보 추출기(710)는 부호화 데이터로부터 움직임 벡터 부호화 데이터와 부호화된 잔여 데이터를 추출하여 출력한다. 이때, 정보 추출기(710)는 부호화 데이터로부터 참조 픽처에 대한 인덱스 정보를 추가로 추출하여 출력할 수 있다.The information extractor 710 extracts motion vector encoded data and encoded residual data from the encoded data. To this end, the information extractor 710 receives the encoded data, extracts information about a block mode (eg, an identifier), and outputs information about the extracted block mode. Further, when the block mode is the motion vector skipping mode (for example, when the block mode is the intra 16x16 mode, the intra 4x4 mode, etc.), the information extractor 710 is encoded without extracting the motion vector encoded data from the encoded data. Data can be extracted and output. On the other hand, when the block mode is not the motion vector skipping mode (for example, when the block mode is the inter 16x16 mode, the inter 4x4 mode, the P8x8 mode, and the like), the information extractor 710 encodes the motion vector coded data from the encoded data. Extract residual data and output it. In this case, the information extractor 710 may further extract and output index information about the reference picture from the encoded data.

엔트로피 복호화기(720)는 정보 추출기(710)로부터 출력되는 부호화된 잔여 데이터를 복호화한다. 즉, 엔트로피 복호화기(720)는 엔트로피 부호화 기법 등을 이용하여 부호화된 잔여 데이터의 이진 데이터를 복호화하여 양자화된 변환 계수열 을 생성하고 역 지그재그 스캔 등 다양한 스캔 방식에 의해 역 스캔하여 양자화 변환 계수를 가지는 잔여 블록을 생성한다. 만약, 부호화된 잔여 데이터의 이진 데이터가 변환 계수가 부호화된 이진 데이터라면, 엔트로피 복호화기(720)에 의해 복호화된 잔여 블록은 변환 계수를 갖는 잔여 블록이 될 것이고, 부호화된 잔여 데이터의 이진 데이터가 변환되지 않고 양자화되지 않은 잔여 신호가 부호화된 이진 데이터라면, 엔트로피 복호화부(720)에 의해 복호화된 잔여 블록은 잔여 신호를 갖는 잔여 블록이 될 것이다.The entropy decoder 720 decodes the encoded residual data output from the information extractor 710. That is, the entropy decoder 720 decodes binary data of the residual data encoded by using an entropy encoding technique to generate a quantized transform coefficient sequence, and inversely scans by various scan methods such as inverse zigzag scan to perform quantization transform coefficients. Branches produce residual blocks. If the binary data of the encoded residual data is binary data in which transform coefficients are encoded, the residual block decoded by entropy decoder 720 will be a residual block having transform coefficients. If the residual and unquantized residual signal is encoded binary data, the residual block decoded by the entropy decoder 720 may be a residual block having the residual signal.

잔여 데이터 복호화기(730)는 엔트로피 복호화기(720)에 의해 복호화된 잔여 블록을 역 양자화하고 역 변환하여 잔여 블록을 복원한다. 즉, 잔여 데이터 복호화기(730)는 엔트로피 복호화기(720)로부터 출력되는 복호화된 잔여 블록의 양자화 변환 계수를 역 양자화하고 역 양자화된 변환 계수를 역 변환하여 잔여 신호를 갖는 잔여 블록을 복원한다. 만약, 잔여 데이터 복호화기(730)는 엔트로피 복호화기(720)에 의해 복호화된 잔여 블록이 양자화된 변환 계수를 가진다면, 역 양자화와 역 변환을 모두 수행하지만, 엔트로피 복호화기(720)에 의해 복호화된 잔여 블록이 변환 계수를 갖는다면, 역 양자화는 수행하지 않고 역 변환만을 수행할 수 있으며, 엔트로피 복호화기(720)에 의해 복호화된 잔여 블록이 잔여 신호만을 가진다면, 역 양자화와 역 변환을 모두 수행하지 않거나, 영상 복호화 장치(700)에서 잔여 데이터 복호화기(730)는 구성되지 않고 생략될 수도 있을 것이다. 한편, 도 7에서는 엔트로피 복호화기(720)와 잔여 데이터 복호화기(730)가 독립적으로 구성되는 것으로 도시하고 설명했지만, 각 기능을 통합한 하나의 복호화기(미도시)로 구성될 수도 있을 것이다. 따라서, 하나의 복호화기로 구성되는 경우, 복호화기는 부호화된 잔여 데이터를 복호화하여 잔여 블록을 복원한다.The residual data decoder 730 inverse quantizes and inversely transforms the residual block decoded by the entropy decoder 720 to restore the residual block. That is, the residual data decoder 730 inverse quantizes the quantized transform coefficients of the decoded residual block output from the entropy decoder 720, and inversely transforms the inverse quantized transform coefficients to restore the residual block having the residual signal. If the residual block decoded by the entropy decoder 720 has the quantized transform coefficients, the residual data decoder 730 performs both inverse quantization and inverse transform, but decodes by the entropy decoder 720. If the residual block has transform coefficients, only inverse transform may be performed without performing inverse quantization. If the residual block decoded by entropy decoder 720 has only residual signals, both inverse quantization and inverse transform may be performed. Otherwise, the residual data decoder 730 is not configured in the image decoding apparatus 700 and may be omitted. In FIG. 7, the entropy decoder 720 and the residual data decoder 730 are illustrated and described as being configured independently. However, the entropy decoder 720 and the residual data decoder 730 may be configured as one decoder (not shown) incorporating each function. Therefore, when configured with one decoder, the decoder decodes the encoded residual data and restores the residual block.

움직임 벡터 복호화기(740)는 움직임 벡터 부호화 데이터로부터 차차분 부호화 데이터를 추출하고 복호화하여 평균 차분 움직임 벡터와 차차분 움직임 벡터들을 복원하고, 복원되는 차차분 움직임 벡터들과 복원되는 평균 차분 움직임 벡터를 더하여 현재 블록의 차분 움직임 벡터들을 복원하며, 현재 블록의 예측 움직임 벡터들과 복원되는 차분 움직임 벡터들을 이용하여 현재 블록의 움직임 벡터들을 복원한다. 이를 위해, 움직임 벡터 복호화기(740)는 참조 픽처 메모리(770)에 저장된 참조 픽처에서 정보 추출기(710)로부터 출력되는 블록 모드에 대한 정보에 따른 블록 모드에 대응하는 블록 단위로 현재 블록의 예측 움직임 벡터들을 결정하고, 정보 추출기(710)로부터 출력되는 움직임 벡터 부호화 데이터를 복호화하여 현재 블록의 차분 움직임 벡터들을 복원하며, 복원된 차분 움직임 벡터들과 결정된 예측 움직임 벡터들을 이용하여 현재 블록의 움직임 벡터들을 복원한다.The motion vector decoder 740 extracts and decodes the differential coded data from the motion vector coded data, reconstructs the average differential motion vector and the differential motion vectors, and reconstructs the differential differential motion vectors and the average differential motion vector to be recovered. In addition, the differential motion vectors of the current block are reconstructed, and the motion vectors of the current block are reconstructed using the predicted motion vectors of the current block and the reconstructed differential motion vectors. To this end, the motion vector decoder 740 predicts the motion of the current block in block units corresponding to the block mode according to the information about the block mode output from the information extractor 710 in the reference picture stored in the reference picture memory 770. Determine the vectors, decode the motion vector coded data output from the information extractor 710, reconstruct the differential motion vectors of the current block, and use the reconstructed differential motion vectors and the determined prediction motion vectors to obtain the motion vectors of the current block. Restore

움직임 보상기(750)는 복원되는 현재 블록의 움직임 벡터들을 이용하여 현재 블록을 움직임 보상하여 예측 블록을 생성한다. 즉, 움직임 보상기(750)는 참조 픽처 메모리(770)에 저장된 참조 픽처에서 복원된 현재 블록의 움직임 벡터들에 의해 지시되는 참조 블록을 현재 블록의 예측 블록으로서 예측하여 예측 블록을 생성한다. 여기서, 움직임 보상기(750)는 참조 픽처를 이용하는 데 있어서, 정보 추출기(710)로부터 참조 픽처에 대한 인덱스 정보가 출력되면, 참조 픽처 메모리(770)에 저장된 많은 참조 픽처 중에서 참조 픽처에 대한 인덱스 정보에 의해 식별되는 참조 픽처를 이용할 수 있다.The motion compensator 750 generates a predictive block by motion compensating the current block using the motion vectors of the current block to be reconstructed. That is, the motion compensator 750 generates a prediction block by predicting the reference block indicated by the motion vectors of the current block reconstructed from the reference picture stored in the reference picture memory 770 as the prediction block of the current block. In this case, when the motion compensator 750 uses the reference picture and the index information of the reference picture is output from the information extractor 710, the motion compensator 750 may index the index information of the reference picture among the many reference pictures stored in the reference picture memory 770. The reference picture identified by can be used.

가산기(760)는 복원되는 잔여 블록과 예측 블록을 가산하여 현재 블록을 복원한다. 즉, 가산기(760)는 복호화기 또는 잔여 데이터 복호화기(730)로부터 출력되는 복원된 잔여 블록을 움직임 보상기(750)에서 예측되어 출력되는 예측 블록과 가산하여 현재 블록을 복원한다. 이와 같이 복원된 현재 블록은 픽처 단위로 누적되어 복원 영상으로서 출력되거나 참조 픽처로서 참조 픽처 메모리(770)에 저장되며, 다음 블록을 예측하는 데 활용될 수 있다.The adder 760 reconstructs the current block by adding the residual block to be recovered and the prediction block. That is, the adder 760 reconstructs the current block by adding the reconstructed residual block output from the decoder or the residual data decoder 730 to the prediction block predicted and output by the motion compensator 750. The reconstructed current block is accumulated in picture units and output as a reconstructed picture or stored in the reference picture memory 770 as a reference picture, and may be used to predict the next block.

도 7에서는 도시하지 않았지만, 전술한 본 발명의 일 실시예에 따른 영상 복호화 장치(700)는 H.264/AVC 표준에 기초하여, 인트라 예측을 위한 인트라 예측기, 복원된 현재 블록을 디블로킹 필터링하는 디블록킹 필터기 등을 추가로 포함할 수 있다. 또한, 잔여 데이터 복호화기(730)는 H.264/AVC 표준에 기초하여, 특정 픽처(예를 들어, 인트라 픽처)에 대한 역 변환 및 역 양자화 연산을 추가로 수행할 수도 있다.Although not shown in FIG. 7, the image decoding apparatus 700 according to an embodiment of the present invention described above deblocking and filtering an intra predictor and a reconstructed current block for intra prediction based on the H.264 / AVC standard. It may further include a deblocking filter and the like. In addition, the residual data decoder 730 may further perform inverse transform and inverse quantization operations on a particular picture (eg, an intra picture) based on the H.264 / AVC standard.

제어기(780)는 정보 추출기(710)에 의해 추출되는 블록 모드에 대한 정보와 참조 픽처에 대한 인덱스 정보와 같은 복호화 과정에서 필요한 각종 정보를 추출하여 움직임 벡터 복호화기(740) 및 움직임 보상기(750)로 전달하고, 영상 복호화 장치(700)의 모든 구성 요소에 대한 전반적인 제어를 수행한다.The controller 780 extracts various types of information necessary in the decoding process such as information on the block mode extracted by the information extractor 710 and index information on the reference picture, and then the motion vector decoder 740 and the motion compensator 750. In this case, overall control of all components of the image decoding apparatus 700 is performed.

도 8은 본 발명의 일 실시예에 따른 움직임 벡터 복호화 장치를 간략하게 나타낸 블록 구성도이다.FIG. 8 is a block diagram schematically showing a motion vector decoding apparatus according to an embodiment of the present invention.

본 발명의 일 실시예에 따른 움직임 벡터 복호화 장치는 도 7을 통해 전술한 본 발명의 일 실시예에 따른 영상 복호화 장치(700)에서는 움직임 벡터 복호화부(740)로 구현될 수 있으므로, 이하에서는 설명의 편의를 위해, 움직임 벡터 복호화기(740)라 칭한다.The motion vector decoding apparatus according to an embodiment of the present invention may be implemented as a motion vector decoding unit 740 in the image decoding apparatus 700 according to an embodiment of the present invention described above with reference to FIG. 7. For convenience, the motion vector decoder 740 is called.

본 발명의 일 실시예에 따른 움직임 벡터 복호화기(740)는 데이터 추출기(Data Extractor, 810), 차차분 움직임 벡터 복호화기(Double Differential Motion Vector Decoder, 820), 차분 움직임 벡터 복호화기(Differential Motion Vector Decoder, 830) 및 움직임 벡터 복원기(Motion Vector Reconstructor, 840)를 포함하여 구성될 수 있다.The motion vector decoder 740 according to an embodiment of the present invention includes a data extractor 810, a double differential motion vector decoder 820, and a differential motion vector decoder. Decoder 830 and a Motion Vector Reconstructor 840.

데이터 추출기(810)는 현재 블록의 움직임 벡터들의 개수가 기준 개수보다 큰 경우, 움직임 벡터 부호화 데이터로부터 차차분 부호화 데이터를 추출한다. 즉, 데이터 추출기(810)는 현재 블록의 움직임 벡터들의 개수를 결정하고, 현재 블록의 움직임 벡터들의 개수가 기 설정된 기준 개수(움직임 벡터 부호화기(310)에서 설정된 기준 개수와 동일하게 설정됨)보다 큰지 여부를 판단하여, 그 경우 정보 추출기(810)로부터 전달되는 움직임 벡터 부호화 데이터로부터 차차분 부호화 데이터를 추출하고 차차분 움직임 벡터 복호화기(820)로 전달한다.When the number of motion vectors of the current block is larger than the reference number, the data extractor 810 extracts differentially encoded data from the motion vector encoded data. That is, the data extractor 810 determines the number of motion vectors of the current block and determines whether the number of motion vectors of the current block is greater than a preset reference number (set equal to the reference number set by the motion vector encoder 310). In this case, the differential differential encoded data is extracted from the motion vector encoded data transmitted from the information extractor 810 and transmitted to the differential differential motion vector decoder 820.

이때, 데이터 추출기(810)는 움직임 벡터 부호화 데이터로부터 차차분 부호화 데이터를 추출하기 전에, 차차분 플래그를 추출할 수 있으며, 차차분 플래그의 설정값에 따라 움직임 벡터 부호화 데이터로부터 차차분 부호화 데이터를 추출할 지 또는 차분 부호화 데이터를 추출할지 여부를 결정할 수 있다. 즉, 데이터 추출기(810)는 현재 블록의 움직임 벡터들의 개수가 기준 개수보다 큰 경우, 움직임 벡 터 부호화 데이터로부터 차차분 플래그를 추출하고, 차차분 플래그의 설정값이 적용 식별자이면, 움직임 벡터 부호화 데이터로부터 차차분 부호화 데이터를 추출하고 차차분 움직임 벡터 복호화기(820)로 전달하며, 차차분 플래그의 설정값이 미적용 식별자이면, 움직임 벡터 부호화 데이터로부터 차분 움직임 벡터를 추출하고 차분 움직임 벡터 복호화기(830)로 전달한다.In this case, the data extractor 810 may extract the differential flag before extracting the differential encoded data from the motion vector encoded data, and extract the differential encoded data from the motion vector encoded data according to the set value of the differential flag. Whether or not to extract differentially encoded data may be determined. That is, if the number of motion vectors of the current block is larger than the reference number, the data extractor 810 extracts the difference flag from the motion vector encoded data, and if the set value of the difference flag is an application identifier, the motion vector encoded data Extracts the differentially encoded data from the differential motion vector decoder 820 and transfers the differentially encoded data to the differential motion vector decoder 820. If the set value of the differential flag is an unapplied identifier, the differential motion vector is extracted from the motion vector encoded data and the differential motion vector decoder 830 is applied. To pass).

또한, 데이터 추출기(810)는 현재 블록의 움직임 벡터들의 개수가 기준 개수보다 작거나 같은 경우, 움직임 벡터 부호화 데이터로부터 차분 부호화 데이터를 추출한다. 즉, 데이터 추출기(810)는 현재 블록의 움직임 벡터들의 개수가 기 설정된 기준 개수보다 작거나 같은 경우, 정보 추출기(810)로부터 전달되는 움직임 벡터 부호화 데이터로부터 차분 부호화 데이터를 추출하고 차분 움직임 벡터 복호화기(830)로 전달한다.In addition, the data extractor 810 extracts differential coded data from the motion vector coded data when the number of motion vectors of the current block is less than or equal to the reference number. That is, when the number of motion vectors of the current block is less than or equal to a preset reference number, the data extractor 810 extracts differential coded data from motion vector coded data transmitted from the information extractor 810, and then differential motion vector decoder. Forward to 830.

이를 위해, 데이터 추출기(810)는 정보 추출기(710)로부터 전달되는 블록 모드에 대한 정보를 이용하여 현재 블록의 움직임 벡터들의 개수를 결정할 수 있다. 예를 들어, 현재 블록이 16x16 P 매크로블록이고 블록 모드가 인터 4x4인 경우, 현재 블록은 4 개의 서브블록으로 분할되고 4 개의 움직임 벡터를 가진다는 것을 판단할 수 있다.To this end, the data extractor 810 may determine the number of motion vectors of the current block using information on the block mode transferred from the information extractor 710. For example, if the current block is a 16x16 P macroblock and the block mode is inter 4x4, it may be determined that the current block is divided into four subblocks and has four motion vectors.

차차분 움직임 벡터 복호화기(820)는 움직임 벡터 부호화 데이터로부터 추출되는 차차분 부호화 데이터를 복호화하여 평균 차분 움직임 벡터와 차차분 움직임 벡터들을 복원하고, 복원되는 차차분 움직임 벡터들과 복원되는 평균 차분 움직임 벡터를 더하여 현재 블록의 차분 움직임 벡터들을 복원한다.The differential motion vector decoder 820 decodes the differential coded data extracted from the motion vector coded data to reconstruct the average differential motion vector and the differential motion vectors, and restore the differential motion vectors and the average differential motion to be reconstructed. The vector is added to reconstruct differential motion vectors of the current block.

차분 움직임 벡터 복호화기(830)는 움직임 벡터 부호화 데이터로부터 추출되는 차분 부호화 데이터를 복호화하여 현재 블록의 차분 움직임 벡터들을 복원한다. 여기서, 차차분 움직임 벡터 복호화기(820)와 차분 움직임 벡터 복호화기(830)는 각각 차차분 부호화 데이터와 차분 부호화 데이터를 복호화할 때, 움직임 벡터 부호화기(310)의 차차분 움직임 벡터 부호화기(420) 및 차분 움직임 벡터 부호화기(430)가 부호화에 이용한 부호화 방식과 동일 또는 유사한 방식으로 복호화할 수 있다. 예를 들어, 차차분 움직임 벡터 부호화기(420) 및 차분 움직임 벡터 부호화기(430)가 각각 차차분 움직임 벡터들과 차분 움직임 벡터들을 가변 길이 부호화 테이블을 이용한 엔트로피 부호화를 이용하여 부호화했다면, 차차분 움직임 벡터 복호화기(820) 및 차분 움직임 벡터 부호화기(830)도 각각 차차분 부호화 데이터와 차분 부호화 데이터를 동일한 가변 길이 부호화 테이블을 이용한 엔트로피 부호화를 이용하여 복호화할 수 있다.The differential motion vector decoder 830 decodes differential coded data extracted from the motion vector coded data, and reconstructs differential motion vectors of the current block. Here, when the differential motion vector decoder 820 and the differential motion vector decoder 830 decode the differential coded data and the differential coded data, respectively, the differential motion vector coder 420 of the motion vector coder 310 is used. The differential motion vector encoder 430 may decode the same or similar method to the encoding method used for encoding. For example, if the differential motion vector encoder 420 and the differential motion vector encoder 430 encode the differential motion vectors and the differential motion vectors using entropy encoding using a variable length encoding table, respectively, the differential motion vector The decoder 820 and the differential motion vector encoder 830 may also decode the differential encoded data and the differential encoded data by using entropy encoding using the same variable length encoding table.

움직임 벡터 복원기(840)는 현재 블록의 예측 움직임 벡터들과 복원되는 차분 움직임 벡터들을 이용하여 블록의 움직임 벡터들을 복원한다. 즉, 움직임 벡터 복원기(840)는 움직임 벡터 부호화기(310)에서 현재 블록의 예측 움직임 벡터들을 결정하는 방식과 동일한 방법으로 현재 블록의 움직임 벡터들을 예측하여 예측 움직임 벡터들을 생성하고, 차차분 움직임 벡터 복호화기(820) 또는 차분 움직임 벡터 복호화기(830)에 의해 복원되는 현재 블록의 차분 움직임 벡터들과 생성된 예측 움직임 벡터들을 더하여 현재 블록의 움직임 벡터들을 복원한다.The motion vector reconstructor 840 reconstructs the motion vectors of the block using the predicted motion vectors of the current block and the differential motion vectors reconstructed. That is, the motion vector decompressor 840 predicts the motion vectors of the current block in the same manner as the motion vector encoder 310 determines the predicted motion vectors of the current block, and generates the predicted motion vectors, and the differential motion vectors. The motion vectors of the current block are reconstructed by adding the differential motion vectors of the current block reconstructed by the decoder 820 or the differential motion vector decoder 830 and the generated prediction motion vectors.

본 발명의 일 실시예에 따른 움직임 벡터 복호화 방법에 따르면, 움직임 벡 터 복호화기(740)는 움직임 벡터 부호화 데이터로부터 차차분 부호화 데이터를 추출하고 복호화하여 평균 차분 움직임 벡터와 차차분 움직임 벡터들을 복원하고, 복원되는 차차분 움직임 벡터들과 복원되는 평균 차분 움직임 벡터를 더하여 현재 블록의 차분 움직임 벡터들을 복원하며, 현재 블록의 예측 움직임 벡터들과 복원되는 차분 움직임 벡터들을 이용하여 현재 블록의 움직임 벡터들을 복원한다.According to the motion vector decoding method according to an embodiment of the present invention, the motion vector decoder 740 extracts and decodes the differential coded data from the motion vector coded data to reconstruct the average differential motion vector and the differential motion vectors. Reconstruct the differential motion vectors of the current block by adding the reconstructed differential motion vectors and the reconstructed average differential motion vector, and reconstruct the motion vectors of the current block by using the predicted motion vectors of the current block and the reconstructed differential motion vectors. do.

이하에서는 도 9를 참조하여 본 발명의 일 실시예에 따른 움직임 벡터 복호화 방법의 구체적인 구현 예를 설명한다.Hereinafter, a specific implementation example of a motion vector decoding method according to an embodiment of the present invention will be described with reference to FIG. 9.

도 9는 본 발명의 일 실시예에 따른 움직임 벡터의 복호화 방법의 구체적인 구현 예를 설명하기 위한 순서도이다.9 is a flowchart illustrating a specific implementation of a method of decoding a motion vector according to an embodiment of the present invention.

움직임 벡터 복호화기(740)는 정보 추출기(710)로부터 움직임 벡터 부호화 데이터가 전달되면, 정보 추출기(710)에 의해 부호화 데이터로부터 추출된 현재 블록의 블록 모드를 이용하여 현재 블록의 움직임 벡터들의 개수를 결정하고(S910), 현재 블록의 움직임 벡터들의 개수가 기 설정된 기준 개수보다 큰지 여부를 판단한다(S920). 현재 블록의 움직임 벡터들의 개수에 따라 움직임 벡터 부호화 데이터로부터 추출하는 데이터가 달라진다.When the motion vector coded data is transmitted from the information extractor 710, the motion vector decoder 740 obtains the number of motion vectors of the current block using the block mode of the current block extracted from the coded data by the information extractor 710. In operation S910, it is determined whether the number of motion vectors of the current block is greater than the preset reference number (S920). Data extracted from the motion vector encoded data varies according to the number of motion vectors of the current block.

움직임 벡터 복호화기(740)는 단계 S920의 판단 결과, 현재 블록의 움직임 벡터들의 개수가 기준 개수보다 큰 경우, 움직임 벡터 부호화 데이터로부터 차차분 플래그를 추출하고, 차차분 플래그가 적용 식별자(예를 들어, '1')로 설정되어 있는지 여부를 판단한다(S940). 차차분 플래의 설정값에 따라 움직임 벡터 부호화 데이터로부터 추출되는 데이터가 달라진다.If the number of motion vectors of the current block is greater than the reference number, the motion vector decoder 740 extracts a difference flag from the motion vector encoded data, and the difference flag is applied to an application identifier (eg, for example). , '1') is determined (S940). The data extracted from the motion vector encoded data varies depending on the set value of the differential difference flag.

움직임 벡터 부호화기(740)는 단계 S940의 판단 결과, 차차분 플래그가 적용 식별자인 경우, 움직임 벡터 부호화 데이터로부터 차차분 부호화 데이터를 복호화하여 평균 차분 움직임 벡터와 차차분 움직임 벡터들을 복원하고(S950), 차차분 움직임 벡터들과 평균 차분 움직임 벡터를 더하여 현재 블록의 차분 움직임 벡터들을 복원한다(S960).If the difference vector is an application identifier, the motion vector encoder 740 decodes the difference coded data from the motion vector coded data, and restores the average difference motion vector and the difference motion vectors (S950). The differential motion vectors and the average differential motion vector are added to reconstruct the differential motion vectors of the current block (S960).

움직임 벡터 부호화기(740)는 단계 S940의 판단 결과, 차차분 플래그가 미적용 식별자인 경우, 움직임 벡터 부호화 데이터로부터 차분 부호화 데이터를 복호화하여 현재 블록의 차분 움직임 벡터들을 복원한다(S670).If the difference vector is a non-applied identifier as a result of the determination in step S940, the motion vector encoder 740 decodes the differential coded data from the motion vector coded data (S670).

한편, 움직임 벡터 부호화기(740)는 단계 S920에서 현재 블록의 움직임 벡터들의 개수가 기준 개수보다 작거나 같은 경우, 단계 S670으로 진행하여 움직임 벡터 부호화 데이터로부터 차분 부호화 데이터를 복호화하여 현재 블록의 차분 움직임 벡터들을 복원한다.On the other hand, if the number of motion vectors of the current block is less than or equal to the reference number in step S920, the motion vector encoder 740 proceeds to step S670 to decode the differentially coded data from the motion vector encoded data to determine the differential motion vector of the current block. Restore them.

움직임 벡터 부호화기(740)는 단계 S960 또는 단계 S970에서 현재 블록의 차분 움직임 벡터들이 복원되면, 현재 블록의 움직임 벡터들을 예측하여 현재 블록의 예측 움직임 벡터들을 결정하고, 결정된 예측 움직임 벡터들과 복원된 차분 움직임 벡터들을 더하여 현재 블록의 움직임 벡터들을 복원한다(S980).When the difference motion vectors of the current block are reconstructed in step S960 or step S970, the motion vector encoder 740 determines the predictive motion vectors of the current block by predicting the motion vectors of the current block, and the reconstructed difference between the determined prediction motion vectors. The motion vectors are added to reconstruct the motion vectors of the current block (S980).

이상에서 전술한 바와 같이, 본 발명의 일 실시예에 따르면, 블록의 차분 움직임 벡터들을 부호화하는 것이 아니라, 차분 움직임 벡터들의 평균값을 가지는 평균 차분 움직임 벡터를 구하고 차분 움직임 벡터들에서 평균 차분 움직임 벡터를 뺀 차차분 움직임 벡터들을 부호화하면, 차차분 움직임 벡터들의 각 성분이 '0'에 가까워지므로 가변 길이 부호화를 이용하여 부호화하여 발생하는 데이터의 비트량을 줄일 수 있으므로 움직임 벡터 부호화 효율을 향상시킬 수 있다.As described above, according to an embodiment of the present invention, instead of encoding differential motion vectors of a block, an average differential motion vector having an average value of differential motion vectors is obtained, and the average differential motion vector is calculated from the differential motion vectors. When the subtraction differential motion vectors are encoded, since each component of the differential motion vectors is close to '0', the bit amount of data generated by using the variable length encoding may be reduced, thereby improving the motion vector encoding efficiency. .

또한, 모든 블록에 대해 차차분 움직임 벡터들을 부호화하는 것이 아니라, 블록의 움직임 벡터들이 일정 개수 이상일 경우에만 차차분 움직임 벡터들을 부호화함으로써 차분 움직임 벡터들의 각 성분이 '0'에 가까울 확률이 낮은 블록에 대해서만 차차분 움직임 벡터들을 부호화하도록 하고, 차차분 부호화 데이터의 비트량이 차분 부호화 데이터의 비트량보다 작은 경우에만 차차분 움직임 벡터들을 부호화함으로써 움직임 벡터를 부호화하여 발생하는 비트량이 더욱 증가하는 것을 방지할 수 있으므로, 움직임 벡터 부호화 효율을 향상시킬 수 있다.In addition, instead of encoding differential motion vectors for all blocks, only differential motion vectors are encoded when the number of motion vectors of the block is greater than or equal to a certain number, so that each component of differential motion vectors is less likely to be closer to zero. By encoding only the differential motion vectors and encoding the differential motion vectors only when the bit amount of the differentially encoded data is smaller than the bit amount of the differentially encoded data, it is possible to prevent an increase in the amount of bits generated by encoding the motion vector. Therefore, the motion vector coding efficiency can be improved.

또한, 움직임 벡터를 부호화함에 따라 발생하는 비트량을 줄일 수 있으므로, 전체적인 영상 부호화에 따른 비트량을 줄일 수 있으므로, 부호화 효율을 향상시킬 수 있다.In addition, since the bit amount generated by encoding the motion vector can be reduced, the bit amount according to the overall video encoding can be reduced, thereby improving the encoding efficiency.

이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결합하거나 결합하여 동작하는 것으로 설명되었다고 해서, 본 발명이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성 요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다. 또한, 그 모든 구성 요소들이 각각 하나의 독립적인 하드웨어로 구현될 수 있지만, 각 구성 요소들의 그 일부 또는 전부가 선택적으로 조합되어 하나 또는 복수 개의 하드웨어에서 조합된 일부 또는 전부의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로서 구현될 수도 있다. 그 컴퓨터 프로그램을 구성하는 코드들 및 코드 세그먼 트들은 본 발명의 기술 분야의 당업자에 의해 용이하게 추론될 수 있을 것이다. 이러한 컴퓨터 프로그램은 컴퓨터가 읽을 수 있는 저장매체(Computer Readable Media)에 저장되어 컴퓨터에 의하여 읽혀지고 실행됨으로써, 본 발명의 실시예를 구현할 수 있다. 컴퓨터 프로그램의 저장매체로서는 자기 기록매체, 광 기록매체, 캐리어 웨이브 매체 등이 포함될 수 있다.While the present invention has been described in connection with what is presently considered to be the most practical and preferred embodiment, it is to be understood that the invention is not limited to the disclosed embodiments. In other words, within the scope of the present invention, all of the components may be selectively operated in combination with one or more. In addition, although all of the components may be implemented as one independent hardware, some or all of the components may be selectively combined to perform a part or all of the functions in one or a plurality of hardware. As shown in FIG. Codes and code segments constituting the computer program may be easily inferred by those skilled in the art. Such a computer program may be stored in a computer readable storage medium and read and executed by a computer, thereby implementing embodiments of the present invention. As the storage medium of the computer program, a magnetic recording medium, an optical recording medium, a carrier wave medium, or the like may be included.

또한, 이상에서 기재된 "포함하다", "구성하다" 또는 "가지다" 등의 용어는, 특별히 반대되는 기재가 없는 한, 해당 구성 요소가 내재할 수 있음을 의미하는 것이므로, 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것으로 해석되어야 한다. 기술적이거나 과학적인 용어를 포함한 모든 용어들은, 다르게 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미가 있다. 사전에 정의된 용어와 같이 일반적으로 사용되는 용어들은 관련 기술의 문맥상의 의미와 일치하는 것으로 해석되어야 하며, 본 발명에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Furthermore, the terms "comprises", "comprising", or "having" described above mean that a component can be implanted unless otherwise specifically stated, But should be construed as including other elements. All terms, including technical and scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs, unless otherwise defined. Terms used generally, such as terms defined in a dictionary, should be interpreted to coincide with the contextual meaning of the related art, and shall not be interpreted in an ideal or excessively formal sense unless explicitly defined in the present invention.

이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석 되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The foregoing description is merely illustrative of the technical idea of the present invention, and various changes and modifications may be made by those skilled in the art without departing from the essential characteristics of the present invention. Therefore, the embodiments disclosed in the present invention are intended to illustrate rather than limit the scope of the present invention, and the scope of the technical idea of the present invention is not limited by these embodiments. The scope of protection of the present invention should be construed according to the following claims, and all technical ideas within the scope of equivalents should be construed as falling within the scope of the present invention.

이상에서 설명한 바와 같이 본 발명은 동영상을 부호화하고 복호화하는 영상 압축 처리 분야에 적용되어, 움직임 벡터를 예측 부호화할 때, 차분 움직임 벡터의 성분의 값을 감소시킬 수 있으므로, 움직임 벡터가 부호화된 데이터의 비트량을 감소시킬 수 있으며, 그에 따라 동영상의 부호화 효율을 향상시킬 수 있는 효과를 발생하는 매우 유용한 발명이다.As described above, the present invention is applied to an image compression processing field for encoding and decoding a video, and when predicting and encoding a motion vector, the value of a component of the differential motion vector can be reduced, so that the motion vector is encoded. It is a very useful invention that can reduce the amount of bits, thereby generating an effect that can improve the coding efficiency of a video.

도 1은 H.264/AVC 표준에 따라 움직임 벡터를 부호화하는 과정을 설명하기 위한 예시도,1 is an exemplary diagram for explaining a process of encoding a motion vector according to the H.264 / AVC standard.

도 2는 엔트로피 부호화를 위한 심볼당 비트수를 나타낸 예시도,2 is an exemplary diagram illustrating the number of bits per symbol for entropy encoding;

도 3은 본 발명의 일 실시예에 따른 영상 부호화 장치를 간략하게 나타낸 블록 구성도,3 is a block diagram schematically illustrating an image encoding apparatus according to an embodiment of the present invention.

도 4는 본 발명의 일 실시예에 따른 움직임 벡터 부호화 장치를 간략하게 나타낸 블록 구성도,4 is a block diagram schematically illustrating a motion vector encoding apparatus according to an embodiment of the present invention;

도 5는 매크로블록의 각 서블블록별 차분 움직임 벡터들을 나타낸 예시도,5 is an exemplary diagram illustrating differential motion vectors for each subblock of a macroblock;

도 6은 본 발명의 일 실시예에 따른 움직임 벡터 부호화 방법의 구체적인 구현 예를 설명하기 위한 순서도,6 is a flowchart illustrating a specific implementation of a motion vector encoding method according to an embodiment of the present invention;

도 7은 본 발명의 일 실시예에 따른 영상 복호화 장치를 간략하게 나타낸 블록 구성도,FIG. 7 is a block diagram schematically showing an image decoding apparatus according to an embodiment of the present invention. FIG.

도 8은 본 발명의 일 실시예에 따른 움직임 벡터 복호화 장치를 간략하게 나타낸 블록 구성도,8 is a block diagram schematically showing a motion vector decoding apparatus according to an embodiment of the present invention.

도 9는 본 발명의 일 실시예에 따른 움직임 벡터의 복호화 방법의 구체적인 구현 예를 설명하기 위한 순서도이다.9 is a flowchart illustrating a specific implementation of a method of decoding a motion vector according to an embodiment of the present invention.

Claims (24)

블록에 대한 움직임 벡터를 부호화하는 방법에 있어서,In the method of encoding a motion vector for a block, 상기 블록의 움직임 벡터들, 예측 움직임 벡터들 및 차분 움직임 벡터들을 결정하는 단계;Determining motion vectors, predicted motion vectors, and differential motion vectors of the block; 상기 차분 움직임 벡터들의 평균 차분 움직임 벡터를 결정하는 단계; 및Determining an average differential motion vector of the differential motion vectors; And 상기 차분 움직임 벡터들에서 상기 평균 차분 움직임 벡터를 감산하여 결정되는 차차분 움직임 벡터들을 부호화하여 움직임 벡터 부호화 데이터를 생성하는 단계Generating motion vector encoded data by encoding differential differential motion vectors determined by subtracting the average differential motion vector from the differential motion vectors. 를 포함하는 것을 특징으로 하는 움직임 벡터 부호화 방법.Wherein the motion vector coding method comprises: 제 1 항에 있어서, 상기 평균 차분 움직임 벡터를 결정하는 단계는,The method of claim 1, wherein the determining of the average differential motion vector comprises: 상기 움직임 벡터들의 개수가 기준 개수보다 큰 경우, 상기 평균 차분 움직임 벡터를 결정하는 것을 특징으로 하는 움직임 벡터 부호화 방법.And determining the average differential motion vector when the number of motion vectors is larger than a reference number. 제 1 항에 있어서, 상기 평균 차분 움직임 벡터를 결정하는 단계는,The method of claim 1, wherein the determining of the average differential motion vector comprises: 상기 차분 움직임 벡터들의 각 성분을 더한 값을 상기 움직임 벡터들의 개수의 두배로 나눈 값을 상기 평균 차분 움직임 벡터의 각 성분으로서 결정하는 것을 특징으로 하는 움직임 벡터 부호화 방법.And a value obtained by dividing a value obtained by adding each component of the differential motion vectors by twice the number of the motion vectors, as each component of the average differential motion vector. 제 1 항에 있어서, 상기 움직임 벡터 부호화 데이터를 생성하는 단계는,The method of claim 1, wherein the generating of the motion vector encoded data comprises: 상기 차차분 움직임 벡터들 및 상기 평균 차분 움직임 벡터가 부호화된 차차분 부호화 데이터의 비트량이 상기 차분 움직임 벡터들이 부호화된 차분 부호화 데이터의 비트량보다 작은 경우, 상기 차차분 부호화 데이터를 포함하는 상기 움직임 벡터 부호화 데이터를 생성하는 것을 특징으로 하는 움직임 벡터 부호화 방법.The motion vector including the differential encoded data when the bit amount of the differential encoded data encoded with the differential motion vectors and the average differential motion vector is smaller than the bit amount of the differential encoded data encoded with the differential motion vectors. A motion vector encoding method, characterized by generating encoded data. 제 4 항에 있어서, 상기 움직임 벡터 부호화 데이터는,The method of claim 4, wherein the motion vector encoded data is 상기 차차분 움직임 벡터들 및 상기 평균 차분 움직임 벡터를 부호화함을 나타내는 적용 식별자로 설정되는 차차분 플래그를 추가로 포함하는 것을 특징으로 하는 움직임 벡터 부호화 방법.And a differential flag set to an application identifier indicating that the differential motion vectors and the average differential motion vector are encoded. 제 1 항에 있어서, 상기 움직임 벡터 부호화 방법은,The method of claim 1, wherein the motion vector encoding method comprises: 상기 차차분 움직임 벡터들 및 상기 평균 차분 움직임 벡터가 부호화된 차차분 부호화 데이터의 비트량이 상기 차분 움직임 벡터가 부호화된 차분 부호화 데이터의 비트량보다 크거나 같은 경우, 상기 차분 부호화 데이터를 포함하는 움직임 벡터 부호화 데이터를 생성하는 단계를 추가로 포함하는 것을 특징으로 하는 움직임 벡터 부호화 방법.A motion vector including the differential encoded data when the bit amount of the differential encoded data encoded with the differential motion vectors and the average differential motion vector is greater than or equal to the bit amount of the differential encoded data encoded with the differential motion vector. And further comprising generating coded data. 제 6 항에 있어서, 상기 움직임 벡터 부호화 데이터는,The method of claim 6, wherein the motion vector encoded data, 상기 차분 움직임 벡터들을 부호화함을 나타내는 미적용 식별자로 설정되는 차차분 플래그를 추가로 포함하는 것을 특징으로 하는 움직임 벡터 부호화 방법.And a differential flag set to an unapplied identifier indicating that the differential motion vectors are encoded. 제 1 항에 있어서, 상기 블록은,The method of claim 1, wherein the block, 매크로블록 또는 복수 개의 매크로블록이 결합된 블록인 것을 특징으로 하는 움직임 벡터 부호화 방법.A motion vector encoding method, characterized in that a macroblock or a block in which a plurality of macroblocks are combined. 제 1 항에 있어서, 상기 움직임 벡터들은,The method of claim 1, wherein the motion vectors, 상기 블록의 각 서브블록별로 복수 개의 참조 픽처에 대한 복수 개의 움직임 벡터를 포함하는 것을 특징으로 하는 움직임 벡터 부호화 방법.And a plurality of motion vectors for a plurality of reference pictures for each subblock of the block. 블록에 대한 움직임 벡터를 부호화하는 장치에 있어서,In the apparatus for encoding a motion vector for a block, 상기 블록의 움직임 벡터들, 예측 움직임 벡터들 및 차분 움직임 벡터들을 결정하는 움직임 벡터 결정기;A motion vector determiner for determining motion vectors, predicted motion vectors, and differential motion vectors of the block; 상기 차분 움직임 벡터들의 평균 차분 움직임 벡터를 결정하고, 상기 차분 움직임 벡터들에서 상기 평균 차분 움직임 벡터를 감산하여 결정되는 차차분 움직임 벡터들과 상기 평균 차분 움직임 벡터를 부호화하여 차차분 부호화 데이터를 생성하며, 상기 차차분 부호화 데이터의 비트량을 계산하는 차차분 움직임 벡터 부호화기;Determine differential differential motion vectors of the differential motion vectors, encode differential motion vectors determined by subtracting the average differential motion vector from the differential motion vectors, and generate the average differential motion vector; A differential motion vector encoder for calculating a bit amount of the differential encoded data; 상기 차분 움직임 벡터들을 부호화하여 차분 부호화 데이터를 생성하며, 상기 차분 부호화 데이터의 비트량을 계산하는 차분 움직임 벡터 부호화기; 및A differential motion vector encoder for generating differential encoded data by encoding the differential motion vectors, and calculating a bit amount of the differential encoded data; And 상기 블록 내의 움직임 벡터들의 개수, 상기 차차분 부호화 데이터의 비트량 및 상기 차분 부호화 데이터의 비트량 중 적어도 하나 이상을 기초로 상기 차차분 부호화 데이터를 포함하는 움직임 벡터 부호화 데이터를 생성하는 움직임 벡터 부호화 데이터 생성기Motion vector encoded data for generating motion vector encoded data including the differential encoded data based on at least one of a number of motion vectors in the block, a bit amount of the differential encoded data, and a bit amount of the differential encoded data. Generator 를 포함하는 것을 특징으로 하는 움직임 벡터 부호화 장치.Motion vector encoding apparatus comprising a. 제 10 항에 있어서, 상기 움직임 벡터 부호화 데이터 생성기는,The method of claim 10, wherein the motion vector encoded data generator, 상기 움직임 벡터들의 개수가 기준 개수보다 크고 상기 차차분 부호화 데이터의 비트량이 상기 차분 부호화 데이터의 비트량보다 작은 경우, 상기 차차분 부호화 데이터를 포함하는 움직임 벡터 부호화 데이터를 생성하는 것을 특징으로 하는 움직임 벡터 부호화 장치.If the number of the motion vectors is greater than a reference number and the bit amount of the differential coded data is smaller than the bit amount of the differential coded data, motion vector coded data including the differential coded data is generated. Encoding device. 제 11 항에 있어서, 상기 움직임 벡터 부호화 데이터 생성기는,The method of claim 11, wherein the motion vector encoded data generator, 상기 움직임 벡터들의 개수가 상기 기준 개수보다 큰 경우에는 차차분 움직임 벡터의 부호화 여부를 나타내는 차차분 플래그를 생성하여 상기 움직임 벡터 부호화 데이터에 포함시키는 것을 특징으로 하는 움직임 벡터 부호화 장치.And if the number of motion vectors is larger than the reference number, generating a difference flag indicating whether to encode a differential motion vector and including the difference vector in the motion vector encoded data. 블록의 움직임 벡터를 복호화하는 방법에 있어서,In the method of decoding a motion vector of a block, 움직임 벡터 부호화 데이터로부터 차차분 부호화 데이터를 추출하고 복호화하여 평균 차분 움직임 벡터와 차차분 움직임 벡터들을 복원하는 단계;Extracting and decoding the differential coded data from the motion vector coded data to reconstruct the average differential motion vector and the differential motion vectors; 상기 복원되는 차차분 움직임 벡터들과 상기 복원되는 평균 차분 움직임 벡터를 더하여 블록의 차분 움직임 벡터들을 복원하는 단계; 및Reconstructing the differential motion vectors of the block by adding the reconstructed differential motion vectors and the reconstructed average differential motion vector; And 상기 블록의 예측 움직임 벡터들과 상기 복원되는 차분 움직임 벡터들을 이용하여 상기 블록의 움직임 벡터들을 복원하는 단계Reconstructing the motion vectors of the block using the predicted motion vectors of the block and the reconstructed differential motion vectors. 를 포함하는 것을 특징으로 하는 움직임 벡터 복호화 방법.And a motion vector decoding step of decoding the motion vector. 제 13 항에 있어서,14. The method of claim 13, 상기 평균 차분 움직임 벡터와 상기 차차분 움직임 벡터를 복원하는 단계는,Reconstructing the average differential motion vector and the differential motion vector, 상기 블록의 움직임 벡터들의 개수가 기준 개수보다 큰 경우, 상기 움직임 벡터 부호화 데이터로부터 상기 차차분 부호화 데이터를 추출하는 것을 특징으로 하는 움직임 벡터 복호화 방법.And if the number of motion vectors of the block is larger than a reference number, extracting the differential coded data from the motion vector coded data. 제 13 항에 있어서,14. The method of claim 13, 상기 평균 차분 움직임 벡터와 상기 차차분 움직임 벡터를 복원하는 단계는,Reconstructing the average differential motion vector and the differential motion vector, 상기 움직임 벡터 부호화 데이터로부터 차차분 플래그를 추출하고, 상기 차차분 플래그가 적용 식별자로 설정된 경우, 상기 움직임 벡터 부호화 데이터로부터 상기 차차분 부호화 데이터를 추출하는 것을 특징으로 하는 움직임 벡터 복호화 방법.And extracting the difference difference flag from the motion vector encoded data and extracting the difference difference encoded data from the motion vector encoded data when the difference difference flag is set to an application identifier. 제 15 항에 있어서, 상기 움직임 벡터 복호화 방법은,The method of claim 15, wherein the motion vector decoding method comprises: 상기 움직임 벡터 부호화 데이터로부터 차차분 플래그를 추출하고, 상기 차차분 플래그가 미적용 식별자로 설정된 경우, 상기 움직임 벡터 부호화 데이터로부터 차분 부호화 데이터를 추출하고 복호화하여 차분 움직임 벡터들을 복원하는 단계를 추가로 포함하는 것을 특징으로 하는 움직임 벡터 복호화 방법.Extracting the differential flag from the motion vector encoded data, and if the differential flag is set to an unapplied identifier, extracting and decoding differential encoded data from the motion vector encoded data to restore differential motion vectors; Motion vector decoding method characterized in that. 제 13 항에 있어서, 상기 움직임 벡터 복호화 방법은,The method of claim 13, wherein the motion vector decoding method comprises: 상기 블록의 움직임 벡터들의 개수가 기준 개수보다 작거나 같은 경우, 상기 움직임 벡터 부호화 데이터로부터 차분 부호화 데이터를 추출하고 복호화하여 차분 움직임 벡터들을 복원하는 단계를 추가로 포함하는 것을 특징으로 하는 움직임 벡터 복호화 방법.And if the number of motion vectors of the block is less than or equal to a reference number, extracting and decoding differential coded data from the motion vector coded data, and reconstructing differential motion vectors. . 블록의 움직임 벡터를 복호화하는 장치에 있어서,An apparatus for decoding a motion vector of a block, 움직임 벡터 부호화 데이터로부터 추출되는 차차분 부호화 데이터를 복호화하여 평균 차분 움직임 벡터와 차차분 움직임 벡터들을 복원하고, 상기 복원되는 차차분 움직임 벡터들과 상기 복원되는 평균 차분 움직임 벡터를 더하여 상기 블록의 차분 움직임 벡터들을 복원하는 차차분 움직임 벡터 복호화기;Decoding the differential coded data extracted from the motion vector coded data to reconstruct the average differential motion vector and the differential motion vectors, and add the reconstructed differential motion vectors and the reconstructed average differential motion vector to perform the differential motion of the block. A differential motion vector decoder to reconstruct the vectors; 움직임 벡터 부호화 데이터로부터 추출되는 차분 부호화 데이터를 복호화하여 상기 블록의 차분 움직임 벡터들을 복원하는 차분 움직임 벡터 복호화기; 및A differential motion vector decoder for decoding differential coded data extracted from motion vector coded data and reconstructing differential motion vectors of the block; And 상기 블록의 예측 움직임 벡터들과 상기 복원되는 차분 움직임 벡터들을 이용하여 상기 블록의 움직임 벡터들을 복원하는 움직임 벡터 복원기A motion vector reconstructor for reconstructing the motion vectors of the block by using the predicted motion vectors of the block and the reconstructed differential motion vectors. 를 포함하는 것을 특징으로 하는 움직임 벡터 복호화 장치.Motion vector decoding apparatus comprising a. 제 18 항에 있어서, 상기 움직임 벡터 복호화 장치는,The apparatus of claim 18, wherein the motion vector decoding apparatus comprises: 데이터 추출기를 추가로 포함하되, 상기 데이터 추출기는 상기 블록의 움직임 벡터들의 개수가 기준 개수보다 큰 경우, 상기 움직임 벡터 부호화 데이터로부터 상기 차차분 부호화 데이터를 추출하는 것을 특징으로 하는 움직임 벡터 복호화 장치.And a data extractor, wherein the data extractor extracts the differential coded data from the motion vector coded data when the number of motion vectors of the block is larger than a reference number. 제 18 항에 있어서, 상기 움직임 벡터 복호화 장치는,The apparatus of claim 18, wherein the motion vector decoding apparatus comprises: 데이터 추출기를 추가로 포함하되, 상기 데이터 추출기는 상기 블록의 움직임 벡터들의 개수가 기준 개수보다 작거나 같은 경우, 상기 움직임 벡터 부호화 데이터로부터 상기 차분 부호화 데이터를 추출하는 것을 특징으로 하는 움직임 벡터 복호화 장치.And a data extractor, wherein the data extractor extracts the differential coded data from the motion vector coded data when the number of motion vectors of the block is less than or equal to a reference number. 영상을 블록 단위로 부호화하는 방법에 있어서,In the method of encoding the video in block units, 블록의 움직임 벡터들과 예측 움직임 벡터들을 이용하여 결정되는 차분 움직임 벡터들의 평균 차분 움직임 벡터를 결정하는 단계;Determining an average differential motion vector of the differential motion vectors determined using the motion vectors and the predictive motion vectors of the block; 상기 차분 움직임 벡터들에서 상기 평균 차분 움직임 벡터를 감산하여 결정되는 차차분 움직임 벡터들을 부호화하여 상기 블록에 대한 움직임 벡터 부호화 데이터를 생성하는 단계;Generating motion vector encoded data for the block by encoding the differential motion vectors determined by subtracting the average differential motion vector from the differential motion vectors; 상기 움직임 벡터들을 이용하여 상기 블록을 움직임 보상하여 예측 블록을 생성하는 단계;Generating a predictive block by motion compensating the block using the motion vectors; 상기 블록과 상기 예측 블록을 감산하여 잔여 블록을 생성하는 단계;Subtracting the block and the prediction block to generate a residual block; 상기 잔여 블록을 부호화하여 부호화된 잔여 데이터를 생성하는 단계; 및Encoding the residual block to generate encoded residual data; And 상기 부호화된 잔여 데이터 및 상기 움직임 벡터 부호화 데이터를 포함하는 부호화 데이터를 생성하고 출력하는 단계Generating and outputting encoded data including the encoded residual data and the motion vector encoded data. 를 포함하는 것을 특징으로 하는 영상 부호화 방법.Image encoding method comprising a. 영상을 블록 단위로 부호화하는 장치에 있어서,In the device for encoding the video in block units, 블록의 움직임 벡터들과 예측 움직임 벡터들을 이용하여 결정되는 차분 움직임 벡터들의 평균 차분 움직임 벡터를 결정하고, 상기 차분 움직임 벡터들에서 상기 평균 차분 움직임 벡터를 감산하여 결정되는 차차분 움직임 벡터들을 부호화하여 상기 블록에 대한 움직임 벡터 부호화 데이터를 생성하는 움직임 벡터 부호화기;Determine an average differential motion vector of differential motion vectors determined using the motion vectors of the block and the predictive motion vectors, and encode the differential motion vectors determined by subtracting the average differential motion vector from the differential motion vectors; A motion vector encoder for generating motion vector encoded data for the block; 상기 움직임 벡터들을 이용하여 상기 블록을 움직임 보상하여 예측 블록을 생성하는 움직임 보상기;A motion compensator for generating a predictive block by motion compensating the block using the motion vectors; 상기 블록과 상기 예측 블록을 감산하여 잔여 블록을 생성하는 감산기;A subtractor for generating a residual block by subtracting the block and the prediction block; 상기 잔여 블록을 부호화하여 부호화된 잔여 데이터를 생성하는 부호화기; 및An encoder for encoding the residual block to generate encoded residual data; And 상기 부호화된 잔여 데이터 및 상기 움직임 벡터 부호화 데이터를 포함하는 부호화 데이터를 생성하고 부호화 데이터 생성기Generating encoded data including the encoded residual data and the motion vector encoded data, and encoding data generator. 를 포함하는 것을 특징으로 하는 영상 부호화 장치.An image encoding apparatus comprising a. 영상을 블록 단위로 복호화하는 방법에 있어서,In the method of decoding a video in block units, 부호화 데이터에 포함되는 움직임 벡터 부호화 데이터로부터 차차분 부호화 데이터를 추출하고 복호화하여 평균 차분 움직임 벡터와 차차분 움직임 벡터들을 복원하는 단계;Extracting and decoding the differential coded data from the motion vector coded data included in the coded data and reconstructing the average differential motion vector and the differential motion vectors; 상기 복원되는 차차분 움직임 벡터들과 상기 복원되는 평균 차분 움직임 벡터를 더하여 블록의 차분 움직임 벡터들을 복원하는 단계;Reconstructing the differential motion vectors of the block by adding the reconstructed differential motion vectors and the reconstructed average differential motion vector; 상기 블록의 예측 움직임 벡터들과 상기 복원되는 차분 움직임 벡터들을 이용하여 상기 블록의 움직임 벡터들을 복원하는 단계;Reconstructing the motion vectors of the block using the predicted motion vectors of the block and the reconstructed differential motion vectors; 상기 복원되는 움직임 벡터들을 이용하여 상기 블록을 움직임 보상하여 예측 블록을 생성하는 단계;Generating a prediction block by motion compensating the block using the reconstructed motion vectors; 상기 부호화 데이터로부터 부호화된 잔여 데이터를 추출하고 복호화하여 잔여 블록을 복원하는 단계; 및Restoring a residual block by extracting and decoding encoded residual data from the encoded data; And 상기 복원되는 잔여 블록과 상기 예측 블록을 가산하여 상기 블록을 복원하는 단계Reconstructing the block by adding the reconstructed residual block and the prediction block 를 포함하는 것을 특징으로 하는 영상 복호화 방법.Image decoding method comprising a. 영상을 블록 단위로 복호화하는 장치에 있어서,An apparatus for decoding a video in block units, 부호화 데이터로부터 움직임 벡터 부호화 데이터 및 부호화된 잔여 데이터를 추출하는 정보 추출기;An information extractor for extracting motion vector encoded data and encoded residual data from the encoded data; 상기 움직임 벡터 부호화 데이터로부터 차차분 부호화 데이터를 추출하고 복호화하여 평균 차분 움직임 벡터와 차차분 움직임 벡터들을 복원하고, 상기 복원되는 차차분 움직임 벡터들과 상기 복원되는 평균 차분 움직임 벡터를 더하여 블록의 차분 움직임 벡터들을 복원하며, 상기 블록의 예측 움직임 벡터들과 상기 복원되는 차분 움직임 벡터들을 이용하여 상기 블록의 움직임 벡터들을 복원하는 움직임 벡터 복호화기;Extract and decode the differential coded data from the motion vector coded data to reconstruct the average differential motion vector and the differential motion vectors, and add the reconstructed differential motion vectors and the reconstructed average differential motion vector to perform a differential motion of the block. A motion vector decoder for reconstructing vectors and reconstructing motion vectors of the block using the predicted motion vectors of the block and the reconstructed differential motion vectors; 상기 복원되는 움직임 벡터들을 이용하여 상기 블록을 움직임 보상하여 예측 블록을 생성하는 움직임 보상기;A motion compensator for generating a prediction block by motion compensating the block using the reconstructed motion vectors; 상기 부호화된 잔여 데이터를 복호화하여 잔여 블록을 복원하는 복호화기; 및A decoder configured to decode the encoded residual data to recover a residual block; And 상기 복원되는 잔여 블록과 상기 예측 블록을 가산하여 상기 블록을 복원하는 가산기An adder for reconstructing the block by adding the reconstructed residual block and the prediction block; 를 포함하는 것을 특징으로 하는 영상 복호화 장치.Video decoding apparatus comprising a.
KR1020090080600A 2009-08-28 2009-08-28 Motion Vector Coding Method and Apparatus for Video Coding and Video Coding Method and Apparatus Using Same KR101318869B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090080600A KR101318869B1 (en) 2009-08-28 2009-08-28 Motion Vector Coding Method and Apparatus for Video Coding and Video Coding Method and Apparatus Using Same
PCT/KR2010/005788 WO2011025301A2 (en) 2009-08-28 2010-08-27 Method and apparatus for encoding/decoding motion vectors for video encoding, and method and apparatus for encoding/decoding images

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090080600A KR101318869B1 (en) 2009-08-28 2009-08-28 Motion Vector Coding Method and Apparatus for Video Coding and Video Coding Method and Apparatus Using Same

Publications (2)

Publication Number Publication Date
KR20110023023A KR20110023023A (en) 2011-03-08
KR101318869B1 true KR101318869B1 (en) 2013-10-16

Family

ID=43628627

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090080600A KR101318869B1 (en) 2009-08-28 2009-08-28 Motion Vector Coding Method and Apparatus for Video Coding and Video Coding Method and Apparatus Using Same

Country Status (2)

Country Link
KR (1) KR101318869B1 (en)
WO (1) WO2011025301A2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019054736A1 (en) * 2017-09-12 2019-03-21 삼성전자주식회사 Method for encoding and decoding motion information and device for encoding and decoding motion information
WO2020004682A1 (en) * 2018-06-26 2020-01-02 삼성전자 주식회사 Motion information encoding apparatus and encoding method, and motion information decoding apparatus and decoding method

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11240526B2 (en) 2017-01-02 2022-02-01 Industry-University Cooperation Foundation Hanyang University Method and apparatus for decoding image using interpicture prediction
EP3780616B1 (en) 2018-04-13 2024-03-06 LG Electronics Inc. Method and apparatus for inter prediction in video processing system
CN116708817A (en) 2018-04-24 2023-09-05 Lg电子株式会社 Decoding device, encoding device, and data transmitting device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008172827A (en) 1994-10-10 2008-07-24 Thomson Multimedia Sa Method and apparatus for coding or decoding motion vector

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0178221B1 (en) * 1995-07-31 1999-05-01 배순훈 Improved pattern vector encoding system using average value of pixels
KR20040039808A (en) * 2002-11-05 2004-05-12 엘지전자 주식회사 Method for prediction moving vector
KR20060057785A (en) * 2004-11-24 2006-05-29 주식회사 네빌소프트 Method for encoding and decoding video and thereby device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008172827A (en) 1994-10-10 2008-07-24 Thomson Multimedia Sa Method and apparatus for coding or decoding motion vector

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019054736A1 (en) * 2017-09-12 2019-03-21 삼성전자주식회사 Method for encoding and decoding motion information and device for encoding and decoding motion information
US11172204B2 (en) 2017-09-12 2021-11-09 Samsung Electronics Co., Ltd. Method for encoding and decoding motion information and device for encoding and decoding motion information
US11870999B2 (en) 2017-09-12 2024-01-09 Samsung Electronics Co., Ltd. Method for encoding and decoding motion information and device for encoding and decoding motion information
WO2020004682A1 (en) * 2018-06-26 2020-01-02 삼성전자 주식회사 Motion information encoding apparatus and encoding method, and motion information decoding apparatus and decoding method

Also Published As

Publication number Publication date
KR20110023023A (en) 2011-03-08
WO2011025301A2 (en) 2011-03-03
WO2011025301A3 (en) 2011-06-09

Similar Documents

Publication Publication Date Title
KR101377660B1 (en) Motion Vector Encoding/Decoding Method and Apparatus Using Multiple Motion Vector Estimation and Video Encoding/Decoding Method and Apparatus Using Same
KR101279573B1 (en) Motion Vector Encoding/Decoding Method and Apparatus and Video Encoding/Decoding Method and Apparatus
KR101943049B1 (en) Method and Apparatus for Image Encoding/Decoding
KR101377527B1 (en) Method and Apparatus for Encoding and Decoding Motion Vector in Plural Number of Reference Pictures and Video Encoding/Decoding Method and Apparatus Using Same
KR20110027480A (en) Motion vector coding method and apparatus and video coding method and apparatus by using same
KR101681303B1 (en) Method and Apparatus for Encoding/Decoding of Video Data Using Partitioned-Block Prediction
KR101677480B1 (en) Method and Apparatus for Encoding/Decoding of Video Data Using Efficient Selection of Intra Prediction Mode Set
KR20130051384A (en) Method and apparatus video encoding and decoding using skip mode
KR101418101B1 (en) Video Encoding/Decoding Method and Apparatrus in Consideration of Low Frequency Component
KR20110054592A (en) Motion vector coding method and apparatus by using candidate predicted motion vector set selection and video coding method and apparatus using same
KR20080064355A (en) Method and apparatus for prediction video encoding, and method and apparatus for prediction video decoding
KR20120009861A (en) Method and Apparatus for Encoding/Decoding of Video Data Using Expanded Skip Mode
KR101418104B1 (en) Motion Vector Coding Method and Apparatus by Using Motion Vector Resolution Combination and Video Coding Method and Apparatus Using Same
KR101318869B1 (en) Motion Vector Coding Method and Apparatus for Video Coding and Video Coding Method and Apparatus Using Same
KR101379190B1 (en) Adaptive Resolution Based Video Encoding/Decoding Method and Apparatus
KR20120015495A (en) Method and apparatus for encoding/decoding of video data capable of skipping filtering mode
KR20110042705A (en) Inter prediction method and apparatus using motion information based adjacent pixels and video coding method and apparatus using same
KR20110033511A (en) Inter prediction method and apparatus using adjacent pixels and video coding method and apparatus using same
KR101449683B1 (en) Motion Vector Coding Method and Apparatus by Using Motion Vector Resolution Restriction and Video Coding Method and Apparatus Using Same
KR20100019088A (en) Inter prediction apparatus and video encoding/decoding apparatus and method using same
KR20110098089A (en) Video encoding apparatus and method, and video decoding apparatus and method
KR101590493B1 (en) Method and Apparatus for Encoding and Decoding Video by Using Inter Prediction
KR101693284B1 (en) Method and Apparatus for Encoding/Decoding of Video Data Using Global Motion-based Enconding Structure
KR101379189B1 (en) Video Coding Method and Apparatus by Using Filtering Motion Compensation Frame
KR101997655B1 (en) Method and Apparatus for Image Encoding/Decoding

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: 20161004

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171010

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181002

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190926

Year of fee payment: 7