KR20180113515A - 최적화된 컴팩트 다중 패스 변환을 사용한 효율적인 변환 코딩 - Google Patents
최적화된 컴팩트 다중 패스 변환을 사용한 효율적인 변환 코딩 Download PDFInfo
- Publication number
- KR20180113515A KR20180113515A KR1020187022289A KR20187022289A KR20180113515A KR 20180113515 A KR20180113515 A KR 20180113515A KR 1020187022289 A KR1020187022289 A KR 1020187022289A KR 20187022289 A KR20187022289 A KR 20187022289A KR 20180113515 A KR20180113515 A KR 20180113515A
- Authority
- KR
- South Korea
- Prior art keywords
- vector
- individual
- transforms
- sequence
- transformations
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/439—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using cascaded computational arrangements for performing a single operation, e.g. filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20048—Transform domain processing
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 Of Band Width Or Redundancy In Fax (AREA)
Abstract
비디오 인코딩 또는 디코딩 프로세스의 일부로서, 디바이스는 입력 데이터 엘리먼트들에 변환을 적용하여 현재 블록에 대한 출력 데이터 엘리먼트를 유도한다. 상기 변환은 벡터 변환들의 시퀀스를 포함한다. 벡터 변환들의 시퀀스의 제 1 벡터 변환 이외의 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 입력 값들은 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값들을 포함한다. 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은, 입력으로서, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 더 취하고, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함한다.
Description
본원은 2016년 2월 15일자로 출원된 U.S. 특허 가출원 62/295,448 의 혜택을 주장하며, 그의 전체 내용은 참조에 의해 본원에 원용된다.
기술 분야
본 개시는 비디오 인코딩 및 비디오 디코딩에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 다이렉트 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 휴대정보 단말기 (PDA) 들, 랩탑 또는 데스크탑 컴퓨터들, 태블릿 컴퓨터들, 전자책 단말기, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 소위 "스마트 폰", 원격 화상회의 디바이스들, 비디오 스트리밍 디바이스들 등을 포함한, 광범위한 디바이스들에 포함될 수 있다. 디지털 비디오 디바이스들은, MPEG-2, MPEG-4, ITU-T H.263 또는 ITU-T H.264/MPEG-4, Part 10, AVC (Advanced Video Coding), ITU-T H.265, HEVC (High Efficiency Video Coding) 에 의해 정의되는 표준들, 및 그러한 표준들의 확장들에서 설명된 것들과 같은 비디오 코딩 기법들을 구현한다. 비디오 디바이스들은, 그러한 비디오 코딩기법들을 구현함으로써 보다 효율적으로 디지털 비디오 정보를 송신, 수신, 인코딩, 디코딩, 및/또는 저장할 수도 있다.
비디오 코딩 기법들은, 비디오 시퀀스들에 내재하는 중복성 (redundancy) 을 감소시키거나 또는 제거하기 위해 공간 (인트라-화상) 예측 및/또는 시간 (인터-화상) 예측을 포함한다. 블록 기반 비디오 코딩을 위해, 비디오 슬라이스 (예를 들어, 비디오 프레임, 또는 비디오 프레임의 일부) 는 비디오 블록들로 파티션될 수도 있고, 이 비디오 블록들은 트리블록들, 코딩 유닛 (CU) 들, 및/또는 코딩 노드들로도 지칭될 수도 있다. 화상들은 프레임들로 지칭될 수도 있고, 참조 화상들은 참조 프레임들로 지칭될 수도 있다.
공간 또는 시간 예측은 코딩될 블록을 위한 예측 블록을 낳는다. 잔차 데이터는 코딩될 원래 블록과 예측 블록 사이의 픽셀 차이들을 나타낸다. 추가 압축을 위해, 잔차 데이터는 픽셀 도메인으로부터 변환 도메인으로 변환되어, 잔차 변환 계수들을 낳을 수도 있으며, 다음으로 이들은 양자화될 수도 있다. 훨씬 더 많은 압축을 달성하기 위해 엔트로피 코딩이 적용될 수도 있다.
개요
일반적으로, 본 개시는, 컴팩트 다중 패스 변환 (Compact Multi-Pass Transform; CMPT) 들을 이용한 변환 코딩을 위한 기법들을 설명한다. 변환 코딩은 최신 표준, HEVC (High-Efficiency Video Coding) 에서와 같이 비디오 코딩의 일부이다. 그 표준은 분리 가능한 블록 변환들 (예를 들어, 수평 변환 및 다음으로 수직 변환, 또는 그 반대) 및 블록 크기에 대하여 고정된 블록 변환들을 사용하여, 구현을 위해 적은 메모리를 사용할 수도 있다.
가용 변환의 수에 의존하는 압축 개선과 함께, 복수의 분리 불가능한 변환 세트를 사용하여 압축을 향상시키는 것이 가능할 수도 있다. 분리 불가능한 변환 세트가 많으면 매트릭스 형식으로 모든 그러한 변환을 정의하는 파라미터들을 저장하는데 너무 많은 비싼 고속 메모리를 사용해야하는 결과를 초래할 수도 있다. 본 개시는 매트릭스 기반 변환을 대체하기 위한 예시적인 기술을 설명한다. 매트릭스 기반 변환을 사용하기 보다는, 본 개시는 CMPT를 사용하는데, 이는, 일반적으로, 매트릭스 형식의 변환에 비해 더 적은 메모리와 계산을 사용할 수 있다.
일례에서, 본 개시는 비디오 데이터를 디코딩하는 방법을 설명하며, 그 방법은: 상기 비디오 데이터의 현재 화상의 인코딩된 표현을 포함하는 비트스트림에서의 신택스 엘리먼트에 기초하여, 상기 현재 화상의 현재 블록에 대한 복수의 데이터 엘리먼트를 결정하는 단계; 상기 현재 블록에 대한 잔차 값들을 유도하기 위해 상기 데이터 엘리먼트들에 변환을 적용하는 단계로서, 상기 변환은 벡터 변환들의 시퀀스를 포함하고, 상기 벡터 변환들의 시퀀스의 제 1 벡터 변환에 대한 입력 값들은 상기 복수의 데이터 엘리먼트들을 포함하고, 상기 벡터 변환들의 시퀀스의 최종 벡터 변환에 대한 출력 값들은 상기 현재 블록에 대한 잔차 값들을 포함하고, 상기 벡터 변환들의 시퀀스의 상기 제 1 벡터 변환 이외의 상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 입력 값들은 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값을 포함하고, 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은, 입력으로서, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 더 취하고, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함하는, 상기 변환을 적용하는 단계; 및 유도된 잔차 데이터에 기초하여, 현재 화상의 샘플을 재구성하는 단계를 포함한다.
다른 예에서, 본 개시는 비디오 데이터를 인코딩하는 방법을 기술하며, 상기 방법은: 상기 비디오 데이터의 현재 화상의 현재 블록에 대한 잔차 값들을 결정하는 단계; 상기 현재 블록에 대한 복수의 데이터 엘리먼트들을 유도하기 위해 상기 현재 블록에 대한 잔차 값들에 변환을 적용하는 단계로서, 상기 현재 블록에 대한 상기 잔차 값들에 상기 변환을 적용하는 단계는 벡터 변환들의 시퀀스를 적용하는 단계를 포함하고, 상기 벡터 변환들의 시퀀스의 제 1 벡터 변환에 대한 입력 값들은 상기 현재 블록에 대한 잔차 값들을 포함하고, 상기 벡터 변환들의 시퀀스의 최종 벡터 변환의 출력 값들은 상기 현재 블록에 대한 데이터 엘리먼트들을 포함하고, 상기 벡터 변환들의 시퀀스의 상기 제 1 벡터 변환 이외의 상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 입력 값들은 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값들을 포함하고, 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은, 입력으로서, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 더 취하고, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함하는, 상기 변환을 적용하는 단계; 및 현재 화상의 인코딩된 표현을 포함하는 비트스트림에, 현재 블록에 대한 데이터 엘리먼트에 기초한 값을 갖는 신택스 엘리먼트를 포함시키는 단계를 포함한다.
다른 예에서, 본 개시는 비디오 데이터를 디코딩하기 위한 디바이스를 기술하며, 상기 디바이스는: 인코딩된 비디오 데이터를 저장하도록 구성된 하나 이상의 저장 매체; 및 비디오 디코더를 포함하고, 상기 비디오 디코더는: 상기 비디오 데이터의 현재 화상의 인코딩된 표현을 포함하는 비트스트림에서의 신택스 엘리먼트에 기초하여, 상기 현재 화상의 현재 블록에 대한 복수의 데이터 엘리먼트를 결정하고; 상기 현재 블록에 대한 잔차 값들을 유도하기 위해 상기 데이터 엘리먼트들에 변환을 적용하는 것으로서, 상기 변환은 벡터 변환들의 시퀀스를 포함하고, 상기 벡터 변환들의 시퀀스의 제 1 벡터 변환에 대한 입력 값들은 상기 복수의 데이터 엘리먼트들을 포함하고, 상기 벡터 변환들의 시퀀스의 최종 벡터 변환에 대한 출력 값들은 상기 현재 블록에 대한 잔차 값들을 포함하고, 상기 벡터 변환들의 시퀀스의 상기 제 1 벡터 변환 이외의 상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 입력 값들은 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값을 포함하고, 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은, 입력으로서, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 더 취하고, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함하는, 상기 변환을 적용하고; 그리고 유도된 잔차 데이터에 기초하여, 현재 화상의 샘플을 재구성하도록 구성된다.
다른 예에서, 본 개시는 비디오 데이터를 인코딩하기 위한 디바이스를 기술하며, 상기 디바이스는: 비디오 데이터를 저장하도록 구성된 하나 이상의 저장 매체; 및 비디오 인코더를 포함하고, 상기 비디오 인코더는: 상기 비디오 데이터의 현재 화상의 현재 블록에 대한 잔차 값들을 결정하고; 상기 현재 블록에 대한 복수의 데이터 엘리먼트들을 유도하기 위해 상기 현재 블록에 대한 잔차 값들에 변환을 적용하는 것으로서, 상기 현재 블록에 대한 상기 잔차 값들에 상기 변환을 적용하는 것은 벡터 변환들의 시퀀스를 적용하는 것을 포함하고, 상기 벡터 변환들의 시퀀스의 제 1 벡터 변환에 대한 입력 값들은 상기 현재 블록에 대한 잔차 값들을 포함하고, 상기 벡터 변환들의 시퀀스의 최종 벡터 변환의 출력 값들은 상기 현재 블록에 대한 데이터 엘리먼트들을 포함하고, 상기 벡터 변환들의 시퀀스의 상기 제 1 벡터 변환 이외의 상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 입력 값들은 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값을 포함하고, 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은, 입력으로서, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 더 취하고, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함하는, 상기 변환을 적용하고; 그리고 현재 화상의 인코딩된 표현을 포함하는 비트스트림에, 현재 블록에 대한 데이터 엘리먼트에 기초한 값을 갖는 신택스 엘리먼트를 포함시키도록 구성된다.
하나 이상의 예들의 상세는 첨부 도면 및 아래의 설명에 제시되어 있다. 다른 특징, 목적 및 이점들은 상세한 설명, 도면, 및 청구항들로부터 분명해질 것이다.
도 1은 본 개시의 기술들을 구현하도록 구성된 예시적인 비디오 인코딩 및 디코딩 시스템을 나타내는 블록도이다.
도 2는 변환 선택과 함께 하이브리드 비디오 인코딩을 위한 예시적인 시스템을 나타내는 블록도이다.
도 3a는 픽셀 잔차들의 2차원 블록에서 분리 가능한 변환을 계산하기 위한 예시적인 옵션을 나타내는 개념도이다.
도 3b는 픽셀 잔차들의 2차원 블록에서 분리 불가능한 변환을 계산하기 위한 예시적인 옵션을 나타내는 개념도이다.
도 4는 본 개시의 기술에 따른 예시적인 컴팩트 다중 패스 변환 구현을 나타내는 개념도이다.
도 5는 본 개시의 기술에 따라, 한 쌍의 벡터 엘리먼트에 적용된 각도 θ에 의해 파라미터화된 Givens 직교 변환, 및 변환 식들을 나타내는 "버터플라이 (butterfly)" 도이다.
도 6은 본 개시의 기술에 따라, 차원 16의 벡터들 상에 병렬 Givens 회전의 시퀀스들을 사용하는 컴팩트 다중 패스 변환 구현의 도이다.
도 7은 비디오 인코더의 일례를 예시하는 블록도이다.
도 8은 비디오 디코더의 일례를 나타내는 블록도이다.
도 9는 본 개시의 기술에 따른 비디오 데이터를 인코딩하기 위한 비디오 인코더의 예시적인 동작을 나타내는 플로우차트이다.
도 10는 본 개시의 기술에 따른 비디오를 디코딩하기 위한 비디오 디코더의 예시적인 동작을 나타내는 플로우차트이다.
도 2는 변환 선택과 함께 하이브리드 비디오 인코딩을 위한 예시적인 시스템을 나타내는 블록도이다.
도 3a는 픽셀 잔차들의 2차원 블록에서 분리 가능한 변환을 계산하기 위한 예시적인 옵션을 나타내는 개념도이다.
도 3b는 픽셀 잔차들의 2차원 블록에서 분리 불가능한 변환을 계산하기 위한 예시적인 옵션을 나타내는 개념도이다.
도 4는 본 개시의 기술에 따른 예시적인 컴팩트 다중 패스 변환 구현을 나타내는 개념도이다.
도 5는 본 개시의 기술에 따라, 한 쌍의 벡터 엘리먼트에 적용된 각도 θ에 의해 파라미터화된 Givens 직교 변환, 및 변환 식들을 나타내는 "버터플라이 (butterfly)" 도이다.
도 6은 본 개시의 기술에 따라, 차원 16의 벡터들 상에 병렬 Givens 회전의 시퀀스들을 사용하는 컴팩트 다중 패스 변환 구현의 도이다.
도 7은 비디오 인코더의 일례를 예시하는 블록도이다.
도 8은 비디오 디코더의 일례를 나타내는 블록도이다.
도 9는 본 개시의 기술에 따른 비디오 데이터를 인코딩하기 위한 비디오 인코더의 예시적인 동작을 나타내는 플로우차트이다.
도 10는 본 개시의 기술에 따른 비디오를 디코딩하기 위한 비디오 디코더의 예시적인 동작을 나타내는 플로우차트이다.
상세한 설명
본 개시는 비디오 압축 표준의 기본적인 부분인 변환 코딩의 고급 어플리케이션에 대한 문제점을 해결할 수 있는 기술을 설명한다. 본 개시의 기술들은 많은 수의 분리 불가능한 변환을 위한 메모리 및 계산을 감소시킬 수 있으며, 잠재적으로 합리적인 비용으로 큰 코딩 이득을 가능하게 한다. 과거에, 비디오 코딩을 위해 몇 가지 데이터 적응형 변환 기술이 제안되었는데, 이들은 매우 현저한 코딩 이득을 나타내지만, 엄청나게 복잡하다. 일부 경우에, 본 개시의 기술은 필요한 메모리를 감소시킬 수 있으며, 잠재적으로 성능 손실은 거의 없다.
예를 들어, 비디오 인코더는 비디오 데이터의 현재 화상의 현재 블록에 대한 잔차 값들을 결정할 수도 있다. 이 예에서, 비디오 인코더는 현재 블록에 대한 복수의 데이터 엘리먼트들 (예를 들어, 변환 계수들) 을 유도하기 위해 현재 블록에 대한 잔차 값들에 변환을 적용할 수도 있다. 현재 블록에 대한 잔차 값들에 상기 변환을 적용하는 것의 부분으로서, 비디오 인코더는 벡터 변환들의 시퀀스를 적용한다. 이 예에서, 벡터 변환들의 시퀀스의 제 1 벡터 변환에 대한 입력 값들은 현재 블록에 대한 잔차 값들을 포함한다. 게다가, 이 예에서, 벡터 변환들의 시퀀스의 최종 벡터 변환의 출력 값들은 현재 블록에 대한 데이터 엘리먼트들을 포함한다. 상기 벡터 변환들의 시퀀스의 상기 제 1 벡터 변환 이외의 상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 입력 값들은 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값을 포함한다. 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은, 입력으로서, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 더 취하고, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함한다. 비디오 인코더는, 현재 화상의 인코딩된 표현을 포함하는 비트스트림에, 현재 블록에 대한 데이터 엘리먼트에 기초한 값을 갖는 신택스 엘리먼트를 포함시킬 수도 있다.
유사하게, 비디오 디코더는 비디오 데이터의 현재 화상의 인코딩된 표현을 포함하는 비트스트림에서의 신택스 엘리먼트에 기초하여, 현재 화상의 현재 블록에 대한 복수의 데이터 엘리먼트 (예를 들어, 변환 계수) 를 결정할 수도 있다. 이 예에서, 비디오 디코더는 현재 블록에 대한 잔차 값들을 유도하기 위해 데이터 엘리먼트들에 변환을 적용할 수도 있다. 변환은 벡터 변환들의 시퀀스를 포함하며, 이것은 또한 패스들로서 지칭될 수도 있다. 이 예에서, 벡터 변환들의 시퀀스의 제 1 벡터 변환에 대한 입력 값들은 복수의 데이터 엘리먼트들을 포함한다. 벡터 변환들의 시퀀스의 최종 벡터 변환에 대한 출력 값들은 현재 블록에 대한 잔차 값들을 포함한다. 이 예에서, 상기 벡터 변환들의 시퀀스의 상기 제 1 벡터 변환 이외의 상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 입력 값들은 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값을 포함한다. 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은, 입력으로서, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 더 취하고, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함한다. 비디오 디코더 (30) 는 유도된 잔차 데이터에 기초하여, 현재 화상의 샘플들을 재구성할 수도 있다.
도 1은 본 개시의 기술들을 활용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 나타내는 블록도이다. 도 1에 도시된 바처럼, 시스템 (10) 은, 목적지 디바이스 (14) 에 의해 나중에 디코딩될 인코딩된 비디오 데이터를 제공하는 소스 디바이스 (12) 를 포함한다. 특히, 소스 디바이스 (12) 는, 컴퓨터 판독가능 매체 (16) 를 통해 목적지 디바이스 (14) 로 비디오 데이터를 제공한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 데스크탑 컴퓨터들, 노트북 (즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 전화기 핸드셋 이를테면 소위 "스마트" 폰들, 태블릿 컴퓨터, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 재생기들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스 등을 포함한, 광범위한 디바이스들 중 어느 것을 포함할 수도 있다. 일부 경우에, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신을 위해 갖추어질 수도 있다. 따라서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신 디바이스들일 수도 있다. 소스 디바이스 (12) 는 예시적인 비디오 인코딩 디바이스 (즉, 비디오 데이터를 인코딩하기 위한 디바이스) 이다. 목적지 디바이스 (14) 는 예시적인 비디오 디코딩 디바이스 (즉, 비디오 데이터를 디코딩하기 위한 디바이스) 이다.
도 1의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 데이터를 저장하도록 구성된 저장 매체 (19), 비디오 인코더 (20) 및 출력 인터페이스 (24) 를 포함한다. 목적지 디바이스 (14) 는 입력 인터페이스 (26), 인코딩된 비디오 데이터를 저장하도록 구성된 저장 매체 (28), 비디오 디코더 (30) 및 디스플레이 디바이스 (32) 를 포함한다. 다른 예들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 다른 컴포넌트들 또는 배열들을 포함한다. 예를 들어, 소스 디바이스 (12) 는 외부 카메라와 같은 외부 비디오 소스로부터 비디오 데이터를 수신할 수도 있다. 마찬가지로, 목적지 디바이스 (14) 는 통합된 디스플레이 디바이스를 포함하기 보다는, 외부 디스플레이 디바이스와 인터페이스 접속할 수도 있다.
도 1의 예시된 시스템 (10) 은 하나의 예일 뿐이다. 비디오 데이터를 프로세싱하기 위한 기법들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스에 의해 수행될 수도 있다. 일반적으로 본 개시의 기법들은 비디오 인코딩 디바이스에 의해 수행되지만, 그 기법들은 또한 "코덱 (CODEC)" 으로서 통상적으로 지칭되는, 비디오 인코더/디코더에 의해 수행될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 소스 디바이스 (12) 가 목적지 디바이스 (14) 로의 송신을 위해 코딩된 비디오 데이터를 생성하는 그러한 코딩 디바이스들의 예들일 뿐이다. 일부 예에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 소스 디바이스 (12) 및 목적지 디바이스 (14) 의 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭 방식으로 동작할 수도 있다. 그러므로, 시스템 (10) 은 예를 들면, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅 또는 화상 통화를 위해, 소스 디바이스 (12) 와 목적지 디바이스 (14) 간의 일방향 또는 양방향 비디오 송신을 지원할 수도 있다.
소스 디바이스 (12) 의 비디오 소스 (18) 는 비디오 카메라와 같은 비디오 캡처 디바이스, 이전에 캡처된 비디오를 포함하는 비디오 아카이브 (video archive), 및/또는 비디오 콘텐트 제공자로부터 비디오 데이터를 수신하기 위한 비디오 피드 인터페이스 (video feed interface) 를 포함할 수도 있다. 다른 대안으로서, 비디오 소스 (18) 는 라이브 비디오, 아카이빙된 비디오 및 컴퓨터 생성된 비디오의 조합, 또는 소스 비디오로서 컴퓨터 그래픽스 기반 데이터를 생성할 수도 있다. 소스 디바이스 (12) 는 비디오 데이터를 저장하도록 구성된 하나 이상의 데이터 저장 매체 (예를 들어, 저장 매체 (19)) 를 포함할 수도 있다. 본 개시에 설명된 기법들은, 일반적으로 비디오 코딩에 적용가능할 수도 있고, 무선 및/또는 유선 어플리케이션들에 적용될 수도 있다. 각 경우에서, 캡처되거나, 미리 캡처되거나, 또는 컴퓨터 생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 출력 인터페이스 (24) 는 인코딩된 비디오 정보를 컴퓨터 판독 가능 매체 (16) 에 출력할 수도 있다.
목적지 디바이스 (14) 는, 컴퓨터 판독가능 매체 (16) 를 통해 디코딩될 인코딩된 비디오 데이터를 수신할 수도 있다. 컴퓨터 판독가능 매체 (16) 는, 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동시킬 수 있는 임의의 타입의 매체 또는 디바이스를 포함할 수도 있다. 일부 예에서, 컴퓨터 판독가능 매체 (16) 는, 소스 디바이스 (12) 로 하여금 실시간으로 직접 목적지 디바이스 (14) 로, 인코딩된 비디오 데이터를 송신할 수 있게 하기 위한 통신 매체를 포함한다. 인코딩된 비디오 데이터는, 무선 통신 프로토콜 등의 통신 표준에 따라 변조되고, 목적지 디바이스 (14) 로 송신될 수도 있다. 통신 매체는 임의의 무선 또는 유선 통신 매체, 이를테면, 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들을 포함할 수도 있다. 통신 매체는, 로컬 영역 네트워크, 와이드 영역 네트워크, 또는 인터넷과 같은 글로벌 네트워크 등의 패킷 기반 네트워크의 부분을 형성할 수도 있다. 통신 매체는 라우터, 스위치, 기지국, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 통신을 가능하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다. 목적지 디바이스 (14) 는 인코딩된 비디오 데이터 및 디코딩된 비디오 데이터를 저장하도록 구성된 하나 이상의 데이터 저장 매체를 포함할 수도 있다.
일부 예들에서, 인코딩된 데이터는 출력 인터페이스 (24) 로부터 저장 디바이스로 출력될 수도 있다. 유사하게, 인코딩된 데이터는 입력 인터페이스에 의해 저장 디바이스로부터 액세스될 수도 있다. 저장 디바이스는, 하드 드라이브, 블루레이 디스크, DVD, CD-ROM, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체 등의 다양한 분산형 또는 로컬적으로 액세스되는 데이터 저장 매체 중 어느 것을 포함할 수도 있다. 다른 예에서, 저장 디바이스는, 소스 디바이스 (12) 에 의해 생성되는 인코딩된 비디오를 저장할 수도 있는, 파일 서버 또는 또 다른 중간 저장 디바이스에 대응할 수도 있다. 목적지 디바이스 (14) 는, 스트리밍 또는 다운로드를 통해 저장 디바이스로부터 저장된 비디오 데이터에 액세스할 수도 있다. 파일 서버는, 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 송신할 수 있는 임의의 타입의 서버일 수도 있다. 예시적인 파일 서버들은, (예를 들어, 웹사이트용) 웹 서버, FTP 서버, NAS (network attached storage) 디바이스, 또는 로컬 디스크 드라이브를 포함한다. 목적지 디바이스 (14) 는, 인터넷 접속을 포함한, 임의의 표준 데이터 접속을 통해 인코딩된 비디오 데이터에 액세스할 수도 있다. 이것은, 파일 서버 상에 저장된 인코딩된 비디오 데이터를 액세스하기 위해 적당한 무선 채널 (예컨대, Wi-Fi 접속), 유선 접속 (예컨대, DSL, 케이블 모뎀 등), 또는 양자의 조합을 포함할 수도 있다. 저장 디바이스로부터 인코딩된 비디오 데이터의 송신은, 스트리밍 송신, 다운로드 송신 또는 이들의 조합일 수도 있다.
그 기법들은, 공중 경유 (over-the-air) 텔레비전 브로드캐스트, 케이블 텔레비전 송신, 위성 텔레비전 송신, DASH (dynamic adaptive streaming over HTTP) 와 같은 인터넷 스트리밍 비디오 송신, 데이터 저장 매체 상에 인코딩되는 디지털 비디오, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션 등의 다양한 멀티미디어 애플리케이션들 중 어느 것을 지원하는 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 시스템 (10) 은, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅 및/또는 화상 통화 등의 애플리케이션들을 지원하기 위하여 일방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
컴퓨터 판독가능 매체 (16) 는, 무선 브로드캐스트 또는 유선 네트워크 송신 등의 일시적 매체, 또는 하드 디스크, 플래시 드라이브, 컴팩트 디스크, 디지털 비디오 디스크, 블루레이 디스크 또는 다른 컴퓨터 판독가능 매체 등의 저장 매체 (즉, 비일시적 저장 매체) 를 포함할 수도 있다. 일부 예들에서, 네트워크 서버 (미도시) 는 소스 디바이스 (12) 로부터 인코딩된 비디오 데이터를 수신하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로, 예를 들어, 네트워크 송신을 통해 제공할 수도 있다. 유사하게, 디스크 스탬핑 설비 등의 매체 제조 설비의 컴퓨팅 디바이스는, 소스 디바이스 (12) 로부터 인코딩된 비디오 데이터를 수신하고 그 인코딩된 비디오 데이터를 포함하는 디스크를 제조할 수도 있다. 그러므로, 컴퓨터 판독가능 매체 (16) 는, 다양한 예들에서, 다양한 형태들의 하나 이상의 컴퓨터 판독가능 매체를 포함하는 것으로 이해될 수도 있다.
목적지 디바이스 (14) 의 입력 인터페이스 (26) 는 컴퓨터 판독가능 매체 (16) 로부터 정보를 수신한다. 컴퓨터 판독가능 매체 (16) 의 정보는 비디오 인코더 (20) 의 비디오 인코더 (20) 에 의해 정의된 신택스 정보를 포함할 수도 있고, 이는 또한 비디오 디코더 (30) 에 의해 사용되고, 이는 블록들 및 다른 코딩된 유닛들, 예컨대, 화상들의 그룹 (GOP) 의 프로세싱 및/또는 특성들을 기술하는 신택스 엘리먼트들을 포함한다. 저장 매체 (28) 는 입력 인터페이스 (26) 에 의해 수신된 인코딩된 비디오 데이터를 저장할 수도 있다. 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 이용자에게 디스플레이하고, 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 어느 것을 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서 (DSP) 들, 주문형 반도체 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합과 같은 다양한 적합한 고정 기능 및/또는 프로그램가능 회로 중 어느 것으로서 구현될 수도 있다. 그 기법들이 부분적으로 소프트웨어로 구현될 때, 디바이스는 적합한 비일시적 컴퓨터 판독가능 매체에 그 소프트웨어를 위한 명령들을 저장하고 본 개시의 기법들을 수행하기 위하여 하나 이상의 프로세서들을 이용하여 하드웨어에서 그 명령들을 실행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있는데, 이들 중 어느 쪽이 각각의 디바이스에서 결합된 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다.
일부 예에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 기존 또는 미래의 표준과 같은 비디오 코딩 표준에 따라 동작할 수도 있다. 예시적인 비디오 코딩 표준들은, 비한정적으로, ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 또는 ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual 및 ITU-T H.264 (ISO/IEC MPEG-4 AVC 으로도 알려짐) 을 포함하며, 그의 SVC (Scalable Video Coding) 및 MVC (Multi-View Video Coding) 확장들을 포함한다. 또한, 새로운 비디오 코딩 표준, 즉 HEVC (High Efficiency Video Coding) 또는 ITU-T H.265 (그의 범위 및 스크린 컨텐츠 코딩 확장들, 3D-HEVC (3D video coding) 및 멀티뷰 확장 (MV-HEVC) 및 스케일러블 확장 (SHVC) 을 포함) 이 최근 ITU-T 비디오 코딩 전문가 그룹 (VCEG) 및 ISO/IEC 동화상 전문가 그룹 (MPEG) 의 비디오 코딩에 관한 공동 협력 팀 (JCT-VC) 에 의해 개발되었다.
HEVC 및 다른 비디오 코딩 규격들에서, 비디오 시퀀스는 통상적으로 일련의 화상 (picture) 들을 포함한다. 화상들은 또한, "프레임" 들로 지칭될 수도 있다. 화상은, SL, SCb 및 SCr 로 표기되는, 3개의 샘플 어레이들을 포함할 수도 있다. SL 는 루마 샘플들의 2차원 어레이 (즉, 블록) 이다. SCb 는 Cb 크로미넌스 샘플들의 2차원 어레이이다. SCr 는 Cr 크로미넌스 샘플들의 2차원 어레이이다. 크로미넌스 샘플들은 또한, 본원에서 "크로마" 샘플들로 지칭될 수도 있다. 다른 사례들에서, 화상은 단색 (monochrome) 일 수도 있고, 루마 샘플들의 어레이만을 포함할 수도 있다.
화상의 인코딩된 표현을 생성하기 위하여, 비디오 인코더 (20) 는 코딩 트리 유닛 (CTU) 들의 세트를 생성할 수도 있다. CTU 들의 각각은 루마 샘플들의 코딩 트리 블록, 크로마 샘플들의 2개의 대응 코딩 트리 블록들, 및 코딩 트리 블록들의 샘플들을 코딩하는데 사용된 신택스 구조들을 포함할 수도 있다. 단색 화상들 또는 3개의 분리된 색 평면들을 갖는 화상들에서, CTU 는 단일 코딩 트리 블록 및 그 코딩 트리 블록의 샘플들을 코딩하는데 사용된 신택스 구조들을 포함할 수도 있다. 코딩 트리 블록은 샘플들의 NxN 블록일 수도 있다. CTU 는 "트리 블록" 또는 "최대 코딩 유닛" (LCU) 으로 지칭될 수도 있다. HEVC 의 CTU 들은 대체로, H.264/AVC 와 같은 다른 표준들의 매크로블록들에 유사할 수도 있다. 하지만, CTU 가 특정 크기로 반드시 한정되는 것은 아니고 하나 이상의 코딩 유닛들 (CU) 들을 포함할 수도 있다. 슬라이스는 래스터 스캔 순서에서 연속적으로 순서화된 정수 개의 CTU를 포함할 수도 있다.
본 개시는 하나 이상의 샘플 블록들 및 하나 이상의 샘플 블록들의 샘플들을 코딩하는데 이용된 신택스 구조들을 지칭하기 위하여 용어 "비디오 유닛", "비디오 블록" 또는 "블록" 을 이용할 수도 있다. 비디오 유닛의 예시적인 타입은 CTU, CU, PU, 변환 유닛 (TU), 매크로블록, 매크로블록 파티션 등을 포함할 수도 있다. 일부 맥락에서는, PU에 대한 논의가 매크로블록 또는 매크로블록 파티션에 대한 논의와 상호 교환될 수도 있다. 비디오 블록의 예시적인 타입은 코딩 트리 블록, 코딩 블록, 및 비디오 데이터의 다른 타입의 블록을 포함할 수도 있다.
코딩된 CTU 를 생성하기 위하여, 비디오 인코더 (20) 는 CTU 의 코딩 트리 블록들에 대한 쿼드 트리 파티셔닝을 회귀적으로 수행하여 코딩 트리 블록들을 코딩 블록들을 분할할 수도 있으며, 따라서 이는 "코딩 트리 유닛"들이라고 부른다. 코딩 블록은 샘플들의 NxN 블록이다. CU 는 루마 샘플 어레이, Cb 샘플 어레이 및 Cr 샘플 어레이를 갖는 화상의 루마 샘플들의 코딩 블록 및 크로마 샘플들의 2개의 대응하는 코딩 블록들, 및 그 코딩 블록들의 샘플들을 코딩하는데 사용된 신택스 구조를 포함할 수도 있다. 단색 화상들 또는 3개의 분리된 색 평면들을 갖는 화상들에서, CU 는 단일 코딩 블록 및 그 코딩 블록의 샘플들을 코딩하는데 사용된 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (20) 는 하나 이상의 예측 블록들로 CU 의 코딩 블록을 파티셔닝할 수도 있다. 예측 블록은, 동일한 예측이 적용되는 샘플들의 직사각형 (즉, 정사각형 또는 비정사각형) 블록이다. CU 의 예측 유닛 (PU) 는 루마 샘플들의 예측 블록, 크로마 샘플들의 2개 대응하는 예측 블록들, 및 예측 블록들을 예측하는데 사용된 신택스 구조들을 포함할 수도 있다. 단색 화상들 또는 3개의 분리된 색 평면들을 포함하는 화상들에서, PU 는 단일 예측 블록 및 그 예측 블록을 예측하는데 이용된 신택스 구조들을 포함할 수도 있다. 비디오 인코더 (20) 는, 예측 블록 (예를 들어, 루마, Cb, 및 Cr 예측 블록) 을, CU 의 각각의 PU 의 예측 블록 (에를 들어, 루마, Cb, 및 Cr 예측 블록) 을 위해 생성할 수도 있다.
비디오 인코더 (20) 는 PU 에 대해 예측 블록을 생성하는데 인트라 예측 또는 인터 예측을 사용할 수도 있다. 비디오 인코더 (20) 가 PU 의 예측 블록들을 생성하기 위해 인트라 예측을 사용하면, 비디오 인코더 (20) 는 PU 를 포함하는 화상의 디코딩된 샘플들에 기초하여 PU 의 예측 블록들을 생성할 수도 있다.
비디오 인코더 (20) 가, CU 의 하나 이상의 PU 들을 위해 예측 블록 (예를 들어, 루마, Cb, 및 Cr 예측 블록) 을 생성한 후에, 비디오 인코더 (20) 는 CU 를 위한 하나 이상의 잔차 블록을 생성할 수도 있다. 가령, 비디오 인코더 (20) 는 CU 를 위한 루마 잔차 블록을 생성할 수도 있다. CU 의 루마 잔차 블록에 있는 각각의 샘플은 CU 의 예측 루마 블록들 중 하나에 있는 루마 샘플과 CU 의 원래 루마 코딩 블록에 있는 대응하는 샘플 사이의 차이를 표시한다. 또한, 비디오 인코더 (20) 는 CU 를 위한 Cb 잔차 블록을 생성할 수도 있다. 또한, CU 의 Cb 잔차 블록에서의 각각의 샘플은 CU 의 예측 Cb 블록들 중 하나에 있는 Cb 샘플과 CU 의 원래 Cb 코딩 블록에 있는 대응하는 샘플 사이의 차이를 표시할 수도 있다. 또한, 비디오 인코더 (20) 는 CU 를 위한 Cr 잔차 블록을 생성할 수도 있다. 또한, CU 의 Cr 잔차 블록에 있는 각각의 샘플은 CU 의 예측 Cr 블록들 중 하나에 있는 Cr 샘플과 CU 의 원래 Cr 코딩 블록에 있는 대응하는 샘플 사이의 차이를 표시할 수도 있다.
또한, 비디오 인코더 (20) 는 잔차 블록들을 하나 이상의 변환 블록들로 분해할 수도 있다. 가령, 비디오 인코더 (20) 는 CU 의 잔차 블록 (예를 들어, 루마, Cb 및 Cr 잔차 블록) 을 하나 이상의 변환 블록 (예를 들어, 루마, Cb 및 Cr 변환 블록) 으로 분해하기 위하여 쿼드 트리 파티셔닝을 이용할 수도 있다. 변환 블록은, 동일한 변환이 적용되는 샘플들의 직사각형 (예를 들어, 정사각형 또는 비정사각형) 블록이다. CU 의 변환 유닛 (TU) 은 루마 샘플들의 변환 블록, 크로마 샘플들의 2개 대응하는 변환 블록들, 및 변환 블록 샘플들을 변환하는데 사용된 신택스 구조들을 포함할 수도 있다. 따라서, CU 의 각 TU 는 루마 변환 블록, Cb 변환 블록, 및 Cr 변환 블록을 가질 수도 있다. TU 의 루마 변환 블록은 CU 의 루마 잔차 블록의 서브 블록일 수도 있다. Cb 변환 블록은 CU 의 Cb 잔차 블록의 서브 블록일 수도 있다. Cr 변환 블록은 CU 의 Cr 잔차 블록의 서브 블록일 수도 있다. 단색 화상들 또는 3개의 분리된 색 평면들을 갖는 화상들에서, TU 는 단일 변환 블록 및 그 변환 블록의 샘플들을 변환하는데 사용된 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (20) 는 TU 를 위한 계수 블록을 생성하기 위하여 TU 의 변환 블록에 하나 이상의 변환들을 적용할 수도 있다. 가령, 비디오 인코더 (20) 는 TU 를 위한 루마 계수 블록을 생성하기 위하여 TU 의 루마 변환 블록에 하나 이상의 변환들을 적용할 수도 있다. 계수 블록은 변환 계수들의 2차원 어레이일 수도 있다. 변환 계수는 스칼라 양일 수도 있다. 비디오 인코더 (20) 는 TU 를 위한 Cb 계수 블록을 생성하기 위하여 TU 의 Cb 변환 블록에 하나 이상의 변환들을 적용할 수도 있다. 비디오 인코더 (20) 는 TU 를 위한 Cr 계수 블록을 생성하기 위하여 TU 의 Cr 변환 블록에 하나 이상의 변환들을 적용할 수도 있다.
계수 블록 (예를 들어, 루마 계수 블록, Cb 계수 블록 또는 Cr 계수 블록) 을 생성한 후에, 비디오 인코더 (20) 는 계수 블록을 양자화할 수도 있다. 일반적으로 양자화는, 변환 계수들이 양자화되어 그 변환 계수들을 나타내는데 사용된 데이터의 양을 감소시킬 수 있으며, 추가 압축을 제공하는 프로세스를 지칭한다. 비디오 인코더 (20) 는 계수 블록을 양자화한 후에, 비디오 인코더 (20) 는 양자화된 변환 계수들을 표시하는 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 양자화된 변환 계수들을 표시하는 신택스 엘리먼트들에 대해 콘텍스트 적응적 이진 산술 코딩 (CABAC) 을 수행할 수도 있다.
비디오 인코더 (20) 는, 코딩된 화상 및 연관된 데이터의 표현을 형성하는 비트들의 시퀀스를 포함하는 비트스트림을 출력할 수도 있다. 따라서, 비트스트림은 비디오 데이터의 인코딩된 표현을 포함한다. 비트스트림은 네트워크 추상 계층 (network abstraction layer; NAL) 유닛들의 시퀀스를 포함할 수도 있다. NAL 유닛은 NAL 유닛에서의 데이터의 타입 및 그 데이터를 에뮬레이션 방지 비트와 함께 필요에 따라 산재된 RBSP (raw byte sequence payload) 의 형태로 포함하는 바이트의 표시를 포함하는 신택스 구조이다. NAL 유닛들의 각각은, NAL 유닛 헤더를 포함할 수도 있고, RBSP 를 캡슐화 (encapsulate) 한다. NAL 유닛 헤더는, NAL 유닛 타입 코드를 표시하는 신택스 엘리먼트를 포함할 수도 있다. NAL 유닛의 NAL 유닛 헤더에 의해 명시되는 NAL 유닛 타입 코드는 NAL 유닛의 타입을 표시한다. RBSP 는 NAL 유닛 내에 캡슐화되는 정수 개의 바이트들을 포함하는 신택스 구조일 수도 있다. 일부 사례들에서, RBSP 는 제로 비트들을 포함한다.
비디오 디코더 (30) 는 비디오 인코더 (20) 에 의해 생성된 비트스트림을 수신할 수도 있다. 또한, 비디오 디코더 (30) 는 비트스트림으로부터 신택스 엘리먼트들을 획득하기 위하여 비트스트림을 파싱할 수도 있다. 비디오 디코더 (30) 는 비트스트림으로부터 획득된 신택스 엘리먼트들에 적어도 부분적으로 기초하여 비디오 데이터의 화상들을 재구성할 수도 있다. 비디오 데이터를 재구성하기 위한 프로세스는 일반적으로, 비디오 인코더 (20) 에 의해 수행되는 프로세스에 상반될 수도 있다. 가령, 비디오 디코더 (30) 는 현재 CU 의 PU 들을 위한 예측 블록들을 결정하기 위하여 PU 들의 모션 벡터들을 사용할 수도 있다. 또한, 비디오 디코더 (30) 는 현재 CU 의 TU 들의 계수 블록들을 역 양자화할 수도 있다. 비디오 디코더 (30) 는 현재 CU 의 TU 들의 변환 블록들을 재구성하기 위하여 계수 블록들에 대해 역 변환들을 수행할 수도 있다. 비디오 디코더 (30) 는 현재 CU 의 TU 들의 변환 블록들의 대응하는 샘플들에 현재 CU 의 PU 들을 위한 예측 블록들의 샘플들을 추가하는 것에 의해 현재 CU 의 코딩 블록들을 재구성할 수도 있다. 화상의 각 CU 에 대해 코딩 블록들을 재구성하는 것에 의해, 비디오 디코더 (30) 는 화상을 재구성할 수도 있다.
변환 코딩은 HEVC (High-Efficiency Video Coding) 와 같은 모든 현대 비디오 코딩 표준들의 기본적인 부분이다 (G. J. Sullivan, J.-R. Ohm, W.-J. Han, and T. Wiegand, “Overview of the High Efficiency Video Coding (HEVC) Standard,” IEEE Trans. Circuits Syst. Video Technol., vol. 22, no. 12, pp. 1649-1668, Dec. 2012; M. Wien, High Efficiency Video Coding: Coding Tools and Specification, Springer- Verlag, Berlin, 2015 에 기재된 바와 같음). 최적의 변환 코딩은 특정 신호 통계에 최적화될 수 있기 때문에 매트릭스 기반 Karhunen-Loeve 변환 (KLT) (또는 유사한 적응형 변환) 을 사용해야 한다고 알려져 있다. 그러나, 매트릭스 구현은 상대적으로 많은 수의 계산 및 상대적으로 많은 양의 메모리를 요구하는 경향이 있다. 실제로 DCT (Discrete Cosine Transform) dhk 같은 고정된 분리 가능한 변환은 변환을 구현하기 위해 더 적은 계산 및 메모리를 사용할 수 있으므로 채택되었다.
본 개시는 KLT를 사용하여 달성된 것들과 거의 동일한 코딩 이득을 얻는 것을 가능하게 하지만, 현저히 더 적은 메모리 및 계산을 갖는 기술을 설명한다. 일부 예들에서, 본 개시의 기술들은 다음에 기초한다: (a) 비디오 인코더 (20) 에 의해 테스트될 수 있는 데이터 특정 변환 세트를 생성한 다음, 비디오 인코더 (20) 는 최상의 데이터 특정 변환 (예를 들어 왜곡을 최소화하는 것들) 을 선택할 수도 있다. 비디오 인코더 (20) 는 비디오 디코더 (30) 에 의한 사용, 및 (b) 컴팩트 다중 패스 변환 (CMPT) 이라 불리는 변환 매트릭스에 의한 벡터의 곱셈을 근사화하는 기술을 위해 전송 (시그널링) 할 수도 있다. CMPT 기술이 특별히 비디오 코딩 목적을 위해 최적화되고, 중요하지 않은 변환 파라미터 및 계산을 식별하기 위해 코딩 이득 추정치를 사용하기 때문에, 본 개시의 기술은 분리 가능하지 않은 매트릭스 기반 동작과 비교하여, 더 적은 메모리 및 계산을 사용할 수도 있다. CMPT는 많은 타입의 구현, 그리고 실제적인 예로서, HyGT (Hypercube-Givens Transform) 라고 불리는 변환 근사 기술을 기반으로 한 구현을 가능하게 한다.
도 2는 변환 선택과 함께 하이브리드 비디오 인코딩을 위한 예시적인 시스템 (40) 을 나타내는 블록도이다. 특히, 도 2는 비디오 인코딩 시스템 (즉, 비디오 인코더 (20) 와 같은 비디오 인코더) 의 도를 도시하며, 여기서 비디오 프레임들은 먼저 픽셀 블록들로 분할된다 (블록 분리 (42)). 예시적인 타입의 픽셀 블록은 CU에 대한 코딩 블록들을 포함할 수도 있다. 또한, 도 2에서, 각각의 블록에서, 비디오 인코더는 각각의 픽셀 값을 그의 예측 값으로부터 감산한다 (44). 비디오 인코더는 선형 연산 (블록 변환 (46)) 을 사용하여 차이 (즉, 잔차) 블록을 수치적으로 변환한다. 도 2의 예에서, r은 잔차 데이터를 나타내며, yt는 변환된 잔차 데이터를 나타내며, t는 yt를 생성하기 위해 어떤 변환이 잔차에 적용되었는지를 표시한다.
선형 변환은 매트릭스-벡터 곱셈에 의해 구현될 수 있지만, 비디오 코딩 어플리케이션은 삼각 함수로부터 유도되는 고정된 계수를 갖고, 등가의 매트릭스-벡터 곱보다 훨씬 더 효율적으로 계산될 수 있는 몇몇의 특별한 고속 변환을 사용하고 있다. V. Britanak, P. C. Yip, 및 K. R. Rao 의, Discrete Cosine and Sine Transforms: General Properties, Fast Algorithms and Integer Approximations, Academic Press, 2007 참조. 본 개시는 CMPT를 사용하는 몇몇 가능한 추가 개선점을 기술하는데, 여기서 벡터 변환들의 세트는 파이프라인 방식으로 사용되어 벡터 변환에 의해 생성된 출력 값들을 파이프라인에서 후속 벡터 변환으로 공급하고, 각각의 개별적인 벡터 변환은 하나 이상의 파라미터들을 입력으로서 이전 벡터 변환으로부터의 출력에 더하여 수신한다.
도 2에서, 비디오 인코더는 변환된 잔차 데이터를 양자화 (양자화 48) 하고 양자화된 변환된 잔차 데이터를 역 양자화 (역 양자화 50) 할 수도 있다. 또한, 비디오 인코더는 잔차 데이터를 복원하기 위해 역 양자화된 변환된 잔차 데이터에 역 변환 (역 변환 52) 을 적용할 수도 있다. 비디오 인코더의 디코딩된 화상 버퍼 (DPB) 라고도 하는 프레임 버퍼 (54) 는 잔차 데이터에 기초하여 결정된 재구성된 픽셀 블록을 저장한다. 비디오 인코더는 다른 픽셀 블록들의 예측 (블록 예측 56) 을 위해 프레임 버퍼 (54) 에 저장된 재구성된 픽셀 블록을 사용할 수도 있다. 도 2의 예에서, 비디오 인코더에 의해 변환된 잔차 데이터에 적용되는 역 변환은 변환된 잔차 데이터를 생성하기 위해 이전에 적용된 변환에 기초하여 결정될 수도 있다. 변환된 잔차 데이터를 생성하기 위해 어떤 변환이 적용되었는지에 대한 표시가 비디오 인코더의 엔트로피 인코딩 유닛 (58) 에 제공될 수도 있다. 엔트로피 인코딩 유닛 (58) 은 양자화된 변환된 잔차 데이터를 나타내는 신택스 엘리먼트와 함께 변환을 나타내는 신택스 엘리먼트를 엔트로피 인코딩할 수도 있다.
도 3a 및 도 3b는 비디오 잔차들의 2차원 블록에 변환을 적용하기 위한 예시적인 옵션을 도시한다. 특히, 도 3a는 픽셀 잔차들의 2차원 블록에서 분리 가능한 변환을 계산하기 위한 예시적인 옵션을 나타내는 개념도이다. 도 3b는 픽셀 잔차들의 2차원 블록에서 분리 불가능한 변환을 계산하기 위한 예시적인 옵션을 나타내는 개념도이다.
분리 가능이라고 불리는 제 1 옵션 (예를 들어, 도 3a) 에서, 잔차들은 도 3a에서 화살표로 나타낸 바와 같이, 먼저 행에서 그리고 다음으로 열로 (또는 그 역으로) 따로따로 변환된다. 보다 구체적으로는, NxN 입력 블록 (60) 의 각각의 개별적인 행에 대해, 비디오 인코더/디코더 (총칭하여 비디오 코더라 함) 는 개별적인 행의 엘리먼트들로 이루어진 벡터를 N × N 변환 매트릭스로 승산함으로써 중간 블록 (62) 의 행을 생성한다. 중간 블록 (62) 의 각각의 개별적인 열에 대해, 비디오 코더는 각각의 열의 엘리먼트들로 이루어진 벡터를 NxN 변환 매트릭스로 승산함으로써 출력 블록의 열을 생성한다.
분리 불가능이라고 불리는 제 2 타입의 블록 변환 (예를 들어, 도 3b) 에서, 모든 잔차들은 도 3b에 도시된 바와 같이 단일 벡터로 모아지고 함께 변환된다. 이 옵션은 픽셀 블록들의 2 차원 구조를 활용하지 않지만 이 옵션은 보다 일반적이고 강력하며, 수평 및 수직과는 상이한 방향성 특징들을 이용할 수 있다. 가령, N × N 값으로 이루어진 입력 블록 (64) 에 대해, 변환 매트릭스는 N2 × N2이다. 출력 블록 또는 벡터 (66) 를 결정하기 위해, 비디오 코더는 입력 블록 (64) 을 변환 매트릭스로 승산한다.
계산상의 복잡성을 최소화하기 위해, 비디오 코딩 표준은 하나의 블록 크기와 하나의 타입의 분리 가능한 변환 (DCT) 만을 사용했다. HEVC의 최근 채택으로, 분리 가능한 변환이 여러 블록 크기에 대해 정의되고, DST (Discrete Sine Transform) 이 채택되었다.
도 2 에 도시된 바처럼, 비디오 인코더가 여러 개의 상이한 변환을 테스트할 수 있고, 최상의 압축을 산출하는 변환을 사용하고, 사용된 변환의 인덱스 t 를 비디오 디코더에 전송할 수 있다면, 보다 양호한 압축이 달성될 수 있다 (Y. Ye 및 M. Karczewicz, “Improved H.264 intra coding based on bi-directional intra prediction, directional transform, and adaptive coefficient scanning,” in Proc. IEEE Int. Conf. Image Process., San Diego, CA, Oct. 2008, pp. 2116-2119; S. Takamura 및 A. Shimizu, “On intra coding using mode dependent 2D-KLT,” in Proc. 30th Picture Coding Symp., San Jose, CA, Dec. 2013, pp. 137-140; O. G. Sezer, O. G. Guleryuz, 및 Y. Altunbasak, “Approximation and compression with sparse orthonormal transforms,” IEEE Trans. Image Processing, pp. 2328-2343, Aug. 2015; 그리고 H. E. Egilmez, A. Said, Y.-H. Chao, 및 A. Ortega, “Graph-based transforms for inter predicted video coding,” in Proc. IEEE Int. Conf. Image Process., Quebec City, Canada, Sept. 2015, pp. 3992-3996 참조). 일부 예에서, 인덱스 t는 변환들의 목록에서 변환을 표시함으로써 변환을 식별할 수도 있다.
본 개시는 최적의 KLT가 각각의 변환 인덱스 t에 대해 조건부 잔차 상관 매트릭스를 먼저 계산하는 것
그리고 다음으로 상관 매트릭스를 대각선으로 하는 직교 매트릭스 Kt를 계산하는 것에 의해 유도된다는 것을 고려한다, 즉
매트릭스 Kt는 보통 매트릭스 벡터 곱을 통해 변환 계수의 벡터 yt (도 2) 의 계산에 직접적으로 사용된다
분리 불가능한 변환에 대한 현재의 매트릭스 기반 기술은 메모리 및 계산에 대한 과도한 수요를 요구할 수도 있다. 이 개시의 나중 부분들은 이 개시의 기술이 어떻게 그 문제를 해결할 수 있는지 설명한다.
아래의 표 1은 상이한 타입들의 2차원 선형 변환들의 계산 복잡성을 보여준다 (표 1의 마지막 행은 아래에서 자세히 설명됨). 블록 크기 N 은 2의 멱수, 즉 N = 2B 로 정의되기 때문에, 이것은 지수적 복잡도 증가로 옮겨지고, 상이한 변환 타입들 사이에는 상당한 차이가 있을 수 있다.
표 I: P 패스를 가진 상이한 타입의 2-D 블록 변환 (2
B
× 2
B
블록) 의 메모리 및 산술 연산 복잡성.
표 I 에서, 단지 하나의 변환이 선택되고 비디오 디코더에 의해 사용되기 때문에, 계산된 픽셀 당 연산의 상대적 측정이 고려된다. 반면에, 모든 매트릭스가 저장되어야 하기 때문에 메모리 요구사항은 상대적으로 측정될 수 없다. 또한 일부 비디오 어플리케이션은 비싼 고속 메모리에 저장될 필요가 있을 수도 있는 수백 또는 수천의 상이한 매트릭스들을 요구할 수도 있다는 것에 유의하는 것이 중요하다.
비디오 코딩의 조기 구현에서, 오직 가장 단순한 접근법, 고속 분리 가능 변환이 실제적으로 실현 가능했다. 이제, 작은 블록 크기 (예를 들어, 4 × 4 블록) 에 대한 매트릭스 기반 분리 불가능 변환이 고려될 수 있지만, 요구 사항은 블록 크기에 따라 너무 빠르게 증가할 수도 있고, 더 큰 블록에 대해서는 엄청나질 수도 있다.
생략 (missing) 하는 것은 매트릭스 기반 접근법과 동일한 복잡성 증가가 없는 방식으로, 분리 불가능한 변환을 효율적으로 구현하는 솔루션이다. 본 개시의 기술은 그러한 타입의 솔루션을 제공할 수도 있다.
본 개시의 기술은 비디오 압축에 대한 변환 코딩의 어플리케이션에 존재하는 특정 타입의 특징에 기초한다. 다른 어플리케이션에서 매트릭스 벡터 연산의 복잡성은, 희소하거나 특수 구조를 갖는 매트릭스를 사용하여 감소될 수 있다. 그러나, 이러한 기술들은 매트릭스 Kt 가 직교해야 하고, 복잡성 제약이 매트릭스에 직접 추가되면, 그들의 압축 효율성이 실현되지 않을 수도 있기 때문에, 비디오 코딩 케이스에 적용될 수 없다.
본 개시의 예시적인 솔루션은 이하에 기초한다. 첫째, 이 기술은 KLT 변환을 정확히 계산하는 것을 시도하지 않는다. 대신,이 기술은 다음과 같은 형태로 KLT에 근사만을 제공하는 벡터 변환 Mt(x) (즉, 하나의 벡터를 동일한 차원의 다른 벡터로 매핑하는 변환) 를 찾는다:
t위의 식에서, zt는 변환 t의 출력이고 r 은 잔차 데이터이다.
둘째, 전체 매트릭스 벡터 곱은 함수 형태 Mt,p(x, ht,p) 에서 각각 파라미터 벡터 ht,p 를 갖는 Pt 상이한 벡터 변환 Mt,p (패스라고 함) 의 시퀀스로 대체되고, 최종 잔차 변환은 다음과 같은 형태이다:
본 개시의 기술들은 본 명세서에서 컴팩트 다중 패스 변환 (CMPT) 으로 지칭되는 Pt 패스를 갖는 이러한 타입의 벡터 변환을 커버한다. CMPT의 구현은 도 4의 도에 도시되어 있다. 환언하면, 도 4는 본 개시의 기술에 따른 컴팩트 다중 패스 변환 구현의 도이다. 이 개시의 목적을 위해, CMPT의 정의는 상당히 일반적이지만, 이러한 일반적 특징의 대부분이 실제로 필요할 수도 있다. 표 I에 보여진 복잡성 메트릭에 대해, 차원 N의 벡터에 대한 변환을 위한 CMPT 상의 제한은 (1) CMPT 패스의 파라미터 세트를 나타내는 메모리의 양이 N에 비례해야 한다는 것; (2) 각각의 CMPT 패스는 가능하게는, N (상수) 에 독립적인 시간 (연산 수) 을 각각 필요로 하는, N 에 비례하는 다수의 프로세싱 엘리먼트들을 사용하여 병렬로 계산될 수 있는 것일 수도 있다.
도 4의 예에서, 비디오 코더는 입력 블록 r에 변환을 적용한다. 비디오 코더가 비디오 데이터를 인코딩하는 경우에서, 입력 블록은 잔차 샘플들을 포함할 수도 있다. 비디오 코더가 비디오 데이터를 디코딩하는 경우에서, 입력 블록은 변환 계수들을 포함할 수도 있다. 또한, 도 4의 예에서, 비디오 코더는 입력 t (예를 들어, 변환을 식별하는데 사용되는 인덱스)에 기초하여 복수의 파라미터 어레이 (70A-70T) (집합적으로, 파라미터 어레이 (70)) 를 결정한다. 일부 예에서, 비디오 코더는 메모리에 파라미터 어레이 (70) 를 저장하거나 또는 메모리에 저장된 데이터로부터 파라미터 어레이를 유도한다. 입력 t는 어떤 변환을 적용할지를 나타낼 수도 있다. 일부 예에서, 입력 t는 변환 목록으로의 인덱스이다. 상이한 변환은 상이한 파라미터 어레이 및/또는 상이한 패스와 연관될 수도 있다. 일부 예에서, 입력 t는 변환을 명시적으로 식별하지 않는 하나 이상의 데이터들을 포함한다. 예를 들어, 입력 t는 블록 크기, 예측 모드 (예를 들어, 인트라 또는 인터 예측), 인트라 예측 모드 등 중 하나 이상을 포함할 수도 있다. 그러한 예에서, 입력 t는 변환 목록으로의 인덱스가 아니라, 변환을 결정하는데 사용될 수 있는 기타 정보일 수도 있다.
도 4의 예에서, 변환을 적용하기 위해, 비디오 코더는 일련의 패스들 (72A-72T) (집합적으로 패스들 (72)) 을 수행한다. 일련의 패스들의 각각의 개별적인 패스는 결정된 복수의 파라미터 어레이들의 개별적인 파라미터 어레이에 기초하여 입력 데이터를 변환한다. 입력 블록 r은 일련의 패스들 중 첫번째 패스의 입력 데이터이다. 첫번째 패스 이외의 일련의 패스들의 각각의 패스의 입력 데이터는 일련의 패스들 중 이전 패스의 출력 데이터이다. 일련의 패스들 중 마지막 패스의 출력은 변환된 블록 zt 이다. 본 개시의 다른 부분에서 설명된 바와 같이, 각각의 패스는 Givens 직교 변환과 같은 직교 변환들의 세트를 포함할 수도 있다. 비디오 코더는 동시 (병렬) 계산으로 패스 내에서 직교 변환을 수행할 수도 있다. 예를 들어, 독립 Givens 변환 세트는 여러 프로세서를 사용하여 동시에 계산될 수 있다.
파라미터들 ht,p 의 최적의 세트는 다양한 방식으로 구해질 수도 있다. 예를 들어, 파라미터들 ht,p 의 최적의 세트는 가능한 파라미터 값들의 검색을 수행하고 최상의 결과를 산출하는 경향이 있는 파라미터 값들의 조합을 식별함으로써 구해질 수도 있다. 이 예에서, 검색은 인코딩 또는 디코딩 프로세스와는 별도로 수행될 수도 있다. 규범적 신택스 (normative syntax) 는 다음을 정의할 수도 있다:
1.
어느 것이 유효한 변환이고, 무엇이 그들의 허용되는 파라미터들인가;
2.
인코더가 변환에 관한 정보와 디코딩에 사용될 개별적인 파라미터를 전하는 방법을 정의하는 신택스.
일부 예에서, 파라미터들의 최적의 세트는 비디오 인코더 (20) 및 비디오 디코더 (30) 각각에서 사전 계산되고 저장될 수도 있다.
예를 들어, CMPT의 하나의 특정 구현에서, 벡터 엘리먼트들의 쌍들의 분리된 세트들에 적용되는 병렬 Givens 직교 변환들 (회전들) 의 시퀀스가 사용된다. 도 5는 이러한 변환을 나타내기 위해 일반적으로 사용되는 "버터플라이 (butterfly)" 도 및 그 수학적 의미를 도시한다. 따라서, 도 5의 예에서, 버터플라이는 입력으로서 ri 및 rj를 수신하고 또한 입력으로서 파라미터 θ를 수신한다. 버터플라이의 출력은 yi 와 yj 이다. yi 는 cos(θ)ri - sin(θ)rj 으로서 계산된다. yj 는 cos(θ)rj + sin(θ)rj 으로서 계산된다. 역 변환을 적용할 때, 비디오 디코더 (30) 는 ri 를 yicos(θ) + yjsin(θ) 로서 그리고 rj 를 -yisin(θ) + yjcos(θ) 로서 계산할 수도 있다. 도 5 및 본 개시의 다른 예들이 Givens 회전에 대해 기술되었지만, Givens 회전 대신에, Householder 변환, 3 이상의 각도를 갖는 Euler 회전 및 다른 변환과 같은 다른 변환이 사용될 수도 있다.
도 6은 차원 16의 벡터들 상에 평행 Givens 회전들의 시퀀스들을 사용하는 컴팩트 다중 패스 변환 구현의 도이다. Givens 회전들은 하나의 패스내에 적용되는 Givens 회전들이 병렬로 적용될 수 있다는 의미에서 병렬이다. 이러한 Givens 회전들은 예를 들어 도 6에 도시된 바와 같이 하이퍼큐브 토폴로지에 적절히 순차적으로 배열될 수 있다. 도 6의 변환은 입력들 r1 ... r16 의 각각이 분리된 차원으로 고려될 수도 있다는 의미에서 하이퍼큐브 토폴로지를 갖는 것으로 고려될 수 있다. 도 6의 예는 표 I 의 마지막 행에 도시된 바와 같이 메모리 및 연산 복잡성을 얻는 경우이다. 도 5의 예에서, CMPT는 4 개의 패스들, 즉 80A, 80B, 80C 및 80D를 포함한다. 그러나, 다른 예에서, 다른 수의 패스들이 가능하다.
도 6의 예에서, 파라미터 벡터 ht,p 는 대응하는 패스에서 각각의 버터플라이에 의해 사용될 상이한 각도 (θ) 를 포함한다. 예를 들어, 파라미터 벡터 ht,1 은 {0˚, 20˚, 40˚, 60˚, 80˚, 100˚, 120˚, 140˚} 일 수도 있고, 파라미터 벡터 ht,2 는 {5˚, 25˚, 45˚, 65˚, 85˚, 105˚, 125˚, 145˚} 일 수도 있고 기타 등등이다. 버터플라이 당 하나의 각도만 사용할 필요가 있기 때문에, 파라미터 벡터는 잔차 벡터 r 의 차원의 절반을 갖는다. 예를 들어, 도 6의 예에서, 잔차 벡터 r 가 16 개의 샘플을 포함하고 있기 때문에, 각각의 파라미터 벡터에 8 개의 파라미터가 존재한다.
일부 예에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 상이한 변환, 상이한 블록 크기 및 상이한 패스에 대한 상이한 파라미터 벡터를 사용할 수도 있으며, 일부 경우에는 저장할 수도 있다. 예를 들어, 비디오 인코더 (20) 및 비디오 디코더 (30)는 8x8 블록과 함께 파라미터 벡터 {0˚, 20˚, 40˚, 60˚} 및 {5˚, 25˚, 45˚, 65˚} 를 사용할 수도 있다. 게다가, 이 예에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 16x16 블록들과 함께 파라미터 벡터 {2˚, 22˚, 42˚, 62˚, 82˚, 102˚, 122˚, 142˚}, {5˚, 25˚, 45˚, 65˚, 85˚, 105˚, 125˚, 145˚}, {7˚, 27˚, 47˚, 67˚, 87˚, 107˚, 127˚, 147˚}, 및 {0˚, 20˚, 40˚, 60˚, 80˚, 100˚, 120˚, 140˚} 를 사용할 수도 있다.
도 6 의 예에서, 각각의 버터플라이는 도 5에 도시된 Givens 회전에 대응한다. 따라서, 도 6의 예에서, 각각의 패스에서, 8 개의 Givens 회전이 (예를 들어, 병렬로) 수행된다. 각각의 개별적인 패스 p에 대해, 개별적인 패스 내의 Givens 회전들 각각은 개별적인 패스에 대한 파라미터 벡터 (ht,p) 로부터의 상이한 파라미터 값 (예를 들어, θ) 을 사용할 수도 있다. 예를 들어, 도 6의 좌상 버터플라이에 대해, 라운드 1 에 대한 파라미터 벡터 (즉, h1,1) 에서의 제 1 파라미터 값이 45˚와 같으면, 좌상 버터플라이의 출력은 cos(45˚)r1 - sin(45˚)r2 및 cos(45˚)r2 + sin(45˚)r1 와 같다. 일부 예에서, 패스에서의 Givens 회전들 중 2 개 이상은 동일한 파라미터 값 (예를 들어, θ) 을 포함할 수도 있다.
도 6에서, 변환 Mt,p(x, ht,p) 의 구조는 패스마다 변한다는 점에 유의한다. 따라서, 파라미터들 또는 변환들의 순서가 변경되면 상이한 결과가 얻어진다. 예를 들어, 도 6의 패스 (80B) 의 버터플라이가 도 6의 패스 (80A) 의 버터플라이와 교환되면 상이한 결과가 얻어질 수도 있다.
이런 식으로, 비디오 인코더 (20) 는 비디오 데이터의 현재 화상의 현재 블록에 대한 잔차 값들을 결정할 수도 있다. 또한, 비디오 인코더 (20) 는 현재 블록에 대한 잔차 값들 (예를 들어, 도 4의 r, 도 6의 값들 r1…r16) 에 변환을 적용하여 현재 블록에 대한 복수의 데이터 엘리먼트들 (예를 들어, 도 4의 zt 도 6의 값들 zt,1) 을 유도할 수도 있다. 현재 블록에 대한 잔차 값에 변환을 적용하는 것의 일부로서, 비디오 인코더 (20) 는 벡터 변환들의 시퀀스 (예를 들어, 도 4 의 패스들 72, 도 6 의 패스들 80) 를 적용한다. 벡터 변환들의 시퀀스의 제 1 벡터 변환 (예를 들어, 도 4 의 패스 72A, 도 6 의 패스 80A) 에 대한 입력 값은 현재 블록에 대한 잔차 값을 포함한다. 벡터 변환의 시퀀스의 최종 벡터 변환 (예를 들어, 도 4의 패스 72T, 도 6의 패스 80A) 에 대한 출력 값은 현재 블록에 대한 데이터 엘리먼트들을 포함한다. 벡터 변환들의 시퀀스의 제 1 벡터 변환 이외의 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 입력 값은 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값을 포함한다. 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터 (예를 들어, 도 4 에서의 ht,1…ht,Pt, 도 6에서의 ht,1…ht,4) 를 입력으로서 더 취하고, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함한다. 비디오 인코더 (20) 는, 현재 화상의 인코딩된 표현을 포함하는 비트스트림에, 현재 블록에 대한 데이터 엘리먼트에 기초한 값을 갖는 신택스 엘리먼트를 포함시킬 수도 있다.
비디오 디코더 (30) 는 인코딩에 사용된 변환의 역을 적용할 수도 있다. 가령, 도 6의 예에서, zt,1 내지 zt,16 은 변환에 대한 입력의 역할을 할 수도 있고 r1 내지 r16은 변환의 출력이다. Givens 직교 변환이 사용되는 경우, 역 Givens 직교 변환의 입력은 yi 및 yj이고 출력은 ri 및 rj 이고 ri = cos(θ)yi + sin(θ)yj; rj = cos(θ)yj - sin(θ)yi 이다.
이런 식으로, 비디오 디코더 (30) 는 비디오 데이터의 현재 화상의 인코딩된 표현을 포함하는 비트스트림에서의 신택스 엘리먼트에 기초하여, 현재 화상의 현재 블록에 대한 복수의 데이터 엘리먼트 (예를 들어, 변환 계수들, 도 6 에서의 값들 zt,1-zt,16) 를 결정할 수도 있다. 또한, 비디오 디코더 (30) 는 현재 블록에 대한 잔차 값 (예를 들어, 도 6에서의 값들 r1 ... r16) 을 유도하기 위해 데이터 엘리먼트들에 변환을 적용할 수도 있다. 변환은 벡터 변환들의 시퀀스 (예를 들어, 도 4의 패스 72, 도 6의 패스 80) 를 포함한다. 도 6 에 도시된 바처럼, 벡터 변환들의 시퀀스의 제 1 벡터 (예를 들어, 도 4의 패스 72A, 도 6의 패스 80D) 변환에 대한 입력 값은 복수의 데이터 엘리먼트들을 포함한다. 게다가, 도 6 에 도시된 바처럼, 벡터 변환들의 시퀀스의 최종 벡터 변환 (예를 들어, 도 4의 패스 72T, 도 6의 패스 80A) 에 대한 출력 값은 현재 블록에 대한 잔차 값을 포함한다. 벡터 변환들의 시퀀스의 제 1 벡터 변환 이외의 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 입력 값은 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값을 포함한다. 게다가,벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터 (예를 들어, 도 4 에서의 ht,1…ht,Pt, 도 6에서의 ht,1…ht,4) 를 입력으로서 더 취하고, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함한다. 본 개시의 다른 곳에서 설명된 바처럼, 비디오 디코더 (30) 는 유도된 잔차 데이터에 기초하여, 현재 화상의 샘플들을 재구성할 수도 있다.
다양한 예들이 설명되었다. 본 개시의 특정 예는 개별적으로 또는 서로 조합하여 사용될 수도 있다.
도 7 은 본 개시의 기법들을 구현할 수도 있는 일 예의 비디오 인코더 (20) 를 예시하는 블록도이다. 도 7은 설명의 목적을 위해 제공되고 본 개시에 폭넓게 예시되고 설명된 기법들의 한정으로 고려되서는 안된다. 본 개시의 기법들은 다양한 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
프로세싱 회로는 비디오 인코더 (20) 를 포함하고, 비디오 인코더 (20) 는 본 개시에 설명된 예시적인 기술 중 하나 이상을 수행하도록 구성된다. 가령, 비디오 인코더 (20) 는 집적 회로를 포함하고, 도 7에 나타낸 다양한 유닛들은 회로 버스와 상호 접속되는 하드웨어 회로 블록 들로서 형성될 수도 있다. 이들 하드웨어 회로 블록들은 분리된 회로 블록들일 수도 있거나 또는 유닛들 중 2 개 이상은 공통의 하드웨어 회로 블록으로 결합될 수도 있다. 하드웨어 회로 블록은 AND, OR, NAND, NOR, XOR, XNOR 와 같은 논리 블록 및 다른 유사한 논리 블록뿐만 아니라 산술 논리 유닛 (ALU), 초등 함수 유닛 (EFU) 과 같은 연산 블록을 형성하는 전기 컴포넌트들의 조합으로서 형성될 수도 있다.
일부 예에서, 도 7에 나타낸 유닛들 중 하나 이상은 프로세싱 회로 상에서 실행되는 소프트웨어 유닛일 수도 있다. 이러한 예에서, 이들 소프트웨어 유닛에 대한 목적 코드는 메모리에 저장된다. 운영 시스템은 비디오 인코더 (20) 로 하여금 목적 코드를 취출하고 목적 코드를 실행하게 할 수도 있으며, 이는 비디오 인코더 (20) 로 하여금 예시적인 기술을 구현하기 위한 동작들을 수행하게 한다. 일부 예에서, 소프트웨어 유닛은 비디오 인코더 (20) 가 시동시에 실행되는 펌웨어일 수도 있다. 따라서, 비디오 인코더 (20) 는 예시적인 기술을 수행하는 하드웨어를 갖는 구조적 컴포넌트이거나 또는 하드웨어를 특화하여 예시적인 기술을 수행하기 위해 하드웨어 상에서 실행되는 소프트웨어/펌웨어를 갖는다.
도 7의 예에서, 비디오 인코더 (20) 는 예측 프로세싱 유닛 (100), 비디오 데이터 메모리 (101), 잔차 생성 유닛 (102), 변환 프로세싱 유닛 (104), 양자화 유닛 (106), 역 양자화 유닛 (108), 역 변환 프로세싱 유닛 (110), 재구성 유닛 (112), 필터 유닛 (114), 참조 화상 버퍼 (116), 및 엔트로피 인코딩 유닛 (118) 을 포함한다. 예측 프로세싱 유닛 (100) 은, 인터 예측 프로세싱 유닛 (120) 및 인트라 예측 프로세싱 유닛 (126) 을 포함한다. 인터 예측 프로세싱 유닛 (120) 은, 모션 추정 유닛 및 모션 보상 유닛 (미도시) 를 포함할 수도 있다.
비디오 데이터 메모리 (101) 는 비디오 인코더 (20) 의 컴포넌트들에 의해 인코딩될 비디오 데이터를 저장하도록 구성될 수도 있다. 비디오 데이터 메모리 (101) 에 저장된 비디오 데이터는, 예를 들어, 비디오 소스 (18) 로부터 획득될 수도 있다. 참조 화상 버퍼 (116) 는 또한 디코딩된 화상 버퍼로 지칭될 수도 있다. 참조 화상 버퍼 (116) 는 인트라- 또는 인터-코딩 모드들에서 비디오 인코더 (20) 에 의한 비디오 데이터를 인코딩하는데 이용하기 위한 참조 비디오 데이터를 저장한다. 비디오 데이터 메모리 (101) 및 참조 화상 버퍼 (116) 는 동기 DRAM (SDRAM) 을 포함하는, 동적 랜덤 액세스 메모리 (DRAM), 자기저항 RAM (MRAM), 저항 RAM (RRAM), 또는 다른 타입의 메모리 디바이스들을 포함하는, 다양한 메모리 디바이스들 중의 어느 것에 의해 형성될 수도 있다. 비디오 데이터 메모리 (101) 및 참조 화상 버퍼 (116) 는 동일한 메모리 디바이스 또는 분리된 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에서, 비디오 데이터 메모리 (101) 는 비디오 인코더 (20) 의 다른 컴포넌트들과 함께 온칩 (on-chip) 될 수도 있거나, 또는 그러한 컴포넌트들에 대해 오프칩 (off-chip) 될 수도 있다. 비디오 데이터 메모리 (101) 는 도 1의 저장 매체 (19) 와 동일하거나 또는 이의 일부일 수도 있다.
비디오 인코더 (20) 는 비디오 데이터를 수신한다. 비디오 인코더 (20) 는 비디오 데이터의 화상의 슬라이스에서 각 CTU 를 인코딩할 수도 있다. CTU 의 각각은 동일한 크기의 루마 코딩 트리 블록들 (CTB) 및 화상의 대응하는 CTB들과 연관될 수도 있다. CTU 를 인코딩하는 것의 부분으로서, 예측 프로세싱 유닛 (100) 은 파티셔닝을 수행하여 CTU 의 CTB 들을 점진적으로 더 작은 블록들로 분할할 수도 있다. 더 작은 블록들은 CU 들의 코딩 블록일 수도 있다. 예를 들어, 예측 프로세싱 유닛 (100) 은 트리 구조에 따라 CTU와 연관된 CTB를 파티셔닝할 수도 있다.
비디오 인코더 (20) 는 CU 들의 인코딩된 표현들 (즉, 코딩된 CU들) 을 생성하기 위하여 CTU 의 CU 들을 인코딩할 수도 있다. CU 를 인코딩하는 부분으로서, 예측 프로세싱 유닛 (100) 은 CU 의 하나 이상의 PU 들 중에서 CU 와 연관된 코딩 블록들을 파티셔닝할 수도 있다. 따라서, 각각의 PU 는 루마 예측 블록 및 대응하는 크로마 예측 블록들과 연관될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 다양한 크기를 갖는 PU들을 지원할 수도 있다. 위에 표시된 바처럼, CU 의 크기는 CU 의 루마 코딩 블록의 크기를 나타낼 수도 있고 PU 의 크기는 PU 의 루마 예측 블록의 크기를 나타낼 수도 있다. 특정 CU 의 크기가 2Nx2N 이라고 가정하면, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 인트라 예측에 대해 2Nx2N 또는 NxN 의 PU 크기들, 그리고 인터 예측에 대해 2Nx2N, 2NxN, Nx2N, NxN 또는 유사한 것의 대칭적 PU 크기들을 지원할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 또한, 인터 예측을 위해 2NxnU, 2NxnD, nLx2N, 및 nRx2N 의 PU 크기에 대한 비대칭적 파티셔닝을 지원할 수도 있다.
인터 예측 프로세싱 유닛 (120) 은 CU 의 각각의 PU에 대한 인터 예측을 수행함으로써 PU 를 위한 예측 데이터를 생성할 수도 있다. PU 를 위한 예측 데이터는 PU 의 예측 블록들 및 PU 를 위한 모션 정보를 포함할 수도 있다. 인터 예측 프로세싱 유닛 (126) 은 PU에 대한 인트라 예측을 수행함으로써 PU 를 위한 예측 데이터를 생성할 수도 있다. PU 를 위한 예측 데이터는 PU 의 예측 블록들 및 다양한 신택스 엘리먼트들을 포함할 수도 있다. 인트라 예측 프로세싱 유닛 (126) 은 I 슬라이스, P 슬라이스, 및 B 슬라이스에서 PU 들에 대해 인트라 예측을 수행할 수도 있다.
PU 에 대한 인트라 예측을 수행하기 위하여, 인트라 예측 프로세싱 유닛 (126) 은 다수의 인트라 예측 모드들을 이용하여 PU 를 위한 예측 데이터의 다수의 세트들을 생성할 수도 있다. 인트라 예측 프로세싱 유닛 (126) 은 이웃하는 PU들의 샘플 블록들로부터의 샘플들을 이용하여 PU에 대한 예측 블록을 생성할 수도 있다. 이웃하는 PU 들은 PU 의 상측, 우상측, 좌상측, 또는 좌측에 있을 수도 있으며, PU, CU 및 CTU들에 대해 좌에서 우측으로, 상단부에서 하단부로의 인코딩 순서를 취한다. 인트라 예측 프로세싱 유닛 (126) 은, 다양한 수의 인트라 예측 모드들, 예를 들어, 33개 방향 인트라 예측 모드들을 사용할 수도 있다. 일부 예들에서, 인트라 예측 모드들의 수는 PU 와 연관된 영역의 크기에 의존할 수도 있다.
예측 프로세싱 유닛 (100) 은, PU 를 위한 인터 예측 프로세싱 유닛 (120) 에 의해 생성된 예측 데이터 또는 PU 를 위한 인트라 예측 프로세싱 유닛 (126) 에 의해 생성된 예측 데이터 중에서 CU 의 PU 를 위한 예측 데이터를 선택할 수도 있다. 일부 예들에서, 예측 프로세싱 유닛 (100) 은 예측 데이터의 세트들의 레이트/왜곡 메트릭스들에 기초하여 CU 의 PU 들을 위한 예측 데이터를 선택한다. 선택된 예측 데이터의 예측 블록들은 여기서, 선택된 예측 블록들로서 지칭될 수도 있다.
잔차 생성 유닛 (102) 은, CU 에 대한 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 및 CU 의 PU 들에 대해 선택된 예측 블록들 (예를 들어, 예측 루마, Cb 및 Cr 블록들) 에 기초하여, CU 에 대한 잔차 블록들 (예를 들어, 루마, Cb 및 Cr 잔차 블록들) 을 생성할 수도 있다. 가령, 잔차 생성 유닛 (102) 은, 잔차 블록들에 있는 각각의 샘플이 CU 의 코딩 블록에 있는 샘플과 CU 의 PU 의 대응하는 선택된 예측 블록 사이의 차이와 동일한 값을 갖도록 CU 의 잔차 블록들을 생성한다.
변환 프로세싱 유닛 (104) 은, CU 의 TU 들과 연관된 변환 블록들로 CU 와 연관된 잔차 블록들을 파티셔닝하기 위하여 쿼드 트리 파티셔닝을 수행할 수도 있다. 따라서, TU 는 루마 변환 블록 및 2개의 크로마 변환 블록들과 연관될 수도 있다. CU 의 TU 들의 루마 및 크로마 변환 블록들의 크기 및 위치는 CU 의 PU 들의 예측 블록들의 크기 및 위치에 기초하거나 또는 기초하지 않을 수도 있다. "잔차 쿼드 트리" (RQT) 로 알려진 쿼드 트리 구조는 각각의 영역들과 연관된 노드들을 포함할 수도 있다. CU 의 TU 들은 RQT 의 리프 노드들에 대응할 수도 있다.
변환 프로세싱 유닛 (104) 은, TU 의 변환 블록들에 하나 이상의 변환들을 적용함으로써 CU 의 각각의 TU 에 대해 변환 계수 블록들을 생성할 수도 있다. 변환 프로세싱 유닛 (104) 은 TU 와 연관된 변환 블록에 다양한 변환들을 적용할 수도 있다. 예를 들어, 변환 프로세싱 유닛 (104) 은, 이산 코사인 변환 (DCT), 방향 변환, 또는 개념적으로 유사한 변환을 변환 블록에 적용할 수도 있다. 일부 예들에서, 변환 프로세싱 유닛 (104) 은 변환 블록에 변환들을 적용하지 않는다. 그러한 예들에서, 변환 블록은 변환 계수 블록으로 다루어질 수도 있다.
본 개시의 기술에 따라, 변환 프로세싱 유닛 (104) 은 본 개시의 다른 곳에서 기술된 컴팩트 다중 패스 변환 (CMPT) 기술을 구현할 수도 있다. 예를 들어, 변환 프로세싱 유닛 (104) 은 현재 블록에 대한 복수의 데이터 엘리먼트들을 유도하기 위해 현재 블록에 대한 잔차 값들에 변환을 적용할 수도 있다. 이 예에서, 상기 현재 블록에 대한 상기 잔차 값들에 상기 변환을 적용하는 것은 벡터 변환들의 시퀀스를 적용하는 것을 포함한다. 이 예에서, 벡터 변환들의 시퀀스의 제 1 벡터 변환에 대한 입력 값들은 현재 블록에 대한 잔차 값들을 포함한다. 게다가, 이 예에서, 벡터 변환들의 시퀀스의 최종 벡터 변환의 출력 값들은 현재 블록에 대한 데이터 엘리먼트들을 포함한다. 이 예에서, 벡터 변환의 시퀀스의 제 1 벡터 변환 이외의 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 입력 값은 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값을 포함한다. 게다가, 이 예에서, 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은, 입력으로서, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 더 취하고, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함한다.
양자화 유닛 (106) 은 계수 블록에서 변환 계수들을 양자화할 수도 있다. 양자화 프로세스는 변환 계수들의 일부 또는 전부와 연관된 비트 깊이를 감소시킬 수도 있다. 예를 들면, n 비트 변환 계수는 양자화 동안 m 비트 변환 계수로 라운딩 다운될 수도 있고, 여기서 n은 m보다 더 크다. 양자화 유닛 (106) 은 CU 와 연관된 양자화 파라미터 (QP) 값에 기초하여 CU 의 TU 와 연관된 계수 블록을 양자화할 수도 있다. 비디오 인코더 (20) 는 CU 와 연관된 QP 값을 조정함으로써 CU 와 연관된 계수 블록들에 적용된 양자화의 정도를 조정할 수도 있다. 양자화는 정보의 손실을 가져올 수도 있다. 따라서, 양자화된 변환 계수들은 원래의 것보다 낮은 정확도를 가질 수도 있다.
역 양자화 유닛 (108) 및 역 변환 프로세싱 유닛 (110) 은 각각 계수 블록에 역 양자화 및 역 변환들을 적용하여, 계수 블록으로부터 잔차 블록을 재구성할 수도 있다. 역 양자화는 변환 계수의 비트 깊이를 복원할 수도 있다. 재구성 유닛 (112) 은 예측 프로세싱 유닛 (100) 에 의해 생성된 하나 이상의 예측 블록들로부터 대응하는 샘플들에 재구성된 잔차 블록을 가산함으로써, TU 와 연관된 재구성된 변환 블록을 생성할 수도 있다. 이런 식으로 CU 의 각각의 TU 에 대해 변환 블록들을 재구성함으로써, 비디오 인코더 (20) 는 CU 의 코딩 블록들을 재구성할 수도 있다.
필터 유닛 (114) 은 CU 와 연관된 코딩 블록들에서 블록킹 아티팩트들을 감소시키기 위하여 하나 이상의 디블록킹 동작들을 수행할 수도 있다. 참조 화상 버퍼 (116) 는, 필터 유닛 (114) 이 재구성된 코딩 블록들에 대해 하나 이상의 디블록킹 동작들을 수행한 후에, 재구성된 코딩 블록들을 저장할 수도 있다. 인터 예측 프로세싱 유닛 (120) 은 다른 화상들의 PU 들에 대해 인터 예측을 수행하기 위하여 재구성된 코딩 블록들을 포함하는 참조 화상을 사용할 수도 있다. 또한, 인트라 예측 프로세싱 유닛 (126) 은 CU 와 동일한 화상들에 있는 다른 PU 들에 대해 인트라 예측을 수행하기 위하여 참조 화상 버퍼 (116) 에서 재구성된 코딩 블록들을 사용할 수도 있다.
엔트로피 인코딩 유닛 (118) 은 비디오 인코더 (20) 의 다른 기능 컴포넌트들로부터 데이터를 수신할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (118) 은 양자화 유닛 (106) 으로부터 계수 블록들을 수신할 수도 있고 예측 프로세싱 유닛 (100) 으로부터 신택스 엘리먼트들을 수신할 수도 있다. 엔트로피 인코딩 유닛 (118) 은 인트로피 인코딩된 데이터를 생성하기 위하여 데이터에 대해 하나 이상의 엔트로피 인코딩 동작들을 수행할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (118) 은 CABAC 동작, CAVLC (context-adaptive variable length coding) 동작, V2V (variable-to-variable) 길이 코딩 동작, SBAC (syntax-based context-adaptive binary arithmetic coding) 동작, PIPE (Probability Interval Partitioning Entropy) 코딩 동작, 지수 골롬 인코딩 동작, 또는 또 다른 타입의 엔트로피 인코딩 동작을 그 데이터에 대해 수행할 수도 있다. 비디오 인코더 (20) 는, 엔트로피 인코딩 유닛 (118) 에 의해 생성된 엔트로피 인코딩 데이터를 포함하는 비트스트림을 출력할 수도 있다. 가령, 비트스트림은 CU 를 위한 RQT 를 나타내는 데이터를 포함할 수도 있다.
도 8 은 본 개시의 기법들을 구현하도록 구성된 일 예의 비디오 디코더 (30) 를 예시하는 블록도이다. 도 8 은 설명의 목적을 위해 제공되고 본 개시에 폭넓게 예시되고 설명된 기법들에 대해 한정하지 않는다. 설명의 목적을 위하여, 본 개시는 HEVC 코딩의 맥락에서 비디오 디코더 (30) 를 설명한다. 하지만, 본 개시의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
프로세싱 회로는 비디오 디코더 (30) 를 포함하고, 비디오 디코더 (30) 는 본 개시에 설명된 예시적인 기술 중 하나 이상을 수행하도록 구성된다. 가령, 비디오 디코더 (30) 는 집적 회로를 포함하고, 도 8 에 나타낸 다양한 유닛들은 회로 버스와 상호 접속되는 하드웨어 회로 블록 들로서 형성될 수도 있다. 이들 하드웨어 회로 블록들은 분리된 회로 블록들일 수도 있거나 또는 유닛들 중 2 개 이상은 공통의 하드웨어 회로 블록으로 결합될 수도 있다. 하드웨어 회로 블록은 AND, OR, NAND, NOR, XOR, XNOR와 같은 논리 블록 및 다른 유사한 논리 블록뿐만 아니라 산술 논리 유닛 (ALU), 초등 함수 유닛 (EFU) 과 같은 연산 블록을 형성하는 전기 컴포넌트들의 조합으로서 형성될 수도 있다.
일부 예에서, 도 8에 나타낸 유닛들 중 하나 이상은 프로세싱 회로 상에서 실행되는 소프트웨어 유닛일 수도 있다. 이러한 예에서, 이들 소프트웨어 유닛에 대한 목적 코드는 메모리에 저장된다. 운영 시스템은 비디오 디코더 (30) 로 하여금 목적 코드를 취출하고 목적 코드를 실행하게 할 수도 있으며, 이는 비디오 디코더 (30) 로 하여금 예시적인 기술을 구현하기 위한 동작들을 수행하게 한다. 일부 예에서, 소프트웨어 유닛은 비디오 디코더 (30) 가 시동시에 실행되는 펌웨어일 수도 있다. 따라서, 비디오 디코더 (30) 는 예시적인 기술을 수행하는 하드웨어를 갖는 구조적 컴포넌트이거나 또는 하드웨어를 특화하여 예시적인 기술을 수행하기 위해 하드웨어 상에서 실행되는 소프트웨어/펌웨어를 갖는다.
도 8 의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (150), 비디오 데이터 메모리 (151), 예측 프로세싱 유닛 (152), 역 양자화 유닛 (154), 역 변환 프로세싱 유닛 (156), 재구성 유닛 (158), 필터 유닛 (160), 및 참조 화상 버퍼 (162) 를 포함한다. 예측 프로세싱 유닛 (152) 은, 모션 보상 유닛 (164) 및 인트라 예측 프로세싱 유닛 (166) 을 포함한다. 다른 예들에서, 비디오 디코더 (30) 는, 더 많거나, 더 적거나, 또는 상이한 기능 컴포넌트들을 포함할 수도 있다.
비디오 데이터 메모리 (151) 는 비디오 디코더 (30) 의 컴포넌트들에 의해 디코딩될 인코딩된 비디오 데이터, 이를테면 인코딩된 비디오 비트스트림을 저장할 수도 있다. 비디오 데이터 메모리 (151) 에 저장된 비디오 데이터는, 예를 들어, 컴퓨터 판독가능 매체 (16) 로부터, 예를 들어, 카메라와 같은 로컬 비디오 소스로부터, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통해, 또는 물리적 데이터 저장 매체에 액세스하는 것에 의해, 획득될 수도 있다. 비디오 데이터 메모리 (151) 는 인코딩된 비디오 비트스트림으로부터 인코딩된 비디오 데이터를 저장하는 코딩된 화상 버퍼 (CPB) 를 형성할 수도 있다. 참조 화상 버퍼 (162) 는 또한 참조 화상 메모리로 지칭될 수도 있다. 참조 화상 버퍼 (162) 는 인트라- 또는 인터-코딩 모드들에서 비디오 디코더 (30) 에 의한 비디오 데이터를 디코딩하는데 이용하기 위해, 또는 출력을 위해 참조 비디오 데이터를 저장한다. 비디오 데이터 메모리 (151) 및 참조 화상 버퍼 (162) 는 동기 DRAM (SDRAM) 을 포함하는, 동적 랜덤 액세스 메모리 (DRAM), 자기저항 RAM (MRAM), 저항 RAM (RRAM), 또는 다른 타입의 메모리 디바이스들을 포함하는, 다양한 메모리 디바이스들 중의 어느 것에 의해 형성될 수도 있다. 비디오 데이터 메모리 (151) 및 참조 화상 버퍼 (162) 는 동일한 메모리 디바이스 또는 분리된 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에서, 비디오 데이터 메모리 (151) 는 비디오 디코더 (30) 의 다른 컴포넌트들과 함께 온칩 (on-chip) 일 수도 있거나, 또는 그러한 컴포넌트들에 대해 오프칩 (off-chip) 일 수도 있다. 비디오 데이터 메모리 (151) 는 도 1의 저장 매체 (28) 와 동일하거나 또는 이의 일부일 수도 있다.
비디오 데이터 메모리 (151) 는 비트스트림의 인코딩된 비디오 데이터 (예를 들어, NAL 유닛) 를 수신하여 저장한다. 엔트로피 디코딩 유닛 (150) 은 비디오 데이터 메모리 (151) 로부터 인코딩된 비디오 데이터 (예를 들어, NAL 유닛) 를 수신할 수도 있고 신택스 엘리먼트들을 얻기 위해 NAL 유닛을 파싱할 수도 있다. 엔트로피 디코딩 유닛 (150) 은 NAL 유닛들에서 엔트로피 인코딩된 신택스 엘리먼트들을 엔트로피 디코딩할 수도 있다. 예측 프로세싱 유닛 (152), 역 양자화 유닛 (154), 역 변환 프로세싱 유닛 (156), 재구성 유닛 (158), 및 필터 유닛 (160) 은 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여 디코딩된 비디오 데이터를 생성할 수도 있다. 엔트로피 디코딩 유닛 (150) 은 일반적으로 엔트로피 인코딩 유닛 (118) 의 프로세스와 상반되는 프로세스를 수행할 수도 있다.
비트스트림으로부터 신택스 엘리먼트들을 얻는 것에 더하여, 비디오 디코더 (30) 는 파티셔닝되지 않은 CU 에 대해 재구성 동작을 수행할 수도 있다. CU 에 대해 재구성 동작을 수행하기 위하여, 비디오 디코더 (30) 는 CU 의 각각의 TU 에 대해 재구성 동작을 수행할 수도 있다. CU 의 각각의 TU 에 대해 재구성 동작을 수행함으로써, 비디오 디코더 (30) 는 CU 의 잔차 블록들을 재구성할 수도 있다.
CU 의 TU 에 대해 재구성 동작을 수행하는 부분으로서, 역 양자화 유닛 (154) 은 TU 와 연관된 계수 블록들을, 역 양자화, 즉, 탈 양자화할 수도 있다. 역 양자화 유닛 (154) 이 계수 블록을 역 양자화한 후에, 역 변환 프로세싱 유닛 (156) 은 TU 와 연관된 잔차 블록을 생성하기 위하여 계수 블록에 하나 이상의 역 변환을 적용할 수도 있다. 예를 들어, 역 변환 프로세싱 유닛 (156) 은 역 DCT, 역 정수 변환, 역 카루넨 루베 변환 (KLT), 역 회전 변환, 역 방향 변환, 또는 다른 역 변환을 그 계수 블록에 적용할 수도 있다.
역 변환 프로세싱 유닛 (156) 은 본 개시의 다른 곳에서 기술된 컴팩트 다중 패스 변환 (CMPT) 기술을 구현할 수도 있다. 예를 들어, 역 변환 프로세싱 유닛 (156) 은 현재 블록에 대한 데이터 엘리먼트들 (예컨대, 변환 계수들) 에 변환을 적용하여 현재 블록 (예를 들어, TU) 에 대한 잔차 값들을 유도할 수도 있다. 이 예에서, 역 변환 프로세싱 유닛 (156) 은 적어도 부분적으로 벡터 변환들의 시퀀스를 적용함으로써 현재 블록에 대한 변환 계수들에 변환을 적용할 수도 있다. 이 예에서, 벡터 변환들의 시퀀스의 제 1 벡터 변환에 대한 입력 값들은 현재 블록에 대한 변환 계수들을 포함한다. 게다가, 이 예에서, 벡터 변환들의 시퀀스의 최종 벡터 변환의 출력 값들은 현재 블록에 대한 잔차 값들을 포함한다. 이 예에서, 벡터 변환들의 시퀀스의 제 1 벡터 변환 이외의 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 입력 값은 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값을 포함한다. 게다가, 이 예에서, 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은, 입력으로서, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 더 취하고, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함한다.
PU 가 인트라 예측을 이용하여 인코딩되면, 인트라 예측 프로세싱 유닛 (166) 은 PU 의 예측 블록들을 생성하기 위하여 인트라 예측을 수행할 수도 있다. 인트라 예측 프로세싱 유닛 (166) 은, 공간적으로 이웃하는 블록들 샘플들에 기초하여 PU 의 예측 블록들을 생성하기 위하여 인트라 예측 모드를 사용할 수도 있다. 인트라 예측 프로세싱 유닛 (166) 은 비트스트림으로부터 획득된 하나 이상의 신택스 엘리먼트들에 기초하여 PU 를 위한 인트라 예측 모드를 결정할 수도 있다.
PU 가 인터 예측을 이용하여 인코딩되면, 엔트로피 디코딩 유닛 (150) 은 PU 를 위한 모션 정보를 결정할 수도 있다. 모션 보상 유닛 (164) 은 PU 의 모션 정보에 기초하여, 하나 이상의 참조 블록들을 결정할 수도 있다. 모션 보상 유닛 (164) 은, 하나 이상의 참조 블록들에 기초하여, PU 를 위한 예측 블록들 (예를 들어, 예측 루마, Cb 및 Cr 블록들) 을 생성할 수도 있다.
재구성 유닛 (158) 은, CU 에 대한 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 을 재구성하기 위하여, 적용가능한 바에 따라, CU 의 TU 들에 대한 변환 블록들 (예를 들어, 루마, Cb 및 Cr 변환 블록들) 및 CU 의 PU 들의 예측 블록들 (예를 들어, 루마, Cb 및 Cr 블록들), 즉, 인트라 예측 데이터 또는 인터 예측 데이터 중의 어느 하나를 이용할 수도 있다. 예를 들어, 재구성 유닛 (158) 은 CU 의 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 을 재구성하기 위하여 변환 블록들 (예를 들어, 루마, Cb 및 Cr 변환 블록들) 의 샘플들을 예측 블록들 (예를 들어, 루마, Cb 및 Cr 예측 블록들) 의 대응하는 샘플들에 추가할 수도 있다.
필터 유닛 (160) 은 CU 의 코딩 블록들과 연관된 블록킹 아티팩트들을 감소시키기 위하여 디블로킹 동작을 수행할 수도 있다. 비디오 디코더 (30) 는 참조 화상 버퍼 (162) 에 CU 의 코딩 블록들을 저장할 수도 있다. 참조 화상 버퍼 (162) 는 후속 모션 보상, 인트라 예측, 및 디스플레이 디바이스, 이를테면 도 1의 디스플레이 디바이스 (32) 상의 제시를 위해 참조 화상들을 제공할 수도 있다. 가령, 비디오 디코더 (30) 는, 참조 화상 버퍼 (162) 에 있는 블록들에 기초하여, 다른 CU 들의 PU 들에 대해 인트라 예측 또는 인터 예측 동작들을 수행할 수도 있다.
도 9는 본 개시의 기술에 따른 비디오 데이터를 인코딩하기 위한 비디오 인코더 (20) 의 예시적인 동작을 나타내는 플로우차트이다. 도 9 의 예에서, 비디오 인코더 (20) 는 비디오 데이터의 현재 화상의 현재 블록에 대한 잔차 값들을 결정한다 (200). 도 7의 맥락에서, 잔차 생성 유닛 (102) 은 현재 블록에 대한 잔차 값들을 결정할 수도 있다. 일부 예에서, 비디오 인코더 (20) 는 코딩 블록의 샘플을 예측 블록의 대응하는 샘플들의 음의 값에 가산함으로써 또는 그 반대로 하여 현재 블록에 대한 잔차 값들을 결정할 수도 있다. 다른 예에서, 비디오 인코더 (20) 는 예측 블록의 샘플을 코딩 블록의 대응하는 샘플들로부터 감산함으로써 또는 그 반대로 하여 현재 블록에 대한 잔차 값들을 결정할 수도 있다. 일부의 예들에서, 현재 블록은 TU 이다.
게다가, 도 9의 예에서, 비디오 인코더 (20) 는 현재 블록에 대한 복수의 데이터 엘리먼트들을 유도하기 위해 현재 블록에 대한 잔차 값들에 변환을 적용할 수도 있다 (202). 도 7의 맥락에서, 변환 프로세싱 유닛 (104) 은 현재 블록에 대한 잔차 값들에 변환을 적용할 수도 있다. 비디오 인코더 (20) 는 적어도 부분적으로 벡터 변환들의 시퀀스를 적용함으로써 현재 블록에 대한 잔차 값들에 변환을 적용할 수도 있다. 이 예에서, 벡터 변환들의 시퀀스의 제 1 벡터 변환에 대한 입력 값들은 현재 블록에 대한 잔차 값들을 포함한다. 게다가, 상기 벡터 변환들의 시퀀스의 최종 벡터 변환의 출력 값들은 상기 현재 블록에 대한 데이터 엘리먼트들을 포함하거나 또는 이 데이터 엘리먼트들로 이루어진다. 데이터 엘리먼트들은 변환 계수일 수도 있다. 벡터 변환들의 시퀀스의 제 1 벡터 변환 이외의 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 입력 값은 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값을 포함하거나 또는 이 출력 값으로 이루어진다.
벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 입력으로서 더 취한다. 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함한다. 예를 들어, 개별적인 벡터 변환이 Givens 회전들의 세트를 포함하는 예에서, 파라미터 벡터를 입력으로 취하는 개별적인 벡터 변환은 Givens 회전들의 세트의 각각의 개별적인 Givens 회전들에 대해 파라미터 벡터에서의 파라미터들을 각도 값 θ (또는 sin(θ) 및 cos(θ)) 으로서 이용하는 것을 포함할 수도 있다.
일부 예에서, 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대하여, 비디오 인코더 (20) 는 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터에서 미리 계산된 파라미터들의 값들을 저장한다. 예를 들어, 비디오 인코더 (20) 는 θ의 미리 계산된 값들을 메모리에 저장할 수도 있다. 일부 예에서, 비디오 인코더 (20) 는 미리 계산된 sin (θ) 및 cos (θ) 의 값들을 메모리에 저장한다.
일부 예에서, 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터에서의 파라미터의 수는 개별적인 벡터 변환에 대한 입력 값들의 수의 1/2 과 같다. 예를 들어, 도 6의 예에서, 패스 당 16 개의 입력 값과 8개의 버터플라이 (즉, 벡터 변환) 이 있다. 따라서, 도 6의 4개의 패스들 각각에 대해 각도 θ의 8 개의 값들이 있다. 도 6에 적용된 변환은 분리 불가능한 변환일 수도 있다. 즉, 도 6에서 적용된 변환은 입력 블록의 행과 열에 따로따로 적용되지 않는다.
일부 예에서, 비디오 인코더 (20) 는 하나 이상의 Givens 직교 변환 (즉, Givens 회전) 을 적용할 수도 있다. 하나 이상의 Givens 직교 변환들의 각각의 개별적인 Givens 직교 변환은 벡터 변환에 대한 입력 값들의 개별적인 쌍에 적용될 수도 있다. 개별적인 Givens 직교 변환은 개별적인 각도 θ에 의해 파라미터화된다. 이러한 예들에서, 벡터 변환을 위한 파라미터 벡터의 적어도 하나의 파라미터 값은 개별적인 각도 θ의 값을 특정한다. 일부 예들에서, 벡터 변환을 위한 파라미터 벡터의 각각의 파라미터 값은 개별적인 각도 θ의 값을 특정한다. 게다가, 일부 예들에서, 벡터 변환들의 시퀀스의 각각의 벡터 변환은 각도 θ의 값들에 의해 파라미터화된 하나 이상의 Givens 직교 변환을 포함한다.
일부 예에서, 비디오 인코더 (20) 는 복수의 이용 가능한 변환들 중에서, 현재 블록에 대한 잔차 값들에 적용할 변환을 선택할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 각각의 이용 가능한 변환들을 시도할 수도 있고 (예를 들어, 비트 수의 측면에서) 최상의 결과를 산출하는 변환을 선택할 수도 있다. 일부 예에서, 비디오 인코더 (20) 는 벡터 변환들의 시퀀스에서의 벡터 변환을 시그널링할 수도 있다. 가령, 비디오 인코더 (20) 는 비트스트림에, 벡터 변환들을 나타내는 신택스 엘리먼트를 포함시킬 수도 있다.
게다가, 도 9 의 예에서, 비디오 인코더 (20) 는, 현재 화상의 인코딩된 표현을 포함하는 비트스트림에, 현재 블록에 대한 데이터 엘리먼트에 기초한 값을 갖는 신택스 엘리먼트를 포함시킬 수도 있다 (204). 예를 들어, 비디오 인코더 (20) 는 데이터 엘리먼트들을 양자화하고 양자화된 데이터 엘리먼트들의 값들을 결정하기 위해 프로세싱될 수 있는 하나 이상의 신택스 엘리먼트들을 생성할 수도 있다. 가령, 비디오 인코더 (20) 는 데이터 엘리먼트가 비영 (non-zero) 인지 여부를 나타내는 신택스 엘리먼트, 데이터 엘리먼트의 부호를 나타내는 신택스 엘리먼트, 데이터 엘리먼트가 1보다 큰지 여부를 나타내는 신택스 엘리먼트, 데이터 엘리먼트가 2보다 큰지 여부를 나타내는 신택스 엘리먼트, 및 데이터 엘리먼트에 대한 나머지 값을 나타내는 신택스 엘리먼트를 생성할 수도 있다. 도 7의 맥락에서, 양자화 유닛 (106) 은 데이터 엘리먼트들을 양자화할 수도 있고, 엔트로피 인코딩 유닛 (118) 은 하나 이상의 신택스 엘리먼트들을 생성할 수도 있다. 비디오 인코더 (20) 는 하나 이상의 신택스 엘리먼트들을 엔트로피 인코딩 (예를 들어, CABAC 인코딩) 할 수도 있다. 도 1의 맥락에서, 출력 인터페이스 (24) 는 비트스트림을 출력할 수도 있다.
일부 예에서, 비디오 인코더 (20) 는 비트스트림에, 변환을 나타내는 신택스 엘리먼트를 포함시킨다. 비디오 인코더 (20) 는 시퀀스 레벨 (예를 들어, VPS 또는 SPS 에서), 화상 레벨 (예를 들어, PPS 에서), 슬라이스 레벨, 블록 레벨 (예를 들어, CTU , CU, TU 레벨) 또는 또 다른 레벨과 같은 다양한 레벨들에서 신택스 엘리먼트들을 포함시킬 수도 있다.
본 개시의 다른 곳에서 나타낸 바와 같이, 어느 변환이 유효하고 그들의 허용되는 파라미터들인지가 규범적 신택스에서 정의될 수도 있다. 따라서, 일부 예에서, 벡터 변환들의 시퀀스의 벡터 변환을 위해, 비디오 인코더 (20) 는 비트스트림에서, 유효한 변환들의 세트를 시그널링할 수도 있다. 신택스 엘리먼트들은 시퀀스 레벨, 화상 레벨, 슬라이스 레벨, 블록 레벨, 또는 또 다른 레벨과 같은 다양한 레벨들에서 시그널링될 수도 있다. 일부 예에서, 비디오 인코더 (20) 는 비트스트림에, 유효한 변환들 중 어느 것을 적용할지를 나타내는 신택스 엘리먼트를 포함시킨다.
도 9의 예에서, 벡터 변환들의 시퀀스에서 각각의 개별적인 벡터 변환은 유효한 변환들의 세트의 멤버일 수도 있다. 가령, 비디오 인코더 (20) 는 비트스트림에, 유효한 변환들의 인덱스들을 나타내는 신택스 엘리먼트를 포함시킬 수도 있다. 신택스 엘리먼트는 시퀀스 레벨, 화상 레벨, 슬라이스 레벨, 블록 레벨, 또는 또 다른 레벨과 같은 다양한 레벨들에서 시그널링될 수도 있다. 게다가, 벡터 변환들의 시퀀스의 벡터 변환을 위해, 비디오 인코더 (20) 는 비트스트림에서, 유효한 변환들의 세트에 대해 파라미터 벡터들에서 허용된 파라미터들을 시그널링할 수도 있다. 유효한 변환에 대해 허용되는 파라미터들은 유효한 변환의 파라미터 벡터에 사용되는 파라미터들이다. 예를 들어, 파라미터들은 Givens 회전들의 각도일 수도 있으며, 이들은 8 비트로 양자화되고 표현된다. 이 예에서, 허용되는 파라미터는 0° 내지 255 × (360°/256) 의 각도를 커버하는, 범위[0..255] 에서의 정수 값들이며, 따라서, 음이거나 또는 255보다 큰 값들은 "허용"되지 않는다. 허용된 파라미터들은 시퀀스 레벨, 화상 레벨, 슬라이스 레벨, 블록 레벨, 또는 또 다른 레벨과 같은 다양한 레벨들에서 시그널링될 수도 있다. 가령, 비디오 인코더 (20) 는 비트스트림에, 허용된 파라미터들을 나타내는 신택스 엘리먼트들을 포함시킬 수도 있다.
도 10는 본 개시의 기술에 따른 비디오를 디코딩하기 위한 비디오 디코더 (30) 의 예시적인 동작을 나타내는 플로우차트이다. 도 10 의 예에서, 비디오 디코더 (30) 는 비디오 데이터의 현재 화상의 인코딩된 표현을 포함하는 비트스트림에서의 신택스 엘리먼트에 기초하여, 현재 화상의 현재 블록에 대한 복수의 데이터 엘리먼트를 결정한다 (250). 데이터 엘리먼트들의 각각은 개별적인 변환 계수일 수도 있다. 일부 예에서, 입력 인터페이스 (26) 는 비트스트림을 수신할 수도 있다. 게다가, 일부 예에서, 비디오 디코더 (30) 는 비트스트림으로부터 신택스 엘리먼트들을 획득하기 위하여 비트스트림을 파싱할 수도 있다. 이 예에서, 비디오 디코더 (30) 는 신택스 엘리먼트들의 값들을 결정하기 위해 엔트로피 디코딩 (예를 들어, CABAC 디코딩) 을 수행할 수도 있다. 일부 예에서, 비디오 인코더 (30) 는 데이터 엘리먼트가 비영인지 여부를 나타내는 신택스 엘리먼트, 데이터 엘리먼트의 부호를 나타내는 신택스 엘리먼트, 데이터 엘리먼트가 1보다 큰지 여부를 나타내는 신택스 엘리먼트, 데이터 엘리먼트가 2보다 큰지 여부를 나타내는 신택스 엘리먼트, 및 데이터 엘리먼트에 대한 나머지 값을 나타내는 신택스 엘리먼트과 같은 복수의 데이터 엘리먼트들에서의 데이터 엘리먼트에 대한 하나 이상의 신택스 엘리먼트들을 획득할 수도 있다. 도 8의 예에서, 엔트로피 디코딩 유닛 (150) 은 신택스 엘리먼트들을 획득할 수도 있다. 게다가, 일부 예에서, 복수의 데이터 엘리먼트들을 결정하기 위해, 비디오 디코더 (30) 는 데이터 엘리먼트들을 역 양자화할 수도 있다. 도 8의 맥락에서, 역 양자화 유닛 (154) 은 데이터 엘리먼트들을 역 양자화할 수도 있다. 일부의 예들에서, 현재 블록은 TU 이다.
게다가, 도 10 의 예에서, 비디오 디코더 (30) 는 현재 블록에 대한 잔차 값들을 유도하기 위해 데이터 엘리먼트들에 변환을 적용한다 (252). 도 8의 맥락에서, 역 변환 프로세싱 유닛 (156) 은 현재 블록에 대한 잔차 값들을 유도하기 위해 데이터 엘리먼트들에 변환을 적용할 수도 있다. 상기 변환은 벡터 변환들의 시퀀스를 포함한다. 이 예에서, 벡터 변환들의 시퀀스의 제 1 벡터 변환에 대한 입력 값들은 복수의 데이터 엘리먼트들을 포함하거나 이 데이터 엘리먼트들로 이루어진다. 게다가, 이 예에서, 벡터 변환들의 시퀀스의 최종 벡터 변환에 대한 출력 값들은 현재 블록에 대한 잔차 값들을 포함하거나 또는 이 잔차 값들로 이루어진다. 벡터 변환들의 시퀀스의 제 1 벡터 변환 이외의 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 입력 값은 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값을 포함하거나 또는 이 출력 값으로 이루어진다. 이 예에서, 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은, 입력으로서, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 더 취하고, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함한다.
일부 예에서, 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터에서의 파라미터의 수는 개별적인 벡터 변환에 대한 입력 값들의 수의 1/2 과 같다. 변환은 분리 불가능한 변환일 수도 있다.
일부 예에서, 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대하여, 비디오 디코더 (30) 는 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터에서 미리 계산된 파라미터들의 값들을 저장한다. 예를 들어, 비디오 디코더 (30) 는 θ의 미리 계산된 값들을 메모리에 저장할 수도 있다. 일부 예에서, 비디오 디코더 (30) 는 미리 계산된 sin (θ) 및 cos (θ) 의 값들을 메모리에 저장한다.
일부 예에서, 벡터 변환들의 시퀀스의 하나 이상의 (예를 들어, 각각의) 벡터 변환은 하나 이상의 역 Givens 직교 변환을 포함하고, 하나 이상의 역 Givens 직교 변환들의 각각은 벡터 변환을 위한 개별적인 입력 값들의 쌍에 적용된다. 하나 이상의 역 Givens 직교 변환 각각은 개별적인 각도 θ에 의해 파라미터화된다. 역 Givens 직교 변환은 ri = cos(θ)yi + sin(θ)yj; rj = cos(θ)yj - sin(θ)yi 의 형식일 수도 있다. 이 예에서, 벡터 변환을 위한 파라미터 벡터의 적어도 하나의 파라미터 값은 개별적인 각도 θ의 값을 특정할 수도 있다. 가령, 벡터 변환을 위한 파라미터 벡터의 각각의 파라미터 값은 개별적인 각도 θ의 값을 특정한다.
일부 예에서, 변환을 적용하는 것의 일부로서, 비디오 디코더 (30) 는 벡터 변환들의 시퀀스의 벡터 변환을 위해, 비트스트림에서의 하나 이상의 신택스 엘리먼트들에 기초하여, 벡터 변환을 위한 파라미터 벡터를 결정할 수도 있다. 가령, 비디오 디코더 (30) 는 룩업 테이블에서 파라미터 벡터를 룩업하거나 또는 파라미터 벡터를 수학적으로 결정할 수도 있다.
도 10의 예에서, 비디오 디코더 (30) 는 유도된 잔차 데이터에 기초하여, 현재 화상의 샘플들을 재구성한다 (254). 예를 들어, 비디오 디코더 (30) 는 잔차 데이터의 샘플들을 예측 블록의 대응하는 샘플에 가산하여 현재 화상의 샘플들을 생성할 수도 있다. 가령, 도 8의 맥락에서, 예측 프로세싱 유닛 (152) 은 하나 이상의 예측 블록들을 생성할 수도 있고, 재구성 유닛 (158) 은 하나 이상의 예측 블록들의 샘플들을 현재 화상의 샘플들을 생성하기 위해 잔차 데이터의 대응하는 샘플에 가산할 수도 있다. 현재 화상의 샘플들은 CU의 코딩 블록의 전부 또는 일부일 수도 있다. 적용되는 양자화 양에 따라, 재구성은 손실성일 수도 있다. 따라서, 비디오 인코더 (20) 에 의한 변환의 출력은 비디오 디코더 (30) 에 의해 수행되는 역 변환의 출력과 정확히 매칭되지 않을 수도 있다.
일부 예에서, 비디오 디코더 (30) 는 비트스트림에서의 하나 이상의 신택스 엘리먼트에 기초하여, 변환을 결정한다. 예를 들어, 비디오 디코더 (30) 는 변환을 나타내는 인덱스를 비트스트림으로부터 획득할 수도 있다. 일부 예에서, 비디오 디코더 (30) 는 다양한 정보 (예를 들어, 블록 크기, 예측 모드, 인트라 예측 방향 등) 에 기초하여 변환을 결정한다. 가령, 비디오 디코더 (30) 는 인터 예측을 위한 하나의 변환 및 인트라 예측을 위한 또 다른 변환을 결정할 수도 있다.
게다가, 일부 예에서, 비디오 디코더 (30) 는 비트스트림에서의 하나 이상의 신택스 엘리먼트에 기초하여, 유효한 변환들의 세트를 결정할 수도 있다. 신택스 엘리먼트들은 시퀀스 레벨, 화상 레벨, 슬라이스 레벨, 블록 레벨, 또는 또 다른 레벨과 같은 다양한 레벨들에서 시그널링될 수도 있다. 벡터 변환들의 시퀀스에서 각각의 개별적인 벡터 변환은 유효한 변환들의 세트의 멤버이다. 예를 들어, 비디오 디코더 (30) 는 유효한 변환들의 세트를 특정하는 신택스 엘리먼트들을 비트스트림으로부터 획득할 수도 있다. 그러한 예에서, 비디오 디코더 (30) 는 비트스트림으로부터, 유효한 변환들 중 어느 것을 적용할지를 나타내는 신택스 엘리먼트를 획득할 수도 있다. 신택스 엘리먼트는 시퀀스 레벨, 화상 레벨, 슬라이스 레벨, 블록 레벨, 또는 또 다른 레벨과 같은 다양한 레벨들에서 시그널링될 수도 있다.
비디오 디코더 (30) 는, 벡터 변환들의 시퀀스의 벡터 변환을 위해, 비트스트림에서 하나 이상의 신택스 엘리먼트들에 기초하여, 유효한 변환들의 세트에 대해 파라미터 벡터들에서 허용된 파라미터들을 결정할 수도 있다. 예를 들어, 비디오 디코더 (30) 는 파라미터 벡터들에서 허용된 파라미터들을 특정하는 신택스 엘리먼트들을 비트스트림으로부터 획득할 수도 있다. 게다가, 비디오 디코더 (30) 는 비트스트림에서의 하나 이상의 신택스 엘리먼트에 기초하여, 벡터 변환들의 시퀀스에서 벡터 변환들을 결정할 수도 있다. 가령, 비디오 디코더 (30) 는 비트스트림으로부터, 벡터 변환들을 특정하는 하나 이상의 신택스 엘리먼트들을 획득할 수도 있다. 이러한 신택스 엘리먼트는 각각의 벡터 변환의 구조뿐만 아니라 각각의 벡터 변환에서 어느 파라미터를 사용할지를 나타낼 수도 있다.
본 개시의 특정 양태들이 예시의 목적을 위해 HEVC 표준의 확장에 관하여 설명되었다. 하지만, 본 개시에 설명된 기법들은, 아직 개발되지 않은 다른 표준 또는 사유 (proprietary) 비디오 코딩 프로세스들을 포함한, 다른 비디오 코딩 프로세스들에 유용할 수도 있다.
본 개시에 설명된 바처럼, 비디오 코더는 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 유사하게, 비디오 코딩 유닛은 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 마찬가지로, 비디오 코딩은, 적용가능한 바에 따라, 비디오 인코딩 또는 비디오 디코딩을 지칭할 수도 있다.
예에 따라, 여기에 설명된 기술들 중 어느 것의 특정 행위들 또는 이벤트들이 상이한 시퀀스에서 수행될 수 있거나, 추가될 수 있거나, 병합될 수 있거나, 또는 전부 생략될 수 있다 (예를 들어, 모든 설명된 행위들 또는 이벤트들이 그 기술들의 실시를 위해 필요한 것은 아니다) 는 것이 인식되야 한다. 또한, 특정 예들에서, 행위들 또는 이벤트들은, 예를 들어, 순차적이기 보다는 멀티스레드 프로세싱, 인터럽트 프로세싱 또는 다수의 프로세서들을 통해, 동시적으로 수행될 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되면, 그 기능들은 컴퓨터 판독가능 매체 상의 하나 이상의 명령 또는 코드로서 저장되거나 송신될 수도 있고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체는, 데이터 저장 매체와 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체, 또는 예를 들면, 통신 프로토콜에 따라, 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수도 있다. 이런 방식으로, 컴퓨터 판독가능 매체는 일반적으로, (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체는, 본 개시에서 설명된 기법들의 구현을 위해 명령들, 코드 및/또는 데이터 구조들을 취출하기 위하여 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
제한이 아닌 예로서, 이러한 컴퓨터-판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 명령들 또는 데이터 구조들의 형태로 희망하는 프로그램 코드를 저장하기 위해 이용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 칭해진다. 예를 들어, 명령들이 동축 케이블, 광섬유 케이블, 연선 (twisted pair), 디지털 가입자 라인 (DSL), 또는 적외선, 전파 (radio), 및 마이크로파와 같은 무선 기술을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되면, 그 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 전파, 및 마이크로파와 같은 무선 기술은 매체의 정의 내에 포함된다. 하지만, 컴퓨터 판독가능 저장 매체 및 데이터 저장 매체는 접속, 캐리어 파, 신호 또는 다른 일시적 매체를 포함하는 것이 아니라, 대신에 비일시적, 유형의 저장 매체에 관련된다는 것이 이해되야 한다. 여기에 사용된, 디스크 (disk) 및 디스크 (disc) 는 CD (compact disc), 레이저 디스크 (laser disc), 광 디스크 (optical disc), DVD (digital versatile disc), 플로피 디스크 (floppy disk) 및 블루레이 디스크 (Blu-ray disc) 를 포함하며, 여기서, 디스크 (disk) 는 보통 데이터를 자기적으로 재생하지만, 디스크 (disc) 는 레이저를 이용하여 광학적으로 데이터를 재생한다. 또한, 상기의 조합은 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 프로세서, 이를테면 하나 이상의 DSP (digital signal processor), 범용 마이크로프로세서, ASIC (application specific integrated circuit), FPGA (field programmable logic array), 또는 다른 등가 집적 또는 이산 로직 회로에 의해 실행될 수도 있다. 따라서, 본원에 사용된 용어 "프로세서" 는 전술한 구조 중 임의의 것 또는 본원에 설명된 기법들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 추가로, 일부 양태들에서, 여기서 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공되거나 또는 결합된 코덱에 포함될 수도 있다. 또한, 그 기법들은 하나 이상의 회로 또는 로직 엘리먼트들에서 완전히 구현될 수 있다. 따라서, 프로세서는 고정된 하드웨어 프로세싱 회로, 프로그램 가능한 프로세싱 회로 및/또는 고정 및 프로그램 가능한 프로세싱 회로의 조합으로 구현되는 하나 이상의 프로세서를 포함하는 다양한 집적 프로세싱 회로 중 임의의 것에 의해 형성될 수도 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC 들의 세트 (예를 들면, 칩 세트) 를 포함하여, 광범위하게 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들 또는 유닛들이, 개시된 기술들을 수행하도록 구성된 디바이스들의 기능적인 양태들을 강조하기 위하여 본 개시에 설명되었지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하는 것은 아니다. 오히려, 상술된 바처럼, 다양한 유닛들이 코덱 하드웨어 유닛에 결합될 수도 있거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상술된 하나 이상의 프로세서들을 포함하는 연동적인 (interoperative) 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.
Claims (30)
- 비디오 데이터를 디코딩하는 방법으로서,
상기 비디오 데이터의 현재 화상의 인코딩된 표현을 포함하는 비트스트림에서의 신택스 엘리먼트들에 기초하여, 상기 현재 화상의 현재 블록에 대한 복수의 데이터 엘리먼트들을 결정하는 단계;
상기 현재 블록에 대한 잔차 값들을 유도하기 위해 상기 데이터 엘리먼트들에 변환을 적용하는 단계로서,
상기 변환은 벡터 변환들의 시퀀스를 포함하고,
상기 벡터 변환들의 시퀀스의 제 1 벡터 변환에 대한 입력 값들은 상기 복수의 데이터 엘리먼트들을 포함하고,
상기 벡터 변환들의 시퀀스의 최종 벡터 변환에 대한 출력 값들은 상기 현재 블록에 대한 잔차 값들을 포함하고,
상기 벡터 변환들의 시퀀스의 제 1 벡터 변환 이외의 상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 상기 개별적인 벡터 변환에 대한 입력 값들은 상기 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값들을 포함하고,
상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은, 입력으로서, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 더 취하고, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함하는, 상기 변환을 적용하는 단계; 및
유도된 잔차 데이터에 기초하여, 상기 현재 화상의 샘플들을 재구성하는 단계
를 포함하는, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 벡터 변환들의 시퀀스의 벡터 변환은 하나 이상의 역 Givens 직교 변환을 포함하고, 상기 하나 이상의 역 Givens 직교 변환들의 각각의 개별적인 역 Givens 직교 변환은 상기 벡터 변환에 대한 입력 값들의 개별적인 쌍에 적용되고, 상기 개별적인 역 Givens 직교 변환들은 개별적인 각도 θ에 의해 파라미터화되고, 상기 벡터 변환을 위한 상기 파라미터 벡터의 적어도 하나의 파라미터 값은 상기 개별적인 각도 θ의 값을 특정하는, 비디오 데이터를 디코딩하는 방법. - 제 2 항에 있어서,
상기 벡터 변환을 위한 상기 파라미터 벡터의 각각의 파라미터 값은 상기 개별적인 각도 θ의 값을 특정하는, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 비트스트림에서의 하나 이상의 신택스 엘리먼트들에 기초하여, 유효한 변환들의 세트를 결정하는 단계를 더 포함하고, 상기 벡터 변환들의 시퀀스에서 각각의 개별적인 벡터 변환은 상기 유효한 변환들의 세트의 멤버인, 비디오 데이터를 디코딩하는 방법. - 제 4 항에 있어서,
상기 벡터 변환들의 시퀀스의 벡터 변환을 위해, 상기 비트스트림에서 하나 이상의 신택스 엘리먼트들에 기초하여, 상기 유효한 변환들의 세트에 대해 상기 파라미터 벡터들에서 허용된 파라미터들을 결정하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 비트스트림에서의 하나 이상의 신택스 엘리먼트에 기초하여, 상기 변환을 결정하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터에서의 파라미터의 수는 상기 개별적인 벡터 변환에 대한 입력 값들의 수의 1/2 과 같은, 비디오 데이터를 디코딩하는 방법. - 제 1 항에 있어서,
상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대하여, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터에서 미리 계산된 파라미터들의 값들을 저장하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법. - 비디오 데이터를 인코딩하는 방법으로서,
상기 비디오 데이터의 현재 화상의 현재 블록에 대한 잔차 값들을 결정하는 단계;
상기 현재 블록에 대한 복수의 데이터 엘리먼트들을 유도하기 위해 상기 현재 블록에 대한 잔차 값들에 변환을 적용하는 단계로서,
상기 현재 블록에 대한 상기 잔차 값들에 상기 변환을 적용하는 것은 벡터 변환들의 시퀀스를 적용하는 것을 포함하고,
상기 벡터 변환들의 시퀀스의 제 1 벡터 변환에 대한 입력 값들은 상기 현재 블록에 대한 잔차 값들을 포함하고,
상기 벡터 변환들의 시퀀스의 최종 벡터 변환의 출력 값들은 상기 현재 블록에 대한 데이터 엘리먼트들을 포함하고,
상기 벡터 변환들의 시퀀스의 제 1 벡터 변환 이외의 상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 상기 개별적인 벡터 변환에 대한 입력 값들은 상기 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값들을 포함하고,
상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은, 입력으로서, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 더 취하고, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함하는, 상기 변환을 적용하는 단계; 및
상기 현재 화상의 인코딩된 표현을 포함하는 비트스트림에, 상기 현재 블록에 대한 데이터 엘리먼트에 기초한 값을 갖는 신택스 엘리먼트를 포함시키는 단계
를 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 9 항에 있어서,
상기 벡터 변환들의 시퀀스를 적용하는 단계는 하나 이상의 Givens 직교 변환들을 적용하는 단계를 포함하고,
상기 하나 이상의 Givens 직교 변환들의 각각의 개별적인 Givens 직교 변환은 상기 벡터 변환에 대한 입력 값들의 개별적인 쌍에 적용되고, 상기 개별적인 Givens 직교 변환은 개별적인 각도 θ에 의해 파라미터화되고, 상기 벡터 변환을 위한 상기 파라미터 벡터의 적어도 하나의 파라미터 값은 상기 개별적인 각도 θ의 값을 특정하는, 비디오 데이터를 인코딩하는 방법. - 제 10 항에 있어서,
상기 벡터 변환을 위한 상기 파라미터 벡터의 각각의 파라미터 값은 상기 개별적인 각도 θ의 값을 특정하는, 비디오 데이터를 인코딩하는 방법. - 제 9 항에 있어서,
상기 비트스트림에서, 유효한 변환들의 세트를 시그널링하는 단계를 더 포함하고, 상기 벡터 변환들의 시퀀스에서 각각의 개별적인 벡터 변환은 상기 유효한 변환들의 세트의 멤버인, 비디오 데이터를 인코딩하는 방법. - 제 12 항에 있어서,
상기 벡터 변환들의 시퀀스의 벡터 변환을 위해, 상기 비트스트림에서, 상기 유효한 변환들의 세트에 대해 파라미터 벡터들에서 허용된 파라미터들을 시그널링하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 9 항에 있어서,
복수의 이용 가능한 변환들 중에서, 상기 현재 블록에 대한 잔차 값들에 적용될 변환을 선택하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 9 항에 있어서,
상기 비트스트림에서, 상기 변환을 시그널링하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 제 9 항에 있어서,
상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터에서의 파라미터의 수는 상기 개별적인 벡터 변환에 대한 입력 값들의 수의 1/2 과 같은, 비디오 데이터를 인코딩하는 방법. - 제 9 항에 있어서,
상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대하여, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터에서 미리 계산된 파라미터들의 값들을 저장하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법. - 비디오 데이터를 디코딩하기 위한 디바이스로서,
인코딩된 비디오 데이터를 저장하도록 구성된 하나 이상의 저장 매체; 및
비디오 디코더를 포함하고,
상기 비디오 디코더는
상기 비디오 데이터의 현재 화상의 인코딩된 표현을 포함하는 비트스트림에서의 신택스 엘리먼트들에 기초하여, 상기 현재 화상의 현재 블록에 대한 복수의 데이터 엘리먼트들을 결정하고;
상기 현재 블록에 대한 잔차 값들을 유도하기 위해 상기 데이터 엘리먼트들에 변환을 적용하는 것으로서,
상기 변환은 벡터 변환들의 시퀀스를 포함하고,
상기 벡터 변환들의 시퀀스의 제 1 벡터 변환에 대한 입력 값들은 상기 복수의 데이터 엘리먼트들을 포함하고,
상기 벡터 변환들의 시퀀스의 최종 벡터 변환에 대한 출력 값들은 상기 현재 블록에 대한 잔차 값들을 포함하고,
상기 벡터 변환들의 시퀀스의 제 1 벡터 변환 이외의 상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 상기 개별적인 벡터 변환에 대한 입력 값들은 상기 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값들을 포함하고,
상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은, 입력으로서, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 더 취하고, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함하는, 상기 변환을 적용하고; 및
유도된 잔차 데이터에 기초하여, 상기 현재 화상의 샘플들을 재구성하도록 구성되는, 비디오 데이터를 디코딩하기 위한 디바이스. - 제 18 항에 있어서,
상기 벡터 변환의 시퀀스의 벡터 변환은 하나 이상의 역 Givens 직교 변환들을 포함하고, 상기 하나 이상의 역 Givens 직교 변환들의 각각의 개별적인 역 Givens 직교 변환은 상기 벡터 변환에 대한 입력 값들의 개별적인 쌍에 적용되고, 상기 개별적인 역 Givens 직교 변환들은 개별적인 각도 θ에 의해 파라미터화되고, 상기 벡터 변환을 위한 상기 파라미터 벡터의 적어도 하나의 파라미터 값은 상기 개별적인 각도 θ의 값을 특정하는, 비디오 데이터를 디코딩하기 위한 디바이스. - 제 19 항에 있어서,
상기 벡터 변환을 위한 상기 파라미터 벡터의 각각의 파라미터 값은 상기 개별적인 각도 θ의 값을 특정하는, 비디오 데이터를 디코딩하기 위한 디바이스. - 제 18 항에 있어서,
상기 비디오 디코더는 또한 상기 비트스트림에서의 하나 이상의 신택스 엘리먼트들에 기초하여, 상기 변환을 결정하도록 구성되는, 비디오 데이터를 디코딩하기 위한 디바이스. - 제 18 항에 있어서,
상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터에서의 파라미터의 수는 상기 개별적인 벡터 변환에 대한 입력 값들의 수의 1/2 과 같은, 비디오 데이터를 디코딩하기 위한 디바이스. - 제 18 항에 있어서,
상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대하여, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터에서 미리 계산된 파라미터들의 값들을 저장하는 메모리를 더 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스. - 비디오 데이터를 인코딩하기 위한 디바이스로서,
비디오 데이터를 저장하도록 구성된 하나 이상의 저장 매체; 및
비디오 인코더를 포함하고,
상기 비디오 인코더는
상기 비디오 데이터의 현재 화상의 현재 블록에 대한 잔차 값들을 결정하고;
상기 현재 블록에 대한 복수의 데이터 엘리먼트들을 유도하기 위해 상기 현재 블록에 대한 잔차 값들에 변환을 적용하는 것으로서,
상기 현재 블록에 대한 상기 잔차 값들에 상기 변환을 적용하는 것은 벡터 변환들의 시퀀스를 적용하는 것을 포함하고,
상기 벡터 변환들의 시퀀스의 제 1 벡터 변환에 대한 입력 값들은 상기 현재 블록에 대한 잔차 값들을 포함하고,
상기 벡터 변환들의 시퀀스의 최종 벡터 변환의 출력 값들은 상기 현재 블록에 대한 데이터 엘리먼트들을 포함하고,
상기 벡터 변환들의 시퀀스의 제 1 벡터 변환 이외의 상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 상기 개별적인 벡터 변환에 대한 입력 값들은 상기 벡터 변환들의 시퀀스의 개별적인 이전 벡터 변환의 출력 값들을 포함하고,
상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환은, 입력으로서, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터를 더 취하고, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터는 하나 이상의 파라미터들을 포함하는, 상기 변환을 적용하고; 및
상기 현재 화상의 인코딩된 표현을 포함하는 비트스트림에, 상기 현재 블록에 대한 데이터 엘리먼트에 기초한 값을 갖는 신택스 엘리먼트를 포함시키도록 구성되는, 비디오 데이터를 인코딩하기 위한 디바이스. - 제 24 항에 있어서,
상기 비디오 인코더는 상기 벡터 변환들의 시퀀스를 적용하는 것의 일부로서, 상기 비디오 인코더가 하나 이상의 Givens 직교 변환들을 적용하도록 구성되고, 상기 하나 이상의 Givens 직교 변환의 각각의 개별적인 Givens 직교 변환은 상기 벡터 변환에 대한 입력 값들의 개별적인 쌍에 적용되고, 상기 개별적인 Givens 직교 변환은 개별적인 각도 θ에 의해 파라미터화되고, 상기 벡터 변환을 위한 상기 파라미터 벡터의 적어도 하나의 파라미터 값은 상기 개별적인 각도 θ의 값을 특정하는, 비디오 데이터를 인코딩하기 위한 디바이스. - 제 25 항에 있어서,
상기 벡터 변환을 위한 상기 파라미터 벡터의 각각의 파라미터 값은 상기 개별적인 각도 θ의 값을 특정하는, 비디오 데이터를 인코딩하기 위한 디바이스. - 제 24 항에 있어서,
상기 비디오 인코더는 복수의 이용 가능한 변환들 중에서, 상기 현재 블록에 대한 잔차 값들에 적용할 변환을 선택하도록 구성되는, 비디오 데이터를 인코딩하기 위한 디바이스. - 제 24 항에 있어서,
상기 비트스트림에서, 상기 변환을 시그널링하는 단계를 더 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스. - 제 24 항에 있어서,
상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대해, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터에서의 파라미터의 수는 상기 개별적인 벡터 변환에 대한 입력 값들의 수의 1/2 과 같은, 비디오 데이터를 인코딩하기 위한 디바이스. - 제 24 항에 있어서,
상기 벡터 변환들의 시퀀스의 각각의 개별적인 벡터 변환에 대하여, 상기 개별적인 벡터 변환에 대한 개별적인 파라미터 벡터에서 미리 계산된 파라미터들의 값들을 저장하는 메모리를 더 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662295448P | 2016-02-15 | 2016-02-15 | |
US62/295,448 | 2016-02-15 | ||
US15/432,633 US10390048B2 (en) | 2016-02-15 | 2017-02-14 | Efficient transform coding using optimized compact multi-pass transforms |
US15/432,633 | 2017-02-14 | ||
PCT/US2017/017940 WO2017142929A1 (en) | 2016-02-15 | 2017-02-15 | Efficient transform coding using optimized compact multi-pass transforms |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180113515A true KR20180113515A (ko) | 2018-10-16 |
Family
ID=59561865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187022289A KR20180113515A (ko) | 2016-02-15 | 2017-02-15 | 최적화된 컴팩트 다중 패스 변환을 사용한 효율적인 변환 코딩 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10390048B2 (ko) |
EP (1) | EP3417622B1 (ko) |
JP (1) | JP2019508969A (ko) |
KR (1) | KR20180113515A (ko) |
CN (1) | CN108702517B (ko) |
BR (1) | BR112018016559A2 (ko) |
CA (1) | CA3011388A1 (ko) |
WO (1) | WO2017142929A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101973332B1 (ko) * | 2018-09-21 | 2019-08-23 | 오호영 | 목이버섯 재배 방법 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10412415B2 (en) * | 2014-10-24 | 2019-09-10 | Lg Electronics Inc. | Method and apparatus for decoding/encoding video signal using transform derived from graph template |
US10567763B2 (en) * | 2015-05-26 | 2020-02-18 | Lg Electronics Inc. | Method and device for processing a video signal by using an adaptive separable graph-based transform |
US10448053B2 (en) | 2016-02-15 | 2019-10-15 | Qualcomm Incorporated | Multi-pass non-separable transforms for video coding |
US10349085B2 (en) | 2016-02-15 | 2019-07-09 | Qualcomm Incorporated | Efficient parameter storage for compact multi-pass transforms |
CN109076242B (zh) * | 2016-05-13 | 2023-01-03 | 索尼公司 | 图像处理设备和方法 |
US11095893B2 (en) | 2016-10-12 | 2021-08-17 | Qualcomm Incorporated | Primary transform and secondary transform in video coding |
US10863199B2 (en) | 2018-03-26 | 2020-12-08 | Qualcomm Incorporated | Minimization of transform memory and latency via parallel factorizations |
US10536720B2 (en) | 2018-05-07 | 2020-01-14 | Tencent America LLC | Method, apparatus and medium for decoding or encoding |
US11470316B2 (en) | 2018-05-31 | 2022-10-11 | Lg Electronics Inc. | Method and device for performing transformation by using layered-givens transform |
PL3723373T3 (pl) | 2018-09-02 | 2023-11-06 | Lg Electronics Inc. | Sposób dekodowania sygnału obrazu, sposób kodowania sygnału obrazu i nośnik danych |
WO2020164633A1 (en) * | 2019-02-15 | 2020-08-20 | Beijing Bytedance Network Technology Co., Ltd. | Transform parameter derivation based on block partition |
BR112021022540A2 (pt) * | 2019-05-10 | 2021-12-28 | Fraunhofer Ges Forschung | Aparelho para previsão com base em bloco e para codificação e decodificação de figura, seu método e fluxo contínuo de dados |
JP7395005B2 (ja) | 2020-02-24 | 2023-12-08 | バイトダンス インコーポレイテッド | サブピクチャの高さの導出 |
WO2021178501A1 (en) * | 2020-03-03 | 2021-09-10 | Bytedance Inc. | Controlling a scaling process using slice header signaling |
EP4304174A3 (en) | 2020-03-11 | 2024-03-20 | Beijing Bytedance Network Technology Co., Ltd. | Adaptive loop filtering |
WO2021244419A1 (en) | 2020-05-31 | 2021-12-09 | Beijing Bytedance Network Technology Co., Ltd. | Constraint signaling using general constraint information syntax element |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE74219T1 (de) * | 1987-06-02 | 1992-04-15 | Siemens Ag | Verfahren zur ermittlung von bewegungsvektorfeldern aus digitalen bildsequenzen. |
US7502743B2 (en) | 2002-09-04 | 2009-03-10 | Microsoft Corporation | Multi-channel audio encoding and decoding with multi-channel transform selection |
EP3528575B1 (en) | 2004-06-22 | 2020-12-16 | Apple Inc. | Enabling feedback in wireless communication networks |
US7870176B2 (en) * | 2004-07-08 | 2011-01-11 | Asocs Ltd. | Method of and apparatus for implementing fast orthogonal transforms of variable size |
DE102006051673A1 (de) | 2006-11-02 | 2008-05-15 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Vorrichtung und Verfahren zum Nachbearbeiten von Spektralwerten und Encodierer und Decodierer für Audiosignale |
JPWO2010116869A1 (ja) * | 2009-04-08 | 2012-10-18 | シャープ株式会社 | 動画像符号化装置および動画像復号装置 |
CN102045560B (zh) * | 2009-10-23 | 2013-08-07 | 华为技术有限公司 | 一种视频编解码方法及设备 |
CN101931817A (zh) * | 2010-04-12 | 2010-12-29 | 中山大学 | 一种变换基自适应的变换编码方法 |
US9215470B2 (en) * | 2010-07-09 | 2015-12-15 | Qualcomm Incorporated | Signaling selected directional transform for video coding |
JP2012023632A (ja) * | 2010-07-15 | 2012-02-02 | Sony Corp | 符号化装置および符号化方法、並びに、復号装置および復号方法 |
US10992958B2 (en) * | 2010-12-29 | 2021-04-27 | Qualcomm Incorporated | Video coding using mapped transforms and scanning modes |
US9824066B2 (en) * | 2011-01-10 | 2017-11-21 | Qualcomm Incorporated | 32-point transform for media data coding |
CN102811111A (zh) | 2011-06-02 | 2012-12-05 | 中兴通讯股份有限公司 | 一种信道信息反馈方法和系统 |
JP5674596B2 (ja) * | 2011-08-24 | 2015-02-25 | 日本放送協会 | 画像符号化装置、画像復号装置、及びこれらのプログラム |
CN103096053B (zh) * | 2011-11-04 | 2015-10-07 | 华为技术有限公司 | 一种变换模式的编解码方法和装置 |
US10349085B2 (en) | 2016-02-15 | 2019-07-09 | Qualcomm Incorporated | Efficient parameter storage for compact multi-pass transforms |
US10448053B2 (en) | 2016-02-15 | 2019-10-15 | Qualcomm Incorporated | Multi-pass non-separable transforms for video coding |
-
2017
- 2017-02-14 US US15/432,633 patent/US10390048B2/en active Active
- 2017-02-15 CN CN201780010399.3A patent/CN108702517B/zh active Active
- 2017-02-15 KR KR1020187022289A patent/KR20180113515A/ko unknown
- 2017-02-15 JP JP2018542134A patent/JP2019508969A/ja active Pending
- 2017-02-15 EP EP17708058.7A patent/EP3417622B1/en active Active
- 2017-02-15 WO PCT/US2017/017940 patent/WO2017142929A1/en active Application Filing
- 2017-02-15 BR BR112018016559A patent/BR112018016559A2/pt not_active IP Right Cessation
- 2017-02-15 CA CA3011388A patent/CA3011388A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101973332B1 (ko) * | 2018-09-21 | 2019-08-23 | 오호영 | 목이버섯 재배 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP3417622B1 (en) | 2021-01-06 |
US20170238019A1 (en) | 2017-08-17 |
JP2019508969A (ja) | 2019-03-28 |
EP3417622A1 (en) | 2018-12-26 |
BR112018016559A2 (pt) | 2019-01-02 |
CN108702517A (zh) | 2018-10-23 |
CN108702517B (zh) | 2020-12-15 |
WO2017142929A1 (en) | 2017-08-24 |
CA3011388A1 (en) | 2017-08-24 |
US10390048B2 (en) | 2019-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3417621B1 (en) | Multi-pass non-separable transforms for video coding | |
EP3417623B1 (en) | Efficient parameter storage for compact multi-pass transforms | |
EP3417622B1 (en) | Efficient transform coding using optimized compact multi-pass transforms | |
AU2018282523B2 (en) | Intra filtering applied together with transform processing in video coding | |
CN110073661B (zh) | 用于编码和解码视频数据的方法和装置 | |
KR102519245B1 (ko) | 강화된 다중 변환을 위한 룩-업 테이블 | |
AU2017207452B2 (en) | Multi-type-tree framework for video coding | |
EP3777186B1 (en) | Multiple transforms adjustment stages for video coding | |
WO2019232382A1 (en) | Coding adaptive multiple transform information for video coding | |
WO2018132710A1 (en) | Coding video data using derived chroma mode | |
WO2019191090A1 (en) | Minimization of transform memory and latency via parallel factorizations | |
EP3824628A1 (en) | Transform variations of multiple separable transform selection | |
KR20210103481A (ko) | 비디오 코딩을 위한 트리-기반 변환 유닛 (tu) 파티션 | |
WO2021081302A1 (en) | Parametric graph-based separable transforms for video coding |