KR102314801B1 - Selective Blending for Entropy Coding in Video Compression - Google Patents
Selective Blending for Entropy Coding in Video Compression Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/18—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods 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/196—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/96—Tree 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
[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
[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
[0038] 네트워크(104)는 비디오 스트림의 인코딩 및 디코딩을 위해 송신국(102)과 수신국(106)을 연결할 수 있다. 구체적으로, 비디오 스트림은 송신국(102)에서 인코딩될 수 있고, 인코딩된 비디오 스트림은 수신국(106)에서 디코딩될 수 있다. 네트워크(104)는 예를 들어 인터넷일 수 있다. 네트워크(104)는 또한, 로컬 영역 네트워크(LAN), 광역 네트워크(WAN), 가상 사설 네트워크(VPN), 셀룰러 전화 네트워크, 또는 비디오 스트림을 송신국(102)으로부터 이 예에서는 수신국(106)으로 전송하는 임의의 다른 수단일 수 있다.The
[0039] 일 예에서, 수신국(106)은 도 2에 설명된 것과 같은 하드웨어의 내부 구성을 갖는 컴퓨터일 수 있다. 그러나, 수신국(106)의 다른 적절한 구현들이 가능하다. 예를 들어, 수신국(106)의 프로세싱은 다수의 디바이스들 사이에서 분산될 수 있다.In one example, the receiving
[0040] 비디오 인코딩 및 디코딩 시스템(100)의 다른 구현들이 가능하다. 예를 들어, 구현은 네트워크(104)를 생략할 수 있다. 다른 구현에서, 비디오 스트림은 인코딩된 후에, 수신국(106) 또는 메모리를 갖는 임의의 다른 디바이스로 추후에 송신하기 위해 저장될 수 있다. 일 구현에서, 수신국(106)은 인코딩된 비디오 스트림을 (예를 들어, 네트워크(104), 컴퓨터 버스 및/또는 일부 통신 경로를 통해) 수신하고, 추후에 디코딩하기 위해 비디오 스트림을 저장한다. 예시적인 구현에서, 실시간 전송 프로토콜(RTP)은 네트워크(104)를 통한 인코딩된 비디오의 송신을 위해 사용된다. 다른 구현에서, RTP 이외의 전송 프로토콜, 예를 들어 HTTP(Hyper Text Transfer Protocol)-기반 비디오 스트리밍 프로토콜이 사용될 수 있다.Other implementations of the video encoding and
[0041] 화상 회의 시스템에서 사용될 때, 예를 들어, 송신국(102) 및/또는 수신국(106)은 아래에서 설명되는 바와 같이 비디오 스트림을 인코딩 및 디코딩을 모두 하는 능력을 포함할 수 있다. 예를 들어, 수신국(106)은 화상 회의 참가자일 수 있으며, 이는 화상 회의 서버(예를 들어, 송신국(102))로부터 인코딩된 비디오 비트스트림을 수신하여 디코딩 및 뷰잉하고, 추가로, 자신의 비디오 비트스트림을 인코딩하고, 이를 다른 참가자들에 의한 디코딩 및 뷰잉을 위해 화상 회의 서버로 송신한다.[0041] When used in a videoconferencing system, for example, the transmitting
[0042] 도 2는 송신국 또는 수신국을 구현할 수 있는 컴퓨팅 디바이스(200)의 예의 블록도이다. 예를 들어, 컴퓨팅 디바이스(200)는 도 1의 송신국(102) 및 수신국(106) 중 하나 또는 둘 모두를 구현할 수 있다. 컴퓨팅 디바이스(200)는 다수의 컴퓨팅 디바이스를 포함하는 컴퓨팅 시스템의 형태, 또는 단일 컴퓨팅 디바이스의 형태, 예를 들어, 모바일 폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 노트북 컴퓨터, 데스크톱 컴퓨터 등일 수 있다.2 is a block diagram of an example of a
[0043] 컴퓨팅 디바이스(200)의 CPU(202)는 중앙 프로세싱 유닛일 수 있다. 대안적으로, CPU(202)는, 현재 존재하거나 이후에 개발되는, 정보를 조작하거나 프로세싱할 수 있는 임의의 다른 타입의 디바이스 또는 다수의 디바이스들일 수 있다. 개시된 구현들이 도시된 바와 같이 단일 프로세서, 예를 들어, CPU(202)로 실시될 수 있지만, 속도 및 효율의 이점들이 하나 초과의 프로세서를 사용하여 달성될 수 있다.The
[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)에 로딩될 수 있다.
[0045] 컴퓨팅 디바이스(200)는 또한, 디스플레이(218)와 같은 하나 이상의 출력 디바이스들을 포함할 수 있다. 디스플레이(218)는, 일 예에서, 터치 입력들을 감지하도록 동작가능한 터치 감지 엘리먼트와 디스플레이를 결합하는 터치 감지 디스플레이일 수 있다. 디스플레이(218)는 버스(212)를 통해 CPU(202)에 커플링될 수 있다. 사용자가 컴퓨팅 디바이스(200)를 프로그래밍하거나 달리 사용할 수 있게 하는 다른 출력 디바이스들이 디스플레이(218)에 추가하여 또는 대안으로서 제공될 수 있다. 출력 디바이스가 디스플레이이거나 디스플레이를 포함하는 경우, 디스플레이는 LCD(liquid crystal display), CRT(cathode-ray tube) 디스플레이, 또는 유기 LED(OLED) 디스플레이와 같은 LED(light emitting diode) 디스플레이를 포함하는 다양한 방식들로 구현될 수 있다.
[0046] 컴퓨팅 디바이스(200)는 또한, 이미지-감지 디바이스(220), 예를 들어, 컴퓨팅 디바이스(200)를 동작시키는 사용자의 이미지와 같은 이미지를 감지할 수 있는, 현재 존재하거나 이후에 개발되는, 카메라 또는 임의의 다른 이미지-감지 디바이스(220)를 포함할 수 있거나 또는 이와 통신할 수 있다. 이미지-감지 디바이스(220)는 컴퓨팅 디바이스(200)를 동작시키는 사용자를 향하도록 포지셔닝될 수 있다. 일 예에서, 이미지-감지 디바이스(220)의 포지션 및 광축은, 디스플레이(218)에 바로 인접하고 디스플레이(218)가 보이는 영역을 시야가 포함하도록 구성될 수 있다.
[0047] 컴퓨팅 디바이스(200)는 또한, 사운드-감지 디바이스(222), 예를 들어, 컴퓨팅 디바이스(200) 근처의 사운드들을 감지할 수 있는, 현재 존재하거나 이후에 개발되는, 마이크로폰 또는 임의의 다른 사운드-감지 디바이스를 포함할 수 있거나 또는 이와 통신할 수 있다. 사운드-감지 디바이스(222)는 컴퓨팅 디바이스(200)를 동작시키는 사용자를 향하도록 포지셔닝될 수 있고, 사용자가 컴퓨팅 디바이스(200)를 동작시키는 동안, 사용자에 의해 이루어지는 사운드들, 예를 들어 스피치 또는 다른 발화들을 수신하도록 구성될 수 있다.
[0048] 도 2는 컴퓨팅 디바이스(200)의 CPU(202) 및 메모리(204)가 단일 유닛으로 통합된 것으로 도시하지만, 다른 구성들이 활용될 수 있다. CPU(202)의 동작들은 직접적으로 또는 로컬 영역 또는 다른 네트워크를 통해 커플링될 수 있는 다수의 머신들(각각의 머신은 프로세서들 중 하나 이상을 가짐)에 걸쳐 분산될 수 있다. 메모리(204)는, 네트워크-기반 메모리, 또는 컴퓨팅 디바이스(200)의 동작을 수행하는 다수의 머신들에서의 메모리와 같이, 다수의 머신들에 걸쳐 분산될 수 있다. 여기서 단일 버스로 도시되어 있지만, 컴퓨팅 디바이스(200)의 버스(212)는 다수의 버스들로 구성될 수 있다. 또한, 이차 저장소(214)는 컴퓨팅 디바이스(200)의 다른 컴포넌트들에 직접적으로 커플링될 수 있거나, 또는 네트워크를 통해 액세스될 수 있고, 메모리 카드와 같은 단일 통합 유닛 또는 다수의 메모리 카드들과 같은 다수의 유닛들을 포함할 수 있다. 따라서, 컴퓨팅 디바이스(200)는 다양한 구성들로 구현될 수 있다.2 shows the
[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
[0050] 프레임(306)이 세그먼트들(308)로 분할되는지 여부에 관계없이, 프레임(306)은, 예를 들어, 프레임(306) 내의 16x16 픽셀들에 대응하는 데이터를 포함할 수 있는 블록들(310)로 더 세분될 수 있다. 블록들(310)은 또한, 픽셀 데이터의 하나 이상의 세그먼트들(308)로부터의 데이터를 포함하도록 배열될 수 있다. 블록들(310)은 또한, 4x4 픽셀들, 8x8 픽셀들, 16x8 픽셀들, 8x16 픽셀들, 16x16 픽셀들 이상과 같은 임의의 다른 적절한 사이즈일 수 있다. Irrespective of whether the
[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
[0052] 비디오 스트림(300)이 인코딩을 위해 제시될 때, 프레임(306)은 블록들의 단위로 프로세싱될 수 있다. 인트라/인터 예측 스테이지(402)에서, 블록은 인트라-프레임 예측(인트라-예측이라고 또한 지칭됨) 또는 인터-프레임 예측(인터-예측이라고 또한 지칭됨) 또는 이 둘의 조합을 사용하여 인코딩될 수 있다. 어떤 경우에도, 예측 블록이 형성될 수 있다. 인트라-예측의 경우, 예측 블록의 전부 또는 일부는 이전에 인코딩 및 재구성된 현재 프레임 내의 샘플들로부터 형성될 수 있다. 인터-예측의 경우, 예측 블록의 전부 또는 일부는 모션 벡터들을 사용하여 결정된 하나 이상의 이전에 구성된 레퍼런스 프레임들 내의 샘플들로부터 형성될 수 있다. When the
[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/
[0054] 양자화 스테이지(406)는 양자화기 값 또는 양자화 레벨을 사용하여, 변환 계수들을 이산 양자 값들로 변환하며, 이들은 양자화 변환 계수들로서 지칭된다. 예를 들어, 변환 계수들은 양자화기 값으로 제산되어 절단될 수 있다. 이어서, 양자화된 변환 계수들은 엔트로피 인코딩 스테이지(408)에 의해 엔트로피 인코딩된다. 엔트로피 코딩은 토큰 및 이진 트리들을 포함하는 임의의 수의 기술들을 사용하여 수행될 수 있다. 이어서, 엔트로피-인코딩된 계수들은, 예를 들어, 사용된 예측 타입, 변환 타입, 모션 벡터들 및 양자화기 값을 포함할 수 있는, 블록을 디코딩하는데 사용되는 다른 정보와 함께, 압축된 비트스트림(420)으로 출력된다. 블록을 디코딩하기 위한 정보는 압축된 비트스트림(420) 내의 블록, 프레임, 슬라이스 및/또는 섹션 헤더들로 엔트로피 코딩될 수 있다. 압축된 비트스트림(420)은 또한, 인코딩된 비디오 스트림 또는 인코딩된 비디오 비트스트림으로서 지칭될 수 있으며, 이 용어들은 본원에서 교환 가능하게 사용될 것이다. The
[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
[0056] 인코더(400)의 다른 변형들은 압축된 비트스트림(420)을 인코딩하기 위해 사용될 수 있다. 예를 들어, 비-변환 기반 인코더(400)는 특정 블록들 또는 프레임들에 대해 변환 스테이지(404) 없이 직접적으로 잔차 신호를 양자화할 수 있다. 다른 구현에서, 인코더(400)는 단일 스테이지로 조합된 양자화 스테이지(406) 및 역양자화 스테이지(410)를 가질 수 있다. Other variants of the
[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
[0058] 압축된 비트스트림(420)이 디코딩을 위해 제시될 때, 압축된 비트스트림(420) 내의 데이터 엘리먼트들은 엔트로피 디코딩 스테이지(502)에 의해 디코딩되어, 한 세트의 양자화된 변환 계수들을 생성할 수 있다. 역양자화 스테이지(504)는 양자화된 변환 계수들을 (예를 들어, 양자화된 변환 계수들에 양자화기 값을 승산함으로써) 역양자화하고, 역변환 스테이지(506)는 선택된 변환 타입을 사용하여 역양자화된 변환 계수들을 역 변환하여, 인코더(400) 내의 역변환 스테이지(412)에 의해 생성된 것과 동일할 수 있는 미분 잔차를 생성한다. 압축된 비트스트림(420)으로부터 디코딩된 헤더 정보를 사용하여, 디코더(500)는 인트라/인터-예측 스테이지(508)를 사용하여, 예를 들어, 인트라/인터 예측 스테이지(402)에서 인코더(400)에서 생성된 것과 동일한 예측 블록을 생성할 수 있다. 재구성 스테이지(510)에서, 예측 블록은 미분 잔차에 추가되어, 재구성된 블록을 생성할 수 있다. 루프 필터링 스테이지(512)는 블로킹 아티팩트들을 감소시키기 위해, 재구성된 블록에 적용될 수 있다. 재구성된 블록에 다른 필터링이 적용될 수 있다. 일 예에서, 디블로킹 필터링 스테이지(514)는 블로킹 왜곡을 감소시키기 위해, 재구성된 블록에 적용되고, 결과는 출력 비디오 스트림(516)으로서 출력된다. 출력 비디오 스트림(516)은 또한, 디코딩된 비디오 스트림으로서 지칭될 수 있고, 이 용어들은 본원에서 교환 가능하게 사용될 것이다.When the
[0059] 압축된 비트스트림(420)을 디코딩하기 위해 디코더(500)의 다른 변형들이 사용될 수 있다. 예를 들어, 디코더(500)는 디블로킹 필터링 스테이지(514) 없이 출력 비디오 스트림(516)을 생성할 수 있다. 디코더(500)의 일부 구현들에서, 디블로킹 필터링 스테이지(514)는 루프 필터링 스테이지(512) 전에 적용된다. 추가적으로 또는 대안적으로, 인코더(400)는 루프 필터링 스테이지(416) 외에 디블로킹 필터링 스테이지를 포함한다.Other variants of the
[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
[0061] 양자화된 변환 블록(604)은 현재 블록(620)의 사이즈와 유사한 사이즈의 블록일 수 있다. 양자화된 변환 블록(604)은 비-제로 계수들(예를 들어, 계수(608)) 및 제로 계수들(예를 들어, 계수(610))를 포함한다. 위에서 설명된 바와 같이, 양자화된 변환 블록(604)은 현재 블록(620)에 대응하는 잔차 블록에 대한 양자화된 변환 계수들을 포함한다. 또한, 위에서 설명된 바와 같이, 양자화된 변환 계수들은 도 4의 엔트로피 코딩 스테이지(408)와 같은 엔트로피-코딩 페이즈에 의해 엔트로피 코딩된다. The quantized
[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
[0064] 일부 예들에서, 양자화된 변환 블록(604)을 인코딩하는 것은 양자화된 변환 블록(604)의 양자화된 변환 계수들이 제로인 것 및 비-제로인 것을 표시하는 비-제로 맵(606)을 결정하는 것을 포함할 수 있다. 비-제로 계수 및 제로 계수는 비-제로 맵에서 각각 1과 0의 값들로 표시될 수 있다. 예를 들어, 비-제로 맵(606)은 계수(608)에 대응하는 데카르트 위치(0, 0)에서 비-제로(607)를 포함하고, 계수(610)에 대응하는 데카르트 위치(2, 0)에서 제로(608)를 포함한다.In some examples, encoding the quantized
[0065] 일부 예들에서, 양자화된 변환 블록(604)을 인코딩하는 것은 블록-끝 맵(622)을 생성 및 인코딩하는 것을 포함할 수 있다. 블록-끝 맵은 양자화된 변환 블록(604)의 비-제로 양자화된 변환 계수가 주어진 스캔 순서에 대해 마지막 비-제로 계수인지 여부를 표시한다. 비-제로 계수가 변환 블록에서 마지막 비-제로 계수가 아닌 경우, 이는 블록-끝 맵에서 이진 비트 0으로 표시될 수 있다. 다른 한편으로, 비-제로 계수가 변환 블록에서 마지막 비-제로 계수인 경우, 이는 블록-끝 맵에서 이진 값 1로 표시될 수 있다. 예를 들어, 스캔 위치(11)에 대응하는 양자화된 변환 계수(즉, 마지막 비-제로 양자화된 변환 계수(628))가 양자화된 변환 블록(604)의 마지막 비-제로 계수이므로, 이는 1의 블록-끝 값(624)으로 표시되며; 모든 다른 비-제로 변환 계수들은 제로로 표시된다.In some examples, encoding the quantized
[0066] 일부 예들에서, 양자화된 변환 블록(604)을 인코딩하는 것은 부호 맵(626)을 생성 및 인코딩하는 것을 포함할 수 있다. 부호 맵(626)은 양자화된 변환 블록(604)의 비-제로 양자화된 변환 계수가 양의 값들을 갖고, 어떤 양자화된 변환 계수가 음의 값들을 갖는지를 표시한다. 제로인 변환 계수들은 부호 맵에서 표시될 필요가 없다. 부호 맵(626)은 양자화된 변환 블록(604)에 대한 부호 맵을 예시한다. 부호 맵에서, 음의 양자화된 변환 계수들은 제로로 표시될 수 있고, 양의 양자화된 변환 계수들은 1로 표시될 수 있다. In some examples, encoding the quantized
[0067] 도 7은 본 개시내용의 구현들에 따른, 블록들을 비디오 비트스트림으로 엔트로피 코딩하는데 사용될 수 있는 계수 토큰 트리(700)의 다이어그램이다. 계수 토큰 트리(700)는, 트리의 각각의 노드에서, 2개의 브랜치들 중 하나가 취해져야만(즉, 순회되어야만) 하기 때문에 이진 트리로서 지칭된다. 계수 토큰 트리(700)는 각각 A 및 B로 표시된 노드들에 대응하는 루트 노드(701) 및 노드(703)를 포함한다. 7 is a diagram of a coefficient
[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
[0070] 계수 토큰 트리(700)를 사용하여, 양자화된 변환 블록(이를테면, 도 6의 양자화된 변환 블록(604))의 양자화된 계수(예를 들어, 도 6의 계수들(608, 610))에 대해 이진 디짓들의 스트링이 생성된다. Using the coefficient
[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
[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.
[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 -
[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
[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
[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
[0077] 이진 산술 코딩 엔진을 사용함으로써(이를테면, 도 4의 엔트로피 인코딩 스테이지(408)에 의해) 토큰 t[i]를 인코딩 또는 디코딩하기 위해, 계수 토큰 트리(700)가 사용될 수 있다. 계수 토큰 트리(700)는 루트 노드(701)(즉, A로 표시된 노드)에서 시작하여 순회된다. 계수 토큰 트리를 순회하는 것은, 예를 들어, 이진 산술 코딩을 사용하여 비트스트림으로 인코딩될 비트 스트링(코드워드)을 생성한다. 비트 스트링은 현재 계수(즉, 인코딩되는 양자화된 변환 계수)의 표현이다. Coefficient
[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
[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
[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
[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
[0085] 단계 2에서, (1) 이진 플래그 checkEob가 1과 동일한 경우 전체 계수 토큰 트리(즉, 계수 토큰 트리(700)의 루트 노드(701)에서 시작)를 사용하거나; 또는 (2) checkEob가 0과 동일한 경우 EOB_TOKEN이 스킵되는 부분 트리(예를 들어, 노드(703)에서 시작)를 사용함으로써, 토큰 t[i]가 디코딩된다.[0085] In
[0086] 단계 3에서, 토큰 t[i] = EOB_TOKEN인 경우, 양자화된 변환 계수들 u[i],…, u[N*N-1]은 모두 제로가 되고, 디코딩 프로세스는 종료되며; 그렇지 않으면, 필요한 경우(즉, t[i]가 ZERO_TOKEN과 동일하지 않은 경우) 추가 비트들이 디코딩될 수 있고, u[i]를 재구성할 수 있다. [0086] In
[0087] 단계 4에서, u[i]가 제로와 동일한 경우, 이진 플래그 checkEob가 1로 세팅되고, 그렇지 않으면 checkEob가 0으로 세팅된다. 즉, checkEob는 값(u[i]! = 0)으로 세팅될 수 있다. [0087] In
[0088] 단계 5에서, 인덱스 i가 증분된다(즉, i = i + 1). In
[0089] 단계 6에서, 단계 2 - 단계 5는, 모든 양자화된 변환 계수들이 디코딩될 때까지(즉, 인덱스 i = N*N일 때까지) 또는 EOB_TOKEN이 디코딩될 때까지 반복된다.[0089] In
[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
[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
[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
[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,
[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:
[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)에서, 이용 가능한 모델들에 대한 확률들의 선형(즉, 가중된) 합(즉, )을 행한 후에 선형 합의 로그를 행하는 것은 모델들 1, …, M의 확률들의 로그들(logpk(xn))을 행한 후에 동일한 가중 인자들{wk}을 사용하여 선형 합을 수행하는 것보다 항상 작거나 같다는 것이다. 즉, 부등식의 좌측은 항상 부등식의 우측 이하이다. [00106] In inequality (1), the linear (i.e. weighted) sum of probabilities for the available models (i.e., ), then doing logarithms of the linear sum is the
[00107] 또한, 부등식 (1)로부터, M개의 모델들이 주어지면, 심벌을 엔트로피 코딩하기 전에, 모델들 1, … , M의 확률들을 혼합하는 것이 더 유리하다는 것이 된다. 즉, 확률들에 따라 모델들을 선택하고 각각의 모델을 사용하여 비트들의 시퀀스를 개별적으로 코딩하는 것보다, 엔트로피 코딩 전에 다수의 모델들의 확률들을 혼합하는 것이 더 유리할 수 있다. 별개의 모델들을 혼합하는 것은 압축 성능을 개선할 가능성이 있으며(즉, 압축률을 감소시킴), 최상의 모델을 선택하여 코딩한 후에 선택된 모델을 사용하여 시퀀스를 코딩하는 것보다 나쁘지 않다. [00107] Also, from inequality (1), given M models, before entropy coding the symbol,
[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).
[00110] 방정식 (2)에서, 는 서브시퀀스 xi의 혼합 확률이다. 따라서, 혼합은 각각의 서브시퀀스 xi에 대해 부분(또는 중간) 결과들을 생성할 수 있다. 서브시퀀스 xi는 xi = x1 x2 x3 … xi이다. 제1 모델(즉, k = 1)은 서브시퀀스 확률 p1(xi)을 생성하고; 제2 모델(즉, k = 2)은 서브시퀀스 확률 p2(xi)를 생성한다.[00110] In equation (2), 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:
[00112] 혼합 확률 는 서브시퀀스의 확률이다. 그러나, 산술 코딩은 심벌 단위에 기초하여(즉, 심벌들의 시퀀스들에 기초하지 않음) 수행된다. 따라서, 혼합 확률 는 엔트로피 코딩을 위해 직접 사용될 수 없다. 이는 혼합 확률 를 아래에서 설명되는 바와 같은 조건부 확률들의 곱으로 변환함으로써 해결될 수 있다. 혼합 확률 자체는 조건부 확률이라는 것이 또한 주의되며, 이는 이전 심벌들이 서브시퀀스 xi-1을 야기한다면, 포지션 i에서 특정 값을 갖는 심벌의 확률이다. 즉, 혼합 확률 는 방정식 (4)에 의해 주어질 수 있다:[00112] Mixed Probability 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 cannot be used directly for entropy coding. This is a mixed probability can be solved by transforming n into a product of conditional probabilities as described below. mixed probability 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 can be given by equation (4):
[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).
[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).
[00116] 방정식 (6)의 제1 양 및 제2 양에 각각 1과 동일한 인자(즉, 각각 및 )를 승산하여, 방정식 (7)이 획득된다:[00116] A factor equal to 1 each in the first and second quantities in equation (6) (i.e., each and ), the equation (7) is obtained:
[00117] 방정식 (7)은 방정식 (8)로 기재될 수 있다.[00117] Equation (7) can be written as Equation (8).
[00118] p1(xi│xi-1) 및 p2(xi│xi-1)의 조건부 확률들은 i번째 심벌까지 시퀀스의 인코딩의 결과로서 이용 가능하다는 것이 주목할 만하다. 엔트로피 인코딩이 한 번에 하나의 심벌을 인코딩하고 모든 각각의 심벌에 대해 (xi까지 그릭고 이를 포함하는) 코드워드에 대한 확률을 생성하므로, 이러한 조건부 확률들이 이용 가능하다. 본 개시내용에 따른 구현들에서, 조건부 확률들은 혼합되고, 이어서, 혼합 확률(즉, )을 사용하여 시퀀스가 인코딩(또는 디코딩)된다.[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, ) to encode (or decode) the sequence.
[00119] 방정식 (8)에서, wi,1 및 wi,2는 및 와 각각 동일한 가중치들이며, p1(xi│xi-1) 및 p2(xi│xi-1)는 및 과 각각 동일하다. 따라서, 혼합 확률 는 이제 제1 모델의 조건부 확률(즉, p1(xi│xi-1))과 제2 모델의 조건부 확률(즉, p2(xi │xi-1))의 선형 조합으로서 표현되고, 여기서, 조건부 확률들 각각은 각각의 가중 인자와 승산된다. [00119] In equation (8), w i,1 and w i,2 are and are the same weights as , respectively, and p 1 (x i │x i-1 ) and p 2 (x i │x i-1 ) are and are the same as each Therefore, mixed probability 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).
[00123] l2(i-1)이 l1(i-1)과 동일할 때, wi,1 = wi,2 = 0.5가 된다. 일반성을 잃지 않으면서, l1(i-1)이 l2(i-1)보다 더 작다고 가정하면, 방정식 (9)는 분모를 확장한 후에 분모 및 분자로부터 를 제거함으로써 결과로 나올 수 있다. [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 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) 형태이며, 여기서, 이다. 이는 1+r+r2+…에 의해 주어진 기하급수로서 인식되고, 여기서, 공비 이다. 따라서, 가중치 wi,1은 방정식 (10)을 사용하여 근사화될 수 있다.[00127] The weight w i,1 can be further simplified. The right-hand side of equation (9) is of the
[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).
[00129] 방정식 (11)에서, 은 p1(xi│xi-1)이 고정-소수점 표현을 갖는 경우들에서 시프트들을 사용함으로써 효율적으로 컴퓨팅될 수 있다. 또한, p1(xi │ xi-1)이 고정-소수점 표현을 갖는 경우, 방정식 (11)의 무한 합은 유한 수의 항들의 합으로 절단될 수 있다. 예를 들어, p1(xi│xi-1)이 8-비트 표현을 갖는 경우, 합은 처음 8개의 항들만을 유지하도록 절단될 수 있으며, 인 경우(즉, 이들이 적어도 하나의 비트만큼 상이한 경우), 임의의 j ≥ 8에 대해, 이기 때문에, 이 된다. 인 경우(즉, 이들이 하나 초과의 비트만큼 상이한 경우), 임의의 j ≥ j*(j* < 8)에 대해, 이다. 그에 따라, 처음 j*개의 항들만이 wi,l(xi│xi-1)을 컴퓨팅할 필요가 있다.[00129] In equation (11), 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, (i.e. if they differ by at least one bit), for any j ≥ 8, because it is, becomes this (i.e., if they differ by more than one bit), then for any j ≥ j * (j * < 8), 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).
[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).
[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
[00135] 프로세스(900)는 도 4의 인코더(400)와 같은 인코더에서 구현될 수 있다. 프로세스(900)는, 예를 들어, 송신국(102)과 같은 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로서 구현될 수 있다. 소프트웨어 프로그램은 머신-판독가능 명령들을 포함할 수 있으며, 그 머신-판독가능 명령들은 메모리(204) 또는 이차 저장소(214)와 같은 메모리에 저장될 수 있고, CPU(202)와 같은 프로세서에 의해 실행되어, 컴퓨팅 디바이스로 하여금 프로세스(900)를 수행하게 할 수 있다. 적어도 일부 구현들에서, 프로세스(900)는 도 4의 인코더(400)의 엔트로피 인코딩 스테이지(408)에 의해 전체적으로 또는 부분적으로 수행될 수 있다.
[00136] 프로세스(900)는 심벌들의 시퀀스 xn을 인코딩하기 위해 적어도 2개의 확률 모델들을 사용한다. 프로세스(900)는 임의의 수의 확률 모델들을 사용할 수 있다. 그러나, 간략화를 위해, 프로세스(900)를 예시하기 위해 2개의 모델들(즉, 제1 모델 및 제2 모델)만이 사용된다. 프로세스(900)는 제1 모델 및 제2 모델의 확률들을 혼합함으로써 심벌들의 시퀀스의 심벌들 각각을 인코딩한다. The
[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 ,
[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
[00139] 906에서, 프로세스(900)는 심벌 xi에 대한 혼합 확률 을 컴퓨팅한다. 프로세스(900)는 위의 방정식 (4)에 설명된 혼합 확률을 결정할 수 있다. 프로세스(900)는 방정식들 8, 11 및 13을 사용하여 혼합 확률을 컴퓨팅할 수 있다. 908에서, 프로세스(900)는 컴퓨팅된 혼합 조건부 확률을 사용하여 심벌 xi를 인코딩한다.[00139] At 906, the
[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
[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.
[00142] 도 10은 본 개시내용의 구현에 따른, 심벌들의 시퀀스를 디코딩하기 위한 프로세스(1000)의 흐름도이다. 프로세스(1000)는 디코더(500)와 같은 디코더에서 구현될 수 있다. 프로세스(1000)는 수신국에 의해 구현될 수 있다. 프로세스(900)는, 예를 들어, 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로서 구현될 수 있다. 소프트웨어 프로그램은 머신-판독가능 명령들을 포함할 수 있으며, 그 머신-판독가능 명령들은 메모리(204) 또는 이차 저장소(214)와 같은 메모리에 저장될 수 있고, CPU(202)와 같은 프로세서에 의해 실행되어, 컴퓨팅 디바이스로 하여금 프로세스(900)를 수행하게 할 수 있다. 프로세스(900)는 특수 하드웨어 또는 펌웨어를 사용하여 구현될 수 있다. 일부 컴퓨팅 디바이스들은 다수의 메모리들, 다수의 프로세서들, 또는 둘 모두를 가질 수 있다. 프로세스(1000)의 단계들 또는 동작들은 상이한 프로세서들, 메모리들, 또는 둘 모두를 사용하여 분배될 수 있다. 단수형의 용어들 "프로세서” 또는 "메모리"의 사용은, 하나의 프로세서 또는 하나의 메모리를 갖는 컴퓨팅 디바이스들 뿐만 아니라, 언급된 단계들의 일부 또는 전부의 수행에 사용될 수 있는 다수의 프로세서들 또는 다수의 메모리들을 갖는 디바이스들을 포함한다. 10 is a flow diagram of a
[00143] 프로세스(1000)는 인코딩된 비트스트림으로부터 심벌들의 시퀀스를 디코딩하기 위해 사용될 수 있다. 예를 들어, 프로세스(1000)는 도 5의 압축된 비트스트림(420)과 같은 인코딩된 비트스트림을 수신할 수 있다. 프로세스(1000)는 프로세스(900)로서 단계들(902-906 및 910-914)과 유사한 단계들을 포함할 수 있다. 유사한 단계들에 대한 설명들은 생략된다. 단계(908) 대신에, 프로세스(1000)는 단계(1002)를 포함한다. 단계(1002)에서, 프로세스(1000)는 컴퓨팅된 혼합 조건부 확률(즉, )을 사용하여 인코딩된 비트스트림으로부터 심벌 xi를 디코딩한다. The
[00144] 프로세스들(900 또는 1000)의 일부 구현들에서, 단계(906)는, 연산 복잡성을 더 절감(예를 들어, 감소)시키거나 또는 스루풋을 개선하기 위해, 모든 k>1 단계들마다 수행될 수 있다. 스루풋은 하나의 클록 사이클에서 프로세싱(코딩 또는 디코딩)된 심벌들의 수로 측정될 수 있다. 예를 들어, k = 2인 경우, 단계(906)는 i가 홀수 또는 짝수일 때만 수행될 수 있지만, 두 경우 모두에 수행되지는 않는다. 프로세스들(900 또는 1000)의 다른 구현에서, 단계(906)는 i의 모든 가능한 인덱스들의 미리 정의된 서브세트에서 수행될 수 있다.In some implementations of
[00145] 전술된 내용은 모델들의 균일한 가중치의 사용을 설명하였다. 그러나, 본 개시내용에 따른 구현들은 불균일한 이전의 가중치들을 사용할 수 있다. M개의 모델들을 사용하는 불균일한 가중치에서, 가중치들 wk 중 적어도 일부는 1/M과 동일하지 않은 값들로 세팅될 수 있다(즉, ). [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., ).
[00146] 간략화하기 위해, 전술된 내용(예를 들어, 프로세스(900 및 1000))은 2개의 모델들: 제1 모델 및 제2 모델의 사용을 설명한다. 그러나, 본 개시내용에 따른 구현들은 임의의 수의 모델들로 확장될 수 있다. 예를 들어, 모델의 수 M ≥ 2에 대해, 그리고 균일한 가중 인자들 wk(즉, )를 가정하면, 가중치들 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., ), the weights w i,k can be approximated using formula (14).
[00147] 공식 14에서, lk(xi-1)는 서브시퀀스 xi-1을 인코딩하기 위해, 모델 k(1 ≤ k ≤ M)를 사용하는 것으로부터 기인하는 코드워드 길이를 비트 단위로 나타낸다. [00147] In
[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
[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개의 모델들에 대한 이전 가중치들이 인 것으로 가정한다. 본 개시내용에 따른 구현들은, 모델 세트를 4개의 모델들의 세트로 확장할 수 있으며, 여기서, 제1 모델은 모델 A에 대응하고, 나머지 3개의 모델들은 모델 B에 대응하며, 4개의 모델들에 대한 이전 가중치는 이다.[00152] As another example, for example, there are two models, model A and model B, and the previous weights for the two models are 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 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를 코딩하기 위해 를 사용하는 대신에, 가 사용되며, 여기서 길이 L ≥ 1은 슬라이딩 윈도우의 길이이고, 여기서, xi-L … xi-1은 비트 i-L에서 시작하여 비트 i-l에서 끝나는 서브시퀀스이다. 길이 L이 알려진 경우, 본 개시내용에 따른 프로세스는 2개의 모델들에 대해 다음의 단계들을 수행할 수 있다.[00154] Thus, to code x i Instead of using 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
[00156] 단계 2에서, 프로세스는 제1 모델 및 제2 모델에 따라 및 를 컴퓨팅한다.[00156] In
[00157] 단계 3에서, 프로세스는 방정식들 (15) 및 (16)에 따라 혼합 확률 을 컴퓨팅한다.[00157] In
[00158] 단계 4에서, 프로세스는 를 사용하여 xi를 (인코더에 의해 구현될 때) 인코딩 또는 (디코더에 의해 구현될 때) 디코딩한다.[00158] In
[00159] 단계 5에서, 프로세스는 l1을 로 업데이트하고, l2를 로 업데이트한다. 프로세스가 윈도우 외부에서 인코딩/디코딩하고 있다면(즉, i > L), 프로세스는 및 를 업데이트한다.[00159] In
[00160] 단계 6에서, i는 1만큼 증분된다(즉, i = i+1).[00160] In
[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] 위에서 설명된 슬라이딩 윈도우에서, 이고, 이다. 따라서, 는 x1-L…xi-1을 코딩하기 위해 제1 모델을 사용하여 생성된 코드워드 길이로서 간주될 수 있고, 은 x1-L…xi-1을 코딩하기 위해 제2 모델을 사용하여 생성된 코드워드 길이로서 간주될 수 있다.[00162] In the sliding window described above, ego, am. thus, is x 1-L … can be considered as the codeword length generated using the first model to code x i-1 , 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
[00164] 인코더에 의해 인코딩될 때, 프로세스(1200)는 도 4의 양자화 스테이지(406)와 같은 양자화 단계로부터 심벌들의 시퀀스를 수신할 수 있다. 다른 예에서, 프로세스(1200)는 인코딩될 값(예를 들어, 양자화된 변환 계수)을 수신할 수 있고, 수신된 값으로부터 심벌들의 시퀀스를 생성할 수 있다. When encoded by an encoder,
[00165] 1202에서, 프로세스(1200)는 혼합될 모델들을 선택한다. 모델들은 제1 모델 및 제2 모델을 포함할 수 있다. 본 개시내용에서 사용되는 바와 같이, "선택"은 식별, 구성, 결정, 특정, 또는 무엇이든 임의의 방식의 다른 선택을 의미한다.At 1202 , the
[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
[00167] 1204에서, 프로세스(1200)는 제1 모델을 사용하여, 심벌을 인코딩하기 위한 제1 조건부 확률을 결정한다. 제1 조건부 확률은 시퀀스의 서브시퀀스가 주어진 심벌의 조건부 확률이다. 예에서, 시퀀스의 서브시퀀스는 서브시퀀스 xi-1을 의미할 수 있다. 슬라이딩 윈도우가 사용되는 다른 예에서, 시퀀스의 서브시퀀스는 포지션 이전의 시퀀스의 미리 결정된 수의 심벌들로 구성된다. 미리 결정된 수의 심벌들은 슬라이딩 윈도우 길이 L에 대하여 설명된 바와 같을 수 있다. 따라서, 시퀀스의 서브시퀀스는 서브시퀀스 xi-L … xi-1일 수 있다. 1206에서, 프로세스(1200)는 제2 모델을 사용하여, 심벌을 인코딩하기 위한 제2 조건부 확률을 결정한다. 제2 조건부 확률은 1204에 대하여 설명된 바와 같이 서브시퀀스가 주어진 심벌의 조건부 확률이다.At 1204 , the
[00168] 1208에서, 프로세스(1200)는 제1 조건부 확률 및 제2 조건부 확률을 사용하여, 심벌을 인코딩하기 위한 혼합 확률을 결정한다. 혼합 확률은 도 9의 906에 대하여 설명된 바와 같을 수 있다. 제1 조건부 확률 및 제2 조건부 확률은 제1 가중치 및 제2 가중치를 사용하는 선형 조합을 사용하여 조합될 수 있다. 구현에서, 적어도 제1 가중치는 심벌까지의 시퀀스의 서브시퀀스를 인코딩하기 위한 길이를 결정하기 위해 가상 산술 코딩을 사용하여 결정(즉, 근사화)될 수 있다. 제1 가중치는 길이를 사용하여 결정될 수 있다. 예에서, 가중치(예를 들어, 제1 가중치 및/또는 제2 가중치)를 결정하는 것은, 심벌까지 시퀀스의 서브시퀀스를 인코딩한 것으로부터 기인하는 레이트를 결정하고, 결정된 레이트를 사용하여 제1 가중치를 결정하는 것을 포함할 수 있다. 예에서, 레이트는 레이트 추정기를 사용하여 결정될 수 있다. 예에서, 레이트 추정기는 가상 산술 인코더일 수 있다. 예에서, 레이트를 결정하는 것은, 입력들을 확률 값들로 하여 테이블(예를 들어, 룩업 테이블)을 룩업하는 것을 포함할 수 있다.At 1208 , the
[00169] 1210에서, 프로세스(1200)는, 예를 들어, 908(인코더에 의해 구현될 때) 및 1002(디코더에 의해 구현될 때)에 대하여 설명된 바와 같이 혼합 확률을 사용하여 심벌을 코딩한다. At 1210 ,
[00170] 프로세스(1200)의 구현에서, 모델은 제3 모델 및 제4 모델을 포함할 수 있으며, 제1 모델 및 제2 모델을 사용하여 혼합 확률을 결정하는 것은, 제1 모델과 제2 모델을 혼합하여 제1 중간 조건부 확률을 생성하는 것, 제3 모델과 제4 모델을 혼합하여 제2 중간 조건부 확률을 생성하는 것, 및 제1 중간 조건부 확률과 제2 중간 조건부 확률을 혼합하여, 심벌을 인코딩하는데 사용될 조건부 확률을 생성하는 것을 포함할 수 있다. 구현에서, 제1 모델 및 제4 모델은 동일한 모델이다. In an implementation of
[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
[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 하에서 프레임에 나타나는 횟수를 나타내며, (즉, 콘텍스트 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, (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가 주어지면, 산술 코딩을 사용하여 달성 가능한 압축 성능은 에 의해 주어질 수 있다. 실제 분포 Qc, , 로그 법칙 로그(분수) = 로그(분자) - 로그(분모)를 사용하여, 달성 가능한 압축 성능이 방정식 (17)에서와 같이 감소될 수 있다.[00175] Given a coding distribution P c , the compression performance achievable using arithmetic coding is can be given by true distribution Q c , , logarithm Using log(fraction) = log(numerator) - log(denominator), the achievable compression performance can be reduced as in equation (17).
[00176] 방정식 (17)의 우측의 첫 번째 항 은 실제 분포 Qc의 엔트로피 H(Qc)로서 인식될 수 있다. 방정식 (1)의 우측의 두 번째 항 은 분포들 Pc와 Qc 사이의 동일한 알파벳(예를 들어, 계수 토큰 트리(700)의 토큰들) 상에 정의된 쿨백-라이블러(KL) 발산 또는 상대적 엔트로피로서 인식될 수 있다. KL 발산은 D(Qc||Pc)로 표시될 수 있다. 따라서, 산술 코딩을 사용하여 달성 가능한 압축 성능은 방정식 (18)을 사용하여 다시 기재될 수 있다.[00176] The first term on the right side of equation (17) can be recognized as the entropy H(Q c ) of the actual distribution Q c . second term from the right of equation (1) 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).
[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가 확률 분포(즉, )이므로, 이의 자유도는 알파벳 사이즈(예를 들어, 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., ), 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
[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
[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.
[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
[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
[00194] 프로세스(1300)는 스캔 순서에 따라 변환 블록의 계수들을 코딩하는 프로세스에 의해 또는 이와 함께 사용될 수 있다. 현재 변환 계수는 스캔 순서에서 스캔 포지션 i에 있을 수 있고, 변환 블록에서 계수 위치(ri, ci)에 있을 수 있다.
[00195] 프로세스(1300)는 제1 콘텍스트에 대응하는 제1 확률 분포를 선택하고, 제2 콘텍스트에 대응하는 제2 확률 분포를 선택하며, 일부 변환 계수 토큰들에 대해, 제1 확률 분포와 제2 확률 분포를 혼합하여, 일부 변환 계수 토큰들 중 변환 계수 토큰을 코딩하기 위한 혼합 확률을 생성할 수 있다. The
[00196] 프로세스(1300)는 도 4의 인코더(400)와 같은 인코더에서 구현될 수 있다. 프로세스(1300)는, 예를 들어, 송신국(102)과 같은 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로서 구현될 수 있다. 소프트웨어 프로그램은 머신-판독가능 명령들을 포함할 수 있으며, 그 머신-판독가능 명령들은 메모리(204) 또는 이차 저장소(214)와 같은 메모리에 저장될 수 있고, CPU(202)와 같은 프로세서에 의해 실행되어, 컴퓨팅 디바이스로 하여금 프로세스(1300)를 수행하게 할 수 있다. 적어도 일부 구현들에서, 프로세스(1300)는 도 4의 인코더(400)의 엔트로피 인코딩 스테이지(408)에 의해 전체적으로 또는 부분적으로 수행될 수 있다.
[00197] 프로세스(1300)는 도 5의 디코더(500)와 같은 디코더에서 구현될 수 있다. 프로세스(1300)는, 예를 들어, 수신국(106)과 같은 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로서 구현될 수 있다. 소프트웨어 프로그램은 머신-판독가능 명령들을 포함할 수 있으며, 그 머신-판독가능 명령들은 메모리(204) 또는 이차 저장소(214)와 같은 메모리에 저장될 수 있고, CPU(202)와 같은 프로세서에 의해 실행되어, 컴퓨팅 디바이스로 하여금 프로세스(1300)를 수행하게 할 수 있다. 적어도 일부 구현들에서, 프로세스(1300)는 도 5의 디코더(500)의 엔트로피 디코딩 스테이지(502)에 의해 전체적으로 또는 부분적으로 수행될 수 있다.
[00198] 프로세스(1300)가 인코더에 의해 구현될 때, "코딩"은 도 4의 압축된 비트스트림(420)과 같은 인코딩된 비트스트림으로의 인코딩을 의미한다. 디코더에 의해 구현될 때, "코딩"은 도 5의 압축된 비트스트림(420)과 같은 인코딩된 비트스트림으로부터의 디코딩을 의미한다.When
[00199] 1302에서, 프로세스(1300)는 제1 확률 분포를 선택한다. 본 개시내용에서 사용되는 바와 같이, "선택"은 획득, 식별, 구성, 결정, 특정, 또는 무엇이든 임의의 방식의 다른 선택을 의미한다. At 1302 , the
[00200] 예에서, 프로세스(1300)는 먼저, 제1 콘텍스트를 도출하고, 제1 콘텍스트에 대응하는 제1 확률 분포를 선택할 수 있다. 예를 들어, 콘텍스트는, 변환 블록 사이즈, 변환 블록 형상(예를 들어, 정사각형 또는 직사각형), 컬러 컴포넌트 또는 평면 타입(즉, 루미넌스 또는 크로미넌스), 현재 변환 계수의 스캔 포지션 i, 및 이전에 코딩된 토큰들 중 하나 이상을 사용하여 도출될 수 있다. 예를 들어, 도 6의 스캔 순서(602)의 경우, 이전에 코딩된 계수들은 현재 변환 계수의 좌측 이웃 계수 및 최상부 이웃 계수일 수 있다. 제1 콘텍스트를 도출하기 위해 다른 정보가 사용될 수 있다. In an example,
[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
[00202] 1304에서, 프로세스(1300)는 제2 확률 분포를 선택한다. 예에서, 프로세스(1300)는 제2 콘텍스트를 도출하고, 제2 콘텍스트에 대응하는 제2 확률 분포를 선택할 수 있다. At 1304 , the
[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
[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
[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
[00209] 이웃 템플릿(1400)은 순방향 스캔 순서와 함께 사용될 수 있는 이웃 템플릿을 예시한다. 순방향 스캔 순서는, 도 6의 스캔 순서(602)와 같이, 변환 블록의 좌측-상단 코너로부터 우측-하단 코너까지 진행하는 스캔 순서이다. 이웃 템플릿(1400)은 a-e로 표시된 5개의 음영 계수들의 위치들을 포함하는 이웃 템플릿(1404) 및 현재 계수(1402)를 예시한다. 이웃 템플릿은 더 많거나 적은 계수 위치들을 포함할 수 있다. 예에서, 값들 a-e는 각각의 계수들이 제로인지 또는 비-제로인지를 표시할 수 있다. 따라서, 값들 a-e는 이진 값들일 수 있다. [00209]
[00210] 이웃 템플릿(1450)은 역방향 스캔 순서와 함께 사용될 수 있는 이웃 템플릿을 예시한다. 역방향 스캔 순서는, 예를 들어, 변환 블록의 우측-하단 코너로부터 좌측-상단 코너로 진행하는 스캔 순서이다. 이웃 템플릿(1450)은 a-i로 표시된 9개의 음영 계수들의 위치들을 포함하는 이웃 템플릿(1454) 및 현재 계수(1452)를 예시한다. 그러나, 위에서 나타낸 바와 같이, 이웃 템플릿은 더 많거나 적은 계수 위치들을 포함할 수 있다.[00210]
[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
[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
[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
[00215] 1308에서, 프로세스(1300)는 혼합 확률을 생성하기 위해, 제1 확률 분포와 제2 확률 분포를 혼합한다. 1310에서, 프로세스(1330)는 혼합 확률을 사용하여 변환 계수 토큰을 엔트로피 코딩한다. At 1308 , the
[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,
[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,
[00218] 예로서, 도 7의 계수 토큰 트리(700)와 같은 토큰 트리를 사용하여, 제1 조건부 확률 분포는 내부 노드에서의 조건부 확률 분포일 수 있다. 내부 노드에서의 조건부 확률 분포는, 코딩된 히스토리(즉, 이전에 코딩된 계수들) 및 부수 정보로부터 결정된 제1 콘텍스트가 주어진 내부 노드의 자식 노드(즉, 좌측 자식 또는 우측 자식)를 선택하는 확률 분포이다. 부수 정보의 예들은 평면 타입(예를 들어, 루미넌스, 크로미넌스 등), 변환 사이즈(즉, 변환 블록 사이즈) 및 변환 타입(예를 들어, DCT, ADST 등)을 포함한다. 다른 부수 정보가 이용 가능할 수 있다. 제2 조건부 확률 분포는 코딩된 히스토리 및 부수 정보로부터 결정된 제2 콘텍스트가 주어진 동일한 내부 노드에서의 조건부 확률 분포이다. 제1 콘텍스트 및 제2 콘텍스트는 코딩된 히스토리에서의 상이한 정보 및 상이한 부수 정보를 사용하여 도출될 수 있다. As an example, using a token tree such as coefficient
[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는 토큰들의 세트임)의 확률들의 합: 에 의해 주어질 수 있다. 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): 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
[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
[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
[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 ),
[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
[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
[0233] 또한, 일 양상에서, 예컨대, 송신국(102) 또는 수신국(106)은, 실행될 때 본원에 설명된 개별 방법들, 알고리즘들, 및/또는 명령들 중 임의의 것을 수행하는 컴퓨터 프로그램을 갖는 범용 컴퓨터 또는 범용 프로세서를 사용하여 구현될 수 있다. 게다가, 또는 대안적으로, 예컨대, 본원에 설명된 방법들, 알고리즘들, 또는 명령들 중 임의의 것을 수행하기 위한 다른 하드웨어를 포함할 수 있는 특수 목적 컴퓨터/프로세서가 활용될 수 있다.Further, in an aspect, for example, the transmitting
[0234] 송신국(102) 및 수신국(106)은 예컨대 비디오 회의 시스템의 컴퓨터들 상에 구현될 수 있다. 대안적으로, 송신국(102)은 서버 상에 구현될 수 있고, 그리고 수신국(106)은 서버로부터 분리된 디바이스, 이를테면 핸드헬드 통신 디바이스 상에 구현될 수 있다. 이 경우에, 송신국(102)은 인코더(400)를 사용하여, 콘텐츠를 인코딩된 비디오 신호로 인코딩하고 인코딩된 비디오 신호를 통신 디바이스에 송신할 수 있다. 이어서, 차례로, 통신 디바이스는 디코더(500)를 사용하여 인코딩된 비디오 신호를 디코딩할 수 있다. 대안적으로, 통신 디바이스는 통신 디바이스 상에 로컬로 저장된 콘텐츠, 예컨대 송신국(102)에 의해 송신되지 않은 콘텐츠를 디코딩할 수 있다. 다른 송신국(102) 및 수신국(106) 구현 방식들이 이용 가능하다. 예컨대, 수신국(106)은 휴대용 통신 디바이스보다 오히려 일반적 고정식 퍼스널 컴퓨터일 수 있고, 그리고/또는 인코더(400)를 포함하는 디바이스는 또한 디코더(500)를 포함할 수 있다.[0234] The transmitting
[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 확률 분포를 사용하도록
구성되는,
변환 계수들을 디코딩하기 위한 장치.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 확률 분포는 상기 제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.
상기 제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 확률 분포와 상기 제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.
상기 변환 계수 토큰에 대응하는 변환 계수는 변환 블록의 위치에 있고, 그리고
상기 제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.
상기 위치에 이웃하는 위치들은 스캔 순서에 기초하는,
변환 계수들을 디코딩하기 위한 장치.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 내부 노드에 관련된 제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.
상기 제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.
상기 제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.
상기 제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.
상기 제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.
상기 토큰을 엔트로피 코딩하기 위해, 상기 제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.
상기 변환 계수는 일정 위치에 있고, 그리고
상기 제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.
상기 이웃 위치들은 스캔 순서에 기초하는,
변환 계수들을 코딩하기 위한 방법.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.
토큰을 디코딩하는 것은:
상기 제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.
상기 제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.
상기 제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.
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)
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)
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)
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 |
-
2017
- 2017-09-18 US US15/707,278 patent/US10735736B2/en active Active
- 2017-11-28 US US15/824,058 patent/US10448019B2/en active Active
-
2018
- 2018-05-01 WO PCT/US2018/030355 patent/WO2019045797A1/en unknown
- 2018-05-01 JP JP2019565808A patent/JP6923677B2/en active Active
- 2018-05-01 EP EP18725727.4A patent/EP3677035A1/en active Pending
- 2018-05-01 CN CN201880035871.3A patent/CN110692243B/en active Active
- 2018-05-01 KR KR1020197035900A patent/KR102314801B1/en active IP Right Grant
- 2018-05-01 CN CN202210979148.9A patent/CN115514978B/en active Active
- 2018-05-01 WO PCT/US2018/030357 patent/WO2019045798A1/en unknown
- 2018-05-01 CN CN201880039455.0A patent/CN110771171B/en active Active
- 2018-05-01 EP EP18724765.5A patent/EP3677027B1/en active Active
-
2019
- 2019-09-06 US US16/562,659 patent/US10645389B2/en active Active
-
2020
- 2020-03-31 US US16/835,379 patent/US10887595B2/en active Active
- 2020-12-29 US US17/136,200 patent/US11405618B2/en active Active
Patent Citations (1)
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 |