KR20220058958A - 루마 맵핑 기울기 값들에 추가될 보정 값을 예측하는 크로마 잔차 스케일링 - Google Patents

루마 맵핑 기울기 값들에 추가될 보정 값을 예측하는 크로마 잔차 스케일링 Download PDF

Info

Publication number
KR20220058958A
KR20220058958A KR1020227012376A KR20227012376A KR20220058958A KR 20220058958 A KR20220058958 A KR 20220058958A KR 1020227012376 A KR1020227012376 A KR 1020227012376A KR 20227012376 A KR20227012376 A KR 20227012376A KR 20220058958 A KR20220058958 A KR 20220058958A
Authority
KR
South Korea
Prior art keywords
chroma
chroma residual
residual scaling
luma
parameters
Prior art date
Application number
KR1020227012376A
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 KR20220058958A publication Critical patent/KR20220058958A/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/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/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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/36Scalability techniques involving formatting the layers as a function of picture distortion after decoding, e.g. signal-to-noise [SNR] scalability

Landscapes

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

Abstract

비디오를 효율적으로 인코딩 또는 디코딩하기 위한 적어도 방법 및 장치가 제시된다. 예를 들어, 하나 이상의 크로마 잔차 스케일링 파라미터들은 하나 이상의 루마 맵핑 파라미터들에 기초하여 그리고 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값에 기초하여 결정된다. 비디오는 결정된 하나 이상의 크로마 잔차 스케일링 파라미터들에 기초하여 인코딩되거나 또는 디코딩된다.

Description

루마 맵핑 기울기 값들에 추가될 보정 값을 예측하는 크로마 잔차 스케일링
본 실시 형태들 중 적어도 하나는 대체적으로 비디오 인코딩 또는 디코딩을 위한 방법 또는 장치에 관한 것으로, 더 구체적으로는, 비디오 인코딩 또는 디코딩을 위해 크로마 양자화 파라미터(quantization parameter, QP) 도출을 고려한 크로마 컴포넌트 잔차 스케일링 및/또는 루마 맵핑을 효율적으로 제공하기 위한 방법 또는 장치에 관한 것이다.
높은 압축 효율을 달성하기 위해, 이미지 및 비디오 코딩 스킴들은 보통 모션 벡터 예측을 포함한 예측을 채용하고, 비디오 콘텐츠에서 공간적 및 시간적 리던던시를 레버리징하도록 변환된다. 대체적으로, 인트라 또는 인터 예측은 인트라 또는 인터 프레임 상관관계를 활용하기 위해 사용되고, 이어서, 예측 에러들 또는 예측 잔차들로서 종종 표기되는, 원래 이미지와 예측된 이미지 사이의 차이들이 변환되고, 양자화되고, 엔트로피 코딩된다. 비디오를 재구성(reconstruct)하기 위해, 압축된 데이터는 엔트로피 코딩, 양자화, 변환, 및 예측에 대응하는 역 프로세스들에 의해 디코딩된다.
비디오 압축 기술에 대한 최근의 추가들은 다양한 산업 표준들, 기준 소프트웨어의 버전들 및/또는 합동 비디오 탐사 팀(Joint Video Exploration Team, JVET) 그룹에 의해 개발되고 있는 합동 탐사 모델(Joint Exploration Model, JEM) 및 향후 범용 비디오 코딩 테스트 모델(Versatile Video Coding(VVC) Test Model, VTM)과 같은 문헌들을 포함한다. 목적은 기존 고효율 비디오 코딩(High Efficiency Video Coding, HEVC) 표준에 대한 추가 개선들을 만드는 것이다.
종래 기술의 결점들 및 단점들은 본 명세서에 기술된 대체적인 태양들에 의해 해결되고 다루어진다.
제1 태양에 따르면, 방법이 제공된다. 본 방법은, 하나 이상의 루마 맵핑 파라미터들에 기초하여 그리고 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값에 기초하여 하나 이상의 크로마 잔차 스케일링 파라미터들을 결정하는 단계; 및 결정된 하나 이상의 크로마 잔차 스케일링 파라미터들에 기초하여 비디오를 인코딩하는 단계를 포함한다.
다른 태양에 따르면, 다른 방법이 제공된다. 본 방법은, 하나 이상의 루마 맵핑 파라미터들에 기초하여 그리고 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값에 기초하여 하나 이상의 크로마 잔차 스케일링 파라미터들을 결정하는 단계; 및 결정된 하나 이상의 크로마 잔차 스케일링 파라미터들에 기초하여 비디오를 디코딩하는 단계를 포함한다.
다른 태양에 따르면, 장치가 제공된다. 본 장치는 하나 이상의 프로세서들을 포함하고, 하나 이상의 프로세서들은, 하나 이상의 루마 맵핑 파라미터들에 기초하여 그리고 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값에 기초하여 하나 이상의 크로마 잔차 스케일링 파라미터들을 결정하도록; 그리고 결정된 하나 이상의 크로마 잔차 스케일링 파라미터들에 기초하여 비디오를 인코딩하도록 구성된다.
다른 태양에 따르면, 다른 장치가 제공된다. 본 장치는 하나 이상의 프로세서들을 포함하고, 여기서 하나 이상의 프로세서들은, 하나 이상의 루마 맵핑 파라미터들에 기초하여 그리고 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값에 기초하여 하나 이상의 크로마 잔차 스케일링 파라미터들을 결정하도록; 그리고 결정된 하나 이상의 크로마 잔차 스케일링 파라미터들에 기초하여 비디오를 디코딩하도록 구성된다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값은 루마 양자화 파라미터 값에 기초하여 결정된다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 루마 양자화 파라미터 값은, 하나 이상의 크로마 잔차 스케일링 파라미터들이 결정되고 있는 크로마 블록의 병치된 루마 샘플들에 대해 사용되는 다른 루마 양자화 파라미터 값에 의존하지 않는다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값은 선택된 루마 샘플들의 평균 값에 기초한다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 루마 맵핑 파라미터들은 루마 샘플들의 예측에 적용된 루마 포워드 맵핑 함수의 기울기를 나타낸다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 본 방법은 하나 이상의 크로마 잔차 스케일링 파라미터들의 상기 보정 값의 시그널링을 추가로 포함한다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값은 APS에서 적응 파라미터로서 시그널링된다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값은 루마 맵핑 파라미터들에 추가되어 보정된 루마 맵핑 기울기 값들을 생성하는 추가 값(additive value)이다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 크로마 잔차 스케일링 파라미터들은 보정된 루마 맵핑 기울기 값들을 반전시킴으로써 도출된다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값은 범위 [-7, 7] 내에 있다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 보정된 루마 맵핑 기울기 값들이 제한된다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 보정된 루마 맵핑 기울기 값들은 (OrgCW>>3) 내지 (OrgCW<<3 - 1)를 포함하는 범위 내에 있고, 여기서 OrgCW는 스케일링의 중립 값(neutral value)을 나타낸다.
제2 태양에 따르면, 제2 방법이 제공된다. 본 방법은, 하나 이상의 크로마 잔차 스케일링 파라미터들에 또는 하나 이상의 루마 맵핑 파라미터들에 기초하여 하나 이상의 크로마 양자화 파라미터들을 결정하는 단계; 및 결정된 하나 이상의 크로마 양자화 파라미터들에 기초하여 비디오를 인코딩하는 단계를 포함한다.
다른 태양에 따르면, 다른 방법이 제공된다. 본 방법은, 하나 이상의 크로마 잔차 스케일링 파라미터들에 또는 하나 이상의 루마 맵핑 파라미터들에 기초하여 하나 이상의 크로마 양자화 파라미터들을 결정하는 단계; 및 결정된 하나 이상의 크로마 양자화 파라미터들에 기초하여 비디오를 디코딩하는 단계를 포함한다.
다른 태양에 따르면, 장치가 제공된다. 본 장치는 하나 이상의 프로세서들을 포함하고, 여기서 하나 이상의 프로세서들은, 하나 이상의 크로마 잔차 스케일링 파라미터들에 또는 하나 이상의 루마 맵핑 파라미터들에 기초하여 하나 이상의 크로마 양자화 파라미터들을 결정하도록; 그리고 결정된 하나 이상의 크로마 양자화 파라미터들에 기초하여 비디오를 인코딩하도록 구성된다.
다른 태양에 따르면, 다른 장치가 제공된다. 본 장치는 하나 이상의 프로세서들을 포함하고, 여기서 하나 이상의 프로세서들은, 하나 이상의 크로마 잔차 스케일링 파라미터들에 또는 하나 이상의 루마 맵핑 파라미터들에 기초하여 하나 이상의 크로마 양자화 파라미터들을 결정하도록; 그리고 결정된 하나 이상의 크로마 양자화 파라미터들에 기초하여 비디오를 디코딩하도록 구성된다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 본 방법은 루마 맵핑 파라미터들에 기초하여 하나 이상의 크로마 잔차 스케일링 파라미터들을 결정하는 단계를 추가로 포함한다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 장치의 하나 이상의 프로세서들은 루마 맵핑 파라미터들에 기초하여 하나 이상의 크로마 잔차 스케일링 파라미터들을 결정하도록 추가로 구성된다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 하나 이상의 크로마 잔차 스케일링 파라미터들에 기초하여 하나 이상의 크로마 양자화 파라미터들을 결정하는 단계는 하나 이상의 크로마 양자화 파라미터들 중 하나의 크로마 양자화 파라미터의 값을 크로마 잔차 스케일링 인자의 값에 기초하여 보정하는 단계를 포함한다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 보정하는 단계는 맵핑 함수의 기울기에 기초한다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 루마 맵핑에 기초하여 하나 이상의 크로마 잔차 스케일링 파라미터들을 결정하는 단계는 하나 이상의 크로마 잔차 스케일링 파라미터들 중 하나의 크로마 잔차 스케일링 파라미터의 값을 루마 양자화 파라미터 값에 기초하여 보정하는 단계를 포함한다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 루마 양자화 파라미터 값은, 하나 이상의 크로마 잔차 스케일링 파라미터들이 결정되고 있는 크로마 블록의 병치된 루마 샘플들에 대해 사용되는 다른 루마 양자화 파라미터 값에 의존하지 않는다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 하나 이상의 크로마 잔차 스케일링 파라미터들 중 하나의 크로마 잔차 스케일링 파라미터의 값을 보정하는 것은 선택된 루마 샘플들의 평균 값에 기초한다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 루마 맵핑은 루마 포워드 맵핑 함수를 예측 루마 샘플들에 적용하는 것을 포함한다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 보정 크로마 잔차 스케일링 파라미터들이 제한된다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 보정 크로마 잔차 스케일링 파라미터들은 크로마 맵핑 파라미터들에 적용된 선형 함수에서 사용되는 오프셋 파라미터 및 수축 파라미터(shrink parameter) 중 하나를 포함한다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 디코딩 실시 형태들 중 임의의 것에 따른 장치; 및 (i) 신호를 수신하도록 구성된 안테나 - 신호는 비디오 블록을 포함함 -, (ii) 수신된 신호를 비디오 블록을 포함하는 주파수들의 대역으로 제한하도록 구성된 대역 제한기, 또는 (iii) 비디오 블록을 나타내는 출력을 디스플레이하도록 구성된 디스플레이 중 적어도 하나를 포함하는 디바이스가 제공된다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 기술된 인코딩 실시 형태들 또는 변형들 중 임의의 것에 따라 생성된 데이터 콘텐츠를 포함하는 비일시적 컴퓨터 판독가능 매체가 제공된다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 기술된 인코딩 실시 형태들 또는 변형들 중 임의의 것에 따라 생성된 비디오 데이터를 포함하는 신호가 제공된다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 비트스트림이, 기술된 인코딩 실시 형태들 또는 변형들 중 임의의 것에 따라 생성된 데이터 콘텐츠를 포함하도록 포맷화된다.
적어도 하나의 실시 형태의 다른 대체적인 태양에 따르면, 명령어들을 포함하는 컴퓨터 프로그램 제품이 제공되는데, 명령어들은, 프로그램이 컴퓨터에 의해 실행될 때, 컴퓨터로 하여금 기술된 디코딩 실시 형태들 또는 변형들 중 임의의 것을 수행하게 한다.
대체적인 태양들의 이들 및 다른 태양들, 특징들 및 이점들은 첨부된 도면들과 관련하여 읽혀지는 예시적인 실시 형태들의 다음의 상세한 설명으로부터 명백해질 것이다.
도 1은 크로마 스케일링 인자 도출에서 사용되는 가상 프로세싱 디코딩 유닛(Virtual Processing Decoding Unit, VPDU) 이웃 샘플들을 도시한다.
도 2는 크로마 스케일링 도출의 일례를 예시한다.
도 3은 루마 포워드 맵핑 함수의 그리고 역 맵핑 함수의 일례를 예시한다.
도 4는 크로마 QP 도출의 일례를 예시한다.
도 5는 크로마 잔차의 역 양자화 및 역 스케일링의 일례를 예시한다.
도 6은 실시 형태들의 다양한 태양들이 구현될 수 있는 비디오 인코더의 일례를 예시한다.
도 7은 실시 형태들의 다양한 태양들이 구현될 수 있는 비디오 디코더의 일례를 예시한다.
도 8은 적어도 하나의 실시 형태의 대체적인 태양에 따른 크로마 잔차의 수정된 역 양자화 및 역 스케일링의 일례를 예시한다.
도 9는 적어도 하나의 실시 형태의 대체적인 태양에 따른 수정된 크로마 QP 도출의 일례를 예시한다.
도 10은 적어도 하나의 실시 형태의 대체적인 태양에 따른 크로마 잔차의 수정된 역 양자화 및 역 스케일링의 일례를 예시한다.
도 11은 적어도 하나의 실시 형태의 대체적인 태양에 따른 수정된 크로마 스케일링 도출의 일례를 예시한다.
도 12는 본 실시 형태들의 태양들이 구현될 수 있는 시스템의 블록도를 예시한다.
도 13은 적어도 하나의 실시 형태의 대체적인 태양에 따른 크로마 스케일링 도출에서 크로마 스케일링의 보정의 일례를 예시한다.
여기에 기술된 대체적인 태양들은 비디오 압축 분야에 있다. 이들 태양들은 기존의 비디오 압축 시스템들에 비해 압축 및/또는 압축해제 효율을 개선시키는 것을 목표로 한다.
본 실시 형태들은 크로마 잔차 스케일링과 크로마 양자화 파라미터(QP) 도출 사이의 상호작용들에 관한 것이다. VTM의 이전 버전에서, 두 도구들은 완전히 독립적이지만, 둘 모두는 크로마 잔차 스케일링에 영향을 미친다. 본 출원은 크로마 잔차 스케일링과 크로마 QP 도출 사이의 상호작용을 고려하기 위한 실시 형태들을 개시한다.
루마 의존적 크로마 잔차 스케일링
크로마 스케일링을 이용한 루마 맵핑(Luma mapping with Chroma scaling, LMCS)은 VVC 사양 JVET-O2001의 도구이다. 그것은 2개의 태양들을 포함한다: 루마 맵핑(luma mapping, LM), 및 루마 의존적 크로마 잔차 스케일링(때때로, 현재의 사양에서 사용된 바와 같이 CS, 또는 CRS로서 약칭됨).
루마 맵핑은 예측 루마 샘플들에 루마 포워드 맵핑 함수(Mapfwd(.))를 적용하는 것으로 구성된다. 루마 포워드 맵핑 함수(Mapfwd(.))는 데이터 스트림으로 코딩된 표(lumaMapTable)에 기초하는데, 여기서 lumaMapTable은 구분 선형 루마 맵핑 함수(piece-wise linear luma mapping function)(Mapfwd(.))의 기울기들을 나타낸다. 각각의 조각 또는 세그먼트는 간격 [Yi, Yi+1 - 1](i=0 내지 15)에 대해 정의된, 균일한 길이의 것이다.
CRS는, 예를 들어, 기고문 JVET-O0098에 기술되어 있다. CRS는 (인코더에서) 루마 의존적 스케일링을 또는 (디코더에서) 역 스케일링을 사용하는 것으로 구성된다. 역 스케일링 인자들은 루마 값들로부터 도출된 인덱스 값들에 의해 인덱싱된 표(chromaScaleTable)로부터 도출된다. chromaScaleTable은 lumaMapTable로부터 추론되고, i=0 내지 15에 대해, chromaScaleTable[ i ] = 1 / lumaMapTable[ i ]로서 근사화될 수 있다. 인코더 측에서의 스케일링 인자들은 디코더에서 사용되는 역 스케일링 인자들의 역이다.
크로마 블록을 프로세싱할 때, 각각의 64x64 블록(가상 프로세싱 디코딩 유닛 - VPDU라고 불림)에 대한 CRS 인자가 이전에 재구성된 VPDU 이웃들(도 1의 예시를 참조)로부터의 루마 샘플 값들로부터 도출된다. 코딩 트리 유닛(Coding Tree Unit, CTU) 파티션이 인터 128 x 128, 인터 128 x 64 및 인터 64 x 128이면, 제1 VPDU와 연관된 코딩 유닛(Coding Unit, CU)에 대해 도출된 CRS 인자는 그러한 CU에서 모든 크로마 변환 블록(Transform Block, TB)들에 대해 사용된다. 각각의 VPDU에 대해, 좌측 및 상단 이웃 재구성 루마 샘플들이 사용된다.
먼저, 도 1에 도시된 바와 같이, 상단 좌측 위치에 가장 가까운 M개의 좌측 이웃 루마 샘플들 및 M개의 상단 이웃 루마 샘플들의 평균 값(avgY)이 계산된다(이때 M = min(CTUSize, 64)). 이어서, (인코더에서의) 크로마 스케일링 또는 (디코더에서의) 역 스케일링 인자가 avgY에 기초하여 크로마 스케일링 표로부터 도출된다.
avgY로부터, 크로마 스케일링 표에서 인덱스(idx)가 계산된다. avgY는 포워드 맵핑된 도메인에 있는 루마 값들로부터 도출된다. 따라서, 인덱스(idx)는, avgY가 간격 [Mapfwd(Yidx), Mapfwd(Yidx+1 - 1)]에 속하도록 하는 값으로서 계산된다. 이러한 VPDU 내의 모든 크로마 블록들에 대한 크로마 예측 잔차 샘플들은 (인코더에서) 스케일링 인자에 의해 스케일링되거나(scale = (1 / chromaScaleTable[ idx ])) 또는 (디코더에서) 스케일링 인자에 의해 역 스케일링된다(invScale = chromaScaleTable[ idx ]).
픽처 경계 상에서, 최우측 컬럼 VPDU에 대해, 픽처 내의 상부 이웃 샘플들이 M개 미만인 경우, 픽처 경계 샘플은 M까지 패딩된다. 하단 로우 VPDU에 대해, 픽처 내의 좌측 이웃 샘플들이 M개 미만인 경우, 픽처 경계 샘플들은 M까지 패딩된다. 최좌측 컬럼 VPDU에 대해, M개의 상단 이웃 샘플들만이 평균 값에 대해 사용된다. 상단 로우 VPDU에 대해, M개의 좌측 이웃 샘플들만이 평균 값에 대해 사용된다. 픽처의 좌측 상단 VPDU에 대해, avgY는 1<<(bitdepth-1)로서 직접 설정된다.
인코더
도 6은 VVC 인코더(100)의 일례를 예시한다. 압축되지 않은 비디오 신호가 수신되고, 맵핑 함수(101)에 대한 입력으로서 사용된다. 맵핑 함수는, 예컨대 전술된 바와 같이, 추가로 설명되고/되거나 도 3에 도시된 바와 같을 수 있다. 이어서, 맵핑된 신호는 (102)에서 파티셔닝된다. CRS는 블록(104)에 대응한다. (104)에서 적용된 스케일링 인자는 재구성된 맵핑된 루마 샘플들에 기초한다. CRS는, 가능하게는 루프 외 맵핑(out-of-loop mapping)(101)에 의해 프로세싱되는, 입력 크로마 샘플들에 대한 크로마 예측의 차감으로부터 (103)에서 획득된 크로마 잔차 신호에 적용된다. (104)에서의 CRS 프로세싱 후의 결과는 스케일링된 크로마 잔차 신호이다.
스케일링된 크로마 잔차 신호는 이어서, 변환(105) 및 양자화(106)에 의해 프로세싱되고, 생성된 신호는 엔트로피 코딩(120)에서 코딩된다. 이러한 신호는 또한 역 양자화(107) 및 역 변환(108)에 의해 프로세싱되어, 디코딩된 크로마 잔차를 생성한다. 역 CRS가 (109)에서 디코딩된 크로마 잔차 신호에 적용된다. (109)에서 적용된 역 스케일링 인자는 재구성된 맵핑된 루마 샘플들에 기초한다. 이어서, 역 스케일링된 디코딩된 크로마 잔차 신호가, (117)에서 이루어진 모드 선택(인트라 또는 인터 예측)에 따라, 가산기(110)에서, 인트라 예측(114)으로부터 또는 모션 추정(115) 및 모션 보상(116)으로부터 비롯되는 예측 크로마 신호에 추가된다. 생성된 신호는 루프 내 필터(in-loop filter)들(112)에 의해 프로세싱되고, 생성된 신호는 기준 픽처 버퍼(113)에 저장된다.
디코더
도 7은 VVC 디코더(200)의 일례를 예시한다. (예컨대, 도 6의 인코더(100)로부터) 수신된 비트스트림이 먼저, 엔트로피 디코딩되고(201) 파티셔닝된다(202). 역 CRS(205)가 디코딩된 크로마 계수들의 역 양자화(203) 및 역 변환(204)으로부터 비롯되는 디코딩된 크로마 잔차 샘플들에 적용된다. (205)에서 적용된 역 스케일링 인자는 재구성된 맵핑된 루마 샘플들에 기초한다. 이어서, 디코딩된 크로마 잔차 샘플들이, (206)에서, 코딩 모드 선택(212)에 따라 인트라 예측(210)으로부터 또는 모션 보상(211)으로부터 비롯되는 예측 신호에 추가된다. 이어서, 생성된 재구성된 크로마 신호가 루프 내 필터링(208)에 의해 프로세싱되고, 생성된 신호는 기준 픽처 버퍼(209)에 저장된다. 루프 내 필터링(208)으로부터의 신호는 루프 외 역 맵핑(220)에 의해 추가적으로 프로세싱되어, 디코딩된 출력을 생성할 수 있다.
크로마 역 스케일링 값 도출 프로세스(302)의 일례는 도 2에 예시된다. 프로세스(302)는 다음의 단계들로 이루어진다:
- 단계(501): 프로세싱되고 있는 크로마 블록을 포함하는 VDPU의 경계들에서, 맵핑된 재구성된(또는 일부 구현예들에서, 예측) 루마 샘플들로부터 대표적인 루마 값, avgY의 도출.
- 단계(502): avgY로부터 그리고 크로마 스케일링 표(chromaScaleTable)로부터 역 스케일링 인자의 도출.
lumaMapTable의 일례는 하기 표 1에 주어진다. 표는, 인덱스 0에서 15까지 정의된, 포워드 맵핑 함수(Mapfwd(.))의 기울기 값들에 대응한다. 10 비트 신호의 경우, 하나의 인덱스 범위는 64개의 루마 값들 범위(1024/16)에 대응한다. 값들은 표 1의 "정규화된 기울기" 로우에 도시된 바와 같이, 64로 스케일링된다(이는, 64가 1의 기울기 값과 동등함을 의미함).
Figure pct00001
대응하는 루마 맵핑 함수(Mapfwd(.))가 도 3에 예시된다. 그의 역 근사(invMapfwd(.))가 또한 파선들로 도시된다.
관련된 chromaScaleTable(역 크로마 스케일링 값들에 대응함)의 일례가 하기에 주어진다. 값들은 2048로 스케일링된다(이는, 2048이 1의 스케일에 동등함을 의미함).
가장 최근의 VVC 구현예에서, 하기 표 2에 도시된 바와 같이, chromaScaleTable[ k ]
Figure pct00002
(2048 / (lumaMapTable[ k ] / 64))(lumaMapTable[ k ] = 0인 경우는 제외, 이러한 경우에, chromaScaleTable[ k ]는 2048로 설정됨)이다.
Figure pct00003
하기의 설명에서, lumaMapTable 및 chromaScaleTable은 정규화된, 부동 소수점 값들로 이루어진다고 간주될 것이다. 정수/고정 소수점으로 표현된 값들에 대해 하기에 논의되는 개념들을 일반화하는 것은 간단하다.
루마 QP 값으로부터의 크로마 QP 값 도출
VVC에서, 크로마 QP 값은, 크로마 QP 맵핑 표들을 사용하여, 루마 QP 값으로부터 그리고 QP 오프셋 파라미터들로부터 도출된다. 최신 VVC 사양 JVET-O2001에서, 크로마 QP 맵핑 표들은 신택스 표, 하기의 표 3의 밑줄친 부분들에 예시된 바와 같이, SPS 레벨에서 비트스트림으로 시그널링된다. 신택스 요소들의 관련 시맨틱들이 또한 하기에 제공된다.
Figure pct00004
관련된 시맨틱들의 일례는 다음과 같다:
1과 동일한 same_qp_table_for_chroma는, 하나의 크로마 QP 맵핑 표만이 시그널링되고, 이러한 표가 Cb 및 Cr 잔차들뿐만 아니라, 합동 Cb-Cr 잔차들에 적용된다는 것을 특정한다. 0과 동일한 same_qp_table_chromat은, 3개의 크로마 QP 맵핑 표들이 SPS에서 시그널링된다는 것을 특정한다. same_qp_table_for_chroma가 비트스트림에 존재하지 않을 때, same_qp_table_for_chroma의 값은 1과 동일한 것으로 추론된다.
num_points_in_qp_table_minus1[ i ] 플러스 1은 i 번째 크로마 QP 맵핑 표를 설명하는 데 사용된 포인트들의 수를 특정한다. num_points_in_qp_table_minus1[ i ]의 값은 0 내지 63 + QpBdOffsetC를 포함하는 범위 내에 있을 것이다. num_points_in_qp_table_minus1[ 0 ]이 비트스트림에 존재하지 않을 때, num_points_in_qp_table_minus1[ 0 ]의 값은 0과 동일한 것으로 추론된다.
delta_qp_in_val_minus1[ i ][ j ]는 i 번째 크로마 QP 맵핑 표의 j 번째 피봇 포인트의 입력 좌표를 도출하는 데 사용되는 델타 값을 특정한다. delta_qp_in_val_minus1[ 0 ][ j ]가 비트스트림에 존재하지 않을 때, delta_qp_in_val_minus1[ 0 ][ j ]의 값은 0과 동일한 것으로 추론된다.
delta_qp_out_val[ i ][ j ]는 i 번째 크로마 QP 맵핑 표의 j 번째 피봇 포인트의 출력 좌표를 도출하는 데 사용되는 델타 값을 특정한다. delta_qp_out_val[ 0 ][ j ]가 비트스트림에 존재하지 않을 때, delta_qp_out_val[ 0 ][ j ]의 값은 0과 동일한 것으로 추론된다.
i = 0..same_qp_table_for_chroma ? 0 : 2에 대한 i 번째 크로마 QP 맵핑 표 ChromaQpTable[I]는 다음과 같이 도출된다:
Figure pct00005
same_qp_table_for_chroma가 1과 동일할 때, ChromaQpTable[1][k] 및 ChromaQpTable[2][k]는 k = -QpBdOffsetC..63에 대해 ChromaQpTable[0][k]와 동일하게 설정된다.
비트스트림 부합성의 요건은, qpInVal[i][j] 및 qpOutVal[ i ][ j ]의 값들이, i = 0..same_qp_table_for_chroma ? 0 : 2 및 j = 0..num_points_in_qp_table_minus1[ i ]에 대해 -QpBdOffsetC 내지 63을 포함하는 범위에 있을 것이라는 것이다.
VVC에서 3개의 유형들의 크로마 잔차가 고려된다: i) Cb 잔차(1과 동일한 크로마 인덱스(cIdx)에 의해 정의됨), ii) Cr 잔차(2와 동일한 크로마 인덱스(cIdx)에 의해 정의됨), iii) 합동 Cb-Cr 잔차(3과 동일한 크로마 인덱스(cIdx)에 의해 정의됨). 합동 Cb-Cr 잔차는, 합동 Cb-Cr 코딩 모드가 크로마 블록에 적용될 때 사용된다. 합동 Cb-Cr 잔차가 크로마 블록에 적용되지 않을 때, Cb 잔차 및 Cr 잔차들 둘 모두가 존재한다. 따라서, VVC에서 3개의 크로마 QP 맵핑 표들이 고려되는데, 이는 여기서 다음으로 언급된다: ChromaQpTable[0] (Cb에 대해, cIdx=1), ChromaQpTable[1] (Cr에 대해, cIdx=2) 및 ChromaQpTable[2] (합동 Cb-Cr에 대해, cIdx=3).
신택스에서, 3개의 표들에 대해 동일한 신택스 요소들을 시그널링하는 것(same_qp_table_for_chroma이 1과 동일한 경우) 또는 3개의 크로마 QP 맵핑 표들 각각에 대해 특정 신택스 요소들을 시그널링하는 것(same_qp_table_for_chroma이 0과 동일한 경우, 이는 신택스 요소들의 3개의 세트들이, 크로마 QP 맵핑 표마다 하나의 세트씩 시그널링됨을 나타냄)이 가능하다.
주어진 크로마 인덱스(cIdx)의 주어진 크로마 블록에 대해, 크로마 QP, QPCcIdx는 다음과 같이 계산된다(예컨대, JVET-O2001의 섹션 "Derivation process for quantization parameters"를 참조).
루마 및 크로마 QP들은 양자화 그룹(quantization group, QG)들로 불리는 영역마다 도출된다. 이러한 프로세스는 도 6의 인코더(100)의 요소들(106, 107) 및 도 7의 디코더(200)의 요소(203)에 적용된다.
크로마 QP, QPCcIdx, 도출 프로세스(301)가 도 4에 예시된다. 프로세스(301)는 다음을 포함한다:
Figure pct00006
단계(401): 파라미터 QpY가 먼저, 슬라이스의 루마 QP로부터, 또는 이웃 블록들의 루마 QP로부터 도출된다. 보다 정확하게는, 다음의 상세한 단계들이 적용된다:
o qPY_PREV는 (슬라이스, 타일 또는 브릭의 상단 좌측 경계에서) 슬라이스 루마 QP SliceQpY로, 또는 디코딩 순서에서 이전 QG에서의 마지막 루마 CU의 루마 QP로 설정됨
o qPY_A는 (QG의 좌측 경계에서) qPY_PREV로, 또는 (QG 내부에서) 현재 QG의 QpY로 설정됨
o qPY_B는 (QG의 상단 경계에서) qPY_PREV로, 또는 (QG 내부에서) 현재 QG의 QpY로 설정됨
o qPY_PRED는 좌측 양자화 그룹을 커버하는 루마 코딩 블록을 포함하는 코딩 유닛의 루마 양자화 파라미터 QpY로, 또는 (qPY_A + qPY_B + 1) >> 1로 설정됨
o QpY =((qPY_PRED +CuQpDeltaVal + 64 + 2 * QpBdOffsetY)%(64 + QpBdOffsetY)) - QpBdOffsetY
Figure pct00007
단계(402): 이어서, 중간 값이 QpY의 클리핑(clipping)된 값으로서 도출된다.
o qPiChroma = Clip3(-QpBdOffsetC, 63, QpY)
Figure pct00008
단계(403): 크로마 QP 맵핑 표들을 사용하는 중간 크로마 QP qPcIdx는 다음과 같이 계산된다:
o qPcIdx = ChromaQpTable[ cIdx - 1 ][ qPiChroma ]
Figure pct00009
단계(404): 마지막으로, 크로마 QP, QPCcIdx가 다음과 같이 계산된다:
o QPCcIdx=Clip3(-QpBdOffsetC, 63, qPcIdx+ pps_cb_qp_offset + slice_cb_qp_offset +CuQpOffsetCb) + QpBdOffsetC
여기서, CuQpDeltaVal은 CU에 대한 코딩된 델타 QP이고, QpBdOffsetY 및 QpBdOffsetC는 각각 루마 및 크로마 신호 비트깊이에 의존하는 파라미터들이다.
chromaQpTable의 일례는 하기 표 4에 주어진다:
Figure pct00010
상호작용 - 역 양자화/역 스케일링
도 5는 인덱스(cIdx)의 크로마 성분의 크로마 잔차 역 양자화 및 역 스케일링의 단순화된 블록도를 도시한다. 먼저, 크로마 QP, QPCcIdx가, 엔트로피 디코딩으로부터 그리고 이전에 디코딩된 CU들의 디코딩으로부터 획득된 루마 및 크로마 QP 데이터로부터 도출된다(301). 디코딩된 크로마 계수들은 크로마 QP, QPCcIdx를 사용하여 (203)에서 역 양자화된다. 이어서, 역 양자화된 계수들이 역 변환된다(204). 단계(302)는 현재 VPDU에 이웃하는 맵핑된 루마 샘플들로부터 역 크로마 스케일링 값을 도출한다(302). 단계(205)에서, 역 스케일링 값을 입력으로 하여, 역 CRS가 역 변환에서 비롯되는 크로마 잔차에 적용된다. 이러한 프로세스의 출력은 역 스케일링된 디코딩된 크로마 잔차이다.
본 실시 형태들 중 적어도 하나는 크로마 잔차 스케일링과 크로마 QP 도출 사이의 상호작용에 관한 것이다. VTM의 이전 버전에서, 두 도구들은 완전히 독립적이지만, 둘 모두는 크로마 잔차 스케일링에 영향을 미친다. 본 실시 형태들 중 적어도 하나는 크로마 잔차 스케일링과 크로마 QP 도출 사이의 상호작용을 고려하기 위한 프로세스를 정의한다.
크로마 QP는 현재, 슬라이스 레벨로부터 추론된 루마 QP 정보, QPY, 또는 이웃하는, 또는 크로마 블록을 커버하는 루마 영역 내부의 루마 코딩 블록들로부터 도출된다.
그러나, 루마 샘플들은, 루마 맵핑 표, lumaMapTable로부터 도출된 포워드 루마 맵핑(도 6의 인코더(100)에서 118, 또는 디코더(200)에서 213)에 의해 프로세싱된다. 이러한 맵핑 프로세스는 루마 샘플들의 양자화와 유사한 방식에 있다. 그러나, 루마 샘플들의 이러한 추가적인 양자화는 크로마 QP 값을 도출하는 프로세스에서 고려되지 않는다. 이것은 잘못된 루마/크로마 비트레이트 균형 또는 루마/크로마 품질 균형을 초래할 수 있다.
본 실시 형태들 중 적어도 하나는 이들 쟁점들을 해결하는 것, 및 예컨대, 루마 맵핑, 크로마 잔차 스케일링 및 크로마 QP 도출 사이의 상호작용을 고려함으로써 개선들을 행하는 것을 목표로 한다.
델타 크로마 QP 코딩을 사용하여, 로컬 크로마 QP를 조정함으로써 위에서 논의된 문제의 영향을 제한하는 것이 가능하다. 그러나, 이러한 솔루션은 델타 크로마 QP 코딩을 코딩하기 위해 추가적인 비트들을 소비하는 것을 필요로 하고, 따라서 코딩 효율을 불리하게 만들 수 있다. 또한, 델타 크로마 QP로 달성된 스케일링(단계(203))의 정확도는 크로마 잔차 스케일링(단계(205))의 정확도에 비해 충분히 높지 않을 수 있다.
JVET-J0067에서, 다른 조사된 솔루션은 크로마 샘플들의 병치된 루마 샘플들에 사용되는 QP의 값에 기초하여 크로마 잔차 스케일링 인자를 수정하는 것으로 구성된다. 이러한 솔루션은 병치된 루마 샘플들의 루마 QP에 대한 종속성을 생성하고, 이는 구현 처리량에 문제가 될 수 있다.
따라서, 본 실시 형태들 중 적어도 하나는 크로마 QP 표 및 루마 QP 파라미터들에 기초하여 크로마 잔차 스케일링 인자를 조정하는 것으로 구성된다. 본 발명의 예시적인 실시 형태는 다음을 포함한다:
1. 루마 샘플들에 적용되는 맵핑 또는 추가 크로마 잔차 스케일링에 적용될 스케일링을 고려함으로써 크로마 QP 도출 프로세스를 수정하는 것; 및/또는
2. 크로마 스케일링 인자를 계산하기 위해 사용되는 루마 샘플들에 적용된 루마 맵핑에 의해 유도된 바이어스를 고려함으로써, 그러나 크로마 블록의 병치된 루마 샘플들에 사용되는 QP와의 의존성을 갖지 않고서 크로마 잔차 스케일링 프로세스를 수정하는 것.
제안된 실시 형태들의 이점들은 더 좋은 루마-크로마 품질 균형을 획득하는 것을 포함한다.
VVC의 이전 버전에서의 역 양자화 및 역 크로마 잔차 스케일링을 위한 단계들
VVC 사양의 이전 버전에서의 역 양자화 및 역 크로마 잔차 스케일링 프로세스들은 다음에 의해 달성된다:
단계(301)(예컨대, 도 4에 도시된 바와 같음)
Figure pct00011
단계(401): QpY의 도출
Figure pct00012
단계(402): qPiChroma의 도출
o qPiChroma = Clip3(-QpBdOffsetC, 63, QpY)
Figure pct00013
단계(403): qPcIdx의 도출
o qPcIdx = ChromaQpTable[ cIdx - 1 ][qPiChroma]
Figure pct00014
단계(404): QPCcIdx의 도출
o QPCcIdx = Clip3(-QpBdOffsetC, 63, qPcIdx + pps_cb_qp_offset + slice_cb_qp_offset+CuQpOffsetCb) + QpBdOffsetC
단계(302)(예컨대, 도 2에 도시된 바와 같음)
Figure pct00015
단계(501): avgY의 도출
Figure pct00016
단계(502): invScale를 도출
o invScale = chromaScaleTable[ idx(avgY) ]
여기서, 함수 idx(Y)는 Y를 포함하는 세그먼트 [ Mapfwd(Yi), Mapfwd(Yi+1) - 1 ]의 인덱스를 반환한다.
실시 형태들 - 크로마 QP를 도출할 때 보정이 적용됨
이들 실시 형태들에서, 단계(301) "크로마 QP 도출"은 도 8에 도시된 바와 같이, "보정에 의한 크로마 QP 도출"의 단계(601)에 의해 수정/대체된다. 역 크로마 스케일링 인자 도출(예컨대, 도 2의 302)로부터의 정보가 도 8의 (601)에서 사용될 수 있다.
실시예 1
하나의 예시적인 실시 형태에서, QPY의 값은 크로마 잔차 스케일링 인자의 값에, 또는 크로마 샘플들의 픽처에서의 상대적 위치에 가까운 루마 샘플들에 의존하는 값, 예를 들어, avgY에 기초하여 보정된다.
역 양자화 및 역 크로마 잔차 스케일링 프로세스들이 도 9에 예시된 바와 같은, 다음의 단계들에 의해 달성된다. VVC 프로세스의 이전 버전과 비교한 변화들이 하기에 밑줄로 보여진다.
단계(601):
Figure pct00017
단계(401): QPY의 도출
Figure pct00018
단계(501)(예컨대, 도 2 참조): avgY의 도출
Figure pct00019
단계(502)(예컨대, 도 2 참조): invScale를 도출
o invScale = chromaScaleTable[ idx(avgY) ]
Figure pct00020
보정 단계(701):
o QP Y = f(QP Y , invScale) 또는 QP Y = f(QP Y , avgY)
o 함수(f)의 예들이 하기에 도시된다.
Figure pct00021
단계(402): qPiChroma의 도출
o qPiChroma=Clip3(-QpBdOffsetC, 63,QpY)
Figure pct00022
단계(403): qPcIdx의 도출
o qPcIdx = ChromaQpTable[ cIdx - 1 ][ qPiChroma ]
Figure pct00023
단계(404): QPCcIdx의 도출
o QPCcIdx = Clip3(-QpBdOffsetC, 63, qPcIdx + pps_cb_qp_offset + slice_cb_qp_offset +CuQpOffsetCb) + QpBdOffsetC
단계(302)(예컨대, 도 2 참조):
Figure pct00024
단계(501): avgY의 도출
Figure pct00025
단계(502): invScale를 도출
o invScale = chromaScaleTable[ idx(avgY) ]
함수(f)의 예들
함수(f)의 예상된 효과는, CRS 인자를 도출하는 데 사용된 Y 값들이 1보다 큰 포워드 맵핑 함수 기울기를 사용하여 포워드 맵핑되었을 때 QP 값을 감소시키는 것이거나, 또는 CRS 인자를 도출하는 데 사용된 Y 값들이 1보다 작은 포워드 맵핑 함수 기울기를 사용하여 포워드 맵핑되었을 때 QP 값을 증가시키는 것이다.
일 실시 형태에서, 함수(f)는 다음과 같이 정의될 수 있다:
f(Qp, avgY) = Qp - round(6* Log2 (fwpMappingSlope(invMapfwd(avgY))))
여기서, fwpMappingSlope(Y)는 값 Y에서의 루마 포워드 맵핑 함수의 기울기에 대응하고, invMapfwd은 함수 Mapfwd의 역에 근사하는 함수에 대응한다. i 번째 범위 간격에 속하는 값 Y, [ Yi, Yi+1 - 1 ] 내의 Y에 대해, fwpMappingSlope(Y)는 lumaMapTable[ i ]와 동일하다. Log2(x)는 밑이 2인 로그 함수이고, round(x)는 x에 가장 가까운 정수이다.
VTM에서, fwpMappingSlope(invMapfwd(avgY))는 (1 / chromaScaleTable[ idx(avgY) ]), 즉, (1 / invScale)과 동등하다는 것에 또한 유의해야 한다.
현재 VDPU에 이웃하는 루마 샘플들로부터 도출되는 avgY를 사용하는 대신에, 크로마 블록에 가까운 또는 병치된 루마 샘플들의 루마 대표 값 refValY이 대신 사용될 수 있다. 예를 들어,
Figure pct00026
refValY는 크로마 블록의 병치된 루마 샘플들, 또는 이들 중 일부(예를 들어, 4개 중 1개, 또는 병치된 루마 블록의 상단 좌측 샘플, 또는 병치된 루마 블록의 중심에 있는 샘플)의 평균 값과 동일하거나; 또는
Figure pct00027
refValY는 현재 VDPU 루마 샘플들, 또는 그들 중 일부(예를 들어, 4개 중 1개, 또는 VDPU의 상단 좌측 샘플, 또는 VDPU의 중심에 있는 샘플)의 평균 값과 동일하다.
일 실시 형태에서, 함수(f)는 다음과 같이 정의될 수 있다:
f(Qp, refValY) = Qp - round(6* Log2 (fwpMappingSlope(invMapfwd(refValY))))
다른 실시 형태에서, 함수(f)는 다음과 같이 정의된다:
f(Qp, invScale) = Qp - round(6* Log2 (1 / invScale)) = Qp + round(6* Log2 (invScale))
실시예 2
다른 예시적인 실시 형태에서, qPcIdx의 값은 크로마 잔차 스케일링 인자의 값에, 또는 avgY의 값에 기초하여 보정된다.
역 양자화 및 역 크로마 잔차 스케일링 프로세스들이 도 9에 또한 도시된, 다음의 단계들에 의해 달성된다:
단계(601):
Figure pct00028
단계(401): QpY의 도출
Figure pct00029
단계(501)(예컨대, 도 2 참조): avgY의 도출
Figure pct00030
단계(502)(예컨대, 도 2 참조): invScale를 도출
o invScale = chromaScaleTable[ idx(avgY) ]
Figure pct00031
단계(402): qPiChroma의 도출
o qPiChroma = Clip3(-QpBdOffsetC, 63, QpY)
Figure pct00032
단계(403): qPcIdx의 도출
o qPcIdx = ChromaQpTable[ cIdx - 1 ][ qPiChroma ]
Figure pct00033
보정 단계(702):
o qP cIdx = f(qP cIdx , invScale) 또는 qP cIdx = f(qP cIdx , avgY)
Figure pct00034
단계(404): QPCcIdx의 도출
o QPCcIdx = Clip3(-QpBdOffsetC, 63, qPcIdx + pps_cb_qp_offset + slice_cb_qp_offset +CuQpOffsetCb) + QpBdOffsetC
단계(302)(예컨대, 도 2 참조):
Figure pct00035
단계(501): avgY의 도출
Figure pct00036
단계(502): invScale를 도출
o invScale = chromaScaleTable[ idx(avgY) ]
따라서, 도 9는 단계(701) 또는 단계(702) 중 어느 하나인, 하나의 단계의 차이를 갖는 상기 실시예 1 또는 실시예 2에 따른 수정된 프로세스를 예시한다. 그들 중 하나만이 구현예 선택에 따라 사용되어야 한다.
실시 형태들 - 크로마 잔차 스케일링 인자를 도출할 때 보정이 적용됨
이들 실시 형태들에서, (예컨대, 도 2 및 도 8의) 역 크로마 잔차 스케일링 도출의 단계(302)는 도 10 및 도 11에 도시된 바와 같이, 보정에 의한 역 크로마 잔차 스케일링 도출의 단계(602)에 의해 수정/대체된다.
실시예 1:
하나의 예시적인 실시 형태에서, invScale의 값은, 크로마 블록의 병치된 루마 샘플들에 사용되는 루마 QP에 의존하지 않는, QPref로 표기된 루마 QP 값의 값에 기초하여 보정된다.
예를 들어, QPref는 슬라이스, SliceQpY에 대해, 또는 타일에 대해 또는 브릭에 대해 정의된 루마 QP이다.
다른 예에서, QPref는 이전 양자화 그룹의 마지막 루마 블록의 루마 QP로부터 도출된다.
다른 예에서, QPref는 현재 VDPU의 CRS 역 스케일링 값을 도출하는 데 사용된 루마 샘플들에 대해 사용되는 루마 QP 값들로부터 도출된다.
변형예에서, QPref는 인코더에서 선택되고, 스트림에서, SPS, PPS, APS, 슬라이스 헤더, 타일 헤더, 브릭 헤더 또는 CTU 레벨에서 코딩된다. 이어서, 그것은 인코더에서 그리고 디코더에서 스케일링 및 역 스케일링 인자들을 도출하는 데 사용된다. QPref는, 예를 들어, 미리정의된 오프셋이 추가되어 있는, 각각의 인트라 기간에 발생하는 I-슬라이스의 슬라이스 루마 QP SliceQpY로 설정될 수 있다:
QPref = SliceQpY + QPoffset
QPoffset의 전형적인 값들은 0 내지 5이다.
역 양자화 및 역 크로마 잔차 스케일링 프로세스들이 도 11에 예시된 바와 같은, 다음의 단계들에 의해 달성된다. VVC 프로세스의 이전 버전과 비교한 변화들이 하기에 밑줄로 보여진다.
단계(301)
Figure pct00037
단계(401): QPY의 도출
Figure pct00038
단계(402): qPiChroma의 도출
o qPiChroma = Clip3(-QpBdOffsetC, 63, QPY)
Figure pct00039
단계(403): qPcIdx의 도출
o qPcIdx = ChromaQpTable[ cIdx - 1 ][ qPiChroma ]
Figure pct00040
단계(404): QPCcIdx의 도출
o QPCcIdx = Clip3(-QpBdOffsetC, 63, qPcIdx + pps_cb_qp_offset + slice_cb_qp_offset +CuQpOffsetCb) + QpBdOffsetC
단계(602)
Figure pct00041
단계(501): avgY의 도출
Figure pct00042
단계(502): invScale를 도출
o invScale = chromaScaleTable[ idx(avgY) ]
Figure pct00043
보정 단계(801):
o invScale = invScale * g( invScale , QP ref )
함수(g)의 예들
함수(g)의 구성은 다음의 추론에 기초한다.
qPcIdx는 다음과 같이 도출되었다:
qPcIdx = ChromaQpTable[ cIdx - 1 ][ QpY ]
(클리핑의 효과를 무시하는 경우(단계 402)).
그러나, 크로마 스케일링 값을 도출하기 위해 사용되는 루마 신호는 포워드 맵핑되었으며, 이는 스케일링과 동등하다. 전형적으로, 루마 스케일링은 fwpMappingSlope(invMapfwd(avgY))(이는 lumaMapTable[ idx(avgY) ]와 동등함)로서 근사화될 수 있다.
그것은 QpY가 (QpY - dQpY)로서 보정되었어야 함을 의미하고, 여기서
dQpY = 6*Log2(fwpMappingSlope(invMapfwd(avgY)))
Figure pct00044
6*Log2(lumaMapTable[ idx(avgY) ])이고,
이는 또한, VVC 사양에서 inScale = fwpMappingSlope(invMapfwd(avgY))이기 때문에, (- 6*Log2(inScale))에 의해 근사화될 수 있다.
그것은 또한, 실제 qPcIdx가 다음과 같이 도출되었어야 함을 의미한다(단순성을 위해, 크로마 컴포넌트와 관련된 첫 번째 테이블 인덱스가 제거되었음):
qPcIdx = ChromaQpTable[ QpY - dQpY ]
그것은, 다음에 비례하는 인자만큼 크로마 신호를 역 양자화하는 대신에,
2^(ChromaQpTable[ QpY ] / 6)
역 양자화 인자가 다음에 비례되었어야 함을 의미한다:
2^(ChromaQpTable[ QpY - dQpY ] / 6)
결과적으로, 스케일링 인자는 다음에 비례되었어야 한다:
2^(ChromaQpTable[ QpY - dQpY ] / 6) / 2^(ChromaQpTable[ QpY ] / 6)
Figure pct00045
2^((ChromaQpTable[ QpY - dQpY ] - ChromaQpTable[ QpY ]) / 6)
또는 동등하게는, 역 스케일링 인자가
2^((ChromaQpTable[ QpY ] - ChromaQpTable[ QpY - dQpY ]) / 6)에 비례되었어야 한다.
일 실시 형태에서, 스케일링/역 스케일링 인자들은 다음의 값들로 명시적으로 설정된다:
scale = 2^((ChromaQpTable[ QpY - round(dQpY) ] - ChromaQpTable[ QpY ]) / 6)
invScale = 2^((ChromaQpTable[ QpY ]) / 6 - ChromaQpTable[ QpY - round(dQpY) ])
dQpY가 정수 값이 아닐 수 있기 때문에 반올림이 요구된다.
대안적인 구현예에서, 인자들은 다음과 같이 선형 보간을 사용하여 계산된다:
Qp0 = ChromaQpTable[ QpY - floor(dQpY) ]
Qp1 = ChromaQpTable[ QpY - floor(dQpY) + 1 ]
Frac = dQpY - floor(dQpY)
QPmodif = (1 - Frac) * Qp0 + Frac * Qp1
deltaQP = QPmodif - ChromaQpTable[ QpY ]
scale = 2^(- deltaQP / 6)
invScale = 2^(deltaQP / 6)
여기서, floor(x)는 x 이하의 가장 큰 정수이다.
이들 함수들의 근사치들이 사용될 수 있다.
예를 들어, 근사치를 고려하면:
ChromaQpTable[ QpY - dQpY ]
Figure pct00046
ChromaQpTable[ QpY ] - dQpY * ChromaQpTable'[ QpY]
여기서, ChromaQpTable'는 룩업 테이블 ChromaQpTable에 의해 근사화된 함수의 도출을 근사화하는 함수이고,
스케일링/역 스케일링 인자들은 다음의 값들로 명시적으로 설정된다:
invScale = 2^(- dQpY * ChromaQpTable'[ QpY ] / 6)
scale = 2^(dQpY * ChromaQpTable'[ QpY ] / 6)
ChromaQpTable'[ QpY ] = 1의 경우, 이것은 다음으로 이어진다는 것에 유의한다:
invScale = 1 / lumaMapTable[ idx(avgY) ]
scale = lumaMapTable[ idx(avgY) ]
이는 invScale 및 scale을 도출하는 이전의 VTM 방식이다.
대부분의 시간 동안, QPY가 QPref에 상대적으로 가깝다고 간주되는 경우, QPY 크로마 블록의 병치된 루마 샘플들과 관련되지 않는 QPref에 의해 대체될 수 있다. 이러한 근사화는 전술된 함수(g)의 변형들에 적용될 수 있다.
일 실시 형태에서, 함수(g)는 다음과 같이 정의된다:
g(invScale, Qpref) = 2^((ChromaQpTable[ Qpref - dQpY ] - ChromaQpTable[ Qpref ]) / 6)
일 실시 형태에서, dQpY = 6*Log2(lumaMapTable[ idx(avgY) ]이다.
일 실시 형태에서, dQpY = - 6*Log2(chromaScaleTable[ idx(avgY) ]이다.
다른 실시 형태에서, 함수(g)는 다음과 같이 정의된다:
g(invScale, Qpref) = 2^(- slopeChMapTable * dQpY / 6)
여기서, slopeChMapTable은, 예를 들어 다음과 같이 도출되는 주어진 파라미터이다:
slopeChMapTable = (chromaScaleTable[QP1] - QP1) - (chromaScaleTable[QP0] - QP0) / (QP1 - QP0)
이때, 예를 들어, QP0 = 20, QP1 = 50, 또는 QP0 = Qpref - K, QP1 = Qpref + K이고, K는 미리정의된 파라미터이다.
다른 실시 형태에서, 함수(g)는 다음과 같이 정의된다:
g(invScale, Qpref) = lumaMapTable[ idx(avgY) ] ^ slopeChMapTable
invScale = chromaScaleTable[ idx(avgY) ]
Figure pct00047
1 / lumaMapTable[ idx(avgY) ]임이 고려되는 경우.
다른 실시 형태에서, 단계들(502, 801)은 하나의 단일 단계로 종합될 수 있어서,
invScale = chromaScaleTable[ idx(avgY) ] ^ (1 - slopeChMapTable)이도록 한다.
또 다른 실시 형태에서, 보정은 완전한 chromaScaleTable에 한 번 수행된다. 예를 들어, 표의 각각의 요소는 다음과 같이 보정된다:
chromaScaleTable[ i ] = chromaScaleTable[ i ] ^ (1 - slopeChMapTable)
도 11의 블록도는, 위에서 개시된 실시 형태들에 따른 도 2의 수정된 블록도(602)를 도시하는데, 이때 도 11의 단계(801)가 추가되어 있다.
일 실시 형태에서, 함수(g)에서 avgY를 사용하는 대신, 크로마 블록에 가까운 또는 병치된 루마 샘플들의 루마 대표 값 refValY가 사용될 수 있다. 예를 들어:
Figure pct00048
refValY는 크로마 블록의 병치된 루마 샘플들, 또는 이들 중 일부(예를 들어, 4개 중 1개, 또는 병치된 루마 블록의 상단 좌측 샘플, 또는 병치된 루마 블록의 중심에 있는 샘플)의 평균 값과 동일하거나; 또는
Figure pct00049
refValY는 현재 VDPU 루마 샘플들, 또는 그들 중 일부(예를 들어, 4개 중 1개, 또는 VDPU의 상단 좌측 샘플, 또는 VDPU의 중심에 있는 샘플)의 평균 값과 동일하다.
가능하게는 여러 개의 크로마 QP 표들(크로마 컴포넌트 당 하나)이 있기 때문에, 일 실시 형태에서, 하나의 신택스 요소(예컨대, referencen_qp_table_for_chroma으로 명명됨)가, 그들 표들 중 어느 것이 크로마 스케일링 표를 도출하거나 또는 보정하는 데 사용되는지를 나타내도록 시그널링된다. 신택스 요소는, 예를 들어 SPS에 또는 슬라이스 헤더에 삽입될 수 있고, 0 내지 2의 값들을 취할 수 있다. 전술된 프로세스들은 크로마 QP 표 ChromaQpTable[ reference_qp_table_for_chroma ]를 사용하여 적용된다.
표 chromaScaleTable의 보정 파라미터들의 명시적 시그널링을 갖는 실시예들
다른 실시 형태에서, 크로마 스케일링 표(chromaScaleTable)의 보정 파라미터들은 비트스트림에서 시그널링된다. 예를 들어, chromaScaleTable과 동일한 크기(N)의, 1개 내지 3개의 보정 표들 chromaScaleCorrectionTable[ cIdx - 1 ]이 시그널링된다.
각각의 컴포넌트 cIdx에 대해, 크로마 스케일링 표 chromaScaleTable[ cIdx - 1 ]은 표 lumaMapTable에 기초하여 VVC에서와 동일한 방식으로 초기화된다. 예를 들어:
i=0 내지 (N - 1)에 대해,
lumaMapTable[ i ]가 0과 상이한 경우, chromaScaleTable[ cIdx - 1 ][ i ] = 1 / lumaMapTable[ i ]이고,
lumaMapTable[ i ]가 0과 동일한 경우, chromaScaleTable[ cIdx - 1 ][ i ] = 1이다.
보정은 다음과 같이 수행된다:
i=0 내지 (N - 1)에 대해,
chromaScaleTable[ cIdx - 1 ][ i ] = chromaScaleTable[ cIdx - 1 ][ i ] * chromaScaleCorrectionTable[ cIdx - 1 ][ i ]
일 실시 형태에서, 하이 레벨 플래그 (chroma_res_scaling_correction_flag)가 추가되어, 보정이 활성화되는지 또는 아닌지를 나타낸다.
슬라이스 레벨에서 삽입된 새로운 신택스의 일례가 하기 표 5에 제공된다. 이러한 예에서, 최대 3개의 보정 표들이 시그널링되는데, 각각의 크로마 컴포넌트에 대해 하나가 시그널링된다. 신택스는 또한, SPS, PPS, 타일 헤더, 브릭 헤더, 또는 APS와 같은 하이 레벨 구조에 삽입될 수 있다.
Figure pct00050
chroma_res_scaling_correction_val[ i ][ j ]가 정수로서 코딩된다는 것, 및 K개의 비트들에 대해 중립 값이 2K(K는 미리정의된 파라미터임)와 동일하다는 것을 고려하면, chromaScaleCorrectionTable[ i ] [ j ]는 다음과 같이 도출되거나 또는 근사화될 수 있다:
i=0 내지 (N - 1)에 대해,
chromaScaleCorrectionTable[ i ] [ j ] = chroma_res_scaling_correction_val[ i ] [ j ] / 2^K
일 실시 형태에서, same_crs_table_for_chroma는 시그널링되지 않지만 same_qp_table_for_chroma와 동일한 값인 것으로 추론된다.
대안적인 실시 형태에서, 스트림에 시그널링되는 보정 값들은 역 스케일링 도메인에서가 아니라, 스케일링 도메인에서 정의된다. 이것은 유리하게는 코딩된 값들의 범위를 제한할 수 있게 한다. 크로마 잔차 코딩 보정 표를 코딩하기 위한 관련 신택스의 일례가 하기에 제공된다. VVC 신택스의 버전과 비교하여 새로운 신택스는 APS에 포함된 구조 lmcs_data()에 밑줄이 그어져 있다.
Figure pct00051
추가된 신택스 요소들의 시맨틱들이 하기에 제공된다.
0과 동일한 lmcs_delta_crs_coded_flag는, 신택스 요소들 lmcs_delta_crs_prec_minus1, lmcs_delta_abs_crs[ i ] 및 lmcs_delta_abs_crs[ i ](이때 i = lmcs_min_bin_idx..LmcsMaxBinIdx)가 존재하지 않는다는 것을 특정한다. 1과 동일한 lmcs_delta_crs_coded_flag는, 이들 신택스 요소들이 존재한다는 것을 특정한다.
lmcs_delta_crs_prec_minus1 플러스 1은, 신택스 lmcs_delta_abs_crs[ i ]의 표현에 사용되는 비트들의 수를 특정한다. lmcs_delta_crs_prec_minus1의 값은 0 내지 BitDepthY - 2를 포함하는 범위 내에 있을 것이다. lmcs_delta_crs_prec_minus1이 존재하지 않는 경우, 그것은 0과 동일하게 설정된다.
lmcs_delta_abs_crs[ i ]는 크로마 잔차 스케일링의 i 번째 보정 값에 대한 절대 코드워드 값을 특정한다. lmcs_delta_abs_crs[ i ]가 존재하지 않는 경우, 그것은 0과 동일하게 설정된다.
lmcs_delta_sign_crs_flag[ i ]는 변수 lmcsDeltaCrs[ i ]의 부호를 특정한다. lmcs_delta_sign_crs_flag[ i ]가 존재하지 않은 경우, 그것은 0과 동일하게 설정된다.
변수 lmcsDeltaCrs[ i ](이때, i = lmcs_min_bin_idx..LmcsMaxBinIdx)는 다음과 같이 도출된다:
lmcsDeltaCrs[ i ] = (1 - 2 * lmcs_delta_sign_crs_flag[ i ]) * lmcs_delta_abs_crs[ i ]
또한, VVC 사양의 버전으로부터의 다음의 텍스트가 수정될 것이다(변화들은 밑줄 그어짐):
변수 ChromaScaleCoeff[ i ](이때, i = 0... 15)는 다음과 같이 도출된다:
Figure pct00052
다음과 같이 계산 오버플로우를 회피하기 위해 보정 값에 대해 제약이 설정된다.
비트스트림 부합의 요건은, (lmcsCW[ i ] + lmcsDeltaCrs[ i ])이 (OrgCW>>3) 내지 (OrgCW<<3 - 1)를 포함하는 범위 내에 있다는 것이다.
보정 항 lmcsDeltaCrs[ i ]가, VVC 사양에서 루마 맵핑 함수의 i 번째 세그먼트의 기울기에 대응하는 항 lmcsCW[ i ]에 추가된다는 것이 관찰될 수 있다. OrgCW는 VVC 사양에서, 스케일링의 중립 값을 나타낸다. lmcs_min_bin_idx, LmcsMaxBinIdx는, LMCS 표들에 관련된 LMCS 신택스 요소들이 시그널링되는 최소 및 최대 인덱스들을 나타낸다.
변형예에서, 다수의 요소들로 만들어진 보정 표를 시그널링하는 것을 회피하기 위해, 그리고 그의 관련된 코딩 비용을 제한하기 위해, CRS 표에 적용하는 1개 또는 2개의 보정 파라미터들만이 시그널링된다. 예를 들어, 오프셋 값 "offset" 및 수축 값 "shrink"이 시그널링된다(여기에서는 부동 소수점 값으로 간주되지만, 실제 구현예들에서는 고정 소수점 표현이 사용될 것임). 표는 오프셋 및 수축을 사용하여 다음과 같이 수정된다:
Figure pct00053
대안적으로, 또 다른 변형예에서, 프로세스는 다음과 같이 수정된다(이때, 파라미터 오프셋은 lmcsDeltaCrs로 표기됨):
Figure pct00054
계산 오버플로우를 회피하기 위한 보정 값에 대해 설정된 제약은 다음과 같이 공식화된다: 비트스트림 부합의 요건은, lmcsCW[ i ]가 0과 동일하지 않은 경우, (lmcsCW[ i ] + lmcsDeltaCrs)가 (OrgCW>>3) 내지 (OrgCW<<3 - 1)를 포함하는 범위 내에 있다는 것이다.
추가적인 제약이 lmcsDeltaCrs의 범위에 부과될 수 있다. 예를 들어, lmcsDeltaCrs는 범위 [-7, 7] 내에 있도록 제한될 수 있다. 이것은, 예컨대 OrgCW=64인 경우 (64-7)/64 = 0.890625 내지 (64+7)/64 = 1.109375의 스케일 범위를 초래한다. 이러한 범위에 걸쳐, 스케일링은 크로마의 델타 QP에 의해 제어될 수 있다.
단일 오프셋을 코딩하는 경우에 대한 신택스의 일례가 하기 표에 묘사된다(새로운 추가된 신택스는 밑줄이 그어져 있음).
Figure pct00055
관련된 시맨틱들의 일례가 하기에 제공된다.
lmcs_delta_abs_crs는 변수 lmcsDeltaCrs의 절대 코드워드 값을 특정한다. lmcs_delta_abs_crs의 값은 0 과 7을 포함하는 범위 내에 있을 것이다. 존재하지 않을 때, lmcs_delta_abs_crs는 0과 동일하게 설정될 것이다.
lmcs_delta_sign_crs_flag은 변수 lmcsDeltaCrs의 부호를 특정한다. 존재하지 않을 때, lmcs_delta_sign_crs_flag는 0과 동일하게 설정될 것이다.
변수 lmcsDeltaCrs는 다음과 같이 도출된다:
lmcsDeltaCrs = (1 - 2 * lmcs_delta_sign_crs_flag) * lmcs_delta_abs_crs
비트스트림 부합의 요건은, lmcsCW[ i ]가 0과 동일하지 않은 경우, (lmcsCW[ i ] + lmcsDeltaCrs)가 (OrgCW>>3) 내지 (OrgCW<<3 - 1)를 포함하는 범위 내에 있다는 것이다.
변수 ChromaScaleCoeff[ i ](이때, i = 0…15)는 다음과 같이 도출된다:
Figure pct00056
도 13의 블록도는 상기 개시된 실시 형태들에 따른 도 11의 크로마 잔차 스케일링 파라미터들의 보정 단계(801)의 다른 예를 도시하고, 여기서 lmcsDeltaCrs로 표기된 파라미터 오프셋은 스케일링 도메인에서 크로마 잔차 스케일링의 보정 값으로서 사용된다.
단계(802)에서, 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값 lmcsDeltaCrs가 루마 샘플들의 예측에 적용된 루마 포워드 맵핑 함수의 i 번째 세그먼트의 기울기를 나타내는 루마 맵핑 파라미터들 lmcsCW[ i ]에 추가된다. 단계(802)는 보정된 루마 맵핑 기울기 값들(lmcsCW[ i ] + lmcsDeltaCrs)을 초래한다.
특정 변형예에 따르면, 오프셋 파라미터 lmcsDeltaCrs는 보정 값들의 다른 변형(예를 들어, QPref)으로서 SPS, PPS, APS, 슬라이스 헤더, 타일 헤더, 브릭 헤더 또는 CTU 레벨 중 임의의 것에서, 스트림에 시그널링된다. 유리하게는, 오프셋 파라미터 lmcsDeltaCrs가 적응 파라미터 세트 APS에서 LMCS 파라미터들과 함께 시그널링된다.
다른 특정 변형예에 따르면, 단계(803)에서, 보정된 루마 맵핑 기울기 값들이 계산 오버플로우를 회피하기 위해 제한된다. 예를 들어, lmcsCW[ i ]가 0과 동일하지 않은 경우, 보정된 루마 맵핑 기울기 값 (lmcsCW[ i ] + lmcsDeltaCrs)은 (OrgCW>>3) 내지 (OrgCW<<3 - 1)을 포함하는 범위 내에 있고, 여기서 OrgCW는 스케일링의 중립 값을 나타낸다.
또 다른 변형예에서, 오프셋 파라미터 lmcsDeltaCrs는 범위 [-7, 7] 내에 있는데, 이는, 이전에 입증된 바와 같이, 이러한 범위 밖에서는, 크로마 잔차 스케일링의 입도가 크로마의 델타 QP에 의해 제어가능하기 때문이다.
단계(804)에서, 크로마 잔차 스케일링 파라미터들 ChromaScaleCoeff[ i ]는 보정된 루마 맵핑 기울기 값들을 다음과 같이 반전시킴으로써 도출된다:
Figure pct00057
이어서, 도 6의 인코딩 방법으로 전술된 바와 같이, CRS 프로세싱(104)이 크로마 잔차들에 적용되어, 인코딩 방법에서 추가로 프로세싱하기 위해 스케일링된 크로마 잔차들을 초래한다. 유사하게, 인코딩 또는 디코딩 방법 내에서, 역 CRS 프로세싱, 즉 도 6의 (109) 또는 도 7의 (205)가 디코딩된 크로마 잔차들에 적용되어, 최적의 정확도로 역 스케일링된 디코딩된 크로마 잔차들을 획득한다. 일 실시 형태에 따르면, 값 avgY로부터, 크로마 스케일링 파라미터들에서의 인덱스(idx)가 계산된다. avgY는 포워드 맵핑된 도메인에 있는 루마 값들로부터 도출된다. 따라서, 인덱스(idx)는, avgY가 간격 [Mapfwd(Yidx), Mapfwd(Yidx+1 - 1)]에 속하도록 하는 값으로서 계산된다. 이러한 VPDU 내의 모든 크로마 블록들에 대한 크로마 예측 잔차 샘플들은 (인코더에서) 스케일링 인자에 의해 스케일링되거나(scale = (1 / ChromaScaleCoeff[ idx ])) 또는 (디코더에서) 스케일링 인자에 의해 역 스케일링된다(invScale = ChromaScaleCoeff[ idx ]).
특정 변형예에서, 단계들(502, 801)은, invScale = OrgCW * (1 << 11) / (lmcsCW[ idx(avgY) ] + lmcsDeltaCrs)이도록 하나의 단일 단계로 종합된다.
다른 변형예에서, 보정은 ChromaScaleCoeff[ i ]를 초래하는 크로마 잔차 스케일링 파라미터들에 대해 한 번 수행되고, 뒤이어 다음의 도출 단계가 이어진다:
invScale = ChromaScaleCoeff[ idx(avgY) ].
상기의 프로세스의 또 다른 실시 형태는 다음과 같다.
ChromaScaleCoeff[ i ]의 초기 생성은 VVC 사양의 버전과 비교하여 변경되지 않는다:
if (lmcsCW[ i ] = = 0)
ChromaScaleCoeff[ i ] = (1 << 11)
else
ChromaScaleCoeff[ i ] = (OrgCW * (1 << 11) / lmcsCW[ i ])
크로마 블록의 크로마 잔차 샘플의 스케일링을 적용할 때, 오프셋이 추가된다(VVC 사양의 버전과 비교한 변화는 밑줄 그어짐):
varScale = ChromaScaleCoeff[ idxYInv ] + lmcsDeltaCrs * K
idxYInv는, 섹션 8.7.5.3 "Picture reconstruction with luma dependent chroma residual scaling process for chroma samples"에서, VVC 사양에 의해 특정된 바와 같이 도출된, 크로마 블록에 대한 표 ChromaScaleCoeff에서의 인덱스이다. K는 오프셋 파라미터 lmcsDeltaCrs를 시그널링하는 데 필요한 비트들의 수 B(비트깊이)를 제한할 수 있게 하는 미리정의된 값이다.
물론, 이것은 다음과 같이, 구현예에 따라 표 ChromaScaleCoeff를 수정함으로써 수행될 수 있다.
ChromaScaleCoeff[ i ] = (OrgCW * (1 << 11) / lmcsCW[ i ]) + lmcsDeltaCrs * K
바람직하게, K는 2의 거듭제곱이다. 이러한 변형예에서, lmcsDeltaCrs를 시그널링하기 위한 추천된 비트깊이는 B = 8 / Log2(K)이고, 여기서 Log2(x)는 x의 밑이 2인 로그이다. 이러한 변형예에서, 시그널링은 다음과 같이 약간 수정된다:
Figure pct00058
변형예에서, 파라미터 lmcsDeltaCrs는 비트스트림에서 시그널링되지 않은 미리정의된 값이다. 예를 들어, 변형예에서 lmcsDeltaCrs = 3은 다음의 공식을 적용한다:
ChromaScaleCoeff[ i ] = OrgCW * (1 << 11) / (lmcsCW[ i ] + lmcsDeltaCrs)
여기서, 프로세스는 부동 소수점 계산들을 고려하여 기술된다. 정수/고정 소수점 계산들에 대한 그의 적응은 간단하고, 기술되지 않는다.
이러한 프로세스는 인코더 측 및 디코더 측 둘 모두에서 적용된다. 추가로, 상기의 마지막 동작 전에, modifiedCW가 (OrgCW>>3) 내지 (OrgCW<<3 - 1)를 포함하는 것 사이에서 클리핑될 수 있다.
상기의 설명은 크로마 잔차 역 스케일링 인자의 도출 또는 스케일에 관한 것이다. 크로마 잔차를 스케일링하기 위해 인코더에서 사용된 크로마 잔차 스케일링 인자는 디코더에서 사용된 크로마 잔차 역 스케일링 인자(invScale)의 역이다. 따라서, 그의 도출은 간단하다(scale = 1 / invScale).
도 12는 다양한 태양들 및 실시 형태들이 구현되는 시스템(1200)의 일례의 블록도를 예시한다. 시스템(1200)은 하기에 기술되는 다양한 컴포넌트들을 포함하는 디바이스로서 구현될 수 있고, 본 문헌에 기술된 태양들 중 하나 이상을 수행하도록 구성된다. 그러한 디바이스들의 예들은 다양한 전자 디바이스들, 예컨대 개인용 컴퓨터들, 랩톱 컴퓨터들, 스마트폰들, 태블릿 컴퓨터들, 디지털 멀티미디어 셋톱 박스들, 디지털 텔레비전 수신기들, 개인용 비디오 레코딩 시스템들, 커넥티드 가전(connected home appliance)들, 및 서버들을 포함하지만, 이들로 제한되지 않는다. 시스템(1200)의 요소들은 단일 집적 회로, 다수의 IC들, 및/또는 별개의 컴포넌트들에서, 단독으로 또는 조합되어 구현될 수 있다. 예를 들어, 적어도 하나의 실시 형태에서, 시스템(1200)의 프로세싱 및 인코더/디코더 요소들은 다수의 IC들 및/또는 별개의 컴포넌트들에 걸쳐 분산된다. 다양한 실시 형태들에서, 시스템(1200)은, 예를 들어, 통신 버스를 통해 또는 전용 입력 및/또는 출력 포트들을 통해, 다른 유사한 시스템들에 또는 다른 전자 디바이스들에 통신가능하게 커플링된다. 다양한 실시 형태들에서, 시스템(1200)은 본 문헌에 기술된 태양들 중 하나 이상을 구현하도록 구성된다.
시스템(1200)은, 예를 들어 본 문헌에 기술된 다양한 태양들을 구현하기 위해 그 내부에 로딩된 명령어들을 실행하도록 구성된 적어도 하나의 프로세서(1210)를 포함한다. 프로세서(1210)는 임베딩된 메모리, 입력 출력 인터페이스, 및 본 기술분야에 알려진 바와 같은 다양한 다른 회로부들을 포함할 수 있다. 시스템(1200)은 적어도 하나의 메모리(1220)(예컨대, 휘발성 메모리 디바이스 및/또는 비휘발성 메모리 디바이스)를 포함한다. 시스템(1200)은 저장 디바이스(1240)를 포함하고, 이는 EEPROM, ROM, PROM, RAM, DRAM, SRAM, 플래시, 자기 디스크 드라이브, 및/또는 광학 디스크 드라이브를 포함하지만 이들로 제한되지 않는 비휘발성 메모리 및/또는 휘발성 메모리를 포함할 수 있다. 저장 디바이스(1240)는, 비제한적인 예로서 내부 저장 디바이스, 부착된 저장 디바이스, 및/또는 네트워크 액세스가능 저장 디바이스를 포함할 수 있다.
시스템(1200)은, 예를 들어, 인코딩된 비디오 또는 디코딩된 비디오를 제공하기 위해 데이터를 프로세싱하도록 구성된 인코더/디코더 모듈(1230)을 포함하고, 인코더/디코더 모듈(1230)은 그 자신의 프로세서 및 메모리를 포함할 수 있다. 인코더/디코더 모듈(1230)은 인코딩 및/또는 디코딩 기능들을 수행하기 위해 디바이스에 포함될 수 있는 모듈(들)을 나타낸다. 알려진 바와 같이, 디바이스는 인코딩 및 디코딩 모듈들 중 하나 또는 둘 모두를 포함할 수 있다. 추가로, 인코더/디코더 모듈(1230)은 시스템(1200)의 별개의 요소로서 구현될 수 있거나, 또는 당업자에게 알려진 바와 같은 하드웨어 및 소프트웨어의 조합으로서 프로세서(1210) 내에 통합될 수 있다.
본 문헌에 기술된 다양한 태양들을 수행하기 위해 프로세서(1210) 또는 인코더/디코더(1230) 상에 로딩될 프로그램 코드는 저장 디바이스(1240)에 저장되고, 후속적으로 프로세서(1210)에 의한 실행을 위해 메모리(1220) 상에 로딩될 수 있다. 다양한 실시 형태들에 따르면, 프로세서(1210), 메모리(1220), 저장 디바이스(1240), 및 인코더/디코더 모듈(1230) 중 하나 이상은 본 문헌에 기술된 프로세스들의 수행 동안 다양한 항목들 중 하나 이상을 저장할 수 있다. 그러한 저장된 항목들은 입력 비디오, 디코딩된 비디오 또는 디코딩된 비디오의 일부분들, 비트스트림, 매트릭스들, 변수들, 및 방정식들, 수학식들, 동작들, 및 동작 로직의 프로세싱으로부터의 중간 또는 최종 결과들을 포함할 수 있지만, 이들로 제한되지 않는다.
여러 실시 형태들에서, 프로세서(1210) 및/또는 인코더/디코더 모듈(1230) 내부의 메모리는 명령어들을 저장하고, 인코딩 또는 디코딩 동안 필요로 되는 프로세싱을 위한 작업 메모리를 제공하는 데 사용될 수 있다. 그러나, 다른 실시 형태들에서, 프로세싱 디바이스(예를 들어, 프로세싱 디바이스는 프로세서(1210) 또는 인코더/디코더 모듈(1230) 중 어느 하나일 수 있음) 외부의 메모리는 이들 기능들 중 하나 이상을 위해 사용될 수 있다. 외부 메모리는 메모리(1220) 및/또는 저장 디바이스(1240), 예를 들어, 동적 휘발성 메모리 및/또는 비휘발성 플래시 메모리일 수 있다. 여러 실시 형태들에서, 외부 비휘발성 플래시 메모리가 텔레비전의 운영 체제를 저장하는 데 사용된다. 적어도 하나의 실시 형태에서, RAM과 같은 고속, 외부 동적 휘발성 메모리는, MPEG-2, HEVC, 또는 VVC(Versatile Video Coding)에 대한 것과 같은, 비디오 코딩 및 디코딩 동작들을 위한 작업 메모리로서 사용된다.
시스템(1200)의 요소들에 대한 입력은 블록(1205)에 나타낸 바와 같이 다양한 입력 디바이스들을 통해 제공될 수 있다. 그러한 입력 디바이스들은 (i) 예를 들어, 브로드캐스터에 의해 무선으로 송신되는 RF 신호를 수신하는 RF 부분, (ii) 복합 입력 단자(Composite input terminal), (iii) USB 입력 단자, 및/또는 (iv) HDMI 입력 단자를 포함하지만, 이들로 제한되지 않는다.
다양한 실시 형태들에서, 블록(1205)의 입력 디바이스들은 본 기술분야에 알려진 바와 같은 연관된 각자의 입력 프로세싱 요소들을 갖는다. 예를 들어, RF 부분은, (i) 원하는 주파수를 선택하고(신호를 선택하는 것, 또는 신호를 주파수들의 대역으로 대역 제한하는 것으로도 지칭됨), (ii) 선택된 신호를 하향 변환하고, (iii) 소정 실시 형태들에서 채널로 지칭될 수 있는 (예를 들어) 신호 주파수 대역을 선택하도록 다시 더 좁은 주파수 대역으로 대역 제한하고, (iv) 하향 변환되고 대역 제한된 신호를 복조하고, (v) 에러 정정을 수행하고, (vi) 원하는 데이터 패킷 스트림을 선택하도록 디멀티플렉싱하기 위해 필요한 요소들과 연관될 수 있다. 다양한 실시 형태들의 RF 부분은 이들 기능들을 수행하기 위한 하나 이상의 요소들, 예를 들어, 주파수 선택기들, 신호 선택기들, 대역 제한기들, 채널 선택기들, 필터들, 하향변환기들, 복조기들, 에러 정정기들, 및 디멀티플렉서들을 포함한다. RF 부분은, 예를 들어, 수신된 신호를 더 낮은 주파수(예를 들어, 중간 주파수 또는 기저대역 근접 주파수(near-baseband frequency))로 또는 기저대역으로 하향 변환하는 것을 포함하여, 다양한 이들 기능들을 수행하는 튜너를 포함할 수 있다. 하나의 셋톱 박스 실시 형태에서, RF 부분 및 그의 연관된 입력 프로세싱 요소는 유선(예를 들어, 케이블) 매체를 통해 송신된 RF 신호를 수신하고, 필터링, 하향변환 및 다시 원하는 주파수 대역으로의 필터링에 의해 주파수 선택을 수행한다. 다양한 실시 형태들은 전술된(및 다른) 요소들의 순서를 재배열하고/하거나, 이들 요소들 중 일부를 제거하고/하거나, 유사한 또는 상이한 기능들을 수행하는 다른 요소들을 추가한다. 요소들을 추가하는 것은 기존 요소들 사이에 요소들을 삽입하는 것, 예를 들어, 증폭기들 및 아날로그-대-디지털 변환기를 삽입하는 것을 포함할 수 있다. 다양한 실시 형태들에서, RF 부분은 안테나를 포함한다.
추가로, USB 및/또는 HDMI 단자들은 USB 및/또는 HDMI 접속들을 통해 다른 전자 디바이스들에 시스템(1200)을 접속시키기 위한 각자의 인터페이스 프로세서들을 포함할 수 있다. 입력 프로세싱의 다양한 태양들, 예를 들어, 리드 솔로몬(Reed-Solomon) 에러 정정은, 예를 들어, 필요에 따라 별개의 입력 프로세싱 IC 내에서 또는 프로세서(1210) 내에서 구현될 수 있다는 것이 이해되어야 한다. 유사하게, USB 또는 HDMI 인터페이스 프로세싱의 태양들은 필요에 따라 별개의 인터페이스 IC들 내에서 또는 프로세서(1210) 내에서 구현될 수 있다. 복조되고, 에러 정정되고, 디멀티플렉싱된 스트림은, 예를 들어, 프로세서(1210), 및 출력 디바이스 상에 프리젠테이션하기 위해 필요에 따라 데이터 스트림을 프로세싱하도록 메모리 및 저장 요소들과 조합하여 동작하는 인코더/디코더(1230)를 포함하는 다양한 프로세싱 요소들에 제공된다.
시스템(1200)의 다양한 요소들이 통합된 하우징 내에 제공될 수 있다. 통합된 하우징 내에서, 다양한 요소들은 적합한 접속 배열(1140), 예를 들어, I2C 버스, 배선, 및 인쇄 회로 보드들을 포함하는, 본 기술분야에 알려진 바와 같은 내부 버스를 사용하여 상호접속되고, 그 사이에서 데이터를 송신할 수 있다.
시스템(1200)은 통신 채널(1260)을 통해 다른 디바이스들과의 통신을 가능하게 하는 통신 인터페이스(1250)를 포함한다. 통신 인터페이스(1250)는 통신 채널(1260)을 통해 데이터를 송신하고 수신하도록 구성되는 송수신기를 포함할 수 있지만, 이로 제한되지 않는다. 통신 인터페이스(1250)는 모뎀 또는 네트워크 카드를 포함할 수 있지만, 이들로 제한되지 않으며, 통신 채널(1260)은, 예를 들어, 유선 및/또는 무선 매체 내에서 구현될 수 있다.
데이터는, 다양한 실시 형태들에서, IEEE 802.11과 같은 Wi-Fi 네트워크를 사용하여 시스템(1200)으로 스트리밍된다. 이들 실시 형태들의 Wi-Fi 신호는 Wi-Fi 통신들을 위해 적응되는 통신 인터페이스(1250) 및 통신 채널(1260)을 통해 수신된다. 이들 실시 형태들의 통신 채널(1260)은 전형적으로, 스트리밍 애플리케이션들 및 다른 오버더톱(over-the-top) 통신들을 허용하기 위해 인터넷을 포함하는 외부 네트워크들에 대한 액세스를 제공하는 액세스 포인트 또는 라우터에 접속된다. 다른 실시 형태들은 입력 블록(1205)의 HDMI 접속을 통해 데이터를 전달하는 셋톱 박스를 사용하여 스트리밍된 데이터를 시스템(1200)에 제공한다. 또 다른 실시 형태들은 입력 블록(1205)의 RF 접속을 사용하여 스트리밍된 데이터를 시스템(1200)에 제공한다.
시스템(1200)은 디스플레이(1265), 스피커들(1275), 및 다른 주변기기 디바이스들(1285)을 포함하는 다양한 출력 디바이스들에 출력 신호를 제공할 수 있다. 다른 주변기기 디바이스들(1285)은, 실시 형태들의 다양한 예들에서, 독립형 DVR, 디스크 플레이어, 스테레오 시스템, 조명 시스템, 및 시스템(1200)의 출력에 기초하여 기능을 제공하는 다른 디바이스들 중 하나 이상을 포함한다. 다양한 실시 형태들에서, 제어 신호들은 AV.Link, CEC, 또는 사용자 개입으로 또는 사용자 개입 없이 디바이스-대-디바이스 제어를 가능하게 하는 다른 통신 프로토콜들과 같은 시그널링을 사용하여 시스템(1200)과 디스플레이(1265), 스피커들(1275), 또는 다른 주변기기 디바이스들(1285) 사이에서 통신된다. 출력 디바이스들은 각자의 인터페이스들(1260, 1270, 1280)을 통한 전용 접속들을 통해 시스템(1200)에 통신가능하게 커플링될 수 있다. 대안적으로, 출력 디바이스들은 통신 인터페이스(1250)를 통해 통신 채널(1290)을 사용하여 시스템(1200)에 접속될 수 있다. 디스플레이(1265) 및 스피커들(1275)은, 전자 디바이스, 예를 들어, 텔레비전에서 시스템(1200)의 다른 컴포넌트들과 단일 유닛으로 통합될 수 있다. 다양한 실시 형태들에서, 디스플레이 인터페이스(1260)는, 디스플레이 드라이버, 예를 들어 타이밍 제어기(T Con) 칩을 포함한다.
디스플레이(1265) 및 스피커(1275)는 대안적으로, 예를 들어, 입력(1205)의 RF 부분이 별개의 셋톱 박스의 일부인 경우, 다른 컴포넌트들 중 하나 이상과 별개일 수 있다. 디스플레이(1265) 및 스피커들(1275)이 외부 컴포넌트들인 다양한 실시 형태들에서, 출력 신호는, 예를 들어 HDMI 포트들, USB 포트들, 또는 COMP 출력들을 포함하는 전용 출력 접속들을 통해 제공될 수 있다.
본 실시 형태들은 프로세서(1210)에 의해 구현된 컴퓨터 소프트웨어에 의해 또는 하드웨어에 의해, 또는 하드웨어와 소프트웨어의 조합에 의해 수행될 수 있다. 비제한적인 예로서, 실시 형태들은 하나 이상의 집적 회로들에 의해 구현될 수 있다. 메모리(1220)는 기술적 환경에 적절한 임의의 유형일 수 있고, 비제한적인 예들로서, 광학 메모리 디바이스들, 자기 메모리 디바이스들, 반도체 기반 메모리 디바이스들, 고정 메모리, 및 착탈식 메모리와 같은 임의의 적절한 데이터 저장 기술을 사용하여 구현될 수 있다. 프로세서(1210)는 기술적 환경에 적절한 임의의 유형일 수 있고, 비제한적인 예들로서, 마이크로프로세서들, 범용 컴퓨터들, 특수 목적 컴퓨터들, 및 다중 코어 아키텍처에 기반한 프로세서들 중 하나 이상을 포함할 수 있다.
다양한 구현예들이 디코딩을 수반한다. 본 출원에서 사용된 바와 같은 "디코딩"은, 예를 들어, 디스플레이에 적합한 최종 출력을 생성하기 위해 수신된 인코딩된 시퀀스 상에서 수행된 프로세스들의 전부 또는 일부를 포함할 수 있다. 다양한 실시 형태들에서, 그러한 프로세스들은 전형적으로 디코더에 의해 수행된 프로세스들 중 하나 이상의 프로세스들, 예를 들어, 엔트로피 디코딩, 역 양자화, 역 변환, 및 차동 디코딩을 포함한다. 다양한 실시 형태들에서, 그러한 프로세스들은 또한, 또는 대안적으로, 본 출원에서 기술된 다양한 구현예들의 디코더에 의해 수행되는 프로세스들을 포함한다.
추가적인 예들로서, 하나의 실시 형태에서 "디코딩"은 엔트로피 디코딩만을 지칭하고, 다른 실시 형태에서 "디코딩"은 차동 디코딩만을 지칭하고, 또 다른 실시 형태에서 "디코딩"은 엔트로피 디코딩 및 차동 디코딩의 조합을 지칭한다. "디코딩 프로세스"라는 문구가 구체적으로 동작들의 서브세트를 지칭하도록 의도되는지 또는 대체적으로 더 넓은 디코딩 프로세스를 지칭하도록 의도되는지 여부는 구체적인 설명들의 맥락에 기초하여 명백할 것이고, 당업자에 의해 잘 이해될 것으로 여겨진다.
다양한 구현예들이 인코딩을 수반한다. "디코딩"에 관한 상기의 논의와 유사한 방식으로, 본 출원에서 사용된 바와 같은 "디코딩"은 인코딩된 비트스트림을 생성하기 위해, 예를 들어, 입력 비디오 시퀀스 상에서 수행된 프로세스들의 전부 또는 일부를 포함할 수 있다. 다양한 실시 형태들에서, 그러한 프로세스들은 전형적으로 인코더에 의해 수행된 프로세스들 중 하나 이상의 프로세스들, 예를 들어, 파티셔닝, 차동 인코딩, 변환, 양자화, 및 엔트로피 인코딩을 포함한다. 다양한 실시 형태들에서, 그러한 프로세스들은 또한, 또는 대안적으로, 본 출원에서 기술된 다양한 구현예들의 인코더에 의해 수행되는 프로세스들을 포함한다.
추가적인 예들로서, 하나의 실시 형태에서 "인코딩"은 엔트로피 인코딩만을 지칭하고, 다른 실시 형태에서 "인코딩"은 차동 인코딩만을 지칭하고, 또 다른 실시 형태에서 "인코딩"은 차동 인코딩 및 엔트로피 인코딩의 조합을 지칭한다. "인코딩 프로세스"라는 문구가 구체적으로 동작들의 서브세트를 지칭하도록 의도되는지 또는 대체적으로 더 넓은 인코딩 프로세스를 지칭하도록 의도되는지 여부는 구체적인 설명들의 맥락에 기초하여 명백할 것이고, 당업자에 의해 잘 이해될 것으로 여겨진다.
본 명세서에 사용된 바와 같은 신택스 요소들은 설명적 용어(descriptive term)들이라는 것에 유의한다. 그와 같이, 그들은 다른 신택스 요소 이름들의 사용을 배제하지 않는다.
도면이 흐름도로서 제시될 때, 그것은 또한 대응하는 장치의 블록도를 제공한다는 것이 이해되어야 한다. 유사하게, 도면이 블록도로서 제시될 때, 그것은 또한 대응하는 방법/프로세스의 흐름도를 제공한다는 것이 이해되어야 한다.
다양한 실시 형태들은 레이트 왜곡 최적화(rate distortion optimization)를 참조한다. 특히, 인코딩 프로세스 동안, 계산 복잡성의 제약들이 종종 주어지면, 레이트와 왜곡 사이의 균형 또는 트레이드오프가 보통 고려된다. 레이트 왜곡 최적화는 보통, 레이트 및 왜곡의 가중된 합인 레이트 왜곡 함수를 최소화하는 것으로서 공식화된다. 레이트 왜곡 최적화 문제를 해결하기 위한 상이한 접근법들이 존재한다. 예를 들어, 접근법들은, 코딩 및 디코딩 후에 재구성된 신호의 관련된 왜곡 및 그들의 코딩 비용의 완전한 평가와 함께, 모든 고려되는 모드들 또는 코딩 파라미터 값들을 포함한, 모든 인코딩 옵션들의 광범위한 테스팅에 기초할 수 있다. 인코딩 복잡성을 줄이기 위해, 특히 재구성된 것이 아니라 예측 또는 예측 잔차 신호에 기초한 근사화된 왜곡의 계산을 이용하여 더 빠른 접근법들이 또한 사용될 수 있다. 가능한 인코딩 옵션들 중 일부에 대해서만 근사화된 왜곡을, 그리고 다른 인코딩 옵션들에 대해 완전한 왜곡을 사용하는 것과 같은, 이들 2개의 접근법들의 혼합이 또한 사용될 수 있다. 다른 접근법들은 가능한 인코딩 옵션들의 서브세트만을 평가한다. 더 대체적으로, 많은 접근법들은 최적화를 수행하기 위해 다양한 기법들 중 임의의 것을 채용하지만, 최적화가 반드시 코딩 비용 및 관련된 왜곡 둘 모두의 완전한 평가인 것은 아니다.
본 명세서에 기술된 구현예들 및 태양들은, 예를 들어, 방법 또는 프로세스, 장치, 소프트웨어 프로그램, 데이터 스트림 또는 신호로 구현될 수 있다. 단일 형태의 구현예의 맥락에서만 논의되더라도(예를 들어, 방법으로서만 논의됨), 논의된 특징들의 구현예는 또한 다른 형태들(예를 들어, 장치 또는 프로그램)로 구현될 수 있다. 장치는, 예를 들어, 적절한 하드웨어, 소프트웨어, 및 펌웨어로 구현될 수 있다. 방법들은, 예를 들어, 컴퓨터, 마이크로프로세서, 집적 회로, 또는 프로그래밍가능 로직 디바이스를 포함하는, 대체적으로 프로세싱 디바이스들로 지칭되는, 예를 들어, 프로세서에서 구현될 수 있다. 프로세서들은 또한, 예를 들어, 컴퓨터, 셀룰러폰, 휴대용/개인 디지털 어시스턴트("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)의 선택을 포함하도록 의도된다. 이것은, 본 기술분야 및 관련 기술분야의 당업자에게 명백한 바와 같이, 열거된 많은 항목들에 대해 확장될 수 있다.
또한, 본 명세서에서 사용되는 바와 같이, "신호"라는 단어는, 다른 것들 중에서도, 대응하는 디코더에 무언가를 나타내는 것을 지칭한다. 예를 들어, 소정 실시 형태들에서, 인코더는 복수의 파라미터들 중 특정 파라미터를 시그널링한다. 이러한 방식으로, 일 실시 형태에서, 동일한 파라미터가 인코더 측 및 디코더 측 둘 모두에서 사용된다. 따라서, 예를 들어, 인코더는, 디코더가 동일한 특정 파라미터를 사용할 수 있도록 특정 파라미터를 디코더로 송신(명시적 시그널링)할 수 있다. 반대로, 디코더가 이미 특정 파라미터뿐만 아니라 다른 것들을 갖고 있다면, 단순히 디코더가 특정 파라미터를 알고 선택할 수 있게 하기 위해 송신(암시적 시그널링) 없이 시그널링이 사용될 수 있다. 임의의 실제 기능들의 송신을 회피함으로써, 다양한 실시 형태들에서 비트 절감이 실현된다. 시그널링은 다양한 방식들로 달성될 수 있다는 것이 이해되어야 한다. 예를 들어, 하나 이상의 신택스 요소들, 플래그들 등이 다양한 실시 형태들에서 대응하는 디코더로 정보를 시그널링하는 데 사용된다. 선행하는 것은 단어 "신호"의 동사 형태와 관련되지만, 단어 "신호"는 또한 명사로서 본 명세서에서 사용될 수 있다.
당업자에게 명백한 바와 같이, 구현예들은, 예를 들어 저장되거나 송신될 수 있는 정보를 전달하도록 포맷화된 다양한 신호들을 생성할 수 있다. 정보는, 예를 들어, 방법을 수행하기 위한 명령어들, 또는 기술된 구현예들 중 하나에 의해 생성된 데이터를 포함할 수 있다. 예를 들어, 신호는 기술된 실시 형태의 비트스트림을 전달하도록 포맷화될 수 있다. 그러한 신호는, 예를 들어, 전자기파로서(예를 들어, 스펙트럼의 무선 주파수 부분을 사용함) 또는 기저대역 신호로서 포맷화될 수 있다. 포맷화는, 예를 들어, 데이터 스트림을 인코딩하는 것, 및 인코딩된 데이터 스트림으로 캐리어를 변조하는 것을 포함할 수 있다. 신호가 전달하는 정보는, 예를 들어, 아날로그 또는 디지털 정보일 수 있다. 신호는, 알려진 바와 같이, 다양한 상이한 유선 또는 무선 링크들을 통해 송신될 수 있다. 신호는 프로세서 판독가능 매체 상에 저장될 수 있다.
다수의 실시 형태들을 설명한다. 이들 실시 형태들의 특징들은 단독으로 또는 임의의 조합으로 제공될 수 있다. 다양한 다른 일반화된, 그리고 특정화된 태양들, 실시 형태들 및 청구범위가 또한 본 개시내용 전반에 걸쳐 지지되고 고려된다. 예를 들어, 본 출원에 기술된 다양한 방법들 및 다른 태양들은 모듈들, 예를 들어, 도 6의 비디오 인코더(100)의 크로마 잔차 스케일링 모듈(104) 및 역 크로마 잔차 스케일링 모듈(109), 그리고 도 7의 디코더(200)의 역 크로마 스케일링 모듈(205)을 수정하는 데 사용될 수 있다. 또한, 본 태양들은 VVC 또는 HEVC에 제한되지 않고, 예를 들어, 이미 존재하든 또는 미래에 개발되든 간에, 다른 표준들 및 추천들, 그리고 임의의 그러한 표준들 및 추천들의 확장들(VVC 및 HEVC를 포함함)에 적용될 수 있다. 달리 나타내지 않거나, 또는 기술적으로 배제되지 않는 한, 본 출원에 기술되는 태양들은 개별적으로 또는 조합하여 사용될 수 있다.

Claims (21)

  1. 비디오 인코딩을 위한 방법으로서,
    하나 이상의 루마 맵핑 파라미터들에 기초하여 그리고 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값에 기초하여 상기 하나 이상의 크로마 잔차 스케일링 파라미터들을 결정하는 단계; 및
    상기 결정된 하나 이상의 크로마 잔차 스케일링 파라미터들에 기초하여 상기 비디오를 인코딩하는 단계를 포함하는, 방법.
  2. 비디오 디코딩을 위한 방법으로서,
    하나 이상의 루마 맵핑 파라미터들에 기초하여 그리고 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값에 기초하여 상기 하나 이상의 크로마 잔차 스케일링 파라미터들을 결정하는 단계; 및
    상기 결정된 하나 이상의 크로마 잔차 스케일링 파라미터들에 기초하여 상기 비디오를 디코딩하는 단계를 포함하는, 방법.
  3. 비디오 인코딩을 위한 장치로서, 하나 이상의 프로세서들을 포함하고, 상기 하나 이상의 프로세서들은,
    하나 이상의 루마 맵핑 파라미터들에 기초하여 그리고 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값에 기초하여 상기 하나 이상의 크로마 잔차 스케일링 파라미터들을 결정하도록; 그리고
    상기 결정된 하나 이상의 크로마 잔차 스케일링 파라미터들에 기초하여 상기 비디오를 인코딩하도록 구성되는, 장치.
  4. 비디오 디코딩을 위한 장치로서, 하나 이상의 프로세서들을 포함하고, 상기 하나 이상의 프로세서들은,
    하나 이상의 루마 맵핑 파라미터들에 기초하여 그리고 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값에 기초하여 상기 하나 이상의 크로마 잔차 스케일링 파라미터들을 결정하도록; 그리고
    상기 결정된 하나 이상의 크로마 잔차 스케일링 파라미터들에 기초하여 상기 비디오를 디코딩하도록 구성되는, 장치.
  5. 제1항의 방법 또는 제3항의 장치에 있어서, 상기 하나 이상의 크로마 잔차 스케일링 파라미터들의 상기 보정 값은 루마 양자화 파라미터 값에 기초하여 결정되는, 방법 또는 장치.
  6. 제5항에 있어서, 상기 루마 양자화 파라미터 값은, 상기 하나 이상의 크로마 잔차 스케일링 파라미터들이 결정되고 있는 크로마 블록의 병치된 루마 샘플들에 대해 사용되는 다른 루마 양자화 파라미터 값에 의존하지 않는, 방법 또는 장치.
  7. 제5항 또는 제6항에 있어서, 상기 하나 이상의 크로마 잔차 스케일링 파라미터들의 상기 보정 값은 선택된 루마 샘플들의 평균 값에 기초하는, 방법 또는 장치.
  8. 제1항, 제2항, 제5항 내지 제7항 중 어느 한 항의 방법 또는 제3항 내지 제7항 중 어느 한 항의 장치에 있어서, 상기 루마 맵핑 파라미터들은 루마 샘플들의 예측에 적용된 루마 포워드 맵핑 함수의 기울기를 나타내는, 방법 또는 장치.
  9. 제1항, 제2항, 제5항 내지 제8항 중 어느 한 항의 방법 또는 제3항 내지 제8항 중 어느 한 항의 장치에 있어서, 상기 하나 이상의 크로마 잔차 스케일링 파라미터들의 상기 보정 값의 시그널링을 추가로 포함하는, 방법 또는 장치.
  10. 제9항의 방법 또는 제9항의 장치에 있어서, 상기 하나 이상의 크로마 잔차 스케일링 파라미터들의 상기 보정 값은 APS에서 적응 파라미터로서 시그널링되는, 방법 또는 장치.
  11. 제8항 내지 제10항 중 어느 한 항의 방법 또는 제8항 내지 제10항 중 어느 한 항의 장치에 있어서, 상기 하나 이상의 크로마 잔차 스케일링 파라미터들의 상기 보정 값은 상기 루마 맵핑 파라미터들에 추가되어 보정된 루마 맵핑 기울기 값들을 생성하는 추가 값(additive value)인, 방법 또는 장치.
  12. 제11항에 있어서, 상기 크로마 잔차 스케일링 파라미터들은 상기 보정된 루마 맵핑 기울기 값들을 반전시킴으로써 도출되는, 방법.
  13. 제8항 내지 제12항 중 어느 한 항의 방법 또는 제8항 내지 제12항 중 어느 한 항의 장치에 있어서, 상기 하나 이상의 크로마 잔차 스케일링 파라미터들의 상기 보정 값은 범위 [-7, 7] 내에 있는, 방법 또는 장치.
  14. 제13항의 방법 또는 제13항의 장치에 있어서, 상기 보정된 루마 맵핑 기울기 값들은 제한되는, 방법 또는 장치.
  15. 제14항의 방법 또는 제14항의 장치에 있어서, 상기 보정된 루마 맵핑 기울기 값들은 (OrgCW>>3) 내지 (OrgCW<<3 - 1)를 포함하는 범위 내에 있고, OrgCW는 스케일링의 중립 값(neutral value)을 나타내는, 방법 또는 장치.
  16. 비트스트림으로서, 상기 비트스트림은
    하나 이상의 루마 맵핑 파라미터들에 기초하여 그리고 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값에 기초하여 상기 하나 이상의 크로마 잔차 스케일링 파라미터들을 결정하는 것;
    상기 결정된 하나 이상의 크로마 잔차 스케일링 파라미터들에 기초하여 비디오를 인코딩하는 것; 및
    상기 인코딩된 비디오를 포함하는 상기 비트스트림을 형성하는 것에 의해 형성되는, 비트스트림.
  17. 제16항에 있어서, 상기 하나 이상의 크로마 잔차 스케일링 파라미터들의 상기 보정 값을 추가로 포함하는, 비트스트림.
  18. 방법에 따라 생성된 데이터 콘텐츠를 포함하는 비일시적 컴퓨터 판독가능 매체로서, 상기 방법은,
    하나 이상의 루마 맵핑 파라미터들에 기초하여 그리고 하나 이상의 크로마 잔차 스케일링 파라미터들의 보정 값에 기초하여 상기 하나 이상의 크로마 잔차 스케일링 파라미터들을 결정하는 단계;
    상기 결정된 하나 이상의 크로마 잔차 스케일링 파라미터들에 기초하여 비디오를 인코딩하는 단계; 및
    상기 인코딩된 비디오를 포함하는 상기 데이터 콘텐츠를 형성하는 단계를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  19. 제18항에 있어서, 데이터 콘텐츠는 상기 하나 이상의 크로마 잔차 스케일링 파라미터들의 상기 보정 값을 추가로 포함하는, 비일시적 컴퓨터 판독가능 매체.
  20. 하나 이상의 프로세서들에 의해 실행될 때, 제1항, 제2항, 제5항 내지 제15항 중 어느 한 항의 방법을 수행하기 위한 명령어들을 포함하는 컴퓨터 프로그램 제품.
  21. 하나 이상의 프로세서들에 의해 실행될 때, 제1항, 제2항, 제5항 내지 제15항 중 어느 한 항의 방법을 수행하기 위한 명령어들을 포함하는 비일시적 컴퓨터 판독가능 매체.
KR1020227012376A 2019-09-17 2020-09-16 루마 맵핑 기울기 값들에 추가될 보정 값을 예측하는 크로마 잔차 스케일링 KR20220058958A (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
EP19306117.3 2019-09-17
EP19306117 2019-09-17
EP19306170 2019-09-23
EP19306170.2 2019-09-23
EP19306288.2 2019-10-04
EP19306288 2019-10-04
EP19306324 2019-10-10
EP19306325.2 2019-10-10
EP19306324.5 2019-10-10
EP19306325 2019-10-10
PCT/EP2020/075841 WO2021053002A1 (en) 2019-09-17 2020-09-16 Chroma residual scaling foreseeing a corrective value to be added to luma mapping slope values

Publications (1)

Publication Number Publication Date
KR20220058958A true KR20220058958A (ko) 2022-05-10

Family

ID=72432939

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227012376A KR20220058958A (ko) 2019-09-17 2020-09-16 루마 맵핑 기울기 값들에 추가될 보정 값을 예측하는 크로마 잔차 스케일링

Country Status (7)

Country Link
US (1) US20220329829A1 (ko)
EP (1) EP4032276A1 (ko)
KR (1) KR20220058958A (ko)
CN (2) CN116489376A (ko)
BR (1) BR112022004635A2 (ko)
CA (1) CA3152413A1 (ko)
WO (1) WO2021053002A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4022911A4 (en) * 2019-09-23 2022-11-09 Huawei Technologies Co., Ltd. METHOD AND DEVICE FOR SIGNALING CHROMINANCE QUANTIZATION PARAMETERS
KR20220152212A (ko) 2020-03-11 2022-11-15 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 양자화 파라미터를 위한 높은 레벨의 비트스트림 신택스

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10015491B2 (en) * 2015-04-06 2018-07-03 Dolby Laboratories Licensing Corporation In-loop block-based image reshaping in high dynamic range video coding
US10645403B2 (en) * 2016-05-19 2020-05-05 Dolby Laboratories Licensing Corporation Chroma reshaping for high dynamic range images
WO2020246790A1 (ko) * 2019-06-03 2020-12-10 엘지전자 주식회사 맵핑된 루마 성분 및 스케일링된 크로마 성분 기반 비디오 또는 영상 코딩
US11122270B2 (en) * 2019-06-05 2021-09-14 Dolby Laboratories Licensing Corporation In-loop reshaping with local illumination compensation in image coding

Also Published As

Publication number Publication date
US20220329829A1 (en) 2022-10-13
BR112022004635A2 (pt) 2022-05-31
EP4032276A1 (en) 2022-07-27
CN116489376A (zh) 2023-07-25
CN114731423A (zh) 2022-07-08
WO2021053002A1 (en) 2021-03-25
CA3152413A1 (en) 2021-03-25

Similar Documents

Publication Publication Date Title
US20220078405A1 (en) Simplifications of coding modes based on neighboring samples dependent parametric models
EP3906691A1 (en) Inverse mapping simplification
US20230188734A1 (en) Refinement mode processing in video encoding and decoding
US20220191481A1 (en) In-loop reshaping adaptive reshaper direction
EP4035357A1 (en) Method and apparatus using homogeneous syntax with coding tools
JP2024023456A (ja) コード化/復号化におけるデータ依存関係
KR20220058958A (ko) 루마 맵핑 기울기 값들에 추가될 보정 값을 예측하는 크로마 잔차 스케일링
WO2020117781A1 (en) Method and apparatus for video encoding and decoding with adjusting the quantization parameter to block size
KR20220123666A (ko) 가중-예측 파라미터들의 추정
JP2023516940A (ja) ローカルクロマ量子化パラメータ制御のための高レベルの制約フラグ
KR20230005862A (ko) Act 및 jcbcr을 위한 스케일링 목록 제어
US20220256202A1 (en) Luma mapping with chroma scaling (lmcs) lut extension and clipping
US20220368912A1 (en) Derivation of quantization matrices for joint cb-br coding
US20220272356A1 (en) Luma to chroma quantization parameter table signaling
EP3709655A1 (en) In-loop reshaping adaptive reshaper direction
WO2022268608A2 (en) Method and apparatus for video encoding and decoding
KR20240072180A (ko) Isp 모드를 사용한 템플릿 기반 인트라 모드 도출(timd)의 확장
CN116601948A (zh) 使带有色度缩放的亮度映射适于4:4:4 rgb图像内容
WO2020260310A1 (en) Quantization matrices selection for separate color plane mode
JP2023504372A (ja) ジョイントクロマの符号化されたブロックに対するスケーリング処理
CN117501692A (zh) 用于视频编码和解码的模板匹配预测
KR20210019454A (ko) 비디오 코딩에서의 조명 보상

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant