KR102318065B1 - 비디오를 인코딩하기 위한 방법 및 장치 - Google Patents

비디오를 인코딩하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR102318065B1
KR102318065B1 KR1020197012991A KR20197012991A KR102318065B1 KR 102318065 B1 KR102318065 B1 KR 102318065B1 KR 1020197012991 A KR1020197012991 A KR 1020197012991A KR 20197012991 A KR20197012991 A KR 20197012991A KR 102318065 B1 KR102318065 B1 KR 102318065B1
Authority
KR
South Korea
Prior art keywords
subblock
block
sub
coding parameters
coding
Prior art date
Application number
KR1020197012991A
Other languages
English (en)
Other versions
KR20190058621A (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 KR20190058621A publication Critical patent/KR20190058621A/ko
Application granted granted Critical
Publication of KR102318065B1 publication Critical patent/KR102318065B1/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/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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding 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/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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/46Embedding additional information in the video signal during the compression process

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

비디오를 인코딩하기 위한 방법 및 장치가 개시된다. 상기 비디오의 화상으로부터의 적어도 하나의 블록에 대해, 제1 비트율-왜곡 최적화는, 적어도 하나의 제1 서브블록으로의 상기 블록의 제1 분할 모드에 대해, 상기 적어도 하나의 제1 서브블록의 코딩 파라미터들을 결정하기 위해 수행(602)된다. 적어도 하나의 제2 비트율-왜곡 최적화는, 적어도 하나의 제2 서브블록으로의 상기 블록의 적어도 하나의 제2 분할 모드에 대해, 상기 적어도 하나의 제2 서브블록의 코딩 파라미터들을 결정하기 위해 수행(609)된다. 상기 블록을 코딩하기 위한 최상의 분할 모드는 적어도 상기 제1 비트율-왜곡 최적화 및 상기 제2 비트율-왜곡 최적화에 따라 결정(613)되고, 그리고 상기 블록은 상기 최상의 분할 모드에 따라 인코딩(616)된다. 상기 적어도 하나의 제2 비트율-왜곡 최적화를 수행(609)하는 동안 그리고 상기 적어도 하나의 제2 서브블록이 상기 적어도 하나의 제1 서브블록과 동일한 화상의 포지션에 위치되고 상기 적어도 하나의 제2 서브블록이 상기 적어도 하나의 제1서브블록과 동일한 폭 및 동일한 높이를 가질 때, 상기 제1 비트율-왜곡 최적화 동안 결정된 상기 적어도 하나의 제1 서브블록의 적어도 하나의 코딩 파라미터는 상기 적어도 하나의 제2 서브블록에 대한 상기 코딩 파라미터들을 결정하는 데 사용(605)된다.

Description

비디오를 인코딩하기 위한 방법 및 장치
비디오를 비트스트림으로 인코딩하기 위한 방법 및 장치가 개시된다.
비디오 시퀀스의 화상(picture)을 코딩하기 위해, 비디오 압축 방법들은 보통 화상을 화소(pixel)들의 블록들의 세트로 디바이딩(divide)한다.
HEVC 비디오 압축 표준("ITU-T H.265 Telecommunication standardization sector of ITU (10/2014), series H: audiovisual and multimedia systems, infrastructure of audiovisual services - coding of moving video, High efficiency video coding, Recommendation ITU-T H.265")에서, 화상은 코딩 트리 유닛(CTU: Coding Tree Unit)들로 디바이딩되고, CTU들의 사이즈는 64x64, 128x128 또는 256x256 화소들일 수 있다. 각각의 CTU는 쿼드-트리 디비전(quad-tree division)을 사용하여 추가로 서브디바이딩(subdivide)될 수 있고, 여기서 쿼드-트리 각각의 리프(leaf)는 코딩 유닛(CU: Coding Unit)으로 칭해진다. 이어서, 각각의 CU에는 몇몇 인트라(Intra) 또는 인터(Inter) 예측 파라미터들이 제공된다. 이렇게 하기 위해, CU는 하나 이상의 예측 유닛(PU: Prediction Unit)으로 공간적으로 파티셔닝(partition)되고, PU는 정사각형 또는 직사각형 형상을 가질 수 있다.
코딩 유닛을 예측 유닛(들)으로 파티셔닝하는 것은 비트-스트림으로 시그널링된(signaled) 파티션 타입에 따라 행해진다. 인트라 코딩 유닛의 경우, 도 1에 예시된 파티션 타입들(2Nx2N 및 NxN)만이 허용된다. 이것은, 정사각형 예측 유닛들만이 인트라 코딩 유닛들에 사용되는 것을 의미한다. 반대로, 인터 코딩 유닛들은 도 1에 도시된 모든 파티션 타입들을 사용할 수 있다.
쿼드-트리 및 이진-트리(QTBT) 코딩 툴("Algorithm Description of Joint Exploration Test Model 3", Document JVET-C1001_v3, Joint Video Exploration Team of ISO/IEC JTC1/SC29/WG11, 3rd meeting, 26th May-1st June 2015, Geneva, CH)은 HEVC 표준의 유닛들 배열보다 더 유연한 방식으로 화상 데이터를 표현하기 위한 CTU 표현을 제공한다. 쿼드-트리 및 이진-트리(QTBT) 코딩 툴은, 코딩 유닛들이 쿼드-트리와 이진-트리 방식 둘 모두로 분할될 수 있는 코딩 트리로 이루어진다. 코딩 트리 유닛의 그런 코딩 트리 표현은 도 2a에 예시되고, 여기서 실선들은 CU의 쿼드-트리 파티셔닝을 표시하고 점선들은 CU의 이진 파티셔닝을 표시한다.
코딩 유닛의 분할은 최소 비트율 왜곡(rate distortion) 비용으로 CTU의 QTBT 표현을 결정하는 비트율 왜곡 최적화 절차를 통해 인코더 측에서 결정된다. QTBT 표현에서, CU는 정사각형 또는 직사각형 형상을 가진다. 코딩 유닛의 사이즈는 항상 2의 제곱이고, 그리고 통상적으로 4 내지 128이다. CTU의 QTBT 분해는 2개의 단계들로 이루어지는 데; 도 2b에 예시된 바와 같이, 먼저 CTU는 쿼드-트리 방식으로 분할되고, 이어서 각각의 쿼드-트리 리프는 이진 방식으로 추가로 디바이딩될 수 있고, 여기서 실선들은 쿼드-트리 분해 위상을 표현하고 점선들은 쿼드-트리 리브(leave)들에 공간적으로 임베딩(embed)된 이진 분해를 표현한다.
QTBT 툴의 도입에 의해, 주어진 블록은 도 3에서 알 수 있는 바와 같이, 상이한 분할 경로들을 통해 인코딩될 수 있다. 도 3에 도시된 바와 같이, 서브 CU(도 3에서 해시(hash)되어 채워짐)는 하기에 의해 획득될 수 있다:
- 상단 서브 CU와 하단 서브 CU를 산출하는 (도 3에서 굵은 경계를 가진) 평가할 현재 CU의 수평 분할 다음, 상단 서브 CU의 수직 분할, 또는,
- 좌측 서브 CU와 우측 서브 CU를 산출하는 평가할 현재 CU의 수직 분할 다음, 좌측 서브 CU의 수평 분할, 또는,
- 평가할 현재 CU의 쿼드트리 분할.
그러므로, 현재 CU에 대한 분할 구성을 포함하는 최상의 코딩 모드를 결정하기 위해, 상단-좌측 서브 CU에 대한 비트율-왜곡 비용들의 계산이 다수 번 행해진다.
본 원리의 양상에 따라, 비디오를 인코딩하기 위한 방법이 개시된다. 그런 방법은, 상기 비디오의 화상으로부터의 적어도 하나의 블록에 대해, 하기 단계를 포함한다:
- 적어도 하나의 제1 서브블록의 제1 세트로의 상기 블록의 제1 분할 모드에 대해, 상기 적어도 하나의 제1 서브블록의 코딩 파라미터들을 결정하기 위해 제1 비트율-왜곡 최적화를 수행하는 단계;
- 적어도 하나의 제2 서브블록의 적어도 하나의 제2 세트로의 상기 블록의 적어도 하나의 제2 분할 모드에 대해, 상기 적어도 하나의 제2 세트의 상기 적어도 하나의 제2 서브블록의 코딩 파라미터들을 결정하기 위해 적어도 하나의 제2 비트율-왜곡 최적화를 수행하는 단계;
- 상기 제1 비트율-왜곡 최적화 동안 결정된, 상기 제1 서브블록의 적어도 하나의 코딩 파라미터가 제2 서브블록에 대한 코딩 파라미터들을 결정하는 데 사용되는 것을 표시하는 특정 값을 가진 파라미터를 상기 적어도 하나의 제1 서브블록에 연관시키는 단계;
- 상기 제1 비트율-왜곡 최적화 및 상기 적어도 하나의 제2 비트율-왜곡 최적화에 따라 상기 블록을 코딩하기 위한 최상의 분할 모드를 결정하는 단계,
- 상기 최상의 분할 모드에 따라 상기 블록을 인코딩하는 단계;
적어도 하나의 제1 서브블록에 연관된 파라미터는:
- 제2 서브블록이 상기 제1 서브블록과 동일한 화상의 포지션에 위치될 때;
- 상기 제2 서브블록이 상기 제1 서브블록과 동일한 폭(width) 및 동일한 높이(height)를 가질 때; 및
- 상기 제1 서브블록 및 상기 제2 서브블록이 상기 서브블록을 예측하는 데 또는 제1 또는 제2 서브블록에 대한 코딩 파라미터를 코딩하는 데 사용되는 데이터를 포함하는 동일한 인과관계 이웃을 가질 때, 상기 특정 값으로 세팅된다.
본 개시내용은, 제1 분할 모드로부터 발생하는 서브블록 및 제2 분할 모드로부터 발생하는 서브블록이 동일한 포지션에 위치되고 동일한 폭 및 동일한 높이를 가질 때, 제1 분할 모드로부터 발생하는 서브블록에 대해 추정된 코딩 파라미터들이 제2 분할 모드로부터 발생하는 서브블록에 재사용되는 것을 허용한다. 그러므로, 계산 복잡성이 감소된다.
일 실시예에 따라, 상기 제1 서브블록 및 상기 제2 서브블록은, 상기 제1 세트가 스캔 순서에 따라 순서가 정해지는 경우 상기 제1 서브블록이 제1 세트의 제1 서브블록일 때 서브블록의 동일한 인과관계 이웃을 가진다.
본 개시내용의 다른 실시예에 따라, 상기 특정 값은, 상기 적어도 하나의 제1 서브블록에 대한 코딩 파라미터들이 이용가능하다는 것 그리고 상기 적어도 하나의 제2 서브블록에 대한 코딩 파라미터들이 상기 적어도 하나의 제1 서브블록에 대해 결정된 코딩 파라미터들과 동일한 코딩 파라미터들이도록 결정되는 것을 표시한다.
일 실시예에 따라, 상기 적어도 하나의 제1 서브블록의 상기 코딩 파라미터들이 상기 적어도 하나의 제1 서브블록의 분할 구성을 포함할 때, 상기 적어도 하나의 제2 서브블록은 상기 분할 구성으로부터 상속(1005)받는다.
본 개시내용의 다른 실시예에 따라, 상기 파라미터의 상기 특정 값은, 상기 적어도 하나의 제2 서브블록에 대한 코딩 파라미터들이 상기 적어도 하나의 제1 서브블록에 대해 결정된 코딩 파라미터들로부터 상기 적어도 하나의 제2 서브블록을 코딩하기 위한 최상의 코딩 파라미터들을 탐색함으로써 결정(802)되는 것을 표시한다.
이 실시예에 따라, 서브블록의 코딩 파라미터들은 다른 대응 서브블록에 부분적으로 재-사용된다. 서브블록의 인과관계 이웃이 하나의 분할 모드에서 다른 분할 모드로 변화함에 따라, 서브블록에 대해 이미 추정된 코딩 파라미터들의 완전한 재-사용은 압축 효율에 영향을 줄 수 있다. 그러나, 서브블록에 대해 이미 추정된 코딩 파라미터들은, 제2 분할 모드에서 서브블록에 대한 코딩 파라미터들을 추정할 때 코딩 파라미터들 탐색을 위한 시작점으로서 부분적으로 재-사용될 수 있다. 그러므로, 코딩 파라미터들에 대한 탐색이 완전히 수행되지 않기 때문에 계산 복잡성이 감소되지만, 이 실시예는 압축 효율에 거의 영향을 주지 않는다.
본 개시내용의 다른 실시예에 따라, 상기 적어도 하나의 제1 서브블록에 대한 상기 코딩 파라미터들은, 상기 적어도 하나의 제2 서브블록의 비-분할 모드가 평가될 때에만 사용(802)된다.
본 개시내용의 다른 실시예에 따라, 방법은 하기 단계를 더 포함한다:
- 상기 적어도 하나의 제1 서브블록에 대한 식별자를 계산하는 단계(1201) - 상기 식별자는 상기 포지션을 식별하는 것을 허용하고, 상기 적어도 하나의 제1 서브블록의 상기 폭 및 상기 높이, 및 상기 적어도 하나의 제1 서브블록의 인과관계 이웃은, 상기 적어도 하나의 제1 서브블록의 이웃에 대한 코딩 파라미터들이 이전에 결정되었는지를 적어도 표시함 -,
- 상기 적어도 하나의 제1 서브블록 또는 상기 적어도 하나의 제2 서브블록에 대해, 상기 식별자와 연관하여, 상기 적어도 하나의 제1 서브블록에 대해 결정된 코딩 파라미터들을 저장하는 단계(1204),
- 상기 적어도 하나의 제2 서브블록에 대해, 상기 적어도 하나의 제1 서브블록에 연관된 상기 파라미터가 상기 특정 값과 동일하면, 상기 식별자에 연관된 저장된 파라미터들을 판독하기 위해 상기 식별자를 사용하는 단계(1205), 상기 적어도 하나의 제2 서브블록에 대한 코딩 파라미터들은 판독된 코딩 파라미터들인 것으로 결정된다.
본 개시내용의 다른 양상에 따라, 비디오를 인코딩하기 위한 장치가 개시된다. 그런 장치는, 상기 비디오의 화상으로부터의 적어도 하나의 블록에 대해:
- 적어도 하나의 제1 서브블록의 제1 세트로의 상기 블록의 제1 분할 모드에 대해, 상기 적어도 하나의 제1 서브블록의 코딩 파라미터들을 결정하기 위해 제1 비트율-왜곡 최적화를 수행하고;
- 적어도 하나의 제2 서브블록의 적어도 하나의 제2 세트로의 상기 블록의 적어도 하나의 제2 분할 모드에 대해, 상기 적어도 하나의 제2 세트의 상기 적어도 하나의 제2 서브블록의 코딩 파라미터들을 결정하기 위해 적어도 하나의 제2 비트율-왜곡 최적화를 수행하고;
- 상기 제1 비트율-왜곡 최적화 동안 결정된, 상기 제1 서브블록의 적어도 하나의 코딩 파라미터가 제2 서브블록에 대한 코딩 파라미터들을 결정하는 데 사용되는 것을 표시하는 특정 값을 가진 파라미터를 상기 적어도 하나의 제1 서브블록에 연관시키고;
- 상기 제1 비트율-왜곡 최적화 및 상기 적어도 하나의 제2 비트율-왜곡 최적화에 따라 상기 블록을 코딩하기 위한 최상의 분할 모드를 결정하고,
- 상기 최상의 분할 모드에 따라 상기 블록을 인코딩하도록 구성된 프로세서를 포함하고;
적어도 하나의 제1 서브블록에 연관된 파라미터는:
- 제2 서브블록이 상기 제1 서브블록과 동일한 화상의 포지션에 위치될 때;
- 상기 제2 서브블록이 상기 제1 서브블록과 동일한 폭 및 동일한 높이를 가질 때; 및
- 상기 제1 서브블록 및 상기 제2 서브블록이 상기 서브블록을 예측하는 데 또는 제1 또는 제2 서브블록에 대한 코딩 파라미터를 코딩하는 데 사용되는 데이터를 포함하는 동일한 인과관계 이웃을 가질 때, 상기 특정 값으로 세팅된다.
본 개시내용은 또한 본 개시내용에 설명된 실시예들 중 임의의 실시예에 따라 비디오를 인코딩하기 위한 명령들이 저장되어 있는 컴퓨터 판독가능 저장 매체를 제공한다.
일 구현에 따라, 본원에서 위에 설명된 비디오를 인코딩하기 위한 방법의 상이한 단계들은 비디오를 인코딩하기 위한 장치의 데이터 프로세서에 의해 실행하도록 의도된 소프트웨어 명령들을 포함하는 하나 이상의 소프트웨어 프로그램 또는 소프트웨어 모듈 프로그램들에 의해 구현되고, 이들 소프트웨어 명령들은 본 원리들에 따른 방법의 상이한 단계들의 실행을 커맨딩(command)하도록 설계된다.
컴퓨터 프로그램이 또한 개시되고, 컴퓨터 프로그램은 컴퓨터 또는 데이터 프로세서에 의해 실행될 수 있고, 이 프로그램은 본원에서 위에 언급된 비디오를 인코딩하기 위한 방법의 단계들의 실행을 커맨딩하기 위한 명령들을 포함한다.
이 프로그램은 그게 모든 임의의 프로그래밍 언어를 사용하고 그리고 이를테면 부분적으로 컴파일링된 형태 또는 그게 모든 임의의 다른 원하는 형태의 소스 코드, 객체 코드 또는 소스 코드와 객체 코드 사이의 중간 코드일 수 있다.
정보 캐리어(carrier)는 그게 모든 프로그램을 저장할 수 있는 임의의 엔티티 또는 장치일 수 있다. 예컨대, 캐리어는 저장 수단, 이를테면 ROM, 예컨대 CD ROM 또는 마이크로전자 회로 ROM 또는 다시 자기 기록 수단, 예컨대 플로피 디스크 또는 하드 디스크 드라이브를 포함할 수 있다.
다시, 정보 캐리어는 전기 또는 광학 케이블을 통해, 라디오에 의해 또는 다른 수단에 의해 전달될 수 있는 송신가능 캐리어, 이를테면 전기 또는 광학 신호일 수 있다. 본 원리들에 따른 프로그램은 특히 인터넷 타입 네트워크에 업로딩될 수 있다.
대안으로서, 정보 캐리어는, 프로그램이 통합된 집적 회로일 수 있고, 그 회로는 당해 방법들을 실행하거나 상기 방법들의 실행에 사용되도록 적응된다.
일 실시예에 따라, 방법들/장치는 소프트웨어 및/또는 하드웨어 컴포넌트들에 의해 구현될 수 있다. 이에 관하여, "모듈" 또는 "유닛"이라는 용어는 이 문헌에서 소프트웨어 컴포넌트 및 하드웨어 컴포넌트 또는 하드웨어와 소프트웨어 컴포넌트들의 세트에 또한 똑같이 대응할 수 있다.
소프트웨어 컴포넌트는 하나 이상의 컴퓨터 프로그램들, 프로그램의 하나 이상의 서브-프로그램들 또는 더 일반적으로 프로그램의 임의의 엘리먼트 또는 관련된 모듈에 대해 본원에서 아래에 설명된 바와 같은 기능 또는 기능들의 세트를 구현할 수 있는 소프트웨어의 일부에 대응한다. 그런 소프트웨어 컴포넌트는 물리적 엔티티(단자, 서버 등)의 데이터 프로세서에 의해 실행되고 그리고 이 물리적 엔티티의 하드웨어 자원들(메모리들, 기록 매체들, 통신 버스들, 입력/출력 전자 보드들, 사용자 인터페이스들 등)에 액세스할 수 있다.
동일한 방식으로, 하드웨어 컴포넌트는 연관된 모듈에 대해 본원에서 아래에 설명된 기능 또는 기능들의 세트를 구현할 수 있는 하드웨어 유닛의 임의의 엘리먼트에 대응한다. 이는 프로그램가능 하드웨어 컴포넌트 또는 소프트웨어의 실행을 위한 통합 프로세서를 가진 컴포넌트, 예컨대 집적 회로, 스마트카드, 메모리 카드, 펌웨어의 실행을 위한 전자 보드 등일 수 있다.
도 1은 HEVC 표준에 따른 CTU의 예시적인 파티셔닝을 예시한다.
도 2a는 쿼드-트리 및 이진 트리 기반 방법(QTBT)에 따른 예시적인 CTU 파티셔닝을 예시한다.
도 2b는 쿼드-트리 및 이진 트리 기반 방법(QTBT)에 따른 CTU 파티셔닝의 예시적인 트리 표현을 예시한다.
도 3은 코딩 유닛(CU)을 코딩하기 위한 예시적인 분할 경로들을 예시한다.
도 4는 본 원리의 실시예에 따라 비디오를 인코딩하기 위한 예시적인 인코더의 블록 다이어그램을 예시한다.
도 5는 분할 모드에 연관된 공간 코딩 구조가 본 개시내용의 실시예에 따른 분할 모드들의 세트를 포함하는 것을 예시한다.
도 6은 본 개시내용의 실시예에 따라 비디오를 인코딩하기 위한 예시적인 방법의 흐름도를 예시한다.
도 7은 본 개시내용의 실시예에 따른 QTBT 상이한 분할 경로들 및 대응 인과관계 이웃을 예시한다.
도 8은 본 개시내용의 다른 실시예에 따라 비디오를 인코딩하기 위한 예시적인 방법의 흐름도를 예시한다.
도 9는 서브 CU의 동일한 분할 구성을 유도하는 QTBT 상이한 분할 경로들을 예시한다.
도 10은 본 개시내용의 다른 실시예에 따라 비디오를 인코딩하기 위한 예시적인 방법의 흐름도를 예시한다.
도 11은 상이한 인과관계 이웃 상태들을 가진 동일한 서브-CU를 유도하는 QTBT 상이한 분할 경로들을 예시한다.
도 12는 본 개시내용의 다른 실시예에 따라 비디오를 인코딩하기 위한 예시적인 방법의 흐름도를 예시한다.
도 13은 본 원리의 실시예들 중 임의의 하나에 사용될 수 있는 예시적인 인코더를 예시한다.
본원에 개시된 원리는 비디오 시퀀스로부터의 화상을 인코딩하기 위해 설명되지만, 개시된 원리는 또한 정지 디지털 화상들에 적용될 수 있다.
하나 이상의 화상들을 가진 비디오 시퀀스를 인코딩하기 위해, 화상은 구성가능한 사이즈를 가진 정사각형 형상의 코딩 트리 유닛(CTU)들로 파티셔닝될 수 있다. 코딩 트리 유닛들의 연속적인 세트는 슬라이스(slice)로 그룹화될 수 있다. CTU는 코딩 유닛(CU)들로 파티셔닝하는 QTBT의 루트(root)이다.
도 4는 본 원리의 실시예에 따라 비디오를 인코딩하기 위한 예시적인 인코더의 블록 다이어그램을 예시한다. 본원에서 아래에 개시된 비디오 인코더(30)는 임의의 비디오 또는 정지 화상 인코딩 방식들을 따를 수 있다. 예시적인 비디오 인코더(30)에서, 화상은 아래에 설명된 바와 같이 인코더 모듈들에 의해 인코딩된다.
통상적으로, 비디오 인코더(30)는 도 4에 예시된 바와 같이, 블록-기반 비디오 인코딩을 위한 몇몇 모듈들을 포함할 수 있다. 인코딩될 화상(I)은 비디오 인코더(30)에 입력된다. 화상(I)은 먼저 서브디바이딩 모듈에 의해 블록들의 세트로 서브디바이딩된다. 이어서, 화상(I)의 각각의 블록(BLK)은 인코딩을 위해 프로세싱된다. 다음에서, 블록은 QTBT 파티셔닝으로부터의 코딩 유닛에 대응할 수 있다.
아래에 설명된 인코딩 및 디코딩 프로세스들은 예시 목적들을 위한 것이다. 일부 실시예들에 따라, 인코딩 또는 디코딩 모듈들은 다음 모듈들로부터 부가되거나, 제거될 수 있거나 또는 가변할 수 있다. 그러나, 본원에 개시된 원리는 이들 변형들에 여전히 적용될 수 있다.
비디오 인코더(30)는 다음과 같이 화상(I)의 각각의 블록의 인코딩을 수행한다. 비디오 인코더(30)는 예컨대 비트율/왜곡 최적화에 기반하여, 화상의 블록이 코딩될 코딩 모드를 선택하기 위한 모드 선택 유닛을 포함한다. 각각의 블록은 인트라 또는 인터 모드를 사용하여 인코딩된다. 모드 선택 유닛은 하기 모듈들을 포함한다:
- 코딩될 화상의 하나의 현재 블록과 기준 화상들 사이의 모션(motion)을 추정하기 위한 모션 추정 모듈,
- 추정된 모션을 사용하여 현재 블록을 예측하기 위한 모션 보상 모듈,
- 현재 블록을 공간적으로 예측하기 위한 인트라 예측 모듈.
모드 선택 유닛은 또한, 블록의 분할이 비트율/왜곡 최적화에 따라 필요한지를 결정할 수 있다. 이어서, 필요한 경우, 모드 선택 유닛은 블록(BLK)의 각각의 서브블록에 대해 동작한다.
블록 모드 선택 유닛은, 블록이 추가로 분할되었을 때 블록 또는 블록의 서브블록들에 대한 각각의 후보 코딩 모드에 대해 블록의 인코딩을 수행하고 이들 코딩 모드들 각각에 대해 비트율-왜곡 비용을 계산한다. 가장 낮은 비트율-왜곡 비용을 제공하는 코딩 모드는 현재 블록(BLK)에 대한 최상의 코딩 모드로 선택된다. 후보 코딩 모드는 블록을 코딩하는 데 이용가능한 임의의 코딩 모드일 수 있고 사용된 비디오 압축 표준들에 따른다. 예컨대, HEVC 코더에 대해, 후보 코딩 모드들은 36개의 인트라 예측 모드들, 추정된 모션 벡터를 사용하는 인터 예측 모드, 공간 및/또는 시간 이웃 블록들로부터 모션 정보를 유도하는 병합 코딩 모드 등 중 하나로부터 선정될 수 있다.
현재 블록에 대한 최상의 코딩 모드를 결정하기 위해, 비트율-왜곡 최적화가 수행되고 현재 블록의 분할이 허용될 때, 현재 블록의 모든 이용가능한 분할 모드들이 평가된다.
도 5는 현재 블록에 대한 상이한 분할 모드들을 예시한다. QT_SPLIT은 4개의 서브블록들을 초래한다. HOR 및 VER은 각각 2개의 서브블록들을 초래한다. NO_SPLIT 모드는, 전류 블록이 분할되지 않은 경우에 대응하고, 따라서 현재 블록과 동일한 폭 및 높이의 하나의 서브블록이 발생하는 것이 이해될 수 있다. 현재 블록에 대한 분할 모드를 평가할 때, 비트율-왜곡 최적화는 분할 모드로부터 발생하는 현재 블록의 서브블록들 각각에 대해 수행되고 분할 구문(syntax)은, 현재 블록에 대한 분할 모드에 연관된 비트율-왜곡 비용을 결정할 때 고려되어야 한다.
일 실시예에 따라, 분할 모드로부터 발생하는 현재 블록의 서브블록들은 이용가능한 분할 모드들 또는 이들 서브블록들에 따라 추가로 분할될 수 있다. 서브블록은 그 서브블록에 도달할 필요가 있는 연속적인 분할들의 수를 표시하기 위해 트리 깊이가 할당될 수 있다.
도 4로 돌아가면, 코딩 모드가 현재 블록(BLK)에 대해 선택되거나 현재 블록(BLK)의 서브블록들에 대한 코딩 모드들이 선택되면, 모드 선택 유닛은 디코더에서 동일한 블록 예측을 수행하기 위해 비트스트림에 코딩될 예측된 블록(PRED) 및 대응 구문 엘리먼트들을 전달한다. 현재 블록(BLK)이 분할되었을 때, 예측된 블록(PRED)은 각각의 서브블록들에 대한 모드 선택 유닛에 의해 전달된 예측된 서브블록들의 세트에 의해 형성된다.
이어서, 잔여 블록(RES)은 본래의 블록(BLK)으로부터 예측된 블록(PRED)을 감산함으로써 획득된다.
이어서, 잔여 블록(RES)은 변환된 계수들의 변환 블록(TCOEF)을 전달하는 변환 프로세싱 모듈에 의해 변환된다. 이어서, 변환 블록(TCOEF)은 양자화된 잔여 변환 계수들의 양자화된 변환 블록(QCOEF)을 전달하는 양자화 모듈에 의해 양자화된다.
이어서, 블록(QCOEF)의 구문 엘리먼트들 및 양자화된 잔여 변환 계수들은 코딩된 비트스트림(STR)을 형성하기 위해 코딩된 데이터를 전달하도록 엔트로피 코딩에 입력된다.
양자화된 변환 블록(QCOEF)의 양자화된 잔여 변환 계수들은 역양자화된 변환 계수들의 블록(TCOEF')을 전달하는 인버스 양자화 모듈에 의해 프로세싱된다. 블록(TCOEF')은 잔여 예측의 블록(RES')을 재구성하기 위해 인버스 변환 모듈로 전달된다.
이어서, 블록(BLK)의 재구성된 버전(REC)은 예측 블록(PRED)을 재구성된 잔여 예측 블록(RES')에 부가함으로써 획득된다.
재구성된 블록(REC)은 화상 재구성 모듈에 의한 사용을 위해 메모리에 저장된다. 화상 재구성 모듈은 재구성된 블록들(REC)로부터 화상(I)의 디코딩된 버전(I')의 재구성을 수행한다. 이어서, 재구성된 화상(I')은 코딩할 화상들의 세트의 다음 화상들을 인코딩하거나 화상(I)의 후속 블록들을 인코딩하기 위한 기준 화상으로서 이후 사용하기 위해 기준 화상 메모리에 부가된다.
도 3에 개시된 바와 같이, 현재 블록의 최상의 코딩 모드를 결정하기 위해, 현재 블록의 분할 모드로부터 발생하는 서브블록들에 대한 비트율-왜곡 최적화가 다수 번 행해진다. 비디오를 인코딩하기 위한 방법은 아래에 개시되고, 여기서 현재 블록의 제1 분할 모드로부터 발생하고 현재 블록의 제2 분할 모드로부터 발생하는 서브블록에 대응하는 서브블록에 대해, 그 서브블록에 대해 수행되는 비트율-왜곡 최적화는, 현재 블록의 제1 분할 모드가 평가되었을 때 그 서브블록에 대해 이전에 추정된 코딩 파라미터들을 재-사용할 수 있다.
본 개시내용의 실시예에 따라, 파라미터(CUcache(p, w, h))는 현재 블록의 분할, 또는 현재 블록의 서브블록의 분할로부터 발생하는 서브블록에 연관된다. 그런 파라미터는, 코딩 파라미터들이 그 서브블록에 대해 이전에 추정되었는지 아닌지 여부를 표시한다. 그런 파라미터는 폭 = w 및 높이 = h인 포지션(p)에서 각각의 서브블록에 연관되고, 상기 포지션(p)은 상기 서브블록의 상단-좌측 화소의 포지션에 의해 표시된다.
다음에서, 블록 또는 CU라는 용어들은 블록을 지정하기 위해 무차별적으로 사용될 수 있다.
서브블록 또는 서브-CU라는 용어들은 서브블록을 지정하기 위해 무차별적으로 사용될 수 있고, 여기서 서브블록은 적어도 하나의 서브블록으로의 페어런트 블록(parent block)의 분할로부터 발생하는 더 높은 깊이 레벨에 있는 블록이다.
엔티티가 고려되는 깊이에 따라 서브블록 또는 블록이라는 용어들이 사용된다. 하나의 블록을 서브블록들의 세트로 분할할 때, 분할된 블록은 분할로부터 발생하는 서브블록(예컨대 서브블록의 깊이는 1임)보다 더 낮은 깊이(예컨대 0)를 가진다. 서브블록이 추가로 분할될 때, 결과적인 서브블록들의 깊이는 증가된다. 본 개시내용에서, 비트율-왜곡 최적화는 분할 트리의 서브블록들에 대해 재귀적 방식으로 수행된다. 그러므로, 블록의 분할로부터 발생하는 서브블록은, 이 서브블록의 분할이 고려될 때 블록으로 지칭될 수 있다.
도 6은 본 개시내용의 실시예에 따라 비디오를 인코딩하기 위한 예시적인 방법의 흐름도를 예시한다. 이 실시예에 따라, 파라미터(CUcache)는 2개의 가능한 값들, 예컨대 0 또는 1을 취할 수 있다.
값 0은, 서브블록에 대해 어떠한 코딩 파라미터들도 이용가능하지 않다는 것을 표시한다. 값 1은, 서브블록에 대한 코딩 파라미터들이 이용가능하고(이전에 수행된 현재 블록의 분할 모드의 평가에 의해 제공됨) 그리고 다른 분할 모드를 평가할 때 그런 코딩 파라미터들이 완전히 재-사용되어야 하는 것을 표시한다.
도 6에 개시된 프로세스에 대한 입력은 포지션(현재 화상에서 상단-좌측 화소의 포지션에 의해 표시됨) 및 폭 및 높이에 의해 표현된 사이즈로 압축하기 위한 입력 코딩 유닛이다.
이 알고리즘에 대한 입력은 인코딩할 입력 코딩 유닛(currCU), 이를테면 각각 수평 및 수직 방향을 따른 사이즈(width, height) 및 현재 화상의 포지션(position)을 가진 입력 CU(currCU)이다.
단계(600)에서, NO_SPLIT 분할 모드가 currCU에 대해 허용되는지가 먼저 체킹(check)된다. NO_SPLIT 분할 모드가 허용되는 경우, 프로세스는 단계(601)로 넘어가고, 그렇지 않으면, 프로세스는 단계(606)로 넘어간다.
이 실시예에 따라, 단계(601)에서, 현재 CU에 연관된 CUcache 파라미터는, 이 CU가 이전에 계산되었는지(값 1)를 결정하기 위해 체킹된다.
만약 그렇다면, 단계(605)에서, 결과들이 캐시 메모리로부터 리트리빙(retrieve)된다. 이는 예측 모드들이고 메모리에 저장된 RDcost는 현재 CU의 현재 코딩 파라미터들에 복사되고 프로세스는 단계(606)로 진행한다.
현재 블록이 아직 계산되지 않았다면(CUcache의 값 0), 모든 코딩 모드들은 다음과 같이 평가된다.
단계(602)에서, NO_SPLIT 분할 모드는 현재 CU(currCU)에 대한 후보 코딩 구조로서 평가된다. NO_SPLIT 분할 모드는, 현재 CU가 서브-CU로 디바이딩되지 않는 것을 의미하고, 따라서 예측, 변환, 양자화 및 엔트로피 코딩 단계들은 사이즈(width, height)를 가진 현재 블록에 적용된다.
그러므로, 단계(602)에서, 최상의 코딩 모드들(예측 모드, 인트라 예측 각도, 인트라 스무딩(smoothing) 모드, 모션 벡터, 변환 인덱스 …)이 현재 코딩 유닛에 대해 탐색된다. 최적 CU 코딩 파라미터들은 P*로 언급되고, 그리고 최소 비트율 왜곡 비용(Dp+λ·Rp)을 가진 코딩 파라미터들의 세트에 대응하고, 여기서 Dp는 왜곡이고, Rp는 비트율 비용(현재 CU를 코딩하기 위한 비트들의 수)이고, 그리고 λ는 라그랜지 파라미터(Lagrange parameter)이다.
단계(602)에서, RDcost(currCU,NO_SPLIT)로 언급된 NO_SPLIT 분할 구성에서, 현재 CU에 연관된 결과적인 비트율 왜곡 비용은 최적 코딩 파라미터들(P*)로 현재 CU를 인코딩함으로써 그리고 또한 현재 CU에 대한 NO_SPLIT 구성을 신호하는 데 사용되는 분할 구문에 연관된 비트율 비용을 통합함으로써 계산된다.
이들 단계들 동안, 특히 파라미터들(P*)로 현재 CU를 코딩할 때, 직사각형 블록은 상대적인 형상의 용어로 특징지어진다(본원에서 형상은 일련의 분할 동작들로부터 발생하는 CU 상태에 관련된 파라미터를 의미함). 현재 표준에서, 블록은 종종 자신의 QT 깊이에 의해 특징지어진다(여기서 QT 깊이는 연속적인 QT 분할들의 수임). 이것은 예컨대 블록과 연관된 코딩 파라미터들의 엔트로피 코딩의 맥락 정보를 선택하는 데 사용된다.
도 3에서 알 수 있는 바와 같이, 평가할 현재 서브-CU는 상이한 분할 모드들을 가질 수 있고, 이는 상이한 QT 깊이 또는 BT 깊이 값들을 유도한다(BT 깊이는 연속적인 BT 분할들의 수임). 예컨대, 좌측 및 중간 경우는 1의 QT 깊이를 유도하는 반면, 우측 경우는 2의 QT 깊이를 유도한다. 엔트로피 코딩의 맥락 정보를 선택하기 위해 QT 깊이를 사용하는 것은 상이한 엔트로피 코딩들을 유도한다. 그러므로, 더 이상 CU의 깊이가 아니라, 현재 CU의 폭, 또는 높이에 대해 참조가 이루어진다. 블록의 형상을 특징으로 하기 위해 블록의 폭 또는 높이를 사용하는 것은, 동일한 맥락 정보가 이들 코딩 파라미터들을 코딩 또는 디코딩하는 데 사용되는 것을 보장한다.
예컨대, 형상-종속 맥락 정보에 기반하여 시그널링되는 코딩 파라미터들은 현재 CU의 계수들의 적응 변환의 사용을 표시하는 플래그(flag)에 관련될 수 있다.
단계(604)에서, 모드 판정 및 단계(602)에서 추정된 RDcost는 추가 이용을 위해 캐시 메모리에 저장된다.
다른 분할 모드들로부터 발생하는 서브블록에 대해 추정된 코딩 파라미터들은, 서브블록의 인과관계가 동일할 때 동일하다. 인과관계에 의해, 서브블록을 예측하거나 서브블록에 대한 코딩 파라미터를 코딩하는 데 사용되는 데이터를 포함하는 서브블록의 인과관계 이웃이 이해되어야 한다. 그런 데이터는 서브블록의 상단 및 좌측 상의 재구성된 화소 값들, 인트라 예측 모드, 모션 벡터 등일 수 있다.
현재 CU의 인과관계는 예컨대 페어런트 CU의 분할로부터 발생하는 제1 서브-CU에 대해 변화되지 않는다.
그러므로, 본 개시내용의 실시예에 따라, 단계(604) 이전에, 단계(603)에서, 평가중인 현재 CU가 페어런트 CU의 분할로부터 발생하는 서브-CU들의 스캐닝 순서에 따라, 페어런트 CU의 분할로부터 발생하는 서브-CU들로부터의 제1 서브-CU인지가 체킹된다. 예컨대, 서브-CU의 포지션이 자신의 페어런트 CU의 포지션과 동일한지, 즉 서브 CU의 인덱스가 0인지 아닌지가 체킹된다. 분할 모드들(HOR, VER, QT_SPLIT)에 대해 페어런트 CU의 분할로부터 발생하는 서브-CU들의 예시적인 스캐닝 순서들이 도 5에 예시된다. 도 5에서, 서브-CU 내부의 번호는 스캐닝 순서에서 서브 CU의 순서를 표현한다. 다른 스캐닝 순서들이 또한 가능하다.
평가중인 현재 CU가 페어런트 CU의 분할로부터 발생하는 서브-CU들로부터의 제1 서브-블록이 아니면, 프로세스는 단계(606)로 넘어간다.
그렇지 않으면, 프로세스는 단계(604)로 진행한다.
프로세스의 다음 단계는 현재 CU에 대해 모든 후보 분할 모드들을 연속적으로 평가하는 것으로 이루어진다. 모든 이진 및 사진(quaternary) 분할 모드들은 다음 세트에 대응한다:
S={HOR,VER,QT_SPLIT}
이들 분할 모드들의 각각에 대한 예시적인 정사각형 코딩 유닛의 공간적 분할은 도 5에 예시된다.
단계(606)에서, 후보 분할 모드는 분할 모드의 세트, 예컨대 리스트 내의 제1 분할 모드로부터 선택된다.
각각의 후보 분할 모드에 대해, 다음 단계들이 수행된다.
단계(607)에서, 현재 후보 분할 모드가 현재 CU에 대해 허용되는지가 결정된다. 후보 분할 모드가 이진 분할 모드(HOR 또는 VER)이면, 이 테스트는 첫째 현재 CU의 사이즈가 폭 또는 높이에서 최소 CU 사이즈보다 더 큰지, 둘째 현재 CU의 사이즈가 폭 또는 높이에서 최대 CU 사이즈보다 더 작은지, 그리고 셋째 연속적인 이진 분할들의 수가 아래 식에 의한 이진 분할들의 최대 수보다 더 작은지를 체킹하는 것으로 이루어진다:
((height>uiMinBTSize || width>uiMinBTSize) && width<=uiMaxBTSize && height<=uiMaxBTSize && uiBTDepth<uiMaxBTD)
여기서,
uiMinBTSize는 이진 트리에서 코딩 유닛에 대해 허용된 최소 사이즈를 표현하고,
uiMaxBTSize는 이진 트리에서 코딩 유닛에 대해 허용된 최대 사이즈를 표현하고,
uiBTDepth는, 진행 중인 프로세스에 의해 구성이 결정되는 이진 트리 내의 현재 CU의 깊이(즉, 페어런트 CU로부터 현재 CU를 획득하기 위한 연속적인 이진 분할들의 수)를 표현하고,
uiMaxBTD는 이진 트리의 최대 허용 깊이를 표현한다.
후보 분할 모드가 허용되지 않으면, 프로세스는 직접 단계(612)로 진행한다.
후보 분할 모드가 허용되면, 프로세스는 단계(608)로 넘어간다.
단계(608)에서, 현재 CU는 현재 후보 분할 모드에 따라, 2개 또는 4개의 더 작은 서브-CU들로 디바이딩된다. 분할 모드가 이진 분할 구성에 대응하면, 도 3에 의해 예시된 블록 공간 디비전에 따른 개별 사이즈를 가진 2개의 서브-CU들이 획득된다. 현재 후보 분할 모드가 QT_SPLIT와 동일한 경우에, 동일한 사이즈(폭/2, 높이/2)를 가진 4개의 서브-CU들이 획득된다.
단계(609)에서, 서브 코딩 유닛들이 획득되면, 각각의 획득된 서브-CU에 대한 루프가 수행된다. 각각의 획득된 서브-CU에 대해, 도 6의 현재 프로세스는 재귀적 방식으로 호출된다. 이것은 각각의 획득된 서브CU에 대해 최적 코딩 파라미터들의 세트를 획득하게 한다.
단계(610)에서, RDCost(subCUi)(∀i=0,…,N-1)라 언급되는 최소 비트율-왜곡 비용들은 각각의 획득된 서브CU에 대해 획득된 최적 코딩 파라미터들의 세트에 따라, 각각의 서브CU에 대해 획득된다.
단계(611)에서, 현재 CU(currCU)는, 현재 후보 분할 모드에 따라, 현재 CU가 어떻게 서브 코딩 유닛들로 디바이딩되는지를 표시하기 위해 필요한 분할 구문으로, 서브 코딩 유닛들(subCUi,i=0,…,N-1)을 코딩함으로써 인코딩된다. 따라서, RDcost(currCU,candidate_split_mode)로 언급된 현재 후보 분할 모드 및 현재 CU에 연관된 비트율 왜곡 비용이 획득된다.
단계(612)에서, 모든 이용가능한 후보 분할 모드들이 평가되었는지가 체킹된다. 이것이 체킹되지 않은 경우이면, 프로세스는 단계(606)로 넘어간다. 그렇지 않으면, 프로세스는 단계(613)로 넘어간다.
단계(606)에서, 후보 분할 모드들의 세트(S)로부터 다음 후보 분할 모드가 선택되고 그런 다음 후보 분할 모드에 대해 그런 프로세스는 단계(607)로부터 반복된다.
단계(613)에서, 모든 이용가능한 후보 분할 모드들이 평가되었다. 가장 낮은 RD 비용을 가진 후보 분할 모드(bestSplitMode)는 평가되었던 모든 후보 분할 모드들 중에서 선정되는 데, 즉 이를 위해 비트율-왜곡 비용이 계산 및 저장되었다.
프로세싱되는 현재 서브-CU가 제1 현재 서브-CU가 아니면, 다음에 이 포지션에 대해 프로세스가 호출될 때(즉, 페어런트 CU의 다른 분할 모드에 대해) 인과관계가 변화할 수 있다. 그 경우에, 모드들은 직접적인 방식으로 재사용될 수 없다.
단계(614)에서, 현재 서브 CU가 제1 서브 CU인지 아닌지(i가 0이거나 0이 아님) 여부가 체킹된다.
제1 서브 CU이면, 단계(615)에서, 현재 포지션에 대해 캐시가 제거되고 현재 서브 CU에 연관된 파라미터(CUcache)는 모든 블록 사이즈들에 대해, 0으로 세팅된다.
단계(616)에서, 현재 CU는 예컨대 도 4에 개시된 인코딩 프로세스에 따라, 최상의 분할 구성(bestSplitMode)으로 인코딩된다.
일 실시예에 따라, 이 단계 동안, QT 또는 BT 깊이에 의한 현재 CU의 모든 특징화는 블록의 폭 또는 높이에 의해 대체된다. 예컨대, 엔트로피 코딩의 맥락 정보는 현재 블록의 QT 깊이에 기반하여 선택되는 것이 아니라 현재 블록의 폭에 기반하여 선택된다.
도 7에 개시된 바와 같이, 몇몇 분할 경로들은, 인과관계 이웃이 크게 변화하지 않는 서브블록을 유도할 수 있다.
도 7에 도시된 바와 같이, 서브 CU(도 7에 해치로 채워짐(hatshed))는 다음 분할 경로들에 따라 분할되는 페어런트 CU(도 7에 굵은 점선들로 표현됨)로부터 획득될 수 있다:
- 좌측 서브-CU 및 우측 서브-CU를 전달하는 페어런트 CU의 수직 분할 다음, 상단 서브-CU(도 7에서 굵은 경계들로 표현된 평가될 현재 CU임) 및 하단 서브-CU를 전달하는 우측 서브-CU의 수평 분할 다음, 상단 서브 CU 및 하단 서브 CU를 전달하는 평가할 현재 CU의 수평 분할 다음, 좌측 서브 CU(평가할 현재 서브-CU임) 및 우측 서브-CU를 전달하는 하단 서브 CU의 수직 분할, 또는
- 4개의 서브-CU들(상단-좌측 서브-CU, 상단-우측 서브-CU, 하단-좌측 서브-CU 및 하단 우측 서브-CU)(평가할 현재 CU는 상단-우측 서브-CU임)을 전달하는 페어런트 CU의 쿼드트리 분할 다음, 좌측 서브-CU 및 우측 서브-CU를 전달하는 평가할 현재 CU의 수직 분할 다음, 상단 서브-CU 및 하단 서브-CU(평가할 현재 서브-CU임)를 전달하는 좌측 서브-CU의 수평 분할, 또는
- 4개의 서브-CU들(상단-좌측 서브-CU, 상단-우측 서브-CU, 하단-좌측 서브-CU 및 하단 우측 서브-CU)(평가할 현재 CU는 상단-우측 서브-CU임)을 전달하는 페어런트 CU의 쿼드트리 분할 다음, 상단 서브-CU 및 하단 서브-CU를 전달하는 평가할 현재 CU의 수평 분할 다음, 좌측 서브-CU(평가할 현재 서브-CU임) 및 우측 서브-CU를 전달하는 하단 서브-CU의 수직 분할.
도 7에서 점선 영역들은 이미 코딩된 영역, 즉 예측에 이용가능한 영역들을 예시한다. 평가할 타겟 서브-CU에 도달하기 위한 상이한 분할 경로들에 따라, 예측에 이용가능한 영역들이 크게 변화하지 않는 것을 알 수 있다.
그러므로, 본 개시내용의 다른 실시예에 따라, 일부 계산된 코딩 파라미터들은, 서브-CU의 인과관계 이웃이 변화했더라도 서브-CU에 재사용될 수 있다. 그런 실시예는, 상당한 인코딩 시간 감소를 제공하면서, 압축 성능들에 영향이 제한된다.
이 실시예에 따라, 서브-CU에 대해 추정된 코딩 파라미터들은 비트율-왜곡 최적화(이전에 평가된 페어런트 CU의 분할 모드에 대해 수행됨) 동안 이전에 계산된 바와 같이 완전히 재-사용될 수 있거나 또는 부분적으로 재-사용될 수 있다. 부분적 재-사용 코딩 파라미터들은 새로운 코딩 파라미터들을 탐색하기 위해 이미 추정된 코딩 파라미터들을 사용하는 것으로 이해되어야 한다. 이것은 평가중인 서브-CU의 최적 코딩 파라미터들의 탐색을 위한 시작점으로서 이미 추정된 코딩 파라미터들 중 일부 또는 모두를 사용함으로써 행해질 수 있다. 다른 말로, 서브-CU에 대한 코딩 파라미터들은 이미 추정된 코딩 파라미터들로부터 복사되지만, 이들 이미 추정된 코딩 파라미터들은 새로운 코딩 파라미터들을 탐색하는 데 사용된다. 또는, 이미 추정된 코딩 파라미터들의 서브세트는 예컨대 서브-CU의 색차 성분들에 대한 새로운 코딩 파라미터들로서 복사되고 사용될 수 있고, 이미 추정된 인트라 예측 방향은, 휘도 성분에 대해, 인트라 예측 방향이 다시 탐색되지만, 현재 서브-CU로부터 재-사용될 수 있다.
이 실시예는 계산들을 감소시키는 것을 허용하지만 전체 코딩 파라미터들 탐색을 수행하는 것을 회피시킨다.
이 실시예에 따라, 서브-CU에 연관된 파라미터(CUcache)는 3개의 가능한 값들을 취할 수 있는 데, 예컨대 0 및 1은 도 6에 개시된 것과 동일한 의미를 가질 수 있고, 그리고 2의 제3 값은, 이미 추정된 코딩 파라미터들이 시작점으로서 사용되거나 또는 서브-CU에 대한 새로운 코딩 파라미터들을 추정할 때 코딩 파라미터들의 탐색 범위들을 감소시키는 데 사용되는 것을 표시한다.
이 실시예는, 도 6에서와 같은 유사한 참조 번호들을 가진 단계들이 유사하게 적용되는 도 8에 예시된다.
이 실시예에 따라, 단계(800)에서, 평가중인 현재 서브-CU(position, width, height)에 연관된 파라미터(CUcache)가 0인지 아닌지 여부가 체킹된다.
파라미터(CUcache)가 0이 아니면, 프로세스는 단계(601)로 진행하고, 여기서 파라미터(CUcache)가 1인지 아닌지 여부가 체킹된다. 만약 1이면, 프로세스는 현재 서브-CU에 대한 이전에 추정된 코딩 파라미터들을 복원하기 위해 단계(605)로 진행한다. 그렇지 않으면, 파라미터(CUcache)는 2와 동일한 값을 가지며, 그러므로 프로세스는 단계(802)로 진행한다.
단계(802)에서, 파라미터(CUcache)가 현재 서브 CU에 대해 값 2를 가질 때, 이미 추정된 코딩 파라미터들은 현재 서브-CU의 NO_SPLIT 분할 모드에서 부분적으로 재-사용된다.
P*로 언급된 최상의 코딩 파라미터들(예측 모드, 인트라 예측 각도, 인트라 스무딩 모드, 모션 벡터, 변환 인덱스 …)이 현재 서브-CU에 대해 탐색된다. 전체 비트율-왜곡 최적화 탐색과의 차이는, 탐색 공간이 감소되고, 그리고 동일한 포지션에 있는 동일한 사이즈의 이전에 코딩된 블록에 의해 제약된다는 것이다. 임의의 수의 이미 계산된 파라미터들이 재-사용될 수 있다. 예컨대, 그러나 하기된 바로 제한되지 않는다:
- 인트라 방향만 예측,
- 인트라 방향 예측, 및 PDPC 인덱스, (PDPC는 위치 의존 예측자 조합(Position Dependent Predictor Combination)을 의미하고, 그리고 예측된 샘플들과 동일한 x- 및 y-화상 좌표들에 각각 위치된 기준 샘플들의 가중 조합으로서 샘플을 샘플 기반으로 공간적으로 예측하는 것으로 이루어짐),
- 예측 모드(인트라/인터), 모션 벡터들, 및 인트라 예측 방향,
- 계수들에 의존하는 모드들(예컨대, 필터 인덱스가 코딩된 잔여 계수들에 의존하는 비트 숨김(hiding)을 사용하기 때문에 RSAF 판정 루프는 재-계산되어야 함)을 제외하고, 모든 모드들은 재-사용됨.
이 실시예에 따라, 분할 모드 후보들(HOR, VER, QT_SPLIT)은 도 6에 개시된 바와 같이 탐구된다.
단계(800)에서, 파라미터(CUcache)가 0일 때, 프로세스는 단계(602)로 진행하고, 여기서 최적 코딩 파라미터들을 결정하기 위한 전체 탐색이 수행된다.
단계(801)에서, 현재 서브-CU가 제1 서브-CU가 아닐 때(서브-CU의 인덱스가 0이 아님), 파라미터(CU-cache)는 값 2로 세팅되고 단계(602)에서 추정된 코딩 파라미터들은 캐시 메모리에 저장된다.
이 실시예에 따라, 캐시 메모리 및 파라미터(CUcache)는 프로세스의 끝에서 업데이트된다.
단계(614)에서, 현재 서브-CU가 제1 서브-CU인지(서브-CU의 인덱스가 0임)가 체킹된다.
프로세싱되는 현재 서브-CU가 제1 서브-CU가 아니면(i != 0), 다음에 이 포지션에 대해 프로세스가 호출될 때(즉, 페어런트 CU의 다른 분할 모드를 평가할 때) 인과관계가 변화할 수 있다. 그러므로, 모드들은 직접적인 방식으로 재사용될 수 없다. 그러므로, 단계(803)에서, 파라미터(CUcache)는 모든 블록 사이즈들에서, 현재 포지션에 대해 1로부터 2로 변화되고, 그 값이 0 또는 2이면 변화되지 않는다.
도 9는 서브 CU의 동일한 분할 구성을 유도하는 상이한 분할 경로들을 예시한다. 도 9에서, 평가할 현재 서브-CU는 해치된 라인들로 채워진 채로 도시된다. 도 9에서 알 수 있는 바와 같이, 현재 서브-CU의 페어런트 CU의 상이한 분할 경로들이 현재 서브-CU를 유도하더라도, 현재 서브-CU의 동일한 분할 구성이 발견된다. 도 9에 예시된 바와 같이, 현재 서브-CU는 하기된 바에 의해 획득될 수 있다:
- 현재 CU의 수평 분할 다음, 상단 서브-CU의 수직 분할 또는,
- 현재 CU의 수직 분할 다음, 좌측 서브-CU의 수평 분할.
둘 모두의 분할 경로들에서, 현재 서브-CU는 4개의 서브-CU들로 분할되고 상단-우측 서브-CU는 수평으로 추가로 분할되었다.
다른 실시예에 따라, 서브-CU에 대해 더 높은 깊이에서 추정된 코딩 파라미터들은 저장되고 그리고 서브-CU의 분할 구성을 포함하여 재-사용된다.
이 실시예에 따라, 현재 포지션에서 이전에 조우한 바와 동일한 사이즈의 블록이 발견될 때마다, 블록의 분할 구성 및 코딩 파라미터들이 재사용된다.
이 실시예는, 도 6에서와 같은 유사한 참조 번호들을 가진 단계들이 유사하게 적용되는 도 10에 예시된다.
단순화를 위해, 도 10에 개시된 실시예와 도 6에 개시된 실시예 사이의 차이들만이 논의된다.
도 10에 개시된 실시예에 따라, 평가중인 현재 CU에 연관된 파라미터(CUcache)가 1인지를 체킹하는 단계(1001)는, 단계(600) 이전 프로세스의 시작에서 수행된다. 이런 방식으로, 파라미터(CUcache)의 값이 1일 때, 단계(1005)에서, 현재 CU에 대해 이미 추정된 코딩 파라미터들은 (도 6에 개시된 단계(605)와 유사한 방식으로) 복원되고 그리고 코딩 파라미터들을 결정하기 위한 비트율-왜곡 최적화 및 현재 CU에 대한 최상의 분할 모드는 우회된다.
추가로, 단계(1001)에서, 평가중인 현재 CU에 연관된 파라미터(CUcache)가 1이 아닐 때, 코딩 파라미터들을 결정하기 위한 비트율-왜곡 최적화 프로세스 및 현재 CU에 대한 최상의 분할 모드는 도 6과 유사하게 수행되며, 차이는, 단계(603, 604)가 프로세스의 끝에서 수행되어, 현재 CU가 페어런트 CU의 제1 서브-CU이면(단계(603)에서 i=0) 현재 CU에 대해 추정된 전체 분할 구성 및 연관된 코딩 파라미터들은 캐시 메모리에 저장된다는 것이다.
이 실시예의 변형에 따라, 압축 효율을 개선하기 위해, 현재 비디오 압축 표준의 일부 규범 및 구문 제한들이 제거되어야 한다. 예컨대, 현재 QTBT 툴에 따라, 쿼드트리 분할은 이진 분할 이후 허용되지 않는다. 추가로, 현재 QTBT 툴에 따라, 이진 트리 깊이는 제한된다. 그러나, 코딩 트리 탐구의 순서는 메모리 캐시에 저장되어 있는 데이터들에 영향을 준다. 이런 변형에 따라, 최대 이진 분할 깊이 제한은 제거되거나 더 큰 값으로 세팅되어, 이진 분할로부터 발행된 서브-CU는 추가로 분할될 수 있다. 추가로, 이런 변형에 따라, 쿼드트리 제한은, 연관된 QTSplit 구문을 포함하여 또한 제거된다. 이 변형에 따라, 모든 쿼드트리 분할은 예컨대 수평 분할 다음 상단 및 하단 서브-CU들의 수직 분할에 의한 이진 트리 구문으로 획득될 수 있다.
본 개시내용의 다른 실시예에 따라, 캐시 메모리는, 이미 추정된 코딩 파라미터들이 적용될 때마다 최적으로 재-사용될 수 있도록 최적으로 할당되고 사용된다.
이 실시예에 따라, 추정된 코딩 파라미터들은, 현재 CU가 재-사용될 때마다, 그리고 이후 재-사용될 수 있는 현재 CU에 대해 이미 추정된 기존 코딩 파라미터들을 겹쳐쓰지 않고 캐시 메모리에 저장된다.
이 실시예는 위에 개시된 실시예들과 호환가능하다.
이 실시예는, 도 6에서와 같은 유사한 참조 번호들을 가진 단계들이 유사하게 적용되는 도 12에 예시된다. 단순화를 위해, 도 12에 개시된 실시예와 도 6에 개시된 실시예 사이의 차이들만이 논의된다.
도 12에 개시된 실시예에 따라, 고유 식별자(도 12의 해시(bCodedBlkInCTU))는 단계(1201)에서 계산된다. 그런 식별자는 현재 CU의 포지션, 폭 및 높이, 및 현재 CU의 인과관계 이웃을 식별하도록 허용한다. 그런 인과관계 이웃은, 현재 CU의 이웃 CU에 대한 코딩 파라미터들이 이전에 결정되었는지를 표시한다.
그러므로, 현재 서브-CU에 대한 코딩 파라미터들의 몇몇 세트들은 현재 서브-CU에 도달하는 데 사용되는 분할 경로들에 의존하여 그리고 현재 서브-CU의 인과관계 이웃에 의존하여 이용가능하게 될 수 있다. 이 실시예에 따라, 현재 서브-CU에 대한 코딩 파라미터들을 추정할 때 인과관계 이웃의 상태는 현재 서브-CU에 대해 추정된 코딩 파라미터들과 함께 저장된다. 그러므로, 동일한 서브-CU가 추가로 조우될 때, 예컨대 서브-CU의 페어런트 CU에 대한 다른 분할 모드를 평가할 때, 식별자는, 그것이 캐시 메모리에 존재하는 경우 인과관계 이웃의 현재 상태와 동일한 인과관계 이웃의 상태를 갖는 서브-CU에 대해 추정되었던 코딩 파라미터들을 리트리빙하도록 허용한다.
식별자는 추정된 코딩 파라미터들을 저장하고 이미 추정된 코딩 파라미터들을 리트리빙할 캐시 메모리 포지션을 인덱싱한다. 이 식별자는 해시 함수, 이를테면 잘-알려진 Murmur3, CRC, 또는 MD5Sum에 의해 획득될 수 있다. 해시 함수에 대한 입력은 계산된 최소 CU들의 맵(map)이다. 예컨대, CTU의 4x4 화소들의 사이즈의 각각의 블록에 대해, 플래그는, 4x4 블록이 이미 코딩된 경우 1로 세팅되거나 그렇지 않으면 0으로 세팅된다. 이것은 평가할 현재 CU의 인과관계 이웃의 맵을 정의한다.
그런 맵은 CTU의 현재 서브-CU(도 11에서 해치된 라인들로 채워짐) 및 대응하는 인과관계 이웃을 획득하기 위해 상이한 분할 경로들을 도시하는 도 11에 예시된다.
도 11에서, CTU는 CTU 내부가 점선들에 의해 도시된 4x4 화소들의 8x8 블록들을 포함한다. 현재 서브-CU는 CTU에 적용되는 다음 분할 경로들에 따라 획득된다:
- (a) CTU의 수직 분할 다음, 우측 CU의 수평 분할 다음, 상단 서브-CU의 수직 분할 다음, 좌측 서브-CU의 수평 분할 - 평가중인 현재 서브-CU는 결과적인 하단 서브-CU임 -,
- (b) CTU의 수직 분할 다음, 우측 CU의 수평 분할 다음, 상단 서브-CU의 수평 분할 다음, 하단 서브-CU의 수직 분할 - 평가중인 현재 서브-CU는 결과적인 좌측 서브-CU임 -,
- (c) CTU의 쿼드트리 분할 다음, 상단-우측 CU의 쿼드트리 분할 - 평가중인 현재 서브-CU는 결과적인 하단-좌측 서브-CU임 -,
- (d) CTU의 수직 분할 다음, 상단-우측 CU의 수평 분할 다음, 하단 서브-CU의 수직 분할 - 평가중인 현재 서브-CU는 결과적인 좌측 서브-CU임 -.
각각의 경우 (a), (b), (c), 및 (d)에서, 4x4 블록이 이미 코딩되었는지(값 1) 또는 코딩되지 않았는지(값 0) CTU의 각각의 4x4 블록에 대해 값 0 또는 1이 표시된다. 이들 맵들은, 상이한 분할 경로들에 따른 현재 서브-CU에 대한 코딩 파라미터들을 추정할 때 이웃의 상태를 표시한다.
해시 함수는 이 맵을 인덱스로 변환하는 데, 여기서 인덱스는 위에 개시된 식별자이다. 이어서, 이 인덱스는, 이 인덱스를 처음 조우할 때 계산된 코딩 파라미터들을 저장하거나, 또는 이 인덱스를 조우하는 후속 시간들에서 코딩 파라미터들을 리트리빙하기 위해 캐시 메모리 어드레스로서 사용된다. 이 실시예에 따라, 이 인덱스는, 현재 서브-CU의 인과관계 이웃이 해시 함수에 의해 인덱스로 인코딩된 상태에 있을 때마다 조우된다.
그러므로, 계산된 식별자는 현재 서브-CU를 유도한 분할 경로를 식별하는 것을 허용한다. 도 6에 개시된 바와 같이 평가된 후보 분할 모드들의 순서에 따라, 도 11에 의해 예시된 분할 경로들은 다음 순서((b), (a),(d) 및 (c))로 조우될 것이다. 이런 평가 순서에 따라, (d) 및 (c) 분할 경로들을 평가할 때, 분할 경로(b)에서 현재 서브-CU에 대해 추정된 코딩 파라미터들은 부분적으로 재-사용될 수 있다. 다른 변형에 따라, 분할 경로(c)를 평가할 때, 분할 경로(d)에서 현재 서브-CU에 대해 추정된 코딩 파라미터들은 완전히 재-사용될 수 있다.
이 실시예의 변형에 따라, 인과관계 이웃의 특정 상태에 대해 저장된 데이터는 정보, 이를테면 인과관계 샘플들의 재구성된 샘플 값들 및/또는 코딩 모드들, 이를테면 인트라 예측 모드들, 사용된 모션 벡터 예측자를 포함할 수 있다.
이 실시예의 변형에 따라, 인과관계 이웃의 상태는 또한 정보, 이를테면 분할 경로, 또는 서브-CU 사이즈, 서브-CU를 둘러싸는 이용가능한 화소들의 수를 포함할 수 있다. 이런 변형은 동일한 서브-CU에 대한 몇몇 인과관계 이웃을 구별하도록 허용하고, 여기서 인과관계 이웃의 블록들은 이미 코딩되었지만(그러므로 값들이 1임) 상이한 코딩 파라미터들을 가진다.
도 12에 개시된 실시예에 따라, 단계(1201)에서, 현재 현재 서브-CU 및 현재 서브-CU의 인과관계 이웃의 상태에 연관된 파라미터(CUcache)가 1인지 아닌지 여부가 체킹된다. 1이 아니라면, 프로세스는 단계(602)로 진행하고, 여기서 현재 서브-CU에 대한 코딩 파라미터들은 도 6에 개시된 바와 유사한 방식으로 추정된다.
단계(1204)에서, 단계(602)에서 추정된 코딩 파라미터들은 단계(1201)에서 계산된 고유 식별자에 따라 캐시 메모리에 저장된다. 이 실시예에 따라, 서브-CU에 대해 추정된 코딩 파라미터들을 저장하기 이전에, 이 서브-CU가 페어런트 CU의 제1 서브-CU인지가 더 이상 체킹되지 않는다. 이런 방식으로, 모든 코딩 파라미터들 및 인과관계 이웃의 상태는, 코딩 파라미터들이 제1 서브-CU에 대해서만 저장되는(도 6의 단계(603)) 도 6에 개시된 실시예 대신, 평가중인 CU의 모든 서브-CU에 대해 캐시 메모리에 저장된다.
단계(1201)에서, 파라미터(CUcache)의 값이 1이면, 프로세스는 단계(1205)로 진행하고, 여기서 이미 추정된 코딩 파라미터들은 고유 식별자로 인해 캐시 메모리로부터 판독된다. 이어서, 코딩 파라미터들은 도 6에 개시된 단계(605)와 유사한 방식으로 현재 서브-CU에 대해 복원된다.
추가로, 프로세스의 종료시에, 캐시 메모리는 현재 서브-CU에 대해 더 이상 제거되지 않는다(도 6의 단계들(614, 615)이 더 이상 없슴).
도 13은 본 원리의 실시예에 따라 비디오를 인코딩하기 위한 장치(30)의 단순화된 구조를 예시한다. 그런 장치(30)는 위에 개시된 임의의 실시예들에 따른 본 원리에 따라 비디오를 인코딩하기 위한 방법을 구현하도록 구성된다. 인코더 장치(30)의 기능 유닛들은 도 4를 참조하여 개시되었다. 아래에 개시되는 구조적 장치(30)는 개별적으로 또는 조합하여, 그리고 위에 개시된 원리의 실시예들 중 임의의 하나에 따라 이들 기능 유닛들의 각각을 구현하도록 구성될 수 있다.
일 실시예에 따라, 인코더 장치(30)는 예컨대 프로세서와 함께 구비되고 그리고 메모리(MEM)에 저장되며 본 원리에 따라 비디오를 인코딩하기 위한 방법을 구현하는 컴퓨터 프로그램(PG)에 의해 구동되는 프로세싱 유닛(PROC)을 포함한다.
초기화시, 컴퓨터 프로그램(PG)의 코드 명령들은 예컨대, RAM(도시되지 않음)에 로딩되고 이어서 프로세싱 유닛(PROC)의 프로세서에 의해 실행된다. 프로세싱 유닛(PROC)의 프로세서는, 컴퓨터 프로그램(PG)의 명령들에 따라, 본원에서 위에 설명된 비디오를 인코딩하기 위한 방법의 단계들을 구현한다.
인코더 장치(30)는 인코딩된 비트스트림(STR)을 데이터 네트워크에 송신하기 위한 통신 유닛(COMOUT)을 포함한다.
인코더 장치(30)는 또한 인코딩할 화상 또는 비디오를 수신하기 위한 인터페이스(COMIN)를 포함한다.

Claims (16)

  1. 비디오를 인코딩하기 위한 방법으로서,
    상기 비디오의 화상(picture)으로부터의 적어도 하나의 블록에 대해:
    - 적어도 하나의 제1 서브블록의 제1 세트로의 상기 블록의 제1 분할 모드에 대해, 상기 적어도 하나의 제1 서브블록의 코딩 파라미터들을 결정하는 것을 포함하여 제1 비트율-왜곡 비용(rate-distortion cost)을 결정하는 단계;
    - 적어도 하나의 제2 서브블록의 적어도 하나의 제2 세트로의 상기 블록의 적어도 하나의 제2 분할 모드에 대해, 상기 적어도 하나의 제2 세트의 상기 적어도 하나의 제2 서브블록의 코딩 파라미터들을 결정하는 것을 포함하여 적어도 하나의 제2 비트율-왜곡 비용을 결정하는 단계;
    - 상기 제1 서브블록의 적어도 하나의 코딩 파라미터가 상기 제2 서브블록에 대한 코딩 파라미터들을 결정하는 데 사용되는 것을 표시하는 값을 갖는 파라미터를 상기 적어도 하나의 제1 서브블록에 연관시키는 단계;
    - 상기 제1 비트율-왜곡 비용 및 상기 적어도 하나의 제2 비트율-왜곡 비용에 따라 상기 블록을 코딩하기 위한 분할 모드를 결정하는 단계;
    - 상기 결정된 분할 모드에 따라 상기 블록을 인코딩하는 단계
    를 포함하고,
    적어도 하나의 제1 서브블록에 연관된 파라미터는:
    - 상기 제2 서브블록이 상기 제1 서브블록과 동일한 화상의 포지션에 위치되는 경우;
    - 상기 제2 서브블록이 상기 제1 서브블록과 동일한 폭 및 동일한 높이를 갖는 경우; 및
    - 상기 제1 서브블록 및 상기 제2 서브블록이 상기 제1 서브블록 또는 상기 제2 서브블록을 예측하는 데 또는 상기 제1 서브블록 또는 상기 제2 서브블록에 대한 코딩 파라미터를 코딩하는 데 사용되는 데이터를 포함하는 동일한 인과관계 이웃(causal neighborhood)을 갖는 경우,
    상기 값으로 세팅되는, 방법.
  2. 제1항에 있어서, 상기 제1 서브블록 및 상기 제2 서브블록은, 제1 세트가 스캔 순서에 따라 순서가 정해지는 경우 상기 제1 서브블록이 상기 제1 세트의 첫번째 서브블록일 때 서브블록의 동일한 인과관계 이웃을 가지는, 방법.
  3. 제1항 또는 제2항에 있어서, 상기 값은, 상기 적어도 하나의 제1 서브블록에 대한 코딩 파라미터들이 이용가능하다는 것 그리고 상기 적어도 하나의 제2 서브블록에 대한 코딩 파라미터들이 상기 적어도 하나의 제1 서브블록에 대해 결정된 코딩 파라미터들과 동일한 코딩 파라미터들이도록 결정되는 것을 표시하는, 방법.
  4. 제3항에 있어서, 상기 적어도 하나의 제1 서브블록의 상기 코딩 파라미터들이 상기 적어도 하나의 제1 서브블록의 분할 구성을 포함하는 경우, 상기 적어도 하나의 제2 서브블록은 상기 분할 구성으로부터 상속받는, 방법.
  5. 제1항 또는 제2항에 있어서, 상기 파라미터의 상기 값은, 상기 적어도 하나의 제2 서브블록에 대한 코딩 파라미터들이 상기 적어도 하나의 제1 서브블록에 대해 결정된 코딩 파라미터들로부터 상기 적어도 하나의 제2 서브블록을 코딩하기 위한 코딩 파라미터들을 탐색함으로써 결정되는 것을 표시하는, 방법.
  6. 제5항에 있어서, 상기 적어도 하나의 제1 서브블록에 대한 상기 코딩 파라미터들은, 상기 적어도 하나의 제2 서브블록의 비-분할 모드가 평가될 때에만 사용되는, 방법.
  7. 제1항에 있어서,
    - 상기 적어도 하나의 제1 서브블록에 대한 식별자를 계산하는 단계 - 상기 식별자는 상기 포지션을 식별하는 것을 허용하고, 상기 적어도 하나의 제1 서브블록의 상기 폭 및 상기 높이, 및 상기 적어도 하나의 제1 서브블록의 인과관계 이웃은, 상기 적어도 하나의 제1 서브블록의 이웃에 대한 코딩 파라미터들이 이전에 결정되었는지를 적어도 표시함 -,
    - 상기 적어도 하나의 제1 서브블록 또는 상기 적어도 하나의 제2 서브블록에 대해, 상기 식별자와 연관하여, 상기 적어도 하나의 제1 서브블록에 대해 결정된 코딩 파라미터들을 저장하는 단계,
    - 상기 적어도 하나의 제2 서브블록에 대해, 상기 적어도 하나의 제1 서브블록에 연관된 상기 파라미터가 상기 값과 동일하면, 상기 식별자에 연관된 저장된 코딩 파라미터들을 판독하기 위해 상기 식별자를 사용하는 단계를 더 포함하고, 상기 적어도 하나의 제2 서브블록에 대한 코딩 파라미터들은 판독된 코딩 파라미터들인 것으로 결정되는, 방법.
  8. 비디오를 인코딩하기 위한 장치로서,
    프로세서를 포함하고,
    상기 비디오의 화상으로부터의 적어도 하나의 블록에 대해, 상기 프로세서는:
    - 적어도 하나의 제1 서브블록의 제1 세트로의 상기 블록의 제1 분할 모드에 대해, 상기 적어도 하나의 제1 서브블록의 코딩 파라미터들을 결정하는 것을 포함하여 제1 비트율-왜곡 비용을 결정하고;
    - 적어도 하나의 제2 서브블록의 적어도 하나의 제2 세트로의 상기 블록의 적어도 하나의 제2 분할 모드에 대해, 상기 적어도 하나의 제2 세트의 상기 적어도 하나의 제2 서브블록의 코딩 파라미터들을 결정하는 것을 포함하여 적어도 하나의 제2 비트율-왜곡 비용을 결정하고;
    - 상기 제1 서브블록의 적어도 하나의 코딩 파라미터가 제2 서브블록에 대한 코딩 파라미터들을 결정하는 데 사용되는 것을 표시하는 값을 가진 파라미터를 상기 적어도 하나의 제1 서브블록에 연관시키고;
    - 상기 제1 비트율-왜곡 비용 및 상기 적어도 하나의 제2 비트율-왜곡 비용에 따라 상기 블록을 코딩하기 위한 분할 모드를 결정하고;
    - 상기 결정된 분할 모드에 따라 상기 블록을 인코딩하도록
    구성되고,
    적어도 하나의 제1 서브블록에 연관된 파라미터는:
    - 제2 서브블록이 상기 제1 서브블록과 동일한 화상의 포지션에 위치되는 경우;
    - 상기 제2 서브블록이 상기 제1 서브블록과 동일한 폭 및 동일한 높이를 갖는 경우; 및
    - 상기 제1 서브블록 및 상기 제2 서브블록이 상기 제1 서브블록 또는 상기 제2 서브블록을 예측하는 데 또는 상기 제1 서브블록 또는 상기 제2 서브블록에 대한 코딩 파라미터를 코딩하는 데 사용되는 데이터를 포함하는 동일한 인과관계 이웃을 갖는 경우,
    상기 값으로 세팅되는, 장치.
  9. 제8항에 있어서, 상기 제1 서브블록 및 상기 제2 서브블록은, 제1 세트가 스캔 순서에 따라 순서가 정해지는 경우 상기 제1 서브블록이 상기 제1 세트의 첫번째 서브블록일 때 서브블록의 동일한 인과관계 이웃을 가지는, 장치.
  10. 제9항에 있어서, 상기 값은, 상기 적어도 하나의 제1 서브블록에 대한 코딩 파라미터들이 이용가능하다는 것 그리고 상기 적어도 하나의 제2 서브블록에 대한 코딩 파라미터들이 상기 적어도 하나의 제1 서브블록에 대해 결정된 코딩 파라미터들과 동일한 코딩 파라미터들이도록 결정되는 것을 표시하는, 장치.
  11. 제9항 또는 제10항에 있어서, 상기 적어도 하나의 제1 서브블록의 상기 코딩 파라미터들이 상기 적어도 하나의 제1 서브블록의 분할 구성을 포함하는 경우, 상기 적어도 하나의 제2 서브블록은 상기 분할 구성으로부터 상속받는, 장치.
  12. 제11항에 있어서, 상기 파라미터의 상기 값은, 상기 적어도 하나의 제2 서브블록에 대한 코딩 파라미터들이 상기 적어도 하나의 제1 서브블록에 대해 결정된 코딩 파라미터들로부터 상기 적어도 하나의 제2 서브블록을 코딩하기 위한 코딩 파라미터들을 탐색함으로써 결정되는 것을 표시하는, 장치.
  13. 제12항에 있어서, 상기 적어도 하나의 제1 서브블록에 대한 상기 코딩 파라미터들은, 상기 적어도 하나의 제2 서브블록의 비-분할 모드가 평가될 때에만 사용되는, 장치.
  14. 제11항에 있어서,
    - 상기 적어도 하나의 제1 서브블록에 대한 식별자를 계산하고 - 상기 식별자는 상기 포지션을 식별하는 것을 허용하고, 상기 적어도 하나의 제1 서브블록의 상기 폭 및 상기 높이, 및 상기 적어도 하나의 제1 서브블록의 인과관계 이웃은, 상기 적어도 하나의 제1 서브블록의 이웃에 대한 코딩 파라미터들이 이전에 결정되었는지를 적어도 표시함 -,
    - 상기 적어도 하나의 제1 서브블록 또는 상기 적어도 하나의 제2 서브블록에 대해, 상기 식별자와 연관하여, 상기 적어도 하나의 제1 서브블록에 대해 결정된 코딩 파라미터들을 저장하고,
    - 상기 적어도 하나의 제2 서브블록에 대해, 상기 적어도 하나의 제1 서브블록에 연관된 상기 파라미터가 상기 값과 동일하면, 상기 식별자에 연관된 저장된 코딩 파라미터들을 판독하기 위해 상기 식별자를 사용하도록
    구성되는 프로세서를 더 포함하고,
    상기 적어도 하나의 제2 서브블록에 대한 코딩 파라미터들은 판독된 코딩 파라미터들인 것으로 결정되는, 장치.
  15. 명령들을 포함하는 비일시적 컴퓨터 판독가능 매체로서, 상기 명령들은 하나 이상의 프로세서로 하여금 비디오의 인코딩을 수행하게 하고,
    상기 비디오의 인코딩은, 상기 비디오의 화상으로부터의 적어도 하나의 블록에 대해:
    - 적어도 하나의 제1 서브블록의 제1 세트로의 상기 블록의 제1 분할 모드에 대해, 상기 적어도 하나의 제1 서브블록의 코딩 파라미터들을 결정하는 것을 포함하여 제1 비트율-왜곡 비용을 결정하는 것;
    - 적어도 하나의 제2 서브블록의 적어도 하나의 제2 세트로의 상기 블록의 적어도 하나의 제2 분할 모드에 대해, 상기 적어도 하나의 제2 세트의 상기 적어도 하나의 제2 서브블록의 코딩 파라미터들을 결정하는 것을 포함하여 적어도 하나의 제2 비트율-왜곡 비용을 결정하는 것;
    - 상기 제1 서브블록의 적어도 하나의 코딩 파라미터가 제2 서브블록에 대한 코딩 파라미터들을 결정하는 데 사용되는 것을 표시하는 값을 가진 파라미터를 상기 적어도 하나의 제1 서브블록에 연관시키는 것;
    - 상기 제1 비트율-왜곡 비용 및 상기 적어도 하나의 제2 비트율-왜곡 비용에 따라 상기 블록을 코딩하기 위한 분할 모드를 결정하는 것;
    - 상기 결정된 분할 모드에 따라 상기 블록을 인코딩하는 것
    을 포함하고,
    적어도 하나의 제1 서브블록에 연관된 파라미터는:
    - 제2 서브블록이 상기 제1 서브블록과 동일한 화상의 포지션에 위치되는 경우;
    - 상기 제2 서브블록이 상기 제1 서브블록과 동일한 폭 및 동일한 높이를 갖는 경우; 및
    - 상기 제1 서브블록 및 상기 제2 서브블록이 상기 제1 서브블록 또는 상기 제2 서브블록을 예측하는 데 또는 상기 제1 서브블록 또는 상기 제2 서브블록에 대한 코딩 파라미터를 코딩하는 데 사용되는 데이터를 포함하는 동일한 인과관계 이웃(causal neighborhood)을 갖는 경우,
    상기 값으로 세팅되는, 비일시적 컴퓨터 판독가능 매체.
  16. 삭제
KR1020197012991A 2016-10-07 2017-08-31 비디오를 인코딩하기 위한 방법 및 장치 KR102318065B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP16306323.3A EP3306928A1 (en) 2016-10-07 2016-10-07 Method and apparatus for encoding a video
EP16306323.3 2016-10-07
PCT/EP2017/071844 WO2018065153A1 (en) 2016-10-07 2017-08-31 Method and apparatus for encoding a video

Publications (2)

Publication Number Publication Date
KR20190058621A KR20190058621A (ko) 2019-05-29
KR102318065B1 true KR102318065B1 (ko) 2021-10-27

Family

ID=57138021

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197012991A KR102318065B1 (ko) 2016-10-07 2017-08-31 비디오를 인코딩하기 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US10965938B2 (ko)
EP (2) EP3306928A1 (ko)
JP (1) JP6837545B2 (ko)
KR (1) KR102318065B1 (ko)
CN (1) CN110024397B (ko)
WO (1) WO2018065153A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020073882A1 (en) * 2018-10-08 2020-04-16 Huawei Technologies Co., Ltd. Video decoder and corresponding methods
CN113170192B (zh) 2018-11-15 2023-12-01 北京字节跳动网络技术有限公司 仿射的merge与mvd
WO2020114517A1 (en) * 2018-12-08 2020-06-11 Beijing Bytedance Network Technology Co., Ltd. Shifting on affine parameters
CN114501026B (zh) * 2022-02-17 2023-04-14 北京百度网讯科技有限公司 视频编码方法、装置、设备及存储介质
CN116501537B (zh) * 2023-06-26 2023-09-19 苏州浪潮智能科技有限公司 磁盘阵列切换方法、系统、电子设备及存储介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8432970B1 (en) * 2007-12-14 2013-04-30 Marvell International Ltd. Block type selection
CN102388610B (zh) * 2009-02-09 2015-03-04 三星电子株式会社 使用低复杂度频率变换的视频编码方法和设备以及视频解码方法和设备
US20100238997A1 (en) * 2009-03-17 2010-09-23 Yang En-Hui Method and system for optimized video coding
KR101456498B1 (ko) * 2009-08-14 2014-10-31 삼성전자주식회사 계층적 부호화 단위의 스캔 순서를 고려한 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
EP2559238B1 (en) * 2010-04-13 2015-06-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Adaptive image filtering method and apparatus
EP2530642A1 (en) * 2011-05-31 2012-12-05 Thomson Licensing Method of cropping a 3D content
GB2495990A (en) * 2011-10-28 2013-05-01 Canon Kk Motion compensated image coding with omission of coding mode cost calculation for a motion predictor in a set.
US10805617B2 (en) * 2012-01-19 2020-10-13 Texas Instruments Incorporated Scalable prediction type coding
GB2509702B (en) * 2013-01-04 2015-04-22 Canon Kk Video coding
JP5719401B2 (ja) 2013-04-02 2015-05-20 日本電信電話株式会社 ブロックサイズ決定方法、映像符号化装置、及びプログラム
KR102166335B1 (ko) * 2013-04-19 2020-10-15 삼성전자주식회사 Sao 파라미터를 시그널링하는 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치
US10003792B2 (en) * 2013-05-27 2018-06-19 Microsoft Technology Licensing, Llc Video encoder for images
JP2016526853A (ja) * 2013-07-12 2016-09-05 サムスン エレクトロニクス カンパニー リミテッド 深さ基盤ディスパリティベクトルを利用するインターレイヤビデオ復号化方法及びその装置、並びに深さ基盤ディスパリティベクトルを利用するインターレイヤビデオ符号化方法及びその装置
KR102179383B1 (ko) * 2013-08-09 2020-11-16 삼성전자주식회사 병합 모드 결정 방법 및 장치
US10085027B2 (en) 2015-03-06 2018-09-25 Qualcomm Incorporated Adaptive mode checking order for video encoding
WO2018049594A1 (en) * 2016-09-14 2018-03-22 Mediatek Inc. Methods of encoder decision for quad-tree plus binary tree structure
KR102471208B1 (ko) * 2016-09-20 2022-11-25 주식회사 케이티 비디오 신호 처리 방법 및 장치
EP3306927A1 (en) * 2016-10-05 2018-04-11 Thomson Licensing Encoding and decoding methods and corresponding devices

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
H. Huang, et al. AHG5: Speed-up for JEM-3.1. JVET of ITU-T and ISO/IEC. JVET-D0077 Ver.1, Oct. 5, 2016, pp.1-6
J. Chen, et al. Algorithm Description of Joint Exploration Test Model 3. JVET of ITU-T and ISO/IEC. JVET-C1001 Ver.3, Jul. 6, 2016, pp.1-34

Also Published As

Publication number Publication date
EP3523967A1 (en) 2019-08-14
JP6837545B2 (ja) 2021-03-03
WO2018065153A1 (en) 2018-04-12
CN110024397A (zh) 2019-07-16
US20200014915A1 (en) 2020-01-09
JP2019531031A (ja) 2019-10-24
KR20190058621A (ko) 2019-05-29
CN110024397B (zh) 2022-09-16
EP3306928A1 (en) 2018-04-11
US10965938B2 (en) 2021-03-30

Similar Documents

Publication Publication Date Title
RU2770185C2 (ru) Множество кандидатов предсказателя для компенсации движения
KR102318065B1 (ko) 비디오를 인코딩하기 위한 방법 및 장치
JP7277447B2 (ja) 動き補償用の改善されたプレディクタ候補
EP3162055B1 (en) Method and device for providing depth based block partitioning in high efficiency video coding
KR102576194B1 (ko) 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
JP2019525679A (ja) クロス成分フィルタ
WO2017201011A1 (en) Confusion of multiple filters in adaptive loop filtering in video coding
KR102216585B1 (ko) 깊이 영상의 부호화 장치 및 복호화 장치, 부호화 방법 및 복호화 방법
KR102500091B1 (ko) 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
US20200053368A1 (en) Method and apparatus for encoding a video
CN110832854B (zh) 利用插值进行帧内预测的方法和装置
WO2020243100A1 (en) Methods and apparatus for improving motion estimation in video coding
CN114501019A (zh) 关于划分预测
EP3918794A1 (en) Inter prediction in geometric partitioning with an adaptive number of regions
US10827179B2 (en) Method for coding and decoding image parameters, device for coding and decoding image parameters and computer programs corresponding thereto
EP4082202A1 (en) Motion estimation region for the merge candidates
KR20200022492A (ko) 영상을 인코딩 및 디코딩하기 위한 방법, 인코딩 및 디코딩 장치, 및 해당 컴퓨터 프로그램
WO2023154574A1 (en) Methods and devices for geometric partitioning mode with adaptive blending
WO2023158765A1 (en) Methods and devices for geometric partitioning mode split modes reordering with pre-defined modes order
WO2023141338A1 (en) Methods and devices for geometric partitioning mode with split modes reordering
EP4367886A1 (en) Improvements on temporal motion vector prediction
KR101603412B1 (ko) 깊이 정보를 이용한 비디오 부호화 방법 및 장치
KR20240110023A (ko) 블록 기반 비디오 코딩을 위한 부호 예측
KR20240044497A (ko) 블록 기반 비디오 코딩을 위한 부호 예측

Legal Events

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