KR-20260061250-A - METHODS AND APPARATUS OF VIDEO CODING USING PALETTE MODE
Abstract
전자 장치는 비디오 데이터를 디코딩하는 방법을 수행한다. 이 방법은: 코딩 유닛과 연관된 복수의 신택스 엘리먼트를 비트스트림으로부터 수신하는 단계 ― 복수의 신택스 엘리먼트는 코딩 유닛의 크기 및 코딩 유닛의 코딩 트리 타입을 지시함 ―; 코딩 유닛의 코딩 트리 타입에 따라 코딩 유닛에 대한 최소 팔레트 모드 블록 크기를 결정하는 단계; 코딩 유닛의 크기가 최소 팔레트 모드 블록 크기보다 크다는 결정에 따라: 코딩 유닛과 연관된 팔레트 모드 인에이블 플래그를 비트스트림으로부터 수신하는 단계; 및 팔레트 모드 인에이블 플래그에 따라 비트스트림으로부터 코딩 유닛을 인코딩하는 단계를 포함한다.
Inventors
- 주 훙-정
- 천 이-원
- 슈 샤오위
- 왕 샹린
- 마 중-촨
- 위 빙
Assignees
- 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드
Dates
- Publication Date
- 20260506
- Application Date
- 20210111
- Priority Date
- 20200111
Claims (20)
- 비디오 데이터를 디코딩하는 방법으로서, 코딩 유닛과 연관된 복수의 변수를 도출하는 단계 ― 상기 복수의 변수는 루마 코딩 블록 크기 및 코딩 트리 타입(coding tree type)을 지시함 ―; 상기 코딩 트리 타입에 따라 상기 코딩 유닛에 대한 팔레트 모드(palette mode) 블록 크기 임계치를 결정하는 단계; 적어도 상기 루마 코딩 블록 크기가 상기 팔레트 모드 블록 크기 임계치보다 크다는 결정에 따라: 비트스트림으로부터 상기 코딩 유닛과 연관된 팔레트 모드 인에이블 플래그(palette mode enable flag)를 수신하는 단계; 및 상기 팔레트 모드 인에이블 플래그에 따라 비트스트림으로부터 상기 코딩 유닛을 디코딩하는 단계 를 포함하고, 상기 코딩 트리 타입에 따라 상기 코딩 유닛에 대한 팔레트 모드 블록 크기 임계치를 결정하는 단계는: 상기 코딩 트리 타입이 DUAL_TREE_CHROMA일 때: 크로마 포맷(chroma format)에 따라 상기 팔레트 모드 블록 크기 임계치를 설정하는 단계 를 포함하는, 방법.
- 제1항에 있어서, 상기 팔레트 모드 인에이블 플래그에 따라 비트스트림으로부터 상기 코딩 유닛을 디코딩하는 단계는: 상기 팔레트 모드 인에이블 플래그가 상기 코딩 유닛에 대해 팔레트 모드가 인에이블됨을 지시할 때: 비트스트림으로부터 상기 코딩 유닛에 대한 팔레트 표(palette table)를 생성하는 단계; 및 상기 생성된 팔레트 표를 사용하여 비트스트림으로부터 상기 코딩 유닛을 디코딩하는 단계 를 포함하는, 방법.
- 제1항에 있어서, 상기 크로마 포맷이 4:4:4일 때, 상기 팔레트 모드 블록 크기 임계치는 16인, 방법.
- 제1항에 있어서, 상기 크로마 포맷이 4:2:2일 때, 상기 팔레트 모드 블록 크기 임계치는 32인, 방법.
- 제1항에 있어서, 상기 크로마 포맷이 4:2:0일 때, 상기 팔레트 모드 블록 크기 임계치는 64인, 방법.
- 비디오 데이터를 인코딩하는 방법으로서, 코딩 유닛과 연관된 복수의 변수를 결정하는 단계 ― 상기 복수의 변수는 루마 코딩 블록 크기 및 코딩 트리 타입을 지시함 ―; 상기 코딩 트리 타입에 따라 상기 코딩 유닛에 대한 팔레트 모드 블록 크기 임계치를 결정하는 단계; 적어도 상기 루마 코딩 블록 크기가 상기 팔레트 모드 블록 크기 임계치보다 크다는 결정에 따라: 상기 코딩 유닛과 연관된 팔레트 모드 인에이블 플래그를 결정하는 단계; 및 상기 팔레트 모드 인에이블 플래그에 따라 상기 코딩 유닛을 인코딩하는 단계 를 포함하고, 상기 코딩 트리 타입에 따라 상기 코딩 유닛에 대한 팔레트 모드 블록 크기 임계치를 결정하는 단계는: 상기 코딩 트리 타입이 DUAL_TREE_CHROMA일 때: 크로마 포맷에 따라 상기 팔레트 모드 블록 크기 임계치를 설정하는 단계 를 포함하는, 방법.
- 제6항에 있어서, 상기 팔레트 모드 인에이블 플래그에 따라 상기 코딩 유닛을 인코딩하는 단계는: 상기 팔레트 모드 인에이블 플래그가 상기 코딩 유닛에 대해 팔레트 모드가 인에이블됨을 지시할 때: 상기 코딩 유닛에 대한 팔레트 표를 결정하는 단계; 및 상기 결정된 팔레트 표를 사용하여 상기 코딩 유닛을 인코딩하는 단계 를 포함하는, 방법.
- 제6항에 있어서, 상기 크로마 포맷이 4:4:4일 때, 상기 팔레트 모드 블록 크기 임계치는 16인, 방법.
- 제6항에 있어서, 상기 크로마 포맷이 4:2:2일 때, 상기 팔레트 모드 블록 크기 임계치는 32인, 방법.
- 제6항에 있어서, 상기 크로마 포맷이 4:2:0일 때, 상기 팔레트 모드 블록 크기 임계치는 64인, 방법.
- 전자 장치로서, 하나 이상의 처리 유닛; 및 상기 하나 이상의 처리 유닛에 결합된 메모리; 를 포함하고, 상기 하나 이상의 처리 유닛은 제1항 내지 제10항 중 어느 한 항에 기재된 방법을 수행하도록 구성되는, 전자 장치.
- 제6항 또는 제7항에 기재된 방법에 의해 생성된 비트스트림을 저장하는 컴퓨터 판독 가능 저장 매체.
- 제12항에 있어서, 상기 크로마 포맷이 4:4:4일 때, 상기 팔레트 모드 블록 크기 임계치는 16인, 컴퓨터 판독 가능 저장 매체.
- 제12항에 있어서, 상기 크로마 포맷이 4:2:2일 때, 상기 팔레트 모드 블록 크기 임계치는 32인, 컴퓨터 판독 가능 저장 매체.
- 제12항에 있어서, 상기 크로마 포맷이 4:2:0일 때, 상기 팔레트 모드 블록 크기 임계치는 64인, 컴퓨터 판독 가능 저장 매체.
- 비트스트림을 저장하는 방법으로서, 제6항 또는 제7항에 기재된 방법을 수행하여 비트스트림을 생성하는 단계; 및 상기 비트스트림을 저장하는 단계 를 포함하는, 방법.
- 제16항에 있어서, 상기 크로마 포맷이 4:4:4일 때, 상기 팔레트 모드 블록 크기 임계치는 16인, 방법.
- 제16항에 있어서, 상기 크로마 포맷이 4:2:2일 때, 상기 팔레트 모드 블록 크기 임계치는 32인, 방법.
- 제16항에 있어서, 상기 크로마 포맷이 4:2:0일 때, 상기 팔레트 모드 블록 크기 임계치는 64인, 방법.
- 비트스트림을 전송하는 방법으로서, 제6항 또는 제7항에 기재된 방법을 수행하여 비트스트림을 생성하는 단계; 및 상기 비트스트림을 전송하는 단계 를 포함하는, 방법.
Description
팔레트 모드를 이용한 비디오 코딩 방법 및 장치{METHODS AND APPARATUS OF VIDEO CODING USING PALETTE MODE} 본 출원은 "VIDEO CODING USING PALETTE MODE"라는 명칭으로 2020년 1월 11일자 출원된 미국 가특허출원 제62/959,913호에 대한 우선권을 주장하며, 이 가특허출원은 그 전체가 인용에 의해 포함된다. 본 출원은 일반적으로 비디오 데이터 코딩 및 압축에 관한 것으로, 특히 팔레트 모드(palette mode)를 이용한 비디오 코딩 방법 및 시스템에 관한 것이다. 디지털 텔레비전, 랩톱 또는 데스크톱 컴퓨터, 태블릿 컴퓨터, 디지털 카메라, 디지털 레코딩 디바이스, 디지털 미디어 플레이어, 비디오 게임 콘솔, 스마트폰, 비디오 원격 회의 디바이스, 비디오 스트리밍(streaming) 디바이스 등과 같은 다양한 전자 디바이스에 의해 디지털 비디오가 지원된다. 전자 디바이스는 MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, 고급 비디오 코딩(AVC: Advanced Video Coding), 고효율 비디오 코딩(HEVC: High Efficiency Video Coding) 및 다용도 비디오 코딩(VVC: Versatile Video Coding) 표준에 의해 정의된 비디오 압축/압축 해제 표준을 구현함으로써 디지털 비디오 데이터를 전송, 수신, 인코딩, 디코딩 및/또는 저장한다. 비디오 압축은 통상적으로, 공간(프레임 내) 예측 및/또는 시간(프레임 간) 예측을 수행하여 비디오 데이터에 내재된 중복성을 감소시키거나 제거하는 것을 포함한다. 블록 기반 비디오 코딩의 경우, 비디오 프레임은 하나 이상의 슬라이스(slice)로 파티셔닝(partition)되고, 각각의 슬라이스는 다수의 비디오 블록을 가지며, 이들은 또한 코딩 트리 유닛(CTU: coding tree unit)으로도 또한 지칭될 수 있다. 각각의 CTU는 하나의 코딩 유닛(CU)을 포함하거나, 미리 정의된 최소 CU 크기에 도달할 때까지 더 작은 CU로 재귀적으로 분할될 수 있다. (리프(leaf) CU로도 또한 명명된) 각각의 CU는 하나 또는 다수의 변환 유닛(TU: transform unit)을 포함하고, 각각의 CU는 또한 하나 또는 다수의 예측 유닛(PU: prediction unit)을 포함한다. 각각의 CU는 인트라(intra) 모드, 인터(inter) 모드 또는 IBC 모드로 코딩될 수 있다. 비디오 프레임의 인트라 코딩된(I) 슬라이스의 비디오 블록은 동일한 비디오 프레임 내의 이웃 블록의 참조 샘플에 대한 공간 예측을 사용하여 인코딩된다. 비디오 프레임의 인터 코딩된(P 또는 B) 슬라이스의 비디오 블록은 동일한 비디오 프레임 내의 이웃 블록의 참조 샘플에 대한 공간 예측 또는 다른 이전 및/또는 차후 참조 비디오 프레임의 참조 샘플에 대한 시간 예측을 사용할 수 있다. 이전에 인코딩된 참조 블록, 예컨대 이웃 블록에 기초한 공간 또는 시간 예측은 코딩될 현재 비디오 블록에 대한 예측 블록을 야기한다. 참조 블록을 찾는 프로세스는 블록 매칭 알고리즘에 의해 달성될 수 있다. 코딩될 현재 블록과 예측 블록 간의 픽셀 차이들을 나타내는 잔차 데이터는 잔차 블록 또는 예측 오차들로 지칭된다. 인터 코딩된 블록은 예측 블록을 형성하는 참조 프레임의 참조 블록, 및 잔차 블록을 가리키는 움직임 벡터에 따라 인코딩된다. 움직임 벡터를 결정하는 프로세스는 통상적으로 움직임 추정으로 지칭된다. 인트라 코딩된 블록은 인트라 예측 모드 및 잔차 블록에 따라 인코딩된다. 추가 압축을 위해, 잔차 블록은 픽셀 도메인에서 변환 도메인, 예컨대 주파수 도메인으로 변환되어, 잔차 변환 계수가 될 수 있으며, 잔차 변환 계수는 다음에 양자화될 수 있다. 초기에 2차원 배열로 배열된 양자화된 변환 계수는 스캔(scan)되어 변환 계수의 1차원 벡터를 생성할 수 있으며, 그런 다음 비디오 비트스트림(bitstream)으로 엔트로피 인코딩되어 훨씬 더 많은 압축을 달성할 수 있다. 이어서, 인코딩된 비디오 비트스트림은 컴퓨터 판독 가능 저장 매체(예컨대, 플래시 메모리)에 저장되어 디지털 비디오 능력을 갖는 다른 전자 디바이스에 의해 액세스되거나, 유선 또는 무선으로 전자 디바이스에 직접 송신된다. 이어서, 전자 디바이스는 예컨대, 인코딩된 비디오 비트스트림을 파싱(parse)하여 비트스트림으로부터 신택스(syntax) 엘리먼트를 획득하고, 비트스트림으로부터 획득된 신택스 엘리먼트에 적어도 부분적으로 기초하여, 인코딩된 비디오 비트스트림으로부터 원래의 포맷으로 디지털 비디오 데이터를 재구성함으로써 (위에서 설명된 비디오 압축과 반대 프로세스인) 비디오 압축 해제를 수행하고, 재구성된 디지털 비디오 데이터를 전자 디바이스의 디스플레이 상에 렌더링(render)한다. 디지털 비디오 품질이 고화질에서 4K×2K 또는 심지어 8K×4K로 진행함에 따라, 인코딩/디코딩될 비디오 데이터의 양은 기하급수적으로 증가한다. 이것은, 디코딩된 비디오 데이터의 이미지 품질을 유지하면서 비디오 데이터가 어떻게 더 효율적으로 인코딩/디코딩될 수 있는지 면에서 끊임없는 난제이다. 본 출원은 비디오 데이터 인코딩 및 디코딩, 보다 구체적으로는 팔레트 모드를 이용한 비디오 인코딩 및 디코딩 시스템 및 방법과 관련된 구현을 설명한다. 본 출원의 제1 양상에 따르면, 비디오 데이터를 디코딩하는 방법은, 코딩 유닛과 연관된 복수의 신택스 엘리먼트를 비트스트림으로부터 수신하는 단계 ― 복수의 신택스 엘리먼트는 코딩 유닛의 크기 및 코딩 유닛의 코딩 트리 타입을 지시함 ―; 코딩 유닛의 코딩 트리 타입에 따라 코딩 유닛에 대한 최소 팔레트 모드 블록 크기를 결정하는 단계; 코딩 유닛의 크기가 최소 팔레트 모드 블록 크기보다 크다는 결정에 따라: 코딩 유닛과 연관된 팔레트 모드 인에이블 플래그(palette mode enable flag)를 비트스트림으로부터 수신하는 단계; 및 팔레트 모드 인에이블 플래그에 따라 비트스트림으로부터 코딩 유닛을 디코딩하는 단계를 포함한다. 본 출원의 제2 양상에 따르면, 전자 장치는 하나 이상의 처리 유닛, 메모리, 및 메모리에 저장된 복수의 프로그램을 포함한다. 프로그램은 하나 이상의 처리 유닛에 의해 실행될 때 전자 장치로 하여금, 위에서 설명된 비디오 데이터를 디코딩하는 방법을 수행하게 한다. 본 출원의 제3 양상에 따르면, 비-일시적 컴퓨터 판독 가능 저장 매체는 하나 이상의 처리 유닛을 갖는 전자 장치에 의해 실행될 복수의 프로그램을 저장한다. 프로그램은 하나 이상의 처리 유닛에 의해 실행될 때 전자 장치로 하여금, 위에서 설명된 비디오 데이터를 디코딩하는 방법을 수행하게 한다. 구현의 추가 이해를 제공하도록 포함되고 본 명세서에 통합되며 명세서의 일부를 구성하는 첨부 도면은 설명된 구현을 예시하고 설명과 함께 기본 원리를 설명하는 역할을 한다. 유사한 참조 번호가 대응하는 부분을 나타낸다. 도 1은 본 개시내용의 일부 구현에 따른 예시적인 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다. 도 2는 본 개시내용의 일부 구현에 따른 예시적인 비디오 인코더를 예시하는 블록도이다. 도 3은 본 개시내용의 일부 구현에 따른 예시적인 비디오 디코더를 예시하는 블록도이다. 도 4a 내지 도 4e는 본 개시내용의 일부 구현에 따라 프레임이 상이한 크기 및 형상의 다수의 비디오 블록으로 어떻게 재귀적으로 파티셔닝되는지를 예시하는 블록도이다. 도 5a 내지 도 5d는 본 개시내용의 일부 구현에 따라 비디오 데이터를 코딩하기 위해 팔레트 표를 사용하는 예를 예시하는 블록도이다. 도 6은 본 개시내용의 일부 구현에 따라 비디오 디코더가 비디오 데이터를 디코딩하는 기법을 구현하는 예시적인 프로세스를 예시하는 흐름도이다. 도 7은 본 개시내용의 일부 구현에 따른 예시적인 컨텍스트 적응 2진 산술 코딩(CABAC: Context-adaptive binary arithmetic coding) 엔진(engine)을 예시하는 블록도이다. 이제 특정한 구현에 대해 상세히 언급될 것이며, 그 예는 첨부 도면에 예시된다. 다음 상세한 설명에서는, 본 명세서에서 제시되는 청구 대상의 이해를 돕기 위해 많은 비-제한적인 특정 세부사항이 제시된다. 그러나 청구항의 범위를 벗어나지 않으면서 다양한 대안이 사용될 수 있고 청구 대상은 이러한 특정 세부사항 없이 실시될 수 있다는 것이 당해 기술분야에서 통상의 지식을 가진 자에게 명백할 것이다. 예를 들어, 본 명세서에서 제시되는 청구 대상이 디지털 비디오 능력을 갖는 많은 타입의 전자 디바이스 상에서 구현될 수 있음이 당해 기술분야에서 통상의 지식을 가진 자에게 명백할 것이다. 도 1은 본 개시내용의 일부 구현에 따라 병렬로 비디오 블록을 인코딩 및 디코딩하기 위한 예시적인 시스템(10)을 예시하는 블록도이다. 도 1에 도시된 바와 같이, 시스템(10)은 목적지 디바이스(14)에 의해 나중에 디코딩될 비디오 데이터를 생성하여 인코딩하는 소스 디바이스(12)를 포함한다. 소스 디바이스(12) 및 목적지 디바이스(14)는 데스크톱 컴퓨터(desktop) 또는 랩톱(laptop) 컴퓨터, 태블릿(tablet) 컴퓨터, 스마트폰(smart phones), 셋톱 박스(set-top boxes), 디지털 미디어 플레이어(digital media players), 비디오 게임 콘솔(gaming consoles), 비디오 스트리밍(streaming) 디바이스 등을 포함하는 광범위한 전자 디바이스 중 임의의 디바이스를 포함할 수 있다. 일부 구현에서, 소스 디바이스(12) 및 목적지 디바이스(14)는 무선 통신 능력을 갖추고 있다. 일부 구현에서, 목적지 디바이스(14)는 링크(16)를 통해 디코딩될 인코딩된 비디오 데이터를 수신할 수 있다. 링크(16)는 인코딩된 비디오 데이터를 소스 디바이스(12)에서 목적지 디바이스(14)로 이동시킬 수 있는 임의의 타입의 통신 매체 또는 디바이스를 포함할 수 있다. 일례로, 링크(16)는 소스 디바이스(12)가 인코딩된 비디오 데