KR102618414B1 - 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법 - Google Patents

움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR102618414B1
KR102618414B1 KR1020220123988A KR20220123988A KR102618414B1 KR 102618414 B1 KR102618414 B1 KR 102618414B1 KR 1020220123988 A KR1020220123988 A KR 1020220123988A KR 20220123988 A KR20220123988 A KR 20220123988A KR 102618414 B1 KR102618414 B1 KR 102618414B1
Authority
KR
South Korea
Prior art keywords
motion vector
resolution
differential motion
current block
mvd
Prior art date
Application number
KR1020220123988A
Other languages
English (en)
Other versions
KR20220136330A (ko
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 에스케이텔레콤 주식회사
Publication of KR20220136330A publication Critical patent/KR20220136330A/ko
Priority to KR1020230188000A priority Critical patent/KR20240001100A/ko
Application granted granted Critical
Publication of KR102618414B1 publication Critical patent/KR102618414B1/ko

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
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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/176Methods 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
    • 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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

본 발명은 영상을 효율적으로 부호화하기 위한 영상 부호화 또는 복호화에 관한 것이다. 본 발명의 일 측면에 따르면, 현재블록의 움직임벡터를 부호화하는 방법에 있어서, 디폴트 해상도로 상기 현재블록에 대한 차분움직임벡터를 결정하는 단계; 상기 결정된 차분움직임벡터의 크기(absolute value)에 따라 복수의 움직임벡터 해상도 중에서 하나 이상의 해상도 후보를 결정하는 단계; 하나 이상의 해상도 후보 중에서 상기 결정된 차분움직임벡터를 표현할 해상도를 선택하는 단계; 상기 결정된 차분움직임벡터에 상기 선택된 해상도에 대응하는 함수를 적용하여 상기 현재블록의 차분움직임벡터로서 부호화할 값을 연산하는 단계; 및 상기 연산된 값에 대한 정보 및 상기 복수의 움직임벡터 해상도 중 상기 선택된 해상도를 나타내기 위한 해상도 정보를, 상기 차분움직임벡터에 대한 정보로서, 부호화하는 단계를 포함하는 움직임벡터 부호화 방법을 제공한다.

Description

움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법{Method and Apparatus for Encoding and Decoding Motion Vector}
본 발명은 영상을 효율적으로 부호화하기 위한 영상 부호화 또는 복호화에 관한 것이다.
이 부분에 기술된 내용은 단순히 본 실시예에 대한 배경 정보를 제공할 뿐 종래 기술을 구성하는 것은 아니다.
동영상 데이터는 음성 데이터나 정지 영상 데이터 등에 비하여 데이터량이 많기 때문에, 압축을 위한 처리 없이 그 자체를 저장하거나 전송하기 위해서는 메모리를 포함하여 많은 하드웨어 자원을 필요로 한다. 따라서, 통상적으로 동영상 데이터를 저장하거나 전송할 때에는 부호화기를 사용하여 동영상 데이터를 압축하여 저장하거나 전송하며, 복호화기에서는 압축된 동영상 데이터를 수신하여 압축을 해제하고 재생한다. 이러한 동영상 압축 기술로는 H.264/AVC를 비롯하여, H.264/AVC 약 40% 정도의 부호화 효율을 향상시킨 2013년 초에 제정된 HEVC(High Efficiency Video Coding)가 존재한다.
부호화 또는 복호화를 위하여 예측하는 방법 중에서 하나인 인터 예측 부호화 시에는, 현재 블록을 예측한 후 생성된 잔차(residual) 블록을 부호화한 정보와 현재 블록을 예측하는 데에 사용된 움직임 정보를 복호화 장치로 시그널링(signaling) 한다. 여기서 움직임 정보는, 현재블록을 예측하기 위해 사용된 참조 픽처에 대한 정보 및 움직임벡터에 대한 정보를 포함한다. 기존 HEVC 표준의 경우에는 움직임벡터를 1/4 픽셀 단위로 표현한다.
하지만, 영상의 크기 및 해상도, 프레임율(Frame rate)이 점차 증가하는 추세에 따라 부호화해야 하는 데이터량도 증가하고 있다. 따라서, 기존의 압축 기술보다 더 부호화 효율이 좋은 압축 기술이 요구된다.
본 발명은 영상 및 블록의 특성에 따라 차분움직임벡터를 표현하는 해상도를 조절하여 효율적으로 영상을 부호화하기 위한 영상 부호화 또는 복호화 기술을 제공한다.
본 발명의 일 측면에 따르면, 현재블록의 움직임벡터를 부호화하는 방법을 제공한다. 그 방법은, 복수의 움직임벡터 해상도 중에서 상기 현재블록의 차분움직임벡터에 대한 해상도를 선택하는 단계, 상기 복수의 움직임벡터 해상도는 디폴트 해상도 및 적어도 두 개의 대체 해상도들을 포함함; 상기 현재블록의 움직임벡터와 예측움직임벡터 간의 차이인 상기 차분움직임벡터를 상기 선택된 해상도에 따라 부호화하는 단계; 및 상기 복수의 움직임벡터 해상도 중 상기 해상도를 나타내기 위한 해상도 정보를 부호화하는 단계를 포함한다. 또한, 상기 해상도 정보를 부호화하는 단계는, 상기 차분움직임벡터에 대한 해상도가 상기 디폴트 해상도인지를 나타내는 제1 신택스 요소를 부호화하는 단계; 및 상기 차분움직임벡터에 대한 해상도가 상기 디폴트 해상도가 아닌 경우, 상기 대체 해상도들 중 상기 차분움직임벡터에 대한 해상도를 나타내는 제2 신택스 요소를 부호화하는 단계를 포함한다.
본 발명의 다른 측면에 따르면, 현재블록의 움직임벡터를 복호화하기 위한 방법을 제공한다. 그 방법은, 상기 현재블록의 차분움직임벡터 정보를 복호화하는 단계; 차분움직임벡터의 해상도를 나타내는 해상도 정보를 복호화함으로써 복수의 움직임벡터 해상도 중에서 상기 차분움직임벡터의 해상도를 선택하는 단계, 상기 복수의 움직임벡터 해상도는 디폴트 해상도 및 적어도 두 개의 대체 해상도들을 포함함; 상기 선택된 해상도를 이용하여 상기 현재블록의 차분움직임벡터를 복원하는 단계; 및 상기 현재블록의 예측움직임벡터를 결정하고, 상기 복원된 차분움직임벡터와 상기 예측움직임벡터를 이용하여 상기 현재블록의 움직임벡터를 복원하는 단계를 포함한다. 또한, 상기 해상도 정보를 복호화하는 것은, 상기 차분움직임벡터에 대한 해상도가 상기 디폴트 해상도인지를 나타내는 제1 신택스 요소를 복호화하는 단계; 및 상기 차분움직임벡터에 대한 해상도가 상기 디폴트 해상도가 아닌 경우, 상기 대체 해상도들 중 상기 차분움직임벡터에 대한 해상도를 나타내는 제2 신택스 요소를 복호화하는 단계를 포함한다.
본 발명의 또 다른 측면에 따르면, 영상 복호화 방법에 의해 복호화될 비트스트림으로 저장하는, 디코더에 의해 판독 가능한, 기록 매체를 제공한다. 상기 비트스트림의 복호화는, 상기 현재블록의 차분움직임벡터 정보를 복호화하는 단계; 차분움직임벡터의 해상도를 나타내는 해상도 정보를 복호화함으로써 복수의 움직임벡터 해상도 중에서 상기 차분움직임벡터의 해상도를 선택하는 단계, 상기 복수의 움직임벡터 해상도는 디폴트 해상도 및 적어도 두 개의 대체 해상도들을 포함하는 포함함; 상기 선택된 해상도를 이용하여 상기 현재블록의 차분움직임벡터를 복원하는 단계; 및 상기 현재블록의 예측움직임벡터를 결정하고, 상기 복원된 차분움직임벡터와 상기 예측움직임벡터를 이용하여 상기 현재블록의 움직임벡터를 복원하는 단계를 포함한다. 또한, 상기 해상도 정보를 복호화하는 것은, 상기 차분움직임벡터에 대한 해상도가 상기 디폴트 해상도인지를 나타내는 제1 신택스 요소를 복호화하는 단계; 및 상기 차분움직임벡터에 대한 해상도가 상기 디폴트 해상도가 아닌 경우, 상기 대체 해상도들 중 상기 차분움직임벡터에 대한 해상도를 나타내는 제2 신택스 요소를 복호화하는 단계를 포함한다.
도 1은 본 발명의 실시예에 따른 영상 부호화 장치에 대한 블록도이다.
도 2는 현재블록의 주변블록에 대한 예시도이다.
도 3은 본 발명의 실시예에 따른 영상 부호화 장치의 동작방법을 나타내는 흐름도이다.
도 4는 본 발명의 실시예에 따른 영상 복호화 장치에 대한 블록도이다.
도 5는 본 발명의 실시예에 따른 영상 복호화 장치의 동작방법을 나타내는 흐름도이다.
도 6은 본 발명의 실시예에 따른 영상 복호화 장치의 구체적인 동작방법의 일례를 나타내는 흐름도이다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성 요소들에 식별 부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
도 1은 본 발명의 실시예에 따른 영상 부호화 장치(100)에 대한 블록도이다.
영상 부호화 장치(100)는 블록 분할부(110), 예측부(120), 감산기(130), 변환부(140), 양자화부(145), 부호화부(150), 역양자화부(160), 역변환부(165), 가산기(170), 필터부(180) 및 메모리(190)를 포함한다. 부호화 장치(100)의 각 구성요소는 하드웨어 칩으로 구현될 수 있으며, 또는 소프트웨어로 구현되고 마이크로프로세서가 각 구성요소에 대응하는 소프트웨어의 기능을 실행하도록 구현될 수도 있다.
블록 분할부(110)는 영상을 구성하는 각 픽처(picture)를 복수의 CTU(Coding Tree Unit)로 분할한 이후에, 트리 구조(tree structure)를 이용하여 CTU를 반복적으로(recursively) 분할한다. 트리 구조에서의 리프 노드(leaf node)가 부호화의 기본 단위인 CU(Coding Unit)가 된다. 트리 구조로는 상위 노드가 네 개의 하위 노드로 분할하는 쿼드트리(QuadTree, QT), 또는 QT 구조 및 상위 노드가 두 개의 하위 노드로 분할하는 바이너리트리(BinaryTree, BT) 구조를 혼용한 QTBT (QuadTree plus BinaryTree) 구조가 사용될 수 있다.
예측부(120)는 현재블록을 예측하여 예측블록을 생성한다. 예측부(120)는 인트라 예측부(122)와 인터 예측부(124)를 포함한다. 여기서, 현재블록은 상기의 트리 구조에서 리프 노드에 해당하는 부호화의 기본 단위로서, 현재 부호화하고자 하는 CU를 의미한다. 대안적으로, 현재블록은 CU로부터 분할된 복수의 서브블록 중 하나의 서브블록일 수도 있다.
인트라 예측부(122)는 현재블록이 포함된 현재 픽처 내에서 현재블록의 주변에 위치한 픽셀(참조 픽셀)들을 이용하여 현재블록 내의 픽셀들을 예측한다. 예측 방향에 따라 복수의 인트라 예측모드가 존재하며, 각 예측모드에 따라 사용할 주변 픽셀과 연산식이 다르게 정의된다.
인터 예측부(124)는 현재 픽처보다 먼저 부호화 및 복호화된 참조 픽처 내에서 현재블록과 가장 유사한 블록을 탐색하고, 그 탐색된 블록을 이용하여 현재블록에 대한 예측블록을 생성한다. 그리고, 현재 픽처 내의 현재블록과 참조 픽처 내의 예측블록 간의 변위(displacement)에 해당하는 움직임벡터(Motion Vector: MV)를 생성한다. 현재블록을 예측하기 위해 사용된 참조 픽처에 대한 정보 및 움직임벡터에 대한 정보를 포함하는 움직임 정보는 부호화부(150)에 의해 부호화되어 영상 복호화 장치로 전달된다.
움직임 정보를 부호화하는 데에 소요되는 비트량을 최소화하기 위해 다양한 방법이 사용될 수 있다.
현재블록의 참조 픽처와 움직임벡터가 주변블록의 참조 픽처 및 움직임벡터와 동일한 경우에는 그 주변블록을 식별할 수 있는 정보를 부호화함으로써, 현재블록의 움직임 정보를 복호화 장치로 전달할 수 있다. 이러한 방법을 '머지 모드 (merge mode)'라 한다.
머지 모드에서, 인터 예측부(124)는 현재블록의 주변블록들로부터 기 결정된 개수의 머지 후보블록(이하, '머지 후보'라 함)들을 선택한다.
머지 후보를 유도하기 위한 주변블록으로는, 도 2에 도시된 바와 같이, 현재 픽처 내에서 현재블록에 인접한 좌측블록(L), 상단블록(A), 우상단블록(AR), 좌하단블록(BL), 좌상단블록(AL) 중에서 전부 또는 일부가 사용될 수 있다. 또한, 현재블록이 위치한 현재 픽처가 아닌 참조 픽처(현재블록을 예측하기 위해 사용된 참조 픽처와 동일할 수도 있고 다를 수도 있음) 내에 위치한 블록이 머지 후보로서 사용될 수도 있다. 예컨대, 참조 픽처 내에서 현재블록과 동일 위치에 있는 블록(co-located block) 또는 그 동일 위치의 블록에 인접한 블록들이 머지 후보로서 추가로 더 사용될 수 있다.
인터 예측부(124)는 이러한 주변블록들을 이용하여 기 결정된 개수의 머지 후보를 포함하는 머지 리스트를 구성한다. 머지 리스트에 포함된 머지 후보들 중에서 현재블록의 움직임정보로서 사용할 머지 후보를 선택하고 선택된 후보를 식별하기 위한 머지 인덱스 정보를 생성한다. 생성된 머지 인덱스 정보는 부호화부(150)에 의해 부호화되어 영상 복호화 장치로 전달된다.
움직임 정보를 부호화하는 또 다른 방법은 차분움직임벡터(Motion Vector Difference: MVD)를 부호화하는 것이다.
이 방법에서, 인터 예측부(124)는 현재블록의 주변블록들을 이용하여 현재블록의 움직임벡터에 대한 예측움직임벡터(Motion Vector Predictor: MVP) 후보들을 유도한다. 예측움직임벡터 후보들을 유도하기 위해 사용되는 주변블록으로는, 도 2에 도시된 현재 픽처 내에서 현재블록에 인접한 좌측블록(L), 상단블록(A), 우상단블록(AR), 좌하단블록(BL), 좌상단블록(AL) 중에서 전부 또는 일부가 사용될 수 있다. 또한, 현재블록이 위치한 현재 픽처가 아닌 참조 픽처(현재블록을 예측하기 위해 사용된 참조 픽처와 동일할 수도 있고 다를 수도 있음) 내에 위치한 블록이 예측움직임벡터 후보들을 유도하기 위해 사용되는 주변블록으로서 사용될 수도 있다. 예컨대, 참조 픽처 내에서 현재블록과 동일 위치에 있는 블록(co-located block) 또는 그 동일 위치의 블록에 인접한 블록들이 사용될 수 있다.
인터 예측부(124)는 이 주변블록들의 움직임벡터를 이용하여 예측움직임벡터 후보들을 유도하고, 예측움직임벡터 후보들을 이용하여 현재블록의 움직임벡터에 대한 예측움직임벡터를 결정한다. 그리고, 현재블록의 움직임벡터로부터 예측움직임벡터를 감산하여 차분움직임벡터를 산출한다.
예측움직임벡터는 예측움직임벡터 후보들에 기 정의된 함수(예컨대, 중앙값, 평균값 연산 등)를 적용하여 구할 수 있다. 이 경우, 영상 복호화 장치도 기 정의된 함수를 알고 있다. 또한, 예측움직임벡터 후보를 유도하기 위해 사용하는 주변블록은 이미 부호화 및 복호화가 완료된 블록이므로 영상 복호화 장치도 그 주변블록의 움직임벡터를 이미 알고 있다. 그러므로 영상 부호화 장치(100)는 예측움직임벡터 후보를 식별하기 위한 정보를 부호화할 필요가 없다. 따라서, 이 경우에는 차분움직임벡터에 대한 정보와 현재블록을 예측하기 위해 사용한 참조 픽처에 대한 정보가 부호화된다.
한편, 예측움직임벡터는 예측움직임벡터 후보들 중 어느 하나를 선택하는 방식으로 결정될 수도 있다. 이 경우에는 차분움직임벡터에 대한 정보 및 현재블록을 예측하기 위해 사용한 참조 픽처에 대한 정보와 함께, 선택된 예측움직임벡터 후보를 식별하기 위한 정보가 추가로 부호화된다.
감산기(130)는 현재블록으로부터 인트라 예측부(112) 또는 인터 예측부(124)에 의해 생성된 예측블록을 감산하여 잔차 블록을 생성한다.
변환부(140)는 공간 영역의 픽셀 값들을 가지는 잔차 블록 내의 잔차 신호를 주파수 도메인의 변환 계수로 변환한다. 변환부(140)는 잔차 블록 내의 잔차 신호들을 현재블록의 크기를 변환 단위로 사용하여 변환할 수 있으며, 또는 잔차 블록을 더 작은 복수의 서브블록을 분할하고 서브블록 크기의 변환 단위로 잔차 신호들을 변환할 수도 있다. 잔차 블록을 더 작은 서브블록으로 분할하는 방법은 다양하게 존재할 수 있다. 예컨대, 기 정의된 동일한 크기의 서브블록으로 분할할 수도 있으며, 또는 잔차 블록을 루트 노드로 하는 QT(quadtree) 방식의 분할을 사용할 수도 있다.
양자화부(145)는 변환부(140)로부터 출력되는 변환 계수들을 양자화하고, 양자화된 변환 계수들을 부호화부(150)로 출력한다.
부호화부(150)는 양자화된 변환 계수들을 CABAC 등의 부호화 방식을 사용하여 부호화하여 비트스트림을 생성한다. 또한, 부호화부(150)는 트리 구조의 최상위 레이어에 위치하는 CTU의 크기에 대한 정보 및 CTU로부터 트리 구조로 블록을 분할하기 위한 분할 정보를 부호화하여, 복호화 장치가 부호화 장치와 동일하게 블록을 분할할 수 있도록 한다. 예컨대, QT 분할의 경우에는 상위 레이어의 블록이 하위 레이어의 네 개의 블록으로 분할되는지 여부를 지시하는 QT 분할 정보를 부호화한다. BT 분할의 경우에는 QT의 리프 노드에 해당하는 블록으로부터 시작하여 각 블록이 두 개의 블록으로 분할되는지 여부 및 분할되는 타입을 지시하는 BT 분할 정보를 부호화한다.
부호화부(150)는 현재블록이 인트라 예측에 의해 부호화되었는지 아니면 인터 예측에 의해 부호화되었는지 여부를 지시하는 예측 타입에 대한 정보를 부호화하고, 예측 타입에 따라 인트라 예측정보 또는 인터 예측정보를 부호화한다.
한편, 현재블록이 인터 예측된 경우, 부호화부(150)는 인터 예측정보에 대한 신택스 요소들(syntax elements)을 부호화한다. 인터 예측정보에 대한 신택스 요소들은 다음을 포함한다.
(a) 현재블록의 움직임정보가 머지 모드로 부호화되는지 아니면 차분움직임벡터를 부호화하는 모드로 부호화되는지 여부를 지시하는 모드 정보
(b) 움직임정보에 대한 신택스 요소
움직임정보가 머지 모드에 의해 부호화되는 경우, 부호화부(150)는 머지 후보들 중 어느 후보가 현재블록의 움직임정보를 추출하기 위한 후보로서 선택되는지를 지시하는 머지 인덱스 정보를 움직임정보에 대한 신택스 요소로 부호화한다.
반면, 움직임정보가 차분움직임벡터를 부호화하는 모드에 의해 부호화되는 경우, 차분움직임벡터에 대한 정보 및 참조 픽처에 대한 정보를 움직임정보에 대한 신택스 요소로 부호화한다. 만약, 예측 움직임벡터가 복수의 예측 움직임벡터 후보들 중 어느 하나의 후보를 선택하는 방식으로 결정되는 경우에는, 움직임정보에 대한 신택스 요소는 그 선택된 후보를 식별하기 위한 예측 움직임벡터 식별 정보를 추가로 더 포함한다.
역양자화부(160)는 양자화부(145)로부터 출력되는 양자화된 변환 계수들을 역양자화하여 변환 계수들을 생성한다. 역변환부(165)는 역양자화부(160)로부터 출력되는 변환 계수들을 주파수 도메인으로부터 공간 도메인으로 변환하여 잔차블록을 복원한다.
가산기(170)는 복원된 잔차블록과 예측부(120)에 의해 생성된 예측블록을 가산하여 현재블록을 복원한다. 복원된 현재블록 내의 픽셀들은 다음 순서의 블록을 인트라 예측할 때 참조 픽셀로서 사용된다.
필터부(180)는 블록 단위의 부호화/복호화로 인해 발생하는 블록킹 현상(blocking artifact)을 제거하기 위해 복원된 블록 간의 경계를 디블록킹 필터링하고 메모리(190)에 저장한다. 한 픽처 내의 모든 블록들이 복원되면, 복원된 픽처는 이후에 부호화하고자 하는 픽처 내의 블록을 인터 예측하기 위한 참조 픽처로 사용된다.
참고로, 영상 부호화 장치(100)는 스킵 모드(Skip Mode)를 사용하여 현재블록을 부호화할 수도 있다. 스킵 모드에서는, 현재블록의 움직임정보만이 부호화되고 잔차블록에 대한 정보 등 현재블록에 대한 어떠한 다른 정보도 부호화되지 않는다. 현재블록의 움직임정보로서는 전술한 머지 인덱스 정보가 사용될 수 있다. 영상 복호화 장치(100)는, 현재 블록이 스킵 모드로 부호화된 경우, 비트스트림으로부터 복호화된 머지 인덱스 정보에 의해 지시되는 머지 후보의 움직임정보를 현재블록의 움직임정보로 설정한다. 그리고 현재블록의 움직임정보에 의해 예측된 예측블록을 현재블록으로서 복원한다.
본 발명은 움직임벡터를 부호화 또는 복호화하기 위한 방법 및 장치에 관한 것으로, 영상 및 블록의 특성에 따라 차분움직임벡터를 표현하는 해상도를 조절하여 부호화 효율을 향상시킬 수 있다.
우선, 움직임벡터 해상도에 대하여 설명한다. 움직임벡터 해상도는 정수 픽셀 해상도와 분수 픽셀 해상도 사이에서 적응적으로 결정될 수 있다. 움직임벡터 해상도는 움직임벡터를 결정하는 최소 단위이다. 또한, 움직임벡터 해상도는 현재블록의 움직임 보상을 위한 참조 픽처의 해상도 즉, 참조 픽처를 어느 픽셀까지 보간할 것인지를 의미할 수 있다. 예컨대, 움직임벡터 해상도가 1/4 픽셀이라고 하면, 참조 픽처는 1/4 픽셀 단위까지 보간되며 움직임벡터는 1/4 픽셀 단위까지 측정된다. 여기서, 움직임벡터를 결정하는 최소 단위는 1/2 픽셀, 1/4 픽셀, 1/8 픽셀 등과 같은 분수 픽셀(fractional pixel) 단위이거나, 1 픽셀, 2픽셀, 3픽셀 등과 같은 정수 픽셀(integer pixel) 단위가 될 수 있다. 움직임벡터 해상도뿐만 아니라 차분움직임벡터 해상도 역시 분수 픽셀 해상도 및 정수 픽셀 해상도 사이에서 적응적으로 선택될 수 있다.
움직임이 미세한 영역을 예측하는 경우에는 분수 픽셀 단위로 움직임 벡터가 표현되고, 움직임이 큰 영역을 예측하는 경우에는 정수 픽셀 단위로 움직임벡터가 표현될 수 있다. 한편, 현재블록의 움직임벡터와 예측움직임벡터의 차이가 작은 경우에는 분수 픽셀 단위로 차분움직임벡터가 표현되고, 반대로 그 차이가 큰 경우에는 정수 픽셀 단위로 차분움직임벡터가 표현될 수 있다. 영상의 특성에 따라 정수 픽셀 해상도보다 분수 픽셀 해상도로 움직임벡터 및 차분움직임벡터를 표현하는 것이 적절한 경우가 있겠으나, 이 경우에는 정수 이하의 소수 부분까지 영상 복호화 장치로 시그널링해야 하므로, 필요한 비트량이 증가하게 된다.
기존 HEVC 표준에서는 움직임벡터 및 차분움직임벡터를 1/4 픽셀 해상도로 표현한다. 1/4 픽셀 해상도로 표현된 차분움직임벡터(quarter-pixel mvd)와 이에 부여되는 차분움직임벡터 인덱스(mvd index)의 일례는 표 1과 같다.
mvd index quarter-pixel mvd
0 0
1 0.25
2 0.5
3 0.75
4 1
5 1.25
6 1.5
7 1.75
8 2
... ...
인터 예측부에 의해 결정된 차분움직임벡터는 표 1과 같이 1/4 픽셀 단위로 표현되는 값들을 가질 수 있다. 다만, 정수 부분 이외에 소수 부분까지 포함하는 값들을 시그널링하기 위해서, 실제 결정된 차분움직임벡터(quarter-pixel mvd) 절대값에 4를 곱한 값인 차분움직임벡터 인덱스(mvd index) 및 결정된 차분움직임벡터의 부호(sign) 값이 현재블록의 차분움직임벡터의 정보로서 부호화된다.
표 2는 HEVC에서 차분움직임벡터의 정보를 표현하는 신택스 요소들을 나타낸다.
mvd_coding( x0, y0, refList ) { Descriptor
abs_ mvd _ greater0 _flag[ 0 ] ae(v)
abs_ mvd _ greater0 _flag[ 1 ] ae(v)
if( abs_mvd_greater0_flag[ 0 ] )  
abs_ mvd _ greater1 _flag[ 0 ] ae(v)
if( abs_mvd_greater0_flag[ 1 ] )  
abs_ mvd _ greater1 _flag[ 1 ] ae(v)
if( abs_mvd_greater0_flag[ 0 ] ) {  
if( abs_mvd_greater1_flag[ 0 ] )  
abs_ mvd _ minus2[ 0 ] ae(v)
mvd _sign_flag[ 0 ] ae(v)
}  
if( abs_mvd_greater0_flag[ 1 ] ) {  
if( abs_mvd_greater1_flag[ 1 ] )  
abs_ mvd _ minus2[ 1 ] ae(v)
mvd _sign_flag[ 1 ] ae(v)
}  
}  
abs__ mvd _ greater0 _flag[]는 차분움직임벡터 인덱스가 0보다 큰지 여부를 나타내고, abs_ mvd _ greater1 _flag[]는 차분움직임벡터 인덱스가 1보다 큰지 여부를 나타낸다. abs_ mvd _ minus2[]는 차분움직임벡터 인덱스에서 2를 뺀 값을 나타내고, mvd_sign_flag[]는 차분움직임벡터의 부호(sign)를 나타낸다. [0]은 차분움직임벡터의 가로축 성분(즉, x 컴포넌트)를 표현하고, [1]은 차분움직임벡터의 세로축 성분(즉, y 컴포넌트)를 표현한다.
표 3은 표 2에서 언급한 신택스 요소들의 이진화 기법을 나타낸다.

Syntax element
Binarization
Process Parameter

mvd

abs_mvd_greater0_flag[ ] FL Max=1
abs_mvd_greater1_flag[ ] FL Max=1
abs_ mvd _ minus2 [ ] EG k-th=1
mvd _sign_flag[ ] FL Max=1
FL은 고정 길이(Fixed Length) 기반의 이진화 기법으로서, 해당 신택스 요소의 최대값(Max)이 필요하다. EG(Exponential Golomb)는 2의 승수 기반의 이진화 기법으로서, 차수(k-th)에 대한 정보가 필요하다. 표 4는 차수 별 EG의 코드 빈(code bins)을 나타낸다.
Code
Num
k=0 k=1 k=2
0 0 00 000
1 100 01 001
2 101 1000 010
3 11000 1001 011
4 11001 1010 10000
5 11010 1011 10001
6 11011 110000 10010
7 1110000 110001 10011
8 1110001 110010 10100
9 1110010 110011 10101
10 1110011 110100 10110
... ... ... ...
표 5는 HEVC에서 1/4 픽셀 해상도에 따라 결정된 현재블록의 차분움직임벡터(quarter-pixel mvd) 정보를 나타내기 위한 신택스 요소들 및 필요한 비트수를 나타낸다.
quarter-pixel mvd 0 0.25 -0.50 0.75 -1.00 2.25 13.00 -22.50 43.75
mvd index 0 1 2 3 4 9 52 90 175
abs_mvd_greater0_flag 0 1 1 1 1 1 1 1 1
abs_mvd_greater1_flag - 0 1 1 1 1 1 1 1
abs_ mvd _ minus2 - - 2 bits (0) 2 bits (1) 4 bits (2) 6 bits (7) 10 bits (50) 12 bits (88) 14 bits (173)
mvd _sign_flag - 0 1 0 1 0 0 1 0
Total bits 1
bit
3 bits 5 bits 5 bits 7 bits 9 bits 13 bits 15 bits 17 bits
표 5에서 mvd index는 실제로 구한 차분움직임벡터(quarter-pixel mvd)의 인덱스 값으로, 표 1에서 기재한 것과 같이 차분움직임벡터(quarter-pixel mvd) 절대값에 4를 곱하여 획득되는 값이다. abs_ mvd _ minus2에 필요한 비트수는 k-th가 1인 EG(표 3 참고)를 기반으로 mvd index에서 2를 뺀 값을 코딩한 결과로부터 얻어진다. 이하, 본 발명의 실시예들에 대한 설명에도 동일하게 적용된다. mvd index에서 2를 뺀 값은 abs_ mvd _ minus2에 필요한 비트수 아래의 괄호 안에 표시되어 있다.
본 발명은 차분움직임벡터 정보를 표현하는데 필요한 비트량을 줄임으로써 영상을 효율적으로 부호화 또는 복호화할 수 있는 방법을 제안한다. 이하 설명할 본 발명의 다양한 실시예들은 차분움직임벡터의 가로축 성분(x 컴포넌트) 및 세로축 성분(y 컴포넌트) 모두에 각각 적용된다. 다만, 설명의 편의상 하나의 성분을 기준으로 설명한다. 또한, 본 발명은 차분움직임벡터를 표현하는 데에 한정하지 않고, 움직임벡터 자체를 표현하는데 사용될 수 있다.
실시예 1
본 실시예는 1/2 픽셀, 1/4 픽셀, 1/8 픽셀, 1/16 픽셀 등과 같이 분수 픽셀 단위로 표현되는 차분움직임벡터에 있어서, 정수 부분과 소수 부분을 분리하여 효율적으로 표현하는 방법에 관한 것이다. 예를 들어, 결정된 차분움직임벡터 값이 "3.75"인 경우, 정수 부분에 속하는 "3"과 소수 부분에 속하는 ".75"를 분리하여 표현하는 것이다.
우선, 본 실시예에 따른 영상 부호화 장치는 현재블록에 대한 차분움직임벡터를 결정한다. 이 때, 결정된 차분움직임벡터의 절대값은 설정된 움직임벡터 해상도에 따라 정수 픽셀 단위로 표현될 수도 있고 분수 픽셀 단위로 표현될 수도 있다. 다만, 본 실시예는 차분움직임벡터의 절대값이 분수 픽셀 단위로 표현된 경우에 적용될 수 있다.
영상 부호화 장치는 차분움직임벡터의 절대값을 분수 픽셀 단위로 결정하는 경우, 결정된 차분움직임벡터의 절대값을 정수 부분과 소수 부분으로 분리한다. 그리고 차분움직임벡터의 절대값에 대한 정보 즉, 정수 부분에 해당하는 값을 나타내는 정보와 소수 부분에 해당하는 값을 나타내는 정보를 부호화한다. 차분움직임벡터의 부호를 나타내는 정보도 별도로 부호화한다.
예를 들어, 영상 부호화 장치는 차분움직임벡터의 절대값을 표현함에 있어서, 정수 부분(pre-point)은 3개의 신택스 요소들로 표현하고, 소수 부분(post-point)은 1개의 신택스 요소로 표현할 수 있다. 차분움직임벡터의 부호는 플래그로 표현한다. 신택스 요소들의 일례는 다음과 같다.
- abs_ mvd _zero_only_flag(pre-point): 차분움직임벡터의 절대값이 오직 0인지를 나타내는 플래그
- abs_ mvd _ less1 _flag(pre-point): 차분움직임벡터의 절대값이 1 미만인지를 나타내는 플래그
- abs_ mvd _ minus1 (pre-point): 차분움직임벡터의 절대값의 정수 부분에서 1을 뺀 값
- abs_ mvd _post_type(post-point): 차분움직임벡터의 절대값의 소수 부분을 나타내는 타입 정보(예를 들어, 1/4 픽셀이라면 4가지 타입 0:.00, 1:.25, 2:.50, 3:.75)
- mvd _sign_flag: 차분움직임벡터의 부호를 나타내는 플래그
abs_ mvd _post_type에 대하여 기재된 소수 부분을 나타내는 4가지 타입 정보는 예시에 불과하며, 반드시 이에 한정되는 것은 아니다. 움직임벡터 해상도에 따라 타입 정보의 값 및 개수가 다양하게 달라질 수 있다.
본 실시예의 신택스 요소들에 대한 구조의 일례는 표 6과 같다.
mvd_coding( x0, y0, refList ) { Descriptor
abs_ mvd _zero_only_flag[ ] ae(v)
if(!abs_mvd_zero_only_flag[ ] )  
abs_ mvd _ less1 _flag[ ] ae(v)
if(!abs_mvd_zero_only_flag[ ] ) {  
if(!abs_mvd_less1_flag[ ] )  
abs_ mvd _ minus1[ ] ae(v)
abs_ mvd _post_type[ ] ae(v)
mvd _sign_flag[ ] ae(v)
}  
}  
본 실시예의 신택스 요소들에 대한 이진화 방법의 일례는 표 7과 같다. abs_mvd_post_type에 대한 타입이 4가지이므로 해당 신택스의 FL에 대한 Max 값이 3으로 설정된다. 그러나, 이에 한정되는 것은 아니며 움직임벡터 해상도에 따라 FL에 대한 Max 값이 달라질 수 있다.

Syntax element Binarization
Process Parameter
Pre-point

abs_mvd_zero_only_flag FL Max=1
abs_ mvd _ less1 _flag FL Max=1
abs_ mvd _ minus1 EG k-th=1
Post-point abs_ mvd _post_type FL Max=3
Sign mvd _sign_flag FL Max1
표 8은 전술한 표 5와 동일한 차분움직임벡터에 대하여 본 실시예에 따라 계산한 비트수를 나타낸다. abs_ mvd _ minus1에 필요한 비트수 아래에 기재된 괄호 안의 숫자는 차분움직임벡터 절대값의 정수 부분에서 1을 뺀 값을 나타낸다.
quarter-pixel mvd 0 0.25 -0.50 0.75 -1.00 2.25 13.00 -22.50 43.75
mvd value (pre_point) 0 0 0 0 1 2 13 22 43
abs_mvd_zero_only_flag 1 0 0 0 0 0 0 0 0
abs_ mvd _ less1 _flag - 1 1 1 0 0 0 0 0
abs_ mvd _ minus1 - - - - 2 bits (0) 2 bits (0) 6 bits (12) 8
bits (21)
10 bits (42)
mvd value (post_point) .25 .50 .75 .00 .25 .00 .50 .75
abs_ mvd _post_type - 01 10 11 00 01 00 10 11
mvd _sign_flag - 0 1 0 1 0 0 1 0
Total bits 1 bit 5 bits 5 bits 5 bits 7 bits 7 bits 11 bits 13
bits
15
bits
표 5와 표 8에서 계산된 총 비트수를 비교하면, 1/4 픽셀 해상도의 차분움직임벡터 값이 0.25인 경우에 본 실시예에서의 비트수가 더 크게 계산되었으나, 2.25, 13.00, -22.50, 43.75의 값에서는 본 실시예에서 계산된 비트수가 더 적다. 본 명세서에서는 생략하였지만, 표 8에 제시된 값 외에 0부터 40까지의 quarter-pixel mvd 값에 대해서 HEVC 방식 및 본 실시예의 방식 각각에 따른 전체 비트수를 비교해보면, 0.25의 경우를 제외한 모든 경우에서 동일한 비트수 또는 더 적은 비트수를 필요로 한다는 결과를 얻을 수 있다. 즉, HEVC 대비 본 실시예에 따른 차분움직임벡터 부호화 방법이 더 효율적이다.
영상 복호화 장치는 비트스트림으로부터 현재블록의 차분움직임벡터 정보를 복호화한다. 여기서, 차분움직임벡터 정보는 차분움직임벡터의 절대값에 대한 정보(예: abs_ mvd _zero_only_flag, abs_ mvd _ less1 _flag, abs_ mvd _ minus1 , abs_mvd_post_type) 및 부호(sign)에 대한 정보(예: mvd _sign_flag)를 포함하고, 차분움직임벡터의 절대값에 대한 정보는 전술한 바와 같이 정수 부분에 해당하는 값을 나타내는 정보와 소수 부분에 해당하는 값을 나타내는 정보를 포함한다.
영상 복호화 장치는 복호화된 차분움직임벡터 절대값의 정수 부분에 해당하는 값을 나타내는 정보 및 소수 부분에 해당하는 값을 나타내는 정보를 이용하여 차분움직임벡터의 절대값을 복원한다. 그리고 복호화된 차분움직임벡터의 부호에 대한 정보 및 복원된 차분움직임벡터의 절대값을 이용하여 현재블록의 차분움직임벡터를 복원한다.
영상 복호화 장치는 현재블록의 예측움직임벡터를 결정하고, 복원된 차분움직임벡터와 결정된 예측움직임벡터를 이용하여 현재블록의 움직임벡터를 복원하게 된다.
실시예 2
본 실시예에서는 분수 픽셀 단위로 표현된 차분움직임벡터의 절대값을 정수 부분과 소수 부분으로 나누어 표현하되, 실시예 1과 다른 신택스 요소들을 이용한다.
본 실시예에 따른 영상 부호화 장치 역시, 차분움직임벡터의 절대값을 분수 픽셀 단위로 결정하는 경우, 결정된 차분움직임벡터의 절대값을 정수 부분과 소수 부분으로 분리한다. 그리고 차분움직임벡터의 절대값에 대한 정보 즉, 정수 부분에 해당하는 값을 나타내는 정보와 소수 부분에 해당하는 값을 나타내는 정보를 부호화한다. 차분움직임벡터의 부호를 나타내는 정보도 별도로 부호화한다. 다만, 정수 부분에 해당하는 값을 나타내는 정보로서 실시예 1과 다른 신택스 요소들을 이용할 수 있다.
예를 들어, 본 실시예에 따른 영상 부호화 장치는 차분움직임벡터의 절대값을 표현함에 있어, 정수 부분(pre-point)은 4개의 신택스 요소로 표현하고, 소수 부분(post-point)은 1개의 신택스 요소로 표현할 수 있다. 차분움직임벡터의 부호는 플래그로 표현한다. 신택스 요소들의 일례는 다음과 같다.
- abs_ mvd _zero_only_flag(pre-point): 차분움직임벡터의 절대값이 오직 0인지를 나타내는 플래그
- abs_ mvd _greater_equal_1_flag(pre-point): 차분움직임벡터의 절대값이 1 이상인지를 나타내는 플래그
- abs_ mvd _greater_equal_2_flag(pre-point): 차분움직임벡터의 절대값이 2 이상인지를 나타내는 플래그
- abs_ mvd _ minus2 (pre-point): 차분움직임벡터의 절대값의 정수 부분에서 2를 뺀 값
- abs_ mvd _post_type(post-point): 차분움직임벡터의 절대값의 소수 부분을 나타내는 타입 정보(예를 들어, 1/4 픽셀이라면 4가지 타입 0:.00, 1:.25, 2:.50, 3:.75)
- mvd _sign_flag: 차분움직임벡터의 부호를 나타내는 플래그
abs_ mvd _post_type에 대하여 기재된 소수 부분을 나타내는 4가지 타입 정보는 예시에 불과하며, 반드시 이에 한정되는 것은 아니다. 움직임벡터 해상도에 따라 타입 정보의 값 및 개수가 다양하게 달라질 수 있다.
본 실시예의 신택스 요소들에 대한 구조의 일례는 표 9와 같다.
mvd_coding( x0, y0, refList ) { Descriptor
abs_ mvd _zero_only_flag[ ] ae(v)
if(!abs_mvd_zero_only_flag[ ] )  
abs_ mvd _greater_equal_1_flag[ ] ae(v)
if(!abs_mvd_zero_only_flag[ ] )
if(abs_mvd_greater_equal_1_flag[ ] )
abs_ mvd _greater_equal_2_flag[ ] ae(v)
if(!abs_mvd_zero_only_flag[ ] ) {  
if(abs_mvd_greater_equal_1_flag[ ] )  
if(abs_mvd_greater_equal_2_flag[ ] )
abs_ mvd _ minus2[ ] ae(v)
abs_ mvd _post_type[ ] ae(v)
mvd _sign_flag[ ] ae(v)
}  
}  
본 실시예의 신택스 요소들에 대한 이진화 방법의 일례는 표 10과 같다. abs_mvd_post_type에 대한 타입이 4가지 이므로 해당 신택스의 FL에 대한 Max 값이 3으로 설정된다. 그러나, 이에 한정되는 것은 아니며 움직임벡터 해상도에 따라 FL에 대한 Max 값이 달라질 수 있다.

Syntax element Binarization
Process Parameter
Pre-point

abs_mvd_zero_only_flag FL Max=1
abs_mvd_greater_equal_1_flag FL Max=1
abs_mvd_greater_equal_2_flag FL Max=1
abs_ mvd _ minus2 EG k-th=1
Post-point abs_ mvd _post_type FL Max=3
Sign mvd _sign_flag FL Max1
표 11은 전술한 표 5와 동일한 차분움직임벡터에 대하여 본 실시예에 따라 계산한 비트수를 나타낸다. abs_ mvd _ minus2에 필요한 비트수 아래에 기재된 괄호 안의 숫자는 차분움직임벡터 절대값에서 2를 뺀 값을 나타낸다.
quarter-pixel mvd 0 0.25 -0.50 0.75 -1.00 2.25 13.00 -22.50 43.75
mvd value (pre_point) 0 0 0 0 1 2 13 22 43
abs_mvd_zero_only_flag 1 0 0 0 0 0 0 0 0
abs_mvd_greater_equal_1_flag - 0 0 0 1 1 1 1 1
abs_mvd_greater_equal_2_flag 0 1 1 1 1
abs_ mvd _ minus2 - - - - - 2 bits (0) 6 bits (11) 8
bits (20)
10 bits (41)
mvd value (post_point) .25 .50 .75 .00 .25 .00 .50 .75
abs_ mvd _post_type - 01 10 11 00 01 00 10 11
mvd _sign_flag - 0 1 0 1 0 0 1 0
Total bits 1 bit 5 bits 5 bits 5 bits 6 bits 8 bits 12 bits 14
bits
16
bits
표 5와 표 11에서 계산된 총 비트수를 비교하면, 1/4 픽셀 해상도의 차분움직임벡터 값이 0.25인 경우에 본 실시예에서의 비트수가 더 크게 계산되었으나, -1.00, 2.25, 13.00, -22.50, 43.75의 값에서는 본 실시예에서 계산된 비트수가 더 적다. 즉, HEVC 대비 본 실시예에 따른 차분움직임벡터 부호화 방법이 더 효율적이다.
영상 복호화 장치는 비트스트림으로부터 현재블록의 차분움직임벡터 정보를 복호화한다. 여기서, 차분움직임벡터 정보는 차분움직임벡터의 절대값에 대한 정보(예: abs_ mvd _zero_only_flag, abs_ mvd _greater_equal_1_flag, abs_mvd_greater_equal_2_flag, abs_ mvd _ minus2 , abs_ mvd _post_type) 및 부호(sign)에 대한 정보(예: mvd_sign_flag)를 복호화한다.
영상 복호화 장치는 복호화된 차분움직임벡터 절대값의 정수 부분에 해당하는 값을 나타내는 정보 및 소수 부분에 해당하는 값을 나타내는 정보를 이용하여 차분움직임벡터의 절대값을 복원한다. 그리고 복호화된 차분움직임벡터의 부호에 대한 정보 및 복원된 차분움직임벡터의 절대값을 이용하여 현재블록의 차분움직임벡터를 복원한다.
영상 복호화 장치는 현재블록의 예측움직임벡터를 결정하고, 복원된 차분움직임벡터와 결정된 예측움직임벡터를 이용하여 현재블록의 움직임벡터를 복원하게 된다.
이하에서 설명할 본 발명의 실시예들은 영상 및 블록의 특성에 따라 복수의 움직임벡터 해상도 중에서 차분움직임벡터의 해상도를 적응적으로 선택하여 선택된 해상도로 차분움직임벡터를 표현함으로써, 영상을 효율적으로 부호화한다. 예를 들어, 차분움직임벡터의 크기(absolute value)가 작은 경우에는 분수 픽셀 단위(예: 1/4 픽셀)로 차분움직임벡터를 표현하고, 반대로 크기(absolute value)가 큰 경우에는 정수 픽셀 단위(예: 1 픽셀, 4 픽셀)로 차분움직임벡터를 표현한다.
영상 부호화 장치는 복수의 움직임벡터 해상도 중에서 하나의 해상도를 적응적으로 선택할지 여부를 나타내는 플래그(adaptive_MV_resolution_ enbaled _flag)를 헤더 정보에 삽입하여 적응적인 해상도 선택 기능을 활성화/비활성화시킬 수 있다. 예를 들어, 영상 부호화 장치가 복수의 움직임벡터 해상도 중에서 하나의 해상도를 적응적으로 선택하는 경우에, adaptive_MV_resolution_ enbaled _flag를 온(on)으로 부호화하고, 해상도를 적응적으로 선택하지 않는 경우에는 adaptive_MV_resolution_enbaled_flag를 오프(off)로 부호화할 수 있다.
adaptive_MV_resolution_ enbaled _flag는 SPS(Sequence Parameter Set), PPS(Picture Parameter Set) 및 슬라이스(또는 CTU: Coding Tree Unit) 헤더 중 하나 이상에 삽입될 수 있다. 예를 들어, 움직임 벡터 해상도를 적응적으로 선택할지 여부가 영상 시퀀스 단위마다 결정되는 경우에는 SPS에 플래그가 삽입되고, 픽처 단위마다 결정되는 경우에는 PPS에 플래그가 삽입되며, 슬라이스(또는 CTU) 단위마다 결정되는 경우에는 슬라이스(또는 CTU) 헤더에 삽입된다.
이하에서 설명할 실시예들은 복수의 움직임벡터 해상도 중에서 하나의 해상도를 적응적으로 선택할지 여부를 나타내는 플래그가 온(on)으로 부호화되는 경우를 전제로 한다.
영상 부호화 장치는 부호화 대상 블록(CU: Coding Unit 또는 CTB: Coding Tree Block) 단위로 차분움직임벡터를 표시하는 해상도를 적응적으로 선택한다. 즉, 영상 부호화 장치는 기 정의된 복수의 움직임벡터 해상도 중에서 하나의 해상도를 차분움직임벡터를 표시하기 위한 해상도로서 선택한다.
영상 부호화 장치는 부호화 대상 블록 단위로 복수의 움직임벡터 해상도 중에서 선택된 해상도를 나타내기 위한 해상도 정보를 부호화한다. 복수의 움직임벡터 해상도는 기 정의될 수 있으며, 디폴트 해상도 및 디폴트 해상도를 대체할 다른 해상도(즉, 대체 해상도)들이 포함될 수 있다. 여기서, 디폴트 해상도 및 대체 해상도들은 영상 부호화 장치와 영상 복호화 장치가 공유하는 기 결정된 특정 움직임벡터 해상도일 수 있고, 또는 영상 부호화 장치가 상위 레벨 영상 영역(예: 영상 시퀀스, 픽처, 슬라이스, CTU 등)에서 결정하여 영상 복호화 장치로 시그널링하는 값일 수도 있다.
예를 들어, 디폴트 해상도가 1/4 픽셀 해상도로 정의되고, 대체 해상도들은 1 픽셀 해상도 및 4 픽셀 해상도로 정의되면, 영상 부호화 장치는 선택된 해상도 정보로서, 움직임벡터 해상도가 1/4 픽셀 해상도인지 정수 픽셀 해상도인지를 나타내는 정보 및 정수 픽셀 해상도라면 1 픽셀 해상도인지 4 픽셀 해상도인지를 나타내는 정보를 부호화한다. 이하, 움직임벡터 해상도가 1/4 픽셀 해상도인지 정수 픽셀 해상도인지를 나타내는 정보로서 부호화되는 신택스 요소를 first_bin, 움직임벡터 해상도가 1 픽셀 해상도인지 4 픽셀 해상도인지를 나타내는 정보로서 부호화되는 신택스 요소를 second_ bin이라 칭한다.
이 경우, first_bin의 값이 "0"으로 부호화되면 1/4 픽셀 해상도로 차분움직임벡터가 표현되고, "1"로 부호화되면 second_bin이 추가적으로 부호화된다. second_bin의 값이 "0"으로 부호화되면 1 픽셀 해상도로 차분움직임벡터가 표현되고, "1"로 부호화되면 4 픽셀 해상도로 차분움직임벡터가 표현된다.
다른 예로, 영상 복호화 장치는 차분움직임벡터의 해상도를 지시하는 정보로서 mvd _resolution_flag를 복호화할 수 있다. mvd _resolution_flag가 TU(Truncated Unary) 방식(Max=2)으로 이진화되면, mvd _resolution_flag의 값이"0"으로 복호화되는 경우에는 차분움직임벡터를 1/4 픽셀 해상도로 표현하고, mvd_resolution_flag의 값이 "10"으로 복호화되는 경우에는 차분움직임벡터를 1 픽셀 해상도로 표현하며, mvd _resolution_flag의 값이 "11"로 복호화되는 경우에는 차분움직임벡터를 4 픽셀 해상도로 표현할 수 있다.
해상도 정보는 차분움직임벡터의 x 컴포넌트 및 y 컴포넌트 각각에 대하여 영상 복호화 장치로 시그널링될 수 있고, 또는 x 컴포넌트 및 y 컴포넌트에 대하여 동일한 차분움직임벡터의 해상도를 결정하여 영상 복호화 장치로 시그널링될 수 있다.
실시예 3
본 실시예에서는 복수의 움직임벡터 해상도 중에서 하나의 해상도를 적응적으로 선택하는 방법에 관한 것이다. 예를 들어, 디폴트 해상도가 1/4 픽셀 해상도로 정의되고, 대체 해상도들은 1 픽셀 해상도 및 4 픽셀 해상도로 정의된다.
표 12는 1/4 픽셀 해상도에 따라 결정된 현재블록의 차분움직임벡터(quarter-pixel mvd) 값을 1/4 픽셀 해상도, 1 픽셀 해상도, 또는 4 픽셀 해상도 중 임의의 하나의 해상도로 차분움직임벡터 값을 나타내기 위한 신택스 요소들 및 필요한 비트수를 나타낸다.
quarter-pixel mvd 0 0.75 -2.25 10.00 -15.75 19.50 -22.50 34.25 -43.75
mvd index 0 3 9 40 16 20 6
(16)
9 (20) 11
(44)
abs_mvd_greater0_flag 0 1 1 1 1 1 1 1 1
abs_mvd_greater1_flag - 1 1 1 1 1 1 1 1
abs_ mvd _ minus2 - 2 bits
(1)
6 bits
(7)
10 bits (38) 8
bits (14)
8 bits (18) 4
bits (4)
6 bits (7) 6
bits (9)
mvd _sign_flag - 0 1 0 1 0 1 0 1
1 st bin
(quarter or integer)
- 0 0 0 1 1 1 1 1
2 nd bin (1 or 4) - - - - 0 0 1 1 1
Total bits 1 bit 6 bits 10
bits
14 bits 13 bits 13 bits 9
bits
11 bits 11 bits
표 12의 quarter-pixel mvd 값들 중 {0, 0.75, -2.25, 10.00}에 대해서는 1/4 픽셀 해상도가 적용되었고, {-15.75, 19.50}에 대해서는 1 픽셀 해상도가 적용되었으며, {-22.50, 34.25, -43.75}에 대해서는 4 픽셀 해상도가 적용되었다. mvd index는 quarter-pixel mvd의 절대값을 표현하기 위해 연산된 값이다. 즉, 차분움직임벡터 인덱스(mvd index)는 차분움직임벡터에 대응하는 부호화할 값이다.
본 실시예에서는 복수의 모든 해상도에 대해 동일한 하나의 방법으로 차분움직임벡터에 대응하는 부호화할 값을 연산한다. 차분움직임벡터에 대응하는 부호화할 값인 차분움직임벡터 인덱스(mvd _index)를 구하는 공식은 수학식 1과 같다.
Figure 112022102694987-pat00001
수학식 1에서 mvd _resolution 은 선택된 해상도, mvd 선택된 해상도로 표현된 차분움직임벡터, mvd_index 는 부호화할 값을 나타낸다.
예를 들어, 1/4 픽셀 해상도가 적용되는 경우 차분움직임벡터 절대값에 4를 곱하여 mvd index를 연산하고, 1 픽셀 해상도가 적용되는 경우 차분움직임벡터 절대값에 버림, 반올림, 올림 중 어느 하나를 적용하여 1 픽셀 해상도로 표현된 차분움직임벡터(예: 1의 배수)를 구한 후, 이를 1 (픽셀)로 나눔으로써 mvd index를 구한다. 4 픽셀 해상도가 적용되는 경우에는, 차분움직임벡터 절대값에 버림, 반올림, 올림 중 어느 하나를 적용하여 4 픽셀 해상도로 표현된 차분움직임벡터(예: 4의 배수)를 구한 후, 이를 4 (픽셀)로 나누어 mvd index를 구한다. mvd index의 값 중 괄호 안에 표시된 숫자는 차분움직임벡터 절대값을 선택된 각 해상도로 표현한 차분움직임벡터 값을 나타낸다. abs_ mvd _ minus2에 필요한 비트수 아래에 기재된 괄호 안의 숫자는 mvd index에서 2를 뺀 값을 나타낸다.
실시예 4
본 실시예는 실시예 3에서 설명한 것과 같은 차분움직임벡터의 부호화 방법이 적용될 수 있다. 다만, 본 실시예에서는 영상 부호화 장치가 차분움직임벡터를 표시하기 위한 해상도로서 기 정의된 복수의 움직임벡터 해상도 중 어느 하나를 사용할 때, 소정의 오프셋을 기준으로 차분움직임벡터를 더욱 효율적으로 표시하기 위한 방법을 제안한다. 이하, 도 3을 참조하여 구체적으로 설명한다.
도 3은 본 발명의 실시예에 따른 영상 부호화 장치의 동작방법을 나타내는 흐름도이다.
영상 부호화 장치는 우선, 디폴트 해상도로 현재블록에 대한 차분움직임벡터를 결정한다(S310). 영상 부호화 장치는 결정된 차분움직임벡터의 크기(absolute value)에 따라 복수의 움직임벡터 해상도 중에서 하나 이상의 해상도 후보를 결정한다(S320). 예컨대, 복수의 움직임벡터 해상도는 1/4 픽셀 해상도, 1 픽셀 해상도 및 4 픽셀 해상도를 포함하고, 디폴트 해상도는 1/4 픽셀 해상도일 수 있다.
영상 부호화 장치는 복수의 움직임벡터 해상도 각각에 대응하는 오프셋을 설정할 수 있다. 여기서, 오프셋은 영상 부호화 장치와 영상 복호화 장치가 공유하는 기 결정된 디폴트 값일 수 있고, 또는 영상 부호화 장치가 결정하여 SPS, PPS, 슬라이스 헤더 등과 같은 헤더 정보로서 영상 복호화 장치에 시그널링하는 값일 수도 있다. 예를 들어, 복수의 움직임벡터 해상도로 1/4 픽셀 해상도, 1 픽셀 해상도 및 4 픽셀 해상도를 이용하는 경우, 1/4 픽셀 해상도를 위한 오프셋으로 "α"을, 1 픽셀 해상도를 위한 오프셋으로 "β”을 및 4 픽셀 해상도를 위한 오프셋으로"γ"를 설정할 수 있다.
영상 부호화 장치는 결정된 차분움직임벡터의 크기(absolute value) 및 소정의 오프셋 값에 따라 복수의 움직임벡터 해상도 중에서 하나 이상의 해상도 후보를 결정할 수 있다. 예컨대, 결정된 차분움직임벡터의 크기(absolute value)가 "α"이상 "β"이하인 경우에는 1/4 픽셀 해상도를 해상도 후보로 결정하고, "β"초과 "γ"이하인 경우에는 1/4 픽셀 해상도 및 1 픽셀 해상도를 해상도 후보로 결정하며, "γ"초과인 경우에는 1/4 픽셀 해상도, 1 픽셀 해상도, 및 4 픽셀 해상도를 해상도 부호로 결정할 수 있다.
영상 부호화 장치는 하나 이상의 해상도 후보 중에서 결정된 차분움직임벡터를 표현할 해상도를 선택한다(S330). 이 때, 영상 부호화 장치는 RDO(Rate Distortion Optimization)에 근거하여 결정된 차분움직임벡터를 표현하기 위한 해상도를 선택한다. 예를 들어, 해상도 후보가 1/4 픽셀 해상도, 제1 픽셀 해상도 및 4 픽셀 해상도인 경우, 세 가지 해상도 후보에 대한 RDO를 기준으로 한 평가에 의해 차분움직임벡터를 위한 하나의 최종 해상도를 선택한다.
영상 부호화 장치는 선택된 해상도에 대응하는 함수를 결정된 차분움직임벡터에 적용하여 현재블록의 차분움직임벡터로서 부호화할 값을 연산한다(S340). 영상 부호화 장치는 단계 S340에서 연산된 값을 차분움직임벡터 정보로서 부호화하고, 복수의 움직임벡터 해상도 중 선택된 해상도를 나타내기 위한 해상도 정보를 부호화한다(S350).
단계 S340에 대하여 구체적으로 설명하면 다음과 같다. 영상 부호화 장치는 단계 S310에서 결정된 차분움직임벡터를 단계 S330에서 선택된 해상도의 차분움직임벡터로 표현하고, 선택된 해상도로 표현된 차분움직임벡터와 선택된 해상도에 대응하는 오프셋을 이용하여 현재블록의 차분움직임벡터로서 부호화할 값을 연산한다.
본 실시예에서는 복수의 모든 해상도에 대해 동일한 하나의 방법으로 차분움직임벡터에 대응하는 부호화할 값을 연산한다. 차분움직임벡터에 대응하는 부호화할 값은 차분움직임벡터 인덱스(mvd _index)를 의미하며, 차분움직임벡터 인덱스(mvd_index)를 구하는 공식은 수학식 2 및 수학식 3과 같다.
Figure 112022102694987-pat00002
Figure 112022102694987-pat00003
수학식 2 및 수학식 3에서 mvd _resolution 은 선택된 해상도, mvd_resolution_offset 은 선택된 해상도에 대응하는 오프셋, mvd 는 선택된 해상도로 표현된 차분움직임벡터, mvd _index 는 부호화할 값을 나타낸다.
영상 부호화 장치는 선택된 해상도로 표현된 차분움직임벡터로부터 선택된 해상도에 대응하는 오프셋을 감산하고, 오프셋이 감산된 값을 선택된 해상도로 나누어 현재블록의 차분움직임벡터로서 부호화할 값을 연산할 수 있다. 예컨대, 디폴트 해상도는 1/4 픽셀 해상도, 대체 해상도는 1 픽셀 해상도 및 4 픽셀 해상도로 설정되고, 오프셋 값은 α=0, β=1, γ=4으로 설정된 상태에서, 결정된 차분움직임벡터가 8.75 이었다고 가정하자. 해당 차분움직임벡터를 1/4 픽셀 해상도로 표시하면 현재블록의 차분움직임벡터로서 부호화할 값은 (8.75-0)/(1/4) = 35이고, 1 픽셀 해상도로 표시하면 현재블록의 차분움직임벡터로서 부호화할 값은 (9-1)/(1) = 8이고, 4 픽셀 해상도로 표시하면 현재블록의 차분움직임벡터로서 부호화할 값은 (8-4)/(4) = 1이 된다. 여기서, 8.75, 9, 및 8은 선택된 해상도로 표현된 차분움직임벡터로써, 실시예 3에서 언급한 차분움직임벡터 절대값에 버림, 반올림, 올림 중 어느 하나를 적용하여 해상도의 배수가 되도록 구한 값이다. 이에 대한 또 다른 예시는 표 13을 참조하여 후술한다.
표 13은 전술한 표 12와 동일한 quarter-pixel mvd에 대하여 본 실시예에 따라 계산한 비트수의 일례를 나타낸다. 표 13에서 디폴트 해상도는 1/4 픽셀 해상도, 대체 해상도는 1 픽셀 해상도 및 4 픽셀 해상도로 설정되고 오프셋 값은 α=0, β=10, γ=20으로 설정되었다. quarter-pixel mvd 값들 중 {0, 0.75, -2.25, 10.00}에 대해서는 1/4 픽셀 해상도를 적용하였고, {-15.75, 19.50}에 대해서는 1 픽셀 해상도를 적용하며, {-22.50, 34.25, -43.75}에 대해서는 4 픽셀 해상도가 적용하였다. 다만, {-15.75, 19.50}에 대해서 1/4 픽셀 해상도를 적용도 가능하며, {-22.50, 34.25, -43.75}에 대해서는 1/4 픽셀 해상도 및 1 픽셀 해상도 적용도 가능하다. 이에 대한 결정은 영상 부호화 장치가 RDO에 근거하여 결정된 차분움직임벡터를 표현하기 위한 해상도를 선택한다.
quarter-pixel mvd 0 0.75 -2.25 10.00 -15.75 19.50 -22.50 34.25 -43.75
mvd index 0
(0-0)x 4
3
(0.75-0)x4
9
(2.25-0)x4
40
(10.00-0)x4
6
(16-
10)/1
10
(20-
10)/1
1
(24-20)/4
4
(36-
20
)/4
6
(44-20
)/4
abs_mvd_greater0_flag 0 1 1 1 1 1 1 1 1
abs_mvd_greater1_flag - 1 1 1 1 1 0 1 1
abs_ mvd _ minus2 - 2 bits (1) 6 bits (7) 10 bits (38) 4
bits
(4)
6 bits
(8)
- 4 bits (2) 4
bits (4)
mvd _sign_flag - 0 1 0 1 0 1 0 1
1 st bin
(quarter or integer)
- 0 0 0 1 1 1 1 1
2 nd bin (1 or 4) - - - - 0 0 1 1 1
Total bits 1 bit 6 bits 10
bits
14 bits 9
bits
11 bits 5
bits
9 bits 9
bits
표 13의 quarter-pixel mvd는 디폴트 해상도로 결정된 현재블록에 대한 차분움직임벡터를 나타내고, mvd index는 현재블록의 차분움직임벡터 정보로서 부호화할 값인 차분움직임벡터 인덱스를 나타낸다. mvd index는 선택된 해상도, 선택된 해상도로 표현된 차분움직임 벡터, 및 선택된 해상도에 대응하는 오프셋을 이용하여 연산될 수 있다.
우선 디폴트 해상도로 결정된 차분움직임벡터(이하, quarter-pixel mvd)를 선택된 해상도로 표현하는 방법은 다음과 같다. 1/4 픽셀 해상도가 선택된 경우에는 quarter-pixel mvd의 절대값을 그대로 유지하고, 1 픽셀 해상도가 선택된 경우에는 quarter-pixel mvd의 절대값에 버림, 반올림, 올림 중 어느 하나를 적용하여 1의 배수가 되도록 구한 결과값으로, 차분움직임벡터를 표현한다. 한편, 4 픽셀 해상도가 선택된 경우에는 quarter-pixel mvd의 절대값에 버림, 반올림, 올림 중 어느 하나를 적용하여 4의 배수가 되도록 구한 결과값으로, 차분움직임벡터를 표현한다.
mvd index는 수학식 2와 같이 선택된 해상도로 표현된 차분움직임벡터로부터 선택된 해상도에 대응하는 오프셋을 감산하고 오프셋이 감산된 값을 선택된 해상도로 나누어 연산될 수 있다. 예를 들어, quarter-pixel mvd "-22.50"를 4 픽셀 해상도로 표현하는 경우, 4 픽셀 해상도로 표현된 차분움직임벡터(four-pixel mvd)의 절대값 "24"에서 4 픽셀 해상도에 대응하는 오프셋(γ) "20"을 감산하여 오프셋이 감산된 값 "4"를 얻고, 이를 선택된 해상도인 4로 나누면 "1" 값을 갖는 mvd index가 연산된다. 나머지 경우에 대한 mvd index의 연산 과정은 표 13의 mvd index 값 아래 괄호 안에 기재되어 있다.
표 13과 전술한 실시예 3에서의 표 12를 비교하면, 1 픽셀 해상도 및 4 픽셀 해상도가 적용되는 차분움직임벡터 값들 전부에 대하여 계산된 비트수가 실시예 3에 따라 계산된 비트수보다 절감된 것을 확인할 수 있다.
mvd index 연산방법의 다른 예로서, 수학식 3과 같이 영상 부호화 장치는 선택된 해상도로 표현된 차분움직임벡터를 선택된 해상도로 먼저 나누고, 선택된 해상도로 나누어진 값으로부터 선택된 해상도에 대응하는 오프셋을 감산하여 현재블록의 차분움직임벡터로서 부호화할 값으로서 mvd index를 연산할 수도 있다.
실시예 5
본 실시예는 실시예 3에서 설명한 것과 같은 차분움직임벡터의 부호화 방법이 적용될 수 있다. 본 실시예에서는 영상 부호화 장치가 기 정의된 복수의 움직임벡터 해상도 별로 차분움직임벡터 크기들(absolute values)에 효율적으로 차분움직임벡터 인덱스(mvd index)를 매핑하고, 매핑된 인덱스(mvd index)를 현재블록의 차분움직임벡터로서 부호화하는 방법을 제안한다.
실시예에 따른 영상 부호화 장치에도 도 3을 참조하여 설명한 일부 단계가 동일하게 적용된다. 다만, 단계 S320의 해상도 후보 결정방법과 단계 S340의 현재블록의 차분움직임벡터로서 부호화할 값을 연산하는 방법에 차이가 있다.
우선, 영상 부호화 장치가 디폴트 해상도로 결정된 차분움직임벡터의 크기(absolute value)에 따라 복수의 움직임벡터 해상도 중에서 하나 이상의 해상도 후보를 선택하는 방법에 대하여 설명한다. 디폴트 해상도로 결정된 현재블록에 대한 차분움직임벡터의 값이 대체 해상도의 배수인 경우에 디폴트 해상도 보다는 대체 해상도로 차분움직임벡터를 표현하는 것이 비트량 측면에서 유리할 수 있다. 본 실시예에서는 결정된 차분움직임벡터 크기(absolute value)가 제1 대체 해상도의 배수인 경우 제1 대체 해상도를 해상도 후보로 결정하고, 제2 대체 해상도의 배수인 경우 제2 대체 해상도를 해상도 후보로 결정하며, 제1 및 제2 대체 해상도의 배수가 아닌 경우 제1 대체 해상도, 제2 대체 해상도 및 디폴트 해상도를 해상도 후보로 결정할 수 있다. 여기서, 대체 해상도의 개수는 위의 예시처럼 3가지로 한정되지 않는다. 일반적인 경우, 제1 대체 해상도는 복수의 대체 해상도들 중에서 가장 큰 수치의 해상도를 의미할 수 있다. 즉, 대체 해상도의 크기가 큰 순서대로 제1 대체 해상도, 제2 대체 해상도, 제3 대체 해상도 등이 지정될 수 있다.
예를 들어, 복수의 움직임벡터 해상도는 1/4 픽셀 해상도, 1 픽셀 해상도 및 4 픽셀 해상도를 포함하고, 디폴트 해상도는 1/4 픽셀 해상도이며, 제1 대체 해상도는 4 픽셀 해상도, 제2 대체 해상도는 1 픽셀 해상도일 수 있다. 디폴트 해상도로 결정된 차분움직임벡터의 크기(absolute value)가 제1 대체 해상도의 배수인 4, 8, 12, … 경우, 4 픽셀 해상도를 해상도 후보로 결정하고, 디폴트 해상도로 결정된 차분움직임벡터의 크기(absolute value)가 제 2 대체 해상도의 배수인 1, 2, 3, 5, 6, … 인 경우, 1 픽셀 해상도를 해상도 후보로 결정하며, 그 이외의 차분움직임벡터의 크기(absolute value)에 대해서는 디폴트 해상도, 제1 대체 해상도, 및 제2 대체 해상도를 해상도 후보로 결정한다. 즉. 결정된 차분움직임벡터의 크기가 4의 배수인 경우에는, 디폴트 해상도인 1/4 픽셀 해상도로 표현하기 보다는 제1 대체 해상도인 4 픽셀로 표현하는 것이 결정된 차분움직임벡터의 크기에 대한 손실 없이 가장 적은 비트로 표현할 수 있는 방법이 된다.
영상 부호화 장치는 전술한 예의 특성을 최대한 활용하여 기 정의된 복수의 움직임벡터 해상도 중에 특정 차분움직임벡터 크기들(absolute values)에 최적인 움직임벡터 해상도에 근거하여 복수의 움직임벡터 해상도를 위한 차분움직임벡터 인덱스(mvd index)를 효율적으로 매핑한다. 구체적으로, 특정 차분움직임벡터 크기들(absolute values)을 각각 최적의 움직임벡터 해상도로만 표현할 수 있도록 제한하여 복수의 움직임벡터 해상도에 대응하는 인덱스를 설정한다.
영상 부호화 장치는 선택된 해상도로 표현된 차분움직임벡터 크기들에 오름차순으로 1씩 증가하는 인덱스를 부여한다. 전술한 예와 같이 복수의 움직임벡터 해상도가 1/4 픽셀 해상도, 1 픽셀 해상도 및 4 픽셀 해상도이고, 디폴트 해상도가 1/4 픽셀 해상도인 경우의 차분움직임벡터 크기들(absolute values) 및 인덱스는 표 14와 같다.
mvd
index (Q)
Quarter-pixel
mvd
mvd
index (O)
One-pixel
mvd
mvd
index (F)
Four-pixel
mvd
0 0.00
1 0.25
2 0.50
3 0.75
- - 1 1
4 1.25
5 1.50
6 1.75
- - 2 2
7 2.25
8 2.50
9 2.75
- - 3 3
10 3.25
11 3.50
12 3.75
- - - - 1 4
13 4.25
14 4.50
15 4.75
- - 4 5
... ...
- - 2 8
... ...
1/4 픽셀 해상도에 속하는 차분움직임벡터 크기들에는 인덱스(Q)가 부여되고, 1 픽셀 해상도에 속하는 차분움직임벡터 크기들에는 인덱스(O)가 부여되며, 4 픽셀 해상도에 속하는 차분움직임벡터 크기들에는 인덱스(F)가 부여된다. 인덱스(Q)는 0부터 시작하고 인덱스(O) 및 인덱스(F)는 1부터 시작한다. 전술한 표 1에서의 인덱스 부여방법에 따르면, "1.25"의 값을 갖는 디폴트 해상도로 결정된 차분움직임벡터의 크기에는 인덱스"5"가 부여되지만, 본 실시예에 따르면 인덱스 "4"가 부여된다. 여기서, 차분움직임벡터 인덱스는 결정된 차분움직임벡터에 대응하는 부호화할 값이다. 다시 말해, 차분움직임벡터 인덱스는 차분움직임벡터 정보로서 부호화되는 값이다.
영상 부호화 장치는 선택된 해상도에 대응하는 함수를 디폴트 해상도로 결정된 차분움직임벡터에 적용하여 현재블록의 차분움직임벡터로서 부호화할 값을 연산한다. 구체적으로, 영상 부호화 장치는 선택된 해상도로 차분움직임벡터 크기(absolute value)를 표현하고, 선택된 해상도로 표현된 차분움직임벡터 크기에 부여할 인덱스를 결정한다. 결정된 인덱스는 현재블록의 차분움직임벡터로서 부호화할 값이 된다.
각각의 차분움직임벡터 인덱스를 구하는 공식은 수학식 4 내지 수학식 6과 같다.
Figure 112022102694987-pat00004
Figure 112022102694987-pat00005
Figure 112022102694987-pat00006
여기서, int _value는 결정된 차분움직임벡터의 값의 정수 부분, point_value는 소수 부분을 의미한다. 그리고 는 바닥 함수(floor function)를 나타내고, %는 나머지 연산자(modulus operator)를 나타낸다.
표 14에 기재된 "Quarter-pixel mvd", "One-pixel mvd" 및 "Four-pixel mvd"는 선택되는 해상도를 나타내는 것이고, 해당 열에 나열된 차분움직임벡터 크기들은 모두 디폴트 해상도(1/4 픽셀 해상도)로 표현된 값들이다.
표 15는 여러 가지 quarter-pixel mvd에 대하여 복수의 해상도 중에서 특정 해상도를 선정하여 실시예 3에 따라 계산한 비트수를 나타낸다. 표 16은 표 15와 동일한 quarter-pixel mvd에 대하여 동일한 해상도를 선정하여 본 실시예에 따라 계산한 비트수를 나타낸다.
quarter-pixel mvd 0 0.75 -2.25 10.00 -15.75 19.50 -22.50 34.25 -43.75
mvd index 0 3 9 10
(10)
63 78 23
(23)
34
(34)
11
(44)
abs_mvd_greater0_flag 0 1 1 1 1 1 1 1 1
abs_mvd_greater1_flag - 1 1 1 1 1 1 1 1
abs_ mvd _ minus2 - 2 bits (1) 6 bits (7) 6 bits (8) 10 bits
(61)
12 bits
(76)
8
bits
(21)
10 bits (32) 6
bits (9)
mvd _sign_flag - 0 1 0 1 0 1 0 1
1 st bin
(quarter or integer)
- 0 0 1 0 0 1 1 1
2 nd bin (1 or 4) - - - 0 - - 0 0 1
Total bits 1 bit 6 bits 10
bits
11 bits 14 bits 16 bits 13 bits 15 bits 11 bits
quarter-pixel mvd 0 0.75 -2.25 10.00 -15.75 19.50 -22.50 34.25 -43.75
mvd index 0 3 7 8
(10)
48 59 18
(23)
26
(34)
11 (44)
abs_mvd_greater0_flag 0 1 1 1 1 1 1 1 1
abs_mvd_greater1_flag - 1 1 1 1 1 1 1 1
abs_ mvd _ minus2 - 2 bits (1) 4 bits (5) 6
bits (6)
10 bits
(46)
10 bits
(57)
8
bits
(16)
8 bits (24) 6
bits (9)
mvd _sign_flag - 0 1 0 1 0 1 0 1
1 st bin (quarter or integer) - 0 0 1 0 0 1 1 1
2 nd bin (1 or 4) - - - 0 - - 0 0 1
Total bits 1 bit 6 bits 8 bits 11 bits 14 bits 14 bits 13 bits 13 bits 11 bits
표 15 및 표 16에서는 1의 배수인 quarter-pixel mvd {10.00}에 대해서 1 픽셀 해상도를 적용하였고, quarter-pixel mvd {-22.50, 34.25}에 대해서 임의로 1 픽셀 해상도를 적용하였으며, 절대값이 "40"이 넘는 quarter-pixel mvd에 대해서는 임의로 4 픽셀 해상도를 적용하였으며, 그 밖의 quarter-pixel mvd에 대해서는 1/4 픽셀 해상도를 적용하였다. 표 16과 표 15를 비교하면, 본 실시예에 따른 인덱스 부여 방법에 따라 부여된 차분움직임벡터 인덱스(mvd index) 값을 부호화하는 데 필요한 비트수의 일부가 실시예 3에 비하여 절감된 것을 확인할 수 있다. 동일한 quarter-pixel mvd에 대하여 실시예 3과 실시예 5의 mvd index 및 해당 mvd index를 표현하기 위한 총 비트수를 간략하게 비교한 결과는 표 17과 같다.
quarter-pixel
mvd
실시 예 3 실시 예 5 Difference
mvd index Total bits mvd index Total bits
0.00 0 1 0 1 0
0.25 1 4 1 4 0
0.50 2 6 2 6 0
0.75 3 6 3 6 0
1.00 1 5 0 4 -1
1.25 5 8 4 8 0
1.50 6 8 5 8 0
1.75 7 8 6 8 0
2.00 2 7 1 5 -2
2.25 9 10 7 8 -2
2.50 10 10 8 10 0
2.75 11 10 9 10 0
3.00 3 7 2 7 0
3.25 13 10 10 10 0
3.50 14 10 11 10 0
3.75 15 10 12 10 0
4.00 1 5 0 4 -1
4.25 17 12 13 10 -2
4.50 18 12 14 10 -2
4.75 19 12 15 10 -2
5.00 5 9 3 7 -2
5.25 21 12 16 12 0
5.50 22 12 17 12 0
5.75 23 12 18 12 0
6.00 6 9 4 9 0
표 17을 보면, quarter-pixel mvd의 값이 증가할수록 본 실시예의 mvd index 값이 실시예 3의 mvd index 값에 비하여 작아지며, 이에 따라 해당 mvd index를 표현하기 위한 비트수가 적어지는 것을 확인할 수 있다.
이하, 도 4 내지 도 6을 참조하여 전술한 실시예들에 따른 영상 복호화 장치에 대하여 설명한다. 도 4는 본 발명의 실시예에 따른 영상 복호화 장치에 대한 블록도이다.
영상 복호화 장치(400)는 복호화부(410), 역양자화부(420), 역변환부(430), 예측부(440), 가산기(450), 필터부(460) 및 메모리(470)를 포함한다. 도 4에 도시된 구성요소들은 하드웨어 칩으로 구현될 수 있으며, 또는 소프트웨어로 구현되고 마이크로프로세서가 각 구성요소에 대응하는 소프트웨어의 기능을 실행하도록 구현될 수도 있다.
복호화부(410)는 영상 부호화 장치로부터 수신한 비트스트림을 복호화하여 블록분할과 관련된 정보를 추출하여 복호화하고자 하는 현재블록을 결정하고, 현재블록을 복원하기 위해 필요한 예측정보와 잔차신호에 대한 정보 등을 추출한다.
복호화부(410)는 SPS (Sequence Parameter Set) 또는 PPS (Picture Parameter Set)로부터 CTU size에 대한 정보를 추출하여 CTU의 크기를 결정하고, 픽처를 결정된 크기의 CTU로 분할한다. 그리고 CTU를 트리 구조의 최상위 레이어, 즉, 루트 노드로 결정하고, CTU에 대한 분할 정보를 추출함으로써 CTU를 트리 구조를 이용하여 분할한다. 예컨대, QTBT 구조를 사용하여 CTU를 분할하는 경우, 먼저 QT의 분할과 관련된 제1 플래그(QT_split_flag)를 추출하여 각 노드를 하위 레이어의 네 개의 노드로 분할한다. 그리고, QT의 리프 노드에 해당하는 노드에 대해서는 BT의 분할과 관련된 제2 플래그(BT_split_flag) 및 분할 타입 정보를 추출하여 해당 리프 노드를 BT 구조로 분할한다.
복호화부(410)는 트리 구조의 분할을 통해 복호화하고자 하는 현재블록(현재블록)을 결정하게 되면, 현재블록이 인트라 예측되었는지 아니면 인터 예측되었는지를 지시하는 예측 타입에 대한 정보를 추출한다.
예측 타입 정보가 인터 예측을 지시하는 경우, 복호화부(410)는 인터 예측정보에 대한 신택스 요소를 추출한다. 먼저, 현재블록의 움직임정보가 복수의 부호화 모드 중 어느 모드에 의해 부호화되었는지 여부를 지시하는 모드 정보를 추출한다. 여기서, 복수의 부호화 모드는 머지 모드 및 차분움직임벡터 부호화 모드를 포함한다. 모드 정보가 머지 모드를 지시하는 경우, 복호화부(410)는 머지 후보들 중 어느 후보로부터 현재블록의 움직임벡터를 유도할지 여부를 지시하는 머지 인덱스 정보를 움직임정보에 대한 신택스 요소로서 추출한다.
반면, 모드 정보가 차분움직임벡터 부호화 모드를 지시하는 경우, 복호화부(410)는 차분움직임벡터에 대한 정보 및 현재블록의 움직임벡터가 참조하는 참조 픽처에 대한 정보를 움직임벡터에 대한 신택스 요소로서 추출한다. 본 발명의 실시예에 따른 복호화부(410)는 현재블록의 차분움직임벡터 정보를 복호화함으로써 결정된 값(이하, '차분움직임벡터 인덱스'라 칭함)를 결정하고, 차분움직임벡터의 해상도를 나타내는 해상도 정보를 복호화함으로써 복수의 움직임벡터 해상도 중에서 차분움직임벡터의 해상도를 선택한다. 그리고 복호화부(410)는 차분움직임벡터 인덱스(mvd_index)에 선택된 해상도에 대응하는 함수를 적용하여 현재블록의 차분움직임벡터를 복원한다. 한편, 영상 부호화 장치가 복수의 예측 움직임벡터 후보들 중에서 어느 하나의 후보를 현재블록의 예측 움직임벡터로 사용한 경우에는 예측 움직임벡터 식별정보가 비트스트림에 포함된다. 따라서 이 경우에는, 차분움직임벡터에 대한 정보와 참조 픽처에 대한 정보뿐만 아니라 예측 움직임벡터 식별정보도 움직임벡터에 대한 신택스 요소로서 추출한다.
한편, 복호화부(410)는 잔차신호에 대한 정보로서 현재블록의 양자화된 변환계수들에 대한 정보를 추출한다.
역양자화부(420)는 양자화된 변환계수들을 역양자화하고, 역변환부(430)는 역양자화된 변환계수들을 주파수 도메인으로부터 공간 도메인으로 역변환하여 잔차신호들을 복원함으로써 현재블록에 대한 잔차블록을 생성한다.
예측부(440)는 인트라 예측부(442) 및 인터 예측부(444)를 포함한다. 인트라 예측부(442)는 현재블록의 예측 타입인 인트라 예측일 때 활성화되고, 인터 예측부(444)는 현재블록의 예측 타입인 인트라 예측일 때 활성화된다.
인트라 예측부(442)는 복호화부(410)로부터 추출된 인트라 예측 모드에 대한 신택스 요소로부터 복수의 인트라 예측 모드 중 현재블록의 인트라 예측 모드를 결정하고, 인트라 예측 모드에 따라 현재블록 주변의 참조 픽셀들을 이용하여 현재블록을 예측한다.
인터 예측부(444)는 복호화부(410)로부터 추출된 인터 예측 모드에 대한 신택스 요소를 이용하여 현재블록의 움직임정보를 결정하고, 결정된 움직임정보를 이용하여 현재블록을 예측한다.
먼저, 인터 예측부(444)는 복호화부(410)로부터 추출된 인터 예측에서의 모드 정보를 확인한다. 모드 정보가 머지 모드를 지시하는 경우, 인터 예측부(444)는 현재블록의 주변블록을 이용하여 기 결정된 개수의 머지 후보를 포함하는 머지 리스트를 구성한다. 인터 예측부(444)가 머지 리스트를 구성하는 방법은 영상 부호화 장치의 인터 예측부(424)와 동일하다. 그리고, 복호화부(410)로부터 전달된 머지 인덱스 정보를 이용하여 머지 리스트 내의 머지 후보들 중에서 하나의 머지 후보를 선택한다. 그리고 선택된 머지 후보의 움직임정보, 즉, 머지 후보의 움직임벡터와 참조 픽처를 현재블록의 움직임벡터와 참조픽처로 설정한다.
반면, 모드 정보가 차분움직임벡터 부호화 모드를 지시하는 경우, 인터 예측부(444)는 현재블록의 주변블록들의 움직임벡터를 이용하여 예측움직임벡터 후보들을 유도하고, 예측움직임벡터 후보들을 이용하여 현재블록의 움직임벡터에 대한 예측움직임벡터를 결정한다. 인터 예측부(444)가 예측움직임벡터 후보들을 유도하는 방법은 영상 부호화 장치의 인터 예측부(424)가 예측움직임벡터 후보들을 유도하는 방법과 동일하다. 만약, 영상 부호화 장치가 복수의 예측움직임벡터 후보들 중에서 어느 하나의 후보를 현재블록의 예측움직임벡터로 사용한 경우에는 움직임정보에 대한 신택스 요소는 예측움직임벡터 식별정보를 포함한다. 따라서, 이 경우에, 인터 예측부(444)는 예측움직임벡터 후보들 중 예측움직임벡터 식별정보에 의해 지시되는 후보를 예측움직임벡터로 선택할 수 있다. 그러나, 영상 부호화 장치가 복수의 예측움직임벡터 후보들에 기 정의된 함수를 사용하여 예측움직임벡터를 결정한 경우에는, 인터 예측부(444)는 영상 부호화 장치와 동일한 함수를 적용하여 예측움직임벡터를 결정할 수도 있다. 현재블록의 예측움직임벡터가 결정되면, 인터 예측부(444)는 예측움직임벡터와 복호화부(410)로부터 전달된 차분움직임벡터를 가산하여 현재블록의 움직임벡터를 결정한다. 그리고 복호화부(410)로부터 전달된 참조픽처에 대한 정보를 이용하여 현재블록의 움직임벡터가 참조하는 참조픽처를 결정한다.
머지 모드 또는 차분움직임벡터 부호화 모드에서 현재블록의 움직임벡터와 참조픽처가 결정되면, 인터 예측부(442)는 참조픽처 내에서 움직임벡터가 지시하는 위치의 블록을 이용하여 현재블록의 예측블록을 생성한다.
가산기(450)는 역변환부(430)로부터 출력되는 잔차블록과 인터 예측부(444) 또는 인트라 예측부(442)로부터 출력되는 예측블록을 가산하여 현재 블록을 복원한다. 복원된 현재 블록 내의 픽셀들은 이후에 복호화할 블록을 인트라 예측할 때의 참조픽셀로서 활용된다.
필터부(460)는 블록 단위의 복호화로 인해 발생하는 블록킹 현상(blocking artifact)를 제거하기 위해 복원된 블록 간의 경계를 디블록킹 필터링하고 메모리(470)에 저장한다. 한 픽처 내의 모든 블록들이 복원되면, 복원된 픽처는 이후에 복호화하고자 하는 픽처 내의 블록을 인터 예측하기 위한 참조 픽처로 사용된다.
이하, 도 5를 참조하여 본 발명의 실시예 4 및 5에 따른 영상 복호화 장치에 대하여 구체적으로 설명한다. 도 5는 본 발명의 실시예에 따른 영상 복호화 장치의 동작방법을 나타내는 흐름도이다.
도 5를 참조하면, 영상 복호화 장치는 비트스트림으로부터 현재블록의 차분움직임벡터 정보를 복호화한다(S510). 차분움직임벡터 정보는, 차분움직임벡터 인덱스(mvd_index) 값을 지시한다.
영상 복호화 장치는 차분움직임벡터의 해상도를 나타내는 해상도 정보를 복호화함으로써 복수의 움직임벡터 해상도 중에서 하나의 해상도를 선택한다(S520). 복수의 움직임벡터 해상도는 기 정의될 수 있으며, 디폴트 해상도 및 디폴트 해상도를 대체할 다른 해상도(즉, 대체 해상도)들이 포함될 수 있다. 여기서, 디폴트 해상도 및 대체 해상도들은 영상 부호화 장치와 영상 복호화 장치가 공유하는 기 결정된 특정 움직임벡터 해상도일 수 있고, 또는 영상 부호화 장치가 상위 레벨 영상 영역(예: 영상 시퀀스, 픽처, 슬라이스, CTU 등)에서 결정하여 영상 복호화 장치로 시그널링하는 값일 수도 있다.
예를 들어, 디폴트 해상도가 1/4 픽셀 해상도로 정의되고, 대체 해상도들은 1 픽셀 해상도 및 4 픽셀 해상도로 정의되면, 영상 복호화 장치는 차분움직임벡터의 해상도를 지시하는 정보로서, 움직임벡터 해상도가 1/4 픽셀 해상도인지 정수 픽셀 해상도인지를 나타내는 정보 및 정수 픽셀 해상도라면 1 픽셀 해상도인지 4 픽셀 해상도인지를 나타내는 정보를 복호화한다. 이하, 움직임벡터 해상도가 1/4 픽셀 해상도인지 정수 픽셀 해상도인지를 나타내는 정보로서 복호화되는 신택스 요소를 first_bin, 움직임벡터 해상도가 1 픽셀 해상도인지 4 픽셀 해상도인지를 나타내는 정보로서 복호화되는 신택스 요소를 second_ bin이라 칭한다.
이 경우, first_bin의 값이 "0"으로 복호화되면 1/4 픽셀 해상도로 차분움직임벡터가 표현되고, "1"로 복호화되면 second_bin이 추가적으로 복호화된다. second_bin의 값이 "0"으로 복호화되면 1 픽셀 해상도로 차분움직임벡터가 표현되고, "1"로 복호화되면 4 픽셀 해상도로 차분움직임벡터가 표현된다.
다른 예로, 영상 복호화 장치는 차분움직임벡터의 해상도를 지시하는 정보로서 mvd _resolution_flag를 복호화할 수 있다. mvd _resolution_flag가 TU(Truncated Unary) 방식(Max=2)으로 이진화되면, mvd _resolution_flag의 값이"0"으로 복호화되는 경우에는 차분움직임벡터를 1/4 픽셀 해상도로 표현하고, mvd_resolution_flag의 값이 "10"으로 복호화되는 경우에는 차분움직임벡터를 1 픽셀 해상도로 표현하며, mvd _resolution_flag의 값이 "11"로 복호화되는 경우에는 차분움직임벡터를 4 픽셀 해상도로 표현할 수 있다.
해상도 정보는 차분움직임벡터의 x 컴포넌트 및 y 컴포넌트 각각에 대하여 복호화될 수 있고, 또는 x 컴포넌트 및 y 컴포넌트에 대하여 동일한 차분움직임벡터의 해상도를 복호화될 수 있다.
영상 복호화 장치는 차분움직임벡터 정보에 의해 결정된 값(즉, 차분움직임벡터 인덱스)에 선택된 해상도에 대응하는 함수를 적용하여 현재블록의 차분움직임벡터를 복원한다(S530).
실시예 3에 따른 영상 복호화 장치의 차분움직임벡터 복호화 방법(S530)은 다음과 같다. 영상 복호화 장치는 차분움직임벡터 인덱스에 선택된 해상도를 곱하여 현재블록의 차분움직임벡터를 복원한다.
현재블록의 차분움직임벡터를 복원하기 위한 함수의 일례는 수학식 7과 같다. 수학식 7은 1/4 픽셀 해상도, 1 픽셀 해상도, 및 4 픽셀 해상도가 선택된 경우에 모두 적용될 수 있는 함수이다.
Figure 112022102694987-pat00008
수학식 7에서 mvd 는 복원된 현재블록의 차분움직임벡터를 나타내고, mvd_index 는 복호화된 차분움직임벡터 인덱스를 나타내며, mvd _resolution_는 해상도 정보를 나타낸다.
실시예 4에 따른 영상 복호화 장치의 차분움직임벡터 복호화 방법(S530)은 다음과 같다. 영상 복호화 장치는 우선 차분움직임벡터 인덱스에 선택된 해상도를 곱한다. 그리고 선택된 해상도로 곱해진 값에 선택된 해상도에 대응하는 오프셋을 가산하여 현재블록의 차분움직임벡터를 복원한다. 여기서, 오프셋은 영상 부호화 장치와 영상 복호화 장치가 공유하는 기 결정된 디폴트 값일 수 있고, 또는 영상 부호화 장치가 결정하여 SPS, PPS, 슬라이스 헤더 등과 같은 헤더 정보로서 영상 복호화 장치에 시그널링하는 값일 수도 있다.
예를 들어, 복수의 움직임벡터 해상도로 1/4 픽셀 해상도, 1 픽셀 해상도 및 4 픽셀 해상도를 이용하는 경우, 각 해상도에 대응하는 오프셋 "α”, "β" 및 "γ" (단, α < β < γ임)를 설정할 수 있다.
현재블록의 차분움직임벡터를 복원하기 위한 함수의 일례는 수학식 8와 같다. 수학식 8은 1/4 픽셀 해상도, 1 픽셀 해상도 및 4 픽셀 해상도가 선택된 경우 모두에 적용되는 함수이다.
Figure 112022102694987-pat00009
수학식 8에서 mvd 는 복원된 현재블록의 차분움직임벡터를 나타내고, mvd_index 는 복호화된 차분움직임벡터 인덱스를 나타내며, mvd _resolution 은 해상도 정보를 나타내며, mvd _resolution_offset 은 해상도에 대응하는 오프셋을 나타낸다. 여기서, 해상도가 1/4 픽셀인 경우 오프셋은 "α", 1 픽셀인 경우 오프셋은 "β", 4 픽셀인 경우 오프셋은 "γ"가 될 수 있다.
다른 예로서, 영상 복호화 장치는 차분움직임벡터 인덱스에 선택된 해상도에 대응하는 오프셋을 가산하고, 오프셋이 가산된 값에 선택된 해상도를 곱함으로써, 현재블록의 차분움직임벡터를 복원할 수도 있다. 이 경우에 대한 현재블록의 차분움직임벡터를 복원하기 위한 함수의 일례는 수학식 9와 같다. 수학식 9는 1/4 픽셀 해상도, 1 픽셀 해상도, 및 4 픽셀 해상도가 선택된 경우에 모두 적용되는 함수이다.
Figure 112022102694987-pat00010
실시예 5에 따른 영상 복호화 장치의 차분움직임벡터 복호화 방법(S530)은 다음과 같다. 영상 복호화 장치는 선택된 해상도에 대응하는 함수를 복호화된 차분움직임벡터 인덱스(mvd_index)에 적용하여 현재블록의 차분움직임벡터를 복원한다. 예를 들어, 표 15와 같이 선택된 해상도에 속하는 차분움직임벡터 크기들(absolute values)에 부여된 인덱스들 중에서, 복호화된 차분움직임벡터 인덱스에 대응하는 차분움직임벡터의 크기(absolute value)를 현재블록의 차분움직임벡터로 결정할 수 있다. 전술한 바와 같이 선택된 해상도 각각에 속하는 차분움직임벡터 크기들(absolute values)에는 오름차순으로 1씩 증가하는 인덱스가 부여된다.
1/4 픽셀 해상도에 속하는 차분움직임벡터 크기들에는 인덱스(Q)가 부여되고, 1 픽셀 해상도에 속하는 차분움직임벡터 크기들에는 인덱스(O)가 부여되며, 4 픽셀 해상도에 속하는 차분움직임벡터 크기들에는 인덱스(F)가 부여된다. 인덱스(Q)는 0부터 시작하고 인덱스(O) 및 인덱스(F)는 1부터 시작하여 차분움직임벡터 크기 순으로 1씩 증가하는 인덱스가 부여된다.
전술한 표 14를 예로 들어 구체적으로 설명한다. 영상 복호화 장치가 1/4 픽셀 해상도를 선택하고, "1"의 값을 갖는 차분움직임벡터 인덱스(mvd_index)를 복호화하면, "1"값의 인덱스에 대응하는 차분움직임벡터 크기 "0.25"를 현재블록의 차분움직임벡터로 복원한다. 다른 예로, 영상 복호화 장치가 1 픽셀 해상도를 선택하고, "1"의 값을 갖는 차분움직임벡터 인덱스(mvd_index)를 복호화하면, "1"값의 인덱스에 대응하는 차분움직임벡터 크기 "1"을 현재블록의 차분움직임벡터로 복원된다. 또 다른 예로, 영상 복호화 장치가 4 픽셀 해상도를 선택하고, "1"의 값을 갖는 차분움직임벡터 인덱스(mvd_index)를 복호화하면, "1"값의 인덱스에 대응하는 차분움직임벡터 크기 "4"를 현재블록의 차분움직임벡터로 복원한다.
선택된 해상도 별로 표 14와 같이 부여된 인덱스들을 이용하여 현재블록의 차분움직임벡터를 복원하기 위한 함수는 수학식 10 내지 12와 같다. 수학식 10은 1/4 픽셀 해상도가 선택된 경우에 적용되는 함수이고, 수학식 11은 1 픽셀 해상도가 선택된 경우에 적용되는 함수이며, 수학식 12는 4 픽셀 해상도가 선택된 경우에 적용되는 함수이다. 다만, 수학식 10 내지 12는 예시에 불과하며, 차분움직임벡터의 크기(absolute value)에 차분움직임벡터 인덱스를 부여하는 본 발명의 다양한 실시예들에 따라 달라질 수 있다.
Figure 112022102694987-pat00011
Figure 112022102694987-pat00012
Figure 112022102694987-pat00013
수학식 10 내지 12에서 mvd 는 복원된 현재블록의 차분움직임벡터를 나타내고, mvd _index 는 복호화된 차분움직임벡터 인덱스를 나타낸다. 그리고 는 바닥 함수(floor function)를 나타내고, %는 나머지 연산자(modulus operator)를 나타낸다.
도 6을 참조하여 실시예 3 내지 5에 따른 영상 복호화 장치의 구체적인 동작에 대하여 설명한다. 도 6은 본 발명의 실시예에 따른 영상 복호화 장치의 구체적인 동작방법의 일례를 나타내는 흐름도이다.
영상 복호화 장치는 현재블록의 차분움직임벡터 정보를 복호화하여 차분움직임벡터 인덱스를 결정한다(S610). 영상 복호화 장치는 결정된 차분움직임벡터 인덱스 값이 "0"이 아닌지 판단하여(S612), "0"인 경우에는 현재블록의 차분움직임벡터를 "0"으로 복원한다(S614).
결정된 차분움직임벡터 인덱스 값이 "0"이 아니라면, 영상 복호화 장치는 차분움직임벡터의 해상도를 나타내는 제1 해상도 정보(예: first bin)를 복호화하고(S616), 복호화된 제1 해상도 정보가 1/4 픽셀 해상도를 지시하는지 아니면 정수 픽셀 해상도를 지시하는지를 판단한다(S618). 예를 들어, 제1 해상도 정보가 "0"으로 복호화되면 1/4 픽셀 해상도를 지시하고 "1"로 복호화되면 정수 픽셀 해상도를 지시한다고 할 때, 영상 복호화 장치는 제1 해상도 정보가 "0"으로 복호화되면 차분움직임벡터의 해상도로서 1/4 픽셀 해상도를 선택한다(S620). 그리고 영상 복호화 장치는 차분움직임벡터 인덱스에 1/4 픽셀 해상도에 대응하는 함수를 적용하여 현재블록의 차분움직임벡터를 복원한다(S622). 1/4 픽셀 해상도에 대응하는 함수는 예컨대, 수학식 8 내지 수학식 10과 같다.
단계 S618에서 제1 해상도 정보가 "0"이 아닌 "1"로 복호화되는 경우, 영상 복호화 장치는 차분움직임벡터의 해상도를 나타내는 제2 해상도 정보(예: second bin)를 복호화하고(S624), 제2 해상도 정보가 1 픽셀 해상도를 지시하는지 아니면 4 픽셀 해상도를 지시하는지를 판단한다(S626). 예를 들어, 제2 해상도 정보가 "0"으로 복호화되면 1 픽셀 해상도를 지시하고 "1"로 복호화되면 4 픽셀 해상도를 지시한다고 할 때, 영상 복호화 장치는 제2 해상도 정보가 "0"으로 복호화되면 차분움직임벡터의 해상도로서 1 픽셀 해상도를 선택한다(S628). 그리고 영상 복호화 장치는 차분움직임벡터 인덱스에 1 픽셀 해상도에 대응하는 함수를 적용하여 현재블록의 차분움직임벡터를 복원한다(S630). 1 픽셀 해상도에 대응하는 함수는 예컨대, 수학식 8, 수학식 9 및 수학식 11과 같다.
단계 626에서 제2 해상도 정보가 "0"이 아닌 "1"로 복호화되는 경우, 영상 복호화 장치는 차분움직임벡터의 해상도로서 4 픽셀 해상도를 선택하고(S632), 차분움직임벡터 인덱스에 4 픽셀 해상도에 대응하는 함수를 적용하여 현재블록의 차분움직임벡터를 복원한다(S634). 4 픽셀 해상도에 대응하는 함수는 예컨대, 수학식 8, 수학식 9 및 수학식 12와 같다.
현재블록의 차분움직임벡터가 복원되면, 영상 복호화 장치는 현재블록의 예측움직임벡터를 결정하고, 복원된 차분움직임벡터와 결정된 예측움직임벡터를 이용하여 현재블록의 움직임벡터를 복원한다(S636).
도 3, 도 5 및 도 6에서는 각 과정을 순차적으로 실행하는 것으로 기재하고 있으나, 반드시 이에 한정되는 것은 아니다. 다시 말해, 도 3, 도 5 및 도 6에 기재된 과정을 변경하여 실행하거나 하나 이상의 과정을 병렬적으로 실행하는 것으로 적용 가능할 것이므로, 도 3, 도 5 및 도 6은 시계열적인 순서로 한정되는 것은 아니다.
도 3, 도 5 및 도 6에 기재된 본 실시예에 따른 영상 부호화 또는 복호화 방법은 컴퓨터 프로그램으로 구현되고 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다. 본 실시예에 따른 영상 부호화 또는 복호화 방법을 구현하기 위한 컴퓨터 프로그램이 기록되고 컴퓨터가 읽을 수 있는 기록매체는 컴퓨팅 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (11)

  1. 현재블록의 움직임벡터를 부호화하는 방법에 있어서,
    복수의 움직임벡터 해상도 중에서 상기 현재블록의 차분움직임벡터에 대한 해상도를 선택하는 단계, 상기 복수의 움직임벡터 해상도는 디폴트 해상도 및 적어도 두 개의 대체 해상도들을 포함함;
    상기 현재블록의 움직임벡터와 예측움직임벡터 간의 차이인 상기 차분움직임벡터를 상기 선택된 해상도에 따라 부호화하는 단계; 및
    상기 복수의 움직임벡터 해상도 중 상기 선택된 해상도를 나타내기 위한 해상도 정보를 부호화하는 단계를 포함하고,
    상기 해상도 정보를 부호화하는 단계는,
    상기 차분움직임벡터에 대한 해상도가 상기 디폴트 해상도인지를 나타내는 제1 신택스 요소를 부호화하는 단계; 및
    상기 차분움직임벡터에 대한 해상도가 상기 디폴트 해상도가 아닌 경우, 상기 대체 해상도들 중 상기 차분움직임벡터에 대한 해상도를 나타내는 제2 신택스 요소를 부호화하는 단계
    를 포함하는 움직임벡터 부호화 방법.
  2. 제1항에 있어서,
    상기 대체 해상도들은 1 픽셀 해상도 및 4 픽셀 해상도를 포함하고, 상기 디폴트 해상도는 1/4 픽셀 해상도인, 움직임벡터 부호화 방법.
  3. 제1항에 있어서,
    상기 선택된 해상도에 따라 부호화된 차분움직임벡터의 값은, 복수의 움직임벡터 해상도 각각에 서로 다르게 할당된 기정의된 복수의 변수 값들 중 상기 선택된 해상도에 대응하는 변수 값에 의해 정의되는 함수가 적용된 값인 것을 특징으로 움직임벡터 부호화 방법.
  4. 제3항에 있어서,
    상기 선택된 해상도로 부호화된 차분움직임벡터의 값은,
    상기 차분움직임벡터로부터 상기 선택된 해상도에 대응하는 변수 값을 감산하고,
    상기 변수 값이 감산된 값을 상기 선택된 해상도로 나누어 생성되는 것을 특징으로 하는 움직임벡터 부호화 방법.
  5. 제1항에 있어서,
    상기 선택된 해상도로 부호화된 차분움직임벡터의 값은,
    상기 차분움직임벡터를 상기 선택된 해상도로 나누고,
    상기 선택된 해상도로 나누어진 값으로부터 상기 선택된 해상도에 대응하는 변수 값을 감산하여 생성되는 것을 특징으로 하는 움직임벡터 부호화 방법.
  6. 현재블록의 움직임벡터를 복호화하기 위한 방법에 있어서,
    상기 현재블록의 차분움직임벡터 정보를 복호화하는 단계;
    차분움직임벡터의 해상도를 나타내는 해상도 정보를 복호화함으로써 복수의 움직임벡터 해상도 중에서 상기 차분움직임벡터의 해상도를 선택하는 단계, 상기 복수의 움직임벡터 해상도는 디폴트 해상도 및 적어도 두 개의 대체 해상도들을 포함함;
    상기 차분움직임벡터 정보 및 상기 선택된 해상도를 이용하여 상기 현재블록의 차분움직임벡터를 복원하는 단계; 및
    상기 현재블록의 예측움직임벡터를 결정하고, 상기 복원된 차분움직임벡터와 상기 예측움직임벡터를 이용하여 상기 현재블록의 움직임벡터를 복원하는 단계를 포함하고,
    상기 해상도 정보를 복호화하는 것은,
    상기 차분움직임벡터에 대한 해상도가 상기 디폴트 해상도인지를 나타내는 제1 신택스 요소를 복호화하는 단계; 및
    상기 차분움직임벡터에 대한 해상도가 상기 디폴트 해상도가 아닌 경우, 상기 대체 해상도들 중 상기 차분움직임벡터에 대한 해상도를 나타내는 제2 신택스 요소를 복호화하는 단계
    를 포함하는 움직임벡터 복호화 방법.
  7. 제6항에 있어서,
    상기 대체 해상도들은 1 픽셀 해상도 및 4 픽셀 해상도를 포함하고, 상기 디폴트 해상도는 1/4 픽셀 해상도인 것을 특징으로 하는 움직임벡터 복호화 방법.
  8. 제6항에 있어서,
    상기 현재블록의 차분움직임벡터는,
    복수의 움직임벡터 해상도들에 서로 다르게 각각 할당된 기정의된 복수의 변수 값들 중 상기 선택된 해상도에 대응하는 변수 값을 선택하고 상기 차분움직임벡터 정보에 의해 결정된 값에 상기 선택된 해상도에 대응하는 변수 값에 의해 정의되는 함수를 적용함으로써,
    복원되는 것을 특징으로 하는 움직임벡터 복호화 방법.
  9. 제8항에 있어서,
    상기 현재블록의 차분움직임벡터를 복원하는 단계는,
    상기 차분움직임벡터 정보에 의해 결정된 값에 상기 선택된 해상도를 곱하는 단계; 및
    상기 선택된 해상도로 곱해진 값에 상기 선택된 해상도에 대응하는 변수 값을 가산하여 상기 현재블록의 차분움직임벡터를 복원하는 단계를 포함하는, 움직임벡터 복호화 방법.
  10. 제8항에 있어서,
    상기 현재블록의 차분움직임벡터를 복원하는 단계는,
    상기 차분움직임벡터 정보에 의해 결정된 값에 상기 선택된 해상도에 대응하는 변수 값을 가산하는 단계; 및
    상기 변수 값이 가산된 값에 상기 선택된 해상도를 곱하는 단계를 포함하는, 움직임벡터 복호화 방법.
  11. 영상 복호화 방법에 의해 복호화될 비트스트림으로 저장하는, 디코더에 의해 판독 가능한, 기록 매체에 있어서,
    상기 복호화 방법은,
    현재블록의 차분움직임벡터 정보를 복호화하는 단계;
    차분움직임벡터의 해상도를 나타내는 해상도 정보를 복호화함으로써 복수의 움직임벡터 해상도 중에서 상기 차분움직임벡터의 해상도를 선택하는 단계, 상기 복수의 움직임벡터 해상도는 디폴트 해상도 및 적어도 두 개의 대체 해상도들을 포함하는 포함함;
    상기 차분움직임벡터 정보 및 상기 선택된 해상도를 이용하여 상기 현재블록의 차분움직임벡터를 복원하는 단계; 및
    상기 현재블록의 예측움직임벡터를 결정하고, 상기 복원된 차분움직임벡터와 상기 예측움직임벡터를 이용하여 상기 현재블록의 움직임벡터를 복원하는 단계를 포함하고,
    상기 해상도 정보를 복호화하는 것은,
    상기 차분움직임벡터에 대한 해상도가 상기 디폴트 해상도인지를 나타내는 제1 신택스 요소를 복호화하는 단계; 및
    상기 차분움직임벡터에 대한 해상도가 상기 디폴트 해상도가 아닌 경우, 상기 대체 해상도들 중 상기 차분움직임벡터에 대한 해상도를 나타내는 제2 신택스 요소를 복호화하는 단계
    를 포함하는 것을 특징으로 하는 기록 매체.
KR1020220123988A 2017-03-22 2022-09-29 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법 KR102618414B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230188000A KR20240001100A (ko) 2017-03-22 2023-12-21 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR1020170036161 2017-03-22
KR20170036161 2017-03-22
KR1020170087770A KR102450863B1 (ko) 2017-03-22 2017-07-11 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020170087770A Division KR102450863B1 (ko) 2017-03-22 2017-07-11 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020230188000A Division KR20240001100A (ko) 2017-03-22 2023-12-21 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20220136330A KR20220136330A (ko) 2022-10-07
KR102618414B1 true KR102618414B1 (ko) 2023-12-27

Family

ID=63864098

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020170087770A KR102450863B1 (ko) 2017-03-22 2017-07-11 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법
KR1020220123988A KR102618414B1 (ko) 2017-03-22 2022-09-29 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법
KR1020230188000A KR20240001100A (ko) 2017-03-22 2023-12-21 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법
KR1020240009118A KR20240013890A (ko) 2017-03-22 2024-01-19 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법
KR1020240009122A KR20240013891A (ko) 2017-03-22 2024-01-19 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020170087770A KR102450863B1 (ko) 2017-03-22 2017-07-11 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020230188000A KR20240001100A (ko) 2017-03-22 2023-12-21 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법
KR1020240009118A KR20240013890A (ko) 2017-03-22 2024-01-19 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법
KR1020240009122A KR20240013891A (ko) 2017-03-22 2024-01-19 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법

Country Status (2)

Country Link
KR (5) KR102450863B1 (ko)
WO (1) WO2019013434A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7391958B2 (ja) 2018-11-08 2023-12-05 オッポ広東移動通信有限公司 ビデオ信号符号化/復号方法及び前記方法に用いられる機器
CN116074505A (zh) * 2018-11-08 2023-05-05 Oppo广东移动通信有限公司 视频信号编码/解码方法以及用于所述方法的设备
WO2020130520A1 (ko) * 2018-12-16 2020-06-25 엘지전자 주식회사 화면간 예측을 사용하여 비디오 신호를 처리하기 위한 방법 및 장치
WO2020141853A1 (ko) * 2019-01-01 2020-07-09 엘지전자 주식회사 인터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치
CN114303372B (zh) * 2019-06-28 2024-04-09 Sk电信有限公司 自适应地设置分辨率的方法及图像解码装置
WO2021141372A1 (ko) * 2020-01-06 2021-07-15 현대자동차주식회사 이종 해상도를 갖는 참조 픽처 기반의 영상 부호화 및 복호화
WO2021188571A1 (en) * 2020-03-16 2021-09-23 Beijing Dajia Internet Information Technology Co., Ltd. Improvements on merge mode with motion vector differences

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016068674A1 (ko) * 2014-10-31 2016-05-06 삼성전자 주식회사 움직임 벡터 부복호화 방법 및 장치

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8982952B2 (en) * 2008-06-02 2015-03-17 Broadcom Corporation Method and system for using motion vector confidence to determine a fine motion estimation patch priority list for a scalable coder
CN107517384B (zh) * 2011-06-16 2020-06-30 Ge视频压缩有限责任公司 解码器、编码器、解码方法、编码方法以及存储介质
KR102349788B1 (ko) * 2015-01-13 2022-01-11 인텔렉추얼디스커버리 주식회사 영상의 부호화/복호화 방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016068674A1 (ko) * 2014-10-31 2016-05-06 삼성전자 주식회사 움직임 벡터 부복호화 방법 및 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Jianle Chen et al., "Algorithm Description of Joint Exploration Test Model 2", JVET-B1001, 2016.2.26.

Also Published As

Publication number Publication date
KR20240013891A (ko) 2024-01-30
KR20180107687A (ko) 2018-10-02
KR102450863B1 (ko) 2022-10-05
KR20240001100A (ko) 2024-01-03
KR20220136330A (ko) 2022-10-07
KR20240013890A (ko) 2024-01-30
WO2019013434A1 (ko) 2019-01-17

Similar Documents

Publication Publication Date Title
KR102618414B1 (ko) 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법
US11943476B2 (en) Methods and apparatuses for coding video data with adaptive secondary transform signaling
US9467713B2 (en) Apparatus for decoding a moving picture
US9565446B2 (en) Apparatus for encoding a moving picture
KR20210134554A (ko) 영상 부호화 또는 복호화를 위한 장치 및 방법
US11991393B2 (en) Methods and apparatuses for coding video data with secondary transform
US9473789B2 (en) Apparatus for decoding a moving picture
KR20180061027A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
TW202029774A (zh) 藉由轉換域濾波之量化假影抑制及信號恢復
KR20130067280A (ko) 인터 예측 부호화된 동영상 복호화 방법
US11838545B2 (en) Prediction method using current picture referencing mode, and video decoding device therefor
KR20190140399A (ko) 인터 예측 방법 및 영상 복호화 장치
US20220182604A1 (en) Video encoding and decoding using intra block copy
US20220353505A1 (en) Method for reconstructing residual blocks of chroma blocks, and video decoding apparatus
KR20200081207A (ko) 움직임정보 표현 방법 및 이를 이용한 영상 복호화 장치
US20220353516A1 (en) Method for adaptively setting resolution, and image decoding apparatus
KR20200081186A (ko) 시간적 후보의 움직임 벡터 유도 방법 및 이를 이용한 영상 복호화 장치

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant