KR102600727B1 - 파라미터화된 확률 추정 유한 상태 머신들을 이용한 이진 산술 코딩 - Google Patents

파라미터화된 확률 추정 유한 상태 머신들을 이용한 이진 산술 코딩 Download PDF

Info

Publication number
KR102600727B1
KR102600727B1 KR1020197030906A KR20197030906A KR102600727B1 KR 102600727 B1 KR102600727 B1 KR 102600727B1 KR 1020197030906 A KR1020197030906 A KR 1020197030906A KR 20197030906 A KR20197030906 A KR 20197030906A KR 102600727 B1 KR102600727 B1 KR 102600727B1
Authority
KR
South Korea
Prior art keywords
bin
stream
determining
state
fsm
Prior art date
Application number
KR1020197030906A
Other languages
English (en)
Other versions
KR20190128224A (ko
Inventor
아미르 사이드
마르타 카르체비츠
리 장
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20190128224A publication Critical patent/KR20190128224A/ko
Application granted granted Critical
Publication of KR102600727B1 publication Critical patent/KR102600727B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods 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 the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/198Methods 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 including smoothing of a sequence of encoding parameters, e.g. by averaging, by choice of the maximum, minimum or median value
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Error Detection And Correction (AREA)

Abstract

빈 스트림의 적어도 하나의 각각의 빈에 대해, 디코더는 그 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 오프셋 값에 기초하여, 그 각각의 빈의 값을 결정할 수도 있다. 추가적으로, 디코더는 빈 스트림의 다음 빈에 대해 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정한다. 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들은 다음 빈에 대한 확률 추정치들이 어떻게 각각의 빈에 대한 상태로부터 계산되는지를 제어한다. 디코더는, 각각의 빈에 대한 상태, 빈 스트림의 상기 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 빈 스트림의 다음 빈에 대한 상태를 결정한다. 디코더는 디코딩된 신택스 엘리먼트를 형성하기 위해 빈 스트림을 이진화해제할 수도 있다.

Description

파라미터화된 확률 추정 유한 상태 머신들을 이용한 이진 산술 코딩
이 출원은 2017년 3월 22일자로 출원된 미국 가 특허 출원 제 62/474,919 호, 및 2017 년 3월 23일자로 출원된 미국 가 특허 출원 제 62/475,609 호의 이익을 주장하고, 그것들 각각의 전체 내용은 참조에 의해 본원에 통합된다.
기술 분야
본 개시는 비디오 코딩, 예컨대, 비디오 인코딩 및 비디오 디코딩에 관한 것이다.
배경
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인용 디지털 보조기들 (PDA들), 랩탑 또는 데스크탑 컴퓨터들, 태블릿 컴퓨터들, e-북 리더들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 소위 "스마트 폰들", 비디오 텔레컨퍼런싱 디바이스들, 비디오 스트리밍 디바이스들 등을 포함한, 광범위한 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, 파트 10, 어드밴스드 비디오 코딩 (AVC), ITU-T H.265, 고효율 비디오 코딩 (HEVC) 표준에 의해 정의된 표준들, 및 그러한 표준들의 확장들에서 설명된 기법들과 같은 비디오 압축 기법들을 구현한다. 비디오 디바이스들은 그러한 비디오 압축 기법들을 구현함으로써 디지털 비디오 정보를 더 효율적으로 송신, 수신, 인코딩, 디코딩, 및/또는 저장할 수도 있다.
비디오 압축 기법들은 비디오 시퀀스들에 내재한 리던던시를 감소 또는 제거하기 위해 공간 (인트라-픽처) 예측 및/또는 시간 (인터-픽처) 예측을 수행할 수도 있다. 블록 기반 비디오 코딩에 대해, 비디오 슬라이스 (예를 들어, 비디오 프레임 또는 비디오 프레임의 부분) 는 코딩 트리 블록들 및 코딩 블록들과 같은 비디오 블록들로 파티셔닝될 수도 있다. 공간 또는 시간 예측은 코딩될 블록에 대한 예측성 블록을 발생시킨다. 잔차 데이터는 코딩될 원래의 블록과 예측성 블록 간의 픽셀 차이들을 나타낸다. 추가의 압축을 위하여, 잔차 데이터는 픽셀 도메인으로부터 변환 도메인으로 변환되어 잔차 변환 계수들을 낳을 수도 있고, 그 후 이들은 양자화될 수도 있다.
일반적으로, 본 개시는 산술 코딩 (arithmetic coding) 에 관련된 기법들을 기술한다. 본원에 기술된 바와 같이, 본 개시의 기법들은 적응적 확률 추정을 잠재적으로 향상시킴으로써 비디오 데이터의 압축을 향상시킬 수도 있다.
하나의 예에서, 본 개시는, 비디오 데이터를 디코딩하는 방법을 기술하고, 상기 방법은, 비트스트림에 포함된 오프셋 값에 이진 산술 디코딩을 적용하는 것에 의해, 디코딩된 신택스 엘리먼트를 결정하는 단계로서, 상기 이진 산술 디코딩을 적용하는 것은, 빈 스트림을 생성하는 것으로서, 상기 빈 스트림을 생성하는 것은, 빈 스트림의 적어도 하나의 각각의 빈에 대해, 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 오프셋 값에 기초하여 각각의 빈의 값을 결정하는 것; 빈 스트림의 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 다음 빈에 대한 하나 이상의 FSM 파라미터들은 다음 빈에 대한 확률 추정치들이 어떻게 각각의 빈에 대한 상태로부터 계산되는지를 제어하고, 빈 스트림의 다음 빈은 빈 스트림에서 각각의 빈을 뒤따르는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것; 및, 각각의 빈에 대한 상태, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 빈 스트림의 다음 빈에 대한 상태를 결정하는 것을 포함하는, 상기 빈 스트림을 생성하는 것; 및, 디코딩된 신택스 엘리먼트를 형성하기 위해 빈 스트림을 이진화해제하는 것을 포함하는, 상기 디코딩된 신택스 엘리먼트를 결정하는 단계; 및, 디코딩된 신택스 엘리먼트에 부분적으로 기초하여 비디오 데이터의 픽처를 재구성하는 단계를 포함한다.
다른 예에서, 본 개시는 비디오 데이터를 인코딩하는 방법을 기술하고, 상기 방법은, 비디오 데이터에 기초하여 신택스 엘리먼트를 생성하는 단계; 적어도 부분적으로, 신택스 엘리먼트에 이진 산술 인코딩을 적용하는 것에 의해, 오프셋 값을 결정하는 단계로서, 상기 이진 산술 인코딩을 적용하는 것은, 적어도 부분적으로, 신택스 엘리먼트를 이진화하는 것; 빈 스트림의 적어도 하나의 각각의 빈에 대해, 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 각각의 빈의 값에 기초하여 빈 스트림의 다음 빈에 대한 간격을 결정하는 것; 빈 스트림의 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 다음 빈에 대한 하나 이상의 FSM 파라미터들은 다음 빈에 대한 확률 추정치들이 어떻게 각각의 빈에 대한 상태로부터 계산되는지를 제어하는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것; 및, 각각의 빈에 대한 상태, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 빈 스트림의 다음 빈에 대한 상태를 결정하는 것에 의해, 빈 스트림을 생성하는 것을 포함하고, 오프셋 값은 빈 스트림의 마지막 빈에 대한 간격에서의 값과 동일한, 상기 오프셋 값을 결정하는 단계; 및, 오프셋 값을 포함하는 비트스트림을 출력하는 단계를 포함한다.
또 다른 예에서, 본 개시는, 비디오 데이터를 디코딩하기 위한 장치를 기술하고, 상기 장치는, 비디오 데이터를 저장하도록 구성된 하나 이상의 저장 매체; 및, 하나 이상의 프로세서들을 포함하고, 하나 이상의 프로세서들은, 비트스트림에 포함된 오프셋 값에 이진 산술 디코딩을 적용하는 것에 의해, 디코딩된 신택스 엘리먼트를 결정하는 것으로서, 하나 이상의 프로세서들은, 상기 이진 산술 디코딩을 적용하는 것의 일부로서, 하나 이상의 프로세서들이, 빈 스트림을 생성하는 것으로서, 빈 스트림을 생성하는 것의 일부로서, 하나 이상의 프로세서들은, 빈 스트림의 적어도 하나의 각각의 빈에 대해, 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 오프셋 값에 기초하여 각각의 빈의 값을 결정하고; 빈 스트림의 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 다음 빈에 대한 하나 이상의 FSM 파라미터들은 다음 빈에 대한 확률 추정치들이 어떻게 각각의 빈에 대한 상태로부터 계산되는지를 제어하고, 빈 스트림의 다음 빈은 빈 스트림에서 각각의 빈을 뒤따르는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것을 행하며; 그리고, 각각의 빈에 대한 상태, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 빈 스트림의 다음 빈에 대한 상태를 결정하는, 상기 빈 스트림을 생성하는 것을 행하고, 디코딩된 신택스 엘리먼트를 형성하기 위해 상기 빈 스트림을 이진화해제하도록 구성되는, 상기 디코딩된 신택스 엘리먼트를 결정하는 것을 행하며; 그리고, 디코딩된 신택스 엘리먼트에 부분적으로 기초하여 비디오 데이터의 픽처를 재구성하도록 구성된다.
또 다른 예에서, 본 개시는, 비디오 데이터를 인코딩하기 위한 장치를 기술하고, 상기 장치는, 비디오 데이터를 저장하도록 구성된 하나 이상의 저장 매체; 및, 하나 이상의 저장 매체에 커플링된 하나 이상의 프로세싱 회로들을 포함하고, 상기 하나 이상의 프로세싱 회로들은, 비디오 데이터에 기초하여 신택스 엘리먼트를 생성하고; 신택스 엘리먼트에 이진 산술 인코딩을 적용하는 것에 의해, 오프셋 값을 결정하는 것으로서, 하나 이상의 프로세서들은, 이진 산술 인코딩을 적용하는 것의 일부로서, 하나 이상의 프로세서들이, 적어도 부분적으로, 신택스 엘리먼트를 이진화하는 것; 및, 빈 스트림의 적어도 하나의 각각의 빈에 대해, 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 각각의 빈의 값에 기초하여 빈 스트림의 다음 빈에 대한 간격을 결정하는 것; 빈 스트림의 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 다음 빈에 대한 하나 이상의 FSM 파라미터들은 다음 빈에 대한 확률 추정치들이 어떻게 각각의 빈에 대한 상태로부터 계산되는지를 제어하는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것; 및, 각각의 빈에 대한 상태, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 빈 스트림의 다음 빈에 대한 상태를 결정하는 것에 의해, 상기 빈 스트림을 생성하도록 구성되고, 오프셋 값은 빈 스트림의 마지막 빈에 대한 간격에서의 값과 동일한, 상기 오프셋 값을 결정하는 것을 행하며; 그리고, 오프셋 값을 포함하는 비트스트림을 출력하도록 구성된다.
또 다른 예에서, 본 개시는, 비디오 데이터를 디코딩하기 위한 장치를 기술하고, 상기 장치는, 비트스트림에 포함된 오프셋 값에 이진 산술 디코딩을 적용하는 것에 의해, 디코딩된 신택스 엘리먼트를 결정하는 수단으로서, 상기 이진 산술 디코딩을 적용하는 것은, 빈 스트림을 생성하는 것으로서, 상기 빈 스트림을 생성하는 것은, 빈 스트림의 적어도 하나의 각각의 빈에 대해, 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 오프셋 값에 기초하여 각각의 빈의 값을 결정하는 것; 빈 스트림의 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 다음 빈에 대한 하나 이상의 FSM 파라미터들은 다음 빈에 대한 확률 추정치들이 어떻게 각각의 빈에 대한 상태로부터 계산되는지를 제어하고, 빈 스트림의 다음 빈은 빈 스트림에서 각각의 빈을 뒤따르는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것; 및, 각각의 빈에 대한 상태, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 빈 스트림의 다음 빈에 대한 상태를 결정하는 것을 포함하는, 상기 빈 스트림을 생성하는 것; 및, 디코딩된 신택스 엘리먼트를 형성하기 위해 빈 스트림을 이진화해제하는 것을 포함하는, 상기 디코딩된 신택스 엘리먼트를 결정하는 수단; 및, 디코딩된 신택스 엘리먼트에 부분적으로 기초하여 비디오 데이터의 픽처를 재구성하는 수단을 포함한다.
또 다른 예에서, 본 개시는, 비디오 데이터를 인코딩하기 위한 장치를 기술하고, 상기 장치는, 비디오 데이터에 기초하여 신택스 엘리먼트를 생성하는 수단; 적어도 부분적으로, 신택스 엘리먼트에 이진 산술 인코딩을 적용하는 것에 의해, 오프셋 값을 결정하는 수단으로서, 상기 이진 산술 인코딩을 적용하는 것은, 적어도 부분적으로, 신택스 엘리먼트를 이진화하는 것; 및, 빈 스트림의 적어도 하나의 각각의 빈에 대해, 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 각각의 빈의 값에 기초하여 빈 스트림의 다음 빈에 대한 간격을 결정하는 것; 빈 스트림의 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 다음 빈에 대한 하나 이상의 FSM 파라미터들은 다음 빈에 대한 확률 추정치들이 어떻게 각각의 빈에 대한 상태로부터 계산되는지를 제어하는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것; 및, 각각의 빈에 대한 상태, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 빈 스트림의 다음 빈에 대한 상태를 결정하는 것에 의해, 상기 빈 스트림을 생성하는 것을 포함하고, 오프셋 값은 빈 스트림의 마지막 빈에 대한 간격에서의 값과 동일한, 상기 오프셋 값을 결정하는 수단; 및, 오프셋 값을 포함하는 비트스트림을 출력하는 수단을 포함한다.
또 다른 예에서, 본 개시는, 명령들을 저장하는 컴퓨터 판독가능 저장 매체를 기술하고, 상기 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금, 비트스트림에 포함된 오프셋 값에 이진 산술 디코딩을 적용하는 것에 의해, 디코딩된 신택스 엘리먼트를 결정하는 것으로서, 하나 이상의 프로세서들로 하여금 상기 이진 산술 디코딩을 적용하게 하는 것의 일부로서, 상기 명령들의 실행은 상기 하나 이상의 프로세서들로 하여금, 빈 스트림을 생성하는 것으로서, 하나 이상의 프로세서들로 하여금 빈 스트림을 생성하는 것의 일부로서, 상기 명령들의 실행은 상기 하나 이상의 프로세서들로 하여금, 빈 스트림의 적어도 하나의 각각의 빈에 대해, 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 오프셋 값에 기초하여 각각의 빈의 값을 결정하게 하고; 빈 스트림의 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 다음 빈에 대한 하나 이상의 FSM 파라미터들은 다음 빈에 대한 확률 추정치들이 어떻게 각각의 빈에 대한 상태로부터 계산되는지를 제어하고, 빈 스트림의 다음 빈은 빈 스트림에서 각각의 빈을 뒤따르는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것을 행하게 하며; 그리고, 각각의 빈에 대한 상태, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 빈 스트림의 다음 빈에 대한 상태를 결정하게 하는, 상기 빈 스트림을 생성하는 것을 행하게 하고; 그리고, 디코딩된 신택스 엘리먼트를 형성하기 위해 빈 스트림을 이진화해제하게 하는, 상기 디코딩된 신택스 엘리먼트를 결정하는 것을 행하게 하며; 그리고, 디코딩된 신택스 엘리먼트에 부분적으로 기초하여 비디오 데이터의 픽처를 재구성하게 한다.
또 다른 예에서, 본 개시는, 명령들을 저장하는 컴퓨터 판독가능 저장 매체를 기술하고, 상기 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금, 비디오 데이터에 기초하여 신택스 엘리먼트를 생성하게 하고; 신택스 엘리먼트에 이진 산술 인코딩을 적용하는 것에 의해, 오프셋 값을 결정하는 것으로서, 하나 이상의 프로세서들로 하여금 이진 산술 인코딩을 적용하게 하는 것의 일부로서, 상기 명령들의 실행은 상기 하나 이상의 프로세서들로 하여금, 적어도 부분적으로, 상기 하나 이상의 프로세서들로 하여금, 신택스 엘리먼트를 이진화하게 하고; 그리고, 빈 스트림의 적어도 하나의 각각의 빈에 대해, 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 각각의 빈의 값에 기초하여 빈 스트림의 다음 빈에 대한 간격을 결정하게 하고; 빈 스트림의 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 다음 빈에 대한 하나 이상의 FSM 파라미터들은 다음 빈에 대한 확률 추정치들이 어떻게 각각의 빈에 대한 상태로부터 계산되는지를 제어하는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것을 행하게 하며; 그리고, 각각의 빈에 대한 상태, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 빈 스트림의 다음 빈에 대한 상태를 결정하는 것을 행하게 함으로써, 빈 스트림을 생성하게 하고, 오프셋 값은 빈 스트림의 마지막 빈에 대한 간격에서의 값과 동일한, 오프셋 값을 결정하는 것을 행하게 하며; 그리고, 오프셋 값을 포함하는 비트스트림을 출력하게 한다.
본 개시의 하나 이상의 양태들의 상세들은 첨부 도면들 및 이하의 상세한 설명에서 전개된다. 본 개시물에서 기술된 기법들의 다른 특징들, 목적들, 및 이점들은 그 설명, 도면들, 및 청구항들로부터 명백할 것이다.
도면의 간단한 설명
도 1 은 본 개시에서 설명된 하나 이상의 기법들을 이용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템을 나타내는 블록도이다.
도 2 는 본 개시에서 설명된 하나 이상의 기법들을 구현할 수도 있는 일 예시적인 비디오 인코더를 나타내는 블록도이다.
도 3 은 본 개시에서 설명된 하나 이상의 기법들을 구현할 수도 있는 일 예시적인 비디오 디코더를 나타내는 블록도이다.
도 4 는 일 예시적인 일반적인 유한 상태 머신의 블록도이다.
도 5 는 빈 확률 추정을 위해 많은 유한 상태 머신 (FSM) 들을 이용하여 컨텍스트-기반 이진 산술 인코딩하기 위한 예시적인 블록도이다.
도 6 은 빈 확률 추정을 위해 많은 FSM들을 이용하여 컨텍스트-기반 이진 산술 디코딩하기 위한 예시적인 블록도이다.
도 7 은 단일의 선택된 컨텍스트를 고려하여 컨텍스트-기반 이진 산술 인코딩하기 위한 예시적인 블록도이다.
도 8 은 단일의 선택된 컨텍스트를 고려하여 컨텍스트-기반 이진 산술 디코딩하기 위한 예시적인 블록도이다.
도 9 는 본 개시의 하나 이상의 양태들에 따른, 컨텍스트-기반 이진 산술 인코딩하기 위한 예시적인 블록도이다.
도 10 은 본 개시의 하나 이상의 양태들에 따른, 컨텍스트-기반 이진 산술 디코딩하기 위한 예시적인 블록도이다.
도 11a 는 FSM 파라미터들이 스캔 순서를 따라 동일 픽처에서 이웃하는 블록들 (예컨대, CTU들, CU들) 로부터 도출될 수 있는 것을 나타내는 블록도이다.
도 11b 는 현재 픽처의 블록들에서 사용되는 FSM 파라미터들이 이전에 코딩된 픽처에서의 블록들과 연관된 정보에 기초하여 결정될 수 있는 것을 나타내는 블록도이다.
도 12 는 일 예시적인 확률 추정 필터의 블록도이다.
도 13 은 다른 예시적인 확률 추정 필터의 블록도이다.
도 14 는 캐스케이드 필터들을 이용하는 확률 추정 필터의 일례를 나타낸다.
도 15 는 예시적인 엔트로피 인코딩 유닛을 나타내는 블록도이다.
도 16 은 예시적인 엔트로피 디코딩 유닛을 나타내는 블록도이다.
도 17 은 본 개시의 하나 이상의 기법들에 따른, 비디오 인코더의 예시적인 동작을 나타내는 플로우차트이다.
도 18 은 본 개시의 하나 이상의 기법들에 따른, 비디오 디코더의 예시적인 동작을 나타내는 플로우차트이다.
상세한 설명
산술 코딩은 데이터 압축을 제공하기 위해 비디오 코딩에서 자주 사용된다. 통상적인 산술 코딩 프로세스에서, 비디오 인코더는 제 1 이진 심볼 및 제 2 이진 심볼에 대해 초기 확률 추정치들과 연관되는 코딩 컨텍스트를 선택한다. 비디오 인코더는 오프셋 값을 결정하기 위해 빈 스트림의 빈 (bin) 의 값 및 확률 추정치들을 이용한다. 추가적으로, 비디오 인코더는 확률 추정치들을 업데이트하기 위해 빈 값에 기초하여 상태 업데이트 함수를 이용할 수도 있다. 비디오 인코더는 그 다음, 오프셋 값을 업데이트하기 위해 빈 스트림의 다음 빈 값 및 업데이트된 확률 추정치들을 이용할 수도 있다. 확률 추정치들 및 오프셋 값을 업데이트하는 이 프로세스는 비디오 인코더가 빈 스트림의 종단에 도달할 때까지 계속될 수도 있다.
역으로, 비디오 디코더는 오프셋 값을 포함하는 바이트 스트림을 수신할 수도 있다. 비디오 디코더는 비디오 인코더에 의해 선택된 것과 동일한 코딩 컨텍스트를 선택하고, 서브-간격들의 쌍을 결정하기 위해 코딩 컨텍스트에 의해 명시된 확률 추정치들을 이용하며, 그 서브-간격들의 쌍의 각각은 상이한 빈 값에 대응한다. 오프셋 값이 제 1 서브-간격인 경우에, 비디오 디코더는 제 1 빈 값을 디코딩한다. 오프셋 값이 제 2 서브-간격인 경우에, 비디오 디코더는 제 2 빈 값을 디코딩한다. 비디오 디코더는 그 다음, 디코딩된 빈 값에 기초하여 확률 추정치들을 업데이트하기 위해 상태 업데이트 함수를 이용할 수도 있다. 비디오 디코더는 서브-간격들을 다시 결정하기 위해 업데이트된 확률 추정치들을 이용하고, 업데이트된 하위 서브-간격의 하위 종단은, 오프셋 값이 이전 하위 서브-간격 내에 있는 경우에 이전 하위 서브-간격의 낮은 종단과 동일하고, 오프셋 값이 이전 상위 서브-간격 내에 있는 경우에 이전 상위 서브-간격의 낮은 종단과 동일하다. 비디오 디코더는, 비디오 디코더가 바이트 스트림의 종단에 도달할 때까지 이 프로세스를 계속할 수도 있다. 비디오 디코더는 하나 이상의 신택스 엘리먼트들의 값을 결정하기 위해 결과적인 빈 스트림을 이진화해제 (de-binarize) 할 수도 있다.
상술된 산술 인코딩 및 산술 디코딩 프로세스들에서, 비디오 인코더 및 비디오 디코더는 상태 업데이트 함수를 이용하여 확률 추정치들을 업데이트한다. 비디오 인코더 및 비디오 디코더는 모든 타입들의 신택스 엘리먼트들을 코딩할 때 모든 코딩 컨텍스트들에 대해 동일한 상태 업데이트 함수를 이용하다. 하지만, 이 개시물에서 기술된 바와 같이, 상이한 상황들에서 상이한 상태 업데이트 함수들을 이용하는 것은 향상된 코딩 효율 및 비트 레이트 감소의 결과를 가져올 수도 있다. 이것은, 다시, 향상된 픽처 품질 및/또는 감소된 대역폭 소모의 결과를 가져올 수도 있다.
본 개시의 하나의 예에서, 비디오 인코더는 비디오 데이터에 기초하여 신택스 엘리먼트를 생성하고, 그 신택스 엘리먼트에 이진 산술 인코딩을 적용함으로써 오프셋 값을 결정한다. 이진 산술 인코딩을 적용하는 것의 일부로서, 비디오 인코더는 신택스 엘리먼트를 이진화함으로써 빈 스트림을 생성한다. 추가적으로, 빈 스트림의 적어도 하나의 각각의 빈에 대해, 비디오 인코더는, 그 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 각각의 빈의 값에 기초하여, 빈 스트림의 다음 빈에 대한 간격을 결정한다. 비디오 인코더는 또한, 빈 스트림의 다음 빈에 대해 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정한다. 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들은 다음 빈에 대한 확률 추정치들이 어떻게 각각의 빈에 대한 상태로부터 계산되는지를 제어한다. 추가적으로, 비디오 인코더는 파라미터화된 상태 업데이팅 함수를 이용하여 빈 스트림의 다음 빈에 대한 상태를 결정할 수도 있다. 파라미터화된 상태 업데이팅 함수는 각각의 빈에 대한 상태, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값을 입력으로서 취한다. 이 예에서, 오프셋 값은 빈 스트림의 마지막 빈에 대한 간격에서의 값과 동일하다. 비디오 인코더는 오프셋 값을 포함하는 비트스트림을 출력할 수도 있다.
본 개시의 다른 예에서, 비디오 디코더는 비트스트림에 포함된 오프셋 값과 동일한 이진 산술 디코딩을 적용함으로써 디코딩된 신택스 엘리먼트를 결정할 수도 있다. 이진 산술 디코딩을 적용하는 것의 일부로서, 비디오 디코더는 빈 스트림을 생성할 수도 있다. 빈 스트림을 생성하는 것의 일부로서, 빈 스트림의 적어도 하나의 각각의 빈에 대해, 비디오 디코더는 각각의 빈의 값을 결정할 수도 있다. 비디오 디코더는 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 오프셋 값에 기초하여 이 결정을 실시할 수도 있다. 또한, 비디오 디코더는 빈 스트림의 다음 빈에 대해 하나 이상의 유한 FSM 파라미터들을 결정할 수도 있다. 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들은 다음 빈에 대한 확률 추정치들이 어떻게 각각의 빈에 대한 상태로부터 계산되는지를 제어한다. 빈 스트림의 다음 빈은 빈 스트림에서의 각각의 빈을 뒤따른다. 또한, 비디오 디코더는 파라미터화된 상태 업데이팅 함수를 이용하여 빈 스트림의 다음 빈에 대한 상태를 결정한다. 파라미터화된 상태 업데이팅 함수는 각각의 빈에 대한 상태, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값을 입력으로서 취한다. 비디오 디코더는 디코딩된 신택스 엘리먼트를 형성하기 위해 빈 스트림을 이진화해제할 수도 있다. 또한, 비디오 디코더는 디코딩된 신택스 엘리먼트에 부분적으로 기초하여 비디오 데이터의 픽처를 재구성할 수도 있다.
도 1 은 본 개시의 기법들을 활용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 나타내는 블록도이다. 도 1에 나타낸 바와 같이, 시스템 (10) 은, 목적지 디바이스 (14) 에 의해 나중에 디코딩될 인코딩된 비디오 데이터를 제공하는 소스 디바이스 (12) 를 포함한다. 소스 디바이스 (12) 는 인코딩된 비디오 데이터를, 컴퓨터 판독가능 매체 (16) 를 통해 목적지 디바이스 (14) 에 제공한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 데스크탑 컴퓨터들, 노트북 (즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 전화기 핸드셋 이를테면 소위 "스마트" 폰들, 태블릿 컴퓨터, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스들 등을 포함한, 광범위한 디바이스들 중 어느 것을 포함할 수도 있다. 일부 경우들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신을 위해 구비된다. 따라서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신 디바이스들일 수도 있다. 본 개시에 설명된 기법들은 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다. 소스 디바이스 (12) 는 예시적인 비디오 인코딩 디바이스 (즉, 비디오 데이터를 인코딩하기 위한 디바이스) 이다. 목적지 디바이스 (14) 는 예시적인 비디오 디코딩 디바이스 (즉, 비디오 데이터를 디코딩하기 위한 디바이스) 이다.
도 1 의 예시된 시스템 (10) 은 단지 하나의 예이다. 비디오 데이터를 프로세싱하기 위한 기법들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스에 의해 수행될 수도 있다. 일부 예에서, 기법들은 통상적으로 "코덱 (CODEC)"으로 지칭되는 비디오 인코더/디코더에 의해 수행될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (12) 는 소스 디바이스 (14) 가 목적지 디바이스 (14) 로의 송신을 위한 코딩된 비디오 데이터를 생성하는 그러한 코딩 디바이스들의 예들이다. 일부 예들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 소스 디바이스 (12) 및 목적지 디바이스 (14) 의 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭 방식으로 동작한다. 그러므로, 시스템 (10) 은 예를 들면, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅 또는 화상 통화를 위해, 소스 디바이스 (12) 와 목적지 디바이스 (14) 간의 일방향 또는 양방향 비디오 송신을 지원할 수도 있다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 데이터를 저장하도록 구성된 저장 매체 (19), 비디오 인코더 (20), 및 출력 인터페이스 (22) 를 포함한다. 목적지 디바이스 (14) 는 입력 인터페이스 (26), 인코딩된 비디오 데이터를 저장하도록 구성된 저장 매체 (28), 비디오 디코더 (30) 및 디스플레이 디바이스 (32) 를 포함한다. 다른 예들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 다른 컴포넌트들 또는 배열들을 포함한다. 예를 들어, 소스 디바이스 (12) 는 외부 카메라와 같은 외부 비디오 소스로부터 비디오 데이터를 수신할 수도 있다. 마찬가지로, 목적지 디바이스 (14) 는 통합된 디스플레이 디바이스를 포함하는 것보다는 외부 디스플레이 디바이스와 인터페이싱할 수도 있다.
비디오 소스 (18) 는 비디오 데이터의 소스이다. 비디오 데이터는 일련의 픽처들을 포함할 수도 있다. 비디오 소스 (18) 는 비디오 카메라와 같은 비디오 캡처 디바이스, 이전에 캡처된 비디오를 포함하는 비디오 아카이브 (video archive), 및/또는 비디오 콘텐츠 제공자로부터 비디오 데이터를 수신하기 위한 비디오 피드 인터페이스 (video feed interface) 를 포함할 수도 있다. 일부 예들에서, 비디오 소스 (18) 는 컴퓨터 그래픽 기반 데이터, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터-생성된 비디오의 조합을 생성한다. 저장 매체들 (19) 은 비디오 데이터를 저장하도록 구성될 수도 있다. 각각의 경우에 있어서, 캡처된, 사전-캡처된 또는 컴퓨터 생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다.
출력 인터페이스 (22) 는 인코딩된 비디오 정보를 컴퓨터 판독가능 매체 (16) 에 출력할 수도 있다. 출력 인터페이스 (22) 는 다양한 타입들의 컴포넌트들 또는 디바이스들을 포함할 수도 있다. 예를 들어, 출력 인터페이스 (22) 는 무선 송신기, 모뎀, 유선 네트워킹 컴포넌트 (예를 들어, 이더넷 카드), 또는 다른 물리 컴포넌트를 포함할 수도 있다. 출력 인터페이스 (22) 가 무선 송신기를 포함하는 예들에 있어서, 출력 인터페이스 (22) 는 4G, 4G-LTE, LTE 어드밴스드, 5G 등과 같은 셀룰러 통신 표준에 따라 변조되는 인코딩된 비디오 데이터와 같은 데이터를 송신하도록 구성될 수도 있다. 출력 인터페이스 (22) 가 무선 송신기를 포함하는 일부 예들에 있어서, 출력 인터페이스 (22) 는 IEEE 802.11 사양, IEEE 802.15 사양 (예를 들어, ZigBee™), Bluetooth™ 표준 등과 같은 다른 무선 표준들에 따라 변조되는 인코딩된 비디오 데이터와 같은 데이터를 송신하도록 구성될 수도 있다. 일부 예들에 있어서, 출력 인터페이스 (22) 의 회로부는 비디오 인코더 (20) 및/또는 소스 디바이스 (12) 의 다른 컴포넌트들의 회로부에 통합된다. 예를 들어, 비디오 인코더 (20) 및 출력 인터페이스 (22) 는 시스템 온 칩 (SoC) 의 부분들일 수도 있다. SoC 는 또한, 범용 마이크로프로세서, 그래픽스 프로세싱 유닛 등과 같은 다른 컴포넌트들을 포함할 수도 있다.
목적지 디바이스 (14) 는 인코딩된 비디오 데이터를 컴퓨터 판독가능 매체 (16) 를 통해 수신할 수도 있다. 컴퓨터 판독 가능 매체 (16) 는, 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동시킬 수 있는 임의의 타입의 매체 또는 디바이스를 포함할 수도 있다. 일부 예들에서, 컴퓨터 판독가능 매체 (16) 는, 소스 디바이스 (12) 로 하여금 실시간으로 직접 목적지 디바이스 (14) 로, 인코딩된 비디오 데이터를 송신할 수 있게 하기 위한 통신 매체를 포함한다. 통신 매체는 임의의 무선 또는 유선 통신 매체, 이를테면 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들을 포함할 수도 있다. 통신 매체는 패킷 기반 네트워크, 이를테면 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크의 부분을 형성할 수도 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다. 목적지 디바이스 (14) 는 인코딩된 비디오 데이터 및 디코딩된 비디오 데이터를 저장하도록 구성된 하나 이상의 데이터 저장 매체를 포함할 수도 있다.
일부 예들에서, 출력 인터페이스 (22) 는 인코딩된 비디오 데이터와 같은 데이터를 저장 디바이스와 같은 중간 디바이스에 출력할 수도 있다. 유사하게, 목적지 디바이스 (14) 의 입력 인터페이스 (26) 는 중간 디바이스로부터 인코딩된 데이터를 수신할 수도 있다. 중간 디바이스는 하드 드라이브, 블루-레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체들과 같은 다양한 분산된 또는 국부적으로 액세스된 데이터 저장 매체들 중 임의의 데이터 저장 매체를 포함할 수도 있다. 일부 예에서, 중간 디바이스는 파일 서버에 대응한다. 예시적인 파일 서버들은 웹 서버들, FTP 서버들, 네트워크 접속형 저장 (NAS) 디바이스들, 또는 로컬 디스크 드라이브들을 포함한다.
목적지 디바이스 (14) 는, 인터넷 접속을 포함한, 임의의 표준 데이터 접속을 통해 인코딩된 비디오 데이터에 액세스할 수도 있다. 이것은, 파일 서버 상에 저장된 인코딩된 비디오 데이터를 액세스하는데 적합한 무선 채널 (예컨대, Wi-Fi 접속), 유선 접속 (예컨대, DSL, 케이블 모뎀 등), 또는 양자의 조합을 포함할 수도 있다. 저장 디바이스로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들의 조합일 수도 있다.
컴퓨터 판독 가능 매체 (16) 는, 무선 브로드캐스트 또는 유선 네트워크 송신 등의 일시적 매체, 또는 하드 디스크, 플래시 드라이브, 컴팩트 디스크, 디지털 비디오 디스크, 블루레이 디스크 또는 다른 컴퓨터 판독 가능 매체 등의 저장 매체 (즉, 비일시적 저장 매체) 를 포함할 수도 있다. 일부 예들에서, 네트워크 서버 (미도시) 는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 수신하고, 인코딩된 비디오 데이터를, 예를 들어, 네트워크 송신을 통해 목적지 디바이스 (14) 에 제공할 수도 있다. 유사하게, 디스크 스탬핑 설비와 같은 매체 생성 설비의 컴퓨팅 디바이스는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 수신하고, 인코딩된 비디오 데이터를 포함하는 디스크를 생성할 수도 있다. 따라서, 컴퓨터 판독가능 매체 (16) 는, 다양한 예들에 있어서, 다양한 형태들의 하나 이상의 컴퓨터 판독가능 매체들을 포함하는 것으로 이해될 수도 있다.
목적지 디바이스 (14) 의 입력 인터페이스 (26) 는 컴퓨터 판독가능 매체 (16) 로부터 데이터를 수신한다. 입력 인터페이스 (26) 는 다양한 타입들의 컴포넌트들 또는 디바이스들을 포함할 수도 있다. 예를 들어, 입력 인터페이스 (26) 는 무선 수신기, 모뎀, 유선 네트워킹 컴포넌트 (예를 들어, 이더넷 카드), 또는 다른 물리 컴포넌트를 포함할 수도 있다. 입력 인터페이스 (26) 가 무선 수신기를 포함하는 예들에 있어서, 입력 인터페이스 (26) 는 4G, 4G-LTE, LTE 어드밴스드, 5G 등과 같은 셀룰러 통신 표준에 따라 변조되는 비트스트림과 같은 데이터를 수신하도록 구성될 수도 있다. 입력 인터페이스 (26) 가 무선 수신기를 포함하는 일부 예들에 있어서, 입력 인터페이스 (26) 는 IEEE 802.11 사양, IEEE 802.15 사양 (예를 들어, ZigBee™), Bluetooth™ 표준 등과 같은 다른 무선 표준들에 따라 변조되는 비트스트림과 같은 데이터를 수신하도록 구성될 수도 있다. 일부 예들에 있어서, 입력 인터페이스 (26) 의 회로부는 비디오 디코더 (30) 및/또는 목적지 디바이스 (14) 의 다른 컴포넌트들의 회로부에 통합될 수도 있다. 예를 들어, 비디오 디코더 (30) 및 입력 인터페이스 (26) 는 SoC 의 부분들일 수도 있다. SoC 는 또한, 범용 마이크로프로세서, 그래픽스 프로세싱 유닛 등과 같은 다른 컴포넌트들을 포함할 수도 있다.
저장 매체 (28) 는 입력 인터페이스 (26) 에 의해 수신된 인코딩된 비디오 데이터 (예를 들어, 비트스트림) 와 같은 인코딩된 비디오 데이터를 저장하도록 구성될 수도 있다. 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 디스플레이한다. 디스플레이 디바이스 (32) 는 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 디스플레이 디바이스를 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서 (DSP) 들, 주문형 반도체 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합과 같은 다양한 적합한 회로 중 어느 것으로도 구현될 수 있다. 그 기법들이 부분적으로 소프트웨어로 구현될 때, 디바이스는 적합한 비일시적 컴퓨터 판독가능 매체에 그 소프트웨어를 위한 명령들을 저장하고 본 개시의 기법들을 수행하기 위하여 하나 이상의 프로세서들을 이용하여 하드웨어에서 그 명령들을 실행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있는데, 이들 중 어느 일방은 각각의 디바이스에서 결합된 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다.
일부 예들에 있어서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 비디오 코딩 표준에 따라 동작할 수도 있다. 예를 들어, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, SVC (Scalable Video Coding) 및 MVC (Multi-View Video Coding) 확장들을 포함하는, ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 또는 ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual 및 ITU-T H.264 (ISO/IEC MPEG-4 AVC 으로도 알려짐), 또는 다른 비디오 코딩 표준 또는 명세에 따라 비디오 데이터를 인코딩 및 디코딩할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, ITU-T H.265 로서 알려진 HEVC (High Efficiency Video Coding), 그것의 범위 및 스크린 콘텐츠 코딩 확장들, 그것의 3D 비디오 코딩 확장 (3D-HEVC), 그것의 멀티뷰 확장 (MV-HEVC), 또는 그것의 스케일러블 확장 (SHVC) 에 따라 비디오 데이터를 인코딩 및 디코딩한다.
본 개시는 일반적으로 신택스 엘리먼트들과 같은 어떤 정보를 "시그널링 (signaling)" 하는 것을 언급할 수도 있다. 용어 "시그널링" 은 일반적으로, 인코딩된 비디오 데이터를 디코딩하는데 사용되는 다른 데이터 및/또는 신택스 엘리먼트들의 통신을 지칭할 수도 있다. 그러한 통신은 실시간 또는 준-실시간으로 발생할 수도 있다. 대안적으로, 그러한 통신은, 신택스 엘리먼트들을 인코딩 시 비트스트림으로 컴퓨터 판독가능 저장 매체에 저장할 경우 (그 후, 이 매체에 저장된 이후 임의의 시간에서 디코딩 디바이스에 의해 취출될 수도 있음) 에 발생할 수도 있는 것과 같이, 시간 범위에 걸쳐 발생할 수도 있다.
HEVC 및 다른 비디오 코딩 사양들에 있어서, 비디오 데이터는 일련의 픽처들을 포함한다. 픽처들은 또한, "프레임" 들로 지칭될 수도 있다. 픽처는 하나 이상의 샘플 어레이들을 포함할 수도 있다. 픽처의 각각의 개별 샘플 어레이는 개별 컬러 컴포넌트에 대한 샘플들의 어레이를 포함할 수도 있다. 픽처는 SL, SCb, 및 SCr 로서 표기되는 3 개의 샘플 어레이들을 포함할 수도 있다. SL 은 루마 샘플들의 2-차원 어레이 (즉, 블록) 이다. SCb 는 Cb 크로마 샘플들의 2-차원 어레이이다. SCr 은 Cr 크로마 샘플들의 2-차원 어레이이다. 다른 사례들에서, 픽처는 단색 (monochrome) 일 수도 있고, 루마 샘플들의 어레이만을 포함할 수도 있다.
비디오 데이터를 인코딩하는 것의 일부로서, 비디오 인코더 (20) 는 비디오 데이터의 픽처들을 인코딩할 수도 있다. 달리 말하면, 비디오 인코더 (20) 는 비디오 데이터의 픽처들의 인코딩된 표현들을 생성할 수도 있다. 픽처의 인코딩된 표현은 본 명세서에서 "코딩된 픽처" 또는 "인코딩된 픽처" 로서 지칭될 수도 있다.
픽처의 인코딩된 표현을 생성하기 위해, 비디오 인코더 (20) 는 픽처의 블록들을 인코딩할 수도 있다. 비디오 인코더 (20) 는 비디오 블록의 인코딩된 표현을 비트스트림에 포함시킬 수도 있다. 일부 예들에서, 픽처의 블록을 인코딩하기 위해, 비디오 인코더 (20) 는 하나 이상의 예측적 블록들을 생성하기 위해 인트라 예측 또는 인터 예측을 수행한다. 추가적으로, 비디오 인코더 (20) 는 블록에 대한 잔차 데이터를 생성할 수도 있다. 잔차 블록은 잔차 샘플들을 포함한다. 각각의 잔차 샘플은 생성된 예측적 블록들과 그 블록의 대응하는 샘플 간의 차이를 나타낼 수도 있다. 비디오 인코더 (20) 는 변환 계수들을 생성하기 위해 잔차 샘플들의 블록들에 변환을 적용할 수도 있다. 또한, 비디오 인코더 (20) 는 변환 계수들을 양자화할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 변환 계수를 나타내기 위해 하나 이상의 신택스 엘리먼트들을 생성할 수도 있다. 비디오 인코더 (20) 는 변환 계수들을 나타내는 신택스 엘리먼트들 중 하나 이상을 엔트로피 인코딩할 수도 있다.
보다 구체적으로, 픽처의 인코딩된 표현을 생성하기 위해서, HEVC 또는 다른 비디오 코딩 사양들에 따라 비디오 데이터를 인코딩할 때, 비디오 인코더 (20) 는 픽처의 각 샘플 어레이를 코딩 트리 블록 (CTB) 들로 파티셔닝하고 그 CTB 들을 인코딩할 수도 있다. CTB 는 픽처의 샘플 어레이에서의 샘플들의 NxN 블록일 수도 있다. HEVC 메인 프로파일에서, CTB 의 사이즈는, 비록 기술적으로 8x8 CTB 사이즈드이 지원될 수 있지만, 16x16 에서부터 64x64 까지의 범위일 수 있다.
픽처의 코딩 트리 유닛 (CTU) 은 하나 이상의 CTB 들을 포함할 수도 있고, 그 하나 이상의 CTB 들의 샘플들을 인코딩하기 위해 사용되는 신택스 구조들을 포함할 수도 있다. 실례로, 각 CTU 는 루마 샘플들의 CTB, 크로마 샘플들의 2개의 대응하는 CTB들, 및 CTB들의 샘플들을 인코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3개의 별개의 컬러 평면들을 갖는 픽처들에 있어서, CTU 는 단일의 CTB, 및 그 CTB 의 샘플들을 인코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. CTU 는 또한 "트리 블록" 또는 "최대 코딩 유닛" (LCU) 으로 지칭될 수도 있다. 이 개시물에서, "신택스 구조 (syntax structure)" 는 특정된 순서로 비트스트림에서 함께 존재하는 제로 또는 그보다 많은 신택스 엘리먼트들로서 정의될 수도 있다. 일부 코덱들에서, 인코딩된 픽처는 픽처의 모든 CTU 들을 포함하는 인코딩된 표현이다.
픽처의 CTU 를 인코딩하기 위해, 비디오 인코더 (20) 는 CTU 의 CTB 들을 하나 이상의 코딩 블록들로 파티셔닝할 수도 있다. 코딩 블록은 샘플들의 NxN 블록이다. 일부 코덱들에서, 픽처의 CTU 를 인코딩하기 위해, 비디오 인코더 (20) 는 CTU 의 코딩 트리 블록들에 대해 쿼드-트리 파티셔닝을 재귀적으로 수행하여, CTB 들을 코딩 블록들, 따라서, 일명 "코딩 트리 유닛들” 로 파티셔닝할 수도 있다. 코딩 유닛 (CU) 은 하나 이상의 코딩 트리 블록들 및그 하나 이상의 코딩 트리 블록들의 샘플들을 인코딩하기 위해 사용되는 신택스 구조들을 포함할 수도 있다. 예를 들어, CU 는 루마 샘플 어레이, Cb 샘플 어레이, 및 Cr 샘플 어레이를 갖는 픽처의 루마 샘플들의 코딩 블록, 및 크로마 샘플들의 2 개의 대응하는 코딩 블록들, 그리고 코딩 블록들의 샘플들을 인코딩하는데 사용된 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3개의 별개의 색 평면들을 갖는 픽처들에서, CU 는 단일 코딩 블록 및 그 코딩 블록의 샘플들을 코딩하는데 사용된 신택스 구조들을 포함할 수도 있다.
또한, 비디오 인코더 (20) 는 비디오 데이터의 픽처의 CU 들을 인코딩할 수도 있다. 일부 코덱들에서, CU 를 인코딩하는 것의 일부로서, 비디오 인코더 (20) 는 CU 의 코딩 블록을 하나 이상의 예측 블록들로 파티셔닝할 수도 있다. 예측 블록은, 동일한 예측이 적용되는 샘플들의 직사각형 (즉, 정사각형 또는 비정사각형) 블록이다. CU 의 예측 유닛 (PU) 은 CU 의 하나 이상의 예측 블록들 및 그 하나 이상의 예측 블록들을 예측하기 위해 사용되는 신택스 구조를 포함할 수도 있다. 예를 들어, PU 는 루마 샘플들의 예측 블록, 크로마 샘플들의 2 개의 대응하는 예측 블록들, 및 예측 블록들을 예측하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3 개의 별개의 컬러 평면들을 갖는 픽처들에 있어서, PU 는 단일의 예측 블록, 및 그 예측 블록을 예측하는데 사용되는 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (20) 는, CU 의 PU 의 예측 블록 (에를 들어, 루마, Cb, 및 Cr 예측 블록) 을 위해 예측적 블록 (예를 들어, 루마, Cb, 및 Cr 예측성 블록들) 을 생성할 수도 있다. 비디오 인코더 (20) 는 인트라 예측 또는 인터 예측을 이용하여 예측성 블록을 생성할 수도 있다. 비디오 인코더 (20) 가 예측성 블록을 생성하기 위해 인트라 예측을 사용하는 경우에, 비디오 인코더 (20) 는 CU 를 포함하는 픽처의 디코딩된 샘플들에 기초하여 예측성 블록을 생성할 수도 있다. 비디오 인코더 (20) 가 인터 예측을 이용하여 현재 픽처의 PU 의 예측성 블록을 생성하는 경우, 비디오 인코더 (20) 는 레퍼런스 픽처 (즉, 현재 픽처 이외의 픽처) 의 디코딩된 샘플들에 기초하여 PU 의 예측성 블록을 생성할 수도 있다. HEVC 에서, 비디오 인코더 (20) 는 인터 예측된 PU 들에 대한 "coding_unit” 신택스 구조 내의 "prediction_unit” 신택스 구조를 생성하지만, 인트라 예측된 PU 들에 대한 "coding_unit” 신택스 구조 내에서 "prediction_unit” 신택스 구조를 생성하지 않는다. 오히려, HEVC 에서, 인트라 예측된 PU 들과 관련된 신택스 엘리먼트는 "coding_unit” 구문 구조에 직접 포함된다.
비디오 인코더 (20) 는 CU 에 대한 하나 이상의 잔차 블록들을 생성할 수도 있다. 실례로, 비디오 인코더 (20) 는 CU 에 대한 루마 잔차 블록을 생성할 수도 있다. CU 의 루마 잔차 블록에 있는 각각의 샘플은 CU 의 예측 루마 블록들 중 하나에 있는 루마 샘플과 CU 의 원래 루마 코딩 블록에 있는 대응하는 샘플 사이의 차이를 표시한다. 또한, 비디오 인코더 (20) 는 CU 에 대한 Cb 잔차 블록을 생성할 수도 있다. CU 의 Cb 잔차 블록에서의 각각의 샘플은 CU 의 예측성 Cb 블록들 중 하나에 있는 Cb 샘플과 CU 의 원래 Cb 코딩 블록에 있는 대응하는 샘플 사이의 차이를 표시할 수도 있다. 비디오 인코더 (20) 는 또한, CU 에 대한 Cr 잔차 블록을 생성할 수도 있다. CU 의 Cr 잔차 블록에서의 각각의 샘플은 CU 의 예측성 Cr 블록들 중 하나에서의 Cr 샘플과 CU 의 오리지널 Cr 코딩 블록에서의 대응하는 샘플 간의 차이를 나타낼 수도 있다.
또한, 비디오 인코더 (20) 는 CU 의 잔차 블록들을 하나 이상의 변환 블록들로 분해할 수도 있다. 실례로, 비디오 인코더 (20) 는 쿼드-트리 파티셔닝을 이용하여 CU 의 잔차 블록들을 하나 이상의 변환 블록들로 분해할 수도 있다. 변환 블록은, 동일한 변환이 적용되는 샘플들의 직사각형 (예컨대, 정사각형 또는 비-정사각형) 블록이다. CU 의 변환 유닛 (TU) 은 하나 이상의 변환 블록들을 포함할 수도 있다. 예를 들어, TU 는 루마 샘플들의 변환 블록들, 크로마 샘플들의 2 개의 대응하는 변환 블록들, 및 변환 블록 샘플들을 변환하기 위해 사용되는 신택스 구조들을 포함할 수도 있다. 따라서, CU 의 각 TU 는 루마 변환 블록, Cb 변환 블록, 및 Cr 변환 블록을 가질 수도 있다. TU 의 루마 변환 블록은 CU 의 루마 잔차 블록의 서브-블록일 수도 있다. Cb 변환 블록은 CU 의 Cb 잔차 블록의 서브-블록일 수도 있다. Cr 변환 블록은 CU 의 Cr 잔차 블록의 서브-블록일 수도 있다. 단색 픽처들 또는 3 개의 별개의 컬러 평면들을 갖는 픽처들에 있어서, TU 는 단일의 변환 블록, 및 그 변환 블록의 샘플들을 변환하는데 사용되는 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (20) 는 TU 를 위한 계수 블록을 생성하기 위하여 TU 의 변환 블록에 하나 이상의 변환들을 적용할 수도 있다. 계수 블록은 변환 계수들의 2-차원 어레이일 수도 있다. 변환 계수는 스칼라 양일 수도 있다. 일부 예들에서, 하나 이상의 변환들은 변환 블록을 픽셀 도메인으로부터 주파수 도메인으로 변환한다. 따라서, 이러한 예들에서, 변환 계수는 주파수 도메인에 있을 것으로 간주되는 스칼라 양일 수도 있다. 변환 계수 레벨은 변환 계수 값의 계산을 위한 스케일링 이전에 디코딩 프로세스에서 특정 2-차원 주파수 인덱스와 연관된 값을 나타내는 정수 양이다.
일부 예들에서, 비디오 인코더 (20) 는 변환 블록에 대한 변환들의 적용을 생략한다. 이러한 예들에서, 비디오 인코더 (20) 는 잔차 샘플 값들을 변환 계수들과 동일한 방식으로 처리할 수도 있다. 따라서, 비디오 인코더 (20) 가 변환들의 적용을 생략하는 예들에서, 변환 계수들 및 계수 블록들의 다음과 같은 논의가 잔차 샘플들의 변환 블록들에 적용가능할 수도 있다.
계수 블록을 생성한 후에, 비디오 인코더 (20) 는 계수 블록을 표현하기 위해 사용되는 데이터의 양을 가능하게는 감소시키기 위해서 계수 블록을 양자화하여, 잠재적으로 추가적인 압축을 제공할 수도 있다. 양자화는 일반적으로 값들의 범위가 단일 값으로 압축되는 프로세스를 지칭한다. 예를 들어, 양자화는 값을 상수로 나누고, 그 다음에 가장 가까운 정수로 라운딩 (rounding) 함으로써 행해질 수도 있다. 계수 블록을 양자화한 후에, 비디오 인코더 (20) 는 계수 블록의 변환 계수들을 양자화할 수도 있다. 양자화는 일부 또는 모든 변환 계수들과 연관된 비트 깊이를 감소시킬 수도 있다. 예를 들어, n 비트 변환 계수는 양자화 동안 m 비트 변환 계수로 라운드-다운될 수도 있으며, 여기서, n 은 m 보다 크다. 일부 예들에서, 비디오 인코더 (20) 는 양자화를 스킵한다.
비디오 인코더 (20) 는 잠재적으로 양자화된 변환 계수의 일부 또는 전부를 나타내는 신택스 엘리먼트를 생성할 수도 있다. 비디오 인코더 (20) 는 양자화된 변환 계수를 나타내는 신택스 엘리먼트들 중 하나 이상을 엔트로피 인코딩할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 양자화된 변환 계수들을 표시하는 신택스 엘리먼트들에 대해 컨텍스트 적응적 이진 산술 코딩 (CABAC) 을 수행할 수도 있다. 따라서, 인코딩된 블록 (예컨대, 인코딩된 CU) 는 양자화된 변환 계수들을 나타내는 엔트로피 인코딩된 신택스 엘리먼트들을 포함할 수도 있다.
비디오 인코더 (20) 는 인코딩된 비디오 데이터를 포함하는 비트스트림을 출력할 수도 있다. 달리 말하면, 비디오 인코더 (20) 는, 비디오 데이터의 인코딩된 표현을 포함하는 비트스트림을 출력할 수도 있다. 비디오 데이터의 인코딩된 표현은 비디오 데이터의 픽처들의 인코딩된 표현을 포함할 수도 있다. 예를 들어, 비트스트림은 비디오 데이터의 인코딩된 픽처들 및 연관된 데이터의 표현을 형성하는 비트들의 시퀀스를 포함할 수도 있다. 일부 예들에서, 인코딩된 픽처의 표현은 픽처의 블록들의 인코딩된 표현들을 포함할 수도 있다.
비디오 디코더 (30) 는 비디오 인코더 (20) 에 의해 생성된 비트스트림을 수신할 수도 있다. 상기 언급된 바와 같이, 비트스트림은 비디오 데이터의 인코딩된 표현을 포함할 수도 있다. 비디오 디코더 (30) 는 비디오 데이터의 픽처들을 재구성하기 위해 비트스트림을 디코딩할 수도 있다. 비트스트림을 디코딩하는 것의 일부로서, 비디오 디코더 (30) 는 비트스트림으로부터 신택스 엘리먼트들을 획득할 수도 있다. 비디오 디코더 (30) 는 비트스트림으로부터 획득된 신택스 엘리먼트들에 적어도 부분적으로 기초하여 비디오 데이터의 픽처들을 재구성할 수도 있다. 비디오 데이터의 픽처들을 재구성하기 위한 프로세스는 일반적으로, 비디오 인코더 (20) 에 의해 수행되는 프로세스에 대해 상호 역일 수도 있다.
실례로, 비디오 데이터의 픽처를 디코딩하는 것의 일부로서, 비디오 디코더 (30) 는 예측성 블록들을 생성하기 위해서 인터 예측 또는 인트라 예측을 이용할 수도 있다. 추가적으로, 비디오 디코더 (30) 는 비트스트림으로부터 획득된 신택스 엘리먼트들에 기초하여 변환 계수들을 결정할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 결정된 변환 계수들을 역 양자화한다. 역 양자화 맵들은 양자화된 값을 재구성되는 값에 맵핑한다. 실례로, 비디오 디코더 (30) 는 양자화 스텝 사이즈에 의해 곱해지는 값을 결정함으로써 값을 역 양자화할 수도 있다. 또한, 비디오 디코더 (30) 는 잔차 샘플들의 값들을 결정하기 위해 결정된 변환 계수들에 역 변환을 적용할 수도 있다. 비디오 디코더 (30) 는 잔차 샘플들 및 생성된 예측성 블록들의 대응하는 샘플들에 기초하여 픽처의 블록을 재구성할 수도 있다. 실례로, 비디오 디코더 (30) 는 블록의 재구성된 샘플들을 결정하기 위해 생성된 예측성 블록들의 대응하는 샘들들에 잔차 샘플들을 부가할 수도 있다.
보다 구체적으로, HEVC 및 다른 비디오 코딩 사양들에서, 비디오 디코더 (30) 는 현재 CU 의 각각의 PU 에 대해 하나 이상의 예측성 블록들을 생성하기 위해 인터 예측 또는 인트라 예측을 사용할 수도 있다. 또한, 비디오 디코더 (30) 는 현재 CU 의 TU 들의 계수 블록들을 역 양자화할 수도 있다. 비디오 디코더 (30) 는 현재 CU 의 TU 들의 변환 블록들을 재구성하기 위하여 계수 블록들에 대해 역 변환들을 수행할 수도 있다. 비디오 디코더 (30) 는 현재 CU 의 PU들의 예측성 블록들의 샘플들 및 현재 CU 의 TU 들의 변환 블록들의 잔차 샘플들에 기초하여, 현재 CU 의 코딩 블록을 재구성할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 현재 CU 의 PU들에 대한 예측성 블록들의 샘플들을, 현재 CU 의 TU 들의 변환 블록들의 대응하는 디코딩된 샘플들에 부가함으로써, 현재 CU 의 코딩 블록들을 재구성할 수도 있다. 픽처의 각각의 CU 에 대한 코딩 블록들을 재구성함으로써, 비디오 디코더 (30) 는 픽처를 재구성할 수도 있다.
픽처의 슬라이스는 픽처의 정수 개수의 블록들을 포함할 수도 있다. 예를 들어, HEVC 및 다른 비디오 코딩 사양들에서, 픽처의 슬라이스는 픽처의 정수 개수의 CTU 들을 포함할 수도 있다. 슬라이스의 CTU 들은 레스터 스캔 순서와 같은 스캔 순서로 연속적으로 순서화될 수도 있다. HEVC 에 있어서, 슬라이스는 하나의 독립적인 슬라이스 세그먼트에서 그리고 동일한 액세스 유닛 내의 (있다면) 다음의 독립적인 슬라이스 세그먼트에 선행하는 (있다면) 모든 후속의 종속적인 슬라이스 세그먼트들에 포함된 정수 개수의 CTU들로서 정의된다. 또한, HEVC 에서, 슬라이스 세그먼트는 단일 NAL 유닛에 포함되고 타일 스캔에서 연속적으로 순서화된 정수 개수의 CTU들로서 정의된다. 타일 스캔은 CTB 들이 타일에서 CTB 래스터 스캔으로 연속적으로 순서화되는 픽처를 포지셔닝하는 CTB 들의 특정 순차적 순서화인 반면에, 픽처에서의 타일들은 픽처의 타일들의 래스터 스캔으로 연속적으로 순서화된다. 타일은 픽처에서의 특정 타일 열 및 특정 타일 행 내의 CTB 들의 직사각형 영역이다.
상기 언급된 바와 같이, 비디오 인코더 (20) ?? 비디오 디코더 (30) 는 비디오 코딩 및 압축 스킴 (scheme) 의 일부로서 신택스 엘리먼트들에 CABAC 인코딩 및 디코딩을 적용할 수도 있다. 신택스 엘리먼트에 CABAC 인코딩을 적용하기 위해, 비디오 인코더 (30) 는 신택스 엘리먼트를 이진화하여 "빈들" 로서 지칭되는 일련의 하나 이상의 비트들을 형성할 수도 있다. 또한, 비디오 인코더 (20) 는 코딩 컨텍스트를 식별할 수도 있다. 코딩 컨텍스트는 특정 값들을 갖는 빈들의 초기 확률들을 식별할 수도 있다. 실례로, 코딩 컨텍스트는 0-값의 빈을 코딩하는 0.7 의 확률 및 1-값의 빈을 코딩하는 0.3 의 확률을 나타낼 수도 있다. 코딩 컨텍스트를 식별한 후에, 비디오 인코더 (20) 는 간격을 하위 서브-간격 (lower sub-interval) 및 상위 서브-간격 (upper sub-interval) 으로 분할할 수도 있다. 서브-간격들 중 하나는 값 0 과 연관될 수도 있고, 다른 서브-간격은 값 1 과 연관될 수도 있다. 서브-간격들의 폭들은 식별된 코딩 컨텍스트에 의해 연관된 값들에 대해 표시된 확률들에 비례할 수도 있다. 신택스 엘리먼트의 빈이 하위 서브-간격과 연관된 값을 가지는 경우에, 인코딩된 값은 하위 서브-간격의 하위 경계와 동일할 수도 있다. 신택스 엘리먼트의 동일 빈이 상위 서브-간격과 연관된 값을 가지는 경우에, 인코딩된 값은 상위 서브-간격의 하위 경계와 동일할 수도 있다. 신택스 엘리먼트의 다음 빈을 인코딩하기 위해, 비디오 인코더 (20) 는 인코딩되는 비트의 값과 연관된 서브-간격인 간격으로 이들 단계들을 반복할 수도 있다. 비디오 인코더 (20) 가 다음 빈에 대해 이들 단계들을 반복할 때, 비디오 인코더 (20) 는 인코딩되는 빈들의 실제 값들 및 식별된 코딩 컨텍스트에 의해 표시된 확률들에 기초하여 수정된 확률들을 이용할 수도 있다.
비디오 디코더 (30) 가 신택스 엘리먼트에 대해 CABAC 디코딩을 수행할 때, 비디오 디코더 (30) 는 코딩 컨텍스트를 식별할 수도 있다. 비디오 디코더 (30) 는 그 다음, 간격을 하위 서브-간격과 상위 서브-간격으로 분할할 수도 있다. 서브-간격들 중 하나는 값 0 과 연관될 수도 있고, 다른 서브-간격은 값 1 과 연관될 수도 있다. 서브-간격들의 폭들은 식별된 코딩 컨텍스트에 의해 연관된 값들에 대해 표시된 확률들에 비례할 수도 있다. 인코딘된 값이 하위 서브-간격 내인 경우에, 비디오 디코더 (30) 는 하위 서브-간격과 연관된 값을 갖는 빈을 디코딩할 수도 있다. 인코딘된 값이 상위 서브-간격 내인 경우에, 비디오 디코더 (30) 는 상위 서브-간격과 연관된 값을 갖는 빈을 디코딩할 수도 있다. 신택스 엘리먼트의 다음 빈을 디코딩하기 위해, 비디오 디코더 (30) 는 인코딩된 값을 값을 포함하는 서브-간격인 간격으로 이들 단계들을 반복할 수도 있다. 비디오 디코더 (30) 가 다음 빈에 대해 이들 단계들을 반복할 때, 비디오 디코더 (30) 는 디코딩되는 빈들 및 식별된 코딩 컨텍스트에 의해 표시된 확률들에 기초하여 수정된 확률들을 이용할 수도 있다. 비디오 디코더 (30) 는 그 다음, 신택스 엘리먼트를 복원하기 위해 빈들을 이진화해제할 수도 있다.
비디오 인코더 (20) 는 바이패스 CABAC 코딩을 이용하여 일부 빈들을 인코딩할 수도 있다. 빈에 대해 정규 CABAC 코딩을 수행하기보다는 빈에 대해 바이패스 CABAC 코딩을 수행하는 것이 계산적으로 덜 비용이 들 수도 있다. 또한, 바이패스 CABAC 코딩을 수행하는 것은 더 높은 정도의 병렬화 (parallelization) 및 스루풋 (throughput) 을 허용할 수도 있다. 바이패스 CABAC 코딩을 이용하여 인코딩된 빈들은 "바이패스 빈들" 로서 지칭될 수도 있다. 바이패스 빈들을 함께 그룹핑하는 것은 비디오 인코더 (20) ?? 비디오 디코더 (30) 의 스루풋을 증가시킬 수도 있다. 바이패스 CABAC 코딩 엔진은 단일 사이클에서 수개의 빈들을 코딩 가능할 수도 있는 반면, 정규 CABAC 코딩 엔진은 한 사이클에서 오직 단일 빈만을 코딩 가능할 수도 있다. 이들 바이패스 CABAC 코딩 엔진은 그 바이패스 CABAC 코딩 엔진이 컨텍스트들을 선택하지 않고 양 심볼들 (0 및 1) 에 대해 1/2 의 확률을 가정할 수도 있기 때문에 더 단순할 수도 있다. 결과적으로, 바이패스 CABAC 코딩에서, 간격들은 직접 절반으로 분할된다.
도 2 는 본 개시의 기법들을 구현할 수도 있는 예시적인 비디오 인코더 (20) 를 나타내는 블록도이다. 도 2 는 설명의 목적으로 제공되며 본 개시에 폭넓게 예시되고 기재되는 바와 같이 기법들을 제한하는 것으로 고려되지 않아야 한다. 본 개시의 기법들은 다양한 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
프로세싱 회로는 비디오 인코더 (20) 를 포함하고, 비디오 인코더 (20) 는 본 개시에 설명된 예시적인 기법들 중 하나 이상을 수행하도록 구성된다.  실례로, 비디오 인코더 (20) 는 집적 회로를 포함하고, 도 2 에 도시된 다양한 유닛들은 회로 버스로 상호접속되는 하드웨어 회로 블록들로서 형성될 수도 있다. 이들 하드웨어 회로 블록들은 별개의 회로 블록들일 수도 있거나, 또는 그 유닛들 중 2 개이상이 공통 하드웨어 회로 블록으로 결합될 수도 있다.  하드웨어 회로 블록은 AND, OR, NAND, NOR, XOR, XNOR 와 같은 논리 블록 및 다른 유사한 논리 블록뿐만 아니라 산술 논리 유닛 (ALU), 기본 함수 유닛 (EFU) 과 같은 연산 블록을 형성하는 전기 컴포넌트들의 조합으로서 형성될 수도 있다.
일부 예들에서, 도 2 에서 예시된 유닛들 중 하나 이상은 프로세싱 회로 상에서 실행되는 소프트웨어 유닛일 수도 있다.  이러한 예에서, 이들 소프트웨어 유닛에 대한 오브젝트 코드는 메모리에 저장된다.  오퍼레이팅 시스템은 비디오 인코더 (20) 로 하여금 목적 코드를 취출하고 목적 코드를 실행하게 할 수도 있으며, 이는 비디오 인코더 (20) 로 하여금 예시적인 기법들을 구현하기 위한 동작들을 수행하게 한다.  일부 예에서, 소프트웨어 유닛은 비디오 인코더 (20) 가 시동시에 실행되는 펌웨어일 수도 있다.  따라서, 비디오 인코더 (20) 는 예시적인 기술을 수행하는 하드웨어를 갖는 구조적 컴포넌트이거나 또는 하드웨어를 특화하여 예시적인 기술을 수행하기 위해 하드웨어 상에서 실행되는 소프트웨어/펌웨어를 갖는다.
도 2 의 예에서, 비디오 인코더 (20) 는 예측 프로세싱 유닛 (200), 비디오 데이터 메모리 (201), 잔차 생성 유닛 (102), 변환 프로세싱 유닛 (204), 양자화 유닛 (206), 역양자화 유닛 (208), 역변환 프로세싱 유닛 (210), 재구성 유닛 (212), 필터 유닛 (214), 디코딩된 픽처 버퍼 (216), 및 엔트로피 인코딩 유닛 (218) 을 포함한다. 예측 프로세싱 유닛 (200) 은, 인터 예측 프로세싱 유닛 (220) 및 인트라 예측 프로세싱 유닛 (226) 을 포함한다. 인터 예측 프로세싱 유닛 (220) 은, 모션 추정 유닛 및 모션 보상 유닛 (미도시) 을 포함할 수도 있다.
비디오 데이터 메모리 (201) 는 비디오 인코더 (20) 의 컴포넌트들에 의해 인코딩될 비디오 데이터를 저장하도록 구성될 수도 있다. 비디오 데이터 메모리 (201) 에 저장된 비디오 데이터는, 예를 들어, 비디오 소스 (18) 로부터 획득될 수도 있다. 디코딩된 픽처 버퍼 (216) 는, 예컨대 인트라 또는 인터 코딩 모드들에서, 비디오 인코더 (20) 에 의해 비디오 데이터를 인코딩함에 있어서 사용하기 위한 레퍼런스 비디오 데이터를 저장하는 레퍼런스 픽처 메모리일 수도 있다. 비디오 데이터 메모리 (201) 및 디코딩된 픽처 버퍼 (216) 는 동기식 DRAM (SDRAM) 을 포함한 동적 랜덤 액세스 메모리 (DRAM), 자기저항성 RAM (MRAM), 저항성 RAM (RRAM), 또는 다른 타입들의 메모리 디바이스들과 같은 다양한 메모리 디바이스들 중 임의의 메모리 디바이스에 의해 형성될 수도 있다. 비디오 데이터 메모리 (201) 및 디코딩된 픽처 버퍼 (216) 는 동일한 메모리 디바이스 또는 별도의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에 있어서, 비디오 데이터 메모리 (201) 는 비디오 인코더 (20) 의 다른 컴포넌트들과 온-칩형이거나 또는 그 컴포넌트들에 대하여 오프-칩형일 수도 있다. 비디오 데이터 메모리 (201) 는 도 1 의 저장 매체 (19) 와 동일하거나 또는 그것의 일부일 수도 있다.
비디오 인코더 (20) 는 비디오 데이터를 수신한다. 비디오 인코더 (20) 는 비디오 데이터의 픽처의 슬라이스에서 각각의 CTU 를 인코딩할 수도 있다. CTU 들의 각각은 동일한 크기의 루마 코딩 트리 블록들 (CTB) 및 픽처의 대응하는 CTB들과 연관될 수도 있다. CTU 를 인코딩하는 부분으로서, 예측 프로세싱 유닛 (200) 은 파티셔닝을 수행하여, CTU 의 CTB들을 점진적으로 더 작은 블록들로 분할할 수도 있다. 더 작은 픽셀 블록들은 CU 들의 코딩 블록들일 수도 있다. 예를 들어, 예측 프로세싱 유닛 (200) 은 CTU 와 연관된 CTB 를 트리 구조에 따라 파티셔닝할 수도 있다.
비디오 인코더 (20) 는 CTU 의 CU 들을 인코딩하여 CU 들의 인코딩된 표현들 (즉, 코딩된 CU들) 을 생성할 수도 있다. CU 를 인코딩하는 것의 일부로서, 예측 프로세싱 유닛 (200) 은 CU 의 하나 이상의 PU들 중에서 CU 와 연관된 코딩 블록들을 파티셔닝할 수도 있다. 따라서, 각각의 PU 는 루마 예측 블록 및 대응하는 크로마 예측 블록들과 연관될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 다양한 크기를 갖는 PU들을 지원할 수도 있다. 상기 나타낸 바와 같이, CU 의 크기는 CU 의 루마 코딩 블록의 크기를 나타낼 수도 있고 PU 의 크기는 PU 의 루마 예측 블록의 크기를 나타낼 수도 있다. 특정 CU 의 크기가 2Nx2N 이라고 가정하면, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 인트라 예측에 대해 2Nx2N 또는 NxN 의 PU 크기들, 그리고 인터 예측에 대해 2Nx2N, 2NxN, Nx2N, NxN 또는 유사한 것의 대칭적 PU 크기들을 지원할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 또한, 인터 예측을 위해 2NxnU, 2NxnD, nLx2N, 및 nRx2N 의 PU 크기에 대한 비대칭적 파티셔닝을 지원할 수도 있다.
인터 예측 프로세싱 유닛 (220) 은 PU에 대한 예측성 데이터를 생성할 수도 있다. PU에 대한 예측성 데이터를 생성하는 것의 일부로서, 인터 예측 프로세싱 유닛 (220) 은 PU 에 대해 인터 예측을 수행한다. PU 를 위한 예측성 데이터는 PU 의 예측성 블록들 및 PU 를 위한 모션 정보를 포함할 수도 있다. 인터 예측 프로세싱 유닛 (220) 은, PU 가 I 슬라이스인지, P 슬라이스인지 또는 B 슬라이스인지에 의존하여 CU 의 PU 에 대해 상이한 동작들을 수행할 수도 있다. I 슬라이스에 있어서, 모든 PU들은 인트라 예측된다. 따라서, PU 가 I 슬라이스에 있으면, 인터-예측 프로세싱 유닛 (220) 은 PU 에 대해 인터 예측을 수행하지 않는다. 따라서, I-모드로 인코딩된 블록들에 대해, 예측된 블록은 동일 프레임 내의 이전에 인코딩된 이웃 블록들로부터의 공간 예측을 이용하여 형성된다. PU 가 P 슬라이스에 있는 경우에, 인터-예측 프로세싱 유닛 (220) 은 PU 의 예측성 블록을 생성하기 위해 단방향 인터 예측을 이용할 수도 있다. PU 가 B 슬라이스에 있는 경우에, 인터-예측 프로세싱 유닛 (220) 은 PU 의 예측성 블록을 생성하기 위해 단방향 또는 양방향 인터 예측을 수행할 수도 있다.
인트라 예측 프로세싱 유닛 (226) 은 PU에 대한 인트라 예측을 수행함으로써 PU 를 위한 예측성 데이터를 생성할 수도 있다. PU 를 위한 예측성 데이터는 PU 의 예측성 블록들 및 다양한 신택스 엘리먼트들을 포함할 수도 있다. 인트라-예측 프로세싱 유닛 (226) 은 I 슬라이스들, P 슬라이스들, 및 B 슬라이스들에 있어서 PU들에 대해 인트라 예측을 수행할 수도 있다.
PU 에 대해 인트라 예측을 수행하기 위해, 인트라-예측 프로세싱 유닛 (226) 은 다중의 인트라 예측 모드들을 이용하여, PU 에 대한 예측성 데이터의 다중의 세트들을 생성할 수도 있다. 인트라 예측 프로세싱 유닛 (226) 은 이웃하는 PU들의 샘플 블록들로부터의 샘플들을 이용하여 PU에 대한 예측성 블록을 생성할 수도 있다. 이웃 PU들은, PU들, CU들, 및 CTU들에 대한 좌-우로, 상부-하부로의 인코딩 순서를 가정할 때, PU 의 상부, 상부 및 우측으로, 상부 및 좌측으로, 또는 좌측으로일 수도 있다. 인트라 예측 프로세싱 유닛 (226) 은, 다양한 수의 인트라 예측 모드들, 예를 들어, 33개 방향 인트라 예측 모드들을 사용할 수도 있다. 일부 예들에서, 인트라 예측 모드들의 수는 PU 와 연관된 영역의 크기에 의존할 수도 있다.
예측 프로세싱 유닛 (200) 은, PU 를 위한 인터 예측 프로세싱 유닛 (220) 에 의해 생성된 예측성 데이터 또는 PU 를 위한 인트라 예측 프로세싱 유닛 (226) 에 의해 생성된 예측성 데이터 중에서 CU 의 PU 를 위한 예측성 데이터를 선택할 수도 있다. 일부 예들에 있어서, 예측 프로세싱 유닛 (200) 은 예측성 데이터의 세트들의 레이트/왜곡 메트릭들에 기초하여 CU 의 PU들에 대한 예측성 데이터를 선택한다. 선택된 예측성 데이터의 예측성 블록들은 본 명세서에서 선택된 예측성 블록들로서 지칭될 수도 있다.
잔차 생성 유닛 (102) 은, CU 에 대한 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 및 CU 의 PU 들에 대해 선택된 예측성 블록들 (예를 들어, 예측 루마, Cb 및 Cr 블록들) 에 기초하여, CU 에 대한 잔차 블록들 (예를 들어, 루마, Cb 및 Cr 잔차 블록들) 을 생성할 수도 있다. 실례로, 잔차 생성 유닛 (102) 은, 잔차 블록들에 있는 각각의 샘플이 CU 의 코딩 블록에 있는 샘플과 CU 의 PU 의 대응하는 선택된 예측성 블록 사이의 차이와 동일한 값을 갖도록 CU 의 잔차 블록들을 생성한다.
변환 프로세싱 유닛 (204) 은 CU 의 잔차 블록들을 CU 의 TU들의 변환 블록들로 파티셔닝할 수도 있다. 실례로, 변환 프로세싱 유닛 (204) 은 쿼드 트리 파티셔닝을 수행하여, CU 의 잔차 블록들을 CU 의 TU들의 변환 블록들로 파티셔닝할 수도 있다. 따라서, TU 는 루마 변환 블록 및 2개의 크로마 변환 블록들과 연관될 수도 있다. CU 의 TU 들의 루마 및 크로마 변환 블록들의 사이즈들 및 위치는 CU 의 PU 들의 예측 블록들의 사이즈들 및 위치에 기초하거나 또는 기초하지 않을 수도 있다. "잔차 쿼드 트리 (residual quad-tree)" (RQT) 로 알려진 쿼드 트리 구조는 각각의 영역들과 연관된 노드들을 포함할 수도 있다. CU 의 TU 들은 RQT 의 리프 노드들에 대응할 수도 있다.
변환 프로세싱 유닛 (204) 은, TU 의 변환 블록들에 하나 이상의 변환들을 적용함으로써 CU 의 각각의 TU 에 대해 변환 계수 블록들을 생성할 수도 있다. 변환 프로세싱 유닛 (204) 은 TU 와 연관된 변환 블록에 다양한 변환들을 적용할 수도 있다. 예를 들어, 변환 프로세싱 유닛 (204) 은 이산 코사인 변환 (DCT), 지향성 변환, 또는 개념적으로 유사한 변환을 변환 블록에 적용할 수도 있다. 일부 예들에서, 변환 프로세싱 유닛 (204) 은 변환 블록에 변환들을 적용하지 않는다. 그러한 예들에서, 변환 블록은 변환 계수 블록으로 다루어질 수도 있다.
양자화 유닛 (206) 은 계수 블록에 있어서의 변환 계수들을 양자화할 수도 있다. 양자화 유닛 (206) 은 CU 와 연관된 양자화 파라미터 (QP) 값에 기초하여 CU 의 TU 와 연관된 계수 블록을 양자화할 수도 있다. 비디오 인코더 (20) 는 CU 와 연관된 QP 값을 조정함으로써 CU 와 연관된 계수 블록들에 적용된 양자화의 정도를 조정할 수도 있다. 양자화는 정보의 손실을 가져올 수도 있다. 따라서, 양자화된 변환 계수들은 원래의 것보다 낮은 정확도를 가질 수도 있다.
역 양자화 유닛 (208) 및 역 변환 프로세싱 유닛 (210) 은 각각 계수 블록에 역 양자화 및 역 변환들을 적용하여, 계수 블록으로부터 잔차 블록을 재구성할 수도 있다. 재구성 유닛 (212) 은 예측 프로세싱 유닛 (200) 에 의해 생성된 하나 이상의 예측 블록들로부터 대응하는 샘플들에 재구성된 잔차 블록을 가산함으로써, TU 와 연관된 재구성된 변환 블록을 생성할 수도 있다. 이러한 방식으로 CU 의 각각의 TU 에 대한 변환 블록들을 복원함으로써, 비디오 인코더 (20) 는 CU 의 코딩 블록들을 복원할 수도 있다.
필터 유닛 (214) 은 하나 이상의 디블록킹 (deblocking) 동작들을 수행하여, CU 와 연관된 코딩 블록들에서의 블록킹 아티팩트들을 감소시킬 수도 있다. 디코딩된 픽처 버퍼 (216) 는, 필터 유닛 (214) 이 복원된 코딩 블록들에 하나 이상의 디블록킹 동작들을 수행한 이후 복원된 코딩 블록들을 저장할 수도 있다. 인터 예측 프로세싱 유닛 (220) 은 다른 화상들의 PU 들에 대해 인터 예측을 수행하기 위하여 재구성된 코딩 블록들을 포함하는 참조 화상을 사용할 수도 있다. 또한, 인트라-예측 프로세싱 유닛 (226) 은 디코딩된 픽처 버퍼 (216) 에 있어서의 재구성된 코딩 블록들을 이용하여, CU 와 동일한 픽처에 있어서의 다른 PU들에 대해 인트라 예측을 수행할 수도 있다.
엔트로피 인코딩 유닛 (218) 은 비디오 인코더 (20) 의 다른 기능 컴포넌트들로부터 데이터를 수신할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (218) 은 양자화 유닛 (206) 으로부터 계수 블록들을 수신할 수도 있고 예측 프로세싱 유닛 (200) 으로부터 신택스 엘리먼트들을 수신할 수도 있다. 엔트로피 인코딩 유닛 (218) 은 인트로피 인코딩된 데이터를 생성하기 위하여 데이터에 대해 하나 이상의 엔트로피 인코딩 동작들을 수행할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (218) 은 데이터에 대해 CABAC 동작 또는 다른 타입의 엔트로피 인코딩 동작을 수행할 수도 있다. 비디오 인코더 (20) 는 엔트로피 인코딩 유닛 (218) 에 의해 생성된 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력할 수도 있다. 실례로, 그 비트스트림은 CU 에 대한 변환 계수들의 값들을 나타내는 데이터를 포함할 수도 있다.
도 3 은 본 개시의 기법들을 구현하도록 구성된 예시적인 비디오 디코더 (30) 를 나타내는 블록도이다. 도 3 은 설명의 목적들을 위해 제공되며, 본 개시에서 넓게 예시화되고 설명된 바와 같은 기법들에 대해 한정하는 것은 아니다. 설명의 목적을 위하여, 본 개시물은 HEVC 코딩의 맥락에서 비디오 디코더 (30) 를 설명한다. 하지만, 본 개시의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
프로세싱 회로는 비디오 디코더 (30) 를 포함하고, 비디오 디코더 (30) 는 본 개시에 설명된 예시적인 기법들 중 하나 이상을 수행하도록 구성된다.  실례로, 비디오 디코더 (30) 는 집적 회로를 포함하고, 도 3 에 도시된 다양한 유닛들은 회로 버스로 상호접속되는 하드웨어 회로 블록들로서 형성될 수도 있다. 이들 하드웨어 회로 블록들은 별개의 회로 블록들일 수도 있거나, 또는 그 유닛들 중 2 개이상이 공통 하드웨어 회로 블록으로 결합될 수도 있다.  하드웨어 회로 블록은 AND, OR, NAND, NOR, XOR, XNOR 와 같은 논리 블록 및 다른 유사한 논리 블록뿐만 아니라 산술 논리 유닛 (ALU), 기본 함수 유닛 (EFU) 과 같은 연산 블록을 형성하는 전기 컴포넌트들의 조합으로서 형성될 수도 있다.
일부 예들에서, 도 3 에서 예시된 유닛들 중 하나 이상은 프로세싱 회로 상에서 실행되는 소프트웨어 유닛일 수도 있다.  이러한 예에서, 이들 소프트웨어 유닛에 대한 오브젝트 코드는 메모리에 저장된다.  오퍼레이팅 시스템은 비디오 디코더 (30) 로 하여금 목적 코드를 취출하고 목적 코드를 실행하게 할 수도 있으며, 이는 비디오 디코더 (30) 로 하여금 예시적인 기술을 구현하기 위한 동작들을 수행하게 한다.  일부 예들에서, 소프트웨어 유닛은 비디오 디코더 (30) 가 시동시에 실행되는 펌웨어일 수도 있다.  따라서, 비디오 디코더 (30) 는 예시적인 기술을 수행하는 하드웨어를 갖는 구조적 컴포넌트이거나 또는 하드웨어를 특화하여 예시적인 기술을 수행하기 위해 하드웨어 상에서 실행되는 소프트웨어/펌웨어를 갖는다.
도 3 의 예에 있어서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (300), 비디오 데이터 메모리 (301), 예측 프로세싱 유닛 (302), 역양자화 유닛 (304), 역변환 프로세싱 유닛 (306), 재구성 유닛 (308), 필터 유닛 (310), 및 디코딩된 픽처 버퍼 (312) 를 포함한다. 예측 프로세싱 유닛 (302) 은, 모션 보상 유닛 (314) 및 인트라 예측 프로세싱 유닛 (316) 을 포함한다. 다른 예들에서, 비디오 디코더 (30) 는, 더 많거나, 더 적거나, 또는 상이한 기능 컴포넌트들을 포함할 수도 있다.
비디오 데이터 메모리 (301) 는 비디오 디코더 (30) 의 컴포넌트들에 의해 디코딩될 인코딩된 비디오 데이터, 이를테면 인코딩된 비디오 비트스트림을 저장할 수도 있다. 비디오 데이터 메모리 (301) 에 저장된 비디오 데이터는, 예를 들어, 컴퓨터 판독가능 매체 (16) 로부터, 예를 들어, 카메라와 같은 로컬 비디오 소스로부터, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통해, 또는 물리적 데이터 저장 매체에 액세스하는 것에 의해, 획득될 수도 있다. 비디오 데이터 메모리 (301) 는 인코딩된 비디오 비트스트림으로부터 인코딩된 비디오 데이터를 저장하는 코딩된 픽처 버퍼 (CPB) 를 형성할 수도 있다. 디코딩된 픽처 버퍼 (312) 는, 예를 들어, 인트라- 또는 인터-코딩 모드들에서 또는 출력에 대하여 비디오 디코더 (30) 에 의해 비디오 데이터를 디코딩함에 있어서 사용하기 위한 레퍼런스 비디오 데이터를 저장하는 레퍼런스 픽처 메모리일 수도 있다. 비디오 데이터 메모리 (301) 및 디코딩된 픽처 버퍼 (312) 는 동기식 DRAM (SDRAM) 을 포함한 동적 랜덤 액세스 메모리 (DRAM), 자기저항성 RAM (MRAM), 저항성 RAM (RRAM), 또는 다른 타입들의 메모리 디바이스들과 같은 다양한 메모리 디바이스들 중 임의의 메모리 디바이스에 의해 형성될 수도 있다. 비디오 데이터 메모리 (301) 및 디코딩된 픽처 버퍼 (312) 는 동일한 메모리 디바이스 또는 별도의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에 있어서, 비디오 데이터 메모리 (301) 는 비디오 디코더 (30) 의 다른 컴포넌트들과 온-칩형이거나 또는 그 컴포넌트들에 대하여 오프-칩형일 수도 있다. 비디오 데이터 메모리 (301) 는 도 1 의 저장 매체 (28) 와 동일하거나 또는 그것의 일부일 수도 있다.
비디오 데이터 메모리 (301) 는 비트스트림의 인코딩된 비디오 데이터 (예를 들어, NAL 유닛들) 를 수신하여 저장한다. 엔트로피 디코딩 유닛 (300) 은 비디오 데이터 메모리 (301) 로부터 인코딩된 비디오 데이터 (예를 들어, NAL 유닛들) 를 수신할 수도 있고 신택스 엘리먼트들을 얻기 위해 NAL 유닛들을 파싱할 수도 있다. 엔트로피 디코딩 유닛 (300) 은 NAL 유닛들에서 엔트로피 인코딩된 신택스 엘리먼트들을 엔트로피 디코딩할 수도 있다. 예측 프로세싱 유닛 (302), 역 양자화 유닛 (304), 역 변환 프로세싱 유닛 (306), 재구성 유닛 (308), 및 필터 유닛 (310) 은 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여 디코딩된 비디오 데이터를 생성할 수도 있다. 엔트로피 디코딩 유닛 (300) 은 엔트로피 인코딩 유닛들과 일반적으로 상반되는 프로세스를 수행할 수도 있다.
비트스트림으로부터 신택스 엘리먼트들을 획득하는 것에 추가하여, 비디오 디코더 (30) 는 파티셔닝되지 않은 CU 에 대해 재구성 동작을 수행할 수도 있다. CU 에 대해 재구성 동작을 수행하기 위하여, 비디오 디코더 (30) 는 CU 의 각각의 TU 에 대해 재구성 동작을 수행할 수도 있다. CU 의 각각의 TU 에 대해 재구성 동작을 수행함으로써, 비디오 디코더 (30) 는 CU 의 잔차 블록들을 재구성할 수도 있다.
CU 의 TU 에 대해 재구성 동작을 수행하는 것의 일부로서, 역 양자화 유닛 (304) 은 TU 와 연관된 계수 블록들을, 역 양자화, 즉, 양자화해제할 수도 있다. 역양자화 유닛 (304) 이 계수 블록을 역양자화한 이후, 역변환 프로세싱 유닛 (306) 은 TU 와 연관된 잔차 블록을 생성하기 위하여 계수 블록에 하나 이상의 역변환들을 적용할 수도 있다. 예를 들어, 역변환 프로세싱 유닛 (306) 은 역 DCT, 역 정수 변환, 역 KLT (Karhunen-Loeve transform), 역 회전 변환, 역 지향성 변환, 또는 다른 역변환을 계수 블록에 적용할 수도 있다.
역양자화 유닛 (304) 은 본 개시의 특정 기법들을 수행할 수도 있다. 예를 들어, 비디오 데이터의 픽처의 CTU 의 CTB 내의 복수의 양자화 그룹들의 적어도 하나의 각각의 양자화 그룹에 대해, 역양자화 유닛 (304) 은, 비트스트림에서 시그널링된 로컬 양자화 정보에 적어도 부분적으로 기초하여, 각각의 양자화 그룹에 대한 각각의 양자화 파라미터를 도출할 수도 있다. 추가적으로, 이 예에서, 역양자화 유닛 (304) 은, 각각의 양자화 그룹에 대한 각각의 양자화 파라미터들에 기초하여, CTU 의 CU 의 TU 의 변환 블록의 적어도 하나의 변환 계수를 역 양자화할 수도 있다. 이 예에서, 각각의 양자화 그룹은, 그 각각의 양자화 그룹의 경계들이 Cu들 또는 코딩 블록들의 경계들이어야만 하고 각각의 양자화 그룹의 사이즈가 임계치 이상이도록, 코딩 순서로 연속적인 Cu들 또는 코딩 블록들의 그룹으로서 정의된다. 비디오 디코더 (30) (예컨대, 역변환 프로세싱 유닛 (306), 재구성 유닛 (308), 및 필터 유닛 (310)) 는, 변환 블록의 역 양자화된 변환 계수들에 기초하여, CU 의 코딩 블록을 재구성할 수도 있다.
PU 가 인트라 예측을 이용하여 인코딩되는 경우, 인트라 예측 프로세싱 유닛 (316) 은 PU 의 예측 블록들을 생성하기 위하여 인트라 예측을 수행할 수도 있다. 인트라 예측 프로세싱 유닛 (316) 은, 공간적으로 이웃하는 블록들 샘플들에 기초하여 PU 의 예측 블록들을 생성하기 위하여 인트라 예측 모드를 사용할 수도 있다. 인트라 예측 프로세싱 유닛 (316) 은 비트스트림으로부터 획득된 하나 이상의 신택스 엘리먼트들에 기초하여 PU 를 위한 인트라 예측 모드를 결정할 수도 있다.
PU 가 인터 예측을 이용하여 인코딩되는 경우, 엔트로피 디코딩 유닛 (300) 은 PU 를 위한 모션 정보를 결정할 수도 있다. 모션 보상 유닛 (314) 은 PU 의 모션 정보에 기초하여, 하나 이상의 레퍼런스 블록들을 결정할 수도 있다. 모션 보상 유닛 (314) 은, 하나 이상의 레퍼런스 블록들에 기초하여, PU 를 위한 예측 블록들 (예를 들어, 예측 루마, Cb 및 Cr 블록들) 을 생성할 수도 있다.
재구성 유닛 (308) 은, CU 에 대한 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 을 재구성하기 위하여, 적용가능한 바에 따라, CU 의 TU 들에 대한 변환 블록들 (예를 들어, 루마, Cb 및 Cr 변환 블록들) 및 CU 의 PU 들의 예측 블록들 (예를 들어, 루마, Cb 및 Cr 블록들), 즉, 인트라 예측 데이터 또는 인터 예측 데이터 중의 어느 일방을 이용할 수도 있다. 예를 들어, 재구성 유닛 (308) 은 CU 의 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 을 재구성하기 위하여 변환 블록들 (예를 들어, 루마, Cb 및 Cr 변환 블록들) 의 샘플들을 예측성 블록들 (예를 들어, 루마, Cb 및 Cr 예측성 블록들) 의 대응하는 샘플들에 추가할 수도 있다.
필터 유닛 (310) 은 CU 의 코딩 블록들과 연관된 블록킹 아티팩트들을 감소시키기 위하여 디블로킹 동작을 수행할 수도 있다. 비디오 디코더 (30) 는 CU 의 코딩 블록을 디코딩된 픽처 버퍼 (312) 에 저장할 수도 있다. 디코딩된 픽처 버퍼 (312) 는 후속 모션 보상, 인트라 예측, 및 도 1 의 디스플레이 디바이스 (32) 와 같은 디스플레이 디바이스 상으로의 프리젠테이션을 위해 레퍼런스 픽처들을 제공할 수도 있다. 실례로, 비디오 디코더 (30) 는, 디코딩된 픽처 버퍼 (312) 에서의 블록들에 기초하여, 다른 CU들의 PU들에 대해 인트라 예측 또는 인터 예측 동작들을 수행할 수도 있다.
산술 코딩은 데이터 압축에서 사용되는 기본적인 툴이다. 예컨대, 「I. H. Witten, R. M. Neal, 및 J. G. Cleary, “Arithmetic coding for data compression,” Commun. ACM, vol. 30, no. 6, pp. 520-540, June 1987 (이하, “참조문헌 1”); A. Said, “Arithmetic Coding,” in “Lossless Compression Handbook,” K. Sayood, Ed., Academic Press, chapter 5, pp. 101-152, 2003 (이하, “참조문헌 2”); 및 A. Said, “Introduction to arithmetic coding - theory and practice,” Hewlett Packard Laboratories, Palo Alto, CA, USA, Technical Report HPL-2004-76, Apr. 2004, (http://www.hpl.hp.com/techreports/2004/HPL-2004-76.pdf) (이하, “참조문헌 3”)」 참조.
산술 코딩은 AVC/H.264 비디오 압축 표준에서 선택적이었다. 「I. D. Marpe, H. Schwarz, 및 T. Wiegand, “Context-based adaptive binary arithmetic coding in the H.264/AVC video compression standard,” IEEE Trans. Circuits Syst. Video Technol., vol. 13, no. 7, pp. 620-636, Jul. 2003 (이하, “참조문헌 4”); I. E. Richardson, The H.264 Advanced Video Compression Standard, 2nd ed., John Wiley and Sons Ltd., 2010 (이하, “참조문헌 5”)」 참조.
산술 코딩은 비디오 코딩 표준들 HEVC/H.265 및 VP9 의 유일한 엔트로피 코딩 기법이 되었다. 「V. Sze 및 M. Budagavi, “High throughput CABAC entropy coding in HEVC,” IEEE Trans. Circuits Syst. Video Technol., vol. 22, no. 12, pp. 1778-1791, Dec. 2012 (이하, "참조문헌 6”); V. Sze and D. Marpe, “Entropy coding in HEVC,” in High Efficiency Video Coding (HEVC): Algorithms and Architectures, V. Sze, M. Budagavi, and G. J. Sullivan, Eds., chapter 8, pp. 209-274. Springer, 2014 (이하, "참조문헌 7”); M. Wien, High Efficiency Video Coding: Coding Tools and Specification, Springer-Verlag, 2015 (이하, "참조문헌 8”); D. Mukherjee, J. Bankoski, R. S. Bultje, A. Grange, J. Han, J. Koleszar, P. Wilkins, and Y. Xu, “The latest open-source video codec VP9 - an overview and preliminary results,” in Proc. 30th Picture Coding Symp., San Jose, CA, Dec. 2013 (이하, "참조문헌 9”)」 참조.
산술 코딩의 우수한 압축 효울로 인해, 산술 코딩은 미래의 비디오 코딩 표준들에서 사용되는 유일한 엔트로피 코딩 기법으로 남을 것으로 예상된다. 하지만, 실제 애플리케이션들에서 엔트로피 코딩을 이용함에 있어서의 주요한 문제점들 중 하나는, 정적 데이터 소스들에 대해 최적이도록 가장 효과적인 방법들이 설계되지만 (비디오와 같은) 복잡한 신호들로부터의 실제 데이터는 정적인 것과는 거리가 멀다. 이러한 문제점을 해결하기 위해 현재의 솔루션들은 데이터 분류 및 적응적 코딩 방법들을 이용하고, 본 개시의 기법들은 적응 기법들의 효율성을 증가시킬 수도 있다.
본 개시의 기법들은, 데이터가 많은 부류들 (코딩 컨텍스트들) 에서 유한하게 나누어지는 경우에도, 각 부류 (class) 에 대해 할당된 데이터의 통계에서 여전히 많은 다양성들이 존재한다는 사실을 이용함으로써 압축 효율을 향상시킬 수도 있다. 따라서, 모든 부류들에 대해 단일의 "보편적 (universal)" 적응 기법을 이용하는 대신에, 본 개시는 각 부류에 따라 적응 파라미터들 (adaptation parameters) 을 변경하고, 각 부류 내에서, 예상되는 또는 관찰되는 확률 값들, 또는 추정들에서의 측정되는 변동들에 따라 적응 파라미터들을 추가로 변경하는 것을 제안한다.
또한, 본 개시는 이진 산술 코딩에 대한 적응인 이진 확률 추정을 향상시키기 위한 예시적인 기법들을 기술한다. 그 예시적인 기법들은, 재귀 방정식들을 이용하여 확률을 추정하기 위한 방법들을 향상시키기 위해 이산-시간 신호 분석을 이용하여 보다 양호한 압축을 가능하게 할 수도 있고, 낮은 정확도의 구현들을 이용할 때 낮은 복잡성 및 안정성을 가능하게 하는 특별한 피처들이다.
참조문헌들 1, 2, 및 3 에서 기술된 바와 같이, 현대의 비디오 코딩 표준들은 엔트로피 코딩을 모델링과 실제 코딩으로 분해하는 전략을 채택한다. 따라서, 현대의 비디오 압축 표준들에서 사용되는 이진 산술 코딩 프로세스는 3 개의 주요 스테이지들로 분할된다. 비디오 인코더 (20) 는 이들 스테이지들의 동작들을 수행할 수도 있고, 비디오 디코더 (30) 는 이들 스테이지들의 역 동작들을 수행할 수도 있다.
(a) 이진화 (binarization): 코딩될 각각의 데이터 엘리먼트 (또는 신택스 엘리먼트) 는 이진 데이터 심볼들 (빈들) 의 시퀀스로 먼저 분해된다. 이진 심볼 확률들은 그것의 분해에서 데이터 엘리먼트 및 이진 심볼 포지션에 의존하기 때문에, 빈 컨텍스트 (또는 단순히 컨텍스트) 는 각 타입의 이진 심볼에 대해 할당되어, 그것의 엔트로피 코딩을 위해 사용될 확률 추정치를 고유하게 식별한다.
(b) 적응적 확률 추정 (adaptive probability estimation): 주어진 컨텍스트에 할당된 모든 빈들은 유사한, 하지만 정확하게 동일하지는 않은 확률들을 가진다고 가정되기 때문에, 인코더 및 디코더는 이전에 인코딩도니 또는 디코딩된 빈 값들에 기초하여 그것들의 확률 추정치들을 업데이트한다.
(c) 산술 코딩 (arithmetic coding): 각각의 이진 심볼 (0 또는 1) 의 값은 빈의 대응하는 컨텍스트에 의해 정의되는 그것의 값의 추정된 확률을 이용하여 엔트로피 코딩된다.
본 개시의 기법들은 적응적 확률 추정을 향상시킴으로써 보다 양호한 압축을 획득할 수도 있다.
이진 확률 추정에서 실제로 사용되는 예시적인 기법들은 다음의 참조문헌들에서 제시된다:
Figure 112019106794089-pct00001
F. T. Leighton 및 R. L. Rivest, “Estimating a probability using finite memory,” IEEE Trans. Inf. Theory, vol. 32, no. 6, pp. 733-742, Nov. 1986 (이하, "참조문헌 10”).
W. B. Pennebaker and J. L. Mitchell, “Probability estimation for the Q-Coder,” IBM J. Res. Theory, vol. 32, no. 6, pp. 737-752, Nov. 1988 (이하, "참조문헌 11”).
P. G. Howard 및 J. S. Vitter, “Practical implementations of arithmetic coding,” in Image and Text Compression, J. A. Storer, Ed., chapter 4, pp. 85-112. Kluwer Academic Publishers, Norwell, MA, 1992 (이하, "참조문헌 12”).
E. Meron 및 M. Feder, “Finite-memory universal prediction of individual sequences,” IEEE Trans. Inf. Theory, vol. 50, no. 7, pp. 1506-1523, Nov. 2004 (이하, "참조문헌 13”).
E. Belyaev, M. Gilmutdinov, 및 A. Turlikov, “Binary arithmetic coding system with adaptive probability estimation by `virtual sliding window'," in Proc. IEEE Int. Symp. Consumer Electronics, St. Petersburg, Russia, June 2006 (이하, "참조문헌 14”).
A. Alshin, E. Alshina, 및 J.-H. Park, “High precision probability estimation for CABAC,” in Proc . IEEE Visual Commun . Image Process. Conf ., Kuching, Malaysia, Nov. 2013 (이하, "참조문헌 15”).
A. V. Oppenheim 및 R. W. Schafer, Discrete-Time Signal Processing, Prentice-Hall, Inc., Upper Saddle River, NJ, 3rd ed., Aug. 2009 (이하, "참조문헌 16”).
S. K. Mitra, Digital Signal Processing: A Computer-based Approach, McGraw-Hill Publishing Co., New York, NY, 4th ed., 2010 (이하, "참조문헌 17”).
매우 낮은 계산적 복잡도의 실제적 요건들을 달성하기 위해, 확률 추정은 통상적으로 몇몇 타입의 유한-상태-머신 (FSM) 을 이용하여 행해진다. 본 개시의 기법들의 설명의 용이성을 위해, 본 개시는 참조문헌들 10-14 의 FSM들의 구현에 관한 상세들을 커버하지 않지만, 적절한 전문용어를 정의하는 것이 유용하고, 일부 예들이 이 섹션의 끝에서 제시된다.
도 4 는 예시적인 일반적 FSM (400) 의 블록도이다. 보다 구체적으로, 도 4 는 일반적인 유한 상태 머신의 상태 천이들, 입력들, 및 출력들의 시퀀스의 그래픽적 표현이다. 도 4 에서, 시퀀스들 은, 정수 엘리먼트들을 갖는 벡터들 (벡터 차원들 및 허용되는 엘리먼트 값들의 그것들의 세트들은 잘 정의되어야 하지만, 본 논의를 위해 중요하지 않다) 인 FSM (400) 의 상태들, 입력들, 및 출력들을 각각 나타낸다.
상기 정의들에 이어서, 도 4 의 다이어그램에서의 화살표들은 상태 업데이팅 방정식 및 출력 방정식을 나타내고, 그것들은
(1)
이고, 여기서, T 는 상태 업데이팅 함수이고, P 는 출력 함수이다.
확률 추정 FSM들에서, 입력들은 빈 값들이고, 출력들은 빈 확률 추정치들이다. 엔트로피 인코딩 및 디코딩 동안의 FSM들의 사용은 도 5, 도 6, 도 7, 및 도 8 에서 도시되고, 여기서, 협약에 의해, 이진 확률 추정 FSM 은 코딩 컨텍스트라 불린다.
도 5 및 도 6 의 예에서 나타낸 바와 같이, 실제적인 비디오 코딩에서, 엔트로피 코딩 스테이지는 많은 수의 코딩 컨텍스트들을 이용하여 구현될 수도 있다. 코딩 컨텍스트들은 인코딩되는 또는 디코딩되는 빈의 타입 (또는 부류) 에 의존하여 인코딩 및 디코딩 동안 선택된다.
도 7 은 단일의 선택된 컨텍스트를 고려하여 컨텍스트-기반 이진 산술 인코딩하기 위한 예시적인 블록도이다. 도 7 에서, 산술 인코딩 유닛 (700) 은 산술 인코더 (702), 비트 버퍼 (704), 상태 결정 유닛 (706), 및 확률 추정 FSM 유닛 (708) 을 포함한다. 산술 인코딩 유닛 (700)은, 일부 예들에서, 이진화 유닛 (712) 으로부터 빈 스트림을 수신할 수도 있다. 산술 인코딩 유닛 (700) 및 은 도 2 의 엔트로피 인코딩 유닛 (218) 의 일부를 형성할 수도 있다. 이진화 유닛 (712) 은 각각의 데이터 엘리먼트 (예컨대, 신택스 엘리먼트) 를 이진 데이터 심볼들 (빈들) 의 시퀀스로 인코딩한다. 이진 데이터 심볼들의 시퀀스는 "빈 스트림 (bin stream)" 으로서 지칭될 수도 있다. 추가적으로, 산술 인코딩 유닛 (700) 은 컨텍스트 재초기화 (reinitialization) 신호를 수신할 수도 있다. 실례로, 산술 인코딩 유닛 (700) 은, 산술 인코딩 유닛 (700) 이 상이한 타입의 이진 심볼을 인코딩하기 시작할 때, 컨텍스트 재초기화 신호를 수신할 수도 있다.
또한, 도 7 에서, 컨텍스트 재초기화 신호를 수신하는 것에 응답하여, 상태 결정 유닛 (706) 은 확률 추정 FSM 의 상태를 재초기화할 수도 있다. 일반적으로, 재초기화는 확률 추정치들을 코딩 컨텍스트와 연관된 초기 확률 추정치들로 재설정하는 것을 지칭한다. 예를 들어, 인코딩될 이진 심볼의 타입에 기초하여, 상태 결정 유닛 (706) 은 미리정의된 테이블에서 초기 확률 추정치들을 찾을 수도 있다. 미리정의된 테이블은 HEVC 와 같은 비디오 코딩 표준에 의해 정의될 수도 있다. 상태 결정 유닛 (706) 은 결정된 초기 확률 추정치들을 빈 확률 추정 FSM 유닛 (708) 에 제공할 수도 있다. 빈 스트림의 제 1 빈에 대해, 빈 확률 추정 FSM 유닛 (708) 은 초기 확률 추정치들을 산술 인코더 (702) 에 제공한다. 추가적으로, 빈 확률 추정 FSM 유닛 (708) 은 빈 스트림의 제 1 빈의 실제 값에 기초하여 확률 추정치들을 업데이트한다. 상태 결정 유닛 (706) 이 확률 추정치들을 재설정할 때까지의 각각의 후속하는 빈에 대해, 빈 확률 추정 FSM 유닛 (708) 은 예컨대 식 (1) 에서 나타낸 바와 같이 상태 업데이팅 함수에 따라 확률 추정치들을 업데이트한다.
빈 스트림의 각각의 빈에 대해, 산술 인코더 (702) 는, CABAC 에 대해 이 개시물의 다른 곳에서 설명된 바와 같이 빈을 인코딩하기 위해 빈 확률 추정 FSM 유닛 (708) 에 의해 제공된 확률 추정치들을 사용할 수도 있다. 비트 버퍼 (704) 는 산술 인코더 (702) 에 의해 인코딩된 빈들을 저장할 수도 있다. 도 7 에서, 지연 박스 (710) 는, 빈 확률 추정 FSM 유닛 (708) 에 의해 생성된 빈 확률들이 산술 인코더 (702) 에 의해 현재 인코딩되고 있는 빈 이전의 빈에 기초함을 의미한다.
도 8 은 단일의 선택된 컨텍스트를 고려하여 컨텍스트-기반 이진 산술 디코딩하기 위한 예시적인 블록도이다. 도 8 에서, 산술 디코딩 유닛 (800) 은 산술 디코더 (802), 비트 버퍼 (804), 상태 결정 유닛 (806), 및 확률 추정 FSM 유닛 (808) 을 포함한다. 산술 디코딩 유닛 (800) 은, 일부 예들에서, 역 이진화 유닛 (812) 에 의해 수신될 수도 있는 빈 스트림을 생성한다. 산술 디코딩 유닛 (800) 및 역 이진화 유닛 (812) 은 도 3 의 엔트로피 디코딩 (300) 의 일부를 형성할 수도 있다. 역 이진화 유닛 (812) 은 빈 스트림을 일련의 하나 이상의 신택스 엘리먼트들로 변환한다.
도 8 에서, 산술 디코딩 유닛 (800) 은 비디오 디코더 (30) 에 의해 수신된 비트스트림으로부터 파싱될 수도 있는 바이트 스트림 (byte stream) 을 수신한다. 추가적으로, 산술 디코딩 유닛 (800) 은 컨텍스트 재초기화 신호를 수신할 수도 있다. 실례로, 산술 디코딩 유닛 (800) 은, 산술 디코딩 유닛 (800) 이 상이한 타입의 이진 심볼을 인코딩하기 시작할 때, 컨텍스트 재초기화 신호를 수신할 수도 있다. 또한, 도 8 에서, 컨텍스트 재초기화 신호를 수신하는 것에 응답하여, 상태 결정 유닛 (806) 은 확률 추정 FSM 의 상태를 재초기화할 수도 있다. 예를 들어, 인코딩될 이진 심볼의 타입에 기초하여, 상태 결정 유닛 (806) 은 미리정의된 테이블에서 초기 확률 추정치들을 찾을 수도 있다. 미리정의된 테이블은 HEVC 와 같은 비디오 코딩 표준에 의해 정의될 수도 있다. 미리정의된 테이블은 상태 결정 유닛 (706) (도 7) 에 의해 사용되는 테이블과 동일할 수도 있다. 상태 결정 유닛 (806) 은 결정된 초기 확률 추정치들을 빈 확률 추정 FSM 유닛 (808) 에 제공할 수도 있다. 빈 스트림의 제 1 빈에 대해, 빈 확률 추정 FSM 유닛 (808) 은 초기 확률 추정치들을 산술 디코더 (802) 에 제공한다. 추가적으로, 빈 확률 추정 FSM 유닛 (808) 은 빈 스트림의 제 1 빈의 실제 값에 기초하여 확률 추정치들을 업데이트한다. 상태 결정 유닛 (806) 이 확률 추정치들을 재설정할 때까지의 각각의 후속하는 빈에 대해, 빈 확률 추정 FSM 유닛 (808) 은 예컨대 식 (1) 에서 나타낸 바와 같이 상태 업데이팅 함수에 따라 확률 추정치들을 업데이트한다.
빈 스트림의 각각의 빈에 대해, 산술 디코더 (802) 는, CABAC 에 대해 이 개시물의 다른 곳에서 설명된 바와 같이 빈을 디코딩하기 위해 빈 확률 추정 FSM 유닛 (808) 에 의해 제공된 확률 추정치들을 사용할 수도 있다. 비트 버퍼 (804) 는 산술 디코더 (802) 에 의해 디코딩되될 빈들을 저장할 수도 있다. 도 8 에서, 지연 박스 (810) 는, 빈 확률 추정 FSM 유닛 (808) 에 의해 생성된 빈 확률들이 산술 디코더 (802) 에 의해 현재 디코딩되고 있는 빈 이전의 빈에 기초함을 의미한다.
도 7 및 도 8 은 단일의 컨텍스트가 선택되는 예시적인 경우를 고려한 단수화된 다이어그램들이다. 도 7 및 도 8 은 또한, 실제 애플리케이션에서 항상 존재하는 하나의 특징을 나타내고, 이는 인코더 상태들로 변환되는 데이터를 갖는 공유된 테이블을 이용하여 인코더 및 디코더 상태들을 주기적으로 재동기화할 필요성이다. 예를 들어, HEVC 표준에서, 컨텍스트들은, 각각의 컨텍스트에 대해, (양자화 스텝, 또는 양자화 파라미터 (QP) 값으로서 알려진) 압축-품질 파라미터 (참조문헌들 7 및 8 참조) 를 어떻게 FSM 상태들로 변환하는지를 정의하는 테이블로 주기적으로 재초기화된다.
HEVC 표준에서, FSM 기능들은 오직 테이블 룩-업 (look-up) 방법들을 이용하여 구현된다. 참조문헌들 7 및 8 을 참조하라. ITU-T/MPEG JVET 에 의해 생성된 JEM (Joint Exploration Model) 의 최근의 드래프트에서, FSM 은 2 개의 형태들의 이산 시간 무한 임펄스 응답 (infinite impulse response; IIR) 필터들을 이용하여 구현되었다. 첫번째는:
형태의 것이고 (참조문헌들 13 및 14 참조), 여기서, 는 스케일링된 확률 추정치들 (FSM 상태들 및 출력들) 의 정수 시퀀스이고,b 는 빈 값들 (FSM 입력들) 의 이진 시퀀스이며, a 는 비트 시프트에 의해 구현될 곱 및 나누기를 가능하게 하는 양의 정수이다.
두번째 형태는 「A. Alshin, E. Alshina, 및 J.-H. Park, “High precision probability estimation for CABAC,” in Proc. IEEE Visual Commun. Image Process. Conf., Kuching, Malaysia, Nov. 2013」 (이하, "참조문헌 15”) 에 의해 제안된 방법을 이용하고, 다음과 같은 식들에 의해 정의된다:
(2)
이 경우에, 확률 추정 FSM 입력들 및 출력들은 여전히 각각 시퀀스들 이지만, 상태는 쌍들 에 의해 정의된다. 여기서의 추정은, 양자 모두가 업데이트되고 저장되는 확률 추정치들이기 때문에, "2-트랙 추정" 으로 또한 명명될 수 있다.
엔트로피 코딩이 정적 데이터 소스들에 대해 최적이도록 설계되기 때문에, 그것의 실제적인 유효성은 데이터 엘리먼트들을 분류하는 것에 의존했고, 따라서, 각 부류에서의 통계는 대략적으로 정적이고, 거의 "보편적 (universal)" 인 즉 모든 데이터 엘리먼트들에 대해 동일하게 잘 적응되는 확률 추정 FSM들을 이용하는 것이 가능하다. 도 7 및 도 8 에서 도시된 바와 같이, 그 가정에 기초하여, 확률 추정 FSM들은 변경되지 않고, 오직 그것들의 상태들만이 주기적으로 재초기화된다.
본 개시는, 각각의 컨텍스트에 대한 확률 변경 뿐만 아니라 변경들의 속도 및 크기도 컨텍스트들 사이에 상이하기 때문에, CABAC 에서 사용하기 위한 "보편적으로 최적" 인 확률 추정 FSM들은 실제로 존재하지 않는다는 사실을 해결한다. 본 개시는 변동은 컨텍스트 또는 추정된 확률에 따라 발생하지만, 최선의 전략은 최적의 FSM 을 결정하기 위해 양자 모두를 이용하는 것이라는 사실을 이용하는, 이 문제에 대한 솔루션을 기술한다. 본 개시의 기법들은 또한, FSM 상태들의 변화를 평가함으로써, 예컨대, 하나보다 많은 추정치 사이의 차이를 측정함으로써, FSM 파라미터들을 고르는 옵션을 커버한다.
본 개시의 하나 이상의 기법들에 다르면, 확률 추정 FSM들의 종래의 정의는 변경되고, 본 개시의 기법들은 또한 FSM 파라미터 벡터 h 를 정의하고, 이 벡터는 FSM 응답들을 변화시키기 위해 사용될 수 있다. 이 정의로, 식 (1) 은 다음과 같이 쓰여질 수 있다:
(3)
여기서, T 는 파라미터화된 상태 업데이팅 함수이고, P 는 파라미터화된 출력 함수이다. 달리 말하면, 상태 업데이팅 및 출력 식들은 식 (3) 에서 나타낸 바와 같이 재정의될 수도 있다. 이러한 확률 추정 FSM 들은 본 명세서에서 "파라미터화된 컨텍스트 FSM 들 (parameterized-context FSMs)" 로서 지칭될 수도 있다.
이러한 정의로, 파라미터화된 컨텍스트 FSM 의 코딩 성능을 정의하는 2 개의 팩터들이 식별될 수 있다.:
Figure 112019106794089-pct00020
FSM states (): 이진 심볼들의 확률들을 계산하기 위해 직접 사용되는 수치적 또는 논리적 정보를 포함하고, 오직 이전의 표준드에서 재초기화에 의해 변경된 데이터이다;
FSM parameters (): 상태 업데이팅, 및 확률 추정치들이 어떻게 그 상태들로부터 계산되는지를 정의하고; 본 발명은 코딩 동안 또는 재초기화 동안 이들 파라미터들을 수정함으로써 압축을 향상시킨다.
예를 들어, 식 (2) 에서의 확률 추정은 식들:
(4)
에서의 파라미터들로서 양의 정수들 (a, b) 을 사용하도록 변경될 수 있다. 파라미터들 a 및 b 는 다음 빈 (즉, p[k + 1]) 에 대한 추정된 확률을 결정하기 위해 사용되기 때문에, 식 (4) 에서의 파라미터들 a 및 b 는 다음 빈에 대한 것으로서 고려될 수도 있다. 식 (4) 에서, 파라미터들 (a, b) 은 상태 천이들을 변겨할 수도 있지만, 출력 방정식은 아니다. FSM 파라미터들을 FSM 상태의 일부로서 정의하는 것이 수학적으로 가능함에도 불구하고 이것이 실제적 차이를 나타내기 때문에 이러한 구분이 사용된다.
도 9 및 도 10 은 본 개시의 기법들이 산술 코딩 프로세스에서 어떻게 통합되는지를 나타낸다. 도 9 의 예에서, 산술 인코딩 유닛 (900) 은 산술 인코더 (902), 비트 버퍼 (904), 상태 결정 유닛 (908), 확률 추정 FSM 유닛 (912), 및 FSM 파라미터 결정 유닛 (912) 을 포함한다. 산술 인코딩 유닛 (900) 은, 일부 예들에서, 이진화 유닛 (913) 으로부터 빈 스트림을 수신할 수도 있다. 산술 인코딩 유닛 (900) 및 이진화 유닛 (913) 은 도 2 의 엔트로피 인코딩 유닛 (218) 의 일부를 형성할 수도 있다. 이진화 유닛 (913), 산술 인코더 (902), 비트 버퍼 (904), 상태 결정 유닛 (908), 및 지연 박스 (910) 는 도 7 에서의 이진화 유닛 (713), 산술 인코더 (702), 비트 버퍼 (704), 상태 결정 유닛 (706), 및 지연 박스 (710) 와 유사한 방식으로 동작할 수도 있다.
도 10 의 예에서, 산술 디코딩 유닛 (1000) 은 산술 디코더 (1002), 비트 버퍼 (1004), 상태 결정 유닛 (1006), 확률 추정 FSM 유닛 (1008), 및 FSM 파라미터 결정 유닛 (1012) 을 포함한다. 산술 디코딩 유닛 (1000) 은, 일부 예들에서, 역 이진화 유닛 (1013) 에 의해 수신될 수도 있는 빈 스트림을 생성한다. 산술 디코딩 유닛 (1000) 및 역 이진화 유닛 (1013) 은 도 3 의 엔트로피 디코딩 (300) 의 일부를 형성할 수도 있다. 역 이진화 유닛 (1013) 은 빈 스트림을 일련의 하나 이상의 신택스 엘리먼트들로 변환한다. 이진화 유닛 (1013), 산술 디코더 (1002), 비트 버퍼 (1004), 상태 결정 유닛 (1006), 및 지연 박스 (1010) 는 도 8 에서의 역 이진화 유닛 (812), 산술 디코더 (802), 비트 버퍼 (804), 상태 결정 유닛 (806), 및 지연 박스 (810) 와 유사한 방식으로 동작할 수도 있다.
도 7 및 도 8 로부터의 (도 9 및 도 10 에서 점선들로 도시된) 주요 차이는 도 9 및 도 10 에 포함된 FSM 파라미터 결정 유닛들 (912, 1012) 이다. FSM 파라미터 결정 유닛들 (912, 1012) 은 FSM 파라미터들 (예컨대, 식 (4) 에서의 a 및 b) 을 결정한다. FSM 파라미터 결정 유닛들 (912, 1012) 은 컨텍스트 재초기화 이벤트들에 응답하여, 또는 다른 상황들에서, 코딩 동안 FSM 파라미터들을 결정할 수도 있다. 따라서, 도 9 및 도 10 에서, 파라미터화된 컨텍스트 FSM들은, 확률 값들, 품질 팩터들, 및 다른 데이터를 이용하여, FSM 파라미터 결정 유닛들 (912, 1012) 에 의해, 코딩 또는 재초기화 동안 수정될 수도 있다. FSM 파라미터 결정 유닛들 (912, 1012) 에 공급되는 데이터는 재초기화 파라미터들, 및 또한 현재 상태들 (예컨대, 빈 확률들) 을 포함하거나 그것들로 이루어질 수 있다.
따라서, 본 개시의 하나 이상의 기법들에 따르면, 비디오 인코더 (20) 는 비디오 데이터를 수신할 수도 있다. 비디오 데이터는 하나 이상의 픽처들을 포함할 수도 있다. 또한, 비디오 인코더 (20) 의 예측 프로세싱 유닛 (200), 양자화 유닛 (206), 및 잠재적으로 다른 컴포넌트들은 그 비디오 데이터에 기초하여 신택스 엘리먼트들을 생성할 수도 있다. 이 예에서, 엔트로피 인코딩 유닛 (218) 은 생성된 신택스 엘리먼트들 중 하나에 이진 산술 인코딩을 적용함으로써 오프셋 값을 결정할 수도 있다. 이진 산술 인코딩을 적용하는 것의 일부로서, 엔트로피 인코딩 유닛 (218) 은 하나 이상의 신택스 엘리먼트들을 이진화함으로써 빈 스트림을 생성할 수도 있다. 또한, 빈 스트림의 적어도 하나의 각각의 빈 (예컨대, 빈 스트림의 특정 빈, 빈 스트림의 각각의 빈, 빈 스트림의 마지막 빈 이외의 빈 스트림의 각각의 빈 등) 에 대해, 엔트로피 인코딩 유닛 (218) 은, 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 각각의 빈의 값에 기초하여 빈 스트림의 다음 빈에 대한 간격을 결정할 수도 있다. 추가적으로, 엔트로피 인코딩 유닛 (218) 은 빈 스트림의 다음 빈에 대해 하나 이상의 FSM 파라미터들을 결정할 수도 있다. 엔트로피 인코딩 유닛 (218) 은, 각각의 빈에 대한 상태, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값에 기초하여, 빈 스트림의 다음 빈에 대한 상태를 또한 결정할 수도 있다. 이 예에서, 오프셋 값은 빈 스트림의 마지막 빈에 대한 간격에서의 값과 동일할 수도 있다. 비디오 인코더 (20) 는 오프셋 값을 포함하는 비트스트림을 출력할 수도 있다.
또한, 본 개시의 하나 이상의 기법들에 따르면, 비디오 디코더 (30) 의 엔트로피 디코딩 유닛 (300) 은 비트스트림에 포함된 오프셋 값에 이진 산술 디코딩을 적용함으로써 디코딩된 신택스 엘리먼트를 결정할 수도 있다. 이진 산술 디코딩을 적용하는 것의 일부로서, 엔트로피 디코딩 유닛 (300) 은 빈 스트림을 생성할 수도 있다. 빈 스트림을 생성하는 것의 일부로서, 엔트로피 디코딩 유닛 (300) 은, 빈 스트림의 적어도 하나의 각각의 빈 (예컨대, 빈 스트림의 특정 빈, 빈 스트림의 각각의 빈, 빈 스트림의 마지막 빈 이외의 빈 스트림의 각각의 빈 등) 에 대해, 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 오프셋 값에 기초하여, 각각의 빈의 값을 결정할 수도 있다. 추가적으로, 엔트로피 디코딩 유닛 (300) 은 빈 스트림의 다음 빈에 대해 하나 이상의 FSM 파라미터들을 결정할 수도 있다. 빈 스트림의 다음 빈은 빈 스트림에서의 각각의 빈을 뒤따른다. 또한, 엔트로피 디코딩 유닛 (300) 은, 각각의 빈에 대한 상태, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값에 기초하여, 빈 스트림의 다음 빈에 대한 상태를 결정할 수도 있다. 엔트로피 디코딩 유닛 (300) 은 디코딩된 신택스 엘리먼트를 형성하기 위해 빈 스트림을 이진화해제할 수도 있다. 비디오 디코더 (30) 의 다른 컴포넌트들은 디코딩된 신택스 엘리먼트에 부분적으로 기초하여 비디오 데이터의 픽처를 재구성할 수도 있다. 달리 말하면, 비디오 디코더 (30) 는 픽처를 재구성하기 위해 프로세스에서 디코딩된 신택스 엘리먼트를 사용할 수도 있다.
일부 예들에서, FSM 파라미터 결정 유닛들 (912, 1012) 은 상이한 컨텍스트들에 대해 상이한 함수들을 사용한다. 실례로, 각각의 컨텍스트는 FSM 파라미터 결정 유닛들 (912, 1012) 에서 상이한 함수를 사용할 수도 있다. FSM 파라미터 결정 유닛들 (912, 1012) 은 빈 확률 추정 FSM 유닛들 (908, 1008) 에 의해 사용되는 FSM 파라미터들을 결정하기 위해 컨텍스트에 대한 함수를 사용한다. 실례로, FSM 파라미터 결정 유닛들 (912, 1012) 의 각각은 상이한 컨텍스트들을 상이한 FSM 파라미터들에 맵핑하는 미리정의된 테이블을 액세스할 수도 있다. 다른 예에서, 상이한 컨텍스트들은 상이한 미리정의된 테이블들과 연관될 수도 있다. 이 예에서, FSM 파라미터 결정 유닛들 (912, 1012) 의 각각은 현재 컨텍스트와 연관된 미리정의된 테이블을 액세스하고, 정보의 하나 이상의 추가적인 조각들에 기초하여 현재 컨텍스트와 연관된 미리정의된 테이블에서 엔트리를 찾을 수도 있다. 이 예에서, 정보의 추가적인 조각들은 이웃하는 블록들의 코딩 모드들에 관한 정보, 마지막 비-제로 계수의 포지션에 관한 정보 등을 포함할 수도 있다. 일부 예들에서, 컨텍스트에 대한 함수는 FSM 파라미터들의 미리결정된 값들에 대한 컨텍스트로부터의 맵핑 (mapping) 이다. 따라서, 일부 예들에서, FSM 파라미터 결정 유닛들 (912, 1012) 의 각각은 FSM 파라미터들의 미리결정된 값들에 컨텍스트들을 맵핑하는 테이블로 구성된다.
일부 예들에서, 동일한 컨텍스트에 대해서도, FSM 파라미터들 (예컨대, 2-트랙 산술 코어에 대해 (a, b)) 은 또한, 슬라이스 타입들 및/또는 양자화 파라미터들, 및/또는 코딩된 모드 정보 (예컨대, 예를 들어 슬라이스 헤더에서 디코더에 대한 사이드 정보로서 코딩되는 임의의 타입의 정보) 에 의존할 수도 있다. 예를 들어, FSM 파라미터 결정 유닛들 (912, 1012) 의 각각은 FSM 파라미터들에 대한 (팩터들 (예컨대, 컨텍스트, 슬라이스 타입들, 양자화 파라미터들, 코딩된 모드 정보 등) 의 조합들을 맵핑하는 테이블로 구성될 수도 있다.
FSM 파라미터 결정 유닛들 (912, 1012) 은 FSM 파라미터들을 다양한 방식들로 수정할 수도 있다. 달리 말하면, FSM 파라미터 결정 유닛들 (912, 1012) 은 다양한 이벤트들에 응답하여 그리고 다양한 타입들의 정보에 기초하여 빈 확률 추정 FSM 유닛 (908) 에 의해 어느 FSM 파라미터들이 사용되는지를 변경할 수도 있다. 몇몇 가능성들이 이하에서 리스트되고, 이들은 각각의 컨텍스트에 대해 적용가능할 수도 있다.
하나의 예에서, FSM 파라미터들은 양자화 스텝 또는 QP 값과 같은 상태 재초기화 파라미터에 따라 재초기화 동안 수정된다. 예를 들어, 비디오 코더는 상태 재초기화 파라미터의 값들을 FSM 파라미터들에 맵핑하는 미리정의된 테이블로 구성될 수도 있다. 이 예에서, 비디오 코더는 상태 재초기화 파라미터들에 기초하여 FSM 파라미터들을 찾기 위해 그 테이블을 사용할 수도 있다.
일부 예들에서, FSM 파라미터들은 재초기화 동안, 또는 재초기화보다 더 짧은 주기적 간격들에서 (예컨대, 각각의 CTU 에 대해, 각각의 빈 후에 등) 추정된 확률 값들에 따라 수정된다. 예를 들어, 비디오 코더는 추정된 확률 값들을 FSM 파라미터들에 맵핑하는 미리정의된 테이블로 구성될 수도 있다. 이 예에서, 비디오 코더는 추정된 확률 값들에 기초하여 FSM 파라미터들을 찾기 위해 그 테이블을 사용할 수도 있다. 이 예에서, 비디오 코더는 컨텍스트 재초기화 동안 FSM 파라미터들을 찾기 위해 그 테이블을 사용할 수도 있다. 실례로, 비디오 코더는 컨텍스트 재초기화 동안 FSM 파라미터들을 찾기 위해 코딩 컨텍스트에 의해 명시된 확률 추정치들을 사용할 수도 있다. 더욱이, 일부 예들에서, 빈 확률 추정 FSM 유닛들 (908 또는 1008) 은 컨텍스트 재초기화 후에 제 1 빈을 뒤따르는 빈들에 대한 확률 추정치들을 결정할 수도 있다. 그러한 예들에서, 비디오 코더는 미리정의된 테이블에서 FSM 파라미터들을 찾기 위해 빈 확률 추정 FSM 유닛들 (908 또는 1008) 에 의해 결정된 확률 추정치들을 사용할 수도 있다.
일부 예들에서, FSM 파라미터들은 과거 확률 변동 (past probability variation) 의 측정에 기초하여 수정된다. 비디오 코더는 확률들 사이의 절대적 차이들을 합산함으로써 과거 확률 변동의 측정치를 계산할 수도 있다. 상이한 예들에서, 비디오 코더는 상이한 기법들을 이용하여 확률들을 추정할 수도 있다. 하나의 예에서, 식 (4) 에 의해 정의된 FSM 을 이용하여, 비디오 코더는 FSM 파라미터들을 결정하기 위해 "추정 변동 측정치 (estimation variation measure)" 를 사용할 수도 있다. 이 예에서, "추정 변동 측정치" 는 다음의 식:
(5)
에 따라 정의될 수도 있다. 상기 식에서, σ[k + 1] 은 k+1 에 대한 추정 변동 측정치이고, σ[k] 는 빈 k 에 대한 추정 변동 측정치이며, q 1[k] 및 q 2[k] 는 식 (4) 에서 정의되며, c 는 파라미터이다 (예컨대, c 는 상수일 수도 있다). 이 예에서, 비디오 코더는 추정 변동 측정치 σ[k] 의 상이한 값들을 FSM 파라미터들의 상이한 세트드에 맵핑하는 미리정의된 테이블을 액세스할 수도 있다. 따라서, 이 예에서, 비디오 코더는 추정 변동 측정치에 기초하여 FSM 파라미터들을 찾기 위해 그 테이블을 사용할 수도 있다. 일부 예들에서, 비디오 코더는 상이한 코딩 컨텍스트들에 대해 상이한 미리정의된 테이블들을 액세스할 수도 있다. 그러한 예들에서, 코딩 컨텍스트에 대한 미리정의된 테이블에서의 상이한 엔트리들은 FSM 파라미터들의 값들에 σ[k] 의 상이한 값들을 맵핑할 수도 있다. 비디오 코더가 상이한 코딩 컨텍스트들에 대해 상이한 미리정의된 테이블들을 액세스하는 일부 예들에서, 코딩 컨텍스트에 대한 테이블에서의 상이한 엔트리들은 σ[k] 의 상이한 값들 및 추가적인 정보의 상이한 조합들을 FSM 파라미터들의 값들에 맵핑할 수도 있다. 그러한 예들에서, 추가적인 정보는 슬라이스 타입들, 양자화 파라미터들 등을 포함할 수도 있다.
일부 예들에서, 비디오 코더는 FSM 파라미터들을 수정하기 위해 상기 정의된 바와 같은 기법들 중 임의의 것을 사용할 수도 있지만, 이전 재초기화부터 생성된 데이터를 이용하는 대신에, 비디오 코더는 비디오 시퀀스의 다른 부분들로부터의 데이터를 사용할 수도 있다. 예를 들어, 도 11a 는 FSM 파라미터들이 스캔 순서를 따라 동일 픽처에서 이웃하는 블록들 (예컨대, CTU들, CU들) 로부터 도출될 수 있는 것을 나타내는 블록도이다. 실례로, 도 11a 의 예에서, FSM 파라미터 결정 유닛들 (912, 1012) 은 하나 이상의 이웃하는 블록들로부터의 정보에 적어도 부분적으로 기초하여 FSM 파라미터들을 결정할 수도 있다. 그 정보는 예측 모드들, 양자화 파라미터들 등을 포함할 수도 있다. 일부 예들에서, 그 정보는 확률 기변성의 일부 측정치로부터 도출된 데이터를 포함할 수도 있다. 예를 들어, 단일 비트가 사용될 수 있고, 1 은 확률 추정치들에서의 심각한 변화들이 관찰된 것을 나타내기 위한 것이고, 0 은 그 외의 경우를 나타내기 위한 것이다.
도 11b 는 현재 픽처 (1110) 의 블록들에서 사용되는 FSM 파라미터들이 이전에 코딩된 픽처 (1112) 에서의 블록들과 연관된 정보에 기초하여 결정될 수 있는 것을 나타내는 블록도이다. 이전에 코딩된 픽처 (1112) 에서의 블록들은 현재 픽처 (1110) 에서의 블록들과 동일한 공간적 로케이션을 가질 수도 있다. 실례로, 도 11b 의 예에서, FSM 파라미터 결정 유닛들 (912, 1012) 은 이전에 코딩된 픽처에서의 하나 이상의 블록들로부터의 정보에 적어도 부분적으로 기초하여 FSM 파라미터들을 결정할 수도 있다. 그 정보는 예측 모드들, 양자화 파라미터들 등을 포함할 수도 있다. 일부 예들에서, 그 정보는 확률 기변성의 일부 측정치로부터 도출된 데이터를 포함할 수도 있다. 예를 들어, 단일 비트가 사용될 수 있고, 1 은 확률 추정치들에서의 심각한 변화들이 관찰된 것을 나타내기 위한 것이고, 0 은 그 외의 경우를 나타내기 위한 것이다.
이진 확률 추정, 즉, 랜덤 이진 데이터 소스의 확률을 추정하는 프로세스는 잘 알려진 베르누이 (Bernoulli) (또는 이항) 시도들에 관련될 수도 있고, 따라서, 수십년 동안 연구되었다. 하지만, 엔트로피 코딩을 위한 그것의 사용은, 실제 애플리케이션들에서, 추정 방법이 다음과 같은 2 가지 충돌하는 목적들을 고려하여야 하기 때문에, 여전히 개발 중이다: (1) 압축 효율은 확률 추정치들의 더 높은 정확도, 및 정확도를 유지하면서 추정치들을 빨리 변화시키는 능력과 함께 향상되고, 이는 더 높은 계산적 복잡도를 요구한다. 그리고, (2) 산술 코딩 속도는 압축 및 압축해제 시스템의 스루풋을 (Mbits/sec 로) 심각하게 제한할 수 있기 때문에, 산술 코딩이 스루풋을 증가시키기 위해서 작은 계산적 복잡도로 수행되는 것이 바람직하다.
낮은 복잡도에 대한 실제적 비디오 코딩 시스템들에서의 선호 때문에, 이진 산술 코딩을 위한 확률 추정의 대부분의 방법들은, 참조문헌 11 에서 설명된 바와 같이 산술 코딩의 처음 실제적 구현들 이후로, 참조문헌 10 에서 설명된 바와 같이 FSM 에 기초하였다. 이들 기법들의 기본들의 표기법이 이하에서 정의되고, 이는 비디오 코딩 애플리케이션들에서 사용될 수도 있다.
이진 랜덤 데이터 소스 (즉, ) 로부터 N 심볼들의 시퀀스, , 심볼 1 에 대한 참 확률들, 즉, 의 알려지지 않은 시퀀스 가 존재한다고 가정하면, 이진 확률 추정은, 인과율 조건 즉, p[n] 이 "과거" 빈들의 세트 에 오직 의존할 수 있다는 조건 하에서, 참 확률들에 가장 근사하는 추정된 확률들 의 시퀀스를 발견하는 문제이다.
코딩 애플리케이션들에서, 변수들 및 방정식들은 오직 정수 산술을 이용하기 위해 수정된다. 보통, 확률은 2 의 승수로 스케일링된다. 실례로, 정수 스케일링 팩터 (scaling factor) 가 사용되고, 대문자들은 대응하는 정수 값들을 나타내기 위해 사용되는 경우에, 확률들 및 빈들의 스케일링된 값들은 다음과 같을 수도 있다:
채택되었고, 과거 수십년에 걸쳐 몇번이나 "재발견" 되고 재명명된 확률 추정 FSM 의 하나의 특정 타입은 적응 파라미터 (adaptation parameter) , 및 재귀 형태 (recursive form):
(6)
를 갖는다.
실제의 인코딩 애플리케이션에서, 비디오 인코더 (20) ?? 비디오 디코더 (30) 양자는 (보통 공유된 고정된 테이블로부터의) 동일한 초기 확률 추정치 로 시작하고, 그 다음, 각각의 빈 은 확률 추정된 를 이용하여 순차적으로 최적으로 인코딩되고 디코딩되며, 각각의 확률 추정치는 각각의 빈이 인코딩되거나 디코딩된 후에 식 (6) 으로 업데이트된다. 이것은 재귀 방정식이기 때문에, 각각의 확률 값들은 모든 이전에 인코딩되었던 빈들 또는 디코딩되었던 빈들에 의존한다.
참조문헌들 16 및 17 에서 설명된 바와 같은 신호 프로세싱은, 식 (6) 이 사용될 때, 추정된 확률 값들은, 지수적으로 감소하는 가중치들을 이용하여, 이전에 코딩된 빈들에 의존적임을 보여준다.  그러한 이유로, 이 확률 추정 기법은, 실제의 코딩 애플리케이션들에서 의 값을 이용하여 제안된, 참조문헌 12 에서 지수적 에이징 (exponential aging) 으로 불렸다. AVC/H.264 및 HEVC/H.265 비디오 코딩 표준들에서 채택된 CABAC 산술 코딩 방법은 또한, 값 [4, 6, 7] 을 이용하여 이러한 접근법을 이용하고, 이전의 구현들로부터의 차이들 중 하나는 테이블 룩-업에 기초한 유한 상태 머신의 그것의 사용에 관련된다.
보다 최근에는, 동일한 접근법이 참조문헌 13 및 참조문헌 14 에서 지수적으로 감쇠하는 메모리로 불렸다. 참조문헌 14 는 그것을 "가상 슬라이딩 윈도우 (virtual sliding window)" 기법이라고 불렀고, 그것은, 대등 형태
(7)
W 빈들의 "슬라이딩 윈도우" 를 이용하여, 확률 추정에 대한 램던화된 알고리즘에 관련되기 때문이다. 더욱이, 참조문헌 13 및 14 는, 고 복잡도 분할이 효율적인 정수 비트 시프트들에 의해 대체될 수 있기 때문에
(8)
의 형태로, W 가 2 의 승수일 때 정수 산술로 그것이 유효하게 구현될 수 있음을 보여줬다.
이전의 추정 공식들에 있어서의 한가지 실제적인 문제점은, 주어진 컨텍스트의 이진 데이터에 따라 상이한 윈도우 값들 W 가 필요할 수도 있다는 점이다. 빈 값들의 확률들이 느리게 변화하거나, 빈 값 확률들이 매우 상이한 (예를 들어, ) 경우에, 그것들은 많은 수의 이전의 빈 값들에 걸쳐 평균화하기 때문에, W 의 더 큰 값들에 의해 보다 많은 압축이 획득된다. 다른 한편, W 의 작은 값들은 확률이 신속하고 자주 변화할 때 유익할 수도 있다.
참조문헌 15 에서 설명된 이 문제에 대한 한 가지 솔루션은
(9)
이도록 넘버 M 의 적응 파라미터들 , 및 가중치들 을 정의하고, 식 (6) 의 동일한 재귀적 형태에서, 수개의 확률 추정자들을 이용하며,
(10)
그 다음, 사중된 평균으로서 최종 추정치를 계산하는 것이다:
이러한 접근법은 비디오 코딩 애플리케이션들에서 보다 효율적인 것으로 증명되었고, 그러한 이유로, 현재의 ITU/MPEG 실험적 비디오 압축 프로그램은 확률 추정을 위해 (정수 산술을 이용하는) 다음과 같은 3 개의 식들을 사용한다.
(11)
이 경우에, 확률 추정 FSM 은 상태 엘리먼트들로서 Q 1Q 2 를 사용하고, 이는, Q 1 > 1/2 및 Q 2 < 1/2 가 동시에 발생되거나 그 역일 수 있기 때문에, 최소 우도 심볼 (least-probable-symbol; LPS) 의 확률만을 추정하는 보통의 기법을 사용하는 것을 어렵게 만든다.
참조문헌들 16 및 17 에서 설명된 이산-시간 신호 프로세싱, 및 z-변환의 정의를 이용하면, 결과는 다음과 같다:
(12)
규약에 따라, 본 개시물은 z-변환들에 대해 대문자들을 사용하지만, 그것들은 브라켓들 대신에 사용 괄호에 의해 인식될 수 있다. 예를 들어, P[k] 는 p[k] 의 스케일링된 정수 버전를 나타내기 위해 사용되는 한편, P(z) 는 p[k] 의 z-변환을 나타낸다.
이들 정의들을 이용하면 식 (6) 는 다음에 대응한다:
(13)
또는
(14)
이는 확률 추정치가 도 12 에서 도시된 바와 같이 빈 값들의 시퀀스에 적용되는 응답
(15)
으로 무한 임펄스 응답 (IIR) 의 출력임을 의미한다. 실례로, 도 12 는 식 (6) 에 의해 정의된 확률 추정의 하나의 예를 나타낸다.
식 (10) 의 확률 추정자 (probability estimator) 는, 2 개의 팩터들, 및 동일한 가중치들을 이용하여, 도 13 에서 도시된 병렬 필터 구현에 대응한다. 도 13 에서, 식 (10) 에 의해 정의된 확률 추정 필터는 2 개의 추정자들 및 동일한 가중치들을 포함한다.
따라서, 일부 예들에서, 비디오 인코더 (20) 는 산술 인코딩을 위해 사용되는 특정 빈 (예컨대, b[k]) 의 빈 확률 (예컨대, p[k]) 을 결정하기 위해 도 12 및 도 13 에서 예시된 확률 추정 필터들의 동작들을 구현할 수도 있다. 비디오 인코더 (20) 에 대한 b[k] 는 비트스트림으로 인코딩되는 이진화된 신택스 엘리먼트들 또는 보다 일반적으로 비디오 데이터에 기초할 수도 있다. 유사하게, 비디오 디코더 (30) 는 산술 인코딩을 위해 사용되는 특정 빈 (예컨대, b[k]) 의 빈 확률 (예컨대, p[k]) 을 결정하기 위해 도 12 및 도 13 에서 예시된 확률 추정 필터들의 동작들을 구현할 수도 있다. 비디오 디코더 (30) 에 대한 b[k] 는 비디오 데이터가 비트스트림으로부터 디코딩되는 그 비트스트림에 포함될 수도 있다.
엔트로피 코딩 (예컨대, 산술 코딩) 이 정적 데이터 소스 (예컨대, 비-이동 콘텐츠) 에 대해 최적이도록 설계되기 때문에, 그것의 실제적인 유효성은 데이터 엘리먼트들을 분류하는 것에 의존하므로, 각 부류에서의 통계는 대략적으로 정적이다. 실제로, 각 부류는 코딩 컨텍스트 (또는 바이너리 알파벳들에 대해 빈 컨텍스트) 에 의해 표현되고, 비록 각 컨텍스트가 심볼 확률들의 상이한 세트에 대응함에도 불구하고, 심볼 확률들이 변화하는 경우에, 그 변화들이 발생하는 방식은 충분히 유사하여서, 단일의 적응 방법이 모든 컨텍스트들에 대해 충분할 것이라고 가정된다.
하지만, 현실에서, 실제적인 비디오 코딩에서, 분류에 의해 형성된 스트림들의 각각에서의 데이터는 또한 구분되는 고차 변동들을 갖는다. 예를 들어, 부류들은 다음의 경우들에 대응한다:
Figure 112019106794089-pct00054
데이터는 참으로 정적임;
심볼 확률들이 자주, 하지만 작은 양들로 변화함;
심볼 확률들은 자주 변화하지 않지만, 그것들이 변화할 때, 확률 값들은 매우 현저하게 변화함.
또한, 데이터 심볼 확률들이 얼마나 자주 변화하는지, 변화의 속도, 및 변화들의 평균 크기에 관한 가변성이 또한 존재할 수도 있다. 모든 상이한 경우들을 다루기 위해서, 추정 프로세ㅡ의 양호한 제어를 가지는 것이 바람직할 수도 있다. 본 개시는 추정의 순서를 증가시키는 것, 데이터 소스 통계에 최적으로 매칭하기 위해 새로운 추정자들의 파라미터들을 조정하는 것에 의해 이것이 어떻게 행해지는지를 기술한다. 또한, 본 개시에서 기술된 기법들은, 오직 최소 우도 심볼 (LPS) 의 확률만을 추정하는 통상적인 기법을 이용하기 어렵게 만드는, 그것의 상태의 일부로서 확률 추정을 가지지 않는 FSM 추정자들의 문제를 해결할 수도 있다.
예측자들의 응답에서 보다 많은 정도의 자유를 가능하게 하기 위해서, 본 기법들은 더 높은 차수의 필터들을 이용할 수도 있다. IIR 필터 응답은
. (16)
와 같이 다항식 표현을 이용하여 보통 정의된다.
하지만, 확률 추정 문제에서, 다항식 표현의 파라미터들은 보통 최소 계산적 복잡도를 허용하지 않는다. 또한, 최선의 응답은 숫자적으로 안정적이지 않고, 추가로 구현을 복잡하게 만드는 것으로 알려져 있다.
본 개시는 확률 추정을 위해 이용되는 동작들이 결정될 수도 있는 시작 포인트로서 다음과 같은 프로덕트를 이용하는 것을 기술한다.
(17)
여기서, 는 각각 H(z) 의 폴들 (poles) 및 제로들 (zeros) 이고, 상수 γ 는 조건 H(1) = 1 이 충족되도록, 즉, 확률 추정이 적절하게 스케일링되도록 정의된다.
다음과 같은 단계는, 폴들 및 제로들이 거의 단일성이도록 예상되는 것, 및, 몇몇 정수 곱들을 갖는 것이 수용가능할 수도 있지만 비트 시프트들에 의해 모든 나누기들을 대체하는 것이 유용할 수도 있음을 고려하기 위한 것이다. 그러한 조건들 하에서, 필터는 식 (18) 을 이용하여 정의될 수도 있다.
(18)
여기서, 조건 H(1) = 1 을 충족시키기 위해서, 다음과 같아야 한다.
(19)
정의
(20)
로 다음과 같이 쓰여질 수 있고:
(21)
이 캐스케이드 (프로덕트) 형태에서, 개별 필터들이 임의의 순서로 배열될 수 있다는 사실을 이용할 수 있다.
무한한 정확도로, 필터들의 순서는 관계가 없을 수도 있지만, 필터들의 순서는 오직 유한한 정확도 및 정수 연산들을 이용할 때에만 중요할 수도 있다. 실례로, 파라미터 γ 가 2 와는 상이한 팩터들을 가질 대, 그것은 단순히 제 1 스테이지로 이동될 수도 있고, 정수 시퀀스 B[k] 는 곱들 또는 나누기들을 회피하기 위해 재스케일링될 수도 있다.
본원에 개시된 일부 예들에서, 파라미터들의 세트 는 (맞춤형 하드웨어에 대해 유용할 수도 있는,) 산술 연산들의 복잡성을 최소화하기 위해, 그리고 구현들을 단순화하기 위해, 모두 작은 정수들이다.
도 14 에서 구현의 다이어그램이 도시된다. 예를 들어 도 14 는 캐스케이드 필터들을 이용하는 확률 추정 필터의 일례를 나타낸다. 예를 들어, 도 14 는 빈 스트림의 빈들의 각각의 빈 확률들을 결정하기 위해 전달 함수 Hi(z) 의 연산들을 각각 수행하는 복수의 필터들을 나타낸다. 일례로서, 빈 스트림은 인코딩의 목적들을 위해 비디오 인코더 (20) 에서 생성된 이진화된 빈 스트림일 수도 있다. 빈 스트림은 또한, 비디오 디코더 (30) 가 실제 비디오 데이터 (예컨대, 신택스 엘리먼트) 를 생성하기 위해 이진화해제를 위해 생성하는 빈 스트림일 수도 있다.
비디오 디코더 (30) 에 대해, 복수의 필터들의 제 1 필터는 비트스트림 (예컨대, 비디오 인코더 (20) 에 의해 생성된 비트스트림) 에 기초하여 값들을 수신한다. 복수의 필터들의 마지막 필터는 빈 확률을 출력한다. 다른 필터들의 각각은 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 필터들의 각각에 대한 각각의 파라미터 값들에 기초하여 그것의 다음 필터에 대한 값들을 결정한다. 마지막 필터는 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 그 마지막 필터에 대한 파라미터 값들에 기초하여 빈 확률을 결정한다. 일례로서, 필터들의 각각에 대한 각각의 파라미터 값들은 i , i , i , 및 i 일 수도 있지만, 더 적은 또는 더 많은 파라미터 값들이 가능하다.
비디오 인코더 (20) 에 대해, 복수의 필터들의 제 1 필터는 (신택스 엘리먼트의 이진화에 의해 생성되는) 빈 스트림에 기초하여 값들을 수신한다. 복수의 필터들의 마지막 필터는 빈 확률을 출력한다. 다른 필터들의 각각은 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 필터들의 각각에 대한 각각의 파라미터 값들에 기초하여 그것의 다음 필터에 대한 값들을 결정한다. 마지막 필터는 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 그 마지막 필터에 대한 파라미터 값들에 기초하여 빈 확률을 결정한다. 일례로서, 필터들의 각각에 대한 각각의 파라미터 값들은 i , i , i , 및 i 일 수도 있지만, 더 적은 또는 더 많은 파라미터 값들이 가능하다.
비디오 코더 (예컨대, 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 다양한 방식들로 i , i , i , 및 i 을 결정할 수도 있다. 예를 들어, 비디오 코더는 다양한 타입들의 정보를 i , i , i , 및 i 의 값들에 맵핑하는 하나 이상의 미리정의된 테이블들을 액세스할 수도 있다. 예를 들어, 비디오 코더는 i , i , i , 및 i 의 값들을 찾기 위해 특정 컨텍스트와 연관된 테이블을 사용할 수도 있다. 이러한 예들에서, 그 하나 이상의 테이블들은 비디오 데이터의 경험적 분석에 기초하여 결정될 수도 있다.
일부 예들에서, 본 개시의 기법들은 엔트로피 인코딩 유닛 (218) (도 2) 을 이용하여 구현될 수도 있다. 예를 들어, 비디오 인코더 (20) 는 비디오 데이터를 수신할 수도 있다. 비디오 데이터는 하나 이상의 픽처들을 포함할 수도 있다. 또한, 비디오 인코더 (20) 의 예측 프로세싱 유닛 (200), 양자화 유닛 (206), 및 잠재적으로 다른 컴포넌트들은 그 비디오 데이터에 기초하여 신택스 엘리먼트들을 생성할 수도 있다. 이 예에서, 엔트로피 인코딩 유닛 (218) 은 비디오 데이터에 기초하여 신택스 엘리먼트를 수신하고, 그 신택스 엘리먼트에 이진 산술 인코딩을 적용할 수도 있다. 일부 예들에서, 이진 산술 인코딩을 적용하는 것은, 신택스 엘리먼트를 이진화함으로써 빈 스트림을 생성하는 것, 및 복수의 필터들로 빈 스트림의 마지막 하나의 빈에 대해 빈 확률을 결정하는 것을 포함할 수도 있다. 복수의 필터들의 제 1 필터는 빈 스트림에 기초하여 값들을 수신하고, 복수의 필터들의 마지막 필터는 빈 확률을 출력하며, 다른 필터들의 각각은 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 필터들의 각각에 대한 각각의 파라미터 값들에 기초하여 그것의 다음 필터에 대한 값들을 결정하고, 마지막 필터는 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 그 마지막 필터에 대한 파라미터 값들에 기초하여 빈 확률을 결정한다. 이진 산술 인코딩을 적용하는 것은 또한, 적어도 하나의 빈 및 빈 확률에 기초하여 비트스트림을 생성하는 것을 포함할 수도 있다. 엔트로피 인코딩 유닛 (218) 은 비트스트림을 출력할 수도 있다.
더욱이, 일부 예들에서, 본 개시의 기법들은 엔트로피 디코딩 유닛 (300) (도 3) 을 이용하여 구현될 수도 있다. 예를 들어, 엔트로피 디코딩 유닛 (300) 은 비트스트림에 이진 산술 디코딩을 적용함으로써 디코딩된 신택스 엘리먼트를 결정할 수도 있다. 이진 산술 디코딩을 적용하는 것은 빈 스트림을 생성하는 것을 포함하고, 빈 스트림을 생성하는 것은 복수의 필터들로 빈 스트림의 마지막 하나의 빈에 대해 빈 확률을 결정하는 것을 포함한다. 복수의 필터들의 제 1 필터는 비트스트림에 기초하여 값들을 수신하고, 복수의 필터들의 마지막 필터는 빈 확률을 출력하며, 다른 필터들의 각각은 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 필터들의 각각에 대한 각각의 파라미터 값들에 기초하여 그것의 다음 필터에 대한 값들을 결정하고, 마지막 필터는 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 그 마지막 필터에 대한 파라미터 값들에 기초하여 빈 확률을 결정한다. 엔트로피 디코딩 유닛 (300) 은 디코딩된 신택스 엘리먼트를 형성하기 위해 빈 스트림을 이진화해제할 수도 있다. 예측 프로세싱 유닛 (302) 은 디코딩된 신택스 엘리먼트에 부분적으로 기초하여 비디오 데이터의 픽처를 재구성할 수도 있다.
연산들의 순서는 확률 추정치에 대한 직접적 액세스가 최소 우도 심볼을 빨리 결정하기 위해 유용할 때 또한 중요할 수도 있다. 예를 들어, 다음의 식들은 양의 정수 상수들 a 및 b 에 의해 파라미터화된 확률 추정 FSM 을 정의하고, 여기서, 확률 시퀀스 P[k] 는 최소 FSM 상태의 일부이다.
(22)
비디오 코더는 이 개시물의 다른 곳에서 제공된 예들 중 임의의 것을 사용하여 FSM 파라미터들 a 및 b 의 값들을 결정할 수도 있다. 더욱이, 일부 예들에서, 비디오 코더는 식 (4) 대신에 식 (22) 를 사용할 수도 있다.
도 15 는 예시적인 엔트로피 인코딩 유닛을 나타내는 블록도이다. 예를 들어, 도 15 는 도 2 의 엔트로피 인코딩 유닛 (218) 의 하나의 예를 더 자세히 나타낸다. 엔트로피 인코딩 유닛 (218) 은 추가적인 또는 더 적은 컴포넌트들을 포함할 수도 있고, 도 15 에서 예시된 특정 상호접속들은 단지 이해의 용이성을 위한 것이고, 제한하는 것으로 간주되지 않아야 한다. 엔트로피 인코딩 유닛 (218) 은 비디오 데이터 (예컨대, 신택스 엘리먼트) 를 수신하고 이진화 프로세스 (예컨대, 빈 값들이라고도 불리는 이진 데이터 심볼들의 시퀀스) 를 수행하는 이진화 회로 (1500) 를 포함할 수도 있다. 확률 추정 회로 (1502) 는 이진화 회로 (1500) 에 의해 생성되 빈 값들을 수신할 수도 있고, 도 14 와 관련하여 예시되고 설명된 캐스케이드 필터링 기법을 이용하는 것과 같이 본 개시에서 설명된 예시적인 기법들을 이용하여 그 빈에 대한 확률을 결정할 수도 있다. 산술 인코더 회로 (1504) 는, 비디오 인코더 (20) 가 출력하는 비트스트림을 생성하기 위해 확률 추정 회로 (1502) 에 의해 생성된 코딩 컨텍스트들 (예컨대, 확률들) 에 기초하여 이진화 회로 (1500) 에 의해 생성된 이진화된 데이터를 엔트로피 인코딩할 수도 있다.
일례로서, 확률 추정 회로 (1502) 는 복수의 필터들 (예컨대, Hi(z)) 로 빈 스트림의 적어도 하나의 빈에 대한 빈 확률을 결정할 수도 있다. 복수의 필터들의 제 1 필터 (예컨대, H0(z)) 는 빈 스트림에 기초하여 값들을 수신한다. 복수의 필터들의 마지막 필터 (예컨대, HF(z)) 는 빈 확률을 출력한다. 다른 필터들 (예컨대, H1(z) 내지 HF-1(z)) 의 각각은 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 필터들의 각각에 대한 각각의 파라미터 값들 (예컨대, i , i , i , 및 i ) 에 기초하여 그것의 다음 필터에 대한 값들을 결정한다. 마지막 필터는 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 그 마지막 필터에 대한 파라미터 값들 (예컨대, F , F , F , 및 F ) 에 기초하여 빈 확률을 결정한다.
그것의 값들을 생성하기 위해 제 1 필터에 의해 적용되는 전달 함수는 를 포함하고, 여기서, 는 제 1 필터에 대한 파라미터를 포함하고, z 는 z-변환에 대한 변수이다. 제 1 필터에 후속하는 필터들의 각각에 의해 적용되는 전달 함수는 를 포함하고, 여기서, i 는 필터의 상대적인 순서를 나타내고, 여기서, i , i , i , 및 i 는 필터들에 대한 각각의 파라미터 값들이다. i , i , i , 및 i 의 각각의 하나는 정수들일 수도 있고, 일부 예들에서, i , i , i , 및 i 의 각각의 것은 비교적 작은 정수들일 수도 있다.
도 16 은 예시적인 엔트로피 디코딩 유닛을 나타내는 블록도이다. 예를 들어, 도 16 는 도 3 의 엔트로피 인코딩 유닛 (300) 의 하나의 예를 더 자세히 나타낸다. 엔트로피 디코딩 유닛 (300) 은 추가적인 또는 더 적은 컴포넌트들을 포함할 수도 있고, 도 16 에서 예시된 특정 상호접속들은 단지 이해의 용이성을 위한 것이고, 제한하는 것으로 간주되지 않아야 한다. 엔트로피 디코딩 유닛 (300) 은 비트스트림 (예컨대, 인코딩된 신택스 엘리먼트들) 을 수신하고 확률 추정 회로 (1606) 에 의해 결정된 코딩 컨텍스트들 (예컨대, 확률들) 에 기초하여 산술 디코딩을 수행하는 산술 디코더 회로 (1604) 를 포함할 수도 있다. 하나의 예로서, 확률 추정 회로 (1606) 는 도 14 에서 예시된 연산들 또는 그들 연산들의 역의 일부 형태를 수행할 수도 있다. 역 이진화 회로 (1600) 는 산술 디코더 회로 (1604) 로부터의 출력을 수신하고, 픽처들을 재구성하기 위해 사용되는 비디오 데이터를 생성하기 위해 역 이진화 프로세스를 수생한다.
일례로서, 확률 추정 회로 (1606) 는 복수의 필터들 (예컨대, Hi(z)) 로 빈 스트림의 적어도 하나의 빈에 대한 빈 확률을 결정한다. 복수의 필터들의 제 1 필터 (예컨대, H0(z)) 는 비트스트림에 기초하여 값들을 수신한다. 복수의 필터들의 마지막 필터 (예컨대, HF(z)) 는 빈 확률을 출력한다. 다른 필터들 (예컨대, H1(z) 내지 HF-1(z)) 의 각각은 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 필터들의 각각에 대한 각각의 파라미터 값들 (예컨대, i , i , i , 및 i ) 에 기초하여 그것의 다음 필터에 대한 값들을 결정한다. 마지막 필터는 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 그 마지막 필터에 대한 파라미터 값들 (예컨대, F , F , F , 및 F ) 에 기초하여 빈 확률을 결정한다.
그것의 값들을 생성하기 위해 제 1 필터에 의해 적용되는 전달 함수는 를 포함하고, 여기서, 는 제 1 필터에 대한 파라미터를 포함하고, z 는 z-변환에 대한 변수이다. 제 1 필터에 후속하는 필터들의 각각에 의해 적용되는 전달 함수는 를 포함하고, 여기서, i 는 필터의 상대적인 순서를 나타내고, 여기서, i , i , i , 및 i 는 필터들에 대한 각각의 파라미터 값들이다. i , i , i , 및 i 의 각각의 하나는 정수들일 수도 있고, 일부 예들에서, i , i , i , 및 i 의 각각의 것은 비교적 작은 정수들일 수도 있다.
다음의 넘버링된 패러그래프들은 본 개시의 기법들에 따른 특정 예들을 기술한다.
예 1. 비디오 데이터를 디코딩하는 방법으로서, 그 방법은, 비트스트림에 이진 산술 디코딩을 적용하는 것에 의해, 디코딩된 신택스 엘리먼트를 결정하는 단계를 포함하고, 상기 이진 산술 디코딩을 적용하는 것은, 빈 스트림을 생성하는 것을 포함하며 상기 빈 스트림을 생성하는 것은: 복수의 필터들로 빈 스트림의 적어도 하나의 빈에 대한 빈 확률을 결정하는 것으로서, 여기서, 복수의 필터들의 제 1 필터는 빈 스트림에 기초하여 값들을 수신하고, 복수의 필터들의 마지막 필터는 빈 확률을 출력하며, 다른 필터들의 각각은 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 필터들의 각각에 대한 각각의 파라미터 값들에 기초하여 그것의 다음 필터에 대한 값들을 결정하고, 마지막 필터는 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 그 마지막 필터에 대한 파라미터 값들에 기초하여 빈 확률을 결정하는, 상기 빈 확률을 결정하는 것; 및, 디코딩된 신택스 엘리먼트를 형성하기 위해 빈 스트림을 이진화해제하는 것을 포함하고 상기 방법은, 또한 디코딩된 신택스 엘리먼트에 부분적으로 기초하여 비디오 데이터의 픽처를 재구성하는 단계를 포함한다.
예 2. 예 1 의 방법에 있어서, 복수의 필터들은 캐스케이드 구성으로 배열된다.
예 3. 예 1 및 예 2 의 방법에 있어서, 그것의 값들을 생성하기 위해 제 1 필터에 의해 적용되는 전달 함수는 를 포함하고, 여기서, 는 제 1 필터에 대한 파라미터를 포함하고, z 는 z-변환에 대한 변수이다.
예 4. 예 1 내지 예 3 의 어느 것의 방법에 있어서, 제 1 필터에 후속하는 필터들의 각각에 의해 적용되는 전달 함수는 를 포함하고, 여기서, i 는 필터의 상대적인 순서를 나타내고, 여기서, i , i , i , 및 i 는 필터들에 대한 각각의 파라미터 값들이다.
예 5. 예 4 의 방법에 있어서, i , i , i , 및 i 의 각각의 하나는 정수들이다.
예 6. 예 4 의 방법에 있어서, i , i , i , 및 i 의 각각의 하나는 비교적 작은 정수들이다.
예 7. 예 1 내지 예 6 의 어느 것의 방법은,
의 연산들을 수행하는 것에 적어도 부분적으로 기초하여 최소 우도 심볼을 결정하는 것을 더 포함한다.
예 8. 비디오 데이터를 인코딩하는 방법으로서, 그 방법은, 비디오 데이터에 기초하여 신택스 엘리먼트를 수신하는 단계를 포함하고; 신택스 엘리먼트에 이진 산술 인코딩을 적용하는 단계를 포함하며, 이진 산술 인코딩을 적용하는 것은, 신택스 엘리먼트를 이진화함으로써 빈 스트림을 생성하는 것; 복수의 필터들로 빈 스트림의 적어도 하나의 빈에 대한 빈 확률을 결정하는 것으로서, 여기서, 복수의 필터들의 제 1 필터는 빈 스트림에 기초하여 값들을 수신하고, 복수의 필터들의 마지막 필터는 빈 확률을 출력하며, 다른 필터들의 각각은 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 필터들의 각각에 대한 각각의 파라미터 값들에 기초하여 그것의 다음 필터에 대한 값들을 결정하고, 마지막 필터는 그것의 바로 이전 필터로부터 값들을 수신하고, 그 수신된 값들 및 그 마지막 필터에 대한 파라미터 값들에 기초하여 빈 확률을 결정하는, 상기 빈 확률을 결정하는 것; 및, 그 적어도 하나의 빈 및 빈 확률에 기초하여 비트스트림을 생성하는 것을 포함하고, 상기 방법은, 그 비트스트림을 출력하는 단계를 또한 포함한다.
예 9. 예 8 의 방법에 있어서, 복수의 필터들은 캐스케이드 구성으로 배열된다.
예 10. 예 8 및 예 9 의 방법에 있어서, 그것의 값들을 생성하기 위해 제 1 필터에 의해 적용되는 전달 함수는 를 포함하고, 여기서, 는 제 1 필터에 대한 파라미터를 포함하고, z 는 z-변환에 대한 변수이다.
예 11. 예 8 내지 예 10 의 어느 것의 방법에 있어서, 제 1 필터에 후속하는 필터들의 각각에 의해 적용되는 전달 함수는 를 포함하고, 여기서, i 는 필터의 상대적인 순서를 나타내고, 여기서, i , i , i , 및 i 는 필터들에 대한 각각의 파라미터 값들이다.
예 12. 예 11 의 방법에 있어서, i , i , i , 및 i 의 각각의 하나는 정수들이다.
예 13. 예 11 의 방법에 있어서, i , i , i , 및 i 의 각각의 하나는 비교적 작은 정수들이다.
예 14. 예 8 내지 예13 의 어느 것의 방법은,
의 연산들을 수행하는 것에 적어도 부분적으로 기초하여 최소 우도 심볼을 결정하는 것을 더 포함한다.
도 17 은 본 개시의 하나 이상의 기법들에 따른, 비디오 인코더 (20) 의 예시적인 동작을 나타내는 플로우차트이다. 본 개시의 플로우차트들은 예들로서 제공된다. 본 개시의 기법에 따른 다른 예들은 더 많거나 더 적거나, 또는 상이한 액션들을 수반할 수도 있다. 더욱이, 일부 예들에서, 특정 액션들은 상이한 순서들로 또는 병행하여 수행될 수도 있다.
도 17 의 예에서, 비디오 인코더 (20) 는 비디오 데이터에 기초하여 신택스 엘리먼트를 생성할 수도 있다 (1700). 예를 들어, 비디오 인코더 (20) 는 잔차 값이 1 보다 더 큰지 여부를 나타내는 신택스 엘리먼트, 잔차 값이 2 보다 더 큰지 여부를 나타내는 신택스 엘리먼트, 또는 다른 타입의 신택스 엘리먼트를 생성할 수도 있다.
추가적으로, 비디오 인코더 (20) 는 적어도 부분적으로 ,신택스 엘리먼트에 이진 산술 인코딩 (예컨대, CABAC 인코딩) 을 적용하는 것에 의해, 오프셋 값을 결정할 수도 있다 (1702). 신택스 엘리먼트에 이진 산술 인코딩을 적용하는 것의 일부로서, 비디오 인코더 (20) 는 적어도 부분적으로 신택스 엘리먼트를 이진화하는 것에 의해 빈 스트림을 생성할 수도 있다 (1704). 비디오 인코더 (20) 는 신택스 엘리먼트를 다양한 방식드로 이진화할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 Truncated Rice 이진화 프로세스, k-차 Exp-Golomb 이진화 프로세스, 고정 길이 이진화 프로세스, 또는 다른 타입의 이진화 프로세스를 이용하여 신택스 엘리먼트를 이진화할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 상이한 타입들의 신택스 엘리먼트들에 대해 상이한 이진화 프로세스들을 사용한다. 일부 예들에서, 빈 스트림은 다수의 신택스 엘리먼트들을 이진화함으로써 생성된 빈들을 포함할 수도 있다.
또한, 빈 스트림의 적어도 하나의 각각의 빈에 대해, 비디오 인코더 (20) 는 빈 스트림의 다음 빈에 대한 간격을 결정할 수도 있다 (1706). 이 예에서, 비디오 인코더 (20) 는 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 각각의 빈의 값에 기초하여 다음 빈에 대한 간격을 결정할 수도 있다. 각각의 빈에 대한 상태는 제 1 값인 각각의 빈의 확률의 추정치 및 제 2 의 상이한 값인 각각의 빈의 확률의 추정치에 대응한다. 각각의 빈이 재초기화 후의 제 1 빈인 경우에, 각각의 빈에 대한 상태는 코딩 컨텍스트와 연관된 초기 확률 추정치들과 동일하다.
일부 예들에서, 비디오 인코더 (20) 는 다음 빈에 대한 간격을 결정하는 것의 일부로서 빈 스트림의 개개의 각각의 빈에 대해 다음과 같은 액션들을 수행할 수도 있다. 특히, 비디오 인코더 (20) 는, 각각의 빈에 대한 상태에 기초하여, 각각의 빈에 대한 간격을 제 1 심볼과 연관된 간격과 제 2 심볼과 연관된 간격으로 분할할 수도 있다. 추가적으로, 비디오 인코더 (20) 는, 각각의 빈의 값이 제 1 심볼과 동일한지 또는 제 2 심볼과 동일한지 여부에 기초하여, 다음 빈에 대한 간격의 상위 한계 (upper bound) 또는 하위 한계 (lower bound) 중 하나를 설정할 수도 있다. 각각의 빈의 값이 제 1 심볼과 동일하다고 결정하는 것에 응답하여, 다음 빈에 대한 간격의 상위 한계는 제 1 심볼과 연관된 간격의 상위 한계로 설정되고 다음 빈에 대한 간격의 하위 한계는 변경되지 않는다. 각각의 빈의 값이 제 2 심볼과 동일하다고 결정하는 것에 응답하여, 다음 빈에 대한 간격의 하위 한계는 제 2 심볼과 연관된 간격의 하위 한계로 설정되고 다음 빈에 대한 간격의 상위 한계는 변경되지 않는다.
예를 들어, 각각의 빈이 재초기화 후의 제 1 빈인 경우에, 각각의 빈에 대한 간격은 0 내지 1 이다. 이 예에서, 제 1 빈에 대한 상태가, 심볼 0 이 0.6 확률을 가지고 심볼 1 이 0.4 확률을 가진다고 나타내는 경우에, 비디오 인코더 (20) 는 제 1 빈에 대한 간격을 0 내지 0.6 의 간격과 0.6 내지 1 의 간격으로 분할할 수도 있다. 제 1 빈의 값이 0 인 경우에, 비디오 인코더 (20) 는 제 2 빈에 대한 간격의 상위 한계를 0.6 으로 설정할 수도 있고, 제 2 빈에 대한 간격의 하위 한계를 0 으로 설정할 수도 있다. 제 1 빈의 값이 1 인 경우에, 비디오 인코더 (20) 는 제 2 빈에 대한 간격의 하위 한계를 0.6 으로 설정할 수도 있고, 제 2 빈에 대한 간격의 상위 한계를 1 으로 설정할 수도 있다. 후속하여, 제 2 빈에 대한 상태가, 심볼 0 이 0.7 확률을 가지고 심볼 1 이 0.3 확률을 가지며, 제 2 빈에 대한 간격이 0 내지 0.6 이라고 나타내는 경우에, 비디오 인코더 (20) 는 제 2 빈에 대한 간격을 0 내지 0.42 의 간격과 0.42 내지 0.6 의 간격으로 분할할 수도 있다. 제 2 빈의 값이 0 인 경우에, 비디오 인코더 (20) 는 제 3 빈에 대한 간격의 상위 한계를 0.42 로 설정할 수도 있고, 제 3 빈에 대한 간격의 하위 한계를 0 으로 설정할 수도 있다. 제 2 빈의 값이 1 인 경우에, 비디오 인코더 (20) 는 제 3 빈에 대한 간격의 하위 한계를 0.42 로 설정할 수도 있고, 제 2 빈에 대한 간격의 상위 한계를 0.6 으로 설정할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 0 과 1 사이의 값들 대신에 정수 값들을 사용할 수도 있다.
또한, 비디오 인코더 (20) 는 빈 스트림의 다음 빈에 대해 하나 이상의 FSM 파라미터들을 결정할 수도 있다 (1708). 다음 빈에 대한 하나 이상의 FSM 파라미터들은 다음 빈에 대한 확률 추정치들이 어떻게 각각의 빈에 대한 상태로부터 계산되는지를 제어한다. 일부 경우들에서, 빈 스트림의 제 1 빈 (예컨대, 현재 빈) 에 대한 하나 이상의 FSM 파라미터들은 빈 스트림의 제 2 빈 (예컨대, 다음 빈) 에 대한 하나 이상의 FSM 파라미터들과는 상이하다.
비디오 인코더 (20) 는 이 개시물의 다른 곳에서 제공된 예들의 임의의 것에 따라 하나 이상의 FSM 파라미터들을 결정할 수도 있다. 실례로, 하나의 예에서, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것의 일부로서, 비디오 인코더 (20) 는, 상태 재초기화 파라미터에 따라 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 재초기화할 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 추정된 확률 값들에 따라 빈 스트림의 다음 빈에 대한 FSM 파라미터들을 수정한다. 일부 예들에서, 비디오 인코더 (20) 는 과거 확률 변동의 측정치에 기초하여 빈 스트림의 다음 빈에 대한 FSM 파라미터들을 수정한다. 일부 예들에서, 비디오 인코더 (20) 는 동일 프레임 또는 이전에 디코딩된 프레임에서의 하나 이상의 이웃하는 블록들에 기초하여 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정한다.
일부 예들에서, 비디오 인코더 (20) 는 빈 스트림의 각각의 빈에 대해 하나 이상의 FSM 파라미터들을 결정하기 위한 프로세스를 수행한다. 다른 예들에서, 비디오 인코더 (20) 는 오직, 빈 스트림의 특정 빈들에 대해 하나 이상의 FSM 파라미터들을 결정하기 위한 프로세스를 수행한다. 실례로, 하나의 예에서, 비디오 인코더 (20) 는 오직, 재초기화 후에 제 2 빈에 대한 확률 추정치들을 결정함에 있어서 사용되는 하나 이상의 FSM 파라미터들을 결정하기 위한 프로세스를 수행할 수도 있고, 다음 재초기화 이벤트까지 동일한 하나 이상의 FSM 파라미터들을 이용하는 것을 계속할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 블록 경계들, 슬라이스 경계들 등과 같이 다른 시간들에서 하나 이상의 FSM 파라미터들을 결정하기 위한 프로세스를 수행할 수도 있다.
비디오 인코더 (20) 는 또한, 빈 스트림의 다음 빈에 대한 상태를 결정하기 위해 파라미터화된 상태 업데이팅 함수를 사용할 수도 있다 (1710). 파라미터화된 상태 업데이팅 함수는 각각의 빈에 대한 상태, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값을 입력으로서 취한다. 예를 들어, 비디오 인코더 (20) 는 식 (4) 또는 식 (22) 를 이용하여 다음 빈에 대한 상태를 결정할 수도 있다.
도 17 의 예에서, 오프셋 값은 빈 스트림의 마지막 빈에 대한 간격에서의 값과 동일할 수도 있다. 비디오 인코더 (20) 는 오프셋 값을 포함하는 비트스트림을 출력할 수도 있다 (1712). 실례로, 비디오 인코더 (20) 는 비트스트림을 컴퓨터 판독가능 매체 (16) (도 1) 에 저장하거나 전송할 수도 있다.
도 18 은 본 개시의 하나 이상의 기법들에 따른, 비디오 디코더 (30) 의 예시적인 동작을 나타내는 플로우차트이다. 도 18 의 예에서, 비디오 디코더 (30) 는 비트스트림을 수신할 수도 있고, 비트스트림에 포함된 오프셋 값에 이진 산술 디코딩을 적용함으로써 하나 이상의 디코딩된 신택스 엘리먼트들을 결정할 수도 있다 (1800). 하나 이상의 디코딩된 신택스 엘리먼트들을 결정하는 것의 일부로서, 비디오 디코더 (30) 는 빈 스트림을 생성할 수도 있다. 이 빈 스트림은 더 긴 빈 스트림 또는 전체 빈 스트림의 일부일 수도 있다. 비트스트림은 비디오 데이터의 인코딩된 표현을 포함할 수도 있다.
또한, 빈 스트림을 생성하는 것의 일부로서, 비디오 디코더 (30) 는 빈 스트림의 적어도 하나의 각각의 빈에 대해, 다음과 같은 액션들을 수행할 수도 있다. 특히, 비디오 디코더 (30) 는 각각의 빈의 값을 결정할 수도 있다 (1802). 비디오 디코더 (30) 는 각각의 빈에 대한 상태, 각각의 빈에 대한 간격, 및 오프셋 값에 기초하여 각각의 빈의 값을 결정할 수도 있다. 실례로, 하나의 예에서, 빈 스트림의 개개의 각각의 빈에 대해, 비디오 디코더 (30) 는, 적어도 부분적으로, 각각의 빈에 대한 상태에 기초하여 그 각각의 빈에 대한 간격을 제 1 심볼과 연관된 간격과 제 2 심볼과 연관된 간격으로 나누는 것에 의해, 각각의 빈의 값을 결정할 수도 있다. 추가적으로, 비디오 디코더 (30) 는, 오프셋 값이 제 1 심볼과 연관된 간격 또는 제 2 심볼과 연관된 간격에 있는지 여부에 기초하여 각각의 빈의 값을 결정할 수도 있다. 이 예에서, 오프셋 값이 제 1 심볼과 연관된 간격 내에 있다고 결정하는 것에 응답하여, 각각의 빈의 값은 상기 제 1 심볼과 동일하다. 더욱이, 이 예에서, 오프셋 값이 제 2 심볼과 연관된 간격 내에 있다고 결정하는 것에 응답하여, 각각의 빈의 값은 제 2 심볼과 동일하다.
실례로, 하나의 특정 예에서, 제 1 빈과 연관된 간격은 0 에서부터 1 까지일 수도 있다. 이 예에서, 제 1 빈에 대한 상태는 심볼 0 이 0.6 확률을 갖는 것을 나타내고, 제 2 빈에 대한 상태는 심볼 1 이 0.4 확률을 갖는 것을 나타낸다. 이에 따라, 이 예에서, 비디오 디코더 (30) 는 제 1 빈과 연관된 간격을, 0 에서부터 0.6 까지의 범위인 심볼 0 과 연관된 간격과, 0.6 에서부터 1 까지의 범위인 심볼 1 과 연관된 간격으로 분할할 수도 있다. 이 예에서, 오프셋 값이 0 과 0.6 사이인 경우에, 비디오 디코더 (30) 는 제 1 빈의 값이 0 과 동일하다고 결정한다. 오프셋 값이 0.6 과 1 사이인 경우에, 비디오 디코더 (30) 는 제 1 빈의 값이 1 과 동일하다고 결정한다. 이 예에서, 제 1 빈의 값이 0 인 경우에, 비디오 디코더 (30) 는 제 2 빈에 대한 간격이 0 내지 0.6 이라고 결정할 수도 있다. 1 빈의 값이 1 인 경우에, 비디오 디코더 (30) 는 제 2 빈에 대한 간격이 0.6 내지 1 이라고 결정할 수도 있다. 또한, 제 1 빈의 값이 1 과 동일하고 제 2 빈에 대한 상태가 제 2 빈이 심볼 0 일 0.7 의 확률을 가지고 심볼 1 일 0.3 의 확률을 가진다고 가정하면, 비디오 디코더 (30) 는 간격 0.6 내지 1 을 심볼 0 에 대응하는 0.6 에서부터 0.88 까지의 간격 및 심볼 0 에 대응하는 0.88 에서부터 1 까지의 간격으로 분할할 수도 있다. 따라서, 오프셋 값이 0.6 과 0.88 사이인 경우에, 비디오 디코더 (30) 는 제 2 빈의 값이 0 이라고 결정한다. 오프셋 값이 0.88 과 1 사이인 경우에, 비디오 디코더 (30) 는 제 2 빈의 값이 1 이라고 결정한다. 비디오 디코더 (30) 는 빈 스트림의 각각의 빈에 대해 이 프로세스를 계속할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 0 과 1 사이의 값들 대신에 정수 값들을 사용할 수도 있다.
도 18 의 예에서, 비디오 디코더 (30) 는 빈 스트림의 다음 빈에 대해 하나 이상의 FSM 파라미터들을 결정할 수도 있다 (1804). 다음 빈에 대한 하나 이상의 FSM 파라미터들은 다음 빈에 대한 확률 추정치들이 어떻게 각각의 빈에 대한 상태로부터 계산되는지를 제어한다. 빈 스트림의 다음 빈은 빈 스트림에서의 상기 각각의 빈을 뒤따른다. 일부 경우들에서, 빈 스트림의 제 1 빈 (예컨대, 현재 빈) 에 대한 하나 이상의 FSM 파라미터들은 빈 스트림의 제 2 빈 (예컨대, 다음 빈) 에 대한 하나 이상의 FSM 파라미터들과는 상이하다.
비디오 디코더 (30) 는 이 개시물의 다른 곳에서 설명된 예들의 임의의 것에 따라 하나 이상의 FSM 파라미터들을 결정할 수도 있다. 예를 들어, 다음 빈에 대해 하나 이상의 FSM 파라미터들을 결정하는 것의 일부로서, 비디오 디코더 (30) 는 상태 재초기화 파라미터에 따라 빈 스트림의 다음 빈에 대한 FSM 파라미터들을 재초기화할 수도 있다. 일부 예들에서, 다음 빈에 대해 하나 이상의 FSM 파라미터들을 결정하는 것의 일부로서, 비디오 디코더 (30) 는 추정된 확률 값들에 따라 빈 스트림의 다음 빈에 대한 FSM 파라미터들을 수정할 수도 있다. 일부 예들에서, 다음 빈에 대해 하나 이상의 FSM 파라미터들을 결정하는 것의 일부로서, 비디오 디코더 (30) 는 과거 확률 변동의 측정치에 기초하여 빈 스트림의 다음 빈에 대한 FSM 파라미터들을 수정한다. 일부 예들에서, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것의 일부로서, 비디오 디코더 (30) 는 동일 프레임 또는 이전에 디코딩된 프레임에서의 하나 이상의 이웃하는 블록들에 기초하여 빈 스트림의 다음 빈에 대해 하나 이상의 FSM 파라미터들을 결정할 수도 있다.
일부 예들에서, 비디오 디코더 (30) 는 빈 스트림의 각각의 빈에 대해 하나 이상의 FSM 파라미터들을 결정하기 위한 프로세스를 수행한다. 다른 예들에서, 비디오 디코더 (30) 는 오직, 빈 스트림의 특정 빈들에 대해 하나 이상의 FSM 파라미터들을 결정하기 위한 프로세스를 수행한다. 실례로, 하나의 예에서, 비디오 디코더 (30) 는 오직, 재초기화 후에 제 2 빈에 대한 확률 추정치들을 결정함에 있어서 사용되는 하나 이상의 FSM 파라미터들을 결정하기 위한 프로세스를 수행할 수도 있고, 다음 재초기화 이벤트까지 동일한 하나 이상의 FSM 파라미터들을 이용하는 것을 계속할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 블록 경계들, 슬라이스 경계들 등과 같이 다른 시간들에서 하나 이상의 FSM 파라미터들을 결정하기 위한 프로세스를 수행할 수도 있다.
또한, 비디오 디코더 (30) 는 빈 스트림의 다음 빈에 대한 상태를 결정할 수도 있다 (1806). 비디오 디코더 (30) 는 각각의 빈에 대한 상태, 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들, 및 각각의 빈의 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 식 (4) 또는 식 (22) 를 이용하여 다음 빈에 대한 상태를 결정할 수도 있다.
추가적으로, 비디오 디코더 (30) 는 하나 이상의 디코딩된 신택스 엘리먼트들을 형성하기 위해 빈 스트림을 이진화해제할 수도 있다 (1808). 본 개시물의 다른 곳에서 언급된 바와 같이, 신택스 엘리먼트들은 Truncated Rice 이진화 프로세스, k-차 Exp-Golomb 이진화 프로세스, 고정 길이 이진화 프로세스, 또는 다른 타입의 이진화 프로세스와 같은 다양한 프로세스들을 이용하여 이진화될 수도 있다. 이들 프로세스들은 신택스 엘리먼트들의 값들을 바이너리 코드들에 맵핑한다. 빈 스트림을 이진화해제하기 위해, 비디오 디코더 (30) 는 빈 스트림에서 바이너리 코드들에 대응하는 값들을 찾을 수도 있다.
도 18 의 예에서, 비디오 디코더 (30) 는, 하나 이상의 디코딩된 신택스 엘리먼트들에 부분적으로 기초하여 비디오 데이터의 픽처를 재구성할 수도 있다 (1810). 예를 들어, 디코딩된 신택스 엘리먼트들이 잔차 데이터에 대한 나머지 값들 여부를 나타내는 경우에, 비디오 디코더 (30) 는 잔차 샘플들의 값들에 대해 결정하기 위해 그 나머지 값들을 사용할 수도 있다. 이 예에서, 비디오 디코더 (30) 는, 이 개시물의 다른 곳에서 설명된 바와 같이, 픽처의 샘플 값들을 재구성하기 위해서 잔차 샘플들 및 대응하는 예측성 샘플들을 이용할 수도 있다. 일부 예들에서, 디코딩된 신택스 엘리먼트들은, 블록들이 인트라 예측 또는 인터 예측으로 인코딩되는지 여부를 나타내는 신택스 엘리먼트들을 포함할 수도 있다. 이러한 예들에서, 비디오 디코더 (30) 는 인트라 예측 또는 인터 예측을 이용하여 블록들을 재구성할지 여부를 결정하기 위해 그러한 신택스 엘리먼트들을 이용할 수도 있다.
본 개시의 특정 양태들이 예시의 목적을 위해 HEVC 표준의 확장들에 관하여 설명되었다. 하지만, 본 개시에 설명된 기법들은, 아직 개발되지 않은 다른 표준 또는 독점적 비디오 코딩 프로세스들을 포함한, 다른 비디오 코딩 프로세스들에 유용할 수도 있다.
본 개시에서 설명된 바와 같은 비디오 코더는 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 유사하게, 비디오 코딩 유닛은 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 마찬가지로, 비디오 코딩은, 적용가능한 바에 따라, 비디오 인코딩 또는 비디오 디코딩을 지칭할 수도 있다. 이 개시물에서, 문구 “~ 에 기초하여” 는 오직 기초하여, 적어도 부분적으로 기초하여, 또는 어떤 방식으로 기초하여를 나타낼 수도 있다. 본 개시는 하나 이상의 샘플 블록들 및 하나 이상의 샘플 블록들의 샘플들을 코딩하는데 이용된 신택스 구조들을 지칭하기 위하여 용어 "비디오 유닛", "비디오 블록" 또는 "블록" 을 이용할 수도 있다. 비디오 유닛들의 예시적인 타입들은 CTU, CU, PU, 변환 유닛 (TU), 매크로블록, 매크로블록 파티션 등을 포함할 수도 있다. 일부 맥락에서는, PU에 대한 논의가 매크로블록 또는 매크로블록 파티션에 대한 논의와 상호 교환될 수도 있다. 비디오 블록들의 예시적인 타입들은 코딩 트리 블록들, 코딩 블록들, 및 다른 타입들의 비디오 데이터의 블록들을 포함할 수도 있다.
본 개시의 기법들은, 공중 경유 (over-the-air) 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, HTTP 상으로의 동적 적응적 스트리밍 (DASH) 과 같은 인터넷 스트리밍 비디오 송신들, 데이터 저장 매체 상으로 인코딩되는 디지털 비디오, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션들과 같은 다양한 멀티미디어 애플리케이션들 중 임의의 것을 지원하여 비디오 코딩에 적용될 수도 있다.
예에 의존하여, 본 명세서에서 설명된 기법들의 임의의 특정 행위들 또는 이벤트들은 상이한 시퀀스로 수행될 수 있고, 전체적으로 부가되거나 병합되거나 또는 제거될 수도 있음 (예를 들어, 설명된 모든 행위들 또는 이벤트들이 그 기법들의 실시를 위해 필수적인 것은 아님) 이 인식되어야 한다. 더욱이, 특정 예들에 있어서, 행위들 또는 이벤트들은 순차적인 것보다는, 예를 들어, 다중-스레딩된 프로세싱, 인터럽트 프로세싱, 또는 다중의 프로세서들을 통해 동시에 수행될 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수도 있다.  소프트웨어로 구현되는 경우, 그 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 또는 이를 통해 송신되고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들은 데이터 저장 매체들과 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체들, 또는 예를 들어, 통신 프로토콜에 따라 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다. 이러한 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 캐리어파와 같은 통신 매체에 대응할 수도 있다.  데이터 저장 매체들은 본 개시에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세싱 회로들에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다.  컴퓨터 프로그램 제품이 컴퓨터 판독가능 매체를 포함할 수도 있다.
제한이 아닌 일 예로, 이러한 컴퓨터 판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다.  또한, 임의의 커넥션이 컴퓨터 판독가능 매체로 적절히 명명된다. 예를 들어, 동축 케이블, 광섬유 케이블, 꼬임쌍선, 디지털 가입자 라인 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 소프트웨어가 송신된다면, 동축 케이블, 광섬유 케이블, 꼬임쌍선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의에 포함된다. 하지만, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 커넥션들, 캐리어파들, 신호들, 또는 다른 일시적 매체들을 포함하지 않지만 대신 비일시적인 유형의 저장 매체들로 지향됨을 이해해야 한다. 본원에서 이용된 디스크 (disk) 와 디스크 (disc) 는, 컴팩트 디스크(CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크, 및 블루레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 통상 자기적으로 데이터를 재생하는 반면, 디스크(disc) 들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 상기의 조합들이 또한, 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
이 개시물에서 설명된 기능성은 고정된 기능 및/또는 프로그래밍가능한 프로세싱 회로에 의해 수행될 수도 있다. 실례로, 명령들은 고정된 기능 및/또는 프로그래밍가능한 프로세싱 회로에 의해 실행될 수도 있다. 이러한 프로세싱 회로는 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적 회로들 (ASIC들), 필드 프로그래밍가능 로직 어레이들 (FPGA들), 또는 다른 등가의 통합된 또는 별개의 로직 회로부와 같은 하나 이상의 프로세서들을 포함할 수도 있다. 이에 따라, 본 명세서에서 사용된 바와 같은 용어 "프로세서" 는, 전술한 구조 또는 본 명세서에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 지칭할 수도 있다. 추가로, 일부 양태들에서, 본 명세서에서 설명된 기능성은 인코딩 및 디코딩을 위해 구성되거나, 또는 결합된 코덱에 통합된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 그 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다. 프로세싱 회로는 다양한 방식들로 다른 컴포넌트들에 커플링될 수도 있다. 예를 들어, 프로세싱 회로는 내부 디바이스 상호연결부, 유선 또는 무선 네트워크 접속, 또는 다른 통신 매체를 통해 다른 컴포넌트들에 커플링될 수도 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC 들의 세트 (예를 들면, 칩 세트) 를 포함하는, 매우 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시에 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하는 것은 아니다. 오히려, 상기 설명된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에서 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상기 설명된 바와 같은 하나 이상의 프로세서들을 포함하는, 상호동작가능한 하드웨어 유닛들의 콜렉션에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (44)

  1. 비디오 데이터를 디코딩하는 방법으로서,
    상기 방법은,
    비트스트림에 포함된 오프셋 값에 이진 산술 디코딩을 적용하는 것에 의해, 디코딩된 신택스 엘리먼트를 결정하는 단계로서, 상기 이진 산술 디코딩을 적용하는 것은,
    빈 스트림을 생성하는 것으로서, 상기 빈 스트림을 생성하는 것은,
    상기 빈 스트림의 적어도 하나의 각각의 빈에 대해,
    상기 각각의 빈에 대한 상태, 상기 각각의 빈에 대한 간격, 및 상기 오프셋 값에 기초하여 상기 각각의 빈의 값을 결정하는 것;
    상기 빈 스트림의 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들은 상기 다음 빈에 대한 확률 추정치들이 어떻게 상기 각각의 빈에 대한 상태로부터 계산되는지를 제어하고, 상기 빈 스트림의 상기 다음 빈은 상기 빈 스트림에서 상기 각각의 빈을 뒤따르는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것; 및
    상기 각각의 빈에 대한 상기 상태, 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들, 및 상기 각각의 빈의 상기 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것으로서, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것은,
    다음의 식들:

    에 따라 상기 다음 빈에 대한 상태를 결정하는 것을 포함하고,
    여기서, p[k+1] 은 상기 빈 스트림의 상기 다음 빈에 대한 상태이고, p[k] 는 상기 각각의 빈에 대한 상태이며, b[k] 는 상기 각각의 빈의 값이고, a 는 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 1 파라미터이고, b 는 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 2 파라미터인, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것
    을 포함하는, 상기 빈 스트림을 생성하는 것; 및
    상기 디코딩된 신택스 엘리먼트를 형성하기 위해 상기 빈 스트림을 이진화해제하는 것
    을 포함하는, 상기 디코딩된 신택스 엘리먼트를 결정하는 단계; 및
    상기 디코딩된 신택스 엘리먼트에 부분적으로 기초하여 상기 비디오 데이터의 픽처를 재구성하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것은,
    상태 재초기화 파라미터에 따라 상기 빈 스트림의 상기 다음 빈에 대한 상기 FSM 파라미터들을 재초기화하는 것을 포함하는, 비디오 데이터를 디코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것은,
    추정된 확률 값들에 따라 상기 빈 스트림의 상기 다음 빈에 대한 상기 FSM 파라미터들을 수정하는 것을 포함하는, 비디오 데이터를 디코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것은, 과거 확률 변동의 측정치에 기초하여 상기 다음 빈에 대한 상기 FSM 파라미터들을 수정하는 것을 포함하는, 비디오 데이터를 디코딩하는 방법.
  5. 제 4 항에 있어서,
    상기 과거 확률 변동의 측정치는,

    로서 정의된 특정 빈에 대한 추정 변동 측정치를 이용하여 추정된 확률들 사이의 절대 차이들을 합산함으로써 계산되고,
    여기서, σ[k+1] 는 상기 빈 스트림의 상기 다음 빈에 대한 상기 추정 변동 측정치이고, σ[k] 는 상기 특정 빈에 대한 추정 변동 측정치이며, q1[k] 는 상기 특정 빈에 대한 제 1 확률 추정치이고, q2[k] 는 상기 특정 빈에 대한 제 2 확률 추정치이며, c 는 파라미터인, 비디오 데이터를 디코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것은,
    동일 프레임 또는 이전에 디코딩된 프레임에서의 하나 이상의 이웃하는 블록들에 기초하여 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들을 결정하는 것을 포함하는, 비디오 데이터를 디코딩하는 방법.
  7. 삭제
  8. 제 1 항에 있어서,
    상기 빈 스트림의 개개의 각각의 빈에 대해, 상기 각각의 빈의 값을 결정하는 것은,
    상기 각각의 빈에 대한 상태에 기초하여, 상기 각각의 빈에 대한 간격을 제 1 심볼과 연관된 간격과 제 2 심볼과 연관된 간격으로 분할하는 것; 및
    상기 오프셋 값이 상기 제 1 심볼과 연관된 간격 또는 상기 제 2 심볼과 연관된 간격에 있는지 여부에 기초하여 상기 각각의 빈의 값을 결정하는 것을 포함하고,
    상기 오프셋 값이 상기 제 1 심볼과 연관된 간격 내에 있다고 결정하는 것에 응답하여, 상기 각각의 빈의 값은 상기 제 1 심볼과 동일하고, 그리고
    상기 오프셋 값이 상기 제 2 심볼과 연관된 간격 내에 있다고 결정하는 것에 응답하여, 상기 각각의 빈의 값은 상기 제 2 심볼과 동일한, 비디오 데이터를 디코딩하는 방법.
  9. 제 1 항에 있어서,
    상기 비트스트림을 수신하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  10. 제 1 항에 있어서,
    상기 빈 스트림의 제 1 빈에 대한 상기 하나 이상의 FSM 파라미터들은 상기 빈 스트림의 제 2 빈에 대한 상기 하나 이상의 FSM 파라미터들과는 상이한, 비디오 데이터를 디코딩하는 방법.
  11. 비디오 데이터를 인코딩하는 방법으로서,
    상기 방법은,
    상기 비디오 데이터에 기초하여 신택스 엘리먼트를 생성하는 단계;
    적어도 부분적으로, 상기 신택스 엘리먼트에 이진 산술 인코딩을 적용하는 것에 의해, 오프셋 값을 결정하는 단계로서, 상기 이진 산술 인코딩을 적용하는 것은,
    적어도 부분적으로,
    상기 신택스 엘리먼트를 이진화하는 것;
    빈 스트림의 적어도 하나의 각각의 빈에 대해,
    상기 각각의 빈에 대한 상태, 상기 각각의 빈에 대한 간격, 및 상기 각각의 빈의 값에 기초하여 상기 빈 스트림의 다음 빈에 대한 간격을 결정하는 것;
    상기 빈 스트림의 상기 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들은 상기 다음 빈에 대한 확률 추정치들이 어떻게 상기 각각의 빈에 대한 상태로부터 계산되는지를 제어하는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것; 및
    상기 각각의 빈에 대한 상기 상태, 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들, 및 상기 각각의 빈의 상기 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것으로서, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것은,
    다음의 식들:

    에 따라 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것을 포함하고,
    여기서, p[k+1] 은 상기 빈 스트림의 상기 다음 빈에 대한 상태이고, p[k] 는 상기 각각의 빈에 대한 상태이며, b[k] 는 상기 각각의 빈의 값이고, a 는 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 1 파라미터이고, b 는 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 2 파라미터인, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것
    에 의해, 상기 빈 스트림을 생성하는 것을 포함하고, 상기 오프셋 값은 상기 빈 스트림의 마지막 빈에 대한 간격에서의 값과 동일한, 상기 오프셋 값을 결정하는 단계; 및
    상기 오프셋 값을 포함하는 비트스트림을 출력하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  12. 제 11 항에 있어서,
    상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것은, 상태 재초기화 파라미터에 따라 상기 빈 스트림의 상기 다음 빈에 대한 상기 FSM 파라미터들을 재초기화하는 것을 포함하는, 비디오 데이터를 인코딩하는 방법.
  13. 제 11 항에 있어서,
    상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것은, 추정된 확률 값들에 따라 상기 빈 스트림의 상기 다음 빈에 대한 상기 FSM 파라미터들을 수정하는 것을 포함하는, 비디오 데이터를 인코딩하는 방법.
  14. 제 11 항에 있어서,
    상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것은, 과거 확률 변동의 측정치에 기초하여 상기 빈 스트림의 상기 다음 빈에 대한 상기 FSM 파라미터들을 수정하는 것을 포함하는, 비디오 데이터를 인코딩하는 방법.
  15. 제 14 항에 있어서,
    상기 과거 확률 변동의 측정치는,

    로서 정의된 특정 빈에 대한 추정 변동 측정치를 이용하여 추정된 확률들 사이의 절대 차이들을 합산함으로써 계산되고,
    여기서, σ[k+1] 는 상기 빈 스트림의 상기 다음 빈에 대한 상기 추정 변동 측정치이고, σ[k] 는 상기 특정 빈에 대한 추정 변동 측정치이며, q1[k] 는 상기 특정 빈에 대한 제 1 확률 추정치이고, q2[k] 는 상기 특정 빈에 대한 제 2 확률 추정치이며, c 는 파라미터인, 비디오 데이터를 인코딩하는 방법.
  16. 제 11 항에 있어서,
    상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것은, 동일 프레임 또는 이전에 디코딩된 프레임에서의 하나 이상의 이웃하는 블록들에 기초하여 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들을 결정하는 것을 포함하는, 비디오 데이터를 인코딩하는 방법.
  17. 삭제
  18. 제 11 항에 있어서,
    상기 빈 스트림의 개개의 각각의 빈에 대해, 상기 빈 스트림의 상기 다음 빈에 대한 간격을 결정하는 것은,
    상기 각각의 빈에 대한 상태에 기초하여, 상기 각각의 빈에 대한 간격을 제 1 심볼과 연관된 간격과 제 2 심볼과 연관된 간격으로 분할하는 것; 및
    상기 각각의 빈의 값이 상기 제 1 심볼과 동일한지 또는 상기 제 2 심볼과 동일한지 여부에 기초하여, 상기 다음 빈에 대한 간격의 상위 한계 또는 하위 한계 중 하나를 설정하는 것을 포함하고,
    상기 각각의 빈의 값이 상기 제 1 심볼과 동일하다고 결정하는 것에 응답하여, 상기 다음 빈에 대한 간격의 상기 상위 한계는 상기 제 1 심볼과 연관된 상기 간격의 상위 한계로 설정되고 상기 다음 빈에 대한 상기 간격의 상기 하위 한계는 변경되지 않으며, 그리고
    상기 각각의 빈의 값이 상기 제 2 심볼과 동일하다고 결정하는 것에 응답하여, 상기 다음 빈에 대한 간격의 상기 하위 한계는 상기 제 2 심볼과 연관된 상기 간격의 하위 한계로 설정되고 상기 다음 빈에 대한 상기 간격의 상기 상위 한계는 변경되지 않는, 비디오 데이터를 인코딩하는 방법.
  19. 제 11 항에 있어서,
    상기 빈 스트림의 제 1 빈에 대한 상기 하나 이상의 FSM 파라미터들은 상기 빈 스트림의 제 2 빈에 대한 상기 하나 이상의 FSM 파라미터들과는 상이한, 비디오 데이터를 인코딩하는 방법.
  20. 비디오 데이터를 디코딩하기 위한 장치로서,
    상기 장치는,
    비디오 데이터를 저장하도록 구성된 하나 이상의 저장 매체; 및
    하나 이상의 프로세서들을 포함하고,
    상기 하나 이상의 프로세서들은,
    비트스트림에 포함된 오프셋 값에 이진 산술 디코딩을 적용하는 것에 의해, 디코딩된 신택스 엘리먼트를 결정하는 것으로서, 상기 하나 이상의 프로세서들은, 상기 이진 산술 디코딩을 적용하는 것의 일부로서, 상기 하나 이상의 프로세서들이,
    빈 스트림을 생성하는 것으로서, 상기 빈 스트림을 생성하는 것의 일부로서, 상기 하나 이상의 프로세서들은,
    상기 빈 스트림의 적어도 하나의 각각의 빈에 대해,
    상기 각각의 빈에 대한 상태, 상기 각각의 빈에 대한 간격, 및 상기 오프셋 값에 기초하여 상기 각각의 빈의 값을 결정하고;
    상기 빈 스트림의 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들은 상기 다음 빈에 대한 확률 추정치들이 어떻게 상기 각각의 빈에 대한 상태로부터 계산되는지를 제어하고, 상기 빈 스트림의 상기 다음 빈은 상기 빈 스트림에서 상기 각각의 빈을 뒤따르는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것을 행하며; 그리고
    상기 각각의 빈에 대한 상기 상태, 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들, 및 상기 각각의 빈의 상기 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것으로서, 상기 하나 이상의 프로세서들은,
    다음의 식들:

    에 따라 상기 다음 빈에 대한 상태를 결정하도록 구성되며,
    여기서, p[k+1] 은 상기 빈 스트림의 상기 다음 빈에 대한 상태이고, p[k] 는 상기 각각의 빈에 대한 상태이며, b[k] 는 상기 각각의 빈의 값이고, a 는 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 1 파라미터이고, b 는 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 2 파라미터인, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는, 상기 빈 스트림을 생성하는 것을 행하며,
    상기 디코딩된 신택스 엘리먼트를 형성하기 위해 상기 빈 스트림을 이진화해제하도록
    구성되는, 상기 디코딩된 신택스 엘리먼트를 결정하는 것을 행하며; 그리고
    상기 디코딩된 신택스 엘리먼트에 부분적으로 기초하여 상기 비디오 데이터의 픽처를 재구성하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  21. 제 20 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것의 일부로서, 상기 하나 이상의 프로세서들이 상태 재초기화 파라미터에 따라 상기 빈 스트림의 상기 다음 빈에 대한 상기 FSM 파라미터들을 재초기화하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  22. 제 20 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것의 일부로서, 상기 하나 이상의 프로세서들이 추정된 확률 값들에 따라 상기 빈 스트림의 상기 다음 빈에 대한 상기 FSM 파라미터들을 수정하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  23. 제 20 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것의 일부로서, 상기 하나 이상의 프로세서들이 과거 확률 변동의 측정치에 기초하여 상기 다음 빈에 대한 상기 FSM 파라미터들을 수정하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  24. 제 23 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 과거 확률 변동의 측정치가,

    로서 정의된 특정 빈에 대한 추정 변동 측정치를 이용하여 추정된 확률들 사이의 절대 차이들을 합산함으로써 계산되도록 구성되며,
    여기서, σ[k+1] 는 상기 빈 스트림의 상기 다음 빈에 대한 상기 추정 변동 측정치이고, σ[k] 는 상기 특정 빈에 대한 추정 변동 측정치이며, q1[k] 는 상기 특정 빈에 대한 제 1 확률 추정치이고, q2[k] 는 상기 특정 빈에 대한 제 2 확률 추정치이며, c 는 파라미터인, 비디오 데이터를 디코딩하기 위한 장치.
  25. 제 20 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것의 일부로서, 상기 하나 이상의 프로세서들이 동일 프레임 또는 이전에 디코딩된 프레임에서의 하나 이상의 이웃하는 블록들에 기초하여 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들을 결정하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  26. 삭제
  27. 제 20 항에 있어서,
    상기 빈 스트림의 개개의 각각의 빈에 대해, 상기 하나 이상의 프로세서들은, 상기 각각의 빈의 값을 결정하는 것의 일부로서, 상기 하나 이상의 프로세서들이,
    상기 각각의 빈에 대한 상태에 기초하여, 상기 각각의 빈에 대한 간격을 제 1 심볼과 연관된 간격과 제 2 심볼과 연관된 간격으로 분할하고; 그리고
    상기 오프셋 값이 상기 제 1 심볼과 연관된 간격 또는 상기 제 2 심볼과 연관된 간격에 있는지 여부에 기초하여 상기 각각의 빈의 값을 결정하도록
    구성되며,
    상기 오프셋 값이 상기 제 1 심볼과 연관된 간격 내에 있다고 결정하는 것에 응답하여, 상기 각각의 빈의 값은 상기 제 1 심볼과 동일하고, 그리고
    상기 오프셋 값이 상기 제 2 심볼과 연관된 간격 내에 있다고 결정하는 것에 응답하여, 상기 각각의 빈의 값은 상기 제 2 심볼과 동일한, 비디오 데이터를 디코딩하기 위한 장치.
  28. 제 20 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 비트스트림을 수신하도록 더 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  29. 제 20 항에 있어서,
    상기 빈 스트림의 제 1 빈에 대한 상기 하나 이상의 FSM 파라미터들은 상기 빈 스트림의 제 2 빈에 대한 상기 하나 이상의 FSM 파라미터들과는 상이한, 비디오 데이터를 디코딩하기 위한 장치.
  30. 제 20 항에 있어서,
    상기 장치는,
    집적 회로,
    마이크로프로세서, 또는
    무선 통신 디바이스
    를 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  31. 비디오 데이터를 인코딩하기 위한 장치로서,
    상기 장치는,
    비디오 데이터를 저장하도록 구성된 하나 이상의 저장 매체; 및
    상기 하나 이상의 저장 매체에 커플링된 하나 이상의 프로세싱 회로들을 포함하고,
    상기 하나 이상의 프로세싱 회로들은,
    상기 비디오 데이터에 기초하여 신택스 엘리먼트를 생성하고;
    상기 신택스 엘리먼트에 이진 산술 인코딩을 적용하는 것에 의해, 오프셋 값을 결정하는 것으로서, 하나 이상의 프로세서들은, 상기 이진 산술 인코딩을 적용하는 것의 일부로서, 상기 하나 이상의 프로세서들이, 적어도 부분적으로,
    상기 신택스 엘리먼트를 이진화하는 것; 및
    빈 스트림의 적어도 하나의 각각의 빈에 대해,
    상기 각각의 빈에 대한 상태, 상기 각각의 빈에 대한 간격, 및 상기 각각의 빈의 값에 기초하여 상기 빈 스트림의 다음 빈에 대한 간격을 결정하는 것;
    상기 빈 스트림의 상기 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들은 상기 다음 빈에 대한 확률 추정치들이 어떻게 상기 각각의 빈에 대한 상태로부터 계산되는지를 제어하는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것; 및
    상기 각각의 빈에 대한 상기 상태, 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들, 및 상기 각각의 빈의 상기 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것으로서, 상기 하나 이상의 프로세서들은, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것의 일부로서, 상기 하나 이상의 프로세서들이,
    다음의 식들:

    에 따라 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하도록 구성되며,
    여기서, p[k+1] 은 상기 빈 스트림의 상기 다음 빈에 대한 상태이고, p[k] 는 상기 각각의 빈에 대한 상태이며, b[k] 는 상기 각각의 빈의 값이고, a 는 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 1 파라미터이고, b 는 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 2 파라미터인, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것
    에 의해, 상기 빈 스트림을 생성하도록 구성되고,
    상기 오프셋 값은 상기 빈 스트림의 마지막 빈에 대한 간격에서의 값과 동일한, 상기 오프셋 값을 결정하는 것을 행하며; 그리고
    상기 오프셋 값을 포함하는 비트스트림을 출력하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치.
  32. 제 31 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것의 일부로서, 상기 하나 이상의 프로세서들이 상태 재초기화 파라미터에 따라 상기 빈 스트림의 상기 다음 빈에 대한 상기 FSM 파라미터들을 재초기화하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치.
  33. 제 31 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것의 일부로서, 상기 하나 이상의 프로세서들이 추정된 확률 값들에 따라 상기 빈 스트림의 상기 다음 빈에 대한 상기 FSM 파라미터들을 수정하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치.
  34. 제 31 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것의 일부로서, 상기 하나 이상의 프로세서들이 과거 확률 변동의 측정치에 기초하여 상기 빈 스트림의 상기 다음 빈에 대한 상기 FSM 파라미터들을 수정하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치.
  35. 제 34 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 과거 확률 변동의 측정치가,

    로서 정의된 특정 빈에 대한 추정 변동 측정치를 이용하여 추정된 확률들 사이의 절대 차이들을 합산함으로써 계산되도록 구성되며,
    여기서, σ[k+1] 는 상기 빈 스트림의 상기 다음 빈에 대한 상기 추정 변동 측정치이고, σ[k] 는 상기 특정 빈에 대한 추정 변동 측정치이며, q1[k] 는 상기 특정 빈에 대한 제 1 확률 추정치이고, q2[k] 는 상기 특정 빈에 대한 제 2 확률 추정치이며, c 는 파라미터인, 비디오 데이터를 인코딩하기 위한 장치.
  36. 제 31 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 빈 스트림의 다음 빈에 대한 하나 이상의 FSM 파라미터들을 결정하는 것의 일부로서, 상기 하나 이상의 프로세서들이 동일 프레임 또는 이전에 디코딩된 프레임에서의 하나 이상의 이웃하는 블록들에 기초하여 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들을 결정하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치.
  37. 삭제
  38. 제 31 항에 있어서,
    상기 빈 스트림의 개개의 각각의 빈에 대해, 상기 하나 이상의 프로세서들은, 상기 빈 스트림의 상기 다음 빈에 대한 간격을 결정하는 것의 일부로서, 상기 하나 이상의 프로세서들이,
    상기 각각의 빈에 대한 상태에 기초하여, 상기 각각의 빈에 대한 간격을 제 1 심볼과 연관된 간격과 제 2 심볼과 연관된 간격으로 분할하고; 그리고
    상기 각각의 빈의 값이 상기 제 1 심볼과 동일한지 또는 상기 제 2 심볼과 동일한지 여부에 기초하여, 상기 다음 빈에 대한 간격의 상위 한계 또는 하위 한계 중 하나를 설정하도록 구성되며,
    상기 각각의 빈의 값이 상기 제 1 심볼과 동일하다고 결정하는 것에 응답하여, 상기 다음 빈에 대한 간격의 상기 상위 한계는 상기 제 1 심볼과 연관된 상기 간격의 상위 한계로 설정되고 상기 다음 빈에 대한 상기 간격의 상기 하위 한계는 변경되지 않으며,
    상기 각각의 빈의 값이 상기 제 2 심볼과 동일하다고 결정하는 것에 응답하여, 상기 다음 빈에 대한 간격의 상기 하위 한계는 상기 제 2 심볼과 연관된 상기 간격의 하위 한계로 설정되고 상기 다음 빈에 대한 상기 간격의 상기 상위 한계는 변경되지 않는, 비디오 데이터를 인코딩하기 위한 장치.
  39. 제 31 항에 있어서,
    상기 빈 스트림의 제 1 빈에 대한 상기 하나 이상의 FSM 파라미터들은 상기 빈 스트림의 제 2 빈에 대한 상기 하나 이상의 FSM 파라미터들과는 상이한, 비디오 데이터를 인코딩하기 위한 장치.
  40. 제 31 항에 있어서,
    상기 장치는,
    집적 회로,
    마이크로프로세서, 또는
    무선 통신 디바이스
    를 포함하는, 비디오 데이터를 인코딩하기 위한 장치.
  41. 비디오 데이터를 디코딩하기 위한 장치로서,
    상기 장치는,
    비트스트림에 포함된 오프셋 값에 이진 산술 디코딩을 적용하는 것에 의해, 디코딩된 신택스 엘리먼트를 결정하는 수단으로서, 상기 이진 산술 디코딩을 적용하는 것은,
    빈 스트림을 생성하는 것으로서, 상기 빈 스트림을 생성하는 것은,
    상기 빈 스트림의 적어도 하나의 각각의 빈에 대해,
    상기 각각의 빈에 대한 상태, 상기 각각의 빈에 대한 간격, 및 상기 오프셋 값에 기초하여 상기 각각의 빈의 값을 결정하는 것;
    상기 빈 스트림의 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들은 상기 다음 빈에 대한 확률 추정치들이 어떻게 상기 각각의 빈에 대한 상태로부터 계산되는지를 제어하고, 상기 빈 스트림의 상기 다음 빈은 상기 빈 스트림에서 상기 각각의 빈을 뒤따르는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것; 및
    상기 각각의 빈에 대한 상기 상태, 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들, 및 상기 각각의 빈의 상기 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것으로서, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것은,
    다음의 식들:

    에 따라 상기 다음 빈에 대한 상태를 결정하는 것을 포함하고,
    여기서, p[k+1] 은 상기 빈 스트림의 상기 다음 빈에 대한 상태이고, p[k] 는 상기 각각의 빈에 대한 상태이며, b[k] 는 상기 각각의 빈의 값이고, a 는 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 1 파라미터이고, b 는 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 2 파라미터인, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것
    을 포함하는, 상기 빈 스트림을 생성하는 것; 및
    상기 디코딩된 신택스 엘리먼트를 형성하기 위해 상기 빈 스트림을 이진화해제하는 것
    을 포함하는, 상기 디코딩된 신택스 엘리먼트를 결정하는 수단; 및
    상기 디코딩된 신택스 엘리먼트에 부분적으로 기초하여 상기 비디오 데이터의 픽처를 재구성하는 수단을 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  42. 비디오 데이터를 인코딩하기 위한 장치로서,
    상기 장치는,
    상기 비디오 데이터에 기초하여 신택스 엘리먼트를 생성하는 수단;
    적어도 부분적으로, 상기 신택스 엘리먼트에 이진 산술 인코딩을 적용하는 것에 의해, 오프셋 값을 결정하는 수단으로서, 상기 이진 산술 인코딩을 적용하는 것은, 적어도 부분적으로,
    상기 신택스 엘리먼트를 이진화하는 것; 및
    빈 스트림의 적어도 하나의 각각의 빈에 대해,
    상기 각각의 빈에 대한 상태, 상기 각각의 빈에 대한 간격, 및 상기 각각의 빈의 값에 기초하여 상기 빈 스트림의 다음 빈에 대한 간격을 결정하는 것;
    상기 빈 스트림의 상기 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들은 상기 다음 빈에 대한 확률 추정치들이 어떻게 상기 각각의 빈에 대한 상태로부터 계산되는지를 제어하는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것; 및
    상기 각각의 빈에 대한 상기 상태, 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들, 및 상기 각각의 빈의 상기 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것으로서, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것은,
    다음의 식들:

    에 따라 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것을 포함하고,
    여기서, p[k+1] 은 상기 빈 스트림의 상기 다음 빈에 대한 상태이고, p[k] 는 상기 각각의 빈에 대한 상태이며, b[k] 는 상기 각각의 빈의 값이고, a 는 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 1 파라미터이고, b 는 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 2 파라미터인, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것
    에 의해, 상기 빈 스트림을 생성하는 것을 포함하고,
    상기 오프셋 값은 상기 빈 스트림의 마지막 빈에 대한 간격에서의 값과 동일한, 상기 오프셋 값을 결정하는 수단; 및
    상기 오프셋 값을 포함하는 비트스트림을 출력하는 수단을 포함하는, 비디오 데이터를 인코딩하기 위한 장치.
  43. 명령들을 저장하는 컴퓨터 판독가능 저장 매체로서, 상기 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금,
    비트스트림에 포함된 오프셋 값에 이진 산술 디코딩을 적용하는 것에 의해, 디코딩된 신택스 엘리먼트를 결정하는 것으로서, 상기 하나 이상의 프로세서들로 하여금 상기 이진 산술 디코딩을 적용하게 하는 것의 일부로서, 상기 명령들의 실행은 상기 하나 이상의 프로세서들로 하여금,
    빈 스트림을 생성하는 것으로서, 상기 하나 이상의 프로세서들로 하여금 상기 빈 스트림을 생성하는 것의 일부로서, 상기 명령들의 실행은 상기 하나 이상의 프로세서들로 하여금,
    상기 빈 스트림의 적어도 하나의 각각의 빈에 대해,
    상기 각각의 빈에 대한 상태, 상기 각각의 빈에 대한 간격, 및 상기 오프셋 값에 기초하여 상기 각각의 빈의 값을 결정하게 하고;
    상기 빈 스트림의 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들은 상기 다음 빈에 대한 확률 추정치들이 어떻게 상기 각각의 빈에 대한 상태로부터 계산되는지를 제어하고, 상기 빈 스트림의 상기 다음 빈은 상기 빈 스트림에서 상기 각각의 빈을 뒤따르는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것을 행하게 하며; 그리고
    상기 각각의 빈에 대한 상기 상태, 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들, 및 상기 각각의 빈의 상기 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하게 하는 것으로서, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것은,
    다음의 식들:

    에 따라 상기 다음 빈에 대한 상태를 결정하는 것을 포함하고,
    여기서, p[k+1] 은 상기 빈 스트림의 상기 다음 빈에 대한 상태이고, p[k] 는 상기 각각의 빈에 대한 상태이며, b[k] 는 상기 각각의 빈의 값이고, a 는 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 1 파라미터이고, b 는 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 2 파라미터인, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하게 하는, 상기 빈 스트림을 생성하는 것을 행하게 하고; 그리고
    상기 디코딩된 신택스 엘리먼트를 형성하기 위해 상기 빈 스트림을 이진화해제하게 하는, 상기 디코딩된 신택스 엘리먼트를 결정하는 것을 행하게 하며; 그리고
    상기 디코딩된 신택스 엘리먼트에 부분적으로 기초하여 비디오 데이터의 픽처를 재구성하게 하는, 컴퓨터 판독가능 저장 매체.
  44. 명령들을 저장하는 컴퓨터 판독가능 저장 매체로서, 상기 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금,
    비디오 데이터에 기초하여 신택스 엘리먼트를 생성하게 하고;
    상기 신택스 엘리먼트에 이진 산술 인코딩을 적용하는 것에 의해, 오프셋 값을 결정하는 것으로서, 하나 이상의 프로세서들로 하여금 상기 이진 산술 인코딩을 적용하게 하는 것의 일부로서, 상기 명령들의 실행은 상기 하나 이상의 프로세서들로 하여금, 적어도 부분적으로, 상기 하나 이상의 프로세서들로 하여금,
    상기 신택스 엘리먼트를 이진화하게 하고; 그리고
    빈 스트림의 적어도 하나의 각각의 빈에 대해,
    상기 각각의 빈에 대한 상태, 상기 각각의 빈에 대한 간격, 및 상기 각각의 빈의 값에 기초하여 상기 빈 스트림의 다음 빈에 대한 간격을 결정하게 하고;
    상기 빈 스트림의 상기 다음 빈에 대한 하나 이상의 유한 상태 머신 (FSM) 파라미터들을 결정하는 것으로서, 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들은 상기 다음 빈에 대한 확률 추정치들이 어떻게 상기 각각의 빈에 대한 상태로부터 계산되는지를 제어하는, 상기 하나 이상의 FSM 파라미터들을 결정하는 것을 행하게 하며; 그리고
    상기 각각의 빈에 대한 상기 상태, 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들, 및 상기 각각의 빈의 상기 값을 입력으로서 취하는 파라미터화된 상태 업데이팅 함수를 이용하여 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것으로서, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것은,
    다음의 식들:

    에 따라 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것을 포함하고,
    여기서, p[k+1] 은 상기 빈 스트림의 상기 다음 빈에 대한 상태이고, p[k] 는 상기 각각의 빈에 대한 상태이며, b[k] 는 상기 각각의 빈의 값이고, a 는 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 1 파라미터이고, b 는 상기 빈 스트림의 상기 다음 빈에 대한 상기 하나 이상의 FSM 파라미터들의 제 2 파라미터인, 상기 빈 스트림의 상기 다음 빈에 대한 상태를 결정하는 것을 행하게 함으로써,
    상기 빈 스트림을 생성하게 하고,
    상기 오프셋 값은 상기 빈 스트림의 마지막 빈에 대한 간격에서의 값과 동일한, 상기 오프셋 값을 결정하는 것을 행하게 하며; 그리고
    상기 오프셋 값을 포함하는 비트스트림을 출력하게 하는, 컴퓨터 판독가능 저장 매체.
KR1020197030906A 2017-03-22 2018-03-22 파라미터화된 확률 추정 유한 상태 머신들을 이용한 이진 산술 코딩 KR102600727B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201762474919P 2017-03-22 2017-03-22
US62/474,919 2017-03-22
US201762475609P 2017-03-23 2017-03-23
US62/475,609 2017-03-23
US15/927,753 US10554988B2 (en) 2017-03-22 2018-03-21 Binary arithmetic coding with parameterized probability estimation finite state machines
US15/927,753 2018-03-21
PCT/US2018/023754 WO2018175716A1 (en) 2017-03-22 2018-03-22 Binary arithmetic coding with parameterized probability estimation finite state machines

Publications (2)

Publication Number Publication Date
KR20190128224A KR20190128224A (ko) 2019-11-15
KR102600727B1 true KR102600727B1 (ko) 2023-11-09

Family

ID=63583805

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197030906A KR102600727B1 (ko) 2017-03-22 2018-03-22 파라미터화된 확률 추정 유한 상태 머신들을 이용한 이진 산술 코딩

Country Status (9)

Country Link
US (1) US10554988B2 (ko)
EP (1) EP3603062B1 (ko)
KR (1) KR102600727B1 (ko)
CN (1) CN110419216B (ko)
AU (1) AU2018237342B2 (ko)
BR (1) BR112019019170A2 (ko)
ES (1) ES2878325T3 (ko)
SG (1) SG11201907259YA (ko)
WO (1) WO2018175716A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3629581A1 (en) * 2015-10-13 2020-04-01 Samsung Electronics Co., Ltd. Method and device for encoding or decoding image
DE102017204946A1 (de) * 2017-03-23 2018-09-27 Volkswagen Aktiengesellschaft Verfahren zur Bestimmung eines Wertes einer Integer-Skalierung in einer Verknüpfung von Eingangsmengen zu Ausgangsmengen und Computerprogrammprodukt
US10791341B2 (en) 2017-10-10 2020-09-29 Qualcomm Incorporated Binary arithmetic coding with progressive modification of adaptation parameters
US10939115B2 (en) 2018-06-19 2021-03-02 Qualcomm Incorporated Efficient weighted probability estimation for binary arithmetic coding
JP2022523287A (ja) * 2019-03-11 2022-04-22 インターデジタル ヴイシー ホールディングス, インコーポレイテッド 通常コード化ビンの数の削減
CN118200586A (zh) * 2019-06-11 2024-06-14 北京三星通信技术研究有限公司 模型更新方法、装置、电子设备及计算机可读存储介质
CN111147083B (zh) * 2019-12-10 2023-06-27 中国航空工业集团公司成都飞机设计研究所 一种时间信息压缩传输的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016196287A1 (en) * 2015-05-29 2016-12-08 Qualcomm Incorporated Advanced arithmetic coder

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009031648A1 (ja) * 2007-09-06 2009-03-12 Nec Corporation 映像符号化装置、映像復号装置、映像符号化方法、映像復号方法、映像符号化あるいは復号プログラム
WO2010146782A1 (ja) * 2009-06-19 2010-12-23 三菱電機株式会社 算術符号化装置、算術復号装置、算術符号化方法及び算術復号方法
HUE039299T2 (hu) * 2010-09-09 2018-12-28 Fraunhofer Ges Forschung Entrópia kódolási és dekódolási séma
US8768080B2 (en) * 2011-01-04 2014-07-01 Blackberry Limited Coding of residual data in predictive compression
US9379736B2 (en) * 2011-06-03 2016-06-28 Qualcomm Incorporated Context-adaptive coding video data
LT3343781T (lt) * 2011-06-16 2022-03-10 Ge Video Compression, Llc Konteksto inicijavimas entropinio kodavimo metu
KR102106534B1 (ko) 2011-06-28 2020-05-04 삼성전자주식회사 엔트로피 부호화/복호화 방법 및 장치
US9871537B2 (en) * 2011-10-27 2018-01-16 Qualcomm Incorporated Mapping states in binary arithmetic coder for video coding
US9363510B2 (en) 2012-03-02 2016-06-07 Qualcomm Incorporated Scan-based sliding window in context derivation for transform coefficient coding
CN103227924B (zh) * 2013-05-07 2016-08-03 北京大学 一种算术编码器及编码方法
US10791341B2 (en) 2017-10-10 2020-09-29 Qualcomm Incorporated Binary arithmetic coding with progressive modification of adaptation parameters

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016196287A1 (en) * 2015-05-29 2016-12-08 Qualcomm Incorporated Advanced arithmetic coder

Also Published As

Publication number Publication date
KR20190128224A (ko) 2019-11-15
ES2878325T3 (es) 2021-11-18
EP3603062A1 (en) 2020-02-05
US10554988B2 (en) 2020-02-04
SG11201907259YA (en) 2019-10-30
BR112019019170A2 (pt) 2020-04-14
AU2018237342A1 (en) 2019-08-29
US20180278946A1 (en) 2018-09-27
EP3603062B1 (en) 2021-05-26
WO2018175716A1 (en) 2018-09-27
CN110419216A (zh) 2019-11-05
AU2018237342B2 (en) 2022-06-02
CN110419216B (zh) 2021-12-17

Similar Documents

Publication Publication Date Title
US20220094969A1 (en) Image prediction method and apparatus
KR102600727B1 (ko) 파라미터화된 확률 추정 유한 상태 머신들을 이용한 이진 산술 코딩
JP6779918B2 (ja) 高度算術コーダ
CN111183647B (zh) 用于解码视频数据的方法、装置和计算机可读媒体
WO2018119247A1 (en) Low-complexity sign prediction for video coding
CN112514386B (zh) 网格编解码量化系数编解码
TW201711467A (zh) 使用一全文自適應二進位算術寫碼設計來寫碼資料
JP2015508617A (ja) 映像の符号化における係数の符号化
JP2017523685A (ja) イントラブロックコピーイングのためのブロックベクトルコーディング
JP2016511975A (ja) イントラ予測のためのモード決定の簡略化
US20130177070A1 (en) Significance map support for parallel transform coefficient processing in video coding
CN111316642B (zh) 信令图像编码和解码划分信息的方法和装置
JP2017513329A (ja) 非自然ビデオデータの動き推定のための方法
CN112352430B (zh) 用于二进制算术编码的有效加权概率估计
CN115623212A (zh) 对比特流进行子划分区间的方法和电子装置
JP2023164983A (ja) パレットモードを使用するビデオコーディングの方法及び装置

Legal Events

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