KR102597837B1 - 비디오 코딩을 위한 제한 코딩 트리 - Google Patents

비디오 코딩을 위한 제한 코딩 트리 Download PDF

Info

Publication number
KR102597837B1
KR102597837B1 KR1020217004379A KR20217004379A KR102597837B1 KR 102597837 B1 KR102597837 B1 KR 102597837B1 KR 1020217004379 A KR1020217004379 A KR 1020217004379A KR 20217004379 A KR20217004379 A KR 20217004379A KR 102597837 B1 KR102597837 B1 KR 102597837B1
Authority
KR
South Korea
Prior art keywords
coding tree
coding
tree node
partitioning
split
Prior art date
Application number
KR1020217004379A
Other languages
English (en)
Other versions
KR20210029266A (ko
Inventor
장러 천
인 자오
하이타오 양
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20210029266A publication Critical patent/KR20210029266A/ko
Application granted granted Critical
Publication of KR102597837B1 publication Critical patent/KR102597837B1/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/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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/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/1883Methods 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 relating to sub-band structure, e.g. hierarchical level, directional tree, e.g. low-high [LH], high-low [HL], high-high [HH]
    • 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)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

비디오 인코딩 메커니즘이 개시된다. 상기 메커니즘은 이미지를 파티셔닝하여 적어도 하나의 코딩 트리 노드를 가지는 적어도 하나의 코딩 트리 유닛(coding tree unit, CTU)을 만드는 단계를 포함한다. 상기 메커니즘은, 상기 코딩 트리 높이가 최대 변환 유닛(transform unit, TU) 높이보다 크거나 또는 상기 코딩 트리 노드 너비가 최대 TU 너비보다 큰 것으로 결정하는 단계를 더 포함한다. 상기 메커니즘은, 상기 결정에 기반하여 상기 코딩 트리 노드에 대한 분할 모드를 선택하는 단계를 더 포함한다. 상기 분할 모드는 쿼드 트리 분할, 수평 이진 트리 분할 및 분할 없음 중에서 선택된다. 상기 메커니즘은, 상기 분할 모드를 상기 코딩 트리 노드에 적용하여 하나 이상의 코딩 유닛(coding unit, CU)을 만드는 단계를 더 포함한다. 상기 메커니즘은, 상기 CU를 비트스트림으로 인코딩하는 단계를 더 포함한다. 상기 메커니즘은, 상기 비트스트림을 디코더를 향해 전송하는 단계를 더 포함한다.

Description

비디오 코딩을 위한 제한 코딩 트리
삭제
본 개시는 일반적으로 비디오 코딩과 관련되고, 구체적으로, 비디오 코딩에서 코딩 트리 유닛(coding tree unit, CTU)을 파티셔닝(partitioning)하기 위한 코딩 트리를 생성하는 것과 관련된다.
비교적 짧은 비디오를 묘사하는 데 필요한 비디오 데이터의 양은 상당할 수 있으며, 이는 데이터가 대역폭 용량이 제한된 통신 네트워크를 통해 스트리밍되거나 통신될 때 어려움을 초래할 수 있다. 따라서, 비디오 데이터는 일반적으로 현대 통신 네트워크(modern day telecommunications network)를 통해 통신되기 전에 압축된다. 메모리 리소스가 제한될 수 있기 때문에 비디오가 저장 디바이스에 저장될 때 비디오의 크기가 문제가 될 수도 있다. 비디오 압축 디바이스는 종종 소스에서 소프트웨어 및/또는 하드웨어를 사용하여 전송 또는 저장 전에 비디오 데이터를 코딩하여, 디지털 비디오 이미지를 표현하는 데 필요한 데이터 양을 감소시킨다. 압축된 데이터는 비디오 데이터를 디코딩하는 비디오 압축 해제(decompression) 디바이스에 의해 목적지에서 수신된다. 제한된 네트워크 리소스와 더 높은 비디오 품질에 대한 요구가 계속 증가함에 따라, 이미지 품질을 거의 또는 전혀 희생하지 않고 압축 비율을 개선하는 향상된 압축 및 압축 해제 기술이 바람직하다.
일 실시 예에서, 본 개시는 인코더에서 구현되는 방법을 포함한다. 상기 방법은, 상기 인코더의 프로세서가, 이미지를 파티셔닝(partitioning)하여 적어도 하나의 코딩 트리 노드를 갖는 적어도 하나의 코딩 트리 유닛(coding tree unit, CTU)을 만드는(create) 단계를 포함한다. 상기 방법은, 상기 프로세서가, 상기 코딩 트리 노드의 높이가 최대 변환 유닛(transform unit, TU) 높이의 2배이고 상기 코딩 트리 노드의 너비가 최대 TU 너비의 2배인 것으로 결정하는 단계를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 코딩 트리 노드 높이가 최대 TU 높이의 2배이고 상기 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정을 기반으로, 상기 코딩 트리 노드에 대한 분할 모드(split mode)를 선택하는 단계 - 상기 분할 모드는 쿼드 트리 분할(quad-tree split), 수평 이진 트리 분할(horizontal binary-tree split) 및 분할 없음(no split) 중에서 선택됨 - 를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 분할 모드를 상기 코딩 트리 노드에 적용하여 하나 이상의 코딩 유닛(coding unit, CU)을 만드는 단계를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 CU를 비트스트림으로 인코딩하는 단계를 더 포함한다. 상기 방법은, 상기 인코더의 송신기가, 상기 비트스트림을 디코더를 향해 전송하는 단계를 더 포함한다. 위에서 언급한 메커니즘은 CTU 파티셔닝을 개선하여 CU가 파이프라인 블록 경계를 넘어 파티셔닝될 가능성을 완화할 수 있다. 구체적으로, 제한 코딩 트리가 CTU에 적용되며, 제한 코딩 트리는 파이프라인 구조를 깨는(break) 분할을 방지하는 규칙을 포함한다. 이것은 그러한 파이프라인 구조가 사용될 때 더 빠른 코딩을 가능하게 한다.
선택적으로, 선행 측면들 중 어느 하나에서, 상기 측면의 다른 구현이 제공되며, 여기서 상기 분할 모드가 상기 코딩 트리 노드 높이가 상기 최대 TU 높이의 2배이고 상기 코딩 트리 노드 너비가 상기 최대 TU 너비의 2배라는 결정에 기반하여, 수직 이진 트리 분할, 수직 트리플 트리 분할 및 수평 트리플 트리 분할 중에서 선택되지 않는다.
선택적으로, 선행 측면들 중 어느 하나에서, 상기 측면의 다른 구현이 제공되며, 여기서, 상기 제1 플래그는 qt_split_cu_flag이고, 상기 제2 플래그는 mtt_split_cu_flag이다.
일 실시 예에서, 본 개시는 인코더에서 구현되는 방법을 포함한다. 상기 방법은, 상기 인코더의 프로세서가, 이미지를 파티셔닝하여 적어도 하나의 코딩 트리 노드를 갖는 적어도 하나의 코딩 트리 유닛(coding tree unit, CTU)을 만드는 단계를 포함한다. 상기 방법은, 상기 프로세서가, 상기 코딩 트리 노드의 높이가 최대 변환 유닛(transform unit, TU) 높이보다 크지 않고 상기 코딩 트리 노드의 너비가 최대 TU 너비의 2배인 것으로 결정하는 단계를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 코딩 트리 노드 높이가 최대 TU 높이보다 크지 않고 상기 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정을 기반으로, 상기 코딩 트리 노드에 대한 분할 모드를 선택하는 단계 - 상기 분할 모드는 수직 이진 트리 분할 및 분할 없음 중에서 선택됨 -를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 분할 모드를 상기 코딩 트리 노드에 적용하여 하나 이상의 코딩 유닛(coding unit, CU)을 만드는 단계를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 CU를 비트스트림으로 인코딩하는 단계를 더 포함한다. 상기 방법은, 상기 인코더의 송신기가, 상기 비트스트림을 디코더를 향해 전송하는 단계를 더 포함한다. 위에서 언급한 메커니즘은 CTU 파티셔닝을 개선하여 CU가 파이프라인 블록 경계를 넘어 파티셔닝될 가능성을 완화할 수 있다. 구체적으로, 제한 코딩 트리가 CTU에 적용되며, 제한 코딩 트리는 파이프라인 구조를 깨는 분할을 방지하는 규칙을 포함한다. 이것은 그러한 파이프라인 구조가 사용될 때 더 빠른 코딩을 가능하게 한다.
선택적으로, 선행 측면들 중 어느 하나에서, 상기 측면의 다른 구현이 제공되며, 여기서 상기 분할 모드는 상기 트리 노드 높이가 최대 TU 높이보다 크지 않고 상기 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정에 기반하여, 수평 이진 트리 분할, 쿼드 트리 분할, 수직 트리플 트리 분할 및 수평 트리플 트리 분할 중에서 선택되지 않는다.
선행 측면들 중 어느 하나에서, 상기 측면의 다른 구현이 제공되며, 상기 분할 모드가 수직 이진 트리 분할인지 또는 분할 없음인지를 지시하는 제1 플래그를 인코딩하는 것에 의해, 상기 비트스트림에서 상기 코딩 트리 노드에 대한 분할 모드를 시그널링하는 단계를 더 포함한다.
일 실시 예에서, 본 개시는 프로세서 및 상기 프로세서에 결합된 송신기를 포함하는 비디오 코딩 디바이스를 포함하고, 상기 프로세서 및 송신기는 선행 측면들 중 임의의 측면의 방법을 수행하도록 구성된다.
일 실시 예에서, 본 개시는 비디오 코딩 디바이스에 의해 사용하기 위한 컴퓨터 프로그램 제품을 포함하는 컴퓨터가 판독 가능한 비 일시적 매체를 포함하고, 상기 컴퓨터 프로그램 제품은 컴퓨터가 판독 가능한 비 일시적 매체에 저장된 컴퓨터가 실행 가능한 명령을 포함하며, 상기 명령이 프로세서에 의해 실행될 때 상기 비디오 코딩 디바이스가 선행 측면들 중 임의의 방법을 수행하게 한다.
일 실시 예에서, 본 개시는 이미지를 파티셔닝하여 적어도 하나의 코딩 트리 노드를 가지는 적어도 하나의 코딩 트리 유닛(coding tree unit, CTU)을 만드는 파티셔닝 수단을 포함하는 인코더를 포함한다. 상기 인코더는, 상기 코딩 트리 노드의 높이가 최대 변환 유닛(transform unit, TU) 높이의 2배이고 상기 코딩 트리 노드의 너비가 최대 TU 너비의 2배인 것으로 결정하는 크기 결정 수단을 더 포함한다. 상기 인코더는, 상기 코딩 트리 노드 높이가 최대 TU 높이의 2배이고 상기 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정을 기반으로, 상기 코딩 트리 노드에 대한 분할 모드를 선택하는 분할 모드 선택 수단 - 상기 분할 모드는 쿼드 트리 분할, 수평 이진 트리 분할 및 분할 없음 중에서 선택됨 -을 더 포함한다. 상기 인코더는, 상기 분할 모드를 상기 코딩 트리 노드에 적용하여 하나 이상의 코딩 유닛(coding unit, CU)을 만드는 분할 모드 적용 수단을 더 포함한다. 상기 인코더는, 상기 CU를 비트스트림으로 인코딩하는 인코딩 수단을 더 포함한다. 상기 인코더는, 상기 비트스트림을 디코더를 향해 전송하는 전송 수단을 더 포함한다. 위에서 언급한 메커니즘은 CTU 파티셔닝을 개선하여 CU가 파이프라인 블록 경계를 넘어 파티셔닝될 가능성을 완화할 수 있다. 구체적으로, 제한 코딩 트리가 CTU에 적용되며, 제한 코딩 트리는 파이프라인 구조를 깨는 분할을 방지하는 규칙을 포함한다. 이것은 그러한 파이프라인 구조가 사용될 때 더 빠른 코딩을 가능하게 한다.
선택적으로, 임의의 선행 측면에서, 측면의 다른 구현이 제공되며, 여기서 인코더는 추가로, 선행 측면 중 임의의 측면의 방법을 수행하도록 구성된다.
일 실시 예에서, 본 개시는 이미지를 파티셔닝하여 적어도 하나의 코딩 트리 노드를 갖는 적어도 하나의 코딩 트리 유닛(coding tree unit, CTU)을 만드는 파티셔닝 수단을 포함하는 인코더를 포함한다. 상기 인코더는 상기 코딩 트리 노드의 높이가 최대 변환 유닛(transform unit, TU) 높이보다 크지 않고 상기 코딩 트리 노드의 너비가 최대 TU 너비의 2배인 것으로 결정하는 크기 결정 수단을 더 포함한다. 상기 인코더는, 상기 코딩 트리 노드 높이가 최대 TU 높이보다 크지 않고 상기 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정을 기반으로, 상기 코딩 트리 노드에 대한 분할 모드를 선택하는 분할 모드 선택 수단 - 상기 분할 모드는 수직 이진 트리 분할 및 분할 없음 중에서 선택됨 -을 더 포함한다. 상기 인코더는, 상기 분할 모드를 상기 코딩 트리 노드에 적용하여 하나 이상의 코딩 유닛(coding unit, CU)을 만드는 분할 모드 적용 수단을 더 포함한다. 상기 인코더는, 상기 CU를 비트스트림으로 인코딩하는 인코딩 수단을 더 포함한다. 상기 인코더는, 상기 비트스트림을 디코더를 향해 전송하는 전송 수단을 더 포함한다. 위에서 언급한 메커니즘은 CTU 파티셔닝을 개선하여 CU가 파이프라인 블록 경계를 넘어 파티셔닝될 가능성을 완화할 수 있다. 구체적으로, 제한 코딩 트리가 CTU에 적용되며, 제한 코딩 트리는 파이프라인 구조를 깨는 분할을 방지하는 규칙을 포함한다. 이것은 그러한 파이프라인 구조가 사용될 때 더 빠른 코딩을 가능하게 한다.
선택적으로, 임의의 선행 측면에서, 측면의 다른 구현이 제공되며, 여기서 인코더는 추가로, 선행 측면 중 임의의 측면의 방법을 수행하도록 구성된다.
일 실시 예에서, 본 개시는 디코더에서 구현되는 방법을 포함한다. 상기 방법은, 상기 디코더의 수신기가, 이미지 데이터를 포함하는 비트스트림을 수신하는 단계를 포함한다. 상기 방법은, 상기 디코더의 프로세서가, 상기 이미지 데이터를 파티셔닝하여 하나의 코딩 트리 노드를 가지는 적어도 하나의 코딩 트리 유닛(coding tree unit, CTU)을 만드는 단계를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 코딩 트리 노드의 높이가 최대 변환 유닛(transform unit, TU) 높이의 2배이고 상기 코딩 트리 노드의 폭이 최대 TU 폭의 2배인 것으로 결정하는 단계를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 코딩 트리 노드 높이가 최대 TU 높이의 2배이고 상기 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정에 기반하여, 상기 비트 스트림을 파싱(parsing)하여 상기 코딩 트리 노드에 대한 분할 모드를 결정하는 단계 - 상기 분할 모드는 쿼드 트리 분할, 수평 이진 트리 분할 및 분할 없음 중에서 선택됨 -를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 분할 모드를 상기 코딩 트리 노드에 적용하여 하나 이상의 코딩 유닛(coding unit, CU)을 획득하는 단계를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 비트 스트림에 기반하여 상기 CU를 디코딩하여 이미지를 만드는 단계를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 이미지를 디스플레이를 향해 전달하는 단계를 더 포함한다. 위에서 언급한 메커니즘은 CTU 파티셔닝을 개선하여 CU가 파이프라인 블록 경계를 넘어 파티셔닝될 가능성을 완화할 수 있다. 구체적으로, 제한 코딩 트리가 CTU에 적용되며, 제한 코딩 트리는 파이프라인 구조를 깨는 분할을 방지하는 규칙을 포함한다. 이것은 그러한 파이프라인 구조가 사용될 때 더 빠른 코딩을 가능하게 한다.
선택적으로, 임의의 이전 측면들에서, 측면의 다른 구현이 제공되며, 여기서 상기 분할 모드는 상기 코딩 트리 노드 높이가 상기 최대 TU 높이의 2배이고 상기 코딩 트리 노드 너비가 상기 최대 TU 너비의 2배라는 결정에 기반하여, 수직 이진 트리 분할, 수직 트리플 트리 분할 및 수평 트리플 트리 분할 중에서 선택되지 않는다.
선택적으로, 임의의 이전 측면들에서, 측면의 다른 구현이 제공되고, 여기서 상기 비트 스트림을 파싱하여 상기 코딩 트리 노드에 대한 분할 모드를 결정하는 단계는, 제1 플래그를 파싱하여 상기 분할 모드가 쿼드-트리 분할인지를 판정하는 단계를 포함한다.
선택적으로, 임의의 이전 측면들에서, 측면의 다른 구현이 제공되고, 여기서 상기 비트 스트림을 파싱하여 상기 코딩 트리 노드에 대한 분할 모드를 결정하는 단계는, 제2 플래그를 파싱하여 상기 분할 모드가 수평 이진 트리 분할인지 또는 분할 없음인지를 판정하는 단계를 포함한다.
선택적으로, 임의의 이전 측면들에서, 측면의 다른 구현이 제공되며, 상기 제1 플래그는 qt_split_cu_flag이고, 상기 제2 플래그는 mtt_split_cu_flag이다.
일 실시 예에서, 본 개시는 디코더에서 구현되는 방법을 포함한다. 상기 방법은, 상기 디코더의 수신기가, 이미지 데이터를 포함하는 비트스트림을 수신하는 단계를 포함한다. 상기 방법은, 상기 디코더의 프로세서가, 상기 이미지 데이터를 파티셔닝하여 하나의 코딩 트리 노드를 가지는 적어도 하나의 코딩 트리 유닛(coding tree unit, CTU)을 만드는 단계를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 코딩 트리 노드의 높이가 최대 변환 유닛(transform unit, TU) 높이보다 크지 않고 상기 코딩 트리 노드의 폭이 최대 TU 폭의 2배인 것으로 결정하는 단계를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 코딩 트리 노드 높이가 최대 TU 높이보다 크지 않고 상기 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정에 기반하여, 상기 비트 스트림을 파싱하여 상기 코딩 트리 노드에 대한 분할 모드를 결정하는 단계 - 상기 분할 모드는 수직 이진 트리 분할 및 분할 없음 중에서 선택됨 -를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 분할 모드를 상기 코딩 트리 노드에 적용하여 하나 이상의 코딩 유닛(coding unit, CU)을 획득하는 단계를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 비트 스트림에 기반하여 상기 CU를 디코딩하여 이미지를 만드는 단계를 더 포함한다. 상기 방법은, 상기 프로세서가, 상기 이미지를 디스플레이를 향해 전달하는 단계를 더 포함한다. 위에서 언급한 메커니즘은 CTU 파티셔닝을 개선하여 CU가 파이프라인 블록 경계를 넘어 파티셔닝될 가능성을 완화할 수 있다. 구체적으로, 제한 코딩 트리가 CTU에 적용되며, 제한 코딩 트리는 파이프라인 구조를 깨는 분할을 방지하는 규칙을 포함한다. 이것은 그러한 파이프라인 구조가 사용될 때 더 빠른 코딩을 가능하게 한다.
선택적으로, 임의의 이전 측면들에서, 측면의 다른 구현이 제공되며, 여기서 상기 분할 모드는 상기 코딩 트리 노드 높이가 상기 최대 TU 높이보다 크지 않고 상기 코딩 트리 노드 너비가 상기 최대 TU 너비의 2배라는 결정에 기반하여, 수직 이진 트리 분할, 쿼드 트리 분할, 수직 트리플 트리 분할 및 수평 트리플 트리 분할 중에서 선택되지 않는다.
선택적으로, 임의의 이전 측면들에서, 측면의 다른 구현이 제공되고, 여기서 상기 비트 스트림을 파싱하여 상기 코딩 트리 노드에 대한 분할 모드를 결정하는 단계는, 제1 플래그를 파싱하여 상기 분할 모드가 수직 이진 트리 분할 또는 분할 없음인지를 판정하는 단계를 포함한다.
일 실시 예에서, 본 개시는 프로세서 및 상기 프로세서에 결합된 수신기를 포함하는 비디오 코딩 디바이스를 포함하고, 상기 프로세서 및 수신기는 선행 측면들 중 임의의 측면의 방법을 수행하도록 구성된다.
일 실시 예에서, 본 개시는 비디오 코딩 디바이스에 의해 사용하기 위한 컴퓨터 프로그램 제품을 포함하는 컴퓨터가 판독 가능한 비 일시적 매체를 포함하고, 상기 컴퓨터 프로그램 제품은 상기 컴퓨터가 판독 가능한 비 일시적 매체에 저장된 컴퓨터가 실행 가능한 명령을 포함하여, 상기 명령이 프로세서에 의해 실행될 때 상기 비디오 코딩 디바이스가 선행 측면들 중 임의의 방법을 수행하게 한다.
일 실시 예에서, 본 개시는 이미지 데이터를 포함하는 비트스트림을 수신하는 수신 수단을 포함하는 디코더를 포함한다. 상기 디코더는 상기 이미지 데이터를 파티셔닝하여 하나의 코딩 트리 노드를 가지는 적어도 하나의 코딩 트리 유닛(coding tree unit, CTU)을 만드는 파티셔닝 수단을 더 포함한다. 상기 디코더는, 상기 코딩 트리 노드의 높이가 최대 변환 유닛(transform unit, TU) 높이의 2배이고 상기 코딩 트리 노드의 폭이 최대 TU 폭의 2배인 것으로 결정하는 크기 결정 수단을 더 포함한다. 상기 디코더는, 상기 코딩 트리 노드 높이가 최대 TU 높이의 2배이고 상기 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정에 기반하여, 상기 비트 스트림을 파싱하여 상기 코딩 트리 노드에 대한 분할 모드를 결정하는 분할 모드 결정 수단 - 상기 분할 모드는 쿼드 트리 분할, 수평 이진 트리 분할 및 분할 없음 중에서 선택됨 -을 더 포함한다. 상기 디코더는, 상기 분할 모드를 상기 코딩 트리 노드에 적용하여 하나 이상의 코딩 유닛(coding unit, CU)을 획득하는 분할 모드 적용 수단을 더 포함한다. 상기 디코더는, 상기 비트 스트림에 기반하여 상기 CU를 디코딩하여 이미지를 만드는 디코딩 수단을 더 포함한다. 상기 디코더는, 상기 이미지를 디스플레이를 향해 전달하는 디스플레이 수단을 더 포함한다. 위에서 언급한 메커니즘은 CTU 파티셔닝을 개선하여 CU가 파이프라인 블록 경계를 넘어 파티셔닝될 가능성을 완화할 수 있다. 구체적으로, 제한 코딩 트리가 CTU에 적용되며, 제한 코딩 트리는 파이프라인 구조를 깨는 분할을 방지하는 규칙을 포함한다. 이것은 그러한 파이프라인 구조가 사용될 때 더 빠른 코딩을 가능하게 한다.
선택적으로, 임의의 선행 측면에서, 측면의 다른 구현이 제공되며, 상기 디코더는 추가로, 선행 측면 중 임의의 측면의 방법을 수행하도록 구성된다.
일 실시 예에서, 본 개시는 이미지 데이터를 포함하는 비트스트림을 수신하는 수신 수단을 포함하는 디코더를 포함한다. 상기 디코더는 상기 이미지 데이터를 파티셔닝하여 하나의 코딩 트리 노드를 가지는 적어도 하나의 코딩 트리 유닛(coding tree unit, CTU)을 만드는 파티셔닝 수단을 더 포함한다. 상기 디코더는, 상기 코딩 트리 노드의 높이가 최대 변환 유닛(transform unit, TU) 높이보다 크지 않고 상기 코딩 트리 노드의 폭이 최대 TU 폭의 2배인 것으로 결정하는 크기 결정 수단을 더 포함한다. 상기 디코더는, 상기 코딩 트리 노드 높이가 최대 TU 높이보다 크지 않고 상기 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정에 기반하여, 상기 비트 스트림을 파싱하여 상기 코딩 트리 노드에 대한 분할 모드를 결정하는 분할 모드 결정 수단 - 상기 분할 모드는 수직 이진 트리 분할 및 분할 없음 중에서 선택됨 -을 더 포함한다. 상기 디코더는, 상기 분할 모드를 상기 코딩 트리 노드에 적용하여 하나 이상의 코딩 유닛(coding unit, CU)을 획득하는 분할 모드 적용 수단을 더 포함한다. 상기 디코더는, 상기 비트 스트림에 기반하여 상기 CU를 디코딩하여 이미지를 만드는 디코딩 수단을 더 포함한다. 상기 디코더는, 상기 이미지를 디스플레이를 향해 전달하는 디스플레이 수단을 더 포함한다. 위에서 언급된 메커니즘은 CTU 파티셔닝을 개선하여 CU가 파이프라인 블록 경계를 넘어 파티셔닝될 가능성을 완화시킬 수 있다. 구체적으로, 제한 코딩 트리가 CTU에 적용되며, 여기서 제한 코딩 트리는 파이프라인 구조를 깨는 분할을 방지하는 규칙을 포함한다. 이것은 그러한 파이프라인 구조가 사용될 때 더 빠른 코딩을 가능하게 한다.
선택적으로, 임의의 선행 측면에서, 측면의 다른 구현이 제공되며, 상기 디코더는 추가로, 선행 측면 중 임의의 측면의 방법을 수행하도록 구성된다.
명확성을 위해, 전술한 실시 예 중 어느 하나는 본 개시의 범위 내에서 새로운 실시 예를 만들기 위해 다른 전술한 실시 예 중 어느 하나 이상과 결합될 수 있다.
이들 및 다른 특징은 첨부된 도면 및 청구 범위와 함께 취해진 다음의 상세한 설명으로부터 더 명확하게 이해될 것이다.
본 개시의 보다 완전한 이해를 위해, 첨부 도면 및 상세한 설명과 관련하여 취해진 다음의 간단한 설명을 참조하며, 여기서 동일한 참조 번호는 동일한 부분을 나타낸다.
도 1은 비디오 신호를 코딩하는 예시적인 방법의 흐름도이다.
도 2는 비디오 코딩을 위한 예시적인 코딩 및 디코딩(코덱) 시스템의 개략도이다.
도 3은 비디오 코딩을 위한 예시적인 비디오 인코더를 예시하는 개략도이다.
도 4는 비디오 코딩을 위한 예시적인 비디오 디코더를 예시하는 개략도이다.
도 5는 코딩 트리 유닛(CTU)을 코딩 유닛(CU)으로 파티셔닝하는 예시적인 메커니즘을 예시하는 개략도이다.
도 6은 CTU에 적용되는 바와 같이 코딩 트리 노드를 갖는 예시적인 코딩 트리를 도시한다.
도 7은 코딩 트리에 사용되는 분할 모드(split mode)의 예시 세트를 예시하는 개략도이다.
도 8 및 도 9는 분할 모드를 선택하여 코딩 트리 노드를 파티셔닝할 때 제한 코딩 트리에 의해 적용되는 예시적인 제약(constraint)을 예시하는 개략도이다.
도 10은 인코딩 동안 제한 코딩 트리를 적용하여 CTU의 코딩 트리 노드를 파티셔닝하는 예시적인 방법의 흐름도이다.
도 11은 인코딩 동안 제한 코딩 트리를 적용하여 CTU의 코딩 트리 노드를 파티셔닝하는 다른 예시적인 방법의 흐름도이다.
도 12는 디코딩 동안 제한 코딩 트리를 적용하여 CTU의 코딩 트리 노드를 파티셔닝하는 예시적인 방법의 흐름도이다.
도 13은 디코딩 동안 제한 코딩 트리를 적용하여 CTU의 코딩 트리 노드를 파티셔닝하는 다른 예시적인 방법의 흐름도이다.
도 14는 예시적인 비디오 코딩 디바이스의 개략도이다.
도 15는 제한 코딩 트리를 적용하여 CTU의 코딩 트리 노드를 파티셔닝하는 예시적인 시스템의 개략도이다.
하나 이상의 실시 예의 예시적인 구현이 아래에 제공되지만, 개시된 시스템 및/또는 방법은 현재 알려져 있거나 존재하는지에 관계 없이 임의의 수의 기술을 이용하여(use) 구현될 수 있다는 것을 처음부터 이해해야 한다. 본 개시는 여기에 예시되고 설명된 예시적인 설계 및 구현을 포함하여 아래에 예시된 예시적인 구현, 도면 및 기술로 제한되지 않아야 하며, 등가물의 전체 범위와 함께 첨부된 청구 범위의 범위 내에서 수정될 수 있다.
비디오 코딩은 비디오 프레임(픽처(picture)라고도 함)을 블록으로 파티셔닝하고(partitioning), 블록을 인트라 예측(intra-prediction) 및 인터 예측(inter-prediction)을 통해 인코딩하여 비디오 파일의 크기를 압축하는 것을 포함한다. 본 개시는 파티셔닝 프로세스의 개선에 관한 것이다. 구체적으로, 비디오 프레임은 프레임을 가로 질러 수평으로 확장될 수 있는 슬라이스로 파티셔닝된다. 각 슬라이스는 미리 결정된 크기의 코딩 트리 유닛(coding tree unit, CTU)으로 세분화된다(sub-divide). 예를 들어, 슬라이스의 행 또는 열에 있는 픽셀 수가 각각 CTU 너비 또는 CTU 높이로 균등하게 나뉠 수 없는 경우 CTU는 슬라이스 전체에서 크기가 다를 수 있다. 그런 다음 코딩 트리가 각 CTU에 적용되어 CTU를 코딩 유닛(CU)으로 더 세분화한다. 각 CU는 인터 예측 및 인트라 예측을 통해 인코딩 및 디코딩할 수 있는 루마(luma)(예: 빛(light)) 불록 및 크로마(chroma)(예: 색상(color)) 블록을 포함한다.
코딩 트리는 CTU를 CU로 분할하기(split) 위해 처리되는 하나 이상의 코딩 트리 노드를 포함한다. 코딩 트리 노드는 해당 분할 모드의 적용을 위해 지정된 CTU에 포함된 픽셀의 세트 또는 서브세트이다. 코딩 트리 노드는 부모/자식 관계에서 코딩 트리에 의해 관련된다. 예를 들어, 코딩 트리의 제1 코딩 트리 노드는 CTU를 서브그룹으로 나눌(divide) 수 있고, 후속 자식 코딩 트리 노드는 서브그룹을 세분화할 수 있다. 이러한 세분화(sub-dividing)는 조건이 충족될 때까지(예: 최소 CU 및/또는 블록 크기에 도달) 반복적으로 발생할 수 있다. 인코더가 CTU를 상대적으로 균일한(homogenous) 루마 값 및/또는 크로마 값을 포함하는 CU로 파티셔닝할 수 있도록 여러 분할 모드가 인코더에 사용될 수 있다. 이러한 상대적으로 균일한 픽셀 그룹은 상이한 값을 갖는 픽셀 그룹보다 더 효율적인 방식(예: 더 높은 압축 및 더 적은 비트로)으로 인코딩될 수 있다. 예를 들어, 인코더는 코딩 트리 노드를 4개의 동일한(equal) 부분으로 분할하는 쿼드 트리(quad-tree) 분할 모드, 코딩 트리 노드를 2개의 동일한 부분으로 분할하는 수직 이진 분할 모드 또는 수평 이진 분할 모드, 및/또는 코딩 트리 노드를 3개의 동일한 부분으로 분할하는 수직 트리플 트리(triple tree) 분할 모드를 선택할 수 있다. 인코더는 디코더가 디코딩 목적을 위해 CTU를 파티셔닝할 수 있도록 코딩 트리를 비트스트림으로 디코더에 시그널링할 수 있다.
많은 비디오 코덱(codec)은 파티셔닝된 CTU를 인코딩 및/또는 디코딩할 때 블록 기반 파이프라인(pipeline) 설계를 사용한다(employ). 구체적으로, 코덱은 미리 정의된 순서로 각 CTU의 서브세트를 인코딩하거나 디코딩한다. 특정 예로서, CTU는 서브포션(sub-portion)으로 구성될 수 있으며, 서브포션은 왼쪽에서 오른쪽으로, 위에서 아래로 인코딩 및/또는 디코딩될 수 있다. 이러한 서브포션은 파이프라인 블록이라고도 한다(코딩 블록과 혼동되지 않음). 예를 들어, CTU는 S×S 파이프라인 블록(또는 2S×2S, 2S×S, S×2S 등)으로 구성될 수 있으며, S의 값은 최대 변환 유닛(transform unit, TU)의 크기이다. TU는 코딩 프로세스(예: 인터 예측 또는 인트라 예측)로 인한 잔차(residual) 값의 코딩 블록에 공간적으로 적용되는 변환 함수이다. 파이프라인 블록으로 구성되면, CTU가 파이프라인에 따라 예를 들어, 왼쪽 상단 섹션(section), 오른쪽 상단 섹션, 왼쪽 하단 섹션, 오른쪽 하단 섹션에 따라 코딩될 수 있다. 불행히도, CTU(및 그 코딩 트리 노드)에 특정 분할 모드를 적용하면, 예를 들어 둘 이상의 파이프라인 블록에 존재하는 CU를 만드는(create) 것에 의해, 파이프라인 구조에 완벽하게 속하지 않는 CU를 만들 수 있다. 이 시나리오는 해당 CTU에 대한 파이프라인 기반 코딩을 복잡하게 하거나 및/또는 방지할 수 있다.
CU가 파이프라인 블록 경계를 가로 질러 파티셔닝될 가능성을 완화하기 위해 CTU 파티셔닝을 개선하는 메커니즘이 여기에 개시된다. 구체적으로, 제한 코딩 트리(constrained coding tree)가 CTU에 적용되며, 제한 코딩 트리는 파이프라인 구조를 깨는 분할을 방지하는 규칙을 포함한다. 제한 코딩 트리를 생성할(generate) 때 인코더는 최대 TU 높이 및 최대 TU 너비를 각각 현재 코딩 트리 노드의 높이 및 너비와 비교한다. 제1 예에서, 코딩 트리 노드 높이가 최대 TU 높이의 2배이고, 코딩 트리 노드 너비가 최대 TU 너비의 2배인 경우(예: 128×128 픽셀 및/또는 2S×2S), 분할 모드는 쿼드 트리 분할, 수평 이진 트리 분할 및 분할 없음(no split)으로 이루어지는 그룹으로부터 선택된다. 따라서, 코딩 트리는 수직 이진 트리 분할, 수직 트리플 트리 분할 및 수평 트리플 트리 분할의 그룹에서 코딩 트리 노드에 대한 분할 모드를 선택하는 데 제약이 있다. 잠재적 분할 모드 그룹이 쿼드 트리 분할, 수평 이진 트리 분할 및 분할 없음으로 제한되므로, 분할 모드는 2개의 플래그를 통해 시그널링될 수 있다. 제1 플래그(예: qt_split_cu_flag)는 분할 모드가 쿼드 트리 분할인지를 시그널링할 수 있고, 제2 플래그(예: mtt_split_cu_flag)는 분할 모드가 수평 이진 트리 분할인지 또는 분할 없음인지를 시그널링할 수 있다. 제2 예에서, 코딩 트리 노드 높이가 최대 TU 높이보다 크지 않고 코딩 트리 노드 너비가 최대 TU 너비의 2배인 경우(예: 높이와 너비로 표시되는 128×64 픽셀 및/또는 2S×S), 분할 모드가 수직 이진 트리 분할 및 분할 없음으로 구성된 그룹에서 선택된다. 따라서, 코딩 트리는 수평 이진 트리, 쿼드 트리 분할, 수직 트리플 트리 및 수평 트리플 트리의 그룹에서 코딩 트리 노드에 대한 분할 모드를 선택하는 데 제약이 있다. 잠재적인 분할 모드 그룹이 수직 이진 트리 분할 및 분할 없음으로 제한되고, 분할 모드는 단일 플래그(예: 수직 이진 트리 분할 또는 분할 없음을 지시함)를 통해 시그널링될 수 있다. 이와 같이, 여기에 설명된 방식으로 제한 코딩 트리를 적용하면, 파이프라인 블록 내에 맞지 않는 CU와 연관된 둔화(slowdown)를 방지하는 것에 의해, 인코딩 및 디코딩 속도를 증가시킨다. 또한, 제한 코딩 트리는 분할 모드를 시그널링하는 데 사용되는 비트 수를 예를 들어 2S×2S 코딩 트리 노드의 경우 2 비트로, 2S×S 코딩 트리 노드의 경우 1 비트로 감소시키는 것에 의해, 코딩 효율성을 증가시킨다. 개시된 제한 코딩 트리는 인트라 예측(I) 슬라이스, 단방향 인터 예측(unidirectional inter-prediction)(P) 슬라이스 및/또는 양방향(bi-directional) 인터 예측(B) 슬라이스의 CTU에 적용될 수 있다.
도 1은 비디오 신호를 코딩하는 예시적인 작동 방법(100)의 흐름도이다. 구체적으로, 비디오 신호는 인코더에서 인코딩된다. 인코딩 프로세스는 다양한 메커니즘을 사용하여 비디오 신호를 압축하여 비디오 파일 크기를 감소시킨다. 파일 크기가 작을수록 압축된 비디오 파일을 사용자에게 전송하는 동시에 관련 대역폭 오버 헤드를 감소시킬 수 있다. 그런 다음 디코더는 압축된 비디오 파일을 디코딩하여 최종 사용자에게 디스플레이할 원래의(original) 비디오 신호를 재구성한다. 디코딩 프로세스는 일반적으로 디코더가 비디오 신호를 일관되게 재구성할 수 있도록 인코딩 프로세스를 미러링(mirror)한다.
단계(101)에서, 비디오 신호가 인코더에 입력된다. 예를 들어, 비디오 신호는 메모리에 저장된 압축되지 않은 비디오 파일일 수 있다. 다른 예로서, 비디오 파일은 비디오 카메라와 같은 비디오 캡처 디바이스에 의해 캡처될 수 있고, 비디오의 라이브 스트리밍을 지원하도록 인코딩될 수 있다. 비디오 파일은 오디오 컴포넌트와 비디오 컴포넌트 모두를 포함할 수 있다. 비디오 컴포넌트는 일련의 이미지 프레임을 포함하며, 이는 시퀀스에서 볼 때 모션(motion)의 시각적인 인상을 준다. 프레임은 빛(light)(여기서는 루마 컴포넌트(또는 루마 샘플)이라고 함) 및 색상(여기서는 크로마 컴포넌트(또는 색상 샘플)이라고 함)의 측면에서 표현되는 픽셀을 포함한다. 일부 예에서, 프레임은 또한 3차원 보기(viewing)를 지원하기 위해 깊이 값을 포함할 수 있다.
단계(103)에서, 비디오는 블록으로 파티셔닝된다. 파티셔닝은 압축을 위해 각 프레임의 픽셀을 정사각형 및/또는 직사각형 블록으로 세분화하는 것을 포함한다. 예를 들어, HEV(High Efficiency Video Coding)(또한 H.265 및 MPEG(Motion Picture Experts Group)-H Part2로 알려짐)에서, 프레임은 먼저, 미리 정의된 크기(예: 64 픽셀×64 픽셀)의 블록인, 코딩 트리 유닛(coding tree unit, CTU)으로 나뉘어질 수 있다. CTU는 루마 샘플 및 크로마 샘플 모두를 포함한다. 코딩 트리를 사용하여 CTU를 블록으로 나눈 다음 추가 인코딩을 지원하는 구성이 달성될 때까지 블록을 반복적으로 세분화할 수 있다. 예를 들어, 프레임의 루마 컴포넌트은 개별 블록이 상대적으로 균일한 빛의 값을 포함할 때까지 세분화될 수 있다. 또한, 프레임의 크로마 컴포넌트은 개별 블록이 상대적으로 균일한 색상 값을 포함할 때까지 세분화될 수 있다. 따라서, 분할 메커니즘은 비디오 프레임의 콘텐츠에 따라 달라진다.
단계(105)에서, 단계(103)에서 파티셔닝된 이미지 블록을 압축하기 위해 다양한 압축 메커니즘이 사용된다. 예를 들어, 인터 예측 및/또는 인트라 예측이 사용될 수 있다. 인터 예측은 공통 장면(common scene)의 객체가 연속 프레임에 나타나는 경향이 있다는 사실을 활용하도록 설계된다. 따라서, 참조 프레임에서 객체를 묘사하는 블록은 인접한 프레임에서 반복적으로 기술될 필요가 없다. 구체적으로, 테이블과 같은 개체는 여러 프레임에 걸쳐 일정한 위치에 남아 있을 수 있다. 따라서, 테이블은 한 번 설명되고 인접 프레임은 참조 프레임을 다시 참조할 수 있다. 패턴 매칭 메커니즘은 여러 프레임에 걸쳐 객체를 매칭하기 위해 사용될 수 있다. 또한, 움직이는 객체는 예를 들어 객체 움직임(movement) 또는 카메라 움직임으로 인해 여러 프레임에 걸쳐 표현될 수 있다. 특정 예로서, 비디오는 여러 프레임에 걸쳐 화면을 가로 질러 움직이는 자동차를 보여줄 수 있다. 이러한 움직임을 설명하기 위해 모션 벡터(motion vector)를 사용할 수 있다. 모션 벡터는 프레임의 객체 좌표에서 참조 프레임의 객체 좌표까지 오프셋을 제공하는 2차원 벡터이다. 이와 같이, 인터 예측은 현재 프레임의 이미지 블록을 참조 프레임의 해당 블록으로부터 오프셋을 나타내는 모션 벡터의 세트로서 인코딩할 수 있다.
인터 예측은 공통 프레임의 블록을 인코딩한다. 인트라 예측은 루마 컴포넌트 및 크로마 컴포넌트가 프레임에 클러스터되는(cluster) 경향이 있다는 사실을 활용한다. 예를 들어, 나무의 일부에 있는 녹색 패치(patch)는 유사한 녹색 패치 옆에 위치하는 경향이 있다. 인트라 예측은 다중 지향성 예측 모드(예: HEVC에서 33), 평면 모드(planar mode) 및 DC(direct current) 모드를 사용한다. 지향성 모드(directional mod)는 현재 블록이 해당 방향의 인접 블록 샘플과 유사/동일함을 지시한다. 평면 모드는 행/열(예: 평면)을 따라 일련의 블록이 행의 가장자리에 있는 인접 블록을 기반으로 보간될 수 있음을 지시한다. 사실상 평면 모드는 값을 변경할 때 상대적으로 일정한 기울기(slope)를 사용하여 행/열에 걸쳐 빛/색상이 부드럽게 전환(smooth transition)됨을 지시한다. DC 모드는 경계 평활화(boundary smoothing)에 사용되며, 그리고 블록이 지향성 예측 모드의 각도 방향과 관련된 모든 인접 블록의 샘플과 관련된 평균 값과 유사/동일함을 지시한다. 따라서, 인트라 예측 블록은 실제 값 대신에 다양한 관계형 예측 모드(relational prediction mode) 값으로 이미지 블록을 나타낼 수 있다. 또한, 인터 예측 블록은 이미지 블록을 실제 값 대신 모션 벡터 값으로 나타낼 수 있다. 두 경우 모두 예측 블록은 경우에 따라 이미지 블록을 정확하게 표현하지 못할 수 있다. 임의의 차이는 잔차 블록에 저장된다. 파일을 추가로 압축하기 위해 변환(transform)이 나머지 블록에 적용될 수 있다.
단계(107)에서, 다양한 필터링 기술이 적용될 수 있다. HEVC에서, 필터는 인루프 필터링(in-loop filtering) 방식에 따라 적용된다. 위에서 논의된 블록 기반 예측은 디코더에서 블록 이미지의 생성(creation)을 초래할 수 있다. 또한, 블록 기반 예측 방식은 블록을 인코딩한 후 나중에 참조 블록으로 사용하기 위해 인코딩된 블록을 재구성할 수 있다. 인루프 필터링 방식은 노이즈 억제 필터, 디블로킹(de-blocking) 필터, 적응형 루프 필터 및 샘플 적응 오프셋(sample adaptive offset, SAO) 필터를 블록/프레임에 반복적으로 적용한다. 이러한 필터는 인코딩된 파일을 정확하게 재구성할 수 있도록 이러한 블로킹 아티팩트(blocking artifact)를 완화한다. 또한, 이러한 필터는 재구성된 참조 블록에서 아티팩트를 완화하므로, 아티팩트가 재구성된 참조 블록을 기반으로 인코딩된 후속 블록에서 추가 아티팩트를 만들 가능성을 감소시킨다.
비디오 신호가 파티셔닝, 압축 및 필터링되면, 결과 데이터는 단계(109)에서 비트스트림으로 인코딩된다. 비트스트림은 디코더에서 적절한 비디오 신호 재구성을 지원하는 데 필요한 임의의 시그널링 데이터뿐만 아니라 위에서 논의된 데이터를 포함한다. 예를 들어, 그러한 데이터는 파티션 데이터, 예측 데이터, 잔차 블록, 및 코딩 명령을 디코더에 제공하는 다양한 플래그를 포함할 수 있다. 비트스트림은 요청시 디코더를 향한 전송을 위해 메모리에 저장될 수 있다. 비트스트림은 또한 복수의 디코더를 향해 브로드캐스트 및/또는 멀티캐스트될 수 있다. 비트스트림 생성은 반복적인 프로세스이다. 따라서, 단계(101, 103, 105, 107 및 109)는 많은 프레임 및 블록에 걸쳐 연속적으로 및/또는 동시에 발생할 수 있다. 도 1에 도시된 순서는 명확성과 논의의 용이성을 위해 제시된 것이며, 비디오 코딩 프로세스를 특정 순서로 제한하려는 의도가 아니다.
단계(111)에서 디코더는 비트스트림을 수신하고 디코딩 프로세스를 시작한다. 구체적으로, 디코더는 엔트로피 디코딩 방식을 사용하여 비트스트림을 해당 구문(syntax) 및 비디오 데이터로 변환한다. 디코더는 단계(111)에서 비트스트림으로부터의 구문 데이터를 사용하여 프레임에 대한 파티션을 결정한다. 파티셔닝은 단계(103)에서 블록 파티셔닝의 결과와 매칭되어야 한다. 이제, 단계(111)에서 사용되는 엔트로피 인코딩/디코딩이 설명된다. 인코더는 입력 이미지(들)에서 값의 공간적 위치에 기반하여 여러 가지 가능한 선택에서 블록 파티셔닝 방식을 선택하는 것과 같이 압축 프로세스 중에 많은 선택을 한다. 정확한 선택을 시그널링하는데 많은 빈(bin)이 사용될 수 있다. 여기에서 사용되는 바와 같이, 빈은 변수로 취급되는 이진 값(예: 컨텍스트에 따라 달라질 수 있는 비트 값)이다. 엔트로피 코딩을 사용하면 인코더가 특정 사례에 대해 명확하게 실행 불가능한 옵션을 버리고 허용 가능한 옵션 세트를 남길 수 있다. 그런 다음 각각각의 허용 옵션에 코드워드(code word)가 할당된다. 코드워드의 길이는 허용 가능한 옵션의 수를 기반으로 한다(예: 2개의 옵션에 대해 하나의 빈, 3개 내지 4개의 옵션에 대해 2개의 빈 등). 그런 다음 인코더는 선택한 옵션에 대한 코드워드를 인코딩한다. 이 방식은, 가능한 모든 옵션의 잠재적으로 큰 세트에서의 선택을 고유하게 지시하는 것과 반대로 허용 가능한 옵션의 작은 서브세트에서의 선택을 고유하게 지시하기 위해 코드워드가 원하는 만큼 크기 때문에 코드워드의 크기를 감소시킨다. 그런 다음, 디코더는 인코더와 유사한 방식으로 허용 가능한 옵션 세트를 결정하는 것에 의해 선택을 디코딩한다. 허용 가능한 옵션 세트를 결정하는 것에 의해, 디코더는 코드워드를 읽고 인코더가 선택한 사항을 결정할 수 있다.
단계(113)에서 디코더는 블록 디코딩을 수행한다. 구체적으로, 디코더는 역변환(reverse transform)을 사용하여 잔차 블록을 생성한다. 그런 다음, 디코더는 잔차 블록 및 대응하는 예측 블록을 사용하여 파티셔닝에 따라 이미지 블록을 재구성한다. 예측 블록은 단계(105)에서 인코더에서 생성된 바와 같이 인트라 예측 블록 및 인터 예측 블록 모두를 포함할 수 있다. 재구성된 이미지 블록은 단계(111)에서 결정된 파티셔닝 데이터에 따라 재구성된 비디오 신호의 프레임에 위치한다. 단계(113)에 대한 구문은 또한 위에서 논의된 바와 같이 엔트로피 코딩을 통해 비트스트림에서 시그널링될 수 있다.
단계(115)에서, 인코더에서의 단계(107)와 유사한 방식으로 재구성된 비디오 신호의 프레임에 대해 필터링이 수행된다. 예를 들어, 노이즈 억제 필터, 디블로킹 필터, 적응형 루프 필터 및 SAO 필터를 프레임에 적용하여 블로킹 아티팩트를 제거할 수 있다. 프레임이 필터링되면, 비디오 신호는 최종 사용자가 볼 수 있도록 단계(117)에서 디스플레이로 출력될 수 있다.
도 2는 비디오 코딩을 위한 예시적인 코딩 및 디코딩(코덱) 시스템(200)의 개략도이다. 구체적으로, 코덱 시스템(200)은 작동 방법(100)의 구현을 지원하는 기능을 제공한다. 코덱 시스템(200)은 인코더 및 디코더 모두에 사용되는 컴포넌트를 나타내기 위해 일반화된다. 코덱 시스템(200)은 작동 방법(100)에서 단계(101 및 103)와 관련하여 논의된 바와 같이 비디오 신호를 수신하고 파티셔닝하며, 이는 파티셔닝된 비디오 신호(201)를 초래한다. 코덱 시스템(200)은 방법(100)에서 단계(105, 107 및 109)와 관련하여 논의된 바와 같이 인코더로서 작동할 때 파티셔닝된 비디오 신호(201)를 코딩된 비트스트림으로 압축한다. 디코더로서 작동할 때 코덱 시스템(200)은 작동 방법(100)에서 단계(111, 113, 115 및 117)와 관련하여 논의된 바와 같이 비트스트림으로부터 출력 비디오 신호를 생성한다. 코덱 시스템(200)은 일반 코더 제어 컴포넌트(211), 변환 스케일링 및 양자화 컴포넌트(213), 인트라 픽처 추정 컴포넌트(215), 인트라 픽처 예측 컴포넌트(217), 모션 보상 컴포넌트(219), 모션 추정 컴포넌트(221), 스케일링 및 역변환(inverse transform) 컴포넌트(229), 필터 제어 분석 컴포넌트(227), 인루프(in-loop) 필터 컴포넌트(225), 디코딩된 픽처 버퍼 컴포넌트(223), 그리고 헤더 포맷팅(header formatting) 및 CABAC(context adaptive binary arithmetic coding) 컴포넌트(231)를 포함한다. 이러한 컴포넌트는 도시된 바와 같이 결합된다. 도 2에서, 검은 색 선은 인코딩/디코딩될 데이터의 움직임을 지시하고 점선은 다른 컴포넌트의 작동을 제어하는 제어 데이터의 움직임을 지시한다. 코덱 시스템(200)의 컴포넌트는 모두 인코더에 존재할 수 있다. 디코더는 코덱 시스템(200)의 컴포넌트들의 서브세트를 포함할 수 있다. 예를 들어, 디코더는 인트라 픽처 예측 컴포넌트(217), 모션 보상 컴포넌트(219), 스케일링 및 역변환 컴포넌트(229), 인루프 필터 컴포넌트(225) 및 디코딩된 픽처 버퍼 컴포넌트(223)를 포함할 수 있다. 이제 이러한 컴포넌트에 대해 설명한다.
파티셔닝된 비디오 신호(201)는 코딩 트리에 의해 픽셀 블록으로 파티셔닝된 캡처된 비디오 시퀀스이다. 코딩 트리는 다양한 분할 모드를 사용하여 픽셀 블록을 더 작은 픽셀 블록으로 세분화한다. 이러한 블록은 더 작은 블록으로 더 세분화될 수 있다. 블록은 코딩 트리에서 노드로 지칭될 수 있다. 더 큰 부모 노드는 더 작은 자식 노드로 분할된다. 노드가 세분화되는 횟수가 노드/코딩 트리의 깊이라고 지칭된다. 세분화된 블록은 경우에 따라 코딩 유닛(coding unit, CU)에 포함될 수 있다. 예를 들어, CU는 CU에 대한 대응하는 구문 명령과 함게 루마 블록, 적색 차이(red difference) 크로마(Cr) 블록(들) 및 청색 차이(blue difference) 크로마(Cb) 블록(들)을 포함하는 CTU의 서브포션일 수 있다. 분할 모드는 사용되는 분할 모드에 따라 노드를 각각 다양한 모양의 2개, 3개 또는 4개의 자식 노드로 파티셔닝하는 데 사용되는 이진 트리(binary tree, BT), 트리플 트리(triple tree, TT) 및 쿼드 트리(quad-tree, QT)를 포함할 수 있다. 파티셔닝된 비디오 신호(201)는 압축을 위해 일반 코더 제어 컴포넌트(211), 변환 스케일링 및 양자화 컴포넌트(213), 인트라 픽처 추정 컴포넌트(215), 필터 제어 분석 컴포넌트(227), 및 모션 추정 컴포넌트(221)로 전달된다(forward).
일반 코더 제어 컴포넌트(211)는 적용 제한(application constraint)에 따라 비디오 시퀀스의 이미지를 비트스트림으로 코딩하는 것과 관련된 결정을 내리도록 구성된다. 예를 들어, 일반 코더 제어 컴포넌트(211)는 비트 레이트/비트스트림 크기 대 재구성 품질의 최적화를 관리한다. 이러한 결정은 저장 공간/대역폭 가용성 및 이미지 해상도 요청을 기반으로 이루어질 수 있다. 일반 코더 제어 컴포넌트(211)는 또한 버퍼 언더런(bunderrun) 및 오버런(overrun) 이슈(issue)를 완화하기 위해 전송 속도의 관점에서 버퍼 활용을 관리한다. 이러한 이슈를 관리하기 위해, 일반 코더 제어 컴포넌트(211)는 다른 컴포넌트에 의한 파티셔닝, 예측 및 필터링을 관리한다. 예를 들어, 일반 코더 제어 컴포넌트(211)는 압축 복잡도를 동적으로 증가시켜 해상도를 증가시키고, 대역폭 사용을 증가시키거나 압축 복잡도를 감소시켜 해상도 및 대역폭 사용을 감소시킬 수 있다. 따라서, 일반 코더 제어 컴포넌트(211)는 비디오 신호 재구성 품질과 비트 레이트 문제의 균형을 맞추기 위해 코덱 시스템(200)의 다른 컴포넌트를 제어한다. 일반 코더 제어 컴포넌트(211)는 다른 컴포넌트의 작동을 제어하는 제어 데이터를 만든다. 제어 데이터는 또한 헤더 포맷팅 및 CABAC 컴포넌트(231)로 전달되어 비트스트림에서 인코딩되어 디코더에서의 디코딩을 위한 파라미터를 시그널링한다.
파티셔닝된 비디오 신호(201)는 또한 인터 예측을 위해 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)로 송신된다. 파티셔닝된 비디오 신호(201)의 프레임 또는 슬라이스는 다수의 비디오 블록으로 나뉠 수 있다. 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)는 시간적 예측을 제공하기 위해 하나 이상의 참조 프레임에서 하나 이상의 블록에 대해 수신된 비디오 블록의 인터 예측 코딩을 수행한다. 코덱 시스템(200)은 예를 들어, 비디오 데이터의 각 블록에 대한 적절한 코딩 모드를 선택하기 위해 다중 코딩 패스(multiple coding passes)를 수행할 수 있다.
모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)는 고도로(highly) 통합될 수 있지만, 개념적 목적을 위해 별도로 예시된다. 모션 추정 컴포넌트(221)에 의해 수행되는 모션 추정은 비디오 블록에 대한 모션을 추정하는 모션 벡터를 생성하는 프로세스이다. 예를 들어, 모션 벡터는 예측 블록에 대한 코딩된 객체의 변위(displacement)를 지시할 수 있다. 예측 블록은 픽셀 차이 측면에서 코딩될 블록과 밀접하게 매칭되는 것으로 확인된 블록이다. 예측 블록은 또한 참조 블록이라고지칭될 수 있다. 이러한 픽셀 차이는 절대 차이의 합(sum of absolute difference, SAD), 제곱 차이의 합(sum of square difference, SSD) 또는 다른 차이 메트릭에 의해 결정될 수 있다. HEVC는 CTU, 코딩 트리 블록(coding tree block, CTB) 및 CU를 포함한 여러 코딩된 객체를 사용한다. 예를 들어, CTU는 CTB로 나뉠 수 있으며, 그런 다음 CU에 포함하기 위해 CB로 나뉠 수 있다. CU는 예측 데이터를 포함하는 예측 유닛(prediction unit, PU) 및/또는 CU에 대한 변환된 잔차 데이터를 포함하는 변환 유닛(transform unit, TU)으로서 인코딩될 수 있다. 모션 추정 컴포넌트(221)는 레이트 왜곡 최적화 프로세스의 일부로서 레이트 왜곡 분석을 사용하는 것에 의해 모션 벡터, PU 및 TU를 생성한다. 예를 들어, 모션 추정 컴포넌트(221)는 예를 들어, 현재 블록/프레임에 대한 복수의 참조 블록, 복수의 모션 벡터 등을 결정할 수 있고, 예를 들어, 최상의 레이트 왜곡 특성을 갖는 참조 블록, 모션 벡터 등을 선택할 수 있다. 최상의 레이트 왜곡 특성은 비디오 재구성 품질(예: 압축에 의한 데이터 손실량)과 코딩 효율성(예: 최종 인코딩의 크기)의 균형을 맞춘다.
일부 예들에서, 코덱 시스템(200)은 디코딩된 픽처 버퍼 컴포넌트(223)에 저장된 참조 픽처의 서브 정수 픽셀 위치(sub-integer pixel position)에 대한 값을 계산할 수 있다. 예를 들어, 비디오 코덱 시스템(200)은 1/4 픽셀 위치, 1/8 픽셀 위치, 또는 참조 화상의 다른 분수 픽셀 위치의 값을 보간할 수 있다. 따라서, 모션 추정 컴포넌트(221)는 전체 픽셀 위치 및 분수 픽셀 위치에 대한 모션 검색을 수행하고, 분수 픽셀 정밀도를 갖는 모션 벡터를 출력할 수 있다. 모션 추정 컴포넌트(221)는 PU의 위치를 참조 픽쳐의 예측 블록의 위치와 비교하는 것에 의해, 인터 코딩된 슬라이스에서 비디오 블록의 PU에 대한 모션 벡터를 계산한다. 모션 추정 컴포넌트(221)는 인코딩 및 모션을 위한 헤더 포맷팅 및 CABAC 컴포넌트(231)에 대한 모션 데이터로서, 계산된 모션 벡터를 모션 보상 컴포넌트(219)에 출력한다.
모션 보상 컴포넌트(219)에 의해 수행되는 모션 보상은 모션 추정 컴포넌트(221)에 의해 결정된 모션 벡터에 기반하여 예측 블록을 페치(fetch)하거나 생성하는 것을 포함할 수 있다. 다시, 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)는 일부 예들에서 기능적으로 통합될 수 있다. 현재 비디오 블록의 PU에 대한 모션 벡터를 수신하면, 모션 보상 컴포넌트(219)는 모션 벡터가 가리키는 예측 블록의 위치를 찾을 수 있다. 잔차 비디오 블록은 그 다음에, 코딩되는 현재 비디오 블록의 픽셀 값에서 예측 블록의 픽셀 값을 감산하는 것에 의해 형성되어, 픽셀 차이 값을 형성한다. 일반적으로, 모션 추정 컴포넌트(221)는 루마 컴포넌트에 대한 모션 추정을 수행하고, 모션 보상 컴포넌트(219)는 크로마 컴포넌트 및 루마 컴포넌트 모두에 대해 루마 컴포넌트에 기반하여 계산된 모션 벡터를 사용한다. 예측 블록 및 잔차 블록은 변환 스케일링 및 양자화 컴포넌트(213)로 전달된다.
파티셔닝된 비디오 신호(201)는 또한 인트라 픽처 추정 컴포넌트(215) 및 인트라 픽처 예측 컴포넌트(217)로 송신된다. 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)와 마찬가지로, 인트라 픽처 추정 컴포넌트(215) 및 인트라 픽처 예측 컴포넌트(217)는 고도로 통합될 수 있지만, 개념적 목적을 위해 별도로 도시된다. 인트라 픽처 추정 컴포넌트(215) 및 인트라 픽처 예측 컴포넌트(217)는 위에서 설명한 바와 같이, 프레임 사이의 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)에 의해 수행되는 인터 예측에 대한 대안으로서, 현재 프레임의 블록에 대한 현재 블록을 인터 예측한다. 구체적으로, 인트라 픽처 추정 컴포넌트(215)는 현재 블록을 인코딩하기 위해 이용할 인트라 예측 모드를 결정한다. 일부 예들에서, 인트라 픽처 추정 컴포넌트(215)는 다수의 테스트된 인트라 예측 모드로부터 현재 블록을 인코딩하기 위해 적절한 인트라 예측 모드를 선택한다. 선택된 인트라 예측 모드는 인코딩을 위해 헤더 포맷팅 및 CABAC 컴포넌트(231)로 전달된다.
예를 들어, 인트라 픽쳐 추정 컴포넌트(215)는 다양한 테스트된 인트라 예측 모드에 대한 레이트 왜곡 분석을 이용하여 레이트 왜곡 값을 계산하고, 테스트된 모드 중에서 가장 좋은 레이트 왜곡 특성을 갖는 인트라 예측 모드를 선택한다. 레이트 왜곡 분석은 일반적으로 인코딩된 블록을 생성하는데 사용되는 비트레이트(예: 비트 수)뿐만 아니라, 인코딩된 블록을 생성하기 위해 인코딩되었던 원래의 인코딩되지 않은 블록과 인코딩된 블록 사이의 왜곡(또는 오류)의 양을 결정한다. 인트라 픽처 추정 컴포넌트(215)는 어떤 인트라 예측 모드가 블록에 대해 최상의 레이트 왜곡 값을 나타내는지를 결정하기 위해 다양한 인코딩된 블록에 대한 왜곡 및 레이트로부터 비율을 계산한다. 또한, 인트라 픽처 추정 컴포넌트(215)는 레이트 왜곡 최적화(rate-distortion optimization, RDO)에 기반한 깊이 모델링 모드(depth modeling mode, DMM)를 이용하여 깊이 맵의 깊이 블록을 코딩하도록 구성될 수 있다.
인트라 픽처 예측 컴포넌트(217)는 인코더에서 구현될 때 인트라 픽처 추정 컴포넌트(215)에 의해 결정된 선택된 인트라 예측 모드에 기반하여 예측 블록으로부터 잔차 블록을 생성하거나, 디코더에서 구현될 때 비트스트림으로부터 잔차 블록을 읽을 수 있다. 잔차 블록은 예측 블록과 원래 블록 사이의 값 차이를 포함하며, 이는 행렬로 표시된다. 잔차 블록은 그 다음에 변환 스케일링 및 양자화 컴포넌트(213)로 전달된다. 인트라 픽처 추정 컴포넌트(215) 및 인트라 픽처 예측 컴포넌트(217)는 루마 컴포넌트 및 크로마 컴포넌트 모두에서 작동할 수 있다.
변환 스케일링 및 양자화 컴포넌트(213)는 추가로, 잔차 블록을 압축하도록 구성된다. 변환 스케일링 및 양자화 컴포넌트(213)는 이산 코사인 변환(discrete cosine transform, DCT), 이산 사인 변환(discrete sine transform, DST) 또는 개념적으로 유사한 변환과 같은 변환을 잔차 블록에 적용하여 잔차 변환 계수 값을 포함하는 비디오 블록을 생성한다. 웨이블릿 변환, 정수 변환, 서브밴드 변환 또는 기타 유형의 변환도 사용할 수 있다. 변환은 잔차 정보를 픽셀 값 도메인으로부터 주파수 도메인과 같은 변환 도메인으로 변환할 수 있다. 변환 스케일링 및 양자화 컴포넌트(213)는 또한 예를 들어 주파수에 기반하여 변환된 잔차 정보를 스케일링하도록 구성된다. 이러한 스케일링은 스케일 팩터를 잔차 정보에 적용하므로, 상이한 주파수 정보가 상이한 그래뉴래러티(granularity)에서 양자화되도록 하는 것을 포함하며, 이는 재구성된 비디오의 최종 시각적 품질에 영향을 미칠 수 있다. 변환 스케일링 및 양자화 컴포넌트(213)는 또한 비트 레이트를 더 감소시키기 위해 변환 계수를 양자화하도록 구성된다. 양자화 프로세스는 계수의 일부 또는 전부와 관련된 비트 깊이를 감소시킬 수 있다. 양자화의 정도(degree)는 양자화 파라미터를 조정하는 것에 의해 수정될 수 있다. 일부 예에서, 변환 스케일링 및 양자화 컴포넌트(213)는 양자화된 변환 계수를 포함하는 매트릭스의 스캔(scan)을 수행할 수 있다. 양자화된 변환 계수는 헤더 포맷팅 및 CABAC 컴포넌트(231)로 전달되어 비트스트림으로 인코딩된다.
스케일링 및 역변환 컴포넌트(229)는 모션 추정을 지원하기 위해 변환 스케일링 및 양자화 컴포넌트(213)의 역 작동(reverse operation)을 적용한다. 스케일링 및 역변환 컴포넌트(229)는, 예를 들어, 다른 현재 블록에 대한 예측 블록이 될 수 있는 참조 블록으로서 나중에 사용하기 위해, 픽셀 도메인에서 잔차 블록을 재구성하기 위해 역 스케일링, 변환 및/또는 양자화를 적용한다. 모션 추정 컴포넌트(221) 및/또는 모션 보상 컴포넌트(219)는 차후 블록/프레임의 모션 추정에 사용하기 위해 잔차 블록을 대응하는 예측 블록에 다시 추가하는 것에 의해, 참조 블록을 계산할 수 있다. 필터는 재구성된 참조 블록에 적용되어 스케일링, 양자화 및 변환 중에 만들어진 아티팩트를 완화한다. 그렇지 않으면, 후속 블록이 예측될 때 이러한 아티팩트가 부정확한 예측을 유발(그리고 추가 아티팩트를 만듦)할 수 있다.
필터 제어 분석 컴포넌트(227) 및 인루프 필터 컴포넌트(225)는 필터를 잔차 블록 및/또는 재구성된 이미지 블록에 적용한다. 예를 들어, 스케일링 및 역 변환 컴포넌트(229)로부터의 변환된 잔차 블록은 인트라 픽처 예측 컴포넌트(217) 및/또는 모션 보상 컴포넌트(219)로부터의 대응하는 예측 블록과 결합되어 원래의 이미지 블록을 재구성할 수 있다. 필터는 그 다음에 재구성된 이미지 블록에 적용될 수 있다. 일부 예에서, 필터는 대신에 잔차 블록에 적용될 수 있다. 도 2의 다른 컴포넌트와 마찬가지로, 필터 제어 분석 컴포넌트(227) 및 인루프 필터 컴포넌트(225)는 고도로 통합되고 함께 구현될 수 있지만, 개념적 목적을 위해 별도로 도시된다. 재구성된 참조 블록에 적용된 필터는 특정 공간 영역에 적용되며, 이러한 필터가 적용되는 방식을 조정하는 여러 파라미터를 포함한다. 필터 제어 분석 컴포넌트(227)는 재구성된 참조 블록을 분석하여 그러한 필터가 적용되어야 하는 위치를 결정하고, 대응하는 파라미터를 설정한다. 이러한 데이터는 인코딩을 위한 필터 제어 데이터로서 헤더 포맷팅 및 CABAC 컴포넌트(231)로 전달된다. 인루프 필터 컴포넌트(225)는 필터 제어 데이터에 기반하여 이러한 필터를 적용한다. 필터는 디블로킹(deblocking) 필터, 잡음 억제 필터, SAO 필터 및 적응 루프 필터를 포함할 수 있다. 이러한 필터는 예에 따라 공간/픽셀 도메인(예를 들어, 재구성된 픽셀 블록에) 또는 주파수 도메인에 적용될 수 있다.
인코더로서 작동할 때, 필터링된 재구성된 이미지 블록, 잔차 블록 및/또는 예측 블록은 위에서 논의된 바와 같이 모션 추정에서 나중에 사용하기 위해 디코딩된 픽처 버퍼 컴포넌트(223)에 저장된다. 디코더로서 작동할 때, 디코딩된 픽처 버퍼 컴포넌트(223)는 재구성되고 필터링된 블록을 저장하고, 재구성되고 필터링된 블록을 출력 비디오 신호의 일부로서 디스플레이를 향해 전달한다. 디코딩된 픽처 버퍼 컴포넌트(223)는 예측 블록, 잔차 블록 및/또는 재구성된 이미지 블록을 저장할 수 있는 임의의 메모리 디바이스일 수 있다.
헤더 포맷팅 및 CABAC 컴포넌트(231)는 코덱 시스템(200)의 다양한 컴포넌트로부터 데이터를 수신하고, 디코더를 향한 전송을 위해 이러한 데이터를 코딩된 비트스트림으로 인코딩한다. 구체적으로, 헤더 포맷팅 및 CABAC 컴포넌트(231)는 일반 제어 데이터 및 필터 제어 데이터와 같은 제어 데이터를 인코딩하기 위해 다양한 헤더를 생성한다. 또한, 인트라 예측 및 모션 데이터를 포함하는 예측 데이터는 물론 양자화된 변환 계수 데이터 형태의 잔차 데이터가 모두 비트스트림으로 인코딩된다. 최종 비트스트림은 원래의 파티셔닝된 비디오 신호(201)를 재구성하기 위해 디코더에 의해 요구되는 모든 정보를 포함한다. 이러한 정보는 또한 인트라 예측 모드 인덱스 테이블(코드워드 매핑 테이블(mapping table)이라고도 함), 다양한 블록에 대한 인코딩 컨텍스트의 정의, 가장 가능한 인트라 예측 모드의 지시(indication), 파티션 정보의 지시 등을 포함할 수 있다. 이러한 데이터는 엔트로피 코딩을 사용하여 인코딩될 수 있다. 예를 들어, 정보는 CAVLC(Context adaptive variable length coding), CABAC, SBAC(syntax-based context-adaptive binary arithmetic coding), PIPE(probability interval partitioning entropy) 코딩, 또는 다른 엔트로피 코딩 기술을 사용하여 인코딩될 수 있다. 엔트로피 코딩 후에, 코딩된 비트스트림은 다른 디바이스(예를 들어, 비디오 디코더)로 전송되거나, 나중에 전송 또는 검색을 위해 보관될 수 있다.
도 3은 비디오 코딩을 위한 예시적인 비디오 인코더(300)를 예시하는 블록도이다. 비디오 인코더(300)는 코덱 시스템(200)의 인코딩 기능을 구현하거나 및/또는 작동 방법(100)의 단계(101, 103, 105, 107 및/또는 109)를 구현하기 위해 사용될 수 있다. 인코더(300)는 입력 비디오 신호를 파티셔닝하여, 파티셔닝된 비디오 신호(201)와 실질적으로 유사한 파티셔닝된 비디오 신호(301)를 생성한다. 파티셔닝된 비디오 신호(301)는 인코더(300)의 컴포넌트에 의해 압축되고 비트스트림으로 인코딩된다.
구체적으로, 파티셔닝된 비디오 신호(301)는 인트라 예측을 위해 인트라 픽처 예측 컴포넌트(317)로 전달된다. 인트라 픽처 예측 컴포넌트(317)는 인트라 픽처 추정 컴포넌트(215) 및 인트라 픽처 예측 컴포넌트(217)와 실질적으로 유사할 수 있다. 파티셔닝된 비디오 신호(301)는 또한 디코딩된 픽처 버퍼 컴포넌트(323)의 참조 블록에 기반한 인터 예측을 위해 모션 보상 컴포넌트(321)로 전달된다. 모션 보상 컴포넌트(321)는 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)와 실질적으로 유사할 수 있다. 인트라 픽처 예측 컴포넌트(317) 및 모션 보상 컴포넌트(321)로부터의 예측 블록 및 잔차 블록은 잔차 블록의 변환 및 양자화를 위해 변환 및 양자화 컴포넌트(313)로 전달된다. 변환 및 양자화 컴포넌트(313)는 변환 스케일링 및 양자화 컴포넌트(213)와 실질적으로 유사할 수 있다. 변환 및 양자화된 잔차 블록 및 대응하는 예측 블록은(관련 제어 데이터와 함께) 비트스트림으로의 코딩을 위해 엔트로피 코딩 컴포넌트(331)로 전달된다. 엔트로피 코딩 컴포넌트(331)는 헤더 포맷팅 및 CABAC 컴포넌트(231)와 실질적으로 유사할 수 있다.
변환 및 양자화된 잔차 블록 및/또는 대응하는 예측 블록은 또한 모션 보상 컴포넌트(321)에 의한 사용을 위한 참조 블록으로 재구성하기 위해 변환 및 양자화 컴포넌트(313)로부터 역 변환 및 양자화 컴포넌트(329)로 전달된다. 역변환 및 양자화 컴포넌트(329)는 스케일링 및 역변환 컴포넌트(229)와 실질적으로 유사할 수 있다. 인루프 필터 컴포넌트(325)의 인루프 필터는 또한 예에 따라 잔차 블록 및/또는 재구성된 참조 블록에 적용된다. 인루프 필터 컴포넌트(325)는 필터 제어 분석 컴포넌트(227) 및 인루프 필터 컴포넌트(225)와 실질적으로 유사할 수 있다. 인루프 필터 컴포넌트(325)는 인루프 필터 컴포넌트(225)와 관련하여 논의된 바와 같이 다수의 필터를 포함할 수 있다. 필터링된 블록은 모션 보상 컴포넌트(321)에 의해 참조 블록으로 사용하기 위해 디코딩된 픽처 버퍼 컴포넌트(323)에 저장된다. 디코딩된 픽처 버퍼 컴포넌트(323)는 디코딩된 픽처 버퍼 컴포넌트(223)와 실질적으로 유사할 수 있다.
도 4는 비디오 코딩을 위한 예시적인 비디오 디코더(400)를 예시하는 블록도이다. 비디오 디코더(400)는 코덱 시스템(200)의 디코딩 기능을 구현하거나 및/또는 작동 방법(100)의 단계(111, 113, 115 및/또는 117)를 구현하기 위해 사용될 수 있다. 디코더(400)는 예를 들어 인코더(300)로부터 비트스트림을 수신하고, 최종 사용자에게 디스플레이하기 위해 비트스트림에 기반하여 재구성된 출력 비디오 신호를 생성한다.
비트스트림은 엔트로피 디코딩 컴포넌트(433)에 의해 수신된다. 엔트로피 디코딩 컴포넌트(433)는 CAVLC, CABAC, SBAC, PIPE 코딩, 또는 다른 엔트로피 코딩 기술과 같은 엔트로피 디코딩 방식을 구현하도록 구성된다. 예를 들어, 엔트로피 디코딩 컴포넌트(433)는 비트스트림에서 코드워드로 인코딩된 추가 데이터를 해석하기 위한 컨텍스트를 제공하기 위해 헤더 정보를 사용할 수 있다. 디코딩된 정보는 일반 제어 데이터, 필터 제어 데이터, 파티션 정보, 모션 데이터, 예측 데이터 및 잔차 블록으로부터의 양자화된 변환 계수와 같은, 비디오 신호를 디코딩하기 위한 임의의 원하는 정보를 포함한다. 양자화된 변환 계수는 잔차 블록으로의 재구성을 위해 역변환 및 양자화 컴포넌트(429)로 전달된다. 역변환 및 양자화 컴포넌트(429)는 역변환 및 양자화 컴포넌트(329)와 유사할 수 있다.
재구성된 잔차 블록 및/또는 예측 블록은 인트라 예측 작동에 기반하여 이미지 블록으로 재구성하기 위해 인트라 픽처 예측 컴포넌트(417)로 전달된다. 인트라 픽처 예측 컴포넌트(417)는 인트라 픽처 추정 컴포넌트(215) 및 인트라 픽처 예측 컴포넌트(217)와 유사할 수 있다. 구체적으로, 인트라 픽처 예측 컴포넌트(417)는 예측 모드를 사용하여 프레임에서 참조 블록을 찾고, 그 결과에 잔차 블록을 적용하여 인트라 예측된 이미지 블록을 재구성한다. 재구성된 인트라 예측된 이미지 블록 및/또는 잔차 블록 그리고 대응하는 인터 예측 데이터는 디코딩된 픽처 버퍼 컴포넌트(223)와 인루프 필터 컴포넌트(225)와 각각 실질적으로 유사할 수 있는, 인루프 필터 컴포넌트(425)를 통해 디코딩된 픽처 버퍼 컴포넌트(423)로 전달된다. 인루프 필터 컴포넌트(425)는 재구성된 이미지 블록, 잔차 블록 및/또는 예측 블록을 필터링하고, 이러한 정보는 디코딩된 픽처 버퍼 컴포넌트(423)에 저장된다. 디코딩된 픽처 버퍼 컴포넌트(423)로부터의 재구성된 이미지 블록은 인터 예측을 위해 모션 보상 컴포넌트(421)로 전달된다. 모션 보상 컴포넌트(421)는 모션 추정 컴포넌트(221) 및/또는 모션 보상 컴포넌트(219)와 실질적으로 유사할 수 있다. 구체적으로, 모션 보상 컴포넌트(421)는 참조 블록으로부터 모션 벡터를 사용하여 예측 블록을 생성하고, 그 결과에 잔차 블록을 적용하여 이미지 블록을 재구성한다. 결과적인 재구성된 블록은 또한 인루프 필터 컴포넌트(425)를 통해 디코딩된 픽처 버퍼 컴포넌트(423)로 전달될 수 있다. 디코딩된 픽처 버퍼 컴포넌트(423)는 파티션 정보를 통해 프레임으로 재구성될 수 있는 추가적인 재구성된 이미지 블록을 계속 저장한다. 이러한 프레임은 시퀀스에 배치될 수도 있다. 시퀀스는 재구성된 출력 비디오 신호로서 디스플레이를 향해 출력된다.
본 개시는 방법(100), 코덱 시스템(200), 인코더(300) 및/또는 디코더(400)에 따라 비디오 코딩의 복잡성을 감소시키고, 코딩 속도를 증가시키고, 및/또는 코딩 효율을 증가시키기 위한 인코더 및 디코더 설계를 제공한다. 구체적으로, 본 개시는 제한 코딩 트리를 구현하기 위한 메커니즘을 포함한다. 이러한 제한 코딩 트리를 지정된 CTU에 적용하면, 코덱 파이프라인 블록 처리 메커니즘에 맞추는 방식으로 해당 코딩 트리 노드가 분할된다. 따라서, CTU는 파이프라인 블록 경계에 맞추는 CU로 분할된다. 이는 결국, 파이프라인 블록 경계를 변경하거나 파이프라인 블록 기반 처리를 변경하여 각각의 CU가 개별 유닛으로 코딩될 수 있도록 별도의 메커니즘을 제공할 필요성을 완화시킨다. 따라서, 여기서 논의된 실시 예는 처리 및/또는 메모리 리소스 이용을 유지하거나 감소시키면서 방법(100), 코덱 시스템(200), 인코더(300) 및/또는 디코더(400)와 함께 적용될 때 감소된 복잡성 및 증가된 코딩 속도를 지원한다. 또한, 이러한 제한 코딩 트리를 적용하면 해당 코딩 트리 노드에 대한 분할 모드 옵션의 수를 감소시킨다. 이것은 선택된 분할 모드가 더 적은 비트로 시그널링될 수 있도록 하여 코딩 효율을 증가시키며, 코딩 효율은 데이터의 압축되지 않은 표현과 데이터의 압축된 표현을 비교하는 비트 레이트 감소/압축의 척도이다. 이와 같이, 여기서 논의된 실시 예는 방법(100), 코덱 시스템(200), 인코더(300) 및/또는 디코더(400)와 함께 적용될 때 증가된 코딩 효율을 지원한다. 따라서, 개시된 실시 예는 방법(100), 코덱 시스템(200), 인코더(300) 및/또는 디코더(400)가 그러한 시스템과 관련된 기술적 문제를 해결하는 것에 의해, 즉 계속 증가하는 복잡성을 줄이고 그러한 시스템의 속도를 증가시키면서 그러한 시스템과 관련된 유익한 압축을 여전히 지원하는 것에 의해, 보다 효율적인 방식으로 작동하게 한다. 방법(100), 코덱 시스템(200), 인코더(300) 및/또는 디코더(400)와 함께 사용하기 위한 다단계 인코더, 디코더 및 관련 방법의 특정 예시적인 실시 예가 이하에서 논의된다.
도 5는 CTU를 파이프라인 블록과 정렬되는 코딩 유닛(coding unit, CU)으로 파티셔닝하는 예시적인 메커니즘(500)을 나타내는 개략도이다. 메커니즘(500)은 비디오 프레임을 파티셔닝할 때 방법(100), 코덱 시스템(200), 인코더 시스템(300) 및/또는 디코더 시스템(400)에 의해 사용될 수 있다.
비디오 프레임이 수신되고 하나 이상의 슬라이스(540)로 파티셔닝된다. 슬라이스(540)는 동일한 프레임의 다른 영역과 별도로 인코딩되는 프레임의 공간적으로 구별되는 영역이다. 프레임의 영역은 대응하는 영역에 대해 할당된 코딩 메커니즘에 기반하여 슬라이스(540)에 할당된다. 단방향 인터 예측 및 양방향 인터 예측을 위해 지정된 프레임 영역은 각각 P 및 B 슬라이스(540)에 할당된다. 인트라 예측을 위해 지정된 프레임 영역은 I 슬라이스(540)에 할당된다.
슬라이스(540)는 CTU(541)로 나뉘어진다. CTU(541)는 완전한 제한 코딩 트리(547)(예를 들어, 코딩 트리(547)는 일반적으로 CTU(541) 경계를 가로 질러 걸쳐 있지 않음)의 적용을 수용할 수 있는 가장 큰 픽셀 블록이다. CTU(541) 크기는 구문에 의해 정의되며, 예를 들어 128 픽셀×128 픽셀, 64 픽셀×64 픽셀, 32 픽셀×32 픽셀 등이 될 수 있다. 이러한 크기는 일반적으로 너비×높이의 형태로 표현된다. CTU(541)는 또한 일부 예들에서 직사각형 일 수 있고, 예를 들어 128 픽셀×64 픽셀 일 수 있다. 이러한 크기는 일반적으로 너비×높이의 형태로 표현된다. 따라서, 128 픽셀×64 픽셀의 CTU(541)는 2배 더 넓다. CTU(541)은 루마 샘플과 크로마 샘플 모두를 포함한다. 루마 샘플은 빛의 값이고 크로마 샘플은 색상 값이다. 루마 샘플 및 크로마 샘플은 일부 컨텍스트에서 각각 루마 데이터 및 크로마 데이터라고도 지칭될 수 있다.
CTU(541)의 루마 샘플 및/또는 크로마 샘플을 파티셔닝하기 위해 제한 코딩 트리(547)가 적용된다. 코딩 트리는 자식 및/또는 부모 관계와 관련된 의사 결정 노드 목록(list of decision node)이다. 각 노드는 해당 샘플을 파티셔닝하는 분할 모드와 연관된다. 제한 코딩 트리(547)의 제1 노드(예: 루트(root) 노드)는 루마 샘플 및/또는 크로마 샘플을 대응하는 부분으로 파티셔닝하기 위해 분할 모드를 적용한다. 자식 노드는 추가로, 제한 코딩 트리(547)의 분기(branch)에 도달할 때까지 대응하는 부분을 더 작은 부분으로 세분화하기 위해 분할 모드를 반복적으로 적용한다. 코딩 트리 노드는 이용 가능한 분할 모드가 일부 코딩 트리 노드에 대해 제한되기 때문에 제한 코딩 트리 노드(547)이다. 구체적으로, 코딩 트리 노드 높이가 최대 TU 높이의 2배이고 코딩 트리 노드 너비가 최대 TU 너비의 2배(예: 128×128 픽셀 및/또는 2S×2S)인 경우, 분할 모드는 쿼드 트리 분할, 수평 이진 트리 분할 및 분할 없음으로 구성된 그룹에서 선택된다. 따라서, 코딩 트리는 수직 이진 트리 분할, 수직 트리플 트리 분할 및 수평 트리플 트리 분할의 그룹에서 코딩 트리 노드에 대한 분할 모드를 선택하는 데 제약이 있다. 또한, 코딩 트리 노드 높이가 최대 TU 높이보다 크지 않고 코딩 트리 노드 너비가 최대 TU 너비의 2배(예: 128×64 픽셀 및/또는 2S×S)인 경우, 분할 모드는 수직 이진 트리 분할 및 분할 없음으로 구성된 그룹에서 선택된다. 따라서, 코딩 트리는 수평 이진 트리, 쿼드 트리 분할, 수직 트리플 트리 및 수평 트리플 트리 그룹에서 코딩 트리 노드에 대한 분할 모드를 선택하는 데 제약이 있다.
TU는 인터 예측 및/또는 인트라 예측의 결과로 만들어진 잔차에 적용되는 변환 블록이라는 점에 유의해야 한다. 최대 TU 높이 및/또는 너비는 CU(546)의 잔차를 변환하는 데 적용될 수 있는 TU 블록의 최대 크기를 지시한다. CU(546)를 파이프라인 블록(549)에 할당할 때 최대 TU 크기가 사용될 수 있다. 따라서, 파이프라인 블록(549)의 경계와 맞추도록 분할 모드 선택을 결정하기 위해 최대 TU 크기가 사용될 수 있다.
제한 코딩 트리(547)는 각각, 루마 샘플을 루마 코딩 블록(543)으로 분할하고 크로마 샘플을 크로마 코딩 블록(545)으로 분할한다. 루마 코딩 블록(543)은 추가 압축을 위해 지정된 루마 샘플의 파티셔닝된 그룹이다. 크로마 코딩 블록(545)은 추가 압축을 위해 지정된 파티셔닝된 크로마 샘플 그룹이다. 색상 값의 전체 범위를 표현하기 위해, 각각의 루마 코딩 블록(543)에 대해, 적색 차이 크로마 블록 및 청색 차이 크로마 블록으로 표시되는 2개의 크로마 코딩 블록(545)이 있을 수 있다. 루마 코딩 블록(543) 및 관련 크로마 코딩 블록(545)은 CU(546)에 할당될 수 있다. CU(546)는 인터 예측 및/또는 인트라 예측을 통해 비디오 압축을 위해 전달되는 관련 픽셀 샘플 값의 그룹이다. 슬라이스(540)가 I 슬라이스일 때, CU(546)가 인트라 예측을 위해 전달된다. 슬라이스(540)가 P 슬라이스 또는 B 슬라이스일 때, CU(546)가 인터 예측을 위해 전달된다.
CU(546)는 CU(546)를 파이프라인 블록(549)에 할당하는 것에 의해 비디오 압축을 위해 전달된다. 파이프라인 블록(549)은 그룹으로서 인코딩 및/또는 디코딩될 수 있는 CTU(541)의 분할된 부분이다. 따라서, 제1 파이프라인 블록(549)에 할당된 CU(546)는 제2 파이프라인 블록(549)에 할당된 CU(546)로 진행하기 전에 코딩된다. 파이프라인 블록(549)은 일반적으로 프레임의 슬라이스(540)를 코딩할 때 왼쪽에서 오른쪽으로 및 위에서 아래로와 같은 미리 정의된 순서로 코딩된다. 전술한 바와 같이, 파이프라인 블록(549)은 최대 TU 크기에 기반하여 할당될 수 있다. CU(546)가 하나 이상의 파이프라인 블록(549)에 존재하면, 예를 들어 전체 CU(546)를 허용하도록 파이프라인 블록(549) 크기를 변경하는 것에 의해, CU(546)를 코딩하기 위해 추가적인 복잡성이 추가된다. 그러나, 여기에 설명된 규칙에 따라 제한 코딩 트리(547)를 적용하면 파이프라인 블록(549) 경계와 맞추는 CU(546)가 생성될 수 있다. 따라서, 이러한 특수 처리를 피할 수 있다.
도 6은 각각 제한 코딩 트리(547) 및 CTU(541)와 실질적으로 유사할 수 있는 CTU에 적용되는 예시적인 코딩 트리(600)를 도시한다. 따라서, 코딩 트리(600)는 비디오 프레임을 파티셔닝할 때 방법(100), 코덱 시스템(200), 인코더 시스템(300), 디코더 시스템(400) 및/또는 메커니즘(500)에 의해 사용될 수 있다.
코딩 트리(600)는 CTU를 CU를 구성하는 CB로 파티셔닝하기 위해 사용된다. 코딩 트리(600)는 예시된 예에서, 예를 들어 루트 노드(611), 제2 계층 노드(615) 및 제3 계층 노드(617)를 포함하는 복수의 코딩 트리 노드를 포함한다. 3개의 계층 노드가 도시되어 있지만, CTU 크기와 최소 블록 크기에 따라 임의의 수의 계층이 사용될 수 있다. 노드(611, 615 및 617)가 도 6에 검은 점으로 도시되어 있다. 여기서 사용되는 코딩 트리(600) 노드는 블록을 복수의 더 작은 픽셀 블록으로 파티셔닝하기 위해 분할 모드가 적용될 수 있는 대응 크기의 픽셀 블록이다. 도시된 예에서, 노드는 해당 블록을 4개의 작은 블록으로 분할하는 쿼드 트리 분할 모드를 사용한다. 이 프로세스는 미리 정의된 조건에 도달할 때까지 계속될 수 있다. 이러한 미리 정의된 조건은 최소 블록 크기 및/또는 블록의 신호 특성(예를 들어, 주파수 도메인에서 블록의 데이터의 계수)을 포함할 수 있다. 예를 들어, 루트 노드(611)에서, 블록(이 경우, CTU)을 더 작은 블록으로 파티셔닝하기 위해 분할 모드가 적용될 수 있다. 해당 파티션을 가지는 분할 모드가 선택되어, 상이한 값을 가지는 픽셀을 상이한 블록으로 분리하고, 비슷한 값을 가진 픽셀을 공통 블록으로 그룹화한다. 루트 노드(611)에서 파티셔닝된 블록은 제2 계층 노드(615)가 된다. 각 노드에서, 블록에 대해 신호 특성과 블록 크기가 확인된다. 신호 특성이 블록이 상대적으로 유사한 값의 픽셀을 포함하고 있음을 지시하는 경우, 블록은 더 이상 분할되지 않을 수 있다. 또한, 블록이 최소 크기에 도달하는 경우, 블록이 더 이상 분할되지 않을 수 있다. 도시된 예에서, 제2 계층 노드(615) 중 3개는 대응하는 파티션을 가지는 추가 분할 모드를 적용하는 것에 의해 분할되어 제3 계층 노드(617)가 된다. 이 예에서, 제2 계층 노드(615) 중 하나는 추가로 분할되지 않는데, 그 이유는 예를 들어 블록의 샘플과 관련된 신호 특성(예를 들어, 주파수 도메인의 계수)이 블록이 상대적으로 유사한 값의 픽셀을 포함한다는 것을 지시하기 때문이다.
제한 코딩 트리로 사용될 때, 코딩 트리(600)의 노드(611, 615, 617)는 특정 분할 모드만이 선택될 수 있도록 제한된다. 선택할 수 있는 분할 모드는 해당 노드의 크기에 따라 다르다. 이러한 제약으로 인해 결과적으로 CU를 일부 예제 코덱에서 사용되는 파이프라인 블록 경계와 맞추는 CTU 파티션이 생성된다.
도 7은 제한 코딩 트리(547) 및/또는 코딩 트리(600)와 같은 코딩 트리에 사용되는 분할 모드(700)의 예시 세트를 예시하는 개략도이다. 이와 같이, 분할 모드 세트(700)는 방법(100), 코덱 시스템(200), 인코더 시스템(300) 및/또는 디코더 시스템(400)을 작동하여 비디오 프레임을 파티셔닝할 때 메커니즘(500)에서 사용될 수 있다. 분할 모드 세트(700)는 쿼드 트리(quad-tree, QT)(701), 수직 이진 트리(vertical binary tree, VBT)(703), 수평 이진 트리(horizontal binary tree, HBT)(705), 수직 트리플 트리(vertical triple tree, VTT)(707) 및 수평 트리플 트리(horizontal triple tree, HTT)(709)를 포함한다. 코딩 트리의 각 노드는 분할 모드(700) 세트 중 하나를 샘플의 블록에 적용한다. 따라서, 코딩 트리의 부모 노드는 분할 모드를 샘플 그룹에 적용하여 2개의 블록, 또는 3개의 블록 또는 4개의 블록을 만든다(분할 모드에 따라 다름). 그런 다음, 자식 노드는 더 많은 분할 모드를 적용하여 부모 노드에 의해 만들어진 블록을 추가로 나눈다. 자식 노드의 자식 노드는 코딩 트리의 끝에 도달할 때까지 이러한 블록을 더 나눌 수 있다. 특정 노드에 대한 분할 모드는 분할 모드 세트(700)(예: 인코더에서 RDO 프로세스에 의해)로부터 선택되어 인트라 예측 및/또는 인터 예측에 의한 효율적인 압축을 지원하기 위해 유사한 값을 가진 샘플을 그룹화한다. 디코더에서, 코딩 트리, 서브 트리 및 분할 모드는 예를 들어 슬라이스, CTU 및/또는 대응하는 코딩 유닛에 대한 파라미터 세트의 구문에 저장된 바와 같이 비트스트림으로부터 결정될 수 있다.
QT(701)는 코딩 블록을 4개의 동일한 서브블록으로 분할하는 분할 모드이다. 따라서, QT(701)는 루마 샘플 블록을 동일한 크기의 루마 샘플 블록 4개로 분할한다. 또한, QT(701)는 크로마 샘플 블록을 동일한 크기의 더 작은 크로마 샘플 블록 4개로 분할한다.
VBT(703)는 코딩 블록을 동일한 크기의 2개의 서브블록으로 분할하는 분할 모드이다. 이러한 서브블록은 원래 코딩 블록의 높이와 동일하고 그리고 원래 코딩 블록의 너비의 절반과 동일하다. 따라서, VBT(703)는 루마 샘플의 부모 블록을 루마 샘플의 부모 블록의 높이와 동일하고 그 너비의 절반과 동일한 크기를 가지는 루마 샘플의 2개의 자식블록으로 분할한다. 또한, VBT(703)는 크로마 샘플의 부모 블록을 크로마 샘플의 부모 블록의 높이와 동일하고 그 너비의 절반과 동일한 크기를 가지는 크로마 샘플의 2개의 자식블록으로 분할한다.
HBT(705)는 코딩 블록을 동일한 크기의 2개의 서브블록으로 분할하는 분할 모드이다. 이러한 서브블록은 원래 코딩 블록의 너비와 동일하고 그리고 원래 코딩 블록의 높이의 절반과 동일하다. 따라서, HBT(705)는 루마 샘플의 부모 블록을 루마 샘플의 부모 블록의 너비와 동일하고 그 높이의 절반과 동일한 크기를 가지는 루마 샘플의 2개의 자식블록으로 분할한다. 또한, HBT(705)는 크로마 샘플의 부모 블록을 크로마 샘플의 부모 블록의 너비와 동일하고 그 높이의 절반과 동일한 크기를 가지는 크로마 샘플의 2개의 자식블록으로 분할한다.
VTT(707)는 코딩 블록을 3개의 서브블록으로 분할하는 분할 모드이다. 이러한 서브블록은 원래 코딩 블록과 동일한 높이를 갖는다. 서브블록 중 하나는 원래 코딩 블록의 너비의 절반을 가지며, 서브블록 중 2개는 원래 코딩 블록의 1/4의 너비를 갖는다. 따라서, VTT(707)는 루마 샘플의 부모 블록을 루마 샘플의 부모 블록과 높이가 동일하고, 루마 샘플의 부모 블록 너비의 1/4, 1/2 및 1/4을 각각 갖는 루마 샘플의 3개의 자식 블록으로 분할한다. 또한 VTT(707)은 크로마 샘플의 부모 블록을 크로마 샘플의 부모 블록과 높이가 동일하고 크로마 샘플의 부모 블록 너비의 1/4, 1/2 및 1/4을 각각 갖는 크로마 샘플의 3개의 자식 블록으로 분할한다.
HTT(709)는 코딩 블록을 3개의 서브블록으로 분할하는 분할 모드이다. 이러한 서브블록은 원래 코딩 블록과 동일한 너비를 갖는다. 서브블록 중 하나는 원래 코딩 블록 높이의 절반을 가지며, 서브블록 중 2개는 원래 코딩 블록 높이의 1/4을 갖는다. 따라서, HTT(709)는 루마 샘플의 부모 블록을 루마 샘플의 부모 블록과 너비가 동일하고 루마 샘플의 부모 블록 높이의 1/4, 1/2 및 1/4을 각각 갖는 루마 샘플의 3개의 자식 블록으로 분할한다. 또한, HTT(709)는 크로마 샘플의 부모 블록을 크로마 샘플의 부모 블록과 너비가 동일하고 크로마 샘플의 부모 블록 높이의 1/4, 1/2 및 1/4을 각각 갖는 크로마 샘플의 3개의 자식 블록으로 분할한다.
도 8 내지 9는 분할 모드를 선택하여 코딩 트리 노드를 파티셔닝할 때 제한 코딩 트리에 의해 적용되는 예시적인 제약을 예시하는 개략도(800 및 900)이다. 구체적으로, 도(800)에서, 코딩 트리 노드(810)는 제한 코딩 트리(547) 및/또는 코딩 트리(600)와 같은 코딩 트리의 적용 동안 분할 모드(700)와 같은 분할 모드에 의해 분할될 것이다. 이와 같이, 방법(100), 코덱 시스템(200), 인코더 시스템(300), 및/또는 디코더 시스템(400)을 작동하여 비디오 프레임을 파티셔닝할 때, 메커니즘(500)에서 개략도(800)가 사용될 수 있다.
코딩 트리 노드(810)는 전체 CTU 또는 CTU의 분할로 인한 자식 노드일 수 있다. 코딩 트리 노드(810)는 2S×2S 노드이며, 이는 코딩 트리 노드(810)가 최대 TU의 높이의 적어도 2배이고 최대 TU의 너비의 2배임을 지시한다. 여기에 설명된 제약에 따르면, 코딩 트리 노드(810)의 차원(dimension)으로 인해, 코딩 트리 노드(810)는 QT 분할(801), HBT 분할(805) 또는 분할 없음(802)에 의해서만 분할될 수 있다. QT 분할(801) 및 HBT 분할(805)은 각각 QT(701) 및 HBT(705)와 실질적으로 유사하다. 분할 없음(802)은 코딩 트리 노드(810)가 더 이상 분할되지 않고 CU가 됨을 지시한다.
구체적으로, 이 예에서는 쿼드 트리 트리플 트리 코딩 트리 구조가 이용될 수 있다. 최대 CTU 크기는 128×128이고 최대 TU 크기는 64×64일 수 있다. 최대 이진 트리 크기(이진 트리 분할 및 트리플 트리 분할을 사용할 수 있는 최대 크기 노드를 지시함)는 최대 128×128로 설정될 수 있다. 이 예에서, 2S×2S 코딩 트리 노드(810)는 128×128 노드(CTU 임)일 수 있다. 이 경우에, 트리플 트리 분할로부터의 자식 노드가 하나 이상의 S×S 파이프라인 블록에 의해 커버될 수 있기 때문에, 이 코딩 트리 노드(810)에 대해 수평 트리플 트리 분할 및 수직 트리플 트리 분할이 허용되지 않는다. 또한, 이러한 분할은 이러한 시스템에 의해 일반적으로 사용되는 쿼드 트리 노드 처리 순서와 다른 순서로 S×S 파이프라인 블록이 처리되도록할 수 있기 때문에, 이 코딩 트리 노드(810)에 대해 수직 이진 트리 분할도 허용되지 않는다. 따라서, 노드는 쿼드 트리 분할 또는 수평 이진 트리 분할에 의해서만 분할될 수 있다.
따라서, 코딩 트리 노드(810)에 대한 분할 모드는 한 쌍의 플래그/빈에 의해 시그널링될 수 있다. 구체적으로, 디코더는 빈(예를 들어, qt_split_cu_flag)을 파싱(parse)하여, 128×128 코딩 트리 노드(810)가 QT 분할(801)에 의해 분할되는지를 결정할 수 있다. 128×128 코딩 트리 노드(810)가 QT 분할(801)에 의해 분할되면, 4개의 64×64 자식 노드가 생성된다. 128×128 코딩 트리 노드(810)가 QT 분할(801)에 의해 분할되지 않으면, 제2 빈(예를 들어, mtt_split_cu_flag)이 비트스트림으로부터 파싱되어 코딩 트리 노드(810)가 분할되지 않아야 하는지를 판정하여, 결과적으로 분할 없음(802)이거나, 또는 HBT 분할(805)에 의해 분할된다. 제2 빈이 코딩 트리 노드(810)가 분할될 것임을 지시하면, HBT 분할(805)이 추론되고 2개의 128×64 노드가 수평 이진 분할에 의해 생성된다. HBT 분할(805)이 분할되지 않으면, 128×128 CU가 형성된다. CU는 4개의 64×64 TU와 128×128 예측 유닛(PU)을 갖는 것으로 추정된다. 128×128 PU는 4개의 64×64 PU로 나뉠 수 있으며, 4개의 TU와 해당 PU는 4개의 64×64 파이프라인 블록을 형성한다. 그런 다음 파이프라인 블록을 쿼드 트리 노드 처리 순서로 처리할 수 있으며, 예를 들어 왼쪽 상단 TU가 먼저 처리된 다음 오른쪽 상단 TU, 왼쪽 하단 TU 및 오른쪽 하단 TU가 처리된다.
도(900)에서, 코딩 트리 노드(910)는 제한 코딩 트리(547) 및/또는 코딩 트리(600)와 같은 코딩 트리의 적용 동안 분할 모드(700)와 같은 분할 모드에 의해 분할될 것이다. 이와 같이, 방법(100), 코덱 시스템(200), 인코더 시스템(300), 및/또는 디코더 시스템(400)을 작동하여 비디오 프레임을 파티셔닝할 때, 메커니즘(500)에서 개략도(900)가 사용될 수 있다.
코딩 트리 노드(910)는 전체 CTU 또는 CTU의 분할로 인한 자식 노드일 수 있다. 코딩 트리 노드(910)는 코딩 트리 노드(910) 높이가 최대 TU 높이보다 크지 않고 코딩 트리 노드(910) 너비가 최대 TU 너비의 2배임을 지시하는 2S×S 노드이다. 여기서 설명된 제약에 따르면, 코딩 트리 노드(910)의 차원으로 인해, 코딩 트리 노드(910)는 VBT 분할(903)에 의해서만 분할되거나 분할 없음(902)으로 분할될 수 있다. VBT 분할(903)은 VBT(703)와 실질적으로 유사하다. 분할 없음(902)은 코딩 트리 노드(910)가 더 이상 분할되지 않고 CU가 됨을 지시한다.
예를 들어, 2S×S 코딩 트리 노드(910)는 128×64 노드(CTU 임)일 수 있다. 128×64 코딩 트리 노드(910)는 64×64 블록 파이프라인 구조를 깨지 않기 위해, 수평 트리플 트리 분할, 수직 트리플 트리 분할 또는 수평 이진 트리 분할을 사용하도록 허용되지 않는다. 128×64 코딩 트리 노드(910)는 또한 쿼드 트리 분할에 의해 분할될 수 없다. 이는 쿼드 트리-이진 트리플 트리 구조에서, 이진 트리 분할 또는 트리플 트리 분할에 의해 생성된 노드는 쿼드 트리 분할에 의해 분할될 수 없기 때문이다. 이 경우, 128×64 코딩 트리 노드(910)에 허용되는 유일한 분할은 VBT 분할(903)이다. 따라서, 코딩 트리 노드(910)가 분할되면, 분할 방향 정보(예: mtt_split_cu_vertical_flag) 및 분할 유형 정보(예: mtt_split_cu_binary_flag)가 시그널링되지 않을 수 있다. 또한, 128×64 코딩 트리 노드(910)로부터 분할된 64×64 노드는 트리플 트리 분할 또는 이진 트리 분할에 의해 분할될 수 있다는 점에 유의해야 한다.
도 10은 인코딩 동안 CTU(541)와 같은 CTU의 코딩 트리 노드(810)와 같은 코딩 트리 노드를 파티셔닝하기 위해 제한 코딩 트리(547) 및/또는 코딩 트리(600)와 같은 제한 코딩 트리를 적용하는 예시적인 방법(1000)의 흐름도이다. 방법(1000)은 분할 모드 세트(700)를 사용하는 것에 의해 메커니즘(500)을 구현하기 위해 사용될 수 있다. 방법(1000)은 방법(100), 코덱 시스템(200) 및/또는 인코더 시스템(300)에서 사용되어 파이프라인 블록에서 사용하기 위해 비디오 프레임으로부터의 샘플을 CU로 분할할 수 있다.
단계(1001)에서, 이미지는 인코더에서 슬라이스로 파티셔닝된다. 슬라이스는 추가로 처리되어 하나 이상의 CTU를 만든다. 또한, CTU가 적어도 하나의 코딩 트리 노드를 포함하도록 코딩 트리가 CTU에 대해 결정된다.
단계(1003)에서, 인코더는 코딩 트리 노드의 높이가 최대 TU 높이의 2배이고 코딩 트리 노드의 너비가 최대 TU 너비의 2배인 것으로 결정한다. 구체적으로, 인코더는 코딩 트리 노드가 코딩 트리 노드(810)와 같은 2S×2S 노드(예를 들어, 128×128 픽셀)임을 결정한다.
단계(1005)에서, 인코더는 코딩 트리 노드 높이가 최대 TU 높이의 2배이고 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정에 기반하여 코딩 트리 노드에 대한 분할 모드를 선택한다. 구체적으로, 분할 모드는 쿼드 트리 분할, 수평 이진 트리 분할 및 분할 없음을 포함하는(예를 들어 실질적으로 구성됨) 그룹에서 선택된다. 예를 들어, 분할 모드는 코딩 트리 노드 높이가 최대 TU 높이의 2배이고 코딩 트리 노드 너비는 최대 TU 너비의 2배라는 결정 및 코딩에 기반하여 수직 이진 트리 분할, 수직 트리플 트리 분할 및 수평 트리플 트리 분할 중에서 선택되지 않는다. 단계(1007)에서, 인코더는 분할 모드를 코딩 트리 노드에 적용하여 하나 이상의 CU를 만들고 CU를 비트스트림으로 인코딩한다.
단계(1009)에서, 인코더는 단계(1005)에서 선택된 코딩 트리 노드에 대한 분할 모드를 비트스트림에서 시그널링할 수 있다. 예를 들어, 인코더는 분할 모드가 쿼드 트리 분할인지를 지시하는 제1 플래그를 인코딩하고 분할 모드가 수평 이진 트리 분할인지 또는 분할 없음인지를 지시하는 제2 플래그를 인코딩할 수 있다. 예를 들어 제1 플래그는 qt_split_cu_flag일 수 있고 제2 플래그는 mtt_split_cu_flag일 수 있다. 단계(1009)는 예에 따라 단계(1007) 이전 또는 이후에 발생할 수 있음에 유의해야 한다. 단계(1011)에서, 인코더는 비디오 스트림으로 재구성하고 사용자에게 디스플레이하기 위해 디코더를 향해 비트스트림을 전송한다.
도 11은 인코딩하는 동안 CTU(541)와 같은 CTU의 코딩 트리 노드(910)와 같은 코딩 트리 노드를 파티셔닝하기 위해 제한 코딩 트리(547) 및/또는 코딩 트리(600)와 같은 제한 코딩 트리를 적용하는 다른 예시적인 방법(1100)의 흐름도이다. 방법(1100)은 분할 모드 세트(700)를 사용하는 것에 의해 메커니즘(500)을 구현하기 위해 사용될 수 있다. 방법(1100)은 방법(100), 코덱 시스템(200) 및/또는 인코더 시스템(300)에서 이용되어 파이프라인 블록에서 사용하기 위해 비디오 프레임으로부터의 샘플을 CU로 분할할 수 있다.
단계(1101)에서, 이미지는 인코더에서 슬라이스로 파티셔닝된다. 슬라이스는 추가로 처리되어 하나 이상의 CTU를 만든다. 또한, CTU가 적어도 하나의 코딩 트리 노드를 포함하도록 코딩 트리가 CTU에 대해 결정된다.
단계(1103)에서, 인코더는 코딩 트리 노드의 높이가 최대 TU 높이보다 크지 않고 코딩 트리 노드의 너비가 최대 TU 너비의 2배인 것으로 결정한다. 구체적으로, 인코더는 코딩 트리 노드가 코딩 트리 노드(910)와 같은 2S×S 노드(예를 들어, 128×64 픽셀)임을 결정한다.
단계(1105)에서, 인코더는 코딩 트리 노드 높이가 최대 TU 높이보다 크지 않고 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정에 기반하여 코딩 트리 노드에 대한 분할 모드를 선택한다. 구체적으로, 분할 모드는 수직 이진 트리 분할 및 분할 없음을 포함하는(예를 들어 실질적으로 구성됨) 그룹에서 선택된다. 예를 들어, 분할 모드는 코딩 트리 노드 높이가 최대 TU 높이보다 크지 않고 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정에 기반하여, 수평 이진 트리, 쿼드 트리 분할, 수직 트리플 트리 및 수평 트리플 트리 중에서 선택되지 않는다. 단계(1007)에서, 인코더는 분할 모드를 코딩 트리 노드에 적용하여 하나 이상의 CU를 만들고 CU를 비트스트림으로 인코딩한다.
단계(1109)에서, 인코더는 단계(1105)에서 선택된 코딩 트리 노드에 대한 분할 모드를 비트스트림에서 시그널링할 수 있다. 예를 들어, 인코더는 분할 모드가 수직 이진 트리 분할인지 또는 분할 없음을 지시하는 제1 플래그를 인코딩하는 것에 의해, 코딩 트리 노드에 대한 분할 모드를 비트스트림에서 시그널링할 수 있다. 단계(1109)는 예에 따라 단계(1107) 이전 또는 이후에 발생할 수 있음에 유의해야 한다. 단계(1111)에서, 인코더는 비디오 스트림으로 재구성하고 사용자에게 디스플레이하기 위해 디코더를 향해 비트스트림을 전송한다.
도 12는 디코딩하는 동안 CTU(541)와 같은 CTU의 코딩 트리 노드(810)와 같은 코딩 트리 노드를 파티셔닝하기 위해 제한 코딩 트리(547) 및/또는 코딩 트리(600)와 같은 제한 코딩 트리를 적용하는 예시적인 방법(1200)의 흐름도이다. 방법(1200)은 분할 모드의 세트(700)를 사용하는 것에 의해 메커니즘(500)을 구현하기 위해 사용될 수 있다. 방법(1200)은 방법(100), 코덱 시스템(200) 및/또는 디코더 시스템(400)에서 사용되어 파이프라인 블록에서의 이용을 위해 비디오 프레임으로부터의 샘플을 CU로 파티셔닝할 수 있다.
단계(1201)에서, 이미지 데이터를 포함하는 비트스트림이 디코더에서 수신된다. 디코더는 이미지 데이터를 미리 결정된 크기의 슬라이스로 파티셔닝할 수 있다. 슬라이스는 미리 결정된 알고리즘, 슬라이스 크기 등에 따라 적어도 하나의 CTU를 만들도록 추가로 처리된다. 또한, 코딩 트리는 예를 들어 비트스트림으로부터 CTU에 대해 결정되므로, CTU는 적어도 하나의 코딩 트리 노드를 포함한다.
단계(1203)에서, 디코더는 코딩 트리 노드의 높이가 최대 TU 높이의 2배이고 코딩 트리 노드의 너비가 최대 TU 너비의 2배인 것으로 결정한다. 구체적으로, 디코더는 코딩 트리 노드가 코딩 트리 노드(810)와 같은 2S×2S 노드(예를 들어, 128×128 픽셀)임을 결정한다.
단계(1205)에서, 디코더는 코딩 트리 노드 높이가 최대 TU 높이의 2배이고 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정에 기반하여, 비트스트림을 파싱하여 코딩 트리 노드에 대한 분할 모드를 결정한다. 구체적으로, 분할 모드는 (예를 들어 실질적으로 구성됨) 쿼드 트리 분할, 수평 이진 트리 분할 및 분할 없음을 포함하는 그룹에서 선택된다. 예를 들어, 분할 모드는 코딩 트리 노드 높이가 최대 TU 높이의 2배이고 코딩 트리 노드 너비는 최대 TU 너비의 2배라는 결정에 기반하여, 수직 이진 트리 분할, 수직 트리플 트리 분할 및 수평 트리플 트리 분할 중에서 선택되지 않는다. 예를 들어, 비트스트림을 파싱하여 코딩 트리 노드에 대한 분할 모드를 결정하는 것은 제1 플래그를 파싱하여 분할 모드가 쿼드 트리 분할인지를 판정하는 것을 포함할 수 있다. 비트스트림을 파싱하여 코딩 트리 노드에 대한 분할 모드를 결정하는 것은 제2 플래그를 파싱하여 분할 모드가 수평 이진 트리 분할인지 또는 분할 없음인지를 판정하는 것을 더 포함할 수 있다. 일부 예에서, 제1 플래그는 qt_split_cu_flag이고 제2 플래그는 mtt_split_cu_flag이다.
단계(1207)에서, 디코더는 분할 모드를 코딩 트리 노드에 적용하여 하나 이상의 CU를 획득한다. 단계(1209)에서, 디코더는 비트스트림에 기반하여 CU를 디코딩하여 이미지를 만든다. 디코더는 단계(1211)에서 이미지를 디스플레이로 전달할 수 있다.
도 13은 디코딩동안 CTU(541)와 같은 CTU의 코딩 트리 노드(910)와 같은 코딩 트리 노드를 파티셔닝하기 위해 제한 코딩 트리(547) 및/또는 코딩 트리(600)와 같은 제한 코딩 트리를 적용하는 다른 예시적인 방법(1300)의 흐름도이다. 방법(1300)은 분할 모드 세트(700)를 사용하는 것에 의해 메커니즘(500)을 구현하기 위해 사용될 수 있다. 방법(1300)은 방법(100), 코덱 시스템(200) 및/또는 디코더 시스템(400)에서 사용되어 파이프라인 블록에서 사용하기 위해 비디오 프레임으로부터의 샘플을 CU로 파티셔닝할 수 있다.
단계(1301)에서, 이미지 데이터를 포함하는 비트스트림이 디코더에서 수신된다. 디코더는 이미지 데이터를 미리 결정된 크기의 슬라이스로 파티셔닝할 수 있다. 슬라이스는 미리 결정된 알고리즘, 슬라이스 크기 등에 따라 적어도 하나의 CTU를 만들도록 추가로 처리된다. 또한, 코딩 트리는 예를 들어 비트스트림으로부터 CTU에 대해 결정되어, CTU는 적어도 하나의 코딩 트리 노드를 포함한다.
단계(1303)에서 디코더는 코딩 트리 노드의 높이가 최대 TU 높이보다 크지 않고 코딩 트리 노드의 너비가 최대 TU 너비의 2배인 것으로 결정한다. 구체적으로, 디코더는 코딩 트리 노드가 코딩 트리 노드(910)와 같은 2S×S 노드(예를 들어, 128×64 픽셀)인 것으로 결정한다.
단계(1305)에서, 디코더는 코딩 트리 노드 높이가 최대 TU 높이보다 크지 않고 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정에 기반하여, 비트스트림을 파싱하여 코딩 트리 노드에 대한 분할 모드를 결정한다. 구체적으로, 분할 모드는 수직 이진 트리 분할 및 분할 없음을 포함하는(예를 들어 실질적으로 구성됨) 그룹에서 선택된다. 예를 들어, 분할 모드는 코딩 트리 노드 높이가 최대 TU 높이보다 크지 않고 코딩 트리 노드 너비는 최대 TU 너비의 2배라는 결정에 기반하여, 수평 이진 트리 분할, 쿼드 트리 분할, 수직 트리플 트리 분할 및 수평 트리플 트리 분할 중에서 선택되지 않는다. 예를 들어, 비트스트림을 파싱하여 코딩 트리 노드에 대한 분할 모드를 결정하는 것은 제1 플래그를 파싱하여 분할 모드가 수직 이진 트리 분할인지 또는 분할 없음인지를 판정하는 것을 포함할 수 있다.
단계(1307)에서, 디코더는 분할 모드를 코딩 트리 노드에 적용하여 하나 이상의 CU를 획득한다. 단계(1309)에서, 디코더는 비트스트림에 기반하여 CU를 디코딩하여 이미지를 만들다. 디코더는 단계(1311)에서 이미지를 디스플레이로 전달할 수 있다.
도 14는 예시적인 비디오 코딩 디바이스(1400)의 개략도이다. 비디오 코딩 디바이스(1400)는 여기에 설명된 바와 같이 개시된 예들/실시 예들을 구현하기에 적합하다. 비디오 코딩 디바이스(1400)는 다운스트림 포트(1420), 업스트림 포트(1450), 및/또는 네트워크를 통해 업스트림 및/또는 다운스트림 데이터를 통신하기 위한 송신기 및/또는 수신기를 포함하는 트랜시버 유닛(Tx/Rx)(1410)을 포함한다. 비디오 코딩 디바이스(1400)는 또한 데이터를 처리하기 위한 로직 유닛 및/또는 중앙 처리 유닛(central processing unit, CPU)을 포함하는 프로세서(1430) 및 데이터를 저장하기 위한 메모리(1432)를 포함한다. 비디오 코딩 디바이스(1400)는 또한 광 또는 무선 통신 네트워크를 통한 데이터 통신을 위해 업스트림 포트(1450) 및/또는 다운스트림 포트(1420)에 결합된 광-전기(optical-to-electrical, OE) 컴포넌트, 전기-광(electrical-to-optical, EO) 컴포넌트 및/또는 무선 통신 컴포넌트를 포함할 수 있다. 비디오 코딩 디바이스(1400)는 또한 사용자와 데이터를 통신하기 위한 입력 및/또는 출력(I/O) 디바이스(1460)를 포함할 수 있다. I/O 디바이스(1460)는 비디오 데이터를 디스플레이하는 디스플레이, 오디오 데이터를 출력하는 스피커 등과 같은 출력 디바이스를 포함할 수 있다. I/O 디바이스(1460)는 또한 키보드, 마우스, 트랙볼 등과 같은 입력 디바이스 및/또는 이러한 출력 디바이스와 상호 작용하기 위한 대응하는 인터페이스를 포함할 수 있다.
프로세서(1430)는 하드웨어 및 소프트웨어로 구현된다. 프로세서(1430)는 하나 이상의 CPU 칩, 코어(예를 들어, 멀티 코어 프로세서), FPGA(field-programmable gate array), ASIC(application specific integrated circuits) 및 DSP(digital signal processor)로 구현될 수 있다. 프로세서(1430)는 다운스트림 포트(1420), Tx/Rx(1410), 업스트림 포트(1450), 메모리(1432) 및/또는 I/O 디바이스(1460)와 통신한다. 프로세서(1430)는 코딩 모듈(1414)을 포함한다. 코딩 모듈(1414)은 여기에서 설명된 개시된 실시 예(예를 들어, 인코더, 디코더, 코덱, 방법, 또는 다른 메커니즘)를 구현한다. 이와 같이, 코딩 모듈(1414)은 비디오 코딩 디바이스(1400)의 기능을 개선할 뿐만 아니라 비디오 코딩 기술에 특정된 문제를 해결한다. 또한, 코딩 모듈(1414)은 비디오 코딩 디바이스(1400)를 상이한 상태로 변환한다. 다르게는, 코딩 모듈(1414)은 메모리(1432)에 저장되고 프로세서(1430)에 의해 실행되는 명령으로서(예: 비 일시적 매체에 저장된 컴퓨터 프로그램 제품으로서) 구현될 수 있다.
메모리(1432)는 디스크, 테이프 드라이브, 솔리드 스테이트 드라이브, 읽기 전용 메모리(read only memory, ROM), 랜덤 액세스 메모리(random access memory, RAM), 플래시 메모리, TCAM(ternary content-addressable memory), 정적 랜덤 액세스 메모리(static random-access memory, SRAM)와 같은 하나 이상의 메모리 유형을 포함한다. 메모리(1432)는 오버 플로우(over-flow) 데이터 저장 디바이스로 사용될 수 있고, 그러한 프로그램이 실행을 위해 선택될 때 프로그램을 저장하고, 프로그램 실행 중에 읽혀지는 명령 및 데이터를 저장하기 위해 사용될 수 있다.
도 15는 CTU의 코딩 트리 노드를 파티셔닝하기 위해 제한 코딩 트리를 적용하기 위한 예시적인 시스템(1500)의 개략도이다. 시스템(1500)은 작동 방법(100), 메커니즘(500), 방법(1000), 방법(1100), 방법(1200), 방법(1300), 코덱 시스템(200), 인코더(300) 및/또는 디코더(400)를 구현할 수 있는 비디오 인코더(1502) 및 비디오 디코더(1510)를 포함한다. 또한, 비디오 인코더(1502) 및 비디오 디코더(1510)는 분할 모드 세트(700)를 사용하는 것에 의해 제한 코딩 트리(547) 및/또는 코딩 트리(600)로의 파티셔닝을 수행할 수 있다. 구체적으로, 비디오 인코더(1502) 및 비디오 디코더(1510)는 각각의 도(800 및 900)에서 코딩 트리 노드(810 및/또는 910)에 적용을 위해 제한되는 코딩 트리를 적용할 수 있다.
일 예에서, 비디오 인코더(1502)는 적어도 하나의 코딩 트리 노드를 갖는 적어도 하나의 CTU를 만들기 위해 이미지를 파티셔닝하는 파티셔닝 모듈(1501)을 포함한다. 비디오 인코더(1502)는 또한 코딩 트리 노드의 높이가 최대 TU 높이의 2배이고 코딩 트리 노드의 너비가 최대 TU 너비의 2배인 것으로 결정하는 크기 결정 모듈(1503)을 포함한다. 비디오 인코더(1502)는 또한 코딩 트리 노드 높이가 최대 TU 높이의 2배이고 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정에 기반하여 코딩 트리 노드에 대한 분할 모드를 선택하는 분할 모드 선택 모듈(1505)을 포함하며, 분할 모드는 수평 이진 트리 분할 및 분할 없음 중에서 선택된다. 비디오 인코더(1502)는 또한 분할 모드를 코딩 트리 노드에 적용하여 하나 이상의 CU를 만드는 분할 모드 적용 모듈(1507)을 포함한다. 비디오 인코더(1502)는 또한 CU를 비트스트림으로 인코딩하는 인코딩 모듈(1508)을 포함한다. 비디오 인코더(1502)는 또한 디코더를 향해 비트스트림을 전송하는 전송 모듈(1509)을 포함한다.
다른 예에서, 비디오 인코더(1502)는 적어도 하나의 코딩 트리 노드를 갖는 적어도 하나의 CTU를 만들기 위해 이미지를 파티셔닝하는 파티셔닝 모듈(1501)을 포함한다. 비디오 인코더(1502)는 또한 코딩 트리 노드의 높이가 최대 TU 높이보다 크지 않고 코딩 트리 노드의 너비가 최대 TU 너비의 2배인 것으로 결정하는 크기 결정 모듈(1503)을 포함한다. 비디오 인코더(1502)는 또한 코딩 트리 노드 높이가 최대 TU 높이보다 크지 않고 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정에 기반하여 코딩 트리 노드에 대한 분할 모드를 선택하는 분할 모드 선택 모듈(1505)을 포함하며, 분할 모드는 수직 이진 트리 분할 및 분할 없음 중에서 선택된다. 비디오 인코더(1502)는 또한 분할 모드를 코딩 트리 노드에 적용하여 하나 이상의 CU를 만드는 분할 모드 적용 모듈(1507)을 포함한다. 비디오 인코더(1502)는 또한 CU를 비트스트림으로 인코딩하는 인코딩 모듈(1508)을 포함한다. 비디오 인코더(1502)는 또한 디코더를 향해 비트스트림을 전송하는 전송 모듈(1509)을 포함한다.
일 예에서, 비디오 디코더(1510)는 이미지 데이터를 포함하는 비트스트림을 수신하는 수신 모듈(1516)을 포함한다. 비디오 디코더(1510)는 이미지 데이터를 파티셔닝하여 적어도 하나의 코딩 트리 노드를 갖는 적어도 하나의 CTU를 만드는 파티셔닝 모듈(1511)을 더 포함한다. 비디오 디코더(1510)는 코딩 트리 노드의 높이가 최대 TU 높이의 2배이고 코딩 트리 노드의 너비가 최대 TU 너비의 2배인 것으로 결정하는 크기 결정 모듈(1513)을 더 포함한다. 비디오 디코더(1510)는 코딩 트리 노드 높이가 최대 TU 높이의 2배이고 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정에 기반하여, 비트스트림을 파싱하여 코딩 트리 노드에 대한 분할 모드를 결정하는 분할 모드 결정 모듈(1515)을 더 포함하며, 분할 모드는 쿼드 트리 분할, 수평 이진 트리 분할 및 분할 없음 중에서 선택된다. 비디오 디코더(1510)는 분할 모드를 코딩 트리 노드에 적용하여 하나 이상의 CU를 획득하는 분할 모드 적용 모듈(1517)을 더 포함한다. 비디오 디코더(1510)는 비트스트림에 기반하여 CU를 디코딩하여 이미지를 만드는 디코딩 모듈(1518)을 더 포함한다. 비디오 디코더(1510)는 디스플레이를 향해 이미지를 전달하는 디스플레이 모듈(1519)을 더 포함한다.
다른 예에서, 비디오 디코더(1510)는 이미지 데이터를 포함하는 비트스트림을 수신하는 수신 모듈(1516)을 포함한다. 비디오 디코더(1510)는 이미지 데이터를 파티셔닝하여 적어도 하나의 코딩 트리 노드를 갖는 적어도 하나의 CTU를 만드는 파티셔닝 모듈(1511)을 더 포함한다. 비디오 디코더(1510)는 코딩 트리 노드의 높이가 최대 TU 높이보다 크지 않고 코딩 트리 노드의 너비가 최대 TU 너비의 2배인 것으로 결정하는 크기 결정 모듈(1513)을 더 포함한다. 비디오 디코더(1510)는 코딩 트리 노드 높이가 최대 TU 높이보다 크지 않고 코딩 트리 노드 너비가 최대 TU 너비의 2배라는 결정에 기반하여, 비트스트림을 파싱하여 코딩 트리 노드에 대한 분할 모드를 결정하는 분할 모드 결정 모듈(1515)을 더 포함하며, 분할 모드는 수직 이진 트리 분할 및 분할 없음 중에서 선택된다. 비디오 디코더(1510)는 분할 모드를 코딩 트리 노드에 적용하여 하나 이상의 CU를 획득하는 분할 모드 적용 모듈(1517)을 더 포함한다. 비디오 디코더(1510)는 비트스트림에 기반하여 CU를 디코딩하여 이미지를 만드는 디코딩 모듈(1518)을 더 포함한다. 비디오 디코더(1510)는 디스플레이를 향해 이미지를 전달하는 디스플레이 모듈(1519)을 더 포함한다.
제1 컴포넌트와 제2 컴포넌트 사이에 라인, 트레이스(trace) 또는 다른 매체를 제외하고 중간(intervening) 컴포넌트가 없을 때 제1 컴포넌트는 제2 컴포넌트에 직접 결합된다. 제1 컴포넌트와 제2 컴포넌트 사이에 라인, 트레이스 또는 다른 매체를 제외하고 중간 컴포넌트가 있을 때 제1 컴포넌트는 제2 컴포넌트에 간접적으로 결합된다. 용어 "결합된" 및 그 변형은 직접 결합 및 간접 결합을 모두 포함한다. 용어 "약"의 사용은 달리 명시되지 않는 한 후속 숫자의 ±10 %를 포함하는 범위를 의미한다.
본 개시에서 여러 실시 예가 제공되었지만, 개시된 시스템 및 방법은 본 개시의 사상 또는 범위를 벗어나지 않고 많은 다른 특정 형태로 구현될 수 있음을 이해할 수 있다. 본 실시 예는 제한적이지 않고 예시적인 것으로 간주되어야 하며, 의도는 여기에 제공된 세부 사항에 제한되지 않는다. 예를 들어, 다양한 엘리먼트 또는 컴포넌트는 다른 시스템에서 결합 또는 통합될 수 있거나, 특정 기능이 생략되거나 구현되지 않을 수 있다.
또한, 다양한 실시 예에서 개별적이거나 별개로 설명되고 예시된 기술, 시스템, 서브 시스템 및 방법은 본 개시의 범위를 벗어나지 않고 다른 시스템, 컴포넌트, 기술 또는 방법과 결합되거나 통합될 수 있다. 변경, 대체 및 변경의 다른 예는 당업자에 의해 확인될 수 있으며 여기에 개시된 정신 및 범위를 벗어나지 않고 이루어질 수 있다.

Claims (30)

  1. 인코더에서 구현되는 인코딩 방법으로서,
    상기 인코딩 방법은,
    상기 인코더의 프로세서가, 이미지를 파티셔닝하여 적어도 하나의 코딩 트리 노드를 갖는 적어도 하나의 코딩 트리 유닛(coding tree unit, CTU)을 획득하는 단계;
    상기 프로세서가, 상기 코딩 트리 노드의 높이가 64보다 크지 않고 상기 코딩 트리 노드의 너비가 64보다 큰지를 판정하는 단계;
    상기 프로세서가, 상기 코딩 트리 노드의 높이가 64보다 크지 않고 상기 코딩 트리 노드의 너비가 64보다 큰 것으로 판정된 경우에, 수직 이진 트리(vertical binary-tree) 분할이 상기 코딩 트리 노드를 분할하기 위해 사용되도록 허용되는 것으로 판정하는 단계;
    상기 프로세서가, 상기 코딩 트리 노드가 분할될 것으로 판정한 경우에, 상기 수직 이진 트리 분할을 상기 코딩 트리 노드에 적용하여 하나 이상의 코딩 유닛(coding unit, CU)을 획득하는 단계; 및
    상기 프로세서가, 상기 CU를 비트스트림으로 인코딩하는 단계 - 여기서 상기 수직 이진 트리 분할이 상기 코딩 트리 노드에 적용될 때, mtt_split_cu_vertical_flag 및 mtt_split_cu_binary_flag가 상기 비트스트림에서 시그널링되지 않음 -
    를 포함하는 인코딩 방법.
  2. 제1항에 있어서,
    상기 인코더의 송신기가, 상기 비트스트림을 디코더를 향해 전송하는 단계
    를 더 포함하는 인코딩 방법.
  3. 제1항에 있어서,
    상기 코딩 트리 노드의 높이가 64보다 크지 않고 상기 코딩 트리 노드의 너비가 64보다 큰 것으로 판정된 경우에, 수평 이진 트리 분할, 쿼드 트리 분할, 수직 트리플 트리 분할 및 수평 트리플 트리 분할이 상기 코딩 트리 노드에 대해 허용되지 않는, 인코딩 방법.
  4. 제1항에 있어서,
    상기 코딩 트리 노드가 분할되었는지를 지시하는 제1 플래그를 인코딩하는 것에 의해, 상기 코딩 트리 노드에 대한 분할 모드를 상기 비트스트림에서 시그널링하는 단계
    를 더 포함하는 인코딩 방법.
  5. 비디오 코딩 디바이스로서,
    프로세서 및 상기 프로세서에 결합된 송신기
    를 포함하고,
    상기 프로세서와 송신기는 제1항 내지 제4항 중 어느 하나의 방법을 수행하도록 구성되는, 비디오 코딩 디바이스.
  6. 컴퓨터가 판독 가능한 비 일시적 매체로서,
    비디오 코딩 디바이스에 의한 사용을 위한 컴퓨터 프로그램 제품을 포함하고, 상기 컴퓨터 프로그램 제품은 상기 컴퓨터가 판독 가능한 비 일시적 매체에 저장된, 컴퓨터가 실행가능한 명령을 포함하여, 상기 명령이 프로세서에 의해 실행될 때 상기 비디오 코딩 디바이스가 제1항 내지 제4항 중 어느 하나의 방법을 수행하게 하는, 컴퓨터가 판독 가능한 비 일시적 매체.
  7. 인코더로서,
    이미지를 파티셔닝하여 적어도 하나의 코딩 트리 노드를 갖는 적어도 하나의 코딩 트리 유닛(coding tree unit, CTU)을 만드는 파티셔닝 유닛;
    상기 코딩 트리 노드의 높이가 64보다 크지 않고 상기 코딩 트리 노드의 너비가 64보다 큰지를 판정하고, 상기 코딩 트리 노드의 높이가 64보다 크지 않고 상기 코딩 트리 노드의 너비가 64보다 큰 것으로 판정된 경우에 수직 이진 트리(vertical binary-tree) 분할이 상기 코딩 트리 노드를 분할하기 위해 사용되도록 허용되는 것으로 판정하는 크기 결정 유닛;
    상기 코딩 트리 노드가 분할되는 것으로 판정된 경우에, 상기 수직 이진 트리 분할을 상기 코딩 트리 노드에 적용하여 하나 이상의 코딩 유닛(coding unit, CU)을 획득하는 분할 모드 적용 유닛; 및
    상기 CU를 비트스트림으로 인코딩하는 인코딩 유닛 - 여기서 상기 수직 이진 트리 분할이 상기 코딩 트리 노드에 적용될 때, mtt_split_cu_vertical_flag 및 mtt_split_cu_binary_flag가 상기 비트스트림에서 시그널링되지 않음 -
    을 포함하는 인코더.
  8. 제7항에 있어서,
    상기 인코더는,
    상기 비트스트림을 디코더를 향해 전송하는 전송 유닛
    을 더 포함하는 인코더.
  9. 디코더에서 구현되는 디코딩 방법으로서,
    상기 디코딩 방법은,
    상기 디코더의 수신기가, 이미지의 이미지 데이터를 포함하는 비트스트림을 수신하는 단계;
    상기 디코더의 프로세서가, 상기 이미지를 파티셔닝하여 적어도 하나의 코딩 트리 노드를 갖는 적어도 하나의 코딩 트리 유닛(coding tree unit, CTU)을 획득하는 단계;
    상기 프로세서가, 상기 코딩 트리 노드의 높이가 64보다 크지 않고 상기 코딩 트리 노드의 너비가 64보다 큰지를 판정하는 단계;
    상기 프로세서가, 상기 코딩 트리 노드가 분할될 것이고, 상기 코딩 트리 노드의 높이가 64보다 크지 않고 상기 코딩 트리 노드의 너비가 64보다 큰 것으로 판정된 경우에, 수직 이진 트리 분할을 상기 코딩 트리 노드에 적용하여 하나 이상의 코딩 유닛(coding unit, CU)을 획득하는 단계; 및
    상기 프로세서가, 상기 비트스트림에 기반하여 상기 CU의 재구성된 블록을 생성하여 상기 이미지의 재구성된 이미지를 생성하는 단계 - 여기서 상기 수직 이진 트리 분할이 상기 코딩 트리 노드에 적용될 때, mtt_split_cu_vertical_flag 및 mtt_split_cu_binary_flag가 상기 비트스트림에서 시그널링되지 않음 -
    를 포함하는 디코딩 방법.
  10. 제9항에 있어서,
    상기 프로세서가, 상기 이미지를 디스플레이를 향해 전달하는 단계
    를 더 포함하는 디코딩 방법.
  11. 제9항에 있어서,
    상기 코딩 트리 노드의 높이가 64보다 크지 않고 상기 코딩 트리 노드의 너비가 64보다 큰 것으로 판정된 경우에, 수평 이진 트리 분할, 쿼드 트리 분할, 수직 트리플 트리 분할 및 수평 트리플 트리 분할이 상기 코딩 트리 노드에 대해 허용되지 않는, 디코딩 방법.
  12. 제9항에 있어서,
    상기 비트스트림을 파싱하여 상기 코딩 트리 노드가 분할되었는지를 결정하는 단계
    를 더 포함하는 디코딩 방법.
  13. 비디오 코딩 디바이스로서,
    프로세서 및 상기 프로세서에 결합된 수신기
    를 포함하고,
    상기 프로세서와 수신기는 제9항 내지 제12항 중 어느 하나의 방법을 수행하도록 구성되는, 비디오 코딩 디바이스.
  14. 컴퓨터가 판독 가능한 비 일시적 매체로서,
    비디오 코딩 디바이스에 의한 사용을 위한 컴퓨터 프로그램 제품을 포함하고,
    상기 컴퓨터 프로그램 제품은 상기 컴퓨터가 판독 가능한 비 일시적 매체에 저장된, 컴퓨터가 실행가능한 명령을 포함하여, 상기 명령이 프로세서에 의해 실행될 때 상기 비디오 코딩 디바이스가 제9항 내지 제12항 중 어느 하나의 방법을 수행하게 하는, 컴퓨터가 판독 가능한 비 일시적 매체.
  15. 디코더로서,
    이미지의 이미지 데이터를 포함하는 비트스트림을 수신하는 수신 유닛;
    상기 이미지를 파티셔닝하여 적어도 하나의 코딩 트리 노드를 갖는 적어도 하나의 코딩 트리 유닛(coding tree unit, CTU)을 획득하는 파티셔닝 유닛;
    상기 코딩 트리 노드의 높이가 64보다 크지 않고 상기 코딩 트리 노드의 너비가 64보다 큰지를 판정하는 크기 결정 유닛;
    상기 코딩 트리 노드가 분할될 것이고, 상기 코딩 트리 노드의 높이가 64보다 크지 않고 상기 코딩 트리 노드의 너비가 64보다 큰 것으로 판정된 경우에, 수직 이진 트리 분할을 상기 코딩 트리 노드에 적용하여 하나 이상의 코딩 유닛(coding unit, CU)을 획득하는 분할 모드 적용 유닛; 및
    상기 비트스트림에 기반하여 상기 CU의 재구성된 블록을 생성하여 상기 이미지의 재구성된 이미지를 생성하는 디코딩 유닛 - 여기서 상기 수직 이진 트리 분할이 상기 코딩 트리 노드에 적용될 때, mtt_split_cu_vertical_flag 및 mtt_split_cu_binary_flag가 상기 비트스트림에서 시그널링되지 않음 -
    을 포함하는 디코더.
  16. 제15항에 있어서,
    상기 디코더는,
    상기 이미지를 디스플레이를 향해 전달하는 디스플레이 유닛
    을 더 포함하는 디코더.
  17. 코더(coder)로서,
    제1항 내지 제4항 중 어느 하나 또는 제9항 내지 제12항 중 어느 하나에 따른 방법을 수행하는 처리 회로를 포함하는, 코더.
  18. 컴퓨터가 판독 가능한 저장 매체에 저장되어 있는 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은, 컴퓨터 또는 프로세서 상에서 실행될 때 제1항 내지 제4항 중 어느 하나 또는 제9항 내지 제12항 중 어느 하나에 따른 방법을 수행하는 프로그램 코드를 포함하는, 컴퓨터 프로그램.
  19. 비일시적 저장 매체로서,
    제9항 내지 제12항 중 어느 하나에 따른 방법을 사용하여 인코딩된, 인코딩된 비트스트림을 포함하는, 비일시적 저장 매체.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
KR1020217004379A 2018-07-17 2019-07-01 비디오 코딩을 위한 제한 코딩 트리 KR102597837B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862699489P 2018-07-17 2018-07-17
US62/699,489 2018-07-17
PCT/US2019/040174 WO2020018267A1 (en) 2018-07-17 2019-07-01 Constrained coding tree for video coding

Publications (2)

Publication Number Publication Date
KR20210029266A KR20210029266A (ko) 2021-03-15
KR102597837B1 true KR102597837B1 (ko) 2023-11-02

Family

ID=69164566

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217004379A KR102597837B1 (ko) 2018-07-17 2019-07-01 비디오 코딩을 위한 제한 코딩 트리

Country Status (8)

Country Link
US (2) US20210136423A1 (ko)
JP (1) JP2021532643A (ko)
KR (1) KR102597837B1 (ko)
CN (2) CN112470471A (ko)
AU (1) AU2019308493B2 (ko)
BR (1) BR112021000817A2 (ko)
MX (1) MX2021000648A (ko)
WO (1) WO2020018267A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3846473A4 (en) * 2018-08-28 2022-05-25 Samsung Electronics Co., Ltd. VIDEO CODING METHOD AND CODING DEVICE, AND VIDEO DECODING METHOD AND HARDWARE MODEL TAKING ACCOUNT OF THE CODING DEVICE
JP7479457B2 (ja) 2019-09-20 2024-05-08 北京字節跳動網絡技術有限公司 ビデオ・データを処理する方法、装置及び記憶媒体

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160134889A1 (en) 2010-04-09 2016-05-12 Lg Electronics Inc. Method and apparatus for processing video signal
US20180020241A1 (en) 2016-07-15 2018-01-18 Qualcomm Incorporated Signaling of quantization information in non-quadtree-only partitioned video coding

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9807401B2 (en) * 2011-11-01 2017-10-31 Qualcomm Incorporated Transform unit partitioning for chroma components in video coding
AU2012232992A1 (en) * 2012-09-28 2014-04-17 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding the transform units of a coding unit
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.
US11039175B2 (en) * 2016-05-27 2021-06-15 Sharp Kabushiki Kaisha Systems and methods for varying quantization parameters
ES2938187T3 (es) * 2016-08-08 2023-04-05 Lg Electronics Inc Métodos de codificación de vídeo basados en modo de intra predicción y aparato de procesamiento de vídeo de los mismos
US10735730B2 (en) * 2018-03-07 2020-08-04 Tencent America LLC Flexible tree structure
KR20200132979A (ko) * 2018-04-01 2020-11-25 엘지전자 주식회사 영상의 처리 방법 및 이를 위한 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160134889A1 (en) 2010-04-09 2016-05-12 Lg Electronics Inc. Method and apparatus for processing video signal
US20180020241A1 (en) 2016-07-15 2018-01-18 Qualcomm Incorporated Signaling of quantization information in non-quadtree-only partitioned video coding

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Chih-Wei Hsu, et al. CE1-related: Constraint for binary and ternary partitions, JVET-K0556-v1. 2018.07.16.*
Gary J. Sullivan, et al. Overview of the high efficiency video coding (HEVC) standard. IEEE Transactions on Circuits and Systems for Video Technology. 2012.12.*
Xiang Li, et al. Multi-Type-Tree, JVET-D0117r1. 2016.10.20.*

Also Published As

Publication number Publication date
CN112470471A (zh) 2021-03-09
KR20210029266A (ko) 2021-03-15
AU2019308493B2 (en) 2023-04-20
JP2021532643A (ja) 2021-11-25
BR112021000817A2 (pt) 2021-04-13
AU2019308493A1 (en) 2021-02-18
WO2020018267A1 (en) 2020-01-23
US20230239518A1 (en) 2023-07-27
CN114205629B (zh) 2022-11-25
MX2021000648A (es) 2021-06-23
CN114205629A (zh) 2022-03-18
US20210136423A1 (en) 2021-05-06

Similar Documents

Publication Publication Date Title
US11800094B2 (en) Intra-prediction with multiple reference lines
KR102661416B1 (ko) 인코더, 디코더 및 대응하는 방법
US11528506B2 (en) Intra-prediction using a cross-component linear model in video coding
US11109026B2 (en) Luma and chroma block partitioning
US10623738B2 (en) Noise suppression filter
US11606571B2 (en) Spatial varying transform for video coding
US20230239518A1 (en) Constrained Coding Tree for Video Coding
US11102484B2 (en) Block partitioning in video coding

Legal Events

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