KR20240049623A - 삼각형 예측을 위한 비디오 코딩 방법 및 장치 - Google Patents

삼각형 예측을 위한 비디오 코딩 방법 및 장치 Download PDF

Info

Publication number
KR20240049623A
KR20240049623A KR1020247010673A KR20247010673A KR20240049623A KR 20240049623 A KR20240049623 A KR 20240049623A KR 1020247010673 A KR1020247010673 A KR 1020247010673A KR 20247010673 A KR20247010673 A KR 20247010673A KR 20240049623 A KR20240049623 A KR 20240049623A
Authority
KR
South Korea
Prior art keywords
prediction
video
current
coding
triangle
Prior art date
Application number
KR1020247010673A
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 KR20240049623A publication Critical patent/KR20240049623A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive 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/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/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/115Selection of the code volume for a coding unit prior to 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/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/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • 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/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

비디오 코딩을 위한 방법이 제공된다. 상기 방법은, 비디오 픽처들을 복수의 코딩 단위(CU)들로 분할하되, 상기 복수의 CU들 중 적어도 하나는 좌측 상단 모서리에서 우측 하단 모서리로 및 우측 상단 모서리에서 좌측 하단 모서리로의 분할 방향 중 하나를 가지는 적어도 하나의 삼각형 형상의 예측 단위(PU)를 포함하는 2 개의PU로 더 분할되는 단계; 일방향-예측 움직임 벡터 후보 리스트를 구성하는 단계; 코딩 정보에 따라 현재 CU가 삼각형 예측 모드로 코딩되는지 여부를 결정하는 단계; 상기 분할 방향을 가리키는 분할 방향 플래그를 시그널링하는 단계; 및 상기 구성된 일방향-예측 움직임 벡터 후보 리스트에서 선택된 엔트리들을 가리키는 인덱스 값들을 시그널링하는 단계를 포함한다.

Description

삼각형 예측을 위한 비디오 코딩 방법 및 장치{METHODS AND APPARATUS OF VIDEO CODING FOR TRIANGLE PREDICTION}
본 발명은 일반적으로 비디오 코딩 및 압축에 관한 것으로, 구체적으로 비디오 코딩에서 삼각형 예측 단위를 사용한 움직임 보상 예측 방법 및 장치에 관한 것이나, 이에 제한되지는 않는다.
본 출원은 2018년 12월 30일에 출원된 "비디오 코딩에서의 삼각형 예측 플래그 시그널링"이라는 명칭의 출원 번호 62/786,545인 미국 임시 출원과 2018년 12월 31일에 출원된 "삼각형 예측 신택스 코딩"이라는 명칭의 출원 번호 62/787,219인 미국 임시 출원의 우선권을 주장하며, 그 전체 내용은 모든 목적을 위해 인용을 통해 본문에 병합된다.
다음과 같은 줄임말 및 약어가 여기에 정의되어 있으며, 그 중 적어도 일부는 아래의 설명에서 언급된다.
국제전기통신연합(International Telecommunication Union, ITU), ITU 전기통신 표준화부문(ITU Telecommunication Standardization Sector, ITU-T), 국제표준화기구(International Organization for Standardization, ISO/IEC), 국제전기기술위원회(International Electrotechnical Commission, IEC), 동화상전문가그룹(Moving Picture Experts Group, MPEG), 고급 비디오 코딩(Advanced Video Coding, AVC), 고효율 비디오 코딩(High Efficiency Video Coding, HEVC), 다용도 비디오 코딩(Versatile Video Coding, VVC), 공동 탐색 테스트 모델(Joint Exploration Test Model, JEM), VVC 테스트 모델(VVC Test Model, VTM), 공동 비디오 전문가 팀(Joint Video Experts Team, JVET), 비디오 코딩 전문가 그룹(Video Coding Experts Group, VCEG), 움직임 벡터(Motion Vector, MV), 움직임 벡터 예측(Motion Vector Prediction, MVP), 움직임 벡터 차이(Motion Vector Difference, MVD), 움직임 벡터 필드(Motion Vector Field, MVF), 고급 움직임 벡터 예측(Advanced Motion Vector Prediction, AMVP), 움직임 벡터 경쟁(Motion Vector Competition, MVC), 시간 움직임 벡터 예측(Temporal Motion Vector Prediction, TMVP), 제어점 움직임 벡터(Control Point Motion Vector, CPMV), 적응형 루프 필터(Adaptive Loop Filter, ALF), 양방향 예측(Bi-predictive, B), 블록 복사(Block Copy, BC), 컨텍스트 기반 적응형 이진 산술 코딩(Context-based Adaptive Binary Arithmetic Coding, CABAC), 컨텍스트 적응형 가변 길이 코딩(Context Adaptive Variable Length Coding, CAVLC), 코딩 블록(CB), 인코더/디코더(encoder/decoder, CODEC), 코딩 픽처 버퍼(Coded Picture Buffer, CPB), 코딩 트리 블록(Coding Tree Block, CTB), 코딩 트리 단위(Coding Tree Unit, CTU), 코딩 단위(Coding Unit, CU), 이산 코사인 변환(Discrete Cosine Transform, DCT), 디코딩 픽처 버퍼(Decoded Picture Buffer, DPB), 인트라 (Intra, I), 인트라 블록 복사(Intra Block Copy, IBC), 예측(Predictive, P), 예측 블록(Prediction Block, PB), 확률 간격 분할 엔트로피(Probability Interval Partitioning Entropy, PIPE), 픽처 오더 카운트(Picture Order Count, POC), 픽처 단위(Picture Unit, PU), 절대 차이의 합(Sum Of Absolute Difference, SAD), 샘플 적응형 오프셋(Sample Adaptive Offset, SAO), 신택스 기반 컨텍스트 적응형 이진 산술 코딩(Syntax-Based Context-Adaptive Binary Arithmetic Coding, SBAC), 시퀀스 파라미터 세트(Sequence Parameter Set, SPS), 제곱차이의 합(Sum Of Square Difference, SSD), 변환 단위(Transform Unit, TU), 쿼드트리 플러스 이진 트리(Quadtree Plus Binary Tree, QTBT), 픽셀, 또는 픽처 요소(pixel, or picture element, pel), 고급 시간 레벨 움직임 벡터 예측(Advanced Temporal Level Motion Vector Prediction, ATMVP), 최종 움직임 벡터 표현(Ultimate Motion Vector Expression, UMVE), 움직임 벡터 차이가 있는 병합 모드(Merge Mode with Motion Vector Difference, MMVD), 인덱스(IDX), 연합 인터 및 인트라 예측(Combined Inter and Intra Prediction, CIIP), 가장 가능성 있는 모드(Most Probable Mode, MPM).
디지털 비디오는 디지털 TV, 랩톱 또는 데스크톱 컴퓨터, 태블릿 컴퓨터, 디지털 카메라, 디지털 기록 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 스마트 폰, 비디오 화상 회의 장치, 비디오 스트리밍 장치와 같은 다양한 전자 장치에 의해 지지될 수 있다. 전자 장치는 비디오 압축/복원을 구현하여 디지털 비디오 데이터를 송신, 수신, 인코딩, 디코딩 및/또는 저장할 수 있다. 전자 장치는Versatile Video Coding(VVC), Joint Exploration Test Model (JEM), MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding(AVC), ITU-T H.265/High Efficiency Video Coding(HEVC)에 의하여 정의된 표준 및 이러한 표준의 확장에서 설명한 것과 같은 비디오 코딩 기술들을 구현할 수 있다.
일반적으로, 비디오 코딩은 비디오 이미지 또는 시퀀스에 존재하는 중복성을 활용하는 예측 방법(예를 들어, 인터 예측, 인트라 예측)을 사용할 수 있다. 비디오 코딩 기술들의 중요한 목표는 비디오 데이터를 더 낮은 비트율(bit rate)을 사용하여 압축하면서도 비디오 품질 저하를 방지하거나 최소화하는 것이다. 끊임없이 진화하는 비디오 서비스를 사용할 수 있게 됨에 따라, 더 좋은 코딩 효율성을 가진 인코딩 기술들이 필요하다.
일반적으로, 비디오 압축은 비디오 데이터에 내재된 중복성을 감소하거나 제거하기 위하여 공간적(인트라-프레임) 예측 및/또는 시간적(인터-프레임) 예측을 수행하는 것을 포함할 수 있다. 블록-기반 비디오 코딩의 경우, 비디오 프레임은 하나 또는 그 이상의 슬라이스(slice)로 분할되며, 각 슬라이스는 코딩 트리 단위(coding tree unit, CTU)로도 불리우는 비디오 블록을 복수 개 구비할 수 있다. 각 CTU는 하나의 코딩 단위(coding unit, CU)를 포함하거나, 소정의 최소 CU 크기에 도달 할 때까지 더 작은 CU로 재귀적으로 분할될 수 있다. 각 CU("리프 CU(leaf CU)"라고도 함)는 하나 또는 복수개의 변환 단위(transformation unit, TU)를 포함하고, 각 CU는 하나 또는 복수개의 예측 단위(prediction unit, PU)를 포함할 수 있다. 각 CU는 인트라, 인터 또는 IBC 모드로 코딩될 수 있다. 비디오 프레임의 인트라 코딩된(I) 슬라이스 내의 비디오 블록들은 동일한 비디오 프레임 내의 인접 블록들의 기준 샘플들에 대한 공간적 예측을 사용하여 인코딩될 수 있다. 비디오 프레임의 인터 코딩된(P 또는 B) 슬라이스 내의 비디오 블록들에 대하여, 동일한 비디오 프레임 내의 인접 블록의 기준 샘플들에 대한 공간적 예측 또는 다른 이전 및/또는 미래 기준 비디오 프레임들의 기준 샘플들에 대한 시간적 예측을 사용할 수 있다.
예를 들면, 인접 블록과 같이 이전에 인코딩된 기준 블록에 기초한 공간적 또는 시간적 예측은 코딩될 현재 비디오 블록에 대한 예측 블록을 생성할 수 있다. 기준 블록을 찾는 과정은 블록 매칭 알고리즘에 의해 수행될 수 있다. 코딩될 현재 블록과 예측 블록 사이의 픽셀 차이를 나타내는 잔차 데이터를 잔차 블록 또는 예측 오차라고할 수 있다. 인터-코딩된 블록은 예측 블록을 구성하는 기준 프레임 내의 기준 블록을 가리키는 움직임 벡터(motion vector) 및 잔차 블록에 따라 인코딩될 수 있다. 일반적으로, 움직임 벡터를 확정하는 프로세스를 움직임 추정이라고 한다. 인트라 코딩된 블록은 인트라 예측 모드 및 잔차 블록에 따라 인코딩될 수 있다. 추가 압축을 위하여, 잔차 블록은 픽셀 도메인에서 주파수 도메인과 같은 변환 도메인으로 변환되고, 그 결과 추후에 양자화되는 잔차 변환 계수들이 생성될 수 있다. 초기에 2 차원-행렬로 배열된 양자화된 변환 계수들은 스캔되어 변환 계수들의 1 차원-벡터를 생성하고, 다음 비디오 비트스트림으로 엔트로피 인코딩되어 더 많은 압축을 달성할 수 있다.
다음, 인코딩된 비디오 비트스트림은 컴퓨터 판독 가능한 저장 매체(예를 들어, 플래시 메모리)에 저장되어 디지털 비디오 기능을 가진 다른 전자 장치에 의해 액세스되거나 유선 또는 무선으로 전자 장치에 직접 전송될 수 있다. 다음, 전자 장치는 예를 들어 인코딩된 비디오 비트스트림을 파싱하여 비트스트림으로부터 신택스 요소들(systax elements)을 획득하고, 비트스트림으로부터 획득한 신택스 요소들에 적어도 일부분 기초하여 디지털 비디오 데이터를 인코딩된 비디오 비트스트림으로부터 원 포맷으로 재구성하는 것을 통하여 비디오 복원(위에서 설명한 비디오 압축과 반대되는 프로세스)을 수행하며, 전자 장치의 디스플레이상에 재구성된 디지털 비디오 데이터를 렌더링할 수 있다.
디지털 비디오 품질이 고화질에서 4K Х 2K 또는 8K Х 4K로 변화함에 따라, 인코딩/디코딩될 비디오 데이터의 양이 급격히 증가한다. 디코딩된 비디오 데이터의 이미지 품질을 유지하는 동시에 비디오 데이터를 보다 효율적으로 인코딩/디코딩할 수 있는 방법은 끊임없는 문제이다.
Joint Video Experts Team(JVET)회의에서, JVET는Versatile Video Coding(VVC)의 제1 드래프트 및VVC Test Model 1(VTM1)의 인코딩 방법을 정의하였다. VVC의 초기 새로운 코딩 기능으로 이진 및 삼진 분할 코딩 블록 구조를 사용하는 중첩된 멀티 타입 트리를 구비하는 쿼드트리(quadtree)를 포함하기로 결정하였다. 이 후, 인코딩 방법과 드래프트 VVC 디코딩 프로세스를 구현하는 기준 소프트웨어 VTM이 JVET 회의 동안 개발되었다.
일반적으로, 본 개시는 비디오 코딩에서 삼각형 예측 단위를 사용한 움직임 보상 예측과 관련된 기술의 예를 설명한다.
본 개시의 제1 측면에 의하면, 비디오 코딩을 위한 방법을 제공하였으며, 당해 방법은, 비디오 픽처들을 복수의 코딩 단위(CU)들로 분할하되, 상기 복수의 CU들 중 적어도 하나는 좌측 상단 모서리에서 우측 하단 모서리로 및 우측 상단 모서리에서 좌측 하단 모서리로의 분할 방향 중 하나를 가지는 적어도 하나의 삼각형 형상의 예측 단위(PU)를 포함하는 2 개의PU로 더 분할되는 단계; 일방향-예측 움직임 벡터 후보 리스트를 구성하는 단계; 코딩 정보에 따라 현재 CU를 삼각형 예측 모드로 코딩하는지 여부를 결정하는 단계; 상기 분할 방향을 가리키는 분할 방향 플래그를 시그널링하는 단계; 및 상기 구성된 일방향-예측 움직임 벡터 후보 리스트에서 선택된 엔트리들을 가리키는 인덱스 값을 시그널링하는 단계를 포함한다.
본 개시의 제2 측면에 의하면, 비디오 코딩을 위한 방법을 제공하였으며, 당해 방법은, 비디오 픽처들을 복수의 코딩 단위(CU)들로 분할하되, 상기 복수의 CU들 중 적어도 하나는 적어도 하나의 삼각형 형상의 예측 단위(PU)를 포함하는 2 개의PU로 더 분할되는 단계; 현재 CU에 대하여 삼각형 예측 모드를 가리키는 삼각형 예측 플래그를 디코딩할지 여부를 결정하는 단계; 및 상기 현재 CU에 대하여 상기 삼각형 예측 플래그가 디코딩될 것으로 결정되면, 컨텍스트 기반 적응 이진 산술 코딩(Context-based Adaptive Binary Arithmetic Coding, CABAC)를 이용하여 상기 삼각형 예측 플래그를 도출하는 단계를 포함하고, 상기 삼각형 예측 플래그를 위한 상기 CABAC의 컨택스트는, CU 영역 크기; CU 형상; 및 공통 컨텍스트로 구성된 그룹에서 선택된 적어도 하나를 기반으로 도출된다.
본 개시의 제3 측면에 의하면, 비디오 코딩을 위한 장치를 제공하였으며, 당해 장치는 프로세서; 및 상기 프로세서에 의해 실행 가능한 명령어를 저장하도록 구성된 메모리를 포함하되, 상기 프로세서는 상기 명령어를 실행시 아래와 같은 동작을 수행하도록 구성되며: 비디오 픽처들을 복수의 코딩 단위(CU)들로 분할하되, 상기 복수의 CU들 중 적어도 하나는 좌측 상단 모서리에서 우측 하단 모서리로 및 우측 상단 모서리에서 좌측 하단 모서리로의 분할 방향 중 하나를 가지는 적어도 하나의 삼각형 형상의 예측 단위(PU)를 포함하는 2 개의PU로 더 분할되고; 일방향-예측 움직임 벡터 후보 리스트를 구성하고; 코딩 정보에 따라 현재 CU가 삼각형 예측 모드로 코딩되는지 여부를 결정하고; 상기 분할 방향을 가리키는 분할 방향 플래그를 시그널링하고; 및 상기 구성된 일방향-예측 움직임 벡터 후보 리스트에서 선택된 엔트리들을 가리키는 인덱스 값들을 시그널링한다.
본 개시의 제4 측면에 의하면, 비디오 코딩을 위한 장치를 제공하였으며, 당해 장치는 프로세서; 및 상기 프로세서에 의해 실행 가능한 명령어를 저장하도록 구성된 메모리를 포함하되, 상기 프로세서는 상기 명령어를 실행시 아래와 같은 동작을 수행하도록 구성되며: 비디오 픽처들을 복수의 코딩 단위(CU)들로 분할하되, 상기 복수의 CU들 중 적어도 하나는 적어도 하나의 삼각형 형상의 예측 단위(PU)를 포함하는 2 개의PU로 더 분할되고; 현재 CU에 대하여 삼각형 예측 모드를 가리키는 삼각형 예측 플래그를 디코딩할지 여부를 결정하며; 및 상기 현재 CU에 대하여 상기 삼각형 예측 플래그가 디코딩될 것으로 결정되면, 컨텍스트 기반 적응 이진 산술 코딩(Context-based Adaptive Binary Arithmetic Coding, CABAC)를 이용하여 상기 삼각형 예측 플래그를 도출하며, 상기 삼각형 예측 플래그를 위한 상기 CABAC의 컨택스트는,CU 영역 크기; CU 형상; 및 공통 컨텍스트로 구성된 그룹에서 선택된 적어도 하나를 기반으로 도출된다.
본 개시의 실시예들에 대한 보다 구체적인 설명은 첨부된 도면에 예시된 특정 실시예들을 참조하여 설명될 것이다. 이러한 도면들이 일부 실시예만을 도시하고 범위를 제한하는 것으로 간주하여서는 아니되며, 첨부된 도면 및 추가적인 특수성 및 세부사항을 통하여 실시예들은 설명될 것이다.
도 1은 본 개시의 일부 구현 방식들에 따른 예시적인 비디오 인코딩 및 디코딩 시스템을 도시하는 블록도이다.
도 2는 본 개시의 일부 구현 방식들에 따른 예시적인 비디오 인코더를 도시하는 블록도이다.
도 3은 본 개시의 일부 구현 방식들에 따른 예시적인 비디오 디코더를 도시하는 블록도이다.
도 4는 본 개시의 일부 구현 방식들에 따른 QTBT구조를 도시하는 개략도이다.
도 5는 본 개시의 일부 구현 방식들에 따른 픽처를 CTU로 분할하는 일 예를 도시하는 개략도이다.
도 6은 본 개시의 일부 구현 방식들에 따른 멀티-타입 트리 분할 모드(multi-type tree splitting mode)를 도시하는 개략도이다.
도 7은 본 개시의 일부 구현 방식들에 따른 CU를 삼각형 예측 단위들로 분할하는 것을 도시하는 개략도이다.
도 8은 본 개시의 일부 구현 방식들에 따른 인접 블록의 위치를 도시하는 개략도이다.
도 9는 본 개시의 일부 구현 방식들에 따른 가중치 인자 세트(weighting factor set)를 사용한 가중치 처리의 일 예를 도시하는 개략도이다.
도 10은 본 개시의 일부 구현 방식들에 따른 삼각형 예측 플래그를 코딩하기 위한 컨텍스트 도출을 도시하는 개략도이다.
도 11은 본 개시의 일부 구현 방식들에 따른 PU 파티션(PU partition)들의 일 예를 도시하는 개략도이다.
도 12는 본 개시의 일부 구현 방식들에 따른 공간적 병합 후보들(spatial merge candidates)의 위치를 도시하는 개략도이다.
도 13은 본 개시의 일부 구현 방식들에 따른 시간적 병합 후보에 대한 움직임 벡터 스케일링을 도시하는 개략도이다.
도 14는 본 개시의 일부 구현 방식들에 따른 시간적 병합 후보의 후보 위치를 도시하는 개략도이다.
도 15는 본 개시의 일부 구현 방식들에 따른 비디오 코딩을 위한 예시적인 장치를 도시하는 블록도이다.
도 16은 본 개시의 일부 구현 방식들에 따른 삼각형 예측을 사용한 움직임 보상 예측을 위한 비디오 코딩의 예시적인 프로세스를 도시하는 흐름도이다.
도 17은 본 개시의 일부 구현 방식들에 따른 삼각형 예측 플래그를 위한 비디오 코딩의 예시적인 프로세스를 도시하는 흐름도이다.
이하 그 예가 첨부 도면에 도시되어 있는 특정 구현 방식들을 상세히 설명한다. 다음의 상세한 설명에서, 본 명세서에 기재된 내용의 이해를 돕기 위하여 복수의 비-제한적인 특정 세부 사항이 설명된다. 그러나, 다양한 변경을 진행할 수 있음은 당업자에게 자명한 것이다. 예를 들어, 본 명세서에 기재한 기술적 방안은 디지털 비디오 기능을 구비한 다양한 유형의 전자 장치에서 구현될 수 있음은 당업자에게 자명한 것이다.
각 도면의 요소들에 대한 설명은 다른 도면의 요소들에 대한 설명을 참조할 수 있다. 유사 번호는 유사 요소의 대안적인 실시예를 포함한 도면에서 유사 요소를 지칭할 수 있다.
본 명세서 전반에 걸쳐 "일 실시예", "실시예", "예", "일부 실시예", "일부 예"또는 유사한 용어는 설명 된 특정 특징, 구조 또는 특성이 적어도 하나의 실시예 또는 예에 포함된다는 것을 의미한다. 따라서, 본 명세서 전반에 걸쳐 "일 실시예에서", "일 예로", "일부 실시예에서" 및 유사한 용어는 모두 동일한 실시예(들)를 지칭할 수 있으나, 반드시 그런 것은 아니다. 개시된 모든 실시예를 포함하거나 포함하지 않을 수 있다. 하나 또는 일부 실시예와 관련하여 설명된 특징, 구조, 요소 또는 특성은 달리 명시적으로 명시되지 않는 한 다른 실시예에도 적용이 가능하다.
도면의 개략적인 흐름도 및/또는 개략적인 블록도는 다양한 실시예에 따른 상이한 장치, 시스템, 방법 및 프로그램 제품의 가능한 구현방식들의 구조, 기능 및 동작을 예시한다. 이와 관련하여, 개략적인 흐름도 및/또는 개략적인 블록도의 각 블록은 특정된 논리 기능(들)을 구현하기 위한 코드의 하나 또는 그 이상의 실행 가능한 명령어를 포함하는 모듈, 세그먼트 또는 코드의 일부를 가리킬 수 있다. 그러나, 흐름도가 반드시 도시된 순서로 실행될 필요는 없으며, 하나 또는 그 이상의 특정 단계없이 또는 도시되지 않은 다른 단계와 함께 실행될 수 있음을 당업자들은 인식할 것이다.
일부 대안적인 구현방식에서, 식별된 블록에 명시된 기능은 도면에 명시된 순서를 벗어날 수 있다는 점에 유의해야 한다. 예를 들어, 연속적으로 표시된 두 블록은 실제로는 실질적으로 동시에 실행될 수 있거나, 또는 관련된 기능에 따라 블록이 역순으로 실행될 수도 있다. 다른 단계와 방법은 예시된 도면의 하나 또는 그 이상의 블록 또는 그 일부와 기능, 논리 또는 효과가 동등한 것으로 간주될 수 있다.
본 개시에서 사용되는 용어는 특정 예를 설명하기 위한 것이며, 본 개시를 제한하려는 의도는 아니다. 용어 "포함하는(including)", "포함한다(comprising)", "갖는" 및 이들의 변형은 달리 명시적으로 명시되지 않는 한 "포함하지만 이에 제한되지 않음"을 의미한다.
이러한 용어는 언급된 특징, 정수, 단계, 동작, 요소 및/또는 구성의 존재를 지정하지만, 하나 또는 그 이상의 다른 특징, 정수, 단계, 동작, 요소, 구성 및/또는 이들의 조합의 존재 또는 추가를 배제하지 않음을 이해하여야 한다.
열거된 항목 목록은 달리 명시적으로 설명하지 않는 한 항목의 일부 또는 전체가 상호 배척함을 의미하지 않는다.
본 개시 및 첨부된 청구범위에서 사용된 바와 같이, 단수형은 복수형도 포함하는 것이며, "하나 또는 그 이상" 또는 "적어도 하나"와 동등한 것으로 해석되어야 한다.
본 문에서 사용된 용어 "및/또는"은 하나 또는 그 이상의 관련된 열거 항목의 임의 및 모든 가능한 조합을 지칭하고 포함하는 것으로 이해되어야 한다. 예를 들어, "A 및/또는 B"는 A만 존재, B만 존재, A와 B가 공존하는 세 가지 조합중 임의의 하나를 의미할 수 있다.
부호 "/"는 일반적으로 관련된 항목의 "또는" 관계를 가리키지만, 관련된 항목의 "및" 관계도 포함할 수있다. 예를 들어, "A/B"는 문맥상 달리 지시하지 않는 한 A와 B 양자의 공존을 포함할 수도 있다.
달리 명시적으로 명시하지 않는 한, 본 개시 전반에 걸쳐, "제1", "제2", "제3"등의 용어는 관련요소(예를 들어, 장치, 요소, 구성, 단계 등)에 대한 참조를 위한 명명법으로만 사용되는 것이지, 공간적 또는 시간적 순서를 암시하지 않는다. 예를 들어, "제1 장치" 및 "제2 장치"는 별도로 형성된 두개의 장치 또는 동일한 장치의 두 부분, 구성 또는 동작 상태를 의미할 수 있으며, 임의로 명명될 수 있다.
제1 요소와 제2 요소는 독립적으로 존재할 수 있다. 예를 들어, 일부 실시예들은 어떠한 제1 요소 없이 제2 요소만을 포함할 수 있다. 따라서, 제2 요소는 제1 요소의 설명 이전에 또는 제1 요소의 설명없이 설명될 수 있다. 예를 들어, 방법 또는 프로세스의 "첫번째 단계"는 "두번째 단계"이후 또는 동시에 진행되거나 수행될 수 있다.
본 명세서에서 사용된 바와 같이, 용어 "만약" 또는 "?경우"는 문맥에 따라 "?할때" 또는 "?응답하여"를 의미하는 것으로 이해될 수 있다. 만약 이러한 용어가 청구항에 기재되면, 관련 제한 또는 특징이 조건부 또는 선택 사항임을 가리키지 않을 수 있다. 예를 들어, 방법은 i) 조건 X가 존재하는 경우 또는 만약 조건 X가 존재하면, 기능 또는 동작 X'가 수행되는 단계, ii) 조건 Y가 존재하는 경우 또는 만약 조건 Y가 존재하면, 기능 또는 동작 Y'가 수행되는 단계를 포함할 수 있다. 기능 또는 동작 X'를 수행하는 능력과 기능 또는 동작 Y'를 수행하는 능력을 모두 구현하는 방법이 요구될 수 있는 반면, 기능 X'와 Y'는 모두 서로 다른 시간에 방법의 여러 실행 단계에서 수행될 수 있다. 또한 조건 X의 만족도를 감지 또는 평가하는 기능과 조건 Y의 만족도를 감지 또는 평가하는 기능으로 구현 될 수 있다.
용어 "모듈", "서브-모듈", "회로", "서브-회로", "회로망", "서브-회로망", "유닛" 또는 "서브-유닛"은 하나 또는 그 이상의 프로세서에서 실행할 수 있는 코드 또는 명령어를 저장하는 메모리(공유, 전용 또는 그룹)를 포함할 수 있다. 모듈은 저장된 코드 또는 명령어를 가지거나 가지지 않는 하나 또는 그 이상의 회로를 포함할 수 있다. 모듈 또는 회로는 직접 또는 간접적으로 연결된 하나 또는 그 이상의 구성 요소들을 포함할 수 있다. 이러한 구성 요소들은 서로 물리적으로 부착되거나 인접하여 위치할 수도 있고 그렇지 않을 수도 있다.
유닛 또는 모듈은 단순히 소프트웨어, 단순히 하드웨어, 또는 하드웨어와 소프트웨어의 조합에 의해 구현될 수 있다. 예를 들어, 단순한 소프트웨어 구현방식에서, 유닛 또는 모듈은 특정 기능을 수행하기 위하여 함께 직접 또는 간접적으로 연결된 기능적으로 관련된 코드 블록 또는 소프트웨어 구성 요소들을 포함할 수 있다.
도 1은 본 개시의 일부 구현 방식들에 따른 비디오 블록들을 인코딩 및 디코딩하기 위한 예시적인 시스템(10)을 도시하는 블록도이다. 도 1에 도시된 바와 같이, 시스템(10)은 목적지 장치(14)에 의해 나중에 디코딩될 비디오 데이터를 생성하고 인코딩하는 소스 장치(12)를 포함한다. 소스 장치(12) 및 목적지 장치(14)는 데스크톱 또는 랩탑 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 셋톱 박스, 디지털 텔레비전, 카메라, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 장치와 같은 다양한 전자 장치 중 어느 하나일 수 있다. 일부 구현 방식들에서, 소스 장치(12) 및 목적지 장치(14)는 무선 통신 기능을 구비할 수 있다.
일부 구현 방식들에서, 목적지 장치(14)는 링크(16)를 통하여 디코딩될 인코딩된 비디오 데이터를 수신할 수 있다. 링크(16)는 인코딩된 비디오 데이터를 소스 장치(12)로부터 목적지 장치(14)로 이동할 수 있는 임의의 유형의 통신 매체 또는 장치일 수 있다. 일 예에서, 링크(16)는 인코딩된 비디오 데이터를 소스 장치(12)가 목적지 장치(14)에 실시간으로 직접 전송할 수 있도록 하는 통신 매체일 수 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조되어 목적지 장치(14)로 전송될 수 있다. 통신 매체는 무선 주파수(RF) 스펙트럼 또는 하나 또는 그 이상의 물리적 전송 라인과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수 있다. 통신 매체는 근거리 네트워크(local area network), 광역 네트워크(wide-area network)와 같은 패킷-기반 네트워크(packet-based network) 또는 인터넷(Internet)과 같은 글로벌 네트워크(global network)의 일부분을 형성할 수 있다. 통신 매체는 라우터, 스위치, 기지국, 또는 소스 장치(12)로부터 목적지 장치(14)로의 통신을 용이하게 하는데 사용할 수 있는 임의의 다른 장비를 포함할 수 있다.
일부 다른 구현 방식들에서, 인코딩된 비디오 데이터는 출력 인터페이스(22)로부터 저장 장치(32)로 전송될 수 있다. 다음, 저장 장치(32) 내의 인코딩된 비디오 데이터는 목적지 장치(14)가 입력 인터페이스(28)를 통하여 액세스할 수 있다. 저장 장치(32)는 다양한 분산 또는 로컬 액세스 데이터 저장 매체(예하면, 하드 드라이브, Blu-ray 디스크, DVD, CD-ROM, 플래시 메모리, 휘발성 또는 비 휘발성 메모리), 또는 인코딩된 비디오 데이터를 저장하기에 적절한 기타 디지털 저장 매체 중의 임의의 하나를 포함할 수 있다. 추가 예에서, 저장 장치(32)는 소스 장치(12)에 의해 생성된 인코딩된 비디오 데이터를 보유할 수 있는 파일 서버(file server) 또는 다른 중간 저장 장치에 대응할 수 있다. 목적지 장치(14)는 스트리밍 또는 다운로드를 통해 저장 장치(32)로부터 저장된 비디오 데이터에 액세스할 수있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 인코딩된 비디오 데이터를 목적지 장치(14)로 전송할 수 있는 임의의 유형의 컴퓨터일 수 있다. 예시적인 파일 서버는 웹 서버(예 : 웹 사이트 용), FTP 서버, 네트워크 연결 스토리지(network attached storage: NAS) 장치 또는 로컬 디스크 드라이브(local disk driver)를 포함할 수 있다. 목적지 장치(14)는 파일 서버에 저장된 인코딩된 비디오 데이터의 액세스에 적합한 무선 채널(예하면, Wi-Fi 연결), 유선 연결(예를 들면, DSL, 케이블 모뎀 등) 또는 이들의 조합을 포함하는 임의의 표준 데이터 연결을 통해 인코딩된 비디오 데이터에 액세스할 수 있다. 저장 장치(32)로부터의 인코딩된 비디오 데이터의 전송은 스트리밍 전송, 다운로드 전송 또는 그들의 조합일 수 있다.
도 1에 도시된 바와 같이, 소스 장치(12)는 비디오 소스(18), 비디오 인코더(20) 및 출력 인터페이스(22)를 포함한다. 비디오 소스(18)는 비디오 캡처 장치(예를 들어, 비디오 카메라), 이전에 캡처된 비디오를 포함하는 비디오 아카이브(video archieve), 비디오 콘텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스 및/또는 컴퓨터 그래픽 데이터를 소스 비디오로 생성하기 위한 컴퓨터 그래픽 시스템과 같은 소스 또는 이들의 조합을 포함할 수 있다. 일 예로, 비디오 소스(18)가 보안 감시 시스템의 비디오 카메라인 경우, 소스 장치(12) 및 목적지 장치(14)는 카메라 폰 또는 비디오 폰일 수 있다. 그러나, 본 개시에서 설명하는 구현 방식들은 일반적으로 비디오 코딩에 적용될 수 있는 것이고, 무선 및/또는 유선 애플리케이션에 적용될 수 있다.
캡처된, 사전에 캡처된 또는 컴퓨터에 의하여 생성된 비디오는 비디오 인코더(20)에 의해 인코딩될 수 있다. 인코딩된 비디오 데이터는 소스 장치(12)의 출력 인터페이스(22)를 통해 목적지 장치(14)로 직접 전송될 수 있다. 또한, 인코딩된 비디오 데이터는 (또는 대안 적으로) 저장 장치(32)에 저장되어 추후에 목적지 장치(14) 또는 다른 장치에 의하여 엑세스되어 디코딩 및/또는 재생되도록 할 수 있다. 출력 인터페이스(22)는 모뎀 및/또는 송신기를 더 포함 할 수있다.
목적지 장치(14)는 입력 인터페이스(28), 비디오 디코더(30) 및 디스플레이 장치(34)를 포함한다. 입력 인터페이스(28)는 수신기 및/또는 모뎀을 포함 할 수 있으며, 링크(16)를 통해 인코딩된 비디오 데이터를 수신할 수 있다. 링크(16)를 통해 전송되거나 저장 장치(32) 상에 제공되는 인코딩된 비디오 데이터는비디오 인코더(20)에 의해 생성되어 비디오 디코더(30)가 비디오 데이터를 디코딩하기 위하여 사용되는 다양한 신택스 요소들(systax elements)을 포함할 수 있다. 이러한 신택스 요소들은 통신 매체를 통해 전송되거나, 저장 매체에 저장되거나 파일 서버에 저장되는 인코딩된 비디오 데이터에 포함될 수 있다.
일부 구현 방식들에서, 목적지 장치(14)는 디스플레이 장치(34)를 포함 할 수 있으며, 이러한 디스플레이 장치(34)는 통합 디스플레이 장치 또는 목적지 장치(14)와 통신하도록 구성된 외부 디스플레이 장치일 수 있다. 디스플레이 장치(34)는 디코딩된 비디오 데이터를 사용자에게 디스플레이하며, 액정 디스플레이(LCD), 플라즈마 디스플레이(plasma display), 유기 발광 다이오드(OLED) 디스플레이 또는 다른 유형의 디스플레이 장치와 같은 다양한 디스플레이 장치 중 임의의 하나 일 수 있다.
비디오 인코더(20) 및 비디오 디코더(30)는 VVC, HEVC, MPEG-4, Part 10, AVC(Advanced Video Coding) 또는 이러한 표준들의 확장과 같은 독점적 또는 산업 표준들에 따라 동작 할 수있다. 본 개시는 특정된 비디오 코딩/디코딩 표준에 제한되지 않고, 다른 비디오 코딩/디코딩 표준에 적용될 수 있음을 이해하여야 한다. 일반적으로, 소스 장치(12)의 비디오 인코더(20)는 이러한 현재 또는 미래의 표준 중 임의의 하나에 따라 비디오 데이터를 인코딩하도록 구성될 수 있음을 고려되어야 한다. 유사하게, 목적지 장치(14)의 비디오 디코더(30)는 이러한 현재 또는 미래의 표준 중 임의의 하나에 따라 비디오 데이터를 디코딩하도록 구성 될 수 있음을 일반적으로 고려되어야 한다.
비디오 인코더(20) 및 비디오 디코더(30) 각각은 하나 또는 그 이상의 마이크로 프로세서, 디지털 신호 프로세서(digital signal processor, DSP), 주문형 집적 회로(application specific integrated circuit: ASIC), 현장 프로그래머블 게이트 어레이(Field Programmable Gate Array: FPGA), 이산 로직과 같은 다양한 적합한 인코더 회로, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 조합 중의 어느 하나로 구현될 수 있다. 부분적으로 소프트웨어로 구현되는 경우, 전자 장치는 소프트웨어에 대한 명령어를 적절한 비-일시적 컴퓨터 판독 가능 매체에 저장하고, 하나 또는 그 이상의 프로세서를 사용하여 하드웨어에서 명령어를 실행하여 본 개시에서 개시한 비디오 코딩/디코딩 동작을 수행 할 수 있다. 비디오 인코더(20) 및 비디오 디코더(30) 각각은 하나 또는 그 이상의 인코더 또는 디코더에 포함될 수 있으며, 이들은 결합된 인코더/디코더(CODEC)의 일부분으로 각각의 장치에 직접될 수있다.
도 2는 본 개시에서 설명한 일부 구현 방식들에 따른 예시적인 비디오 인코더(20)를 도시하는 블록도이다. 비디오 인코더(20)는 비디오 프레임 내의 비디오 블록들의 인트라 및 인터 예측 코딩을 수행할 수 있다. 인트라 예측 코딩은 공간적 예측에 의존하여 주어진 비디오 프레임 또는 픽처 내의 비디오 데이터의 공간 중복성을 줄이거나 제거할 수 있다. 인터 예측 코딩은 시간적 예측에 의존하여 비디오 시퀀스의 인접한 비디오 프레임 또는 픽처 내의 비디오 데이터의 시간 중복성을 줄이거나 제거할 수 있다.
도 2에 도시된 바와 같이, 비디오 인코더(20)는 비디오 데이터 메모리(40), 예측 처리부(41), 디코딩 픽처 버퍼(DPB, 64), 가산기(50), 변환 처리부(52), 양자화부(54) 및 엔트로피 인코딩부(56)을 포함한다. 예측 처리부(41)는 움직임 추정부(42), 움직임 보상부(44), 분할부(45), 인트라 예측 처리부(46), 인트라 블록 복사(IBC)부(48) 및 인트라/인터 모드 결정부(49)를 포함한다. 일부 구현 방식들에서, 비디오 인코더(20)는 또한 비디오 블록 재구성을 위한 역 양자화부(58), 역변환 처리부(60) 및 가산기(62)를 포함한다. 디 블록킹 필터는 가산기(62)와 DPB(64) 사이에 위치하여 블록 경계를 필터링하여 재구성된 비디오로부터 블록성 아티팩트(blockiness artifacts)를 제거할 수 있다. 디 블로킹 필터외에, 인-루프 필터(63) 또한 가산기(62)의 출력을 필터링하기 위하여 사용될 수 있다. 비디오 인코더(20)는 고정된 또는 프로그램 가능한 하드웨어 유닛의 형태로 구성되거나 하나 또는 그 이상의 고정된 또는 프로그래밍 가능한 하드웨어 장치에 분할될 수 있다.
비디오 데이터 메모리(40)는 비디오 인코더(20)의 구성 요소들에 의해 인코딩될 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리(40) 중의 비디오 데이터는 예를 들어 비디오 소스(18)로부터 획득될 수 있다. DPB(64)는 비디오 인코더(20)가 비디오 데이터를(예를 들어, 인트라 또는 인터 예측 코딩 모드에서) 인코딩하기 위하여 사용되는 기준 비디오 데이터를 저장하는 버퍼이다. 비디오 데이터 메모리(40) 및 DPB(64)는 다양한 메모리 장치들 중의 어느 하나일 수 있다. 다양한 예에서, 비디오 데이터 메모리(40)는 비디오 인코더(20)의 다른 구성 요소들과 함께 온칩(on-chip) 되거나, 이러한 구성 요소들에 대하여 오프 칩(off-chip)될 수있다.
도 2에 도시된 바와 같이, 비디오 데이터를 수신 후, 예측 처리부(41) 내의 분할부(45)는 비디오 데이터를 비디오 블록들로 분할(partitioning)한다. 한편, 이러한 분할은 비디오 데이터와 연관된 쿼드-트리 구조와 같은 미리 설정된 분할 구조에 따라 비디오 프레임을 슬라이스(slice), 타일(tile) 또는 다른 더 큰 코딩 단위(coding unit: CU)로 분할하는 것을 포함할 수 있다. 비디오 프레임은 복수의 비디오 블록들(또는 타일이라고 하는 비디오 블록들의 세트)로 분할될 수 있다. 예측 처리부(41)는 오차 결과(예를 들어, 코딩 레이트 및 왜곡 레벨)에 기초하여 현재 비디오 블록에 대한 복수의 인트라 예측 코딩 모드 중 하나 또는 복수의 인터 예측 코딩 모드 중 하나와 같은 복수의 가능한 예측 코딩 모드 중 하나를 선택할 수 있다. 예측 처리부(41)는 처리 결과인 인트라 또는 인터 예측 코딩된 블록을 가산기(50)에 제공하여 잔차 블록을 생성하고, 가산기(62)에 제공하여 인코딩된 블록을 재구성하여 추후에 기준 프레임의 일부로서 사용할 수 있다. 한편, 예측 처리부(41)는 움직임 벡터, 인트라-모드 지시자(indicator), 분할 정보(partition information) 및 기타 이러한 신택스 정보와 같은 신택스 요소들을 엔트로피 인코딩부(56)에 제공할 수 있다.
현재 비디오 블록에 대한 적절한 인트라 예측 코딩 모드를 선택하기 위하여, 예측 처리부(41) 내의 인트라 예측 처리부(46)는 코딩될 현재 블록과 동일한 프레임 내의 하나 또는 그 이상의 인접한 블록에 대하여 현재 비디오 블록의 인트라 예측 코딩을 수행하여 공간 예측을 제공할 수 있다. 예측 처리부(41) 내의 움직임 추정부(42) 및 움직임 보상부(44)는 하나 또는 그 이상의 기준 프레임 중의 하나 또는 그 이상의 예측 블록에 대한 현재 비디오 블록의 인터 예측 코딩을 수행하여 시간적 예측을 제공할 수 있다. 비디오 인코더(20)는 복수의 코딩 패스(coding passes)를 수행하여, 예를 들어, 비디오 데이터의 각 블록에 대한 적절한 코딩 모드를 선택할 수있다.
일부 구현 방식들에서, 움직임 추정부(42)는 비디오 프레임 시퀀스 내의 미리 결정된 패턴에 따라 움직임 벡터를 생성하는 것을 통하여 현재 비디오 프레임에 대한 인터 예측 모드를 확정하며, 상기 움직임 벡터는 기준 비디오 프레임 내의 예측 블록에 대한 현재 비디오 프레임 내의 비디오 블록의 예측 단위(prediction unit: PU)의 변위를 기리킬 수 있다. 움직임 추정부(42)에 의해 수행되는 움직임 추정은 비디오 블록들의 움직임을 추정하는 움직임 벡터들을 생성하는 과정이다. 예를 들어, 움직임 벡터는, 현재 프레임(또는, 기타 코딩된 단위)내의 코?되고 있는 현재 블록에 대한 기준 프레임(또는, 기타 코딩된 단위) 내의 예측 블록에 대한 현재 비디오 프레임 또는 픽처 내의 비디오 블록의 PU의 변위을 가리킬 수 있다. 미리 정해진 패턴은 시퀀스의 비디오 프레임을 P 프레임 아니면 B 프레임으로 지정할 수 있다. 인트라 BC 부(48)는 인터 예측을 위한 움직임 추정부(42)의 움직임 벡터들의 결정과 유사한 방식으로 인트라 BC 코딩을 위한 벡터들(예를 들어 블록 벡터들)을 확정할 수 있거나, 움직임 추정부(42)를 이용하여 블록 벡터를 확정할 수있다.
예측 블록은 픽셀 차이 면에서 코딩될 비디오 블록의 PU와 제일 근접하는 것으로 간주되는 기준 프레임의 블록으로, 필섹 차이는 절대 차이의 합(sum of absolute difference: SAD), 제곱 차이의 합(sum of square difference: SSD) 또는 기타 차이 메트릭에 의해 결정될 수 있다. 일부 구현 방식들에서, 비디오 인코더(20)는 DPB(64)에 저장된 기준 프레임들의 서브-정수 픽셀 위치들에 대한 값들을 계산할 수 있다. 예를 들어, 비디오 인코더(20)는 기준 프레임의 1/4 픽셀 위치, 1/8 픽셀 위치 또는 기타 분수 픽셀 위치의 값들을 보간할 수 있다. 따라서, 움직임 추정부(42)는 전체 픽셀 위치 및 분수 픽셀 위치에 대한 움직임 검색을 수행하고 분수 픽셀 정밀도로 움직임 벡터를 출력 할 수 있다.
움직임 추정부(42)는 기준 프레임의 예측 블록의 위치와 PU의 위치를 비교하여 인터 예측 코딩된 프레임 내의 비디오 블록의 PU에 대한 움직임 벡터를 계산하되, 상기 기준 프레임은 DPB(64)에 저장된 하나 또는 그 이상의 기준 프레임을 각각 식별하는 제 1 기준 프레임 리스트(예를 들어, List 0)또는 제2 기준 프레임 리스트(예를 들어, List 1)로부터 선택될 수 있다. 움직임 추정부(42)는 계산된 움직임 벡터를 움직임 보상부(44)로 전송하고, 다음 엔트로피 인코딩부(56)로 전송한다.
움직임 보상부(44)에 의해 수행되는 움직임 보상은, 움직임 추정부(42)가 결정한 움직임 벡터에 기초하여 예측 블록을 페치(fetch)하거나 생성하는 것을 포함할 수 있다. 현재 비디오 블록의 PU에 대한 움직임 벡터를 수신하면, 움직임 보상부(44)는 기준 프레임 리스트들 중의 하나에서 움직임 벡터가 가리키는 예측 블록을 찾고, DPB(64)로부터 예측 블록을 검색하고, 예측 블록을 가산기(50)로 전달할 수 있다. 다음, 가산기(50)는 코딩되고 있는 현재 비디오 블록의 픽셀 값으로부터 움직임 보상부(44)가 제공한 예측 블록의 픽셀 값을 감산하는 것을 통하여 잔차 비디오 블록의 픽셀 차이 값을 형성할 수 있다. 잔차 비디오 블록을 형성하는 픽셀 차이 값은 루마 또는 크로마 차이 성분 또는 양자를 포함할 수 있다. 또한, 움직임 보상부(44)는 비디오 디코더(30)가 비디오 프레임의 비디오 블록을 디코딩할 경우에 사용하는 비디오 프레임의 비디오 블록과 연관된 신택스 요소들을 생성 할 수 있다. 신택스 요소들은, 예를 들어, 예측 블록을 식별하기 위하여 사용되는 움직임 벡터들을 정의하는 신택스 요소들, 예측 모드를 가리키는 임의의 플래그, 또는 본 명세서에서 설명된 임의의 다른 신택스 정보를 포함 할 수 있다. 움직임 추정부(42) 및 움직임 보상부(44)는 고도로 직접될 수 있으나, 개념적 목적을 위해 별도로 도시되어 있다.
일부 구현 방식들에서, 인트라 BC부(48)는 움직임 추정부(42) 및 움직임 보상부(44)과 관련하여 위에서 설명한 것과 유사한 방식으로 벡터들을 생성하고 예측 블록들을 페치(fetch)할 수 있지만, 이러한 예측 블록들은 코딩되고 있는 현재 블록과 같은 프레임 내에 있으며, 벡터들은 움직임 벡터가 아닌 블록 벡터라 한다. 구체적으로, 인트라 BC부(48)는 현재 블록을 인코딩하기 위하여 사용하는 인트라 예측 모드를 결정할 수 있다. 일부 예들에서, 인트라 BC부(48)는 예를 들어 개별 인코딩 패스 동안 다양한 인트라 예측 모드들을 사용하여 현재 블록을 인코딩할 수 있고, 레이트-왜곡 분석을 통해 그들의 성능을 테스트할 수 있다. 다음으로, 인트라 BC부(48)는 다양한 테스트된 인트라 예측 모드들 중에서 적절한 인트라 예측 모드를 선택하여 사용하고 그에 따른 인트라 모드 식별자를 생성할 수 있다. 예를 들어, 인트라 BC부(48)는 테스트된 다양한 인트라 예측 모드들에 대한 레이트-왜곡 분석들(rate-distortion analysis)을 이용하여 레이트-왜곡 값들(rate-distortion value)을 계산할 수 있고, 테스트된 모드들 중 최적의 레이트-왜곡 특성을 갖는 인트라-예측 모드를 적절한 인트라 예측 모드로 선택하여 사용할 수 있다. 일반적으로, 레이트 왜곡 분석은 인코딩된 블록과 인코딩된 블록을 생성하기 위하여 인코딩되는 원래의 인코딩되지 않은 블록 사이의 왜곡(또는 오차)의 양 및 인코딩된 블록을 생성하기 위한 비트율(즉, 비트 수)을 결정한다. 인트라 BC부(48)는 다양한 인코딩된 블록들에 대한 왜곡(distortion) 및 레이트로부터 비율을 계산하여 어느 인트라 예측 모드가 블록에 대하여 최적의 레이트-왜곡 값을 가리키는지를 결정할 수 있다.
다른 예들에서, 인트라 BC부(48)는 전체적으로 또는 부분적으로 움직임 추정부(42) 및 움직임 보상부(44)를 사용하여 본 명세서에서 설명 된 구현 방식들에 따른 인트라 BC 예측을 위한 기능들을 수행 할 수 있다. 두 경우 모두, 인트라 블록 복사(block copy)에 대하여, 예측 블록은 절대 차이의 합(SAD), 제곱 차이(SSD)의 합 또는 다른 차이 메트릭에 의해 결정되는 픽셀 차이 면에서 코딩될 블록과 밀접하게 매칭되는 것으로 간주되는 블록일 수 있으며, 예측 블록의 식별은 서브-정수 픽셀 위치에 대한 값의 계산을 포함할 수 있다.
예측 블록이 인트라 예측에 따라 동일한 프레임 또는 인터 예측에 따라 다른 프레임으로부터 생성되는 것과 관련 없이, 비디오 인코더(20)는 코딩되는 현재 비디오 블록의 픽셀 값들로부터 예측 블록의 픽셀 값들을 감산하여 픽셀 차이 값들을 형성하는 것을 통하여, 잔차 비디오 블록을 형성할 수 있다. 잔차 비디오 블록을 형성하는 픽셀 차이 값들은 루마(luma) 및 크로마(chroma) 성분 차이를 모두 포함할 수 있다.
위에서 설명한 움직임 추정부(42) 및 움직임 보상부(44)에 의해 수행되는 인터 예측 또는 인트라 BC부(48)에 의해 수행되는 인트라 블록 복사 예측에 대한 대안으로서, 인트라 예측 처리부(46)는 현재 비디오 블록을 인트라 예측할 수 있다. 구체적으로, 인트라 예측 처리부(46)는 현재 블록을 인코딩하기 위해 사용할 인트라 예측 모드를 결정할 수있다. 이를 위하여, 인트라 예측 처리부(46)는 예를 들어 개별 인코딩 패스 동안 다양한 인트라 예측 모드들을 사용하여 현재 블록을 인코딩할 수 있고, 인트라 예측 처리부(46)(또는 일부 예들에서 모드 선택부)는 테스트된 인트라 예측 모드들로부터 적절한 인트라 예측 모들를 선택하여 사용할 수 있다. 인트라 예측 처리부(46)는 블록에 대해 선택한 인트라 예측 모드를 가리키는 정보를 엔트로피 인코딩부(56)에 제공할 수 있다. 엔트로피 인코딩부(56)는 선택된 인트라-예측 모드를 가리키는 정보를 비트스트림에 인코딩할 수있다.
예측 처리부(41)가 인터 예측 또는 인트라 예측을 통해 현재 비디오 블록에 대한 예측 블록을 결정한 후, 가산기(50)는 현재 비디오 블록으로부터 예측 블록을 감산하여 잔차 비디오 블록(residual video block)을 형성한다. 잔차 블록 내의 잔차 비디오 데이터는 하나 또는 그 이상의 변환 단위(TU)에 포함될 수 있으며, 변환 처리부(52)에 제공된다. 변환 처리부(52)는 이산 코사인 변환(DCT) 또는 개념적으로 유사한 변환과 같은 변환을 사용하여 잔차 비디오 데이터를 잔차 변환 계수로 변환한다.
변환 처리부(52)는 얻은 변환 계수들을 양자화부(54)에 전송할 수 있다. 양자화부(54)는 변환 계수들을 양자화하여 비트 레이트를 더 감소할 수 있다. 또한, 양자화 프로세스는 계수들의 일부 또는 전부와 관련된 비트 깊이(bit depth)를 감소할 수 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수 있다. 일부 예들에서, 양자화부(54)는 양자화된 변환 계수들을 포함하는 매트릭스의 스캔을 수행할 수 있다. 또는, 엔트로피 인코딩부(56)가 상기 스캔을 수행할 수 있다.
양자화한 다음, 엔트로피 인코딩부(56)은 예를 들어, 컨텍스트 적응형 가변 길이 코딩(context adaptive variable length coding: CAVLC), 컨텍스트 적응형 이진 산술 코딩(context adaptive binary arithmetic coding: CABAC), 신택스 기반 컨텍스트 적응형 이진 산술 코딩(syntax-based context-adaptive binary arithmetic coding: SBAC), 확률 간격 분할 엔트로피(probability interval partitioning entropy: PIPE) 코딩 또는 다른 엔트로피 인코딩 방법 또는 기술을 사용하여 양자화된 변환 계수들을 비디오 비트스트림으로 엔트로피 인코딩한다. 인코딩된 비트스트림은 비디오 디코더(30)로 전송되거나, 저장 장치(32)에 저장되어 추후에 비디오 디코더(30)로 전송되거나 또는 비디오 디코더(30)에 의하여 검색될 수 있다. 엔트로피 인코딩부(56)는 또한 코딩되는 현재 비디오 프레임에 대한 움직임 벡터들 및 다른 신택스 요소들을 엔트로피 인코딩할 수 있다.
역 양자화부(58) 및 역변환 처리부(60)는 다른 비디오 블록들의 예측을 위한 기준 블록을 생성하기 위하여, 각각 역 양자화 및 역변환을 적용하여 픽셀 도메인에서 잔차 비디오 블록을 재구성할 수 있다. 위에서 설명한 바와 같이, 움직임 보상부(44)는 DPB(64)에 저장된 프레임들의 하나 또는 그 이상의 기준 블록으로부터 움직임 보상된 예측 블록을 생성할 수 있다. 움직임 보상부(44)는 또한 하나 또는 그 이상의 보간 필터를 예측 블록에 적용하여 움직임 추정에 사용하기 위한 서브-정수 픽셀 값들을 산출할 수 있다.
가산기(62)는 재구성된 잔차 블록과 움직임 보상부(44)에 의해 생성된 움직임 보상된 예측 블록을 가산하여 DPB(64)에 저장하기 위한 기준 블록을 생성할 수 있다. 다음, 기준 블록은 인트라 BC부(48), 움직임 추정부(42), 움직임 보상부(44)에 의하여 예측 블록으로 사용되어 후속 비디오 프레임 내의 다른 비디오 블록을 인터 예측할 수 있다.
비디오 인코더(20)를 사용하는 비디오 코딩의 일 예에서, 비디오 프레임은 블록들로 분할되어 처리된다. 주어진 각각의 비디오 블록에 대하여, 인터 예측 또는 인트라 예측을 기반으로 예측을 형성한다. 인터 예측에서, 예측자 또는 예측 블록들은 사전에 재구성된 프레임의 픽셀들을 기반으로 움직임 추정 및 움직임 보상을 통해 형성될 수 있다. 인트라 예측에서, 예측자는 현재 프레임에서 재구성된 픽셀들을 기반으로 형성될 수 있다. 모드 결정을 통해 최적의 예측자를 선택하여 현재 블록을 예측할 수 있다.
예측 잔차 또는 잔차 블록 (즉, 현재 블록과 그 예측자 사이의 차이)는 변환모듈, 예를 들어 변환 처리부(52)로 전송된다. 다음, 변환 계수는 엔트로피 감소를 위해 양자화 모듈, 예를 들어 양자화부(54)로 전송된다. 양자화된 계수는 압축된 비디오 비트스트림을 생성하기 위해 엔트로피 코딩 모듈, 예를 들어 엔트로피 인코딩부(56)에 공급된다. 도 2에 도시 된 바와 같이, 블록 분할 정보(block partition information), 움직임 벡터, 기준 픽처 인덱스 및 인트라 예측 모드 등과 같은 인터 및/또는 인트라 예측 모듈로부터의 예측 관련 정보도 엔트로피 코딩 모듈, 예를 들어 엔트로피 인코딩부(56)를 통과하며, 그 후 비트스트림에 저장된다.
비디오 인코더 (20)에서, 예측 목적으로 픽셀을 재구성하기 위해 디코더 관련 모듈이 필요할 수 있다. 첫째, 역 양자화 및 역 변환을 통해 예측 잔차를 재구성한다. 다음, 재구성된 예측 잔차는 예측자와 결합되어 현재 블록에 대해 필터링 되지 않은 재구성된 픽셀들을 생성한다.
코딩 효율과 시각적 품질을 향상시키기 위해 일반적으로 인-루프 필터(63)가 사용된다. 예를 들어, 디 블로킹 필터는 AVC, HEVC 및 VVC에서 사용할 수 있다. HEVC에서는 코딩 효율을 더욱 향상시키기 위해 샘플 적응적 오프셋(sample adaptive offset, SAO)라는 추가 인-루프 필터를 정의할 수 있다. VVC에서는 적응적 루프 필터 (Adaptive Loop Filter, ALF)라는 인-루프 필터(63)가 사용될 수 있다.
이러한 인-루프 필터 동작은 선택 사항이다. 일반적으로 인-루프 필터를 동작하도록하면 코딩 효율성과 시각적 품질을 향상시키는데 도움이 된다. 계산 복잡성을 줄이기 위해 인코더 결정으로 동작되지 않도록 할 수도 있다.
유의해야 할 점은, 인트라 예측은 일반적으로 필터링되지 않은 재구성된 픽셀을 기반으로 하는 반면, 인터 예측은 이러한 필터가 인코더에 의해 동작 될 경우 필터링된 재구성 픽셀을 기반으로 한다는 것이다.
도 3은 본 개시의 일부 구현 방식들에 따른 예시적인 비디오 디코더(30)를 도시하는 블록도이다. 비디오 디코더(30)는 비디오 데이터 메모리(79), 엔트로피 디코딩부(80), 예측 처리부(81), 역 양자화부(86), 역변환 처리부(88), 가산기(90) 및 DPB(92)를 포함한다. 예측 처리부(81)는 움직임 보상부(82), 인트라 예측 처리부(84), 인트라 BC부(85) 및 인트라/인터 모드 선택부(87)를 더 포함한다. 비디오 디코더(30)는 일반적으로 도 2와 관련하여 비디오 인코더(20)에 대하여 위에서 설명한 인코딩 프로세스와 반대인 디코딩 프로세스를 수행할 수 있다. 예를 들어, 움직임 보상부(82)는 엔트로피 디코딩부(80)로부터 수신된 움직임 벡터들에 기초하여 예측 데이터를 생성할 수 있고, 인트라 예측 처리부(84)는 엔트로피 디코딩부(80)로부터 수신된 인트라 예측 모드 지시자들에 기초하여 예측 데이터를 생성 할 수있다.
비디오 디코더(30)를 이용한 비디오 디코딩의 예에서, 수신된 비트스트림은 엔트로피 디코딩부(80)에 의하여 디코딩되어 양자화된 계수 레벨(또는 양자화된 계수) 및 예측 관련 정보가 도출된다. 다음, 양자화된 계수 레벨들은 역 양자화부(86) 및 역변환 처리부(88)에 의하여 처리되어 재구성된 잔차 블록이 획득될 수 있다. 디코딩된 예측 관련 정보를 기반으로 인트라 예측 또는 움직임 보상 과정을 통해 예측자 또는 예측 블록이 형성된다. 필터링되지 않은 재구성된 픽셀들은 재구성된 잔차 블록과 예측자를 합산하여 획득하게 된다. 인-루프 필터가 동작하는 경우, 이러한 픽셀들에 대해 필터링 작업이 수행되어 최종적으로 재구성된 비디오를 도출되어 출력된다.
일부 예들에서, 비디오 디코더(30)의 단위는 본 개시의 구현 방식들을 구현하도록 기능들을 수행할 수 있다. 또한, 일부 예들에서, 본 개시의 구현 방식들을 구현하도록 비디오 디코더(30)의 단위들을 하나 또는 그 이상으로 분할되어 구현될 수 있다. 예를 들어, 인트라 BC부(85)는 본 개시의 구현 방식들을 단독으로 수행하거나, 움직임 보상부(82), 인트라 예측 처리부(84) 및 엔트로피 디코딩부(80)와 같은 비디오 디코더(30)의 다른 부분들과 조합하여 수행할 수 있다. 일부 예들에서, 비디오 디코더(30)는 인트라 BC부(85)를 포함하지 않을 수 있고, 인트라 BC부(85)의 기능은 움직임 보상부(82)와 같은 예측 처리부(81)의 다른 부분들에 의하여 수행할 수 있다.
비디오 데이터 메모리(79)는 인코딩된 비디오 비트스트림과 같은 비디오 디코더(30)의 다른 부분들에 의해 디코딩될 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리(79)에 저장된 비디오 데이터는 예를 들어 저장 장치(32)로부터 획득하거나, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통하여 획득하거나, 또는 물리적 데이터 저장 매체(예를 들어: 플래시 드라이브 또는 하드 디스크)에 액세스하는 것을 통하여 카메라와 같은 로컬 비디오 소스로부터 획득할 수 있다. 비디오 데이터 메모리(79)는 인코딩된 비디오 비트스트림의 인코딩된 비디오 데이터를 저장하는 코딩 픽처 버퍼(coded picture buffer: CPB)를 포함할 수 있다. 비디오 디코더(30)의 디코딩 픽처 버퍼(Decoded picture buffer: DPB)(92)는 (예를 들어, 인트라 또는 인터 예측 코딩 모드에서) 비디오 디코더(30)가 비디오 데이터를 디코딩하는데 사용하기 위한 기준 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리(79) 및 DPB(92)는 SDRAM, MRAM, RRAM을 포함하는 DRAM과 같은 다양한 메모리 장치 또는 다른 유형의 메모리 장치 중의 어느 하나로 형성될 수 있다. 설명을 위해, 비디오 데이터 메모리(79) 및 DPB(92)는 도3에서 비디오 디코더(30)의 두 개의 별개의 부분으로 도시되었다. 그러나, 비디오 데이터 메모리(79) 및 DPB(92)는 동일한 메모리 장치 또는 별도의 메모리 장치에 의해 제공 될 수 있다는 것은 당업자에게 자명한 것이다. 일부 예들에서, 비디오 데이터 메모리(79)는 비디오 디코더(30)의 다른 부분들과 함께 온-칩(on-chip)일 수 있거나, 이러한 부분들과 오프-칩(off-chip)일 수 있다.
디코딩 프로세스 동안, 비디오 디코더(30)는 인코딩된 비디오 프레임의 비디오 블록들 및 연관된 신택스 요소들을 가리키는 인코딩된 비디오 비트스트림을 수신한다. 비디오 디코더(30)는 비디오 프레임 레벨 및/또는 비디오 블록 레벨에서 신택스 요소들을 수신할 수 있다. 비디오 디코더(30)의 엔트로피 디코딩부(80)는 비트스트림을 엔트로피 디코딩하여 양자화된 계수들, 움직임 벡터들 또는 인트라-예측 모드 지시자 및 기타 신택스 요소들을 생성할 수 있다. 다음, 엔트로피 디코딩부(80)는 움직임 벡터 및 다른 신택스 요소들을 예측 처리부(81)로 전달한다.
비디오 프레임이 인트라 예측 코딩(I) 프레임으로 코딩되거나 다른 유형의 프레임에서 인트라 코딩된 예측 블록에 대해 코딩 될 경우, 예측 처리부(81)의 인트라 예측 처리부(84)는 시그널링된 인트라 예측 모드 및 현재 프레임의 이전에 디코딩된 블록들로부터의 기준 데이터에 기초하여 현재 비디오 프레임의 비디오 블록에 대한 예측 데이터를 생성할 수 있다.
비디오 프레임이 인터 예측 코딩(즉, B 또는 P)된 프레임으로 코딩 될 경우, 예측 처리부(81)의 움직임 보상부(82)는 엔트로피 디코딩부(80)로부터 수신된 움직임 벡터들 및 다른 신택스 요소들에 기초하여 현재 비디오 프레임의 비디오 블록에 대한 하나 또는 그 이상의 예측 블록을 생성한다. 각각의 예측 블록은 기준 프레임 리스트들 중 하나의 기준 프레임 리스트 내의 기준 프레임으로부터 생성될 수 있다. 비디오 디코더(30)는 DPB(92)에 저장된 기준 프레임들에 기초하여 디폴트 구성 기술들을 사용하여 기준 프레임 리스트들(예를 들어, List0 및 List1)을 생성할 수 있다.
일부 예들에서, 비디오 블록이 본 명세서에서 설명한 인트라 BC 모드에 따라 코딩 될 경우, 예측 처리부(81)의 인트라 BC부(85)는 엔트로피 디코딩부(80)로부터 수신된 블록 벡터들 및 다른 신택스 요소들에 기초하여 현재 비디오 블록에 대한 예측 블록들을 생성한다. 예측 블록들은 비디오 인코더(20)에 의해 정의된 현재 비디오 블록과 동일한 픽처의 재구성 영역 내에 포함될 수 있다.
움직임 보상부(82) 및/또는 인트라 BC부(85)는 움직임 벡터들 및 다른 신택스 요소들을 파싱하여 현재 비디오 프레임의 비디오 블록에 대한 예측 정보를 결정한 다음, 예측 정보를 사용하여 디코딩되는 현재 비디오 블록에 대한 예측 블록들을 생성한다. 예를 들어, 움직임 보상부(82)는 수신된 신택스 요소들 중 일부를 사용하여 비디오 프레임의 비디오 블록들의 코딩에 사용되는 예측 모드(예를 들어, 인트라 또는 인터 예측), 인터 예측 프레임 유형(예를 들어, B 또는 P), 프레임에 대한 기준 프레임 리스트들 중 하나 또는 그 이상에 대한 구성 정보, 프레임의 각 인터 예측 코딩된 비디오 블록에 대한 움직임 벡터들, 프레임의 각 인터 예측 코딩된 비디오 블록에 대한 인터 예측 상태, 및 현재 비디오 프레임의 비디오 블록들을 디코딩하기 위한 기타 정보를 결정할 수 있다.
유사하게, 인트라 BC부(85)는 수신된 신택스 요소들 중 일부(예를 들어 플래그)를 사용하여, 현재 비디오 블록이 인트라 BC 모드를 사용하여 예측되었으며, 프레임의 어느 비디오 블록들이 재구성된 영역 내에 있으며 DPB(92)에 저장되어야 하는 구성 정보(construction information), 프레임의 각 인트라 BC 예측된 비디오 블록에 대한 블록 벡터들, 프레임의 각 인트라 BC 예측된 비디오 블록에 대한 인트라 BC 예측 상태 및 현재 비디오 프레임 내의 비디오 블록들을 디코딩하기 위한 기타 정보를 결정할 수 있다.
움직임 보상부(82)는 또한 기준 블록들의 서브-정수 픽셀에 대한 보간 값들을 계산하기 위해 비디오 블록들의 인코딩 동안 비디오 인코더(20)가 사용하는 보간 필터들를 사용하여 보간을 수행할 수 있다. 이 경우, 움직임 보상부(82)는 수신된 신택스 요소들로부터 비디오 인코더(20)가 사용하는 보간 필터들을 결정하고, 결정된 보간 필터들을 사용하여 예측 블록들을 생성할 수 있다.
역 양자화부(86)는 비디오 프레임의 각 비디오 블록에 대해 비디오 인코더(20)가 계산한 동일한 양자화 파라미터를 사용하여, 비트스트림 내에 제공되며 엔트로피 디코딩부(80)에 의하여 엔트로피 디코딩된 변환 계수들을 역 양자화하여 양자화 정도를 결정한다. 역 변환 처리부(88)는 픽셀 도메인에서 잔차 블록을 재구성하기 위하여, 역 변환(예를 들어, 역 DCT, 역 정수 변환 또는 개념적으로 유사한 역 변환 프로세스)을 변환 계수에 적용한다.
움직임 보상부(82) 또는 인트라 BC부(85)에서 벡터들 및 기타 신택스 요소들에 기초하여 현재 비디오 블록에 대한 예측 블록을 생성한 다음, 가산기(90)는 역 변환 처리부(88)에서 제공한 잔차 블록 및 움직임 보상부(82) 및 인트라 BC부(85)에 의해 생성된 대응하는 예측 블록을 가산하는 것을 통하여 현재 비디오 블록에 대한 디코딩된 비디오 블록을 재구성한다. 인-루프 필터(91)는 가산기(90)와 DPB(92) 사이에 위치되어 디코딩된 비디오 블록을 추가로 처리할 수 있다. 주어진 프레임 내의 디코딩된 비디오 블록들은 다음 비디오 블록들의 후속 움직임 보상에 사용되는 기준 프레임들을 저장한 DPB(92)에 저장된다. DPB(92) 또는 DPB(92)와 분리된 메모리 장치는 또한 디코딩된 비디오를 저장하여 도 1의 디스플레이 장치(34)와 같은 디스플레이 장치 상에 나중에 표시할 수 있다.
전형적인 비디오 코딩 프로세스에서, 비디오 시퀀스는 일반적으로 프레임들 또는 픽처들의 소정 순서의 세트를 포함한다. 각 프레임은 SL, SCb 및 SCr로 표시되는 3 개의 샘플 행렬들을 포함할 수 있다. SL은 루마 샘플들의 2 차원 행렬이다. SCb는 Cb 크로마 샘플들의 2 차원 행렬이다. SCr은 Cr 크로마 샘플들의 2 차원 행렬이다. 다른 경우에, 프레임은 단색일 수 있으므로, 루마 샘플들의 2 차원 행렬 하나만 포함할 수 있다.
도 4는 본 개시의 일부 구현 방식들에 따른 QTBT(quadtree plus binary tree)구조를 도시하는 개략도이다.
위에서 언급한 VVC, JEM, HEVC, MPEG-4, Part 10과 같은 비디오 코딩/디코딩 표준은 개념적으로 유사하다. 예를 들어, 이들은 모두 블록 기반 처리를 사용한다. 일부 표준들의 블록 분할 방안은 아래에 상세히 기재되어 있다.
HEVC는 하이브리드 블록 기반의 움직임 보상 변환 코딩 아키텍처를 기반으로 한다. 압축의 기본 단위를 코딩 트리 단위(coding tree unit, CTU)라고 한다. 4 : 2 : 0 크로마 포맷에서, CTU의 최대 크기는 최대 64×64 루마 픽셀과 두개의 32×32 크로마 픽셀의 블록으로 정의된다. 각 CTU는 하나의 코딩 단위(CU)를 포함하거나 미리 정의된 CU의 최소 크기에 도달할 때까지 4 개의 더 작은 CU로 재귀적으로 분할될 수 있다. 각 CU(리프 CU라고도 함)에는 하나 또는 복수의 예측 단위(PU)와 변환 단위(TU)트리가 포함된다.
일반적으로, 모노크롬 콘텐츠를 제외하고, CTU는 하나의 루마 코딩 트리 블록(CTB)과 두 개의 대응하는 크로마 CTB를 포함할 수 있으며; CU는 하나의 루마 코딩 블록(CB) 및 두 개의 대응하는 크로마 CB를 포함 할 수 있으며;, PU는 하나의 루마 예측 블록(PB) 및 두 개의 대응하는 크로마 PB를 포함할 수 있으며; TU는 하나의 루마 변환 블록(TB) 및 두 개의 대응하는 크로마 TB를 포함할 수 있다. 그러나, 예외가 발생할 수 있는데, 이는 루마와 크로마 모두에 대하여 최소 TB 크기는 4×4이고(즉, 4 : 2 : 0 컬러 포맷에 대해 2x2 크로마 TB는 지원되지 않음), 대응하는 인트라 루마 CB에서의 인트라 루마 PB의 수와 관계없이 각 인트라 크로마 CB에는 항상 하나의 인트라 크로마 PB만 있기 때문이다.
인트라 CU의 경우, 루마 CB는 1 개 또는 4 개의 루마 PB에 의해 예측될 수 있고, 2 개의 크로마 CB 각각은 항상 1 개의 크로마 PB에 의해 예측되며, 각 루마 PB는 1 개의 인트라 루마 예측 모드를 가지고, 2 개의 크로마 PB는 하나의 인트라 크로마 예측 모드를 공유한다. 또한, 인트라 CU의 경우, TB 크기는 PB 크기보다 클 수 없다. 각 PB에서, 인트라 예측을 적용하여 TB의 인접 재구성된 샘플로부터 PB 내부의 각 TB의 샘플을 예측할 수 있다. 각 PB에 대하여, 33 개의 방향성 인트라 예측 모드 외에, DC 및 평면 모드도 지원되어 각각 평탄한 영역과 점진적으로 변하는 영역을 예측한다.
각 인터 PU에 대하여, 인터, 스킵, 병합 등 3 가지 예측 모드 중 하나를 선택할 수 있다. 일반적으로 말해서, 움직임 벡터 경쟁(MVC) 방안을 도입하여 공간적 및 시간적 움직임 후보를 포함하는 주어진 후보 세트로부터 움직임 후보를 선택한다. 움직임 추정에 대한 다중 참조를 통해 2 개의 가능한 재구성된 참조 픽처 리스트들(즉, List 0 및 List 1)에서 최적의 참조를 찾을 수 있다. 인터 모드(AMVP 모드라고 함, 여기서 AMVP는 고급 움직임 벡터 예측을 나타냄)에 대해, 인터 예측 지시자(List 0, List 1 또는 양방향 예측), 참조 인덱스, 움직임 후보 인덱스, 움직임 벡터 차이(MVD) 및 예측 잔차가 전송된다. 스킵 모드 및 병합 모드에 대하여, 병합 인덱스만 전송되며 현재 PU는 코딩된 병합 인덱스가 참조하는 인접 PU로부터 인터 예측 지시자, 참조 인덱스, 움직임 벡터를 상속 받는다. 스킵 코딩된 CU의 경우, 잔차 신호도 생략된다.
JEM (Joint Exploration Test Model)은 HEVC 테스트 모델 위에 구축된다. HEVC의 기본 인코딩 및 디코딩 흐름은 JEM에서 변경되지 않는다. 그러나 블록 구조, 인트라 및 인터 예측, 잔차 변환, 루프 필터 및 엔트로피 코딩 모듈을 포함하는 가장 중요한 모듈의 설계 요소는 다소 수정되고 추가 코딩 도구가 추가된다. JEM에는 다음과 같은 새로운 코딩 기능이 포함되어 있다.
HEVC에서 CTU는 다양한 로컬 특성에 적응하기 위해 코딩 트리로 표시된 쿼드트리 구조를 사용하여 CU로 분할된다. 인터-픽처(시간적) 예측을 사용하여 픽처 영역을 코딩할지 아니면 인트라-픽처(공간적) 예측을 사용하여 픽처 영역을 코딩할지 여부는 CU 레벨에서 결정된다. 각 CU는 PU 분할 타입에 따라 1 개, 2 개 또는 4 개의 PU로 더 분할될 수 있다. 하나의 PU 내부에서는 동일한 예측 프로세스가 적용되고PU를 기반으로 관련 정보가 디코더로 전송된다. PU 분할 타입을 기반으로 예측 프로세스를 적용하여 잔차 블록을 획득한 다음, CU는 CU에 대한 코딩 트리와 유사한 다른 쿼드트리 구조에 따라 변환 단위(TU)로 분할될 수 있다. HEVC 구조의 주요 특징 중 하나는 CU, PU 및 TU를 포함한 다중 분할 개념을 가지고 있다는 것이다.
QTBT 구조는 멀티 분할 타입의 개념을 제거하는바, 즉, CU, PU 및 TU 개념의 분리를 제거하고 CU 분할 형상에 대하여 더 큰 유연성을 지원한다. QTBT 블록 구조에서 CU는 정사각형 또는 직사각형 형상을 가질 수 있다. 도 4에 도시 된 바와 같이, 코딩 트리 단위(CTU)는 먼저 쿼터너리 트리(quaternary tree, 즉, 쿼드 트리) 구조에 의해 분할된다. 쿼드 트리 리프 노드(leaf node)들은 이진 트리(binary tree) 구조에 의해 더 분할될 수 있다. 이진 트리 분할에는 대칭 수평 분할과 대칭 수직 분할과 같은 두 가지 분할 타입이 있다. 이진 트리 리프 노드들을 코딩 단위(CU)라고 하며 이러한 세그멘테이션(segmentation)들은 추가 분할없이 예측 및 변환 프로세싱에 사용된다. 이는 CU, PU 및 TU가 QTBT 코딩 블록 구조에서 동일한 블록 크기를 가짐을 의미한다. JEM에서, CU는 일부 경우에는 서로 다른 컬러 성분의 코딩 블록(CB)으로 구성되고, 예를 들어, 4 : 2 : 0 크로마 포맷의 P 및 B 슬라이스의 경우 하나의 CU는 하나의 루마 CB와 두 개의 크로마 CB를 포함하고, 일부 경우에는 단일 성분의 CB로 구성되며, 예를 들어, I 슬라이스의 경우 하나의 CU는 하나의 루마 CB 만 포함하거나 두 개의 크로마 CB 만 포함한다.
QTBT 분할 방안에 대해 다음과 같은 파라미터가 정의된다.
-CTU 크기 : HEVC에서와 동일한 개념인 쿼드트리의 루트 노드(root node) 크기.
-MinQTSize : 최소 허용 쿼드트리 리프 노드 크기;
-MaxBTSize : 최대 허용 이진 트리 루트 노드 크기;
-MaxBTDepth : 최대 허용 이진 트리 깊이;
-MinBTSize : 최소 허용 이진 트리 리프 노드 크기.
QTBT 분할 구조의 일 예에서, CTU 크기는 128×128 루마 샘플과 함께 두 개의 대응하는 64×64 블록의 크로마 샘플(4 : 2 : 0 크로마 포맷)로 설정되며, MinQTSize는 16x16로 설정되고, MaxBTSize는 64x64로 설정되고, MinBTSize (너비와 높이 모두에 대해)는 4x4로 설정되고, MaxBTDepth는 4로 설정된다. 쿼드트리 분할은 먼저 CTU에 적용되어 쿼드트리 리프 노드를 생성한다. 쿼드트리 리프 노드는 16x16(즉, MinQTSize)로부터 128x128(즉, CTU 크기)까지의 크기를 가질 수 있다. 쿼드트리 리프 노드가 128x128일 경우, 크기가 MaxBTSize(즉, 64x64)를 초과하므로 이진 트리에 의해 더 분할되지 않는다. 그렇지 않으면, 쿼드트리 리프 노드는 이진 트리에 의해 더 분할될 수 있다. 따라서 쿼드트리 리프 노드는 이진 트리의 루트 노드이기도 하며 이진 트리 깊이는 0이다. 이진 트리 깊이가 MaxBTDepth(즉, 4)에 도달하면, 분할을 더 이상 고려하지 않는다. 이진 트리 노드의 너비가 MinBTSize(즉, 4)와 같으면, 수평 분할을 더 이상 고려하지 않는다. 이와 유사하게, 이진 트리 노드의 높이가 MinBTSize와 같으면, 수직 분할을 더 이상 고려하지 않는다. 이진 트리의 리프 노드는 추가 분할없이 예측 및 변환 처리에 의해 추가로 처리된다. JEM에서 최대 CTU 크기는 256Х256 루마 샘플이다.
도 4는 QTBT 방안을 사용하여 블록을 분할하는 일 예와 대응하는 트리 표현을 나타낸다. 실선은 쿼드트리 분할을 나타내고 점선은 이진 트리 분할을 나타낸다. 도 4에 도시된 바와 같이, 코딩 트리 단위(400, CTU)는 먼저 쿼드트리 구조에 의해 분할되고, 4 개의 쿼드트리 리프 노드(402, 404, 406, 408) 중 3 개는 쿼드트리 구조 또는 이진 트리 구조에 의해 더 분할된다. 예를 들어, 쿼드트리 리프 노드(406)는 쿼드트리 분할에 의해 더 분할되고, 쿼드트리 리프 노드(404)는 이진 트리 분할에 의해 2 개의 리프 노드(404a, 404b)로 더 분할되고, 쿼드트리 리프 노드(402)는 또한 이진 트리 분할에 의해 더 분할된다. 이진 트리의 각 분할(즉, 리프가 아닌) 노드에서,하나의 플래그가 시그널링되어 어떠한 분할 타입(즉, 수평 또는 수직)이 사용되었는지 가리킬 수 있으며, 0은 수평 분할을 가리키고 1은 수직 분할을 가리킨다. 예를 들어, 쿼드트리 리프 노드(404)의 경우, 수평 분할을 나타내기 위해 0이 시그널링되고, 쿼드트리 리프 노드(402)의 경우, 수직 분할을 나타내기 위해 1이 시그널링된다. 쿼드트리 분할의 경우 분할 타입을 표시할 필요가 없다. 이는 쿼드트리 분할은 항상 블록을 수평 및 수직으로 분할하여 동일한 크기의 4 개의 서브-블록을 생성하기 때문이다.
또한, QTBT 방안은 루마와 크로마가 별도의 QTBT 구조를 가질 수 있도록 지지한다. 현재 P 및 B 슬라이스의 경우, 하나의 CTU의 루마 및 크로마 CTB는 동일한 QTBT 구조를 공유한다. 그러나 I 슬라이스의 경우, 루마 CTB는 QTBT 구조에 의해 CU로 분할되고, 크로마 CTB는 다른 QTBT 구조에 의해 크로마 CU로 분할된다. 이는 I 슬라이스의 CU는 루마 성분의 코딩 블록 또는 두 개의 크로마 성분의 코딩 블록으로 구성되며, P 또는 B 슬라이스의 CU는 세 가지 컬러 성분 모두의 코딩 블록으로 구성됨을 의미한다.
공동 비디오 전문가 팀(JVET) 회의에서 JVET는 다용도 비디오 코딩(VVC) 및 VVC 테스트 모델(VTM1) 인코딩 방법의 제 1드래프트을 정의하였다. VVC의 초기 새로운 코딩 특징으로 이진 및 삼진(ternary) 분할 코딩 블록 구조를 사용하여 중첩된 멀티-타입 트리가 있는 쿼드트리를 포함하기로 결정하였다.
VVC에서 픽처 분할 구조는 입력 비디오를 코딩 트리 단위(CTU)라고 하는 블록으로 분할한다. CTU는 중첩된 멀티-타입 트리 구조를 갖는 쿼드 트리를 사용하여 코딩 단위(CU)로 분할되며, 리프 코딩 단위(CU)는 동일한 예측 모드(예를 들어, 인트라 또는 인터)를 공유하는 영역을 정의한다. 여기서 "단위(unit)"라는 용어는 모든 성분들을 커버하는 이미지의 영역을 정의한다. "블록"이라는 용어는 특정 성분(예를 들어, 루마)을 포함하는 영역을 정의하는데 사용되며, 4 : 2 : 0과 같은 크로마 샘플링 포맷을 고려할때 공간 위치가 다를 수 있다.
픽처를 CTU로 분할
도 5는 본 개시의 일부 구현 방식들에 따른픽처를 CTU로 분할하는 일 예를 도시하는 개략도이다.
VVC에서, 픽처는 CTU들의 시퀀스로 분할되며, CTU 개념은 HEVC와 동일하다. 세 개의 샘플 어레이가 있는 픽처의 경우, CTU는 루마 샘플들의 NХN 블록과 함께 두 개의 대응하는 크로마 샘플 블록들로 구성된다. 도 5는 CTU(502)로 분할된 픽처(500)의 예를 도시한다.
CTU에서의 루마 블록의 최대 허용 크기는 128Х128로 지정된다(루마 변환 블록의 최대 크기는 64Х64).
트리 구조를 사용하여 CTU 분할
도 6은 본 개시의 일부 구현 방식들에 따른 멀티-타입 트리 분할 모드(multi-type tree splitting mode)를 도시하는 개략도이다.
HEVC에서, CTU는 다양한 로컬 특성에 적응하기 위해 코딩 트리로 표시된 쿼터너리-트리 구조를 사용하여 CU로 분할된다. 인터-픽처(시간적) 를 사용하여 픽처 영역을 코딩할지 아니면 인트라-픽처(공간적) 예측을 사용하여 픽처 영역을 코딩할지는 CU 레벨에서 결정된다. 각 리프 CU는 PU 분할 타입에 따라 1 개, 2 개 또는 4 개의 PU로 더 분할될 수 있다. 하나의 PU 내부에서는 동일한 예측 프로세스가 적용되고, 관련 정보는 PU를 기반으로 디코더로 전송된다. PU 분할 타입을 기반으로 예측 프로세스를 적용하여 잔차 블록을 획득한 다음, CU에 대한 코딩 트리와 유사한 다른 쿼드트리 구조에 따라 리프 CU는 변환 단위(TU)로 분할될 수 있다. HEVC 구조의 주요 특징 중 하나는 CU, PU 및 TU를 포함한 다중 분할 개념을 가지고 있다는 것이다.
VVC에서, 이진 및 삼진 분할 세그멘테이션(segmentation) 구조를 사용하는 중첩된 멀티-타입 트리를 갖는 쿼드트리는 멀티 분할 단위 타입의 개념을 대체한다. 즉, 최대 변환 길이에 대하여 너무 큰 크기를 가진 CU를 제외하고 CU, PU 및 TU 개념의 구분을 제거하고 분할 형상에 대하여 더 많은 유연성을 지원한다. 코딩 트리 구조에서 CU는 정사각형 또는 직사각형 형상을 가질 수 있다. 먼저, 코딩 트리 단위(CTU)는 먼저 쿼터너리 트리(즉, 쿼드 트리) 구조에 의해 분할된다. 다음, 쿼터너리 트리 리프 노드는 멀티-타입 트리 구조에 의해 더 분할될 수 있다. 도 6에 도시된 바와 같이, 멀티-타입 트리 구조에는 수직 이진 분할(602)(SPLIT_BT_VER), 수평 이진 분할(604)(SPLIT_BT_HOR), 수직 삼진 분할(606)(SPLIT_TT_VER) 및 수평 삼진 분할(608)(SPLIT_TT_HOR)과 같은 네 가지 분할 타입이 있다. 멀티-타입 트리 리프 노드를 CU(코딩 단위)라고 하며, CU가 최대 변환 길이에 대하여 너무 크지 않은 이상, 이러한 세그멘테이션은 추가 분할없이 예측 및 변환 프로세싱에 사용된다. 이는, 대부분의 경우, CU, PU 및 TU는 중첩된 멀티-타입 트리 코딩 블록 구조를 갖는 쿼드트리에서 동일한 블록 크기를 가짐을 의미한다. 최대 지원 변환 길이가 CU 컬러 성분의 너비 또는 높이보다 작은 경우 예외가 발생한다. VTM1에서, CU는 서로 다른 컬러 성분의 코딩 블록(CB)들로 구성된다. 예를 들어, 하나의 CU는 하나의 루마 CB와 두 개의 크로마 CB를 포함된다(비디오가 모노크롬, 즉 하나의 컬러 성분만 포함하는 경우는 제외).
CU를 복수의 예측 단위로 분할
VVC에서, 상술한 구조에 따라 분할된 각 CU에 대해 블록 콘텐츠의 예측은 전체 CU 블록에 대해 수행되거나 다음 단락에서 설명하는 서브-블록 방식으로 수행될 수 있다. 이러한 예측의 동작 단위를 예측 단위(또는 PU)라고 한다.
인트라 예측(또는 인트라-프레임 예측)의 경우, 일반적으로 PU의 크기는 CU의 크기와 동일하다. 다시 말해서, 전체 CU 블록에 대해 예측이 수행된다. 인터 예측(또는 인터-프레임 예측)의 경우, PU의 크기는 CU의 크기보다 작거나 같을 수 있다. 다시 말해서, CU가 예측을 위해 여러 PU로 분할될 수 있는 경우가 존재한다.
CU 크기보다 작은 PU 크기를 갖는 일부 예들로는 아핀 예측 모드, ATMVP(Advanced Temporal Level Motion Vector Prediction) 모드, 삼각형 예측 모드 등이 포함된다.
아핀 예측 모드에서, CU는 예측을 위해 복수 개의 4x4 PU로 분할될 수 있다. 각 4x4 PU에 대해 움직임 벡터를 도출될 수 있으며, 4x4 PU에 따라 움직임 보상을 수행할 수 있다. ATMVP 모드에서, CU는 예측을 위해 하나 또는 복수 개의 8x8 PU로 분할 될 수 있다. 각 8x8 PU에 대해 움직임 벡터를 도출될 수 있으며, 8x8 PU에 따라 움직임 보상을 수행할 수 있다. 삼각형 예측 모드에서 CU는 두 개의 삼각형 형상 예측 단위로 분할될 수 있다. 각 PU에 대해 움직임 벡터가 도출되고, 그에 따라 움직임 보상이 수행된다. 인터 예측을 위해 삼각형 예측 모드가 지원된다. 이하 삼각형 예측 모드를 더욱 상세히 설명한다.
삼각형 예측 모드
도 7은 본 개시의 일부 구현 방식들에 따른 CU를 삼각형 예측 단위로 분할하는 것을 도시하는 개략도이다.
삼각형 예측 모드의 개념은 움직임 보상 예측을 위해 삼각형 파티션을 도입하는 것이다. 도 7에 도시된 바와 같이, CU(702, 704)는 대각선 또는 역 대각선 방향으로 두 개의 삼각형 예측 단위 PU1 및 PU2로 분할된다(즉, 좌측 상단 모서리에서 우측 하단 모서리로 분할하거나 우측 상단 모서리에서 좌측 하단 모서리로 분할). CU의 각 삼각형 예측 단위는 일방향-예측 후보 리스트(uni-prediction candidate list)로부터 도출된 자체 일방향-예측 움직임 벡터(uni-prediction motion vector)와 참조 프레임 인덱스를 사용하여 인터-예측된다. 삼각형 예측 단위를 예측한 다음, 대각선 엣지에 대하여 적응 가중치 처리를 수행한다. 그 다음 변환 및 양자화 프로세스가 전체 CU에 적용된다. 유의해야 할 점은, 이 모드는 현재 VVC에서 스킵 및 병합 모드에만 적용된다. 도 7에서 CU는 정사각형 블록으로 도시되지만, 삼각형 예측 모드는 정사각형이 아닌(즉, 직사각형) 형상 CU에도 적용될 수 있다.
일방향-예측 후보 리스트는 하나 또는 그 이상의 후보를 포함할 수 있으며, 각 후보는 움직임 벡터일 수 있다. 따라서, 본 명세서 전반에 걸쳐 "일방향-예측 후보 리스트", "일방향-예측 움직임 벡터 후보 리스트" 및 "일방향-예측 병합 리스트"라는 용어는 상호 교환하여 사용될 수 있다.
일방향-예측 움직임 벡터 후보 리스트
도 8은 본 개시의 일부 구현 방식들에 따른 인접 블록들의 위치를 도시하는 개략도이다.
일부 예들에서, 일방향-예측 움직임 벡터 후보 리스트는 2개 내지 5 개의 일방향-예측 움직임 벡터 후보들을 포함할 수 있다. 일부 다른 예들에서, 다른 개수일 수도 있다. 이는 인접한 블록들로부터 도출된다. 일방향-예측 움직임 벡터 후보 리스트는 도 8에 도시 된 바와 같이 5 개의 공간적 인접 블록(1 내지 5)과 2 개의 시간적 동일 위치 블록(6 내지 7)을 포함하는 7 개의 인접 블록들로부터 도출된다. 7 개의 인접 블록들의 움직임 벡터는 제1 병합 리스트에 수집된다. 그 다음, 특정 순서에 따라 제1 병합 리스트 움직임 벡터들을 기반으로 일방향-예측 후보 리스트가 형성된다. 상기 순서에 기반하여, 먼저 제1 병합 리스트의 일방향-예측 움직임 벡터들을 일방향-예측 움직임 벡터 후보 리스트에 넣고, 다음은 양방향-예측 움직임 벡터들의 참조 픽처 리스트 0 또는 L0 움직임 벡터이며, 다음은 양방향-예측 움직임 벡터들의 참조 픽처 리스트 1 또는 L1 움직임 벡터이며, 다음은 양방향-예측 움직임 벡터들의 L0 및 L1 움직임 벡터들의 평균화 움직임 벡터들이다. 이때, 만약 후보 개수가 여전히 목표 개수(현재 VVC에서 5 개)보다 적으면 목표 개수를 충족하기 위하여, 제로 움직임 벡터들을 리스트에 추가한다.
삼각형 PU 각각에 대하여, 그들의 움직임 벡터를 기반으로 예측자가 도출된다. 도출된 예측자가 실제 삼각형 PU보다 더 큰 영역을 커버하므로 두 개의 삼각형 PU의 공유 대각선 엣지를 따라 두 예측자의 중첩된 영역이 존재한다는 점에 유의하여야 한다.두 예측자 사이의 대각선 엣지 영역에 적응 가중치 처리를 적용하여, CU에 대한 최종 예측을 도출할 수 있다. 현재 다음과 같이 두 세트의 가중치 인자들을 사용한다.
-제1 가중치 인자 세트 : 루미넌스(luminance) 및 크로미넌스(chrominance) 샘플들에 각각 {7/8, 6/8, 4/8, 2/8, 1/8} 및 {7/8, 4/8, 1/8}이 사용된다.
-제2 가중치 인자 세트 : 루미넌스 및 크로미넌스 샘플들에 각각 {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8} 및 {6/8, 4/8, 2/8}이 사용된다.
가중치 인자 세트의 선택은 두 개의 삼각형 예측 단위들의 움직임 벡터들의 비교를 기반으로 한다. 보다 구체적으로,두 개의 삼각형 예측 단위들의 참조 픽처들이 서로 다르거나 움직임 벡터 차이가 16 픽셀보다 큰 경우, 제2 가중치 인자 세트를 사용한다. 그렇지 않으면 제1 가중치 인자 세트를 사용한다. 도 9는 본 개시의 일부 구현들에 따라 가중치 인자 세트를 사용한 가중치 처리의 예를 도시한다. 도 9에 도시 된 바와 같이, 루미넌스 샘플(902) 및 크로미넌스 샘플(904)에 제 1 가중치 인자 세트가 사용된다.
삼각형 예측 모드 신택스 및 시그널링
현재 VVC에서, 삼각형 예측 모드는 삼각형 예측 플래그를 사용하여 시그널링된다. CU가 스킵 모드 또는 병합 모드로 코딩될 경우, 이러한 플래그는 시그널링된다. 주어진 CU에 대해 플래그의 값이 1이면 대응하는 CU가 삼각형 예측 모드를 사용하여 코딩됨을 의미한다. 그렇지 않으면 CU는 삼각형 예측 모드가 아닌 다른 예측 모드를 사용하여 코딩된다.
현재 VVC 표준 드래프트에 따르면, 삼각형 예측 플래그는 스킵 모드 또는 병합 모드에서 조건부로 시그널링된다. 첫째, 삼각형 예측 도구 인에이블/디스에이블 플래그가 시퀀스 파라미터 세트(또는 SPS)에서 시그널링된다. 이 플래그가 참(true)인 경우에만 삼각형 예측 플래그가 CU 레벨에서 시그널링된다. 둘째, 삼각형 예측 도구는 B 슬라이스에서만 허용된다. 따라서, B 슬라이스에서만 삼각형 예측 플래그가 CU 레벨에서 시그널링된다. 셋째, 삼각형 예측 모드는 크기가 특정 임계 값보다 크거나 같은 CU에 대해서만 시그널링된다. CU의 크기가 해당 임계 값보다 작은 경우 삼각형 예측 플래그는 시그널링되지 않는다. 넷째, 삼각형 예측 플래그는 CU가 아핀 예측 모드와 ATMVP 모드를 모두 포함하는 서브 블록 병합 모드에서 코딩되지 않은 경우의 CU에 대해서만 시그널링된다. 위에 나열된 네 가지 경우에서 삼각형 예측 플래그가 시그널링되지 않으면 디코더 측에서 0으로 추정한다. 일부 예들에서, 삼각형 예측 플래그는 비트스트림에서 명시적으로 시그널링되지 않는다. 대신, 삼각형 예측 모드는 다른 모든 병합 관련 모드가 디스에이블(disabled)된 것으로 시그널링될 경우 인에이블(enabled)된 것으로 추정된다.
현재 VVC 표준 드래프트에 따르면, 삼각형 예측 플래그가 시그널링될 경우 특정 컨텍스트를 갖는 CABAC 엔트로피 코더를 사용하여 시그널링된다. 컨텍스트는 도 10에 도시된 바와 같이 인접 블록들의 삼각형 예측 플래그 값에 기반하여 형성되며, 도 10은 본 개시의 일부 구현 방식들에 따른 삼각형 예측 플래그를 코딩하기 위한 컨텍스트 도출을 도시하는 개략도이다.된다.
도 10에 도시된 바와 같이, 현재 블록(1000)(또는 현재 CU)에 대한 삼각형 예측 플래그를 코딩(즉, 인코딩 또는 디코딩)하기 위하여, 상단 블록(1004) 및 좌측 블록(1002)(또는 상단 및 왼쪽 CU )으로부터의 삼각형 예측 플래그가 도출되고 이들의 값이 합산된다. 그 결과 다음과 같은 경우에 대응하는 세 가지 가능한 컨텍스트가 생성된다.
1) 좌측 블록과 상단 블록 모두 0의 삼각형 예측 플래그를 갖는다.
2) 좌측 블록과 상단 블록 모두 1의 삼각형 예측 플래그를 갖는다.
3) 기타.
세 가지 컨택스트 각각에 대해 별도의 확률이 유지된다. 현재 블록에 대한 컨텍스트 값이 결정되면, 현재 블록의 삼각형 예측 플래그는 이 컨텍스트 값에 대응하는 CABAC 확률 모델을 사용하여 코딩된다.
만약 삼각형 예측 플래그가 참(true)일 경우, 삼각형 예측 모드와 관련된 테이블 인덱스 값을 더 시그널링한다. 이 인덱스 값을 사용하여 다음 정보를 얻을 수 있다.
1) 삼각형 예측 분할 방향, 즉 블록이 좌측 상단 모서리에서 우측 하단 모서리로 분할되는지 아니면 우측 상단 모서리에서 좌측 하단 모서리로 분할되는지,
2) 두 파티션 각각에 대한 일방향-예측 움직임 벡터 후보 리스트의 움직임 벡터.
보다 구체적으로, 이는 테이블 1과 같은 삼각형 예측 병합 리스트 인덱스 시그널링 테이블을 사용하는 테이블 조회 연산을 통해 달성된다. 현재 VVC 참조 소프트웨어 VTM에서, 이 테이블은 크기가 40×3인 어레이이며, 다음과 같이 정의된다.
테이블 1. 삼각형 예측 병합 리스트 인덱스 시그널링 테이블
g_triangleCombination[40][3] = {
{ 0, 1, 0 }, { 1, 0, 1 }, { 1, 0, 2 }, { 0, 0, 1 }, { 0, 2, 0 },
{ 1, 0, 3 }, { 1, 0, 4 }, { 1, 1, 0 }, { 0, 3, 0 }, { 0, 4, 0 },
{ 0, 0, 2 }, { 0, 1, 2 }, { 1, 1, 2 }, { 0, 0, 4 }, { 0, 0, 3 },
{ 0, 1, 3 }, { 0, 1, 4 }, { 1, 1, 4 }, { 1, 1, 3 }, { 1, 2, 1 },
{ 1, 2, 0 }, { 0, 2, 1 }, { 0, 4, 3 }, { 1, 3, 0 }, { 1, 3, 2 },
{ 1, 3, 4 }, { 1, 4, 0 }, { 1, 3, 1 }, { 1, 2, 3 }, { 1, 4, 1 },
{ 0, 4, 1 }, { 0, 2, 3 }, { 1, 4, 2 }, { 0, 3, 2 }, { 1, 4, 3 },
{ 0, 3, 1 }, { 0, 2, 4 }, { 1, 2, 4 }, { 0, 4, 2 }, { 0, 3, 4 },
};
이 2 차원 어레이에는 40 개의 행과 3 개의 열이 있다. 첫 번째 열의 값은 분할 방향을 나타내며, 0은 하나의 분할 방향을 나타내고 1은 다른 분할 방향을 나타낸다. 두 번째 및 세 번째 열의 값은 각각 두 파티션( 예를 들어, 두 개의 삼각형 파티션)에 대한 일방향-예측 움직임 벡터 후보 리스트에서의 대응하는 일방향-예측 움직임 벡터를 가리키는 인덱스 값이다. 앞서 설명한 바와 같이, 현재 VVC 표준 드래프트에 따르면 일방향-예측 움직임 벡터 후보 리스트에는 2~5 개의 일방향-예측 움직임 벡터가 포함된다. 인덱스 값은 이 목록에서의 어느 움직임 벡터가 대응하는 삼각형 파티션에 사용되는지를 나타낸다.
삼각형 예측 모드에서, 시그널링되는 테이블 인덱스 값의 범위는 0부터 39까지이다. 인덱스 값이 디코딩되면, 위의 테이블에 따라 3 개의 숫자가 포함된 데이터 행을 조회하는데 사용할 수 있다. 이러한 세 개의 숫자는 삼각형 예측 분할 방향 및 삼각형 파티션들의 두 움직임 벡터들 각각에 대한 일방향-예측 병합 리스트의 병합 리스트 인덱스 값을 가리킨다.
현재 VVC 표준 드래프트에서, 삼각형 예측 모드를 확장 및/또는 단순화하기 위하여, 삼각형 PU의 아이디어는 본 개시의 일부 구현들에 따른 PU 파티션들의 예를 도시하는 도 11에 도시된 바와 같은 예측 단위들의 다른 파티션들로 확장될 수 있다. 두 개의 대각선 삼각형 PU 파티션 외에도, 삼각형 예측 모드에서 사용되는 방법 또는 개념은 다른 PU 파티션들에 적용될 수 있다. 기본적으로, 도 11에 도시된 파티션 유형이 주어질 경우, 각 파티션 (예를 들어, PU0 및 PU1)에 대해 두 개의 일방향 예측자가 도출되고 적응 가중치 처리를 두 파티션의 경계 영역 주위에 적용한다. 예를 들어, 삼각형 PU에 사용되는 방법은 수평 및/또는 수직 PU에 적용될 수 있다.
일반 병합 모드 움직임 벡터 후보 리스트
현재 VVC에 따르면, 하나 이상의 PU로 분할하지 않고 전체 CU를 예측하는 일반 병합 모드에서는 삼각형 예측과 다른 절차를 사용하여 움직임 벡터 후보 리스트 또는 병합 후보 리스트를 구성한다.
먼저, 공간적 움직임 벡터 후보는 도 12에 도시 된 바와 같이 인접 블록들의 움직임 벡터들을 기반으로 선택되되, 도 12는 본 개시의 일부 구현 방식들에 따른 공간적 병합 후보들(spatial merge candidates)의 위치를 도시하는 개략도이다. 공간적 병합 후보의 도출에서, 도 12에 도시된 바와 같은 위치에 위치한 후보들 중에서 최대 4 개의 병합 후보를 선택한다. 도출 순서는 A1 -> B1 -> B0 -> A0 -> (B2)이다. 위치 B2는 위치 A1, B1, B0, A0의 PU를 사용할 수 없거나 인트라 코딩된 경우에만 고려된다.
다음으로, 시간적 병합 후보를 도출한다. 시간적 병합 후보의 도출에서, 스케일링된 움직임 벡터는 주어진 참조 픽처 리스트내에서 현재 픽처와 가장 작은 픽처 오더 카운트(Picture Order Coutn, POC) 차이를 갖는 픽처에 속하는 동일 위치 PU를 기반으로 도출된다. 동일 위치 PU의 도출에 사용될 참조 픽처 리스트는 슬라이스 헤더에서 명시적으로 시그널링된다. 시간적 병합 후보에 대한 스케일링된 움직임 벡터는 도 13의 점선으로 도시된 바와 같이 획득되되, 도 13은 본 개시의 일부 구현 방식들에 따른 시간적 병합 후보에 대한 움직임 벡터의 스케일링을 도시하는 개략도이다. 시간적 병합 후보에 대한 스케일링된 움직임 벡터는 POC 거리 tb 및 td를 사용하여 동일 위치 PU (col_PU)의 움직임 벡터로부터 스케일링되며, 여기서 tb는 현재 픽처 (curr_pic)의 참조 픽처 (curr_ref)와 현재 픽처 (curr_pic)사이의 POC 차이로 정의되고, td는 동일 위치 픽처(col_pic)의 참조 픽처(col_ref)와 동일 위치 픽처 (col_pic) 사이의 POC 차이로 정의된다. 시간적 병합 후보의 참조 픽처 인덱스는 0으로 설정된다. 스케일링 프로세스의 실제 실현은 HEVC 드래프트 사양에 설명되어 있다. B- 슬라이스의 경우, 2 개의 움직임 벡터(하나는 참조 픽처 리스트 0에 대한 것이고, 다른 하나는 참조 픽처 리스트 1에 대한 것이다)를 획득하여 결합하여 양방향-예측 병합 후보가 된다.
도 14는 본 개시의 일부 구현 방식들에 따른 시간적 병합 후보의 후보 위치들을 도시하는 개략도이다.
동일 위치 PU의 위치는 도 14에 도시된 바와 같이 두 후보 위치인 C3 및 H 사이에서 선택된다. 위치 H의 PU가 사용 가능하지 않거나 인트라 코딩되거나 현재 CTU 외부에 있는 경우, 위치 C3이 시간적 병합 후보의 도출에 사용된다. 그렇지 않으면, 위치 H가 시간적 병합 후보의 도출에 사용된다.
상술한 바와 같이 공간적 움직임 벡터들와 시간적 움직임 벡터들을 병합 후보 리스트에 삽입한 후, 히스토리 기반 병합 후보를 추가한다. 소위 히스토리 기반 병합 후보에는 별도의 움직임 벡터 목록에서 유지되고 특정 규칙에 따라 관리되는 이전에 코딩된 CU들의 움직임 벡터들이 포함된다.
히스토리 기반 후보를 삽입한 후, 병합 후보 리스트가 가득 차지 않았을 경우 쌍을 이루는 평균화 움직임 벡터 후보가 리스트에 추가된다. 이름에서 알 수 있듯이, 이 유형의 후보는 현재 리스트에 이미 있는 후보를 평균화하여 구성된다. 보다 구체적으로, 특정 순서에 따라 매번 병합 후보 리스트에서 두 후보를 취하고 두 후보의 평균화 움직임 벡터를 현재 리스트에 추가한다.
현재 VVC에 따르면, 다음과 같은 움직임 벡터 페어링 순서를 사용하여 평균화 움직임 벡터 후보를 도출하기 위하여 매번 리스트에서 어떤 두 후보를 선택하는지 결정할 수 있다.
{0, 1} -> {0, 2} -> {1, 2} -> {0, 3} -> {1, 3} -> {2, 3}.
각 쌍의 괄호 내의 두 값은 병합 후보 리스트내의 움직임 벡터 후보들의 두 인덱스 값을 가리킨다. 따라서, 제1 평균화 움직임 벡터 후보는 병합 후보 리스트내의 움직임 벡터 후보 0과 움직임 벡터 후보 1을 평균화하여 생성된다. 이와 같이 제 2 평균화 움직임 벡터 후보는 병합 후보 리스트내의 움직임 벡터 후보 0과 움직임 벡터 후보 2를 평균화하여 생성된다.
쌍을 이루는 평균 움직임 벡터를 삽입한 후, 병합 후보 목록이 아직도 가득 차지 않을 경우, 제로 움직임 벡터를 추가하여 리스트를 가득 채운다.
움직임 벡터 차이가 있는 병합 모드(Merge Mode with Motion Vector Difference, MMVD)/최종 움직임 벡터 표현(Ultimate Motion Vector Expression, UMVE)
최종 움직임 벡터 표현(UMVE)은 VVC에서 채택되고 참조 소프트웨어 VTM에 통합되었다. UMVE는 나중에 MVD가 있는 병합 모드(Merge Mode with Motion Vector Difference, MMVD)로 재명명된다. 제안된 움직임 벡터 표현 방법으로, MMVD는스킵 모드 또는 병합 모드에 사용된다.
MMVD는 VVC에서와 동일한 방식으로 병합 후보를 재사용한다. 병합 후보들로부터 후보를 선택할 수 있으며 제안된 움직임 벡터 표현 방법에 의해 더 확장된다.
MMVD는 간단한 시그널링으로 새로운 움직임 벡터 표현을 제공한다. 표현 방법은 시작점, 움직임 폭, 움직임 방향을 포함한다.
제안된 기법은 병합 후보 리스트를 그대로 사용한다. 그러나 기본 병합 유형(MRG_TYPE_DEFAULT_N)인 후보만 MMVD의 확장에 고려된다.
베이스 후보 인덱스(IDX)는 시작점을 정의한다. 베이스 후보 인덱스는 아래 테이블의 후보 중의 최적 후보를 나타낸다.
테이블 2. 베이스 후보 IDX
베이스 후보 IDX 0 1 2 3
N th MVP 1st MVP 2nd MVP 3rd MVP 4th MVP
만약 베이스 후보의 수가 1 이면, 베이스 후보 IDX는 시그널링되지 않는다.거리 인덱스는 움직임 폭 정보이다. 거리 인덱스는 시작점부터의 소정의 거리를 나타낸다. 소정의 거리는 다음과 같다.
테이블 3. 거리 IDX
거리 IDX 0 1 2 3 4 5 6 7
픽셀 거리 1/4-pel 1/2-pel 1-pel 2-pel 4-pel 8-pel 16-pel 32-pel
방향 인덱스는 시작점에 대한 MVD의 방향을 나타낸다. 방향 인덱스는 아래 테이블과 같이 네 방향을 나타낼 수 있다.
테이블 4. 방향 IDX
방향 IDX 00 01 10 11
x-축 + - N/A N/A
y-축 N/A N/A + -
MMVD 플래그는 스킵 플래그와 병합 플래그를 전송한 직후에 시그널링된다. 스킵 및 병합 플래그가 참(true)이면, MMVD 플래그가 파싱된다. MMVD 플래그가 1이면, MMVD 신택스가 파싱된다. 그렇지 않으면 아핀 플래그(AFFINE flag)가 파싱된다. 아핀 플래그가 1이면, 아핀 모드가 가리키게 된다. 그렇지 않으면VTM의 스킵/병합 모드에 대하여 스킵/병합 인덱스가 파싱된다.
연합 인터 및 인트라 예측(Combined Inter and Intra Prediction, CIIP)
VTM에서, CU가 병합 모드로 코딩될 경우, 만약CU가 적어도 64 개의 루마 샘플(즉, CU 너비에 CU 높이를 곱하면 64보다 크거나 같음)들을 포함하면, 추가 플래그가 시그널링되어 연합 인터/인트라 예측(CIIP) 모드가 현재 CU에 적용되는지 여부를 나타낸다.
CIIP를 형성하기 위하여, 먼저 두 개의 추가적인 신택스 요소들로부터 인트라 예측 모드가 도출된다. DC, 평면, 수평 또는 수직과 같은 최대 4 개의 가능한 인트라 예측 모드를 사용할 수 있다. 다음, 인터 예측 및 인트라 예측 신호들은 일반 인트라 및 인터 디코딩 프로세스를 사용하여 도출된다. 마지막으로,인터 및 인트라 예측 신호들의 가중치 평균화가 수행되어 CIIP 예측을 획득할 수 있다.
인트라 예측 모드의 도출에서는, DC, 평면(PLANAR), 수평(HORIZONTAL), 수직(VERTICAL) 모드를 포함하여 최대 4 개의 인트라 예측 모드를 사용하여 CIIP 모드에서 루마 성분을 예측할 수 있다. CU 형상이 매우 넓은 경우(즉, 너비가 높이의 두 배 이상), 수평 모드가 허용되지 않는다. CU 모양이 매우 좁은 경우(즉, 높이가 너비의 두 배 이상), 수직 모드가 허용되지 않는다. 이 경우 3 개의 인트라 예측 모드만 허용된다.
CIIP 모드는 인트라 예측을 위해 3 가지 가장 가능성 있는 모드(Most Probable Mode, MPM)를 사용한다. CIIP MPM 후보 리스트는 다음과 같이 구성된다.
좌측 및 상단 인접 블록들은 각각 A와 B로 설정된다.
각각 intraModeA 및 intraModeB로 표시되는 블록 A 및 블록 B의 인트라 예측 모드는 다음과 같이 도출된다:
i. X를 A 또는 B라고 함;
ii. 1) 블록 X를 사용할 수 없는 경우, 또는 2) 블록 X가 CIIP 모드 또는 인트라 모드를 사용하여 예측되지 않는 경우, 3) 블록 X가 현재 CTU 밖에 있는경우, intraModeX는 DC로 설정된다;
iii. 그렇지 않으면, 1) 블록 X의 인트라 예측 모드가 DC 또는 평면이면 intraModeX는 DC 또는 평면으로 설정되고, 또는 2) 블록 X의 인트라 예측 모드가 "수직과 유사한"각도 모드(34보다 큼)이면 intraModeX는 수직으로 설정되며, 또는 3) 블록 X의 인트라 예측 모드가 "수평과 유사한"각도 모드(34보다 작거나 같음)이면intraModeX는 수평으로 설정된다;
intraModeA와 intraModeB가 동일한 경우 :
i. intraModeA가 평면 또는 DC이면 3 개의 MPM이 {평면, DC, 수직}의 순서로 설정된다.
ii. 그렇지 않으면 3 개의 MPM이 {intraModeA, 평면, DC}의 순으로 설정된다.
그렇지 않은 경우(intraModeA 및 intraModeB는 다름) :
i. 처음 두개의 MPM은 {intraModeA, intraModeB}의 순으로 설정된다.
ii. 평면, DC 및 수직의 고유성은 처음 두개의 MPM 후보 모드에 대해 순서대로 확인된다. 고유 모드가 발견되는 즉시 세번째 MPM으로 추가된다.
만약 CU 형상이 위에서 정의한 바와 같이 매우 넓거나 매우 좁다면, MPM 플래그는 시그널링없이 1로 추정된다. 그렇지 않으면, MPM 플래그는 시그널링되어 CIIP 인트라 예측 모드가 CIIP MPM 후보 모드들 중의 하나인지를 여부를 가리킨다.
MPM 플래그가 1 인 경우, MPM 인덱스가 추가 시그널링되어 MPM 후보 모드들 중의 어느 하나가CIIP 인트라 예측에 사용되는 지를 가리킨다. 그렇지 않고, MPM 플래그가 0이면,인트라 예측 모드는MPM 후보 리스트에서"누락"모드로 설정된다. 예를 들어, 평면 모드가 MPM 후보 리스트에 없는 경우, 평면 모드는 누락된 모드이고 인트라 예측 모드는 평면으로 설정된다. CIIP에서는 4 가지 가능한 인트라 예측 모드가 허용되고 MPM 후보 리스트에는 3 개의 인트라 예측 모드만 포함되어 있으므로, 가능한 4 가지 모드 중 하나는 반드시 누락 모드여야 한다.
크로마 성분들의 경우, DM 모드는 항상 추가 시그널링없이 적용된다. 즉, 크로마는 루마와 동일한 예측 모드를 사용한다. 이 예에서 크로마 인트라 예측 모드는 루마 성분에 대한 인트라 예측 모드를 직접 재사용한다. 따라서 도출 모드 또는 DM 모드라고 한다.
CIIP 코딩된 CU의 인트라 예측 모드는 저장되어 추후 인접 CU의 인트라 모드 코딩에 사용된다.
인터 예측 신호와 인트라 예측 신호를 결합하기 위해, CIIP 모드중의 인터 예측 신호(P_inter)는 일반 병합 모드에 적용된 것과 동일한 인터 예측 프로세스를 사용하여 도출되며, 인트라 예측 신호(P_intra)는 일반 인트라 예측 프로세스에 다음에 CIIP 인트라 예측 모드를 사용하여 도출된다. 그 다음, 인트라 및 인터 예측 신호는 가중치 평균화를 사용하여 결합된다. 여기서 가중치 값은 인트라 예측 모드를 따르며, 샘플은 다음과 같이 코딩 블록에 위치한다.
인트라 예측 모드가 DC 또는 평면 모드이거나 블록 너비 또는 높이가 4보다 작은 경우, 동일한 가중치가 인트라 예측 및 인터 예측 신호에 적용된다.
그렇지 않으면, 가중치는 인트라 예측 모드(이 경우 수평 모드 또는 수직 모드) 및 블록 내 샘플 위치를 기반으로 결정된다. 수평 예측 모드를 예로 들면(수직 모드에 대한 가중치는 유사하게 도출되지만 직교 방향으로 도출 됨), W를 블록의 너비로 표시하고 H를 블록의 높이로 표시하면, 먼저 코딩 블록을 각각 (W/4)×H의 크기를 갖는 4 개의 등면적 부분으로 분할한다. 인트라 예측 참조 샘플에 가장 가까운 부분부터 시작하여 인트라 예측 참조 샘플에서 가장 먼 부분에서 끝나는 4 개 부분 또는 영역 각각에 대한 가중치 wt는 각각 6, 5, 3, 2로 설정된다. 다음과 같은 수식을 사용하여 최종 CIIP 예측 신호를 도출된다.
.
앞서 설명한 바와 같이, 삼각형 예측 병합 리스트 인덱스는 미리 정의 된 40×3 크기의 테이블 1을 기반으로 시그널링된다. 테이블의 첫 번째 열은 삼각형 분할 방향을 나타내고, 두 번째 및 세 번째 열은 CU의 두 개의 삼각형 예측 단위들 각각에 대한 일 방향-예측 움직임 벡터 후보 리스트에서 움직임 벡터 후보의 인덱스 값들을 나타낸다. 이 테이블은 인코더와 디코더 모두에 저장되어야 할 필요가 있다. 본 개시의 일부 예들에서, 테이블의 크기를 줄일 수 있음을 제안한다.
삼각형 분할 방향 및 병합 리스트 인덱스의 별도의 시그널링
삼각형 예측 병합 리스트 인덱스 시그널링을 위한 VVC에 정의된 현재 테이블 1은 데이터 트레이닝을 통해 도출될 수 있다. 이 테이블에서, 삼각형 분할 방향 및 병합 리스트 인덱스들은 시그널링을 위해 함께 그룹화된다. 이론상 하나의 삼각형 분할 방향이 항상 다른 삼각형 분할 방향보다 사용 가능성이 더 높지 않을 수 있다. 따라서, 본 개시에 기반하여, 삼각형 분할 방향의 시그널링은 병합 리스트 인덱스 시그널링으로부터 분리될 수 있다.
보다 구체적으로, 본 개시에 따르면, 삼각형 예측 모드에서, 예를 들어, 분할 방향 플래그 또는 삼각형 분할 방향 플래그라는 별도의 플래그를 시그널링하여 두 삼각형 분할 방향 중 어느 것이 사용되는지를 나타낼 수 있다. 일방향-예측 병합 리스트 또는 일방향-예측 움직임 벡터 후보 리스트 내의 선택된 엔트리를 가리키는 각 삼각형 파티션마다 하나씩 있는 두 개의 병합 리스트 인덱스 값들은 테이블 인덱스 값으로서 함께 시그널링된다.
예를 들어, 20x2 크기의 하기의 테이블 5를 사용하여 2 개의 삼각형 예측 단위들의 병합 리스트 인덱스 값들의 시그널링할 수 있다. 이 경우, 0에서 19까지의 테이블 인덱스 값을 시그널링 하여 두 개의 삼각형 파티션에 각각 어떤 병합 리스트 인덱스 값이 사용되는지를 가리킬 수 있다.
테이블 5. 단순화된 삼각형 예측 병합 리스트 인덱스 시그널링
g_triangleCombination[20][2] = {
{ 0, 1 }, { 1, 0 }, { 0, 2 }, { 2, 0 }, { 1, 2 },
{ 2, 1 }, { 0, 3 }, { 3, 0 }, { 1, 3 }, { 3, 1 },
{ 0, 4 }, { 4, 0 }, { 2, 3 }, { 3, 2 }, { 1, 4 },
{ 4, 1 }, { 2, 4 }, { 4, 2 }, { 3, 4 }, { 4, 3 }
};
위의 테이블은 하나의 예에 불과하다는 점에 유의해야 한다. 다른 조합 순서를 사용할 수도 있다.
또한, 삼각형 분할 방향 플래그와 테이블 인덱스 값 (병합 리스트 인덱스 조합을 나타냄)의 시그널링 순서도 달라질 수 있다는 점에 유의해야 한다. 즉, 삼각형 분할 방향 플래그는 테이블 인덱스 값 이전 또는 테이블 인덱스 값 이후에 시그널링될 수 있다.
본 발명의 다른 예에 따르면, 삼각형 분할 방향 플래그는 플래그가 0의 값과 1의 값을 가질 확률 (즉, 50% 확률)이 같다고 가정하여 간단히 코딩될 수 있다. 즉, 플래그는 항상 CABAC 바이패스 빈(bypass bin)으로 코딩될 수 있다.
따라서, 일부 예들에서, 방법은, 비디오 픽처들을 복수의 코딩 단위(CU)로 분할하되, 이들 중 적어도 하나는 좌측 상단 모서리에서 우측 하단 모서리로 및 우측 상단 모서리에서 좌측 하단 모서리로의 분할 방향중 하나를 가지는 적어도 하나의 삼각형 모양의 PU를 포함하는 2 개의 예측 단위(PU)로 추가로 분할되는 단계; 일방향-예측 움직임 벡터 후보 리스트를 구성하는 단계; 코딩된 정보에 따라 현재 CU가 삼각형 예측 모드로 코딩되는지 여부를 결정하는 단계; 분할 방향을 나타내는 분할 방향 플래그를 시그널링하는 단계; 및 구성된 일방향-예측 움직임 벡터 후보 리스트에서 선택된 엔트리를 가리키는 인덱스 값을 시그널링하는 단계를 포함한다.
병합 인덱스 값 및 분할 매핑(mapping)의 별도의 시그널링
메모리 요구량을 더욱 줄이기 위해, 본 발명의 다른 예에 따르면, 삼각형 예측 모드에서, 예를 들어 매핑 플래그라는 추가 플래그를 시그널링 하여 인덱스 값을 어떻게 두 개의 삼각형 파티션들에 분배되었는지 또는 두 인덱스 값과 두 삼각형 파티션간의 매핑 방안을 가리킬 수 있다.
보다 구체적으로,이 방법은 테이블 5에 표시된 요소들사이에 대칭성이 존재한다는 사실을 기반으로 한다. 예를 들어, 테이블에서 처음 두 행 {0, 1} 및 {1, 0}을 고려하면, 일방향-예측 병합 리스트에서 두 개의 삼각형 파티션에 분배되는 동일한 두 개의 움직임 벡터를 가리키지만, 서로 다른 대응관계를 가지고 있다. {0, 1}은 병합 리스트의 제1 움직임 벡터 후보가 제1 파티션에 분배되고 대응하는 병합 리스트의 제2 움직임 벡터 후보가 제2 파티션에 분배되었음을 나타낸다. {1, 0}은 병합 리스트의 제2 움직임 벡터 후보가 제1 파티션에 분배되고 대응하는 리스트의 제1 움직임 벡터 후보가 제2 파티션에 분배되었음을 나타낸다. 본 발명의 일부 예에 따르면, 이 두가지 경우는 두가지 경우를 구별하기 위해 시그널링되는 매핑 플래그와 함께 {0, 1}을 사용하여 시그널링될 수 있다.
테이블 6. 더 단순화된 삼각형 예측 병합 리스트 인덱스 시그널링
g_triangleCombination[10][2] = {
{ 0, 1 }, { 0, 2 }, { 1, 2 }, { 0, 3 }, { 1, 3 },
{ 0, 4 }, { 2, 3 }, { 1, 4 },{ 2, 4 }, { 3, 4 },
};
상술한 설명을 기반으로, 테이블은 10×2 크기의 테이블 6과 같이 더욱 단순화될 수 있다. 이 경우 0에서 9까지의 범위의 테이블 인덱스 값은 시그널링 되어 어느 병합 리스트 인덱스 값이 두 개의 삼각형 파티션에 사용되는 지를 가리킬 수 있다. 매핑 플래그는 테이블 인덱스 값과 함께 시그널링 된다. 예를 들어, 테이블 인덱스 값 0이 시그널링되면, 이는 {0, 1}을 기리키며, 병합 리스트의 제1 및 제2 움직임 벡터 후보가 사용됨을 의미한다. 매핑 플래그가 0이라면, 병합 리스트의 제1 움직임 벡터 후보가 제1 파티션에 분배되고 같은 리스트의 제2 움직임 벡터 후보가 제2 파티션에 분배되었음을 나타낼 수 있다. 반대로, 매핑 플래그가 1이면 병합 리스트의 제2 움직임 벡터 후보가 제1 파티션에 분배되고 같은 리스트의 제1 움직임 벡터 후보가 제2 파티션에 분배됨을 나타낼 수 있다.
상기 테이블은 하나의 예에 불과하다는 점에 유의해야 한다. 다른 조합 순서를 사용할 수 있다.
또한 매핑 플래그와 테이블 인덱스 값(병합 리스트 인덱스 조합을 나타냄)의 시그널링 순서도 달라질 수 있다는 점에 유의해야 한다. 즉, 매핑 플래그는 테이블 인덱스 값 이전 또는 테이블 인덱스 값 이후에 시그널링될 수 있다.
본 발명의 다른 예에 따르면, 매핑 플래그는 플래그가 0의 값과 1의 값을 가질 확률(즉, 50 % 확률)이 같다고 가정하여 간단하게 코딩될 수 있다. 즉, 플래그는 항상 CABAC 바이패스 빈으로 코딩될 수 있다.
쌍을 이루는 평균화 움직임 벡터를 가진 병합 리스트 인덱스 조합 테이블을 공유
앞서 설명한 바와 같이, 일반 병합 모드 움직임 벡터 후보 리스트를 생성하는 프로세스 동안, 쌍을 이루는 평균화 움직임 벡터를 생성할때 움직임 벡터 페어링 순서를 사용한다. 일 예로 제공한 움직임 벡터 페어링 순서는 다음과 같다.
{0, 1} -> {0, 2} -> {1, 2} -> {0, 3} -> {1, 3} -> {2, 3}.
본 발명의 다른 예에 따르면, 하나의 테이블 만이 정의될 수 있으며, 당해 테이블은 a) 일반 모드 쌍을 이루는 평균화 움직임 벡터 생성 및 b) 삼각형 예측 모드 병합 리스트 인덱스 시그널링 모두에 대하여 공유될 수 있다.
예를 들어, 테이블 6은 하기 테이블 7과 같이 더 수정되어 일반 모드 쌍을 이루는 평균화 움직임 벡터 생성에도 사용될 수 있다.
테이블 7. 공유 인덱스 조합
g_triangleCombination[10][2] = {
{ 0, 1 }, { 0, 2 }, { 1, 2 }, { 0, 3 }, { 1, 3 },
{ 2, 3 }, { 0, 4 }, { 1, 4 },{ 2, 4 }, { 3, 4 },
};
위의 테이블 7의 첫 6 개 엔트리는 이전에 설명한 움직임 벡터 페어링 순서의 엔트리와 동일함을 알 수 있다. 따라서 6 개의 연속 엔트리는 공유 섹션으로 간주될 수 있다.
전술한 다른 방면에서, 현재 VVC 표준 드래프트에 따르면, 삼각형 예측 플래그는 인접 블록의 삼각형 예측 플래그 값으로부터 도출된 컨텍스트에 기반하여 코딩된다. 그러나, 실제 비디오 콘텐츠의 경우, 삼각형 예측 모드 선택 측면에서 인접 블록 간의 상관 관계가 높지 않을 수 있다. 삼각형 예측 플래그를 코딩하는 것에 대하여 컨텍스트를 형성하는 몇 가지 대안적인 방법이 제안된다.
삼각형 예측 모드는 현재 비디오 코딩 표준에서 CIIP 모드를 선택한 경우에는 일반적으로 사용되지 않는다. CU에 대해 CIIP 모드가 선택되었는지 여부에 관계없이 현재 CU에 대한 삼각형 예측 플래그를 항상 시그널링하는 것은 효율적이지 않다.
또한, 현재 VVC 표준 드래프트에 따르면, MMVD 플래그가 참인지 아닌지에 관계없이 삼각형 예측 플래그가 시그널링 된다. MMVD 모드를 삼각형 예측 모드와 함께 사용하지 않을 경우, 시그널링을 상호 배타적으로 만들어 코딩 효율을 높일 수도 있다.
다른 컨텍스트를 사용하여 삼각형 예측 플래그 코딩
본 발명의 일부 예들에 따르면, 삼각형 예측 플래그가 현재 CU에 대해 코딩(인코딩 또는 디코딩)되어야 하는 경우, 컨텍스트는 CABAC 코딩을 위한 현재 VVC 표준 드래프트와 다르게 도출될 수 있다.
본 발명의 일부 예들에서, 컨텍스트는 CU 영역 크기(즉, CU 높이의 값에 CU 너비의 값을 곱한 값)에 기반하여 도출된다. 즉, 비슷한 크기의 CU는 동일한 컨텍스트를 공유할 수 있다.
본 발명의 일부 다른 예들에서, 컨텍스트는 CU 형상(즉, CU 너비에 대한 CU 높이의 비율)에 기반하여 형성된다. 예를 들어, 수평 방향의 직사각형 CU(즉, CU 너비가 CU 높이보다 큼)는 제1 컨텍스트를 공유할 수 있고, 수직 방향의 직사각형 CU(즉, CU 높이가 CU 너비보다 큼)는 제2 컨텍스트를 공유할 수 있으며, 정사각형 CU(즉, CU 높이와 CU 너비가 동일함)는 제3 컨텍스트를 공유할 수 있다.
다른 예에서, 수평 또는 수직 방향에 관계없이, 긴 변과 짧은 변의 비율이 유사한 직사각형 모양 CU는 하나의 컨텍스트를 공유하고 정사각형 모양 CU는 다른 컨텍스트를 공유한다. 이 경우, 복수개의 컨텍스트가 사용될 수 있으며, 각 컨텍스트는 CU 장변 대 CU 단변의 다른 비율 및/또는 CU 장변 대 CU 단변의 비율이 다른 범위에 대응될 수 있다. 예를 들어, CU 장변 대 CU 단변의 비율이 4보다 큰 CU에 대한 제 1 컨텍스트; CU 장변 대 CU 단변의 비율이 2보다 크지만 4보다 작은 CU에 대한 제 2 컨텍스트; CU 장변 대 CU 단변의 비율이 1.5보다 크지만 2보다 작은 CU에 대한 제3 컨텍스트; CU 장변 대 CU 단변의 비율이 1보다 크지만 1.5보다 작은 CU에 대한 제 4 컨텍스트; 및 정사각형 CU에 대한 제5 컨텍스트. 다른 구현방식도 가능할 수 있다.
본 발명의 또 다른 예에 따르면, 삼각형 예측 플래그는 CU 파라미터 및/또는 조건에 관계없이 항상 하나의 공통 컨텍스트를 사용하여 코딩된다.
CIIP 플래그에 대한 삼각형 예측 플래그 코딩
본 발명의 일부 예들에 따르면, CU에 대해 CIIP 예측 모드가 선택될 경우, 삼각형 예측 플래그가 CU에 대해 코딩되지 않을 수 있다. 따라서, CU에 대해 CIIP 예측 모드가 선택되지 않은 경우에만 삼각형 예측 플래그가 CU에 대해 시그널링될 수 있다. 삼각형 예측 플래그가 시그널링되지 않은 경우 디코더 측에서 이를 0으로 추정할 수 있다.
MMVD 플래그에 대한 삼각형 예측 플래그 코딩
본 발명의 일부 다른 예들에 따르면, CU에 대해 MMVD 예측 모드가 선택 될 경우, 삼각형 예측 플래그가 CU에 대해 코딩되지 않을 수 있다. 따라서 CU에 대해 MMVD 예측 모드가 선택되지 않은 경우에만 CU에 대해 삼각형 예측 플래그가 시그널링될 수 있다. 삼각형 예측 플래그가 시그널링 되지 않은 경우, 디코더 측에서 이를 0으로 추정할 수 있다.
삼각형 예측 단위 상측에서의 MMVD 예측 인에이블
본 발명의 일부 또 다른 예들에 따르면, MMVD 예측 모드는 삼각형 예측 단위 상측에서 인에이블될 수 있다. 이 경우, CU에 대해 MMVD 예측 모드가 선택되더라도 삼각형 예측 플래그가 추가적으로 시그널링되어 삼각형 예측 단위가 사용됨을 나타낼 수 있다. CU에 대해 MMVD 예측 모드와 삼각형 예측 모드가 모두 참(true)인 경우, MMVD 모드 하의 MVD 관련 신택스는 2 개의 삼각형 예측 단위 각각에 대해 추가적으로 시그널링될 수 있다.
도 15는 본 발명의 일부 구현 방식들에 따른 비디오 코딩을 위한 예시적인 장치를 도시하는 블록도이다. 장치(1500)는 모바일 폰, 태블릿 컴퓨터, 디지털 방송 단말기, 태블릿 디바아스, 또는 개인 휴대 단말기와 같은 단말기일 수 있다.
도 15에 도시된 바와 같이, 장치(1500)는 프로세싱 컴포넌트(1502), 메모리(1504), 전력 공급 컴포넌트(1506), 멀티미디어 컴포넌트(1508), 오디오 컴포넌트(1510), 입출력(I/O) 인터페이스(1512), 센서 컴포넌트(1514) 및 통신 컴포넌트(1516)와 같은 구성 중의 하나 또는 그 이상을 포함할 수 있다.
프로세싱 컴포넌트(1502)는 디스플레이, 전화 통화, 데이터 통신, 카메라 동작 및 레코딩 동작과 관련된 동작과 같은 장치 (1500)의 전체 동작을 제어한다. 프로세싱 컴포넌트(1502)는 상기 방법의 전부 또는 일부 단계를 완성하기 위한 명령어를 실행하기 위한 하나 또는 그 이상의 프로세서(1520)를 포함할 수 있다. 또한, 프로세싱 컴포넌트(1502)는 프로세싱 컴포넌트(1502)와 다른 컴포넌트 간의 상호 작용을 용이하게 하기 위해 하나 혹은 그 이상의 모듈을 포함할 수 있다. 예를 들어, 프로세싱 컴포넌트(1502)는 멀티미디어 컴포넌트(1508)와 프로세싱 컴포넌트(1502)간의 상호 작용을 용이하게 하기 위해 멀티미디어 모듈을 포함할 수 있다.
메모리(1504)는 장치(1500)의 동작을 지원하기 위해 서로 다른 유형의 데이터를 저장하도록 구성된다. 이러한 데이터의 예로는 장치(1500)에서 동작하는 임의의 애플리케이션 또는 방법에 대한 명령어, 연락처 데이터, 전화번호부 데이터, 메시지, 사진, 비디오 등이 포함된다. 메모리(1504)는 임의의 유형의 휘발성 또는 비 휘발성 저장 장치 또는 이들의 조합에 의해 구현될 수 있고, 메모리(1504)는 SRAM(Static Random Access Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), EPROM(Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), ROM(Read-Only Memory), 자기 메모리(magnetic memory), 플래시 메모리(flash memory), 자기 디스크(magnetic disk) 또는 컴팩트 디스크(compact disk)일 수 있다.
전력 공급 컴포넌트(1506)는 장치(1500)의 다양한 컴포넌트들에 전력을 공급한다. 전력 공급 컴포넌트(1506)는 전력 공급 관리 시스템, 하나 또는 그 이상의 전원 및 장치(1500)의 전력을 생성, 관리 및 분배하는 것과 관련된 기타 컴포넌트를 포함할 수 있다.
멀티미디어 컴포넌트(1508)는 장치(1500)와 사용자 사이의 출력 인터페이스를 제공하는 스크린을 포함한다. 일부 예들에서, 스크린은LCD 및 터치 패널(TP)을 포함할 수 있다. 스크린이 터치 패널을 포함하는 경우, 스크린은 사용자로부터 입력 신호를 수신하는 터치 스크린으로 구현될 수 있다. 터치 패널은 터치 패널상의 터치, 슬라이드 및 제스처를 감지하기 위한 하나 또는 그 이상의 터치 센서를 포함할 수 있다. 터치 센서는 터치 또는 슬라이딩 동작의 경계를 감지할 뿐만 아니라 터치 또는 슬라이딩 동작과 관련된 지속 시간 및 압력도 감지할 수 있다. 일부 예들에서, 멀티미디어 컴포넌트(1508)는 전방 카메라 및/또는 후방 카메라를 포함할 수 있다. 장치(1500)가 촬영 모드 또는 비디오 모드와 같은 동작 모드에 있을 경우, 전방 카메라 및/또는 후방 카메라는 외부 멀티미디어 데이터를 수신할 수 있다.
오디오 컴포넌트(1510)는 오디오 신호를 출력 및/또는 입력하도록 구성된다. 예를 들어, 오디오 컴포넌트(1510)는 마이크(MIC)를 포함한다. 장치(1500)가 통화 모드, 녹음 모드 및 음성 인식 모드와 같은 동작 모드에 있을 경우, 마이크는 외부 오디오 신호를 수신하도록 구성된다. 수신된 오디오 신호는 또한 메모리(1504)에 저장되거나 통신 컴포넌트(1516)를 통해 전송될 수 있다. 일부 예들에서, 오디오 컴포넌트(1510)는 오디오 신호를 출력하기 위한 스피커를 더 포함한다.
I/O 인터페이스(1512)는 프로세싱 컴포넌트(1502)와 주변 인터페이스 모듈사이의 인터페이스를 제공한다. 상기 주변 인터페이스 모듈은 키보드, 클릭 휠, 버튼 등일 수 있다. 이러한 버튼에는 홈 버튼, 볼륨 버튼, 시작 버튼 및 잠금 버튼이 포함될 수 있지만 이에 제한되지는 않는다.
센서 컴포넌트(1514)는 장치(1500)에 대해 상이한 측면들에서 상태 평가를 제공하기 위한 하나 또는 그 이상의 센서를 포함한다. 예를 들어, 센서 컴포넌트(1514)는 장치(1500)의 온/오프 상태 및 컴포넌트의 상대적 위치를 검출할 수 있다. 예를 들어, 컴포넌트는 장치(1500)의 디스플레이 및 키패드이다. 센서 컴포넌트(1514)는 또한 장치(1500) 또는 장치(1500)의 컴포넌트의 위치 변화, 장치에 대한 사용자의 접촉 유무를 감지할 수 있다. 센서 컴포넌트(1514)는 물리적 터치없이 주변 물체의 존재를 감지하도록 구성된 근접 센서를 포함할 수 있다. 센서 컴포넌트(1514)는 이미징 애플리케이션에 사용되는 CMOS 또는 CCD 이미지 센서와 같은 광학 센서를 더 포함할 수 있다. 일부 예에서, 센서 컴포넌트(1514)는 가속도 센서(acceleration sensor), 자이로스코프 센서(gyroscope sensor), 자기 센서(magnetic sensor), 압력 센서(pressure sensor) 또는 온도 센서(temperature sensor)를 더 포함할 수 있다.
통신 컴포넌트(1516)는 장치(1500)와 기타 장치 사이의 유선 또는 무선 통신을 용이하게 하도록 구성된다. 장치(1500)는 WiFi, 4G, 또는 이들의 조합과 같은 통신 표준에 기반한 무선 네트워크에 접속할 수 있다. 일 예에서, 통신 컴포넌트(1516)는 방송 채널을 통해 외부 방송 관리 시스템으로부터 방송 신호 또는 방송 관련 정보를 수신한다. 일 예에서, 통신 컴포넌트(1516)는 근거리 통신을 촉진하기 위한 근거리 무선 통신(Near Field Communication, NFC) 모듈을 더 포함할 수 있다. 예를 들어, NFC 모듈은 RFID(Radio Frequency Identification)기술, IrDA(Infrared Data Association)기술, UWB(Ultra-Wide Band)기술, BT(Bluetooth)기술 및 기타 기술을 기반으로 구현될 수 있다.
일 예에서, 장치(1500)는 상기 방법을 수행하기 위해 ASIC(Application Specific Integrated Circuit), DSP(Digital Signal Processor), DSPD(Digital Signal Processing Devices), PLD(Programmable Logic Device), FPGA(Field Programmable Gate Array), 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 또는 기타 전자 요소중 하나 또는 그 이상에 의해 구현될 수 있다.
비-일시적 컴퓨터 판독 가능 저장 매체는 예를 들어 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD), 플래시 메모리, 하이브리드 드라이브 또는 솔리드 스테이트 하이브리드 드라이브 (SSHD), ROM(Read-Only Memory), 컴팩트 디스크 ROM(CD-ROM), 자기 테이프, 플로피 디스크 등일 수 있다.
도 16은 본 발명의 일부 구현 방식들에 따른 삼각형 예측을 사용한 움직임 보상 예측을 위한 비디오 코딩의 예시적인 프로세스를 도시하는 흐름도이다.
단계 1602에서, 프로세서(1520)는 비디오 픽처들을 복수의 코딩 단위(CU)들로 분할하고, 이들 중 적어도 하나는 좌측 상단 모서리에서 우측 하단 모서리로 및 우측 상단 모서리에서 좌측 하단 모서리로의 분할 방향 중 하나를 가지는 적어도 하나의 삼각형 형상의 PU를 포함하는 2 개의 PU로 더 분할된다. 단계 1604에서, 프로세서(1520)는 일방향-예측 움직임 벡터 후보 리스트를 구성한다. 1606 단계에서, 프로세서(1520)는 코딩 정보에 따라 현재 CU가 삼각형 예측 모드로 코딩되는지 여부를 결정한다. 단계 1608에서, 프로세서(1520)는 분할 방향을 나타내는 분할 방향 플래그를 시그널링한다. 단계 1610에서, 프로세서(1520)는 구성된 일방향-예측 움직임 벡터 후보 리스트에서 선택된 엔트리를 나타내는 인덱스 값을 시그널링한다.
도 17은 본 발명의 일부 구현 방식들에 따른 삼각형 예측 플래그를 위한 비디오 코딩의 예시적인 프로세스를 도시하는 흐름도이다.
단계 1702에서, 프로세서(1520)는 비디오 픽처들을 복수의CU들로 분할하고, 이들 중 적어도 하나는 적어도 하나의 삼각형 모양의 PU를 포함하는 2 개의PU로 더 분할된다.
단계 1704에서, 프로세서(1520)는 현재 CU에 대하여 삼각형 예측 모드를 나타내는 삼각형 예측 플래그를 디코딩할지 여부를 결정한다.
단계 1706에서, 현재 CU에 대하여 삼각형 예측 플래그를 디코딩할 것으로 결정될 경우, 프로세서(1520)는 CABAC를 이용하여 삼각형 예측 플래그를 도출한다.
삼각형 예측 플래그에 대한 CABAC의 컨텍스트는 CU 영역 크기, CU 모양 및 공통 컨텍스트로 구성된 그룹에서 선택된 적어도 하나를 기반으로 도출된다.
일부 예들에서, 비디오 코딩을 위한 장치가 제공된다. 상기 장치는 프로세서(1520) 및 프로세서에 의해 실행 가능한 명령어를 저장하도록 구성된 메모리(1504)를 포함하며, 프로세서는 명령어 실행시 도 16에 도시된 방법, 또는 도 17에 도시된 방법을 수행하도록 구성된다.
일부 다른 예들에서, 명령어가 저장된 비-일시적 컴퓨터 판독 가능 저장 매체(1504)가 제공된다. 명령어가 프로세서(1520)에 의해 실행될때, 명령어는 프로세서로 하여금 도 16에 도시된 방법, 또는 도 17에 도시된 방법을 수행하게 한다.
본 개시 내용의 설명은 예시의 목적으로 제시된 것이며, 본 개시 내용을 망라하거나 제한하고자하는 것은 아니다. 전술한 설명 및 관련 도면들의 시사로부터 당업자들은 다양한 수정, 변경 및 대안적인 구현 방식들은 명백히 이해할 것이다.
예시들은 본 개시의 원리 및 당업자가 본 개시를 다양한 구현 방식으로 구현하도록 이해하고, 특정된 용도에 적합하도록 본 발명을 수정하도록 본 발명의 기본적인 원리 및 다양한 구현 방식을 제일 적합하게 사용하도록 설명되었다.따라서, 본 개시의 범위는 개시된 구현 방식들의 특정 예에 제한되지 않으며, 수정 및 다른 구현 방식들은 본 개시에 포함되는 것으로 해석되어야 한다.

Claims (15)

  1. 비디오 픽처들을 획득하고, 상기 비디오 픽처들을 복수의 코딩 단위(CU)들로 분할하는 단계; 및
    현재 CU를 인터 예측 모드로 코딩하는 경우;
    코딩된 정보에 따라 상기 현재 CU를 삼각형 예측 모드에서 코딩하는지 여부를 결정하는 단계; 및
    상기 현재 CU를 상기 삼각형 예측 모드에서 코딩하는 경우, 분할 방향을 가리키는 분할 방향 신택스 요소를 획득하고, 일방향-예측 움직임 벡터 후보들에 대응되는 인덱스 값들을 획득하는 단계, 를 포함하되,
    상기 코딩된 정보는 시퀀스 파라미터 세트에서의 삼각형 예측 도구 인에이블/디스에이블 플래그를 포함하고, 상기 코딩된 정보에 따라 상기 현재 CU를 상기 삼각형 예측 모드에서 코딩하는지 여부를 결정하는 단계는,
    상기 삼각형 예측 도구 인에이블/디스에이블 플래그가 거짓(false)으로 시그널링된 경우, 상기 현재 CU에 대하여 상기 삼각형 예측 모드가 디스에이블된 것으로 추정하는 단계, 를 포함하는,
    비디오 디코딩을 위한 방법.
  2. 제 1 항에 있어서,
    상기 일방향-예측 움직임 벡터 후보들은 2개의 일방향-예측 움직임 벡터 후보들을 포함하는,
    비디오 디코딩을 위한 방법.
  3. 제 1 항에 있어서,
    상기 분할 방향 신택스 요소는 컨텍스트 기반 적응 이진 산술 코딩(Context-based Adaptive Binary Arithmetic Coding, CABAC) 바이패스 빈으로 코딩된 것인,
    비디오 디코딩을 위한 방법.
  4. 제 1 항에 있어서,
    상기 코딩된 정보에 따라 상기 현재 CU를 상기 삼각형 예측 모드에서 코딩하는지 여부를 결정하는 단계는,
    상기 코딩된 정보에 따라 상기 삼각형 예측 도구 인에이블/디스에이블 플래그가 참(true)이고 다른 모든 병합 관련 모드가 디스에이블된 것으로 시그널링된다는 결정에 응답하여, 상기 현재 CU가 상기 삼각형 예측 모드에서 코딩되었다고 추정하는 단계,를 더 포함하는
    비디오 디코딩을 위한 방법.
  5. 제 1 항에 있어서,
    상기 코딩된 정보에 따라 상기 현재 CU를 상기 삼각형 예측 모드에서 코딩하는지 여부를 결정하는 단계는,
    상기 코딩된 정보에 따라 상기 현재 CU에 대한 상기 삼각형 예측 모드를 가리키는 삼각형 예측 플래그가 0 또는 1인지를 결정하는 단계, 를 포함하는
    비디오 디코딩을 위한 방법.
  6. 제 1 항에 있어서,
    고유한 일방향-예측 움직임 벡터 및 참조 프레임 인덱스를 사용하여 각 PU를 인터-예측하는 단계, 를 더 포함하는
    비디오 디코딩을 위한 방법.
  7. 프로세서; 및
    상기 프로세서에 의해 실행 가능한 명령어를 저장하도록 구성된 메모리, 를 포함하되,
    상기 프로세서는 상기 명령어를 실행시 아래와 같은 동작을 수행하도록 구성되며:
    비디오 픽처들을 획득하고, 상기 비디오 픽처들을 복수의 CU들로 분할하고;
    현재 CU를 인터 예측 모드로 코딩하는 경우:
    코딩된 정보에 따라 상기 현재 CU를 삼각형 예측 모드에서 코딩하는지 여부를 결정하고; 및
    상기 현재 CU를 상기 삼각형 예측 모드에서 코딩하는 경우, 분할 방향을 가리키는 분할 방향 신택스 요소를 획득하고, 일방향-예측 움직임 벡터 후보들에 대응되는 인덱스 값들을 획득하되,
    상기 코딩된 정보는 시퀀스 파라미터 세트에서의 삼각형 예측 도구 인에이블/디스에이블 플래그를 포함하고, 상기 코딩된 정보에 따라 상기 현재 CU를 상기 삼각형 예측 모드에서 코딩하는지 여부를 결정하는 동작은,
    상기 삼각형 예측 도구 인에이블/디스에이블 플래그가 거짓(false)으로 시그널링된 경우, 상기 현재 CU에 대하여 상기 삼각형 예측 모드가 디스에이블된 것으로 추정하는 동작, 을 포함하는,
    비디오 디코딩을 위한 장치.
  8. 제 7 항에 있어서,
    상기 일방향-예측 움직임 벡터 후보들은 2개의 일방향-예측 움직임 벡터 후보들을 포함하는,
    비디오 디코딩을 위한 장치.
  9. 제 7 항에 있어서,
    상기 분할 방향 신택스 요소는 컨텍스트 기반 적응 이진 산술 코딩(Context-based Adaptive Binary Arithmetic Coding, CABAC) 바이패스 빈으로 코딩된 것인,
    비디오 디코딩을 위한 장치.
  10. 제 7 항에 있어서,
    상기 코딩된 정보에 따라 상기 현재 CU를 상기 삼각형 예측 모드에서 코딩하는지 여부를 결정하는 동작은,
    상기 코딩된 정보에 따라 상기 삼각형 예측 도구 인에이블/디스에이블 플래그가 참(true)이고 다른 모든 병합 관련 모드가 디스에이블된 것으로 시그널링된다는 결정에 응답하여, 상기 현재 CU가 상기 삼각형 예측 모드에서 코딩되었다고 추정하는 동작, 을 더 포함하는
    비디오 디코딩을 위한 장치.
  11. 제 7 항에 있어서,
    상기 프로세서는,
    상기 코딩된 정보에 따라 상기 현재 CU에 대한 상기 삼각형 예측 모드를 가리키는 삼각형 예측 플래그가 0 또는 1인지를 결정하도록 구성되는
    비디오 디코딩을 위한 장치.
  12. 제 7 항에 있어서,
    상기 프로세서는,
    고유한 일방향-예측 움직임 벡터 및 참조 프레임 인덱스를 사용하여 각 PU를 인터-예측하도록 더 구성되는,
    비디오 디코딩을 위한 장치.
  13. 하나 이상의 프로세서를 갖는 컴퓨팅 장치에 의해 실행되는 복수의 프로그램을 저장하는 비-일시적 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 복수의 프로그램은 하나 또는 그 이상의 프로세서에 의해 실행 시 컴퓨팅 장치로 하여금 제 1 항 내지 제 6 항 중 어느 한 항에 따른 비디오 디코딩을 위한 방법을 수행하도록 하고 제 1 항 내지 제 6 항 중 어느 한 항에 따른 비디오 디코딩을 위한 방법에 의해 디코딩될 비트스트림을 저장하도록 하는,
    비-일시적 컴퓨터 판독 가능 저장 매체.
  14. 제 1 항 내지 제 6 항 중 어느 한 항에 따른 비디오 디코딩을 위한 방법에 의해 디코딩될 비트스트림을 저장하는,
    비-일시적 컴퓨터 판독 가능 저장 매체.
  15. 비트스트림을 저장하기 위한 명령어들을 갖는 비-일시적 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램으로서,
    상기 비트스트림은, 제 1 항 내지 제 6 항 중 어느 한 항에 따른 비디오 디코딩을 위한 방법에 의해 디코딩될 인코딩된 데이터를 포함하는,
    비-일시적 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램.
KR1020247010673A 2018-12-30 2019-12-30 삼각형 예측을 위한 비디오 코딩 방법 및 장치 KR20240049623A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201862786545P 2018-12-30 2018-12-30
US62/786,545 2018-12-30
US201862787219P 2018-12-31 2018-12-31
US62/787,219 2018-12-31
PCT/US2019/068975 WO2020142447A1 (en) 2018-12-30 2019-12-30 Methods and apparatus of video coding for triangle prediction
KR1020217020403A KR102658346B1 (ko) 2018-12-30 2019-12-30 삼각형 예측을 위한 비디오 코딩 방법 및 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217020403A Division KR102658346B1 (ko) 2018-12-30 2019-12-30 삼각형 예측을 위한 비디오 코딩 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20240049623A true KR20240049623A (ko) 2024-04-16

Family

ID=71407098

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020247010673A KR20240049623A (ko) 2018-12-30 2019-12-30 삼각형 예측을 위한 비디오 코딩 방법 및 장치
KR1020237017395A KR20230074855A (ko) 2018-12-30 2019-12-30 삼각형 예측을 위한 비디오 코딩 방법 및 장치
KR1020217020403A KR102658346B1 (ko) 2018-12-30 2019-12-30 삼각형 예측을 위한 비디오 코딩 방법 및 장치
KR1020247010674A KR20240049624A (ko) 2018-12-30 2019-12-30 삼각형 예측을 위한 비디오 코딩 방법 및 장치

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020237017395A KR20230074855A (ko) 2018-12-30 2019-12-30 삼각형 예측을 위한 비디오 코딩 방법 및 장치
KR1020217020403A KR102658346B1 (ko) 2018-12-30 2019-12-30 삼각형 예측을 위한 비디오 코딩 방법 및 장치
KR1020247010674A KR20240049624A (ko) 2018-12-30 2019-12-30 삼각형 예측을 위한 비디오 코딩 방법 및 장치

Country Status (7)

Country Link
US (3) US11622111B2 (ko)
EP (2) EP3888364A4 (ko)
JP (2) JP7171928B2 (ko)
KR (4) KR20240049623A (ko)
CN (5) CN113196755A (ko)
MX (1) MX2021007977A (ko)
WO (1) WO2020142447A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3888364A4 (en) 2018-12-30 2022-05-18 Beijing Dajia Internet Information Technology Co., Ltd. METHOD AND DEVICE FOR VIDEO CODING FOR TRIANGLE PREDICTION
CN113055687B (zh) * 2019-06-24 2022-07-29 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN110312130B (zh) * 2019-06-25 2021-10-15 浙江大华技术股份有限公司 基于三角模式的帧间预测、视频编码方法及设备

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BRPI0911307B1 (pt) * 2008-04-15 2020-09-29 France Telecom Codificação e decodificação de uma imagem ou de uma sequência de imagens recortadas, segundo partições de pixels de forma linear
WO2011096770A2 (ko) * 2010-02-02 2011-08-11 (주)휴맥스 영상 부호화/복호화 장치 및 방법
CN102044089A (zh) * 2010-09-20 2011-05-04 董福田 一种三维模型的自适应化简、渐进传输和快速绘制的方法
DE102011050201A1 (de) * 2011-05-07 2012-11-08 Benedikt Hieronimi System zur Auswertung von Identifikationsmarken, Identifikationsmarken und deren Verwendung
US10805617B2 (en) * 2012-01-19 2020-10-13 Texas Instruments Incorporated Scalable prediction type coding
US9503720B2 (en) * 2012-03-16 2016-11-22 Qualcomm Incorporated Motion vector coding and bi-prediction in HEVC and its extensions
US20140029670A1 (en) * 2012-07-27 2014-01-30 Motorola Mobility Llc Devices and methods for processing of partition mode in high efficiency video coding
US9699450B2 (en) * 2012-10-04 2017-07-04 Qualcomm Incorporated Inter-view predicted motion vector for 3D video
US10129550B2 (en) * 2013-02-01 2018-11-13 Qualcomm Incorporated Inter-layer syntax prediction control
US9930363B2 (en) * 2013-04-12 2018-03-27 Nokia Technologies Oy Harmonized inter-view and view synthesis prediction for 3D video coding
WO2015127581A1 (en) * 2014-02-25 2015-09-03 Mediatek Singapore Pte. Ltd. Methods for switching off the intra prediction filters
US10750198B2 (en) * 2014-05-22 2020-08-18 Qualcomm Incorporated Maximum palette parameters in palette-based video coding
KR20170078672A (ko) * 2014-10-31 2017-07-07 삼성전자주식회사 고정밀 스킵 부호화를 이용한 비디오 부호화 장치 및 비디오 복호화 장치 및 그 방법
WO2016090568A1 (en) * 2014-12-10 2016-06-16 Mediatek Singapore Pte. Ltd. Binary tree block partitioning structure
US10230980B2 (en) * 2015-01-26 2019-03-12 Qualcomm Incorporated Overlapped motion compensation for video coding
US20180255304A1 (en) * 2015-03-29 2018-09-06 Lg Electronics Inc. Method and device for encoding/decoding video signal
WO2016200984A1 (en) * 2015-06-08 2016-12-15 Vid Scale, Inc. Intra block copy mode for screen content coding
JP2018530244A (ja) * 2015-09-25 2018-10-11 華為技術有限公司Huawei Technologies Co.,Ltd. 選択可能な補間フィルタを用いるビデオ動き補償のための装置および方法
JP6556942B2 (ja) * 2015-09-25 2019-08-07 ホアウェイ・テクノロジーズ・カンパニー・リミテッド ビデオ動き補償用の装置および方法
US10412407B2 (en) * 2015-11-05 2019-09-10 Mediatek Inc. Method and apparatus of inter prediction using average motion vector for video coding
EP3395072A4 (en) * 2015-12-22 2019-05-22 RealNetworks, Inc. SELECTION AND PREDICTION OF MOTION VECTOR IN VIDEO ENCODING SYSTEMS AND METHODS
WO2017118409A1 (en) * 2016-01-07 2017-07-13 Mediatek Inc. Method and apparatus for affine merge mode prediction for video coding system
KR20170108367A (ko) * 2016-03-17 2017-09-27 세종대학교산학협력단 인트라 예측 기반의 비디오 신호 처리 방법 및 장치
US10721489B2 (en) * 2016-09-06 2020-07-21 Qualcomm Incorporated Geometry-based priority for the construction of candidate lists
WO2018064967A1 (en) * 2016-10-07 2018-04-12 Mediatek Inc. Video encoding method and apparatus with syntax element signaling of employed projection layout and associated video decoding method and apparatus
KR20180043151A (ko) * 2016-10-19 2018-04-27 에스케이텔레콤 주식회사 영상 부호화 또는 복호화를 위한 장치 및 방법
KR20180082330A (ko) * 2017-01-09 2018-07-18 에스케이텔레콤 주식회사 영상 부호화 또는 복호화하기 위한 장치 및 방법
WO2018128466A1 (ko) 2017-01-09 2018-07-12 에스케이텔레콤 주식회사 영상 부호화 또는 복호화하기 위한 장치 및 방법
CN110771169A (zh) * 2017-06-09 2020-02-07 韩国电子通信研究院 视频编码/解码方法和装置以及存储比特流的记录介质
CN108874265A (zh) * 2018-06-21 2018-11-23 北京达佳互联信息技术有限公司 多媒体信息显示方法、装置、计算机设备及存储介质
US10760024B2 (en) 2018-07-10 2020-09-01 Iogen Corporation Method and system for upgrading biogas
CN115695785B (zh) * 2018-10-27 2023-06-06 华为技术有限公司 图像预测方法及装置
US10917636B2 (en) * 2018-12-03 2021-02-09 Tencent America LLC Method and apparatus for video coding
US10778977B2 (en) * 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
EP3888364A4 (en) 2018-12-30 2022-05-18 Beijing Dajia Internet Information Technology Co., Ltd. METHOD AND DEVICE FOR VIDEO CODING FOR TRIANGLE PREDICTION
US11109041B2 (en) * 2019-05-16 2021-08-31 Tencent America LLC Method and apparatus for video coding

Also Published As

Publication number Publication date
EP4277277A3 (en) 2024-01-03
MX2021007977A (es) 2021-08-16
US11622111B2 (en) 2023-04-04
CN117041594B (zh) 2024-05-14
CN116156164B (zh) 2023-11-28
JP7171928B2 (ja) 2022-11-15
KR20210087553A (ko) 2021-07-12
US20230099500A1 (en) 2023-03-30
US20240146922A1 (en) 2024-05-02
JP2023011832A (ja) 2023-01-24
US11909969B2 (en) 2024-02-20
CN117041595A (zh) 2023-11-10
CN117041594A (zh) 2023-11-10
WO2020142447A1 (en) 2020-07-09
KR20240049624A (ko) 2024-04-16
CN117041595B (zh) 2024-05-17
EP3888364A1 (en) 2021-10-06
JP2022517559A (ja) 2022-03-09
CN114245115A (zh) 2022-03-25
KR20230074855A (ko) 2023-05-31
CN114245115B (zh) 2023-03-21
EP3888364A4 (en) 2022-05-18
EP4277277A2 (en) 2023-11-15
CN113196755A (zh) 2021-07-30
KR102658346B1 (ko) 2024-04-18
CN116156164A (zh) 2023-05-23
US20210329239A1 (en) 2021-10-21

Similar Documents

Publication Publication Date Title
US11622111B2 (en) Methods and apparatus of video coding for triangle prediction
KR102377329B1 (ko) 크로마 성분에 대한 아핀 움직임 벡터 도출을 위한 비디오 코딩 방법 및 장치
US11134261B2 (en) Methods and apparatus of video coding for triangle prediction
KR20210107021A (ko) 조도 보상에 대한 블록 사이즈 제한
WO2020142685A1 (en) Video coding with triangle prediction
US20220239902A1 (en) Methods and apparatuses for video coding using triangle partition
US20220070445A1 (en) Methods and apparatuses for video coding with triangle prediction
US20220014780A1 (en) Methods and apparatus of video coding for triangle prediction
US20240187584A1 (en) Methods and apparatus of video coding for triangle prediction
WO2020220037A1 (en) Methods and apparatuses for video coding with triangle prediction
WO2021138605A1 (en) Methods and apparatuses for video coding using triangle partition
WO2020236991A1 (en) Methods and apparatuses for video coding using triangle partition

Legal Events

Date Code Title Description
A107 Divisional application of patent