KR102525179B1 - 파티션 제한 요소들 간의 관계 - Google Patents

파티션 제한 요소들 간의 관계 Download PDF

Info

Publication number
KR102525179B1
KR102525179B1 KR1020217002530A KR20217002530A KR102525179B1 KR 102525179 B1 KR102525179 B1 KR 102525179B1 KR 1020217002530 A KR1020217002530 A KR 1020217002530A KR 20217002530 A KR20217002530 A KR 20217002530A KR 102525179 B1 KR102525179 B1 KR 102525179B1
Authority
KR
South Korea
Prior art keywords
block
picture
size
video
minqtsizey
Prior art date
Application number
KR1020217002530A
Other languages
English (en)
Other versions
KR20210024114A (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 후아웨이 테크놀러지 컴퍼니 리미티드
Priority to KR1020237013365A priority Critical patent/KR20230054917A/ko
Publication of KR20210024114A publication Critical patent/KR20210024114A/ko
Application granted granted Critical
Publication of KR102525179B1 publication Critical patent/KR102525179B1/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/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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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/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/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Lining And Supports For Tunnels (AREA)
  • Paper (AREA)

Abstract

본 발명은 일반적으로 비디오 코딩 방법과 픽처 분할 방법에 관한 것이다. 특히, 본 발명은 서로 다른 픽처 분할 방법에 대한 분할 규칙을 설정함으로써 분할 제약 요소들 간의 관계에 관한 것이다. 본 발명은, 인코딩된 픽처를 포함하는 비트스트림을 생성하거나 또는 처리하기 위한, 특히 파티션 제한 요소들을 설정하고 파티션 제한 요소들을 비트스트림에 포함하기 위한 장치 및 대응하는 방법을 제공한다. 이러한 장치들 중 하나가 쿼드트리 분할로 인해 생성되는 리프 블록의 최소 루마 크기(MinQtSizeY)를 결정하고, MinQtSizeY에 기초하여, 이진 트리 분할을 이용하여 분할될 코딩 블록의 최대 루마 크기(MaxBtSizeY)를 결정하며, 결정된 MinQtSizeY에 관한 정보를 비트스트림에 포함하도록 구성된다.

Description

파티션 제한 요소들 간의 관계
본 개시는 일반적으로 비디오 코딩 방법, 디코딩 방법, 및 픽처 분할 방법에 관한 것이다.
비교적 짧은 비디오를 묘사하는 데 필요한 비디오 데이터의 양도 상당할 수 있으며, 이로 인해 대역폭 용량이 제한된 통신 네트워크를 통해 데이터가 스트리밍되거나 또는 전달될 때 어려움을 초래할 수 있다. 따라서, 비디오 데이터는 일반적으로 현대 통신 네트워크를 통해 전달되기 전에 압축된다. 메모리 자원이 제한될 수 있으므로, 비디오가 저장 장치에 저장될 때 비디오의 크기가 문제가 될 수도 있다. 비디오 압축 장치는 전송 또는 저장 전에 종종 소스에서 소프트웨어 및/또는 하드웨어를 이용하여 비디오 데이터를 코딩함으로써, 디지털 비디오 이미지를 표현하는 데 필요한 데이터 양을 줄인다. 다음, 압축된 데이터가 비디오 데이터를 디코딩하는 비디오 압축 해제 장치에 의해 목적지에서 수신된다. 네트워크 자원이 제한되고 더 높은 비디오 품질에 대한 요구사항이 계속 늘어남에 따라, 이미지 품질을 거의 또는 전혀 희생하지 않고 압축 비율을 개선하는 향상된 압축 기술과 압축 해제 기술이 바람직하다.
일반적으로, 다수의 파티션 제한 요소가 존재하고, 각각의 요소가 서로 다른 유형의 분할 방법에 관해 픽처의 분할(비디오의 분할 등)을 제한한다. 이러한 다양한 유형의 분할 방법은 특히 이진 트리 분할(binary tree partitioning), 쿼드트리 분할(quadtree partitioning), 및 삼진 트리 분할(ternary tree partitioning)을 포함한다. 파티션 제한 요소는 일반적으로 인코딩된 픽처를 포함하는 비트 스트림에 포함되어 시그널링된다. 이하, 몇 가지 중요한 파티션 제한 요소에 대해 설명한다.
최소 코딩 블록 크기(MinCbSizeY)가 정의될 수 있다. 일 예로서, MinCbSizeY가 8일 수 있고, 이는 그 결과로 생성된 4개의 자식 블록이 (폭 또는 높이에 있어서) MinCbSizeY보다 작도록 보장되기 때문에 8×8의 크기를 가진 부모 블록이 파티셔닝(분할) 방법 중 어느 방법을 이용하여 분할될 수 없다는 것을 의미한다. MinCbSizeY가 8이면, 그 결과로 생성된 4개의 자식 블록이 4×8(폭이 4이고 높이가 8임)의 크기를 가질 것이고, 그 결과로 생성된 자식 블록의 폭이 MinCbSizeY보다 작을 것이기 때문에, 8×16의 크기를 가진 부모 블록이 예를 들어 쿼드트리 분할(파티셔닝)을 이용하여 분할될 수 없다. 두 번째 예에서, MinCbSizeY가 블록의 폭과 높이 모두에 적용된다고 가정했지만, 2개의 다른 구문 요소를 이용하여 폭과 높이를 독립적으로 제한할 수 있다.
최대 코딩 트리 블록 크기(CtbSizeY)가 루마 샘플(luma sample)의 개수의 관점에서 최대 코딩 블록의 크기를 나타낼 수 있다.
최대 이진 트리 크기(MaxBtSizeY)가 샘플의 개수의 관점에서, 이진 분할 방법을 이용하여 분할될 수 있는 코딩 블록의 최대 루마 크기(폭 또는 높이)로서 정의될 수 있다. 일 예로서, MaxBtSizeY가 64이면, 폭 또는 높이에 있어서 크기가 더 큰 코딩 블록이 이진 분할을 이용하여 분할될 수 없다. 이는 크기가 128×128인 블록이 이진 분할을 이용하여 분할될 수 없고, 크기가 64×64인 블록이 이진 분할을 이용하여 분할될 수 있음을 의미한다.
샘플의 개수의 관점에서, 최소 이진 트리 크기(MinBtSizeY)가 이진 분할 방법을 이용하여 분할될 수 있는 코딩 블록의 최소 루마 크기(폭 또는 높이)로서 정의될 수 있다. 일 예로서, MinBtSizeY가 16이면, 폭 또는 높이에 있어서 크기가 더 작거나 또는 동일한 코딩 블록이 이진 분할을 이용하여 분할될 수 없다. 즉, 8×8의 크기를 가진 블록이 이진 분할을 이용하여 분할될 수 없고 또한 32×32의 크기를 가진 블록이 이진 분할을 이용하여 분할될 수 있음을 의미한다.
최소 쿼드 트리 크기(MinQtSizeY)가 코딩 트리 유닛(Coding Tree Unit, CTU)의 쿼드트리 분할로 인해 생성되는 리프 블록(leaf block)의 최소 루마 크기로서 정의될 수 있다. 최소 루마 크기는 샘플의 개수로 블록의 폭 또는 높이를 나타낼 수 있다. 정사각형 블록의 경우, 이 크기가 폭과 높이를 함께 나타낼 수도 있다. 일 예로서, MinQtSizeY가 16이면, 16보다 작거나 같은 크기를 가진 코딩 블록이 쿼드트리 분할 방법을 이용하여 자식 블록으로 분할될 수 없다. 관례상, MinQtSizeY (와 MinQtSizeY의 시그널링된 구문 요소(‘log2_min_qt_size_intra_slices_minus2'와 'log2_min_qt_size_inter_slices_minus2')가 최소 쿼드트리 블록 크기를 나타내는 데 사용된다. 특히, 이 크기의 구문 요소는 간접적인 구문 요소일 수 있고, 이는 log2_min_qt_size_intra_slices_minus2가 최소 쿼드트리 블록의 루마 샘플의 개수의 (밑이 2인) 이진 로그일 수 있음을 의미한다.
최소 변환 블록 크기(MinTbSizeY)가, 샘플의 개수의 관점에서, 삼진 분할 방법을 이용하여 분할될 수 있는 코딩 블록의 최소 변환 블록 크기로서 정의될 수 있다. 일 예로서, MinTbSizeY가 16이면, 폭 또는 높이에 있어서 크기가 작거나 같은 코딩 블록이 삼진 분할을 이용하여 분할될 수 없다. 이는 8×8의 크기를 가진 블록이 삼진 분할을 이용하여 분할될 수 없지만, 32×32의 크기를 가진 블록이 삼진 분할을 이용하여 분할될 수 있음을 의미한다.
최대 멀티형 트리 깊이(maximum multi-type tree depth, MaxMttDepth)가 쿼드트리 리프 또는 CTU의 멀티형 트리 분할로 인해 생성되는 코딩 유닛들의 최대 계층 깊이로서 정의될 수 있다. CTU 또는 코딩 트리 블록(Coding Tree Block, CTB)은 픽처 프레임을 분할하는 데 사용되는 최대 블록 크기를 말한다. MaxMttDepth는 자식 블록을 획득하는 데 적용될 수 있는 연속적인 이진 분할이나 삼진 분할의 횟수에 대한 상한을 말한다. 일 예로서, CTU 크기가 128×128(폭이 128이고, 높이가 128임)이고, MaxMttDepth가 1이라고 가정하면, 각각의 부모 블록(128×128의 크기)은 이진 분할을 이용하여 2개의 128×64 자식 블록으로 먼저 분할될 수 있다. 하지만, 허용되는 이진 분할의 최대 횟수에 도달했기 때문에, 자식 블록은 어떤 연속적인 이진 분할(그 결과, 128×32 또는 64×64 자식 블록이 생성됨)을 적용할 수 없다. MaxMttDepth가 최대 이진 분할 깊이 또는 최대 삼진 분할 깊이, 또는 동시에 최대 이진 분할 깊이와 최대 삼진 분할 깊이를 제어할 수 있다는 것을 유의해야 한다. MaxMttDepth가 동시에 이진 분할 깊이와 삼진 분할 깊이를 모두 제어하면, 하나의 이진 분할 다음의 하나의 삼진 분할이 2개의 계층적 분할로 계산될 수 있다. 일반적으로, MaxMttDepth (와 MaxMttDepth의 구문 요소(‘max_mtt_hierarchy_depth_inter_slices'와 'max_mtt_hierarchy_depth_intra_slices')는 멀티형 트리로 인해 생성되는 코딩 유닛들의 최대 계층 깊이를 나타내는 데 사용된다.
또한,'pic_width_in_luma_samples'는 픽처 크기 요소, 즉 루마 샘플의 단위로 디코딩되는 각각의 픽처의 폭을 지정하는 구문 요소이다. Pic_width_in_luma_samples는 일반적으로 0이 아니어야 하고, MinCbSizeY의 정수배이어야 한다.
마찬가지로, 'pic_height_in_luma_samples'는 픽처 크기 요소, 즉 루마 샘플의 단위로 디코딩되는 각각의 픽처의 높이를 지정하는 구문 요소이다. Pic_height_in_luma_samples는 일반적으로 0이 아니어야 하고, MinCbSizeY의 정수배이어야 한다.
비디오 코딩의 목표 중 하나가 가능하면 낮은 속도로 가능하면 고품질을 제공하는 것이다. 이 목표에 기여할 수 있는 기여 요인 중 하나가 비트스트림 구조의 효율을 높이는 것이다.
전술한 문제를 고려하여, 본 발명의 실시예는 픽처 분할의 현재 구현을 향상시키는 것을 목표로 한다. 특히, 서로 다른 픽처 분할 방법, 즉 이진 트리, 쿼드트리, 및 삼진 트리 분할 방법의 이용 가능성과 유연성을 높이는 것이 목표이다. 더 많은 픽처 크기의 인코딩 및 디코딩을 허용하는 것이 목표이다.
본 발명의 실시예는 동봉된 독립 청구항에 제공되어 있다. 본 발명의 유리한 구현은 종속 청구항에 더 정의되어 있다.
전술한 목적과 기타 목적은 독립 청구항의 주제에 의해 달성된다. 추가 구현 형태는 종속 청구항, 설명, 및 도면으로부터 명백하다.
특정 실시예는 첨부된 독립 청구항에 요약되어 있고, 다른 실시예는 종속 청구항에 요약되어 있다.
본 발명의 실시예에서, 특히 파티션 제한 요소들 간의 관계를 설정하고 인코딩된 픽처와 함께 비트스트림으로 파티션 제한 요소들을 시그널링함으로써 새로운 파티셔닝 규칙이 구축된다. 파티션 제한 요소들은 비디오 데이터를 비트스트림으로 인코딩하고 비트스트림을 디코딩된 비디오 데이터로 디코딩하는 데 사용될 수 있다.
제1 양태에 따르면, 본 발명은 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 장치에 관한 것이다. 상기 장치는, 비트스트림(101)으로부터 구문 요소(syntax element)를 획득하고; 쿼드트리 분할(quadtree splitting)로 인해 생성되는 루마 리프 블록(luma leaf block)의 루마 샘플의 최소 크기(MinQtSizeY(105))에 관한 정보를 획득하며; MinQtSizeY(105)에 관한 상기 정보와 상기 획득된 구문 요소에 기초하여, 이진 트리 분할을 이용하여 분할될 수 있는 루마 루트 블록의 루마 샘플의 최대 크기(MaxBtSizeY(102))를 결정하도록 구성된 회로를 포함한다.
이러한 파티션 제한 요소들 간의 관계를 설정하여 새로운 분할 규칙을 정의함으로써, 상기 디코딩 장치는 서로 다른 픽처 분할 방법, 특히 쿼드트리 분할과 이진 트리 분할의 이용 가능성과 유연성을 높이는 것을 용이하게 한다.
제1 양태에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법의 가능한 구현 형태에서, 상기 회로는 상기 MaxBtSizeY의 하한이 상기 MinQtSizeY라는 것을 고려하여 상기 MaxBtSizeY를 결정하도록 구성된다.
제1 양태, 또는 전술한 구현에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법의 가능한 구현 형태에서, 상기 구문 요소는 상기 MinQtSizeY(105)의 밑이 2인 로그와 상기 MaxBtSizeY(102)의 밑이 2인 로그 간의 차이의 구문 요소(301)이다.
따라서, 상기 적절한 파티션 제한 요소들은 예를 들어 상기 디코더 측에서, 동시에 상기 비트스트림 내의 정보 오버헤드를 줄이면서 용이하게 추정될 수 있다. 차이가 관계의 한 예이다. 하지만, 상기 관계는 MinQtSizeY로부터 MaxBtSizeY를 추정할 수 있게 하는 비례 요인 또는 계산 방식 등일 수도 있다.
제1 양태, 또는 전술한 구현에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법의 가능한 구현 형태에서, 상기 구문 요소는 상기 MinQtSizeY(105)와 상기 MaxBtSizeY(102) 간의 차이의 구문 요소(301)이고, 상기 차이의 구문 요소는 log2_diff_max_bt_size_min_qt_size, 즉 밑이 2인 로그 스케일로 상기 차이를 시그널링하는 것일 수 있다. 이러한 차이 구문 요소는 상기 차이를 시그널링하는 간결한 방법을 제공한다.
제1 양태, 또는 전술한 구현에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법의 가능한 구현 형태에서, 상기 회로는 쿼드트리 리프 블록의 멀티형 트리 분할로 인해 생성되는 코딩 유닛의 최대 계층 깊이(MaxMttDepth)에 기초하여 상기 비트스트림으로부터 상기 구문 요소를 획득하도록 구성된다. 따라서, 상기 적절한 파티션 제한 요소들은, 예를 들어 상기 디코더 측에서, 동시에 상기 비트스트림의 정보 오버헤드를 줄이면서 추정될 수 있다.
추가적으로 또는 대안적으로, 상기 회로는, 상기 MaxMttDepth가 0이면, 상기 비트스트림으로부터 상기 MaxBtSizeY의 어느 구문 요소를 획득하지 않도록 구성될 수 있다.
추가적으로 또는 대안적으로, 상기 회로는, 상기 MaxMttDepth(103)가 0이 아니면, 상기 비트스트림(101)으로부터 상기 구문 요소를 획득하지 않도록 구성될 수 있다.
제2 양태에 따르면, 본 발명은 인코딩된 픽처를 포함하는 비트스트림을 생성하거나 또는 처리하기 위한 장치에 관한 것으로, 상기 장치는 쿼드트리 분할로 인해 생성되는 리프 블록의 최소 루마 크기(MinQtSizeY)를 결정하고, 상기 MinQtSizeY에 기초하여, 이진 트리 분할을 이용하여 분할될 코딩 블록의 최대 루마 크기(MaxBtSizeY)를 결정하며, 상기 결정된 MinQtSizeY에 관한 정보를 상기 비트스트림에 포함한다(포함하도록 구성된다).
이 방법은, 간결한 구문을 생성하고 또한 디코더로 하여금 상기 제약 파라미터를 효율적으로 추정할 수 있게 하는 효율적인 인코더 구현을 가능하게 한다. 상기 디코더 측에 대해 앞서 언급한 장점들도 비트스트림이 생성되는 상기 인코더 측에도 적용된다.
제2 양태 또는 전술한 구현에 따른 인코딩된 픽처를 포함하는 비트스트림을 생성하거나 또는 처리하기 위한 방법의 가능한 구현 형태에서, 상기 장치(상기 장치의 처리 회로)는 상기 MaxBtSizeY의 하한이 상기 MinQtSizeY라는 것을 고려하여 상기 MaxBtSizeY를 결정하도록 구성된다.
제2 양태 또는 전술한 구현에 따른 인코딩된 픽처를 포함하는 비트스트림을 생성하거나 또는 처리하기 위한 방법의 가능한 구현 형태에서, 비트스트림을 생성하거나 또는 처리하기 위한 상기 장치는 추가적으로, 상기 MinQtSizeY(105)의 밑이 2인 로그와 상기 MaxBtSizeY(102)의 밑이 2인 로그 간의 차이의 구문 요소를 상기 비트스트림에 포함하도록 구성될 수 있다.
제2 양태 또는 전술한 구현에 따른 인코딩된 픽처를 포함하는 비트스트림을 생성하거나 또는 처리하기 위한 방법의 가능한 구현 형태에서, 상기 구문 요소는 상기 MinQtSizeY(105)와 상기 MaxBtSizeY(102) 간의 차이의 구문 요소(301)이고, 상기 차이의 구문 요소는 밑이 2인 로그 스케일로 상기 차이를 시그널링하는 것이다.
제2 양태 또는 전술한 구현에 따른 인코딩된 픽처를 포함하는 비트스트림을 생성하거나 또는 처리하기 위한 방법의 가능한 구현 형태에서, 상기 장치는 멀티형 트리 분할로 인해 생성되는 코딩 유닛의 최대 계층 깊이(MaxMttDepth)에 따라 MaxBtSizeY의 구문 요소를 상기 비트스트림에 포함하도록 구성된다.
추가적으로 또는 대안적으로, 상기 장치는, 상기 MaxMttDepth가 0이면, 상기 MaxBtSizeY의 어느 구문 요소를 상기 비트스트림에 포함하지 않도록 구성된다.
추가적으로 또는 대안적으로, 상기 장치는, 상기 MaxMttDepth가 0이 아니면, 상기 MaxBtSizeY의 어느 구문 요소를 상기 비트스트림에 포함하도록 구성된다.
제3 양태에 따르면, 본 발명은 (인코딩된 픽처를 포함하는) 비트스트림을 생성하거나 또는 처리하기 위해 제공되는 방법에 관한 것으로, 상기 방법은, 쿼드트리 분할로 인해 생성되는 리프 블록의 최소 루마 크기(MinQtSizeY)를 결정하는 단계; 상기 MinQtSizeY에 기초하여 이진 트리 분할을 이용하여 분할될 코딩 블록의 최대 루마 크기(MaxBtSizeY)를 결정하는 단계; 및 상기 결정된 MinQtSizeY(105)에 관한 정보를 상기 비트스트림에 포함하는 단계를 포함한다.
제4 양태에 따르면, 본 발명은 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위해 제공되는 방법에 관한 것으로, 상기 방법은, 상기 비트스트림(101)으로부터 구문 요소를 획득하는 단계; 쿼드트리 분할로 인해 생성되는 루마 리프 블록의 루마 샘플의 최소 크기(MinQtSizeY(105))에 관한 정보를 획득하는 단계; MinQtSizeY(105)에 관한 상기 정보와 상기 획득된 구문 요소에 기초하여, 이진 트리 분할을 이용하여 분할될 수 있는 루마 루트 블록의 루마 샘플의 최대 크기(MaxBtSizeY(102))를 결정하는 단계를 포함한다.
여기서, 상기 방법은 추가적으로, 상기 MaxBtSizeY에 기초하여 이진 분할이 픽처 블록에 적용되도록 허용되는지 여부를 판정하는 단계; 상기 판정의 결과에 기초하여 상기 픽처 블록의 코딩 블록을 획득하는 단계; 및 상기 코딩 블록의 재구성된 샘플 값을 획득하는 단계를 포함할 수 있다.
여기서, 상기 픽처 블록은 상기 인코딩된 픽처의 루마 블록일 수 있다.
여기서, 상기 구문 요소는 상기 MaxBtSizeY(102)의 밑이 2인 로그와 상기 MinQtSizeY(105)의 밑이 2인 로그 간의 차이를 지정할 수 있거나; 또는 상기 구문 요소는 상기 MaxBtSizeY와 상기 MinQtSizeY 간의 상기 차이를 지정할 수 있다.
여기서, 상기 구문 요소는 상기 비트스트림의 슬라이스 헤더에서 유래할 수 있다.
본 발명의 제3 양태에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법은, 본 발명의 제1 양태에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 장치에 의해 수행될 수 있다. 본 발명의 제1 양태에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법의 추가적인 특징과 구현 형태는, 본 발명의 제3 양태에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 장치의 특징과 구현 형태에 대응한다.
본 발명의 제4 양태에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법은, 본 발명의 제2 양태에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 장치에 의해 수행될 수 있다. 본 발명의 제2 양태에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법의 추가적인 특징과 구현 형태는, 본 발명의 제4 양태에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 장치의 특징과 구현 형태에 대응한다.
제2 양태에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법은 제1 양태에 따른 제1 장치의 구현 형태에 대응하는 구현 형태로 확장될 수 있다. 이런 이유로, 상기 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법의 구현 형태가 상기 제1 장치의 대응하는 구현 형태의 특징을 포함한다.
제4 양태에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법의 장점은, 제3 양태에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법의 대응하는 구현 형태에 대한 장점과 동일하다.
제5 양태에 따르면, 본 발명은 비디오 스트림을 디코딩하기 위한 장치에 관한 것으로, 상기 장치는 프로세서와 메모리를 포함한다. 상기 메모리는 상기 프로세서로 하여금 제3 양태에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법을 수행하게 하는 명령을 저장하고 있다.
제6 양태에 따르면, 본 발명은 비디오 스트림를 인코딩하기 위한 장치에 관한 것으로, 상기 장치는 프로세서와 메모리를 포함한다. 상기 메모리는 상기 프로세서로 하여금 제4 양태에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법을 수행하게 하는 명령을 저장하고 있다.
제7 양태에 따르면, 컴퓨터 판독가능 저장 매체가 제안된다. 실행될 때 하나 이상의 프로세서로 하여금 비디오 데이터를 코딩하게 하도록 구성된 명령이 상기 컴퓨터 판독가능 저장 매체에 저장된다. 상기 명령은 상기 하나 이상의 프로세서로 하여금 제3 양태, 또는 제4 양태, 또는 제3 양태나 제4 양태의 어느 가능한 실시예에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법을 수행하게 한다.
제8 양태에 따르면, 본 발명은 컴퓨터 프로그램에 관한 것으로, 상기 컴퓨터 프로그램은 컴퓨터 상에서 실행될 때 제3 양태, 또는 제4 양태, 또는 제3 양태나 제4 양태의 어느 가능한 실시예에 따른 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법을 수행하기 위한 프로그램 코드를 포함한다.
첨부 도면과 아래의 설명에서는 하나 이상의 실시예의 세부사항이 제시된다. 다른 특징, 목적, 및 이점은 설명, 도면, 및 청구 범위로부터 명백해질 것이다.
일 실시예에 따르면, 상기 프로그램 코드가 장치의 하나 이상의 프로세서에 의해 실행될 때 전술한 인코딩된 픽처를 포함하는 비트스트림을 디코딩하거나 또는 처리하기 위한 방법 중 어느 것을 수행하도록 상기 장치를 제어하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품이 제공된다.
명확성을 위해, 본 명세서에 개시된 실시예 중 어느 하나가 하나 이상의 다른 실시예와 조합되어 본 개시의 범위 내에서 새로운 실시예를 생성할 수 있다.
이러한 특징 및 다른 특징은 첨부 도면과 청구 범위와 함께 다음의 상세한 설명으로부터 더 명확하게 이해할 수 있을 것이다.
본 출원에서 설명된 모든 장치, 요소, 유닛, 및 수단이 소프트웨어 요소 또는 하드웨어 요소 또는 이들의 어떤 종류의 조합으로 구현될 수 있다는 것을 유의해야 한다. 본 출원에서 설명된 다양한 엔티티에 의해 수행되는 모든 단계뿐만 아니라 다양한 엔티티에 의해 수행되도록 설명된 기능은, 각각의 엔티티가 각각의 단계와 기능을 수행하도록 적응되거나 또는 구성된다는 것을 나타내려는 것이다. 특정 실시예의 다음 설명에서, 외부 엔티티에 의해 수행될 특정 기능이나 단계가 이러한 특정 단계나 기능을 수행하는 엔티티의 특정 세부 요소의 설명에 반영되지 않더라도, 이러한 방법과 기능이 각각의 소프트웨어 또는 하드웨어 요소, 또는 이들의 어떤 종류의 조합으로 구현될 수 있다는 것이 당업자에게 명확해야 한다.
구체적인 실시예의 다음의 설명에서 전술한 양태와 구현 형태에 대해 첨부 도면을 참조하여 설명할 것이다.
도 1은 본 발명의 일 실시예에 따른 장치를 나타내는 도면이다.
도 2는 본 발명의 제2 특정 실시예에 따른 장치에 대한 SPS RBSP 구문을 나타내는 도면이다.
도 3은 본 발명의 제2 특정 실시예에 따른 장치에 대한 슬라이스 헤더 구문을 나타내는 도면이다.
도 4는 본 발명의 제3 특정 실시예에 따른 장치에 대한 SPS RBSP 구문을 나타내는 도면이다.
도 5는 본 발명의 제4 특정 실시예에 따른 장치에 대한 슬라이스 헤더 구문을 나타내는 도면이다.
도 6은 본 발명의 제4 특정 실시예에 따른 장치에 대한 슬라이스 헤더 구문을 나타내는 도면이다.
도 7은 본 발명의 일 실시예에 따른 방법을 나타내는 도면이다.
도 8은 종래의 SPS RBSP 구문을 나타내는 도면이다.
도 9는 종래의 슬라이스 헤더 구문을 나타내는 도면이다.
도 10은 본 발명의 일 실시예에 따른 장치를 나타내는 도면이다.
도 11a는 본 개시의 실시예를 구현할 수 있는 예시적인 코딩 시스템을 나타내는 블록도이다.
도 11b는 본 개시의 실시예를 구현할 수 있는 다른 예시적인 코딩 시스템을 나타내는 블록도이다.
도 12는 본 개시의 실시예를 구현할 수 있는 예시적인 비디오 인코더를 나타내는 블록도이다.
도 13은 본 개시의 실시예를 구현할 수 있는 비디오 디코더의 예를 나타내는 블록도이다.
도 14는 본 개시의 일 실시예에 따른 네트워크 장치를 개략적으로 나타내는 도면이다.
도 15는 예시적인 일 실시예에 따라 도 11a의 소스 장치(12)와 목적지 장치(14) 중 하나 또는 둘 다로서 사용될 수 있는 장치를 단순화하여 나타낸 블록도이다.
도 16a 내지 도 16f는 VVC의 서로 다른 CU 분할 모드를 나타내는 도면이다.
도 17a는 HD(1920×1080) 하단 경계 CTU(128×128) 강제 QT 파티션을 나타내는 도면이다.
도 17a는 본 개시의 일 실시예에 따른 HD(1920×1080) 하단 경계 CTU(128×128) 강제 QT 파티션을 나타내는 도면이다.
도 18은 예시적인 경계 정의를 나타내는 도면이다.
도 19a는 본 개시의 일 실시예에 따른 코너 케이스 강제 QTBT 파티션(corner case forced QTBT partition)의 예를 나타내는 도면이다.
도 19b는 본 개시의 일 실시예에 따른, 코너에 위치한 블록에 대한 강제 QTBT 파티션의 예를 나타내는 도면이다.
도 20은 경계 정의의 일 실시예를 나타내는 도면이다.
도 21은 쿼드 트리-이진 트리(quad-tree-binary-tree, QTBT) 구조를 이용하는 블록 분할의 예를 나타내는 예시도이다.
도 22는 도 6의 QTBT 구조를 이용하는 블록 분할에 대응하는 트리 구조의 예를 나타내는 예시도이다.
도 23은 수평 삼진 트리 파티션 유형의 예를 나타내는 예시도이다.
도 24는 수직 삼진 트리 파티션 유형의 예를 나타내는 예시도이다.
도 25는 본 발명의 실시예를 구현하도록 구성된 비디오 인코더의 예를 나타내는 블록도이다.
도 26은 본 발명의 실시예를 구현하도록 구성된 비디오 디코더의 예시적인 구조를 나타내는 블록도이다.
도 27은 콘텐츠 전달 서비스를 구현하는 콘텐츠 공급 시스템(3100)의 예시적인 구조를 나타내는 블록도이다.
도 28은 단말 장치의 예의 구조를 나타내는 블록도이다.
이하에서는 하나 이상의 실시예의 예시적인 구현이 제공되지만, 개시된 시스템 및/또는 방법이 현재 알려져 있거나 또는 존재하는지 여부와 무관하게 어떠한 수의 기술을 이용하여 구현될 수 있다는 것을 처음부터 이해해야 한다. 본 개시는 본 명세서에 예시되고 설명된 예시적인 설계와 구현을 포함하여 아래에 예시된 예시적인 구현, 도면, 및 기술로 제한되지 않아야 하며, 등가물의 전체 범위와 함께 첨부된 청구항의 범위 안에서 수정될 수 있다.
다음의 설명에서, 본 개시의 일부를 형성하고 예시로서 본 발명의 실시예의 특정 양태 또는 본 발명의 실시예가 사용될 수 있는 특정 양태를 나타내는 첨부 도면을 참조한다. 본 발명의 실시예가 다른 양태에 사용될 수 있고 도면에 도시되지 않은 구조적 또는 논리적 변경을 포함할 수 있다고 이해해야 한다. 따라서, 다음의 상세한 설명은 제한적인 의미로 받아들여서는 안 되며, 본 발명의 범위는 첨부된 청구항에 의해 정의된다.
예를 들어, 설명된 방법과 관련된 개시는 설명된 방법을 수행하도록 구성된 대응하는 장치 또는 시스템에 대해 참일 수도 있고 그 반대의 경우도 마찬가지라고 이해해야 한다. 예를 들어, 하나 또는 복수의 특정 방법 단계가 설명되면, 심지어 하나 이상의 유닛이 도면에 명시적으로 설명하거나 또는 예시되지 않더라도, 대응하는 장치가 전술한 하나 또는 복수의 방법 단계를 수행하기 위해 이러한 하나 또는 복수의 유닛(예를 들어, 하나 또는 복수의 단계를 수행하는 하나의 유닛, 또는 복수의 단계 중 하나 이상의 단계를 각각 수행하는 복수의 유닛), 예를 들어 기능 유닛을 포함할 수 있다. 반면에, 예를 들어, 특정 장치가 하나 또는 복수의 유닛, 예를 들어 기능 유닛에 기초하여 설명되면, 비록 이러한 하나 또는 복수의 단계가 도면에 명시적으로 설명되거나 또는 도시되지 않더라도, 대응하는 방법이 하나 또는 복수의 유닛의 기능을 수행하는 하나의 단계(예를 들어, 하나 또는 복수의 유닛의 기능을 수행하는 하나의 단계, 또는 하나 이상의 기능을 각각 수행하는 복수의 단계)를 포함할 수 있다. 또한, 본 명세서에서 설명된 다양한 예시적인 실시예 및/또는 양태의 특징들은 특별히 달리 언급하지 않는 한 서로 결합될 수 있다고 이해해야 한다.
비디오 코딩이란 일반적으로 비디오 또는 비디오 시퀀스를 형성하는 픽처(picture)의 시퀀스를 처리하는 것을 말한다. 비디오 코딩 분야에서는 "픽처"라는 용어 대신에 "프레임" 또는 "이미지"라는 용어가 동의어로 사용될 수 있다. 본 출원(또는 본 개시)에서 사용되는 비디오 코딩은 비디오 인코딩 또는 비디오 디코딩을 나타낸다. 비디오 인코딩은 (더 효율적인 저장 및/또는 전송을 위해) 비디오 픽처를 표현하는 데 필요한 데이터의 양을 (예를 들어, 압축에 의해) 줄이기 위해 원본 비디오 픽처를 처리하는 것을 일반적으로 포함하는 소스 측에서 수행된다. 비디오 디코딩은 목적지 측에서 수행되고, 일반적으로 비디오 픽처를 재구성하기 위해 인코더에 비교할 때 역처리를 포함한다. 비디오 픽처(또는 일반적으로 나중에 설명되는 바와 같이 픽처)의 "코딩"을 언급하는 실시예가 비디오 시퀀스에 대한 "인코딩"또는 "디코딩"에 관한 것이라고 이해해야 한다. 인코딩 파트와 디코딩 파트의 조합은 코덱(Coding and Decoding, CODEC)이라고도 한다.
무손실 비디오 코딩의 경우, 원본 비디오 픽처가 재구성될 수 있다. 즉, 재구성된 비디오 픽처가 원본 비디오 픽처와 동일한 품질을 가지고 있다(저장 또는 전송 중에 전송 손실이나 기타 데이터 손실이 없다고 가정한다). 손실 비디오 코딩의 경우, 디코더에서 완전히 재구성될 수 없는 비디오 픽처를 나타내는 데이터의 양을 줄이기 위해, (예를 들어, 양자화에 의해) 추가적인 압축이 수행된다. 즉, 재구성된 비디오 픽처의 품질이 원본 비디오 픽처의 품질에 비해 낮거나 또는 나쁘다.
H.261 이후의 여러 비디오 코딩 표준은 "손실 하이브리드 비디오 코덱"의 그룹에 속한다(즉, 변환 영역에서 양자화를 적용하기 위한 샘플 영역의 공간 및 시간 예측과 2D 변환 코딩을 결합한다). 비디오 시퀀스의 각각의 픽처는 일반적으로 중첩되지 않는 블록의 집합으로 분할되고, 이 코딩은 일반적으로 블록 레벨에서 수행된다. 즉, 인코더에서, 비디오가 예를 들어 공간(인트라 픽처(intra picture)) 예측과 시간(인터 픽처(inter picture)) 예측을 이용하여 예측 블록을 생성하고, 현재 블록(현재 처리된/처리될 블록)에서 예측 블록을 차감하여 잔차 블록(residual block)을 획득하며, 잔차 블록을 변환하고 변환 영역에서 잔차 블록을 양자화하여 전송될 데이터의 양을 줄임(압축)으로써 일반적으로 블록(비디오 블록) 레벨에서 처리되는 반면, 디코더에서는, 인코더와 비교할 때 역처리가 인코딩되거나 또는 압축된 블록에 부분적으로 적용됨으로써 표현을 위해 현재 블록을 재구성한다. 또한, 인코더와 디코더가 동일한 예측(예를 들어, 인트라 예측과 인터 예측) 및/또는 후속 블록을 처리하기 위한, 즉 코딩하기 위한 재구성을 생성할 수 있도록, 인코더가 디코더 처리 루프를 복제할 것이다.
본 명세서에서 사용되는 바와 같이, "블록"이라는 용어가 픽처 또는 프레임의 일부일 수 있다. 설명의 편의를 위해, 본 명세서에서는 고효율 비디오 코딩(High-Efficiency Video Coding, HEVC) 또는 JCT-VC(Joint Collaboration Team on Video Coding)에 의해 개발된 다용도 비디오 코딩(Versatile Video oding)의 참조 소프트웨어를 참조하여 본 발명의 실시예에 대해 설명한다. 당업자라면 본 발명의 실시예가 HEVC 또는 VVC로 한정되지 않는다고 이해할 것이다. 블록은 코딩 유닛(coding unit, CU), 예측 유닛(prediction unit, PU), 및 변환 유닛(transform unit, TU)을 지칭할 수도 있다. HEVC에서, 코딩 트리 유닛(coding tree unit, CTU)이 코딩 트리로 표시되는 쿼드트리 구조를 이용하여 CU로 분할된다. 인터 픽처(시간) 또는 인트라 픽처(공간) 예측을 이용하여 픽처 영역을 코딩할지 여부가 CU 레벨에서 결정된다. 각각의 CU는 PU 분할 유형에 따라 1개, 또는 2개, 또는 4개의 PU로 더 분할될 수 있다. 하나의 PU 내부에서, 동일한 예측 과정이 적용되고, 관련 정보가 PU 단위로 디코더에 전송된다. PU 분할 유형에 기반한 예측 과정을 적용하여 잔차 블록을 획득한 후, CU는 CU에 대한 코딩 트리와 유사한 다른 쿼드트리 구조에 따라 변환 유닛(TU)으로 분할될 수 있다. 비디오 압축 기술의 최신 개발에서, 쿼드트리-ㅇ이이진트리(Qsuad-Tree and Binary Tree) 분할 프레임이 코딩 블록을 분할하는 데 사용된다. QTBT 블록 구조에서, CU는 정사각형 모양 또는 직사각형 모양일 수 있다. 예를 들어, 코딩 트리 유닛(CTU)이 쿼드트리 구조에 의해 먼저 분할된다. 쿼드트리 리프 노드(quadtree leaf node)는 이진 트리 구조로 더 분할된다. 이진 트리 리프 노드는 코딩 유닛(CU)으로 불리며, 그 세분화가 추가적인 분할없이 예측과 변환 처리에 사용된다. 이는 CU, PU, 및 TU가 QTBT 코딩 블록 구조에서 동일한 블록 크기를 가지고 있다는 것을 의미한다. 병렬로, 복수의 파티션, 예를 들어 삼진 트리(Ternary Tree, TT) 파티션도 QTBT 블록 구조와 함께 사용하도록 제안되었다. "디바이스"라는 용어는 "장치", 또는 "디코더", 또는 "인코더"일 수 있다.
다음의 실시예에서, 도 11 내지 도 13에 기초하여 인코더(20), 디코더(30), 및 코딩 시스템(10)에 대해 설명한다.
다음의 설명에서, 본 개시의 일부를 형성하고 또한 본 발명의 실시예의 특정 양태 또는 본 발명의 실시예가 사용될 수 있는 특정 양태를 예시로서 나타내는 첨부 도면을 참조한다. 본 발명의 실시예가 다른 양태에 사용될 수 있고, 도면에 도시되지 않은 구조적 변경 또는 논리적 변경을 포함할 수 있다고 이해해야 한다. 따라서, 다음의 상세한 설명은 제한적인 의미로 받아들여서는 안 되며, 본 발명의 범위는 첨부된 청구항에 의해 정의된다.
예를 들어, 설명된 방법과 관련된 개시는 또한 설명된 방법을 수행하도록 구성된 대응하는 장치 또는 시스템에 대해 참일 수 있고 그 반대의 경우도 마찬가지라고 이해해야 한다. 예를 들어, 하나 또는 복수의 특정 방법 단계가 설명되면, 심지어 하나 이상의 유닛이 도면에 명시적으로 설명하거나 또는 예시되지 않더라도, 대응하는 장치가 전술한 하나 또는 복수의 방법 단계를 수행하기 위해 이러한 하나 또는 복수의 유닛(예를 들어, 하나 또는 복수의 단계를 수행하는 하나의 유닛, 또는 복수의 단계 중 하나 이상의 단계를 각각 수행하는 복수의 유닛), 예를 들어 기능 유닛을 포함할 수 있다. 반면에, 예를 들어, 특정 장치가 하나 또는 복수의 유닛, 예를 들어 기능 유닛에 기초하여 설명되면, 비록 이러한 하나 또는 복수의 단계가 도면에 명시적으로 설명되거나 또는 도시되지 않더라도, 대응하는 방법이 하나 또는 복수의 유닛의 기능을 수행하는 하나의 단계(예를 들어, 하나 또는 복수의 유닛의 기능을 수행하는 하나의 단계, 또는 하나 이상의 기능을 각각 수행하는 복수의 단계)를 포함할 수 있다. 또한, 본 명세서에서 설명된 다양한 예시적인 실시예 및/또는 양태의 특징은 특별히 달리 언급하지 않는 한 서로 결합될 수 있다고 이해해야 한다.
비디오 코딩이란 일반적으로 비디오 또는 비디오 시퀀스를 형성하는 픽처의 시퀀스를 처리하는 것을 말한다. 비디오 코딩 분야에서는 "픽처"라는 용어 대신에 용어 "프레임" 또는 "이미지"라는 용어가 동의어로 사용될 수 있다. 본 출원(또는 본 개시)에서 사용되는 비디오 코딩은 비디오 인코딩 또는 비디오 디코딩을 나타낸다. 비디오 인코딩은 (더 효율적인 저장 및/또는 전송을 위해) 비디오 픽처를 표현하는 데 필요한 데이터의 양을 (예를 들어, 압축에 의해) 줄이기 위해 원본 비디오 픽처를 처리하는 것을 일반적으로 포함하는 소스 측에서 수행된다. 비디오 디코딩은 목적지 측에서 수행되며 일반적으로 비디오 픽처를 재구성하기 위해 인코더와 비교할 때 역처리를 포함한다. 비디오 픽처(또는 일반적으로 나중에 설명되는 바와 같이 픽처)의 "코딩"을 언급하는 실시예가 비디오 시퀀스에 대한 "인코딩" 또는 "디코딩"에 관한 것이라고 이해해야 한다. 인코딩 부분과 디코딩 부분의 조합을 코덱(Coding and Decoding, CODEC)이라고도 한다.
무손실 비디오 코딩의 경우, 원본 비디오 픽처가 재구성될 수 있다. 즉, 재구성된 비디오 픽처가 원본 비디오 픽처와 동일한 품질을 가지고 있다(저장 또는 전송 중에 전송 손실이나 기타 데이터 손실이 없다고 가정한다). 손실 비디오 코딩의 경우, 디코더에서 완전히 재구성될 수 없는 비디오 픽처를 나타내는 데이터의 양을 줄이기 위해, (예를 들어, 양자화에 의해) 추가적인 압축이 수행된다. 즉, 재구성된 비디오 픽처의 품질이 원본 비디오 픽처의 품질에 비해 낮거나 또는 나쁘다.
H.261 이후의 여러 비디오 코딩 표준은 "손실 하이브리드 비디오 코덱"의 그룹에 속한다(즉, 변환 영역에서 양자화를 적용하기 위한 샘플 영역의 공간 및 시간 예측과 2D 변환 코딩을 결합한다). 비디오 시퀀스의 각각의 픽처는 일반적으로 중첩되지 않는 블록의 집합으로 분할되고, 이 코딩은 일반적으로 블록 레벨에서 수행된다. 즉, 인코더에서, 비디오가 예를 들어 공간(인트라 픽처) 예측과 시간(인터 픽처) 예측을 이용하여 예측 블록을 생성하고, 현재 블록(현재 처리된/처리될 블록)에서 예측 블록을 차감하여 잔차 블록을 획득하며, 잔차 블록을 변환하고 변환 영역에서 잔차 블록을 양자화하여 전송될 데이터의 양을 줄임(압축함)으로써 일반적으로 블록(비디오 블록) 레벨에서 처리되는 반면, 디코더에서는, 인코더와 비교할 때 인코딩되거나 또는 압축된 블록에 역처리가 부분적으로 적용됨으로써 표현을 위해 현재 블록을 재구성한다. 또한, 인코더와 디코더가 동일한 예측(예를 들어, 인트라 예측과 인터 예측) 및/또는 후속 블록을 처리하기 위한, 즉 코딩하기 위한 재구성을 생성할 수 있도록, 인코더가 디코더 처리 루프를 복제할 것이다.
본 명세서에서 사용되는 바와 같이, "블록"이라는 용어가 픽처 또는 프레임의 일부일 수 있다. 설명의 편의를 위해, 본 명세서에서는 HEVC(High-Efficiency Video Coding) 또는 JCT-VC(Joint Collaboration Team on Video Coding)에 의해 개발된 VVC(Versatile Video oding)의 참조 소프트웨어를 참조하여 본 발명의 실시예에 대해 설명된다. 설명의 편의를 위해, 본 명세서에서는 ITU-T 비디오 코딩 전문가 그룹(Video Coding Experts Group, VCEG)과 ISO/IEC 동영상 전문가 그룹(Motion Picture Experts Group, MPEG)의 JCT-VC(oint Collaboration Team on Video Coding)에 의해 개발된 고효율 비디오 코딩(High-Efficiency Video Coding, HEVC) 또는 참조 소프트웨어를 참조하여 본 발명의 실시예에 대해 설명한다. 당업자라면 본 발명의 실시예가 HEVC 또는 VVC로 한정되지 않는다고 이해할 것이다. 블록은 코딩 유닛(coding unit, CU), 예측 유닛(prediction unit, PU), 및 변환 유닛(transform unit, TU)을 지칭할 수도 있다. HEVC에서, 코딩 트리 유닛(coding tree unit, CTU)이 코딩 트리로 표시되는 쿼드트리 구조를 이용하여 CU로 분할된다. 인터 픽처(시간) 또는 인트라 픽처(공간) 예측을 이용하여 픽처 영역을 코딩할지 여부가 CU 레벨에서 결정된다. 각각의 CU는 PU 분할 유형에 따라 1개, 또는 2개, 또는 4개의 PU로 더 분할될 수 있다. 하나의 PU 내부에서, 동일한 예측 과정이 적용되고, 관련 정보가 PU 단위로 디코더에 전송된다. PU 분할 유형에 기반한 예측 과정을 적용하여 잔차 블록을 획득한 후, CU는 CU에 대한 코딩 트리와 유사한 다른 쿼드트리 구조에 따라 변환 유닛(TU)으로 분할될 수 있다. 비디오 압축 기술의 최신 개발에서, 쿼드트리-이진트리(Quad-Tree and Binary Tree, QTBT) 분할 프레임이 코딩 블록을 분할하는 데 사용된다. QTBT 블록 구조에서, CU는 정사각형 모양 또는 직사각형 모양일 수 있다. 예를 들어, 코딩 트리 유닛(CTU)이 쿼드트리 구조에 의해 먼저 분할된다. 쿼드트리 리프 노드는 이진 트리 구조로 더 분할된다. 이진 트리 리프 노드는 코딩 유닛(CU)으로 불리며, 그 세분화가 추가적인 분할 없이 예측과 변환 처리에 사용된다. 이는 CU, PU, 및 TU가 QTBT 코딩 블록 구조에서 동일한 블록 크기를 가지고 있다는 것을 의미한다. 병렬로, 복수의 파티션, 예를 들어 삼진 트리(Ternary Tree, TT) 파티션도 QTBT 블록 구조와 함께 사용하기 위해 제안되었다. "디바이스"라는 용어는 "장치", 또는 "디코더", 또는 "인코더"일 수 있다.
다음의 실시예에서, 도 11 내지 도 13 에 기초하여 인코더(20), 디코더(30), 및 코딩 시스템(10)에 대해 설명한다.
도 11a는 예시적인 코딩 시스템(10), 예를 들어 본 출원(본 개시)의 기술을 사용할 수 있는 비디오 코딩 시스템(10)을 나타내는 개념적인 블록도 또는 개략적인 블록도이다. 비디오 코딩 시스템(10)의 인코더(20)(예를 들어, 비디오 인코더(20))와 디코더(30)(예를 들어 비디오 디코더(30))가 본 출원에서 설명되는 다양한 예에 따른 기술을 수행하도록 구성될 수 있는 장치의 예를 나타낸다. 도 11a에 도시된 바와 같이, 코딩 시스템(10)은, 인코딩된 데이터(13), 예를 들어 인코딩된 픽처(13)를 예를 들어 인코딩된 데이터(13)를 디코딩하기 위한 목적지 장치(14)에 제공하도록 구성된 소스 장치(12)를 포함한다.
소스 장치(12)는 인코더(20)를 포함하고, 추가적으로, 즉 선택적으로, 픽처 소스(16), 전처리 유닛(pre-processing unit, 18), 예를 들어 픽처 전처리 유닛(18), 및 통신 인터페이스 또는 통신 유닛(22)을 포함할 수 있다.
픽처 소스(16)는 어떤 종류의 픽처 캡처 장치, 예를 들어 실제 픽처를 캡처하기 위한 어떤 종류의 픽처 캡처 장치, 및/또는 어떤 종류의 픽처 또는 코멘트(스크린 콘텐츠 코딩의 경우, 스크린 상의 일부 텍스트도 인코딩될 픽처 또는 이미지의 일부로서 고려됨) 생성 장치, 예를 들어 컴퓨터 애니메이션 픽처를 생성하기 위한 컴퓨터 그래픽 프로세서, 또는 실제 픽처, 컴퓨터 애니메이션 픽처(예를 들어, 스크린 콘텐츠, 가상 현실(virtual reality, VR) 픽처) 및/또는 이들의 어떤 조합(예를 들어, 증강 현실(augmented reality, AR) 픽처)을 획득하거나 제공하기 위한 어떤 종류의 장치일 수 있거나 또는 이러한 장치를 포함할 수 있다. 픽처 소스는 전술한 픽처 중 어떤 것을 저장하는 어떤 종류의 메모리 또는 스토리지일 수 있다.
(디지털) 픽처가 강도 값(intensity value)이 있는 2차원 배열 또는 샘플의 행렬이거나 또는 강도 값이 있는 2차원 배열 또는 샘플의 행렬로 간주될 수 있다. 2차원 배열의 샘플을 픽셀(픽처 요소(picture element)의 짧은 형태) 또는 펠(pel)이라고도 한다. 2차원 배열 또는 픽처의 수평 및 수직 방향(또는 축)에 있는 샘플의 개수가 픽처의 크기 및/또는 해상도를 정의한다. 색상을 표현하기 위해, 일반적으로 세 가지 컬러 성분이 사용된다. 즉, 픽처는 3개의 샘플 배열로 표현되거나 또는 3개의 샘플 배열을 포함할 수 있다. RBG 포맷 또는 컬러 공간에서, 픽처가 대응하는 적색, 녹색, 및 청색 샘플 배열을 포함한다. 하지만, 비디오 코딩에서, 각각의 픽셀은 일반적으로 휘도/색차 포맷(chrominance format) 또는 컬러 공간, 예를 들어 YCbCr로 표현되고, YcbCr은 Y로 표시되는 휘도 성분(때로는 대신에 L도 사용됨)와 Cb와 Cr로 표시되는 2개의 색차 성분을 포함한다. 휘도(또는 줄여서 루마(luma)) 성분 Y가 휘도 또는 (예를 들어, 그레이 스케일 픽처에서와 같이) 그레이 레벨 강도를 나타내는 반면, 2개의 색차(또는 줄여서 크로마(croma)) 성분(Cb 및 Cr)은 색도(chromaticity) 또는 색상 정보 성분을 나타낸다. 따라서, YCbCr 포맷의 픽처는 휘도 샘플 값(Y)의 휘도 샘플 배열과 색차 값(Cb 및 Cr)의 2개의 색차 샘플 배열을 포함한다. RGB 포맷의 픽처는 YCbCr 포맷으로 변환되거나 또는 그 반대로 변환될 수 있고, 이 과정은 컬러 변환 또는 전환으로 알려져 있다. 픽처가 단색이면, 픽처는 휘도 샘플 배열만을 포함할 수 있다.
픽처 소스(16)(예를 들어 비디오 소스(16))는 예를 들어 이전에 캡처되거나 생성된 픽처를 포함하거나 또는 저장하는 픽처 메모리, 및/또는 픽처를 수신하거나 또는 획득하기 위한 어떤 종류의 인터페이스(내부 또는 외부)일 수 있다. 카메라는 예를 들어, 로컬 카메라 또는 소스 장치에 통합된 통합 카메라일 수 있고, 메모리는 로컬 메모리 또는 통합 메모리, 예를 들어 소스 장치에 통합된 통합 메모리일 수 있다. 인터페이스는 예를 들어 외부 비디오 소스로부터 픽처를 수신할 외부 인터페이스, 예를 들어 카메라와 같은 외부 사진 캡처 장치, 또는 외부 메모리, 또는 외부 픽처 생성 장치(예를 들어 외부 컴퓨터 그래픽 프로세서, 컴퓨터, 또는 서버)일 수 있다. 상기 인터페이스는 어떤 종류의 인터페이스, 예를 들어 독점적이거나 표준화된 인터페이스 프로토콜에 따라 유선 또는 무선 인터페이스, 광 인터페이스 일 수 있다. 픽처 데이터(17)를 획득하기 위한 인터페이스는 통신 인터페이스(22)와 동일한 인터페이스이거나 또는 통신 인터페이스(22)의 일부일 수 있다.
전처리 유닛(18) 및 전처리 유닛(18)에 의해 수행되는 처리와는 달리, 픽처 또는 픽처 데이터(17)를 원시 픽처(raw picture) 또는 원시 픽처 데이터(17)라고도 할 수 있다.
전처리 유닛(18)은 (원시) 픽처 데이터(17)를 수신하고 픽처 데이터(17)에 대해 전처리를 수행하여 전처리된 픽처(19) 또는 전처리된 픽처 데이터(19)를 획득하도록 구성된다. 전처리 유닛(18)에 의해 수행되는 전처리는, 예를 들어 트리밍(trimming), 컬러 포맷 변환(예를 들어, RGB에서 YCbCr로), 컬러 보정, 또는 노이즈 제거(de-noising)를 포함할 수 있다. 전처리 유닛(18)이 선택적인 구성 요소일 수 있다는 것을 이해할 수 있을 것이다.
인코더(20)(예를 들어 비디오 인코더(20))는 전처리된 픽처 데이터(19)를 수신하고, 인코딩된 픽처 데이터(21)를 제공하도록 구성된다(더 자세한 사항은 예를 들어 도 12 또는 도 14에 기초하여 아래에서 설명할 것이다).
소스 장치(12)의 통신 인터페이스(22)는, 저장 또는 직접 재구성을 위해, 인코딩된 픽처 데이터(21)를 수신하고, 인코딩된 픽처 데이터(21)(또는 인코딩된 픽처 데이터(21)의 어떤 추가로 처리된 버전)를 통신 채널(13)을 통해 다른 장치, 예를 들어 목적지 장치(14) 또는 어떤 다른 장치에 전송하도록 구성될 수 있다.
소스 장치(12)의 통신 인터페이스(22)는, 저장 또는 직접 재구성을 위해, 인코딩된 픽처 데이터(21)를 수신하고, 픽처 데이터(21)를 다른 장치, 예를 들어 목적지 장치(14) 또는 어떤 다른 장치에 전송하거나, 또는 인코딩된 데이터(13)를 저장하거나 및/또는 인코딩된 데이터(13)를 다른 장치, 예를 들어 디코딩 또는 저장을 위해 목적지 장치(14) 또는 어떤 다른 장치에 전송하기 전에, 인코딩된 픽처 데이터(21)를 각각 처리하도록 구성될 수 있다.
목적지 장치(14)는 디코더(30)(예를 들어, 비디오 디코더(30))를 포함하고, 추가적으로, 즉 선택적으로, 통신 인터페이스 또는 통신 유닛(28), 후처리 유닛(post-processing unit, 32), 및 표시 장치(34)를 더 포함할 수 있다.
목적지 장치(14)의 통신 인터페이스(28)는, 예를 들어 소스 장치(12)로부터 직접 또는 어떤 다른 소스로부터, 예를 들어 저장 장치로부터, 예를 들어 인코딩된 픽처 데이터 저장 장치로부터, 인코딩된 픽처 데이터(21)(또는 인코딩된 픽처 데이터(21)의 어떤 추가로 처리된 버전)를 수신하고, 인코딩된 픽처 데이터(21)를 디코더(30)에 제공하도록 구성된다.
목적지 장치(14)의 통신 인터페이스(28)는, 예를 들어 소스 장치(12)로부터 직접 또는 어떤 다른 소스로부터, 예를 들어 저장 장치로부터, 예를 들어 인코딩된 픽처 데이터 저장 장치로부터, 인코딩된 픽처 데이터(21) 또는 인코딩된 데이터(13)를 수신하도록 구성된다.
통신 인터페이스(22)와 통신 인터페이스(28)는 소스 장치(12)와 목적지 장치(14) 간의 직접 통신 링크, 예를 들어 직접 유선 또는 무선 연결을 통해, 또는 어떤 종류의 네트워크, 예를 들어 유선 또는 무선 네트워크 또는 이들의 어떤 조합, 또는 어떤 종류의 사설 및 공용 네트워크, 또는 이들의 어떤 종류의 조합을 통해 인코딩된 픽처 데이터(21) 또는 인코딩된 데이터(13)를 송신하거나 또는 수신하도록 구성될 수 있다.
통신 인터페이스(22)는 예를 들어 인코딩된 픽처 데이터(21)를 적절한 포맷, 예를 들어 패킷으로 패키징(package)하거나, 및/또는 통신 링크 또는 통신 네트워크를 통한 전송을 위해 어떤 종류의 전송 인코딩 또는 처리를 이용하여, 인코딩된 픽처 데이터를 처리하도록 구성될 수 있다.
통신 인터페이스(22)의 상대가 되는 통신 인터페이스(28)는, 예를 들어 인코딩된 데이터(13)를 디패키징(de-package)하여, 인코딩된 픽처 데이터(21)를 획득하도록 구성될 수 있다.
통신 인터페이스(22)의 상대가 되는 통신 인터페이스(28)는, 전송된 데이터를 수신하고, 인코딩된 픽처 데이터(21)를 획득하기 위해 어떤 종류의 대응하는 전송 디코딩이나 처리 및/또는 디패키징을 이용하여 전송 데이터를 처리하도록 구성될 수 있다.
통신 인터페이스(22)와 통신 인터페이스(28)는 모두 소스 장치(12)에서 목적지 장치(14)를 가리키는 도 11a의 화살표로 표시된 바와 같이 인코딩된 픽처 데이터(13)를 위해 단방향 통신 인터페이스 또는 양방향 통신 인터페이스로서 구성될 수 있고, 예를 들어 메시지를 송수신함으로써, 예를 들어 연결을 셋업함으로써 통신 링크 및/또는 데이터 전송, 예를 들어 인코딩된 픽처 데이터 전송과 관련된 어떤 다른 정보를 수신확인(acknowledge)하여 교환하도록 구성될 수 있다.
디코더(30)는 인코딩된 픽처 데이터(21)를 수신하고 디코딩된 픽처 데이터(31) 또는 디코딩된 픽처(31)를 제공하도록 구성된다(더 자세한 사항은 예를 들어 도 13 또는 도 15에 기초하여 설명할 것이다).
목적지 장치(14)의 후처리기(32)는 디코딩된 픽처 데이터(31), 예를 들어 디코딩된 픽처(31)를 후처리하여, 후처리된 픽처 데이터(33), 예를 들어 후처리된 픽처(33)를 획득하도록 구성된다. 후처리 유닛(32)에 의해 수행되는 후처리는 예를 들어 표시 장치(34)가 표시하도록 디코딩된 픽처 데이터(31)를 준비하기 위해 예를 들어 컬러 포맷 변환(예를 들어, YCbCr에서 RGB로), 컬러 보정, 트리밍, 또는 재샘플링, 또는 어떤 다른 처리를 포함할 수 있다.
목적지 장치(14)의 표시 장치(34)는, 예를 들어 픽처를 사용자 또는 시청자에게 표시하기 위해, 후처리된 픽처 데이터(33)를 수신하도록 구성된다. 표시 장치(34)는 재구성된 픽처을 표현하기 위한 어떤 종류의 디스플레이, 예를 들어 통합 디스플레이 또는 외부 디스플레이 또는 모니터일 수 있다. 디스플레이는 예를 들어 액정 디스플레이(liquid crystal display, LCD), 또는 유기 발광 다이오드(organic light emitting diode, OLED) 디스플레이, 또는 플라즈마 디스플레이, 또는 프로젝터, 또는 마이크로 LED 디스플레이, 또는 실리콘 액정(liquid crystal on silicon, LCoS), 또는 디지털 광 프로세서(digital light processor, DLP), 또는 어떤 다른 종류의 기타 디스플레이를 포함할 수 있다.
도 11a가 소스 장치(12)와 목적지 장치(14)를 별도의 장치로서 도시하고 있지만, 장치들의 실시예가 소스 장치(12)와 목적지 장치(14) 또는 소스 장치(12)와 목적지 장치(14) 둘 다의 기능, 소스 장치(12) 또는 대응하는 기능, 그리고 목적지 장치(14) 또는 대응하는 기능을 포함할 수 있다. 이러한 실시예에서, 소스 장치(12) 또는 대응하는 기능 그리고 목적지 장치(14) 또는 대응하는 기능은 동일한 하드웨어 및/또는 소프트 웨어를 이용하여 또는 별도의 하드웨어 및/또는 소프트 웨어 또는 이들의 어떤 조합에 의해 구현될 수 있다.
이 설명에 기초하여 당업자에게 명백한 바와 같이, 도 11a에 도시된 소스 장치(12) 및/또는 목적지 장치(14)의 서로 다른 유닛의 기능 또는 기능의 존재와 (정확한) 분할이 실제 장치와 적용에 따라 달라질 수 있다.
인코더(20)(예를 들어, 비디오 인코더(20))와 디코더(30)(예를 들어, 비디오 디코더(30)) 각각은 적합한 다양한 회로, 예컨대 하나 이상의 마이크로프로세서, 디지털 신호 프로세서(digital signal processor, DSP), 주문형 반도체(application-specific integrated circuit, ASIC), 필드 프로그래머블 게이트 어레이(field-programmable gate array, FPGA), 별도의 로직, 하드웨어, 또는 이들의 어떤 조합 중 하나로 구현될 수 있다. 이러한 기술이 부분적으로 소프트웨어로 구현되면, 장치가 소프트웨어에 대한 명령을 적절한 비일시적 컴퓨터 판독가능 저장 매체에 저장할 수 있고, 본 개시의 기술을 수행하기 위해 하나 이상의 프로세서를 이용하여 하드웨어에서 명령을 실행할 수 있다. (하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등을 포함하는) 전술한 것은 하나 이상의 프로세서로 간주될 수 있다. 비디오 인코더(20)와 비디오 디코더(30) 각각은 하나 이상의 인코더 또는 디코더에 포함될 수 있고, 인코더와 디코더 중 어느 하나가 각각의 장치 내의 결합된 인코더/디코더(CODEC)의 일부로서 통합될 수 있다.
도 12의 인코더(20) 및/또는 본 명세서에서 설명된 어떤 다른 인코더 시스템 또는 서브시스템과 관련하여 논의된 바와 같이, 인코더(20)는 다양한 모듈을 구현하기 위해 처리 회로(46)를 통해 구현될 수 있다. 도 13의 디코더(30) 및/또는 본 명세서에서 설명된 어떤 다른 디코더 시스템 또는 서브시스템과 관련하여 논의된 바와 같이, 디코더(30)는 다양한 모듈을 구현하기 위해 처리 회로(46)를 통해 구현될 수 있다. 처리 회로는 나중에 논의되는 다양한 연산을 수행하도록 구성될 수 있다. 도 15에 도시된 바와 같이, 이러한 기술이 부분적으로 소프트 웨어로 구현되면, 장치가 소프트웨어에 대한 명령을 적절한 비일시적 컴퓨터 판독가능 저장 매체에 저장할 수 있고, 본 개시의 기술을 수행하기 위해 하나 이상의 프로세서를 이용하여 하드웨어에서 명령을 실행할 수 있다. 비디오 인코더(20)와 비디오 디코더(30) 중 어느 하나가, 예를 들어 도 11b에 도시된 바와 같이 단일 장치 내의 결합된 인코더/디코더(CODEC)의 일부로서 통합될 수 있다.
소스 장치(12)는 비디오 인코딩 디바이스 또는 비디오 인코딩 장치로 지칭될 수 있다. 목적지 장치(14)는 비디오 디코딩 디바이스 또는 비디오 디코딩 장치로 지칭될 수 있다. 소스 장치(12)와 목적지 장치(14)는 비디오 코딩 디바이스 또는 비디오 코딩 장치의 예일 수 있다.
소스 장치(12)와 목적지 장치(14)는 어떤 종류의 휴대용 또는 고정형 장치, 예를 들어 노트북 또는 랩톱 컴퓨터, 모바일 폰, 스마트폰, 태블릿 또는 태블릿 컴퓨터, 카메라, 데스크탑 컴퓨터, 셋톱 박스, 텔레비전, 표시 장치, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 비디오 스트리밍 장치(콘텐츠 서비스 서버 또는 콘텐츠 전달 서버 등), 브로드캐스트 수신기 장치, 또는 브로드캐스트 송신기 장치 등을 포함하는 광범위한 장치 중 어느 것도 포함할 수 있거나, 또는 어떤 종류의 운영체제도 사용하거나 또는 어떤 종류의 운영체제도 사용하지 않을 수 있다.
경우에 따라, 소스 장치(12)와 목적지 장치(14)에 무선 통신이 탑재될 수 있다. 따라서, 소스 장치(12)와 목적지 장치(14)는 무선 통신 장치일 수 있다.
경우에 따라, 도 11a에 도시된 비디오 코딩 시스템(10)은 단지 예일 뿐이며, 본 출원의 기술은 인코딩 장치와 디코딩 장치 간의 어떠한 데이터 통신도 반드시 포함하지는 않는 비디오 코딩 설정(예를 들어, 비디오 인코딩 또는 비디오 디코딩)에 적용될 수 있다. 다른 예에서, 데이터가 로컬 메모리로부터 검색되거나, 또는 네트워크 등을 통해 스트리밍되거나, 또는 기타등등이다. 비디오 인코딩 장치는 데이터를 인코딩하여 메모리에 저장할 수 있거나, 및/또는 비디오 디코딩 장치는 메모리로부터 데이터를 검색하여 디코딩할 수 있다. 일부 예에서, 서로 통신하지 않거나 및/또는 단순히 데이터를 메모리로 인코딩하거나 및/또는 메모리로부터 데이터를 검색하여 디코딩하는 장치에 의해 인코딩 및 디코딩이 수행된다.
설명의 편의를 위해, 본 명세서에서는 예를 들어 고효율 비디오 코딩(HEVC) 또는 ITU-T 영상 부호화 전문가 그룹(VCEG)과 ISO/IEC 동영상 전문가 그룹(MPEG)의 JCT-VC(Joint Collaboration Team on Video Coding)에 의해 개발된 차세대 비디오 코딩 표준인 다용도 비디오 코딩(VVC)의 참조 소프트웨어를 참조하여 본 발명의 실시예에 대해 설명된다. 당업자라면 본 발명의 실시예가 HEVC 또는 VVC로 제한되지 않는다고 이해할 것이다. 비디오 인코더(20)를 참조하여 설명된 전술한 예 각각에 대해, 비디오 디코더(30)가 반대 과정을 수행하도록 구성될 수 있다고 이해해야 한다. 시그널링 구문 요소와 관련하여, 비디오 디코더(30)는 이러한 구문 요소를 수신하여 파싱하고, 연관된 비디오 데이터를 그에 따라 디코딩하도록 구성될 수 있다. 일부 예에서, 비디오 인코더(20)는 인코딩된 비디오 비트스트림에 하나 이상의 구문 요소를 엔트로피 인코딩(entropy encode)할 수 있다. 이 예에서, 비디오 디코더(30)는 이러한 구문 요소를 파싱하고, 연관된 비디오 데이터를 그에 따라 디코딩할 수 있다.
도 11b는 일 실시예에 따른 도 12의 인코더(20) 및/또는 도 13의 디코더(30)를 포함하는 다른 예시적인 비디오 코딩 시스템(40)의 예시도이다. 비디오 코딩 시스템(40)은 본 출원에서 설명되는 다양한 예에 따른 기술을 구현할 수 있다. 예시된 구현에서, 비디오 코딩 시스템(40)은 이미징 디바이스(41), 비디오 인코더(100), 비디오 디코더(30)(및/또는 처리 유닛(46)의 논리 회로(47)를 통해 구현된 비디오 코더), 안테나(42), 하나 이상의 프로세서(43), 하나 이상의 메모리 스토어(44), 및/또는 표시 장치(45)를 포함할 수 있다
도시된 바와 같이, 이미징 디바이스(41), 안테나(42), 처리 유닛(46), 논리 회로(47), 비디오 인코더(20), 비디오 디코더(30), 프로세서(43), 메모리 스토어(44), 및/또는 표시 장치(45)는 서로 통신할 수 있다. 논의된 바와 같이, 비디오 인코더(20)와 비디오 디코더(30) 둘 다로 도시되어 있지만, 비디오 코딩 시스템(40)은 다양한 예에서 비디오 인코더(20)만을 포함하거나 또는 비디오 디코더(30)만을 포함할 수 있다.
도시된 바와 같이, 일부 예에서, 비디오 코딩 시스템(40)은 안테나(42)를 포함할 수 있다. 예를 들어, 안테나(42)는 비디오 데이터의 인코딩된 비트스트림을 송신하거나 또는 수신하도록 구성될 수 있다. 또한, 일부 예에서, 비디오 코딩 시스템(40)은 표시 장치(45)를 포함할 수 있다. 표시 장치(45)는 비디오 데이터를 제공하도록 구성될 수 있다. 도시된 바와 같이, 일부 예에서, 논리 회로(47)는 처리 유닛(46)을 통해 구현될 수 있다. 처리 유닛(46)은 주문형 반도체(ASIC) 로직, 또는 그래픽 프로세서, 또는 범용 프로세서 등을 포함할 수 있다. 비디오 코딩 시스템(40)은 주문형 반도체(ASIC) 로직, 또는 그래픽 프로세서, 또는 범용 프로세서(들) 등도 포함할 수 있는 선택적인 프로세서(43)를 포함할 수 있다. 일부 예에서, 논리 회로(47)는 하드웨어 또는 비디오 코딩 전용 하드웨어 등을 통해 구현될 수 있고, 프로세서(43)는 범용 소프트 웨어 또는 운영체제 등을 구현할 수 있다. 또한, 메모리 스토어(44)는 어떤 유형의 메모리, 예컨대 휘발성 메모리(예를 들어, 정적 램(Static Random Access Memory, SRAM), 동적 램(Dynamic Random Access Memory, DRAM) 등) 또는 비휘발성 메모리(예를 들어, 플래쉬 메모리 등)일 수 있다. 비제한적인 예에서, 메모리 스토어(44)는 캐시 메모리에 의해 구현될 수 있다. 일부 예에서, 논리 회로(47)는 (예를 들어 이미지 버퍼의 구현을 위해) 메모리 스토어(44)에 액세스할 수 있다. 다른 예에서, 논리 회로(47) 및/또는 처리 유닛(46)은 이미지 버퍼 등의 구현을 위한 메모리 스토어(예를 들어, 캐시 등)를 포함할 수 있다.
일부 예에서, 논리 회로를 통해 구현되는 비디오 인코더(100)는 (예를 들어, 처리 유닛(46) 또는 메모리 스토어(44)를 통해) 이미지 버퍼와 (예를 들어, 처리 유닛(46)을 통해) 그래픽 처리 유닛을 포함할 수 있다. 그래픽 처리 유닛은 이미지 버퍼와 통신하도록 연결될 수 있다. 그래픽 처리 유닛은 논리 회로(47)를 통해 구현되는 비디오 인코더(100)를 포함하는, 도 1과 관련하여 논의된 바와 같이 다양한 모듈 및/또는 본 명세서에서 설명된 어떤 다른 인코더 시스템 또는 서브시스템을 구현할 수 있다. 논리 회로는 본 명세서에서 논의된 바와 같이 다양한 연산을 수행하도록 구성될 수 있다.
비디오 디코더(30)는, 도 13의 디코더(30)와 관련하여 논의된 바와 같이 다양한 모듈 및/또는 본 명세서에서 설명된 어떤 다른 디코더 시스템 또는 서브시스템을 구현하기 위해, 논리 회로(47)를 통해 구현되는 방식과 유사한 방식으로 구현될 수 있다. 일부 예에서, 비디오 디코더(30)는 논리 회로를 통해(예를 들어, 처리 유닛(420) 또는 메모리 스토어(44)를 통해) 구현될 수 있고, (예를 들어, 처리 유닛(420) 또는 메모리 스토어(44)를 통해) 이미지 버퍼와 (예를 들어, 처리 유닛(46)을 통해) 그래픽 처리 유닛을 포함할 수 있다. 그래픽 처리 유닛은 이미지 버퍼와 통신하도록 연결될 수 있다. 그래픽 처리 유닛은, 도 13에 관해 논의된 바와 같이 다양한 모듈 및/또는 본 명세서에서 설명된 어떤 다른 디코더 시스템 또는 서브시스템을 구현하기 위해, 논리 회로(47)를 통해 구현되는 비디오 디코더(30)를 포함할 수 있다.
일부 예에서, 비디오 코딩 시스템(40)의 안테나(42)는 비디오 데이터의 인코딩된 비트스트림을 수신하도록 구성될 수 있다. 논의된 바와 같이, 인코딩된 비트스트림은 본 명세서에서 논의된 바와 같이 비디오 프레임을 인코딩하는 것과 연관된 데이터, 지시자(indicator), 인덱스 값, 또는 모드 선택 데이터 등, 예컨대 코딩 파티션과 연관된 데이터(예를 들어, 변환 계수 또는 양자화 변환 계수, 선택적 지시자(논의된 바와 같이), 및/또는 코딩 파티션을 정의하는 데이터)를 포함할 수 있다. 비디오 코딩 시스템(40)은 안테나(42)에 연결되고 인코딩된 비트스트림를 디코딩하도록 구성된 비디오 디코더(30)를 포함할 수도 있다. 표시 장치(45)는 비디오 프레임을 제공하도록 구성된다.
도 12는 본 출원의 기술을 구현하도록 구성된 예시적인 비디오 인코더(20)의 개략적인/개념적인 블록도이다. 도 12의 예에서, 비디오 인코더(20)는 잔차 계산 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 역양자화 유닛(210), 역변환 처리 유닛(212), 재구성 유닛(214), 버퍼(216), 루프 필터 유닛(220), 디코딩된 픽처 버퍼(DPB, 230), 예측 처리 유닛(260), 및 엔트로피 인코딩 유닛(270)을 포함한다. 예측 처리 유닛(260)은 인터 예측 유닛(244), 인트라 예측 유닛(254), 및 모드 선택 유닛(262)을 포함할 수 있다. 인터 예측 유닛(244)은 움직임 추정 유닛과 움직임 보상 유닛(미도시)을 포함할 수 있다. 도 12에 도시된 비디오 인코더(20)는 하이브리드 비디오 코덱에 따른 하이브리드 비디오 인코더 또는 비디오 인코더라고 할 수 있다.
예를 들어, 잔차 계산 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 예측 처리 유닛(260), 및 엔트로피 인코딩 유닛(270)은 인코더(20)의 순방향 신호 경로를 형성하고, 예를 들어, 역양자화 유닛(210), 역변환 처리 유닛(212), 재구성 유닛(214), 버퍼(216), 루프 필터(220), 디코딩된 픽처 버퍼(DPB, 230), 예측 처리 유닛(260)은 인코더의 역방향 신호 경로를 형성하며, 인코더의 역방향 신호 경로는 디코더(도 13의 디코더(30)를 참조)의 신호 경로에 대응한다.
역양자화 유닛(210), 역변환 처리 유닛(212), 재구성 유닛(214), 루프 필터(220), 디코딩된 픽처 버퍼(DPB, 230), 인터 예측 유닛(244), 및 인트라 예측 유닛(254)은 비디오 인코더(20)의 "내장 디코더"를 형성하는 것이라 할 수 있다. 인코더(20)는 예를 들어 입력(202)에 의해, 픽처(201) 또는 픽처(201)의 블록(203), 예를 들어 비디오 또는 비디오 시퀀스를 형성하는 픽처들의 시퀀스의 픽처를 수신하도록 구성된다. 픽처 블록(203)은 현재 픽처 블록 또는 코딩될 픽처 블록이라고도 할 수 있고, 픽처(201)는 (특히, 비디오 코딩에서 현재 픽처를 다른 픽처, 예를 들어 동일한 비디오 시퀀스의 이전에 인코딩되거나 및/또는 디코딩된 픽처, 즉 현재 픽처를 포함하는 비디오 시퀀스와 구별하기 위해) 현재 픽처 또는 인코딩될 픽처라고도 할 수 있다.
(디지털) 픽처가 강도 값이 있는 샘플의 2차원 배열 또는 행렬이거나 또는 강도 값이 있는 샘플들의 2차원 배열 또는 행렬로 간주될 수 있다. 2차원 배열의 샘플은 픽셀(픽처 요소의 짧은 형태) 또는 펠이라고도 할 수 있다. 2차원 배열 또는 픽처의 수평 및 수직 방향(또는 축)에 있는 샘플의 개수가 픽처의 크기 및/또는 해상도를 정의한다. 컬러의 표현을 위해, 일반적으로 세 가지 컬러 성분이 사용된다. 즉, 픽처는 3개의 샘플 배열로 표현되거나 또는 3개의 샘플 배열을 포함한다. RBG 포맷 또는 컬러 공간에서, 픽처가 대응하는 적색, 녹색, 및 청색 샘플 배열로 구성된다. 하지만, 비디오 코딩에서, 각각의 픽셀은 일반적으로 휘도 및 색차 포맷 또는 컬러 공간, 즉 YCbCr 로 표현되고, YcbCr은 Y로 표시된 휘도 성분(때로는 대신에 L이 사용됨) 및 Cb와 Cr로 표시된 2개의 색차 성분(chrominance component)을 포함한다. 휘도(또는 줄여서 루마(luma)) 성분(Y)은 밝기 또는 (예를 들어, 그레이 스케일 픽처에서와 같이) 그레이 레벨 강도를 나타내고, 2개의 색차(또는 줄여서 크로마(chroma)) 성분(Cb Cr)은 색도(chromaticity) 또는 색상 정보 성분을 나타낸다. 따라서, YCbCr 포맷의 픽처는 휘도 샘플 값(Y)의 휘도 샘플 배열, 및 색차 값(Cb와 Cr)의 2개의 색차 샘플 배열을 포함한다. RGB 포맷의 픽처는 YCbCr 포맷으로 전환되거나 또는 변환될 수 있고 그 반대로도 마찬가지이며, 이 과정은 색상 변환 또는 전환으로도 알려져 있다. 픽처가 단색이면, 픽처는 휘도 샘플 배열만을 포함할 수 있다. 따라서, 픽처는 예를 들어, 단색 포맷의 루마 샘플의 배열 또는 4:2:0, 4:2:2,및 4:4:4 색상 포맷 루마 샘플의 배열과 크로마 샘플의 2개의 대응하는 배열일 수 있다.
(분할)
인코더(20)의 실시예는 픽처(201)를 복수의 (일반적으로 중첩하지 않는) 픽처 블록(203)으로 분할하도록 구성된 파티셔닝 유닛(도 12에 도시되지 않음)을 포함할 수 있다. 이러한 블록은 루트 블록(root block), 또는 매크로 블록(H.264/AVC), 또는 코딩 트리 블록(CTB), 또는 코딩 트리 유닛(CTU)(H.265/HEVC and VVC)이라고도 할 수 있다. 파티셔닝 유닛은 비디오 시퀀스의 모든 픽처와 블록 크기를 정의하는 대응하는 그리드에 대해 동일한 블록 크기를 사용하거나, 또는 픽처들 또는 픽처의 부분집합들 또는 그룹들 간에 블록 크기를 변경하고, 각각의 픽처를 대응하는 블록으로 분할하도록 구성될 수 있다,
추가적인 실시예에서, 비디오 인코더는 픽처(201)의 블록(203), 예를 들어 픽처(201)를 형성하는 하나의 블록, 또는 여러 개의 블록, 또는 모든 블록을 직접 수신하도록 구성될 수 있다. 픽처 블록(203)을 현재 픽처 블록 또는 코딩될 픽처 블록이라고 할 수 있다. 일 예에서, 비디오 인코더(20)의 예측 처리 유닛(260)은 앞에서 설명한 분할 기술의 어떤 조합을 수행하도록 구성될 수 있다.
픽처(201)와 같이, 픽처(201)보다 작은 크기이지만, 블록(203)은 강도 값(샘플 값)이 있는 샘플의 2차원 배열 또는 행렬이거나, 또는 강도 값(샘플 값)이 있는 샘플의 2차원 배열이나 행렬로 간주될 수 있다. 다르게 말하면, 블록(203)은 적용되는 칼라 포맷에 따라, 예를 들어, 하나의 샘플 배열(예를 들어, 단색 픽처(201)의 경우 루마 배열) 또는 3개의 샘플 배열(예를 들어, 컬러 픽처(201)의 경우, 하나의 루마 배열과 2개의 크로마 배열) 또는 어떤 다른 개수 및/또는 종류의 배열을 포함할 수 있다. 블록(203)의 수평 및 수직 방향(또는 축)에 있는 샘플의 개수가 블록(203)의 크기를 정의한다. 따라서, 블록은 예를 들어 샘플의 M×N(M열×N행) 배열 또는 변환 계수의 M×N 배열일 수 있다.
도 12에 도시된 인코더(20)는, 예를 들어 블록 단위로 픽처(201)를 인코딩하도록 구성된다. 예를 들어, 블록(203)마다 인코딩과 예측이 수행된다.
도 12에 도시된 비디오 인코더(20)의 실시예는 추가적으로, 슬라이스(비디오 슬라이스라고도 함)를 이용하여 픽처를 분할하거나 및/또는 인코딩하도록 구성될 수 있다. 여기서, 픽처가 (보통 중첩하지 않는) 하나 이상의 슬라이스를 이용하여 분할되거나 또는 인코딩될 수 있고, 각각의 슬라이스는 하나 이상의 블록(예를 들어, CTU) 또는 하나 이상의 그룹의 블록(예를 들어, 타일(H.265/HEVC와 VVC) 또는 브릭(brick)(VVC))를 포함할 수 있다.
도 12에 도시된 비디오 인코더(20)의 실시예는 추가적으로, 슬라이스/타일 그룹(비디오 타일 그룹이라고도 함) 및/또는 타일(비디오 타일이라고도 함)을 이용하여 픽처를 분할하거나 및/또는 인코딩하도록 구성될 수 있다. 여기서, 픽처가 (일반적으로 중첩하지 않는) 하나 이상의 슬라이스/타일 그룹을 이용하여 분할되거나 또는 인코딩될 수 있고, 각각의 슬라이스/타일 그룹은 예를 들어 하나 이상의 블록(예를 들어, CTU) 또는 하나 이상의 타일을 포함할 수 있으며, 각각의 타일은, 예를 들어 직사각형 모양일 수 있고 하나 이상의 블록(예를 들어, CTU), 예를 들어 완전한 블록 또는 부분적 블록을 포함할 수 있다.
(잔차 계산)
잔차 계산 유닛(204)은, 픽처 블록(203)의 샘플 값에서 예측 블록(265)의 샘플 값을 샘플 단위로(픽셀 단위로) 차감하여 샘플 영역에서 잔차 블록(205)을 획득함으로써, 픽처 블록(203)과 예측 블록(265)에 기초하여 잔차 블록(205)을 계산하도록 구성된다(예측 블록(265)에 관한 추가 세부사항이 나중에 제공된다).
(변환)
변환 처리 유닛(206)은 변환, 예를 들어 잔차 블록(205)의 샘플 값에 대해 이산 코사인 변환(discrete cosine transform, DCT) 또는 이산 사인 변환(discrete sine transform, DST)을 적용하여 변환 영역에서 변환 계수(207)를 획득하도록 구성된다. 변환 계수(207)는 변환 잔차 계수라고도 할 수 있고 변환 영역에서 잔차 블록(205)을 나타낸다.
변환 처리 유닛(206)은 DCT/DST의 정수 근사치, 예컨대 HEVC/H.265에 대해 지정된 변환을 적용하도록 구성될 수 있다. 직교 DCT 변환과 비교할 때, 이러한 정수 근사치는 일반적으로 특정 요인에 의해 스케일링된다. 순방향 및 역방향 변환에 의해 처리되는 잔차 블록의 표준을 보존하기 위해, 변환 과정의 일부로서 추가적인 스케일링 팩터가 적용된다. 스케일링 팩터는 일반적으로 시프트 연산을 위한 2의 거듭 제곱인 스케일링 팩터, 변환 계수의 비트 심도(bit depth), 정확도와 구현 비용 간의 교환(tradeoff) 등과 같은 특정 제한 조건에 따라 선택된다. 특정 스케일링 팩터는 예를 들어, 역변환에 대해, 예를 들어 역변환 처리 유닛(212)에 의해, 디코더(30)에서 (그리고 대응하는 역변환에 대해, 예를 들어 역변환 처리 유닛(212)에 의해 인코더(20)에서) 지정되고, 대응하는 스케일링 팩터는 순방향 변환에 대해, 예를 들어 변환 처리 유닛(206)에 의해, 인코더(20)에서 그에 따라 지정될 수 있다.
예를 들어, 비디오 디코더(30)가 디코딩을 위한 변환 파라미터를 수신하고 사용할 수 있도록, 비디오 인코더(20)(변환 처리 유닛(206) 각각)의 실시예는 변환 파라미터를 예를 들어 엔트로피 인코딩 유닛(270)을 통해 직접 또는 인코딩하거나 압축하여 변환의 유형 또는 변환을 출력하도록 구성될 수 있다.
(양자화)
양자화 유닛(208)은, 예를 들어 스칼라 양자화 또는 벡터 양자화를 적용함으로써 변환 계수(207)를 양자화하여 양자화 변환 계수(209)를 획득하도록 구성된다. 양자화 변환 계수(209)는 양자화된 잔차 계수(209)라고도 할 수 있다. 양자화 과정은 변환 계수(207)의 일부 또는 전부와 연관된 비트 심도를 낮출 수 있다. 예를 들어, n-비트 변환 계수는 양자화 중에 반올림될 수 있다(n은 m보다 크다). 양자화의 정도가 양자화 파라미터(quantization parameter, QP)를 조정하여 수정될 수 있다. 예를 들어, 스칼라 양자화의 경우, 더 미세하거나 거친 양자화를 달성하기 위해 다른 스케일링이 적용될 수 있다. 더 작은 양자화 스텝 크기가 더 미세한 양자화에 대응하고, 더 큰 양자화 스텝 크기가 더 거친 양자화에 대응한다. 적용 가능한 양자화 스텝 크기는 양자화 파라미터(QP)로 나타낼 수 있다. 양자화 파라미터는, 예를 들어 적용 가능한 양자화 스텝 크기의 미리 정의된 집합에 대한 인덱스일 수 있다. 예를 들어, 작은 양자화 파라미터는 미세한 양자화(작은 양자화 스텝 크기)에 대응할 수 있고, 큰 양자화 파라미터는 거친 양자화(큰 양자화 스텝 크기)에 대응할 수 있거나, 또는 그 반대일 수 있다. 양자화는 양자화 스텝 크기에 의한 나눗셈과 예를 들어 역양자화(210)에 의한 대응하는 양자화 또는 역 역양자화를 포함할 수 있고, 양자화 스텝 크기에 의한 곱셈을 포함할 수 있다. 일부 표준, 예를 들어 HEVC에 따른 실시예는 양자화 파라미터를 이용하여 양자화 스텝 크기를 결정하도록 구성될 수 있다. 일반적으로, 양자화 스텝 크기는 나눗셈을 포함하는 방정식의 고정 소수점 근사치를 이용하여 양자화 파라미터에 기초하여 계산될 수 있다. 잔차 블록의 표준을 복구하기 위해 추가적인 스케일링 팩터가 양자화와 역양자화에 도입될 수 있고, 이는 양자화 스텝 크기와 양자화 파라미터에 대한 방정식의 고정 소수점 근사치에 사용되는 스케일링으로 인해 수정될 수 있다. 하나의 예시적인 구현에서, 역변환과 역양자화의 스케일링이 조합될 수 있다. 대안적으로, 맞춤형 양자화 표가 사용되어 인코더에서 디코더로, 예를 들어 비트스트림으로 시그널링될 수 있다. 양자화는 양자화 스텝 크기가 증가함에 따라 손실이 증가하는 손실 연산이다.
예를 들어, 비디오 디코더(30)가 디코딩을 위해 양자화 파라미터를 수신하여 적용할 수 있도록, 비디오 인코더(20)(양자화 유닛(208) 각각)의 실시예는 예를 들어 양자화 파라미터(QP)를 직접 출력하거나 또는 엔트로피 인코딩 유닛(270)을 통해 인코딩된 양자화 파라미터(QP)를 출력하도록 구성될 수 있다.
역양자화 유닛(210)은, 예를 들어 양자화 유닛(208)과 동일한 양자화 스텝 크기에 기초하여 또는 이를 이용하여 양자화 유닛(208)에 의해 적용된 양자화 방식의 역을 적용함으로써, 양자화 유닛(208)의 역양자화를 양자화된 계수에 적용하여 예를 들어 역양자화 계수(211)를 획득하도록 구성된다. 역양자화된 계수(211)는, 비록 보통 양자화에 의한 손실로 인해 변환 계수와 동일하지 않지만 역양자화된 잔차 계수(211)라고도 하며 변환 계수(207)에 대응할 수 있다.
역변환 처리 유닛(212)은 변환 처리 유닛(206)에 의해 적용되는 변환의 역변환, 예를 들어 역 이산 코사인 변환(DCT) 또는 역 이산 사인 변환(DST)을 적용하여 샘플 영역에서 역변환 블록(213)을 획득하도록 구성된다. 역변환 블록(213)은 역양자화된 역변환 블록(213) 또는 역변환 잔차 블록(213)이라고도 할 수 있다.
재구성 유닛(214)(예를 들어 가산기(summer, 214))은, 샘플 영역에서 재구성된 블록(215)을 획득하기 위해, 예를 들어 재구성된 잔차 블록(213)의 샘플 값과 예측 블록(265)의 샘플 값을 더함으로써 역변환 블록(213)(즉 재구성된 잔차 블록(213))을 예측 블록(265)에 더하도록 구성된다.
선택적으로, 버퍼 유닛(216)(또는 줄여서 "버퍼(216)"), 예를 들어 라인 버퍼(216)는, 예를 들어 인트라 예측을 위해, 재구성된 블록(215)과 각각의 샘플 값을 버퍼링하거나 또는 저장하도록 구성된다. 추가적인 실시예에서, 인코더는 어떤 종류의 추정 및/또는 예측, 예를 들어 인트라 예측을 위해, 버퍼 유닛(216)에 저장되는, 필터링되지 않은 재구성된 블록 및/또는 각각의 샘플 값을 이용하도록 구성될 수 있다.
예를 들어 버퍼 유닛(216)이 인트라 예측(254)을 위해 재구성된 블록(215)을 저장하는 데 사용될 뿐만 아니라 루프 필터 유닛(220)(도 12에 도시되지 않음)을 위해 사용되거나, 및/또는 예를 들어 버퍼 유닛(216)과 디코딩된 픽처 버퍼 유닛(230)이 하나의 버퍼를 형성할 수 있도록, 인코더(20)의 실시예는 구성될 수 있다. 추가적인 실시예는, 디코딩된 픽처 버퍼(230)로부터의 필터링된 블록(221) 및/또는 블록 또는 샘플을 인트라 예측(254)을 위한 입력이나 기초로서 사용하도록 구성될 수 있다(도 12에는 둘 다 도시되어 있지 않음).
루프 필터 유닛(220)(또는 줄여서 "루프 필터"(220))은, 재구성된 블록(215)을 필터링하여 필터링된 블록(221)을 획득하도록, 예를 들어 픽셀 전환을 부드럽게 하거나 또는 그렇지 않으면 비디오 품질을 향상시키도록 구성된다. 루프 필터 유닛(220)은 하나 이상의 루프 필터, 예컨대 디블로킹 필터(de-blocking filter), 또는 샘플 적응형 오프셋(sample-adaptive offset, SAO) 필터, 또는 다른 필터, 예를 들어 양방향 필터 또는 적응형 루프 필터(adaptive loop filter, ALF) 또는 샤프닝 필터(sharpening filter) 또는 평활화 필터(smoothing filter) 또는 협업 필터(collaborative filter)를 나타내기 위한 것이다. 도 12에는 루프 필터 유닛(220)이 인루프 필터(in loop filter)로서 도시되어 있지만, 다른 구성에서는 루프 필터 유닛(220)이 포스트 루프 필터(post loop filter)로서 구현될 수 있다. 필터링된 블록(221)은 필터링되어 재구성된 블록(221)이라고도 할 수 있다. 디코딩된 픽처 버퍼(230)는, 루프 필터 유닛(220)이 재구성된 코딩 블록에 대해 필터링 연산을 수행한 후 재구성된 코딩 블록을 저장할 수 있다.
루프 필터 유닛(220)(또는 줄여서 "루프 필터"(220))은 재구성된 블록(215)을 필터링하여 필터링된 블록(221)을 획득하거나, 또는 일반적으로, 재구성된 샘플을 필터링하여 필터링된 샘플 값을 획득하도록 구성된다. 루프 필터 유닛은 예를 들어 픽셀 전환을 부드럽게하거나, 또는 그렇지 않으면 비디오 품질을 향상시키도록 구성된다. 루프 필터 유닛(220)은 하나 이상의 루프 필터, 예를 들어 디블로킹 필터, 샘플 적응형 오프셋(SAO) 필터, 또는 하나 이상의 다른 필터, 예를 들어 적응형 루프 필터(adaptive loop filter, ALF), 잡음 억제 필터(noise suppression filter, NSF), 또는 이들의 어떤 조합을 포함할 수 있다. 일 예에서, 루프 필터 유닛(220)은 디블로킹 필터, SAO 필터, 및 ALF 필터를 포함할 수 있다. 필터링 과정의 순서가 디블로킹 필터, SAO, 및 ALF일 수 있다. 다른 예에서, LMCS(luma mapping with chroma scaling)이라는 프로세스(즉, 적응형 인루프 리셰이퍼(adaptive in-loop reshaper))가 추가된다. 이 프로세스는 디블로킹 이전에 수행된다. 다른 예에서, 디블로킹 필터 프로세스가 예를 들어 내부 서브블록 에지, 예를 들어 아핀 서브블록 에지(affine sub-blocks edge), ATMVP 서브블록 에지, 서브블록 변환(sub-block transform, SBT) 에지, 및 인트라 서브파티션(intra sub-partition, ISP) 에지에도 적용될 수 있다. 도 12에는 루프 필터 유닛(220)이 루프 필터에 있는 것으로 도시되어 있지만, 다른 구성에서는 루프 필터 유닛(220)이 포스트 루프 필터로서 구현될 수 있다. 필터링된 블록(221)은 필터링되어 재구성된 블록(221)이라고도 할 수 있다.
예를 들어, 디코더(30)가 디코딩을 위해 동일한 루프 필터 파라미터 또는 각각의 루프 필터를 수신하여 적용할 수 있도록, 비디오 인코더(20)(루프 필터 유닛(220) 각각)의 실시예는 예를 들어 루프 필터 파라미터(SAO 필터 파라미터 또는 ALF 필터 파라미터 또는 LMCS 파라미터 등)를 직접 출력하거나 또는 엔트로피 인코딩 유닛(270)을 통해 인코딩된 루프 필터 파라미터를 출력하도록 구성될 수 있다.
디코딩된 픽처 버퍼(DPB, 230)는 비디오 인코더(20)가 비디오 데이터를 인코딩하는 데 사용할 참조 픽처 데이터를 저장하는 참조 픽처 메모리일 수 있다. DPB(230)는 다양한 메모리 장치, 예컨대 동기식 동적 램(synchronous DRAM, SDRAM), 또는 자기저항 RAM(magnetoresistive RAM, MRAM), 또는 저항성 RAM(resistive RAM, RRAM), 또는 다른 유형의 메모리 장치를 포함하는 동적 램(random access memory, DRAM) 중 어느 것에 의해 형성될 수 있다. DPB(230)와 버퍼(216)는 동일한 메모리 장치 또는 별도의 메모리 장치에 의해 제공될 수 있다. 일부 예에서, 디코딩된 픽처 버퍼(DPB, 230)는 필터링된 블록(221)을 저장하도록 구성된다. 디코딩된 픽처 버퍼(230)는 추가적으로, 예를 들어 이전에 필터링된 다른 블록을 저장하도록 구성될 수있다. 디코딩된 픽처 버퍼(230)는 추가적으로, 동일한 현재 픽처 또는 서로 다른 픽처의 이전에 필터링된 다른 블록, 예를 들어 이전에 재구성되어 필터링된 블록(221), 예를 들어 이전에 재구성된 픽처를 저장하도록 구성될 수 있고, 예를 들어 인트라 예측을 위해, 이전에 재구성된, 즉 디코딩된 완전한 픽처(및 대응하는 참조 블록과 샘플) 및/또는 부분적으로 재구성된 현재 픽처(및 대응하는 참조 블록과 샘플)을 제공할 수 있다. 일부 예에서, 재구성된 블록(215)이 인루프 필터링 없이 재구성되면, 디코딩된 픽처 버퍼(DPB, 230)는, 예를 들어 재구성된 블록(215)이 루프 필터 유닛(220), 또는 재구성된 블록 또는 샘플의 어떤 다른 추가로 처리된 버전에 의해 필터링되지 않으면, 하나 이상의 필터링되지 않은 재구성된 블록(215), 또는 일반적으로, 필터링되지 않은 재구성된 샘플을 저장하도록 구성된다.
블록 예측 처리 유닛(260)이라고도 하는 예측 처리 유닛(260)은, 블록(203)( 현재 픽처(201)의 현재 블록(203))과 재구성된 픽처 데이터, 예를 들어 버퍼(216)로부터의 동일한(현재) 픽처의 참조 샘플 및/또는 디코딩된 픽처 버퍼(230)로부터의 이전에 디코딩된 하나 또는 복수의 픽처로부터의 참조 픽처 데이터(231)를 수신하거나 또는 획득하고, 예측을 위해 이러한 데이터를 처리하도록, 즉 인터 예측된 블록(245) 또는 인트라 예측된 블록(255)일 수 있는 예측 블록(265)을 제공하도록 구성된다.
모드 선택 유닛(262)은 예측 모드(예를 들어, 인트라 또는 인터 예측 모드) 및/또는 잔차 블록(205)의 계산과 재구성된 블록(215)의 복원을 위해 예측 블록(265)으로 사용될 대응하는 예측 블록(245) 또는 예측 블록(255)을 선택하도록 구성될 수 있다.
모드 선택 유닛(262)의 실시예는 (예를 들어, 예측 처리 유닛(260)에 의해 지원되는 예측 모드로부터) 예측 모드를 선택하도록 구성될 수 있고, 선택된 예측 모드는 최상의 매칭 또는 즉, 최소 잔차(최소 잔차는 전송 또는 저장을 위한 더 나은 압축을 의미함), 또는 최소 시그널링 오버헤드(최소 시그널링 오버헤드는 전송 또는 저장을 위한 더 나은 압축을 의미함)를 제공하거나, 또는 최상의 매칭과 최소 시그널링 오버헤드를 고려하거나 또는 이들의 균형을 유지한다. 모드 선택 유닛(262)은, 레이트 왜곡 최적화(rate distortion optimization, RDO)에 기초하여 예측 모드를 결정하도록, 즉 최소 레이트 왜곡 최적화를 제공하거나 또는 연관된 레이트 왜곡이 적어도 예측 모드 선택 기준을 충족하는 예측 모드를 선택하도록 구성될 수 있다.
이하, 예시적인 인코더(20)에 의해 수행되는 예측 처리(예를 들어, 예측 처리 유닛(260))와 (예를 들어, 모드 선택 유닛(262))에 의한) 모드 선택에 대해 더 상세하게 설명할 것이다.
전술한 실시예에 추가하여 또는 대안적으로, 도 25에 따른 또 다른 실시예에서, 모드 선택 유닛(260)은 파티셔닝 유닛(262), 인터 예측 유닛(244), 및 인트라 예측 유닛(254)을 포함하고, 원본 픽처 데이터를, 이전에 디코딩된 하나 또는 복수의 픽처로부터, 예를 들어 디코딩된 픽처 버퍼(230) 또는 다른 버퍼(예를 들어, 라인 버퍼, 도시되지 않음)로부터 예를 들어 원본 블록(203)(현재 픽처(17)의 현재 블록(203)), 및 재구성된 픽처 데이터, 예를 들어 동일한(현재) 픽처의 필터링되거나 및/또는 필터링되지 않은 재구성된 샘플이나 블록을 수신하거나 또는 획득하도록 구성된다. 재구성된 픽처 데이터는 예측 블록(265) 또는 예측자(265)를 얻기 위해 예측, 예를 들어 인터 예측 또는 인트라 예측을 위한 참조 픽처 데이터로서 사용된다.
모드 선택 유닛(260)은 현재 블록 예측 모드에 대한 (분할하지 않음을 포함하는) 분할과 예측 모드(예를 들어, 인트라 또는 인터 예측 모드)를 결정하거나 또는 선택하고, 대응하는 예측 블록(265)을 생성하도록 구성될 수 있고, 예측 블록(265)은 잔차 블록(205)의 계산 및 재구성된 블록(215)의 재구성에 사용된다.
모드 선택 유닛(260)의 실시예는, 최상의 매칭 또는 다시 말해 최소 잔차(최소 잔차가 전송 또는 저장을 위한 더 나은 압축을 의미함) 또는 최소 시그널링 오버 헤드(최소 시그널링 오버헤드가 전송 또는 저장을 위한 더 나은 압축을 의미함)를 제공하거나, 또는 (예를 들어, 모드 선택 유닛(260)에 의해 지원되거나 또는 모드 선택 유닛(260)에 사용 가능한 분할 및 예측 모드로부터) 최상의 매칭과 최소 시그널링 오버헤드를 고려하거나 또는 이들의 균형을 유지하는 분할 및 예측 모드를 선택하도록 구성될 수 있다. 모드 선택 유닛(260)은 레이트 왜곡 최적화(RDO)에 기초하여 분할 및 예측 모드를 결정하도록, 즉 최소 레이트 왜곡을 제공하는 예측 모드를 선택하도록 구성될 수 있다. 이 문맥에서 "최상", "최소", "최적" 등의 용어가 반드시 전반적인 "최상", "최소", "최적" 등을 언급하는 것은 아니라, 임계값을 초과하거나 또는 임계값 이하로 떨어지는 값과 같은 종료 기준이나 선택 기준을 충족하는 것 또는 잠재적으로 “차선의 선택”으로 이어지지만 복잡도와 처리 시간을 줄이는 다른 제한을 지칭할 수도 있다.
다르게 말하면, 파티셔닝 유닛(262)은 비디오 시퀀스로부터의 픽처를 코딩 트리 유닛(CTU)의 시퀀스로 분할하고, 예를 들어 블록 파티션 또는 서브블록 각각에 대한 예측을 수행하도록 구성될 수 있다. 여기서, CTU(203)는 예를 들어 쿼드트리 분할(quad-tree-partitioning, QT), 이진 분할(binary partitioning, BT) 또는 트리플 트리 분할(triple-tree-partitioning, TT) 또는 이들의 어떤 조합을 반복적으로 이용하여 더 작은 블록 파티션 또는 (블록을 다시 형성하는) 서브블록으로 더 분할될 수 있고, 모드 선택은 분할된 블록(203)의 트리구조의 선택을 포함하며, 예측 모드는 블록 파티션 또는 서브블록 각각에 적용된다.
이하, 예시적인 비디오 인코더(20)에 의해 수행되는 (예를 들어, 파티셔닝 유닛(260)에 의한) 분할과 (인터 예측 유닛(244)과 인트라 예측 유닛(254))에 의한) 예측 처리에 대해 더 상세하게 설명할 것이다.
(분할)
파티셔닝 유닛(262)은 비디오 시퀀스로부터의 픽처를 코딩 트리 유닛(CTU)의 시퀀스로 분할하도록 구성될 수 있고, 파티셔닝 유닛(262)은 코딩 트리 유닛(CTU, (203)을 더 작은 파티션, 예를 들어 정사각형 또는 직사각형 크기의 작은 블록으로 파티셔닝(또는 분할)할 수 있다. 3개의 샘플 배열을 가진 픽처의 경우, CTU가 2개의 대응하는 블록의 크로마 샘플과 함께 N×N 블록의 루마 샘플로 구성된다. CTU 내의 루마 블록의 허용된 최대 크기가 개발 중인 다용도 비디오 코딩(VVC)에서 128×128으로 지정되어 있지만, 이 크기가 향후 128×128이 아닌 값, 예를 들어, 256×256으로 지정될 수 있다. 픽처의 CTU는 슬라이스/타일 그룹, 또는 타일, 또는 브릭(brick)으로 클러스터화/그룹화될 수 있다. 타일이 픽처의 직사각형 영역을 커버하고, 타일은 하나 이상의 브릭으로 분할될 수 있다. 브릭은 타일 내의 다수의 CTU 행으로 구성된다. 복수의 브릭으로 분할되지 않는 타일을 브릭이라 할 수 있다. 하지만, 브릭은 타일의 진정한 부분집합이고 타일로 지칭되지 않는다. VVC에서는 타일 그룹의 2가지 모드, 즉 래스터-스캔 슬라이스(raster-scan slice)/타일 그룹 모드와 직사각형 슬라이스 모드가 있다. 래스터-스캔 타일 그룹 모드에서, 슬라이스/타일 그룹은 픽처의 타일 래스터 스캔에 타일의 시퀀스를 포함한다. 직사각형 슬라이스 모드에서, 슬라이스는 픽처의 직사각형 영역을 집합적으로 형성하는 픽처의 다수의 브릭을 포함한다. 직사각형 슬라이스 내의 브릭은 슬라이스의 브릭 래스터 스캔의 순서에 있다. 이러한 더 작은 블록(서브블록이라고도 할 수 있음)은 심지어 더 작은 파티션으로 더 분할될 수 있다. 이를 트리 분할 또는 계층적 트리 분할이라고도 한다. 여기서, 루트 블록이, 예를 들어 루트 트리-레벨 0(계층-레벨 0, 깊이 0)에서, 재귀적으로 분할될, 예를 들어 다음 하위 트리-레벨의 적어도 2개 이상의 블록으로 분할될, 예를 들어 트리-레벨 1(계층-레벨 1, 깊이 1)의 노드로 분할될 수 있다. 여기서, 이러한 블록은 예를 들어 종료 기준이 충족되었으므로, 예를 들어 최대 트리 깊이 또는 최소 블록 크기에 도달했으므로, 분할이 끝날 때까지 다음 하위 레벨, 예를 들어 트리-레벨 2(계층-레벨 2, 깊이 2) 등의 적어도 2개 이상의 블록으로 다시 분할될 수 있다. 더 분할되지 않는 블록을 트리의 리프-블록 또는 리프 노드라고도 한다. 2개의 파티션으로의 분할을 이용하는 트리를 이진 트리(binary-tree, BT)라고 하고, 3개의 파티션으로의 분할을 이용하는 트리를 삼진 트리(ternary-tree, TT)라고 하며, 4개의 파티션으로의 분할을 이용하는 분할을 쿼드트리(quad-tree, QT)라고 한다.
예를 들어, 코딩 트리 유닛(CTU)은 루마 샘플의 CTB, 또는 3개의 샘플 배열을 가진 픽처의 크로마 샘플의 2개의 대응하는 CTB, 또는 단색 픽처 또는 3개의 별도의 컬러 평면을 이용하여 인코딩된 픽처의 샘플의 CTB와 샘플을 코딩하는 데 사용된 구문 구조일 수 있거나 또는 이들을 포함할 수 있다. 따라서, CTB로의 컴포넌트의 분할이 파티셔닝일 수 있도록, 코딩 트리 블록(CTB)이 N의 일부 값에 대한 샘플의 N×N 블록일 수 있다. 코딩 유닛(CU)이 루마 샘플의 코딩 블록, 또는 3개의 샘플 배열을 가진 픽처의 크로마 샘플의 2개의 대응하는 코딩 블록, 또는 단색 픽처 또는 3개의 별도의 컬러 평면을 이용하여 인코딩된 픽처의 샘플의 코딩 블록과 샘플을 코딩하는 데 사용된 구문 구조일 수 있거나 또는 이들을 포함할 수 있다. 따라서, 코딩 블록으로의 CTB의 분할이 파티셔닝일 수 있도록, 코딩 블록(CB)은 M과 N의 일부 값에 대한 샘플의 M×N 블록일 수 있다.
예를 들어, HEVC에 따르면, 코딩 트리 유닛(CTU)은 코딩 트리로 표시된 쿼드트리 구조를 이용하여 CU로 분할될 수 있다. 인터 픽처(시간) 또는 인트라 픽처(공간) 예측을 이용하여 픽처 영역을 코딩할지 여부가 리프 CU 레벨에서 결정된다. 각각의 리프 CU는 PU 분할 유형에 따라 1개, 또는 2개, 또는 4개의 PU로 더 분할될 수 있다. 하나의 PU 내부에서, 동일한 예측 프로세스가 적용되고, 관련 정보가 PU 단위로 디코더에 전송된다. PU 분할 유형에 기초하여 예측 과정을 적용하여 잔차 블록을 획득한 후, 리프 CU는 CU에 대한 코딩 트리와 유사한 다른 쿼드트리 구조에 따라 변환 유닛(transform unit, TU)으로 분할될 수 있다.
실시예에서, 예를 들어 현재 개발중인 최신 비디오 코딩 표준(다용도 비디오 코딩(VVC)이라 함)에 따르면, 이진 및 삼진 분할 세그멘테이션 구조를 이용하는 결합된 쿼드트리 중첩 멀티형 트리가 예를 들어 코딩 트리 유닛을 분할하는 데 사용된다. 코딩 트리 유닛 내의 코딩 트리 구조에서, CU가 정사각형 또는 직사각형 모양일 수 있다. 예를 들어, 코딩 트리 유닛(CTU)은 먼저 4차 트리(quaternary tree)에 의해 분할된다. 다음, 4차 트리 리프 노드가 멀티형 트리 구조를 이용하여 더 분할될 수 있다. 멀티형 트리 구조, 수직 이진 분할(SPLIT_BT_VER), 수평 이진 분할(SPLIT_BT_HOR), 수직 삼진 분할(SPLIT_TT_VER), 및 수평 삼진 분할(SPLIT_TT_HOR)의 4가지 분할 유형이 있다. 멀티형 트리 리프 노드는 코딩 유닛(CU)으로 불리고, CU가 최대 변환 길이에 비해 너무 크지 않으면, 이 세그멘테이션이 어떤 추가적인 분할 없이 예측과 변환 처리에 사용된다. 이는 대부분의 경우 CU, PU, 및 TU가 중첩 멀티형 트리 코딩 블록 구조를 가진 쿼드트리에서 동일한 블록 크기를 가지고 있다는 것을 의미한다. 지원되는 최대 변환 길이가 CU의 컬러 성분의 폭이나 높이보다 작은 경우에는 예외가 발생한다. VVC는 중첩 멀티형 트리 코딩 트리 구조를 가진 쿼드트리 내의 파티션 분할 정보의 고유한 시그널링 메커니즘을 개시한다. 이 시그널링 메커니즘에서, 코딩 트리 유닛(CTU)은 4차 트리의 루트로 간주되고 4차 트리 구조에 의해 먼저 분할된다. 각각의 4차 트리 리프 노드(이를 허용할 만큼 충분히 큰 경우)가 멀티형 트리 구조에 의해 더 분할된다. 멀티형 트리 구조에서, 노드가 더 분할되는지 여부를 나타내기 위해 제1 플래그(mtt_split_cu_flag)가 시그널링되고; 노드가 더 분할될 때, 제2 플래그(mtt_split_cu_vertical_flag)가 시그널링되어 분할 방향을 나타내고, 그런 다음 제3 플래그(mtt_split_cu_binary_flag)가 시그널링되어 이 분할이 이진 분할 또는 삼진 분할인지 여부를 나타낸다. mtt_split_cu_vertical_flag와 mtt_split_cu_binary_flag의 값에 기초하여, CU의 멀티형 트리 분할 모드(MttSplitMode)가 사전 정의된 규칙이나 표에 기초하여 디코더에 의해 도출될 수 있다. 특정 설계의 경우, 예를 들어 VVC 하드웨어 디코더에서의 64×64 루마 블록과 32×32 크로마 파이프라이닝 설계에서, 도 6에 도시된 바와 같이, 루마 코딩 블록의 폭이나 높이가 64보다 크면 TT 분할이 금지된다는 것을 유의해야 한다. 크로마 코딩 블록의 폭이나 높이가 32보다 크면 TT 분할이 또한 금지된다. 파이프라이닝 설계가 픽처를 픽처 내의 중첩하지 않는 유닛으로 정의되는 가상 파이프라인 데이터 유닛(Virtual pipeline data unit, VPDU)으로 분할할 것이다. 하드웨어 디코더에서, 복수의 파이프라인 단계에 의해 연속적인 VPDU가 동시에 처리된다. VPDU 크기는 대부분의 파이프 라인 단계에서 버퍼 크기에 거의 비례하므로, VPDU 크기를 작게 유지하는 것이 중요하다. 대부분의 하드웨어 디코더에서, VPDU 크기가 최대 변환 블록(transform block, TB) 크기로 설정될 수 있다. 하지만, VVC에서, 삼진 트리(TT)와 이진 트리(BT) 파티션으로 인해 VPDU 크기가 증가할 수 있다.
또한, 트리 노드 블록의 일부가 하단 픽처 경계 또는 오른쪽 픽처 경계를 초과하면, 코딩된 모든 CU의 모든 샘플이 픽처 경계 내부에 위치할 때까지 트리 노드 블록이 강제로 분할된다는 것을 유의해야 한다.
예를 들어, 인트라 서브파티션(Intra Sub-Partitions, ISP) 툴은 루마 인트라 예측된 블록을, 블록 크기에 따라 수직 또는 수평으로 2개 또는 4개의 서브파티션으로 나눌 수 있다.
일 예에서, 비디오 인코더(20)의 모드 선택 유닛(260)은 본 명세서에서 설명된 분할 기술의 어떤 조합을 수행하도록 구성될 수 있다. 전술한 바와 같이, 인코더(20)는 (미리 결정된) 예측 모드의 집합으로부터 최상의 예측 모드 또는 최적 예측 모드를 결정하거나 또는 선택하도록 구성된다. 예측 모드의 집합은 예를 들어, 인트라 예측 모드 및/또는 인터 예측 모드를 포함할 수 있다.
인트라 예측 모드의 집합은 예를 들어 H.265에 정의된 바와 같이 35개의 서로 다른 인트라 예측 모드, 예를 들어 DC(또는 평균) 모드 및 평면 모드와 같은 비지향성 모드 또는 지향성 모드를 포함할 수 있거나, 또는 예를 들어 VVC에 정의된 바와 같이 67개의 서로 다른 인트라 예측 모드, 예를 들어 DC(또는 평균) 모드 및 평면 모드와 같은 비지향성 모드 또는 지향성 모드를 포함할 수 있다. 예를 들어, 종래의 여러 각도 인트라 예측 모드는, VVC에 정의된 바와 같이 예를 들어 정사각형이 아닌 블록에 대한 광각 인트라 예측 모드로 적응적으로 대체된다. 다른 예로서, DC 예측에 대한 분할 연산을 방지기 위해, 더 긴 변만이 정사각형이 아닌 블록의 평균을 계산하는 데 사용된다. 그리고, 평면 모드의 인트라 예측의 결과가 PDPC(position dependent intra prediction combination) 방법에 의해 더 수정될 수 있다.
인트라 예측 유닛(254)은 동일한 현재 픽처의 이웃 블록의 재구성된 샘플을 이용하여 인트라 예측 모드의 집합의 인트라 예측 모드에 따라 인트라 예측 블록(265)을 생성하도록 구성된다.
인트라 예측 유닛(254)(또는 일반적으로 모드 선택 유닛(260))은 추가적으로, 예를 들어 비디오 디코더(30)가 디코딩을 위한 예측 파라미터를 수신하여 사용할 수 있도록, 인코딩된 픽처 데이터(21)에 포함될 구문의 형태로 인트라 예측 파라미터(또는 일반적으로 블록에 대해 선택된 인트라 예측 모드를 나타내는 정보)를 엔트로피 인코딩 유닛(270)에 출력하도록 구성된다.
(또는 가능한) 인터 예측 모드의 집합은, 전체 참조 픽처이든 일부이든 간에 사용 가능한 참조 픽처(즉, 적어도 부분적으로 디코딩된 이전 픽처, 예를 들어 DBP(230)에 저장된 픽처) 및 다른 인터 예측 파라미터에 따라 달라진다. 예를 들어 현재 블록의 영역 주위의 참조 픽처의 검색 창 영역이 가장 일치하는 참조 블록, 및/또는 예를 들어 화소 보간, 예를 들어 하프/세미-펠(half/semi-pel), 쿼터-펠(quarter-pel) 및/또는 1/16 펠 보간이 적용되는지 또는 적용되지 않는지 여부를 검색하는 데 사용된다.
전술한 예측 모드 외에, 스킵 모드(skip mode), 직접 모드, 및/또는 다른 인터 예측 모드가 적용될 수 있다.
예를 들어 확장된 병합 예측, 이러한 모드의 병합 후보 목록은 공간 이웃 CU로부터의 공간 MVP, 함께 배치된 CU로부터의 시간 MVP, FIFO 표로부터의 이력 기반 MVP, 쌍별(Pairwise) 평균 MVP, 및 제로 MV의 5가지 유형의 후보를 순서대로 포함하여 구성된다.
예를 들어, 확장된 병합 예측, 이러한 모드의 병합 후보 목록이, 5가지 유형의 후보, 공간 이웃 CU로부터 공간 MVP, 함께 배치된 CU로부터 시간 MVP, FIFO 표로부터 이력 기반의 MVP, 쌍별 평균 MVP, 및 제로 MV를 순서대로 포함하여 만들어진다. 그리고, 양방향 매칭 기반의 디코더 측 움직임 벡터 세분화(decoder side motion vector refinement, DMVR)이 적용되어 병합 모드의 MV의 정확도를 높일 수 있다. MVD(MMVD)를 이용하는 병합 모드가 움직임 벡터 차이를 가진 병합 모드에서 유래한다. MMVD 모드가 CU에 사용되는지 여부를 지정하기 위해 스킵 플래그와 병합 플래그를 송신한 직후 MMVD 플래그가 시그널링된다. 그리고, CU-레벨 적응형 움직임 벡터 해상도(CU-level adaptive motion vector resolution, AMVR) 방식이 적용될 수 있다. AMVR은 CU의 MVD를 다른 정밀도로 코딩할 수 있다. 현재 CU에 대한 예측 모드에 따라, 현재 CU의 MVD가 적응적으로 선택될 수 있다. CU가 병합 모드로 코딩되면, 결합된 인터/인트라 예측(combined inter/intra prediction, CIIP) 모드가 현재 CU에 적용될 수 있다. CIIP 예측을 얻기 위해 인터 및 인트라 예측 신호의 가중 평균이 수행된다. 아핀 움직임 보상 예측에서, 블록의 아핀 움직임 필드가 2개의 제어점(4-parameter) 또는 3개의 제어점 움직임 벡터(6-parameter)의 움직임 정보로 설명된다. 서브블록 기반의 시간 움직임 벡터 예측(subblock-based temporal motion vector prediction, SbTMVP)은 HEVC의 시간적 움직임 벡터 예측(temporal motion vector prediction, TMVP)과 유사하지만 현재 CU 내의 서브-CU의 움직임 벡터를 예측한다. 이전에 BIO로 불렸던 BDOF(Bi-directional Optical Flow)는 특히 곱셈 횟수와 곱셈기의 크기 측면에서 훨씬 적은 계산을 필요로 하는 더 간단한 버전이다. 삼각형 분할 모드는, 이러한 모드에서, CU가 대각선 분할이나 반-대각선 분할을 이용하여 2개의 삼각형 모양 분할로 균등하게 분할된다. 또한, 이중 예측 모드가 단순한 평균을 초과하여 확장되어 2개의 예측 신호의 가중 평균을 허용한다.
전술한 예측 모드 외에, 스킵 모드 및/또는 다이렉트 모드가 적용될 수 있다.
예측 처리 유닛(260)은 추가적으로, 쿼드트리 분할(QT), 또는 이진 분할(BT), 또는 삼진 트리 분할(TT), 또는 이들의 어떤 조합을 예를 들어 반복적으로 이용하여 블록(203)을 더 작은 블록 파티션 또는 서브블록으로 분할하고, 예를 들어 블록 파티션 또는 서브블록 각각에 대한 예측을 수행하도록 구성될 수 있다. 여기서, 모드 선택은, 분할된 블록(203)의 트리 구조의 선택 및 블록 파티션이나 서브블록 각각에 적용되는 예측 모드를 포함한다.
인터 예측 유닛(244)은 움직임 추정(motion estimation, ME) 유닛(도 2에 도시되지 않음)과 움직임 보상(motion compensation, MC) 유닛(도 2에 도시되지 않음)을 포함할 수 있다. 움직임 추정을 위해, 움직임 추정 유닛은 픽처 블록(203)( 현재 픽처(201)의 현재 픽처 블록(203))과 디코딩된 픽처(231), 또는 이전에 재구성된 적어도 하나 또는 복수의 블록, 예를 들어 이전에 디코딩된 하나 또는 복수의 다른/서로 다른 픽처(231)의 재구성된 블록을 수신하거나 획득하도록 구성된다. 예를 들어, 비디오 시퀀스가 현재 픽처와 이전에 디코딩된 픽처(231)를 포함할 수 있거나, 또는 다르게 말하면, 현재 픽처와 이전에 디코딩된 픽처(231)가 비디오 시퀀스를 형성하는 픽처의 일부이거나 또는 비디오 시퀀스를 형성하는 픽처의 시퀀스를 형성할 수 있다.
인코더(20)는 예를 들어 복수의 다른 픽처의 동일하거나 상이한 픽처의 복수의 레퍼런스 블록으로부터 참조 블록을 선택하고, 참조 픽처(또는 참조 픽처 인덱스, …) 및/또는 참조 블록의 위치(x, y 좌표)와 현재 블록의 위치 간의 오프셋(공간 오프셋)을 인터 예측 파라미터로서 움직임 추정 유닛(도 2에 도시되지 않음)에 제공하도록 구성될 수 있다. 이 오프셋은 움직임 벡터(motion vector, MV)라고도 한다.
움직임 보상 유닛은 인터 예측 파라미터를 획득하고, 예를 들어 수신하고, 인터 예측 파라미터에 기초하여 또는 인터 예측 파라미터를 이용하여 인터 예측을 수행하여 인터 예측 블록(265)을 획득하도록 구성된다. 움직임 보상 유닛에 의해 수행되는 움직임 보상은, 움직임 추정에 의해 결정된 움직임/블록 벡터에 기초하여 예측 블록을 가져오거나 또는 생성하는 것, 경우에 따라 서브픽셀 정밀도로 보간을 수행하는 것을 포함할 수 있다. 보간 필터링은 알려진 픽셀 샘플로부터 추가적인 픽셀 샘플을 생성할 수 있고, 따라서 픽처 블록을 코딩하는 데 사용될 수 있는 후보 예측 블록의 개수를 잠재적으로 늘린다. 현재 픽처 블록의 PU에 대한 움직임 벡터를 수신하면, 움직임 보상 유닛은 참조 픽처 목록 중 하나에 있는, 움직임 벡터가 가리키는 예측 블록을 찾을 수 있다.
인트라 예측 유닛(254)은, 인트라 추정을 위해, 동일한 픽처의 픽처 블록(203)(현재 픽처 블록)과 이전에 재구성된 하나 또는 복수의 블록, 예를 들어 재구성된 이웃 블록을 획득하도록, 예를 들어 수신하도록 구성된다. 인코더(20)는, 예를 들어 복수의 (미리 결정된) 인트라 예측 모드로부터 인트라 예측 모드를 선택하도록 구성된다.
인코더(20)의 실시예는 최적화 기준, 예를 들어 최소 잔차(예를 들어, 현재 픽처 블록(203)과 가장 유사한 예측 블록(255)을 제공하는 인트라 예측 모드) 또는 최소 레이트 왜곡에 기초하여 인트라 예측 모드를 선택하도록 구성될 수 있다.
인트라 예측 유닛(254)은 추가적으로, 인트라 예측 파라미터, 예를 들어 선택된 인트라 예측 모드에 기초하여, 인트라 예측 블록(255)을 결정하도록 구성된다. 어떤 경우에도, 블록에 대한 인트라 예측 모드를 선택한 후, 인트라 예측 유닛(254)은 또한 인트라 예측 파라미터, 즉 블록을 위해 선택된 인트라 예측 모드를 나타내는 정보를 엔트로피 인코딩 유닛(270)에 제공하도록 구성된다. 인트라 예측 유닛(254)은 후술하는 인트라 예측 기술의 어떤 조합을 수행하도록 구성될 수 있다.
엔트로피 인코딩 유닛(270)은 양자화된 잔차 계수(209), 인터 예측 파라미터, 인트라 예측 파라미터, 및/또는 루프 필터 파라미터에 엔트로피 인코딩 알고리즘 또는 방식(예를 들어, 가변 길이 코딩(variable length coding, VLC) 방식, 콘텍스트 적응형 VLC 방식(context adaptive VLC scheme, CALVC), 산술 코딩 방식, 콘텍스트 적응형 바이너리 산술 코딩(context adaptive binary arithmetic coding, CABAC), 구문 기반의 콘텍스트 적응형 바이너리 산술 코딩(syntax-based context-adaptive binary arithmetic coding, SBAC), 확률 간격 파티셔닝 엔트로피(PIPE) 코딩, 또는 다른 엔트로피 인코딩 방법론 또는 기술)을 적용하여 개별적으로 또는 공동으로 인코딩된 픽처 데이터(21)를 획득하도록(또는 전혀 획득하지 않도록) 구성된다. 인코딩된 픽처 데이터(21)는, 출력(272)에 의해 예를 들어 인코딩된 비트스트림(21)의 형태로 출력될 수 있다. 인코딩된 비트스트림(21)은 비디오 디코더(30)에 전송되거나, 또는 비디오 디코더(30)가 추후 전송하거나 또는 검색하기 위해 보관될 수 있다. 엔트로피 인코딩 유닛(270)은 추가적으로, 코딩 중인 현재 비디오 슬라이스에 대한 다른 구문 요소를 엔트로피 인코딩하도록 구성될 수 있다.
비디오 인코더(20)의 다른 구조적 변형이 비디오 스트림을 인코딩하는 데 사용될 수 있다. 예를 들어, 비변환 기반의 인코더(20)는 특정 블록 또는 프레임에 대해 변환 처리 유닛(206) 없이 잔차 신호를 직접 양자화할 수 있다. 다른 구현에서, 인코더(20)는 단일 유닛으로 결합된 양자화 유닛(208)과 역양자화 유닛(210)을 가지고 있을 수 있다.
도 13은 본 출원의 기술을 구현하도록 구성된 예시적인 비디오 디코더(30)를 나타내는 도면이다. 비디오 디코더(30)는, 디코딩된 픽처(131)를 얻기 위해, 예를 들어 인코더(100)에 의해 인코딩된, 인코딩된 픽처 데이터(21)(예를 들어, 인코딩된 비트스트림)를 수신하도록 구성된다. 디코딩 과정 중에, 비디오 디코더(30)는 비디오 인코더(100)로부터, 비디오 데이터, 예를 들어 인코딩된 비디오 슬라이스의 픽처 블록을 나타내는 인코딩된 비디오 비트스트림 및 연관된 구문 요소를 수신한다.
도 13의 예에서, 디코더(30)는 엔트로피 디코딩 유닛(304), 역양자화 유닛(310), 역변환 처리 유닛(312), 재구성 유닛(314)(예를 들어, 가산기(314)), 버퍼(316), 루프 필터(320), 디코딩된 픽처 버퍼(330), 및 예측 처리 유닛(360)을 포함한다. 예측 처리 유닛(360)은 인터 예측 유닛(344), 인트라 예측 유닛(354), 및 모드 선택 유닛(362)을 포함할 수 있다. 비디오 디코더(30)는, 일부 예에서, 도 12의 비디오 인코더(100)에 관해 설명된 인코딩 패스(encoding pass)의 일반적으로 역인 디코딩 패스를 수행할 수 있다.
인코더(20)와 관련하여 설명한 바와 같이, 역양자화 유닛(210), 역변환 처리 유닛(212), 재구성 유닛(214), 루프 필터(220), 디코딩된 픽처 버퍼(DPB, 230), 인터 예측 유닛(344), 및 인트라 예측 유닛(354)은 비디오 인코더(20)의 "내장 디코더"를 형성하는 것으로 지칭된다. 따라서, 역양자화 유닛(310)은 기능면에서 역양자화 유닛(110)과 동일할 수 있고, 역변환 처리 유닛(312)은 기능면에서 역변환 처리 유닛(212)과 동일할 수 있으며, 재구성 유닛(314)은 기능면에서 재구성 유닛(214)과 동일할 수 있고, 루프 필터(320)는 기능면에서 루프 필터(220)와 동일할 수 있으며, 디코딩된 픽처 버퍼(330)는 기능면에서 디코딩된 픽처 버퍼(230)와 동일할 수 있다. 따라서, 비디오(20) 인코더의 각각의 유닛과 기능에 대해 제공된 설명은 따라서 비디오 디코더(30)의 각각의 유닛과 기능에 적용된다.
엔트로피 디코딩 유닛(304)은, 예를 들어 양자화된 계수(309) 및/또는 디코딩된 코딩 파라미터(도 13에 도시되지 않음)를 얻기 위해, 인코딩된 픽처 데이터(21), 예를 들어 인터 예측 파라미터, 인트라 예측 파라미터, 루프 필터 파라미터, 및/또는 다른 구문 요소 중 (디코딩된) 어떤 것 또는 전부에 대해 엔트로피 디코딩을 수행하도록 구성된다. 엔트로피 디코딩 유닛(304)은 추가적으로, 인터 예측 파라미터, 인트라 예측 파라미터 및/또는 다른 구문 요소를 예측 처리 유닛(360)에 포워딩하도록 구성된다. 비디오 디코더(30)는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 구문 요소를 수신할 수 있다.
엔트로피 디코딩 유닛(304)은, 예를 들어 양자화된 계수(309) 및/또는 디코딩된 코딩 파라미터(도 13에 도시되지 않음)를 얻기 위해, 비트스트림(21)(또는 일반적으로 인코딩된 픽처 데이터(21))를 파싱하고, 예를 들어 인코딩된 픽처 데이터(21), 예를 들어 인터 예측 파라미터(예를 들어 참조 픽처 인덱스와 움직임 벡터) 중 어떤 것 또는 전부, 인트라 예측 파라미터(예를 들어, 인트라 예측 모드 또는 인덱스), 변환 파라미터, 양자화 파라미터, 루프 필터 파라미터, 및/또는 다른 구문 요소에 대해 엔트로피 디코딩을 수행하도록 구성된다. 인코더(20)의 엔트로피 인코딩 유닛(270)에 관해 설명한 바와 같이, 엔트로피 디코딩 유닛(304)은 인코딩 방식에 대응하는 디코딩 알고리즘이나 디코딩 방식을 적용하도록 구성될 수 있다. 엔트로피 디코딩 유닛(304)은 추가적으로, 인터 예측 파라미터, 인트라 예측 파라미터, 및/또는 다른 구문 요소를 모드 적용 유닛(360)에 제공하고, 다른 파라미터를 디코더(30)의 다른 유닛에 제공하도록 구성될 수 있다. 비디오 디코더(30)는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 구문 요소를 수신할 수 있다. 슬라이스와 각각의 구문 요소 외에 또는 이들의 대안으로서, 타일 그룹 및/또는 타일 및 각각의 구문 요소가 수신되거나 및/또는 사용될 수 있다.
역양자화 유닛(310)은 기능면에서 역양자화 유닛(110)과 동일할 수 있고, 역변환 처리 유닛(312)은 기능면에서 역변환 처리 유닛(112)과 동일할 수 있으며, 재구성 유닛(314)은 기능면에서 재구성 유닛(114)과 동일할 수 있고, 버퍼(316)는 기능면에서 버퍼(116)와 동일할 수 있으며, 루프 필터(320)는 기능면에서 루프 필터(120)와 동일할 수 있고, 디코딩된 픽처 버퍼(330)는 기능면에서 디코딩된 픽처 버퍼(130)와 동일할 수 있다.
디코더(30)의 실시예는 분할 유닛(도 13에 도시되지 않음)을 포함할 수 있다. 하나의 예에서, 비디오 디코더(30)의 예측 처리 유닛(360)은 전술한 분할 기술의 어떤 조합을 수행하도록 구성될 수 있다.
예측 처리 유닛(360)은 인터 예측 유닛(344)과 인트라 예측 유닛(354)을 포함할 수 있다. 여기서, 인터 예측 유닛(344)은 기능면에서 인터 예측 유닛(144)과 동일할 수 있고, 인트라 예측 유닛(354)은 기능면에서 인트라 예측 유닛(154)과 동일할 수 있다. 예측 처리 유닛(360)은 일반적으로 블록 예측을 수행하거나 및/또는 인코딩된 데이터(21)로부터 예측 블록(365)을 획득한다. 예를 들어, 예측 처리 유닛(360)은 엔트로피 디코딩 유닛(304)으로부터 예측 관련 파라미터 및/또는 선택된 예측 모드에 관한 정보를 (명시적으로 또는 묵시적으로) 수신하거나 또는 획득하도록 구성된다.
비디오 슬라이스가 인트라 코딩된(I) 슬라이스로서 코딩될 때, 예측 처리 유닛(360)의 인트라 예측 유닛(354)은 시그널링된 인트라 예측 모드 및 현재 프레임이나 픽처의 이전에 디코딩된 블록으로부터의 데이터에 기초하여 현재 비디오 슬라이스의 픽처 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 비디오 프레임이 인터 코딩된(즉, B 또는 P) 슬라이스로서 코딩될 때, 예측 처리 유닛(360)의 인터 예측 유닛(예를 들어, 움직임 보상 유닛)은 엔트로피 디코딩 유닛(304)으로부터 수신된 움직임 벡터 및 다른 구문 요소에 기초하여 현재 비디오 슬라이스의 비디오 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 인터 예측을 위해, 예측 블록은 참조 픽처 목록 중 하나의 목록에 있는 참조 픽처 중 하나로부터 생성될 수 있다. 비디오 디코더(30)는 DPB(330)에 저장된 참조 픽처에 기반한 디폴트 구성 기술을 이용하여 참조 프레임 목록, 즉 목록 0과 목록 1을 구성할 수 있다.
예측 처리 유닛(360)은 움직임 벡터 및 다른 구문 요소를 파싱하여 현재 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고, 디코딩 중인 현재 비디오 블록에 대한 예측 블록을 생성하기 위해 예측 정보를 이용하도록 구성된다. 예를 들어, 예측 처리 유닛(360)은 수신된 구문 요소의 일부를 이용하여 비디오 슬라이스의 비디오 블록, 인터 예측 슬라이스 유형(예를 들어, B 슬라이스, 또는 P 슬라이스, 또는 GPB 슬라이스), 슬라이스에 대한 참조 픽처 목록 중 하나 이상의 목록에 대한 구성 정보, 슬라이스의 각각의 인터 코딩된 비디오 블록에 대한 움직임 벡터, 슬라이스의 각각의 인터 코딩된 비디오 블록에 대한 인터 예측 상태, 및 다른 정보를 코딩하는 데 사용되는 예측 모드(예를 들어, 인트라 예측이나 인터 예측)를 결정하여 현재 비디오 슬라이스 내의 비디오 블록을 디코딩한다.
역양자화 유닛(310)은 비트스트림으로 제공되고 엔트로피 디코딩 유닛(304)에 의해 디코딩되는 양자화된 변환 계수를 반대로 양자화, 즉 역양자화하도록 구성된다. 역양자화 프로세스는, 적용되어야 하는 양자화의 정도와, 마찬가지로 역양자화의 정도를 결정하기 위해, 비디오 슬라이스 내의 각각의 비디오 블록에 대해 비디오 인코더(100)에 의해 계산되는 양자화 파라미터를 사용하는 것을 포함할 수 있다.
역양자화 유닛(310)은 인코딩된 픽처 데이터(21)로부터 양자화 파라미터(QP)(또는 일반적으로 역양자화와 관련된 정보)와 (예를 들어, 엔트로피 디코딩 유닛(304)이 예를 들어 파싱 및/또는 디코딩에 의해) 양자화된 계수를 수신하고, 디코딩된 양자화된 계수(309)에 대해 양자화 파라미터에 기초하여 역양자화를 적용하여 역양자화된 계수(311)(변환 계수(311)라고도 함)를 획득하도록 구성될 수 있다.
역변환 처리 유닛(312)은 픽셀 영역에서 잔차 블록을 생성하기 위해 역변환, 예를 들어 역 DCT, 또는 역 정수 변환, 또는 개념적으로 유사한 역 변환 프로세스를 변환 계수에 적용하도록 구성된다.
역변환 처리 유닛(312)은 변환 계수(311)라고도 하는 역양자화된 계수(311)를 수신하고, 샘플 영역에서 재구성된 잔차 블록(213)을 얻기 위해, 변환을 역양자화된 계수(311)에 적용하도록 구성될 수 있다. 재구성된 잔차 블록(213)은 변환 블록(313)으로 지칭될 수 있다. 이 변환은 역변환, 예를 들어 역 DCT, 또는 역 DST, 또는 역 정수 변환, 또는 개념적으로 유사한 역 변환 프로세스일 수 있다. 역변환 처리 유닛(312)은 추가적으로, (예를 들어 엔트로피 디코딩 유닛(304)이 예를 들어 파싱 및/또는 디코딩에 의해) 인코딩된 픽처 데이터(21)로부터 변환 파라미터 또는 대응하는 정보를 수신하도록 구성됨으로써, 역양자화된 계수(311)에 적용될 변환을 결정한다.
재구성 유닛(314)(예를 들어, 가산기(314))은 재구성된 잔차 블록(313)의 샘플 값과 예측 블록(365)의 샘플 값을 더함으로써 역변환 블록(313)(즉, 재구성된 잔차 블록(313))을 예측 블록(365)에 더하여 예를 들어 샘플 영역에서 재구성된 블록(315)을 획득하도록 구성된다.
(코딩 루프 내의 또는 코딩 루프 이후의) 루프 필터 유닛(320)은 필터링된 블록(321)을 얻기 위해, 예를 들어 픽셀 전환을 부드럽게 하거나 또는 그렇지 않으면 비디오 품질을 향상시키기 위해, 재구성된 블록(315)을 필터링하도록 구성된다. 루프 필터 유닛(320)은 하나 이상의 루프 필터, 예컨대 디블로킹 필터, 또는 샘플 적응형 오프셋(SAO) 필터, 또는 하나 이상의 다른 필터, 예를 들어 적응형 루프 필터(ALF), 또는 잡음 억제 필터(NSF), 또는 이들의 어떤 조합을 포함할 수 있다. 일 예에서, 루프 필터 유닛(220)은 디블로킹 필터, SAO 필터, 및 ALF 필터를 포함할 수 있다. 필터링 프로세스의 순서가 디블로킹 필터, SAO, 및 ALF일 수 있다. 다른 예에서, 채도 스케일링(luma mapping with chroma scaling, LMCS)을 이용한 루마 매핑(즉, 적응형 인루프 리셰이퍼)이라는 프로세스가 추가된다. 이 프로세스는 디블로킹 이전에 수행된다. 다른 예에서, 디블로킹 필터 프로세스는 예를 들어 내부 서브블록 에지, 예를 들어 아핀 서브블록 에지(affine sub-blocks edge), ATMVP 서브블록 에지, 서브블록 변환(sub-block transform, SBT) 에지, 및 인트라 서브파티션(intra sub-partition, ISP) 에지에도 적용될 수 있다. 도 13에는 루프 필터 유닛(320)이 루프 필터인 것으로 도시되어 있지만, 다른 구성에서는 루프 필터 유닛(320)이 포스트 루프 필터로서 구현될 수 있다.
주어진 프레임 또는 픽처 내의 디코딩된 비디오 블록(321)은 추후 움직임 보상에 사용되는 참조 픽처를 저장하는 디코딩된 픽처 버퍼(330)에 저장된다.
픽처의 디코딩된 비디오 블록(321)은 디코딩된 픽처 버퍼(330)에 저장되고, 디코딩된 픽처(331)는 다른 픽처에 대한 추후 움직임 보상 및/또는 각각 디스플레이를 위한 참조 픽처로서 저장된다.
픽처의 디코딩된 비디오 블록(321)은 디코딩된 픽처 버퍼(330)에 저장되고, 디코딩된 픽처 버퍼(330)는 다른 픽처에 대한 추후 움직임 보상을 위해 및/또는 각각 디스플레이에 출력을 위해 디코딩된 픽처(331)를 참조 픽처로서 저장한다.
디코더(30)는 사용자에게 제공하거나 또는 사용자의 시청을 위해 예를 들어 디코딩된 픽처(331)를 출력(332)을 통해 출력하도록 구성된다.
압축된 비트스트림을 디코딩하기 위해 비디오 디코더(30)의 다른 변형이 사용될 수 있다. 예를 들어, 디코더(30)는 루프 필터링 유닛(320) 없이 출력 비디오 스트림을 생성할 수 있다. 예를 들어, 비변환 기반의 디코더(30)는 역변환 처리 유닛(312) 없이 특정 블록 또는 프레임에 대한 잔차 신호를 직접 역양자화할 수 있다. 다른 구현에서, 비디오 디코더(30)는 단일 유닛으로 결합된 역양자화 유닛(310)과 역변환 처리 유닛(312)을 가지고 있을 수 있다.
전술한 실시예에 추가하여 또는 대안적으로, 도 26에 따른 또 다른 실시예에서, 인터 예측 유닛(344)은 인터 예측 유닛(244)(특히, 움직임 보상 유닛)일 수 있고, 인트라 예측 유닛(354)은 기능면에서 인터 예측 유닛(254)과 동일할 수 있으며, 파티셔닝 및/또는 (예를 들어 엔트로피 디코딩 유닛(304)에 의해 예를 들어 파싱 및/또는 디코딩에 의해) 예측 파라미터 또는 인코딩된 픽처 데이터(21)로부터 수신된 각각의 정보에 기초하여 분할 또는 분할 결정 및 예측을 수행한다. 모드 적용 유닛(360)은, 예측 블록(365)을 얻기 위해, 재구성된 픽처, 또는 블록, 또는 각각의 샘플(필터링된 또는 필터링되지 않은)에 기초하여 블록마다 예측(인트라 예측 또는 인터 예측)을 수행하도록 구성될 수 있다.
비디오 슬라이스가 인트라 인코딩된(I) 슬라이스로서 코딩될 때, 모드 적용 유닛(360)의 인트라 예측 유닛(354)은 시그널링된 인트라 예측 모드 및 현재 픽처의 이전에 디코딩된 블록으로부터의 데이터에 기초하여 현재 비디오 슬라이스의 픽처 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 비디오 픽처가 인터 코딩된(즉, B 또는 P) 슬라이스로서 코딩될 때, 모드 적용 유닛(360)의 인터 예측 유닛(344)(예를 들어 움직임 보상 유닛)은 움직임 벡터 및 엔트로피 디코딩 유닛(304)으로부터 수신된 다른 구문 요소에 기초하여 현재 비디오 슬라이스의 비디오 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 인터 예측의 경우, 참조 픽처 목록 중 하나에 있는 참조 픽처 중 하나로부터 예측 블록이 생성될 수 있다. 비디오 디코더(30)는 DPB(330)에 저장된 참조 픽처에 기초하여 디폴트 구성 기술을 이용하여 참조 프레임 목록, 즉 목록 0과 목록 1을 구성할 수 있다. 동일하거나 또는 유사한 내용이 슬라이스(예를 들어 비디오 슬라이스)에 추가하여 또는 대안적으로 타일 그룹(예를 들어 비디오 타일 그룹) 및/또는 타일(예를 들어 비디오 타일)을 이용하는 실시예에 적용될 수 있다. 예를 들어, 비디오가 I, 또는 P, 또는 B 타일 그룹 및/또는 타일을 이용하여 코딩될 수 있다.
모드 적용 유닛(360)은 움직임 벡터 또는 관련된 정보 및 다른 구문 요소를 파싱하여 현재 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고, 예측 정보를 이용하여 디코딩 중인 현재 비디오 블록에 대한 예측 블록을 생성하도록 구성된다. 예를 들어, 모드 적용 유닛(360)은 수신된 구문 요소 중 일부를 이용하여 비디오 슬라이스의 비디오 블록을 코딩하는 데 사용되는 예측 모드(예를 들어, 인트라 예측 또는 인터 예측), 인터 예측 슬라이스 유형(예를 들어, B 슬라이스, 또는 P 슬라이스, 또는 GPB 슬라이스), 슬라이스에 대한 참조 픽처 목록 중 하나 이상의 목록에 대한 구성 정보, 슬라이스의 각각의 인터 코딩된 비디오 블록에 대한 움직임 벡터, 슬라이스의 각각의 인터 코딩된 비디오 블록에 대한 인터 예측 상태, 및 다른 정보를 결정함으로써, 현재 비디오 슬라이스 내의 비디오 블록을 디코딩한다. 동일하거나 또는 유사한 내용이 슬라이스(예를 들어 비디오 슬라이스)에 추가하여 또는 대안적으로 타일 그룹(예를 들어 비디오 타일 그룹) 및/또는 타일(예를 들어 비디오 타일)을 이용하는 실시예에 적용될 수 있다. 예를 들어, 비디오가 I, 또는 P 또는 B 타일 그룹 및/또는 타일을 이용하여 코딩될 수 있다.
도 1에 도시된 비디오 디코더(30)의 실시예는 슬라이스(비디오 슬라이스라고도 함)를 이용하여 픽처를 분할하거나 및/또는 디코딩하도록 구성될 수 있다. 여기서, 픽처가 (보통 중첩하지 않는) 하나 이상의 슬라이스로 분할되거나 또는 (일반적으로 중첩하지 않는) 하나 이상의 슬라이스를 이용하여 디코딩되고, 각각의 슬라이스는 하나 이상의 블록(예를 들어, CTU) 또는 하나 이상의 그룹의 블록(예를 들어, 타일(H.265/HEVC 및 VVC) 또는 브릭(VVC))을 포함할 수 있다.
도 13에 도시된 비디오 디코더(30)의 실시예는 슬라이스/타일 그룹(비디오 타일 그룹이라고도 함) 및/또는 타일(비디오 타일이라고도 함)을 이용하여 픽처를 분할하거나 및/또는 디코딩하도록 구성될 수 있다. 여기서, 픽처가 (일반적으로 중첩하지 않는) 하나 이상의 슬라이스/타일 그룹으로 분할되거나 또는 (일반적으로 중첩하지 않는) 하나 이상의 슬라이스/타일 그룹을 이용하여 디코딩되고, 각각의 슬라이스/타일 그룹은 예를 들어 하나 이상의 블록(예를 들어, CTU) 또는 하나 이상의 타일을 포함할 수 있고, 각각의 타일은 예를 들어 직사각형 모양일 수 있고 하나 이상의 블록(예를 들어, CTU), 예를 들어 완전한 블록 또는 부분적 블록을 포함할 수 있다.
비디오 디코더(30)의 다른 변형이 인코딩된 픽처 데이터(21)를 디코딩하는 데 사용될 수 있다. 예를 들어, 디코더(30)는 루프 필터링 유닛(320) 없이 출력 비디오 스트림을 생성할 수 있다. 예를 들어, 비변환 기반의 디코더(30)는 역변환 처리 유닛(312) 없이 특정 블록 또는 프레임에 대한 잔차 신호를 직접 역양자화할 수 있다. 다른 구현에서, 비디오 디코더(30)는 단일 유닛으로 결합되는 역양자화 유닛(310)과 역변환 처리 유닛(312)을 가지고 있을 수 있다.
인코더(20)와 디코더(30)에서, 현재 단계의 처리 결과가 더 처리된 후 다음 단계로 출력될 수 있다는 것을 이해해야 한다. 예를 들어, 보간 필터링, 움직임 벡터 도출, 또는 루프 필터링 이후, 클립(Clip) 또는 시프트(Shift)와 같은 추가 연산이 보간 필터링, 또는 움직임 벡터 도출, 또는 루프 필터링의 처리 결과에 대해 수행될 수 있다.
도 14는 본 개시의 일 실시예에 따른 비디오 코딩 장치(400)의 개략도이다. 비디오 코딩 장치(400)는 본 명세서에 설명된 바와 같이 개시된 실시예를 구현하는 데 적합하다. 일 실시예에서, 비디오 코딩 장치(400)는 도 11a의 비디오 디코더(30)와 같은 디코더이거나 또는 도 11a의 비디오 인코더(20)와 같은 인코더일 수 있다. 일 실시예에서, 비디오 코딩 장치(400)는 전술한 바와 같이 도 11a의 비디오 디코더(30)이거나 또는 도 11a의 비디오 인코더(20)의 하나 이상의 구성 요소일 수 있다.
비디오 코딩 장치(400)는 데이터를 수신하기 위한 인그레스 포트(ingress port, 410)와 수신기 유닛(Rx, 420); 데이터를 처리할 프로세서, 로직 유닛, 또는 중앙 처리 장치(CPU, 430); 데이터를 전송하기 위한 송신기 유닛(Tx, 440)과 이그레스 포트(egress port, 450); 및 데이터를 저장하기 위한 메모리(460)를 포함한다. 비디오 코딩 장치(400)는 인그레스 포트(410), 수신기 유닛(420), 송신기 유닛(440), 및 광 신호 또는 전기 신호의 송신 또는 수신을 위해 송신 포트(450)에 결합된 광전(optical-to-electrical, OE) 구성 요소와 전광(electrical-to-optical, EO) 구성 요소도 포함할 수 있다.
프로세서(430)는 하드웨어와 소프트웨어에 의해 구현된다. 프로세서(430)는 하나 이상의 CPU 칩, 코어(예를 들어, 멀티코어 프로세서), FPGA, ASIC, 및 DSP로서 구현될 수 있다. 프로세서(430)는 인그레스 포트(410), 수신기 유닛(420), 송신기 유닛(440), 이그레스 포트(450), 및 메모리(460)와 통신한다. 프로세서(430)는 코딩 모듈(470)을 포함한다. 코딩 모듈(470)은 전술한 개시된 실시예를 구현한다. 예를 들어, 코딩 모듈(470)은 다양한 코딩 연산을 구현하거나, 또는 처리하거나, 또는 준비하거나, 또는 제공한다. 따라서, 코딩 모듈(470)을 포함하면 비디오 코딩 장치(400)의 기능이 실질적으로 향상되고, 비디오 코딩 장치(400)가 다른 상태로 변환하는 데 영향을 미친다. 대안적으로, 코딩 모듈(470)은 메모리(460)에 저장되고 프로세서(430)에 의해 실행되는 명령어로서 구현된다.
메모리(460)는 하나 이상의 디스크, 테이프 드라이브, 및 솔리드 스테이트 드라이브를 포함하고, 오버플로우 데이터 저장 장치로 사용되어, 이러한 프로그램이 실행을 위해 선택될 때 프로그램을 저장하고, 프로그램 실행 중에 판독된 명령 및 데이터를 저장하는 데 사용될 수 있다. 메모리(460)는 휘발성 및/또는 비휘발성일 수 있고, 읽기 전용 메모리(read-only memory, ROM), 랜덤 액세스 메모리(random access memory, RAM), TCAM(ternary content-addressable memory) 및/또는 SRAM(static random-access memory)일 수 있다.
도 15는 예시적인 일 실시예에 따라 도 11의 소스 장치(310)와 목적지 장치(320) 중 하나 또는 둘 다로서 사용될 수 있는 장치(500)의 단순화된 블록도이다. 장치(500)는 전술한 본 출원의 기술을 구현할 수 있다. 장치(500)는 복수의 컴퓨팅 장치를 포함하는 컴퓨팅 시스템의 형태일 수 있거나, 또는 단일 컴퓨팅 장치의 형태, 예를 들어 모바일 폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 노트북 컴퓨터, 및 데스크톱 컴퓨터 등일 수 있다.
장치(500) 내의 프로세서(502)는 중앙처리장치일 수 있다. 대안적으로, 프로세서(502)는 현재 존재하거나 또는 향후 개발될 정보를 조작하거나 또는 처리할 수 있는 어떤 다른 유형의 장치 또는 복수의 장치일 수 있다. 개시된 구현은 도시된 바와 같이 단일 프로세서, 예를 들어 프로세서(502)로 실시될 수 있지만, 하나 이상의 프로세서를 이용하여 속도와 효율성의 장점이 얻어질 수 있다.
일 구현에서, 장치(500) 내의 메모리(504)는 읽기 전용 메모리(ROM) 장치 또는 랜덤 액세스 메모리(RAM) 장치일 수 있다. 어떤 다른 적절한 유형의 저장 장치가 메모리(504)로서 사용될 수 있다. 메모리(504)는 버스(512)를 이용하여 프로세서(502)에 의해 액세스되는 코드와 데이터(506)를 포함할 수 있다. 메모리(504)는 운영체제(508)와 애플리케이션 프로그램(510)을 더 포함할 수 있다. 애플리케이션 프로그램(510)은 프로세서(502)가 본 명세서에 설명된 방법을 수행할 수 있게 하는 적어도 하나의 프로그램을 포함한다. 예를 들어, 애플리케이션 프로그램(510)은 본 명세서에 설명된 방법을 수행하는 비디오 코딩 애플리케이션을 더 포함하는 애플리케이션 1 내지 애플리케이션 N을 포함할 수 있다. 장치(500)는 예를 들어 모바일 컴퓨팅 장치와 함께 사용되는 메모리 카드일 수 있는 보조 스토리지(514) 형태의 추가 메모리를 포함할 수도 있다. 비디오 통신 세션이 상당한 양의 정보를 포함할 수 있으므로, 이러한 정보가 전체적으로 또는 부분적으로 보조 스토리지(514)에 저장될 수 있고 처리를 위해 필요에 따라 메모리(504)에 로딩될 수 있다. 장치(500)는 디스플레이(518)와 같은 하나 이상의 출력 장치를 포함할 수도 있다. 디스플레이(518)는, 하나의 예에서, 디스플레이를 터치 입력을 감지하도록 작동 가능한 터치 감지 요소와 결합하는 터치 감지 디스플레이일 수 있다. 디스플레이(518)는 버스(512)를 통해 프로세서(502)에 연결될 수 있다.
장치(500)는 디스플레이(518)와 같은 하나 이상의 출력 장치를 포함할 수도 있다. 디스플레이(518)는, 하나의 예에서, 디스플레이를 터치 입력을 감지하도록 작동 가능한 터치 감지 요소와 결합하는 터치 감지 디스플레이일 수 있다. 디스플레이(518)는 버스(512)를 통해 프로세서(502)에 연결될 수 있다. 사용자가 장치(500)를 프로그래밍하게 하거나 또는 그렇지 않으면 다른 방식으로 사용하게 하는 다른 출력 장치가 디스플레이(518) 외에 또는 디스플레이(518)의 대안으로서 제공될 수 있다. 출력 장치가 디스플레이이거나 또는 디스플레이를 포함하는 경우, 디스플레이는 액정 디스플레이(liquid crystal display, LCD), 또는 음극선관(cathode-ray tube, CRT) 디스플레이, 또는 플라즈마 디스플레이, 또는 유기 LED(organic LED, OLED)와 같은 발광 다이오드(LED) 디스플레이를 포함하는 다양한 방식으로 구현될 수 있다.
장치(500)는 또한 이미지 감지 장치(520), 예를 들어 카메라, 또는 현재 존재하거나 또는 추후에 개발될, 이 장치(500)를 조작하는 사용자의 이미지와 같은 이미지를 감지할 수 있는 어떤 다른 이미지 감지 장치(520)를 포함하거나 또는 이러한 장치와 통신할 수 있다. 이미지 감지 장치(520)는 장치(500)를 조작하는 사용자를 향하도록 위치할 수 있다. 일 예에서, 이미지 감지 장치(520)의 위치와 광축은 시야가 디스플레이(518)에 직접 인접하고 디스플레이(518)가 보일 수 영역을 포함하도록 구성된다.
장치(500)는 또한 사운드 감지 장치(522), 예를 들어 마이크, 또는 장치(500) 근처에서 사운드를 감지할 수 있는, 현재 존재하거나 추후에 개발될 어떤 다른 사운드 감지 장치를 포함하거나 또는 이들과 통신할 수 있다. 사운드 감지 장치(522)는 장치(500)를 조작하는 사용자를 향하도록 위치할 수 있고, 사용자가 장치(500)를 조작하는 동안 사용자에 의해 만들어진 사운드, 예를 들어 음성 또는 다른 발음을 수신하도록 구성될 수 있다.
도 15는 장치(500)의 프로세서(502)와 메모리(504)가 단일 유닛에 통합된 것으로 도시하고 있지만, 다른 구성이 활용될 수 있다. 프로세서(502)의 동작은 로컬 영역이나 다른 네트워크에 직접 연결되거나 또는 로컬 영역이나 다른 네트워크에 걸쳐 연결될 수 있는 복수의 머신(각각의 머신이 하나 이상의 프로세서를 가지고 있음)에 분산될 수 있다. 메모리(504)는 복수의 머신, 예컨대 네트워크 기반의 메모리 또는 장치(500)의 동작을 수행하는 복수의 머신의 메모리에 분산될 수 있다. 여기서, 단일 버스로 도시되어 있지만, 장치(500)의 버스(512)는 복수의 버스로 구성될 수 있다. 또한, 보조 스토리지(514)는 장치(500)의 다른 구성 요소에 직접 연결될 수 있거나 또는 네트워크를 통해 액세스될 수 있고, 메모리 카드와 같은 단일 통합 유닛 또는 복수의 메모리 카드와 같은 복수의 유닛을 포함할 수 있다. 따라서, 장치(500)는 매우 다양한 구성으로 구현될 수 있다.
(분할 제한 요소들 간의 관계에 관한 실시예)
본 개시는 파티션 제한 요소들(서로 다른 픽처 분할 방법에 대한 파티셔닝 규칙의 설정) 간의 관계에 관한 것으로, 이 제한 요소는 복수의 인코딩된 픽처를 포함하는 비트스트림을 통해 시그널링될 수 있다. 따라서, 본 발명은 이러한 비트스트림을 생성하거나, 또는 디코딩하거나, 또는 처리하기 위한, 특히 분할 제한 요소를 비트스트림에 포함하고 새로운 분할 규칙에 따라 분할 제한을 추출하기 위한 장치와 방법을 제공한다.
전술한 구문 요소의 이름이 통상적으로 사용되는 것처럼 (이 문서 전체에서) 사용된다는 것을 유의해야 한다. 하지만, 이러한 이름이 기술적 맥락을 변경하지 않고 변경될 수 있다는 것이 명확해야 한다. 따라서, 중요하게 간주되어야 할 것은 구문 요소의 논리적 의미이다.
현재, 파티션 제한 요소들(예를 들어, MaxBtSizeY, MaxMttDepth, 및 MinQtSizeY)은 파티션 제한 요소의 정의 범위에서 개별적으로 시그널링된다. 특히, 현재, CtbSizeY의 구문 요소(예를 들어, log2_ctu_size_minus2), 및 MinQtSizeY의 구문 요소(예를 들어, log2_min_qt_size_intra_slices_minus2와 log2_min_qt_size_inter_slices_minus2), 및 MaxMttDepth의 구문 요소(즉, max_mtt_hierarchy_depth_inter_slices와 max_mtt_hierarchy_depth_intra_slices)가 시퀀스 파라미터 세트(Sequence Parameter Set, SPS)에서 시그널링된다. 또한, 루마 CTB 크기와 MaxBtSizeY(즉, log2_diff_ctu_max_bt_size) 간의 차이의 구문 요소가 슬라이스 헤더에서 시그널링된다. SPS와 슬라이스 헤더는 픽쳐 비트스트림에 포함될 수 있다.
예시적인 SPS 구문, 특히 SPS RBSP(Raw Byte Sequence Payload) 구문이 도 8에 도시되어 있다. 이 구문의 SPS RBSP 의미는 다음과 같다.
'pic_width_in_luma_samples'는 디코딩된 각각의 픽처의 폭을 루마 샘플 단위로 지정하고, 0이 아니어야 하며, MinCbSizeY의 정수배이여야 한다.
'pic_height_in_luma_samples'는 디코딩된 각각의 픽처의 높이를 루마 샘플 단위로 지정하고, 0이 아니어야 하며, MinCbSizeY의 정수배이어야 한다.
'log2_ctu_size_minus2'+ 2는 각각의 CTU의 루마 CTB 크기를 지정한다.
CtbLog2SizeY, CtbSizeY, MinCbLog2SizeY, MinCbSizeY, MinTbLog2SizeY, MaxTbLog2SizeY, PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeIn, 및 PicWidthInSamplesC와 같은 요소들이 일반적으로 다음과 같이 도출된다.
● CtbLog2SizeY = log2_ctu_size_minus2 + 2
● CtbSizeY = 1  <<  CtbLog2SizeY
● MinCbLog2SizeY = 2
● MinCbSizeY = 1  <<  MinCbLog2SizeY
● MinTbSizeY = 4
● MaxTbSizeY = 64
● PicWidthInCtbsY = Ceil( pic_width_in_luma_samples χ CtbSizeY)
● PicHeightInCtbsY = Ceil( pic_height_in_luma_samples χ CtbSizeY )
● PicSizeInCtbsY = PicWidthInCtbsY * PicHeightInCtbsY
● PicWidthInMinCbsY = pic_width_in_luma_samples / MinCbSizeY
● PicHeightInMinCbsY = pic_height_in_luma_samples / MinCbSizeY
● PicSizeInMinCbsY = PicWidthInMinCbsY * PicHeightInMinCbsY
● PicSizeInSamplesY = pic_width_in_luma_samples * pic_height_in_luma_samples
● PicWidthInSamplesC = pic_width_in_luma_samples / SubWidthC
● PicHeightInSamplesC = pic_height_in_luma_samples / SubHeightC
● 'log2_min_qt_size_intra_slices_minus2'+2는 slice_type이 2 (I) 인 슬라이스 내의 CTU의 쿼드트리 분할로 인해 생성되는 리프 블록의 최소 루마 크기를 지정한다. log2_min_qt_size_intra_slices_minus2의 값은 0 ~ CtbLog2SizeY-2(0과 CtbLog2SizeY-2를 포함하는) 범위에 있어야 한다.
● MinQtLog2SizeIntraY = log2_min_qt_size_intra_slice_minus2 + 2
'log2_min_qt_size_inter_slices_minus2'+ 2는 slice_type이 0 (B) 또는 1 (P)인 슬라이스내의 CTU의 쿼드트리 분할로 인해 생성되는 리프 블록의 최소 루마 크기를 지정한다. log2_min_qt_size_inter_slices_minus2의 값은 0 ~ CtbLog2SizeY-2(0과 CtbLog2SizeY-2를 포함하는) 범위에 있어야 한다.
● MinQtLog2 SizeInterY = log2_min_qt_size_inter_slices_minus2 + 2
'max_mtt_hierarchy_depth_inter_slices'는 slice_type이 0 (B) 또는 1 (P)인 슬라이스 내의 쿼드트리 리프의 멀티형 트리 분할로 인해 생성되는 코딩 유닛의 최대 계층 깊이를 지정한다. max_mtt_hierarchy_depth_inter_slices의 값은 0 ~ CtbLog2SizeY-MinTbLog2SizeY(0과 CtbLog2SizeY-MinTbLog2SizeY를 포함하는) 범위에 있어야 한다.
'max_mtt_hierarchy_depth_intra_slices'는 slice_type이 2 (I)인 슬라이스 내의 쿼드트리 리프의 멀티형 트리 분할로 인해 생성되는 코딩 유닛의 최대 계층 깊이를 지정한다. max_mtt_hierarchy_depth_intra_slices의 값은 0 ~ CtbLog2SizeY-MinTbLog2SizeY(0과 CtbLog2SizeY-MinTbLog2SizeY를 포함하는) 범위에 있어야 한다.
또한, 도 9는 예시적인 슬라이스 헤더 구문을 나타내는 도면이다. 이 구문의 슬라이스 헤더의 의미는 다음과 같다.
'log2_diff_ctu_max_bt_size'는 이진 분할을 이용하여 분할될 수 있는 코딩 블록의 루마 CTB 크기와 최대 루마 크기(폭 또는 높이) 간의 차이를 지정한다. log2_diff_ctu_max_bt_size의 값은 0 ~ CtbLog2SizeY-MinCbLog2SizeY(0과 CtbLog2SizeY-MinCbLog2SizeY를 포함하는) 범위에 있어야 한다.
log2_diff_ctu_max_bt_size가 없는 경우, log2_diff_ctu_max_bt_size의 값이 2라고 추정한다.
MinQtLog2SizeY, MaxBtLog2SizeY, MinBtLog2SizeY, MaxTtLog2SizeY, MinTtLog2SizeY, MaxBtSizeY, MinBtSizeY, MaxTtSizeY, MinTtSizeY, 및 MaxMttDepth와 같은 요소가 일반적으로 다음과 같이 도출된다.
● MinQtLog2SizeY = (slice_type = = I) ? MinQtLog2SizeIntraY : MinQtLog2SizeInterY
● MaxBtLog2SizeY = CtbLog2SizeY - log2_diff_ctu_max_bt_size
● MinBtLog2SizeY = MinCbLog2SizeY
● MaxTtLog2SizeY = (slice_type = = I) 5 : 6
● MinTtLog2SizeY = MinCbLog2SizeY
● MinQtSizeY = 1  <<  MinQtLog2SizeY
● MaxBtSizeY = 1  <<  MaxBtLog2SizeY
● MinBtSizeY = 1  <<  MinBtLog2SizeY
● MaxTtSizeY = 1  <<  MaxTtLog2SizeY
● MinTtSizeY = 1  <<  MinTtLog2SizeY
● MaxMttDepth = (slice_type = = I) ? max_mtt_hierarchy_depth_intra_slices : max_mtt_hierarchy_depth_inter_slices
도 8에 도시된 바와 같이, 현재, 픽처 시퀀스(예를 들어, 비디오 시퀀스의 픽처)의 폭과 높이가 구문 요소('pic_width_in_luma_samples'와 'pic_height_in_luma_samples')를 이용하여 표시된다. 관례상, 이러한 구문 요소는 픽처가 최소 크기의 코딩 블록으로 분할될 수 있도록 MinCbSizeY의 배수이어야 한다. 하지만, pic_height_in_luma_samples와 pic_width_in_luma_samples는 MinCbSizeY의 배수이어야 하지만, 사용 가능한 쿼드트리, 이진 트리, 및 삼진 트리 분할 방법을 각각 이용하여 픽처를 블록으로 완전히 분할할 수 있다는 것이 여전히 보장되지 않는다. 이 문제의 예를 설명하면 다음과 같다.
예시적으로 다음과 같이 가정한다.
● MinCbSizeY가 4와 같다.
● MinQtSizeY가 32와 같다
● MaxBtSizeY가 16과 같다
이 예에서, pic_width_in_luma_samples = 132이고 pic_width_in_luma_samples = 132이면, 픽처의 폭와 높이가 4의 배수이지만 여전히 픽처를 완전히 분할하는 것이 가능하지 않다. 그 이유는, 예를 들어 32×32의 크기를 가진 부모 블록이 이진 분할 또는 쿼드트리 분할을 이용하여 분할될 수 없다는 것인데, 쿼드트리 분할이 적용되면 MinQtSizeY 제한이 위반되고 이진 분할이 적용되면 MaxBtSizeY 제한이 위반되기 때문이다. 다르게 말하면, 폭 또는 높이가 4인 블록을 생성하는 것이 가능하지 않지만, 이는 픽처의 완전한 분할을 위해 필요하다.
따라서, 앞서 예시한 바와 같이, 현재 종래의 분할 규칙을 완전히 준수하여 픽처를 분할하는 문제가 있다. 이는 일부 픽처 크기가 인코딩될 수 없고 디코딩될 수 없다는 것을 의미하기 때문에 실제로 중요한 문제이다.
도 1은 본 발명의 일반적인 실시예에 따른 장치(100)를 나타내는 도면이다. 장치(100)는 예를 들어 인코딩된 픽처를 포함하는 비트스트림(101), 예를 들어 비디오 비트스트림을 생성하거나 또는 처리하는 데, 즉 조작하는 데 적합하다. 장치(100)는 픽처를 인코딩하고 비트스트림(101)을 생성하도록 구성된 인코더에 포함되거나 또는 인코더를 포함할 수 있다. 장치(100)는 파티션 제한 요소들 간의 관계를 결정할 수 있고, 이러한 파티션 제한 요소들 및/또는 파티션 제한 요소들의 관계를 비트스트림(101)에 포함할 수 있다. 이로써, 장치(100)는 파티션 제한 요소들 및/또는 관계를 비트스트림(101) 내의 SPS 구문 및/또는 슬라이스 헤더 구문에 추가할 수 있다.
유사한 방식으로, 디코더 장치는 비트스트림을 파싱하거나 및/또는 미리 정의된 규칙을 적용하여 비트스트림으로부터 파티셔닝과 관련된 제한 파라미터를 추정한다. 그런 다음, 제약 파라미터는 파티션을 올바르게 디코딩하고 복원하는 데 도움이 된다. 인코더와 디코더는 동일한 구문을 처리(process)한다.
특히, 장치(100)는 MaxBtSizeY(102)를 결정하하거나 및/또는 MaxMttDepth(103)와 MinCbSizeY(104)를 결정하도록 구성된다. 그런 다음, 장치(100)는 MaxBtSizeY(102) 및/또는 MaxMttDepth에 기초하여 MinQtSizeY(105)를 결정하도록 구성된다. 마지막으로, 장치(100)는 결정된 MinQtSizeY(105)를 간접적으로(즉, MinQtSizeY(105)가 도출될 수 있는 정보를 포함함으로써) 또는 직접적으로 비트스트림(101)에 포함하도록 구성된다.
도 1에 도시된 장치(100)에 기반한 본 발명의 제1 특정 실시예에 따른 장치 (100)에서, MinQtSizeY(105) 값 범위가 MaxBtSizeY(102)의 값에 기초하여 제한될 수 있다. 예를 들어, MinQtSizeY(105)의 상한이 MaxBtSizeY(102)로 제한될 수 있다. 즉, 제1 특정 실시예에 따른 장치(100)에서, MinQtSizeY(105)의 최소값이 MaxBtSizeY(102)보다 클 수 없다.
대안적으로, 또는 전술한 내용 외에, 제1 특정 실시예에 따른 장치(100)에서, MinQtSizeY(105) 값 범위가 MaxMttDepth(103)에 기초하여 제한될 수 있다. 이 경우에, 예를 들면,
● MaxMttDepth(103)이 0이면, MinQtSizeY(105)가 MinCbSizeY(104)일 수 있다(또는 MinCbSizeY(104)라고 추정할 수 있다).
● MaxMttDepth(103)이 0보다 크면, MinQtSizeY(105)의 상한이 (MinCbSizeY 104 << MaxMttDepth 103)일 수 있다. 즉, MinQtSizeY(105)가 (MinCbSizeY 104 << MaxMttDepth 103)보다 크지 않아야 한다.
특히, 이 문서 전체에서, 연산 x << y가 수학적으로 xy로 설명될 수 있다. 여기서, x는 2의 n 제곱이고, n은 음이 아닌 정수이다. 즉, x << y는 x를 y 비트만큼 왼쪽으로 시프트(shift)하는 것을 나타낸다.
따라서, 제1 특정 실시예에 따른 장치(100)는 MinQtSizeY(105)와 MinCbSizeY(104), MaxBtSizeY(102), 및/또는 MaxMttDepth(103) 사이의 관계를 설정하도록 구성되며, 특히 쿼드트리 분할 방법 또는 이진 분할 방법의 조합을 이용하여 부모 블록을 재귀적으로 분할함으로써 가장 작은 파티션 블록이 달성될 수 있도록 구성된다. 사용 가능한 분할 방법으로 (크기가 MinCbSizeY(104)인) 가장 작은 블록이 생성될 수 있으므로, MinCbSizeY(104)의 배수의 크기를 가진 픽처를 완전히 분할하는 것이 가능하다.
도 2와 도 3은 본 발명의 제2 특정 실시예에 따른 장치에 대한 SPS RPBS 구문(200)과 슬라이스 헤더 구문(300)을 나타내는 도면이다. 특히, 도 8에 도시된 종래의 SPS RBSP 구문이 도 2에 도시된 구문(200)으로 변경된다(새로운 요소가 굵게 표시되고, 제거된 요소에는 줄이 그어져 있다). 또한, 도 9에 도시된 종래의 슬라이스 헤더 구문이 도 3에 도시된 구문(300)으로 변경된다(새로운 요소가 굵게 표시되고, 제거된 요소에는 줄이 그어져 있다). 제2 특정 실시예에 따른 장치는 도 1에 도시된 장치(100) 위에 구축될 수 있거나, 또는 본 발명의 별도의 실시예일 수 있다. 제2 특정 실시예에 따른 장치에서, 이하가 구현된다.
● MaxBtSizeY(102)가 MinQtSizeY(105)에 대해 비트스트림(101)으로 시그널링된다. 다르게 말하면, 도 3에 도시된 바와 같이, MaxBtSizeY(102)와 MinQtSizeY(105) 간의 차이의 구문 요소(301)가 (예를 들어 log2_diff_max_bt_size_min_qt_size와 같은 구문 요소를 이용하여) 비트스트림(101)으로 시그널링될 수 있고, MaxBtSizeY(102)가 MinQtSizeY(105)와 log2_diff_max_bt_size_min_qt_size에 기초하여 (예를 들어, 비트스트림(101)의 디코더에서) 도출될 수 있다. 이 경우, 일 예에서,
* MaxBtSizeY(102) = MinQtSizeY(105) << log2_diff_max_bt_size_min_qt_size
* 특히, 이 예에서, MaxBtSizeY(102)와 MinQtSizeY(105) 간의 차이의 구문 요소(301)가 (특히 밑이 2인) 로그 스케일로 시그널링된다. 이 예에서, log2_diff_max_bt_size_min_qt_size가 양의 정수 값 또는 0 값만을 가질 수 있다.
● MaxMttDepth(103)가 MinQtSizeY(105)와 MinCbSizeY(104)에 대해 비트스트림(101)으로 시그널링된다. 도 2에 도시된 바와 같이, MaxMttDepth(103)와 MinQtSizeY(105)의 log-2 값의 차이의 구문 요소(201)가 (예를 들어, 구문 요소(diff_max_mtt_hierarchy_depth_log2_min_qt_size)를 이용하여) 비트스트림(101)으로 시그널링될 수 있다.
이러한 2개의 구문 요소(201)가 도 2에 도시되어 있다. 하나가 inter_slices를 위한 것이고, 나머지 하나가 intra_slices를 위한 것이다. 이 경우, 이 예에서,
* MaxMttDepth 103 = diff_max_mtt_hierarchy_depth_log2_min_qt_size + log2(MinQtSizeY) - log2(MinCbSizeY).
* 특히, 이 예에서, diff_max_mtt_hierarchy_depth_log2_min_qt_size가 로그 스케일로 시그널링된다고 다시 추정한다. log2(x) 함수는 밑이 2인 x의 로그에 대응한다.
도 3에서, 'log2_diff_max_bt_size_min_qt_size'는 이진 분할을 이용하여 분할될 수 있는 코딩 블록의 최대 루마 크기(폭 또는 높이)와 쿼드트리를 이용하여 분할될 수 있는 코딩 블록의 최소 루마 크기(폭 또는 높이) 간의 차이를 지정한다. log2_diff_ctu_max_bt_size의 값은 0 ~ CtbLog2SizeY-MinQtLog2SizeY(0과 CtbLog2SizeY-MinQtLog2SizeY를 포함하는) 범위에 있어야 한다.
도 4는 본 발명의 제3 특정 실시예에 따른 장치에 대한 SPS RPBS 구문(400)을 나타내는 도면이다. 제3 특정 실시예에 따른 장치는 도 1에 도시된 장치(100) 위에 구축될 수 있거나 또는 본 발명의 별도의 실시예일 수 있다. 앞서 언급한 바와 같이, 통상적으로 시그널링된 픽처 크기 요소(405, 406)(pic_width_in_luma_samples와 pic_height_in_luma_samples)가 각각 MinCbSizeY(104)의 정수배의 값으로 지정된다.
대조적으로, 제3 특정 실시예에 따른 장치의 제1 구현에서, 픽처 크기 요소(405, 406)가 MinQtSizeY(105)의 정수배인 값만을 가지도록 제한될 수 있다. 그 이점은, 경계 블록이 사용 가능한 분할 방법으로 쿼드트리 분할을 항상 사용하는 것이 가능하다는 것이다.
제3 특정 실시예에 따른 장치의 제2 구현에서, 픽처의 폭과 높이가 MinQtSizeY(105)에 기초하여 비트스트림(101)으로 시그널링될 수 있다. 특히, 도 8에 도시된 종래의 SPS RBSP 구문이 도 4에 도시된 구문(400)에 따라 변경된다(새로운 요소는 굵게 표시되고, 제거된 요소에는 줄이 그어져 있다).
이 경우, 도 4에 도시된 SPS 구문(400)에서, 4개의 구문 요소(401-404)가 시그널링될 수 있다(예를 들어, log2_diff_pic_height_min_Qt와 log2_diff_pic_width_min_Qt), 특히 intra_slice마다 2개의 구문 요소(높이/너비)와 inter_slice마다 2개의 구문 요소(높이/폭)가 시그널링될 수 있다. 바람직하게는, 이러한 구문 요소(401-404)는 실제 픽처 크기 요소(405, 406) 대신 시그널링되고, 픽처의 폭과 높이가 다음의 관계를 이용하여 결정될 수 있다.
● 루마 샘플 내의 픽처 폭 = MinQtSizeY(105) << log2_diff_pic_width_min_Qt
● 루마 샘플 내의 픽처 높이 = MinQtSizeY(105) << log2_diff_pic_height_min_Qt
구문 요소(401-404), 특히 그 차이점이 로그 스케일에 기초하여 SPS 구문(400)으로 표시될 수 있다.
도 5와 도 6은 본 발명의 제4 특정 실시예에 따른 장치에 대한 2개의 슬라이스 헤더 구문(5000, 600)을 각각 나타내는 도면이다. 제4 특정 실시예에 따른 장치는 도 1에 도시된 장치(100) 위에 구축될 수 있거나, 또는 본 발명의 별도의 실시예일 수 있다.
본 발명의 제4 특정 실시예에 따른 장치는, MaxMttDepth(103)가 0이라고 추정되거나, 또는 시그널링되거나, 또는 표시되면, MaxBtSizeY(102)(또는 MaxTtSizeY)가 여전히 비트스트림(101)에 존재할 수 있고, MinCbSizeY(104)보다 큰 값을 가질 수 있으며, MinBtSizeY(또는 MinTtSizeY)가 여전히 MinCbSizeY(104)와 동일한 값을 가지고 있을 수 있다는 문제와 관련되어 있다. 이 조건은 픽처 프레임의 완전한 분할이 여전히 가능하지 않을 수 있도록, 인코더 및/또는 디코더의 연산에 있어서 모호함을 생성할 수 있다.
제4 특정 실시예에 따른 장치의 제1 구현에서, MaxBtSizeY(102)(또는 MaxTtSizeY)가 MaxMttDepth(103)의 값에 기초하여 비트스트림(101)으로 시그널링되거나 또는 표시된다. 특히, 도 9에 도시된 종래의 슬라이스 헤더 구문이 도 5에 도시된 구문(5000)으로 변경된다(새로운 요소가 굵게 표시된다). 즉, 이 장치는 MaxMttDepth(103)에 의존하는 MaxBtSizeY(102)(또는 MaxTtSizeY)의 구문 요소(5001)를 비트스트림(101)에 포함하도록 구성된다.
구체적으로, MaxMttDepth(103)가 0이면, MaxBtSizeY(102)(또는 MaxTtSizeY)가 비트스트림(101)으로 시그널링되지 않을 수 있지만 (예를 들어 디코더에서) MinCbSizeY(104)와 같다고 추정될 수 있다. 대안적으로, MaxMttDepth(103)가 0이면, MaxBtSizeY(102)(또는 MaxTtSizeY)가 (예를 들어, 디코더에서) 예를 들어 4 또는 8과 같은 미리 정의된 디폴트 값이라고 추정한다.
'log2_diff_ctu_max_bt_size'는 이진 분할을 사용하여 분할될 수 있는 코딩 블록의 루마 CTB 크기와 최대 루마 크기(폭 또는 높이) 간의 차이를 다시 지정한다. log2_diff_ctu_max_bt_size의 값이 0 ~ CtbLog2SizeY-MinCbLog2SizeY(0과 CtbLog2SizeY-MinCbLog2SizeY를 포함하는) 범위에 있어야 한다.
log2_diff_ctu_max_bt_size가 없는 경우, 이하가 적용될 수 있다. slice_type이 2 (I)이고, max_mtt_hierarchy_depth_intra_slices가 1이면, log2_diff_ctu_max_bt_size의 값이 2라고 추정할 수 있다. 그렇지 않으면, log2_diff_ctu_max_bt_size의 값이 CtbLog2SizeY - MinCbLog2SizeY라고 추정할 수 있다.
제4 특정 실시예에 따른 장치의 제2 구현에서, MaxMttDepth(103)가 MaxBtSizeY(102)(또는 MaxTtSizeY)의 값에 기초하여 비트스트림(101)으로 시그널링되거나 또는 표시된다. 특히, 도 9에 도시된 종래의 슬라이스 헤더 구문이 도 6에 도시된 구문(600)으로 변경된다(새로운 요소가 굵게 표시된다). 즉, 이 장치는 MaxBtSizeY(102) 또는 MaxTtSizeY에 의존하는 MaxMttDepth(103)의 구문 요소(601)를 비트스트림(101)에 포함하도록 구성된다.
구체적으로, MaxBtSizeY(102)(또는 MaxTtSizeY)가 0일 때, MaxMttDepth(103)가 시그널링되지 않을 수 있지만, 예를 들어 디코더에서 0이라고 추정될 수 있다. MaxMttDepth(103)의 값이 0이면, 이진 분할이 적용될 수 없다는 것을 의미한다. 이 해결책에서, MaxBtSizeY(102)와 MaxTtSizeY의 구문 요소가 MaxMttDepth(103) 이전에 시그널링되어야 하지만 어떤 파라미터 세트 헤더에서도 제한되지 않는다.
'MaxTtSizeY'는 샘플 개수 측면에서 삼진 분할을 이용하여 분할될 수 있는 코딩 블록의 최대 루마 크기(폭 또는 높이)로 정의된다. ‘MinTtSizeY'는 샘플 개수 측면에서 삼진 분할을 사용하여 분할될 수 있는 코딩 블록의 최소 루마 크기(폭 또는 높이)로 정의된다.
도 6에서, 'max_mtt_hierarchy_depth'는 슬라이스 내의 쿼드트리 리프의 멀티형 트리 분할로 인해 생성되는 코딩 유닛에 대한 최대 계층 깊이를 지정한다. max_mtt_hierarchy_depth_inter_slices의 값은 0 ~ CtbLog2SizeY-MinTbLog2SizeY(0과 CtbLog2SizeY-MinTbLog2SizeY 를 포함하는) 범위에 있어야 한다. max_mtt_hierarchy_depth가 없는 경우, max_mtt_hierachiy_depth의 값이 0이라고 가정한다.
도 7은 본 발명의 일 실시예에 따른 방법(7000)을 나타내는 도면이다. 이 방법(7000)은 구체적으로 비트스트림(101)을 조작하기 위한 것이고, 도 1에 도시된 장치(100)에 의해 수행될 수 있다. 이 방법(7000)은 또한 비트스트림(101)의 픽처를 비트스트림(101)으로 인코딩하는 인코더, 즉 비트스트림(101)을 생성하는 인코더에 의해 수행될 수 있다.
이 방법(7000)은 MaxBtSizeY(102)를 결정하는 단계(7001) 및/또는 MaxMttDepth(103)와 MinCbSizeY(104)를 결정하는 단계(7001)를 포함한다. 또한, 이 방법(7000)은 MaxBtSizeY(102)에 기초하여 및/또는 MaxMttDepth(103)와 MinCbSizeY(104)에 기초하여 MinQtSizeY(105)를 결정하는 단계(7002)를 포함한다. 마지막으로, 이 방법(7000)은 결정된 MinQtSizeY(105)를 비트스트림(101)에 포함하는 단계(7003)를 포함한다.
도 10은 본 발명의 일반적인 실시예에 따른 장치(1000)를 나타내는 도면이다. 이 장치(1000)는, 예를 들어 인코딩된 픽처를 포함하는 비트스트림(101)을 생성하거나 또는 처리하는 데, 즉 조작하는 데 적합하다. 이 장치(1000)는 픽처를 인코딩하고 비트스트림(101)을 생성하도록 구성된 인코더에 포함될 수 있거나, 또는 인코더를 포함할 수 있다. 장치(1000)는 파티션 제한 요소들 간의 관계를 결정할 수 있고, 이러한 파티션 제한 요소들 및/또는 파티션 제한 요소들의 관계를 비트스트림(101)에 포함할 수 있다. 이로써, 이 장치(1000)는 파티션 제한 요소들 및/또는 관계들을 비트스트림(101) 내의 SPS 구문 및/또는 슬라이스 헤더 구문에 추가할 수 있다. 이 장치(1000)는 도 1에 도시된 장치의 대안이다. 하지만, 도 10과 관련하여 후술하는 장치(1000)의 특징은 (이 장치가 도 1의 장치(100) 위에 구축되지 않은 경우) 제1, 제2, 제3, 또는 제4 특정 실시예에 따른 장치의 전술한 특징과 결합될 수 있다.
특히, 장치(1000)는 MinQtSizeY(105)를 결정하도록 구성된다. 또한, 장치(1000)는 MinQtSizeY(105)에 기초하여 MaxBtSizeY(102)를 결정하거나 및/또는 MaxMttDepth(103)을 결정하도록 구성된다. 마지막으로, 장치(1000)는 결정된 MaxBtSizeY(102) 및/또는 결정된 MaxMttDepth(103)를 간접적으로(즉, MaxBtSizeY(102) 및/또는 MaxMttDepth(103)가 도출될 수 있는 정보를 포함함으로써) 또는 직접적으로 비트스트림(101)에 포함하도록 구성된다.
예를 들어, 장치(1000)는 MaxBtSizeY(102)의 하한이 MinQtSizeY(105)인 것을 고려하여 MaxBtSizeY(102)를 결정할 수 있다. 즉, MaxBtSizeY(102) 값 범위가 MinQtSizeY(105)의 값에 의해 제한될 수 있다. 예를 들어, MaxBtSizeY(102)의 하한이 MinQtSizeY(105)로 제한될 수 있다. 다르게 말하면, 장치(1000)에서, MaxBtSizeY(102)의 최소값이 MinQtSizeY(105)보다 작을 수 없다.
대안적으로, 또는 전술한 내용 외에, 장치(1000)에서, MaxMttDepth(103)는 MaxMttDepth(103)의 상한이 MinQtSizeY(105)의 log2 값과 MinCbSizeY(104)의 log2 값의 차이라는 것을 고려하여 결정될 수 있다. 즉, MaxMttDepth(103)의 최대값이 MinQtSizeY(105)의 log2 값과 MinCbSizeY(104)의 log2 값의 차이보다 클 수 없다.
요약하면, 본 발명의 제1 양태는 인코딩된 픽처를 포함하는 비트스트림을 생성하거나 또는 처리하기 위한 장치를 제공한다. 이 장치는 MaxBtSizeY를 결정하거나 및/또는 MaxMttDepth와 MinCbSizeY를 결정하고, MaxBtSizeY에 기초하여 및/또는 MaxMttDepth와 MinCbSizeY에 기초하여 MinQtSizeY를 결정하며, 결정된 MinQtSizeY를 비트스트림에 포함하도록 구성된다.
MaxBtSizeY에 기초하여 및/또는 MaxMttDepth와 MinCbSizeY에 기초하여 MinQtSizeY를 결정함으로써, 즉 이러한 파티션 제한 요소들 간의 관계를 설정하여 새로운 파티셔닝 규칙을 정의함으로써, 제1 양태의 장치는 서로 다른 픽처 파티션 방법, 특히 쿼드트리와 이진 트리 분할의 가용도와 유연성을 높인다.
제1 양태의 구현에서, 장치는 MinQtSizeY의 상한이 MaxBtSizeY라는 것을 고려하여 MinQtSizeY를 결정하거나, 및/또는 MinQtSizeY의 상한이 MinCbSizeY ~ MaxMttDepth의 거듭제곱이라는 것을 고려하여 MinQtSizeY를 결정하도록 구성된다.
이러한 파티션 제한 요소들(MinQtSizeY, MinCbSizeY, MaxBtSizeY, MaxMttDepth) 간의 이러한 관계를 설정함으로써, 각각, 쿼드트리 분할 방법 또는 이진 분할 방법의 조합을 이용하여 부모 블록을 재귀적으로 분할하여 가장 작은 파티션 블록을 획득할 수 있도록 보장한다. (크기가 MinCbSizeY인) 가장 작은 블록이 사용 가능한 분할 방법으로 생성될 수 있으므로, 크기가 MinCbSizeY의 배수인 픽처를 완전히 분할하는 것이 가능하다.
제1 양태의 추가 구현 형태에서, 이 장치는, MaxMttDepth가 0이면 MinQtSizeY가 MinCbSizeY이라고 결정하고, MaxMttDepth가 0보다 크면 MinQtSizeY가 MinCbSizeY ~ MaxMttDepth의 거듭제곱이라고 결정하도록 구성된다.
이를 통해 이전 구현 형식의 효율적인 구현 형식을 제공함으로써, 각각 쿼드트리와 이진 트리 분할을 이용하여 픽처를 완전하게 분할할 수 있게 한다.
본 발명의 제2 양태는 인코딩된 픽처를 포함하는 비트스트림을 생성하거나 또는 처리하기 위한 장치를 제공한다. 이 장치는 MinQtSizeY를 결정하고, MinQtSizeY에 기초하여 MaxBtSizeY를 결정하거나 및/또는 MaxMttDepth를 결정하고,
결정된 MaxBtSizeY 및/또는 결정된 MaxMttDepth를 비트스트림에 포함하도록 구성된다.
제2 양태의 구현 형태에서, 이 장치는 MaxBtSizeY의 하한이 MinQtSizeY라는 것을 고려하여 MaxBtSizeY를 결정하거나, 및/또는 MaxMttDepth의 상한이 MinQtSizeY의 log2 값과 MinCbSizeY의 log2 값의 차이라는 것을 고려하여 MaxMttDepth를 결정하도록 구성된다.
제1 양태와 마찬가지로, 제2 양태는 분할 제한 요소들 간의 관계를 설정하여 새로운 분할 규칙을 정의한다. 따라서, 제2 양태의 장치는 서로 다른 픽처 파티션 방법, 특히 쿼드트리와 이진 트리 분할의 가용도와 유연성을 높인다.
제1 양태 또는 제2 양태의 추가 구현 형태에서, 이 장치는 MinQtSizeY와 MaxBtSizeY 간의 관계, 특히 차이의 표시를 비트스트림에 포함하도록 구성된다.
따라서, 예를 들어 디코더 측에서, 동시에 비트스트림 내의 정보 오버헤드를 줄임으로써 관련 파티션 제한 요소들이 쉽게 추정될 수 있다. 차이점은 관계의 일 예이다. 하지만, 이 관계는 MinQtSizeY로부터 MaxBtSizeY를 추론할 수 있게 하는 비례 인자 또는 계산 방식 등일 수도 있다.
제1 양태 또는 제 2 양태의 추가 구현 형태에서, 이 장치는 MinQtSizeY의 log 2 값과 MaxMttDepth 간의 관계, 특히 차이의 표시를 비트스트림에 포함하도록 구성된다.
따라서, 예를 들어 디코더 측에서, 동시에 비트스트림 내의 정보 오버헤드를 줄임으로써 적절한 파티션 제한 요소들이 추정될 수 있다.
제1 양태 또는 제2 양태의 추가 구현 형태에서, 이 장치는 비트스트림의 픽처의 크기, 특히 높이와 폭을 나타내는 하나 이상의 픽처 크기 요소가 MinQtSizeY의 정수배라고 결정하고, 하나 이상의 픽처 크기 요소를 비트스트림에 포함하도록 구성된다.
결과적으로, 경계 블록은 항상 사용 가능한 분할 방법으로서 쿼드트리 분할을 가지고 있을 수 있다.
제1 양태 또는 제2 양태의 추가 구현 형태에서, 이 장치는 비트스트림의 픽처의 크기, 특히 높이와 폭을 나타내는 하나 이상의 픽처 크기 요소를 결정하고, 픽처 크기 요소와 MinQtSizeY 간의 관계의 표시를 비트스트림에 포함하도록 구성된다.
따라서, 예를 들어 디코더 측에서, 동시에 비트스트림 내의 정보 오버헤드를 줄임으로써 적절한 파티션 제한 요소들이 추정될 수 있다.
제1 양태 또는 제2 양태의 추가 구현 형태에서, 픽처 크기 요소와 MinQtSizeY 간의 관계의 표시가 로그 스케일에 기초한다.
제1 양태 또는 제2 양태의 추가 구현 형태에서, 이 장치는 MaxMttDepth에 의존하는 MaxBtSizeY 또는 MaxTtSizeY의 표시를 비트스트림에 포함하도록 구성된다.
이와 같이, 인코더 및/또는 디코더의 연산에서 통상적으로 생성되는 모호성이 제거되고, 픽처 프레임의 완전한 분할이 가능하다.
제1 양태 또는 제2 양태의 추가 구현 형태에서, MaxMttDepth가 0이면, 장치는 MaxBtSizeY 또는 MaxTtSizeY의 어떠한 표시도 비트스트림에 포함하지 않도록 구성된다.
이를 통해 비트스트림의 정보 오버헤드를 줄일 수 있다.
제1 양태 또는 제2 양태의 추가 구현 형태에서, 이 장치는 MaxBtSizeY 또는 MaxTtSizeY에 의존하는 MaxMttDepth의 표시를 비트스트림에 포함하도록 구성된다.
이와 같이, 인코더 및/또는 디코더의 연산에서 통상적으로 생성되는 모호성이 제거되고, 픽처 프레임의 완전한 분할이 가능하다.
제1 양태 또는 제2 양태의 추가 구현 형태에서, 이 장치는 MaxMttDepth의 어떠한 표시도 비트스트림에 포함하지 않도록 구성된다, MaxBtSizeY 또는 MaxTtSizeY가 0이면.
이를 통해 비트스트림의 정보 오버헤드를 줄일 수 있다.
제1 양태 또는 제2 양태의 추가 구현 형태에서, 이 장치는 비트스트림의 픽처를 인코딩하도록 구성된 인코더를 포함하거나 또는 인코더에 포함된다.
본 발명의 제3 양태는 인코딩된 픽처를 포함하는 비트스트림을 생성하거나 또는 처리하는 방법을 제공하며, 이 방법은 MaxBtSizeY를 결정하거나 및/또는 MaxMttDepth와 MinCbSizeY를 결정하는 단계, MaxBtSizeY에 기초하여 및/또는 MaxMttDepth와 MinCbSizeY에 기초하여 MinQtSizeY를 결정하는 단계, 및 결정된 MinQtSizeY를 비트스트림에 포함하는 단계를 포함한다.
제3 양태의 구현 형태에서, 이 방법은, MinQtSizeY의 상한이 MaxBtSizeY라는 것을 고려하여 MinQtSizeY를 결정하는 단계, 및/또는 MinQtSizeY의 상한이 MinCbSizeY ~ MaxMttDepth의 거듭제곱이라는 것을 고려하여 MinQtSizeY를 결정하는 단계를 포함한다.
제3 양태의 추가 구현 형태에서, 이 방법은, MaxMttDepth가 0이면 MinQtSizeY가 MinCbSizeY라고 결정하는 단계, 및 MaxMttDepth가 0보다 크면 MinQtSizeY가 MinCbSizeY ~ MaxMttDepth의 거듭제곱이라고 결정하는 단계를 포함한다.
제3 양태의 추가 구현 형태에서, 이 방법은 MinQtSizeY와 MaxBtSizeY 간의 관계의 표시, 특히 차이의 표시를 비트스트림에 포함하는 단계를 포함한다.
제3 양태의 추가 구현 형태에서, 이 방법은 MinQtSizeY와 MaxMttDepth의 관계의 표시, 특히 차이의 표시를 비트스트림에 포함하는 단계를 포함한다.
제3 양태의 추가 구현 형태에서, 이 방법은, 비트스트림의 픽처의 크기, 특히 높이와 폭을 나타내는 하나 이상의 픽처 크기 요소가 MinQtSizeY의 정수배라고 결정하는 단계, 및 하나 이상의 픽처 크기 요소를 비트스트림에 포함하는 단계를 포함한다.
제3 양태의 추가 구현 형태에서, 이 방법은 비트스트림의 픽처의 크기, 특히 높이와 폭을 나타내는 하나 이상의 픽처 크기 요소를 결정하는 단계, 및 픽처 크기 요소와 MinQtSizeY 간의 관계의 표시를 비트스트림에 포함하는 단계를 포함한다.
제3 양태의 추가 구현 형태에서, 픽처 크기 요소와 MinQtSizeY 간의 관계의 표시가 로그 스케일에 기초한다.
제3 양태의 추가 구현 형태에서, 이 방법은 MaxBtSizeY 또는 MaxMttDepth에 의존하는 MaxTtSizeY의 표시를 비트스트림에 포함하는 단계를 포함한다.
제3 양태의 추가 구현 형태에서, 이 방법은, MaxMttDepth가 0이면 MaxBtSizeY 또는 MaxTtSizeY의 어떠한 표시도 비트스트림에 포함하지 않는 단계를 포함한다.
제3 양태의 추가 구현 형태에서, 이 방법은 MaxBtSizeY 또는 MaxTtSizeY에 의존하는 MaxMttDepth의 표시를 비트스트림에 포함하는 단계를 포함한다.
제3 양태의 추가 구현 형태에서, 이 방법은 MaxBtSizeY 또는 MaxTtSizeY가 0이면, MaxMttDepth의 어떠한 표시도 비트스트림에 포함하지 않는 단계를 포함한다.
제3 양태의 추가 구현 형태에서, 이 방법은 비트스트림의 픽처를 인코딩하는 인코더에서 수행된다.
제3 양태의 방법과 제3 양태의 구현 형태에 의하여, 제1 양태의 대응하는 장치와 제1 양태의 각각의 구현 형태에 대해 전술한 모든 이점과 효과가 달성될 수 있다.
본 발명의 제4 양태는 인코딩된 픽처를 포함하는 비트스트림을 생성하거나 또는 처리하기 위한 장치를 제공한다. 이 장치는 MinQtSizeY와 MaxBtSizeY 간의 관계의 표시, 특히 차이의 표시를 비트스트림에 포함하거나, 및/또는 MinQtSizeY와 MaxMttDepth 간의 관계의 표시, 특히 차이의 표시를 비트스트림에 포함하도록 구성된다.
제4 양태의 장치에 의하여, 적절한 파티션 제한 요소가 비트스트림 내의 줄어든 정보 오버헤드와 함께 동시에 시그널링될 수 있다. 파티션 제한 요소는 예를 들어 디코더 측에서 추정될 수 있다. 제4 양태의 장치는 서로 다른 픽처 파티션 방법, 특히 쿼드트리와 이진 트리 분할의 가용도와 유연성을 높인다.
본 발명의 제5 양태는 인코딩된 픽처를 포함하는 비트스트림을 생성하거나 또는 처리하기 위한 장치를 제공한다. 이 장치는 비트스트림의 픽처의 크기, 특히 높이와 폭을 나타내는 하나 이상의 픽처 크기 요소가 MinQtSizeY의 정수배라고 결정하고, 하나 이상의 픽처 크기 요소를 비트스트림에 포함하거나; 또는 비트스트림의 픽처의 크기, 특히 높이와 폭을 나타내는 하나 이상의 픽처 크기 요소를 결정하고, 픽처 크기 요소와 MinQtSizeY 간의 관계의 표시를 비트스트림에 포함하도록 구성된다.
제5 양태의 장치에 의하여, 경계 블록이, 사용 가능한 분할 방법으로서 쿼드트리 분할을 항상 가지고 있을 수 있다. 또한, 적절한 파티션 제한 요소가 예를 들어 디코더 측에서, 동시에 비트스트림 내의 감소된 정보 오버헤드와 함께 추정될 수 있다. 제5 양태의 장치는 서로 다른 픽처 파티션 방법, 특히 쿼드트리 분할과 이진 트리 분할의 가용도와 유연성을 높인다.
본 발명의 제6 양태는 인코딩된 픽처를 포함하는 비트스트림을 생성하거나 또는 처리하기 위한 장치를 제공한다. 이 장치는 MaxMttDepth에 의존하는 MaxBtSizeY의 표시 또는 MaxTtSizeY의 표시를 비트스트림에 포함하거나; 또는 MaxTtSizeY 또는 MaxBtSizeY에 의존하는 MaxMttDept의 표시를 비트스트림에 포함한다.
제6 양태의 장치는 인코더 및/또는 디코더의 연산에서 통상적으로 생성되는 모호성을 줄이거나 또는 제거하므로 픽처 프레임의 완전한 분할을 지원한다. 제6 양태의 장치는 서로 다른 픽처 분할 방법, 특히 쿼드트리 분할과 이진 트리 분할의 가용도와 유연성을 높인다.
본 발명의 제7 양태는, 프로그램 코드가 이 장치의 하나 이상의 프로세서에 의해 실행될 때 제3 양태의 방법과 제3 양태의 각각의 구현 형태를 수행하도록 장치를 제어하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품을 제공한다. 이 장치는 제1, 제2, 제4, 제5, 또는 제6 양태의 장치, 또는 이러한 양태의 어떤 구현 형태일 수 있다.
본 발명의 제8 양태는 제1, 제2, 제4, 제5, 또는 제6 양태, 또는 이러한 양태의 어떤 구현 형태에 따라 장치에 의해 생성되거나 또는 처리되는 비트스트림을 디코딩하기 위한 장치를 제공한다.
(경계 분할과 관련된 실시예)
다용도 비디오 코딩(VVC) 차세대 표준은 JVET(Joint Video Exploration Team)로 알려진 파트너십으로 협력하는, ITU-T(International Telecommunications Union Telecommunication Standardization Sector) 비디오 코딩 전문가 그룹(VCEG) 및 국제 표준화 기구/국제 전기 기술위원회(International Organization for Standardization/International Electrotechnical Commission, ISO/IEC)의 가장 최신의 공동 비디오 프로젝트이다. VVC에서, 멀티형(이진/삼진/사지) 트리(BT/TT/QT 또는 이진 트리/삼진 트리/사지 트리) 분할 구조는 복수의 파티션 단위 유형의 개념을 대체해야 하거나 또는 대체할 수 있다. 즉, 멀티형 트리 분할 구조는 최대 변환 길이에 비해 너무 큰 크기를 가지고 있고 CU 파티션 모양에 대해 더 많은 유연성을 지원하는 CU에 필요한 경우를 제외하고 CU, PU, 및 TU 개념의 분리를 제거한다. [JVET-J1002].
도 6a 내지 도 6f는 일 예로서 VTM에서 현재 사용되는 파티션 모드를 나타내는 도면이다. 도 16a는 분할되지 않은 블록(분할 없음)을 나타내고, 도 16b는 4차 또는 쿼드트리(QT) 분할을 나타내며, 도 16c는 수평 이진 또는 이진 트리(BT) 분할을 나타내고, 도 16d는 수직 이진 또는 이진 트리(BT) 분할을 나타내며, 도 16e는 수평 삼진 또는 삼진 트리(TT) 분할을 나타내고, 도 16f는 CU 또는 CTU와 같은 블록의 수직 삼진 또는 삼진 트리(TT) 분할을 나타낸다. 실시예는 도 16a 내지 도 16f에 도시된 바와 같은 파티션 모드를 구현하도록 구성될 수 있다.
실시예에서, 다음의 파라미터가 BT/TT/QT 코딩 트리 방식에 대한 시퀀스 파라미터 세트(SPS) 구문 요소에 의해 정의되고 지정될 수 있다.
CTU 크기: 4차 트리의 루트 노드 크기
MinQTSize: 허용되는 최소 4차 트리 리프 노드 크기
MaxBTT크기: 허용되는 최대 이진 및 삼진 트리 루트 노드 크기
MaxBTTDepth: 허용되는 최대 이진 및 삼진 트리 깊이, 및
MinBTT크기: 허용되는 최소 이진 및 삼진 트리 리프 노드 크기
다른 실시예에서, 허용되는 최소 4차 트리 리프 노드 크기(MinQTSize) 파라미터가 다른 헤더 또는 세트, 예를 들어 슬라이스 헤더(slice header, SH) 또는 픽처 파라미터 세트(picture parameter set, PPS)에도 포함될 수 있다.
HEVC 표준에서, 슬라이스/픽처 경계에 위치하는 코딩 트리 유닛(CTU) 또는 코딩 유닛(CU)은 리프 노드의 오른쪽 하단 샘플이 슬라이스/픽처 경계 내부에 위치할 때까지 쿼드트리(QT)를 이용하여 강제 분할된다. 인코더와 디코더, 예를 들어 비디오 인코더(20)와 비디오 디코더(30)가 언제 강제 QT를 적용할지를 알고 있으므로 강제 QT 파티션 또는 분할이 비트스트림으로 시그널링될 필요가 없다. 강제 파티션의 목적은 비디오 인코더(20)/비디오 디코더(30)로 하여금 경계 CTU/CU를 가능하게 하는 것이다.
국제 특허 공개 번호 WO 2016/090568은 QTBT(quadtree + binary tree) 구조를 개시하고 있으며, VTM 1.0에서도, 경계 CTU/CU 강제 분할 프로세스가 HEVC로부터 상속된다. 즉, 전체 현재 CU가 화면 경계 내부에 있을 때까지, 프레임 경계에 위치하는 CTU/CU가 레이트 왜곡(rate-distortion, RD) 최적화를 고려하지 않고 쿼드트리(QT) 구조에 의해 강제 분할된다. 이러한 강제 파티션은 비트스트림으로 시그널링되지 않는다.
도 7a는 강제 QT에 의해 분할되는 고화질(HD)(1920×1080 픽셀) 하단 경계 CTU(128×128)에 대한 강제 분할 예를 도시한 도면이다. 도 17에서, HD 픽처가 1920×1080개의 픽셀이거나 또는 1920×1080개의 픽셀을 가지고 있거나, 또는 CTU가 128×128개의 픽셀이거나 또는 128×128개의 픽셀을 가지고 있다.
샌디에고 회의(2018년 4월)[JVET-J1021]에서의 CE1(파티셔닝)의 SubCE2(픽처 경계 처리)에서, BT, TT 또는 ABT(Asymmetric BT)를 이용한 픽처 경계 처리를 위한 15가지 테스트가 제안되었다. 예를 들어 JVET-K0280 및 JVET-K0376에서, 이 경계가 도 18에 도시된 바와 같이 정의된다. 도 18은 픽처의 경계를 점선으로, 경계 케이스, 즉 하단 경계 케이스, 모서리 경계 케이스, 오른쪽 경계 케이스의 영역을 직선으로 나타낸 것이다. 하단 경계는 수평 강제 BT 또는 강제 QT에 의해 분할될 수 있고, 오른쪽 경계는 수직 강제 BT 또는 강제 QT에 의해 분할될 수 있으며, 코너 케이스는 강제 QT에 의해서만 분할될 수 있다. 여기서, 강제 BT 또는 강제 QT 분할 중 어느 것을 사용할지의 결정은 레이트 왜곡 최적화 기준에 기초하며 비트스트림으로 시그널링된다. 강제 분할은 이 블록이 분할되어야 한다는 것을 의미한다. 예를 들어, 강제 분할은 도 16a에 도시된 바와 같이 "분할 없음"을 이용하여 코딩될 수 없는 경계 블록에 적용된다.
강제 QT 분할이 강제 경계 분할에 사용되면, MinQTSize의 분할 제한이 무시된다. 예를 들어, 도 19a에서, MinQTSize가 SPS에서 32로 시그널링되면, 강제 QT 방법으로 경계를 일치시키기 위해, MinQTSize가 32라는 제약 조건을 무시하는 8×8의 블록 크기로 분할되는 QT가 필요하다.
본 개시의 실시예에 따르면, 강제 QT가 픽처 경계 분할에 사용되면, 강제 QT 분할은 예를 들어 SPS로 시그널링된 분할 제약 조건을 따르지, 예를 들어 무시하지 않는다. 추가 강제 분할이 필요하면, 강제 BT만이 사용되고, 이를 조합하여 강제 QTBT라고도 한다. 본 개시의 실시예에서, 예를 들어 파티션 제한(MinQTSize)이 픽처 경계에서의 강제 QT 분할을 위해 고려되고, 강제 BT 분할에 대한 추가 시그널링이 필요하지 않다. 실시예는 또한 일반(비경계) 블록과 경계 블록에 대한 분할을 조화시키는 것을 허용한다. 예를 들어, 종래의 해결책에서는 2개의 "MinQTSize" 파라미터가 필요하고, 하나가 일반 블록 분할을 위한 것이고, 다른 하나가 경계 블록 분할을 위한 것이다. 실시예는 일반 블록 분할과 경계 블록 분할 모두에 대해 하나의 공통 "MinQTSize" 파라미터를 필요로 하고, 공통 "MinQTSize" 파라미터는 인코더와 디코더 사이에서 유연하게, 예를 들어 하나의 "MinQTSize" 파라미터를 시그널링함으로써 설정될 수 있다. 또한, 실시예는 예를 들어 강제 QT보다 적은 파티션을 필요로 한다.
(하단 경계 케이스 및 오른쪽 경계 케이스에 대한 해결책)
하단 및 오른쪽 경계 케이스에서, 블록 크기가 MinQTSize보다 크면, 픽처 경계 분할을 위한 분할 모드가 예를 들어 레이트 왜곡 최적화(RDO)에 기초하여 강제 BT 분할과 강제 QT 분할 중에서 선택될 수 있다. 그렇지 않으면(즉, 블록 크기가 MinQTSize보다 작거나 같으면), 강제 BT 분할만이 픽처 경계 분할에 사용되고, 더 구체적으로, 하단 경계에 위치하는 경계 블록에 대해서는 각각 수평 강제 BT가 하단 경계에 사용되고, 픽처의 오른쪽 경계에 위치하는 경계 블록에 대해서는 각각 수직 강제 BT가 오른쪽 경계에 사용된다.
강제 BT 분할은, 현재 블록의 서브파티션이 픽쳐의 하단 경계에 위치할 때까지 현재 블록을 수평 강제 경계 분할에 의해 재귀적으로 분할하고, 리프 노드가 완전히 픽처의 오른쪽 경계에 위치할 때까지 수직 강제 경계 분할에 의해 서브파티션을 재귀적으로 분할하는 것을 포함할 수 있다. 대안적으로, 강제 BT 분할은 현재 블록의 서브파티션이 하단 경계에 위치할 때까지 수직 강제 경계 분할에 의해 현재 블록을 재귀적으로 분할하고 리프 노드가 완전히 오른쪽 경계에 위치할 때까지 수평 강제 경계 분할에 의해 서브파티션을 재귀적으로 분할하는 것을 포함할 수 있다. MinQTSize는 비경계 블록의 분할을 제어하는 데에도 적용될 수 있다.
예를 들어, 도 17a에 도시된 사례에서, 픽처 경계와 일치하기 위해 8개 샘플의 높이 또는 폭의 직사각형(정사각형이 아닌) 블록의 크기가 필요하고 또한 MinQTSize가 32이거나 또는 32로 제한되면, 강제 BT 분할이 32×32 경계 위치 블록을 분할하는 데 사용될 것이다. BT 파티션은 동일한 유형의 강제 BT 분할을 이용하여 추가로 분할될 수 있다. 예를 들어, 강제 수직 BT 분할이 적용된 경우에는 추가적인 강제 수직 BT 분할만이 적용되고, 강제 수평 BT 분할이 적용된 경우에는 추가적인 강제 수평 BT 분할만이 적용된다. 강제 BT 분할은 리프 노드가 완전히 픽처 내부에 있을 때까지 계속된다.
도 17b는 본 발명의 실시예에 따른 128×128개의 샘플의 크기를 가진 하부 경계 CTU의 예시적인 분할을 나타내는 도면이다. 파티션 트리의 루트 블록 또는 루트 노드를 형성하는 하단 경계 CTU는 더 작은 파티션, 예를 들어 정사각형 또는 직사각형 크기의 더 작은 블록으로 분할된다. 이러한 더 작은 파티션 또는 블록은 심지어 더 작은 파티션 또는 블록으로 추가로 분할될 수 있다. 도 17b에서, CTU는 각각 64×64개의 샘플의 크기를 가진 4개의 정사각형 블록(710, 720, 730, 740)으로 분할되는 제1 쿼드트리이다. 이러한 블록들 중에서, 블록(710, 720)은 다시 하단 경계 블록이지만, 블록(730, 740)은 픽처 외부에 위치하고(각각 픽처 외부에 위치하고) 처리되지 않는다.
블록(710)은 쿼드트리 분할을 이용하여 4개의 정사각형 블록(750, 760, 770, 780)으로 추가로 분할되고, 각각의 블록은 32×32개의 샘플의 크기를 가지고 있다. 블록(750, 760)은 픽처의 내부에 위치하지만, 블록(770, 780)은 바닥 경계 블록을 다시 형성한다. 블록(770)의 크기가 예를 들어 32인 MinQTSize보다 크지 않으므로, 리프 노드가 완전히 픽처 내부에 있거나 또는 완전히 픽처 내부에 위치할 때까지, 예를 들어 리프 노드 블록(772), 즉 32×16개의 샘플을 가진 비정방형 직사각형 블록이 픽처 내부에 있거나(하나의 수평 이진 분할 이후), 또는 리프 노드 블록(774), 즉 픽처의 하단 경계에 위치하고 32×8개의 샘플을 가진 비정방형 직사각형 블록이 픽처 내부에 있을 때까지(2개의 수평 이진 분할 이후), 예를 들어, 재귀적 수평 강제 이진 분할이 블록(770)에 적용된다. 동일한 내용이 블록(780)에도 적용된다.
본 개시의 실시예는 픽쳐 내부에 완전히 위치하는 일반 블록에 대한 분할과 경계 블록의 분할을 조화시킨다. 경계 블록은 완전히 픽처 내부에 있지 않고 또한 완전히 픽처 외부에 있지 않은 블록이다. 다르게 말하면, 경계 블록은 픽처 내부에 위치하는 부분과 픽처 외부에 위치하는 부분을 포함하는 블록이다. 또한, 본 개시의 실시예는, MinQTSize에서 또는 MinQTSize 이하에서 강제 BT 분할이 시그널링될 필요가 없으므로 시그널링을 감소시키는 것을 허용한다.
(코너 케이스에 대한 해결책)
코너 케이스에서, 일부 접근법은 MinQTSize의 제한을 무시하는 강제 QT 분할만을 허용한다. 본 개시의 실시예는 코너 케이스에 대한 2가지 해결책을 제공한다. 현재 처리중인 블록이 픽처의 모서리에 있을 때 코너 케이스가 발생한다. 이는 현재 블록이 2개의 픽처 경계(수직 및 수평 경계)에 의해 교차되거나 또는 2개의 픽처 경계에 인접한 경우이다.
(해결책 1)
코너 케이스는 하단 경계 케이스 또는 오른쪽 경계 케이스로 간주된다. 도 20은 경계 정의의 실시예를 나타내는 도면이다. 도 20은 픽처의 경계를 점선으로 표시하고 경계 케이스의 영역을 직선으로 나타낸 것이다. 도시된 바와 같이 코너 케이스는 하단 경계 케이스로 정의된다. 따라서, 해결책은 위의 하단 경계 케이스와 오른쪽 경계 케이스에 대해 설명한 것과 동일하다. 다르게 말하면, 블록 또는 파티션이 (수직 방향으로) 완전히 픽처 내부에 있을 때까지 (하단 경계 케이스에 대해 설명한 바와 같이) 제1 수평 분할이 적용되고, 그런 다음 리프 노드가 (수평 방향으로) 완전히 픽처 내부에 있을 때까지 (오른쪽 경계 케이스에 대해 설명한 바와 같이) 수직 분할이 적용된다.
(해결책 2)
경계 케이스의 정의가 여전히 그대로 유지된다. 강제 QT가 MinQTSize(현재 블록 크기가 MinQTSize보다 작거나 같음)에 의해 제한되면 하단 경계와 일치시키기 위해 수평 강제 BT를 이용하고, 하단 경계가 일치하면 오른쪽 경계와 일치시키기 위해 수직 강제 BT를 이용한다.
예를 들어, 픽처의 코너에 위치하는 블록에 대한 강제 QTBT의 실시예를 나타내는 도 19a에서, MinQTSize가 코너 케이스 강제 QT 파티션에 대해 32이거나 또는 32로 제한되는 경우, 강제 파티션이 종료될 때까지 32×32 블록의 분할 이후 추가적인 BT 파티션이 사용될 것이다.
도 9b는 본 발명의 일 실시예에 따른 픽처의 코너에서 경계 CTU의 예시적인 분할의 추가 세부사항을 나타내는 도면이다. 여기서, CTU는 128×128개의 샘플의 크기를 가지고 있다. CTU는 각각 64×64개의 샘플의 크기를 가진 4개의 정사각형 블록으로 분할되는 제1 쿼드트리이다. 이러한 블록 중에서, 좌측 상단 블록(910)만이 경계 블록이고, 나머지 3개의 블록은 픽쳐의 외부(전적으로 외부)에 위치하며 더 이상 처리되지 않는다. 블록(910)은 쿼드트리 분할을 이용하여 4개의 정사각형 블록(920, 930, 940, 950)으로 추가로 분할되며, 각각의 정사각형 블록은 32×32개의 샘플의 크기를 가지고 있다. 블록(920)은 픽처의 내부에 위치하고, 블록(930, 940, 950)은 경계 블록을 다시 형성한다. 이러한 블록(930, 940, 950)의 크기가 32인 MinQTSize보다 크지 않으므로, 강제 이진 분할이 블록(930, 940, 950)에 적용된다.
블록(930)은 오른쪽 경계에 위치하고, 리프 노드가 픽처 내부에 있을 때까지 재귀적 수직 강제 이진 분할을 이용하여 분할된다. 예를 들어 블록(932)은 (여기서, 2회의 수직 이진 분할 이후) 픽처의 오른쪽 경계에 위치한다.
블록(940)은 하단 경계에 위치하고, 리프 노드가 픽처, 예를 들어 (여기서, 2회의 수평 이진 분할 이후) 픽처의 오른쪽 경계에 위치하는 블록(942) 내부에 있을 때까지 재귀적 수평 강제 이진 분할을 이용하여 분할된다.
블록(950)은 모서리 경계에 위치하고, (여기서, 2회의 수평 이진 분할 이후) 서브파티션 또는 블록(여기서, 블록(952))이 픽처의 하단 경계에 위치할 때까지 제1 재귀적 수평 강제 이진 분할을 이용하여 분할되고, 그런 다음 리프 노드 또는 블록, 예를 들어 블록(954)이 (여기서, 2회의 수직 이진 분할 이후) 픽처의 오른쪽 경계에 위치할 때까지, 또는 각각, 리프 노드가 픽처 내부에 위치할 때까지 수직 강제 경계 분할에 의해 서브파티션을 재귀적으로 분할한다.
위의 접근법은 디코딩과 인코딩 모두에 적용될 수 있다. 디코딩을 위해, MinQTSize가 SPS를 통해 수신될 수 있다. 인코딩을 위해, MinQTSize가 SPS를 통해 전송될 수 있다. 실시예는 도 18 또는 도 20에 도시된 경계 정의 또는 다른 경계 정의를 이용할 수 있다.
이하에서는 본 개시의 추가 실시예가 제공된다. 다음 섹션에서 사용되는 넘버링이 반드시 이전 섹션에서 사용된 넘버링을 준수할 필요는 없다는 것을 유의해야 한다.
실시예 1: 분할 방법이,
픽처의 현재 블록이 경계 블록인지 여부를 판정하는 단계;
현재 블록이 경계 블록이면, 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 큰지 여부를 판정하는 단계;
현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 크지 않으면, 현재 블록에 강제 이진 트리 분할을 적용하는 단계를 포함한다.
실시예 2: 현재 블록이 픽처의 하단 경계에 위치하는 경우 강제 이진 트리 분할이 재귀적 수평 강제 이진 분할이거나, 또는 현재 블록이 픽처의 오른쪽 경계에 위치하는 경우 재귀적 수직 강제 경계 분할인 실시예 1의 분할 방법.
실시예 3: 현재 블록의 서브파티션이 픽처의 하단 경계에 직접 위치할 때까지 강제 이진 분할이 수평 강제 경계 분할에 의해 현재 블록을 재귀적으로 분할하고, 전체적으로 픽처의 오른쪽 경계에 직접 위치할 때까지 리프 노드가 수직 강제 경계 분할에 의해 서브파티션을 재귀적으로 분할하는 것, 또는 그 반대를 포함하는 실시예 1 또는 실시예 2의 분할 방법.
실시예 4: 허용된 최소 쿼드트리 리프 노드 크기가 비경계 블록의 분할을 제어하기 위해 적용되는 허용된 최소 쿼드트리 리프 노드 크기인 실시예 1 내지 실시예 3 중 어느 하나의 분할 방법.
실시예 5: 실시예 1 내지 실시예 4 중 어느 하나의 분할 방법에 따라 블록을 분할함으로써 블록을 디코딩하기 위한 디코딩 방법.
실시예 6: 허용된 최소 쿼드트리 리프 노드 크기가 SPS를 통해 수신되는 실시예 5의 디코딩 방법.
실시예 7: 실시예 1 내지 실시예 4 중 어느 하나의 분할 방법에 따라 블록을 분할함으로써 블록을 인코딩하기 위한 인코딩 방법.
실시예 8: 허용된 최소 쿼드트리 리프 노드 크기가 SPS를 통해 전송되는 실시예 7의 인코딩 방법.
실시예 9: 실시예 5 또는 실시예 6의 디코딩 방법 중 어느 하나를 수행하도록 구성된 논리 회로를 포함하는 디코딩 장치.
실시예 10: 실시예 7 또는 실시예 8의 방법 중 어느 하나를 수행하도록 구성된 논리 회로를 포함하는 인코딩 장치.
실시예 11: 명령어를 저장하고, 프로세서에 의해 실행될 때 프로세서로 하여금 실시예 1 내지 실시예 8에 따른 분할 방법, 디코딩 방법, 및 인코딩 방법 중 어느 것을 수행하게 하는 비일시적 저장 매체.
하나 이상의 예에서, 설명된 기능은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 어떤 조합으로 구현될 수 있다. 소프트웨어로 구현되면, 이러한 기능은 컴퓨터 판독가능 매체 상의 하나 이상의 명령이나 코드로 저장되거나 또는 전송될 수 있으며 하드웨어 기반의 처리 장치에 의해 실행될 수 있다. 컴퓨터 판독가능 매체는 데이터 저장 매체와 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체, 또는 예를 들어 통신 프로토콜에 따라 컴퓨터 프로그램을 한 장소에서 다른 장소로 전송하는 것을 용이하게 하는 어떤 매체를 포함하는 통신 매체를 포함할 수 있다. 이러한 방식으로, 컴퓨터 판독가능 매체는 일반적으로 (1) 비일시적 유형의 컴퓨터 판독가능 저장 매체 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 개시에 설명된 기술의 구현을 위한 명령, 또는 코드, 또는 데이터 구조를 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 이용 가능한 어떤 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수 있다.
제한이 아닌 예로서, 이러한 컴퓨터 판독가능 저장 매체는 RAM, ROM,이이피롬(electrical-erasable programmable read-only memory, EEPROM), CD-ROM, 또는 기타 광 디스크 스토리지, 자기 디스크 스토리지, 기타 자기 저장 장치, 플래시 메모리, 또는 원하는 프로그램 코드를 명령이나 데이터 구조의 형태로 저장하는 데 사용할 수 있고 컴퓨터에 의해 액세스될 수 있는 어떤 다른 매체를 포함할 수 있다. 또한, 어떤 연결을 적절하게 컴퓨터 판독가능 매체라 한다. 예를 들어, 명령이 동축 케이블, 광섬유 케이블, 꼬임선(twisted pair), 디지털 가입자 회선(digital subscriber line, DSL), 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술을 이용하여 웹 사이트, 서버, 또는 기타 원격 소스로부터 전송되면, 동축 케이블, 광섬유 케이블, 꼬임선, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술이 매체의 정의에 포함된다. 하지만, 컴퓨터 판독가능 저장 매체와 데이터 저장 매체가 연결, 반송파, 신호, 또는 기타 일시적인 매체를 포함하지 않고 대신에 비일시적인 유형의 저장 매체에 관한 것이라고 이해해야 한다. 디스크(Disk)와 디스크(disc)가, 본 명세서에 사용된 바와 같이, 컴팩트 디스크(compact disc, CD), 레이저 디스크, 광 디스크, 디지털 다용도 디스크(Digital Versatile Disc, DVD), 플로피 디스크, 및 블루레이(Blu-ray) 디스크를 포함한다. 여기서, 디스크(Disk)는 일반적으로 데이터를 자기적으로 재생하고, 디스크는 레이저로 데이터를 광학적으로 재생한다. 위의 조합도 컴퓨터 판독가능 매체의 범위에 포함되어야 한다.
명령은 하나 이상의 프로세서, 예컨대 하나 이상의 디지털 신호 프로세서(digital signal processor, DSP), 범용 마이크로 프로세서, 주문형 반도체(application specific integrated circuits, ASIC), 필드 프로그래머블 로직 어레이(field programmable logic array, FPGA), 또는 기타 동등한 통합 또는 개별 논리 회로에 의해 실행될 수 있다. 따라서, 본 명세서에서 사용되는 "프로세서"와 같은 용어가 전술한 구조 또는 본 명세서에 설명된 기술의 구현에 적합한 어떤 다른 구조를 말할 수도 있다. 또한, 일부 양태에서, 본 명세서에서 설명된 기능은 인코딩과 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공되거나 또는 결합 코덱에 통합될 수 있다. 또한, 이러한 기술은 하나 이상의 회로 또는 논리 요소에 완전히 구현될 수 있다.
본 개시의 기술은 무선 핸드셋, 집적 회로(integrated circuit, IC) 또는 IC의 세트(예를 들어, 칩 세트)를 포함하는 매우 다양한 디바이스 또는 장치에서 구현될 수 있다. 개시된 기술을 수행하도록 구성된 장치의 기능적 측면을 강조하기 위해 다양한 구성 요소, 모듈, 또는 유닛이 본 개시에서 설명되었지만, 반드시 서로 다른 하드웨어 유닛에 의한 구현을 필요로 하는 것은 아니다. 오히려, 전술한 바와 같이, 다양한 유닛이 코덱 하드웨어 유닛에 결합되거나, 적절한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명된 하나 이상의 프로세서를 포함하는 상호 작동하는 하드웨어 유닛의 집합에 의해 제공될 수 있다.
장치가 메모리 요소; 및 메모리 요소에 연결되고, 픽처의 현재 블록이 경계 블록인지 여부를 판정하고, 현재 블록이 경계 블록인 경우, 현재 블록의 크기가 허용된 최소 쿼드트리(QT) 리프 노드 크기(MinQTSize)보다 큰지 여부를 결정하며, 현재 블록의 크기가 MinQTSize보다 크지 않은 경우 현재 블록에 강제 이진 트리(BT) 분할을 적용하도록 구성된 프로세서 요소를 포함한다.
본 개시에서 여러 실시예가 제공되었지만, 개시된 시스템과 방법은 본 개시의 사상이나 범위를 벗어나지 않으면서 다른 많은 특정 형태로 구현될 수 있다는 것을 이해해야 한다. 본 실시예는 제한적인 것이 아니라 예시적인 것으로 간주해야 하며, 그 의도는 본 명세서에서 제공된 세부사항으로 한정되지 않는다. 예를 들어, 다양한 요소 또는 구성 요소가 다른 시스템에 결합되거나 또는 통합될 수 있거나, 또는 특정 기능이 생략되거나 또는 구현되지 않을 수 있다.
또한, 다양한 실시예에서 개별적으로 또는 별도로 설명되고 예시된 기술, 시스템, 서브시스템, 및 방법이 본 개시의 범위를 벗어나지 않고 다른 시스템, 모듈, 기술, 또는 방법과 결합되거나 또는 통합될 수 있다. 서로 결합되거나 직접 결합되거나 통신하는 것으로 도시되거나 또는 설명된 다른 항목이 전기적으로, 또는 기계적으로, 또는 다른 방법으로 일부 인터페이스, 장치, 또는 중간 구성 요소를 통해 간접적으로 결합되거나 또는 통신할 수 있다. 변경, 대체, 및 변경의 다른 예는 당업자에 의해 확인될 수 있고, 본 명세서에 개시된 사상과 범위를 벗어나지 않고 이루어질 수 있다.
본 출원(또는 본 개시)의 실시예는 인코딩 및 디코딩을 위한 장치와 방법을 제공한다.
제1 양태는 분할 방법에 관한 것으로, 분할 방법은 픽처의 현재 블록이 경계 블록인지 여부 및 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 큰지 여부를 판정하는 단계; 및 현재 블록이 경계 블록이고 또한 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기(MinQTSize)보다 크지 않으면, 강제 이진 트리(BT) 분할을 현재 블록에 적용하는 단계를 포함한다.
제1 양태에 따른 분할 방법의 제1 구현 형태에서, 강제 이진 트리 분할은 현재 블록이 픽처의 하단 경계에 위치하는 경우 재귀적 수평 강제 이진 분할이거나 또는 현재 블록이 픽처의 오른쪽 경계에 위치하는 경우 재귀적 수직 강제 경계 분할이다.
제1 양태에 따른 분할 방법의 제2 구현 형태 또는 제1 양태의 어느 선행하는 구현 형태에서, 강제 이진 트리 분할은 리프 노드 블록이 픽처 내부에 있을 때까지 계속된다.
제1 양태에 따른 분할 방법의 제3 구현 형태 또는 제1 양태의 어느 선행하는 구현 형태에서, 강제 이진 분할은, 현재 블록의 서브파티션이 픽처의 하단 경계에 위치할 때까지 수평 강제 경계 분할에 의해 현재 블록을 재귀적으로 분할하는 것; 및 리프 노드가 전적으로 픽처의 오른쪽 경계에 위치할 때까지 수직 강제 경계 분할에 의해 서브파티션을 재귀적으로 분할하는 것을 포함한다.
제1 양태에 따른 분할 방법의 제4 구현 형태 또는 제1 양태의 어느 선행하는 구현 형태에서, 강제 BT 분할은 현재 블록의 서브파티션이 하단 경계에 위치할 때까지 수직 강제 경계 분할에 의해 현재 블록을 재귀적으로 분할하는 것; 및 리프 노드가 전적으로 오른쪽 경계에 위치할 때까지 수평 강제 경계 분할에 의해 서브파티션을 재귀적으로 분할하는 것을 포함한다.
제1 양태에 따른 분할 방법의 제5 구현 형태 또는 제1 양태의 어느 선행하는 구현 형태에서, 분할 방법은 비경계 블록의 분할을 제어하기 위해 허용된 최소 쿼드트리 리프 노드 크기를 적용하는 단계를 더 포함한다.
제1 양태에 따른 분할 방법의 제6 구현 형태 또는 제1 양태의 어느 선행하는 구현 형태에서, 경계 블록은 완전히 픽처 내부에 있지 않고 또는 완전히 픽처 외부에 있지 않은 블록이다.
제2 양태는 제1 양태 또는 제1 양태의 어느 선행하는 구현 형태에 따라 블록을 분할하여 블록을 디코딩하기 위한 디코딩 방법에 관한 것이다.
제2 양태에 따른 디코딩 방법의 제1 구현 형태에서, 디코딩 방법은 시퀀스 파라미터 세트(SPS)를 통해 허용된 최소 쿼드트리 리프 노드 크기를 수신하는 단계를 더 포함한다.
제3 양태는 제1 양태 제1 양태의 어느 선행하는 구현 형태에 따라 블록을 분할하여 블록을 인코딩하기 위한 인코딩 방법에 관한 것이다.
제3 양태에 따른 인코딩 방법의 제1 구현 형태에서, 인코딩 방법은 시퀀스 파라미터 세트(SPS)를 통해 허용된 최소 쿼드트리 리프 노드 크기를 전송하는 단계를 더 포함한다.
제4 양태는, 제1 양태의 분할 방법 또는 제1 양태의 어느 선행하는 구현 형태에 따라 블록을 분할하여 블록을 디코딩하도록 구성된 논리 회로를 포함하는 디코딩 장치에 관한 것이다.
제4 양태에 따른 디코딩 장치의 제1 구현 형태에서, 논리 회로는 추가적으로, 시퀀스 파라미터 세트(SPS)를 통해 허용된 최소 쿼드트리 리프 노드 크기를 수신하도록 구성된다.
제5 양태는 제1 양태의 분할 방법 또는 제1 양태의 어느 선행하는 구현 형태에 따라 블록을 분할하여 블록을 인코딩하도록 구성된 논리 회로를 포함하는 인코딩 장치에 관한 것이다.
제5 양태에 따른 디코딩 장치의 제1 구현 형태에서, 논리 회로는 추가적으로, 시퀀스 파라미터 세트(SPS)를 통해 허용된 최소 쿼드트리 리프 노드 크기를 전송하도록 구성된다.
제6 양태는, 프로세서에 의해 실행될 때 프로세서로 하여금 제1 양태, 또는 제2 양태, 또는 제3 양태 중 어느 것, 또는 제1 양태, 또는 제2 양태, 또는 제3 양태의 어느 선행하는 구현 형태를 수행하게 하는 명령을 저장하기 위한 비일시적인 저장 매체에 관한 것이다.
제7 양태는, 픽처의 현재 블록이 경계 블록이고 또한 현재 블록의 크기가 허용된 최소 쿼드트리(QT) 리프 노드 크기(MinQTSize)보다 작거나 같다고 결정하는 단계; 및 결정에 응답하여, 현재 블록에 강제 이진 트리(BT) 분할을 적용하는 단계를 포함하는 방법에 관한 것이다.
제7 양태에 따른 방법의 제1 구현 형태에서, 현재 블록은 픽처의 하단 경계에 위치하고, 강제 BT 분할은 재귀적 수평 강제 BT 분할이다.
제7 양태에 따른 방법의 제2 구현 형태 또는 제7 양태의 어느 선행하는 구현 형태에서, 현재 블록은 픽처의 오른쪽 경계에 위치하고, 강제 BT 분할은 재귀적 수직 강제 BT 분할이다.
제7 양태의 제3 구현 형태 또는 제7 양태의 어느 선행하는 구현 형태에서, 강제 BT 분할은, 현재 블록의 서브파티션이 하단 경계에 위치할 때까지 수평 강제 경계 분할에 의해 현재 블록을 재귀적으로 분할하는 것; 및 리프 노드가 전적으로 오른쪽 경계에 위치할 때까지 수직 강제 경계 분할에 의해 서브파티션을 재귀적으로 분할하는 것을 포함한다.
제7 양태의 제4 구현 형태 또는 제7 양태의 어느 선행하는 구현 형태에서, 강제 BT 분할은, 현재 블록의 서브파티션이 하단 경계에 위치할 때까지 수직 강제 경계 분할에 의해 현재 블록을 재귀적으로 분할하는 것; 및 리프 노드가 전적으로 오른쪽 경계에 위치할 때까지 수평 강제 경계 분할에 의해 서브파티션을 재귀적으로 분할하는 것을 포함한다.
제7 양태에 따른 방법의 제5 구현 형태 또는 제7 양태의 어느 선행하는 구현 형태에서, 이 방법은 비경계 블록을 제어하기 위해 MinQTSize를 적용하는 단계를 더 포함한다.
제7 양태에 따른 방법의 제6 구현 형태 또는 제7 양태의 어느 선행하는 구현 형태에서, 이 방법은 시퀀스 파라미터 세트(SPS)를 통해 MinQTSize를 수신하는 단계를 더 포함한다.
이와 같은 제7 양태에 따른 방법의 제7 구현 형태 또는 제7 양태의 어느 선행하는 구현 형태에서, 이 방법은 시퀀스 파라미터 세트(SPS)를 통해 MinQTSize를 전송하는 단계를 더 포함한다.
제8 양태는 장치에 관한 것으로, 이 장치는 메모리; 및 메모리에 연결되고, 픽처의 현재 블록이 경계 블록인지 여부를 판정하고, 현재 블록이 경계 블록일 때, 현재 블록의 크기가 허용된 최소 쿼드트리(QT) 리프 노드 크기(MinQTSize)보다 큰지 여부를 판정하며, 현재 블록의 크기가 MinQTSize보다 크지 않으면, 강제 이진 트리(BT) 분할을 현재 블록에 적용하도록 구성된 프로세서를 포함한다.
제8 양태에 따른 장치의 제1 구현 형태에서, 강제 BT 분할은, 현재 블록이 픽처의 하단 경계에 위치하는 경우 재귀적 수평 강제 BT 분할이거나 또는 현재 블록이 픽처의 오른쪽 경계에 위치하는 경우 재귀적 수직 강제 BT 분할이다.
제8 양태에 따른 장치의 제2 구현 형태 또는 제8 양태의 어느 선행하는 구현 형태에서, 강제 BT 분할은, 현재 블록의 서브파티션이 하단 경계에 위치할 때까지수평 강제 경계 분할에 의해 현재 블록을 재귀적으로 분할하는 것; 및 리프 노드가 전적으로 오른쪽 경계에 위치할 때까지 수직 강제 경계 분할에 의해 서브파티션을 재귀적으로 분할하는 것을 포함한다.
제8 양태에 따른 장치의 제3 구현 형태 또는 제8 양태의 어느 선행하는 구현 형태에서, 강제 BT 분할은 현재 블록의 서브파티션이 하단 경계에 위치할 때까지 수직 강제 경계 분할에 의해 현재 블록을 재귀적으로 분할하는 것; 및 리프 노드가 전적으로 오른쪽 경계에 위치할 때까지 수평 강제 경계 분할에 의해 서브파티션을 재귀적으로 분할하는 것을 포함한다.
와 같은 제8 양태에 따른 장치의 제4 구현 형태 또는 제8 양태의 어느 선행하는 구현 형태에서, 프로세서는 추가적으로, 비경계 블록을 제어하기 위한 MinQTSize를 적용하도록 구성된다 .
제8 양태에 따른 장치의 제5 구현 형태 또는 제8 양태의 어느 선행하는 구현 형태에서, 이 장치는 프로세서에 연결되고 시퀀스 파라미터 세트(SPS)를 통해 MinQTSize를 수신하도록 구성된 수신기를 더 포함한다.
제8 양태에 따른 장치의 제6 구현 형태 또는 제8 양태의 어느 선행하는 구현 형태에서, 이 장치는, 프로세서에 연결되고 시퀀스 파라미터 세트(SPS)를 통해 MinQTSize를 전송하도록 구성된 송신기를 더 포함한다.
제9 양태는 컴퓨터 프로그램 제품에 관한 것으로, 컴퓨터 프로그램 제품은, 프로세서에 의해 실행될 때 장치로 하여금 픽처의 현재 블록이 경계 블록인지 여부를 판정하게 하고; 현재 블록이 경계 블록인 경우, 현재 블록의 크기가 허용된 최소 쿼드트리(QT) 리프 노드 크기(MinQTSize)보다 큰지 여부를 판정하게 하며; 현재 블록 0의 크기가 MinQTSize보다 클 때, 강제 이진 트리(BT) 분할을 현재 블록에 적용하게 하는 비일시적인 매체에 저장된 컴퓨터 실행가능 명령을 포함한다..
제8 양태에 따른 장치의 제1 구현 형태에서, 강제 BT 분할은, 현재 블록이 픽처의 하단 경계에 위치하는 경우 재귀적 수평 강제 BT 분할이거나 또는 현재 블록이 픽처의 오른쪽 경계에 위치하는 경우 재귀적 수직 강제 BT 분할이다.
제9 양태에 따른 장치의 제2 구현 형태 또는 제9 양태의 어느 선행하는 구현 형태에서, 강제 BT 분할은, 현재 블록의 서브파티션이 하단 경계에 위치할 때까지수평 강제 경계 분할에 의해 현재 블록을 재귀적으로 분할하는 것; 및 리프 노드가 전적으로 오른쪽 경계에 위치할 때까지 수직 강제 경계 분할에 의해 서브파티션을 재귀적으로 분할하는 것을 포함한다.
제9 양태에 따른 장치의 제3 구현 형태 또는 제9 양태의 어느 선행하는 구현 형태에서, 강제 BT 분할은, 현재 블록의 서브파티션이 하단 경계에 위치할 때까지 수직 강제 경계 분할에 의해 현재 블록을 재귀적으로 분할하는 것; 및 리프 노드가 전적으로 오른쪽 경계에 위치할 때까지 수평 강제 경계 분할에 의해 서브파티션을 재귀적으로 분할하는 것을 포함한다.
제9 양태에 따른 장치의 제4 구현 형태 또는 제9 양태의 어느 선행하는 구현 형태에서, 컴퓨터 실행가능 명령은 추가적으로, 장치로 하여금, 비경계 블록을 제어하기 위해 MinQTSize를 적용하게 한다.
제9 양태에 따른 장치의 제5 구현 형태 또는 제9 양태의 어느 선행하는 구현 형태에서, 컴퓨터 실행가능 명령은 추가적으로, 장치로 하여금 시퀀스 파라미터 세트(SPS)를 통해 MinQTSize를 수신하게 한다.
제9 양태에 따른 장치의 제6 구현 형태 또는 제9 양태의 어느 선행하는 구현 형태에서, 컴퓨터 실행가능 명령은 추가적으로, 장치로 하여금 시퀀스 파라미터 세트(SPS)를 통해 MinQTSize를 전송하게 한다.
(NON_BOUNDARY와 BOUNDARY 블록에 대한 분할 제한들 간의 관계에 관한 실시예)
차세대 비디오 코딩(Next Generation Video Coding, NGVC)는 CU, PU, 및 TU 개념의 분리를 제거하고, CU 파티션 모양에 대해 더 많은 유연성을 지원한다. CU의 크기가 코딩 노드의 크기에 대응하고, 정사각형 모양이거나 또는 정사각형이 아닌(예를 들어, 직사각형) 모양일 수 있다.
J. An 외에, "블록 partitioning structure for next generation video coding", 국제전기통신연합, COM16-C966, 2015년 9월(이하 "VCEG 제안 COM16-C966"), 쿼드트리-이진트리(QTBT) 분할 기술은 HEVC를 능가하는 미래의 비디오 코딩 표준을 위해 제안되었다. 시뮬레이션은 제안된 QTBT 구조가 HEVC에 사용된 쿼드트리 구조보다 더 효율적이라는 것을 나타낸다. HEVC에서, 작은 블록에 대한 인터 예측은 움직임 보상의 메모리 액세스를 줄이도록 제한되고, 4×4 블록에 대해서는 인터 예측이 지원되지 않는다. JEM의 QTBT에서는 이러한 제한이 제거된다.
QTBT에서, CU는 정사각형 모양 또는 직사각형 모양일 수 있다. 도 21에 도시된 바와 같이, 코딩 트리 유닛(CTU)은 먼저 쿼드트리 구조에 의해 분할된다. 쿼드트리 리프 노드는 이진 트리 구조에 의해 더 분할될 수 있다. 이진 트리 분할에는 대칭 수평 분할과 대칭 수직 분할의 2가지 분할 유형이 있다. 각각의 경우, 노드가 수평 또는 수직으로 중간 아래로 노드를 나누어 분할된다. 이진 트리 리프 노드를 코딩 유닛(CU)이라고 하며, 그 세분화는 어떤 추가적인 분할없이 예측과 변환 처리에 사용된다. 이는 CU, PU, 및 TU가 QTBT 코딩 블록 구조에서 동일한 블록 크기를 가지고 있다는 것을 의미한다. CU가 때로는 다른 색상 구성 요소의 코딩 블록(CB)으로 구성된다. 예를 들어, 하나의 CU는 4:2:0 크로마 포맷의 P개의 슬라이스와 B개의 슬라이스의 경우 하나의 루마 CB와 2개의 크로마 CB를 포함하고, 때로는 단일 성분의 CB로 구성된다. 예를 들어, 하나의 CU가 I 슬라이스의 경우 단 하나의 루마 CB 또는 2개의 크로마 CB만을 포함한다.
QTBT 분할 방식을 위해 다음의 파라미터가 정의된다.
- CTU size: 쿼드트리의 루트 노드 크기, HEVC에서와 동일한 개념
- MinQTSize: 허용된 최소 쿼드트리 리프 노드 크기
- MaxBTSize: 허용된 최대 이진 트리 루트 노드 크기
- MaxBTDepth: 허용된 최대 이진 트리 깊이
- MinBTSize: 허용된 최소 이진 트리 리프 노드 크기
QTBT 분할 구조의 일 예에서, 쿼드트리 노드가 MinQTSize보다 작거나 같은 크기를 가지고 있을 때, 추가적인 쿼드트리가 고려되지 않는다. 크기(MinQTSize)가 MaxBTSize를 초과하므로 쿼드트리 노드가 이진 트리에 의해 분할되지 않을 것이다. 그렇지 않으면, 리프 쿼드트리 노드가 이진 트리에 의해 더 분할될 수 있다. 따라서, 쿼드트리 리프 노드는 이진 트리의 루트 노드이기도 하며 이진 트리 깊이가 0(제로)이다. 이진 트리 깊이가 MaxBTDepth(즉, 4)에 도달하면 더 이상 분할이 고려되지 않는다. 이진 트리 노드의 폭이 MinBTSize(즉, 4)이면 더 이상 수평 분할이 고려되지 않는다. 유사하게, 이진 트리 노드의 높이가 MinBTSize이면 더 이상 수직 분할이 고려되지 않는다. 이진 트리의 리프 노드가 어떤 추가적인 분할없이 예측과 변환 처리에 의해 추가로 처리된다. JEM에서, 최대 CTU 크기가 256×256개의 루마 샘플이다. 이진 트리(CU)의 리프 노드가 어떤 추가적인 분할없이 (예를 들어, 예측 프로세스와 변환 프로세스를 수행함으로써) 추가로 처리될 수 있다.
도 21은 QTBT 분할 기술을 이용하여 분할된 블록(30)(예를 들어, CTB)의 예를 나타내는 도면이다. 도 21에 도시된 바와 같이, QTBT 분할 기술을 이용하여, 각각의 블록이 각각의 블록의 중심을 통해 대칭적으로 분할된다. 도 22는 도 21의 블록 분할에 대응하는 트리 구조를 나타내는 도면이다. 도 22의 실선은 쿼드트리 분할을 나타내고, 점선은 이진 트리 분할을 나타낸다. 일 예에서, 이진 트리의 각각의 분할(즉, 리프가 아닌) 노드에서, 수행되는 분할 유형(예를 들어, 수평 또는 수직)을 나타내기 위해 구문 요소(예를 들어, 플래그)가 시그널링된다. 여기서, 0은 수평 분할을 나타내고, 1은 수직 분할을 나타낸다. 쿼드트리 분할의 경우, 쿼드트리 분할이 항상 블록을 수평 및 수직으로 동일한 크기의 4개의 서브블록으로 분할하기 때문에 분할 유형을 나타낼 필요가 없다.
도 22에 도시된 바와 같이, 노드(50)에서, (루트(50)에 대응하는) 블록(30)이 QT 분할을 이용하여, 도 21에 도시된 4개의 블록(31, 32, 33, 34)으로 분할된다. 블록(34)이 더 이상 분할되지 않으므로 리프 노드이다. 노드(52)에서, 블록(31)이 BT 분할을 이용하여 2개의 블록으로 더 분할된다. 도 22에 도시된 바와 같이, 노드(52)는 수직 분할을 나타내는 1로 표시된다. 이와 같이, 노드(52)가 분할되면 블록(37), 그리고 블록(35)과 블록(36)을 모두 포함하는 블록이 생성된다. 노드(54)를 추가로 수직 분할하면 블록(35)와 블록(36)이 생성된다. 노드(56)에서, 블록(32)이 BT 분할을 이용하여 2개의 블록(38, 39)로 더 분할된다.
노드(58)에서, 블록(33)이 QT 분할을 이용하여 4개의 동일한 크기의 블록으로 분할된다. 블록(43, 44)이 QT 분할로부터 생성되고 더 이상 분할되지 않는다. 노드(60)에서, 왼쪽 상단 블록이 수직 이진 트리 분할을 이용하여 먼저 분할되어 블록(40)과 오른쪽 수직 블록이 생성된다. 오른쪽 수직 블록은 수평 이진 트리를 이용하여 분할되어 블록(41)과 블록(42)로 분할된다. 노드(58)의 쿼드트리 분할로부터 생성되는 우측 하부 블록은, 수평 이진 트리 분할을 이용하여 노드(62)를 분할하여 블록(45)와 블록(46)이 생성된다. 도 22에 도시된 바와 같이, 노드(62)는 수평 분할을 나타내는 0으로 표시된다.
QTBT 외에, 멀티형 트리(multi-type-tree, MTT)라는 블록 분할 구조가 제안되어 QTBT 기반의 CU 구조에서 BT를 대체하는데, 블록 분할 구조는 CTU를 QT 분할로 먼저 분할하여 CTU의 블록을 얻은 다음 MTT 파티셔닝에 의해 이 블록을 두 번째로 분할할 수 있다는 것을 의미한다.
MTT 분할 구조는 여전히 재귀적 트리 구조이다. MTT에서, 서로 다른 복수의 파티션 구조(예를 들어, 2개 이상)가 사용된다. 예를 들어, MTT 기술에 따르면, 트리 구조의 각각의 깊이에서, 2개 이상의 서로 다른 파티션 구조가 트리 구조의 각각의 넌리프 노드(non-leaf node)에 사용될 수 있다. 트리 구조 내의 노드의 깊이가 노드에서 트리 구조의 루트까지의 경로 길이(예를 들어, 분할 횟수)를 나타낼 수 있다.
MTT에는 BT 분할과 TT(Ternary-Tree) 분할의 2가지 파티션 유형이 있다. 파티션 유형은 BT 분할과 TT 분할로부터 선택될 수 있다. TT 파티션 구조는, TT 파티션 구조가 블록을 중앙으로 분할하지 않는다는 점에서 QT 구조 또는 BT 구조와 다르다. 이 블록의 중심 영역은 동일한 서브블록에 함께 유지된다. 4개의 블록을 생성하는 QT 또는 2개의 블록을 생성하는 이진 트리와 달리, TT 파티션 구조에 따라 분할하면 3개의 블록이 생성된다. TT 파티션 구조에 따른 예시적인 파티션 유형은 대칭 파티션 유형(수평 및 수직 모두)뿐만 아니라 비대칭 파티션 유형(수평 및 수직 모두)도 포함한다. 또한, TT 파티션 구조에 따른 대칭 파티션 유형이 불균일/불균등(uneven/non-uniform)이거나 또는 균등/균일일 수 있다. TT 파티션 구조에 따른 비대칭 파티션 유형은 불균일/불균등이다. 일 예에서, TT 파티션 구조는, 수평 균등/균일 대칭 삼진 트리 유형, 수직 균등/균일 대칭 삼진 트리 유형, 수평 불균일/불균등 대칭 삼진 트리 유형, 수직 불균일/불균등 대칭 삼진 트리 유형, 수평 불균일/불균등 비대칭 삼진 트리 유형, 또는 수직 불균일/불균등 비대칭 삼진 트리 유형 중 적어도 하나를 포함할 수 있다.
일반적으로, 불균일/불균등 대칭 삼진 트리 파티션 유형이 블록의 중심선을 기준으로 대칭적인 파티션 유형이지만, 3개의 결과 블록 중 적어도 하나가 나머지 2개의 블록과 크기가 같지 않다. 하나의 바람직한 예는, 측면 블록이 블록 크기의 1/4이고 또한 중심 블록이 블록 크기의 1/2인 경우이다. 균등/균일 대칭 삼진 트리 파티션 유형이 블록의 중심선을 기준으로 대칭적인 파티션 유형이고, 그 결과로 생성되는 블록이 모두 동일한 크기이다. 수직 또는 수평 분할에 따른 블록 높이 또는 폭이 3의 배수인 경우 이러한 분할이 가능하다. 불균일/불균등 비대칭 삼진 트리 파티션 유형이 중심선을 기준으로 대칭이 아닌 파티션 유형이고, 그 결과로 생성되는 블록 중 적어도 하나의 크기가 나머지 2개의 블록의 크기와 같지 않다.
도 23은 선택적 수평 삼진 트리 파티션 유형의 예를 나타내는 개념도이다. 도 24는 선택적 수직 삼진 트리 파티션 유형의 예를 나타내는 개념도이다. 도 23과 도 24 둘 다에서, h가 루마 샘플 또는 크로마 샘플에서 블록의 높이를 나타내고, w는 루마 샘플 또는 크로마 샘플에서 블록의 폭을 나타낸다. 블록의 각각의 중심선이 블록의 경계를 나타내지 않는다(즉, 삼진 트리 파티션이 중심선을 통해 블록을 분할하지 않는다)는 것을 유의해야 한다. 오히려, 중심선은 특정 파티션 유형이 원래 블록의 중심선에 대해 대칭인지 또는 비대칭인지 여부를 나타내는 데 사용된다. 중심선도 분할 방향을 따른다.
도 23에 도시된 바와 같이, 블록(71)은 수평 균등/균일 대칭 파티션 유형으로 분할된다. 수평 균등/균일 대칭 파티션 유형은 블록(71)의 중심선에 대해 대칭적인 상단 반부(half)와 하단 반부를 생성한다. 수평 균등/균일 대칭 파티션 유형은 각각 높이가 h/3이고 폭이 w인 동일한 크기의 3개의 서브블록을 각각 생성한다. 수평 균등/균일 대칭 파티션 유형은 블록(71)의 높이를 3으로 균등하게 나눌 때 가능하다.
블록(73)은 수평 불균일/불균등 대칭 파티션 유형으로 분할된다. 수평 불균일/불균등 대칭 파티션 유형은 블록(73)의 중심선에 대해 대칭적인 상단 반부와 하단 반부를 생성한다. 수평 불균일/불균등 대칭 파티션 유형은 동일한 크기의 2개의 블록(예를 들어, 높이가 h/4인 상단 블록과 하단 블록), 및 서로 다른 크기의 중심 블록(예를 들어, 높이가 h/2인 중심 블록)을 생성한다. 일 예에서, 수평 불균일/불균등 대칭 파티션 유형에 따르면, 중심 블록의 면적이 상단 블록과 하단 블록을 합한 면적과 동일하다. 일부 예에서, 2의 거듭 제곱(예를 들어, 2, 4, 8, 16, 32 등)인 높이를 가진 블록의 경우 수평 불균일/불균등 대칭 파티션 유형이 선호될 수 있다.
블록(75)은 수평 불균일/불균등 비대칭 파티션 유형으로 분할된다. 수평 불균일/불균등 비대칭 파티션 유형은 블록(75)의 중심선에 대해 대칭적인 상단 반부와 하단 반부를 생성하지 않는다(즉, 상단 반부와 하단 반부가 비대칭이다). 도 23의 예에서, 수평 불균일/불균등 비대칭 파티션 유형은 높이가 h/4인 상단 블록, 높이가 3h/8인 중심 블록, 높이가 3h/8인 하단 블록을 생성한다. 물론, 다른 비대칭적인 배열이 사용될 수 있다.
도 24에 도시된 바와 같이, 블록(81)은 수직 균등/균일 대칭 파티션 유형으로 분할된다. 수직 균등/균일 대칭 파티션 유형은 블록(81)의 중심선에 대해 대칭적인 왼쪽 반부와 오른쪽 반부를 생성한다. 수직 균등/균일 대칭 파티션 유형은 폭이 w/3이고 높이가 h인 동일한 크기의 3개의 서브블록을 각각 생성한다. 수직 균등/균일 대칭 파티션 유형은 블록(81)의 폭을 3으로 균등하게 나눌 때 가능하다.
블록(83)은 수직 불균일/불균등 대칭 파티션 유형으로 분할된다. 수직 불균일/불균등 대칭 파티션 유형은 블록(83)의 중심선에 대해 대칭적인 왼쪽 반부와 오른쪽 반부를 생성한다. 수직 불균일/불균등 대칭 파티션 유형은 블록(83)의 중심선에 대해 대칭적인 왼쪽 반부와 반부을 생성한다. 수직 불균일/불균등 대칭 파티션 유형은 동일한 크기의 2개의 블록(예를 들어, 폭이 w/4인 왼쪽 및 오른쪽 블록), 및 서로 다른 크기의 중심 블록(예를 들어, 폭이 w/2인 중심 블록)을 생성한다. 일 예에서, 수직 불균일/불균등 대칭 파티션 유형에 따르면, 중심 블록의 면적이 왼쪽 블록과 오른쪽 블록의 면적의 합과 동일하다. 일부 예에서, 2의 거듭제곱인 폭(예를 들어, 2, 4, 8, 16, 32 등)을 가진 블록에 대해 수직 불균일/불균등 대칭 파티션 유형이 바람직할 수 있다.
블록(85)은 수직 불균일/불균등 비대칭 파티션 유형으로 분할된다. 수직 불균일/불균등 비대칭 파티션 유형은 블록(85)의 중심선에 대해 대칭적인 왼쪽 반부와 오른쪽 반부를 생성하지 않는다(즉, 왼쪽 반부와 오른쪽 반부가 비대칭이다). 도 24의 예에서, 수직 불균일/불균등 비대칭 파티션 유형은 폭이 w/4인 왼쪽 블록, 폭이 3w/8인 중앙 블록, 폭이 3w/8인 오른쪽 블록을 생성한다. 물론, 다른 비대칭적인 배치가 사용될 수 있다.
위에서 정의된 QTBT에 대한 파라미터에 추가하여(또는 대안적으로), MTT 분할 체계에 대해 다음의 파라미터가 정의된다.
- MaxBTSize: 허용된 최대 이진 트리 루트 노드 크기
- MinBtSize: 허용된 최소 이진 트리 루트 노드 크기
- MaxMttDepth: 최대 멀티형 트리 깊이
- MaxMttDepth offset: 최대 멀티형 트리 깊이 오프셋
- MaxTtSize: 허용된 최대 삼진 트리 루트 노드 크기
- MinTtSize: 허용된 최소 삼진 트리 루트 노드 크기
- MinCbSize: 허용 최소 코딩 블록 크기
본 개시의 실시예는 본 출원의 실시예에 따른, 도 1의 비디오 인코더(20)와 같은 비디오 인코더 또는 도 13의 비디오 디코더(30)와 같은 비디오 디코더에 의해 구현될 수 있다. 파티션 유닛을 포함하는 비디오 인코더(20) 또는 비디오 디코더(30)의 하나 이상의 구조적 요소는 본 개시의 실시예의 기술을 수행하도록 구성될 수 있다.
본 개시의 실시예에서,
JVET-K1001-v4에서, log2_ctu_size_minus2, log2_min_qt_size_intra_slice_minus2와 log2_min_qt_size_inter_slices_minus2가 SPS에서(구문 요소로서) 시그널링된다.
파라미터(log2_ctu_size_minus2 plus 2)는 각각의 CTU의 루마 코딩 트리 블록 크기를 지정한다. 특히,
CtbLog2SizeY = log2_ctu_size_minus2 + 2 (7-5)
CtbSizeY = 1 << CtbLog2SizeY (7-6)
다르게 말하면, CtbLog2SizeY가 루마(Y)에 대한 코딩 트리 블록(CTB) 크기에 대응하는 CTU 크기(CtbSizeY)의 log2 값을 지정한다.
추가적인 설정이 다음과 같이 제공된다:
MinCbLog2SizeY = 2 (7-7)
MinCbSizeY = 1 << MinCbLog2SizeY (7-8)
MinTbSizeY = 4 (7-9)
MaxTbSizeY = 64 (7-10)
파라미터(log2_min_qt_size_intra_slices_minus2 + 2)는 slice_type이 2 (I) 인 슬라이스, 즉 인트라 슬라이스 내의 CTU의 쿼드트리 분할로 인해 생성되는 리프 블록의 최소 루마 크기를 지정한다. log2_min_qt_size_intra_slices_minus2의 값은 0 ~ CtbLog2SizeY-2(0과 CtbLog2SizeY-2를 포함하는) 범위에 있어야 한다.
MinQtLog2SizeIntraY = log2_min_qt_size_intra_slice_minus2 + 2 (7-22)
파라미터(log2_min_qt_size_inter_slices_minus2 + 2)는 slice_type이 0 (B) 또는 1 (P) 인 슬라이스, 즉 인터 슬라이스 내의 CTU의 쿼드트리 분할로 인해 생성되는 리프 블록의 최소 루마 크기를 지정한다. log2_min_qt_size_inter_slices_minus2의 값은 0 ~ CtbLog2SizeY-2(0과 CtbLog2SizeY-2를 포함하는) 범위에 있어야 한다.
MinQtLog2SizeInterY = log2_min_qt_size_inter_slices_minus2 + 2 (7-23)
MinQtSizeY는 루마 샘플 내의 허용된 최소 쿼드트리 분할 크기를 의미하는 (7-30)에 정의되어 있다. 코딩 블록 크기가 MinQtSizeY보다 작거나 같으면, 쿼드트리 분할이 허용되지 않는다. 추가 설정이 다음과 같이 제공된다.
MinQtLog2SizeY = ( slice_type = = I ) ? MinQtLog2SizeIntraY : MinQtLog2SizeInterY (7-25)
MaxBtLog2SizeY = CtbLog2SizeY - log2_diff_ctu_max_bt_size (7-26)
MinBtLog2SizeY = MinCbLog2SizeY (7-27)
MaxTtLog2SizeY = ( slice_type = = I ) ? 5 : 6 (7-28)
MinTtLog2SizeY = MinCbLog2SizeY (7-29)
MinQtSizeY = 1 << MinQtLog2SizeY (7-30)
MaxBtSizeY = 1 << MaxBtLog2SizeY (7-31)
MinBtSizeY = 1 << MinBtLog2SizeY (7-32)
MaxTtSizeY = 1 << MaxTtLog2SizeY (7-33)
MinTtSizeY = 1 << MinTtLog2SizeY (7-34)
MaxMttDepth = ( slice_type = = I ) ? max_mtt_hierarchy_depth_intra_slices :
max_mtt_hierarchy_depth_inter_slices (7-35)
파라미터(max_mtt_hierarchy_depth_intra_slices)와 파라미터(max_mtt_hierarchy_depth_inter_slices)는 각각 인트라 슬라이스와 인터 슬라이스에 대한 MTT 유형 분할의 최대 계층 깊이를 나타낸다.
log2_min_qt_size_intra_slice_minus2와 log2_min_qt_size_inter_slices_minus2의 의미에 기초하여, log2_min_qt_size_intra_slice_minus2와 log2_min_qt_size_inter_slices_minus2의 범위가 0 ~ CtbLog2SizeY - 2이다.
여기서, CtbLog2SizeY는 log2_ctu_size_minus2의 의미로 정의되며, 이는 각각의 CTU의 루마 코딩 트리 블록 크기의 log2 값을 의미하며, VTM2.0에서의 CtbLog2SizeY가 7이다.
(7-22)와 (7-23)에 기초하여, MinQtLog2SizeIntraY와 MinQtLog2SizeInterY의 범위가 2 ~ CtbLog2SizeY이다.
(7-25)에 기초하여, MinQtLog2SizeY의 범위가 2 ~ CtbLog2SizeY이다.
(7-30)에 기초하여, MinQtSizeY의 범위, JVET-K1001-v4에서, (1<<2) ~ (1<<CtbLog2SizeY)이고, VTM2.0에서의 범위가 (1<<2) ~ (1<<7)이며, 이 범위는 4~128이다.
JVET-K1001-v4에서, log2_diff_ctu_max_bt_size는 슬라이스 헤더에서 조건부로 시그널링된다.
파라미터(log2_diff_ctu_max_bt_size)는 이진 분할을 사용하여 분할될 수 있는 코딩 블록의 루마 CTB 크기와 최대 루마 크기(폭 또는 높이) 간의 차이를 지정한다. log2_diff_ctu_max_bt_size의 값은 0 ~ CtbLog2SizeY-MinCbLog2SizeY(0과 CtbLog2SizeY-MinCbLog2SizeY를 포함하는) 범위에 있어야 한다.
log2_diff_ctu_max_bt_size가 없으면, log2_diff_ctu_max_bt_size의 값이 2라고 추정한다.
MinCbLog2SizeY는 허용된 최소 코딩 블록 크기를 의미하는 (7-7)에 정의되어 있다.
log2_diff_ctu_max_bt_size의 의미에 기초하여, log2_diff_ctu_max_bt_size의 범위가 0~ CtbLog2SizeY - MinCbLog2SizeY이다.
(7-26)에 기초하여, MaxBtLog2SizeY의 범위가 CtbLog2SizeY ~ MinCbLog2SizeY이다.
(7-31)에 기초하여, MaxBtSizeY의 범위가 (1 << CtbLog2SizeY) ~ (1 << MinCbLog2SizeY)이다.
(7-7)에 기초하여, JVET-K1001-v4에서의 MaxBtSizeY 범위가 (1 << CtbLog2SizeY) ~ (1 << 2)이다. JVET-K1001-v4에서의 MaxBtSizeY의 범위가 (1<< CtbLog2SizeY ) ~ (1<< 2)이고, VTM2.0에서의 CtbLog2SizeY가 7이므로, VTM2.0에서의 MaxBtSizeY의 범위가 128 ~ 4이다
그러므로, MinQtSizeY의 범위가 4 ~ (1 << CtbLog2SizeY)이고, VTM2.0에서는 4 ~ 128이며, MaxBtSizeY의 범위가 (1 << CtbLog2SizeY) ~ 4이고, VTM2.0에서는 128 ~ 4이다.
따라서, MinQtSizeY가 MaxSBtSizeY보다 클 가능성이 있다.
또한, VVC 2.0에서의 현재 경계 처리에 기초하여, 경계 위치 블록에 대해 QT 분할과 BT 분할만이 허용된다(TT 허용되지 않음, 분할 없음이 허용되지 않음).
현재 코딩 블록이 경계에 있고 또한 현재 코딩 블록 크기(cbSizeY)가 조건을 충족하면,
MinQtSizeY > cbSizeY > MaxBtSizeY이고,
현재 코딩 블록에 대해 QT 분할도 BT 분할도 불가능하다. 따라서, 현재 블록에 이용 가능한 파티션 모드가 없다.
(실시예 1)
이하, 경계 케이스의 문제를 포함하여, 전술한 문제의 해결책(본 발명의 실시예)에 대해 더 상세하게 설명한다.
일 실시예에 따르면, 언급한 문제를 해결하기 위해서는, MaxBtSizeY가 MinQtSizeY보다 작지 않도록 MaxBtSizeY의 하한이 MinQtSizeY로 제한되어야 한다. 특히, MaxBtSizeY의 하한이 MinQtSizeY일 수 있고, 따라서 MaxBtSizeY의 범위가 (1<< CtbLog2SizeY) ~ (1<< MinQtLog2SizeY)이어야 하며, 따라서 MaxBtLog2SizeY의 범위가 CtbLog2SizeY ~ MinQtLog2SizeY이어야 하고, log2_diff_ctu_max_bt_size의 범위가 0 ~ CtbLog2SizeY - MinQtLog2SizeY이어야 한다.
(비디오 표준의) 초안 텍스트의 대응하는 변경 사항은 log2_diff_ctu_max_bt_size의 의미이며 다음과 같다.
log2_diff_ctu_max_bt_size가 이진 분할을 사용하여 분할될 수 있는 코딩 블록의 루마 CTB 크기와 최대 루마 크기(폭 또는 높이) 간의 차이를 지정한다. log2_diff_ctu_max_bt_size의 값은 0 ~ CtbLog2SizeY-MinQtLog2SizeY(0과 CtbLog2SizeY-MinQtLog2SizeY를 포함하는 포함) 범위에 있어야 한다. 그래서, MinQtSizeY에 관한 정보를 이용하여 MaxBtSizeY의 유효성을 결정할 수 있다. 즉, MaxBtSizeY는 MinQtSizeY에 관한 정보에 기초하여 결정될 수 있다.
코딩 장치(디코더 또는 인코더)에 의해 구현되는 코딩의 대응하는 방법이,
픽처의 현재 블록이 경계 블록인지 여부를 판정하는 단계;
현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 큰지 여부를 판정하는 단계;
현재 블록이 경계 블록이고 또한 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 크지 않으면, 이진 분할을 현재 블록에 적용하는 단계일 수 있다. 여기서, 허용된 최소 쿼드트리 리프 노드 크기가 허용된 최대 이진 트리 루트 노드 크기보다 크지 않다.
여기서, 이진 분할을 현재 블록에 적용하는 단계는 강제 이진 분할을 현재 블록에 적용하는 단계를 포함할 수 있다.
여기서, 현재 블록은 이미지 또는 코딩 트리 유닛(CTU)을 분할하여 얻어질 수 있다.
여기서, 이 방법은 2가지 사례, 1) treeType이 SINGLE_TREE 또는 DUAL_TREE_LUMA인 사례; 2) treeType이 DUAL_TREE_CHROMA인 사례를 포함할 수 있다. 사례 1)의 경우, 현재 블록이 루마 블록이고, 사례 2)의 경우, 현재 블록이 크로마 블록이다.
여기서, 허용된 최대 이진 트리 루트 노드 크기가 이진 트리 분할을 이용하여 분할될 수 있는 루마 코딩 루트 블록의 루마 샘플의 최대 루마 크기일 수 있다.
여기서, 허용된 최대 삼진 트리 루트 노드 크기가 삼진 트리 분할을 이용하여 분할될 수 있는 루마 코딩 루트 블록의 루마 샘플의 최대 루마 크기일 수 있다.
여기서, 허용된 최소 쿼드트리 리프 노드 크기가 쿼드트리 분할로 인해 생성되는 루마 리프 블록의 루마 샘플의 최소 루마 크기일 수 있다.
여기서, 코딩은 이미지, 또는 비디오, 또는 동영상 코딩에 대응한다.
경계 블록이 있다는 것은 이미지/프레임 경계가 블록을 자르거나, 또는, 즉 블록이 이미지/프레임 경계에 있다는 것을 의미한다. 위의 실시예에서, 현재 블록이 경계 블록이고(조건 1) 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 크지 않으면(조건 2) 이진 분할이 현재 블록에 적용된다. 일부 실시예에서, 이진 분할 대신에 삼진 분할이나 다른 분할이 사용될 수 있다는 것을 유의해야 한다. 또한, 일부 실시예에서, 조건 1에 관계없이 조건 2에 따라 이진 분할이 적용될 수 있다. 즉, 조건 1이 평가될 필요가 없다. 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 실제로 크면(즉, 조건 2가 충족되지 않으면) 쿼드트리 분할이 적용될 수 있다.
이진 분할이 경계 블록에만 사용되는(조건 1) 실시예가 있다는 것을 유의해야 한다. 비경계 블록의 경우, 쿼드트리 분할이 사용되는 유일한 분할일 수 있다. 이미지/프레임의 경계에서 이진(또는 삼항) 분할을 적용하면 더 효율적인 분할, 예를 들어 수평 경계에서의 수평 이진/삼진 분할 및 수직 경계에서의 수직 이진/삼진 분할의 이점이 달성될 수 있다.
코딩 장치(디코더 또는 인코더)에 의해 구현되는 대응하는 다른 코딩 방법은, 경계 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 큰지 여부를 판정하는 단계일 수 있다. 경계 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 크지 않으면, 허용된 최소 쿼드트리 리프 노드 크기가 (예를 들어, 표준 규격에 의해) 허용된 최대 이진 트리 루트 노드 크기보다 크지 않고, 이진 분할이 경계 블록에 적용된다.
선택적으로, 경계 블록이 코너 블록을 포함하지 않을 수 있다. 즉, 수직 및 수평 이미지/프레임 경계에 의해 잘리는 코너 블록이 전술한 조건 1의 목적상 경계 블록으로 간주되지 않는다.
(실시예 2)
이하, 본 개시의 다른 실시예(전술한 실시예와 조합될 수 있음)에 대해 설명한다.
JVET-K1001-v4에서, max_mtt_hierarchy_depth_inter_slices와 max_mtt_hierarchy_depth_intra_slices는 SPS 에서 시그널링된다. 즉, max_mtt_hierarchy_depth_inter_slices와 max_mtt_hierarchy_depth_intra_slices는 구문 요소이고, 구문 요소의 값이 인코딩된 이미지 또는 비디오를 포함하는 비트스트림에 포함된다는 것을 의미한다.
특히, max_mtt_hierarchy_depth_inter_slices는 slice_type이 0 (B) 또는 1 (P)인 슬라이스 내의 쿼드트리 리프의 멀티형 트리 분할로 인해 생성되는 코딩 유닛의 최대 계층 깊이를 지정한다. max_mtt_hierarchy_depth_inter_slices의 값은 0 ~ CtbLog2SizeY-MinTbLog2SizeY(0과 CtbLog2SizeY-MinTbLog2SizeY를 포함하는) 범위에 있어야 한다.
max_mtt_hierarchy_depth_intra_slices는 slice_type이 2 (I)인 슬라이스 내의 쿼드트리 리프의 멀티형 트리 분할로 인해 생성되는 코딩 유닛의 최대 계층 깊이를 지정한다. max_mtt_hierarchy_depth_intra_slices의 값은 0 ~ CtbLog2SizeY-MinTbLog2SizeY(0과 CtbLog2SizeY-MinTbLog2SizeY를 포함하는) 범위에 있어야 한다.
MinTbSizeY(4로 고정됨)는 (7-9)에 정의되어 있고, 그러므로 MinTbLog2SizeY = log2 MinTbSizeY(2로 고정됨)이다.
멀티형 트리 파티션의 허용된 최대 깊이인 MaxMttDepth는 멀티형 트리 파티션의 최대 허용 깊이를 의미한다. 현재 멀티형 트리 파티션 깊이가 MaxMttDepth 보다 크거나 같으면, 멀티형 트리 파티션이 허용(적용)되지 않는다.
max_mtt_hierarchy_depth_inter_slices와 max_mtt_hierarchy_depth_intra_slices의 의미에 기초하여, max_mtt_hierarchy_depth_inter_slices와 max_mtt_hierarchy_depth_intra_slices의 범위가 0~ CtbLog2SizeY - MinTbLog2SizeY이다.
(7-35)에 기초하여, MaxMttDepth의 범위가 0 ~ CtbLog2SizeY - MinTbLog2SizeY이다. VTM2.0에서, CtbLog2SizeY가 7이므로, MaxMttDepth의 범위가 0 ~ 5이다.
따라서, MaxMttDepth의 범위가 0 ~ CtbLog2SizeY - MinTbLog2SizeY이고, VTM2.0에서는 0 ~ 5이다.
VVC 2.0에서의 현재 경계 처리에 기초하여, 경계 위치 블록에 대해 QT 분할과 BT 분할만이 허용된다(TT 허용되지 않음, '분할 없음' 허용되지 않음).
위에서 언급한 첫 번째 문제가 해결되면(MaxBtSizeY> = MinQtSizeY이면), 여전히 다음의 조건을 만족한다.
cbSizeY <= MinQtSizeY
MaxMttDepth =0
경계 처리를 위한 충분한 레벨의 BT(일반적으로, TT를 포함하는 어떤 MTT) 파티션이 없다.
예를 들어, MinQtSizeY가 16이고, MinTbSizeY가 4이며, MaxMttDepth가 0이다.
경계 블록의 cbSizeY = 16이고, 부모 파티션이 QT이며, 이 블록이 여전히 경계에 있으면, 현재 블록의 Mttdepth가 MaxMttDepth에 도달하기 때문에, 더 이상 파티션이 수행될 수 없다.
경계 케이스의 이 문제의 해결책(본 발명의 실시예): 언급된 문제를 해결하기 위해서는, QT 파티션 이후, 경계 케이스에 대한 충분한 레벨의 멀티형 트리 파티션이 있다는 것을 확인하기 위해 MaxMttDepth의 하한이 1로 제한되어야 한다(즉, 0의 값을 가질 수 없다). 또는, 심지어 추가적으로, QT 분할 이후 경계 케이스와 비경계 케이스 모두에 대해 충분한 레벨의 멀티형 트리 분할이 있다는 것을 확인하기 위해, MaxMttDepth의 하한이 (MinQtLog2SizeY- MinTbLog2SizeY)로 제한되어야 한다.
(표준) 초안 텍스트의 대응하는 변경이 max_mtt_hierarchy_depth_inter_slices와 max_mtt_hierarchy_depth_intra_slices의 의미에 있고 다음과 같다.
max_mtt_hierarchy_depth_inter_slices는 slice_type이 0 (B) 또는 1 (P)인 슬라이스 내의 쿼드트리 리프의 멀티형 트리 분할로 인해 생성되는 코딩 유닛의 최대 계층 깊이를 지정한다. max_mtt_hierarchy_depth_inter_slices의 값이 1 ~ CtbLog2SizeY-MinTbLog2SizeY(1과 CtbLog2SizeY-MinTbLog2SizeY를 포함하는) 범위에 있어야 한다.
max_mtt_hierarchy_depth_intra_slices는 slice_type이 2 (I)인 슬라이스 내의 쿼드트리 리프의 멀티형 트리 분할로 인해 생성되는 코딩 유닛의 최대 계층 깊이를 지정한다. max_mtt_hierarchy_depth_intra_slices의 값이 1 ~ CtbLog2SizeY-MinTbLog2SizeY의 범위에 있어야 한다.
또는,
max_mtt_hierarchy_depth_inter_slices는 slice_type이 0 (B) 또는 1 (P)인 슬라이스에서 쿼드트리 리프의 멀티형 트리 분할로 인해 생성되는 코딩 유닛의 최대 계층 깊이를 지정한다. max_mtt_hierarchy_depth_inter_slices의 값이 MinQtLog2SizeY-MinTbLog2SizeY ~ CtbLog2SizeY-MinTbLog2SizeY(MinQtLog2SizeY-MinTbLog2SizeY와 CtbLog2SizeY-MinTbLog2SizeY를 포함하는) 범위에 있어야 한다.
max_mtt_hierarchy_depth_intra_slices는 slice_type이 2 (I)인 슬라이스에서 쿼드트리 리프의 멀티형 트리 분할로 인해 생성되는 코딩 유닛의 최대 계층 깊이를 지정한다. max_mtt_hierarchy_depth_intra_slices의 값이 MinQtLog2SizeY-MinTbLog2SizeY ~ CtbLog2SizeY-MinTbLog2SizeY(MinQtLog2SizeY-MinTbLog2SizeY와 CtbLog2SizeY-MinTbLog2SizeY를 포함하는) 범위에 있어야 한다.
코딩 장치(디코더 또는 인코더)에 의해 구현되는 대응하는 코딩 방법이,
이미지를 블록으로 분할하는 단계 - 블록은 경계 블록을 포함하고 있음 -; 및 최대 경계 멀티형 분할 깊이를 갖는 경계 블록에 이진 분할을 적용하는 단계일 수 있다. 여기서, 최대 경계 멀티형 파티션 깊이는 적어도 최대 멀티형 트리 깊이와 최대 멀티형 트리 깊이 오프셋의 합이고, 최대 멀티형 트리 깊이는 0보다 크다. 이 실시예는 실시예 1과 결합될 수 있거나 또는 실시예 1 없이 적용될 수 있다.
선택적으로, 이진 분할을 경계 블록에 적용할 때, 최대 멀티형 트리 깊이가 0보다 크다.
선택적으로, 경계 블록이 코너 블록을 포함하지 않을 수 있다.
(실시예 3)
본 개시의 또 다른 실시예에서,
JVET-K1001-v4에서, MinQtSizeY> MaxBtSizeY 이고 MinQtSizeY> MaxTtSizeY이면.
cbSize = MinQtsizeY이면, 사용 가능한 파티션 모드가 없기 때문에 파티션이 MinCbSizeY에 도달할 수 없다(MinTbSizeY와 MinCbsizeY가 고정되어 있고 4이다).
비경계 케이스 또는 경계 케이스의 이 문제의 해결책: 언급된 문제를 해결하기 위해서는, MaxBtSizeY가 MinQtSizeY보다 작지 않도록 MaxBtSizeY의 하한을 MinQtSizeY로 제한해야 한다. 또는, MaxTtSizeY가 MinQtSizeY보다 작지 않도록 MaxTtSizeY의 하한을 MinQtSizeY로 제한해야 한다.
초안 텍스트의 대응하는 변경이 의미에 있다.
log2_diff_ctu_max_bt_size는 이진 분할을 사용하여 분할될 수 있는 코딩 블록의 루마 CTB 크기와 최대 루마 크기(폭 또는 높이) 간의 차이를 지정한다. log2_diff_ctu_max_bt_size의 값이 0 ~ CtbLog2SizeY-MinQtLog2SizeY(0과 CtbLog2SizeY-MinQtLog2SizeY를 포함하는) 범위에 있어야 한다.
및/또는,
log2_min_qt_size_intra_slices_minus2 + 2는 slice_type이 2 (I) 슬라이스 내의 CTU의 쿼드트리 분할로 인해 생성되는 리프 블록의 최소 루마 크기를 지정한다. log2_min_qt_size_intra_slices_minus2의 값은 0 ~ MaxTtLog2SizeY-2(0과 MaxTtLog2SizeY-2를 포함하는) 범위에 있어야 한다.
log2_min_qt_size_inter_slices_minus2 + 2는 slice_type이 0 (B) 또는 1 (P)인 슬라이스 내의 CTU의 쿼드트리 분할로 인해 생성되는 리프 블록의 최소 루마 크기를 지정한다. log2_min_qt_size_inter_slices_minus2의 값이 0 ~ MaxTtLog2SizeY-2(0과 MaxTtLog2SizeY-2를 포함하는) 범위에 있어야 한다.
코딩 장치(디코더 또는 인코더)에 의해 구현되는 대응하는 코딩 방법이,
현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 큰지 여부를 판정하는 단계; 및
현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 크지 않으면, 멀티형 트리 분할을 현재 블록에 적용하는 단계일 수 있다.
여기서, 허용된 최소 쿼드트리 리프 노드 크기가 허용된 최대 이진 트리 루트 노드 크기보다 크지 않거나 또는 허용된 최소 쿼드트리 리프 노드 크기가 허용된 최대 삼진 트리 루트 노드 크기보다 크지 않다.
선택적으로, 허용된 최소 쿼드트리 리프 노드 크기가 허용된 최대 이진 트리 루트 노드 크기보다 크지 않고, 허용된 최소 쿼드트리 리프 노드 크기가 허용된 최대 삼진 트리 루트 노드 크기보다 크지 않다.
선택적으로, 멀티형 트리 분할을 현재 블록에 적용하는 단계는, 삼진 분할을 현재 블록에 적용하는 단계, 또는 이진 분할을 현재 블록에 적용하는 단계를 포함한다.
선택적으로, 경계 블록은 코너 블록을 포함하지 않을 수 있다.
(실시예 4)
본 개시의 또 다른 실시예에서,
MaxBtSizeY >= MinQtSizeY이면, MinQtSizeY> MinTbLog2SizeY이고, MaxMttDepth < (MinQtLog2SizeY- MinTbLog2SizeY)이며,
cbSize = MinQtsizeY이면, 허용되는 멀티형 트리 파티션의 레벨이 충분하지 않기 때문에, 파티션이 MinCbSizeY에 도달할 수 없다.
비경계 케이스 또는 경계 케이스의 이 문제의 해결책: 언급된 문제를 해결하기 위해서는, QT 파티션 이후에 경계 케이스와 비경계 케이스 모두에 대한 충분한 레벨의 멀티형 트리 파티션이 있도록 MaxMttDepth의 하한을 (MinQtLog2SizeY- MinTbLog2SizeY)로 제한해야 한다.
초안 텍스트의 대응하는 변경이 max_mtt_hierarchy_depth_inter_slices와 max_mtt_hierarchy_depth_intra_slices의 의미에 있으며 다음과 같다.
max_mtt_hierarchy_depth_inter_slices는 slice_type이 0 (B) 또는 1 (P)인 슬라이스 내의 쿼드트리 리프의 멀티형 트리 분할로 인해 생성되는 코딩 유닛의 최대 계층 깊이를 지정한다. max_mtt_hierarchy_depth_inter_slices의 값은 MinQtLog2SizeY-MinTbLog2SizeY ~ CtbLog2SizeY-MinTbLog2SizeY(MinQtLog2SizeY-MinTbLog2SizeY와 CtbLog2SizeY-MinTbLog2SizeY를 포함하는) 범위에 있어야 한다.
max_mtt_hierarchy_depth_intra_slices는 slice_type이 2 (I)인 슬라이스 내의 쿼드트리 리프의 멀티형 트리 분할로 인해 생성되는 코딩 유닛의 최대 계층 깊이를 지정한다. max_mtt_hierarchy_depth_intra_slices의 값은 MinQtLog2SizeY-MinTbLog2SizeY ~ CtbLog2SizeY-MinTbLog2SizeY(MinQtLog2SizeY-MinTbLog2SizeY와 CtbLog2SizeY-MinTbLog2SizeY를 포함하는) 범위에 있어야 한다.
코딩 장치(디코더 또는 인코더)에 의해 구현되는 대응하는 코딩 방법이,
이미지를 블록으로 분할하는 단계;
최종 최대 멀티형 트리 깊이를 가진 블록 중 하나의 블록에 멀티형 트리 분할을 적용하는 단계일 수 있다. 여기서, 최종 최대 멀티형 트리 깊이는 적어도 최대 멀티형 트리 깊이와 최대 멀티형 트리 깊이 오프셋의 합이고, 최대 멀티형 트리 깊이는 허용된 최소 쿼드트리 리프 노드 크기의 Log2 값에서 허용된 최소 변환 블록 크기의 Log2 값을 뺀 값보다 크거나 같거나, 또는 최대 멀티형 트리 깊이는 허용된 최소 쿼드트리 리프 노드 크기의 Log2 값에서 허용된 최소 코딩 블록 크기의 Log2 값을 뺀 값과 크거나 같다.
선택적으로, 이 블록은 비경계 블록이다.
선택적으로, 최대 멀티형 트리 깊이 오프셋은 0이다.
선택적으로, 이 블록은 경계 블록이고, 멀티형 트리 분할은 이진 분할이다.
선택적으로, 멀티형 트리 분할은 삼진 분할이다(또는 삼진 분할을 포함한다).
선택적으로, 경계 블록은 코너 블록을 포함하지 않을 수 있다.
실시예 1 내지 실시예 4는, 이미지/프레임을 코딩 단위로 분할하고 코딩 단위를 코딩하기 위해 인코더 측에 적용될 수 있다. 실시예 1 내지 실시예 4는 이미지/프레임의 파티션, 즉 코딩 유닛을 제공하고 그에 따라 코딩 유닛을 디코딩하기 위해(예를 들어, 스트림으로부터 코딩 유닛을 정확하게 파싱하고 디코딩하기 위해) 디코더 측에 적용될 수 있다.
일부 실시예에 따르면, 디코더가 제공되고, 디코더는 하나 이상의 프로세서; 및 프로세서에 연결되고 프로세서가 실행하기 위한 프로그램을 저장하는 비일시적 컴퓨터 판독가능 저장 매체를 포함한다. 여기서, 프로그램은, 프로세서에 의해 실행될 때, 실시예 1 내지 실시예 4를 참조하여 설명한 방법 중 어느 것을 실행하도록 디코더를 구성한다.
또한, 인코더가 제공되고, 인코더는 하나 이상의 프로세서; 및 프로세서에 연결되고 프로세서가 실행하기 위한 프로그램을 저장하는 비일시적 컴퓨터 판독가능 저장 매체를 포함한다. 여기서, 프로그램은, 프로세서에 의해 실행될 때, 실시예 1 내지 실시예 4를 참조하여 설명한 방법 중 어느 것을 실행하도록 인코더를 구성한다.
요약하면, 디코딩 장치에 의해 구현되는 코딩을 위한 방법이 제공된다. 이 방법은, 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 큰지 여부를 판정하는 단계; 및 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 크지 않으면, 멀티형 트리 분할을 현재 블록에 적용하는 단계를 포함한다. 여기서, 허용된 최소 쿼드트리 리프 노드 크기가 허용된 최대 이진 트리 루트 노드 크기보다 크지 않거나 또는 허용된 최소 쿼드트리 리프 노드 크기가 허용된 최대 삼진 트리 루트 노드 크기보다 크지 않다.
이 접근법은 이미지/비디오 블록에 대한 분할 파라미터의 효율적인 분할과 시그널링을 용이하게 한다.
또한, 일부 구현에서는, 이 방법은 픽처의 현재 블록이 경계 블록인지 여부를 판정하는 단계를 더 포함한다. 현재 블록이 경계 블록이고 또한 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 크지 않으면, 이 방법은 이진 분할을 현재 블록에 적용하는 단계를 더 포함한다. 이 경우, 허용된 최소 쿼드트리 리프 노드 크기가 허용된 최대 이진 트리 루트 노드 크기보다 크지 않다는 것을 유의해야 한다. 예를 들어, 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 크지 않으면, 전술한 멀티형 트리 분할을 현재 블록에 적용하는 단계는, 현재 블록이 경계 블록이고 또한 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 크지 않으면 현재 블록에 이진 분할을 적용하는 단계를 포함한다.
이진 분할의 제공은 예를 들어 이미지/비디오 프레임 경계의 블록, 경계에 의해 잘리는 블록에 대해 특히 유리할 수 있다. 따라서, 일부 구현에서, 경계 블록에 대한 접근법을 적용하고 나머지 블록에 대해서는 적용하지 않는 것이 유리할 수 있다. 그러나, 본 개시는 이에 한정되지 않으며, 앞서 언급한 바와 같이, 더 큰 분할 깊이를 위해 이진 분할을 적용하는 접근법이 비경계 블록에도 적용되어 효율적으로 시그널링될 수 있다.
전술한 실시예에 추가하여 또는 대안적으로, 허용된 최소 쿼드트리 리프 노드 크기가 허용된 최대 이진 트리 루트 노드 크기보다 크지 않고, 허용된 최소 쿼드트리 리프 노드 크기가 허용된 최대 삼진 트리 루트 노드 크기보다 크지 않다.
멀티형 트리 분할을 현재 블록에 적용하는 단계는 삼진 분할을 현재 블록에 적용하는 단계, 또는 이진 분할을 현재 블록에 적용하는 단계를 포함할 수 있다. 하지만, 본 개시는 이에 제한되지 않으며, 일반적으로 멀티형 트리 분할은 추가 분할 또는 다른 종류의 분할을 포함할 수도 있다.
이 방법은 추가적으로, 허용된 최소 쿼드트리 리프 노드 크기에 기초하여 허용된 최대 이진 트리 루트 노드 크기를 결정하는 단계를 포함할 수 있다. 이렇게 하면 파라미터의 효율적인 시그널링/저장이 용이해진다. 예를 들어, 허용된 최대 이진 트리 루트 노드 크기가 허용된 최소 쿼드트리 리프 노드 크기와 같다고 간주될 수 있다. 하지만, 본 개시는 이에 제한되지 않고, 허용된 최대 이진 트리 루트 노드 크기를 도출하기 위해 다른 관계를 가정할 수 있다.
예시적인 일 실시예에 따르면, 전술한 실시예에 추가하여 또는 대안적으로, 이 방법은 이미지를 블록으로 분할하는 단계 - 블록은 현재 블록을 포함하고 있음 -를 포함한다. 이진 분할을 현재 블록에 적용하는 단계는, 최대 경계 멀티형 파티션 깊이로 이진 분할을 경계 블록에 적용하는 단계 - 최대 경계 멀티형 파티션 깊이는 적어도 최대 멀티형 트리 깊이와 최대 멀티형 트리 깊이 오프셋의 합이고, 최대 멀티형 트리 깊이가 0보다 큼 -를 포함한다. 또한, 일부 구현에서, 이진 분할을 경계 블록에 적용할 때 최대 멀티형 트리 깊이가 0보다 크다.
일 실시예에 따르면, 이 방법은 이미지를 블록(현재 블록을 포함하는 블록)으로 분할하는 단계를 포함한다. 멀티형 트리 분할을 현재 블록에 적용하는 단계는, 최종 최대 멀티형 트리 깊이로 블록들 중 현재 블록에 멀티형 트리 분할을 적용하는 단계 - 최종 최대 멀티형 트리 깊이는 적어도 최대 멀티형 트리 깊이와 최대 멀티형 트리 깊이 오프셋의 합이고, 최대 멀티형 트리 깊이는 허용된 최소 쿼드트리 리프 노드 크기의 Log2 값에서 최소 허용 변환 블록 크기의 Log2 값을 뺀 값보다 크거나 같거나, 또는 최대 멀티형 트리 깊이는 허용된 최소 쿼드트리 리프 노드 크기의 Log2 값에서 허용된 최소 코딩 블록 크기의 Log2 값을 뺀 값보다 크거나 같다. 이렇게 하면 더 큰 파티셔닝 깊이에 대해서도 추가 분할이 용이해진다.
현재 블록은 비경계 블록일 수 있다. 최대 멀티형 트리 깊이 오프셋은 0일 수 있다. 현재 블록은 대안적으로 또는 추가적으로, 경계 블록일 수 있고, 멀티형 트리 분할은 이진 분할이다. 멀티형 트리 분할은 삼진 분할일 수 있거나 또는 삼진 분할을 포함할 수 있다.
일 실시예에 따르면, 인코딩 방법이 제공되며, 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 큰지 여부를 판정하는 단계; 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 크지 않으면, 멀티형 트리 분할을 현재 블록에 적용하는 단계 - 허용된 최소 쿼드트리 리프 노드 크기가 허용된 최대 이진 트리 루트 노드 크기보다 크지 않거나 또는 허용된 최소 쿼드트리 리프 노드 크기가 최대 허용 삼진 트리 루트 노드 크기보다 크지 않음 -를 포함한다.
인코더 측과 디코더 측이 비트스트림을 공유해야 하기 때문에, 인코딩 방법은 디코딩 방법과 관련하여 앞서 언급한 규칙과 제한 중 어느 것도 적용할 수 있다. 특히, 인코딩 측은 전술한 분할로 인해 생성되는 파티션을 코딩한 후 비트스트림을 생성하고, 디코딩 측은 비트스트림을 파싱하고 그에 따라 디코딩된 파티션을 재구성한다. 이하에서 설명하는 인코딩 장치(인코더) 및 디코딩 장치(디코더)와 관련된 실시예에 대해서도 동일하게 적용된다.
일 실시예에 따르면, 디코딩 장치가 제공된다. 디코딩 장치는, 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 큰지 여부를 판정하고; 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 크지 않으면, 멀티형 트리 분할을 현재 블록에 적용하도록 구성된 회로를 포함한다. 여기서, 허용된 최소 쿼드트리 리프 노드 크기가 허용된 최대 이진 트리 루트 노드 크기보다 크지 않거나 또는 허용된 최소 쿼드트리 리프 노드 크기가 최대 허용 삼진 트리 루트 노드 크기보다 크지 않다. 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 큰지 여부를 판정하는 것이 디코딩 측에서 비트스트림으로 시그널링하는 것에 기초하여 수행될 수 있다는 것을 유의해야 한다.
또한, 인코딩 장치가 제공된다. 인코딩 장치는, 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 큰지 여부를 판정하고; 현재 블록의 크기가 허용된 최소 쿼드트리 리프 노드 크기보다 크지 않으면, 멀티형 트리 분할을 현재 블록에 적용하도록 구성된 회로를 포함한다. 여기서, 허용된 최소 쿼드트리 리프 노드 크기가 허용된 최대 이진 트리 루트 노드 크기보다 크지 않거나 또는 허용된 최소 쿼드트리 리프 노드 크기가 최대 허용 삼진 트리 루트 노드 크기보다 크지 않다.
일 실시예에 따르면, 처리 회로에 의해 실행될 프로그래밍을 저장하는 비일시적 컴퓨터 판독가능 저장 매체가 제공된다. 여기서, 프로그래밍은 처리 회로에 의해 실행될 때 전술한 방법 중 어느 방법을 수행하도록 처리 회로를 구성한다.
본 개시에서 설명된 장치는 본 개시에서 설명된 다양한 연산과 방법을 수행하기 위한 처리 회로를 포함할 수 있다. 처리 회로는 하드웨어와 소프트웨어를 포함할 수 있다. 예를 들어, 처리 회로는 하나 이상의 프로세서와 하나 이상의 프로세서에 연결된 비휘발성 메모리를 포함할 수 있다. 메모리는 하나 이상의 프로세서에 의해 실행될 때 장치로 하여금 전술한 연산 또는 방법을 수행하게 하는 프로그램 코드를 싣고 있을 수 있다.
구현뿐만 아니라 다양한 실시예와 관련하여 본 발명에 대해 설명하였다. 하지만, 도면의 연구, 본 개시, 및 독립 청구항으로부터, 다른 변형이 당업자에 의해 이해되어 실행되고, 청구된 발명이 실시될 수 있다. 청구 범위와 설명에서, "포함"이라는 단어가 다른 요소 또는 단계를 배제하지 않으며, 단수 표현이 복수를 배제하지 않는다. 단일 요소 또는 다른 유닛이 청구 범위에 인용된 여러 엔티티 또는 항목의 기능을 수행할 수 있다. 특정 조치가 서로 다른 종속항에 언급되어 있다는 사실만으로는 이러한 조치의 조합이 유리한 구현에 사용될 수 없다는 것을 나타내지 않는다.
이하, 전술한 실시예에서 설명된 인코딩 방법과 디코딩 방법의 적용과 이러한 방법을 이용하는 시스템에 대해 설명한다.
도 27은 콘텐츠 분배 서비스를 구현하기 위한 콘텐츠 공급 시스템(3100)을 나타내는 블록도이다. 이 콘텐츠 공급 시스템(3100)은 캡처 장치(3102), 단말 장치(3106)를 포함하고, 선택적으로 디스플레이(3126)를 포함한다. 캡처 장치(3102)는 통신 링크(3104)를 통해 단말 장치(3106)와 통신한다. 통신 링크는 위에서 설명된 통신 채널(13)을 포함할 수 있다. 통신 링크(3104)는 와이파이(WIFI), 이더넷, 케이블, 무선 (3G/4G/5G), USB, 또는 이들의 어떤 종류의 조합을 포함하지만 이에 제한되지 않는다.
캡처 장치(3102)는 데이터를 생성하고, 전술한 실시예에 도시된 바와 같은 인코딩 방법에 의해 데이터를 인코딩할 수 있다. 대안적으로, 캡처 장치(3102)는 데이터를 스트리밍 서버(도면에 도시되지 않음)에 분배할 수 있고, 서버는 데이터를 인코딩하고 인코딩된 데이터를 단말 장치(3106)에 전송한다. 캡처 장치(3102)는 카메라, 스마트폰 또는 패드, 컴퓨터 또는 랩톱, 화상 회의 시스템, PDA, 차량 탑재 장치, 또는 이들의 어떤 조합을 포함하지만 이에 제한되지 않는다. 데이터가 비디오를 포함하는 경우, 캡처 장치(3102)에 포함된 비디오 인코더(20)는 실제로 비디오 인코딩 처리를 수행할 수 있다. 데이터가 오디오(즉, 음성)를 포함하는 경우, 캡처 장치(3102)에 포함된 오디오 인코더는 실제로 오디오 인코딩 처리를 수행할 수 있다. 일부 실제 시나리오를 위해, 캡처 장치(3102)는 인코딩된 비디오와 오디오 데이터를 함께 다중화함으로써 분배한다. 다른 실제 시나리오의 경우, 예를 들어 화상 회의 시스템에서, 인코딩된 오디오 데이터와 인코딩된 비디오 데이터는 다중화되지 않는다. 캡처 장치(3102)는 인코딩된 오디오 데이터와 인코딩된 비디오 데이터를 단말 장치(3106)에 개별적으로 분배한다.
콘텐츠 공급 시스템(3100)에서, 단말 장치(310)는 인코딩된 데이터를 수신하여 재생한다. 단말 장치(3106)는 데이터 수신 및 복구 능력을 구비한 장치, 예컨대 전술한 인코딩된 데이터를 디코딩할 수 있는 스마트폰 또는 패드(3108), 컴퓨터 또는 랩톱(3110), 네트워크 비디오 레코더(NVR)/디지털 비디오 레코더(DVR, 3112), TV(3114), 셋톱 박스(STB, 3116), 화상 회의 시스템(3118), 비디오 감시 시스템(3120), 개인용 정보 단말기(PDA, 3122), 차량 장착형 장치(3124), 또는 이들의 어떤 조합일 수 있다. 예를 들어, 단말 장치(3106)는 전술한 목적지 장치(14)를 포함할 수 있다. 인코딩된 데이터가 비디오를 포함할 때, 단말 장치에 포함된 비디오 디코더(30)는 비디오 디코딩을 수행하도록 우선순위를 가지고 있다.
디스플레이가 있는 단말 장치, 예를 들어 스마트폰 또는 패드(3108), 컴퓨터 또는 랩톱(3110), 네트워크 비디오 레코더(NVR)/디지털 비디오 레코더(DVR, 3112), TV(3114), 개인용 정보 단말기(PDA, 3122), 또는 차량 장착형 장치(3124)의 경우, 단말 장치는 디코딩된 데이터를 디스플레이에 공급할 수 있다. 디스플레이가 없는 단말 장치의 경우, 예를 들어 STB(3116), 화상 회의 시스템(3118), 또는 비디오 감시 시스템(3120), 외부 디스플레이(3126)가 내부에 접촉됨으로서, 디코딩된 데이터를 수신하고 보여준다.
본 시스템의 각각의 장치가 인코딩 또는 디코딩을 수행할 때, 전술한 실시예에 도시된 바와 같이, 픽처 인코딩 장치 또는 픽처 디코딩 장치가 사용될 수 있다.
도 28은 단말 장치(3106)의 예의 구조를 도시한 도면이다. 단말 장치(3106)가 캡처 장치(3102)로부터 스트림을 수신한 후, 프로토콜 프로시딩 유닛(3202)은 스트림의 전송 프로토콜을 분석한다. 전송 프로토콜은 실시간 스트리밍 프로토콜(Real Time Streaming Protocol, RTSP), 하이퍼텍스트 전송 프로토콜(Hyper Text Transfer Protocol, HTTP), HTTP 라이브 스트리밍 프로토콜(Live Streaming Protocol, HLS), MPEG-DASH, 실시간 전송 프로토콜(Real-time Transport Protocol, RTP), 실시간 메시징 프로토콜(Real Time Messaging Protocol, RTMP), 또는 이들의 어떤 종류의 조합을 포함하지만 이에 제한되지 않는다.
프로토콜 프로시딩 유닛(3202)이 스트림을 처리한 후, 스트림 파일이 생성된다. 스트림 파일은 역다중화 유닛(3204)에 출력된다. 역다중화 유닛(3204)은 다중화된 데이터를 인코딩된 오디오 데이터와 인코딩된 비디오 데이터로 분리할 수 있다. 전술한 바와 같이, 일부 현실적인 시나리오의 경우, 예를 들어 화상 회의 시스템에서, 인코딩된 오디오 데이터와 인코딩된 비디오 데이터는 다중화되지 않는다. 이 상황에서, 인코딩된 데이터는 역다중화 유닛(3204)을 통하지 않고 비디오 디코더(3206)와 오디오 디코더(3208)에 전송된다.
역다중화 처리를 통해, 비디오 ES(Elementary Stream), 오디오 ES, 및 선택적으로 자막이 생성된다. 전술한 실시예에서 설명된 바와 같이 비디오 디코더(30)를 포함하는 비디오 디코더(3206)는, 전술한 실시예에 도시된 디코딩 방법에 의해 비디오 ES를 디코딩하여 비디오 프레임을 생성하고, 동기 유닛(3212)에 데이터를 공급한다. 오디오 디코더(3208)는 오디오 ES를 디코딩하여 오디오 프레임을 생성하고, 동기 유닛(3212)에 데이터를 공급한다. 대안적으로, 비디오 프레임은 동기 유닛(3212)에 공급되기 전에 버퍼(도 28에 도시되지 않음)에 저장될 수 있다. 유사하게, 오디오 프레임은 동기 유닛(3212)에 공급되기 전에 버퍼(도 28에 도시되지 않음)에 저장될 수 있다.
동기 유닛(3212)은 비디오 프레임과 오디오 프레임을 동기화하고, 비디오/오디오를 비디오/오디오 디스플레이(3214)에 공급한다. 예를 들어, 동기 유닛(3212)은 비디오 및 오디오 정보의 프리젠테이션을 동기화한다. 코딩된 시청각 데이터의 프리젠테이션과 관련된 타임 스탬프, 및 데이터 스트림 자체의 전달에 관한 타임 스탬프를 이용하여 정보가 구문으로 코딩될 수 있다.
자막이 스트림에 포함되면, 자막 디코더(3210)는 자막을 디코딩하고, 자막을 비디오 프레임 및 오디오 프레임과 동기화하며, 비디오/오디오/자막 디스플레이(3216)에 비디오/오디오/자막을 제공한다.
본 발명은 전술한 시스템에 제한되지 않고, 전술한 실시예의 픽처 인코딩 장치 또는 픽처 디코딩 장치는 다른 시스템, 예를 들어 자동차 시스템에 통합될 수 있다.
본 발명의 실시예가 주로 비디오 코딩에 기초하여 설명되었지만, 코딩 시스템(10), 인코더(20), 및 디코더(30)(와 그에 따른 시스템(10))의 실시예와 본 명세서에 설명된 다른 실시예가 스틸 픽처 처리 또는 코딩, 즉 비디오 코딩에서와 같이 어느 선행하는 또는 연속적인 픽처와 독립적인 개별 픽처의 처리 또는 코딩을 위해 구성될 수 있다는 것을 유의해야 한다. 일반적으로, 픽처 처리 코딩이 단일 픽처(27)로 제한될 때, 인터 예측 유닛(244)(인코더)과 인터 예측 유닛(344)(디코더)만이 사용 가능하지 않을 수 있다. 비디오 인코더(20)와 비디오 디코더(30)의 다른 모든 기능(툴 또는 기술이라고도 함)은 예를 들어 스틸 픽처 처리, 예를 들어 잔차 계산(204/304), 변환(206), 양자화(208), 역양자화(210/310), (역)변환(212/312), 파티셔닝(262/362), 인트라 예측(254/354), 및/또는 루프 필터링(220, 320), 및 엔트로피 코딩(270)과 엔트로피 디코딩(304)에 동일하게 사용될 수 있다.
실시예, 예를 들어 인코더(20)와 디코더(30)의 실시예, 및 본 명세서에서 설명된 기능, 예를 들어 인코더(20)와 디코더(30)를 참조하여 설명된 기능이 하드웨어, 소프트 웨어, 펌웨어, 또는 이들의 어떤 조합으로 구현될 수 있다. 소프트웨어로 구현되면, 이러한 기능은 컴퓨터 판독가능 매체에 저장되거나 또는 통신 매체를 통해 하나 이상의 명령이나 코드로 전송되고 하드웨어 기반의 처리 유닛에 의해 실행될 수 있다. 컴퓨터 판독가능 매체는 예를 들어, 통신 프로토콜에 따라 하나의 장소에서 다른 장소로 컴퓨터 프로그램의 전달을 용이하게 하는 어떤 매체를 포함하는 데이터 저장 매체, 또는 통신 매체와 같은 매체의 유형에 대응하는 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 이러한 방식으로, 컴퓨터 판독가능 매체는 일반적으로 (1) 비일시적 유형의 컴퓨터 판독가능 저장 매체 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 개시에 설명된 기술의 구현을 위한 명령, 코드, 및/또는 데이터 구조를 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 어떤 이용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체를 포함할 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수 있다.
다음의 논리 연산자 또는 수학 연산자가 다음과 같이 정의된다.
본 출원에 사용되는 수학 연산자는 C 프로그래밍 언어에서 사용되는 수학 연산자와 유사하다. 하지만, 정수 나눗셈과 산술 시프트 연산의 결과가 더 정확하게 정의되고, 지수 및 실수 나눗셈과 같은 추가 연산이 정의된다. 넘버링과 카운팅 규칙은 일반적으로 0에서부터 시작한다. 예를 들어, "제1"이 "0번째"와 같고, "제2 "는 첫 번째와 같으며, 기타 등등이다.
(산술 연산자)
산술 연산자가 다음과 같이 정의된다.
+ 덧셈
- 뺄셈 (2-인수 연산자) 또는 부정(단항 접두사 연산자)
* 행렬 곱셈을 포함하는 곱셈
xy 지수. x의 y 거듭 제곱으로 지정한다. 다른 문맥에서 이러한 표기법은 지수로 해석하기 위한 것이 아닌 위첨자에 사용된다.
/ 결과를 0으로 자르는 정수 나눗셈. 예를 들어, 7/4와 -7/-4는 1로 잘리고, -7/4와 7/-4는 -1로 잘린다.
Figure 112021010042149-pct00001
잘림이나 반올림을 의도하지 않은 수학 방정식에서 나눗셈을 나타내는 데 사용된다.
Figure 112021010042149-pct00002
i가 x에서 y까지의 모든 정수값(y를 포함)을 취하는 f(i)의 합이다.
x % y 모듈러스. x를 y로 나눈 나머지, x> = 0 및 y> 0 인 정수 x와 정수 y에 대해서만 정의된다.
(논리 연산자)
논리 연산자가 다음과 같이 정의된다.
x && y x와 y의 부울 논리 "and"
x || y x 및 y의 부울 논리 "or"
! 논리 부울 "not"
x? y : z x가 "참"이거나 또는 0이 아니면, y 값으로 평가된다. 그렇지 않으면, z 값으로 평가된다.
(관계 연산자)
다음의 관계 연산자는 다음과 같이 정의된다.
> ~보다 큰
>= ~보다 크거나 같은
< ~보다 작은
<= ~보다 작거나 같은
= = 같음
!= 같지 않음
관계 연산자가 값 "na(not applicable)"가 할당된 구문 요소 또는 변수에 적용되면, 값 "na"는 구문 요소 또는 변수에 대한 고유한 값으로 처리된다. 값 "na"가 다른 값과 같지 않은 것으로 간주된다.
(비트에 관한 연산자)
비트에 관한 연산자가 다음과 같이 정의된다.
& 비트에 관한 "and". 정수 인수에 대해 연산 할 때 정수 값의 2의 보수 표현에 대해 연산한다. 다른 인수보다 적은 비트를 포함하는 이진 인수에 대해 연산할 때 더 짧은 인수는 0과 같은 더 많은 중요한 비트를 추가하여 확장된다.
| 비트에 관한 "or". 정수 인수에 대해 연산할 때 정수 값의 2의 보수 표현에 대해 연산한다. 다른 인수보다 적은 비트를 포함하는 이진 인수에 대해 연산할 때 더 짧은 인수는 0과 같은 더 많은 중요한 비트를 추가하여 확장된다.
^ 비트에 관한 "exclusive or". 정수 인수에 대해 연산할 때 정수 값의 2의 보수 표현에 대해 연산한다. 다른 인수보다 적은 비트를 포함하는 이진 인수에 대해 연산할 때 더 짧은 인수는 0과 같은 더 많은 중요한 비트를 추가하여 확장된다.
x >> y x를 y개의 이진수로 정수 표현한 2의 보수의 산술 오른쪽 시프트. 이 함수는 y의 음이 아닌 정수 값에 대해서만 정의된다. 오른쪽 시프트의 결과로 최상위 비트(MSB)로 시프트된 비트가 시프트 연산 이전에 x의 MSB와 동일한 값을 가지고 있다.
x << y x를 y 개의 이진수로 정수 표현한 2의 보수의 산술 왼쪽 시프트. 이 함수는 y의 음이 아닌 정수 값에 대해서만 정의된다. 왼쪽 시프트의 결과로 최하위 비트(LSB)로 시프트된 비트가 0인 값을 가지고 있다.
(할당 연산자)
할당 연산자가 다음과 같이 정의된다.
= 할당 연산자
++ 증분, 즉 x++는 x = x + 1과 같다. 배열 인덱스에서 사용될 때 증분 연산 이전에 변수의 값으로 평가된다.
-- 감소, 즉 x--는 x = x - 1과 같다. 배열 인덱스에서 사용될 때 감소 연산 이전에 변수 값으로 평가된다.
+= 지정된 양만큼 증가, 즉 x += 3은 x = x + 3과 같고, x += (-3)은 x = x + (-3)과 같다.
-= 지정된 양만큼 감소, 즉 x -= 3은 x = x - 3과 같고, x -= (-3)는 x = x - (-3)과 같다.
(범위 표기)
다음 표기법이 값 범위를 지정하는 데 사용된다.
x = y..z x는 y에서 z까지(포함)의 정수값을 취하고 x, y, z는 정수이며, z는 y보다 크다.
(수학 함수)
다음의 수학 함수가 정의된다.
Figure 112021010042149-pct00003
Asin(x) -1.0 ~ 1.0 범위(포함)에 있는 인수 x에 대해 연산하는 삼각 역 사인 함수. -1.0 ~ 1.0 범위 (포함)의 출력 값을 가지고 있다.
Atan(x) 인수 x에 대해 연산하는 삼각 역 탄젠트 함수. -π÷2 ~ +π÷2 범위(경계를 포함하는)의 출력 값(라디안 단위)을 가지고 있다.
Figure 112021010042149-pct00004
Ceil(x) x보다 크거나 같은 가장 작은 정수.
Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) - 1, x )
Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) -1, x )
Figure 112021010042149-pct00005
Cos(x) 라디안 단위의 인수 x에 대해 연산하는 삼각 코사인 함수이다.
Floor(x) x보다 작거나 같은 가장 큰 정수
Figure 112021010042149-pct00006
Ln(x) x의 자연 로그(밑이 e인 로그, e는 자연 로그 기본 상수(2.718 281 828 ...)이다.
Log2(x) x의 밑이 2 인 로그이다.
Log10(x) x의 밑이 10 인 로그이다.
Figure 112021010042149-pct00007
Figure 112021010042149-pct00008
Figure 112021010042149-pct00009
Figure 112021010042149-pct00010
Sin(x) 라디안 단위의 인수 x에 대해 연산하는 삼각 사인 함수
Figure 112021010042149-pct00011
Figure 112021010042149-pct00012
Tan(x) 라디안 단위의 인수 x에 대해 연산하는 삼각 탄젠트 함수
(연산자 우선 순위)
표현식의 우선 순위가 괄호를 사용하여 명시적으로 표시되지 않을 때 다음의 규칙이 적용된다.
- 우선 순위가 높은 연산은 우선 순위가 낮은 연산보다 먼저 평가된다.
- 우선 순위가 동일한 연산은 왼쪽에서 오른쪽으로 순차적으로 평가된다.
아래 표는 연산의 우선 순위를 가장 높은 것에서 가장 낮은 것으로 지정한다. 이 표의 더 높은 위치는 더 높은 우선 순위를 나타낸다.
C 프로그래밍 언어에서도 사용되는 연산자의 경우, 이 명세서에서 사용되는 우선 순위가 C 프로그래밍 언어에서 사용되는 우선 순위와 동일하다.
표: 가장 높은(표 상단) 우선 순위에서 가장 낮은(표 하단) 우선 순위까지의 연산자 우선 순위
Figure 112021010042149-pct00013
논리 연산의 텍스트 설명
본문에서, 다음과 같은 형식으로 수학적으로 설명되는 논리 연산자의 명령문:
if (조건 0)
명령문 0
else if (조건 1)
명령문 1
...
else / * 나머지 상태에 대한 유익한 설명 * /
명령문 n
다음과 같은 방식으로 설명될 수 있다.
... 다음과 같이 / ... 다음이 적용된다.
- If 조건 0, 명령문 0
- 그렇지 않으면, 조건 1이면, 명령문 1
- ...
- 그렇지 않으면(나머지 상태에 대한 유익한 설명), 명령문 n
본문의 "If ... Otherwise, if ... Otherwise, ..."의 각각의 명령문은 "다음과 같다" 또는 "... 다음이 적용된다"로 소개되고 "If ... "가 뒤따른다. "If ... Otherwise ... Otherwise ..."의 마지막 조건은 항상 "Otherwise, ..."이다. 끼워 넣어진 "If ... Otherwise, if ... Otherwise, ..." 명령문은 "... 다음과 같다" 또는 "... 다음이 적용된다"를 끝 "Otherwise, ..."와 일치시켜 식별될 수 있다.
본문에서, 다음의 형식으로 수학적으로 설명되는 논리 연산자의 설명:
if (조건 0a && 조건 0b)
명령문 0
else if (조건 1a | | 조건 1b)
명령문 1
...
else
명령문 n
다음과 같은 방식으로 설명될 수 있다.
... 다음과 같이/ ... 다음이 적용된다.
- 다음 조건이 모두 참이면, 명령문 0:
- 조건 0a
- 조건 0b
- 그렇지 않으면, 다음의 조건 중 하나 이상이 참이면, 명령문 1:
- 조건 1a
- 조건 1b
- ...
- 그렇지 않으면, 명령문 n
본문에서, 다음과 같은 형식으로 수학적으로 설명되는 논리 연산자의 설명:
if (조건 0)
명령문 0
if (조건 1)
명령문 1
은 다음과 같은 방식으로 설명될 수 있다.
조건 0일 때, 명령문 0
조건 1일 때, 명령문 1
(약어 및 용어 정의)
HEVC - 고효율 비디오 코딩
VVC - 다용도 비디오 코딩
VTM - VVC 테스트 모델
JEM - 공동 탐사 모델
CTU - 코딩 트리 유닛
CU - 코딩 유닛
BT - 이진 트리
TT - 삼진 트리
QT - 쿼드트리 또는 쿼터너리 트리
ABT - 비대칭 BT
MTT - 멀티형 트리
AMP - 비대칭 파티션
SH - 슬라이스 헤더
SPS - 시퀀스 파라미터 세트
PPS - 픽처 파라미터 세트
CE - 코어 실험
SubCE - 서브코어 실험(코어 실험의 일부)

Claims (20)

  1. 비디오 비트스트림(101)을 처리하기 위한 장치로서,
    상기 장치는 회로를 포함하고,
    상기 회로는,
    상기 비디오 비트스트림(101)으로부터 구문 요소(syntax element)를 획득하고;
    쿼드트리 분할(quadtree splitting)로 인해 생성되는 루마 리프 블록(luma leaf block)의 루마 샘플의 최소 크기(MinQtSizeY(105))에 관한 정보를 획득하며;
    상기 MinQtSizeY(105)에 관한 정보와 상기 획득된 구문 요소에 기초하여, 이진 트리 분할을 이용하여 분할될 수 있는 루마 루트 블록의 루마 샘플의 최대 크기(MaxBtSizeY(102))를 결정하도록 구성된, 비디오 비트스트림(101)을 처리하기 위한 장치.
  2. 제1항에 있어서,
    상기 회로는, 상기 MaxBtSizeY(102)의 하한이 상기 MinQtSizeY(105)라는 것을 고려하여 상기 MaxBtSizeY(102)를 결정하도록 구성된, 비디오 비트스트림(101)을 처리하기 위한 장치.
  3. 제1항 또는 제2항에 있어서,
    상기 구문 요소는, 상기 MinQtSizeY(105)의 밑이 2인 로그와 상기 MaxBtSizeY(102)의 밑이 2인 로그 간의 차이의 구문 요소(301)인, 비디오 비트스트림(101)을 처리하기 위한 장치.
  4. 제1항 또는 제2항에 있어서,
    상기 구문 요소는 상기 MinQtSizeY(105)와 상기 MaxBtSizeY(102) 간의 차이의 구문 요소(301)이고, 상기 차이의 구문 요소(301)는 밑이 2인 로그 스케일로 상기 차이를 시그널링하는 것인, 비디오 비트스트림(101)을 처리하기 위한 장치.
  5. 제1항 또는 제2항에 있어서,
    상기 회로는 쿼드트리 리프 블록의 멀티형 트리 분할로 인해 생성되는 코딩 유닛의 최대 계층 깊이에 따라 상기 비디오 비트스트림(101)으로부터 상기 구문 요소를 획득하도록 구성된, 비디오 비트스트림(101)을 처리하기 위한 장치.
  6. 제5항에 있어서,
    상기 회로는, 상기 코딩 유닛의 최대 계층 깊이가 0이 아니면 상기 비디오 비트스트림(101)으로부터 상기 구문 요소를 획득하도록 구성된, 비디오 비트스트림(101)을 처리하기 위한 장치.
  7. 비디오 비트스트림(101)을 생성하기 위한 장치(1000)로서,
    상기 장치(1000)는,
    쿼드트리 분할(quadtree splitting)로 인해 생성되는 리프 블록(leaf block)의 최소 루마 크기(MinQtSizeY(105))를 결정하고,
    상기 MinQtSizeY(105)에 기초하여, 이진 트리 분할을 이용하여 분할될 코딩 블록의 최대 루마 크기(MaxBtSizeY(102))를 결정하며,
    상기 결정된 MinQtSizeY(105)에 관한 정보를 상기 비디오 비트스트림(101)에 포함하도록 구성된, 비디오 비트스트림(101)을 생성하기 위한 장치(1000).
  8. 제7항에 있어서,
    상기 장치(1000)는,
    상기 MaxBtSizeY(102)의 하한이 상기 MinQtSizeY(105)라는 것을 고려하여 상기 MaxBtSizeY(102)를 결정하도록 구성된 비디오 비트스트림(101)을 생성하기 위한 장치(1000).
  9. 제7항 또는 제8항에 있어서,
    상기 장치(1000)는 추가적으로,
    구문 요소(301)를 상기 비디오 비트스트림(101)에 포함시키도록 구성되고, 여기서 상기 구문 요소(301)는 상기 MinQtSizeY(105)의 밑이 2인 로그와 상기 MaxBtSizeY(102)의 밑이 2인 로그 간의 차이의 구문 요소인, 비디오 비트스트림(101)을 생성하기 위한 장치(1000).
  10. 제8항에 있어서,
    상기 장치(1000)는 추가적으로,
    구문 요소(301)를 상기 비디오 비트스트림(101)에 포함시키도록 구성되고, 여기서 상기 구문 요소(301)는 상기 MinQtSizeY(105)와 상기 MaxBtSizeY(102) 간의 차이의 구문 요소(301)이고, 상기 차이의 구문 요소(301)는 밑이 2인 로그 스케일로 상기 차이를 시그널링하는 것인, 비디오 비트스트림(101)을 생성하기 위한 장치(1000).
  11. 제9항에 있어서,
    상기 장치(1000)는,
    멀티형 트리 분할로 인해 생성되는 코딩 유닛의 최대 계층 깊이(MaxMttDepth(103))에 따라 상기 구문 요소(301)를 상기 비디오 비트스트림(101)에 포함시키도록 구성된, 비디오 비트스트림(101)을 생성하기 위한 장치(1000).
  12. 제11항에 있어서,
    상기 장치(1000)는,
    상기 MaxMttDepth(103)가 0이 아니면, 상기 구문 요소(301)를 상기 비디오 비트스트림(101)에 포함시키도록 구성된, 비디오 비트스트림(101)을 생성하기 위한 장치(1000).
  13. 비디오 비트스트림(101)을 생성하기 위한 방법(7000)으로서,
    쿼드트리 분할(quadtree splitting)로 인해 생성되는 리프 블록(leaf block)의 최소 루마 크기(MinQtSizeY(105))를 결정하는 단계;
    상기 MinQtSizeY(105)에 기초하여, 이진 트리 분할을 이용하여 분할될 코딩 블록의 최대 루마 크기(MaxBtSizeY(102))를 결정하는 단계; 및
    상기 결정된 MinQtSizeY(105)에 관한 정보를 상기 비디오 비트스트림(101)에 포함하는 단계
    를 포함하는 비디오 비트스트림(101)을 생성하기 위한 방법(7000).
  14. 비디오 비트스트림(101)을 처리하기 위한 방법(7000)으로서,
    상기 비디오 비트스트림(101)으로부터 구문 요소(syntax element)를 획득하는 단계;
    쿼드트리 분할(quadtree splitting)로 인해 생성되는 루마 리프 블록(luma leaf block)의 루마 샘플의 최소 크기(MinQtSizeY(105))에 관한 정보를 획득하는 단계; 및
    상기 MinQtSizeY(105)에 관한 정보와 상기 획득된 구문 요소에 기초하여, 이진 트리 분할을 이용하여 분할될 수 있는 루마 루트 블록의 루마 샘플의 최대 크기(MaxBtSizeY(102))를 결정하는 단계
    를 포함하는 비디오 비트스트림(101)을 처리하기 위한 방법(7000).
  15. 컴퓨터가 판독 가능한 저장 매체에 저장된 컴퓨터 프로그램으로서,
    장치(100, 1000)의 하나 이상의 프로세서에 의해 실행될 때 제13항의 비디오 비트스트림(101)을 생성하기 위한 방법(7000), 또는 제14항의 비디오 비트스트림(101)을 처리하기 위한 방법(7000)을 수행하도록 상기 장치(100, 1000)를 제어하기 위한 프로그램 코드
    를 포함하는 컴퓨터 프로그램.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020217002530A 2018-09-03 2019-09-03 파티션 제한 요소들 간의 관계 KR102525179B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237013365A KR20230054917A (ko) 2018-09-03 2019-09-03 파티션 제한 요소들 간의 관계

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201862726423P 2018-09-03 2018-09-03
US62/726,423 2018-09-03
US201862733053P 2018-09-18 2018-09-18
US62/733,053 2018-09-18
US201962818996P 2019-03-15 2019-03-15
US62/818,996 2019-03-15
PCT/CN2019/104260 WO2020048466A1 (en) 2018-09-03 2019-09-03 Relation between partition constraint elements

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237013365A Division KR20230054917A (ko) 2018-09-03 2019-09-03 파티션 제한 요소들 간의 관계

Publications (2)

Publication Number Publication Date
KR20210024114A KR20210024114A (ko) 2021-03-04
KR102525179B1 true KR102525179B1 (ko) 2023-04-21

Family

ID=69722985

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020237013365A KR20230054917A (ko) 2018-09-03 2019-09-03 파티션 제한 요소들 간의 관계
KR1020217002530A KR102525179B1 (ko) 2018-09-03 2019-09-03 파티션 제한 요소들 간의 관계

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020237013365A KR20230054917A (ko) 2018-09-03 2019-09-03 파티션 제한 요소들 간의 관계

Country Status (11)

Country Link
US (2) US11477494B2 (ko)
EP (1) EP3808081A4 (ko)
JP (2) JP7286757B2 (ko)
KR (2) KR20230054917A (ko)
CN (2) CN112673626B (ko)
AU (1) AU2019334017B2 (ko)
BR (1) BR112021003999A2 (ko)
CA (1) CA3111043C (ko)
MX (1) MX2021002284A (ko)
WO (1) WO2020048466A1 (ko)
ZA (1) ZA202101704B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113273197A (zh) * 2019-02-03 2021-08-17 北京字节跳动网络技术有限公司 视频块分割模式的信令通知
US11496774B2 (en) * 2019-08-27 2022-11-08 Tencent America LLC Header syntax for QT/BT/TT size
US11399195B2 (en) * 2019-10-30 2022-07-26 Tencent America LLC Range of minimum coding block size in video coding
FI4044599T3 (fi) * 2019-11-05 2024-03-25 Lg Electronics Inc Kuva/videokoodausmenetelmä ja -laite
WO2021207055A1 (en) 2020-04-05 2021-10-14 Bytedance Inc. High level control of filtering in video coding
WO2023236775A1 (en) * 2022-06-06 2023-12-14 Mediatek Inc. Adaptive coding image and video data

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8761245B2 (en) 2010-12-21 2014-06-24 Intel Corporation Content adaptive motion compensation filtering for high efficiency video coding
TWI638564B (zh) 2011-12-21 2018-10-11 Jvc建伍股份有限公司 Dynamic image decoding device, dynamic image decoding method, and recording medium recorded with dynamic image decoding program
US20140254661A1 (en) * 2013-03-08 2014-09-11 Samsung Electronics Co., Ltd. Method and apparatus for applying secondary transforms on enhancement-layer residuals
WO2016074147A1 (en) * 2014-11-11 2016-05-19 Mediatek Singapore Pte. Ltd. Separated coding tree for luma and chroma
WO2016090568A1 (en) 2014-12-10 2016-06-16 Mediatek Singapore Pte. Ltd. Binary tree block partitioning structure
WO2017008263A1 (en) 2015-07-15 2017-01-19 Mediatek Singapore Pte. Ltd. Conditional binary tree block partitioning structure
US10212444B2 (en) * 2016-01-15 2019-02-19 Qualcomm Incorporated Multi-type-tree framework for video coding
MX2021012481A (es) 2016-03-16 2022-05-30 Hfi Innovation Inc Metodo y aparato de procesamiento de datos de video con tama?o restringido de bloque en codificacion de video.
CN107566848B (zh) 2016-06-30 2020-04-14 华为技术有限公司 编解码的方法及装置
JP7173961B2 (ja) 2016-08-21 2022-11-16 エルジー エレクトロニクス インコーポレイティド 映像符号化/復号化方法及びそのための装置
US10609423B2 (en) * 2016-09-07 2020-03-31 Qualcomm Incorporated Tree-type coding for video coding
EP4075798A1 (en) * 2016-10-04 2022-10-19 HFI Innovation Inc. Method and apparatus for intra chroma coding in image and video coding
JP2018085660A (ja) 2016-11-25 2018-05-31 キヤノン株式会社 画像符号化装置
US10560723B2 (en) * 2017-05-08 2020-02-11 Qualcomm Incorporated Context modeling for transform coefficient coding
US10911757B2 (en) * 2017-09-08 2021-02-02 Mediatek Inc. Methods and apparatuses of processing pictures in an image or video coding system
CN111819851A (zh) * 2018-01-30 2020-10-23 夏普株式会社 用于使用预测运动向量起点对视频编码执行运动向量预测的系统和方法
WO2019194147A1 (en) * 2018-04-02 2019-10-10 Sharp Kabushiki Kaisha Systems and methods for deriving quantization parameters for video blocks in video coding
CN112204967A (zh) * 2018-05-31 2021-01-08 夏普株式会社 用于划分视频数据的帧间预测片段中的视频块的系统和方法
WO2020004987A1 (ko) * 2018-06-27 2020-01-02 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Benjamin Bross, et al. Versatile Video Coding(Draft 2), Joint Video exploration Team(JVET), JVET-K1001-v1, 2018-08-07, pp. 1-131

Also Published As

Publication number Publication date
CA3111043C (en) 2023-08-15
JP2023111927A (ja) 2023-08-10
EP3808081A1 (en) 2021-04-21
CN116208767B (zh) 2023-11-28
WO2020048466A1 (en) 2020-03-12
AU2023202264A1 (en) 2023-05-04
US11910027B2 (en) 2024-02-20
CN112673626B (zh) 2024-04-26
CN116208767A (zh) 2023-06-02
EP3808081A4 (en) 2021-07-21
JP7286757B2 (ja) 2023-06-05
MX2021002284A (es) 2021-05-27
AU2019334017B2 (en) 2023-01-12
BR112021003999A2 (pt) 2021-05-25
ZA202101704B (en) 2022-04-28
US11477494B2 (en) 2022-10-18
JP2021535645A (ja) 2021-12-16
AU2019334017A1 (en) 2021-04-08
CA3111043A1 (en) 2020-03-12
US20230171437A1 (en) 2023-06-01
CN112673626A (zh) 2021-04-16
KR20210024114A (ko) 2021-03-04
US20210258618A1 (en) 2021-08-19
KR20230054917A (ko) 2023-04-25

Similar Documents

Publication Publication Date Title
JP7343573B2 (ja) 逆量子化のための装置及び方法
US11070804B2 (en) Video encoder, a video decoder and corresponding methods with improved block partitioning
KR102525179B1 (ko) 파티션 제한 요소들 간의 관계
KR20220110327A (ko) 비디오 코딩을 위한 성분 간 적응 루프 필터링
JP7405925B2 (ja) ビデオ・エンコーダ、ビデオ・デコーダ及び対応する方法
KR20210129729A (ko) 인트라-예측을 위한 방법 및 장치
KR20220065880A (ko) 아핀 모션 보상에서 dct 기반 보간 필터 및 향상된 쌍선형 보간 필터의 사용
KR20210145824A (ko) 제산 없는 인트라 예측을 위한 방법 및 장치
AU2023202264B2 (en) Relation between partition constraint elements

Legal Events

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