KR20120079862A - Apparatus and method for encoding and decoding motion vector - Google Patents
Apparatus and method for encoding and decoding motion vector Download PDFInfo
- Publication number
- KR20120079862A KR20120079862A KR1020110001187A KR20110001187A KR20120079862A KR 20120079862 A KR20120079862 A KR 20120079862A KR 1020110001187 A KR1020110001187 A KR 1020110001187A KR 20110001187 A KR20110001187 A KR 20110001187A KR 20120079862 A KR20120079862 A KR 20120079862A
- Authority
- KR
- South Korea
- Prior art keywords
- motion vector
- component
- predicted
- virtual
- current
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/587—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence
Abstract
Description
본 발명은 움직임 벡터 부호화 및 복호화 장치 및 방법에 관한 것이다.The present invention relates to a motion vector encoding and decoding apparatus and method.
현재, 영상 부호화 및 복호화 분야에서 널리 사용되고 있는 움직임벡터 부호화 및 복호화 방법은 부호화 대상블록(이하, '현재블록'이라 함)에 대해 시공간적으로 주변에 위치한 주변블록의 움직임벡터를 예측값으로 사용하여 움직임 예측된 현재블록의 움직임벡터(이하, '현재 움직임벡터'라 함)를 예측 부호화하는 것이다. 즉, 현재 움직임벡터는 주변블록의 움직임벡터와 상당한 상관관계를 가지고 있기 때문에, 소정의 방법을 통해 주변블록의 움직임벡터로부터 현재 움직임벡터의 예측값(이하, '예측 움직임벡터'라 함)을 계산한 후, 현재 움직임벡터 자체를 부호화하지 않고 예측 움직임벡터에 대한 차분 움직임벡터만을 부호화함으로써 부호화해야 할 비트량을 줄여 부호화 효율을 높이고 있다.Currently, a motion vector encoding and decoding method widely used in the field of image encoding and decoding uses a motion vector of a neighboring block located in space and time around a encoding target block (hereinafter, referred to as a 'current block') as a prediction value. It predicts and encodes a motion vector (hereinafter, referred to as a 'current motion vector') of the current block. That is, since the current motion vector has a significant correlation with the motion vector of the neighboring block, the predicted value of the current motion vector (hereinafter referred to as 'predictive motion vector') is calculated from the motion vector of the neighboring block by a predetermined method. After that, by encoding only the differential motion vector for the predicted motion vector without encoding the current motion vector itself, the amount of bits to be encoded is reduced to increase the coding efficiency.
H.264/AVC에서는 부호화할 현재블록의 주변블록들의 움직임벡터들에 대해 중간값(Median) 연산을 수행하여 예측 움직임벡터를 계산하고 있다.In H.264 / AVC, a predicted motion vector is calculated by performing a median operation on motion vectors of neighboring blocks of a current block to be encoded.
이러한 기술은 움직임벡터를 부호화하는 데에 소요되는 비트량을 줄이는 데에 어느 정도 기여하지만, 현재블록의 움직임벡터와 상관관계가 높은 최적의 예측 움직임벡터를 예측하는 데에는 한계가 있으며, 따라서 부호화 효율의 향상에 있어서도 한계가 따른다.While this technique contributes somewhat to reduce the amount of bits required to encode a motion vector, there is a limit to predicting an optimal predicted motion vector highly correlated with the motion vector of the current block. There is also a limit to improvement.
이러한 문제를 해결하기 위해, 본 발명은 예측 움직임벡터의 제1 성분과 제2 성분을 구분하여 예측하되, 제1 성분은 현재블록에 인접한 주변블록들의 움직임벡터들을 이용하여 예측하고, 제2 성분은 주변블록들의 움직임벡터들을 인터폴레이션(Interpolation)하여 생성한 가상 움직임벡터들과 주변블록의 움직임벡터들을 이용하여 예측함으로써, 부호화 효율을 향상시킬 수 있는 부호화 및 복호화 장치와 방법을 제공함을 목적으로 한다.In order to solve this problem, the present invention separately predicts a first component and a second component of a predicted motion vector, wherein the first component is predicted using motion vectors of neighboring blocks adjacent to the current block, and the second component is predicted. An object of the present invention is to provide an encoding and decoding apparatus and method capable of improving encoding efficiency by predicting virtual motion vectors generated by interpolating motion vectors of neighboring blocks and motion vectors of neighboring blocks.
이러한 목적을 달성하기 위해, 본 발명은 부호화 대상블록의 움직임벡터(이하, '현재 움직임벡터'라 함)를 부호화하는 움직임벡터 부호화 장치에 있어서, 상기 부호화 대상블록에 인접한 적어도 하나의 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 예측 움직임벡터의 제1 성분을 예측하는 제1 예측부; 상기 적어도 하나의 주변블록의 움직임벡터를 이용한 인터폴레이션(Interpolation)이 가능한지 여부를 판단하고, 그 판단결과에 따라 인터폴레이션을 수행하여 적어도 하나의 가상 움직임벡터를 생성하는 가상 움직임벡터 생성부; 상기 적어도 하나의 주변블록의 움직임벡터 및 상기 가상 움직임벡터 생성부가 출력하는 가상 움직임벡터를 포함하는 제2 움직임벡터 후보집합과 상기 현재 움직임벡터의 제1 성분을 이용하여 상기 예측 움직임벡터의 제2 성분을 예측하는 제2 예측부; 및 상기 예측 움직임벡터를 이용하여 상기 현재 움직임벡터에 대한 부호화를 수행하는 움직임벡터 부호화부를 포함하는 것을 특징으로 하는 움직임벡터 부호화 장치를 제공한다.In order to achieve the above object, the present invention provides a motion vector encoding apparatus for encoding a motion vector (hereinafter, referred to as a 'current motion vector') of an encoding target block, the motion of at least one neighboring block adjacent to the encoding target block. A first predictor for predicting a first component of a predicted motion vector using a first motion vector candidate set generated based on the vector; A virtual motion vector generator configured to determine whether interpolation using the motion vectors of the at least one neighboring block is possible, and to generate at least one virtual motion vector by performing interpolation according to the determination result; A second component of the prediction motion vector is generated by using a second motion vector candidate set including a motion vector of the at least one neighboring block and a virtual motion vector output by the virtual motion vector generator and a first component of the current motion vector. A second predictor for predicting; And a motion vector encoder for encoding the current motion vector using the predicted motion vector.
여기서, 상기 제2 예측부는 상기 제2 움직임벡터 후보집합에 속하는 움직임벡터 후보들 중에서 상기 현재 움직임벡터의 제1 성분과의 거리가 가장 가까운 제1 성분을 갖는 움직임벡터 후보를 이용하여 상기 예측 움직임벡터의 제2 성분을 예측할 수 있다. 또한, 상기 예측 움직임벡터의 제1 성분과 거리가 가장 가까운 제1 성분을 갖는 움직임벡터 후보가 복수 개인 경우, 그 복수 개의 움직임벡터 후보들의 제2 성분의 평균값을 상기 예측 움직임벡터의 제2 성분으로 예측할 수 있다.Here, the second predictor uses the motion vector candidate having a first component closest to the first component of the current motion vector among the motion vector candidates belonging to the second motion vector candidate set, to determine the predicted motion vector. The second component can be predicted. Further, when there are a plurality of motion vector candidates having a first component closest to the first component of the predicted motion vector, the average value of the second components of the plurality of motion vector candidates is used as the second component of the predicted motion vector. It can be predicted.
한편, 상기 가상 움직임벡터 생성부는 상기 부호화 대상블록에 인접한 주변블록들 중 두 개의 주변블록들을 선별하고 선별된 두 개의 주변블록들의 움직임벡터들에 대해 정수 기반의 인터폴레이션을 수행하여 상기 적어도 하나의 가상 움직임벡터를 생성할 수 있고, 여기서 두 개의 주변블록을 선별함에 있어서 서로 인접한 블록들을 선별할 수 있다.Meanwhile, the virtual motion vector generator selects two neighboring blocks among neighboring blocks adjacent to the encoding target block and performs integer-based interpolation on the motion vectors of the selected two neighboring blocks to perform the at least one virtual motion. A vector may be generated, and in selecting two neighboring blocks, adjacent blocks may be selected.
또 다른 목적을 위해 본 발명은, 복호화 대상블록의 부호화된 움직임벡터를 복호화하여 생성한 복호화된 움직임벡터를 상기 복호화 대상블록의 움직임벡터(이하, '현재 움직임벡터'라 함)로 복원하는 움직임벡터 복호화 장치에 있어서, 상기 복호화 대상블록에 인접한 적어도 하나의 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 예측 움직임벡터의 제1 성분을 예측하고, 상기 복호화된 움직임벡터의 제1 성분과 상기 예측 움직임벡터의 제1 성분을 이용하여 상기 현재 움직임벡터의 제1 성분을 복원하는 제1 성분 복원부; 상기 적어도 하나의 주변블록의 움직임벡터를 이용한 인터폴레이션(Interpolation)이 가능한지 여부를 판단하고, 그 판단결과에 따라 인터폴레이션을 수행하여 적어도 하나의 가상 움직임벡터를 생성하는 가상 움직임벡터 생성부; 및 상기 적어도 하나의 주변블록의 움직임벡터 및 상기 가상 움직임벡터 생성부가 출력하는 가상 움직임벡터를 포함하는 제2 움직임벡터 후보집합과 상기 제1 성분 복원부가 복원한 상기 현재 움직임벡터의 제1 성분을 이용하여 상기 예측 움직임벡터의 제2 성분을 예측하고, 상기 복호화된 움직임벡터의 제2 성분과 상기 예측 움직임벡터의 제2 성분을 이용하여 상기 현재 움직임벡터의 제2 성분을 복원하는 제2 성분 복원부를 포함하는 움직임벡터 복호화 장치를 제공한다.For still another purpose, the present invention provides a motion vector for reconstructing a decoded motion vector generated by decoding a coded motion vector of a decoding target block into a motion vector of the decoding target block (hereinafter, referred to as a 'current motion vector'). A decoding apparatus, comprising: predicting a first component of a predicted motion vector by using a first motion vector candidate set generated based on a motion vector of at least one neighboring block adjacent to the decoding target block, A first component reconstruction unit for reconstructing a first component of the current motion vector by using a first component and a first component of the predicted motion vector; A virtual motion vector generator configured to determine whether interpolation using the motion vectors of the at least one neighboring block is possible, and to generate at least one virtual motion vector by performing interpolation according to the determination result; And a second motion vector candidate set including a motion vector of the at least one neighboring block and a virtual motion vector output by the virtual motion vector generator, and a first component of the current motion vector reconstructed by the first component recovery unit. A second component reconstructor configured to predict a second component of the predicted motion vector and to reconstruct a second component of the current motion vector by using the second component of the decoded motion vector and the second component of the predicted motion vector. A motion vector decoding apparatus is provided.
또 다른 목적을 위해 본 발명은, 부호화 또는 복호화 대상블록의 움직임벡터(이하, '현재 움직임벡터'라 함)에 대한 예측 움직임벡터를 결정하는 장치에 있어서, 상기 부호화 또는 복호화 대상블록에 인접한 적어도 하나의 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 예측 움직임벡터의 제1 성분을 예측하는 제1 예측부; 상기 적어도 하나의 주변블록의 움직임벡터를 이용한 인터폴레이션(Interpolation)이 가능한지 여부를 판단하고, 그 판단결과에 따라 인터폴레이션을 수행하여 적어도 하나의 가상 움직임벡터를 생성하는 가상 움직임벡터 생성부; 및 상기 적어도 하나의 주변블록의 움직임벡터 및 상기 가상 움직임벡터 생성부가 출력하는 가상 움직임벡터를 포함하는 제2 움직임벡터 후보집합과 상기 현재 움직임벡터의 제1 성분을 이용하여 상기 예측 움직임벡터의 제2 성분을 예측하는 제2 예측부를 포함하는 것을 특징으로 하는 예측 움직임벡터 결정 장치를 제공한다.According to another aspect of the present invention, there is provided an apparatus for determining a predicted motion vector with respect to a motion vector of a block to be encoded or decoded (hereinafter, referred to as a 'current motion vector'), at least one adjacent to the block to be encoded or decoded. A first predictor for predicting a first component of a predicted motion vector using a first motion vector candidate set generated based on the motion vectors of neighboring blocks of the first motion vector candidate set; A virtual motion vector generator configured to determine whether interpolation using the motion vectors of the at least one neighboring block is possible, and to generate at least one virtual motion vector by performing interpolation according to the determination result; And a second component of the prediction motion vector using the second motion vector candidate set and the first component of the current motion vector, the second motion vector candidate set including a motion vector of the at least one neighboring block and a virtual motion vector output by the virtual motion vector generator. It provides a prediction motion vector determination apparatus comprising a second prediction unit for predicting the.
또 다른 목적을 위해 본 발명은, 부호화 대상블록의 움직임벡터(이하, '현재 움직임벡터'라 함)를 부호화하는 움직임벡터 부호화 방법에 있어서, 상기 부호화 대상블록에 인접한 적어도 하나의 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 예측 움직임벡터의 제1 성분을 예측하는 제1 예측 단계; 상기 적어도 하나의 주변블록의 움직임벡터를 이용한 인터폴레이션(Interpolation)이 가능한지 여부를 판단하고, 그 판단결과에 따라 인터폴레이션을 수행하여 적어도 하나의 가상 움직임벡터를 생성하는 가상 움직임벡터 생성 단계; 상기 적어도 하나의 주변블록의 움직임벡터 및 상기 가상 움직임벡터 생성 단계에서 생성되는 가상 움직임벡터를 포함하는 제2 움직임벡터 후보집합과 상기 현재 움직임벡터의 제1 성분을 이용하여 상기 예측 움직임벡터의 제2 성분을 예측하는 제2 예측 단계; 및 상기 예측 움직임벡터를 이용하여 상기 현재 움직임벡터에 대한 부호화를 수행하는 움직임벡터 부호화 단계를 포함하는 것을 특징으로 하는 움직임벡터 부호화 방법을 제공한다.According to another aspect of the present invention, in the motion vector encoding method for encoding a motion vector (hereinafter, referred to as a 'current motion vector') of an encoding target block, the motion vector of at least one neighboring block adjacent to the encoding target block is provided. A first prediction step of predicting a first component of a predicted motion vector by using the first motion vector candidate set generated based on the first motion vector candidate set; Determining whether or not interpolation is possible using the motion vectors of the at least one neighboring block, and generating at least one virtual motion vector by performing interpolation according to the determination result; A second component of the predicted motion vector using a second motion vector candidate set including a motion vector of the at least one neighboring block and a virtual motion vector generated in the virtual motion vector generation step and a first component of the current motion vector; Predicting a second step; And a motion vector encoding step of performing encoding on the current motion vector using the predicted motion vector.
또 다른 목적을 위해 본 발명은, 복호화 대상블록의 부호화된 움직임벡터를 복호화하여 생성한 복호화된 움직임벡터를 상기 복호화 대상블록의 움직임벡터(이하, '현재 움직임벡터'라 함)로 복원하는 움직임벡터 복호화 방법에 있어서, 상기 복호화 대상블록에 인접한 적어도 하나의 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 예측 움직임벡터의 제1 성분을 예측하고, 상기 복호화된 움직임벡터의 제1 성분과 상기 예측 움직임벡터의 제1 성분을 이용하여 상기 현재 움직임벡터의 제1 성분을 복원하는 제1 성분 복원 단계; 상기 적어도 하나의 주변블록의 움직임벡터를 이용한 인터폴레이션(Interpolation)이 가능한지 여부를 판단하고, 그 판단결과에 따라 인터폴레이션을 수행하여 적어도 하나의 가상 움직임벡터를 생성하는 가상 움직임벡터 생성 단계; 및 상기 적어도 하나의 주변블록의 움직임벡터 및 상기 가상 움직임벡터 생성 단계에서 생성되는 가상 움직임벡터를 포함하는 제2 움직임벡터 후보집합과 상기 제1 성분 복원 단계에서 복원된 상기 현재 움직임벡터의 제1 성분을 이용하여 상기 예측 움직임벡터의 제2 성분을 예측하고, 상기 복호화된 움직임벡터의 제2 성분과 상기 예측 움직임벡터의 제2 성분을 이용하여 상기 현재 움직임벡터의 제2 성분을 복원하는 제2 성분 복원 단계를 포함하는 움직임벡터 복호화 방법을 제공한다.For still another purpose, the present invention provides a motion vector for reconstructing a decoded motion vector generated by decoding a coded motion vector of a decoding target block into a motion vector of the decoding target block (hereinafter, referred to as a 'current motion vector'). A decoding method comprising: predicting a first component of a predicted motion vector by using a first motion vector candidate set generated based on a motion vector of at least one neighboring block adjacent to the decoding target block, A first component reconstruction step of reconstructing a first component of the current motion vector using a first component and a first component of the predicted motion vector; Determining whether or not interpolation is possible using the motion vectors of the at least one neighboring block, and generating at least one virtual motion vector by performing interpolation according to the determination result; And a second motion vector candidate set including a motion vector of the at least one neighboring block and a virtual motion vector generated in the virtual motion vector generation step and a first component of the current motion vector reconstructed in the first component recovery step. Second component reconstruction for predicting a second component of the predicted motion vector, and reconstructing a second component of the current motion vector using the second component of the decoded motion vector and the second component of the predicted motion vector. It provides a motion vector decoding method comprising the step.
본 발명에 의하면, 현재 움직임벡터와 상관관계가 높은 예측 움직임벡터를 예측할 수 있으므로 움직임벡터에 대한 부호화 효율을 향상시킬 수 있고, 이에 따라 전체 영상에 대한 부호화 효율이 향상된다는 장점이 있다.According to the present invention, since the predicted motion vector having a high correlation with the current motion vector can be predicted, the coding efficiency of the motion vector can be improved, thereby improving the coding efficiency of the entire image.
도 1은 본 발명의 일 실시예에 따른 영상 부호화 장치의 구성을 나타내는 블록도,
도 2는 본 발명의 일 실시예에 따른 움직임벡터 부호화 장치의 구성을 나타내는 블록도,
도 3은 현재블록에 인접한 주변블록들을 나타내는 예시 도면,
도 4는 본 발명의 일 실시예에 따른 가상 움직임벡터를 생성하는 과정을 설명하기 위해 예시 도면,
도 5는 본 발명의 실시예에 따른 움직임벡터 부호화 방법을 나타내는 순서도,
도 6은 본 발명의 일 실시예에 따른 영상 복호화 장치의 구성을 나타내는 블록도,
도 7은 본 발명의 일 실시예에 따른 움직임벡터 복호화 장치의 구성을 나타내는 블록도,
도 8은 본 발명의 일 실시예에 따른 움직임벡터 복호화 방법을 나타내는 순서도이다.1 is a block diagram showing a configuration of a video encoding apparatus according to an embodiment of the present invention;
2 is a block diagram showing a configuration of a motion vector encoding apparatus according to an embodiment of the present invention;
3 is an exemplary diagram illustrating neighboring blocks adjacent to a current block;
4 is an exemplary diagram for explaining a process of generating a virtual motion vector according to an embodiment of the present invention;
5 is a flowchart illustrating a motion vector encoding method according to an embodiment of the present invention;
6 is a block diagram showing a configuration of an image decoding apparatus according to an embodiment of the present invention;
7 is a block diagram showing the configuration of a motion vector decoding apparatus according to an embodiment of the present invention;
8 is a flowchart illustrating a motion vector decoding method according to an embodiment of the present invention.
도 1은 본 발명의 일 실시예에 따른 영상 부호화 장치의 구성을 나타내는 블록도이다.1 is a block diagram illustrating a configuration of an image encoding apparatus according to an embodiment of the present invention.
본 발명의 일 실시예에 따른 영상 부호화 장치는 인트라 예측부(110), 인터 예측부(120), 감산기(130), 변환 및 양자화부(140), 부호화부(150), 역양자화 및 역변환부(160), 가산기(170), 프레임 메모리(180) 등을 포함할 수 있다.An image encoding apparatus according to an embodiment of the present invention includes an
여기서 영상 부호화 장치는, 개인용 컴퓨터(PC: Personal Computer), 노트북 컴퓨터, 개인 휴대 단말기(PDA: Personal Digital Assistant), 휴대형 멀티미디어 플레이어(PMP: Portable Multimedia Player), 플레이스테이션 포터블(PSP: PlayStation Portable), 이동통신 단말기(Mobile Communication Terminal) 등일 수 있으며, 각종 기기 또는 유무선 통신망과 통신을 수행하기 위한 통신 모뎀 등의 통신 장치, 영상을 부호화하기 위한 각종 프로그램과 데이터를 저장하기 위한 메모리, 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등을 구비하는 다양한 장치를 의미한다.The video encoding apparatus may be a personal computer (PC), a notebook computer, a personal digital assistant (PDA), a portable multimedia player (PMP), a PlayStation Portable (PSP), It may be a mobile communication terminal, a communication device such as a communication modem for communicating with various devices or a wired / wireless communication network, a memory for storing various programs for encoding an image and data, and a calculation by executing a program And various devices including a microprocessor for controlling and the like.
부호화하고자 하는 영상은 블록 단위로 분할되어 입력될 수 있는데, 블록의 크기는 다양하게 정의될 수 있다.An image to be encoded can be divided into blocks and input. The sizes of the blocks can be variously defined.
인트라 예측부(110)는, 현재블록과 공간적으로 주변에 위치하는 인접블록에서 사용 가능한 참조 화소값을 이용해 현재블록의 인트라 예측블록을 생성한다. 이 경우, 사용 가능한 인트라 예측모드에 대해 각각 현재블록과 인트라 예측블록 간의 에러값을 연산하고, 최소의 에러값을 갖는 인트라 예측모드를 적용하여 인트라 예측블록을 생성한다. 또한, 최소의 에러값을 갖는 인트라 예측모드에 대한 정보를 부호화부(150)에 제공한다. The
인터 예측부(120)는 이미 부호화 과정을 거치고 복원된 이전 프레임에서 탐색 영역을 결정하고, 결정된 탐색 영역에서 움직임 추정 과정을 거쳐 현재블록과 상관관계가 높은, 즉, 현재블록에 대해 최소의 에러를 발생시키는 인트라 예측블록을 생성한다. 또한, 움직임 추정 과정을 통해 생성된 현재블록에 대한 움직임벡터(현재 움직임벡터)를 부호화부(150)로 제공한다. The
감산기(130)는 입력된 현재블록과 인트라 예측부(110) 또는 인터 예측부(120)로부터 수신한 인트라 예측블록 또는 인터 예측블록을 감산하여 잔차블록(Residual Block)을 생성한 후 이를 변환 및 양자화부(140)로 전달한다. 즉, 감산기(130)는 현재블록의 화소값과 인트라 예측부(110) 또는 인터 예측부(120)로부터 전달받은 예측블록의 화소값을 감산하여 잔차블록을 생성한다.The
변환 및 양자화부(140)는 감산기(130)에서 생성된 잔차블록을 주파수 영역으로 변환한 후 이를 양자화한다. 즉, 변환 및 양자화부(140)는 감산기(130)에 의해 생성된 잔차블록의 잔차 계수를 주파수 영역으로 변환하여 주파수 계수를 갖는 잔차블록을 생성하고, 주파수 계수를 갖는 잔차블록을 양자화한다. 여기서, 변환 방식으로는 하다마드 변환(Hadamard Transform), 이산 코사인 변환 기반의 정수 변환(Discrete Cosine Transform Based Integer Transform) 등과 같은 공간 영역의 화상 신호를 주파수 영역으로 변환하는 기법이 사용될 수 있고, 양자화 방식으로는 데드존 균일 경계 양자화(DZUTQ: Dead Zone Uniform Threshold Quantization) 또는 양자화 가중치 매트릭스 (Quantization Weighted Matrix) 등과 같은 다양한 양자화 기법이 이용될 수 있다. 그러나 변환 및 양자화 방식이 이에 한정되는 것은 아니며, 보다 다양한 변환 및 양자화 기법들이 이용될 수 있을 것이다.The transform and
부호화부(150)는 변환 및 양자화부(140)에 의해 변환되고 양자화된 잔차블록을 부호화하여 부호화 데이터를 생성한다. 생성된 부호화 데이터는 비트스트림으로 출력될 수 있다. 부호화부(150)에 의해 사용되는 부호화 기술로는 엔트로피 부호화(Entropy Encoding) 기술이 사용될 수 있으나, 이에 한정되는 것은 아니며 다른 다양한 부호화 기술이 사용될 수 있을 것이다.The
또한, 부호화부(150)는 부호화 데이터를 복호화하는 데에 필요한 다양한 정보들을 부호화 데이터에 포함시킬 수 있다. 예컨대, 부호화 데이터는 부호화된 블록 형태(CBP: Coded Block Pattern), 델타 양자화 계수(Delta Quantization Parameter), 양자화 주파수 계수가 부호화된 비트열을 포함하는 제1 필드와 예측에 필요한 정보(예를 들어, 인트라 예측의 경우 인트라 예측 모드에 대한 정보, 인터 예측의 경우 움직임 정보 등)를 포함하는 제2 필드를 포함할 수 있다.In addition, the
또한, 부호화부(150)는 움직임 추정에 사용된 참조프레임의 색인 정보나 움직임 벡터의 정밀도(예를 들면, 1/2-화소단위, 1/4- 화소단위, 1/8 단위 화소단위 등)를 출력할 수도 있다. 그러나, 부호화 장치와 복호화 장치가 사전에 어떤 값을 사용할지를 미리 약속한 경우, 예를 들어, 시간적으로 가장 최근인 참조프레임을 사용하는 것으로 상호 약속하거나 움직임 정보의 정밀도로서 1/4-화소 단위를 사용하는 것으로 부호화 장치와 복호화 장치가 상호 약속한 경우 등에 있어서는 이러한 정보를 출력하지 않을 수도 있다.In addition, the
특히, 부호화부(150)는 움직임벡터를 부호화하기 위한 움직임벡터 부호화 장치를 포함할 수 있는데, 이 움직임벡터 부호화 장치는 본 발명의 실시예에서 제안하는 예측 움직임벡터 결정 방식에 따라 결정된 예측 움직임벡터와 현재 움직임벡터를 이용하여 차분 움직임벡터를 생성하고 생성된 차분 움직임벡터를 부호화한다. 움직임벡터 부호화 장치는 도 2 내지 도 4를 참조하여 후술하기로 한다.In particular, the
역양자화 및 역변환부(160)는 변환 및 양자화부(140)에 의해 변환 및 양자화된 잔차블록을 역양자화 및 역변환하여 잔차블록을 복원한다. 즉, 역양자화와 역변환은 변환 및 양자화부(140)가 수행한 변환 과정과 양자화 과정을 역으로 수행하며 다양한 방법으로 구현될 수 있다. 예를 들어, 변환 및 양자화부(140)와 역양자화 및 역변환부(160)가 사전에 공유하는 동일한 과정의 변환 및 역변환 또는 양자화 및 역양자화를 사용할 수 있고, 또는 역양자화 및 역변환부(160)는 변환 및 양자화부(140)의 변환 및 양자화 과정에 의해 발생되어 전달되는 변환 및 양자화 과정에 관한 정보(예를 들어, 변환 크기, 변환 모양, 양자화 타입 등의 정보)를 이용하여 잔여데이터 부호화부(230)의 변환 및 양자화 과정을 역으로 수행함으로써, 역양자화 및 역변환을 수행할 수도 있다.The inverse quantization and
가산기(170)는 역양자화 및 역변환부(160)에서 복원된 잔차블록과 인트라 예측부(110) 또는 인터 예측부(120)로부터 출력되는 예측블록을 가산하여 복원블록을 생성한다. 생성된 복원블록은 프레임 메모리(180)에 저장되어 이후에 부호화해야 할 대상블록을 부호화하기 위한 참조프레임으로 사용된다.The
한편, 도 1에는 도시하지 않았으나, 본 발명의 실시예에 따른 영상 부호화 장치는 블록 단위의 예측 및 양자화에 의해 발생하는 블록킹 효과를 감소시키기 위해 복원블록을 필터링하는 디블록킹 필터를 포함할 수 있다. 이때, 인트라 예측의 경우에는 디블록킹 필터에 의해 필터링되지 않은 복원블록을 사용하고, 인터 예측의 경우에는 필터링된 복원블록을 사용할 수 있다.On the other hand, although not shown in Figure 1, the image encoding apparatus according to an embodiment of the present invention may include a deblocking filter for filtering the reconstructed block in order to reduce the blocking effect caused by block-based prediction and quantization. In this case, in the case of intra prediction, a reconstructed block that is not filtered by the deblocking filter may be used, and in the case of inter prediction, the filtered reconstructed block may be used.
도 2는 본 발명의 일 실시예에 따른 움직임벡터 부호화 장치의 구성을 나타내는 블록도이며, 이러한 구성들은 독립적인 하드웨어 또는 소프트웨어 모듈로서 구현될 수 있을 것이다.2 is a block diagram illustrating a configuration of a motion vector encoding apparatus according to an embodiment of the present invention, and these configurations may be implemented as independent hardware or software modules.
본 발명의 실시예에 따른 움직임벡터 부호화 장치는 예측 움직임벡터 결정부(200), 성분 분리기(240), 차분기(252, 254), 및 엔트로피 부호화부(260)를 포함할 수 있다.The motion vector encoding apparatus according to the embodiment of the present invention may include a predictive
예측 움직임벡터 결정부(200)는 본 발명의 실시예에서 제안하는 방식에 따라 현재 움직임벡터에 대한 예측 움직임벡터를 결정하며, 제1 예측부(210), 가상 움직임벡터 생성부(220) 및 제2 예측부(230)를 포함할 수 있다.The predicted
제1 예측부(210)는 현재블록에 인접한 적어도 하나의 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 예측 움직임벡터의 제1 성분을 예측하며, 제1 움직임벡터 후보집합 생성부(212) 및 제1 성분 예측부(214)를 포함할 수 있다. 이하에서는, 설명의 편의를 위해 제1 성분을 수직성분, 제2 성분을 수평성분으로 가정하여 설명하나, 반드시 이에 한정되는 것은 아니며, 제1 성분을 수평성분, 제2 성분을 수직성분으로 할 수 있음은 자명하다.The
제1 움직임벡터 후보집합 생성부(212)는 현재블록에 인접한 적어도 하나의 주변블록을 이용하여 제1 움직임벡터 후보들을 선정한다. The first motion vector candidate set
예컨대, 도 3을 참조하면, 현재블록을 D, 현재블록에 인접한 이미 부호화된 주변블록을 A, B, C라 가정하고, 현재블록 D의 움직임벡터를 , 주변블록 A, B, C의 움직임벡터를 각각 ,,라 하면, 제1 움직임벡터 후보집합 생성부(212)는 주변블록의 움직임벡터 {,,}를 제1 움직임벡터 후보집합으로 선정할 수 있다. 또는 제1 예측부(210)는 예측 움직임벡터의 제1 성분, 즉, 수직성분을 예측하는 기능을 수행하므로, 주변블록의 움직임벡터의 제1 성분만을 추출하여 {,,}를 제1 움직임벡터 후보로 선정할 수도 있다. 본 실시예에서는 현재블록에 대해 공간적으로 좌측, 상단, 우측상단에 위치한 주변블록들을 이용하여 제1 움직임벡터 후보집합을 선정하는 것으로 설명하고 있으나, 반드시 이에 한정되는 것은 아니며, 구현 방법이나 필요에 따라 보다 다양한 움직임 벡터들을 후보로서 선택할 수 있을 것이다. For example, referring to FIG. 3, it is assumed that the current block is D, the neighboring coded neighboring blocks adjacent to the current block are A, B, and C, and the motion vector of the current block D is calculated. , The motion vectors of neighboring blocks A, B, and C, respectively , , In this case, the first motion vector candidate set
예를 들어, 공간적으로 좌측상단에 위치한 블록의 움직임벡터도 후보로 사용할 수 있고, 시간적으로 이전에 부호화된 참조프레임에서 현재블록과 동일한 위치 또는 인접한 위치에 있는 블록의 움직임벡터를 현재블록에 대한 주변블록으로 하여 후보집합을 구성할 수도 있을 것이다. 또는 사용 가능한 후보가 존재하지 않는 경우에는 임의의 예측값(예를 들어, (0,0))을 유일한 후보로 사용할 수도 있다. 즉, 후보집합은 그 정의를 부호화 장치와 복호화 장치가 사전에 공유하고 있다는 전제 하에 다양한 방법으로 정의될 수 있을 것이다.For example, a motion vector of a block located at the top left in space may also be used as a candidate, and a motion vector of a block located at the same or adjacent position as the current block in a reference frame encoded in time is peripheral to the current block. Candidate sets may be configured as blocks. Alternatively, if no candidate is available, an arbitrary prediction value (for example, (0, 0)) may be used as the only candidate. That is, the candidate set may be defined in various ways on the assumption that the definition is shared between the encoding apparatus and the decoding apparatus in advance.
제1 성분 예측부(214)는 제1 움직임벡터 후보집합 생성부(212)에 의해 생성된 제1 움직임벡터 후보들을 이용하여 예측 움직임벡터의 제1 성분을 예측한다. 예컨대, 수학식 1에서 보는 바와 같이, 제1 성분 예측부(214)는 제1 움직임벡터 후보들의 제1 성분의 중간값을 예측 움직임벡터의 제1 성분, PMVy으로 예측할 수 있다. 그러나 이에 한정되는 것은 아니며, 제1 성분 예측부(214)는 제1 움직임벡터 후보들을 이용하여 보다 다양한 방식으로 예측 움직임벡터의 제1 성분을 예측할 수 있으며, 예를 들어 제1 움직임벡터 후보들의 평균값을 예측 움직임벡터로서 선정할 수도 있을 것이다.The
가상 움직임벡터 생성부(220) 및 제2 예측부(230)는 예측 움직임벡터의 제2 성분, 즉, 수평성분을 결정하기 위한 구성요소로서, 이 중 가상 움직임벡터 생성부(220)는 현재블록에 인접한 주변블록들을 이용한 인터폴레이션(Interpolation)이 가능한지 여부를 판단하고, 인터폴레이션이 가능한 경우 그 주변블록들을 인터폴레이션하여 가상 움직임벡터를 생성한다. 여기서, 인터폴레이션이란 특정 함수를 이용하여 몇 개의 점에 주어진 값을 기초로 그 점들 사이의 값을 구하는 것을 의미하며, 그 특정 함수의 종류에 따라 선형 인터폴레이션(Linear Interpolation)과 비선형 인터폴레이션(Non-linear Interpolation)으로 구분될 수 있다. 이하에서는, 선형 인터폴레이션을 이용하여 주변블록들의 움직임벡터를 인터폴레이션하는 것으로 설명하나, 본 발명의 범위가 이에 한정되는 것은 아니며 비선형 인터폴레이션을 사용하는 것도 본 발명의 범위에 포함되는 것으로 해석하여야 할 것이다.The virtual
예를 들어, 두 개의 주변블록의 움직임벡터를 각각 MV1(x1, y1), MV2(x2, y2)라 가정하고, y2≥y1이라 가정하면, 가상 움직임벡터 생성부(220)는 제1 성분인 y1과 y2 간의 거리 차가 1 이하인지 여부를 판단한다. 만약 y1=y2이거나 y2-y1=1 인 경우 두 개의 주변블록 MV1(x1, y1), MV2(x2, y2)에 대한 인터폴레이션이 불가능하다고 판단하게 되고, 그렇지 않은 경우에는 다음의 알고리즘에 의해 MV1(x1, y1), MV2(x2, y2) 간의 인터폴레이션을 수행하여 가상 움직임벡터를 생성한다.
For example, assuming that the motion vectors of two neighboring blocks are MV1 (x1, y1) and MV2 (x2, y2), respectively, and y2≥y1, the virtual
Inclination = (x2-x1)/(y2-y1)Inclination = (x2-x1) / (y2-y1)
y = y1+1y = y1 + 1
While (y != y2)While (y! = Y2)
x = floor(Inclination *(y-y1)) + x1;x = floor (Inclination * (y-y1)) + x1;
(x,y)를 가상 움직임벡터로 선정Select (x, y) as a virtual motion vector
y = y+1y = y + 1
End While
End while
이 알고리즘에서 변수 "Inclination"은 두 움직임벡터 MV1(x1, y1), MV2(x2, y2) 간의 기울기를 의미한다. 이 알고리즘에 따르면, 제1 성분인 y값을 y1에서 y2까지 차례로 증가시켜 가며, y1과 y2 사이의 모든 정수값에 대해 선형 인터폴레이션(Linear Interpolation)을 수행한다. 다만, 움직임벡터가 화소 단위로 결정되고 따라서 움직임벡터의 값이 정수이어야 한다고 가정할 때, 인터폴레이션은 정수 기반으로 수행되어야 한다. 이를 위해 본 실시예에서는 "floor" 연산을 사용하여 선형 인터폴레이션을 수행하여 얻은 x값이 소수점 이하의 값을 가지는 경우 내림 연산을 수행한다.In this algorithm, the variable "Inclination" means the slope between two motion vectors MV1 (x1, y1) and MV2 (x2, y2). According to this algorithm, the first component y is sequentially increased from y1 to y2, and linear interpolation is performed on all integer values between y1 and y2. However, assuming that the motion vector is determined in units of pixels, and therefore the value of the motion vector should be an integer, interpolation should be performed on an integer basis. To this end, in the present embodiment, when the x value obtained by performing the linear interpolation using the "floor" operation has a value less than or equal to the decimal point, a rounding operation is performed.
도 4를 참조하여, 가상 움직임벡터를 생성하는 과정을 좀 더 상세히 설명하면, MV1=(x1,y1)=(2,2)이고, MV2=(x2,y2)=(4, 6)이라고 할 때, y1과 y2는 거리가 2이상이므로, 가상 움직임벡터 생성부(220)는 전술한 알고리즘과 같은 연산을 수행하여 정수 기반의 인터폴레이션을 수행하게 된다.Referring to FIG. 4, a process of generating a virtual motion vector will be described in more detail, where MV1 = (x1, y1) = (2,2) and MV2 = (x2, y2) = (4, 6). At this time, since y1 and y2 have a distance of 2 or more, the virtual
먼저, y값을 y1=2에서 1만큼 증가시킬 때(y=3일 때), x값을 구하면, x=floor(2.5)=2이다. 따라서 VMV1=(2,3)이 가상 움직임벡터로서 생성된다.First, when increasing the value of y by 1 from y1 = 2 (when y = 3), the value of x is x = floor (2.5) = 2. Therefore, VMV1 = (2, 3) is generated as a virtual motion vector.
다음 y값을 다시 1만큼 증가시켜 y=4일때 x값을 구하면, x=floor(3)=3이 된다. 따라서 VMV2=(3,4)이 가상 움직임벡터로서 생성된다.Then increase the value of y again by 1 to find the value of x when y = 4, where x = floor (3) = 3. Therefore, VMV2 = (3, 4) is generated as a virtual motion vector.
y값을 다시 1만큼 증가시켜 y=5일 때 x값을 구하면, x=floor(3.5)=3이 된다. 따라서 VMV3=(3,5)가 가상 움직임벡터로서 생성된다.Increasing the value of y again by 1 to find the value of x when y = 5 yields x = floor (3.5) = 3. Therefore, VMV3 = (3, 5) is generated as a virtual motion vector.
다시 y값을 1만큼 증가시키면 y=6이 되고, 따라서 y=y2가 되므로, 알고리즘은 종료되고, 최종적으로 VMV1, VMV2, VMV3 세 개의 가상 움직임벡터가 생성된다.If y is increased by 1 again, y = 6, and thus y = y2, the algorithm is terminated and finally three virtual motion vectors are generated, VMV1, VMV2, and VMV3.
본 실시예에서는 정수 기반의 인터폴레이션을 수행하기 위해, 내림 연산을 사용하였으나, 본 발명의 범위가 이에 한정되는 것은 아니며 올림이나 반올림 연산을 수행하여 x값을 정수로 만들 수도 있을 것이다. 또한, 본 실시예에서는 제1 성분, 즉, 수직성분인 y값을 기준으로 y값을 1씩 증가시켜가며 x값을 구하는 인터폴레이션을 수행하였으나, 이에 한정되는 것은 아니며, x값을 기준으로 x값을 1씩 증가시켜가며 y값을 구하는 방식으로 인터폴레이션을 수행할 수도 있을 것이다.In the present embodiment, a rounding operation is used to perform integer-based interpolation, but the scope of the present invention is not limited thereto, and the rounding or rounding operation may be used to make the x value an integer. In addition, in the present exemplary embodiment, interpolation is performed to obtain an x value by increasing the y value by 1 based on the first component, that is, the vertical y value, but the present invention is not limited thereto. You can also interpolate by incrementing by 1 to find the y value.
또한, 본 실시예에서는 설명의 편의를 위해 y2≥y1이라 가정하여 설명하였으나, 만약 y1≥y2이라면 y2를 기준으로 1씩 증가시켜가며 x를 구하는 인터폴레이션을 수행하거나 또는 y1을 기준으로 1씩 감소시켜가며 x를 구하는 인터폴레이션을 수행할 수도 있을 것이다.In addition, in the present embodiment, for convenience of explanation, it is assumed that y2≥y1. However, if y1≥y2, an interpolation to find x while increasing by 1 based on y2 is performed or reduced by 1 based on y1. You can also do interpolation to find x.
한편, 가상 움직임벡터 생성부(220)는 전술한 알고리즘 이외에, 다음의 알고리즘과 같이, 두 개의 주변블록의 움직임벡터들의 평균값을 구하여 인터폴레이션을 수행할 수도 있을 것이다.
Meanwhile, in addition to the above-described algorithm, the virtual
y = (y1+y2) >> 1y = (y1 + y2) >> 1
x = (x1+x2) >> 1x = (x1 + x2) >> 1
(x,y)를 가상 움직임벡터로 생성
Generate (x, y) as a virtual motion vector
위 알고리즘에서 ">>"는 이진 연산된 값을 오른쪽으로 시프트하는 연산을 의미하는 것으로, 두 값을 더하여 생성한 이진수 값을 1만큼 오른쪽으로 시프트한다는 것은 두 개의 이진수에 대한 평균을 구하는 연산과 동일하다. 더 정확히는 두 개의 이진수의 평균을 구한 후 이를 내림 연산하는 것과 동일하다.In the above algorithm, ">>" means shifting a binary calculated value to the right. Shifting a binary value created by adding two values to the right by 1 is the same as calculating the average of two binary numbers. Do. More precisely, it is equivalent to taking the average of two binary numbers and then rounding them down.
도 4의 예에서와 같이, MV1=(x1,y1)=(2,2)이고, MV2=(x2,y2)=(4, 6)이라면, 위 알고리즘에 의해 생성된 가상 움직임벡터는 VMV=(3,4)가 된다. 만약, MV1=(x1,y1)=(2,3)이고, MV2=(x2,y2)=(5, 6)이라면, 위 알고리즘에 의해 생성된 가상 움직임벡터는 VMV=(3,4)가 된다.As in the example of Figure 4, if MV1 = (x1, y1) = (2, 2), and MV2 = (x2, y2) = (4, 6), the virtual motion vector generated by the above algorithm is VMV = (3,4). If MV1 = (x1, y1) = (2,3) and MV2 = (x2, y2) = (5, 6), then the virtual motion vector generated by the above algorithm is VMV = (3,4) do.
가상 움직임벡터 생성부(220)는 현재블록에 인접한 주변블록들의 움직임벡터들, 예를 들어 제1 움직임벡터 후보집합으로 선정된 {,,}으로부터 두 개의 움직임벡터를 선별하고, 선별한 두 개의 움직임벡터를 이용하여 전술한 인터폴레이션을 수행함으로써 가상 움직임벡터를 생성한다. 즉, 와 를 이용하여 가상 움직임벡터를 생성하고, 와 를 이용하여 가상움직임벡터를 생성하며, 와 를 이용하여 가상 움직임벡터를 생성할 수 있다. 한편, 주변블록들 간의 인접성을 고려하여, 와 , 와 만을 이용하여 가상 움직임벡터를 생성할 수도 있을 것이다. 즉, 서로 인접한 주변블록들 간의 상관관계가 더 높을 수 있다는 것을 고려하여 서로 인접한 주변블록들만을 이용하여 가상 움직임벡터를 생성할 수 있다. 그러나 이에 한정되는 것은 아니며, 현재블록에 대한 주변블록, 즉, 시간적 또는 공간적으로 주변에 위치한 다양한 주변블록들 중 임의의 두 개를 선별하여 가상 움직임벡터를 생성할 수 있을 것이다.The virtual
제2 예측부(230)는 제2 움직임벡터 후보집합 생성부(232)와 제2 성분 예측부(234)를 포함할 수 있는데, 제2 움직임벡터 후보집합 생성부(232)는 현재블록에 인접한 주변블록들의 움직임벡터들과 가상 움직임벡터 생성부(220)에서 생성된 가상 움직임벡터들을 포함하는 제2 움직임벡터 후보집합을 생성한다. 즉, 현재블록 D에 인접한 주변블록 A, B, C의 움직임벡터인 ,,와 이 움직임벡터들을 이용하여 생성한 가상 움직임벡터들을 제2 움직임벡터 후보들로 선정한다. 가상 움직임벡터는 가상 움직임벡터 생성부(220)가 인터폴레이션이 가능하다고 판단한 경우에 생성되고, 그렇지 않은 경우에는 생성되지 않는다. 따라서 제2 움직임벡터 후보집합 생성부(232)는 가상 움직임벡터 생성부(220)로부터 생성 또는 출력되는 가상 움직임벡터가 없는 경우 주변블록의 움직임벡터만을 이용하여 제2 움직임벡터 후보집합을 생성하게 된다.The
제2 성분 예측부(234)는 제2 움직임벡터 후보집합 생성부(232)에서 생성된 제2 움직임벡터 후보들 및 성분 분리기(240)에 의해 출력된 현재 움직임벡터의 제1 성분을 이용하여 예측 움직임벡터의 제2 성분을 예측한다. The
예를 들어, 제2 성분 예측부(234)는 제2 움직임벡터 후보들 중 현재 움직임벡터의 제1 성분과 거리가 가장 가까운 제1 성분을 갖는 움직임벡터 후보의 제2 성분을 예측 움직임벡터의 제2 성분으로 예측할 수 있다.For example, the
나아가, 현재 움직임벡터의 제1 성분과 거리가 가장 가까운 제1 성분을 갖는 움직임벡터 후보가 복수 개 존재하는 경우, 그 복수 개의 움직임벡터들의 제2 성분들의 평균값을 예측 움직임벡터의 제2 성분으로 할 수도 있으며 또는 그 복수 개의 움직임벡터들의 제2 성분들의 중간값을 예측 움직임벡터의 제2 성분으로 할 수도 있다.Furthermore, when there are a plurality of motion vector candidates having a first component closest to the first component of the current motion vector, the average value of the second components of the plurality of motion vectors may be used as the second component of the predicted motion vector. Alternatively, an intermediate value of the second components of the plurality of motion vectors may be used as the second component of the predicted motion vector.
성분 분리기(240)는 움직임 추정 과정을 통해 획득된 현재블록에 대한 현재 움직임벡터를 입력받아 제1 성분과 제2 성분으로 분리하고, 제1 성분을 차분기(252) 및 제2 성분 예측부(234)로, 제2 성분을 차분기(254)로 출력한다.The
차분기(252)는 제1 성분 예측부(214)에 의해 예측된 예측 움직임벡터 제1 성분과 성분 분리기(240)에서 출력된 현재 움직임벡터의 제1 성분을 감산하여 그 결과를 엔트로피 부호화부(260)로 출력한다.The
차분기(254)는 제2 성분 예측부(234)에 의해 예측된 예측 움직임벡터 제2 성분과 성분 분리기(240)에서 출력된 현재 움직임벡터 제2 성분을 감산하여 엔트로피 부호화(260)로 출력한다.The
엔트로피 부호화부(260)는 차분기(252, 254)로부터 출력된 값, 즉, 현재 움직임벡터와 예측 움직임벡터의 차분값을 엔트로피 부호화하여 비트스트림으로 출력한다.The
도 5는 본 발명의 실시예에 따른 움직임벡터 부호화 방법을 나타내는 순서도이다.5 is a flowchart illustrating a motion vector encoding method according to an embodiment of the present invention.
본 발명의 실시예에 따른 움직임벡터 부호화 방법은 예측 움직임벡터의 제1 성분을 예측하는 제1 예측 단계(S510), 가상 움직임벡터 생성 단계(520), 예측 움직임벡터의 제2 성분을 예측하는 제2 예측 단계(S530) 및 움직임벡터 부호화 단계(S540)를 포함할 수 있다.A motion vector encoding method according to an embodiment of the present invention includes a first prediction step (S510) for predicting a first component of a predicted motion vector, a virtual motion vector generation step (520), and a second component for predicting a second component of a predicted motion vector. It may include two prediction step (S530) and motion vector encoding step (S540).
제1 예측단계(S510)는 현재블록에 인접한 주변블록들의 움직임벡터에 기반하여 제1 움직임벡터 후보집합을 생성하고, 생성된 제1 움직임벡터 후보집합을 이용하여 예측 움직임벡터의 제1 성분을 예측한다.The first prediction step S510 generates a first motion vector candidate set based on the motion vectors of neighboring blocks adjacent to the current block, and predicts a first component of the predicted motion vector by using the generated first motion vector candidate set. do.
가상 움직임벡터 생성 단계(S520)는 현재블록에 인접한 주변블록들의 움직임벡터들을 이용한 인터폴레이션이 가능한지 여부를 판단하고, 가능한 경우 그 주변블록들의 움직임벡터들을 인터폴레이션하여 가상 움직임벡터를 생성한다.The virtual motion vector generation step (S520) determines whether interpolation using motion vectors of neighboring blocks adjacent to the current block is possible, and if possible, interpolates the motion vectors of the neighboring blocks to generate a virtual motion vector.
제2 예측단계(S530)는 현재블록에 인접한 주변블록들의 움직임벡터와 가상 움직임벡터 생성 단계(S520)에서 생성되는 가상 움직임벡터를 포함하는 제2 움직임벡터 후보들을 생성하고, 그 제2 움직임벡터 후보들과 현재 움직임벡터의 제1 성분을 이용하여 예측 움직임벡터의 제2 성분을 예측한다.The second prediction step S530 generates second motion vector candidates including the motion vectors of the neighboring blocks adjacent to the current block and the virtual motion vector generated in the generating a virtual motion vector step S520, and the second motion vector candidates. The second component of the predicted motion vector is predicted using the first component of the current motion vector.
움직임벡터 부호화 단계(S540)는 제1 예측 단계(S510)와 제2 예측단계(S530)에 의해 생성된 예측 움직임벡터를 이용하여 현재 움직임벡터를 부호화한다. 예컨대, 현재 움직임벡터와 예측 움직임벡터를 차분한 결과를 엔트로피 부호화한다.In the motion vector encoding operation S540, the current motion vector is encoded by using the predicted motion vectors generated by the first prediction step S510 and the second prediction step S530. For example, entropy encoding is performed on the difference between the current motion vector and the predicted motion vector.
제1 예측단계(S510)는 제1 예측부(210), 가상 움직임벡터 생성 단계(S520)는 가상 움직임벡터 생성부(220), 제2 예측 단계(S530)는 제2 예측부(230), 움직임벡터 부호화 단계(S540)는 차분기(252, 254) 및 엔트로피 부호화부(260)에서 수행되는 과정과 각각 동일하므로, 중복 설명을 피하기 위해 각 단계에 대한 더 이상의 설명을 생략한다.The first prediction step S510 includes a
이상에서 설명한 움직임벡터 부호화 방법은 컴퓨터 프로그램으로 구현되어 기록매체에 저장되고, 컴퓨터가 그 기록매체에 접근하여 프로그램을 실행시킴으로써 구현될 수 있을 것이다. 그러나 이에 한정되는 것은 아니며, 움직임벡터 부호화 방법의 각 단계를 수행하는 모듈들이 하나의 하드웨어 칩으로 구현되고, 그 하드웨어 칩이 동작함으로써 움직임벡터 부호화 방법이 구현될 수도 있을 것이다.The motion vector encoding method described above may be implemented by a computer program, stored in a recording medium, and implemented by a computer accessing the recording medium to execute a program. However, the present invention is not limited thereto, and the modules performing each step of the motion vector encoding method may be implemented as one hardware chip, and the motion vector encoding method may be implemented by operating the hardware chip.
도 6은 본 발명의 일 실시예에 따른 영상 복호화 장치의 구성을 나타내는 블록도이다.6 is a block diagram illustrating a configuration of an image decoding apparatus according to an embodiment of the present invention.
본 발명의 일 실시예에 따른 영상 복호화 장치는, 도 1을 통해 전술한 영상 부호화 장치와 같이, 개인용 컴퓨터(PC: Personal Computer), 노트북 컴퓨터, 개인 휴대 단말기(PDA: Personal Digital Assistant), 휴대형 멀티미디어 플레이어(PMP: Portable Multimedia Player), 플레이스테이션 포터블(PSP: PlayStation Portable), 이동통신 단말기(Mobile Communication Terminal) 등일 수 있으며, 각종 기기 또는 유무선 통신망과 통신을 수행하기 위한 통신 모뎀 등의 통신 장치, 영상을 복호화하기 위한 각종 프로그램과 데이터를 저장하기 위한 메모리, 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등을 구비하는 다양한 장치를 의미한다.An image decoding apparatus according to an embodiment of the present invention, like the image encoding apparatus described above with reference to FIG. 1, includes a personal computer (PC), a notebook computer, a personal digital assistant (PDA), and a portable multimedia device. It may be a player (PMP: Portable Multimedia Player), PlayStation Portable (PSP: PlayStation Portable), a mobile communication terminal (Mobile Communication Terminal), and the like, communication devices such as communication modems for communicating with various devices or wired and wireless communication networks, images Means a variety of devices including a memory for storing the program and a memory for storing the data, a microprocessor for the operation and control by running the program.
본 발명의 일 실시예에 따른 영상 복호화 장치는 복호화부(610), 역양자화 및 역변환부(620), 인트라 예측부(630), 인터 예측부(640), 가산기(650) 및 프레임 메모리(660)를 포함할 수 있다.An image decoding apparatus according to an embodiment of the present invention includes a
복호화부(610)는 입력받은 부호화 데이터를 엔트로피 복호화하여 블록 단위 복호화에 필요한 정보를 추출한다. 즉, 복호화부(610)는 부호화 데이터를 복호화하여 양자화 주파수 계수열을 추출하고, 양자화 주파수 계수열을 역 스캐닝하여 양자화 주파수 계수를 갖는 잔차블록을 생성한다. 예컨대, 부호화 장치가 지그재그 스캐닝 방식을 사용하였다면, 복호화 장치는 역 지그재그 스캐닝 방식을 적용하여 양자화 주파수 계수열을 역 스캐닝함으로써 양자화 주파수 계수를 갖는 잔차블록을 생성하게 된다. The
이 때, 복호화부(610)는 부호화 데이터에 포함된 제1 필드에서 부호화된 잔차블록을 추출하여 복호화할 수 있고, 부호화 데이터에 포함된 제2 필드에서 예측에 필요한 정보를 추출하여 인트라 예측부(620) 또는 인터 예측부(630)로 전달할 수 있다.In this case, the
한편, 복호화부(610)는 본 발명의 실시예에서 제안하는 움직임벡터 복호화 장치를 포함할 수 있는데, 움직임벡터 복호화 장치는 도 7을 통해 후술한다.Meanwhile, the
역양자화 및 역변환부(620)는 복호화부(610)로부터 전달받은 양자화된 잔차블록을 역 양자화하고 이를 다시 역변환하여 잔차블록을 생성한다.The inverse quantization and
인트라 예측부(630)는 복호화부(610)로부터 전달되는 인트라 예측에 필요한 정보(예를 들어, 인트라 예측 모드에 관한 정보 등)를 이용하여 현재블록에 대한 인트라 예측블록을 생성한다.The
인터 예측부(640)는 복호화부(610)으로부터 전달되는 인터 예측에 필요한 정보(예를 들어, 현재블록의 움직임벡터 등)를 이용하여 인터 예측블록을 생성한다.The
가산기(650)는 인트라 예측부(630) 또는 인터 예측부(640)로부터 전달되는 예측블록과 역양자화 및 역변환부(620)로부터 전달되는 잔차블록을 가산하여 현재블록을 복원한다. 복원된 현재블록은 프레임 메모리(660)에 저장되며, 이후 다른 블록들을 예측하는 데에 활용된다.The adder 650 reconstructs the current block by adding the prediction block delivered from the
한편, 도 6에는 도시하지 않았으나, 본 발명의 실시예에 따른 영상 복호화 장치는 블록 단위의 예측 및 양자화에 의해 발생하는 블록킹 효과를 감소시키기 위해 복원블록을 필터링하는 디블록킹 필터를 포함할 수 있다. 이때, 인트라 예측의 경우에는 디블록킹 필터에 의해 필터링되지 않은 복원블록을 사용하고, 인터 예측의 경우에는 필터링된 복원블록을 사용할 수 있다.On the other hand, although not shown in Figure 6, the image decoding apparatus according to an embodiment of the present invention may include a deblocking filter for filtering the reconstructed block in order to reduce the blocking effect caused by block-based prediction and quantization. In this case, in the case of intra prediction, a reconstructed block that is not filtered by the deblocking filter may be used, and in the case of inter prediction, the filtered reconstructed block may be used.
도 7은 본 발명의 일 실시예에 따른 움직임벡터 복호화 장치의 구성을 나타내는 블록도이며, 이러한 구성들은 독립적인 하드웨어 또는 소프트웨어 모듈로서 구현될 수 있을 것이다.7 is a block diagram illustrating a configuration of a motion vector decoding apparatus according to an embodiment of the present invention, and these configurations may be implemented as independent hardware or software modules.
본 발명의 일 실시예에 따른 움직임벡터 복호화 장치는 엔트로피 복호화부(710), 제1 성분 복원부(720), 가상 움직임벡터 생성부(730), 제2 성분 복원부(740) 및 움직임벡터 구성기(750)를 포함할 수 있다.The motion vector decoding apparatus according to an embodiment of the present invention comprises an
엔트로피 복호화부(710)는 부호화된 움직임벡터를 엔트로피 복호화하여 복호화된 움직임벡터를 생성하고, 복호화된 움직임벡터의 제1 성분과 제2 성분을 각각 제1 성분 복원부(720) 및 제2 성분 복원부(740)로 전달한다.The
제1 성분 복원부(720)는 복호화 대상블록인 현재블록에 인접한 적어도 하나의 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 예측 움직임벡터의 제1 성분을 예측하고, 엔트로피 복호화부(710)로부터 전달된 복호화된 움직임벡터의 제1 성분과 예측 움직임벡터의 제1 성분을 이용하여 현재 움직임벡터의 제1 성분을 복원한다.The
더 구체적으로, 제1 성분 복원부(720)는 제1 움직임벡터 후보집합 생성부(722), 제1 성분 예측부(724) 및 가산기(726)를 포함할 수 있다.More specifically, the
제1 움직임벡터 후보집합 생성부(722)는 현재블록에 대한 위치정보를 이용하여 현재블록에 인접한 적어도 하나의 주변블록의 움직임벡터를 선정하고, 그 주변블록의 움직임벡터를 이용하여 제1 움직임벡터 후보집합을 선정한다. 예를 들어, 도 3을 참조하면, 제1 움직임벡터 후보집합 생성부(722)는 현재블록 D에 인접한 주변블록의 움직임벡터 {,,}를 제1 움직임벡터 후보집합으로 선정할 수 있다. 또는 주변블록의 움직임벡터의 제1 성분만을 추출하여 {,,}를 제1 움직임벡터 후보로 선정할 수도 있다. 본 실시예에서는 현재블록에 대해 공간적으로 좌측, 상단, 우측상단에 위치한 주변블록들을 이용하여 제1 움직임벡터 후보집합을 선정하는 것으로 설명하고 있으나, 반드시 이에 한정되는 것은 아니며, 움직임벡터 복호화 장치와 움직임벡터 부호화 장치가 제1 움직임벡터 후보집합에 대한 생성 기준을 공유하는 한, 다양한 방식으로 제1 움직임벡터 후보집합을 선정할 수 있을 것이다.The first motion vector candidate set
제1 성분 예측부(724)는 제1 움직임벡터 후보집합에 속하는 후보들을 이용하여 예측 움직임벡터의 제1 성분을 예측한다. 예컨대, 움직임벡터 부호화 장치의 제1 성분 예측부(214)가 수학식 1에 의해 제1 움직임벡터 후보들의 제1 성분의 중간값을 예측 움직임벡터의 제1 성분으로 예측한다면, 움직임벡터 복호화 장치의 제1 성분 예측부(724) 또한 제1 움직임벡터 후보집합에 속하는 제1 움직임벡터 후보들의 제1 성분의 중간값을 예측 움직임벡터의 제1 성분으로 예측한다. The
가산기(726)는 제1 성분 예측부(724)로부터 전달된 예측 움직임벡터의 제1 성분과 엔트로피 복호화(710)로부터 전달된 복호화된 움직임벡터의 제1 성분을 가산하여 현재 움직임벡터의 제1 성분을 복원한다. 복원된 현재 움직임벡터의 제1 성분은 제2 성분 복원부(740) 및 움직임벡터 구성기(750)로 전달된다.The
가상 움직임벡터 생성부(730)는 현재블록에 인접한 적어도 하나의 주변블록의 움직임벡터를 이용한 인터폴레이션이 가능한지 여부를 판단하고, 인터폴레이션이 가능한 경우 그 주변블록의 움직임벡터를 이용하여 인터폴레이션을 수행함으로써 가상 움직임벡터를 생성한다. 움직임벡터 복호화 장치의 가상 움직임벡터 생성부(730)는 도 2 내지 도 4를 참조하여 설명한 움직임벡터 부호화 장치의 가상 움직임벡터 생성부(220)과 그 기능이 동일하므로, 중복 설명을 피하기 위해 더 이상의 상세한 설명을 생략한다.The virtual
제2 성분 복원부(740)는 현재블록에 인접한 주변블록의 움직임벡터 및 가상 움직임벡터 생성부(730)에서 출력되는 가상 움직임벡터를 포함하는 제2 움직임벡터 후보집합을 생성하고, 제2 움직임벡터 후보집합에 속하는 후보들과 제1 성분 복원부(720)에서 복원된 현재 움직임벡터의 제1 성분을 이용하여 예측 움직임벡터의 제2 성분을 예측한다. 그리고, 엔트로피 복호화부(710)로부터 전달된 복호화된 움직임벡터의 제2 성분과 예측 움직임벡터의 제2 성분을 이용하여 현재 움직임벡터의 제2 성분을 복원한다.The
더 구체적으로, 제2 성분 복원부(740)는 제2 움직임벡터 후보집합 생성부(742), 제2 성분 예측부(744) 및 가산기(746)를 포함할 수 있다.More specifically, the
제2 움직임벡터 후보집합 생성부(742)는 현재블록에 인접한 주변블록들의 움직임벡터들과 가상 움직임벡터 생성부(730)에서 생성된 가상 움직임벡터들을 포함하는 제2 움직임벡터 후보집합을 생성한다. 예컨대, 현재블록 D에 인접한 주변블록 A, B 및 C의 움직임벡터인,,,와 이 움직임벡터들을 이용하여 생성한 가상 움직임벡터들을 제2 움직임벡터 후보로 선정할 수 있다.The second motion vector candidate set
제2 성분 예측부(744)는 제2 움직임벡터 후보집합 생성부(742)에서 생성된 제2 움직임벡터 후보들과 제1 성분 복원부(720)에서 복원된 현재 움직임벡터의 제1 성분을 이용하여 예측 움직임벡터의 제2 성분을 예측한다. 예를 들어, 제2 움직임벡터 후보들 중 현재 움직임벡터의 제1 성분과 거리가 가장 가까운 제1 성분을 갖는 움직임벡터 후보의 제2 성분을 예측 움직임벡터의 제2 성분으로 예측할 수 있으며, 현재 움직임벡터의 제1 성분과 거리가 가장 가까운 제1 성분을 갖는 움직임벡터 후보가 복수 개인 경우에는, 그 복수 개의 움직임벡터 후보들의 평균값 또는 중간값을 예측 움직임벡터의 제2 성분으로 할 수도 있다.The
가산기(746)는 제2 성분 예측부(744)에서 예측된 예측 움직임벡터의 제2 성분과 엔트로피 복호화부(710)로부터 전달된 복호화된 움직임벡터의 제2 성분을 가산하여 현재 움직임벡터의 제2 성분을 복원한다.The
움직임벡터 구성기(750)는 가산기(726) 및 가산기(746)로부터 각각 입력된 현재 움직임벡터의 제1 성분 및 제2 성분을 조합하여 현재 움직임벡터를 구성하여 출력한다.The
도 7에서 도면부호 700은 예측 움직임벡터 결정부를 나타내는데, 이 예측 움직임벡터 결정부(700)에 포함된 제1 움직임벡터 후보집합 생성부(722), 제1 성분 예측부(724), 가상 움직임벡터 생성부(730), 제2 움직임벡터 후보집합 생성부(742) 및 제2 성분 예측부(744)는 각각 도 2에 도시된 예측 움직임벡터 결정부(200)의 제1 움직임벡터 후보집합 생성부(212), 제1 성분 예측부(214), 가상 움직임벡터 생성부(220), 제2 움직임벡터 후보집합 생성부(232) 및 제2 성분 예측부(234)에 대응하는 구성이다. 즉, 움직임벡터 부호화 장치와 움직임벡터 복호화 장치는 예측 움직임벡터 결정부를 공유함으로써, 동일한 예측 움직임벡터를 예측하게 되고, 움직임벡터 부호화 장치는 그 예측 움직임벡터를 이용하여 현재 움직임벡터를 부호화하고, 움직임벡터 복호화 장치는 그 예측 움직임벡터를 이용하여 현재 움직임벡터를 복호화하게 된다.In FIG. 7,
도 8은 본 발명의 일 실시예에 따른 움직임벡터 복호화 방법을 나타내는 순서도이다.8 is a flowchart illustrating a motion vector decoding method according to an embodiment of the present invention.
본 발명의 일 실시예에 따른 움직임벡터 복호화 방법은, 복호화 대상블록, 즉, 현재블록의 부호화된 움직임벡터를 복호화하는 움직임벡터 복호화 단계(S810), 예측 움직임벡터의 제1 성분을 예측하고 이를 이용하여 현재 움직임벡터의 제1 성분을 복원하는 제1 성분 복원 단계(S820), 가상 움직임벡터 생성 단계(S830), 예측 움직임벡터의 제2 성분을 예측하고 이를 이용하여 현재 움직임벡터의 제2 성분을 복원하는 제2 성분 복원 단계(S840)를 포함할 수 있다.In the motion vector decoding method according to an embodiment of the present invention, the motion vector decoding step (S810) of decoding the encoded motion vector of the decoding target block, that is, the current block, predicts and uses the first component of the predicted motion vector. By reconstructing the first component of the current motion vector (S820), the virtual motion vector generation step (S830), and predicting the second component of the motion vector using the second component of the current motion vector. It may include a second component restoration step (S840) to restore.
움직임벡터 복호화 단계(S810)는 부호화된 움직임벡터를 엔트로피 복호화하여 복호화된 움직임벡터를 생성한다.The motion vector decoding step S810 entropy decodes the encoded motion vector to generate a decoded motion vector.
제1 성분 복원 단계(S820)는 현재블록에 인접한 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 예측 움직임벡터의 제1 성분을 예측하고, 그 예측 움직임벡터의 제1 성분과 움직임벡터 복호화 단계(S810)에서 복호화된 움직임벡터의 제1 성분을 이용하여 현재 움직임벡터의 제1 성분을 복원한다.The first component reconstruction step (S820) predicts a first component of a predicted motion vector by using a first motion vector candidate set generated based on a motion vector of a neighboring block adjacent to the current block, and then calculates a first component of the predicted motion vector. The first component of the current motion vector is reconstructed by using the first component of the motion vector decoded in the component and the motion vector decoding step S810.
가상 움직임벡터 생성 단계(S830)는 현재블록에 인접한 주변블록의 움직임벡터를 이용한 인터폴레이션이 가능한지 여부를 판단하고, 인터폴레이션이 가능한 경우 그 주변블록의 움직임벡터를 이용하여 인터폴레이션을 수행함으로써 가상 움직임벡터를 생성한다.The virtual motion vector generation step (S830) determines whether interpolation is possible using the motion vectors of the neighboring blocks adjacent to the current block, and if interpolation is possible, generates a virtual motion vector by performing interpolation using the motion vectors of the neighboring blocks. do.
제2 성분 복원 단계(S840)는 현재블록에 인접한 주변블록의 움직임벡터 및 가상 움직임벡터 생성 단계에서 출력된 가상 움직임벡터를 포함하는 제2 움직임벡터 후보집합과 제1 성분 복원 단계(S820)에서 복원된 현재 움직임벡터의 제1 성분을 이용하여 예측 움직임벡터의 제2 성분을 예측하고, 그 예측 움직임벡터의 제2 성분과 움직임벡터 복호화 단계(S810)에서 복호화된 움직임벡터의 제2 성분을 이용하여 현재 움직임벡터의 제2 성분을 복원한다.The second component reconstruction step S840 is a second motion vector candidate set including the motion vector of the neighboring block adjacent to the current block and the virtual motion vector output in the virtual motion vector generation step and the first component reconstruction step S820. The second component of the predicted motion vector is predicted using the first component of the current motion vector, and the second component of the predicted motion vector and the second component of the motion vector decoded in the motion vector decoding step S810 are present. Restore the second component of the motion vector.
움직임벡터 복호화 단계(S810), 제1 성분 복원 단계(S820), 가상 움직임벡터 생성 단계(S830) 및 제2 성분 복원 단계(S840)가 수행하는 기능은 각각 움직임벡터 복호화 장치의 엔트로피 복호화부(710), 제1 성분 복원부(720), 가상 움직임벡터 생성부(730) 및 제2 성분 복원부(740)에 대응하므로, 중복 설명을 피하기 위해 더 이상의 상세한 설명을 생략한다.The functions performed by the motion vector decoding step S810, the first component reconstruction step S820, the virtual motion vector generation step S830, and the second component reconstruction step S840 are respectively
이상에서 설명한 움직임벡터 복호화 방법은 컴퓨터 프로그램으로 구현되어 기록매체에 저장되고, 컴퓨터가 그 기록매체에 접근하여 프로그램을 실행시킴으로써 구현될 수 있을 것이다. 그러나 이에 한정되는 것은 아니며, 움직임벡터 복호화 방법의 각 단계를 수행하는 모듈들이 하나의 하드웨어 칩으로 구현되고, 그 하드웨어 칩이 동작함으로써 움직임벡터 복호화 방법이 구현될 수도 있을 것이다. The motion vector decoding method described above may be implemented as a computer program, stored in a recording medium, and implemented by a computer accessing the recording medium to execute a program. However, the present invention is not limited thereto, and the modules performing each step of the motion vector decoding method may be implemented as one hardware chip, and the motion vector decoding method may be implemented by operating the hardware chip.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.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 protection scope of the present invention should be interpreted by the following claims, and all technical ideas within the equivalent scope should be interpreted as being included in the scope of the present invention.
이상에서 설명한 본 발명의 실시예는 움직임벡터에 대한 예측 부호화를 수행하는 영상 부호화 및 복호화 분야에 적용되어 현재 움직임벡터와 상관관계가 높은 예측 움직임벡터를 결정할 수 있으며, 이에 따라 현재 움직임벡터에 대한 부호화 효율을 높일 수 있으므로, 매우 유용한 발명이다.
The embodiment of the present invention described above is applied to the field of image encoding and decoding for performing prediction encoding on a motion vector to determine a predictive motion vector having a high correlation with the current motion vector. Accordingly, encoding on the current motion vector is performed. Since the efficiency can be improved, it is a very useful invention.
Claims (31)
상기 현재블록에 인접한 적어도 하나의 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 제1 예측 움직임벡터의 제1 성분을 예측하고, 상기 적어도 하나의 주변블록의 움직임벡터를 이용한 인터폴레이션(Interpolation)이 가능한지 여부를 판단하고 그 판단결과에 따라 인터폴레이션을 수행하여 적어도 하나의 가상 움직임벡터를 생성하며, 상기 적어도 하나의 주변블록의 움직임벡터 및 생성된 가상 움직임벡터를 포함하는 제2 움직임벡터 후보집합과 상기 현재 움직임벡터의 제1 성분을 이용하여 상기 제1 예측 움직임벡터의 제2 성분을 예측한 후, 상기 제1 예측 움직임벡터를 이용하여 상기 현재 움직임벡터를 부호화하는 움직임벡터 부호화 장치; 및
상기 움직임벡터 부호화 장치에 의해 부호화된 상기 현재 움직임벡터를 복호화하여 복호화된 움직임벡터를 생성하고, 상기 제1 예측 움직임벡터 후보집합을 이용하여 제2 예측 움직임벡터의 제1 성분을 예측한 후 상기 복호화된 움직임벡터의 제1 성분과 상기 제2 예측 움직임벡터의 제1 성분을 이용하여 상기 현재 움직임벡터의 제1 성분을 복원하며, 상기 제2 움직임벡터 후보집합과 상기 현재 움직임벡터의 제1 성분을 이용하여 상기 제2 예측 움직임벡터의 제2 성분을 예측하고 상기 복호화된 움직임벡터의 제2 성분과 상기 제2 예측 움직임벡터의 제2 성분을 이용하여 상기 현재 움직임벡터의 제2 성분을 복원하는 움직임벡터 복호화 장치
를 포함하는 움직임벡터 부호화/복호화 장치.In a motion vector encoding / decoding apparatus for encoding and decoding a motion vector (hereinafter, referred to as a 'current motion vector') of a current block to be encoded and decoded,
The first component of the first predicted motion vector is predicted by using the first motion vector candidate set generated based on the motion vectors of at least one neighboring block adjacent to the current block, and the motion vectors of the at least one neighboring block are predicted. Determining whether the interpolation is possible, and performing interpolation according to the determination result to generate at least one virtual motion vector, and including a motion vector of the at least one neighboring block and the generated virtual motion vector. A motion vector encoding apparatus for predicting a second component of the first predicted motion vector by using a motion vector candidate set and a first component of the current motion vector, and then encoding the current motion vector using the first predicted motion vector. ; And
Decoding the current motion vector encoded by the motion vector encoding apparatus to generate a decoded motion vector, predicting a first component of a second predicted motion vector using the first predicted motion vector candidate set, and then decoding the motion vector. Reconstructing the first component of the current motion vector using the first component of the first motion vector and the first predicted motion vector, and using the second motion vector candidate set and the first component of the current motion vector. Predicting a second component of the second predicted motion vector and reconstructing a second component of the current motion vector by using the second component of the decoded motion vector and the second component of the second predicted motion vector. Decryption device
Motion vector encoding / decoding apparatus comprising a.
상기 부호화 대상블록에 인접한 적어도 하나의 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 예측 움직임벡터의 제1 성분을 예측하는 제1 예측부;
상기 적어도 하나의 주변블록의 움직임벡터를 이용한 인터폴레이션(Interpolation)이 가능한지 여부를 판단하고, 그 판단결과에 따라 인터폴레이션을 수행하여 적어도 하나의 가상 움직임벡터를 생성하는 가상 움직임벡터 생성부;
상기 적어도 하나의 주변블록의 움직임벡터 및 상기 가상 움직임벡터 생성부가 출력하는 가상 움직임벡터를 포함하는 제2 움직임벡터 후보집합과 상기 현재 움직임벡터의 제1 성분을 이용하여 상기 예측 움직임벡터의 제2 성분을 예측하는 제2 예측부; 및
상기 예측 움직임벡터를 이용하여 상기 현재 움직임벡터에 대한 부호화를 수행하는 움직임벡터 부호화부
를 포함하는 것을 특징으로 하는 움직임벡터 부호화 장치.In the motion vector encoding apparatus for encoding a motion vector (hereinafter referred to as the "current motion vector") of the target block,
A first predictor for predicting a first component of a predicted motion vector using a first motion vector candidate set generated based on a motion vector of at least one neighboring block adjacent to the encoding target block;
A virtual motion vector generator configured to determine whether interpolation using the motion vectors of the at least one neighboring block is possible, and to generate at least one virtual motion vector by performing interpolation according to the determination result;
A second component of the prediction motion vector is generated by using a second motion vector candidate set including a motion vector of the at least one neighboring block and a virtual motion vector output by the virtual motion vector generator and a first component of the current motion vector. A second predictor for predicting; And
A motion vector encoder which encodes the current motion vector using the predicted motion vector.
And a motion vector coding unit for coding the motion vector.
상기 제2 예측부는 상기 제2 움직임벡터 후보집합에 속하는 움직임벡터 후보들 중에서 상기 현재 움직임벡터의 제1 성분과의 거리가 가장 가까운 제1 성분을 갖는 움직임벡터 후보를 이용하여 상기 예측 움직임벡터의 제2 성분을 예측하는 것을 특징으로 하는 움직임벡터 부호화 장치. The method of claim 1,
The second predictor uses a motion vector candidate having a first component closest to a first component of the current motion vector among the motion vector candidates belonging to the second motion vector candidate set, to generate a second predictive motion vector. A motion vector encoding apparatus characterized by predicting a component.
상기 제2 예측부는, 상기 예측 움직임벡터의 제1 성분과 거리가 가장 가까운 제1 성분을 갖는 움직임벡터 후보가 복수 개인 경우, 그 복수 개의 움직임벡터 후보들의 제2 성분의 평균값을 상기 예측 움직임벡터의 제2 성분으로 하는 것을 특징으로 하는 움직임벡터 부호화 장치.The method of claim 3, wherein
The second predictor, when there are a plurality of motion vector candidates having a first component closest to the first component of the predicted motion vector, calculates an average value of the second components of the plurality of motion vector candidates. A motion vector encoding device, characterized in that the second component.
상기 가상 움직임벡터 생성부는 상기 부호화 대상블록에 인접한 주변블록들 중 두 개의 주변블록들을 선별하고 선별된 두 개의 주변블록들의 움직임벡터들에 대해 정수 기반의 인터폴레이션을 수행하여 상기 적어도 하나의 가상 움직임벡터를 생성하는 것을 특징으로 하는 움직임벡터 부호화 장치.The method of claim 1,
The virtual motion vector generator selects two neighboring blocks among neighboring blocks adjacent to the encoding target block and performs integer-based interpolation on the motion vectors of the selected two neighboring blocks to obtain the at least one virtual motion vector. And a motion vector encoding apparatus.
상기 두 개의 주변블록들을 서로 인접한 것을 특징으로 하는 움직임벡터 부호화 장치.The method of claim 5, wherein
The motion vector encoding apparatus of claim 2, wherein the two neighboring blocks are adjacent to each other.
상기 가상 움직임벡터 생성부는 상기 두 개의 주변블록의 움직임벡터 각각의 제1 성분 사이에 존재하는 모든 정수값에 대해 상기 정수 기반의 인터폴레이션을 수행하는 것을 특징으로 하는 움직임벡터 부호화 장치. The method of claim 5, wherein
And the virtual motion vector generator performs the integer based interpolation on all integer values existing between the first components of each of the motion vectors of the two neighboring blocks.
상기 가상 움직임벡터 생성부는 상기 적어도 두 개의 주변블록의 움직임벡터 각각의 제2 성분 사이에 존재하는 모든 정수값에 대해 상기 정수 기반의 인터폴레이션을 수행하는 것을 특징으로 하는 움직임벡터 부호화 장치.The method of claim 5, wherein
And the virtual motion vector generator performs the integer based interpolation on all integer values existing between the second components of each of the motion vectors of the at least two neighboring blocks.
상기 가상 움직임벡터 생성부는 상기 두 개의 주변블록의 움직임벡터들의 평균값을 연산하여 상기 정수 기반의 인터폴레이션을 수행하는 것을 특징으로 하는 움직임벡터 부호화 장치.The method of claim 5, wherein
The virtual motion vector generating unit performs the integer based interpolation by calculating an average value of the motion vectors of the two neighboring blocks.
상기 가상 움직임벡터 생성부는 상기 부호화 대상블록에 인접한 두 개의 주변블록을 선별하고, 상기 선별된 두 개의 주변블록의 움직임벡터의 제1 성분 또는 제2 성분의 차이가 1이하인 경우, 상기 선별된 두 개의 주변블록의 움직임벡터들에 대해서 인터폴레이션이 불가능하다고 판단하는 것을 특징으로 하는 움직임벡터 부호화 장치. The method of claim 1,
The virtual motion vector generator selects two neighboring blocks adjacent to the encoding target block, and when the difference between the first component or the second component of the selected motion vector of the two neighboring blocks is less than or equal to 1, the selected two And a motion vector encoding apparatus for determining that interpolation is impossible with respect to motion vectors of a neighboring block.
상기 적어도 하나의 주변블록은 시간적으로 이미 부호화된 참조프레임에서 상기 부호화 대상블록과 동일한 위치 또는 인접한 위치에 있는 주변블록들을 포함하는 것을 특징으로 하는 움직임벡터 부호화 장치.The method of claim 1,
And the at least one neighboring block includes neighboring blocks located at the same or adjacent positions as the encoding target block in a reference frame that is already encoded in time.
상기 복호화 대상블록에 인접한 적어도 하나의 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 예측 움직임벡터의 제1 성분을 예측하고, 상기 복호화된 움직임벡터의 제1 성분과 상기 예측 움직임벡터의 제1 성분을 이용하여 상기 현재 움직임벡터의 제1 성분을 복원하는 제1 성분 복원부;
상기 적어도 하나의 주변블록의 움직임벡터를 이용한 인터폴레이션(Interpolation)이 가능한지 여부를 판단하고, 그 판단결과에 따라 인터폴레이션을 수행하여 적어도 하나의 가상 움직임벡터를 생성하는 가상 움직임벡터 생성부; 및
상기 적어도 하나의 주변블록의 움직임벡터 및 상기 가상 움직임벡터 생성부가 출력하는 가상 움직임벡터를 포함하는 제2 움직임벡터 후보집합과 상기 제1 성분 복원부가 복원한 상기 현재 움직임벡터의 제1 성분을 이용하여 상기 예측 움직임벡터의 제2 성분을 예측하고, 상기 복호화된 움직임벡터의 제2 성분과 상기 예측 움직임벡터의 제2 성분을 이용하여 상기 현재 움직임벡터의 제2 성분을 복원하는 제2 성분 복원부
를 포함하는 움직임벡터 복호화 장치.A motion vector decoding apparatus for reconstructing a decoded motion vector generated by decoding a coded motion vector of a decoding target block into a motion vector of a decoding target block (hereinafter, referred to as a "current motion vector"),
The first component of the predicted motion vector is predicted by using the first motion vector candidate set generated based on the motion vectors of at least one neighboring block adjacent to the decoding target block, and the first component and the first component of the decoded motion vector are predicted. A first component reconstruction unit for reconstructing a first component of the current motion vector by using a first component of a predicted motion vector;
A virtual motion vector generator configured to determine whether interpolation using the motion vectors of the at least one neighboring block is possible, and to generate at least one virtual motion vector by performing interpolation according to the determination result; And
The second motion vector candidate set including the motion vector of the at least one neighboring block and the virtual motion vector output by the virtual motion vector generator and the first component of the current motion vector reconstructed by the first component reconstructor A second component reconstructor for predicting a second component of a predicted motion vector and reconstructing a second component of the current motion vector by using the second component of the decoded motion vector and the second component of the predicted motion vector
Motion vector decoding apparatus comprising a.
상기 제2 성분 복원부는 상기 제2 움직임벡터 후보집합에 속하는 움직임벡터 후보들 중에서 상기 현재 움직임벡터의 제1 성분과 거리가 가장 가까운 제1 성분을 갖는 움직임벡터 후보를 이용하여 상기 예측 움직임벡터의 제2 성분을 예측하는 것을 특징으로 하는 움직임벡터 복호화 장치.The method of claim 12,
The second component reconstructor uses the motion vector candidate having a first component closest to the first component of the current motion vector among the motion vector candidates belonging to the second motion vector candidate set, to obtain the second component of the predicted motion vector. A motion vector decoding apparatus characterized by predicting a component.
상기 제2 성분 복원부는, 상기 예측 움직임벡터의 제1 성분과 거리가 가장 가까운 제1 성분을 갖는 움직임벡터 후보가 복수 개인 경우, 그 복수 개의 움직임벡터 후보들의 제2 성분의 평균값을 상기 예측 움직임벡터의 제2 성분으로 하는 것을 특징으로 하는 움직임벡터 복호화 장치.The method of claim 13,
The second component reconstructor, when there are a plurality of motion vector candidates having a first component closest to the first component of the predicted motion vector, calculates an average value of the second components of the plurality of motion vector candidates. And a second component of the motion vector decoding apparatus.
상기 가상 움직임벡터 생성부는 상기 복호화 대상블록에 인접한 주변블록들 중 두 개의 주변블록들을 선별하고 선별된 두 개의 주변블록들의 움직임벡터들에 대해 정수 기반의 인터폴레이션을 수행하여 상기 적어도 하나의 가상 움직임벡터를 생성하는 것을 특징으로 하는 움직임벡터 복호화 장치.The method of claim 12,
The virtual motion vector generator selects two neighboring blocks among neighboring blocks adjacent to the decoding target block and performs integer-based interpolation on the motion vectors of the selected two neighboring blocks to determine the at least one virtual motion vector. Motion vector decoding device, characterized in that for generating.
상기 두 개의 주변블록들은 서로 인접한 것을 특징으로 하는 움직임벡터 복호화 장치.The method of claim 12,
And the two neighboring blocks are adjacent to each other.
상기 가상 움직임벡터 생성부는 상기 두 개의 주변블록들의 움직임벡터 각각의 제1 성분 사이에 존재하는 모든 정수값에 대해 상기 정수 기반의 인터폴레이션을 수행하는 것을 특징으로 하는 움직임벡터 복호화 장치.The method of claim 15,
And the virtual motion vector generating unit performs the integer based interpolation on all integer values existing between the first component of each of the motion vectors of the two neighboring blocks.
상기 가상 움직임벡터 생성부는 상기 두 개의 주변블록들의 움직임벡터 각각의 제2 성분 사이에 존재하는 모든 정수값에 대해 상기 정수 기반의 인터폴레이션을 수행하는 것을 특징으로 하는 움직임벡터 복호화 장치.The method of claim 15,
And the virtual motion vector generating unit performs the integer based interpolation on all integer values existing between the second components of each of the motion vectors of the two neighboring blocks.
상기 가상 움직임벡터 생성부는 상기 두 개의 주변블록의 움직임벡터들의 평균값을 연산하여 상기 정수 기반의 인터폴레이션을 수행하는 것을 특징으로 하는 움직임벡터 부호화 장치.The method of claim 15,
The virtual motion vector generating unit performs the integer based interpolation by calculating an average value of the motion vectors of the two neighboring blocks.
상기 부호화 또는 복호화 대상블록에 인접한 적어도 하나의 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 예측 움직임벡터의 제1 성분을 예측하는 제1 예측부;
상기 적어도 하나의 주변블록의 움직임벡터를 이용한 인터폴레이션(Interpolation)이 가능한지 여부를 판단하고, 그 판단결과에 따라 인터폴레이션을 수행하여 적어도 하나의 가상 움직임벡터를 생성하는 가상 움직임벡터 생성부; 및
상기 적어도 하나의 주변블록의 움직임벡터 및 상기 가상 움직임벡터 생성부가 출력하는 가상 움직임벡터를 포함하는 제2 움직임벡터 후보집합과 상기 현재 움직임벡터의 제1 성분을 이용하여 상기 예측 움직임벡터의 제2 성분을 예측하는 제2 예측부
를 포함하는 것을 특징으로 하는 예측 움직임벡터 결정 장치.An apparatus for determining a predicted motion vector with respect to a motion vector (hereinafter, referred to as a 'current motion vector') of a block to be encoded or decoded,
A first predictor for predicting a first component of a predicted motion vector using a first motion vector candidate set generated based on a motion vector of at least one neighboring block adjacent to the encoding or decoding target block;
A virtual motion vector generator configured to determine whether interpolation using the motion vectors of the at least one neighboring block is possible, and to generate at least one virtual motion vector by performing interpolation according to the determination result; And
A second component of the prediction motion vector is generated by using a second motion vector candidate set including a motion vector of the at least one neighboring block and a virtual motion vector output by the virtual motion vector generator and a first component of the current motion vector. Second prediction part to predict
Predictive motion vector determination apparatus comprising a.
상기 현재블록에 인접한 적어도 하나의 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 제1 예측 움직임벡터의 제1 성분을 예측하고, 상기 적어도 하나의 주변블록의 움직임벡터를 이용한 인터폴레이션(Interpolation)이 가능한지 여부를 판단하고 그 판단결과에 따라 인터폴레이션을 수행하여 적어도 하나의 가상 움직임벡터를 생성하며, 상기 적어도 하나의 주변블록의 움직임벡터 및 생성된 가상 움직임벡터를 포함하는 제2 움직임벡터 후보집합과 상기 현재 움직임벡터의 제1 성분을 이용하여 상기 제1 예측 움직임벡터의 제2 성분을 예측한 후, 상기 제1 예측 움직임벡터를 이용하여 상기 현재 움직임벡터를 부호화하는 움직임벡터 부호화 단계; 및
상기 움직임벡터 부호화 장치에 의해 부호화된 상기 현재 움직임벡터를 복호화하여 복호화된 움직임벡터를 생성하고, 상기 제1 예측 움직임벡터 후보집합을 이용하여 제2 예측 움직임벡터의 제1 성분을 예측한 후 상기 복호화된 움직임벡터의 제1 성분과 상기 제2 예측 움직임벡터의 제1 성분을 이용하여 상기 현재 움직임벡터의 제1 성분을 복원하며, 상기 제2 움직임벡터 후보집합과 상기 현재 움직임벡터의 제1 성분을 이용하여 상기 제2 예측 움직임벡터의 제2 성분을 예측하고 상기 복호화된 움직임벡터의 제2 성분과 상기 제2 예측 움직임벡터의 제2 성분을 이용하여 상기 현재 움직임벡터의 제2 성분을 복원하는 움직임벡터 복호화 단계
를 포함하는 움직임벡터 부호화/복호화 방법.In a motion vector encoding / decoding method for encoding and decoding a motion vector (hereinafter, referred to as a 'current motion vector') of a current block to be encoded and decoded,
The first component of the first predicted motion vector is predicted by using the first motion vector candidate set generated based on the motion vectors of at least one neighboring block adjacent to the current block, and the motion vectors of the at least one neighboring block are predicted. Determining whether the interpolation is possible, and performing interpolation according to the determination result to generate at least one virtual motion vector, and including a motion vector of the at least one neighboring block and the generated virtual motion vector. A motion vector encoding step of predicting a second component of the first predicted motion vector using a motion vector candidate set and a first component of the current motion vector, and then encoding the current motion vector using the first predicted motion vector. ; And
Decoding the current motion vector encoded by the motion vector encoding apparatus to generate a decoded motion vector, predicting a first component of a second predicted motion vector using the first predicted motion vector candidate set, and then decoding the motion vector. Reconstructing the first component of the current motion vector using the first component of the first motion vector and the first predicted motion vector, and using the second motion vector candidate set and the first component of the current motion vector. Predicting a second component of the second predicted motion vector and reconstructing a second component of the current motion vector by using the second component of the decoded motion vector and the second component of the second predicted motion vector. Decryption step
Motion vector encoding / decoding method comprising a.
상기 부호화 대상블록에 인접한 적어도 하나의 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 예측 움직임벡터의 제1 성분을 예측하는 제1 예측 단계;
상기 적어도 하나의 주변블록의 움직임벡터를 이용한 인터폴레이션(Interpolation)이 가능한지 여부를 판단하고, 그 판단결과에 따라 인터폴레이션을 수행하여 적어도 하나의 가상 움직임벡터를 생성하는 가상 움직임벡터 생성 단계;
상기 적어도 하나의 주변블록의 움직임벡터 및 상기 가상 움직임벡터 생성 단계에서 생성되는 가상 움직임벡터를 포함하는 제2 움직임벡터 후보집합과 상기 현재 움직임벡터의 제1 성분을 이용하여 상기 예측 움직임벡터의 제2 성분을 예측하는 제2 예측 단계; 및
상기 예측 움직임벡터를 이용하여 상기 현재 움직임벡터에 대한 부호화를 수행하는 움직임벡터 부호화 단계
를 포함하는 것을 특징으로 하는 움직임벡터 부호화 방법.In a motion vector encoding method of encoding a motion vector (hereinafter, referred to as a "current motion vector") of an encoding target block,
A first prediction step of predicting a first component of a predicted motion vector using a first motion vector candidate set generated based on a motion vector of at least one neighboring block adjacent to the encoding target block;
Determining whether or not interpolation is possible using the motion vectors of the at least one neighboring block, and generating at least one virtual motion vector by performing interpolation according to the determination result;
A second component of the predicted motion vector using a second motion vector candidate set including a motion vector of the at least one neighboring block and a virtual motion vector generated in the virtual motion vector generation step and a first component of the current motion vector; Predicting a second step; And
A motion vector encoding step of performing encoding on the current motion vector using the predicted motion vector.
Motion vector encoding method comprising a.
상기 제2 예측 단계는 상기 제2 움직임벡터 후보집합에 속하는 움직임벡터 후보들 중에서 상기 현재 움직임벡터의 제1 성분과의 거리가 가장 가까운 제1 성분을 갖는 움직임벡터 후보들을 이용하여 상기 예측 움직임벡터의 제2 성분을 예측하는 것을 특징으로 하는 움직임벡터 부호화 방법.The method of claim 22,
The second prediction step includes the first prediction of the predicted motion vector using motion vector candidates having the first component having the closest distance to the first component of the current motion vector among the motion vector candidates belonging to the second motion vector candidate set. A motion vector encoding method characterized by predicting two components.
상기 제2 예측 단계는, 상기 예측 움직임벡터의 제1 성분과의 거리가 가장 가까운 제1 성분을 갖는 움직임벡터 후보가 복수 개인 경우, 그 복수 개의 움직임벡터 후보들의 제2 성분의 평균값을 상기 예측 움직임벡터의 제2 성분으로 하는 것을 특징으로 하는 움직임벡터 부호화 방법.24. The method of claim 23,
In the second prediction step, when there are a plurality of motion vector candidates having a first component closest to the first component of the predicted motion vector, the predicted motion is obtained by averaging the average value of the second components of the plurality of motion vector candidates. A motion vector encoding method comprising the second component of a vector.
상기 가상 움직임벡터 생성 단계는 상기 부호화 대상블록에 인접한 주변블록들 중 두 개의 주변블록을 선별하고 선별된 두 개의 주변블록들의 움직임벡터들에 대해 정수 기반의 인터폴레이션을 수행하여 상기 적어도 하나의 가상 움직임벡터를 생성하는 것을 특징으로 하는 움직임벡터 부호화 방법.The method of claim 22,
The generating of the virtual motion vector may include selecting at least two neighboring blocks among neighboring blocks adjacent to the encoding target block and performing integer-based interpolation on the motion vectors of the selected two neighboring blocks to perform the at least one virtual motion vector. Motion vector encoding method, characterized in that for generating.
상기 복호화 대상블록에 인접한 적어도 하나의 주변블록의 움직임벡터에 기반하여 생성한 제1 움직임벡터 후보집합을 이용하여 예측 움직임벡터의 제1 성분을 예측하고, 상기 복호화된 움직임벡터의 제1 성분과 상기 예측 움직임벡터의 제1 성분을 이용하여 상기 현재 움직임벡터의 제1 성분을 복원하는 제1 성분 복원 단계;
상기 적어도 하나의 주변블록의 움직임벡터를 이용한 인터폴레이션(Interpolation)이 가능한지 여부를 판단하고, 그 판단결과에 따라 인터폴레이션을 수행하여 적어도 하나의 가상 움직임벡터를 생성하는 가상 움직임벡터 생성 단계; 및
상기 적어도 하나의 주변블록의 움직임벡터 및 상기 가상 움직임벡터 생성 단계에서 생성되는 가상 움직임벡터를 포함하는 제2 움직임벡터 후보집합과 상기 제1 성분 복원 단계에서 복원된 상기 현재 움직임벡터의 제1 성분을 이용하여 상기 예측 움직임벡터의 제2 성분을 예측하고, 상기 복호화된 움직임벡터의 제2 성분과 상기 예측 움직임벡터의 제2 성분을 이용하여 상기 현재 움직임벡터의 제2 성분을 복원하는 제2 성분 복원 단계
를 포함하는 움직임벡터 복호화 방법.In a motion vector decoding method for reconstructing a decoded motion vector generated by decoding a coded motion vector of a decoding target block to a motion vector (hereinafter, referred to as a "current motion vector") of the decoding target block,
The first component of the predicted motion vector is predicted by using the first motion vector candidate set generated based on the motion vectors of at least one neighboring block adjacent to the decoding target block, and the first component and the first component of the decoded motion vector are predicted. A first component reconstruction step of reconstructing a first component of the current motion vector using a first component of a predicted motion vector;
Determining whether or not interpolation is possible using the motion vectors of the at least one neighboring block, and generating at least one virtual motion vector by performing interpolation according to the determination result; And
Using a second motion vector candidate set including a motion vector of the at least one neighboring block and a virtual motion vector generated in the virtual motion vector generation step and a first component of the current motion vector reconstructed in the first component reconstruction step Predicting a second component of the predicted motion vector, and restoring a second component of the current motion vector by using the second component of the decoded motion vector and the second component of the predicted motion vector.
Motion vector decoding method comprising a.
상기 제2 성분 복원부는 상기 제2 움직임벡터 후보집합에 속하는 움직임벡터 후보들 중에서 상기 현재 움직임벡터의 제1 성분과 거리가 가장 가까운 제1 성분을 갖는 움직임벡터 후보를 이용하여 상기 예측 움직임벡터의 제2 성분을 예측하는 것을 특징으로 하는 움직임벡터 복호화 방법.The method of claim 26,
The second component reconstructor uses the motion vector candidate having a first component closest to the first component of the current motion vector among the motion vector candidates belonging to the second motion vector candidate set, to obtain the second component of the predicted motion vector. A motion vector decoding method comprising predicting a component.
상기 제2 성분 복원부는, 상기 예측 움직임벡터의 제1 성분과 거리가 가장 가까운 제1 성분을 갖는 움직임벡터 후보가 복수 개인 경우, 그 복수 개의 움직임벡터 후보들의 제2 성분의 평균값을 상기 예측 움직임벡터의 제2 성분으로 하는 것을 특징으로 하는 움직임벡터 복호화 방법.The method of claim 27,
The second component reconstructor, when there are a plurality of motion vector candidates having a first component closest to the first component of the predicted motion vector, calculates an average value of the second components of the plurality of motion vector candidates. And a second component of the motion vector decoding method.
상기 가상 움직임벡터 생성부는 상기 복호화 대상블록에 인접한 주변블록들 중 두 개의 주변블록들을 선별하고 선별된 두 개의 주변블록들의 움직임벡터들에 대해 정수 기반의 인터폴레이션을 수행하여 상기 적어도 하나의 가상 움직임벡터를 생성하는 것을 특징으로 하는 움직임벡터 복호화 방법.The method of claim 26,
The virtual motion vector generator selects two neighboring blocks among neighboring blocks adjacent to the decoding target block and performs integer-based interpolation on the motion vectors of the selected two neighboring blocks to determine the at least one virtual motion vector. Motion vector decoding method, characterized in that for generating.
A computer-readable recording medium having a motion vector decoding method according to any one of claims 26 to 29.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110001187A KR101441889B1 (en) | 2011-01-06 | 2011-01-06 | Apparatus and Method for Encoding and Decoding Motion Vector |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110001187A KR101441889B1 (en) | 2011-01-06 | 2011-01-06 | Apparatus and Method for Encoding and Decoding Motion Vector |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120079862A true KR20120079862A (en) | 2012-07-16 |
KR101441889B1 KR101441889B1 (en) | 2014-09-29 |
Family
ID=46712667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110001187A KR101441889B1 (en) | 2011-01-06 | 2011-01-06 | Apparatus and Method for Encoding and Decoding Motion Vector |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101441889B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017052081A1 (en) * | 2015-09-24 | 2017-03-30 | 엘지전자 주식회사 | Inter prediction method and apparatus in image coding system |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1514241A2 (en) * | 2002-05-30 | 2005-03-16 | Koninklijke Philips Electronics N.V. | Unit for and method of estimating a motion vector |
KR100606140B1 (en) * | 2004-11-09 | 2006-08-01 | (주)씨앤에스 테크놀로지 | A motion estimation method by a determination of adaptive mode |
-
2011
- 2011-01-06 KR KR1020110001187A patent/KR101441889B1/en active IP Right Grant
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017052081A1 (en) * | 2015-09-24 | 2017-03-30 | 엘지전자 주식회사 | Inter prediction method and apparatus in image coding system |
US10575011B2 (en) | 2015-09-24 | 2020-02-25 | Lg Electronics Inc. | Inter prediction method and apparatus in image coding system |
Also Published As
Publication number | Publication date |
---|---|
KR101441889B1 (en) | 2014-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9781481B2 (en) | Apparatus and method for generating/recovering motion information based on predictive motion vector index encoding, and apparatus and method for image encoding/decoding using same | |
KR101444675B1 (en) | Method and Apparatus for Encoding and Decoding Video | |
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 | |
KR101441903B1 (en) | Reference Frame Creating Method and Apparatus and Video Encoding/Decoding Method and Apparatus Using Same | |
KR101681303B1 (en) | Method and Apparatus for Encoding/Decoding of Video Data Using Partitioned-Block Prediction | |
KR20130051384A (en) | Method and apparatus video encoding and decoding using skip mode | |
KR20110081304A (en) | Image prediction encoding device, image prediction decoding device, image prediction encoding method, image prediction decoding method, image prediction encoding program, and image prediction decoding program | |
US20130230104A1 (en) | Method and apparatus for encoding/decoding images using the effective selection of an intra-prediction mode group | |
KR20120009861A (en) | Method and Apparatus for Encoding/Decoding of Video Data Using Expanded Skip Mode | |
KR20120066741A (en) | Code motion information generating/motion information reconstructing method and apparatus using motion information merge and image encoding/decoding method and apparatus using the same | |
KR101377529B1 (en) | Video Coding and Decoding Method and Apparatus Using Adaptive Motion Vector Coding/Encoding | |
KR101441889B1 (en) | Apparatus and Method for Encoding and Decoding Motion Vector | |
KR101658592B1 (en) | Method and Apparatus for Adaptive Motion Vector Coding/Decoding Using the Information of Image Structure and Method and Apparatus for Encoding/Decoding Using The Same | |
KR101524664B1 (en) | Reference Frame Creating Method and Apparatus and Video Encoding/Decoding Method and Apparatus Using Same | |
KR100667815B1 (en) | Apparatus for encoding and decoding image, and method theroff, and a recording medium storing program to implement the method | |
KR101479137B1 (en) | Motion Information Generating Apparatus and Method using Motion Vector Predictor Index Coding, and Image Encoding/Decoding Apparatus and Method using the Same | |
KR101346474B1 (en) | Video encoding apparatus and method thereof, and video decoding apparatus and method thereof | |
KR101693284B1 (en) | Method and Apparatus for Encoding/Decoding of Video Data Using Global Motion-based Enconding Structure | |
KR101699832B1 (en) | Motion Information Generating Apparatus and Method using Motion Vector Predictor Index Coding, and Image Encoding/Decoding Apparatus and Method using the Same | |
KR101533435B1 (en) | Reference Frame Creating Method and Apparatus and Video Encoding/Decoding Method and Apparatus Using Same | |
KR101533441B1 (en) | Reference Frame Creating Method and Apparatus and Video Encoding/Decoding Method and Apparatus Using Same | |
KR101479525B1 (en) | Reference Frame Creating Method and Apparatus and Video Encoding/Decoding Method and Apparatus Using Same | |
KR101676381B1 (en) | Motion Information Generating Apparatus and Method using Motion Vector Predictor Index Coding, and Image Encoding/Decoding Apparatus and Method using the Same | |
KR20140029503A (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 | |
KR20140027435A (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 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170905 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180903 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190626 Year of fee payment: 6 |