KR20150032647A - 계수 그룹 내의 최종 비제로 변환 계수에 대한 코딩 위치 데이터 - Google Patents

계수 그룹 내의 최종 비제로 변환 계수에 대한 코딩 위치 데이터 Download PDF

Info

Publication number
KR20150032647A
KR20150032647A KR20140125291A KR20140125291A KR20150032647A KR 20150032647 A KR20150032647 A KR 20150032647A KR 20140125291 A KR20140125291 A KR 20140125291A KR 20140125291 A KR20140125291 A KR 20140125291A KR 20150032647 A KR20150032647 A KR 20150032647A
Authority
KR
South Korea
Prior art keywords
coefficient
block
current
coefficient group
group
Prior art date
Application number
KR20140125291A
Other languages
English (en)
Other versions
KR101620191B1 (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 KR20150032647A publication Critical patent/KR20150032647A/ko
Application granted granted Critical
Publication of KR101620191B1 publication Critical patent/KR101620191B1/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • 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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/88Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks
    • 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/103Selection of coding mode or of prediction mode
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/423Methods 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 characterised by memory arrangements
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • 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)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

비디오 코딩 방법 및 장치에 대해 개시한다. 변환 블록 내의 그룹 스캔 순서에서 그 최종 그룹 이전의 비제로 계수 그룹(CG)을 인코딩할 때, 그 CG 내의 스캔 순서에서 최종 비제로 변환 계수의 정확한 (x,y) 위치의 데이터 표현이, 코딩 효율을 향상시키기 위해서, (a) 블록을 인코딩하는데 이용된 인프라-예측 모드 및 (b) 그 CG에 이웃하는 적어도 하나의 계수 그룹 중 적어도 하나에 기초하여 수정된다. 그러므로, 인코딩된 CG를 디코딩할 때 수정은 정확한 (x,y) 위치를 찾을 때까지 끝나지 않는다.

Description

계수 그룹 내의 최종 비제로 변환 계수에 대한 코딩 위치 데이터{CODING POSITION DATA FOR THE LAST NON-ZERO TRANSFORM COEFFICIENT IN A COEFFICIENT GROUP}
본 발명은 일반적으로 데이터 압축에 관한 것이며 특히 비디오 인코딩 및 디코딩을 위한 방법들 및 장치들의 개선 사항에 관한 것이다.
데이터 압축은 다수의 콘텍스트들에서 발생한다. 데이터 압축은 정보를 효율적으로 저장, 전송, 및 재생하기 위해 통신 및 컴퓨터 네트워킹에서 아주 일반적으로 사용되고 있다. 특히 그것은 이미지, 오디오 및 비디오의 인코딩에서의 애플리케이션에서 찾을 수가 있다. 비디오는 인코딩 및 디코딩이 종종 발생할 필요가 있는 각각의 비디오 프레임 및 속도에 대해서 필요한 대용량의 데이터로 인해 데이터 압축에 대한 현저한 도전을 보여주고 있다.
오디오 및 비디오 코딩 표준(AVS) 워크그룹은 중국에서 이용하기 위한 오디오 코딩, 비디오 코딩, 및 트랜스포트 프로토콜을 규정하고 있다. 이 문서를 위해 AVS는 AVS 워크그룹이 규정한 비디오 코딩 스펙의 제1 버전을 언급하고 있고, AVS2는 AVS 워크그룹에 의해 현재 개발 중인 비디오 코딩 스펙의 제2 버전을 언급하고 있다. 여기서 사용되는 용어 "코딩"은 인코딩 및 디코딩 양자를 포괄하는 용어이다.
AVS 및 AVS2를 포함하는 대부분의 코딩 표준들은 블록 기반의 코딩 처리들을 사용한다. 이 처리들에서 이미지 또는 프레임은 블록들, 전형적으로 4×4 혹은 8×8 블록으로 구획되는데 일부 넌스퀘어 블록들이 사용가능하며, 블록들은 계수들로 스펙트럼 변환, 양자화, 및 엔트로피 인코딩된다. 대부분의 경우, 변환되는 데이터는 실제의 픽셀 데이터가 아니라 예측 연산 다음의 잔여 데이터(residual data)이다. 예측은 인트라 프레임(intra-frame), 즉 프레임/이미지 내의 블록 투 블록(block-to-block) 혹은 인터프레임(inter-frame), 즉 프레임간(between frame)(또한 모션 예측이라 불리는)일 수가 있다.
데이터를 압축하기 위해 양자화 변환 계수들의 코딩이 압축을 향상하기 위한 변환 특성들을 이용하도록 설계된다. AVS의 경우, 쿼드러플 시퀀스, 즉 레벨, 런(run), 부호(sign), 엔드 오프 블록(EOB) 플래그를 이용하여 코딩된다. 그 코딩은 변환 블록에서 지그재그 스캔 순서로 최종 비제로 계수에서 시작하여 역지그재그 방향으로 진행된다(EOB 플래그를 위한 요건).
레벨 마이너스 원 앤드 런 데이터가 단항 이진화(unary binarization)를 이용하여 이진화되며 다음에 빈(bin)들이 콘텍스트 기반의 엔트로피 코딩을 이용하여 코딩된다. AVS는 특별히 변환 계수 데이터를 위한 산술 코딩을 이용한다.
AVS를 위한 기존의 코딩 체계는 일부 제한사항이 있다. 예컨대 기존의 AVS 코딩 체계를 대규모 블록 크기로의 직접적인 확장은 효율적이지 않을 수가 있다. 더욱이 인트라 예측 정보 처럼 부수 정보(side information)는 예측 후 잔여 블록의 코딩에 시용되지 않는다.
도 1은 비디오 인코딩을 위한 공지의 인코더를 블록도 형태로 도시하고 있다.
도 1b는 본 발명에 따른 비디오 인코딩을 위한 인코더를 블록도 형태로 도시하고 있다.
도 2a는 인트라 예측 모드들을 3개의 분리 클래스(disjoint class)들로 구획한 공지의 구획(partition)을 보여주고 있다.
도 2b는 인트라 예측 모드들을 3개의 분리 클래스(disjoint class)들로 구획한 본 발명에 따른 구획을 보여주고 있다.
도 3a는 잔여 블록을 인코딩하기 위한 공지의 방법을 설명하는 플로우챠트를 도시하고 있다.
도 3b는 본 발명에 따른 블록 전치를 채용해서 잔여 블록을 인코딩하기 위한 방법을 설명하는 플로우챠트를 도시하고 있다.
도 3c는 도 3b에 도시한 방법의 일실시형태를 위한 로직 흐름를 설명하는 플로우챠트를 도시하고 있다.
도 4a는 양자화 변환 계수의 샘플 8×8 블록에 대한 전체 블록 전치의 애플리케이션을 보여주고 있다.
도 4b는 도 4a에서와 같이 동일한 샘플 8×8 블록에 대한 부분 블록 전치의 애플리케이션을 도시하고 있다.
도 5a는 비디오 디코딩을 위한 공지의 디코더를 블록도 형태로 도시하고 있다.
도 5b는 본 발명에 따른 블록 전치를 채용하여 비디오를 디코딩하기 위한 디코더를 블록도 형태로 도시하고 있다.
도 6a는 잔여 블록을 디코딩하기 위한 공지의 방법을 보여주는 플로우챠트이다.
도 6b는 본 발명에 따른 잔여 블록을 디코딩하기 위한 방법을 보여주는 플로우챠트이다.
도 6c는 도 6b에 도시한 방법의 일실시형태를 위한 로직 흐름을 보여주는 플로우챠트이다.
도 7은 계수 그룹의 변환 계수들을 변환 계수들의 3개의 분리 영역으로 구획하는 3개의 상이한 방법을 도시하고 있다.
도 8a는 블록 전치를 이용하지 않는 잔여 블록의 모드 종속 레벨 런 인코딩을 위한 공지의 방법을 보여주는 플로우챠트이다.
도 8b는 본 발명의 방법에 따른 도 7에 도시한 것들 중에서 구획의 선택을 설명하기 위해 적용된 도 8a에 도시한 방법의 하나의 단계를 상세히 보여주는 플로우챠트이다.
도 8c는 도 8b에 도시한 방법에 따라 선택된 구획을 이용하는 상세 플로우챠트이다.
도 9a는 인트라 예측 모드가 예측 클래스에 속하는 경우 블록 전치를 이용한 잔여 블록의 모드 종속 인코딩을 위한 방법을 보여주는 플로우챠트이다.
도 9b는 도 7에 도시한 것들 중에서 구획의 선택을 설명하기 위해 적용된 도 8a에 도시한 방법의 하나의 단계를 상세히 보여주는 블록 전치의 이용을 수용하는 도 8b의 것과 유사한 플로우챠트이다.
도 9c는 도 9b에 도시한 방법에 따라 선택된 구획을 이용한 수평 클래스에서 인트라 예측 모드의 특별한 경우를 상세히 보여주는 플로우챠트이다.
도 10a는 계수 그룹으로 구획된 사이즈 16×16의 샘플 블록을 도시하며 블록내에서 계수 그룹들의 지그재그 그룹 스캔 순서를 보여주고 있다.
도 10b는 도 10a에 도시한 샘플 블록에 대응하는 계수 그룹 플래그의 블록을 도시하며 블록내 계수 그룹들의 그룹 스캔 순서로 최종 비제로 계수 그룹의 위치를 보여주고 있다.
도 10c는 하나의 특정 계수 그룹과 2개의 다른 계수 그룹의 최종 비제로 계수에 대해서 변환 계수들의 스캔 순서를 설명하는 도 10a에 도시한 동일한 샘플 블록을 상세히 도시하고 있다.
도 11a는 블록의 계수 그룹을 계수 그룹의 4개의 분리 영역으로 구획하는(partitioning) 방식과 함께 도 10a에 도시한 동일한 샘플 블록을 보여 주고 있다.
도 11b는 블록의 계수 그룹을 계수 그룹의 3개의 분리 영역으로 구획하는 방식과 함께 도 10a에 도시한 동일한 샘플 블록을 보여 주고 있다.
도 12는 도 11b에 도시한 구획의 사용 방법을 상세히 보여주는 플로우챠트이다.
도 13은 인코딩되는 현재의 계수 그룹의 스캔 순서로 최종 비제로 계수의 (x,y) 위치의 수정된 표현을 인코딩하기 위한 방법을 설명하는 플로우챠트이다.
도 13a는 도 13에 도시한 방법의 하나의 단계인 인트라 예측 모드가 속하는 클래스에 기초한 (x,y) 위치를 수정한 일실시형태를 보여주는 플로우챠트이다.
도 13b는 도 13에 도시한 방법의 하나의 단계인 현재 계수 그룹의 적어도 하나의 인접한 계수 그룹에 기초한 (x,y) 위치를 수정한 또 다른 실시형태를 보여주는 플로우챠트이다.
도 13c는 도 13에 도시한 방법의 하나의 단계인 현재 계수 그룹의 적어도 하나의 인접한 계수 그룹에 기초하고 인트라 예측 모드가 속하는 클래스에 기초한 (x,y) 포지션을 수정한 또 다른 실시형태를 보여주는 플로우챠트이다.
도 14는 현재의 계수 그룹에 대해서 그 계수 그룹의 스캔 순서에서 최종 비제로 계수의 정확한(true)(x,y) 위치의 인코딩된 표현을 디코딩하고 정확한(true)(x,y) 위치를 얻기 위해 그 표현을 변환하는 방법을 보여주는 플로우챠트이다.
도 15는 본 발명에 따른 디코더 및 인코더를 채용하는 디바이스의 일실시형태의 개략 블록도이다.
상이한 도면에서 동일 참조 부호는 동일 구성요소를 가리킨다.
본 발명은 잔여 비디오 데이터를 인코딩 및 디코딩하기 위한 방법 및 인코더/디코더를 기술하고 있다.
제1 형태에 있어서, 본 발명은 인코딩된 비디오의 비트스트림에서 잔여 데이터의 인코딩된 블록으로부터 비디오 디코더를 이용하여 잔여 데이터의 현재 블록을 재구성하기 위한 방법을 기술하며, 현재 블록은 계수 그룹들로 구획되고, 각 계수 그룹은 변환 계수를 포함한다. 그 방법은 현재 블록 내의 계수 그룹들의 그룹 스캔 순서에서 최종 비제로 계수 그룹 이전의 비제로 계수 그룹인, 현재 계수 그룹에 대하여: (a) 현재 계수 그룹 내의 변환 계수의 스캔 순서에서 최종 비제로 계수의, 현재 계수 그룹 내의, 정확한(true) (x,y)-위치를 나타내는 좌표 (X, Y)를 디코딩하는 단계; 및 (b) 최종 비제로 변환 계수의 정확한 (x,y)-위치를 연산하기 위해 불일치(non-identity) 수정을 좌표 (X, Y)에 적용하는 단계를 포함하고, 수정은 인코딩된 블록을 생성하는데 이용된 인프라-예측 모드, 및 현재 계수 그룹에 이웃하는 적어도 하나의 계수 그룹 중 적어도 하나에 기초한다.
다른 태양에서, 본 개시는 비디오 인코더를 이용하여, 블록들로 구획된 픽쳐(picture)를 포함하는 비디오를 인코딩하는 방법를 개시하며, 블록들에 대한 잔여 데이터는 변환 블록들로 공간 변환되고, 각 변환 블록들은 계수 그룹들로 더 구획되며, 방법은 (a) 변환 블록 내의 계수 그룹들의 그룹 스캔 순서에서 최종 비제로 계수 그룹 이전의 비제로 계수 그룹인, 현재 계수 그룹에 대하여: 계수 그룹 내의 변환 계수의 스캔 순서에서 최종 비제로 계수의, 현재 계수 그룹 내의, (x,y)-위치 (X, Y)를 얻는 단계; (b) 변환 블록을 생성하는데 사용된 인프라-예측 모드, 및 현재 계수 그룹에 이웃하는 적어도 하나의 계수 그룹 중 적어도 하나에 기초한 불일치(non-identity) 수정을 이용하여 (x,y)-위치 (X, Y)를 수정된 (x,y)-위치 (X', Y')로 변환하는 단계; 및 (c) 콘텍스트 모델을 이용하여 수정된 (x,y)-위치 (X', Y')를 이진화하고 엔트로피 인코딩하는 단계를 포함한다.
다른 태양에 있어서, 본 개시에서는 인코딩 및 디코딩을 위한 이러한 방법들을 실행하도록 구성된 인코더들 및 디코더들을 설명한다.
또다른 태양에 있어서, 본 개시에서는 실행시, 인코딩 및 디코딩을 위한 설명된 방법들을 프로세서가 수행하도록 구성된 프로세서 실행 가능한 프로그램 명령어를 저장하는 비일시적인 프로세서 판독 가능한 매체를 설명한다.
본 개시의 다른 태양들 및 특징들은, 첨부된 도면들과 함께 샘플 실시형태들의 다음의 설명을 검토함으로써 당업자들에 의해 이해될 것이다.
다음의 설명에서, 일부 예시적인 실시형태들은 비디오 코딩 및/또는 개발하는 AVS2 표준을 위한 AVS 표준을 참조하여 설명된다. 당업자들은, 본 개시가 AVS 또는 AVS2에 한정되지 않지만, 가능성있는 미래 표준, 3D 및 멀티 뷰 코딩 표준, 스케일러블 비디오 코딩 표준, 및 재구성 가능한 비디오 코딩 표준을 포함하는, 다른 비디오 인코딩/디코딩 표준에 적용 가능할 수도 있다는 것을 이해할 것이다.
다음의 설명에서, 비디오 또는 화상들을 참조할 때, 용어, 프레임, 픽쳐, 슬라이스, 타일 및 직사각형 슬라이스 그룹은 다소 상호 교환 가능하게 이용될 수도 있다. 당업자는, AVS 표준의 경우에, 프레임은 하나 이상의 슬라이스들을 포함할 수도 있다는 것을 이해할 것이다. 다른 비디오 코딩 표준에서 다른 용어들이 사용될 수도 있다. 적용되는 화상 또는 비디오 코딩 표준의 특정 요건들 또는 용어에 따라, 특정 인코딩/디코딩 동작들은 프레임별 기반으로 수행될 수도 있고, 일부는 슬라이스별 기반으로 수행되고, 일부는 픽쳐별로 수행되고, 일부는 타일별로 수행되고, 일부는 직사각형 슬라이스 그룹에 의하여 수행된다는 것이 또한 이해될 것이다. 임의의 특정 실시형태에서, 적용되는 화상 또는 비디오 코딩 표준은, 경우에 따라서 이하에 설명된 동작들이 프레임들 및/또는 슬라이스들 및/또는 픽쳐들 및/또는 타일들 및/또는 직사각형 슬라이스 그룹들과 관련되어 수행되는 지의 여부를 판정할 수도 있다. 따라서, 당업자들은, 본 개시에 비추어, 여기서 설명된 특정 동작들 또는 처리들, 및 프레임들, 슬라이스들, 픽쳐들, 타일들, 직사각형 슬라이스 그룹들에의 특정 참조가 주어진 실시형태에 대하여 프레임들, 슬라이스들, 픽쳐들, 타일들, 직사각형 슬라이스 그룹들, 또는 이들의 일부 또는 전부에 적용 가능한 지의 여부를 이해할 것이다. 이것은 또한, 이하의 설명에 비추어 명백할 것인 바와 같이, 변환 유닛들, 코딩 유닛들, 코딩 유닛들의 그룹들 등에 적용된다.
일부 시나리오에서, 프레임은 2개의 영역들, 예컨대 스크린 컨텐트용으로 사용되는 1개 및 내츄럴(natural) 비디오용으로 사용되는 1개로 구분될 수 있다. 이것은 때때로 스플릿 스크린으로 불릴 수도 있다. 유사하게, 멀티뷰 코덱에서, 스크린 컨텐트용 하나의 뷰, 및 내츄럴 비디오용 다른 하나의 뷰를 사용할 수 있을 것이다. 대안적으로, 비트스트림은, 하나가 변환 스킵 또는 무손실 모드를 사용하고 다른 하나는 그렇지 않을 것인 적어도 2개의 서브스트림들로 구성될 수 있다. 이들 예시적인 상황들 중 임의의 상황에서, 계수 재배열(coefficient reordering)이, 변환 스킵, 플랫 양자화를 갖는 변환 스킵, 또는 변환 및 양자화 단계들의 스킵 중 어느 하나를 사용하는 뷰들/영역들/스트림들 중 하나의 인코딩/디코딩에 적용될 수도 있고, 다른 영역/뷰/스트림은 그 인코딩/디코딩에 적용된 계수 재배열을 갖지 않을 수도 있다는 것이 이해될 것이다. 본 개시에 설명된 혁신은 변환 스킵을 갖거나 갖지 않고 채용될 수 있다. 또한, 여기서 사용된 바와 같은, 용어 "변환 계수(transform coefficients)" 및 "변환 블록(transform block)"은, 그 계수들 및 블록들이, 스킵되지 않았으면 스펙트럼 변환의 애플리케이션을 반영할 것인 인코딩/디코딩시 특정 단계에서의 그 계수들 및 블록들에 참조하고자 의도된다. 따라서, 본 용어들은, 스펙트럼 변환의 한 특별한 경우 - 아이덴티티(즉, 두-낫싱(do-nothing) 기능이 표준 스펙트럼 변환 대신에 적용된 상황들을 망라하는 것으로 의미한다. 이것은, 여기에 설명된 혁신이 스펙트럼 변환의 애플리케이션에 의존하지 않기 때문이다.
스케일러블 비디오 코딩의 경우에서, 이하에 개시된 실시형태들 중 임의의 실시형태는 베이스층 인코딩/디코딩, 강화층 인코딩/디코딩, 또는 이들 양쪽 층들에 적용될 수도 있다. 3D 또는 멀티뷰 비디오 코딩의 경우에서, 상기 실시형태들 중 임의의 실시형태는, 뷰 인코딩/디코딩의 하나에, 뷰(들) 인코딩/디코딩의 다른 하나에, 또는 양쪽/모든 뷰들에 적용될 수도 있다.
우선 도 1a 및 도 3a을 참조한다. 도 1a는 비디오를 인코딩하기 위한 종래의 인코더(100A)를 블록도로 도시한다. 도 3a는, 잔여 데이터(바로 설명할 것임)의 블록을 인코딩하는 대응하는 종래의 방법(300A)을 설명하는 흐름도를 도시하고, 여기에 설명된 혁신에 포함되지 않는 일부 예비의 인코딩 단계들을 생략한다.
인코더(100A)는 비디오 소스(101)를 수신하고, 궁극적으로 인코딩된 비트스트림(199)을 생성한다. 인코더(100A)는, 다수의 비디오 압축 표준에 순응하여 동작하도록 구성될 수도 있다. 예컨대, 인코더(100A)는 AVS- 또는 AVS2-순응일 수도 있고, 후자는 본 개시에서 특정 관심의 표준이나, 여기서 개시된 혁신은 또한 다른 표준들에 적용될 수 있다.
비디오 소스(101)는 프레임들의 시퀀스를 포함하고, 각 프레임은 시간의 상이한 지점에 대응한다. 하나의 프레임/슬라이스의 처리의 벌크는 단위 크기(granularity)의 보다 미세한 레벨에서 수행되어도, 프레임/슬라이스가 보다 작은 블록들로 구획되고, 처리는 루프에서 블록별 기반으로 수행된다. 블록들은 코딩 단위들, 매크로블록들, 또는 서브블록들일 수도 있다.
종래 기술에 공지된 바와 같이, 프레임은 타입 I, P, 또는 B일 수도 있다. 코딩 모드 선택기(160)는 인코딩되고 있는 현재 프레임이 타입 I, P, 또는 B인지의 여부, 및 프레임 내의 특정 코딩 유닛들(예컨대, 매크로블록들, 코딩 유닛들 등)은 인터 또는 인트라 코딩되는 지의 여부를 판정한다.
"인터 코팅된" 프레임들의 2 형태 - 타입 P 및 타입 B -는, 현재 프레임이 시간의 상이한 지점에 대응하는 이전 처리된 프레임과 어떻게 상이한 지에 기초하여, 시간적 예측을 사용한다. 이 예측 유형(본 개시와 관련되지 않은)은 인코더(100A)에서 피드백 루프를 사용한다. 본 루프는, 스펙트럼 변환(110) 및 양자화기(115)(후술함)가 한 것을 대략 되돌리는(undo)(도 5에서의 종래의 디코더(500A)의 대응하는 양자화 해제기(520)와 역 스펙트럼 변환(110)과 유사한) 양자화 해제기(dequantizer)(130)와 역 스펙트럼 변환(135)로 시작하며, 즉 이들은 원래 잔여 데이터와 유사하게, 그러나 동일하지 않는(단계 320의 손실 성질로 인하여) 잔여 데이터를 재구성한다. 디블록킹 프로세서(145)(디코더(500A)의 대응하는 디블록킹 프로세서(540)와 유사하게)는, 디코딩 처리 동안 행해질 것인 바와 같이, 블록 경계들에서 아티팩트(artifact)를 제거하기 위한 필터링을 수행하고, 그리고/또는 다른 스무딩(smoothing)을 수행할 수도 있다. 따라서, 프레임 스토어(150)는, 모션 예측기(155)에 의하여 사용하기 위한 "참조" 프레임 - 디코더(500A)에 의한 것일 것인 재구성되고 디블록킹된 -을 저장한다.
타입 I 프레임 - "인트라 코딩된" 프레임 -은 다른 프레임들로의 참조없이 인코딩되고, 따라서 시간적 예측을 채용할 수 없다. 그러나, 프레임 내에 공간 예측을 채용하고, 다시 말하면 프레임의 일부는, 프레임의 다른 부분과 어떻게 상이한 지에 기초하여 인코딩된다.
인트라 예측 - 본 개시에서 관심의 예측 형태 -은 도 3a의 단계 310에 따라 공간 예측기(105)에 의하여 수행된다. 구체적으로, 공간 예측기(105)는 현재 블록에 대한 데이터를, 현재 프레임에 대하여 이전 처리된 블록들 내의 인근 픽셀들에 대한 데이터와 비교하고, 특정한 공간 예측 모드에 대한 예측 알고리즘에 따라 그 블록에 대한 잔여 데이터를 생성한다. AVS 및 AVS2 표준에서, 예컨대 도 2a 및 도 2b를 참조하여 이후에 논의될 것인 그러한 33개 모드가 존재한다. 일부 실시형태들에서, 최상 모드를 선택하기 위하여 왜율(rate-distortion) 최적화가 사용될 수도 있다.
다음, 도 3a의 단계 320에서, 스펙트럼 변환(110)은 잔여 데이터를 스펙트럼 변환시키고, 양자화기(115)는 스펙트럼 변환의 출력을 양자화시킨다. 도 1a가 종래 기술에서 이해되는 바와 같이 인코더(100A)의 구별된 구성 요소로서 스펙트럼 변환(110) 및 양자화기(115)를 도시하지만, 이들 2개 동작들은 2개의 구별된 수학적 동작들 또는 단일 동작으로서 수행될 수 있고, 따라서 도시된 2개의 구성 요소들은, 동일한 병합된 결과를 달성하는 단일 구성 요소에 의하여 대체될 수 있다. 또한, 일부 실시형태들에서, 변환 스키핑(transform skipping)이 채용될 수도 있고, 그러한 경우에서, 스펙트럼 변환(110)이 채용되지 않고, 단계 320은 공간 도메인에서 잔여 데이터를 단지 양자화시킨다.
스펙트럼 변환(110)에 입력된 잔여 데이터는 공간 도메인의 데이터이고, 이것은, 데이터가 기하학적 행들 및 열들에 배열된 화소들에 대응한다(아마도 1:1 방식은 아닌). 스펙트럼 변환(110)은 이 공간 도메인 데이터를 변환 도메인에서의 데이터로 변환시키고, 이 출력 데이터 - 변환 계수로서 여기서 참조되는 - 는 픽셀들에 관한 주파수 정보를 포함하고, 이 주파수 정보로부터 픽셀들이 재구성될 수 있다. 많은 실시형태들에서, 스펙트럼 변환(110)은 이산 코사인 변환(discrete cosine transform; DCT)을 적용한다. AVS 및 AVS2 표준이 DCT의 사용을 명시하더라도, 이산 사인 변환 또는 다른 변환은 비디오 코딩 프로토콜에 사용될 수 있으므로, 본 개시의 범위 내에 있는 것으로서 예상된다. 스펙트럼 변환(110)은, 매크로블록들 또는 코딩 유닛들의 크기에 따라서, 코딩 유닛, 매크로블록 또는 서브-블록 베이스 상에서 동작한다. AVS 및 AVS2 표준에서, 예를 들어, 통상의 16x16 매크로블록은 4개의 8x8 변환 블록들을 포함하고, 이 8x8 블록들 상에 DCT 처리가 수행된다. 일부 비디오 코딩 프로토콜들에서, 변환 블록들은 4x4일 수 있고, 이는 매크로블록 당 16개의 변환 블록들이 존재한다는 것을 의미한다. 또 다른 경우에, 변환 블록들은 다른 크기를 가질 수 있다. 일부 경우에 있어서, 16x16 매크로블록은 비중첩 4x4 및 8x8 변환 블록들의 조합을 포함할 수 있다.
도 1a 및 도 3a를 계속해서 참조하면, 엔트로피 인코더(125)는 압축될 여러 가지 심볼들의 주파수에 대한 통계에 기초하여 심볼들을 손실없이 압축하며, 압축된 심볼들은, 후술되는 바와 같이, 변환된 양자화 계수가 직접 반영된 데이터뿐만 아니라 블록에 관한 파라미터들의 표시(블록을 인코딩하는데 사용되는 인트라 예측 모드 등) 및/또는 복수의 제로 값들이 인코딩 처리에 암시되어 있다는 의미에서 일부 제로값 데이터를 "스킵"시키는 플래그들을 포함하는, 현재 블록에 관한 다른 데이터를 포함한다.
변환된 양자화 계수들에 직접 기초하는 데이터는 또한 이러한 종류의 제로값 데이터의 스킵핑을 수반한다. 특히, 도 3a의 단계 350에서, 변환된 양자화 계수들은, 제로값 계수의 보급으로 인해 레벨런 인코딩된다. 이는 레벨런 차수 쌍을 발생시키는 것을 수반하고, 각각은 (a) 비제로 계수의 크기와, (b) 역 스캔 순서로 그 비제로 계수를 뒤따르는 연속적인 제로값 계수들의 수로 구성되며, (b)가 (a)에 후속된다.
단계 360에서, 변환된 양자화 계수들 및 현재 블록에 관련된 다른 데이터 양쪽을 나타내는 심볼들은 이진화되고 엔트로피 인코딩된다. 이진화는 심볼들을 단항(unary) 표시 또는 이것의 일부 변형과 같은 일부 2진 포맷으로 변환하는 것을 포함한다. AVS 및 AVS2 표준은, 엔트로피 인코딩이 산술 코딩임을 명시하지만, 다른 비디오 코딩 프로토콜들에서, 다른 타입의 엔트로피 코딩(가변-길이 코딩 등)이 사용될 수 있다(따라서, 본 개시의 범위 내에 있음).
도 2a 및 도 2b 각각은, 비디오 코딩에서 사용되는, 하나의 타입["앵귤러"]의 30개의 인트라 예측 모드를 나타내고, 3개의 다른 타입["비앵귤러"]을 단순히 열거하고, 또한 모든 이러한 모드들이 도 3b의 신규한 방법 300B에 사용하기 위한 3개의 해체 클래스들로 어떻게 분류되는지를 예시한다. 각 앵귤러 인트라 예측 모드는, 코딩되는 현재 블록으로부터 인트라 예측에 사용되는 이웃 화소들까지, 공간 배치의 각도를 나타내는 화살표에 의해 표시된다. 화살표의 길이는 중요하지 않으며, 오히려, 각 화살표 머리는, 복수의 일부 베이스 각도인 것으로서의, 양의 y-축으로부터 측정되는, 공간 배치의 각도를 표시하는데 도움을 주기 위하여, 특정 원에 도달되는 것으로 표시되고, 대응하는 모드는 대응하는"존"에 속하는 것으로 지칭된다. 모드 0 및 1[존 0, 특징부(400)에 속함]은 90도의 배수인 각도를 갖는다. 모드 4, 5 및 6[존 1, 특징부(410)에 속함]은, 45도의 배수인 각도를 갖지만, 존 0에는 속하지 않는다. 모드 7 내지 16[존 2, 특징부(420)에 속함]은 15도의 배수인 각도를 가지지만, 존 0 또는 1에 속하지는 않는다. 모드 17 내지 31[존 3, 특징부(430)에 속함]은 7.5도의 배수인 각도를 가지지만, 존 0, 1 또는 2에 속하지는 않는다. 비앵귤러 인트라 예측 모드들[DC 모드(AVS2 표준에서 모드 2로서 지정됨), 평면 모드(3), 및 두줄선 모드(32)]은, 단지 도 2a 및 도 2b에 열거되는데, 그 이유는 이들이 어떠한 "방향"도 구현하지 않으므로, 벡터의 관점에서 유효하게 표시될 수 없고, 이들은 단지 완성(AVS2 표준에 관함)을 위해서가 아니라, 이들이 다음에 설명되는 분류 방식에서 포함되기 때문에 열거된다.
인트라 예측 모드들의 개선된 분류
도 2a 및 2b에 대하여 중요한 것은 존이 아니라, 각각 분류(200A 및 200B)를 표시하는 것이다. 각 분류는 인트라 예측 모드 0 내지 32의 전체 컬렉션을 3개의 해체 클래스로 분할하고, 주어진 모드는, 2개의 클래스 중 어느 하나에서, 이것이 나머지 클래스에 속해야 함을 암시하지 않는다고 판정한다. 도 2a에 표시된 분류(200A)에서, 수직 클래스(210A)는, 두꺼운 솔리드 화살표에 의해 표시되는, 모드 0, 9, 10, 11, 12, 16, 21, 22, 23 및 24로 구성되며, 수평 클래스(220A)는 얇은 솔리드 화살표에 의해 표시되는 모드 1, 7, 8, 13, 14, 15, 17, 18, 27, 28 및 29로 구성되며, 대각선 클래스(230A)는 비앵귤러 모드 2, 3 및 32와 함께, 파선 화살표에 의해 표시되는, 나머지 모드 즉, 앵귤러 모드 4, 5, 6, 19, 20, 25, 26, 30 및 31로 구성되며, 상기 비앵귤러 모드 2, 3 및 32는 도 2a에 단순히 열거된다. 도 2b에 표시된 분류(200B)에서, 수직 클래스(210B)는 두꺼운 솔리드 화살표에 의해 표시되는 모드 0, 10, 11, 21, 22, 23 및 24로 구성되며, 수평 클래스(220B)는 얇은 솔리드 화살표에 의해 표시되는 모드 1, 7, 14, 17, 18, 27, 28, 29로 구성되며, 대각선 클래스(230B)는, 비앵귤러 모드 2, 3 및 32와 함께, 파선 화살표에 의해 표시되는 나머지 모드 즉, 앵귤러 모드 4, 5, 6, 8, 9, 12, 13, 15, 16, 19, 20, 25, 26, 30 및 31로 구성된다.
이러한 분류는 복수의 방법으로 비디오 코딩을 개선하는데 이용될 수 있다. 공동 계류중인 출원 PCT/CA2013/050020에 이전에 개시된 바와 같이, 이러한 클래스들은 모드 의존 콘텍스트 설계를 위해 사용될 수 있다. 블록을 인코딩하는데 사용되는 인트라 예측 모드가, 특히 상기 클래스들 중 하나일 때, 이는 그 클래스에 대응하는 계수들이 독특한 분포를 가지는 경향이 있다. 콘텍스트의 결정시에, 레벨런 쌍의 엔트로피 코딩에 대하여 말하는 것은, 모드가 속하는 클래스에 기초하며, 그 결정은 더욱 더 적절하게 된다. 결정이 더욱 더 적절하게 될 때, 궁극적으로 코딩은 더욱 더 효과적으로 된다. 도 2a의 분류(200A)는 이러한 톡특한 분포들 간을 구별하는 방법으로서 이전에 개시되어 있다.
이제 인트라 예측 모드들을 더욱 더 효율적으로 분할할 수 있음이 실현되어 있다. 분류(200B)의 수정된 수직 클래스(210B) 및 수평 클래스(220B)는, 분류(200A)의 대응하는 클래스(210A 및 220A)보다 "더 좁아지게"되는데, 즉, 수정된 클래스 각각은 더 작은 각도 범위로 걸쳐 이어진 소수의 모드들을 포함한다. 소수의 모드들을 포함하는 클래스들은 더욱 더 톡특한 분포에 대응한다. 그러나, 발명자들은, 클래스가 너무 작으면, 안정한 상태에 도달하도록 콘텍스트를 트레이닝하기에 충분한 데이터가 존재하지 않고, 코딩 성능이 악화된다는 것을 또한 알게 되었고, 이는 콘텍스트 딜루션(dilution) 문제로서 알려진다. 수정된 클래스(210B 및 220B)의 각각은, 분배의 특수성 및 상태 안정성 사이의 밸런스에 영향을 준다. 최종적인 결과는 이전에 개시된 분류(200A)가 가진 코딩 성능 보다 새로운 분류(200B)가 가진 코딩 성능이 더 좋으며, 이는 이전에 개시된 모드 의존 콘텍스트 설계와 도 3b에 표시된 신규한 방법(300B)에 의해 제공되는 추가의 코딩 개선 양자에 적용하며, 이 신규한 방법(300B)은 간단히 설명된다.
계수의 모드 의존 블록 전치
비디오 코딩 기술의 현재의 상태에 관하여 이러한 개선사항을 설명하기 위하여, 도 1a의 인코더(100A)와 관련하여 초기에 논의된, 도 3a의 종래 방법(300A)에 대해 이제 리뷰한다. 비디오의 블록 x 블록 인코딩 동안에, 단계 310에서, 현재 블록에 대한 잔여 데이터는, 코딩 모드 선택기(160)[종래 단계에서 방법(300A)의 일부로서 도시되지 않음]에 의해 선택된 인트라 예측 모드에 따라서 생성된다. 단계 320에서, 잔여 데이터의 블록은 양자화 변환 블록을 얻기 위하여 스펙트럼 변환 및 양자화된다. 단계 320이 단일 단계로서 도시되어 있지만, 스펙트럼 변환 및 양자화의 최종적인 효과는, 단일의 수학적 연산에 의해 또는 2개의 분리 연산의 시퀀스에 의해 달성될 수 있다. AVS2 표준에서, 사용된 스펙트럼 변환은 이산 코사인 변환(DCT)이지만, 다른 변환[예컨대, 이산 사인 변환]은 비디오 코딩에 사용될 수 있다(따라서, 본 개시의 범위 내에 있음). 단계 350에서, 양자화된 변환 계수는 레벨런 인코딩된다. 이는 역 지그 재그 스캐닝 순서로 양자화된 변환 계수들을 스캐닝하는 것과, (a) "레벨"- 즉, 비제로 계수의 크기 - 및 (b) "런" - 즉, 다음의 비제로 계수 또는 CG의 맨끝(최종 런은 CG의 상부 좌측 계수를 카운트하는 경우) 이전에 비제로 계수(역 지그 재그 순서)를 따르는 연속적인 제로값 계수의 수로 구성된 쌍을 생성하는 것을 수반한다. 단계 360에서, 레벨런 쌍은 이진화(예를 들어, 1진 코드 또는 이것의 일부 변형)되고 엔트로피 인코딩된다. AVS2 표준에서, 엔트로피 코딩은 산술 코딩이지만, 다른 타입의 엔트로피 코딩(가변 길이 코딩 등)은 비디오 코딩에 사용될 수 있다(따라서, 본 개시의 범위 내에 있음).
이제 비디오 압축에서의 인트라 예측 및 변환 처리 이후에, 사용된 인트라 예측 모드가 수직 클래스일 때, 비제로 변환 계수들이 CG의 상부에 가까이에 위치되는 경향이 있음을 알게 되었다. 이와 유사하게, 사용된 인트라 예측 모드가 수평 클래스에 속할 때, 비제로 변환 계수는 CG의 좌측에 가까이에 위치되는 경향이 있다. 이러한 관찰은, 만일 전치되면, 수평 예측 이후의 변환 계수 블록이, 수직 예측 이후의 변환 계수 블록과 유사한 통계를 가진다는 점을 제안한다. (이 통계는 여기서 주로 런을 지칭하는데, 즉, CG에서의 연속적인 비제로 계수들과 블록 내의 비제로 계수들의 위치 사이에서의 제로값 계수들의 카운트를 지칭하며, 이는 최종 비제로 CG의 위치 및 CG에서의 최종 비제로 계수의 위치를 결정한다.) 전치된 수평 모드 블록들은 비전치된 수직 모드 블록들과 유사한 계수 분포들을 갖기 때문에, 이러한 블록들이 "콘텍스트들을 공유"(후술함)하라고 프로그램적으로 명령함으로써, 인코더(100B)는 전치된 수평 모드 블록들을 비전치된 수직 모드 블록들인 것처럼 다루도록 "기만"당할 수 있다. 이것은 콘텍스트들의 총 개수를 감소시키는 효과를 갖는다. 저장될 필요가 있는 콘텍스트들의 개수를 감소시키는 것은 결국 엔트로피 코딩 복잡성을 감소시킨다.
이러한 관찰의 기술적 응용이 도 1b와 도 3b에 도시된다. 도 1b는, 블록 전치(120)가 양자화기(115)와 엔트로피 인코더(125) 사이에 개재되어 있다는 점에서 도 1a의 인코더(100A)와는 상이한 인코더(100B)를 블록도 형태로 도시한다. 그 위치는 고정되어 있지만, 모든 환경들에서 활용될 필요는 없다는 것을 나타내기 위해 인코더(100B)는 점선 윤곽선으로 도시되어 있다. 실제로, 변환 계수 블록을 전치시키는 포인트는 제1 특정 클래스(예컨대, 수평 클래스)에서 인트라 예측 모드들에 대해 전치시키되 제2 특정 클래스(예컨대, 수직 클래스)에서 인트라 예측 모드들에 대해 전치시키지 않도록 하여, 제1 클래스에서의 모드를 거친 인트라 예측 이후의 변환 계수 블록이, 일단 전치되면, 제2 클래스에서의 모드를 거친 인트라 예측 이후의 변환 계수 블록과 유사한 통계치들을 갖도록 하는 것이다. 따라서, 실제에서, 블록 전치(120)의 기능성이 인보크되어야 하는지 여부를 결정하기 위한 (도 1b에서는 도시되어 있지 않지만, 다음에 설명되는 도 3b의 단계 330에서는 나타나 있는) 테스트가 수행된다.
도 3b는 아래에서 자세하게 설명하겠지만 잔차들의 블록을 인코딩하기 위한 신규한 방법(300B)을 나타내는 플로우차트를 도시한다. 이것은 단계 330와 단계 340의 추가에 의해, 도 3a에서 도시된 통상적인 방법(300A)과는 구별이 된다. 단계 330에서, (코딩 모드 선택기(160)에 의해 결정된) 공간 예측기(105)에 의해 이용될 인트라 예측 모드가 미리 결정된 클래스에 속하는지 여부를 결정하기 위한 테스트가 수행된다. 좀 더 명확하게 하기 위해, 이러한 테스트는 모드가 몇몇의 미리 결정된 클래스에 속하는지 여부만을 결정하지는 않고, 이러한 테스트는 불필요할 것인데, 그 이유는 모든 모드가 (인코딩 프로토콜이 암시되면서, 단지 디코딩 프로토콜만을 규정하기 위해 기재될 수 있는) 협의된 인코딩 디코딩 표준의 상호동작성 요건들에 따라 각각 "미리 결정된" 3개의 클래스들 중 정확히 하나의 클래스에 속하기 때문이다. 테스트는 양자화된 변환 블록이 전치되어 있는 유일한 클래스라고 미리 결정된 특정 클래스에 모드가 있는지 여부를 결정한다. 아래에서 설명되는 바와 같이, 수평 클래스는 이러한 특정되고 구별되는 미리 결정된 클래스가 되기 위한 최상의 선택이다. 단계 340에서, 미리 결정된 특정 클래스에 속하는 경우 양자화된 변환 블록의 적어도 일부분은 도 4a(전체 블록 전치의 경우)와 도 4b(부분 블록 전치의 경우)에서 나타난 바와 같이 전치된다. 속임수 - 인코더(100B)가 하나의 모드 클래스의 전치된 블록을 다른 클래스의 비전치된 블록인 것처럼 다루도록 "기만"하는 것 - 를 완료하기 위해, 콘텍스트 인덱스는 업데이트되어야 하며; 그렇지 않으면, 디코딩은 콘텍스트가 업데이트된 콘텍스트 인덱스에 따라 유도될 때 보다 덜 효율적일 것이며, 블록 변환의 완전한 장점들은 실현되지 않을 것이다.
예를 들어, 몇몇의 실시형태의 경우, 블록 전치를 트리거하는 미리 결정된 특정 클래스가 수평 클래스이라고 가정을 한다. 인코더(100B)는 값 INTRA_PRED_VER, INTRA_PRED_HOR, 또는 INTRA_PRED_DC_DIAG (예컨대, 각각 0, 1, 2와 동일한 상수들) 를 갖는 콘텍스트 인덱스 intraModeIdx를, 인트라 예측용 - 및 이에 따라, 모드 의존적 엔트로피 인코딩용 - 으로 이용된 모드가 각각 수직, 수평, 또는 대각선 클래스에 속하는 것을 나타내는 것으로서 통상적으로 해석한다라고 또한 가정한다. 그러면 콘텍스트 인덱스의 업데이트를 나타내는 의사 코드는,
If intraModeIdx = INTRA_PRED_HOR,
intraModeIdx = INTRA_PRED_VER
일 것이다.
단계 340에서 블록 전치가 수행되는 모드들의 클래스로서 잠재적으로 미리 결정될 수 있는 3개의 클래스들이 존재하지만, 하나의 클래스가 가장 덜 바람직한 클래스이며 다른 것은 가장 바람한 것이다. 미리 결정된 클래스는 대각선 클래스이여서는 안되는데, 그 이유는, 대각선 클래스에 속하는 모드들의 경우, (나머지 다른 2개의 클래스들에서의 모드들에서 흔히 있는 일인 바와 같이) 비제로(non-zero) 계수들이 하나의 가장자리를 따라 구별되어 분포되기 때문이다. 이제, 도 10c의 스캔 순서(1020)를 참조하여 설명되는 바와 같이, 블록 내의 CG들 및 이 CG 내의 계수들의 특정한 지그재그 스캔 순서때문에, 수평 클래스는 미리 결정된 클래스로서 수직 클래스보다 장점을 갖는다는 것을 알았다.
도 3c는 미리 결정된 클래스가 수평 클래스인 하나의 실시형태에서, 도 3b에서 도시된 방법(300B)을 통한 논리 플로우(300C)를 나타내는 플로우차트를 도시한다. 특히, 도 3b의 단계 310는 인트라 코딩 모드가 수평 클래스에 속한 경우에 대한 대체 단계 310C에 특별화된 것이다. 방법(300B)의 테스트(330)는 논리 플로우(300C)에서 도시되지 않고, 따라서 단계 340에서의 블록 전치는 무조건적으로 수행된다.
이제 도 4a와 도 4b를 참조한다. 도 4a는 전치된 블록(410T)을 생성하기 위해 양자화된 변환 계수들의 샘플 8x8 블록(410)에 대한 전체 블록 전치(400A)의 적용을 도시하며, 이러한 전치는 통상적인 매트릭스 전치, 즉 블록의 좌측 상단 모서리로부터 우측 하단 모서리까지 진행하는 대각선에 관한 플립이다. 초기 블록(예컨대, 블록 410)을 B[j,i] (여기서 j = 0 . . BlockHeight - 1 및 i = 0 . . BlockWidth - 1)로 표시하고, 전치된 블록(예컨대, 블록 410T)을 BT[j,i] (여기서 j = 0 . . BlockHeight - 1 및 i = 0 . . BlockWidth - 1)로 표시하면, 완전 블록 전치는:
BT[j,i] = B[i,j], (여기서 j = 0 . . BlockHeight - 1 및 i = 0 . . BlockWidth - 1)
으로서 공식화될 수 있다.
한편, 도 4b는 도 4a에서와 동일한 샘플 8x8 블록(410)에 대한 부분 블록 전치(400B)의 적용을 도시한다. 이 경우, 계수 블록들(412, 414)과 더불어, 블록(410)의 좌측 가장자리를 따르는 4x4 계수 블록들(411, 413)은 개별적으로 전치되어 전치된 계수 블록들(411T, 413T)를 생성하며, 최종적인 결과는 부분적으로 전치된 블록(410T')이다. 다른 실시형태(미도시됨)에서, 블록(410)의 최상단 가장자리를 따르는 블록들(411, 412)이 개별적으로 전치될 수 있다. 이러한 2개의 실시형태들은 본 발명개시의 범위 내에 있는 다양한 부분 전치들의 예시들에 불과하다. 이러한 각각의 부분 블록 전치의 경우, 공식은 완전 블록 전치에 대한 위 공식의 제한 및/또는 적응이다.
이제 도 5a와 도 6a를 참조한다. 도 5a는, 통상적인 인코더(100A)와 양립 가능한 통상적인 디코더(500A), 즉, 상기 인코더에 의해 생성된 비디오를 디코딩할 수 있는 디코더를 블록도 형태로 도시한다. 도 6a는 인트라 코딩된 프레임을 위한 잔차들의 블록을 디코딩하기 위한 대응하는 통상적인 방법(600A)을 나타내는 플로우차트를 도시한다.
디코더(500A)는 예컨대 도 1a의 인코더(100A)에 의해 인코딩된 양립 가능한 비트스트림(199)을 수신한다. (기능적으로 상이한 인코더들은 그럼에도 불구하고 단일 디코더에 의해 디코딩될 수 있는 인코딩된 비트스트림들을 생성할 수 있다는 것은 본 업계에서는 공지된 사항이다.) 디코더(500A)는 재구성된 비디오(101A)를 궁극적으로 생성하는데, 이 재구성된 비디오는, 손실을 갖는 인코딩 프로세스로 인해, 인코더에 입력되었던 원래의 비디오 소스(101)의 불완전하지만 적당한 복제물이다. 디코더(500A)는 복수의 비디오 압축 표준들에 따라 동작하도록 구성될 수 있다. 예를 들어, 디코더(500A)는 AVS- 또는 AVS2-준수형 일 수 있다.
단계 610에서, (인코더(100A)의 엔트로피 인코더(125)의 액션에 대응하고 이를 원상태로 하는) 엔트로피 디코더(510)는 인코딩된 블록을 생성하는데 이용되는 (도 2a와 도 2b에서 도시되거나 열거된 33개의 인트라 예측 모드들 중에서) 인트라 예측 모드를 포함하여, 해당 블록과 관련된 데이터를 엔트로피 디코딩한다. 디코더(500A)는 (다양한 표준에 기초하여) 어느 코딩 모드를 이용해야 하는지를 결정하는 태스크를 갖는, 인코더(100A)의 코딩 모드 선택기(160)에 대응하는 컴포넌트를 포함하지 않는다. 이보다는, 이전에 디코딩된 데이터는 인코딩 중에 있는 현재 프레임이 I형, P형, 또는 B형인지 여부와, 프레임 내의 특정 코딩 유닛들이 인터 코딩 또는 인트라 코딩될 것인지 여부의 표시를 포함한다. 단계 620에서, 엔트로피 디코더는 또한 잔여 데이터의 엔트로피 디코딩된 블록을 생성하기 위해 인코딩된 블록을 엔트로피 디코딩한다.
단계 660에서, 양자화된 변환 계수들의 엔트로피 디코딩된 블록은 (도 1a의) 인코더(100A) 내의 양자화기(115)에 의해 (도 3a의) 단계 320의 일부로서 수행된 양자화를 무효화하기 위해 양자화 해제기(520)에 의해 양자화 해제된다. 이것은 잔여 데이터의 양자화 해제된 블록을 생성시킨다. 단계 670에서, 단계 320의 나머지 동안에 인코더(100A)의 스펙트럼 변환(110)이 행했던 것을 무효화하기 위해 잔여 데이터의 양자화 해제된 블록에 대해 역 스펙트럼 변환(525)이 행해진다.
디코더(500A)의 일정한 컴포넌트들의 동작들은 방법(600A)의 일부로서 도시되지 않은 통상적인 단계들을 포함한다. 공간 보상기(530)는 위에서 언급한 바와 같이 비트스트림으로부터 복원된 인트라 예측 모드를 적용한다. 모션 보상기(550)에 의해 I형 및 B형 프레임들에 대해 모션 보상이 수행된다. 디블록킹 프로세서(540)는 필터링을 수행하여 아티팩트 블록 경계들을 제거시키고 및/또는 (인코딩 프로세스 동안에 예상된 디코더(500A)의 대응하는 디블록킹 프로세서(145) 처럼) 다른 평활화를 수행할 수 있다. 프레임 버퍼(545)는 후속적인 인트라 및 인터 예측을 위한 데이터를 저장한다.
이제 도 5b와 도 6b를 참조한다. 도 5b는, 도 1b에서 도시된 인코더(100B)에 의해 인코딩된 비디오를 디코딩하기 위한 신규한 디코더(500B)를 블록도 형태로 도시한다. 도 6b는 도 3b에서 도시된 방법(300B)에 따라 인코딩된 잔차들의 블록을 디코딩하기 위한 방법을 나타내는 플로우차트를 도시한다. 신규한 인코더(100B)는 블록 전치(120)를 포함하기 때문에, 신규한 디코더(500B)는 블록 전치의 역을 적용함으로써 블록 전치의 효과를 무효로 돌리기 위해, 인코딩 컴포넌트들의 시퀀스에서 적절하게 위치한 컴포넌트를 포함해야 하며, 그렇지 않으면, 변환 계수들이 잘못된 주파수들과 연계될 것이기 때문에, 공간 영역 데이터는 왜곡된 변환 영역 데이터로부터 궁극적으로 재구성될 것이다. 물론, 블록 전치(block transpose)가 2-기간(period-two) 연산을 수행하는데, 이는 블록 전치를 적용하는 것이 항등(즉, 아무것도 하지 않음) 연산을 적용하는 것이 두 배라는 것을 의미한다. 다른 말로 하자면, 블록 전치(120)는 자기 자신의 역(inverse)이다. 따라서, 신규한(novel) 디코더(500B)는, 블록 전치(515) - 블록 전치(515)는 블록 전치(120)의 역일뿐만 아니라 항등임 - 가 엔트로피 디코더(510)와 역양화기(520) 사이에 개재된다는 점에서 종래의 디코더(500A)와는 다르다. 더 나아가, 양립이 가능하도록, 정확히 동일한 유형의 블록 전치 - 전체 또는 일부 - 가 엔코더 및 디코더 둘 다 내에 통합되어야 한다. 블록 전치(515)는 점선의 윤곽선으로 표시되는데, 이는 인코딩된 블록을 생성하기 위해 사용되는 인트라 예측 모드가, 인코딩 동안 인코더(100A)의 블록 전치(120)의 연산을 유발하는 특정한 미리 결정된 클래스(class) 내에 있을 경우에만 이용되기 때문이다.
유사하게, 신규한 디코딩 방법(600B)은, 신규한 인코딩 방법(300B)와 양립되도록, 블록 전치가 양자화되는 변환 블록에 적용되는 단계 650을 포함해야 하고, 또한 양립되도록, 적용되는 정확히 동일 유형의 전치 - 전체 또는 일부 - 가 인코딩 및 디코딩 둘 다 동안에 적용되어야 한다는 점에서 종래의 방법(600A)와는 다르다.
하지만, 단계 650은, 단계 620에서, 현재 블록의 인코딩 동안 사용되는 인트라 예측 모드가 미리 결정된 클래스 내의 것이라는 결정이 긍정 결과를 갖는 조건 하에만 실행된다. 이것은, (a) 계수들이 수직 클래스 내의 모드들을 위한 것과 유사하게 분배되도록 수평 클래스 내의 모드들을 위해서 전치하거나, 수평 클래스 내의 모드들을 위한 것과 유사하게 분배되도록 수직 클래스 내의 모드들을 위해 전치하는 것만이 의미가 있기 때문이다. (실제에서는, 본 명세서의 다른 부분에서 설명되는 바와 같이 옵션(a)가 바람직하다.) 만약 단계 620에서 인트라 예측 모드의 테스트가 부정 결과를 가지면, 인코딩된 블록은 도 6a의 방법(600A)에서 마찬가지로 단지 단계 640에서 엔트로피 디코딩된다. 반면에, 만약 이 테스트가 긍정 결과를 가지면, (블록-전치 단계 650 이전에) 단계 640'에서 인코딩된 블록의 엔트로피 디코딩이 단계 630에서 콘텍스트 인덱스의 업데이트를 후속되어야 하며, 그렇치 않으면, 더 많은 콘텍스트들이 사용될 것이고, 엔트로피 인코딩은, 만약 콘텍스트가 업데이트된 콘텍스트 인덱스에 따라 도출되면 더 복잡해 질 것이다. 업데이트는, 인코딩 동안 수행되는 것과 정확히 마찬가지로 수행된다. 예를 들면, 일부 실시형태에서, 인코딩 동안 블록 전치를 유발했던 특정 미리 결정도니 클래스가 수평 클래스였다고 가정한다. 인코더(100B)는 값 NTRA_PRED_VER, INTRA_PRED_HOR, 또는 INTRA_PRED_DC_DIAG(예를 들면, 각각 0, 1, 및 3와 같은 상수들)를 갖는 콘텍스트 인덱스 intraModeIdx를, 인트라 예측을 위해 - 그리고 그러므로 모드 종속적 엔트로피 인코딩을 위해 - 사용되는 모드가 각각 수직, 수평 또는 대각선 클래스 내에 있는 것을 표시하는 것으로 통상 해석한다고 또한 가정한다. 그러면, 콘텍스트 인덱스의 업데이트를 나타내는 의사-코드(pseudo-code)는:
If intraModeIdx = INTRA_PRED_HOR,
intraModeIdx = INTRA_PRED_VER
양자화 해제 단계 660B는 방법(600A)의 단계 660와는 전혀 다르지 않게 기능한다. 상이한 특징부(feature) 번호는 이 특징부가, 단계 650에서 전치되었거나 되지 않았을 수 있는, 보다 다양한 입력을 가진다는 것을 반영한다.
도 6c는 도 6b에 나타낸 방법(600B)의 일 실시형태에서 논리 흐름(600C)을 나타내는 흐름도를 도시한다. 이 실시형태는, (전치의 적용을 유발하는) 특정 미리 결정된 클래스가 수평 클래스이고, 인코딩된 블록을 생성하기 위해 사용되는 인트라 예측 모드가 이 클래스 내에 있는 경우로 제한된다. 이 논리 시퀀스는 방법(600B)의 단계 610에서와 동일하게 기능하는 단계 610C에서 시작하며, 변경된 특징부 번호는, 결과가 수평 클래스 내에 있는 디코딩된 인트라 예측 모드라는 것을 반영한다. 이러한 결과로 인해, 콘텍스트 인덱스는 예를 들면, 위에서 설명된 의사 코드에 따라 무조건적으로 업데이트된다(그리고, 테스트(620)는 도시되지 않음). 단계 640'과 단계 650이 방법(600B)에서와 같이 후속된다. 양자화 해제 단계 660C는 방법(600B)의 단계 660B와는 전혀 다르지 않게 기능한다. 상이한 특징부 번호는 이러한 논리 경로 덕분에, 단계 650에서 필연적으로 전치되었다는 것을 단지 반영할 뿐이다.
레벨런(level-Run) 코딩을 위한 개선된 모드-종속적 콘텍스트 설계
공동 계류중인 국제출원 PCT/CA2013/050020에서, 만약 레벨런(level-run) 쌍의 엔트로피 인코딩을 위한 콘텍스트가, 인트라 예측 모드가 속하는 클래스 및 현재 계수 그룹 내의 변환 계수들의 위치에 적어도 부분적으로 기초해서 도출된다면 코딩 효율에 도움이 된다는 것이 개시되었다. 이 목적을 위해, 인트라 예측 모드의 3개의 클래스(본 응용에서 도 2a의 분류(200A)를 참조해서 정의된) 각각을 위해, CG 내의 계수 위치의 대응 2분 구획(bipartite partition)이 개시되었다. 그런 다음, 특정 모드 클래스를 위해 레벨런 쌍들의 각각의 빈(bin)을 엔트로피 코딩하기 위한 콘텍스트가, 이 빈에 대응하는 계수가 위치하는, 그 클래스를 위한 구획의 두 영역들에 기초해서 도출되었다. 이제, 코딩 효율의 추가적 향상이 다음에 설명되는 2분 구획에 의해 달성될 수 있다는 것을 인식하였다. 위에서 개시되었던 것을 고려하여, 구획의 응용이 또한 임의의 전치 연산의 존재에 적응되어야 하며, 그렇치 않으면, 모드 종속적 콘텍스트 설계가 적응이 된 것만큼 효울적이지 않을 것이다.
현재의 CG를 위한 레벨런 쌍들을 엔트로피 인코딩하기 위한 콘텍스트를 도출하기 위해, 변환 계수들의 3개의 분리(disjoint) 영역들로 구획하는 3개의 다른 신규한 방식들을 나타내는 도 7을 이제 참조한다. 나타낸 각각의 경우에서, CG의 사이즈는 4개의 계수들 곱하기 4개의 계수들이다. 각각의 구획은, (비록 이 구획들이 도 2a의 분류(200A)를 이용해 또한 이용될 수 있지만) 도 2b의 분류(200B)를 참조해서 위에서 정의된 3개의 클래스들 중 각각의 하나에서 인트라 예측 모드를 위해 가장 적절하다.
구획(710)은 CG의 3개의 분리된 수평 스트립으로 이루어지는데, 즉, 상단 행으로 이루어지는 영역 A, 특징부(711); 중앙 행들로 이루어지는 영역 B, 특징부(712); 및 하단 행으로 이루어지는 영역 C, 특징부(713)로 이루어진다. 어떤 블록 전치도 현재 블록(또는 현재 CG를 포함하는 부분)에 적용되지 않는다고 가정하면, 이 구획은 수직 클래스 내의 인트라 예측 모드를 위해 설계된다. 만약 모드가 수직 클래스 내에 있지만, 현재 CG가 전치에 의해 영향받는다면, 다음에 설명되는 구획(720)이 채용된다.
구획(720)은 CG의 3개의 분리된 수평 스트립으로 이루어지는데, 즉, 좌측 열로 이루어지는 영역 A, 특징부(721); 중앙 열들로 이루어지는 영역 B, 특징부(722); 및 우측 열로 이루어지는 영역 C, 특징부(723)로 이루어진다. 어떤 블록 전치도 현재 블록(또는 현재 CG를 포함하는 부분)에 적용되지 않는다고 가정하면, 이 구획은 수평 클래스 내의 인트라 예측 모드를 위해 설계된다. 만약 모드가 수평 클래스 내에 있지만, 현재 CG가 전치에 의해 영향받는다면, 위에서 설명되는 구획(710)이 채용된다.
구획(730)은 CG의 3개의 분리된 (근사적으로) 대각선 스트립들로 이루어지는데, 즉, CG의 상부 좌측 코너에 있는 3개의 계수들로 이루어지는 영역 A, 특징부(731); CG의 하측 오른쪽 코너에 있는 6개의 계수들로 이루어지는 영역 C, 특징부(733); 및 영역 A와 B 사이의 대각선 스트립 내의 잔여 7개의 계수들로 이루어지는 영역 B, 특징부(732)로 이루어진다. 이 구획은 대각선 클래스에 속하는 인트라 예측 모드에 맞게 설계된다. 이 구획은 전치 하에서 불변이다. 임의의 경우에서, 위에서 언급된 바와 같이, 대각선 클래스 내의 모드들을 위해 전치할 어떠한 이유도 없어서, 현재 CG가 전치에 의해 영향을 받는지 여부의 고려는 대각선 클래스 내의 모드를 위해 논의의 여지(moot)가 있다.
구획(710 및 720)에 대해 전술한 바로부터, 현재 CG의 레벨런 쌍을 엔트로피 인코딩하기 위한 콘텍스트를 도출하는 목적을 위해 이러한 구획들의 어느 것을 이용할지는 전치가 채용되는 지의 여부에 종속한다는 것을 명백한 것이다. 따라서, 전치(도 8b 및 8c)를 채용하지 않는 모드-종속적 콘텍스트 설계를 위한 방법은, 일부 상황들 하에서, 전치를 채용할 수 있는 실시형태들(도 9a 내지 도 9c)을 위해 분리적으로 설명되어야 한다.
어떠한 전치가 채용되지 않을 때, 현재의 CG를 위해 레벨런 쌍들을 엔트로피 인코딩하기 위한 콘텍스트를 도출하는 목적을 위해서, 도 7의 구획들(710, 720, 및 730)을 활용하는 것과 각각 관련이 있는 도 8a 내지 도8c를 이제 참조한다.
도 8a는 블록 전치를 이용하지 않고 잔차의 블록을 모드 종속적 레벨런 인코딩하기 위한 기존 방법(300D)을 설명하는 흐름도를 도시하며, 이 도면은 단계 310을 생략해서, 도 3a의 방법(300A)을 반영한다. 단계 320과 단계 350은 방법(300A)에서와 정확히 동일하다. 단계 360D는, 레벨런 쌍들의 엔트로피 인코딩이, 이 빈에 대응하는 계수가 CG의 다수의 영역들 중 어느 것에 속하는지에 적어도 부분적으로 기초해서, CG를 위해 레벨런 쌍의 각각의 빈마다 콘텍스트를 도출함으로써 이제 수행되며, CG는 CG를 인코딩하기 위해 사용되는 인트라 예측 모드에 기초해서 영역들로 구획되었다. (위에서 언급된 바와 같이, 종래 개시는 2분 구획을 규정하였다.)
도 8b는 도 8a에 나타낸 방법(300D)의 유사 단계 360D이지만, 도 7에 도시한것들 중에서 3분 구획(tripartite partition)의 선택을 나타내기 위해 적응되는, 단계 360D'를 상세히 설명하는 흐름도를 도시한다. 단계 361에서, 현재 CG를 인코딩하기 위해 사용되는 인트라 예측 모드가 3개의 클래스들 중 어느 것에 속하는지에 대한 결정이 수행된다. 모드가 대각선, 수직, 또는 수평 클래스에 속하는지의 여부에 따라, 각각 구획(730), 구획(710), 또는 구획(720)을 이용해서 엔트로피 인코딩을 수행하는, 단계 361A, 단계 361B, 또는 단계 361C로 제어가 각각 전달된다.
도 8c는 단계 361x - 도 8b의 (경우에 따라) 단계 361A, 361B, 또는 단계 361C를 나타냄 - 를 상세히 설명하는 흐름도를 도시하며, 도 8b의 단계 361에서 선택되는 구획(각각 730, 710, 또는 720)에 적어도 부분적으로 기초해서 콘텍스트가 도출된다. 단계 362에서, 레벨런 쌍(level-run pair)의 현재 빈(current bin)에 대응하는 계수가 DC 계수인지 여부에 대한 결정이 이루어진다. (DC 계수는 전체 현재 블록에서의 상부 좌측 계수(top-left coefficient)이기 때문에, 이것은 현재 CG가 블록의 상부 좌측 CG인 경우에만 발생할 수 있다.) 이렇게 되면, 이 하나의 특별한 케이스에서 콘텍스트 모델 0이 사용된다. 그렇지 않으면, 3개 구획(tripartite partition)이 사용된다. 단계 363에서, 레벨런 쌍(level-run pair)의 현재 빈(current bin)에 대응하는 계수가 속하는 3개의 영역에 대한 결정이 이루어진다. 계수가 영역(A, B, 또는 C)에 속하는지 여부에 따라, 각각 콘텍스트 모델 1, 2, 또는 3을 사용하는 엔트로피 인코딩(entropy encoding)을 수행하는 단계 363A, 단계 363B 또는 363C로 제어가 각각 통과(pass)된다. 간단한 일실시형태에서, 런(run)의 각 빈(bin)을 엔트로피 인코딩하기 위한 콘텍스트 모델은 하기의 의사코드(pseudo-code)에 의해 주어질 수 있다:
현재 CG가 상부 좌측 CG이면,
ctxInc(run) = regionCGIdx * 3 + min(2, (absSum+absLevel) / 2)
그렇지 않으면,
ctxInc(run) = (regionCGIdx - 1) * 3 + min(2, (absSum+absLevel) / 2) + 12
여기서, regionCGIdx = 콘텍스트 모델 i에 대한 i이고, i = 0, 1, 2, 또는 3이며; absSum은 역 스캔 순서(reverse scan order)로 미리 코딩된 비-제로(non-zero) 계수의 레벨의 합(sum)이고; absLevel은 레벨런 쌍에서의 런(run)에 대응하는 레벨이다. 이제, 현재 CG에 대한 레벨런 쌍을 엔트로피 인코딩하기 위한 콘텍스트를 도출하기 위한 목적을 위해 도 7의 구획(710, 720, 및 730)을 사용하는 방법들이 도시된 도 9a 내지 도 9c를 참조한다. 그러나, 도 8a 내지 도 8c의 방법과는 반대로, 이 방법들은 전치(transpose)가 채택되는 가능성을 수용한다.
도 9a에는, 인코딩된 블록을 생성하는데 사용되는 인트라 예측 모드(intra-prediction mode)가 특정의 미리 결정된 클래스(class)에 있는 경우에, 블록 전치(block transpose)를 사용하는 나머지 블록들의 모드 종속 인코딩(mode-dependent encoding)을 위한 방법(300E)을 예시하는 플로우차트가 도시되어 있다. 방법(300E)는, 빈에 대응하는 (전치 가능한) 계수인 CG의 몇가지 영역에 적어도 부분적으로 기초하여 레벨런 쌍의 각 빈에 대한 콘텍스트를 도출함으로써 레벨런 쌍을 엔트로피 인코딩하는 대체 단계 360E에서 도 3b의 방법(300B)과 상이하다. 영역들은, 단계 340에서, 계수에 전치가 적용되었는지와 CG를 인코딩하기 위해 사용되는 인트라 예측 모드에 기초하여 구획을 구성한다. 이 결합된 조건의 제1 파트는 정확하게 도 8a의 단계 360D에서 언급된 조건 및 도 8b의 단계 360D'에서의 세부사항이다.
단계 340에서 전치가 적용되는지에 대한 조건의 제2 파트는 더 면밀한 고려사항(consideration)을 가지고있다. 첫번째로, 적용된 전치가 완전 블록 전치(full block transpose)이면, 상기 조건은 단계 330에서 테스트의 조건과 동등하다. 즉, 제2 조건은 단계 330에서와 동일한 방식으로 테스트될 수 있다.
두번째로, 그 계수가 있는 영역을 결정하기 위한 계수의 위치를 판단(judge)할 때, 이것은 사용되는 포스트-전치(post-transpose)이다.
세번째로, 적용된 전치의 중요성은 이 경우에 마찬가지로 구획이 "전치"되어야 한다는 것이다. 예컨대, 인트라 예측 모드가 수평 클래스(horizontal calss)에 있는 경우에 전치(transposing)의 포인트(point)는, 수직 클래스(vertical class)에서의 모드를 위한 분배(distribution)과 마찬가지로 분배되도록, 위에서 언급한 바와 같이, 이것이 전치되지 않은 세로 모드 블록이면, 콘텍스트 인덱스(context index)가 업데이트되어야 하는 것처럼, 전치된 가로 모드 블록을 트리팅(treating)하는 것으로 인코더(100B)를 "트리킹(tricking)"하는 것을 완료하기 위해, 전치된 계수를 위치 결정(position)한다. 여기서, 전치가 적용될 때, 수평 클래스에서의 모드를 위한 콘텍스트를 도출하기 위해 구획도 사용되면, 인코더(100B)는 수직 클래스(전치 없음)에서의 모드를 위해 사용되는 구획, 즉 구획(710)을 채택하기 위해 더 트리킹(적절한 코드에 의해)되어야 한다. 또한, 이것은, 현재 CG의 구획에 적어도 부분적으로 기초하여 콘텍스트를 도출하는 완전한 이득(benefit)을 얻기 위한 것이다. 하나의 구획이 전치의 적용에 의해 다른 것으로부터 정말로 생성되지 않는 경우에도, 이 레이아웃에서, 구획(710)은 구획(720)(전치 없이 수평 클래스에서의 모드를 위한 것)의 전치이다. 이러한 구획의 조건적 스와핑(swapping)은 도 9b를 참조하여 이하 상세히 설명될 것이다.
네번째로, 적용된 전치가 단지 부분적 블록 전치이면, 이 전치를 설명하기 위한 순응(accommodation)은 전치가 적용되는 계수를 위해서만 이루어진다. [이 전치 하에서 변하지 않는 대각선(diagonal) 상에 놓여 있더라도, 이 전치의 도메인에서의 모든 계수를 동일하게 처리(treat)한다.]
마지막으로, 적용된 전치가 단지 부분적인 전치이면, CG에 적용하는 구획은 전치가 CG에 적용되는 경우에만 전치된다는 것을 통상의 기술자는 인식한다. 이러한 경우에, 상이한 클래스를 위한 분배가 더 명확하기 때문에, 콘텍스트들이 완전히 공유되지 않지만 인코딩 효율이 여전히 향상된다.
도 9b는, 도 8a에 도시된 방법의 하나의 단계를 상세히 설명하지만 도 7에 도시된 것 중에서 구획의 선택을 예시하도록 적응된(adapted) - 블록 전치의 임의의 사용을 수용하는 것 외에 도 8b와 유사한 - 플로우차트를 나타낸다. 상기 적응(adaptation)은 인코딩되는 빈에 대응하는 계수에 전치가 적용되었는지에 따라 수직 클래스 및 수평 클래스 중 어느 하나에서의 모드를 위해 단계 365에서의 결정의 추가이다. (이미 언급한 바와 같이, 전치는 대각선 클래스(diagonal class)에서의 모드를 위한 트리거되지 않는다.) 수평 클래스에서의 모드에 대하여 응답(answer)이 긍정(affirmative)이면, 단계 361C에서의 구획(720) 대신 단계 361B에서 구획(710)(수직 클래스에서의 모드에 대하여 원래 설계됨)이 사용된다. 수직 클래스에서의 모드에 대하여 응답이 긍정이면, 단계 361B에서의 구획(710) 대신 단계 361C에서 구획(720)이 사용된다.
수평 클래스에서의 모드를 위한 및/또는 수직 클래스에서의 모드를 위한 부분적 블록 전치 또는 완전 블록 전치를 처리할 수 있다는 점에서 이 플로우차트는 오버파워된다(overpowered). 실제로, 하나의 클래스에 대하여 가끔이 아닌 그리고 다른 클래스에 대하여 다른 시간이 아니라 하나의 특정 클래스 또는 다른 클래스에 대하여 지속적으로 전치가 이루어진다. 따라서, 인코딩 알고리즘의 실제 프로그래밍을 위해, 플로우차트가 복잡하게 될 필요가 없다. 예컨대, 적용된 전치가 부분적 전치이고; 적용된 전치가 완전 전치일 때, 364 외측의 "수평"선(364C)은 단계 361B로 직접 갈 수도 있지만, 전치를 트리거하는 특정의 미리 결정된 클래스가 수평 클래스이면, 테스트(364) 외측의 "수직"선(364B)은 단계 361B로 직접(무조건적으로) 갈 수 있다.
도 9c는 특정의 미리 결정된 클래스가 수평 클래스인 가정하에서, 하나의 특정 경로(360E')를 상세히 설명하는 플로우차트 내지 도 9b의 단계 360E의 플로우차트를 나타낸다. 도 9b의 "수평"선(364C)에 대응하는 단계 364C에서, 인코딩된 블록을 생성하기 위해 사용되는 인트라 예측 모드가 수평 클래스(전치를 트리거하는 특정의 미리 결정된 클래스임)라는 것이 결정된다. 환경(즉, 블록 전치의 애플리케이션)하에서 수직 클래스에서의 모드를 위해 원래 설계된 구획(710)이 어떻게 채택되는지를 나타내는 도 9b의 단계 361A가 상세히 설명된다. 이것은 도 8c의 포괄적인 단계 361x의 특정 실시형태이다. 단계 361x에 비교하면, 영역 A는 CG의 상부 열(row)이고, 영역 B는 중간 2개 열이고, 영역 C는 이제 하부 열이다.
이제, 제로 평가된 변환 계수들을 불필요하게 인코딩하는 것을 회피하기 위해 전치 블록의 "개요(overview)"가 어떻게 인코딩되는지 설명하기 위해 도 10a, 도 10b, 및 도 10c를 참조한다. 도 10a는, 사이즈 16x16의 4개의 열과 4개의 행의 계수 그룹으로 구획된 샘플 블록(1000)을 나타낸다. 블록(1000)의 상부와 우측으로, 행과 열에 관하여 CG의 2차원 위치를 나타내는 CGx-좌표 및 CGy-좌표가 도시된다. 또한, 블록 내의 계수 그룹의 지그재그 그룹 스캔 순서(1010)가 도시되어 있다. 계수 그룹(1000a 내지 1000p)의 주요 숫자에서의 문자는 상부 좌측 CG(1000a)로부터 하부 우측 CG(1000p)까지의 순서(1010)를 반영한다. 이 특정 지그재그 순서는 (0, 0)에서의 CG에 이어지는 (1, 0)에서의 CG로 시작하지만, (0, 1)에서의 CG가 (0, 0)에서의 CG에 이어지는 "전치된" 버전의 이 순서도 가능하다. AVS2 표준은 도 10a에 도시된 지그재그 순서를 명시하지만, 수평(열 배향) 및 수직(행 배향) 순서 - 양방향 또는 단방향 - 과 같은 다른 타입의 순서도 비디오 코딩(따라서, 본 발명의 범위 내에 있음)에서 사용될 수 있다.
도 10b는, 도 10a에 도시된 동일한 샘플 블록(1000)에 대응하는 계수 그룹 플래그의 블록(1000F)를 나타내고, 블록 내의 계수 그룹의 그룹 스캔 순서에서의 마지막 비제로 계수 그룹의 위치를 나타낸다. 각각의 1은 대응하는 CG가 "비제로" CG인, 즉 적어도 하나의 비제로 변환 계수를 포함하는 것을 나타내고; 각각의 0은 대응하는 CG가 "제로" CG인, 즉 오직 제로값 변환 계수를 포함하는 것을 나타낸다. 순서(1010)에 따르면, 마지막 비제로 계수 그룹(LNZCG: last non-zero coefficient group)은 블록(1000)의 CG(1000m)에 대응하는 플래그(1000Cm)에 의해 플래그되고; 2개의 대응하는 블록의 (x, y) 위치는 (lastCGX, lastCGY) = (3, 1)이다. 마지막 하나가 인코딩될 필요가 있고; 디코딩 중에, 그룹 스캔 순서에서의 후속 CG 내의 모든 계수가 제로가 될 것으로 추론되기 때문에, 통상의 기술자들은 통상적으로 블록에서의 비제로 마지막 비제로 CG를 "마지막" CG로 나타낸다. 그룹 스캔 순서에서의 LNGCG(1000m)에 후속하는 CG(1000n, 1000o, 및 1000p)에는 제로 값 변환 계수만이 있다. LNZCG(1000m)의 위치(x 좌표 및 y 좌표에 관하여, 여기에서는 또는 그룹 스캔 오더에서의 1차원 위치로서)를 인코딩함으로써 이들 제로들을 인코딩할 필요가 없을뿐만 아니라, CG(1000n, 1000o, 및 1000p)에 대응하는 제로 값 플래그를 인코딩할 필요가 없다. "n/a"(not applicable; 해당 없음) 표기로 표시된 손실 데이터가 주어지면, 플래그 블록 1000F는 "부분" 블록으로 보여질 수 있다(그럼에도 불구하고, 이것은 완전 블록을 재구성하는 역할을 제공할 수 있다).
도 10c는 도 10a에 도시된 동일 샘플 블록(1000)에 대한 일부 계수-레벨 세부 사항을 도시한다. CG 1000e의 경우, 그 CG 내의 변환 계수의 스캔 순서(1020)가 도시된다. CG 레벨에서의 그룹 스캔 순서와 마찬가지로, 계수 레벨에서의 스캔 순서는 상부 좌측 계수 1000e0에서부터 하부 우측 계수 1000e15로 진행하고, 오른쪽으로 방향을 바꾸기 시작하여 그런 다음 대각선으로 방향을 바꾼다. 또한 그룹 스캔 순서와 마찬가지로, 도 10c에 도시된 것은 AVS2 표준에 의해 규정된 것이지만, 계수 레벨에서의 다른 스캔 순서가 가능하다(본 발명개시의 범위 내에 있음). 변환 계수의 2차원 위치를 나타내는 Cx 좌표축 및 Cy 좌표축이 또한 CG 1000k의 우측에 그리고 상위에 도시된다. 계수 그룹 1000k 및 1000m의 경우, 이들 계수 그룹의 스캔 순서에 각각의 최종 비제로 계수(last non-zero coefficient; LNZC) 1000k13 및 1000m3가 도시된다. CG 1000k의 경우, (lastPosX,lastPosY) = (3,2)이다. CG 1000m의 경우, (lastPosX,lastPosY) = (1,1)이다.
모든 스캔 순서는 비대칭적이다. 예를 들어, 스캔 순서(1020)는 CG의 전치 또는 CG의 임의의 다른 플립 하에서 변한다. 블록을 전치하는 것에 관하여 간단히 언급한 바와 같이, CG 내의 계수의 특정한 지그재그 스캔 순서(1020) 및 블록 내의 CG들의 그룹 스캔 순서(1010)로 인해(블록 각각은 대각선으로 방향을 바꾸기 전에 (아래쪽이 아니라) 오른쪽으로 방향을 바꿈), 수평 클래스에서의 블록 인트라 예측 모드를 전치하는 것에 이점이 있다는 것이 이제 인식되었다. 수직 클래스의 모드의 경우, LNZC가 보통 첫번째 2개의 행들에 있지만, 수평 클래스의 모드의 경우, LNZC는 보통 제 1의 2개의 열들에 있다. 수평 모드의 블록들을 전치함으로써, LNZC는 첫번째 2개의 행들로 이동되고, 이는 스캔될 계수의 수를 평균적으로 감소시켜, 코딩 효율에서 이익을 얻는다.
계수 그룹의 LNZC의 (x,y) 위치의 모드 의존 코딩
비디오 압축에서 인트라 예측 및 변환 프로세스 이후에, CG가 변환 블록의 상측 엣지에 위치하는 경우, 그 CG에서의 LNZC는 CG의 상부에 가까이 위치하는 경향이 있다는 것이 이제 인식되었다. 유사하게, CG가 변환 블록의 좌측 엣지에 위치하는 경우, LNZC는 CG의 좌측에 가까이 위치하는 경향이 있다.
이러한 관찰을 활용하기 위한 목적으로, 도 10a의 변환 블록(1000)의 2개의 상이한 구획들이 도 11a 및 도 11b에 도시된다. 도 12는 이러한 구획들 중 하나를 이용하는 방법을 나타낸다.
도 11a에서, 구획(1100A)은 블록(1000)의 계수 그룹을 계수 그룹의 4개의 분리 영역으로 분할한다. 이 영역들은, 영역 0, 좌측 상부 CG 1000a 단독으로 구성된 특징부(1110A); 영역 1, 상부 좌측 CG 1000a를 제외한 블록(1000)의 상측 엣지 상의 CG들로 구성된 특징부(111A); 영역 2, 좌측 상부 CG 1000a를 제외한 블록의 좌측 엣지 상의 CG들로 구성된 특징부(1112A); 및 영역 3, 블록의 좌측 엣지 상에도 상부 엣지 상에도 있지 않는 모든 CG들로 구성된 특징부(1113A)가 있다.
반면에, 도 11b에서, 구획(1100B)은 블록(1000)의 계수 그룹을 계수 그룹의 3개의 분리 영역으로 분할한다. 이 영역들은, 영역 0, 좌측 상부 CG 1000a 단독으로 구성된 특징부(1110B); 영역 1, 블록의 좌측 엣지 또는 상측 엣지 중 어느 하나 상에 있거나 이들 둘다에 있지 않는 CG들로 구성된 특징부(1111B); 및 영역 2, 블록의 좌측 엣지 상에도 상측 엣지 상에도 있지 않는 모든 CG들로 구성된 특징부(1112B)가 있다.
도 12는 도 11b에 도시된 3분 구획(1100B)의 이용을 상세하게 나타내는 흐름도를 도시한다. 단계 368에서, 현재 CG가 영역 0, 영역 1, 및 영역 2 중 어느 것에 속하는지에 관한 결정이 이루어진다. 영역이 영역 0, 영역 1, 또는 영역 2인지의 여부에 따라, 그 CG의 LNZC의 (x,y) 위치는 단계 368A에서의 콘텍스트 모델 0, 단계 368B에서의 콘텍스트 모델 1, 또는 단계 368C에서의 콘텍스트 모델 2에 각각 기초하여 인코딩된다. 일 샘플 실시형태에서, 현재 CG에서 LNZC의 (x,y) 위치를 엔트로피 코딩하기 위한 콘텍스트 모델은, 다음 의사 코드에 도시된 바와 같이, 영역 인덱스, 인트라 예측 모드 분류, 및 빈 인덱스에 기초하여 결정된다.
현재 CG가 영역 2에 속하면,
ctxInc(lastPosX) = min(binIndex, 1);
ctxInc(lastPosY) = min(binIndex, 1);
그렇지 않으면,
ctxInc(lastPosX) =
regionIndex * 4 + (intraModeIdx >0) * 2 + min(binIndex, 1) + 2;
ctxInc(lastPosY) =
regionIndex * 4 + (intraModeIdx >0) * 2 + min(binIndex, 1) + 2; 여기서,
intraModeIdx=0, 인트라 예측 모드가 수직 클래스에 속하면
= 1, 인트라 예측 모드가 수평 클래스에 속하면
= 2, 그 외
계수 그룹에서의 최종 비제로 계수에 대한 위치 데이터 코딩
통일된 AVS2 코딩 설계에서, CG에서의 최종 비제로 계수의 (x,y) 위치는 (X, Y)로서 코딩되고, 여기서, 원점(0,0)은 CG의 좌측 상부 계수 위치이다. 단항 이진화가 좌표 (X,Y)에 적용된다. 현재 CG가 LNZCG가 아니면, 보통 현재 CG의 최종 비제로 계수 위치는 하부 우측 계수 위치, 하부 좌측 계수 위치 또는 상부 우측 계수 위치에 가까이 위치하고, 이 경우에, (X,Y)를 코딩하는 것은 효율적이지 않은데, 왜냐하면 2개의 좌표들 중 적어도 하나가 값 3에 가까울 것이기 때문이고, 이는 AVS2 표준을 준수하여, 항상 4x4 크기를 갖는 CG에 대해 항상 인코딩될 수 있는 좌표 값들(0 내지 3) 중 가장 길다.
이러한 관찰의 기술적 적용이 도 13에 매우 일반적으로 도시되고, 도 13에서, 흐름도는 인코딩되는 현재 계수 그룹의 스캔 순서에서 최종 비제로 계수의 (x,y) 위치의 수정된 표현을 인코딩하기 위한 새로운 방법(1300)을 나타낸다. 4x4 크기를 갖는 AVS2 준수 CG들에 대한 특정한 실시형태들에서, 이러한 수정은 3 및 2의 값을 각각 0 및 1로 변환하는 것을 야기하여, 평균적으로, 이것은 코딩 효율을 개선시킨다.
이러한 일반적인 방법은 LNZCG 전에, 비제로 CG들인 CG들에만 적용한다. 따라서, 방법(1300)의 제1 단계는, 현재 CG가 이러한 요건에 부합한다는 것을 단계 1310에서 결정하는 것이다. 그런 다음, 단계 1320에서, 최종 비제로 계수의 현재 CG에서의 (x,y) 위치 (X,Y)가 취득된다. 그 뒤에, 단계 1340에서, 불일치 수정이 좌표 (X, Y)에 적용되어 수정된 (x,y) 위치 (X',Y')를 계산한다. 이러한 수정은 (a) 인코딩된 블록을 생성하는데 이용되는 인트라 예측 모드, 및 (b) 현재 계수 그룹에 인접한 적어도 하나의 계수 그룹 중 적어도 하나에 기초한다. 수정이 (a)에 기초하고, (b)에 기초하며, 양자 모두에 기초하는 실시형태들이 도 13a 내지 도 13c에 각각 나타난다. 최종적으로, 단계 1350에서, 수정된 (x,y) 위치 (X',Y')는 콘텍스트 모델을 이용하여 이진화되고 엔트로피 인코딩된다.
도 13a는 방법(1300A)을 나타내는 흐름도를 도시하고, 이 방법(1300A)은 단계 1310이 생략된 도 13에 도시된 방법(1300)의 일 실시형태 - 인트라 예측 모드가 속하는 클래스에 기초하여 (x,y) 위치를 수정함 - 이다. 도 13에 도시되지 않은 단계 1330이 도 13a에 포함되는데, 왜냐하면 인코딩된 블록을 생성하는데 이용될 인트라 예측 모드의 결정이 이제 이 실시형태에서 필수적이기 때문이다. 이것은 점선으로 도시되었는데, 왜냐하면 (a) 이것이 단계 1320 다음에 발생할 필요가 없고, (b) (공간 예측기(105)를 통해) 공간 예측을 수행하기 위해서, 이 방법에 관계없이, (도 1a의 코딩 모드 선택기(160)에 의해) 인트라 예측 모드의 결정이 항상 이루어질 것이기 때문이다.
방법(1300A)의 핵심은 단계 1340A이다. 이 샘플 실시형태에서, 수정의 적용은 인트라 예측 모드가 속하는 클래스에 좌우된다. 단계 1341에서, 클래스가 대각선 클래스인지의 여부가 결정된다. 만약 그렇다면, 단계 1342에서, LNZC의 정확한 (x,y) 위치 (X,Y)는 (3-X,3-Y)로 변환된다. 만약 그렇지 않으면, 단계 1342에서, 클래스가 수직 클래스인지의 여부가 결정된다. 만약 그렇다면, 단계 1344에서, LNZC의 정확한 (x,y) 위치 (X,Y)는 (3-X,Y)로 변환된다. 만약 그렇지 않으면, 단계 1346에서, LNZC의 정확한 (x,y) 위치 (X,Y)는 (X,3-Y)로 변환된다. 마지막 경우에, 제거 프로세스에 의해, 인트라 예측 모드는 수평 클래스에 속하는 것으로 암시된다.
3개의 상이한 변환이 다른 테스팅 순서에 의해 동일한 3개의 각각의 조건들에서 정확하게 달성될 수 있다는 것이 기본 논리이다. 보다 빈번하게 발생하는 조건이 먼저 테스트되면 하나의 특정 순서에 장점이 있을 수 있다(따라서, 수행되는 평균 테스트 수를 줄일 수 있음). 본 발명개시에 정의된 바와 같은, 대각선 클래스가 가장 빈번하게 발생하기 때문에, 도 13a에 도시된 테스팅 순서는 평균적으로 대각선 클래스에 대해 테스트를 먼저 수행하는 것으로 이익을 얻을 수 있다.
도 13b는 방법(1300B)을 나타내는 흐름도를 도시하고, 이 방법(1300B)은 단계 1310가 생략된 도 13에 도시된 방법(1300)의 다른 실시형태 - 현재 계수 그룹의 적어도 하나의 인접한 계수 그룹에 기초하여 (x,y) 위치를 수정함 - 이다. 이 샘플 실시형태에서, 단계 1340B에서 수정의 적용은, 현재 CG에 인접한 이전에 처리된 CG들(즉, 현재 CG에 바로 오른쪽 또는 바로 아래의 것들)이 제로 및 비제로인지에 좌우된다. 단계 1347에서, 우측 이웃(right-neighbour)이 제로이고 하단 이웃(below-neighbour)이 비제로인지 여부가 결정된다. 그러한 경우, 단계 1346에서, LNZC의 정확한 (x,y) 위치 (X,Y)가 (X,3-Y)로 변환된다. 그렇지 않은 경우에는, 단계 1348에서, 우측 이웃이 비제로이고 하단 이웃이 제로인지 여부가 결정된다. 그러한 경우, 단계 1344에서, LNZC의 정확한 (x,y) 위치 (X,Y)가 (3-X,Y)로 변환된다. 그렇지 않은 경우에는, 단계 1349에서, 우측 이웃 및 하단 이웃이 둘 다 비제로인지 여부가 결정된다. 그러한 경우, 단계 1342에서, LNZC의 정확한 (x,y) 위치 (X,Y)가 (3-X,3-Y)로 변환된다. 그렇지 않은 경우에는, 어떠한 변환도 일어나지 않으며, 즉 정확한 (x,y) 위치 (X, Y)는 인코딩되기 전에 산술적으로 수정되지 않고, 이 마지막 경우에, 소거(eliminatno) 처리에 의해, 우측 이웃 및 하단 이웃이 둘 다 제로임이 내포된다.
3가지 상이한 변환이 다른 테스트 시퀀스에 의해 정확하게 동일한 3가지 각자의 조건으로 달성될 수 있다는 것은 기본 논리이다. 더 빈번한 조건이 앞서 테스트되는 경우 하나의 이러한 시퀀스에 어떤 이점이 있을 수 있다(그리하여, 수행되는 평균 테스트 수를 감소시킴).
도 13c는 도 13에 도시된 방법(1300)의 또 다른 실시형태의 단계 1340C를 예시한 흐름도를 도시한다. 이 예시적인 실시형태에서, (x,y) 위치의 수정의 적용은 (a) 현재 CG와 이웃하는 적어도 하나의 CG 및 (b) 인코딩된 블록을 생성하는데 사용될 인트라 예측(intra-prediction) 모드의 분류 중의 적어도 하나에 기초한다. 단계 1347에서, 우측 이웃이 제로이고 하단 이웃이 비제로인지 여부가 결정된다. 그러한 경우, 단계 1346에서, LNZC의 정확한 (x,y) 위치 (X,Y)는 (X,3-Y)로 변환된다. 그렇지 않은 경우에는, 단계 1348에서, 우측 이웃이 비제로이고 하단 이웃이 제로인지의 여부가 결정된다. 그러한 경우, 단계 1344에서, LNZC의 정확한 (x,y) 위치 (X,Y)가 (3-X,Y)로 변환된다. 그렇지 않은 경우에는, 단계 1349에서, 우측 이웃 및 하단 이웃이 둘 다 비제로인지 여부가 결정된다. 그러한 경우, 단계 1342에서, LNZC의 정확한 (x,y) 위치 (X,Y)가 (3-X,3-Y)로 변환된다. 그렇지 않은 경우에는, 단계 1344에서, 인트라 예측 모드가 수직 클래스에 속하는지 여부가 결정된다. 그러한 경우, 단계 1344에서, LNZC의 정확한 (x,y) 위치 (X,Y)가 (3-X,Y)로 변환된다. 그렇지 않은 경우에는, 단계 1345에서, 인트라 예측 모드가 수평 클래스에 속하는지 여부가 결정된다. 그러한 경우, 단계 1346에서, LNZC의 정확한 (x,y) 위치 (X,Y)가 (X,3-Y)로 변환된다. 그렇지 않은 경우에는, 어떠한 변환도 일어나지 않으며, 즉 정확한 (x,y) 위치 (X,Y)는 인코딩되기 전에 산술적으로 수정되지 않고, 이 마지막 경우에, 소거 처리에 의해, 우측 이웃 및 하단 이웃이 둘 다 제로이고 인트라 예측 모드가 대각선 클래스에 속하는 것이 내포된다.
3가지 상이한 변환이 다른 테스트 시퀀스에 의해 정확하게 동일한 3가지 각자의 조건으로 달성될 수 있다는 것은 기본 논리이다. 더 빈번한 조건이 앞서 테스트되는 경우 하나의 이러한 시퀀스에 어떤 이점이 있을 수 있다(그리하여, 수행되는 평균 테스트 수를 감소시킴).
이제 도 14로 가면, 도 13에 개요된 바와 같은 방법(1300)에 따라 인코딩된 비디오를 디코딩하기 위한 방법(1400)을 예시한 흐름도가 도시되어 있다. 이러한 인코딩된 비디오의 블록별(block-by-block) 프로세싱 동안, 단계 1410에서, 현재 블록 내의 현재 계수 그룹에 대하여, 그 계수 그룹의 스캔 순서에서 마지막 비제로 계수의 정확한 (x,y) 위치의 수정되어진 인코딩된 표현 (X,Y)가 디코딩된다. 그 다음, 단계 1440에서, 정확한 (x,y) 위치를 얻기 위해, 불일치(non-identity) 수정이 수정된 표현 (X,Y)에 적용된다. 방법(1300)에 대하여, 수정은 (a) 인코딩된 블록을 생성하는데 이용된 인트라 예측 모드 및 (b) 인코딩된 블록을 생성하는데 이용된 인트라 예측 모드의 현재 계수 그룹에 인접한 적어도 하나의 계수 그룹 중의 적어도 하나에 기초한다.
도 14에 도시되며 방금 기재한 방법(1400)은 도 13a, 도 13b, 및 도 13c에 각각 도시되고 상기에 상세하게 설명한 바와 같은 방법(1300A, 1300B, 또는 1300C)과 같은 방법(1300)의 범위 내의 임의의 다양한 실시형태에 따라 인코딩된 비디오가 적용 가능하다는 것이 충분히 일반적이다. 물론, 방법(1300)의 범위 내의 모든 인코딩 실시형태에 동시에 적용 가능하지 않을 수 있다. 방법(1300)의 임의의 특정 실시형태와 양립하기 위해, 방법(1400)은 방법(1300)의 대응 단계 1340와 양립 가능한 수정 단계 1440의 실시형태를 가져야 한다. 수정 단계 1440은 단계 1340의 반대여야 함은 명백할 것이다. 보다 구체적으로, 각각의 가능한 상황에서 - 인코딩된 블록을 생성하는데 이용된 인트라 예측 모드에 기초하든 인코딩된 블록을 생성하는데 이용된 인트라 예측 모드의 현재 계수 그룹에 이웃한 적어도 하나의 계수 그룹에 기초하든 - , 단계 1440에서 (X,Y)의 변환은 현재 블록의 인코딩 동안 단계 1340에서 (X,Y)의 어느 변환이 수행되었든 되돌려야(un-do) 한다.
3-(3-X)=X 및 3-(3-Y)=Y이므로, 상이한 조건 하에 단계 1340에서 사용될 수 있는 다양한 변환은 - 즉, (X,Y) → (X,3-Y), (X,Y) → (3-X,Y), 및 (X,Y) → (3-X,3-Y) - 주기-2(period-two) 연산이며, 일치(즉, 아무것도 하지 않음) 연산을 적용하는 것의 2배 적용하는 것을 의미한다. 이의 최종 결과는, 실제로, 방법(1400)이 방법(1300)의 특정 실시형태와 양립 가능하도록 필요한 단계 1440의 변형이 방법(1300)의 그 실시형태에 사용된 단계 1340의 변형과 사실상 같다는 것이다. 이러한 경우, 대응하는 방법(1300A, 1300B, 및 1300C)과 양립 가능한 방법(1400)의 3가지 변형은 개별 도면에 도시되지 않는다.
마지막으로, 컴퓨팅 디바이스(1500)의 예시적인 실시형태의 단순화된 블록도를 도시한 도 15를 참조하며, 컴퓨팅 디바이스(1500)는 한정없이, 서버, 적합하게 프로그래밍된 범용 컴퓨터, 오디오/비디오 인코딩 및 재생 디바이스, 셋탑 텔레비전 박스, 텔레비전 브로드캐스트 기기, DVD 또는 Blu-Ray 플레이어 및 인코더로서, 디코더로서, 또는 둘 다로서 기능할 수 있는 (스마트폰, 태블릿, 패블릿 등과 같은)모바일 디바이스를 포함한 임의의 다양한 디바이스일 수 있다. 디바이스(1500)는 디바이스의 기능을 제어하도록 2개의 프로세서(1511 및 1512)를 갖는 것으로 도시되어 있지만, 컴퓨팅 디바이스는 하나의 범용 프로세서를 갖거나 또는 임의의 수의 범용 및/또는 특수 용도 프로세서를 갖도록 설계될 수 있다는 것이 잘 알려져 있다. 디바이스(1500)는 메모리(1520)를 포함하며, 메모리(1520)는 디바이스(1500) 내의 하나 이상의 프로세서, 예를 들어 프로세서(1511 및 1512)에 의해 실행될 수 있는 프로세서 실행 가능한 명령어를 저장할 수 있는 비일시적 프로세서 판독가능한 매체를 포함할 수 있다. 매체는 단일체일 수 있거나 또는 여러 부품들로 구성될 수 있다. 이는 컴팩트 디스크, 플래시 메모리 디바이스, RAM, ROM, 하드 드라이브, ASIC 등과 같은 하나 이상의 유형으로 이루어질 수 있다. 메모리(1520) 또는 이의 부품은 디바이스(1500)로부터 탈착 가능하거나 그리고/또는 그 안에 고정될 수 있다. 메모리(1520) 또는 이의 부품의 속성은 그 안에 저장된 명령어가 불변 및/또는 재프로그래밍 가능하게 할 수 있으며, 재프로그램 가능한 메모리는 휘발성 또는 비휘발성일 수 있다. 다양한 실시형태에서, 명령어는 하드웨어, 펌웨어, 및/또는 소프트웨어 형태로 구현된다고 할 수 있다.
메모리(1520)에 저장된 프로세서 실행 가능한 명령어는 디바이스(1500) 내의 하나 이상의 프로세서, 예를 들어 프로세서(1511 및 152)에 의해 실행될 때, 디바이스(1500)를 다양항 기능을 수행하도록 구성할 수 있다. 이러한 프로세서 실행 가능한 명령어의 특정 그룹은 "컴퓨터 애플리케이션"으로 또는 단순히 짧게 "애플리케이션"으로도 지칭되는 컴퓨터 프로그램을 구성할 수 있다. 특히, 메모리(1520)는 본 개시에 따른 하나 이상의 방법을 수행할 수 있는 인코딩 애플리케이션(1530)을 (프로세서 판독가능한 매체에) 저장할 수 있다 - 이 경우, 디바이스(1500)는 인코더(100B)와 같은 인코더일 수 있음 - . 대안으로서, 메모리(1520)는 본 개시에 따른 하나 이상의 디코딩 방법을 수행할 수 있는 디코딩 애플리케이션(1540)을 저장할 수 있다 - 이 경우, 디바이스(1500)는 디코더(500B)와 같은 디코더일 수 있음 - . 부가의 대안으로서, 메모리(1520)는 인코딩 애플리케이션(1530) 및 디코딩 애플리케이션(1540) 둘 다를 저장할 수 있다 - 이 경우, 디바이스(1500)는 인코더와 디코더 둘 다일 수 있음 - .
메모리(1520)는 인코딩된 비디오의 비트스트림 내의 잔여 데이터의 인코딩된 블록으로부터 디바이스(1500)를 이용하여 잔여 데이터의 현재 블록을 재구성하기 위한 장치일 수 있고, 여기서 현재 블록은 계수 그룹들로 구획되고, 각 계수 그룹은 변환 계수를 포함한다. 이 장치는, 현재 블록 내의 계수 그룹들의 그룹 스캔 순서에서 최종 비제로 계수 그룹 이전의 비제로 계수 그룹인, 현재 계수 그룹에 대하여: (a) 현재 계수 그룹 내의 변환 계수의 스캔 순서에서 최종 비제로 계수의, 현재 계수 그룹 내의, 정확한(true) (x,y)-위치를 나타내는 좌표 (X, Y)를 디코딩하는 수단; 및 (b) 최종 비제로 변환 계수의 정확한 (x,y)-위치를 연산하기 위해 불일치(non-identity) 수정을 좌표 (X, Y)에 적용하는 수단을 포함한다.
대안으로서, 메모리(1520)는 디바이스(1500)를 이용하여 블록들로 구획된 픽쳐(picture)를 포함하는 비디오를 인코딩하는 장치일 수 있고, 블록들에 대한 잔여 데이터는 변환 블록들로 공간 변환되고, 각 변환 블록들은 계수 그룹들로 더 구획된다. 이 장치는, 변환 블록 내의 계수 그룹들의 그룹 스캔 순서에서 최종 비제로 계수 그룹 이전의 비제로 계수 그룹인, 현재 계수 그룹에 대하여: (a) 계수 그룹 내의 변환 계수의 스캔 순서에서 최종 비제로 계수의, 현재 계수 그룹 내의, (x,y)-위치 (X, Y)를 얻는 수단; (b) 변환 블록을 생성하는데 사용된 인프라-예측 모드, 및 현재 계수 그룹에 이웃하는 적어도 하나의 계수 그룹 중 적어도 하나에 기초한 불일치(non-identity) 수정을 이용하여 (x,y)-위치 (X, Y)를 수정된 (x,y)-위치 (X', Y')로 변환하는 수단; 및 (c) 콘텍스트 모델을 이용하여 수정된 (x,y)-위치 (X', Y')를 이진화하고 엔트로피 인코딩하는 수단을 포함한다.
당해 기술 분야에서의 통상의 지식을 가진 자라면, 여기에 기재된 샘플 실시형태의 다양한 루틴 적응 및 수정이 본 개시의 범위 내에 유지되면서 행해질 수 있다는 것을 알 수 있을 것이다. 따라서, 상기 실시형태는 한정적인 것이 아니라 예시적인 것으로 간주되어야 한다.

Claims (19)

  1. 비디오 디코더를 이용하여, 인코딩된 비디오의 비트스트림 내의 잔여 데이터의 인코딩된 블록으로부터, 잔여 데이터의 현재 블록을 재구성하기 위한 방법에 있어서,
    상기 현재 블록은 계수 그룹들로 구획되고, 각 계수 그룹은 변환 계수를 포함하며, 상기 방법은,
    상기 현재 블록 내의 상기 계수 그룹들의 그룹 스캔 순서에서 최종 비제로 계수 그룹 이전의 비제로 계수 그룹인, 현재 계수 그룹에 대하여:
    상기 현재 계수 그룹 내의 변환 계수의 스캔 순서에서 최종 비제로 계수의, 상기 현재 계수 그룹 내의, 정확한(true) (x,y)-위치를 나타내는 좌표 (X, Y)를 디코딩하는 단계; 및
    최종 비제로 변환 계수의 정확한 (x,y)-위치를 연산하기 위해 불일치(non-identity) 수정을 좌표 (X, Y)에 적용하는 단계
    를 포함하고,
    상기 수정은 상기 인코딩된 블록을 생성하는데 이용된 인프라-예측 모드, 및 상기 현재 계수 그룹에 이웃하는 적어도 하나의 계수 그룹 중 적어도 하나에 기초하는 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 현재 계수 그룹은 4x4의 사이즈를 가지며, 상기 수정은 좌표 X를 3-X로 변환하는 것, 및 좌표 Y를 3-Y로 변환하는 것 중 한쪽 또는 양쪽 모두를 포함하는 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 수정은 상기 모드의 분류에 기초하는 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  4. 제 3 항에 있어서,
    상기 모드가 미리 결정된 클래스 내에 있다고 결정하는 단계는,
    상기 모드를 나타내는 데이터를 디코딩하는 단계;
    상기 모드의 분류를 결정하는 단계를 포함하는 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  5. 제 3 항에 있어서,
    상기 현재 계수 그룹은 4x4의 사이즈를 갖고, 상기 수정은,
    상기 모드가 대각선 클래스 내에 있는 경우, 상기 좌표 (X, Y)를 (3-X, 3-Y)로 변환하는 단계;
    상기 모드가 수직 클래스 내에 있는 경우, 상기 좌표 (X, Y)를 (3-X, Y)로 변환하는 단계; 및
    상기 모드가 수평 클래스 내에 있는 경우, 상기 좌표 (X, Y)를 (X, 3-Y)로 변환하는 단계를 포함하는 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 현재 계수 그룹 우측의 상기 이웃하는 계수 그룹, 및 상기 현재 계수 그룹 하단의 상기 이웃하는 계수 그룹 중 적어도 하나는 비제로 계수 그룹을 포함하고, 상기 수정은 그 이웃하는 계수 그룹 중 적어도 하나에 기초하는 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  7. 제 6 항에 있어서,
    상기 현재 계수 그룹은 4x4의 사이즈를 갖고, 상기 수정은,
    상기 현재 계수 그룹 우측의 상기 이웃하는 계수가 제로 계수 그룹이고 상기 현재 계수 그룹 하단의 상기 이웃하는 계수가 비제로 계수 그룹인 경우, 상기 좌표 (X, Y)를 (X, 3-Y)로 변환하는 단계;
    상기 현재 계수 그룹 우측의 상기 이웃하는 계수가 비제로 계수 그룹이고 상기 현재 계수 그룹 하단의 상기 이웃하는 계수가 제로 계수 그룹인 경우, 상기 좌표 (X, Y)를 (3-X, Y)로 변환하는 단계; 및
    상기 현재 계수 그룹 우측의 상기 이웃하는 계수 및 상기 현재 계수 그룹 하단의 상기 이웃하는 계수가 모두 제로 계수 그룹인 경우, 상기 좌표 (X, Y)를 (3-X, 3-Y)로 변환하는 단계를 포함하는 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  8. 제 1 항에 있어서,
    상기 현재 계수 그룹은 4x4의 사이즈를 갖고, 상기 현재 계수 그룹 우측의 상기 이웃하는 계수 및 상기 현재 계수 그룹 하단의 상기 이웃하는 계수가 모두 제로 계수 그룹이며, 상기 모드가 수평 클래스 또는 수직 클래스 중 하나의 클래스 내에 있고, 상기 수정은,
    상기 모드가 수직 클래스 내에 있는 경우, 상기 좌표 (X, Y)를 (3-X, Y)로 변환하는 단계; 및
    상기 모드가 수평 클래스 내에 있는 경우, 상기 좌표 (X, Y)를 (X, 3-Y)로 변환하는 단계를 포함하는 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 그룹 스캔 순서는 최상위좌측(upper-left-most) 계수 그룹으로부터 시작하는 상기 현재 블로 내의 상기 계수 그룹의 순서를 포함하고, 상기 블록의 상기 계수 그룹은 상기 그룹 스캔 순서의 역순서로 상기 디코더에 의해 디코딩되는 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  10. 제 9 항에 있어서,
    상기 그룹 스캔 순서는 지그재그(zig-zag) 순서를 포함하는 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  11. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 스캔 순서는, 상기 그룹 내의 최상위좌측 변환 계수로부터 시작하는, 각 계수 그룹 내의 변환 계수의 순서를 포함하고, 각 계수 그룹 내의 상기 변환 계수에 대한 레벨, 런(run), 및 부호(sign) 데이터는 스캔 순서의 역순서로 상기 디코더에 의해 디코딩되는 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  12. 제 11 항에 있어서,
    상기 스캔 순서는 지그재그 순서를 포함하는 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  13. 제 1 항 내지 제 8 항에 있어서,
    좌표 (X, Y)를 디코딩하는 단계는 상기 현재 블록의 상기 계수 그룹들이 구회되었던 3개의 영역들 중, 상기 현재 계수 그룹이 속한 영역으로부터 적어도 부분적으로 도출된 콘텍스트에 기초하는 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  14. 제 13 항에 있어서,
    상기 3개의 영역들은 각각 전치불변(transpose-invariant) 영역인 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  15. 제 14 항에 있어서,
    상기 계수 그룹들은 상기 현재 블록 내의 행들과 열들로 배열되고,
    상기 3개의 영역들 중 하나는 상측 행과 좌측 열 양쪽에 있는 계수 그룹들로 이루어지며,
    상기 3개의 영역들 중 또다른 하나는 상측 행이나 좌측 열 중 어느 한쪽에도 있지 않는 계수들로 이루어지고,
    상기 3개의 영역들 중 나머지 하나는 상측 행이나 좌측 열 중 한쪽에 있지만 양쪽 모두에 있지 않는 계수 그룹들으로 이루지는 것인, 잔여 데이터의 현재 블록을 재구성하기 위한 방법.
  16. 인코딩된 비디오의 비트스트림 내의 잔여 데이터의 인코딩된 블록으로부터, 잔여 데이터의 현재 블록을 재구성하기 위한 디코더에 있어서,
    하나 이상의 프로세서;
    메모리; 및
    상기 메모리에 저장되며, 제 1 항 내지 제 8 항 중 어느 한 항에 따른 방법을 수행하도록 상기 하나 이상의 프로세서를 구성하기 위한 명령어를 포함하는 디코딩 애플리케이션
    을 포함하는 디코더.
  17. 비디오 인코더를 이용하여, 블록들로 구획된 픽쳐(picture)를 포함하는 비디오를 인코딩하는 방법에 있어서,
    상기 블록들에 대한 잔여 데이터는 변환 블록들로 공간 변환되고, 각 변환 블록들은 계수 그룹들로 더 구획되며, 상기 방법은,
    변환 블록 내의 상기 계수 그룹들의 그룹 스캔 순서에서 최종 비제로 계수 그룹 이전의 비제로 계수 그룹인, 현재 계수 그룹에 대하여:
    상기 계수 그룹 내의 변환 계수의 스캔 순서에서 최종 비제로 계수의, 상기 현재 계수 그룹 내의, (x,y)-위치 (X, Y)를 얻는 단계;
    상기 변환 블록을 생성하는데 사용된 인프라-예측 모드, 및 상기 현재 계수 그룹에 이웃하는 적어도 하나의 계수 그룹 중 적어도 하나에 기초한 불일치(non-identity) 수정을 이용하여 (x,y)-위치 (X, Y)를 수정된 (x,y)-위치 (X', Y')로 변환하는 단계; 및
    콘텍스트 모델을 이용하여 상기 수정된 (x,y)-위치 (X', Y')를 이진화하고 엔트로피 인코딩하는 단계
    를 포함하는, 비디오를 인코딩하는 방법.
  18. 비디오를 인코딩하는 인코더에 있어서,
    하나 이상의 프로세서;
    메모리; 및
    상기 메모리에 저장되며, 제 17 항에 따른 방법을 수행하도록 상기 하나 이상의 프로세서를 구성하기 위한 명령어를 포함하는 인코딩 애플리케이션
    을 포함하는 비디오 인코더.
  19. 실행시, 제 1 항 내지 제 8 항, 및 제 17 항 중 어느 한 항에 따른 방법을 수행하도록 상기 하나 이상의 프로세서를 구성하는 프로세서 실행 가능한 명령어를 저장하는 비일시적인 프로세서 판독 가능한 매체.
KR1020140125291A 2013-09-19 2014-09-19 계수 그룹 내의 최종 비제로 변환 계수에 대한 코딩 위치 데이터 KR101620191B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/031,393 US9215464B2 (en) 2013-09-19 2013-09-19 Coding position data for the last non-zero transform coefficient in a coefficient group
US14/031,393 2013-09-19

Publications (2)

Publication Number Publication Date
KR20150032647A true KR20150032647A (ko) 2015-03-27
KR101620191B1 KR101620191B1 (ko) 2016-05-12

Family

ID=51625814

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140125291A KR101620191B1 (ko) 2013-09-19 2014-09-19 계수 그룹 내의 최종 비제로 변환 계수에 대한 코딩 위치 데이터

Country Status (6)

Country Link
US (2) US9215464B2 (ko)
EP (1) EP2852166B1 (ko)
KR (1) KR101620191B1 (ko)
CN (2) CN108769679B (ko)
HK (1) HK1208578A1 (ko)
TW (1) TWI549486B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101627069B1 (ko) * 2015-04-01 2016-06-02 이화여자대학교 산학협력단 동영상 인코딩에서 잔차 신호에 대한 희소 변환 방법, 희소 변환을 이용한 동영상 인코딩 방법 및 희소 변환을 이용하여 부호화된 신호에 대한 디코딩 방법
WO2017043763A1 (ko) * 2015-09-10 2017-03-16 삼성전자 주식회사 부호화 장치, 복호화 장치, 그 부호화 및 복호화 방법

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL2563020T3 (pl) * 2010-04-23 2016-01-29 M&K Holdings Inc Urządzenie do kodowania obrazu
US9215464B2 (en) * 2013-09-19 2015-12-15 Blackberry Limited Coding position data for the last non-zero transform coefficient in a coefficient group
EP3222044A1 (en) * 2014-11-21 2017-09-27 VID SCALE, Inc. One-dimensional transform modes and coefficient scan order
US10631013B2 (en) * 2015-06-11 2020-04-21 Lg Electronics Inc. Method for re-positioning significant coefficient in image encoding/decoding process and device therefor
US10849383B2 (en) * 2016-03-18 2020-12-01 Stephen Sciortino Wearable impact protection and force channeling device
CN105898300B (zh) * 2016-05-06 2019-03-26 西安电子科技大学 一种基于恢复变换系数的改进变换系数符号位隐藏方法
US10440366B2 (en) * 2016-07-01 2019-10-08 Intel Corporation Method and system of video coding using content based metadata
WO2018012830A1 (ko) * 2016-07-13 2018-01-18 한국전자통신연구원 영상 부호화/복호화 방법 및 장치
EP3270595A1 (en) * 2016-07-15 2018-01-17 Thomson Licensing Method and apparatus for last coefficient coding for adaptive transform based video compression
KR102397475B1 (ko) * 2016-11-28 2022-05-13 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
US10694202B2 (en) * 2016-12-01 2020-06-23 Qualcomm Incorporated Indication of bilateral filter usage in video coding
US11477492B2 (en) 2017-08-04 2022-10-18 Google Inc. Adaptation for entropy coding of blocks of image data
US10484695B2 (en) * 2017-10-23 2019-11-19 Google Llc Refined entropy coding for level maps
CN109874012B (zh) * 2017-12-04 2020-09-11 北京金山云网络技术有限公司 一种视频编码方法、编码器、电子设备及介质
BR122021019694B1 (pt) * 2017-12-21 2022-05-17 Lg Electronics Inc Método de decodificação / codificação de imagem realizado por um aparelho de decodificação / codificação, aparelho de decodificação/codificação para decodificação/codificação de imagem, método e aparelho de transmissão de dados que compreende um fluxo de bits para uma imagem e mídia de armazenamento digital legível por computador não transitória
US10645381B2 (en) 2018-04-30 2020-05-05 Google Llc Intra-prediction for smooth blocks in image/video
US11503309B2 (en) * 2018-06-29 2022-11-15 Interdigital Vc Holdings, Inc. Method and apparatus for video encoding and decoding based on adaptive coefficient group
KR20200007671A (ko) * 2018-07-13 2020-01-22 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
CN112840655B (zh) * 2018-10-08 2023-12-01 寰发股份有限公司 图像与视频编解码中最后有效系数的编解码方法及装置
US11128866B2 (en) 2018-10-18 2021-09-21 Qualcomm Incorporated Scans and last coefficient position coding for zero-out transforms
CN115842916A (zh) * 2019-08-27 2023-03-24 杭州海康威视数字技术股份有限公司 解码方法、编码方法及装置
CN114175653B (zh) * 2019-09-17 2023-07-25 北京达佳互联信息技术有限公司 用于视频编解码中的无损编解码模式的方法和装置
CN114556932B (zh) * 2019-09-24 2023-05-23 北京达佳互联信息技术有限公司 用于视频编解码的无损编解码模式
EP4062645A4 (en) * 2019-11-21 2023-08-16 Beijing Dajia Internet Information Technology Co., Ltd. METHOD AND DEVICE FOR TRANSFORMATION AND COEFFICIENT SIGNALING
US11785219B2 (en) * 2020-04-13 2023-10-10 Qualcomm Incorporated Coefficient coding for support of different color formats in video coding
CN114513663A (zh) * 2020-11-17 2022-05-17 腾讯科技(深圳)有限公司 视频解码方法、装置及电子设备
WO2022111507A1 (en) * 2020-11-24 2022-06-02 Beijing Bytedance Network Technology Co., Ltd. Position dependent coefficient reordering in coded video
CN117581540A (zh) * 2021-06-29 2024-02-20 Oppo广东移动通信有限公司 编解码方法、码流、编码器、解码器及计算机存储介质
CN116320471B (zh) * 2023-05-18 2023-08-22 中南大学 视频信息隐藏方法、系统、设备及视频隐藏信息提取方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5748244A (en) 1995-03-28 1998-05-05 Daewoo Electronics Co., Ltd. Adaptive runlength coding based on zero and non-zero subblocks
US7724827B2 (en) 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US7782954B2 (en) 2003-09-07 2010-08-24 Microsoft Corporation Scan patterns for progressive video content
US20060153294A1 (en) * 2005-01-12 2006-07-13 Nokia Corporation Inter-layer coefficient coding for scalable video coding
US7825835B2 (en) * 2008-12-15 2010-11-02 Nvidia Corporation Method and system for encoded video compression
SI3104617T1 (sl) * 2010-07-09 2017-12-29 Samsung Electronics Co., Ltd. Postopek entropijskega dekodiranja transformnih koeficientov
US9288496B2 (en) 2010-12-03 2016-03-15 Qualcomm Incorporated Video coding using function-based scan order for transform coefficients
US8976861B2 (en) * 2010-12-03 2015-03-10 Qualcomm Incorporated Separately coding the position of a last significant coefficient of a video block in video coding
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
US8630341B2 (en) * 2011-01-14 2014-01-14 Mitsubishi Electric Research Laboratories, Inc. Method for training and utilizing separable transforms for video coding
CA2832086C (en) * 2011-04-15 2018-10-23 Blackberry Limited Methods and devices for coding and decoding the position of the last significant coefficient
US8634474B2 (en) 2011-05-03 2014-01-21 Texas Instruments Incorporated CABAC macroblock rewind and end of slice creation to control slice size for video encoders
TWI524778B (zh) * 2011-06-09 2016-03-01 國立雲林科技大學 H.264視訊編碼器
US9491469B2 (en) * 2011-06-28 2016-11-08 Qualcomm Incorporated Coding of last significant transform coefficient
US20130003859A1 (en) 2011-06-30 2013-01-03 Qualcomm Incorporated Transition between run and level coding modes
US9392301B2 (en) 2011-07-01 2016-07-12 Qualcomm Incorporated Context adaptive entropy coding for non-square blocks in video coding
US9357185B2 (en) * 2011-11-08 2016-05-31 Qualcomm Incorporated Context optimization for last significant coefficient position coding
US9344722B2 (en) * 2011-11-18 2016-05-17 Futurewei Technologies, Inc. Scanning of prediction residuals in high efficiency video coding
US20130215970A1 (en) * 2011-12-20 2013-08-22 General Instrument Corporation Method and apparatus for last coefficient group position coding
US9253481B2 (en) 2012-01-13 2016-02-02 Qualcomm Incorporated Determining contexts for coding transform coefficient data in video coding
US9172962B2 (en) * 2012-01-20 2015-10-27 Blackberry Limited Methods and systems for pipelining within binary arithmetic coding and decoding
US20130195200A1 (en) 2012-01-28 2013-08-01 Research In Motion Limited Methods and devices for context modeling to enable modular processing
US9215464B2 (en) * 2013-09-19 2015-12-15 Blackberry Limited Coding position data for the last non-zero transform coefficient in a coefficient group

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101627069B1 (ko) * 2015-04-01 2016-06-02 이화여자대학교 산학협력단 동영상 인코딩에서 잔차 신호에 대한 희소 변환 방법, 희소 변환을 이용한 동영상 인코딩 방법 및 희소 변환을 이용하여 부호화된 신호에 대한 디코딩 방법
WO2017043763A1 (ko) * 2015-09-10 2017-03-16 삼성전자 주식회사 부호화 장치, 복호화 장치, 그 부호화 및 복호화 방법
US10531102B2 (en) 2015-09-10 2020-01-07 Samsung Electronics Co., Ltd. Encoding device, decoding device, and encoding and decoding method thereof

Also Published As

Publication number Publication date
CN108769679A (zh) 2018-11-06
US9215464B2 (en) 2015-12-15
EP2852166B1 (en) 2018-07-11
CN108769679B (zh) 2021-01-12
EP2852166A1 (en) 2015-03-25
CN104469378A (zh) 2015-03-25
TWI549486B (zh) 2016-09-11
US20160073130A1 (en) 2016-03-10
TW201528784A (zh) 2015-07-16
US20150078432A1 (en) 2015-03-19
HK1208578A1 (en) 2016-03-04
US9681152B2 (en) 2017-06-13
KR101620191B1 (ko) 2016-05-12
CN104469378B (zh) 2018-07-06

Similar Documents

Publication Publication Date Title
KR101620191B1 (ko) 계수 그룹 내의 최종 비제로 변환 계수에 대한 코딩 위치 데이터
KR101609468B1 (ko) 인트라 예측 모드에 기초한 변환 계수들의 블록 전치
KR102443959B1 (ko) 적응적인 화소 분류 기준에 따른 인루프 필터링 방법
KR102492009B1 (ko) 영상 정보 부호화 및 복호화 방법
KR20220151140A (ko) 영상 부호화 방법 및 컴퓨터로 읽을 수 있는 기록 매체
KR20180044969A (ko) 이미지 및 비디오 코딩에서 구문 요소에 대한 컨텍스트 모델링의 방법 및 장치
WO2012134204A2 (ko) 인 루프 필터링 방법 및 그 장치
WO2012173403A2 (ko) 영상 정보 인코딩 및 디코딩 방법
WO2012138032A1 (ko) 영상 정보 부호화 방법 및 복호화 방법
CN112204972A (zh) 变换系数块编码
EP3906683A1 (en) Encoding and decoding a picture
AU2020354500B2 (en) Efficient implementation of matrix-based intra-prediction
CN111164975B (zh) 图像数据编码和解码
TW202137761A (zh) 用於樣本區塊之經變換表示型態的寫碼概念
CN116918327A (zh) 视频编码中基于状态的依赖量化和残差编码

Legal Events

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

Payment date: 20190423

Year of fee payment: 4