KR20220036948A - 비디오 코딩에서 잔차의 양자화 - Google Patents

비디오 코딩에서 잔차의 양자화 Download PDF

Info

Publication number
KR20220036948A
KR20220036948A KR1020227003286A KR20227003286A KR20220036948A KR 20220036948 A KR20220036948 A KR 20220036948A KR 1020227003286 A KR1020227003286 A KR 1020227003286A KR 20227003286 A KR20227003286 A KR 20227003286A KR 20220036948 A KR20220036948 A KR 20220036948A
Authority
KR
South Korea
Prior art keywords
quantization
dequantization
parameter
encoded
base
Prior art date
Application number
KR1020227003286A
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
Priority claimed from GBGB1909701.3A external-priority patent/GB201909701D0/en
Priority claimed from GBGB1909724.5A external-priority patent/GB201909724D0/en
Priority claimed from GBGB1909997.7A external-priority patent/GB201909997D0/en
Priority claimed from GBGB1910674.9A external-priority patent/GB201910674D0/en
Priority claimed from GBGB1911467.7A external-priority patent/GB201911467D0/en
Priority claimed from GBGB1911545.0A external-priority patent/GB201911545D0/en
Priority claimed from GBGB1911546.8A external-priority patent/GB201911546D0/en
Priority claimed from GB201914215A external-priority patent/GB201914215D0/en
Priority claimed from GB201914413A external-priority patent/GB201914413D0/en
Priority claimed from GB201914414A external-priority patent/GB201914414D0/en
Priority claimed from GB201914634A external-priority patent/GB201914634D0/en
Priority claimed from GB201915546A external-priority patent/GB201915546D0/en
Priority claimed from GB201915553A external-priority patent/GB201915553D0/en
Priority claimed from GBGB1916090.2A external-priority patent/GB201916090D0/en
Priority claimed from GBGB1918099.1A external-priority patent/GB201918099D0/en
Priority claimed from GBGB2000430.5A external-priority patent/GB202000430D0/en
Priority claimed from GBGB2000483.4A external-priority patent/GB202000483D0/en
Priority claimed from GBGB2000600.3A external-priority patent/GB202000600D0/en
Priority claimed from GBGB2000668.0A external-priority patent/GB202000668D0/en
Priority claimed from GBGB2001408.0A external-priority patent/GB202001408D0/en
Priority claimed from PCT/GB2020/050695 external-priority patent/WO2020188273A1/en
Priority claimed from GBGB2004131.5A external-priority patent/GB202004131D0/en
Priority claimed from GBGB2005652.9A external-priority patent/GB202005652D0/en
Priority claimed from GBGB2006183.4A external-priority patent/GB202006183D0/en
Application filed by 브이-노바 인터내셔널 리미티드 filed Critical 브이-노바 인터내셔널 리미티드
Publication of KR20220036948A publication Critical patent/KR20220036948A/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • 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/172Methods 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 picture, frame or field
    • 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/184Methods 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 bits, e.g. of the compressed video stream
    • 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/187Methods 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 scalable video layer
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • 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
    • 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/31Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
    • 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/33Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
    • 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/39Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability involving multiple description coding [MDC], i.e. with separate layers being structured as independently decodable descriptions of input picture data
    • 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/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)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

인코딩된 신호를 디코딩하는 방법이 제공되며, 인코딩된 신호는 비트스트림 내에 수신되며, 방법은 인코딩된 신호와 관련된 양자화된 데이터 세트를 수신하는 단계; 적어도 하나의 탈양자화 파라미터를 결정하는 단계; 및 적어도 하나의 탈양자화 파라미터에 적어도 부분적으로 기초하여 양자화된 데이터를 탈양자화하는 단계를 포함한다.

Description

비디오 코딩에서 잔차의 양자화
본 발명은 데이터 압축, 특히 이미지 및 비디오 신호의 압축 및 디코딩 방법에 관한 것이다. 데이터 압축은 계층적(티어 기반(tier-based)) 코딩 포맷에 의해 인코딩된 데이터를 획득, 유도, 인코딩, 출력, 수신, 디코딩 및 재구성하는 것을 포함할 수 있지만 이에 제한되지 않으며, 계층적 코딩 포맷에서, 비디오 신호는 데이터의 에셀론(echelon)(예를 들어, 계층 또는 티어)으로 인코딩되고 이후에 더 높은 품질 레벨에서 티어에서 디코딩된다. 신호의 상이한 티어는 또한 상이한 코딩 포맷에 따라 인코딩될 수 있다.
혼성 역호환 코딩 기술은 예를 들어 WO 2014/170819 및 WO 2018/046940에서 이전에 제안되었으며, 그 내용은 본 출원에 참조로 포함된다.
이 공보들에는 데이터 스트림을 인코딩된 데이터의 제1 부분과 인코딩된 데이터의 제2 부분으로 파싱하고, 인코딩된 데이터의 제1 부분을 신호의 제1 렌디션(rendition)으로 디코딩하기 위해 제1 디코더를 구현하고; 인코딩된 데이터의 제2 부분을 재구성 데이터로 디코딩하기 위해 제2 디코더를 구현하고- 재구성 데이터는 신호의 제1 렌디션을 수정하는 방법을 지정함 -; 신호의 제1 렌디션에 재구성 데이터를 적용하여 신호의 제2 렌디션을 생성하는 방법이 제안되어 있다.
이 공보들에는 잔차 요소의 세트가 신호의 제1 시간 샘플의 렌디션을 재구성하는 데 사용될 수 있는 추가사항이 추가로 제안되어 있다. 제1 시간 샘플과 관련된 공간-시간 상관 요소의 세트가 생성된다. 공간-시간 상관 요소의 세트는 복수의 잔차 요소 사이의 공간적 상관의 정도, 및 신호의 제2 시간 샘플의 렌디션에 기초한 제2 참조 데이터와 렌디션에 기초한 제1 참조 데이터 사이의 시간적 상관의 정도를 나타낸다. 공간-시간 상관 요소 세트는 출력 데이터를 생성하는 데 사용된다. 언급한 바와 같이, 잔차 세트는 전체 데이터 크기를 감소시키기 위해 인코딩된다.
인코딩 애플리케이션은 전형적으로 양자화 연산을 사용한다. 데이터 값의 하나 이상의 범위 각각이 단일 값으로 압축되는 이 압축 프로세스를 통해 비디오 데이터의 세트의 서로 다른 값의 수가 감소되게 하고, 이에 의해, 해당 데이터를 더 압축 가능하게 할 수 있다. 이러한 방식으로, 양자화 방식은 일부 비디오에서 특정 변수가 단지 특정 이산 크기만을 취할 수 있도록 신호를 양자로 변경하는 데 유용하다. 전형적으로, 비디오 코덱은 비디오 프레임 형태의 시각적 데이터를 전형적으로 미리 결정된 크기 또는 픽셀 수의 이산 블록으로 나눈다. 그 후, 전형적으로 변환이 블록에 적용되어 시각적 데이터를 주파수 성분의 합에 관하여 표현한다. 이 변환된 데이터는 그 후, 양자화 스케일 코드로 미리 승산될 수 있고, 그 후, 양자화 행렬에 의해 요소별로 제산(division)이 적용되고, 행렬 요소에 의한 각각의 변환되고, 미리 승산된 요소의 제산의 출력 요소가 그 후 라운딩된다. 제수, 즉, 양자화 행렬의 상이한 요소를 사용한 상이한 변환된 요소의 처리는 전형적으로 시청자에 대한 비디오의 시각적 외관에 더 큰 영향을 미치는 이들 주파수 요소에, 덜 인지 가능한 성분보다 더 많은 데이터 또는 해상도가 더 효과적으로 할당될 수 있게 하기 위해 사용된다.
신호가 재구성되면 사용자에 대한 전체적인 인상을 손상시키지 않고 처리 속도와 복잡도를 최적화하는 목표들을 균형화하면서 전체 데이터 크기를 더욱 감소시키기 위한 최적화가 추구된다.
대부분의 데이터 압축 방법은 디스플레이 설정 좌표(예를 들어, 휘도 및 색차 값, RGB 값 등)와 관련하여 반전 가능한 변환된 계수의 도메인에 전형적으로 적용되는 양자화 스테이지를 포함한다. 양자화된 데이터가 디코딩 모듈에서 수신될 때, 디코딩 모듈은 원래 계수를 재구성하기 위해 탈양자화 프로세스를 구현할 수 있어야 한다.
다음 설명에서, 단순화를 위해 비디오 신호를 참조하여 모든 실시예를 설명할 것이다. 그러나, 동일한 실시예가 필요한 수정을 가하여 다른 유형의 데이터에도 적용된다는 것이 이해하여야 한다. 더욱이, 단순화를 위해 코딩 및 디코딩 알고리즘/프로세스를 "코덱"이라 지칭한다.
전형적인 코덱은 단일 계층 블록 기반 접근법을 사용하여 동작하며, 여기서, 다수의 코딩 도구를 사용하여 원본 신호가 처리되어 인코딩된 신호를 생성하고, 이 인코딩된 신호는 그 후 대응하는 디코딩 프로세스에 의해 재구성될 수 있다. 이러한 전형적인 코덱은 MPEG-2, AVC/H.264, HEVC/H.265, VP8, VP9, AV1 및 MPEG/ISO/ITU 및 AoM(Alliance for Open Media)과 같은 산업 컨소시엄과 같은 표준 국제 기구에서 현재 개발 중인 코덱을 포함하지만 이에 제한되지 않는다.
다중 계층 블록 기반 접근법을 사용하여 동작하는 코덱 클래스도 있다. 업계에서 "스케일러블(scalable)"로 알려진 이러한 코덱은 일반적으로 원본 신호를 다운샘플링한 다음 서브 계층으로부터 가능한 많은 정보를 재사용하여 획득된 다수의 계층에 걸쳐 단일 계층 블록 기반 접근법에 의해 수행되는 동작을 복제하여 상위 계층을 인코딩(및 디코딩)한다. 중요하게, 이들 스케일러블 코덱은, 스케일 다운 디코딩된 신호(예를 들어, 더 낮은 해상도 신호)의 품질이 기존 서비스에 대한 품질 요건을 만족시키는 것을 보장할 필요가 있다는 점에서뿐만 아니라, 스케일링되지 않은 디코딩된 신호(예를 들어, 더 높은 해상도 신호)의 품질이 대응하는 단일 계층 코덱에 의해 생성된 것과 비슷한 것을 보장한다는 점에서, 스케일러빌리티 특징을 운영자에게 제공하도록 의도된다.
이러한 코덱의 예는 AVC의 스케일러블 버전인 SVC(예를 들어, 문헌 ["The Scalable Video Coding Extension of the H.264/AVC Standard", H. Schwarz and M. Wien, IEEE Signal Processing Magazine, March 2008] 참조)가 있고, 여기서, 각각의 스케일러블 계층은 동일한 AVC 기반 프로세스를 사용하여 처리되고, 상위 계층은 서브 계층으로부터 가능한 많은 정보(예를 들어, 잔차 정보 및 모션 정보를 비롯한 계층간 예측)를 수신하며, 이는 상위 계층에서 인코딩된 정보를 감소시키기 위해 상위 계층의 인코딩에 사용된다. 반대로, 디코딩을 위해, SVC 디코더는 상위 계층을 디코딩할 수 있도록 서브 계층을 디코딩할 뿐만 아니라 다양한 오버헤드 정보를 수신할 필요가 있다.
또 다른 예는 HEVC의 스케일러블 버전인 SHVC(예를 들어, 문헌 ["Overview of SHVC: Scalable Extensions of the High Efficiency Video Coding Standard", J. Boyce, Y. Ye, J. Chen and A. Ramasubramonian, IEEE Trans. On Circuits and Systems for Video Technology, Vol. 26, No. 1, Jan 2016] 참조)이다. SVC와 유사하게 SHVC 또한 상위 계층에 대해 동일한 HEVC 기반 프로세스를 사용하지만, 이는 서브 계층이 AVC 또는 HEVC 중 어느 하나를 사용할 수 있게 한다. 결정적으로, SHVC에서, 상위 계층은 또한 상위 계층에서의 인코딩된 정보를 감소시키기 위해 상위 계층의 인코딩시 서브 계층으로부터 가능한 많은 정보(예를 들어, 모션 정보를 포함하는 계층간 처리, 상위 계층 코딩을 위한 추가의 참조 픽처로서 업샘플링된 서브 계층)를 수신한다. 역시, SVC와 유사하게, SHVC 디코더는 상위 계층을 디코딩할 수 있도록 서브 계층을 디코딩할 뿐만 아니라 다양한 오버헤드 정보를 수신할 필요가 있다.
최근, 새로운 다중 계층 비-블록 기반 접근법이 개발되었다- 예를 들어, 미국 특허 제US8,977,065호, 제US8,948,248호, 제US8,711,943호, 제US9,129,411호, 제US8,531,321호, 제US9,510,018호, 제US9,300,980호, 및 제US9,626,772호, 및 PCT 출원 제PCT/EP2013/059833호, 제PCT/EP2013/059847호, 제PCT/EP2013/059880호, 제PCT/EP2013/059853호, 제PCT/EP2013/059885호, 제PCT/EP2013/059886호, 및 제PCT/IB2014/060716호를 참조하고, 이 출원들은 참조로 본 출원에 모두 포함된다. 이 새로운 접근법은 현재 MPEG-5 Part 2 LCEVC(Low Complexity Enhancement Video Coding)로서 MPEG/ISO에 의해 국제 표준으로 개발되고 있다.
스케일러블 코덱과 달리 이 새로운 접근법은 서브 계층을 인코딩하는 데 사용되는 코덱에 대해 완전히 애그노스틱(agnostic)하다. 이는 도 1에 도시된 바와 같이 상위 계층이 서브 계층에 대한 어떠한 정보도 없이 디코딩 가능하기 때문이다. 디코더는 인코더에 의해 생성된 5개의 스트림을 수신한다. 5개의 스트림은 다음을 포함한다: 제1 인코딩된 스트림(인코딩된 베이스)은 베이스 코덱(예를 들어, AVC, HEVC, 또는 임의의 다른 코덱)에 입력 비디오의 다운샘플링된 버전을 공급함으로써 생성되고; 제2 인코딩된 스트림(L1 계수 계층)은 재구성된 베이스 코덱 비디오와 입력 비디오의 다운샘플링된 버전(L1 잔차) 사이의 차이를 취함으로써 획득된 잔차를 처리함으로써 생성되고; 제3 인코딩된 스트림(L0 계수 계층)은 재구성된 베이스 코딩된 비디오의 보정된 버전의 업샘플링된 버전과 입력 비디오 사이의 차이(L0 잔차)를 취함으로써 획득된 잔차를 처리함으로써 생성되고; 제4 인코딩된 스트림(예를 들어, 시간 계층)은 디코더에 명령하기 위해 시간 처리로부터 생성되고; 제5 스트림(헤더)은 디코더를 구성하기 위해 생성된다. 인코딩된 베이스 스트림은 인코더에서 사용되는 베이스 코덱에 의해 구현되는 인코딩 알고리즘에 대응하는 디코딩 알고리즘을 구현하는 베이스 디코더에 의해 디코딩되고, 이의 출력은 디코딩된 베이스이다. 별개로 그리고 독립적으로, L1 계수 그룹은 L1 잔차 데이터를 획득하기 위해 디코딩된다. 또한, 개별적으로 그리고 독립적으로, L0 잔차 데이터를 획득하기 위해 L0 계수 그룹이 디코딩된다. 이어서, 디코딩된 베이스, L1 잔차 데이터 및 L0 잔차 데이터가 조합된다. 특히, 디코딩된 베이스는 L1 잔차 데이터와 조합되어 중간 픽처를 생성한다. 이어서, 중간 픽처가 업샘플링되고, L0 잔차 데이터와 더 조합될 수 있다.
또한, 새로운 접근법은 어떠한 블록간 예측도 사용하지 않고 픽처를 처리하는 인코딩 및 디코딩 프로세스를 사용한다. 오히려, 이는 픽처 요소의 NxN 블록(예를 들어, 2x2 또는 4x4)을 변환하고 서로 독립적으로 블록을 처리함으로써 픽처를 처리한다. 이는 효율적인 처리는 물론, 이웃 블록에 대한 의존성이 없는 상태를 초래하며, 따라서 픽처의 처리가 병렬화되는 것을 가능하게 한다.
일 양태에 따르면, 인코딩된 신호를 디코딩하는 방법이 제공될 수 있고, 상기 인코딩된 신호는 비트스트림 내에 수신되고, 방법은 인코딩된 신호와 관련된 양자화된 데이터 세트를 수신하는 단계; 적어도 하나의 탈양자화 파라미터를 결정하는 단계; 및 적어도 하나의 탈양자화 파라미터에 적어도 부분적으로 기초하여 양자화된 데이터를 탈양자화하는 단계를 포함한다.
다른 양태에 따르면, 인코딩된 스트림을 재구성된 출력 신호로 디코딩하는 방법이 제공되며, 이 방법은 제1 코덱에 따라 제1 베이스 인코딩된 스트림으로부터 디코딩된 제1 출력 신호를 수신하는 단계; 레벨 인코딩된 스트림을 수신하는 단계; 잔차 세트를 획득하기 위해 레벨 인코딩된 스트림을 디코딩하는 단계; 및 잔차 세트를 제1 출력 신호와 조합하여 재구성된 신호를 생성하는 단계를 포함하고, 레벨 인코딩된 스트림을 디코딩하는 단계는 레벨 인코딩된 스트림으로부터 양자화된 계수 세트를 디코딩하는 단계; 양자화된 계수 세트를 탈양자화하는 단계를 포함한다. 조합은 제1 출력 신호의 업샘플링된 버전과 조합하는 것을 포함할 수 있다.
레벨 인코딩된 스트림은 제1 레벨 인코딩된 스트림일 수 있고; 양자화된 계수의 세트는 양자화된 계수의 제1 세트일 수 있고; 잔차 세트는 제1 잔차 세트일 수 있으며, 여기서, 방법은 제2 레벨 인코딩된 스트림을 수신하는 단계; 제2 잔차 세트를 획득하기 위해 제2 레벨 인코딩된 스트림을 디코딩하는 단계; 및 원래 해상도 입력 신호의 재구성을 생성하기 위해 재구성된 신호의 업샘플링된 버전과 제2 잔차 세트를 조합하는 단계를 더 포함할 수 있고, 제2 레벨 인코딩된 스트림을 디코딩하는 단계는 제2 레벨 인코딩된 스트림으로부터 양자화된 계수의 제2 세트를 디코딩하는 단계; 양자화된 계수의 제2 세트를 탈양자화하는 단계를 포함한다.
방법은 유리하게는 코딩될 비디오 데이터에 기초한 다수의 인자 중 임의의 것에 의존하여 양자화 프로세스의 계수에 적용되는 압축의 정도 및/또는 방식을 변경하는 것을 통해 인코딩 및 디코딩 프로세스의 효율성이 개선되게 할 수 있다. 따라서, 비디오 스트림을 인코딩하는 동안 양자화의 전형적으로 손실이 많은 절차가 수행되는 방식은 인코딩 또는 압축 효율과 입력 비디오의 시각적으로 인지할 수 있는 압축 사이의, 상이한 비디오 프레임 및 스트림에 따라 크게 달라질 수 있는 관계인, 적절한 균형이 입력 비디오의 특성과 내용에 따라 적용될 수 있는 방식으로 적응될 수 있다. 특히, 방법은 양자화가 수행된 방식, 또는, 예를 들어, 디코더에 시그널링되는 디폴트 모드로부터 변경되는 정도를 통해 예를 들어 선행 인코딩 프로세스와 협력하여 수신 디코더에서의 탈양자화 프로세스에서 이러한 적응 가능한 형태의 양자화가 사용할 수 있게 한다. 이는 해당 정보를 표현하거나 나타내는 값을 갖는 파라미터의 송신을 통해 달성될 수 있다. 예를 들어, 데이터 페이로드의 크기를 증가시키면서 디코더에서 수신된 데이터에 이러한 정보 또는 파라미터를 포함하는 것은 인코더에서 디코더로의 압축 데이터 스트림에서 잠재적으로 자주 호출됨에도 불구하고 압축 개선을 제공할 수 있다는 것이 밝혀졌다.
일부 실시예에서, 결정하는 단계는 인코딩된 스트림을 포함하는 비트스트림으로부터 양자화된 데이터를 탈양자화하기 위해 적용될 탈양자화 연산의 표시를 유도하는 단계; 및 상기 표시에 적어도 부분적으로 기초하여 상기 적어도 하나의 탈양자화 파라미터를 결정하는 단계를 더 포함한다. 탈양자화 연산은 적어도 하나의 탈양자화 파라미터를 결정하기 위해 적어도 하나의 미리 결정된 탈양자화 파라미터를 사용하는 것을 포함할 수 있다.
이러한 경우에, 전형적으로 적어도 하나의 미리 결정된 탈양자화 파라미터는 디폴트 탈양자화 파라미터에 대응한다. 이러한 경우에, 바람직하게는 인코딩된 스트림은 샘플의 시퀀스를 포함하고, 적어도 하나의 미리 결정된 탈양자화 파라미터는 이전 샘플을 디코딩하는 데 사용되는 탈양자화 파라미터에 대응한다.
일부 실시예에서, 탈양자화 연산은 인코딩된 스트림을 포함하는 비트스트림에 수신된 적어도 하나의 업데이트된 파라미터를 사용하여 적어도 하나의 미리 결정된 탈양자화 파라미터를 업데이트하는 것을 포함한다.
일부 실시예에서, 적어도 하나의 탈양자화 파라미터는 양자화 단계 폭 파라미터를 포함하고, 상기 양자화 단계 폭 파라미터는 비트스트림에 수신된다. 이러한 경우에, 바람직하게는 적어도 하나의 탈양자화 파라미터는 적어도 하나의 스케일링 인자를 더 포함한다. 이러한 실시예에서, 적어도 하나의 탈양자화 파라미터를 결정하는 단계는 적어도 하나의 스케일링 인자로 양자화 단계를 처리하는 단계를 포함할 수 있다.
양자화된 데이터, 특히 양자화된 계수의 세트는 일부 실시예에서 양자화된 데이터의 복수의 서브세트를 포함할 수 있고, 적어도 하나의 탈양자화 파라미터는 복수의 탈양자화 파라미터를 포함하고, 복수의 탈양자화 파라미터 중 각각의 탈양자화 파라미터는 양자화된 데이터의 복수의 서브세트 중 각각의 서브세트에 대응한다. 이러한 대응성은, 복수의 양자화 파라미터 중 각각의 양자화 파라미터가 예를 들어 주어진 서브세트가 각각의 대응하는 탈양자화 파라미터에 따라 탈양자화되는 방식으로, 각각의 서브세트와 관련되거나 그에 대응하는 것으로서 이해할 수 있다.
이러한 실시예에서, 전형적으로 탈양자화 연산은 복수의 탈양자화 파라미터로부터의 각각의 탈양자화 파라미터에 적어도 부분적으로 기초하여 양자화된 데이터의 복수의 서브세트 각각을 탈양자화하는 단계를 더 포함한다. 복수의 탈양자화 파라미터는 적어도 양자화 단계 폭 파라미터- 상기 양자화 단계 폭 파라미터는 비트스트림에 수신됨 - 및 적어도 하나의 스케일링 인자를 포함할 수 있다. 이러한 경우에, 바람직하게는 적어도 하나의 스케일링 인자는 복수의 스케일링 인자를 포함하고, 복수의 스케일링 인자 각각은 양자화된 데이터의 복수의 서브세트 중 각각의 서브세트에 대응한다. 이러한 일부 실시예에서, 적어도 하나의 탈양자화 파라미터를 결정하는 단계는 복수의 탈양자화 파라미터를 유도하는 단계를 포함할 수 있으며, 복수의 탈양자화 파라미터 각각은 복수의 스케일링 인자 중 각각의 스케일링 인자로 양자화 단계 폭 파라미터를 처리함으로써 획득된다.
방법은 예를 들어 미리 결정된 함수에 기초하여 수신된 양자화 단계 폭 파라미터로부터 실제 양자화 파라미터를 계산하는 단계를 포함할 수 있다. 일부 실시예에서, 실제 양자화 파라미터
Figure pct00001
는 스케일링 인자
Figure pct00002
로 수신된 양자화 단계 폭 파라미터
Figure pct00003
를, 다음에 따른 이들 2개의 인자의 함수에 의해, 처리함으로써 계산된다:
Figure pct00004
.
이러한 실시예에서, 전형적으로 함수 f(ㆍ)는 다음에 따른 승산이다.
Figure pct00005
이러한 경우에, 바람직하게는 탈양자화 연산은
Figure pct00006
로 계산되는 탈양자화된 데이터를 포함하고, 여기서
Figure pct00007
는 양자화된 데이터 서브세트이며,
Figure pct00008
는 i번째 양자화된 데이터 서브세트에 대한 실제 양자화 단계이다.
일부 실시예에서, 실제 양자화 파라미터
Figure pct00009
는 단계 폭 수정자(
Figure pct00010
)에 추가로 기초하여 계산되고, 탈양자화 오프셋은 다음에 따라 탈양자화 연산에 사용될 수 있다:
Figure pct00011
.
이러한 실시예에서, 바람직하게는 f(ㆍ)는 다음에 따른 함수이다:
Figure pct00012
.
탈양자화 연산은 다음과 같이 계산되는 탈양자화된 데이터를 포함할 수 있다:
Figure pct00013
여기서
Figure pct00014
는 양자화된 데이터 서브세트이고
Figure pct00015
는 i번째 양자화된 데이터 서브세트에 대한 실제 양자화 단계이고 DOi는 특정 i번째 양자화된 데이터 서브세트에 대한 탈양자화 오프셋이다.
일부 실시예에서, 선형 양자화기는 비-중심 탈양자화 오프셋을 사용한다. 선형 양자화기는 양자화 단계에 관련한 상이한 크기의 데드존 및 비-중심 탈양자화 오프셋을 사용할 수 있다. 탈양자화 오프셋의 값은 일부 실시예에서 인코더로부터 수신될 수 있다. 바람직하게, 수신된 오프셋 값(offset)은 단계 폭에 기초한 탈양자화 이전에, 수신된 양자화된 값에 추가된다.
다른 양태에서, 입력 신호를 복수의 인코딩된 스트림으로 인코딩하는 방법이 제공될 수 있고, 인코딩된 스트림은 입력 신호를 재구성하기 위해 조합될 수 있고, 방법은 입력 신호를 수신하는 단계; 다운샘플링된 신호를 생성하기 위해 입력 신호를 다운샘플링하는 단계; 베이스 인코딩된 스트림을 생성하기 위해 베이스 인코더를 사용하여 다운샘플링된 신호의 인코딩을 명령하는 단계; 재구성된 신호를 생성하기 위해 베이스 디코더를 사용하여 베이스 인코딩된 스트림의 디코딩을 명령하는 단계; 재구성된 신호를 입력 비디오와 비교하여 잔차 세트를 생성하는 단계; 및 레벨 인코딩된 스트림을 생성하기 위해 잔차 세트를 인코딩하는 단계를 포함하고, 잔차 세트를 인코딩하는 단계는 변환된 계수의 세트를 생성하기 위해 잔차 세트에 변환을 적용하는 단계; 양자화된 계수의 세트를 생성하기 위해 변환된 계수의 세트에 양자화 연산을 적용하는 단계; 및 양자화된 계수에 인코딩 동작을 적용하는 단계를 포함한다.
잔차 세트는 제1 잔차 세트일 수 있고, 비교하는 단계는 재구성된 신호를 다운샘플링된 신호와 비교하여 인코딩된 스트림이 제1 레벨 인코딩된 스트림이 되도록 제1 잔차 세트를 생성하는 단계를 포함할 수 있고, 방법은 제1 잔차 세트를 디코딩하여 디코딩된 제1 잔차 세트를 생성하는 단계; 보정된 재구성된 신호를 생성하기 위해 디코딩된 제1 잔차 세트를 사용하여 재구성된 신호를 보정하는 단계; 업샘플링된 재구성된 신호를 생성하기 위해 보정된 재구성된 신호를 업샘플링하는 단계; 제2 잔차 세트를 생성하기 위해 업샘플링된 재구성된 신호를 입력 신호와 비교하는 단계; 및 제2 잔차 세트를 인코딩하여 제2 레벨 인코딩된 스트림을 생성하는 단계를 더 포함하고, 제2 잔차 세트를 인코딩하는 단계는 제2 계수 세트를 생성하기 위해 제2 잔차 세트에 변환을 적용하는 단계; 양자화된 계수의 제2 세트를 생성하기 위해 제2 계수 세트에 양자화 연산을 적용하는 단계; 및 인코딩 동작을 양자화된 계수의 제2 세트에 적용하는 단계를 포함한다.
빈 폴딩 프로세스(bin folding process)가 또한 일부 실시예에서 코딩 효율을 개선시키기 위해 사용될 수 있다. 특히, 이러한 경우에, 양자화 연산은 계수 세트에 빈 폴딩 동작을 적용하는 단계를 더 포함하고, 빈 폴딩 동작은 미리 결정된 최대값을 초과하는 값을 갖는 각각의 계수를 포함하고, 최대값은 제1 양자화 빈에 대응하는 양자화된 값을 갖도록 양자화되는, 정의된 단계 폭을 갖는 복수의 양자화 빈의 제1 양자화 빈의 상한에 의해 정의된다. 이는 선택된 양자화 빈 위에 상주하는 모든 잔차 또는 계수 값을 선택된 빈에 배치하도록 수행될 수 있다. 관련된 값의 범위의 종점으로 이해될 수 있는 것과 관련하여, 제1 빈은 상위 값, 또는 최고 (절대) 양자화된 값에 대응하는 빈에 대응하는 것으로 고려될 수 있다. 빈 폴딩은 상위 종점과 하위 종점 중 어느 하나 또는 모두에서 구현될 수 있다. 범위의 음의 값에 대해서도 유사한 프로세스가 수행될 수 있다. 빈 폴딩은 네트워크 조건 및 베이스 스트림 처리 중 적어도 하나에 기초하여 비트 레이트를 조절하거나 감소시키도록 구성될 수 있다. 따라서, 빈 폴딩 프로세스는 예를 들어 조건 및 베이스 스트림 처리 또는 빈 폴딩을 구성하기 위해 사용되는 그로부터 유도된 파라미터, 예를 들어, 다양한 실시예에서 빈 폴딩을 정의하는 파라미터 중 어느 하나 또는 양자 모두로 자체적으로 구성 가능할 수 있다.
일부 실시예에서 양자화 연산은 특히 비-중심 양자화 오프셋일 수 있는 양자화 오프셋을 사용하는 단계를 더 포함한다.
전형적으로, 양자화 오프셋을 사용하는 단계는 양자화 오프셋을 정의된 단계 폭을 갖는 복수의 양자화 빈에 적용하여 상기 복수의 양자화 빈 중 하나 이상이 양자화 오프셋의 값에 의해 또는 이에 기초하여 대응하는 값 각각을 조절하는 것을 포함한다. 이러한 실시예에서, 복수의 양자화 빈 각각이 대응하는 값이 조절될 수 있다. 대안적으로, 복수의 빈의 제1 빈의 시작에 대응하는 값과 복수의 빈의 마지막 빈의 끝에 대응하는 값 중 어느 하나 또는 양자 모두는 양자화 오프셋의 값에 의해 조절되지 않고, 즉, 그에 의해 조절되지 않고 유지된다. 제1 빈은 수치적으로 가장 낮은 값 또는 범위의 최소값에 대응하는 것으로 이해할 수 있다. 마찬가지로 마지막 빈은 범위의 최대값 또는 수치적으로 가장 큰 값을 나타내는 것으로 이해할 수 있다. 이러한 조절 및 그 결여는 본 개시에서 나중에 설명되는 데드존 및 빈 폴딩을 수반하는 양자화 연산과 함께 적용될 수 있다.
전형적으로, 양자화 오프셋의 값은 조절 가능하거나 구성 가능하다. 일부 실시예에서, 양자화 오프셋의 값은 인코딩이 수행되고 있는 동작 조건을 나타내는 데이터에 기초하여 변경될 수 있다.
일부 실시예에서, 방법은 인코딩된 스트림이 수신될 디코더에 양자화 오프셋 값을 시그널링하는 단계를 더 포함한다. 이 시그널링은 예를 들어 양자화 오프셋 값이 인코딩 동안 동적으로 변하는 구현에서 수행될 수 있다.
양자화 연산은 전형적으로 양자화 단계 폭에 기초하여 양자화 전에 잔차 또는 계수 값으로부터 양자화 오프셋 값을 감산하는 것을 포함한다.
일부 실시예에서 양자화 오프셋의 값은 잔차 또는 계수의 부호에 기초하여 조절된다. 이는 0 값에 대한 대칭성 동작을 허용하도록 영향을 받을(즉, 구현될) 수 있다.
방법은 양자화 오프셋의 값이 제1 미리 결정된 값으로 설정되는 경우, 빈 값에 대한 오프셋 적용이 비활성화되도록 수행될 수 있다. 예를 들어, 이는 양자화 또는 탈양자화 오프셋 값을 0으로 설정하여 수행될 수 있다.
일부 실시예에서, 양자화 오프셋의 값은 데드존의 정의된 폭에 기초하여 조절된다. 이러한 실시예에서, 양자화 연산은 본 개시에서 나중에 상세히 설명되는 데드존을 사용하여 수행될 수 있다.
일부 실시예에서, 방법은 양자화 연산에 사용되는 단계 폭이 단계 폭 파라미터에 따라 변경되는 것을 수반할 수 있다. 특히, 단계 폭은 계수 세트 내의 하나 이상의 계수 각각에 대해, 예를 들어 계수의 2x2 또는 4x4 블록 내의 상이한 계수에 대해 변경될 수 있다. 예를 들어, 단계 폭은 더 작은 단계 폭 값이 디코딩된 신호의 인식에 더 큰 정도로 영향을 미치도록 미리 결정된 계수 중 하나 이상에 대해 사용되도록 변경될 수 있다. 영향의 정도는 전형적으로 실험적으로 결정되며, 이에 의해, 어떤 계수가 시청자에게 디코딩된 신호의 인식에 더 크게 영향을 미치는지를 나타내는 정보가 획득될 수 있다.
단계 폭은 전형적으로 베이스 단계 폭 파라미터에 따라 디폴트값이 할당된다. 하나 이상의 수정된 단계 폭은 베이스 단계 폭 및 단계 폭 수정자 파라미터에 따라 획득될 수 있다. 예를 들어, 이는 수정된 단계 폭이 공식 modified_stepwidth = base_stepwidth*수정자에 따라 획득됨으로써 수행될 수 있고, 여기서, 수정자는 블록 또는 유닛 내의 특정 계수를 기초로 설정될 수 있다.
이러한 실시예에서, 각각의 단계 폭 수정자 파라미터는 하나 이상의 계수 각각에 대해 사용되는 단계 폭을 수정하는 데 사용될 수 있다.
각각의 단계 폭 값은 일부 실시예에서 베이스 인코딩된 스트림 및 하나 이상의 개선 레벨 인코딩된 스트림을 포함하는 2개 이상의 인코딩된 스트림, 또는 개선 레벨 각각에 대해 사용되거나 이와 관련될 수 있다.
일부 실시예에서, 단계 폭 수정자 파라미터는 개선 레벨에 의존하여, 즉, 사용된 개선의 레벨에 따라 변한다. 단계 폭 수정자는 더 작은 단계 폭이 제1 레벨 인코딩된 스트림에 사용되고 더 큰 단계 폭이 베이스 인코딩된 스트림에 사용되도록 변경될 수 있다.
일부 바람직한 실시예에서, 양자화 연산은 상이한 계수 및 상이한 개선 레벨에 대한 단계 폭 수정자 파라미터 값의 세트로 정의된 양자화 행렬을 사용한다. 따라서, 방법은 각각의 계수 및 각각의 개선 레벨에 대한 각각의 단계 폭 수정된 파라미터 값을 수반할 수 있다. 양자화 행렬은 방법을 수행하는 인코더에 의해, 그리고 대응하는 디코딩 프로세스를 수행하는 디코더에 의해 상이한 실시예에서 다양한 수단에 의해 획득될 수 있다. 특히, 양자화 행렬은 인코더 및 디코더 중 적어도 하나에서 미리 설정될 수 있거나, 또는 양자화 행렬은 인코더와 디코더 사이에서 시그널링될 수 있고, 추가적으로 또는 대안적으로 인코더 및 디코더 중 적어도 하나에서 동적으로 구성될 수 있다.
방법은 양자화 행렬을 하나 이상의 저장된 및 하나 이상의 시그널링된 파라미터 중 적어도 하나의 함수로서 구성하는 단계를 더 포함할 수 있다.
일부 실시예에서, x = 0...nTbS-1, y = 0...nTbS-1 및 주어진 양자화 행렬 qm[x][y]에 대해 스케일링된 변환 계수 d[x][y]는 다음 공식에 따라 유도될 수 있다:
d[x][y] = (TransformCoeffQ[x][y] * ((qm[x + (levelIdxSwap * nTbS)][y] + stepWidthModifier[x][y]) + appliedOffset [x][y]),
여기서, TransformCoeffQ는 엔트로피 디코딩된 양자화된 변환 계수를 포함하는 크기 (nTbS)x(nTbS)의 어레이이고,
levelIdx는 개선 서브 계층의 인덱스를 지정하는 변수이고, appliedOffset [x][y] 및 stepWidthModifier [x][y]는 변수이다. appliedOffset [x][y]는 본 출원의 다른 곳에서 설명된 데드존에 대응할 수 있다.
예를 들어, levelIdx는 개선 서브 계층 1에 대해 1과 같을 수 있고 개선 서브 계층 2에 대해 2와 같을 수 있다.
전형적으로, 변수 stepWidthModifier [x][y]는 다음에 따라 유도된다:
dequant_offset_signalled_flag = 0인 경우, stepWidthModifier [x][y] = ((((Floor(-Cconst * Ln (qm[x + (levelIdxSwap * nTbS)][y]))) + Dconst) * (qm[x + (levelIdxSwap * nTbS)][y]2))) / 32768), 여기서, Cconst 및 Dconst는 상수이고 값들 또는 하나의 예에서 각각 5242 및 99614를 가질 수 있다.
일부 실시예에서 양자화 연산은 선형 양자화기를 사용하여 계수를 양자화하는 것을 포함할 수 있으며, 선형 양자화기는 가변 크기의 데드존을 사용하는 것이 바람직하다. 이러한 실시예에서, 데드존의 크기는 양자화 연산에서 사용되는 단계 폭의 미리 결정된 배수, 예를 들어 단계 폭 값의 선형 함수로서 설정될 수 있다. 대안적으로, 단계 폭 값의 비선형 함수가 사용될 수 있다.
양자화 연산에 사용되는 단계 폭의 크기는 일부 바람직한 실시예에서 가변적이며, 데드존의 크기는 더 바람직하게는 가변적 단계 폭에 따라 적응된다.
데드존의 크기는 양자화 연산에 사용된 단계 폭에 승수 파라미터를 승산하여 설정될 수 있으며, 그리고 승수 파라미터의 값은 인코딩이 수행되고 있는 동작 조건, 예를 들어 이용 가능한 비트 레이트를 나타내는 데이터에 기초하여 변경된다. 따라서, 일부 실시예에서 승수는 또한 적응적일 수 있다.
양자화 연산은 전형적으로 하나 이상의 양자화 파라미터에 따라 수행된다. 하나 이상의 양자화 파라미터는 전형적으로 하나 이상의 인코딩된 스트림에서 원하는 비트레이트을 제어하고 제공하는 것 중 적어도 하나로 설정된다. 즉, 하나 이상의 인코딩된 스트림에서 원하는 비트레이트를 제어 및/또는 제공하도록 설정될 수 있다. 원하는 비트레이트는 공통 인코딩된 스트림을 생성하기 위해 모든 스트림에 대해 공통 비트레이트이거나, 또는 상이한 인코딩된 스트림에 대해 상이한 비트레이트가 제공된다.
일부 실시예에서, 하나 이상의 양자화 파라미터는 미리 정의된 비트 레이트 제약의 세트 내에서 원하는 품질 레벨을 제공하거나 품질 레벨을 최대화하도록 설정된다.
방법은 하나 이상의 인코딩된 스트림 및 베이스 인코딩된 스트림을 수신하는 버퍼의 상태를 수신함으로써 양자화 파라미터를 결정하는 단계; 및 양자화 파라미터를 결정하기 위해 이 상태를 사용하는 단계를 포함할 수 있다.
버퍼는 바람직하게는 인코딩된 베이스 스트림 및 인코딩된 개선 스트림을 저장 및/또는 조합하는 데 사용되며, 출력이 일정한 속도로 판독되는 동안 가변적 비트레이트에서 입력을 수신하도록 구성된다. 레이트 제어기는 버퍼가 오버플로우 되거나 비어 있지 않고 데이터가 항상 그 출력에서 판독되도록 이용 가능한 것을 보증하도록 버퍼로부터 상태를 판독할 수 있다. 버퍼의 상태는 또한 하나 이상의 양자화 파라미터를 생성하는 데 사용될 수 있다. 하나 이상의 양자화 파라미터는 버퍼 내의 데이터량에 기초하여 제어될 수 있다.
전형적으로, 양자화 파라미터의 값은 버퍼의 데이터량과 반비례한다.
일부 실시예에서, 양자화 파라미터는 각각의 프레임, 잔차 및/또는 잔차 그룹, 즉, 각각의 프레임, 잔차 및 잔차 그룹 중 적어도 하나에 대해 결정된다. 전형적으로, 프레임에 대한 양자화 파라미터는 이전 양자화 파라미터 세트를 사용하여 프레임에 대한 목표 데이터 크기 및 프레임에 대한 현재 데이터 크기에 기초하여 결정된다. 이들 실시예 중 임의의 것에서, 양자화 파라미터는 이전 양자화 파라미터 세트에 기초할 수 있다.
방법은 정규화된 크기를 하나 이상의 양자화 파라미터에 맵핑하기 위해 곡선 세트를 정의하는 단계를 포함할 수 있으며, 여기서, 각각의 곡선은 현재 프레임의 속성에 따라 달라지는 승수 및 오프셋 중 하나 이상을 포함한다. 정규화된 크기를 양자화 파라미터에 맵핑하기 위해 곡선 세트가 정의될 수 있다. 각각의 곡선은 현재 프레임의 속성에 의존할 수 있는 (예를 들어, 프레임 내에서 인코딩할 정보의 복잡도에 의존할 수 있는) 승수 및 오프셋 중 하나 이상을 가질 수 있다. 승수와 오프셋은 곡선의 형상을 정의할 수 있다. 승수는 양자화 파라미터 Q의 함수인 크기 정규화 함수에 적용될 수 있다. 일 경우에, 현재 크기(즉, Qt-1로 인코딩된 프레임 t의 크기) 및 Qt-1는 곡선의 세트의 공간 내의 지점을 정의하기 위해 사용될 수 있다. 이 지점은 곡선의 세트로부터 최근접 곡선의 세트를 선택하기 위해 사용될 수 있다. 이는 지점 위에 있는 곡선 및 지점 아래에 있는 곡선 또는 지점에 대한 최고 또는 최저 곡선일 수 있다. 최근접 곡선의 세트는 지점과 관련된 새로운 곡선을 결정하기 위해 지점과 함께 보간 함수에서 사용될 수 있다. 이 새로운 곡선이 결정되면, 새로운 곡선에 대한 승수 및 오프셋이 결정될 수 있다. 그 다음, 이 값은 수신된 목표 크기와 함께 사용되어 Qt에 대한 값을 결정할 수 있다(예를 들어, 곡선은 크기와 Q의 함수를 정의할 수 있다). 따라서, 전형적으로 승수는 양자화 파라미터 Q의 함수인 크기 정규화 함수에 적용된다. Qt-1로 인코딩된 프레임 t의 현재 크기 및 Qt-1는 곡선의 세트의 공간 내의 지점을 정의하기 위해 사용될 수 있고, 이 지점은 곡선 세트로부터 최근접 곡선의 세트를 선택하기 위해 사용된다. 최근접한 것은 지점 위에 있는 곡선 및 지점 아래에 있는 곡선 또는 지점에 대한 최고 또는 최저 곡선일 수 있다.
이러한 경우에, 최근접 곡선의 세트는 전형적으로 지점과 관련된 새로운 곡선을 결정하기 위해 지점과 함께 보간 함수에서 사용되고, 결정된 새로운 곡선에 대한 승수 및 오프셋이 결정될 수 있고, 승수의 값 및 결정된 새로운 곡선 값에 대한 오프셋을 수신된 목표 크기와 함께 사용하여 Qt에 대한 값을 결정하는 단계를 더 포함한다.
곡선의 세트는 액세스 가능한 메모리에 저장되고 이전 프레임에 대해 결정된 곡선의 세트에 기초하여 업데이트될 수 있다. 특정 경우에, 적응 양자화는 코딩 유닛 또는 블록 내의 상이한 계수 위치에 대해, 예를 들어, (예를 들어, 2x2 또는 4x4 변환에 대해) 4개 또는 16개의 계수의 어레이 내의 상이한 요소에 대해 상이하게 적용될 수 있다.
일부 실시예에서, 양자화 연산은 양자화 행렬을 사용하여 수행되고, 양자화 행렬은 양자화 행렬 모드 파라미터의 획득된 값에 따라 유도된다. 바람직하게는 이러한 경우에 양자화 행렬 모드 파라미터는 인코딩 프로세스에서 사용될 양자화 행렬을 지정한다.
전형적으로, 각각의, 바람직하게는 상이한, 양자화 행렬이 인코딩된 스트림의 2개 이상의 레벨 각각에 대해 사용된다. 더 바람직하게는, 각각의 인코딩된 스트림에 대해 상이한 양자화 행렬이 사용되며, 여기서, 디폴트 양자화 구성은 미리 결정되고, 디폴트 구성으로부터의 변화가 인코더와 디코더 사이에서 시그널링된다.
이들 실시예에서, 방법은 디폴트 구성 중 적어도 하나를 통해 각각의 인코딩된 스트림에 대해 상이한 양자화 행렬이 사용되게 하는 단계 및 디폴트 구성을 무효화하기 위해 시그널링을 통해 각각의 인코딩된 스트림에 대해 공통 양자화 행렬이 사용되게 하는 단계를 포함할 수 있다.
일부 실시예에서 양자화 행렬은 복수의 개선 레벨 중 하나에 대해서만 사용된다. 양자화 행렬은 전형적으로 계수가 배열된 블록 내 계수의 위치에 의해 인덱싱된다.
일부 실시예에서 베이스 양자화 행렬은 값의 세트로 정의되며, 베이스 양자화 행렬은 하나 이상의 개선 레벨에 대한 단계 폭의 함수인 스케일링 인자에 따라 수정된다. 스케일링 인자는 예를 들어, 단계 폭 파라미터의 클램핑된 함수로서 계산될 수 있다. 일부 실시예에서 양자화 행렬의 각각의 엔트리는 스케일링 인자의 지수 함수를 사용하여 스케일링된다.
제4 양태에 따르면, 인코딩된 스트림을 재구성된 출력 비디오로 디코딩하기 위한 디코더가 제공되며, 디코더는 제1 또는 제2 양태의 방법을 수행하도록 구성된다.
추가 양태에 따르면, 인코딩된 스트림을 재구성된 출력 신호로 디코딩하는 방법(즉, 디코딩하기 위한 방법)이 제공될 수 있으며, 이 방법은 제1 코덱에 따라 제1 베이스 인코딩된 스트림으로부터 디코딩된 제1 출력 신호를 수신하는 단계; 레벨 인코딩된 스트림을 수신하는 단계; 잔차 세트를 획득하기 위해 레벨 인코딩된 스트림을 디코딩하는 단계; 및 잔차 세트를 제1 출력 신호와 조합하여 재구성된 신호를 생성하는 단계를 포함하고, 레벨 인코딩된 스트림을 디코딩하는 단계는 레벨 인코딩된 스트림으로부터 양자화된 계수 세트를 디코딩하는 단계; 양자화된 계수 세트를 탈양자화하는 단계를 포함한다. 조합은 제1 출력 신호의 업샘플링된 버전과 조합하는 것을 포함할 수 있다. 레벨 인코딩된 스트림은 제1 레벨 인코딩된 스트림일 수 있고; 양자화된 계수의 세트는 양자화된 계수의 제1 세트이고; 잔차 세트는 제1 잔차 세트이고, 여기서, 방법은 제2 레벨 인코딩된 스트림을 수신하는 단계; 제2 잔차 세트를 획득하기 위해 제2 레벨 인코딩된 스트림을 디코딩하는 단계; 및 원래 해상도 입력 신호의 재구성을 생성하기 위해 재구성된 신호의 업샘플링된 버전과 제2 잔차 세트를 조합하는 단계를 더 포함할 수 있고, 제2 레벨 인코딩된 스트림을 디코딩하는 단계는 제2 레벨 인코딩된 스트림으로부터 양자화된 계수의 제2 세트를 디코딩하는 단계; 양자화된 계수의 제2 세트를 탈양자화하는 단계를 포함한다.
추가 양태에 따르면, 입력 신호를 인코딩하기 위한 인코더가 제공된다. 추가 양태에 따르면, 입력 신호를 디코딩하기 위한 디코더가 제공된다.
추가 양태에 따르면, 프로세서에 의해 실행될 때 프로세서로 하여금 방법을 수행하게 하는 명령어를 저장하는 비일시적 컴퓨터 판독 가능 저장 매체가 제공된다.
추가 양태에 따르면, 비트스트림 형태의 신호가 제공되며, 상기 신호는 적어도 제1 부분 및 제2 부분을 포함하고, 제1 부분은 디코딩 모듈에 의해 디코딩될 때 디코딩된 신호를 생성하고 제2 부분은 제1 부분을 디코딩하는 데 필요한 정보를 제공하고, 상기 제2 부분은 제1 부분의 하나 이상의 데이터를 탈양자화하기 위해 사용될 탈양자화 파라미터를 나타내는 제1 서브 부분; 및 제1 부분의 하나 이상의 데이터를 탈양자화하기 위해 사용될 프로세스를 나타내는 제2 서브 부분을 포함한다. 제2 부분은 제2 서브 부분에 표시된 프로세스에 대해 조건부로 존재하는 제3 서브 부분을 더 포함할 수 있고, 제3 서브 부분은 제1 부분의 하나 이상의 데이터를 탈양자화하기 위해 사용될 새로운 탈양자화 파라미터 세트를 나타낸다. 예를 들어, 제3 서브 부분은 제2 서브 부분에 표시된 프로세스가 새로운 탈양자화 파라미터 세트가 시그널링되고 제공될 것을 요구하는 경우에만 비트스트림에 존재할 수 있다.
앞서 설명한 양태는 기술적 이점을 제공한다. 특히, 본 개시의 접근법은 시그널링된 탈양자화 파라미터를 디코딩하고 수신하는 효율적이고 유연한 방식을 가능하게 한다. 모든 양자화된 데이터에 대해 항상 동일한 양자화 파라미터를 사용하기 보다는, 이 접근법은 미리 결정된 정보와 시그널링된 정보의 조합에 기초하여 양자화된 데이터를 탈양자화하는 데 사용되는 양자화 파라미터의 유연한 사용을 가능하게 하는 것을 제공한다. 이는 차례로 더 효과적이고 세분화되고 정확한 탈양자화를 가능하게 하여 더 나은 디코딩된 데이터를 생성한다. 두 번째로, 데이터의 시그널링은 비트스트림을 최적화하고 필요하지 않을 때 데이터를 절약하는 방식으로 수행될 수 있다. 예를 들어, 일부 구현에서, 양자화 파라미터가 수정될 필요가 있는 경우에만 수정 파라미터가 발송된다.
도 1은 인코딩 프로세스의 하이 레벨 개략도를 도시한다.
도 2는 디코딩 프로세스의 하이 레벨 개략도를 도시한다.
도 3은 인코딩 프로세스 및 특정 인코딩 단계의 하이 레벨 개략도를 도시한다.
도 4는 디코딩 프로세스 및 특정 디코딩 단계의 하이 레벨 개략도를 도시한다.
도 5는 인코딩 프로세스의 하이 레벨 개략도를 도시한다.
도 6은 추가 디코딩 프로세스의 하이 레벨 개략도를 도시한다.
도 7은 본 출원에 설명된 개념의 흐름도를 도시한다.
도 8a 내지 도 8d는 인코딩 프로세스의 양자화가 특정 예에 따라 수행될 수 있는 방법을 도시한다.
도 9는 예시적인 디코딩 모듈을 도시한다.
도 10은 예시적인 디코딩 프로세스를 도시한다.
도 11은 예시적인 인코딩 모듈을 도시한다.
도 12는 인코더의 개략도이다.
도 13은 디코더의 개략도이다.
본 발명은 방법에 관한 것이다. 특히, 본 발명은 신호를 인코딩 및 디코딩하는 방법(즉, 디코딩하기 위한 방법)에 관한 것이다. 데이터 처리는 데이터의 획득, 유도, 출력, 수신 및 재구성을 포함할 수 있지만 이에 제한되지 않는다.
본 출원에서 설명된 코딩 기술은 비디오 코딩 포맷, 베이스 코덱(예를 들어, AVC, HEVC 또는 임의의 다른 현재 또는 미래 코덱)을 다른 기술을 사용하여 인코딩된 코딩된 데이터의 개선 레벨과 조합하는 유연하고 적응 가능하며 매우 효율적이며 계산적으로 저렴한 코딩 포맷이다. 이 기술은 베이스 스트림을 형성하기 위해 베이스 코덱을 사용하여 인코딩된 다운샘플링된 소스 신호를 사용한다. 개선 스트림은 예를 들어 해상도를 증가시키거나 프레임 레이트를 증가시킴으로써 베이스 스트림을 보정하거나 개선시키는 인코딩된 잔차 세트를 사용하여 형성된다. 계층적 구조에는 다수의 레벨의 개선 데이터가 있을 수 있다. 특정 장치에서, 베이스 스트림은 하드웨어 디코더에 의해 디코딩될 수 있는 반면 개선 스트림은 소프트웨어 구현에 적합할 수 있다.
새로운 코딩 기술에 사용되는 임의의 최적화는 개선 스트림의 특정 요건 또는 제약에 맞춤화되고 복잡도가 낮은 것이 중요하다. 이러한 요건 또는 제약은 다음을 포함한다: 개선 스트림의 소프트웨어 디코딩의 필요성으로 인한 계산 능력의 잠재적인 감소; 디코딩된 잔차 세트와 디코딩된 프레임의 조합에 대한 필요성; 잔차 데이터의 가능한 구조, 즉, 넓은 범위에 걸쳐 매우 가변적인 데이터 값과 함께 0 값의 상대적으로 높은 비율; 계수의 양자화된 블록의 뉘앙스; 및, 다양한 성분으로 분리된 이산 잔차 프레임의 세트인 개선 스트림의 구조. 개선 스트림에 대해 부여된 제약은 개선 스트림이 베이스 디코딩된 비디오의 개별 프레임을 효과적으로 보정하거나 개선할 수 있게 하기 위해 간단하고 빠른 엔트로피 코딩 동작이 필수적임을 의미한다는 점에 유의한다. 일부 시나리오에서는 베이스 스트림도 조합 전에 실질적으로 동시에 디코딩되어 자원에 부담을 준다는 점에 유의한다.
한 경우에, 본 출원에 설명된 방법은 비디오 신호의 상이한 컬러 성분을 반영하는 소위 데이터의 평면에 적용될 수 있다. 예를 들어, 본 출원에 설명된 방법은 서로 다른 컬러 채널을 반영하는 YUV 또는 RGB 데이터의 서로 다른 평면에 적용될 수 있다. 다른 컬러 채널을 병렬로 처리할 수 있다. 따라서, 본 출원에 설명된 바와 같은 잔차 세트에 대한 참조는 다수의 잔차 세트를 포함할 수 있고, 여기서, 각각의 컬러 성분은 조합된 개선 스트림의 일부를 형성하는 서로 다른 잔차 세트를 가진다. 각각의 스트림의 컴포넌트는 임의의 논리적 순서로 대조될 수 있으며, 예를 들어 동일한 레벨의 각각의 평면이 그룹화되어 함께 발송될 수 있거나 대안적으로 각각의 평면의 다른 레벨에 대한 잔차 세트가 함께 발송될 수 있다.
본 문서는 바람직하게는 다음 ISO/IEC 문서의 요건을 충족한다: 문헌 ["Call for Proposals for Low Complexity Video Coding Enhancements" ISO/IEC JTC1/SC29/WG11 N17944, Macao, CN, Oct. 2018] 및 ["Requirements for Low Complexity Video Coding Enhancements" ISO/IEC JTC1/SC29/WG11 N18098, Macao, CN, Oct. 2018](본 출원에 참조로 포함됨).
현재 설명되는 기술이 적용될 수 있는 제안된 인코딩 방식의 일반적인 구조는 베이스 코덱으로 인코딩된 다운샘플링된 소스 신호를 사용하고, 보정된 픽처를 생성하기 위해 베이스 코덱의 디코딩된 출력에 제1 레벨의 보정 데이터를 추가하고, 그 후 보정된 픽처의 업샘플링된 버전에 추가적인 레벨의 개선 데이터를 추가한다. 따라서, 스트림은 베이스 스트림과 개선 스트림이 되는 것으로 고려된다. 이 구조는 많은 상황에 대한 뛰어난 유연성과 적응성을 허용하는 복수의 자유도를 생성하며, 따라서, OTT(Over-The-Top) 송신, 라이브 스트리밍, 라이브 UHD(Ultra High Definition) 방송 등을 포함한 많은 사용 사례에 적절한 코딩 포맷을 형성한다. 베이스 코덱의 디코딩된 출력은 시청을 위한 것이 아니지만, 이는 저해상도에서 완전히 디코딩된 비디오이며 출력이 기존 디코더와 호환되게 하고, 적합하다고 고려되는, 경우 저해상도 출력으로도 사용할 수 있다. 특정 경우에, 베이스 코덱을 사용하여 베이스 스트림을 생성할 수 있다. 베이스 코덱은 모듈식 또는 "블랙 박스" 방식으로 제어되는 독립적 코덱을 포함할 수 있다. 본 출원에 설명된 방법은 프로세서에 의해 실행되고 하드웨어 및/또는 소프트웨어 구현 베이스 코덱에 대한 기능 호출을 수행하는 컴퓨터 프로그램 코드를 통해 구현될 수 있다.
일반적으로, 본 출원에 사용되는 바와 같은 "잔차"이라는 용어는 참조 어레이 또는 참조 프레임의 값과 데이터의 실제 어레이 또는 프레임 사이의 차이를 지칭한다. 어레이는 코딩 유닛을 나타내는 1차원 또는 2차원 어레이일 수 있다. 예를 들어, 코딩 유닛은 입력 비디오 프레임의 유사한 크기의 영역에 대응하는 잔차 값의 2x2 또는 4x4 세트일 수 있다. 이러한 일반화된 예는 수행되는 인코딩 동작 및 입력 신호의 특성에 대해 애그노스틱하다는 점에 유의해야 한다. 본 출원에 사용되는 바와 같은 "잔차 데이터"에 대한 참조는 잔차 세트, 예를 들어 잔차 세트 자체 또는 잔차 세트에 대해 수행되는 데이터 처리 동작 세트의 출력으로부터 유도된 데이터를 지칭한다. 본 설명 전반에 걸쳐, 일반적으로 잔차 세트는 복수의 잔차 또는 잔차 요소를 포함하고, 각각의 잔차 또는 잔차 요소는 신호 요소, 즉, 신호 또는 원본 데이터의 요소에 대응한다. 신호는 이미지 또는 비디오일 수 있다. 이러한 예에서, 잔차 세트는 비디오의 이미지 또는 프레임에 대응하고, 각각의 잔차는 신호의 픽셀과 관련되고, 픽셀은 신호 요소이다. 본 출원에 개시된 예는 전체 데이터 크기를 감소시키면서 인코딩 파이프라인 또는 최종적으로 디코딩된 이미지에 영향을 미치기 위해 이러한 잔차가 어떻게 수정(즉, 처리)될 수 있는지를 설명한다. 잔차 또는 세트는 잔차 요소(또는 잔차)별 기반으로 처리될 수 있거나, 또는 타일 또는 코딩 유닛이 잔차 세트의 이웃 서브세트인 경우, 타일별 또는 코딩 유닛별과 같은 그룹 기반으로 처리될 수 있다. 일 경우에, 타일은 더 작은 코딩 유닛의 그룹을 포함할 수 있다. 처리는 비디오의 각각의 프레임에 대해 수행되거나 시퀀스의 설정된 프레임 수에 대해서만 수행될 수 있다는 것에 유의한다.
일반적으로, 각각의 또는 양자 모두의 개선 스트림은 네트워크 추상화 계층 유닛(NALU)의 세트를 사용하여 하나 이상의 개선 비트스트림 내에 캡슐화될 수 있다. NALU는 개선을 올바른 베이스 재구성된 프레임에 적용하기 위해 개선 비트스트림을 캡슐화하도록 의도된다. NALU는, 예를 들어, 개선이 적용되어야만 하는 베이스 디코더 재구성된 프레임 비트스트림을 포함하는 NALU에 대한 참조 인덱스를 포함할 수 있다. 이러한 방식으로, 개선은 베이스 스트림에 동기화되고, 각각의 비트스트림의 프레임이 조합되어, 디코딩된 출력 비디오가 생성될 수 있다(즉, 개선 레벨의 각각의 프레임의 잔차가 베이스 디코딩된 스트림의 프레임과 조합된다). 픽처 그룹은 다수의 NALU를 나타낼 수 있다.
앞서 설명한 초기 프로세스를 참조하면, 여기서, 베이스 스트림은 개선 스트림 내에서 2개의 레벨(또는 하위 레벨)의 개선과 함께 제공되며, 일반화된 인코딩 프로세스의 예가 도 1의 블록도에 도시되어 있다. 입력된 전체 해상도 비디오(100)는 다양한 인코딩된 스트림(101, 102, 103)을 생성하도록 처리된다. 제1 인코딩된 스트림(인코딩된 베이스 스트림)은 베이스 코덱(예를 들어, AVC, HEVC, 또는 임의의 다른 코덱)에 입력 비디오의 다운샘플링된 버전을 공급함으로써 생성된다. 인코딩된 베이스 스트림은 베이스 계층 또는 베이스 레벨로 지칭될 수 있다. 제2 인코딩된 스트림(인코딩된 레벨 1 스트림)은 재구성된 베이스 코덱 비디오와 입력 비디오의 다운샘플링된 버전 사이의 차이를 취함으로써 획득된 잔차를 처리함으로써 생성된다. 제3 인코딩된 스트림(인코딩된 레벨 2 스트림)은 재구성된 베이스 코딩된 비디오의 보정된 버전의 업샘플링된 버전과 입력 비디오 사이의 차이를 취함으로써 획득된 잔차를 처리함으로써 생성된다. 특정 경우에, 도 1의 컴포넌트는 일반적으로 저복잡도 인코더를 제공할 수 있다. 특정 경우에, 개선 스트림은 저복잡도 인코더의 일부를 형성하는 인코딩 프로세스에 의해 생성될 수 있고 저복잡도 인코더는 독립적인 베이스 인코더 및 디코더(예를 들어, 베이스 코덱으로서 패키징됨)를 제어하도록 구성될 수 있다. 다른 경우에, 베이스 인코더 및 디코더는 저복잡도 인코더의 일부로서 제공될 수 있다. 일 경우에, 도 1의 저복잡도 인코더는 베이스 코덱에 대한 래퍼의 한 형태로 볼 수 있으며, 여기서, 베이스 코덱의 기능은 저복잡도 인코더를 구현하는 엔티티에서 은닉될 수 있다.
다운샘플링 컴포넌트(105)에 의해 예시된 다운샘플링 동작은 베이스 코덱의 베이스 인코더(113)에 의해 인코딩될 다운샘플링된 비디오를 생성하기 위해 입력 비디오에 적용될 수 있다. 다운샘플링은 수직 및 수평 방향 양자 모두에서, 또는 대안적으로 수평 방향에서만 수행될 수 있다. 베이스 인코더(113) 및 베이스 디코더(114)는 베이스 코덱에 의해(예를 들어, 공통 코덱의 서로 다른 기능으로서) 구현될 수 있다. 베이스 코덱, 및/또는 베이스 인코더(113) 및 베이스 디코더(114) 중 하나 이상은 적절하게 구성된 전자 회로(예를 들어, 하드웨어 인코더/디코더) 및/또는 프로세서에 의해 실행되는 컴퓨터 프로그램 코드를 포함할 수 있다.
각각의 개선 스트림 인코딩 프로세스는 반드시 업샘플링 단계를 포함하지는 않을 수 있다. 예를 들어, 도 1에서 제1 개선 스트림은 개념적으로 보정 스트림인 반면 제2 개선 스트림은 개선 레벨을 제공하기 위해 업샘플링된다.
개선 스트림을 생성하는 프로세스를 더 구체적으로 살펴보면, 인코딩된 레벨 1 스트림을 생성하기 위해 인코딩된 베이스 스트림이 베이스 디코더(114)에 의해 디코딩된다(즉, 디코딩된 베이스 스트림을 생성하기 위해 인코딩된 베이스 스트림에 디코딩 동작이 적용된다. 디코딩은 베이스 코덱의 디코딩 기능 또는 모드에 의해 수행될 수 있다. 그 후, 디코딩된 베이스 스트림과 다운샘플링된 입력 비디오 사이의 차이가 레벨 1 비교기(110)에서 생성된다(즉, 제1 잔차 세트를 생성하기 위해 다운샘플링된 입력 비디오 및 디코딩된 베이스 스트림에 감산 동작이 적용된다). 비교기(110)의 출력은 제1 잔차 세트, 예를 들어 잔차 데이터의 표면 또는 프레임으로서 지칭될 수 있고, 여기서, 잔차 값은 다운샘플링 블록(105)의 출력, 베이스 디코더(114) 및 베이스 인코더(113)의 해상도에서 각각의 픽처 요소에 대해 결정된다.
그 다음, 차이는 인코딩된 레벨 1 스트림(102)을 생성하기 위해 제1 인코더(115)(즉, 레벨 1 인코더)에 의해 인코딩된다(즉, 인코딩 동작이 제1 개선 스트림을 생성하기 위해 제1 잔차 세트에 적용됨).
앞서 설명한 바와 같이, 개선 스트림은 제1 개선 레벨(102) 및 제2 개선 레벨(103)을 포함할 수 있다. 제1 개선 레벨(102)은 보정된 스트림, 예를 들어 입력 비디오(100)보다 더 낮은 해상도에서 베이스 인코딩/디코딩된 비디오 신호에 보정 레벨을 제공하는 스트림인 것으로 고려될 수 있다. 제2 개선 레벨(103)은 보정된 스트림을 원본 입력 비디오(100)로 변환하는, 예를 들어 보정된 스트림으로부터 재구성되는 신호에 개선 또는 보정 레벨을 적용하는 추가적인 개선 레벨인 것으로 고려될 수 있다.
도 1의 예에서, 제2 개선 레벨(103)은 추가 잔차 세트를 인코딩함으로써 생성된다. 추가 잔차 세트는 레벨 2 비교기(119)에 의해 생성된다. 레벨 2 비교기(119)는 디코딩된 레벨 1 스트림의 업샘플링된 버전, 예를 들어 업샘플링 컴포넌트(117)의 출력과 입력 비디오(100) 사이의 차이를 결정한다. 업샘플링 컴포넌트(117)에 대한 입력은 제1 인코더(115)의 출력에 제1 디코더(즉, 레벨 1 디코더)를 적용함으로써 생성된다. 이는 디코딩된 레벨 1 잔차 세트를 생성한다. 이는 그 다음 합산 컴포넌트(120)에서 베이스 디코더(114)의 출력과 조합된다. 이는 베이스 디코더(114)의 출력에 레벨 1 잔차를 효과적으로 적용한다. 이는 레벨 1 인코딩 및 디코딩 프로세스의 손실이 레벨 2 잔차에 의해 보정될 수 있게 한다. 합산 컴포넌트(120)의 출력은 디코더에서 인코딩된 베이스 스트림(101) 및 인코딩된 레벨 1 스트림(102)에 레벨 1 처리를 적용한 출력을 나타내는 모사된 신호로서 볼 수 있다.
언급한 바와 같이, 업샘플링된 스트림은 입력 비디오와 비교되어 추가 잔차 세트를 생성한다(즉, 차연산이 업샘플링된 재생성 스트림에 적용되어, 추가 잔차 세트를 생성한다). 그 다음, 추가 잔차 세트는 인코딩된 레벨 2 개선 스트림으로서 제2 인코더(121)(즉, 레벨 2 인코더)에 의해 인코딩된다(즉, 그 다음, 인코딩된 추가 개선 스트림을 생성하기 위해 추가 잔차 세트에 인코딩 동작이 적용된다).
따라서, 도 1에 예시되고 앞서 설명된 바와 같이, 인코딩 프로세스의 출력은 베이스 스트림(101) 및 바람직하게는 제1 개선 레벨 및 추가 개선 레벨을 포함하는 하나 이상의 개선 스트림(102, 103)이다. 3개의 스트림(101, 102 및 103)은 입력 비디오(100)를 나타내는 비디오 인코딩 프레임워크에 대한 조합된 스트림을 생성하기 위해 제어 헤더와 같은 추가 정보와 함께 또는 추가 정보 없이 조합될 수 있다. 도 1에 도시된 컴포넌트는 예를 들어 특정 해상도 레벨에서 프레임의 2x2 또는 4x4 부분에 대응하는 데이터의 블록 또는 코딩 유닛에 대해 동작할 수 있음을 유의해야 한다. 컴포넌트는 어떠한 블록간 의존성도 없이 동작하므로 프레임 내의 다수의 블록 또는 코딩 유닛에 병렬로 적용될 수 있다. 이는 블록 사이에 의존성(예를 들어, 공간 의존성 또는 시간 의존성)이 있는 비교대상 비디오 인코딩 방식과 다르다. 비교대상 비디오 인코딩 방식의 의존성은 병렬화 레벨을 제한하고 훨씬 더 높은 복잡도를 필요로 한다.
대응하는 일반화된 디코딩 프로세스가 도 2의 블록도에 도시되어 있다. 도 2는 도 1의 저복잡도 인코더에 대응하는 저복잡도 디코더를 도시한다고 말할 수 있다. 저복잡도 디코더는 추가 디코딩 정보를 포함하는 헤더(204)와 함께 저복잡도 인코더에 의해 생성된 3개의 스트림(101, 102, 103)을 수신한다. 인코딩된 베이스 스트림(101)은 저복잡도 인코더에서 사용되는 베이스 코덱에 대응하는 베이스 디코더(210)에 의해 디코딩된다. 인코딩된 레벨 1 스트림(102)은 도 1의 제1 인코더(115)에 의해 인코딩된 제1 잔차 세트를 디코딩하는 제1 디코더(211)(즉, 레벨 1 디코더)에 의해 수신된다. 제1 합산 컴포넌트(212)에서, 베이스 디코더(210)의 출력은 제1 디코더(211)로부터 획득된 디코딩된 잔차와 조합된다. 레벨 1 재구성된 비디오 신호라고 말할 수 있는 조합된 비디오는 업샘플링 컴포넌트(213)에 의해 업샘플링된다. 인코딩된 레벨 2 스트림(103)은 제2 디코더(214)(즉, 레벨 2 디코더)에 의해 수신된다. 제2 디코더(214)는 도 1의 제2 인코더(121)에 의해 인코딩된 제2 잔차 세트를 디코딩한다. 헤더(204)가 제2 디코더(214)에 의해 사용되는 것으로 도 2에 도시되어 있지만, 이는 또한 베이스 디코더(210) 뿐만 아니라 또한 제1 디코더(211)에 의해 사용될 수 있다. 제2 디코더(214)의 출력은 제2 세트의 디코딩된 잔차이다. 이들은 제1 잔차 세트 및 업샘플링 컴포넌트(213)에 대한 입력에 대해 더 높은 해상도일 수 있다. 제2 합산 컴포넌트(215)에서, 제2 디코더(214)로부터의 제2 잔차 세트는 업샘플링 컴포넌트(213)의 출력, 즉, 업샘플링된 재구성된 레벨 1 신호와 조합되어 디코딩된 비디오(250)를 재구성한다.
저복잡도 인코더에 따라, 도 2의 저복잡도 디코더는 비디오 신호의 주어진 프레임의 코딩 유닛 또는 상이한 블록에 대해 병렬로 동작할 수 있다. 추가적으로, 베이스 디코더(210), 제1 디코더(211) 및 제2 디코더(214) 중 2개 이상의 디코딩이 병렬로 수행될 수 있다. 이는 블록간 의존성이 없기 때문에 가능하다.
디코딩 프로세스에서, 디코더는 헤더(204)(글로벌 구성 정보, 픽처 또는 프레임 구성 정보, 및 데이터 블록 구성 정보를 포함할 수 있음)를 파싱하고 이러한 헤더에 기초하여 저복잡도 디코더를 구성할 수 있다. 입력 비디오를 재생성하기 위해, 저복잡도 디코더는 베이스 스트림, 제1 개선 스트림 및 추가 또는 제2 개선 스트림 각각을 디코딩할 수 있다. 스트림의 프레임은 동기화되고 그 후 조합되어 디코딩된 비디오(250)를 유도할 수 있다. 디코딩된 비디오(250)는 저복잡도 인코더 및 디코더의 구성에 따라 원본 입력 비디오(100)의 손실 또는 무손실 재구성일 수 있다. 많은 경우에, 디코딩된 비디오(250)는 손실이 디코딩된 비디오(250)의 인식에 감소되거나 최소한의 영향을 갖는 원본 입력 비디오(100)의 손실 재구성일 수 있다.
도 1 및 도 2 각각에서, 레벨 2 및 레벨 1 인코딩 동작은 변환, 양자화 및 엔트로피 인코딩의 단계를 (예를 들어, 이 순서로) 포함할 수 있다. 유사하게, 디코딩 스테이지에서, 잔차는 엔트로피 디코더, 탈양자화기 및 역변환 모듈을 통해 (예를 들어, 이 순서로) 전달될 수 있다. 임의의 적절한 인코딩 및 대응하는 디코딩 동작이 사용될 수 있다. 그러나, 바람직하게는, 레벨 2 및 레벨 1 인코딩 단계는 (예를 들어, 인코딩 디바이스에서 하나 이상의 중앙 또는 그래픽 처리 유닛에 의해 실행되는) 소프트웨어에서 수행될 수 있다.
본 출원에 설명된 변환은 아다마르 기반 변환과 같은 방향성 분해 변환을 사용할 수 있다. 양자 모두는 잔차의 평탄화된 코딩 유닛(즉, 잔차의 2x2 또는 4x4 블록)에 적용되는 작은 커널 또는 행렬을 포함할 수 있다. 변환에 대한 더 자세한 내용은 예를 들어 본 출원에 참조로 포함된 특허 출원 PCT/EP2013/059847 또는 PCT/GB2017/052632에서 찾을 수 있다. 인코더는 사용될 상이한 변환 사이에서, 예를 들어 적용할 커널의 크기 사이에서 선택할 수 있다.
변환은 잔차 정보를 4개의 표면으로 변환할 수 있다. 예를 들어, 변환은 다음 성분을 생성할 수 있다: 평균, 수직, 수평 및 대각선. 본 개시에서 앞서 설명한 바와 같이, 변환에 의해 출력되는 이러한 성분은 설명된 방법에 따라 양자화될 계수로서 이러한 실시예에서 취해질 수 있다.
요약하면, 본 출원의 방법 및 장치는 따라서 상이한 인코딩 및/또는 디코딩 접근법에 작동되는 개선 계층에 대한 기준선으로서 작동하는, 기존 인코딩 및/또는 디코딩 알고리즘(예컨대, AVC/H.264, HEVC/H.265 등과 같은 MPEG 표준 및 VP9, AV1 등과 같은 다른 비표준 알고리즘) 위에 구축되는 전체적 접근법에 기초한다. 예제의 전체적 접근법 이면에 있는 아이디어는 MPEG 계열의 알고리즘에서 사용되는 블록 기반 접근법의 사용과는 반대로 비디오 프레임을 계층적으로 인코딩/디코딩하는 것이다. 프레임을 계층적으로 인코딩하는 것은 전체 프레임에 대한 잔차를 생성한 다음 데시메이트된 프레임 등을 생성하는 것을 포함한다.
풀 사이즈 비디오 프레임에 대한 비디오 압축 잔차 데이터는 LoQ-2(예를 들어, HD 비디오 프레임의 경우 1920 x 1080 또는 UHD 프레임의 경우 그 이상)로 지칭될 수 있는 반면 데시메이트된 프레임의 것은 LoQ-x로 지칭될 수 있으며, 여기서, x는 계층적 데시메이션에 대응하는 수를 나타낸다. 도 1 및 도 2의 설명된 예에서, 변수 x는 제1 및 제2 개선 스트림을 나타내는 1 및 2의 값을 가질 수 있다. 따라서, 압축 잔차가 생성되는 2개의 계층적 레벨이 있다. 어떠한 기능의 변경도 없이 레벨에 대한 다른 명명 방식도 적용될 수 있다(예를 들어, 본 출원에 설명된 레벨 1 및 레벨 2 개선 스트림은 대안적으로 레벨 1 및 레벨 2 스트림으로 지칭될 수 있음- 최고 해상도로부터의 카운트다운을 나타냄).
보다 상세한 인코딩 프로세스가 도 3의 블록도에 도시되어 있다. 인코딩 프로세스는 점선으로 도시된 바와 같이 2개의 절반으로 나누어진다. 점선 아래에는 인코더(300)의 베이스 레벨이 있으며, 이는 하드웨어 또는 소프트웨어에서 유용하게 구현될 수 있다. 점선 위에는 소프트웨어에서 유용하게 구현될 수 있는 개선 레벨이 있다. 인코더(300)는 개선 레벨 프로세스만을 포함하거나, 필요에 따라 베이스 레벨 프로세스와 개선 레벨 프로세스의 조합을 포함할 수 있다. 인코더(300)는 특히 개선 레벨에서 소프트웨어로 유용하게 구현될 수 있다. 이 배열은 예를 들어 펌웨어(예를 들어, 소프트웨어) 업데이트를 사용한, 베이스 레벨을 제공하는 레거시 하드웨어 인코더의 업그레이드를 허용하며, 여기서, 펌웨어는 개선 레벨을 제공하도록 구성된다. 더 새로운 디바이스에서, 베이스 레벨과 개선 레벨이 모두 하드웨어 및/또는 하드웨어와 소프트웨어의 조합으로 제공될 수 있다.
일반적인 레벨의 인코더 토폴로지는 다음과 같다: 인코더(300)는 입력 신호(30)를 수신하기 위한 입력 I를 포함한다. 입력 신호(30)는 입력 비디오 신호를 포함할 수 있고, 여기서, 인코더는 프레임 단위로 적용된다. 입력 I는 다운 샘플러(305D) 및 처리 블록(300-2)에 연결된다. 다운 샘플러(305D)는 도 1의 다운샘플링 컴포넌트(105)에 대응할 수 있고 처리 블록(300-2)은 도 1의 제2 인코더(121)에 대응할 수 있다. 다운 샘플러(305D)는 인코더(300)의 베이스 레벨에서 베이스 코덱(320)에 출력한다. 베이스 코덱(320)은 도 1의 베이스 인코더(113) 및 베이스 디코더(114)를 구현할 수 있다. 다운 샘플러(305D)는 또한 처리 블록(300-1)에 출력한다. 처리 블록(300-1)은 도 1의 제1 인코더(115)에 대응할 수 있다. 처리 블록(300-1)은 출력을 업샘플러(305U)로 전달하고, 업샘플러(305U)는 차례로 처리 블록(300-2)으로 출력한다. 업샘플러(305U)는 도 1의 업샘플링 컴포넌트(117)에 대응할 수 있다. 각각의 처리 블록(300-2 및 300-1)은 다음 모듈 중 하나 이상을 포함한다: 변환 블록(310), 양자화 블록(320), 엔트로피 인코딩 블록(330) 및 잔차 처리 블록(350). 잔차 블록(350)은 변환 블록(310) 이전에 발생할 수 있고/있거나 처리 블록(300)에서 잔차 처리를 제어할 수 있다. 처리 순서는 도면에 설명된 바와 같을 수 있다.
이 예에서 전체(또는 최고) 해상도 비디오와 같은 입력 신호(30)는 인코더(300)에 의해 처리되어 다양한 인코딩된 스트림을 생성한다. 베이스 인코딩된 스트림은 다운 샘플러(305D)를 사용하여 입력 비디오(30)의 다운샘플링된 버전을 베이스 레벨에서 베이스 코덱(320)(예를 들어, AVC, HEVC, 또는 임의의 다른 코덱)에 공급함으로써 생성된다. 베이스 인코딩된 스트림은 베이스 코덱(320)의 베이스 인코더의 출력을 포함할 수 있다. 제1 인코딩된 스트림(인코딩된 레벨 1 스트림)은 인코딩된 베이스 스트림을 재구성하여 베이스 재구성을 생성한 다음 베이스 재구성과 입력 비디오(30)의 다운샘플링된 버전 사이의 차이를 취함으로써 생성된다. 인코딩된 베이스 스트림을 재구성하는 것은 베이스 코덱으로부터 디코딩된 베이스 스트림을 수신하는 것을 포함할 수 있다(즉, 처리 블록(300-1)에 대한 입력은 도 1에 도시된 바와 같은 베이스 디코딩된 스트림을 포함한다). 그 다음, 차이 신호가 인코딩된 레벨 1 스트림을 생성하기 위해 블록(300-1)에서 처리된다. 블록(300-1)은 변환 블록(310-1), 양자화 블록(320-1) 및 엔트로피 인코딩 블록(330-1)을 포함한다. 제2 인코딩된 스트림(인코딩된 레벨 2 스트림)은 업샘플러(305U)를 사용하여 베이스 재구성의 보정된 버전을 업샘플링하고 베이스 재구성의 보정된 버전과 입력 신호(30) 사이의 차이를 취함으로써 생성된다. 그 다음, 이 차이 신호는 인코딩된 레벨 2 스트림을 생성하기 위해 블록(300-2)에서 처리된다. 블록(300-2)은 변환 블록(310-2), 양자화 블록(320-2), 엔트로피 인코딩 블록(330-2) 및 잔차 처리 블록(350-2)을 포함한다. 처리 블록(300-1)에 따라, 블록은 도면에 도시된 순서로 수행될 수 있다(예를 들어, 잔차 처리, 그 이후, 변환, 그 이후, 양자화, 그 이후, 엔트로피 인코딩).
양자화 방식은 특정 변수는 특정 이산 크기만을 취할 수 있도록 잔차 신호를 양자로 생성하는 데 유용할 수 있다. 일 경우에, 양자화는 미리 결정된 단계 폭에 의한 제산을 수행하는 것을 포함한다. 이는 둘 모두의 레벨(1 및 2)에 모두 적용될 수 있다. 예를 들어, 블록(320)에서의 양자화는 변환된 잔차 값을 단계 폭으로 나누는 것을 포함할 수 있다(예를 들어, 여기서, 정수 몫이 양자화된 값을 생성하기 위해 사용되고 나머지는 무시됨). 단계 폭은 미리 결정될 수 있고, 예를 들어 원하는 양자화 레벨에 기초하여 선택될 수 있다. 일 경우에, 단계 폭에 의한 제산은 역수 단계 폭에 의한 승산으로 변환될 수 있고, 하드웨어에서 보다 효율적으로 구현될 수 있다. 이 경우에, 블록(320)에서와 같은 탈양자화는 단계 폭에 의한 승산을 포함할 수 있다. 본 출원에 설명된 바와 같은 엔트로피 인코딩은 RLE(run length encoding)을 포함할 수 있고, 이때, 인코딩된 출력을 처리하는 것은 하프만 인코더를 사용하여 처리된다. 특정 경우에, 엔트로피 인코딩이 필요한 경우 이러한 방식 중 단지 하나만을 사용할 수 있다.
인코딩된 베이스 스트림은 베이스 레벨 스트림으로 지칭될 수 있다.
앞서 설명한 바와 같이, 잔차는 이미지 신호의 원래 형태를 이미지 신호의 재구성된 형태와 비교함으로써 계산된다. 예를 들어, 한 경우에, L-2 개선 스트림에 대한 잔차는 이미지 신호의 원래 형태(예를 들어, 도면에 표시된 바와 같은 입력 비디오)로부터 업샘플링의 출력을 감산함으로써 결정된다. 업샘플링에 대한 입력은 모사된 디코딩 이후의 신호의 재구성이라고 말할 수 있다. 다른 경우에, L-1 개선 스트림에 대한 잔차는 베이스 디코더에 의해 출력된 이미지 스트림을 원래 이미지 신호의 다운샘플링된 형태(예를 들어, 다운샘플링의 출력)로부터 감산함으로써 결정된다.
도 3의 인코더에 대응하는 디코딩 프로세스를 수행하는 디코더(400)는 도 4의 블록도에 도시되어 있다. 디코딩 프로세스는 점선으로 도시된 바와 같이 2개의 절반으로 나누어진다. 점선 아래는 디코더(400)의 베이스 레벨이며, 이는 하드웨어에서 유용하게 구현될 수 있다. 점선 위에는 소프트웨어에서 유용하게 구현될 수 있는 개선 레벨이 있다. 디코더(400)는 개선 레벨 프로세스만을 포함하거나, 필요에 따라 베이스 레벨 프로세스와 개선 레벨 프로세스의 조합을 포함할 수 있다. 디코더(400)는 특히 개선 레벨에서 소프트웨어로 유용하게 구현될 수 있고, 레거시 디코딩 기술, 특히 레거시 하드웨어 기술 위에 적절하게 배치할 수 있다. 레거시 기술은 이미 시장에 나와 있고 교체하는 데 불편하고/하거나 비용이 많이 들며 여전히 신호 디코딩 목적으로 사용될 수 있는 이전에 개발 및 판매된 오래된 기술을 의미한다. 다른 경우에, 베이스 레벨은 임의의 기존 및/또는 미래의 비디오 인코딩 도구 또는 기술을 포함할 수 있다.
일반적인 레벨의 디코더 토폴로지는 다음과 같다. 디코더(400)는 인코딩된 베이스 스트림, 인코딩된 레벨 1 스트림, 및 인코딩된 레벨 2 스트림을 추가 디코딩 정보를 포함하는 선택적인 헤더와 함께 포함하는 하나 이상의 입력 신호를 수신하기 위한 입력(도시되지 않음)을 포함한다. 디코더(400)는 베이스 레벨에서의 베이스 디코더(420), 및 개선 레벨에서의 처리 블록(400-1,400-2)을 포함한다. 업샘플러(405U)가 또한 처리 블록(400-1)과 처리 블록(400-2) 사이에 제공되어 처리 블록(400-1)에 의해 출력된 신호의 업샘플링된 버전을 처리 블록(400-2)에 제공한다. 베이스 디코더(420)는 도 2의 베이스 디코더(210)에 대응할 수 있고, 처리 블록(400-1)은 도 2의 제1 디코더(211)에 대응할 수 있고, 처리 블록(400-2)은 도 2의 제2 디코더(214)에 대응할 수 있고, 업샘플러(405U)는 도 2의 업샘플러(213)에 대응할 수 있다.
디코더(400)는 하나 이상의 입력 신호를 수신하고 인코더(300)에 의해 생성된 3개의 스트림을 유도한다. 인코딩된 베이스 스트림은 베이스 디코더(420)로 전송되고 이에 의해 디코딩되며, 베이스 디코더는 인코더(300)에서 사용되는 베이스 코덱(420)에 대응하고 베이스 레벨에서 인코딩 프로세스를 역전시키는 역할을 한다. 인코딩된 레벨 1 스트림은 인코더(300)에 의해 생성된 제1 잔차 세트를 재생성하기 위해 디코더(400)의 블록(400-1)에 의해 처리된다. 블록(400-1)은 인코더(300)의 처리 블록(300-1)에 대응하고, 기본(baic) 레벨에서 블록(300-1)의 처리를 역전시키거나 실질적으로 역전시키도록 작용한다. 베이스 디코더(420)의 출력은 인코딩된 레벨 1 스트림으로부터 획득된 제1 잔차 세트와 조합된다. 조합된 신호는 업샘플러(405U)에 의해 업샘플링된다. 인코딩된 레벨 2 스트림은 인코더(300)에 의해 생성된 추가 잔차를 재생성하기 위해 블록(400-2)에 의해 처리된다. 블록(400-2)은 인코더(300)의 처리 블록(300-2)에 대응하고, 기본 레벨에서 블록(300-2)의 처리를 역전시키거나 실질적으로 역전시키도록 작용한다. 업샘플러(405U)로부터의 업샘플링된 신호는 입력 신호(30)의 레벨 2 재구성을 생성하기 위해 인코딩된 레벨 2 스트림으로부터 획득된 추가 잔차와 조합된다. 처리 블록(400-2)의 출력은 도 2의 디코딩된 비디오(250)와 유사한 디코딩된 비디오로서 볼 수 있다.
앞서 설명한 바와 같이, 개선 스트림은 2개의 스트림, 즉, 인코딩된 레벨 1 스트림(제1 개선 레벨) 및 인코딩된 레벨 2 스트림(제2 개선 레벨)을 포함할 수 있다. 인코딩된 레벨 1 스트림은 보정된 픽처를 생성하기 위해 베이스 스트림의 디코딩된 버전과 조합될 수 있는 보정 데이터 세트를 제공한다.
도 5는 도 1의 인코더(300)를 더 구체적으로 도시한다. 인코딩된 베이스 스트림은 베이스 인코더(320E)에 의해 직접 생성되며, 필요에 따라 양자화 및 엔트로피 인코딩될 수 있다. 특정 경우에, 이들 후자의 프로세스는 베이스 인코더(320E)에 의한 인코딩의 일부로서 수행될 수 있다. 인코딩된 레벨 1 스트림을 생성하기 위해, 인코딩된 베이스 스트림은 인코더(300)에서 디코딩된다(즉, 디코딩 동작이 베이스 디코딩 블록(320D)에서 인코딩된 베이스 스트림에 적용된다). 베이스 디코딩 블록(320D)은 인코더(300)의 베이스 레벨의 일부로서 도시되고 대응하는 베이스 인코딩 블록(320E)과 별개로 도시되어 있다. 예를 들어, 베이스 디코더(320D)는 베이스 코덱을 갖는 베이스 인코더(320E) 형태의 인코딩 컴포넌트를 보완하는 디코딩 컴포넌트일 수 있다. 다른 예에서, 베이스 디코딩 블록(320D)은 대신에 개선 레벨의 일부일 수 있고 특히 처리 블록(300-1)의 일부일 수 있다.
도 5를 참조하면, 베이스 디코딩 블록(320D)으로부터 출력된 디코딩된 베이스 스트림과 다운샘플링된 입력 비디오 사이의 차이가 생성된다(즉, 감산 동작(310-S)이 다운샘플링된 입력 비디오와 디코딩된 베이스 스트림에 적용되어 제1 잔차 세트를 생성한다). 여기서, 잔차라는 용어는 본 기술 분야에 알려진 것과 동일한 방식으로 사용되고; 즉, 잔차는 기준 신호 또는 프레임과 원하는 신호 또는 프레임 사이의 오차 또는 차이를 나타낸다. 여기서, 기준 신호 또는 프레임은 디코딩된 베이스 스트림이고 원하는 신호 또는 프레임은 다운샘플링된 입력 비디오이다. 따라서, 제1 개선 레벨에 사용된 잔차는 미래의 디코딩된 베이스 스트림을 베이스 인코딩 동작에 사용된 다운샘플링된 입력 비디오 또는 더 가까운 근사값으로 '보정'할 수 있기 때문에 보정 신호로 고려될 수 있다. 이는 베이스 코덱의 특이점이나 기타 특성을 보정할 수 있으므로 유용하다. 이들은 무엇보다도 베이스 코덱에 의해 적용되는 모션 보상 알고리즘, 베이스 코덱에 의해 적용되는 양자화 및 엔트로피 인코딩, 베이스 코덱에 의해 적용되는 블록 조절을 포함한다.
도 3의 블록(300-1)의 컴포넌트는 도 5에 더 구체적으로 도시되어 있다. 특히, 제1 잔차 세트는 변환, 양자화 및 엔트로피 인코딩되어 인코딩된 레벨 1 스트림을 생성한다. 도 5에서, 변환 동작(310-1)이 제1 잔차 세트에 적용되고; 양자화 연산(320-1)이 양자화된 잔차 세트를 생성하기 위해 변환된 잔차 세트에 적용되고; 엔트로피 인코딩 동작(330-1)이 제1 개선 레벨에서 인코딩된 레벨 1 스트림을 생성하기 위해 양자화된 잔차 세트에 적용된다. 그러나, 다른 예에서 양자화 단계(320-1)만이 수행될 수 있거나, 변환 단계(310-1)만이 수행될 수 있다는 점에 유의해야 한다. 엔트로피 인코딩은 사용되지 않을 수 있거나, 선택적으로 변환 단계(110-1) 및 양자화 단계(320-1) 중 하나 또는 양자 모두에 추가로 사용될 수 있다. 엔트로피 인코딩 동작은 하프만 인코딩 동작 또는 RLE(run-length encoding) 동작, 또는 하프만 인코딩 동작과 RLE 동작 모두의 조합과 같은 임의의 적절한 유형의 엔트로피 인코딩일 수 있다.
이와 같은 엔트로피 코딩 방식의 선택은 설명된 양자화와 함께 코딩 성능에 유리한 영향을 미칠 수 있다. 이는 0 값의 높은 비율을 초래하는 본 개시에서 설명된 바와 같이 잔차 데이터에 대한 높은 정도의 양자화의 적용에 대한 경향의 관점에서 이해할 수 있다. 위에 언급된 바와 같은 런-렝스 인코딩은 이러한 분포를 갖는 데이터의 인코딩에 특히 적합하며, 따라서, 이러한 접근법은 전체 프로세스의 효율성을 상승적으로 개선시킬 수 있다. 마찬가지로, 양자화가 더 큰 단계 폭 값으로 적용되고, 양자화된 데이터의 분포가 복수의 정수 값이 상대적으로 더 많은 수로 존재하도록 되는 실시예에 대해, 인코딩 프로세스의 효율성은 전형적으로 이러한 분포에 특히 적합한 프리픽스/하프만 인코딩의 사용이 유익할 것이다. 이는 특히 더 높은 정수 값이 더 낮은 빈도를 갖는 잔차 분포가 주어지는 경우이다. 이러한 형태의 분포는 고주파수 심볼에 더 적은 비트를 할당함으로써 작동하는 하프만 인코딩으로 효율적으로 인코딩될 수 있다. 이러한 방식으로, 양자화 및 엔트로피 인코딩 동작은 상보적이다.
앞서 설명한 바와 같이, 개선 스트림은 인코딩된 레벨 1 스트림(제1 개선 레벨) 및 인코딩된 레벨 2 스트림(제2 개선 레벨)을 포함할 수 있다. 제1 개선 레벨은 베이스 레벨에서 보정된 비디오를 가능하게 하는 것, 즉, 예를 들어 인코더 및/또는 디코더 아티팩트를 보정하기 위해 고려될 수 있다. 제2 개선 레벨은 보정된 비디오를 원본 입력 비디오로 변환하거나 (예를 들어, 디테일 또는 선명도를 추가하기 위해) 그에 근접한 근사값으로 변환하는 데 사용할 수 있는 추가 개선 레벨로 고려될 수 있다. 예를 들어, 제2 개선 레벨은 다운샘플링 동안 손실되는 미세한 디테일을 추가하고 및/또는 변환 동작(310-1) 및 양자화 연산(320-1) 중 하나 이상에 의해 도입된 오차로부터 보정하는 것을 도울 수 있다.
도 3 및 도 5를 참조하면, 인코딩된 레벨 2 스트림을 생성하기 위해, 블록(300-2)에서 추가 잔차 세트를 생성 및 인코딩함으로써 추가 레벨의 개선 정보가 생성된다. 추가 잔차 세트는 디코딩된 베이스 스트림(기준 신호 또는 프레임)의 보정된 버전의 (업샘플러(305U)를 통한) 업샘플링된 버전과 입력 신호(30)(원하는 신호 또는 프레임) 사이의 차이이다.
디코더(400)에서 생성되는 디코딩된 베이스 스트림의 보정된 버전의 재구성을 달성하기 위해, 블록(300-1)의 처리 단계 중 적어도 일부는 디코더(200)의 프로세스를 모방하고 변환 및 양자화 프로세스의 적어도 일부 손실 및 특이점을 감안하도록 반전된다. 이를 위해, 블록(300-1)은 역양자화 블록(320-1i) 및 역변환 블록(310-1i)을 포함한다. 양자화된 제1 잔차 세트는 역양자화 블록(320-1i)에서 역양자화되고, 제1 잔차 세트의 디코더측 버전을 재생성하기 위해 인코더(100)의 역변환 블록(310-1i)에서 역변환된다.
디코더(320D)로부터의 디코딩된 베이스 스트림은 제1 잔차 세트의 이 개선된 디코더측 버전과 조합된다(즉, 합산 연산(310-C)이 제1 잔차 세트의 디코딩된 베이스 스트림 및 디코더측 버전에 대해 수행된다). 합산 연산(310-C)은 디코더에서 모든 가능성으로 생성될 입력 비디오의 다운샘플링된 버전의 재구성- 즉, 재구성된 베이스 코덱 비디오 -을 생성한다. 도 3 및 도 5에 예시된 바와 같이, 재구성된 베이스 코덱 비디오는 그 다음 업샘플러(305U)에 의해 업샘플링된다.
그 후, 업샘플링된 신호(즉, 기준 신호 또는 프레임)가 입력 신호(30)(즉, 원하는 신호 또는 프레임)와 비교되어 제2 잔차 세트를 생성한다(즉, 차연산(300-S)이 업샘플링된 재생성된 스트림에 적용되어 추가 잔차 세트를 생성한다). 그 후, 제2 잔차 세트가 블록(300-2)에서 처리되어 인코딩된 레벨 2 스트림이 된다(즉, 그 후, 인코딩된 추가 또는 제2 개선 스트림을 생성하기 위해 추가 또는 제2 잔차 세트에 인코딩 동작이 적용된다).
특히, 제2 잔차 세트가 변환된다(즉, 변환 동작(310-2)이 추가 잔차 세트에 대해 수행되어 추가 변환된 잔차 세트를 생성한다). 그 다음, 변환된 잔차는 제1 잔차 세트와 관련하여 앞서 설명된 방식으로 양자화되고 엔트로피 인코딩된다(즉, 양자화 연산(320-2)이 양자화된 추가 잔차 세트를 생성하기 위해 변환된 잔차 세트에 적용되고; 엔트로피 인코딩 동작(320-2)이 추가 레벨의 개선 정보를 포함하는 인코딩된 레벨 2 스트림을 생성하기 위해 양자화된 추가 잔차 세트에 적용된다). 그러나, 양자화 단계(20-1)만이 수행될 수도 있거나, 변환 및 양자화 단계만이 수행될 수도 있다. 엔트로피 인코딩이 추가로 선택적으로 사용될 수 있다. 바람직하게는, 엔트로피 인코딩 동작은 하프만 인코딩 동작 또는 RLE(run length encoding) 동작, 또는 둘 모두일 수 있다.
따라서, 도 3 및 도 5에 예시되고 앞서 설명한 바와 같이, 인코딩 프로세스의 출력은 베이스 레벨의 베이스 스트림이고, 바람직하게는 제1 개선 레벨 및 추가 개선 레벨을 포함하는 개선 레벨의 하나 이상의 개선 스트림을 포함한다. 이전 예를 참조하여 설명된 바와 같이, 도 5의 동작은 블록간 의존성이 없기 때문에 프레임의 컬러 성분의 블록 또는 코딩 유닛에 병렬로 적용될 수 있다. 컬러 성분 세트 내의 각각의 컬러 성분의 인코딩은 또한 (예를 들어, 도 5의 동작이 (프레임의 수) * (컬러 성분의 수) * (프레임별 코딩 유닛의 수)에 따라 복제되도록) 병렬로 수행될 수 있다. 또한, 상이한 컬러 성분은 프레임당 상이한 수의 코딩 유닛을 가질 수 있고, 예를 들어, 인간의 시각이 컬러 변화보다 밝기 변화를 더 많이 검출할 수 있으므로, 루마(luma)(예를 들어, Y) 성분은 크로마(chroma)(예를 들어, U 또는 V) 성분 세트보다 더 높은 해상도에서 처리될 수 있다는 것에 유의하여야 한다.
인코딩된 베이스 스트림 및 하나 이상의 개선 스트림이 디코더(400)에서 수신된다. 도 6은 도 4의 디코더를 더 구체적으로 도시한다.
인코딩된 베이스 스트림은 인코더(300)에서 수신된 입력 신호(30)의 베이스 재구성을 생성하기 위해 베이스 디코더(420)에서 디코딩된다. 이러한 베이스 재구성은 더 낮은 품질 레벨에서 신호(30)의 가시적 렌디션을 제공하기 위해 실제로 사용될 수 있다. 그러나, 이 베이스 재구성 신호의 주요 목적은 입력 신호(30)의 고품질 렌디션을 위한 베이스를 제공하는 것이다. 이를 위해, 디코딩된 베이스 스트림이 처리 블록(400-1)에 제공된다. 처리 블록(400-1)은 또한 인코딩된 레벨 1 스트림을 수신하고 인코더(300)에 의해 적용된 임의의 인코딩, 양자화 및 변환을 역전시킨다. 블록(400-1)은 엔트로피 디코딩 프로세스(430-1), 역양자화 프로세스(420-1), 및 역변환 프로세스(410-1)를 포함한다. 선택적으로, 인코더에서 대응하는 블록(300-1)에서 수행되는 동작에 따라 이들 단계 중 단지 하나 이상이 수행될 수 있다. 이들 대응하는 단계를 수행함으로써, 제1 잔차 세트를 포함하는 디코딩된 레벨 1 스트림이 디코더(400)에서 이용가능하게 된다. 제1 잔차 세트는 베이스 디코더(420)로부터의 디코딩된 베이스 스트림과 조합된다(즉, 합산 연산(410-C)이 디코딩된 베이스 스트림 및 디코딩된 제1 잔차 세트에 수행되어 입력 비디오의 다운샘플링된 버전의 재구성- 즉, 재구성된 베이스 코덱 비디오 -을 생성한다). 도 4 및 도 6에 예시된 바와 같이, 재구성된 베이스 코덱 비디오는 그 다음 업샘플러(405U)에 의해 업샘플링된다.
추가적으로, 그리고 선택적으로 병렬로, 인코딩된 레벨 2 스트림은 디코딩된 추가 잔차 세트를 생성하기 위해 도 2의 블록(400-2)에서 처리된다. 처리 블록(300-2)과 유사하게, 처리 블록(400-2)은 엔트로피 디코딩 프로세스(430-2), 역양자화 프로세스(420-2) 및 역변환 프로세스(410-2)를 포함한다. 물론, 이러한 동작은 인코더(300)의 블록(300-2)에서 수행되는 동작에 대응할 것이며, 이러한 단계 중 하나 이상은 필요에 따라 생략될 수 있다. 블록(400-2)은 추가 잔차 세트를 포함하는 디코딩된 레벨 2 스트림을 생성하고 이들은 동작(400-C)에서 업샘플러(405U)의 출력과 합산되어 입력 신호(30)의 레벨 2 재구성을 생성한다. 레벨 2 재구성은 도 2의 250과 같은 출력 디코딩된 비디오로서 시청될 수 있다. 특정 예에서, 업샘플러(405U)에 전달되는 재구성된 비디오- 이는 제1 개선 레벨을 갖지만 레벨 2 재구성보다 더 낮은 해상도에 있을 수 있음 -를 획득하고 시청하는 것이 또한 가능할 수 있다.
따라서, 위에서 예시되고 설명된 바와 같이, 디코딩 프로세스의 출력은(선택적) 베이스 재구성 및 더 높은 레벨에서의 원본 신호 재구성이다. 이 예는 특히 다양한 프레임 해상도에서 인코딩 및 디코딩된 비디오를 생성하는 데 매우 적합하다. 예를 들어, 입력 신호(30)는 1920 x 1080 해상도의 프레임을 포함하는 HD 비디오 신호일 수 있다. 특정 경우에, 베이스 재구성 및 레벨 2 재구성은 양자 모두 디스플레이 디바이스에 의해 사용될 수 있다. 예를 들어, 네트워크 트래픽의 경우 레벨 2 스트림은 (다운샘플링이 각각의 방향의 차원을 2만큼 감소시키는 경우 이는 최대 4x 데이터량을 포함할 수 있으므로) 레벨 1 및 베이스 스트림보다 더 많이 중단될 수 있다. 이 경우, 트래픽이 발생할 때, 디스플레이 디바이스는 레벨 2 스트림이 중단되는 동안(예를 들어, 레벨 2 재구성을 사용할 수 없는 동안) 베이스 재구성을 디스플레이하는 것으로 되돌아간 다음 네트워크 조건이 개선될 때 레벨 2 재구성을 디스플레이하는 것으로 되돌아갈 수 있다. 디코딩 디바이스에 자원 제약을 겪고 있을 때 유사한 접근법이 적용될 수 있으며, 예를 들어, 시스템 업데이트를 수행하는 셋톱 박스는 베이스 재구성을 출력하기 위한 동작 베이스 디코더(220)를 가질 수 있지만 레벨 2 재구성을 계산하기 위한 처리 능력은 갖지 않을 수 있다.
인코딩 장치는 또한 비디오 배포자가 비디오를 이종 디바이스 세트에 배포할 수 있게 하고; 베이스 디코더(220)만 있는 것은 베이스 재구성을 시청하는 반면, 개선 레벨을 갖는 것은 더 높은 품질 레벨 2 재구성을 시청 수 있다. 비교대상 경우에서, 둘 모두의 디바이스 세트를 모두 서비스하려면 별개의 해상도에서 2개의 전체 비디오 스트림이 필요했다. 레벨 2 및 레벨 1 개선 스트림이 잔차 데이터를 인코딩함에 따라, 레벨 2 및 레벨 1 개선 스트림이 더 효율적으로 인코딩될 수 있으며, 예를 들어, 잔차 데이터의 분포는 전형적으로 0 주변(즉, 차이가 없는 경우)의 그 질량 대부분을 가지며 전형적으로 약 0의 작은 범위의 값을 취한다. 이는 특히 양자화 이후의 경우일 수 있다. 대조적으로, 다른 해상도의 전체 비디오 스트림은 디코더로의 송신을 위해 더 높은 비트 레이트를 요구하는 0이 아닌 평균 또는 중앙값을 갖는 다른 분포를 가질 것이다.
특정 예에서, 잔차는 특정 품질 레벨 또는 해상도에서의 오차 또는 차이인 것으로 고려될 수 있다. 설명된 예에서, 2개의 품질 레벨 또는 해상도, 따라서 2개의 잔차 세트(L-1 및 L-2)가 존재한다. 본 출원에 설명된 각각의 잔차 세트는 상이한 형태의 오차 또는 차이를 모델링한다. L-1 잔차는, 예를 들어, 전형적으로 베이스 인코더의 특성을 보정하고, 예를 들어, 인코딩 프로세스의 일부로서 베이스 인코더에 의해 도입되는 아티팩트를 보정한다. 대조적으로, L-2 잔차는, 예를 들어, 전형적으로 품질 레벨의 시프팅에 의해 도입되는 복잡한 효과 및 L-1 보정에 의해 도입되는 차이(예를 들어, L-1 인코딩 파이프라인에 의해 4 또는 16 픽셀의 영역과 같은 보다 넓은 공간 스케일에 걸쳐 생성되는 아티팩트)를 보정한다. 이는 하나의 잔차 세트에 대해 수행된 동작이 또 다른 잔차 세트에 대하여 동일한 효과를 반드시 제공할 것이라는 것이 분명하지 않다는 것을 의미한다(예를 들어, 각각의 잔차 세트가 상이한 통계적 패턴 및 상관 관계의 세트를 가질 수 있음).
본 출원에 설명된 예에서 잔차는 인코딩 파이프라인에 의해 인코딩된다. 이는 변환, 양자화 및 엔트로피 인코딩 동작을 포함할 수 있다. 이는 잔차 순위화, 가중 및 필터링을 또한 포함할 수 있다. 이러한 파이프라인은 도 1 및 도 3a 및 3b에 도시되어 있다. 그 다음, 잔차는, 예를 들어, L-1 및 L-2 개선 스트림으로서 디코더에 송신되고, 디코더는 혼성 스트림으로서 베이스 스트림과 조합될 수 있다(또는 별개로 송신될 수 있다). 일 경우에, 비트 레이트가 베이스 스트림 및 양자 모두의 개선 스트림을 포함하는 혼성 데이터 스트림에 대해 설정되고, 그 후, 상이한 적응적 비트 레이트가 설정된 비트 레이트를 만족시키도록 처리되고 있는 데이터에 기초하여 개별 스트림에 적용된다(예를 들어, 낮은 레벨의 아티팩트로 지각되는 고품질 비디오는, 제약된 데이터가 이미지 데이터가 변화함에 따라 변화할 수 있는 가장 지각적으로 영향력 있는 개별 스트림에 의해 사용될 수 있도록, 심지어 프레임별 레벨에서, 상이한 개별 스트림에 비트 레이트를 적응적으로 할당함으로써 구성될 수 있다).
본 출원에 설명된 바와 같은 잔차 세트는 희소 데이터(sparse data)로서 볼 수 있는데, 예를 들어 많은 경우에 주어진 픽셀 또는 영역에 대해 차이가 없고 결과적인 잔차 값은 0이다. 잔차의 분포를 살펴볼 때, 대부분의 확률 질량이 0 근방에 위치된 작은 잔차 값에 할당된다- 예를 들어, 특정 비디오에 대하여, -2, -1, 0, 1, 2 등의 값이, 가장 자주 발생한다. 특정 경우에, 잔차 값의 분포는 0에 대해 대칭 또는 거의 대칭이다. 특정 테스트 비디오 사례에서, 잔차 값의 분포는 0에 대해 로그 또는 지수 분포와 유사한 형상을 취하는 것(예를 들어, 대칭 또는 거의 대칭적인 것)으로 밝혀졌다. 잔차 값의 정확한 분포는 입력 비디오 스트림의 콘텐츠에 따라 달라질 수 있다.
잔차는 자체적으로 2차원 이미지, 예를 들어 차이의 델타 이미지로서 처리될 수 있다. 이러한 방식으로 볼 때, 데이터의 희소성은 잔차 이미지에서 볼 수 있는 "점", 작은 "라인", "에지", "코너" 등과 같은 특징을 관련시키는 것으로 보일 수 있다. 이러한 특징은 전형적으로(예를 들어, 공간에서 그리고/또는 시간에서) 완전히 상관되지 않는 것으로 밝혀졌다. 이는 이들이 유도되는 이미지 데이터의 특성(예를 들어, 원래의 비디오 신호의 픽셀 특성들)과 상이한 특성을 갖는다.
잔차의 특성은 그것이 유도되는 이미지 데이터의 특성과 상이하므로, 예를 들어, 전통적인 동영상 전문가 그룹(Moving Picture Experts Group)(MPEG) 인코딩 및 디코딩 표준에서 발견되는 것과 같은 표준 인코딩 접근법을 적용하는 것이 일반적으로 불가능하다. 예를 들어, 많은 비교대상 방식은 큰 변환(예를 들어, 보통의 비디오 프레임에서의 큰 픽셀 영역의 변환)을 사용한다. 예를 들어, 앞서 설명된 바와 같은 잔차의 특성으로 인해, 잔차 이미지에 대해 이러한 비교적 큰 변환을 사용하는 것은 매우 비효율적일 것이다. 예를 들어, 보통 이미지의 영역에 대해 설계된 큰 블록을 사용하여 잔차 이미지에 작은 점을 인코딩하는 것은 매우 어려울 것이다.
본 출원에 설명된 특정 예는 작고 간단한 변환 커널(예를 들어, 본 출원에 제시된 바와 같은 2x2 또는 4x4 커널- 방향 분해 및 방향 분해 제곱 -)을 대신 사용하여 이러한 문제를 해결한다. 본 출원에 설명된 변환은 아다마르 행렬(예를 들어, 평탄화된 2x2 코딩 블록에 대한 4x4 행렬 또는 평탄화된 4x4 코딩 블록에 대한 16x16 행렬)을 사용하여 적용될 수 있다. 이는 비교대상 비디오 인코딩 접근법과 다른 방향으로 이동한다. 이러한 새로운 접근법을 잔차 블록에 적용하면 압축 효율성이 생성된다. 예를 들어, 특정 변환은 효율적으로 압축될 수 있는 상관되지 않은 계수(예를 들어, 공간에서)를 생성한다. 계수 사이의 상관 관계가 예를 들어, 잔차 이미지 내의 라인에 대해 활용될 수 있지만, 이는 인코딩 복잡도를 초래할 수 있으며, 이는 레거시 및 저-자원 디바이스 상에서 구현하기 어렵고, 종종 보정될 필요가 있는 다른 복잡한 아티팩트를 생성한다. 특정 잔차 값을 0으로 설정하여 잔차를 전처리하면(즉, 처리를 위해 이러한 값을 포워딩하지 않음) 자원 사용은 물론 비트레이트 및 스트림 대역폭을 관리하는 제어 가능하고 유연한 방식을 제공할 수 있다.
완전성을 위해, 도 7은 흐름도의 형태로 본 출원에 설명된 개념의 광범위한 원리를 예시한다. 방법(1000)은 입력 비디오를 수신하는 단계(단계 1001); 다운샘플링된 비디오를 생성하기 위해 입력 비디오를 다운샘플링하는 단계(단계 1002); 베이스 인코딩된 스트림을 생성하기 위해 베이스 인코더를 사용하여 다운샘플링된 비디오의 인코딩을 명령하는 단계(단계 1003); 재구성된 비디오를 생성하기 위해 베이스 디코더를 사용하여 베이스 인코딩된 스트림의 디코딩을 명령하는 단계(단계 1004); 제1 잔차 세트를 생성하기 위해 재구성된 비디오를 다운샘플링된 비디오와 비교하는 단계(단계 1005); 및 제1 레벨 인코딩된 스트림을 생성하기 위해 제1 잔차 세트를 인코딩하는 단계를 포함하고, 제1 잔차 세트를 인코딩하는 단계는 제1 계수 세트를 생성하기 위해 제1 잔차 세트에 변환을 적용하는 단계(단계 1006); 제1 계수 세트에 양자화 연산을 적용하여 양자화된 계수의 제1 세트를 생성하는 단계(단계 1007); 및 양자화된 계수의 제1 세트에 인코딩 동작을 적용하는 단계(단계 1008)를 포함하고, 양자화 연산을 적용하는 단계는 제1 계수 세트의 상이한 계수에 대해 사용되는 단계 폭을 변화시키는 것을 비롯하여, 양자화될 제1 계수 세트에 기초하여 양자화를 적응시키는 단계를 포함하고, 적응으로부터 유도된 파라미터의 제1 세트는 양자화된 계수의 제1 세트의 탈양자화를 가능하게 하기 위해 디코더에 시그널링된다.
도 8a는 정의된 단계 폭을 갖는 빈에 기초하여 잔차 및/또는 계수(변환된 잔차들)의 양자화가 어떻게 수행될 수 있는지의 예를 제공한다. 도 8a의 x-축은 잔차 또는 계수 값을 나타낸다. 이 예에서는, 5의 단계 폭으로 다수의 빈이 정의된다. 단계 폭은 도면에 도시된 양자화 단계 크기로 이해할 수 있다. 단계 폭의 크기는 예를 들어 파라미터 값에 기초하여 선택 가능할 수 있다. 특정 경우에, 단계 폭의 크기는 예를 들어 앞서 설명된 레이트 제어 예에 기초하여 동적으로 설정될 수 있다. 도 8a에서, 단계 폭은 0-4, 5-9, 10-14, 15-19의 범위(즉, 0 및 4 양자 모두를 포함하는 0 내지 4)의 잔차 값에 대응하는 빈을 초래한다. 필요에 따라 종점을 포함하거나 제외하도록 빈 폭을 구성할 수 있다. 이 예에서, 양자화는 빈에 속하는 모든 값을 정수 값으로 대체함으로써 수행된다(예를 들어, 0과 4 사이(경계값 포함)의 잔차 값은 1의 양자화된 값을 갖는다). 도 8a에서, 양자화는 단계 폭(예를 들어, 5)으로 나누고, 결과의 플로어(floor)(즉, 양의 값에 대해 소수점 아래에 가장 가까운 정수)를 취하고, 그 후 1을 더함으로써 수행될 수 있다(예를 들어, 3/5= 0.6, floor(0.6)=0, 0+1=1; 또는 16/5 = 3.2, floor(3.2) = 3, 3+1=4). 음의 값은 유사한 방식으로, 예를 들어 절대값에 대해 작업한 다음에, 계산 이후 음의 값으로 변환함으로써 처리될 수 있다(예를 들어, abs(-9)= 9, 9/5=1.8, floor(1.8)= 1, 1+1=2, 2*-1=-2). 도 8a는 모든 빈이 공통 단계 폭을 갖는 선형 양자화의 경우를 도시한다. 유의할 점은, 이 접근법에 기초한 다양한 상이한 구현이 규정될 수 있다는 것, 예를 들어, 제1 빈이 1 대신에 0의 양자화된 값을 가질 수 있거나, 1부터 5까지(경계값 포함)의 값을 포함할 수 있다는 것을 유의하여야 한다. 도 8a는 주어진 단계 폭의 빈에 따른 양자화의 단순한 한 예시일 뿐이다.
도 8b는 소위 "데드존(deadzone)" (DZ)이 구현될 수 있는 방법을 도시한다. 이는 제로 신호를 포함하고 단계 폭과 동일하거나 상이할 수 있는 크기를 갖는 대역인, 양자화기의 출력 값이 0 주변인 영역으로 이해될 수 있다. 따라서, 0에 가까운 이 입력의 대역의 경우 신호가 효과적으로 감쇠될 수 있고, 따라서, 전형적으로 시각적 데이터의 노이즈에 대응할 수 있는 낮은 레벨의 신호에 데이터가 불필요하게 할당되지 않는다. 도 8b에서 미리 정의된 범위 내의 값을 가진 잔차 또는 계수는 0으로 설정된다. 도 8b에서 미리 정의된 범위는 0 값 주변의 범위이다. 도 8b에서 6보다 더 작고 -6보다 더 큰 값은 0으로 설정된다. 데드존은 고정된 범위(예를 들어, -6 내지 6)로 설정되거나 단계 폭에 기초하여 설정될 수 있다. 일 경우에, 데드존은 단계 폭의 미리 정의된 배수로서, 예를 들어 단계 폭 값의 선형 함수로서 설정될 수 있다. 도 8b의 예에서 데드존은 2.4*stepwidth로 설정된다. 따라서, 단계 폭이 5이면 데드존이 -6으로부터 +6까지로 확장된다. 다른 경우에, 데드존은 단계 폭 값의 비선형 함수로서 설정될 수 있다.
일 경우에, 데드존은 동적 단계 폭에 기초하여 설정되며, 예를 들어, 적응적일 수 있다. 이 경우 데드존은 단계 폭이 변경됨에 따라 변경될 수 있다. 예를 들어, 단계 폭이 5 대신에 3으로 업데이트되었다면, 2.4*단계 폭의 데드존은 -6 내지 +6의 범위에서 -3.6 내지 3.6의 범위로 변할 수 있거나; 또는, 단계 폭이 10으로 업데이트되면, 데드존은 -12 내지 12로 확장되도록 변경될 수 있다. 일 경우에, 단계 폭에 대한 승수는 2 내지 4의 범위일 수 있다. 일 경우에, 승수는 또한, 예를 들어, 이용가능한 비트 레이트와 같은 동작 조건에 기초하여 적응적일 수 있다.
데드존을 갖는 것은 네트워크를 통해 송신될 데이터량을 감소시키는 데 도움이 될 수 있는데, 예를 들어 비트 레이트를 감소시키는 데 도움이 될 수 있다. 데드존을 사용할 때, 데드존에 속하는 잔차 또는 계수 값은 사실상 무시된다. 이 접근법은 낮은 레벨의 잔류 노이즈를 제거하는 데도 도움이 될 수 있다. 일정한 데드존이 아니라 적응형 데드존을 갖는 것은, 단계 폭이 감소할 때(예를 들어, 더 많은 대역폭이 이용가능한 경우) 더 작은 잔차 또는 계수 값이 과도하게 필터링되지 않고, 단계 폭이 증가하는 경우 비트 레이트가 적절하게 감소한다는 것을 의미한다. 데드존은 인코더에서만 규정되면 되고, 디코더는 단순히 데드존에 속하는 임의의 잔차 또는 계수에 대해 양자화된 값 0을 수신한다.
도 8c는 빈 폴딩(bin folding)이라 지칭되는 접근법이 적용될 수 있는 방법을 도시한다. 도 8c의 예에서, 빈 폴딩은 데드존과 함께 사용되지만, 그러나, 다른 경우에서, 이는 데드존 없이 및/또는 다른 양자화 접근법과 함께 사용될 수 있다. 도 8c에서, 빈 폴딩은 선택된 양자화 빈 위에 상주하는 모든 잔차 또는 계수 값을 선택된 빈 내에 배치하도록 작용한다. 예를 들어, 이는 클리핑(clipping)의 일 형태로 볼 수 있다.
도 8c에서, 5의 단계 폭이 다시 적용된다. 2.4*stepwidth 범위의 데드존이 또한 적용되며, 그래서, - 6과 6 사이의 값은 0으로 설정된다. 이는 또한 (0의 값을 갖는) 보다 큰 제1 양자화 빈으로 이어지는 것으로 볼 수 있다. 이어서, 양 및 음의 값에 대해 폭 5를 갖는 2개의 양자화 빈이 정의된다. 예를 들어, 1의 양자화 값을 갖는 빈은 6과 11 사이에 정의되고(예를 들어, 5의 단계 폭을 가짐), 2의 양자화 값을 갖는 빈은 11과 16 사이에 정의된다. 이 예에서, 빈 폴딩을 규정하기 위해, 일반적으로 제2 빈 위의 빈에 속하는 (예를 들어, 16보다 큰 값을 갖는) 값을 갖는 모든 잔차 또는 계수가 제2 빈 내로 "폴딩"되고, 예를 들어, 2의 양자화 값을 갖도록 클리핑된다. 이는 임계값보다 큰 모든 값을 최대 빈 값(예를 들어, 2)으로 설정함으로써 수행될 수 있다. 음의 값에 대해서도 유사한 프로세스가 발생한다. 이는 큰 화살표로 도 8c에 예시되어 있다.
빈 폴딩은 인코더에서 선택 가능한 처리 옵션일 수 있다. 이는 디코더에서의 탈양자화 동안 규정될 필요가 없다(예를 들어, 2의 "폴딩된" 또는 "클리핑된" 값은 제2 빈에 있는 것처럼 단순히 탈양자화된다). 빈 폴딩은 네트워크를 통해 디코더로 발송되는 비트 수를 감소시키도록 규정될 수 있다. 빈 폴딩은, 네트워크 조건 및/또는 베이스 스트림 처리에 기초하여 비트 레이트를 감소시키도록 구성 가능할 수 있다.
도 8d는 특정 경우에 양자화 오프셋이 어떻게 사용될 수 있는지 도시한다. 양자화 오프셋은 양자화 빈의 위치를 시프트하는 데 사용될 수 있다. 도 8d는 x-축 잔차 또는 계수 값 범위를 따른 가능한 실제 카운트를 나타내는 라인을 도시한다. 이 예에서, 많은 값은 0 근방에 있고, 0으로부터 멀어지도록 이동함에 따라 더 높은 값의 카운트가 감소한다. 카운트 값이 정규화되면, 라인은 또한 잔차 또는 계수 값에 대한 확률 분포를 나타낼 수 있다.
도 8d의 우측의 점선 및 좌측 막대는 양자화를 모델링하는 히스토그램을 예시한다. 설명의 편의를 위해, 데드존 다음의 제1 내지 제3 빈에 대한 카운트 값이 도시된다(양의 값 및 음의 값 양자 모두에 대해, 음의 값은 막대를 예시하기 위해 줄무늬로 표시됨). 예를 들어, 막대는 1, 2, 3 및 -1, -2, -3의 양자화된 값에 대한 카운트를 도시한다. 양자화로 인해, 히스토그램에 의해 모델링된 분포는 라인에 의해 도시된 실제 분포와 상이하다. 예를 들어, 막대가 라인과 어떻게 다른지를 표시하는 오차- e -가 도시된다.
오차(e)의 속성을 변경하기 위해, 양자화 오프셋- qO -이 적용될 수 있다. 양자화 오프셋은 그 값이 미리 결정된 또는 디폴트 위치 또는 값 세트로부터 양자화 간격 또는 빈이 시프트되어야 하는지 여부 및 그 정도를 정의하는 파라미터로 이해할 수 있다. 양의 값에 대해, 양의 양자화 오프셋은 각각의 빈을 우측으로 시프트하도록 작용하고, 음의 양자화 오프셋은 각각의 빈을 좌측으로 시프트하도록 작용한다. 양자화 오프셋은 데드존과 함께 적용될 수 있다. 일 경우에, 데드존은 임계값의 제1 세트에 기초하여 적용될 수 있으며, 예를 들어, (n*stepwidth)/2보다 더 작고 (n*stepwidth*-1)/2보다 큰 모든 값은 0으로 설정된다.
일부 예에서, 양자화 오프셋은 탈양자화에 사용하기 위해 디코더에 시그널링될 수 있다.
한 경우에, 인코더에서, 양자화 오프셋은 단계 폭에 기초한 양자화 전에 잔차 또는 계수 값으로부터 감산될 수 있다. 따라서, 디코더에서 수신된 양자화된 값에 시그널링된 오프셋이 추가되어 단계 폭을 기초로 탈양자화될 수 있다. 특정 경우에, 오프셋은 0 값에 대해 대칭성 동작을 허용하기 위해 잔차 또는 계수의 부호에 기초하여 조절될 수 있다. 일 경우에, 오프셋의 사용은 양자화 또는 탈양자화 오프셋 값을 0으로 설정함으로써 비활성화될 수 있다. 일 경우에, 적용된 양자화 오프셋은 정의된 데드존 폭에 기초하여 조절될 수 있다. 일 경우에, 데드존 폭은, 예를 들어, 인코더로부터 수신된 양자화 파라미터 및 단계 폭의 함수로서, 디코더에서 계산될 수 있다.
한 경우에, 양자화를 위한 단계 폭은 계수의 2x2 또는 4x4 블록 내의 상이한 계수에 대해 변화될 수 있다. 예를 들어, 디코딩된 신호의 인식에 더 크게 영향을 주도록 실험적으로 결정되는 계수에 더 작은 단계 폭이 할당될 수 있고, 예를 들어, 앞서 설명된 바와 같은 2x2 또는 4x4 방향 분해(DD-제곱 또는 "DDS")에서 A, H, V 및 D 계수는 더 작은 단계 폭을 할당받을 수 있고, 나중의 계수는 더 큰 단계 폭을 할당받을 수 있다. 이 경우, 디폴트 단계 폭을 설정하는 base_stepwidth 파라미터가 정의될 수 있고, 그 후 수정자가 양자화(및 탈양자화)에 사용할 modified_stepwidth를 계산하기 위해 이것에 적용될 수 있으며, 예를 들어, modified_stepwidth= base_stepwidth*수정자가 될 수 있다(여기서 "수정자"는 블록 또는 유닛 내의 특정 계수에 기초하여 설정될 수 있고, 후술된 변수 "qm" 같이 시그널링으로부터 유도될 수 있다).
특정 경우에, 수정자는 또한 또는 대안적으로 개선 레벨에 따라 달라질 수 있다. 예를 들어, 단계 폭은 더 높은 품질 레벨에서 다수의 재구성된 픽셀에 영향을 미칠 수 있기 때문에 레벨 1 개선 스트림에 대해서는 더 작을 수 있다.
특정 경우에, 수정자는 블록 내의 계수 및 개선 레벨 양자 모두에 기초하여 정의될 수 있다. 일 경우에, 양자화 행렬은 상이한 계수 및 상이한 개선 레벨에 대한 수정자의 세트로 정의될 수 있다. 이 양자화 행렬은 (예를 들어, 인코더 및/또는 디코더에서) 미리 설정되고, 인코더와 디코더 사이에서 시그널링되고, 및/또는 인코더 및/또는 디코더에서 동적으로 구성될 수 있다. 예를 들어, 후자의 경우, 양자화 행렬은 다른 저장된 및/또는 시그널링된 파라미터, 예를 들어, 구성 인터페이스를 통해 수신된 것들의 함수로서 인코더 및/또는 디코더에서 구성될 수 있다.
일 경우에, 상이한 양자화 모드, 또는 주어진 계수 세트에 적용될 양자화 행렬을 정의하는 상이한 방식이 정의될 수 있다. 하나의 모드에서, 공통 양자화 행렬이 양자 모두의 개선 레벨에 대해 사용될 수 있고; 다른 모드에서, 다른 레벨에 대해 별개의 행렬이 사용될 수 있다; 또 다른 모드에서, 양자화 행렬은 단지 하나의 개선 레벨에 대해서만, 예를 들어 레벨 2에 대해서만 사용될 수 있다. 양자화 행렬은 블록 내의 계수의 위치에 의해 인덱싱될 수 있다(예를 들어, 2x2 블록에 대해 x 방향으로 0 또는 1, y 방향으로 0 또는 1, 또는 4x4 블록에 대해 0 내지 3).
한 경우에, 베이스 양자화 행렬은 값의 세트로 정의될 수 있다. 이 베이스 양자화 행렬은 하나 이상의 개선 레벨에 대한 단계 폭의 함수인 스케일링 인자에 의해 수정될 수 있다. 일 경우에, 스케일링 인자는 단계 폭 변수의 클램핑된 함수일 수 있다. 디코더에서, 단계 폭 변수는 레벨-1 스트림 및 레벨-2 스트림 중 하나 이상에 대해 인코더로부터 수신될 수 있다.
앞서 설명된 원리를 수반하는 프로세스의 일부 추가적인 예를 통해, 인코딩 및 디코딩 절차를 추가로 개선하기 위해 양자화를 구성하고 적응시키는 유리한 모드는 다음의 추가 관점에서 이해할 수 있다. 양자화 및 탈양자화 단계의 속성이 시그널링 및 구성될 수 있는 다수의 파라미터를 수반하는, 데이터 블록 유닛 개선 페이로드 시멘틱스가 적용될 수 있다.
하나의 예에서 dequant_offset_signalled 파라미터는 탈양자화시 적용될 오프셋 파라미터의 값이 시그널링되는지 여부를 지정한다. 이러한 방식으로, 오프셋이 발송되는지 여부를 시그널링할 수 있다. 이 예에서, 오프셋이 발송되면 그 후, 이 오프셋이 사용된다. 발송되지 않으면, 이때, 디폴트 오프셋이 사용되거나 오프셋이 사용되지 않을 수 있다.
인코딩된 스트림이 입력 비디오를 재구성하기 위해 조합될 수 있는, 입력 비디오를 복수의 인코딩된 스트림으로 인코딩하는 방법의 예에서, 방법은 입력 비디오를 수신하는 단계, 및 다운샘플링된 비디오를 생성하기 위해 입력 비디오를 다운샘플링하는 단계를 수반할 수 있다.
방법은 전형적으로 베이스 인코딩된 스트림(상기 베이스 인코딩된 스트림)을 생성하기 위해 베이스 인코더를 사용하여 다운샘플링된 비디오의 인코딩을 명령하는 단계; 재구성된 비디오를 생성하기 위해 베이스 디코더를 사용하여 베이스 인코딩된 스트림의 디코딩을 명령하는 단계; 제1 잔차 세트를 생성하기 위해 재구성된 비디오를 다운샘플링된 비디오와 비교하는 단계; 및 제1 레벨 인코딩된 스트림을 생성하기 위해 제1 잔차 세트를 인코딩하는 단계를 더 포함한다. 이는 바람직하게는 계수 세트를 생성하기 위해 잔차 세트에 변환을 적용하는 단계; 양자화된 계수 세트를 생성하기 위해 계수 세트에 양자화 연산을 적용하는 단계; 및 양자화된 계수에 인코딩 동작을 적용하는 단계를 포함하고, 양자화 연산은 양자화 행렬을 사용하여 수행되고, 양자화 행렬은 양자화 행렬 모드 파라미터의 획득된 값에 따라 유도된다.
본 개시에서 앞서 설명된 바와 같이, 양자화 행렬 모드 파라미터는 인코딩 프로세스에서 사용될 양자화 행렬을 지정하기 위해 유리하게 사용될 수 있다. 일부 예에서, 양자화 행렬 모드 파라미터 값이 미리 결정된 값과 같을 때, 예를 들어, 그것이 제로(0)와 같을 때, 방법은 2개의 품질 레벨 각각에 대해 디폴트 양자화 행렬을 사용하는 것을 수반할 수 있다. 이러한 레벨은 전형적으로 또는 전형적으로 레벨 1 및 레벨 2 개선 스트림에 대응한다. 양자화 행렬 모드 파라미터 값이 1과 같을 때, 2개의 품질 레벨 각각에 대해 제1 양자화 행렬이 사용될 수 있고, 제1 양자화 행렬은 예를 들어 인코더로부터 디코더 또는 인코딩된 스트림이 송신될 디바이스로 시그널링될 수 있다. 양자화 행렬 모드 파라미터 값이 2와 같을 때, 제2 양자화 행렬이 품질 레벨 2에 대해 사용될 수 있고, 제2 양자화 행렬이 시그널링될 수 있다. 이 경우, 품질 레벨 1에 대해 양자화 행렬을 사용하지 않을 수 있거나, 또는 디폴트값이 이 레벨에 사용될 수 있다. 양자화 행렬 모드 파라미터 값이 3과 같을 때, 제3 양자화 행렬은 바람직하게는 품질 레벨 1, 또는 제1 레벨 인코딩된 스트림에 사용되며, 제3 양자화 행렬이 시그널링된다. 이 경우, 품질 레벨 2에 대해 양자화 행렬을 사용하지 않을 수 있거나, 또는 디폴트값이 이 레벨에 사용될 수 있다. 양자화 행렬 모드 파라미터 값이 4와 같을 때, 제4 양자화 행렬이 제1 레벨 인코딩된 스트림에 대해 사용될 수 있고 제5 양자화 행렬이 제2 레벨 인코딩된 스트림에 대해 사용될 수 있으며(예를 들어, 2개의 행렬이 사용될 수 있음), 각각은 서로 동일하거나 동일하지 않을 수 있고, 앞서 설명한 제1 내지 제3 행렬 중 어느 하나일 수 있다. 이 제5 모드에서, 제4 양자화 행렬 및 제5 양자화 행렬은 인코딩된 스트림이 송신될 디코더 또는 다른 디바이스에 시그널링될 수 있다.
본 개시에서 설명된 절차에서, 앞서 설명된 바와 같이, 이 프로세스에 전달된 변환 계수의 모든 그룹은 전형적으로 특정 평면 및 계층에 속한다. 전형적으로, 이들은 일부 예에서 비-중심 탈양자화 오프셋을 사용하는 선형 양자화기를 사용하여 스케일링되었다. 변환 계수에 대한 스케일링 프로세스는 다음과 같이 적용될 수 있다. 프로세스는 그 크기와 같은 블록의 속성, 단계 폭 및 오프셋 값과 같은 양자화 연산의 속성, 적용되는 개선 레벨을 표시할 수 있는 파라미터 세트와 함께 블록에 대한 위치 정보를 취할 수 있다. 예를 들어, 좌표 값의 쌍으로 또는 예를 들어 현재 픽처의 좌상단 루마 또는 크로마 샘플에 대한 현재 루마 또는 크로마 변환 블록의 좌상단 샘플을 지정하는 파라미터(xTbP, yTbP)로 표시될 수 있는 위치가 사용될 수 있다. 이는 이미지를 나타내는 데이터의 특정 부분과 관련될 수 있고, 예를 들어 변환 계수가 속하는 평면에 따라 루마 평면 또는 크로마 평면 중 어느 하나와 관련될 수 있다.
일부 예에서 nTbS라고 지칭될 수 있는 현재 변환 블록의 크기를 지정하는 앞서 설명한 파라미터는 변환 유형, 특히 디코딩에 사용되는 변환을 정의하는 파라미터 값에 따라 달라지는 값을 가질 수 있다. 이러한 유형 파라미터는 일부 예에서 transform_type라고 지칭될 수 있으며, 일부 응용에서는 2x2 방향성 분해 변환, 4x4 방향성 분해 변환, 또는 이들 요소가 비트스트림에 사용되지 않으므로 값이 제로임을 지정하는 값 또는 파라미터에 각각 대응하는 0, 1 또는 2-3의 값을 가질 수 있다. 일부 예에서 값이 0인 이 transform_type 파라미터는 4와 동일한 계층의 수에 대응할 수 있고 transform_type가 1과 동일한 경우 대응하는 계층의 수 값은 16일 수 있다. 크기(nTbS) 파라미터는 transform_type가 0과 같으면 2의 값을 가질 수 있고 transform_type가 1과 같으면 4의 값을 가질 수 있다.
프로세스에 대한 추가 입력은 전형적으로 엔트로피 디코딩된 양자화된 계수의 어레이의 형태이다. 이는 TransCoeffQ로 지칭될 수 있고, 앞서 설명된 크기 파라미터와 관련된 크기일 수 있으며, 특히 차원 (nTbS)x(nTbS)를 가지며, 즉, 어레이는 본 출원에 설명된 바와 같은 코딩 유닛 또는 블록을 포함할 수 있다. 이 어레이는 TransCoeffQ라고 지칭될 수 있다. 단계 폭 값은 stepWidth라 지칭되는 파라미터로 지정될 수 있다. 개선 레벨의 인덱스 또한 파라미터에 의해 지정될 수 있고, 일부 예에서는 idxLevel이라고 지칭될 수 있다. 탈양자화 오프셋이 사용되는 경우, 이는 예를 들어 dQuantOffset라 지칭되는 파라미터로 지정될 수 있다. 파라미터는 전형적으로 적용될 탈양자화 오프셋 파라미터의 값을 지정한다. 이 프로세스는 전형적으로 탈양자화된 변환 계수의 어레이를 생성한다. 이는 예를 들어 d[ x ][ y ] 요소를 포함하는 차원 (nTbS)x(nTbS)의 어레이의 형태일 수 있다.
d[ x ][ y ]라고 지칭될 수 있는 출력 어레이의 값은 전형적으로 예를 들어 앞서 설명한 단계 폭 및/또는 qm으로 지칭될 수 있는 양자화 행렬에 적용되는 개선 레벨의 임의의 인덱스 및 대응하는 요소에 대해 TransCoeffQ[ xTbP ][ yTbP ]로 명명될 수 있는 엔트로피 디코딩된 양자화된 계수에 기초하여 유도된다. 추가적으로, 앞서 설명한 동작의 결과에 오프셋을 추가적으로 적용하는 것을 통해 출력 어레이 요소의 값이 유도될 수 있다. 예를 들어, appliedOffset라 명명될 수 있는 파라미터를 값에 추가하여 출력 요소 값을 생성할 수 있다.
이는 따라서, 어레이의 각각의 요소 d를 계산하기 위해 다음 관계를 수반할 수 있다.
d[ x ][ y ]=(TransCoeffQ[ xTbP ][ yTbP ]*(stepWidth * qm[yTbP + (idxLevel * 4)][xTbP]))+ appliedOffset
디코더에서 탈양자화가 수행될 수 있는 방법의 하나의 예인 위의 계산에서, idxLevel은 각각 레벨 2와 1을 나타내는 0 또는 1일 수 있다. 위의 계산에서, 그리고 본 출원의 다른 예에서 설명된 바와 같이, 양자화 행렬로부터의 값은 특정 계수 및 특정 개선 레벨에 기초하여 선택된다.
일부 예에서 적용될 수 있는 오프셋과 관련하여, 위의 관계에서 도시된 바와 같이, appliedOffset라고 지칭될 수 있는 이 파라미터는 전형적으로 아래에서 다음과 같이 유도된다.
특정 경우에, appliedOffset은 잔차 필터링이 적용되는지 여부에 기초하여 조건부로 적용될 수 있다. 이 필터링은 역변환(예를 들어, 도 6의 410-1) 다음에 적용될 수 있으며 디블록킹 필터일 수 있다. 이러한 경우에, 잔차 필터링이 적용된 경우에만 오프셋이 적용될 수 있다. 예를 들어, deblocking_signalled로 명명될 수 있는 디블록킹 필터를 적용해야 하는지 여부를 지정하는 파라미터가 특정 값, 예를 들어 1과 같은 경우, dQuantOffset라 명명될 수 있는 탈양자화 오프셋을 지정하는 앞서 설명한 파라미터를 기초로 오프셋을 계산한다.
appliedOffset는 또한 dQuantOffset의 단일 값에서 유도될 수 있으며 양의 및 음의 계수 값에 대한 적용을 위해 적응될 수 있다. 예를 들어, appliedOffset는 전형적으로 탈양자화 오프셋 파라미터와 동일한 절대값을 갖고 각각 양의 또는 음의 부호를 갖는 음의 또는 양의 값으로 구성될 수 있다. 이는 TransCoeffQ 값이 0보다 더 작은 값을 갖는 경우에 적용될 수 있고; 그렇지 않고, TransCoeffQ 값이 0보다 더 크면, 적용된 오프셋에는 탈양자화 오프셋 파라미터와 동일한 값이 할당될 수 있다. TransCoeffQ 값이 0과 같으면, 이때, 적용된 오프셋에도 0 값이 할당될 수 있다.
따라서, 특정 예에서, 출력 어레이 요소를 획득하기 위해 추가될 수 있는 오프셋의 유도는 다음에 의해 유도될 수 있다(여기서 TransCoeffQ는 엔트로피 디코딩된 양자화된 계수를 포함하는 전형적으로 크기 (nTbS)x(nTbS)의 어레이일 수 있음):
If deblocking_signalled가 1과 같음
If TransCoeffQ[ xTbP ][ yTbP ] < 0
appliedOffset = (dQuantOffset * -1)
else If TransCoeffQ [ xTbP ][ yTbP ] > 0
appliedOffset = dQuantOffset
else
appliedOffset = 0
else
appliedOffset = 0
예로서, 파라미터 또는 파라미터의 세트는 앞서 설명된 바와 같이 시그널링될 수 있고 양자화 행렬이 계수 세트에 적용되는 방법을 지정하기 위해 사용될 수 있다. 이 파라미터는 quant_matrix_mode 파라미터일 수 있으며, 이는 아래의 표 1에 따라 디코딩 프로세스에서 사용될 양자화 행렬을 지정한다. 파라미터는 1 바이트일 수 있다. quant_matrix_mode 파라미터는 (예를 들어, 나중에 아래에서 설명되는 바와 같이) 양자화 행렬이 어떻게 유도되는지를 구성하는 데 사용될 수 있다.
Figure pct00016
양자화 행렬 데이터 시멘틱스는 다음의 특정 예에 따라 적용될 수 있다. qm [ y][ x ]로 지칭될 수 있는 양자화 행렬이 유도된다.
행렬 qm은 k*M x N 차원을 가질 수 있다. 말하자면, 행렬은 MxN 행렬에 포함된 양자화 계수에 대응하는 것으로 정의될 수 있고, qm은 예를 들어, k 개선 레벨 각각에 대해 양자화 계수의 각각의 MxN 행렬의 형태로 이 데이터를 포함할 수 있다.
본 예에서, 2개의 개선 레벨, 즉, 본 개시에서 설명된 레벨 1 및 2가 관련되고 k는 2와 동일하다. 이러한 절차와 관련하여 설명된 가장 큰 변환은 4x4이므로 M과 N은 각각 4와 같을 수 있다.
일부 예에서, 앞서 설명한 바와 같이, 이러한 예에서 4x4 변환이고 따라서 16개의 계수를 포함하는 최대 이용 가능한 변환에 대응하는 M 및 N 값으로 qm을 정의함으로써, 더 작은 변환이 사용되는 양자화 행렬의 적용은 qm으로부터 판독하고, 각각의 M x N 행렬에서 계수의 서브세트를 적용함으로써 수행될 수 있다.
특정 예에서, 양자화 행렬 모드 파라미터의 값이 0과 같은 경우, 즉, quant_matrix_mode가 0과 같은 경우, 이때, 다음 디폴트 양자화 행렬이 양자화 연산에 사용되고:
qm[ y][ x ] =
{ 0.500 0.500 0.500 0.617}
{ 0.862 0.610 1.064 0.781}
{ 0.500 0.500 0.500 0.617}
{ 3.125 1.851 1.851 1.316}
{ 0.500 0.500 0.500 0.617}
{ 0.862 0.610 1.064 0.781}
{ 0.862 1.064 0.610 0.781}
{ 3.125 1.851 1.851 1.316},
여기서, y = 0..3은 개선의 레벨 2에 사용되는 계수이고 y = 4..7은 개선의 레벨 1에 사용되는 계수이며;
양자화 행렬 모드 파라미터의 값이 1과 같으면, 하나의 수정자 행렬이 시그널링되고 두 개선 레벨 모두에서 사용된다. 행렬은 일부 응용에서 상호적인(interactive) 프로세스를 통해 구축될 수 있다. 따라서, qm[x][y] 값은 행별로 획득될 수 있으며, 이에 따라 행이 처리될 때 각각의 행에 대해 해당 행의 값이 채워지고, 행렬의 각각의 열이 채워진다. 후술된 바와 같이 이러한 행렬 값을 획득하는 데 단계 폭 수정자 파라미터가 사용될 수 있다. 본 예에서, 채워질 행의 수는 8일 수 있고, 이 특정 예의 행렬 차원과 관련하여 앞서 설명된 바와 같이 열의 수는 4와 동일하다. 특히, 이 예의 반복 프로세스는 다음과 같이 작성될 수 있다:
for (y = 0; y < 8; y++)
for (x = 0; x < 4; x++)
qm[y][ x ] = step_width_modifier_2[x + y*4],
여기서, 이 예에서 step_width_modifier_2라고 지칭될 수 있는 단계 폭 수정자 파라미터는 변환 계수의 상이한 계층에 적용될 레벨 2 개선 16 계수의 값을 지정하는 파라미터이고;
양자화 행렬 모드 파라미터의 값이 2와 같으면, 하나의 수정자 행렬이 시그널링되고 개선 레벨 2에서 사용된다. 마찬가지로, 앞서 설명한 것에 대응하는 반복 절차가 특히 다음과 같이 사용될 수 있다:
for (y = 0; y < 4; y++)
for (x = 0; x < 4; x < 4)
qm[ y][ x ] = step_width_modifier_2[x + y*4]; 및
양자화 행렬 모드 파라미터의 값이 3과 같은 경우, 하나의 수정자 행렬이 시그널링되고 개선 레벨 1에 사용된다:
for (y = 0; y < 4; y++)
for (x = 0; x < 4; x < 4)
qm[y + 4][ x ] = step_width_modifier_2[x + y*4]; 및
양자화 행렬 모드 파라미터의 값이 4와 같은 경우, 2개의 수정자 행렬이 시그널링되고, 제1 행렬은 개선 레벨 2에 대한 것이고 제2 행렬은 개선 레벨 1에 대한 것이다:
for (y = 0; y < 4; y++)
for (x = 0; x < 4; x < 4)
qm[ y][ x ] = step_width_modifier_2[x + y*4]
for (y = 0; y < 4; y++)
for (x = 0; x < 4; x < 4)
qm[ y][ x ] = step_width_modifier_1[x + y*4],
여기서, step_width_modifier_1은 변환 계수의 상이한 계층에서 적용될 레벨 1 개선 16 계수의 값을 지정하는 파라미터이다.
앞서 설명된 바와 같이, 행렬의 d[ x ][ y ] 값은 예를 들어 행렬의 관련 요소에서 각각의 변환 계수와, levelIdxSwap 파라미터와 현재 변환 블록의 크기를 지정하는 파라미터와 의 곱으로 식별되는 열에서 대응하는 양자화 행렬 요소 값과, 대응 행에서, 해당 요소에 대응하는 단계 폭 수정자 파라미터 값의 합의 곱에, 앞서 설명된 오프셋이 전형적으로 이 곱에 또한 가산식으로 적용되어 계산될 수 있다.
앞서 설명한 탈양자화 프로세스는 다음의 순서화된 단계에 따라 수행될 수 있다. 앞서 설명한 예에 따른 탈양자화 프로세스는 루마 위치(xTbY, yTbY), nTbS와 동일한 변환 크기 세트, 즉, 현재 변환 블록의 크기, 앞서 설명된 바와 같은, 크기 (nTbS)x(nTbS)의 어레이 TransCoeffQ 및 단계 폭 파라미터를 입력으로서 사용하여 호출될 수 있다. 그 다음, 출력은 차원 (nTbS)x(nTbS)의 탈양자화된 계수(예를 들어, 탈양자화된 변환된 잔차)의 어레이일 수 있으며, 이는 이 예에서 dequantCoeff로 지칭될 수 있다.
다음의 추가적인 예에서, 이해의 편의를 위해, 신호는 비디오 신호라 지칭된다. 이러한 예에서, 신호는 샘플 시퀀스로 구성되며 비디오 신호의 경우, 이들은 프레임일 수 있다. 비디오가 픽처 요소 또는 픽셀인 경우 각각의 샘플(예를 들어, 프레임)은 여러 데이터 요소로 구성된다.
추가적으로, 이러한 예에서, 양자화된 데이터를 참조한다. 이러한 양자화된 데이터는 인코딩된 데이터의 복수의 서브세트로 구성될 수 있다. 앞서 설명한 바와 같이, 양자화된 데이터는 변환된 계수, 즉, 신호의 원본 데이터 세트에 변환 프로세스를 적용하여 생성된 데이터에 대응할 수 있다. 이러한 데이터는 데이터 요소(예를 들어, 픽셀 등)일 수 있다. 이러한 데이터는 잔차 데이터일 수 있으며, 이는 샘플 또는 데이터 요소의 예측과 동일한 샘플 또는 데이터 요소의 참조 사이의 차이로서 획득될 수 있다. 변환은 DCT 유사 변환, 웨이블릿 변환, 아다마르 유사 변환, 특허 출원 PCT/EP2013/059847 및 PCT/GB2017/052632(양자 모두에 참조로 본 출원에 포함됨)에 설명된 것과 같은 방향성 분해 변환, 또는 특정 신호에 적절한 임의의 다른 유형의 변환일 수 있다. 양자화된 데이터의 복수의 서브세트 중 각각의 서브세트는 특정 변환된 양자화된 데이터의 계수 중 하나에 대응할 수 있다. 비제한적인 예로서, 4x4 변환의 경우 16개의 계수가 생성될 수 있으며, 따라서, 양자화된 데이터의 16개의 서브세트가 있을 수 있다.
양자화된 데이터는 양자화된 데이터의 2개 이상의 계층을 더 포함할 수 있다. 예를 들어, MPEG-5 Part 2(LCEVC)와 같은 다중 계층 인코딩 방식에서, 앞서 설명한 바와 같이 적어도 2개의 개선 서브 계층이 있을 수 있다. 이러한 개선 서브 계층 각각은 자체 양자화된 데이터를 가지며, 각각은 다른 것과는 다른 방식으로 양자화된다.
도 9를 참조하면, 디코딩 모듈(1100)의 예가 도시되어 있다. 디코딩 모듈(1100)은 인코딩된 베이스(1101), L1 계수 그룹(1121), L0 계수 그룹(1131), 시간 계수 그룹(1136) 및 헤더(1140)를 포함하는 복수의 입력 비트스트림을 수신한다.
일반적으로, 디코딩 모듈(1100)은 2개의 데이터 계층을 처리한다. 제1 계층, 즉, 베이스 계층(1110)은 인코딩된 베이스를 포함하는 수신된 데이터 스트림(1111)을 포함한다. 인코딩된 베이스(1111)는 그 다음 디코딩된 베이스 픽처(1113)를 생성하기 위해 인코딩된 베이스(1111)를 디코딩하는 베이스 디코딩 모듈(1112)로 발송된다. 베이스 디코딩은 인코딩된 베이스(1111)의 인코딩된 포맷에 따라 AVC, HEVC, AV1, VVC, EVC, VC-6, VP9 등과 같은 임의의 기존의 베이스 코덱 알고리즘을 구현하는 디코더일 수 있다.
제2 계층, 즉 개선 계층은 2개의 개선 서브 계층으로 추가로 구성된다. 디코딩 모듈은 계수의 제1 그룹, 즉 L1 계수 그룹(1121)을 수신하고, 이는 그 후 엔트로피 디코딩 모듈(1122)에 전달되어 디코딩된 계수 그룹을 생성한다. 이는 그 후 역양자화 모듈(1123)에 전달되고, 역양자화 모듈은 하나 이상의 탈양자화 파라미터를 사용하여 탈양자화된 계수 그룹을 생성한다. 그 후, 이는 역변환 모듈(1124)에 전달되고, 역변환 모듈은 탈양자화된 계수 그룹에 대해 역변환을 수행하여 개선 서브 계층 1에서 잔차(L1 잔차)를 생성한다. 그 다음, 잔차는 평활화 필터(1125)에 의해 필터링될 수 있다. L1 잔차(즉, 디코딩된 제1 개선 서브 계층)는 베이스 픽처(1113)의 처리된 출력에 적용된다.
디코딩 모듈은 계수의 제2 그룹, 즉 L0 계수 그룹(1131)을 수신하고, 이는 그 후 엔트로피 디코딩 모듈(1132)에 전달되어 디코딩된 계수 그룹을 생성한다. 이는 그 후 역양자화 모듈(1134)에 전달되고, 역양자화 모듈은 하나 이상의 탈양자화 파라미터를 사용하여 탈양자화된 계수 그룹을 생성한다. 개선 서브 계층 0에 사용되는 탈양자화 파라미터는 개선 서브 계층 1에 사용되는 탈양자화 파라미터와 상이할 수 있다. 탈양자화된 계수 그룹은 그 후 역변환 모듈(1135)에 전달되고 이 역변환 모듈은 탈양자화된 계수 그룹에 대해 역변환을 수행하여 개선 서브 계층 0(L0 잔차)에서 잔차를 생성한다.
도 10을 참조하면, 디코딩 프로세스의 예가 도시되어 있다. 디코딩된 베이스 픽처가 베이스 디코더로부터 획득된다. 이 픽처는 선택적으로 업샘플링되어 예비 중간 픽처를 생성할 수 있다. 잔차의 제1 계층이 예비 중간 픽처에 추가되어 조합된 중간 픽처를 생성한다. 잔차(L1 잔차)의 제1 계층은 예를 들어 디코딩된 베이스 픽처에 의해 생성된 블록킹 아티팩트 등을 보정함으로써 디코딩된 베이스 픽처를 보정하는 역할을 한다. 조합된 중간 픽처는 그 다음 예비 출력 픽처를 생성하기 위해 업샘플링될 수 있다. 잔차의 제2 계층이 예비 출력 픽처에 추가되어 조합된 출력 픽처를 생성한다. 잔차의 제2 계층(L0 잔차)은 예비 출력 픽처에 디테일과 선명도를 추가하는 역할을 한다. L0 잔차와 함께 사용되는 시간 버퍼에 데이터가 또한 있을 수 있다.
도 11을 참조하면, 본 발명에 따른 비제한적인 예시적인 실시예가 도시되어 있다. 비트스트림(200)은 디코딩 모듈에 의해 수신된다. 비트스트림은 메타데이터 및/또는 인코딩된 데이터에 대응하는 일련의 비트 및 인코딩된 데이터를 디코딩하기 위해 유용할 수 있는 임의의 다른 정보를 포함한다. 예에서, 비트스트림은 표준 비디오 코딩의 비트스트림을 준수할 수 있다. 비제한적인 예에서, 표준은 MPEG 5 Part 2(LCEVC), MPEG 5 Part 1(EVC), VVC, AVC, HEVC 등과 같은 MPEG 계열 표준 또는 AoM(예를 들어, AV1) 또는 SMPTE(예컨대, VC-6/ST-2117)와 같은 다른 표준 기구에 의해 생성된 표준일 수 있다.
비트스트림(1200)에서, 양자화된 데이터의 하나 이상의 서브세트를 디코딩하기 위해 필요한 탈양자화 파라미터를 결정하는 데 관련된 일부 정보가 존재할 수 있다.
비트스트림(1200)의 정보는 디코딩 모듈에 의해 획득될 수 있다. 제1 정보는 양자화 단계(1210)을 포함할 수 있다. 양자화 단계는 데이터를 양자화하는 데 사용되는 단계 폭과 관련된다. 비제한적인 예로서, 원본 데이터가 +32,768과 -32,768 사이의 값을 취할 수 있는 경우, 256의 양자화 단계는 이들 원래 값으로부터 256개의 심볼이 생성될 것이고, 각각의 심볼은 256의 범위 내의 값을 포함한다는 것을 의미할 것이다. 따라서, 예를 들어, 0과 255 사이의 값은 모두 동일한 심볼로 양자화되고 256과 512 사이의 값은 동일한 심볼로 양자화되는 등의 방식이다. 양자화 단계는 신호의 샘플마다(예를 들어, 프레임별로) 시그널링될 수 있고 서브 계층마다 상이할 수 있다(예를 들어, 다중 계층 인코딩 방식의 경우). 예를 들어, 제1 개선 서브 계층에 대한 제1 단계 폭 및 제2 개선 서브 계층에 대한 제2 단계 폭이 있을 수 있다.
비트스트림(1200)의 정보는 또한 사용될 탈양자화 프로세스의 유형을 시그널링하는 정보(220)를 포함할 수 있다. 이 정보는 예를 들어 정보에 제공된 값에 기초하여 어떤 프로세스를 사용할지를 나타내는 LUT(look-up-table)(1230)의 형태를 취할 수 있다. 예를 들어, 값 0은 프로세스 #0과 관련되고 값 1은 프로세스 #1과 관련되는 등일 수 있다. 비제한적인 예로서, 프로세스 #0은 이전 샘플에서 사용된 동일한 탈양자화 파라미터 세트가 현재 샘플에 사용되어야 함을 나타낼 수 있다. 비제한적인 예로서, 프로세스 #1은 디폴트 탈양자화 파라미터 세트가 현재 샘플에 사용되어야 함을 나타낼 수 있다. 비제한적인 예로서, 프로세스 #2는 시그널링된 양자화 파라미터 세트가 디폴트 양자화 파라미터 세트 대신에 현재 샘플에 대해 사용되어야 함을 나타낼 수 있다. 예에서, 양자화 파라미터 세트는 2개 이상의 서브세트를 포함할 수 있고, 각각의 서브세트는 양자화된 데이터의 계층에 대응한다. 예를 들어, 제1 양자화 파라미터 서브세트는 양자화된 데이터의 제1 개선 서브 계층에 대응할 수 있고, 제2 양자화 파라미터 서브세트는 양자화된 데이터의 제2 개선 서브 계층에 대응할 수 있다. 비제한적인 예로서, 프로세스 #3은 수정된 양자화 파라미터 세트를 생성하기 위해 디폴트 양자화 파라미터 세트(예를 들어, 서브세트 중 하나)의 일부를 변경하기 위해 시그널링된 양자화 파라미터 서브세트가 사용되어야 함을 나타낼 수 있으며, 수정된 양자화 파라미터 세트가 디폴트 양자화 파라미터 세트 대신 현재 샘플에 사용된다. 예에서, 양자화 파라미터 세트는 다수의 스케일링 인자로 구성될 수 있다. 그 다음, 스케일링 인자는 양자화된 데이터를 탈양자화하는 데 사용될 스케일링된 양자화 파라미터를 생성하기 위해 사용될 수 있다.
비트스트림(1200)의 정보는 또한 사용될 양자화 파라미터의 새로운 세트를 시그널링하는 정보(1240)를 포함할 수 있다. 예에서, 양자화 파라미터 세트는 다수의 스케일링 인자로 구성될 수 있다. 이 정보는 시그널링된 양자화 파라미터의 사용을 나타내는 프로세스가 정보(1220)를 통해 시그널링되는 경우에만 비트스트림(1200)에 포함될 수 있다. 이러한 방식으로, 필요할 때만 이 정보가 발송되고, 따라서 필요하지 않을 때 비트스트림(1200)의 크기를 증가시키는 것을 방지한다.
그 다음, 디코딩 모듈은 양자화된 데이터를 탈양자화할 때 사용될 실제 탈양자화 파라미터(1280)를 생성하기 위해 탈양자화 파라미터 모듈(1270)을 사용할 수 있다. 탈양자화 파라미터 모듈(1270)은 다양한 정보를 입력으로서 수신할 수 있다. 예를 들어, 일 실시예에서, 모듈(1270)은 양자화 단계(1210), 탈양자화 선택 표시(220), 스케일링 인자(들)(1240), 미리 결정된 스케일링 인자(들)(1250) 및 다른 파라미터(1260)를 수신할 수 있다. 미리 결정된 스케일링 인자(들)(1250)는 이전 샘플에서 사용된 스케일링 인자에 대응할 수 있거나 스케일링 인자의 디폴트 세트에 대응할 수 있다. 다른 파라미터는 양자화 파라미터를 수정하는 다른 요소, 예컨대, 데이터 요소의 블록이 정적, 준정적 또는 비정적 중 어느 것으로 고려되는지 여부에 기초하여 단계 폭을 수정하는 하나 이상의 파라미터(그 내용이 본 출원에 참조로 포함되는 특허 출원 GB 1911545.0에 또한 설명된 바와 같음) 또는 적용될 하나 이상의 탈양자화 오프셋(그 내용이 본 출원에 참조로 포함되는 특허 출원 GB 1914413.8에 또한 설명된 바와 같음)를 포함할 수 있다.
앞서 설명한 바와 같이, 실제 양자화 파라미터(
Figure pct00017
)는 앞서 설명한 바와 같이 시그널링된 프로세스를 기초로 결정된 스케일링 인자(
Figure pct00018
)로 수신된 양자화 단계(210)(
Figure pct00019
)를 처리함으로써 계산될 수 있다. 계산은 다음과 같은 적어도 이들 2개의 인자의 함수로 수행될 수 있다:
Figure pct00020
여기서, f(ㆍ)는 다음과 같은 승산일 수 있다:
Figure pct00021
그 후, 탈양자화된 데이터
Figure pct00022
는 다음과 같이 계산될 수 있다:
Figure pct00023
여기서
Figure pct00024
는 양자화된 데이터 서브세트이고
Figure pct00025
는 i번째 양자화된 데이터 서브세트에 대한 실제 양자화 단계이다.
그 다음, 실제 양자화 파라미터가 양자화된 데이터를 탈양자화하는 데 사용될 수 있다. 복수의 양자화된 데이터 서브세트를 포함하는 양자화된 데이터의 경우, 복수의 실제 양자화 파라미터가 있을 수 있으며, 이들 각각은 복수의 양자화된 서브세트 중 다른 하나와 관련된다.
또한, 앞서 설명된 바와 같이, 다른 예에서 실제 양자화 파라미터(
Figure pct00026
)는 단계 폭 수정자(
Figure pct00027
)와 같은 다른 정보를 기초로 추가로 계산될 수 있으며, 탈양자화를 위해 탈양자화 오프셋(DO(s))을 사용할 수 있다.
Figure pct00028
여기서, f(ㆍ)는 다음과 같을 수 있다:
Figure pct00029
그 후, 탈양자화된 데이터
Figure pct00030
는 다음과 같이 계산될 수 있다:
Figure pct00031
여기서
Figure pct00032
는 양자화된 데이터 서브세트이고
Figure pct00033
는 i번째 양자화된 데이터 서브세트에 대한 실제 양자화 단계이고 DOi는 특정 i번째 양자화된 데이터 서브세트에 대한 탈양자화 오프셋이다.
예시적인 구현
특정 예에 따르면, 스케일링된 변환된 계수는 d[x][y]로 주어질 수 있고 다음에 따라 결정될 수 있다:
d[x][y] = (TransformCoeffQ[x][y] * ((qm[x + (levelIdxSwap * nTbS)][y] + stepWidthModifier[x][y]) + appliedOffset [x][y])
여기서:
TransformCoeffQ[x][y]는 계수의 어레이를 나타내고;
qm[x][y]는 양자화 파라미터 또는 단계 폭의 양자화 행렬을 나타내고;
stepWidthModifier[x][y]는 수정 파라미터의 어레이를 나타내고;
appliedOffset [x][y]는 본 출원의 다른 곳에서 설명된 데드존으로 기능하는 어레이이며, 즉, 특정 시그널링된 시나리오에서 탈양자화 오프셋이 데드존을 변경하는 데 사용될 수 있거나 0일 수 있다.
플래그가 탈양자화 오프셋이 사용되지 않는다고 시그널링하는 경우, 이때, 단계 폭 수정자는 단계 폭의 함수일 수 있으며, 예를 들어, 다음과 같을 수 있다:
stepWidthModifier [x][y] = ((((Floor(-Cconst * Ln (qm[x + (levelIdxSwap * nTbS)][y]))) + Dconst) * (qm[x + (levelIdxSwap * nTbS)][y] 2 ))) / 32768) >> 16
플래그가 탈양자화 오프셋이 사용된다고 시그널링하는 경우, 이때, 단계 폭 수정자는 오프셋 값 세트에 기초할 수 있으며, 예를 들어, 다음과 같을 수 있다:
stepWidthModifier [x][y] = (Floor((dQuantOffsetActual [x][y]) * (qm[x + (levelIdxSwap * nTbS)][y])) / 32768)
여기서, 오프셋 값은 단계 폭(즉, qm[x][y])의 함수이고, 예를 들어, 다음과 같다:
dQuantOffsetActual [x][y] = ((Floor(-Cconst * Ln(qm[x + (levelIdxSwap * nTbs)][y]) + (dQuantOffset << 9) + Floor(Cconst * Ln(StepWidth)))) * (qm[x + (levelIdxSwap * nTbs)][y])) >> 16
특정 예에서, 양자화 행렬 qm[x][y]는 각각의 계수 그룹을 디코딩하는 데 사용되는 실제 양자화 단계 폭을 포함한다. 특정 모드에서, 행렬은 (QuantScalerDDBuffer [x][y] * stepWidth)에 기초할 수 있으며, 여기서 QuantScalerDDBuffer [x][y]는 스케일링 값의 어레이이다.
여기서, 버퍼는 본질적으로 단계 폭을 수정하는 스케일링 버퍼이다. 이 특정 구현에서, 값은 대안적 구현에 지정된 바와 같이 마스크로서 작용하는 것이 아니라 폭을 스케일링한다. 버퍼는 모드 시그널링의 영향을 받는다. 즉, 행렬은 디폴트 2x6 행렬이거나 상이한 계층 및 업스케일링에 대해 상이할 수 있다. 예를 들어, 1D 또는 2d 업스케일링에 대해, 파라미터가 각각의 프레임에 대해 시그널링되어야 하는 경우, 단지 행렬을 시그널링하는 데만도 높은 시그널링 비용이 필요하다. 디폴트 스케일링 인자가 더 효율적일 수 있다. 그러나, 특정 프레임에 대해 다른 행렬을 시그널링하거나 디폴트로부터 행렬을 변경하도록 개선이 있을 수 있다. 여기서, 버퍼는 픽처 그룹 또는 특정 서브세트에 대해 영구적일 수 있다. 모드 시그널링 파라미터를 사용하여 해당 행렬을 다시 디폴트로 변경하는 메커니즘이 또한 제공될 수 있다. 행렬을 다시 시그널링하는 것이 아니라, 모드 시그널링을 변경하면 버퍼에서 다시 한 번 스케일링 인자가 사용될 수 있게 한다. 본 출원에 설명된 시그널링은 이전에 시그널링된 행렬을 유지하기 위해 제공된다. 본 출원에 설명된 시그널링은 달리 시그널링되지 않는 한 픽처 그룹의 끝에서 파라미터의 리셋(또는 리프레시)을 제공한다.
본 출원에 설명된 행렬 시그널링은 상당한 이점을 제공한다는 점에 유의해야 한다. 예를 들어, 16개의 값이 있는 경우, 파라미터를 시그널링하는 데 1 바이트가 필요하다. 비디오에 대해 초당 60개의 프레임이 있을 수 있다는 점을 감안할 때 각각의 프레임에 대한 파라미터를 발송하려면 시그널링만 7.6Kbps가 필요할 수 있다.
다음 표는 시그널링 모드의 예를 설명한다. 이들은 위의 표 1에 대안적이거나 추가적일 수 있음을 유의해야 한다.
Figure pct00034
이 표에서 IDR은 프레임과 함께 글로벌 구성이 발송되는 프레임을 지칭함을 유의한다. IDR 픽처는 임의의 다른 픽처를 참조하지 않는 프레임이다. IDR 픽처의 한 가지 특정 이점은 리셋(또는 리프레시)를 허용하고 예를 들어 장면의 변경이 있는 경우에 사용될 수 있다는 것이다. IDR은 i-프레임으로 고려될 수 있지만, i-프레임은 IDR이 아니며, 그 이유는 이들이 상이한 속성을 갖기 때문임을 유의하여야 한다.
여기서, 모드 0은 사용될 파라미터가 이전에 시그널링된 것들임을 시그널링하는 데 사용됨을 알 수 있다. 이러한 방식으로, 버퍼를 유지하고 사용해야 한다는 것을 시그널링하기 위해 가장 저렴한 시그널링이 사용된다. 즉, 시그널링이 가장 효율적이다. 예에서, 0이 사용되는 경우, 이는 효율적으로 엔트로피 코딩될 수 있다.
따라서, 서로 다른 모드 조합에 따라 효율적인 스케일링이 수행될 수 있다. 따라서, 디폴트는 메모리에 저장된 스케일링을 스킵하도록 시그널링될 수 있다. 메모리는 인코더로부터의 시그널링에 의해 업데이트될 수 있거나 미리 결정되거나 계산될 수 있다. 모드 및 스케일링 인자는 각각의 프레임, 각각의 픽처 그룹 또는 타일별로 시그널링될 수 있다. 모드 시그널링은 시스템이 잔차 세트에 이용 가능한 작은 비트레이트에 대한 결과를 최대화하게 할 수 있다.
추가적인 구현
본 출원에 설명된 바와 같은 특정 실시예에서, 예시적인 구현에서, 무손실 압축을 위해 다음이 구현될 수 있음을 유의해야 한다:
여기서, stepWidth > 16인 경우 deadZoneWidthOffset는 다음과 같이 유도된다:
deadZoneWidthOffset [x][y] = (((1 << 16) - ((Aconst * (qm[x + (levelIdxSwap * nTbs)][y] + stepWidthModifier [x][y])) + Bconst) >> 1) * (qm[x + (levelIdxSwap * nTbs)][y] + stepWidthModifier [x][y])) >> 16
여기서, stepWidth <= 16인 경우 deadZoneWidthOffset는 다음과 같이 유도된다:
deadZoneWidthOffset [x][y] = stepWidth >> 1
즉, 단계 폭이 16보다 더 작은 경우, deadzonewidthoffset는 파라미터 행렬에 의존하지 않는다.
추가적인 예시적 구현
아래에 첨부된 부록은 본 출원의 다른 곳에서 설명된 원리를 구현하는 비제한적인 구현의 예를 제공한다. 이 예는 설명된 특징에 대한 컨텍스트를 제공하는 데 사용될 수 있다.
추가적인 예시적 인코더 및 디코더
도 25 및 26은 각각 도 1, 3a 및 3b의 인코더 아키텍처 및 도 2, 5a 및 5b의 디코더 아키텍처의 변형을 도시한다.
비트스트림을 생성하기 위한 인코딩 프로세스(2500)가 도 12에 도시되어 있다. 먼저, 입력 시퀀스(2502)가 제1 다운 샘플러(2504)에 공급되고, 이어서 제2 다운 샘플러(2506)(즉, 도면에서 다운-스케일러라고 지칭되는 연속적인 다운 샘플러)가 선택된 스케일링 모드에 따라 처리된다. 도 12의 변형은, 베이스 계층 이전에 추가적인 다운샘플링 및 업샘플링 스테이지가 존재한다는 점에서, 예를 들어, 제2 다운-스케일러(2506)로서 도시된 추가적인 다운샘플링 스테이지가 데이터를 베이스 인코더(2512)에 전달하기 이전에 가능하고, (도 12에서 제1 업-스케일러(2508)로서 도시된) 추가적인 업샘플링 스테이지가 베이스 계층으로부터 디코딩된 데이터의 수신 이후에 가능하다는 점에서 이전 예의 변형과는 상이하다. 특정 예에서, 주어진 스케일링 모드는 각각의 스테이지에서 다운-스케일러 및 업-스케일러 쌍을 턴온 및 턴오프하는데 사용될 수 있다. 일 경우에, 스케일링 모드는, 예를 들어, 본 출원에 설명된 수평 단독 다운샘플링/업샘플링에 따라, 스케일링의 방향을 나타낼 수 있다. 제2 다운-스케일러(2506) 및 제1 업-스케일러(2508)가 턴오프되면, 이때, 공간적 스케일링은 도 1, 3a 및 3b의 것과 유사하다.
도 12에서, 이전 예에 따라, 그 자체의 명세에 따라 베이스 비트스트림(2516)을 생성하는 베이스 코덱이 사용된다. 이 인코딩된 베이스는 현재 비디오 코딩 프레임워크에 대한 조합된 비트스트림의 일부로서 포함될 수 있다.
추가적인 업스케일링을 사용하거나 사용하지 않고서, 재구성된 베이스 픽처, 예를 들어 베이스 인코딩된 프레임의 디코딩된 버전이 제1 감산 컴포넌트(2520)에서 1차 다운스케일링된 입력 시퀀스로부터 감산되어, 서브 계층 1 잔차(본 출원에 설명되는 바와 같은 레벨 1 잔차 데이터)를 생성한다. 이 잔차는 제1 개선 계층의 인코딩 프로세스에 대한 시작점을 형성한다. 본 출원에 설명된 바와 같은 변환 컴포넌트(2521), 양자화 컴포넌트(2523) 및 엔트로피 인코딩 컴포넌트(2524)(무엇보다도)는 (레벨 1) 엔트로피 인코딩된 양자화된 변환 계수(2526)를 생성하기 위해 (레벨 1) 잔차의 제1 세트를 처리한다.
도 12에서, 이전 예에 따라, 서브 계층 1로부터의 엔트로피 인코딩된 양자화된 변환 계수은 역 동작 또는 디코딩 동작을 수행하는 인-루프 디코더에 의해 처리된다. 이러한 동작은 디코더에서 수행될 제1 잔차 세트에 대한 디코딩 프로세스를 모사한다. 도 12의 일 예에서, 이는 엔트로피 디코딩 컴포넌트(2525), 역양자화 컴포넌트(2527), 역변환 컴포넌트(2528) 및 레벨 1 필터(2530)를 포함한다. 앞서 설명한 컴포넌트와 유사할 수 있다. 처리된 또는 "디코딩된" 제1 잔차 세트는 합산 컴포넌트(2532)에서 베이스 인코더의 출력으로부터 유도된(예를 들어, 디코딩되고 선택적으로 업스케일링된) 데이터에 추가되어 재구성된 프레임을 생성한다. 도 12에서, 재구성된 프레임은 제2 업-스케일러(2534)에 의해 처리된다. 업-스케일러의 사용은 다시 선택한 스케일링 모드에 따라 달라질 수 있다. 마지막으로, (L2 계층으로도 지칭될 수 있는) 제2 서브 계층 2에 대한 잔차는 입력 시퀀스 및 업스케일링된 재구성의 감산에 의해 제2 감산 컴포넌트(2536)에서 계산된다. 이들은 (레벨 2) 잔차의 제2 세트를 형성하고 이러한 잔차는 코딩 컴포넌트 또는 도구 세트에 의해 처리되고, 이는 변환 컴포넌트(2541), 시간 예측 컴포넌트(2542), 양자화 컴포넌트(2543) 및 엔트로피 인코딩 컴포넌트(2544)를 포함한다. 출력은 레벨 2 계수 계층(2546)의 세트이다. 다른 예에서 설명한 바와 같이, 시간 모드가 활성화되면, 특정의 시간적 중복 정보를 제거하고 레벨 2 잔차 스트림의 에너지(예를 들어, 값의 수 및 비-제로 잔차 값의 수)를 감소시키기 위해 변환 계수에 대해 시간 예측 컴포넌트(2542)에 의해 추가의 시간 예측이 적용될 수 있다. 서브 계층 2의 엔트로피 인코딩된 양자화된 변환 계수는 물론 블록 기반의 시간 예측의 사용을 지정하는 시간 계층(2556)이 개선 비트스트림에 포함되어 있다. 시간 계층(2556)은 이전 예를 참조하여 설명된 시간 시그널링을 포함할 수 있다. 엔트로피 인코딩 컴포넌트(2557)에 의해 인코딩된 엔트로피일 수 있다. 엔트로피 인코딩 컴포넌트(2557)는 예를 참조하여 설명된 바와 같이 적어도 런-렝스 인코딩을 적용할 수 있다.
인코더(2500)는, 예를 들어, 도 14a 내지 도 14c의 예를 참조하여 설명된 바와 같이, 인코더 구성 정보(2565)의 세트로 구성될 수 있다. 이 정보는 출력 비트스트림에 대한 헤더(2566)의 세트로서 디코더로 송신될 수 있다. 도 12에서, 인코더에 대한 조합된 비트스트림은 헤더(2566), 시간 계층(2556), 레벨 2(L2) 인코딩된 계수(2546), 레벨 1(L1) 인코딩된 계수(2526) 및 인코딩된 베이스 스트림(2516)을 포함할 수 있다.
도 13은 일 예에 따른 디코더(2600)의 변형을 도시한다. 디코더는 본 출원의 다른 도면 중 어느 하나에 도시된 디코더의 변형을 포함할 수 있다. 도 13의 디코더는 도 12의 인코더와 함께 사용될 수 있다.
먼저, 프레임의 출력 시퀀스의 생성을 위해, 디코더(2600)는 비트스트림을 분석한다. 도 13에서 알 수 있는 바와 같이, 프로세스는 다시 3개의 부분으로 나누어질 수 있다.
(예를 들어, 계층 0에서) 디코딩된 베이스 픽처를 생성하기 위하여, 베이스 디코더(2618)에는 추출된 베이스 비트스트림(2616)이 공급된다. 선택된 스케일링 모드에 따르면, 이 재구성된 픽처는 (레벨 1) 잔차의 제1 세트를 추가하는 합산 컴포넌트(2630) 이전에 추가의 제1 업-스케일러(2608)에 의해 업스케일링될 수 있다. 제1 업-스케일러(2608)로부터 합산 컴포넌트(2630)로의 입력은 예비 중간 픽처라 지칭될 수 있다.
베이스 계층 디코딩에 후속하여(또는 이와 병렬로), (잔차의 2개의 서브 계층을 포함하는) 개선 계층 비트스트림이 디코딩될 필요가 있다. 먼저, 서브 계층 1(L1)에 속하는 계수(2626)는 인코딩 프로세스 동안 사용되는 코딩 컴포넌트 또는 도구의 역 버전을 사용하여 디코딩된다. 따라서, 레벨 1 계수 계층(2626)은, 차례로, 엔트로피 디코딩 컴포넌트(2671), 역양자화 컴포넌트(2672), 및 역변환 컴포넌트(2673)에 의해 처리된다. 추가적으로, 서브 계층 1(L1) 필터(2632)는 변환 블록(즉, 코딩 유닛)의 경계를 평활화하기 위해 적용될 수 있다. 서브 계층 1(L1) 디코딩 프로세스의 출력은 개선 서브 계층 1 출력으로 지칭될 수 있다. 이 개선 서브 계층 1 출력은 제1 (하위) 합산 컴포넌트(2630)에서 예비 중간 픽처에 추가되어, 조합된 중간 픽처를 생성한다. 역시, 스케일링 모드에 따라, 제2 업-스케일러(2687)가 적용될 수 있고, 결과적인 예비 출력 픽처가 생성될 수 있다. 예비 출력 픽처는 제2 상위 합산 컴포넌트(2658)에 제공된다. 전체 출력 픽처와 동일한 치수를 갖는다.
최종 단계로서, 제2 개선 서브 계층(2)에 대한 인코딩된 계수(2646)가 디코딩된다. 다시 말하지만, 이는 본 출원에서의 다른 예에서 설명된 바와 같은 역 코딩 컴포넌트 또는 도구의 세트를 사용한다. 도 13에서, 이 컴포넌트는 엔트로피 디코딩 컴포넌트(2681), 역양자화 컴포넌트(2682) 및 역변환 컴포넌트(2683)를 포함한다. 시간 모드가 활성화되면, 이때, 시간 예측 컴포넌트(2685)는 시간 예측을 적용할 수 있다. 시간 예측은 제2 개선 서브 계층(2) 내의 임의의 지점에서 적용될 수 있다. 일 경우에, 이는 양자화된 변환 계수에 적용된다. 시간 예측은 시간 계층(2656)으로서 수신된 시그널링에 기초하여 적용될 수 있다. 도 13에서, 시간 계층(2656)은 엔트로피 디코딩 컴포넌트(2690)에 의해 디코딩된다(예를 들어, 런-렝스 디코딩될 수 있다). 시간 예측의 출력은 개선 서브 계층 2 출력으로서 제2 상위 합산 컴포넌트(2658)에 제공된다. 그 다음, 이는 상기 합산 컴포넌트(2658)에 의해 예비 출력 픽처에 추가되어 조합된 출력 픽처(2660)를 디코딩 프로세스의 최종 출력으로서 형성한다.
다시 말하면, 디코딩 프로세스는 비트 스트림의 헤더(2666) 내에서 송신되는 디코더 구성(2692)에 따라 제어될 수 있다.
상기 예를 참조하여 설명된 바와 같이, 비교대상 스케일러블 코덱과 달리, 본 출원에 설명된 새로운 접근법은 서브 계층을 인코딩하기 위해 사용되는 코덱에 대해 완전히 애그노스틱할 수 있다. 이는 상위 계층이 서브 계층에 대한 어떠한 정보도 없이 디코딩 가능하기 때문이다. 도 13에 도시된 바와 같이, 디코더는 인코더에 의해 생성된 다수의 스트림을 수신한다. 이들은 다음을 포함하는 5개 정도의 스트림일 수 있다: 베이스 코덱(예를 들어, AVC, HEVC, 또는 임의의 다른 코덱)에 입력 비디오의 다운샘플링된 버전을 공급함으로써 생성되는 제1 인코딩된 스트림(인코딩된 베이스); 재구성된 베이스 코덱 비디오와 입력 비디오의 다운샘플링된 버전(레벨 1 잔차들) 사이의 차이를 취함으로써 획득된 잔차를 처리함으로써 생성되는 제2 인코딩된 스트림(레벨 1 계수 계층들); 재구성된 베이스 코딩된 비디오의 보정된 버전의 업샘플링된 버전과 입력 비디오 사이의 차이 (레벨 2 잔차들)를 취함으로써 획득된 잔차를 처리함으로써 생성되는 제3 인코딩된 스트림(레벨 2 계수 계층들); 디코더에 명령하기 위해 시간 처리로부터 생성되는 (예를 들어, 시간 계층의 형태의) 제4 인코딩된 스트림; 및 디코더를 구성하기 위해 생성되는 제5 스트림(헤더). 인코딩된 베이스 스트림은 인코더에서 사용되는 베이스 코덱에 의해 구현되는 인코딩 알고리즘에 대응하는 디코딩 알고리즘을 구현하는 베이스 디코더에 의해 디코딩되고, 이의 출력은 디코딩된 베이스이다. 별개로 그리고 독립적으로, 레벨 1 계수 그룹은 레벨 1 잔차 데이터를 획득하기 위하여 디코딩된다. 또한, 개별적으로 그리고 독립적으로, 레벨 2 잔차 데이터를 획득하기 위해 레벨 2 계수 그룹이 디코딩된다. 이어서, 디코딩된 베이스, 레벨 1 잔차 데이터 및 레벨 2 잔차 데이터가 조합된다. 특히, 디코딩된 베이스는 레벨 1 잔차 데이터와 조합되어 중간 픽처를 생성한다. 이어서, 중간 픽처가 업샘플링되고, 레벨 2 잔차 데이터와 더 조합될 수 있다.
또한, 새로운 접근법은 어떠한 블록간 예측도 사용하지 않고 픽처를 처리하는 인코딩 및 디코딩 프로세스를 사용한다. 오히려, 이는 픽처 요소의 NxN 블록(예를 들어, 2x2 또는 4x4)을 변환하고 서로 독립적으로 블록을 처리함으로써 픽처를 처리한다. 이는 효율적인 처리는 물론, 이웃 블록에 대한 의존성이 없는 상태를 초래하며, 따라서 픽처의 처리가 병렬화되는 것을 가능하게 한다.
일반적으로 요약하면, 도 13을 참조하면, 비제한적인 예시적인 실시예가 도시되어 있다. 도 13에는 예시적인 디코딩 모듈(2600)이 도시되어 있다. 디코딩 모듈(2600)은 인코딩된 베이스(2616), 레벨 1 계수 그룹(2626), 레벨 2 계수 그룹(2646), 시간 계수 그룹(2656) 및 헤더(2666)를 포함하는 복수의 입력 비트스트림을 수신한다.
일반적으로, 디코딩 모듈(2600)은 2개의 데이터 계층을 처리한다. 제1 계층, 즉 베이스 계층은 인코딩된 베이스를 포함하는 수신된 데이터 스트림(2616)을 포함한다. 그 다음, 인코딩된 베이스(2616)는 베이스 디코딩 모듈(2618)에 발송되고, 베이스 디코딩 모듈(2618)은 인코딩된 베이스(2616)를 디코딩하여 디코딩된 베이스 픽처를 생성한다. 베이스 디코딩은 인코딩된 베이스의 인코딩된 포맷에 따라 AVC, HEVC, AV1, VVC, EVC, VC-6, VP9 등과 같은 임의의 기존의 베이스 코덱 알고리즘을 구현하는 디코더일 수 있다.
제2 계층, 즉 개선 계층은 2개의 개선 서브 계층으로 추가로 구성된다. 디코딩 모듈은 계수의 제1 그룹, 즉 레벨 1 계수 그룹(2626)을 수신하고, 이는 그 후 엔트로피 디코딩 모듈(2671)에 전달되어 디코딩된 계수 그룹을 생성한다. 이는 그 후 역양자화 모듈(2672)에 전달되고, 역양자화 모듈은 하나 이상의 탈양자화 파라미터를 사용하여 탈양자화된 계수 그룹을 생성한다. 그 후, 이는 역변환 모듈(2673)에 전달되고, 역변환 모듈은 탈양자화된 계수 그룹에 대해 역변환을 수행하여 개선 서브 계층 1에서 잔차(레벨 1 잔차들)를 생성한다. 그 다음, 잔차는 평활화 필터(2632)에 의해 필터링될 수 있다. 레벨 1 잔차(즉, 디코딩된 제1 개선 서브 계층)는 베이스 픽처의 처리된 출력에 적용된다.
디코딩 모듈은 계수의 제2 그룹, 즉 레벨 2 계수 그룹(2646)을 수신하고, 이는 그 후 엔트로피 디코딩 모듈(2681)에 전달되어 디코딩된 계수 그룹을 생성한다. 이는 그 후 역양자화 모듈(2682)에 전달되고, 역양자화 모듈은 하나 이상의 탈양자화 파라미터를 사용하여 탈양자화된 계수 그룹을 생성한다. 개선 서브 계층 2에 사용되는 탈양자화 파라미터는 개선 서브 계층 1에 사용되는 탈양자화 파라미터와 상이할 수 있다. 탈양자화된 계수 그룹은 그 후 역변환 모듈(2683)에 전달되고 이 역변환 모듈은 탈양자화된 계수 그룹에 대해 역변환을 수행하여 개선 서브 계층 2(레벨 2 잔차)에서 잔차를 생성한다.
구현
인코더 및 디코더 모두에서, 예를 들어 스트리밍 서버 또는 클라이언트 디바이스에서 구현되거나 데이터 저장소로부터 디코딩하는 클라이언트 디바이스에서, 본 출원에 설명된 방법, 및 프로세스는 코드(예를 들어, 소프트웨어 코드) 및/또는 데이터로서 구현될 수 있다. 인코더 및 디코더는 데이터 압축 분야에서 잘 알려진 바와 같이 하드웨어 또는 소프트웨어로 구현될 수 있다. 예를 들어, 특별히 프로그래밍된 그래픽 처리 유닛(GPU) 또는 특별히 설계된 FPGA(Field Programmable Gate Array)를 사용하는 하드웨어 가속은 특정 효율성을 제공할 수 있다. 완전성을 위해 이러한 코드와 데이터는 하나 이상의 컴퓨터 판독 가능 매체에 저장될 수 있으며, 이는 컴퓨터 시스템에서 사용하기 위한 코드 및/또는 데이터를 저장할 수 있는 임의의 디바이스 또는 매체를 포함할 수 있다. 컴퓨터 시스템이 컴퓨터 판독 가능 매체에 저장된 코드 및/또는 데이터를 판독하고 실행할 때, 컴퓨터 시스템은 컴퓨터 판독 가능 저장 매체에 저장된 데이터 구조 및 코드로 구현된 방법 및 프로세스를 수행한다. 특정 실시예에서, 본 출원에 설명된 방법 및 프로세스의 단계 중 하나 이상은 프로세서(예를 들어, 컴퓨터 시스템 또는 데이터 저장 시스템의 프로세서)에 의해 수행될 수 있다.
일반적으로, 본문에 설명되거나 도면에 예시된 기능 중 임의의 기능은 소프트웨어, 펌웨어(예를 들어, 고정 로직 회로), 프로그램 가능 또는 프로그램 불가 하드웨어, 또는 이러한 구현의 조합을 사용하여 구현될 수 있다. 본 출원에 사용된 "컴포넌트" 또는 "기능"이라는 용어는 일반적으로 소프트웨어, 펌웨어, 하드웨어 또는 그 조합을 나타낸다. 예를 들어, 소프트웨어 구현의 경우 "컴포넌트" 또는 "기능"이라는 용어는 처리 디바이스 또는 디바이스에서 실행될 때 지정된 작업을 수행하는 프로그램 코드를 지칭할 수 있다. 별개의 유닛으로의 컴포넌트와 기능의 예시된 분리는 이러한 소프트웨어 및/또는 하드웨어 및 작업의 임의의 실제 또는 개념적 물리적 그룹화 및 할당을 반영할 수 있다.
부록
다음은 본 출원의 다른 곳에서 설명된 원리를 구현하는 비제한적인 구현의 예를 설명한다. 이 예는 설명된 특징에 대한 컨텍스트를 제공하는 데 사용될 수 있다.
신택스(Syntax) 및 시멘틱스(semantics)
신택스 테이블은 모든 허용된 비트스트림 신택스의 상위 세트를 지정한다. 신택스에 대한 추가적인 제약은 필요에 따라 직접 또는 간접적으로 지정될 수 있다.
주목 실제 디코더는 비트스트림으로 진입점을 식별하기 위한 일부 수단과 비준수 비트스트림을 식별하고 처리하기 위한 일부 수단을 구현해야 한다. 오차의 식별 및 처리 방법 및 기타
프로세스 페이로드 - 픽처 구성
Figure pct00035
Figure pct00036
Figure pct00037
데이터 블록 유닛 픽처 구성 시멘틱스
no_enhancement_bit_flag는 픽처의 모든 layerIdx < nLayers에 대한 개선 데이터가 없음을 지정한다.
quant_matrix_mode는 아래 표에 따라 디코딩 프로세스에서 사용할 양자화 행렬을 지정한다. quant_matrix_mode가 존재하지 않을 때, 이는 0과 같은 것으로 추론된다.
Figure pct00038
dequant_offset_signalled_flag는 오프셋 방법 및 탈양자화시 적용될 오프셋 파라미터 값이 시그널링되는지 여부를 지정한다. 1과 같으면, 탈양자화 오프셋 방법 및 탈양자화 오프셋 파라미터의 값이 시그널링된다. dequant_offset_signalled_flag가 존재하지 않는 경우, 이는 0과 같은 것으로 추론된다.
picture_type_bit_flag는 인코딩된 데이터가 아래 표에 따라 프레임 기반(예를 들어, 프로그레시브 모드 또는 인터레이스 모드) 또는 필드 기반(예를 들어, 인터레이스 모드)으로 발송되는지 여부를 지정한다.오류! 참조 소스를 찾을 수 없음.
픽처 유형
Figure pct00039
field_type_bit_flag는 picture_type가 1과 같으면 발송된 데이터가 아래 표에 따라 상단 또는 하단 필드에 있는지 여부를 지정한다오류! 참조 소스를 찾을 수 없음.
필드 유형
Figure pct00040
temporal_refresh_bit_flag는 픽처에 대해 시간 버퍼를 리프레시하여야 하는지 여부를 지정한다. 1과 같은경우, 시간 버퍼를 리프레시하여야 한다. IDR 픽처의 경우, temporal_refresh_bit_flag는 1로 설정되어야 한다.
temporal_signalling_present_flag는 비트스트림에 시간 시그널링 계수 그룹이 존재하는지 여부를 지정한다. temporal_signalling_present_flag가 존재하지 않는 경우, 이는 temporal_enabled_flag가 1과 같고 temporal_refresh_bit_flag가 0과 같으면, 1과 동일한 것으로 추론되고, 그렇지 않으면, 0과 같은 것으로 추론된다.
step_width_level2는 루마 평면에 대한 개선 서브 계층 2에서 인코딩된 잔차를 디코딩할 때 사용될 단계 폭 값의 값을 지정한다. 크로마 평면에 대한 개선 서브 계층 2에서 인코딩된 잔차를 디코딩할 때 사용되는 단계 폭 값은 Clip3(1, 32,767, ((step_width_level2 * chroma_step_width_multiplier)>>6))으로서 계산된다.
step_width_level1_enabled_flag는 개선 서브 계층 1에서 인코딩된 잔차를 디코딩할 때 사용되는 단계 폭의 값이 디폴트값인지 아니면 시그널링되는지를 지정한다. 이는 0(디폴트값) 또는 1(step_width_level1에 의해 시그널링된 값) 중 어느 하나여야 한다. 디폴트값은 32,767이다. step_width_level1_enabled_flag가 존재하지 않을 때, 이는 0과 같은 것으로 추론된다.
dithering_control_flag는 디더링을 적용하여야 하는지 여부를 지정한다. 이는 0(디더링 비활성화됨) 또는 1(디더링 활성화됨) 중 어느 하나여야 한다. dithering_control_flag가 존재하지 않을 때, 이는 0과 같은 것으로 추론된다.
step_width_level1은 개선 서브 계층 1에서 인코딩된 잔차를 디코딩할 때 사용될 단계 폭 값의 값을 지정한다.
level1_filtering_enabled_flag는 level1 디블록킹 필터를 사용해야 하는지 여부를 지정한다. 이는 0(필터링 비활성화됨) 또는 1(필터링 활성화됨) 중 어느 하나여야 한다. level1_filtering_enabled_flag가 존재하지 않을 때, 이는 0과 같은 것으로 추론된다.
qm_coefficient_0[layerIdx]는 quant_matrix_mode가 2, 3 또는 5와 같을 때 양자화 행렬 스케일링 파라미터의 값을 지정한다.
qm_coefficient_1[layerIdx]는 quant_matrix_mode가 4 또는 5와 같을 때 양자화 행렬 스케일링 파라미터의 값을 지정한다.
dequant_offset_mode_flag는 탈양자화 오프셋을 적용하는 방법을 지정한다. 0과 같으면, 시그널링된 dequant_offset를 파라미터로 사용하여 디폴트 방법이 적용된다. 1과 같으면, 시그널링된 dequant_offset 파라미터를 사용하여 상수 오프셋 방법이 적용된다.
dequant_offset는 적용될 탈양자화 오프셋 파라미터의 값을 지정한다. 탈양자화 오프셋 파라미터의 값은 0에서 127 사이(경계값 포함) 이어야 한다.
dithering_type는 아래 표에 따라 최종 재구성된 픽처에 적용되는 디더링 유형을 지정한다.오류! 참조 소스를 찾을 수 없음.
디더링
Figure pct00041
dithering_strength는 0과 31 사이의 값을 지정한다.
디코딩 프로세스
디코딩 프로세스는 지정된 프로파일 및 레벨을 준수하는 모든 디코더가 해당 프로파일 및 레벨을 준수하는 비트스트림에 대해 해당 프로파일과 관련된 디코딩 프로세스를 호출할 때 수치적으로 동일한 절단된 디코딩된 출력 픽처를 생성하도록 지정된다. (지정된 대로 정확한 출력 순서 또는 출력 타이밍으로) 본 출원에 설명된 프로세스에 의해 생성된 것과 동일한 절단된 디코딩된 출력 픽처를 생성하는 임의의 디코딩 프로세스는 디코딩 프로세스 요건을 준수한다.
L-2로 인코딩된 데이터 블록에 대한 일반적 디코딩 프로세스
이 프로세스에 대한 입력은 다음과 같다:
현재 픽처의 좌상단 샘플에 대해 현재 변환 블록의 좌상단 샘플을 지정하는 샘플 위치(xTb0, yTb0), 변수 transform_type의 값으로부터 하위조항 오류! 참조 소스를 찾을 수 없음 에서 유도된 현재 변환 블록의 크기를 지정하는 변수 nTbS(transform_type가 0과 같은 경우 nTbS = 2, transform_type가 1과 같은 경우 nTbS = 4),
다른 곳에서 유도된 변수 temporal_enabled_flag 및 다른 곳에서 유도된 변수 temporal_refresh_bit_flag, 다른 곳에서 유도된 변수 temporal_signalling_present_flag 및 다른 곳에서 지정된 temporal_step_width_modifier
현재 블록의 다른 곳에서 지정된 프로세스로 인한 업샘플링된 재구성된 샘플을 지정하는 크기 (nTbS)x(nTbS)의 어레이 recL2ModifiedUpsampledSamples,
L-2 엔트로피 디코딩된 양자화된 변환 계수를 지정하는 크기 (nTbS)x(nTbS)의 어레이 TransformCoeffQ,
변수 temporal_signalling_present_flag가 1과 같고, temporal_tile_intra_signalling_enabled_flag가 1과 같은 경우, 위치(xTb0 >> nTbs, yTb0 >> nTbs)에서 TempSigSurface의 값에 대응하는 변수 TransformTempSig; 및 추가로 temporal_tile_intra_signalling_enabled_flag가 1로 설정되는 경우, 위치((xTb0%32) * 32, (yTb0%32) * 32)에서 TempSigSurface의 값에 대응하는 변수 TileTempSig,
변수 step_width_level2의 값으로부터 다른 곳에서 유도된 stepWidth 값,
변환 계수가 속한 평면을 지정하는 변수 IdxPlanes.
이 프로세스의 출력은 요소 resL2Residuals[x][y]를 갖는 L-2 잔차 resL2Residuals의 (nTbS)x(nTbS) 어레이이다.
현재 픽처의 좌상단 샘플에 대한 현재 변환 블록의 좌상단 샘플을 지정하는 샘플 위치(xTbP, yTbP)는 다음과 같이 유도된다.
(xTbP, yTbP) = (IdxPlanes == 0) ? (xTb0, yTb0) : (xTb0 >> ShiftWidthC, yTb0 >> ShiftHeightC)
P는 변환 계수가 속한 평면에 따라 루마 또는 크로마 평면 중 어느 하나와 관련될 수 있다. ShiftWidthC 및 ShiftHeightC는 다른 곳에서 지정된다.
no_enhancement_bit_flag가 0으로 설정되면, 그 후, 다음 순서화된 단계가 적용된다:
변수 temporal_enabled_flag가 1과 같고, temporal_refresh_bit_flag가 0과 같으면, 루마 위치(xTbY, yTbY), nTbS와 동일하게 설정된 변환 크기, 변수 TransformTempSig 및 변수 TileTempSig를 입력으로 사용하여 다른 곳에서 지정된 시간 예측 프로세스가 호출되고, 출력은 (nTbS)x(nTbS) 크기의 어레이 tempPredL2Residuals이다.
변수 temporal_enabled_flag가 1과 같고 temporal_refresh_bit_flag가 1과 같으면 (nTbS)x(nTbS) 크기의 어레이 tempPredL2Residuals는 0만 포함하도록 설정된다.
변수 temporal_enabled_flag가 1과 같고, temporal_refresh_bit_flag는 0과 같고 temporal_tile_intra_signalling_enabled_flag는 1과 같고(하위조항오류! 참조 소스를 찾을 수 없음), TransformTempSig가 0과 같은 경우, 변수 stepWidth가 Floor(stepWidth * (1 - (Clip3(0, 0.5, (temporal_step_width_modifier / 255)))))로 수정된다.
다른 곳에서 지정된 탈양자화 프로세스는 nTbS와 동일하게 설정된 변환 크기, (nTbS)x(nTbS) 크기의 어레이 TransformCoeffQ, 변수 stepWidth를 입력으로 하여 호출되고, 출력은 (nTbS))x(nTbS) 어레이 dequantCoeff이다.
다른 곳에서 지정된 변환 프로세스는 루마 위치(xTbY, yTbY), nTbS와 동일하게 설정된 변환 크기, 크기 (nTbS)x(nTbS)의 어레이 dequantCoeff를 입력으로 사용하여 호출되고, 출력은 (nTbS)x(nTbS) 어레이 resL2Residuals이다.
변수 temporal_enabled_flag가 1과 같으면 (nTbS)x(nTbS) 크기의 tempPredL2Residuals 어레이가 (nTbS)x(nTbS) 어레이 resL2Residuals에 추가되고 resL2Residuals 어레이는 루마 위치(xTbY, yTbY)에서 temporalBuffer에 저장된다.
no_enhancement_bit_flag가 1로 설정되면, 다음 순서화된 단계가 적용된다:
변수 temporal_enabled_flag가 1과 같고, temporal_refresh_bit_flag는 0과 같고, 변수 temporal_signalling_present_flag는 1과 같은 경우, 루마 위치(xTbY, yTbY), nTbS와 동일하게 설정된 변환 크기, 변수 TransformTempSig 및 변수 TileTempSig를 입력으로 사용하여 다른 곳에서 지정된 시간 예측 프로세스가 호출되고, 출력은 (nTbS)x(nTbS) 크기의 어레이 tempPredL2Residuals이다.
변수 temporal_enabled_flag가 1과 같고, temporal_refresh_bit_flag는 0과 같고, 변수 temporal_signalling_present_flag는 0과 같은 경우, 루마 위치(xTbY, yTbY), nTbS와 동일하게 설정된 변환 크기, 0과 동일하게 설정된 변수 TransformTempSig 및 0과 동일하게 설정된 변수 TileTempSig를 입력으로 사용하여 다른 곳에서 지정된 시간 예측 프로세스가 호출되고, 출력은 (nTbS)x(nTbS) 크기의 어레이 tempPredL2Residuals이다.
변수 temporal_enabled_flag가 1과 같고 temporal_refresh_bit_flag가 1과 같으면 (nTbS)x(nTbS) 크기의 어레이 tempPredL2Residuals는 0만 포함하도록 설정된다.
변수 temporal_enabled_flag가 1과 같으면 (nTbS)x(nTbS) 크기의 tempPredL2Residuals 어레이가 (nTbS)x(nTbS) 어레이 resL2Residuals에 저장되고 resL2Residuals 어레이는 루마 위치(xTbY, yTbY)에서 temporalBuffer에 저장된다.
그렇지 않으면 (nTbS)x(nTbS) 크기의 어레이 resL2Residuals가 0만 포함하도록 설정된다.
하위조항오류! 참조 소스를 찾을 수 없음에서 지정된 각각의 평면 픽처 재구성 프로세스는 변환 블록 위치(xTb0, yTb0), 변환 블록 크기 nTbS, 변수 IdxPlanes, (nTbS)x(nTbS) 어레이 resL2Residuals 및 (xTbY)x(yTbY) recL2ModifiedUpsampledSamples를 입력으로 사용하여 호출된다.
탈양자화를 위한 디코딩 프로세스
이 프로세스에 전달된 변환 계수의 모든 그룹은 특정 평면 및 개선 서브 계층에 속한다. 이들은 데드존을 갖는 균일한 양자화기를 사용하여 스케일링되었다. 양자화기는 비-중심 탈양자화 오프셋을 사용할 수 있다.
변환 계수에 대한 스케일링 프로세스
이 프로세스에 대한 입력은 다음과 같다:
현재 변환 블록의 크기를 지정하는 변수 nTbS(transform_type가 0과 같은 경우 nTbS = 2 및 transform_type가 1과 같은 경우 경우 nTbS = 4),
엔트로피 디코딩된 양자화된 변환 계수를 포함하는 크기 (nTbS)x(nTbS)의 어레이 TransformCoeffQ,
단계 폭 값 파라미터를 지정하는 변수 stepWidth,
개선 서브 계층의 인덱스를 지정하는 변수 levelIdx(개선 서브 계층 1에 대해 levelIdx = 1 및 개선 서브 계층 2에 대해 levelIdx = 2),
탈양자화 오프셋을 지정하는 변수 dQuantOffset 및 변수 dequant_offset,
quant_matrix_mode가 0과 다르면, 크기 1 x nTbS2의 어레이 QmCoeff0(어레이 변수 qm_coefficient_0와 동일함) 및 추가로 quant_matrix_mode가 4와 같으면 크기 1 x nTbS2의 어레이 QmCoeff1(어레이 변수 qm_coefficient_1와 동일함),
nTbS == 2이면, 이전 픽처에서 사용된 스케일링 파라미터 어레이를 포함하는 크기 (3 * nTbS)x(nTbS)의 어레이 QuantScalerDDBuffer;
nTbS == 4이면, 이전 픽처에서 사용된 스케일링 파라미터 어레이를 포함하는 크기 (3 * nTbS)x(nTbS)의 어레이 QuantScalerDDSBuffer.
본 프로세스의 출력은 요소 d[x][y] 및 업데이트된 어레이 QuantMatrixBuffer을 갖는 탈양자화된 변환 계수의 (nTbS)x(nTbS) 어레이 d이다.
x = 0...nTbS - 1, y = 0...nTbS - 1 및 하위조항 8.6.2에 지정된 바와 같은 주어진 행렬 qm[x][y]를 갖는 스케일링된 변환 계수 d[x][y]의 유도를 위해, 다음 공식이 사용된다:
d[x][y] = (TransformCoeffQ[x][y] * ((qm[x + (levelIdxSwap * nTbS)][y] + stepWidthModifier[x][y]) + appliedOffset [x][y]) (1)
탈양자화 오프셋 및 단계 폭 수정자의 유도
appliedOffset [x][y] 및 stepWidthModifier [x][y] 변수는 다음과 같이 유도된다:
if (dequant_offset_signalled_flag == 0) {
stepWidthModifier [x][y] = ((((Floor(-Cconst * Ln (qm[x + (levelIdxSwap * nTbS)][y]))) + Dconst) *
(qm[x + (levelIdxSwap * nTbS)][y]2))) / 32768) >> 16
if (TransformCoeffQ[x][y] < 0)
appliedOffset [x][y] = (-1 * (-deadZoneWidthOffset [x][y]))
else if (TransformCoeffQ [x][y] > 0)
appliedOffset [x][y] = -deadZoneWidthOffset [x][y]
else
appliedOffset [x][y] = 0
} else if (dequant_offset_signalled_flag == 1) && (dequant_offset_mode_flag ==1) {
stepWidthModifier [x][y] = 0
if (TransformCoeffQ[x][y] < 0)
appliedOffset = (-1 * (dQuantOffsetActual [x][y] - deadZoneWidthOffset [x][y]))
else if (TransformCoeffQ [x][y] > 0)
appliedOffset [x][y] = dQuantOffsetActual [x][y] - deadZoneWidthOffset [x][y]
else
appliedOffset [x][y] = 0}
} else if (dequant_offset_signalled_flag == 1) && (dequant_offset_mode_flag == 0) {
stepWidthModifier [x][y] = (Floor((dQuantOffsetActual [x][y]) * (qm[x + (levelIdxSwap * nTbS)][y]))
/ 32768)
if (TransformCoeffQ[x][y] < 0)
appliedOffset = (-1 * (-deadZoneWidthOffset [x][y]))
else if (TransformCoeffQ [x][y] > 0)
appliedOffset [x][y] = -deadZoneWidthOffset [x][y]
else
appliedOffset [x][y] = 0
}
여기서, stepWidth > 16인 경우 deadZoneWidthOffset는 다음과 같이 유도된다:
deadZoneWidthOffset [x][y] = (((1 << 16) - ((Aconst * (qm[x + (levelIdxSwap * nTbs)][y] + stepWidthModifier [x][y])) + Bconst) >> 1) * (qm[x + (levelIdxSwap * nTbs)][y] + stepWidthModifier [x][y])) >> 16
여기서, stepWidth <= 16인 경우 deadZoneWidthOffset는 다음과 같이 유도된다:
deadZoneWidthOffset [x][y] = stepWidth >> 1
여기서:
Aconst = 39
Bconst = 126484
Cconst = 5242
Dconst = 99614
여기서, dQuantOffsetActual [x][y]는 다음과 같이 계산된다:
if (dequant_offset == 0)
dQuantOffsetActual [x][y] = dQuantOffset
else {
if (dequant_offset_mode_flag == 1)
dQuantOffsetActual [x][y] = ((Floor(-Cconst * Ln(qm[x + (levelIdxSwap * nTbs)][y]) +
(dQuantOffset << 9) + Floor(Cconst * Ln(StepWidth)))) * (qm[x + (levelIdxSwap * nTbs)][y])) >> 16
else if (dequant_offset_mode_flag == 0)
dQuantOffsetActual [x][y] = ((Floor(-Cconst * Ln(qm[x + (levelIdxSwap * nTbs)][y]) +
(dQuantOffset << 11) + Floor(Cconst * Ln(StepWidth)))) * (qm[x + (levelIdxSwap * nTbs)][y]))
>>16
}
여기서, levelIdxSwap는 다음과 같이 유도된다:
if (levelIdx == 2)
levelIdxSwap = 0
else
levelIdxSwap = 1
양자화 행렬의 유도
양자화 행렬 qm[x][y]는 각각의 계수 그룹을 디코딩하는 데 사용되는 실제 양자화 단계 폭을 포함한다.
if (levelIdx == 2) {
if (scaling_mode_level2 == 1) {
for (x = 0; x < nTbS; x++) {
for (y = 0; y < nTbs; y++)
qm [x][y] = qm_p [x][y]
}
} else {
for (x = 0; x < nTbS; x++) {
for (y = 0; y < nTbS; y++)
qm [x][y] = qm_p [x + nTbS][y]
}
}
} else {
for (x = 0; x < nTbS; x++) {
for (y = 0; y < nTbs; y++)
qm [x][y] = qm_p [x + (2 * nTbS)][y]
}
}
여기서, qm_p[x][y]는 다음과 같이 계산된다:
if (nTbs == 2) {
for (x = 0; x < 6; x++) {
for (y = 0; y < nTbs; y++)
qm_p[x][y] = (Clip3 (0, (3 << 16),[(QuantScalerDDBuffer [x][y] * stepWidth) + (1 << 16)]) *
stepWidth) >> 16
}
} else {
for (y = 0; y < 12; y++) {
for (x = 0; x < nTbs; x++)
qm_p[x][y] = (Clip3 (0, (3 << 16),[(QuantScalerDDSBuffer [x][y] * stepWidth) + (1 << 16)]) *
stepWidth) >> 16
}
}
그리고, 여기서 QuantScalerDDBuffer [x][y]는 다른 곳에서 유도되고 QuantScalerDDSBuffer [x][y]는 다른 곳에서 유도된다.
2x2 변환을 위한 스케일링 파라미터의 유도
변수 nTbS가 2와 같은 경우, 디폴트 스케일링 파라미터는 다음과 같다:
default_scaling_dd[x][y] =
{
{ 0, 2 }
{ 0, 0 }
{ 32, 3)
{ 0, 32 }
{ 0, 3 }
{ 0, 32 }
}
제1 단계로, 어레이 QuantScalerDDBuffer[x][y]는 다음과 같이 초기화된다:
현재 픽처가 IDR 픽처인 경우, QuantScalerDDBuffer[x][y]는 default_scaling_dd[x][y]와 같도록 초기화된다. 현재 픽처가 IDR 픽처가 아닌 경우, QuantScalerDDBuffer[x][y] 행렬은 변경되지 않은 상태로 유지된다.
초기화 이후, quant_matrix_mode 값을 기초로 어레이 QuantScalerDDBuffer[x][y]는 다음과 같이 처리된다:
quant_matrix_mode가 0과 같고 현재 픽처가 IDR 픽처가 아닌 경우, QuantScalerDDBuffer[x][y]는 변경되지 않은 상태로 유지된다.
quant_matrix_mode가 1과 같으면, QuantScalerDDBuffer[x][y]는 default_scaling_dd[x][y]와 같다.
quant_matrix_mode가 2와 같은 경우, QuantScalerDDBuffer[x][y]는 다음과 같이 수정된다:
for (MIdx = 0; MIdx < 3; MIdx++)
for (x = 0; x < 2; x++)
for (y = 0; y < 2; y++)
QuantScalerDDBuffer [x + (MIdx * 2)][y] = QmCoeff0[(x * 2) + y]
quant_matrix_mode가 3과 같은 경우, QuantScalerDDBuffer[x][y]는 다음과 같이 수정된다:
for (MIdx = 0; MIdx < 2; MIdx++)
for (x = 0; x < 2; x++)
for (y = 0; y < 2; y++)
QuantScalerDDBuffer [x + (MIdx * 2)][y] = QmCoeff0 [(x * 2) + y]
quant_matrix_mode가 4와 같은 경우, QuantScalerDDBuffer[x][y]는 다음과 같이 수정된다:
for (x = 0; x < 2; x++)
for (y = 0; y < 2; y++)
QuantScalerDDBuffer [x + 4][y] = QmCoeff1 [(x * 2) + y]
quant_matrix_mode가 5와 같은 경우, QuantScalerDDBuffer은 다음과 같이 수정된다:
for (MIdx = 0; MIdx < 2; MIdx ++)
for (x = 0; x < 2; x++)
for (y = 0; y < 2; y++)
QuantScalerDDBuffer [x + (MIdx * 2)][y] = QmCoeff0[(x * 2) + y]
for (x = 4, x< 6; x++)
for (y = 0; y < 2; y++)
QuantScalerDDBuffer [x][y] = QmCoeff1[(x * 2) + y]
4x4 변환을 위한 스케일링 파라미터의 유도
변수 nTbS가 4와 같은 경우, 디폴트 스케일링 파라미터는 다음과 같다:
default_scaling_dds[x][y] =
{
{ 13, 26, 19, 32 }
{ 52, 1, 78, 9 }
{ 13, 26, 19, 32 }
{ 150, 91, 91, 19 }
{ 13, 26, 19, 32 }
{ 52, 1, 78, 9 }
{ 26, 72, 0, 3 }
{ 150, 91, 91, 19 }
{ 0, 0, 0, 2 }
{ 52, 1, 78, 9 }
{ 26, 72, 0, 3 }
{ 150, 91, 91, 19 }
}
제1 단계로 어레이 QuantScalerDDSBuffer[][]는 다음과 같이 초기화된다:
현재 픽처가 IDR 픽처인 경우, QuantScalerDDSBuffer[x][y] 는 default_scaling_dds[x][y] 와 같도록 초기화된다. 현재 픽처가 IDR 픽처가 아닌 경우, QuantScalerDDSBuffer[x][y] 행렬은 변경되지 않은 상태로 유지된다.
초기화 이후, quant_matrix_mode 값을 기초로 어레이 QuantScalerDDSBuffer[x][y]는 다음과 같이 처리된다:
quant_matrix_mode가 0과 같고 현재 픽처가 IDR 픽처가 아닌 경우, QuantScalerDDSBuffer은 변경되지 않은 상태로 유지된다.
quant_matrix_mode가 1과 같으면, QuantScalerDDSBuffer은 default_scaling_dds[x][y]와 같다.
quant_matrix_mode가 2와 같은 경우, QuantScalerDDSBuffer은 다음과 같이 수정된다:
for (MIdx = 0; MIdx < 3; MIdx++)
for (x = 0; x < 4; x++)
for (y = 0; y < 4; y++)
QuantScalerDDSBuffer [x + (MIdx * 4)][y] = QmCoeff0[(x * 4) + y]
quant_matrix_mode가 3과 같은 경우, QuantScalerDDSBuffer은 다음과 같이 수정된다:
for (MIdx = 0; MIdx < 2; MIdx++)
for (x = 0; x < 4; x++)
for (y = 0; y < 4; y++)
QuantScalerDDSBuffer [x + (MIdx * 4)][y] = QmCoeff0[(x * 4) + y]
quant_matrix_mode가 4와 같은 경우, QuantScalerDDSBuffer은 다음과 같이 수정된다:
for (x = 0; x < 4; x++)
for (y = 0; y < 4; y++)
QuantScalerDDSBuffer [x + 8][y] = QmCoeff1[(x * 4) + y]
quant_matrix_mode가 5와 같은 경우, QuantScalerDDSBuffer은 다음과 같이 수정된다:
for (MIdx = 0; MIdx < 2; MIdx++)
for (x = 0; x < 4; x++)
for (y = 0; y < 4; y++)
QuantScalerDDSBuffer [x + (MIdx * 4)][y] = QmCoeff0[(x * 4) + y]
for (x = 8, x < 12; x++)
for (y = 0; y < 4; y++)
QuantScalerDDSBuffer [x][y] = qm_coefficient_1[(x * 4) + y]

Claims (63)

  1. 인코딩된 신호를 디코딩하는 방법에 있어서, 상기 인코딩된 신호는 비트스트림(bitstream) 내에 수신되고, 상기 방법은,
    상기 인코딩된 신호와 관련된 양자화된 데이터 세트를 수신하는 단계;
    적어도 하나의 탈양자화(dequantization) 파라미터를 결정하는 단계; 및
    상기 적어도 하나의 탈양자화 파라미터에 적어도 부분적으로 기초하여 상기 양자화된 데이터를 탈양자화하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서, 상기 결정하는 단계는,
    상기 인코딩된 신호를 포함하는 비트스트림으로부터 상기 양자화된 데이터를 탈양자화하기 위해 적용될 상기 탈양자화 연산의 표시를 유도하는 단계; 및
    상기 표시에 적어도 부분적으로 기초하여 상기 적어도 하나의 탈양자화 파라미터를 결정하는 단계를 더 포함하는, 방법.
  3. 청구항 1 또는 2에 있어서, 상기 탈양자화 연산은 상기 적어도 하나의 탈양자화 파라미터를 결정하기 위해 적어도 하나의 미리 결정된 탈양자화 파라미터를 사용하는 단계를 포함하는, 방법.
  4. 청구항 3에 있어서, 상기 적어도 하나의 미리 결정된 탈양자화 파라미터는 디폴트(default) 탈양자화 파라미터에 대응하는, 방법.
  5. 청구항 4에 있어서, 상기 인코딩된 스트림은 샘플 시퀀스를 포함하고, 상기 적어도 하나의 미리 결정된 탈양자화 파라미터는 이전 샘플을 디코딩하는 데 사용되는 탈양자화 파라미터에 대응하는, 방법.
  6. 청구항 1 내지 3 중 어느 한 항에 있어서, 상기 탈양자화 연산은 상기 비트스트림에 수신된 적어도 하나의 업데이트된 파라미터를 사용하여 상기 적어도 하나의 미리 결정된 탈양자화 파라미터를 업데이트하는 단계를 포함하는, 방법.
  7. 청구항 1 내지 6 중 어느 한 항에 있어서, 상기 적어도 하나의 탈양자화 파라미터는 양자화 단계 폭(step width) 파라미터를 포함하고, 상기 양자화 단계 폭 파라미터는 비트스트림에 수신되는, 방법.
  8. 청구항 7에 있어서, 상기 적어도 하나의 탈양자화 파라미터는 적어도 하나의 스케일링 인자를 더 포함하는, 방법.
  9. 청구항 8에 있어서, 상기 적어도 하나의 탈양자화 파라미터를 결정하는 단계는 상기 적어도 하나의 스케일링 인자로 상기 양자화 단계를 처리하는 단계를 포함하는, 방법.
  10. 청구항 1 내지 9 중 어느 한 항에 있어서, 상기 양자화된 계수의 세트는 양자화된 데이터의 복수의 서브세트를 포함하고, 상기 적어도 하나의 탈양자화 파라미터는 복수의 탈양자화 파라미터를 포함하고, 상기 복수의 탈양자화 파라미터 중 각각의 탈양자화 파라미터는 상기 양자화된 데이터의 복수의 서브세트 중 각각의 서브세트에 대응하는, 방법.
  11. 청구항 10에 있어서, 상기 탈양자화 연산은 상기 복수의 탈양자화 파라미터로부터 그 각각의 탈양자화 파라미터에 적어도 부분적으로 기초하여 양자화된 데이터의 복수의 서브세트 각각을 탈양자화하는 단계를 더 포함하는, 방법.
  12. 청구항 10 또는 11에 있어서, 상기 복수의 탈양자화 파라미터는 적어도 하나의 양자화 단계 폭 파라미터를 포함하고, 상기 양자화 단계 폭 파라미터는 비트스트림에 수신되고, 적어도 하나의 스케일링 인자를 포함하는, 방법.
  13. 청구항 12에 있어서, 상기 적어도 하나의 스케일링 인자는 복수의 스케일링 인자를 포함하고, 상기 복수의 스케일링 인자 각각은 상기 양자화된 데이터의 복수의 서브세트 중 각각의 서브세트에 대응하는, 방법.
  14. 청구항 13에 있어서, 상기 적어도 하나의 탈양자화 파라미터를 결정하는 단계는 복수의 탈양자화 파라미터를 유도하는 단계를 포함하고, 상기 복수의 탈양자화 파라미터 각각은 상기 양자화 단계 폭 파라미터를 상기 복수의 스케일링 인자 중 각각의 스케일링 인자로 처리함으로써 획득되는, 방법.
  15. 청구항 1 내지 14 중 어느 한 항에 있어서, 실제 양자화 파라미터
    Figure pct00042
    는 스케일링 인자
    Figure pct00043
    로 상기 수신된 양자화 단계 폭 파라미터
    Figure pct00044
    를, 다음에 따른 이들 2개의 인자의 함수에 의해
    Figure pct00045

    처리함으로써 계산되는, 방법.
  16. 청구항 15에 있어서, 상기 함수 f(ㆍ)는
    Figure pct00046

    에 따른 승산(multiplication)인, 방법.
  17. 청구항 16에 있어서, 상기 탈양자화 연산은
    Figure pct00047
    로 계산되는 탈양자화된 데이터를 포함하고, 여기서
    Figure pct00048
    는 양자화된 데이터 서브세트이며,
    Figure pct00049
    는 i번째 양자화된 데이터 서브세트에 대한 실제 양자화 단계인, 방법.
  18. 청구항 1 내지 17 중 어느 한 항에 있어서, 실제 양자화 파라미터
    Figure pct00050
    는 단계 폭 수정자(
    Figure pct00051
    )에 추가로 기초하여 계산되고, 탈양자화 오프셋(dequantization offset)은
    Figure pct00052

    에 따라 탈양자화 연산에 사용되는, 방법.
  19. 청구항 18에 있어서, f(ㆍ)는
    Figure pct00053

    에 따른 함수이고, 여기서
    상기 탈양자화 연산은 다음과 같이 계산된 탈양자화된 데이터를 포함하고,
    Figure pct00054

    여기서,
    Figure pct00055
    는 양자화된 데이터 서브세트이고,
    Figure pct00056
    는 i번째 양자화된 데이터 서브세트에 대한 상기 실제 양자화 단계이고, DOi는 상기 특정 i번째 양자화된 데이터 서브세트에 대한 상기 탈양자화 오프셋인, 방법.
  20. 청구항 1 내지 19 중 어느 한 항에 있어서, 상기 양자화된 데이터의 세트는 선형 양자화기를 사용하여 스케일링된 변환된 계수의 그룹을 포함하는, 방법.
  21. 청구항 20에 있어서, 상기 선형 양자화기는 비-중심(non-centered) 탈양자화 오프셋을 사용하는, 방법.
  22. 청구항 21에 있어서, 상기 탈양자화 오프셋의 값은 인코더로부터 수신되는, 방법.
  23. 청구항 22에 있어서, 상기 수신된 오프셋 값은 단계 폭에 기초한 탈양자화 이전에 수신된 양자화된 값에 추가되는, 방법.
  24. 청구항 1 내지 23 중 어느 한 항에 있어서, 상기 탈양자화 파라미터는 단계 폭 파라미터 값의 세트로 정의된 양자화 행렬인, 방법.
  25. 청구항 24에 있어서, 상기 방법은 하나 이상의 저장된 파라미터 및 하나 이상의 시그널링된 파라미터 중 적어도 하나의 함수로서 상기 양자화 행렬을 구성하는 단계를 더 포함하는, 방법.
  26. 청구항 24 또는 25에 있어서, 상기 탈양자화된 데이터는 x = 0...nTbS-1, y = 0...nTbS-1 및 주어진 양자화 행렬 qm[x][y]에 대한 스케일링된 변환 계수 d[x][y]를 포함하고, 이는 다음 공식에 따라 유도되며,
    d[x][y] = (TransformCoeffQ[x][y] * ((qm[x + (levelIdxSwap * nTbS)][y] + stepWidthModifier[x][y]) + appliedOffset [x][y]),
    여기서, TransformCoeffQ는 엔트로피 디코딩된 양자화된 변환 계수를 포함하는 크기 (nTbS)x(nTbS)의 어레이이고,
    levelIdx는 개선 서브 계층의 인덱스를 지정하는 변수이고, appliedOffset [x][y] 및 stepWidthModifier [x][y]는 변수인, 방법.
  27. 청구항 26에 있어서, 변수 stepWidthModifier [x][y]는 다음에 따라 유도되고,
    dequant_offset_signalled_flag = 0인 경우, stepWidthModifier [x][y] = ((((Floor(-Cconst * Ln (qm[x + (levelIdxSwap * nTbS)][y]))) + Dconst) * (qm[x + (levelIdxSwap * nTbS)][y]2))) / 32768),
    여기서, Cconst 및 Dconst는 상수인, 방법.
  28. 청구항 24 내지 27 중 어느 한 항에 있어서, 상기 양자화 행렬은 양자화 행렬 모드 파라미터의 획득된 값에 따라 유도되고, 상기 양자화 행렬 모드 파라미터는 상기 디코딩 프로세스에서 사용될 상기 양자화 행렬을 지정하는, 방법.
  29. 청구항 28에 있어서, 디폴트 구성 중 적어도 하나를 통해 각각의 인코딩된 신호에 대해 상이한 각각의 양자화 행렬이 사용되게 하는 단계 및 상기 디폴트 구성을 무효화(override)하기 위해 시그널링을 통해 상기 각각의 인코딩된 신호에 대해 공통 양자화 행렬이 사용되게 하는 단계를 포함하는, 방법.
  30. 청구항 24 내지 29 중 어느 한 항에 있어서, 베이스 양자화 행렬은 값의 세트로 정의되고, 상기 베이스 양자화 행렬은 단계 폭의 함수인 스케일링 인자에 따라 수정되는, 방법.
  31. 청구항 30에 있어서, 상기 스케일링 인자는 단계 폭 파라미터의 클램핑된 함수(clamped function)로서 계산되는, 방법.
  32. 청구항 30 또는 31에 있어서, 상기 양자화 행렬의 각각의 엔트리는 상기 스케일링 인자의 지수 함수를 사용하여 스케일링되는, 방법.
  33. 청구항 1 내지 32 중 어느 한 항에 있어서, 제1 코덱으로 코딩된 베이스 디코딩된 신호를 수신하는 단계를 더 포함하고, 상기 탈양자화된 데이터는 잔차 세트를 나타내며, 상기 방법은 상기 탈양자화된 데이터를 베이스 디코딩된 신호와 조합하여 재구성된 신호를 생성하는 단계를 더 포함하는, 방법.
  34. 청구항 33에 있어서, 상기 방법은,
    추가 인코딩된 신호와 관련된 양자화된 데이터의 추가 세트를 수신하는 단계- 상기 추가 인코딩된 신호는 상기 비트스트림 내에 수신됨 -;
    상기 추가 인코딩된 신호와 관련된 양자화된 데이터의 추가 세트를 수신하는 단계;
    적어도 하나의 추가적인 탈양자화 파라미터를 결정하는 단계;
    상기 적어도 하나의 탈양자화 파라미터에 적어도 부분적으로 기초하여 상기 추가 양자화된 데이터를 탈양자화하는 단계;
    업샘플링된 재구성된 신호를 생성하기 위해 상기 재구성된 신호를 업샘플링하는 단계; 및
    상기 추가 탈양자화된 데이터를 상기 업샘플링된 재구성된 신호와 조합하여 추가 재구성된 신호를 생성하는 단계를 더 포함하는, 방법.
  35. 입력 신호를 복수의 인코딩된 스트림으로 인코딩하는 방법에 있어서, 상기 인코딩된 스트림은 상기 입력 신호를 재구성하기 위해 조합될 수 있고, 상기 방법은,
    입력 신호를 수신하는 단계;
    다운샘플링된 신호를 생성하기 위해 상기 입력 신호를 다운샘플링하는 단계;
    베이스 인코딩된 스트림을 생성하기 위해 베이스 인코더를 사용하여 상기 다운샘플링된 신호의 인코딩을 명령하는 단계;
    재구성된 신호를 생성하기 위해 베이스 디코더를 사용하여 베이스 인코딩된 스트림의 디코딩을 명령하는 단계;
    재구성된 신호를 입력 비디오와 비교하여 잔차 세트를 생성하는 단계; 및
    레벨 인코딩된 스트림을 생성하기 위해 상기 잔차 세트를 인코딩하는 단계를 포함하고, 상기 잔차 세트를 인코딩하는 단계는
    변환된 계수의 세트를 생성하기 위해 상기 잔차 세트에 변환을 적용하는 단계;
    양자화된 계수의 세트를 생성하기 위해 상기 변환된 계수의 세트에 양자화 연산을 적용하는 단계; 및
    상기 양자화된 계수에 인코딩 동작을 적용하는 단계를 포함하는, 방법.
  36. 청구항 35에 있어서, 상기 잔차 세트는 제1 잔차 세트이고, 상기 비교하는 단계는 상기 재구성된 신호를 상기 다운샘플링된 신호와 비교하여 상기 인코딩된 스트림이 제1 레벨 인코딩된 스트림이 되도록 상기 제1 잔차 세트를 생성하는 단계를 포함하고, 상기 방법은
    제1 잔차 세트를 디코딩하여 디코딩된 제1 잔차 세트를 생성하는 단계;
    보정된 재구성된 신호를 생성하기 위해 디코딩된 제1 잔차 세트를 사용하여 재구성된 신호를 보정하는 단계;
    업샘플링된 재구성된 신호를 생성하기 위해 보정된 재구성된 신호를 업샘플링하는 단계;
    제2 잔차 세트를 생성하기 위해 업샘플링된 재구성된 신호를 입력 신호와 비교하는 단계; 및
    제2 레벨 인코딩된 스트림을 생성하도록 상기 상기 제2 잔차 세트를 인코딩하는 단계를 더 포함하고, 상기 제2 잔차 세트를 인코딩하는 단계는,
    제2 계수 세트를 생성하기 위해 제2 잔차 세트에 변환을 적용하는 단계; 양자화된 계수의 제2 세트를 생성하기 위해 제2 계수 세트에 양자화 연산을 적용하는 단계; 및
    인코딩 동작을 상기 양자화된 계수의 제2 세트에 적용하는 단계를 포함하는, 방법.
  37. 청구항 35 또는 36에 있어서, 상기 양자화 연산은 하나 이상의 양자화 파라미터에 따라 수행되는, 방법.
  38. 청구항 37에 있어서, 상기 양자화 파라미터는 각각의 프레임, 각각의 잔차 및 각각의 잔차 그룹 중 적어도 하나에 대해 결정되는, 방법.
  39. 청구항 37 또는 38에 있어서, 상기 양자화된 데이터 세트는 선형 양자화기를 사용하여 스케일링된 변환된 계수의 그룹을 포함하는, 방법.
  40. 청구항 39에 있어서, 상기 선형 양자화기는 비-중심 양자화 오프셋을 사용하는, 방법.
  41. 청구항 40에 있어서, 상기 오프셋은 단계 폭에 기초한 양자화 이전에 양자화된 값에 추가되는, 방법.
  42. 청구항 37 내지 41 중 어느 한 항에 있어서, 상기 양자화 파라미터는 단계 폭 파라미터 값의 세트로 정의된 양자화 행렬인, 방법.
  43. 청구항 42에 있어서, 상기 방법은 하나 이상의 저장된 파라미터 중 적어도 하나의 함수로서 상기 양자화 행렬을 구성하는 단계를 더 포함하는, 방법.
  44. 청구항 35 내지 43 중 어느 한 항에 있어서, x = 0...nTbS-1, y = 0...nTbS-1 및 주어진 양자화 행렬 qm[x][y]에 대한 스케일링된 변환 계수 d[x][y]는 다음 공식에 따라 유도되며,
    d[x][y] = (TransformCoeffQ[x][y] * ((qm[x + (levelIdxSwap * nTbS)][y] + stepWidthModifier[x][y]) + appliedOffset [x][y])
    여기서, TransformCoeffQ는 엔트로피 코딩된 양자화된 변환 계수를 포함하는 크기 (nTbS)x(nTbS)의 어레이이고,
    levelIdx는 개선 서브 계층의 인덱스를 지정하는 변수이고, appliedOffset [x][y] 및 stepWidthModifier [x][y]는 변수인, 방법.
  45. 청구항 44에 있어서, 변수 stepWidthModifier [x][y]는
    dequant_offset_signalled_flag = 0인 경우, stepWidthModifier [x][y] = ((((Floor(-Cconst * Ln (qm[x + (levelIdxSwap * nTbS)][y]))) + Dconst) * (qm[x + (levelIdxSwap * nTbS)][y]2))) / 32768)에 따라 유도되고, 여기서, Cconst 및 Dconst는 상수인, 방법.
  46. 청구항 35 내지 45 중 어느 한 항에 있어서, 상기 양자화 연산은 양자화 행렬을 사용하여 수행되고, 상기 양자화 행렬은 양자화 행렬 모드 파라미터의 획득된 값에 따라 유도되는, 방법.
  47. 청구항 46에 있어서, 상기 양자화 행렬 모드 파라미터는 상기 인코딩 프로세스에서 사용될 상기 양자화 행렬을 지정하는, 방법.
  48. 청구항 46 또는 47에 있어서, 각각의 양자화 행렬은 2개 이상의 인코딩된 스트림 레벨 각각에 대해 사용되는, 방법.
  49. 청구항 48에 있어서, 각각의 양자화 행렬이 각각의 인코딩된 스트림에 대해 사용되며, 여기서, 디폴트 양자화 구성은 미리 결정되고, 상기 디폴트 구성으로부터의 변화가 상기 인코더와 디코더 사이에서 시그널링되는, 방법.
  50. 청구항 49에 있어서, 디폴트 구성 중 적어도 하나를 통해 각각의 인코딩된 스트림에 대해 상이한 각각의 양자화 행렬이 사용되게 하는 단계 및 상기 디폴트 구성을 무효화하기 위해 시그널링을 통해 상기 각각의 인코딩된 스트림에 대해 공통 양자화 행렬이 사용되게 하는 단계를 포함하는, 방법.
  51. 청구항 46 내지 50 중 어느 한 항에 있어서, 상기 양자화 행렬은 복수의 개선 레벨 중 단지 하나에만 사용되는, 방법.
  52. 청구항 46 내지 51 중 어느 한 항에 있어서, 상기 양자화 행렬은 상기 계수가 배열된 블록 내의 상기 계수의 위치에 의해 인덱싱되는, 방법.
  53. 청구항 46 내지 52 중 어느 한 항에 있어서, 베이스 양자화 행렬은 값의 세트로 정의되고, 상기 베이스 양자화 행렬은 하나 이상의 개선 레벨에 대한 단계 폭의 함수인 스케일링 인자에 따라 수정되는, 방법.
  54. 청구항 53에 있어서, 상기 스케일링 인자는 단계 폭 파라미터의 클램핑된 함수로서 계산되는, 방법.
  55. 청구항 53 또는 54에 있어서, 상기 양자화 행렬의 각각의 엔트리는 상기 스케일링 인자의 지수 함수를 사용하여 스케일링되는, 방법.
  56. 청구항 35 내지 55 중 어느 한 항에 있어서, 실제 양자화 파라미터
    Figure pct00057
    는 스케일링 인자
    Figure pct00058
    로 상기 수신된 양자화 단계 폭 파라미터
    Figure pct00059
    를, 다음에 따른 이들 2개의 인자의 함수에 의해
    Figure pct00060

    처리함으로써 계산되는, 방법.
  57. 청구항 56에 있어서, 상기 함수 f(ㆍ)는
    Figure pct00061

    에 따른 승산인, 방법.
  58. 청구항 57에 있어서, 상기 탈양자화 연산은
    Figure pct00062
    로 계산되는 탈양자화된 데이터를 포함하고, 여기서
    Figure pct00063
    는 양자화된 데이터 서브세트이며,
    Figure pct00064
    는 i번째 양자화된 데이터 서브세트에 대한 실제 양자화 단계인, 방법.
  59. 청구항 35 내지 58 중 어느 한 항에 있어서, 실제 양자화 파라미터
    Figure pct00065
    는 단계 폭 수정자
    Figure pct00066
    에 추가로 기초하여 계산되고, 탈양자화 오프셋은
    Figure pct00067

    에 따라 상기 탈양자화 연산을 위해 사용되는, 방법.
  60. 청구항 59에 있어서, f(ㆍ)는
    Figure pct00068

    에 따른 함수이고, 여기서,
    상기 탈양자화 연산은 다음과 같이 계산된 탈양자화된 데이터를 포함하고,
    Figure pct00069

    여기서,
    Figure pct00070
    는 양자화된 데이터 서브세트이고,
    Figure pct00071
    는 i번째 양자화된 데이터 서브세트에 대한 상기 실제 양자화 단계이고, DOi는 상기 특정 i번째 양자화된 데이터 서브세트에 대한 상기 탈양자화 오프셋인, 방법.
  61. 인코딩된 스트림을 재구성된 출력 비디오로 디코딩하기 위한 디코더에 있어서, 상기 디코더는 청구항 1 내지 34 중 어느 한 항의 방법을 수행하도록 구성된, 디코더.
  62. 입력 비디오를 인코딩하기 위한 인코더에 있어서, 상기 인코더는 청구항 35 내지 60 중 어느 한 항의 방법을 수행하도록 구성된, 인코더.
  63. 프로세서에 의해 실행될 때 프로세서로 하여금 청구항 1 내지 60 중 어느 한 항의 방법을 수행하게 하는 명령어가 저장되어 있는 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020227003286A 2019-07-05 2020-07-06 비디오 코딩에서 잔차의 양자화 KR20220036948A (ko)

Applications Claiming Priority (51)

Application Number Priority Date Filing Date Title
GBGB1909701.3A GB201909701D0 (en) 2019-07-05 2019-07-05 Video coding technology
GB1909701.3 2019-07-05
GB1909724.5 2019-07-06
GBGB1909724.5A GB201909724D0 (en) 2019-07-06 2019-07-06 Video coding technology
GBGB1909997.7A GB201909997D0 (en) 2019-07-11 2019-07-11 Encapsulation structure
GB1909997.7 2019-07-11
GBGB1910674.9A GB201910674D0 (en) 2019-07-25 2019-07-25 Video Coding Technology
GB1910674.9 2019-07-25
GB1911467.7 2019-08-09
GBGB1911467.7A GB201911467D0 (en) 2019-08-09 2019-08-09 Video coding technology
GB1911545.0 2019-08-12
GBGB1911545.0A GB201911545D0 (en) 2019-08-12 2019-08-12 Adaptive quantization based on temporal information in tiered hierarchical coding
GB1911546.8 2019-08-13
GBGB1911546.8A GB201911546D0 (en) 2019-08-13 2019-08-13 Video coding technology
GB1914215.7 2019-10-02
GB201914215A GB201914215D0 (en) 2019-10-02 2019-10-02 Video coding technology
GB201914413A GB201914413D0 (en) 2019-10-06 2019-10-06 Dequantization modifiers for precise dequantization in tier-based hierarchical coding
GB1914413.8 2019-10-06
GB1914414.6 2019-10-06
GB201914414A GB201914414D0 (en) 2019-10-06 2019-10-06 Video coding technology
GB201914634A GB201914634D0 (en) 2019-10-10 2019-10-10 Video coding technology
GB1914634.9 2019-10-10
GB201915546A GB201915546D0 (en) 2019-10-25 2019-10-25 Dequantization process
GB1915553.0 2019-10-25
GB1915546.4 2019-10-25
GB201915553A GB201915553D0 (en) 2019-10-25 2019-10-25 Video Coding technology
GB1916090.2 2019-11-05
GBGB1916090.2A GB201916090D0 (en) 2019-11-05 2019-11-05 Video coding technology
GBGB1918099.1A GB201918099D0 (en) 2019-12-10 2019-12-10 Video coding technology
GB1918099.1 2019-12-10
GBGB2000430.5A GB202000430D0 (en) 2020-01-12 2020-01-12 Video Coding technologies
GB2000430.5 2020-01-12
GBGB2000483.4A GB202000483D0 (en) 2020-01-13 2020-01-13 Video coding technology
GB2000483.4 2020-01-13
GBGB2000600.3A GB202000600D0 (en) 2020-01-15 2020-01-15 Video coding technology
GB2000600.3 2020-01-15
GBGB2000668.0A GB202000668D0 (en) 2020-01-16 2020-01-16 Video coding technology
GB2000668.0 2020-01-16
GB2001408.0 2020-01-31
GBGB2001408.0A GB202001408D0 (en) 2020-01-31 2020-01-31 Video coding technology
US202062984261P 2020-03-02 2020-03-02
US62/984,261 2020-03-02
PCT/GB2020/050695 WO2020188273A1 (en) 2019-03-20 2020-03-18 Low complexity enhancement video coding
GBPCT/GB2020/050695 2020-03-18
GBGB2004131.5A GB202004131D0 (en) 2020-03-20 2020-03-20 Quantization and de-quantization
GB2004131.5 2020-03-20
GB2005652.9 2020-04-18
GBGB2005652.9A GB202005652D0 (en) 2020-04-18 2020-04-18 Video coding technology
GBGB2006183.4A GB202006183D0 (en) 2020-04-27 2020-04-27 Video coding technology
GB2006183.4 2020-04-27
PCT/GB2020/051620 WO2021005349A1 (en) 2019-07-05 2020-07-06 Quantization of residuals in video coding

Publications (1)

Publication Number Publication Date
KR20220036948A true KR20220036948A (ko) 2022-03-23

Family

ID=74114118

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227003286A KR20220036948A (ko) 2019-07-05 2020-07-06 비디오 코딩에서 잔차의 양자화

Country Status (5)

Country Link
US (2) US20220360779A1 (ko)
KR (1) KR20220036948A (ko)
CN (3) CN114521327A (ko)
GB (9) GB2619640A (ko)
WO (3) WO2021005347A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024016106A1 (en) * 2022-07-18 2024-01-25 Intel Corporation Low-complexity enhancement video coding using multiple reference frames
CN116527904B (zh) * 2023-07-03 2023-09-12 鹏城实验室 熵编码方法、熵解码方法及相关装置
CN117708764B (zh) * 2024-02-06 2024-05-03 青岛天高智慧科技有限公司 基于校园一卡通的学生消费数据智能分析方法

Family Cites Families (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57105638A (en) * 1980-12-23 1982-07-01 Daikin Ind Ltd Defrostor device
JPH04341085A (ja) * 1991-05-17 1992-11-27 Oki Electric Ind Co Ltd 動画像符号化装置
EP0757490A3 (en) * 1995-08-02 1999-01-13 Matsushita Electric Industrial Co., Ltd. Video coding device and video transmission system using the same, quantization control method and average throughput calculation method used therein
US6522693B1 (en) * 2000-02-23 2003-02-18 International Business Machines Corporation System and method for reencoding segments of buffer constrained video streams
JP2005506815A (ja) * 2001-10-26 2005-03-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 空間拡張可能圧縮のための方法及び装置
EP1442607A1 (en) * 2001-10-26 2004-08-04 Koninklijke Philips Electronics N.V. Spatial scalable compression
US7295609B2 (en) * 2001-11-30 2007-11-13 Sony Corporation Method and apparatus for coding image information, method and apparatus for decoding image information, method and apparatus for coding and decoding image information, and system of coding and transmitting image information
IL164176A0 (en) * 2002-04-23 2005-12-18 Nokia Corp Method and device for indicating quantizer parameters in a video coding system
US7151856B2 (en) * 2002-04-25 2006-12-19 Matsushita Electric Industrial Co., Ltd. Picture coding apparatus and picture coding method
EP1501311A4 (en) * 2002-04-26 2013-04-03 Nec Corp ANIMATED IMAGE TRANSFER SYSTEM, ANIMATED IMAGE ENCODING AND DECODING APPARATUS, AND ANIMATED IMAGE TRANSFER PROGRAM
AU2003280512A1 (en) * 2002-07-01 2004-01-19 E G Technology Inc. Efficient compression and transport of video over a network
US7342682B2 (en) * 2002-12-05 2008-03-11 Canon Kabushiki Kaisha Incremental color transform creation
WO2005057933A1 (en) * 2003-12-08 2005-06-23 Koninklijke Philips Electronics N.V. Spatial scalable compression scheme with a dead zone
US7227894B2 (en) * 2004-02-24 2007-06-05 Industrial Technology Research Institute Method and apparatus for MPEG-4 FGS performance enhancement
US7480417B2 (en) * 2004-10-19 2009-01-20 Microsoft Corp. System and method for encoding mosaiced image data employing a reversible color transform
US20060088105A1 (en) * 2004-10-27 2006-04-27 Bo Shen Method and system for generating multiple transcoded outputs based on a single input
US7797723B2 (en) * 2004-10-30 2010-09-14 Sharp Laboratories Of America, Inc. Packet scheduling for video transmission with sender queue control
US8356327B2 (en) * 2004-10-30 2013-01-15 Sharp Laboratories Of America, Inc. Wireless video transmission system
US7784076B2 (en) * 2004-10-30 2010-08-24 Sharp Laboratories Of America, Inc. Sender-side bandwidth estimation for video transmission with receiver packet buffer
US7792370B2 (en) * 2005-03-18 2010-09-07 Sharp Laboratories Of America, Inc. Residual color transform for 4:2:0 RGB format
US7242409B2 (en) * 2005-04-08 2007-07-10 Microsoft Corporation Interpolated color transform for changing color of an application user interface
US20090225829A2 (en) * 2005-07-06 2009-09-10 Do-Kyoung Kwon Method and apparatus for operational frame-layerrate control in video encoder
US7961783B2 (en) * 2005-07-07 2011-06-14 Mediatek Incorporation Methods and systems for rate control in video encoder
US7583406B2 (en) * 2005-08-23 2009-09-01 Eastman Kodak Company Color transforms for concave device gamuts
US9544602B2 (en) * 2005-12-30 2017-01-10 Sharp Laboratories Of America, Inc. Wireless video transmission system
GB0600141D0 (en) * 2006-01-05 2006-02-15 British Broadcasting Corp Scalable coding of video signals
KR101330630B1 (ko) * 2006-03-13 2013-11-22 삼성전자주식회사 최적인 예측 모드를 적응적으로 적용하여 동영상을부호화하는 방법 및 장치, 동영상을 복호화하는 방법 및장치
WO2007116551A1 (ja) * 2006-03-30 2007-10-18 Kabushiki Kaisha Toshiba 画像符号化装置及び画像符号化方法並びに画像復号化装置及び画像復号化方法
US20070242293A1 (en) * 2006-04-13 2007-10-18 Owens Aaron J Method for creating a color transform relating color reflectances produced under reference and target operating conditions and data structure incorporating the same
JP2008078979A (ja) * 2006-09-21 2008-04-03 Victor Co Of Japan Ltd 動画像階層符号量割当装置、階層符号化装置、階層符号量割当プログラム及び階層符号化プログラム
CN101669367A (zh) * 2007-03-02 2010-03-10 Lg电子株式会社 用于解码/编码视频信号的方法及设备
US8401073B2 (en) * 2007-03-28 2013-03-19 Panasonic Corporation Inverse quantization circuit, inverse quantization method and image reproducing apparatus
WO2008132890A1 (ja) * 2007-04-16 2008-11-06 Kabushiki Kaisha Toshiba 画像符号化と画像復号化の方法及び装置
JP4569840B2 (ja) * 2007-09-12 2010-10-27 ソニー株式会社 画像符号化装置、画像符号化方法
US8077772B2 (en) * 2007-11-09 2011-12-13 Cisco Technology, Inc. Coding background blocks in video coding that includes coding as skipped
US8902996B2 (en) * 2008-02-26 2014-12-02 Richwave Technology Corp. Adaptive wireless video transmission systems and methods
US8711948B2 (en) * 2008-03-21 2014-04-29 Microsoft Corporation Motion-compensated prediction of inter-layer residuals
JP5400876B2 (ja) * 2008-06-16 2014-01-29 ドルビー ラボラトリーズ ライセンシング コーポレイション ビデオ符号化のための、スライス依存性に基づくレート制御モデル適合化
US20090316793A1 (en) * 2008-06-20 2009-12-24 Yang Zhijie Michael Method and system for adaptive deblocking for avs1-p2
WO2012122423A1 (en) * 2011-03-10 2012-09-13 Dolby Laboratories Licensing Corporation Pre-processing for bitdepth and color format scalable video coding
US8085435B2 (en) * 2008-10-24 2011-12-27 Eastman Kodak Company Adaptive color transform to control color inconstancy
CN101939994B (zh) * 2008-12-08 2013-07-17 松下电器产业株式会社 图像解码装置及图像解码方法
WO2011019384A1 (en) * 2009-08-11 2011-02-17 Thomson Licensing Methods and apparatus for generalized weighted prediction
EP2476255B1 (en) * 2009-09-10 2018-06-13 Dolby Laboratories Licensing Corporation Speedup techniques for rate distortion optimized quantization
US20110274162A1 (en) * 2010-05-04 2011-11-10 Minhua Zhou Coding Unit Quantization Parameters in Video Coding
JPWO2011078002A1 (ja) * 2009-12-22 2013-05-02 ソニー株式会社 画像処理装置および方法、並びにプログラム
US8588297B2 (en) * 2009-12-23 2013-11-19 Oracle America, Inc. Quantization parameter prediction
US8576439B2 (en) * 2009-12-31 2013-11-05 Konica Minolta Laboratory U.S.A., Inc. Method for calculating color transform in WCS pipeline
TWI407795B (zh) * 2010-01-22 2013-09-01 Univ Nat Taiwan Science Tech 中央解碼控制器及其控制方法
PL2559166T3 (pl) * 2010-04-13 2018-04-30 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Koder i dekoder dzielący interwał prawdopodobieństwa
EP2574056A4 (en) * 2010-05-19 2016-03-30 Sk Telecom Co Ltd DEVICE AND METHOD FOR IMAGE ENCODING / DECODING
US9235774B2 (en) * 2010-06-10 2016-01-12 Thomson Licensing Methods and apparatus for determining quantization parameter predictors from a plurality of neighboring quantization parameters
JP2011259362A (ja) * 2010-06-11 2011-12-22 Sony Corp 画像処理装置および方法
US8660178B2 (en) * 2010-07-01 2014-02-25 Broadcom Corporation Method and system for multi-layer rate control for a multi-codec system
US9819966B2 (en) * 2010-09-01 2017-11-14 Qualcomm Incorporated Filter description signaling for multi-filter adaptive filtering
US9532059B2 (en) * 2010-10-05 2016-12-27 Google Technology Holdings LLC Method and apparatus for spatial scalability for video coding
WO2012048052A1 (en) * 2010-10-05 2012-04-12 General Instrument Corporation Method and apparatus for feature based video coding
WO2012061258A2 (en) * 2010-11-05 2012-05-10 Vid Scale, Inc. Parametric bit rate model for frame-level rate control in video coding
JP5609591B2 (ja) * 2010-11-30 2014-10-22 富士通株式会社 オーディオ符号化装置、オーディオ符号化方法及びオーディオ符号化用コンピュータプログラム
US9420294B2 (en) * 2011-02-23 2016-08-16 Lg Electronics Inc. Intra-prediction method using filtering, and apparatus using the method
CN104054338B (zh) * 2011-03-10 2019-04-05 杜比实验室特许公司 位深和颜色可伸缩视频编码
CA2826676C (en) * 2011-03-11 2020-12-29 Sony Corporation Image processing apparatus and method
US9854275B2 (en) * 2011-06-25 2017-12-26 Qualcomm Incorporated Quantization in video coding
US8531321B1 (en) 2011-07-21 2013-09-10 Luca Rossato Signal processing and inheritance in a tiered signal quality hierarchy
US9129411B2 (en) 2011-07-21 2015-09-08 Luca Rossato Upsampling in a tiered signal quality hierarchy
US8711943B2 (en) 2011-07-21 2014-04-29 Luca Rossato Signal processing and tiered signal encoding
US8948248B2 (en) 2011-07-21 2015-02-03 Luca Rossato Tiered signal decoding and signal reconstruction
US8977065B2 (en) 2011-07-21 2015-03-10 Luca Rossato Inheritance in a tiered signal quality hierarchy
US10237565B2 (en) * 2011-08-01 2019-03-19 Qualcomm Incorporated Coding parameter sets for various dimensions in video coding
US20130083845A1 (en) * 2011-09-30 2013-04-04 Research In Motion Limited Methods and devices for data compression using a non-uniform reconstruction space
CN104081772B (zh) * 2011-10-06 2018-04-10 弗劳恩霍夫应用研究促进协会 熵编码缓冲器配置
US8170334B2 (en) * 2011-10-13 2012-05-01 University Of Dayton Image processing systems employing image compression and accelerated image decompression
US8170333B2 (en) * 2011-10-13 2012-05-01 University Of Dayton Image processing systems employing image compression
US8170335B2 (en) * 2011-10-13 2012-05-01 University Of Dayton Image processing systems employing image compression and accelerated decompression
SG11201400288VA (en) * 2011-10-17 2014-05-29 Toshiba Kk Encoding device, decoding device, encoding method, and decoding method
US9161046B2 (en) * 2011-10-25 2015-10-13 Qualcomm Incorporated Determining quantization parameters for deblocking filtering for video coding
US9300980B2 (en) 2011-11-10 2016-03-29 Luca Rossato Upsampling and downsampling of motion maps and other auxiliary maps in a tiered signal quality hierarchy
US9510018B2 (en) 2011-11-23 2016-11-29 Luca Rossato Signal analysis and generation of transient information
EP2805504A1 (en) 2012-01-18 2014-11-26 Luca Rossato Distinct encoding and decoding of stable information and transient/stochastic information
DK3300370T3 (da) * 2012-02-29 2019-05-20 Sony Corp Anordning og fremgangsmåde til billedbehandling
US10003802B1 (en) * 2012-04-18 2018-06-19 Matrox Graphics Inc. Motion-based adaptive quantization
US9521410B2 (en) * 2012-04-26 2016-12-13 Qualcomm Incorporated Quantization parameter (QP) coding in video coding
ES2907510T3 (es) * 2012-05-14 2022-04-25 V Nova Int Ltd Descomposición de datos residuales durante la codificación, decodificación y reconstrucción de señales en una jerarquía escalonada
US20130321675A1 (en) * 2012-05-31 2013-12-05 Apple Inc. Raw scaler with chromatic aberration correction
GB2506348B (en) * 2012-09-14 2017-03-08 Canon Kk Method for encoding an image of pixels, corresponding decoding method and device
US20140198845A1 (en) * 2013-01-10 2014-07-17 Florida Atlantic University Video Compression Technique
CN103179394B (zh) * 2013-01-21 2016-02-17 北京航空航天大学 一种基于区域视频质量平稳的i帧码率控制方法
CN105580369B (zh) * 2013-03-11 2019-04-26 杜比实验室特许公司 使用分层编码对多格式高动态范围视频进行编解码的方法、装置及系统
US9716894B2 (en) * 2013-03-25 2017-07-25 Qualcomm Incorporated Intra prediction modes for lossy coding when transform is skipped
EP3468191A1 (en) 2013-04-15 2019-04-10 V-Nova International Ltd Hybrid backward-compatible signal encoding and decoding
US10547834B2 (en) * 2014-01-08 2020-01-28 Qualcomm Incorporated Support of non-HEVC base layer in HEVC multi-layer extensions
JP6373033B2 (ja) * 2014-03-28 2018-08-15 キヤノン株式会社 符号化装置及び符号化方法
US9661329B2 (en) * 2014-04-30 2017-05-23 Intel Corporation Constant quality video coding
EP2980793A1 (en) * 2014-07-28 2016-02-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Encoder, decoder, system and methods for encoding and decoding
CN107409233B (zh) * 2015-03-05 2020-04-14 索尼公司 图像处理装置和图像处理方法
KR20190019925A (ko) * 2016-07-14 2019-02-27 삼성전자주식회사 영상을 부호화/복호화 하는 방법 및 그 장치
GB2553556B (en) 2016-09-08 2022-06-29 V Nova Int Ltd Data processing apparatuses, methods, computer programs and computer-readable media
US10574989B2 (en) * 2016-10-17 2020-02-25 Arris Enterprises Llc Temporal local activity for quantization parameter (QP) offset for video coding
US10582196B2 (en) * 2017-06-30 2020-03-03 Intel Corporation Generating heat maps using dynamic vision sensor events
JP6961443B2 (ja) * 2017-09-29 2021-11-05 キヤノン株式会社 画像処理装置、画像処理方法、及びプログラム

Also Published As

Publication number Publication date
GB2623449A (en) 2024-04-17
GB2600618B (en) 2024-04-24
GB2600618A (en) 2022-05-04
GB2623002A (en) 2024-04-03
US20220272342A1 (en) 2022-08-25
GB2619640A (en) 2023-12-13
WO2021005348A1 (en) 2021-01-14
CN114521327A (zh) 2022-05-20
GB202313816D0 (en) 2023-10-25
CN114424547A (zh) 2022-04-29
GB2623001A (en) 2024-04-03
GB2624121A (en) 2024-05-08
CN114531952A (zh) 2022-05-24
GB202320018D0 (en) 2024-02-07
GB202320016D0 (en) 2024-02-07
GB2600619B (en) 2023-10-11
WO2021005347A1 (en) 2021-01-14
GB202320017D0 (en) 2024-02-07
GB2600619A (en) 2022-05-04
US20220360779A1 (en) 2022-11-10
GB2624122A (en) 2024-05-08
GB202320022D0 (en) 2024-02-07
WO2021005349A1 (en) 2021-01-14
GB2600617A (en) 2022-05-04
GB202320015D0 (en) 2024-02-07

Similar Documents

Publication Publication Date Title
US20220400270A1 (en) Low complexity enhancement video coding
US20220217345A1 (en) Quantization of residuals in video coding
US20220385911A1 (en) Use of embedded signalling for backward-compatible scaling improvements and super-resolution signalling
KR20220036948A (ko) 비디오 코딩에서 잔차의 양자화
US20220182654A1 (en) Exchanging information in hierarchical video coding
US20220329802A1 (en) Quantization of residuals in video coding
KR20230107627A (ko) 후처리 제어를 이용한 비디오 디코딩
GB2623003A (en) Quantization of residuals in video coding
GB2623226A (en) Quantization of residuals in video coding
GB2614054A (en) Digital image processing