KR20210019387A - 하이 레벨 영상 분할과 영상 부호화/복호화 방법 및 장치 - Google Patents
하이 레벨 영상 분할과 영상 부호화/복호화 방법 및 장치 Download PDFInfo
- Publication number
- KR20210019387A KR20210019387A KR1020200100288A KR20200100288A KR20210019387A KR 20210019387 A KR20210019387 A KR 20210019387A KR 1020200100288 A KR1020200100288 A KR 1020200100288A KR 20200100288 A KR20200100288 A KR 20200100288A KR 20210019387 A KR20210019387 A KR 20210019387A
- Authority
- KR
- South Korea
- Prior art keywords
- tile
- picture
- information
- slice
- height
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000000638 solvent extraction Methods 0.000 title description 13
- 230000011218 segmentation Effects 0.000 claims abstract description 37
- 239000011449 brick Substances 0.000 description 176
- 238000003709 image segmentation Methods 0.000 description 35
- 238000013139 quantization Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000011664 signaling Effects 0.000 description 9
- 239000000470 constituent Substances 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 230000003044 adaptive effect Effects 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 101150114515 CTBS gene Proteins 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/12—Selection 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/122—Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/172—Methods 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 picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/184—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/174—Methods 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 slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
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
본 발명은 현재 픽처에 대한 분할 정보를 부/복호화하고, 부/복호화된 분할 정보에 따라 현재 픽처를 서브-픽처, 슬라이스 또는 타일 중 적어도 하나의 단위로 분할하는 방법 및 장치를 제공한다.
Description
본 발명은 영상 부호화/복호화 방법 및 장치에 관한 것이다.
비디오 영상은 시공간적 중복성 및 시점 간 중복성을 제거하여 압축 부호화되며, 이는 통신 회선을 통해 전송되거나 저장 매체에 적합한 형태로 저장될 수 있다.
본 발명은 비디오 신호의 코딩 효율을 향상시키고자 함에 있다.
상기 과제를 해결하기 위하여 본 발명은 하이 레벨 영상 분할과 분할 정보 부호화/복호화 방법 및 장치를 제공한다.
본 발명은 압축 부/복호화의 상위 구문(하이 레벨 신택스)에 기반한 분할 방법을 제공한다.
본 발명은 하이 레벨 신택스에 기반한 분할을 수행함에 있어서, 균등 혹은 불균등 서브-픽처/타일/브릭/슬라이스 분할을 제공하여 더욱 유연한 구조를 제공한다.
본 발명은 서브-픽처 분할을 구성함에 있어, 타일, 브릭 혹은 CTB 크기 단위로 서브-픽처를 구성하여 부/복호화를 수행함으로써, 높이와 너비를 더 적은 비트로 시그날링하는 방법을 제시한다.
본 발명은 타일 분할을 부호화/복호화에 있어 타일의 높이와 너비 중 하나만 동일한 분할이 되는 경우, 비트 손실을 줄일 수 있는 방법을 제시한다.
본 발명에서는 브릭 분할을 부호화/복호화에 있어 동일한 레벨에서 시그날링 되는 정보들을 이용하여 파싱 의존성 없이 비트를 줄일 수 있는 방법을 제시한다.
본 발명은 타일/브릭 분할을 크기 정보 대신 크기의 차와 부호로 전송하여 시그날링 오버헤드를 줄일 수 있는 방법을 제시한다.
본 발명에서는 타일/브릭/슬라이스 분할을 부호화/복호화에 있어, 분할 구성을 알려주는 정보 중 일부를 시그날링 하지 않고 유도하여 부/복호화 비트를 줄이는 방법을 제시한다.
본 발명에 따른 비디오 신호 처리 방법 및 장치는 하이 레벨 영상 분할과 분할 정보의 효율적인 부호화/복호화를 통해 비디오 신호 코딩 효율을 향상시킬 수 있다.
타일 혹은 브릭 크기 단위로 서브-픽처 분할을 구성하여 높이와 너비 크기를 더 적은 비트로 시그날링 할 수 있고, 하위 영상과 경계를 맞추기 용이할 수 있다.
본 발명은 하이 레벨 분할을 구성함에 있어, 균등 혹은 불균등 서브-픽처/타일/브릭/슬라이스 분할 등을 제공하여 더욱 유연한 구조를 제공한다.
타일의 분할 구성이 높이와 너비 각각에 균등 여부를 확인하여, 동일한 크기에 대해서 각각 하나의 크기 값만 시그날링한다. 하나의 크기만 균등 분할된 경우, 종래에 비해 더 적은 비트로 시그날링 할 수 있다.
브릭 분할을 부호화/복호화에 있어 동일한 레벨에서 시그날링 되는 정보들을 이용하여 전송 의존성 없이 비트를 줄일 수 있다.
타일 혹은 브릭 분할에 대한 정보를 기존 대비 작은 값으로 부/복호화하여 시그날링 오버헤드를 줄일 수 있다.
타일/브릭/슬라이스 분할 정보 부호화/복호화 중 일부 정보를 시그날링 하지 않고 유도하여 비트 시그날링을 줄일 수 있다.
도 1은 본 개시와 관련된 영상 부호화기에서 영상 분할 정보를 부호화하는 방법을 도시한 것이다.
도 2는 본 개시와 관련된 영상 복호화기에서 하이-레벨의 영상 분할 방법을 도시한 것이다.
도 3과 도 4는 서브-픽처의 균등 분할의 일예를 도시한 것이다.
도 5는 서브-픽처 불균등 분할의 일예를 도시한 것이다.
도 6은 균등 분할된 블록을 이용하여 서브-픽처를 구성하는 방법을 도시한 것이다.
도 7a는 슬라이스가 직사각형 모드로 구성된 경우를, 도 7b는 슬라이스가 래스터 스캔 모드로 구성된 경우의 일예를 도시한다.
도 8은 본 발명의 일 실시예에 따른 비디오 부호화 장치의 구성을 나타내는 블록도를 도시한다.
도 9는 본 발명의 일 실시예에 따른 비디오 복호화 장치의 구성을 나타내는 블록도를 도시한다.
도 2는 본 개시와 관련된 영상 복호화기에서 하이-레벨의 영상 분할 방법을 도시한 것이다.
도 3과 도 4는 서브-픽처의 균등 분할의 일예를 도시한 것이다.
도 5는 서브-픽처 불균등 분할의 일예를 도시한 것이다.
도 6은 균등 분할된 블록을 이용하여 서브-픽처를 구성하는 방법을 도시한 것이다.
도 7a는 슬라이스가 직사각형 모드로 구성된 경우를, 도 7b는 슬라이스가 래스터 스캔 모드로 구성된 경우의 일예를 도시한다.
도 8은 본 발명의 일 실시예에 따른 비디오 부호화 장치의 구성을 나타내는 블록도를 도시한다.
도 9는 본 발명의 일 실시예에 따른 비디오 복호화 장치의 구성을 나타내는 블록도를 도시한다.
본 명세서에 첨부된 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한부분에 대해서는 유사한 도면 부호를 붙였다.
본 명세서 전체에서, 어떤 부분이 다른 부분과 '연결'되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우 뿐만 아니라, 그 중간에 다른 소자를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다.
또한, 본 명세서 전체에서 어떤 부분이 어떤 구성요소를 '포함'한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
또한, 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
또한, 본 명세서에서 설명되는 장치 및 방법에 관한 실시예에 있어서, 장치의 구성 일부 또는 방법의 단계 일부는 생략될 수 있다. 또한 장치의 구성 일부 또는 방법의 단계 일부의 순서가 변경될 수 있다. 또한 장치의 구성 일부 또는 방법의 단계 일부에 다른 구성 또는 다른 단계가 삽입될 수 있다.
또한, 본 발명의 제1 실시예의 일부 구성 또는 일부 단계는 본 발명의 제2 실시예에 부가되거나, 제2 실시예의 일부 구성 또는 일부 단계를 대체할 수 있다.
덧붙여, 본 발명의 실시예에 나타나는 구성부들은 서로 다른 특징적인 기능들을 나타내기 위해 독립적으로 도시되는 것으로, 각 구성부들이 분리된 하드웨어나 하나의 소프트웨어 구성단위로 이루어짐을 의미하지 않는다. 즉, 각 구성부는 설명의 편의상 각각의 구성부로 나열하여 기술되고, 각 구성부 중 적어도 두 개의 구성부가 합쳐져 하나의 구성부로 이루어지거나, 하나의 구성부가 복수 개의 구성부로 나뉘어져 기능을 수행할 수 있다. 이러한 각 구성부의 통합된 실시예 및 분리된 실시예도 본 발명의 본질에서 벗어나지 않는 한 본 발명의 권리 범위에 포함된다.
먼저, 본 출원에서 사용되는 용어를 간략히 설명하면 다음과 같다.
이하에서 후술할 복호화 장치(Video Decoding Apparatus)는 민간 보안 카메라, 민간 보안 시스템, 군용 보안 카메라, 군용 보안 시스템, 개인용 컴퓨터(PC, Personal Computer), 노트북 컴퓨터, 휴대형 멀티미디어 플레이어(PMP, Portable Multimedia Player), 무선 통신 단말기(Wireless Communication Terminal), 스마트 폰(Smart Phone), TV 응용 서버와 서비스 서버 등 서버 단말기에 포함된 장치일 수 있으며, 각종 기기 등과 같은 사용자 단말기, 유무선 통신망과 통신을 수행하기 위한 통신 모뎀 등의 통신 장치, 영상을 복호화하거나 복호화를 위해 화면 간 또는 화면 내 예측하기 위한 각종 프로그램과 데이터를 저장하기 위한 메모리, 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등을 구비하는 다양한 장치를 의미할 수 있다.
또한, 부호화기에 의해 비트스트림(bitstream)으로 부호화된 영상은 실시간 또는 비실시간으로 인터넷, 근거리 무선 통신망, 무선랜망, 와이브로망, 이동통신망 등의 유무선 통신망 등을 통하거나 케이블, 범용 직렬 버스(USB, Universal Serial Bus)등과 같은 다양한 통신 인터페이스를 통해 영상 복호화 장치로 전송되어 복호화되어 영상으로 복원되고 재생될 수 있다. 또는 부호화기에 의해 생성된 비트스트림은 메모리에 저장될 수 있다. 상기 메모리는 휘발성 메모리와 비휘발성 메모리를 모두 포함할 수 있다. 본 명세서에서 메모리는 비트스트림을 저장한 기록 매체로 표현될 수 있다.
통상적으로 동영상은 일련의 픽처(Picture)들로 구성될 수 있으며, 각 픽처들은 블록(Block)과 같은 코딩 유닛(coding unit)으로 분할될 수 있다. 또한, 이하에 기재된 픽처라는 용어는 영상(Image), 프레임(Frame) 등과 같은 동등한 의미를 갖는 다른 용어로 대치되어 사용될 수 있음을 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 이해할 수 있을 것이다. 그리고 코딩 유닛이라는 용어는 단위 블록, 블록 등과 같은 동등한 의미를 갖는 다른 용어로 대치되어 사용될 수 있음을 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 이해할 수 있을 것이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 동일한 구성요소에 대해서 중복된 설명은 생략한다.
본 개시는 영상 부/복호화를 위한 하이-레벨에서의 영상 분할 방법과 해당 영상 분할을 위한 정보의 부/복호화에 관한 것이다.
본 개시에 따른 영상 분할에 있어서, 하나의 픽처는 서브-픽처, 타일, 브릭(Brick), 슬라이스와 같이 계층적으로 분할될 수 있다. 각 계층마다 특정된 방법에 따라 영상 분할이 수행될 수 있으며, 해당 분할 정보는 특정된 규칙에 따라 부호화 및 복호화될 수 있다.
예를 들어, 서브-픽처는 타일 또는 브릭의 경계와 일치되도록 구성될 수 있다. 타일의 경계는 부호화 단위(예를 들어, CTB(Coding Tree Block))의 정수배로 구성될 수 있고, 서브-픽처의 높이는 특정 픽셀 수(예를 들어, 2 픽셀) 단위의 정수배로 구성될 수 있다. 여기에서, 서브-픽처 단위가 타일의 단위보다 작은 경우, 서브-픽처의 높이와 너비를 전송하기 위한 비트 오버헤드가 증가될 수 있다.
타일의 경우, 하나의 픽처가 균등한 크기(높이, 너비)를 가진 타일로 분할되는지 여부를 나타내는 1-bit의 플래그가 부/복호화될 수 있다. 상기 플래그는 수직 방향의 균등 분할 여부와 수평 방향의 균등 분할 여부를 동시에 지시하기 때문에, 두 방향 중 하나의 방향에 대한 균등 분할 여부를 알려주기 위해서 불필요한 다른 방향에 대한 분할 정보의 전송이 이뤄질 수 있다. 다만, 상기 플래그는 타일에 한정되지 아니하며, 서브-픽처, 브릭 또는 슬라이스에 대해서도 동일한 개념의 플래그가 부/복호화될 수 있음은 물론이다. 타일은 하나의 슬라이스(또는 브릭)으로 구성될 수도 있고, 복수의 슬라이스(또는 브릭)으로 분할될 수도 있다. 특정 타일의 높이가 분할 정보 전송의 최소 단위와 동일한 경우, 해당 타일은 항상 브릭으로 분할될 수 없다. 이러한 경우, 분할 유무를 지시하는 플래그가 부/복호화되지 않을 수 있다. 위의 조건을 확인하기 위해 사용되는 구문에서 상위 레벨에서 전송되는 정보를 이용하는 파싱 의존성이 발생할 수 있다.타일 혹은 브릭의 정보를 부/복호화함에 있어서, 너비와 높이의 크기 정보를 부호화 단위에 맞춰 전송한다. 타일 혹은 브릭의 분할이 유사하게 이뤄지는 경우, 해당 정보 각각을 모두 전송하는 것은 불필요한 비트 오버헤드가 발생할 수 있다.
슬라이스는 분할된 브릭의 조합으로 이뤄질 수 있다. 슬라이스 구성은 모든 슬라이스에 대해 현재 슬라이스와 이전 슬라이스에서 오른쪽 끝에 존재하는 브릭의 인덱스 차이와 해당 차이에 대한 부호를 1-bit로 시그날링 할 수 있다. 이 때, 특정 슬라이스의 경우, 항상 부호가 일정함에도 이에 대한 부호를 시그날링하는 불필요한 경우가 발생할 수 있다.
타일/브릭 분할의 높이와 너비 정보를 부/복호화를 함에 있어서, 특정 타일 혹은 브릭의 경우, 너비 혹은 높이를 유도할 수 있음에도 시그날링하는 불필요한 경우가 발생할 수 있다.
타일 분할 정보를 부/복호화 함에 있어, 분할되지 않은 변에 대한 시그날링 오버헤드가 발생할 수 있고 필요한 정보를 이미 부/복호화된 정보를 활용하여 유도할 수 있다.
슬라이스 분할 정보를 부/복호화 함에 있어, 슬라이스가 포함되는 타일의 위치를 알려주기 위한 타일 인덱스 정보가 부/복호화될 수 있다. 이때, 픽처에 슬라이스가 특정 개수 이하일 경우, 불필요한 인덱스 부/복호화가 되어 시그날링 오버헤드가 발생할 수 있다.
도 1은 본 개시와 관련된 영상 부호화기에서 영상 분할 정보를 부호화하는 방법을 도시한 것이다. 도 2는 본 개시와 관련된 영상 복호화기에서 하이-레벨의 영상 분할 방법을 도시한 것이다.
하이-레벨 영상 분할 단계
[D1] 현재 영상에 대한 하이-레벨 영상 분할을 수행함에 있어, 소정의 단위로의 분할 및/또는 병합을 이용할 수 있다. 여기서, 소정의 단위는, 서브-픽처(Sub-Picture), 타일(Tile), 브릭(Brick), 슬라이스(Slice) 중 적어도 하나 이상을 포함할 수 있다. 예를 들어, 하나의 픽처 또는 서브-픽처를 복수의 타일로 분할할 수도 있고, 복수의 타일 결합을 통해 서브-픽처의 크기/형태/위치 등이 결정될 수도 있다. 또는, 하나의 타일 또는 슬라이스를 복수의 브릭으로 분할하거나, 복수의 브릭 결합을 통해 타일 또는 슬라이스의 크기/형태/위치 등이 결정될 수도 있다. 또는, 하나의 픽처는 복수의 서브-픽처와 복수의 타일로 각각 분할될 수 있다. 복수의 타일 결합을 통해 하나의 슬라이스의 크기, 위치, 형태 등이 결정될 수 있고, 나아가 하나의 타일은 복수의 슬라이스로 추가적으로 분할될 수도 있다.
전술한 소정의 단위 중 적어도 하나가 선택적으로 이용될 수도 있고, 이를 위해 하이-레벨(e.g., VPS, SPS, PPS 등)에서 해당 단위의 허용 여부에 대한 플래그 정보가 시그날링될 수도 있다. 전술한 소정의 단위 각각은 서로 독립적인 크기, 형태, 위치 등을 가질 수도 있고, 소정의 단위 중 어느 하나는 다른 하나에 종속적인 크기, 형태, 위치 등을 가질 수도 있다.
또한, 후술하는 실시예에서, 상기 소정의 단위 중 어느 하나에 대한 부호화 정보는 주변 단위에 기초하여 유도될 수 있다. 부호화 정보는, 분할 정보(분할 여부를 지시하는 정보, 균등 분할 여부를 지시하는 정보 등), 크기 정보, 형태 정보 또는 위치 정보 중 적어도 하나를 포함할 수 있다. 주변 단위는, 현재 단위의 좌측, 상단, 좌상단, 우상단 또는 좌하단 중 적어도 하나에 인접한 단위로서, 현재 단위 이전에 부/복호화된 영역일 수 있다. 이를 위해, 현재 단위의 부호화 정보가 주변 단위의 부호화 정보에 기초하여 유도되는지 여부 또는 주변 단위의 부호화 정보와 동일한지 여부를 나타내는 플래그가 이용될 수 있다. 상기 플래그는 부호화 장치에서 부호화되어 시그날링될 수 있다. 상기 플래그는, VPS, DPS, SPS, PPS 등과 같은 상위 레벨에서 시그날링될 수 있다. 상기 플래그가 제1 값인 경우, 현재 단위의 부호화 정보는 주변 단위의 부호화 정보에 기초하여 또는 주변 단위의 부호화 정보와 동일하게 설정될 수 있다. 이때, 현재 단위와 병합되는 주변 단위의 위치 정보가 시그날링될 수도 있고, 부호화/복호화 장치에 기-약속된 위치의 주변 단위가 이용될 수도 있다.
[D1-1] 현재 영상에 대한 하이-레벨 영상 분할을 수행함에 있어, 서브-픽처 분할을 수행할 수 있다. 여기에서, 상위 영상은 N개의 서브-픽처로 분할될 수 있다. 이 때, N은 1 이상의 값을 가지는 양의 정수일 수 있다.여기서, 상위 영상은 시퀀스, 픽처 중 적어도 하나일 수 있다. 시퀀스는 복수개의 픽처를 의미할 수 있다. 서브-픽처는 영상을 디스플레이하는 단위, 영상을 전송하는 단위 또는 하나의 영상을 독립적/병렬적으로 처리하는 단위가 될 수 있다.
서브-픽처 분할을 수행함에 있어, 서브-픽처는 균등 분할의 결과일 수 있다. 여기서, 균등 분할은 상위 영상에서 분할된 N개의 서브-픽처의 크기(너비 또는 높이 중 적어도 하나)가 서로 같음을 의미할 수 있다. 도 3과 도 4는 서브-픽처의 균등 분할의 일예를 도시한 것이다.
다만, 균등 분할의 경우라도, 상위 영역의 상, 하, 좌, 우 중 하나 이상의 경계에 접해있는 서브-픽처는 다른 서브-픽처와 다른 크기를 가질 수도 있다. 예를 들어, 도 3-a에서, 서브-픽처 0와 서브-픽처 2는 동일한 너비를 가지나, 서로 상이한 높이를 가질 수 있다. 또는, 서브-픽처 0은 서브-픽처 1과 동일한 높이를 가지나, 서로 상이한 너비를 가질 수 있다. 도 3-b에서, 서브-픽처 0과 서브-픽처 1 간의 너비의 비(ratio)는 서브-픽처 2와 서브-픽처 3 간의 너비의 비가 동일할 수 있다. 여기서, 서브-픽처 0와 서브-픽처 1은 서로 상이한 너비를 가질 수도 있다. 도 3-c에서, 서브-픽처 0과 서브-픽처 1 간의 높이의 비(ratio)는 서브-픽처 2와 서브-픽처 3 간의 높이의 비가 동일할 수 있다. 여기서, 서브-픽처 0와 서브-픽처 1은 서로 상이한 높이를 가질 수도 있다.
한편, 도 4-a와 같이 영상 분할 과정에서 상, 하, 좌, 우 중 하나 이상의 경계에서 발생하는 자투리 영역이 하나의 서브-픽처가 될 수 있다. 도 4-b와 같이 영상 분할 과정에서 상, 하, 좌, 우 중 하나 이상의 경계에 존재하는 자투리 영역을 포함하도록 서브-픽처가 구성될 수 있다. 여기서, 상위 영역의 수직 방향과 수평 방향으로 균등 분할을 수행할 수 있다. 또는, 상위 영역의 수직 방향 또는 수평 방향으로만 균등 분할을 수행할 수 있다.
서브-픽처 분할을 수행함에 있어, 서브-픽처는 불균등 분할의 결과일 수 있다. 여기에서, 불균등 분할은 상위 영상에서 분할된 N개의 서브-픽처의 크기(너비 또는 높이 중 적어도 하나)가 서로 다름을 의미할 수 있다. 도 5는 서브-픽처 불균등 분할의 일예를 도시한 것이다. 여기서, 상위 영역의 수직 방향과 수평 방향으로 불균등 분할을 수행할 수 있다. 또는, 상위 영역의 수직 방향 또는 수평 방향으로만 불균등 분할을 수행할 수 있다.
도 6은 균등 분할된 블록을 이용하여 서브-픽처를 구성하는 방법을 도시한 것이다.
서브-픽처 분할을 수행함에 있어, 상위 영상에서 균등 분할된 블록을 이용하여 서브-픽처를 구성할 수 있다. 이 때, 균등 분할 블록은 상기 서브-픽처 균등 분할과 같은 방법으로 구성될 수 있다 일 예로, 도 6-a와 같은 서브-픽처 분할을 수행하기 위해, 도 6-b와 같이 균등 분할된 블록을 이용할 수 있다.
예를 들어, 복수개의 균등 분할된 블록을 포함하는 영역을 하나의 서브-픽처로 구성할 수 있다. 여기서, 균등 분할된 블록은 각각 색인 정보를 가질 수 있으며, 동일한 색인 정보를 갖는 블록의 그룹으로 상위 영상이 분할될 수 있다. 이 때, 동일한 색인 정보를 갖는 블록은 적어도 한 면 이상이 동일한 색인 정보를 갖는 다른 블록과 맞닿을 수 있다.
서브-픽처 분할을 수행함에 있어, 상위 영상에서 불균등 분할된 블록을 이용하여 서브-픽처를 구성할 수 있다. 이 때, 불균등 분할 블록은 상기 서브-픽처 불균등 분할과 같은 방법으로 구성될 수 있다. 일 예로, 도 6-a와 같은 서브-픽처 분할을 수행하기 위해, 도 6-c와 같이 불균등 분할된 블록을 이용할 수도 있다. 예를 들어, 복수개의 불균등 분할된 블록을 포함하는 영역을 하나의 서브-픽처로 구성할 수 있다. 여기서, 불균등 분할된 블록은 각각 색인 정보를 가질 수 있으며 동일한 색인 정보를 갖는 블록의 그룹으로 상위 영상이 분할될 수 있다. 이 때, 동일한 색인 정보를 갖는 블록은 적어도 한 면 이상이 동일한 색인 정보를 갖는 다른 블록과 맞닿을 수 있다.상위 영역의 수직 방향으로는 서브-픽처 균등 분할을 수행하고 수평 방향으로는 서브-픽처 불균등 분할을 수행할 수 있다. 또는, 상위 영역의 수직 방향으로는 서브-픽처 불균등 분할을 수행하고 수평 방향으로는 서브-픽처 균등 분할을 수행할 수 있다.서브-픽처의 너비와 높이의 단위는 각각 2의 n제곱, CTB (Coding Tree Block) 크기(너비, 높이)의 n배수 중 하나일 수 있다. 이 때, n은 0 이상의 값을 갖는 정수일 수 있다. 이때, CTB의 너비 혹은 높이 중 적어도 하나 이상은 2의 n제곱수 일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상은 128일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상은 64일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상은 32일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상은 16일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상은 8일 수 있다. 예를 들어, 서브-픽처의 너비 혹은 높이 중 적어도 하나 이상은 CTB의 너비 혹은 높이 중 적어도 하나 이상의 배수 일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상이 128일 경우, 서브-픽처의 너비 혹은 높이 중 적어도 하나 이상은 128의 배수일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상이 64일 경우, 서브-픽처의 너비 혹은 높이 중 적어도 하나 이상은 64의 배수일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상이 32일 경우, 서브-픽처의 너비 혹은 높이 중 적어도 하나 이상은 32의 배수일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상이 16일 경우, 서브-픽처의 너비 혹은 높이 중 적어도 하나 이상은 16의 배수일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상이 8일 경우, 서브-픽처의 너비 혹은 높이 중 적어도 하나 이상은 8의 배수일 수 있다.
또는, 서브-픽처의 너비와 높이의 단위는, CTB (Coding Tree Block)의 너비와 높이로 각각 설정될 수 있다. 즉, 서브-픽처의 너비는 CTB의 너비의 n배수 형태로 설정되고, 서브-픽처의 높이는 CTB의 높이의 n배수 형태로 설정될 수 있다. 이 때, n은 0 이상의 값을 갖는 정수일 수 있다. 또는, n은 0이 아닌 소정의 문턱값보다 큰 값일 수 있다. 상기 CTB의 너비와 높이는, 부호화/복호화 장치에서 허용되는 최소 CTB 크기 또는 최대 CTB 크기를 의미할 수 있다.
또는, 서브-픽처의 너비와 높이의 단위는, 부호화/복호화 장치에 기-약속된 고정된 값으로 설정될 수 있다. 여기서, 고정된 값은, 8, 16, 32, 64, 128, 256 또는 그 이상의 정수일 수 있다. 또는, 고정된 값은, 부호화/복호화 장치에서 허용되는 최소/최대 CTB 크기(L), L/2, L/4, L/8, L/16 또는 L/32 등으로 설정될 수 있다. 서브-픽처의 너비와 높이 중 적어도 하나는, 상기 고정된 값의 n 배수일 수 있다.
또는, 서브-픽처의 너비와 높이의 단위는, 최소/최대 CB 크기로 설정될 수 있다. 최소 또는 최대 CB 크기에 대한 정보는 부호화 장치에서 시그날링될 수 있다. 또는, 서브-픽처의 너비와 높이의 단위는, 최소/최대 PU(prediction unit) 또는 최소/최대 TU(transform unit) 크기로 설정될 수 있다. 최소 또는 최대 PU/TU 크기에 대한 정보 중 적어도 하나는 부호화 장치에서 시그날링될 수 있다.
또는, 서브-픽처의 너비와 높이의 단위를 나타내는 크기 정보가 별도로 시그날링될 수 있다. 상기 크기 정보는, 비디오 시퀀스, 픽처, 슬라이스, 타일 등의 하이-레벨 중 적어도 하나에서 시그날링될 수 있다. 예를 들어, 비디오 시퀀스 내 모든 픽처에 대해서 동일한 서브-픽처 단위가 적용될 수도 있고, 픽처 별로 상이한 서브-픽처 단위가 적용될 수도 있다. 이 경우, 서브-픽처의 너비와 높이는, 상기 크기 정보에 따른 크기의 배수 형태로 결정될 수 있다.
또는, 서브-픽처의 너비와 높이 각각에 대해서 서로 다른 단위가 적용될 수도 있다. 예를 들어, 서브-픽처의 너비의 단위는 제1 단위이고, 높이의 단위는 제2 단위일 수 있다. 여기서, 제1 단위는, 전술한 CTB 크기, 최소 CTB 크기, 최대 CTB 크기, 고정된 값 또는 시그날링되는 크기 정보 중 어느 하나이고, 제2 단위는 제1 단위와 다른 단위일 수 있다. 또는, 서브-픽처의 너비의 단위는 제3 단위이고, 높이의 단위는 제4 단위일 수 있다. 제3 단위는 제4 단위보다 클 수 있다. 예를 들어, 제3 단위는 전술한 제1 단위의 m 배수일 수 있고, 제4 단위는 전술한 제1 단위일 수 있다. 상기 m은 2보다 크거나 같은 정수일 수 있다.
전술한 서브-픽처의 너비와 높이의 단위에 대한 실시예는, 픽처를 구성하는 소정의 조각 영역의 단위에 대해서도 동일/유사하게 적용될 수 있다. 여기서, 조각 영역은, 서브-픽처 뿐만 아니라 슬라이스, 타일 또는 브릭 중 적어도 하나를 의미할 수 있다.
[D1-2] 현재 영상에 대한 하이-레벨 영상 분할을 수행함에 있어, 타일 분할을 수행할 수 있다. 여기에서, 상위 영역은 N개의 타일로 분할될 수 있다. 이 때, N은 1이상의 값을 가지는 양의 정수일 수 있다. 여기에서, 타일은 영상에 대한 병렬 부/복호화가 수행되는 단위일 수 있다. 여기에서, 상위 영역은 시퀀스, 픽처, 서브-픽처, 슬라이스 중 하나일 수 있다.
타일 분할을 수행함에 있어, 타일은 균등 분할의 결과일 수 있다. 여기에서,균등 분할은 상위 영상에서 분할된 N개의 타일의 크기(너비 또는 높이 중 적어도 하나)가 서로 같음을 의미할 수 있다. 세부 내용은 [D1-1]의 균등 분할과 같다.
타일 분할을 수행함에 있어, 타일은 불균등 분할의 결과일 수 있다. 여기에서, 불균등 분할은 상위 영상에서 분할된 N개의 타일의 크기(너비 또는 높이 중 적어도 하나)가 서로 다름을 의미할 수 있다. 세부 내용은 [D1-1]의 불균등 분할과 같다.
타일 분할을 수행함에 있어, 상위 영상에서 균등 분할된 블록을 이용하여 타일을 구성할 수 있다. 이 때, 균등 분할 블록은 상기 타일 균등 분할과 같은 방법으로 구성될 수 있다. 세부 내용은 [D1-1]의 균등 분할된 블록을 이용한 분할과 같다.
타일 분할을 수행함에 있어, 상위 영상에서 불균등 분할된 블록을 이용하여 타일을 구성할 수 있다. 이 때, 균등 분할 블록은 상기 타일 불균등 분할과 같은 방법으로 구성될 수 있다. 세부 내용은 [D1-1]의 불균등 분할된 블록을 이용한 분할과 같다.
여기에서, 상위 영역의 수직 방향으로는 타일 균등 분할을 수행하고 수평 방향으로는 타일 불균등 분할을 수행할 수 있다. 여기에서, 상위 영역의 수직 방향으로는 타일 불균등 분할을 수행하고 수평 방향으로는 타일 균등 분할을 수행할 수 있다. 여기에서, 타일의 너비와 높이의 단위는 각각 2의 n제곱, CTB (Coding Tree Block)의 크기(너비, 높이)의 n배수 중 하나일 수 있다. 이 때, n은 0 이상의 값을 갖는 정수일 수 있다.
[D1-3] 현재 영상에 대한 하이-레벨 영상 분할을 수행함에 있어, 브릭 분할을 수행할 수 있다. 여기에서, 상위 영역은 수평 및 수직 중 적어도 하나 이상의 방법으로 N개의 브릭으로 분할될 수 있다. 이 때, N은 1이상의 값을 가지는 양의 정수일 수 있다.
여기에서, 브릭은 서브-타일을 의미할 수도 있고, 슬라이스를 의미할 수도 있다. 브릭은 영상에 대한 병렬 부/복호화가 수행되는 단위일 수 있다. 여기에서, 상위 영역은 시퀀스, 픽처, 서브-픽처, 슬라이스, 타일 중 적어도 하나일 수 있다.
브릭 분할을 수행함에 있어, 브릭은 균등 분할의 결과일 수 있다. 여기에서, 균등 분할은 상위 영상에서 분할된 N개의 브릭의 크기(너비 또는 높이 중 적어도 하나)가 서로 같음을 의미할 수 있다. 세부 내용은 [D1-1]의 균등 분할과 같다.
브릭 분할을 수행함에 있어, 브릭은 불균등 분할의 결과일 수 있다. 여기에서, 불균등 분할은 상위 영상에서 분할된 N개의 브릭의 크기(너비 또는 높이 중 적어도 하나)가 서로 다름을 의미할 수 있다. 세부 내용은 [D1-1]의 불균등 분할과 같다.
브릭 분할을 수행함에 있어, 상위 영상에서 균등 분할된 블록을 이용하여 브릭을 구성할 수 있다. 이 때, 균등 분할 블록은 상기 브릭 균등 분할과 같은 방법으로 구성될 수 있다. 세부 내용은 [D1-1]의 균등 분할된 블록을 이용한 분할과 같다.
브릭 분할을 수행함에 있어, 상위 영상에서 불균등 분할된 블록을 이용하여 브릭을 구성할 수 있다. 이 때, 균등 분할 블록은 상기 브릭 불균등 분할과 같은 방법으로 구성될 수 있다. 세부 내용은 [D1-1]의 불균등 분할된 블록을 이용한 분할과 같다.
여기에서, 상위 영역의 수직 방향으로는 브릭 균등 분할을 수행하고 수평 방향으로는 브릭 불균등 분할을 수행할 수 있다. 여기에서, 상위 영역의 수직 방향으로는 브릭 불균등 분할을 수행하고 수평 방향으로는 브릭 균등 분할을 수행할 수 있다. 여기에서, 브릭의 너비와 높이의 단위는 각각 2의 n제곱, CTB (Coding Tree Block)의 크기(너비, 높이)의 n배수 중 하나일 수 있다. 이 때, n은 0 이상의 값을 갖는 정수일 수 있다.
[D1-4] 현재 영상에 대한 하이-레벨 영상 분할을 수행함에 있어, 슬라이스 분할을 수행할 수 있다. 여기에서, 상위 영역은 N개의 슬라이스로 분할될 수 있다. 이 때, N은 1이상의 값을 가지는 양의 정수일 수 있다.
여기에서, 슬라이스는 픽처, 서브-픽처 그룹, 서브-픽처, 타일 그룹, 타일, 브릭 그룹 또는 브릭을 의미할 수 있으며, 로우-레벨의 영상 부호화 정보가 전송되는 단위이거나, 병렬 부/복호화가 수행되는 단위일 수 있다. 여기에서, 상위 영역은 시퀀스, 픽처, 서브-픽처, 또는 타일 중 적어도 하나일 수 있다.
슬라이스 분할을 수행함에 있어, 슬라이스는 균등 분할의 결과일 수 있다. 여기에서, 균등 분할은 상위 영상에서 분할된 N개의 슬라이스의 크기(너비 또는 높이 중 적어도 하나)가 서로 같음을 의미할 수 있다. 세부 내용은 [D1-1]의 균등 분할과 같다.
슬라이스 분할을 수행함에 있어, 슬라이스는 불균등 분할의 결과일 수 있다. 여기에서, 불균등 분할은 상위 영상에서 분할된 N개의 슬라이스의 크기(너비 또는 높이 중 적어도 하나)가 서로 다름을 의미할 수 있다. 세부 내용은 [D1-1]의 불균등 분할과 같다.
슬라이스 분할을 수행함에 있어, 상위 영상에서 균등 분할된 블록을 이용하여 슬라이스를 구성할 수 있다. 이 때, 균등 분할 블록은 상기 슬라이스 균등 분할과 같은 방법으로 구성될 수 있다. 세부 내용은 [D1-1]의 균등 분할된 블록을 이용한 분할과 같다.
슬라이스 분할을 수행함에 있어, 상위 영상에서 불균등 분할된 블록을 이용하여 타일을 구성할 수 있다. 이 때, 균등 분할 블록은 상기 슬라이스 불균등 분할과 같은 방법으로 구성될 수 있다. 세부 내용은 [D1-1]의 불균등 분할된 블록을 이용한 분할과 같다.
여기에서, 상위 영역의 수직 방향으로는 슬라이스 균등 분할을 수행하고 수평 방향으로는 슬라이스 불균등 분할을 수행할 수 있다. 여기에서, 상위 영역의 수직 방향으로는 슬라이스 불균등 분할을 수행하고 수평 방향으로는 슬라이스 균등 분할을 수행할 수 있다. 여기에서, 슬라이스의 너비와 높이의 단위는 각각 2의 n제곱, CTB (Coding Tree Block)의 크기(너비, 높이)의 n배수 중 하나일 수 있다. 이 때, n은 0 이상의 값을 갖는 정수일 수 있다.
슬라이스 분할을 수행함에 있어, 상기 서브-픽처 분할을 이용할 수 있다. 예를 들어, 상기 [D1-1] 방법으로 분할된 서브-픽처 각각에 대해서 슬라이스 분할을 수행할 수 있다. 예를 들어, 상기 [D1-1] 방법으로 분할된 서브-픽처 중 n개의 서브-픽처를 결합한 영역으로 슬라이스 분할을 수행할 수 있다. 이 때, n은 1 이상의 정수일 수 있다.
슬라이스 분할을 수행함에 있어, 상기 타일 분할을 이용할 수 있다. 예를 들어, 상기 [D1-2] 방법으로 분할된 타일 각각에 대해서 슬라이스 분할을 수행할 수 있다. 예를 들어, 상기 [D1-2] 방법으로 분할된 타일 중 n개의 타일을 결합한 영역으로 슬라이스 분할을 수행할 수 있다. 이 때, n은 1 이상의 정수일 수 있다.
슬라이스 분할을 수행함에 있어, 상기 브릭 분할을 이용할 수 있다. 예를 들어, 상기 [D1-3] 방법으로 분할된 브릭 각각에 대해서 슬라이스 분할을 수행할 수 있다. 예를 들어, 상기 [D1-3] 방법으로 분할된 브릭 중 n개의 브릭을 결합한 영역으로 슬라이스 분할을 수행할 수 있다. 이 때, n은 1 이상의 정수일 수 있다.
하이 레벨 영상 분할 정보 부/복호화 단계
[D2] 현재 비디오/영상에 대한 상기 [D1]의 하이 레벨 영상 분할 정보를 부/복호화함에 있어, 다양한 하이 레벨 파라미터 세트(Parameter Set) 중 적어도 하나 이상의 파라미터 세트에 속하는 하이 레벨 영상 분할 정보를 부/복호화할 수 있다.
하이 레벨 파라미터 세트는 디코딩 파라미터 세트(Decoding Parameter Set; DPS), 비디오 파라미터 세트(Video Parameter Set; VPS), 시퀀스 파라미터 세트(Sequence Parameter Set; SPS), 픽처 파라미터 세트(Picture Parameter Set; PPS), 적응 파라미터 세트(Adaptation Parameter Set; APS), 픽처 헤더(Picture Header; PH) 등 다양한 파라미터 세트 중 적어도 하나일 수 있다.
표 1 내지 표 5 는 DPS, VPS, SPS, PPS, APS 구문 구조의 예이다.
decoding_parameter_set_rbsp( ) { | Descriptor |
... | |
dps_decoding_parameter_set_id | u(4) |
... | |
} |
video_parameter_set_rbsp( ) { | Descriptor |
... | |
vps_video_parameter_set_id | u(4) |
... | |
} |
seq_parameter_set_rbsp( ) { | Descriptor |
... | |
sps_decoding_parameter_set_id | u(4) |
sps_video_parameter_set_id | u(4) |
... | |
} |
pic_parameter_set_rbsp( ) { | Descriptor |
... | |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
} |
adaptation_parameter_set_rbsp( ) { | Descriptor |
... | |
adaptation_parameter_set_id | u(5) |
... | |
} |
여기서 상기 [D1]의 하이 레벨 영상 분할 정보는 서브-픽처, 타일, 브릭, 슬라이스 중 적어도 하나 이상의 영상 분할 정보일 수 있다. 또한, 영상 분할은, 전술한 소정의 단위를 결합하여 수행될 수도 있는바, 본 발명의 하이 레벨 영상 분할 정보는 영상 결합 정보를 더 포함할 수도 있다. 이하, 영상 분할 정보는 영상 결합 정보로 해석될 수도 있다.
[D2-1] 상기 [D1]의 하이 레벨 영상 분할 정보를 부/복호화 함에 있어, 특정 파라미터 세트 내에서 영상 분할 정보를 부/복호화할 수 있다.
예를 들어, 상기 [D1]의 하이 레벨 영상 분할 정보는 DPS 내에서 부/복호화될 수 있다. 예를 들어, 상기 [D1]의 하이 레벨 영상 분할 정보는 VPS 내에서 부/복호화될 수 있다. 예를 들어, 상기 [D1]의 하이 레벨 영상 분할 정보는 SPS 내에서 부/복호화될 수 있다. 예를 들어, 상기 [D1]의 하이 레벨 영상 분할 정보는 PPS 내에서 부/복호화될 수 있다. 예를 들어, 상기 [D1]의 하이 레벨 영상 분할 정보는 APS 내에서 부/복호화될 수 있다.
[D2-2] 상기 [D1]의 하이 레벨 영상 분할 정보를 부/복호화함에 있어, 하나 이상의 파라미터 세트 내에서 영상 분할 정보를 부/복호화 할 수 있다. 여기서 파라미터 세트는 VPS, SPS, PPS, APS 등 다양한 파라미터 셋 중 적어도 하나 이상일 수 있다.
[D2-2-1] 상기 [D1]의 하이 레벨 영상 분할 정보를 부/복호화함에 있어, 전술한 소정의 단위에 따라 하나 이상의 파라미터 세트 내에서 영상 분할 정보를 부/복호화 할 수 있다.
예를 들어, 전술한 소정의 단위 중 일부(e.g., 서브-픽처)에 대한 분할 정보는 나머지(e.g., 타일, 브릭 또는 슬라이스)보다 상위 레벨에서 부/복호화될 수 있다. 예를 들어, 서브-픽처의 분할 정보는 SPS에서, 타일/브릭/슬라이스의 분할 정보는 PPS에서 각각 부/복호화될 수 있다.
표 6은 서브-픽처의 분할 정보를 SPS에서 부/복호화하는 구문의 예시이다.
seq_parameter_set_rbsp( ) { | Descriptor |
... | |
sps_decoding_parameter_set_id | u(4) |
sps_video_parameter_set_id | u(4) |
... | |
subpics_present_flag | u(1) |
... | |
} |
여기서, subpics_present_flag는, 하나의 서브-픽처로만 구성되는지 여부를 지시할 수도 있다. 예를 들어, subpics_present_flag가 0인 경우, 현재 픽처는 하나의 서브-픽처로만 구성되고, subpics_present_flag가 1인 경우, 현재 픽처는 하나 또는 그 이상의 서브-픽처로 구성될 수 있다. 또는, subpics_present_flag는, 서브-픽처 분할 정보가 SPS 또는 SPS의 하위 레벨에서 시그날링되는지 여부를 나타낼 수 있다.
[D1-1]과 같이 현재 영상에 대해 서브-픽처 분할을 수행함에 있어, 균등 분할만 수행할 경우, 표 7과 같이 서브-픽처의 너비와 높이만으로 SPS에서 서브-픽처 분할 정보를 부/복호화할 수 있다.
seq_parameter_set_rbsp( ) { | Descriptor |
... | |
sps_decoding_parameter_set_id | u(4) |
sps_video_parameter_set_id | u(4) |
... | |
subpics_present_flag | u(1) |
if( subpics_present_flag ) { | |
max_subpics_minus1 | |
subpic_grid_col_width_minus1 | |
subpic_grid_row_height_minus1 | |
for( i = 0; i < NumSubPicGridRows; i++ ) | |
for( j = 0; j < NumSubPicGridCols; j++ ) | |
subpic_grid_idx[ i ][ j ] | |
for( i = 0; i <= NumSubPics; i++ ) { | |
subpic_treated_as_pic_flag[ i ] | |
loop_filter_across_subpic_enabled_flag[ i ] | |
} | |
} | |
... | |
} |
여기서, max_subpics_minus1는 하나의 픽처를 구성하는 서브-픽처의 개수를 나타낼 수 있다. max_subpics_minus1는 서브-픽처 분할 정보의 존부를 지시하는 subpics_present_flag에 기초하여 부/복호화될 수 있다. subpic_grid_col_width_minus1는 서브-픽처의 너비를, subpic_grid_row_height _minus1는 서브-픽처의 높이를 각각 의미할 수 있다.
상기 분할 정보는 2의 n제곱, CTB 크기(너비, 높이) 단위로 시그날링될 수 있다. 이 때, n은 0 이상의 값을 갖는 정수일 수 있다.
한편, 분할 방향에 따라, 서브-픽처의 너비와 높이 중 적어도 하나에 대한 정보는 생략될 수 있다. 분할 방향은 부호화/복호화 장치에 기-정의될 수도 있고, 분할 방향 정보가 별도로 시그날링될 수도 있다. 또는, 하나의 픽처에 속한 서브-픽처의 개수 정보만이 시그날링되고, 서브-픽처의 크기 정보는 시그날링되지 않을 수도 있다. 이 경우, 픽처의 우측 경계에 접한 서브-픽처는 좌측 경계에 접한 서브-픽처보다 더 큰 너비를 가질 수 있다. 마찬가지로, 픽처의 하단 경계에 접한 서브-픽처는 상단 경계에 접한 서브-픽처보다 더 큰 높이를 가질 수 있다.
예를 들어, [D1-1]과 같이 현재 영상에 대해 서브-픽처 분할을 수행함에 있어, 균등 분할과 불균등 분할 중 적어도 하나 이상을 수행할 경우, 표 8과 같이 SPS에서 서브-픽처 분할 정보를 부/복호화할 수 있다.
seq_parameter_set_rbsp( ) { | Descriptor |
... | |
sps_decoding_parameter_set_id | u(4) |
sps_video_parameter_set_id | u(4) |
... | |
subpics_present_flag | u(1) |
if( subpics_present_flag ) { | |
... | |
uniform_subpic_grid_spacing_flag | |
... | |
if(uniform_subpic_grid_spacing_flag) { | |
... | |
subpic_cols_width_minus1 | |
subpic_rows_height_minus1 | |
... | |
} else { | |
... | |
num_subpic_columns_minus1 | |
num_subpic_columns_minus1 | |
... | |
for( i = 0; i < num_subpic_columns_minus1; i++ ) | |
subpic_column_width_minus1[ i ] | |
for( i = 0; i < num_ subpic _rows_minus1; i++ ) | |
subpic_row_height_minus1[ i ] | |
... | |
} | |
... | |
} |
여기서, uniform_subpic_grid_spacing_flag는 서브-픽처가 균등 분할인지 아니면 불균등 분할인지를 지시하는 플래그일 수 있다. 즉, uniform_subpic_grid_spacing_flag는 하나의 픽처에 속한 모든 서브-픽처가 subpic_cols_width_minus1와 subpic_rows_height_minus1에 의해 특정되는 크기를 동일하게 가지는지 여부를 지시할 수 있다. subpic_cols_width_minus1는 서브-픽처의 너비를, subpic_rows_height_minus1는 서브-픽처의 높이를 각각 의미할 수 있다.
상기 너비/높이 정보는 2의 n제곱, CTB (Coding Tree Block) 크기(너비, 높이) 단위로 시그날링될 수 있다. 이 때, n은 0 이상의 값을 갖는 정수일 수 있다. 상기 너비/높이 정보는 현재 픽처의 첫번째 서브-픽처에 대해서만 부/복호화되고, 나머지 서브-픽처는 첫번째 서브-픽처에 대해서 획득된 너비/높이 정보를 공유할 수 있다.
이때, CTB의 너비 혹은 높이 중 적어도 하나 이상은 2의 n제곱수 일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상은 128일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상은 64일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상은 32일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상은 16일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상은 8일 수 있다.
서브-픽처의 너비 혹은 높이 중 적어도 하나 이상은 CTB의 너비 혹은 높이 중 적어도 하나 이상의 배수 일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상이 128일 경우, 서브-픽처의 너비 혹은 높이 중 적어도 하나 이상은 128의 배수일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상이 64일 경우, 서브-픽처의 너비 혹은 높이 중 적어도 하나 이상은 64의 배수일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상이 32일 경우, 서브-픽처의 너비 혹은 높이 중 적어도 하나 이상은 32의 배수일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상이 16일 경우, 서브-픽처의 너비 혹은 높이 중 적어도 하나 이상은 16의 배수일 수 있다. 예를 들어, CTB의 너비 혹은 높이 중 적어도 하나 이상이 8일 경우, 서브-픽처의 너비 혹은 높이 중 적어도 하나 이상은 8의 배수일 수 있다.
num_subpic_columns_minus1는 현재 영상 너비에 포함되는 서브-픽처의 개수를 의미하고, num_subpic_rows_minus1는 현재 영상 높이에 포함되는 서브-픽처의 개수를 의미할 수 있다. 서브-픽처의 개수 정보는 표 8과 같이 수직/수평 방향에 대해서 각각 정의되어 2개의 신택스로 부호화될 수도 있고, 표 7과 같이 서브-픽처의 총 개수를 나타내는 1개의 신택스로 부호화될 수도 있다.
한편, SPS에서 현재 영상의 너비와 높이가 제공되는 경우, 표 9와 같이 마지막 색인을 가진 서브-픽처의 경우, subpic_cols_width_minus1과 subpic_cols_ height _minus1을 부/복호화하지 않을 수 있다.
seq_parameter_set_rbsp( ) { | Descriptor |
... | |
sps_decoding_parameter_set_id | u(4) |
sps_video_parameter_set_id | u(4) |
... | |
subpics_present_flag | u(1) |
if( subpics_present_flag ) { | |
... | |
} else { | |
... | |
for( i = 0; i < num_subpic_columns_minus1 - 1; i++ ) | |
subpic _column_width_minus1[ i ] | |
for( i = 0; i < num_subpic_rows_minus1 - 1; i++ ) | |
subpic_row_height_minus1[ i ] | |
... | |
} | |
... | |
} |
표 10은 타일/브릭/슬라이스 분할 정보를 PPS에서 부/복호화하는 부분적인 구문의 예시이다.
pic_parameter_set_rbsp( ) { | Descriptor |
... | |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
single_tile_in_pic_flag | u(1) |
if( !single_tile_in_pic_flag ) { | |
... | |
brick_splitting_present_flag | u(1) |
... | |
single_brick_per_slice_flag | u(1) |
if( !single_brick_per_slice_flag ) | |
rect_slice_flag | u(1) |
} | |
... | |
} |
여기서 single_tile_in_pic_flag는 타일이 하나의 픽처인지 여부를 지시하는 플래그일 수 있다. 여기서 brick_splitting_present_flag는 하나의 픽처에 속한 다수의 타일 중 적어도 하나 이상이 다수의 brick으로 분할되는지 여부를 지시하는 플래그일 수 있다. 또는, brick_splitting_present_flag는, 하나의 타일이 복수의 브릭으로 분할되는지 여부를 지시하거나, 브릭 분할 정보가 시그날링되는지 여부를 지시할 수 있다. 여기서 single_brick_per_slice_flag는 하나의 브릭이 하나의 슬라이스인지 여부를 지시하는 플래그일 수 있다. 여기서 rect_slice_flag는 슬라이스가 직사각형 형태인지 레스터 스캔 형태인지 여부를 지시하는 플래그일 수 있다.
한편, uniform_tile_spacing_flag가 1인 경우, 픽처 내 타일의 수를 유도할 수 없고, 시그날링하여 알려줄 수 있다. uniform_tile_spacing_flag가 1인 경우, 픽처를 구성하는 타일의 크기(너비 또는 높이 중 적어도 하나만)를 나타내는 정보가 시그날링될 수 있다. uniform_tile_spacing_flag가 0인 경우, 하나의 픽처를 구성하는 타일의 개수를 나타내는 정보가 시그날링되고, 타일 개수에 따른 각 타일의 크기(너비 또는 높이 중 적어도 하나만)를 나타내는 정보가 시그날링될 수 있다.
다만, 이에 한정되지 아니하며, uniform_tile_spacing_flag와 관계없이, 타일의 개수를 나타내는 정보 또는 타일 개수에 따른 각 타일의 크기를 나타내는 정보 중 적어도 하나가 시그날링될 수도 있다. 이때, 타일의 개수를 나타내는 정보는, 픽처를 구성하는 타일 열(column) 너비의 개수 정보와 타일 행(row) 높이의 개수 정보를 포함하며, 이는 각각 시그날링될 수 있다. 다만, 타일의 개수를 나타내는 정보와 타일의 크기를 나타내는 정보는 하나의 픽처가 소정의 단위(e.g., 슬라이스, 타일)로 분할되는 경우에 한하여 시그날링될 수 있다.
예를 들어, [D1-2]와 같이 현재 영상에 대해 타일 분할을 수행함에 있어 균등 분할만 수행할 경우, 표 11과 같이 타일의 너비와 높이만으로 PPS에서 타일 분할 정보를 부/복호화 할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
single_tile_in_pic_flag | u(1) |
if( !single_tile_in_pic_flag ) { | |
... | |
tile_cols_width_minus1 | ue(v) |
tile_rows_height_minus1 | ue(v) |
... | |
} | |
... | |
} |
여기서, tile_cols_width_minus1은 타일의 너비를 의미하고, tile_rows_width_minus1은 타일의 높이를 의미할 수 있다.
예를 들어, [D1-2]와 같이 현재 영상에 대해 타일 분할을 수행함에 있어 균등 분할과 불균등 분할 중 적어도 하나 이상을 수행할 경우, 표 12과 같이 PPS에서 타일 분할 정보를 부/복호화 할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
single_tile_in_pic_flag | u(1) |
if( !single_tile_in_pic_flag ) { | |
... | |
uniform_tile_spacing_flag | u(1) |
... | |
if(uniform_tile_spacing_flag) { | |
... | |
tile_cols_width_minus1 | ue(v) |
tile_rows_height_minus1 | ue(v) |
... | |
} else { | |
... | |
num_tile_columns_minus1 | ue(v) |
num_tile_rows_minus1 | ue(v) |
... | |
for( i = 0; i < num_tile_columns_minus1; i++ ) | |
tile_column_width_minus1[ i ] | ue(v) |
for( i = 0; i < num_ tile_rows_minus1; i++ ) | |
tile_row_height_minus1[ i ] | ue(v) |
... | |
} | |
... | |
} |
여기서, uniform_tile_spacing_flag는 타일이 균등 분할인지 불균등 분할인지 알려주는 플래그일 수 있다. 타일이 균등 분할되는 경우, tile_col_width_minus1와 tile_row_height_minus1가 시그날링될 수 있다. tile_col_width_minus1는 타일의 너비를 의미하고, tile_row_height_minus1는 타일의 높이를 의미할 수 있다. 반면, 타일이 불균등 분할되는 경우, 타일의 개수를 나타내는 정보가 시그날링되고, 타일 개수에 따른 각 타일의 크기를 나타내는 정보(tile_column_width_minus1[i], tile_row_height_minus1[i])가 시그날링될 수 있다.
다만, 이에 한정되지 아니하며, 부/복호화기에서 균등 분할 또는 불균등 분할 중 어느 하나만을 사용하도록 설정될 수도 있다. 이 경우, uniform_tile_spacing_flag와 관계없이, 타일의 개수를 나타내는 정보 또는 타일 개수에 따른 각 타일의 크기를 나타내는 정보 중 적어도 하나가 시그날링될 수도 있다.
상기 너비/높이 정보는 2의 n제곱, CTB (Coding Tree Block) 크기(너비, 높이) 단위로 시그날링 할 수 있다. 이 때, n은 0 이상의 값을 갖는 정수일 수 있다. 예를 들어 tile_col_width_minus1는 너비가 128인 CTB 단위로 전송할 수 있다. 예를 들어 tile_col_width_minus1는 너비가 64인 CTB 단위로 전송할 수 있다. 예를 들어, tile_col_width_minus1는 너비가 32인 CTB 단위로 전송할 수 있다. 예를 들어 tile_col_width_minus1는 너비가 16인 CTB 단위로 전송할 수 있다. 예를 들어 tile_col_width_minus1는 너비가 8인 CTB 단위로 전송할 수 있다. 예를 들어, tile_row_height_minus1는 너비가 4인 CTB 단위로 전송할 수 있다. 예를 들어, tile_row_height_minus1는 높이가 128인 CTB 단위로 전송할 수 있다. 예를 들어, tile_row_height_minus1는 높이가 64인 CTB 단위로 전송할 수 있다. 예를 들어, tile_row_height_minus1는 높이가 32인 CTB 단위로 전송할 수 있다. 예를 들어, tile_row_height_minus1는 높이가 16인 CTB 단위로 전송할 수 있다. 예를 들어 tile_row_height_minus1는 높이가 8인 CTB 단위로 전송할 수 있다.
여기서 tile_col_width_minus1을 tile_col_width_delta로 대체할 수 있다. 상기 tile_col_width_delta는 현재 타일의 너비와 이전 타일의 너비의 차이를 의미할 수 있다. 여기서, 이전 타일은, 현재 타일을 기준으로 좌측 열 또는 상단 행에 속한 타일을 의미할 수 있다. 이전 타일은, 현재 타일 이전의 코딩 순서(또는 스캔 순서)를 가진 타일을 의미할 수 있다. 또는, 이전 타일은, 픽처의 최좌측 열 또는 최상단 행에 속한 타일 중 어느 하나이거나, 픽처의 좌상단에 위치한 타일일 수 있다.
상기 차이가 양수 혹은 음수 혹은 0일 수 있다. 상기 차이가 0인 경우 부호에 대한 정보를 보내지 않을 수 있다. 상기 차이가 양수 혹은 음수인 경우, 해당 정보를 1개의 플래그를 이용해 알려줄 수 있고, sign_tile_col_width_delta와 같이 명칭할 수 있다.
여기서 tile_row_height_minus1을 tile_row_height_delta로 대체할 수 있다. 상기 tile_row_height_delta는 현재 타일의 높이와 이전 타일의 너비(또는 높이)의 차이를 의미할 수 있다. 여기서, 이전 타일은, 현재 타일을 기준으로 좌측 열 또는 상단 행에 속한 타일을 의미할 수 있다. 이전 타일은, 현재 타일 이전의 코딩 순서(또는 스캔 순서)를 가진 타일을 의미할 수 있다. 또는, 이전 타일은, 픽처의 최좌측 열 또는 최상단 행에 속한 타일 중 어느 하나이거나, 픽처의 좌상단에 위치한 타일일 수 있다.
상기 차이가 양수 혹은 음수 혹은 0일 수 있다. 상기 차이가 0인 경우 부호에 대한 정보를 보내지 않을 수 있다. 상기 차이가 양수 혹은 음수인 경우, 해당 정보를 1개의 플래그를 이용해 알려줄 수 있고, sign_tile_row_hegith_delta와 같이 명칭할 수 있다.
여기서, num_tile_columns_minus1는 현재 영상 너비에 포함되는 타일의 개수 즉, 현재 영상을 구성하는 타일 행 너비의 개수를 의미하고, num_tile_rows_minus1는 현재 영상 높이에 포함되는 타일의 개수 즉, 현재 영상을 구성하는 타일 열 높이의 개수를 의미할 수 있다.
여기서, uniform_tile_spacing_flag는 uniform_tile_row_spacing_flag와 uniform_tile_col_spacing_flag로 구분하여 시그날링할 수도 있다. uniform_tile_row_spacing_flag와 uniform_tile_col_spacing_flag는 타일의 너비와 높이 각각에 대해서 균등 분할인지 아니면 불균등 분할인지를 지시하는 플래그이며, 표 13과 같이 부/복호화할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
single_tile_in_pic_flag | u(1) |
if( !single_tile_in_pic_flag ) { | |
... | |
uniform_tile_row_spacing_flag | u(1) |
uniform_tile_col_spacing_flag | u(1) |
... | |
if(uniform_tile_row_spacing_flag) { | |
... | |
tile_rows_height_minus1 | ue(v) |
... | |
} else { | |
... | |
num_tile_rows_minus1 | ue(v) |
... | |
for( i = 0; i < num_ tile_rows_minus1; i++ ) | |
tile_row_height_minus1[ i ] | ue(v) |
... | |
} | |
... | |
if(uniform_tile_col_spacing_flag) { | |
... | |
tile_cols_width _minus1 | ue(v) |
... | |
} else { | |
... | |
num_tile_cols_minus1 | ue(v) |
... | |
for( i = 0; i < num_ tile_cols_minus1; i++ ) | |
tile_col_width _minus1[ i ] | ue(v) |
... | |
} |
SPS에서 현재 영상의 너비와 높이가 제공되는 경우, 표 14와 같이 마지막 색인의 타일에 대해서 tile_cols_width_minus1과 tile_rows_height_minus1은 부/복호화되지 않을 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
single_tile_in_pic_flag | u(1) |
if( !single_tile_in_pic_flag ) { | |
... | |
uniform_tile_spacing_flag | u(1) |
... | |
if(uniform_tile_spacing_flag) { | |
... | |
tile_cols_width_minus1 | ue(v) |
tile_rows_height_minus1 | ue(v) |
... | |
} else { | |
... | |
num_tile_columns_minus1 | ue(v) |
num_tile _rows_minus1 | ue(v) |
... | |
for( i = 0; i < num_tile_columns_minus1-1; i++ ) | |
tile_column_width_minus1[ i ] | ue(v) |
for( i = 0; i < num_ tile_rows_minus1-1; i++ ) | |
tile_row_height_minus1[ i ] | ue(v) |
... | |
} | |
... | |
} |
[D1-2]와 같이 현재 영상에 대해 타일 분할을 수행함에 있어 표 15와 같이 PPS에서 타일 분할 정보를 부/복호화할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
no_pic_partition_flag | u(1) |
if( !no_pic_partition_flag ) { | |
num_exp_tile_columns_minus1 | ue(v) |
num_exp_tile_rows_minus1 | ue(v) |
for( i = 0; i <= num_exp_tile_columns_minus1; i++ ) | |
tile_column_width_minus1[ i ] | ue(v) |
for( i = 0; i <= num_exp_tile_rows_minus1; i++ ) | |
tile_row_height_minus1[ i ] | ue(v) |
여기서, no_pic_partition_flag는 픽처 분할이 수행되는지 여부를 지시할 수 있다. 예를 들어, no_pic_partition_flag가 1인 경우, 픽처 분할이 수행되지 않고, no_pic_partition_flag가 0인 경우, 하나의 픽처는 다수의 타일 또는 슬라이스로 분할될 수 있다. 픽처 내에서 타일 혹은 슬라이스로의 분할 유무를 의미할 수 있다.
여기서, num_exp_tile_columns_minus1는 명시적으로 보내야 할 타일 열 너비의 개수를 나타낼 수 있다. num_exp_tile_columns_minus1는 하나의 픽처를 구성하는 타일 열의 개수를 나타낼 수도 있다. 하나의 픽처를 구성하는 타일 열의 개수는 num_exp_tile_columns_minus1의 값에 1을 더한 값으로 유도될 수 있다. 이때, num_exp_tile_columns_minus1은 명시적으로 보내야 할 타일 열 너비의 개수를 나타내는 syntax의 예로 num_exp_tile_columns로 또한 표현이 가능하다.
num_exp_tile_columns_minus1는, 좌측에서 우측 방향을 기준으로, 타일이 균등 분할로 분할되기까지의 타일의 너비 개수를 나타낼 수 있다. 즉, num_exp_tile_columns_minus1는, 현재 픽처의 너비를 분할함에 있어서, 타일이 균등 분할되는 위치를 특정할 수 있다.
예를 들어, num_exp_tile_columns_minus1의 값이 0인 경우, 이는 픽처의 너비에 대한 분할이 균등 분할에 기초하여 수행됨을 의미할 수 있다. num_exp_tile_columns_minus1의 값이 1인 경우, 좌측에서 우측 방향으로 두번째 타일까지는 불균등 분할을 통해 구성되고, 세번째 타일을 포함한 나머지 타일은 균등 분할을 통해 구성됨을 의미할 수 있다.
또는, num_exp_tile_columns_minus1는, 우측에서 좌측 방향을 기준으로, 타일이 균등 분할로 분할되기까지의 타일의 너비 개수를 나타낼 수 있다.
예를 들어, num_exp_tile_columns_minus1의 값이 0인 경우, 이는 픽처의 너비에 대한 분할이 균등 분할에 기초하여 수행됨을 의미할 수 있다. num_exp_tile_columns_minus1의 값이 1인 경우, 우측에서 좌측 방향으로 두번째 타일까지는 불균등 분할을 통해 구성되고, 세번째 타일을 포함한 나머지 타일은 균등 분할을 통해 구성됨을 의미할 수 있다.
여기서, num_exp_tile_rows_minus1는 명시적으로 보내야 할 타일 행 높이의 개수를 나타낼 수 있다. num_exp_tile_rows_minus1는 하나의 픽처를 구성하는 타일 행의 개수를 나타낼 수도 있다. 하나의 픽처를 구성하는 타일 행의 개수는 num_exp_tile_rows_minus1의 값에 1을 더한 값으로 유도될 수 있다. 이때, num_exp_tile_rows_minus1은 명시적으로 보내야 할 타일 행 높이의 개수를 나타내는 syntax의 예로 num_exp_tile_rows로 또한 표현이 가능하다.
num_exp_tile_rows_minus1는, 상단에서 하단 방향을 기준으로, 타일이 균등 분할로 분할되기까지의 타일의 높이 개수를 나타낼 수 있다. 즉, num_exp_tile_columns_minus1는, 현재 픽처의 높이를 분할함에 있어서, 타일이 균등 분할되는 위치를 특정할 수 있다.
예를 들어, num_exp_tile_rows_minus1의 값이 0인 경우, 이는 픽처의 높이에 대한 분할이 균등 분할에 기초하여 수행됨을 의미할 수 있다. num_exp_tile_rows_minus1의 값이 1인 경우, 상단에서 하단 방향으로 두번째 타일까지는 불균등 분할을 통해 구성되고, 세번째 타일을 포함한 나머지 타일은 균등 분할을 통해 구성됨을 의미할 수 있다.
또는, num_exp_tile_rows_minus1는, 하단에서 상단 방향을 기준으로, 타일이 균등 분할로 분할되기까지의 타일의 높이 개수를 나타낼 수도 있다.
예를 들어, num_exp_tile_rows_minus1의 값이 0인 경우, 이는 픽처의 높이에 대한 분할이 균등 분할에 기초하여 수행됨을 의미할 수 있다. num_exp_tile_columns_minus1의 값이 1인 경우, 하단에서 상단 방향으로 두번째 타일까지는 불균등 분할을 통해 구성되고, 세번째 타일을 포함한 나머지 타일은 균등 분할을 통해 구성됨을 의미할 수 있다.
tile_column_width_minus1[ i ]는 i번째 타일의 너비를 나타내고, tile_row_height_minus1[ i ]는 i번째 타일의 높이를 나타낼 수 있다.
타일 분할 정보를 부/복호화 함에 있어, 일부 신택스 요소들의 부/복호화를 생략할 수 있다. 현재 픽처의 타일 분할 정보가 명시적으로 전송되는 타일의 개수에 관한 정보로 부/복호화될 때, 각 타일의 높이/너비에 관한 정보의 부/복호화가 생략될 수 있다.
예를 들어, 픽처가 다수의 타일로 분할되지 않는 경우, 분할되지 않은 변에 대해서 타일의 크기에 관한 정보의 부/복호화가 생략될 수 있다.
이때, 명시적으로 전송되는 타일의 개수는 num_exp_tile_columns와 num_exp_tile_rows로 부/복호화 될 수 있다. num_exp_tile_columns가 0이면, 픽처의 열이 타일로 분할되지 않음을 의미할 수 있으며, 타일 너비에 관한 정보의 부/복호화가 생략될 수 있다. num_exp_tile_rows가 0이면, 픽처의 행이 타일로 분할되지 않음을 의미할 수 있으며, 타일 높이에 관한 정보의 부/복호화가 생략될 수 있다.
이 때, 부/복호화되는 신택스 구조는 표 16과 같이 표현할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
... | |
no_pic_partition_flag | u(1) |
if( !no_pic_partition_flag ) { | |
pps_log2_ctu_size_minus5 | u(2) |
num_exp_tile_columns | ue(v) |
num_exp_tile_rows | ue(v) |
for( i = 0; i < num_exp_tile_columns; i++ ) | |
tile_column_width_minus1[ i ] | ue(v) |
for( i = 0; i < num_exp_tile_rows; i++ ) | |
tile_row_height_minus1[ i ] | ue(v) |
... |
이 때, 부/복호화가 생략된 타일의 크기는 표 17과 같이 픽처의 크기로 유도될 수 있다.
The variable NumTileColumns, specifying the number of tile columns, and the list colWidth[ i ] for i ranging from 0 to NumTileColumns - 1, inclusive, specifying the width of the i-th tile column in units of CTBs, are derived as follows: remainingWidthInCtbsY = PicWidthInCtbsY if( num_exp_tile_columns == 0) { NumTileColumns = 0 colWidth[ 0 ] = PicWidthInCtbsY } else { for( i = 0; i < num_exp_tile_columns ; i++ ) { colWidth[ i ] = tile_column_width_minus1[ i ] + 1 remainingWidthInCtbsY -= colWidth[ i ] } uniformTileColWidth = tile_column_width_minus1[ num_exp_tile_columns ] + 1 while( remainingWidthInCtbsY >= uniformTileColWidth ) { colWidth[ i++ ] = uniformTileColWidth remainingWidthInCtbsY -= uniformTileColWidth } if( remainingWidthInCtbsY > 0 ) colWidth[ i++ ] = remainingWidthInCtbsY NumTileColumns = i } The variable NumTileRows, specifying the number of tile rows, and the list RowHeight[ j ] for j ranging from 0 to NumTileRows - 1, inclusive, specifying the height of the j-th tile row in units of CTBs, are derived as follows: remainingHeightInCtbsY = PicHeightInCtbsY if( num_exp_tile_rows == 0) { NumTileRows = 0 RowHeight [ 0 ] = PicHeightInCtbsY } else { for( i = 0; i < num_exp_tile_rows; i++ ) { RowHeight [ i ] = tile_row_height_minus1[ i ] + 1 remainingHeightInCtbsY -= RowHeight [ i ] } uniformTileRowHeight = tile_row_height_minus1[ num_exp_tile_rows ] + 1 while( remainingHeightInCtbsY >= uniformTileRowHeight ) { RowHeight [ i++ ] = uniformTileRowHeight remainingHeightInCtbsY -= uniformTileRowHeight } if( remainingHeightInCtbsY > 0 ) RowHeight[ i++ ] = remainingHeightInCtbsY NumTileRows = i } |
[D1-3]과 같이 현재 영상에 대해 브릭 분할을 수행함에 있어, 수평 분할 또는 수직 분할 중 적어도 하나 이상의 분할을 수행할 수 있다.
예를 들어, 현재 영상에 대해 브릭 분할을 수행함에 있어, 수평 또는 수직 분할만 수행할 수 있다.
예를 들어, 현재 영상에 대해 수평 브릭 분할을 수행함에 있어, 균등 분할과 불균등 분할 중 적어도 하나 이상을 수행할 경우, 표 18과 같이 PPS에서 브릭 분할 정보를 부/복호화 할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
uniform_brick_spacing_flag[ i ] | u(1) |
... | |
if( uniform_brick_spacing_flag[ i ] ) | |
brick_height_minus1[ i ] | ue(v) |
else { | |
num_brick_rows_minus2[ i ] | ue(v) |
for( j = 0; j <= num_brick_rows_minus2[ i ]; j++ ) | |
brick_row_height_minus1[ i ][ j ] | ue(v) |
} | |
... | |
} |
여기서, num_brick_rows_minus2는 현재 영상에 포함되는, 그리고 수평 방향으로 분할되는 브릭의 개수를 의미할 수 있다. 현재 영상은 픽처, 슬라이스 또는 타일을 의미할 수 있다. brick_height_minus1은 균등 분할에 따른 브릭의 높이를 나타낼 수 있다. brick_rows_height_minus1은 불균등 분할에 따른 브릭의 높이를 나타낼 수 있다.
상기 높이 정보는 2의 n제곱, CTB 크기(너비 또는 높이 중 적어도 하나) 단위로 시그날링될 수 있다. 이 때, n은 0 이상의 값을 갖는 정수일 수 있다. 예를 들어, brick_height_minus1 는 높이가 128인 CTB 단위로 전송할 수 있다. 예를 들어, brick_height_minus1는 높이가 64인 CTB 단위로 전송할 수 있다. 예를 들어, brick_height_minus1는 높이가 32인 CTB 단위로 전송할 수 있다. 예를 들어, brick_height_minus1는 높이가 16인 CTB 단위로 전송할 수 있다. 예를 들어, brick_height_minus1는 높이가 8인 CTB 단위로 전송할 수 있다. 예를 들어, brick_rows_height_minus1는 높이가 128인 CTB 단위로 전송할 수 있다. 예를 들어, brick_rows_height_minus1는 높이가 64인 CTB 단위로 전송할 수 있다. 예를 들어, brick_rows_height_minus1는 높이가 32인 CTB 단위로 전송할 수 있다. 예를 들어, brick_rows_height_minus1는 높이가 16인 CTB 단위로 전송할 수 있다. 예를 들어, brick_rows_height_minus1는 높이가 8인 CTB 단위로 전송할 수 있다.
brick_rows_height_minus1은 brick_rows_height_delta로 대체될 수 있다. 상기 brick_rows_height_delta는 현재 브릭의 높이와 이전 브릭의 높이의 차이를 의미할 수 있다. 여기서, 이전 브릭은, 현재 브릭을 기준으로 좌측 브릭 열 또는 상단 브릭 행에 속한 브릭을 의미할 수 있다. 이전 브릭은, 현재 브릭 이전의 코딩 순서(또는 스캔 순서)를 가진 브릭을 의미할 수 있다. 또는, 이전 브릭은, 현재 브릭과 다른 타일에 속하는 것으로 제한될 수도 있고, 동일한 타일에 속하는 것으로 제한될 수도 있다.
상기 차이가 양수 혹은 음수 혹은 0일 수 있다. 상기 차이가 0인 경우 부호에 대한 정보를 보내지 않을 수 있다. 상기 차이가 양수 혹은 음수인 경우, 해당 정보를 1개의 플래그를 이용해 알려줄 수 있다. 상기 플래그를 sign_brick_rows_height_delta와 같이 명칭할 수 있다.
예를 들어, 현재 영상에 대해 수평 브릭 분할을 수행함에 있어서, 균등 분할만 수행할 경우, 표 19와 같이 브릭의 높이만으로 PPS에서 브릭 분할 정보를 부/복호화 할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
brick_height_minus1[ i ][ j ] | ue(v) |
... | |
} |
여기서, brick_height_minus1은 브릭의 높이를 나타낼 수 있다.
예를 들어, 현재 영상에 대해 브릭 분할을 수행함에 있어, 수직 분할만 수행할 수 있다.예를 들어, 현재 영상에 대해 수직 브릭 분할을 수행함에 있어서, 균등 분할과 불균등 분할 중 적어도 하나 이상을 수행할 경우, 표 20과 같이 PPS에서 브릭 분할 정보를 부/복호화 할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
uniform_brick_spacing_flag[ i ] | u(1) |
... | |
if( uniform_brick_spacing_flag[ i ] ) | |
brick_width_minus1[ i ] | ue(v) |
else { | |
num_brick_cols_minus2[ i ] | ue(v) |
for( j = 0; j <= num_brick_cols_minus2[ i ]; j++ ) | |
brick_col_width_minus1[ i ][ j ] | ue(v) |
} | |
... | |
} |
여기서, num_brick_cols_minus2는 현재 영상 너비에 포함되는, 그리고 수직 방향으로 분할되는 브릭의 개수를 나타낼 수 있다. brick_width_minus1은 균등 분할에 따른 브릭의 너비를 나타낼 수 있다. brick_cols_width_minus1은 불균등 분할에 따른 브릭의 너비를 나타낼 수 있다.
상기 너비 정보는 2의 n제곱, CTB (Coding Tree Block) 크기(너비, 높이) 단위로 시그날링 할 수 있다. 이 때, n은 0 이상의 값을 갖는 정수일 수 있다. 예를 들어, brick_cols_width_minus1는 너비가 128인 CTB 단위로 전송할 수 있다. 예를 들어, brick_cols_width_minus1는 너비가 64인 CTB 단위로 전송할 수 있다. 예를 들어, brick_cols_width_minus1는 너비가 32인 CTB 단위로 전송할 수 있다. 예를 들어, brick_cols_width_minus1는 너비가 16인 CTB 단위로 전송할 수 있다. 예를 들어, brick_cols_width_minus1는 너비가 8인 CTB 단위로 전송할 수 있다. 예를 들어, brick_width_minus1는 너비가 128인 CTB 단위로 전송할 수 있다. 예를 들어, brick_width_minus1는 너비가 64인 CTB 단위로 전송할 수 있다. 예를 들어, brick_width_minus1는 너비가 32인 CTB 단위로 전송할 수 있다. 예를 들어, brick_width_minus1는 너비가 16인 CTB 단위로 전송할 수 있다. 예를 들어, brick_width_minus1는 너비가 8인 CTB 단위로 전송할 수 있다.
여기서 brick_cols_width_minus1은 brick_cols_width_delta로 대체될 수 있다. 상기 brick_cols_width_delta는 현재 브릭의 너비와 이전 브릭의 너비의 차이를 의미할 수 있다. 여기서, 이전 브릭은, 현재 브릭을 기준으로 좌측 브릭 열 또는 상단 브릭 행에 속한 브릭을 의미할 수 있다. 이전 브릭은, 현재 브릭 이전의 코딩 순서(또는 스캔 순서)를 가진 브릭을 의미할 수 있다. 또는, 이전 브릭은, 현재 브릭과 다른 타일에 속하는 것으로 제한될 수도 있고, 동일한 타일에 속하는 것으로 제한될 수도 있다.
상기 차이가 양수 혹은 음수 혹은 0일 수 있다. 상기 차이가 0인 경우 부호에 대한 정보를 보내지 않을 수 있다. 상기 차이가 양수 혹은 음수인 경우, 해당 정보를 1개의 플래그를 이용해 알려줄 수 있다. 상기 플래그를 sign_brick_cols_width_delta와 같이 명칭할 수 있다.
예를 들어, 현재 영상에 대해 수직 브릭 분할을 수행함에 있어, 균등 분할만 수행할 경우, 표 21과 같이 브릭의 너비만으로 PPS에서 브릭 분할 정보를 부/복호화 할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
brick_col_width_minus1[ i ][ j ] | ue(v) |
... | |
} |
여기서, brick_width_minus1은 브릭의 너비를 나타낼 수 있다.
예를 들어, 현재 영상에 대해 브릭 분할을 수행함에 있어, 수평 및 수직 분할을 수행할 수 있다.
예를 들어, 현재 영상에 대해 수평 및 수직 브릭 분할을 수행함에 있어, 균등 분할과 불균등 분할 중 적어도 하나 이상을 수행할 경우, 표 22와 같이 PPS에서 브릭 분할 정보를 부/복호화 할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
uniform_brick_spacing_flag[ i ] | u(1) |
... | |
if( uniform_brick_spacing_flag[ i ] ) | |
brick_height_minus1[ i ] | ue(v) |
brick_width_minus1[ i ] | ue(v) |
else { | |
num_brick_cols_minus2[ i ] | ue(v) |
num_brick_rows_minus2[ i ] | ue(v) |
for( j = 0; j <= num_brick_cols_minus2[ i ]; j++ ) | |
brick_col_width_minus1[ i ][ j ] | ue(v) |
brick_row_height_minus1[ i ][ j ] | ue(v) |
} | |
... | |
} |
여기서, brick_height_minus1은 균등 분할에 따른 브릭의 높이를, brick_width_minus1은 균등 분할에 따른 브릭의 너비를 각각 나타낼 수 있다.
num_brick_rows_minus2는 현재 영상에 포함되는, 그리고 수평 방향으로 분할되는 브릭의 개수를 나타낼 수 있다. num_brick_rows_minus2는 상기 브릭의 개수에서 2를 뺀 값으로 부호화된 것일 수 있다. 또는, num_brick_rows_minus4가 부/복호화될 수도 있으며, 이는 상기 브릭의 개수에서 4를 뺀 값으로 부호화된 것일 수 있다. num_brick_cols_minus2는 현재 영상에 포함되는, 그리고 수직 방향으로 분할되는 브릭의 개수를 나타낼 수 있다.
brick_rows_height_minus1은 불균등 분할에 따른 브릭의 높이를, brick_cols_width_minus1은 불균등 분할에 따른 브릭의 너비를 각각 나타낼 수 있다.
상기 높이 및 너비 정보는 2의 n제곱, CTB (Coding Tree Block) 크기(너비, 높이) 단위로 시그날링 할 수 있다. 이 때, n은 0 이상의 값을 갖는 정수일 수 있다. 상기 높이 및 너비 정보는 수직 브릭 혹은 수평 브릭을 수행하는 경우의 예시를 동일하게 사용할 수 있다.
brick_cols_width_minus1은 brick_cols_width_delta로 대체될 수 있다. 상기 brick_cols_width_delta는 현재 브릭의 너비와 이전 브릭의 너비의 차이를 의미할 수 있다. 여기서, 이전 브릭은, 현재 브릭을 기준으로 좌측 브릭 열 또는 상단 브릭 행에 속한 브릭을 의미할 수 있다. 이전 브릭은, 현재 브릭 이전의 코딩 순서(또는 스캔 순서)를 가진 브릭을 의미할 수 있다. 또는, 이전 브릭은, 현재 브릭과 다른 타일에 속하는 것으로 제한될 수도 있고, 동일한 타일에 속하는 것으로 제한될 수도 있다.
상기 차이가 양수 혹은 음수 혹은 0일 수 있다. 상기 차이가 0인 경우 부호에 대한 정보를 보내지 않을 수 있다. 상기 차이가 양수 혹은 음수인 경우, 해당 정보를 1개의 플래그를 이용해 알려줄 수 있다. 상기 플래그를 sign_brick_cols_width_delta와 같이 명칭할 수 있다.
또한, brick_rows_height_minus1은 brick_rows_height_delta로 대체될 수 있다. 상기 brick_rows_height_delta는 현재 브릭의 높이와 이전 브릭의 높이의 차이를 의미할 수 있다. 여기서, 이전 브릭은, 현재 브릭을 기준으로 좌측 브릭 열 또는 상단 브릭 행에 속한 브릭을 의미할 수 있다. 이전 브릭은, 현재 브릭 이전의 코딩 순서(또는 스캔 순서)를 가진 브릭을 의미할 수 있다. 또는, 이전 브릭은, 현재 브릭과 다른 타일에 속하는 것으로 제한될 수도 있고, 동일한 타일에 속하는 것으로 제한될 수도 있다.
상기 차이가 양수 혹은 음수 혹은 0일 수 있다. 상기 차이가 0인 경우 부호에 대한 정보를 보내지 않을 수 있다. 상기 차이가 양수 혹은 음수인 경우, 해당 정보를 1개의 플래그를 이용해 알려줄 수 있다. 상기 플래그를 sign_brick_rows_height_delta와 같이 명칭할 수 있다.
예를 들어, 현재 영상에 대해 수평 및 수직 브릭 분할을 수행함에 있어, 균등 분할만 수행할 경우, 표 23과 같이 브릭의 높이와 너비만으로 PPS에서 브릭 분할 정보를 부/복호화할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
brick_row_height_minus1[ i ][ j ] | ue(v) |
brick_col_width_minus1[ i ][ j ] | ue(v) |
... | |
} |
여기서, brick_height_minus1은 브릭의 높이를, brick_width_minus1은 브릭의 너비를 각각 나타낼 수 있다.
[D1-3]과 같이 현재 영상에 대해 브릭 분할을 수행함에 있어, 조건을 고려하지 않고 모든 정보를 부/복호화할 수 있다. 또는, [D1-3]과 같이 현재 영상에 대해 브릭 분할을 수행함에 있어, 상위 파라미터 세트의 정보에 따른 조건을 고려하여 특정 정보를 부/복호화하지 않을 수 있다. 여기서, 브릭 크기의 최소 단위는 2의 n제곱, CTB 크기(너비 또는 높이 중 적어도 하나)로 정할 수 있고, 상위 파라미터 세트에서 부/복호화될 수 있다.
브릭의 분할이 가능한 조건은 (브릭의 최소 단위)*m이상의 크기인 타일로 정의될 수 있다. m은 1보다 큰 양수일 수 있다. 상기 조건보다 작은 크기의 타일에 대해서 브릭 분할 플래그를 부/복호화하지 않을 수 있다.
브릭의 균등 분할이 가능한 조건은 (브릭의 최소 단위)*n이상의 크기인 타일로 정의될 수 있다. n은 2보다 큰 양수일 수 있다. 상기 조건보다 작은 크기의 타일에 대해서 브릭 균등 분할 플래그를 부/복호화하지 않을 수 있다.
상기 조건의 크기는 너비 또는 높이 중 적어도 하나만을 의미하며, 후술하는 실시예에서도 마찬가지이다. 브릭 분할이 허용되는 최소 크기는, 128, 256, 384, 512 또는 그 이상일 수 있다. 이때 최소 크기는 부호화기에서 부호화되어 시그날링될 수도 있고, 복호화기에 기-정의된 고정된 값일 수도 있다. 또는, 최소 크기는, 픽처, 타일 또는 슬라이스 크기/형태에 따라 가변적으로 결정될 수도 있다. 전술한 최소 크기에 대한 정보는, 브릭 분할에 한정되지 않으며, 타일, 슬라이스 등에도 동일/유사하게 적용될 수 있다.
브릭 분할 정보(또는 슬라이스 분할 정보)를 부/복호화함에 있어, 시그날링된 상위 분할 정보를 이용해 파싱 의존성 없이 특정 정보를 유도하거나 전송하지 않아 비트를 절감할 수 있다.
[D1-3]과 같이 현재 영상에 대해 브릭 분할을 수행함에 있어, 동일 파라미터 세트의 정보에 따른 조건을 고려하여 특정 정보를 부/복호화하지 않을 수 있다. 여기서, 브릭 분할의 조건 확인에 있어, 균등 분할 또는 불균등 분할에 따라 시그날링되는 정보가 이용될 수 있다.
브릭의 분할이 가능한 조건은 (브릭의 최소 단위)*m이상의 크기인 타일로 정의될 수 있다. m은 1보다 큰 양수일 수 있다.
예를 들어, tile_height_minus1는 균등 분할에 따른 타일의 너비를 나타낼 수 있고, 상기 정보가 최소 분할 조건보다 작은 경우, 정보를 부/복호화하지 않을 수 있다. tile_width_minus1는 균등 분할에 따른 타일의 높이를 나타낼 수 있고, 상기 정보가 최소 분할 조건보다 작은 경우, 정보를 부/복호화하지 않을 수 있다. tile_rows_height_minus1는 비균등 분할에 따른 타일의 너비를 나타낼 수 있고, 상기 정보가 최소 분할 조건보다 작은 경우, 정보를 부/복호화 지 않을 수 있다. tile_cols_width_minus1는 비균등 분할에 따른 타일의 높이를 나타낼 수 있고, 상기 정보가 최소 분할 조건보다 작은 경우, 정보를 부/복호화하지 않을 수 있다.
브릭의 균등 분할이 가능한 조건은 (브릭의 최소 단위)*n이상의 크기인 타일로 정의될 수 있다. n은 2보다 큰 양수일 수 있다.
예를 들어, tile_height_minus1는 균등 분할에 따른 타일의 너비를 나타낼 수 있고, 상기 정보가 최소 분할 조건보다 작은 경우, 정보를 부/복호화하지 않을 수 있다. tile_width_minus1는 균등 분할에 따른 타일의 높이를 나태낼 수 있고, 상기 정보가 최소 분할 조건보다 작은 경우, 정보를 부/복호화하지 않을 수 있다. tile_rows_height_minus1는 비균등 분할에 따른 타일의 너비를 나타낼 수 있고, 상기 정보가 최소 분할 조건보다 작은 경우, 정보를 부/복호화하지 않을 수 있다. tile__cols_width_minus1는 비균등 분할에 따른 타일의 높이를 나타낼 수 있고, 상기 정보가 최소 분할 조건보다 작은 경우, 정보를 부/복호화하지 않을 수 있다.
타일 분할을 위해 전송된 정보를 이용하여, 각 타일마다 브릭(또는 슬라이스)의 분할을 위한 픽처 내 타일의 개수 정보를 묵시적으로 유도할 수 있으며, 별도의 개수 정보의 전송은 생략될 수 있다.
여기서, 픽처 너비와 높이 정보, CTB의 크기 정보를 브릭(또는 슬라이스)과 동일 파라미터 세트에서 전송할 수 있다. 예를 들어, 픽처 너비와 높이 정보, CTB 크기 정보는 브릭 정보(또는 슬라이스)와 동일하게 PPS에서 전송될 수 있다. 다만, 이에 한정되지 아니하며, PPS보다 상위 레벨(e.g., 디코딩 파라미터 세트, 비디오 파라미터 세트)에서 전송될 수도 있다. 또는, 2개 이상의 상위 레벨에서 픽처 너비와 높이 정보, CTB 크기 정보 등이 각각 전송될 수도 있다.
상기 타일 분할을 위해 사용되는 정보, 픽처의 너비 또는 높이 정보 또는 CTB 크기 정보 중 적어도 하나를 이용하여, 픽처에 속한 타일의 개수를 유도할 수 있고, 아래와 식와 같이 유도할 수 있다. 또는, 전술한 서브-픽처의 단위 정보를 이용하여, 픽처에 속한 타일의 개수를 유도할 수도 있다.
NumTilesInPic는 픽처에 속한 타일의 개수를 의미할 수 있다.
NumTilesInPic = (uniform_tile_spacing_flag=0?)? (num_tile_row_minus1+1) * (num_tile_columns_minus1+1) : Ceil((픽처 너비 크기/CTB의 크기)/(tile_columns_width_minus1+1))*Ceil((픽처 높이 크기/CTB의 크기)/(tile_rows_height_minus1+1))
유도한 타일의 개수를 이용하여, 각 타일마다 브릭(또는 슬라이스) 분할이 수행되는지 여부에 관한 정보가 부/복호화될 수 있다.
상기 실시예에서, CTB 크기는, 부호화/복호화 장치에 기-정의된 CBT 크기, 부호화/복호화 장치에서 허용되는 최소 CTB 크기 또는 최대 CTB 크기, 고정된 값 또는 시그날링되는 크기 정보 중 어느 하나로 대체될 수 있다.
또는, 타일 분할 정보는, 픽처에 속한 타일의 전체 개수에 기초하여 시그날링될 수 있다. 타일의 전체 개수는, 1개, 2개 또는 그 이상일 수 있으며, 전체 개수가 2개 이상인 경우, 전체 개수에 대한 정보는 전체 개수에서 2를 뺀 값으로 시그날링될 수도 있다. 이때, 전체 개수에 대한 정보는, 너비 개수와 높이 개수로 구분되어 시그날링될 수 있다.
[D1-4]와 같이 현재 영상에 대해 슬라이스 분할을 수행함에 있어 모든 하나의 브릭이 슬라이스로 여겨지는 경우 표 24와 같이 PPS에서 슬라이스 분할 정보를 부/복호화할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
... | |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
single_brick_in_pic_flag | u(1) |
... | |
} |
예를 들어, [D1-4]와 같이 현재 영상에 대해 슬라이스 분할을 수행함에 있어 여러 brick이 슬라이스로 여겨지는 경우 표 25와 같이 PPS에서 슬라이스 분할 정보를 부/복호화 할 수 있다. 여기서 슬라이스는 직사각형 형태로 구성될 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
single_brick_per_slice_flag | u(1) |
... | |
if( !single_brick_per_slice_flag ) | |
... | |
rect_slice_flag | u(1) |
if( rect_slice_flag && !single_brick_per_slice_flag ) { | |
... | |
num_slices_in_pic_minus1 | ue(v) |
bottom_right_brick_idx_length_minus1 | ue(v) |
for( i = 0; i < num_slices_in_pic_minus1; i++ ) { | |
... | |
bottom_right_brick_idx_delta[ i ] | se(v) |
brick_idx_delta_sign_flag[ i ] | |
... | |
} | |
} |
여기서, num_slices_in_pic_minus1 픽처 내 슬라이스의 개수를 나타낼 수 있다. bottom_right_brick_idx_length_minus1는 픽처 내 브릭의 개수를 의미할 수 있다. bottom_right_brick_idx_delta는 현재 슬라이스 내 우하단 브릭과 이전 슬라이스 내 우하단 브릭 간의 인덱스 차이를 나타낼 수 있다. 상기 인덱스는 브릭의 스캔 순서를 의미할 수 있다. brick_idx_delta_sign_flag는 bottom_right_brick_idx_delta에 대한 부호(sign)를 의미할 수 있다. 첫번째와 마지막 슬라이스의 경우, 표 25와 같이 bottom_right_brick_idx에 대한 부호를 부/복호화하지 않을 수 있다. 상기 첫번째 와 마지막 슬라이스에 대한 bottom_right_brick_idx의 부호는 항상 양수 또는 항상 음수로 유도될 수 있다.
[D1-4]와 같이 현재 영상에 대해 슬라이스 분할을 수행함에 있어 모든 하나의 타일이 슬라이스로 여겨지는 경우 표 26과 같이 PPS에서 슬라이스 분할 정보를 부/복호화 할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
... | |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
single_tile_in_pic_flag | u(1) |
... | |
} |
예를 들어, [D1-4]와 같이 현재 영상에 대해 슬라이스 분할을 수행함에 있어 여러 타일이 슬라이스로 여겨지는 경우 표 27과 같이 PPS에서 슬라이스 분할 정보를 부/복호화 할 수 있다. 여기서 슬라이스는 직사각형 형태로 이뤄질 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
single_tile_per_slice_flag | u(1) |
... | |
if( !single_tile_per_slice_flag ) | |
... | |
rect_slice_flag | u(1) |
if( rect_slice_flag && !single_tile _per_slice_flag ) { | |
... | |
num_slices_in_pic_minus1 | ue(v) |
bottom_right_tile_idx_length_minus1 | ue(v) |
for( i = 0; i < num_slices_in_pic_minus1; i++ ) { | |
... | |
bottom_right_tile_idx_delta[ i ] | se(v) |
tile_idx_delta_sign_flag[ i ] | u(1) |
... | |
} | |
} |
여기서, num_slices_in_pic_minus1 픽처 내 슬라이스의 개수를 나타낼 수 있다. bottom_right_tile_idx_length_minus1는 픽처 내 타일의 개수를 나타낼 수 있다. bottom_right_tile_idx_delta는 현재 슬라이스 내 우하단 타일과 이전 슬라이스 내 우하단 타일 간의 인덱스 차이를 의미할 수 있다. 상기 인덱스는 타일의 스캔 순서를 의미할 수 있다. 다만, 상기 우하단 타일은 일예에 불과하며, 슬라이스의 첫번째 CTB를 포함하는 좌상단 타일의 인덱스가 이용될 수도 있다. tile_idx_delta_sign_flag는 bottom_right_tile_idx_delta의 부호를 의미할 수 있다. 이전 슬라이스 내 우하단 타일의 인덱스, bottom_right_tile_idx_delta 또는 tile_idx_delta_sign_flag 중 적어도 하나에 기초하여, 현재 슬라이스의 위치가 특정될 수 있다.
다만, 픽처 내 첫번째 슬라이스와 마지막 슬라이스에 대해서는 표 28과 같이 bottom_right_tile_idx에 대한 부호를 부/복호화하지 않을 수 있다. 상기 첫번째 및 마지막 슬라이스에 대한 bottom_right_tile_idx의 부호는 항상 양수 혹은 항상 음수로 유도될 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
single_tile_per_slice_flag | u(1) |
... | |
if( !single_tile_per_slice_flag ) | |
... | |
rect_slice_flag | u(1) |
if( rect_slice_flag && !single_tile_per_slice_flag ) { | |
... | |
num_slices_in_pic_minus1 | ue(v) |
bottom_right_tile_idx_length_minus1 | ue(v) |
for( i = 0; i < num_slices_in_pic_minus1; i++ ) { | |
... | |
bottom_right_tile_idx_delta[ i ] | se(v) |
if(i !=0 && i < num_slices_in_pic_minus1-1) | |
tile_idx_delta_sign_flag[ i ] | u(1) |
... | |
} |
[D1-4]와 같이 현재 영상에 대해 슬라이스 분할을 수행함에 있어 표 29와 같이 타일로부터 PPS에서 슬라이스 분할 정보를 부/복호화할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
rect_slice_flag | u(1) |
if( rect_slice_flag ) | |
single_slice_per_subpic_flag | u(1) |
if( rect_slice_flag && !single_slice_per_subpic_flag ) { | |
num_slices_in_pic_minus1 | ue(1) |
tile_idx_delta_present_flag | u(1) |
for( i = 0; i < num_slices_in_pic_minus1; i++ ) { | |
slice_width_in_tiles_minus1[ i ] | ue(v) |
slice_height_in_tiles_minus1[ i ] | ue(v) |
if( slice_width_in_tiles_minus1[ i ] = = 0 && slice_height_in_tiles_minus1[ i ] = = 0 ) { |
|
num_slices_in_tile_minus1[ i ] | ue(v) |
numSlicesInTileMinus1 = num_slices_in_tile_minus1[ i ] | |
for( j = 0; j < numSlicesInTileMinus1; j++ ) | |
slice_height_in_ctu_minus1[ i++ ] | ue(v) |
} | |
if( tile_idx_delta_present_flag && i < num_slices_in_pic_minus1 ) | |
tile_idx_delta[ i ] | se(v) |
} | |
} |
슬라이스 분할을 수행함에 있어, 단일의 슬라이스가 여러 개의 타일을 포함하여 구성될 수 있고, 단일의 타일 내에서 하나 혹은 그 이상의 슬라이스가 구성될 수도 있다.
여기서 rect_slice_flag는 슬라이스의 구조가 직사각형 형태로 분할되는지 여부를 지시할 수 있다. 예를 들어, rect_slice_flag가 1인 경우, 슬라이스는 직사각형 모드로 구성되고, rect_slice_flag가 0인 경우, 슬라이스는 래스터 스캔(raster scan) 모드로 구성됨을 의미할 수 있다. 도 7a는 슬라이스가 직사각형 모드로 구성된 경우를, 도 7b는 슬라이스가 래스터 스캔 모드로 구성된 경우의 일예를 도시한다.
여기서, single_slice_per_subpic_flag는 각 서브-픽처가 하나의 슬라이스로만 구성되는지 여부를 나타낼 수 있다. 예를 들어, single_slice_per_subpic_flag가 1인 경우, 각 서브-픽처는 하나의 슬라이스로만 구성되고, single_slice_per_subpic_flag가 0인 경우, 각 서브-픽처는 하나 또는 그 이상의 슬라이스로 구성될 수 있다. 여기서, 슬라이스는 직사각형 모드의 슬라이스를 의미할 수 있다. 즉, single_slice_per_subpic_flag는 rect_slice_flag가 1인 경우에 한하여 시그날링될 수 있다.
서브-픽처가 하나의 슬라이스로만 구성되는 경우, 전술한 서브-픽처의 크기 정보에 따라 슬라이스의 크기가 결정되며, 슬라이스 분할을 위한 정보가 별도로 부/복호화되지 않을 수 있다. 반면, 서브-픽처가 다수의 슬라이스로 분할되는 경우, 슬라이스에 대한 분할 정보가 부/복호화될 수 있다.
구체적으로, num_slices_in_pic_minus1는 하나의 픽처에 속한 슬라이스의 개수를 나타낼 수 있다.
tile_idx_delta_present_flag는 tile_idx_delta의 존재하는지 여부를 지시할 수 있다. tile_idx_delta는 다음 슬라이스((i+1)번째 슬라이스) 내 좌상단 CTB를 포함하는 타일의 인덱스와 현재 슬라이스(i번째 슬라이스) 내에 좌상단 CTB를 포함하는 타일 인덱스 간의 차이를 나타낼 수 있다. 예를 들어, tile_idx_delta_present_flag가 0인 경우, tile_idx_delta가 존재하지 않으며, 이 경우 픽처는 래스터 스캔 순서에 따라 직사각형 모드의 슬라이스로 분할될 수 있다. 반면, tile_idx_delta_present_flag가 1인 경우, tile_idx_delta가 존재하며, 이 경우 픽처에 속한 모든 직사각형 모드의 슬라이스의 위치는 tile_idx_delta에 의해 특정될 수 있다.
픽처를 구성하는 슬라이스의 개수에 따라 상기 신택스의 부/복호화가 생략될 수 있다. 예를 들어, 픽처가 n개의 슬라이스로 분할되는 경우, n번째 슬라이스에 대한 tile_idx_delta의 부/복호화가 생략될 수 있다. 즉, 마지막 슬라이스 내 좌상단 타일의 인덱스와 마지막 이전 슬라이스 내 좌상단 타일의 인덱스 간의 차이를 나타내는 정보는 별도의 전송없이 유도될 수 있다.
또는, 슬라이스의 개수를 나타내는 신택스, num_slices_in_pic_minus1이 1보다 큰 경우에 한하여 tile_idx_delta_present_flag가 부/복호화될 수도 있다. 해당 신택스 구조는 표 30과 같이 표현될 수 있다. 다시 말해, 픽처를 구성하는 슬라이스의 개수가 소정의 문턱개수(e.g., 3)보다 크거나 같은 경우에 한하여 tile_idx_delta_present_flag가 부/복호화될 수도 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
... | |
if( pps_num_slices_in_pic_minus1 > 1 ) | |
pps_tile_idx_delta_present_flag | u(1) |
... | |
} |
표 29에서, slice_width_in_tiles_minus1[ i ]는 i번째 슬라이스의 너비를 나타낼 수 있다. 이때, 전송된 슬라이스의 너비 정보는 i번째 슬라이스에 속한 타일 열의 개수를 나타낼 수도 있다. slice_height_in_tiles_minus1[ i ]는 i번째 슬라이스의 높이를 나타낼 수 있다. 이때, 전송된 슬라이스의 높이 정보는 i번째 슬라이스에 속한 타일 행의 개수를 나타낼 수도 있다.
한편, slice_width_in_tiles_minus1와 slice_height_in_tiles_minus1에 따라 현재 슬라이스의 크기가 하나의 타일과 동일하다고 결정된 경우 즉, slice_width_in_tiles_minus1와 slice_height_in_tiles_minus1이 둘다 0인 경우, 하나의 타일을 하나 또는 그 이상의 슬라이스로 분할하기 위한 정보가 부/복호화될 수 있다.
예를 들어, num_slices_in_tile_minus1[ i ]는 하나의 타일을 구성하는 슬라이스의 개수를 나타낼 수 있다. 하나의 타일을 구성하는 슬라이스의 개수는, num_slices_in_tile_minus1[ i ]의 값에 1을 더한 값으로 유도될 수 있다. 다만, 이에 한정되지 아니하며, num_slices_in_tile[i]가 부/복호화될 수도 있으며, 이 경우 하나의 타일을 구성하는 슬라이스의 개수는 num_slices_in_tile[i]의 값으로 유도될 수 있다. slice_height_in_ctu_minus1[ i++ ]는 각 슬라이스의 높이를 나타낼 수 있다. 이때, 전송된 슬라이스의 높이 정보는 해당 슬라이스에 속한 CTU 행의 개수를 나타낼 수도 있다.
[D1-4]와 같이 현재 영상에 대해 슬라이스 분할을 수행함에 있어 단일의 타일에 대한 다수의 슬라이스 분할 정보를 부/복호화할 때, 일부 슬라이스의 분할 정보를 보다 효율적으로 전송할 수 있다.
표 31 및 표 32와 같이, 하나의 타일 내에서 하나 혹은 그 이상의 슬라이스로 분할될 경우, 분할되는 슬라이스의 개수를 명시적으로 전송할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
rect_slice_flag | u(1) |
if( rect_slice_flag ) | |
single_slice_per_subpic_flag | u(1) |
if( rect_slice_flag && !single_slice_per_subpic_flag ) { | |
num_slices_in_pic_minus1 | ue(1) |
tile_idx_delta_present_flag | u(1) |
for( i = 0; i < num_slices_in_pic_minus1; i++ ) { | |
slice_width_in_tiles_minus1[ i ] | ue(v) |
slice_height_in_tiles_minus1[ i ] | ue(v) |
if( slice_width_in_tiles_minus1[ i ] = = 0 && slice_height_in_tiles_minus1[ i ] = = 0 ) { |
|
num_exp_slices_in_tile_minus1[ i ] | ue(v) |
numSlicesInTileMinus1 = exp_num_slices_in_tile_minus1[ i ] | |
for( j = 0; j <= numSlicesInTileMinus1; j++ ) | |
slice_height_in_ctu_minus1[ i++ ] | ue(v) |
i += (NumSlicesInTile - numSlicesInTileMinus1 + 1) | |
} | |
if( tile_idx_delta_present_flag && i < num_slices_in_pic_minus1 ) | |
tile_idx_delta[ i ] | se(v) |
} | |
} |
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
rect_slice_flag | u(1) |
if( rect_slice_flag ) | |
single_slice_per_subpic_flag | u(1) |
if( rect_slice_flag && !single_slice_per_subpic_flag ) { | |
num_slices_in_pic_minus1 | ue(1) |
tile_idx_delta_present_flag | u(1) |
for( i = 0; i < num_slices_in_pic_minus1; i++ ) { | |
slice_width_in_tiles_minus1[ i ] | ue(v) |
slice_height_in_tiles_minus1[ i ] | ue(v) |
if( slice_width_in_tiles_minus1[ i ] = = 0 && slice_height_in_tiles_minus1[ i ] = = 0 ) { |
|
num_exp_slices_in_tile_minus1[ i ] | ue(v) |
numExpSlicesInTile = exp_num_slices_in_tile_minus1[ i ] | |
for( j = 0; j < numExpSlicesInTile; j++ ) | |
slice_height_in_ctu_minus1[ j ] | ue(v) |
i += NumSlicesInTile | |
} | |
if( tile_idx_delta_present_flag && i < num_slices_in_pic_minus1 ) | |
tile_idx_delta[ i ] | se(v) |
} | |
} |
예를 들어, num_exp_slices_in_tile_minus1[ i ]는, 상단에서 하단 방향을 기준으로, 슬라이스가 균등 분할로 분할되기까지의 슬라이스의 개수를 나타낼 수 있다. 또는, num_exp_slices_in_tile_minus1[ i ]는, 하단에서 상단 방향을 기준으로, 슬라이스가 균등 분할로 분할되기까지의 슬라이스의 개수를 나타낼 수도 있다. slice_height_in_ctu_minus1[ i++ ]는 각 슬라이스의 높이를 나타낼 수 있다. 이때, 전송된 슬라이스의 높이 정보는 해당 슬라이스에 속한 CTU 행의 개수를 나타낼 수 있다.
예를 들어, num_exp_slices_in_tile[ i ]는, 상단에서 하단 방향을 기준으로, 슬라이스가 균등 분할로 분할되기까지의 슬라이스의 개수를 나타낼 수 있다. num_exp_slices_in_tile[ i ]는, 하단에서 상단 방향을 기준으로, 슬라이스가 균등 분할로 분할되기까지의 슬라이스의 개수를 나타낼 수 있다. slice_height_in_ctu_minus1[ i++ ]는 각 슬라이스의 높이를 나타낼 수 있다. 이때, 전송된 슬라이스의 높이 정보는 해당 슬라이스에 속한 CTU 행의 개수를 나타낼 수 있다.
[D1-4]와 같이 현재 영상에 대해 슬라이스 분할을 수행함에 있어 단일의 타일에 대한 다수의 슬라이스 분할 정보를 부/복호화 할 때, 일부 슬라이스의 분할 정보를 별도의 전송 없이 유도할 수 있다.
하나의 타일이 하나 혹은 그 이상의 슬라이스로 분할될 때, 타일의 높이가 CTU 단위로 1인 경우 하나의 타일이 하나의 슬라이스가 될 수 있다.
표 33과 같이 타일의 높이가 1인 경우 별도의 분할 정보 전송없이 해당 타일을 하나의 슬라이스로 구성할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
rect_slice_flag | u(1) |
if( rect_slice_flag ) | |
single_slice_per_subpic_flag | u(1) |
if( rect_slice_flag && !single_slice_per_subpic_flag ) { | |
num_slices_in_pic_minus1 | ue(1) |
tile_idx_delta_present_flag | u(1) |
for( i = 0; i < num_slices_in_pic_minus1; i++ ) { | |
slice_width_in_tiles_minus1[ i ] | ue(v) |
slice_height_in_tiles_minus1[ i ] | ue(v) |
if( slice_width_in_tiles_minus1[ i ] = = 0 && slice_height_in_tiles_minus1[ i ] = = 0 && RowheightVAL[tileY] != 1 ) { |
|
num_slices_in_tile_minus1[ i ] | ue(v) |
numSlicesInTileMinus1 = num_slices_in_tile_minus1[ i ] | |
for( j = 0; j < numSlicesInTileMinus1; j++ ) | |
slice_height_in_ctu_minus1[ i++ ] | ue(v) |
} | |
if( tile_idx_delta_present_flag && i < num_slices_in_pic_minus1 ) | |
tile_idx_delta[ i ] | se(v) |
} | |
} |
여기서, tileY는 (SliceTopLeftTileIdx[ i ] / NumTileColumns)로 정의될 수 있다. 즉, tileY는 현재 타일의 인덱스를 타일의 너비 개수 또는 타일 행의 개수로 나눈 몫일 수 있다. RowheightVAL[tileY]는 tileY를 통해 정해진 타일의 위치에 대한 높이를 의미할 수 있다. RowheightVAL[tileY]의 값이 1이 아닌 경우 또는 RowheightVAL[tileY]의 값이 1보다 큰 경우에 한하여, 하나의 타일을 구성하는 슬라이스의 개수를 나타내는 정보(num_slices_in_tile_minus1)와 각 슬라이스의 높이를 나타내는 정보(slice_height_in_ctu_minus1)가 부/복호화될 수 있다. 그 외 분할 정보에 대해서는 표 29를 참조하여 자세히 살펴보았는바, 여기서 중복된 설명은 생략하기로 한다.
하나의 타일이 하나 혹은 그 이상의 슬라이스로 분할되는 경우, 하나의 타일을 구성하는 슬라이스의 개수를 나타내는 정보 또는 해당 타일의 높이 정보 중 적어도 하나에 기초하여, 각 슬라이스의 높이를 나타내는 정보의 부/복호화를 선택적으로 수행할 수 있다.
예를 들어, 표 34 또는 표 35와 같이, 하나의 타일이 하나 혹은 그 이상의 슬라이스로 분할되는 경우, 타일의 높이 정보가 하나의 타일을 구성하는 슬라이스의 개수를 나타내는 정보와 동일한 경우, 슬라이스의 높이를 나타내는 정보는 부/복호화되지 않을 수 있다.
여기서, 타일의 높이 정보는 (RowheightVAL[tileY]-1)로 정의될 수 있다. tileY는 현재 타일의 인덱스를 타일의 너비 개수 또는 타일 행의 개수로 나눈 값의 몫일 수 있고, RowheightVAL[tileY]는 tileY를 통해 정해진 타일의 위치에 대한 높이를 의미할 수 있다.
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
rect_slice_flag | u(1) |
if( rect_slice_flag ) | |
single_slice_per_subpic_flag | u(1) |
if( rect_slice_flag && !single_slice_per_subpic_flag ) { | |
num_slices_in_pic_minus1 | ue(1) |
tile_idx_delta_present_flag | u(1) |
for( i = 0; i < num_slices_in_pic_minus1; i++ ) { | |
slice_width_in_tiles_minus1[ i ] | ue(v) |
slice_height_in_tiles_minus1[ i ] | ue(v) |
if( slice_width_in_tiles_minus1[ i ] = = 0 && slice_height_in_tiles_minus1[ i ] = = 0 ) { |
|
num_slices_in_tile_minus1[ i ] | ue(v) |
numSlicesInTileMinus1 = num_slices_in_tile_minus1[ i ] | |
if( numSlicesInTileMinus1 != RowheightVAL[tileY] - 1) | |
for( j = 0; j < numSlicesInTileMinus1; j++ ) | ue(v) |
slice_height_in_ctu_minus1[ i++ ] | |
} | |
if( tile_idx_delta_present_flag && i < num_slices_in_pic_minus1 ) | se(v) |
tile_idx_delta[ i ] | |
} | |
} |
pic_parameter_set_rbsp( ) { | Descriptor |
pps_pic_parameter_set_id | ue(v) |
pps_seq_parameter_set_id | ue(v) |
... | |
rect_slice_flag | u(1) |
if( rect_slice_flag ) | |
single_slice_per_subpic_flag | u(1) |
if( rect_slice_flag && !single_slice_per_subpic_flag ) { | |
num_slices_in_pic_minus1 | ue(1) |
tile_idx_delta_present_flag | u(1) |
for( i = 0; i < num_slices_in_pic_minus1; i++ ) { | |
slice_width_in_tiles_minus1[ i ] | ue(v) |
slice_height_in_tiles_minus1[ i ] | ue(v) |
if( slice_width_in_tiles_minus1[ i ] = = 0 && slice_height_in_tiles_minus1[ i ] = = 0 ) { |
|
num_exp_slices_in_tile_minus1[ i ] | ue(v) |
numExpSlicesInTile = exp_num_slices_in_tile_minus1[ i ] | |
for( j = 0; j < numExpSlicesInTile; j++ ) | |
slice_height_in_ctu_minus1[ j ] | ue(v) |
i += NumSlicesInTile | |
} | |
if( tile_idx_delta_present_flag && i < num_slices_in_pic_minus1 ) | se(v) |
tile_idx_delta[ i ] | |
} | |
} |
전술한 하이 레벨의 영상 분할 정보를 이용하여 현재 영상을 분할하고, 소정의 블록 단위로 예측 및 변환을 수행하여 현재 영상을 부/복호화할 수 있다. 이러한 일련의 과정은 후술하는 부/복호화 장치에서 수행될 수 있음은 물론이다.
도 8은 본 발명의 일 실시예에 따른 비디오 부호화 장치의 구성을 나타내는 블록도를 도시한다.
일 실시예에 따른 비디오 부호화 장치는 픽처 분할부(미도시), 화면 간 예측부(120), 화면 내 예측부(125), 감산부(130), 변환부(140), 양자화부(150), 엔트로피 부호화부(160), 역변환부(145), 역양자화부(155), 가산부(135), 양방향 필터부(180), 인루프 필터부(180), 복원 픽쳐 버퍼(190)를 포함할 수 있다.
픽처 분할부는 하나의 픽처를 전술한 소정의 단위로, 그리고 계층적으로 분할하고, 소정의 단위 별 분할 정보를 부호화할 수 있다.
화면 간 예측부(120)는 입력 영상(110)과 복원 픽쳐 버퍼(190)에 저장되어 있는 복원 영상을 이용하여 움직임 예측을 수행하여 예측 신호를 생성한다.
화면 내 예측부(125)는 부호화되는 현재 블록과 공간적으로 인접하는 기-복원된 주변 블록의 화소 값을 이용하여 공간적 예측을 수행하여 예측 신호를 생성한다.
감산부(130)는 입력 영상과 화면 간 예측부(120) 혹은 화면 내 예측부(125)를 통해 생성된 예측 신호를 이용하여 잔차 신호 (residual signal)를 생성한다.
변환부(140) 및 양자화부(150)는 감산부(130)를 통해 생성된 잔차 신호에 대하여 변환 및 양자화를 수행하여 양자화된 계수 (quantized coefficient)를 생성한다.
엔트로피 부호화부(160)는 비디오 압축 표준에 정의된 신택스 요소 (syntax elements) 및 양자화된 계수 등과 같은 부호화 정보에 대하여 엔트로피 부호화를 수행하여 비트스트림을 출력한다.
역변환부(145) 및 역양자화부(155)는 양자화 계수를 수신하여 역양자화 및 역변환을 차례대로 수행하고, 복원된 잔차 신호를 생성한다.
가산부(135)는 화면 간 예측부(120) 혹은 화면 내 예측부(125)를 통해 생성된 예측 신호와 복원된 잔차 신호를 이용하여 복원 신호를 생성한다.
상기 복원 신호는 인루프 필터부(180)로 전달되어 디블록킹 필터, SAO (Sample Adaptive Offset), ALF (Adaptive Loop Filter)와 같은 하나 혹은 그 이상의 인루프 필터를 적용하여 최종 복원 픽쳐를 생성하여 복원 픽쳐 버퍼(190)에 저장된다.
상기 복원 픽쳐 버퍼(190)에 저장된 복원 픽쳐는 화면 간 예측부(120)에서 참조 픽쳐로 사용될 수 있다.
도 9는 본 발명의 일 실시예에 따른 비디오 복호화 장치의 구성을 나타내는 블록도를 도시한다.
일 실시예에 따른 비디오 복호화 장치는 엔트로피 복호화부(210), 역양자화부(220), 역변환부(230), 화면 내 예측부(240), 화면 간 예측부(250), 가산부(260), 양방향 필터부(270), 인루프 필터부(280), 복원 픽쳐 버퍼(290)를 포함할 수 있다.
엔트로피 복호화부(210)는 입력된 비트스트림(200)을 복호화하여 신택스 요소 (syntax elements) 및 양자화된 계수 등과 같은 복호화 정보를 출력한다. 여기서, 복호화 정보는, 전술한 소정의 단위 각각에 대한 분할 정보를 포함하며, 분할 정보는 현재 픽처를 전술한 소정의 단위로 분할하기 위해 이용될 수 있다.
역양자화부(220) 및 역변환부 (230)는 양자화 계수를 수신하여 역양자화 및 역변환을 차례대로 수행하고, 잔차 신호 (residual signal)를 출력한다.
화면 내 예측부(240)는 복호화되는 현재 블록과 인접하는 기-복호화된 주변 블록의 화소 값을 이용하여 공간적 예측을 수행하여 예측 신호를 생성한다.
화면 간 예측부(250)는 비트스트림으로부터 추출된 움직임 벡터와 복원 픽쳐 버퍼(280)에 저장되어 있는 복원 영상을 이용하여 움직임 보상을 수행하여 예측 신호를 생성한다.
가산부(260)는 화면 내 예측부(240) 혹은 화면 간 예측부(250)를 통해 생성된 예측 신호와 복원된 잔차 신호를 이용하여 복원 신호를 생성한다.
양방향 필터부(270)는 가산부(260)를 통해 생성된 복원 신호에 대하여 양방향 필터를 수행하여, 필터가 적용된 신호를 생성한다.
상기 복원 신호는 인루프 필터부(270)로 전달되어 디블록킹 필터, SAO (Sample Adaptive Offset), ALF (Adaptive Loop Filter)와 같은 하나 혹은 그 이상의 인-루프 필터를 적용하여 최종 복원 픽쳐를 생성하여 복원 픽쳐 버퍼(280)에 저장된다.
상기 복원 픽쳐 버퍼(280)에 저장된 복원 픽쳐는 화면 간 예측부(250)에서 참조 픽쳐로 사용될 수 있다.
Claims (13)
- 비트스트림으로부터 현재 픽처에 대한 분할 정보를 복호화하는 단계; 및
상기 복호화된 분할 정보를 이용하여, 상기 현재 픽처를 서브-픽처, 슬라이스 또는 타일 중 적어도 하나의 단위로 분할하는 단계를 포함하되,
상기 분할 정보는, 서브-픽처 분할 정보, 슬라이스 분할 정보 또는 타일 분할 정보 중 적어도 하나를 포함하는, 영상 복호화 방법. - 제1항에 있어서, 상기 서브-픽처 분할 정보를 복호화하는 단계는,
상기 현재 픽처가 하나의 서브-픽처로만 구성되는지 여부를 지시하는 제1 플래그를 획득하는 단계; 및
상기 제1 플래그에 기초하여, 상기 현재 픽처를 구성하는 서브-픽처의 개수를 나타내는 정보 또는 상기 서브-픽처가 균등 분할인지 여부를 지시하는 제2 플래그 중 적어도 하나를 획득하는 단계를 포함하는, 영상 복호화 방법. - 제2항에 있어서, 상기 서브-픽처 분할 정보를 복호화하는 단계는,
상기 서브-픽처의 개수를 나타내는 정보 또는 상기 서브-픽처가 균등 분할인지 여부를 지시하는 제2 플래그 중 적어도 하나에 기초하여, 상기 현재 픽처를 구성하는 각 서브-픽처의 크기를 나타내는 정보를 획득하는 단계를 더 포함하되,
상기 서브-픽처의 크기를 나타내는 정보는, 복호화 장치에 기-정의된 코딩 트리 블록(CTB)의 크기 단위로 부호화된 것인, 영상 복호화 방법. - 제1항에 있어서, 상기 서브-픽처 분할 정보는, 시퀀스 파라미터 세트(SPS)에서 획득되는, 영상 복호화 방법.
- 제1항에 있어서, 상기 타일 분할 정보를 복호화하는 단계는,
상기 현재 픽처에 대해서 분할이 수행되는지 여부를 지시하는 제3 플래그를 획득하는 단계; 여기서, 상기 제3 플래그의 값이 1인 경우, 상기 현재 픽처에 대해서 분할이 수행되지 않고, 상기 제3 플래그의 값이 0인 경우, 상기 현재 픽처는 다수의 타일 또는 슬라이스로 분할될 수 있음,
상기 제3 플래그에 기초하여, 상기 현재 픽처를 구성하는 타일 행 너비의 개수 정보 및 상기 현재 픽처를 구성하는 타일 열 높이의 개수 정보를 획득하는 단계; 및
상기 획득된 개수 정보에 기초하여, 각 타일의 너비와 높이를 나타내는 정보를 획득하는 단계를 포함하는, 영상 복호화 방법. - 제5항에 있어서, 상기 타일 분할 정보는, 픽처 파라미터 세트(PPS)에서 획득되는, 영상 복호화 방법.
- 제1항에 있어서, 상기 슬라이스 분할 정보를 복호화하는 단계는,
슬라이스가 직사각형 모드로 분할되는지 아니면 래스터 스캔 모드로 분할되는지를 지시하는 제4 플래그를 획득하는 단계;
상기 제4 플래그에 기초하여, 상기 현재 픽처에 속한 슬라이스의 개수를 나타내는 정보를 획득하는 단계; 및
상기 슬라이스의 개수를 나타내는 정보에 기초하여, 각 슬라이스의 너비와 높이를 나타내는 정보를 획득하는 단계를 포함하는, 영상 복호화 방법. - 제7항에 있어서, 상기 슬라이스 분할 정보를 복호화하는 단계는,
다음 슬라이스 내 좌상단 CTB를 포함하는 타일의 인덱스와 현재 슬라이스 내 좌상단 CTB를 포함하는 타일 인덱스 간의 차이를 나타내는 정보를 획득하는 단계를 더 포함하되,
상기 슬라이스의 위치는 상기 차이를 나타내는 정보에 기초하여 특정되는, 영상 복호화 방법. - 제8항에 있어서, 상기 차이를 나타내는 정보는, 상기 현재 픽처를 구성하는 다수의 슬라이스 중 일부 슬라이스에 대해서만 복호화되는, 영상 복호화 방법.
- 제8항에 있어서, 상기 차이를 나타내는 정보는, 상기 차이를 나타내는 정보가 존재하는지 여부를 지시하는 제4 플래그에 기초하여 복호화되고,
상기 제4 플래그는 상기 현재 픽처를 구성하는 슬라이스의 개수가 소정의 문턱개수보다 크거나 같은 경우에 한하여 복호화되는, 영상 복호화 방법. - 제7항에 있어서, 상기 슬라이스 분할 정보를 복호화하는 단계는,
하나의 타일에 속한 슬라이스의 개수를 나타내는 정보를 획득하는 단계를 더 포함하되,
상기 하나의 타일에 속한 슬라이스의 개수를 나타내는 정보는, 상기 슬라이스의 너비와 높이를 나타내는 정보 또는 타일의 높이 정보 중 적어도 하나에 기초하여 적응적으로 복호화되는, 영상 복호화 방법. - 현재 픽처를 서브-픽처, 슬라이스 또는 타일 중 적어도 하나의 단위로 분할하는 단계; 및
상기 현재 픽처의 분할을 위한 분할 정보를 부호화하는 단계를 포함하되,
상기 분할 정보는, 서브-픽처 분할 정보, 슬라이스 분할 정보 또는 타일 분할 정보 중 적어도 하나를 포함하는, 영상 부호화 방법. - 영상 부호화 방법에 의해 부호화된 비트스트림을 저장하는 컴퓨터로 판독가능한 기록 매체에 있어서,
상기 영상 부호화 방법은,
현재 픽처를 서브-픽처, 슬라이스 또는 타일 중 적어도 하나의 단위로 분할하는 단계; 및
상기 현재 픽처의 분할을 위한 분할 정보를 부호화하는 단계를 포함하되,
상기 분할 정보는, 서브-픽처 분할 정보, 슬라이스 분할 정보 또는 타일 분할 정보 중 적어도 하나를 포함하는, 컴퓨터로 판독가능한 기록 매체.
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20190098337 | 2019-08-12 | ||
KR1020190098337 | 2019-08-12 | ||
KR1020190124931 | 2019-10-08 | ||
KR20190124931 | 2019-10-08 | ||
KR20200004469 | 2020-01-13 | ||
KR1020200004469 | 2020-01-13 | ||
KR20200039405 | 2020-03-31 | ||
KR1020200039405 | 2020-03-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210019387A true KR20210019387A (ko) | 2021-02-22 |
Family
ID=74569796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200100288A KR20210019387A (ko) | 2019-08-12 | 2020-08-11 | 하이 레벨 영상 분할과 영상 부호화/복호화 방법 및 장치 |
Country Status (3)
Country | Link |
---|---|
KR (1) | KR20210019387A (ko) |
CN (1) | CN114223197A (ko) |
WO (1) | WO2021029646A1 (ko) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BR112015004246B1 (pt) * | 2012-09-26 | 2023-02-07 | Sun Patent Trust | Método de codificação de imagem e aparelho de codificação de imagem |
US10356426B2 (en) * | 2013-06-27 | 2019-07-16 | Google Llc | Advanced motion estimation |
US10798375B2 (en) * | 2016-11-01 | 2020-10-06 | Samsung Electronics Co., Ltd. | Encoding method and device therefor, and decoding method and device therefor |
KR102435881B1 (ko) * | 2017-05-26 | 2022-08-24 | 에스케이텔레콤 주식회사 | 영상 부호화 또는 복호화하기 위한 장치 및 방법 |
KR20190024212A (ko) * | 2017-08-31 | 2019-03-08 | 세종대학교산학협력단 | 타일 구조의 구성 방법 및 이의 장치 |
-
2020
- 2020-08-11 KR KR1020200100288A patent/KR20210019387A/ko active Search and Examination
- 2020-08-11 WO PCT/KR2020/010593 patent/WO2021029646A1/ko active Application Filing
- 2020-08-11 CN CN202080057189.1A patent/CN114223197A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021029646A1 (ko) | 2021-02-18 |
CN114223197A (zh) | 2022-03-22 |
US20220279179A1 (en) | 2022-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11765398B2 (en) | Border partition | |
CN110073661B (zh) | 用于编码和解码视频数据的方法和装置 | |
US11611757B2 (en) | Position dependent intra prediction combination extended with angular modes | |
EP3155814B1 (en) | Determining application of deblocking filtering to palette coded blocks in video coding | |
KR102606330B1 (ko) | Aps 시그널링 기반 비디오 또는 영상 코딩 | |
EP3900336A1 (en) | Adaptive loop filtering classification in video coding | |
CN114402597B (zh) | 应用自适应环路滤波器的视频或图像编码 | |
WO2015191838A1 (en) | Determining quantization parameter (qp) values and delta qp values for palette coded blocks in video coding | |
EP3955578A1 (en) | Image coding using transform index | |
EP4017010A1 (en) | Transform-based image coding method, and apparatus therefor | |
CN115443660A (zh) | 用于解码与符号数据隐藏相关的成像的方法和设备 | |
CN112166606B (zh) | 用于处理图像的方法及其设备 | |
CN112740703B (zh) | 编码器、解码器和用于变换处理的对应方法 | |
CN115552910A (zh) | 用于残差编码的图像解码方法及其装置 | |
US12149688B2 (en) | Method and device for high-level image segmentation and image encoding/decoding | |
KR20210019387A (ko) | 하이 레벨 영상 분할과 영상 부호화/복호화 방법 및 장치 | |
CN113812156A (zh) | 在视频编译系统中使用简化的残差数据编译解码视频的方法及其设备 | |
CN114731439A (zh) | 基于变换的图像编译方法及其装置 | |
CN112840649A (zh) | 图像编码系统中通过使用块分割对图像解码的方法及其装置 | |
CN115349258B (zh) | 图像编码系统中用于残差编码的图像解码方法及其设备 | |
EP4462785A1 (en) | Image encoding/decoding method and device, and recording medium having bitstream stored thereon | |
KR20240090228A (ko) | 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체 | |
KR20240131275A (ko) | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 | |
CN115428460A (zh) | 图像编码系统中残差编码的图像解码方法及用于其的设备 | |
BR122024000554A2 (pt) | Método de codificação de imagem baseado em transformada e dispositivo para o mesmo |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |