[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR102314801B1 - Selective Blending for Entropy Coding in Video Compression - Google Patents

Selective Blending for Entropy Coding in Video Compression Download PDF

Info

Publication number
KR102314801B1
KR102314801B1 KR1020197035900A KR20197035900A KR102314801B1 KR 102314801 B1 KR102314801 B1 KR 102314801B1 KR 1020197035900 A KR1020197035900 A KR 1020197035900A KR 20197035900 A KR20197035900 A KR 20197035900A KR 102314801 B1 KR102314801 B1 KR 102314801B1
Authority
KR
South Korea
Prior art keywords
token
probability
probability distribution
coefficient
tokens
Prior art date
Application number
KR1020197035900A
Other languages
Korean (ko)
Other versions
KR20200003888A (en
Inventor
데이크 히
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20200003888A publication Critical patent/KR20200003888A/en
Application granted granted Critical
Publication of KR102314801B1 publication Critical patent/KR102314801B1/en

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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • 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/117Filters, e.g. for pre-processing or post-processing
    • 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/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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods 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 set of transform coefficients
    • 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

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)
  • Image Analysis (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

변환 계수 토큰들의 알파벳을 사용하여 변환 계수들을 디코딩하기 위한 장치는 메모리 및 프로세서를 포함한다. 제1 콘텍스트에 대응하는 제1 확률 분포가 선택되고, 제2 콘텍스트에 대응하는 제2 확률 분포가 선택된다. 제2 확률 분포가 변환 계수 토큰에 대한 확률을 포함한다고 결정하는 것에 대한 응답으로, 제1 확률 분포 및 제2 확률 분포는 혼합 확률을 생성하기 위해 혼합된다. 변환 계수 토큰은 혼합 확률을 사용하여 엔트로피 디코딩된다. 제1 확률 분포는 알파벳의 모든 토큰들에 대해 정의된다. 제2 확률 분포는 토큰들의 비-자명 분할에 대해 정의된다.An apparatus for decoding transform coefficients using an alphabet of transform coefficient tokens includes a memory and a processor. A first probability distribution corresponding to the first context is selected, and a second probability distribution corresponding to the second context is selected. In response to determining that the second probability distribution includes a probability for the transform coefficient token, the first probability distribution and the second probability distribution are mixed to produce a mixed probability. The transform coefficient tokens are entropy decoded using mixing probabilities. A first probability distribution is defined for all tokens of the alphabet. A second probability distribution is defined for a non-obvious partition of tokens.

Description

비디오 압축에서의 엔트로피 코딩을 위한 선택적 혼합Selective Blending for Entropy Coding in Video Compression

[0002] 디지털 비디오 스트림들은 프레임들 또는 스틸 이미지들의 시퀀스를 사용하여 비디오를 표현할 수 있다. 디지털 비디오는, 예를 들어, 화상 회의, 고화질 비디오 엔터테인먼트, 비디오 광고들, 또는 사용자-생성 비디오들의 공유를 포함하는 다양한 애플리케이션들에 사용될 수 있다. 디지털 비디오 스트림은 많은 양의 데이터를 포함할 수 있고, 비디오 데이터의 프로세싱, 송신, 또는 저장을 위해 컴퓨팅 디바이스의 상당한 양의 컴퓨팅 또는 통신 리소스들을 소비할 수 있다. 압축 및 다른 인코딩 기술들을 포함하여, 비디오 스트림들에서 데이터의 양을 감소시키기 위한 다양한 접근법들이 제안되었다.Digital video streams may represent video using a sequence of frames or still images. Digital video may be used in a variety of applications including, for example, video conferencing, high-definition video entertainment, video advertisements, or sharing of user-generated videos. A digital video stream may contain large amounts of data and may consume a significant amount of computing or communication resources of a computing device for processing, transmission, or storage of the video data. Various approaches have been proposed to reduce the amount of data in video streams, including compression and other encoding techniques.

[0003] 모션 추정 및 보상에 기초한 인코딩은 프레임들 또는 이미지들을 블록들로 분할함으로써 수행될 수 있으며, 블록들은 레퍼런스 프레임들의 하나 이상의 예측 블록들에 기초하여 예측된다. 블록들과 예측 블록들 사이의 차이들(즉, 잔차 에러들)은 압축되고, 비트스트림으로 인코딩된다. 디코더는 차이들 및 레퍼런스 프레임들을 사용하여 프레임들 또는 이미지들을 재구성한다.Encoding based on motion estimation and compensation may be performed by dividing frames or images into blocks, the blocks being predicted based on one or more predictive blocks of reference frames. The differences (ie residual errors) between the blocks and the prediction blocks are compressed and encoded into a bitstream. The decoder reconstructs the frames or images using the differences and reference frames.

[0004] 양상은, 메모리 및 프로세서를 포함하는, 변환 계수 토큰들의 알파벳을 사용하여 변환 계수들을 디코딩하기 위한 장치이다. 프로세서는, 제1 콘텍스트에 대응하는 제1 확률 분포를 선택하고, 제2 콘텍스트에 대응하는 제2 확률 분포를 선택하며, 제2 확률 분포가 변환 계수 토큰에 대한 확률을 포함한다고 결정하는 것에 대한 응답으로, 혼합 확률을 생성하기 위해, 제1 확률 분포와 제2 확률 분포를 혼합하고, 혼합 확률을 사용하여, 인코딩된 비트스트림으로부터 변환 계수 토큰을 엔트로피 디코딩하기 위해, 메모리에 저장된 명령들을 실행하도록 구성된다. 제1 확률 분포는 알파벳의 모든 토큰들에 대해 정의된다. 제2 확률 분포는 토큰들의 비-자명 분할에 대해 정의된다. 비어 있지 않은 세트 X에 대해, 세트 X의 "비-자명 분할"은 세트 {X} 이외의 X의 임의의 분할을 지칭하기 위해 본원에서 사용될 수 있다. 즉, 세트 {X}의 "비-자명 분할"은 세트 {X}의 적절한 서브세트일 수 있다.An aspect is an apparatus for decoding transform coefficients using an alphabet of transform coefficient tokens, comprising a memory and a processor. The processor is responsive to selecting a first probability distribution corresponding to a first context, selecting a second probability distribution corresponding to a second context, and determining that the second probability distribution includes a probability for the transform coefficient token. to execute instructions stored in the memory to mix the first probability distribution and the second probability distribution to generate a mixing probability, and to entropy decode the transform coefficient token from the encoded bitstream using the mixing probability. do. A first probability distribution is defined for all tokens of the alphabet. A second probability distribution is defined for a non-obvious partition of tokens. For a non-empty set X, a “non-obvious partition” of set X may be used herein to refer to any partition of X other than set {X}. That is, a “non-obvious partition” of set {X} may be an appropriate subset of set {X}.

[0005] 다른 양상은 토큰들의 알파벳을 사용하여 변환 계수들을 코딩하기 위한 방법이다. 방법은, 제1 콘텍스트에 대응하고 알파벳의 일부 토큰들에 대해 정의된 제1 확률 분포를 선택하는 단계, 제2 콘텍스트에 대응하고 토큰들의 비-자명 분할에 대해 정의된 제2 확률 분포를 선택하는 단계, 및 제1 확률 분포가 토큰에 대한 확률을 포함하고, 제2 확률 분포가 토큰에 대한 제2 확률을 포함한다고 결정하는 것에 대한 응답으로, 혼합 확률을 생성하기 위해, 제1 확률 분포와 제2 확률 분포를 혼합하는 단계, 및 혼합 확률을 사용하여 토큰을 코딩하는 단계를 포함한다.Another aspect is a method for coding transform coefficients using an alphabet of tokens. The method includes selecting a first probability distribution corresponding to a first context and defined for some tokens of an alphabet, selecting a second probability distribution corresponding to a second context and defined for non-obvious partitioning of tokens and in response to determining that the first probability distribution comprises a probability for the token and the second probability distribution comprises a second probability for the token, to produce a mixed probability, the first probability distribution and the second probability distribution mixing the two probability distributions, and coding the token using the mixing probability.

[0006] 다른 양상은, 메모리 및 프로세서를 포함하는, 계수 토큰 트리로 구성된 토큰들의 알파벳을 사용하여 변환 계수들을 디코딩하기 위한 장치이다. 프로세서는, 제1 콘텍스트에 대응하고 계수 토큰 트리의 내부 노드들에 대해 정의된 제1 확률 분포를 선택하고, 제2 콘텍스트에 대응하고 계수 토큰 트리의 전부가 아닌 일부 내부 노드들에 대하 정의된 제2 확률 분포를 선택하며, 혼합 확률을 사용하여 계수 토큰 트리의 제1 내부 노드에 관련된 제1 판정을 디코딩함으로써 토큰을 디코딩하기 위해, 메모리에 저장된 명령들을 실행하도록 구성된다. 혼합 확률은 제1 확률 분포와 제2 확률 분포를 혼합함으로써 생성된다.Another aspect is an apparatus for decoding transform coefficients using an alphabet of tokens organized into a coefficient token tree, comprising a memory and a processor. The processor is configured to select a first probability distribution corresponding to a first context and defined for internal nodes of the coefficient token tree, and a first probability distribution corresponding to a second context and defined for some but not all internal nodes of the coefficient token tree. select two probability distributions, and execute instructions stored in the memory to decode the token by decoding the first decision related to the first inner node of the coefficient token tree using the mixed probability. The mixed probability is generated by mixing the first probability distribution and the second probability distribution.

[0007] 본 개시내용의 이들 및 다른 양상들은 실시예들의 다음의 상세한 설명, 첨부 청구항들, 및 첨부 도면들에 개시된다.These and other aspects of the present disclosure are set forth in the following detailed description of embodiments, the appended claims, and the appended drawings.

[0008] 본원의 설명은 첨부 도면을 참조하며, 첨부 도면에서, 유사한 참조 번호들은 여러 도면들에 걸쳐 유사한 부분들을 지칭한다.
[0009] 도 1은 비디오 인코딩 및 디코딩 시스템의 개략도이다.
[0010] 도 2는 송신국 또는 수신국을 구현할 수 있는 컴퓨팅 디바이스의 예의 블록도이다.
[0011] 도 3은 인코딩되고 후속하여 디코딩될 비디오 스트림의 다이어그램이다.
[0012] 도 4는 본 개시내용의 구현들에 따른 인코더의 블록도이다.
[0013] 도 5는 본 개시내용의 구현들에 따른 디코더의 블록도이다.
[0014] 도 6은 본 개시내용의 구현들에 따른 양자화된 변환 계수들을 예시하는 다이어그램이다.
[0015] 도 7은 본 개시내용의 구현들에 따른, 코드 블록들을 비디오 비트스트림으로 엔트로피 코딩하는데 사용될 수 있는 계수 토큰 트리의 다이어그램이다.
[0016] 도 8은 본 개시내용의 구현들에 따른, 양자화된 변환 계수를 이진화하기 위한 트리의 예의 다이어그램이다.
[0017] 도 9는 본 개시내용의 구현에 따른, 심벌들의 시퀀스를 인코딩하기 위한 프로세스의 흐름도이다.
[0018] 도 10은 본 개시내용의 구현에 따른, 심벌들의 시퀀스를 디코딩하기 위한 프로세스의 흐름도이다.
[0019] 도 11은 본 개시내용의 구현에 따른, 조건부 확률들의 이진 트리의 예의 다이어그램이다.
[0020] 도 12는 본 개시내용의 구현에 따른, 엔트로피 코딩하기 위한 프로세스의 흐름도이다.
[0021] 도 13은 본 개시내용의 구현에 따른, 변환 계수 토큰들의 알파벳을 사용하여 변환 계수들을 코딩하기 위한 프로세스의 흐름도이다.
[0022] 도 14는 본 개시내용의 구현들에 따른, 콘텍스트를 도출하기 위한 이웃 템플릿들의 다이어그램이다.
[0008] The description herein refers to the accompanying drawings, in which like reference numbers refer to like parts throughout the various drawings.
1 is a schematic diagram of a video encoding and decoding system;
2 is a block diagram of an example of a computing device that may implement a transmitting station or a receiving station;
3 is a diagram of a video stream to be encoded and subsequently decoded;
4 is a block diagram of an encoder in accordance with implementations of the present disclosure;
5 is a block diagram of a decoder in accordance with implementations of the present disclosure;
6 is a diagram illustrating quantized transform coefficients in accordance with implementations of the present disclosure.
7 is a diagram of a coefficient token tree that may be used to entropy code code blocks into a video bitstream, in accordance with implementations of the present disclosure.
8 is a diagram of an example of a tree for binarizing a quantized transform coefficient, in accordance with implementations of the present disclosure.
9 is a flow diagram of a process for encoding a sequence of symbols, according to an implementation of the present disclosure.
10 is a flow diagram of a process for decoding a sequence of symbols, according to an implementation of the present disclosure.
11 is a diagram of an example of a binary tree of conditional probabilities, according to an implementation of the present disclosure.
12 is a flow diagram of a process for entropy coding, according to an implementation of the present disclosure.
13 is a flow diagram of a process for coding transform coefficients using an alphabet of transform coefficient tokens, according to an implementation of the present disclosure.
14 is a diagram of neighbor templates for deriving a context, according to implementations of the present disclosure.

[0023] 위에서 언급된 바와 같이, 비디오 스트림들을 코딩하는 것에 관련된 압축 방식들은, 이미지들을 블록들로 분할하고, 하나 이상의 기술들을 사용하여 디지털 비디오 출력 비트스트림을 생성하여, 출력에 포함된 정보를 제한하는 것을 포함할 수 있다. 수신된 인코딩된 비트스트림은 제한된 정보로부터 블록들 및 소스 이미지들을 재생성하기 위해 디코딩될 수 있다. 비디오 스트림 또는 이의 부분, 이를테면 프레임 또는 블록을 인코딩하는 것은 코딩 효율을 개선하기 위해, 비디오 스트림에서의 시간적 또는 공간적 유사성들을 사용하는 것을 포함할 수 있다. 예를 들어, 비디오 스트림의 현재 블록은 이전에 코딩된 픽셀 값들과 현재 블록 내의 픽셀 값들 사이의 차이(잔차)를 식별하는 것에 기초하여 인코딩될 수 있다. 이러한 방식으로, 잔차, 및 잔차를 생성하는데 사용된 파라미터들만이 인코딩된 비트스트림에 추가될 필요가 있다. 잔차는 손실 양자화 단계를 사용하여 인코딩될 수 있다. As noted above, compression schemes related to coding video streams divide images into blocks and use one or more techniques to generate a digital video output bitstream to limit the information contained in the output. may include doing The received encoded bitstream can be decoded to reconstruct blocks and source images from limited information. Encoding a video stream or a portion thereof, such as a frame or block, may include using temporal or spatial similarities in the video stream to improve coding efficiency. For example, a current block of a video stream may be encoded based on identifying a difference (residual) between previously coded pixel values and pixel values within the current block. In this way, only the residual, and the parameters used to generate the residual, need be added to the encoded bitstream. The residual may be encoded using a lossy quantization step.

[0024] 아래에서 더 설명되는 바와 같이, 잔차 블록은 픽셀 도메인에 있을 수 있다. 잔차 블록은 주파수 도메인으로 변환되어, 변환 계수들의 변환 블록이 생성될 수 있다. 변환 계수들은 양자화되어, 양자화된 변환 계수들의 양자화된 변환 블록이 생성될 수 있다. 양자화된 계수들은 엔트로피 인코딩될 수 있고, 인코딩된 비트스트림에 추가될 수 있다. 디코더는 인코딩된 비트스트림을 수신할 수 있고, 양자화된 변환 계수들을 엔트로피 디코딩하여, 오리지널 비디오 프레임을 재구성할 수 있다. As described further below, the residual block may be in the pixel domain. The residual block may be transformed into the frequency domain to generate a transform block of transform coefficients. The transform coefficients may be quantized to produce a quantized transform block of quantized transform coefficients. The quantized coefficients may be entropy encoded and added to the encoded bitstream. A decoder may receive the encoded bitstream and entropy decode the quantized transform coefficients to reconstruct the original video frame.

[0025] 엔트로피 코딩은 인코딩된 비디오 비트스트림에서 발생하는 값들의 분포를 모델링하는 확률 모델에 의존하는 "무손실” 코딩을 위한 기술이다. 값들의 측정 또는 추정된 분포에 기초한 확률 모델들을 사용함으로써, 엔트로피 코딩은 이론상 최소치에 근접하게 비디오 데이터를 표현하는데 요구되는 비트들의 수를 감소시킬 수 있다. 실제로, 비디오 데이터를 표현하는데 요구되는 비트들의 수의 실제 감소는, 확률 모델의 정확도, 코딩이 수행되는 비트들의 수, 및 코딩을 수행하기 위해 사용되는 고정-소수점 산술의 연산 정확도의 함수일 수 있다. [0025] Entropy coding is a technique for “lossless” coding that relies on a probabilistic model to model the distribution of values occurring in an encoded video bitstream. By using probabilistic models based on a measured or estimated distribution of values, entropy Coding can reduce the number of bits required to represent video data close to a theoretical minimum In practice, the actual reduction in the number of bits required to represent video data depends on the accuracy of the probabilistic model, the bits on which the coding is performed may be a function of the number of s, and the arithmetic precision of the fixed-point arithmetic used to perform the coding.

[0026] 인코딩된 비디오 비트스트림에서, 비트들 중 다수는, 콘텐츠 예측(예를 들어, 인터 모드/모션 벡터 코딩, 인트라 예측 모드 코딩 등) 또는 잔차 코딩(예를 들어, 변환 계수들) 중 하나를 위해 사용된다. 인코더들은 계수 코딩에 소비되는 비트들의 수를 감소시키기 위한 기술들을 사용할 수 있다. 예를 들어, 계수 토큰 트리(이진 토큰 트리로서 또한 지칭됨)는 이 토큰 트리 내의 각각의 브랜치에 대한 순방향-적응적 확률들로 값의 범위를 특정한다. 토큰 기본 값이 코딩될 값으로부터 감산되어, 잔차가 형성된 후에, 블록이 고정된 확률들로 코딩된다. 역방향-적응성을 포함하는 약간의 변형들을 갖는 유사한 방식이 또한 가능하다. 적응적 기술들은, 비디오 스트림이 데이터의 변화하는 특성들에 적응하도록 인코딩되고 있을 때, 확률 모델들을 변경할 수 있다. 어떤 경우든, 디코더는, 비디오 비트스트림을 디코딩하기 위해, 엔트로피-코딩된 비디오 비트스트림을 인코딩하는데 사용된 확률 모델을 통지받는다(또는 이용 가능함).In an encoded video bitstream, many of the bits are either content prediction (eg, inter mode/motion vector coding, intra prediction mode coding, etc.) or residual coding (eg, transform coefficients). is used for Encoders may use techniques to reduce the number of bits consumed for coefficient coding. For example, a coefficient token tree (also referred to as a binary token tree) specifies a range of values with forward-adaptive probabilities for each branch within the token tree. After the token base value is subtracted from the value to be coded and a residual is formed, the block is coded with fixed probabilities. A similar approach is also possible with some modifications including backward-adaptability. Adaptive techniques can change probabilistic models as a video stream is being encoded to adapt to changing characteristics of data. In any case, the decoder is informed (or available) of the probabilistic model used to encode the entropy-coded video bitstream, in order to decode the video bitstream.

[0027] 위에서 설명된 바와 같이, 심벌들의 시퀀스를 엔트로피 코딩하는 것은 전형적으로, 확률 모델을 사용하여 시퀀스에 대한 확률 p를 결정한 후에, 이진 산술 코딩을 사용하여, 인코더에서 시퀀스를 이진 코드워드로 매핑하고, 디코더에서 이진 코드워드로부터 그 시퀀스를 디코딩함으로써 달성된다. 코드워드의 길이(즉, 비트들의 수)는 -log(p)로 주어진다. 엔트로피 코딩의 효율은 확률 모델에 직접 관련될 수 있다. 본 명세서 전체에 걸쳐, log는, 달리 특정되지 않는 한, 밑수가 2인 로그 함수를 나타낸다.As described above, entropy coding a sequence of symbols typically uses a probabilistic model to determine a probability p for the sequence, then uses binary arithmetic coding to map the sequence to a binary codeword at the encoder. and decoding the sequence from the binary codeword at the decoder. The length of the codeword (ie the number of bits) is given by -log(p). The efficiency of entropy coding can be directly related to the probabilistic model. Throughout this specification, log denotes a base 2 logarithmic function, unless otherwise specified.

[0028] 본원에서 사용되는 바와 같이, 모델은 무손실(엔트로피) 코딩일 수 있거나, 또는 무손실(엔트로피) 코딩에서의 파라미터일 수 있다. 모델은 엔트로피 코딩에 대한 확률 추정에 영향을 미치는 임의의 파라미터 또는 방법일 수 있다. 예를 들어, 모델은 토큰 트리 내의 내부 노드에서의 판정을 인코딩 및 디코딩하는데 사용될 확률을 정의할 수 있다(아래에서 도 7에 대하여 설명되는 바와 같음). 이러한 경우에, 현재 프레임에 대한 확률들을 학습하기 위한 2-패스 프로세스는 본원에서 설명되는 바와 같이 다수의 모델들을 혼합함으로써 단일-패스 프로세스로 단순화될 수 있다. 다른 예에서, 모델은 특정 콘텍스트 도출 방법을 정의할 수 있다. 그러한 경우에, 본 개시내용에 따른 구현들은 다수의 이러한 방법들에 의해 생성된 코딩 확률들을 자동적으로 혼합하는데 사용될 수 있다. 또 다른 예에서, 모델은 완전히 새로운 무손실 코딩 알고리즘을 정의할 수 있다. As used herein, a model may be lossless (entropy) coding, or may be a parameter in lossless (entropy) coding. The model can be any parameter or method that affects the probability estimation for entropy coding. For example, a model may define a probability that will be used to encode and decode a decision at an inner node within a token tree (as described with respect to FIG. 7 below). In this case, the two-pass process for learning the probabilities for the current frame can be simplified to a single-pass process by mixing multiple models as described herein. In another example, the model may define a specific context derivation method. In such a case, implementations according to the present disclosure may be used to automatically blend the coding probabilities generated by a number of such methods. In another example, the model may define an entirely new lossless coding algorithm.

[0029] 콘텍스트 모델링의 목적은, 후속 엔트로피 코딩 엔진, 이를테면 산술 코딩, 허프만 코딩, 및 다른 가변-길이-대-가변-길이 코딩 엔진들에 대한 확률 분포들을 획득하는 것이다. 양호한 압축 성능을 달성하기 위해, 다수의 콘텍스트들이 요구될 수 있다. 예를 들어, 일부 비디오 코딩 시스템들은 변환 계수 코딩만을 위한 수백 또는 심지어 수천 개의 콘텍스트들을 포함할 수 있다. 각각의 콘텍스트는 확률 분포에 대응할 수 있다. The purpose of context modeling is to obtain probability distributions for subsequent entropy coding engines, such as arithmetic coding, Huffman coding, and other variable-length-to-variable-length coding engines. To achieve good compression performance, multiple contexts may be required. For example, some video coding systems may include hundreds or even thousands of contexts for transform coefficient coding only. Each context may correspond to a probability distribution.

[0030] 확률 분포는 디코더에 의해 학습될 수 있고, 그리고/또는 디코딩될 프레임의 헤더에 포함될 수 있다. The probability distribution may be learned by a decoder and/or may be included in a header of a frame to be decoded.

[0031] 학습은 디코더의 엔트로피 코딩 엔진이 디코딩된 프레임들에 기초하여 콘텍스트 모델의 확률 분포들(즉, 확률 모델들)에 적응할 수 있다는 것을 의미한다. 예를 들어, 디코더는, 디코더가 추가 프레임들을 디코딩함에 따라 디코더(예를 들어, 디코더의 엔트로피 코딩 엔진)가 지속적으로 업데이트할 수 있는 초기 확률 분포를 이용 가능할 수 있다. 확률 모델들의 업데이트는 초기 확률 분포가 디코딩된 프레임들에서의 실제 분포들을 반영하도록 업데이트되는 것을 보장할 수 있다.Learning means that the decoder's entropy coding engine can adapt to the probability distributions (ie, probability models) of the context model based on the decoded frames. For example, the decoder may use an initial probability distribution that the decoder (eg, the decoder's entropy coding engine) may continuously update as the decoder decodes additional frames. The update of the probabilistic models may ensure that the initial probability distribution is updated to reflect the actual distributions in the decoded frames.

[0032] 헤더에 확률 분포를 포함시키는 것은, 대응하는 콘텍스트가 주어진 경우, 디코더에 다음 프레임을 디코딩하기 위해, 포함된 확률 분포를 사용하도록 명령할 수 있다. 비용(비트 단위)은 헤더에 각각의 확률 분포를 포함시키는 것과 연관된다. 예를 들어, 3000개의 콘텍스트들을 포함하고 8개의 비트들을 사용하여 확률 분포(1 내지 255 사이의 정수 값으로서 코딩됨)를 인코딩하는 코딩 시스템에서, 24,000개의 비트들이 인코딩된 비트스트림에 추가된다. 이들 비트들은 오버헤드 비트들이다. 오버헤드 비트들의 수를 감소시키기 위해, 일부 기술들이 사용될 수 있다. 예를 들어, 콘텍스트들 중 전부는 아니지만 일부에 대한 확률 분포들이 포함될 수 있다. 예를 들어, 오버헤드 비트들을 감소시키기 위해, 예측 방식들이 또한 사용될 수 있다. 이들 오버헤드 감소 기술들을 이용하더라도 오버헤드는 비-제로이다.Including the probability distribution in the header may instruct the decoder to use the included probability distribution to decode the next frame, given the corresponding context. The cost (in bits) is associated with including each probability distribution in the header. For example, in a coding system that contains 3000 contexts and encodes a probability distribution (coded as an integer value between 1 and 255) using 8 bits, 24,000 bits are added to the encoded bitstream. These bits are overhead bits. To reduce the number of overhead bits, some techniques may be used. For example, probability distributions for some but not all of the contexts may be included. For example, to reduce overhead bits, prediction schemes may also be used. Even with these overhead reduction techniques, the overhead is non-zero.

[0033] 콘텍스트 모델링의 주요 설계 과제 또는 문제는 2개의 상충되는 목적들 사이의 균형을 맞추는 것이며, 이는 아래에서 더 설명되고, 즉: 1) 더 많은 콘텍스트들을 추가하여 압축 성능을 개선하는 것, 및 2) 콘텍스트들과 연관된 오버헤드 비용을 감소시키는 것이다. 문제는, 부분적으로, 알파벳 사이즈가 커짐에 따라 콘텍스트와 연관된 오버헤드가 커진다는 사실 때문에, 다중-심벌, 비-이진 알파벳들이 관련된 경우에 특히 관련이 있다. [0033] A major design challenge or problem in context modeling is balancing two conflicting goals, which are further described below: 1) improving compression performance by adding more contexts, and 2) to reduce the overhead cost associated with contexts. The problem is particularly relevant when multi-symbol, non-binary alphabets are involved, in part due to the fact that the overhead associated with the context increases as the alphabet size increases.

[0034] 본 개시내용에 따른 구현들은 선택적 혼합을 사용하고, 그에 따라, 추가되는 콘텍스트들과 연관된 오버헤드를 제한하면서 콘텍스트들이 추가될 수 있다. 콘텍스트는, 예를 들어, 변환 계수들을 인코딩하는데 사용되는 토큰들의 알파벳에 대한 확률 분포를 정의할 수 있다. 선택적 혼합에서, 모든 토큰들에 대해 정의된 제1 확률 분포를 결정하기 위해 제1 콘텍스트 모델이 사용될 수 있고, 더 빈번한 토큰들에 대한 제2 확률 분포를 결정하기 위해 제2 콘텍스트가 사용될 수 있다. 더 빈번한 토큰들의 수는 모든 토큰들의 수보다 더 적다. 계수를 코딩할 시에, 선택적 혼합은 더 빈번한 토큰들에 대해 제1 확률 분포와 제2 확률 분포를 혼합하고, 나머지 토큰들에 대해 제1 확률 분포를 사용한다. Implementations according to the present disclosure use selective mixing, so that contexts can be added while limiting the overhead associated with the contexts being added. The context may, for example, define a probability distribution over the alphabet of tokens used to encode the transform coefficients. In selective mixing, a first context model may be used to determine a defined first probability distribution for all tokens, and a second context may be used to determine a second probability distribution for more frequent tokens. The number of more frequent tokens is less than the number of all tokens. In coding the coefficients, selective mixing mixes the first and second probability distributions for more frequent tokens and uses the first probability distribution for the remaining tokens.

[0035] 본 개시내용에 따른 구현들은 확률 모델들의 선택적 혼합을 사용할 수 있다. 혼합 모델들은 엔트로피 코딩을 사용하여 인코딩된 임의의 값을 인코딩하기 위해 사용될 수 있다. 예를 들어, 양자화된 변환 계수들을 엔트로피 코딩하기 위해, 2개 이상의 확률 모델들이 혼합될 수 있다. 본 개시내용에 따른 구현들의 이점들은 콘텍스트들과 연관된 오버헤드 감소 및 압축 성능 개선을 포함한다. 부가적으로, 선택적 혼합을 사용하여, 코딩 시스템에서의 콘텍스트 모델링은, 알파벳 E에 대한 전체 분포에 영향을 미치는 콘텍스트 정보로부터 일부 콘텍스트들이 도출될 수 있는 한편, 알파벳 E에 대한 분포의 일부에만 영향을 미치는 콘텍스트 정보로부터 다른 콘텍스트들이 도출될 수 있도록 설계될 수 있고, 그에 의해, 선택적 혼합을 사용하지 않는 코딩 시스템들과 비교하여 콘텍스트들과 연관된 오버헤드를 감소시킨다.Implementations according to the present disclosure may use selective mixing of probabilistic models. Mixed models can be used to encode any value encoded using entropy coding. For example, to entropy code the quantized transform coefficients, two or more probabilistic models may be mixed. Advantages of implementations in accordance with the present disclosure include reduced overhead associated with contexts and improved compression performance. Additionally, using selective mixing, context modeling in a coding system allows some contexts to be derived from context information affecting the overall distribution for the letter E, while affecting only a portion of the distribution for the letter E. It can be designed such that other contexts can be derived from the context information that affects it, thereby reducing the overhead associated with contexts as compared to coding systems that do not use selective mixing.

[0036] 비디오 압축에서의 엔트로피 코딩을 위한 혼합은 교시들이 포함될 수 있는 시스템을 참조하여 먼저 본원에서 설명된다. Mixing for entropy coding in video compression is first described herein with reference to a system in which the teachings may be incorporated.

[0037] 도 1은 비디오 인코딩 및 디코딩 시스템(100)의 개략도이다. 송신국(102)은, 예를 들어, 도 2에 설명된 것과 같은 하드웨어의 내부 구성을 갖는 컴퓨터일 수 있다. 그러나, 송신국(102)의 다른 적절한 구현들이 가능하다. 예를 들어, 송신국(102)의 프로세싱은 다수의 디바이스들 사이에 분산될 수 있다.1 is a schematic diagram of a video encoding and decoding system 100 . The transmitting station 102 may be, for example, a computer having an internal configuration of hardware as illustrated in FIG. 2 . However, other suitable implementations of the transmitting station 102 are possible. For example, the processing of the transmitting station 102 may be distributed among multiple devices.

[0038] 네트워크(104)는 비디오 스트림의 인코딩 및 디코딩을 위해 송신국(102)과 수신국(106)을 연결할 수 있다. 구체적으로, 비디오 스트림은 송신국(102)에서 인코딩될 수 있고, 인코딩된 비디오 스트림은 수신국(106)에서 디코딩될 수 있다. 네트워크(104)는 예를 들어 인터넷일 수 있다. 네트워크(104)는 또한, 로컬 영역 네트워크(LAN), 광역 네트워크(WAN), 가상 사설 네트워크(VPN), 셀룰러 전화 네트워크, 또는 비디오 스트림을 송신국(102)으로부터 이 예에서는 수신국(106)으로 전송하는 임의의 다른 수단일 수 있다.The network 104 may couple the transmitting station 102 and the receiving station 106 for encoding and decoding of a video stream. Specifically, a video stream may be encoded at a transmitting station 102 , and the encoded video stream may be decoded at a receiving station 106 . Network 104 may be the Internet, for example. Network 104 may also route a local area network (LAN), wide area network (WAN), virtual private network (VPN), cellular telephone network, or video stream from a transmitting station 102 to a receiving station 106 in this example. It may be any other means of transmitting.

[0039] 일 예에서, 수신국(106)은 도 2에 설명된 것과 같은 하드웨어의 내부 구성을 갖는 컴퓨터일 수 있다. 그러나, 수신국(106)의 다른 적절한 구현들이 가능하다. 예를 들어, 수신국(106)의 프로세싱은 다수의 디바이스들 사이에서 분산될 수 있다.In one example, the receiving station 106 may be a computer having an internal configuration of hardware as described in FIG. 2 . However, other suitable implementations of the receiving station 106 are possible. For example, the processing of the receiving station 106 may be distributed among multiple devices.

[0040] 비디오 인코딩 및 디코딩 시스템(100)의 다른 구현들이 가능하다. 예를 들어, 구현은 네트워크(104)를 생략할 수 있다. 다른 구현에서, 비디오 스트림은 인코딩된 후에, 수신국(106) 또는 메모리를 갖는 임의의 다른 디바이스로 추후에 송신하기 위해 저장될 수 있다. 일 구현에서, 수신국(106)은 인코딩된 비디오 스트림을 (예를 들어, 네트워크(104), 컴퓨터 버스 및/또는 일부 통신 경로를 통해) 수신하고, 추후에 디코딩하기 위해 비디오 스트림을 저장한다. 예시적인 구현에서, 실시간 전송 프로토콜(RTP)은 네트워크(104)를 통한 인코딩된 비디오의 송신을 위해 사용된다. 다른 구현에서, RTP 이외의 전송 프로토콜, 예를 들어 HTTP(Hyper Text Transfer Protocol)-기반 비디오 스트리밍 프로토콜이 사용될 수 있다.Other implementations of the video encoding and decoding system 100 are possible. For example, an implementation may omit the network 104 . In other implementations, after the video stream is encoded, it may be stored for later transmission to the receiving station 106 or any other device having memory. In one implementation, the receiving station 106 receives the encoded video stream (eg, over the network 104, a computer bus, and/or some communication path) and stores the video stream for later decoding. In an example implementation, Real Time Transport Protocol (RTP) is used for transmission of encoded video over network 104 . In other implementations, a transport protocol other than RTP may be used, for example, a Hyper Text Transfer Protocol (HTTP)-based video streaming protocol.

[0041] 화상 회의 시스템에서 사용될 때, 예를 들어, 송신국(102) 및/또는 수신국(106)은 아래에서 설명되는 바와 같이 비디오 스트림을 인코딩 및 디코딩을 모두 하는 능력을 포함할 수 있다. 예를 들어, 수신국(106)은 화상 회의 참가자일 수 있으며, 이는 화상 회의 서버(예를 들어, 송신국(102))로부터 인코딩된 비디오 비트스트림을 수신하여 디코딩 및 뷰잉하고, 추가로, 자신의 비디오 비트스트림을 인코딩하고, 이를 다른 참가자들에 의한 디코딩 및 뷰잉을 위해 화상 회의 서버로 송신한다.[0041] When used in a videoconferencing system, for example, the transmitting station 102 and/or the receiving station 106 may include the ability to both encode and decode a video stream as described below. For example, the receiving station 106 may be a videoconferencing participant, which receives, decodes and views an encoded video bitstream from a videoconferencing server (eg, the transmitting station 102), and furthermore, itself encodes the video bitstream of , and sends it to a video conferencing server for decoding and viewing by other participants.

[0042] 도 2는 송신국 또는 수신국을 구현할 수 있는 컴퓨팅 디바이스(200)의 예의 블록도이다. 예를 들어, 컴퓨팅 디바이스(200)는 도 1의 송신국(102) 및 수신국(106) 중 하나 또는 둘 모두를 구현할 수 있다. 컴퓨팅 디바이스(200)는 다수의 컴퓨팅 디바이스를 포함하는 컴퓨팅 시스템의 형태, 또는 단일 컴퓨팅 디바이스의 형태, 예를 들어, 모바일 폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 노트북 컴퓨터, 데스크톱 컴퓨터 등일 수 있다.2 is a block diagram of an example of a computing device 200 that may implement a transmitting station or a receiving station. For example, computing device 200 may implement one or both of transmitting station 102 and receiving station 106 of FIG. 1 . Computing device 200 may be in the form of a computing system including multiple computing devices, or in the form of a single computing device, eg, a mobile phone, tablet computer, laptop computer, notebook computer, desktop computer, and the like.

[0043] 컴퓨팅 디바이스(200)의 CPU(202)는 중앙 프로세싱 유닛일 수 있다. 대안적으로, CPU(202)는, 현재 존재하거나 이후에 개발되는, 정보를 조작하거나 프로세싱할 수 있는 임의의 다른 타입의 디바이스 또는 다수의 디바이스들일 수 있다. 개시된 구현들이 도시된 바와 같이 단일 프로세서, 예를 들어, CPU(202)로 실시될 수 있지만, 속도 및 효율의 이점들이 하나 초과의 프로세서를 사용하여 달성될 수 있다.The CPU 202 of the computing device 200 may be a central processing unit. Alternatively, the CPU 202 may be any other type of device or multiple devices capable of manipulating or processing information that currently exists or is later developed. Although the disclosed implementations may be implemented with a single processor, eg, CPU 202 as shown, advantages of speed and efficiency may be achieved using more than one processor.

[0044] 컴퓨팅 디바이스(200) 내의 메모리(204)는 구현에서 판독-전용 메모리(ROM) 디바이스 또는 랜덤 액세스 메모리(RAM) 디바이스일 수 있다. 임의의 다른 적절한 타입의 저장 디바이스가 메모리(204)로서 사용될 수 있다. 메모리(204)는 버스(212)를 사용하여 CPU(202)에 의해 액세스되는 코드 및 데이터(206)를 포함할 수 있다. 메모리(204)는 운영 시스템(208) 및 애플리케이션 프로그램들(210)을 더 포함할 수 있으며, 애플리케이션 프로그램들(210)은 CPU(202)로 하여금 본원에서 설명된 방법들을 수행할 수 있게 하는 적어도 하나의 프로그램을 포함한다. 예를 들어, 애플리케이션 프로그램들(210)은 애플리케이션들 1 내지 N을 포함할 수 있으며, 애플리케이션 1 내지 N은 본원에서 설명된 방법들을 수행하는 비디오 코딩 애플리케이션을 더 포함한다. 컴퓨팅 디바이스(200)는 또한, 예를 들어, 모바일인 컴퓨팅 디바이스(200)와 함께 사용되는 메모리 카드일 수 있는 이차 저장소(214)를 포함할 수 있다. 비디오 통신 세션들은 상당한 양의 정보를 포함할 수 있기 때문에, 이들은 이차 저장소(214)에 전체적으로 또는 부분적으로 저장될 수 있고, 프로세싱를 위해 필요에 따라 메모리(204)에 로딩될 수 있다. Memory 204 in computing device 200 may be a read-only memory (ROM) device or a random access memory (RAM) device in an implementation. Any other suitable type of storage device may be used as memory 204 . Memory 204 may contain code and data 206 that is accessed by CPU 202 using bus 212 . The memory 204 may further include an operating system 208 and application programs 210 , the application programs 210 being at least one that enables the CPU 202 to perform the methods described herein. includes the program of For example, application programs 210 may include applications 1 - N, wherein applications 1 - N further include a video coding application that performs the methods described herein. Computing device 200 may also include secondary storage 214 , which may be, for example, a memory card used with computing device 200 that is mobile. Because video communication sessions may contain a significant amount of information, they may be stored in whole or in part in secondary storage 214 and loaded into memory 204 as needed for processing.

[0045] 컴퓨팅 디바이스(200)는 또한, 디스플레이(218)와 같은 하나 이상의 출력 디바이스들을 포함할 수 있다. 디스플레이(218)는, 일 예에서, 터치 입력들을 감지하도록 동작가능한 터치 감지 엘리먼트와 디스플레이를 결합하는 터치 감지 디스플레이일 수 있다. 디스플레이(218)는 버스(212)를 통해 CPU(202)에 커플링될 수 있다. 사용자가 컴퓨팅 디바이스(200)를 프로그래밍하거나 달리 사용할 수 있게 하는 다른 출력 디바이스들이 디스플레이(218)에 추가하여 또는 대안으로서 제공될 수 있다. 출력 디바이스가 디스플레이이거나 디스플레이를 포함하는 경우, 디스플레이는 LCD(liquid crystal display), CRT(cathode-ray tube) 디스플레이, 또는 유기 LED(OLED) 디스플레이와 같은 LED(light emitting diode) 디스플레이를 포함하는 다양한 방식들로 구현될 수 있다.Computing device 200 may also include one or more output devices, such as display 218 . Display 218 may, in one example, be a touch-sensitive display that couples the display with a touch-sensitive element operable to sense touch inputs. Display 218 may be coupled to CPU 202 via bus 212 . Other output devices that allow a user to program or otherwise use computing device 200 may be provided in addition to or as an alternative to display 218 . Where the output device is or includes a display, the display may be displayed in a variety of ways, including a liquid crystal display (LCD), a cathode-ray tube (CRT) display, or a light emitting diode (LED) display, such as an organic LED (OLED) display. can be implemented with

[0046] 컴퓨팅 디바이스(200)는 또한, 이미지-감지 디바이스(220), 예를 들어, 컴퓨팅 디바이스(200)를 동작시키는 사용자의 이미지와 같은 이미지를 감지할 수 있는, 현재 존재하거나 이후에 개발되는, 카메라 또는 임의의 다른 이미지-감지 디바이스(220)를 포함할 수 있거나 또는 이와 통신할 수 있다. 이미지-감지 디바이스(220)는 컴퓨팅 디바이스(200)를 동작시키는 사용자를 향하도록 포지셔닝될 수 있다. 일 예에서, 이미지-감지 디바이스(220)의 포지션 및 광축은, 디스플레이(218)에 바로 인접하고 디스플레이(218)가 보이는 영역을 시야가 포함하도록 구성될 수 있다. Computing device 200 is also capable of sensing an image, such as an image-sensing device 220 , eg, an image of a user operating computing device 200 , either presently present or later developed. , a camera, or any other image-sensing device 220 . The image-sensing device 220 may be positioned to face a user operating the computing device 200 . In one example, the position and optical axis of the image-sensing device 220 may be configured such that the field of view encompasses the area immediately adjacent the display 218 and in which the display 218 is visible.

[0047] 컴퓨팅 디바이스(200)는 또한, 사운드-감지 디바이스(222), 예를 들어, 컴퓨팅 디바이스(200) 근처의 사운드들을 감지할 수 있는, 현재 존재하거나 이후에 개발되는, 마이크로폰 또는 임의의 다른 사운드-감지 디바이스를 포함할 수 있거나 또는 이와 통신할 수 있다. 사운드-감지 디바이스(222)는 컴퓨팅 디바이스(200)를 동작시키는 사용자를 향하도록 포지셔닝될 수 있고, 사용자가 컴퓨팅 디바이스(200)를 동작시키는 동안, 사용자에 의해 이루어지는 사운드들, 예를 들어 스피치 또는 다른 발화들을 수신하도록 구성될 수 있다.Computing device 200 may also be a sound-sensing device 222 , eg, a microphone or any other currently existing or later developed microphone capable of sensing sounds in the vicinity of computing device 200 . It may include or be in communication with a sound-sensing device. The sound-sensing device 222 may be positioned to face a user operating the computing device 200 , and while the user operates the computing device 200 , sounds made by the user, such as speech or other may be configured to receive utterances.

[0048] 도 2는 컴퓨팅 디바이스(200)의 CPU(202) 및 메모리(204)가 단일 유닛으로 통합된 것으로 도시하지만, 다른 구성들이 활용될 수 있다. CPU(202)의 동작들은 직접적으로 또는 로컬 영역 또는 다른 네트워크를 통해 커플링될 수 있는 다수의 머신들(각각의 머신은 프로세서들 중 하나 이상을 가짐)에 걸쳐 분산될 수 있다. 메모리(204)는, 네트워크-기반 메모리, 또는 컴퓨팅 디바이스(200)의 동작을 수행하는 다수의 머신들에서의 메모리와 같이, 다수의 머신들에 걸쳐 분산될 수 있다. 여기서 단일 버스로 도시되어 있지만, 컴퓨팅 디바이스(200)의 버스(212)는 다수의 버스들로 구성될 수 있다. 또한, 이차 저장소(214)는 컴퓨팅 디바이스(200)의 다른 컴포넌트들에 직접적으로 커플링될 수 있거나, 또는 네트워크를 통해 액세스될 수 있고, 메모리 카드와 같은 단일 통합 유닛 또는 다수의 메모리 카드들과 같은 다수의 유닛들을 포함할 수 있다. 따라서, 컴퓨팅 디바이스(200)는 다양한 구성들로 구현될 수 있다.2 shows the CPU 202 and the memory 204 of the computing device 200 as integrated into a single unit, other configurations may be utilized. The operations of the CPU 202 may be distributed across multiple machines, each machine having one or more of the processors, which may be coupled either directly or via a local area or other network. Memory 204 may be distributed across multiple machines, such as network-based memory, or memory in multiple machines performing the operation of computing device 200 . Although shown here as a single bus, bus 212 of computing device 200 may be comprised of multiple buses. In addition, secondary storage 214 may be directly coupled to other components of computing device 200 or may be accessed over a network, such as a single integrated unit, such as a memory card, or multiple memory cards. It may include multiple units. Accordingly, the computing device 200 may be implemented in various configurations.

[0049] 도 3은 인코딩되고 후속하여 디코딩될 비디오 스트림(300)의 예의 다이어그램이다. 비디오 스트림(300)은 비디오 시퀀스(302)를 포함한다. 다음 레벨에서, 비디오 시퀀스(302)는 다수의 인접 프레임(304)을 포함한다. 3개의 프레임들이 인접 프레임들(304)로 도시되어 있지만, 비디오 시퀀스(302)는 임의의 수의 인접 프레임들(304)을 포함할 수 있다. 이어서, 인접 프레임들(304)은 개별 프레임들, 예를 들어 프레임(306)으로 추가로 세분될 수 있다. 다음 레벨에서, 프레임(306)은 일련의 세그먼트들(308) 또는 평면들로 분할될 수 있다. 세그먼트(308)는, 예를 들어, 병렬 프로세싱을 허용하는 프레임들의 서브세트들일 수 있다. 세그먼트들(308)은 또한, 비디오 데이터를 별개의 컬러들로 분리할 수 있는 프레임들의 서브세트들일 수 있다. 예를 들어, 컬러 비디오 데이터의 프레임(306)은 루미넌스 평면 및 2개의 크로미넌스 평면을 포함할 수 있다. 세그먼트들(308)은 상이한 해상도들로 샘플링될 수 있다. 3 is a diagram of an example of a video stream 300 to be encoded and subsequently decoded. The video stream 300 includes a video sequence 302 . At the next level, the video sequence 302 includes a number of contiguous frames 304 . Although three frames are shown as adjacent frames 304 , the video sequence 302 may include any number of adjacent frames 304 . The adjacent frames 304 may then be further subdivided into individual frames, eg, frame 306 . At the next level, the frame 306 may be divided into a series of segments 308 or planes. Segment 308 may be, for example, subsets of frames that allow for parallel processing. Segments 308 may also be subsets of frames that may separate video data into distinct colors. For example, a frame 306 of color video data may include a luminance plane and two chrominance planes. Segments 308 may be sampled at different resolutions.

[0050] 프레임(306)이 세그먼트들(308)로 분할되는지 여부에 관계없이, 프레임(306)은, 예를 들어, 프레임(306) 내의 16x16 픽셀들에 대응하는 데이터를 포함할 수 있는 블록들(310)로 더 세분될 수 있다. 블록들(310)은 또한, 픽셀 데이터의 하나 이상의 세그먼트들(308)로부터의 데이터를 포함하도록 배열될 수 있다. 블록들(310)은 또한, 4x4 픽셀들, 8x8 픽셀들, 16x8 픽셀들, 8x16 픽셀들, 16x16 픽셀들 이상과 같은 임의의 다른 적절한 사이즈일 수 있다. Irrespective of whether the frame 306 is divided into segments 308 , the frame 306 is divided into blocks that may include, for example, data corresponding to 16×16 pixels within the frame 306 . (310) can be further subdivided. Blocks 310 may also be arranged to include data from one or more segments 308 of pixel data. Blocks 310 may also be of any other suitable size, such as 4x4 pixels, 8x8 pixels, 16x8 pixels, 8x16 pixels, 16x16 pixels or more.

[0051] 도 4는 본 개시내용의 구현들에 따른 인코더(400)의 블록도이다. 인코더(400)는, 위에서 설명된 바와 같이, 예를 들어 메모리(204)와 같은 메모리에 저장된 컴퓨터 소프트웨어 프로그램을 제공함으로써 송신국(102)에서 구현될 수 있다. 컴퓨터 소프트웨어 프로그램은, CPU(202)와 같은 프로세서에 의해 실행될 때, 송신국(102)이 본원에서 설명된 방식으로 비디오 데이터를 인코딩하게 하는 머신 명령들을 포함할 수 있다. 인코더(400)는 또한, 예를 들어 송신국(102)에 포함된 특수 하드웨어로서 구현될 수 있다. 인코더(400)는 비디오 스트림(300)을 입력으로서 사용하여 인코딩된 또는 압축된 비트스트림(420)을 생성하기 위해 (실선 연결 라인들로 도시된) 순방향 경로에서 다양한 기능들을 수행하기 위한 다음의 스테이지들: 인트라/인터 예측 스테이지(402), 변환 스테이지(404), 양자화 스테이지(406) 및 엔트로피 인코딩 스테이지(408)를 갖는다. 인코더(400)는 또한, 미래 블록들의 인코딩을 위한 프레임을 재구성하기 위한 재구성 경로(점선 연결 라인들로 도시됨)를 포함할 수 있다. 도 4에서, 인코더(400)는 재구성 경로에서 다양한 기능들을 수행하기 위한 다음의 스테이지들; 역양자화 스테이지(410), 역변환 스테이지(412), 재구성 스테이지(414) 및 루프 필터링 스테이지(416)를 갖는다. 인코더(400)의 다른 구조적 변형들이 비디오 스트림(300)을 인코딩하기 위해 사용될 수 있다.4 is a block diagram of an encoder 400 in accordance with implementations of the present disclosure. The encoder 400 may be implemented at the transmitting station 102 by providing a computer software program stored in a memory such as, for example, the memory 204, as described above. The computer software program may include machine instructions that, when executed by a processor, such as CPU 202 , cause transmitting station 102 to encode video data in the manner described herein. The encoder 400 may also be implemented, for example, as special hardware included in the transmitting station 102 . The encoder 400 uses the video stream 300 as input to generate an encoded or compressed bitstream 420 in the next stage to perform various functions in the forward path (shown by solid connecting lines). Fields: have an intra/inter prediction stage 402 , a transform stage 404 , a quantization stage 406 and an entropy encoding stage 408 . The encoder 400 may also include a reconstruction path (shown by dashed connecting lines) for reconstructing a frame for encoding of future blocks. In FIG. 4 , the encoder 400 performs the following stages for performing various functions in the reconstruction path; It has an inverse quantization stage 410 , an inverse transform stage 412 , a reconstruction stage 414 and a loop filtering stage 416 . Other structural variants of the encoder 400 may be used to encode the video stream 300 .

[0052] 비디오 스트림(300)이 인코딩을 위해 제시될 때, 프레임(306)은 블록들의 단위로 프로세싱될 수 있다. 인트라/인터 예측 스테이지(402)에서, 블록은 인트라-프레임 예측(인트라-예측이라고 또한 지칭됨) 또는 인터-프레임 예측(인터-예측이라고 또한 지칭됨) 또는 이 둘의 조합을 사용하여 인코딩될 수 있다. 어떤 경우에도, 예측 블록이 형성될 수 있다. 인트라-예측의 경우, 예측 블록의 전부 또는 일부는 이전에 인코딩 및 재구성된 현재 프레임 내의 샘플들로부터 형성될 수 있다. 인터-예측의 경우, 예측 블록의 전부 또는 일부는 모션 벡터들을 사용하여 결정된 하나 이상의 이전에 구성된 레퍼런스 프레임들 내의 샘플들로부터 형성될 수 있다. When the video stream 300 is presented for encoding, the frame 306 may be processed in units of blocks. In the intra/inter prediction stage 402, blocks may be encoded using intra-frame prediction (also referred to as intra-prediction) or inter-frame prediction (also referred to as inter-prediction) or a combination of the two. have. In any case, a prediction block can be formed. In the case of intra-prediction, all or part of a predictive block may be formed from samples in a previously encoded and reconstructed current frame. For inter-prediction, all or part of a predictive block may be formed from samples in one or more previously constructed reference frames determined using motion vectors.

[0053] 다음으로, 여전히 도 4를 참조하면, 예측 블록은 인트라/인터 예측 스테이지(402)에서 현재 블록으로부터 감산되어, 잔차 블록(잔차라고 또한 지칭됨)을 생성할 수 있다. 변환 스테이지(404)는, 예를 들어, 블록-기반 변환들을 사용하여 주파수 도메인에서 잔차를 변환 계수들로 변환한다. 이러한 블록-기반 변환은, 예를 들어, DCT(Discrete Cosine Transform) 및 ADST(Asymmetric Discrete Sine Transform)를 포함한다. 다른 블록-기반 변환들이 가능하다. 또한, 상이한 변환들의 조합들이 단일 잔차에 적용될 수 있다. 변환의 적용의 일 예에서, DCT는 잔차 블록을, 변환 계수 값들이 공간 주파수에 기초하는 주파수 도메인으로 변환한다. 가장 낮은 주파수(DC) 계수가 행렬의 좌측 상단에 있고, 가장 높은 주파수 계수가 행렬의 우측 하단에 있다. 예측 블록의 사이즈, 그리고 따라서 결과적인 잔차 블록의 사이즈는 변환 블록의 사이즈와 상이할 수 있다는 점에 주목할 가치가 있다. 예를 들어, 예측 블록은 별개의 변환들이 적용되는 더 작은 블록들로 분할될 수 있다.Next, still referring to FIG. 4 , the predictive block may be subtracted from the current block in an intra/inter prediction stage 402 to produce a residual block (also referred to as a residual). The transform stage 404 transforms the residual into transform coefficients in the frequency domain using, for example, block-based transforms. Such block-based transforms include, for example, Discrete Cosine Transform (DCT) and Asymmetric Discrete Sine Transform (ADST). Other block-based transformations are possible. Also, combinations of different transforms can be applied to a single residual. In one example of application of the transform, the DCT transforms the residual block into the frequency domain in which the transform coefficient values are based on spatial frequency. The lowest frequency (DC) coefficient is at the top left of the matrix, and the highest frequency coefficient is at the bottom right of the matrix. It is worth noting that the size of the prediction block, and thus the size of the resulting residual block, may be different from the size of the transform block. For example, a predictive block may be divided into smaller blocks to which separate transforms are applied.

[0054] 양자화 스테이지(406)는 양자화기 값 또는 양자화 레벨을 사용하여, 변환 계수들을 이산 양자 값들로 변환하며, 이들은 양자화 변환 계수들로서 지칭된다. 예를 들어, 변환 계수들은 양자화기 값으로 제산되어 절단될 수 있다. 이어서, 양자화된 변환 계수들은 엔트로피 인코딩 스테이지(408)에 의해 엔트로피 인코딩된다. 엔트로피 코딩은 토큰 및 이진 트리들을 포함하는 임의의 수의 기술들을 사용하여 수행될 수 있다. 이어서, 엔트로피-인코딩된 계수들은, 예를 들어, 사용된 예측 타입, 변환 타입, 모션 벡터들 및 양자화기 값을 포함할 수 있는, 블록을 디코딩하는데 사용되는 다른 정보와 함께, 압축된 비트스트림(420)으로 출력된다. 블록을 디코딩하기 위한 정보는 압축된 비트스트림(420) 내의 블록, 프레임, 슬라이스 및/또는 섹션 헤더들로 엔트로피 코딩될 수 있다. 압축된 비트스트림(420)은 또한, 인코딩된 비디오 스트림 또는 인코딩된 비디오 비트스트림으로서 지칭될 수 있으며, 이 용어들은 본원에서 교환 가능하게 사용될 것이다. The quantization stage 406 transforms the transform coefficients into discrete quantum values, using a quantizer value or quantization level, which are referred to as quantized transform coefficients. For example, the transform coefficients may be truncated by dividing by the quantizer value. The quantized transform coefficients are then entropy encoded by an entropy encoding stage 408 . Entropy coding can be performed using any number of techniques, including tokens and binary trees. The entropy-encoded coefficients are then stored in a compressed bitstream ( 420) is output. Information for decoding a block may be entropy coded into block, frame, slice and/or section headers within the compressed bitstream 420 . The compressed bitstream 420 may also be referred to as an encoded video stream or an encoded video bitstream, and these terms will be used interchangeably herein.

[0055] 도 4의 재구성 경로(점선 연결선들로 도시됨)는, 인코더(400) 및 디코더(500)(아래에서 설명됨) 둘 모두가 압축된 비트스트림(420)을 디코딩하기 위해 동일한 레퍼런스 프레임들 및 블록들을 사용하는 것을 보장하기 위해 사용될 수 있다. 재구성 경로는, 역양자화 스테이지(410)에서 양자화된 변환 계수들을 역양자화하고, 역변환 스테이지(412)에서 역양자화된 변환 계수들을 역 변환하여, 미분 잔차 블록(미분 잔차라고 또한 지칭됨)을 생성하는 것을 포함하는, 아래에서 더 상세히 논의되는 디코딩 프로세스 동안 발생하는 기능들과 유사한 기능들을 수행한다. 재구성 스테이지(414)에서, 인트라/인터 예측 스테이지(402)에서 예측된 예측 블록이 미분 잔차에 추가되어, 재구성된 블록을 생성할 수 있다. 루프 필터링 스테이지(416)는 블로킹 아티팩트들과 같은 왜곡을 감소시키기 위해 재구성된 블록에 적용될 수 있다.The reconstruction path of FIG. 4 (shown by dashed lines) is the same reference frame for both the encoder 400 and the decoder 500 (described below) to decode the compressed bitstream 420 . can be used to ensure that the fields and blocks are used. The reconstruction path inverse quantizes the quantized transform coefficients in an inverse quantization stage 410 and inverse transforms the inverse quantized transform coefficients in an inverse transform stage 412 to produce a differential residual block (also referred to as a differential residual). functions similar to those occurring during the decoding process discussed in more detail below, including In the reconstruction stage 414 , the prediction block predicted in the intra/inter prediction stage 402 may be added to the differential residual to produce a reconstructed block. A loop filtering stage 416 may be applied to the reconstructed block to reduce distortion such as blocking artifacts.

[0056] 인코더(400)의 다른 변형들은 압축된 비트스트림(420)을 인코딩하기 위해 사용될 수 있다. 예를 들어, 비-변환 기반 인코더(400)는 특정 블록들 또는 프레임들에 대해 변환 스테이지(404) 없이 직접적으로 잔차 신호를 양자화할 수 있다. 다른 구현에서, 인코더(400)는 단일 스테이지로 조합된 양자화 스테이지(406) 및 역양자화 스테이지(410)를 가질 수 있다. Other variants of the encoder 400 may be used to encode the compressed bitstream 420 . For example, the non-transform based encoder 400 can quantize the residual signal directly without the transform stage 404 for certain blocks or frames. In another implementation, the encoder 400 may have a quantization stage 406 and an inverse quantization stage 410 combined into a single stage.

[0057] 도 5는 본 개시내용의 구현들에 따른 디코더(500)의 블록도이다. 디코더(500)는, 예를 들어, 메모리(204)에 저장된 컴퓨터 소프트웨어 프로그램을 제공함으로써, 수신국(106)에서 구현될 수 있다. 컴퓨터 소프트웨어 프로그램은, CPU(202)와 같은 프로세서에 의해 실행될 때, 수신국(106)이 아래의 도 8 및 도 9에서 설명되는 방식으로 비디오 데이터를 디코딩하게 하는 머신 명령들을 포함할 수 있다. 디코더(500)는 또한, 예를 들어, 송신국(102) 또는 수신국(106)에 포함된 하드웨어로 구현될 수 있다. 위에서 논의된 인코더(400)의 재구성 경로와 유사하게, 디코더(500)는, 일 예에서, 압축된 비트스트림(420)으로부터 출력 비디오 스트림(516)을 생성하기 위해 다양한 기능들을 수행하기 위한 다음의 스테이지들: 엔트로피 디코딩 스테이지(502), 역양자화 스테이지(504), 역변환 스테이지(506), 인트라/인터-예측 스테이지(508), 재구성 스테이지(510), 루프 필터링 스테이지(512) 및 디블로킹 필터링 스테이지(514)를 포함한다. 압축된 비트스트림(420)을 디코딩하기 위해, 디코더(500)의 다른 구조적 변형들이 사용될 수 있다.5 is a block diagram of a decoder 500 in accordance with implementations of the present disclosure. The decoder 500 may be implemented at the receiving station 106 by, for example, providing a computer software program stored in the memory 204 . The computer software program, when executed by a processor, such as CPU 202, may include machine instructions that cause receiving station 106 to decode video data in the manner described in FIGS. 8 and 9 below. The decoder 500 may also be implemented in hardware included in, for example, the transmitting station 102 or the receiving station 106 . Similar to the reconstruction path of the encoder 400 discussed above, the decoder 500 is, in one example, the following to perform various functions to generate an output video stream 516 from the compressed bitstream 420 . Stages: entropy decoding stage 502 , inverse quantization stage 504 , inverse transform stage 506 , intra/inter-prediction stage 508 , reconstruction stage 510 , loop filtering stage 512 and deblocking filtering stage (514). Other structural variants of the decoder 500 may be used to decode the compressed bitstream 420 .

[0058] 압축된 비트스트림(420)이 디코딩을 위해 제시될 때, 압축된 비트스트림(420) 내의 데이터 엘리먼트들은 엔트로피 디코딩 스테이지(502)에 의해 디코딩되어, 한 세트의 양자화된 변환 계수들을 생성할 수 있다. 역양자화 스테이지(504)는 양자화된 변환 계수들을 (예를 들어, 양자화된 변환 계수들에 양자화기 값을 승산함으로써) 역양자화하고, 역변환 스테이지(506)는 선택된 변환 타입을 사용하여 역양자화된 변환 계수들을 역 변환하여, 인코더(400) 내의 역변환 스테이지(412)에 의해 생성된 것과 동일할 수 있는 미분 잔차를 생성한다. 압축된 비트스트림(420)으로부터 디코딩된 헤더 정보를 사용하여, 디코더(500)는 인트라/인터-예측 스테이지(508)를 사용하여, 예를 들어, 인트라/인터 예측 스테이지(402)에서 인코더(400)에서 생성된 것과 동일한 예측 블록을 생성할 수 있다. 재구성 스테이지(510)에서, 예측 블록은 미분 잔차에 추가되어, 재구성된 블록을 생성할 수 있다. 루프 필터링 스테이지(512)는 블로킹 아티팩트들을 감소시키기 위해, 재구성된 블록에 적용될 수 있다. 재구성된 블록에 다른 필터링이 적용될 수 있다. 일 예에서, 디블로킹 필터링 스테이지(514)는 블로킹 왜곡을 감소시키기 위해, 재구성된 블록에 적용되고, 결과는 출력 비디오 스트림(516)으로서 출력된다. 출력 비디오 스트림(516)은 또한, 디코딩된 비디오 스트림으로서 지칭될 수 있고, 이 용어들은 본원에서 교환 가능하게 사용될 것이다.When the compressed bitstream 420 is presented for decoding, the data elements in the compressed bitstream 420 are decoded by the entropy decoding stage 502 to produce a set of quantized transform coefficients. can The inverse quantization stage 504 inverse quantizes the quantized transform coefficients (eg, by multiplying the quantized transform coefficients by a quantizer value), and the inverse transform stage 506 inversely quantizes the transform using the selected transform type. Inverse transform the coefficients to produce a differential residual, which may be identical to that produced by inverse transform stage 412 in encoder 400 . Using the header information decoded from the compressed bitstream 420 , the decoder 500 uses an intra/inter-prediction stage 508 , for example, the encoder 400 in an intra/inter prediction stage 402 . ) can generate the same prediction block as generated in . In the reconstruction stage 510 , the prediction block may be added to the differential residual to produce a reconstructed block. A loop filtering stage 512 may be applied to the reconstructed block to reduce blocking artifacts. Other filtering may be applied to the reconstructed block. In one example, a deblocking filtering stage 514 is applied to the reconstructed block to reduce blocking distortion, and the result is output as an output video stream 516 . Output video stream 516 may also be referred to as a decoded video stream, and these terms will be used interchangeably herein.

[0059] 압축된 비트스트림(420)을 디코딩하기 위해 디코더(500)의 다른 변형들이 사용될 수 있다. 예를 들어, 디코더(500)는 디블로킹 필터링 스테이지(514) 없이 출력 비디오 스트림(516)을 생성할 수 있다. 디코더(500)의 일부 구현들에서, 디블로킹 필터링 스테이지(514)는 루프 필터링 스테이지(512) 전에 적용된다. 추가적으로 또는 대안적으로, 인코더(400)는 루프 필터링 스테이지(416) 외에 디블로킹 필터링 스테이지를 포함한다.Other variants of the decoder 500 may be used to decode the compressed bitstream 420 . For example, the decoder 500 can generate the output video stream 516 without the deblocking filtering stage 514 . In some implementations of the decoder 500 , a deblocking filtering stage 514 is applied before the loop filtering stage 512 . Additionally or alternatively, the encoder 400 includes a deblocking filtering stage in addition to the loop filtering stage 416 .

[0060] 도 6은 본 개시내용의 구현들에 따른 양자화된 변환 계수들을 예시하는 다이어그램(600)이다. 다이어그램(600)은 현재 블록(620), 스캔 순서(602), 양자화된 변환 블록(604), 비-제로 맵(606), 블록-끝 맵(622) 및 부호 맵(626)을 도시한다. 현재 블록(620)은 4x4 블록으로서 예시된다. 그러나, 임의의 블록 사이즈가 가능하다. 예를 들어, 현재 블록은 4x4, 8x8, 16x16, 32x32 또는 임의의 다른 정사각형 또는 직사각형 블록 사이즈의 사이즈(즉, 치수들)를 가질 수 있다. 현재 블록(620)은 현재 프레임의 블록일 수 있다. 다른 예에서, 현재 프레임은, 블록들의 집합을 각각 포함하는 세그먼트들(예를 들어, 도 3의 세그먼트들(308), 타일들 등으로 분할될 수 있으며, 여기서 현재 블록은 분할의 블록이다.6 is a diagram 600 illustrating quantized transform coefficients in accordance with implementations of the present disclosure. Diagram 600 shows a current block 620 , a scan order 602 , a quantized transform block 604 , a non-zero map 606 , an end-of-block map 622 , and a sign map 626 . The current block 620 is illustrated as a 4x4 block. However, any block size is possible. For example, the current block may have a size (ie dimensions) of 4x4, 8x8, 16x16, 32x32, or any other square or rectangular block size. The current block 620 may be a block of the current frame. In another example, the current frame may be partitioned into segments (eg, segments 308 of FIG. 3 , tiles, etc.) each comprising a set of blocks, where the current block is a block of partitioning.

[0061] 양자화된 변환 블록(604)은 현재 블록(620)의 사이즈와 유사한 사이즈의 블록일 수 있다. 양자화된 변환 블록(604)은 비-제로 계수들(예를 들어, 계수(608)) 및 제로 계수들(예를 들어, 계수(610))를 포함한다. 위에서 설명된 바와 같이, 양자화된 변환 블록(604)은 현재 블록(620)에 대응하는 잔차 블록에 대한 양자화된 변환 계수들을 포함한다. 또한, 위에서 설명된 바와 같이, 양자화된 변환 계수들은 도 4의 엔트로피 코딩 스테이지(408)와 같은 엔트로피-코딩 페이즈에 의해 엔트로피 코딩된다. The quantized transform block 604 may be a block having a size similar to that of the current block 620 . The quantized transform block 604 includes non-zero coefficients (eg, coefficient 608 ) and zero coefficients (eg, coefficient 610 ). As described above, the quantized transform block 604 includes quantized transform coefficients for the residual block corresponding to the current block 620 . Also, as described above, the quantized transform coefficients are entropy coded by an entropy-coding phase, such as entropy coding stage 408 of FIG. 4 .

[0062] 양자화된 변환 계수를 엔트로피 코딩하는 것은, 도 7에 대하여 아래에서 설명되는 바와 같이, 이진화된 변환 계수의 이진 심벌을 코딩하기 위한 조건부 확률들의 추정치들을 제공하는 콘텍스트 모델(확률 콘텍스트 모델, 확률 모델, 모델 및 콘텍스트로서 또한 지칭됨)의 선택을 수반할 수 있다. 양자화된 변환 계수를 엔트로피 코딩할 때, 추가 정보가 콘텍스트 모델을 선택하기 위한 콘텍스트로서 사용될 수 있다. 예를 들어, 이전에 코딩된 변환 계수들의 크기들은 확률 모델을 결정하기 위해 적어도 부분적으로 사용될 수 있다. Entropy coding a quantized transform coefficient is a context model (probabilistic context model, probability) that provides estimates of conditional probabilities for coding a binary symbol of a binarized transform coefficient, as described below with respect to FIG. Also referred to as models, models and contexts). When entropy coding the quantized transform coefficients, additional information can be used as a context for selecting a context model. For example, magnitudes of previously coded transform coefficients may be used, at least in part, to determine a probabilistic model.

[0063] 변환 블록을 인코딩하기 위해, 비디오 코딩 시스템은 스캔 순서로 변환 블록을 순회하고, 양자화된 변환 계수들이 각각 순회(즉, 방문)될 때, 양자화된 변환 계수들을 인코딩(예를 들어, 엔트로피 인코딩)할 수 있다. 스캔 순서(602)와 같은 지그-재그 스캔 순서에서, 변환 블록의 좌측 상단 코너(DC 계수로서 또한 알려짐)가 먼저 순회 및 인코딩되고, 스캔 순서의 다음 계수(즉, "1"로 표시된 위치에 대응하는 변환 계수)가 순회 및 인코딩되는 등이다. 지그-재그 스캔 순서(즉, 스캔 순서(602))에서, 현재 양자화된 변환 계수(예를 들어, 인코딩될 변환 계수)의 위와 좌측의 일부 양자화된 변환 계수들이 먼저 순회된다. 다른 스캔 순서들이 가능하다. 양자화된 변환 계수들의 1-차원 구조(예를 들어, 어레이)는 스캔 순서를 사용하여 2-차원 양자화된 변환 블록의 순회로부터 기인할 수 있다.[0063] To encode a transform block, a video coding system traverses the transform block in scan order, and as the quantized transform coefficients are each traversed (ie, visited), it encodes (eg, entropy) the quantized transform coefficients. can be encoded). In a zig-zag scan order, such as scan order 602, the upper left corner of the transform block (also known as the DC coefficient) is traversed and encoded first, and the next coefficient in the scan order (i.e., corresponding to the position marked "1") transform coefficients) are traversed and encoded, and so on. In the zig-zag scan order (ie, scan order 602 ), some quantized transform coefficients above and to the left of the current quantized transform coefficient (eg, the transform coefficient to be encoded) are traversed first. Other scan sequences are possible. A one-dimensional structure (eg, an array) of quantized transform coefficients may result from a traversal of a two-dimensional quantized transform block using a scan order.

[0064] 일부 예들에서, 양자화된 변환 블록(604)을 인코딩하는 것은 양자화된 변환 블록(604)의 양자화된 변환 계수들이 제로인 것 및 비-제로인 것을 표시하는 비-제로 맵(606)을 결정하는 것을 포함할 수 있다. 비-제로 계수 및 제로 계수는 비-제로 맵에서 각각 1과 0의 값들로 표시될 수 있다. 예를 들어, 비-제로 맵(606)은 계수(608)에 대응하는 데카르트 위치(0, 0)에서 비-제로(607)를 포함하고, 계수(610)에 대응하는 데카르트 위치(2, 0)에서 제로(608)를 포함한다.In some examples, encoding the quantized transform block 604 determines a non-zero map 606 that indicates that the quantized transform coefficients of the quantized transform block 604 are zero and non-zero. may include The non-zero coefficient and the zero coefficient may be represented by values of 1 and 0, respectively, in the non-zero map. For example, non-zero map 606 contains non-zero 607 at Cartesian positions (0, 0) corresponding to coefficients 608 and Cartesian positions (2, 0) corresponding to coefficients 610 . ) to zero (608).

[0065] 일부 예들에서, 양자화된 변환 블록(604)을 인코딩하는 것은 블록-끝 맵(622)을 생성 및 인코딩하는 것을 포함할 수 있다. 블록-끝 맵은 양자화된 변환 블록(604)의 비-제로 양자화된 변환 계수가 주어진 스캔 순서에 대해 마지막 비-제로 계수인지 여부를 표시한다. 비-제로 계수가 변환 블록에서 마지막 비-제로 계수가 아닌 경우, 이는 블록-끝 맵에서 이진 비트 0으로 표시될 수 있다. 다른 한편으로, 비-제로 계수가 변환 블록에서 마지막 비-제로 계수인 경우, 이는 블록-끝 맵에서 이진 값 1로 표시될 수 있다. 예를 들어, 스캔 위치(11)에 대응하는 양자화된 변환 계수(즉, 마지막 비-제로 양자화된 변환 계수(628))가 양자화된 변환 블록(604)의 마지막 비-제로 계수이므로, 이는 1의 블록-끝 값(624)으로 표시되며; 모든 다른 비-제로 변환 계수들은 제로로 표시된다.In some examples, encoding the quantized transform block 604 may include generating and encoding an end-of-block map 622 . The end-of-block map indicates whether the non-zero quantized transform coefficient of the quantized transform block 604 is the last non-zero coefficient for a given scan order. If the non-zero coefficient is not the last non-zero coefficient in the transform block, it may be indicated as binary bit 0 in the end-of-block map. On the other hand, if the non-zero coefficient is the last non-zero coefficient in the transform block, it may be represented by the binary value 1 in the end-of-block map. For example, since the quantized transform coefficient corresponding to the scan position 11 (ie, the last non-zero quantized transform coefficient 628 ) is the last non-zero coefficient of the quantized transform block 604 , it is equal to 1 indicated by the block-end value 624; All other non-zero transform coefficients are denoted as zeros.

[0066] 일부 예들에서, 양자화된 변환 블록(604)을 인코딩하는 것은 부호 맵(626)을 생성 및 인코딩하는 것을 포함할 수 있다. 부호 맵(626)은 양자화된 변환 블록(604)의 비-제로 양자화된 변환 계수가 양의 값들을 갖고, 어떤 양자화된 변환 계수가 음의 값들을 갖는지를 표시한다. 제로인 변환 계수들은 부호 맵에서 표시될 필요가 없다. 부호 맵(626)은 양자화된 변환 블록(604)에 대한 부호 맵을 예시한다. 부호 맵에서, 음의 양자화된 변환 계수들은 제로로 표시될 수 있고, 양의 양자화된 변환 계수들은 1로 표시될 수 있다. In some examples, encoding the quantized transform block 604 may include generating and encoding a sign map 626 . The sign map 626 indicates which non-zero quantized transform coefficients of the quantized transform block 604 have positive values and which quantized transform coefficients have negative values. Transform coefficients that are zero need not be represented in the sign map. The sign map 626 illustrates the sign map for the quantized transform block 604 . In the sign map, negative quantized transform coefficients may be represented by zeros, and positive quantized transform coefficients may be represented by ones.

[0067] 도 7은 본 개시내용의 구현들에 따른, 블록들을 비디오 비트스트림으로 엔트로피 코딩하는데 사용될 수 있는 계수 토큰 트리(700)의 다이어그램이다. 계수 토큰 트리(700)는, 트리의 각각의 노드에서, 2개의 브랜치들 중 하나가 취해져야만(즉, 순회되어야만) 하기 때문에 이진 트리로서 지칭된다. 계수 토큰 트리(700)는 각각 A 및 B로 표시된 노드들에 대응하는 루트 노드(701) 및 노드(703)를 포함한다. 7 is a diagram of a coefficient token tree 700 that may be used to entropy code blocks into a video bitstream, in accordance with implementations of the present disclosure. Coefficient token tree 700 is referred to as a binary tree because, at each node of the tree, one of two branches must be taken (ie, traversed). The coefficient token tree 700 includes a root node 701 and a node 703 corresponding to nodes denoted A and B, respectively.

[0068] 도 6에 대해 위에서 설명된 바와 같이, 블록에 대해 EOB(End-of-Block) 토큰이 검출될 때, 현재 블록 내의 계수들의 코딩이 종료될 수 있고, 블록 내의 나머지 계수들은 제로로 추론될 수 있다. 이와 같이, EOB 포지션들의 코딩은 비디오 코딩 시스템에서 계수의 필수 부분일 수 있다. As described above with respect to FIG. 6 , when an End-of-Block (EOB) token is detected for a block, coding of the coefficients in the current block may end, and the remaining coefficients in the block are inferred to be zero. can be As such, coding of EOB positions may be an integral part of a coefficient in a video coding system.

[0069] 일부 비디오 코딩 시스템들에서, 현재 토큰이 현재 블록의 EOB 토큰과 동일한지(또는 동일하지 않은지) 여부를 결정하는 이진 판정은 비-제로 계수가 디코딩된 직후 또는 제1 스캔 포지션(DC)에서 코딩된다. 예에서, 사이즈 MxN의 변환 블록(여기서, M은 열들의 수를 나타내고 N은 변환 블록 내의 행들의 수를 나타냄)의 경우, 현재 토큰이 EOB 토큰과 동일한지 여부에 대한 코딩의 최대 횟수는 MxN과 동일하다. M 및 N은 2, 4, 8, 16, 32 및 64와 같은 값들을 취할 수 있다. 아래에서 설명되는 바와 같이, 이진 판정은 계수 토큰 트리(700)에서 루트 노드(701)로부터 노드(703)로 이동하기 위한 판정에 대응하는 "1” 비트의 코딩에 대응한다. 여기서, "비트 코딩"은 인코딩되는 변환 계수를 표현하는 코드워드에서 비트의 출력 또는 생성을 의미할 수 있다. 유사하게, "비트 디코딩"은, 비트가 계수 토큰 트리에서 순회되는 브랜치에 대응하도록, 디코딩되는 양자화된 변환 계수에 대응하는 코드워드의 비트의 (이를테면, 인코딩된 비트스트림으로부터의) 판독을 의미할 수 있다. [0069] In some video coding systems, the binary decision to determine whether the current token is equal to (or not equal to) the EOB token of the current block is immediately after the non-zero coefficient is decoded or the first scan position (DC) is coded in In an example, for a transform block of size MxN, where M represents the number of columns and N represents the number of rows in the transform block, the maximum number of codings for whether the current token is equal to the EOB token is MxN and same. M and N may take values such as 2, 4, 8, 16, 32 and 64. As described below, the binary decision corresponds to the coding of "1" bits corresponding to the decision to move from the root node 701 to the node 703 in the coefficient token tree 700. Here, the "bit coding" " can mean the output or generation of a bit in a codeword representing a transform coefficient to be encoded. Similarly, "bit decoding" is a quantized transform that is decoded such that the bit corresponds to a branch traversed in the coefficient token tree. may mean reading (eg, from an encoded bitstream) bits of a codeword corresponding to a coefficient.

[0070] 계수 토큰 트리(700)를 사용하여, 양자화된 변환 블록(이를테면, 도 6의 양자화된 변환 블록(604))의 양자화된 계수(예를 들어, 도 6의 계수들(608, 610))에 대해 이진 디짓들의 스트링이 생성된다. Using the coefficient token tree 700 , a quantized coefficient (eg, coefficients 608 , 610 of FIG. 6 ) of a quantized transform block (eg, quantized transform block 604 of FIG. 6 ) ), a string of binary digits is generated.

[0071] 예에서, NxN 블록(예를 들어, 양자화된 변환 블록(604)) 내의 양자화된 계수들은 규정된 스캔 순서(예를 들어, 도 6의 스캔 순서(602))를 따라 1D(1-차원) 어레이(여기서, 어레이 u)로 구성된다. N은 4, 8, 16, 32 또는 임의의 다른 값일 수 있다. 1D 어레이의 i번째 포지션에서의 양자화된 계수는 u[i]로 지칭될 수 있으며, 여기서, i = 0,…, N*N-1이다. u[i],…, u[N*N-1]에서의 제로들의 마지막 런의 시작 포지션은 eob로서 표시될 수 있다. u[N*N-1]이 제로가 아닌 경우, eob는 값 N*N으로 세팅될 수 있다. 즉, 1D 어레이 u의 마지막 계수가 제로가 아닌 경우, eob는 값 N*N으로 세팅될 수 있다. 도 6의 예를 사용하여, 1D 어레이 u는 엔트리들 u[] = [-6, 0, -1, 0, 2, 4, 1, 0, 0, 1, 0, -1, 0, 0, 0, 0]을 가질 수 있다. u[i]들 각각에서의 값들은 양자화된 변환 계수이다. 1D 어레이 u의 양자화된 변환 계수들은 또한, 본원에서 간단히 "계수들” 또는 "변환 계수들"로서 지칭될 수 있다. 포지션 i = 0에서의 계수(즉, u[0] = -6)는 DC 계수에 대응한다. 이 예에서, 1D 어레이 u의 포지션 12에서 제로 계수 후에 비-제로 계수들이 없기 때문에, eob는 12와 동일하다. In an example, the quantized coefficients in an NxN block (eg, quantized transform block 604 ) follow a prescribed scan order (eg, scan order 602 in FIG. 6 ) in 1D( 1 - dimension) consists of an array (here, array u). N may be 4, 8, 16, 32 or any other value. The quantized coefficient at the i-th position of the 1D array may be referred to as u[i], where i = 0, ... , N*N-1. u[i],… The starting position of the last run of zeros in , u[N*N-1] may be denoted as eob. If u[N*N-1] is not zero, eob may be set to the value N*N. That is, when the last coefficient of the 1D array u is not zero, eob may be set to the value N*N. Using the example of Figure 6, the 1D array u has entries u[] = [-6, 0, -1, 0, 2, 4, 1, 0, 0, 1, 0, -1, 0, 0, 0, 0]. The values in each of u[i] are quantized transform coefficients. The quantized transform coefficients of the 1D array u may also be referred to herein simply as “coefficients” or “transform coefficients.” The coefficient at position i = 0 (ie, u[0] = -6) is DC Corresponds to the coefficient In this example, eob is equal to 12, since there are no non-zero coefficients after the zero coefficient at position 12 of the 1D array u.

[0072] i = 0 내지 N*N-1에 대해 계수들 u[i],…, u[N*N-1]을 인코딩 및 디코딩하기 위해, 토큰 t[i]가 각각의 포지션 i <= eob에서 생성된다. i < eob에 대한 토큰 t[i]는 u[i]에서 대응하는 양자화된 변환 계수의 사이즈 및/또는 사이즈 범위를 표시할 수 있다. eob에서의 양자화된 변환 계수에 대한 토큰은 EOB_TOKEN일 수 있으며, 이는 1D 어레이 u가 eob 포지션(0 포함) 후에 비-제로 계수들을 포함하지 않음(포괄적)을 표시하는 토큰이다. 즉, t[eob] = EOB_TOKEN은 현재 블록의 EOB 포지션을 표시한다. 아래의 표 1은 본 개시내용의 구현에 따라 EOB_TOKEN을 제외한 토큰 값들 및 이들의 대응하는 명칭들의 예의 리스트를 제공한다. [0072] Coefficients u[i], ... for i = 0 to N*N-1 , u[N*N-1], a token t[i] is generated at each position i <= eob. The token t[i] for i < eob may indicate the size and/or size range of the corresponding quantized transform coefficient in u[i]. The token for the quantized transform coefficient in eob may be EOB_TOKEN, which is a token indicating that the 1D array u contains no non-zero coefficients (inclusive) after the eob position (including 0). That is, t[eob] = EOB_TOKEN indicates the EOB position of the current block. Table 1 below provides an example list of token values excluding EOB_TOKEN and their corresponding names according to implementations of the present disclosure.

Figure 112019125287649-pct00001
Figure 112019125287649-pct00001

[0073] 예에서, 양자화된 계수 값들은 부호가 있는 12-비트 정수들로 취해진다. 양자화된 계수 값을 표현하기 위해, 12-비트 부호 있는 값들의 범위는 11개의 토큰들(표 1의 토큰 0 - 토큰 10) 플러스 블록-끝 토큰(EOB_TOKEN)으로 분할될 수 있다. 양자화된 계수 값을 표현하는 토큰을 생성하기 위해, 계수 토큰 트리(700)가 순회될 수 있다. 이어서, 트리를 순회한 결과(즉, 비트 스트링)는 도 4의 엔트로피 인코딩 스테이지(408)에 대해 설명된 바와 같이 인코더에 의해 비트스트림(이를테면, 도 4의 비트스트림(420))으로 인코딩될 수 있다.In an example, the quantized coefficient values are taken as signed 12-bit integers. To represent the quantized coefficient value, the range of 12-bit signed values can be divided into 11 tokens (Token 0 - Token 10 in Table 1) plus an end-of-block token (EOB_TOKEN). The coefficient token tree 700 may be traversed to generate a token representing the quantized coefficient value. The result of traversing the tree (i.e., bit string) may then be encoded into a bitstream (such as bitstream 420 in FIG. 4) by the encoder as described for entropy encoding stage 408 in FIG. have.

[0074] 계수 토큰 트리(700)는 토큰들 EOB_TOKEN(토큰(702)), ZERO_TOKEN(토큰(704)), ONE_TOKEN(토큰(706)), TWO_TOKEN(토큰(708)), THREE_TOKEN(토큰(710)), FOUR_TOKEN(토큰(712)), CAT1(표 1 내의 DCT_VAL_CAT1인 토큰(714)), CAT2(표 1의 DCT_VAL_CAT2인 토큰(716)), CAT3(표 1의 DCT_VAL_CAT3인 토큰(718)), CAT4(표 1의 DCT_VAL_CAT4인 토큰(720)), CAT5(표 1의 DCT_VAL_CAT5인 토큰(722)), 및 CAT6(표 1의 DCT_VAL_CAT6인 토큰(724))를 포함한다. 보이는 바와 같이, 계수 토큰 트리 맵들은 단일 양자화된 계수 값을 토큰들(704, 706, 708, 710 및 712) 중 하나와 같은 단일 토큰으로 매핑한다. 토큰들(714, 716, 718, 720, 722 및 724)과 같은 다른 토큰들은 양자화된 계수 값들의 범위들을 표현한다. 예를 들어, 37의 값을 갖는 양자화된 변환 계수는 토큰 DCT_VAL_CAT5(도 7의 토큰(722))에 의해 표현될 수 있다. Count token tree 700 includes tokens EOB_TOKEN (token 702), ZERO_TOKEN (token 704), ONE_TOKEN (token 706), TWO_TOKEN (token 708), THREE_TOKEN (token 710) ), FOUR_TOKEN (token (712)), CAT1 (token (714) that is DCT_VAL_CAT1 in Table 1), CAT2 (token that is DCT_VAL_CAT2 in Table 1 (716)), CAT3 (token (718) that is DCT_VAL_CAT3 in Table 1), CAT4 (token 720 that is DCT_VAL_CAT4 in Table 1), CAT5 (token 722 that is DCT_VAL_CAT5 in Table 1), and CAT6 (token 724 that is DCT_VAL_CAT6 in Table 1). As can be seen, the coefficient token tree maps map a single quantized coefficient value to a single token, such as one of tokens 704 , 706 , 708 , 710 and 712 . Other tokens, such as tokens 714, 716, 718, 720, 722 and 724, represent ranges of quantized coefficient values. For example, a quantized transform coefficient having a value of 37 may be represented by a token DCT_VAL_CAT5 (token 722 in FIG. 7 ).

[0075] 토큰의 기본 값은 이의 범위에서 가장 작은 수로 정의된다. 예를 들어, 토큰(720)의 기본 값은 19이다. 엔트로피 코딩은 각각의 양자화된 계수에 대한 토큰을 식별하고, 토큰이 범위를 표현하는 경우, 양자화된 계수로부터 기본 값을 감산함으로써 잔차를 형성할 수 있다. 예를 들어, 디코더가 오리지널 양자화된 변환 계수를 재구성할 수 있게 하기 위해, 인코딩된 비디오 비트스트림에 토큰(720) 및 1(즉, 20 마이너스 19)의 잔차 값을 포함함으로써, 20의 값을 갖는 양자화된 변환 계수가 표현될 수 있다. 블록 토큰의 끝(즉, 토큰(702))은 더 이상 비-제로 양자화된 계수가 변환된 블록 데이터에 남아 있지 않다고 시그널링한다.The default value of a token is defined as the smallest number in its range. For example, the default value of token 720 is 19. Entropy coding can form a residual by identifying a token for each quantized coefficient and subtracting a base value from the quantized coefficient if the token represents a range. For example, to enable the decoder to reconstruct the original quantized transform coefficients, by including the token 720 and the residual value of 1 (ie 20 minus 19) in the encoded video bitstream, the value of 20 A quantized transform coefficient may be represented. The end of the block token (ie, token 702 ) signals that no more non-zero quantized coefficients remain in the transformed block data.

[0076] 계수 코딩을 위한 토큰 값들의 다른 예에서, 표 1은 2개로 분할되며, 여기서, 제1(헤드) 세트는 ZERO_TOKEN, ONE_NOEOB, ONE_EOB, TWO_NOEOB, 및 TWO_EOB를 포함하고, 제2(테일) 세트는 TWO_TOKEN, THREE_TOKEN, FOUR_TOKEN, DCT_VAL_CAT1, DCT_VAL_CAT2, DCT_VAL_CAT3, DCT_VAL_CAT4, DCT_VAL_CAT5 및 DCT_VAL_CAT6를 포함한다. 제2(테일) 세트는 제1(헤드) 세트 내의 TWO_EOB 또는 TWO_NOEOB가 인코딩 또는 디코딩된 경우에만 사용된다. 토큰들 ONE_NOEOB 및 TWO_NOEOB는, 계수 토큰 트리(700)의 순회가 노드(703)에서 시작될 때(즉, checkEob = 0일 때), ONE_TOKEN 및 TWO_TOKEN에 각각 대응한다. 토큰 ONE_EOB 및 TWO_EOB는 각각, ONE_TOKEN 및 TWO_TOKEN(즉, 루트 노드(701)에서 시작하는 계수 토큰 트리(700)의 순회)일 수 있거나 또는 이에 대응할 수 있다. 계수 토큰 트리(700)의 트리 순회 및 checkEob는 아래에서 더 설명된다.[0076] In another example of token values for coefficient coding, Table 1 is split into two, where the first (head) set includes ZERO_TOKEN, ONE_NOEOB, ONE_EOB, TWO_NOEOB, and TWO_EOB, and the second (tail) The set includes TWO_TOKEN, THREE_TOKEN, FOUR_TOKEN, DCT_VAL_CAT1, DCT_VAL_CAT2, DCT_VAL_CAT3, DCT_VAL_CAT4, DCT_VAL_CAT5 and DCT_VAL_CAT6. The second (tail) set is used only when TWO_EOB or TWO_NOEOB in the first (head) set is encoded or decoded. Tokens ONE_NOEOB and TWO_NOEOB correspond to ONE_TOKEN and TWO_TOKEN, respectively, when traversal of coefficient token tree 700 begins at node 703 (ie, when checkEob = 0). The tokens ONE_EOB and TWO_EOB may be or correspond to, respectively, ONE_TOKEN and TWO_TOKEN (ie, a traversal of the coefficient token tree 700 starting at the root node 701 ). Tree traversal and checkEob of coefficient token tree 700 are described further below.

[0077] 이진 산술 코딩 엔진을 사용함으로써(이를테면, 도 4의 엔트로피 인코딩 스테이지(408)에 의해) 토큰 t[i]를 인코딩 또는 디코딩하기 위해, 계수 토큰 트리(700)가 사용될 수 있다. 계수 토큰 트리(700)는 루트 노드(701)(즉, A로 표시된 노드)에서 시작하여 순회된다. 계수 토큰 트리를 순회하는 것은, 예를 들어, 이진 산술 코딩을 사용하여 비트스트림으로 인코딩될 비트 스트링(코드워드)을 생성한다. 비트 스트링은 현재 계수(즉, 인코딩되는 양자화된 변환 계수)의 표현이다. Coefficient token tree 700 may be used to encode or decode token t[i] by using a binary arithmetic coding engine (eg, by entropy encoding stage 408 of FIG. 4 ). The coefficient token tree 700 is traversed starting at the root node 701 (ie, the node marked A). Traversing the coefficient token tree generates a bit string (codeword) to be encoded into a bitstream using, for example, binary arithmetic coding. The bit string is a representation of the current coefficient (ie, the quantized transform coefficient being encoded).

[0078] 현재 계수가 제로이고 나머지 변환 계수들에 대해 비-제로 값들이 더 이상 존재하지 않는 경우, 토큰(702)(즉, EOB_TOKEN)이 비트스트림에 추가된다. 이는, 예를 들어, 도 6의 스캔 순서 위치 12에서의 변환 계수에 대한 경우이다. 다른 한편으로, 현재 계수가 비-제로이거나, 또는 현재 블록의 임의의 나머지 계수들 중에서 비-제로 값이 있는 경우, "1" 비트가 코드워드에 추가되고, 순회는 노드(703)(즉, B로 표시된 노드)로 넘어간다. 노드 B에서, 현재 계수는 제로와 동일한지 확인하기 위해 테스트된다. 그렇다면, 좌측 브랜치가 취해지고, 그에 따라, 값 ZERO_TOKEN을 표현하는 토큰(704) 및 비트 "0"이 코드워드에 추가된다. 그렇지 않으면, 비트 "1"이 코드워드에 추가되고, 순회는 노드 C로 넘어간다. 노드 C에서, 현재 계수가 1보다 더 큰지 확인하기 위해 테스트된다. 현재 계수가 1과 동일한 경우, 좌측 브랜치가 취해지고, 값 ONE_TOKEN을 표현하는 토큰(706)이 비트스트림에 추가된다(즉, "0” 비트가 코드워드에 추가됨). 현재 계수가 1보다 더 큰 경우, 순회가 노드 D로 넘어가서, 값 4와 비교하여 현재 계수의 값을 체크한다. 현재 계수가 4 이하인 경우, 순회가 노드 E로 넘어가고, "0" 비트가 코드워드에 추가된다. 노드 E에서, 값 "2"와의 동일성에 대한 테스트가 이루어질 수 있다. 참인 경우, 값 "2"를 표현하는 토큰(706)이 비트스트림에 추가된다(즉, 비트 "0"이 코드워드에 추가됨). 그렇지 않다면, 노드 F에서, 현재 계수는 값 "3” 또는 값 "4”, 및 토큰(710)(즉, "0"이 코드워드에 추가됨) 또는 토큰(712)(즉, 비트 "1"이 코드워드에 추가됨)에 대하여 적절하게 비트스트림에 대해 테스트되는 등이다. [0078] If the current coefficient is zero and there are no more non-zero values for the remaining transform coefficients, the token 702 (ie, EOB_TOKEN) is added to the bitstream. This is the case, for example, for the transform coefficients at scan order position 12 in FIG. 6 . On the other hand, if the current coefficient is non-zero, or if there is a non-zero value among any remaining coefficients of the current block, a "1" bit is added to the codeword, and the traversal is performed at node 703 (i.e., node marked B). At Node B, the current coefficient is tested to see if it is equal to zero. If so, the left branch is taken and, accordingly, a token 704 representing the value ZERO_TOKEN and bit “0” is added to the codeword. Otherwise, a bit "1" is added to the codeword, and the traversal passes to node C. At node C, the current coefficient is tested to see if it is greater than 1. If the current coefficient is equal to 1, the left branch is taken and a token 706 representing the value ONE_TOKEN is added to the bitstream (ie, a “0” bit is added to the codeword). , the traversal goes to node D and checks the value of the current coefficient against the value 4. If the current coefficient is less than or equal to 4, the traversal goes to node E and a "0" bit is added to the codeword. At E, a test may be made for equality with the value “2.” If true, a token 706 representing the value “2” is added to the bitstream (ie, bit “0” is added to the codeword). Otherwise, at node F, the current coefficient is the value “3” or the value “4”, and the token 710 (ie, “0” is added to the codeword) or token 712 (ie bit “1”). added to this codeword) as appropriate against the bitstream, and so on.

[0079] 본질적으로, 좌측 자식 노드로의 순회 시에 "0” 비트가 코드워드에 추가되고, 우측 자식 노드로의 순회 시에 "1” 비트가 코드워드에 추가된다. 압축된 비트스트림으로부터 코드워드를 디코딩할 때 디코더에 의해 유사한 프로세스가 수행된다. 디코더는 비트스트림으로부터 비트를 판독한다. 비트가 "1"인 경우, 계수 토큰 트리가 우측으로 순회되고, 비트가 "0"인 경우, 트리가 좌측으로 순회된다. 이어서, 디코더는 다음 비트를 판독하고, 트리의 순회가 리프 노드(즉, 토큰)에 도달할 때까지 프로세스를 반복한다. 예로서, 루트 노드(즉, 루트 노드(701))로부터 시작하여 토큰 t[i] = THREE_TOKEN을 인코딩하기 위해, 이진 스트링 111010이 인코딩된다. 다른 예로서, 코드워드 11100을 디코딩하는 것은 토큰 TWO_TOKEN을 야기한다. In essence, a “0” bit is added to the codeword upon traversal to the left child node, and a “1” bit is added to the codeword upon traversal to the right child node. A similar process is performed by the decoder when decoding a codeword from a compressed bitstream. The decoder reads the bits from the bitstream. When the bit is "1", the coefficient token tree is traversed to the right, and when the bit is "0", the tree is traversed to the left. The decoder then reads the next bit and repeats the process until a traversal of the tree reaches a leaf node (ie token). As an example, to encode the token t[i] = THREE_TOKEN starting from the root node (ie, root node 701 ), the binary string 111010 is encoded. As another example, decoding codeword 11100 results in the token TWO_TOKEN.

[0080] 좌측 및 우측 자식 노드들에 대한 "0” 및 "1” 비트들 사이의 대응은 단지 인코딩 및 디코딩 프로세스들을 설명하는데 사용되는 규칙일 뿐임을 주의한다. 일부 구현들에서, 예를 들어, "1"이 좌측 자식 노드에 대응하고, "0"이 우측 자식 노드에 대응하는 것과 같은 상이한 규칙이 사용될 수 있다. 인코더와 디코더 둘 모두가 동일한 규칙을 채택하는 한, 여기에서 설명된 프로세스들이 적용된다.Note that the correspondence between the “0” and “1” bits for the left and right child nodes is merely a rule used to describe the encoding and decoding processes. In some implementations, a different rule may be used, for example, "1" corresponds to a left child node, and "0" corresponds to a right child node. As long as both the encoder and decoder adopt the same rules, the processes described herein apply.

[0081] EOB_TOKEN이 비-제로 계수 후에만 가능하기 때문에, u[i-1]이 제로일 때(즉, 1D 어레이 u의 위치 i-1에서의 양자화된 변환 계수가 제로와 동일할 때), 디코더는 제1 비트가 1이어야만 함을 추론할 수 있다. 트리를 순회할 시에, 제로 변환 계수(예를 들어, 도 6의 지그-재그 스캔 순서 위치 1에서의 변환 계수) 후의 변환 계수(예를 들어, 도 6의 지그-재그 스캔 순서 위치 2에서의 변환 계수)에 대해, 순회가 루트 노드(701)로부터 노드(703)로 이동할 필요가 있기 때문에, 제1 비트는 1이어야 한다. [0081] Since EOB_TOKEN is possible only after non-zero coefficients, when u[i-1] is zero (ie, when the quantized transform coefficient at position i-1 of 1D array u is equal to zero), The decoder can infer that the first bit must be 1. When traversing the tree, zero transform coefficients (eg, the transform coefficients at zig-zag scan order position 1 in FIG. 6) followed by transform coefficients (eg, at zig-zag scan order position 2 in FIG. 6) transform coefficient), the first bit should be 1, since the traversal needs to move from the root node 701 to the node 703.

[0082] 따라서, 이진 플래그 checkEob는 인코더 및 디코더에 계수 토큰 트리(700)에서 루트 노드로부터 이어지는 제1 비트의 인코딩 및 디코딩을 스킵하도록 명령하기 위해 사용될 수 있다. 사실상, 이진 플래그 checkEob가 0일 때(즉, 루트 노드가 체크되지 않아야 함을 표시함), 계수 토큰 트리(700)의 루트 노드(701)는 스킵되고, 노드(703)는 순회를 위해 방문될 계수 토큰 트리(700)의 제1 노드가 된다. 즉, 루트 노드(701)가 스킵될 때, 인코더는 인코딩을 스킵할 수 있고, 디코더는 디코딩을 스킵할 수 있고, 인코딩된 스트링의 제1 비트(즉, 이진 비트 "1")를 추론할 수 있다. Accordingly, the binary flag checkEob may be used to instruct the encoder and decoder to skip encoding and decoding of the first bit following from the root node in the coefficient token tree 700 . In effect, when the binary flag checkEob is zero (ie, indicating that the root node should not be checked), the root node 701 of the coefficient token tree 700 is skipped and node 703 is to be visited for traversal. It becomes the first node of the coefficient token tree 700 . That is, when the root node 701 is skipped, the encoder may skip encoding, the decoder may skip decoding, and infer the first bit (ie, binary bit “1”) of the encoded string. have.

[0083] 블록을 인코딩 또는 디코딩하기 시작할 때, 이진 플래그 checkEob는 1로 초기화될 수 있다(즉, 루트 노드가 체크되어야 함을 표시함). 다음 단계들은 NxN 블록에서 양자화된 변환 계수들을 디코딩하기 위한 예시적인 프로세스를 예시한다. [0083] When starting to encode or decode a block, the binary flag checkEob may be initialized to 1 (ie, indicating that the root node should be checked). The following steps illustrate an example process for decoding quantized transform coefficients in an NxN block.

[0084] 단계 1에서, 이진 플래그 checkEob는 제로로 세팅되고(즉, checkEob = 0), 인덱스 i도 또한 제로로 세팅된다(즉, i = 0). [0084] In step 1, the binary flag checkEob is set to zero (ie, checkEob = 0), and the index i is also set to zero (ie, i = 0).

[0085] 단계 2에서, (1) 이진 플래그 checkEob가 1과 동일한 경우 전체 계수 토큰 트리(즉, 계수 토큰 트리(700)의 루트 노드(701)에서 시작)를 사용하거나; 또는 (2) checkEob가 0과 동일한 경우 EOB_TOKEN이 스킵되는 부분 트리(예를 들어, 노드(703)에서 시작)를 사용함으로써, 토큰 t[i]가 디코딩된다.[0085] In step 2, (1) use the entire coefficient token tree (ie, starting at the root node 701 of the coefficient token tree 700) if the binary flag checkEob is equal to 1; or (2) the token t[i] is decoded by using a partial tree (eg, starting at node 703 ) where EOB_TOKEN is skipped if checkEob is equal to 0.

[0086] 단계 3에서, 토큰 t[i] = EOB_TOKEN인 경우, 양자화된 변환 계수들 u[i],…, u[N*N-1]은 모두 제로가 되고, 디코딩 프로세스는 종료되며; 그렇지 않으면, 필요한 경우(즉, t[i]가 ZERO_TOKEN과 동일하지 않은 경우) 추가 비트들이 디코딩될 수 있고, u[i]를 재구성할 수 있다. [0086] In step 3, if token t[i] = EOB_TOKEN, the quantized transform coefficients u[i], . . . , u[N*N-1] are all zeros, and the decoding process is terminated; Otherwise, if necessary (ie, t[i] is not equal to ZERO_TOKEN), additional bits may be decoded and u[i] may be reconstructed.

[0087] 단계 4에서, u[i]가 제로와 동일한 경우, 이진 플래그 checkEob가 1로 세팅되고, 그렇지 않으면 checkEob가 0으로 세팅된다. 즉, checkEob는 값(u[i]! = 0)으로 세팅될 수 있다. [0087] In step 4, if u[i] is equal to zero, the binary flag checkEob is set to 1, otherwise checkEob is set to 0. That is, checkEob may be set to a value (u[i]! = 0).

[0088] 단계 5에서, 인덱스 i가 증분된다(즉, i = i + 1). In step 5, the index i is incremented (ie, i = i + 1).

[0089] 단계 6에서, 단계 2 - 단계 5는, 모든 양자화된 변환 계수들이 디코딩될 때까지(즉, 인덱스 i = N*N일 때까지) 또는 EOB_TOKEN이 디코딩될 때까지 반복된다.[0089] In step 6, steps 2 - 5 are repeated until all quantized transform coefficients are decoded (ie, index i = N*N) or until EOB_TOKEN is decoded.

[0090] 위의 단계 2에서, 토큰 t[i]를 디코딩하는 것은, 콘텍스트 ctx를 결정하는 단계, 콘텍스트 ctx로부터 이진 확률 분포(즉, 모델)를 결정하는 단계, 및 결정된 확률 분포들을 사용함으로써 계수 토큰 트리(700)의 루트 노드로부터 리프 노드까지의 경로를 디코딩하기 위해 불 산술 코드를 사용하는 단계를 포함할 수 있다. 콘텍스트 ctx는 콘텍스트 도출의 방법을 사용하여 결정될 수 있다. 콘텍스트 도출의 방법은 콘텍스트 ctx를 결정하기 위해, 블록 사이즈, 평면 타입(즉, 루미넌스 또는 크로미넌스), 포지션 i 및 이전에 디코딩된 토큰들 t[0],…, t[i-1] 중 하나 이상을 사용할 수 있다. 콘텍스트 ctx를 결정하기 위해 다른 기준들이 사용될 수 있다. 이진 확률 분포는 checkEOB = 1일 때 루트 노드(701)로부터 시작하거나 또는 checkEOB = 0일 때 노드(703)로부터 시작하는 계수 토큰 트리(700)의 임의의 내부 노드에 대해 결정될 수 있다.[0090] In step 2 above, decoding the token t[i] comprises determining the context ctx, determining a binary probability distribution (ie, model) from the context ctx, and using the determined probability distributions to coefficient using the Boolean arithmetic code to decode the path from the root node to the leaf node of the token tree 700 . The context ctx may be determined using the method of context derivation. The method of context derivation is to determine the context ctx, block size, plane type (ie luminance or chrominance), position i and previously decoded tokens t[0], . . . , t[i-1] may be used. Other criteria may be used to determine the context ctx. A binary probability distribution may be determined for any internal node of the coefficient token tree 700 starting from the root node 701 when checkEOB = 1 or starting from the node 703 when checkEOB = 0.

[0091] 일부 인코딩 시스템에서, 콘텍스트 ctx가 주어지면 토큰 t[i]를 인코딩 또는 디코딩하는데 사용되는 확률은 고정될 수 있고, 픽처(즉, 프레임)에 적응되지 않을 수 있다. 예를 들어, 확률은 주어진 콘텍스트 ctx에 대해 정의된 디폴트 값일 수 있거나, 또는 확률은 그 프레임에 대한 프레임 헤더의 일부로서 코딩(즉, 시그널링)될 수 있다. 프레임의 코딩에서 모든 각각의 콘텍스트에 대한 확률을 코딩하는 것은 비용이 많이들 수 있다. 따라서, 인코더는, 각각의 콘텍스트에 대해, 프레임 헤더에서 콘텍스트의 연관된 확률을 코딩하는 것이 유익한지를 분석할 수 있고, 이진 플래그를 사용하여 이의 판정을 디코더에 시그널링할 수 있다. 게다가, 콘텍스트에 대한 확률을 코딩하는 것은 비용(예컨대, 비트 레이트의 비용)을 감소시키기 위해 예측을 사용할 수 있고, 여기서, 예측은 이전에 디코딩된 프레임 내의 동일한 콘텍스트의 확률로부터 도출될 수 있다.[0091] In some encoding systems, given the context ctx, the probability used to encode or decode token t[i] may be fixed and may not be adapted to a picture (ie, a frame). For example, the probability may be a default value defined for a given context ctx, or the probability may be coded (ie, signaled) as part of a frame header for that frame. It can be expensive to code the probabilities for every respective context in the coding of a frame. Thus, the encoder may analyze, for each context, whether it is beneficial to code the context's associated probability in the frame header, and may signal its determination to the decoder using a binary flag. Moreover, coding probabilities for a context may use prediction to reduce cost (eg, cost of bit rate), where the prediction may be derived from probabilities of the same context within a previously decoded frame.

[0092] 도 8은 본 개시내용의 구현들에 따른, 양자화된 변환 계수를 이진화하기 위한 트리(800)의 예의 다이어그램이다. 트리(800)는 일부 비디오 코딩 시스템에서 양자화된 변환 계수들을 이진화하는데 사용될 수 있는 이진 트리이다. 트리(800)는 양자화된 변환 계수들의 인코딩 및 디코딩을 위해, 이진화, 콘텍스트 모델링 및 이진 산술 코딩의 단계들을 사용하는 비디오 코딩 시스템에 의해 사용될 수 있다. 프로세스는 CABAC(context-adaptive binary arithmetic coding)으로서 지칭될 수 있다. 예를 들어, 양자화된 변환 계수 x를 코딩하기 위해, 코딩 시스템은 다음의 단계들을 수행할 수 있다. 양자화된 변환 계수 x는 도 6의 양자화된 변환 블록(604)의 계수들 중 임의의 계수(예를 들어, 계수(608))일 수 있다.8 is a diagram of an example of a tree 800 for binarizing a quantized transform coefficient, in accordance with implementations of the present disclosure. Tree 800 is a binary tree that may be used to binarize quantized transform coefficients in some video coding systems. Tree 800 may be used by a video coding system that uses the steps of binarization, context modeling, and binary arithmetic coding for encoding and decoding of quantized transform coefficients. The process may be referred to as context-adaptive binary arithmetic coding (CABAC). For example, to code the quantized transform coefficient x, the coding system may perform the following steps. The quantized transform coefficient x may be any of the coefficients of the quantized transform block 604 of FIG. 6 (eg, coefficient 608 ).

[0093] 이진화 단계에서, 계수 x는 먼저, 트리(800)를 사용하여 이진 스트링으로 이진화된다. 이진화 프로세스는 계수 x의 부호 없는 값을 이진화할 수 있다. 예를 들어, 계수(628)(즉, 값 -1)를 이진화하는 것은 값 1을 이진화한다. 이는 트리(800)의 순회 및 이진 스트링(10)의 생성을 야기한다. 이진 스트링(10)의 비트들 각각은 빈으로서 지칭된다.In the binarization step, the coefficient x is first binarized into a binary string using the tree 800 . The binarization process may binarize the unsigned value of the coefficient x. For example, binarizing coefficient 628 (ie, value -1) binarizes value 1 . This results in traversal of tree 800 and creation of binary string 10 . Each of the bits of the binary string 10 is referred to as a bin.

[0094] 콘텍스트 도출 단계에서, 코딩될 각각의 빈에 대해, 콘텍스트가 도출된다. 콘텍스트는 정보, 이를테면, 블록 사이즈, 평면 타입(즉, 루미넌스 또는 크로미넌스), 계수 x의 블록 포지션, 및 이전에 디코딩된 계수들(예를 들어, 좌측 및/또는 위의 이웃 계수들(이용 가능한 경우)) 중 하나 이상으로부터 도출될 수 있다. 콘텍스트를 도출하기 위해 다른 정보가 사용될 수 있다. [0094] In the context derivation step, for each bin to be coded, a context is derived. The context includes information such as block size, plane type (i.e., luminance or chrominance), block position of coefficient x, and previously decoded coefficients (e.g., left and/or above neighbor coefficients (using if possible))). Other information may be used to derive the context.

[0095] 이진 산술 코딩 단계에서, 콘텍스트가 주어지면, 예를 들어, 이진 산술 코딩 엔진을 사용하여, 콘텍스트와 연관된 확률 값과 함께, 이진 코드워드로 빈이 코딩된다.[0095] In the binary arithmetic coding step, given a context, a bin is coded into a binary codeword, eg, using a binary arithmetic coding engine, along with a probability value associated with the context.

[0096] 변환 계수를 코딩하는 단계들은 콘텍스트 업데이트로서 지칭되는 단계를 포함할 수 있다. 콘텍스트 업데이트 단계에서, 빈이 코딩된 후에, 콘텍스트와 연관된 확률이 빈의 값을 반영하도록 업데이트된다.[0096] The steps of coding the transform coefficients may include what is referred to as a context update. In the context update step, after the bin is coded, the probability associated with the context is updated to reflect the value of the bin.

[0097] 길이 n의 시퀀스 xn을 코딩(즉, 인코딩 또는 디코딩)하기 위해, 확률 모델들의 혼합이 이제 설명된다. 간략화를 위해, 2개의 모델들이 사용된다. 그러나, 본 개시내용은 그렇게 제한되지 않으며, 임의의 수의 모델들이 혼합될 수 있다. [0097] To code (ie, encode or decode) a sequence x n of length n, a mixture of probabilistic models is now described. For simplicity, two models are used. However, the present disclosure is not so limited, and any number of models may be mixed.

[0098] 심벌들의 시퀀스 xn의 확률 p(xn)이 주어지면, 양호한 엔트로피 코딩 엔진, 이를테면, 양호하게 설계된 이진 산술 코딩 엔진은 확률 p(xn)으로부터 길이 -log(p(xn))의 이진 스트링을 생성할 수 있다. 스트링의 길이가 정수이기 때문에, “길이 -log(p(xn))의 이진 스트링”은 -log(p(xn))보다 더 큰 가장 작은 정수인 길이를 갖는 이진 스트링을 의미한다. 여기서, 심벌들의 시퀀스를 지칭할 때, i의 위첨자는 i개의 심벌들의 길이를 갖는 시퀀스를 지칭하며, i의 아래첨자는 시퀀스 내의 포지션 i에서의 심벌을 지칭한다. 예를 들어, x5는 11010과 같은 5개의 심벌들의 시퀀스를 지칭하며; 반면에, x5는 제5 포지션의 심벌, 이를테면 시퀀스 11010에서의 마지막 0을 지칭한다. 따라서, 시퀀스 xn은 xn = x1 x2 … xn으로 표현될 수 있다. -Log [0098] binary arithmetic coding engine given the sequence x n probability of p (x n) of symbols, designed preferred entropy coding engine, for example, is good from the probability p (x n) the length (p (x n) ) to create a binary string. Since the length of a string is an integer, “ a binary string of length -log(p(x n ))” means a binary string whose length is the smallest integer greater than -log(p(x n )). Here, when referring to a sequence of symbols, a superscript of i refers to a sequence having a length of i symbols, and a subscript of i refers to a symbol at position i in the sequence. For example, x 5 refers to a sequence of 5 symbols, such as 11010; On the other hand, x 5 refers to the symbol of the fifth position, such as the last 0 in the sequence 11010. Thus, the sequence x n is x n = x 1 x 2 ... It can be expressed as x n .

[0099] 본원에서 사용되는 바와 같이, 서브시퀀스 xi의 확률 p(xi)와 같은 확률 값들은 부동-소수점 또는 고정-소수점 표현들을 가질 수 있다. 따라서, 이들 값들에 적용되는 연산들은 부동-소수점 산술 또는 고정-소수점 산술을 사용할 수 있다.As used herein, probability values such as probability p(x i ) of subsequence x i may have floating-point or fixed-point representations. Thus, operations applied to these values may use floating-point arithmetic or fixed-point arithmetic.

[00100] p1(xn) < p2(xn)이도록 2개의 확률들 p1(xn) 및 p2(xn)이 주어지면, 확률 p1(xn)은 확률 p2(xn)보다 더 짧지 않은 코드워드를 야기한다. 즉, 확률이 더 작을수록, 전형적으로, 더 큰 확률보다 더 긴 코드워드를 생성하다. [00100] Given two probabilities p 1 (x n ) and p 2 (x n ) such that p 1 (x n ) < p 2 (x n ), the probability p 1 (x n ) is the probability p 2 ( x n ) resulting in a codeword not shorter than That is, a smaller probability typically produces a longer codeword than a larger probability.

[00101] 비디오 코딩에서 심벌들이 방출되는 기본 확률 모델은 전형적으로 알려져 있지 않고/않거나 완전히 설명하기에는 너무 복잡하거나 너무 비용이 높을 가능성이 있다. 따라서, 엔트로피 코딩에 사용하기 위한 양호한 모델을 설계하는 것은 비디오 코딩에서 어려운 문제일 수 있다. 예를 들어, 하나의 시퀀스에 대해 잘 작동하는 모델은 다른 시퀀스에 대해 불량하게 수행할 수 있다. 즉, 제1 모델 및 제2 모델이 주어지면, 일부 시퀀스들은 제1 모델을 사용하여 더 양호하게 압축될 수 있는 한편, 다른 시퀀스들은 제2 모델을 사용하여 더 양호하게 압축될 수 있다. [00101] In video coding, the underlying probabilistic model from which symbols are emitted is typically unknown and/or likely too complex or too expensive to fully describe. Therefore, designing a good model for use in entropy coding can be a difficult problem in video coding. For example, a model that works well for one sequence may perform poorly on another. That is, given a first model and a second model, some sequences may be better compressed using the first model, while other sequences may be better compressed using the second model.

[00102] 일부 비디오 시스템들에서, 시퀀스를 인코딩하기 위한 최적의 모델을 코딩(즉, 인코딩된 비트스트림에서의 신호)하는 것이 가능하다. 예를 들어, 인코딩될 시퀀스가 주어지면, 비디오 시스템은 이용 가능한 모델들의 전부 또는 서브세트에 따라 시퀀스를 인코딩한 후에, 최상의 압축 결과를 야기하는 모델을 선택할 수 있다. 즉, 시퀀스에 대한 하나 초과의 모델들의 세트 중에서 특정 모델의 선택을 코딩하는 것이 가능하다. 이러한 시스템에서, 2-패스 프로세스가 암시적으로 또는 명시적으로 수행될 수 있으며: 제1 패스는 최적의 모델을 결정하기 위한 것이고, 제2 패스는 최적의 모델을 사용하여 인코딩하기 위한 것이다. 예를 들어, 실시간 애플리케이션들 및 다른 지연-민감 애플리케이션들에서 2-패스 프로세스는 실현 가능하지 않을 수 있다. In some video systems, it is possible to code an optimal model for encoding a sequence (ie, a signal in an encoded bitstream). For example, given a sequence to be encoded, the video system may encode the sequence according to all or a subset of the available models, and then select the model that gives the best compression result. That is, it is possible to code the selection of a particular model among a set of more than one model for a sequence. In such a system, a two-pass process can be performed implicitly or explicitly: the first pass is to determine the optimal model, and the second pass is to encode using the optimal model. For example, a two-pass process may not be feasible in real-time applications and other delay-sensitive applications.

[00103] 위에서 언급된 바와 같이, 엔트로피 코딩을 위해 다수의 모델들(즉, 모델들 1, …, M)이 이용 가능할 수 있다. 정보의 손실 없이 심벌들의 시퀀스가 압축되게 하기 위해, 산술 코딩을 위한 유한한 수의 모델들을 혼합하는 것이 점근적으로 최상의 하나의 모델을 선택하는 것만큼 양호할 수 있다. 이는 log 함수가 오목 함수이고, -log 함수가 볼록 함수라는 사실에서 비롯된다. As mentioned above, multiple models (ie, models 1, ..., M) may be available for entropy coding. To allow a sequence of symbols to be compressed without loss of information, mixing a finite number of models for arithmetic coding may be as good as choosing the one asymptotically best. This comes from the fact that the log function is a concave function and the -log function is a convex function.

[00104] 전술된 바로부터, 그리고 길이 n의 유한 시퀀스 xn = x1 x2 … xn에 대해, 부등식 (1)은 다음과 같다:[00104] From the above, and a finite sequence of length n x n = x 1 x 2 ... For x n , inequality (1) is:

Figure 112019125287649-pct00002
Figure 112019125287649-pct00002

[00105] 부등식 (1)에서, wk는 k번째 모델의 가중 인자를 나타내고, pk(xn)은 모델 k에 의해 주어진 xn의 결합 확률을 나타낸다. 위에서 설명된 바와 같이, 입력으로서 확률 pk(xn)(즉, 시퀀스 xn의 모델 k에 의해 주어진 확률) 및 xn이 주어지면, 엔트로피 코딩 엔진은 xn을 -logpk(xn)과 대략 동일한 길이의 이진 코드워드로 매핑할 수 있다. [00105] In the inequality (1), w k denotes the weighting factor of the kth model, and p k (x n ) denotes the joint probability of x n given by the model k. As described above, given as inputs a probability p k (x n ) (ie a probability given by a model k of a sequence x n ) and x n , the entropy coding engine converts x n to -logp k (x n ) It can be mapped to a binary codeword of approximately the same length as .

[00106] 부등식 (1)에서, 이용 가능한 모델들에 대한 확률들의 선형(즉, 가중된) 합(즉,

Figure 112019125287649-pct00003
)을 행한 후에 선형 합의 로그를 행하는 것은 모델들 1, …, M의 확률들의 로그들(logpk(xn))을 행한 후에 동일한 가중 인자들{wk}을 사용하여 선형 합을 수행하는 것보다 항상 작거나 같다는 것이다. 즉, 부등식의 좌측은 항상 부등식의 우측 이하이다. [00106] In inequality (1), the linear (i.e. weighted) sum of probabilities for the available models (i.e.,
Figure 112019125287649-pct00003
), then doing logarithms of the linear sum is the model 1, ... , is always less than or equal to performing the linear summation using the same weighting factors {w k } after doing logp k (x n )) of the probabilities of M. That is, the left side of the inequality is always less than or equal to the right side of the inequality.

[00107] 또한, 부등식 (1)로부터, M개의 모델들이 주어지면, 심벌을 엔트로피 코딩하기 전에, 모델들 1, … , M의 확률들을 혼합하는 것이 더 유리하다는 것이 된다. 즉, 확률들에 따라 모델들을 선택하고 각각의 모델을 사용하여 비트들의 시퀀스를 개별적으로 코딩하는 것보다, 엔트로피 코딩 전에 다수의 모델들의 확률들을 혼합하는 것이 더 유리할 수 있다. 별개의 모델들을 혼합하는 것은 압축 성능을 개선할 가능성이 있으며(즉, 압축률을 감소시킴), 최상의 모델을 선택하여 코딩한 후에 선택된 모델을 사용하여 시퀀스를 코딩하는 것보다 나쁘지 않다. [00107] Also, from inequality (1), given M models, before entropy coding the symbol, models 1, ... , it becomes more advantageous to mix the probabilities of M. That is, it may be advantageous to mix the probabilities of multiple models before entropy coding, rather than selecting models according to probabilities and using each model to individually code a sequence of bits. Mixing separate models has the potential to improve compression performance (ie, reduce compression ratio), and is no worse than choosing and coding the best model and then coding a sequence using the selected model.

[00108] 확률 pk(xn)은 시퀀스 xn의 결합 확률이다. xn을 공동으로 코딩하는 것이 프로세싱에서의 상당한 지연 및 높은 연산 복잡성을 발생시킬 수 있기 때문에, 혼합은 비디오 코딩에서, 적어도 사용한다면, 사용이 제한되는 것이 발견되었다. [00108] The probability p k (x n ) is the joint probability of the sequence x n. Mixing has been found of limited use in video coding, at least if used, because co-coding x n can result in significant delays in processing and high computational complexity.

[00109] 1 ≤ i ≤ n인 시퀀스 xn의 길이 i의 임의의 서브시퀀스에 대해, 확률 pk(xi)는 모델 k를 사용함으로써 추정된 서브시퀀스 xi의 확률을 나타내며, 여기서 k = 1,2이다. 각각의 모델에 대해 대응하는 가중 인자 wk를 사용하면, 방정식 (2)을 사용하여 2개의 모델들이 혼합될 수 있다.[00109] For any subsequence of length i of sequence x n with 1 ≤ i ≤ n , probability p k (x i ) denotes the probability of subsequence x i estimated by using model k, where k = It is 1,2. Using the corresponding weighting factor w k for each model, the two models can be mixed using equation (2).

Figure 112019125287649-pct00004
Figure 112019125287649-pct00004

[00110] 방정식 (2)에서,

Figure 112019125287649-pct00005
는 서브시퀀스 xi의 혼합 확률이다. 따라서, 혼합은 각각의 서브시퀀스 xi에 대해 부분(또는 중간) 결과들을 생성할 수 있다. 서브시퀀스 xi는 xi = x1 x2 x3 … xi이다. 제1 모델(즉, k = 1)은 서브시퀀스 확률 p1(xi)을 생성하고; 제2 모델(즉, k = 2)은 서브시퀀스 확률 p2(xi)를 생성한다.[00110] In equation (2),
Figure 112019125287649-pct00005
is the mixing probability of the subsequence x i . Thus, mixing may produce partial (or intermediate) results for each subsequence x i . Subsequence x i is x i = x 1 x 2 x 3 … x i . The first model (ie, k = 1) produces a subsequence probability p 1 (x i ); The second model (ie, k = 2) produces a subsequence probability p 2 (x i ).

[00111] 예에서, 그리고 알려져 있지 않을 수 있는 바와 같이, 선험적으로, 어떤 모델이 우선순위를 가져야 하는지에 대해, 간단한 혼합이 사용될 수 있다. 예를 들어, 균일한 가중치가 사용될 수 있다. 즉, 가중 인자들 wk는 wk = 1/2이 되도록 선택될 수 있다. 따라서 방정식 (2)는 다음과 같이 다시 기재될 수 있다:[00111] In the example, and as it may not be known, a simple mixture may be used a priori as to which model should have priority. For example, a uniform weight may be used. That is, the weighting factors w k may be chosen such that w k = 1/2. Therefore, equation (2) can be rewritten as:

Figure 112019125287649-pct00006
Figure 112019125287649-pct00006

[00112] 혼합 확률

Figure 112019125287649-pct00007
는 서브시퀀스의 확률이다. 그러나, 산술 코딩은 심벌 단위에 기초하여(즉, 심벌들의 시퀀스들에 기초하지 않음) 수행된다. 따라서, 혼합 확률
Figure 112019125287649-pct00008
는 엔트로피 코딩을 위해 직접 사용될 수 없다. 이는 혼합 확률
Figure 112019125287649-pct00009
를 아래에서 설명되는 바와 같은 조건부 확률들의 곱으로 변환함으로써 해결될 수 있다. 혼합 확률
Figure 112019125287649-pct00010
자체는 조건부 확률이라는 것이 또한 주의되며, 이는 이전 심벌들이 서브시퀀스 xi-1을 야기한다면, 포지션 i에서 특정 값을 갖는 심벌의 확률이다. 즉, 혼합 확률
Figure 112019125287649-pct00011
는 방정식 (4)에 의해 주어질 수 있다:[00112] Mixed Probability
Figure 112019125287649-pct00007
is the probability of the subsequence. However, arithmetic coding is performed on a per-symbol basis (ie, not on sequences of symbols). Therefore, mixed probability
Figure 112019125287649-pct00008
cannot be used directly for entropy coding. This is a mixed probability
Figure 112019125287649-pct00009
can be solved by transforming n into a product of conditional probabilities as described below. mixed probability
Figure 112019125287649-pct00010
It is also noted that itself is a conditional probability, which is the probability of a symbol having a certain value at position i if the previous symbols result in a subsequence x i-1 . i.e. mixed probability
Figure 112019125287649-pct00011
can be given by equation (4):

Figure 112019125287649-pct00012
Figure 112019125287649-pct00012

[00113] 기본 조건부 확률 공식 P(A│B) = P(A∩B)/P(B)를 사용하며, 여기서, P(A∩B)는 이벤트들 A와 B 둘 모두가 발생할 확률이고, 방정식 (4)는 방정식 (5)로 다시 기재될 수 있다.[00113] Use the basic conditional probability formula P(A│B) = P(A∩B)/P(B), where P(A∩B) is the probability that both events A and B will occur, Equation (4) can be rewritten as Equation (5).

Figure 112019125287649-pct00013
Figure 112019125287649-pct00013

[00114] 서브시퀀스 xi는 서브시퀀스 xi-1을 포함하고 심벌 xi를 가지기 때문에, xi와 xi-1 둘 모두가 발생하는 혼합 확률은 xi만의 혼합 확률과 동일하다는 것이 주의된다.[00114] It is noted that since subsequence x i contains subsequence x i-1 and has symbol x i , the mixing probability that both x i and x i-1 occurs is equal to the mixing probability of only x i .

[00115] 방정식 (5)는 방정식 (3)을 사용하여 다시 기재될 수 있다. 즉, 방정식 (5)의 서브시퀀스 혼합 확률들(즉, 분자 및 분모) 각각은 모델 확률들에 관하여 다시 기재될 수 있다. 방정식 (5)는 방정식 (6)으로 다시 기재될 수 있다.[00115] Equation (5) can be rewritten using equation (3). That is, each of the subsequence mixing probabilities (ie, numerator and denominator) of equation (5) can be rewritten with respect to model probabilities. Equation (5) can be rewritten as Equation (6).

Figure 112019125287649-pct00014
Figure 112019125287649-pct00014

[00116] 방정식 (6)의 제1 양 및 제2 양에 각각 1과 동일한 인자(즉, 각각

Figure 112019125287649-pct00015
Figure 112019125287649-pct00016
)를 승산하여, 방정식 (7)이 획득된다:[00116] A factor equal to 1 each in the first and second quantities in equation (6) (i.e., each
Figure 112019125287649-pct00015
and
Figure 112019125287649-pct00016
), the equation (7) is obtained:

Figure 112019125287649-pct00017
Figure 112019125287649-pct00017

[00117] 방정식 (7)은 방정식 (8)로 기재될 수 있다.[00117] Equation (7) can be written as Equation (8).

Figure 112019125287649-pct00018
Figure 112019125287649-pct00018

[00118] p1(xi│xi-1) 및 p2(xi│xi-1)의 조건부 확률들은 i번째 심벌까지 시퀀스의 인코딩의 결과로서 이용 가능하다는 것이 주목할 만하다. 엔트로피 인코딩이 한 번에 하나의 심벌을 인코딩하고 모든 각각의 심벌에 대해 (xi까지 그릭고 이를 포함하는) 코드워드에 대한 확률을 생성하므로, 이러한 조건부 확률들이 이용 가능하다. 본 개시내용에 따른 구현들에서, 조건부 확률들은 혼합되고, 이어서, 혼합 확률(즉,

Figure 112019125287649-pct00019
)을 사용하여 시퀀스가 인코딩(또는 디코딩)된다.[00118] It is noteworthy that the conditional probabilities of p 1 (x i | x i-1 ) and p 2 (x i | x i-1 ) are available as a result of encoding of the sequence up to the i-th symbol. These conditional probabilities are available because entropy encoding encodes one symbol at a time and produces a probability for the codeword (growing up to and including x i ) for every each symbol. In implementations according to the present disclosure, the conditional probabilities are mixed, and then the mixed probabilities (ie,
Figure 112019125287649-pct00019
) to encode (or decode) the sequence.

[00119] 방정식 (8)에서, wi,1 및 wi,2

Figure 112019125287649-pct00020
Figure 112019125287649-pct00021
와 각각 동일한 가중치들이며, p1(xi│xi-1) 및 p2(xi│xi-1)는
Figure 112019125287649-pct00022
Figure 112019125287649-pct00023
과 각각 동일하다. 따라서, 혼합 확률
Figure 112019125287649-pct00024
는 이제 제1 모델의 조건부 확률(즉, p1(xi│xi-1))과 제2 모델의 조건부 확률(즉, p2(xi │xi-1))의 선형 조합으로서 표현되고, 여기서, 조건부 확률들 각각은 각각의 가중 인자와 승산된다. [00119] In equation (8), w i,1 and w i,2 are
Figure 112019125287649-pct00020
and
Figure 112019125287649-pct00021
are the same weights as , respectively, and p 1 (x i │x i-1 ) and p 2 (x i │x i-1 ) are
Figure 112019125287649-pct00022
and
Figure 112019125287649-pct00023
are the same as each Therefore, mixed probability
Figure 112019125287649-pct00024
is now expressed as a linear combination of the conditional probability of the first model (ie p 1 (x i | x i-1 )) and the conditional probability of the second model (ie p 2 (x i | x i-1 )) where each of the conditional probabilities is multiplied by a respective weighting factor.

[00120] 방정식 (3)을 사용하여 결합 분포들이 혼합될 때, 균일한 가중 인자들(즉, 1/2)이 사용되었다. 그러나, 조건부 확률들이 (방정식 (8)에서와 같이) 혼합되어 사용될 때, 가중치(즉, 제1 모델에 대한 wi,1 및 제2 모델에 대한 wi,2)가 더 이상 균일하지 않을 수 있다. 제1 모델의 조건부 확률에 대한 가중치 wi,1은 제1 모델에 의해 주어진 xi-1의 결합 확률을, 제1 모델에 의해 주어진 xi-1의 결합 확률과 제2 모델에 의해 주어진 xi-1의 결합 확률의 합으로 제산한 것과 동일하다. 가중치 wi,2의 경우에도 유사하다. 방정식 (8)에서, 서브시퀀스 xi-1에 대해, 제1 모델은 제1 확률을 제공하고, 제2 모델은 제2 확률을 제공하며, xi-1이 주어진 xi의 조건부 확률에 대한 가중 인자는 제1 모델과 제2 모델 각각에 의해 주어진 확률이 모델들 둘 모두에 의해 주어진 결합 확률들의 합으로 제산된 것과 동일하다. 즉, 조건부 확률들의 혼합에서, 예를 들어, 제1 모델이 서브시퀀스 xi-1에 대해 더 높은 확률을 제공하는 경우, 제1 모델은 제2 모델의 가중 인자보다 더 높은 가중 인자(즉, 가중치 wi,1)를 갖게 된다.[00120] When the joint distributions were mixed using equation (3), uniform weighting factors (ie, 1/2) were used. However, when conditional probabilities are mixed (as in equation (8)), the weights (i.e. w i,1 for the first model and w i,2 for the second model) may no longer be uniform. have. Weights for the conditional probability of the first model, w i, 1 are given claim by x i-1 joint probability and the second model is given by a combination of x i-1, the probability given by the first model, the first model x It is equal to dividing by the sum of the joint probabilities of i-1. The same is true for the weight w i,2 . In equation (8), for a subsequence x i-1 , the first model gives a first probability, the second model gives a second probability, and x i-1 gives the conditional probability of a given x i . The weighting factor is equal to the probability given by each of the first model and the second model divided by the sum of the joint probabilities given by both models. That is, in a mixture of conditional probabilities, for example, if the first model gives a higher probability for subsequence x i-1 , the first model has a higher weighting factor (i.e., the weighting factor of the second model) weight w i,1 ).

[00121] 결합 확률들은 실수들이며, 가중치들 wi,1 및 wi,2의 계산은 실수들의 제산을 수반한다. 따라서, 가중치들 wi,1 및 wi,2의 컴퓨팅은 복잡하고 비용이 높을 수 있다. 가중치들 wi,1 및 wi,2를 고정-소수점 표현들로 근사화하는 것이 바람직하며, 그에 따라, 예를 들어, 가중치들 각각을 표현하는 비트들의 정확한 수가 알려질 수 있고, 제산 연산들이 회피될 수 있다.[00121] The joint probabilities are real numbers, and the calculation of the weights w i,1 and w i,2 involves division of the real numbers. Thus, computing the weights w i,1 and w i,2 can be complex and expensive. It is desirable to approximate the weights w i,1 and w i,2 to fixed-point representations, so that, for example, the exact number of bits representing each of the weights can be known and division operations to be avoided. can

[00122] 위에서 설명된 바와 같이, 코드워드의 확률과 확률을 사용하여 코드워드가 생성한 비트들의 길이 사이에 상관 및/또는 관계가 있다. 즉, 코드워드의 길이(즉, 비트들의 수)는 -log2(p)에 의해 주어진다. 각각의 모델에 의해 생성된 코드워드들의 길이들은 가중치 wi,1 및 wi,2를 근사화하기 위해 사용될 수 있다. 즉, -log(pk(xi-1))은 xi-1을 인코딩하기 위해 모델 k(k = 1, 2)를 사용하는 것으로부터 기인하는 비트들의 코드워드 길이 lk(xi-1)에 의해 근사화될 수 있다. 따라서, 가중치 wi,1(및 가중치 wi,2의 경우)은 방정식 (9)를 사용하여 근사화될 수 있다.As described above, there is a correlation and/or relationship between the probability of the codeword and the length of bits the codeword generates using the probability. That is, the length of the codeword (ie the number of bits) is given by -log 2 (p). The lengths of the codewords generated by each model can be used to approximate the weights w i,1 and w i,2 . That is, -log(p k (x i-1 )) is the codeword length l k (x i- ) in bits resulting from using model k(k = 1, 2) to encode x i-1 . 1 ) can be approximated by Thus, the weight w i,1 (and for the weight w i,2 ) can be approximated using equation (9).

Figure 112019125287649-pct00025
Figure 112019125287649-pct00025

[00123] l2(i-1)이 l1(i-1)과 동일할 때, wi,1 = wi,2 = 0.5가 된다. 일반성을 잃지 않으면서, l1(i-1)이 l2(i-1)보다 더 작다고 가정하면, 방정식 (9)는 분모를 확장한 후에 분모 및 분자로부터

Figure 112019125287649-pct00026
를 제거함으로써 결과로 나올 수 있다. [00123] When l 2 (i-1) is equal to l 1 (i-1), w i,1 = w i,2 = 0.5. Without loss of generality, standing, l 1 (i-1) When more than the small household l 2 (i-1), equation (9) from the denominator and numerator After expanding the denominator
Figure 112019125287649-pct00026
can be obtained by removing

[00124] 길이 i의 서브시퀀스의 모델 k에 따라 길이 lk(xi)를 결정하기 위해, 가상 인코딩 프로세스가 사용될 수 있다. 가상 인코딩 프로세스는, 코딩 단계들을 수행하지만 실제 코드워드들 또는 출력 비트들을 인코딩된 비트스트림으로 생성하지 않는 프로세스이다. 일부 애플리케이션들에서 비트레이트(또는 간단히 레이트)로 해석되는 lk(xi)를 추정하는 것이 목적이기 때문에, 가상 인코딩 프로세스는 레이트 추정 프로세스로 간주되거나 지칭될 수 있다. 확률 모델을 사용하는 가상 인코딩 프로세스는 시퀀스에 대한 코드워드 길이를 컴퓨팅 또는 추정한다. 코드워드 길이는 코드워드를 생성하거나 생성하지 않으면서 결정(즉, 측정)될 수 있다. 예를 들어, 시간 인스턴스 i에서, 제1 모델을 사용하여 시퀀스 xi-1을 코딩하는 것은 길이 l1(i-1)의 코드워드를 생성하고, 제2 모델을 사용하는 것은 길이 l2(i-1)의 코드워드를 생성한다. 예에서, 다수의 가상 인코더들이 이용 가능할 수 있고, 병렬로 실행될 수 있다. 예를 들어, 산술 인코더에 대한 표준 레이트 추정기가 각각의 모델에 이용 가능할 수 있다. 각각의 레이트 추정기는 모델에 의해 주어진 서브시퀀스를 위해 인코더에 의해 생성될 수 있는 코드워드의 길이의 추정치를 제공할 수 있다(또는 제공하는데 사용될 수 있음). [00124] To determine a length l k (x i ) according to a model k of a subsequence of length i, a virtual encoding process can be used. A virtual encoding process is a process that performs coding steps but does not generate actual codewords or output bits into an encoded bitstream. Since the purpose of some applications is to estimate l k (x i ), which is interpreted as bitrate (or simply rate), the virtual encoding process may be considered or referred to as a rate estimation process. A virtual encoding process using a probabilistic model computes or estimates the codeword length for a sequence. The codeword length may be determined (ie, measured) with or without generating a codeword. For example, at time instance i, coding the sequence x i-1 using the first model produces a codeword of length l 1 (i-1), and using the second model produces a codeword of length l 2 ( The codeword of i-1) is generated. In an example, multiple virtual encoders may be available and executed in parallel. For example, a standard rate estimator for an arithmetic encoder may be available for each model. Each rate estimator may provide (or may be used to provide) an estimate of the length of a codeword that may be generated by the encoder for a subsequence given by the model.

[00125] 시간 인스턴스 i에서 2개의 경쟁 모델들이 주어지면, 제1 모델이 제2 모델보다 더 적은 비트들을 제공하는 경우, 제1 모델에 할당된 가중치(방정식 9 사용)는 포지션 xi-1에서의 심벌까지의 시퀀스에 대해 제2 모델에 할당된 가중치보다 더 클 것이다. 결국(즉, 시퀀스 xn의 인코딩이 혼합 확률을 사용하여 완료될 때), 위닝 모델(즉, 더 높은 가중치를 갖는 모델)은 적은 비트들을 생성하는 모델이며, 이는 원하는 압축의 결과이다. Given two competing models at time instance i, if the first model provides fewer bits than the second model, the weight assigned to the first model (using equation 9) is at position x i - 1 will be greater than the weight assigned to the second model for the sequence up to the symbol of . After all (ie, when encoding of sequence x n is done using mixed probabilities), the winning model (ie, the model with higher weight) is the model that produces fewer bits, which is the result of the desired compression.

[00126] 가중치 wi,1은 2의 거듭제곱을 사용하여 (방정식 (9)에서) 근사화되고, 그에 따라 효율적으로 컴퓨팅될 수 있다. [00126] The weight w i,1 can be approximated (in equation (9)) using a power of 2 and computed efficiently accordingly.

[00127] 가중치 wi,1은 더 단순화될 수 있다. 방정식 (9)의 우측은 1/(1-r) 형태이며, 여기서,

Figure 112019125287649-pct00027
이다. 이는 1+r+r2+…에 의해 주어진 기하급수로서 인식되고, 여기서, 공비
Figure 112019125287649-pct00028
이다. 따라서, 가중치 wi,1은 방정식 (10)을 사용하여 근사화될 수 있다.[00127] The weight w i,1 can be further simplified. The right-hand side of equation (9) is of the form 1/(1-r), where
Figure 112019125287649-pct00027
am. This is 1+r+r 2 +… Recognized as an exponential given by , where,
Figure 112019125287649-pct00028
am. Thus, the weight w i,1 can be approximated using equation (10).

Figure 112019125287649-pct00029
Figure 112019125287649-pct00029

[00128] 따라서, 방정식 (8)의 wi,1 * p1(xi│xi-1)은 방정식 (11)에서와 같이 다시 기재될 수 있다.[00128] Thus, w i,1 * p 1 (x i | x i-1 ) in equation (8) can be rewritten as in equation (11).

Figure 112019125287649-pct00030
Figure 112019125287649-pct00030

[00129] 방정식 (11)에서,

Figure 112019125287649-pct00031
은 p1(xi│xi-1)이 고정-소수점 표현을 갖는 경우들에서 시프트들을 사용함으로써 효율적으로 컴퓨팅될 수 있다. 또한, p1(xi │ xi-1)이 고정-소수점 표현을 갖는 경우, 방정식 (11)의 무한 합은 유한 수의 항들의 합으로 절단될 수 있다. 예를 들어, p1(xi│xi-1)이 8-비트 표현을 갖는 경우, 합은 처음 8개의 항들만을 유지하도록 절단될 수 있으며,
Figure 112019125287649-pct00032
인 경우(즉, 이들이 적어도 하나의 비트만큼 상이한 경우), 임의의 j ≥ 8에 대해,
Figure 112019125287649-pct00033
이기 때문에,
Figure 112019125287649-pct00034
이 된다.
Figure 112019125287649-pct00035
인 경우(즉, 이들이 하나 초과의 비트만큼 상이한 경우), 임의의 j ≥ j*(j* < 8)에 대해,
Figure 112019125287649-pct00036
이다. 그에 따라, 처음 j*개의 항들만이 wi,l(xi│xi-1)을 컴퓨팅할 필요가 있다.[00129] In equation (11),
Figure 112019125287649-pct00031
can be computed efficiently by using shifts in cases where p 1 (x i | x i-1 ) has a fixed-point representation. Also, if p 1 (x i │ x i-1 ) has a fixed-point representation, the infinite sum of equation (11) can be truncated to the sum of a finite number of terms. For example, if p 1 (x i | x i-1 ) has an 8-bit representation, the sum can be truncated to keep only the first 8 terms,
Figure 112019125287649-pct00032
(i.e. if they differ by at least one bit), for any j ≥ 8,
Figure 112019125287649-pct00033
because it is,
Figure 112019125287649-pct00034
becomes this
Figure 112019125287649-pct00035
(i.e., if they differ by more than one bit), then for any j ≥ j * (j * < 8),
Figure 112019125287649-pct00036
am. Accordingly, only the first j * terms need to compute w i,l (x i | x i-1 ).

[00130] 가중치 wi,2는 방정식 (12)을 사용하여 컴퓨팅될 수 있다.[00130] The weight w i,2 may be computed using equation (12).

Figure 112019125287649-pct00037
Figure 112019125287649-pct00037

[00131] 방정식 (8)의 양 wi,2 * p2(xi|xi-1)은 방정식 (13)을 사용하여 컴퓨팅될 수 있다.[00131] The quantity w i,2 * p 2 (x i |x i-1 ) in equation (8) can be computed using equation (13).

Figure 112019125287649-pct00038
Figure 112019125287649-pct00038

[00132] 방정식 (11)에서와 같이, p2(xi|xi-1)이 고정-소수점 표현을 가질 때, 무한 합을 유한 합으로 절단함으로써, 방정식 (13)의 우측이 단순화될 수 있다.[00132] As in equation (11), when p 2 (x i |x i-1 ) has a fixed-point representation, by truncating the infinite sum to a finite sum, the right side of equation (13) can be simplified have.

[00133] 위에서 설명된 바와 같이, 모델들의 결합 확률들의 혼합은, 어떤 모델이 더 양호한 압축을 제공하는지에 대해 선험적으로 알려져 있지 않을 수 있기 때문에, 간단한 균일한 혼합을 사용할 수 있다. 결합 확률들의 균일한 혼합은 조건부 확률들을 사용하고, 위닝 모델(즉, 더 높은 가중치를 갖는 모델)의 선택을 야기한다.As described above, mixing of the joint probabilities of models may use a simple uniform mixing, since it may not be known a priori as to which model provides better compression. A uniform mix of joint probabilities uses conditional probabilities and results in the selection of a winning model (ie, a model with a higher weight).

[00134] 도 9는 본 개시내용의 구현에 따른, 심벌들의 시퀀스를 인코딩하기 위한 프로세스(900)의 흐름도이다. 프로세스(900)는 사이즈 n의 심벌들의 시퀀스를 수신할 수 있다. 시퀀스는 xn으로 표시될 수 있다. 수신은 생성, 결정, 또는 임의의 방식의 수신을 의미할 수 있다. 예에서, 심벌들의 시퀀스는 도 4의 양자화 스테이지(406)로부터 엔트로피 인코딩 스테이지(408)에서 수신된 것과 같은 양자화된 변환 계수를 표현할 수 있다. 예에서, 심벌들의 시퀀스는 도 7에 대하여 설명된 토큰과 같은 토큰일 수 있다. 예에서, 심벌들의 시퀀스는 도 8에 대하여 설명된 이진화된 값과 같은 이진화된 값일 수 있다. 심벌들의 시퀀스는 확률 모델에 기초하여 인코딩된 심벌들의 임의의 시퀀스일 수 있다.9 is a flow diagram of a process 900 for encoding a sequence of symbols, according to an implementation of the present disclosure. Process 900 may receive a sequence of symbols of size n. The sequence may be denoted by x n . Receiving may mean generating, determining, or receiving in any manner. In an example, the sequence of symbols may represent a quantized transform coefficient as received at the entropy encoding stage 408 from the quantization stage 406 of FIG. 4 . In an example, the sequence of symbols may be a token, such as the token described with respect to FIG. 7 . In an example, the sequence of symbols may be a binarized value, such as the binarized value described with respect to FIG. 8 . The sequence of symbols may be any sequence of symbols encoded based on a probabilistic model.

[00135] 프로세스(900)는 도 4의 인코더(400)와 같은 인코더에서 구현될 수 있다. 프로세스(900)는, 예를 들어, 송신국(102)과 같은 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로서 구현될 수 있다. 소프트웨어 프로그램은 머신-판독가능 명령들을 포함할 수 있으며, 그 머신-판독가능 명령들은 메모리(204) 또는 이차 저장소(214)와 같은 메모리에 저장될 수 있고, CPU(202)와 같은 프로세서에 의해 실행되어, 컴퓨팅 디바이스로 하여금 프로세스(900)를 수행하게 할 수 있다. 적어도 일부 구현들에서, 프로세스(900)는 도 4의 인코더(400)의 엔트로피 인코딩 스테이지(408)에 의해 전체적으로 또는 부분적으로 수행될 수 있다.Process 900 may be implemented in an encoder, such as encoder 400 of FIG. 4 . Process 900 may be implemented as a software program that may be executed by computing devices, such as, for example, transmitting station 102 . A software program may include machine-readable instructions, which may be stored in a memory, such as memory 204 or secondary storage 214 , and executed by a processor, such as CPU 202 . may cause the computing device to perform process 900 . In at least some implementations, process 900 may be performed in whole or in part by entropy encoding stage 408 of encoder 400 of FIG. 4 .

[00136] 프로세스(900)는 심벌들의 시퀀스 xn을 인코딩하기 위해 적어도 2개의 확률 모델들을 사용한다. 프로세스(900)는 임의의 수의 확률 모델들을 사용할 수 있다. 그러나, 간략화를 위해, 프로세스(900)를 예시하기 위해 2개의 모델들(즉, 제1 모델 및 제2 모델)만이 사용된다. 프로세스(900)는 제1 모델 및 제2 모델의 확률들을 혼합함으로써 심벌들의 시퀀스의 심벌들 각각을 인코딩한다. The process 900 uses at least two probabilistic models to encode the sequence x n of symbols. Process 900 may use any number of probabilistic models. However, for simplicity, only two models (ie, the first model and the second model) are used to illustrate the process 900 . Process 900 encodes each of the symbols of the sequence of symbols by mixing the probabilities of the first model and the second model.

[00137] 902에서, 프로세스(900)는 카운터 i를 0으로, 제1 서브시퀀스 길이(즉, 제1 길이 l1)를 0으로, 그리고 제2 서브시퀀스 길이(즉, 제2 길이 l2)를 0으로 초기화한다. 카운터 i는 시퀀스 xn의 각각의 심벌에 사용된다. 제1 길이 l1 및 제2 길이 l2는 위에서 설명된 바와 같다. 즉, 제1 길이 l1 및 제2 길이 l2는 각각, 제1 모델 및 제2 모델을 사용하여 산술 코딩 엔진들에 의해 생성된 코드워드들의 길이에 대응할 수 있다.At 902 , process 900 sets counter i to zero, first subsequence length (ie, first length l 1 ) to zero, and second subsequence length (ie, second length l 2 ) is initialized to 0. A counter i is used for each symbol of the sequence x n . The first length l 1 and the second length l 2 are as described above. That is, the first length l 1 and the second length l 2 may correspond to lengths of codewords generated by the arithmetic coding engines using the first model and the second model, respectively.

[00138] 904에서, 프로세스(900)는 위에서 설명된 바와 같이 조건부 확률들 p1(xi│xi-1) 및 p2(xi│xi-1)을 결정한다. 조건부 확률 p1(xi│xi-1)은 서브시퀀스 xi-1(즉, 심벌 xi까지의 그리고 이를 포함하는 서브시퀀스)의 확률이 주어지는 경우, 심벌들의 시퀀스의 포지션 i에서의 심벌의 조건부 확률이다. p2(xi│xi-1)에 대해서도 유사하다.At 904 , the process 900 determines the conditional probabilities p 1 (x i | x i-1 ) and p 2 (x i | x i-1 ) as described above. The conditional probability p 1 (x i | x i-1 ) is the symbol at position i of the sequence of symbols given the probability of the subsequence x i-1 (ie the subsequence up to and including symbol x i ). is the conditional probability of The same is true for p 2 (x i | x i-1 ).

[00139] 906에서, 프로세스(900)는 심벌 xi에 대한 혼합 확률

Figure 112019125287649-pct00039
을 컴퓨팅한다. 프로세스(900)는 위의 방정식 (4)에 설명된 혼합 확률을 결정할 수 있다. 프로세스(900)는 방정식들 8, 11 및 13을 사용하여 혼합 확률을 컴퓨팅할 수 있다. 908에서, 프로세스(900)는 컴퓨팅된 혼합 조건부 확률을 사용하여 심벌 xi를 인코딩한다.[00139] At 906, the process 900 determines the mixing probability for symbol x i
Figure 112019125287649-pct00039
to compute Process 900 may determine the mixing probability described in equation (4) above. Process 900 may compute the mixing probability using equations 8, 11 and 13. At 908 , process 900 encodes the symbol x i using the computed mixed conditional probability.

[00140] 910에서, 프로세스(900)는 제1 길이 l1 및 제2 길이 l2를 업데이트한다. 위에서 설명된 바와 같이, 가상 산술 인코더들이 910에서 사용될 수 있다. 제1 길이 l1는, 심벌 xi를 인코딩할 때, 제1 모델에 의해 추가된 가상 코드워드에 추가된 추가 코드워드 길이(즉, 비트들)를 포함하도록 업데이트된다. 제2 길이 l2는, 심벌 xi를 인코딩할 때, 제2 모델에 의해 추가된 가상 코드워드에 추가된 추가 코드워드 길이(즉, 비트들)를 포함하도록 업데이트된다. 프로세스(900)는, 각각, l1 = l1-log(p1(xi|xi-1)) 및 l2 = l2-log(p2(xi|xi-1))를 사용하여, 제1 길이 l1 및 제2 길이 l2를 업데이트한다. 구현에서, 값들 -log(p1(xi|xi-1)) 및 -log(p2(xi|xi-1))은 룩업 테이블을 사용함으로써 컴퓨팅 및/또는 근사화될 수 있다. 확률들 p1(xi│xi-1) 및 p2(xi|xi-1)는 0과 1 사이의 확률들이라는 것을 주의한다. p1(xi│xi-1) 및 p2(xi|xi-1)이 각각 8-비트 정수를 사용하여 표현 및/또는 근사화되는 경우(예를 들어, 이들이 고정-소수점 표현들을 갖는다면), -log(p1(xi|xi-1)) 및 -log(p2(xi|xi-1)) 둘 모두는 8-비트 정수들을 입력들로 취하는 룩업 테이블을 사용하여 추정될 수 있으며, 여기서, 각각의 입력은 확률 값에 대응한다. 일반적으로, 룩업 테이블의 사이즈는 p1(xi│xi-1) 및 p2(xi|xi-1)의 고정 소수점 표현의 폭에 좌우된다. 즉, 폭이 더 클수록, -log(p1(xi|xi-1)) 및 -log(p2(xi|xi-1))을 추정할 시의 정확도가 더 높아진다. At 910 , the process 900 updates the first length l 1 and the second length l 2 . As described above, virtual arithmetic encoders may be used at 910 . The first length l 1 is updated to include the additional codeword length (ie bits) added to the virtual codeword added by the first model when encoding the symbol x i . The second length l 2 is updated to include the additional codeword length (ie, bits) added to the virtual codeword added by the second model when encoding the symbol x i . Process 900 computes, respectively, l 1 = l 1 -log(p 1 (x i |x i-1 )) and l 2 = l 2 -log(p 2 (x i |x i-1 )) to update the first length l 1 and the second length l 2 . In an implementation, the values -log(p 1 (x i |x i-1 )) and -log(p 2 (x i |x i-1 )) may be computed and/or approximated by using a lookup table. The probability p 1 (x i │x i- 1) and p 2 (x i | x i -1) will note that the probability between 0 and 1. If p 1 (x i |x i-1 ) and p 2 (x i |x i-1 ) are each expressed and/or approximated using an 8-bit integer (eg, they represent fixed-point representations ), -log(p 1 (x i |x i-1 )) and -log(p 2 (x i |x i-1 )) both yield a lookup table that takes 8-bit integers as inputs. can be estimated using , where each input corresponds to a probability value. In general, the size of the look-up table is p 1 (x i │x i- 1) and p 2 (x i | x i -1) depends on the width of the fixed-point representation. That is, the larger the width, the higher the accuracy when estimating -log(p 1 (x i |x i-1 )) and -log(p 2 (x i |x i-1 )).

[00141] 912에서, 카운터 i는 다음 심벌 xi+1이 프로세싱되도록 증분된다. 914에서, 모든 심벌들이 프로세싱된 경우(즉, i = n + 1), 프로세스는 종료된다. 그렇지 않으면, 프로세스는 다음 심벌을 프로세싱하기 위해 904로 리턴한다.At 912 , counter i is incremented such that the next symbol x i +1 is processed. At 914, if all symbols have been processed (ie, i = n + 1), the process ends. Otherwise, the process returns to 904 to process the next symbol.

[00142] 도 10은 본 개시내용의 구현에 따른, 심벌들의 시퀀스를 디코딩하기 위한 프로세스(1000)의 흐름도이다. 프로세스(1000)는 디코더(500)와 같은 디코더에서 구현될 수 있다. 프로세스(1000)는 수신국에 의해 구현될 수 있다. 프로세스(900)는, 예를 들어, 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로서 구현될 수 있다. 소프트웨어 프로그램은 머신-판독가능 명령들을 포함할 수 있으며, 그 머신-판독가능 명령들은 메모리(204) 또는 이차 저장소(214)와 같은 메모리에 저장될 수 있고, CPU(202)와 같은 프로세서에 의해 실행되어, 컴퓨팅 디바이스로 하여금 프로세스(900)를 수행하게 할 수 있다. 프로세스(900)는 특수 하드웨어 또는 펌웨어를 사용하여 구현될 수 있다. 일부 컴퓨팅 디바이스들은 다수의 메모리들, 다수의 프로세서들, 또는 둘 모두를 가질 수 있다. 프로세스(1000)의 단계들 또는 동작들은 상이한 프로세서들, 메모리들, 또는 둘 모두를 사용하여 분배될 수 있다. 단수형의 용어들 "프로세서” 또는 "메모리"의 사용은, 하나의 프로세서 또는 하나의 메모리를 갖는 컴퓨팅 디바이스들 뿐만 아니라, 언급된 단계들의 일부 또는 전부의 수행에 사용될 수 있는 다수의 프로세서들 또는 다수의 메모리들을 갖는 디바이스들을 포함한다. 10 is a flow diagram of a process 1000 for decoding a sequence of symbols, according to an implementation of the present disclosure. Process 1000 may be implemented in a decoder, such as decoder 500 . Process 1000 may be implemented by a receiving station. Process 900 may be implemented, for example, as a software program that may be executed by computing devices. A software program may include machine-readable instructions, which may be stored in a memory, such as memory 204 or secondary storage 214 , and executed by a processor, such as CPU 202 . may cause the computing device to perform process 900 . Process 900 may be implemented using specialized hardware or firmware. Some computing devices may have multiple memories, multiple processors, or both. The steps or operations of process 1000 may be distributed using different processors, memories, or both. Use of the terms "processor" or "memory" in the singular refers to a plurality of processors or a plurality of computing devices that may be used in performing some or all of the recited steps, as well as one processor or computing devices having one memory. devices having memories.

[00143] 프로세스(1000)는 인코딩된 비트스트림으로부터 심벌들의 시퀀스를 디코딩하기 위해 사용될 수 있다. 예를 들어, 프로세스(1000)는 도 5의 압축된 비트스트림(420)과 같은 인코딩된 비트스트림을 수신할 수 있다. 프로세스(1000)는 프로세스(900)로서 단계들(902-906 및 910-914)과 유사한 단계들을 포함할 수 있다. 유사한 단계들에 대한 설명들은 생략된다. 단계(908) 대신에, 프로세스(1000)는 단계(1002)를 포함한다. 단계(1002)에서, 프로세스(1000)는 컴퓨팅된 혼합 조건부 확률(즉,

Figure 112019125287649-pct00040
)을 사용하여 인코딩된 비트스트림으로부터 심벌 xi를 디코딩한다. The process 1000 may be used to decode a sequence of symbols from an encoded bitstream. For example, process 1000 may receive an encoded bitstream, such as compressed bitstream 420 of FIG. 5 . Process 1000 may include steps similar to steps 902-906 and 910-914 as process 900 . Descriptions of similar steps are omitted. Instead of step 908 , process 1000 includes step 1002 . At step 1002, process 1000 computes the mixed conditional probability (i.e.,
Figure 112019125287649-pct00040
) to decode the symbol x i from the encoded bitstream.

[00144] 프로세스들(900 또는 1000)의 일부 구현들에서, 단계(906)는, 연산 복잡성을 더 절감(예를 들어, 감소)시키거나 또는 스루풋을 개선하기 위해, 모든 k>1 단계들마다 수행될 수 있다. 스루풋은 하나의 클록 사이클에서 프로세싱(코딩 또는 디코딩)된 심벌들의 수로 측정될 수 있다. 예를 들어, k = 2인 경우, 단계(906)는 i가 홀수 또는 짝수일 때만 수행될 수 있지만, 두 경우 모두에 수행되지는 않는다. 프로세스들(900 또는 1000)의 다른 구현에서, 단계(906)는 i의 모든 가능한 인덱스들의 미리 정의된 서브세트에서 수행될 수 있다.In some implementations of processes 900 or 1000 , step 906 is performed every k>1 steps to further reduce (eg, reduce) computational complexity or improve throughput. can be performed. Throughput can be measured as the number of symbols processed (coded or decoded) in one clock cycle. For example, if k = 2, step 906 may be performed only when i is odd or even, but not both. In another implementation of processes 900 or 1000, step 906 may be performed on a predefined subset of all possible indices of i.

[00145] 전술된 내용은 모델들의 균일한 가중치의 사용을 설명하였다. 그러나, 본 개시내용에 따른 구현들은 불균일한 이전의 가중치들을 사용할 수 있다. M개의 모델들을 사용하는 불균일한 가중치에서, 가중치들 wk 중 적어도 일부는 1/M과 동일하지 않은 값들로 세팅될 수 있다(즉,

Figure 112019125287649-pct00041
). [00145] The foregoing has described the use of uniform weights of models. However, implementations according to the present disclosure may use non-uniform prior weights. In non-uniform weights using M models, at least some of the weights w k may be set to values not equal to 1/M (i.e.,
Figure 112019125287649-pct00041
).

[00146] 간략화하기 위해, 전술된 내용(예를 들어, 프로세스(900 및 1000))은 2개의 모델들: 제1 모델 및 제2 모델의 사용을 설명한다. 그러나, 본 개시내용에 따른 구현들은 임의의 수의 모델들로 확장될 수 있다. 예를 들어, 모델의 수 M ≥ 2에 대해, 그리고 균일한 가중 인자들 wk(즉,

Figure 112019125287649-pct00042
)를 가정하면, 가중치들 wi,k는 공식 (14)를 사용하여 근사화될 수 있다.[00146] For simplicity, the foregoing (eg, processes 900 and 1000 ) describes the use of two models: a first model and a second model. However, implementations according to the present disclosure may be extended to any number of models. For example, for the number of models M ≥ 2, and for uniform weighting factors w k (i.e.,
Figure 112019125287649-pct00042
), the weights w i,k can be approximated using formula (14).

Figure 112019125287649-pct00043
Figure 112019125287649-pct00043

[00147] 공식 14에서, lk(xi-1)는 서브시퀀스 xi-1을 인코딩하기 위해, 모델 k(1 ≤ k ≤ M)를 사용하는 것으로부터 기인하는 코드워드 길이를 비트 단위로 나타낸다. [00147] In Equation 14, l k (x i-1 ) denotes the codeword length in bits resulting from using the model k(1 ≤ k ≤ M) to encode the subsequence x i-1 . indicates.

[00148] 2개 초과의 모델들이 혼합되는 경우, 조건부 확률들을 컴퓨팅(즉, 결정, 생성 등)하기 위해, 이진 트리가 사용될 수 있다. 즉, 방정식 (8)의 인자들 wi,kpk(xi|xi-1)는 위에서 설명된 프로세스를 사용하여 재귀적으로 컴퓨팅될 수 있다. 재귀적으로 컴퓨팅하는 것은 중간 조건부 확률들을 생성하기 위해, 한 번에 2개의 모델들의 확률들을 조합하는 것을 의미하다. 이어서, 중간 조건부 확률들은 한 번에 2개씩 조합된다. 모델들의 수 M이 2의 거듭제곱인 경우(즉, M = 2m), 방정식 (8)의 인자들 wi, k pk(xi|xi-1)는 도 11에 대하여 설명되는 바와 같은 전 이진 트리 상에 위에서 설명된 프로세스들을 적용함으로써 재귀적으로 컴퓨팅될 수 있다.[00148] A binary tree may be used to compute (ie, determine, generate, etc.) conditional probabilities when more than two models are mixed. That is, the factors w i,k p k (x i |x i-1 ) of equation (8) can be recursively computed using the process described above. Computing recursively means combining the probabilities of two models at a time to produce intermediate conditional probabilities. The intermediate conditional probabilities are then combined two at a time. If the number of models M is a power of two (ie, M = 2 m ), then the factors w i , kp k (x i |x i-1 ) of equation (8) are as described with respect to FIG. 11 . It can be computed recursively by applying the processes described above on the whole binary tree.

[00149] 도 11은 본 개시내용의 구현에 따른, 조건부 확률들의 이진 트리(1100)의 예의 다이어그램이다. 이진 트리(1100)에서, 8개의 모델들이 혼합된다. 8개의 모델들의 확률들은 p_1 내지 p_8이다. 모든 각각의 2개의 확률들이 먼저 혼합된다. 예를 들어, 확률들(1102 및 1104)은 위에서 설명된 바와 같이 혼합되어 중간 조건부 확률(1106)을 생성하고, 그 중간 조건부 확률(1106)은 이어서, 중간 조건부 확률(1108)과 조합되어 중간 조건부 확률(1110)을 생성하고, 최종 조건부 확률(1112)이 컴퓨팅될 때까지 마찬가지로 진행된다. 최종 조건부 확률(1112)은 인코딩 및/또는 디코딩에 사용될 수 있다. 예를 들어, 최종 조건부 확률(1112)은 프로세스(900)의 908 및/또는 프로세스(1000)의 1002에서 사용될 수 있다.11 is a diagram of an example of a binary tree 1100 of conditional probabilities, according to an implementation of the present disclosure. In the binary tree 1100, eight models are mixed. The probabilities of the eight models are p_1 to p_8. All of the respective two probabilities are mixed first. For example, probabilities 1102 and 1104 are mixed as described above to produce intermediate conditional probability 1106, which intermediate conditional probability 1106 is then combined with intermediate conditional probability 1108 to form an intermediate conditional probability 1106. Probability 1110 is generated, and so on until the final conditional probability 1112 is computed. The final conditional probability 1112 may be used for encoding and/or decoding. For example, the final conditional probability 1112 may be used at 908 of process 900 and/or 1002 of process 1000 .

[00150] 도 11에 대하여 설명된 프로세스는, 예를 들어, 일부 모델들이 다른 모델들보다 더 유용한 것으로 알려져 있는 상황들에서 사용될 수 있다. 일부 모델들이 다른 모델들보다 더 유용한 것으로 알려져 있는 경우, 균일한 가중치는 바람직하지 않을 수 있다. 하나의 모델에 더 많은 가중치를 할당하기 위해, 모델은 트리에서 복제될 수 있다. The process described with respect to FIG. 11 may be used, for example, in situations where some models are known to be more useful than others. Uniform weights may be undesirable if some models are known to be more useful than others. To assign more weights to one model, the model can be replicated in the tree.

[00151] 예로서 도 11을 참조하면, 모델들 p_1 내지 p_6 및 p_8은 별개일 수 있고, p_6은 다른 모델들보다 더 유용한 것으로 알려져 있다. p_6이 더 유용하므로, p_6이 트리에서 복제될 수 있으며: p_7은 p_6의 듀플리케이트이다. 따라서, 확률 p_6을 갖는 모델은 엔트로피 인코딩을 위한 혼합에서 가중치가 2배로 할당된다. Referring to FIG. 11 as an example, it is known that models p_1 to p_6 and p_8 may be distinct, and p_6 is more useful than other models. Since p_6 is more useful, p_6 can be duplicated in the tree: p_7 is a duplicate of p_6. Thus, a model with probability p_6 is assigned a double weight in the mix for entropy encoding.

[00152] 다른 예로서, 예를 들어, 2개의 모델들, 즉 모델 A 및 모델 B가 있고, 2개의 모델들에 대한 이전 가중치들이

Figure 112019125287649-pct00044
인 것으로 가정한다. 본 개시내용에 따른 구현들은, 모델 세트를 4개의 모델들의 세트로 확장할 수 있으며, 여기서, 제1 모델은 모델 A에 대응하고, 나머지 3개의 모델들은 모델 B에 대응하며, 4개의 모델들에 대한 이전 가중치는
Figure 112019125287649-pct00045
이다.[00152] As another example, for example, there are two models, model A and model B, and the previous weights for the two models are
Figure 112019125287649-pct00044
is assumed to be Implementations according to the present disclosure may extend a model set to a set of four models, where the first model corresponds to model A, the remaining three models correspond to model B, and the four models correspond to The previous weight for
Figure 112019125287649-pct00045
am.

[00153] 전술된 내용에서, 고정 소스들이 설명된다. 고정 소스는 심벌 xi에 대한 혼합이 서브시퀀스 xi-1의 모든 이력을 사용하여 wi,k를 결정하는 것을 의미한다. 따라서, 통계는 코딩 프로세스의 소스에 걸쳐 변화되지 않는다. 그러나, 소스들이 비-고정형일 수 있는 경우들에서, 본 개시내용에 따른 구현들은 슬라이딩 윈도우를 사용하여, 더 양호한 압축 성능을 위해 로컬 통계에 적응할 수 있다. 슬라이딩 윈도우는 혼합 프로세스에서 사용될 이전 비트들의 수(즉, 이전 비트들의 수의 확률들)를 표시하는 비트들의 길이 L이다. 즉, 슬라이딩 윈도우는 상기하기 위해 시퀀스 내로 얼마나 많이 되돌아 가야하는지를 표현하며: 슬라이딩 윈도우 내부의 심벌들만이 가중 인자들을 추정하기 위해 사용된다. 더 구체적으로, 슬라이딩 윈도우 내부의 이들 심벌들의 확률들만이 가중 인자들을 추정하기 위해 사용된다.[00153] In the foregoing, fixed sources are described. A fixed source means that the mixture for symbol x i determines w i,k using all the histories of subsequence x i-1 . Thus, the statistics do not vary across the source of the coding process. However, in cases where the sources may be non-fixed, implementations according to the present disclosure may use a sliding window to adapt to local statistics for better compression performance. The sliding window is a length L of bits indicating the number of previous bits (ie the probabilities of the number of previous bits) to be used in the mixing process. That is, the sliding window represents how much back into the sequence to recall: only the symbols inside the sliding window are used to estimate the weighting factors. More specifically, only the probabilities of these symbols inside the sliding window are used to estimate the weighting factors.

[00154] 따라서, xi를 코딩하기 위해

Figure 112019125287649-pct00046
를 사용하는 대신에,
Figure 112019125287649-pct00047
가 사용되며, 여기서 길이 L ≥ 1은 슬라이딩 윈도우의 길이이고, 여기서, xi-L … xi-1은 비트 i-L에서 시작하여 비트 i-l에서 끝나는 서브시퀀스이다. 길이 L이 알려진 경우, 본 개시내용에 따른 프로세스는 2개의 모델들에 대해 다음의 단계들을 수행할 수 있다.[00154] Thus, to code x i
Figure 112019125287649-pct00046
Instead of using
Figure 112019125287649-pct00047
is used, where the length L ≥ 1 is the length of the sliding window, where x iL ... x i-1 is a subsequence starting at bit iL and ending at bit il. When the length L is known, the process according to the present disclosure may perform the following steps for the two models.

[00155] 단계 1에서, i = 1, l1 = 0, l2 = 0을 초기화한다. 단계 1은 도 9의 902에 대하여 설명된 바와 같을 수 있다. 단계 1에서, 프로세스는 또한, l1,-L = 0 및 l2,-L = 0을 초기화한다.[00155] In step 1, i = 1, l 1 = 0, l 2 = 0 is initialized. Step 1 may be as described with respect to 902 of FIG. 9 . In step 1, the process also initializes l 1,-L = 0 and l 2,-L = 0.

[00156] 단계 2에서, 프로세스는 제1 모델 및 제2 모델에 따라

Figure 112019125287649-pct00048
Figure 112019125287649-pct00049
를 컴퓨팅한다.[00156] In step 2, the process is performed according to the first model and the second model
Figure 112019125287649-pct00048
and
Figure 112019125287649-pct00049
to compute

[00157] 단계 3에서, 프로세스는 방정식들 (15) 및 (16)에 따라 혼합 확률

Figure 112019125287649-pct00050
을 컴퓨팅한다.[00157] In step 3, the process calculates the mixing probability according to equations (15) and (16)
Figure 112019125287649-pct00050
to compute

Figure 112019125287649-pct00051
Figure 112019125287649-pct00051

Figure 112019125287649-pct00052
Figure 112019125287649-pct00052

[00158] 단계 4에서, 프로세스는

Figure 112019125287649-pct00053
를 사용하여 xi를 (인코더에 의해 구현될 때) 인코딩 또는 (디코더에 의해 구현될 때) 디코딩한다.[00158] In step 4, the process
Figure 112019125287649-pct00053
is used to encode (when implemented by an encoder) or decode (when implemented by a decoder) x i .

[00159] 단계 5에서, 프로세스는 l1

Figure 112019125287649-pct00054
로 업데이트하고, l2
Figure 112019125287649-pct00055
로 업데이트한다. 프로세스가 윈도우 외부에서 인코딩/디코딩하고 있다면(즉, i > L), 프로세스는
Figure 112019125287649-pct00056
Figure 112019125287649-pct00057
를 업데이트한다.[00159] In step 5, the process takes l 1
Figure 112019125287649-pct00054
update to , and change l 2 to
Figure 112019125287649-pct00055
update to If the process is encoding/decoding outside the window (i.e. i > L), the process
Figure 112019125287649-pct00056
and
Figure 112019125287649-pct00057
update

[00160] 단계 6에서, i는 1만큼 증분된다(즉, i = i+1).[00160] In step 6, i is incremented by one (ie, i = i+1).

[00161] 단계 7에서, 프로세스는 시퀀스 xn의 모든 비트들이 프로세싱될 때까지(즉, i = n+1) 단계들 2-6을 반복한다.[00161] In step 7, the process repeats steps 2-6 until all bits of the sequence x n have been processed (ie, i = n+1).

[00162] 위에서 설명된 슬라이딩 윈도우에서,

Figure 112019125287649-pct00058
이고,
Figure 112019125287649-pct00059
이다. 따라서,
Figure 112019125287649-pct00060
는 x1-L…xi-1을 코딩하기 위해 제1 모델을 사용하여 생성된 코드워드 길이로서 간주될 수 있고,
Figure 112019125287649-pct00061
은 x1-L…xi-1을 코딩하기 위해 제2 모델을 사용하여 생성된 코드워드 길이로서 간주될 수 있다.[00162] In the sliding window described above,
Figure 112019125287649-pct00058
ego,
Figure 112019125287649-pct00059
am. thus,
Figure 112019125287649-pct00060
is x 1-L … can be considered as the codeword length generated using the first model to code x i-1 ,
Figure 112019125287649-pct00061
Silver x 1-L … It can be considered as the codeword length generated using the second model to code x i-1 .

[00163] 도 12는 본 개시내용의 구현에 따른, 심벌들의 시퀀스를 엔트로피 코딩하기 위한 프로세스(1200)의 흐름도이다. 시퀀스는 시퀀스들 xn에 대해 위에서 설명된 바와 같을 수 있다. 프로세스(1200)는 인코더 또는 디코더에 의해 구현될 수 있다. 인코더에 의해 구현될 때, "코딩"은 도 4의 압축된 비트스트림(420)과 같은 인코딩된 비트스트림으로의 인코딩을 의미한다. 디코더에 의해 구현될 때, "코딩"은 도 5의 압축된 비트스트림(420)과 같은 인코딩된 비트스트림으로부터의 디코딩을 의미한다.12 is a flow diagram of a process 1200 for entropy coding a sequence of symbols, according to an implementation of the present disclosure. The sequence may be as described above for sequences x n . Process 1200 may be implemented by an encoder or decoder. When implemented by an encoder, "coding" means encoding into an encoded bitstream, such as compressed bitstream 420 of FIG. When implemented by a decoder, “coding” means decoding from an encoded bitstream, such as compressed bitstream 420 of FIG. 5 .

[00164] 인코더에 의해 인코딩될 때, 프로세스(1200)는 도 4의 양자화 스테이지(406)와 같은 양자화 단계로부터 심벌들의 시퀀스를 수신할 수 있다. 다른 예에서, 프로세스(1200)는 인코딩될 값(예를 들어, 양자화된 변환 계수)을 수신할 수 있고, 수신된 값으로부터 심벌들의 시퀀스를 생성할 수 있다. When encoded by an encoder, process 1200 may receive a sequence of symbols from a quantization step, such as quantization stage 406 of FIG. 4 . In another example, process 1200 may receive a value to be encoded (eg, a quantized transform coefficient) and generate a sequence of symbols from the received value.

[00165] 1202에서, 프로세스(1200)는 혼합될 모델들을 선택한다. 모델들은 제1 모델 및 제2 모델을 포함할 수 있다. 본 개시내용에서 사용되는 바와 같이, "선택"은 식별, 구성, 결정, 특정, 또는 무엇이든 임의의 방식의 다른 선택을 의미한다.At 1202 , the process 1200 selects models to be blended. The models may include a first model and a second model. As used herein, “selection” means identifying, organizing, determining, specifying, or otherwise selecting in any way whatsoever.

[00166] 적어도 심벌(예를 들어, xi)에 대해, 심벌들의 포지션(예를 들어, i)에서, 프로세스(1200)는 제1 모델 및 제2 모델을 사용하여 혼합 확률을 결정하기 위해 단계들(1204-1208)을 포함하는 단계들을 수행한다. 단계들(1204-1208)은 심벌들의 시퀀스의 모든 심벌들에 대해 수행될 수 있다.[00166] At least for a symbol (eg, x i ), at a position (eg, i) of the symbols, the process 1200 includes using the first model and the second model to determine a mixing probability Steps including 1204-1208 are performed. Steps 1204 - 1208 may be performed for all symbols of the sequence of symbols.

[00167] 1204에서, 프로세스(1200)는 제1 모델을 사용하여, 심벌을 인코딩하기 위한 제1 조건부 확률을 결정한다. 제1 조건부 확률은 시퀀스의 서브시퀀스가 주어진 심벌의 조건부 확률이다. 예에서, 시퀀스의 서브시퀀스는 서브시퀀스 xi-1을 의미할 수 있다. 슬라이딩 윈도우가 사용되는 다른 예에서, 시퀀스의 서브시퀀스는 포지션 이전의 시퀀스의 미리 결정된 수의 심벌들로 구성된다. 미리 결정된 수의 심벌들은 슬라이딩 윈도우 길이 L에 대하여 설명된 바와 같을 수 있다. 따라서, 시퀀스의 서브시퀀스는 서브시퀀스 xi-L … xi-1일 수 있다. 1206에서, 프로세스(1200)는 제2 모델을 사용하여, 심벌을 인코딩하기 위한 제2 조건부 확률을 결정한다. 제2 조건부 확률은 1204에 대하여 설명된 바와 같이 서브시퀀스가 주어진 심벌의 조건부 확률이다.At 1204 , the process 1200 determines, using the first model, a first conditional probability for encoding the symbol. The first conditional probability is the conditional probability of a symbol given a subsequence of the sequence. In an example, a subsequence of a sequence may mean a subsequence x i-1 . In another example where a sliding window is used, the subsequence of the sequence consists of a predetermined number of symbols of the sequence prior to the position. The predetermined number of symbols may be as described for the sliding window length L. Thus, the subsequence of the sequence is subsequence x iL ... x i-1 . At 1206 , the process 1200 determines, using the second model, a second conditional probability for encoding the symbol. The second conditional probability is the conditional probability of the symbol given the subsequence as described with respect to 1204 .

[00168] 1208에서, 프로세스(1200)는 제1 조건부 확률 및 제2 조건부 확률을 사용하여, 심벌을 인코딩하기 위한 혼합 확률을 결정한다. 혼합 확률은 도 9의 906에 대하여 설명된 바와 같을 수 있다. 제1 조건부 확률 및 제2 조건부 확률은 제1 가중치 및 제2 가중치를 사용하는 선형 조합을 사용하여 조합될 수 있다. 구현에서, 적어도 제1 가중치는 심벌까지의 시퀀스의 서브시퀀스를 인코딩하기 위한 길이를 결정하기 위해 가상 산술 코딩을 사용하여 결정(즉, 근사화)될 수 있다. 제1 가중치는 길이를 사용하여 결정될 수 있다. 예에서, 가중치(예를 들어, 제1 가중치 및/또는 제2 가중치)를 결정하는 것은, 심벌까지 시퀀스의 서브시퀀스를 인코딩한 것으로부터 기인하는 레이트를 결정하고, 결정된 레이트를 사용하여 제1 가중치를 결정하는 것을 포함할 수 있다. 예에서, 레이트는 레이트 추정기를 사용하여 결정될 수 있다. 예에서, 레이트 추정기는 가상 산술 인코더일 수 있다. 예에서, 레이트를 결정하는 것은, 입력들을 확률 값들로 하여 테이블(예를 들어, 룩업 테이블)을 룩업하는 것을 포함할 수 있다.At 1208 , the process 1200 determines a mixing probability for encoding the symbol using the first conditional probability and the second conditional probability. The mixing probability may be as described for 906 in FIG. 9 . The first conditional probability and the second conditional probability may be combined using a linear combination using the first weight and the second weight. In an implementation, at least the first weight may be determined (ie, approximated) using virtual arithmetic coding to determine a length for encoding a subsequence of the sequence up to symbols. The first weight may be determined using the length. In an example, determining a weight (eg, a first weight and/or a second weight) includes determining a rate resulting from encoding a subsequence of the sequence up to symbols, and using the determined rate to determine the first weight may include determining In an example, the rate may be determined using a rate estimator. In an example, the rate estimator may be a virtual arithmetic encoder. In an example, determining the rate may include looking up a table (eg, a lookup table) with the inputs as probability values.

[00169] 1210에서, 프로세스(1200)는, 예를 들어, 908(인코더에 의해 구현될 때) 및 1002(디코더에 의해 구현될 때)에 대하여 설명된 바와 같이 혼합 확률을 사용하여 심벌을 코딩한다. At 1210 , process 1200 codes the symbol using mixing probabilities, for example, as described with respect to 908 (when implemented by an encoder) and 1002 (when implemented by a decoder). .

[00170] 프로세스(1200)의 구현에서, 모델은 제3 모델 및 제4 모델을 포함할 수 있으며, 제1 모델 및 제2 모델을 사용하여 혼합 확률을 결정하는 것은, 제1 모델과 제2 모델을 혼합하여 제1 중간 조건부 확률을 생성하는 것, 제3 모델과 제4 모델을 혼합하여 제2 중간 조건부 확률을 생성하는 것, 및 제1 중간 조건부 확률과 제2 중간 조건부 확률을 혼합하여, 심벌을 인코딩하는데 사용될 조건부 확률을 생성하는 것을 포함할 수 있다. 구현에서, 제1 모델 및 제4 모델은 동일한 모델이다. In an implementation of process 1200 , the model may include a third model and a fourth model, wherein determining the mixing probability using the first model and the second model comprises: the first model and the second model mixing to produce a first intermediate conditional probability, mixing the third model and the fourth model to produce a second intermediate conditional probability, and mixing the first intermediate conditional probability and the second intermediate conditional probability, generating a conditional probability to be used to encode In an implementation, the first model and the fourth model are the same model.

[00171] CTW(Context-tree weighting)로서 알려진 기술은 혼합을 사용하는 무손실 데이터 압축 알고리즘이다. 길이 n의 이진 시퀀스 xn을 코딩하기 위해, CTW는 2K개의 확률 함수들 pi(xn)의 선형 혼합으로서 확률 함수 p(xn)을 추정하며, 이들 각각은 유한 메모리 이진 트리 소스를 가정하여 추정되고, 동일한 가중 인자를 갖는다. 대조적으로, 본 개시내용에 따른 구현들은 임의의 모델들과 함께 작업할 수 있다. 또한, 본원에서 설명된 심벌-별 가중 인자 연산은 서브시퀀스의 확률들을 근사화하기 위해 길이 함수들을 사용할 수 있으며, 이는 결합 확률들을 유지 및 컴퓨팅하는 기존 솔루션들에 비해 훨씬 단순화된다.[00171] A technique known as context-tree weighting (CTW) is a lossless data compression algorithm that uses blending. Length for coding the n binary sequence x n of, CTW is 2 K of a probability function of p i (x n) linear mixed as a probability function p (x n) the estimated and each is finite memory a binary tree sources thereof are assumed and have the same weighting factor. In contrast, implementations according to the present disclosure may work with any models. Also, the per-symbol weighting factor operation described herein can use length functions to approximate the probabilities of the subsequence, which is much simplified compared to existing solutions of maintaining and computing joint probabilities.

[00172] 위에서 언급된 바와 같이, 콘텍스트 모델링의 주요 설계 과제 또는 문제는 2개의 상충되는 목적들 사이의 균형을 맞추는 것이며, 2개의 상충되는 목적들은 1) 더 많은 콘텍스트들을 추가함으로써 압축 성능을 개선하는 것, 및 2) 콘텍스트들과 연관된 오버헤드 비용을 감소시키는 것이다. [00172] As mentioned above, a major design challenge or problem in context modeling is to strike a balance between two conflicting objectives: 1) improving compression performance by adding more contexts. and 2) reducing the overhead cost associated with contexts.

[00173] 비-제한적 예시로서 계수 토큰 트리(700)를 사용하여, 코딩 시스템에서의 콘텍스트들의 수의 영향, 및 콘텍스트들의 수와 코딩 성능 사이의 관계에 대한 수학적 분석이 이제 주어진다.[00173] Using the coefficient token tree 700 as a non-limiting example, a mathematical analysis is now given of the effect of the number of contexts in a coding system and the relationship between the number of contexts and coding performance.

[00174] 콘텍스트 c에 대해, Pc = (Pc,0, …, Pc,11)이 콘텍스트로부터 획득된 확률 분포를 나타내는 것으로 하며, 여기서, Pc,i는 i = 0, …, 10(즉, 표 1에 나열된 토큰들)에 대한 토큰 i의 확률을 나타내고, Pc,11은 EOB_TOKEN의 확률을 나타낸다. 편의를 위해, EOB_TOKEN은 토큰 11로서 지칭된다. 이제 프레임에서 콘텍스트 c가 나타나고 nc 번 사용된다고 가정한다. 예를 들어, 콘텍스트와 연관된 조건들이 충족되고/되거나 프레임에 대해 이용 가능한 경우, 콘텍스트가 "나타난다". 콘텍스트는, 예를 들어, 콘텍스트와 연관된 확률 분포가 프레임의 적어도 하나의 블록의 코딩에 사용될 때 "사용된다". Qc = (qc,0, …, qc,11)이 콘텍스트 c 하에서 계수 토큰들의 경험적(즉, 관찰된) 분포를 나타내는 것으로 한다. 즉, qc,i는 토큰 i가 콘텍스트 c 하에서 프레임에 나타나는 횟수를 나타내며,

Figure 112019125287649-pct00062
(즉, 콘텍스트 c 하에서 토큰 i가 프레임에 나타난 횟수를 콘텍스트 c가 나타난 횟수로 제산한 것)에 의해 주어질 수 있다. 확률 분포 Pc 및 Qc는 각각, 토큰을 코딩하는데 사용되는 코딩 분포 및 실제 분포로서 지칭될 수 있다.[00174] For context c, let P c = (P c,0 , ..., P c,11 ) denote the probability distribution obtained from the context, where P c,i is i = 0, ... , represents the probability of token i for 10 (ie, tokens listed in Table 1), and P c,11 represents the probability of EOB_TOKEN. For convenience, EOB_TOKEN is referred to as token 11. Now suppose that context c appears in the frame and is used n c times. For example, a context “appears” when conditions associated with the context are met and/or is available for the frame. A context is “used” when, for example, a probability distribution associated with the context is used for coding of at least one block of a frame. Let Q c = (q c,0 , ..., q c,11 ) represent the empirical (ie, observed) distribution of coefficient tokens under context c. That is, q c,i represents the number of times token i appears in a frame under context c,
Figure 112019125287649-pct00062
(ie, the number of times token i appeared in a frame under context c divided by the number of times context c appeared). The probability distributions P c and Q c may be referred to as the coding distribution and the actual distribution used to code the token, respectively.

[00175] 코딩 분포 Pc가 주어지면, 산술 코딩을 사용하여 달성 가능한 압축 성능은

Figure 112019125287649-pct00063
에 의해 주어질 수 있다. 실제 분포 Qc,
Figure 112019125287649-pct00064
, 로그 법칙 로그(분수) = 로그(분자) - 로그(분모)를 사용하여, 달성 가능한 압축 성능이 방정식 (17)에서와 같이 감소될 수 있다.[00175] Given a coding distribution P c , the compression performance achievable using arithmetic coding is
Figure 112019125287649-pct00063
can be given by true distribution Q c ,
Figure 112019125287649-pct00064
, logarithm Using log(fraction) = log(numerator) - log(denominator), the achievable compression performance can be reduced as in equation (17).

Figure 112019125287649-pct00065
Figure 112019125287649-pct00065

[00176] 방정식 (17)의 우측의 첫 번째 항

Figure 112019125287649-pct00066
은 실제 분포 Qc의 엔트로피 H(Qc)로서 인식될 수 있다. 방정식 (1)의 우측의 두 번째 항
Figure 112019125287649-pct00067
은 분포들 Pc와 Qc 사이의 동일한 알파벳(예를 들어, 계수 토큰 트리(700)의 토큰들) 상에 정의된 쿨백-라이블러(KL) 발산 또는 상대적 엔트로피로서 인식될 수 있다. KL 발산은 D(Qc||Pc)로 표시될 수 있다. 따라서, 산술 코딩을 사용하여 달성 가능한 압축 성능은 방정식 (18)을 사용하여 다시 기재될 수 있다.[00176] The first term on the right side of equation (17)
Figure 112019125287649-pct00066
can be recognized as the entropy H(Q c ) of the actual distribution Q c . second term from the right of equation (1)
Figure 112019125287649-pct00067
can be recognized as a Kullback-Leibler (KL) divergence or relative entropy defined on the same alphabet (eg, tokens of coefficient token tree 700 ) between distributions P c and Q c . The KL divergence can be expressed as D(Q c ||P c ). Thus, the compression performance achievable using arithmetic coding can be rewritten using equation (18).

Figure 112019125287649-pct00068
Figure 112019125287649-pct00068

[00177] 두 번째 항(즉, D(Qc||Pc))은, 가장 최적의 확률 분포(즉, 실제 분포 Qc)를 사용하는 대신에 다른 덜 최적의 확률 분포(즉, 코딩 분포 Pc)를 사용할 때 발생하는 압축 성능의 손실을 표시한다. 실제 확률 분포와 코딩 확률 분포 사이에 차이들이 있는 경우, 압축 성능 손실이 발생된다. 손실은 시퀀스 길이가 인코딩됨에 따라 선형적으로 증가된다.[00177] The second term (ie, D(Q c ||P c )), instead of using the most optimal probability distribution (ie, the actual distribution Q c ), gives the other less optimal probability distribution (ie, the coding distribution) Shows the loss of compression performance when using P c ). If there are differences between the actual probability distribution and the coding probability distribution, compression performance loss occurs. The loss increases linearly as the sequence length is encoded.

[00178] 방정식 (18)은 압축 알고리즘들의 설계에 대한 기초로 사용될 수 있다. 즉, 압축 알고리즘은 방정식 (18)을 사용하여 분석된다. 콘텍스트 모델링의 설계는 압축 성능에 직접적인 영향을 미친다. 따라서, 콘텍스트 모델링의 양호한 설계(즉, 콘텍스트들의 최적의 선택)는 양호한 압축 알고리즘을 야기한다. 최적의 콘텍스트 모델링으로, 첫 번째 항 Η(Qc) 및 두 번째 항 D(Qc||Pc)가 최소화된다. [00178] Equation (18) can be used as a basis for the design of compression algorithms. That is, the compression algorithm is analyzed using equation (18). The design of context modeling has a direct impact on compression performance. Thus, a good design of context modeling (ie, optimal selection of contexts) results in a good compression algorithm. With optimal context modeling, the first term Η(Q c ) and the second term D(Q c ||P c ) are minimized.

[00179] 방정식 (18)의 항들 둘 모두(즉, ncΗ(Qc) 및 ncD(Qc||Pc))는 콘텍스트 c가 나타나는 횟수 nc에 따라 선형적으로 증가된다. 엔트로피 코딩의 압축 성능을 개선하기 위해, 방정식 (18)의 Η(Qc) 및 D(Qc||Pc)의 2개의 항들이 가능한 한 작게 되어야 한다는 것이 인식될 수 있다.[00179] Both terms of equation (18) (ie, n c Η(Q c ) and n c D(Q c ||P c )) increase linearly with the number of occurrences n c of the context c. It can be appreciated that in order to improve the compression performance of entropy coding, the two terms of Η(Q c ) and D(Q c ||P c ) in equation (18) should be made as small as possible.

[00180] 두 번째 항 D(Qc||Pc)는 항상 음이 아닌 값이기 때문에, 실제 분포와 코딩 분포가 동등한 경우, 그리고 그 경우에만(즉, Qc ≡ Pc), D(Qc||Pc) = 0이며, 첫 번째 항(즉, ncΗ(Qc))은 임의의 압축 알고리즘에 대한 절대 이론적 하한이다. 다른 방법을 말하자면, 확률 분포 Qc를 갖는 시퀀스 nc가 주어지면, 최상의 가능한 압축은 ncH(Qc)에 의해 주어지고, 다른 확률 분포는 더 양호한 압축을 제공할 수 없다. [00 180] Since the second term D (Q c || P c) is always non-negative value, if the actual distribution and the distribution of the equivalent coding, and only in that case (i.e., Q c ≡ P c), D (Q c ||P c ) = 0, and the first term (ie, n c Η(Q c )) is the absolute theoretical lower bound for any compression algorithm. As a matter of different ways, given a sequence of n c Q c has a probability distribution, the best possible compression is given by H n c (Q c), other probability distributions may not provide better compression.

[00181] 따라서, 양호한 압축 성능을 달성하기 위해, 코딩 분포(Pc)는 실제 분포(Qc)에 가능한 근접하게 되는 것이 바람직하다. 동일한 맥락에서, 실제 분포들은 하나의 프레임에서 다른 프레임으로 변경된다. 따라서, 코딩 분포 Pc는 디코딩될 주어진 프레임의 실제 분포 Qc에 적응되어야 한다. 프레임이 아직 디코딩되지 않았기 때문에, 디코더는 코딩 분포 Pc를 어떻게 조정해야 하는지를 알 수 없다. [00 181] Accordingly, to achieve good compression performance, distributed coding (P c) is preferably as close as possible to the actual distribution (Q c). In the same context, the actual distributions are changed from one frame to another. Accordingly, the coding distribution P c must be adapted to the actual distribution Q c of a given frame to be decoded. Since the frame has not yet been decoded, the decoder does not know how to adjust the coding distribution P c .

[00182] 대신에, 조정된 코딩 분포 Pc가 인코더에 의해 시그널링될 수 있다. 예를 들어, 인코더는 디코딩될 프레임의 프레임 헤더에 조정된 코딩 분포 Pc를 인코딩할 수 있다. 조정된 코딩 분포 Pc를 인코딩하는 것은 인코더가 코딩 분포 Pc의 토큰 확률들 Pc,i를 인코딩한다는 것을 의미할 수 있다.Instead, the adjusted coding distribution P c may be signaled by the encoder. For example, the encoder may encode the adjusted coding distribution P c in the frame header of the frame to be decoded. Encoding the adjusted coding distribution P c may mean that the encoder encodes the token probabilities P c,i of the coding distribution P c .

[00183] 토큰 확률들 Pc,i를 인코딩하기 위한 비트 단위(또는 더 정확하게는 부분 비트 단위)의 비용이 비트 비용 ε > 0에 의해 하한이 설정된다고 가정한다. 즉, 비트 비용 ε은 토큰 확률 Pc,i를 인코딩하는데 요구되는 비트들의 최소의 수이다. Assume that the cost in bits (or more precisely in partial bits) for encoding token probabilities P c,i is lowered by the bit cost ε > 0. That is, the bit cost ε is the minimum number of bits required to encode the token probability P c,i .

[00184] 콘텍스트 c에 대해, 표 1의 12개의 토큰들 및 EOB_TOKEN의 확률들을 포함하는 코딩 분포 Pc를 코딩하는 프레임에 대해 상각(amortize)된 총 비트 비용은 11ε/nc에 의해 주어질 수 있다. 총 비트 비용은 nc에 반비례하며, 알파벳 사이즈(예를 들어, 토큰들의 수)에 따라 선형적으로 증가된다. 코딩 분포 Pc가 확률 분포(즉,

Figure 112019125287649-pct00069
)이므로, 이의 자유도는 알파벳 사이즈(예를 들어, 12개의 토큰들) 마이너스 1과 동일하다. 따라서, 비트 비용 11ε/nc에서 12(토큰들의 수에 대응함) 대신에 11이 있다.[00184] For context c, the total bit cost amortized for the frame coding the coding distribution P c including the 12 tokens of Table 1 and the probabilities of EOB_TOKEN may be given by 11ε/n c . . The total bit cost is inversely proportional to n c and increases linearly with the alphabet size (eg, number of tokens). If the coding distribution P c is a probability distribution (i.e.,
Figure 112019125287649-pct00069
), so its degree of freedom is equal to the alphabetic size (eg, 12 tokens) minus one. Thus, there is 11 instead of 12 (corresponding to the number of tokens) at the bit cost 11ε/n c .

[00185] C가 변환 계수 코딩에 사용된 모든 콘텍스트들의 세트를 나타내는 것으로 한다. 세트 C의 콘텍스트 c에 대한 코딩 확률 분포를 디코더(디코더는, 예를 들어, 도 7의 계수 토큰 트리(700)의 노드들에 대응하는 토큰들을 디코딩하는데 사용될 수 있음)로 송신하기 위해, EOB_TOKEN 및 계수 토큰 트리(700)의 각각의 토큰에 대응하는 확률이 인코딩될 수 있다. 12개의 토큰들이 있기 때문에, 프레임에 대해 상각된 세트 C의 콘텍스트들로부터 획득된 코딩 확률 분포들의 총 비트 비용은 방정식 (19)에 의해 주어진다.Let C denote the set of all contexts used for transform coefficient coding. EOB_TOKEN and A probability corresponding to each token of the coefficient token tree 700 may be encoded. Since there are 12 tokens, the total bit cost of the coding probability distributions obtained from the contexts of the set C amortized for the frame is given by equation (19).

Figure 112019125287649-pct00070
Figure 112019125287649-pct00070

[00186] 방정식 (19)에서, |C|는 세트 C의 카디널리티이고, n은 프레임 내의 토큰들의 수이다. 방정식 (19)는 각각의 추가 콘텍스트가 토큰당 적어도 11ε/n개의 비트들의 정규화된 비용을 추가할 수 있음을 표시한다. 방정식 (19)의 우측 표현은 콘텍스트들의 수(즉, 세트 C의 사이즈)에 따라 선형적으로 증가된다. 따라서, 콘텍스트들의 수를 감소시키는 것(즉, 더 작은 세트 C)은 오버헤드를 감소시킬 수 있다. 그러나, 모든 콘텍스트에 대해 11개의 확률들이 인코딩되는 경우가 남아 있으며, 11은 토큰들의 수(12) 마이너스 1에 대응한다. 엔트로피 코딩을 위한 선택적 혼합을 사용하여, 아래에서 설명되는 바와 같이, 일부 콘텍스트들에 대해 인코딩될 확률들의 수가 감소될 수 있다. 예를 들어, 계수 토큰 트리(700)가 주어지면, 11개의 확률들을 인코딩하는 대신에, 11개 미만이 코딩됨으로써, 프레임 헤더들에서의 코딩 분포들과 연관된 오버헤드 비트들이 감소된다. [00186] In equation (19), |C| is the cardinality of the set C, and n is the number of tokens in the frame. Equation (19) indicates that each additional context may add a normalized cost of at least 11ε/n bits per token. The right-hand representation of equation (19) increases linearly with the number of contexts (ie, the size of set C). Thus, reducing the number of contexts (ie, smaller set C) can reduce overhead. However, there remains a case where 11 probabilities are encoded for every context, 11 corresponding to the number of tokens (12) minus 1. Using selective mixing for entropy coding, the number of probabilities to be encoded can be reduced for some contexts, as described below. For example, given a coefficient token tree 700, instead of encoding 11 probabilities, less than 11 are coded, thereby reducing overhead bits associated with coding distributions in frame headers.

[00187] 위에서 언급된 바와 같이, 콘텍스트들의 수를 감소시키는 것(즉, 더 작은 세트 C)은 오버헤드를 감소시킬 수 있다. 그러나, 방정식 (18)의 첫 번째 항, 즉 엔트로피 Η(Qc)의 분석은 콘텍스트들의 수를 감소시키는 것이 바람직하지 않음을 표시한다.As noted above, reducing the number of contexts (ie, smaller set C) may reduce overhead. However, analysis of the first term in equation (18), ie entropy Η(Q c ), indicates that reducing the number of contexts is undesirable.

[00188] 엔트로피 Η(Qc)는 오목 함수이다. 이는 결국, 그리고 부등식 (20)에 의해 주어진 바와 같이, 2개의 분포들 M 및 M'의 선형 조합을 취하면, 2개의 분포들 M 및 M’의 선형 조합의 엔트로피(즉, 부등식의 좌측)가 개별 분포들의 엔트로피들의 선형 합(즉, 부등식의 우측) 이상이 되는 것을 의미한다. 2개의 분포들 M 및 M'이 상이한 경우, 부등식 (20)은 엄격한 부등식이 된다.[00188] Entropy Η(Q c ) is a concave function. This in turn, and as given by inequality (20), if we take a linear combination of the two distributions M and M', then the entropy of the linear combination of the two distributions M and M' (i.e., to the left of the inequality) is means to be greater than or equal to the linear sum of the entropies of the individual distributions (ie, to the right of the inequality). If the two distributions M and M' are different, inequality (20) becomes a strict inequality.

Figure 112019125287649-pct00071
Figure 112019125287649-pct00071

[00189] 부등식 (20)이 주어지면, 방정식 (18)의 첫 번째 항을 최소화하기 위해, 별개의 분포들의 수를 증가시키는 것이 바람직하다는 결론이 나올 수 있으며, 이는 결국, 별개의 콘텍스트들의 수를 증가시키는 것을 의미한다. 이는, 콘텍스트들의 수를 증가시킴으로써, 부등식 (20)의 좌측이 우측으로 분해될 수 있기 때문에 그렇다. 분해는 전체 압축 성능을 개선할 수 있다. [00189] Given inequality (20), it can be concluded that, in order to minimize the first term in equation (18), it is desirable to increase the number of distinct distributions, which in turn leads to the number of distinct contexts. means to increase This is because by increasing the number of contexts, the left side of inequality (20) can be decomposed into the right side. Decomposition can improve overall compression performance.

[00190] 요약하면, 압축 성능을 개선하기 위해, 방정식 (18) 및 방정식 (19)의 두 번째 항의 분석은 콘텍스트들의 수를 감소시키는 것이 바람직하다는 결론으로 이어지며; 다른 한편으로, 방정식 (18) 및 부등식 (20)의 첫 번째 항의 분석은 압축 성능을 개선하기 위해 콘텍스트들의 수를 증가시키는 것이 바람직하다는 결론으로 이어진다. 엔트로피 코딩을 위한 선택적 혼합을 사용하여, 아래에서 설명되는 바와 같이, 콘텍스트들의 수가 증가될 수 있고, 모든 추가 콘텍스트와 연관된 오버헤드가 감소 또는 제한될 수 있다. 예를 들어, 그리고 도 7의 계수 토큰 트리(700)를 참조하면, 콘텍스트의 추가는 11개의 확률 값들을 추가시키지 않는다.[00190] In summary, in order to improve the compression performance, analysis of the second terms of equations (18) and (19) leads to the conclusion that it is desirable to reduce the number of contexts; On the other hand, analysis of the first term of equation (18) and inequality (20) leads to the conclusion that it is desirable to increase the number of contexts to improve the compression performance. Using selective mixing for entropy coding, the number of contexts can be increased and the overhead associated with every additional context can be reduced or limited, as described below. For example, and referring to the coefficient token tree 700 of FIG. 7 , the addition of context does not add 11 probability values.

[00191] 다음의 관찰들이 이루어질 수 있다.[00191] The following observations can be made.

1) 변환 계수를 코딩할 시에, 콘텍스트 c가 결정될 때, 콘텍스트 c와 연관된 코딩 분포 Pc는 변환 계수에 대한 토큰을 코딩하는데 사용되고,1) when coding the transform coefficients, when the context c is determined, the coding distribution P c associated with the context c is used to code the tokens for the transform coefficients,

2) 방정식 (19)에서 11의 승산 인자는 계수 토큰들의 알파벳의 사이즈 마이너스 1과 동일하고,2) the multiplication factor of 11 in equation (19) is equal to the size of the alphabet of coefficient tokens minus 1,

3) 콘텍스트 c가 2개의 별개의 콘텍스트들 c0 및 c1로 분할되는 경우, 콘텍스트 c0이 나타나는 횟수 및 콘텍스트 c1이 나타나는 횟수는 콘텍스트 c가 나타나는 횟수와 동일하고(즉, nc = nc0 + nc1),3) If context c is split into two separate contexts c 0 and c 1 , the number of times context c 0 appears and the number of times context c 1 appears are equal to the number of times context c appears (i.e., n c = n c0 + n c1 ),

4) 콘텍스트 c가 2개의 별개의 콘텍스트 c0 및 c1로 분할되는 경우, 대응하는 실제 분포 Qc0 및 Qc1은 충분히 상이해야 하며,4) if context c is split into two separate contexts c 0 and c 1 , the corresponding actual distributions Q c0 and Q c1 must be sufficiently different,

5) 주어진 콘텍스트 c에 대해, 토큰 i가 콘텍스트 c 하에서 프레임에 나타나는 횟수 nc,i는, 모든 i에 대해, 확률 추정에서 충분한 정확성을 보장할 정도로 충분히 커야 한다.5) For a given context c, the number of times n c,i of a token i appears in a frame under context c must be large enough to guarantee sufficient accuracy in the probability estimation for all i.

[00192] 일부 인덱스들에서만 상이하지만 다른 인덱스들에서는 유사하거나 또는 동일한 2개의 분포들 Qc0 및 Qc1이 주어지면, 본 개시내용의 구현들은, Qc0과 Qc1이 상이한 토큰 인덱스들에 대해서만, 콘텍스트 c를, 예를 들어, 2개의 콘텍스트들 c0 및 c1로 분할할 수 있다. 다시 말해, 도입된 각각의 새로운 콘텍스트는 11ε/nc 비트/토큰 미만의 비용이 들 수 있다. 예를 들어, 콘텍스트가 4개의 토큰들에 적합한 경우, 비용은 3ε/nc이다. [00192] Given two distributions Q c0 and Q c1 that differ only in some indices but are similar or identical in other indices, implementations of the present disclosure only for token indices where Q c0 and Q c1 are different, Context c may be split into, for example, two contexts c 0 and c 1 . In other words, each new context introduced may cost less than 11ε/n c bits/token. For example, if the context fits 4 tokens, the cost is 3ε/n c .

[00193] 도 13은 본 개시내용의 구현에 따른, 변환 계수 토큰들의 알파벳을 사용하여 변환 계수들을 코딩하기 위한 프로세스(1300)의 흐름도이다. 프로세스(1300)는 2개 이상의 확률 분포들을 사용하여 현재 변환 계수를 코딩(즉, 인코딩 또는 디코딩)한다. 프로세스(1300)는 현재 변환 계수를 표시하는 토큰을 코딩할 수 있다. 토큰은 도 7의 계수 토큰 트리(700)와 같은 계수 트리를 사용하여 결정 또는 선택될 수 있다. 따라서, 알파벳은 계수 트리의 리프 노드들(즉, 토큰들)을 포함한다. 13 is a flow diagram of a process 1300 for coding transform coefficients using an alphabet of transform coefficient tokens, according to an implementation of the present disclosure. Process 1300 codes (ie, encodes or decodes) a current transform coefficient using two or more probability distributions. Process 1300 may code a token indicating a current transform coefficient. Tokens may be determined or selected using a coefficient tree, such as coefficient token tree 700 of FIG. 7 . Thus, the alphabet contains leaf nodes (ie, tokens) of the coefficient tree.

[00194] 프로세스(1300)는 스캔 순서에 따라 변환 블록의 계수들을 코딩하는 프로세스에 의해 또는 이와 함께 사용될 수 있다. 현재 변환 계수는 스캔 순서에서 스캔 포지션 i에 있을 수 있고, 변환 블록에서 계수 위치(ri, ci)에 있을 수 있다. Process 1300 may be used by or in conjunction with a process of coding coefficients of a transform block according to a scan order. Current transform coefficients may be scanned in the i position in the scanning sequence, it may be in the conversion coefficient block to the position (r i, c i).

[00195] 프로세스(1300)는 제1 콘텍스트에 대응하는 제1 확률 분포를 선택하고, 제2 콘텍스트에 대응하는 제2 확률 분포를 선택하며, 일부 변환 계수 토큰들에 대해, 제1 확률 분포와 제2 확률 분포를 혼합하여, 일부 변환 계수 토큰들 중 변환 계수 토큰을 코딩하기 위한 혼합 확률을 생성할 수 있다. The process 1300 selects a first probability distribution corresponding to a first context, selects a second probability distribution corresponding to a second context, and, for some transform coefficient tokens, the first probability distribution and the second probability distribution. By mixing the two probability distributions, a mixing probability for coding a transform coefficient token among some transform coefficient tokens may be generated.

[00196] 프로세스(1300)는 도 4의 인코더(400)와 같은 인코더에서 구현될 수 있다. 프로세스(1300)는, 예를 들어, 송신국(102)과 같은 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로서 구현될 수 있다. 소프트웨어 프로그램은 머신-판독가능 명령들을 포함할 수 있으며, 그 머신-판독가능 명령들은 메모리(204) 또는 이차 저장소(214)와 같은 메모리에 저장될 수 있고, CPU(202)와 같은 프로세서에 의해 실행되어, 컴퓨팅 디바이스로 하여금 프로세스(1300)를 수행하게 할 수 있다. 적어도 일부 구현들에서, 프로세스(1300)는 도 4의 인코더(400)의 엔트로피 인코딩 스테이지(408)에 의해 전체적으로 또는 부분적으로 수행될 수 있다. Process 1300 may be implemented in an encoder, such as encoder 400 of FIG. 4 . Process 1300 may be implemented as a software program that may be executed by computing devices, such as, for example, transmitting station 102 . A software program may include machine-readable instructions, which may be stored in a memory, such as memory 204 or secondary storage 214 , and executed by a processor, such as CPU 202 . may cause the computing device to perform process 1300 . In at least some implementations, process 1300 may be performed in whole or in part by entropy encoding stage 408 of encoder 400 of FIG. 4 .

[00197] 프로세스(1300)는 도 5의 디코더(500)와 같은 디코더에서 구현될 수 있다. 프로세스(1300)는, 예를 들어, 수신국(106)과 같은 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로서 구현될 수 있다. 소프트웨어 프로그램은 머신-판독가능 명령들을 포함할 수 있으며, 그 머신-판독가능 명령들은 메모리(204) 또는 이차 저장소(214)와 같은 메모리에 저장될 수 있고, CPU(202)와 같은 프로세서에 의해 실행되어, 컴퓨팅 디바이스로 하여금 프로세스(1300)를 수행하게 할 수 있다. 적어도 일부 구현들에서, 프로세스(1300)는 도 5의 디코더(500)의 엔트로피 디코딩 스테이지(502)에 의해 전체적으로 또는 부분적으로 수행될 수 있다. Process 1300 may be implemented in a decoder, such as decoder 500 of FIG. 5 . Process 1300 may be implemented as a software program that may be executed by computing devices, such as, for example, receiving station 106 . A software program may include machine-readable instructions, which may be stored in a memory, such as memory 204 or secondary storage 214 , and executed by a processor, such as CPU 202 . may cause the computing device to perform process 1300 . In at least some implementations, process 1300 may be performed in whole or in part by entropy decoding stage 502 of decoder 500 of FIG. 5 .

[00198] 프로세스(1300)가 인코더에 의해 구현될 때, "코딩"은 도 4의 압축된 비트스트림(420)과 같은 인코딩된 비트스트림으로의 인코딩을 의미한다. 디코더에 의해 구현될 때, "코딩"은 도 5의 압축된 비트스트림(420)과 같은 인코딩된 비트스트림으로부터의 디코딩을 의미한다.When process 1300 is implemented by an encoder, “coding” means encoding into an encoded bitstream, such as compressed bitstream 420 of FIG. 4 . When implemented by a decoder, “coding” means decoding from an encoded bitstream, such as compressed bitstream 420 of FIG. 5 .

[00199] 1302에서, 프로세스(1300)는 제1 확률 분포를 선택한다. 본 개시내용에서 사용되는 바와 같이, "선택"은 획득, 식별, 구성, 결정, 특정, 또는 무엇이든 임의의 방식의 다른 선택을 의미한다. At 1302 , the process 1300 selects a first probability distribution. As used in this disclosure, “selection” means obtaining, identifying, organizing, determining, specifying, or otherwise selecting in any way whatsoever.

[00200] 예에서, 프로세스(1300)는 먼저, 제1 콘텍스트를 도출하고, 제1 콘텍스트에 대응하는 제1 확률 분포를 선택할 수 있다. 예를 들어, 콘텍스트는, 변환 블록 사이즈, 변환 블록 형상(예를 들어, 정사각형 또는 직사각형), 컬러 컴포넌트 또는 평면 타입(즉, 루미넌스 또는 크로미넌스), 현재 변환 계수의 스캔 포지션 i, 및 이전에 코딩된 토큰들 중 하나 이상을 사용하여 도출될 수 있다. 예를 들어, 도 6의 스캔 순서(602)의 경우, 이전에 코딩된 계수들은 현재 변환 계수의 좌측 이웃 계수 및 최상부 이웃 계수일 수 있다. 제1 콘텍스트를 도출하기 위해 다른 정보가 사용될 수 있다. In an example, process 1300 may first derive a first context and select a first probability distribution corresponding to the first context. For example, the context may include: transform block size, transform block shape (eg, square or rectangular), color component or planar type (ie, luminance or chrominance), scan position i of the current transform coefficient, and previously It may be derived using one or more of the coded tokens. For example, for the scan order 602 of FIG. 6 , the previously coded coefficients may be the left neighbor coefficient and the top neighbor coefficient of the current transform coefficient. Other information may be used to derive the first context.

[00201] 예에서, 제1 확률 분포는 알파벳의 모든 토큰들에 대해 정의될 수 있다. 즉, 확률 분포는 알파벳의 토큰들 각각에 대한 확률 값을 포함한다. 계수 토큰 트리(700)의 토큰들을 사용하여, 알파벳 세트 E가 계수 토큰들의 알파벳을 나타내는 것으로 한다. 따라서, 알파벳 세트 E는, E = {EOB_TOKEN, ZERO_TOKEN, ONE_TOKEN, TWO_TOKEN, THREE_TOKEN, FOUR_TOKEN, DCT_VAL_CAT1, DCT_VAL_CAT2, DCT_VAL_CAT3, DCT_VAL_CAT4, DCT_VAL_CAT5, DCT_VAL_CAT6}에 의해 주어진다. 제1 확률 분포는 알파벳 세트 E의 토큰들 각각에 대한 확률 값을 포함할 수 있다. 다른 예에서, 확률 분포는 알파벳의 토큰들 중 일부에 대한 확률 값들을 포함할 수 있다. 예에서, 제1 확률 분포는 코딩 분포(Pc)에 대하여 위에서 설명된 바와 같은 코딩 분포일 수 있다.In an example, a first probability distribution may be defined for all tokens of the alphabet. That is, the probability distribution includes a probability value for each of the tokens of the alphabet. Using the tokens of the coefficient token tree 700, it is assumed that the alphabet set E represents the alphabet of the coefficient tokens. Thus, the alphabet set E is given by E = {EOB_TOKEN, ZERO_TOKEN, ONE_TOKEN, TWO_TOKEN, THREE_TOKEN, FOUR_TOKEN, DCT_VAL_CAT1, DCT_VAL_CAT2, DCT_VAL_CAT3, DCT_VAL_CAT4, DCT_VAL_CAT4, DCT_VAL_CAT6} The first probability distribution may include a probability value for each of the tokens of the alphabet set E. In another example, the probability distribution may include probability values for some of the tokens of the alphabet. In an example, the first probability distribution may be a coding distribution as described above with respect to the coding distribution (P c ).

[00202] 1304에서, 프로세스(1300)는 제2 확률 분포를 선택한다. 예에서, 프로세스(1300)는 제2 콘텍스트를 도출하고, 제2 콘텍스트에 대응하는 제2 확률 분포를 선택할 수 있다. At 1304 , the process 1300 selects a second probability distribution. In an example, process 1300 may derive a second context and select a second probability distribution corresponding to the second context.

[00203] 제2 확률 분포는 토큰들의 분할에 대해 정의될 수 있다. 예시적인 예로서 도 7의 계수 토큰 트리(700)의 토큰들을 사용하여, 분할은 알파벳 세트 E의 비-자명 분할에 대응할 수 있다. 예를 들어, 비-자명 분할 FE는, FE = {{EOB_TOKEN}, {ZERO_TOKEN}, {ONE_TOKEN, TWO_TOKEN, THREE_TOKEN, FOUR_TOKEN, DCT_VAL_CAT1, DCT_VAL_CAT2, DCT_VAL_CAT3, DCT_VAL_CAT4, DCT_VAL_CAT5, DCT_VAL_CAT6}}일 수 있다. 즉, 비-자명 분할 FE는 알파벳 세트 E를 겹치지 않는 3개의 서브세트들: {EOB_TOKEN}, {ZERO_TOKEN}, 및 모든 다른 토큰들을 포함하는 세트로 분할한다. 따라서, 제2 확률 분포는 분할의 엘리먼트들에 대한 확률 값들을 포함한다.[00203] A second probability distribution may be defined for the partitioning of tokens. Using the tokens of the coefficient token tree 700 of FIG. 7 as an illustrative example, the partition may correspond to a non-obvious partition of the alphabet set E. For example, the non-self-name partitioning F E may be F E = {{EOB_TOKEN}, {ZERO_TOKEN}, {ONE_TOKEN, TWO_TOKEN, THREE_TOKEN, FOUR_TOKEN, DCT_VAL_CAT1, DCT_VAL_CAT2, DCT_VAL_CAT3, DCT_VAL_CAT2, DCT_VAL_CAT3, DCT_VAL_CAT3, DCT_VAL_CAT4}. That is, the non-self-name partition F E partitions the alphabet set E into three non-overlapping subsets: {EOB_TOKEN}, {ZERO_TOKEN}, and a set containing all other tokens. Accordingly, the second probability distribution includes probability values for the elements of the partition.

[00204] 비-자명 분할 FE의 예에서, 제2 확률 분포는 3개의 확률 값들을 포함할 수 있다. 비-자명 분할 FE가 단지 3개의 엘리먼트들만을 포함하기 때문에, 제2 콘텍스트는 2ε/n 비트/토큰의 오버헤드를 추가하며, 이는 알파벳 E에 대한 확률 분포를 결정하는 새로운 콘텍스트(즉, 제1 콘텍스트와 같은 콘텍스트)에 의해 추가된 약 11ε/n 비트/토큰의 오버헤드보다 상당히 더 작다. In the example of the non-obvious partition F E , the second probability distribution may include three probability values. Since the non-obvious partition F E contains only 3 elements, the second context adds an overhead of 2ε/n bits/token, which is a new context that determines the probability distribution for the alphabet E (i.e., the second This is significantly less than the overhead of about 11ε/n bits/token added by a context equal to 1 context).

[00205] 제2 콘텍스트가 알파벳 E의 토큰들의 서브세트를 타겟팅할 때, 추가된 제2 콘텍스트와 연관된 오버헤드의 양은 제한된다. 추가된 제2 콘텍스트는 추가된 제1 콘텍스트보다 훨씬 더 적은 오버 헤드를 발생시킨다. [00205] When the second context targets a subset of tokens of the alphabet E, the amount of overhead associated with the added second context is limited. The added second context incurs much less overhead than the added first context.

[00206] 예에서, 제2 콘텍스트는 다른 노드들보다 더 빈번하게 사용되는 알파벳 세트 E의 토큰들을 타겟팅하는 콘텍스트일 수 있다. 더 빈번하게 사용되는 토큰들을 타겟팅하는 것은 이들 토큰들의 코딩(예를 들어, 압축) 성능을 개선할 수 있다. 예를 들어, 그리고 도 7의 계수 토큰 트리(700)를 다시 참조하면, 내부 노드들(예를 들어, 노드들 A-K) 중에서, 루트 노드(701) 및 노드(703)가 변환 계수들을 코딩할 때 가장 빈번하게 사용되는 노드들이다. 변환 계수들을 인코딩하기 위해 트리를 순회할 시에, 트리에서 더 아래에 내부 노드가 있을수록 노드는 덜 빈번하게 순회된다. 즉, 트리에서 더 아래에 노드가 있을수록, 변환 계수를 코딩하는데 내부 노드가 사용되는 횟수가 더 적게 된다. 따라서, 콘텍스트들을 추가하는 것(이는 위에서 설명된 바와 같이 오버헤드가 없다면 바람직함)은 가장 빈번하게 사용되는 토큰들에 대한 콘텍스트들을 추가하는 것으로 제한될 수 있다.In an example, the second context may be a context targeting tokens of alphabet set E that are used more frequently than other nodes. Targeting more frequently used tokens can improve the coding (eg, compression) performance of these tokens. For example, and referring back to the coefficient token tree 700 of FIG. 7 , among the inner nodes (eg, nodes AK ), when a root node 701 and a node 703 code transform coefficients These are the most frequently used nodes. When traversing the tree to encode transform coefficients, the lower the inner node in the tree is, the less frequently the node is traversed. That is, the lower the node is in the tree, the fewer times the inner node is used to code the transform coefficients. Thus, adding contexts (which is desirable if there is no overhead as described above) may be limited to adding contexts for the most frequently used tokens.

[00207] 예에서, 제2 콘텍스트는 실제 분포(Qc)에 대하여 설명된 바와 같은 실제 분포일 수 있다. 예에서, 현재 계수(즉, 계수 위치(ri, ci)에 있고 스캔 포지션 i에 대응하는 계수)에 대한 토큰이 제로일(즉, ti = ZERO_TOKEN) 확률이 계수 위치(ri, ci)의 바로 이웃하는 2D(2-차원) 이웃에서의 제로들의 수와 밀접하게 상관된다는 잘-알려진 사실을 레버리지함으로써, 제2 콘텍스트가 도출될 수 있다. 예에서, 제2 콘텍스트는 계수 위치(ri, ci)에 고정된 이웃 템플릿을 사용하여 도출될 수 있다. 이웃 템플릿은 이웃을 구성하는 계수 위치들에 대해 표시, 포함, 특정 등을 행할 수 있다. 이웃 템플릿은 스캔 순서에 기초하여 이루어질 수 있다.In an example, the second context may be an actual distribution as described with respect to the actual distribution (Q c ). In the example, the probability that the token for the current coefficient (ie, the coefficient at the coefficient position (r i , c i ) and corresponding to the scan position i) is zero (ie, t i = ZERO_TOKEN) is the coefficient position (r i , c ) By leveraging the well-known fact that i ) is closely correlated with the number of zeros in its immediate neighboring 2D (two-dimensional) neighborhood, a second context can be derived. In the example, the second context may be derived by using the neighboring template fixed to a position coefficient (r i, c i). A neighbor template may mark, contain, specify, etc., coefficient locations that make up a neighbor. The neighbor template may be formed based on the scan order.

[00208] 도 14는 본 개시내용의 구현들에 따른, 콘텍스트를 도출하기 위한 이웃 템플릿들(1400 및 1450)의 다이어그램이다. 이웃 템플릿은 현재 계수 이전에 코딩된 계수들의 위치들(즉, 이웃 위치들)을 포함한다. 따라서, 이들 계수들에 대한 값들은 현재 계수를 코딩하는데 이용 가능하다. 이웃 템플릿은 임의의 수의 위치들을 포함할 수 있다. 이웃 템플릿은 임의의 형상을 가질 수 있다. 예를 들어, 이웃 템플릿은 연속적이거나 또는 인접한 위치들을 포함할 필요가 없다. 14 is a diagram of neighbor templates 1400 and 1450 for deriving a context, in accordance with implementations of the present disclosure. The neighbor template contains locations (ie, neighbor locations) of coefficients coded before the current coefficient. Accordingly, the values for these coefficients are available for coding the current coefficient. A neighbor template may include any number of locations. Neighbor templates can have any shape. For example, the neighbor template need not be contiguous or contain contiguous locations.

[00209] 이웃 템플릿(1400)은 순방향 스캔 순서와 함께 사용될 수 있는 이웃 템플릿을 예시한다. 순방향 스캔 순서는, 도 6의 스캔 순서(602)와 같이, 변환 블록의 좌측-상단 코너로부터 우측-하단 코너까지 진행하는 스캔 순서이다. 이웃 템플릿(1400)은 a-e로 표시된 5개의 음영 계수들의 위치들을 포함하는 이웃 템플릿(1404) 및 현재 계수(1402)를 예시한다. 이웃 템플릿은 더 많거나 적은 계수 위치들을 포함할 수 있다. 예에서, 값들 a-e는 각각의 계수들이 제로인지 또는 비-제로인지를 표시할 수 있다. 따라서, 값들 a-e는 이진 값들일 수 있다. [00209] Neighbor template 1400 illustrates a neighbor template that may be used with a forward scan order. The forward scan order, like the scan order 602 of FIG. 6 , is a scan order from the top left corner to the bottom right corner of the transform block. Neighbor template 1400 illustrates a neighbor template 1404 and a current coefficient 1402 that include positions of five shading coefficients denoted a-e. A neighbor template may contain more or fewer count locations. In an example, the values a-e may indicate whether the respective coefficients are zero or non-zero. Thus, the values a-e may be binary values.

[00210] 이웃 템플릿(1450)은 역방향 스캔 순서와 함께 사용될 수 있는 이웃 템플릿을 예시한다. 역방향 스캔 순서는, 예를 들어, 변환 블록의 우측-하단 코너로부터 좌측-상단 코너로 진행하는 스캔 순서이다. 이웃 템플릿(1450)은 a-i로 표시된 9개의 음영 계수들의 위치들을 포함하는 이웃 템플릿(1454) 및 현재 계수(1452)를 예시한다. 그러나, 위에서 나타낸 바와 같이, 이웃 템플릿은 더 많거나 적은 계수 위치들을 포함할 수 있다.[00210] Neighbor template 1450 illustrates a neighbor template that may be used with a reverse scan order. The reverse scan order is, for example, a scan order going from the right-bottom corner to the top-left corner of the transform block. Neighbor template 1450 illustrates a neighbor template 1454 and a current coefficient 1452 that include positions of nine shadow coefficients denoted a-i. However, as indicated above, the neighbor template may contain more or fewer coefficient positions.

[00211] 예에서, 제2 콘텍스트는 이웃 템플릿에서의 제로 계수들의 수에 기초하여 도출될 수 있다. 예를 들어, 그리고 이웃 템플릿(1400)을 사용하여, 공식 (a + b + c + d + e + 1) >> 1에 기초하여, 콘텍스트 값들의 세트 {0, 1, 2, 3}으로부터 콘텍스트 값이 선택될 수 있으며, 여기서, 값들 a-e 각각은 0 또는 1의 값이고, “>> 1”은 하나의 비트만큼의 합 (a + b + c + d + e + 1)의 비트-시프트이다. 예에서, 0의 값은 그 위치에서의 계수가 제로 계수임을 표시할 수 있고, 1의 값은 계수가 비-제로임을 표시할 수 있다. 예를 들어, 모든 이웃 템플릿 계수들이 제로인 경우, 번호가 0인 콘텍스트가 선택될 수 있으며; 이웃 템플릿 계수들 중 정확히 하나 또는 정확히 2개가 비-제로인 경우, 번호가 1인 콘텍스트가 선택되는 등이다. 다른 값들 및 시맨틱들이 가능하다.In an example, the second context may be derived based on a number of zero coefficients in the neighbor template. For example, and using the neighbor template 1400 , the context from the set of context values {0, 1, 2, 3} based on the formula (a + b + c + d + e + 1) >> 1 A value may be selected, where each of the values ae is a value of 0 or 1 and ">> 1" is a bit-shift of the sum (a + b + c + d + e + 1) by one bit . In an example, a value of 0 may indicate that the coefficient at that location is a zero coefficient, and a value of 1 may indicate that the coefficient is non-zero. For example, if all of the neighboring template coefficients are zero, the numbered context may be selected; If exactly one or exactly two of the neighboring template coefficients are non-zero, the context numbered 1 is selected, and so on. Other values and semantics are possible.

[00212] 도 13을 다시 참조하면, 1306에서, 제2 확률 분포가 변환 계수 토큰에 대한 확률을 포함한다고 결정하는 것에 대한 응답으로, 프로세스(1300)는 1308로 진행한다. 구현에서, 프로세스(1300)는, 제2 확률 분포가 변환 계수 토큰에 대한 확률을 포함하지 않는 경우, 프로세스(1300)가 1312로 진행하는 것을 포함할 수 있다.Referring back to FIG. 13 , in response to determining that the second probability distribution includes a probability for the transform coefficient token, at 1306 , the process 1300 proceeds to 1308 . In an implementation, the process 1300 can include the process 1300 proceeding to 1312 if the second probability distribution does not include a probability for the transform coefficient token.

[00213] 예에서, 제2 확률 분포는, 변환 계수 토큰이 분할의 싱글턴 엘리먼트에 포함될 때, 변환 계수 토큰에 대한 확률을 포함한다. 예를 들어, 위에서 설명된 비-자명 분할 FE는 EOB_TOKEN에 대한 확률을 포함한다고 결정되는데, 이는 EOB_TOKEN이 비-자명 분할 FE의 싱글턴 엘리먼트 {EOB_TOKEN}에 포함되기 때문이다. 상기를 위해, 싱글턴 엘리먼트는 하나의 엘리먼트만을 포함하는 알파벳 세트 E의 서브세트이다. 따라서, 제2 확률 분포는, 예를 들어, FOUR_TOKEN에 대한 확률을 포함한다고 결정되지 않는데, 이는 FOUR_TOKEN이 비-자명 분할 FE의 싱글턴 엘리먼트에 포함되지 않기 때문이다.In an example, the second probability distribution includes a probability for the transform coefficient token when the transform coefficient token is included in a singleton element of the partition. For example, it is determined that the non-obvious partition F E described above includes the probability for EOB_TOKEN, because EOB_TOKEN is included in the singleton element {EOB_TOKEN} of the non-obvious partition F E . For the above, a singleton element is a subset of the alphabet set E containing only one element. Thus, the second probability distribution is not determined to include, for example, the probability for FOUR_TOKEN, since FOUR_TOKEN is not included in the singleton element of the non-obvious partition F E .

[00214] 위에서 나타낸 바와 같이, 제1 콘텍스트는 알파벳 세트 E에 대한 확률 분포일 수 있는 제1 확률 분포를 획득하는데 사용될 수 있으며, 제2 콘텍스트는 비-자명 분할 FE에 대해 정의된 제2 확률 분포를 획득하는데 사용될 수 있다. 계수 토큰 트리(700)를 참조하면, 예에서, 제1 콘텍스트는 모든 내부 노드에서의 이진 판정들을 코딩(즉, 인코딩 또는 디코딩)하기 위한 이진 확률 분포를 결정하는데 사용될 수 있으며, 제2 콘텍스트는 단지 2개의 내부 노드들: 루트 노드(701) 및 이의 우측 자식 노드(즉, 노드(703))에서의 이진 분포들을 결정하는데 사용될 수 있다. As indicated above, a first context may be used to obtain a first probability distribution, which may be a probability distribution for alphabet set E, and a second context may be used to obtain a second probability defined for a non-obvious partition F E . It can be used to obtain a distribution. Referring to coefficient token tree 700 , in an example, a first context may be used to determine a binary probability distribution for coding (ie, encoding or decoding) binary decisions at all internal nodes, and a second context may only be It can be used to determine binary distributions at two inner nodes: the root node 701 and its right child node (ie node 703 ).

[00215] 1308에서, 프로세스(1300)는 혼합 확률을 생성하기 위해, 제1 확률 분포와 제2 확률 분포를 혼합한다. 1310에서, 프로세스(1330)는 혼합 확률을 사용하여 변환 계수 토큰을 엔트로피 코딩한다. At 1308 , the process 1300 mixes the first probability distribution and the second probability distribution to generate a mixed probability. At 1310 , process 1330 entropy codes the transform coefficient token using the mixing probability.

[00216] 비-자명 분할 FE가 주어지면, 제1 콘텍스트로부터 획득된 분포(즉, 제1 확률 분포)와 제2 콘텍스트로부터 획득된 분포(즉, 제2 확률 분포)를 혼합함으로써, 2개의 내부 노드들(즉, 루트 노드(701) 및 노드(703))에 대한 코딩 분포들이 획득될 수 있다. 따라서, 토큰을 코딩하기 위한 확률 분포는 선험적으로 선택될 필요가 없으며; 오히려, 위에서 설명된 바와 같이, 혼합은 최상의 조합을 야기할 수 있다. [00216] Given a non-obvious partition F E , by mixing a distribution obtained from a first context (ie, a first probability distribution) and a distribution obtained from a second context (ie, a second probability distribution), two Coding distributions for the inner nodes (ie, root node 701 and node 703 ) may be obtained. Thus, the probability distribution for coding the token need not be chosen a priori; Rather, as described above, mixing may result in the best combination.

[00217] 혼합은 도 9 내지 도 12에 대하여 위에서 설명된 바와 같을 수 있다. 예에서, 프로세스(1300)는, 제1 확률 분포를 사용하여, 변환 계수 토큰을 디코딩하기 위한 제1 조건부 확률을 결정하고, 제2 확률 분포를 사용하여, 변환 계수 토큰을 디코딩하기 위한 제2 조건부 확률을 결정하며, 제1 조건부 확률 및 제2 조건부 확률을 사용하여, 혼합 확률을 결정함으로써, 혼합 확률을 생성할 수 있다. [00217] Mixing may be as described above with respect to FIGS. 9-12. In an example, process 1300 determines, using a first probability distribution, a first conditional probability for decoding a transform coefficient token, and using a second probability distribution, a second conditional probability for decoding a transform coefficient token. The mixing probability may be generated by determining the probability and using the first conditional probability and the second conditional probability to determine the mixing probability.

[00218] 예로서, 도 7의 계수 토큰 트리(700)와 같은 토큰 트리를 사용하여, 제1 조건부 확률 분포는 내부 노드에서의 조건부 확률 분포일 수 있다. 내부 노드에서의 조건부 확률 분포는, 코딩된 히스토리(즉, 이전에 코딩된 계수들) 및 부수 정보로부터 결정된 제1 콘텍스트가 주어진 내부 노드의 자식 노드(즉, 좌측 자식 또는 우측 자식)를 선택하는 확률 분포이다. 부수 정보의 예들은 평면 타입(예를 들어, 루미넌스, 크로미넌스 등), 변환 사이즈(즉, 변환 블록 사이즈) 및 변환 타입(예를 들어, DCT, ADST 등)을 포함한다. 다른 부수 정보가 이용 가능할 수 있다. 제2 조건부 확률 분포는 코딩된 히스토리 및 부수 정보로부터 결정된 제2 콘텍스트가 주어진 동일한 내부 노드에서의 조건부 확률 분포이다. 제1 콘텍스트 및 제2 콘텍스트는 코딩된 히스토리에서의 상이한 정보 및 상이한 부수 정보를 사용하여 도출될 수 있다. As an example, using a token tree such as coefficient token tree 700 of FIG. 7 , the first conditional probability distribution may be a conditional probability distribution at an inner node. The conditional probability distribution at the inner node is the probability of selecting a child node (i.e., the left child or the right child) of the inner node given a first context determined from the coded history (i.e., previously coded coefficients) and side information. is the distribution Examples of side information include a plane type (eg, luminance, chrominance, etc.), a transform size (ie, transform block size), and a transform type (eg, DCT, ADST, etc.). Other ancillary information may be available. The second conditional probability distribution is a conditional probability distribution at the same inner node given a second context determined from the coded history and side information. The first context and the second context may be derived using different information and different side information in the coded history.

[00219] 비-자명 분할 FE를 예로서 사용하면, 제1 조건부 확률 분포는 코딩된 히스토리 및 부수 정보로부터 결정된 제1 콘텍스트가 주어진 비-자명 분할 FE에 대한 조건부 확률 분포일 수 있으며; 제2 조건부 확률 분포는 코딩된 히스토리 및 다른 또는 동일한 부수 정보로부터 결정된 제2 콘텍스트가 주어진 FE에 대한 조건부 확률 분포일 수 있다. [00219] Using the non-obvious partition F E as an example, the first conditional probability distribution may be a conditional probability distribution for the non-obvious partition F E given a first context determined from the coded history and side information; The second conditional probability distribution may be a conditional probability distribution for F E given a second context determined from the coded history and other or the same side information.

[00220] 제1 콘텍스트가 알파벳 세트 E에 대한 확률 분포 P를 결정하는 경우, FE에서의 확률 분포 Q는, FE에서의 임의의 엘리먼트 e에 대해, 엘리먼트 e의 확률 Q(e)이 엘리먼트 e에서의 모든 토큰들(e는 토큰들의 세트임)의 확률들의 합:

Figure 112019125287649-pct00072
에 의해 주어질 수 있다. FE가 알파벳 세트 E의 비-자명 분할이기 때문에, 확률 값들의 선택적 혼합은 알파벳 세트 E의 엘리먼트들 e에 대해 본질적으로 실행 또는 수행된다. [00 220] If the first context to determine the probability distribution P of the alphabet set of E, the probability distribution Q of the F E is, for any of the elements e of the F E, the probability Q (e) of the element e is an element Sum of probabilities of all tokens in e (e being a set of tokens):
Figure 112019125287649-pct00072
can be given by Since F E is a non-obvious partition of alphabet set E, selective mixing of probability values is essentially performed or performed for elements e of alphabet set E.

[00221] 1312에서, 제2 확률 분포가 변환 계수 토큰에 대한 확률을 포함하지 않는다는 조건 하에서, 프로세스(1300)는 현재 변환 계수 토큰을 엔트로피 코딩하기 위해 제1 확률 분포를 사용한다. 즉, 나머지 내부 노드들(즉, 분할 E의 싱글턴에 포함되지 않는 노드들)에 대해, 제1 콘텍스트로부터 코딩 분포들이 획득될 수 있다. 즉, 제1 확률 분포는 나머지 계수들을 엔트로피 코딩하는데 사용될 수 있다. At 1312 , under the condition that the second probability distribution does not include a probability for the transform coefficient token, the process 1300 uses the first probability distribution to entropy code the current transform coefficient token. That is, for the remaining internal nodes (ie, nodes not included in the singleton of partition E), coding distributions may be obtained from the first context. That is, the first probability distribution may be used to entropy code the remaining coefficients.

[00222] 요약하면, 제1 확률 분포와 제2 확률 분포의 선택적 혼합은 변환 계수들을 코딩하는데 사용되는 토큰들의 서브세트에 사용될 수 있다. 예에서, 토큰들은 계수 토큰 트리의 내부 노드들에 대응한다. 예를 들어, 선택적 혼합은 다른 내부 노드들(즉, 자주-사용되지 않는 노드들)보다 더 자주 사용되는 내부 노드들(즉, 자주-사용되는 노드)에만 사용할 수 있다. 예에서, 더 자주 사용되는 내부 노드들은 이들 내부 노드들에 대응하는 토큰들의 리스트로서 주어질 수 있다. 다른 예에서, 더 자주 사용되는 내부 노드들은 비-자명 분할 FE의 싱글턴들일 수 있다. 내부 노드에 대해 혼합이 사용되지 않는 경우, 제1 확률 분포가 코딩 분포로서 사용될 수 있다. 따라서, 혼합은 일부 노드들에 선택적으로 적용되며: 제1 및 제2 분포들은 일부 내부 노드들(예를 들어, 자주-사용되는 노드들)에 대해 혼합되고, 제1 분포는 다른 내부 노드들(예를 들어, 자주-사용되지 않는 노드)을 코딩하는데 사용된다.In summary, selective mixing of a first probability distribution and a second probability distribution may be used for a subset of tokens used to code the transform coefficients. In an example, the tokens correspond to internal nodes of the coefficient token tree. For example, selective mixing can only be used for internal nodes that are used more frequently (ie, nodes that are frequently-used) than other internal nodes (ie, nodes that are not frequently-used). In an example, more frequently used internal nodes may be given as a list of tokens corresponding to these internal nodes. In another example, the more frequently used internal nodes may be singletons of the non-obvious partition F E . If mixing is not used for the inner node, the first probability distribution may be used as the coding distribution. Thus, mixing is selectively applied to some nodes: the first and second distributions are mixed for some internal nodes (eg, frequently-used nodes), and the first distribution is applied to other internal nodes ( For example, it is used to code infrequently-used nodes).

[00223] 위의 예에서, 알파벳 세트 E는 비-자명 분할 FE로 분할되었다. 따라서, 알파벳 세트 E의 토큰은 관련이 없고 별개인 것으로 간주된다. 즉, 계수 토큰 트리(700)의 토큰들이 프로세스(1300)를 예시하기 위해 사용되었지만, 분할은 토큰들을 관련이 없고 별개인 토큰들로 취급한다. 즉, 분할 E는 트리 구조를 레버리지하지 않으며, 임의의 알파벳 세트와 함께 사용될 수 있다. In the example above, the alphabet set E has been partitioned into a non-obvious partition F E . Accordingly, tokens of alphabet set E are considered unrelated and distinct. That is, although the tokens of the coefficient token tree 700 are used to illustrate the process 1300 , the split treats the tokens as unrelated and distinct tokens. That is, partition E does not leverage the tree structure and can be used with any alphabet set.

[00224] 다른 예에서, 이용 가능한 경우, 토큰들의 트리 구조는 제2 확률 분포를 선택하는데 사용될 수 있다. (계수 토큰 트리(700)와 같은) 트리 구조는 이의 계층에 의해 하나의 토큰을 다른 토큰과 관련시킬 수 있다. 따라서, 제2 확률 분포는 계수 토큰 트리의 일부 내부 노드들에서 정의되는 확률 분포일 수 있다. In another example, if available, the tree structure of tokens may be used to select a second probability distribution. A tree structure (such as coefficient token tree 700 ) may relate one token to another token by its hierarchy. Accordingly, the second probability distribution may be a probability distribution defined in some internal nodes of the coefficient token tree.

[00225] 예를 들어, 더 자주 사용되는 내부 노드들은 다른 내부 노드들보다 루트 노드에 더 가까운 노드들일 수 있다. 예를 들어, 계수 토큰 트리(700)에서, C로 표시된 노드는 K로 표시된 노드보다 루트 노드(701)에 더 가까운데, 이는 루트 노드로부터의 순회가 K로 표시된 노드에 도달하는 것보다 C로 표시된 노드에 도달하기 위해 더 적은 홉들이 필요하기 때문이다. For example, more frequently used internal nodes may be nodes closer to the root node than other internal nodes. For example, in the coefficient token tree 700, the node marked C is closer to the root node 701 than the node marked K, which means that a traversal from the root node is more likely to arrive at the node marked K than it is to the node marked K. This is because fewer hops are needed to reach the node.

[00226] 예에서, 루트 노드로부터 홉들의 미리 결정된 수 내에 있는(또는 그 수 미만인) 내부 노드들에 대해 선택적 혼합이 사용될 수 있다. 예를 들어, 홉들의 미리 결정된 수가 2인 경우, A로 표시된 내부 노드들(즉, 루트 노드(701)), 노드(703), 및 C로 표시된 노드에 대해 선택적 혼합이 사용될 수 있다. 따라서, 내부 노드가 "자주 사용"되는지 여부는 루트 노드에 대한 내부 노드의 근접성에 기초하여 결정될 수 있다. 토큰에 대응하는 내부 노드는, 예를 들어, 다른 토큰을 코딩하는 프로세스에서, 토큰에 관련된 판정이 또한 코딩될 때 "사용"된다. In an example, selective mixing may be used for internal nodes that are within (or less than) a predetermined number of hops from the root node. For example, if the predetermined number of hops is two, selective mixing may be used for internal nodes denoted A (ie, root node 701 ), node 703 , and node denoted C. Accordingly, whether an internal node is "frequently used" may be determined based on the proximity of the internal node to the root node. The internal node corresponding to the token is “used” when decisions related to the token are also coded, eg, in the process of coding another token.

[00227] 일부 내부 노드들의 토큰을 코딩할 확률(즉, 트리를 순회함으로써 생성된 시퀀스 xn)은 제1 확률 분포와 제2 확률 분포를 혼합함으로써 도 9에 대하여 설명된 바와 같이 결정될 수 있다. 즉, 제1 확률 분포 및 제2 확률 분포로부터의 분포들 둘 모두를 갖는 내부 노드들에 대해, 현재 계수를 엔트로피 코딩하기 위해 혼합 확률이 획득될 수 있다. 다른 모든 내부 노드들에 대해, 제1 확률 분포가 현재 계수를 엔트로피 코딩하는데 사용된다. [00227] The probability of coding the token of some internal nodes (ie, the sequence x n generated by traversing the tree) may be determined as described with respect to FIG. 9 by mixing the first probability distribution and the second probability distribution. That is, for inner nodes having both distributions from the first probability distribution and the second probability distribution, a mixed probability may be obtained for entropy coding the current coefficient. For all other inner nodes, the first probability distribution is used to entropy code the current coefficient.

[00228] k가 제2 콘텍스트에 의해 영향을 받는 내부 노드들의 수인 경우, 제2 콘텍스트는 대략 kε/n 비트/토큰을 추가하는 반면, 제1 콘텍스트는 계수 토큰 트리(700)의 토큰들에 대해 11ε/n 비트/토큰을 추가한다. If k is the number of internal nodes affected by the second context, the second context adds approximately kε/n bits/token, while the first context is for tokens of the coefficient token tree 700 Add 11ε/n bits/token.

[00229] 선택적 혼합을 사용함으로써, 코딩 시스템에서의 이용 가능한 콘텍스트들의 세트 C는 제1 세트 C0 및 제2 세트 C1로 분할될 수 있다. 계수 토큰들의 알파벳 E를 예로서 사용하면, 제1 세트 c0은 알파벳 E에 대한 전체 분포에 영향을 미치는 콘텍스트 정보로부터 도출될 수 있고, 세트 C1 내의 콘텍스트들은 알파벳 E에 대한 전체 분포의 일부에만 영향을 미치는 콘텍스트 정보로부터 도출될 수 있다. 세트 C1 내의 상이한 콘텍스트들은 알파벳 E의 상이한 분할들을 타겟팅할 수 있다. 계수 트리가 이용 가능한 경우, 세트 C1 내의 상이한 콘텍스트들은 트리의 상이한 내부 노드들을 타겟팅할 수 있다. 예를 들어, 세트 C1 내의 일부 콘텍스트들은 계수 토큰 트리에서 루트 노드를 타겟팅할 수 있다. 예를 들어, 세트 C1 내의 일부 콘텍스트들은 다른 토큰들로부터 ZERO_TOKEN을 분할하는 내부 노드를 타겟팅할 수 있다. 예를 들어, 세트 C1 내의 일부 콘텍스트들은 다른 토큰들로부터 ONE_TOKEN을 분할하는 내부 노드를 타겟팅할 수 있다. 따라서, 코딩 시스템에서 알파벳의 모든 토큰들에 대해 수백 또는 수천 개의 콘텍스트들을 유지하는 대신에, 모든 토큰들에 대해 더 작은 서브세트가 유지될 수 있고, 콘텍스트들의 다른 세트는 중요하거나 중대하거나 또는 더 빈번하게 사용되는 것으로 간주될 수 있는 토큰들을 타겟팅할 수 있다.By using selective mixing, the set C of available contexts in the coding system can be divided into a first set C 0 and a second set C 1 . Using the alphabet E of coefficient tokens as an example, the first set c 0 can be derived from context information affecting the overall distribution for the alphabet E, and the contexts in the set C 1 are only part of the overall distribution for the alphabet E It can be derived from contextual information that affects it. Different contexts in set C 1 may target different partitions of the alphabet E. If a coefficient tree is available, different contexts in set C 1 may target different internal nodes of the tree. For example, some contexts in set C 1 may target the root node in the coefficient token tree. For example, some contexts in set C 1 may target an internal node that splits ZERO_TOKEN from other tokens. For example, some contexts in set C 1 may target an internal node that splits ONE_TOKEN from other tokens. Thus, instead of maintaining hundreds or thousands of contexts for all tokens of the alphabet in a coding system, a smaller subset may be maintained for all tokens, with another set of contexts being important, critical, or more frequent. It is possible to target tokens that can be considered to be widely used.

[00230] 위에서 설명된 인코딩 및 디코딩의 양상들은 인코딩 및 디코딩 기법들의 일부 예들을 예시한다. 그러나, 청구항들에 사용되는 바와 같은 인코딩 및 디코딩이 데이터의 압축, 압축해제, 변환, 또는 임의의 다른 프로세싱 또는 변경을 의미할 수 있다는 것이 이해될 것이다.Aspects of encoding and decoding described above illustrate some examples of encoding and decoding techniques. However, it will be understood that encoding and decoding as used in the claims may mean compression, decompression, transformation, or any other processing or alteration of data.

[0231] "예" 또는 "구현"이라는 단어는 본원에서 예, 사례 또는 예시로서 역할을 하는 것을 의미하기 위해 사용된다. 본원에 "예" 또는 "구현"으로서 설명된 임의의 양상 또는 설계는 반드시 다른 양상들 또는 설계들에 비해 바람직하거나 유리한 것으로 해석되지 않을 것이다. 오히려, "예" 또는 "구현"이라는 단어의 사용은 구체적인 방식으로 개념들을 제시하기 위해 의도된다. 본 출원에 사용된 바와 같이, "또는"이라는 용어는 배타적인 "또는"보다 오히려 포괄적인 "또는"을 의미하도록 의도된다. 즉, 문맥에 의해 달리 특정되거나 문맥으로부터 명확하게 표시되지 않으면, "X가 A 또는 B를 포함한다"라는 언급은 그 자연 포괄 순열들 중 임의의 것을 의미하도록 의도된다. 즉, X가 A를 포함하면; X는 B를 포함하거나; 또는 X는 A 및 B 둘 모두를 포함하고, 이어서 "X는 A 또는 B를 포함한다"는 상기 사례들 중 임의의 것 하에서 만족된다. 게다가, 본 출원 및 첨부된 청구항들에 사용된 바와 같은 "단수 형태"는, 단수 형태로 지시되도록 문맥에 의해 달리 특정되거나 명확하게 표시되지 않으면, 일반적으로 "하나 이상"을 의미하는 것으로 해석되어야 한다. 게다가, 전반에 걸쳐 "구현" 또는 "일 구현"이라는 용어는 이와 같이 설명되지 않으면 동일한 실시예 또는 구현을 의미하도록 의도되지 않는다.[0231] The word "example" or "implementation" is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as an "example" or "implementation" will not necessarily be construed as preferred or advantageous over other aspects or designs. Rather, use of the word "example" or "implementation" is intended to present concepts in a concrete manner. As used herein, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless otherwise specified by context or clearly indicated from the context, the statement "X includes A or B" is intended to mean any of its natural inclusive permutations. That is, if X contains A; X comprises B; or X includes both A and B, then "X includes A or B" is satisfied under any of the preceding instances. Moreover, "a" or "a", as used in this application and the appended claims, should generally be construed to mean "one or more," unless otherwise specified or clearly indicated by context to indicate that the singular form is indicated. . Moreover, the terms “implementation” or “an implementation” throughout are not intended to mean the same embodiment or implementation unless so described.

[0232] 송신국(102) 및/또는 수신국(106)(및 인코더(400) 및 디코더(500)를 포함하여, 이에 저장되고 그리고/또는 이에 의해 실행되는 알고리즘들, 방법들, 명령들 등)의 구현은 하드웨어, 소프트웨어 또는 이들의 임의의 조합으로 실현될 수 있다. 하드웨어는 예컨대, 컴퓨터들, IP(intellectual property) 코어들, ASIC(application-specific integrated circuit)들, 프로그램가능 로직 어레이들, 광학 프로세서들, 프로그램가능 로직 제어기들, 마이크로코드, 마이크로제어기들, 서버들, 마이크로프로세서들, 디지털 신호 프로세서들 또는 임의의 다른 적합한 회로를 포함할 수 있다. 청구항들에서, "프로세서"라는 용어는 전술한 하드웨어 중 임의의 것을 단독으로 또는 조합하여 포함하는 것으로 이해되어야 한다. "신호" 및 "데이터"라는 용어들은 상호 교환 가능하게 사용된다. 또한, 송신국(102) 및 수신국(106)의 부분들은 반드시 동일한 방식으로 구현될 필요가 없다.[0232] Algorithms, methods, instructions, etc. stored thereon and/or executed by the transmitting station 102 and/or the receiving station 106 (and the encoder 400 and decoder 500) ) may be implemented in hardware, software, or any combination thereof. Hardware may include, for example, computers, intellectual property (IP) cores, application-specific integrated circuits (ASICs), programmable logic arrays, optical processors, programmable logic controllers, microcode, microcontrollers, servers. , microprocessors, digital signal processors, or any other suitable circuitry. In the claims, the term "processor" should be understood to include any of the foregoing hardware, alone or in combination. The terms "signal" and "data" are used interchangeably. Also, portions of the transmitting station 102 and the receiving station 106 are not necessarily implemented in the same manner.

[0233] 또한, 일 양상에서, 예컨대, 송신국(102) 또는 수신국(106)은, 실행될 때 본원에 설명된 개별 방법들, 알고리즘들, 및/또는 명령들 중 임의의 것을 수행하는 컴퓨터 프로그램을 갖는 범용 컴퓨터 또는 범용 프로세서를 사용하여 구현될 수 있다. 게다가, 또는 대안적으로, 예컨대, 본원에 설명된 방법들, 알고리즘들, 또는 명령들 중 임의의 것을 수행하기 위한 다른 하드웨어를 포함할 수 있는 특수 목적 컴퓨터/프로세서가 활용될 수 있다.Further, in an aspect, for example, the transmitting station 102 or the receiving station 106 is a computer program that, when executed, performs any of the individual methods, algorithms, and/or instructions described herein. It can be implemented using a general-purpose computer or general-purpose processor having In addition, or alternatively, a special purpose computer/processor may be utilized, which may include, for example, other hardware for performing any of the methods, algorithms, or instructions described herein.

[0234] 송신국(102) 및 수신국(106)은 예컨대 비디오 회의 시스템의 컴퓨터들 상에 구현될 수 있다. 대안적으로, 송신국(102)은 서버 상에 구현될 수 있고, 그리고 수신국(106)은 서버로부터 분리된 디바이스, 이를테면 핸드헬드 통신 디바이스 상에 구현될 수 있다. 이 경우에, 송신국(102)은 인코더(400)를 사용하여, 콘텐츠를 인코딩된 비디오 신호로 인코딩하고 인코딩된 비디오 신호를 통신 디바이스에 송신할 수 있다. 이어서, 차례로, 통신 디바이스는 디코더(500)를 사용하여 인코딩된 비디오 신호를 디코딩할 수 있다. 대안적으로, 통신 디바이스는 통신 디바이스 상에 로컬로 저장된 콘텐츠, 예컨대 송신국(102)에 의해 송신되지 않은 콘텐츠를 디코딩할 수 있다. 다른 송신국(102) 및 수신국(106) 구현 방식들이 이용 가능하다. 예컨대, 수신국(106)은 휴대용 통신 디바이스보다 오히려 일반적 고정식 퍼스널 컴퓨터일 수 있고, 그리고/또는 인코더(400)를 포함하는 디바이스는 또한 디코더(500)를 포함할 수 있다.[0234] The transmitting station 102 and the receiving station 106 may be implemented, for example, on computers of a videoconferencing system. Alternatively, the transmitting station 102 may be implemented on a server, and the receiving station 106 may be implemented on a device separate from the server, such as a handheld communication device. In this case, the transmitting station 102 may use the encoder 400 to encode the content into an encoded video signal and transmit the encoded video signal to the communication device. The communication device, in turn, may then decode the encoded video signal using the decoder 500 . Alternatively, the communication device may decode content stored locally on the communication device, such as content not transmitted by the transmitting station 102 . Other transmitting station 102 and receiving station 106 implementation schemes are available. For example, the receiving station 106 may be a general stationary personal computer rather than a portable communication device, and/or the device including the encoder 400 may also include a decoder 500 .

[0235] 또한, 본 개시내용의 구현들 모두 또는 일부는 예컨대 유형 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체로부터 액세스 가능한 컴퓨터 프로그램 제품 형태를 취할 수 있다. 컴퓨터-사용 가능 또는 컴퓨터-판독가능 매체는 예컨대, 임의의 프로세서에 의해 사용하거나 이와 연관하여 사용하기 위한 프로그램을 유형적으로 포함, 저장, 통신 또는 전송할 수 있는 임의의 디바이스일 수 있다. 매체는 예컨대 전자, 자기, 광학, 전자기 또는 반도체 디바이스일 수 있다. 다른 적합한 매체가 또한 이용 가능하다.[0235] Further, all or some implementations of the present disclosure may take the form of a computer program product, eg, accessible from a tangible computer-usable or computer-readable medium. A computer-usable or computer-readable medium may be, for example, any device capable of tangibly containing, storing, communicating, or transmitting a program for use by or in connection with any processor. The medium may be, for example, an electronic, magnetic, optical, electromagnetic or semiconductor device. Other suitable media are also available.

[0236] 위에서-설명된 실시예들, 구현들 및 양상들은 본 개시내용의 쉬운 이해를 가능하게 하고 본 개시내용을 제한하지 않기 위해 설명되었다. 반대로, 본 개시내용은 첨부된 청구항들의 범위 내에 포함된 다양한 수정들 및 등가 배열들을 커버하도록 의도되고, 그 범위는 모든 그런 수정들 및 등가 배열들을 포함하도록 법 하에서 허용된 가장 넓은 해석에 따라야 한다.[0236] The above-described embodiments, implementations, and aspects have been described to enable an easy understanding of the disclosure and not to limit the disclosure. To the contrary, this disclosure is intended to cover various modifications and equivalent arrangements included within the scope of the appended claims, which scope is to be accorded the broadest interpretation permitted under law to include all such modifications and equivalent arrangements.

Claims (21)

변환 계수 토큰들의 알파벳을 사용하여 변환 계수들을 디코딩하기 위한 장치로서,
각각의 토큰은 개개의 변환 계수 값을 표시하고 그리고 상기 알파벳은 토큰들의 세트를 형성하고,
상기 장치는 프로세서를 포함하고,
상기 프로세서는:
변환 계수 토큰을 엔트로피 디코딩하기 위해, 제1 콘텍스트에 대응하는 제1 확률 분포를 선택하고 ― 상기 제1 확률 분포는 상기 알파벳의 모든 토큰들에 대해 정의됨 ―;
상기 변환 계수 토큰을 엔트로피 디코딩하기 위해, 제2 콘텍스트에 대응하는 제2 확률 분포를 선택하고 ― 상기 제2 확률 분포는 상기 토큰들의 비-자명 분할(non-trivial partition)에 대해 정의되고, 상기 토큰들의 상기 비-자명 분할은 상기 알파벳을 상기 토큰들의 하나 초과의 비-중첩(non-overlapping) 서브세트들로 분할함 ―; 그리고
상기 변환 계수 토큰이 상기 비-자명 분할의 싱글턴 엘리먼트(singleton element)에 포함된다고 결정하는 것에 대한 응답으로 ― 상기 싱글턴 엘리먼트는 상기 비-중첩 서브세트들 중 오직 하나의 엘리먼트만을 포함하는 서브세트임 ―,
혼합 확률을 생성하기 위해, 상기 제1 확률 분포와 상기 제2 확률 분포를 혼합하고, 그리고
상기 혼합 확률을 사용하여, 인코딩된 비트스트림으로부터 상기 변환 계수 토큰을 엔트로피 디코딩하도록
구성되는,
변환 계수들을 디코딩하기 위한 장치.
An apparatus for decoding transform coefficients using an alphabet of transform coefficient tokens, comprising:
each token represents a respective transform coefficient value and the alphabet forms a set of tokens,
The device comprises a processor;
The processor is:
to entropy decode a transform coefficient token, select a first probability distribution corresponding to a first context, wherein the first probability distribution is defined for all tokens of the alphabet;
to entropy decode the transform coefficient token, select a second probability distribution corresponding to a second context, wherein the second probability distribution is defined for a non-trivial partition of the tokens, the token the non-obvious partitioning of splits the alphabet into more than one non-overlapping subsets of the tokens; and
In response to determining that the transform coefficient token is included in a singleton element of the non-obvious partition, the singleton element being a subset that includes only one element of the non-overlapping subsets. ,
mixing the first probability distribution and the second probability distribution to produce a mixed probability, and
entropy decode the transform coefficient token from an encoded bitstream, using the mixing probability.
composed,
An apparatus for decoding transform coefficients.
제1 항에 있어서,
상기 프로세서는:
상기 변환 계수 토큰이 상기 비-자명 분할의 싱글턴 엘리먼트에 포함되지 않는다는 조건 하에서, 상기 인코딩된 비트스트림으로부터 상기 변환 계수 토큰을 엔트로피 디코딩하기 위해, 상기 제1 확률 분포를 사용하도록
구성되는,
변환 계수들을 디코딩하기 위한 장치.
According to claim 1,
The processor is:
use the first probability distribution to entropy decode the transform coefficient token from the encoded bitstream under the condition that the transform coefficient token is not included in the singleton element of the non-obvious partition.
composed,
An apparatus for decoding transform coefficients.
제1 항 또는 제2 항에 있어서,
상기 제1 확률 분포는 상기 제1 콘텍스트로부터 획득된 확률 분포인,
변환 계수들을 디코딩하기 위한 장치.
3. The method according to claim 1 or 2,
wherein the first probability distribution is a probability distribution obtained from the first context;
An apparatus for decoding transform coefficients.
제1 항 또는 제2 항에 있어서,
상기 제2 확률 분포는 상기 토큰들의 관찰된 분포인,
변환 계수들을 디코딩하기 위한 장치.
3. The method according to claim 1 or 2,
wherein the second probability distribution is the observed distribution of the tokens;
An apparatus for decoding transform coefficients.
제1 항에 있어서,
상기 인코딩된 비트스트림으로부터 상기 변환 계수 토큰을 엔트로피 디코딩하기 위해, 상기 제1 확률 분포와 상기 제2 확률 분포를 혼합하는 것은:
상기 제1 확률 분포를 사용하여, 상기 변환 계수 토큰을 디코딩하기 위한 제1 조건부 확률을 결정하는 것 ― 상기 제1 조건부 확률은 상기 알파벳의 다른 변환 계수 토큰들이 주어지는 상기 변환 계수 토큰의 조건부 확률임 ―;
상기 제2 확률 분포를 사용하여, 상기 변환 계수 토큰을 디코딩하기 위한 제2 조건부 확률을 결정하는 것 ― 상기 제2 조건부 확률은 상기 비-자명 분할의 다른 엘리먼트들이 주어진 상기 비-자명 분할의 싱글턴 엘리먼트의 조건부 확률임 ―; 및
상기 제1 조건부 확률 및 상기 제2 조건부 확률을 사용하여, 상기 변환 계수 토큰을 디코딩하기 위한 혼합 확률을 결정하는 것
을 포함하는,
변환 계수들을 디코딩하기 위한 장치.
According to claim 1,
Mixing the first probability distribution and the second probability distribution to entropy decode the transform coefficient token from the encoded bitstream comprises:
determining, using the first probability distribution, a first conditional probability for decoding the transform coefficient token, wherein the first conditional probability is a conditional probability of the transform coefficient token given other transform coefficient tokens of the alphabet; ;
determining, using the second probability distribution, a second conditional probability for decoding the transform coefficient token, the second conditional probability being a singleton element of the non-obvious partition given other elements of the non-obvious partition is the conditional probability of −; and
determining a mixing probability for decoding the transform coefficient token using the first conditional probability and the second conditional probability
comprising,
An apparatus for decoding transform coefficients.
제1 항 또는 제2 항에 있어서,
상기 변환 계수 토큰에 대응하는 변환 계수는 변환 블록의 위치에 있고, 그리고
상기 제2 콘텍스트는 상기 위치에 이웃하는 위치들에서의 제로(zero) 계수들의 수를 사용하여 결정되는,
변환 계수들을 디코딩하기 위한 장치.
3. The method according to claim 1 or 2,
A transform coefficient corresponding to the transform coefficient token is at a location of a transform block, and
wherein the second context is determined using a number of zero coefficients in locations neighboring the location.
An apparatus for decoding transform coefficients.
제6 항에 있어서,
상기 위치에 이웃하는 위치들은 스캔 순서에 기초하는,
변환 계수들을 디코딩하기 위한 장치.
7. The method of claim 6,
The locations neighboring the location are based on scan order,
An apparatus for decoding transform coefficients.
제1 항 또는 제2 항에 있어서,
상기 토큰들의 알파벳은 계수 토큰 트리로 구성되고;
상기 제1 확률 분포는 상기 계수 토큰 트리의 내부 노드들에 대해 정의되고;
상기 제2 확률 분포는 상기 계수 토큰 트리의 전부가 아닌 일부 내부 노드들에 대해 정의되고;
상기 인코딩된 비트스트림으로부터 상기 변환 계수 토큰을 엔트로피 디코딩하는 것은, 상기 혼합 확률을 사용하여, 상기 계수 토큰 트리의 제1 내부 노드에 관련된 제1 판정을 디코딩하는 것을 포함하는,
변환 계수들을 디코딩하기 위한 장치.
3. The method according to claim 1 or 2,
the alphabet of tokens is organized into a coefficient token tree;
the first probability distribution is defined for inner nodes of the coefficient token tree;
the second probability distribution is defined for some but not all internal nodes of the coefficient token tree;
wherein entropy decoding the transform coefficient token from the encoded bitstream comprises decoding, using the mixing probability, a first decision related to a first inner node of the coefficient token tree;
An apparatus for decoding transform coefficients.
토큰들의 알파벳을 사용하여 변환 계수들을 코딩하기 위한 방법으로서,
각각의 토큰은 개개의 변환 계수 값을 표시하고 그리고 상기 알파벳은 토큰들의 세트를 형성하고,
상기 방법은:
변환 계수의 토큰을 엔트로피 코딩하기 위해, 제1 콘텍스트에 대응하는 제1 확률 분포를 선택하는 단계 ― 상기 제1 확률 분포는 상기 알파벳의 일부 토큰들에 대해 정의됨 ―;
상기 토큰을 엔트로피 코딩하기 위해, 제2 콘텍스트에 대응하는 제2 확률 분포를 선택하는 단계 ― 상기 제2 확률 분포는 상기 토큰들의 비-자명 분할에 대해 정의되고, 상기 토큰들의 상기 비-자명 분할은 상기 알파벳을 상기 토큰들의 하나 초과의 비-중첩 서브세트들로 분할함 ―; 및
상기 제1 확률 분포가 상기 토큰에 대한 확률을 포함하고 그리고 상기 제2 확률 분포가 상기 토큰에 대한 제2 확률을 포함한다고 결정하는 것에 대한 응답으로,
혼합 확률을 생성하기 위해, 상기 제1 확률 분포와 상기 제2 확률 분포를 혼합하는 단계, 및
상기 혼합 확률을 사용하여 상기 토큰을 코딩하는 단계
를 포함하는,
변환 계수들을 코딩하기 위한 방법.
A method for coding transform coefficients using an alphabet of tokens, comprising:
each token represents a respective transform coefficient value and the alphabet forms a set of tokens,
The method is:
selecting a first probability distribution corresponding to a first context to entropy code the token of the transform coefficient, wherein the first probability distribution is defined for some tokens of the alphabet;
selecting a second probability distribution corresponding to a second context to entropy code the token, wherein the second probability distribution is defined for a non-obvious partition of the tokens, wherein the non-obvious partition of the tokens is partitioning the alphabet into more than one non-overlapping subsets of the tokens; and
in response to determining that the first probability distribution comprises a probability for the token and the second probability distribution comprises a second probability for the token;
mixing the first probability distribution and the second probability distribution to produce a mixed probability; and
coding the token using the mixing probability.
containing,
A method for coding transform coefficients.
제9 항에 있어서,
상기 제2 확률 분포가 상기 토큰에 대한 확률을 포함하지 않는다는 조건 하에서, 상기 토큰을 엔트로피 코딩하기 위해, 상기 제1 확률 분포를 사용하는 단계를 더 포함하는,
변환 계수들을 코딩하기 위한 방법.
10. The method of claim 9,
using the first probability distribution to entropy code the token under the condition that the second probability distribution does not include a probability for the token.
A method for coding transform coefficients.
제9 항 또는 제10 항에 있어서,
상기 제1 확률 분포는 상기 제1 콘텍스트로부터 획득된 확률 분포인,
변환 계수들을 코딩하기 위한 방법.
11. The method of claim 9 or 10,
wherein the first probability distribution is a probability distribution obtained from the first context;
A method for coding transform coefficients.
제9 항 또는 제10 항에 있어서,
상기 제2 확률 분포는 상기 토큰들의 관찰된 분포인,
변환 계수들을 코딩하기 위한 방법.
11. The method of claim 9 or 10,
wherein the second probability distribution is the observed distribution of the tokens;
A method for coding transform coefficients.
제9 항 또는 제10 항에 있어서,
상기 제2 확률 분포가 상기 토큰에 대한 확률을 포함한다고 결정하는 것은:
상기 토큰이 상기 비-자명 분할의 싱글턴 엘리먼트에 포함된다고 결정하는 것을 포함하고,
상기 싱글턴 엘리먼트는 상기 비-중첩 서브세트들 중 오직 하나의 엘리먼트만을 포함하는 서브세트인,
변환 계수들을 코딩하기 위한 방법.
11. The method of claim 9 or 10,
Determining that the second probability distribution includes a probability for the token comprises:
determining that the token is included in the singleton element of the non-obvious partition;
wherein the singleton element is a subset including only one element of the non-overlapping subsets;
A method for coding transform coefficients.
제13 항에 있어서,
상기 토큰을 엔트로피 코딩하기 위해, 상기 제1 확률 분포와 상기 제2 확률 분포를 혼합하는 것은:
상기 제1 확률 분포를 사용하여, 상기 토큰을 코딩하기 위한 제1 조건부 확률을 결정하는 것 ― 상기 제1 조건부 확률은 상기 알파벳의 다른 토큰들에 관련된 상기 토큰의 조건부 확률임 ―;
상기 제2 확률 분포를 사용하여, 상기 토큰을 코딩하기 위한 제2 조건부 확률을 결정하는 것 ― 상기 제2 조건부 확률은 상기 비-자명 분할의 다른 엘리먼트들에 관련된 상기 비-자명 분할의 싱글턴 엘리먼트의 조건부 확률임 ―; 및
상기 제1 조건부 확률 및 상기 제2 조건부 확률을 사용하여, 상기 토큰을 코딩하기 위한 혼합 확률을 결정하는 것
을 포함하는,
변환 계수들을 코딩하기 위한 방법.
14. The method of claim 13,
To entropy code the token, mixing the first probability distribution and the second probability distribution comprises:
determining, using the first probability distribution, a first conditional probability for coding the token, wherein the first conditional probability is a conditional probability of the token relative to other tokens of the alphabet;
determining, using the second probability distribution, a second conditional probability for coding the token, wherein the second conditional probability is of a singleton element of the non-obvious partition relative to other elements of the non-obvious partition. conditional probability ―; and
determining a mixing probability for coding the token using the first conditional probability and the second conditional probability
comprising,
A method for coding transform coefficients.
제9 항 또는 제10 항에 있어서,
상기 변환 계수는 일정 위치에 있고, 그리고
상기 제2 콘텍스트는 이웃 위치들에서의 제로 계수들의 수를 사용하여 결정되는,
변환 계수들을 코딩하기 위한 방법.
11. The method of claim 9 or 10,
The transform coefficient is at a position, and
wherein the second context is determined using a number of zero coefficients in neighboring locations;
A method for coding transform coefficients.
제15 항에 있어서,
상기 이웃 위치들은 스캔 순서에 기초하는,
변환 계수들을 코딩하기 위한 방법.
16. The method of claim 15,
the neighboring locations are based on scan order,
A method for coding transform coefficients.
계수 토큰 트리로 구성된 토큰들의 알파벳을 사용하여 변환 계수들을 디코딩하기 위한 장치로서,
프로세서를 포함하고,
상기 프로세서는:
제1 콘텍스트에 대응하는 제1 확률 분포를 선택하고 ― 상기 제1 확률 분포는 상기 계수 토큰 트리의 내부 노드들에 대해 정의됨 ―;
제2 콘텍스트에 대응하는 제2 확률 분포를 선택하고 ― 상기 제2 확률 분포는 상기 계수 토큰 트리의 전부가 아닌 일부 내부 노드들에 대해 정의됨 ―; 및
혼합 확률을 사용하여, 상기 계수 토큰 트리의 제1 내부 노드에 관련된 제1 판정을 디코딩함으로써 토큰을 디코딩하도록
구성되고,
상기 혼합 확률은 상기 제1 확률 분포와 상기 제2 확률 분포를 혼합함으로써 생성되는,
변환 계수들을 디코딩하기 위한 장치.
An apparatus for decoding transform coefficients using an alphabet of tokens organized into a coefficient token tree, comprising:
including a processor;
The processor is:
select a first probability distribution corresponding to a first context, wherein the first probability distribution is defined for internal nodes of the coefficient token tree;
select a second probability distribution corresponding to a second context, wherein the second probability distribution is defined for some but not all internal nodes of the coefficient token tree; and
to decode a token by decoding a first decision related to a first inner node of the coefficient token tree, using the mixed probability.
composed,
wherein the mixing probability is generated by mixing the first probability distribution and the second probability distribution;
An apparatus for decoding transform coefficients.
제17 항에 있어서,
토큰을 디코딩하는 것은:
상기 제1 확률 분포를 사용하여, 상기 계수 토큰 트리의 제2 내부 노드에 관련된 제2 판정을 디코딩하는 것을 포함하는,
변환 계수들을 디코딩하기 위한 장치.
18. The method of claim 17,
Decoding the token is:
decoding a second decision related to a second inner node of the coefficient token tree using the first probability distribution;
An apparatus for decoding transform coefficients.
제18 항에 있어서,
상기 제1 내부 노드는 상기 제2 내부 노드보다 상기 토큰 트리의 루트 노드에 더 가까운,
변환 계수들을 디코딩하기 위한 장치.
19. The method of claim 18,
the first internal node is closer to the root node of the token tree than the second internal node;
An apparatus for decoding transform coefficients.
제17 항 내지 제19 항 중 어느 한 항에 있어서,
상기 제1 내부 노드는 주어진 스캔 순서에 대해 마지막 비-제로 계수를 나타내는 블록-끝(end-of-block)을 표시하는,
변환 계수들을 디코딩하기 위한 장치.
20. The method according to any one of claims 17 to 19,
wherein the first internal node marks an end-of-block representing the last non-zero coefficient for a given scan order;
An apparatus for decoding transform coefficients.
삭제delete
KR1020197035900A 2017-08-29 2018-05-01 Selective Blending for Entropy Coding in Video Compression KR102314801B1 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762551341P 2017-08-29 2017-08-29
US62/551,341 2017-08-29
US15/707,278 2017-09-18
US15/707,278 US10735736B2 (en) 2017-08-29 2017-09-18 Selective mixing for entropy coding in video compression
PCT/US2018/030357 WO2019045798A1 (en) 2017-08-29 2018-05-01 Selective mixing of probability distributions for entropy coding in video compression

Publications (2)

Publication Number Publication Date
KR20200003888A KR20200003888A (en) 2020-01-10
KR102314801B1 true KR102314801B1 (en) 2021-10-18

Family

ID=65436426

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197035900A KR102314801B1 (en) 2017-08-29 2018-05-01 Selective Blending for Entropy Coding in Video Compression

Country Status (6)

Country Link
US (5) US10735736B2 (en)
EP (2) EP3677035A1 (en)
JP (1) JP6923677B2 (en)
KR (1) KR102314801B1 (en)
CN (3) CN110692243B (en)
WO (2) WO2019045797A1 (en)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10735736B2 (en) * 2017-08-29 2020-08-04 Google Llc Selective mixing for entropy coding in video compression
WO2019074744A1 (en) * 2017-10-09 2019-04-18 Fovia Inc. Bit prediction method and system using a statistical model
CN109788290A (en) * 2017-11-13 2019-05-21 慧荣科技股份有限公司 Image processor and the lossless image compressing method for utilizing intra prediction
WO2019140083A1 (en) * 2018-01-12 2019-07-18 Futurewei Technologies, Inc. Adaptive multi-hypothesis context-adaptive binary arithmetic coding (mcabac)
WO2021162722A1 (en) * 2020-02-12 2021-08-19 Google Llc Multi-context entropy coding for compression of graphs
EP4173292A4 (en) * 2020-06-25 2024-03-27 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for image compressing and coding with deep learning
CN114079780B (en) * 2020-08-20 2024-10-25 腾讯科技(深圳)有限公司 Video decoding method, video encoding method, device, equipment and storage medium
US11681508B2 (en) * 2020-08-24 2023-06-20 Cisco Technology, Inc. Source code analysis to map analysis perspectives to events
EP4307683A1 (en) * 2021-03-17 2024-01-17 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Coefficient coding/decoding method, encoder, decoder, and computer storage medium
US20240015329A1 (en) * 2021-09-27 2024-01-11 Arkaos S.A. Method and apparatus for compression and decompression of video data without intraframe prediction
CN114039718B (en) * 2021-10-18 2023-12-19 湖南遥昇通信技术有限公司 Hash coding method and system of self-adaptive weighted probability model
CN114024551A (en) * 2021-10-22 2022-02-08 湖南遥昇通信技术有限公司 Data lossless compression method, system, electronic device and medium
US11669281B1 (en) 2021-11-19 2023-06-06 Meta Platforms, Inc. Count circuit for symbol statistics
CN118743215A (en) * 2022-01-08 2024-10-01 抖音视界有限公司 Method, apparatus and medium for video processing
CN118317095A (en) * 2023-01-09 2024-07-09 华为技术有限公司 Data encoding and decoding method and related device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011052234A1 (en) 2009-11-02 2011-05-05 パナソニック株式会社 Image encoding method, image decoding method, image encoding device and image decoding device

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5357250A (en) * 1992-11-20 1994-10-18 International Business Machines Corporation Adaptive computation of symbol probabilities in n-ary strings
JP2840589B2 (en) * 1996-02-09 1998-12-24 富士通株式会社 Data compression device and data decompression device
EP1305952A2 (en) * 2000-07-25 2003-05-02 Koninklijke Philips Electronics N.V. Video encoding method using a wavelet decomposition
US7599435B2 (en) * 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
US7397973B2 (en) * 2004-02-27 2008-07-08 Mediatek Inc. Method for controlling interpolation direction and related device
US20070071090A1 (en) * 2005-06-21 2007-03-29 National Chiao Tung University Method for performing context adaptive binary arithmetic coding with stochastic bit reshuffling for fine granularity scalability
US7599840B2 (en) 2005-07-15 2009-10-06 Microsoft Corporation Selectively using multiple entropy models in adaptive coding and decoding
GB0600141D0 (en) * 2006-01-05 2006-02-15 British Broadcasting Corp Scalable coding of video signals
KR100834757B1 (en) * 2006-03-28 2008-06-05 삼성전자주식회사 Method for enhancing entropy coding efficiency, video encoder and video decoder thereof
US20070233477A1 (en) 2006-03-30 2007-10-04 Infima Ltd. Lossless Data Compression Using Adaptive Context Modeling
US8184712B2 (en) * 2006-04-30 2012-05-22 Hewlett-Packard Development Company, L.P. Robust and efficient compression/decompression providing for adjustable division of computational complexity between encoding/compression and decoding/decompression
US7233269B1 (en) * 2006-06-30 2007-06-19 International Business Machines Corporation Method and apparatus for constructing efficient codes for Wyner-Ziv video compression systems
KR100809301B1 (en) * 2006-07-20 2008-03-04 삼성전자주식회사 Method and apparatus for entropy encoding/decoding
KR101351730B1 (en) * 2006-08-28 2014-01-16 톰슨 라이센싱 Method and apparatus for determining expected distortion in decoded video blocks
US7783123B2 (en) * 2006-09-25 2010-08-24 Hewlett-Packard Development Company, L.P. Method and system for denoising a noisy signal generated by an impulse channel
JP2008242034A (en) * 2007-03-27 2008-10-09 Japan Aerospace Exploration Agency Device and method for integrated encoding and decoding for performing data compression/expansion, encoding/decoding, and error control
CN101282121B (en) * 2007-04-05 2010-10-06 安凯(广州)微电子技术有限公司 Method for decoding Haffmann based on conditional probability
US8798137B2 (en) * 2008-02-29 2014-08-05 City University Of Hong Kong Bit rate estimation in data or video compression
US20110002554A1 (en) * 2009-06-11 2011-01-06 Motorola, Inc. Digital image compression by residual decimation
EP3661206A1 (en) * 2009-07-02 2020-06-03 InterDigital VC Holdings, Inc. Methods and apparatus for video encoding and decoding binary sets using adaptive tree selection
US8699565B2 (en) * 2009-08-27 2014-04-15 Hewlett-Packard Development Company, L.P. Method and system for mixed-resolution low-complexity information coding and a corresponding method and system for decoding coded information
EP2362657B1 (en) * 2010-02-18 2013-04-24 Research In Motion Limited Parallel entropy coding and decoding methods and devices
US8487791B2 (en) 2010-02-18 2013-07-16 Research In Motion Limited Parallel entropy coding and decoding methods and devices
CN103119849B (en) * 2010-04-13 2017-06-16 弗劳恩霍夫应用研究促进协会 Probability interval partition encoding device and decoder
US20110280314A1 (en) * 2010-05-12 2011-11-17 Texas Instruments Incorporated Slice encoding and decoding processors, circuits, devices, systems and processes
KR101682207B1 (en) * 2010-08-23 2016-12-12 에스케이플래닛 주식회사 Apparatus and method for decoding using joint tokenization and translation
WO2012092662A1 (en) 2011-01-04 2012-07-12 Research In Motion Limited Coding of residual data in predictive compression
CN102176750B (en) * 2011-03-10 2012-12-26 西安电子科技大学 High-performance adaptive binary arithmetic encoder
US9164983B2 (en) * 2011-05-27 2015-10-20 Robert Bosch Gmbh Broad-coverage normalization system for social media language
CN102186087B (en) * 2011-06-24 2013-06-12 哈尔滨工业大学 Parallel non-zero coefficient context modeling method for binary arithmetic coding
GB2492394B (en) * 2011-06-30 2014-11-05 Canon Kk Method of entropy encoding and decoding an image, and corresponding devices
US10390046B2 (en) * 2011-11-07 2019-08-20 Qualcomm Incorporated Coding significant coefficient information in transform skip mode
US9088796B2 (en) * 2011-11-07 2015-07-21 Sharp Kabushiki Kaisha Video decoder with enhanced CABAC decoding
US20130121410A1 (en) * 2011-11-14 2013-05-16 Mediatek Inc. Method and Apparatus of Video Encoding with Partitioned Bitstream
US9270986B2 (en) * 2012-04-13 2016-02-23 Qualcomm Incorporated Level decision in rate distortion optimized quantization
US9351003B2 (en) * 2013-09-27 2016-05-24 Apple Inc. Context re-mapping in CABAC encoder
US9179151B2 (en) * 2013-10-18 2015-11-03 Google Inc. Spatial proximity context entropy coding
JP6312312B2 (en) * 2014-04-15 2018-04-18 日本放送協会 Context model generation device, encoding device, and decoding device
US20150334425A1 (en) 2014-05-14 2015-11-19 Blackberry Limited Adaptive context initialization
US9641854B2 (en) * 2014-05-19 2017-05-02 Mediatek Inc. Count table maintenance apparatus for maintaining count table during processing of frame and related count table maintenance method
CA2950171C (en) * 2014-05-28 2019-11-19 Arris Enterprises Llc Content aware scheduling in a hevc decoder operating on a multi-core processor platform
US9918105B2 (en) * 2014-10-07 2018-03-13 Qualcomm Incorporated Intra BC and inter unification
US20170180757A1 (en) 2015-12-18 2017-06-22 Blackberry Limited Binarizer selection for image and video coding
US10142635B2 (en) * 2015-12-18 2018-11-27 Blackberry Limited Adaptive binarizer selection for image and video coding
CN106713935B (en) * 2017-01-09 2019-06-11 杭州电子科技大学 A kind of HEVC block division fast method based on Bayesian decision
US10735736B2 (en) * 2017-08-29 2020-08-04 Google Llc Selective mixing for entropy coding in video compression

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011052234A1 (en) 2009-11-02 2011-05-05 パナソニック株式会社 Image encoding method, image decoding method, image encoding device and image decoding device

Also Published As

Publication number Publication date
JP2020522182A (en) 2020-07-27
CN110771171B (en) 2022-09-06
US10735736B2 (en) 2020-08-04
WO2019045798A1 (en) 2019-03-07
US20190068970A1 (en) 2019-02-28
US20200228804A1 (en) 2020-07-16
KR20200003888A (en) 2020-01-10
US20210120249A1 (en) 2021-04-22
US10448019B2 (en) 2019-10-15
CN115514978A (en) 2022-12-23
JP6923677B2 (en) 2021-08-25
CN115514978B (en) 2024-03-26
US20190394467A1 (en) 2019-12-26
EP3677035A1 (en) 2020-07-08
CN110771171A (en) 2020-02-07
US20190068994A1 (en) 2019-02-28
WO2019045797A1 (en) 2019-03-07
US11405618B2 (en) 2022-08-02
CN110692243A (en) 2020-01-14
US10645389B2 (en) 2020-05-05
US10887595B2 (en) 2021-01-05
CN110692243B (en) 2022-08-23
EP3677027A1 (en) 2020-07-08
EP3677027B1 (en) 2023-11-08

Similar Documents

Publication Publication Date Title
KR102314801B1 (en) Selective Blending for Entropy Coding in Video Compression
CN115604473B (en) Method and apparatus for coding blocks of video data
JP2022048351A (en) Coding of last significant coefficient flag
US11558619B2 (en) Adaptation of scan order for entropy coding
EP3673653B1 (en) Embedding information about token tree traversal
CN114556790A (en) Probability estimation for entropy coding

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant