KR20130140190A - 마지막 유효 계수의 위치를 코딩 및 디코딩하는 방법 및 장치 - Google Patents

마지막 유효 계수의 위치를 코딩 및 디코딩하는 방법 및 장치 Download PDF

Info

Publication number
KR20130140190A
KR20130140190A KR1020137030056A KR20137030056A KR20130140190A KR 20130140190 A KR20130140190 A KR 20130140190A KR 1020137030056 A KR1020137030056 A KR 1020137030056A KR 20137030056 A KR20137030056 A KR 20137030056A KR 20130140190 A KR20130140190 A KR 20130140190A
Authority
KR
South Korea
Prior art keywords
context
locations
decoding
encoding
bin
Prior art date
Application number
KR1020137030056A
Other languages
English (en)
Other versions
KR101571618B1 (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 KR20130140190A publication Critical patent/KR20130140190A/ko
Application granted granted Critical
Publication of KR101571618B1 publication Critical patent/KR101571618B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

양자화된 변환 영역 계수 데이터를 인코딩하기 위해 엔트로피 코더를 사용하여 데이터를 엔트로피 코딩하는 방법 및 장치가 기술되어 있다. 마지막 유효 계수에 대한 2차원 좌표를 사용하여 마지막 유효 계수 정보가 비트스트림에서 신호된다. 좌표들 중 하나의 좌표의 빈들에 대한 컨텍스트가 좌표들 중 다른 하나의 좌표의 값에 부분적으로 기초한다. 한 경우에, 마지막 유효 계수 정보를 신호하는 대신에, 영이 아닌 계수들의 수가 이진화되고 엔트로피 인코딩된다.

Description

마지막 유효 계수의 위치를 코딩 및 디코딩하는 방법 및 장치 {METHODS AND DEVICES FOR CODING AND DECODING THE POSITION OF THE LAST SIGNIFICANT COEFFICIENT}
본 출원은 일반적으로 데이터 압축에 관한 것으로서, 상세하게는, 마지막 유효 변환 계수(last significant transform coefficient)를 코딩 및 디코딩하는 인코더, 디코더 및 방법에 관한 것이다.
데이터 압축은, 손실 압축이든 무손실 압축이든, 역상관된 신호를 비트 시퀀스로서(즉, 비트스트림) 인코딩하기 위해 엔트로피 코딩(entropy coding)을 종종 사용한다. 효율적인 데이터 압축은 영상, 오디오 및 비디오 인코딩 등의 매우 다양한 응용들을 가진다. 종래의 비디오 인코딩 기술은 ITU-T H.264/MPEG AVC 비디오 코딩 표준이다. 이 표준은 메인 프로파일(Main profile), 베이스라인 프로파일(Baseline profile) 및 기타를 비롯한, 상이한 응용들에 대한 다수의 상이한 프로파일들을 정의한다. 차세대 비디오 인코딩 표준은 MPEG-ITU의 공동 발의(joint initiative)를 통해 현재 개발 중에 있다: HEVC(High Efficiency Video Coding, 고효율 비디오 코딩).
이진 데이터를 생성하기 위해 손실 압축 프로세스를 이용하는, 영상 및 비디오를 인코딩/디코딩하는 다수의 표준들(H.264를 포함함)이 있다. 예를 들어, H.264는 잔차 데이터(residual data)를 획득하는 예측 동작, 및 그에 뒤이은 DCT 변환 및 DCT 계수들의 양자화를 포함하고 있다. 양자화된 계수, 움직임 벡터, 코딩 모드, 및 기타 관련 데이터를 포함하는 얻어진 데이터는 이어서 엔트로피 코딩되어, 전송하기 위한 또는 컴퓨터 판독가능 매체 상에 저장하기 위한 데이터 비트스트림을 발생한다. HEVC도 역시 이 특징들을 가질 것으로 예상된다.
이진 데이터를 인코딩하기 위해 다수의 코딩 방식들이 개발되었다. 예를 들어, JPEG 영상이 허프만 코드(Huffman code)를 사용하여 인코딩될 수 있다. H.264 표준은 다음과 같은 2가지 가능한 엔트로피 코딩 프로세스를 가능하게 해준다: CAVLC(Context Adaptive Variable Length Coding, 컨텍스트 적응적 가변 길이 코딩) 또는 CABAC(Context Adaptive Binary Arithmetic Coding, 컨텍스트 적응적 이진 산술 코딩). CABAC는 CAVLC보다 더 많은 압축을 가져오지만, CABAC는 더 많은 계산을 요구한다. 이 경우들 중 임의의 경우에서, 코딩 방식은 이진 데이터를 처리하여 인코딩된 데이터의 직렬 비트스트림을 생성한다. 디코더에서, 디코딩 방식은 비트스트림을 검색하고, 직렬 비트스트림을 엔트로피 디코딩하여 이진 데이터를 재구성한다.
개선된 인코더, 디코더, 및 엔트로피 코딩 및 디코딩 방법을 제공하는 것이 유익할 것이다.
이제부터, 예로서, 본 출원의 예시적인 실시예들을 도시하고 있는 첨부 도면들을 참조할 것이다.
도 1은 비디오를 인코딩하는 인코더를 블록도 형태로 나타낸 도면.
도 2는 비디오를 디코딩하는 디코더를 블록도 형태로 나타낸 도면.
도 3은 인코딩 프로세스의 블록도.
도 4는 인코더의 예시적인 실시예의 간략화된 블록도.
도 5는 디코더의 예시적인 실시예의 간략화된 블록도.
도 6은 4x4 계수 블록에 대한 지그재그 코딩 순서를 나타낸 도면.
도 7은 비트스트림의 일부분을 개략적으로 나타낸 도면.
도 8은 마지막 유효 계수 정보를 엔트로피 인코딩하는 예시적인 방법을 플로우차트 형태로 나타낸 도면.
도 9는 양자화된 변환 영역 계수 데이터를 재구성하기 위해 인코딩된 데이터의 비트스트림을 엔트로피 디코딩하는 예시적인 방법을 플로우차트 형태로 나타낸 도면.
도 10은 유의성 맵(significance map)을 인코딩하는 예시적인 방법을 플로우차트 형태로 나타낸 도면.
도 11은 4x4 블록에서의 계수들의 반대각 그룹화(anti-diagonal grouping)를 나타낸 도면.
유사한 구성요소들을 나타내기 위해 상이한 도면들에서 유사한 참조 번호들이 사용될 수 있다.
본 출원은 이진 데이터를 인코딩 및 디코딩하는 장치, 방법 및 프로세스를 기술하고 있다. 상세하게는, 본 출원은 블록 기반 코딩 방식(block-based coding scheme)에서 마지막 유효 계수 위치를 코딩 및 디코딩하는 방법 및 장치를 기술하고 있다.
한 측면에서, 본 출원은 마지막 유효 계수 정보를 포함하는 양자화된 변환 영역 계수 데이터를 인코딩하는 방법을 기술하고 있다. 이 방법은 마지막 유효 계수의 2차원 좌표들의 2개의 위치들 각각을 이진화하는 단계; 위치들 중 하나의 위치의 각각의 빈(bin)에 대한 컨텍스트(context)를 결정하는 단계; 위치들 중 다른 하나의 위치의 각각의 빈에 대한 컨텍스트를 결정하는 단계 - 위치들 중 다른 하나의 위치의 각각의 빈의 컨텍스트는 위치들 중 상기 하나의 위치에 부분적으로 기초함 -; 및 인코딩된 데이터를 생성하기 위해, 이진화된 위치들의 각각의 빈에 대해 결정된 컨텍스트에 기초하여, 이진화된 위치들을 엔트로피 인코딩하는 단계를 포함한다.
다른 측면에서, 본 출원은, 양자화된 변환 영역 계수 데이터를 재구성하기 위해, 인코딩된 데이터의 비트스트림을 디코딩하는 방법을 기술하고 있다. 이 방법은, 마지막 유효 계수의 2차원 좌표들을 정의하는 2개의 이진화된 위치들을 생성하기 위해, 인코딩된 데이터의 일부분을 엔트로피 디코딩하는 단계 - 데이터의 일부분을 엔트로피 디코딩하는 단계는 위치들 중 하나의 위치의 각각의 빈에 대한 컨텍스트를 결정하는 단계, 및 위치들 중 다른 하나의 위치의 각각의 빈에 대한 컨텍스트를 결정하는 단계를 포함하고, 위치들 중 다른 하나의 위치의 각각의 빈의 컨텍스트는 위치들 중 상기 하나의 위치에 부분적으로 기초함 -; 마지막 유효 계수의 2차원 좌표들에 기초하여, 유효 계수 시퀀스(significant coefficient sequence)를 엔트로피 디코딩하는 단계; 유효 계수 시퀀스에 기초하여, 레벨 정보(level information)를 엔트로피 디코딩하는 단계; 및 레벨 정보 및 유효 계수 시퀀스를 사용하여 양자화된 변환 영역 계수 데이터를 재구성하는 단계를 포함한다.
또 다른 측면에서, 본 출원은, 실행될 때, 프로세서로 하여금 기술된 인코딩 및/또는 디코딩 방법을 수행하도록 구성되어 있는 컴퓨터 실행가능 프로그램 명령어를 저장하는 컴퓨터 판독가능 매체를 기술하고 있다.
기술 분야의 당업자라면 첨부 도면들과 관련한 예들에 대한 이하의 설명을 검토함으로써 본 출원의 다른 측면들 및 특징들을 잘 알 것이다.
이하의 설명은 일반적으로 데이터 압축에 관한 것으로서, 상세하게는, 이진 소스(binary source) 등의 유한 알파벳 소스(finite alphabet source)의 효율적인 인코딩 및 디코딩에 관한 것이다. 이하에 주어지는 다수의 예들에서, 이러한 인코딩 및 디코딩 방식의 특정의 응용들이 주어져 있다. 예를 들어, 이하의 다수의 예시들은 비디오 코딩을 언급하고 있다. 본 출원이 비디오 코딩 또는 영상 코딩으로 꼭 제한될 필요는 없다는 것을 잘 알 것이다. 이는 블록 기반이고 블록에서의 마지막 유효 비트 또는 심볼의 위치를 신호하는 것을 포함하는 컨텍스트 기반 데이터 인코딩 방식의 적용을 받는 임의의 유형의 데이터에 적용가능할 수 있다.
본 명세서에 기술되어 있는 예시적인 실시예들은 유한 알파벳 소스의 데이터 압축에 관한 것이다. 그에 따라, 이 설명은 알파벳의 요소들인 "심볼들"을 종종 언급한다. 어떤 경우에, 본 명세서에서의 설명에서는 이진 소스를 언급하고, 심볼을 비트라고 한다. 때때로, 용어 "심볼" 및 "비트"는 주어진 예에 대해 서로 바꾸어 사용될 수 있다. 이진 소스가 유한 알파벳 소스의 한 예에 불과하다는 것을 잘 알 것이다. 본 출원은 이진 소스로 제한되지 않는다.
이하의 설명에서, 예시적인 실시예는 H.264 표준을 참조하여 기술되어 있다. 기술 분야의 당업자라면 본 출원이 H.264로 제한되지 않고 HEVC 등의 가능한 장래의 표준들을 포함한 다른 비디오 코딩/디코딩 표준들에 적용가능할 수 있다는 것을 잘 알 것이다. 또한, 본 출원이 비디오 코딩/디코딩으로 꼭 제한될 필요는 없고 임의의 유한 알파벳 소스의 코딩/디코딩에 적용가능할 수 있다는 것을 잘 알 것이다.
이제부터, 비디오를 인코딩하는 인코더(10)를 블록도 형태로 도시하고 있는 도 1을 참조한다. 또한, 비디오를 디코딩하는 디코더(50)의 블록도를 도시하고 있는 도 2를 참조한다. 본 명세서에 기술되어 있는 인코더(10) 및 디코더(50) 각각이 하나 이상의 처리 요소 및 메모리를 포함하는 특정 용도(application- specific) 또는 범용(general purpose) 컴퓨팅 장치 상에 구현될 수 있다는 것을 잘 알 것이다. 인코더(10) 또는 디코더(50)에 의해 수행되는 동작들은, 경우에 따라, 예를 들어, ASIC(application-specific integrated circuit)을 통해, 또는 범용 프로세서에 의해 실행가능한 저장된 프로그램 명령어를 통해 구현될 수 있다. 장치는, 예를 들어, 기본적인 장치 기능들을 제어하는 운영 체제를 포함하는 부가의 소프트웨어를 포함할 수 있다. 기술 분야의 당업자가 이하의 설명에 살펴보면 인코더(10) 또는 디코더(50)가 구현될 수 있는 장치들 및 플랫폼들의 범위를 잘 알 것이다.
인코더(10)는 비디오 소스(12)를 수신하고, 인코딩된 비트스트림(14)을 생성한다. 디코더(50)는 인코딩된 비트스트림(14)을 수신하고, 디코딩된 비디오 프레임(16)을 출력한다. 인코더(10) 및 디코더(50)는 다수의 비디오 압축 표준들에 따라 동작하도록 구성되어 있을 수 있다. 예를 들어, 인코더(10) 및 디코더(50)는 H.264/AVC 호환일 수 있다. 다른 실시예에서, 인코더(10) 및 디코더(50)는 HEVC 등의 H.264/AVC 표준의 발전들을 포함한 다른 비디오 압축 표준들을 준수할 수 있다.
인코더(10)는 공간 예측기(21), 코딩 모드 선택기(20), 변환 처리기(22), 양자화기(24), 및 엔트로피 코더(26)를 포함하고 있다. 기술 분야의 당업자라면 잘 알 것인 바와 같이, 코딩 모드 선택기(20)는 비디오 소스에 대한 적절한 코딩 모드, 예를 들어, 대상 프레임/슬라이스가 I, P 또는 B 유형인지, 및 프레임/슬라이스 내의 특정의 매크로블록(또는 코딩 단위)가 인터-코딩되는지 인트라-코딩되는지를 결정한다. 변환 처리기(22)는 공간 영역 데이터에 대해 변환을 수행한다. 상세하게는, 변환 처리기(22)는 공간 영역 데이터를 스펙트럼 성분들로 변환하기 위해 블록 기반 변환을 적용한다. 예를 들어, 많은 실시예들에서, DCT(discrete cosine transform, 이산 코사인 변환)가 사용된다. 어떤 경우에, 이산 사인 변환(discrete sine transform) 등과 같은 다른 변환들이 사용될 수 있다. 블록 기반 변환을 픽셀 데이터 블록에 적용하면 한 세트의 변환 영역 계수들이 얻어진다. 이 한 세트의 변환 영역 계수들은 양자화기(24)에 의해 양자화된다. 양자화된 계수들 및 연관된 정보(움직임 벡터, 양자화 파라미터, 기타 등등)는 이어서 엔트로피 코더(26)에 의해 인코딩된다.
인트라-코딩된 프레임/슬라이스(즉, 유형 I)는 다른 프레임들/슬라이스들을 참조하여 인코딩된다. 환언하면, 이들은 시간 예측을 이용하지 않는다. 그렇지만, 인트라-코딩된 프레임들은, 도 1에 예시된 바와 같이, 공간 예측기(21)에 의해 프레임/슬라이스 내에서의 공간 예측에 의존한다. 즉, 특정의 블록을 인코딩할 때, 블록 내의 데이터는 그 프레임/슬라이스에 대해 이미 인코딩된 블록들 내의 근방의 픽셀들의 데이터와 비교될 수 있다. 예측 알고리즘을 사용하여, 블록의 소스 데이터는 잔차 데이터로 변환될 수 있다. 변환 처리기(22)는 이어서 잔차 데이터를 인코딩한다. H.264는, 예를 들어, 4x4 변환 블록에 대한 9개의 공간 예측 모드를 규정하고 있다. 어떤 실시예들에서, 9개의 모드 각각은 블록을 독립적으로 처리하는 데 사용될 수 있고, 이어서 레이트-왜곡 최적화(rate-distortion optimization)는 최상의 모드를 선택하는 데 사용된다.
H.264 표준은 또한 시간 예측을 이용하기 위해 움직임 예측/보상을 사용하는 것을 규정하고 있다. 그에 따라, 인코더(10)는 역양자화기(28), 역변환 처리기(30), 및 역블록화 처리기(32)를 포함하는 피드백 루프를 가진다. 이 요소들은 프레임/슬라이스를 재생하기 위해 디코더(50)에 의해 구현되는 디코딩 프로세스를 반영하고 있다. 프레임 저장소(34)는 재생된 프레임들을 저장하는 데 사용된다. 이러한 방식으로, 움직임 예측은, 인코딩/디코딩에 수반되는 손실 압축으로 인해 재구성된 프레임과 상이할지도 모르는 원래의 프레임이 아니라, 디코더(50)에서 재구성될 것에 기초하고 있다. 움직임 예측기(36)는 프레임 저장소(34)에 저장되어 있는 프레임/슬라이스를, 유사한 블록을 식별하기 위해 현재의 프레임과 비교하기 위한 소스 프레임/슬라이스로서 사용한다. 그에 따라, 움직임 예측이 적용되는 매크로블록에 대해, 변환 처리기(22)가 인코딩하는 "소스 데이터"는 움직임 예측 프로세스로부터 나오는 잔차 데이터이다. 잔차 데이터는 참조 블록과 현재 블록 사이의 차이(있는 경우)를 나타내는 픽셀 데이터이다. 참조 프레임 및/또는 움직임 벡터에 관한 정보는 변환 처리기(22) 및/또는 양자화기(24)에 의해 처리되지 않을 수 있고, 그 대신에, 양자화된 계수와 함께 비트스트림의 일부로서 인코딩하기 위해 엔트로피 코더(26)에 제공될 수 있다.
기술 분야의 당업자라면 H.264 인코더를 구현하기 위한 상세 및 가능한 변형례들을 잘 알 것이다.
디코더(50)는 엔트로피 디코더(52), 역양자화(54), 역변환 처리기(56), 공간 보상기(57), 및 역블록화 처리기(60)를 포함하고 있다. 프레임 버퍼(58)는 움직임 보상기(62)에서 움직임 보상을 적용하는 데 사용하기 위한 재구성된 프레임들을 제공한다. 공간 보상기(57)는 이전에 디코딩된 블록으로부터 특정의 인트라-코딩된 블록에 대한 비디오 데이터를 복원하는 동작을 나타낸다.
양자화된 계수들을 복원하기 위해, 비트스트림(14)이 엔트로피 디코더(52)에 의해 수신되고 디코딩된다. 엔트로피 디코딩 프로세스 동안, 보조 정보(side information)도 역시 복원될 수 있고, 그 중 일부는, 적용가능한 경우, 움직임 보상에서 사용하기 위해 움직임 보상 루프에 제공될 수 있다. 예를 들어, 엔트로피 디코더(52)는 인터-코딩된 매크로블록에 대한 움직임 벡터 및/또는 참조 프레임 정보를 복원할 수 있다.
양자화된 계수들은 이어서 변환 영역 계수들을 생성하기 위해 역양자화기(54)에 의해 역양자화되고, 변환 영역 계수들은 이어서 역변환 처리기(56)에 의해 역변환되어 "비디오 데이터"를 재생성한다. 인트라-코딩된 매크로블록에서와 같은 어떤 경우에, 재생성된 "비디오 데이터"가 프레임 내의 이전에 디코딩된 블록에 대한 공간 보상에서 사용하기 위한 잔차 데이터라는 것을 잘 알 것이다. 공간 보상기(57)는 이전에 디코딩된 블록으로부터의 잔차 데이터 및 픽셀 데이터로부터 비디오 데이터를 발생한다. 인터-코딩된 매크로블록 등의 다른 경우에, 역변환 처리기(56)로부터의 재생성된 "비디오 데이터"는 상이한 프레임으로부터의 참조 블록에 대한 움직임 보상에서 사용하기 위한 잔차 데이터이다. 공간 보상 및 움직임 보상 둘 다를, 본 명세서에서, "예측 동작"이라고 할 수 있다.
움직임 보상기(62)는 특정의 인터-코딩된 매크로블록에 대해 지정된 참조 블록을 프레임 버퍼(58) 내에서 찾아낸다. 움직임 보상기(62)는 인터-코딩된 매크로블록에 대해 지정된 참조 프레임 정보 및 움직임 벡터에 기초하고 그렇게 한다. 움직임 보상기(62)는 이어서 그 매크로블록에 대한 재생성된 비디오 데이터에 도달하기 위해 잔차 데이터와 결합하기 위한 참조 블록 픽셀 데이터를 제공한다.
역블록화 처리기(60)로 나타낸 바와 같이, 역블록화 프로세스가 이어서 재구성된 프레임/슬라이스에 적용될 수 있다. 역블록화 이후에, 프레임/슬라이스는, 예를 들어, 디스플레이 장치 상에 디스플레이하기 위한 디코딩된 비디오 프레임(16)으로서 출력된다. 컴퓨터, 셋톱 박스, DVD 또는 블루레이 플레이어 등의 비디오 재생 기계, 및/또는 모바일 핸드헬드 장치가, 출력 장치 상에 디스플레이하기 위해, 디코딩된 프레임들을 메모리에 버퍼링할 수 있다는 것을 잘 알 것이다.
엔트로피 코딩은 앞서 기술한 비디오 압축을 포함한 모든 무손실 및 손실 압축 방식들의 기본적인 부분이다. 엔트로피 코딩의 목적은 아마도 역상관된 신호(종종 독립적이지만 동일한 분포를 갖지 않은 프로세스에 의해 모델링됨)를 비트 시퀀스로서 나타내기 위한 것이다. 이것을 달성하는 데 사용되는 기법은 역상관된 신호가 어떻게 발생되었는지에 의존해서는 안되고, 나오게 될 각각의 심볼에 대한 관련 확률 추정에 의존할 수 있다.
실제로 사용되는 엔트로피 코딩에 대한 다음과 같은 2가지 통상적인 방식이 있다: 첫번째 것은 코드워드(codeword)로 입력 심볼 또는 입력 시퀀스를 식별하는 가변 길이 코딩이고, 두번째 것은 단일 구간에 도달하기 위해 [0, 1) 구간의 서브구간들(subintervals)의 시퀀스를 캡슐화하는 범위(또는 산술) 코딩이고, 그로부터 원래의 시퀀스가 그 구간들을 정의한 확률 분포들을 사용하여 재구성될 수 있다. 통상적으로, 범위 코딩 방법은 더 나은 압축을 제공하는 경향이 있는 반면, VLC 방법은 보다 빠를 가능성을 가지고 있다. 어느 경우든지, 입력 시퀀스의 심볼들은 유한 알파벳으로부터 온 것이다.
엔트로피 코딩의 특수한 경우는 입력 알파벳이 이진 심볼로 제한될 때이다. 여기서, VLC 방식은 압축할 가능성을 갖도록 입력 심볼들을 그룹화해야만 하지만, 확률 분포가 각각의 비트 후에 변할 수 있기 때문에, 효율적인 코드 구성이 어렵다. 그에 따라, 범위 인코딩은 그의 보다 많은 유연성으로 인해 보다 큰 압축을 갖는 것으로 생각되지만, 실제의 응용은 산술 코드의 보다 많은 계산 요구에 의해 방해를 받는다.
이 인코딩 방식들 둘 다에 대한 공통적인 문제는 이들이 사실상 직렬적(serial)이라는 것이다. 고품질 비디오 디코딩 등의 어떤 중요한 실제 응용에서, 엔트로피 디코더는 아주 높은 출력 속도에 도달해야만 하며, 이는 제한된 처리 능력 또는 속도를 갖는 장치에 대한 문제를 제기할 수 있다.
CAVLC 및 CABAC(둘 다가 H.264/AVC에서 사용됨) 등의 어떤 엔트로피 코딩 방식들과 함께 사용되는 기법들 중 하나는 컨텍스트 모델링(context modeling)이다. 컨텍스트 모델링에서, 입력 시퀀스의 각각의 비트는 컨텍스트를 가지며, 여기서 컨텍스트는 그에 앞서 있는 비트들 등의 다른 비트들의 어떤 서브셋, 또는 보조 정보, 또는 둘 다에 의해 주어질 수 있다. 1차 컨텍스트 모델(first-order context model)에서, 컨텍스트는 전적으로 이전의 비트(심볼)에 의존할 수 있다. 많은 경우에, 컨텍스트 모델은 적응적일 수 있고, 따라서 시퀀스의 추가의 비트들이 처리됨에 따라 주어진 컨텍스트에 대한 심볼들과 연관되어 있는 확률이 변할 수 있다. 또 다른 경우에, 주어진 비트의 컨텍스트는 시퀀스에서의 그의 위치[예컨대, 계수들의 행렬 또는 블록에서의 계수의 위치 또는 순위(ordinal)]에 의존할 수 있다.
예시적인 인코딩 프로세스(100)의 블록도를 도시하고 있는 도 3을 참조한다. 인코딩 프로세스(100)는 컨텍스트 모델링 구성요소(104) 및 엔트로피 코더(106)를 포함하고 있다. 컨텍스트 모델링 구성요소(104)는 입력 시퀀스 x(102) - 이 예에서, 비트 시퀀스 (b0, b1, …, bn)임 - 를 수신한다. 이 예시적인 예시에서, 컨텍스트 모델링 구성요소(104)는 아마도 시퀀스에서의 하나 이상의 이전 비트들에 기초하여 또는 보조 정보에 기초하여 각각의 비트 bi에 대한 컨텍스트를 결정하고, 이 컨텍스트에 기초하여, 그 비트 bi와 연관되어 있는 확률 pi를 결정하며, 여기서 이 확률은 비트가 LPS(Least Probable Symbol)일 확률이다. 규약 또는 응용에 따라, LPS는, 이진 실시예에서, "0" 또는 "1"일 수 있다. 확률을 결정하는 것은 그 자체가 그 동일한 컨텍스트에 대한 이전의 비트들/심볼들에 의존할 수 있다.
컨텍스트 모델링 구성요소는 입력 시퀀스, 즉 비트들 (b0, b1, …, bn)을 그 각자의 확률들 (p0, p1, ..., pn)과 함께 출력한다. 이 확률들은 컨텍스트 모델에 의해 결정되는 추정된 확률이다. 이 데이터는 이어서 확률 정보를 사용하여 입력 시퀀스를 인코딩하는 엔트로피 코더(106)에 입력된다. 예를 들어, 엔트로피 코더(106)는 이진 산술 코더일 수 있다. 엔트로피 코더(106)는 인코딩된 데이터의 비트스트림(108)을 출력한다.
입력 시퀀스의 각각의 비트가 컨텍스트 모델을 갱신하기 위해 직렬적으로 처리되고, 직렬 비트들(serial bits) 및 확률 정보가 엔트로피 코더(106)에 제공되고, 엔트로피 코더(106)는 이어서 비트들을 직렬적으로 엔트로피 코딩하여 비트스트림(108)을 생성한다는 것을 잘 알 것이다. 기술 분야의 당업자라면, 어떤 실시예들에서, 명확한 확률 정보가 컨텍스트 모델링 구성요소(104)로부터 엔트로피 코더(106)로 전달되지 않을 수 있고; 오히려, 어떤 경우에, 각각의 비트에 대해, 컨텍스트 모델링 구성요소(104)가 컨텍스트 모델 및 입력 시퀀스(102)의 현재의 컨텍스트에 기초하여 컨텍스트 모델링 구성요소(104)에 의해 행해지는 확률 추정을 반영하는 인덱스 또는 기타 표시자를 엔트로피 코더(106)로 송신할 수 있다는 것을 잘 알 것이다. 인덱스 또는 기타 표시자는 그의 대응하는 비트와 연관되어 있는 확률 추정치를 나타낸다.
어떤 실시예들에서, 엔트로피 코더(106)는 입력 시퀀스(102)를 인코딩하는 병렬 처리 구조를 가질 수 있다. 이러한 실시예에서, 엔트로피 코더(106)는 각각이 입력 시퀀스(102)의 일부분을 처리하는 복수의 엔트로피 코더들을 포함할 수 있다. 어떤 경우에, 입력 시퀀스는 디멀티플렉싱되고, 각자의 비트들과 연관되어 있는 추정된 확률들에 기초하여, 병렬 엔트로피 코더들 간에 할당될 수 있다. 환언하면, 입력 시퀀스(102)로부터의 비트는, 그의 추정된 확률에 기초하여, 병렬 엔트로피 코더들 중 하나에 할당된다.
디코더에서, 인코딩된 비트스트림이 정반대 프로세스를 사용하여 디코딩된다. 상세하게는, 디코더는, 재구성된 시퀀스의 그 다음의 재구성된 심볼의 컨텍스트를 결정하기 위해, 동일한 컨텍스트 모델링 및 확률 추정 프로세스를 수행한다. 그 다음의 재구성된 심볼에 대해 결정된 컨텍스트에 기초하여, 추정된 확률이 결정된다. 디코딩된 심볼들을 획득하기 위해, 엔트로피 코더(들)에 의해 출력된 코드워드들로 이루어져 있을 수 있는 인코딩된 비트스트림이 디코딩된다. 그 추정 확률들에 대응하는 디코딩된 심볼들을 획득하기 위해, 컨텍스트/확률을 결정하는 것은 코드워드들을 디코딩하는 것과 인터리빙되어 있다.
병렬 인코딩 실시예에서, 디코더는 인코딩된 비트스트림을 복수의 디코딩된 서브시퀀스들(decoded subsequences) - 각각이 추정된 확률과 연관되어 있음 - 로 디멀티플렉싱하도록 구성되어 있을 수 있다. 컨텍스트 모델링 및 확률 추정의 결과, 이어서 연관된 디코딩 서브시퀀스로부터 재구성된 심볼이 선택된다. 이러한 구현예에서, 인코딩된 비트스트림의 디코딩이 컨텍스트 모델링 및 확률 추정으로부터 역인터리빙(de-interleave)되는 것으로 간주될 수 있다는 것을 잘 알 것이다.
이하의 상세한 설명으로부터, 본 출원이 직렬 또는 병렬 엔트로피 코딩 및 디코딩에 적용가능하다는 것을 잘 알 것이다.
본 출원은 마지막 유효 계수 위치가 인코딩되고 위치의 축들 중 하나의 축의 컨텍스트가 다른 축에 의존하는 인코딩 및 디코딩 프로세스를 제안한다.
이하의 예들은 특정하여 비디오 인코딩, 상세하게는, ITU-T H.264/AVC 표준에 규정되어 있는 바와 같이 CABAC에 정의되어 있는 시퀀스들 sig[i, j] 및 last[i, j]의 인코딩을 언급할 수 있다. 본 출원이 CABAC 내에서의 이 2개의 특정의 시퀀스들의 인코딩 및 디코딩으로 제한되지 않고 비디오 인코딩 및 디코딩 또는 H.264/AVC 표준으로도 제한되지 않는다는 것을 잘 알 것이다. 본 출원은 비디오, 영상, 및, 어떤 경우에, 오디오를 포함한 기타 데이터 시퀀스에 적용될 수 있는 인코딩 및 디코딩 방법 및 프로세스를 기술하고 있다. 본 명세서에서의 방법 및 프로세스는 마지막 유효 계수 위치를 인코딩하고 위치가 2차원이거나 2차원으로서 모델링될 수 있는 컨텍스트 모델을 수반하는 인코딩 및 디코딩 프로세스에 적용가능하다. 이하의 예들은 예로서 이진 소스를 언급할 수 있지만, 본 출원은 보다 일반적으로 임의의 유한 알파벳 소스에 적용가능하다.
앞서 기술된 바와 같이, 예시적인 비디오 및 영상 인코딩 및 디코딩 프로세스는, 잔차 데이터를 픽셀 영역(pixel domain)으로부터 변환 영역(transform domain)으로 변환하기 위해, 블록 기반 변환을 이용한다. 예시적인 블록 기반 변환은 4x4 DCT 또는 8x8 DCT이다. 어떤 응용에서는, 다른 크기 또는 유형의 변환(DST 또는 DFT 등)이 사용될 수 있다. 변환 데이터의 행렬 또는 집합이 이어서 양자화기에 의해 양자화되어, 양자화된 변환 영역 계수들의 행렬 또는 집합을 생성한다. 본 출원은 양자화된 변환 영역 계수들의 행렬을, 계수들 중 임의의 계수의 위치가 2차원 좌표 [x,y]에 의해 지정될 수 있는 데이터의 순서 집합(ordered set)을 의미하는 행렬, 집합, 또는 블록이라고 지칭할 수 있다.
양자화된 변환 영역 계수들의 블록의 엔트로피 인코딩은 컨텍스트 모델에 기초하고 있다. 예를 들어, H.264/AVC에서, 블록은, 먼저 유의성 맵을 인코딩하는 것에 의해, 엔트로피 인코딩된다. 유의성 맵은 2개의 시퀀스 last[i, j] 및 sig[i, j]를 포함하고 있다. 시퀀스 sig[i, j]는 DCT 블록에서의 각각의 위치에 영이 아닌 계수가 있는지를 나타내는 이진 시퀀스이다. 다른 시퀀스 last[i, j]는 DCT 블록의 영이 아닌 계수들에 매핑되고 그 영이 아닌 계수가 (H.264 및 다른 변환 영역 영상 또는 비디오 인코딩 방식에서 사용되는 지그재그 스캔 순서에서) DCT 블록의 마지막 영이 아닌 계수인지를 나타내는 이진 시퀀스이다. 유의할 점은, 인덱스 [i, j]가 블록에서의 2차원 좌표 위치가 아니고; 인덱스 i는 블록에 대한 인덱스이고 인덱스 j는 이하에서 기술되는 재그재그 스캔 순서에서의 1차원 계수 위치에 대한 인덱스라는 것이다.
H.264 표준은 DCT 블록의 계수들을 인코딩하는 지그재그 스캔 순서를 명시하고 있다. 예를 들어, 4x4 DCT 블록을 참조하면, H.264 표준은 16개의 계수들을 도 6에 예시되어 있는 지그재그 순서로 인코딩한다. 도 6에 도시된 바와 같이, 스캔 순서는 블록의 좌측 상부 코너에서 시작하고 우측 하부 코너로 지그재그 패턴을 따라간다. 이 코딩 순서로 배열되었으면, 제i 블록에 대한 계수들의 얻어진 시퀀스는 X(i, 0), ..., X(i, 15)이다.
H.264/AVC 표준은 블록들이 순차적으로 인코딩되는 방식을 사용한다. 환언하면, 각각의 시퀀스 X(i, 0), ..., X(i, 15)가 차례로 인코딩된다. H.264/AVC에서 사용되는 컨텍스트 모델은 각각의 벡터 X[i, j]에 대한 2개의 이진 시퀀스 sig[i, j] 및 last[i, j]를 결정하는 것을 포함한다. 이어서, 계수들의 실제 값(레벨이라고 함)이 또한 인코딩된다.
예로서 예시하기 위해, 다음과 같은 예시적인 계수 시퀀스 X를 생각해보자:
3, 5, 2, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 i=0
6, 4, 0, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 i=1
4, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 i=2
이 계수 시퀀스들에 대한 시퀀스 sig[i, j] 및 last[i, j]는 다음과 같다:
sig [0, j] = 1, 1, 1,0, 1, 1, 0, 1
last [0, j] = 0, 0, 0, 0, 0, 1
sig[1, j] = 1, 1, 0, 1, 1, 0, 1
last [1, j] = 0, 0, 0, 0, 1
sig [2, j] = 1, 1, 0, 0, 1
last [2, j] = 0, 0, 1
last[i, j]가 sig[i, j]가 영이 아닐 때의 값들만을 포함하고, 양 시퀀스가 마지막 영이 아닌 계수 이후에 종료한다는 것을 잘 알 것이다. 그에 따라, last[i, j]는 sig[i, j]에서의 모든 비트 j에 대한 비트를 꼭 포함하지는 않을 것이다. 이 시퀀스들의 길이가 계수 값들에 따라 변할 수 있다는 것을 잘 알 것이다. 마지막으로, sig[i, j] 시퀀스가 영이 아닌 비트를 포함하는지를 알고 있는 경우, last[i, j] 시퀀스에 대응하는 비트가 있는지 여부 - 이 시퀀스들의 인코딩 및 디코딩이 비트 위치마다 인터리빙된다는 것을 의미함 - 를 알게 될 것임을 잘 알 것이다.
H.264/AVC 예에서, 비트에 대한 확률(때때로 "상태"라고 함)은 그의 컨텍스트에 기초하여 결정된다. 구체적으로는, 그 동일한 컨텍스트에 대한 비트 이력(bit history)이 선택되거나 그 비트에 할당되는 확률을 결정한다. 예를 들어, 주어진 시퀀스에서 j번째 위치에 있는 비트에 대해, 그의 확률은, 이전의 시퀀스들(i-1, 기타 등등)에서의 j번째 위치에 있는 비트들의 이력에 기초하여, 64개의 가능한 확률들 중에서 선택된다.
앞서 기술된 바와 같이, 비트들은 그의 확률에 기초하여 인코딩된다. 어떤 예시적인 실시예에서, 병렬 인코딩이 사용될 수 있고, 어떤 경우에, 병렬 인코딩은 각각의 확률에 관련된 엔트로피 코더를 포함할 수 있다. 다른 예시적인 실시예에서, 직렬 엔트로피 인코딩(serial entropy encoding)이 사용될 수 있다. 어느 경우든지, 엔트로피 코더는 심볼들을 그의 연관된 확률에 기초하여 인코딩한다.
디코더에서, 시퀀스를 재구성하는 데 동일한 컨텍스트 모델링 및 확률 추정이 행해진다. 재구성된 심볼을 획득하기 위해 인코딩된 비트스트림을 디코딩하는 데 확률 추정이 사용된다. 심볼들이 인코딩된 비트스트림의 디코딩된 부분들로부터 선택되고, 재구성된 심볼들의 시퀀스를 심볼들의 연관된 확률 및 컨텍스트 모델에 기초하여 형성하기 위해 인터리빙된다.
CABAC를 사용하는 H.264/AVC에서의 잔차 블록에 대한 구문은 이하의 표에 기재되어 있다:
Figure pct00001
상기 표는 sig[i, j], last[i, j] 및 레벨 정보를 포함하는 비트스트림을 엔트로피 디코딩하는 의사 코드를 제공한다. 기술자(descriptor) "ae(v)"는 표에서 그 행에 나타낸 값들을 획득하기 위해 비트스트림으로부터의 비트들을 엔트로피 디코딩하는 것을 나타낸다.
유의할 점은, 이 구문에서 sig[i, j] 및 last[i, j]의 비트들이 인터리빙된다는 것이다. 예를 들어, "if(coded_block_flag)" 루프는 sig[i, j] 시퀀스로부터의 비트를 디코딩하는 것(significant_coeff_flag[i]라고 함) 및 그에 뒤이어서, significant_coeff_flag[i]가 영이 아닌 경우, last[i, j] 시퀀스로부터의 비트를 디코딩하는 것(last_significant_coeff_flag[i]라고 함)을 포함한다.
또한, 이 구문이 블록에 대한 지그재그 스캔 순서에서의 마지막 유효 계수의 1차원 위치를 신호하기 위해 시퀀스에 의존한다는 것을 잘 알 것이다.
본 출원의 한 측면에 따르면, 블록 내에서의 마지막 유효 계수의 2차원 좌표를 신호하기 위해 이 구문이 수정된다. 예를 들어, 4x4 블록에서, 마지막 유효 계수의 위치는 x-좌표 및 y-좌표를 가지며, 여기서 x 및 y는 0과 3 사이의 범위에 있다. 이 좌표 쌍이 이 구문에서 last[i, j] 시퀀스 대신에 전달될 수 있다.
발생되는 문제는 마지막 유효 계수의 2차원 좌표를 어떻게 효율적이고 효과적으로 코딩하느냐이다. 추가적인 문제는 이 파라미터의 인코딩을 위해 컨텍스트 모델에 대한 수정이 행해져야만 하는지 여부이다.
본 출원의 한 측면에 따르면, 2차원 좌표들이 차례로 인코딩되고, 이 경우 제1 좌표의 값은 제2 좌표를 인코딩하는 것에 대한 컨텍스트를 결정하는 데 부분적으로 사용된다. 이 개념은, 경험적으로 관찰되는 바와 같이, 쌍에 있는 2개의 좌표의 값들 사이에 어느 정도의 상관이 있다는 것에 기초하고 있다. x-좌표의 값은 대응하는 y-좌표에 대한 값의 확률에 중요한 영향을 미치는 경향이 있다. 이 관계는 인코딩의 효율을 향상시키는 데 이용될 수 있다.
본 출원의 한 측면에 따른 일 실시예에서, x-좌표 값 및 y-좌표 값을 이진화하기 위해 고정 길이 코드가 사용된다. 다른 실시예들에서, 다른 이진화 방식들이 사용될 수 있다.
본 출원의 다른 측면에 따르면, 마지막 유효 계수가 [0,0]에서의 DC 계수라는 것을 신호하기 위한 플래그를 포함하기 위해 잔차 블록을 인코딩하는 구문이 추가로 수정된다. 이것은 실제의 구현에서 흔한 일이고, 이 상황이 비트스트림에서 신호될 때, 비트스트림은 그 상황에서 마지막 유효 계수에 대한 x-좌표 값 및 y-좌표 값을 포함하지 않을 수 있고, 그에 의해 압축 효율을 향상시킨다.
본 명세서에서의 설명에서, "위치"라는 용어는, 경우에 따라, x-좌표 또는 y-좌표를 말하는 데 때때로 사용될 수 있다.
이하에 기술되는 예시적인 실시예가 y-위치의 비트들을 인코딩하는 것에 대한 컨텍스트가 x-위치의 값에 부분적으로 의존하는 것을 명시하고 있지만, 그 순서는 임의적이다. 다른 실시예에서, x-위치를 인코딩하는 것에 대한 컨텍스트가 y-위치의 값에 부분적으로 의존할 수 있다.
본 출원의 한 측면에 다른, 잔차 블록을 인코딩하는 구문의 한 예시적인 실시예가 이하의 표에 기재되어 있다:
Figure pct00002
Figure pct00003
상기 의사 코드로부터, 유의할 점은, 디코더가 x-위치(last_pos_x=0) 및 y-위치(last_pos_y=0)에 대한 값들을 초기화하고, 이어서 마지막 유효 계수가 DC 계수라는 것을 신호하는 플래그(last_0_flag)를 판독한다는 것이다. last_0_flag가 마지막 유효 계수가 [0,0]에 있다는 것을 나타내지 않는 경우에만 이 루프가 직후에 수행된다. 그 경우에, 디코더는 이어서 비트스트림으로부터 last_pos_xlast_pos_y에 대한 값들을 판독한다.
또한, 유의할 점은, 이 실시예에서, last_pos_x가 0인 경우, 그 상황에서의 2차원 위치가 플래그 설정으로 인해 [0,0]일 수 없고 따라서 y-위치가 1 이상이어야만 하기 때문에, y-위치가 그의 값을 1만큼 감소시킨 것으로서 인코딩된다는 것이다. 이 인코딩 구문으로 인해, last_pos_x가 0으로 설정되어 있는 경우, last _pos_y에 대한 값은 그의 실제 값으로 복원하기 위해 1만큼 증가된다. 이 특정의 상황에서 last_pos_y를 인코딩을 위해 1만큼 감소시키는 것을 엔트로피 인코딩에서의 효율을 위한 것이다.
2차원 좌표가 판독된 후에, 디코더는 비트스트림으로부터 significant_coeff_flag[i] 시퀀스를 계속하여 판독한다. 인덱스 [i]는 인덱스를 좌표 위치에 매핑하기 위한 지그재그 표를 사용하여 현재의 pos x 및 pos_y 값들을 설정한다. pos_x 및 pos_y 값들이, 각각, last _pos_x 및 last _pos_y 값들과 일치할 때, last_significent_coeff 플래그는 비트별로 significant_coeff_flag[i]로서 판독되는 sig[i, j] 시퀀스를 판독하는 것을 중지시키도록 설정된다.
이제부터, 본 출원의 한 측면에 따라 생성된 비트스트림(200)의 구조를 개략적으로 나타내고 있는 도 7을 참조한다. 도 7에 예시되어 있는 비트스트림(200)의 일부분은 잔차 블록에 관련된 데이터를 나타내고 있다. 비트스트림(200)의 일부분은, 도시된 바와 같이, 엔트로피 인코딩 이전의 또는 엔트로피 디코딩 이후의 비트스트림이다. 엔트로피 인코딩은 CABAC, CAVLC, 또는 기타 컨텍스트 기반 엔트로피 코딩 방식들을 포함할 수 있다.
선두 플래그(leading flag)는 coded_block_flag이다. 이 플래그에 뒤이어서, [0,0]의 마지막 유효 계수 좌표를 신호하는 last_0_flag가 온다. 이어서, last_0_flag가 설정되어 있지 않은 것으로 가정하면, 비트스트림(200)은 last _pos_x 및 last _pos_y 값들을 포함한다. 이들에 뒤이어서, sig[i, j] 시퀀스, 즉 유효 계수 시퀀스가 따라온다. 마지막으로, 비트스트림(200)의 일부분은 레벨 정보를 포함하고 있다. last_0_flag가 설정되어 있는 경우에, last_pos_x, last_pos_y, 및 유효 계수 시퀀스가 생략되어 있다는 것을 잘 알 것이다.
일 실시예에서, last _pos_x 및 last _pos_y 값들이 고정 길이 이진화(fixed-length binarization)를 사용하여 이진화된다. 이들 이진값의 길이는 변환 행렬의 크기, 즉 양자화된 변환 영역 계수들의 블록의 크기에 의존한다.
이제부터, 잔차 블록을 인코딩할 때 마지막 유효 계수 데이터를 인코딩하는 예시적인 방법(300)을 나타내는 도 8을 참조한다. 예시적인 방법(300)은 마지막 유효 계수 좌표를 결정하는 동작(302)을 포함하고 있다. 이들 좌표는, NxN 변환 블록 크기의 경우, 0부터 N-1까지의 범위에 있는 x-좌표 및 y-좌표이다. 이 좌표들은 x-위치 및 y-위치라고 할 수 있다.
동작(304)에서, 2개의 위치들이 이진화된다. 앞서 살펴본 바와 같이, 이 위치들은 고정 길이 이진화를 사용하여 이진화될 수 있다. 이진화된 위치의 길이는 Log2(N)일 수 있다. 다른 실시예들에서, 다른 이진화 방식들이 사용될 수 있다.
이진화된 위치들을 엔트로피 인코딩하는 것은 이진화된 위치들의 각각의 빈에 대한 컨텍스트를 결정하는 것을 포함한다. 그에 따라, 동작(306)에서, 위치들 중 하나의 위치의 각각의 빈에 대한 컨텍스트가 결정된다. 예시적인 실시예의 목적상, x-위치는 인코딩될 첫번째 위치로 간주될 수 있다. 이진화된 x-위치의 각각의 빈에 대한 컨텍스트는 다수의 인자들에 기초할 수 있다. 예를 들어, 일 실시예에서, x-위치의 각각의 빈의 컨텍스트는 변환 행렬의 크기에 기초할 수 있다. x-위치의 이전의 빈들(있는 경우)도 역시 그 x-위치의 후속 빈들에 대한 컨텍스트에 영향을 줄 수 있다.
동작(308)에서, 위치들 중 다른 위치(이 예에서, y-위치)의 각각의 빈에 대한 컨텍스트가 이어서 결정된다. y-위치의 빈들에 대한 컨텍스트를 결정함에 있어서, 이 컨텍스트는 x-위치의 값에 부분적으로 의존한다. y-위치에 대한 빈들에 대한 컨텍스트도 역시 변환 행렬의 크기 및 y-위치에서의 이전 빈들(있는 경우)에 부분적으로 의존할 수 있다.
동작(310)에서, 이진화된 위치들은 이어서 단계(306) 및 단계(308)에서 결정된 바와 같은 그의 연관된 컨텍스트들에 따라 엔트로피 인코딩된다. 엔트로피 인코딩은 CABAC, CAVLC, 또는 임의의 다른 적당한 컨텍스트 기반 엔트로피 인코딩 방식을 포함할 수 있다.
이제부터, 양자화된 변환 영역 계수 데이터를 재구성하기 위해 인코딩된 데이터의 비트스트림을 디코딩하는 방법(400)을 나타내는 플로우차트를 나타내는 도 9를 참조할 것이다. 도 9에 나타내어져 있는 예시적인 방법(400)은 본 명세서에 기술되어 있는 것과 유사한 구문을 사용하여 인코딩된 데이터의 비트스트림을 처리하는 것을 포함한다. 동작(402)에서, 마지막 유효 계수에 대한 2차원 좌표를 정의하는 2개의 이진화된 위치들을 복원하기 위해 비트스트림의 일부분이 엔트로피 디코딩된다. 이 동작은 위치들 중 제1 위치(예를 들어, 일 실시예에서 x-위치)의 각각의 빈에 대한 컨텍스트를 결정하는 것을 포함한다. 그 컨텍스트는, 예를 들어, 변환 행렬의 크기 및 x-위치의 이전에 디코딩된 빈들(있는 경우)에 의존할 수 있다. 각각의 빈에 대한 컨텍스트, 따라서 연관되어 있는 추정된 확률에 기초하여, 비트스트림의 엔트로피 디코딩은 그 빈을 결정하고, 그 결과 이진화된 x-위치를 재구성한다.
동작(402)은 다른 위치(이 예에서, y-위치)의 각각의 빈의 컨텍스트를 결정하는 것을 추가로 포함하고 있다. y-위치의 각각의 빈의 컨텍스트는 변환 행렬의 크기 및 y-위치의 이전의 빈들(있는 경우)에 의존할 수 있지만, 게다가 x-위치의 값에도 의존한다. 각각의 빈에 대한 결정된 컨텍스트 및 그 결과의 추정된 확률에 따른 비트스트림의 엔트로피 디코딩의 결과, 이진화된 y-좌표가 재구성된다.
동작(404)에서, 비트스트림으로부터 유효 계수 시퀀스를 엔트로피 디코딩하기 위해 x-위치 및 y-위치가 사용된다. 동작(406)에서, 엔트로피 디코딩을 사용하여 비트스트림으로부터 레벨 정보가 복원된다. 동작(408)에서 양자화된 변환 영역 계수 데이터를 재구성하기 위해 유효 계수 시퀀스 및 레벨 정보 모두가 사용된다.
한 예시적인 구현예에서, x-위치의 빈들에 대한 컨텍스트(2차원 좌표의 인코딩될 첫번째 것인 경우)는 다음과 같이 주어진다:
ctxIdxInc = binCtxOffset + binCtxInc
이 표현식에서, ctxIdxInc는 last _pos_x의 주어진 빈에 대한 컨텍스트 인덱스이다. 변수 binCtxOffset은 변환 크기에 기초한 컨텍스트 오프셋이다. 일 실시예에서, 오프셋은 이하의 표에 따라 결정된다:
Figure pct00004
이 예에서, log2TrafoSize는 변환 행렬 크기의 이진 로그, 즉 log2(N)이다.
상기 컨텍스트 인덱스에 대한 표현식에서의 다른 변수는 last_pos_x에서의 이전의 빈들(있는 경우)의 값들에 기초하여 적용되는 컨텍스트 인덱스 증분(context index increment)을 나타내는 binCtxInc이다. binCtxInc 변수는, 예를 들어, 이하의 표에 따라 결정될 수 있다:
Figure pct00005
이 예에서, binIdx는 last pos_x에서의 빈의 인덱스이고, b0 및 b1은, 각각, 인덱스 0 및 인덱스 1에서의 last_pos_x 이진 시퀀스에서의 빈들이다.
한 예시적인 실시예에서, last_pos_y의 빈들에 대한 컨텍스트는 하기의 표현식에 따라 결정될 수 있다:
ctxIdxInc = binCtxOffsetO + 3*binCtxOffset1 + binCtxInc
이 경우에, last_pos_y의 빈에 대한 컨텍스트는 변환 행렬의 크기, last_pos_y의 이전의 빈들(있는 경우), 및 last_pos_x 값에 의존한다. 구체적으로는, 변환 행렬은, 어떤 실시예들에서, 이하의 표에 따라 결정될 수 있는 변수 binCtxOffset0를 통해 컨텍스트에 영향을 준다:
Figure pct00006
last_pos_y의 디코딩된 빈들은, 어떤 실시예들에서, 이하의 표에 따라 결정될 수 있는 변수 binCtxInc를 통해 컨텍스트에 영향을 줄 수 있다:
Figure pct00007
이 예에서, 유의할 점은, 인덱스 0에 있는 첫번째 빈만이 last_pos_y의 임의의 추가의 빈들에 대한 컨텍스트에 영향을 준다는 것이다.
마지막으로, last_pos_x의 값은 다음과 같이 결정될 수 있는 변수 binCtxOffset1을 통해 last_pos_y의 빈에 대한 컨텍스트에 영향을 줄 수 있다:
last_pos_x == 0인 경우,
binCtxOffset1 = 0
그렇지 않은 경우,
binCtxOffset1 = Floor(Log2(last _pos_x)) + 1
상기 예가 last_pos_y의 빈들에 대한 컨텍스트가 last_pos_x의 값에 의존하는 하나의 예시적인 구현예에 불과하다는 것을 잘 알 것이다. 다양한 다른 구현예들이 특정의 응용에 적합하도록 경험적으로 설계된 특정의 표 및 컨텍스트 오프셋으로 실현될 수 있다는 것을 잘 알 것이다.
컨텍스트 인덱스(context index)의 의미는 양자화 파라미터(quantization parameter, QP)의 값에 의존할 수 있다. 즉, 상이한 QP들을 갖는 동일한 구문을 코딩하기 위해 상이한 컨텍스트들이 사용될 수 있다. 그렇지만, 이들 컨텍스트가 동일한 컨텍스트 인덱스를 공유할 수 있다. 한 예시적인 실시예에서, last_pos_x는 허프만 코드로 코딩될 수 있다. 대응하는 허프만 트리(Huffman tree)는 QP의 값에 의존할 수 있다. last_pos_x의 코딩 빈들에 대한 컨텍스트는 허프만 트리에 의존할 수 있고, 그에 의해 상이한 QP들에서 상이하다. 예를 들어, 하나의 컨텍스트가 각각의 QP에 대해 사용되는 경우, 이 컨텍스트들은 동일한 인덱스 0를 공유할 수 있지만, 상이한 의미를 가질 수 있다.
대안의 구현예에서, 2차원 데카르트 좌표(Cartesian coordinate) x 및 y를 인코딩하는 대신에, 마지막 유효 계수 위치는 계수가 있는 반대각선(anti-diagonal line) 및 그 선에 있는 계수의 상대 위치로 표현된다. 4x4 계수 블록(600)을 개략적으로 나타내고 있는 도 11을 참조한다. 반대각선(602)이 블록(600) 상에 나타내어져 있다. 유의할 점은, 0부터 6까지 인덱싱되어 있는 7개의 반대각선이 있다는 것이다. 선 0 및 선 6은, 각각, x,y 좌표 [0,0] 및 [3,3]에 대응하는 단일의 위치만을 가진다. 다른 반대각선들(602)은, 각각, 2개 내지 4개의 위치를 가진다. 위치들은 스캔 순서의 관례에 따라 인덱싱될 수 있다. 즉, 반대각선들 상의 위치들의 인덱싱은 그의 방향이 라인마다 교번할 수 있다. 그에 따라, 4x4 블록에서의 각각의 좌표의 표현은, 다음과 같이, 반대각선 기반 2차원 좌표 [a, b]로 표현될 수 있다:
[0,0] [1,0] [2,2] [3,0]
[1,1] [2,1] [3,1] [4,2]
[2,0] [3,2] [4,1] [5,0]
[3,3] [4,0] [5,1] [6,0]
유의할 점은, 선 상의 위치에 대한 제2 좌표를 명시할 필요가 없기 때문에, 마지막 위치 [0,0] 및 [6,0]가 그의 반대각선 번호만으로 인코딩될 수 있다는 것이다.
[a, b] 값들은 2차원 좌표 x 및 y에 대해 앞서 기술한 것과 유사한 방식으로 인코딩될 수 있다. 반대각선 인덱스 a에 대한 코딩된 빈들의 총수는 log2(2N-1)이다. 선 상의 계수의 위치 b에 대한 코딩된 빈들의 수는 값 a에 의존하고, a < N에 대해서는 1+log2(a)이고 a≥N에 대해서는 1+log2(2(N-1)-a)이다. 각각의 빈을 인코딩/디코딩하는 것에 대한 컨텍스트는 이전의 인코딩된/디코딩된 빈들의 값에 기초한다.
한 다른 대안의 구현예에서, 마지막 유효 계수 위치에 대한 2차원 좌표를 인코딩하기보다는, 인코더는 계수 스캔 순서를 참작하여 마지막 유효 위치에 대한 1차원 좌표를 인코딩한다. 계수 스캔 순서는 H.264에서는 지그재그 순서로, 또는 다른 변환 영역 영상 또는 비디오 인코딩 방식들에서 사용되는 임의의 적응적 또는 비적응적 스캔 순서로 되어 있을 수 있다. 이 구현예에서, last_pos_x 및 last_pos_y 대신에, 인코더는 0부터 (N*N-1)(단, N은 변환 영역 계수들의 블록의 크기임)까지의 범위에 있는 last_pos만을 인코딩한다. last_0_flag가 구문에서 사용되는 경우, last_pos에 대한 범위는 0을 포함할 필요가 없다. 어떤 경우에, last_pos는 자동으로 감소될 수 있고, 따라서 디코더는, 마지막 유효 계수 위치에 대한 실제의 1차원 좌표를 실현하기 위해, last_pos 값에 1을 가산해야만 한다는 것을 알고 있다.
last_pos 값은 2차원 좌표들 중 하나 x에 대해 앞서 기술한 것과 유사한 방식으로 인코딩될 수 있다. 1차원 좌표 last_pos에 대한 코딩된 빈들의 총수는 21og2(N)이다. 각각의 빈을 인코딩/디코딩하는 것에 대한 컨텍스트는 이전의 인코딩된/디코딩된 빈들의 값에 기초한다.
유의할 점은, 예시적인 구현예에서, 2차원(또는 1차원) 마지막 유효 계수 위치에 대한 코딩된 빈들의 최악의 수가 종래의 last[i, j] 시퀀스에 대한 코딩된 빈들의 최악의 수인 N*N보다 훨씬 더 작은 log2(N) 정도이고, 그에 의해 엔트로피 코딩 엔진 구현에서의 복잡도를 감소시킨다.
본 출원의 또 다른 측면에서, 어떤 블록들에 대해서만 앞서 기술한 마지막 위치 인코딩 프로세스를 사용하는 것이 유익할 수 있다. 상세하게는, 이 프로세스는 사전 설정된 수보다 많은 계수들을 가지는 블록에 대해 보다 유익할 수 있다. 적은 수의 계수들을 가지는 블록은 앞서 기술한 종래의 인터리빙 방식의 sig[i, j] 및 last[i, j] 구문을 사용하여 보다 효율적으로 인코딩될 수 있다. 그에 따라, 일 실시예에서, 인코더는 불록에서의 영이 아닌 계수들의 수(NNZ)를 결정하고, NNZ가 문턱값보다 작은 경우, 종래의 구문을 사용하여 sig[i, j] 및 last[i, j] 시퀀스를 인코딩한다. 문턱값은 2, 3 또는 임의의 다른 적당한 값으로 사전 설정될 수 있다. NNZ가 문턱값보다 크거나 같은 경우, 인코더는 앞서 기술한 2차원(또는 1차원) 마지막 유효 계수 위치 인코딩 프로세스를 사용한다.
이 구문은 블록에 대한 NNZ가 문턱값보다 작은지 여부를 디코더에 신호하는 플래그를 포함하도록 구성되어 있을 수 있다. 이것은 또한 어느 유의성 맵 인코딩 프로세스가 인코더에 의해 사용되었는지를 신호한다. 어떤 경우에, last_0_flag가 제거될 수 있는데, 그 이유는 종래의 유의성 맵 인코딩 프로세스에서 DC만 있는 블록(DC only block)을 신호하는 것이 비교적 효율적이기 때문이다.
이제부터, 유의성 맵을 인코딩하는 방법(500)을 간략화된 흐름도 형태로 도시하고 있는 도 10을 참조한다. 양자화된 변환 영역 계수들의 각각의 블록에 대해 방법(500)이 수행된다. 이 방법은 동작(502)에서 블록에서의 NNZ를 결정하는 단계를 포함한다. 동작(504)에서, NNZ가 사전 설정된 문턱값과 비교된다. NNZ가 문턱값 미만인 경우, 인코더는, 동작(506)에 나타낸 바와 같이, 종래의 인터리빙 방식의 유의성 맵 인코딩을 사용한다. NNZ가 문턱값보다 크거나 같은 경우, 동작(508)에서, 인코더는, 앞서 기술한 바와 같이, 마지막 위치 좌표들을 인코딩한다.
이상의 예시적인 방법들이, H.264에 규정된 것과 같은, 유의성 맵을 인코딩 및 디코딩하는 특정의 예시적인 응용을 나타낸 것임을 잘 알 것이다. 본 출원은 그 특정의 예시적인 응용으로 제한되지 않는다.
이제부터, 인코더(900)의 예시적인 실시예의 간략화된 블록도를 도시하고 있는 도 4를 참조한다. 인코더(900)는 프로세서(902), 메모리(904), 및 인코딩 애플리케이션(906)을 포함하고 있다. 인코딩 애플리케이션(906)은 메모리(904)에 저장되어 있고 본 명세서에 기술되어 있는 것과 같은 단계들 또는 동작들을 수행하도록 프로세서(902)를 구성하는 명령어들을 포함하는 컴퓨터 프로그램 또는 애플리케이션을 포함할 수 있다. 예를 들어, 인코딩 애플리케이션(906)은 본 명세서에 기술되어 있는 마지막 유효 계수 위치 인코딩 프로세스에 따라 비트스트림을 인코딩하고 인코딩된 비트스트림을 출력할 수 있다. 인코딩 애플리케이션(906)은, 본 명세서에 기술되어 있는 프로세스들 중 하나 이상의 프로세스를 사용하여, 입력 시퀀스를 엔트로피 인코딩하고 비트스트림을 출력하도록 구성되어 있는 엔트로피 인코더(26)를 포함할 수 있다. 인코딩 애플리케이션(906)이 콤팩트 디스크, 플래시 메모리 장치, 랜덤 액세스 메모리, 하드 드라이브 등과 같은 컴퓨터 판독가능 매체 상에 저장되어 있을 수 있다는 것을 잘 알 것이다.
어떤 실시예들에서, 인코더(900) 내의 프로세서(902)는 인코딩 애플리케이션(906)의 명령어들을 구현하도록 구성되어 있는 단일 처리 유닛일 수 있다. 또한, 어떤 경우에, 인코딩 애플리케이션(906)의 동작들 중 일부 또는 전부 및 하나 이상의 처리 유닛들이 ASIC(application-specific integrated circuit) 등을 통해 구현될 수 있다는 것을 잘 알 것이다.
이제부터, 또한 디코더(1000)의 예시적인 실시예의 간략화된 블록도를 도시하고 있는 도 5를 참조한다. 디코더(1000)는 프로세서(1002), 메모리(1004), 및 디코딩 애플리케이션(1006)을 포함하고 있다. 디코딩 애플리케이션(1006)은 메모리(1004)에 저장되어 있고 본 명세서에 기술되어 있는 것과 같은 단계들 또는 동작들을 수행하도록 프로세서(1002)를 구성하는 명령어들을 포함하는 컴퓨터 프로그램 또는 애플리케이션을 포함할 수 있다. 디코딩 애플리케이션(1006)은 본 명세서에 기술되어 있는 마지막 유효 계수 위치 인코딩 프로세스에 따라 인코딩되어 있는 비트스트림을 수신하고, 본 명세서에 기술된 바와 같이, 비트스트림을 디코딩하기 위해 마지막 유효 계수 위치 컨텍스트 모델링 프로세스를 사용하여 양자화된 변환 영역 계수 데이터를 재구성하도록 구성되어 있는 엔트로피 디코더(1008)를 포함할 수 있다. 디코딩 애플리케이션(1006)이 콤팩트 디스크, 플래시 메모리 장치, 랜덤 액세스 메모리, 하드 드라이브 등과 같은 컴퓨터 판독가능 매체 상에 저장되어 있을 수 있다는 것을 잘 알 것이다.
어떤 실시예들에서, 디코더(1000) 내의 프로세서(1002)는 디코딩 애플리케이션(1006)의 명령어들을 구현하도록 구성되어 있는 단일 처리 유닛일 수 있다. 어떤 다른 실시예들에서, 프로세서(1002)는 명령어들을 병렬로 실행할 수 있는 2개 이상의 처리 유닛을 포함할 수 있다. 다수의 처리 유닛들은 논리적으로 또는 물리적으로 개별적인 처리 유닛들일 수 있다. 또한, 어떤 경우에, 디코딩 애플리케이션(1006)의 동작들 중 일부 또는 전부 및 하나 이상의 처리 유닛들이 ASIC(application-specific integrated circuit) 등을 통해 구현될 수 있다는 것을 잘 알 것이다.
본 출원에 따른 디코더 및/또는 인코더가 서버, 적절히 프로그램된 범용 컴퓨터, 셋톱 텔레비전 박스, 텔레비전 방송 장비, 및 모바일 장치(이들로 제한되지 않음)를 비롯한 다수의 컴퓨팅 장치들에서 구현될 수 있다는 것을 잘 알 것이다. 디코더 또는 인코더는 본 명세서에 기술되어 있는 기능들을 수행하도록 프로세서를 구성하는 명령어들을 포함하는 소프트웨어를 통해 구현될 수 있다. 소프트웨어 명령어들은 CD, RAM, ROM, 플래시 메모리 등을 비롯한 임의의 적당한 컴퓨터 판독가능 메모리에 저장될 수 있다.
본 명세서에 기술되어 있는 인코더 및 디코더 그리고 인코더를 구성하는 기술된 방법/프로세스를 구현하는 모듈, 루틴, 프로세스, 쓰레드, 또는 기타 소프트웨어 구성요소가 표준 컴퓨터 프로그래밍 기법 및 언어를 사용하여 실현될 수 있다는 것을 잘 알 것이다. 본 출원은 특정의 프로세서, 컴퓨터 언어, 컴퓨터 프로그래밍 규약, 데이터 구조, 기타 이러한 구현 상세로 제한되지 않는다. 기술 분야의 당업자라면 기술된 프로세스들이 ASIC(application-specific integrated chip) 등의 일부로서 휘발성 또는 비휘발성 메모리에 저장되어 있는 컴퓨터 실행가능 코드의 일부로서 구현될 수 있다는 것을 잘 알 것이다.
기술된 실시예에 대해 특정의 적응 및 수정이 행해질 수 있다. 따라서, 앞서 논의된 실시예들이 제한적인 것이 아니라 예시적인 것으로 간주된다.

Claims (18)

  1. 마지막 유효 계수 정보(last significant coefficient information)를 포함하는 양자화된 변환 영역 계수 데이터(quantized transform domain coefficient data)를 인코딩하기 위한 방법에 있어서,
    상기 마지막 유효 계수의 2차원 좌표들의 2개의 위치들 각각을 이진화하는 단계;
    상기 위치들 중 하나의 위치의 각각의 빈(bin)에 대한 컨텍스트(context)를 결정하는 단계;
    상기 위치들 중 다른 하나의 위치의 각각의 빈에 대한 컨텍스트를 결정하는 단계 ― 상기 위치들 중 상기 다른 하나의 위치의 각각의 빈의 컨텍스트는 상기 위치들 중 상기 하나의 위치에 부분적으로 기초함 ― ; 및
    인코딩된 데이터를 생성하기 위해, 상기 이진화된 위치들의 빈들 각각에 대해 결정된 컨텍스트에 기초하여, 상기 이진화된 위치들을 엔트로피 인코딩(entropy encoding)하는 단계
    를 포함하는, 양자화된 변환 영역 계수 데이터를 인코딩하기 위한 방법.
  2. 제1항에 있어서,
    상기 이진화하는 단계는 상기 2개의 위치들 각각을 고정 길이 이진 코드(fixed length binary code)로서 인코딩하는 단계를 포함하는 것인, 양자화된 변환 영역 계수 데이터를 인코딩하기 위한 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 위치들 중 다른 하나의 위치의 각각의 빈에 대한 컨텍스트를 결정하는 단계는 상기 결정된 컨텍스트를 명시하는 컨텍스트 인덱스를 계산하는 단계를 포함하고, 상기 컨텍스트 인덱스는 상기 위치들 중 상기 하나의 위치, 변환 블록 크기, 그리고 만약 존재한다면, 상기 위치들 중 상기 다른 하나의 위치에서의 이전의 빈들에 기초하여 계산되는 것인, 양자화된 변환 영역 계수 데이터를 인코딩하기 위한 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 2개의 위치들은 블록 내에서의 x-위치 및 y-위치를 포함하는 것인, 양자화된 변환 영역 계수 데이터를 인코딩하기 위한 방법.
  5. 제1항에 있어서,
    상기 위치들 중 다른 하나의 위치의 각각의 빈에 대한 컨텍스트를 결정하는 단계는 상기 결정된 컨텍스트를 명시하는 컨텍스트 인덱스를 계산하는 단계를 포함하고, 상기 컨텍스트 인덱스는 상기 위치들 중 상기 하나의 위치의 이진 로그(binary logarithm)에 기초하는 것인, 양자화된 변환 영역 계수 데이터를 인코딩하기 위한 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 이진화하는 단계, 각각의 위치의 각각의 빈에 대한 컨텍스트를 결정하는 단계, 및 엔트로피 인코딩하는 단계를 수행하기 이전에, 상기 2차원 좌표가 [0,0]이 아니라고 결정하는 단계를 더 포함하는, 양자화된 변환 영역 계수 데이터를 인코딩하기 위한 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 이진화하는 단계, 상기 위치들 중 하나의 위치의 각각의 빈에 대한 컨텍스트를 결정하는 단계, 및 상기 위치들 중 다른 하나의 위치의 각각의 빈에 대한 컨텍스트를 결정하는 단계 이전에, 상기 양자화된 변환 영역 계수 데이터 내의 영이 아닌(non-zero) 계수들의 수를 카운트하는 단계 및 상기 수가 문턱값을 총족시키거나 초과한다고 결정하는 단계를 더 포함하는, 양자화된 변환 영역 계수 데이터를 인코딩하기 위한 방법.
  8. 양자화된 변환 영역 계수 데이터를 인코딩하기 위한 인코더에 있어서,
    프로세서;
    메모리; 및
    상기 메모리에 저장되고, 제1항 내지 제7항 중 어느 한 항의 방법을 수행함으로써 상기 양자화된 변환 영역 계수 데이터를 인코딩하도록 상기 프로세서를 구성하기 위한 명령어들을 포함하는, 인코딩 애플리케이션
    을 포함하는, 양자화된 변환 영역 계수 데이터를 인코딩하기 위한 인코더.
  9. 양자화된 변환 영역 계수 데이터를 재구성하기 위해, 인코딩된 데이터의 비트스트림을 디코딩하기 위한 방법에 있어서,
    마지막 유효 계수의 2차원 좌표들을 정의하는 2개의 이진화된 위치들을 생성하기 위해, 상기 인코딩된 데이터의 일부분을 엔트로피 디코딩하는 단계 ― 상기 데이터의 일부분을 엔트로피 디코딩하는 단계는,
    상기 위치들 중 하나의 위치의 각각의 빈에 대한 컨텍스트를 결정하는 단계, 및
    상기 위치들 중 다른 하나의 위치의 각각의 빈에 대한 컨텍스트를 결정하는 단계
    를 포함하고, 상기 위치들 중 상기 다른 하나의 위치의 각각의 빈의 컨텍스트는 상기 위치들 중 상기 하나의 위치에 부분적으로 기초함 ― ;
    상기 마지막 유효 계수의 2차원 좌표들에 기초하여, 유효 계수 시퀀스(significant coefficient sequence)를 엔트로피 디코딩하는 단계;
    상기 유효 계수 시퀀스에 기초하여, 레벨 정보(level information)를 엔트로피 디코딩하는 단계; 및
    상기 레벨 정보 및 상기 유효 계수 시퀀스를 사용하여 상기 양자화된 변환 영역 계수 데이터를 재구성하는 단계
    를 포함하는, 인코딩된 데이터의 비트스트림을 디코딩하기 위한 방법.
  10. 제9항에 있어서,
    상기 2개의 이진화된 위치들 각각은 고정 길이 이진 코드를 포함하는 것인, 인코딩된 데이터의 비트스트림을 디코딩하기 위한 방법.
  11. 제9항 또는 제10항에 있어서,
    상기 유효 계수 시퀀스를 엔트로피 디코딩하는 단계는, 상기 마지막 유효 계수의 상기 2차원 좌표를 상기 유효 계수 시퀀스의 끝을 나타내는 1차원 인덱스로 변환하는 단계를 포함하는 것인, 인코딩된 데이터의 비트스트림을 디코딩하기 위한 방법.
  12. 제9항 내지 제11항 중 어느 한 항에 있어서,
    상기 위치들 중 다른 하나의 위치의 각각의 빈에 대한 컨텍스트를 결정하는 단계는 상기 결정된 컨텍스트를 명시하는 컨텍스트 인덱스를 계산하는 단계를 포함하고, 상기 컨텍스트 인덱스는 상기 위치들 중 상기 하나의 위치, 변환 블록 크기, 그리고 만약 존재한다면, 상기 위치들 중 상기 다른 하나의 위치에서의 이전의 빈들에 기초하여 계산되는 것인, 인코딩된 데이터의 비트스트림을 디코딩하기 위한 방법.
  13. 제9항 내지 제12항 중 어느 한 항에 있어서,
    상기 2개의 위치들은 블록 내에서의 x-위치 및 y-위치를 포함하는 것인, 인코딩된 데이터의 비트스트림을 디코딩하기 위한 방법.
  14. 제9항에 있어서,
    상기 위치들 중 다른 하나의 위치의 각각의 빈에 대한 컨텍스트를 결정하는 단계는 상기 결정된 컨텍스트를 명시하는 컨텍스트 인덱스를 계산하는 단계를 포함하고, 상기 컨텍스트 인덱스는 상기 위치들 중 상기 하나의 위치의 이진 로그에 기초하는 것인, 인코딩된 데이터의 비트스트림을 디코딩하기 위한 방법.
  15. 제9항 내지 제14항 중 어느 한 항에 있어서,
    상기 일부분을 디코딩하는 단계 이전에, 제로 플래그(zero flag)를 엔트로피 디코딩하는 단계 및 상기 제로 플래그로부터 상기 2차원 좌표 위치가 [0,0]이 아니라고 결정하는 단계를 더 포함하는, 인코딩된 데이터의 비트스트림을 디코딩하기 위한 방법.
  16. 제9항 내지 제15항 중 어느 한 항에 있어서,
    영이 아닌 계수 플래그(non-zero coefficient flag)를 엔트로피 디코딩하는 단계, 및 상기 영이 아닌 계수 플래그의 값에 기초하여 상기 일부분을 엔트로피 디코딩하는 단계를 수행하는 단계를 더 포함하는, 인코딩된 데이터의 비트스트림을 디코딩하기 위한 방법.
  17. 심볼들의 시퀀스를 재구성하기 위해 인코딩된 데이터의 비트스트림을 디코딩하기 위한 디코더에 있어서,
    상기 심볼들은 유한 알파벳(finite alphabet)에 속하고, 상기 디코더는
    프로세서;
    메모리; 및
    상기 메모리에 저장되고, 제9항 내지 제16항 중 어느 한 항의 방법을 수행함으로써 상기 비트스트림을 디코딩하도록 상기 프로세서를 구성하기 위한 명령어들을 포함하는, 디코딩 애플리케이션
    을 포함하는, 인코딩된 데이터의 비트스트림을 디코딩하는 디코더.
  18. 프로세서에 의해 실행될 때, 상기 프로세서가 제1항 내지 제7항 또는 제9항 내지 제16항 중 어느 한 항의 방법을 실행하도록 구성하는 컴퓨터 실행가능 명령어들을 저장하고 있는, 컴퓨터 판독가능 매체.
KR1020137030056A 2011-04-15 2011-04-15 마지막 유효 계수의 위치를 코딩 및 디코딩하는 방법 및 장치 KR101571618B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CA2011/050200 WO2012139192A2 (en) 2011-04-15 2011-04-15 Methods and devices for coding and decoding the position of the last significant coefficient

Publications (2)

Publication Number Publication Date
KR20130140190A true KR20130140190A (ko) 2013-12-23
KR101571618B1 KR101571618B1 (ko) 2015-11-24

Family

ID=47009749

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137030056A KR101571618B1 (ko) 2011-04-15 2011-04-15 마지막 유효 계수의 위치를 코딩 및 디코딩하는 방법 및 장치

Country Status (5)

Country Link
EP (2) EP2697974B1 (ko)
KR (1) KR101571618B1 (ko)
CN (1) CN103597838B (ko)
CA (1) CA2832086C (ko)
WO (1) WO2012139192A2 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160088086A (ko) * 2015-01-15 2016-07-25 한국전자통신연구원 고속 율-왜곡 최적화 기반 양자화 방법 및 장치
WO2019164250A1 (ko) * 2018-02-20 2019-08-29 삼성전자 주식회사 완전 연결 네트워크의 데이터 입력 및 출력을 제어하는 방법 및 장치
WO2020185005A1 (ko) * 2019-03-12 2020-09-17 엘지전자 주식회사 변환에 기반한 영상 코딩 방법 및 그 장치
KR20210068511A (ko) * 2019-04-04 2021-06-09 텐센트 아메리카 엘엘씨 비디오 코딩을 위한 방법 및 장치
US11496752B2 (en) 2016-07-15 2022-11-08 Interdigital Vc Holdings, Inc. Last coefficient coding for adaptive transform based video compression

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10091529B2 (en) 2010-07-09 2018-10-02 Samsung Electronics Co., Ltd. Method and apparatus for entropy encoding/decoding a transform coefficient
HUE035097T2 (en) 2010-07-09 2018-05-02 Samsung Electronics Co Ltd Equipment for decoding transformation coefficients for entropy
US9215464B2 (en) * 2013-09-19 2015-12-15 Blackberry Limited Coding position data for the last non-zero transform coefficient in a coefficient group
EP3200455B1 (en) * 2016-01-28 2018-09-05 intoPIX Method and device for compression and decompression of binary data
EP3270594A1 (en) * 2016-07-15 2018-01-17 Thomson Licensing Method and apparatus for advanced cabac context adaptation for last coefficient coding
US10506242B2 (en) * 2018-01-30 2019-12-10 Google Llc Efficient context model computation design in transform coefficient coding
US10841595B2 (en) * 2018-11-27 2020-11-17 Semiconductor Components Industries, Llc Methods and apparatus for transform coefficient encoding and decoding
GB2582929A (en) * 2019-04-08 2020-10-14 Canon Kk Residual signalling
CN114071140B (zh) * 2019-12-03 2022-12-23 杭州海康威视数字技术股份有限公司 解码方法、编码方法、装置、设备及机器可读存储介质
US11336893B2 (en) * 2020-01-07 2022-05-17 Qualcomm Incorporated Context derivation and entropy coding initialization parameters for coordinates of last position coding in video coding
WO2024107210A1 (en) * 2022-11-15 2024-05-23 Google Llc Dc only transform coefficient mode for image and video coding

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6856701B2 (en) * 2001-09-14 2005-02-15 Nokia Corporation Method and system for context-based adaptive binary arithmetic coding
ATE343302T1 (de) * 2002-05-02 2006-11-15 Fraunhofer Ges Forschung Kodierung und dekodierung von transformationskoeffizienten in bild- oder videokodierern
KR100776195B1 (ko) * 2005-08-09 2007-11-16 (주)씨앤에스 테크놀로지 빠른 cavlc를 위한 h.264 디코딩 방법
TWI341657B (en) 2007-04-03 2011-05-01 Nat Univ Tsing Hua Cabac decoding method
CN101478672B (zh) * 2008-01-04 2012-12-19 华为技术有限公司 视频编码、解码方法及装置和视频处理系统
US9042440B2 (en) * 2010-12-03 2015-05-26 Qualcomm Incorporated Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160088086A (ko) * 2015-01-15 2016-07-25 한국전자통신연구원 고속 율-왜곡 최적화 기반 양자화 방법 및 장치
US11496752B2 (en) 2016-07-15 2022-11-08 Interdigital Vc Holdings, Inc. Last coefficient coding for adaptive transform based video compression
WO2019164250A1 (ko) * 2018-02-20 2019-08-29 삼성전자 주식회사 완전 연결 네트워크의 데이터 입력 및 출력을 제어하는 방법 및 장치
US11755904B2 (en) 2018-02-20 2023-09-12 Samsung Electronics Co., Ltd. Method and device for controlling data input and output of fully connected network
WO2020185005A1 (ko) * 2019-03-12 2020-09-17 엘지전자 주식회사 변환에 기반한 영상 코딩 방법 및 그 장치
CN113597770A (zh) * 2019-03-12 2021-11-02 Lg 电子株式会社 基于变换的图像编译方法及其装置
CN113597770B (zh) * 2019-03-12 2023-10-27 Lg 电子株式会社 基于变换的图像编译方法及其装置
KR20210068511A (ko) * 2019-04-04 2021-06-09 텐센트 아메리카 엘엘씨 비디오 코딩을 위한 방법 및 장치

Also Published As

Publication number Publication date
KR101571618B1 (ko) 2015-11-24
WO2012139192A2 (en) 2012-10-18
CN103597838B (zh) 2017-03-29
EP2697974B1 (en) 2017-04-12
EP3229473A1 (en) 2017-10-11
EP3229473B1 (en) 2020-11-25
EP2697974A4 (en) 2014-12-24
WO2012139192A3 (en) 2012-12-13
EP2697974A2 (en) 2014-02-19
CN103597838A (zh) 2014-02-19
CA2832086A1 (en) 2012-10-18
CA2832086C (en) 2018-10-23

Similar Documents

Publication Publication Date Title
US10103746B2 (en) Methods and devices for coding and decoding the position of the last significant coefficient
KR101571618B1 (ko) 마지막 유효 계수의 위치를 코딩 및 디코딩하는 방법 및 장치
KR101625548B1 (ko) 변환 계수 레벨 코딩을 위한 컨텍스트 모델링 기술들
US8761240B2 (en) Methods and devices for data compression using context-based coding order
US9270988B2 (en) Method of determining binary codewords for transform coefficients
CA2794771C (en) Methods and devices for reducing sources in binary entropy coding and decoding
EP2533538A2 (en) Method and system to reduce modelling overhead for data compression
WO2012167103A1 (en) Context-adaptive coding video data
WO2014110651A1 (en) Transform coefficient coding for context-adaptive binary entropy coding of video
KR20180030250A (ko) 유효성 맵 코딩의 복잡성 감소
GB2496201A (en) Context adaptive data encoding and decoding
KR101418649B1 (ko) 파티션 선택을 이용한 중요도 맵 인코딩 및 디코딩
US9912968B2 (en) Decoding apparatus capable of controlling repetition number of scan procedure based on at least one syntax element decoding result and related method

Legal Events

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

Payment date: 20181106

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191108

Year of fee payment: 5