KR20210035677A - Video signal encoding method and apparatus and video decoding method and apparatus - Google Patents

Video signal encoding method and apparatus and video decoding method and apparatus Download PDF

Info

Publication number
KR20210035677A
KR20210035677A KR1020190117792A KR20190117792A KR20210035677A KR 20210035677 A KR20210035677 A KR 20210035677A KR 1020190117792 A KR1020190117792 A KR 1020190117792A KR 20190117792 A KR20190117792 A KR 20190117792A KR 20210035677 A KR20210035677 A KR 20210035677A
Authority
KR
South Korea
Prior art keywords
brick
tile
slice
picture
value
Prior art date
Application number
KR1020190117792A
Other languages
Korean (ko)
Inventor
이배근
Original Assignee
주식회사 엑스리스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 엑스리스 filed Critical 주식회사 엑스리스
Priority to KR1020190117792A priority Critical patent/KR20210035677A/en
Publication of KR20210035677A publication Critical patent/KR20210035677A/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/174Methods 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
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

Provided are a method and a device for predictive encoding using tile, brick, and slice information signaling encoding. The objective of the present invention is to improve the coding efficiency of a video signal.

Description

비디오 신호 처리 방법 및 장치 {Video signal encoding method and apparatus and video decoding method and apparatus}Video signal processing method and apparatus TECHNICAL FIELD

본 발명은 비디오 신호 처리 방법 및 장치에 관한 것이다. The present invention relates to a video signal processing method and apparatus.

비디오 영상은 시공간적 중복성 및 시점 간 중복성을 제거하여 압축 부호화되며, 이는 저장 매체에 적합한 형태로 저장되거나 통신 회선을 통해 전송될 수 있다. Video images are compression-encoded by removing spatio-temporal redundancy and inter-view redundancy, which can be stored in a format suitable for a storage medium or transmitted through a communication line.

본 발명은 비디오 신호의 코딩 효율을 향상시키고자 함에 있다. The present invention is to improve the coding efficiency of a video signal.

상기 과제를 해결하기 위하여 본 발명은 타일, 브릭 및 슬라이스 정보 시그날링 부호화 방법 및 장치를 제공한다. In order to solve the above problems, the present invention provides a tile, brick, and slice information signaling encoding method and apparatus.

본 발명에 따른 비디오 신호 처리 방법 및 장치는 장치는 타일, 브릭 및 슬라이스 정보 시그날링 부호화를 이용한 예측 방법을 통해 비디오 신호 코딩 효율을 향상 시킬 수 있다.The video signal processing method and apparatus according to the present invention can improve video signal coding efficiency through a prediction method using tile, brick, and slice information signaling encoding.

1One 기본 코딩 블록 구조Basic coding block structure

픽쳐는 그림 1과 같이 복수개의 기본 코딩 유닛(Coding Tree Unit, 이하, CTU)으로 나누어진다. A picture is divided into a plurality of basic coding units (Coding Tree Unit, hereinafter, CTU) as shown in Figure 1.

Figure pat00001
Figure pat00001

그림 1Picture 1

다른 CTU와 겹치지 않도록 구성되어 있다. 예를 들어, 전체 시퀀스에서 CTU 사이즈를 128x128로 설정할 수 있고, 픽쳐 단위로 128x128 내지 256x256 중 어느 하나를 선택해서 사용할 수도 있다. It is configured so that it does not overlap with other CTUs. For example, the CTU size may be set to 128x128 in the entire sequence, and any one of 128x128 to 256x256 may be selected and used in picture units.

CTU를 계층적으로 분할하여 코딩 블록/코딩 유닛(Coidng Unit, 이하 CU)을 생성할 수 있다. 코딩 유닛 단위로 예측 및 변환을 수행할 수 있으며, 예측 부호화 모드를 결정하는 기본 단위가 된다. 예측 부호화 모드는 예측 영상을 생성하는 복수개의 방법을 나타내며, 화면 내 예측 (intra prediction, 이하, 인트라 예측), 화면 간 예측(inter prediction, 이하, 인터 예측) 또는 복합 예측(combined prediction)등을 예로 들수 있다. 구체적으로 예를 들어, 코딩 유닛 단위로 인트라 예측, 인터 예측 또는 복합 예측 중 적어도 어느 하나의 예측 부호화 모드를 이용하여 예측 블록(prediction block)을 생성할 수 있다. 화면 간 예측 모드에서 참조 픽쳐가 현재 픽쳐를 가리키는 경우에는 이미 복호화된 현재 픽쳐 내 영역에서 예측 블록을 생성할 수 있다. 참조 픽쳐 인덱스와 모션 벡터를 이용하여 예측 블록을 생성하기 때문에 화면 간 예측에 포함할 수 있다. 인트라 예측은 현재 픽쳐의 정보를 이용하여 예측 블록을 생성하는 방법이고, 인터 예측은 이미 복호화된 다른 픽쳐의 정보를 이용하여 예측 블록을 생성하는 방법이며, 복합 예측은 인터 예측과 인트라 예측을 혼합하여 사용하는 방법이다. A coding block/coding unit (CU) may be generated by hierarchically dividing the CTU. Prediction and transformation may be performed in units of coding units, and become a basic unit for determining a prediction coding mode. The prediction encoding mode refers to a plurality of methods of generating a predicted image, such as intra prediction (intra prediction, hereinafter, intra prediction), inter prediction (hereinafter, inter prediction), or combined prediction. It can be mentioned. In more detail, for example, a prediction block may be generated by using at least one of intra prediction, inter prediction, and complex prediction in a coding unit unit. In the inter prediction mode, when the reference picture indicates the current picture, a prediction block may be generated in an area within the current picture that has already been decoded. Since a prediction block is generated using a reference picture index and a motion vector, it can be included in inter prediction. Intra prediction is a method of generating a prediction block using information of the current picture, inter prediction is a method of generating a prediction block using information of another picture that has already been decoded, and composite prediction is a method of mixing inter prediction and intra prediction. This is how you use it.

CTU는 그림 2와 같이 쿼드 트리 ,바이너리 트리 또는 트리플 트리 형태로 분할 (파티셔닝)될 수 있다. 분할된 블록은 다시 쿼드 트리, 바이너리 트리 또는 트리플 트리 형태로 추가 분할 될수 있다. 현재 블록을 4개의 정방 형태 파티션으로 나누는 방법을 쿼드 트리 파티셔닝이라고 부르고, 현재 블록을 2개의 비정방 형태 파티션으로 나누는 방법을 바이너리 트리 파티셔닝이라고 부르며, 현재 블록을 3개의 비정방 형태 파티션으로 나누는 방법을 바이너리 트리 파티셔닝이라고 정의 한다. The CTU can be divided (partitioned) into a quad tree, binary tree or triple tree, as shown in Figure 2. The divided block can be further divided into a quad tree, binary tree, or triple tree. The method of dividing the current block into 4 square partitions is called quad tree partitioning, the method of dividing the current block into 2 irregular partitions is called binary tree partitioning, and the method of dividing the current block into 3 irregular partitions It is defined as binary tree partitioning.

수직 방향으로 바이너리 파티셔닝(그림 2의 SPLIT_BT_VER)을 수직 바이너리 트리 파티셔닝이라고 부르며, 수평 방향으로 바이너리 트리 파티셔닝 (그림 2의 SPLIT_BT_HOR)을 수평 바이너리 트리 파티셔닝이라고 정의 한다. Binary partitioning in the vertical direction ( SPLIT_BT_VER in Figure 2 ) is called vertical binary tree partitioning, and binary tree partitioning in the horizontal direction ( SPLIT_BT_HOR in Figure 2 ) is defined as horizontal binary tree partitioning.

수직 방향으로 트리플 파티셔닝 (그림 2의 SPLIT_TT_VER)을 수직 트리플 트리 파티셔닝이라고 부르며, 수평 방향으로 트리플 트리 파티셔닝 (그림 2의 SPLIT_TT_HOR)을 수평 트리플 트리 파티셔닝이라고 정의 한다. Triple-tree partitioning in the vertical direction ( SPLIT_TT_VER in Fig. 2 ) is called vertical triple-tree partitioning, and triple-tree partitioning in the horizontal direction ( SPLIT_TT_HOR in Fig. 2 ) is defined as horizontal triple-tree partitioning.

추가 분할 횟수를 파티셔닝 뎁스(partitioning depth)라고 부르며, 시퀀스 내지 픽쳐/타일 세트 별로 파티셔닝 뎁스가 최대치를 서로 다르게 설정할 수도 있으며, 파티셔닝 트리 형태(쿼드 트리/바이너리 트리/트리플 트리)에 따라 서로 다른 파티셔닝 뎁스를 가지도록 설정할 수 있으며, 이를 나타내는 신택스를 시그날링할 수도 있다. The number of additional divisions is called partitioning depth, and the maximum value of the partitioning depth may be set differently for each sequence or picture/tile set, and different partitioning depths according to the partitioning tree type (quad tree/binary tree/triple tree) It can be set to have, and a syntax indicating this can be signaled.

Figure pat00002
Figure pat00002

그림 2Picture 2

분할된 코딩 블록은 쿼드 파티셔닝, 바이너리 파니셔닝 또는 멀티 파티셔닝과 같은 방법으로 추가로 분할하여 코딩 유닛을 구성하거나 추가 분할 없이 코딩 유닛을 구성할 수도 있다.The divided coding block may be further divided by a method such as quad partitioning, binary partitioning, or multi-partitioning to configure a coding unit, or may configure a coding unit without further partitioning.

Figure pat00003
Figure pat00003

그림 3Figure 3

그림 3 과 같이 하나의 CTU를 계층적으로 코딩 유닛을 설정할 수 있으며, 바이너리 트리 파티셔닝, 쿼드 트리 파티셔닝/트리플 트리 파티셔닝을 이용하여 코딩 유닛을 중 적어도 어느 하나를 이용하여 코딩 유닛을 분할할 수 있다. 이와 같은 방법을 멀티 트리 파티셔닝(Multi tree partitioning)이라고 정의 한다. As shown in Figure 3 , a coding unit can be hierarchically set for one CTU, and a coding unit can be partitioned using at least one of coding units using binary tree partitioning, quad tree partitioning/triple tree partitioning. This method is defined as multi tree partitioning.

파티셔닝 뎁스가 k인 임의의 코딩 유닛을 분할하여 생성된 코딩 유닛을 하위 코딩 유닛이라하며, 파티셔닝 뎁스는 k+1이 된다. 파티셔닝 뎁스 k+1인 하위 코딩 유닛을 포함하고 있는 파티셔닝 뎁스 k인 코딩 유닛을 상위 코딩 유닛이라 한다. A coding unit generated by dividing an arbitrary coding unit having a partitioning depth of k is referred to as a lower coding unit, and the partitioning depth is k+1. A coding unit having a partitioning depth k including a lower coding unit having a partitioning depth k+1 is referred to as an upper coding unit.

상위 코딩 유닛의 파티셔닝 타입 및/또는 현재 코딩 유닛의 주변에 있는 코딩 유닛의 파티셔닝 타입에 따라 현재 코딩 유닛의 파티셔닝 타입이 제한될 수도 있다. The partitioning type of the current coding unit may be limited according to the partitioning type of the upper coding unit and/or the partitioning type of the coding units surrounding the current coding unit.

여기서, 파티셔닝 타입은 바이너리 트리 파티셔닝, 쿼드 트리 파티셔닝/트리플 트리 파티셔닝 중 어느 파티셔닝을 사용했는지를 알려주는 지시자를 나타낸다. Here, the partitioning type represents an indicator indicating which partitioning of binary tree partitioning, quad tree partitioning/triple tree partitioning is used.

22 예측 영상 생성 방법How to generate predictive image

비디오 부호화에서 예측 영상은 복수 개의 방법으로 생성할 수 있으며, 예측 영상을 생성하는 방법을 예측 부호화 모드라고 한다. In video encoding, a predicted image can be generated by a plurality of methods, and a method of generating a predicted image is referred to as a predictive encoding mode.

예측 부호화 모드는 인트라 예측 부호화 모드, 인터 예측 부호화 모드, 현재 픽쳐 레퍼런스 부호화 모드 또는 결합 부호화 모드 (combined prediction)등으로 구성될 수 있다. The prediction encoding mode may include an intra prediction encoding mode, an inter prediction encoding mode, a current picture reference encoding mode, or a combined prediction mode.

인터 예측 부호화 모드는 이전 픽쳐의 정보를 이용하여 현재 블록의 예측 블록(예측 영상)을 생성하는 예측 부호화 모드라고 하고, 인트라 예측 부호화 모드는 현재 블록과 이웃한 샘플을 이용하여 예측 블록을 생성하는 예측 부호화 모드라 한다. 현재 픽쳐의 이미 복원된 영상을 이용하여 예측 블록을 생성할 수도 있으며, 이를 현재 픽쳐 레퍼런스 모드 또는 인트라 블록 카피 모드라고 정의 한다. The inter prediction coding mode is a prediction coding mode that generates a prediction block (prediction image) of the current block using information of a previous picture, and the intra prediction coding mode is a prediction that generates a prediction block using samples adjacent to the current block. It is called an encoding mode. A prediction block may be generated using an image that has already been reconstructed of the current picture, and this is defined as a current picture reference mode or an intra block copy mode.

인터 예측 부호화 모드, 인트라 예측 부호화 모드 또는 현재 픽쳐 레퍼런스 부호화 모드 중 적어도 2개 이상의 예측 부호화 모드를 사용하여 예측 블록을 생성할 수도 있으며, 이를 결합 부호화 모드(Combined prediction)이라고 정의 한다. A prediction block may be generated by using at least two or more of an inter prediction encoding mode, an intra prediction encoding mode, or a current picture reference encoding mode, which is referred to as a combined prediction mode.

2.12.1 인트라 예측 부호화 방법 Intra prediction coding method

인트라 예측은 그림 4와 같이 현재 블록 주변에 있는 이미 부호화된 경계 샘플을 인트라 예측을 생성하는데 사용하며, 이를 인트라 레퍼런스 샘플이라고 정의 한다. In intra prediction , as shown in Fig. 4 , an already coded boundary sample around the current block is used to generate intra prediction, and this is defined as an intra reference sample.

인트라 레퍼런스 샘플의 평균값을 예측 블록 전체 샘플의 값을 설정하거나 (DC 모드), 수평 방향 레퍼런스 가중 예측을 수행하여 생성한 수평 방향 예측 샘플과 수직 방향 레퍼런스 샘플을 가중 예측하여 생성한 수직 방향 예측 샘플을 생성한 후, 수평 방향 예측 샘플과 수직 방향 예측 샘플을 가중 예측하여 예측 샘플을 생성하거나(Planar 모드), 방향성 인트라 예측 모드등을 이용하여 인트라 예측을 수행할 수 있다. The average value of the intra reference sample is predicted by setting the value of all samples in the predicted block (DC mode), or the vertical direction predicted sample generated by weighted predicting the horizontal direction prediction sample and the vertical direction reference sample generated by performing horizontal reference weighted prediction. After generation, a prediction sample may be generated by weighted prediction of a horizontal direction prediction sample and a vertical direction prediction sample (Planar mode), or intra prediction may be performed using a directional intra prediction mode.

Figure pat00004
Figure pat00004

그림 4Figure 4

그림 5의 왼쪽 그림과 같이 33개의 방향을 사용(총 35개 인트라 예측 모드)하여 인트라 예측을 수행할 수 있고, 그림 5의 오른쪽 그림과 같이 65개의 방향을 사용(총 67개 인트라 예측 모드)할 수도 있다. 방향성 인트라 예측을 사용하는 경우에는 인트라 예측 모드의 방향성을 고려하여 인트라 레퍼런스 샘플(레퍼런스 참조 샘플)을 생성하고, 이로 부터 인트라 예측을 수행할 수 있다. As shown in the left figure of Figure 5, intra prediction can be performed using 33 directions (total of 35 intra prediction modes), and 65 directions (total of 67 intra prediction modes) as shown in the right figure of Figure 5 May be. In the case of using directional intra prediction, an intra reference sample (reference reference sample) may be generated in consideration of the direction of the intra prediction mode, and intra prediction may be performed therefrom.

코딩 유닛의 좌측에 있는 인트라 레퍼런스 샘플을 좌측 인트라 레퍼런스 샘플이라하고, 코딩 유닛의 상측에 있는 인트라 레퍼런스 샘플을 상측 인트라 레퍼런스 샘플이라 한다. An intra reference sample on the left side of the coding unit is referred to as a left intra reference sample, and an intra reference sample on the upper side of the coding unit is referred to as an upper intra reference sample.

방향성 인트라 예측을 수행하는 경우에는 표 1과 같이 인트라 예측 모드에 따라 예측 방향(또는 예측 각도)을 나타내는 파라미터인 인트라 방향 파라미터 (intraPredAng)를 설정할 수 있다. 아래 표 1은 35개 인트라 예측 모드를 사용할 때 2 내지 34의 값을 가지는 방향성 인트라 예측 모드를 기반으로 하는 일예에 불과하다. 방향성 인트라 예측 모드의 예측 방향(또는 예측 각도)은 더 세분화되어 33개보다 많은 개수의 방향성 인트라 예측 모드가 이용될 수 있음은 물론이다. When directional intra prediction is performed, as shown in Table 1, an intra direction parameter (intraPredAng), which is a parameter indicating a prediction direction (or a prediction angle), may be set according to the intra prediction mode. Table 1 below is only an example based on a directional intra prediction mode having a value of 2 to 34 when 35 intra prediction modes are used. It goes without saying that the prediction directions (or prediction angles) of the directional intra prediction modes are further subdivided so that more than 33 directional intra prediction modes can be used.

Figure pat00005
Figure pat00005

그림 5Picture 5

표 1Table 1

Figure pat00006
Figure pat00006

Figure pat00007
Figure pat00007

그림 6Figure 6

intraPredAng이 음수인 경우 (예를 들어, 인트라 예측 모드 인덱스가 11과 25 사이인 경우)에는 그림 6과 같이 현재 블록에 좌측 인트라 레퍼런스 샘플과 상측 인트라 레퍼런스 샘플을 인트라 예측 모드의 각도에 따라 1D로 구성된 일차원 레퍼런스 샘플 (Ref_1D)로 재구성할 수 있다. When intraPredAng is negative (for example, when the intra prediction mode index is between 11 and 25), as shown in Figure 6 , the left intra reference sample and the upper intra reference sample are configured in 1D according to the angle of the intra prediction mode. It can be reconstructed as a one-dimensional reference sample (Ref_1D).

Figure pat00008
Figure pat00008

그림 7Figure 7

인트라 예측 모드 인덱스가 11과 18 사이인 경우에는 그림 7과 같이 현재 블록의 상변 우측에 위치한 인트라 레퍼런스 샘플부터 좌변 하단에 위치한 인트라 레퍼런스 샘플까지 반 시계 방향으로 일차원 레퍼런스 샘플을 생성할 수 있다. When the intra prediction mode index is between 11 and 18, a one-dimensional reference sample can be generated in a counterclockwise direction from an intra reference sample located on the upper right side of the current block to an intra reference sample located on the lower left side, as shown in Figure 7.

그 외의 모드에서는 상변 인트라 레퍼런스 샘플 또는 좌변 인트라 레퍼런스 샘플만 이용하여 일차원 레퍼런스 샘플을 생성할 수 있다.In other modes, a one-dimensional reference sample may be generated using only an upper side intra reference sample or a left side intra reference sample.

Figure pat00009
Figure pat00009

그림 8Figure 8

인트라 예측 모드 인덱스가 19 와 25 사이인 경우에는 그림 8과 같이 현재 블록의 좌변 하단에 위치한 인트라 레퍼런스 샘플부터 상변 우측에 위치한 인트라 레퍼런스 샘플까지 시계 방향으로 일차원 레퍼런스 샘플을 생성할 수 있다. When the intra prediction mode index is between 19 and 25, a one-dimensional reference sample can be generated in a clockwise direction from an intra reference sample located at the lower left side of the current block to an intra reference sample located at the right side of the current block as shown in Figure 8.

참조 샘플 결정 인덱스 iIdx와 iIdx에 기초하여 결정되는 적어도 하나의 참조 샘플에 적용되는 가중치 관련 파라미터 ifact를 다음 식 (1) 내지 (2)와 같이 유도할 수 있다. iIdx와 ifact는 방향성 인트라 예측 모드의 기울기에 따라 가변적으로 결정되며, iIdx에 의해 특정되는 참조 샘플은 정수 펠(integer pel)에 해당할 수 있다.A weight-related parameter ifact applied to at least one reference sample determined based on the reference sample determination index iIdx and iIdx may be derived as in Equations (1) to (2) below. iIdx and i fact are variably determined according to the slope of the directional intra prediction mode, and a reference sample specified by iIdx may correspond to an integer pel.

iIdx = (y+1) * PiIdx = (y+1) * P angang /32 /32 (1)(One)

ii factfact = [ (y+1) * P = [(y+1) * P angang ] & 31] & 31 (2)(2)

예측 샘플 별로 적어도 하나 이상의 일차원 레퍼런스 샘플을 특정하여 예측 영상을 유도 할 수도 있다. 예를 들어, 방향성 인트라 예측 모드의 기울기 값을 고려하여 예측 샘플 생성에 사용할 수 있는 일차원 레퍼런스 샘플의 위치를 특정할 수 있다. 예측 샘플 별로 상이한 방향성 인트라 예측 모드를 가질 수도 있다. 하나의 예측 블록에 대해 복수의 인트라 예측 모드가 이용될 수도 있다. 복수의 인트라 예측 모드는 복수의 비방향성 인트라 예측 모드의 조합으로 표현될 수도 있고, 하나의 비방향성 인트라 예측 모드와 적어도 하나의 방향성 인트라 예측 모드의 조합으로 표현될 수도 있고, 또는 복수의 방향성 인트라 예측 모드의 조합으로 표현될 수도 있다. 하나의 예측 블록 내의 소정의 샘플 그룹 별로 상이한 인트라 예측 모드가 적용될 수 있다. 소정의 샘플 그룹은 적어도 하나의 샘플로 구성될 수 있다. 샘플 그룹의 개수는 현재 예측 블록의 크기/샘플 개수에 따라 가변적으로 결정될 수도 있고, 예측 블록의 크기/샘플 개수와는 독립적으로 부호화기/복호화기에 기-설정된 고정된 개수일 수도 있다. A prediction image may be derived by specifying at least one one-dimensional reference sample for each prediction sample. For example, a position of a one-dimensional reference sample that can be used to generate a prediction sample may be specified in consideration of a slope value of a directional intra prediction mode. Each prediction sample may have a different directional intra prediction mode. A plurality of intra prediction modes may be used for one prediction block. A plurality of intra prediction modes may be expressed as a combination of a plurality of non-directional intra prediction modes, a combination of one non-directional intra prediction mode and at least one directional intra prediction mode, or a plurality of directional intra prediction modes. It can also be expressed as a combination of modes. Different intra prediction modes may be applied for each predetermined sample group in one prediction block. A predetermined sample group may consist of at least one sample. The number of sample groups may be variably determined according to the size/number of samples of the current prediction block, or may be a fixed number pre-set in the encoder/decoder independently of the size/number of samples of the prediction block.

구체적으로 예를 들어, 참조 샘플 결정 인덱스 iIdx를 이용하여 일차원 레퍼런스 샘플의 위치를 특정할 수 있다. Specifically, for example, the position of the one-dimensional reference sample may be specified using the reference sample determination index iIdx.

인트라 예측 모드의 기울기에 따라 하나의 일차원 레퍼런스 샘플만으로는 인트라 예측 모드의 기울기를 표현할 수 없을 때는 식 (3)와 같이 인접한 일차원 레퍼런스 샘플을 보간하여 제 1 예측 영상을 생성할 수 있다. 인트라 예측 모드의 기울기/각도에 따른 angular line이 정수 펠에 위치한 레퍼런스 샘플을 지나가지 않는 경우, 해당 angular line에 좌/우 또는 상/하에 인접한 레퍼런스 샘플을 보간하여 제1 예측 영상을 생성할 수 있다. 이때 이용되는 보간 필터의 필터 계수는 ifact에 기초하여 결정될 수 있다. 예를 들어, 보간 필터의 필터 계수는 angular line 상에 위치한 소수 펠과 상기 정수 펠에 위치한 레퍼런스 샘플 간의 거리에 기초하여 유도될 수 있다. When the slope of the intra prediction mode cannot be expressed with only one one-dimensional reference sample according to the slope of the intra prediction mode, a first prediction image may be generated by interpolating adjacent one-dimensional reference samples as shown in Equation (3). When the angular line according to the slope/angle of the intra prediction mode does not pass the reference sample located in the integer pel, a first prediction image may be generated by interpolating a reference sample adjacent to the left/right or above/below the corresponding angular line. . The filter coefficient of the interpolation filter used at this time may be determined based on i fact. For example, the filter coefficient of the interpolation filter may be derived based on a distance between a fractional pel located on an angular line and a reference sample located on the integer pel.

P(x,y) = ((32-iP(x,y) = ((32-i factfact )/32)* Ref_1D(x+iIdx+1) + (i)/32)* Ref_1D(x+iIdx+1) + (i factfact /32)* Ref_1D(x+iIdx+2)/32)* Ref_1D(x+iIdx+2) (3)(3)

하나의 일차원 레퍼런스 샘플만으로 인트라 예측 모드의 기울기를 표현할 수 있을 때 (ifact 값이 0 일때) 는 다음 식 (4)와 같이 제 1 예측 영상을 생성할 수 있다. When the slope of the intra prediction mode can be expressed with only one one-dimensional reference sample (when the i fact value is 0), the first prediction image can be generated as shown in Equation (4) below.

P(x,y) = Ref_1D(x+iIdx+1)P(x,y) = Ref_1D(x+iIdx+1) (4)(4)

2.22.2 와이드 앵글 인트라 예측 부호화 방법Wide-angle intra prediction coding method

방향성 인트라 예측 모드의 예측 각도는 그림 9와 같이 45 내지 -135 사이로 설정될 수 있다. The prediction angle of the directional intra prediction mode may be set between 45 and -135 as shown in Figure 9.

Figure pat00010
Figure pat00010

그림 9Figure 9

비정방 형태 코딩 유닛에서 인트라 예측 모드를 수행하는 경우 기 정의된 예측 각도 때문에 현재 샘플과 가까운 인트라 레퍼런스 샘플 대신 현재 샘플과 거리가 먼 인트라 레퍼런스 샘플에서 현재 샘플을 예측하는 단점이 발생할 수 있다. When the intra prediction mode is performed in the amorphous coding unit, there may be a disadvantage of predicting a current sample from an intra reference sample far from the current sample instead of an intra reference sample close to the current sample due to a predefined prediction angle.

예를 들어, 그림 10의 왼쪽 그림과 같이 코딩 유닛의 너비가 코딩 유닛의 높이보다 큰 코딩 유닛(이하, 수평 방향 코딩 유닛)에서는 거리가 가까운 샘플 T 대신에 거리가 먼 L에서 인트라 예측을 수행할 수 있다. 또 다른 예를 들어, 그림 10의 오른쪽 그림과 같이 코딩 유닛의 높이가 코딩 유닛의 너비보다 큰 코딩 유닛(이하, 수직 방향 코딩 유닛)에서는 거리가 가까운 샘플 L 대신에 거리가 먼 샘플 T로 부터 인트라 예측을 수행할 수 있다. For example, as shown in the left figure of Fig. 10 , in a coding unit whose width is larger than the height of the coding unit (hereinafter, horizontal coding unit), intra prediction is performed at a far distance L instead of a close sample T. I can. As another example, as shown in the right figure of Figure 10, in a coding unit whose height is larger than the width of the coding unit (hereinafter, the vertical coding unit), the intra-distance sample T from the distant sample T instead of the close sample L You can make predictions.

Figure pat00011
Figure pat00011

그림 10Figure 10

비정방 형태 코딩 유닛에서는 기 정의된 예측 각도보다 더 넓은 예측 각도에서 인트라 예측을 수행할 수도 있으며, 이를 와이드 앵글 인트라 예측 모드라고 정의 한다. In the amorphous coding unit, intra prediction may be performed at a prediction angle wider than a predefined prediction angle, and this is defined as a wide angle intra prediction mode.

와이드 앵글 인트라 예측 모드는

Figure pat00012
내지
Figure pat00013
의 예측 각도를 가질 수 있으며, 기존 인트라 예측 모드에서 사용된 각도를 벗어나는 예측 각도를 와이드 앵글 각도라고 정의 한다. Wide angle intra prediction mode
Figure pat00012
To
Figure pat00013
It can have a prediction angle of, and a prediction angle that deviates from the angle used in the existing intra prediction mode is defined as a wide angle angle.

그림 10의 좌측 그림에서 수평 방향 코딩 유닛에 있는 샘플 A는 와이드 앵글 인트라 예측 모드를 사용하여 인트라 레퍼런스 샘플 T로 부터 예측할 수 있다. In the left figure of Figure 10 , sample A in the horizontal direction coding unit can be predicted from the intra reference sample T using the wide-angle intra prediction mode.

그림 10의 우측 그림에서 수직 방향 코딩 유닛에 있는 샘플 A는 와이드 앵글 인트라 예측 모드를 사용하여 인트라 레퍼런스 샘플 L로 부터 예측할 수 있다. In the right figure of Figure 10 , sample A in the vertical direction coding unit can be predicted from the intra reference sample L using the wide-angle intra prediction mode.

기존 인트라 예측 모드 N개에 M개의 와이드 앵글 각도를 더해 N+M 개의 인트라 예측 모드가 정의될 수 있다. 구체적으로 예를 들어, 표 2와 같이 67개 인트라 모드에 28개 와이드 앵글 각도를 더해 총 95개 인트라 예측 모드가 정의될 수 있다. N+M intra prediction modes may be defined by adding M wide angle angles to N existing intra prediction modes. Specifically, for example, as shown in Table 2, a total of 95 intra prediction modes may be defined by adding 28 wide angle angles to 67 intra modes.

현재 블록이 이용할 수 있는 인트라 예측 모드는 현재 블록의 형태에 따라 결정될 수 있다. 일 예로, 현재 블록의 크기, 종횡비(예컨대, 너비와 높이의 비율), 레퍼런스 라인 인덱스 중 적어도 하나에 기초하여, 95개의 방향성 인트라 예측 모드 중 65개의 방향성 인트라 예측 모드를 선택할 수 있다. The intra prediction mode that the current block can use may be determined according to the shape of the current block. For example, 65 directional intra prediction modes may be selected from among 95 directional intra prediction modes based on at least one of a size of a current block, an aspect ratio (eg, a ratio of width and height), and a reference line index.

표 2Table 2

Figure pat00014
Figure pat00014

표 2에 나타난 인트라 예측 모드 각도는, 현재 블록의 형태, 레퍼런스 라인 인덱스 중 적어도 하나에 기초하여 적응적으로 결정될 수 있다. 일 예로, Mode 15의 intraPredAngle은 현재 블록이 비정방형인 경우보다 현재 블록이 정방형인 경우에 더 큰 값을 갖도록 설정될 수 있다. 또는, Mode 75의 intraPredAngle은 인접 레퍼런스 라인이 선택된 경우보다 비인접 레퍼런스 라인이 선택된 경우 더 큰 값을 갖도록 설정될 수 있다.The intra prediction mode angle shown in Table 2 may be adaptively determined based on at least one of a shape of a current block and a reference line index. For example, the intraPredAngle of Mode 15 may be set to have a larger value when the current block is a square than when the current block is an amorphous. Alternatively, the intraPredAngle of Mode 75 may be set to have a larger value when a non-adjacent reference line is selected than when an adjacent reference line is selected.

와이드 앵글 인트라 예측 모드를 사용하는 경우 그림 11과 같이 상측 인트라 레퍼런스 샘플의 길이를 2W+1로 설정하고, 좌측 인트라 레퍼런스 샘플의 길이를 2H+1로 설정할 수 있다. When using the wide-angle intra prediction mode, the length of the upper intra reference sample can be set to 2W+1, and the length of the left intra reference sample can be set to 2H+1, as shown in Figure 11.

Figure pat00015
Figure pat00015

그림 11Figure 11

와이드 앵글 인트라 예측을 사용하는 경우에 와이드 앵글 인트라 예측 모드의 인트라 예측 모드를 부호화 하는 경우에는 인트라 예측 모드의 개수가 많아져서 부호화 효율이 낮아 질수 있다. 와이드 앵글 인트라 예측 모드는 와이드 앵글 인트라에서 사용되지 않는 기존 인트라 예측 모드로 대체하여 부호화 할 수 있으며, 대체되는 예측 모드를 와이드 앵글 대체 모드라고 한다. 와이드 앵글 대체 모드는 와이드 앵글 인트라 예측 모드와 반대 방향인 인트라 예측 모드일 수 있다.In the case of using wide-angle intra prediction, when the intra prediction mode of the wide-angle intra prediction mode is encoded, the number of intra prediction modes increases, and thus encoding efficiency may be lowered. The wide-angle intra prediction mode can be encoded by replacing the existing intra prediction mode that is not used in the wide-angle intra prediction mode, and the replaced prediction mode is called a wide-angle replacement mode. The wide angle replacement mode may be an intra prediction mode in a direction opposite to the wide angle intra prediction mode.

구체적으로 예를 들어, 그림 12와 같이 35개 인트라 예측을 사용하는 경우 와이드 앵글 인트라 예측 모드 35는 와이드 앵글 대체 모드인 인트라 예측 모드 2로 부호화할 수 있고, 와이드 앵글 인트라 예측 모드 36은 와이드 앵글 대체 모드인 인트라 예측 모드 3으로 부호화 할 수 있다. Specifically, for example, when 35 intra predictions are used as shown in Figure 12 , wide-angle intra prediction mode 35 can be encoded using intra prediction mode 2, which is a wide-angle replacement mode, and wide-angle intra prediction mode 36 is used for wide-angle replacement. It can be encoded in intra prediction mode 3, which is a mode.

Figure pat00016
Figure pat00016

그림 12Figure 12

코딩 블록의 형태 또는 코딩 블록 높이대 너비의 비에 따라 대체하는 모드와 개수를 다르게 설정할 수 있다. 구체적으로 예를 들어, 표 3은 코딩 블록의 너비와 높이의 비에 따라 사용되는 인트라 예측 모드를 나타낸다. The replacement mode and number may be differently set according to the shape of the coding block or the ratio of the height to the width of the coding block. Specifically, for example, Table 3 shows intra prediction modes used according to the ratio of the width and height of a coding block.

3 Table 3

Figure pat00017
Figure pat00017

인트라 예측 영상을 생성 한 후, 샘플 포지션에 기초하여 각 샘플 별로 인트라 예측 영상을 업데이트 할수 있으며, 이를 샘플 포지션 기반 인트라 가중 예측 방법 (Position dependent prediction combination, PDPC)라고 정의한다.After generating the intra prediction image, the intra prediction image may be updated for each sample based on the sample position, and this is defined as a sample position-based intra-weighted prediction method (Position dependent prediction combination, PDPC).

2.32.3 멀티 라인 인트라 예측 부호화 방법 Multi-line intra prediction coding method

다음 그림 13과 같이 복수 개의 인트라 레퍼런스 라인에서 인트라 예측을 수행할 수도 있으며, 이를 멀티 라인 인트라 예측 부호화 방법이라고 한다.

Figure pat00018
As shown in Figure 13 below, intra prediction may be performed on a plurality of intra reference lines, which is referred to as a multi-line intra prediction coding method.
Figure pat00018

그림 13Fig. 13

인접한 인트라 페러런스 라인과 비인접 인트라 레퍼런스 라인으로 구성된 복수개의 인트라 레퍼런스 라인 중 어느 하나를 선택해서 인트라 예측을 수행할 수 있으며, 이를 복수 라인 인트라 예측 방법이라고 한다. 비인접 인트라 레퍼런스 라인은 제 1 비인접 인트라 레퍼런스 라인(비인접 레퍼런스 라인 인덱스 1), 제 2 비인접 인트라 레퍼런스 라인(비인접 레퍼런스 라인 인덱스 2), 제 3 비인접 인트라 레퍼런스 라인(비인접 레퍼런스 라인 인덱스 3)으로 구성할 수 있다. 비인접 인트라 레퍼런스 라인 중 일부만 사용할 수도 있다. 일 예로, 제 1 비인접 인트라 레퍼런스 라인 과 제 2 비인접 인트라 레퍼런스 라인만 사용할 수도 있고, 제 1비인접 인트라 레퍼런스 라인과 제 3 비인접 인트라 레퍼런스 라인만 사용할 수도 있다. Intra prediction may be performed by selecting any one of a plurality of intra reference lines composed of an adjacent intra parallel line and a non-adjacent intra reference line, and this is referred to as a multi-line intra prediction method. The non-adjacent intra reference line is a first non-adjacent intra reference line (non-adjacent reference line index 1), a second non-adjacent intra reference line (non-adjacent reference line index 2), and a third non-adjacent intra reference line (non-adjacent reference line). It can be composed of index 3). Only some of the non-adjacent intra reference lines may be used. For example, only a first non-adjacent intra reference line and a second non-adjacent intra reference line may be used, or only a first non-adjacent intra reference line and a third non-adjacent intra reference line may be used.

인트라 예측에 사용된 레퍼런스 라인을 특정하는 신택스인 인트라 레퍼런스 라인 인덱스(intra_luma_ref_idx)를 코딩 유닛 단위로 시그날링 할 수 있다. An intra reference line index (intra_luma_ref_idx), a syntax specifying a reference line used for intra prediction, may be signaled in units of coding units.

구체적으로 인접 인트라 레퍼런스 라인, 제 1 비인접 인트라 레퍼런스 라인, 제 3 비인접 인트라 레퍼런스 라인을 사용하는 경우에 다음 표 4와 같이 intra_luma_ref_idx를 정의할 수도 있다. Specifically, when using an adjacent intra reference line, a first non-adjacent intra reference line, and a third non-adjacent intra reference line, intra_luma_ref_idx may be defined as shown in Table 4 below.

표 4Table 4

Figure pat00019
Figure pat00019

비인접 인트라 레퍼런스 라인을 사용하는 경우에는 비방향성 인트라 예측 모들를 사용하지 않도록 설정할 수도 있다. 즉, 비인접 인트라 레퍼런스 라인을 사용하는 경우에는 DC 모드 내지 플래너 모드 (Planar mode)를 사용하지 않도록 제한 할 수도 있다. When a non-adjacent intra reference line is used, it may be set not to use a non-directional intra prediction mode. That is, when a non-adjacent intra reference line is used, it may be restricted not to use the DC mode or the planar mode.

비인접 인트라 레퍼런스 라인에 속한 샘플의 개수는 인접 인트라 페러런스 라인의 샘플 개수보다 크게 설정할 수 있다. 또한 제 i 비인접 인트라 레퍼런스 라인의 샘플 개수보다 제 i+1 비인접 인트라 레퍼런스 라인의 샘플 개수가 더 많게 설정할 수도 있다. 제 i 비인접 인트라 레퍼런스 라인의 상측 샘플 개수와 제 i-1 비인접 인트라 레퍼런스 라인의 상측 샘플 개수 차이는 레퍼런스 샘플 개수 오프셋 offsetX[i]로 나타낼 수 있다. The number of samples belonging to the non-adjacent intra reference line may be set to be larger than the number of samples of the adjacent intra parallel line. Also, the number of samples of the i+1th non-adjacent intra reference line may be set to be greater than the number of samples of the ith non-adjacent intra reference line. The difference between the number of upper samples of the i-th non-adjacent intra reference line and the number of upper samples of the i-1th non-adjacent intra reference line may be represented by the reference sample number offset offsetX[i].

offsetX[1]은 제 1 비인접 인트라 레퍼런스 라인의 상측 샘플 개수와 인접 인트라 레퍼런스 라인의 상측 샘플 개수의 차분 값을 나타낸다. 제 i 비인접 인트라 레퍼런스 라인의 좌측샘플 개수와 제 i-1 비인접 인트라 레퍼런스 라인의 좌측 샘플 개수 차이는 레퍼런스 샘플 개수 오프셋 offsetY[i]로 나타낼 수 있다. offsetY[1]은 제 1 비인접 인트라 레퍼런스 라인의 좌측 샘플 개수와 인접 인트라 레퍼런스 라인의 좌측 샘플 개수의 차분 값을 나타낸다.offsetX[1] represents a difference between the number of upper samples of the first non-adjacent intra reference line and the number of upper samples of the adjacent intra reference line. The difference between the number of left samples of the i-th non-adjacent intra reference line and the number of left samples of the i-1th non-adjacent intra reference line may be expressed as a reference sample number offset offsetY[i]. offsetY[1] represents a difference value between the number of left samples of the first non-adjacent intra reference line and the number of left samples of the adjacent intra reference line.

인트라 레퍼런스 라인 인덱스가 i인 비인접 인트라 레퍼런스 라인은 상측 비인접 레퍼런스 라인 refW + offsetX[i] 와 좌측 비인접 레퍼런스 라인 refH+ offsetY[i] 그리고 좌상단 샘플로 구성될 수 있으며, 비인접 인트라 레퍼런스 라인에 속한 샘플의 개수는 refW + refH + offsetX[i] + offsetY[i] +1 로 구성될 수 있다. A non-adjacent intra reference line with an intra reference line index of i may be composed of an upper non-adjacent reference line refW + offsetX[i], a left non-adjacent reference line refH+ offsetY[i], and an upper left sample. The number of included samples may consist of refW + refH + offsetX[i] + offsetY[i] +1.

refW =2* nTbWrefW =2* nTbW (5)(5)

refH =2* *nTbHrefH =2* *nTbH (6)(6)

식 (5) 내지 (6)에서 nTbW는 코딩 유닛의 너비를 나타내고, nTbH는 코딩 유닛의 높이를 나타내며, whRatio는 다음 식 (7)과 같이 정의 할 수 있다. In equations (5) to (6), nTbW represents the width of the coding unit, nTbH represents the height of the coding unit, and whRatio can be defined as in the following equation (7).

whRatio = log2(nTbW/nTbH)whRatio = log2(nTbW/nTbH) (7)(7)

멀티 라인 인트라 예측 부호화 방법에서는 비인접 인트라 레퍼런스 라인을 사용하는 경우에는 와이드 앵글 인트라 모드는 사용하지 않도록 설정할 수도 있다. 또는 현재 코딩 유닛의 MPM 모드가 와이드 앵글 인트라 모드이면 멀티 라인 인트라 예측 부호화 방법을 사용하지 않도록 설정할 수도 있다. In the multi-line intra prediction coding method, when a non-adjacent intra reference line is used, the wide-angle intra mode may be set not to be used. Alternatively, if the MPM mode of the current coding unit is a wide-angle intra mode, the multi-line intra prediction coding method may be set not to be used.

이 경우 인트라 레퍼런스 라인 인덱스가 i인 비인접 인트라 레퍼런스 라인은 상측 비인접 레퍼런스 라인 W + H + offsetX[i] 와 좌측 비인접 레퍼런스 라인 H + W + offsetY[i] 그리고 좌상단 샘플로 구성될 수 있으며, 비인접 인트라 레퍼런스 라인에 속한 샘플의 개수는 2W + 2H + offsetX[i] + offsetY[i] +1 로 구성될 수 있으며, whRatio 값에 따라서 offsetX[i]와 offsetY[i] 값이 달라질 수 있다. In this case, a non-adjacent intra reference line with an intra reference line index of i may consist of an upper non-adjacent reference line W + H + offsetX[i], a left non-adjacent reference line H + W + offsetY[i], and an upper left sample. , The number of samples belonging to the non-adjacent intra reference line may be composed of 2W + 2H + offsetX[i] + offsetY[i] +1, and the values of offsetX[i] and offsetY[i] may vary depending on the whRatio value. have.

예를 들어, whRatio 값이 1 보다 큰 경우에는 offsetX[i] 값을 1, offsetY[i] 값을 0 으로 설정할 수 있고, whRatio 값이 1 보다 작은 경우에는 offsetX[i] 값을 0, offsetY[i] 값을 1로 설정할 수도 있다. For example, if the whRatio value is greater than 1, you can set the offsetX[i] value to 1 and the offsetY[i] value to 0. If the whRatio value is less than 1, you can set the offsetX[i] value to 0, offsetY[ i] You can also set the value to 1.

2.52.5 인터 예측 부호화 및 복호화 방법Inter prediction coding and decoding method

이전 픽쳐의 정보를 이용하여 현재 픽쳐에 있는 블록의 예측 블록(예측 영상)을 생성하는 방법을 인터 예측 부호화 모드라고 한다. A method of generating a prediction block (prediction image) of a block in a current picture using information of a previous picture is referred to as an inter prediction encoding mode.

현재 블록의 이전 픽쳐 내에 있는 특정 블록으로 부터 예측 블록을 생성할 수도 있다. A prediction block may be generated from a specific block in a previous picture of the current block.

부호화 단계에서 이전 픽쳐 내 블록 중 복원 에러가 가장 작은 블록을 콜 블록( collocated block)을 중심으로 탐색하여 선택할 수 있으며, 현재 블록의 좌상단 샘플과 선택된 블록의 좌상단 샘플 사이의 x축 차분 및 y축 차분을 모션 벡터(motion vector)라 정의하고, 이를 비트스트림에 전송하여 시그날링할 수 있다. 모션 벡터가 특정하는 참조 픽쳐의 특정 블록에서 인터폴레이션 등을 통해 생성한 블록을 움직임 보상 예측 블록(motion compensated predictor block)이라 한다. In the encoding step, the block with the smallest reconstruction error among the blocks in the previous picture can be selected by searching around a collocated block, and the x-axis difference and y-axis difference between the upper left sample of the current block and the upper left sample of the selected block Is defined as a motion vector, and can be signaled by transmitting it to a bitstream. A block generated through interpolation from a specific block of a reference picture specified by a motion vector is called a motion compensated predictor block.

콜 블록은 그림 14와 같이 현재 블록과 좌상단 샘플의 위치 및 크기가 같은 해당 픽쳐의 블록을 나타낸다. 해당 픽쳐는 참조 픽쳐 레퍼런스와 같은 신택스로 부터 특정 될 수 있다. As shown in Fig. 14 , the collocated block represents the block of the picture with the same location and size of the current block and the upper left sample. The corresponding picture may be specified from the same syntax as the reference picture reference.

Figure pat00020
Figure pat00020

그림 14Fig. 14

인터 예측 부호화 모드에서는 오브젝트의 움직임을 고려하여 예측 블록을 생성할 수 있다. In the inter prediction encoding mode, a prediction block may be generated in consideration of the motion of an object.

예를 들어, 이전 픽쳐에 있는 오브젝트가 현재 픽쳐에서 어느 방향으로 어느 정도 움직였는지 알면 현재 블록에서 움직임을 고려한 블록을 차분하여 예측 블록(예측 영상)을 생성할 수 있으며, 이를 움직임 예측 블록이라고 정의한다. For example, if you know how and in which direction an object in the previous picture moved in the current picture, a prediction block (prediction image) can be generated by differentiating a block considering motion in the current block, and this is defined as a motion prediction block. .

현재 블록에서 움직임 예측 블록 또는 해당 예측 블록을 차분하여 잔차 블록을 생성할 수 있다. A residual block may be generated by differentiating a motion prediction block or a corresponding prediction block from the current block.

오브젝트에 움직임이 발생하면, 해당 예측 블록보다 움직임 예측 블록을 사용하면 잔차 블록의 에너지가 작아져서 압축 성능이 좋아질 수 있다. When motion occurs in an object, if the motion prediction block is used rather than the corresponding prediction block, the energy of the residual block decreases, and compression performance may be improved.

이와 같이 움직임 예측 블록을 이용하는 방법을 움직임 보상 예측이라고 부르며, 대부분의 인터 예측 부호화에서는 움직임 보상 예측을 사용한다. This method of using a motion prediction block is called motion compensation prediction, and most inter prediction coding uses motion compensation prediction.

이전 픽쳐에 있는 오브젝트가 현재 픽쳐에서 어느 방향으로, 어느 정도 움직였는지를 나타내는 값을 모션 벡터라고 한다. 모션 벡터는 시퀀스 단위 또는 타일 그룹 단위 또는 블록 단위로 서로 다른 화소 정밀도를 갖는 모션벡터를 사용할 수 있다. 예를 들어, 특정 블록에서 모션 벡터의 화소 정밀도는 octor-pel,Quarter-Pel, Half-Pel, Integer pel, 4 Integer pel 중 적어도 어느 하나 일수 있다. A value indicating in which direction and to what extent the object in the previous picture has moved in the current picture is called a motion vector. As the motion vector, motion vectors having different pixel precisions may be used in units of sequences, groups of tiles, or blocks. For example, the pixel precision of a motion vector in a specific block may be at least one of octor-pel, quarter-pel, half-pel, integer pel, and 4 integer pel.

인터 예측 모드는 translaton 모션을 이용한 인터 예측 방법과 affine 모션을 이용한 affine 인터 예측 방법이 선택적으로 사용될 수도 있다.In the inter prediction mode, an inter prediction method using translaton motion and an affine inter prediction method using affine motion may be selectively used.

2.4.12.4.1 어파인 인터 예측 부호화 및 복호화 방법Afine inter prediction coding and decoding method

비디오에서 특정 물체(object)의 움직임이 선형적으로 나타나지 않는 경우가 많이 발생한다. 예를 들어, 그림 15와 같이 카메라 줌인 (Zoom-in), 줌 아웃(Zoom-out), 회전(roation), 임의 형태로 변환을 가능하게 하는 affine 변환 등의 affine motion이 사용된 영상에서는 오브젝트의 움직임을 translation 움직임 벡터만 사용하는 경우 물체의 움직임을 효과적으로 표현할 수 없으며, 부호화 성능이 낮아질 수 있다. There are many cases in which a motion of a specific object does not appear linearly in a video. For example, in an image using affine motion such as camera zoom-in, zoom-out, rotation, and affine transformation that enables transformation into arbitrary shapes, as shown in Figure 15, the object's When only the translation motion vector is used for motion, the motion of the object cannot be effectively expressed, and coding performance may be degraded.

Figure pat00021
Figure pat00021

그림 15Fig. 15

어파인 모션은 다음 식 (8)과 같이 표현할 수 있다. Affine motion can be expressed as the following equation (8).

Figure pat00022
(8)
Figure pat00022
(8)

어파인 모션을 총 6개의 파라미터를 사용하여 표현하는 것은 복잡한 움직임이 있는 영상에 효과적이지만, 어파인 모션 파라미터를 부호화하는데 사용하는 비트가 많아서 부호화 효율이 떨어질 수도 있다. Expressing affine motion using a total of six parameters is effective for images with complex motion, but encoding efficiency may be degraded due to the large number of bits used to encode affine motion parameters.

이에, 4개의 파라미터로 어파인 모션을 간략화하여 표현할 수 있으며,, 이를 4 파라미터 어파인 모션 모델이라고 정의한다. 식 (9)는 4개의 파라미터로 어파인 모션을 표현한 것이다.Accordingly, affine motion can be simplified and expressed with four parameters, and this is defined as a four-parameter afine motion model. Equation (9) expresses affine motion with four parameters.

Figure pat00023
(9)
Figure pat00023
(9)

4 파라미터 어파인 모션 모델은 현재 블록의 두 컨트롤 포인트에서의 움직임 벡터를 포함할 수 있다. 컨트롤 포인트는 현재 블록의 좌상단 코너, 우상단 코너 및 좌하단 코너를 포함할 수 있다. 일 예로, 4파라미터 어파인 모션 모델은 그림 16의 좌측 그림과 같이 코딩 유닛의 좌상단 샘플 (x0,y0)에서의 모션 벡터 sv0 와 코딩 유닛의 우상단 샘플 (x1,y1)에서의 모션 벡터 sv1에 의해서 결정 될 수 있으며, sv0와 sv1을 어파인 시드 벡터라고 정의한다. 이하, 좌상단에 위치한 어파인 시드 벡터 sv0를 제 1 어파인 시드 벡터라 가정하고, 우상단에 위치한 어파인 시드 벡터 sv1를 제 2 어파인 시드 벡터라 가정하기로 한다. 4파라미터 어파인 모션 모델에서 제1/2 어파인 시드 벡터 중 하나를 좌하단에 위치한 어파인 시드 벡터로 교체하여 사용하는 것도 가능하다. The four-parameter affine motion model may include motion vectors at two control points of the current block. The control point may include an upper left corner, an upper right corner, and a lower left corner of the current block. As an example, as shown in the left figure of Figure 16 , the 4 parameter affine motion model is determined by the motion vector sv0 at the upper left sample (x0,y0) of the coding unit and the motion vector sv1 at the upper right sample (x1,y1) of the coding unit. Can be determined, and sv 0 and sv 1 are defined as affine seed vectors. Hereinafter, it is assumed that the affine seed vector sv 0 located in the upper left corner is the first affine seed vector, and the affine seed vector sv 1 located in the upper right corner is the second affine seed vector. In the 4-parameter affine motion model, it is also possible to replace one of the 1/2 affine seed vectors with the affine seed vector located in the lower left corner.

Figure pat00024
Figure pat00024

그림 16Fig 16

6 파라미터 어파인 모션 모델은 그림 16의 우측 그림과 같이 4 파라미터 어파인 모션 모델에 잔여 컨트롤 포인트(예컨대, 좌하단에 샘플 (x2,y2))의 모션 벡터 sv2가 추가된 어파인 모션 모델이다. 이하, 좌상단에 위치한 어파인 시드 벡터 sv0를 제 1 어파인 시드 벡터라 가정하고, 우상단에 위치한 어파인 시드 벡터 sv1를 제 2 어파인 시드 벡터라 가정하고, 좌하단에 위치한 어파인 시드 벡터 sv2를 제3 어파인 시드 벡터라 가정한다.The 6-parameter affine motion model is an affine motion model in which the motion vector sv 2 of the residual control point (e.g., sample (x2,y2) in the lower left corner) is added to the 4-parameter affine motion model as shown in the right figure of Figure 16. . Hereinafter, assuming that the affine seed vector sv 0 located at the upper left is the first affine seed vector, the affine seed vector sv 1 located at the upper right is the second affine seed vector, and the affine seed vector located at the lower left Assume that sv 2 is the third affine seed vector.

어파인 모션을 표현하기 위한 파라미터의 개수에 관한 정보가 비트스트림에 부호화될 수 있다. 예컨대, 6 파라미터의 사용 여부를 나타내는 플래그, 4 파라미터의 사용 여부를 나타내는 플래그가 타일 그룹, 타일, 코딩 유닛 또는 CTU 단위로 부호화될 수 있다. 이에 따라, 타일 그룹, 코딩 유닛 또는 CTU 단위로 4 파라미터 어파인 모션 모델 내지 6 파라미터 어파인 모션 모델을 선택적으로 사용할 수도 있다. Information about the number of parameters for expressing affine motion may be encoded in the bitstream. For example, a flag indicating whether 6 parameters are used and a flag indicating whether 4 parameters are used may be encoded in a tile group, a tile, a coding unit, or a CTU unit. Accordingly, a 4-parameter affine motion model to a 6-parameter affine motion model may be selectively used in units of tile groups, coding units, or CTUs.

어파인 시드 벡터를 이용하여 그림 17과 같이 코딩 유닛의 서브 블록 별로 모션 벡터를 유도할 수 있으며, 이를 어파인 서브 블록 벡터라고 정의한다. _A motion vector can be derived for each sub-block of the coding unit using the affine seed vector, as shown in Figure 17, and this is defined as an affine sub-block vector. _

Figure pat00025
Figure pat00025

그림 17Figure 17

어파인 서브 블록 벡터는 다음 식 (10)과 같이 유도할 수도 있다. 여기서 서브 블록의 기준 샘플 위치(x,y)는 블록의 코너에 위치한 샘플(예컨대, 좌상단 샘플)일 수도 있고, x축 또는 y축 중 적어도 하나가 중앙인 샘플(예컨대, 중앙 샘플)일 수도 있다. The affine sub-block vector can also be derived as in Equation (10) below. Here, the reference sample position (x,y) of the sub-block may be a sample located at a corner of the block (eg, an upper left sample), or a sample having at least one of the x-axis or y-axis at the center (eg, a center sample). .

Figure pat00026
(10)
Figure pat00026
(10)

어파인 서브 블록 벡터를 이용하여 코딩 유닛 단위 내지 코딩 유닛 내 서브 블록 단위로 움직임 보상을 수행할 수 있으며, 이를 어파인 인터 예측 모드라고 정의한다. 식 (10)에서 (x1-x0)는 코딩 유닛의 너비와 유닛의 너비 w와 같은 값이거나, w/2 또는 w/4로 설정할 수도 있다. Motion compensation may be performed in units of coding units or in units of sub-blocks within the coding unit by using the afine sub-block vector, and this is defined as an afine inter prediction mode. In Equation (10), (x 1 -x 0 ) may be the same as the width of the coding unit and the width of the unit w, or may be set to w/2 or w/4.

2.5.22.5.2 머지 모드 부호화 방법 Merge mode coding method

현재 코딩 유닛의 모션 정보(모션 벡터, 참조 픽쳐 인덱스 등)를 부호화 하지 않고, 주변 블록의 모션 정보로 부터 유도할 수 있다. 주변 블록 중 어느 하나의 모션 정보를 현재 코딩 유닛의 모션 정보로 설정할 수 있으며, 이를 머지 모드(merge mode)라고 정의 한다. Motion information (motion vector, reference picture index, etc.) of the current coding unit is not encoded, and can be derived from motion information of neighboring blocks. Motion information of any one of the neighboring blocks can be set as motion information of the current coding unit, and this is defined as a merge mode.

머지 모드에 사용되는 주변 블록은 그림 28의 머지 후보 인덱스 0 내지 4 와 같이 현재 코딩 유닛과 인접한 블록 (현재 코딩 유닛의 경계와 맞닿은 블록)일 수도 있고, 그림 28의 머지 후보 인덱스 5 내지 26과 같이 인접하지 않은 블록일 수도 있다. Neighboring blocks used for the remaining mode may be a picture 28 remaining candidate indices from 0 to 4 and the block are adjacent to the coding unit as the (current boundary with the abutting block of the coded unit), as shown in Figure 28, the remaining candidate index from 5 to 26 of the It may be a non-adjacent block.

Figure pat00027
Figure pat00027

그림 28Fig. 28

머지 후보가 현재 블록과의 거리가 기정의된 임계값을 넘어가면 가용(available)하지 않은 것으로 설정할 수 있다. When the distance of the merge candidate to the current block exceeds a predefined threshold, it may be set as not available.

예를 들어, 기 정의된 임계값을 CTU의 높이(ctu_height) 또는 ctu_height+N으로 설정할 수도 있으며, 이를 머지 후보 가용 임계값이라고 정의 한다. 즉 머지 후보의 y축 좌표(yi)와 현재 코딩 유닛의 좌상단 샘플(이하, 현재 코딩 유닛 기준 샘플)의 y축 좌표 차분 (y0) (즉, yi - y0)이 머지 후보 가용 임계값 보다 큰 경우에는 머지 후보를 가용(Available)하지 않은 것으로 설정할 수 있다. 여기서 N은 기 정의된 오프셋 값이다. 구체적으로 예를 들어, N을 16으로 설정할 수도 있고, ctu_height으로 설정할 수도 있다. For example, a predefined threshold may be set to the height of the CTU (ctu_height) or ctu_height+N, and this is defined as a merge candidate usable threshold. That is, the y-axis coordinate (y i ) of the merge candidate and the y-axis coordinate difference (y 0 ) (i.e., y i- y 0 ) of the upper left sample of the current coding unit (hereinafter, the reference sample of the current coding unit) are the merge candidate available threshold. If it is greater than the value, the merge candidate may be set as not available. Here, N is a predefined offset value. Specifically, for example, N may be set to 16 or ctu_height may be set.

Figure pat00028
Figure pat00028

그림 29Fig. 29

CTU 경계 (CTU boundary)를 넘어가는 머지 후보가 많은 경우에는 비가용 머지 후보가 많이 발생하여, 부호화 효율이 낮아질 수도 있다. 코딩 유닛의 위쪽에 존재하는 머지 후보(이하, 상측 머지 후보) 는 가능한 작게 설정하고, 코딩 유닛의 좌측 및 하단(이하, 좌하단 머지 후보)에 존재하는 머지 후보는 가능한 많게 설정할 수도 있다. When there are many merge candidates crossing the CTU boundary, many unusable merge candidates occur, and encoding efficiency may be lowered. Merge candidates existing above the coding unit (hereinafter, upper merge candidates) may be set as small as possible, and merge candidates existing at the left and lower sides of the coding unit (hereinafter, lower left merge candidates) may be set as many as possible.

그림 29와 같이 현재 코딩 유닛 기준 샘플의 y축 좌표와 상측 머지 후보의 y축 좌표의 차가 코딩 유닛 높이의 2배가 넘지 않도록 설정할 수도 있다. As shown in Figure 29, the difference between the y-axis coordinate of the current coding unit reference sample and the y-axis coordinate of the upper merge candidate may be set so as not to exceed twice the height of the coding unit.

그림 29와 현재 코딩 유닛 기준 샘플의 x축 좌표와 좌하단 머지 후보의 x축 좌표의 차가 코딩 유닛 너비의 2배가 넘지 않도록 설정할 수도 있다. It can be set so that the difference between the x-axis coordinates of the reference sample of the current coding unit and the x-axis coordinates of the lower left merge candidate does not exceed twice the width of the coding unit.

현재 코딩 유닛과 인접한 머지 후보를 인접 머지 후보라고 부르고, 현재 코딩 유닛과 인접하지 않은 머지 후보를 비인접 머지 후보라고 정의 한다. A merge candidate adjacent to the current coding unit is called an adjacent merge candidate, and a merge candidate that is not adjacent to the current coding unit is defined as a non-adjacent merge candidate.

현재 코딩 유닛의 머지 후보가 인접 머지 후보인지 여부를 나타내는 플래그 isAdjacentMergeflag을 시그날링할 수 있다. A flag isAdjacentMergeflag indicating whether the merge candidate of the current coding unit is an adjacent merge candidate may be signaled.

isAdjacentMergeflag값이 1 이면 현재 코딩 유닛의 모션 정보는 인접 머지 후보에서 유도할 수 있음을 나타내고, isAdjacentMergeflag값이 0 이면 현재 코딩 유닛의 모션 정보는 비인접 머지 후보에서 유도할 수 있음을 나타낸다. If the isAdjacentMergeflag value is 1, it indicates that the motion information of the current coding unit can be derived from the neighboring merge candidate, and if the isAdjacentMergeflag value is 0, it indicates that the motion information of the current coding unit can be derived from the non-adjacent merge candidate.

2.4.3 인터 복호화 영역 머지 방법 2.4.3 Inter-decoding area merge method

현재 픽쳐에서 이미 인터 예측으로 부호화된 코딩 유닛의 모션 정보(움직임 벡터 및 참조 픽쳐 인덱스)를 기 정의된 크기의 리스트에 저장할 수 있으며, 이를 인터 영역 모션 정보 리스트이라고 정의한다. Motion information (motion vector and reference picture index) of a coding unit that is already encoded by inter prediction in the current picture can be stored in a list having a predefined size, which is defined as an inter-region motion information list.

인터 영역 모션 정보 리스트에 있는 모션 정보(움직임 벡터 및 참조 픽쳐 인덱스)를 인터 복호화 영역 머지 후보라고 한다. Motion information (motion vector and reference picture index) in the inter-region motion information list is called an inter-decoding region merge candidate.

인터 복호화 영역 머지 후보를 현재 코딩 유닛의 머지 후보로 사용할 수 있으며, 이런 방법을 인터 복호화 영역 머지 방법이라고 정의한다. The inter decoding region merge candidate can be used as a merge candidate of the current coding unit, and this method is defined as an inter decoding region merge method.

타일 그룹이 초기화 되면 인터 영역 모션 정보 리스트는 비어 있으며, 픽쳐의 일부 영역을 부호화/복호화되면 인터 영역 모션 정보 리스트에 추가할 수 있다. 타일 그룹 헤더를 통해 인터 영역 모션 정보 리스트의 초기 인터 복호화 영역 머지 후보를 시그널링할 수도 있다. When the tile group is initialized, the inter-region motion information list is empty, and when a partial region of a picture is encoded/decoded, it can be added to the inter-region motion information list. The initial inter decoding region merge candidate of the inter region motion information list may be signaled through the tile group header.

코딩 유닛이 인터 예측으로 부호화/복호화 되면 그림 30과 같이 상기 코딩 유닛의 움직임 정보를 인터 영역 모션 정보 리스트에 업데이트 할 수 있다. 인터 영역 모션 정보 리스트에 있는 인터 복호화 영역 머지 후보의 개수가 최대값인 경우에는, 인터 영역 모션 정보 리스트 인덱스가 가장 작은 값 (가장 먼저 인터 영역 모션 정보 리스트에 있는 인터 복호화 영역 머지 후보)을 제거하고, 가장 최근에 부호화/복호화된 인터 영역의 모션 벡터를 인터 복호화 영역 머지 후보로 추가할 수 있다. If the coding unit is to inter-prediction encoding / decoding may update the motion information of the coding unit in the inter-domain motion information list, as shown in Figure 30. When the number of inter-decoding region merge candidates in the inter-region motion information list is the maximum value, the value with the smallest inter-region motion information list index (firstly, the inter-decoding region merge candidate in the inter-region motion information list) is removed. , A motion vector of the most recently encoded/decoded inter-region may be added as an inter-decoding region merge candidate.

Figure pat00029
Figure pat00029

그림 30Fig. 30

디코딩 된 코딩 유닛의 모션 벡터 mvCand를 인터 영역 모션 정보 리스트 HmvpCandList에 업데이트 할수 있다. 이 때 디코딩 된 코딩 유닛의 모션 정보가 인터 영역 모션 정보 리스트에 있는 모션 정보 중 어느 하나와 같은 경우(모션 벡터와 레퍼런스 인덱스가 모두 같은 경우)에는 인터 영역 모션 정보 리스트를 업데이트 하지 않거나, 그림 32와 같이 디코딩 된 코딩 유닛의 모션 벡터 mvCand을 인터 영역 모션 정보 리스트의 제일 마지막에 저장할 수 있다. 이 때 mvCand과 같은 모션 정보를 가지고 있는 HmvpCandList의 인덱스를 hIdx이면, 그림 32와 같이 hIdx 보다 큰 모든 i에 대해 HMVPCandList [i]를 HVMPCandList[i-1]로 설정할 수도 있다. 현재 디코딩된 코딩 유닛에서 서브 블록 머지 후보 (sub-block merge candidates)가 사용된 경우에는 코딩 유닛 내 대표 서브 블록의 모션 정보를 인터 영역 모션 정보 리스트에 저장할 수도 있다. The motion vector mvCand of the decoded coding unit may be updated in the inter-region motion information list HmvpCandList. At this time, if the motion information of the decoded coding unit is the same as any one of the motion information in the inter-region motion information list (when both the motion vector and the reference index are the same), the inter-region motion information list is not updated, or as shown in Figure 32 . The motion vector mvCand of the coding unit decoded together may be stored at the end of the inter-region motion information list. At this time, if the index of HmvpCandList that has the same motion information as mvCand is hIdx, HMVPCandList [i] can be set to HVMPCandList[i-1] for all i larger than hIdx as shown in Figure 32. When sub-block merge candidates are used in the currently decoded coding unit, motion information of the representative sub-block in the coding unit may be stored in the inter-region motion information list.

일 예로, 코딩 유닛 내 대표 서블 블록은 그림 31 같이 코딩 유닛 내 좌상단 서브 블록으로 설정하거나, 코딩 유닛 내 중간 서브 블록으로 설정할 수도 있다. As an example, the representative subblock in the coding unit is shown in Figure 31 . Likewise, it may be set as the upper left sub-block in the coding unit or as the middle sub-block in the coding unit.

Figure pat00030
Figure pat00030

그림 31Fig. 31

Figure pat00031
Figure pat00031

그림 32Fig. 32

인터 영역 모션 정보 리스트에 총 NumHmvp 개의 모션 정보(움직임 벡터 및 참조 픽쳐 인덱스) 를 저장할 수 있으며, NumHmvp을 인터 영역 모션 정보 리스트 크기라고 정의한다. A total of NumHmvp motion information (motion vector and reference picture index) can be stored in the inter-region motion information list, and NumHmvp is defined as the size of the inter-region motion information list.

인터 영역 모션 정보 리스트 크기는 기 정의된 값을 사용할 수 있다. 타일 그룹 헤더에 인터 영역 모션 정보 리스트 크기를 시그날링할 수도 있다. 일 예로, 인터 영역 모션 정보 리스트 크기는 16으로 정의할 수도 있고, 6으로 정의하거나 5로 정의할 수도 있다. The size of the inter-region motion information list may use a predefined value. The inter-region motion information list size may be signaled in the tile group header. For example, the size of the inter-region motion information list may be defined as 16, may be defined as 6, or may be defined as 5.

인터 예측이면서 어파인 모션 벡터를 갖는 코딩 유닛에서는 인터 영역 모션 정보 리스트를 갖지 않도록 한정할 수도 있다. In a coding unit that is inter prediction and has an affine motion vector, it may be limited not to have an inter-region motion information list.

또는 인터 예측이면서 어파인 모션 벡터를 갖는 경우에는 어파인 서브 블록 벡터를 인터 영역 모션 정보 리스트에 추가할 수도 있다. 이 때 서브 블록의 위치는 좌상단 또는 우상단, 또는 중앙 서브 블록 등으로 설정할 수도 있다. Alternatively, in the case of inter prediction and an affine motion vector, the affine subblock vector may be added to the inter-region motion information list. In this case, the position of the sub-block may be set to the upper left or upper right, or the center sub-block.

또는, 각 컨트롤 포인트의 모션 벡터 평균값을 인터 영역 머지 후보 리스트에 추가할 수도 있다.Alternatively, the average motion vector value of each control point may be added to the inter-region merge candidate list.

특정 코딩 유닛을 부호화/복호화를 수행해서 유도한 움직임 벡터 MV0가 인터 복호화 영역 머지 후보 중 어느 하나와 동일한 경우에는 MV0를 인터 영역 모션 정보 리스트에 추가하지 않을 수 있다. 또는, MV0와 동일한 움직임 벡터를 갖는 기존의 인터 복호화 영역 머지 후보를 삭제하고, MV0를 새롭게 복호화 영역 머지 후보에 포함시켜, MV0에 할당되는 인덱스를 갱신할 수 있다.If the motion vector MV0 derived by encoding/decoding a specific coding unit is the same as any one of the inter-decoding region merge candidates, MV0 may not be added to the inter-region motion information list. Alternatively, an existing inter-decoding region merge candidate having the same motion vector as MV0 may be deleted, and the index allocated to MV0 may be updated by newly including MV0 in the decoding region merge candidate.

인터 영역 모션 정보 리스트 이외에 인터 영역 모션 정보 롱텀 리스트 HmvpLTList를 구성할 수도 있다. 인터 영역 모션 정보 롱텀 리스트 크기는 인터 영역 모션 정보 리스트 크기와 같게 설정하거나, 상이한 값으로 설정할 수 있다. In addition to the inter-region motion information list, an inter-region motion information long term list HmvpLTList may be configured. The inter-region motion information long term list size may be set to be the same as the inter-region motion information list size, or may be set to a different value.

인터 영역 모션 정보 롱텀 리스트는 타일 그룹 시작 위치에 처음 추가한 인터 복호화 영역 머지 후보로 구성될 수 있다. 인터 영역 모션 정보 롱텀 리스트가 모두 가용한 값으로 구성된 이후에 인터 영역 모션 정보 리스트를 구성하거나, 인터 영역 모션 정보 리스트 내 모션 정보를 인터 영역 모션 정보 롱텀 리스트의 모션 정보로 설정할 수도 있다. The inter-region motion information long term list may be composed of an inter-decoding region merge candidate initially added to the tile group start position. After the inter-region motion information long term list is configured with all available values, the inter-region motion information list may be configured, or motion information in the inter-region motion information list may be set as motion information of the inter-region motion information long term list.

이 때 한 번 구성된 인터 영역 모션 정보 롱텀 리스트는 업데이트를 수행하지 않거나, 타일 그룹 중 복호화된 영역이 전체 타일 그룹의 반 이상일 때 다시 업데이트 하거나, m개 CTU 라인마다 업데이트 하도록 설정할 수도 있다. 인터 영역 모션 정보 리스트는 인터 영역으로 복호화될 때마다 업데이트 하거나, CTU 라인 단위로 업데이트 하도록 설정할 수 있다. At this time, the inter-region motion information long-term list configured once may be updated again when no update is performed, a decoded region of the tile group is more than half of the entire tile group, or may be set to be updated every m CTU lines. The inter-region motion information list may be updated whenever the inter-region is decoded, or may be set to be updated in units of CTU lines.

인터 영역 모션 정보 리스트에 모션 정보와 코딩 유닛의 파티션 정보 또는 형태를 저장할 수도 있다. 현재 코딩 유닛과 파티션 정보 및 형태가 유사한 인터 영역 머지 후보만 사용하여 인터 복호화 영역 머지 방법을 수행할 수도 있다. The motion information and partition information or type of the coding unit may be stored in the inter-region motion information list. The inter-decoding region merging method may be performed using only inter-region merge candidates having a similar partition information and shape as the current coding unit.

또는, 블록 형태에 따라 개별적으로 인터 영역 머지 후보 리스트을 구성할 수도 있다. 이 경우, 현재 블록의 형태에 따라, 복수의 인터 영역 머지 후보 리스트 중 하나를 선택하여 사용할 수 있다.Alternatively, an inter-region merge candidate list may be individually configured according to the block type. In this case, one of a plurality of inter-region merge candidate lists may be selected and used according to the shape of the current block.

2.72.7 대칭 MVD (Symmetric MVD) 부호화방법 Symmetric MVD (Symmetric MVD) coding method

Figure pat00032
Figure pat00032

그림 40Fig. 40

그림 40과 같이 L0에서 사용한 모션 벡터의 MVD (Motion vector difference) 의 symmetric MVD(벡터의 크기는 같고, 방향이 반대인 MVD)를 L1의 MVD로 설정할 수도 있으며, 이를 symmetric MVD 부호화 방법이라 한다. Symmetric MVD 부호화를 사용하는 경우 다음 식 (19) 내지 (20)과 같이 MV를 유도할 수 있다. As shown in Figure 40 , the symmetric MVD of the motion vector difference (MVD) of the motion vector used in L0 (the MVD with the same vector size and opposite direction) can be set as the MVD of L1, and this is called a symmetric MVD encoding method. When using symmetric MVD coding, the MV can be derived as shown in the following equations (19) to (20).

(mvx0, mvy0) (mvp_x0 + mvd_x0 , mvpy0 + mvdy0)(mvx0, mvy0) (mvp_x0 + mvd_x0, mvpy0 + mvdy0) (19)(19)

(mvx0, mvy0) (mvp_x0 - mvd_x0 , mvpy0 - mvdy0)(mvx0, mvy0) (mvp_x0-mvd_x0, mvpy0-mvdy0) (20)(20)

즉, LIST1의 움직임 예측 정보는 mvThat is, the motion prediction information of LIST1 is mv

코딩 유닛 단위로 symmetric MVD를 사용하는지 여부를 나타내는 플래그 sym_mvd_flag를 비트스트림을 통해 시그날링할 수 있다. sym_mvd_flag 값이 1 이면, 코딩 유닛에서 symmetric MVD 부호화 방법을 사용함을 나타낸다. A flag sym_mvd_flag indicating whether symmetric MVD is used in units of coding units may be signaled through a bitstream. If the value of sym_mvd_flag is 1, it indicates that the coding unit uses the symmetric MVD coding method.

Symmetric MVD 부호화를 사용하는 경우, 제 1 단방향 참조 픽쳐는 제 1 단방향 참조 픽쳐 리스트(RefPicList0) 중 현재 픽쳐보다 POC(Picture order count, 픽쳐 아웃풋 순서)가 작으면서, 현재 픽쳐와 가장 가까운 픽쳐(이하, 좌측 최소 거리 픽쳐)로 설정할 수 있으며, 제 1 단방향 참조 픽쳐 인덱스(RefPicList0)는 좌측 최소 거리 픽쳐의 참조 픽쳐 인덱스로 설정할 수 있다. 여기서 가장 가까운 픽쳐라 함은 현재 픽쳐의 POC와 참조 픽쳐의 POC 차분이 가장 작은 참조 픽쳐를 의미 한다. When using symmetric MVD coding, the first unidirectional reference picture has a smaller POC (Picture Order Count, picture output order) than the current picture in the first unidirectional reference picture list (RefPicList0), and the picture closest to the current picture (hereinafter, Left minimum distance picture), and the first unidirectional reference picture index (RefPicList0) can be set as the reference picture index of the left minimum distance picture. Here, the nearest picture means a reference picture having the smallest difference between the POC of the current picture and the reference picture.

또는 제 1 단방향 참조 픽쳐는 RefPicList0[0]로 설정할 수도 있다. Alternatively, the first unidirectional reference picture may be set to RefPicList0[0].

Symmetric MVD 부호화를 사용하는 경우, 제 2 단방향 참조 픽쳐는 제 2 단방향 참조 픽쳐 리스트(RefPicList1) 중 현재 픽쳐보다 POC가 크면서, 현재 픽쳐와 가장 가까운 픽쳐(이하, 우측 최소 거리 픽쳐)로 설정할 수 있으며, 제 2 단방향 참조 픽쳐 인덱스(RefPicList1)는 우측 최소 거리 픽쳐의 참조 픽쳐 인덱스로 설정할 수 있다. In the case of using symmetric MVD coding, the second unidirectional reference picture can be set as a picture having a larger POC than the current picture in the second unidirectional reference picture list (RefPicList1) and closest to the current picture (hereinafter, the minimum distance picture on the right). , The second unidirectional reference picture index RefPicList1 may be set as a reference picture index of the right minimum distance picture.

또는 제 2 단방향 참조 픽쳐는 RefPicList1[1]로 설정할 수도 있다. Alternatively, the second unidirectional reference picture may be set to RefPicList1[1].

제 1 단방향 참조 픽쳐 리스트에서 현재 픽쳐보다 POC가 작은 픽쳐가 존재하지 않는 경우, 제 1 단방향 참조 픽쳐 리스트 중 현재 픽쳐보다 POC가 크고 현재 픽쳐와 가장 가까운 픽쳐를 제 1 단방향 참조 픽쳐로 설정할 수도 있다. /When there is no picture with a smaller POC than the current picture in the first unidirectional reference picture list, a picture having a larger POC than the current picture in the first unidirectional reference picture list and the closest to the current picture may be set as the first unidirectional reference picture. /

제 2 단방향 참조 픽쳐 리스트에서 현재 픽쳐보다 POC가 큰 픽쳐가 존재하지 않는 경우, 제 2 단방향 참조 픽쳐 리스트 중 현재 픽쳐보다 POC가 작고 현재 픽쳐와 가장 가까운 픽쳐를 제 2 단방향 참조 픽쳐로 설정할 수도 있다. When there is no picture with a larger POC than the current picture in the second unidirectional reference picture list, a picture with a smaller POC than the current picture in the second unidirectional reference picture list and the closest to the current picture may be set as the second unidirectional reference picture.

제 1 단방향 참조 픽쳐의 POC와 제 2 단방향 참조 픽쳐의 POC가 현재 픽쳐의 POC 보다 작고, 제 1 단방향 참조 픽쳐의 POC와 제 2 단방향 참조 픽쳐의 POC가 같은 경우에는 symmetric mvd 부호화를 사용하지 않도록 설정할 수도 있다. 구체적으로 표 5와 같은 신택스 테이블을 사용할 수도 있다. When the POC of the first unidirectional reference picture and the POC of the second unidirectional reference picture are smaller than the POC of the current picture, and the POC of the first unidirectional reference picture and the POC of the second unidirectional reference picture are the same, symmetric mvd encoding is not used. May be. Specifically, a syntax table as shown in Table 5 may be used.

표 5Table 5

Figure pat00033
Figure pat00033

제 1 단방향 참조 픽쳐와 제 2 단방향 참조 픽쳐가 현재 픽쳐를 기준으로 모두 좌측에 있거나, 모두 우측에 있는 경우, symmetric MVD 대신에 다음식 (21) 내지 (22)와 같이 L1의 MVD를 스케일링하여 사용할 수도 있다. When the first unidirectional reference picture and the second unidirectional reference picture are both on the left side of the current picture, or both are on the right side, instead of symmetric MVD, the MVD of L1 is scaled and used as shown in the following equations (21) to (22). May be.

(mvx0, mvy0) (mvp_x0 + mvd_x0 , mvpy0 + mvdy0)(mvx0, mvy0) (mvp_x0 + mvd_x0, mvpy0 + mvdy0) (21)(21)

(mvx0, mvy0) (mvp_x0 + scale*mvd_x0 , mvpy0 - mvdy0)(mvx0, mvy0) (mvp_x0 + scale*mvd_x0, mvpy0-mvdy0) (22)(22)

다음식 (21) 내지 (22)에서 scale값은 식 (23) 내지 (24)와 같이 정의 할 수 있다. In the following equations (21) to (22), the scale value can be defined as in equations (23) to (24).

scale = abs(POC_Curr - POC_L0) / abs(POC_Curr - POC_L1)scale = abs(POC_Curr-POC_L0) / abs(POC_Curr-POC_L1) (23)(23)

scale = abs(POC_Curr - POC_L1) / abs(POC_Curr - POC_L0)scale = abs(POC_Curr-POC_L1) / abs(POC_Curr-POC_L0) (24)(24)

식 (23) 내지 (24)에서 POC_Curr은 현재 픽쳐의 POC 값을 나타내고, POC_L0은 제 1 단방향 참조 픽쳐의 POC 값을 나타내며, POC_L1은 제 2 단방향 참조 픽쳐의 POC 값을 나타낸다. In Equations (23) to (24), POC_Curr represents the POC value of the current picture, POC_L0 represents the POC value of the first unidirectional reference picture, and POC_L1 represents the POC value of the second unidirectional reference picture.

제 2 단방향 참조 픽쳐 리스트 중 현재 픽쳐보다 POC 값이 큰 참조 픽쳐가 존재하고, 제 1 단방향 참조 픽쳐 리스트 중 현재 픽쳐보다 POC 값이 작은 픽쳐가 적어도 하나 이상 존재하는 경우, symmetric MVD 부호화 방법을 사용하지 않을 수 있다. If there is a reference picture having a greater POC value than the current picture in the second unidirectional reference picture list, and at least one picture having a smaller POC value than the current picture in the first unidirectional reference picture list exists, the symmetric MVD encoding method is not used. May not.

또는 제 1 단방향 참조 픽쳐 리스트 중 현재 픽쳐보다 POC 값이 작은 참조 픽쳐가 존재하지 않고, 제 2 단방향 참조 픽쳐 리스트 중 현재 픽쳐보다 POC 값이 큰 참조 픽쳐가 적어도 하나 이상 존재하는 경우, symmetric MVD 부호화 방법을 사용하지 않을 수 있다. Alternatively, when there is no reference picture having a lower POC value than the current picture in the first unidirectional reference picture list, and at least one reference picture having a larger POC value than the current picture in the second unidirectional reference picture list exists, the symmetric MVD encoding method May not be used.

33 변환 및 양자화Transform and quantization

원본 영상에서 예측 영상을 차분한 영상을 잔차 영상(residual)이라 한다. An image obtained by subtracting the predicted image from the original image is called a residual image.

잔차 영상에 DCT(Discrete cosine transform)와 같은 2차원 변환(Transform)을 통하여 2원 주파수 성분으로 분해할 수 있다. 영상에서 고주파 성분을 제거해도 시각적으로 왜곡이 크게 발생하지 않는 특성이 있다. 고주파에 해당하는 값을 작게 하거나 0으로 설정하면 시각적 왜곡이 크지 않으면서도 압축 효율을 크게 할 수 있다. The residual image may be decomposed into binary frequency components through a two-dimensional transform such as a discrete cosine transform (DCT). Even if high-frequency components are removed from an image, there is a characteristic that significant distortion does not occur. If the value corresponding to the high frequency is decreased or set to 0, the compression efficiency can be increased while the visual distortion is not large.

예측 블록의 크기나 예측 모드에 따라 DST (Discrete sine transform)을 사용할 수도 있다. 구체적으로 예를 들어, 인트라 예측 모드이고, 예측 블록/코딩 블록의 크기가 NxN 보다 작은 크기인 경우에는 DST 변환을 사용하도록 설정하고, 그 외의 예측 블록/코딩 블록에서는 DCT를 사용하도록 설정할 수도 있다. Discrete sine transform (DST) may be used according to the size of the prediction block or the prediction mode. Specifically, for example, when the prediction block/coding block is in the intra prediction mode and the size of the prediction block/coding block is smaller than NxN, the DST transform may be used, and other prediction blocks/coding blocks may be set to use the DCT.

DCT는 영상을 코사인 (cosine) 변환을 이용하여 2차원 주파수 성분으로 분해(변환)하는 처리이고, 그 때의 주파수 성분들은 기저 영상으로 표현된다. 예를 들어, NxN 블록에서 DCT 변환을 수행하면 N2 개의 기본 패턴 성분을 얻을 수 있다. DCT 변환을 수행한다는 것은 원화소 블록에 포함된 기본 패턴 성분들 각각의 크기를 구하는 것이다. 각 기본 패턴 성분들의 크기는 DCT 계수라고 정의 한다. DCT is a process that decomposes (transforms) an image into 2D frequency components using a cosine transform, and the frequency components at that time are expressed as a base image. For example, if DCT transformation is performed in an NxN block, N 2 basic pattern components can be obtained. Performing DCT transformation is to obtain the size of each of the basic pattern components included in the original pixel block. The size of each basic pattern component is defined as a DCT coefficient.

대체적으로 저주파에 0이 아닌 성분들이 많이 분포하는 영상에서는 이산 여현 변환(Discrete Cosine Transform, DCT)을 주로 사용하고, 고주파 성분이 많이 분포하는 영상에서는 DST (Discrete Sine Transform)을 사용할 수도 있다. In general, a discrete cosine transform (DCT) is mainly used in an image in which many non-zero components are distributed in a low frequency, and a Discrete Sine Transform (DST) may be used in an image in which a large number of high-frequency components are distributed.

DST는 영상을 sin 변환을 이용하여 2차원 주파수 성분으로 분해(변환)하는 처리를 나타낸다. DCT 또는 DST 변환 이외의 변환 방법을 사용하여 2차원 영상을 2차원 주파수 성분으로 분해(변환)할 수 있으며, 이를 2차원 영상 변환이라고 정의 한다. DST represents a process of decomposing (converting) an image into 2D frequency components using sin transformation. A 2D image can be decomposed (transformed) into a 2D frequency component using a transformation method other than DCT or DST transformation, and this is defined as 2D image transformation.

잔차 영상 중 특정 블록에서는 2차원 영상 변환을 수행하지 않을 수 있으며, 이를 변환 스킵(transform skip)이라고 정의 한다. 변환 스킵 이후에 양자화를 적용할 수 있다. 변환 스킵의 허용 여부는, 코딩 유닛의 크기 또는 형태 중 적어도 하나에 기초하여 결정될 수 있다. 일 예로, 변환 스킵은 특정 크기 이하의 코딩 유닛에서만 사용하도록 제한할 수도 있다. 예를 들어, 32x32보다 작은 블록에서만 변환 스킵을 사용하도록 설정할 수도 있다. 또는, 정방형태 블록에서만 변환 스킵을 사용하도록 제한할 수도 있다. 구체적으로 예를 들어, 32x32, 16x16, 8x8, 4x4 블록 단위로 변환 스킵을 적용할 수도 있다. Among the residual images, a 2D image transformation may not be performed in a specific block, and this is defined as transform skip. Quantization can be applied after the transform skip. Whether to allow the transform skip may be determined based on at least one of the size or shape of the coding unit. As an example, the transform skip may be limited to be used only in coding units of a specific size or less. For example, it is possible to set the transform skip to be used only in blocks smaller than 32x32. Alternatively, it is possible to restrict the use of transform skip to only a square block. Specifically, for example, transformation skip may be applied in units of 32x32, 16x16, 8x8, and 4x4 blocks.

또는 서브 파티션 인트라 부호화 방법을 사용하는 경우 서브 파티션 단위로 변환 스킵을 선택적으로 적용할 수도 있다. 구체적으로 예를 들어, 그림 41과 같이 상측 서브 파티션에서는 변환 스킵을 사용할 수도 있고, 하측 서브 파티션에서는 수평 방향으로 DST7, 수직 방향으로 DCT8(tu_mts_idx 3)을 수행할 수도 있다. Alternatively, when the sub-partition intra coding method is used, transformation skip may be selectively applied in units of sub-partitions. Specifically, as shown in Figure 41 , transform skip may be used in the upper sub-partition, DST7 in the horizontal direction and DCT8 (tu_mts_idx 3) in the vertical direction may be performed in the lower sub-partition.

Figure pat00034
Figure pat00034

그림 41Fig. 41

2차원 영상 내에 있는 임의의 블록을 DCT 또는 DST 또는 2차원 영상 변환을 적용할 수 있으며, 이 때 사용된 변환을 제 1 변환이라고 정의 한다. 제 1 변환을 수행 후 변환 블록의 일부 영역에서 변환을 다시 수행할 수 있으며, 이를 제 2 변환이라고 정의 한다. DCT, DST, or 2D image transformation may be applied to an arbitrary block in the 2D image, and the transformation used in this case is defined as a first transformation. After performing the first transformation, transformation may be performed again in a partial region of the transformation block, and this is defined as a second transformation.

제 1 변환은 복수개의 변환 코어 중 하나를 사용할 수 있다. 구체적으로 예를 들어, 변환 블록에서 DCT2 , DCT8 또는 DST7 중 어느 하나를 선택하여 사용할 수 있다. 또는 변환 블록의 수평 방향 변환과 수직 방향 변환의 변환 코어를 개별적으로 결정할 수 있다. 이에 따라, 수평 방향 변환 및 수직 방향 변환은 상호 동일할 수도 있고, 상이할 수도 있다. 수평 방향 변환과 수직 방향 변환에서 서로 다른 변환 코어를 사용할 수도 있으며, 이를 복수 변환 코어 부호화 방법(Multiple Transform Selection, MTS)이라 정의 한다. The first transformation may use one of a plurality of transformation cores. Specifically, for example, one of DCT2, DCT8, or DST7 may be selected and used in the transform block. Alternatively, the transform cores of the horizontal direction transformation and the vertical direction transformation of the transformation block may be individually determined. Accordingly, the horizontal direction transformation and the vertical direction transformation may be the same or different. Different transform cores may be used in the horizontal direction transformation and the vertical direction transformation, and this is defined as a multiple transformation core encoding method (Multiple Transform Selection (MTS)).

제 1변환과 제 2 변환을 수행하는 블록 단위가 서로 다르게 설정할 수도 있다. 구체적으로 예를 들어, 잔차 영상의 8x8 블록에서 제 1 변환을 수행한 후, 4x4 서브 블록 별로 제 2 변환을 각각 수행할 수도 있다. 또 다른 예를 들어, 각 4x4 블록에서 제 1 변환을 수행한 후, 8x8 크기의 블록에서 제 2 변환을 각각 수행할 수도 있다. Block units for performing the first transformation and the second transformation may be set differently from each other. Specifically, for example, after performing the first transform in an 8x8 block of the residual image, the second transform may be performed for each 4x4 sub-block. For another example, after performing the first transform in each 4x4 block, the second transform may be performed in each 8x8 block.

제 1 변환이 적용된 잔차 영상을 제 1 변환 잔차 영상이라고 정의한다. The residual image to which the first transform is applied is defined as a first transform residual image.

제 1 변환 잔차 영상에 DCT 또는 DST 또는 2차원 영상 변환을 적용할 수 있으며, 이 때 사용된 변환을 제 2 변환이라고 정의한다. 제 2 변환이 적용된 2차원 영상을 제 2 변환 잔차 영상이라고 정의한다. DCT, DST, or 2D image transformation may be applied to the first transform residual image, and the transform used in this case is defined as a second transform. The 2D image to which the second transformation is applied is defined as a second transformation residual image.

제 1 변환 및/또는 제 2 변환을 수행한 후의 블록 내 샘플 값 또는 변환 스킵을 수행한 후 블록 내 샘플 값을 변환 계수라고 정의한다. 양자화는 블록의 에너지를 줄이기 위해 변환 계수를 기 정의된 값으로 나누는 과정을 말한다. 변환 계수에 양자화를 적용하기 위해 정의된 값을 양자화 파라미터라고 정의한다. A sample value in the block after performing the first transformation and/or the second transformation or the sample value in the block after performing the transformation skip is defined as a transform coefficient. Quantization refers to the process of dividing a transform coefficient by a predefined value to reduce the energy of a block. A value defined to apply quantization to a transform coefficient is defined as a quantization parameter.

시퀀스 단위 또는 블록 단위로 기 정의된 양자화 파라미터를 적용할 수 있다. 통상적으로 1에서 63 사이의 값으로 양자화 파라미터를 정의할 수 있다. A predefined quantization parameter may be applied in units of sequences or blocks. Typically, a quantization parameter can be defined with a value between 1 and 63.

변환 및 양자화를 수행한 후에, 역양자화 및 역변환을 수행하여 잔차 복원 영상을 생성 할 수 있다. 잔차 복원 영상에 예측 영상을 더해서 제 1 복원 영상을 생성할 수 있다. After performing transformation and quantization, inverse quantization and inverse transformation may be performed to generate a residual reconstructed image. A first reconstructed image may be generated by adding a predicted image to the residual reconstructed image.

현재 블록의 변환 타입을 나타내는 인덱스 정보 'tu_mts_idx'를 비트스트림을 통해 시그날링할 수 있다. tu_mts_idx는 수직 방향 변환 타입 및 수평 방향 변환 변환 타입의 조합 예를 나타내는 복수의 변환 타입 후보 중 하나를 가리킬 수 있다. tu_mts_idx에 의해 특정되는 변환 타입 후보에 기초하여, 수직 방향 변환 및 수평 방향 변환의 스킵 여부, 및 수직 방향 변환 코어 및 수평 방향 변환 코어가 결정될 수 있다. 변환 코어는, DCT2, DCT8, 또는 DST7 중 적어도 하나를 포함할 수 있다. 표 5와 같이 tu_mts_idx 별로 transform type 후보를 설정할 수 있다. 구체적으로 예를 들어, 표 6과 같이 tu_mts_idx가 0이면, 수평 방향 변환과 수직 방향 변환 모두 DCT-II를 적용할 수 있으며, tu_mts_idx가 2이면 수평 방향 변환에 DCT-VIII를 적용하고, 수직 방향 변환에 DST-VII을 적용할 수 있다. Index information'tu_mts_idx' indicating the transformation type of the current block may be signaled through a bitstream. tu_mts_idx may refer to one of a plurality of transformation type candidates representing an example of a combination of a vertical direction transformation type and a horizontal direction transformation type. On the basis of the transformation type candidate specified by tu_mts_idx, whether to skip the vertical direction transformation and the horizontal direction transformation, and the vertical direction transformation core and the horizontal direction transformation core may be determined. The conversion core may include at least one of DCT2, DCT8, and DST7. As shown in Table 5, a transform type candidate may be set for each tu_mts_idx. Specifically, as shown in Table 6, if tu_mts_idx is 0, DCT-II can be applied to both horizontal and vertical direction conversion, and if tu_mts_idx is 2, DCT-VIII is applied to horizontal direction conversion, and vertical direction conversion DST-VII can be applied to.

표 6Table 6

Figure pat00035
Figure pat00035

서브 파티션 부호화 방법을 사용하는 경우 각 서브 파티션 별로 서로 다른 변환 코어 세트를 사용할 수도 있고, 코딩 유닛 단위로 서로 같은 변환 코어 세트를 사용하도록 설정할 수도 있다. 이 때, 첫번째 서브 파티션에서만 tu_mts_idx를 비트스트림을 통해 시그날링할 수 있다. In the case of using the sub-partition encoding method, a different set of transform cores may be used for each sub-partition, or the same set of transform cores may be used for each coding unit. In this case, only the first sub-partition may signal tu_mts_idx through the bitstream.

구체적으로 예를 들어, 그림 42의 좌측 그림과 같이 코딩 유닛 내에 있는 모든 서브 파티션에서 수평 방향 변환 코어로 DST7을 사용하고, 수직 방향 변환 코어로 DCT8을 사용할 수도 있다. 또 다른 예를 들어, 그림 42의 우측 그림과 같이 코딩 유닛 내에 있는 모든 서브 파티션에서 수평 방향 변환 코어로 DCT8을 사용하고, 수직 방향 변환 코어로 DST8을 사용할 수도 있다.Specifically, for example, as shown in the left figure of Figure 42, DST7 may be used as the horizontal direction transform core and DCT8 may be used as the vertical direction transform core in all sub-partitions in the coding unit. As another example, as shown in the right figure of Fig. 42 , DCT8 may be used as the horizontal direction transform core and DST8 may be used as the vertical direction transform core in all sub-partitions in the coding unit.

Figure pat00036
Figure pat00036

그림 32Fig. 32

55 인루프 필터링 (In-loop filtering)In-loop filtering

인루프 필터링(In-loop filtering)은 양자화 및 부호화 과정에서 발생하는 정보의 손실을 줄이기 위해 복호화 된 영상에 적응적으로 필터링을 수행하는 기술이다. 디블록킹 필터(Deblocking filter), 샘플 적응적 오프셋 필터(sample adaptive offset filter, SAO), 적응적 루프 필터(adaptive loop filter, ALF)는 인루프 필터링의 한 예이다. In-loop filtering is a technique that adaptively performs filtering on a decoded image in order to reduce the loss of information that occurs during quantization and encoding. A deblocking filter, a sample adaptive offset filter (SAO), and an adaptive loop filter (ALF) are examples of in-loop filtering.

제 1 복원 영상에 디블록킹 필터 , 샘플 적응적 오프셋(Sample Adaptive Offset, SAO) 또는 적응적 루프 필터(adaptive loop filter, ALF) 중 적어도 어느 하나를 수행하여 제 2 복원 영상을 생성할 수 있다. A second reconstructed image may be generated by performing at least one of a deblocking filter, a sample adaptive offset (SAO), or an adaptive loop filter (ALF) on the first reconstructed image.

복원 영상에 디블록킹 필터를 적용한 후, SAO 및 ALF를 적용할 수 있다. After applying the deblocking filter to the reconstructed image, SAO and ALF may be applied.

비디오 부호화 과정에서 블록 단위로 변환과 양자화를 수행한다. 양자화 과정에서 발생한 손실이 발생하고, 이를 복원한 영상의 경계에서는 불연속이 발생한다. 블록 경계에 나타난 불연속 영상을 블록 화질 열화(blocking artifact)라고 정의 한다. In the video encoding process, transformation and quantization are performed in units of blocks. A loss occurs during the quantization process, and a discontinuity occurs at the boundary of the reconstructed image. Discontinuous images appearing at the block boundary are defined as block quality deterioration (blocking artifact).

Deblocking filter는 제 1 영상의 블록 경계에서 발생하는 블록 화질 열화(blocking artifact)를 완화시키고, 부호화 성능을 높여주는 방법이다. The deblocking filter is a method of mitigating block quality deterioration (blocking artifact) occurring at a block boundary of a first image and improving encoding performance.

Figure pat00037
Figure pat00037

그림 43Fig. 43

블록 경계에서 필터링을 수행하여 블록 화질 열화를 완화 시킬수 있으며, 그림 43과 같이 블록이 인트라 예측 모드로 부호화 되었는지 여부, 또는 이웃한 블록의 모션 벡터 절대값의 차이가 기 정의된 소정의 문턱값 보다 큰지 여부, 이웃한 블록의 참조 픽쳐가 서로 동일한 지 여부 중 적어도 어느 하나에 기초하여 블록 필터 강도 (blocking strength, 이하 BS) 값을 결정할 수 있다. BS 값이 0이면 필터링을 수행하지 않으며, BS 값이 1 또는 2인 경우에 블록 경계에서 필터링을 수행할 수 있다. Block quality deterioration can be alleviated by performing filtering at the block boundary, and whether the block is coded in intra prediction mode as shown in Figure 43 , or whether the difference between the absolute values of the motion vectors of neighboring blocks is greater than a predefined threshold. A block filter strength (BS) value may be determined based on at least one of whether or not reference pictures of neighboring blocks are identical to each other. When the BS value is 0, filtering is not performed, and when the BS value is 1 or 2, filtering may be performed at a block boundary.

변환 계수에 양자화를 수행하므로 주파수 영역에서 양자화를 수행하기 때문에, 물체 가장 자리에 링이 현상 (ringing artifact)를 발생시키거나, 화소 값이 원본에 비해 일정한 값만큼 커지거나 작아기게 된다. SAO는 제 1 복원 영상의 패턴을 고려하여 블록 단위로 특정 오프셋을 더하거나 빼는 방법으로 링잉 현상을 효과적으로 줄일 수 있다. SAO는 복원 영상의 특징에 따라 에지 오프셋(Edge offset, 이하 EO)과 밴드 오프셋(Band offset, BO)으로 구성된다. 에지 오프셋은 주변 화소 샘플 패턴에 따라 현재 샘플에 오프셋을 다르게 더해주는 방법이다. 밴드 오프셋은 영역 안의 비슷한 화소 밝기 값을 가진 화소 집합에 대해 일정 값을 더해 부호화 오류를 줄이는 것이다. 화소 밝기를 32개의 균일한 밴드로 나눠 비슷한 밝기 값을 가지는 화소를 하나의 집합이 되도록 할 수 있다. 예를 들어, 인접한 4개의 밴드를 하나의 범주로 묶을 수 있다. 하나의 범주에서는 동일한 오프셋 값을 사용하도록 설정할 수 있다. Since quantization is performed on a transform coefficient, a ringing artifact occurs at the edge of an object, or a pixel value increases or decreases by a certain value compared to the original because quantization is performed in the frequency domain. The SAO can effectively reduce the ringing phenomenon by adding or subtracting a specific offset in units of blocks in consideration of the pattern of the first reconstructed image. SAO is composed of an edge offset (hereinafter referred to as EO) and a band offset (BO) according to characteristics of a reconstructed image. Edge offset is a method of adding an offset to a current sample differently according to a sample pattern of surrounding pixels. Band offset is to reduce coding errors by adding a certain value to a set of pixels with similar pixel brightness values in a region. By dividing the pixel brightness into 32 uniform bands, pixels having similar brightness values can be made into one set. For example, four adjacent bands can be grouped into one category. One category can be set to use the same offset value.

ALF (Adaptive Loop Filter)는 식 (25)와 같이 제 1 복원 영상 또는 제 1 복원 영상에 deblocking filtering을 수행한 복원 영상에 기 정의된 필터 중 어느 하나를 사용하여 제 2 복원 영상을 생성하는 방법이다. ALF (Adaptive Loop Filter) is a method of generating a second reconstructed image using any one of predefined filters for a first reconstructed image or a reconstructed image that has subjected deblocking filtering to the first reconstructed image as shown in Equation (25). .

Figure pat00038
(25)
Figure pat00038
(25)

Figure pat00039
Figure pat00039

그림 44Fig. 44

이 때 필터는 픽쳐 단위 또는 CTU 단위로 선택할 수 있다. In this case, the filter can be selected in units of pictures or units of CTU.

Luma 성분에서는 다음 그림 44와 같이 5x5, 7x7 또는 9x9 다이아몬드 형태 중 어느 하나를 선택할 수 있다. Chroma 성분에서는 5x5 다이아몬드 형태만 사용할 수 있도록 제한할 수도 있다. In the Luma component, you can select any of the 5x5, 7x7 or 9x9 diamond shapes as shown in Figure 44 below. In the chroma component, it may be limited to use only the 5x5 diamond shape.

55 비디오 부호화 구조Video coding structure

Figure pat00040
Figure pat00040

그림 45Fig. 45

그림 45는 비디오 부호화 구조를 나타내는 다이아그램이다. 입력 비디오 신호는 Rate distortion 값이 가장 작은 소정의 코딩 유닛으로 나눌수 있다. 코딩 유닛 별로 인터 예측 또는 인트라 예측 또는 복합 예측 중 적어도 어느 하나를 수행하여 예측 영상을 생성할 수 있다. 부호화 단계에서 인터 예측을 수행하기 위해서는 움직임 추정 (Motion estimaition)을 수행할 수도 있다. 원본 영상에서 예측 영상을 차분하여 잔차 영상을 생성할 수 있다. Figure 45 is a diagram showing the video coding structure. The input video signal can be divided into a predetermined coding unit with the smallest rate distortion value. A prediction image may be generated by performing at least one of inter prediction, intra prediction, or complex prediction for each coding unit. In order to perform inter prediction in the encoding step, motion estimation may be performed. A residual image may be generated by differentiating the predicted image from the original image.

잔차 영상을 제 1 변환 및/또는 제 2 변환을 수행하여 변환 계수를 생성하거나 변환 스킵을 수행하여 변환 스킵 계수를 생성할 수 있다. 변환 계수 또는 변환 스킵 계수에 양자화를 수행하여 양자화된 변환 계수 내지 양자화된 변환 스킵 계수를 생성할 수 있다. A transform coefficient may be generated by performing a first transform and/or a second transform on the residual image, or a transform skip coefficient may be generated by performing a transform skip. Quantization may be performed on a transform coefficient or a transform skip coefficient to generate a quantized transform coefficient or a quantized transform skip coefficient.

양자화된 변환 계수 내지 양자화된 변환 스킵 계수를 역양자화 및 역 변환을 수행하여 복원 영상을 생성할 수 있다. 이 복원 영상에 인루프 필터링을 수행하여 필터링 복원 영상을 생성할 수 있다. 이 필터링 복원 영상이 인코딩 단계에서 최종 아웃풋 (output) 영상이 된다. 필터링 복원 영상은 참조 픽쳐 버퍼 (Decoded picture buffer)로 저장되어 다른 픽쳐에서 참조 픽쳐로 사용할 수 있다.A reconstructed image may be generated by performing inverse quantization and inverse transformation on the quantized transform coefficient or the quantized transform skip coefficient. In-loop filtering may be performed on the reconstructed image to generate a filtered reconstructed image. This filtered and reconstructed image becomes the final output image in the encoding step. The filtered reconstructed image is stored as a reference picture buffer and can be used as a reference picture in another picture.

66 타일을 이용한 비디오 부호화 방법Video encoding method using tiles

파노라믹 비디오나 360도 비디오 내지 4K/8K UHD(Ultra High Definition)과 같은 실감 미디어 어플리케이션에서는 고해상도 영상을 사용한다. 고해상도 영상을 실시간 내지 저지연 부호화를 위해서 병렬화가 필요하다. 타일을 이용하여 픽쳐의 일정 영역을 서로 독립적으로 부호화 및/또는 복호화 할 수 있다.High-resolution images are used in immersive media applications such as panoramic video, 360-degree video or 4K/8K Ultra High Definition (UHD). Parallelization is required for real-time or low-delay encoding of high-resolution images. A certain region of a picture may be encoded and/or decoded independently of each other by using a tile.

타일내에 있는 블록은 다른 타일에 있는 데이터를 참조하거나, 참조 샘플로 사용하여 영상을 부호화/복호화 하지 않도록 설정할 수 있다. 예를 들어, 다른 타일에 있는 데이터를 인트라 예측에서 참조 샘플로 사용하지 않거나, 다른 타일에 있는 데이터를 움직임 벡터 유도를 위한 후보(예컨대, 머지 후보, AMVP 후보 또는 HVMP 후보)로 사용하지 않거나 또는 다른 타일에 있는 데이터를 심볼의 컨텍스트 계산에 사용하지 않도록 설정할 수 있다. A block in a tile can be set not to encode/decode an image by referring to data in another tile or by using it as a reference sample. For example, data in another tile is not used as a reference sample in intra prediction, or data in another tile is not used as a candidate for motion vector derivation (e.g., merge candidate, AMVP candidate, or HVMP candidate), or The data in the tile can be set not to be used for calculating the context of the symbol.

각 타일 단위로 CABAC(Context adaptive Binary Arithmetric Coding) 컨텍스트의 확률 테이블을 초기화 할 수 있다. 타일 바운더리 (이웃한 두 타일의 경계 부분)에서 loop filter를 사용하지 않도록 설정할 수 있다. 또는, 타일 바운더리에서 loop filter 사용 여부를 나타내는 정보가 부호화될 수 있다.A probability table of a context adaptive binary arithmetric coding (CABAC) context may be initialized for each tile unit. You can disable the loop filter at the tile boundary (the boundary between two neighboring tiles). Alternatively, information indicating whether to use a loop filter at the tile boundary may be encoded.

Figure pat00041
Figure pat00041

그림 50Fig. 50

움직임 벡터 유도를 위한 후보(예컨대, 머지 후보, AMVP 후보 또는 HVMP 후보)로 사용하지 않거나 또는 다른 타일에 있는 데이터를 심볼의 컨텍스트 계산에 사용하지 않도록 설정할 수 있다. It may be set not to be used as a candidate for motion vector derivation (eg, a merge candidate, an AMVP candidate, or an HVMP candidate) or not to use data in another tile for calculating the context of a symbol.

각 타일 단위로 CABAC(Context adaptive Binary Arithmetric Coding) 컨텍스트의 확률 테이블을 초기화 할 수 있다. 타일 바운더리 (이웃한 두 타일의 경계 부분)에서 loop filter를 사용하지 않도록 설정할 수 있다. 또는, 타일 바운더리에서 loop filter 사용 여부를 나타내는 정보가 부호화될 수 있다.A probability table of a context adaptive binary arithmetric coding (CABAC) context may be initialized for each tile unit. You can disable the loop filter at the tile boundary (the boundary between two neighboring tiles). Alternatively, information indicating whether to use a loop filter at the tile boundary may be encoded.

Figure pat00042
Figure pat00042

그림 50Fig. 50

픽쳐는 하나 또는 적어도 하나 이상의 슬라이스로 구성될 수 있다. 슬라이스는 raster-scan 슬라이스(raster-scan slice) 또는 같이 사각 형태 슬라이스(rectangular slice)일 수 있다. 래스터 스캔 슬라이스는 래스터 스캔 순서를 따를 때 하나 이상의 연속된 타일(들)의 그룹으로 정의된다. 그림 50의 왼쪽 그림은 래스터 스캔 슬라이스를 나타낸 것이다. 래스터 스캔 슬라이스는 비사각형 형태를 띨 수 있다. 사각 형태 슬라이스는 직사각형 형태를 띄는 타일 그룹으로 정의된다. 그림 50의 오른쪽 그림은 사각 형태 슬라이스를 나타낸 것이다.A picture may be composed of one or at least one or more slices. The slice may be a raster-scan slice or a rectangular slice. A raster scan slice is defined as a group of one or more contiguous tile(s) when following the raster scan order. The left figure in Figure 50 shows a raster scan slice. Raster scan slices can take on a non-rectangular shape. A rectangular slice is defined as a group of tiles having a rectangular shape. The figure on the right of Figure 50 shows a square-shaped slice.

슬라이스의 경계는 픽처 바운더리 및/또는 타일 경계와 일치할 수 있다. 일 예로, 슬라이스의 경계가 좌측 바운더리 및 상측 바운더리가 픽쳐 바운더리에 위치하도록 설정하거나, 슬라이스의 경계가 이미 복호화된 타일의 경계에 위치하도록 설정할 수 있다. The boundary of the slice may coincide with the picture boundary and/or the tile boundary. As an example, the boundary of the slice may be set so that the left boundary and the upper boundary are located at the picture boundary, or the boundary of the slice may be set to be located at the boundary of an already decoded tile.

슬라이스는 하나 또는 복수개의 타일로 구성될 수 있다. A slice may be composed of one or a plurality of tiles.

타일은 직사각형(rectangular) 형태를 가질 수 있다. 또는, 비직사각형 형태의 타일을 허용할 수 있다. 비직사각형 형태의 타일이 존재하는지 여부를 나타내는 정보가 부호화될 수 있다. 타일의 경계는 픽처 바운더리 및/또는 CTU 경계와 일치할 수 있다.The tile may have a rectangular shape. Alternatively, non-rectangular-shaped tiles can be allowed. Information indicating whether a non-rectangular shape tile exists may be encoded. The boundary of the tile may coincide with the picture boundary and/or the CTU boundary.

픽처에 복수의 타일이 존재하는지 여부를 나타내는 정보가 비트스트림을 통해 시그날링될 수 있다. 픽처에 복수의 타일이 존재하는 경우, 그림 51과 같이 좌측 또는 우측으로 인접한 타일들의 높이는 서로 같도록 구성(이하, 가로 방향 타일 세트/tile row)할 수도 있고, 위쪽 또는 아래쪽으로 인접한 타일들의 너비가 같도록 구성(이하, 세로 방향 타일 세트/tile column)할 수도 있다. 이전 타일과 높이가 같은지 여부를 나타내는 정보 또는 이전 타일과 너비가 같은지 여부를 나타내는 정보가 비트스트림을 통해 시그날링될 수 있다.Information indicating whether a plurality of tiles exist in a picture may be signaled through a bitstream. When there are multiple tiles in a picture, as shown in Figure 51, the tiles adjacent to the left or right may have the same height (hereinafter, tile set in the horizontal direction/tile row), or the width of the tiles adjacent to the top or bottom may be It may be configured to be the same (hereinafter, a vertical tile set/tile column). Information indicating whether the previous tile has the same height as the previous tile or information indicating whether the previous tile has the same width as the previous tile may be signaled through the bitstream.

또는, 픽쳐 내에서 픽쳐 바운더리에 인접한 타일들 제외한 모든 타일들이 모두 동일한 크기를 갖도록 제한할 수도 있다. 비트스트림을 통해 타일들의 크기가 균일한지 여부를 나타내는 정보가 비트스트림을 통해 시그날링될 수 있다.Alternatively, all tiles except for tiles adjacent to a picture boundary in a picture may be limited to have the same size. Information indicating whether the sizes of tiles are uniform through the bitstream may be signaled through the bitstream.

Figure pat00043
Figure pat00043

그림 51Fig. 51

표 7 Table 7

Figure pat00044
Figure pat00044

픽쳐 파라미터 세트, 시퀀스 파라미터 세트 또는 슬라이스 헤더를 통해 픽쳐 내 세로 방향 타일 세트의 개수를 나타내는 정보를 시그날링할 수 있다. 일 예로, 상기 정보는 표 7에 나타난 신택스 num_tile_columns_minus1일 수 있다. 그림 51의 예시에서는 세로 방향 타일 세트의 개수는 4이며, 이를 나타내는 신택스 num_tile_columns_minus1 값은 3으로 설정할 수 있다. i번째 세로 방향 타일 세트의 너비를 나타 내는 신택스 column_width_minus1[i]을 시그날링할 수 있다. Information indicating the number of vertical tile sets in a picture may be signaled through a picture parameter set, a sequence parameter set, or a slice header. As an example, the information may be the syntax num_tile_columns_minus1 shown in Table 7. In the example of Figure 51, the number of tile sets in the vertical direction is 4, and a value of the syntax num_tile_columns_minus1 indicating this can be set to 3. The syntax column_width_minus1[i] indicating the width of the i-th vertical tile set may be signaled.

픽쳐 파라미터 세트, 시퀀스 파라미터 세트 또는 슬라이스 헤더를 통해 픽쳐 내 가로 방향 타일 세트의 개수를 나타내는 정보를 시그날링할 수 있다. 몇 개인지를일 예로, 상기 정보는 표 7에 나타난 신택스 num_tile_rows_minus1일 수 있다. 그림 51의 예시에서는 가로 방향 타일 세트의 개수는 3이며, 이를 나타내는 신택스 num_tile_rows_minus1 값은 2으로 설정할 수 있다. i번째 가로 방향 타일 세트의 높이를 나타내는 신택스 row_height_minus1[i] 을 시그날링할 수 있다. Information indicating the number of horizontal tile sets in a picture may be signaled through a picture parameter set, a sequence parameter set, or a slice header. As an example, the information may be the syntax num_tile_rows_minus1 shown in Table 7. In the example of Figure 51, the number of horizontal tile sets is 3, and a value of the syntax num_tile_rows_minus1 representing this may be set to 2. The syntax row_height_minus1[i] indicating the height of the i-th horizontal tile set may be signaled.

픽쳐 파라미터 세트, 시퀀스 파라미터 세트 또는 슬라이스 헤더를 통해 타일들이 동일 크기를 갖는지 여부를 나타내는 정보를 시그날링할 수 있다. 일 예로, 상기 정보는 표 7에 나타난 동일 크기 타일 플래그 uniform_tile_spacing_flag일 수 있다. uniform_tile_spacing_flag 값이 1이면 픽쳐 내에 있는 각 타일의 너비가 균등하게 나누어 져 있으며, 상기 타일들의 높이도 균등하게 나누어져 있음을 나타낸다. Information indicating whether tiles have the same size may be signaled through a picture parameter set, a sequence parameter set, or a slice header. As an example, the information may be the same size tile flag uniform_tile_spacing_flag shown in Table 7. If the uniform_tile_spacing_flag value is 1, this indicates that the widths of each tile in the picture are equally divided, and the heights of the tiles are equally divided.

uniform_tile_spacing_flag 값이 1이면, 타일의 기본 너비를 나타내는 신택스 tile_cols_width_minus1 및 타일의 기본 높이를 나타내는 신택스 tile_rows_height_minus1을 시그날링할 수 있다. 현재 픽처 내 우측/하단 경계에 인접한 타일들 제외한 타일들은 상기 기본 너비 및 상기 기본 높이를 가질 수 있다.If the uniform_tile_spacing_flag value is 1, the syntax tile_cols_width_minus1 indicating the basic width of the tile and the syntax tile_rows_height_minus1 indicating the basic height of the tile may be signaled. Tiles other than tiles adjacent to the right/bottom boundary in the current picture may have the basic width and the basic height.

일 예로, uniform_tile_spacing_flag이 1이면, 픽쳐 바운더리에 인접한 타일 이외의 타일의 너비가 (tile_cols_width_minus1+1)*CtbSizeWidth로 설정되고, 높이가 (tile_rows_hieight_minus1+1)*CtbSizeHeight로 설정될 수 있다. For example, if uniform_tile_spacing_flag is 1, the width of tiles other than tiles adjacent to the picture boundary may be set to (tile_cols_width_minus1+1)*CtbSizeWidth, and the height may be set to (tile_rows_hieight_minus1+1)*CtbSizeHeight.

픽쳐 바운더리에 있는 타일의 높이 (tile_rows_height_minus1+1)*CtbSizeHeight 이하이고, 너비는 (tile_cols_width_minus1+1)*CtbSizeWidth이하일 수 있다. The height of the tile at the picture boundary (tile_rows_height_minus1+1)*CtbSizeHeight or less, and the width may be (tile_cols_width_minus1+1)*CtbSizeWidth or less.

uniform_tile_spacing_flag 값이 0인 경우, 타일의 너비를 나타내는 정보및 타일의 높이를 나타내는 정보를 타일별로 부호화될 수 있다. 일 예로, 타일의 너비를 나타내는 신택스 tile_column_width_minus1[i]와 타일의 높이를 나타내는 신택스 tile_row_height_minus1[i]를 시그날링할 수 있다. When the uniform_tile_spacing_flag value is 0, information indicating a width of a tile and information indicating a height of a tile may be encoded for each tile. As an example, the syntax tile_column_width_minus1[i] indicating the width of the tile and the syntax tile_row_height_minus1[i] indicating the height of the tile may be signaled.

일 예로, tile_column_width_minus1[i]는 i번째 타일의 너비를 나타내고, tile_row_height_minus1[i]는 i번째 타일의 높이를 나타낸다. For example, tile_column_width_minus1[i] represents the width of the i-th tile, and tile_row_height_minus1[i] represents the height of the i-th tile.

Figure pat00045
Figure pat00045

그림 52Fig. 52

타일은 하나 또는 하나 이상의 브릭으로 구성할 수도 있다. 브릭은 병렬 처리의 단위일 수 있다. 브릭들은 서로 독립적으로 부호화/복호화될 수 있다. 브릭 내 블록의 부호화/복호화시 타 브릭의 데이터를 참조 하지 않도록 설정할 수 있다. 예를 들어, 브릭 내 블록을 부호화/복호화함에 있어서 타 브릭에 있는 데이터를 인트라 예측을 위한 참조 샘플로 사용하지 않도록 설정하거나, 타 브릭에 있는 데이터를 움직임 벡터 유도를 위한 후보(예컨대, 머지 후보, AMVP 후보 또는 HVMP 후보)로 사용하지 않도록 설정하거나, 타 브릭에 있는 데이터를 심볼의 컨텍스트 계산에 사용하지 않도록 설정할 수 있다.Tiles can also consist of one or more bricks. Bricks can be units of parallel processing. Bricks can be encoded/decoded independently of each other. When encoding/decoding a block within a brick, it can be set not to refer to data of other bricks. For example, in encoding/decoding a block in a brick, data in the tab is not used as a reference sample for intra prediction, or data in the tab is a candidate for motion vector derivation (e.g., merge candidate, AMVP candidate or HVMP candidate), or data in tabs can be set not to be used for calculating the context of the symbol.

또는, 브릭 간 병렬 처리가 요구되는지 여부를 나타내는 정보가 부호화될 수 있다. 상기 정보에 따라, 브릭에 포함된 블록의 부호화/복호화시 타 브릭에 포함된 데이터의 이용 가능성이 결정될 수 있다.Alternatively, information indicating whether parallel processing between bricks is required may be encoded. According to the information, when encoding/decoding a block included in a brick, the availability of data included in the other brick may be determined.

브릭은 타일을 수평방향 분할함으로써 생성될 수 있다. 그림 52는 최우측열에 위치한 타일들이 복수의 브릭으로 분할된 예를 나타낸다. 의 오른쪽 그림과 같이 raster scan 순서를 따라 타일들을 스캔할 때, 복수 브릭을 포함하는 타일에 대해서는, 타일 내 브릭을 모두 스캔한 후에 다음 타일을 스캔할 수 있다. 또한, 타일 스캔시, 그림 52의 왼쪽 그림과 같이 타일 내 CTB를 raster scan 순서에 따라 스캔한 후에 타일 스캔 순서에 따라 다음 타일 내 CTB를 스캔할 수 있다. 브릭의 경계는 CTU의 경계와 일치할 수 있다. 즉, 하나 이상의 CTU 행을 하나의 브릭으로 정의할 수 있다.Bricks can be created by dividing tiles horizontally. Figure 52 shows an example in which tiles located in the rightmost row are divided into a plurality of bricks. When scanning tiles according to the raster scan sequence as shown in the picture on the right of, for a tile including multiple bricks, the next tile can be scanned after all the bricks in the tile are scanned. In addition, when scanning a tile, as shown on the left of Fig. 52, after scanning the CTB in the tile according to the raster scan order, the CTB in the next tile may be scanned according to the tile scan order. The brick boundary can coincide with the CTU boundary. That is, one or more CTU rows can be defined as one brick.

표 8Table 8

Figure pat00046
Figure pat00046

Figure pat00047
Figure pat00047

타일이 브릭으로 분할되는지 여부를 나타내는 정보, 타일 내 브릭의 개수를 나타내는 정보, 픽처 내 복수 브릭들로 분할되는 타일이 존재하는지 여부를 나타내는 정보 또는 브릭의 크기를 나타내는 정보 중 적어도 하나가 부호화될 수 있다. 일 예로, 표 8과 같이 적어도 하나 이상의 타일이 두개 이상의 브릭으로 나눌수 있음을 나타내는 플래그 brick_spliitng_present_flag을 비트스트림을 통해 시그날링할 수 있다. At least one of information indicating whether a tile is divided into bricks, information indicating the number of bricks in a tile, information indicating whether a tile divided into multiple bricks in a picture exists, or information indicating the size of a brick may be encoded. have. For example, as shown in Table 8, a flag brick_spliitng_present_flag indicating that at least one tile can be divided into two or more bricks may be signaled through a bitstream.

brick_splitting_present_flag 값이 1이면, 적어도 하나 이상의 타일이 두개 이상의 브릭으로 분할됨을 나타내고, brick_splitting_present_flag 값이 0이면, 픽쳐 내 또는 PPS를 참조하는 픽쳐들에서 두개 이상의 브릭으로 분할 되는 타일이 존재하지 않음을 나타낸다. If the brick_splitting_present_flag value is 1, it indicates that at least one tile is divided into two or more bricks, and if the brick_splitting_present_flag value is 0, it indicates that there is no tile divided into two or more bricks in a picture or in pictures referencing PPS.

표 8과 같이 타일 아이디가 i인 타일이 두개 이상의 브릭으로 나눌수 있는지를 나타내는 플래그 brick_split_flag[i]를 비트스트림을 통해 시그날링할 수 있다. As shown in Table 8, a flag brick_split_flag[i] indicating whether a tile with a tile ID of i can be divided into two or more bricks can be signaled through a bitstream.

brick_split_flag[i] 값이 1이면, 타일 아이디가 i인 타일이 두개 이상의 브릭으로 분할 됨을 나타내고, brick_split_flag[i] 값이 0이면, 타일 아이디가 i인 타일이 두개 이상의 브릭으로 분할 되지 않음을 나타낸다. If the value of brick_split_flag[i] is 1, it indicates that the tile with tile ID i is divided into two or more bricks, and if the value of brick_split_flag[i] is 0, it indicates that the tile with tile ID i is not divided into two or more bricks.

표 8과 같이 타일 아이디가 i인 타일에 대한 brick_split_flag[i]가 1이면(즉, 두 개 이상의 브릭으로 나누어지는 타일인 경우), 타일 내 각 브릭들이 균등하게 분할되는지 여부를 나타내는 신택스 uniform_brick_spacing_flag가 통해 시그날링 할 수 있다. 상기 신택스 uniform_brick_spacing_flag는 타일내 브릭들의 높이가 균등한지 여부를 나타낸다. As shown in Table 8, if brick_split_flag[i] for a tile with a tile ID of i is 1 (i.e., a tile divided into two or more bricks), the syntax uniform_brick_spacing_flag indicating whether each brick in the tile is divided equally is used. You can signal. The syntax uniform_brick_spacing_flag indicates whether the heights of bricks in the tile are uniform.

uniform_brick_spacing_flag 값이 1이면 타일 내 브릭의 높이가 균등하게 나누어 져 있음을 나타낸다. If the uniform_brick_spacing_flag value is 1, it indicates that the heights of bricks in the tile are evenly divided.

uniform_brick_spacing_flag 값이 1이면, 브릭의 기본 높이를 나타내는 신택스 brick_height_minus1을 시그날링할 수 있다. 타일 내 브릭들은 기본 높이를 가질 수 있다. If the uniform_brick_spacing_flag value is 1, the syntax brick_height_minus1 indicating the basic height of the brick may be signaled. Bricks in a tile can have a default height.

uniform_brick_spacing_flag이 1이면, 픽쳐 바운더리에 인접하는 브릭을 제외하고, 타일을 높이가 (brick_height_minus1+1)*CtbSizeHeight인 브릭들로 분할할 수 있다. If uniform_brick_spacing_flag is 1, excluding bricks adjacent to the picture boundary, the tile may be divided into bricks having a height of (brick_height_minus1+1)*CtbSizeHeight.

uniform_brick_spacing_flag 값이 0이면, i번째 타일 내 브릭의 개수를 나타내는 신택스 num_brick_rows_minusu1[i]과 i번째 타일 내 j번째 브릭의 높이를 나타내는 신택스 brick_row_height_minus1[i][j]를 시그날링할 수 있다.If the uniform_brick_spacing_flag value is 0, the syntax num_brick_rows_minusu1[i] indicating the number of bricks in the i-th tile and the syntax brick_row_height_minus1[i][j] indicating the height of the j-th brick in the i-th tile may be signaled.

신택스 brick_row_height_minus1[i]는 브릭의 개수 또는 브릭의 개수보다1을 차감한 수 만큼 시그날링할 수 있다. 일 예로, 타일 내 마지막 브릭은 타일의 높이에서 이전 브릭들의 높이값을 모두 더한 값을 차분하여 유도할 수 있다.The syntax brick_row_height_minus1[i] can signal as many as the number of bricks or the number of bricks less 1. For example, the last brick in the tile may be derived by dividing a value obtained by adding all the height values of the previous bricks from the height of the tile.

타일 및 브릭은 브릭 인덱스에 의해 식별될 수 있다. 브릭들로 포함되지 않는 타일은 하나의 브릭인 것으로 간주하여 브릭 인덱스가 할당될 수 있다. 일 예로, 래스터 스캔 순서에 따라, 타일 및 브릭에 브릭 인덱스가 할당될 수 있다.Tiles and bricks can be identified by brick index. A tile that is not included as bricks is considered to be one brick and may be assigned a brick index. For example, brick indexes may be allocated to tiles and bricks according to the raster scan order.

브릭의 높이를 나타내는 신택스 brick_height_minus1[ i ]+1 또는brick_row_hegiht_minus1+1은 브릭 인덱스 i를 포함하는 타일의 높이 (타일 내에 있는 세로 방향 CTB의 개수, 이하, rowHeight)보다 작게 설정할 수 있다. The syntax brick_height_minus1[i]+1 or brick_row_hegiht_minus1+1 indicating the height of the brick may be set smaller than the height of the tile including the brick index i (the number of vertical CTBs in the tile, hereinafter, rowHeight).

구체적으로 예를 들어, brick_height_minus1[i] 내지 brick_row_height_minus1은 0 내지 rowHeight-2 사이의 값을 가지도록 설정할 수 있다. Specifically, for example, brick_height_minus1[i] to brick_row_height_minus1 may be set to have a value between 0 and rowHeight-2.

표 8과 같이 각 슬라이스가 하나의 브릭으로 구성되었는지를 나타내는 플래그 single_brick_per_slice_flag를 비트스트림을 통해 시그날링할 수 있다.As shown in Table 8, a flag single_brick_per_slice_flag indicating whether each slice is composed of one brick may be signaled through a bitstream.

single_brick_per_slice_flag이 1이면, PPS를 참조하는 각 슬라이스가 모두 하나의 브릭으로 구성되어있음을 나타내고, single_brick_per_slice_flag이 0이면, PPS를 참조하는 각 슬라이스 중 적어도 하나는 두 개 이상의 브릭으로 구성되어 있음을 나타낸다. If single_brick_per_slice_flag is 1, it indicates that each slice referring to the PPS is composed of one brick, and if single_brick_per_slice_flag is 0, it indicates that at least one of each slice referring to the PPS is composed of two or more bricks.

슬라이스 타입을 나타내는 정보가 비트스트림을 통해 시그날링될 수 있다.상기 정보는 슬라이스가 래스터 스캔 타입인지 또는 사각 형태 타입인지 여부를 나타낸다. 일 예로, 표 8과 같이 사각 형태 슬라이스(rectangular slice)를 사용하는지를 나타내는 신택스 rect_slice_flag을 비트스트림을 통해 시그날링할 수도 있다. Information indicating the slice type may be signaled through a bitstream. The information indicates whether the slice is a raster scan type or a rectangular shape type. For example, as shown in Table 8, a syntax rect_slice_flag indicating whether a rectangular slice is used may be signaled through a bitstream.

rect_slice_flag이 1이면, rectangular slice를 사용함을 나타내고,rect_slice_flag이 0이면, raster-scan slice를 사용함을 나타낸다.If rect_slice_flag is 1, it indicates that a rectangular slice is used, and if rect_slice_flag is 0, it indicates that a raster-scan slice is used.

Figure pat00048
Figure pat00048

그림 53Fig. 53

rectangular slice를 사용하는 경우, 브릭 인덱스를 이용하여 슬라이스 영역을 정의할 수 있다. 구체적으로, 슬라이스 내 첫번째 브릭과 슬라이스 내 마지막 브릭을 특정하기 위한 정보를 결정할 수 있다. 여기서, 브릭의 순서는 스캔 순서에 의해 결정된다. 일 예로, 래스터 스캔을 따를 경우, 슬라이스 내 첫번째 브릭은 좌상단 브릭을 나타내고, 마지막 브릭은 우하단 브릭을 나타낸다.When using a rectangular slice, a slice area can be defined using a brick index. Specifically, information for specifying the first brick in the slice and the last brick in the slice may be determined. Here, the order of the bricks is determined by the scan order. For example, when following a raster scan, the first brick in the slice represents the upper left brick, and the last brick represents the lower right brick.

그림 53과 같이 i번 째 슬라이스의 좌상단 브릭의 브릭 인덱스를 나타내는 신택스 top_left_brick_idx를 비트스트림을 통해 시그날링할 수 있다. As shown in Figure 53, the syntax top_left_brick_idx indicating the brick index of the upper left brick of the i-th slice can be signaled through the bitstream.

rectangular slice를 사용하면, 그림 53과 같이 i번 째 슬라이스의 우하단 브릭의 브릭 인덱스를 나타내는 신택스 bottom_right_brick_idx_delta를 비트스트림을 통해 시그날링할 수 있다. i번 째 슬라이스의 우하단 브릭의 브릭 인덱스 bottom_right_brick_idx(i)는 식 (26)과 같이 bottom_right_brick_idx_delta[i]에 top_left_brick_idx[i]를 합산하여 유도할 수 있다. If a rectangular slice is used, the syntax bottom_right_brick_idx_delta indicating the brick index of the lower-right brick of the i-th slice can be signaled through the bitstream as shown in Figure 53. The brick index bottom_right_brick_idx(i) of the lower-right brick of the i-th slice can be derived by summing top_left_brick_idx[i] to bottom_right_brick_idx_delta[i] as shown in Equation (26).

bottom_right_brick_idx[i] = top_left_brick_idx[i] +bottom_right_brick_idx_delta[i] bottom_right_brick_idx[i] = top_left_brick_idx[i] +bottom_right_brick_idx_delta[i] (26)(26)

또는, 마지막 브릭의 브릭 인덱스를 나타내는 신택스 bottom_right_brick_idx를 비트스트림을 통해 시그날링할 수 있다.Alternatively, the syntax bottom_right_brick_idx indicating the brick index of the last brick may be signaled through a bitstream.

또는, 첫번째 브릭과 첫번째 브릭과 동일한 행에 포함된 최우측 브릭의 브릭 인덱스 차분을 나타내는 수평 인덱스 차분 정보, 또는 첫번째 브릭과 첫번째 브릭과 동일한 열에 포함된 최하단 브릭의 브릭 인덱스 차분을 나타내는 수직 인덱스 차분 정보 중 적어도 하나를 부호화할 수 있다. 일 예로, 픽처의 우측 경계 또는 하단 경계에 인접하는 슬라이스에서는, 상기 수평 인덱스 차분 정보 또는 수직 인덱스 차분 정보를 이용하여 슬라이스를 정의할 수 있다.Alternatively, horizontal index difference information indicating the difference in the brick index of the rightmost brick included in the same row as the first brick and the first brick, or vertical index difference information indicating the difference in the brick index of the lowest brick included in the same column as the first brick and the first brick. At least one of them may be encoded. For example, in a slice adjacent to a right boundary or a lower boundary of a picture, a slice may be defined using the horizontal index difference information or the vertical index difference information.

loop_filter_across_bricks_enabled_flag은 브릭 바운더리(이웃한 두 타일 내지 브릭의 경계 부분)에서 loop filter를 사용하지 않도록 설정하는지를 나타내는 플래그 이다. loop_filter_across_bricks_enabled_flag is a flag indicating whether to disable the loop filter in the brick boundary (two neighboring tiles or the boundary of a brick).

표 9 Table 9

Figure pat00049
Figure pat00049

Figure pat00050
Figure pat00050

brick_split_flag[i] 값이 1이면, 타일 아이디가 i인 타일이 두개 이상의 브릭으로 분할 됨을 나타낸다. 이에 따라, 타일 아이디가 i인 타일의 brick_split_flag가 1이면, 타일은 최소 2개의 브릭을 포함할 수 있다.If the value of brick_split_flag[i] is 1, it indicates that the tile with tile ID i is divided into two or more bricks. Accordingly, if the brick_split_flag of the tile whose tile ID is i is 1, the tile may include at least two bricks.

uniform_brick_spacing_flag 값이 0(uniform_brick_spacing_flag은 brick_split_flag 값이 1인 경우에 시그날링) 인 경우표 9와 같이 i번째 타일 내 브릭의 개수를 나타내는 신택스 num_brick_row_minus2[i]를 비트스트림을 통해 시그날링할 수 있다. When the uniform_brick_spacing_flag value is 0 (uniform_brick_spacing_flag is signaled when the brick_split_flag value is 1), as shown in Table 9, the syntax num_brick_row_minus2[i] indicating the number of bricks in the i-th tile may be signaled through a bitstream.

i번째 타일 내 브릭의 개수는 num_brick_row_minus2[i]+2로 설정할 수 있으며, num_brick_row_minus2[i]은 0 내지 rowHeight-2로 설정할 수 있다. The number of bricks in the i-th tile may be set to num_brick_row_minus2[i]+2, and num_brick_row_minus2[i] may be set to 0 to rowHeight-2.

표 10Table 10

Figure pat00051
Figure pat00051

Figure pat00052
Figure pat00052

또는 표 10과 같이 i번 째 슬라이스의 좌상단 브릭의 브릭 인덱스를 나타내는 신택스 top_left_brick_idx_minus1[i]를 비트스트림을 통해 시그날링할 수 있다. Alternatively, as shown in Table 10, the syntax top_left_brick_idx_minus1[i] indicating the brick index of the upper left brick of the i-th slice may be signaled through the bitstream .

i번째 슬라이스(i가 0이 아닌 경우)에서는 좌상단 브릭의 브릭 인덱스가 항상 0 보다 큰 값을 갖는다. 이 경우 슬라이스의 좌상단 브릭의 브릭 인덱스에서 1을 차분한 값을 나타내는 신택스 top_left_brick_idx_minus1[i]를 비트스트림을 통해 시그날링할 수 있다. 이 때, 신택스 top_left_brick_idx_minus1[i]의 비트수는 Ceil(Log2(NumBricksInPic-1))로 설정할 수 있다. In the i slice (if i is not 0) The brick index of the upper left brick always has a value greater than 0. In this case, the syntax top_left_brick_idx_minus1[i] representing a value obtained by subtracting 1 from the brick index of the upper left brick of the slice may be signaled through the bitstream. In this case, the number of bits of the syntax top_left_brick_idx_minus1[i] may be set to Ceil (Log2(NumBricksInPic-1)).

NumBricksInPic는 픽쳐내 브릭의 수를 나타내며, 여기서 Ceil(a)는 a보다 크거나 같은 가장 작은 정수를 나타낸다. NumBricksInPic represents the number of bricks in a picture, where Ceil(a) represents the smallest integer greater than or equal to a.

i번째 슬라이스에서 슬라이스의 좌상단 브릭 인덱스는 top_left_brick_idx_minus1[i]+1 로 설정할 수도 있다. In the i-th slice, the upper left brick index of the slice may be set to top_left_brick_idx_minus1[i]+1.

다음과 같은 프로세스를 이용하여 각 브릭 별 슬라이스 아이디를 설정할 수 있다. BricksToSliceMap[ j ]는 브릭 인덱스 j의 슬라이스 아이디를 나타낸다.You can set the slice ID for each brick using the following process. BricksToSliceMap[ j] represents the slice ID of brick index j.

Figure pat00053
Figure pat00053

표 11Table 11

Figure pat00054
Figure pat00054

Figure pat00055
Figure pat00055

슬라이스의 address는 슬라이스 인덱스가 커질 수록 증가하기 때문에 이전 슬라이스의 좌상단 브릭의 브릭 인덱스보다 현재 슬라이스의 좌상단 브릭의 브릭 인덱스가 항상 큰 값일 수 있다. 이에 따라, 현재 슬라이스의 좌상단 브릭의 브릭 인덱스에서 이전 슬라이스의 좌상단 브릭의 브릭 인덱스를 차분 한 값은 항상 0보다 큰 값이 될 수 있다. Since the address of a slice increases as the slice index increases, the brick index of the upper left brick of the current slice may always be larger than the brick index of the upper left brick of the previous slice. Accordingly, a value obtained by differentiating the brick index of the upper left brick of the current slice from the brick index of the upper left brick of the previous slice may always be a value greater than 0.

rectangular slice를 사용하는 경우, 이전 슬라이스의 첫번째 브릭과 현재 슬라이스의 첫번째 브릭의 인덱스 값 차분값을 이용하여, 현재 슬라이스 내 첫번째 브릭을 특정할 수 있다. 일 예로, 표 11과 같이 i번 째 슬라이스의 좌상단 브릭의 브릭 인덱스를 특정하기 위한 신택스 top_left_brick_idx_delta[i]를 비트스트림을 통해 시그날링할 수 있다. When using a rectangular slice, the first brick in the current slice can be specified by using the difference between the index value of the first brick of the previous slice and the first brick of the current slice. For example, as shown in Table 11, the syntax top_left_brick_idx_delta[i] for specifying the brick index of the upper left brick of the i-th slice may be signaled through the bitstream.

i번째 슬라이스의 좌상단 브릭의 브릭 인덱스 top_left_brick_idx(i)는 식 (27)과 같이 top_left_brick_idx_delta[i]에 i-1 번째 슬라이스의 TopLeftBrickIdx(i-1)을 합산하여 유도할 수 있다. 신택스 top_left_brick_idx_delta[i]의 최대 비트수는 Ceil(Log2( NumBricksInPic-TopLeftBrickIdx(i-1)))일 수 있다. 여기서 Ceil(a)는 a보다 크거나 같은 가장 작은 정수를 나타낸다. The brick index top_left_brick_idx(i) of the upper left brick of the i-th slice can be derived by summing TopLeftBrickIdx(i-1) of the i-1 th slice to top_left_brick_idx_delta[i] as shown in Equation (27). The maximum number of bits of the syntax top_left_brick_idx_delta[i] may be Ceil (Log2 (NumBricksInPic-TopLeftBrickIdx(i-1))). Here, Ceil(a) represents the smallest integer greater than or equal to a.

TopLeftBrickIdx(i) = TopLeftBrickIdx(i-1) +top_left_brick_idx_delta[i]TopLeftBrickIdx(i) = TopLeftBrickIdx(i-1) +top_left_brick_idx_delta[i] (27)(27)

첫번째 슬라이스(즉, i가 0인 슬라이스)의 TopLeftBrickIdx(0) 값은 0으로 설정할 수 있다. 두번째 슬라이스(즉, i가 1인 슬라이스)에서는 top_left_brick_idx_delta[i] 대신 top_left_brick_idx[i]를 부호화할 수도 있다.The value of TopLeftBrickIdx(0) of the first slice (ie, a slice in which i is 0) may be set to 0. In the second slice (ie, a slice in which i is 1), top_left_brick_idx[i] may be encoded instead of top_left_brick_idx_delta[i].

i번 째 슬라이스의 우하단 브릭의 브릭 인덱스 botRightBkIdx(i)는 식 (28)과 같이 bottom_right_brick_idx_delta[i]에 i번 째 슬라이스의 좌하단 블릭의 브릭 인덱스 TopLeftBrickIdx(i)를 합산하여 유도할 수 있다. The brick index botRightBkIdx(i) of the lower-right brick of the i-th slice can be derived by summing the brick index TopLeftBrickIdx(i) of the lower-left brick of the i-th slice to bottom_right_brick_idx_delta[i] as shown in Equation (28).

botRightBkIdx(i) = TopLeftBrickIdx(i) + bottom_right_brick_idx_delta[i]botRightBkIdx(i) = TopLeftBrickIdx(i) + bottom_right_brick_idx_delta[i] (28)(28)

다음과 같은 프로세스를 이용하여 각 브릭 별 슬라이스 아이디를 설정할 수 있다. BricksToSliceMap[ j ]는 브릭 인덱스 j의 슬라이스 아이디를 나타낸다. You can set the slice ID for each brick using the following process. BricksToSliceMap[ j] represents the slice ID of brick index j.

Figure pat00056
Figure pat00056

표 12Table 12

Figure pat00057
Figure pat00057

Figure pat00058
Figure pat00058

또는, rectangular slice를 사용하는 경우, 이전 슬라이스의 첫번째 브릭과 현재 슬라이스의 첫번째 브릭의 인덱스 값 차분값에 1을 차분한 값을 이용하여, 현재 슬라이스 내 첫번째 브릭을 특정할 수 있다. 일 예로, 표 12와 같이 i번 째 슬라이스의 좌상단 브릭의 브릭 인덱스를 특정하기 위한 신택스 top_left_brick_idx_delta_minus1[i]를 비트스트림을 통해 시그날링할 수 있다. Alternatively, in the case of using a rectangular slice, the first brick in the current slice may be specified by using a value obtained by subtracting 1 from the index value difference between the first brick of the previous slice and the first brick of the current slice. For example, as shown in Table 12, the syntax top_left_brick_idx_delta_minus1[i] for specifying the brick index of the upper left brick of the i-th slice may be signaled through a bitstream.

i번째 슬라이스의 좌상단 브릭의 브릭 인덱스 top_left_brick_idx(i)는 식 (29)와 같이 (top_left_brick_idx_delta_minus1[i]+1)에 i-1 번째 슬라이스의 TopLeftBrickIdx(i-1)을 합산하여 유도할 수 있다. 신택스 top_left_brick_idx_delta_minus1[i]의 최대 비트수는 Ceil( Log2( NumBricksInPic - TopLeftBrickIdx( i-1) -1) ) 일 수 있다. 여기서 Ceil(a)는 a보다 크거나 같은 가장 작은 정수를 나타낸다. The brick index top_left_brick_idx(i) of the upper left brick of the i-th slice can be derived by summing TopLeftBrickIdx(i-1) of the i-1 th slice to (top_left_brick_idx_delta_minus1[i]+1) as shown in Equation (29). The maximum number of bits of the syntax top_left_brick_idx_delta_minus1[i] may be Ceil (Log2(NumBricksInPic-TopLeftBrickIdx(i-1) -1) ). Here, Ceil(a) represents the smallest integer greater than or equal to a.

TopLeftBrickIdx(i) = TopLeftBrickIdx(i-1) +top_left_brick_idx_delta_minus1[i]+1TopLeftBrickIdx(i) = TopLeftBrickIdx(i-1) +top_left_brick_idx_delta_minus1[i]+1 (29)(29)

첫번째 슬라이스(즉, i가 0인 슬라이스)의 TopLeftBrickIdx(0) 값은 0으로 설정할 수 있다. 두번째 슬라이스(즉, i가 1인 슬라이스)에서는 top_left_brick_idx_delta_minus1[i] 대신 top_left_brick_idx_minus1[i]를 부호화할 수도 있다.The value of TopLeftBrickIdx(0) of the first slice (ie, a slice in which i is 0) may be set to 0. In the second slice (ie, a slice in which i is 1), top_left_brick_idx_minus1[i] may be encoded instead of top_left_brick_idx_delta_minus1[i].

다음과 같은 프로세스를 이용하여 각 브릭 별 슬라이스 아이디를 설정할 수 있다. BricksToSliceMap[ j ]는 브릭 인덱스 j의 슬라이스 아이디를 나타낸다. You can set the slice ID for each brick using the following process. BricksToSliceMap[ j] represents the slice ID of brick index j.

Figure pat00059
Figure pat00059

Figure pat00060
Figure pat00060

그림 54Fig. 54

그림 54와 같이 관심 영역(Viewport)에 따라 서로 다른 크기의 tile 파티셔닝을 생성할 수 있으며, 이를 viewport adaptive partitioning structure라고 한다. As shown in Figure 54, tile partitioning of different sizes can be created according to the viewport, and this is called a viewport adaptive partitioning structure.

일 예로, 그림 54의 viewport adaptive partitioning structure는 다음 그림 55와 같은 슬라이스, 타일 및 브릭으로 분할 될 수도 있다. For example, the viewport adaptive partitioning structure in Figure 54 may be divided into slices, tiles, and bricks as shown in Figure 55 below.

Figure pat00061
Figure pat00061

그림 55Fig. 55

그림 55와 같이 360 video를 렌더링 또는 부호화, 복호화할때, 세로 방향 타일 세트(tile column) 중 특정 세로 방향 타일 세트에서만 브릭을 사용하는 파티셔닝 구조가 널리 사용될 수 있다. 이에 따라, 세로 방향 타일 세트(tile column) 단위로 브릭을 사용할 지 여부를 나타내는 정보를 사용하여 픽쳐 파라미터 세트의 비트를 줄일 수 있다. As shown in Figure 55, when rendering, encoding, or decoding a 360 video, a partitioning structure that uses bricks only in a specific vertical tile set among vertical tile columns can be widely used. Accordingly, bits of the picture parameter set can be reduced by using information indicating whether to use a brick in units of a tile column in the vertical direction.

표 13Table 13

Figure pat00062
Figure pat00062

Figure pat00063
Figure pat00063

일 예로, 상기 정보는 표 13과 같이 j번째 세로 방향 타일 세트(tile column)에 속한 타일 중 적어도 하나가 복수개의 brick으로 구성되었는지를 나타내는 플래그 brick_column_split_present_flag[ j ]일 수 있다. j는 세로 방향 타일의 개수를 나타내는 정보 num_tile_columns_minus1 보다 작거나 같은 값을 가질 수 있다. For example, as shown in Table 13, the information may be a flag brick_column_split_present_flag[j] indicating whether at least one tile belonging to a j-th vertical tile column is composed of a plurality of bricks. j may have a value less than or equal to information num_tile_columns_minus1 indicating the number of vertical tiles.

brick_column_split_present_flag[j]가 0이면, j번째 세로 방향 타일 세트 내에서는 어떠한 타일도 복수개의 brick으로 구성되지 않았음을 나타내고, brick_column_split_present_flag[j]가 1이면, j번째 세로 방향 타일 세트 내에서는 적어도 하나의 타일이 복수개의 brick으로 구성되었음을 나타낸다. If brick_column_split_present_flag[j] is 0, it indicates that no tile is composed of a plurality of bricks in the j-th vertical tile set, and if brick_column_split_present_flag[j] is 1, at least one tile in the j-th vertical tile set This indicates that it is composed of a plurality of bricks.

구체적으로 예를 들어, 그림 56과 같이 3번째 세로 방향 타일 세트 (3rd tile column)에서만 브릭을 사용하는 경우 brick_column_split_present_flag[3]을 1로 설정할 수 있다. Specifically, as shown in Figure 56, when bricks are used only in the 3rd tile column, brick_column_split_present_flag[3] can be set to 1.

Figure pat00064
Figure pat00064

그림 56Fig. 56

타일들이 균등 분할되는지 여부와 관계없이, 세로방향 타일 세트 단위로 브릭을 사용할지 여부를 나타내는 정보가 부호화될 수 있다. 또는, 타일들이 균등 분할되지 않는 것으로 결정되는 경우에만, 세로 방향 타일 세트 단위로 브릭을 사용할 지 여부를 나타내는 정보가 부호화될 수 있다.Regardless of whether tiles are equally divided, information indicating whether to use a brick in units of a vertical tile set may be encoded. Alternatively, only when it is determined that tiles are not divided equally, information indicating whether to use a brick in units of a vertical tile set may be encoded.

또는, 세로 방향 타일 세트 중 너비가 가장 작은 타일 세트에 대해서만 세로 방향 타일 세트 단위로 브릭을 사용할지 여부를 나타내는 정보가 부호화될 수 있다.Alternatively, information indicating whether to use a brick in units of a vertical tile set may be encoded only for a tile set having the smallest width among the vertical tile sets.

또는, 세로 방향 타일 세트 중 너비 또는 높이가 기 설정된 값 이하인 타일 세트에 대해서만 세로 방향 타일 세트 단위로 브릭을 사용할지 여부를 나타내는 정보가 부호화될 수 있다.Alternatively, information indicating whether to use a brick in units of a vertical tile set may be encoded only for a tile set whose width or height is less than or equal to a preset value among the vertical tile sets.

또는, 세로 방향 타일 세트 중 특정 위치의 타일 세트에 대해서만 세로 방향 타일 세트 단위로 브릭을 사용할지 여부를 나타내는 정보가 부호화될 수 있다. 일 예로, 상기 특징 위치는, 픽쳐의 우측 경계에 인접하는 것일 수 있다.Alternatively, information indicating whether to use a brick in units of a vertical tile set may be encoded for only a tile set at a specific position among the vertical tile set. For example, the feature position may be adjacent to a right boundary of the picture.

세로 방향 타일 세트에 포함된 타일들의 분할에 공통의 규칙이 적용되는 경우, 상기 공통의 규칙을 결정하기 위한 정보가 부호화될 수 있다. 공통의 규칙은, 브릭의 개수 또는 브릭의 높이를 나타낼 수 있다. 일 예로, 상기 정보가 세로 방향 타일 세트들이 2개의 브릭으로 분할됨을 나타내는 경우, 세로 방향 타일 세트에 포함된 모든 타일들이 2개의 브릭으로 분할될 수 있다. 또는, 상기 정보가 브릭의 높이가 brick_height임을 나타내는 경우, 세로 방향 타일 세트에 포함된 모든 타일들이 높이가 brick_height인 브릭들로 분할될 수 있다. 이때, 높이가 brick_row_height과 같거나 작은 타일은 더 이상 분할되지 않을 수 있다.When a common rule is applied to the division of tiles included in the vertical tile set, information for determining the common rule may be encoded. A common rule can indicate the number of bricks or the height of the bricks. For example, when the information indicates that the vertical direction tile sets are divided into two bricks, all tiles included in the vertical direction tile set may be divided into two bricks. Alternatively, when the information indicates that the height of the brick is brick_height, all tiles included in the vertical tile set may be divided into bricks having a height of brick_height. At this time, a tile whose height is equal to or smaller than brick_row_height may not be divided any more.

세로 방향 타일 세트 단위로 브릭을 사용할 것인지 여부를 나타내는 정보 대신, 가로 방향 타일 세트 단위로 브릭을 사용할 것인지 여부를 나타내는 정보를 부호화할 수도 있다.Instead of information indicating whether to use a brick in units of a vertical tile set, information indicating whether to use a brick in units of a horizontal tile set may be encoded.

일 예로, j번째 가로 방향 타일 세트(tile row)에 속한 타일 중 적어도 하나가 복수개의 brick으로 구성되었는지를 나타내는 플래그 brick_row_split_present_flag[ j ]를 부호화할 수 있다. j는 가로 방향 타일의 개수를 나타내는 정보 num_tile_rows_minus1 보다 작은 값을 가질 수 있다. As an example, a flag brick_row_split_present_flag[j] indicating whether at least one of tiles belonging to a j-th horizontal tile row is composed of a plurality of bricks may be encoded. j may have a value smaller than information num_tile_rows_minus1 indicating the number of horizontal tiles.

표 14Table 14

Figure pat00065
Figure pat00065

Figure pat00066
Figure pat00066

맨 마지막 세로 방향 타일 세트에서, 이전 세로 방향 타일 세트의 brick_column_split_present_flag 값이 모두 0인 경우, 표 14와 같이 맨 마지막 세로 방향 타일 세트의 brick_cloumn_split_presnt_flag[num_tile_columns_minus1+1] 값은 시그날링하지 않고, 인코더 및 디코더에서 그 값을 1로 유도할 수 있다. In the last vertical tile set, if the values of brick_column_split_present_flag of the previous vertical tile set are all 0, the value of brick_cloumn_split_presnt_flag[num_tile_columns_minus1+1] of the last vertical tile set is not signaled and is not signaled by the encoder and decoder, as shown in Table 14. You can derive that value to 1.

표 15Table 15

Figure pat00067
Figure pat00067

Figure pat00068
Figure pat00068

single_brick_per_slice_flag 값이 1이면, PPS를 참조하는 각 슬라이스가 하나의 브릭으로 구성됨을 나타낸다. 즉, single_brick_per_slice_flag 값이 1이면, 복수 개의 브릭으로 구성되지 않음을 나타낸다. If the single_brick_per_slice_flag value is 1, it indicates that each slice referring to the PPS is composed of one brick. That is, if the value of single_brick_per_slice_flag is 1, it indicates that a plurality of bricks are not formed.

따라서, 표 15와 같이 single_brick_per_slice_flag 값이 1이면, 복수 개의 브릭을 갖는지 나타내는 플래그 brick_splitting_present_flag을 비트스트림을 통해 시그날링하지 않을 수 있다. 이 때 brick_splitting_present_flag 값은 0으로 설정할 수 있다. Accordingly, as shown in Table 15, if the single_brick_per_slice_flag value is 1, the flag brick_splitting_present_flag indicating whether to have a plurality of bricks may not be signaled through the bitstream. At this time, the brick_splitting_present_flag value may be set to 0.

표 16Table 16

Figure pat00069
Figure pat00069

Figure pat00070
Figure pat00070

픽쳐내 슬라이스의 개수가 1인지를 나타내는 신택스 one_slice_in_pic_flag 을 시그날링할 수 있다. one_slice_in_pic_flag 값이 1이면, 픽쳐 내 슬라이스의 개수가 1임을 나타내고, one_slice_in_pic_flag 값이 0이면, 픽쳐 내 슬라이스의 개수가 2이상임을 나타낸다. one_slice_in_pic_flag의 값이 0이면, 픽처 내 슬라이스 개수를 나타내는 정보를 추가 시그날링할 수 있다.A syntax one_slice_in_pic_flag indicating whether the number of slices in a picture is 1 may be signaled. If the one_slice_in_pic_flag value is 1, it indicates that the number of slices in the picture is 1, and if the one_slice_in_pic_flag value is 0, it indicates that the number of slices in the picture is 2 or more. If the value of one_slice_in_pic_flag is 0, information indicating the number of slices in the picture may be additionally signaled.

표 16과 같이 one_slice_in_pic_flag 값이 1이면, 슬라이스의 좌상단 및 우하단 브릭 아이디를 나타내는 신택스 top_left_brick_idx 및/또는 bottom_right_brick_idx_delta를 시그날링 하지 않을 수 있다. As shown in Table 16, if the value of one_slice_in_pic_flag is 1, the syntax top_left_brick_idx and/or bottom_right_brick_idx_delta indicating the upper left and lower right brick IDs of the slice may not be signaled.

표 17Table 17

Figure pat00071
Figure pat00071

Figure pat00072
Figure pat00072

또는, 표 17과 같이 one_slice_in_pic_flag의 값에 따라, single_brick_per_slice_flag, rect_slice_flag의 시그날링 여부가 결정될 수 있다. 일 예로, one_slice_in_pic_flag의 값이 1인 경우, single_brick_per_slice_flag 및 rect_slice_flag는 시그날링되지 않을 수 있다.Alternatively, as shown in Table 17, whether to signal single_brick_per_slice_flag or rect_slice_flag may be determined according to the value of one_slice_in_pic_flag. For example, when the value of one_slice_in_pic_flag is 1, single_brick_per_slice_flag and rect_slice_flag may not be signaled.

num_slices_in_pic_minus2는 픽처 내 슬라이스의 개수를 나타낸다. 상기 num_slices_in_pic_minus2가 나타내는 값에 2를 더하여 픽처 내 슬라이스의 개수를 결정할 수 있다.num_slices_in_pic_minus2 represents the number of slices in a picture. The number of slices in a picture may be determined by adding 2 to the value indicated by num_slices_in_pic_minus2.

또는, 픽처 내 브릭의 전체 개수와 슬라이스 개수 사이의 차분값을 나타내는 정보를 부호화할 수 있다. 픽처 내 브릭의 전체 개수는 타일 행의 개수, 타일 열의 개수 및 각 타일에 대한 브릭 행의 개수를 기초로 유도될 수 있다. 일 예로, 브릭의 전체 개수는 (타일 행의 개수*타일 열의 개수)+(모든 타일들의 num_brick_rows_minus1의 합)으로 유도될 수 있다. 슬라이스는 적어도 하나의 브릭을 포함하므로, 슬라이스의 개수는 브릭의 개수와 같거나 작다. 이에 따라, 브릭의 전체 개수에서 슬라이스 개수를 차분한 값을 비트스트림을 통해 시그날링할 수 있다.Alternatively, information indicating a difference value between the total number of bricks and the number of slices in the picture may be encoded. The total number of bricks in a picture may be derived based on the number of tile rows, the number of tile columns, and the number of brick rows for each tile. For example, the total number of bricks may be derived as (number of tile rows * number of tile columns) + (sum of num_brick_rows_minus1 of all tiles). Since a slice includes at least one brick, the number of slices is equal to or less than the number of bricks. Accordingly, a value obtained by differentiating the number of slices from the total number of bricks may be signaled through the bitstream.

표 18Table 18

Figure pat00073
Figure pat00073

Figure pat00074
Figure pat00074

또는, 표 18와 같이 single_brick_per_slice_flag 값이 0인 경우에 한정하여 one_slice_in_pic_flag을 시그날링할 수도 있다. one_slice_in_pic_flag의 값에 따라, rect_slice_flag의 시그날링 여부가 결정될 수 있다. 일 예로, one_slice_in_pic_flag의 값이 1인 경우, rect_slice_flag는 시그날링되지 않을 수 있다. Alternatively, as shown in Table 18, one_slice_in_pic_flag may be signaled only when the single_brick_per_slice_flag value is 0. Whether to signal rect_slice_flag may be determined according to the value of one_slice_in_pic_flag. For example, when the value of one_slice_in_pic_flag is 1, rect_slice_flag may not be signaled.

one_slice_in_pic_flag 값이 1이고, single_brick_per_slice_flag 값이 1인 경우에 bottom_right_brick_idx_delta[ i ]를 시그날링할 수 있다. When the value of one_slice_in_pic_flag is 1 and the value of single_brick_per_slice_flag is 1, bottom_right_brick_idx_delta[i] may be signaled.

표 19 Table 19

Figure pat00075
Figure pat00075

다음 표 19와 같이 슬라이스의 좌상단 브릭의 인덱스 top_left_brick_idx를 시그날링하지 않고, 우하단 브릭의 인덱스를 나타내는 신택스 bottom_right_brick_idx를 비트스트림을 통해 시그날링할 수 있다. As shown in Table 19, the syntax bottom_right_brick_idx indicating the index of the lower right brick may be signaled through the bitstream without signaling the index top_left_brick_idx of the upper left brick of the slice.

좌상단 브릭의 인덱스를 나타내는 변수 TopLeftBrickIdx[ sliceIdx ]를 다음 프로세스와 같이 유도할 수도 있다. The variable TopLeftBrickIdx[sliceIdx] indicating the index of the upper left brick can also be derived as follows.

Figure pat00076
Figure pat00076

표 20Table 20

Figure pat00077
Figure pat00077

다음 표 20과 같이 슬라이스의 우하단 브릭의 인덱스 bottom_right_brick_idx_delta를 시그날링하지 않고, 좌상단 브릭의 인덱스를 나타내는 신택스 top_left_brick_idx_minus1을 비트스트림을 통해 시그날링할 수 있다.As shown in Table 20 below, the syntax top_left_brick_idx_minus1 indicating the index of the upper left brick may be signaled through a bitstream without signaling the index bottom_right_brick_idx_delta of the lower right brick of the slice.

우하단 브릭의 인덱스를 나타내는 변수 BottomRightBrickIdx[ sliceIdx ]를 다음 프로세스와 같이 유도할 수도 있다.You can also derive the variable BottomRightBrickIdx[sliceIdx] indicating the index of the lower right brick as the following process.

Figure pat00078
Figure pat00078

표 21Table 21

Figure pat00079
Figure pat00079

다음 표 21과 같이 슬라이스의 우하단 브릭의 인덱스 bottom_right_brick_idx_delta 또는 bottom_right_brick_idx를 시그날링하지 않고, 좌상단 브릭의 인덱스를 나타내는 신택스 top_left_brick_idx_delta를 비트스트림을 통해 시그날링할 수 있다.As shown in Table 21 below, the syntax top_left_brick_idx_delta indicating the index of the upper left brick may be signaled through a bitstream without signaling the index bottom_right_brick_idx_delta or the bottom_right_brick_idx of the brick at the bottom right of the slice.

표 21에서 top_left_brick_idx_delta[i]는 이전 슬라이스(슬라이스 인덱스 i-1, 이하 (i-1) 번째 슬라이스 )의 첫번째 브릭과 현재 슬라이스(슬라이스 인덱스 i , 이하 i번째 슬라이스)의 첫번째 브릭의 인덱스 값 차분값을 나타낸다. In Table 21, top_left_brick_idx_delta[i] is the difference between the first brick of the previous slice (slice index i-1, hereinafter (i-1) th slice) and the first brick of the current slice (slice index i, hereinafter i th slice). Represents.

i번째 슬라이스의 좌상단 브릭의 브릭 인덱스 top_left_brick_idx(i)는 식 과 같이 top_left_brick_idx_delta[i]에 i-1 번째 슬라이스의 TopLeftBrickIdx(i-1)을 합산하여 유도할 수 있다. 신택스 top_left_brick_idx_delta[i]의 최대 비트수는 Ceil( Log2( NumBricksInPic - TopLeftBrickIdx( i -1) -1 ) ) 일 수 있다. 여기서 Ceil(a)는 a보다 크거나 같은 가장 작은 정수를 나타낸다. The brick index top_left_brick_idx(i) of the upper left brick of the i-th slice can be derived by summing TopLeftBrickIdx(i-1) of the i-1 th slice to top_left_brick_idx_delta[i] as shown in the equation. The maximum number of bits of the syntax top_left_brick_idx_delta[i] may be Ceil (Log2( NumBricksInPic-TopLeftBrickIdx( i -1) -1) ). Here, Ceil(a) represents the smallest integer greater than or equal to a.

TopLeftBrickIdx(i) = TopLeftBrickIdx(i-1) +top_left_brick_idx_delta[i]TopLeftBrickIdx(i) = TopLeftBrickIdx(i-1) +top_left_brick_idx_delta[i] (30)(30)

첫번째 슬라이스(즉, i가 0인 슬라이스)의 TopLeftBrickIdx(0) 값은 0으로 설정할 수 있다. 두번째 슬라이스(즉, i가 0인 슬라이스)에서는 top_left_brick_idx_delta[i] 대신 top_left_brick_idx[i]를 부호화할 수도 있다. The value of TopLeftBrickIdx(0) of the first slice (ie, a slice in which i is 0) may be set to 0. In the second slice (ie, a slice in which i is 0), top_left_brick_idx[i] may be encoded instead of top_left_brick_idx_delta[i].

다음과 같은 프로세스를 이용하여 각 브릭 별 슬라이스 아이디를 설정할 수 있다. BricksToSliceMap[ j ]는 브릭 인덱스 j의 슬라이스 아이디를 나타내고, BottomRightBrickIdx[i]는 i번째 슬라이스의 우하단 브릭의 인덱스를 나타낸다. You can set the slice ID for each brick using the following process. BricksToSliceMap[j] represents the slice ID of the brick index j, and BottomRightBrickIdx[i] represents the index of the lower right brick of the i-th slice.

Figure pat00080
Figure pat00080

표 22Table 22

Figure pat00081
Figure pat00081

다음 표 22와 같이 슬라이스의 우하단 브릭의 인덱스 bottom_right_brick_idx_delta 또는 bottom_right_brick_idx를 시그날링하지 않고, 좌상단 브릭의 인덱스를 나타내는 신택스 top_left_brick_idx_delta_minus1을 비트스트림을 통해 시그날링할 수 있다.As shown in Table 22 below, the syntax top_left_brick_idx_delta_minus1 indicating the index of the upper left brick can be signaled through a bitstream without signaling the index bottom_right_brick_idx_delta or bottom_right_brick_idx of the brick at the bottom right of the slice.

표 22에서 top_left_brick_idx_delta_minus1[i]는 이전 슬라이스(슬라이스 인덱스 i-1, 이하 (i-1) 번째 슬라이스 )의 첫번째 브릭과 현재 슬라이스(슬라이스 인덱스 i , 이하 i번째 슬라이스)의 첫번째 브릭의 인덱스 값 차분값에 1을 뺀 값을 나타낸다. In Table 22, top_left_brick_idx_delta_minus1[i] is the difference between the index value of the first brick of the previous slice (slice index i-1, hereinafter (i-1) th slice) and the first brick of the current slice (slice index i, hereinafter i th slice) Represents the value minus 1.

i번째 슬라이스의 좌상단 브릭의 브릭 인덱스 top_left_brick_idx(i)는 식 (31)과 같이 top_left_brick_idx_delta_minus1[i]에 i-1 번째 슬라이스의 TopLeftBrickIdx(i-1)을 합산하여 유도할 수 있다. 신택스 top_left_brick_idx_delta_minus1[i]의 최대 비트수는 Ceil( Log2( NumBricksInPic - TopLeftBrickIdx( i -1) ) ) 일 수 있다. 여기서 Ceil(a)는 a보다 크거나 같은 가장 작은 정수를 나타낸다. The brick index top_left_brick_idx(i) of the upper left brick of the i-th slice can be derived by summing TopLeftBrickIdx(i-1) of the i-1 th slice to top_left_brick_idx_delta_minus1[i] as shown in Equation (31). The maximum number of bits of the syntax top_left_brick_idx_delta_minus1[i] may be Ceil (Log2( NumBricksInPic-TopLeftBrickIdx( i -1)) ). Here, Ceil(a) represents the smallest integer greater than or equal to a.

TopLeftBrickIdx(i) = TopLeftBrickIdx(i-1) +top_left_brick_idx_delta_minus1[i]+1TopLeftBrickIdx(i) = TopLeftBrickIdx(i-1) +top_left_brick_idx_delta_minus1[i]+1 (31)(31)

첫번째 슬라이스(즉, i가 0인 슬라이스)의 TopLeftBrickIdx(0) 값은 0으로 설정할 수 있다. The value of TopLeftBrickIdx(0) of the first slice (ie, a slice in which i is 0) may be set to 0.

다음과 같은 프로세스를 이용하여 각 브릭 별 슬라이스 아이디를 설정할 수 있다. BricksToSliceMap[ j ]는 브릭 인덱스 j의 슬라이스 아이디를 나타내고, BottomRightBrickIdx[i]는 i번째 슬라이스의 우하단 브릭의 인덱스를 나타낸다. You can set the slice ID for each brick using the following process. BricksToSliceMap[j] represents the slice ID of the brick index j, and BottomRightBrickIdx[i] represents the index of the lower right brick of the i-th slice.

Figure pat00082
Figure pat00082

표 23Table 23

Figure pat00083
Figure pat00083

다음 표 23과 같이 i번째 슬라이스의 우하단 브릭 인덱스와 i-1번째 슬라이스의 우하단 브릭 인덱스의 차분을 나타내는 신택스 bottom_right_brick_idx_diff[i]를 비트스트림을 통해 시그날링할 수 있다.As shown in Table 23 below, the syntax bottom_right_brick_idx_diff[i] indicating the difference between the lower right brick index of the i-th slice and the lower right brick index of the i-1th slice may be signaled through a bitstream.

표 23 에서 bottom_right_brick_idx_diff[i]는 이전 슬라이스(슬라이스 인덱스 i-1, 이하 (i-1) 번째 슬라이스 )의 우하단 브릭의 인덱스와 현재 슬라이스(슬라이스 인덱스 i , 이하 i번째 슬라이스)의 우하단 브릭의 인덱스의 차분값을 나타낸다. In Table 23, bottom_right_brick_idx_diff[i] is the index of the lower right brick of the previous slice (slice index i-1, hereinafter (i-1) th slice) and the lower right brick of the current slice (slice index i, hereinafter i th slice). Represents the difference value of the index.

i번째 슬라이스의 우하단 브릭의 브릭 인덱스 bottomRightIdx[i]는 식 (32)와 같이 bottom_right_brick_idx_diff[i]에 i-1 번째 슬라이스의 BottomRightIdx(i-1)을 합산하여 유도할 수 있다. 신택스 bottom_right_brick_idx_diff[i]의 최대 비트수는 Ceil( Log2( NumBricksInPic - BottomRightIdx( i -1) ) ) 일 수 있다. 여기서 Ceil(a)는 a보다 크거나 같은 가장 작은 정수를 나타낸다. The brick index bottomRightIdx[i] of the lower-right brick of the i-th slice can be derived by summing the BottomRightIdx(i-1) of the i-1 th slice to bottom_right_brick_idx_diff[i] as shown in Equation (32). The maximum number of bits of the syntax bottom_right_brick_idx_diff[i] may be Ceil (Log2( NumBricksInPic-BottomRightIdx( i -1)) ). Here, Ceil(a) represents the smallest integer greater than or equal to a.

BottomRightIdx[i] = BottomRightIdx[i-1] + bottom_right_brick_idx_diff[i]BottomRightIdx[i] = BottomRightIdx[i-1] + bottom_right_brick_idx_diff[i] (32)(32)

첫번째 슬라이스(즉, i가 0인 슬라이스)의 BottomRightIdx[0] 값은 bottom_right_brick_idx_diff[0] 값으로 설정할 수 있다. The BottomRightIdx[0] value of the first slice (that is, a slice in which i is 0) may be set as a bottom_right_brick_idx_diff[0] value.

다음과 같은 프로세스를 이용하여 각 브릭 별 슬라이스 아이디를 설정할 수 있다. BricksToSliceMap[ j ]는 브릭 인덱스 j의 슬라이스 아이디를 나타내고, BottomRightBrickIdx[i]는 i번째 슬라이스의 우하단 브릭의 인덱스를 나타낸다. You can set the slice ID for each brick using the following process. BricksToSliceMap[j] represents the slice ID of the brick index j, and BottomRightBrickIdx[i] represents the index of the lower right brick of the i-th slice.

Figure pat00084
Figure pat00084

표 24Table 24

Figure pat00085
Figure pat00085

표 24의 sign_bottom_right_brick_idx_diff[i]는 i번째 슬라이스의 우하단 브릭 인덱스와 i-1번째 슬라이스의 우하단 브릭 인덱스의 차분의 sign값을 나타내는 신택스이다. The sign_bottom_right_brick_idx_diff[i] in Table 24 is a syntax indicating the sign value of the difference between the lower right brick index of the i-th slice and the lower right brick index of the i-1th slice.

i가 0인 경우에는 sign_bottom_right_brick_idx_diff[i] 값을 시그날링하지 않고, bottom_right_brick_idx_diff[0] 값이 0th 슬라이스의 우하단 브릭 인덱스를 나타낸다. if i is 0, sign_bottom_right_brick_idx_diff [i] without ring signal values, bottom_right_brick_idx_diff [0] value represents the lower right-brick index of 0 th slice.

i가 0이 아닌 경우에는I 슬라이스의 우하단 브릭 인덱스 BottomRightIdx[i] 는 다음 식 (33)과 같이 유도할 수 있다. If i is not 0, the lower right brick index BottomRightIdx[i] of the I slice can be derived as shown in the following equation (33).

BottomRightIdx[i-1]+ sign[i] bottom_right_brick_idx_diff[i]BottomRightIdx[i-1]+ sign[i] bottom_right_brick_idx_diff[i] (33)(33)

sign_bottom_right_brick_idx_diff[i] 값이 1이면 sign[i]는 1, sign_bottom_right_brick_idx_diff[i] 값이 0이면, sign[i]는 -1로 설정할 수 있다. If the value of sign_bottom_right_brick_idx_diff[i] is 1, sign[i] can be set to 1, and if the value of sign_bottom_right_brick_idx_diff[i] is 0, sign[i] can be set to -1.

여기서, bottom_right_brick_idx_length_minus1는 bottom_right_brick_idx_diff[i]를 비트 길이를 나타낸다. Here, bottom_right_brick_idx_length_minus1 represents the bit length of bottom_right_brick_idx_diff[i].

표 25Table 25

Figure pat00086
Figure pat00086

표 25와 같이 각 슬라이스 별로 bottom_right_brick_idx_length_minus1[i]를 시그날링할 수 있다 . As shown in Table 25, bottom_right_brick_idx_length_minus1[i] can be signaled for each slice.

bottom_right_brick_idx_length_minus1[i] 는 bottom_right_brick_idx_diff[ i ]의 비트 길이를 나타내는 신택스 이다. bottom_right_brick_idx_length_minus1[i] is a syntax indicating the bit length of bottom_right_brick_idx_diff [i].

bottom_right_brick)idx_diff[i]의 비트 길이는 (NumBricksInPic - BottomRightBrickIdx[i-1])로 정의할 수 있다. The bit length of bottom_right_brick)idx_diff[i] can be defined as (NumBricksInPic-BottomRightBrickIdx[i-1]).

NumBricksInPic는 픽쳐 내의 총 브릭의 개수를 나타내고, BottomRightBrickIdx[i]는 i-th slice의 우하단 브릭 인덱스 (Bottom right brick index)를 나타낸다. NumBricksInPic represents the total number of bricks in the picture, and BottomRightBrickIdx[i] represents the bottom right brick index of the i-th slice.

표 30 Table 30

Figure pat00087
Figure pat00087

i번째 타일이 브릭으로 추가 분할되는지 여부를 나타내는 플래그 brick_split_flag 값이 1이면, 타일의 높이에 따라 브릭의 높이가 균등하게 분할된 경우나, 브릭의 높이가 비균등하게 분할된 경우 모두, 브릭의 개수를 나타내는 신택스 num_brick_rows_minus2를 시그날링 할 수 있다. 일 예로, 표 30과 같이 타일의 높이가 2보다 큰 경우에 대해 브릭의 높이가 균등하게 분할된 경우나, 브릭의 높이가 비균등하게 분할된 경우 모두, 브릭의 개수를 나타내는 신택스 num_brick_rows_minus2를 시그날링 할 수 있다. 이때, num_brick_rows_minus2 값에 기초하여 uniform_brick_spacing_flag을 적응적으로 시그날링할 수 있다. 표 30과 같이 num_brick_rows_minus2 값이 0인 경우, uniform_brick_spacing_flag 값을 시그날링 하지 않고, i번째 타일 내 첫번째 브릭의 높이를 나타내는 신택스 brick_row_height_minus1[ i ][ 0 ]를 시그날링 할 수 있으며, i번째 타일 내 두번째 브릭의 높이는 RowHeight[i] - (brick_row_height_minus1[ i ][ 0 ]+1)로 설정할 수 있다. Flag indicating whether the i-th tile is further divided into bricks If the value of brick_split_flag is 1, the number of bricks in both cases where the height of the bricks is equally divided according to the height of the tile, or the height of the bricks is divided unevenly The syntax num_brick_rows_minus2 indicating is can be signaled. For example, as shown in Table 30, the syntax num_brick_rows_minus2 indicating the number of bricks is signaled in both cases where the height of the bricks is equally divided for the case where the height of the tile is greater than 2 or the height of the bricks is divided unevenly. can do. In this case, the uniform_brick_spacing_flag may be adaptively signaled based on the num_brick_rows_minus2 value. As shown in Table 30, if the value of num_brick_rows_minus2 is 0, the uniform_brick_spacing_flag value is not signaled, and the syntax brick_row_height_minus1[ i ][ 0] indicating the height of the first brick in the i-th tile can be signaled, and the second brick in the i-th tile You can set the height of RowHeight[i]-(brick_row_height_minus1[ i ][ 0 ]+1).

uniform_brick_spacing_flag[i] 값이 1이면, 타일 내 맨 마지막 브릭을 제외한 브릭의 높이는 RowHeight[i]/(num_brick_rows_minus2+2)로 설정할 수 있고, 맨 마지막 브릭의 높이는 (RowHeight[i] % BrickHeight)로 나타낼 수 있다. 여기서, %는 모듈러 연산을 나타낸다. uniform_brick_spacing_flag[i] 값이 0이면, 각 브릭의 높이를 나타내는 신택스 brick_row_height_minus1[ i ][ j ]를 비트스트림을 통해 시그날링 할 수 있다.If the uniform_brick_spacing_flag[i] value is 1, the height of the bricks excluding the last brick in the tile can be set as RowHeight[i]/(num_brick_rows_minus2+2), and the height of the last brick can be expressed as (RowHeight[i]% BrickHeight). have. Here,% represents a modular operation. If the uniform_brick_spacing_flag[i] value is 0, the syntax brick_row_height_minus1[i][j] indicating the height of each brick can be signaled through the bitstream.

Figure pat00088
Figure pat00088

Figure pat00089
Figure pat00089

여기서 Ceil(X)는 X 와 같거나 큰 정수로 정의 할 수 있다. Here, Ceil(X) can be defined as an integer greater than or equal to X.

본 명세서 상에 상술한 실시예들에서, 방법들은 일련의 표 및/또는 그림으로서 설명되고 있으나, 본 발명은 표 및/또는 그림의 순서에 한정되는 것은 아니며, 어떤 단계는 상술한 바와 다른 단계와 다른 순서로 또는 동시에 발생할 수 있다. 또한, 당해 기술 분야에서 통상의 지식을 가진 자라면 표 및/또는 그림에 나타난 단계들이 배타적이지 않고, 다른 단계가 포함되거나, 하나 또는 그 이상의 단계가 본 발명의 범위에 영향을 미치지 않고 삭제될 수 있음을 이해할 수 있을 것이다.In the above-described embodiments herein, the methods are described as a series of tables and/or figures, but the present invention is not limited to the order of tables and/or figures, and certain steps are different from those described above. They can occur in a different order or simultaneously. In addition, for those of ordinary skill in the art, the steps shown in the tables and/or figures are not exclusive, other steps may be included, or one or more steps may be deleted without affecting the scope of the present invention. You will understand that there is.

상술한 실시예는 다양한 양태의 예시들을 포함한다. 다양한 양태들을 나타내기 위한 모든 가능한 조합을 기술할 수는 없지만, 해당 기술 분야의 통상의 지식을 가진 자는 다른 조합이 가능함을 인식할 수 있을 것이다. 따라서, 본 발명은 이하의 특허청구범위 내에 속하는 모든 다른 교체, 수정 및 변경을 포함한다고 할 것이다.The above-described embodiments include examples of various aspects. It is not possible to describe all possible combinations for representing the various aspects, but one of ordinary skill in the art will recognize that other combinations are possible. Accordingly, the present invention will be said to include all other replacements, modifications and changes falling within the scope of the following claims.

본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다. 따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 본 발명에서 도출된 특허청구 범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.Although the present invention has been described by specific matters such as specific elements and limited embodiments and drawings, this is provided only to help a more general understanding of the present invention, and the present invention is not limited to the above embodiments, and the present invention Anyone with ordinary knowledge in the technical field to which the invention pertains can make various modifications and variations from these descriptions. Accordingly, the spirit of the present invention is limited to the above-described embodiments and should not be determined, and all modifications that are equivalently or equivalently to the scope of the claims derived from the present invention will be said to belong to the scope of the spirit of the present invention. .

Claims (1)

타일, 브릭 및 슬라이스 정보 시그날링 부호화를 이용한 예측 부호화 및 복호화 방법


Predictive encoding and decoding method using tile, brick, and slice information signaling encoding


KR1020190117792A 2019-09-24 2019-09-24 Video signal encoding method and apparatus and video decoding method and apparatus KR20210035677A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190117792A KR20210035677A (en) 2019-09-24 2019-09-24 Video signal encoding method and apparatus and video decoding method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190117792A KR20210035677A (en) 2019-09-24 2019-09-24 Video signal encoding method and apparatus and video decoding method and apparatus

Publications (1)

Publication Number Publication Date
KR20210035677A true KR20210035677A (en) 2021-04-01

Family

ID=75441419

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190117792A KR20210035677A (en) 2019-09-24 2019-09-24 Video signal encoding method and apparatus and video decoding method and apparatus

Country Status (1)

Country Link
KR (1) KR20210035677A (en)

Similar Documents

Publication Publication Date Title
KR20200115322A (en) Video signal encoding/decoding method and apparatus
KR20200145998A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20200113346A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20200141696A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20200141703A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20200141896A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20200078252A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20210035677A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20210040240A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20210034860A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20210042440A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20210046504A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20210060109A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20210008783A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20210014042A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20210000979A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20200145250A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20200145415A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20200107697A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20200133538A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20200109059A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20200124077A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20200108613A (en) Video signal encoding method and apparatus and video decoding method and apparatus
KR20210034913A (en) Video encoding method and apparatus and video decoding method and apparatus
KR20210032840A (en) Video encoding method and apparatus and video decoding method and apparatus