KR20240007094A - 영상 부호화 장치 및 복호화 장치 - Google Patents

영상 부호화 장치 및 복호화 장치 Download PDF

Info

Publication number
KR20240007094A
KR20240007094A KR1020230088716A KR20230088716A KR20240007094A KR 20240007094 A KR20240007094 A KR 20240007094A KR 1020230088716 A KR1020230088716 A KR 1020230088716A KR 20230088716 A KR20230088716 A KR 20230088716A KR 20240007094 A KR20240007094 A KR 20240007094A
Authority
KR
South Korea
Prior art keywords
mode
block
idx
intra
gpm
Prior art date
Application number
KR1020230088716A
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 KR20240007094A publication Critical patent/KR20240007094A/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
    • 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/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/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

GPM 등 다양한 영상 부호화 및 복호화 방법을 개시한다.

Description

영상 부호화 장치 및 복호화 장치{Video encoding device and decoding device}
영상 부호화 및 복호화에 관한 것이다.
AVC (Advanced Video Coding), HEVC (High Efficiency Video Coding), VVC (Versatile Video Coding)와 같은 다양한 영상 부호화/복호화 기법이 존재한다. AVC는 H.264라고도 불리며, 고도로 효율적인 비디오 압축을 위한 표준이다. AVC는 MPEG-2보다 높은 압축률을 제공한다. HEVC는 H.265라고도 불리며, AVC의 후속 버전으로 개발된 비디오 압축 표준이다. HEVC는 AVC보다 압축률이 더 뛰어나며, 더 낮은 비트율로 높은 품질의 비디오를 제공할 수 있다. VVC는 H.266이라고도 불리며, HEVC의 후속 버전으로 개발된 비디오 압축 표준이다. VVC는 HEVC보다 압축률을 더 향상시켜 비디오 압축 효율성을 높였다. VVC는 온라인 스트리밍 서비스, 4K 및 8K TV, 실시간 비디오 컨퍼런싱 등 다양한 영역에서 사용될 수 있다.
영상 압축 효율 고도화를 위한 기술을 제공하고자 한다.
상기한 문제를 해결하기 위하여 본 명세서에서는 GPM 등 다양한 영상 부호화 및 복호화 방법을 개시한다.
또한, 상기한 문제를 해결하기 위하여 본 명세서는 상술한 방법을 수행하기 위한 컴퓨터 프로그램과 그 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체를 개시한다.
영상 압축 효율 고도화를 달성할 수 있는 효과가 제공된다.
도 1은 일 실시 예에 따른 영상 부호화 및 복호화 시스템을 도시하는 도면이다.
도 2는 일 실시 예에 따른 부호화 장치를 도시하는 도면이다.
도 3은 하나의 픽쳐가 복수의 정사각 블록인 CTU로 분할된 개념을 도시하는 도면이다.
도 4는 일 실시 예에 따른 복호화 장치를 도시하는 도면이다.
도 5 내지 도 17은 GPM이 적용되는 영상 부복호화 방법을 설명하기 위한 도면이다.
도 18 내지 도 21은 크로마 블록의 인트라 예측을 수행하기 위한 영상 부복호화 방법을 설명하기 위한 도면이다.
이하에서는 도면을 참조하여 다양한 실시예들을 상세히 설명한다. 이하에서 설명되는 실시예들은 여러 가지 상이한 형태로 변형되어 실시될 수도 있다. 실시예들의 특징을 보다 명확히 설명하기 위하여 이하의 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서 자세한 설명은 생략한다.
한편, 본 명세서에서 어떤 구성이 다른 구성과 "연결"되어 있다고 할 때, 이는 '직접적으로 연결'되어 있는 경우뿐 아니라, '그 중간에 다른 구성을 사이에 두고 연결'되어 있는 경우도 포함한다. 또한, 어떤 구성이 다른 구성을 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한, 그 외 다른 구성을 제외하는 것이 아니라 다른 구성을 더 포함할 수도 있다는 것을 의미한다.
또한, 본 명세서에서 사용되는 '제 1' 또는 '제 2' 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다.
영상 부/복호화 시스템 개요
도 1은 일 실시 예에 따른 영상 부호화 및 복호화 시스템을 도시하는 도면이다. 일 실시예에 따른 영상 부/복호화 시스템은 부호화 장치(100) 및 복호화 장치(200)를 포함할 수 있다. 부호화 장치(100)는 입력 영상을 부호화 하여 비트스트림을 생성할 수 있다. 비트스트림은 영상이 부호화된 데이터 및 영상이 부호화된 방식을 나타내는 부호화 정보를 포함할 수 있다. 비트스트림은 파일 형태로 디지털 저장 매체 또는 네트워크를 통하여 복호화 장치(200)로 전달될 수 있다. 또는 비트스트림은 스트리밍 데이터 형태로 네트워크를 통하여 복호화 장치로 전달될 수 있다.
일 실시 예에 따른 영상 부호화 장치와 복호화 장치는 H.266/VVC 영상 표준에 기반하여 동작할 수 있다. 이하, 일 실시 예에 따른 영상 부호화 장치와 복호화 장치의 구성 및 동작에 대하여 간단히 설명하지만 아래의 설명과 대치되지 않는 점에서 영상 부호화 장치와 복호화 장치는 H.266/VVC 영상 표준에 기반하여 동작할 수 있다.
영상 부호화 장치 개요
도 2는 일 실시 예에 따른 부호화 장치(100)를 도시하는 도면이다. 일 실시 예에 따른 영상 부호화 장치(100)는 영상 분할부(110), 변환부(120), 양자화부(130), 엔트로피 부호화부(140), 역양자화부(150), 역변환부(160), 필터 (170), 메모리(180), 인트라 예측부(191), 인터 예측부(193), 감산부(195) 및 가산부(197)를 포함하여 구성될 수 있다. 각 구성은 소프트웨어 컴포넌트나 하드웨어 컴포넌트(e.g., 프로세서)로 구현될 수 있다. 여기서, 인트라 예측부(191), 인터 예측부(193)는 합쳐서 예측부라고 지칭될 수 있다. 메모리(180)는 DPB(decoded picture buffer)를 포함할 수 있고, 디지털 저장 매체에 의하여 구현될 수 있다.
영상 분할부(110)는 입력 영상을 분할하여 적어도 하나의 CU(Coding Unit)를 생성할 수 있다. 입력 영상은 하나의 시간 단위 영상을 2D 또는 3D로 표현하는 픽쳐의 집합일 수 있다. 예를들어, 복수의 픽쳐가 시계열적으로 연속됨으로써 픽쳐가 시계열적으로 연속되는 영상이 구성될 수 있다. 하나의 픽쳐는 복수의 CTU(Coding Tree Unit)로 구성될 수 있다. 이에 대한 예시가 도 3에 도시되어 있다. 도 3은 하나의 픽쳐가 복수의 정사각 블록인 CTU로 분할된 개념을 도시한다.
하나의 CTU는 컬러 표현 방식에 따라 적어도 하나의 컬러 성분 블록을 포함할 수 있다. 예를 들어, CTU는 하나의 휘도 블록과 두개의 크로마 블록으로 구성될 수 있다. 휘도 블록은 적어도 하나의 휘도 샘플로 구성될 수 있다. 크로마 블록은 적어도 하나의 크로마 샘플로 구성될 수 있다.
VVC 영상 표준과 같이, 하나의 CTU는 쿼드 트리(Quad-tree), 바이너리 트리(binary-tree) 또는 터너리(ternary-tree) 구조에 따라 분할되어 복수의 CU로 분할될 수 있다. CU 또한 CTU가 분할되는 방식으로 복수의 CU로 분할될 수 있다. 더 이상 분할되지 않는 CU를 대상으로 부호화/복호화가 수행될 수 있다. 예를 들어, CU를 대상으로 예측, 변환, 양자화가 수행될 수 있다.
인트라 예측부(191)와 인터 예측부(193)에서 예측이 수행됨으로써 예측 신호(prediction signal)가 생성될 수 있다. 예측 신호는 루마 및/또는 크로마 예측 블록 형태로 생성될 수 있다.
감산부(195)에서 CU의 영상 신호에 예측 신호가 감산됨으로써 레지듀얼 신호(residual signal)가 생성될 수 있다. 예를 들어, CU의 루마 블록에 루마 예측 블록이 감산됨으로써 루마 레지듀얼 블록이 생성될 수 있다. 마찬가지로, CU의 크로마 블록에 크로마 예측 블록이 감산됨으로써 크로마 레지듀얼 블록이 생성될 수 있다. 생성된 레지듀얼 신호는 변환부(120)로 전송될 수 있다.
변환부(120)는 레지듀얼 신호를 변환하여 적어도 하나의 변환 계수(transform coefficient)를 생성할 수 있다. 이를 위하여, DCT(Discrete Cosine Transform), DST(Discrete Sine Transform), KLT(Karhunen-Loeve Transform), GBT(Graph-Based Transform), 또는 CNT(Conditionally Non-linear Transform)와 같은 변환 알고리즘이 사용될 수 있다. 변환계수는 레지듀얼 블록 마다 변환 블록 형태로 생성될 수 있다. 예를 들어, 루마 레지듀얼 블록과 크로마 레지듀얼 블록을 변환하여 루마 변환 블록, 크로마 변환 블록이 생성될 수 있다. 생성된 변환 계수는 양자화부(130)로 전송될 수 있다.
양자화부(130)는 변환 계수들을 양자화하여 양자화된 신호를 생성할 수 있다. 예를들어, 양자화된 신호는 양자화된 변환 계수 일 수 있다. 양자화된 신호는 엔트로피 부호화부(140)와 역양자화부(150)로 전송될 수 있다.
엔트로피 부호화부(140)는 양자화된 신호를 부호화 하여 비트스트림을 생성할 수 있다. 비트스트림에는 양자화된 변환계수에 대한 정보와, 양자화된 변환 계수를 복원하기 위한 부호화 정보(e.g., 영상 분할 정보, 예측 정보, 변환 정보, 파라미터셋 정보 등)가 포함될 수 있다. 예를 들어, 엔트로피 부호화부(140)는 지수 골롬(exponential Golomb), CAVLC(context-adaptive variable length coding), CABAC(context-adaptive binary arithmetic coding)과 같은 부호화 방법을 이용하여 엔트로피 부호화를 수행할 수 있다.
엔트로피 부호화부(140)는 복호화 장치로 전달하기 위한 부호화 정보를 소정의 데이터 단위(network abstract layer unit)으로 패키징하여 생성할 수 있으며, 이는 NAL 유닛으로 약칭될 수 있다. NAL 유닛은 헤더와 페이로드를 포함할 수 있으며, 헤더에는 해당 NAL 유닛이 해당 NAL 유닛의 속성(e.g. 부호화 데이터를 포함하는지 또는 다른 NAL 유닛을 복호화 하기 위한 파라미터 데이터를 포함하는지를 나타내는 속성)을 나타내는 식별 정보가 포함될 수 있다. 예를들어, 다른 NAL 유닛을 복호화 하기 위한 파라미터 데이터는 후술하는 VPS(video parameter set), PPS(picture parameter set) 또는 SPS(slice parameter set)일 수 있다.
예를들어, VPS는 입력 영상(e.g. 동영상)을 구성하는 복수의 픽쳐에 대한 정보를 포함하는 파라미터 셋일 수 있다. VPS는 VPS NAL 유닛 단위로 전송될 수 있으며, 그의 식별자 정보, 비디오를 구성하는 레이어 개수에 대한 정보 등을 포함할 수 있다.
PPS는 입력 영상(e.g. 동영상)을 구성하는 픽쳐에 대한 정보를 포함하는 파라미터 셋일 수 있다. PPS는 PPS NAL 유닛 단위로 전송될 수 있으며, 그의 식별자 정보, 해당 픽쳐를 구성하는 슬라이스가 직사각형 형태인지 또는 정사각 형태인지 여부를 나타내는 정보 또는 인루프 필터링이 슬라이스 경계를 넘어서 적용될수 있는지 여부를 나타내는 정보등 적어도 하나를 포함할 수 있다.
SPS는 입력 영상(e.g. 동영상)을 구성하는 픽쳐에 대한 정보를 포함하는 파라미터 셋일 수 있다. 일 실시 예에서, SPS는 PPS NAL 유닛 단위로 전송될 수 있으며, 복수의 슬라이스에 적용가능한 헤더 정보(e.g. 디블로킹 필터의 적용 가부)와 해당 헤더 정보가 적용되는 복수의 슬라이스 단위에 대한 부호화 데이터(e.g. 슬라이스의 크기 정보, 슬라이스를 구성하는 부호화 단위의 분할 가부 정보 등 부호화 정보 등)를 포함할 수 있다.
역양자화부(150)는 양자화부(130)로부터 수신한 양자화된 변환계수를 역양자화하여 변환계수를 획득한다. 역변환부(160)는 역양자화부(150)에서 생성한 변환 계수를 역변환 하여 역변환된 신호를 생성할 수 있다. 역변환된 신호는 변환되고 양자화되었던 레지듀얼 신호가 복원된 형태일 수 있다. 역변환된 신호는 복원된 레지듀얼 신호, 복원된 레지듀얼 블록, 복원된 레지듀얼 샘플 등으로 이용될 수 있다.
가산부(197)는 역변환된 신호에 인트라 예측부(191) 또는 인터 예측부(193)에서 생성된 예측 신호를 더하여 복원된 영상 신호(e.g., 복원 영상 픽쳐, 복원 영상 블록, 복원 영상 샘플 등으로 지칭될 수 있다)를 생성할 수 있다. 복원된 영상 신호는 복원 영상 픽쳐, 복원 영상 블록, 복원 영상 샘플 등으로 이용될 수 있다.
복원된 영상 신호는 필터(170)에서 소정의 필터(e.g., 디블로킹 필터, SAO(Sample Adaptive Offset), 적응적 루프 필터, 양방향 필터 등)가 적용된 후 메모리(180)에 저장될 수 있으며, 이러한 경우 참조 신호라 지칭할 수 있다. 참조 신호는 참조 픽쳐, 참조 블록, 참조 샘플 등으로 이용될 수 있다. 예를 들어, 참조 신호는 인트라 예측부(191) 및/또는 인터 예측부(193)에서 인트라 예측 또는 인터 예측을 위한 참조 신호로 이용될 수 있다.
인트라 예측부(191)는 플래너, DC 및 65개의 방향성 모드와, CCLM(Cross Component Linear Model) 예측, MRL(Multiple Reference Line) 예측, ISP(Intra Sub Partition) 예측, MIP(Matrix Weighted Intra Prediction) 등 다양한 인트라 예측 방법을 이용하여 인트라 예측을 수행함으로써 예측 신호를 생성할 수 있다. 인트라 예측부(191)는 부호화 대상 블록의 주변 샘플의 값을 이용하여 부호화 대상 블록에 적용될 인트라 예측 모드를 결정하고, 결정된 인트라 예측 모드에 대한 정보가 비트스트림에 부호화 되도록 엔트로피 부호화부(140)로 전달할 수 있다.
인터 예측부(193)는 부호화 대상 블록의 공간적 주변 블록이나(spatial neighboring block, e.g., 동일 픽쳐 내 존재하는 블록), 시간적 주변 블록(temporal neighboring block, e.g., 서로 다른 시간대에 속하는 픽쳐에 속하는 블록)을 이용하여 인터 예측을 수행함으로써 예측 신호를 생성할 수 있다. 예를들어, 인터 예측부(193)는 MER(Merge estimation region), MMVD(the merge mode with motion vector differences), 아핀 움직임 보상 예측, SbTMVP(Subblock-based temporal motion vector prediction), AMVR(Adaptive motion vector resolution) 등의 인터 예측 기법을 사용할 수 있다. 인터 예측부(193)는 결정된 인터 예측 모드에 대한 정보가 비트스트림에 부호화 되도록 엔트로피 부호화부(140)로 전달할 수 있다.
영상 복호화 장치 개요
도 4는 일 실시 예에 따른 복호화 장치(200)를 도시하는 도면이다. 일 실시 예에 따른 영상 복호화 장치(200)는 엔트로피 복호화부(210), 역양자화부(220), 역변환부(230), 가산부(267), 필터(240), 메모리(250), 인트라 예측부(261), 인터 예측부(263) 및 영상 결합부(270)를 포함할 수 있다. 각 구성은 소프트웨어 컴포넌트나 하드웨어 컴포넌트(e.g., 프로세서)로 구현될 수 있다. 여기서, 인트라 예측부(261) 및 인터 예측부(233)는 합쳐서 예측부라고 지칭될 수 있다. 메모리(250)는 DPB(decoded picture buffer)를 포함할 수 있고, 디지털 저장 매체에 의하여 구현될 수 있다.
영상 복호화 장치는 영상 부호화 장치의 부호화 절차를 반대로 수행함으로써, 비트스트림으로부터 복원영상을 생성할 수 있다. 예를들어, 비트스트림에는 양자화된 변환계수에 대한 정보와, 양자화된 변환 계수를 복원하기 위한 부호화 정보(e.g., 영상 분할 정보, 예측 정보, 변환 정보, 파라미터셋 정보 등)가 포함될 수 있으며, 영상 복호화 장치는 이를 이용하여 CU단위로 영상을 복호화할 수 있다.
엔트로피 복호화부(210)는 비트스트림을 복호화 하여 양자화된 신호를 복원할 수 있다. 예를 들어, 엔트로피 복호화부(210)는 비트스트림을 복호화 하여 양자화된 변환계수에 대한 정보와, 양자화된 변환 계수를 복원하기 위한 부호화 정보(e.g., 영상 분할 정보, 예측 정보, 변환 정보, 파라미터셋 정보 등)를 획득할 수 있다. 엔트로피 복호화부(210)는 지수 골롬(exponential Golomb), CAVLC(context-adaptive variable length coding), CABAC(context-adaptive binary arithmetic coding)과 같은 방법을 이용하여 엔트로피 복호화를 수행할 수 있다.
엔트로피 복호화부(210)는 부호화 장치에서 설명한 바와 같이 NAL 유닛 단위로 부호화 정보를 비트스트림으로수터 획득할 수 있다. 예를들어, 엔트로피 복호화부(210)는 비트스트림에 속한 NAL 유닛의 헤더에 속한 NAL 유닛 속성을 나타내는 식별 정보를 참조하여, NAL 유닛이 변환 계수에 관한 부호화 정보를 포함하는 NAL 유닛인지, 또는 VPS, PPS, SPS와 같이 다른 NAL 유닛을 복호화 하기 위한 파라미터 데이터를 포함하는지를 식별할 수 있다. 그리고, 엔트로피 복호화부(210)는 식별된 바에 따라 NAL 유닛으로부터 부호화 정보를 획득할 수 있다.
역양자화부(220)는 엔트로피 복호화부(210)로부터 수신한 양자화된 변환계수를 역양자화하여 변환계수를 획득할 수 있으며, 이를 역변환부(230)로 전달할 수 있다.
역변환부(230)는 역양자화부(220)에서 생성한 변환 계수를 역변환 하여 역변환된 신호를 생성할 수 있다. 역변환된 신호는 부호화 장치에서 변환되고 양자화되었던 레지듀얼 신호가 복원된 형태일 수 있다. 역변환된 신호는 복원된 레지듀얼 신호, 복원된 레지듀얼 블록, 복원된 레지듀얼 샘플 등으로 명명되며, 이용될 수 있다.
가산부(267)는 역변환된 신호(e.g., 루마 성분 레지듀얼 블록)에 인트라 예측부(261) 또는 인터 예측부(263)에서 생성된 예측 신호(e.g., 루마 성분 예측 블록)를 더하여 복원된 영상 신호(e.g., 루마 성분 복원 블록)를 생성할 수 있다. 복원된 영상 신호는 복원 영상 픽쳐, 복원 영상 블록, 복원 영상 샘플 등으로 명명되며, 이용될 수 있다.
복원된 영상 신호는 필터(240)에서 소정의 필터(e.g., 디블로킹 필터, SAO(Sample Adaptive Offset), 적응적 루프 필터, 양방향 필터 등)가 적용된 후 영상 결합부(270)에서 다른 영상 신호와 결합되어 복원 영상으로 출력되거나, 메모리(250)에 저장될 수 있다. 복원된 영상 신호가 메모리(250)에 저장된 경우 참조 신호라 지칭할 수 있다. 참조 신호는 참조 픽쳐, 참조 블록, 참조 샘플 등으로 이용될 수 있다. 예를 들어, 참조 신호는 인트라 예측부(261) 및/또는 인터 예측부(263)에서 인트라 예측 또는 인터 예측을 위한 참조 신호로 이용될 수 있다.
인트라 예측부(261)는 플래너, DC 및 65개의 방향성 모드와, CCLM(Cross Component Linear Model) 예측, MRL(Multiple Reference Line) 예측, ISP(Intra Sub Partition) 예측, MIP(Matrix Weighted Intra Prediction) 등 다양한 인트라 예측 방법을 이용하여 인트라 예측을 수행함으로써 예측 신호를 생성할 수 있다.
인트라 예측부(261)는 복호화 대상 블록의 주변 샘플의 값을 이용하여 복호화 대상 블록에 적용될 인트라 예측 모드를 결정할 수 있다. 또는, 인트라 예측부(261)는 엔트로피 복호화부에서 복호화된 예측 정보에 기반하여 복호화 대상 블록에 적용될 인트라 예측 모드를 결정할 수도 있다.
인터 예측부(263)는 복호화 대상 블록의 공간적 주변 블록이나(spatial neighboring block, e.g., 동일 픽쳐 내 존재하는 블록), 시간적 주변 블록(temporal neighboring block, e.g., 서로 다른 시간대에 속하는 픽쳐에 속하는 블록)을 이용하여 인터 예측을 수행함으로써 예측 신호를 생성할 수 있다. 예를들어, 인터 예측부(263)는 MER(Merge estimation region), MMVD(the merge mode with motion vector differences), 아핀 움직임 보상 예측, SbTMVP(Subblock-based temporal motion vector prediction), AMVR(Adaptive motion vector resolution), GPM(geometric partitioning mode) 등의 인터 예측 기법을 사용할 수 있다. 인터 예측부(263)는 복호화 대상 블록의 주변 블록의 값이나, 이전 인터 예측의 수행 결과에 따라 생성된 정보(e.g., 참조 픽쳐 리스트 등) 및 엔트로피 복호화부에서 복호화된 예측 정보 중 적어도 하나에 기반하여 복호화 대상 블록에 적용될 인터 예측 모드를 결정할 수 있다.
GPM(geometric partitioning mode) 개요
인터예측의 한 방법으로 GPM이 사용될 수 있다. GPM은 다른 인터 예측 방법과 함께 CU 레벨에서 시그널링 되는 플래그를 이용하여 시그널될 수 있다. 여기서, 다른 인터 예측 모드에는 일반 머지 모드, MMVD 모드, CIIP 모드 및 서브블록 병합 모드가 포함될 수 있다. 총 64개의 분할이 GPM에서 지원될 수 있다. 일 실시 예에서, w x h= 2m x 2n (여기서 m,n ∈{3, ..., 6}이고 8x64 및 64x8은 제외됨)의 크기를 가지는 CU에 대하여 GPM이 적용되고, 그 외 크기의 CU에는 GPM이 적용되지 않을 수 있다.
GPM이 적용되는 경우, CU는 기하적으로 위치한 직선으로 두 부분으로 분할될 수 있다. 도 5는 GPM이 적용되는 경우 CU의 분할 형태를 나타내는 도면이다. 분할 선의 위치는 특정 분할의 각도(φ)와 오프셋(ρ) 매개변수로부터 수학적으로 유도될 수 있다. 도 6은 분할 각도(φ)와 오프셋(ρ)으로 특정되는 GPM 분할선을 나타내는 도면이다. GPM 분할선은 블록의 중심점(중심샘플)로부터의 분할 각도(φ)와 오프셋(ρ)으로 특정될 수 있다. 이를 위하여 부호화 장치는 각도와 오프셋 매개변수를 부호화하여 비트스트림에 포함시킬 수 있고, 복호화 장치는 비트스트림으로부터 각도와 오프셋 매개변수를 복호화하여 획득할 수 있다.
CU의 기하 분할의 각 부분은 자체 모션을 사용하여 대칭 예측될 수 있다. 일 실시 예에서, 각 부분은 단일 예측으로만 허용될 수 있으며, 각 부분에는 하나의 모션 벡터와 하나의 참조 인덱스가 존재할 수 있다. 단일 예측 모션 제약 조건이 적용되어 모든 CU에 대해 필요한 것과 마찬가지로, 각 분할의 단일 예측 모션은 후술하는 절차에 따라 유도될 수 있다.
만약 현재 CU에 GPM이 적용된다면, 기하 분할의 분할 모드(각도와 오프셋)를 나타내는 기하 분할 인덱스와 두 개의 병합 인덱스(각 분할에 하나씩)가 추가로 신호화될 수 있다. 최대 GPM(기하 분할 모드) 후보 크기의 수는 SPS에서 명시적으로 신호화될 수 있으며, GPM 병합 인덱스에 대한 구문 이진화를 지정할 수 있다. 기하 분할의 각 부분을 예측한 후, 기하 분할 가장자리에 따라 샘플 값들은 적응적 가중치를 사용하여 혼합 처리로 조정될 수 있다. 이것이 전체 CU에 대한 예측 신호이며, 다른 예측 모드와 마찬가지로 전체 CU에 대해 변환과 양자화 과정이 적용될 수 있다. 마지막으로, 기하 분할 모드를 사용하여 예측된 CU의 모션 필드가 저장될 수 있다.
(단일 예측 후보 목록 구성) 단일 예측 후보 목록은 머지 예측 과정에 따라 구성된 병합 후보 목록에서 직접 유도될 수 있다. n을 기하 단일 예측 후보 목록의 인덱스로 표시하면, n에 대한 확장 병합 후보의 LX 모션 벡터(여기서 X는 n의 패리티와 같음)는 기하 분할 모드의 n번째 단일 예측 모션 벡터로 사용될 수 있다. 이러한 모션 벡터들은 도 7과 같이 "x"로 표시될 수 있다. n번째 확장 병합 후보의 해당 LX 모션 벡터가 존재하지 않는 경우, 동일한 후보의 L(1-X) 모션 벡터가 대신 기하 분할 모드의 단일 예측 모션 벡터로 사용될 수 있다.
(GPM 경계에서의 블랜딩) 각각의 모션을 사용하여 기하 분할의 각 부분을 예측한 후에는 블랜딩(blending)이 적용되어 기하 분할 가장자리 주변의 샘플을 유도할 수 있다. CU 각 위치의 혼합 가중치는 개별 위치와 분할 가장자리 간의 거리에 기반하여 유도될 수 있다. 일 실시 예에서, 샘플 위치(x ,y)로부터 분할선까지의 거리 d(x, y)와 기하 분할의 각 부분에 대한 가중치는 도 7과 같이 유도될 수 있다. 도 8에서 partIdx는 각도 인덱스(i)에 따라 달라지는 값일 수 있다.
(GPM을 위한 모션 필드 저장) GPM으로 부호화된 CU의 모션 필드에는 기하 분할의 첫 번째 부분인 Mv1, 두 번째 부분인 Mv2 및 Mv1과 Mv2를 결합한 합성 Mv가 저장될 수 있다. 모션 필드에서 각 개별 위치에 대한 저장된 모션 벡터 유형(stored motion vector type, sType)은 다음과 같이 결정될 수 있다.
[수학식]
sType = abs(motionIdx)< 32 ? 2 : ( motionIdx ≤ 0 ? ( 1 - partIdx ): partIdx )
여기서 motionIdx는 도 8의 d(x, y)를 계산하는 수식에 따라 계산된 d(4x+2,4y+2)로 결정될 수 있다. partIdx는 각도 인덱스 i에 따라 달라질 수 있다.
sType이 0이나 1과 같으면, 해당 모션 필드에 Mv0 또는 Mv1이 저장될 수 있다. 그렇지 않고 sType이 2와 같으면, Mv0과 Mv2에서 생성된 결합된 Mv가 저장될 수 있다. 결합된 Mv는 다음과 같은 과정을 통해 생성될 수 있다:
- Mv1과 Mv2가 서로 다른 참조 이미지 리스트에서 가져온 것이면(하나는 L0에서 다른 하나는 L1에서 가져온 것), Mv1과 Mv2를 단순히 결합하여 양방향 예측 모션 벡터를 형성함
- 그렇지 않고 Mv1과 Mv2가 동일한 리스트에서 가져온 것이면, 단일 예측 모션 Mv2만 저장함
이하, 영상 부호화 및 복호화에 적용될 수 있는 실시예를 설명한다. 이하 설명되는 실시예들은 서로 모순되지 않는 선에서 서로 결합되어 부호화 및 복호화를 처리에 이용될 수 있다.
실시예 1
인터 예측을 수행하기 위하여 GPM이 적용될 수 있다. 한편, GPM을 이용하여 블록의 예측 블록을 생성하기 위하여, 참조블록 1 및 참조블록 2가 참조될 수 있다. 일 실시 예에서, 참조블록 1 및 2가 4x4 크기 블록이고 GPM 분할 경계가 좌상단에서 우하단으로 향하는 사선방향인 경우, 참조블록 1에 도 9의 가중치 행렬 (A)를 곱하여 계산된 가중블록 1과, 참조블록 2에 도 9의 가중치 행렬 (B)를 곱한 가중블록 2를 더함으로써 GPM을 이용한 예측블록이 생성될 수 있다.
다른 일 실시 예에서, 두개의 인트라 예측 블록을 이용하여 GPM이 수행될 수도 있다. 이를 위하여 도 10과 같이 현재 블록과 주변의 참조 샘플이 특정되면, 도 11과 같이 현재 블록 주변의 참조 샘플을 이용하여 예측블록 1 및 2와 같은 두개의 예측 블록을 생성할 수 있다. 도 10은 현재 블록과 참조 샘플의 위치 관계를 도시하는 도면이다. 도 11은 예측블록 1과 예측블록2를 생성하는 예를 도시하는 도면이다.
예측블록 1은 참조 샘플과 제 1 인트라 예측 모드에 의하여 예측될 수 있다. 예측블록 2는 참조 샘플과 제 2 인트라 예측 모드에 의하여 예측될 수 있다. 실시 예에 따라, 제1 인트라 예측 모드와 제2 인트라 예측 모드는 서로 다른 모드를 가지도록 제한될 수 있다.
그리고, 생성된 예측블록 1에는 가중행렬 A가 곱해짐으로써 가중 예측블록 1이 생성될 수 있다. 그리고, 생성된 예측블록 2에는 가중행렬 B가 곱해짐으로써 가중 예측블록 2가 생성될 수 있다. 예를들어, GPM 파티션 인덱스 모드가 우하향 사선 모드인 경우 도 9에 도시된 바와 같은 가중행렬 A 및 B가 사용될 수 있다. 그 후, 가중 예측블록 1과 가중 예측블록 2를 행렬 덧셈 함으로써, 현재 블록을 위한 GPM 방식 예측 블록이 생성될 수 있다.
이와 같은 방식으로 부호화/복호화를 수행하기 위하여, 현재 블록에 대해 아래의 세개의 파라미터가 요구될 수 있다.
- partition_mode_idx : GPM 파티셔닝 모양을 타나내는 인덱스
- intra_pred_mode0_idx : 예측블록 2의 인트라 예측 모드를 나타내는 인덱스
- intra_pred_mode1_idx : 예측블록 1의 인트라 예측 모드를 나타내는 인덱스
한개 블록의 인트라 GPM 예측을 수행하기 위하여 세개의 인덱스를 전송하는 것은 부호화율을 저해할 수 있다. 이에, 아래와 같이 GPM 후보 리스트를 생성하고, 후보 리스트 중에서 현재 블록을 부호화 하기 위하여 사용되는 후보를 나타내는 인덱스(e.g. gpm_cand_idx)만 비트스트림을 통해 복호화 장치로 시그널링하는 부호화 방법을 사용할 수 있다.
GPM 후보 리스트 = [ GPM 후보1, GPM 후보2, GPM 후보3, ... , GPM 후보 16]
일 실시 예에서, GPM 후보 리스트는 16개의 GPM 후보를 요소로 가지는 배열일 수 있다. GPM 후보는 아래의 파라미터를 하나씩 포함하여 구성될 수 있다.
- partition_mode_idx : GPM 파티셔닝 모양을 타나내는 인덱스
- intra_pred_mode0_idx : 예측블록 2의 인트라 예측 모드를 나타내는 인덱스
- intra_pred_mode1_idx : 예측블록 1의 인트라 예측 모드를 나타내는 인덱스
부호화 과정에서 MPM 후보를 생성하는 방법과 같이 소정의 방식으로 GPM 후보가 선택됨으로써 GPM 후보 리스트가 부호화 과정에서 생성될 수 있으며, 마찬가지 방식으로 복호화 과정에서 MPM 후보를 생성하는 방법과 같이 소정의 방식으로 GPM 후보가 선택됨으로써 GPM 후보 리스트가 복호화 과정에서 생성될 수 있다. 예를 들어, 현재 블록을 부호화/복호화 하기 전까지 사용된 빈도가 높은 순서대로 GPM 후보 리스트가 생성될 수 있다.
이를 통해, partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx를 모두 시그널링 하지 않고, gpm_cand_idx만 시그널링 함으로써 부호화시 생성되는 비트스트림의 크기를 줄일 수 있게 된다.
실시예 2
실시예 1과 같이, 인트라 GPM이 적용되지 않는 블록이 존재할 수 있기에, 모든 블록(e.g. CU)에 대하여 gpm_cand_idx(블록을 부호화 하기 위하여 사용되는 후보를 나타내는 인덱스 )가 시그널링 되는 것은 비효율적이다. 이를 위하여, gpm_cand_idx의 시그널링 조건을 제한할 필요가 있다.
도 12는 비트스트림의 NAL 유닛 중, CU에서 GPM 부호화 정보의 시그널링을 나타내는 신택스를 도시하는 도면이다. 도 12를 참조하여 설명한다.
플래그 Cu_gpm_flag가 이용될 수 있다. Cu_gpm_flag는 인트라 gpm이 사용되는지 여부를 나타낼 수 있다. 예를 들어, Cu_gpm_flag의 값 1은 현재 블록에 대하여 gpm이 적용됨을 나타낼 수 있다. Cu_gpm_flag의 값 0은 gpm이 적용되지 않음을 나타낼 수 있다.
GPM이 적용되는 경우 비트스트림으로부터 플래그 gpm_idx_signal_flag가 획득될 수 있다. gpm_idx_signal_flag는 gpm_cand_idx가 시그널되는지 여부를 나타낼 수 있다. 예를 들어, Gpm_idx_signal_flag 값 1은 Gpm_cand_idx이 시그널 됨을 나타낼 수 있다. Gpm_idx_signal_flag 값 0은 Gpm_cand_idx이 시그널 되지 않음을 나타낼 수 있다.
Gpm_idx_signal_flag 값 0인 경우 미리 설정된 소정의 값으로 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx가 결정될 수 있다. 이에 대한 예시는 아래와 같을 수 있다.
e.g.1,
partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx는 현재 CU의 좌측 CU의 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx 값으로 설정될 수 있음.
e.g.2,
partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx는 현재 CU의 상단 CU의 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx 값으로 설정될 수 있음.
e.g.3,
partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx는 현재 CU의 좌상단 CU의 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx 값으로 설정될 수 있음.
e.g.4,
partition_mode_idx는 현재 CU의 좌상단 픽셀과 우하단 픽셀을 잇는 선분으로 구획되는 대각선 분할을 나타내는 인덱스로 설정될 수 있음. intra_pred_mode0_idx 및 intra_pred_mode1_idx는 현재 CU의 좌상단 CU의 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx 값으로 설정될 수 있음.
e.g.5,
partition_mode_idx는 현재 CU의 좌상단 픽셀과 우하단 픽셀을 잇는 선분으로 구획되는 대각선 분할을 나타내는 인덱스로 설정될 수 있음. intra_pred_mode0_idx는 수직 방향(상단에서 하단으로의 방향) intra_pred_mode1_idx는 수평 방향(좌측에서 우측으로의 방향)을 나타내는 값으로 설정될 수 있음.
e.g.6,
partition_mode_idx는 현재 CU의 좌상단 픽셀과 우하단 픽셀을 잇는 선분으로 구획되는 대각선 분할을 나타내는 인덱스로 설정될 수 있음. intra_pred_mode0_idx와 intra_pred_mode1_idx는 partition_mode_idx에 수직한 방향으로 설정될 수 있음
e.g.7,
partition_mode_idx는 현재 CU의 좌상단 픽셀과 우하단 픽셀을 잇는 선분으로 구획되는 대각선 분할을 나타내는 인덱스로 설정될 수 있음. intra_pred_mode0_idx와 intra_pred_mode1_idx는 partition_mode_idx에 평행한 방향으로 설정될 수 있음
실시예 3
실시예 1과 같이, 인트라 GPM이 적용되지 않는 블록이 존재할 수 있기에, 모든 블록(e.g. CU)에 대하여 gpm_cand_idx(블록을 부호화 하기 위하여 사용되는 후보를 나타내는 인덱스 )가 시그널링 되는 것은 비효율적이다. 이를 위하여, gpm_cand_idx의 시그널링 조건을 제한할 필요가 있다.
도 13은 비트스트림의 NAL 유닛 중, CU에서 GPM 부호화 정보의 시그널링을 나타내는 신택스를 도시하는 도면이다. 도 13을 참조하여 설명하되, 실시예 2와 다른 부분을 위주로 설명한다.
실시예 2와 유사하게, Cu_gpm_flag는 gpm이 사용되는지 여부를 나타낼 수 있다. (e.g., Cu_gpm_flag의 값 1은 gpm이 적용됨을 나타냄, Cu_gpm_flag의 값 0은 gpm이 적용되지 않음을 나타냄)
GPM이 적용되는 경우 비트스트림으로부터 플래그 Gpm_idx_signal_flag이 획득될 수 있다. Gpm_idx_signal_flag는 partition_mode_idx가 시그널되는지 여부를 나타낼 수 있다. 예를 들어, Gpm_idx_signal_flag 값 1은 partition_mode_idx가 시그널 됨을 나타낼 수 있다. Gpm_idx_signal_flag 값 0은 partition_mode_idx가 시그널 되지 않음을 나타낼 수 있다.
partition_mode_idx의 값에 따라, GPM을 위한 CU의 파티션 구조가 결정될 수 있다. 예를 들어, intra_pred_mode0_idx 및 intra_pred_mode1_idx는 소정의 값으로 결정될 수 있다. 이에 대한 예시는 아래와 같다.
e.g. 1,
intra_pred_mode1_idx는 현재 CU의 좌측 CU의 인트라 예측 모드로 결정될 수 있음. 예를들어, 현재 CU의 최상단 샘플의 좌측 샘플이 포함된 CU의 인트라 예측 모드로 결정될 수 있음
intra_pred_mode0_idx는 현재 CU의 상단 CU의 인트라 예측 모드로 결정될 수 있음. 예를들어, 현재 CU의 최상단 샘플의 상단 샘플이 포함된 CU의 인트라 예측 모드로 결정될 수 있음
e.g. 2,
intra_pred_mode0_idx 및 intra_pred_mode1_idx는 partition_mode_idx에 따라 선택되는 현재 CU의 주변 블록의 인트라 모드로 결정될 수 있음
예를들어, partition_mode_idx가 나타내는 현재 CU의 파티션 경계에 대응되는 최좌측 샘플을 기준으로, 현재 CU에 속하지 않으면서 최좌측 샘플에 가장 좌측에서 근접한 샘플이 속한 CU의 인트라 예측 모드로 intra_pred_mode1_idx가 결정될 수 있음.
예를들어, partition_mode_idx가 나타내는 현재 CU의 파티션 경계에 대응되는 최좌측 샘플을 기준으로, 현재 CU에 속하지 않으면서 최좌측 샘플에 가장 상단에서 근접한 샘플이 속한 CU의 인트라 예측 모드로 intra_pred_mode0_idx가 결정될 수 있음.
실시예 4
실시예 2와 유사하게, Cu_gpm_flag는 gpm이 사용되는지 여부를 나타낼 수 있다.(e.g. Cu_gpm_flag의 값 1은 gpm이 적용됨을 나타냄, Cu_gpm_flag의 값 0은 gpm이 적용되지 않음을 나타냄.) 이하 실시예 2와 상이한 부분을 위주로 설명한다.
GPM이 적용되는 경우 비트스트림으로부터 플래그 Gpm_idx_signal_flag이 획득될 수 있다. Gpm_idx_signal_flag는 Gpm_cand_idx가 시그널되는지 여부를 나타낼 수 있다. 예를 들어, Gpm_idx_signal_flag 값 1은 Gpm_cand_idx가 시그널 됨을 나타낼 수 있다. Gpm_idx_signal_flag 값 0은 Gpm_cand_idx가 시그널 되지 않음을 나타낼 수 있다.
Gpm_cand_idx는 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx를 포함하는 서브셋으로 구성된 후보 리스트에서 하나의 서브셋을 특정할 수 있다.
일 실시 예에서, 후보 리스트의 서브셋은 아래의 서브셋(전술한 GPM 후보에 대응)을 포함할 수 있다.
e.g.1,
partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx는 현재 CU의 좌측 CU의 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx 값으로 설정될 수 있음.
e.g.2,
partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx는 현재 CU의 상단 CU의 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx 값으로 설정될 수 있음.
e.g.3,
partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx는 현재 CU의 좌상단 CU의 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx 값으로 설정될 수 있음.
e.g.4,
partition_mode_idx는 현재 CU의 좌상단 픽셀과 우하단 픽셀을 잇는 선분으로 구획되는 대각선 분할을 나타내는 인덱스로 설정될 수 있음. intra_pred_mode0_idx 및 intra_pred_mode1_idx는 현재 CU의 좌상단 CU의 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx 값으로 설정될 수 있음.
e.g.5,
partition_mode_idx는 현재 CU의 좌상단 픽셀과 우하단 픽셀을 잇는 선분으로 구획되는 대각선 분할을 나타내는 인덱스로 설정될 수 있음. intra_pred_mode0_idx는 수직 방향(상단에서 하단으로의 방향) intra_pred_mode1_idx는 수평 방향(좌측에서 우측으로의 방향)을 나타내는 값으로 설정될 수 있음.
e.g.6,
partition_mode_idx는 현재 CU의 좌상단 픽셀과 우하단 픽셀을 잇는 선분으로 구획되는 대각선 분할을 나타내는 인덱스로 설정될 수 있음. intra_pred_mode0_idx와 intra_pred_mode1_idx는 partition_mode_idx에 수직한 방향으로 설정될 수 있음
e.g.7,
partition_mode_idx는 현재 CU의 좌상단 픽셀과 우하단 픽셀을 잇는 선분으로 구획되는 대각선 분할을 나타내는 인덱스로 설정될 수 있음. intra_pred_mode0_idx와 intra_pred_mode1_idx는 partition_mode_idx에 평행한 방향으로 설정될 수 있음
실시예 5
일 실시 예에서, 전술한 인트라 GPM을 위한 partition_mode_idx와 인트라 예측 모드 정보의 예측은 픽쳐의 최상단 CU에 대하여는 적용되지 않도록 제한될 수 있다.
일 실시 예에서, 전술한 인트라 GPM을 위한 partition_mode_idx와 인트라 예측 모드 정보의 예측은 픽쳐의 최상단 행에 속한 CU는 상단 블록을 참조 하지 않도록 제한될 수 있다. 예를들어, 상단 블록의 partition_mode_idx와 인트라 예측 모드 정보를 참조하지 않도록 제한될 수 있다. 예를들어, 좌측 블록의 partition_mode_idx와 인트라 예측 모드 정보 및 미리 설정된 소정의 partition_mode_idx와 인트라 예측 모드 정보 만을 참조하도록 제한될 수 있다.
일 실시 예에서, 전술한 인트라 GPM을 위한 partition_mode_idx와 인트라 예측 모드 정보의 예측은 픽쳐의 최좌측 행에 속한 CU는 좌측 블록을 참조하지 않도록 제한될 수 있다. 예를들어, 좌측 블록의 partition_mode_idx와 인트라 예측 모드 정보를 참조하지 않도록 제한될 수 있다. 예를들어, 상단 블록의 partition_mode_idx와 인트라 예측 모드 정보 및 미리 설정된 소정의 partition_mode_idx와 인트라 예측 모드 정보 만을 참조하도록 제한될 수 있다.
실시예 6
일 실시 예에서 블록의 크기에 따라 GPM의 적용 여부가 제한될 수 있다. 블록이 소정의 크기 이하일 경우 블록을 파티셔닝 하고, 파티셔닝 정보를 시그널링 하는데에 더 많은 비트가 소요될 수도 있으며, 부호화 및 복호화 연산 복잡도를 상당히 증가시킬 수 있다.
부호화 효율 및 연산복잡도 개선을 위하여 전술한 인트라 GPM은 소정 크기 이상의 블록에 대하여만 적용될 수 있다. 예를들어, 인트라 GPM은 4개를 가지거나 또는 그 보다 많은 샘플을 가진 블록에 대하여만 적용될 수 있다. 예를들어, CU 블록의 너비가 2 이상이고 높이가 2 이상인 블록, CU 블록의 너비가 4 이상인 블록, CU 블록의 높이가 4 이상인 블록에 대하여만 적용될 수 있다. 블록의 너비와 길이는 샘플 개수에 기반하여 세어질 수 있다(이하 동일).
예를들어, 인트라 GPM은 8 개를 가지거나 또는 그 보다 많은 샘플을 가진 블록에 대하여만 적용될 수 있다. 예를들어, CU 블록의 너비가 8 이상인 블록, CU 블록의 너비가 4 이상이고 높이가 2 이상인 블록, CU 블록의 너비가 2 이상이고 높이가 4 이상인 블록, CU 블록의 높이가 8 이상인 블록에 대하여만 적용될 수 있다.
예를들어, 인트라 GPM은 16 개를 가지거나 또는 그 보다 많은 샘플을 가진 블록에 대하여만 적용될 수 있다. 예를들어, CU 블록의 너비가 16 이상인 블록, CU 블록의 너비가 8 이상이고 높이가 2 이상인 블록, CU 블록의 너비가 4 이상이고 높이가 4 이상인 블록, CU 블록의 너비가 2 이상이고 높이가 8 이상인 블록, CU 블록의 높이가 16 이상인 블록에 대하여만 적용될 수 있다.
예를들어, 인트라 GPM은 32 개를 가지거나 또는 그 보다 많은 샘플을 가진 블록에 대하여만 적용될 수 있다. 예를들어, CU 블록의 너비가 32 이상인 블록, CU 블록의 너비가 16 이상이고 높이가 2 이상인 블록, CU 블록의 너비가 8 이상이고 높이가 4 이상인 블록, CU 블록의 너비가 4 이상이고 높이가 8 이상인 블록, CU 블록의 너비가 2 이상이고 높이가 16 이상인 블록, CU 블록의 높이가 32 이상인 블록에 대하여만 적용될 수 있다.
또는, 부호화 효율 및 연산복잡도 개선을 위하여 전술한 인트라 GPM을 위한 partition_mode_idx와 인트라 예측 모드 정보(e.g. intra_pred_mode0_idx 등)의 시그널링은 소정 크기 이상의 블록에 대하여만 적용될 수 있다. 예를들어, partition_mode_idx와 인트라 예측 모드 정보(e.g. intra_pred_mode0_idx 등)의 시그널링은 4개를 가지거나 또는 그 보다 많은 샘플을 가진 블록에 대하여만 적용될 수 있다.
예를들어, partition_mode_idx와 인트라 예측 모드 정보(e.g. intra_pred_mode0_idx 등)의 시그널링은 8 개를 가지거나 또는 그 보다 많은 샘플을 가진 블록에 대하여만 적용될 수 있다.
예를들어, partition_mode_idx와 인트라 예측 모드 정보(e.g. intra_pred_mode0_idx 등)의 시그널링은 16 개를 가지거나 또는 그 보다 많은 샘플을 가진 블록에 대하여만 적용될 수 있다.
예를들어, partition_mode_idx와 인트라 예측 모드 정보(e.g. intra_pred_mode0_idx 등)의 시그널링은 32 개를 가지거나 또는 그 보다 많은 샘플을 가진 블록에 대하여만 적용될 수 있다.
partition_mode_idx와 인트라 예측 모드 정보(e.g. intra_pred_mode0_idx 등)가 시그널링 되지 않는 경우, 미리 설정된 소정의 값으로 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx가 결정될 수 있다. 이에 대한 예시는 아래와 같다.
e.g.1,
partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx는 현재 CU의 좌측 CU의 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx 값으로 설정될 수 있음.
e.g.2,
partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx는 현재 CU의 상단 CU의 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx 값으로 설정될 수 있음.
e.g.3,
partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx는 현재 CU의 좌상단 CU의 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx 값으로 설정될 수 있음.
e.g.4,
partition_mode_idx는 현재 CU의 좌상단 픽셀과 우하단 픽셀을 잇는 선분으로 구획되는 대각선 분할을 나타내는 인덱스로 설정될 수 있음. intra_pred_mode0_idx 및 intra_pred_mode1_idx는 현재 CU의 좌상단 CU의 partition_mode_idx, intra_pred_mode0_idx 및 intra_pred_mode1_idx 값으로 설정될 수 있음.
e.g.5,
partition_mode_idx는 현재 CU의 좌상단 픽셀과 우하단 픽셀을 잇는 선분으로 구획되는 대각선 분할을 나타내는 인덱스로 설정될 수 있음. intra_pred_mode0_idx는 수직 방향(상단에서 하단으로의 방향) intra_pred_mode1_idx는 수평 방향(좌측에서 우측으로의 방향)을 나타내는 값으로 설정될 수 있음.
e.g.6,
partition_mode_idx는 현재 CU의 좌상단 픽셀과 우하단 픽셀을 잇는 선분으로 구획되는 대각선 분할을 나타내는 인덱스로 설정될 수 있음. intra_pred_mode0_idx와 intra_pred_mode1_idx는 partition_mode_idx에 수직한 방향으로 설정될 수 있음
e.g.7,
partition_mode_idx는 현재 CU의 좌상단 픽셀과 우하단 픽셀을 잇는 선분으로 구획되는 대각선 분할을 나타내는 인덱스로 설정될 수 있음. intra_pred_mode0_idx와 intra_pred_mode1_idx는 partition_mode_idx에 평행한 방향으로 설정될 수 있음
실시예 7
도 15는 GPM 적용 예시를 나타내는 도면이다. GPM PB(GPM partitioning boundary)를 기준으로 BAS(GPM Blending area size)만큼 이격된 거리에 위치하는 UL(upper line)과 LL(lower line)까지 GPM에 의한 블렌딩(blending)이 처리될 수 있고, 해당 영역을 GPM BA(GPM blending area)라고 명명할 수 있다. (여기서 GPM PB(GPM partitioning boundary)를 기준으로 BAS(GPM Blending area size)만큼 이격된 방향은 GPM PB에 수직한 방향이나, 실시예에 따라서는 수직 또는 수평 방향으로 계산될 수도 있다.)
GPM blending은 실시예 1에서 설명된 바와 같이 현재블록의 예측블록1과 예측블록2에 서로 다른 가중치를 적용하여 더함으로써 수행될 수 있다.
일 실시 예에서 BAS는 2 샘플 길이로 설정될 수 있다. 한편, GPM을 보다 다양한 형태로 처리하기 위하여 BAS를 다양한 샘플 길이로 설정할 수도 있다. 예를 들어, BAS는 1/2, 1, 2, 4, 8 또는 16 샘플 길이로 수행될 수도 있다.
그리고, 실시예 1에서와 같은 가중 행렬은 다양한 BAS를 지원하기 위하여 다양한 해상도의 가중치로 설정될 수도 있다.
예를들어, BAS가 2 샘플 길이 인 경우 적어도 6개의 가중치 레벨을 갖는 가중치 값들을 가질 수 있다. 예를 들어, 0/6, 1/6, 2/6, 3/6, 4/6, 5/6 및 6/6의 가중치를 가질 수 있다.
예를들어, GPM PB가 도 16의 채색된 셀과 같이 위로부터 4번째행에 해당하는 예시의 경우, 가중행렬 A는 도 16과 같이 생성될 수 있다. 그리고 가중행렬 B는 도 17과 같이 생성될 수 있다.
일 실시 예에서, 상기와 같은 가중치를 나타내기 위한 인덱스는 3개의 비트로 표현되는 인덱스로 시그널링될 수 있다.
상기와 같이, BAS와 가중치 레벨 개수는 소정의 상관관계를 가질 수 있다. 일 실시 예에서, 가중치 레벨(e.g. 가중치 값) 개수는 BAS * 2 + 2개로 결정되거나, 이보다 큰 값으로 결정될 수 있다.
예를들어, BAS가 1/2, 1, 2, 4, 8 또는 16 샘플 길이일 때, 가중치 레벨 개수는 3, 4, 6, 10, 34개로 수행될 수 있다.
또는, 가중치의 값을 표현하기 위한 해상도를 BAS * 2 + 2개로 결정하거나, 이보다 큰 값으로 결정할 수 있다. 여기서 해상도란 상기 가중행렬 A와 B에서의 분모 6과 같이 서로다른 가중치를 표현하기 위한 가중치 값의 해상도를 나타내며, 이는 실제로 적용되는 가중치 레벨의 개수와 무관히 결정될 수 있다.
예를들어, BAS가 1/2, 1, 2, 4, 8 또는 16 샘플 길이일 때, 가중치 값을 나타내는 해상도는 3, 4, 6, 10, 34로 수행될 수 있으며, 실제 적용되는 가중치 값의 개수는 이러한 해상도로 표현되는 가중치 값 중에서 선택되어 사용될 수 있다.
한편, 상기와 같이 특정 BAS에 대하여 가중치 해상도가 정해진 이후, 특정 케이스(e.g. 블록 내 샘플의 위치, 블록의 크기, 임의 설정)에서는 선택된 가중치 값에 추가 가중치를 더하거나 곱함으로써 GPM을 수행하기 위한 가중치가 산출될 수도 있다.
또한, 블록의 크기에 기반하여 허용 가능한 BAS가 제한될 수 있다.
예를들어, 블록의 너비와 높이 중 작은 값을 기준이라고 하였을 때, BAS는 아래의 수식으로 결정될 수 있다.
BAS * 2 + 2 = 기준 = min(블록의 너비, 블록의 높이)
BAS = (min(블록의 너비, 블록의 높이) - 2 )/2
또는, 블록의 너비와 높이 중 작은 값을 기준이라고 하였을 때, BAS 기준값은 아래의 수식으로 결정될 수 있다.
BAS 기준값 * 2 + 2 = 기준 = min(블록의 너비, 블록의 높이)
BAS 기준값 = (min(블록의 너비, 블록의 높이) - 2 )/2
그리고 BAS는 2의 거듭제곱수 중 BAS 기준값과 같은 수, 또는 BAS 기준값보다 작은 2의 거듭제곱수 중에서 가장 큰 수로 결정될 수 있다.
또는, BAS는 아래의 조건을 충족하도록 제한될 수 있다.
BAS <= (min(블록의 너비, 블록의 높이) - 2 )/2
또는, BAS는 아래의 조건을 충족하는 BAS는 사용되지 않도록 제한될 수 있다.
BAS > (min(블록의 너비, 블록의 높이) - 2 )/2
이를 응용하면, CU 단위에서의 BAS 값의 시그널링은 아래와 같이 수행될 수 있다.
e.g. 1 : BAS의 최소값이 1/2인 경우,
블록의 너비와 높이 중 작은 값이 3이면, 허용가능한 BAS는 1/2뿐이다. 따라서, 부호화에 사용된 BAS를 시그널링 하기 위한 정보를 부호화하지 않아도 되며, 디코더는 비트스트림으로부터 BAS의 크기 정보를 획득하지 않고, BAS가 1/2임을 유도할 수 있다.
블록의 너비와 높이 중 작은 값이 4이면, 허용가능한 BAS는 1/2과 1이다. 따라서, 부호화에 사용된 BAS를 시그널링 하기 위한 정보는 1비트의 플래그로 시그널링될 수 있다. 디코더는 비트스트림으로부터 BAS의 크기 정보 나타내는 플래그 값을 획득하여, BAS 값을 결정할 수 있다.
블록의 너비와 높이 중 작은 값이 6 보다 크면, 허용가능한 BAS는 1/2, 1, 2를 포함할 수 있다. 따라서, 부호화에 사용된 BAS를 시그널링 하기 위한 정보는 적어도 2비트의 인덱스로 시그널링될 수 있다. 디코더는 비트스트림으로부터 BAS의 크기 정보 나타내는 인덱스 값을 획득하여, BAS 값을 결정할 수 있다.
e.g. 2 : BAS의 최소값이 1인 경우,
블록의 너비와 높이 중 작은 값이 3 이하면, 허용가능한 BAS없다. 영상의 부호화에 사용가능한 BAS의 최소값이 1이므로, 해당 블록에는 GPM이 적용되지 않는다. 따라서, 인코더는 해당 블록에 GPM을 적용하지 않으며, 디코더는 비트스트림으로부터 GPM에 관한 정보를 획득하지 않고, GPM이 적용되지 않음을 결정할 수 있다.
블록의 너비와 높이 중 작은 값이 4이면, 허용가능한 BAS는 1이다. 따라서, 인코더는 부호화에 사용된 BAS를 시그널링 하기 위한 정보를 부호화하지 않아도 되며, 디코더는 비트스트림으로부터 BAS의 크기 정보를 획득하지 않고, BAS가 1임을 유도할 수 있다.
블록의 너비와 높이 중 작은 값이 6이면, 허용가능한 BAS는 1과 2이다. 부호화에 사용된 BAS를 시그널링 하기 위한 정보는 1비트의 플래그로 시그널링될 수 있다. 디코더는 비트스트림으로부터 BAS의 크기 정보 나타내는 플래그 값을 획득하여, BAS 값을 결정할 수 있다.
블록의 너비와 높이 중 작은 값이 8이면, 허용가능한 BAS는 1, 2를 포함할 수 있다(BAS 값으로 3이 포함되지 않기에). 따라서, 부호화에 사용된 BAS를 시그널링 하기 위한 정보는 1비트의 플래그로 시그널링될 수 있다. 디코더는 비트스트림으로부터 BAS의 크기 정보 나타내는 플래그 값을 획득하여, BAS 값을 결정할 수 있다.
한편 BAS 값으로 3이 허용되는 경우, 블록의 너비와 높이 중 작은 값이 8이면, 허용가능한 BAS는 1, 2, 3을 포함할 수 있다. 따라서, 부호화에 사용된 BAS를 시그널링 하기 위한 정보는 2비트의 인덱스로 시그널링될 수 있다. 디코더는 비트스트림으로부터 BAS의 크기 정보 나타내는 인덱스 값을 획득하여, BAS 값을 결정할 수 있다.
블록의 너비와 높이 중 작은 값이 16이면, 허용가능한 BAS는 1, 2, 4를 포함할 수 있다. 따라서, 부호화에 사용된 BAS를 시그널링 하기 위한 정보는 2비트의 인덱스로 시그널링될 수 있다. 디코더는 비트스트림으로부터 BAS의 크기 정보 나타내는 인덱스 값을 획득하여, BAS 값을 결정할 수 있다.
상기와 같이, BAS(blending area size) 시그널링은 CU 레벨에서 시그널링될 수도 있지만, BAS 정보가 그룹단위로 동일한 경우, 슬라이스단위나, 픽쳐, 시퀀스 단위에서 전송될 수도 있다.
또는, 상위 레벨(e.g., 비디오, 시퀀스, 픽쳐, 또는 슬라이스 레벨)에서 기준을 시그널링하고, 적용레벨(e.g., CU 레벨)에서 차분을 시그널링하는 것도 가능하다. 예를들어, 픽쳐 단위에서 BAS 인덱스의 최소 값이나 최대값을 시그널링 하고, CU 단위에서 BAS 인덱스를 시그널링 할 수도 있다. 예를들어, PPS에서 BAS의 최대 값을 16으로 시그널링할 수 있으며, CU 단위에서 이를 세분화하는 모수를 시그널링 할 수도 있다.
또는, 상위 레벨(e.g., 비디오, 시퀀스, 픽쳐, 또는 슬라이스 레벨)에서 BAS의 프리픽스(prefix)를 시그널링하고, 적용레벨(e.g., CU 레벨)에서 BAS의 서픽스(suffix)를 시그널링하는 것도 가능하다. 예를들어, PPS에서 BAS의 프리픽스(prefix)를 시그널링 하고, CU 단위에서 BAS의 서픽스(suffix)를 시그널링할 수도 있다. 프리픽스는 소정의 비트 자리수에서의 값을 나타낼 수도 있다.
한편, 상위 레벨(e.g., 비디오, 시퀀스, 픽쳐, 또는 슬라이스 레벨)에서 BAS의 서픽스를 시그널링하고, 적용레벨(e.g., CU 레벨)에서 BAS의 프리픽스를 시그널링할 수도 있다. 예를들어, PPS에서 BAS의 서픽스를 시그널링 하고, CU 단위에서 BAS의 서픽스(suffix)를 시그널링할 수도 있다.
예를들어, BAS의 구성이 1/2, 1, 2, 4, 8, 16인 경우, 프리픽스가 1비트, 서픽스가 2비트로 구성되면, 프리픽스와 서픽스가 나타내는 BAS는 아래와 같이 조합될 수 있다.
프리픽스 서픽스 BAS
0 00 1/2
0 01 1
0 10 2
0 11 4
1 00 8
1 01 16
예를들어, BAS의 구성이 1/2, 1, 2, 4, 8, 16인 경우, 프리픽스가 2비트, 서픽스가 1비트로 구성되면, 프리픽스와 서픽스가 나타내는 BAS는 아래와 같이 조합될 수 있다.
프리픽스 서픽스 BAS
00 0 1/2
00 1 1
01 0 2
01 1 4
10 0 8
10 1 16
예를들어, BAS의 구성이 1/2, 1, 2, 4, 8, 16인 경우, 제1 프리픽스가 1비트, 제2 프리픽스가 1비트, 서픽스가 1비트로 구성되면, 프리픽스와 서픽스가 나타내는 BAS는 아래와 같이 조합될 수 있다.
제1 프리픽스 제2 프리픽스 서픽스 BAS
0 0 0 1/2
0 0 1 1
0 1 0 2
0 1 1 4
1 0 0 8
1 0 1 16
여기서 제1 프리픽스, 제2 프리픽스, 서픽스의 전달 유닛은 아래와 같을 수 있다.
예시 # 제1 프리픽스 제2 프리픽스 서픽스
1 VPS(비디오파라미터셋) SPS(시퀀스파라미터셋) CU(부호화 유닛/블록)
2 VPS PPS(비디오파라미터셋) CU
3 VPS 슬라이스(CU의 집합)의 헤더 CU
4 VPS 타일(1개 픽쳐내 슬라이스의 집합)의 헤더 CU
5 PPS 타일의 헤더 CU
6 PPS 슬라이스의 헤더 CU
7 타일의 헤더 슬라이스의 헤더 CU
8 CU(부호화 유닛/블록) SPS(시퀀스파라미터셋) VPS(비디오파라미터셋)
9 CU PPS(비디오파라미터셋) VPS
10 CU 슬라이스(CU의 집합)의 헤더 VPS
11 CU 타일(1개 픽쳐내 슬라이스의 집합)의 헤더 VPS
12 CU 타일의 헤더 PPS
13 CU 슬라이스의 헤더 PPS
14 CU 슬라이스의 헤더 타일의 헤더
예를들어, 예시1의 경우 멀티 레이어 부호화의 경우, 레이어 0의 고해상도 영상을 부호화 하기 위한 제1 프리픽스를 VPS를 통해 시그널링 하고, 제2 프리픽스와 서픽스를 통해 해당 CU에 대한 BAS 값을 시그널링 함으로써 BAS 시그널링에 소요되는 비트수를 절감할 수 있다.
또는 아래와 같이 수행될 수도 있다. 여기서 프리픽스 비트 정보는 프리픽스의 비트길이를 나타낼 수 있다.
프리픽스 비트 길이 정보 프리픽스 서픽스 BAS
0 0 0 1/2
0 0 1 1
0 1 0 2
0 1 1 4
1 00 0 1/2
1 00 1 1
1 01 0 2
1 01 1 4
1 10 0 8
1 10 1 16
여기서 프리픽스 비트 정보, 프리픽스, 서픽스의 전달 유닛은 아래와 같을 수 있다.
예시 # 프리픽스 비트 정보 프리픽스 서픽스
1 VPS(비디오파라미터셋) SPS(시퀀스파라미터셋) CU(부호화 유닛/블록)
2 VPS PPS(비디오파라미터셋) CU
3 VPS 슬라이스(CU의 집합)의 헤더 CU
4 VPS 타일(1개 픽쳐내 슬라이스의 집합)의 헤더 CU
5 PPS 타일의 헤더 CU
6 PPS 슬라이스의 헤더 CU
7 타일의 헤더 슬라이스의 헤더 CU
8 CU(부호화 유닛/블록) SPS(시퀀스파라미터셋) VPS(비디오파라미터셋)
9 CU PPS(비디오파라미터셋) VPS
10 CU 슬라이스(CU의 집합)의 헤더 VPS
11 CU 타일(1개 픽쳐내 슬라이스의 집합)의 헤더 VPS
12 CU 타일의 헤더 PPS
13 CU 슬라이스의 헤더 PPS
14 CU 슬라이스의 헤더 타일의 헤더
예를들어, 예시1의 경우 멀티 레이어 부호화의 경우, 레이어 마다 소요되는 BAS의 비트수를 VPS를 통해 시그널링 하고, 프리픽스와 서픽스를 통해 해당 CU에 대한 BAS 값을 시그널링 함으로써 BAS 시그널링에 소요되는 비트수를 절감할 수 있다.
한편, 프리픽스 비트 정보는 실시 예에 따라, 서픽스 비트 길이 정보를 나타내도록 사용되거나, BAS 비트 길이 정보로 사용될 수 있다. 아래는 BAS 비트 길이 정보로 사용되는 예시이며, BAS 비트 길이 정보는 상위 레벨(e.g., 비디오, 시퀀스, 픽쳐, 또는 슬라이스 레벨)에서 전송될 수 있으며, BAS 인덱스는 CU에서 전송될 수 있다.
BAS 비트 길이 정보 BAS 인덱스 BAS
0 0 1/2
0 1 1
1 00 1/2
1 01 1
1 10 2
1 11 4
한편, CU 레벨에서 BAS를 나타내는 정보(e.g. 서픽스, BAS 인덱스 등)는 CU 집합(e.g. 타일, 슬라이스 중 1개 CU에 대하여만 부호화될 수 있다(디코더는 비트스트림에서 해당 CU에 대한 BAS 정보만 획득할 수 있다). 예를들어, CU 집합 중 첫번째로 비트스트림에서 파싱되는 CU에 BAS 정보가 부호화될 수 있다.
한편, weight도 상술한 바와 같이 BAS와 같은 방식으로 시그널링 될 수 있다.
이를 응용하면, CU 단위에서의 weight 값의 시그널링은 아래와 같이 수행될 수 있다. GPM 파티션 모드와 BAS 값에 따라 샘플마다 적용되는 기본 가중 행렬이 결정될 수 있다. 그러나, 기본 가중 행렬에 적용되는 가중치 값을 증폭시키기 위한 추가 가중치가 시그널링될 수 있다. 이하 추가 가중치를 W_WEIGHT라 하여 후술한다.
W_WEIGHT 시그널링은 CU 레벨에서 시그널링될 수도 있지만, W_WEIGHT 정보가 그룹단위로 동일한 경우, 슬라이스단위나, 픽쳐, 시퀀스 단위에서 전송될 수도 있다.
또는, 상위 레벨(e.g., 비디오, 시퀀스, 픽쳐, 또는 슬라이스 레벨)에서 기준을 시그널링하고, 적용레벨(e.g., CU 레벨)에서 차분을 시그널링하는 것도 가능하다. 예를들어, 픽쳐 단위에서 WEIGH의 최소 값이나 최대값을 시그널링 하고, CU 단위에서 W_WEIGHT를 시그널링 할 수도 있다. 예를들어, PPS에서 W_WEIGHT의 최대 값을 16으로 시그널링할 수 있으며, CU 단위에서 이를 세분화하는 모수를 시그널링 할수도 있다.
또는, 상위 레벨(e.g., 비디오, 시퀀스, 픽쳐, 또는 슬라이스 레벨)에서 W_WEIGHT의 프리픽스(prefix)를 시그널링하고, 적용레벨(e.g., CU 레벨)에서 W_WEIGHT의 서픽스(suffix)를 시그널링하는 것도 가능하다. 예를들어, PPS에서 W_WEIGHT의 프리픽스(prefix)를 시그널링 하고, CU 단위에서 W_WEIGHT의 서픽스(suffix)를 시그널링할 수도 있다. 프리픽스는 소정의 비트 자리수에서의 값을 나타낼 수도 있다.
한편, 상위 레벨(e.g., 비디오, 시퀀스, 픽쳐, 또는 슬라이스 레벨)에서 W_WEIGHT의 서픽스를 시그널링하고, 적용레벨(e.g., CU 레벨)에서 W_WEIGHT의 프리픽스를 시그널링할 수도 있다. 예를들어, PPS에서 W_WEIGHT의 서픽스를 시그널링 하고, CU 단위에서 W_WEIGHT의 서픽스(suffix)를 시그널링할 수도 있다.
예를들어, W_WEIGHT의 구성이 1/2, 1, 2, 4, 8, 16인 경우, 프리픽스가 1비트, 서픽스가 2비트로 구성되면, 프리픽스와 서픽스가 나타내는 W_WEIGHT는 아래와 같이 조합될 수 있다.
프리픽스 서픽스 W_WEIGHT
0 00 1/2
0 01 1
0 10 2
0 11 4
1 00 8
1 01 16
예를들어, W_WEIGHT의 구성이 1/2, 1, 2, 4, 8, 16인 경우, 프리픽스가 2비트, 서픽스가 1비트로 구성되면, 프리픽스와 서픽스가 나타내는 W_WEIGHT는 아래와 같이 조합될 수 있다.
프리픽스 서픽스 W_WEIGHT
00 0 1/2
00 1 1
01 0 2
01 1 4
10 0 8
10 1 16
예를들어, W_WEIGHT의 구성이 1/2, 1, 2, 4, 8, 16인 경우, 제1 프리픽스가 1비트, 제2 프리픽스가 1비트, 서픽스가 1비트로 구성되면, 프리픽스와 서픽스가 나타내는 W_WEIGHT는 아래와 같이 조합될 수 있다.
제1 프리픽스 제2 프리픽스 서픽스 W_WEIGHT
0 0 0 1/2
0 0 1 1
0 1 0 2
0 1 1 4
1 0 0 8
1 0 1 16
여기서 제1 프리픽스, 제2 프리픽스, 서픽스의 전달 유닛은 아래와 같을 수 있다.
예시 # 제1 프리픽스 제2 프리픽스 서픽스
1 VPS(비디오파라미터셋) SPS(시퀀스파라미터셋) CU(부호화 유닛/블록)
2 VPS PPS(비디오파라미터셋) CU
3 VPS 슬라이스(CU의 집합)의 헤더 CU
4 VPS 타일(1개 픽쳐내 슬라이스의 집합)의 헤더 CU
5 PPS 타일의 헤더 CU
6 PPS 슬라이스의 헤더 CU
7 타일의 헤더 슬라이스의 헤더 CU
8 CU(부호화 유닛/블록) SPS(시퀀스파라미터셋) VPS(비디오파라미터셋)
9 CU PPS(비디오파라미터셋) VPS
10 CU 슬라이스(CU의 집합)의 헤더 VPS
11 CU 타일(1개 픽쳐내 슬라이스의 집합)의 헤더 VPS
12 CU 타일의 헤더 PPS
13 CU 슬라이스의 헤더 PPS
14 CU 슬라이스의 헤더 타일의 헤더
예를들어, 예시1의 경우 멀티 레이어 부호화의 경우, 레이어 0의 고해상도 영상을 부호화 하기 위한 제1 프리픽스를 VPS를 통해 시그널링 하고, 제2 프리픽스와 서픽스를 통해 해당 CU에 대한 W_WEIGHT 값을 시그널링 함으로써 W_WEIGHT 시그널링에 소요되는 비트수를 절감할 수 있다.
또는 아래와 같이 수행될 수도 있다. 여기서 프리픽스 비트 정보는 프리픽스의 비트길이를 나타낼 수 있다.
프리픽스 비트 길이 정보 프리픽스 서픽스 W_WEIGHT
0 0 0 1/2
0 0 1 1
0 1 0 2
0 1 1 4
1 00 0 1/2
1 00 1 1
1 01 0 2
1 01 1 4
1 10 0 8
1 10 1 16
여기서 프리픽스 비트 정보, 프리픽스, 서픽스의 전달 유닛은 아래와 같을 수 있다.
예시 # 프리픽스 비트 정보 프리픽스 서픽스
1 VPS(비디오파라미터셋) SPS(시퀀스파라미터셋) CU(부호화 유닛/블록)
2 VPS PPS(비디오파라미터셋) CU
3 VPS 슬라이스(CU의 집합)의 헤더 CU
4 VPS 타일(1개 픽쳐내 슬라이스의 집합)의 헤더 CU
5 PPS 타일의 헤더 CU
6 PPS 슬라이스의 헤더 CU
7 타일의 헤더 슬라이스의 헤더 CU
8 CU(부호화 유닛/블록) SPS(시퀀스파라미터셋) VPS(비디오파라미터셋)
9 CU PPS(비디오파라미터셋) VPS
10 CU 슬라이스(CU의 집합)의 헤더 VPS
11 CU 타일(1개 픽쳐내 슬라이스의 집합)의 헤더 VPS
12 CU 타일의 헤더 PPS
13 CU 슬라이스의 헤더 PPS
14 CU 슬라이스의 헤더 타일의 헤더
예를들어, 예시1의 경우 멀티 레이어 부호화의 경우, 레이어 마다 소요되는 W_WEIGHT의 비트수를 VPS를 통해 시그널링 하고, 프리픽스와 서픽스를 통해 해당 CU에 대한 W_WEIGHT 값을 시그널링 함으로써 W_WEIGHT 시그널링에 소요되는 비트수를 절감할 수 있다.
한편, 프리픽스 비트 정보는 실시 예에 따라, 서픽스 비트 길이 정보를 나타내도록 사용되거나, W_WEIGHT 비트 길이 정보로 사용될 수 있다. 아래는 W_WEIGHT 비트 길이 정보로 사용되는 예시이며, W_WEIGHT 비트 길이 정보는 상위 레벨(e.g., 비디오, 시퀀스, 픽쳐, 또는 슬라이스 레벨)에서 전송될 수 있으며, W_WEIGHT 인덱스는 CU에서 전송될 수 있다.
W_WEIGHT 비트 길이 정보 W_WEIGHT 인덱스 W_WEIGHT
0 0 1/2
0 1 1
1 00 1/2
1 01 1
1 10 2
1 11 4
한편, CU 레벨에서 W_WEIGHT를 나타내는 정보(e.g. 서픽스, W_WEIGHT 인덱스 등)는 CU 집합(e.g. 타일, 슬라이스 중 1개 CU에 대하여만 부호화될 수 있다(디코더는 비트스트림에서 해당 CU에 대한 W_WEIGHT 정보만 획득할 수 있다). 예를들어, CU 집합 중 첫번째로 비트스트림에서 파싱되는 CU에 W_WEIGHT 정보가 부호화될 수 있다.
한편, BAS와 weight의 페어 정보가 시그널링 될 수도 있다.
- 상위 단위(슬라이스, 픽쳐, 시퀀스 또는 비디오 단위)에서 페어정보가 시그널링될 수도 있다.
- 그 하위 단위(CU, 슬라이스, 픽쳐, 시퀀스 등)에서 적용되는 BAS와 weight의 페어를 나타내는 인덱스가 시그널링 될 수 있다.
- 예를들어, 픽쳐 파라미터 셋에 BAS와 weight 쌍이 복수개 포함된 리스트 정보 또는 그 리스트를 구성하는 정보가 시그널될 수 있다. 그리고 CU에는 해당 리스트에서 해당 CU를 복호화 하기 위해 사용되는 BAS와 weight 쌍을 선택하기 위한 인덱스(또는 플래그)가 시그널될 수 있다.
이하 도 18 내지 도 21을 참조하여 영상 부호화 장치(100) 또는 영상 복호화 장치(200)가 크로마 블록을 인트라 예측하는 기법을 설명한다. 이하 실시예 번호를 1번부터 다시 기재한다.
일 실시예에 의하면, 크로마 예측 모드(Chroma Prediction Mode)는 적어도 CCLM(Cross-component linear model) 모드 및 non-CCLM 모드를 포함할 수 있다. CCLM 모드는 하나 이상의 LM(Linear Model) 모드를 포함할 수 있다. 여기서, non-CCLM 모드는 1개의 Direct Mode(DM) 및 4 개의 디폴트 모드(default mode)(수평, 수직, DC, 플라나(Planar))를 포함할 수 있다. DM 모드는 크로마 블록에 대응하는 루마 블록의 인트라 예측 모드를 나타낸다. I-슬라이스에서 루마 영상과 크로마 영상은 별도의 트리를 갖게 되므로, 크로마 블록에 대응하는 루마 블록이 복수 개일 수 있다. 이 경우, DM는 현재 크로마 블록의 중앙 위치를 커버하는 대응 루마 블록의 인트라 예측 모드를 나타낼 수 있다.  대응하는 루마 블록이 복수개일 수 있다. 이 경우, DM 모드는 현재 크로마 블록의 중앙 위치를 커버하는 대응 루마 블록의 인트라 예측 모드를 나타낼 수 있으나, 이에 제한되지 않고 다양한 위치를 커버하는 대응 루마 블록의 인트라 예측 모드를 나타낼 수 있다.
일 실시예에 의하면, 크로마 DBV(Direct Block Vector) 모드가 non-CCLM 모드 또는 크로마 예측 모드에 추가적으로 포함될 수 있다. 크로마 DBV 모드는 콜로케이티드 루마 블록으로부터 블록 벡터를 상속하고, 블록 벡터를 조정하기 위해 템플릿 매칭 정제 프로세스가 수행될 수 있는 모드이다. 이때, 블록 벡터는 IBC(Intra Block Copy) 또는 IntraTMP(Template Matching Prediction) 모드에서 획득될 수 있다. 크로마 DBV 모드가 크로마 블록에 적용되는지 여부를 나타내는 플래그는 CU별로 획득될 수 있으나, 이에 제한되지 않는다.
일 실시예에 의하면, DIMD(Decoder-side Intra Mode Derivation) 크로마 모드는 non-CCLM 모드나 크로마 예측 모드에 추가로 포함될 수 있다. 도 18에서 도시된 바와 같이, DIMD 크로마 모드에서 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 인접한 Y, Cb, Cr 샘플(1810,1820,1830)에서 그래디언트 히스토그램(Histogram of Gradients, HoGs)을 유도하고, 내림차순으로 정할 수 있다. DIMD 크로마 모드는 가장 큰 그래디언트 히스토그램을 가진 인트라 예측 모드로 설정될 수 있으며, 만약 가장 큰 그래디언트 히스토그램을 가진 인트라 예측 모드가 DM과 동일한 경우, 두 번째로 큰 그래디언트 히스토그램을 가진 인트라 예측 모드로 설정될 수 있다. DIMD 크로마 모드가 크로마 블록에 적용되는지 여부를 나타내는 플래그는 CU(코딩 유닛) 단위로 얻을 수 있지만 이에 한정되지 않는다.
실시예 1 : non-CCLM 모드의 구성 및 관련 리스트 생성
일 실시예에 의하면, non-CCLM 모드는 복수의 DM, 적어도 하나의 인접한 크로마 블록의 예측 모드(Neighboring Chroma Mode; NCM), Secondary chroma modes(SCM) 또는 디폴트 모드 중 적어도 하나를 포함할 수 있다. 전술한 바와 같이, non-CCLM 모드는 DIMD 크로마 모드 또는 크로마 DBV 모드 중 적어도 하나를 포함할 수 있으나, 이에 제한되지 않는다.
일 실시예에 의하면, non-CCLM 모드는 리스트 형태로 관리될 수 있다. 즉, non-CCLM 모드 리스트는 미리 정해진 순서에 따라 상기 언급한 모드들 중 적어도 하나의 모드(후보)가 추가될 수 있다. 추가된 모드의 개수가 리스트의 정해진 모드의 개수보다 작은 경우에는 계속 모드가 리스트에 추가되고, 추가된 모드의 개수가 리스트의 정해진 모드의 개수보다 같은 경우에는 더 이상 모드가 추가되지 않을 수 있다. 이때, 리스트의 정해진 모드의 개수는 9개일 수 있으나, 이에 제한되지 않고, 다양한 숫자(예. 8)일 수 있다. 미리 정해진 순서는 복수의 DM, NCM, SCM 다음에 디폴트 모드일 수 있으나, 이에 제한되지 않고, 앞뒤 간 순서가 변경될 수 있으며, 모드 간에 새로운 모드(예. DIMD 크로마 모드 또는 크로마 CBV 모드 등)이 포함될 수 있다. 이하는 미리 정해진 순서대로 각 모드에 대하여 설명하기로 한다.
복수의 DM들(Multiple DMs)(MDM)
도 19를 참조하면, 복수의 DM들은 현재 크로마 블록(1900) 내 특정 포지션(C, TL, TR, BL, BR)에 대응하는 콜로케이티드 루마 블록(collocated luma block)들(1910)의 인트라 예측 모드일 수 있다.
NCM
도 19를 참조하면, NCM은 현재 크로마 블록(1900)의 인접 크로마 위치(0,1,2,3,4)를 커버하는 크로마 블록의 인트라 예측 모드들일 수 있다.
SCM
non-CCLM 크로마 모드 리스트 내 첫번째 두 크로마 인트라 예측 모드(M0, M1)에 +1 또는 -1을 더하여 유도된 모드들(M0 - 1, M0 + 1, M1 - 1, M1 + 1)일 수 있으나, 이에 제한되지 않고, non-CCLM 크로마 모드 리스트 내 적어도 하나의 인트라 예측 모드에 일정한 값을 빼거나 더하여 생성된 모드를 포함할 수 있다.
디폴트 모드
디폴트 모드는 플라나 모드, 수직 모드, 수평 모드, DC 모드, 대각 모드, 수직 모드 인덱스 - 4의 모드, 수직 모드 인덱스 +4의 모드, 수평 모드 인덱스 -4의 모드, 수평 모드 인덱스 + 4의 모드 중 적어도 하나를 포함할 수 있다.
시그널링
영상 부호화 장치(100)는 상기 리스트에 포함된 크로마 인트라 예측 모드들(예. 9개의 크로마 인트라 예측 모드들) 중 적어도 하나를 특정하는 정보를 부호화하기 위해 절삭형 단항 부호화(truncated unary coding)를 이용(예. (0, 10, 110, …11111110, 11111111)할 수 있다. 다만, 이에 제한되지 않고, 다양한 시그널링 기법에 따라 리스트의 크로마 인트라 예측 모드들 중 적어도 하나를 특정하는 정보가 부호화될 수 있다.
한편, 일 실시예에 의하면, 실시예 1에서 기술된 non-CCLM 모드 대신 다른 모드가 이용될 수 있다. 9개의 모드 대신 9개 이하의 모드(예를 들어, 8개의 모드)가 이용되거나 9개의 모드 대신 9개 이상의 모드(예를 들어, 16개의 모드)가 이용될 수 있다.
예를 들어, SCM 또는 NCM이 non-CCLM 모드에 이용되지 않을 수 있다. 또는 MDM 대신 하나의 DM이 non-CCLM 모드에 이용될 수 있다.
또는, 디폴트 모드는 9개 이하의 모드가 이용될 수 있다. 예를 들어, 디폴트 모드는 4개의 모드(수평, 수직, DC, 플라나) 또는 이에 대각 모드가 추가된 5개의 모드가 이용될 수 있으나 이에 제한되지 않는다.
한편, NCM, DM 모드의 순서는 변경될 수 있다. MDM은 5개 이하의 모드가 이용될 수 있다. NCM은 5개 이하의 모드가 이용될 수 있다. 예를 들어, 도 19를 참조하면, NCM은 0과 4 사이의 픽셀 포함하는 좌측 블록, 4 블록(좌상측 블록), 4와 1사이의 픽셀 포함하는 상측 블록(좌측, 상측 및 좌상측 블록)의 예측 모드일 수 있으나, 이에 제한되지 않는다.
일 실시예에 의하면, 리스트에 포함된 non-CCLM 모드가 8개인 경우, 고정 길이 부호화(fixed-length coding)(3비트)로 부호화될 수 있다. 또는, 리스트에 포함된 non-CCLM 모드가 4개인 경우, fixed-length coding(2비트)로 부호화될 수 있다. 또는, 리스트에 포함된 non-CCLM 모드가 16개인 경우, fixed-length coding(4비트)로 부호화될 수 있으나, 이에 제한되지 않는다.
실시예 2(실시예 1 기반)
일 실시예에 의하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 크로마 블록의 크기가 소정의 크기보다 작거나 같은 경우, 1개의 DM과 4개의 디폴트 모드(수평, 수직, DC, 플라나 모드)를 non-CCLM 모드(후보)로 이용할 수 있다. 그렇지 않은 경우, 실시예 1에서 설명된 non-CCLM 모드가 이용될 수 있다. 이때, 소정의 크기는 4x2, 2x4, 2x2 또는 4x4일 수 있으나, 이에 제한되지 않는다. 또는 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 크로마 블록의 크기가 8x8보다 작은 경우, 1개의 DM과 4개의 디폴트 모드(수평, 수직, DC, 플라나 모드)를 non-CCLM 모드로 이용할 수 있다.
일 실시예에 의하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 크로마 블록의 크기가 소정의 넓이(샘플의 개수)보다 작거나 같은 경우, 1개의 DM과 4개의 디폴트 모드를 non-CCLM 모드로 이용할 수 있다. 이때, 소정의 넓이는 4, 8, 16일 수 있으나, 이에 제한되지 않는다. 또는 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 32x32보다 작은 경우, 1개의 DM과 4개의 디폴트 모드를 non-CCLM 모드로 이용할 수 있다. 그렇지 않은 경우, 실시예 1에서 설명된 non-CCLM 모드가 이용될 수 있다.
실시예 3(실시예 1기반)
일 실시예에 의하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 싱글 트리(Single Tree)의 경우, Multiple DMs (MDM) 대신 하나의 DM을 non-CCLM 모드로 이용할 수 있다. 그렇지 않은 경우, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 실시예 1에서 설명된 non-CCLM 모드를 이용할 수 있다.
일 실시예에 의하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 싱글 트리(Single Tree)의 경우, 루마 블록의 외부(TR 상단 및 대각선 블록, BL 좌측 및 대각선 블록, TL 대각선 블록 중 적어도 하나) 블록의 모드 및 가운데 블록(C 블록)의 모드가 포함된 복수의 DM을 이용할 수 있다. 그렇지 않은 경우, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 실시예 1에서 설명된 non-CCLM 모드를 이용할 수 있다.
실시예 4(실시예 1 기반)
일 실시예에 의하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 싱글 트리(Single Tree)이고, 크로마 서브샘플링 포맷(Chroma subsampling format)이 4:4:4이면서, 루마 블록의 크기가 4x2, 2x4, 2x2, 또는 4x4보다 작거나 같은 경우(또는 8x8보다 작은 경우), 하나의 DM 및 4개의 디폴트 모드를 non-CCLM 모드로 이용할 수 있다. 그렇지 않은 경우, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 실시예 1에서 설명된 non-CCLM 모드를 이용할 수 있다.
일 실시예에 의하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 싱글 트리(Single Tree)이고, 크로마 서브샘플링 포맷(Chroma subsampling format)이 4:4:4이면서, 루마 블록의 넓이(또는 샘플의 개수)가 16, 8 또는 4보다 작거나 같은 경우(또는 32 또는 64보다 작은 경우), 하나의 DM 및 4개의 디폴트 모드를 non-CCLM 모드로 이용할 수 있다. 그렇지 않은 경우, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 실시예 1에서 설명된 non-CCLM 모드를 이용할 수 있다.
일 실시예에 의하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 싱글 트리(Single Tree)이고, 크로마 서브샘플링 포맷(Chroma subsampling format)이 4:2:2이면서, 루마 블록의 크기가 8x2, 4x4, 4x2, 또는 8x4보다 작거나 같은 경우(또는 16x8보다 작은 경우), 하나의 DM 및 4개의 디폴트 모드를 non-CCLM 모드로 이용할 수 있다. 그렇지 않은 경우, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 실시예 1에서 설명된 non-CCLM 모드를 이용할 수 있다.
일 실시예에 의하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 싱글 트리(Single Tree)이고, 크로마 서브샘플링 포맷(Chroma subsampling format)이 4:2:2이면서, 루마 블록의 넓이(또는 샘플의 개수)가 32, 16 또는 8보다 작거나 같은 경우(또는 64 또는 128보다 작은 경우) 하나의 DM 및 4개의 디폴트 모드를 non-CCLM 모드로 이용할 수 있다. 그렇지 않은 경우, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 실시예 1에서 설명된 non-CCLM 모드를 이용할 수 있다.
일 실시예에 의하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 싱글 트리이고, 크로마 서브샘플링 포맷(Chroma subsampling format)이 4:2:0이면서, 루마 블록의 크기가 8x4, 4x8, 4x4, 또는 8x8보다 작거나 같은 경우(또는 16x16보다 작은 경우), 1개의 DM 및 4개의 디폴트 모드를 non-CCLM 모드로 이용할 수 있다. 그렇지 않은 경우, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 실시예 1에서 설명된 non-CCLM 모드를 이용할 수 있다.
일 실시예에 의하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 싱글 트리이고, 크로마 서브샘플링 포맷(Chroma subsampling format)이 4:2:0이면서, 루마 블록의 넓이가 32, 16, 또는 64보다 작거나 같은 경우, (또는 128 또는 256보다 작은 경우), 1개의 DM 및 4개의 디폴트 모드를 non-CCLM 모드로 이용할 수 있다. 그렇지 않은 경우, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 실시예 1에서 설명된 non-CCLM 모드를 이용할 수 있다.
실시예 5(실시예 1 기반)
일 실시예에 의하면, 영상 복호화 장치(200)는 크로마 블록의 모드가 다이렉트 모드인지를 나타내는 플래그(DM flag)를 비트스트림으로부터 획득할 수 있다.
영상 복호화 장치(200)는 DM flag의 값이 1이면, 제 1 플래그를 비트스트림으로부터 획득할 수 있다. 제 1 플래그는 크로마 블록의 모드가 C블록의 모드를 제외한 나머지 MDM 중 하나의 모드를 나타내는지 또는 C블록의 모드인지를 나타내는 플래그일 수 있다.
제 1 플래그의 값이 0(또는 1)이면, 영상 복호화 장치(200)는 C를 제외한 주변 4개의 블록의 모드 중 하나를 나타내는 인덱스를 비트스트림으로부터 획득할 수 있다. 영상 복호화 장치(200)는 인덱스를 이용하여 주변 4개의 블록의 모드 중 하나를 인트라 예측 모드로 결정할 수 있다. 제 1 플래그의 값이 1(또는 0)이면, 영상 복호화 장치(200)는 C 블록의 모드를 인트라 예측 모드로 결정할 수 있다.
영상 복호화 장치(200)는 DM flag의 값이 0이면, 크로마 블록의 모드가 NCM 모드 중 하나인지를 나타내는 플래그(NCM flag)를 비트스트림으로부터 획득할 수 있다. 영상 복호화 장치(200)는 NCM flag의 값이 1이면, 주변 블록 중 하나의 모드를 나타내는 인덱스를 비트스트림으로부터 획득할 수 있다.
또는, 도 19를 참조하면, 영상 복호화 장치(200)는 NCM flag의 값이 1이면, 주변 블록 중 특정 픽셀(예를 들어, 0 또는 2)을 포함하는 블록(소정의 블록)의 모드인지를 나타내는 플래그를 획득할 수 있다. 영상 복호화 장치(200)는 해당 플래그의 값이 1이면 상기 소정의 블록의 모드를 크로마 블록의 인트라 예측 모드로 결정할 수 있다. 영상 복호화 장치(200)는 해당 플래그의 값이 0이면 소정의 블록을 제외한 나머지 블록의 모드(4개) 중 하나를 나타내는 인덱스를 비트스트림으로부터 획득할 수 있다. 만약, NCM의 총 개수가 4개라면, 영상 복호화 장치(200)는 플래그의 획득없이 바로 NCM의 모드들 중 하나를 나타내는 인덱스를 비트스트림으로부터 획득할 수 있다.
일 실시예에 의하면, 영상 복호화 장치(200)는 NCM flag의 값이 1이면 주변 블록 3개(좌측, 상측, 좌상측) 및 디폴트 모드 중 하나를 나타내는 인덱스를 비트스트림으로부터 획득할 수 있다. 만약 인덱스가 디폴트 모드를 나타내는 경우, 영상 복호화 장치(200)는 디폴트 모드들 중 하나를 나타내는 인덱스를 비트스트림으로부터 추가 획득하 수 있다.
일 실시예에 의하면, 영상 복호화 장치(200)는 NCM flag를 획득하지 않고, 주변 블록 3개(좌측, 상측, 좌상측)의 모드 및 디폴트 모드 중 하나를 나타내는 인덱스를 비트스트림으로부터 획득할 수 있다. 만약 인덱스가 디폴트 모드를 나타내는 경우, 영상 복호화 장치(200)는 복수의 디폴트 모드들 중 하나를 나타내는 인덱스를 비트스트림으로부터 추가 획득할 수 있다.
일 실시예에 의하면, 영상 복호화 장치(200)는 DM flag의 값이 0이거나, NCM flag의 값이 0인 경우, 디폴트 모드들 중 하나를 나타내는 인덱스를 비트스트림으로부터 획득할 수 있다. 이때, 디폴트 모드의 개수는 4개일 수 있으나, 이에 제한되지 않는다.
일 실시예에 의하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 전체 모드 리스트 결정 시, 디폴트 모드들과 동일한 모드가 MDM 및 NCM 등에 존재하는 경우, 해당 MDM 및 NCM에서 동일한 모드를 순차적으로 미리 결정된 순서에 따라 디폴트 모드를 제외한 나머지 모드로 대체할 수 있다. 또한, non-CCLM모드 리스트를 결정 시, 동일한 적어도 두개의 모드가 리스트에 존재하는 경우 적어도 하나의 모드는 프루닝될 수 있다.
한편, DM flag를 먼저 획득하고, NCM flag를 나중에 획득하는 실시예에 대해 설명하였으나, 이와 유사하게 NCM flag를 먼저 획득하고 DM flag를 나중에 획득할 수 있음을 당업자는 이해할 수 있다.
상술한 인덱스들은 모두 고정 길이 부호화(fixed length coding)될 수 있으나, 이에 제한되지 않고, 이진 산술 복호화될 수 있다. 예를 들어, 인덱스들은 주변 블록(좌측, 상측, 좌상측, 우상측, 좌하측)의 컨텍스트에 기초하여 이진 산술 복호화될 수 있다. 이때, 컨텍스트는 주변 블록의 관련 정보의 값에 기초한 것일 수 있다.
실시예 6(실시예 1 기반)
영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 NCM 모드들을 다음과 같이 non-CCLM 모드 리스트에 추가할 수 있다.
도 20을 참조하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 현재 크로마 블록(2000)을 기준으로 A0, A1에 위치하는 블록 중 첫번째 이용가능한 블록의 모드를 non-CCLM 모드 리스트에 추가할 수 있다. 이때, 이용가능한지를 확인하는 순서는 미리 정해진 순서(A0로부터 A1 또는 A1으로부터 A0)일 수 있다. 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 B0, B1, B2 중 첫번째 이용가능한 블록의 모드를 non-CCLM 리스트에 추가할 수 있다. 이때, 이용가능한지를 확인하는 순서는 미리 정해진 순서(예. B0->B1->B3)일 수 있다. 이때, 리스트에 포함된 NCM 모드의 총 개수는 2개일 수 있다.
한편, 리스트에 추가된 적어도 하나의 NCM 모드가 리스트에 포함된 다른 모드와 동일한 인트라 예측 모드인 경우, 중복 후보 중 하나는 삭제(프루닝)되고, 다른 후보가 리스트에 추가될 수 있다.
실시예 7(실시예 1 기반)
일 실시예에 의하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 시간적(Temporal) NCM 모드를 non-CCLM 모드 중 하나로 추가할 수 있다.
도21을 참조하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 콜로케이티드(collocated) 픽처의 블록(콜로케이티드 블록)(2100)의 C0 또는 C1 위치의 블록의 예측 모드를 시간적 NCM 모드(Temporal NCM mode)로 결정할 수 있다. 이때, C0 위치의 CU가 이용가능하지 않은 경우 또는 현재 행(row)가 CTU 바깥인 경우, C1위치의 블록이 이용될 수 있다. 그렇지 않으면 C0 위치의 블록의 모드가 시간적 NCM 모드로 결정될 수 있다. 이때, 콜로케이티드 픽처는 참조 픽처 인덱스(reference picture index)의 값이 0인 픽처이거나, 별도 획득된 참조 픽처 인덱스의 값에 따라 결정된 픽처일 수 있다. 또는 콜로케이티드 픽처는 직전에 복호화된 픽처 또는 복호화된 픽처들 중 현재 픽처와 가장 가까운 픽처일 수 있다.
일 실시예에 의하면, NCM 모드는 공간적 NCM 모드 및 시간적 NCM 모드를 포함할 수 있다. 예를 들어, NCM모드는 4개의 공간적 NCM 및 1개의 시간적 NCM으로 구성될 수 있으나, 이에 제한되지 않고, 이에 제한되지 않고 다양한 개수의 조합으로 NCM이 구성될 수 있다.
실시예 8: 시그널링 방법
일 실시예에 의하면, 영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 non-CCLM mode를 나타내는 적어도 하나의 정보(예를 들어, 인덱스)를 bypass coding(ae(v))할 수 있으나, 이에 제한되지 않는다.
실시예 9(실시예 1 기반)
영상 부호화 장치(100) 또는 영상 복호화 장치(200)는 SPS(Sequence Parameter Set), PPS(Picture Parameter Set), Slice Header 중 적어도 하나에 적어도 하나의 활성화 플래그를 포함할 수 있다.
활성화 플래그는 1개의 DM 및 4개의 디폴트 모드 중 하나를 non-CCLM 모드로 이용할 것인지(그 값은 0) 또는 전술한 다양한 실시예의 복수의 DM, NCM, SCM 및 디폴트 모드 중 적어도 하나를 non-CCLM 모드로 이용하는 것으로 non-CCLM 모드의 후보를 확장할 것인지(그 값은 1)를 나타내는 플래그일 수 있다.
복수의 활성화 플래그가 존재하는 경우, 상위 데이터 단위의 활성화 플래그의 값이 1인 경우, 영상 복호화 장치(200)는 하위 데이터 단위의 활성화 플래그를 획득할 수 있다.
만약 SPS(Sequence Parameter Set), PPS(Picture Parameter Set), Slice Header 중 적어도 하나의 정보에 의하여 non-CCLM 모드의 후보가 확장된 것으로 결정된 경우, 영상 복호화 장치(200)는 CU 레벨 별로 플래그를 획득할 수 있고, 각 플래그는 해당 CU가 1개의 DM 및 4개의 디폴트 모드 중 하나를 non-CCLM 모드로 이용할 것인지(그 값은 0) 또는 전술한 다양한 실시예의 복수의 DM, NCM, SCM 및 디폴트 모드 중 적어도 하나를 non-CCLM 모드로 이용할 것인지(그 값은 1)를 나타내는 플래그일 수 있다.
한편, 일 실시예에 의하면, 전술한 크로마 인트라 예측 관련 실시예들(실시예 1 내지 실시예 9)은 모순되지 않는 선에서 서로 결합될 수 있다.
IBC(Intra block copy)
일 실시예에 따른 Intra block copy (IBC)는 HEVC(SCC) 확장에서 채택된 도구를 의미할 수 있다. 이는 화면 콘텐츠 자료의 부호화 효율을 크게 향상시키는 것으로 알려져 있으며, IBC 모드는 블록 수준 부호화 모드로 구현되어, 각 CU마다 최적의 블록 벡터(또는 모션 벡터)를 찾기 위해 블록 매칭(BM)이 인코더에서 수행될 수 있다. 여기서 블록 벡터는 현재 블록에서 현재 이미지 내에서 이미 재구성된 참조 블록까지의 이동을 나타낸다. IBC 부호화된 CU의 루마 블록 벡터는 정수 정밀도로 표현된다. 크로마 블록 벡터도 정수 정밀도로 반올림 될 수 있다. AMVR과 결합되면 IBC 모드는 1픽셀과 4픽셀 모션 벡터 정밀도 사이를 전환할 수도 있다. 일 실시 예에 따라 IBC 부호화된 CU는 인트라 또는 인터 예측 모드 이외의 세 번째 예측 모드로 처리될 수 있다. 또한, IBC 모드는 너비와 높이가 모두 64개 이하의 루마 샘플인 CU에 적용될 수 있다.
한편, 인코더 측에서는 IBC를 위해 해시 기반 모션 추정이 수행된다. 인코더는 너비 또는 높이가 16개 이하의 루마 샘플인 블록에 대해 RD 체크를 수행할 수 있다. 병합 모드가 아닌 경우, 해시 기반 검색을 우선적으로 사용하여 블록 벡터 검색이 수행된다. 해시 검색이 유효한 후보를 반환하지 않는 경우, 블록 매칭 기반의 로컬 검색이 수행된다.
해시 기반 검색에서는 현재 블록과 참조 블록 사이의 해시 키 일치(32비트 CRC)가 모든 허용된 블록 크기로 확장될 수 있다. 현재 이미지의 각 위치에 대한 해시 키 계산은 4x4 하위 블록을 기반으로 한다. 크기가 더 큰 현재 블록의 경우, 모든 4x4 하위 블록의 해시 키가 해당하는 참조 위치의 해시 키와 일치할 때 해시 키가 결정됩니다. 현재 블록의 해시 키와 여러 참조 블록의 해시 키가 일치하는 경우, 각 일치하는 참조의 블록 벡터 비용을 계산하고, 최소 비용을 가진 것이 선택될 수 있다.
블록 매칭 검색에서는 검색 범위가 이전 CTU와 현재 CTU를 모두 포함하도록 설정될 수 있다.
CU 레벨에서 IBC 모드는 플래그로 신호화되며, 다음과 같은 방식으로 IBC AMVP 모드 또는 IBC 스킵/병합 모드로 신호화될 수 있습니다.
- IBC skip/merge 모드: 인접한 후보 IBC 코딩 블록의 목록에서 어떤 블록 벡터가 현재 블록을 예측하는 데 사용되는지를 나타내기 위해 병합 후보 인덱스가 사용될 수 있다. 병합 목록은 공간적인, HMVP 및 쌍방향 후보들로 구성될 수 있다.
- IBC AMVP 모드: 블록 벡터 차이는 모션 벡터 차이와 동일한 방식으로 코딩될 수 있다. 블록 벡터 예측 방법은 두 개의 후보를 예측자로 사용하는데, 하나는 왼쪽 이웃에서 가져오고 다른 하나는 위쪽 이웃에서 가져올 수 있다 (IBC로 코딩된 경우). 어느 이웃도 사용할 수 없을 때에는 기본 블록 벡터가 예측자로 사용될 수 있다. 이 경우 블록 벡터 예측자 인덱스를 나타내기 위해 플래그가 별도로 전송 될 수 있다.
한편, 도 22를 참조하면, 메모리 사용량과 디코더 복잡성을 줄이기 위해 일 실시예에 따른 IBC는 현재 CTU 영역(2201)과 왼쪽 CTU(2202)의 일부 영역을 포함하는 미리 정의된 영역의 복원 부분만 허용할 수 있다. 예를 들면, 각 블록은 64x64 루마 샘플 유닛을 나타내며, 도 22에 표시된 현재 블록을 기준으로 X표시가 된 블럭만 참조할 수 있다.
그런데 이러한 IBC Merge/AMVP 모드 에서는 일부 invalid한 예측 벡터가 후보로 사용되는 경우가 있어, 이러한 문제를 해결하기 위해 아래와 같이 대체하는 방안을 제시해 보고자 한다.
즉, 기본적으로 IBC MERGE/AMVP 모드에서는 최대 후보 리스트가 채워지지 않는다면, 하나 이상의 제로벡터를 패딩(padding)하여 후보리스트를 완성할 수 있다. 그런데 이러한 제로 벡터의 경우 그 효율이 많이 떨어지므로 아래와 같이 invalid한 벡터를 보정하는 방안을 제시해 본다.
벡터보정 방안 1
우선, IBC MERGE/AMVP 모드에서는 IBC Buffer 영역 내에서 영상이 예측된다. 그런데 BVP(Block vector Prediction) 후보가 IBC 버퍼영역을 넘어서는 경우에는 Invalid로 판단하여 IBC Merge/AMVP 리스트를 제로벡터로 패딩할 수 있다.
그러나 이러한 경우에 효율이 떨어지므로, 도23에 도시된 바와 같이 BVP 후보가 IBC 버퍼외부에 참조블록(2301)을 가리키는 경우에도 IBC 버퍼내 경계에 있는 픽셀(2303)을 패딩한 패딩영역(2302)를 이용하여 유효한 값으로 IBC Merge/AMVP 리스트를 채우는 법을 제안한다.
예를 들면, 도 23의 패딩영역(2302)은 참조블록(2301)이 위치하는 바로 아래 복원 영역 경계의 픽셀값(2303)을 vertical 방향으로 그대로 복사하여 사용할 수 있다.
또는, 다른 실시예에 따라 도24에 도시된 바와 같이 패딩영역(2403)은 BVP와 같은 기울기를 가지도록 복원 될 수도 있다. 즉, IBC 버퍼 경계에 위치한 참조픽셀(2403)을 소정 기울기를 유지한 채로 패딩하여 이용할 수도 있다. 도 24는 이러한 패딩 방법을 패딩영역(2402)의 빗금의 기울기로 표현 하였다.
한편, 여기서 패딩 영역의 패딩 기울기는 이러한 방식에 반드시 한정되는 것은 아니며, 패딩 영역은 인접한 복원블록의 Intra 예측 모드 값을 이용하여, 소정 방향으로 패딩이 수행될 수 있도록 할 수도 있다.
벡터후보 복원방안 2
한편 IBC MERGE/AMVP 모드의 후보리스트를 생성하는 단계에서 최대 후보 숫자를 채우지 못하는 경우, 제로 벡터 값으로 후보리스트를 패딩하는 대신에 도 25에 도시된 바와 같이 일 실시예에 따라 현재블록의 가로와 세로 크기를 이용하여 후보리스트를 추가로 선정할 수도 있다.
예를들면, 현재 블록의 좌측 상단 블록의 위치를 (x, y)라 하고 가로와 세로의 크기를 W,H라고 하면, BVP 값은 아래와 같은 6개의 값이 후보 리스트에 포함 될 수 있다.
[BVP 후보리스트 좌표 수식]
(x-2W, y+2H), (x-w, y+H), (x-2W, y+H), (x-W, y+2H), (x-W, y+H), (x - 2W, y), (x, y+2H)
물론, 이러한 패딩 값이 위의 수식에 한정되는 것은 아니며, 현재 블록을 기준으로 후보 블록으로 사용될 수 있는 블록의 BVP 값이 IBC 후보로 선정 될 수 있다.
또한, 각 복원블럭의 좌상측 값 또는 현재 위치 값이 BVP 후보로 이용될 수 있다.
다만, 앞서 설명한 바와 같이 그림 25의 각 블록이 64x64블록이라고 할 때 현재 블록 기준으로 available 한 블록은 X표시가 된 블록과 같으므로, 인접한 블록((x-W,y), (x, y+H) 등)의 BVP값들은 여전히 Invalid 하다.
한편, 이러한 방식의 제로 패딩 방식은 루마 블록의 크기가 64x64 보다 큰 경우에만 적용되고 이보다 작은 경우에는 skip 될 수 있다. 즉, 루마 블록 크기가 소정 크기보다 작은 경우에는 또는 크로마 블록(Cb,Cr)인 경우에는 여전히 zero vector 값을 MERG/AMVP 리스트에 패딩 하도록 할 수 있다.
또한, IBC List의 최대 후보 개수를 채우기 위해 앞서 상술한 방식으로 후보리스트를 채울지 또는 크기 등의 제한으로 인해 단순 제로벡터로 채우는 지 여부는 IBC_padding_flag를 통해서 전송/결정 될 수도 있다.
한편, 본 명세서에서 설명된 부호화 장치와 복호화 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 또한, 본 명세서는, 부호화 장치와 복호화 장치의 동작 방법을 수행할 수 있도록 컴퓨터 판독가능 저장매체에 저장된 컴퓨터 프로그램 형태로 제공될 수 있다. 또한, 본 명세서는, 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터 판독 가능 저장매체를 이용하여 이와 같은 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다.
이와 같은 컴퓨터 판독 가능 저장매체는 read-only memory (ROM), random-access memory (RAM), flash memory, CD-ROMs, CD-Rs, CD+Rs, CD-RWs, CD+RWs, DVD-ROMs, DVD-Rs, DVD+Rs, DVD-RWs, DVD+RWs, DVD-RAMs, BD-ROMs, BD-Rs, BD-R LTHs, BD-REs, 마그네틱 테이프, 플로피 디스크, 광자기 데이터 저장 장치, 광학 데이터 저장 장치, 하드 디스크, 솔리드-스테이트 디스크(SSD)일 수 있고, 명령어 또는 소프트웨어, 관련 데이터, 데이터 파일, 및 데이터 구조들을 저장할 수 있고, 프로세서나 컴퓨터가 명령어를 실행할 수 있도록 프로세서나 컴퓨터에 명령어 또는 소프트웨어, 관련 데이터, 데이터 파일, 및 데이터 구조들을 제공할 수 있는 어떠한 장치라도 될 수 있다.
이상에서 실시예들에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니며, 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 기술분야에서 통상의 지식을 가진 자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속한다.

Claims (1)

  1. 복호화 방법.
KR1020230088716A 2022-07-07 2023-07-07 영상 부호화 장치 및 복호화 장치 KR20240007094A (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
KR1020220084062 2022-07-07
KR20220084062 2022-07-07
KR1020220084060 2022-07-07
KR20220084060 2022-07-07
KR20220086616 2022-07-15
KR1020220087841 2022-07-15
KR1020220086616 2022-07-15
KR20220087841 2022-07-15

Publications (1)

Publication Number Publication Date
KR20240007094A true KR20240007094A (ko) 2024-01-16

Family

ID=89719415

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230088716A KR20240007094A (ko) 2022-07-07 2023-07-07 영상 부호화 장치 및 복호화 장치

Country Status (1)

Country Link
KR (1) KR20240007094A (ko)

Similar Documents

Publication Publication Date Title
KR102625959B1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
CN109804626B (zh) 用于对图像进行编码和解码的方法和设备以及用于存储比特流的记录介质
KR102328179B1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20180000303A (ko) 화면 내 예측 방법 및 장치
KR20180098161A (ko) 비디오 신호 처리 방법 및 장치
KR20170132682A (ko) 영상 부호화/복호화 방법 및 이를 위한 기록 매체
KR20170058838A (ko) 화면간 예측 향상을 위한 부호화/복호화 방법 및 장치
KR20160106023A (ko) 동영상 부호화 장치
KR20190067732A (ko) 채널들 간의 선택적인 정보 공유를 사용하는 부호화 및 복호화를 위한 방법 및 장치
KR102619133B1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20180040088A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20120016991A (ko) 인터 프리딕션 방법
KR20180025285A (ko) 비디오 신호 처리 방법 및 장치
CN112806018B (zh) 图像编码/解码方法和设备以及存储比特流的记录介质
KR20210065051A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20200026758A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
US20210274164A1 (en) Inter-prediction method and video decoding apparatus using the same
US20240155134A1 (en) Method and apparatus for video coding using improved cross-component linear model prediction
JP6528635B2 (ja) 動画像符号化装置、動画像符号化方法及び動画像符号化用コンピュータプログラム
KR20200144480A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20200145761A (ko) 영상 부호화/복호화 방법 및 장치
KR20210042841A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20240007094A (ko) 영상 부호화 장치 및 복호화 장치
KR20240007884A (ko) 영상 부호화 장치 및 복호화 장치
KR20240008805A (ko) 영상 부호화 장치 및 복호화 장치