KR20220024716A - 비디오 인코딩 및 디코딩을 위한 단일 인덱스 양자화 행렬 설계 - Google Patents

비디오 인코딩 및 디코딩을 위한 단일 인덱스 양자화 행렬 설계 Download PDF

Info

Publication number
KR20220024716A
KR20220024716A KR1020227001851A KR20227001851A KR20220024716A KR 20220024716 A KR20220024716 A KR 20220024716A KR 1020227001851 A KR1020227001851 A KR 1020227001851A KR 20227001851 A KR20227001851 A KR 20227001851A KR 20220024716 A KR20220024716 A KR 20220024716A
Authority
KR
South Korea
Prior art keywords
quantization matrix
block
size
identifier
prediction mode
Prior art date
Application number
KR1020227001851A
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 KR20220024716A publication Critical patent/KR20220024716A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • 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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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 크기에 관련되는 크기 식별자(sizeId), 및 루마 QM들이 먼저 열거되는 행렬 타입(matrixTypeId)에 기초하여, 통합 행렬 식별자 matrixId가 사용된다. 예를 들어, 통합 식별자는 다음과 같이 유도된다: matrixId = N * sizeId + matrixTypeId, 여기서 N은 가능한 타입 식별자들의 수, 예를 들어, N = 6이다. 이러한 단일 식별자는 예측(카피)을 사용할 때 임의의 이전에 송신된 행렬을 참조하는 것을 허용하고, 더 큰 행렬들을 먼저 송신하는 것은 예측 프로세스에서 보간을 회피한다. 블록이 인트라 블록 카피 예측 모드를 사용하는 경우, QM 식별자는 블록이 인터 예측 모드를 사용하는 것처럼 유도될 수 있다.

Description

비디오 인코딩 및 디코딩을 위한 단일 인덱스 양자화 행렬 설계
본 실시예들은 일반적으로 비디오 인코딩 또는 디코딩에서 양자화 행렬 설계를 위한 방법 및 장치에 관한 것이다.
높은 압축 효율을 달성하기 위해, 이미지 및 비디오 코딩 방식들은 비디오 콘텐츠에서의 공간적 및 시간적 리던던시를 레버리지(leverage)하기 위해 일반적으로 예측 및 변환을 이용한다. 일반적으로, 인트라 또는 인터 예측은 인트라 또는 인터 픽처 상관을 활용하기 위해 사용되고, 이후 종종 예측 에러들 또는 예측 잔차들로서 표시되는, 원래의 블록과 예측된 블록 사이의 차이들은 변환되고, 양자화되고, 엔트로피 코딩된다. 비디오를 재구성하기 위해, 압축된 데이터는 엔트로피 코딩, 양자화, 변환, 및 예측에 대응하는 역 프로세스들에 의해 디코딩된다.
일 실시예에 따르면, 비디오 디코딩 방법이 제공되고, 이 방법은 픽처 내의 디코딩될 블록의 블록 크기, 컬러 성분 및 예측 모드에 기초하여 양자화 행렬에 대한 단일 식별자를 획득하는 단계; 참조 양자화 행렬을 표시하는 신택스 엘리먼트를 디코딩하는 단계- 상기 신택스 엘리먼트는 상기 참조 양자화 행렬의 식별자와 상기 양자화 행렬에 대한 상기 획득된 식별자 사이의 차이를 지정함 -; 상기 참조 양자화 행렬에 기초하여 상기 양자화 행렬을 획득하는 단계; 상기 양자화 행렬에 응답하여 상기 블록에 대한 변환 계수들을 역양자화하는 단계; 상기 역양자화된 변환 계수들에 응답하여 상기 블록을 디코딩하는 단계를 포함한다.
다른 실시예에 따르면, 비디오 인코딩을 위한 방법이 제공되고, 이 방법은 픽처 내의 인코딩될 블록에 액세스하는 단계; 상기 블록에 대한 양자화 행렬에 액세스하는 단계; 상기 블록의 블록 크기, 컬러 성분 및 예측 모드에 기초하여 상기 양자화 행렬에 대한 단일 식별자를 획득하는 단계; 참조 양자화 행렬을 표시하는 신택스 엘리먼트를 인코딩하는 단계- 상기 신택스 엘리먼트는 상기 참조 양자화 행렬의 식별자와 상기 양자화 행렬에 대한 상기 획득된 식별자 사이의 차이를 지정함 -; 상기 양자화 행렬에 응답하여 상기 블록에 대한 변환 계수들을 양자화하는 단계; 및 상기 양자화된 변환 계수들을 엔트로피 인코딩하는 단계를 포함한다.
다른 실시예에 따르면, 하나 이상의 프로세서를 포함하는 비디오 디코딩을 위한 장치가 제공되고, 상기 하나 이상의 프로세서는 픽처 내의 디코딩될 블록의 블록 크기, 컬러 성분 및 예측 모드에 기초하여 양자화 행렬에 대한 단일 식별자를 획득하고; 참조 양자화 행렬을 표시하는 신택스 엘리먼트를 디코딩하고- 상기 신택스 엘리먼트는 상기 참조 양자화 행렬의 식별자와 상기 양자화 행렬에 대한 상기 획득된 식별자 사이의 차이를 지정함 -; 상기 참조 양자화 행렬에 기초하여 상기 양자화 행렬을 획득하고; 상기 양자화 행렬에 응답하여 상기 블록에 대한 변환 계수들을 역양자화하고; 그리고 상기 역양자화된 변환 계수들에 응답하여 상기 블록을 디코딩하도록 구성된다.
다른 실시예에 따르면, 하나 이상의 프로세서를 포함하는 비디오 인코딩을 위한 장치가 제공되고, 상기 하나 이상의 프로세서는 픽처 내의 인코딩될 블록에 액세스하고; 상기 블록에 대한 양자화 행렬에 액세스하고; 상기 블록의 블록 크기, 컬러 성분 및 예측 모드에 기초하여 상기 양자화 행렬에 대한 단일 식별자를 획득하고; 참조 양자화 행렬을 표시하는 신택스 엘리먼트를 인코딩하고- 상기 신택스 엘리먼트는 상기 참조 양자화 행렬의 식별자와 상기 양자화 행렬에 대한 상기 획득된 식별자 사이의 차이를 지정함 -; 상기 양자화 행렬에 응답하여 상기 블록에 대한 변환 계수들을 양자화하고; 그리고 상기 양자화된 변환 계수들을 엔트로피 인코딩하도록 구성된다.
다른 실시예에 따르면, 비디오 디코딩의 장치가 제공되고, 이 장치는 픽처 내의 디코딩될 블록의 블록 크기, 컬러 성분 및 예측 모드에 기초하여 양자화 행렬에 대한 단일 식별자를 획득하기 위한 수단; 참조 양자화 행렬을 표시하는 신택스 엘리먼트를 디코딩하기 위한 수단- 상기 신택스 엘리먼트는 상기 참조 양자화 행렬의 식별자와 상기 양자화 행렬에 대한 상기 획득된 식별자 사이의 차이를 지정함 -; 상기 참조 양자화 행렬에 기초하여 상기 양자화 행렬을 획득하기 위한 수단; 상기 양자화 행렬에 응답하여 상기 블록에 대한 변환 계수들을 역양자화하기 위한 수단; 및 상기 역양자화된 변환 계수들에 응답하여 상기 블록을 디코딩하기 위한 수단을 포함한다.
다른 실시예에 따르면, 비디오 인코딩의 장치가 제공되고, 이 장치는 픽처 내의 인코딩될 블록에 액세스하기 위한 수단; 상기 블록에 대한 양자화 행렬에 액세스하기 위한 수단; 상기 블록의 블록 크기, 컬러 성분 및 예측 모드에 기초하여 상기 양자화 행렬에 대한 단일 식별자를 획득하기 위한 수단; 참조 양자화 행렬을 표시하는 신택스 엘리먼트를 인코딩하기 위한 수단- 상기 신택스 엘리먼트는 상기 참조 양자화 행렬의 식별자와 상기 양자화 행렬에 대한 상기 획득된 식별자 사이의 차이를 지정함 -; 상기 양자화 행렬에 응답하여 상기 블록에 대한 변환 계수들을 양자화하기 위한 수단; 및 상기 양자화된 변환 계수들을 엔트로피 인코딩하기 위한 수단을 포함한다.
하나 이상의 실시예는 또한, 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 전술된 실시예들 중 임의의 것에 따른 인코딩 방법 또는 디코딩 방법을 수행하게 하는 명령어들을 포함하는 컴퓨터 프로그램을 제공한다. 본 실시예들 중 하나 이상은 또한 전술한 방법들에 따라 비디오 데이터를 인코딩 또는 디코딩하기 위한 명령어들이 저장된 컴퓨터 판독가능 저장 매체를 제공한다. 하나 이상의 실시예는 또한 전술된 방법들에 따라 생성된 비트스트림이 저장된 컴퓨터 판독가능 저장 매체를 제공한다. 하나 이상의 실시예는 전술된 방법들에 따라 생성된 비트스트림을 송신하거나 수신하기 위한 방법 및 장치를 또한 제공한다.
도 1은 본 실시예들의 양태들이 구현될 수 있는 시스템의 블록도를 예시한다.
도 2는 비디오 인코더의 일 실시예의 블록도를 예시한다.
도 3은 비디오 디코더의 일 실시예의 블록도를 예시한다.
도 4는 VVC 초안 5에서 32보다 큰 블록 크기들에 대해 변환 계수들이 제로로 추론되는 것을 예시한다.
도 5는 JCTVC-H0314에 설명된 고정 예측 트리를 예시한다.
도 6은 일 실시예에 따른, 더 큰 크기(데시메이션)로부터의 예측을 예시한다.
도 7은 일 실시예에 따른, 직사각형 블록에 대한 더 큰 크기 및 데시메이션으로부터의 예측의 조합을 예시한다.
도 8은 일 실시예에 따른, 크로마에 대한 직사각형 블록에 대한 QM 유도 프로세스를 예시한다.
도 9는 일 실시예에 따른, 크로마에 대한 직사각형 블록에 대한 QM 유도 프로세스(4:2:2 포맷에 대한 적응)를 예시한다.
도 10은 크로마에 대한 직사각형 블록에 대한 QM 유도 프로세스(4:4:4 포맷에 대한 적응)를 예시한다.
도 11은 일 실시예에 따른, 스케일링 리스트 데이터 신택스 구조를 파싱하기 위한 흐름도를 예시한다.
도 12는 일 실시예에 따른, 스케일링 리스트 데이터 신택스 구조를 인코딩하기 위한 흐름도를 예시한다.
도 13은 일 실시예에 따른, QM 유도 프로세스에 대한 흐름도를 예시한다.
도 1은 다양한 양태들 및 실시예들이 구현될 수 있는 시스템의 예의 블록도를 예시한다. 시스템(100)은 후술되는 다양한 컴포넌트들을 포함하는 디바이스로서 구현될 수 있고, 본 출원에 설명되는 양태들 중 하나 이상을 수행하도록 구성된다. 이러한 디바이스들의 예들은 개인용 컴퓨터들, 랩톱 컴퓨터들, 스마트폰들, 태블릿 컴퓨터들, 디지털 멀티미디어 셋톱 박스들, 디지털 텔레비전 수신기들, 개인용 비디오 레코딩 시스템들, 접속된 가전 제품들, 및 서버들과 같은 다양한 전자 디바이스들을 포함하지만, 이에 제한되지 않는다. 시스템(100)의 엘리먼트들은, 단독으로 또는 조합하여, 단일의 집적 회로, 복수의 IC, 및/또는 개별 컴포넌트들로 구현될 수 있다. 예를 들어, 적어도 하나의 실시예에서, 시스템(100)의 처리 및 인코더/디코더 엘리먼트들은 복수의 IC 및/또는 개별 컴포넌트들에 걸쳐 분산된다. 다양한 실시예들에서, 시스템(100)은, 예를 들어, 통신 버스를 통해 또는 전용 입력 및/또는 출력 포트들을 통해, 다른 시스템들, 또는 다른 전자 디바이스들에 통신 가능하게 결합된다. 다양한 실시예들에서, 시스템(100)은 본 출원에서 설명된 양태들 중 하나 이상을 구현하도록 구성된다.
시스템(100)은, 예를 들어, 본 출원에서 설명된 다양한 양태들을 구현하기 위해 그 안에 로딩된 명령어들을 실행하도록 구성된 적어도 하나의 프로세서(110)를 포함한다. 프로세서(110)는 내장 메모리, 입출력 인터페이스, 및 본 기술 분야에 공지된 바와 같은 다양한 다른 회로들을 포함할 수 있다. 시스템(100)은 적어도 하나의 메모리(120)(예를 들어, 휘발성 메모리 디바이스 및/또는 비휘발성 메모리 디바이스)를 포함한다. 시스템(100)은 저장 디바이스(140)를 포함하고, 이는 EEPROM, ROM, PROM, RAM, DRAM, SRAM, 플래시, 자기 디스크 드라이브, 및/또는 광 디스크 드라이브를 포함하지만 이에 제한되지 않는 비휘발성 메모리 및/또는 휘발성 메모리를 포함할 수 있다. 저장 디바이스(140)는 비제한적인 예들로서, 내부 저장 디바이스, 부착된 저장 디바이스, 및/또는 네트워크 액세스가능한 저장 디바이스를 포함할 수 있다.
시스템(100)은, 예를 들어, 인코딩된 비디오 또는 디코딩된 비디오를 제공하기 위해 데이터를 처리하도록 구성된 인코더/디코더 모듈(130)을 포함하고, 인코더/디코더 모듈(130)은 그 자신의 프로세서 및 메모리를 포함할 수 있다. 인코더/디코더 모듈(130)은 인코딩 및/또는 디코딩 기능들을 수행하기 위해 디바이스에 포함될 수 있는 모듈(들)을 나타낸다. 공지된 바와 같이, 디바이스는 인코딩 및 디코딩 모듈들 중 하나 또는 양자 모두를 포함할 수 있다. 또한, 인코더/디코더 모듈(130)은 시스템(100)의 개별 엘리먼트로서 구현될 수 있거나, 또는 본 기술 분야의 통상의 기술자에게 공지된 바와 같이 하드웨어 및 소프트웨어의 조합으로서 프로세서(110) 내에 통합될 수 있다.
본 출원에서 설명된 다양한 양태들을 수행하기 위해 프로세서(110) 또는 인코더/디코더(130) 상에 로딩될 프로그램 코드는 저장 디바이스(140)에 저장될 수 있고, 후속하여 프로세서(110)에 의한 실행을 위해 메모리(120) 상에 로딩될 수 있다. 다양한 실시예들에 따르면, 프로세서(110), 메모리(120), 저장 디바이스(140), 및 인코더/디코더 모듈(130) 중 하나 이상은 본 출원에서 설명된 프로세스들의 수행 동안 다양한 항목들 중 하나 이상을 저장할 수 있다. 이러한 저장된 항목들은 입력 비디오, 디코딩된 비디오 또는 디코딩된 비디오의 부분들, 비트스트림, 행렬들, 변수들, 및 수학식들, 공식들, 연산들 및 연산 로직의 처리로부터의 중간 또는 최종 결과들을 포함할 수 있지만, 이에 제한되지 않는다.
여러 실시예들에서, 프로세서(110) 및/또는 인코더/디코더 모듈(130) 내부의 메모리는 명령어들을 저장하고 인코딩 또는 디코딩 동안 필요한 처리를 위한 작업 메모리를 제공하기 위해 사용된다. 그러나, 다른 실시예들에서, 처리 디바이스 외부의 메모리(예를 들어, 처리 디바이스는 프로세서(110) 또는 인코더/디코더 모듈(130) 중 어느 하나일 수 있음)는 이러한 기능들 중 하나 이상을 위해 사용된다. 외부 메모리는 메모리(120) 및/또는 저장 디바이스(140), 예를 들어, 동적 휘발성 메모리 및/또는 비휘발성 플래시 메모리일 수 있다. 여러 실시예들에서, 외부 비휘발성 플래시 메모리는 텔레비전의 운영 체제를 저장하는 데 사용된다. 적어도 하나의 실시예에서, RAM과 같은 고속 외부 동적 휘발성 메모리는 MPEG-2, HEVC 또는 VVC와 같은 비디오 코딩 및 디코딩 동작들을 위한 작업 메모리로서 사용된다.
시스템(100)의 엘리먼트들에 대한 입력은 블록(105)에 표시한 바와 같이 다양한 입력 디바이스들을 통해 제공될 수 있다. 이러한 입력 디바이스들은 (i) 예를 들어, 브로드캐스터에 의해 공중을 통해 송신되는 RF 신호를 수신하는 RF 부분, (ii) 복합 입력 단자, (iii) USB 입력 단자, 및/또는 (iv) HDMI 입력 단자를 포함하지만, 이에 제한되지 않는다.
다양한 실시예들에서, 블록(105)의 입력 디바이스들은 본 기술 분야에 공지된 바와 같은 연관된 각각의 입력 처리 엘리먼트들을 갖는다. 예를 들어, RF 부분은 (i) 원하는 주파수를 선택하는 것(또한 신호를 선택하는 것, 또는 주파수들의 대역으로 신호를 대역 제한하는 것으로 지칭됨), (ii) 선택된 신호를 하향 변환하는 것, (iii) 주파수들의 더 좁은 대역으로 다시 대역 제한하여 특정 실시예들에서 채널로 지칭될 수 있는 (예를 들어) 신호 주파수 대역을 선택하는 것, (iv) 하향 변환된 및 대역 제한된 신호를 복조하는 것, (v) 에러 정정을 수행하는 것, 및 (vi) 원하는 데이터 패킷들의 스트림을 선택하기 위해 역다중화하는 것에 적합한 엘리먼트들과 연관될 수 있다. 다양한 실시예들의 RF 부분은 이러한 기능들을 수행하기 위한 하나 이상의 엘리먼트, 예를 들어, 주파수 선택기들, 신호 선택기들, 대역 제한기들, 채널 선택기들, 필터들, 다운컨버터들, 복조기들, 에러 정정기들 및 디멀티플렉서들을 포함한다. RF 부분은, 예를 들어, 수신된 신호를 더 낮은 주파수(예를 들어, 중간 주파수 또는 근 기저대역 주파수)로 또는 기저대역으로 하향 변환하는 것을 포함하는, 다양한 이러한 기능들을 수행하는 튜너를 포함할 수 있다. 하나의 셋톱 박스 실시예에서, RF 부분 및 그 연관된 입력 처리 엘리먼트는 유선(예를 들어, 케이블) 매체를 통해 송신되는 RF 신호를 수신하고, 필터링, 하향 변환, 및 원하는 주파수 대역으로의 다시 필터링에 의해 주파수 선택을 수행한다. 다양한 실시예들은 전술한(및 다른) 엘리먼트들의 순서를 재배열하고, 이러한 엘리먼트들 중 일부를 제거하고/하거나, 유사하거나 상이한 기능들을 수행하는 다른 엘리먼트들을 추가한다. 엘리먼트들을 추가하는 것은 기존 엘리먼트들 사이에 엘리먼트들을 삽입하는 것, 예를 들어, 증폭기들 및 아날로그-디지털 컨버터를 삽입하는 것을 포함할 수 있다. 다양한 실시예들에서, RF 부분은 안테나를 포함한다.
또한, USB 및/또는 HDMI 단자들은 시스템(100)을 USB 및/또는 HDMI 접속들을 통해 다른 전자 디바이스들에 접속하기 위한 각각의 인터페이스 프로세서들을 포함할 수 있다. 입력 처리의 다양한 양태, 예를 들어, 리드-솔로몬(Reed-Solomon) 에러 정정이, 예를 들어, 별도의 입력 처리 IC 내에서 또는 필요에 따라 프로세서(110) 내에서 구현될 수 있다는 것을 이해해야 한다. 유사하게, USB 또는 HDMI 인터페이스 처리의 양태들은 필요에 따라 별개의 인터페이스 IC들 내에서 또는 프로세서(110) 내에서 구현될 수 있다. 복조된, 에러 정정된, 및 디멀티플렉싱된 스트림은, 예를 들어, 프로세서(110), 및 메모리 및 저장 엘리먼트들과 조합하여 동작하는 인코더/디코더(130)를 포함하는 다양한 처리 엘리먼트들에 제공되어, 출력 디바이스 상의 프리젠테이션을 위해 필요에 따라 데이터스트림을 처리한다.
시스템(100)의 다양한 엘리먼트들이 통합된 하우징 내에 제공될 수 있다. 통합된 하우징 내에서, 다양한 엘리먼트들은 적합한 접속 배열(115), 예를 들어, I2C 버스, 배선, 및 인쇄 회로 기판들을 포함하는, 본 기술 분야에 공지된 것과 같은 내부 버스를 사용하여 상호접속되고 그들 사이에 데이터를 송신할 수 있다.
시스템(100)은 통신 채널(190)을 통해 다른 디바이스들과의 통신을 가능하게 하는 통신 인터페이스(150)를 포함한다. 통신 인터페이스(150)는 통신 채널(190)을 통해 데이터를 송신 및 수신하도록 구성된 트랜시버를 포함할 수 있지만, 이에 제한되지 않는다. 통신 인터페이스(150)는 모뎀 또는 네트워크 카드를 포함할 수 있지만, 이에 제한되지 않으며, 통신 채널(190)은, 예를 들어, 유선 및/또는 무선 매체 내에서 구현될 수 있다.
데이터는, 다양한 실시예들에서, IEEE 802.11과 같은 Wi-Fi 네트워크를 사용하여 시스템(100)에 스트리밍된다. 이러한 실시예들의 Wi-Fi 신호는 Wi-Fi 통신을 위해 적응되는 통신 인터페이스(150) 및 통신 채널(190)을 통해 수신된다. 이러한 실시예들의 통신 채널(190)은 스트리밍 애플리케이션들 및 다른 오버-더-톱(over-the-top) 통신들을 허용하기 위해 인터넷을 포함하는 외부 네트워크들에 대한 액세스를 제공하는 액세스 포인트 또는 라우터에 통상적으로 접속된다. 다른 실시예들은 입력 블록(105)의 HDMI 접속을 통해 데이터를 전달하는 셋톱 박스를 사용하여 스트리밍된 데이터를 시스템(100)에 제공한다. 또 다른 실시예들은 입력 블록(105)의 RF 접속을 사용하여 스트리밍된 데이터를 시스템(100)에 제공한다.
시스템(100)은 디스플레이(165), 스피커들(175), 및 다른 주변 디바이스들(185)을 포함하는 다양한 출력 디바이스들에 출력 신호를 제공할 수 있다. 다른 주변 디바이스들(185)은, 실시예들의 다양한 예들에서, 독립형 DVR, 디스크 플레이어, 스테레오 시스템, 조명 시스템, 및 시스템(100)의 출력에 기초한 기능을 제공하는 다른 디바이스들 중 하나 이상을 포함한다. 다양한 실시예들에서, 제어 신호들은 AV.Link, CEC, 또는 사용자 개입을 이용하거나 이용하지 않고서 디바이스 대 디바이스 제어를 가능하게 하는 다른 통신 프로토콜들과 같은 시그널링을 이용하여 시스템(100)과 디스플레이(165), 스피커들(175), 또는 다른 주변 디바이스들(185) 사이에서 통신된다. 출력 디바이스들은 각각의 인터페이스들(160, 170, 180)을 통한 전용 접속들을 통해 시스템(100)에 통신 가능하게 결합될 수 있다. 대안적으로, 출력 디바이스들은 통신 인터페이스(150)를 통해 통신 채널(190)을 사용하여 시스템(100)에 접속될 수 있다. 디스플레이(165) 및 스피커들(175)은 전자 디바이스, 예를 들어, 텔레비전 내의 시스템(100)의 다른 컴포넌트들과 단일 유닛으로 통합될 수 있다. 다양한 실시예들에서, 디스플레이 인터페이스(160)는 디스플레이 드라이버, 예를 들어, 타이밍 제어기(T Con) 칩을 포함한다.
예를 들어, 입력(105)의 RF 부분이 별개의 셋톱 박스의 일부인 경우, 디스플레이(165) 및 스피커(175)는 대안적으로 다른 컴포넌트들 중 하나 이상과 분리될 수 있다. 디스플레이(165) 및 스피커들(175)이 외부 컴포넌트들인 다양한 실시예들에서, 출력 신호는, 예를 들어, HDMI 포트들, USB 포트들 또는 COMP 출력들을 포함하는 전용 출력 접속들을 통해 제공될 수 있다.
도 2는 고효율 비디오 코딩(HEVC) 인코더와 같은 예시적인 비디오 인코더(200)를 예시한다. 도 2는 또한 HEVC 표준에 대한 개선들이 이루어지는 인코더 또는 JVET(Joint Video Exploration Team)에 의해 개발 중인 VVC(Versatile Video Coding) 인코더와 같은, HEVC와 유사한 기술들을 이용하는 인코더를 예시할 수 있다.
본 출원에서, 용어들 "재구성된" 및 "디코딩된"은 교환 가능하게 사용될 수 있고, 용어들 "인코딩된" 또는 "코딩된"은 교환 가능하게 사용될 수 있고, 용어들 "이미지", "픽처" 및 "프레임"은 교환 가능하게 사용될 수 있다. 반드시 그런 것은 아니지만 일반적으로, "재구성된"이라는 용어는 인코더 측에서 사용되는 한편, "디코딩된"은 디코더 측에서 사용된다.
인코딩되기 전에, 비디오 시퀀스는 프리-인코딩 처리(201), 예를 들어, 입력 컬러 픽처에 컬러 변환(예를 들어, RGB 4:4:4로부터 YCbCr 4:2:0으로의 변환)을 적용하는 것, 또는 (예를 들어, 컬러 성분들 중 하나의 히스토그램 등화를 사용하여) 압축에 더 탄력적인 신호 분포를 얻기 위해 입력 픽처 성분들의 리맵핑을 수행하는 것을 거칠 수 있다. 메타데이터는 전처리와 연관되고, 비트스트림에 첨부될 수 있다.
인코더(200)에서, 픽처는 후술되는 바와 같이 인코더 엘리먼트들에 의해 인코딩된다. 인코딩될 픽처는 파티셔닝되고(202), 예를 들어, CU들의 유닛들로 처리된다. 각각의 유닛은, 예를 들어, 인트라 또는 인터 모드 중 어느 하나를 사용하여 인코딩된다. 유닛이 인트라 모드에서 인코딩될 때, 이는 인트라 예측(260)을 수행한다. 인터 모드에서, 모션 추정(275) 및 보상(270)이 수행된다. 인코더는 유닛을 인코딩하기 위해 인트라 모드 또는 인터 모드 중 어느 것을 사용할지 여부를 결정하고(205), 예를 들어, 예측 모드 플래그에 의해 인트라/인터 결정을 표시한다. 예측 잔차들은, 예를 들어, 원래의 이미지 블록으로부터 예측된 블록을 감산(210)함으로써 계산된다.
예측 잔차들은 그 후 변환되고(225) 양자화된다(230). 양자화된 변환 계수들뿐만 아니라, 모션 벡터들 및 다른 신택스 엘리먼트들은 비트스트림을 출력하기 위하여 엔트로피 코딩(245)된다. 인코더는 변환을 스킵하고 비변환 잔차 신호에 직접 양자화를 적용할 수 있다. 인코더는 변환 및 양자화 양자 모두를 우회할 수 있으며, 즉 잔차는 변환 또는 양자화 프로세스들의 적용 없이 직접 코딩된다.
인코더는 인코딩된 블록을 디코딩하여 추가 예측을 위한 참조를 제공한다. 양자화된 변환 계수들은 예측 잔차들을 디코딩하기 위해 역양자화되고(240) 역변환된다(250). 디코딩된 예측 잔차들과 예측된 블록을 조합하면(255), 이미지 블록이 재구성된다. 인-루프 필터들(265)은, 예를 들어, 인코딩 아티팩트들을 감소시키기 위한 디블로킹/SAO(Sample Adaptive Offset) 필터링을 수행하기 위해 재구성된 픽처에 적용된다. 필터링된 이미지는 참조 픽처 버퍼(280)에 저장된다.
도 3은 예시적인 비디오 디코더(300)의 블록도를 예시한다. 디코더(300)에서, 비트스트림은 후술하는 바와 같이 디코더 엘리먼트들에 의해 디코딩된다. 비디오 디코더(300)는 일반적으로 도 2에 설명된 바와 같은 인코딩 패스에 역인 디코딩 패스를 수행한다. 인코더(200)는 또한 일반적으로 비디오 데이터의 인코딩의 일부로서 비디오 디코딩을 수행한다.
특히, 디코더의 입력은 비디오 비트스트림을 포함하고, 이는 비디오 인코더(200)에 의해 생성될 수 있다. 비트스트림은 변환 계수들, 모션 벡터들, 및 다른 코딩된 정보를 획득하기 위하여 먼저 엔트로피 디코딩된다(330). 픽처 파티션 정보는 픽처가 어떻게 파티셔닝되는지를 표시한다. 따라서, 디코더는 디코딩된 픽처 파티셔닝 정보에 따라 픽처를 분할할 수 있다(335). 변환 계수들은 예측 잔차들을 디코딩하기 위해 역양자화되고(340) 역변환된다(350). 디코딩된 예측 잔차들과 예측된 블록을 조합하면(355), 이미지 블록이 재구성된다. 예측된 블록은 인트라 예측(360) 또는 모션-보상된 예측(즉, 인터 예측)(375)으로부터 획득될 수 있다(370). 인-루프 필터들(365)이 재구성된 이미지에 적용된다. 필터링된 이미지는 참조 픽처 버퍼(380)에 저장된다.
디코딩된 픽처는 포스트-디코딩 처리(385), 예를 들어, 역 컬러 변환(예를 들어, YCbCr 4:2:0으로부터 RGB 4:4:4로의 변환) 또는 프리-인코딩 처리(201)에서 수행되는 리맵핑 프로세스의 역을 수행하는 역 리맵핑을 추가로 거칠 수 있다. 포스트-디코딩 처리는 프리-인코딩 처리에서 유도되고 비트스트림에서 시그널링되는 메타데이터를 사용할 수 있다.
HEVC 사양은 역양자화 프로세스에서 양자화 행렬들의 사용을 허용하고, 여기서 변환된 계수들은 다음과 같이 현재 양자화 스텝에 의해 스케일링되고 양자화 행렬(QM)에 의해 추가로 스케일링된다:
d[ x ][ y ] = Clip3( coeffMin, coeffMax, ( ( TransCoeffLevel[ xTbY ][ yTbY ][ cIdx ][ x ][ y ] * m[ x ][ y ] * levelScale[ qP%6 ] << (qP / 6 ) ) + ( 1 << ( bdShift - 1 ) ) ) >> bdShift )
여기서:
· TransCoeffLevel [...]는 그 공간 좌표들 xTbY, yTbY 및 그 컴포넌트 인덱스 cIdx에 의해 식별되는 현재 블록에 대한 변환된 계수 절대 값들이다.
· x 및 y는 수평/수직 주파수 인덱스들이다.
· qP는 현재 양자화 파라미터이다.
· levelScale[qP%6]과 (qP/6)에 의한 좌측 시프트에 의한 승산은 양자화 스텝 qStep= (levelScale[qP%6] << (qP/6))에 의한 승산의 등가이다.
· m[...][...]은 이차원 양자화 행렬이다. 여기서, 양자화 행렬은 스케일링에 이용되기 때문에, 스케일링 행렬이라고도 지칭될 수 있다.
· bdShift는 이미지 샘플 비트 깊이를 설명하기 위한 추가적인 스케일링 인자이다. 항 (1 << (bdShift-1))은 가장 가까운 정수로 반올림하는 목적으로 기능한다.
· d[...]는 결과적인 역양자화된 변환된 계수 절대 값들이다.
양자화 행렬들을 송신하기 위해 HEVC에 의해 사용되는 신택스가 이하에 설명된다:
Figure pct00001
다음을 유의하여야 할 수 있다:
· 각각의 변환 크기(sizeId)에 대해 상이한 행렬이 지정된다. 스케일링 리스트 데이터 신택스 구조에서, 스케일링 행렬은 1-D 스케일링 리스트(예를 들어, ScalingList)로 스캐닝된다.
· 주어진 변환 크기에 대해, 인트라/인터 코딩 및 Y/Cb/Cr 성분들에 대해 6개의 행렬이 지정된다.
· 행렬은 다음 중 어느 하나일 수 있다:
o scaling_list_pred_mode_flag가 0과 같으면, 동일한 크기의 이전에 송신된 행렬로부터 카피됨(참조 matrixId는 matrixId-scaling_list_pred_matrix_id_delta로서 획득된다)
o 표준에 지정된 디폴트 값들로부터 카피됨(scaling_list_pred_mode_flag 및 scaling_list_pred_matrix_id_delta 양자 모두가 0인 경우)
o exp-Golomb 엔트로피 코딩을 사용하여, DPCM 코딩 모드에서 우상 대각 스캐닝 순서로 완전히 지정된다.
· 8x8보다 큰 블록 크기의 경우, 코딩된 비트를 절감하기 위하여 양자화 행렬을 시그널링하기 위해 8x8 계수만이 송신된다. 그 다음, 계수들은, 명시적으로 송신되는 DC 계수를 제외하고는, 제로-홀드(zero-hold)(즉, 반복)를 이용하여 보간된다.
HEVC와 유사한 양자화 행렬들의 사용은 기고문 JVET-N0847에 기초한 VVC 초안 5에서 채택되었다(O. Chubach, et al., "CE7-related: Support of quantization matrices for VVC," JVET-N0847, Geneva, CH, March 2019 참조). scaling_list_data 신택스는 아래에 도시된 바와 같이 VVC 코덱에 적응되었다.
Figure pct00002
JVET-N0847 채택을 갖는 VVC 초안 5의 설계에서, HEVC에서와 같이, QM은 2개의 파라미터, matrixId 및 sizeId에 의해 식별된다. 이는 이하의 2개의 표에 예시되어 있다.
표 1: 블록 크기 식별자(JVET-N0847)
Figure pct00003
표 2: QM 타입 식별자(JVET-N0847)
Figure pct00004
주: MODE_INTRA QM들 또한 MODE_IBC(Intra Block Copy)를 위해 사용된다.
양자 모두의 식별자의 조합이 이하의 표에 나타나 있다:
표 3: (matrixId, sizeId) 조합들(JVET-N0847)
Figure pct00005
HEVC에서와 같이, 8x8보다 큰 블록 크기에 대해, 8x8 계수와 DC 계수만이 송신된다. 정확한 크기의 QM은 제로-홀드 보간을 이용하여 재구성된다. 예를 들어, 16x16 블록에 대해, 모든 계수가 양방향으로 2번 반복되고, 이어서, DC 계수가 송신된 계수로 대체된다.
직사각형 블록들의 경우, QM 선택을 위해 유지되는 크기(sizeId)는 더 큰 치수, 즉 폭 및 높이의 최대이다. 예를 들어, 4x16 블록에 대해, 16x16 블록 크기에 대한 QM이 선택된다. 그 후, 재구성된 16x16 행렬은 최종 4x16 양자화 행렬을 획득하기 위해 4배만큼 수직으로 데시메이트된다(즉, 4개 중 3개의 라인이 스킵된다).
이하에서, sizeId 및 그것이 사용되는 정사각형 블록 크기와 관련하여, 블록 크기들(정사각형 또는 직사각형)의 주어진 패밀리에 대한 QM들을 size-N으로 지칭한다. 예를 들어, 블록 크기들 16x16 또는 16x4에 대해, QM들은 크기-16 (VVC 초안 5에서 sizeId 4)으로서 식별된다. 크기-N 표기는 정확한 블록 형상 및 시그널링된 QM 계수의 수(표 3에 도시된 바와 같이 8x8로 제한됨)와 구별하는데 사용된다.
또한, VVC 초안 5에서, 크기-64에 대해, 우하단 사분면에 대한 QM 계수가 송신되지 않는다(이들은 0으로 추론되고, 이하에서 "제로-아웃(zero-out)"이라고 지칭된다). 이는 scaling_list_data 신택스에서 "x>=4 && y>=4" 조건에 의해 구현된다. 이는 변환/양자화 프로세스에 의해 결코 사용되지 않는 QM 계수들의 송신을 방지한다. 실제로, VVC에서, 임의의 차원에서 32보다 큰 변환 블록 크기들(64xN, Nx64, N <= 64)에 대해, 32보다 크거나 같은 x/y 주파수 좌표를 갖는 임의의 변환된 계수가 송신되지 않고 제로로 추론되며, 결과적으로, 이를 양자화하기 위해 양자화 행렬 계수가 필요하지 않다. 이는 도 4에 예시되어 있는데, 여기서 해칭된 영역은 제로로 추론된 변환 계수들에 대응한다.
HEVC와 비교하여, VVC는 더 많은 수의 블록 크기로 인해 더 많은 양자화 행렬을 필요로 한다. 그러나, VVC 초안 5에서, QM 예측은 여전히 동일한 블록-크기 행렬들의 카피로 제한되고, 이는 낭비된 비트들을 초래할 수 있다. 또한, QM들과 관련된 신택스는 VVC에서 크로마에 대해서만 블록 크기 2x2를 사용하는 것 및 루마에 대해서만 블록 크기 64x64를 사용하는 것 때문에 더 복잡하다. 또한, HEVC에서와 같이, JVET-N0847은 각각의 블록 크기에 대한 특정 행렬 유도 프로세스를 설명한다.
일부 QM 예측 기법들은 HEVC 표준화 동안, 예를 들어, JCTVC-E073 (J. Tanaka, et al., "Quantization Matrix for HEVC," JCTVC-E073, Geneva, CH, March 2011 참조) 및 JCTVC-H0314 (Y. Wang, et al., "Layered quantization matrices representation and compression," JCTVC-H0314, San Jos
Figure pct00006
, CA, USA, February 2012 참조)에서 탐구되었다.
JCTVC-E073: QM들은 특정 파라미터 세트(QMPS)에서 송신된다. QMPS 내에서, QM들은 증가하는 크기 순서(HEVC와 유사한 sizeId/matrixId)로 송신된다. 이전의 QMPS를 포함하는 임의의 이전에 코딩된 QM 계수들로부터의 예측(=카피)이 제안된다. 선형 보간을 이용한 상향 변환은 더 작은 참조 QM으로부터 적응하는데 이용되는 반면, 간단한 다운샘플링은 더 큰 참조 QM으로부터 적응하는데 이용된다. 이는 HEVC 표준화 동안에 최종적으로 거부되었다.
JCTVC-H0314: QM들은 더 큰 것으로부터 더 작은 것으로의 순서로 송신된다. 도 5에 도시된 바와 같이, 고정된 예측 트리(명시적 참조 인덱싱 없음)를 이용하여, 새로운 것을 송신하는 대신에 이전에 송신된 QM을 카피하는 것이 가능하다. 참조 QM이 더 큰 경우에 간단한 다운샘플링이 사용된다. 이는 HEVC 표준화 동안에 최종적으로 거부되었다.
이러한 2개의 제안은 HEVC와 관련되며, VVC에 의해 도입되는 복잡성들에 대처하지 않는다.
본 출원은 (JVET-N0847의 채택 후에) VVC 초안 5의 양자화 행렬 시그널링 및 예측 프로세스를 단순화하면서, 다음 중 하나 이상을 통합함으로써 임의의 QM이 임의의 이전에 시그널링된 것으로부터 예측될 수 있도록 이들을 강화하는 것을 제안한다:
- 참조 인덱스 차이가 임의의 이전에 송신된 것을 어드레싱할 수 있도록, 크기 및 타입 양자 모두를 포함하도록 QM 인덱스를 통합하는 것;
- 감소하는 블록 크기 순서로 양자화 행렬들을 송신하는 것;
- 필요에 따라, 예측 프로세스를 카피 또는 데시메이션 프로세스 중 어느 하나로서 지정하는 것;
- 크기-64 QM들이 예측자들로서 사용될 수 있도록, 크기-64에 대한 모든 QM 계수들을 송신하는 것.
게다가, 8x8보다 큰 블록들에 대한 업샘플링 및 직사각형 블록들에 대한 다운샘플링을 포함하는 QM 유도 프로세스는 블록 파라미터들에 따라 QM 인덱스를 선택하고 QM 시그널링된 크기를 실제 블록 크기에 적응시키는 것으로 설명된다.
표기의 용이함을 위해, 디폴트 값들로부터 또는 이전에 송신된 것으로부터 양자화 행렬을 예측하는 프로세스를 QM 예측 프로세스로서 고려하고, 송신되거나 예측된 QM을 변환 블록의 크기 및 크로마 포맷에 적응시키는 프로세스를 QM 유도 프로세스로서 고려한다. QM 예측 프로세스는, 예를 들어, 픽처 레벨에서 스케일링 리스트 데이터를 파싱하는 프로세스의 일부일 수 있다. 유도 프로세스는 일반적으로 더 낮은 레벨, 예를 들어, 변환 블록 레벨에 있다. 다양한 양태들이 아래에 더 상세히 제공되며, 초안 텍스트 예 및 성능 결과들이 이어진다.
· QM을 식별하기 위한 단일 행렬 인덱스의 유도 및 사용. 단일 식별자는 예측(카피)을 사용할 때 임의의 이전에 송신된 행렬을 참조하는 것을 허용하고, 더 큰 행렬들을 먼저 송신하는 것은 예측 프로세스에서 보간을 회피한다.
· 이전에 시그널링된 QM(참조 QM)을 카피 또는 데시메이팅하는 것으로 이루어지는 QM 예측 프로세스는 송신, 예측 또는 디폴트 참조 QM일 수 있다.
· 그 후, 주어진 변환 블록에 대해 QM 인덱스를 블록 크기, 컬러 성분 및 예측 모드에 기초하여 선택하는 것으로 이루어지는 QM 유도 프로세스는 선택된 QM의 크기를 블록의 크기에 적응시킨다. 리사이즈 프로세스는 선택된 QM의 계수들을 인덱싱하기 위해 변환 블록 내의 x 및 y 좌표들의 비트 시프트들에 기초한다.
· 크기-64 QM들에 대한 모든 계수들의 송신
VVC 초안 5와 비교하여, 이러한 양태들은 사양을 단순화하고(JVET-N0847에 비교하여 텍스트 변경들을 절반으로 줄이고) 상당한 비트 절약을 가져온다(scaling_list_data의 비트 비용은 절반으로 줄일 수 있다).
통합 QM 인덱스
변환 블록의 양자화/역양자화에 사용되는 QM은 하나의 단일 파라미터 matrixId에 의해 식별된다. 일 실시예에서, 통합된 matrixId (QM 인덱스)는 다음의 합성물이다:
- 블록 크기보다는 CU 크기(즉, 정사각형 크기 행렬들만이 송신되기 때문에 정사각형 형상을 둘러싸는 CU)에 관련된 크기 식별자. 여기서 루마 또는 크로마 중 어느 하나에 대해, 크기 식별자는 루마 블록 크기, 예를 들어, max(루마 블록 폭, 루마 블록 높이)에 의해 제어된다는 점에 유의한다. 루마 및 크로마 트리가 분리될 때, 크로마에 대해, "CU 크기"는 루마 평면 상에 투영된 블록의 크기를 지칭할 것이다.
- 루마 QM들이 크로마보다 클 수 있기 때문에(예를 들어, 4:2:0 크로마 포맷의 경우), 먼저 루마 QM들을 열거하는 행렬 타입
이 실시예에 따르면, QM 인덱스 유도가 표 4 및 표 5와 수학식 1에 예시되어 있다.
표 4: 크기 식별자(제안됨)
Figure pct00007
표 5: 행렬 타입 식별자(제안됨)
Figure pct00008
통합된 matrixId는 다음과 같이 유도된다:
matrixId = N * sizeId + matrixTypeId (1)
여기서, N은 가능한 타입 식별자들의 수, 예를 들어, N=6이다.
다른 실시예에서, 6개보다 많은 QM 타입이 정의되는 경우, sizeId는 양자화 행렬 타입들의 수인 정확한 수로 승산되어야 한다. 다른 실시예들에서, 다른 파라미터들, 예를 들어, 특정 블록 크기들, 시그널링된 행렬 크기들(여기서 8x8로 제한됨), 또는 DC 계수의 존재가 또한 상이할 수 있다. 여기서 QM들은, 표 6에 예시된 바와 같이, 감소하는 블록 크기에 의해 열거되고, 단일 인덱스에 의해 식별된다는 점에 유의한다.
표 6: 통합 matrixId (제안됨)
Figure pct00009
QM 예측 프로세스
QM 계수들을 송신하는 대신에, 디폴트 값들로부터, 또는 임의의 이전에 송신된 값으로부터 QM을 예측하는 것이 가능하다. 일 실시예에서, 참조 QM이 동일한 크기일 때, QM이 카피되고, 그렇지 않으면, 도 6의 예에 예시된 바와 같이, 관련 비율에 의해 데시메이트되고, 크기-4 루마 QM이 크기-8로부터 예측된다.
데시메이션은 이하의 수학식에 의해 설명된다:
ScalingMatrix[ matrixId ][ x ][ y ] = refScalingMatrix[ i ][ j ] (2)
여기서, matrixSize = (matrixId < 20) ? 8 : (matrixId < 26) ? 4 : 2 )
x = 0 .. matrixSize - 1, y = 0 .. matrixSize - 1,
i = x << ( log2(refMatrixSize) - log2( matrixSize ) ), 및
j = y << ( log2(refMatrixSize) - log2( matrixSize ) ).
여기서 refMatrixSize는 refScalingMatrix의 크기(그리고 따라서 i 및 j 변수들의 범위)와 매칭된다.
도 6에 도시된 예에서, 루마 크기-4 QM(4x4 어레이: matrixSize는 4)이 8x8 어레이(refMatrixSize는 8)인 루마 크기-8 QM으로부터 예측되고; 2개 중 하나의 라인 및 2개 중 하나의 열이 드롭되어 4x4 어레이를 생성한다(즉, 참조 QM에서의 엘리먼트(2x, 2y)는 현재 QM에서의 엘리먼트(x, y)에 카피된다).
수학식 3은 다음의 형태를 취한다:
ScalingMatrix[ matrixId ][ x ][ y ] = refScalingMatrix[ i ][ j ] (3)
x = 0 .. 3, y = 0 .. 3, i = x << 1, 및 j = y << 1.
참조 QM이 DC 값을 가질 때, 현재 QM이 DC 값을 필요로 하면, 이는 DC 값으로서 카피되고; 그렇지 않으면, 이는 좌상단 QM 계수에 카피된다.
이 QM 예측 프로세스는 바람직한 실시예에서 QM 디코딩 프로세스의 일부이지만, 예측 목적을 위한 데시메이션이 QM 리사이즈 서브프로세스와 병합되는 다른 실시예에서 QM 유도 프로세스로 연기될 수 있다.
QM 유도 프로세스
양자화 행렬에 대해 제안된 유도 프로세스는 먼저 전술된 바와 같이 블록 파라미터들에 따라 우측 QM 인덱스를 선택하고(통합된 QM 인덱스), 이어서 직사각형 블록들에 대한 데시메이션, 크기보다 더 큰 블록들, 예를 들어, 8x8에 대한 반복, 및 크로마 포맷 적응의 프로세스들을 하나의 단일 프로세스로 통합한다. 제안된 프로세스는 x 및 y 출력 좌표들의 비트 시프트들에 기초한다. 선택된 QM의 우측 라인/열을 선택하기 위해, 아래의 수학식에 예시된 바와 같이, x/y 출력 좌표들의 우측 시프트가 뒤따르는 좌측 시프트만이 요구된다.
m[ x ][ y ] = ScalingMatrix[ matrixId ][ i ][ j ] (4)
여기서 i = ( x << log2MatrixSize ) >> log2( blkWidth ), 및
j = ( y << log2MatrixSize ) >> log2( blkHeight ).
여기서, log2MatrixSize는 ScalingMatrix[ matrixId ] (정사각형 2D 어레이임)의 크기의 log2이고, blkWidth 및 blkHeight는 각각 현재 변환 블록의 폭 및 높이이고, x는 0 내지 blkWidth-1의 범위이고 y는 0 내지 blkHeight-1의 범위이다.
이하에서, QM 유도 프로세스를 예시하기 위해 몇 가지 예가 제공된다. 도 7에 예시된 예에서, 루마 16x8 블록에 대한 QM은 루마 크기-16 QM으로부터 유도되고, 이는 실제로 8x8 어레이 플러스 DC 계수이다. 이 예에 대해, blkWidth는 16과 동일하고, blkHeight는 8과 동일하고, log2MatrixSize는 3과 동일하고, 따라서 수학식 5는 다음의 형태를 취한다:
m[ x ][ y ] = ScalingMatrix[ matrixId ][ i ][ j ] (5)
여기서, i= (x << 3) >> 4, 및 j= (y << 3) >> 3, 여기서 x= 0..15 및 y= 0..7.
여기서, x는 1만큼 우측 시프트되고, y는 변경되지 않는다(즉, 선택된 QM의 열 i가 현재 QM의 열 2*i 및 2*i + 1에 카피된다). 또한, 선택된 QM은 DC 계수를 가지기 때문에, m[0][0]으로 카피된다.
도 8에 예시된 바와 같은 다른 예에서, 8x4 CU(4:2:0 포맷)에 대한 크로마 4x2 블록에 대한 QM이 생성된다. 이는 8x4 CU 크기와 매칭되고, 그 둘러싸는 정사각형은 8x8이다. 따라서, 선택된 QM은 크기-8의 것이고, 여기서 크로마 QM들은 4x4 어레이들로서 코딩된다. 여기서, blkWidth는 4와 동일하고, blkHeight는 2와 동일하고, log2MatrixSize는 2와 동일하며, 따라서, 수학식 6은 다음의 형태를 취한다:
m[ x ][ y ] = ScalingMatrix[ matrixId ][ i ][ j ] (6)
여기서, i= (x << 2) >> 2, 및 j= (y << 2) >> 1 여기서 x= 0..3 및 y= 0..1.
여기서, x는 변경되지 않고, y는 1만큼 좌측 시프트된다(즉, 참조 QM에서의 행 2y는 현재 QM에서의 행 y에 카피된다).
이하의 예들에서, 4:2:2 및 4:4:4 포맷들에 대한 제안된 적응은 VVC 초안 5와 상이하다. (크로마 행렬이 존재하지 않는 64x64를 제외하고) 크로마 블록 크기에 매칭되는 QM을 찾는 대신에, 크기 매칭은 동일한(루마) CU 크기(즉, 루마 평면 상에 투영되는 블록의 크기)에 기초하며, 필요한 경우에 계수들이 반복된다. 이는 QM 설계를 크로마 포맷과 독립적으로 만든다.
도 9에 도시된 예에서, 8x4 CU(4:2:2 포맷)에 대한 크로마 8x2 블록에 대한 QM이 생성된다. 선택된 QM은 도 8에 예시된 상기 예와 동일하지만, 4:2:2 크로마 포맷은 두 배 더 많은 열을 필요로 한다. 여기서, 열들이 반복되고, 따라서 x는 1만큼 우측 시프트되고, y는 여전히 1만큼 좌측 시프트된다. 특히, blkWidth는 8과 동일하고, blkHeight는 2와 동일하고, log2MatrixSize는 2와 동일하며, 따라서, 수학식 7은 다음의 형태를 취한다:
m[ x ][ y ] = ScalingMatrix[ matrixId ][ i ][ j ] (7)
여기서 i = ( x << 2 ) >> 3, 및 j = ( y << 2 ) >> 1, 여기서 x = 0..7 및 y = 0..1.
도 10에 도시된 예에서, 8x4 CU(4:4:4 포맷)에 대한 크로마 8x4 블록에 대한 QM이 생성된다. 선택된 QM은 도 8 및 도 9에 도시된 예에서와 여전히 동일하지만, 4:4:4 크로마 포맷은 4:2:0 크로마 포맷보다 2배 많은 행 및 열을 필요로 한다. 여기서, 열들은 반복되어야 하고, 따라서 x는 1만큼 우측 시프트되고, 그러나, (직사각형 형상으로 인해) 행들의 데시메이션은 스킵될 수 있으며, 따라서 y는 시프트되지 않는다. 특히, blkWidth는 8과 동일하고, blkHeight는 4와 동일하고, log2MatrixSize는 2와 동일하며, 따라서 수학식 8은 다음의 형태를 취한다:
m[ x ][ y ] = ScalingMatrix[ matrixId ][ i ][ j ] (8)
여기서 i = ( x << 2 ) >> 3, 및 j = ( y << 2 ) >> 2, 여기서 x = 0..7 및 y = 0..3.
크기-64에 대해 송신된 계수들의 수
일 실시예에서, 크기-64로부터의 더 작은 QM의 예측을 가능하게 하기 위해, 우하단 사분면이 VVC 변환 및 양자화 프로세스에 의해 결코 사용되지 않더라도, 크기-64에 대한 모든 계수가 스케일링 리스트 신택스에서 송신된다. 일반적으로, 가장 큰 QM의 모든 계수들을 송신할 수 있다.
그러나, 신택스 엘리먼트 scaling_list_delta_coef가 예측자로서 사용되지 않을 때 크기-64 QM의 우하단 사분면에 대해 제로로 설정될 수 있기 때문에, 이전 작업(JVET-N0847)에 비교하여 송신된 계수들의 이러한 증가된 수와 관련된 오버헤드는 최악의 경우에 2x16 비트로 제한될 수 있다는 점에 주목할 가치가 있다: 우하단 사분면에 대해, 각각이 제로로 강제되면(exp-Golomb로 코딩됨) 1 비트를 취하는 4x4= 16 델타 계수들이 시그널링되고, 2개의 크기-64 QM들(루마 인트라/인터)이 존재한다.
테스트들이 표 8에 설명되어 있고, 이 오버헤드는 예측 개선에 의해 가져오는 이득들과 비교하여 미미하다는 것을 보여준다.
다른 실시예에서, 크기-64 QM의 우하단 사분면에 대한 계수는 크기-64 QM 시그널링의 일부로서 송신되지 않지만, 더 작은 QM이 주어진 크기-64 QM으로부터 먼저 예측될 때 보충 파라미터로서 송신된다.
표 7은 JVET-N0847에 설명되는 방법과 제안된 방법의 일부 비교를 제공한다:
표 7
Figure pct00010
이하에서, 실시예에 따른 일부 신택스 및 시맨틱스가 설명된다.
PPS 신택스 및 시맨틱스(지엽적 적응)
Figure pct00011
1과 같은 pps_scaling_list_data_present_flag는 PPS를 참조하는 픽처들에 사용되는 스케일링 리스트 데이터가 활성 SPS에 의해 지정된 스케일링 리스트들 및 PPS에 의해 지정된 스케일링 리스트들에 기초하여 유도되는 것을 지정한다. 0과 같은 pps_scaling_list_data_present_flag는 PPS를 참조하는 픽처들에 사용되는 스케일링 리스트 데이터가 활성 SPS에 의해 지정된 것들과 동일한 것으로 추론되는 것을 지정한다. scaling_list_enabled_flag가 0과 같을 때, pps_scaling_list_data_present_flag의 값은 0과 같을 것이다. scaling_list_enabled_flag가 1과 같을 때, sps_scaling_list_data_present_flag는 0과 같고 pps_scaling_list_data_present_flag는 0과 같으며, 디폴트 스케일링 행렬들이 조항 7.4.5에 지정된 바와 같은 스케일링 리스트 데이터 시맨틱스에서 설명되는 바와 같은 어레이 ScalingMatrix를 유도하는 데 사용된다.
이 신택스/시맨틱스는 HEVC 표준 또는 VVC 초안에 가깝도록 의도된 예이고, 제한적이지 않다는 점에 유의한다. 예를 들어, scaling_list_data 캐리지는 SPS 또는 PPS로 제한되지 않고, 다른 수단에 의해 송신될 수 있다.
스케일링 리스트 데이터 신택스/시맨틱스(단순화됨)
Figure pct00012
0과 동일한 scaling_list_pred_mode_flag[ matrixId ]는 스케일링 행렬이 참조 스케일링 행렬의 값들로부터 유도된다는 것을 지정한다. 참조 스케일링 행렬은 scaling_list_pred_matrix_id_delta[ matrixId ]에 의해 지정된다. 1과 동일한 scaling_list_pred_mode_flag[ matrixId ]는 스케일링 리스트의 값들이 명시적으로 시그널링되는 것을 지정한다.
scaling_list_pred_matrix_id_delta[ matrixId ]는, 다음과 같이, 스케일링 행렬을 유도하는데 이용되는 참조 스케일링 행렬을 지정한다. scaling_list_pred_matrix_id_delta[ matrixId ]의 값은 0 내지 matrixId의 범위(경계값 포함)에 있을 것이다.
scaling_list_pred_mode_flag[ matrixId ]가 0과 동일할 때:
- 변수 refMatrixSize 및 어레이 refScalingMatrix는 먼저 다음과 같이 유도된다:
o scaling_list_pred_matrix_id_delta[ matrixId ]가 0과 동일하면, 디폴트 값들을 설정하기 위해 다음이 적용된다:
ㆍ refMatrixSize는 8과 같도록 설정되고,
ㆍ matrixId가 짝수이면,
refScalingMatrix = (9)
{
{ 16, 16, 16, 16, 16, 16, 16, 16 } // 인트라 디폴트 값들에 대한 플레이스홀더
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
},
ㆍ 그렇지 않으면
refScalingMatrix = (10)
{
{ 16, 16, 16, 16, 16, 16, 16, 16 } // 인터 디폴트 값들에 대한 플레이스홀더
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
},
o 그렇지 않으면(scaling_list_pred_matrix_id_delta[ matrixId ]가 0을 초과하면), 다음이 적용된다:
refMatrixId = matrixId - scaling_list_pred_matrix_id_delta[ matrixId ] (11)
refMatrixSize = (refMatrixId < 20) ? 8 : (refMatrixId < 26) ? 4 : 2 ) (12)
refScalingMatrix = ScalingMatrix[ refMatrixId ] (13)
- 그 다음, 어레이 ScalingMatrix[ matrixId ]는 다음과 같이 유도된다:
ScalingMatrix[ matrixId ][ x ][ y ] = refScalingMatrix[ i ][ j ] (14)
여기서, matrixSize = (matrixId < 20) ? 8 : (matrixId < 26) ? 4 : 2 )
x = 0 .. matrixSize - 1, y = 0 .. matrixSize - 1,
i = x << ( log2(refMatrixSize) - log2( matrixSize ) ), 및
j = y << ( log2(refMatrixSize) - log2( matrixSize ) )
scaling_list_dc_coef_minus8[ matrixId ] + 8은, 조항 xxx에서 설명된 바와 같이, 관련될 때 스케일링 행렬의 첫 번째 값을 지정한다. scaling_list_dc_coef_minus8[ matrixId ]의 값은 -7 내지 247의 범위(경계값 포함)에 있어야 한다.
scaling_list_pred_mode_flag[ matrixId ]가 0과 동일할 때, scaling_list_pred_matrix_id_delta[ matrixId ]가 0보다 크고, refMatrixId < 14이면, 다음이 적용된다:
- matrixId<14이면, scaling_list_dc_coef_minus8[ matrixId ]는 scaling_list_dc_coef_minus8[ refMatrixId ]와 동일한 것으로 추론되고,
- 그렇지 않으면, ScalingMatrix[ matrixId ][ 0 ][ 0 ]은 scaling_list_dc_coef_minus8[ refMatrixId ] + 8과 동일하게 설정된다
scaling_list_pred_mode_flag[ matrixId ]가 0과 동일할 때, scaling_list_pred_matrix_id_delta[ matrixId ]가 0과 동일하고(디폴트 값들을 표시함), matrixId<14이면, scaling_list_dc_coef_minus8[ matrixId ]는 8과 동일한 것으로 추론된다
scaling_list_delta_coef는, scaling_list_pred_mode_flag[ matrixId ]가 1과 동일할 때, 현재 행렬 계수 ScalingList[ matrixId ][ i ]와 이전 행렬 계수 ScalingList[ matrixId ][i-1] 사이의 차이를 지정한다. scaling_list_delta_coef의 값은 -128 내지 127의 범위(경계값 포함)에 있어야 한다. ScalingList[ matrixId ][ i ]의 값은 0보다 클 것이다.
존재할 때(즉, scaling_list_pred_mode_flag[ matrixId ]가 1과 동일할 때), 어레이 ScalingMatrix[ matrixId ]는 다음과 같이 유도된다:
ScalingMatrix[ matrixId ][ i ][ j ] = ScalingList[ matrixId ][ k ] (15)
여기서 k = 0 .. coefNum - 1,
i = diagScanOrder[ log2(coefNum)/2 ][ log2(coefNum)/2 ][ k ][ 0 ], 및
j = diagScanOrder[ log2(coefNum)/2 ][ log2(coefNum)/2 ][ k ][ 1 ]
JVET-N0847 신택스와 비교되는 주요 단순화들은 () 루프에 대한 것의 제거 및 [sizeId][matrixId]로부터 [matrixId]로의 인덱싱 단순화이다.
"조항 xxx"는 본 문서의 스케일링 행렬 유도 프로세스와 매칭되는, VVC 사양에 도입될 것으로 결정되지 않은 섹션 번호를 지칭한다.
이 신택스/시맨틱스는 HEVC 표준 또는 VVC 초안 5에 가깝도록 의도된 예이고, 제한적이지 않다는 점에 유의한다. 예를 들어, 계수 범위는 1...255로 제한되지 않고, 예를 들어, 1..127 (7 비트), 또는 -64..63일 수 있다. 또한, 이는 6개의 타입 x 5개의 크기로 조직된 30개의 QM으로 제한되지 않는다(8개의 타입, 및 더 적거나 더 많은 크기가 있을 수 있다. 적응될 수 있는 표 5를 참조한다. 그런 다음, DC 계수의 존재에 대한 조건 및 coefNum에 대한 간단한 적응들이 요구될 것이다.) QM 예측의 타입(여기서는 카피만)도 제한적이지 않다. 예를 들어, 스케일링 인자 또는 오프셋이 추가될 수 있고, 예측 위에 명시적 코딩이 잔차로서 추가될 수 있다. 이는 계수 송신(여기서 DPCM)에 사용되는 방법, DC 계수의 존재, 및 고정되는 계수들의 수(서브세트만이 송신될 수 있음)에 대해서도 동일하다.
디폴트 값들에 관하여, 이는 MODE_INTRA 및 MODE_INTER와 연관된 2개의 디폴트 QM에 제한되지 않고, 관련 디폴트 값들이 합의될 때까지(예를 들어, HEVC와 동일한 디폴트 QM들을 선택할 수 있을 때까지) 모든 16개의 값으로 여기서와 마찬가지로 채워진다.
또한, 시그널링될 계수들의 수 coefNum은 비교들의 시퀀스 대신에 수학적으로 표현될 수 있고, 동일한 결과를 갖는다: coefNum= Min(64, 4096 >> ( (matrixId + 4) / 6) * 2), 이는 HEVC 또는 현재의 VVC 초안 스타일에 더 가깝지만, 환영받지 못할 수 있는 나눗셈을 도입한다.
여기서, 더 큰 행렬들이 먼저 송신되고, 예측 참조(scaling_list_pred_matrix_id_delta에 의해 표시됨)가 (예를 들어, scaling_list_pred_matrix_id_delta가 0인 경우) 그것이 의도한 블록 크기 또는 타입, 또는 디폴트 값들에 관계없이 임의의 이전에 송신된 행렬일 수 있도록 단일 인덱스가 사용된다는 것에 유의하여야 한다.
도 11은, 일 실시예에 따른, 스케일링 리스트 데이터 신택스 구조를 파싱하기 위한 프로세스(1100)를 예시한다. 이 실시예에서, 입력은 코딩된 비트스트림이고, 출력은 ScalingMatrix의 어레이이다. DC 값에 관한 상세들은 명확성을 위해 생략된다. 특히, 단계 1110에서, QM 예측 모드는 비트스트림으로부터 디코딩된다. QM이 예측되면(1120), 디코더는 전술한 플래그에 따라 QM이 비트스트림에서 추론(예측) 또는 시그널링되는지를 더 결정한다. 단계 1130에서, 디코더는 비트스트림으로부터 QM 예측 데이터를 디코딩하는데, 이는 시그널링되지 않을 때 QM, 예를 들어, QM 인덱스 차이 scaling_list_pred_matrix_id_delta을 추론하는데 필요하다. 이어서, 디코더는 QM이 디폴트 값들로부터(예를 들어, scaling_list_pred_matrix_id_delta가 0인 경우에) 또는 이전에 디코딩된 QM으로부터 예측되는지를 결정한다(1140). 참조 QM이 디폴트 QM이면, 디코더는 참조 QM으로서 디폴트 QM을 선택한다(1150). 예를 들어, matrixId의 패리티에 따라, 선택할 여러 디폴트 QM들이 있을 수 있다. 그렇지 않으면, 디코더는 이전에 디코딩된 QM을 참조 QM으로서 선택한다(1155). 참조 QM의 인덱스는 matrixId 및 전술한 인덱스 차이로부터 유도된다. 단계 1160에서, 디코더는 참조 QM으로부터 QM을 예측한다. 예측은 참조 QM이 현재 QM과 동일한 크기인 경우 간단한 카피로 이루어지거나, 예상보다 큰 경우 데시메이션으로 이루어진다. 결과는 ScalingMatrix[matrixId]에 저장된다.
QM이 예측되지 않으면(1120), 디코더는 matrixId에 따라 비트스트림으로부터 디코딩될 QM 계수의 수를 결정한다(1170). 예를 들어: matrixId가 20보다 낮으면 64이고, matrixId가 20과 25 사이에 있으면 16, 그렇지 않으면 4이다. 단계 1175에서, 디코더는 비트스트림으로부터 관련 수의 QM 계수들을 디코딩한다. 단계 1180에서, 디코더는, 스캐닝 순서, 예를 들어, 대각 스캔에 따라 2D 행렬로 디코딩된 QM 계수들을 조직화한다. 결과는 ScalingMatrix[matrixId]에 저장된다. ScalingMatrix[matrixId]를 사용하여, 디코더는 QM 유도 프로세스를 사용하여, 비-정사각형 형상 및/또는 상이한 크로마 포맷일 수 있는 변환 블록을 역양자화하기 위한 양자화 행렬 m[][]을 획득할 수 있다.
단계 1190에서, 디코더는 현재 QM이 파싱될 마지막 QM인지를 검사한다. 마지막 것이 아니면, 제어는 단계 1110으로 복귀하고; 그렇지 않으면, QM 파싱 프로세스는 모든 QM들이 비트스트림으로부터 파싱될 때 중단된다.
도 12는 일 실시예에 따른, 인코더 측에서 스케일링 리스트 데이터 신택스 구조를 인코딩하는 프로세스(1200)를 예시한다. 인코더 측에서, QM들은 더 큰 블록 크기로부터 더 작은 블록 크기로(예를 들어, 0에서 30까지의 matrixId) 설명된 순서로 스캐닝된다. 단계 1210에서, 인코더는 예측 선호도를 검색하여 현재 QM이 이전에 코딩된 것의 카피(또는 데시메이션)인지를 결정한다. QM들은 QM 예측의 효율을 최적화하는 방식으로 설계될 수 있는데, 예를 들어, 일부 QM들이 초기에 충분히 가깝거나, 디폴트 QM들로부터 가깝다면, 이들은 동일하도록 강제될 수 있다(또는 크기들이 상이하다면 데시메이트될 수 있다). 또한, 크기-64 QM의 우하단 사분면 내의 계수들은 후속 QM의 더 나은 예측을 위해, 또는 예측을 위해 결코 재사용되지 않는다면 QM 비트 비용을 감소시키기 위해 최적화될 수 있다. 일단 결정되면, QM 예측 모드가 비트스트림에 인코딩된다.
특히, 인코더가 예측을 사용하기로 결정하면(1220), 단계 1230에서, 예측 모드가 인코딩된다(예를 들어, scaling_list_pred_mode_flag= 0). 단계 1240에서, 예측 파라미터들(예를 들어, QM 인덱스 차이 scaling_list_pred_matrix_id_delta)이 인코딩된다: 디폴트 QM 값들에 대한 제로 인덱스 차이, 또는 이전 QM이 예측 참조로서 선택되었다면 관련 인덱스 차이. 한편, 명시적 시그널링이 결정되었다면, 단계 1250에서, 예측 모드가 인코딩된다(예를 들어, scaling_list_pred_mode_flag= 0). 그 다음, 대각 스캔(1260)과 이어서 QM 계수 인코딩(1270)이 수행된다.
단계 1280에서, 인코더는 현재 QM이 인코딩될 마지막 QM인지를 검사한다. 마지막 것이 아니면, 제어는 단계 1210으로 복귀하고; 그렇지 않으면, QM 인코딩 프로세스는 모든 QM이 비트스트림으로 인코딩될 때 중단된다.
도 13은 일 실시예에 따른, QM 유도를 위한 프로세스(1300)를 예시한다. 입력은 ScalingMatrix 어레이, 및 크기(폭/높이), 예측 모드(인트라/인터/IBC,...), 및 컬러 성분(Y/U/V)과 같은 변환 블록 파라미터들을 포함할 수 있다. 출력은 변환 블록과 동일한 크기를 갖는 QM이다. DC 값에 관한 상세들은 명확성을 위해 생략된다. 특히, 단계 1310에서, 디코더는 현재 변환 블록 크기(폭/높이), 예측 모드(인트라/인터/IBC,...), 전술된 바와 같은 컬러 성분(Y/U/V)(통합된 QM 인덱스)에 따라 QM 인덱스 matrixId를 결정한다. 단계 1320에서, 디코더는 전술된 바와 같이, 변환 블록 크기에 매칭하도록 선택된 QM(ScalingMatrix[matrixId])을 리사이징한다. 변형에서, 단계 1320은 예측에 필요한 데시메이션을 포함할 수 있다.
QM 유도 프로세스는 인코더 측에서 유사하다. 양자화는 변환 계수들을 QM 값들로 나누는 반면, 역양자화는 승산한다. 그러나, QM은 동일하다. 특히, 인코더에서 재구성을 위해 사용되는 QM들은 비트스트림에서 시그널링된 것들과 매칭할 것이다.
개념적으로, 변환 계수들 d[ x ][ y ]는 다음과 같이 양자화될 수 있고, 여기서 qStep는 양자화 스텝 크기이고 m[][]는 양자화 행렬이다:
TransCoeffLevel[xTbY][yTbY][cIdx][x][y] = d[x][y] / qStep / m[x][y]
그러나, 정수 계산을 위해 그리고 나눗셈을 피하기 위해, 이는 통상적으로 다음과 같다:
TransCoeffLevel[xTbY][yTbY][cIdx][x][y] = ( ( d[x][y] * im[x][y] * ilevelScale[ qP%6 ] >> (qP / 6 ) ) + ( 1 << ( bdShift - 1 ) ) ) >> bdShift )
여기서, 예를 들어, im[x][y]~= 65536/ m[x][y]이고, ilevelScale[0..5]= 65536/ levelScale[0..5]이며, bdShift는 적절한 값이다. 실제로, 소프트웨어 코더 im*ilevelScale의 경우, 통상적으로 미리 계산되어 표들에 저장된다.
상기에서, QM 예측 프로세스와 QM 유도 프로세스는 별개로 수행된다. 다른 실시예에서, QM 예측은 QM 유도 프로세스로 연기될 수 있다. 이 실시예는 QM 시그널링 신택스를 변경하지 않는다. 연속적인 리사이즈들로 인해 기능적으로 상이할 수 있는 이 실시예는 예측 부분(참조 QM 획득 + 카피/다운스케일) 및 대각 스캔을 후술하는 "QM 유도 프로세스"로 연기시킨다.
일 실시예에서, 이때, 스케일링 리스트 데이터 파싱 프로세스(1100)의 출력은 예측 플래그들 및 유효한 예측 파라미터들과 함께, ScalingMatrix 대신에 ScalingList ()의 어레이이다: 정의된 ScalingList(디폴트 또는 시그널링됨)의 인덱스를 항상 포함하는 ScalingMatrixPredId 어레이. 이 어레이는 scaling_list_pred_matrix_id_delta를 해석함으로써 QM 디코딩 동안 재귀적으로 구축되며, 따라서, QM 유도 프로세스는 이 인덱스를 직접 사용하여 현재 변환 블록을 역양자화하는데 사용되는 QM을 구축하기 위한 실제 값들을 얻을 수 있다.
이하에서, 일 실시예에 따른, 스케일링 리스트 시맨틱스를 예시하기 위한 예가 제공된다.
스케일링 행렬 유도 프로세스(새로운 사항: 스케일링 리스트 시맨틱스에서 설명을 부분적으로 대체하고; 이는 섹션 xxx이다)
이 프로세스에 대한 입력은 예측 모드 predMode, 컬러 성분 변수 cIdx, 블록 폭 blkWidth 및 블록 높이 blkHeight이다.
이 프로세스의 출력은 (blkWidth)x(blkHeight) 어레이 m[ x ][ y ] (스케일링 행렬)이고, x와 y는 수평 및 수직 계수 위치이다. SubWidthC 및 SubHeightC는 크로마 포맷에 의존하며, 루마 성분 및 크로마 성분 내의 샘플들의 수의 비율을 표시한다는 점에 유의한다.
변수 matrixId는 다음과 같이 유도된다:
matrixId = 6 * sizeId + matrixTypeId (xxx-1)
여기서 subWidth = (cIdx > 0) ? SubWidthC : 1,
subHeight = (cIdx > 0) ? SubHeightC : 1,
sizeId = 6 - max( log2( blkWidth * subWidth ), log2( blkHeight * subHeight ) ), 및
matrixTypeId = ( 2 * cIdx + ( predMode = = MODE_INTER ? 1 : 0 ) )
변수 log2MatrixSize는 다음과 같이 유도된다:
log2MatrixSize = (matrixId < 20) ? 3 : (matrixId < 26) ? 2 : 1 (xxx-2)
출력 어레이 m[ x ][ y ]는 0 내지 blkWidth-1 범위(경계값 포함)의 x 및 0 내지 blkHeight-1 범위(경계값 포함)의 y에 대해 다음을 적용함으로써 유도된다:
m[ x ][ y ] = ScalingMatrix[ matrixId ][ i ][ j ] (xxx-3)
여기서 i = ( x << log2MatrixSize ) >> log2( blkWidth ), 및
j = ( y << log2MatrixSize ) >> log2( blkHeight )
matrixId가 14보다 낮은 경우, m[ 0 ][ 0 ]은 다음과 같이 추가로 수정된다:
m[ 0 ][ 0 ] = scaling_list_dc_coef_minus8[ matrixId ] + 8 (xxx-4)
이것이 일 예이고, scaling_list_data 신택스 및 시맨틱스에 대해서와 같이, 제한적이지 않다는 점에 유의한다. 예를 들어, 이는 MODE_INTRA 및 MODE_INTER와 연관되는 2개의 디폴트 QM에 제한되지 않고, 관련 디폴트 값들이 합의될 때까지(예를 들어 HEVC와 동일한 디폴트 QM들을 선택할 수 있을 때까지) 모든 16개의 값으로 여기서와 마찬가지로 채워진다. 단일 디폴트 QM, 또는 2 초과가 있을 수 있다. 예를 들어, 블록 크기당 6개보다 많거나 적은 타입의 행렬이 있다면, MatrixId 계산은 상이할 수 있다. 중요한 것은, 선택된 QM과 상이한 블록 크기들에 적응하기 위한 수평 및 수직 다운스케일 및 업스케일이 단일 프로세스에서, 바람직하게는 간단하게(여기서는 우측 시프트가 뒤따르는 좌측 시프트) 행해진다는 것이다.
직사각형 블록들의 경우, 정사각형을 둘러싸는 현재 블록에 대한 QM 식별자를 선택하는 것으로 제한되지 않는다: 수학식 xxx-1에서의 sizeId의 유도는 상이한 규칙을 따를 수 있다.
또한, 선택된 QM 크기 log2MatrixSize는 비교들의 시퀀스 대신에 수학적으로 표현될 수 있고, 동일한 결과를 갖는다: log2MatrixSize = min(3, 6-(matrixId+ 4) / 6), 그러나 이는 환영받지 못할 수 있는 나눗셈을 도입한다.
이하에서, 실시예에 따라, 스케일링 프로세스에 대한 시맨틱스를 설명하기 위한 예가 제공된다.
변환 계수들에 대한 스케일링 프로세스(적응됨)
[...]
x = 0..nTbW-1, y= 0..nTbH-1인 스케일링된 변환 계수들 d[ x ][ y ] 의 유도를 위해, 다음이 적용된다:
(nTbW)x(nTbH) 중간 스케일링 인자 어레이 m은 다음과 같이 유도된다:
다음 조건들 중 하나 이상이 참이면, m[ x ][ y ]는 16과 같게 설정된다:
scaling_list_enabled_flag는 0과 같다.
transform_skip_flag[ xTbY ][ yTbY ]는 1과 같다.
그렇지 않으면, m은 예측 모드 CuPredMode[ xTbY ][ yTbY ], 컬러 성분 변수 cIdx, 블록 폭 nTbW 및 블록 높이 nTbH로 입력들로서 호출되는, 조항 xxx에 지정된 바와 같은 스케일링 행렬 유도 프로세스의 출력이다.
스케일링 인자 ls[ x ][ y ]는 다음과 같이 유도된다:
[...]
VVC 초안 5와 비교되는 주요 변경은 scaling_list_data 시맨틱스에 설명된 어레이의 일부를 카피하는 대신에 조항 xxx의 호출이다.
상기와 같이 유의할 점은, 이는 현재의 VVC 초안에 대한 변경들을 최소화하도록 의도된 예이고, 제한적이지 않다는 점이다. 예를 들어, 스케일링 행렬 유도 프로세스에 대한 컬러 성분 입력은 cIdx와 상이할 수 있다. 또한, QM은 스케일링 인자로서 사용되는 것으로 제한되지 않고, 예를 들어, QP-오프셋으로서 사용될 수 있다.
QM 코딩 성능은 HEVC 표준화 동안 사용된 것과 동일한 테스트 세트를 사용하여 테스트되었고, 공통 표준들(JPEG, MPEG2, AVC, HEVC)의 추천된 또는 디폴트 QM들 및 실제 방송에서 발견된 QM들로부터 유도된 QM 세트들로 보강되었다. 모든 테스트들에서, 일부 QM들은 하나의 타입에서 다른 타입으로(예를 들어, 루마에서 크로마로, 또는 인트라에서 인터로), 및/또는 하나의 크기에서 다른 크기로 카피된다.
아래의 표는 3개의 상이한 방법을 이용하여 scaling_list_data를 인코딩하는 데 필요한 비트들의 수를 보고한다: HEVC, JVET-N0847 및 제안됨. 특히, HEVC는 HEVC 테스트 세트(테스트당 24 QM들)를 이용하고, 2개의 다른 것은 유도된 테스트 세트를 이용한다(테스트당 30 QM들, 다음과 같은 추가적인 크기들을 가짐: 크로마에 대한 크기-2 및 루마에 대한 크기-64; 크기-2 QM들은 크기-4로부터 다운샘플링되고, 크기-64는 크기-32로부터 카피되고, 크기-32는 크기-16으로부터 카피되고, 크기 16, 8, 4는 그대로 유지된다).
표 8
Figure pct00013
이 테스트를 위해, 제안된 기법은 심지어 HEVC에 비교하여서도 상당한 양의 비트들을 절약하는 반면, 제안된 방법은 더 많은 QM들을 인코딩한다는 것을 알 수 있다.
JCTVC-E073에서의 접근법을 다시 참조하면, JCTVC-E073에서의 참조 인덱싱(트리플릿: QMPS, 크기, 타입)은 이전 QMPS 인덱싱이 이전 QMPS의 저장을 요구하기 때문에 여기서 제안된 것보다 더 복잡하다. 선형 보간은 복잡성을 도입한다. 다운샘플링은 여기서 제안된 것과 유사하다.
JCTVC-H0314에서의 접근법을 다시 참조하면, 더 큰 것으로부터 더 작은 것으로의 송신은 여기서 제안된 것에 가깝지만, 그러나 JCTVC-H0314에서의 고정 예측 트리는 여기서 제안된 통합 인덱싱 및 명시적 참조보다 덜 유연하다.
인트라 블록 카피 모드에 대한 QM
상기에서, 2개의 블록 예측 모드, 즉 인트라 및 인터에 대해 상이한 QM들이 지정된다. 그러나, 인트라 및 인터에 더하여 VVC에서 새로운 예측 모드가 있다: IBC(Intra Block Copy), 여기서 블록은 적절한 변위 벡터로, 동일한 픽처의 재구성된 샘플들로부터 예측될 수 있다. IBC 예측 모드에서의 QM 선택을 위해, JVET-N0847 및 상기 실시예들 양자 모두는 인트라 모드와 동일한 QM들을 사용한다.
IBC 모드가 인트라보다 인터에 더 가깝기 때문에, 일 실시예에서, (인트라 대신에) 인터 모드를 위해 시그널링된 QM들을 재사용하는 것이 제안된다. 그러나, IBC는, 인터 예측에 가까운 반면, 상이하다: 변위 벡터는 객체 또는 카메라 모션과 매칭되지 않고, 텍스처 카피를 위해 사용된다. 이는 특정 아티팩트들을 초래할 수 있으며, 특정 QM들은 상이한 실시예에서 IBC 블록들의 코딩을 최적화하는 것을 도울 수 있다. 이하에서, IBC 예측 모드에 대한 QM 선택을 변경하는 것을 제안한다:
· 바람직한 실시예는 (인트라 대신에) 인터 모드와 동일한 QM을 선택하는 것인데, 그 이유는 IBC가 인트라 예측보다 인터 예측에 더 가깝기 때문이다.
· 다른 옵션은 IBC 모드에 대한 특정 QM들을 갖는 것이다.
o 이들은 신택스에서 명시적으로 시그널링되거나 추론될 수 있다(예를 들어, 인트라 및 인터 QM들의 평균).
바람직한 실시예에서, 특정 변환 블록에 대한 QM 선택 또는 유도 프로세스는 블록이 IBC 예측 모드를 갖는 경우 인터 QM들을 선택한다. 도 12를 다시 참조하면, QM 유도 프로세스의 단계 1210은 후술하는 바와 같이 조정될 필요가 있다.
위에서 제안된 초안 텍스트에서, QM 선택은 수학식(xxx-1)에서 설명되며, 이는 다음과 같이 변경될 수 있다.
Figure pct00014
블록은 인트라 모드(MODE_INTRA), 인터 모드(MODE_inter) 또는 인트라 블록 카피 모드(MODE_IBC)에서 인코딩될 수 있다는 점에 유의한다. matrixTypeId가 표 6에서와 같이 또는 (matrixTypeId= (2* cIdx+ (predMode== MODE_INTER? 1: 0) ) )로서 설정될 때, MODE_IBC 블록은 그것이 MODE_INTRA 블록인 것처럼 matrixTypeId를 선택한다. (xxx-1)에서의 변경으로: matrixTypeId = ( 2 * cIdx + ( predMode = = MODE_INTRA ? 0 : 1 ) )인 경우, MODE_IBC 블록은 그것이 MODE_INTER 블록인 것처럼 matrixTypeId를 선택한다.
JVET-N0847에 의해 제안된 초안 텍스트에서, QM 선택은 표 7 - 14에 설명되고, 이는 다음과 같이 변경될 수 있다. 특히, MODE_IBC에 대한 matrixId는, JVET-N0847에서와 동일한 MODE_INTRA가 아니라, MODE_INTER과 동일한 방식으로 배정된다.
표 9: sizeId, 예측 모드 및 컬러 성분에 따른 matrixId의 JVET-N0847 사양에 대한 변경들
Figure pct00015
변형 1: IBC에 대한 QM들의 명시적 시그널링
이 변형에서, (인트라 및 인터 QM들과 상이한) IBC 블록들에 대해 특정 QM들이 사용되고, 이들 QM들은 비트스트림에서 명시적으로 시그널링된다. 이는 더 많은 QM들을 만들고, 이는 scaling_list_data 신택스 및 matrixId 맵핑의 적응을 요구하고, 비트 비용 영향을 갖는다. 이 변형에 따르면, 수학식 (xxx-1)에 설명된 QM 선택은 다음과 같이 변경될 수 있다.
Figure pct00016
JVET-N0847에서, QM 선택 표는 다음과 같이 변경될 수 있다:
표 10: IBC에 대해 더 많은 QM들을 추가하는 JVET-N0847에 대한 변경들
Figure pct00017
변형 2: IBC 모드에 대한 추론된 QM들
이러한 변형에서, (인트라 및 인터 QM들과 상이한) IBC 블록들에 대해 특정 QM들이 사용된다. 그러나, 이러한 QM들은 비트스트림에서 시그널링되지 않고, 추론된다: 예를 들어, 인트라 및 인터 QM들의 평균, 또는 특정 디폴트 값들, 또는 스케일링 및 오프셋과 같은 인터 QM에 대한 특정 변경으로서.
변형 3: 루마만에 대한 명시적 IBC QM들
이 변형에서, IBC에 대한 추가적인 QM들은 루마만으로 제한되고; IBC에 대한 크로마 QM들은 변형 1에서와 같이 인터 QM들을 재사용하거나 변형 2에서와 같이 새로운 것들을 추론할 수 있다.
다양한 방법들이 본 명세서에 설명되고, 방법들 각각은 설명된 방법을 달성하기 위한 하나 이상의 단계 또는 액션을 포함한다. 방법의 적절한 동작을 위해 단계들 또는 액션들의 특정 순서가 요구되지 않는 한, 특정 단계들 및/또는 액션들의 순서 및/또는 사용은 수정되거나 조합될 수 있다. 또한, "제1", "제2" 등과 같은 용어들은 다양한 실시예들에서 엘리먼트, 컴포넌트, 단계, 동작 등을 변경하기 위해 사용될 수 있으며, 예를 들어, "제1 디코딩" 및 "제2 디코딩"이다. 이러한 용어들의 사용은 구체적으로 요구되지 않는 한 수정된 동작들에 대한 순서를 암시하지 않는다. 따라서, 이 예에서, 제1 디코딩은 제2 디코딩 전에 수행될 필요가 없으며, 예를 들어, 제2 디코딩과의 중첩 기간 전에, 동안에 또는 내에 발생할 수 있다.
본 출원에서 설명되는 다양한 방법들 및 다른 양태들은 도 2 및 도 3에 도시된 바와 같은 비디오 인코더(200) 및 디코더(300)의 모듈들, 예를 들어, 양자화 및 역양자화 모듈들(230, 240, 340)을 변경하는 데 사용될 수 있다. 또한, 본 양태들은 VVC 또는 HEVC로 제한되지 않으며, 예를 들어, 다른 표준들 및 권고들, 그리고 임의의 이러한 표준들 및 권고들의 확장들에 적용될 수 있다. 달리 표시되거나 기술적으로 배제되지 않는 한, 본 출원에서 설명된 양태들은 개별적으로 또는 조합하여 사용될 수 있다.
다양한 수치 값들이 본 출원에서 사용된다. 특정 값들은 예시의 목적을 위한 것이고 설명된 양태들은 이러한 특정 값들로 제한되지 않는다.
다양한 구현들은 디코딩을 수반한다. "디코딩"은, 본 출원에서 사용되는 바와 같이, 디스플레이에 적합한 최종 출력을 생성하기 위해, 예를 들어, 수신된 인코딩된 시퀀스에 대해 수행되는 프로세스들의 전부 또는 일부를 포함할 수 있다. 다양한 실시예들에서, 이러한 프로세스들은 디코더에 의해 통상적으로 수행되는 프로세스들, 예를 들어, 엔트로피 디코딩, 역양자화, 역변환 및 차분 디코딩 중 하나 이상을 포함한다. "디코딩 프로세스"라는 문구가 구체적으로 동작들의 서브세트를 지칭하도록 의도되는지 또는 일반적으로 더 넓은 디코딩 프로세스를 지칭하도록 의도되는지는 특정 설명들의 맥락에 기초하여 명백할 것이며, 본 기술 분야의 통상의 기술자에 의해 잘 이해될 것으로 여겨진다.
다양한 구현들은 인코딩을 수반한다. "디코딩"에 관한 상기 논의와 유사한 방식으로, 본 출원에서 사용되는 "인코딩"은 인코딩된 비트스트림을 생성하기 위해, 예를 들어, 입력 비디오 시퀀스에 대해 수행되는 프로세스들의 전부 또는 일부를 포함할 수 있다.
본 명세서에서 사용되는 신택스 엘리먼트들은 설명적 용어들이라는 점에 유의한다. 이와 같이, 이들은 다른 신택스 엘리먼트 명칭들의 사용을 배제하지 않는다. 상기에서, PPS 및 스케일링 리스트에 대한 신택스 엘리먼트들은 주로 다양한 실시예를 예시하는데 이용된다. 이들 신택스 엘리먼트들은 다른 신택스 구조들에 배치될 수 있다는 점에 유의해야 한다.
본 명세서에서 설명되는 구현들 및 양태들은, 예를 들어, 방법 또는 프로세스, 장치, 소프트웨어 프로그램, 데이터 스트림 또는 신호로 구현될 수 있다. 단일 형태의 구현의 맥락에서만 논의되더라도(예를 들어, 방법으로서만 논의됨), 논의되는 특징들의 구현은 다른 형태들(예를 들어, 장치 또는 프로그램)로 또한 구현될 수 있다. 장치는, 예를 들어, 적절한 하드웨어, 소프트웨어, 및 펌웨어로 구현될 수 있다. 방법들은, 예를 들어, 컴퓨터, 마이크로프로세서, 집적 회로, 또는 프로그램가능 로직 디바이스를 포함하는, 일반적으로 처리 디바이스들을 지칭하는, 예를 들어, 장치, 예를 들어, 프로세서에서 구현될 수 있다. 프로세서들은 또한 통신 디바이스들, 예를 들어, 컴퓨터들, 셀 폰들, 휴대용/개인 휴대 정보 단말기들("PDA들"), 및 최종 사용자들 사이의 정보의 통신을 용이하게 하는 다른 디바이스들을 포함한다.
"일 실시예" 또는 "실시예" 또는 "일 구현" 또는 "구현"은 물론, 이들의 다른 변형들에 대한 언급은 실시예와 관련하여 설명되는 특정 특징, 구조, 특성 등이 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 본 출원 전체에 걸쳐 다양한 곳들에서 나타나는 문구 "일 실시예에서" 또는 "실시예에서" 또는 "일 구현에서" 또는 "구현에서"뿐만 아니라 임의의 다른 변형들의 출현들은 반드시 모두가 동일한 실시예를 지칭하는 것은 아니다.
또한, 본 출원은 다양한 정보를 "결정하는 것"을 언급할 수 있다. 정보를 결정하는 것은, 예를 들어, 정보를 추정하는 것, 정보를 계산하는 것, 정보를 예측하는 것, 또는 메모리로부터 정보를 검색하는 것 중 하나 이상을 포함할 수 있다.
또한, 본 출원은 다양한 정보에 "액세스하는 것"을 언급할 수 있다. 정보에 액세스하는 것은, 예를 들어, 정보를 수신하는 것, (예를 들어, 메모리로부터) 정보를 검색하는 것, 정보를 저장하는 것, 정보를 이동시키는 것, 정보를 카피하는 것, 정보를 계산하는 것, 정보를 결정하는 것, 정보를 예측하는 것, 또는 정보를 추정하는 것 중 하나 이상을 포함할 수 있다.
또한, 본 출원은 다양한 정보를 "수신하는 것"을 언급할 수 있다. 수신하는 것은, "액세스하는 것"에서와 같이, 광의의 용어인 것으로 의도된다. 정보를 수신하는 것은, 예를 들어, 정보에 액세스하는 것, 또는 (예를 들어, 메모리로부터) 정보를 검색하는 것 중 하나 이상을 포함할 수 있다. 또한, "수신하는 것"은 통상적으로, 하나의 방식 또는 다른 방식으로, 동작들 동안, 예를 들어, 정보를 저장하는 것, 정보를 처리하는 것, 정보를 송신하는 것, 정보를 이동시키는 것, 정보를 카피하는 것, 정보를 소거하는 것, 정보를 계산하는 것, 정보를 결정하는 것, 정보를 예측하는 것, 또는 정보를 추정하는 것 동안 수반된다.
예를 들어, "A/B", "A 및/또는 B" 및 "A 및 B 중 적어도 하나"의 경우들에서, 다음의 "/", "및/또는", 및 "~ 중 적어도 하나" 중 임의의 것의 사용은, 첫 번째 열거된 옵션(A)만의 선택, 또는 두 번째 열거된 옵션(B)만의 선택, 또는 양자 모두의 옵션들(A 및 B)의 선택을 포함하도록 의도된다는 점이 이해되어야 한다. 추가 예로서, "A, B, 및/또는 C" 및 "A, B, 및 C 중 적어도 하나"의 경우들에서, 이러한 문구는 첫 번째 열거된 옵션(A)만의 선택, 또는 두 번째 열거된 옵션(B)만의 선택, 또는 세 번째 열거된 옵션(C)만의 선택, 또는 첫 번째 및 두 번째 열거된 옵션들(A 및 B)만의 선택, 또는 첫 번째 및 세 번째 열거된 옵션들(A 및 C)만의 선택, 또는 두 번째 및 세 번째 열거된 옵션들(B 및 C)만의 선택, 또는 모든 3개의 옵션들(A 및 B 및 C)의 선택을 포함하는 것으로 의도된다. 이는, 본 기술 분야 및 관련 기술 분야의 통상의 기술자에게 명백한 바와 같이, 열거되는 많은 항목들에 대해 확장될 수 있다.
또한, 본 명세서에서 사용될 때, "시그널링"라는 단어는 특히 대응하는 디코더에 무언가를 표시하는 것을 지칭한다. 예를 들어, 특정 실시예들에서, 인코더는 역양자화를 위한 양자화 행렬을 시그널링한다. 이러한 방식으로, 일 실시예에서, 인코더 측 및 디코더 측 양자 모두에서 동일한 파라미터가 사용된다. 따라서, 예를 들어, 인코더는 디코더가 동일한 특정 파라미터를 사용할 수 있도록 특정 파라미터를 디코더에 송신(명시적 시그널링)할 수 있다. 역으로, 디코더가 이미 특정 파라미터 뿐만 아니라 다른 것들도 갖고 있다면, 이때, 단순히 디코더가 특정 파라미터를 알고 선택하는 것을 허용하기 위해 송신(암시적 시그널링)없이 시그널링이 이용될 수 있다. 임의의 실제 기능들의 송신을 회피함으로써, 비트 절감들이 다양한 실시예들에서 실현된다. 시그널링이 다양한 방식들로 달성될 수 있다는 것을 이해할 것이다. 예를 들어, 하나 이상의 신택스 엘리먼트, 플래그 등은 다양한 실시예들에서 대응하는 디코더에 정보를 시그널링하기 위해 사용된다. 전술한 것은 단어 "signal(시그널링)"의 동사 형태와 관련되지만, 단어 "signal(신호)"은 본 명세서에서 명사로서도 사용될 수 있다.
본 기술 분야의 통상의 기술자에게 명백할 바와 같이, 구현들은, 예를 들어, 저장되거나 송신될 수 있는 정보를 운반하도록 포맷팅된 다양한 신호들을 생성할 수 있다. 정보는, 예를 들어, 방법을 수행하기 위한 명령어들, 또는 설명된 구현들 중 하나에 의해 생성된 데이터를 포함할 수 있다. 예를 들어, 신호는 설명된 실시예의 비트스트림을 운반하도록 포맷팅될 수 있다. 이러한 신호는, 예를 들어, (예를 들어, 스펙트럼의 라디오 주파수 부분을 사용하는) 전자기파로서 또는 기저대역 신호로서 포맷팅될 수 있다. 포맷팅은, 예를 들어, 데이터 스트림을 인코딩하는 것 및 인코딩된 데이터 스트림으로 캐리어를 변조하는 것을 포함할 수 있다. 신호가 운반하는 정보는, 예를 들어, 아날로그 또는 디지털 정보일 수 있다. 신호는 공지된 바와 같이 다양한 상이한 유선 또는 무선 링크들을 통해 송신될 수 있다. 신호는 프로세서 판독가능 매체 상에 저장될 수 있다.

Claims (29)

  1. 방법으로서,
    픽처 내의 디코딩될 블록의 블록 크기, 컬러 성분 및 예측 모드에 기초하여 양자화 행렬에 대한 단일 식별자를 획득하는 단계;
    참조 양자화 행렬을 표시하는 신택스 엘리먼트를 디코딩하는 단계- 상기 신택스 엘리먼트는 상기 참조 양자화 행렬의 식별자와 상기 양자화 행렬에 대한 상기 획득된 식별자 사이의 차이를 지정함 -;
    상기 참조 양자화 행렬에 기초하여 상기 양자화 행렬을 획득하는 단계;
    상기 양자화 행렬에 응답하여 상기 블록에 대한 변환 계수들을 역양자화하는 단계; 및
    상기 역양자화된 변환 계수들에 응답하여 상기 블록을 디코딩하는 단계를 포함하는, 방법.
  2. 하나 이상의 프로세서를 포함하는 장치로서,
    상기 하나 이상의 프로세서는,
    픽처 내의 디코딩될 블록의 블록 크기, 컬러 성분 및 예측 모드에 기초하여 양자화 행렬에 대한 단일 식별자를 획득하고;
    참조 양자화 행렬을 표시하는 신택스 엘리먼트를 디코딩하고- 상기 신택스 엘리먼트는 상기 참조 양자화 행렬의 식별자와 상기 양자화 행렬에 대한 상기 획득된 식별자 사이의 차이를 지정함 -;
    상기 참조 양자화 행렬에 기초하여 상기 양자화 행렬을 획득하고;
    상기 양자화 행렬에 응답하여 상기 블록에 대한 변환 계수들을 역양자화하고; 그리고
    상기 역양자화된 변환 계수들에 응답하여 상기 블록을 디코딩하도록 구성되는, 장치.
  3. 제1항의 방법 또는 제2항의 장치에 있어서,
    상기 블록의 크기는 상기 참조 양자화 행렬이 역양자화를 위해 적용되는 블록의 크기와 상이한, 방법 또는 장치.
  4. 제1항 또는 제3항의 방법 또는 제2항 또는 제3항의 장치에 있어서,
    상기 양자화 행렬의 엘리먼트들은 상기 블록의 각각의 변환 계수들을 역양자화할 때 스케일링 인자들로서 사용되는, 방법 또는 장치.
  5. 제1항 및 제2항 내지 제4항 중 어느 한 항의 방법 또는 제2항 내지 제4항 중 어느 한 항의 장치에 있어서,
    상기 양자화 행렬의 엘리먼트들은 상기 블록의 각각의 변환 계수들을 역양자화할 때 오프셋들로서 사용되는, 방법 또는 장치.
  6. 방법으로서,
    픽처 내의 인코딩될 블록에 액세스하는 단계;
    상기 블록에 대한 양자화 행렬에 액세스하는 단계;
    상기 블록의 블록 크기, 컬러 성분 및 예측 모드에 기초하여 상기 양자화 행렬에 대한 단일 식별자를 획득하는 단계;
    참조 양자화 행렬을 표시하는 신택스 엘리먼트를 인코딩하는 단계- 상기 신택스 엘리먼트는 상기 참조 양자화 행렬의 식별자와 상기 양자화 행렬에 대한 상기 획득된 식별자 사이의 차이를 지정함 -;
    상기 양자화 행렬에 응답하여 상기 블록에 대한 변환 계수들을 양자화하는 단계; 및
    상기 양자화된 변환 계수들을 엔트로피 인코딩하는 단계를 포함하는, 방법.
  7. 하나 이상의 프로세서를 포함하는 장치로서,
    상기 하나 이상의 프로세서는,
    픽처 내의 인코딩될 블록에 액세스하고;
    상기 블록에 대한 양자화 행렬에 액세스하고;
    상기 블록의 블록 크기, 컬러 성분 및 예측 모드에 기초하여 상기 양자화 행렬에 대한 단일 식별자를 획득하고;
    참조 양자화 행렬을 표시하는 신택스 엘리먼트를 인코딩하고- 상기 신택스 엘리먼트는 상기 참조 양자화 행렬의 식별자와 상기 양자화 행렬에 대한 상기 획득된 식별자 사이의 차이를 지정함 -;
    상기 양자화 행렬에 응답하여 상기 블록에 대한 변환 계수들을 양자화하고; 그리고
    상기 양자화된 변환 계수들을 엔트로피 인코딩하도록 구성되는, 장치.
  8. 제6항의 방법 또는 제7항의 장치에 있어서,
    상기 블록의 크기는 상기 참조 양자화 행렬이 양자화를 위해 적용될 블록의 크기와 상이한, 방법 또는 장치.
  9. 제6항 또는 제8항의 방법 또는 제7항 또는 제8항의 장치에 있어서,
    상기 양자화 행렬의 엘리먼트들은 상기 블록의 각각의 변환 계수들을 양자화할 때 스케일링 인자들로서 사용되는, 방법 또는 장치.
  10. 제6항 또는 제8항의 방법 또는 제7항 또는 제8항의 장치에 있어서,
    상기 양자화 행렬의 엘리먼트들은 상기 블록의 각각의 변환 계수들을 양자화할 때 오프셋들로서 사용되는, 방법 또는 장치.
  11. 제1항, 제3항 내지 제6항, 및 제8항 내지 제10항 중 어느 한 항의 방법 또는 제2항 내지 제5항 및 제7항 내지 제10항 중 어느 한 항의 장치에 있어서,
    상기 참조 양자화 행렬은 이전에 시그널링되는, 방법 또는 장치.
  12. 제1항, 제3항 내지 제6항, 및 제8항 내지 제11항 중 어느 한 항의 방법 또는 제2항 내지 제5항 및 제7항 내지 제11항 중 어느 한 항의 장치에 있어서,
    상기 양자화 행렬은 카피 또는 데시메이션을 통해 상기 참조 양자화 행렬로부터 획득되는, 방법 또는 장치.
  13. 제12항의 방법 또는 제12항의 장치에 있어서,
    상기 양자화 행렬은 상기 양자화 행렬이 상기 참조 양자화 행렬과 동일한 크기를 갖는 것에 응답하여, 카피를 통해 상기 참조 양자화 행렬로부터 획득되는, 방법 또는 장치.
  14. 제12항의 방법 또는 제12항의 장치에 있어서,
    상기 양자화 행렬은 상기 양자화 행렬이 상기 참조 양자화 행렬과 상이한 크기를 갖는 것에 응답하여, 대응하는 비율만큼의 데시메이션을 통해 상기 참조 양자화 행렬로부터 획득되는, 방법 또는 장치.
  15. 제1항, 제3항 내지 제6항, 및 제8항 내지 제14항 중 어느 한 항의 방법 또는 제2항 내지 제5항 및 제7항 내지 제14항 중 어느 한 항의 장치에 있어서,
    상기 블록 크기는 MxN이고, 및 M은 폭이고 N은 높이이고, 상기 블록에 대한 상기 식별자는 max(M,N)의 크기에 기초하고, max(M,N)는 M과 N 중 더 큰 것으로서 정의되는, 방법 또는 장치.
  16. 제1항, 제3항 내지 제6항, 및 제8항 내지 제15항 중 어느 한 항의 방법 또는 제2항 내지 제5항 및 제7항 내지 제15항 중 어느 한 항의 장치에 있어서,
    양자화 행렬들의 세트는 증가하는 식별자의 순서로 시그널링되고, 가장 큰 블록 크기의 양자화 행렬이 먼저 시그널링되는, 방법 또는 장치.
  17. 제16항의 방법 또는 제16항의 장치에 있어서,
    루마 컬러 성분에 대한 양자화 행렬들은 상기 양자화 행렬들의 세트를 시그널링할 때 크로마 컬러 성분에 대한 양자화 행렬들 전에 시그널링되는, 방법 또는 장치.
  18. 제1항, 제3항 내지 제6항, 및 제8항 내지 제17항 중 어느 한 항의 방법 또는 제2항 내지 제5항 및 제7항 내지 제17항 중 어느 한 항의 장치에 있어서,
    상기 양자화 행렬들의 세트를 시그널링할 때 더 작은 블록 크기들에 대한 양자화 행렬들 전에 더 큰 블록 크기들에 대한 양자화 행렬들이 시그널링되는, 방법 또는 장치.
  19. 제1항, 제3항 내지 제6항, 및 제8항 내지 제18항 중 어느 한 항의 방법 또는 제2항 내지 제5항 및 제7항 내지 제18항 중 어느 한 항의 장치에 있어서,
    상기 식별자는 matrixId = N * sizeId + matrixTypeId로서 유도되고, 여기서, N은 가능한 타입 식별자들의 수이고, sizeID는 상기 블록 크기를 표시하고, matrixTypeId는 상기 컬러 성분 및 상기 예측 모드를 표시하는, 방법 또는 장치.
  20. 제1항, 제3항 내지 제6항, 및 제8항 내지 제19항 중 어느 한 항의 방법에 있어서,
    상기 하나 이상의 프로세서는 상기 참조 양자화 행렬을 상기 블록 크기에 적응시키는 것을 수행하도록 추가로 구성되는 것을 더 포함하는 방법, 또는
    제2항 내지 제5항 및 제7항 내지 제19항 중 어느 한 항의 장치에 있어서,
    상기 하나 이상의 프로세서는 상기 참조 양자화 행렬을 상기 블록 크기에 적응시키는 것을 수행하도록 추가로 구성되는, 장치.
  21. 제1항, 제3항 내지 제6항, 및 제8항 내지 제20항 중 어느 한 항의 방법에 있어서,
    상기 하나 이상의 프로세서는 디폴트 크로마 포맷과 상이한 상기 블록의 크로마 포맷에 대해, 상기 참조 양자화 행렬을 상기 블록의 상기 크로마 포맷에 적응시키는 것을 수행하도록 추가로 구성되는 것을 더 포함하는 방법, 또는
    제2항 내지 제5항 및 제7항 내지 제20항 중 어느 한 항의 장치에 있어서,
    상기 하나 이상의 프로세서는 디폴트 크로마 포맷과 상이한 상기 블록의 크로마 포맷에 대해, 상기 참조 양자화 행렬을 상기 블록의 상기 크로마 포맷에 적응시키는 것을 수행하도록 추가로 구성되는, 장치.
  22. 제20항의 방법 또는 제20항의 장치에 있어서,
    상기 디폴트 크로마 포맷은 4:2:0인, 방법 또는 장치.
  23. 제20항 내지 제22항 중 어느 한 항의 방법 또는 제20항 내지 제22항 중 어느 한 항의 장치에 있어서,
    상기 적응은 상기 참조 양자화 행렬의 계수들을 인덱싱하기 위해 상기 양자화 행렬 내의 x 및 y 좌표들의 비트 시프트들에 기초하는, 방법 또는 장치.
  24. 제1항, 제3항 내지 제6항, 및 제8항 내지 제23항 중 어느 한 항의 방법 또는 제2항 내지 제5항 및 제7항 내지 제23항 중 어느 한 항의 장치에 있어서,
    상기 식별자는 상기 블록의 상기 예측 모드가 인트라 예측 모드인지 또는 인터 예측 모드인지에 기초하여 획득되는, 방법 또는 장치.
  25. 제1항, 제3항 내지 제6항, 및 제8항 내지 제24항 중 어느 한 항의 방법 또는 제2항 내지 제5항 및 제7항 내지 제24항 중 어느 한 항의 장치에 있어서,
    상기 식별자를 획득할 때 인트라 블록 카피 예측 모드가 인터 예측 모드로서 고려되는, 방법 또는 장치.
  26. 제1항, 제3항 내지 제6항, 및 제8항 내지 제25항 중 어느 한 항의 방법 또는 제2항 내지 제5항 및 제7항 내지 제25항 중 어느 한 항의 장치에 있어서,
    상기 예측 모드는 인트라 블록 카피이고, 상기 블록의 루마 성분에 대해 양자화 행렬이 시그널링되고, 상기 예측 모드를 인터 예측 모드로서 고려함으로써 크로마 성분에 대해 양자화 행렬이 유도되는, 방법 또는 장치.
  27. 제1항, 제3항 내지 제6항, 및 제8항 내지 제26항 중 어느 한 항의 방법 또는 제2항 내지 제5항 및 제7항 내지 제26항 중 어느 한 항의 장치에 있어서,
    상기 예측 모드는 인트라 블록 카피이고, 상기 참조 양자화 행렬은 상기 예측 모드를 인트라 모드로서 고려함으로써 획득되고, 상기 예측 모드를 인터 모드로서 고려함으로써 다른 참조 양자화 행렬이 획득되고, 상기 양자화 행렬은 상기 참조 양자화 행렬과 상기 다른 참조 양자화 행렬의 평균으로서 획득되는, 방법 또는 장치.
  28. 제6항 및 제8항 내지 제27항 중 어느 한 항의 방법을 수행함으로써 형성된, 인코딩된 비디오를 포함하는, 신호.
  29. 제1항, 제3항 내지 제6항 및 제8항 내지 제27항 중 어느 한 항의 방법에 따라 비디오 데이터를 인코딩 또는 디코딩하기 위한 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 매체.
KR1020227001851A 2019-06-21 2020-06-16 비디오 인코딩 및 디코딩을 위한 단일 인덱스 양자화 행렬 설계 KR20220024716A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP19305802.1 2019-06-21
EP19305802 2019-06-21
EP19305826.0 2019-06-24
EP19305826 2019-06-24
PCT/EP2020/066614 WO2020254317A1 (en) 2019-06-21 2020-06-16 Single-index quantization matrix design for video encoding and decoding

Publications (1)

Publication Number Publication Date
KR20220024716A true KR20220024716A (ko) 2022-03-03

Family

ID=71103394

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227001851A KR20220024716A (ko) 2019-06-21 2020-06-16 비디오 인코딩 및 디코딩을 위한 단일 인덱스 양자화 행렬 설계

Country Status (9)

Country Link
US (1) US20230232003A1 (ko)
EP (1) EP3987786A1 (ko)
JP (1) JP2022537090A (ko)
KR (1) KR20220024716A (ko)
CN (1) CN114026857A (ko)
AU (1) AU2020295684A1 (ko)
MX (1) MX2021015582A (ko)
TW (1) TW202106017A (ko)
WO (1) WO2020254317A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021048532A (ja) * 2019-09-19 2021-03-25 キヤノン株式会社 画像符号化装置、画像復号装置及びそれらの制御方法及びプログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7373009B2 (en) * 2005-02-09 2008-05-13 Lsi Corporation Method and apparatus for efficient transmission and decoding of quantization matrices
EP2495973B1 (en) * 2009-10-30 2019-02-27 Sun Patent Trust Decoding method, decoder apparatus, encoding method, and encoder apparatus
US9167252B2 (en) * 2010-12-01 2015-10-20 Texas Instruments Incorporated Quantization matrix compression in video coding
CN103096056B (zh) * 2011-11-08 2015-11-25 华为技术有限公司 矩阵编码方法与装置及解码方法与装置
KR101627085B1 (ko) * 2012-01-20 2016-06-03 한국전자통신연구원 양자화 행렬의 부호화 방법 및 복호화 방법과 이를 이용하는 장치
GB2501535A (en) * 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
SG11202009041WA (en) * 2018-03-28 2020-10-29 Sony Corp Image processing device and image processing method

Also Published As

Publication number Publication date
JP2022537090A (ja) 2022-08-24
AU2020295684A1 (en) 2022-01-27
EP3987786A1 (en) 2022-04-27
MX2021015582A (es) 2022-01-24
TW202106017A (zh) 2021-02-01
US20230232003A1 (en) 2023-07-20
CN114026857A (zh) 2022-02-08
WO2020254317A1 (en) 2020-12-24

Similar Documents

Publication Publication Date Title
CN112970264A (zh) 基于相邻样本相关参数模型的译码模式的简化
CN114208178A (zh) 用于视频编码和解码的二次变换
EP4035357A1 (en) Method and apparatus using homogeneous syntax with coding tools
US20240089437A1 (en) Chroma quantization parameter adjustment in video encoding and decoding
KR20220061948A (ko) 코딩 트리 분할
JP2022549312A (ja) コンテキストコード化bin(ccb)カウント方法の統合
WO2020185492A1 (en) Transform selection and signaling for video encoding or decoding
US20230232003A1 (en) Single-index quantization matrix design for video encoding and decoding
US20230262268A1 (en) Chroma format dependent quantization matrices for video encoding and decoding
US20230232045A1 (en) Scaling process for joint chroma coded blocks
US20220360781A1 (en) Video encoding and decoding using block area based quantization matrices
EP4014490A1 (en) Quantization matrix prediction for video encoding and decoding
TW202416714A (zh) 基於可用參考樣本之幀內預測模式改善
KR20230158506A (ko) 비대칭 이진 트리를 사용하는 행렬 기반 인트라 예측
EP4360312A1 (en) Template-based intra mode derivation
KR20240018650A (ko) 픽처 리샘플링을 위한 고급 신택스
WO2020260310A1 (en) Quantization matrices selection for separate color plane mode
CN114731430A (zh) 与多个变换选择、矩阵加权帧内预测或多参考线帧内预测结合的用于视频编码和解码的帧内子分区

Legal Events

Date Code Title Description
A201 Request for examination