KR20210052568A - 영상 부호화/복호화 방법 및 장치 - Google Patents

영상 부호화/복호화 방법 및 장치 Download PDF

Info

Publication number
KR20210052568A
KR20210052568A KR1020217012066A KR20217012066A KR20210052568A KR 20210052568 A KR20210052568 A KR 20210052568A KR 1020217012066 A KR1020217012066 A KR 1020217012066A KR 20217012066 A KR20217012066 A KR 20217012066A KR 20210052568 A KR20210052568 A KR 20210052568A
Authority
KR
South Korea
Prior art keywords
block
candidate
information
motion
prediction
Prior art date
Application number
KR1020217012066A
Other languages
English (en)
Inventor
김기백
Original Assignee
주식회사 비원영상기술연구소
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 비원영상기술연구소 filed Critical 주식회사 비원영상기술연구소
Publication of KR20210052568A publication Critical patent/KR20210052568A/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/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • 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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/004Predictors, e.g. intraframe, interframe coding
    • 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/117Filters, e.g. for pre-processing or post-processing
    • 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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/124Quantisation
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • 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
    • 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/507Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction using conditional replenishment
    • 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/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • 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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명에 따른 영상 부호화/복호화 방법 및 장치는, 대상 블록의 움직임 정보 후보 리스트를 구성하는 단계, 움직임 정보 후보 리스트에서 후보 인덱스를 선정하는 단계, 움직임 벡터 조정을 위한 오프셋을 유도하는 단계 및 오프셋에 기반하여 복원된 예측 움직임 벡터를 통해 대상 블록의 움직임 벡터를 복원하는 단계를 포함한다.

Description

영상 부호화/복호화 방법 및 장치
본 발명은 영상 부호화/복호화 방법 및 장치에 관한 것이다.
인터넷과 휴대 단말의 보급과 정보 통신 기술의 발전에 따라 멀티미디어 데이터에 대한 이용이 급증하고 있다. 따라서, 각종 시스템에서 영상 예측을 통해 다양한 서비스나 작업을 수행하기 위하여 영상 처리 시스템의 성능 및 효율 개선에 대한 필요성이 상당히 증가하고 있으나, 이러한 분위기에 호응할 수 있는 연구 개발 결과가 미흡한 실정이다.
이와 같이, 종래 기술의 영상 부호화 복호화 방법 및 장치에서는 영상 처리 특히 영상 부호화 또는 영상 복호화에 대한 성능 개선이 요구되고 있는 실정이다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은 조정 오프셋을 사용하여 움직임 벡터 예측값에 보정을 수행하는 영상 부호화/복호화 장치를 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 영상을 복호화하는 방법은 대상 블록의 움직임 정보 예측 후보 리스트를 구성하는 단계, 예측 후보 인덱스를 선정하는 단계, 예측 움직임 벡터 조정 오프셋을 유도하는 단계 및 대상 블록의 움직임 정보를 복원하는 단계를 포함한다.
여기서, 움직임 정보 예측 후보 리스트를 구성하는 단계는, 이미 포함된 후보와 오프셋 정보에 기반하여 획득되는 후보, 그리고 신규 후보와 오프셋 정보에 기반하여 획득되는 후보가 중복되지 않는 경우에 후보군에 포함하는 단계를 더 포함할 수 있다.
여기서, 예측 움직임 벡터 조정 오프셋을 유도하는 단계는, 오프셋 적용 플래그 및/또는 오프셋 선택 정보에 기반하여 유도되는 단계를 더 포함할 수 있다.
상기와 같은 본 발명에 따른 화면간 예측을 사용하는 경우 효율적으로 예측 움직임 벡터를 획득함으로써 부호화 성능을 향상시킬 수 있다.
도 1은 본 발명의 실시예에 따른 영상 부호화 및 복호화 시스템에 대한 개념도이다.
도 2는 본 발명의 일 실시예에 따른 영상 부호화 장치에 대한 블록 구성도이다.
도 3은 본 발명의 일 실시예에 따른 영상 복호화 장치에 대한 블록 구성도이다.
도 4는 본 발명의 블록 분할부에서 획득할 수 있는 다양한 분할 형태를 나타낸 예시도이다.
도 5는 본 발명의 화면간 예측을 통해 예측 블록을 획득하는 다양한 경우를 나타내는 예시도이다.
도 6은 본 발명의 일 실시예에 따른 참조 픽쳐 리스트를 구성하는 예시도이다.
도 7은 본 발명의 일 실시예에 따른 이동 외 움직임 모델을 나타내는 개념도이다.
도 8은 본 발명의 일 실시예에 따른 서브 블록 단위의 움직임 추정을 나타내는 예시도이다.
도 9는 본 발명의 일 실시예에 따른 움직임 정보의 부호화를 나타내는 순서도이다.
도 10은 본 발명의 일 실시예에 따른 대상 블록과 그에 인접한 블록에 대한 배치도이다.
도 11은 본 발명의 일 실시예에 따른 통계적 후보에 관한 예시도를 나타낸다.
도 12는 본 발명의 일 실시예에 따른 이동 외 움직임 모델에 따른 통계적 후보에 관한 개념도이다.
도 13은 본 발명의 일 실시예에 따른 통계적 후보로 저장되는 각 제어점 위치의 움직임 정보의 구성에 대한 예시도이다.
도 14는 본 발명의 일 실시예에 따른 움직임 정보 부호화에 관한 순서도이다.
도 15는 본 발명의 일 실시예에 따른 움직임 벡터 예측 후보 및 대상 블록의 움직임 벡터에 대한 예시도이다.
도 16은 본 발명의 일 실시예에 따른 움직임 벡터 예측 후보 및 대상 블록의 움직임 벡터에 대한 예시도이다.
도 17은 본 발명의 일 실시예에 따른 움직임 벡터 예측 후보 및 대상 블록의 움직임 벡터에 대한 예시도이다.
도 18은 본 발명의 일 실시예에 따른 복수의 움직임 벡터 예측값의 배치에 관한 예시도이다.
도 19는 본 발명의 일 실시예에 따른 병합 모드에서의 움직임 정보 부호화에 관한 순서도이다.
발명의 실시를 위한 최선의 형태
본 발명에 따른 영상 부호화/복호화 방법 및 장치는, 대상 블록의 예측 움직임 후보 리스트를 구성하고, 상기 움직임 후보 리스트에서 예측 후보 인덱스에 기반하여 예측 움직임 벡터를 유도하며, 예측 움직임 벡터 조정 오프셋 정보를 복원하고, 상기 예측 움직임 벡터와 상기 예측 움직임 벡터 조정 오프셋 정보에 기반하여 대상 블록의 움직임 벡터를 복원할 수 있다.
본 발명에 따른 영상 부호화/복호화 방법 및 장치에 있어서, 상기 움직임 후보 리스트는 공간적 후보, 시간적 후보, 통계적 후보 또는 조합 후보 중 적어도 하나를 포함할 수 있다.
본 발명에 따른 영상 부호화/복호화 방법 및 장치에 있어서, 상기 예측 움직임 벡터 조정 오프셋은 오프셋 적용 플래그 또는 오프셋 선택 정보 중 적어도 하나에 기반하여 결정될 수 있다.
본 발명에 따른 영상 부호화/복호화 방법 및 장치에 있어서, 상기 예측 움직임 벡터 조정 오프셋 정보의 지원 여부에 관한 정보는 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일 또는 브릭 중 적어도 하나에 포함될 수 있다.
본 발명에 따른 영상 부호화/복호화 방법 및 장치에 있어서, 상기 대상 블록이 병합 모드로 부호화된 경우, 상기 대상 블록의 움직임 벡터는 제로 벡터를 이용하여 복원되고, 상기 대상 블록이 경쟁 모드로 부호화된 경우, 상기 대상 블록의 움직임 벡터는 움직임 벡터 차분치를 이용하여 복원될 수 있다.
발명의 실시를 위한 형태
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 발명에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 발명에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 것을 의미한다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 발명에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
통상적으로 영상의 컬러 포맷(Color Format)에 따라 하나 이상의 컬러 공간으로 구성될 수 있다. 컬러 포맷에 따라 일정 크기를 갖는 1개 이상의 픽쳐 또는 다른 크기를 갖는 1개 이상의 픽쳐로 구성될 수 있다. 일 예로, YCbCr 컬러 구성에서 4:4:4, 4:2:2, 4:2:0, Monochrome(Y로만 구성) 등의 컬러 포맷이 지원될 수 있다. 일 예로, YCbCr 4:2:0인 경우 1개의 휘도 성분(본 예에서, Y)과 2개의 색차 성분(본 예에서, Cb/Cr)으로 구성될 수 있으며, 이때 색차 성분과 휘도 성분의 구성 비는 가로, 세로 1:2를 가질 수 있다. 일 예로, 4:4:4인 경우 가로, 세로 동일한 구성 비를 가질 수 있다. 상기 예처럼 하나 이상의 컬러 공간으로 구성이 되는 경우 픽쳐는 각 컬러 공간으로의 분할을 수행할 수 있다.
영상은 영상 타입(예를 들어, 픽쳐 타입, 서브 픽쳐 타입, 슬라이스 타입, 타일 타입, 브릭 타입 등)에 따라 I, P, B 등으로 분류할 수 있는데, I 영상 타입은 참조 픽쳐를 사용하지 않고 자체적으로 부호화되는 영상을 의미할 수 있고, P 영상 타입은 참조 픽쳐를 사용하여 부호화를 하되 전방향 예측만을 허용하는 영상을 의미할 수 있으며, B 영상 타입은 참조 픽쳐를 사용하여 부호화를 하며 전/후방향 예측을 허용하는 영상을 의미할 수 있으나, 부호화 설정에 따라 상기 타입의 일부가 결합(P와 B를 결합)되거나 다른 구성의 영상 타입이 지원될 수도 있다.
본 발명에서 발생하는 다양한 부호화/복호화 정보는 명시적(Explicit) 또는 묵시적(Implicit)인 처리가 가능할 수 있다. 여기서 명시적인 처리는 부호화/복호화 정보를 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일, 브릭(Brick), 블록, 서브 블록 등에서 생성하여 이를 비트스트림에 수록할 수 있고, 복호화기에서 부호화기와 동일 수준의 단위에서 관련 정보를 파싱(Parsing)하여 복호화 정보로 복원하는 것으로 이해할 수 있다. 여기서 묵시적인 처리는 부호화/복호화 정보를 부호화기와 복호화기에서 동일한 과정, 규칙 등으로 처리되는 것으로 이해할 수 있다.
도 1은 본 발명의 실시예에 따른 영상 부호화 및 복호화 시스템에 대한 개념도이다.
도 1을 참조하면, 영상 부호화 장치(105) 및 복호화 장치(100)는 개인용 컴퓨터(PC:Personal Computer), 노트북 컴퓨터, 개인 휴대 단말기(PDA: Personal Digital Assistant), 휴대형 멀티미디어 플레이어(PMP: Portable Multimedia Player), 플레이스테이션 포터블(PSP: PlayStation Portable), 무선 통신 단말기(Wireless Communication Terminal), 스마트폰(Smart Phone) 또는 TV 등과 같은 사용자 단말기이거나 응용 서버와 서비스 서버 등 서버 단말기일 수 있으며, 각종 기기 또는 유무선 통신망과 통신을 수행하기 위한 통신 모뎀 등의 통신 장치, 영상을 부호화 또는 복호화를 위해 인터 또는 인트라 예측하기 위한 각종 프로그램과 데이터를 저장하기 위한 메모리(memory, 120, 125) 또는 프로그램을 실행하여 연산 및 제어하기 위한 프로세서(processor, 110, 115) 등을 구비하는 다양한 장치를 포함할 수 있다.
또한, 영상 부호화 장치(105)에 의해 비트스트림으로 부호화된 영상은 실시간 또는 비실시간으로 인터넷, 근거리 무선 통신망, 무선랜망, 와이브로망 또는 이동통신망 등의 유무선 통신망(Network) 등을 통하거나 케이블 또는 범용 직렬 버스(USB: Universal Serial Bus) 등과 같은 다양한 통신 인터페이스를 통해 영상 복호화 장치(100)로 전송되어 영상 복호화 장치(100)에서 복호화되어 영상으로 복원되고 재생될 수 있다. 또한, 영상 부호화 장치(105)에 의해 비트스트림으로 부호화된 영상은 컴퓨터 판독 가능한 기록 매체를 통하여 영상 부호화 장치(105)에서 영상 복호화 장치(100)로 전달될 수 있다.
전술한 영상 부호화 장치와 영상 복호화 장치는 각각 별도의 장치들일 수 있으나, 구현에 따라서 하나의 영상 부호화/복호화 장치로 만들어질 수 있다. 그 경우, 영상 부호화 장치의 일부 구성은 영상 복호화 장치의 일부 구성과 실질적으로 동일한 기술요소로서 적어도 동일한 구조를 포함하거나 적어도 동일한 기능을 수행하도록 구현될 수 있다.
따라서, 이하의 기술요소들과 이들의 작동 원리 등에 대한 상세 설명에서는 대응 기술요소들의 중복되는 설명을 생략하기로 한다. 또한, 영상 복호화 장치는 영상 부호화 장치에서 수행되는 영상 부호화 방법을 복호화에 적용하는 컴퓨팅 장치에 대응하므로, 이하의 설명에서는 영상 부호화 장치를 중심으로 설명하기로 한다.
컴퓨팅 장치는 영상 부호화 방법 및/또는 영상 복호화 방법을 구현하는 프로그램이나 소프트웨어 모듈을 저장하는 메모리와 메모리에 연결되어 프로그램을 수행하는 프로세서를 포함할 수 있다. 여기서, 영상 부호화 장치는 부호화기로, 영상 복호화 장치는 복호화기로 각각 지칭될 수 있다.
도 2는 본 발명의 일 실시예에 따른 영상 부호화 장치에 대한 블록 구성도이다.
도 2를 참조하면, 영상 부호화 장치(20)는 예측부(200), 감산부(205), 변환부(210), 양자화부(215), 역양자화부(220), 역변환부(225), 가산부(230), 필터부(235), 부호화 픽쳐 버퍼(240) 및 엔트로피 부호화부(245)를 포함할 수 있다.
예측부(200)는 소프트웨어 모듈인 예측 모듈(prediction module)을 이용하여 구현될 수 있고, 부호화할 블록에 대하여 화면내 예측 방식(Intra Prediction)이나 화면간 예측 방식(Inter Prediction)으로 예측 블록을 생성할 수 있다. 예측부(200)는 영상에서 현재 부호화하고자 하는 대상 블록(Target Block)을 예측하여 예측 블록을 생성할 수 있다. 다시 말해, 예측부(200)는 영상에서 부호화하고자 하는 대상 블록의 각 화소의 화소값(pixel value)을 화면내 예측 또는 화면간 예측에 따라 예측하여 생성된 각 화소의 예측 화소값(prediced pixel value)를 갖는 예측 블록을 생성할 수 있다. 또한, 예측부(200)는 화면내 예측 모드 또는 화면간 예측 모드와 같은 예측 모드에 대한 정보와 같은 예측 블록을 생성하는데 필요한 정보를 부호화부로 전달하여 부호화부로 하여금 예측 모드에 대한 정보를 부호화하도록 할 수 있다. 이때, 예측이 수행되는 처리 단위와 예측 방법 및 구체적인 내용이 정해지는 처리 단위는 부호화 설정에 따라 정해질 수 있다. 예를 들어, 예측 방법, 예측 모드 등은 예측 단위로 결정되고, 예측의 수행은 변환 단위로 수행될 수 있다. 또한, 특정한 부호화 모드를 사용할 경우, 예측부를 통해 예측 블록을 생성하지 않고, 원본 블록을 그대로 부호화하여 복호화부에 전송하는 것 또한 가능할 수 있다.
화면내 예측부에서 예측 방향에 따라 사용하는 수평, 수직 모드 등과 같은 방향성 예측 모드와 참조 화소의 평균, 내삽 등 방법을 사용하는 DC, Planar와 같은 비방향성 예측 모드를 가질 수 있다. 방향성 및 비방향성 모드를 통해 화면내 예측 모드 후보군을 구성할 수 있으며, 35개의 예측 모드(방향성 33개 + 비방향성 2개) 또는 67개의 예측 모드(방향성 65개 + 비방향성 2개), 131개의 예측 모드(방향성 129개 + 비방향성 2개) 등과 같은 다양한 후보 중 하나를 후보군으로 사용할 수 있다.
화면내 예측부는 참조 화소 구성부, 참조 화소 필터부, 참조 화소 보간부, 예측 모드 결정부, 예측 블록 생성부, 예측 모드 부호화부를 포함할 수 있다. 참조 화소 구성부는 대상 블록을 중심으로 이웃한 블록에 속하고 대상 블록과 인접한 화소를 화면내 예측을 위한 참조 화소로 구성할 수 있다. 부호화 설정에 따라 최인접한 하나의 참조 화소 라인을 참조 화소로 구성하거나 또는 그 외의 인접한 하나의 참조 화소 라인을 참조 화소로 구성할 수 있고, 복수의 참조 화소 라인을 참조 화소로 구성할 수 있다. 만약 참조 화소의 일부가 이용가능하지 않을 경우 이용가능한 참조 화소를 사용하여 참조 화소를 생성할 수 있고, 전부가 이용가능하지 않을 경우에는 기설정된 값(예를 들어, 비트 심도에 의해 표현되는 화소값 범위의 중앙값 등)을 사용하여 참조 화소를 생성할 수 있다.
화면내 예측부의 참조 화소 필터부는 부호화 과정을 통해 남아있는 열화를 줄여주기 위한 목적으로 참조 화소에 필터링을 수행할 수 있다. 이때, 사용되는 필터는 3-tap 필터 [1/4, 1/2, 1/4], 5-tap 필터 [2/16, 3/16, 6/16, 3/16, 2/16] 등과 같은 저역 통과 필터(Low-pass Filter)일 수 있다. 부호화 정보(예를 들어, 블록의 크기, 형태, 예측 모드 등)에 따라 필터링의 적용 유무, 필터링 종류가 결정될 수 있다.
화면내 예측부의 참조 화소 보간부는 예측 모드에 따라 참조 화소의 선형 보간 과정을 통해 소수 단위의 화소를 생성할 수 있으며, 부호화 정보에 따라 적용되는 보간 필터가 결정될 수 있다. 이때, 사용되는 보간 필터는 4-tap 큐빅(Cubic) 필터, 4-tap 가우시안(Gaussian) 필터, 6-tap 위너(Wiener) 필터, 8-tap 칼만(Kalman) 필터 등이 포함될 수 있다. 저역 통과 필터를 수행하는 과정과 별도로 보간이 수행되는 것이 일반적이지만 두 과정에 적용되는 필터를 하나로 통합하여 필터링 과정을 수행할 수도 있다.
화면내 예측부의 예측 모드 결정부는 부호화 비용을 고려하여 예측 모드 후보군 중 적어도 하나의 최적의 예측 모드를 선정할 수 있으며, 예측 블록 생성부는 해당 예측 모드를 사용하여 예측 블록을 생성할 수 있다. 예측 모드 부호화부에서 상기 최적의 예측 모드를 예측값에 기반하여 부호화할 수 있다. 이때, 예측값이 들어맞는 경우와 들어맞지 않는 경우에 따라 적응적으로 예측 정보를 부호화할 수 있다.
화면내 예측부에서 상기 예측값을 MPM(Most Probable Mode)이라고 하며 예측 모드 후보군에 속하는 전체 모드 중에서 일부 모드를 MPM 후보군으로 구성할 수 있다. MPM 후보군에는 기설정된 예측 모드(예를 들어, DC, Planar, 수직, 수평, 대각선 모드 등) 또는 공간적으로 인접한 블록(예를 들어, 좌, 상, 좌상, 우상, 좌하 블록 등)의 예측 모드 등이 포함될 수 있다. 또한, MPM 후보군에 기 포함된 모드로부터 유도되는 모드(방향성 모드의 경우 +1, -1 등의 차이)를 MPM 후보군으로 구성할 수 있다.
MPM 후보군 구성을 위한 예측 모드의 우선 순위가 존재할 수 있다. 상기 우선 순위에 따라 MPM 후보군에 포함되는 순서가 정해질 수 있으며, 상기 우선 순위에 따라 MPM 후보군의 개수(예측 모드 후보군 개수에 따라 정해짐)만큼 채워지면 MPM 후보군 구성을 완료할 수 있다. 이때, 공간적으로 인접한 블록의 예측 모드, 기설정된 예측 모드, MPM 후보군에 먼저 포함된 예측 모드로부터 유도되는 모드 순서로 우선 순위가 정해질 수 있으나, 그 외의 변형 또한 가능하다.
예를 들어, 공간적으로 인접한 블록 중에서는 좌 - 상 - 좌하 - 우상 - 좌상 블록 등의 순서로 후보군에 포함할 수 있고, 기설정된 예측 모드 중에서는 DC - Planar - 수직 - 수평 모드 등의 순서로 후보군에 포함할 수 있고, 기 포함된 모드에서 +1, -1 등을 가산하여 획득된 모드를 후보군에 포함하여 총 6개의 모드를 후보군으로 구성할 수 있다. 또는, 좌 - 상 - DC - Planar - 좌하 - 우상 - 좌상 - (좌+1) - (좌-1) - (상+1) 등의 하나의 우선 순위로 후보군에 포함하여 총 7개의 모드를 후보군으로 구성할 수 있다.
감산부(205)는 대상 블록에서 예측 블록을 감산하여 잔차 블록(residual block)을 생성할 수 있다. 다시 말해, 감산부(205)는 부호화하고자 하는 대상 블록의 각 화소의 화소값과 예측부를 통해 생성된 예측 블록의 각 화소의 예측 화소값의 차이를 계산하여 블록 형태의 잔차 신호(residual signal)인 잔차 블록을 생성할 수 있다. 또한, 감산부(205)는 후술하는 블록 분할부를 통해 획득된 블록 단위 이외의 단위에 따라 잔차 블록을 생성할 수도 있다.
변환부(210)는 공간 영역에 속하는 신호를 주파수 영역에 속하는 신호로 변환할 수 있으며, 변환 과정을 거쳐 획득되는 신호를 변환 계수(Transformed Coeffcient)라고 한다. 예를 들어, 감산부로부터 전달받은 잔차 신호를 갖는 잔차 블록을 변환하여 변환 계수를 갖는 변환 블록을 획득할 수 있는데, 입력 받은 신호는 부호화 설정에 따라 결정되며 이는 잔차 신호에 한정되지 않는다.
변환부는 잔차 블록을 하다마드 변환(Hadamard Transform), 이산 사인 변환(DST Based-Transform: Discrete Sine Transform), 이산 코사인 변환(DCT Based-Transform: Discrete Cosine Transform) 등과 같은 변환 기법을 사용하여 변환할 수 있으며, 이에 한정되지 않고 이를 개량 및 변형한 다양한 변환 기법이 사용될 수 있다.
상기 변환 기법 중 적어도 하나의 변환 기법이 지원될 수 있으며, 각 변환 기법에서 적어도 하나의 세부 변환 기법이 지원될 수 있다. 이때, 상기 세부 변한 기법은 각 변환 기법에서 기저 벡터의 일부가 달리 구성되는 변환 기법일 수 있다.
예를 들어, DCT의 경우 DCT-1 내지 DCT-8 중 하나 이상의 세부 변환 기법이 지원될 수 있고, DST의 경우 DST-1 내지 DST-8 중 하나 이상의 세부 변환 기법이 지원될 수 있다. 상기 세부 변환 기법의 일부를 구성하여 변환 기법 후보군을 구성할 수 있다. 일 예로, DCT-2, DCT-8, DST-7를 변환 기법 후보군으로 구성하여 변환을 수행할 수 있다.
변환은 수평/수직 방향으로 수행될 수 있다. 예를 들어, DCT-2의 변환 기법을 사용하여 수평 방향으로 1차원 변환을 수행하고, DST-7의 변환 기법을 사용하여 수직 방향으로 1차원 변환을 수행하여 총 2차원 변환을 수행함으로써 공간 영역의 화소값을 주파수 영역으로 변환할 수 있다.
고정적인 하나의 변환 기법을 사용하여 변환을 수행할 수 있거나 부호화 설정에 따라 변환 기법을 적응적으로 선택하여 변환을 수행할 수 있다. 이때, 적응적인 경우에는 명시적 또는 묵시적인 방법을 사용하여 변환 기법을 선택할 수 있다. 명시적인 경우에는 수평, 수직 방향에 적용되는 각각의 변환 기법 선택 정보 또는 변환 기법 세트 선택 정보가 블록 등의 단위에서 발생할 수 있다. 묵시적인 경우는 영상 타입(I/P/B), 컬러 성분, 블록의 크기/형태/위치, 화면내 예측 모드 등에 따라 부호화 설정이 정의될 수 있으며, 이에 따라 소정의 변환 기법이 선택될 수 있다.
또한, 부호화 설정에 따라 상기 일부 변환이 생략되는 경우가 가능할 수 있다. 즉, 명시적 또는 묵시적으로 수평/수직 단위 중 하나 이상을 생략할 수 있음을 의미한다.
또한, 변환부는 변환 블록을 생성하는데 필요한 정보를 부호화부로 전달하여 이를 부호화하도록 할 수 있고, 그에 따른 정보를 비트스트림에 수록하여 이를 복호화기에 전송하고, 복호화기의 복호화부는 이에 대한 정보를 파싱하여 역변환 과정에 사용할 수 있다.
양자화부(215)는 입력 받은 신호를 양자화할 수 있으며, 이때 양자화 과정을 거쳐 획득되는 신호를 양자화 계수(Quantized Coefficient)라고 한다. 예를 들어, 변환부로부터 전달받은 잔차 변환 계수를 갖는 잔차 블록을 양자화하여 양자화 계수를 갖는 양자화 블록을 획득할 수 있는데, 입력 받은 신호는 부호화 설정에 따라 결정되며 이는 잔차 변환 계수에 한정되지 않는다.
양자화부는 변환된 잔차 블록을 데드존 균일 경계 양자화(Dead Zone Uniform Threshold Quantization), 양자화 가중치 매트릭스(Quantization Weighted Matrix) 등과 같은 양자화 기법을 사용하여 양자화할 수 있으며, 이에 한정되지 않고 이를 개량 및 변형한 다양한 양자화 기법이 사용될 수 있다.
부호화 설정에 따라 양자화 과정은 생략할 수 있다. 예를 들어, 부호화 설정(예를 들어, 양자화 파라미터가 0. 즉, 무손실 압축 환경)에 따라 양자화 과정을 생략(역과정도 포함)할 수 있다. 다른 예로, 영상의 특성에 따라 양자화를 통한 압축 성능이 발휘되지 않는 경우에는 양자화 과정을 생략할 수 있다. 이때, 양자화 블록(M x N) 중 양자화 과정이 생략되는 영역은 전체 영역이거나 또는 일부 영역(M/2 x N/2, M x N/2, M/2 x N 등)일 수 있으며, 양자화 생략 선택 정보는 묵시적 또는 명시적으로 정해질 수 있다.
양자화부는 양자화 블록을 생성하는데 필요한 정보를 부호화부로 전달하여 이를 부호화하도록 할 수 있고, 그에 따른 정보를 비트스트림에 수록하여 이를 복호화기에 전송하고, 복호화기의 복호화부는 이에 대한 정보를 파싱하여 이를 역양자화 과정에 사용할 수 있다.
상기 예에서는 변환부와 양자화부를 통해 잔차 블록을 변환하고 양자화하는 가정 하에 설명하였지만, 잔차 블록을 잔차 신호를 변환하여 변환 계수를 갖는 잔차 블록을 생성하고 양자화 과정을 수행하지 않을 수 있으며, 잔차 블록의 잔차 신호를 변환 계수로 변환하지 않고 양자화 과정만을 수행할 수 있을 뿐만 아니라, 변환과 양자화 과정 모두 수행하지 않을 수 있다. 이는 부호화기 설정에 따라 결정될 수 있다.
역양자화부(220)는 양자화부(215)에 의해 양자화된 잔차 블록을 역 양자화한다. 즉, 역양자화부(220)는 양자화 주파수 계수열을 역양자화하여 주파수 계수를 갖는 잔차 블록을 생성한다.
역변환부(225)는 역양자화부(220)에 의해 역양자화된 잔차 블록을 역변환한다. 즉, 역변환부(225)는 역양자화된 잔차 블록의 주파수 계수들을 역변환하여 화소값을 갖는 잔차 블록, 즉 복원된 잔차 블록을 생성한다. 여기서, 역변환부(225)는 변환부(210)에서 사용한 변환한 방식을 역으로 사용하여 역변환을 수행할 수 있다.
가산부(230)는 예측부(200)에서 예측된 예측 블록과 역변환부(225)에 의해 복원된 잔차 블록을 가산하여 대상 블록을 복원한다. 복원된 대상 블록은 부호화 픽쳐 버퍼(240)에 참조 픽쳐(또는 참조 블록)로서 저장되어 대상 블록의 다음 블록이나 향후 다른 블록, 다른 픽쳐를 부호화할 때 참조 픽쳐로서 사용될 수 있다.
필터부(235)는 디블록킹 필터, SAO(Sample Adaptive Offset), ALF(Adaptive Loop Filter) 등의 하나 이상의 후처리 필터 과정을 포함할 수 있다. 디블록킹 필터는 복원된 픽쳐에서 블록 간의 경계에 생긴 블록 왜곡을 제거할 수 있다. ALF는 디블록킹 필터를 통해 블록이 필터링된 후 복원된 영상과 원래의 영상을 비교한 값을 기초로 필터링을 수행할 수 있다. SAO는 디블록킹 필터가 적용된 잔차 블록에 대하여, 화소 단위로 원본 영상과의 오프셋 차이를 복원할 수 있다. 이와 같은 후처리 필터는 복원된 픽쳐 또는 블록에 적용될 수 있다.
부호화 픽쳐 버퍼(240)는 필터부(235)를 통해 복원된 블록 또는 픽쳐를 저장할 수 있다. 부호화 픽쳐 버퍼(240)에 저장된 복원 블록 또는 픽쳐는 화면내 예측 또는 화면간 예측을 수행하는 예측부(200)에 제공될 수 있다.
엔트로피 부호화부(245)는 생성된 잔차 블록의 양자화 계수, 변환 계수, 또는 잔차 신호 등을 적어도 하나의 스캔 순서(예를 들어, 지그재그 스캔, 수직 스캔, 수평 스캔 등)에 따라 스캔하여 양자화 계수열, 변환 계수열, 또는 신호열을 생성하고 적어도 하나의 엔트로피 부호화(Entropy Coding) 기법을 이용하여 부호화할 수 있다. 이때, 상기 스캔 순서에 대한 정보는 부호화 설정(예를 들어, 영상 타입, 부호화 모드, 예측 모드, 변환 종류 등)에 따라 정해질 수 있으며, 묵시적으로 정하거나 명시적으로 관련 정보를 생성할 수 있다.
또한, 각 구성부로부터 전달되는 부호화 정보를 포함하는 부호화 데이터를 생성하여 비트스트림으로 출력할 수 있으며, 이는 멀티플렉서(MUX: Multiplexer)로 구현될 수 있다. 이때, 부호화 기법으로 지수 골룸(Exponential Golomb), 문맥 적응형 가변장 길이 부호화(CAVLC, Context Adaptive Variable Length Coding), 문맥 적응형 이진 산술 부호화(CABAC, Context Adaptive Binary Arithmetic Coding) 등과 같은 방법을 사용하여 부호화할 수 있으며, 이에 한정되지 않고 이를 개량 및 변형한 다양한 부호화 기법이 사용될 수 있다.
상기 잔차 블록 데이터와 부/복호화 과정에 생성되는 정보 등의 구문 요소에 대한 엔트로피 부호화(본 예에서는 CABAC이라 가정)을 수행할 때, 엔트로피 부호화 장치는 이진화부(Binarizer), 문맥 모델러(Context Modeler), 이진 산술 부호화부(Binary Arithmetic Coder)를 포함할 수 있다. 이때, 이진 산술 부호화부는 레귤러 코딩부(Regular Coding Engine)와 바이패스 코딩부(Bypass Coding Engine)를 포함할 수 있다.
상기 엔트로피 부호화 장치로 입력되는 구문 요소는 이진값이 아닐 수 있기 때문에, 구문 요소들이 이진값이 아닌 경우 이진화부는 구문 요소들을 이진화하여 0 또는 1로 구성된 빈 스트링(Bin String)을 출력할 수 있다. 이때, 빈은 0 또는 1로 구성된 비트를 나타내는 것으로 이진 산술 부호화부를 통해 부호화될 수 있다. 이때, 0과 1의 발생확률에 기반하여 레귤러 코딩부 또는 바이패스 코딩부 중 하나가 선택될 수 있으며 이는 부/복호화 설정에 따라 결정될 수 있다. 구문 요소가 0과 1의 빈도가 동일한 데이터라면 바이패스 코딩부를 사용할 수 있고, 그렇지 않을 경우에는 레귤러 코딩부를 사용할 수 있다.
상기 구문 요소에 대한 이진화를 수행할 때 다양한 방법이 사용될 수 있다. 예를 들어, 고정 길이 이진화(Fixed Length Binarization), 단항 이진화(Unary Binarization), Rice 이진화(Truncated Rice Binarization), K-th Exp-Golomb 이진화 등이 사용될 수 있다. 또한, 구문 요소가 갖는 값의 범위에 따라 부호가 있는 이진화 또는 부호가 없는 이진화가 수행될 수 있다. 본 발명에서 발생하는 구문 요소에 대한 이진화 과정은 상기 예에서 언급된 이진화뿐만 아니라 그 외 추가적인 이진화 방법을 포함하여 수행될 수 있다.
도 3은 본 발명의 일 실시예에 따른 영상 복호화 장치에 대한 블록 구성도이다.
도 3을 참조하면, 영상 복호화 장치(30)는 엔트로피 복호화부(305), 예측부(310), 역양자화부(315), 역변환부(320), 가감산기(325), 필터(330) 및 복호화 픽쳐 버퍼(335)를 포함하여 구성될 수 있다.
또한, 예측부(310)는 다시 화면내 예측 모듈 및 화면간 예측 모듈을 포함하여 구성될 수 있다.
먼저, 영상 부호화 장치(20)로부터 전달된 영상 비트스트림이 수신되면, 엔트로피 복호화부(305)로 전달될 수 있다.
엔트로피 복호화부(305)는 비트스트림을 복호화하여 양자화된 계수들과 각 구성부로 전달되는 복호화 정보를 포함하는 복호화 데이터를 복호화할 수 있다.
예측부(310)는 엔트로피 복호화부(305)로부터 전달된 데이터들에 기초하여 예측 블록을 생성할 수 있다. 이때, 복호화된 픽쳐 버퍼(335)에 저장된 참조 영상에 기초하여, 디폴트(default) 구성 기법을 이용한 참조 픽쳐 리스트를 구성할 수도 있다.
화면내 예측부는 참조 화소 구성부, 참조 화소 필터부, 참조 화소 보간부, 예측 블록 생성부, 예측 모드 복호화부를 포함할 수 있고, 일부는 부호화기와 동일한 과정을 수행하고 일부는 역으로 유도하는 과정을 수행할 수 있다.
역양자화부(315)는 비트스트림으로 제공되어 엔트로피 복호화부(305)에 의해 복호화된 양자화된 변환 계수들을 역양자화할 수 있다.
역변환부(320)는 역 DCT, 역 정수 변환 또는 그와 유사한 개념의 역변환 기법들을 변환 계수에 적용하여 잔차 블록을 생성할 수 있다.
이때, 역양자화부(315), 역변환부(320)는 앞서 설명한 영상 부호화 장치(20)의 변환부(210) 및 양자화부(215)에서 수행한 과정을 역으로 수행하며 다양한 방법으로 구현될 수 있다. 예를 들어, 변환부(210) 및 양자화부(215)와 공유하는 동일한 과정 및 역변환을 사용할 수도 있고, 영상 부호화 장치(20)로부터 변환 및 양자화 과정에 관한 정보(예를 들면, 변환 크기, 변환 모양, 양자화 타입 등)를 이용하여 변환 및 양자화 과정을 역으로 수행할 수 있다.
역양자화 및 역변환 과정을 거친 잔차 블록은 예측부(310)에 의해 도출된 예측 블록과 가산되어 복원된 영상 블록이 생성될 수 있다. 이러한 가산은 가감산기(325)에 의해 이루어 질 수 있다.
필터(330)는 복원된 영상 블록에 대하여, 필요에 따라 블로킹(blocking) 현상을 제거하기 위하여 디블로킹 필터를 적용할 수도 있고, 상기 복호화 과정 전 후에 다른 루프 필터들을 비디오 품질을 향상시키기 위해 추가로 사용할 수도 있다.
복원 및 필터를 거친 영상 블록은 복호화 픽쳐 버퍼(335)에 저장될 수 있다.
도면에 도시하지 않았지만 영상 부호화/복호화 장치에 픽쳐 분할부와 블록 분할부를 더 포함할 수 있다.
픽쳐 분할부는 픽쳐를 소정의 분할 단위에 기반하여 적어도 하나의 영역으로 분할 또는 구획할 수 있다. 여기서, 상기 분할 단위는 서브 픽쳐, 슬라이스, 타일, 브릭, 블록(예로, 최대 부호화 단위) 등을 포함할 수 있다.
픽쳐는 하나 이상의 타일 행 또는 하나 이상의 타일 열로 분할할 수 있다. 이때, 타일은 픽쳐의 소정의 직사각 영역을 포함하는 블록 기반의 단위일 수 있다. 이때, 타일은 하나 이상의 브릭으로 분할할 수 있는데, 브릭은 타일의 행 또는 열 단위의 블록으로 구성될 수 있다.
슬라이스는 하나 이상의 구성 설정이 가능할 수 있는데, 그 중 하나는 스캔 순서에 따른 묶음(예로, 블록, 브릭, 타일 등)으로 구성될 수 있고, 그 중 하나는 직사각 영역을 포함하는 형태로 구성될 수 있고, 그 외의 추가적인 정의가 가능할 수 있다.
상기 슬라이스 구성에 관한 정의는 명시적으로 관련 정보가 발생할 수 있거나 또는 묵시적으로 정해질 수 있다. 슬라이스뿐만 아니라 각 분할 단위의 구성에 관한 정의는 복수로 설정이 가능할 수 있고, 이에 관한 선택 정보가 발생할 수 있다.
슬라이스는 블록, 브릭, 타일 등의 직사각 형태의 단위로 구성될 수 있으며, 상기 분할 단위에 위치 정보(예로, 좌상측 위치, 우하측 위치 등)에 기반하여 슬라이스 위치, 크기 정보를 표현할 수 있다.
본 발명에서는 픽쳐는 하나 이상의 서브 픽쳐로 구성될 수 있고, 서브 픽쳐는 하나 이상의 슬라이스 또는 타일 또는 브릭으로 구성될 수 있고, 슬라이스는 하나 이상의 타일 또는 브릭으로 구성될 수 있고, 타일은 하나 이상의 브릭으로 구성될 수 있음을 가정하여 설명하나, 이에 한정되지 않는다.
상기 분할 단위는 블록의 정수 개로 구성될 수 있으나, 이에 한정되지 않고 정수 개가 아닌 소수 개로 구성될 수 있다. 즉, 블록의 정수개로 구성되지 않을 경우에는 서브 블록으로 적어도 하나의 분할 단위가 구성될 수 있다.
직사각 형태의 슬라이스 이외의 서브 픽쳐, 타일 등의 분할 단위가 존재할 수 있는데, 상기 단위의 위치, 크기 정보는 다양한 방법에 기반하여 표현할 수 있다.
예를 들어, 직사각 단위의 개수 정보, 직사각 단위의 열 또는 행의 개수 정보, 직사가 단위의 열 또는 행 단위의 균등 분할 여부에 관한 정보, 직사각 단위의 열 또는 행 단위의 너비 또는 높이 정보, 직사각 단위의 인덱스 정보 등에 기반하여 직사각 형태 단위의 위치 및 크기 정보를 표현할 수 있다.
서브 픽쳐와 타일의 경우 상기 정보 중 전부 또는 일부에 기반하여 각 단위의 위치 및 크기 정보 등을 표현할 수 있으며, 이에 기반하여 하나 이상의 단위로 분할 또는 구획될 수 있다.
한편, 블록 분할부를 통해 다양한 단위과 크기의 블록으로 분할할 수 있다. 기본 부호화 단위(또는 최대 부호화 단위. Coding Tree Unit. CTU)는 영상 부호화 과정에서 예측, 변환, 양자화 등에 대한 기본(또는 시작) 단위를 의미할 수 있다. 이때, 기본 부호화 단위는 컬러 포맷(본 예에서 YCbCr)에 따라 하나의 휘도 기본 부호화 블록(또는, 최대 부호화 블록. Coding Tree Block. CTB)과 두 개의 기본 색차 부호화 블록으로 구성될 수 있으며, 컬러 포맷에 따라 각 블록의 크기가 정해질 수 있다. 그리고 분할 과정에 따라 부호화 블록(Coding Block. CB)이 획득될 수 있다. 부호화 블록은 일정한 제한에 따라 더 이상의 부호화 블록으로 분할되지 않은 단위로 이해할 수 있으며, 하위 단위로의 분할의 시작 단위로 설정될 수 있다. 본 발명에서 블록은 사각형 형태에만 제한하지 않고 삼각형, 원형 등의 다양한 형태를 포함하는 넓은 개념으로 이해할 수 있다.
후술하는 내용은 하나의 컬러 성분을 대상으로 하지만 컬러 포맷에 따른 비율(예를 들어, YCbCr 4:2:0의 경우 휘도 성분과 색차 성분의 가로 및 세로 길이 비율은 2:1)에 비례하여 다른 컬러 성분에 변경 적용될 수 있음을 이해하여야 한다. 또한, 다른 컬러 성분에 의존적인 블록 분할(예를 들어, Cb/Cr에서 Y의 블록 분할 결과에 의존적인 경우)이 가능할 수 있지만, 각 컬러 성분에 독립적인 블록 분할이 가능할 수 있음을 이해하여야 한다. 또한, 공통되는 하나의 블록 분할 설정(길이 비율에 비례하는 것은 고려)을 사용할 수 있지만, 컬러 성분에 따라 개별적인 블록 분할 설정이 사용되는 것 또한 고려하여 이해할 필요가 있다.
블록 분할부에서 블록은 M × N으로 표현될 수 있으며, 각 블록의 최대값과 최소값이 범위 내에서 획득될 수 있다. 예를 들어, 블록의 최대값을 256×256, 최소값을 4×4로 정할 경우, 2m×2n 크기의 블록(본 예에서 m과 n은 2부터 8까지의 정수) 또는 2m × 2m 크기의 블록(본 예에서 m과 n은 2부터 128까지의 정수) 또는 m × m 크기의 블록(본 예에서 m과 n은 4부터 256까지의 정수)을 획득할 수 있다. 여기서, m과 n은 동일하거나 동일하지 않을 수 있으며, 상기 최대값과 최소값 등의 블록이 지원되는 범위는 하나 이상 발생할 수 있다.
예를 들어, 블록의 최대 크기 및 최소 크기 등에 관한 정보가 발생할 수 있고, 일부 분할 설정에서의 블록의 최대 크기 및 최소 크기 등에 관한 정보가 발생할 수 있다. 여기서 전자의 경우 영상 내에서 발생 가능한 최대 및 최소 크기에 대한 범위 정보일 수 있고, 후자의 경우 일부 분할 설정에 따라 발생 가능한 최대 및 최소 크기에 대한 정보일 수 있다. 여기서 상기 분할 설정은 영상 타입(I/P/B), 컬러 성분(YCbCr 등), 블록 종류(부호화/예측/변환/양자화 등), 분할 종류(Index or Type), 분할 방식(Tree 방식에서 QT, BT, TT 등, Index 방식에서 SI2, SI3, SI4 등) 등에 의해 정의될 수 있다.
또한, 블록이 가질 수 있는 가로/세로 길이 비율(블록의 형태)에 대한 제한이 존재할 수 있으며, 이에 대한 경계값 조건이 설정될 수 있다. 이때, 임의의 경계값(k) 이하/미만의 블록만 지원될 수 있으며, k는 A/B(A는 가로, 세로 중 길거나 같은 값, B는 그 나머지 값)와 같은 가로와 세로의 길이 비율에 따라 정의될 수 있고, 1.5, 2, 3, 4 등과 같은 1 이상의 실수일 수 있다. 상기 예에서와 같이 영상에서의 하나의 블록의 형태에 관한 제한 조건이 지원되거나 또는 분할 설정에 따라 하나 이상의 제한 조건이 지원될 수 있다.
정리하면, 상기 설명과 같은 범위 및 조건과 후술하는 분할 설정 등에 의해 블록 분할의 지원 여부가 정해질 수 있다. 예를 들어, 블록(부모 블록)의 분할에 따른 후보(자식 블록)가 지원되는 블록 조건에 만족할 경우 해당 분할은 지원될 수 있고, 만족하지 않을 경우 해당 분할은 지원되지 않을 수 있다.
블록 분할부는 영상 부호화 장치 및 복호화 장치의 각 구성부에 관계되어 설정될 수 있으며, 이 과정을 통해 블록의 크기와 형태가 정해질 수 있다. 이때, 설정되는 블록은 구성부에 따라 달리 정의될 수 있으며, 예측부의 경우 예측 블록(Prediction Block), 변환부의 경우 변환 블록(Transform Block), 양자화부의 경우 양자화 블록(Quantization Block) 등이 이에 해당할 수 있다. 다만, 이에 한정되지 않고 다른 구성부에 따른 블록 단위가 추가로 정의될 수 있다. 본 발명에서는 각 구성부에서 입력과 출력이 직사각형 형태인 경우를 중심으로 설명하지만, 일부 구성부에서는 다른 형태(예를 들어, 직각 삼각형 등)의 입/출력이 가능할 수도 있다.
블록 분할부의 초기(또는 시작) 블록의 크기 및 형태는 상위 단위로부터 결정될 수 있다. 상기 초기 블록은 더 작은 크기의 블록으로 분할될 수 있으며, 블록의 분할에 따른 최적의 크기 및 형태가 결정되면 그 블록은 하위 단위의 초기 블록으로 결정될 수 있다. 여기서, 상위 단위는 부호화 블록, 하위 단위는 예측 블록 또는 변환 블록일 수 있으나, 이에 한정되지 않으며 다양한 변형의 예가 가능할 수 있다. 상기 예와 같이 하위 단위의 초기 블록이 정해지면 상위 단위와 같이 최적의 크기 및 형태의 블록을 찾기 위한 분할 과정이 수행될 수 있다.
정리하면, 블록 분할부는 기본 부호화 블록(또는 최대 부호화 블록)을 적어도 하나의 부호화 블록으로 분할을 수행할 수 있고, 부호화 블록은 적어도 하나의 예측 블록/변환 블록/양자화 블록으로 분할을 수행할 수 있다. 또한, 예측 블록은 적어도 하나의 변환 블록/양자화 블록으로 분할을 수행할 수 있고, 변환 블록은 적어도 하나의 양자화 블록으로 분할을 수행할 수 있다. 여기서, 일부 블록은 다른 블록과 종속적인 관계(즉, 상위 단위와 하위 단위에 의해 정의)일 수 있거나 독립적인 관계를 가질 수 있다. 일 예로, 예측 블록은 변환 블록의 상위 단위일 수 있거나 또는 변환 블록과 독립적인 단위일 수 있으며, 블록의 종류에 따라 다양한 관계 설정이 가능할 수도 있다.
부호화 설정에 따라 상위 단위와 하위 단위의 결합 여부가 정해질 수 있다. 여기서 단위 간의 결합은 상위 단위에서 하위 단위로의 분할을 수행하지 않고, 상위 단위의 블록(크기 및 형태)으로 하위 단위의 부호화 과정(예를 들어, 예측부, 변환부, 역변환부 등)을 수행함을 의미한다. 즉, 복수의 단위에서의 분할 과정이 공유되고 분할 정보는 그 중 하나의 단위(예를 들어, 상위 단위)에서 발생함을 의미할 수 있다.
일 예로, (부호화 블록이 예측 블록, 변환 블록과 결합될 경우) 부호화 블록에서 예측 과정, 변환 및 역변환 과정을 수행할 수 있다.
일 예로, (부호화 블록이 예측 블록과 결합될 경우) 부호화 블록에서 예측 과정을 수행할 수 있고, 부호화 블록과 동일하거나 더 작은 변환 블록에서 변환 및 역변환 과정을 수행할 수 있다.
일 예로, (부호화 블록이 변환 블록과 결합될 경우) 부호화 블록과 동일하거나 더 작은 예측 블록에서 예측 과정을 수행할 수 있고, 부호화 블록에서 변환 및 역변환 과정을 수행할 수 있다.
일 예로, (예측 블록이 변환 블록과 결합된 경우) 부호화 블록과 동일하거나 더 작은 예측 블록에서 예측 과정을 수행할 수 있고, 예측 블록에서 변환 및 역변환 과정을 수행할 수 있다.
일 예로, (어떤 블록에서도 결합되지 않은 경우) 부호화 블록과 동일하거나 더 작은 예측 블록에서 예측 과정을, 부호화 블록과 동일하거나 더 작은 변환 블록에서 변환 및 역변환 과정을 수행할 수 있다.
상기 예에서 부호화, 예측, 변환 블록에 관한 다양한 경우를 설명하였으나, 이에 한정하지 않는다.
상기 단위 간의 결합은 영상에서 고정적인 설정이 지원될 수 있거나 또는 다양한 부호화 요소를 고려하여 적응적인 설정이 지원될 수 있다. 여기서 상기 부호화 요소는 영상 타입, 컬러 성분, 부호화 모드(Intra/Inter), 분할 설정, 블록의 크기/형태/위치, 가로/세로의 길이 비, 예측 관련 정보(예를 들어, 화면내 예측 모드, 화면간 예측 모드 등), 변환 관련 정보(예를 들어, 변환 기법 선택 정보 등), 양자화 관련 정보(예를 들어, 양자화 영역 선택 정보, 양자화된 변환 계수 부호화 정보 등) 등을 포함할 수 있다.
상술한 바와 같이 최적의 크기 및 형태의 블록을 찾은 경우, 이에 대한 모드 정보(예를 들어, 분할 정보 등)가 생성될 수 있다. 모드 정보는 블록이 속하는 구성부에서 발생하는 정보(예를 들어, 예측 관련 정보 및 변환 관련 정보 등)과 함께 비트스트림에 수록되어 복호화기로 전송될 수 있고, 복호화기에서 동일 수준의 단위로 파싱되어 영상 복호화 과정에서 사용될 수 있다.
이하에서는 분할 방식에 대한 설명할 것이며, 설명의 편의를 위해 초기 블록이 정사각 형태인 것을 가정하지만, 초기 블록이 직사각 형태인 경우에도 동일하거나 유사하게 적용할 수 있으므로, 이에 한정되는 것은 아니다.
블록 분할부는 다양한 종류의 분할을 지원할 수 있다. 예를 들어, 트리 기반의 분할 또는 인덱스 기반의 분할을 지원할 수 있고, 그 외의 방법이 지원될 수 있다. 트리 기반의 분할은 다양한 종류의 정보(예를 들어, 분할 여부, 트리 종류, 분할 방향 등)로 분할 형태를 결정할 수 있고, 인덱스 기반의 분할은 소정의 인덱스 정보로 분할 형태를 결정할 수 있다.
도 4는 본 발명의 블록 분할부에서 획득할 수 있는 다양한 분할 형태를 나타낸 예시도이다.
본 예에서는 한 번의 분할 수행(또는 과정)을 통해 도 4와 같은 분할 형태를 획득하는 경우를 가정하지만, 이에 한정되지 않고 복수의 분할 동작을 통해 획득되는 경우 또한 가능할 수 있다. 또한, 도 4에 도시되지 않은 추가적인 분할 형태가 가능할 수 있다.
(트리 기반의 분할)
본 발명의 트리 기반의 분할에서 쿼드 트리(Quad Tree. QT), 바이너리 트리(Binary Tree. BT), 터너리 트리(Ternary Tree. TT) 등이 지원될 수 있다. 하나의 트리 방식이 지원되는 경우는 단일 트리 분할, 둘 이상의 트리 방식이 지원되는 경우는 다중 트리 분할이라 지칭할 수 있다.
QT의 경우 블록이 수평와 수직 방향으로 각각 2분할(즉, 4분할)되는 방식(n)을 의미하고, BT의 경우 블록이 수평 또는 수직 중 한 방향으로 2분할되는 방식(b 내지 g)을 의미하고, TT의 경우 블록이 수평 또는 수직 중 한 방향으로 3분할되는 방식(h 내지 m)을 의미한다.
여기서, QT의 경우 분할 방향을 수평과 수직 중 하나에 한정하여 4분할하는 방식(o, p)을 지원할 수도 있다. 또한, BT의 경우 균등한 크기를 갖는 방식(b, c)만 지원하거나 또는 비균등 크기를 갖는 방식(d 내지 g)만 지원하거나 또는 두 방식을 혼합 지원할 수 있다. 또한, TT의 경우 분할이 특정 방향에 치우치는 배치(좌 -> 우 또는 상 -> 하 방향으로 1:1:2, 2:1:1 등)를 갖는 방식(h, j, k, m)만 지원하거나 또는 중앙에 배치(1:2:1 등)되는 방식(i, l)만 지원하거나 또는 두 방식을 혼합 지원할 수 있다. 또한, 분할 방향을 수평과 수직 방향으로 각각 4분할(즉, 16분할)되는 방식(q) 또한 지원할 수 있다.
그리고 상기 트리 방식 중 수평 분할 방향에 한정하여 z분할하는 방식(b, d, e, h, i, j, o)을 지원하거나 또는 수직 분할 방향에 한정하여 z 분할하는 방식(c, f, g, k, l, m, p)을 지원하거나 또는 두 방식을 혼합 지원할 수 있다. 여기서, z는 2, 3, 4와 같은 2 이상 정수일 수 있다.
본 발명에서 QT는 n, BT는 b와 c, TT는 i와 l을 지원하는 경우를 가정하여 설명한다.
부호화 설정에 따라 상기 트리 분할 중 하나 이상의 방식이 지원될 수 있다. 예를 들어, QT를 지원할 수 있거나 QT/BT를 지원할 수 있거나 QT/BT/TT를 지원할 수 있다.
상기 예는 기본 트리 분할이 QT이며 기타 트리 지원 여부에 따라 BT와 TT가 추가 분할 방식에 포함되는 경우에 대한 예이지만, 다양한 변형이 가능할 수 있다. 이때, 기타 트리 지원 여부에 대한 정보(bt_enabled_flag, tt_enabled_flag, bt_tt_enabled_flag 등. 0 또는 1의 값을 가질 수 있고, 0이면 지원하지 않고 1이면 지원)는 부호화 설정에 따라 묵시적으로 정해지거나 또는 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일, 브릭 등의 단위로 명시적으로 결정될 수 있다.
분할 정보는 분할 여부에 대한 정보(tree_part_flag. 또는, qt_part_flag, bt_part_flag, tt_part_flag, bt_tt_part_flag. 0 또는 1의 값을 가질 수 있고, 0이면 분할되지 않고 1이면 분할)가 포함될 수 있다. 또한, 분할 방식(BT와 TT)에 따라 분할 방향(dir_part_flag. 또는, bt_dir_part_flag, tt_dir_part_flag, bt_tt_dir_part_flag. 0 또는 1의 값을 가질 수 있고, 0이면 <가로/수평>이고 1이면 <세로/수직>)에 대한 정보가 추가될 수 있으며, 이는 분할이 수행되는 경우에 발생 가능한 정보일 수 있다.
복수의 트리 분할이 지원되는 경우에는 다양한 분할 정보 구성이 가능할 수 있다. 다음은 하나의 깊이(Depth) 수준(즉, 지원되는 분할 깊이가 하나 이상으로 설정되어 재귀적인 분할이 가능할 수도 있지만 설명의 편의를 위한 목적)에서 분할 정보가 어떻게 구성되어 있는지에 대한 예로 가정하여 설명한다.
일 예(1)로, 분할 여부에 대한 정보를 확인한다. 이때, 분할이 수행되지 않는 경우라면 분할이 종료된다.
만약 분할이 수행되는 경우라면 분할 종류에 대한 선택 정보(예를 들어, tree_idx. 0이면 QT, 1이면 BT, 2이면 TT)를 확인한다. 이때, 선택되는 분할 종류에 따라 분할 방향 정보를 추가로 확인하고 다음 단계(분할 깊이가 최대에 도달하지 않은 경우 등의 이유로 추가 분할이 가능하다면 다시 처음부터 시작하고, 분할이 불가한 경우라면 분할 종료)로 넘어간다.
일 예(2)로, 일부 트리 방식(QT)에 대한 분할 여부에 대한 정보를 확인하고 다음 단계로 넘어간다. 이때, 분할이 수행되지 않는 경우라면 일부 트리 방식(BT)의 분할 여부에 대한 정보를 확인한다. 이때, 분할이 수행되지 않는 경우라면 일부 트리 방식(TT)의 분할 여부에 대한 정보를 확인한다. 이때, 분할이 수행되지 않는 경우라면 분할이 종료된다.
만약 일부 트리 방식(QT)의 분할이 수행되는 경우라면 다음 단계로 넘어간다. 또한, 만약 일부 트리 방식(BT)의 분할이 수행되는 경우라면 분할 방향 정보를 확인하고 다음 단계로 넘어간다. 또한, 만약 일부 트리 분할 방식(TT)의 분할이 수행되는 경우라면 분할 방향 정보를 확인하고 다음 단계로 넘어간다.
일 예(3)로, 일부 트리 방식(QT)에 대한 분할 여부에 대한 정보를 확인한다. 이때, 분할이 수행되지 않는 경우라면 일부 트리 방식(BT와 TT)의 분할 여부에 대한 정보를 확인한다. 이때, 분할이 수행되지 않는 경우라면 분할이 종료된다.
만약 일부 트리 방식(QT)의 분할이 수행되는 경우라면 다음 단계로 넘어간다. 또한, 만약 일부 트리 방식(BT와 TT)의 분할이 수행되는 경우라면 분할 방향 정보를 확인하고 다음 단계로 넘어간다.
상기 예는 트리 분할의 우선 순위가 존재(2번과 3번 예)하거나 존재하지 않는 경우(1번 예)일 수 있으나, 다양한 변형의 예가 가능할 수 있다. 또한, 상기 예에서 현재 단계의 분할은 이전 단계의 분할 결과와는 무관한 경우를 설명하는 예이지만, 현재 단계의 분할이 이전 단계의 분할 결과에 의존적인 설정 또한 가능할 수 있다.
예를 들어, 1 내지 3번 예의 경우 이전 단계에서 일부 트리 방식의 분할(QT)이 수행되어 현재 단계로 넘어온 경우라면 현재 단계에서도 동일 트리 방식(QT)의 분할이 지원될 수 있다.
반면, 이전 단계에서 일부 트리 방식의 분할(QT)이 수행되지 않고 다른 트리 방식의 분할(BT 또는 TT)이 수행되어 현재 단계로 넘어온 경우라면 일부 트리 방식의 분할(QT)을 제외하고 일부 트리 방식의 분할(BT와 TT)이 현재 단계를 포함한 후속 단계에 지원되는 설정 또한 가능할 수 있다.
위와 같은 경우에는 블록 분할에 지원되는 트리 구성이 적응적일 수 있다는 것을 의미하므로, 전술한 분할 정보 구성 또한 달리 구성될 수 있음을 의미한다. (후술하는 예는 3번 예로 가정) 즉, 상기 예에서 일부 트리 방식(QT)의 분할이 이전 단계에서 수행되지 않았을 경우, 현재 단계에서는 일부 트리 방식(QT)은 고려하지 않고 분할 과정이 수행될 수 있다. 또한, 관련 트리 방식에 관한 분할 정보(예를 들어, 분할 여부에 대한 정보, 분할 방향 정보 등. 본 예<QT>에서는 분할 여부에 대한 정보)는 제거하여 구성될 수 있다.
상기 예는 블록 분할이 허용되는 경우(예를 들어, 블록 크기가 최대값과 최소값 사이의 범위 내에 존재, 각 트리 방식의 분할 깊이가 최대 깊이<허용 깊이>에 도달하지 않음 등)에 대한 적응적인 분할 정보 구성에 관한 경우이며, 블록 분할이 제한되는 경우(예를 들어, 블록 크기가 최대값과 최소값 사이의 범위에 존재하지 않음, 각 트리 방식의 분할 깊이가 최대 깊이에 도달함 등)에도 적응적인 분할 정보 구성이 가능할 수 있다.
이미 언급한 것과 같이 본 발명에서 트리 기반의 분할은 재귀적인 방식을 사용하여 수행될 수 있다. 예를 들어, 분할 깊이가 k인 부호화 블록의 분할 플래그가 0인 경우 부호화 블록의 부호화는 분할 깊이가 k인 부호화 블록에서 수행되며, 분할 깊이가 k인 부호화 블록의 분할 플래그가 1인 경우 부호화 블록의 부호화는 분할 방식에 따라 분할 깊이가 k+1인 N개의 서브 부호화 블록(이때, N은 2, 3, 4와 같은 2 이상의 정수)에서 수행된다.
상기 서브 부호화 블록은 다시 부호화 블록(k+1)으로 설정되어 상기 과정을 거쳐 서브 부호화 블록(k+2)으로 분할될 수 있으며, 이러한 계층적 분할 방식은 분할 범위 및 분할 허용 깊이 등의 분할 설정에 따라 결정될 수 있다.
이때, 분할 정보를 표현하기 위한 비트스트림 구조는 하나 이상의 스캔 방법 중 선택할 수 있다. 예를 들어, 분할 깊이 순서 기준으로 분할 정보의 비트스트림을 구성할 수 있거나 분할 여부 기준으로 분할 정보의 비트스트림을 구성할 수 있다.
예를 들어, 분할 깊이 순서 기준의 경우 최초 블록 기준으로 현 수준의 깊이에서의 분할 정보를 획득한 후 다음 수준의 깊이에서의 분할 정보를 획득하는 방법이며, 분할 여부 기준의 경우 최초 블록 기준으로 분할된 블록에서의 추가 분할 정보를 우선적으로 획득하는 방법을 의미하며, 다른 추가적인 스캔 방법이 고려될 수 있다.
최대 블록의 크기와 최소 블록의 크기는 트리 종류에 상관없이(또는 모든 트리) 공통되는 설정을 가질 수 있거나 또는 각 트리에 따라 개별적인 설정을 가질 수 있거나 또는 둘 이상의 트리에 대한 공통되는 설정을 가질 수 있다. 이때 최대 블록의 크기는 최대 부호화 블록과 같거나 작게 설정될 수 있다. 만약 소정의 제 1 트리에 따른 최대 블록의 크기가 최대 부호화 블록과 동일하지 않다면, 제 1 트리의 최대 블록 크기에 도달할 때까지 소정의 제 2 트리 방식을 사용하여 묵시적으로 분할을 수행한다.
그리고 트리 종류에 상관없이 공통되는 분할 깊이가 지원될 수 있거나 또는 각 트리에 따라 개별적인 분할 깊이가 지원될 수 있거나 또는 둘 이상의 트리에 대한 공통되는 분할 깊이가 지원될 수 있다. 또는, 일부 트리에는 분할 깊이가 지원되고, 일부 트리에는 분할 깊이가 지원되지 않을 수 있다.
상기 설정 정보에 대한 명시적인 구문 요소가 지원될 수 있으며, 일부 설정 정보는 묵시적으로 정해질 수도 있다.
(인덱스 기반의 분할)
본 발명의 인덱스 기반의 분할에서 CSI(Constant Split Index) 방식과 VSI(Variable Split Index) 방식 등이 지원될 수 있다.
CSI 방식은 소정의 방향의 분할을 통해 k개의 서브 블록이 획득되는 방식일 수 있으며, k는 2, 3, 4 등 2 이상의 정수일 수 있다. 상세하게는, 블록의 크기 및 형태에 관계없이 상기 k값에 기반하여 서브 블록의 크기 및 형태가 정해지는 구성의 분할 방식일 수 있다. 여기서, 소정의 방향은 수평, 수직, 대각선(좌상 -> 우하 방향. 또는, 좌하 -> 우상 방향 등) 방향 중 하나 또는 둘 이상의 방향이 결합될 수 있다.
본 발명의 인덱스 기반의 CSI 분할 방식은 수평 또는 수직 중 한 방향으로 z개로 분할되는 후보를 포함할 수 있다. 이때, z는 2, 3, 4와 같은 2 이상 정수일 수 있으며, 각 서브 블록의 가로 또는 세로 길이 중 하나는 동일하고 다른 하나는 동일하거나 상이할 수 있다. 상기 서브 블록의 가로 또는 세로 길이의 비는 A1:A2:...: AZ로 A1 내지 AZ는 1, 2, 3과 같은 1 이상의 정수일 수 있다.
또한, 수평과 수직 방향으로 각각 x, y개로 분할되는 후보를 포함할 수 있다. 이때, x와 y는 1, 2, 3, 4와 같은 1 이상의 정수일 수 있지만, x와 y가 동시에 1인 경우(a가 이미 존재하므로)는 제한할 수 있다. 도 4의 경우 각 서브 블록의 가로 또는 세로 길이의 비율이 동일한 경우를 도시하고 있지만, 상이한 경우를 포함하는 후보를 포함할 수도 있다.
또한, 일부 대각선 방향(좌상 -> 우하 방향) 또는 일부 대각선 방향(좌하 -> 우상 방향) 중 한 방향으로 w개 분할되는 후보를 포함할 수 있으며, w는 2, 3과 같은 2 이상의 정수일 수 있다.
도 4를 참조하면, 각 서브 블록의 길이 비율에 따라 대칭적인 분할 형태(b)와 비대칭적인 분할 형태(d, e)로 구분할 수 있고, 특정 방향에 치우친 분할 형태(k, m)와 중앙에 배치되는 분할 형태(k)로 구분할 수 있다. 서브 블록의 길이 비율뿐만 아니라 서브 블록의 형태 등을 포함하는 다양한 부호화 요소에 의해 분할 형태를 정의할 수 있는데, 부호화 설정에 따라 지원되는 분할 형태가 묵시적으로 또는 명시적으로 정해질 수 있다. 그리하여 지원되는 분할 형태에 기반하여 인덱스 기반의 분할 방식에서의 후보군이 정해질 수 있다.
한편, VSI 방식은 서브 블록의 너비(w) 또는 높이(h)가 고정된 채로 소정의 방향의 분할을 통해 하나 이상의 서브 블록이 획득되는 방식일 수 있으며, w와 h는 1, 2, 4, 8 등과 같은 1 이상의 정수일 수 있다. 상세하게는, 블록의 크기 및 형태와 상기 w 또는 n값에 기반하여 서브 블록의 개수가 정해지는 구성의 분할 방식일 수 있다.
본 발명의 인덱스 기반의 VSI 분할 방식은 서브 블록의 가로 또는 세로 길이 중 하나를 고정하여 분할되는 후보를 포함할 수 있다. 또는, 서브 블록의 가로와 세로 길이를 고정하여 분할되는 후보를 포함할 수 있다. 서브 블록의 가로 또는 세로 길이가 고정되기 때문에 수평 또는 수직 방향으로 균등 분할을 허용하는 특징을 가질 수 있지만, 이에 한정되지 않는다.
분할 전 블록이 M x N이고 서브 블록의 가로 길이가 고정(w)되거나 또는 세로 길이가 고정(h)되거나 또는 가로와 세로 길이가 고정(w, h)되는 경우, 획득되는 서브 블록의 개수는 각각 (M*N)/w, (M*N)/h, (M*N)/w/h 일 수 있다.
부호화 설정에 따라 CSI 방식만 지원되거나 또는 VSI 방식만 지원될 수 있고 두 방식 모두 지원할 수도 있으며, 지원되는 방식에 대한 정보가 묵시적 또는 명시적으로 정해질 수 있다.
본 발명에서는 CSI 방식이 지원되는 경우를 가정하여 설명한다.
부호화 설정에 따라 상기 인덱스 분할 중 둘 이상의 후보를 포함하여 후보군을 구성할 수 있다.
예를 들어, {a, b, c}, {a, b, c, n}, {a 내지 g, n}과 같은 후보군을 구성할 수 있는데, 수평 또는 수직 방향으로 2분할되거나 수평과 수직 방향으로 각각 2분할되는 블록 형태처럼 일반적인 통계적인 특성에 기초하여 많이 발생할 것이라 예측되는 블록 형태를 후보군으로 구성하는 예일 수 있다.
또는, {a, b}, {a, o}, {a, b, o} 또는 {a, c}, {a, p}, {a, c, p}와 같은 후보군을 구성할 수 있는데, 각각 수평과 수직 방향으로 2, 4분할되는 후보를 포함한다. 이는 특정 방향의 분할이 많이 발생할 것이라 예측되는 블록 형태를 후보군으로 구성하는 예일 수 있다.
또는, {a, o, p} 또는 {a, n, q}와 같은 후보군을 구성할 수 있는데, 분할 전 블록보다 더 작은 크기를 갖는 분할이 많이 발생할 것이라 예측되는 블록 형태를 후보군으로 구성하는 예일 수 있다.
또는, {a, r, s}와 같은 후보군을 구성할 수 있는데, 분할 전 블록에서 다른 방식(트리 방식)을 통해 직사각 형태로 얻을 수 있는 최적의 분할 결과를 얻었을 것이라 판단하고 비사각 형태의 분할 형태를 후보군으로 구성하는 예일 수 있다.
상기 예와 같이 다양한 후보군 구성이 가능할 수 있으며, 하나 이상의 후보군 구성이 다양한 부호화 요소를 고려하여 지원될 수 있다.
상기 후보군 구성이 완료되면 다양한 분할 정보 구성이 가능할 수 있다.
예를 들어, 분할되지 않는 후보(a)와 분할되는 후보(b 내지 s)를 포함하여 구성되는 후보군에서 인덱스 선택 정보가 발생할 수 있다.
또는, 분할 여부를 나타내는 정보(분할 형태가 a인지 아닌지)가 발생할 수 있고, 분할이 수행되는 경우(a가 아닌 경우)에 분할되는 후보(b 내지 s)로 구성되는 후보군에서 인덱스 선택 정보가 발생할 수 있다.
상기 설명 외의 다양한 방식의 분할 정보 구성이 가능할 수 있으며, 상기 분할 여부를 나타내는 정보를 제외하고는 후보군에서 각 후보의 인덱스에 고정 길이 이진화, 가변 길이 이진화 등의 다양한 방법을 통해 이진 비트가 할당될 수 있다. 만약 후보군의 개수가 2개인 경우 인덱스 선택 정보에 1비트가 할당될 수 있고, 3개 이상인 경우 인덱스 선택 정보에 1비트 이상이 할당될 수 있다.
트리 기반의 분할 방식과 달리 인덱스 기반의 분할 방식은 많이 발생할 것이라 예측되는 분할 형태를 선별적으로 후보군에 구성하는 방식일 수 있다.
그리고 지원되는 후보군의 개수에 따라 인덱스 정보를 표현하기 위한 비트량이 증가할 수 있기 때문에, 트리 기반의 방식의 계층적 분할(재귀적인 분할)이 아닌 단일 계층 분할(예를 들어, 분할 깊이가 0으로 한정)에 적합한 방식일 수 있다. 즉, 한 번의 분할 동작을 지원하는 방식일 수 있으며, 인덱스 기반의 분할을 통해 획득된 서브 블록은 더 이상의 추가 분할은 불가능한 방식일 수 있다.
이때, 더 작은 크기를 갖는 동일한 종류의 블록으로의 추가 분할이 불가능한 경우(예를 들어, 인덱스 분할 방식을 통해 획득된 부호화 블록은 부호화 블록으로의 추가 분할이 불가)를 의미할 수 있으나, 다른 종류의 블록으로의 추가 분할이 불가능한 설정(예를 들어, 부호화 블록에서 부호화 블록뿐만 아니라 예측 블록으로의 분할도 불가) 또한 가능할 수 있다. 물론, 상기 예에 제한되지 않으며, 다른 변형의 예가 가능할 수도 있다.
다음은 부호화 요소 중 블록의 종류를 중심으로 블록 분할 설정이 정해지는 경우를 살펴본다.
우선, 분할 과정을 통해 부호화 블록이 획득될 수 있다. 여기서, 분할 과정은 트리 기반의 분할 방식이 사용될 수 있고, 트리 종류에 따라 도 4의 a(no split), n(QT), b, c(BT), i, l(TT) 등의 분할 형태 결과가 나올 수 있다. 부호화 설정에 따라 QT/QT+BT/QT+BT+TT 등과 같은 각 트리 종류의 다양한 조합이 가능할 수 있다.
후술하는 예는 상기 과정을 통해 획득된 부호화 블록을 기초로 예측 블록과 변환 블록이 최종 구획되는 과정을 나타내고, 각 구획된 크기에 기반하여 예측과 변환 및 역변환 과정이 수행되는 경우를 가정한다.
일 예(1)로, 부호화 블록의 크기 그대로 예측 블록이 설정되어 예측 과정을 수행할 수 있고, 부호화 블록(또는 예측 블록)의 크기 그대로 변환 블록이 설정되어 변환 및 역변환 과정을 수행할 수 있다. 예측 블록과 변환 블록의 경우 부호화 블록에 기반하여 설정되었기 때문에 따로 발생하는 분할 정보는 존재하지 않는다.
일 예(2)로, 부호화 블록의 크기 그대로 예측 블록이 설정되어 예측 과정을 수행할 수 있다. 변환 블록의 경우 부호화 블록(또는 예측 블록)을 기초로 분할 과정을 통해 변환 블록이 획득될 수 있고, 획득된 크기에 기반하여 변환 및 역변환 과정을 수행할 수 있다.
여기서, 분할 과정은 트리 기반의 분할 방식이 사용될 수 있고, 트리 종류에 따라 도 4의 a(no split), b, c(BT), i, l(TT), n(QT) 등의 분할 형태 결과가 나올 수 있다. 부호화 설정에 따라 QT/BT/QT+BT/QT+BT+TT 등과 같은 각 트리 종류의 다양한 조합이 가능할 수 있다.
여기서, 분할 과정은 인덱스 기반의 분할 방식이 사용될 수 있고, 인덱스 종류에 따라 도 4의 a(no split), b, c, d 등의 분할 형태 결과가 나올 수 있다. 부호화 설정에 따라 {a, b, c}, {a, b, c, d} 등과 같은 다양한 후보군 구성이 가능할 수 있다.
일 예(3)로, 예측 블록의 경우 부호화 블록을 기초로 분할 과정을 수행하여 예측 블록이 획득될 수 있고, 획득된 크기에 기반하여 예측 과정을 수행할 수 있다. 변환 블록의 경우 부호화 블록의 크기 그대로 설정되어 변환 및 역변환 과정을 수행할 수 있다. 본 예는 예측 블록과 변환 블록이 서로 독립적인 관계를 갖는 경우에 해당할 수 있다.
여기서, 분할 과정은 인덱스 기반의 분할 방식이 사용될 수 있고, 인덱스 종류에 따라 도 4의 a(no split), b 내지 g, n, r, s 등의 분할 형태 결과가 나올 수 있다. 부호화 설정에 따라 {a, b, c, n}, {a 내지 g, n}, {a, r, s} 등과 같은 다양한 후보군 구성이 가능할 수 있다.
일 예(4)로, 예측 블록의 경우 부호화 블록을 기초로 분할 과정을 수행하여 예측 블록이 획득될 수 있고, 획득된 크기에 기반하여 예측 과정을 수행할 수 있다. 변환 블록의 경우 예측 블록의 크기 그대로 설정되어 변환 및 역변환 과정을 수행할 수 있다. 본 예는 획득된 예측 블록 크기 그대로 변환 블록이 설정되는 경우일 수 있거나 또는 그 반대의 경우(변환 블록 크기 그대로 예측 블록이 설정)일 수 있다.
여기서, 분할 과정은 트리 기반의 분할 방식이 사용될 수 있고, 트리 종류에 따라 도 4의 a(no split), b, c(BT), n(QT) 등의 분할 형태가 나올 수 있다. 부호화 설정에 따라 QT/BT/QT+BT 등과 같은 각 트리 종류의 다양한 조합이 가능할 수 있다.
여기서, 분할 과정은 인덱스 기반의 분할 방식이 사용될 수 있고, 인덱스 종류에 따라 도 4의 a(no split), b, c, n, o, p 등의 분할 형태가 나올 수 있다. 부호화 설정에 따라 {a, b}, {a, c}, {a, n}, {a, o}, {a, p}, {a, b, c}, {a, o, p}, {a, b, c, n}, {a, b, c, n, p} 등과 같은 다양한 후보군 구성이 가능할 수 있다. 또한, 인덱스 기반의 분할 방식 중 VSI 방식이 단독으로 또는 상기 CSI 방식과 혼합되어 후보군이 구성될 수도 있다.
일 예(5)로, 예측 블록의 경우 부호화 블록을 기초로 분할 과정을 수행하여 예측 블록이 획득될 수 있고, 획득된 크기에 기반하여 예측 과정을 수행할 수 있다. 또한, 변환 블록의 경우도 부호화 블록을 기초로 분할 과정을 수행하여 예측 블록이 획득될 수 있고, 획득된 크기에 기반하여 변환 및 역변환 과정을 수행할 수 있다. 본 예는 부호화 블록을 기초로 예측 블록과 변환 블록 각각의 분할을 수행하는 경우일 수 있다.
여기서, 분할 과정은 트리 기반의 분할 방식과 인덱스 기반의 분할 방식이 사용될 수 있으며, 4번 예와 동일하거나 비슷하게 후보군이 구성될 수 있다.
상기 예는 각 종류의 블록의 분할 과정이 공유되는지 여부 등에 따라 발생 가능한 일부 경우를 설명하고 있지만, 이에 한정되지 않고 다양한 변형의 예가 가능할 수 있다. 또한, 블록의 종류뿐만 아니라 다양한 부호화 요소가 고려되어 블록 분할 설정이 정해질 수 있다.
이때, 부호화 요소는 영상 타입(I/P/B), 컬러 성분(YCbCr), 블록의 크기/형태/위치, 블록의 가로/세로 길이 비, 블록의 종류(부호화 블록, 예측 블록, 변환 블록, 양자화 블록 등), 분할 상태, 부호화 모드(Intra/Inter), 예측 관련 정보(화면내 예측 모드, 화면간 예측 모드 등), 변환 관련 정보(변환 기법 선택 정보 등), 양자화 관련 정보(양자화 영역 선택 정보, 양쟈화된 변환 계수 부호화 정보 등) 등이 포함될 수 있다.
본 발명의 일 실시예에 따른 영상 부호화 방법에서 화면간 예측은 다음과 같이 구성될 수 있다. 예측부의 화면간 예측은 참조 픽쳐 구성 단계, 움직임 추정 단계, 움직임 보상 단계, 움직임 정보 결정 단계 및 움직임 정보 부호화 단계를 포함할 수 있다. 또한, 영상 부호화 장치는 참조 픽쳐 구성 단계, 움직임 추정 단계, 움직임 보상 단계, 움직임 정보 결정 단계 및 움직임 정보 부호화 단계를 구현하는 참조 픽쳐 구성부, 움직임 추정부, 움직임 보상부, 움직임 정보 결정부 및 움직임 정보 부호화부를 포함하도록 구성할 수 있다. 전술한 과정의 일부는 생략될 수 있거나 다른 과정이 추가될 수 있고, 상기 기재된 순서가 아닌 다른 순서로 변경될 수 있다.
본 발명의 일 실시예에 따른 영상 복호화 방법에서 화면간 예측은 다음과 같이 구성될 수 있다. 예측부의 화면간 예측은 움직임 정보 복호화 단계, 참조 픽쳐 구성 단계, 움직임 보상 단계를 포함할 수 있다. 또한, 영상 복호화 장치는 움직임 정보 복호화 단계, 참조 픽쳐 구성 단계, 움직임 보상 단계를 구현하는 움직임 정보 복호화부, 참조 픽쳐 구성부, 움직임 보상부를 포함하도록 구성할 수 있다. 전술한 과정의 일부는 생략될 수 있거나 다른 과정이 추가될 수 있고, 상기 기재된 순서가 아닌 다른 순서로 변경될 수 있다.
영상 복호화 장치의 참조 픽쳐 구성부, 움직임 보상부는 영상 부호화 장치의 대응되는 구성과 동일한 역할을 수행하므로 상세한 설명은 생략하며, 움직임 정보 복호화부는 움직임 정보 부호화부에서 사용한 방식을 역으로 사용하여 수행될 수 있다. 여기서, 움직임 보상부를 통해 생성되는 예측 블록은 가산부로 송신할 수 있다.
도 5는 본 발명의 화면간 예측을 통해 예측 블록을 획득하는 다양한 경우를 나타내는 예시도이다.
도 5를 참조하면, 단방향 예측은 이전에 부호화된 참조 픽쳐(T-1, T-2)로부터 예측 블록(A. 전방향 예측)을 획득할 수 있거나 이후에 부호화된 참조 픽쳐(T+1, T+2)로부터 예측 블록(B. 후방향 예측)을 획득할 수 있다. 양방향 예측은 이전에 부호화된 복수의 참조 픽쳐(T-2 내지 T+2)로부터 예측 블록(C, D)을 생성할 수 있다. 일반적으로 P 영상 타입은 단방향, B 영상 타입은 양방향 예측을 지원할 수 있다.
상기 예와 같이 현재 픽쳐의 부호화에 참조되는 픽쳐는 메모리로부터 획득될 수 있으며 현재 픽쳐(T)를 기준으로 시간 순서 또는 디스플레이 순서(Display Order)가 현재 픽쳐 이전의 참조 픽쳐와 이후의 참조 픽쳐를 포함하여 참조 픽쳐 리스트를 구성할 수 있다.
현재 영상을 기준으로 이전 또는 이후 영상뿐만 아니라 현재 영상에서 화면간 예측(E)을 수행할 수 있다. 현재 영상에서 화면간 예측을 수행하는 것을 무방향 예측(Non-directional Prediction)이라 지칭할 수 있다. 이는 I 영상 타입에서 지원되거나 또는 P/B 영상 타입에서 지원될 수 있으며, 부호화 설정에 따라 지원되는 영상 타입이 정해질 수 있다. 현재 영상에서 화면간 예측을 수행하는 것은 공간적 상관성을 이용하여 예측 블록을 생성하는 것으로 시간적 상관성을 이용하기 위한 목적으로 다른 영상에서 화면간 예측을 수행하는 것이 다를 뿐 예측 방법(예를 들어, 참조 영상, 움직임 벡터 등)은 동일할 수 있다.
여기서, 화면간 예측을 수행할 수 있는 영상 타입으로 P와 B 픽쳐인 경우를 가정하였으나, 그 외의 추가 또는 대체되는 다양한 영상 타입에도 적용가능할 수 있다. 예를 들어, 소정의 영상 타입은 화면내 예측은 지원하지 않고 오직 화면간 예측만을 지원할 수 있고, 소정의 방향(후방향)의 화면간 예측만 지원할 수 있고, 소정의 방향의 화면간 예측만 지원할 수 있다.
참조 픽쳐 구성부에서는 참조 픽쳐 리스트를 통해 현재 픽쳐의 부호화에 사용되는 참조 픽쳐를 구성하고 관리할 수 있다. 부호화 설정(예를 들어, 영상 타입, 예측 방향 등)에 따라 적어도 하나의 참조 픽쳐 리스트를 구성할 수 있으며, 참조 픽쳐 리스트에 포함된 참조 픽쳐로부터 예측 블록을 생성할 수 있다.
단방향 예측의 경우 참조 픽쳐 리스트 0(L0) 또는 참조 픽쳐 리스트 1(L1)에 포함된 적어도 하나의 참조 픽쳐에서 화면간 예측을 수행할 수 있다. 또한, 양방향 예측의 경우 L0와 L1을 결합하여 생성되는 복합 리스트(LC)에 포함된 적어도 하나의 참조 픽쳐에서 화면간 예측을 수행할 수 있다.
예를 들어, 단방향 예측은 전방향 참조 픽쳐 리스트(L0)를 사용한 전방향 예측(Pred_L0)와 후방향 참조 픽쳐 리스트(L1)를 사용한 후방향 예측(Pred_L1)으로 구분할 수 있다. 양방향 예측(Pred_BI)는 전방향 참조 픽쳐 리스트(L0)와 후방향 참조 픽쳐 리스트(L1)을 모두 사용할 수 있다.
또는, 전방향 참조 픽쳐 리스트(L0)를 후방향 참조 픽쳐 리스트(L1)에 복사하여, 2개 이상의 전방향 예측을 수행하는 것도 양방향 예측에 포함될 수 있고, 후방향 참조 픽쳐 리스트(L1)를 전방향 참조 픽쳐 리스트(L0)에 복사하여, 2개 이상의 후방향 예측을 수행하는 것도 양방향 예측에 포함될 수 있다.
상기 예측 방향은 해당 방향을 지시하는 플래그 정보(예를 들어, inter_pred_idc. 이 값은 predFlagL0, predFlagL1, predFlagBI에 의해서 조정 가능하다고 가정)에 의해 나타낼 수 있다. predFlagL0는 전방향 예측 여부를 나타내고, predFlagL1은 후방향 예측 여부를 나타낸다. 양방향 예측은 predFlagBI를 통해 예측 여부를 나타내거나 predFlagL0와 predFlagL1이 동시에 활성화함(예를 들어, 각 플래그가 1일 경우)으로써 나타낼 수 있다.
본 발명에서는 전방향 참조 픽쳐 리스트를 사용하는 전방향 예측이자 단방향 예측인 경우를 중심으로 설명하지만, 상기 다른 경우에도 동일하거나 변경 적용이 가능할 수 있다.
일반적으로 부호화하는 픽쳐에 대한 최적의 참조 픽쳐를 부호화기에서 결정하고, 해당 참조 픽쳐에 대한 정보를 복호화기로 명시적으로 전송하는 방법을 사용할 수 있다. 이를 위해 참조 픽쳐 구성부는 현재 픽쳐의 화면간 예측에 참조되는 픽쳐 리스트에 대한 관리를 수행할 수 있으며, 제한적인 메모리 크기를 고려하여 참조 픽쳐 관리를 위한 규칙을 설정할 수 있다.
상기 전송되는 정보를 RPS(Reference Picture Set)라 정의할 수 있으며, RPS에 선택된 픽쳐는 참조 픽쳐로 구분되어 메모리(또는 DPB)에 저장되고, RPS에 선택되지 않은 픽쳐들은 비 참조 픽쳐로 구분되어 일정 시간 후에 메모리에서 제거될 수 있다. 메모리에는 기 설정된 수의 픽쳐(예를 들어, 14, 15, 16개 픽쳐 또는 그 이상)를 저장할 수 있으며, 레벨과 영상의 해상도에 따라 메모리의 크기가 설정될 수 있다.
도 6은 본 발명의 일 실시예에 따른 참조 픽쳐 리스트를 구성하는 예시도이다.
도 6을 참조하면, 일반적으로 현재 픽쳐 이전에 존재하는 참조 픽쳐(T-1, T-2)는 L0에 할당되고 현재 픽쳐 이후에 존재하는 참조 픽쳐(T+1, T+2)는 L1에 할당되어 관리될 수 있다. L0를 구성할 때, L0의 참조 픽쳐 허용 개수까지 채우지 못할 경우 L1의 참조 픽쳐를 할당할 수 있다. 이와 비슷하게 L1을 구성할 때, L1의 참조 픽쳐 허용 개수까지 채우지 못할 경우 L0의 참조 픽쳐를 할당할 수 있다.
또한, 현재 픽쳐를 적어도 하나의 참조 픽쳐 리스트에 포함할 수 있다. 예를 들어, L0 또는 L1에 현재 픽쳐를 포함할 수 있으며, 현재 픽쳐 이전의 참조 픽쳐에 시간적 순서가 T인 참조 픽쳐(또는 현재 픽쳐)를 추가하여 L0를 구성할 수 있고, 현재 픽쳐 이후의 참조 픽쳐에 시간적 순서가 T인 참조 픽쳐를 추가하여 L1을 구성할 수 있다.
참조 픽쳐 리스트 구성은 부호화 설정에 따라 정해질 수 있다.
현재 픽쳐를 참조 픽쳐 리스트에 포함하지 않고, 참조 픽쳐 리스트와 구분되는 개별적인 메모리를 통해 관리할 수 있거나 또는 현재 픽쳐를 적어도 하나의 참조 픽쳐 리스트에 포함하여 관리할 수 있다.
예를 들어, 현재 픽쳐의 참조 픽쳐 리스트 포함 여부를 지시하는 신호(curr_pic_ref_enabled_flag)에 의해 결정될 수 있다. 여기서, 상기 신호는 묵시적으로 결정되거나 명시적으로 발생하는 정보일 수 있다.
상세하게는, 상기 신호가 비활성화된 경우(예를 들어, curr_pic_ref_enabled_flag = 0)에는 어떤 참조 픽쳐 리스트에도 현재 픽쳐를 참조 픽쳐로 포함하지 않고, 상기 신호가 활성화된 경우(예를 들어, curr_pic_ref_enabled_flag = 1)에는 소정의 참조 픽쳐 리스트에 현재 픽쳐를 포함할 지 여부가 묵시적(예를 들어, L0에만 추가, L1에만 추가, L0와 L1에 동시에 추가 가능)으로 정해지거나 또는 명시적으로 관련 신호(예를 들어, curr_pic_ref_from_l0_flag, curr_pic_ref_from_l1_flag)가 생성되어 결정될 수 있다. 상기 신호는 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일, 브릭 등의 단위에서 지원될 수 있다.
여기서, 현재 픽쳐는 도 6과 같이 참조 픽쳐 리스트의 첫 번째 또는 마지막 순서에 위치할 수 있으며, 부호화 설정(예를 들어, 영상의 타입 정보 등)에 따라 리스트 내의 배치 순서가 정해질 수 있다. 예를 들어, I 타입에는 첫 번째에 위치할 수 있고 P/B 타입에는 마지막에 위치할 수 있으며, 이에 한정되지 않고 다른 변형의 예가 가능할 수 있다.
또는, 현재 픽쳐에서 블록 매칭(또는 템플릿 매칭)을 지원 여부를 지시하는 신호(ibc_enabled_flag)에 따라 개별적인 참조 픽쳐 메모리를 지원할 수 있다. 여기서, 상기 신호는 묵시적으로 결정되거나 명시적으로 발생하는 정보일 수 있다.
상세하게는, 상기 신호가 비활성화된 경우(예를 들어, ibc_enabled_flag = 0)에는 현재 픽쳐에서 블록 매칭을 지원하지 않는다는 것을 의미하고, 상기 신호가 활성화된 경우(예를 들어, ibc_enabled_flag = 1)에는 현재 픽쳐에서 블록 매칭을 지원하며 이를 위한 참조 픽쳐 메모리를 지원할 수 있다. 본 예에서는 추가적인 메모리를 제공하는 것을 가정하였지만, 추가적인 메모리를 제공하지 않고 현재 픽쳐를 위해 지원되는 기존 메모리에서 직접 블록 매칭을 지원하는 설정 또한 가능할 수 있다.
참조 픽쳐 구성부는 참조 픽쳐 보간부를 포함할 수 있으며, 화면간 예측의 보간 정밀도에 따라 소수 단위의 화소를 위한 보간 과정의 수행 여부가 결정될 수 있다. 예를 들어, 정수 단위의 보간 정밀도를 갖는 경우에는 참조 픽쳐 보간 과정은 생략되고, 소수 단위의 보간 정밀도를 갖는 경우에는 참조 픽쳐 보간 과정을 수행할 수 있다.
참조 픽쳐 보간 과정에 사용되는 보간 필터의 경우 부호화 설정에 따라 묵시적으로 정해질 수 있거나 또는 복수의 보간 필터 중에서 명시적으로 결정될 수 있다. 상기 복수의 보간 필터의 구성은 고정적인 후보를 지원하거나 또는 부호화 설정에 따라 적응적인 후보를 지원할 수 있으며, 후보의 개수는 2, 3, 4 또는 그 이상의 정수일 수 있다. 상기 명시적으로 결정되는 단위는 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일, 브릭, 블록 등에서 정해질 수 있다.
여기서, 부호화 설정은 영상 타입, 컬러 성분, 대상 블록의 상태 정보(예로, 블록의 크기, 형태, 가로/세로 길이 비 등), 화면간 예측 설정(예로, 움직임 정보 부호화 모드, 움직임 모델 선택 정보, 움직임 벡터 정밀도 선택 정보, 참조 픽쳐, 참조 방향 등) 등에 따라 정해질 수 있다. 상기 움직임 벡터 정밀도는 움직임 벡터(즉, pmv + mvd)의 정밀도를 의미할 수 있으나, 움직임 벡터 예측값(pmv) 또는 움직임 벡터 차분치(mvd)의 정밀도로 대체될 수도 있다.
여기서, 보간 필터의 경우 k-tap의 필터 길이를 가질 수 있으며, k는 2, 3, 4, 5, 6, 7, 8 또는 그 이상의 정수일 수 있다. 필터 계수는 위너 필터, 칼만 필터 등 다양한 계수 특성을 갖는 수식으로부터 유도 가능할 수 있다. 보간에 사용되는 필터 정보(예로, 필터 계수, 탭 정보 등)는 묵시적으로 정해지거나 유도될 수 있고, 또는 관련 정보가 명시적으로 생성될 수 있다. 이때, 필터 계수는 0을 포함하여 구성될 수 있다.
상기 보간 필터는 소정의 화소 단위에 적용될 수 있는데, 소정의 화소 단위는 정수 또는 소수 단위에 한정되거나 정수와 소수 단위에 적용될 수 있다.
예를 들어, 보간 대상 화소(즉, 소수 단위 화소)를 중심으로 수평 방향 또는 수직 방향으로 인접한 k개의 정수 단위 화소에 보간 필터를 적용할 수 있다.
또는, 보간 대상 화소를 중심으로 수평 방향 또는 수직 방향으로 인접한 p개의 정수 단위 화소와 q개의 소수 단위 화소(p+q = k)에 보간 필터를 적용할 수 있다. 이때, 보간에 참조되는 소수 단위의 정밀도(예로, 1/4 단위)는 보간 대상 화소보다 동일하거나 더 낮은 정밀도(예로, 2/4 -> 1/2)로 표현될 수 있다.
보간 대상 화소의 x, y 성분 중 하나만 소수 단위에 위치할 경우, 소수 단위의 성분 방향(예로, x축은 수평, y축은 수직)으로 인접한 k개의 화소에 기반하여 보간을 수행할 수 있다. 보간 대상 화소의 x, y 성분 둘다 소수 단위에 위치할 경우, 수평/수직 중 어느 한 방향으로 인접한 x개의 화소에 기반하여 1차 보간을 수행하고, 나머지 방향으로 인접한 y개의 화소에 기반하여 보간을 수행할 수 있다. 이때, x와 y는 k와 동일한 경우를 설명하나,이에 한정되지 않으며 x와 y는 상이한 경우도 발생할 수 있다.
상기 보간 대상 화소는 보간 정밀도(1/m)에 의해 획득될 수 있으며, m은 1, 2, 4, 8, 16, 32 또는 그 이상의 정수일 수 있다. 보간 정밀도는 부호화 설정에 따라 묵시적으로 정해질 수 있거나 또는 명시적으로 관련 정보를 생성할 수 있다. 상기 부호화 설정은 영상 타입, 컬러 성분, 참조 픽쳐, 움직임 정보 부호화 모드, 움직임 모델 선택 정보 등에 기반하여 정의될 수 있다. 상기 명시적으로 정해지는 단위는 시퀀스, 서브 픽쳐, 슬라이스, 타일, 브릭 등에서 정해질 수 있다.
상기 과정을 통해 대상 블록의 보간 필터 설정을 획득하고, 그에 기반하여 참조 픽쳐 보간을 수행할 수 있다. 또한, 상기 보간 필터 설정에 기반한 세부 보간 필터 설정을 획득하고, 그에 기반하여 참조 픽쳐 보간을 수행할 수 있다. 즉, 대상 블록의 획득된 보간 필터 설정이란 하나의 고정적인 후보를 획득한 것일 수도 있지만, 복수의 후보의 사용 가능성을 획득한 것일 수도 있음을 가정한다. 후술하는 예의 보간 정밀도는 1/16 단위인 경우(예로, 보간 대상 화소는 15개)를 가정한다.
상기 세부 보간 필터 설정에 대한 예로, 소정의 위치의 제 1 화소 단위에는 복수의 후보 중에 하나가 적응적으로 사용될 수 있고, 소정의 위치의 제 2 화소 단위에는 미리 정해진 하나의 보간 필터가 사용될 수 있다.
상기 제 1 화소 단위는 보간 정밀도에 의해 지원되는 전체 소수 단위의 화소(본 예에서 1/16 내지 15/16) 중에서 정해질 수 있으며, 제 1 화소 단위에 포함되는 화소의 개수는 a개일 수 있고, a는 0, 1, 2, … (m - 1)개 사이에서 정해질 수 있다.
상기 제 2 화소 단위는 전체 소수 단위의 화소에서 제 1 화소 단위를 제외한 화소를 포함할 수 있으며, 제 2 화소 단위에 포함되는 화소의 개수는 보간 대상 화소의 총 개수에서 제 1 화소 단위의 화소를 제하여 유도될 수 있다. 본 예에서는 화소 단위를 2개로 구분하는 예를 설명하지만, 이에 한정하지 않고 3개 이상으로 구분하는 경우 또한 가능할 수 있다.
예를 들어, 제 1 화소 단위는 1/2, 1/4, 1/8 등의 배수 단위에서 표현되는 단위일 수 있다. 일 예로, 1/2 단위의 경우 8/16, 1/4 단위의 경우 {4/16, 8/16, 12/16}, 1/8 단위의 경우 {2/16, 4/16, 6/16, 8/16, 10/16, 12/16, 14/16} 위치의 화소일 수 있다.
세부 보간 필터 설정은 부호화 설정에 따라 정해질 수 있는데, 부호화 설정은 영상 타입, 컬러 성분, 대상 블록의 상태 정보, 화면간 예측 설정 등에 의해 정의될 수 있다. 다음은 다양한 부호화 요소에 따른 세부 보간 필터 설정에 관한 예를 살펴본다. 설명의 편의를 위해 a가 0인 경우와 c 이상인 경우(c는 1 이상 정수)를 가정한다.
예를 들어, 컬러 성분(휘도, 색차)의 경우 a는 (1, 0), (0, 1), (1, 1)일 수 있다. 또는, 움직임 정보 부호화 모드(병합 모드, 경쟁 모드)의 경우 a는 (1, 0), (0, 1), (1, 1), (1, 3)일 수 있다. 또는, 움직임 모델 선택 정보(이동 움직임, 이동 외 움직임 A, 이동 외 움직임 B)의 경우 (0, 1, 1), (1, 0, 0), (1, 1, 1), (1, 3, 7)일 수 있다. 또는, 움직임 벡터 정밀도(1/2, 1/4, 1/8)의 경우 (0, 0, 1), (0, 1, 0), (1, 0, 0), (0, 1, 1), (1, 0, 1), (1, 1, 0), (1, 1, 1)일 수 있다. 또는, 참조 픽쳐(현재 픽쳐, 다른 픽쳐)의 경우 (0, 1), (1, 0), (1, 1)일 수 있다.
전술한 것과 같이 복수의 보간 정밀도 중 하나를 선택하여 보간 과정이 수행될 수 있으며, 적응적인 보간 정밀도에 따른 보간 과정이 지원되는 경우(예를 들어, adaptive_ref_resolution_enabled_flag. 0이면 기 설정된 보간 정밀도를 사용하고, 1이면 복수의 보간 정밀도 중 하나를 사용)에는 정밀도 선택 정보(예를 들어, ref_resolution_idx)가 생성될 수 있다.
보간 정밀도에 따라 움직임 추정 및 보상 과정이 수행될 수 있으며, 움직임 벡터에 대한 표현 단위 및 저장 단위도 보간 정밀도에 기반하여 결정될 수 있다.
예를 들어, 보간 정밀도가 1/2 단위일 경우에는 움직임 추정 및 보상 과정은 1/2 단위로 수행이 되며, 움직임 벡터는 1/2 단위로 표현되고 부호화 과정에 사용될 수 있다. 또한, 움직임 벡터는 1/2 단위로 저장되어 다른 블록의 움직임 정보 부호화 과정에 참조될 수 있다.
또는, 보간 정밀도가 1/8 단위일 경우 움직임 추정 및 보상 과정은 1/8 단위로 수행이 되며, 움직임 벡터는 1/8 단위로 표현되어 부호화 과정에 사용될 수 있고 1/8 단위로 저장될 수 있다.
또한, 움직임 추정 및 보상 과정과 움직임 벡터는 정수, 1/2, 1/4 단위 등 보간 정밀도와 다른 단위로 수행, 표현 및 저장될 수 있는데, 이는 화면간 예측 방법/설정(예를 들어, 움직임 추정/보상 방법, 움직임 모델 선택 정보, 움직임 정보 부호화 모드 등)에 따라 적응적으로 결정될 수 있다.
일 예로, 보간 정밀도는 1/8 단위라 가정할 때, 이동 움직임 모델의 경우 움직임 추정 및 보상 과정은 1/4 단위에서 수행되고 움직임 벡터는 1/4 단위로 표현(본 예는 부호화 과정에서 단위를 가정)되며 1/8 단위로 저장될 수 있다. 이동 외 움직임 모델의 경우 움직임 추정 및 보상 과정은 1/8 단위에서 수행되고 움직임 벡터는 1/4 단위로 표현되며 1/8 단위로 저장될 수 있다.
일 예로, 보간 정밀도는 1/8 단위라 가정할 때, 블록 매칭의 경우 움직임 추정 및 보상 과정은 1/4 단위에서 수행되고 움직임 벡터는 1/4 단위로 표현되며 1/8 단위로 저장될 수 있다. 템플릿 매칭의 경우 움직임 추정 및 보상 과정은 1/8 단위에서 수행되고 움직임 벡터는 1/8 단위에서 표현되며 1/8 단위로 저장될 수 있다.
일 예로, 보간 정밀도는 1/16 단위라 가정할 때, 경쟁 모드의 경우 움직임 추정 및 보상 과정은 1/4 단위에서 수행되고 움직임 벡터는 1/4 단위로 표현되며 1/16 단위로 저장될 수 있다. 병합 모드의 경우 움직임 추정 및 보상 과정은 1/8 단위에서 수행되고 움직임 벡터는 1/4 단위로 표현되며 1/16 단위로 저장될 수 있다. 스킵 모드의 경우 움직임 추정 및 보상 과정은 1/16 단위로 수행되고 움직임 벡터는 1/4 단위로 표현되며 1/16 단위로 저장될 수 있다.
정리하면, 화면간 예측 방법 또는 설정, 그리고 보간 정밀도에 기반하여 움직임 추정 및 보상과 움직임 벡터 표현 및 저장 단위가 적응적으로 결정될 수 있다. 상세하게는, 화면간 예측 방법 또는 설정에 따라 움직임 추정 및 보상과 움직임 벡터 표현 단위는 적응적으로 정해질 수 있고 움직임 벡터의 저장 단위는 보간 정밀도에 따라 정해지는 것이 일반적일 수 있으나, 이에 한정하지 않고 다양한 변형의 예가 가능할 수 있다. 또한, 상기 예에서는 하나의 카테고리(예를 들어, 움직임 모델 선택 정보, 움직임 추정/보상 방법 등)에 따른 예시를 들었으나 둘 이상의 카데고리가 혼합되어 상기 설정이 정해지는 경우 또한 가능할 수 있다.
또한, 전술한 것과 같이 보간 정밀도 정보가 기 설정된 값을 갖거나 복수의 정밀도 중 하나로 선택되는 것에 역으로 화면간 예측 방법 또는 설정에 따라 지원되는 움직임 추정 및 보상 설정에 따라 참조 픽쳐 보간 정밀도가 정해질 수 있다. 예를 들어, 이동 움직임 모델의 경우 1/8 단위까지 지원하고 이동 외 움직임 모델의 경우 1/16 단위까지 지원할 때, 최고로 높은 정밀도를 갖는 이동 외 움직임 모델의 정밀도 단위에 맞춰 보간 과정이 수행될 수 있다.
즉, 이동 움직임 모델, 이동 외 움직임 모델, 경쟁 모드, 병합 모드, 스킵 모드 등의 지원되는 정밀도 정보에 대한 설정에 따라 참조 픽쳐 보간이 수행될 수 있다. 이 경우 상기 정밀도 정보가 묵시적 또는 명시적으로 정해질 수 있으며, 관련 정보가 명시적으로 생성되는 경우 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일, 브릭 등의 단위에 포함될 수 있다.
움직임 추정부는 대상 블록이 소정의 참조 픽쳐의 소정의 블록과 상관성이 높은지를 추정(또는 탐색)하는 과정을 의미한다. 예측이 수행되는 대상 블록의 크기 및 형태(M x N)는 블록 분할부로부터 획득될 수 있다. 일 예로, 대상 블록은 4×4 내지 128×128 범위에서 결정될 수 있다. 화면간 예측은 예측 블록 단위로 수행되는 것이 일반적일 수 있으나 블록 분할부의 설정에 따라 부호화 블록, 변환 블록 등의 단위로 수행될 수 있다. 참조 영역의 추정 가능한 범위 내에서 추정을 수행하며 적어도 하나의 움직임 추정 방법을 사용할 수 있다. 움직임 추정 방법에서 화소 단위의 추정 순서 및 조건 등을 정의할 수 있다.
움직임 추정은 움직임 추정 방법에 기반하여 수행될 수 있다. 예를 들어, 움직임 추정 과정을 위해 비교하고자 하는 영역은 블록 매칭의 경우 대상 블록일 수 있고, 템플릿 매칭의 경우 대상 블록을 중심으로 설정되는 소정의 영역(템플릿)일 수 있다. 전자의 경우 대상 블록과 참조 영역의 추정 가능한 범위 내에서 최대한 상관성이 높은 블록을 찾을 수 있고, 후자의 경우 부호화 설정에 따라 정의되는 템플릿과 참조 영역의 추정 가능한 범위 내에서 최대한 상관성이 높은 영역을 찾을 수 있다.
움직임 추정은 움직임 모델(Motion Model)에 기반하여 수행될 수 있다. 평행 이동만을 고려하는 이동 움직임 모델(Translation Motion Model) 외에 추가적인 움직임 모델을 사용하여 움직임 추정, 보상을 수행할 수 있다. 예를 들어, 평행 이동뿐만 아니라 회전, 원근, 줌 인/아웃(Zoom-in/out) 등과 같은 움직임을 고려하는 움직임 모델을 사용하여 움직임 추정, 보상을 수행할 수 있다. 이는 영상의 지역적 특성에 따라 발생하는 상기의 다양한 종류의 움직임을 반영하여 예측 블록을 생성함으로써 부호화 성능을 향상시키기 위해 지원될 수 있다.
도 7은 본 발명의 일 실시예에 따른 이동 외 움직임 모델을 나타내는 개념도이다.
도 7을 참조하면, 어파인 모델(Affine Model)의 일부 예시로 소정의 위치의 움직임 벡터 V0와 V1에 기반하여 움직임 정보를 표현하는 예를 나타내고 있다. 복수의 움직임 벡터에 기반하여 움직임을 표현할 수 있기 때문에 정확한 움직임 추정 및 보상이 가능할 수 있다.
상기 예와 같이 기 정의되는 움직임 모델에 기반하여 화면간 예측을 수행하되 추가적인 움직임 모델에 기반한 화면간 예측 또한 지원될 수 있다. 여기서, 기 정의되는 움직임 모델은 이동 움직임 모델, 추가적인 움직임 모델은 어파인 모델인 경우를 가정하지만, 이에 한정되지 않고 다양한 변형이 가능하다.
이동 움직임 모델의 경우 하나의 움직임 벡터에 기반하여 움직임 정보(단방향 예측을 가정)를 표현할 수 있으며, 움직임 정보를 나타내기 위한 제어점(기준점)은 좌상측 좌표인 경우를 가정하지만 이에 한정하지 않는다.
이동 외 움직임 모델의 경우 다양한 구성의 움직임 정보로 표현할 수 있다. 본 예에서는 하나의 움직임 벡터(좌상측 좌표 기준)에 추가 정보로 표현되는 구성을 가정한다. 후술하는 예를 통해 언급되는 일부 움직임 추정 및 보상은 블록 단위로 수행되지 않을 수 있으며, 소정의 서브 블록 단위로 수행될 수 있다. 이때, 소정의 서브 블록의 크기 및 위치는 각 움직임 모델에 기반하여 정해질 수 있다.
도 8은 본 발명의 일 실시예에 따른 서브 블록 단위의 움직임 추정을 나타내는 예시도이다. 상세하게는, 어파인 모델(움직임 벡터 2개)에 따른 서브 블록 단위의 움직임 추정을 나타낸다.
이동 움직임 모델의 경우 대상 블록에 포함되는 화소 단위의 움직임 벡터는 동일할 수 있다. 즉, 화소 단위에 일괄적으로 적용되는 움직임 벡터를 가질 수 있으며, 하나의 움직임 벡터(V0)를 사용하여 움직임 추정, 보상을 수행할 수 있다.
이동 외 움직임 모델(어파인 모델)의 경우 대상 블록에 포함되는 화소 단위의 움직임 벡터는 동일하지 않을 수 있으며, 화소 단위의 개별적인 움직임 벡터가 필요할 수 있다. 이때, 대상 블록의 소정의 제어점 위치의 움직임 벡터(V0, V1)에 기반하여 화소 단위 또는 서브 블록 단위의 움직임 벡터를 유도할 수 있으며, 유도된 움직임 벡터를 사용하여 움직임 추정, 보상을 수행할 수 있다.
예를 들어, 대상 블록 내의 서브 블록 또는 화소 단위의 움직임 벡터{예로, (Vx,Vy)}는 Vx = (V1x - V0x) × x / M - (V1y - V0y) × y / N + V0x , Vy = (V1y - V0y) × x / M + (V1x - V0x) × y / N + V0y 에 따른 수식으로 도출될 수 있다. 상기 수식에서 V0{본 예에서 (V0x,V0y)}는 대상 블록의 좌측 상단의 움직임 벡터이고, V1{본 예에서 (V1x,V1y)}는 대상 블록의 우측 상단의 움직임 벡터를 의미한다. 복잡도를 고려하여 이동 외 움직임 모델의 움직임 추정, 움직임 보상은 서브 블록 단위로 수행할 수 있다.
여기서, 상기 서브 블록(M x N)의 크기는 부호화 설정에 따라 정해질 수 있으며, 고정적인 크기를 갖거나 또는 적응적인 크기로 설정될 수 있다. 여기서, M과 N은 2, 4, 8, 16 또는 그 이상의 정수일 수 있고, M과 N은 동일하거나 동일하지 않을 수 있다. 상기 서브 블록의 크기는 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일, 브릭 등의 단위에서 명시적으로 발생할 수 있다. 또는, 묵시적으로 부호화기와 복호화기의 공통된 약속에 의해 정해질 수 있거나 또는 부호화 설정에 의해 정해질 수도 있다.
여기서, 부호화 설정은 대상 블록의 상태 정보, 영상 타입, 컬러 성분, 화면간 예측 설정 정보(움직임 정보 부호화 모드, 참조 픽쳐 정보, 보간 정밀도, 움직임 모델 선택 정보 등) 등에서 하나 이상의 요소에 의해 정의될 수 있다.
상기 예는 소정의 이동 외 움직임 모델에 따른 서브 블록의 크기를 유도하고, 그에 기반하여 움직임 추정 및 보상을 수행하는 과정을 설명하였다. 상기 예와 같이 움직임 모델에 따른 서브 블록 또는 화소 단위의 움직임 추정 및 보상을 수행할 수 있으며, 이에 관한 상세한 설명은 생략한다.
다음은 움직임 모델에 따라 구성되는 움직임 정보에 관한 다양한 예를 살펴본다.
일 예로, 회전 움직임을 표현하는 움직임 모델의 경우 하나의 움직임 벡터로 블록의 이동 움직임을 표현하고, 회전 각도 정보로 회전 움직임을 표현할 수 있다. 회전 각도 정보는 소정의 위치(예로, 좌상측 좌표)를 기준(0도)으로 측정될 수 있고, 소정의 각도 범위(예로, -90도 내지 90도 사이)에서 소정의 간격(예로, 각도 차분치가 0도, 11.25도, 22.25도 등)을 갖는 k개의 후보(k는 1, 2, 3 또는 그 이상의 정수)로 표현될 수 있다.
여기서, 회전 각도 정보는 움직임 정보 부호화 과정에서 그 자체로 부호화될 수 있거나 또는 인접한 블록의 움직임 정보(예로, 움직임 벡터, 회전 각도 정보)에 기반하여 부호화(예로, 예측 + 차분치 정보)될 수 있다.
또는, 하나의 움직임 벡터로 블록의 이동 움직임을 표현하고, 하나 이상의 추가 움직임 벡터로 블록의 회전 움직임을 표현할 수 있다. 이때, 추가 움직임 벡터의 개수는 1, 2 또는 그 이상의 정수일 수 있고, 추가 움직임 벡터의 제어점은 우상측, 좌하측, 우하측 좌표 중에서 결정될 수 있거나 또는 그 외의 블록 내 좌표를 제어점으로 설정할 수 있다.
여기서, 추가 움직임 벡터는 움직임 정보 부호화 과정에서 그 자체로 부호화될 수 있거나 또는 인접한 블록의 움직임 정보(예로, 이동 움직임 모델 또는 이동 외 움직임 모델에 따른 움직임 벡터)에 기반하여 부호화(예로, 예측 + 차분치 정보)될 수 있거나 또는 회전 움직임을 표현하는 블록 내 다른 움직임 벡터에 기반하여 부호화(예로, 예측 + 차분치 정보)될 수 있다.
일 예로, 줌 인/아웃 상황과 같은 크기 조정 또는 스케일링(Scaling) 움직임을 표현하는 움직임 모델의 경우 하나의 움직임 벡터로 블록의 이동 움직임을 표현하고, 스케일링 정보로 크기 조정 움직임을 표현할 수 있다. 스케일링 정보는 소정의 위치(예로, 좌상측 좌표)를 기준으로 수평 또는 수직 방향의 확장 또는 축소를 나타내는 스케일링 정보로 표현될 수 있다.
여기서, 수평 또는 수직 중 적어도 하나의 방향에 스케일링이 적용될 수 있다. 또한, 수평 또는 수직 방향으로 적용되는 개별적인 스케일링 정보가 지원될 수 있거나 또는 공통으로 적용되는 스케일링 정보가 지원될 수 있다. 소정의 위치(좌상측 좌표)에 상기 스케일링 적용된 블록의 너비와 높이가 가산되어 움직임 추정 및 보상할 위치가 정해질 수 있다.
여기서, 스케일링 정보는 움직임 정보 부호화 과정에서 그 자체로 부호화될 수 있거나 또는 인접한 블록의 움직임 정보(예로, 움직임 벡터, 스케일링 정보)에 기반하여 부호화(예로, 예측 + 차분치 정보)될 수 있다.
또는, 하나의 움직임 벡터로 블록의 이동 움직임을 표현하고, 하나 이상의 추가 움직임 벡터로 블록의 크기 조정을 표현할 수 있다. 이때, 추가 움직임 벡터의 개수는 1, 2개 또는 그 이상의 정수일 수 있고, 추가 움직임 벡터의 제어점은 우상측, 좌하측, 우하측 좌표 중에서 결정될 수 있거나 또는 그 외의 블록 내 좌표를 제어점으로 설정할 수 있다.
여기서, 추가 움직임 벡터는 움직임 정보 부호화 과정에서 그 자체로 부호화될 수 있거나 또는 인접한 블록의 움직임 정보(예로, 이동 움직임 모델 또는 이동 외 움직임 모델에 따른 움직임 벡터)에 기반하여 부호화(예로, 예측 + 차분치 정보)될 수 있거나 또는 블록 내 소정의 좌표(예로, 우하측 좌표)에 기반하여 부호화(예로, 예측 + 차분치)될 수 있다.
상기 예에서 일부 움직임을 나타내기 위한 표현에 관한 경우를 설명하였으며, 복수의 움직임을 표현하기 위한 움직임 정보로 표현될 수도 있다.
예를 들어, 다양하거나 복합적인 움직임을 표현하는 움직임 모델의 경우 하나의 움직임 벡터로 블록의 이동 움직임을 표현하고, 회전 각도 정보로 회전 움직임을 표현하고, 스케일링 정보로 크기 조정을 표현할 수 있다. 각 움직임에 관한 설명은 전술한 예를 통해 유도할 수 있으므로 상세한 설명은 생략한다.
또는, 하나의 움직임 벡터로 블록의 이동 움직임을 표현하고, 하나 이상의 추가 움직임 벡터로 블록의 그 외의 움직임을 표현할 수 있다. 이때, 추가 움직임 벡터의 개수는 1, 2개 또는 그 이상의 정수일 수 있고, 추가 움직임 벡터의 제어점은 우상측, 좌하측, 우하측 좌표 중에서 결정될 수 있거나 또는 그 외의 블록 내 좌표를 제어점으로 설정할 수 있다.
여기서, 추가 움직임 벡터는 움직임 정보 부호화 과정에서 그 자체로 부호화될 수 있거나 또는 인접한 블록의 움직임 정보(예로, 이동 움직임 모델 또는 이동 외 움직임 모델에 따른 움직임 벡터)에 기반하여 부호화(예로, 예측 + 차분치 정보)될 수 있거나 또는 다양한 움직임을 표현하는 블록 내 다른 움직임 벡터에 기반하여 부호화(예로, 예측 + 차분치 정보)될 수 있다.
상기 설명은 어파인 모델에 관한 내용일 수 있으며, 추가 움직임 벡터가 1개 또는 2개인 경우를 중심으로 설명한다. 정리하면, 움직임 모델에 따른 움직임 벡터의 사용 개수는 1, 2, 3개일 수 있으며, 움직임 정보를 표현하기 위해 사용되는 움직임 벡터 개수에 따라 개별적인 움직임 모델로 간주할 수 있음을 가정한다. 또한, 움직임 벡터가 1개인 경우는 기 정의된 움직임 모델임을 가정한다.
화면간 예측을 위한 복수의 움직임 모델이 지원될 수 있으며, 추가적인 움직임 모델의 지원을 지시하는 신호(예를 들어, adaptive_motion_mode_enabled_flag)에 의해 결정될 수 있다. 여기서, 상기 신호가 0이면 기 정의된 움직임 모델이 지원되고, 1이면 복수의 움직임 모델이 지원될 수 있다. 상기 신호는 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일, 브릭, 블록 등의 단위에서 발생할 수 있으나, 따로 확인이 불가한 경우에는 기 정의된 설정에 따라 신호의 값이 할당될 수 있다. 또는, 부호화 설정에 기반하여 묵시적으로 지원 여부가 결정될 수 있다. 또는, 부호화 설정에 따라 묵시적이거나 명시적인 경우가 결정될 수도 있다. 여기서, 부호화 설정은 영상 타입, 영상 종류(예로, 0이면 일반 영상, 1이면 360도 영상), 컬러 성분 등에서 하나 이상의 요소에 의해 정의될 수 있다.
상기 과정을 통해 복수의 움직임 모델의 지원 여부가 정해질 수 있다. 다음은 추가로 지원되는 움직임 모델이 2개 이상인 경우를 가정하며, 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일, 브릭 등의 단위에서 복수의 움직임 모델이 지원되는 경우로 결정되었음을 가정하지만, 일부 예외되는 구성이 존재할 수도 있다. 후술하는 예에서는 움직임 모델 A, B, C가 지원 가능하며, A는 기본으로 지원되는 움직임 모델이고, B와 C는 추가로 지원 가능한 움직임 모델임을 가정한다.
지원되는 움직임 모델에 대한 구성 정보가 상기 단위에서 발생할 수 있다. 즉, {A, B}, {A, C}, {A, B, C}와 같은 지원되는 움직임 모델 구성이 가능할 수 있다.
예를 들어, 상기 구성의 후보에 인덱스(0 ~ 2)를 할당하여 이를 선택할 수 있다. 만약 인덱스 2가 선택되면 {A, C}, 인덱스 3이 선택되면 {A, B, C}가 지원되는 움직임 모델 구성이 결정될 수 있다.
또는, 소정의 움직임 모델의 지원 여부를 나타내는 정보가 개별적으로 지원될 수 있다. 즉, B의 지원 여부 플래그, C의 지원 여부 플래그가 발생할 수 있다. 만약 두 플래그가 모두 0이면 A만 지원 가능한 경우일 수 있다. 본 예는 복수의 움직임 모델의 지원 여부를 나타내는 정보가 발생하지 않고 처리되는 예일 수도 있다.
상기 예와 같이 지원되는 움직임 모델의 후보군이 구성되면, 블록 단위에서 후보군 중 하나의 움직임 모델을 명시적으로 결정하여 사용하거나 묵시적으로 사용할 수 있다.
일반적으로 움직임 추정부는 부호화 장치에 존재하는 구성일 수 있으나 예측 방식(예를 들어, 템플릿 매칭 등)에 따라 복호화 장치에도 포함될 수 있는 구성일 수 있다. 예를 들어, 템플릿 매칭의 경우 복호화기에서 대상 블록의 인접한 템플릿을 통해 움직임 추정을 수행하여 대상 블록의 움직임 정보를 획득할 수 있기 때문이다. 이때, 움직임 추정 관련 정보(예를 들어, 움직임 추정 범위, 움직임 추정 방법<스캔 순서> 등)는 묵시적으로 정해질 수 있거나 명시적으로 생성되어 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일, 브릭 등의 단위에 포함될 수 있다.
움직임 보상부는 움직임 추정 과정을 통해 결정된 소정의 참조 픽쳐의 일부 블록의 데이터를 대상 블록의 예측 블록으로 획득하기 위한 과정을 의미한다. 상세하게는, 움직임 추정 과정을 통해 획득된 움직임 정보(예를 들어, 참조 픽쳐 정보, 움직임 벡터 정보 등)에 기반하여 적어도 하나의 참조 픽쳐의 적어도 하나의 영역(또는 블록)으로부터 대상 블록의 예측 블록을 생성할 수 있다.
다음과 같이 움직임 보상 방법에 기반하여 움직임 보상이 수행될 수 있다.
블록 매칭의 경우 참조 픽쳐에서 명시적으로 획득되는 대상 블록(M x N)의 움직임 벡터(Vx,Vy)와 대상 블록의 좌측 상단 좌표(Px,Py)를 통해 획득되는 좌표인 (Px+Vx, Py+Vy)를 기준으로 오른쪽으로 M만큼, 아래쪽으로 N만큼 해당하는 영역의 데이터를 대상 블록의 예측 블록으로 보상할 수 있다.
템플릿 매칭의 경우 참조 픽쳐에서 묵시적으로 획득되는 대상 블록(M x N)의 움직임 벡터(Vx,Vy)와 대상 블록의 좌측 상단 좌표(Px,Py)를 통해 획득되는 좌표인 (Px+Vx, Py+Vy)를 기준으로 오른쪽으로 M만큼, 아래쪽으로 N만큼 해당하는 영역의 데이터를 대상 블록의 예측 블록으로 보상할 수 있다.
또한, 다음과 같이 움직임 모델에 기반하여 움직임 보상이 수행될 수 있다.
이동 움직임 모델의 경우 참조 픽쳐에서 명시적으로 획득되는 대상 블록(M x N)의 하나의 움직임 벡터(Vx,Vy)와 대상 블록의 좌측 상단 좌표(Px,Py)를 통해 획득되는 좌표인 (Px+Vx, Py+Vy)를 기준으로 오른쪽으로 M만큼, 아래쪽으로 N만큼 해당하는 영역의 데이터를 대상 블록의 예측 블록으로 보상할 수 있다.
이동 외 움직임 모델의 경우 참조 픽쳐에서 명시적으로 획득되는 대상 블록(M x N)의 복수 개의 움직임 벡터(V0x, V0y), (V1x, V1y)를 통해 묵시적으로 획득되는 m x n 개의 서브 블록의 움직임 벡터(Vmx,Vny)와 각 서브 블록의 좌측 상단 좌표(Pmx, Pny)를 통해 획득되는 좌표인 (Pmx,+Vnx, Pmy,+Vny)를 기준으로 오른쪽으로 M/m만큼, 아래쪽으로 N/n만큼 해당하는 영역의 데이터를 서브 블록의 예측 블록으로 보상할 수 있다. 즉, 상기 서브 블록의 예측 블록을 모아 대상 블록의 예측 블록으로 보상할 수 있다.
움직임 정보 결정부에서 대상 블록의 최적의 움직임 정보를 선정하기 위한 과정이 수행될 수 있다. 일반적으로 블록의 왜곡{예를 들어, 대상 블록과 복원 블록의 Distortion. SAD(Sum of Absolute Difference), SSD(Sum of Square Difference) 등}과 해당 움직임 정보에 따른 발생 비트량이 고려되는 율-왜곡(Rate-Distortion) 기법을 이용하여 부호화 비용 측면에서 최적인 움직임 정보를 결정할 수 있다. 상기 과정을 통해 결정되는 움직임 정보에 기반하여 생성되는 예측 블록을 감산부와 가산부로 송신할 수 있다. 또한, 일부 예측 방식(예를 들어, 템플릿 매칭 등)에 따라 복호화 장치에도 포함될 수 있는 구성일 수 있으며, 이 경우 블록의 왜곡에 기반하여 결정될 수 있다.
상기 움직임 정보 결정부에 움직임 보상 방법, 움직임 모델 등과 같은 화면간 예측 관련 설정 정보가 고려될 수 있다. 예를 들어, 복수의 움직임 보상 방법이 지원되는 경우 움직임 보상 방법 선택 정보와 그에 따른 움직임 벡터, 참조 픽쳐 정보 등이 최적의 움직임 정보일 수 있다. 또는, 복수의 움직임 모델이 지원되는 경우 움직임 모델 선택 정보와 그에 따른 움직임 벡터, 참조 픽쳐 정보 등이 최적의 움직임 정보일 수 있다.
움직임 정보 부호화부에서 상기 움직임 정보 결정 과정을 통해 획득된 대상 블록의 움직임 정보를 부호화할 수 있다. 이때, 움직임 정보는 대상 블록의 예측을 위해 참조한 영상과 영역에 대한 정보로 구성이 될 수 있다. 상세하게는, 참조한 영상에 대한 정보(예를 들어, 참조 영상 정보 등)와 참조한 영역에 대한 정보(예를 들어, 움직임 벡터 정보 등)로 구성될 수 있다.
또한, 화면간 예측 관련 설정 정보(또는, 선택 정보 등. 예를 들어, 움직임 추정/보상 방법, 움직임 모델의 선택 정보 등)도 대상 블록의 움직임 정보에 포함되어 구성될 수 있다. 화면간 예측 관련 설정에 기반하여 상기 참조 영상과 영역에 대한 정보(예를 들어, 움직임 벡터 개수 등)가 구성될 수 있다.
참조 영상과 참조 영역에 대한 정보를 하나의 조합으로 구성하여 움직임 정보를 부호화할 수 있으며, 참조 영상과 참조 영역에 대한 정보의 조합을 움직임 정보 부호화 모드로 구성할 수 있다.
여기서, 참조 영상과 참조 영역에 관한 정보는 인접한 블록 또는 소정의 정보(예로, 현재 픽쳐를 기준으로 이전 또는 이후에 부호화된 영상, 제로 움직임 벡터 등)에 기반하여 획득될 수 있다.
상기 인접한 블록은 대상 블록과 동일한 공간에 속하고 대상 블록에 최인접한 블록<inter_blk_A>, 대상 블록과 동일한 공간에 속하고 멀리 인접한 블록<inter_blk_B>, 대상 블록과 동일하지 않는 공간에 속하는 블록<inter_blk_C>으로 카테고리를 구분할 수 있는데, 이 중 적어도 하나의 카테고리에 속하는 인접한 블록(후보 블록)에 기반하여 참조 영상과 참조 영역에 관한 정보를 획득할 수 있다.
예를 들어, 후보 블록의 움직임 정보 또는 참조 픽쳐 정보에 기반하여 대상 블록의 움직임 정보를 부호화할 수 있고, 후보 블록의 움직임 정보 또는 참조 픽쳐 정보로부터 유도되는 정보(또는 중간값, 변환 과정 등을 거친 정보)에 기반하여 대상 블록의 움직임 정보를 부호화할 수 있다. 즉, 대상 블록의 움직임 정보를 후보 블록으로부터 예측을 수행하여 그에 관한 정보를 부호화할 수 있다.
본 발명에서 대상 블록의 움직임 정보는 하나 이상의 움직임 정보 부호화 모드에 기반하여 부호화될 수 있다. 여기서, 움직임 정보 부호화 모드는 다양한 정의가 가능한데, 스킵 모드(Skip mode), 병합 모드(Merge mode), 경쟁 모드(Comp mode) 등에서 하나 이상을 포함할 수 있다.
전술한 템플릿 매칭(tmp)에 기반하여 상기 움직임 정보 부호화 모드와 결합되거나 또는 별개의 움직임 정보 부호화 모드로 지원되거나 또는 상기 움직임 정보 부호화 모드 중 전부 또는 일부의 세부 구성에 포함될 수 있다. 이는 상위 단위(예로, 픽쳐, 서브 픽쳐, 슬라이스 등)에서 템플릿 매칭을 지원하는 것으로 정해진 경우를 전제하지만, 지원 여부에 관한 플래그가 화면간 예측 설정에 일부 요소로 고려될 수 있다.
전술한 현재 픽쳐에서 블록 매칭을 수행하는 방법(ibc)에 기반하여 상기 움직임 정보 부호화 모드와 결합되거나 또는 별개의 움직임 정보 부호화 모드로 지원되거나 또는 상기 움직임 정보 부호화 모드 중 전부 또는 일부의 세부 구성에 포함될 수 있다. 이는 상위 단위에서 현재 픽쳐 내에서 블록 매칭하는 것을 지원하는 것으로 정해진 경우를 전제하지만, 지원 여부에 관한 플래그가 화면간 예측 설정에 일부 요소로 고려될 수 있다.
전술한 움직임 모델(affine)에 기반하여 상기 움직임 정보 부호화 모드와 결합되거나 또는 별개의 움직임 정보 부호화 모드로 지원되거나 또는 상기 움직임 정보 부호화 모드 중 전부 또는 일부의 세부 구성에 포함될 수 있다. 이는 상위 단위에서 이동 외 움직임 모델을 지원하는 것으로 정해진 경우를 전제하지만, 지원 여부에 관한 플래그가 화면간 예측 설정에 일부 요소로 고려될 수 있다.
예를 들어, temp_inter, temp_tmp, temp_ibc, temp_affine과 같은 개별적인 움직임 정보 부호화 모드가 지원될 수 있다. 또는, temp_inter_tmp, temp_inter_ibc, temp_inter_affine, temp_inter_tmp_ibc 등과 같은 결합되는 움직임 정보 부호화 모드가 지원될 수 있다. 또는, temp를 구성하는 움직임 정보 예측 후보군 중 템플릿 기반의 후보, 현재 픽쳐 내에서 블록 매칭을 수행하는 방법 기반의 후보, 어파인 기반의 후보가 포함되어 구성될 수 있다.
여기서, temp는 스킵 모드(skip), 병합 모드(merge), 경쟁 모드(comp)를 의미할 수 있다. 일 예로, 스킵 모드인 경우에는 skip_inter, skip_tmp, skip_ibc, skip_affine, 병합 모드인 경우에는 merge_inter, merge_tmp, merge_ibc, merge_affine, 경쟁 모드인 경우에는 comp_inter, comp_tmp, comp_ibc, comp_affine 등의 움직임 정보 부호화 모드가 지원되는 것과 같다.
만약 스킵 모드, 병합 모드, 경쟁 모드가 지원되고 각 모드의 움직임 정보 예측 후보군에 상기 요소를 고려한 후보가 포함되는 경우에는 스킵 모드, 병합 모드, 경쟁 모드를 구분하는 플래그에 의해 하나의 모드가 선택될 수 있다. 일 예로, 스킵 모드인지 여부를 나타내는 플래그가 지원되고 1의 값을 가지면 스킵 모드가 선택되고, 0의 값을 가지면 병합 모드인지 여부를 나타내는 플래그가 지원되어 1의 값을 가지면 병합 모드가 선택되고, 0의 값을 가지면 경쟁 모드가 선택될 수 있다. 그리고 각 모드의 움직임 정보 예측 후보군에 inter, tmp, ibc, affine에 기반한 후보가 포함될 수 있다.
또는, 하나의 공통되는 모드 하에 복수 개의 움직임 정보 부호화 모드가 지원되는 경우에는 스킵 모드, 병합 모드, 경쟁 모드 중에 하나를 선택하기 위한 플래그 외에 선택된 모드의 세부 모드를 구분하는 추가적인 플래그가 지원될 수도 있다. 일 예로, 병합 모드(merge mode)가 선택되면, 병합 모드에 관한 세부 모드인 merge_inter, merge_tmp, merge_ibc, merge_affine 등에서 선택할 수 있는 플래그가 추가로 지원됨을 의미한다. 또는, merge_inter인지 여부를 나타내는 플래그가 지원되고, merge_inter가 아닌 경우에는 merge_tmp, merge_ibc, merge_affine 등에서 선택할 수 있는 플래그가 추가로 지원될 수도 있다.
부호화 설정에 따라 상기 움직임 정보 부호화 모드 후보 중 전부 또는 일부를 지원할 수 있다. 여기서, 부호화 설정은 대상 블록의 상태 정보, 영상 타입, 영상 종류, 컬러 성분, 화면간 예측 지원 설정(예로, 템플릿 매칭 지원 여부, 현재 픽쳐에서 블록 매칭 지원 여부, 이동 외 움직임 모델 지원 요소 등) 등에서 하나 이상의 요소에 의해 정의될 수 있다.
일 예로, 블록의 크기에 따라 지원되는 움직임 정보 부호화 모드가 정해질 수 있다. 이때, 블록의 크기는 제 1 문턱크기(최소값) 또는 제 2 문턱크기(최대값)에 의해 지원 범위가 정해질 수 있고, 각 문턱크기는 블록의 너비(W)와 높이(H)로 W, H, W x H, W*H로 표현될 수 있다. 제 1 문턱크기의 경우 W와 H는 4, 8, 16 또는 그 이상의 정수일 수 있고, W*H는 16, 32, 64 또는 그 이상의 정수일 수 있다. 제 2 문턱크기의 경우 W와 H는 16, 32, 64 또는 그 이상의 정수일 수 있고, W*H는 64, 128, 256 또는 그 이상의 정수일 수 있다. 상기 범위는 제 1 문턱크기 또는 제 2 문턱크기 중 하나에 의해 정해지거나 또는 둘 모두를 사용하여 정해질 수 있다.
이때, 상기 문턱크기는 고정적이거나 영상(예로, 영상 타입 등)에 따라 적응적일 수 있다. 이때, 상기 제 1 문턱크기는 최소 부호화 블록, 최소 예측 블록, 최소 변환 블록 등의 크기에 기반하여 설정될 수 있고, 상기 제 2 문턱크기는 최대 부호화 블록, 최대 예측 블록, 최대 변환 블록 등의 크기에 기반하여 설정될 수도 있다.
일 예로, 영상 타입에 따라 지원되는 움직임 정보 부호화 모드가 정해질 수 있다. 이때, I 영상 타입에는 스킵 모드, 병합 모드, 경쟁 모드 중 적어도 하나를 포함할 수 있다. 이때, 현재 픽쳐에서 블록 매칭(또는 템플릿 매칭)을 수행하는 방법, 어파인 모델(이하 요소라는 용어로 지칭)에 관한 개별적인 움직임 정보 부호화 모드가 지원될 수 있거나 또는 둘 이상의 요소가 결합되어 움직임 정보 부호화 모드가 지원될 수 있다. 또는, 소정의 움직임 정보 부호화 모드에 다른 요소가 움직임 정보 예측 후보군으로 구성될 수 있다.
P/B 영상 타입에는 스킵 모드, 병합 모드, 경쟁 모드 중에서 적어도 하나를 포함할 수 있다. 이때, 일반적인 화면간 예측, 템플릿 매칭, 현재 픽쳐에서 블록 매칭을 수행, 어파인 모델(이하 요소라는 용어로 지칭)에 관한 개별적인 움직임 정보 부호화 모드가 지원될 수 있거나 또는 둘 이상의 요소가 결합되어 움직임 정보 부호화 모드가 지원될 수 있다. 또는, 소정의 움직임 정보 부호화 모드에 다른 요소가 움직임 정보 예측 후보군으로 구성될 수 있다.
도 9는 본 발명의 일 실시예에 따른 움직임 정보의 부호화를 나타내는 순서도이다.
도 9를 참조하면, 대상 블록의 움직임 정보 부호화 모드를 확인할 수 있다(S900).
화면간 예측에 사용되는 소정의 정보(예로, 움직임 정보 등)를 조합 및 설정하여 움직임 정보 부호화 모드를 정의할 수 있다. 상기 소정의 정보는 예측 움직임 벡터, 움직임 벡터 차분치, 차분 움직임 벡터 정밀도, 참조 영상 정보, 참조 방향, 움직임 모델 정보, 잔차 성분의 유무 정보 등에서 하나 이상을 포함할 수 있다. 상기 움직임 정보 부호화 모드는 스킵 모드, 병합 모드, 경쟁 모드 중 적어도 하나를 포함할 수 있으며, 이 밖의 추가적인 모드를 포함할 수도 있다.
움직임 정보 부호화 모드에 따라 명시적으로 발생하는 정보와 묵시적으로 정해지는 정보의 구성 및 설정이 정해질 수 있다. 이때, 명시적인 경우, 각 정보가 개별적으로 발생하거나 또는 조합 형태(예로, 인덱스 형태)로 발생할 수 있다.
일 예로, 스킵 모드 또는 병합 모드는 예측 움직임 벡터, 참조 영상 정보, 참조 방향이 (하나) 소정의 인덱스 정보에 기반하여 정의될 수 있다. 이때, 상기 인덱스는 하나 이상의 후보로 구성할 수 있으며, 각 후보는 소정의 블록의 움직임 정보에 기반하여 설정(예로, 해당 블록의 예측 움직임 벡터, 참조 영상 정보, 참조 방향이 하나의 조합으로 구성)될 수 있다. 또한, 움직임 벡터 차분치는 묵시적으로 처리(예로, zero 벡터)될 수 있다.
일 예로, 경쟁 모드는 예측 움직임 벡터, 참조 영상 정보, 참조 방향이 (하나 이상) 소정의 인덱스 정보에 기반하여 정의될 수 있다. 이때, 상기 인덱스는 각 정보에 개별적으로 지원될 수 있거나 또는 둘 이상 정보의 조합에 지원될 수 있다. 이때, 상기 인덱스는 하나 이상의 후보로 구성할 수 있으며, 각 후보는 소정의 블록의 움직임 정보에 기반하여 설정(예로, 예측 움직임 벡터 등)되거나 또는 기 설정된 값(예로, 현재 픽쳐와의 간격을 1, 2, 3 등으로 처리, 참조 방향 정보를 L0, L1 등으로 처리)으로 구성(예로, 참조 영상 정보, 참조 방향 정보 등)될 수 있다. 또한, 움직임 벡터 차분치가 명시적으로 발생할 수 있으며, 움직임 벡터 차분치(예로, zero 벡터가 아닌 경우)에 따라 차분 움직임 벡터 정밀도 정보가 추가로 발생할 수도 있다.
일 예로, 스킵 모드는 잔차 성분의 유무 정보가 묵시적으로 처리(예로, <cbf_flag = 0>으로 처리)되고, 움직임 모델은 묵시적으로 기 설정된 값(예로, 평행 움직임 모델을 지원)으로 처리될 수 있다.
일 예로, 병합 모드 또는 경쟁 모드는 잔차 성분의 유무 정보가 명시적으로 발생할 수 있고, 움직임 모델은 명시적으로 선택할 수 있다. 이때, 하나의 움직임 정보 부호화 모드 내에 움직임 모델을 구분하는 정보가 발생할 수 있거나 또는 별도의 움직임 정보 부호화 모드가 지원될 수 있다.
상기 설명에서 하나의 인덱스가 지원되는 경우에는 인덱스 선택 정보는 발생하지 않으며, 둘 이상의 인덱스가 지원되는 경우에는 인덱스 선택 정보가 발생할 수 있다.
본 발명에서는 둘 이상의 인덱스로 구성된 후보군을 움직임 정보 예측 후보군이라 지칭한다. 또한, 다양한 소정의 정보 및 설정을 통해 기존의 움직임 정보 부호화 모드를 변경하거나 또는 새로운 움직임 정보 부호화 모드가 지원될 수도 있다.
도 9를 참조하면, 대상 블록의 예측 움직임 벡터를 유도할 수 있다(S910).
예측 움직임 벡터는 기 설정된 값으로 정해질 수 있거나 또는 예측 움직임 벡터 후보군를 구성하여 그 중에서 선택할 수 있다. 전자의 경우 묵시적으로 정해지는 경우를 의미하고, 후자의 경우 예측 움직임 벡터를 선정하기 위한 인덱스 정보가 명시적으로 발생할 수 있다.
여기서, 상기 기 설정된 값의 경우 소정 위치의 하나의 블록(예로, 좌, 상, 좌상, 우상, 좌하 방향의 블록 등)의 움직임 벡터에 기반하여 설정할 수 있거나 또는 둘 이상 불록의 움직임 벡터에 기반하여 설정할 수 있거나 또는 디폴트값(예로, zero 벡터 등)으로 설정할 수 있다.
예측 움직임 벡터는 움직임 정보 부호화 모드에 따라 후보군 구성 설정이 동일하거나 상이할 수 있다. 일 예로, 스킵 모드/병합 모드/경쟁 모드는 각각 a, b, c개의 예측 후보를 지원할 수 있으며, 각 후보의 개수는 동일하거나 상이하게 구성될 수 있다. 이때, a, b, c는 2, 3, 5, 6, 7 등의 1 이상 정수로 구성될 수 있다. 후보군 구성 순서, 설정 등은 다른 실시예를 통해 설명할 것이다. 후술하는 예에서 스킵 모드의 후보군 구성 설정은 병합 모드와 동일한 경우를 가정하여 설명할 것이나, 이에 한정되지 않고 일부는 상이한 구성을 가질 수도 있다.
상기 인덱스 정보에 기반하여 획득되는 예측 움직임 벡터는 그대로 대상 블록의 움직임 벡터의 복원에 사용될 수 있거나 또는 참조 방향, 참조 영상 간의 거리에 기반하여 조정될 수 있다.
예를 들어, 경쟁 모드의 경우 참조 영상 정보가 따로 발생할 수 있는데, 현재 픽쳐와 대상 블록의 참조 픽쳐 간의 거리와 예측 움직임 벡터 후보 블록을 포함하는 픽쳐와 해당 블록의 참조 픽쳐 간의 거리가 상이할 경우, 이를 현재 픽쳐와 대상 블록의 참조 픽쳐 간의 거리에 맞춰 조정을 수행할 수 있다.
또한, 움직임 모델에 따라 유도되는 움직임 벡터의 개수가 상이할 수 있다. 즉, 좌상측 제어점 위치의 움직임 벡터 외에 움직임 모델에 따라 우상측, 좌하측 제어점 위치의 움직임 벡터가 추가로 유도될 수 있다.
도 9를 참조하면, 대상 블록의 움직임 벡터 차분치를 복원할 수 있다(S920).
움직임 벡터 차분치는 스킵 모드와 병합 모드에서 zero 벡터값으로 유도될 수 있으며, 경쟁 모드에서 각 성분의 차분치 정보를 복원할 수 있다.
움직임 벡터는 기 설정된 소정의 정밀도(예로, 보간 정밀도에 기반하여 설정 또는 움직임 모델 선택 정보에 기반하여 설정 등)에 따라 표현될 수 있다. 또는, 복수의 정밀도 중 하나에 기반하여 표현될 수 있으며, 이를 위한 소정의 정보가 발생할 수 있다. 이때, 소정의 정보는 움직임 벡터 정밀도에 관한 선택에 관한 것일 수 있다.
예를 들어, 움직임 벡터의 하나의 성분이 32/16일 때, 1/16 화소 단위의 묵시적인 정밀도 설정에 기반하여 32에 대한 움직임 성분 데이터가 획득될 수 있다. 또는, 2 화소 단위의 명시적인 정밀도 설정에 기반하여 움직임 성분이 2/1로 변환될 수 있고, 2에 대한 움직임 성분 데이터가 획득될 수 있다.
상기 구성은 동일한 정밀도를 갖거나 또는 동일한 정밀도 변환 과정을 통해 획득된 예측 움직임 벡터와 움직임 벡터 차분치를 가산하여 획득된 움직임 벡터에 대한 정밀도 처리에 관한 방법일 수 있다.
또한, 움직임 벡터 차분치는 기 설정된 소정의 정밀도에 따라 표현되거나 또는 복수의 정밀도 중 하나로 표현될 수도 있다. 이때, 후자의 경우 정밀도 선택 정보가 발생할 수 있다.
상기 정밀도는 1/16, 1/8, 1/4, 1/2, 1, 2, 4 화소 단위 중 적어도 하나를 포함할 수 있으며, 후보군의 개수는 1, 2, 3, 4, 5 또는 그 이상의 정수일 수 있다. 여기서, 지원되는 정밀도 후보군 구성(예로, 개수, 후보 등으로 구분)은 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일, 브릭 등의 단위에서 명시적으로 정해질 수 있다. 또는, 부호화 설정에 따라 묵시적으로 정해질 수 있으며, 여기서 부호화 설정은 영상 타입, 참조 영상, 컬러 성분, 움직임 모델 선택 정보 등에서 적어도 하나 이상의 요소에 의해 정의될 수 있다.
다음은 다양한 부호화 요소에 따라 정밀도 후보가 구성되는 경우를 설명하며, 정밀도는 움직임 벡터 차분치에 관한 설명을 가정하여 설명하지만 이는 움직임 벡터에도 비슷하거나 동일한 적용이 가능할 수 있다.
예를 들어, 이동 움직임 모델의 경우 {1/4, 1}, {1/4, 1/2}, {1/4, 1/2, 1}, {1/4, 1, 4}, {1/4, 1/2, 1, 4} 등의 후보군 구성이 가능할 수 있고, 이동 외 움직임 모델의 경우 {1/16, 1/4, 1}, {1/16, 1/8, 1}, {1/16, 1, 4}, {1/16, 1/4, 1, 2}, {1/16, 1/4, 1, 4} 등의 정밀도 후보군 구성이 가능할 수 있다. 이는 지원되는 최소 정밀도가 전자의 경우 1/4 화소 단위, 후자의 경우 1/16 화소 단위인 경우를 가정하며, 최소 정밀도 외의 추가적인 정밀도가 후보군에 포함될 수 있다.
또는, 참조 영상이 다른 픽쳐일 경우 {1/4, 1/2, 1}, {1/4, 1, 4}, {1/4, 1/2, 1, 4} 등의 후보군 구성이 가능할 수 있고, 참조 영상이 현재 픽쳐인 경우 {1, 2}, {1, 4}, {1, 2, 4} 등의 후보군 구성이 가능할 수 있다. 이때, 후자의 경우 블록 매칭 등을 위한 소수 단위의 보간을 수행하지 않는 구성일 수 있으며, 소수 단위의 보간이 수행되는 경우라면 소수 단위의 정밀도 후보를 포함하여 구성할 수도 있다.
또는, 컬러 성분이 휘도 성분일 경우 {1/4, 1/2, 1}, {1/4, 1, 4}, {1/4, 1/2, 1, 4} 등의 후보군이 가능할 수 있고, 색차 성분은 {1/8, 1/4}, {1/8, 1/2}, {1/8, 1}, {1/8, 1/4, 1/2}, {1/8, 1/2, 2}, {1/8, 1/4, 1/2, 2} 등의 후보군이 가능할 수 있다. 이때, 후자의 경우 컬러 성분 구성 비(예로, 4:2:0, 4:2:2, 4:4:4 등)에 따라 휘도 성분에 비례하는 후보군을 구성하거나 또는 개별적인 후보군을 구성할 수 있다.
상기 예는 각 부호화 요소에 따른 정밀도 후보가 복수 개인 경우를 설명하고 있으나, 후보 구성이 1개인 경우(즉, 기 설정된 최소 정밀도로 표현)도 가능할 수 있다.
정리하면, 경쟁 모드에서 차분 움직임 벡터 정밀도에 기반하여 최소 정밀도를 갖는 움직임 벡터 차분치를 복원할 수 있고, 스킵 모드와 병합 모드에서 zero 벡터값을 갖는 움직임 벡터 차분치를 유도할 수 있다.
여기서, 움직임 모델에 따라 복원되는 움직임 벡터 차분치의 개수가 상이할 수 있다. 즉, 좌상측 제어점 위치의 움직임 벡터 차분치 외에 움직임 모델에 따라 우상측, 좌하측 제어점 위치의 움직임 벡터 차분치가 추가로 유도될 수 있다.
또한, 복수의 움직임 벡터 차분치에 하나의 차분 움직임 벡터 정밀도가 적용될 수 있거나 또는 각 움직임 벡터 차분치에 개별적인 차분 움직임 벡터 정밀도가 적용될 수 있으며, 이는 부호화 설정에 따라 정해질 수 있다.
또한, 최소 하나의 움직임 벡터 차분치가 0이 아닌 경우에 차분 움직임 벡터 정밀도에 관한 정보가 발생할 수 있으며, 그렇지 않은 경우에는 생략될 수도 있으나 이에 한정되지 않는다.
도 9를 참조하면, 대상 블록의 움직임 벡터를 복원할 수 있다(S930).
본 단계 이전 과정을 통해 획득한 예측 움직임 벡터와 움직임 벡터 차분치를 획득하고, 이를 가산하여 대상 블록의 움직임 벡터를 복원할 수 있다. 이때, 복수의 정밀도 중에 하나를 선택하여 복원된 경우에는 정밀도 통일 과정이 수행될 수 있다.
예를 들어, (움직임 벡터 정밀도 관련) 예측 움직임 벡터와 움직임 벡터 차분치를 가산하여 획득된 움직임 벡터는 정밀도 선택 정보에 기반하여 복원될 수 있다. 또는, (차분 움직임 벡터 정밀도 관련) 움직임 벡터 차분치는 정밀도 선택 정보에 기반하여 복원될 수 있고, 복원된 움직임 벡터 차분치와 예측 움직임 벡터를 가산하여 움직임 벡터가 획득될 수 있다.
도 9를 참조하면, 대상 블록의 움직임 정보에 기반하여 움직임 보상을 수행할 수 있다(S940).
움직임 정보는 전술한 예측 움직임 벡터, 움직임 벡터 차분치 외 참조 영상 정보, 참조 방향, 움직임 모델 정보 등을 포함할 수 있다. 스킵 모드와 병합 모드의 경우 상기 정보 중 일부(예로, 참조 영상 정보, 참조 방향 등)는 묵시적으로 정해질 수 있으며, 경쟁 모드는 명시적으로 관련 정보를 처리할 수 있다.
상기 과정을 통해 획득된 움직임 정보에 기반하여 움직임 보상을 수행하여 예측 블록을 획득할 수 있다.
도 9를 참조하면, 대상 블록의 잔차 성분에 대한 복호화를 수행할 수 있다(S950).
상기 과정을 통해 획득된 잔차 성분과 예측 블록을 가산함으로써 대상 블록을 복원할 수 있다. 이때, 움직임 정보 부호화 모드에 따라 잔차 성분의 유무 정보에 대한 명시적 또는 묵시적인 처리가 가능할 수 있다.
도 10은 본 발명의 일 실시예에 따른 대상 블록과 그에 인접한 블록에 대한 배치도이다.
도 10을 참조하면, 대상 블록을 중심으로 좌, 상, 좌상, 우상, 좌하 방향 등에 인접한 블록<inter_blk_A>, 그리고 시간적으로 동일하지 않은 공간(Col_Pic)에 대상 블록과 대응되는 블록을 중심으로 중앙, 좌, 우, 상, 하, 좌상, 우상, 좌하, 우하 방향 등에 인접한 블록<inter_blk_B>이 대상 블록의 움직임 정보(예로, 움직임 벡터 등)의 예측을 위한 후보 블록으로 구성될 수 있다.
상기 inter_blk_A의 경우 래스터 스캔 또는 z-스캔 등의 부호화 순서에 기반하여 인접한 블록의 방향이 정해지는 예일 수 있으며, 다양한 스캔 순서에 따라 기존의 방향이 제거되거나 또는 우, 하, 우하 방향의 인접한 블록이 추가로 후보 블록으로 구성될 수 있다.
도 10을 참조하면, Col_Pic는 현재 영상을 기준으로 이전 또는 이후에 인접한 영상(예로, 영상 간의 간격이 1인 경우)일 수 있고, 대응되는 블록은 대상 블록과 영상 내 위치가 동일하게 설정될 수 있다.
또는, Col_Pic는 현재 영상을 기준으로 영상 간의 간격이 기 정의된 영상(예로, 영상 간의 간격이 z. z는 1, 2, 3의 정수)일 수 있고, 대응되는 블록은 대상 블록의 소정의 좌표(예로, 좌상측)에서 소정의 변이 벡터(Disparity Vector)만큼 이동한 위치로 설정될 수 있는데, 기 정의된 값으로 변이 벡터가 설정될 수 있다.
또는, Col_Pic는 인접한 블록의 움직임 정보(예로, 참조 영상)에 기초하여 설정될 수 있고, 상기 변이 벡터는 인접한 블록의 움직임 정보(예로, 움직임 벡터)에 기초하여 설정되어 대응되는 블록의 위치가 정해질 수 있다.
이때, k개의 인접한 블록이 참조될 수 있는데, k는 1, 2 또는 그 이상의 정수일 수 있다. 만약 k가 2 이상인 경우 인접한 블록의 움직임 정보(예로, 참조 영상 또는 움직임 벡터)의 최대값, 최소값, 중간값, 가중 평균값 등의 연산에 기초하여 Col_Pic과 변이 벡터가 획득될 수 있다. 예를 들어, 상기 변이 벡터는 좌측 또는 상측 블록의 움직임 벡터로 설정될 수 있고, 좌측과 좌하측 블록의 움직임 벡터의 중간값 또는 평균값으로 설정될 수 있다.
시간적 후보의 상기 설정은 움직임 정보 구성 설정 등에 기반하여 정해질 수 있다. 예를 들어, 블록 단위의 움직임 정보 또는 서브 블록 단위의 움직임 정보를 움직임 정보 예측 후보군에 포함하고자 하는 움직임 정보가 블록 단위 또는 서브 블록 단위로 구성되는지 여부 등에 따라 Col_Pic의 위치, 대응되는 블록의 위치 등이 정해질 수 있다. 일 예로, 서브 블록 단위의 움직임 정보가 획득되는 경우에는 소정의 변이 벡터만큼 이동한 위치의 블록이 대응되는 블록의 위치로 설정될 수 있다.
상기 예는 Col_Pic과 대응되는 블록의 위치에 관한 정보가 묵시적으로 정해지는 경우를 나타내며, 명시적으로 관련 정보가 시퀀스, 픽쳐, 슬라이스, 타일 그룹, 타일, 브릭 등의 단위에서 발생할 수도 있다.
한편, 서브 픽쳐, 슬라이스, 타일 등의 분할 단위 구획이 하나의 픽쳐(예로, 현재 픽쳐)에 제한되지 않고 영상 간에 공유될 때, 상기 Col_Pic에 대응되는 블록의 위치가 대상 블록이 속한 분할 단위와 상이할 경우(즉, 대상 블록이 속한 분할 단위 경계에 걸치거나 벗어나는 경우)에는 소정의 우선 순위에 따른 후속 후보의 움직임 정보에 기초하여 정해질 수 있다. 또는, 대상 블록과 영상 내 위치를 동일하게 설정할 수 있다.
전술한 공간적으로 인접한 블록과 시간적으로 인접한 블록의 움직임 정보는 대상 블록의 움직임 정보 예측 후보군에 포함될 수 있으며, 이를 공간적 후보와 시간적 후보로 지칭한다. 공간적 후보와 시간적 후보는 a, b개가 지원될 수 있으며, a와 b는 1 내지 6 또는 그 이상의 정수일 수 있다. 이때, a는 b보다 크거나 같을 수 있다.
공간적 후보와 시간적 후보는 고정적인 개수가 지원될 수 있거나 또는 선행하는 움직임 정보 예측 후보 구성에 따라 가변적인 개수가 지원(예로, 0개 포함)될 수도 있다.
또한, 대상 블록과 바로 인접하지 않은 블록<inter_blk_C>이 후보군 구성에 고려될 수 있다.
일 예로, 대상 블록을 기준(예로, 좌상측 좌표)으로 소정의 간격 차이에 위치하는 블록의 움직임 정보가 후보군 포함 대상이 될 수 있다. 상기 간격은 (움직임 벡터의 각 성분에 따라) p, q일 수 있으며, p와 q는 0, 2, 4, 8, 16, 32 등과 같은 2 이상의 정수일 수 있고, p와 q는 동일하거나 상이할 수 있다. 즉, 대상 블록의 좌상측 좌표를 (m, n)이라 가정할 경우 (m ± p, n ± q) 위치를 포함하는 블록의 움직임 정보를 후보군에 포함할 수 있다.
일 예로, 대상 블록의 이전에 부호화가 완료된 블록의 움직임 정보가 후보군 포함 대상이 될 수 있다. 이때, 대상 블록을 기준으로 소정의 부호화 순서(예로, 래스터 스캔, Z 스캔 등)에 기반하여 최근에 부호화가 완료된 소정 개수의 블록이 후보로 고려될 수 있으며, FIFO와 같은 선입선출 방식으로 부호화 진행에 따라 부호화 순서가 오래된 블록이 후보에서 제거될 수 있다.
상기 예는 대상 블록을 기준으로 이미 부호화가 완료된 최인접하지 않은 블록의 움직임 정보를 후보군에 포함하는 경우를 의미하므로, 이를 통계적 후보라 지칭한다.
이때, 통계적 후보를 획득하기 위한 기준 블록은 대상 블록으로 설정할 수 있으나, 대상 블록의 상위 블록(예로, 대상 블록이 부호화 블록<1>/예측 블록<2>일 경우, 상위 블록은 최대 부호화 블록<1>/부호화 블록<2> 등)을 설정될 수도 있다. 통계적 후보는 k개가 지원될 수 있으며, k는 1 내지 6 또는 그 이상의 정수일 수 있다.
상기 공간적 후보, 시간적 후보, 통계적 후보 등의 움직임 정보를 조합하여 획득된 움직임 정보를 후보군에 포함할 수 있다. 예를 들어, 후보군에 이미 포함된 복수 개(2, 3개 또는 그 이상)의 움직임 정보의 각 성분에 가중치 평균을 적용하여 획득된 후보를 획득할 수 있고, 복수 개의 움직임 정보의 각 성분에 중앙값, 최대값, 최소값 등의 과정을 거쳐 획득된 후보를 획득할 수 있다. 이를 조합 후보라 지칭하며, 조합 후보는 r개가 지원될 수 있고, r은 1, 2, 3 또는 그 이상의 정수일 수 있다.
조합에 사용되는 후보가 참조 영상의 정보가 동일하지 않은 경우 후보 중 하나의 참조 영상 정보에 기반하여 조합 후보의 참조 영상 정보로 설정하거나 또는 기 정의된 값으로 설정할 수 있다.
상기 통계적 후보 또는 조합 후보는 고정적인 개수가 지원될 수 있거나 또는 선행하는 움직임 정보 예측 후보 구성에 따라 가변적인 개수가 지원될 수도 있다.
또한, (s, t) 등의 기 설정된 값을 갖는 디폴트 후보 또한 후보군에 포함할 수 있으며, 선행하는 움직임 정보 예측 후보 구성에 따라 가변적인 개수(0, 1 또는 그 이상의 정수)가 지원될 수 있다. 이때, s와 t는 0을 포함하여 설정될 수 있으며, 다양한 블록 크기(예로, 최대 부호화/예측/변환 블록, 최소 부호화/예측/변환 블록의 가로 또는 세로 길이 등)에 기반하여 설정될 수도 있다.
움직임 정보 부호화 모드에 따라 상기 후보 중에서 움직임 정보 예측 후보군이 구성될 수 있으며, 그 밖의 추가적인 후보가 포함되어 구성될 수도 있다. 또한, 움직임 정보 부호화 모드에 따라 후보군 구성 설정이 동일하거나 상이할 수 있다.
예를 들어, 스킵 모드와 병합 모드는 공통으로 후보군을 구성할 수 있고, 경쟁 모드는 개별적인 후보군을 구성할 수 있다.
여기서, 후보군 구성 설정은 후보 블록의 카테고리 및 위치(예로, 좌/상/좌상/우상/좌하 방향 중에서 결정. 결정된 방향 중에서 움직임 정보 획득되는 서브 블록 위치 등), 후보군 개수(예로, 전체 개수, 카테고리 별 최대 개수 등), 후보 구성 방법(예로, 카테고리 별 우선 순위, 카테고리 내의 우선 순위 등) 등에 의해 정의될 수 있다.
움직임 정보 예측 후보군 개수(전체 개수)는 k개 일 수 있고, k는 1 내지 6개 또는 그 이상의 정수일 수 있다. 이때, 후보군 개수가 1개인 경우에는 후보군 선택 정보가 발생하지 않고 기 정의된 후보 블록의 움직임 정보가 예측 움직임 정보로 설정됨을 의미하고, 2개 이상인 경우에는 후보군 선택 정보가 발생할 수 있다.
상기 후보 블록의 카테고리는 inter_blk_A, inter_blk_B, inter_blk_C 중에서 하나 이상일 수 있다. 이때, inter_blk_A가 기본으로 포함되는 카테고리일 수 있고, 다른 카테고리가 추가로 지원되는 카테고리일 수 있으나 이에 한정하지 않는다.
상기 설명은 이동 움직임 모델에 관한 움직임 정보 예측 후보 구성에 관한 것일 수 있으며, 이동 외 움직임 모델(어파인 모델)에도 동일하거나 비슷한 후보 블록이 후보군 구성에 사용/참조될 수 있다. 반면, 어파인 모델의 경우 이동 움직임 모델과 움직임 벡터의 개수뿐만 아니라 움직임 특성이 다르기 때문에 이동 움직임 모델의 후보군 구성과는 상이한 구성을 가질 수 있다.
예를 들어, 후보 블록의 움직임 모델이 어파인 모델인 경우 후보 블록의 움직임 벡터 세트 구성을 그대로 후보군에 포함할 수 있다. 일 예로, 좌상측, 우상측 좌표를 제어점으로 삼는 경우, 후보 블록의 좌상측, 우상측 좌표의 움직임 벡터 세트를 하나의 후보로 후보군에 포함할 수 있다.
또는, 후보 블록의 움직임 모델이 이동 움직임 모델인 경우 제어점의 위치에 기반하여 설정되는 후보 블록의 움직임 벡터 조합을 하나의 세트로 구성하고 이를 후보군에 포함할 수 있다. 일 예로, 좌상측, 우상측, 좌하측 좌표를 제어점으로 삼는 경우, 좌상측의 제어점의 움직임 벡터는 대상 블록의 좌, 상, 좌상 블록의 움직임 벡터(예로, 이동 움직임 모델인 경우)에 기반하여 예측되고, 우상측의 제어점의 움직임 벡터는 대상 블록의 상, 우상측 블록의 움직임 벡터(예로, 이동 움직임 모델의 경우)에 기반하여 예측되고, 좌하측의 제어점의 움직임 벡터는 대상 블록의 좌, 좌하 블록의 움직임 벡터에 기반하여 예측될 수 있다. 상기 예에서 제어점의 위치에 기반하여 설정되는 후보 블록의 움직임 모델이 이동 움직임 모델인 경우를 설명하였으나, 어파인 모델인 경우라도 제어점 위치의 움직임 벡터만을 획득 또는 유도하여 획득하는 경우 또한 가능할 수 있다. 즉, 대상 블록의 좌상측, 우상측, 좌하측 제어점의 움직임 벡터를 위해 후보 블록의 좌상측, 우상측, 좌하측, 우하측 제어점 중에서 움직임 벡터가 획득되거나 유도될 수 있다.
정리하면, 후보 블록의 움직임 모델이 어파인 모델인 경우에는 해당 블록의 움직임 벡터 세트를 후보군에 포함(A)할 수 있고, 후보 블록의 움직임 모델이 이동 움직임 모델인 경우에는 대상 블록의 소정의 제어점의 움직임 벡터의 후보로 고려되어 각 제어점의 조합에 따라 획득되는 움직임 벡터 세트를 후보군에 포함(B)할 수 있다.
이때, A 또는 B 방법 중에 하나만 사용하여 후보군을 구성할 수 있거나 또는 A와 B 방법을 모두 사용하여 후보군에 구성할 수 있다. 그리고 A 방법이 먼저 구성되고 B 방법이 뒤에 구성될 수 있으나, 이에 한정하지 않는다.
도 11은 본 발명의 일 실시예에 따른 통계적 후보에 관한 예시도를 나타낸다.
도 11을 참조하면, 도 11의 A 내지 L에 해당하는 블록은 대상 블록을 기준으로 소정의 간격만큼 떨어져 있는 부호화가 완료된 블록을 의미한다.
대상 블록의 움직임 정보를 위한 후보 블록이 대상 블록에 인접한 블록으로 한정할 때, 영상의 다양한 특성을 반영하지 못하는 경우가 발생할 수 있다. 이를 위해 현재 픽쳐의 이전에 부호화가 완료된 블록 또한 후보 블록으로 고려할 수 있다. 이에 관한 카테고리로 inter_blk_B로 이미 언급하였으며, 이를 통게적 후보라 부른다고 지칭하였다.
움직임 정보 예측 후보군에 포함되는 후보 블록의 수는 한정되기 때문에 이를 위한 효율적인 통계적 후보의 관리가 필요할 수 있다.
(1) 대상 블록을 기준으로 소정의 거리 간격을 갖는 기 설정된 위치의 블록을 후보 블록으로 고려할 수 있다.
일 예로, 대상 블록의 소정의 좌표(예로, 좌상측 좌표 등)를 기준으로 x 성분에 한정하여 일정 간격을 갖는 블록을 후보 블록으로 고려할 수 있으며, (-4, 0), (-8, 0), (-16, 0), (-32, 0) 등의 예가 가능할 수 있다.
일 예로, 대상 블록의 소정의 좌표를 기준으로 y 성분에 한정하여 일정 간격을 갖는 블록을 후보 블록으로 고려할 수 있으며, (0, -4), (0, -8), (0, -16), (0, -32) 등의 예가 가능할 수 있다.
일 예로, 대상 블록의 소정의 좌표를 기준으로 x와 y 성분으로 0이 아닌 일정 간격을 갖는 블록을 후보 블록으로 고려할 수 있으며, (-4, -4), (-4, -8), (-8, -4), (-16, 16), (16, -16) 등의 예가 가능할 수 있다. 본 예는 y 성분에 따라 x 성분이 양의 부호를 갖는 경우가 발생할 수 있다.
부호화 설정에 따라 통계적 후보로 고려되는 후보 블록이 제한적으로 정해질 수도 있다. 후술하는 예를 위해 도 11을 참조한다.
후보 블록이 소정의 단위에 속하는지 여부에 따라 통계적 후보로 분류할 수 있다. 여기서, 소정의 단위는 최대 부호화 블록, 브릭, 타일, 슬라이스, 서브 픽쳐, 픽쳐 등에서 정해질 수 있다.
예를 들어, 대상 블록과 동일한 최대 부호화 블록에 속하는 블록에 한정하여 후보 블록으로 선정할 경우 A 내지 C가 그 대상이 될 수 있다.
또는, 대상 블록이 속한 최대 부호화 블록과 좌측의 1개 최대 부호화 블록에 속하는 블록에 한정하여 후보 블록을 선정할 경우 A 내지 C, H, I가 그 대상이 될 수 있다.
또는, 대상 블록이 속한 최대 부호화 블록과 상측의 최대 부호화 블록에 속하는 블록에 한정하여 후보 블록을 선정할 경우 A 내지 C, E, F가 그 대상이 될 수 있다.
또는, 대상 블록과 동일한 슬라이스에 속하는 블록에 한정하여 후보 블록으로 선정할 경우 A 내지 I가 그 대상이 될 수 있다.
후보 블록이 대상 블록을 기준으로 소정의 방향에 위치하는지에 따라 통계적 후보로 분류할 수 있다. 여기서, 소정의 방향은 좌, 상, 좌상, 우상 방향 등에서 정해질 수 있다.
예를 들어, 대상 블록을 기준으로 좌, 상 방향에 위치하는 블록에 한정하여 후보 블록을 선정할 경우 B, C, F, I, L이 그 대상이 될 수 있다.
또는, 대상 블록을 기준으로 좌, 상, 좌상, 우상 방향에 위치하는 블록에 한정하여 후보 블록을 선정할 경우 A 내지 L이 그 대상이 될 수 있다.
상기 예와 같이 통계적 후보에 고려되는 후보 블록이 선정하더라도 움직임 정보 예측 후보군에 포함시키기 위한 우선 순위가 존재할 수 있다. 즉, 통계적 후보에 지원되는 개수만큼 우선 순위에서 선정될 수 있다.
상기 우선 순위는 소정의 순서가 지원될 수 있으며, 다양한 부호화 요소에 의해 정해질 수도 있다. 상기 부호화 요소는 후보 블록과 대상 블록 간의 거리(예로, 짧은 거리인지 여부. 블록 간의 거리는 x 성분과 y 성분에 기반하여 확인 가능), 대상 블록을 기준으로 후보 블록의 상대적인 방향(예로, 좌, 상, 좌상, 우상 방향. 좌 -> 상 -> 우상 -> 좌 순서 등) 등에 기반하여 정의될 수 있다.
(2) 대상 블록을 기준으로 소정의 부호화 순서에 따라 부호화가 완료된 블록을 후보 블록으로 고려할 수 있다.
후술하는 예는 래스터 스캔(예로, 최대 부호화 블록), Z-스캔(예로, 부호화 블록, 예측 블록 등)을 따르는 경우를 가정하나, 스캔 순서에 따라 후술하는 내용이 변경 적용될 수 있음을 이해하여야 한다.
전술한 (1)의 예의 경우 움직임 정보 예측 후보군 구성을 위한 우선 순위가 지원될 수 있는 것과 마찬가지로 본 실시예에서도 소정의 우선 순위가 지원될 수 있다. 상기 우선 순위는 다양한 부호화 요소에 의해 정해질 수 있지만, 설명의 편의를 위해 부호화 순서에 따라 정해지는 경우를 가정한다. 후술하는 예에서는 후보 블록과 우선 순위를 함께 고려하여 설명한다.
부호화 설정에 따라 통계적 후보로 고려되는 후보 블록이 제한적으로 정해질 수 있다.
후보 블록이 소정의 단위에 속하는지 여부에 따라 통계적 후보로 분류할 수 있다. 여기서, 소정의 단위는 최대 부호화 블록, 브릭, 타일, 슬라이스, 서브 픽쳐, 픽쳐 등에서 정해질 수 있다.
예를 들어, 대상 블록과 동일한 픽쳐에 속하는 블록을 후보 블록으로 선정할 경우 J - D - E - F - G - K - L - H - I - A - B - C와 같은 후보 블록 및 우선 순위가 그 대상이 될 수 있다.
또는, 대상 블록과 동일한 슬라이스에 속하는 블록을 후보 블록으로 선정할 경우 D - E - F - G - H - I - A - B - C와 같은 후보 블록 및 우선 순위가 그 대상이 될 수 있다.
후보 블록이 대상 블록을 기준으로 소정의 방향에 위치하는지에 따라 통계적 후보로 분류할 수 있다. 여기서, 소정의 방향은 좌, 상 방향 등에서 정해질 수 있다.
예를 들어, 대상 블록을 기준으로 좌 방향에 위치하는 블록에 한정하여 후보 블록을 선정할 경우 K - L - H - I - A - B - C와 같은 후보 블록 및 우선 순위가 그 대상이 될 수 있다.
또는, 대상 블록을 기준으로 상 방향에 위치하는 블록에 한정하여 후보 블록을 선정할 경우 E - F - A - B - C와 같은 후보 블록 및 우선 순위가 그 대상이 될 수 있다.
상기 설명은 후보 블록과 우선 순위가 결합되는 경우를 가정하여 설명하나, 이에 한정되지 않고 다양한 후보 블록 및 우선 순위 설정이 가능할 수 있다.
상기 (1)과 (2)의 설명을 통해 움직임 정보 예측 후보군에 포함되는 우선 순위가 지원될 수 있음을 언급하였다. 상기 우선 순위는 하나 이상 지원될 수 있는데, 후보 블록 전체를 대상으로 하는 하나의 우선 순위가 지원될 수 있거나 또는 후보 블록을 둘 이상의 카테고리로 분류하고 카테고리에 따른 개별적인 우선 순위가 지원될 수 있다. 전자의 경우 하나의 우선 순위에서 k개의 후보 블록을 선정하는 예일 수 있고, 후자의 경우 각 우선 순위(예로, 2개의 카테고리)에서 p, q개(p + q = k)의 후보 블록을 선정하는 예일 수 있다. 이때, 상기 카테고리는 소정의 부호화 요소에 기반하여 구분될 수 있으며, 부호화 요소는 소정의 단위에 속하는지 여부, 후보 블록이 대상 블록 기준으로 소정의 방향에 위치하는지 여부 등을 포함할 수 있다.
상기 (1)과 (2)를 통해 설명한 소정의 단위(예로, 분할 단위)에 속하는지 여부에 따라 후보 블록을 선정하는 예시를 설명하였다. 상기 분할 단위와는 별개로 대상 블록을 기준으로 소정의 범위 안에 속하는 블록에 한정하여 후보 블록을 선정할 수 있다. 예를 들어, (x1, y1), (x2, y2), (x3, y3) 등과 x 또는 y 성분의 최소값, 최대값 등의 범위를 정의하는 경계점에 의해 확인될 수 있다. 상기 x1 내지 y3 등의 값은 (절대값 기준) 0, 4, 8 등의 정수일 수 있다.
전술한 (1) 또는 (2) 중에 하나의 설정에 기반하여 통계적 후보가 지원될 수 있거나 또는 (1)과 (2)가 혼합된 형식의 통계적 후보가 지원될 수도 있다. 상기 설명을 통해 통계적 후보를 위한 후보 블록을 어떻게 선정하는지에 대해 살펴보았으며, 통계적 후보에 대한 관리 및 업데이트, 그리고 움직임 정보 예측 후보군에 포함되는 경우를 후술한다.
움직임 정보 예측 후보군의 구성은 블록 단위로 수행되는 것이 일반적일 수 있는데, 대상 블록을 중심으로 인접한 블록의 움직임 정보가 동일하거나 유사할 가능성이 높기 때문이다. 즉, 공간적 후보, 시간적 후보의 경우 대상 블록에 기반하여 구성될 수 있다.
한편, 통계적 후보는 후보 블록의 위치가 대상 블록과는 인접하지 않은 곳을 대상으로 하기 때문에 소정의 단위에 기반하여 구성될 수 있다. 상기 소정의 단위는 대상 블록을 포함하는 상위 블록일 수 있다.
예를 들어, 대상 블록이 예측 블록일 경우 예측 블록 단위로 통계적 후보를 구성할 수 있거나 또는 부호화 블록 단위로 통계적 후보를 구성할 수 있다.
또는, 대상 블록이 부호화 블록일 경우 부호화 블록 단위로 통계적 후보를 구성할 수 있거나 또는 조상 블록(예로, 깊이 정보가 대상 블록과 1 이상 차이 등) 단위로 통계적 후보를 구성할 수 있다. 이때, 조상 블록은 최대 부호화 블록을 포함하거나 또는 최대 부호화 블록에 기반하여 획득되는 단위(예로, 최대 부호화 블록의 정수배 등)일 수도 있다.
상기 예와 같이 대상 블록 또는 상위 단위에 기반하여 통계적 후보가 구성될 수 있으며, 후술하는 예에서는 대상 블록에 기반하여 통계적 후보가 구성되는 경우를 가정한다.
또한, 통계적 후보에 관한 메모리 초기화는 소정의 단위에 기반하여 수행될 수 있다. 상기 소정의 단위는 픽쳐, 서브 픽쳐, 슬라이스, 타일, 브릭, 블록 등에서 정해질 수 있으며, 블록의 경우 최대 부호화 블록에 기반하여 설정될 수 있다. 예를 들어, 최대 부호화 블록의 정수개(1, 2, 또는 그 이상의 정수), 최대 부호화 블록의 행 또는 열 단위 등에 기반하여 통계적 후보에 관한 메모리 초기화가 수행될 수 있다.
다음은 통계적 후보 관리 및 업데이트에 관하여 설명한다. 통계적 후보를 관리하기 위한 메모리가 준비될 수 있으며, 최대 k개 블록의 움직임 정보를 저장할 수 있다. 이때, k는 1 내지 6 또는 그 이상의 정수일 수 있다. 상기 메모리에 저장되는 움직임 정보는 움직임 벡터, 참조 픽쳐, 참조 방향 등에서 정해질 수 있다. 여기서, 움직임 벡터는 움직임 모델 선택 정보에 기반하여 그 개수(예로, 1 ~ 3개 등)가 정해질 수 있다. 설명의 편의를 위해 대상 블록을 기준으로 소정의 부호화 순서에 따라 부호화가 완료된 블록을 후보 블록으로 고려하는 경우를 중심으로 후술한다.
(case 1) 부호화 순서에 따라 앞서 부호화가 된 블록의 움직임 정보가 앞선 순위에 후보로 포함될 수 있다. 또한, 최대 개수만큼 채워진 경우에 추가적인 후보에 의해 업데이트될 때, 앞선 순위에 있는 후보가 제거되고 한 칸씩 앞으로 순서가 옮겨질 수 있다. 다음 예시 중 x는 아직 후보 구성이 되지 않은 빈칸임을 의미한다.
(예시)
1 order - [a, x, x, x, x, x, x, x, x, x]
2 order - [a, b, x, x, x, x, x, x, x, x]
...
9 order - [a, b, c, d, e, f, g, h, i, x]
10 order - [a, b, c, d, e, f, g, h, i, j] -> j 추가. 꽉 참
11 order - [b, c, d, e, f, g, h, i, j, k] -> k 추가. 맨 앞의 a 제거, 순서 이동
(case 2) 만약 중복되는 움직임 정보가 존재할 경우 이미 존재하는 후보는 제거되고, 기존 후보들의 순서가 앞으로 조정될 수 있다.
이때, 중복성은 움직임 정보가 동일함을 의미하며 이는 움직임 정보 부호화 모드에 의해 정의될 수 있다. 일 예로, 병합 모드의 경우 움직임 벡터, 참조 픽쳐, 참조 방향 등에 기반하여 중복됨을 판단할 수 있고, 경쟁 모드의 경우 움직임 벡터, 참조 픽쳐에 기반하여 중복됨을 판단할 수 있다. 이때, 경쟁 모드의 경우 각 후보의 참조 픽쳐가 동일한 경우에는 움직임 벡터의 비교를 통해 중복됨을 판단할 수 있으며, 각 후보의 참조 픽쳐가 상이한 경우에는 각 후보의 참조 픽쳐에 기반하여 스케일링된 움직임 벡터의 비교를 통해 중복됨을 판단할 수 있으나, 이에 한정되지는 않는다.
(예시)
1 order - [a, b, c, d, e, f, g, x, x, x]
2 order - [a, b, c, d, e, f, g, d, x, x] -> d가 들어오는데 중복
- [a, b, c, e, f, g, d, x, x, x] -> 기존의 d 제거, 순서 이동
(case 3) 만약 중복되는 움직임 정보가 존재할 경우 해당 후보는 소정의 조건에 따라 장기 보관되는 후보(장기 후보)로 마킹되어 관리될 수 있다.
상기 장기 후보를 위한 별개의 메모리가 지원될 수 있으며, 움직임 정보 외에 발생 빈도 등의 정보가 추가로 저장 및 업데이트될 수 있다. 다음의 예시에서 장기 보관되는 후보를 위한 메모리는 ()로 표현될 수 있다.
(예시)
1 order - [(), b, c, d, e, f, g, h, i, j, k]
2 order - [(), b, c, d, e, f, g, h, i, j, k] -> e가 다음 순서. 중복
- [(e), b, c, d, f, g, h, i, j, k] -> 맨 앞 이동. 장기 마킹
3 order - [(e), c, d, f, g, h, i, j, k, l] -> l 추가로 b 제거.
...
10 order - [(e), l, m, n, o, p, q, r, s, t] -> l이 다음 순서. 중복
- [(e, l), m, n, o, p, q, r, s, t] -> 장기 마킹
11 order - [(e, l), m, n, o, p, q, r, s, t] -> l이 다음 순서. 중복 3개
- [(l, e), m, n, o, p, q, r, s, t] -> 장기 후보 순서 변경
상기 예는 기존의 통계적 후보(단기 후보)와 통합 관리되는 경우를 나타내지만 단기 후보와는 별개로 관리될 수 있으며, 장기 후보의 개수는 0, 1, 2 또는 그 이상의 정수일 수 있다.
단기 후보의 경우 부호화 순서에 기반하여 선입선출 방식으로 관리될 수 있지만, 장기 후보의 경우 단기 후보 중에서 중복성이 발생하는 후보에 기반하여 빈도수에 따라 관리될 수 있는 구성이 가능할 수 있다. 장기 후보의 경우 메모리의 업데이트 과정에서 빈도수에 따라 후보 순서가 변경될 수 있으나 이에 한정되지 않는다.
상기 예는 후보 블록을 둘 이상의 카테고리로 분류하고 카테고리에 따른 우선 순위가 지원되는 경우에 따른 일부 경우일 수 있다. 움직임 정보 예측 후보군에 통계적 후보를 포함하여 구성할 때, 단기와 장기 후보에서 각각 a, b개를 각 후보 내의 우선 순위에 따라 구성할 수 있다. 여기서, a, b는 0, 1, 2 또는 그 이상의 정수일 수 있다.
상기 case 1 내지 3은 통계적 후보에 따른 예시이며, (case 1 + case 2) 또는 (case 1 + case 3)의 구성이 가능할 수 있고, 그 밖의 다양한 변형 및 추가되는 형태로 통계적 후보가 관리될 수 있다.
도 12는 본 발명의 일 실시예에 따른 이동 외 움직임 모델에 따른 통계적 후보에 관한 개념도이다.
통계적 후보는 이동 움직임 모델뿐만 아니라 이동 외 움직임 모델에도 지원되는 후보일 수 있다. 이동 움직임 모델의 경우 발생 빈도가 많기 때문에 공간적 또는 시간적 후보 등에서 참조할 수 있는 블록이 많을 수 있지만, 이동 외 움직임 모델의 경우 발생 빈도가 적기 때문에 공간적 또는 시간적 후보 외의 통계적 후보가 필요한 경우일 수 있다.
도 12를 참조하면, 대상 블록과 동일한 공간에 속하고 멀리 인접한 블록<inter_blk_B>의 움직임 정보{PV0, PV1}에 기반하여 대상 블록의 움직임 정보{TV0, TV1}를 예측하는 경우(hmvp)를 나타낸다.
전술한 이동 움직임 모델의 통계적 후보와 비교하면, 메모리에 저장하는 움직임 정보 중 움직임 벡터의 개수가 늘어난 것일 수 있다. 그렇기 때문에 통계적 후보에 관한 기본 개념은 이동 움직임 모델과 동일하거나 비슷할 수 있으며, 움직임 벡터의 개수가 달리하는 구성으로 관련 설명을 유도할 수 있다. 다음은 이동 외 움직임 모델에 따른 차이점에 관한 부분을 중점을 두어 후술한다. 후술하는 예에서는 제어점이 3개(예로, v0, v1, v2)인 어파인 모델인 경우를 가정한다.
어파인 모델의 경우 메모리에 저장되는 움직임 정보는 참조 픽쳐, 참조 방향, 움직임 벡터 v0, v1, v2에서 정해질 수 있다. 여기서, 저장되는 움직임 벡터는 다양한 형태로 저장할 수 있다. 예를 들어, 움직임 벡터가 그대로 저장되거나 또는 소정의 차분치 정보가 저장될 수 있다.
도 13은 본 발명의 일 실시예에 따른 통계적 후보로 저장되는 각 제어점 위치의 움직임 정보의 구성에 대한 예시도이다.
도 13을 참조하면, (a)는 후보 블록의 v0, v1, v2의 움직임 벡터가 v0, v1, v2로 표현되며, (b)는 후보 블록의 v0의 움직임 벡터는 v0로 표현되고 v1과 v2의 움직임 벡터는 v0의 움직임 벡터와의 차분치인 v*1, v*2로 표현되는 경우를 나타낸다.
즉, 각 제어점 위치의 움직임 벡터를 그대로 저장하거나 또는 다른 제어점 위치의 움직임 벡터와의 차분치를 저장할 수 있는데, 이는 메모리 관리 측면에서 고려되는 구성의 예일 수 있으며 다양한 변형의 예가 가능할 수 있다.
통계적 후보에 대한 지원 여부는 시퀀스, 픽쳐, 슬라이스, 타일, 브릭 등의 단위에서 명시적으로 관련 정보가 생성될 수 있거나 또는 부호화 설정에 따라 묵시적으로 정해질 수 있다. 상기 부호화 설정은 전술한 다양한 부호화 요소에 의해 정의될 수 있으므로 상세한 설명은 생략한다.
여기서, 통계적 후보는 움직임 정보 부호화 모드에 따라 지원 여부가 정해질 수 있다. 또는, 움직임 모델 선택 정보에 따라 지원 여부가 정해질 수 있다. 예를 들어, merge_inter, merge_ibc, merge_affine, comp_inter, comp_ibc, comp_affine 중에서 통계적 후보가 지원될 수 있다.
만약 이동 움직임 모델과 이동 외 움직임 모델에 통계적 후보가 지원되는 경우라면, 복수의 통계적 후보를 위한 메모리가 지원될 수 있다.
다음은 움직임 정보 부호화 모드에 따라 움직임 정보 예측 후보군을 구성하는 방법에 관하여 설명한다.
경쟁 모드를 위한 움직임 정보 예측 후보군(이하 경쟁 모드 후보군)은 k개의 후보를 포함할 수 있으며, k는 2, 3, 4 또는 그 이상의 정수일 수 있다. 경쟁 모드 후보군은 공간적 후보 또는 시간적 후보 중 적어도 하나를 포함할 수 있다.
공간적 후보는 기준 블록을 중심으로 좌, 상, 좌상, 우상, 좌하 방향 등에 인접한 블록 중 적어도 하나에서 유도될 수 있다. 또는, 좌측 방향으로 인접한 블록(좌, 좌하 블록)과 상측 방향으로 인접한 블록(좌상, 상, 우상 블록)에서 적어도 하나의 후보를 유도할 수 있으며, 본 설정을 가정하여 후술한다.
후보군 구성을 위한 둘 이상의 우선 순위가 존재할 수 있다. 좌측 방향에 인접한 영역에서는 좌하 - 좌 순서의 우선 순위가 설정될 수 있고, 상측 방향에 인접한 영역에서는 우상 - 상 - 좌상 순서의 우선 순위가 설정될 수 있다.
상기 예는 대상 블록의 참조 픽쳐가 동일한 블록에서만 공간적 후보를 유도하는 구성일 수 있는데, 대상 블록의 참조 픽쳐에 기반한 스케일링 과정(다음에서 * 표시)을 통해 공간적 후보를 유도할 수도 있다. 이 경우 좌측 방향에 인접한 영역에서는 좌 - 좌하 - 좌* - 좌하* 또는 좌 - 좌하 - 좌하* - 좌* 순서의 우선 순위가 설정될 수 있고, 상측 방향에 인접한 영역에서는 우상 - 상 - 좌상 - 우상* - 상* - 좌상* 또는 우상 - 상 - 좌상 - 좌상* - 상* - 우상* 순서의 우선 순위가 설정될 수도 있다.
시간적 후보는 기준 블록에 대응되는 블록을 중심으로 중앙 및 좌, 우, 상, 하, 좌상, 우상, 좌하, 우하 방향 등에 인접한 블록 중 적어도 하나에서 유도될 수 있다. 후보군 구성을 위한 우선 순위가 존재할 수 있으며, 중앙 - 좌하 - 우 - 하, 좌하 - 중앙 - 좌상 등의 우선 순위가 설정될 수 있다.
공간적 후보의 최대 허용 개수와 시간적 후보의 최대 허용 개수의 합이 경쟁 모드 후보군 개수보다 적은 설정을 가진 경우에는 공간적 후보의 후보군 구성과 상관없이 시간적 후보를 후보군에 포함할 수 있다.
상기 우선 순위와 각 후보 블록의 사용 가능성, 그리고 시간적 후보의 최대 허용 개수(q개. 1 내지 경쟁 모드 후보군 개수 사이의 정수)에 기반하여 상기 후보 중 전부 또는 일부가 후보군에 포함될 수 있다.
여기서, 공간적 후보의 최대 허용 개수가 병합 모드 후보군 개수와 동일하게 설정될 경우에는 시간적 후보는 후보군에 포함될 수 없고, 공간적 후보에서 최대 허용 개수만큼 채우지 못하였을 때 시간적 후보는 후보군에 포함될 수 있는 설정은 가질 수 있다. 본 예는 후자의 경우를 가정한다.
여기서, 시간적 후보의 움직임 벡터는 후보 블록의 움직임 벡터, 그리고 현재 영상과 대상 블록의 참조 영상 간의 거리 간격에 기반하여 획득될 수 있고, 시간적 후보의 참조 영상은 현재 영상과 대상 블록의 참조 영상의 거리 간격에 기반하여 획득되거나 또는 시간적 후보의 참조 영상에 기반하여 획득되거나 또는 기 정의된 참조 영상(예로, 참조 픽쳐 인덱스가 0)으로 획득될 수 있다.
만약 공간적 후보, 시간적 후보 등으로 경쟁 모드 후보군을 채우지 못한 경우 zero 벡터를 포함한 디폴트 후보을 통해 후보군 구성을 완료할 수 있다.
상기 경쟁 모드는 comp_inter에 관한 설명을 중심으로 한 것이며, comp_ibc 또는 comp_affine의 경우 비슷하거나 상이한 후보를 대상으로 후보군을 구성할 수 있다.
예를 들어, comp_ibc의 경우 공간적 후보, 통계적 후보, 조합 후보, 디폴트 후보 등에서 선정된 소정의 후보에 기반하여 후보군을 구성할 수 있다. 이때, 공간적 후보를 우선하여 후보군을 구성하고, 그 다음 통계적 후보 - 조합 후보 - 디폴트 후보 등의 순서로 후보군을 구성할 수 있으나, 이에 한정되지 않고 다양한 순서가 가능할 수 있다.
또는, comp_affine의 경우 공간적 후보, 시간적 후보, 통계적 후보, 조합 후보, 디폴트 후보 등에 선정된 소정의 후보에 기반하여 후보군을 구성할 수 있다. 상세하게는, 상기 후보(예로, 하나의 블록)의 움직임 벡터 세트 후보를 후보군에 구성<1>하거나 또는 제어점 위치에 기반한 후보(예로, 둘 이상의 블록)의 움직임 벡터가 조합된 후보를 후보군에 구성<2>할 수 있다. 상기 <1>에 관한 후보가 먼저 후보군에 포함되고, 그 다음 <2>에 관한 후보가 포함되는 순서가 가능할 수 있으나 이에 한정되지 않는다.
전술한 다양한 경쟁 모드 후보군 구성에 관한 세부 설명은 comp_inter에서 유도될 수 있으므로, 상세한 설명은 생략한다.
경쟁 모드 후보군을 구성하는 과정에서 먼저 포함된 후보 중에 중복되는 움직임 정보가 존재할 경우, 먼저 포함된 후보를 유지한 채 그 다음 우선 순위의 후보를 후보군에 포함할 수 있다.
여기서, 후보군을 구성하기 전에 상기 후보군의 존재하는 움직임 벡터는 대상 블록의 참조 픽쳐와 현재 픽쳐와의 거리에 기반하여 스케일링이 수행될 수 있다. 예를 들어, 대상 블록의 참조 픽쳐와 현재 픽쳐와의 거리, 그리고 후보 블록의 참조 픽쳐와 후보 블록이 속한 픽쳐와의 거리가 동일할 경우에는 움직임 벡터를 후보군에 포함할 수 있고, 동일하지 않을 경우에는 대상 블록의 참조 픽쳐와 현재 픽쳐와의 거리에 맞춰 스케일링한 움직임 벡터를 후보군에 포함할 수 있다.
이때, 중복성은 움직임 정보가 동일함을 의미하며 이는 움직임 정보 부호화 모드에 의해 정의될 수 있다. 경쟁 모드의 경우 움직임 벡터, 참조 픽쳐, 참조 방향 등에 기반하여 중복됨을 판단할 수 있다. 예를 들어, 최소 하나의 움직임 벡터의 성분이 다르다면 중복되지 않다고 판단될 수 있다. 상기 중복성 확인 과정은 새로운 후보를 후보군에 포함시킬 때 수행되는 것이 일반적일 수 있으나, 생략되는 경우로의 변형 또한 가능할 수 있다.
병합 모드를 위한 움직임 정보 예측 후보군(이하 병합 모드 후보군)은 k개의 후보를 포함할 수 있으며, k는 2, 3, 4, 5, 6 또는 그 이상의 정수일 수 있다. 병합 모드 후보군은 공간적 후보 또는 시간적 후보 중 적어도 하나를 포함할 수 있다.
공간적 후보는 기준 블록을 중심으로 좌, 상, 좌상, 우상, 좌하 방향 등에 인접한 블록 중 적어도 하나에서 유도될 수 있다. 후보군 구성을 위한 우선 순위가 존재할 수 있으며, 좌 - 상 - 좌하 - 우상 - 좌상, 좌 - 상 - 우상 - 좌하 - 좌상, 상 - 좌 - 좌하 - 좌상 - 우상 등의 우선 순위가 설정될 수 있다.
상기 우선 순위와 각 후보 블록의 사용 가능성(예로, 부호화 모드, 블록 위치 등에 기반하여 판단), 그리고 공간적 후보의 최대 허용 개수(p개. 1 내지 병합 모드 후보군 개수 사이의 정수)에 기반하여 상기 후보 중 전부 또는 일부가 후보군에 포함될 수 있다. 상기 최대 허용 개수와 사용 가능성에 따라 tl - tr - bl - t3 - l3의 순서로 후보군에 포함되지 않을 수 있으며, 만약 최대 허용 개수가 4개이고 후보 블록의 사용 가능성이 모두 참이라면 tl의 움직임 정보는 후보군에 포함되지 않고, 일부 후보 블록의 사용 가능성이 거짓이라면 tl의 움직임 정보는 후보군에 포함될 수 있다.
시간적 후보는 기준 블록에 대응되는 블록을 중심으로 중앙 및 좌, 우, 상, 하, 좌상, 우상, 좌하, 우하 방향 등에 인접한 블록 중 적어도 하나에서 유도될 수 있다. 후보군 구성을 위한 우선 순위가 존재할 수 있으며, 중앙 - 좌하 - 우 - 하, 좌하 - 중앙 - 좌상 등의 우선 순위가 설정될 수 있다.
상기 우선 순위와 각 후보 블록의 사용 가능성, 그리고 시간적 후보의 최대 허용 개수(q개. 1 내지 병합 모드 후보군 개수 사이의 정수)에 기반하여 상기 후보 중 전부 또는 일부가 후보군에 포함될 수 있다.
여기서, 시간적 후보의 움직임 벡터는 후보 블록의 움직임 벡터에 기반하여 획득될 수 있고, 시간적 후보의 참조 영상은 후보 블록의 참조 영상에 기반하여 획득되거나 또는 기 정의된 참조 영상(예로, 참조 픽쳐 인덱스가 0)으로 획득될 수 있다.
병합 모드 후보군에 포함되는 우선 순위는 공간적 후보 - 시간적 후보 또는 그 반대의 설정이 가능할 수 있으며, 공간적 후보와 시간적 후보가 혼합 구성되는 우선 순위가 지원될 수도 있다. 본 예에서는 공간적 후보 - 시간적 후보인 경우를 가정한다.
또한, 통계적 후보 또는 조합 후보를 병합 모드 후보군에 더 포함할 수 있다. 통계적 후보와 조합 후보는 공간적 후보와 시간적 후보 뒤에 구성할 수 있으나, 이에 한정되지 않고 다양한 우선 순위 설정이 가능할 수 있다.
통계적 후보는 최대 n개의 움직임 정보가 관리될 수 있으며, 이 중 z개의 움직임 정보가 통계적 후보로 병합 모드 후보군에 포함될 수 있다. z는 병합 모드 후보군에 이미 포함된 후보 구성에 따라 가변적일 수 있으며, 0, 1, 2 또는 그 이상의 정수일 수 있으며, n보다 작거나 같을 수 있다.
조합 후보는 병합 모드 후보군 내 이미 포함된 n개의 후보를 조합하여 유도될 수 있으며, n은 2, 3, 4 또는 그 이상의 정수일 수 있다. 상기 조합 후보 개수(n)는 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일, 브릭, 블록 등의 단위에서 명시적으로 발생하는 정보일 수 있다. 또는, 부호화 설정에 따라 묵시적으로 정해질 수 있다. 이때, 부호화 설정은 기준 블록의 크기, 형태, 위치, 영상 타입, 컬러 성분 등에서 하나 이상의 요인에 기반하여 정의될 수 있다.
또한, 상기 조합 후보 개수는 병합 모드 후보군에 채우지 못한 후보의 개수에 기반하여 정해질 수 있다. 이때, 병합 모드 후보군에 채우지 못한 후보의 개수는 병합 모드 후보군의 개수와 이미 채워진 후보의 개수와의 차분값일 수 있다. 즉, 이미 병합 모드 후보군 구성이 완료된 경우라면 조합 후보는 추가되지 않을 수 있다. 병합 모드 후보군 구성이 완료되지 않았다면 조합 후보는 추가될 수 있으나, 병합 모드 후보군에 채워진 후보가 1개 이하인 경우 조합 후보는 추가되지 않는다.
만약 공간적 후보, 시간적 후보, 통계적 후보, 조합 후보 등으로 병합 모드 후보군을 채우지 못한 경우 zero 벡터를 포함한 디폴트 후보을 통해 후보군 구성을 완료할 수 있다.
상기 병합 모드는 merge_inter에 관한 설명을 중심으로 한 것이며, merge_ibc 또는 merge_affine의 경우 비슷하거나 상이한 후보를 대상으로 후보군을 구성할 수 있다.
예를 들어, merge_ibc의 경우 공간적 후보, 통계적 후보, 조합 후보, 디폴트 후보 등에서 선정된 소정의 후보에 기반하여 후보군을 구성할 수 있다. 이때, 공간적 후보를 우선하여 후보군을 구성하고, 그 다음 통계적 후보 - 조합 후보 - 디폴트 후보 등의 순서로 후보군을 구성할 수 있으나, 이에 한정되지 않고 다양한 순서가 가능할 수 있다.
또는, merge_affine의 경우 공간적 후보, 시간적 후보, 통계적 후보, 조합 후보, 디폴트 후보 등에 선정된 소정의 후보에 기반하여 후보군을 구성할 수 있다. 상세하게는, 상기 후보(예로, 하나의 블록)의 움직임 벡터 세트 후보를 후보군에 구성<1>하거나 또는 제어점 위치에 기반한 후보(예로, 둘 이상의 블록)의 움직임 벡터가 조합된 후보를 후보군에 구성<2>할 수 있다. 상기 <1>에 관한 후보가 먼저 후보군에 포함되고, 그 다음 <2>에 관한 후보가 포함되는 순서가 가능할 수 있으나 이에 한정되지 않는다.
전술한 다양한 병합 모드 후보군 구성에 관한 세부 설명은 merge_inter에서 유도될 수 있으므로, 상세한 설명은 생략한다.
병합 모드 후보군을 구성하는 과정에서 먼저 포함된 후보 중에 중복되는 움직임 정보가 존재할 경우, 먼저 포함된 후보를 유지한 채 그 다음 우선 순위의 후보를 후보군에 포함할 수 있다.
이때, 중복성은 움직임 정보가 동일함을 의미하며 이는 움직임 정보 부호화 모드에 의해 정의될 수 있다. 병합 모드의 경우 움직임 벡터, 참조 픽쳐, 참조 방향 등에 기반하여 중복됨을 판단할 수 있다. 예를 들어, 최소 하나의 움직임 벡터의 성분이 다르다면 중복되지 않다고 판단될 수 있다. 상기 중복성 확인 과정은 새로운 후보를 후보군에 포함시킬 때 수행되는 것이 일반적일 수 있으나, 생략되는 경우로의 변형 또한 가능할 수 있다.
도 14는 본 발명의 일 실시예에 따른 움직임 정보 부호화에 관한 순서도이다. 상세하게는, 경쟁 모드에서 대상 블록의 움직임 정보에 관한 부호화일 수 있다.
대상 블록의 움직임 벡터 예측 후보 리스트를 생성할 수 있다(S1400). 전술한 경쟁 모드 후보군이 움직임 벡터 후보 리스트를 의미할 수 있으며, 이에 관한 상세한 설명은 생략한다.
대상 블록의 움직임 벡터 차분치를 복원할 수 있다(S1410). 움직임 벡터의 x, y 성분에 관한 차분치가 개별적으로 복원될 수 있으며, 각 성분의 차분치는 0 이상의 값을 가질 수 있다
움직임 벡터 예측 후보 리스트에서 대상 블록의 예측 후보 인덱스를 선정할 수 있다(S1420). 상기 후보 리스트에서 상기 후보 인덱스에 따라 획득된 움직임 벡터에 기반하여 대상 블록의 움직임 벡터 예측값을 유도할 수 있다. 만약 기 설정된 하나의 움직임 벡터 예측값이 유도될 수 있다면, 예측 후보 인덱스 선정 과정 및 인덱스 정보는 생략될 수 있다.
차분 움직임 벡터의 정밀도 정보가 유도될 수 있다(S1430). 움직임 벡터의 x, y 성분에 공통으로 적용되는 정밀도 정보가 유도되거나 또는 각 성분에 적용되는 정밀도 정보가 유도될 수 있다. 만약 움직임 벡터 차분치가 0인 경우에는 정밀도 정보는 생략될 수 있으며, 본 과정도 생략될 수 있다.
움직임 벡터 예측값에 관한 조정 오프셋을 유도할 수 있다(S1440). 상기 오프셋은 움직임 벡터 예측값의 x 또는 y 성분에 가산 또는 감산되는 값일 수 있다. 상기 오프셋은 x와 y 성분 중 하나에만 지원될 수 있거나 또는 x와 y 성분에 모두 지원될 수 있다.
움직임 벡터 예측값을 (pmv_x, pmv_y), 조정 오프셋을 offset_x, offset_y라 가정할 때, 움직임 벡터 예측값은 (pmv_x + offset_x, pmv_y + offset_y)로 조정(또는 획득)될 수 있다.
여기서, offset_x과 offset_y의 절대값은 각각 0, 1, 2 또는 그 이상의 정수일 수 있으며, 부호 정보가 함께 고려되는 값(+1, -1, +2, -2 등)을 가질 수 있다. 또한, 소정의 정밀도에 기반하여 offset_x, offset_y가 정해질 수 있다. 상기 소정의 정밀도는 1/16, 1/8, 1/4, 1/2, 1 화소 단위 등에서 정해질 수 있으며, 보간 정밀도, 움직임 벡터 정밀도 등에 기반하여 정해질 수도 있다.
예를 들어, 보간 정밀도가 1/4 화소 단위인 경우, 절대값과 부호 정보에 결합되어 0, 1/4, -1/4, 2/4, -2/4, 3/4, -3/4 등으로 유도될 수 있다.
여기서, offset_x와 offset_y는 각각 a, b개가 지원될 수 있으며, a와 b는 0, 1, 2 또는 그 이상의 정수일 수 있다. a와 b는 고정적인 값을 가질 수 있거나 또는 가변적인 값을 가질 수 있다. 또한, a와 b는 동일하거나 동일하지 않는 값을 가질 수 있다.
움직임 벡터 예측값에 대한 조정 오프셋의 지원 여부는 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일, 브릭 등의 단위에서 명시적으로 지원될 수 있거나 또는 부호화 설정에 따라 묵시적으로 정해질 수 있다. 또한, 조정 오프셋의 설정(예로, 값의 범위, 개수 등)은 부호화 설정에 따라 정해질 수 있다.
상기 부호화 설정은 영상 타입, 컬러 성분, 대상 블록의 상태 정보, 움직임 모델 선택 정보(예로, 이동 움직임 모델인지 아닌지), 참조 픽쳐(예로, 현재 픽쳐인지 아닌지), 차분 움직임 벡터 정밀도 선택 정보(예로, 1/4, 1/2, 1, 2, 4 단위 중에 소정의 단위인지 아닌지) 등과 같은 부호화 요소 중 적어도 하나의 요소를 고려하여 정해질 수 있다.
예를 들어, 블록의 크기에 따라 조정 오프셋의 지원 여부 및 오프셋 설정이 정해질 수 있다. 이때, 블록의 크기는 제 1 문턱크기(최소값) 또는 제 2 문턱크기(최대값)에 의해 지원 및 설정 범위가 정해질 수 있고, 각 문턱크기는 블록의 너비(W)와 높이(H)로 W, H, W x H, W*H로 표현될 수 있다. 제 1 문턱크기의 경우 W와 H는 4, 8, 16 또는 그 이상의 정수일 수 있고, W*H는 16, 32, 64 또는 그 이상의 정수일 수 있다. 제 2 문턱크기의 경우 W와 H는 16, 32, 64 또는 그 이상의 정수일 수 있고, W*H는 64, 128, 256 또는 그 이상의 정수일 수 있다. 상기 범위는 제 1 문턱크기 또는 제 2 문턱크기 중 하나에 의해 정해지거나 또는 둘 모두를 사용하여 정해질 수 있다.
이때, 상기 문턱크기는 고정적이거나 영상(예로, 영상 타입 등)에 따라 적응적일 수 있다. 이때, 상기 제 1 문턱크기는 최소 부호화 블록, 최소 예측 블록, 최소 변환 블록 등의 크기에 기반하여 설정될 수 있고, 상기 제 2 문턱크기는 최대 부호화 블록, 최대 예측 블록, 최대 변환 블록 등의 크기에 기반하여 설정될 수도 있다.
또한, 조정 오프셋은 움직임 정보 예측 후보군에 포함되는 모든 후보에 적용될 수 있거나 또는 일부 후보에만 적용될 수 있다. 후술하는 예에서는 후보군에 포함되는 모든 후보를 대상으로 적용되는 경우를 가정할 것이나, 0, 1, 2 내지 후보군 최대 개수 사이에서 조정 오프셋이 적용되는 후보가 선정될 수 있다.
만약 조정 오프셋의 지원이 되지 않는 경우라면 본 과정 및 조정 오프셋 정보는 생략될 수 있다.
움직임 벡터 예측값과 움직임 벡터 차분치를 가산하여 대상 블록의 움직임 벡터를 복원할 수 있다(S1450). 이때, 움직임 벡터 예측값 또는 움직임 벡터 차분치를 움직임 벡터 정밀도에 통일시키는 과정이 선행될 수 있으며, 전술한 움직임 벡터 스케일링 과정이 선행되거나 본 과정에서 수행될 수도 있다.
상기 구성 및 순서는 일부 예시일 뿐 이에 한정되지 않고 다양한 변경이 가능할 수 있다.
도 15는 본 발명의 일 실시예에 따른 움직임 벡터 예측 후보 및 대상 블록의 움직임 벡터에 대한 예시도이다.
설명의 편의를 위해 움직임 벡터 예측 후보는 2개가 지원이 되며, 하나의 성분(x 또는 y 성분 중 하나) 비교를 가정한다. 또한, 보간 정밀도 또는 움직임 벡터 정밀도가 1/4 화소 단위인 경우를 가정한다. 또한, 차분 움직임 벡터 정밀도는 1/4, 1, 4 화소 단위가 지원되는 경우(예로, 1/4일 때 <0>, 1일 때 <10>, 4일 때 <11>로 이진화 가정)를 가정한다. 또한, 움직임 벡터 차분치는 부호 정보는 생략되며, 단항 이진화로 처리되는 경우(예로, 0: <0>, 1: <10>, 2: <110> 등)를 가정한다.
도 15를 참조하면, 실제 움직임 벡터(X)는 2의 값을 가지고 후보 1(A)은 0, 후보 2(B)는 1/4의 값을 갖는다.
(차분 움직임 벡터 정밀도가 지원되지 않는 경우)
A와 X와의 거리(da)는 8/4(9비트), B와 X와의 거리(db)는 7/4(8비트)이기 때문에 비트량 발생 측면에서 예측 후보는 B로 선정될 수 있다.
(차분 움직임 벡터 정밀도가 지원되는 경우)
da는 8/4 이기 때문에 1 화소 단위 정밀도(2비트), 그리고 2/1로 차분치 정보(3비트)가 발생하여 총 5비트가 발생할 수 있다. 한편, db는 7/4이기 때문에 1/4 화소 단위 정밀도(1비트), 그리고 7/4로 차분치 정보(8비트)가 발생하여 총 9비트가 발생할 수 있다. 비트량 발생 측면에서 예측 후보는 A로 선정될 수 있다.
상기 예와 같이 차분 움직임 벡터 정밀도가 지원되지 않는 경우라면 대상 블록의 움직임 벡터와의 거리 간격이 짧은 후보가 예측 후보로 선정되는 것이 유리할 수 있고, 지원되는 경우라면 대상 블록의 움직임 벡터와의 거리 간격뿐만 아니라 정밀도 정보에 기반하여 발생되는 정보량에 기반하여 예측 후보로 선정되는 것이 중요할 수 있다.
도 16은 본 발명의 일 실시예에 따른 움직임 벡터 예측 후보 및 대상 블록의 움직임 벡터에 대한 예시도이다. 다음은 차분 움직임 벡터 정밀도가 지원되는 경우를 가정한다.
da는 33/4이기 때문에 1/4 화소 단위 정밀도(1비트), 그리고 33/4로 차분치 정보(34비트)가 발생하여 총 35비트가 발생할 수 있다. 한편, db는 21/4이기 때문에 1/4 화소 단위 정밀도(1비트), 그리고 21/4로 차분치 정보(22비트)가 발생하여 총 23비트가 발생할 수 있다. 비트량 발생 측면에서 예측 후보는 B로 선정될 수 있다.
도 17은 본 발명의 일 실시예에 따른 움직임 벡터 예측 후보 및 대상 블록의 움직임 벡터에 대한 예시도이다. 다음은 차분 움직임 벡터 정밀도가 지원되며, 조정 오프셋 정보가 지원되는 경우를 가정한다.
본 예에서 조정 오프셋은 0, +1의 후보를 가지며, 조정 오프셋이 적용되었는지에 대한 플래그(1비트)와 오프셋 선택 정보(1비트)가 발생하는 경우를 가정한다.
도 17을 참조하면, A1과 B1은 예측 후보 인덱스에 기반하여 획득되는 움직임 벡터 예측값일 수 있고, A2와 B2는 A1과 B1에 조정 오프셋이 보정된 새로운 움직임 벡터 예측값일 수 있다. A1, A2, B1, B2와 X와의 거리는 각각 da1, da2, db1, db2임을 가정한다.
(1) da1는 33/4이기 때문에 1/4 화소 단위 정밀도(1비트), 오프셋 적용 플래그(1비트), 오프셋 선택 정보(1비트), 그리고 33/4로 차분치 정보(34비트)가 발생하여 총 37비트가 발생할 수 있다.
(2) da2는 32/4이기 때문에 4 화소 단위 정밀도(2비트), 오프셋 적용 플래그(1비트), 오프셋 선택 정보(1비트), 그리고 2/1로 차분치 정보(3비트)가 발생하여 총 7비트가 발생할 수 있다.
(3) db1은 21/4이기 때문에 1/4 화소 단위 정밀도(1비트), 오프셋 적용 플래그(1비트), 오프셋 선택 정보(1비트), 그리고 21/4로 차분치 정보(22비트)가 발생하여 총 25비트가 발생할 수 있다.
(4) db2는 20/4이기 때문에 1 화소 단위 정밀도(2비트), 오프셋 적용 플래그(1비트), 오프셋 선택 정보(1비트), 그리고 5/1로 차분치 정보(6비트)가 발생하여 총 10비트가 발생할 수 있다.
비트량 발생 측면에서 예측 후보는 A로 선정될 수 있으며, 오프셋 선택 정보는 1번 인덱스(본 예에서 +1)으로 선정될 수 있다.
상기 예를 살펴보면, 기존의 움직임 벡터 예측값에 기반하여 움직임 벡터 차분치를 유도할 경우, 소량의 벡터값 차이에 의해 많은 비트가 발생하는 경우가 존재한다. 상기 문제점은 움직임 벡터 예측값의 조정을 통해 해결할 수 있다.
움직임 벡터 예측값에 조정 오프셋을 적용하기 위해 소정의 플래그가 지원될 수 있다. 상기 소정의 플래그는 오프셋 적용 플래그, 오프셋 선택 정보 등을 통해 구성될 수 있다.
(오프셋 적용 플래그만 지원될 경우)
오프셋 적용 플래그가 0일 때는 움직임 벡터 예측값에 오프셋을 적용하지 않고, 오프셋 적용 플래그가 1일 때는 미리 설정된 오프셋을 예측 움직임 벡터값에 가산 또는 감산할 수 있다.
(오프셋 선택 정보만 지원될 경우)
오프셋 선택 정보에 기반하여 설정된 오프셋을 예측 움직임 벡터값에 가산 또는 감산할 수 있다.
(오프셋 적용 플래그와 오프셋 선택 정보가 지원될 경우)
오프셋 적용 플래그가 0일 때는 움직임 벡터 예측값에 오프셋을 적용하지 않고, 오프셋 적용 플래그가 1일 때는 오프셋 선택 정보에 기반하여 설정된 오프셋을 예측 움직임 벡터값에 가산 또는 감산할 수 있다. 후술하는 예에서 본 설정을 가정한다.
한편, 오프셋 적용 플래그 및 오프셋 선택 정보가 경우에 따라 불필요하게 발생되는 정보로 사용될 수 있다. 즉, 오프셋이 적용되지 않더라도 이미 zero값을 갖거나 최대 정밀도 정보에 기반하여 정보량이 감소되는 경우에는 오프셋 관련 정보가 오히려 비효율적일 수 있다. 그래서 오프셋 관련 정보가 항상 명시적으로 발생하는 경우가 아닌 소정의 조건에 따라 묵시적으로 발생하는 설정을 지원할 필요가 있다.
다음은 움직임 관련 부호화 순서는 (움직임 벡터 차분치 복원 -> 차분 움직임 벡터 정밀도 획득)으로 진행되는 경우를 가정한다. 본 예에서 움직임 벡터 차분치가 x, y 성분 중 하나라도 0이 아닌 경우에 차분 움직임 벡터 정밀도가 지원되는 경우로 가정한다.
움직임 벡터 차분치가 0이 아닌 경우 차분 움직임 벡터 정밀도는 {1/4, 1/2, 1, 4} 화소 단위 중에 하나가 선택될 수 있다.
상기 선택 정보가 소정의 카테고리에 속할 경우에는 조정 오프셋에 관한 정보를 묵시적으로 생략하고, 속하지 않을 경우에는 조정 오프셋에 관한 정보를 명시적으로 생성할 수 있다.
여기서, 상기 카테고리는 차분 움직임 벡터 정밀도 후보 중에 하나를 포함할 수 있으며, {1/4}, {1/4, 1/2}, {1/4, 1/2, 1}과 같은 다양한 카테고리 구성이 가능할 수 있다. 여기서, 최소 정밀도는 상기 카테고리에 포함되는 경우가 가능할 수 있다.
예를 들어, 차분 움직임 벡터 정밀도가 1/4 화소 단위(예로, 최소 정밀도)인 경우에는 오프셋 적용 플래그가 묵시적으로 0으로 설정(즉, 적용하지 않음)되고, 차분 움직임 벡터 정밀도가 1/4 화소 단위가 아닌 경우에는 오프셋 적용 플래그가 명시적으로 발생하고, 오프셋 적용 플래그가 1일 경우(즉, 오프셋 적용)에는 오프셋 선택 정보가 발생할 수 있다.
또는, 차분 움직임 벡터 정밀도가 4 화소 단위(예로, 최대 정밀도)이 경우에는 오프셋 적용 플래그가 명시적으로 발생하고, 오프셋 적용 플래그가 1일 경우에는 오프셋 선택 정보가 발생할 수 있다. 또는, 차분 움직임 벡터 정밀도가 4 화소 단위가 아닌 경우에는 오프셋 정보가 묵시적으로 0으로 설정될 수 있다.
상기 예는 차분 움직임 벡터가 최소 정밀도를 가리킬 때는 오프셋 관련 정보가 묵시적으로 생략되고, 최대 정밀도를 가리킬 때는 오프셋 관련 정보가 명시적으로 발생하는 경우를 가정하나 이에 한정되지 않는다.
도 18은 본 발명의 일 실시예에 따른 복수의 움직임 벡터 예측값의 배치에 관한 예시도이다.
전술한 예를 통해 움직임 정보 예측 후보군을 구성할 때 중복성 체크에 관한 부분을 설명하였다. 여기서, 중복성이란 움직임 정보가 동일함을 의미하며, 최소 하나의 움직임 벡터의 성분이 다르다면 중복되지 않다고 판단될 수 있음을 전술하였다.
움직임 벡터 예측값에 관한 복수의 후보는 중복성 체크 과정을 통해 서로 중복되지 않는 것일 수 있다. 다만, 상기 복수의 후보가 성분 요소가 매우 비슷한 경우(즉, 각 후보의 x 또는 y 성분이 소정의 범위 내에 존재. 소정의 범위의 너비 또는 높이는 1, 2, 또는 그 이상의 정수. 또는, 범위는 오프셋 정보에 기반하여 설정될 수도 있음)에 움직임 벡터 예측값 및 오프셋이 보정된 움직임 벡터 예측값이 중복되는 경우가 발생할 수 있다. 이를 위한 다양한 설정이 가능할 수 있다.
일 예(C1)로, 움직임 정보 예측 후보군 구성 단계에서 신규 후보는 이미 포함된 후보와 서로 중복되지 않을 경우에 후보군에 포함할 수 있다. 즉, 전술한 기존 설명과 동일한 경우로 후보 자체의 비교만으로 중복되지 않으면 후보군에 포함할 수 있는 구성일 수 있다.
일 예(C2)로, 신규 후보와 그에 기반하여 오프셋이 가산되어 획득된 후보(group_A)와 이미 포함된 후보와 그에 기반하여 오프셋이 가산되어 획득된 후보(group_B)가 소정의 개수만큼 중복되지 않으면 후보군에 포함할 수 있다. 상기 소정의 개수는 0, 1 또는 그 이상의 정수일 수 있다. 만약 소정의 개수가 0개라면 하나라도 중복되면 해당 신규 후보는 후보군에 포함하지 않는 구성일 수 있다. 또는 (C3), 신규 후보에 소정의 오프셋(이는 조정 오프셋과 다른 개념)을 가산하여 후보군에 포함할 수 있는데, 해당 오프셋은 group_B와 중복되지 않게 group_A를 구성할 수 있게 하는 값일 수 있다.
도 18을 참조하면, A, B, C, D의 카테고리에 속하는 복수의 움직임 벡터(본 예에서 AX, BX, CX, DX. X는 1과 2. 예로, A1은 A2보다 먼저 후보군에 포함된 후보)는 중복되지 않은 조건(후보 움직임 벡터가 하나의 성분이라도 다른 경우)에 만족하는 경우일 수 있다.
본 예에서 오프셋은 x와 y 성분에 각각 -1, 0, 1이 지원되는 경우를 가정하며, 오프셋이 보정된 움직임 벡터 예측값은 도면에서 *로 표현될 수 있다. 또한, 점선(사각형)은 소정의 움직임 벡터 예측값을 중심으로 오프셋을 가산하여 획득될 수 있는 범위(예로, group_A, group_B 등)를 의미한다.
A 카테고리의 경우 A1과 A2는 중복되지 않고, group_A1과 group_A2가 중복되지 않는 경우에 해당할 수 있다.
B, C, D 카테고리의 경우 B1/C1/D1과 B2/C2/D2가 중복되지 않고, group_B1/C1/D1과 group_B2/C2/D2가 일부 중복되는 경우에 해당할 수 있다.
여기서, B 카테고리의 경우 별다른 조치를 취하지 않고 후보군을 구성하는 예일 수 있다(C1).
여기서, C 카테고리의 경우 C2는 중복성 체크 단계에서 중복성이 존재한다고 판단되고, 그 다음 우선 순위에 있는 C3가 후보군에 포함되는 구성일 수 있다(C2).
여기서, D 카테고리의 경우 D2는 중복성 체크 단계에서 중복성이 존재한다고 판단되고, group_D2가 group_D1과 중복되지 않게 D2가 보정되는 경우(즉, D3. D3는 후보군 구성 우선 순위에 존재하는 움직임 벡터가 아님)일 수 있다(C3).
상기 다양한 카테고리 중에서 예측 모드 후보군이 구성되는 설정에 적용될 수 있거나 또는 언급된 경우 외의 다양한 방법이 적용될 수 있다.
도 19는 본 발명의 일 실시예에 따른 병합 모드에서의 움직임 정보 부호화에 관한 순서도이다. 상세하게는, 병합 모드에서 대상 블록의 움직임 정보에 관한 부호화일 수 있다.
대상 블록의 움직임 정보 예측 후보 리스트를 생성할 수 있다(S1900). 전술한 병합 모드 후보군이 움직임 정보 예측 후보 리스트를 의미할 수 있으며, 이에 관한 상세한 설명은 생략한다.
움직임 정보 예측 후보 리스트에서 대상 블록의 예측 후보 인덱스를 선정할 수 있다(S1910). 상기 후보 리스트에서 상기 후보 인덱스에 따라 획득된 움직임 정보에 기반하여 대상 블록의 움직임 벡터 예측값을 유도할 수 있다. 만약 기 설정된 하나의 움직임 정보 예측값이 유도될 수 있다면, 예측 후보 인덱스 선정 과정 및 인덱스 정보는 생략될 수 있다.
움직임 벡터 예측값에 관한 조정 오프셋을 유도할 수 있다(S1920). 상기 오프셋은 움직임 벡터 예측값의 x 또는 y 성분에 가산 또는 감산되는 값일 수 있다. 상기 오프셋은 x와 y 성분 중에 하나에만 지원될 수 있거나 또는 x와 y 성분에 모두 지원될 수 있다.
본 과정에서의 조정 오프셋은 전술한 조정 오프셋과 동일하거나 유사한 개념일 수 있으므로, 상세한 설명은 생략하며 차이점에 관한 부분을 후술한다.
움직임 벡터 예측값을 (pmv_x, pmv_y), 조정 오프셋을 offset_x, offset_y라 가정할 때, 움직임 벡터 예측값은 (pmv_x + offset_x, pmv_y + offset_y)로 조정(또는 획득)될 수 있다.
여기서, offset_x와 offset_y의 절대값은 각각 0, 1, 2, 4, 8, 16, 32, 64, 128 등의 정수일 수 있으며, 부호 정보가 함께 고려되는 값을 가질 수 있다. 또한, 소정의 정밀도에 기반하여 offset_x, offset_y가 정해질 수 있다. 상기 소정의 정밀도는 1/16, 1/8, 1/4, 1/2, 1 화소 단위 등에서 정해질 수 있다.
예를 들어, 움직임 벡터 정밀도가 1/4 화소 단위인 경우, 절대값과 부호 정보에 결합되어 0, 1/4, -1/4, 1/2, -1/2, 1, -1, 2, -2 등으로 유도될 수 있다.
여기서, offset_x와 offset_y는 각각 a, b개 자원될 수 있으며, a와 b는 0, 1, 2, 4, 8, 16, 32 등의 정수일 수 있다. a와 b는 고정적인 값을 가질 수 있거나 또는 가변적인 값을 가질 수 있다. 또한, a와 b는 동일하거나 동일하지 않는 값을 가질 수 있다.
움직임 벡터 예측값에 대한 조정 오프셋의 지원 여부는 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일, 브릭 등의 단위에서 명시적으로 지원될 수 있거나 또는 부호화 설정에 따라 묵시적으로 정해질 수 있다. 또한, 조정 오프셋의 설정(예로, 값의 범위, 개수 등)은 부호화 설정에 따라 정해질 수 있다.
상기 부호화 설정은 영상 타입, 컬러 성분, 대상 블록의 상태 정보, 움직임 모델 선택 정보(예로, 이동 움직임 모델인지 아닌지), 참조 픽쳐(예로, 현재 픽쳐인지 아닌지) 등과 같은 부호화 요소 중 적어도 하나의 요소를 고려하여 정해질 수 있다.
예를 들어, 블록의 크기에 따라 조정 오프셋의 지원 여부 및 오프셋 설정이 정해질 수 있다. 이때, 블록의 크기는 제 1 문턱크기(최소값) 또는 제 2 문턱크기(최대값)에 의해 지원 및 설정 범위가 정해질 수 있고, 각 문턱크기는 블록의 너비(W)와 높이(H)로 W, H, W x H, W*H로 표현될 수 있다. 제 1 문턱크기의 경우 W와 H는 4, 8, 16 또는 그 이상의 정수일 수 있고, W*H는 16, 32, 64 또는 그 이상의 정수일 수 있다. 제 2 문턱크기의 경우 W와 H는 16, 32, 64 또는 그 이상의 정수일 수 있고, W*H는 64, 128, 256 또는 그 이상의 정수일 수 있다. 상기 범위는 제 1 문턱크기 또는 제 2 문턱크기 중 하나에 의해 정해지거나 또는 둘 모두를 사용하여 정해질 수 있다.
이때, 상기 문턱크기는 고정적이거나 영상(예로, 영상 타입 등)에 따라 적응적일 수 있다. 이때, 상기 제 1 문턱크기는 최소 부호화 블록, 최소 예측 블록, 최소 변환 블록 등의 크기에 기반하여 설정될 수 있고, 상기 제 2 문턱크기는 최대 부호화 블록, 최대 예측 블록, 최대 변환 블록 등의 크기에 기반하여 설정될 수도 있다.
또한, 조정 오프셋은 움직임 정보 예측 후보군에 포함되는 모든 후보에 적용될 수 있거나 또는 일부 후보에만 적용될 수 있다. 후술하는 예에서는 후보군에 포함되는 모든 후보를 대상으로 적용되는 경우를 가정할 것이나, 0, 1, 2 내지 후보군 최대 개수 사이에서 조정 오프셋이 적용되는 후보가 선정될 수 있다.
움직임 벡터 예측값에 조정 오프셋을 적용하기 위한 소정의 플래그가 지원될 수 있다. 상기 소정의 플래그는 오프셋 적용 플래그, 오프셋 절대값 정보, 오프셋 부호 정보 등을 통해 구성될 수 있다.
만약 조정 오프셋의 지원이 되지 않는 경우라면 본 과정 및 조정 오프셋 정보는 생략될 수 있다.
움직임 벡터 예측값을 통해 대상 블록의 움직임 벡터를 복원할 수 있다(S1930). 움직임 벡터 외의 움직임 정보(예로, 참조 픽쳐, 참조 방향 등)은 상기 예측 후보 인덱스에 기반하여 획득될 수 있다.
상기 구성 및 순서는 일부 예시일 뿐 이에 한정되지 않고 다양한 변경이 가능할 수 있다. 병합 모드에서의 조정 오프셋을 지원하는 배경 설명은 경쟁 모드의 다양한 예시를 통해 전술하였으므로 상세한 설명은 생략한다.
본 발명에 따른 방법들은 다양한 컴퓨터 수단을 통해 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 본 발명을 위해 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능 매체의 예에는 롬(ROM), 램(RAM), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함될 수 있다. 프로그램 명령의 예에는 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 적어도 하나의 소프트웨어 모듈로 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
또한, 상술한 방법 또는 장치는 그 구성이나 기능의 전부 또는 일부가 결합되어 구현되거나, 분리되어 구현될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
본 발명은 영상을 부호화/복호화하기 위해 이용될 수 있다.

Claims (4)

  1. 대상 블록의 예측 움직임 후보 리스트를 구성하는 단계;
    상기 움직임 후보 리스트에서 예측 후보 인덱스에 기반하여 예측 움직임 벡터를 유도하는 단계;
    예측 움직임 벡터 조정 오프셋 정보를 복원하는 단계; 및
    상기 예측 움직임 벡터와 상기 예측 움직임 벡터 조정 오프셋 정보에 기반하여 대상 블록의 움직임 벡터를 복원하는 단계를 포함하되,
    상기 움직임 후보 리스트는 공간적 후보, 시간적 후보, 통계적 후보 또는 조합 후보 중 적어도 하나를 포함하는, 화면간 예측 방법.
  2. 제1항에 있어서,
    상기 예측 움직임 벡터 조정 오프셋은 오프셋 적용 플래그 또는 오프셋 선택 정보 중 적어도 하나에 기반하여 결정되는, 화면간 예측 방법.
  3. 제1항에 있어서,
    상기 예측 움직임 벡터 조정 오프셋 정보의 지원 여부에 관한 정보는 시퀀스, 픽쳐, 서브 픽쳐, 슬라이스, 타일 또는 브릭 중 적어도 하나에 포함되는, 화면간 예측 방법.
  4. 제1항에 있어서,
    상기 대상 블록이 병합 모드로 부호화된 경우, 상기 대상 블록의 움직임 벡터는 제로 벡터를 이용하여 복원되고,
    상기 대상 블록이 경쟁 모드로 부호화된 경우, 상기 대상 블록의 움직임 벡터는 움직임 벡터 차분치를 이용하여 복원되는, 화면간 예측 방법.
KR1020217012066A 2018-09-24 2019-09-24 영상 부호화/복호화 방법 및 장치 KR20210052568A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
KR20180114536 2018-09-24
KR20180114539 2018-09-24
KR1020180114536 2018-09-24
KR1020180114539 2018-09-24
KR20180114540 2018-09-24
KR1020180114540 2018-09-24
PCT/KR2019/012404 WO2020067700A1 (ko) 2018-09-24 2019-09-24 영상 부호화/복호화 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20210052568A true KR20210052568A (ko) 2021-05-10

Family

ID=69953064

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217012066A KR20210052568A (ko) 2018-09-24 2019-09-24 영상 부호화/복호화 방법 및 장치

Country Status (11)

Country Link
US (2) US20220078436A1 (ko)
EP (1) EP3860127A4 (ko)
JP (2) JP7447097B2 (ko)
KR (1) KR20210052568A (ko)
CN (1) CN112806014A (ko)
AU (1) AU2019350336A1 (ko)
CA (1) CA3113860A1 (ko)
PH (1) PH12021550491A1 (ko)
SG (1) SG11202102219YA (ko)
WO (1) WO2020067700A1 (ko)
ZA (1) ZA202101747B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102424189B1 (ko) * 2018-02-14 2022-07-21 후아웨이 테크놀러지 컴퍼니 리미티드 적응형 보간 필터
CN114375572A (zh) * 2019-08-31 2022-04-19 Lg 电子株式会社 视频或图像编译方法及其设备
CN113727119B (zh) * 2020-05-20 2023-03-17 Oppo广东移动通信有限公司 帧间预测方法、编码器、解码器以及计算机存储介质
WO2022117369A1 (en) * 2020-12-01 2022-06-09 Nokia Technologies Oy Content adaptive collocated reference picture selection

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107071460B (zh) * 2010-12-14 2020-03-06 M&K控股株式会社 用于编码运动画面的设备
US20130114717A1 (en) * 2011-11-07 2013-05-09 Qualcomm Incorporated Generating additional merge candidates
JP2013223049A (ja) * 2012-04-13 2013-10-28 Sharp Corp 画像復号装置、および画像符号化装置
US10778987B2 (en) * 2016-03-24 2020-09-15 Intellectual Discovery Co., Ltd. Method and apparatus for encoding/decoding video signal
US10812791B2 (en) * 2016-09-16 2020-10-20 Qualcomm Incorporated Offset vector identification of temporal motion vector predictor
US10432960B2 (en) * 2016-10-05 2019-10-01 Arris Enterprises Llc Offset temporal motion vector predictor (TMVP)
US10701366B2 (en) * 2017-02-21 2020-06-30 Qualcomm Incorporated Deriving motion vector information at a video decoder

Also Published As

Publication number Publication date
JP2022502912A (ja) 2022-01-11
WO2020067700A1 (ko) 2020-04-02
SG11202102219YA (en) 2021-04-29
JP7447097B2 (ja) 2024-03-11
US20240015300A1 (en) 2024-01-11
JP2024059861A (ja) 2024-05-01
US20220078436A1 (en) 2022-03-10
CN112806014A (zh) 2021-05-14
CA3113860A1 (en) 2020-04-02
EP3860127A4 (en) 2022-08-10
EP3860127A1 (en) 2021-08-04
ZA202101747B (en) 2022-07-27
PH12021550491A1 (en) 2021-11-08
AU2019350336A1 (en) 2021-05-13

Similar Documents

Publication Publication Date Title
CN112703740B (zh) 用于仿射模式的基于历史的运动矢量预测
JP2022507683A (ja) デコーダ側動きベクトル改良
JP7447097B2 (ja) 画像符号化/復号化方法及び装置
JP2022521979A (ja) デコーダ側動きベクトル改良に対する制約
CN116546209A (zh) 用于导出运动预测信息的方法和装置
WO2012148139A2 (ko) 참조 픽쳐 리스트 관리 방법 및 이러한 방법을 사용하는 장치
KR20110020214A (ko) 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치
KR101782154B1 (ko) 움직임 벡터 차분치를 이용하는 영상 부호화 및 복호화 방법과 영상 복호화 장치
KR20210018502A (ko) 머지 모드 기반의 인터 예측 방법 및 장치
KR102514392B1 (ko) 움직임 벡터 차분치를 이용하는 영상 부호화 및 복호화 방법과 영상 복호화 장치
CN116074506A (zh) 视频信号编码/解码方法以及用于所述方法的设备
JP2024038411A (ja) ビデオ信号符号化/復号方法及びその機器
KR20210016054A (ko) 영상 부호화/복호화 방법 및 장치
JP2021182740A (ja) 画像符号化装置、画像符号化方法、画像符号化プログラム、画像復号装置、画像復号方法及び画像復号プログラム
KR102476230B1 (ko) 움직임 벡터 정밀성을 이용하는 영상 부호화 및 복호화 방법과 영상 복호화 장치
JP7399332B2 (ja) 画像符号化方法及び画像復号化方法
KR20200138137A (ko) 영상 부호화/복호화 방법 및 장치
TW202243475A (zh) 視頻譯碼中的雙向光流
TW202243480A (zh) 用於視訊譯碼的基於範本匹配的仿射預測
KR20220115971A (ko) 리프 노드의 재설정된 예측 모드 타입에 기반하여 예측을 수행하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
KR20230131768A (ko) 비디오 프레임 경계에서 예측블록 생성
CN116113973A (zh) 使用基于深度学习的帧间预测的视频编码与解码
JP2020025308A (ja) 画像符号化方法及び画像復号化方法