KR102609632B1 - Methdo and apparatus for processing a video signal - Google Patents
Methdo and apparatus for processing a video signal Download PDFInfo
- Publication number
- KR102609632B1 KR102609632B1 KR1020160022481A KR20160022481A KR102609632B1 KR 102609632 B1 KR102609632 B1 KR 102609632B1 KR 1020160022481 A KR1020160022481 A KR 1020160022481A KR 20160022481 A KR20160022481 A KR 20160022481A KR 102609632 B1 KR102609632 B1 KR 102609632B1
- Authority
- KR
- South Korea
- Prior art keywords
- prediction
- block
- intra
- sample
- mode
- Prior art date
Links
- 239000013074 reference sample Substances 0.000 claims abstract description 43
- 238000000034 method Methods 0.000 claims abstract description 36
- 239000000523 sample Substances 0.000 claims description 70
- 238000009499 grossing Methods 0.000 abstract description 35
- 239000013598 vector Substances 0.000 description 81
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 75
- 230000033001 locomotion Effects 0.000 description 63
- 238000001914 filtration Methods 0.000 description 22
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 12
- 241000023320 Luma <angiosperm> Species 0.000 description 11
- 238000005192 partition Methods 0.000 description 11
- 238000005070 sampling Methods 0.000 description 11
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000010422 painting Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- TVEXGJYMHHTVKP-UHFFFAOYSA-N 6-oxabicyclo[3.2.1]oct-3-en-7-one Chemical compound C1C2C(=O)OC1C=CC2 TVEXGJYMHHTVKP-UHFFFAOYSA-N 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/521—Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/18—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/537—Motion estimation other than block-based
- H04N19/54—Motion estimation other than block-based using feature points or meshes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
레퍼런스 샘플 스무딩을 통한 인트라 예측 방법 및 장치를 제공한다.Provides an intra prediction method and device through reference sample smoothing.
Description
본 발명은 비디오 신호 처리 방법 및 장치에 관한 것이다.The present invention relates to a video signal processing method and device.
비디오 영상은 시공간적 중복성 및 시점 간 중복성을 제거하여 압축부호화되며, 이는 통신 회선을 통해 전송되거나 저장 매체에 적합한 형태로 저장될 수 있다.Video images are compressed and encoded by removing spatial-temporal redundancy and inter-view redundancy, and can be transmitted through communication lines or stored in a format suitable for storage media.
본 발명은 비디오 신호의 코딩 효율을 향상시키고자 함에 있다.The present invention seeks to improve the coding efficiency of video signals.
상기 과제를 해결하기 위하여 본 발명은 레퍼런스 샘플 스무딩을 통한 인트라 예측 방법 및 장치를 제공한다.In order to solve the above problems, the present invention provides an intra prediction method and device through reference sample smoothing.
본 발명에 따른 비디오 신호 처리 방법 및 장치는 레퍼런스 샘플 스무딩을 통해 비디오 신호 코딩 효율을 향상시킬 수 있다.The video signal processing method and device according to the present invention can improve video signal coding efficiency through reference sample smoothing.
비디오 부호화에서 현재 픽쳐의 화면 내 예측 (intra prediction)을 사용하거나 화면 간 예측 (inter prediction)을 사용하여 예측 영상을 생성한다. 원본 영상에서 예측 영상을 차분한 잔차 영상(residual)을 부호화 한다. 예측 영상의 화질이 원본에 가까울수록 잔차 영상은 작은 샘플 값을 가지게 되어 부호화 효율이 높아진다. In video encoding, a predicted image is generated using intra prediction of the current picture or inter prediction. The predicted image is encoded as a calm residual image from the original image. The closer the image quality of the predicted image is to the original, the smaller the sample value of the residual image is, increasing the encoding efficiency.
입력 영상 신호를 여러 개의 블록으로 나누는데, 그 중 예측 모드(화면 내 예측 (Intra Mode), 화면 간 예측 (Inter Mode), 또는 스킵 모드(skip mode))를 공유하는 블록을 결정하고 이를 코딩 유닛 (Coding Unit(CU))라고 부른다. Coding unit의 크기는 64x64부터 8x8 사이의 정방형 블록일 수도 있고, 128x128, 256x256 또는 그 이상의 크기를 가지는 정방형 블록 또는 임의의 크기의 직사각형 블록일 수 있다. 256x256 크기부터 8x8 크기 사이의 정방형 블록 중에서 임의의 개수의 CU 크기를 선택적으로 사용할 수도 있다. 예를 들어, 어떤 시퀀스에서는 256x256 크기의 CU, 128x128 크기의 CU 그리고 32x32 크기의 CU만 사용할 수도 있으며, 현재 픽쳐 또는 시퀀스에서 사용할 CU의 크기를 시퀀스 헤더 또는 픽쳐 헤더에 시그날링 할 수도 있다.The input video signal is divided into several blocks, and among them, the blocks that share the prediction mode (Intra Mode, Inter Mode, or Skip Mode) are determined and divided into coding units ( It is called a Coding Unit (CU). The size of the coding unit may be a square block between 64x64 and 8x8, a square block with a size of 128x128, 256x256 or more, or a rectangular block of any size. You can optionally use any number of CU sizes among square blocks ranging in size from 256x256 to 8x8. For example, in some sequences, only CUs of size 256x256, CUs of 128x128, and CUs of 32x32 may be used, and the size of the CU to be used in the current picture or sequence may be signaled in the sequence header or picture header.
픽쳐는 정방형 또는 비정방형 형태의 기본 블록으로 나누어 부호화 프로세스를 진행하게 되는데, 이를 Coding Tree Unit(CTU)라고 부른다. 시퀀스 파라미터 세트(sequence parameter set, SPS)에서 정방형 CTU인지 비정방형 CTU인지 시그날링할 수 있고, CTU사이즈를 시그날링할 수 있다. 비정방형 CTU인 경우 CTU 넓이와 CTU의 높이를 모두 시그날링할 수도 있다. 또는 픽쳐를 분할하는 vertical/horizontal boundary의 개수에 기초하여 정방향 및/또는 비정방형 CTU의 크기 또는 형태를 유도할 수도 있다.The picture is divided into square or non-square basic blocks and the coding process is performed, which are called Coding Tree Units (CTU). In the sequence parameter set (SPS), it can be signaled whether it is a square CTU or a non-square CTU, and the CTU size can be signaled. In the case of a non-square CTU, both the CTU width and the CTU height may be signaled. Alternatively, the size or shape of the forward and/or non-square CTU may be derived based on the number of vertical/horizontal boundaries dividing the picture.
CTU는 쿼드 트리/바이너리 트리 구조로 분할하여 코딩 유닛(coding unit)을 구성하여 부호화 하거나 계층 구조로 분할하여 부호화 할 수도 있다.The CTU can be divided into a quad tree/binary tree structure and encoded by forming a coding unit, or divided into a hierarchical structure and encoded.
코딩 유닛은 스킵 모드, 화면 내 예측 (Intra mode), 화면 간 예측(Inter mode) 중 어느 하나의 예측 타입을 이용하여 부호화 된다. 코딩 유닛이 결정이 되고 나면, 예측 유닛(Prediction Unit(PU))을 결정하게 된다. 예측 유닛의 크기는 코딩 유닛의크기와 같거나 작다. 예측 유닛은 코딩 유닛의 예측 분할(PU splitting)과정을 통해 결정된다. 그리고 코딩 유닛의 예측 분할은 코딩 유닛의 파티션 모드(Part_mode)에 따라 수행된다. 즉, 코딩 유닛의 파티션 모드에 따라 예측 유닛의 크기 또는 형태가 결정된다. 화면 간 예측(Inter Mode)의 경우 총 8개의 예측 블록으로 나누어 지는데, 다음 그림1 과 같다. The coding unit is encoded using any one of skip mode, intra mode, and inter prediction types. Once the coding unit is determined, the prediction unit (PU) is determined. The size of the prediction unit is equal to or smaller than the size of the coding unit. The prediction unit is determined through the prediction splitting (PU splitting) process of the coding unit. And prediction division of the coding unit is performed according to the partition mode (Part_mode) of the coding unit. That is, the size or shape of the prediction unit is determined depending on the partition mode of the coding unit. In the case of inter-screen prediction (Inter Mode), it is divided into a total of 8 prediction blocks, as shown in Figure 1.
그림1 화면 간 예측에 사용하는 Figure 1 Used for cross-screen prediction 파티션partition 종류 type
화면 내 예측(Intra mode)의 경우는 PART_2Nx2N, PART_NxN를 사용한다. 파티션 종류 PART_NxN의 경우, CU의 크기가 슬라이스에서 정의된 가장 작은 CU의 크기와 같을 때만 사용한다. 일반적으로 PU의 크기는 64x64부터 4x4까지로 정의되고, 화면 간 예측(Inter mode)인 경우에는 움직임 보상(Motion Compensation (MC))를 수행할 때 메모리 밴드위드스(memory bandwidth)를 줄이기 위해서 4x4 크기의 PU는 사용하지 않는다.For intra-screen prediction (Intra mode), PART_2Nx2N and PART_NxN are used. For partition type PART_NxN, it is used only when the size of the CU is the same as the size of the smallest CU defined in the slice. Generally, the size of the PU is defined as 64x64 to 4x4, and in the case of inter mode prediction, the size is 4x4 to reduce memory bandwidth when performing motion compensation (MC). PU is not used.
1. One. 인트라Intra 예측 샘플 생성 방법 How to generate prediction samples
화면 내 예측의 경우 이미 부호화 된 주변 블록의 경계 샘플 (boundary sample)을 화면 내 예측을 위한 참조 픽셀로 사용한다. HEVC(High Efficient Video Codec) version1이 참조 픽셀을 이용하여 화면 내 예측 영상을 생성하는 35개 모드가 존재한다. 35개 모드는 DC 모드, 플래너(planar) 모드 그리고 33개의 방향성 예측 모드(directional prediction mode)로 구성된다. 그림 2는 33개의 방향성 예측 모드를 나타내고 있다. In the case of intra-screen prediction, the boundary sample of a neighboring block that has already been encoded is used as a reference pixel for intra-screen prediction. There are 35 modes in which HEVC (High Efficient Video Codec) version 1 generates a predicted image within the screen using reference pixels. The 35 modes consist of DC mode, planar mode, and 33 directional prediction modes. Figure 2 shows 33 directional prediction modes.
그림2 화면 내 Figure 2 Inside the screen 예측모드Prediction mode
크로마(Chroma) 성분의 화면 내 예측 모드는 루마(Luma) 성분에서 사용한 화면 내 예측 모드에 기초하여 아래 표 1과 같이 결정된다. 즉, DC 모드, 플래너 모드(Planar mode), 수평 예측 모드(Horizontal), 수직 예측 모드(Vertical), 대각 예측 모드(Diagonal) 그리고 루마(Luma) 성분에서 사용한 모드를 재사용하는 모드를 사용 할 수 있다. The intra-screen prediction mode of the chroma component is determined as shown in Table 1 below based on the intra-screen prediction mode used in the luma component. That is, DC mode, planar mode, horizontal prediction mode, vertical prediction mode, diagonal prediction mode, and a mode that reuses the mode used in the luma component can be used. .
또는 HEVC version 1에 정의된 33개의 방향성 예측 모드보다 더 많은 개수의 방향성 예측 모드가 이용될 수 있다. 즉, 방향성 예측 모드의 각도(angle)를 더 세분화하여 확장된 방향성 예측 모드를 정의할 수도 있고, 기-정의된 소정의 개수의 방향성 예측 모드들 중 적어도 하나를 이용하여 소정의 각도를 가진 방향성 예측 모드를 복호화 장치에서 유도하여 사용할 수도 있다.Alternatively, more directional prediction modes may be used than the 33 directional prediction modes defined in HEVC version 1. That is, an extended directional prediction mode may be defined by further subdividing the angle of the directional prediction mode, and directional prediction with a predetermined angle may be performed using at least one of a predefined number of directional prediction modes. The mode can also be derived and used from the decoding device.
예를 들어, 그림 3은 확장된 인트라 예측 모드를 도시한 것으로서, 인트라 예측 모드의 개수가 총 67개로 구성할 수도 있다. DC 모드와 플래너 모드 그리고 65개 방향성 예측 모드로 구성할 수도 있다. For example, Figure 3 shows an extended intra prediction mode, and the total number of intra prediction modes may be 67. It can also be configured in DC mode, planner mode, and 65 directional prediction modes.
그림 3 65개 방향성 Figure 3 65 directions 인트라Intra 예측 prediction 모드mode
확장된 인트라 예측 모드는 Luma 성분과 chroma 성분 모두에서 사용할 수도 있다. Luma 성분과 chroma 성분에 대해서 서로 상이한 개수의 인트라 예측 모드를 사용할 수도 있다. 예를 들어,Luma 성분에서는 67개 인트라 예측 모드를 사용하고, chroma 성분에서는 35개 인트라 예측 모드를 사용할 수도 있다. 또는 chroma format에 따라 서로 다른 개수의 인트라 예측 모드를 사용하여 인트라 예측을 수행할 수도 있다. 예를 들어, 4:2:0 format인 경우에는 luma에서는 67개 인트라 예측 모드를 이용해 인트라 예측을 수행하고 chroma에서는 35개 인트라 예측 모드를 사용할 수 있고, 4:4:4 format인 경우에는 luma 와 chroma 성분 모두에서 67개 인트라 예측 모드를 이용해 인트라 예측을 사용할 수도 있다.The extended intra prediction mode can also be used for both luma and chroma components. Different numbers of intra prediction modes may be used for the luma component and the chroma component. For example, the luma component may use 67 intra prediction modes, and the chroma component may use 35 intra prediction modes. Alternatively, intra prediction may be performed using different numbers of intra prediction modes depending on the chroma format. For example, in the case of 4:2:0 format, intra prediction can be performed using 67 intra prediction modes in luma, and 35 intra prediction modes can be used in chroma, and in the case of 4:4:4 format, luma and Intra prediction can also be used using 67 intra prediction modes on all chroma components.
또는 블록의 크기 (PU 또는 CU의 크기 또는 형태)에 따라 서로 다른 개수의 인트라 예측 모드를 사용하여 인트라 예측을 수행할 수도 있다. 즉 PU 또는 CU의 크기 또는 형태에 따라 35개 인트라 예측 모드 또는 67개 인트라 예측 모드를 이용하여 인트라 예측을 수행할 수도 있다. 예를 들어, CU 또는 PU의 크기가 64x64보다 작거나 asymmetric partition인 경우 (인터 예측 모드의 PART_nLx2N과 같은 파티션 모드)에는 35개 인트라 예측 모드를 이용하여 인트라 예측을 수행할 수 있고, CU 또는 PU의 크기가 64x64보다 같거나 큰 경우에는 67개 인트라 예측 모드를 이용하여 인트라 예측을 수행할 수도 있다. Alternatively, intra prediction may be performed using different numbers of intra prediction modes depending on the size of the block (size or shape of PU or CU). That is, intra prediction may be performed using 35 intra prediction modes or 67 intra prediction modes depending on the size or shape of the PU or CU. For example, if the size of the CU or PU is smaller than 64x64 or is an asymmetric partition (partition mode such as PART_nLx2N in inter prediction mode), intra prediction can be performed using 35 intra prediction modes, and the CU or PU If the size is equal to or larger than 64x64, intra prediction can be performed using 67 intra prediction modes.
또 다른 예를 들어, Intra_2Nx2N에서는 65개 방향 인트라 예측 모드를 허용할 수도 있으며, Intra_NxN에서는 35개 방향 인트라 예측 모드만 허용할 수도 있다. For another example, Intra_2Nx2N may allow a 65-way intra prediction mode, and Intra_NxN may only allow a 35-way intra prediction mode.
상술한 바와 같이, 성분 타입(Luma 성분 또는 chroma 성분), chroma format, 블록 크기, 파티션 모드 중 적어도 하나를 고려하여 확장된 인트라 예측 모드의 개수가 선택적으로 결정될 수 있다. 다만, 이에 한정되지 아니하며, 인트라 예측 모드 중 복호화 대상 블록의 인트라 예측 위해 사용되는 인트라 예측 모드 후보자의 개수도 성분 타입(Luma 성분 또는 chroma 성분), chroma format, 블록 크기, 파티션 모드 중 적어도 하나를 고려하여 선택적으로 결정될 수 있다.As described above, the number of extended intra prediction modes can be selectively determined by considering at least one of the component type (Luma component or chroma component), chroma format, block size, and partition mode. However, it is not limited to this, and the number of intra prediction mode candidates used for intra prediction of the decoding target block among intra prediction modes also considers at least one of component type (Luma component or chroma component), chroma format, block size, and partition mode. This can be determined selectively.
시퀀스나 슬라이스 단위 별로, 인트라 예측 모드의 개수를 다르게 적용하는 블록의 크기를 다르게 적용할 수 있다. 예를 들어, 하나의 슬라이스에서는 64x64 보다 큰 PU 또는 CU에서 67개의 인트라 예측 모드를 사용하여 인트라 예측을 수행하고, 다른 슬라이스에서는 32x32보다 큰 PU 또는 CU에서 67개의 인트라 예측 모드를 사용하여 인트라 예측을 수행할 수도 있다. 이를 나타내는 정보 log2_extended_intra_mode_size_minus4 를 시퀀스 파라미터 세트 또는 슬라이스 헤더 등에 시그날링할 수 있다. For each sequence or slice unit, the size of the block applying a different number of intra prediction modes can be applied differently. For example, in one slice, intra prediction is performed using 67 intra prediction modes on a PU or CU larger than 64x64, and in another slice, intra prediction is performed using 67 intra prediction modes on a PU or CU larger than 32x32. It can also be done. Information indicating this, log2_extended_intra_mode_size_minus4, can be signaled in a sequence parameter set or slice header, etc.
log2_extended_intra_mode_size_minus4 가 0 이면 16x16 보다 크기가 큰 CU 또는 PU에서 67개 인트라 예측 모드를 사용하여 인트라 예측을 수행할 수 있음을 나타내고, log2_extended_intra_mode_size_minus4가 1이면 32x32보다 크기가 큰 CU 또는 PU에서 67개 인트라 예측 모드를 사용하여 인트라 예측을 수행할 수 있음을 나타낸다. If log2_extended_intra_mode_size_minus4 is 0, it indicates that intra prediction can be performed using 67 intra prediction modes on a CU or PU larger than 16x16, and if log2_extended_intra_mode_size_minus4 is 1, 67 intra prediction modes can be performed on a CU or PU larger than 32x32. Indicates that intra prediction can be performed using .
확장된 인트라 예측 모드를 사용하여 인트라 예측을 수행하는 경우에는 확장된 인트라 예측 모드 중에서 복수의 인트라 예측 모드 후보자(mpm)를 결정하고, 복수의 인트라 예측 모드 후보자 중 어느 하나를 선택적으로 이용하여(예를 들어, 시그날링되는 mpm_idx에 기반하여 선택) 현재 블록의 인트라 예측 모드를 유도할 수 있다. 이때 상기 복수의 인트라 예측 모드의 개수는 3개, 4개, 5개, 6개 또는 그 이상의 Most probable mode가 고정적으로 또는 적응적으로 이용될 수 있다. When performing intra prediction using an extended intra prediction mode, determine a plurality of intra prediction mode candidates (mpm) among the extended intra prediction modes, and selectively use one of the plurality of intra prediction mode candidates (e.g. For example, the intra prediction mode of the current block (selected based on the signaled mpm_idx) can be derived. At this time, the number of the plurality of intra prediction modes is 3, 4, 5, 6, or more most probable modes can be used fixedly or adaptively.
확장된 인트라 예측 모드와 HEVC version1에서 정의된 35개의 인트라 예측 모드가 선택적으로 사용되는 경우, 주변 블록의 인트라 모드를 확장된 예측 모드의 인덱스로 변환하거나 HEVC version1에서 정의된 35개 인트라 예측 모드의 인덱스로 변환한 후, most probable mode를 유도할 수도 있다. 인덱스 변환을 위해 기-정의된 테이블이 이용될 수도 있고, 소정의 값에 기반한 스케일링 연산이 이용될 수도 있다. 여기서, 기-정의된 테이블은 서로 상이한 인트라 예측 모드 그룹 (예를 들어, 확장된 인트라 예측 모드와 HEVC version 1에 정의된 인트라 예측 모드) 간의 매핑 관계를 정의한 것일 수 있다. If the extended intra prediction mode and the 35 intra prediction modes defined in HEVC version1 are optionally used, convert the intra mode of the surrounding block to the index of the extended prediction mode or the index of the 35 intra prediction modes defined in HEVC version1 After converting to , the most probable mode can be derived. A pre-defined table may be used for index conversion, or a scaling operation based on a predetermined value may be used. Here, the pre-defined table may define a mapping relationship between different intra prediction mode groups (for example, the extended intra prediction mode and the intra prediction mode defined in HEVC version 1).
예를 들어, 좌측 예측 유닛이 HEVC version 1과 같은 35개의 인트라 예측 모드를 사용하고, 인트라 예측 모드 인덱스가 10(horizontal mode)인 경우, 모드 인덱스를 확장된 인트라 예측 모드의 horizontal mode 인덱스인 16로 변환한 후, most probable mode 등을 유도할 때 사용할 수도 있다. For example, if the left prediction unit uses 35 intra prediction modes such as HEVC version 1, and the intra prediction mode index is 10 (horizontal mode), the mode index is set to 16, which is the horizontal mode index of the extended intra prediction mode. After conversion, it can be used to derive the most probable mode, etc.
또 다른 예를 들어, 상측 예측 유닛이 확장된 인트라 예측 모드를 사용하고, 인트라 예측 모드 인덱스가 50 (vertical mode)인 경우, 모드 인덱스를 HEVC version1의 vertical mode 인덱스인 26으로 변환한 후, most probable mode등을 유도할 때 사용할 수도 있다. For another example, if the upper prediction unit uses an extended intra prediction mode and the intra prediction mode index is 50 (vertical mode), after converting the mode index to 26, which is the vertical mode index of HEVC version1, the most probable It can also be used when deriving a mode, etc.
Luma 성분에서는 화면 내 예측에 사용되는 참조 픽셀(reference pixel)을 필터링 한 후에 화면 내 예측을 수행한다. 필터링은 화면 내 예측 모드 및 변환 유닛(TU)의 크기에 따라 적용 여부가 결정된다. DC 모드이거나 TU의 크기가 4x4인 경우에는 필터링을 수행하지 않는다. 그 외의 경우에는 화면 내 예측 모드와 수직 예측(또는 수평 예측) 모드와의 차이가 기-정의된 임계치(Threshold) 보다 큰 경우에는 필터링을 수행한다. 그 임계치는 다음 표 2와 같다.In the Luma component, intra-screen prediction is performed after filtering the reference pixel used for intra-screen prediction. Whether or not filtering is applied is determined depending on the intra-screen prediction mode and the size of the transformation unit (TU). In DC mode or when the TU size is 4x4, filtering is not performed. In other cases, filtering is performed when the difference between the intra-screen prediction mode and the vertical prediction (or horizontal prediction) mode is greater than a pre-defined threshold. The threshold values are shown in Table 2 below.
필터링에는 bilinear 보간 필터, 3 탭 필터 또는 그 이상의 탭수를 가진 필터가 선택적으로 이용될 수 있다. Bilinear 보간 필터는 소정의 가중치(예를 들어, [1/2, 1/2], [1/3, 2/3], [1/4, 3/4])를 이용할 수 있고, 3 탭 필터는 [1,2,1]의 필터 계수를 가진 필터가 이용될 수 있다.For filtering, a bilinear interpolation filter, a 3-tap filter, or a filter with more taps can be optionally used. Bilinear interpolation filter can use predetermined weights (e.g., [1/2, 1/2], [1/3, 2/3], [1/4, 3/4]), and is a 3-tap filter. A filter with filter coefficients of [1,2,1] can be used.
화면 내 예측을 사용할 경우 주변 블록의 경계 샘플을 이용하여 예측 영상을 만들기 때문에, 화면 간 예측에 비해 예측 영상의 화질이 낮아지게 된다.When using intra-screen prediction, the predicted image is created using boundary samples of surrounding blocks, so the image quality of the predicted image is lowered compared to inter-screen prediction.
인트라 예측 모드를 수행하여 예측 샘플을 생성한 후에 주변 블록과 현재 블록의 샘플 값의 차이가 실제 블록의 샘플 간의 차이보다 커지는 경우가 발생하게 된다. 이를 보상해 주기 위해서 주변 블록의 샘플 및/또는 현재 블록 경계에 있는 샘플에 필터링을 수행하여 최종 예측 신호를 생성하여, 블록 간의 샘플 값의 차이를 줄이고 부호화 효율을 높일 수도 있다. After performing the intra prediction mode to generate a prediction sample, there may be a case where the difference between the sample values of the surrounding block and the current block becomes larger than the difference between the samples of the actual block. To compensate for this, filtering is performed on samples of neighboring blocks and/or samples on the boundary of the current block to generate a final prediction signal, thereby reducing the difference in sample values between blocks and increasing coding efficiency.
예를 들어, vertical mode에서는 현재 샘플과 가장 가까운 좌측 주변 샘플 p(-1,y)와 좌상단 주변 샘플 p(-1,-1)의 차분을 이용하여 최종 예측 샘플을 얻을 수 있으며, 다음 식 (1)과 같이 예측 신호를 얻을 수 있다. For example, in vertical mode, the final predicted sample can be obtained using the difference between the left neighboring sample p(-1,y), which is closest to the current sample, and the upper left neighboring sample p(-1,-1), using the following equation ( The prediction signal can be obtained as shown in 1).
P'(0,y) = P(0,y) + (( p(-1,y) -p(-1,-1)) >> 1 for y=0… N-1 (1)P'(0,y) = P(0,y) + (( p(-1,y) -p(-1,-1)) >> 1 for y=0…N-1 (1)
Horizontal mode에서는 현재 샘플과 가장 가까운 상측 주변 샘플 p(x,-1)과 좌상단 주변 샘플 p(-1,-1)의 차분을 이용하여 최종 예측 샘플을 얻을 수 있으며, 다음 식 (2)와 같이 예측 신호를 얻을 수 있다.In horizontal mode, the final predicted sample can be obtained using the difference between the upper neighboring sample p(x,-1), which is closest to the current sample, and the upper left neighboring sample p(-1,-1), as shown in Equation (2) below: A prediction signal can be obtained.
P'(x,0) = p (x,0) + ((p(x,-1) -p(-1,-1))>>1 for x= 0 .. N-1 (2)P'(x,0) = p (x,0) + ((p(x,-1) -p(-1,-1))>>1 for x= 0 .. N-1 (2)
그림 4 Figure 4 인트라Intra 예측 prediction 모드에서in mode 현재 샘플과 주변 샘플 예시 Examples of current and surrounding samples
현재 수직 예측 모드이거나 수평 예측 모드인 경우에 블록 경계에 있는 하나의 라인에서만 주변 블록의 차분 정보를 이용하여 최종 예측 샘플을 생성하는데, 블록 경계에 있는 복수의 라인(예를 들어, 복수의 열, 복수의 행)에서 주변 블록의 차분 정보를 이용하여 최종 예측 샘플을 생성할 수도 있다. In the case of the current vertical prediction mode or horizontal prediction mode, the final prediction sample is generated using the difference information of neighboring blocks only on one line at the block boundary, and multiple lines (e.g., multiple columns, The final prediction sample may be generated using difference information of neighboring blocks (a plurality of rows).
구체적으로 예를 들어, vertical mode에서는 현재 샘플과 가장 가까운 좌측 주변 샘플 p(-1,y)와 좌상단 주변 샘플 p(-1,-1)의 차분을 이용하여 최종 예측 샘플을 얻을 수 있다. 이때, 상기 차분을 현재 샘플의 예측값에 가산할 수도 있고, 상기 차분을 소정의 값으로 스케일링한 후, 이를 현재 샘플의 예측값에 가산할 수도 있다. 스케일링에 이용되는 소정의 값은 열(row) 및/또는 행(column)에 따라 상이하게 결정될 수 있다. 일예로, 다음 식 (3), (4)와 같이 예측 신호를 얻을 수 있다. Specifically, for example, in vertical mode, the final predicted sample can be obtained using the difference between the left neighboring sample p(-1,y), which is closest to the current sample, and the upper left neighboring sample p(-1,-1). At this time, the difference may be added to the predicted value of the current sample, or the difference may be scaled to a predetermined value and then added to the predicted value of the current sample. A predetermined value used for scaling may be determined differently depending on the row and/or column. As an example, a prediction signal can be obtained as in the following equations (3) and (4).
P'(0,y) = P(0,y) + (( p(-1,y) -p(-1,-1)) >> 1 for y=0… N-1 (3)P'(0,y) = P(0,y) + (( p(-1,y) -p(-1,-1)) >> 1 for y=0… N-1 (3)
P'(1,y) = P(1,y) + (( p(-1,y) -p(-1,-1)) >>2 for y=0… N-1 (4)P'(1,y) = P(1,y) + (( p(-1,y) -p(-1,-1)) >>2 for y=0… N-1 (4)
Horizontal mode에서는 현재 샘플과 가장 가까운 상측 주변 샘플 p(x,-1)과 좌상단 주변 샘플 p(-1,-1)의 차분을 이용하여 최종 예측 샘플을 얻을 수 있으며, 이는 vertical mode에서 상술한 바와 같다. 일예로, 다음 식 (5), (6)과 같이 예측 신호를 얻을 수 있다.In horizontal mode, the final predicted sample can be obtained using the difference between the upper neighboring sample p(x,-1), which is closest to the current sample, and the upper left neighboring sample p(-1,-1), which is as described above in vertical mode. same. As an example, the prediction signal can be obtained as in the following equations (5) and (6).
P'(x,0) = p (x,0) + ((p(x,-1) -p(-1,-1))>>1 for x= 0 .. N-1 (5)P'(x,0) = p (x,0) + ((p(x,-1) -p(-1,-1))>>1 for x= 0 .. N-1 (5)
P'(x,1) = p (x,1) + ((p(x,-1) -p(-1,-1))>>2 for x= 0 .. N-1 (6)P'(x,1) = p (x,1) + ((p(x,-1) -p(-1,-1))>>2 for x= 0 .. N-1 (6)
또는 방향성 예측 모드 중 예측 모드 인덱스가 2 또는 34 인 경우에는 다음 그림 5와 같이 주변 샘플과 방향성 인트라 예측 모드에 기반한 인트라 예측을 수행한 후 얻은 현재 예측 샘플을 현재 예측 샘플과 좌하단에 위치한 적어도 하나의 예측/복원 샘플에 기반한 필터링을 통해 최종 예측 샘플을 얻을 수 있다. 여기서, 좌하단 예측/복원 샘플은 현재 예측 샘플이 속한 라인의 이전 라인에 속한 것일 수 있고, 이는 현재 샘플과 동일한 블록에 속한 것일 수도 있고, 현재 블록에 인접한 이웃 블록에 속한 것일 수도 있다.Alternatively, if the prediction mode index of the directional prediction mode is 2 or 34, the current prediction sample obtained after performing intra prediction based on the surrounding samples and the directional intra prediction mode as shown in Figure 5 below is divided into the current prediction sample and at least one located in the lower left corner. The final predicted sample can be obtained through filtering based on the predicted/restored sample. Here, the lower left prediction/reconstruction sample may belong to the line preceding the line to which the current prediction sample belongs, may belong to the same block as the current sample, or may belong to a neighboring block adjacent to the current block.
필터링을 하는 샘플은 블록 경계에 위치한 라인에서만 수행할 수도 있고, 그림과 같이 여러 개의 라인에서 수행할 수도 있다. 각 라인마다 서로 다른 필터 계수를 사용할 수도 있다. 예를 들어 블록 경계와 가장 가까운 왼쪽 첫번째 라인의 경우 (1/2,1/2) 필터를 사용할 수 있고, 두번째 라인의 경우 (12/16, 4/16) 필터를 사용할 수 있고, 세번째 라인의 경우 (14/16, 2/16) 필터를 사용하며, 네번째 라인의 경우 (15/16, 1/16) 필터를 사용할 수도 있다. Sample filtering can be performed only on the line located at the block boundary, or it can be performed on multiple lines as shown in the figure. Different filter coefficients can be used for each line. For example, for the first line on the left closest to the block boundary, you can use the (1/2,1/2) filter, for the second line, you can use the (12/16, 4/16) filter, and for the third line, you can use the (1/2,1/2) filter. In this case, the (14/16, 2/16) filter is used, and in the case of the fourth line, the (15/16, 1/16) filter can also be used.
그림 5 예측 샘플 Figure 5 Prediction sample 필터링filtering 방법 method
또는 방향성 예측 모드 중 예측 모드 인덱스가 3에서 6사이 또는 30 내지 33 사이의 값일 경우에는 그림 6처럼 블록 경계에서만 필터링을 수행할 수 있으며, 3 tap 필터링을 사용하여 예측 샘플을 생성할 수 있다. 현재 샘플의 좌하단 샘플 및 좌하단 샘플의 하단 샘플, 그리고 현재 샘플을 3-tap 필터를 사용하여 필터링을 수행하여 최종 예측 샘플을 생성할 수 있다. 필터링에 이용되는 이웃 샘플 또는 참조 샘플의 위치는 예측 모드마다 서로 다르게 적용할 수 있다. Alternatively, if the prediction mode index during directional prediction mode is a value between 3 and 6 or between 30 and 33, filtering can be performed only at the block boundary as shown in Figure 6, and prediction samples can be generated using 3 tap filtering. The final prediction sample can be generated by filtering the lower left sample of the current sample, the lower left sample of the lower left sample, and the current sample using a 3-tap filter. The positions of neighboring samples or reference samples used for filtering may be applied differently for each prediction mode.
인트라 예측 모드에 따라 3-tap필터의 필터 계수를 다르게 적용할 수도 있다.Depending on the intra prediction mode, the filter coefficients of the 3-tap filter may be applied differently.
그림 6 예측 샘플 Figure 6 Prediction sample 필터링filtering 방법 method
주변 블록이 inter 모드인지 intra 모드인지에 따라 서로 다른 필터링을 적용할 수 있다. 예를 들어, 주변 블록이 intra 모드로 부호화 된 경우에는 inter 모드로 부호화 된 경우보다 현재 픽셀에 가중치를 더 주는 필터링 방법을 사용할 수 있다. 예를 들어, 인트라 예측 모드가 34번인 경우 블록 경계에 있는 첫번째 라인에서 주변 블록이 인터 예측 모드로 부호화 된 경우에는 (1/2,1/2) 필터를 사용하고, 주변 블록이 인트라 예측 모드로 부호화 된 경우에는 (4/16, 12/16) 필터를 사용하여 부호화 할 수도 있다. Different filtering can be applied depending on whether the surrounding block is in inter mode or intra mode. For example, if the surrounding block is encoded in intra mode, a filtering method that gives more weight to the current pixel can be used than if it is encoded in inter mode. For example, if the intra prediction mode is 34 and the neighboring blocks are encoded in inter prediction mode on the first line at the block boundary, the (1/2,1/2) filter is used, and the neighboring blocks are encoded in intra prediction mode. If encoded, it can also be encoded using a (4/16, 12/16) filter.
예측 유닛 또는 코딩 유닛의 크기에 따라 예측 샘플 필터링을 수행하는 라인의 수를 다르게 적용할 수도 있다. 예를 들어, 그림 7의 좌측 그림처럼 PU 크기가 32x32보다 작거나 같은 경우에는 블록 경계에 있는 하나의 라인만 필터링을 수행하고, 그림 7의 우측 그림처럼 PU 크기가 32x32 보다 큰 경우에는 블록 경계에 있는 복수의 라인에 필터링을 수행할 수도 있다. The number of lines performing prediction sample filtering may be applied differently depending on the size of the prediction unit or coding unit. For example, if the PU size is less than or equal to 32x32 as shown in the left image of Figure 7, filtering is performed on only one line at the block boundary, and if the PU size is larger than 32x32 as shown in the right image of Figure 7, filtering is performed on the block boundary. Filtering can also be performed on multiple lines.
그림 7 PU 크기에 기초한 Figure 7 Based on PU size 필터링filtering 영역 area
2. 2. 인트라Intra 블록 카피 block copy
이미 복원된 화면 내 영상에서 현재 블록과 유사한 블록(이하, 참조 블록이라 함)영상을 예측 영상으로 사용할 수도 있다. 이러한 방법을 인트라 블록 카피(intra block copy, IBC)라고 부른다. 인트라 블록 카피에서는 참조 블록의 위치를 특정하기 위해서 현재 블록에서 참조 블록의 위치 차이를 모션 벡터처럼 벡터로 표현할 수 있고, 이를 블록 벡터 (block vector)라고 부른다. 그림 8은 인트라 블록 카피 방법을 나타내고 있다. 블록 벡터는 예측 부호화를 통해 예측 블록 벡터를 생성하고, 블록 벡터와 예측 블록 벡터 간의 차분 벡터만을 부호화할 수도 있고, 예측 부호화 없이 현재 블록의 블록 벡터를 부호화할 수도 있다. 여기서, 예측 블록 벡터는 현재 블록에 인접한 이웃 블록의 블록 벡터로부터 유도될 수 있다. 또는, 현재 블록이 포함된 LCU 내의 블록 벡터로부터 유도될 수도 있고, 현재 블록이 포함된 LCU 열(row) 내의 블록 벡터로부터 유도될 수도 있다.An image of a block (hereinafter referred to as a reference block) similar to the current block in the already restored image in the screen may be used as a prediction image. This method is called intra block copy (IBC). In intra block copy, in order to specify the position of the reference block, the difference in position of the reference block from the current block can be expressed as a vector like a motion vector, and this is called a block vector. Figure 8 shows the intra block copy method. A prediction block vector may be generated through prediction encoding, and only the difference vector between the block vector and the prediction block vector may be encoded, or the block vector of the current block may be encoded without prediction encoding. Here, the prediction block vector may be derived from the block vector of a neighboring block adjacent to the current block. Alternatively, it may be derived from a block vector in an LCU containing the current block, or may be derived from a block vector in an LCU row containing the current block.
특히 영상에 한글 또는 알파벳 등과 같은 문자가 많이 포함되어 있는 경우에, 이전 블록에서 현재 블록에서 부호화하려는 문자를 포함하고 있으면, 인트라 블록 카피를 사용하여 부호화 성능을 향상시킬 수 있다.In particular, when the image contains many characters such as the Korean alphabet or the alphabet, if the previous block contains characters to be encoded in the current block, intra block copy can be used to improve encoding performance.
그림 8 Figure 8 인트라Intra 블록 카피 block copy
3. 주변 샘플을 이용한 가중 예측 방법 3. Weighted prediction method using surrounding samples
현재 블록과 이전 프레임의 대응 블록이 유사함에도 불구하고, 이전 프레임과 현재 프레임의 밝기의 변화가 발생하여 인트라 예측 또는 인터 예측으로 부호화되지 않거나, 인트라 예측 또는 인터 예측으로 부호화된 예측 영상의 화질이 상대적으로 낮은 경우가 발생할 수 있다. 프레임 전체에서 밝기 변화가 발생한 경우에는 다음 식 (7)처럼 인트라 예측 또는 인터 예측으로 부호화/복호화된 영상 P 에 가중치 w 와오프셋 f 을 더하여 가중된 영상 P'을 얻을 수 있다. 여기서, 가중치 w와 오프셋 f는 인트라 예측 또는 인터 예측을 통해 생성된 예측 샘플에 적용될 수도 있고, 최종 복원 샘플에 적용될 수도 있다.Even though the corresponding blocks of the current block and the previous frame are similar, changes in the brightness of the previous frame and the current frame occur, so that they are not encoded with intra prediction or inter prediction, or the image quality of the predicted image encoded with intra prediction or inter prediction is relative. Low cases may occur. If a brightness change occurs throughout the frame, a weighted image P' can be obtained by adding a weight w and an offset f to the image P encoded/decoded by intra-prediction or inter-prediction as shown in equation (7) below. Here, the weight w and offset f may be applied to the prediction sample generated through intra-prediction or inter-prediction, or may be applied to the final reconstructed sample.
P'=w x P + f (7)P'=w x P + f (7)
가중치 w 또는 오프셋 f 중 적어도 하나는 sequence header 또는 슬라이스 헤더에서 시그날링될 수도 있다. At least one of weight w or offset f may be signaled in the sequence header or slice header.
슬라이스 또는 시퀀스 전체가 이전 슬라이스 또는 시퀀스와 비교해서 조명 변화가 발생하기도 하지만, 슬라이스 또는 시퀀스의 일부 영역에서만 이전 슬라이스 또는 시퀀스와 비교해서 조명 변화가 나타나기도 한다. 이런 경우에 부호화 단계에서 블록 별(예를 들어, 코딩 유닛 또는 예측 유닛과 같은 블록)로 가중치 w 또는 오프셋 f 중 적어도 하나를 시그날링할 수 있다. 가중치 w 또는 오프셋 f 중 적어도 하나는 블록의 부호화 모드와 관계없이 시그날링될 수도 있고, 블록의 부호화 모드를 고려하여 선택적으로 시그날링될 수도 있다. 예를 들어, 블록의 부호화 모드가 인터 모드인 경우, 가중치 w 또는 오프셋 f을 시그날링하고, 그렇지 않은 경우에는 시그날링하지 않을 수 있다. 여기서, 인터 모드는 스킵 모드, 머지 모드 또는 인트라 블록 카피 모드 중 적어도 하나를 포함할 수 있다. 다만, 인트라 블록 카피는 인터 모드에 포함되는 것으로 한정되지 아니하며, 인트라 모드로 분류될 수도 있다.An entire slice or sequence may experience changes in lighting compared to the previous slice or sequence, or only some areas of a slice or sequence may experience changes in lighting compared to the previous slice or sequence. In this case, at least one of the weight w or the offset f may be signaled for each block (e.g., a block such as a coding unit or prediction unit) in the encoding step. At least one of the weight w or the offset f may be signaled regardless of the coding mode of the block, or may be selectively signaled in consideration of the coding mode of the block. For example, if the coding mode of the block is inter mode, the weight w or offset f may be signaled, and otherwise, it may not be signaled. Here, the inter mode may include at least one of skip mode, merge mode, or intra block copy mode. However, intra block copy is not limited to being included in inter mode and may be classified as intra mode.
현재 블록에 이웃한 특정 형태의 제1 템플릿과 이에 대응하는 이전 블록에 이웃한 제2 템플릿 사이의 조명 변화를 이용해서 가중치를 유도할 수도 있다. 상기 제2 템플릿에 비가용 샘플이 포함될 수 있으며, 이 경우 비가용 샘플의 위치에 가용 샘플을 복사하여 이용할 수도 있고, 복수의 가용 샘플 간의 보간을 통해 가용 샘플을 유도하여 이용할 수도 있다. 이때 이용되는 가용 샘플은 제2 템플릿에 속한 것일 수도 있고, 이웃 블록에 속한 것일 수도 있다. 보간에 이용되는 필터의 계수, 형태 또는 탭수 중 적어도 하나는 템플릿의 크기 및/또는 형태에 기반하여 가변적으로 결정될수있다.Weights can also be derived using lighting changes between a specific type of first template adjacent to the current block and a second template adjacent to the corresponding previous block. The second template may include an unavailable sample. In this case, the available sample can be copied and used in the position of the unavailable sample, or the available sample can be derived and used through interpolation between a plurality of available samples. The available sample used at this time may belong to the second template or a neighboring block. At least one of the coefficients, shape, or number of taps of the filter used for interpolation may be variably determined based on the size and/or shape of the template.
예를 들어, 현재 블록의 이웃 샘플을 yi (i는 0 부터 N-1)과 참조 블록의 이웃 샘플을xi( i 는 0 부터 N-1)라고 할 때,가중치 w와 오프셋 f는 다음과 같이 유도될 수 있다. For example, if the neighboring sample of the current block is y i (i is 0 to N-1) and the neighboring sample of the reference block is x i (i is 0 to N-1), the weight w and offset f are as follows. It can be derived as follows.
현재 블록에 이웃한 특정 형태의 템플릿을 이용하여 가중치 w와 오프셋 f는 다음 식 (8)의 E(w,f)의 최소값을 구하여 유도할 수 있다. Using a specific type of template adjacent to the current block, the weight w and offset f can be derived by obtaining the minimum value of E(w,f) in the following equation (8).
(8) (8)
식 (8)의 최소값을 구하는 방법은 식 (9)와 같이 변형될 수 있다. The method of finding the minimum value of equation (8) can be modified as equation (9).
(9) (9)
식 (9)로부터 가중치 w를 유도하는 식 (10)과 오프셋 f를 유도하는 식 (11)을 얻을 수 있다.From equation (9), equation (10) deriving the weight w and equation (11) deriving the offset f can be obtained.
(10) (10)
(11) (11)
4. 4. 템플릿template 구성 방법 How to configure
그림 9는 현재 블록의 이웃 샘플로 구성된 템플릿을 구성하는 일 실시예 이다. Figure 9 is an example of configuring a template consisting of neighboring samples of the current block.
그림9 Figure 9 템플릿template 일 Day 실시예Example
그림 9의 좌측 그림처럼 현재 CU와 인접한 모든 이웃 샘플을 템플릿으로 구성할 수도 있고, 중앙 그림처럼 현재 CU와 인접한 모든 이웃 샘플 중에서 sub-sampling된 일부 샘플로 템플릿을 구성할 수 있다. 중앙 그림은 1/2 sub-sampling한 예시로서 회색 부분 샘플로만 템플릿을 구성할 수 있다. 1/2 sub-sampling 대신에 1/4 sub-sampling, 1/8 sub-sampling을 이용하여 템플릿을 구성할 수도 있다. 그림 9의 우측 그림처럼 현재 CU와 인접한 모든 이웃 샘플에서 좌상단에 위치한 샘플을 제외하고 템플릿을 구성할 수도 있다. 그림 8에 도시되어 있지는 아니하나, 픽쳐 또는 코딩 트리 블록(Largest Coding Unit) 내 현재 CU의 위치를 고려하여 좌측에 위치한 샘플만으로 구성된 템플릿을 이용하거나, 상단에 위치한 샘플만으로 구성된 템플릿을 이용할 수도 있다.As shown in the left picture of Figure 9, all neighboring samples adjacent to the current CU can be configured as a template, or, as shown in the central picture, the template can be configured with some samples sub-sampled from all neighboring samples adjacent to the current CU. The central figure is an example of 1/2 sub-sampling, and the template can be constructed only from the gray portion of the sample. Instead of 1/2 sub-sampling, the template can be configured using 1/4 sub-sampling or 1/8 sub-sampling. As shown on the right side of Figure 9, a template can be constructed by excluding the sample located in the upper left corner from all neighboring samples adjacent to the current CU. Although not shown in Figure 8, considering the location of the current CU in the picture or coding tree block (Largest Coding Unit), a template consisting of only samples located on the left can be used, or a template consisting of only samples located at the top can be used.
또는 그림 10처럼 인접한 이웃 샘플의 개수를 확장하여 템플릿을 구성할 수도 있다. 그림 9의 템플릿은 예측 유닛 또는 코딩 유닛의 경계와 인접한 이웃 샘플만 사용하였지만, 그림 10의 일 실시예와 같이 코딩 유닛 경계와 인접한 이웃 샘플과 그와 인접한 이웃 샘플들로 구성할 수도 있다. Alternatively, the template can be constructed by expanding the number of adjacent neighboring samples, as shown in Figure 10. Although the template in Figure 9 uses only neighboring samples adjacent to the boundary of a prediction unit or coding unit, it can also be composed of a neighboring sample adjacent to the coding unit boundary and adjacent neighboring samples, as shown in one embodiment of Figure 10.
그림 10 Figure 10 템플릿template 일 Day 실시예Example
그림 10의 좌측 그림처럼 예측 유닛 또는 코딩 유닛 경계로부터 인접한 2개 라인에 속하는 이웃 샘플 모두를 템플릿으로 사용할 수도 있고, 가운데 그림처럼 좌측 그림의 템플릿에서 sub-sampling하여 템플릿을 구성할 수 있다. 그림 10의 우측 그림처럼 좌측 그림에 나타난 템플릿에서 좌상단에 속하는 4개의 샘플을 제외하고 템플릿을 구성할 수도 있다. 그림 10에 도시되어 있지는 아니하나, 픽쳐 또는 코딩 트리 블록(Largest Coding Unit) 내 현재 CU의 위치를 고려하여 좌측에 위치한 샘플만으로 구성된 템플릿을 이용하거나, 상단에 위치한 샘플만으로 구성된 템플릿을 이용할 수도 있다.As shown in the left image of Figure 10, all neighboring samples belonging to two adjacent lines from the boundary of the prediction unit or coding unit can be used as a template, or a template can be constructed by sub-sampling from the template in the left image as shown in the middle image. As shown in the right picture of Figure 10, a template can be constructed by excluding the four samples in the upper left corner from the template shown in the left picture. Although not shown in Figure 10, considering the location of the current CU in the picture or coding tree block (Largest Coding Unit), a template consisting of only samples located on the left may be used, or a template consisting of only samples located at the top may be used.
예측 유닛 또는 코딩 유닛의 크기 또는 형태(정방형 인지, 정방형이 아닌지 또는asymmetric 예측 유닛 파티션인지)에 따라 서로 다른 템플릿을 구성할 수도 있다.Different templates can be configured depending on the size or shape of the prediction unit or coding unit (square, non-square, or asymmetric prediction unit partition).
예를 들어 그림 11처럼 코딩 유닛의 크기에 따라 템플릿의 sub-sampling rate을 다르게 적용할 수도 있다. 예를 들어, 크기가 64x64 보다 작거나 같은 CU에서는 그림 11의 좌측 그림처럼 1/2 sub-sampling한 템플릿을 구성하고, 크기가 128x128 보다 크거나 같은 CU에서는 그림 11의 우측 그림처럼 1/4 sub-sampling한 템플릿을 구성할 수 있다. For example, as shown in Figure 11, the sub-sampling rate of the template can be applied differently depending on the size of the coding unit. For example, in CUs whose size is less than or equal to 64x64, a 1/2 sub-sampling template is configured as shown in the left image of Figure 11, and in CUs whose size is larger than or equal to 128x128, a 1/4 sub-sampled template is constructed as shown in the right image of Figure 11. -You can configure a sampling template.
그림11 CU 크기에 기초한 Figure 11 Based on CU size 템플릿template 선택 방법 How to choose
또 다른 일 실시예로서 그림 12처럼 CU의 크기에 따라 인접한 이웃 샘플의 개수를 확장한 템플릿을 사용할 수도 있다. As another embodiment, a template that expands the number of adjacent neighboring samples according to the size of the CU can be used, as shown in Figure 12.
그림12 CU 크기에 기초한 Figure 12 Based on CU size 템플릿template 선택 방법 How to choose
시퀀스 또는 슬라이스에서 사용 가능한 복수의 템플릿 후보자를 결정하고, 이 중 어느 하나를 선택적으로 이용할 수도 있다. 상기 복수의 템플릿 후보자는 서로 상이한 형태 및/또는 크기를 템플릿으로 구성될 수 있다. 템플릿의 모양이나 형태 및/또는 크기를 시퀀스 헤더 또는 슬라이스 헤더에서 시그날링할 수도 있다. 부호화기 또는 복호화기에서는 템플릿 후보자마다 index 값을 할당할 수 있다. 그리고, 복수의 템플릿 후보자 중에서 현재 시퀀스, 픽쳐 또는 슬라이스에서 사용되는 템플릿 후보자를 식별하기 위해 신택스 type_weight_pred_template_idx를 부호화 할 수 있다.복호화기는 신택스 type_weight_pred_template_idx에 기반하여 템플릿 후보자를 선택적으로 이용할 수 있다.A plurality of template candidates available in a sequence or slice can be determined, and any one of them can be selectively used. The plurality of template candidates may be configured as templates of different shapes and/or sizes. The shape, form, and/or size of the template may be signaled in the sequence header or slice header. In the encoder or decoder, an index value can be assigned to each template candidate. Additionally, the syntax type_weight_pred_template_idx can be encoded to identify the template candidate used in the current sequence, picture, or slice among a plurality of template candidates. The decoder can selectively use the template candidate based on the syntax type_weight_pred_template_idx.
예를 들어, 그림 13과 같이, 그림 9의 가운데 그림에 나타난 템플릿을 0으로 할당하고, 그림 9의 우측 그림에 나타난 템플릿을 1로 할당하고, 그림 10의 가운데 그림에 나타난 템플릿을 2로 할당하고, 그림 10의 우측에 나타난 템플릿을 3으로 할당할 수 있으며, 그 중에서 시퀀스에서 사용한 템플릿을 시그날링 할 수 있다. For example, as shown in Figure 13, the template shown in the middle picture of Figure 9 is assigned to 0, the template shown in the right picture of Figure 9 is assigned to 1, the template shown in the middle picture of Figure 10 is assigned to 2, and , the template shown on the right side of Figure 10 can be assigned to 3, and among them, the template used in the sequence can be signaled.
그림13 Figure 13 템플릿template
5. 5. 비정방형non-square 블록에서 in the block 템플릿template 구성 방법 How to configure
코딩 유닛이 비정방형 블록의 형태이거나 비정방형 블록을 허용하는 예측 유닛을 이용하여 가중 예측을 수행하는 경우 템플릿의 총 개수가 2^N이 될수 있도록, 길이가 긴 쪽과 짧은 쪽의 sub-sampling rate를 다르게 적용하여 템플릿을 구성할 수도 있다. 예를 들어, 그림 14처럼 길이가 짧은 쪽에서는 1/2 sub-sampling을 길이가 긴 쪽에서는 1/4 sub-sampling을 수행하여 템플릿을 구성할 수 있다. If the coding unit is in the form of a non-square block or weighted prediction is performed using a prediction unit that allows non-square blocks, the sub-sampling rate on the long and short sides so that the total number of templates can be 2^N. You can also configure the template by applying it differently. For example, as shown in Figure 14, a template can be constructed by performing 1/2 sub-sampling on the short side and 1/4 sub-sampling on the long side.
그림 14 비 정방형 블록의 Figure 14 Non-square block 템플릿template 일 Day 실시예Example
6. 서브 블록(Sub-block) 단위 6. Sub-block unit 인트라Intra 예측 신호 생성 방법 How to generate a prediction signal
방향성 인트라 예측 방법을 사용하여 인트라 예측 신호 생성을 하여도 현재 블록의 주변 픽셀만을 이용하여 예측 신호를 생성하기 때문에 예측 영상이 원본 영상의 특징을 반영하지 못하는 경우가 발생하고, 이 경우 잔차 신호(레지듀얼)의 값이 상대적으로 커져서, 부호화 할 때 비트양이 많아지는 단점이 발생할 수 있다. Even if an intra prediction signal is generated using the directional intra prediction method, since the prediction signal is generated using only the surrounding pixels of the current block, there are cases where the prediction image does not reflect the characteristics of the original image, and in this case, the residual signal (register As the value of (Dual) becomes relatively large, the disadvantage of increasing the amount of bits during encoding may occur.
예를 들어, 예측 유닛 내에 엣지(edge)가 존재하거나 현재 블록의 경계 주변에는 없었던 객체가 나타나는 경우에는 방향성 인트라 예측 영상과 원본 영상 사이의 차이가 현재 블록 내 위치에 따라 상대적으로 커지는 부분이 존재한다. 이 경우에는 고주파 성분이 많은 레지듀얼이 발생을 하기 때문에 부호화 효율이 나빠지게 된다 For example, when an edge exists within a prediction unit or an object that was not present appears around the boundary of the current block, there is a part where the difference between the directional intra prediction image and the original image becomes relatively larger depending on the position within the current block. . In this case, coding efficiency deteriorates because residuals with many high-frequency components are generated.
특히 블록의 경계에서 상대적으로 멀리 떨어진 영역의 잔차 신호는 고주파 성분을 많이 포함하게 된다. 상대적으로 블록 경계에서 멀리 떨어진 영역의 예측 신호의 화질을 향상시키기 위해서 서브 블록 단위에 기초하여 예측 신호를 업데이트 하는 방법을 사용할 수도 있다. In particular, the residual signal in an area relatively far from the boundary of the block contains a lot of high-frequency components. In order to improve the image quality of the prediction signal in an area relatively distant from the block boundary, a method of updating the prediction signal on a sub-block basis may be used.
예를 들어, 방향성 인트라 예측이나 인트라 블록 카피를 수행하여 생성한 제1 예측 신호에 서브 블록 별로 소정의 오프셋을 적용하여 제2 예측 신호를 얻을 수 있다. 만일, 현재 블록(예를 들어, 코딩 블록)이 복수의 서브 블록 단위로 분할되어 부호화된 경우, 각 서브 블록에 대해서 소정의 오프셋을 선택적으로 적용할 수도 있다. 이를 위해 각 서브 블록 별로 소정의 오프셋이 적용되는지 여부를 시그날링할 수도 있고, 또는 현재 블록 내에서 해당 서브 블록의 위치에 따라 오프셋의 적용 여부가 결정될 수도 있다. 그림 15와 같이 블록 경계와 가까운 서브 블록에서는 제1 예측 신호를 최종 예측 신호로 사용하고, 블록 경계와 먼 서브 블록에서는 제1 예측 신호에 소정의 오프셋을 적용하여 제2 예측 신호를 생성하고, 이를 최종 예측 신호로 사용할 수 있다. 이때 제2 예측 신호는 제1 예측 신호에 소정의 오프셋을 가산하거나, 또는 감산하여 유도될 수 있다.For example, a second prediction signal can be obtained by applying a predetermined offset to each sub-block to the first prediction signal generated by performing directional intra prediction or intra block copy. If the current block (eg, coding block) is divided into multiple sub-blocks and encoded, a predetermined offset may be selectively applied to each sub-block. To this end, whether a predetermined offset is applied to each subblock may be signaled, or whether the offset may be applied may be determined depending on the location of the corresponding subblock within the current block. As shown in Figure 15, in subblocks close to the block boundary, the first prediction signal is used as the final prediction signal, and in subblocks far from the block boundary, a predetermined offset is applied to the first prediction signal to generate the second prediction signal, which is It can be used as the final prediction signal. At this time, the second prediction signal may be derived by adding or subtracting a predetermined offset from the first prediction signal.
그림 15 서브 블록 단위 Figure 15 Sub-block unit 인트라Intra 예측 신호 생성 Predictive signal generation 방법 일way to work 실시 예 Example
또 다른 예를 들어, 그림 16와 같이 제1 예측 신호에 서브 블록 단위로 서로 다른 오프셋을 적용하여 제2 예측 신호를 생성 할 수도 있다. For another example, a second prediction signal may be generated by applying different offsets to the first prediction signal on a sub-block basis, as shown in Figure 16.
그림 16 서브 블록 단위 Figure 16 Sub-block unit 인트라Intra 예측 신호 생성 Predictive signal generation 패턴 일pattern work 실시 예 Example
예측 유닛 또는 코딩 유닛 별로 서브 블록 단위 인트라 예측 신호 생성 방법을 적용할 지 여부를 나타내는 신택스 is_sub_block_refinement_flag을 시그날링 할 수 있으며, is_sub_block_refiement_flag의 값이 1이면 서브 블록 단위 인트라 예측 신호 생성 방법을 적용 할 수 있다. The syntax is_sub_block_refinement_flag, which indicates whether to apply the sub-block unit intra prediction signal generation method for each prediction unit or coding unit, can be signaled. If the value of is_sub_block_refinement_flag is 1, the sub-block unit intra prediction signal generation method can be applied.
서브 블록 단위 인트라 예측 신호 생성 방법을 사용하는 경우, 어떤 패턴의 서브 블록 인트라 예측 신호 생성 방법을 사용할 지를 시그날링 할 수 있다. 디코더에서는 기 정의된 패턴에 따라 서브 블록 단위로 적어도 하나의 서브 블록의 제1 예측 신호에 오프셋을 적용하여 제2 예측 신호를 생성할 수 있다. 구체적으로 예를 들어, 인덱스 0를 사용하는 경우에는 그림 15의 첫번째 그림처럼 상측 서브 블록은 제1 예측 신호를 그대로 사용하고 하측 서브 블록에서는 제1 예측 신호에 소정의 오프셋 f를 적용하여 제2 예측 신호를 생성할 수 있다. 또는 그림 16의 첫번째 그림처럼 상측 서브 블록은 제 1 예측 신호에 소정의 오프셋 h를 적용하여 제2 예측 신호를 생성할 수 있고, 하측 서브 블록은 제1 예측 신호에 소정의 오프셋 f를 적용하여 제2 예측 신호를 생성할 수 있다. When using the sub-block unit intra prediction signal generation method, it is possible to signal which pattern of sub-block intra prediction signal generation method to use. The decoder may generate a second prediction signal by applying an offset to the first prediction signal of at least one sub-block on a sub-block basis according to a predefined pattern. Specifically, for example, when using index 0, as shown in the first picture of Figure 15, the upper sub-block uses the first prediction signal as is, and the lower sub-block applies a predetermined offset f to the first prediction signal to perform second prediction. A signal can be generated. Alternatively, as shown in the first picture of Figure 16, the upper sub-block can generate the second prediction signal by applying a predetermined offset h to the first prediction signal, and the lower sub-block can generate the second prediction signal by applying a predetermined offset f to the first prediction signal. 2 A prediction signal can be generated.
또는 제 1 예측 신호를 생성하기 위해 사용한 인트라 예측 모드에 기초하여 서브 블록 단위 예측 신호 생성을 위해 특정 패턴을 선택적으로 사용할 수도 있다. 예를 들어, 수평 방향 인트라 예측 모드 또는 수평 방향 인트라 예측 모드와 유사한 방향성을 갖는 인트라 예측 모드(예를 들어, 인트라 예측 모드 인덱스가 6 내지 14)인 경우 그림 16의 index2 또는 index3를 사용할 수 있고, 수직 방향 인트라 예측 모드 또는 수평 방향 인트라 예측 모드와 유사한 방향성을 갖는 인트라 예측 모드(예를 들어, 인트라 예측 모드 인덱스가 6 내지 14인 경우)인 경우 그림 16의 index0 또는 index1을 사용할 수 있다. Alternatively, a specific pattern may be selectively used to generate a sub-block unit prediction signal based on the intra prediction mode used to generate the first prediction signal. For example, if it is a horizontal intra prediction mode or an intra prediction mode with a direction similar to the horizontal direction intra prediction mode (e.g., the intra prediction mode index is 6 to 14), index2 or index3 in Figure 16 can be used, In the case of an intra prediction mode with a directionality similar to the vertical intra prediction mode or the horizontal intra prediction mode (for example, when the intra prediction mode index is 6 to 14), index0 or index1 in Figure 16 can be used.
다음 그림 17과 같이 인트라 예측 유닛 또는 코딩 유닛 내 서브 블록들이 서로 다른 크기로 구성되거나, 인트라 블록을 3개의 서브 블록으로 구성하여 제2 예측 신호를 생성할 수도 있다. As shown in Figure 17 below, subblocks within an intra prediction unit or coding unit may be composed of different sizes, or an intra block may be composed of three subblocks to generate a second prediction signal.
그림 15 내지 그림 17의 서브 블록 단위 인트라 예측 패턴을 몇 개의 카테고리로 그룹핑 한 후 그 카테고리 식별 정보와 해당 카테고리에 속한 패턴을 가리키는 인덱스를 시그날링할 수도 있다. 예를 들어, 그림 17의 인덱스 0 내지 인덱스 3을 카테고리 1으로 설정하고, 그림 17의 인덱스 4 내지 인덱스 7을 카테고리 2로 설정하고, 인덱스 8 내지 인덱스 12를 카테고리 3으로 설정할 수도 있다. 이 중에서 어떤 카테고리를 사용할지를 시그날링 한 후, 인트라 예측 유닛 또는 코딩 유닛 내에서 사용한 패턴의 인덱스를 시그날링할 수도 있다. 또는, 별도의 카테고리 그룹핑 없이, 패턴을 특정하는 인덱스만을 시그날링할 수도 있고, 예측 유닛 또는 코딩 유닛의 파티션 모드로부터 패턴을 유도할 수도 있다. 기-정의된 패턴을 특정하는 인덱스를 시그날링할지 아니면 파티션 모드로부터 유도할지를 픽쳐, 슬라이스 또는 블록 레벨에서 결정할 수 있으며, 이를 위한 별도의 플래그가 시그날링될 수도 있다.After grouping the sub-block unit intra prediction patterns in Figures 15 to 17 into several categories, the category identification information and the index indicating the pattern belonging to the category can be signaled. For example, index 0 to index 3 in Figure 17 may be set to category 1, index 4 to index 7 in Figure 17 may be set to category 2, and index 8 to index 12 may be set to category 3. After signaling which category to use among these, the index of the pattern used within the intra prediction unit or coding unit may be signaled. Alternatively, only the index that specifies the pattern may be signaled without separate category grouping, or the pattern may be derived from the partition mode of the prediction unit or coding unit. Whether to signal an index that specifies a pre-defined pattern or derive it from a partition mode can be determined at the picture, slice, or block level, and a separate flag for this may be signaled.
그림 17 서브 블록 단위 예측 신호 Figure 17 Subblock unit prediction signal 패턴 일pattern work 실시예Example
그림 15 내지 그림 17은 서브 블록 단위 인트라 예측 패턴의 한 실시 예에 불과하며, 당업자에게 자명한 범위 내에서 상이하게 결정될 수 있다. Figures 15 to 17 are just one example of a sub-block unit intra prediction pattern, and may be determined differently within the range obvious to those skilled in the art.
서브 블록 단위 인트라 예측 패턴의 개수는 시퀀스 또는 슬라이스 단위로 결정 될 수 있으며, 시퀀스 헤더 또는 슬라이스 헤더에 그 개수를 시그날링 할 수 있다. The number of intra prediction patterns in subblock units can be determined on a sequence or slice basis, and the number can be signaled in the sequence header or slice header.
코딩 유닛의 크기 또는 예측 유닛의 크기에 기초하여 서브 블록 단위 인트라 예측 패턴의 개수를 다르게 적용하거나 서브 블록의 개수를 다르게 적용할 수 있다. Based on the size of the coding unit or the size of the prediction unit, a different number of sub-block-level intra prediction patterns or a different number of sub-blocks can be applied.
예를 들어, CU의 크기가 64x64 이상이면, 그림 18의 패턴을 사용하여 서브 블록 단위 인트라 예측 신호를 생성하고, CU의 크기가 64x64 보다 작으면, 그림 15 내지 그림 17의 패턴을 사용하여 서브 블록 단위 인트라 예측 신호를 생성 할 수도 있다. For example, if the size of the CU is 64x64 or larger, the pattern in Figure 18 is used to generate a sub-block unit intra prediction signal, and if the CU size is smaller than 64x64, the pattern in Figure 15 to Figure 17 is used to generate the sub-block unit intra prediction signal. A unit intra prediction signal can also be generated.
그림 18 서브 블록 단위 예측 신호 Figure 18 Sub-block unit prediction signal 패턴 일pattern work 실시예Example
또 다른 예를 들어, 그림 19와 같이 서브 블록간의 크기 및/또는 형태가 서로 다른 패턴을 사용하여 서브 블록 단위 인트라 예측 신호를 생성할 수도 있다. 다음 그림 19의 패턴 중 적어도 하나를 이용하여 서브 블록 단위 인트라 예측 신호를 생성할 수도 있다. As another example, as shown in Figure 19, an intra prediction signal in sub-block units may be generated using patterns with different sizes and/or shapes between sub-blocks. A sub-block unit intra prediction signal can also be generated using at least one of the patterns shown in Figure 19 below.
그림 19 서브 블록 단위 예측 신호 Figure 19 Sub-block unit prediction signal 패턴 일pattern work 실시예Example
서브 블록 단위 별로 제 2 예측 신호 생성에 사용되는 오프셋 h 또는 f 또는 g 또는 i는 슬라이스 단위 또는 CU 단위로 시그날링 할 수도 있고, 현재 블록 주변의 이웃 샘플로부터 유도할 수도 있다. 예를 들어, 서브 블록 별 오프셋은 현재 블록 내 소정의 위치(좌측, 상단의 경계, 좌상단 코너 샘플 등)에서 현재 샘플 사이의 거리를 고려하여 유도될 수 있다. 예를 들어, 상기 오프셋은 현재 블록 내 소정의 위치와 현재 샘플 간의 거리를 나타내는 값에 비례하여 결정될 수 있다.The offset h or f or g or i used to generate the second prediction signal on a sub-block basis may be signaled on a slice basis or a CU basis, or may be derived from neighboring samples around the current block. For example, the offset for each subblock can be derived by considering the distance between the current sample at a certain location (left, top border, top left corner sample, etc.) within the current block. For example, the offset may be determined in proportion to a value representing the distance between a predetermined position in the current block and the current sample.
7. 비디오 부호화에서 7. In video coding 심볼의of symbol 컨텍스트context 확률 인덱스 초기화 방법 How to initialize probability index
변환 계수(Transform coefficients), 모션 벡터 차분 (Motion vector difference), 슬라이스 내 신택스 등의 심볼을 이진화 하여 산술 부호화(arithmetic coding)을 수행하여 비트스트림을 생성할 수 있다. 각 심볼은 주변 블록에 있는 같은 심볼의 값이나 주변 블록의 정보 또는 현재 블록 내에서의 위치 등을 고려하여 결정되는 context에 기초하여 각 symbol에 대한 확률 인덱스를 선택하고, 내부적인 심볼의 누적 통계와 부호화된 심볼의 값에 따라 확률을 재 계산하고, 산술 부호화를 사용하여 압축 성능을 향상시킬 수 있으며, HEVC에서 사용하고 있는 산술 부호화 방법을 CABAC(Context Adaptive Binary arithmetic Coding)이라고 부른다. A bitstream can be generated by binarizing symbols such as transform coefficients, motion vector difference, and intra-slice syntax and performing arithmetic coding. Each symbol selects a probability index for each symbol based on the context determined by considering the value of the same symbol in the surrounding block, information on the surrounding block, or location within the current block, and the cumulative statistics of the internal symbol Compression performance can be improved by recalculating the probability according to the value of the encoded symbol and using arithmetic coding. The arithmetic coding method used in HEVC is called CABAC (Context Adaptive Binary arithmetic Coding).
심볼을 부호화하기 위해서는 다음 과정을 수행할 수 있다.To encode a symbol, the following process can be performed.
(1) 이진화 (binarization)(1) Binarization
부호화할 대상 심볼이 바이너리 심볼(심볼의 값이 0과 1로만 구성된 심볼)이 아닌 경우(예를 들어, 변환 계수와 모션 벡터 차분)에는 대상 심볼을 바이너리 심볼로 변환한다. HEVC 에서는 unary, Truncated unary binarization(이진화) 방법 등을 사용하여 심볼을 이진화 할 수 있다. 심볼을 이진화하였을 때 매핑된 코드워드 중 0 또는 1을 갖는 비트를 bin이라고 부른다. If the target symbol to be encoded is not a binary symbol (a symbol whose symbol values consist of only 0 and 1) (for example, transform coefficient and motion vector difference), the target symbol is converted to a binary symbol. In HEVC, symbols can be binarized using unary and truncated unary binarization methods. When a symbol is binarized, the bit with 0 or 1 among the mapped codewords is called a bin.
다음 표 3은 unary binarization 방법을 나타내고 있다. Table 3 below shows the unary binarization method.
다음 표 4는 Truncated unary binarization with cMax = 6 방법을 나타내고 있다.Table 4 below shows the Truncated unary binarization with cMax = 6 method.
(2) Context model 선택 (2) Select context model
Context model은 각 심볼에 대한 확률 모델을 의미한다. Context 모델 별로 bin에서 0 또는 1이 발생할 확률이 서로 다를 수 있다. HEVC에서는 다양한 심볼에 대해 약 400개의 독립적인 context가 존재한다. Context model refers to the probability model for each symbol. The probability of 0 or 1 occurring in a bin may be different for each context model. In HEVC, there are approximately 400 independent contexts for various symbols.
슬라이스가 시작할 때 각 심볼이 가지고 있는 context 별로 context 확률 인덱스 pStateIdx를 양자화 파라미터 Qp 값 또는 슬라이스 타입(I slice, P slice 또는 B slice)에 기초하여 초기화 할 수 있다. When a slice starts, the context probability index pStateIdx for each context of each symbol can be initialized based on the quantization parameter Qp value or slice type (I slice, P slice, or B slice).
Tile(타일)을 사용할 경우 각 타일의 앞부분에서 각 심볼이 가지고 있는 context 별로 context 확률 인덱스 pStateIdx를 양자화 파라미터 Qp 값 또는 슬라이스 타입(I slice, P slice 또는 B slice)에 기초하여 초기화 할 수 있다.When using Tile, the context probability index pStateIdx for each context of each symbol at the front of each tile can be initialized based on the quantization parameter Qp value or slice type (I slice, P slice, or B slice).
(3) 산술 부호화 (Arithmetic coding) (3) Arithmetic coding
각 심볼은 context 모델 단위로 산술 부호화 과정을 수행한다. 같은 심볼이어도 서로 다른 context를 사용하는 경우에는 확률 업데이트, 비트스트림 부호화에 서로 영향을 주지 않는다. 각 symbol의 확률이 높은 경우에는 적은 비트를 사용하고 확률이 낮은 경우에는 낮은 비트를 사용하는 방법이다. 예를 들어 확률 값이 높으면 10개 보다 작은 비트로 10개의 bin을 갖는 심볼을 부호화할 수도 있다. Each symbol performs an arithmetic encoding process on a context model basis. Even if the same symbol is used in a different context, probability update and bitstream encoding do not affect each other. If the probability of each symbol is high, fewer bits are used, and if the probability of each symbol is low, lower bits are used. For example, if the probability value is high, a symbol with 10 bins may be encoded with fewer than 10 bits.
산술 부호화 방법은 부호화할 심볼을 심볼의 확률값에 기초하여 [0,1) 사이의 구간을 서브 구간으로 나눈 후, 그 서브 구간에 속하는 실수 중 가장 작은 비트로 표현 가능한 수를 선택하여 그 계수를 부호화하는 방법이다. [0.1) 사이의 구간을 서브 구간으로 나눌 때, 심볼의 확률이 크면 긴 서브 구간을 할당하고 심볼의 확률이 작으면 작은 서브 구간을 할당할 수 있다. The arithmetic coding method divides the symbol to be encoded into sub-intervals between [0, 1) based on the probability value of the symbol, then selects the number that can be expressed with the smallest bit among the real numbers belonging to the sub-interval, and encodes the coefficient. It's a method. When dividing the section between [0.1) into sub-intervals, if the symbol probability is large, a long sub-interval can be assigned, and if the symbol probability is low, a small sub-interval can be assigned.
예를 들어, 그림 20처럼 1의 발생확률 0.2, 0의 발생확률 0.8 이라 가정할 때, symbol 010을 arithmetic coding하는 절차는 다음과 같다.For example, assuming that the probability of occurrence of 1 is 0.2 and the probability of occurrence of 0 is 0.8, as shown in Figure 20, the arithmetic coding procedure for symbol 010 is as follows.
a) Symbol 010에서 첫번째 0을 부호화. 0의 발생확률이 0.8 임으로 구간 [0,1)에서 [0-0.8)으로 구간이 갱신됨a) Encode the first 0 in Symbol 010. Since the probability of occurrence of 0 is 0.8, the interval is updated from [0,1) to [0-0.8).
b)Symbol 010에서 두번째 1을 부호화. 1의 발생확률이 0.2 임으로 구간 [0-0.8)에서 [0.64-0.8)으로 구간이 갱신됨b) Encoding the second 1 in Symbol 010. Since the probability of occurrence of 1 is 0.2, the interval is updated from [0-0.8) to [0.64-0.8)
c)Symbol 010에서 세번째 0을 부호화. 0의 발생확률이 0.8 임으로 구간 [0.64-0.8) 에서 [0.64-0.768) 으로 구간이 갱신됨c) Encoding the third 0 in Symbol 010. Since the probability of occurrence of 0 is 0.8, the interval is updated from [0.64-0.8) to [0.64-0.768)
d)[0.64-0.768)에 속하는 가장 작은 실수 표현이 0.75 = (1/2)x1 +(1/2)^2 ×1 이므로, 0을 제외한 이진표현 11이 부호화 됨d) Since the smallest real number representation in [0.64-0.768) is 0.75 = (1/2)x1 +(1/2)^2 ×1, the binary expression 11 excluding 0 is encoded.
그림 20 산술 부호화 예시Figure 20 Arithmetic coding example
(4) 심볼의 확률 업데이트 (Probability update) (4) Probability update of symbols
Context에 기초하여 각 bin의 MPS(Most Probable symbol, 0과 1 중 발생 빈도가 많은 심볼)과 LPS(Least Probable Symbol, 두 이진수 0과 1 중 발생 빈도가 적은 symbol)이 Qp 값에 기초하여 초기값이 설정되어 있다. 현재 부호한 bin이 MPS인지 LPS인지에 따라 그 심볼의 MPS 발생 확률과 LPS 발생 확률 값이 변할 수 있다. Based on the context, MPS (Most Probable Symbol, the most frequently occurring symbol between 0 and 1) and LPS (Least Probable Symbol, the least frequently occurring symbol among the two binary numbers 0 and 1) of each bin are set to their initial values based on the Qp value. This is set. Depending on whether the currently encoded bin is MPS or LPS, the MPS occurrence probability and LPS occurrence probability values of that symbol may change.
예를 들어, 현재 부호화할 심볼의 bin의 이진화 값이 MPS와 같다면 이 심볼의 MPS 확률 값이 커지고 LPS 확률 값은 작아지고, LPS와 같다면 이 심볼의 MPS 확률 값이 작아지고, LPS 확률 값은 커질 수 있다. CABAC에서는 총 64개의 MPS 발생 확률과 총 64개의 LPS 발생 확률로 구성할 수 있다. 심볼의 발생 확률을 나타내는 인덱스 pStateIdx로 정의할 수 있으며, pStateIdx 값이 커질수록 MPS 발생 확률이 높아지도록 할 수 있다. For example, if the binarization value of the bin of the symbol to be currently encoded is equal to MPS, the MPS probability value of this symbol becomes larger and the LPS probability value becomes smaller, and if it is equal to LPS, the MPS probability value of this symbol becomes smaller and the LPS probability value becomes smaller. can grow. In CABAC, a total of 64 MPS occurrence probabilities and a total of 64 LPS occurrence probabilities can be configured. It can be defined as an index pStateIdx that represents the probability of occurrence of a symbol, and as the value of pStateIdx increases, the probability of MPS occurrence increases.
표 5와 같이 현재 context의 확률 값을 나타내는 context 확률 인덱스 pStateIdx에서 MPS 심볼을 부호화하면 pStateIdx는 transIdxMPS에 해당하는 인덱스로 업데이트 할 수 있다. 예를 들어, pStateIdx 값이 16일 때 MPS 심볼을 부호화하면 pStateIdx는 transIdxMPS가 가리키는 인덱스 17로 업데이트 할 수 있고, LPS 심볼을 부호화하면 pStateIdx 는 transIdxLPS가 가리키는 인덱스 13으로 업데이트 할 수 있다. pStatIdx값이 0이면서 LPS 심볼을 부호화는 경우에는 MPS와 LPS 심볼을 서로 바꾸게 된다. (pStateIdx가 0일 때 MPS 발생 확률은 0.5로 설정되어 있는데, LPS 심볼을 부호화하게 되면 MPS 보다 LPS의 빈도수가 많아지기 때문에 MPS와 LPS 심볼 값을 바꾸게 된다).As shown in Table 5, if the MPS symbol is encoded in the context probability index pStateIdx, which represents the probability value of the current context, pStateIdx can be updated to the index corresponding to transIdxMPS. For example, when the pStateIdx value is 16, if the MPS symbol is encoded, pStateIdx can be updated to index 17 indicated by transIdxMPS, and if the LPS symbol is encoded, pStateIdx can be updated to index 13 indicated by transIdxLPS. When the pStatIdx value is 0 and the LPS symbol is encoded, the MPS and LPS symbols are exchanged. (When pStateIdx is 0, the probability of MPS occurrence is set to 0.5. When the LPS symbol is encoded, the frequency of LPS becomes higher than that of MPS, so the MPS and LPS symbol values are changed.)
7.17.1 복수개의plural 컨텍스트context 확률 인덱스에 기초한 based on probability index 컨텍스트context 모델 초기화 방법 How to initialize a model
HEVC에서는 슬라이스 단위 또는 타일 단위로 각 context의 초기 context 확률 인덱스 값으로 초기화 하여 사용하고 있다. 슬라이스 초기에 이미 설정된 초기값으로 심볼을 부호화하는 경우, 실제 심볼의 확률을 제대로 반영하지 못하기 때문에 부호화 성능이 떨어질 수 있다. 하지만 슬라이스 단위로 컨텍스트 확률 인덱스를 초기화하기 때문에 이전 슬라이스 또는 프레임이 전송되지 않았더라도 현재 슬라이스를 복호화할 수 있는 장점도 존재한다. In HEVC, it is initialized and used as the initial context probability index value of each context on a slice or tile basis. If a symbol is encoded with an initial value already set at the beginning of a slice, encoding performance may deteriorate because it does not properly reflect the probability of the actual symbol. However, because the context probability index is initialized on a slice basis, there is also the advantage of being able to decode the current slice even if the previous slice or frame has not been transmitted.
이전 슬라이스를 복호화 하는 중에 어느 일정 시점(예를 들어, 스캔 순서상 중간에 위치한 블록을 부호화 할 때)에 누적된 컨텍스트 확률 인덱스 이용하여 현재 슬라이스의 context 확률 인덱스 초기값으로 사용할 수도 있다. 이전 슬라이스에서 누적된 컨텍스트 확률 값 또는 context 확률 인덱스 값은 슬라이스 헤더 등에 직접 부호화할 수도 있다. While decoding the previous slice, the context probability index accumulated at a certain point in time (for example, when encoding a block located in the middle of the scan order) can be used as the initial value of the context probability index of the current slice. The context probability value or context probability index value accumulated in the previous slice may be directly encoded in the slice header, etc.
또는 적어도 하나의 컨텍스트에 복수개의 컨텍스트 확률 인덱스를 사용하여 초기화 할수 있다. 예를 들어 임의의 컨텍스트 ctx는 슬라이스 마다 서로 다른 컨텍스트 확률 인덱스 초기 값을 가질 수 있다. 슬라이스 별로 복수개의 컨텍스트 확률 인덱스 중 어떤 확률 인덱스를 선택할 지 슬라이스 헤더에서 전송할 수 있으며, 복호화 단계에서는 슬라이스 헤더에서 전송된 컨텍스트 확률 인덱스 정보에 기초하여 복호화를 수행할 수도 있다. 슬라이스 타입에 관계없이 복수개의 컨텍스트 초기 값(InitValue) 또는 컨텍스트 확률 인덱스(pSateIdx)를 사용할 수 있다. Alternatively, at least one context can be initialized using multiple context probability indices. For example, a random context ctx may have a different context probability index initial value for each slice. Which probability index to select among a plurality of context probability indexes for each slice can be transmitted in the slice header, and in the decoding step, decoding can be performed based on the context probability index information transmitted in the slice header. Regardless of the slice type, multiple context initial values (InitValue) or context probability indices (pSateIdx) can be used.
각 심볼의 컨텍스트 마다 서로 다른 확률 인덱스를 유도하기 위한 컨텍스트 초기 값(InitValue)이 설정되어 있다. InitValue를 이용하여 변수 m, n을 유도할 수 이있고, 여기서 변수 m, n은 이전 컨텍스트 상태를 나타내는 변수 preCtxState를 유도하기 위해 이용되는 값으로 정의될 수 있다. 상기 유도되는 변수 preCtxState에 기반하여 MPS 값과 컨텍스트 확률 인덱스 초기값 pStateIdx를 유도할 수 있다. 예를 들어, 다음 식(12), (13), (14)와 같이 해당 컨텍스트의 컨텍스트 확률 인덱스 초기값 pStateIdx를 유도할 수 있다. A context initial value (InitValue) is set to derive a different probability index for each symbol's context. InitValue can be used to derive variables m and n, where variables m and n can be defined as values used to derive the variable preCtxState representing the previous context state. Based on the derived variable preCtxState, the MPS value and the initial context probability index value pStateIdx can be derived. For example, the context probability index initial value pStateIdx of the corresponding context can be derived as shown in the following equations (12), (13), and (14).
slopeIdx = initValue >> 4slopeIdx = initValue >> 4
offsetIdx = initValue & 15 (12)offsetIdx = initValue & 15 (12)
m = slopeIdx * 5 - 45 m = slopeIdx * 5 - 45
n=(offsetIdx << 3)-16 (13)n=(offsetIdx << 3)-16 (13)
preCtxState=Clip3(1,126,((m*Clip3(0,51,SliceQpY )) >> 4)+n)preCtxState=Clip3(1,126,((m*Clip3(0,51,SliceQp Y )) >> 4)+n)
valMps=(preCtxState <= 63)? 0:1valMps=(preCtxState <= 63)? 0:1
pStateIdx = valMps ?( preCtxState - 64 ) : ( 63 - preCtxState ) (14)pStateIdx = valMps ?( preCtxState - 64 ) : ( 63 - preCtxState ) (14)
InitValue는 슬라이스 타입 별로 서로 다르게 설정할 수도 있으며, 슬라이스 또는 시퀀스 헤더 또는 픽쳐 헤더 등에서 몇 개의 컨텍스트 초기화 값을 가지고 있는지를 나타내는 신택스 num_cabac_init_idx_minus1을 시그날링할 수 있다예들 들어, num_cabac_init_minus1값에 기초하여 표 6 내지 표 7 중 적어도 어느 하나를 선택적으로 사용할 수도 있다. InitValue can be set differently for each slice type, and the syntax num_cabac_init_idx_minus1, which indicates how many context initialization values are present in the slice or sequence header or picture header, can be signaled. For example, based on the num_cabac_init_minus1 value, Table 6 to Table 6 At least one of 7 may be optionally used.
슬라이스헤더에 슬라이스에서 사용한 컨텍스트 초기값(InitValue)를 특정하는 인덱스 cabac_init_idx를 시그날링할 수도 있다. cabac_init_idx, ctxIdx 또는 initValue 중 적어도 2개의 매핑 관계를 정의한 테이블에 기초하여 cabac_init_idx에 대응하는 컨텍스트 초기값(InitValue)을 결정할 수 있다. The index cabac_init_idx that specifies the context initial value (InitValue) used in the slice may be signaled in the slice header. The context initial value (InitValue) corresponding to cabac_init_idx can be determined based on a table that defines the mapping relationship of at least two of cabac_init_idx, ctxIdx, or initValue.
예를 들어, 표 6 내지 표 7과 같이 luma 성분의 transform block 내에 non-zero coefficient가 존재하는지 여부를 나타내는 신택스 cbf_luma의 컨텍스트들은 cabac_init_idx값이 다르면 서로 다른 초기 값, 즉 서로 다른 컨텍스트 확률 인덱스 pStateIdx를 가질 수도 있다.For example, as shown in Tables 6 and 7, the contexts of the syntax cbf_luma, which indicates whether a non-zero coefficient exists in the transform block of the luma component, have different initial values, that is, different context probability index pStateIdx, if the cabac_init_idx value is different. It may be possible.
복수 개의 컨텍스트 모델은 슬라이스 Qp가 같은 경우에도 복 수개의 컨텍스트 확률 인덱스 (즉, 복수 개의 pStateIdx 초기값)를 가질 수 있다. 예를 들어, 어떤 슬라이스의 슬라이스 Qp 값이 sliceQpY라고 할 때, 컨텍스트 별로 결정된 initValue로부터 컨텍스트 확률 인덱스 pStateIdx를 얻을 수 있는데, 이 때 cabac_init_idx 값에 따라 pSateIdx에 특정 오프셋을 적용하여 pStateIdx를 다시 계산하거나 컨텍스트 별로 결정된 initValue에 특정 오프셋을 적용하여 pSateIdx를 유도할 수도 있다. Multiple context models may have multiple context probability indices (i.e., multiple pStateIdx initial values) even when the slice Qp is the same. For example, when the slice Qp value of a slice is sliceQpY, the context probability index pStateIdx can be obtained from the initValue determined for each context. At this time, pStateIdx can be recalculated by applying a specific offset to pSateIdx according to the cabac_init_idx value, or per context. pSateIdx can also be derived by applying a specific offset to the determined initValue.
전체 심볼에 대해 적용하지 않고, transform coefficient나 Motion vector difference 또는 reference index 등과 같은 특정 심볼에 대해서만 복수 개의 컨텍스트 확률 인덱스를 사용할 수도 있다. 구체적으로 예를 들어, transform coefficient 또는 Motion vector difference 또는 reference index 등과 같은 특정 심볼에서는 복수개의 pStateIdx 초기 값을 가질 수 있다. Rather than applying it to all symbols, multiple context probability indices may be used only for specific symbols, such as transform coefficient, motion vector difference, or reference index. Specifically, for example, a specific symbol such as transform coefficient, motion vector difference, or reference index may have multiple pStateIdx initial values.
또는 부호화할 블록의 공간적 영역의 위치에 따라 서로 다른 컨텍스트 확률 인덱스를 사용할 수도 있다. 예를 들어, 그림 21과 같이 슬라이스의 스캔 순서에 따라 서로 다른 컨텍스트 확률 인덱스 pStateIdx를 설정할 수도 있다. 이 때 설정하는 pStateIdx값은 이전 슬라이스의 해당 영역 (collocated region)의 확률 인덱스 prevPstateIdx와 가장 값이 비슷한 값을 선택할 수도 있다. Alternatively, different context probability indices may be used depending on the location of the spatial region of the block to be encoded. For example, as shown in Figure 21, different context probability indices pStateIdx can be set depending on the scan order of the slice. At this time, the pStateIdx value set may be selected as the value most similar to the probability index prevPstateIdx of the collocated region of the previous slice.
그림 21 영역별 복수의 Figure 21 Multiple areas by area 컨텍스트context 모델 선택 방법 How to choose a model
컨텍스트 확률 인덱스를 초기화할 공간적 영역을 컨텍스트 초기화 영역이라고 부른다. 컨텍스트 초기화 영역은 직사각형 형태일 수도 있고, 임의 형태의 크기일 수도 있다. 컨텍스트 초기화 영역 또는 컨텍스트 초기화 영역을 지시하는 정보를 슬라이스 헤더 등에 시그날링할 수 있다.The spatial area in which the context probability index is to be initialized is called the context initialization area. The context initialization area may be rectangular in shape or of any size. Information indicating the context initialization area or context initialization area can be signaled in the slice header, etc.
예를 들어, 컨텍스트 초기화 영역이 직사각형 형태일 때, 컨텍스트 초기화 영역에 포함되는 CTU (Coding Tree Unit) 열의 개수를 나타내는 신택스 num_row_ctu_minus1에 기초하여 컨텍스트 확률 인덱스를 초기화할 단위를 나타낼 수 있다. 구체적으로 그림 21에서는 num_row_ctu_minus1을 1로 설정할 수 있고, 실제 2개 열의 CTU를 포함하고 있는 영역을 컨텍스트 초기화 영역으로 설정할 수 있다.For example, when the context initialization area has a rectangular shape, the unit for initializing the context probability index may be indicated based on the syntax num_row_ctu_minus1, which indicates the number of CTU (Coding Tree Unit) columns included in the context initialization area. Specifically, in Figure 21, num_row_ctu_minus1 can be set to 1, and the area containing the actual two rows of CTUs can be set as the context initialization area.
7.27.2 타일 단위 tile unit 컨텍스트context 모델 초기화 방법 How to initialize a model
HEVC에서는 슬라이스(slice)는 엔트로피 디코딩을 독립적으로 수행할 수 있는 기본 단위가 된다. 슬라이스는 여러 개의 슬라이스 세그먼트로 나뉠 수 있으며, 슬라이스 형태가 꼭 사각형(rectangular) 형태가 아니어도 된다. 슬라이스 세그먼트의 경우 여러 개의 코딩 트리 유닛(Coding Tree Unit(CTU))로 구성될 수 있다. In HEVC, a slice is the basic unit that can independently perform entropy decoding. A slice can be divided into multiple slice segments, and the slice shape does not necessarily have to be rectangular. In the case of a slice segment, it may be composed of multiple Coding Tree Units (CTU).
타일(tile)의 경우 여러 개의 CTU를 가지고 있는 사각형 형태의 영역으로, 타일 단위로 엔트로피 디코딩을 수행할 수 있으며, 구현 시에 여러 타일을 동시에 디코딩하는 병렬화가 가능한 장점이 있다. In the case of a tile, it is a square-shaped area with multiple CTUs, and entropy decoding can be performed on a tile-by-tile basis, and has the advantage of being able to parallelize decoding multiple tiles simultaneously during implementation.
그림 22처럼 타일은 여러 개의 슬라이스 세그먼트를 가질 수 있으며, 한 슬라이스 세그먼트는 같은 타일 안에 존재할 수있다. 또는, 슬라이스 안에 여러 개의 타일이 존재할 수도 있다. As shown in Figure 22, a tile can have multiple slice segments, and one slice segment can exist within the same tile. Alternatively, there may be multiple tiles within a slice.
독립적 슬라이스 세그먼트(Independent slice segment)와 종속 슬라이스 세그먼트(들)가 합쳐져서 하나의 슬라이스를 이루며, 그림 23처럼 타일 내에 여러 개의 슬라이스를 가질 수 있다. 또는 슬라이스 안에 여러 개의 타일이 존재할 수도 있다. Independent slice segments and dependent slice segment(s) are combined to form one slice, and there can be multiple slices within a tile, as shown in Figure 23. Alternatively, there may be multiple tiles within a slice.
그림 painting 22타일과22 tiles 슬라이스 sliced 세그먼트segment 예시 example
그림 23 2개 이상의 슬라이스를 갖는 타일 예시Figure 23 Example of a tile with more than 2 slices
Tile을 사용할 경우, tile 단위로 컨텍스트 모델을 초기화하게 되는데, tile의 위치에 따라 서로 다른 컨텍스트 초기값 (InitValue) 또는 서로 다른 컨텍스트 확률 인덱스 pStateIdx를 사용할 수도 있다. 즉, 같은 컨텍스트의 확률 인덱스 pStateIdx는 타일에 따라 서로 다른 값을 가질 수도 있다. 각 타일 별로 사용한 컨텍스트 초기값(InitValue)를 특정하는 인덱스 tile_cabac_init_idx를 슬라이스 세그먼트 헤더 등에 시그날링할 수도 있다. 각 타일에서 사용된 tile_cabac_init_idx로부터 특정된 initValue로부터 컨텍스트 확률 인덱스 pStateIdx를 유도할 수 있다. When using Tile, the context model is initialized on a tile basis. Depending on the position of the tile, a different context initial value (InitValue) or a different context probability index pStateIdx can be used. That is, the probability index pStateIdx of the same context may have different values depending on the tile. The index tile_cabac_init_idx, which specifies the context initial value (InitValue) used for each tile, may be signaled in the slice segment header, etc. The context probability index pStateIdx can be derived from the initValue specified from tile_cabac_init_idx used in each tile.
각 타일의 컨텍스트 별 확률 인덱스 pStateIdx는 이전 프레임의 해당 타일 (collocated tile)의 해당 컨텍스트의 InitValue 또는 context 확률 인덱스 pStateIdx에 기초하여 유도할 수도 있고, 컨텍스트 별로 정의된 복수의 InitValue 또는 복수의 pSateIdx에서 선택하여 사용할 수 있다. 컨텍스트 별로 정의된 복수의 pStateIdx에서 선택하여 사용하는 경우에는 각 타일에 사용한 pSateIdx 값 또는 컨텍스트 초기값 (InitValue)를 시그날링할 수도 있다. The context-specific probability index pStateIdx of each tile may be derived based on the context probability index pStateIdx or the InitValue of the corresponding context of the corresponding tile (collocated tile) of the previous frame, or may be derived by selecting from a plurality of InitValues or a plurality of pSateIdx defined for each context. You can use it. When selecting and using a plurality of pStateIdx defined for each context, the pSateIdx value or context initial value (InitValue) used for each tile may be signaled.
그림 24 타일에서 Figure 24 In tile 심볼symbol 확률 인덱스 초기화 방법 How to initialize probability index
8. 비디오 부호화에서 8. In video coding affineaffine motion model( motion model( 어파인Apine 모션motion 모델)을 이용한 model) using 인터Inter 예측 부호화 방법 Predictive coding method
대표적인 모션 모델로는 translation, rotation, affine motion model 등을 들수 있다. Translation motion model(이동 움직임 모델)은 그림 25-a와 같이 선형적인 이동을 나타낼 수 있으며, 물체(object)의 움직임을 2D 좌표 또는 움직임 벡터( MvX, MvY)로 표현 가능하다. 그림 25-b 처럼 물체의 움직임이 각도 변환 형태로 표현 가능한 움직임 모델을 rotation motion model(회전 움직임 모델)이라고 부른다. 그림 25-c처럼 물체의 움직임이 비 선형적으로 변하여 물체의 부분에 따라 서로 다른 translation과 rotation을 갖는 경우를 affine motion model(어파인 움직임 모델)이라고 부른다. Affine motion model은 이동, 회전, 크기 조절 등을 표현할 수 있으며 다음 식 (14)과 같이 6개의 파라미터를 이용하여 affine motion model을 표현 할 수 있다.Representative motion models include translation, rotation, and affine motion models. The translation motion model can represent linear movement as shown in Figure 25-a, and the movement of the object can be expressed as 2D coordinates or motion vectors (MvX, MvY). A motion model in which the movement of an object can be expressed in the form of angle transformation, as shown in Figure 25-b, is called a rotation motion model. As shown in Figure 25-c, when the movement of an object changes non-linearly and has different translation and rotation depending on the part of the object, it is called an affine motion model. Affine motion model can express movement, rotation, size adjustment, etc., and can be expressed using six parameters as shown in equation (14) below.
그림 25 Figure 25 모션motion 모델 예시 Model example
x'= ax + by + ex'=ax + by + e
y'= cx + dy + f (14)y'=cx+dy+f (14)
여기서 x는 현재 블록에 속하는 픽셀을 나타내고, x'은 참조 블록(참조 픽쳐의 해당 블록)에 속하는 픽셀을 나타내며, 현재 블록의 픽셀과 참조 블록의 픽셀의 차분을 식 (15)와 같이 (Vx, Vy)로 표현할 수 있다.Here, x represents a pixel belonging to the current block, x' represents a pixel belonging to a reference block (corresponding block of the reference picture), and the difference between the pixel of the current block and the pixel of the reference block is expressed as (V x , V y ).
Vx = x - x'V x = x - x'
Vy = y - y' (15)V y = y - y' (15)
식 (14)와 식 (15)를 이용하면 어파인 모션 벡터 (Vx, Vy)다음과 같이 표현할 수도 있다.Using equations (14) and (15), the affine motion vector (V x , V y ) can also be expressed as follows.
Vx = (1-a)x-by-eV x = (1-a)x-by-e
Vy = (1-d)y-cx-f (16)V y = (1-d)y-cx-f (16)
8.1 간략화된 8.1 Simplified affineaffine motion model 부호화 방법 motion model encoding method
Affine motion model이 복잡한 모션 모델을 표현할 수 있는 반면, translation motion model이나 rotation motion model에 비해 부호화해야 할 파라미터의 개수가 많아져 부호화 효율이 떨어지는 단점이 있다.While the affine motion model can express complex motion models, it has the disadvantage of lowering encoding efficiency as the number of parameters to be encoded increases compared to the translation motion model or rotation motion model.
그림 26의 왼쪽 그림처럼 블록의 좌상단, 우상단, 좌하단 코너에서의 움직임 벡터(v0, v1, v2)를 이용하여 affine motion model을 이용할 수 있다.이 경우 다음 식 (17)과 같은 어파인 모션 벡터를 생성할 수 있다.As shown in the left picture of Figure 26, an affine motion model can be used using the motion vectors (v0, v1, v2) at the upper left, upper right, and lower left corners of the block. In this case, the affine motion vector is as shown in Equation (17) below. can be created.
이를 극복하기 위해서 블록의 코너 위치에 대응하는 움직임 벡터를 이용하여 affine motion model을 모델링할 수도 있다. 여기서, 블록의 코너 위치는 좌상단 코너, 우상단 코너, 좌하단 코너 또는 우하단 코너 중 적어도 하나를 포함할 수 있다. 예를 들어, 그림 26 처럼 블록 내의 좌상단 코너와 우상단 코너에서의 움직임 벡터를 이용하여 affine motion model을 모델링할 수도 있다.To overcome this, an affine motion model can be modeled using a motion vector corresponding to the corner position of the block. Here, the corner location of the block may include at least one of the upper left corner, upper right corner, lower left corner, or lower right corner. For example, as shown in Figure 26, an affine motion model can be modeled using motion vectors at the upper left corner and upper right corner of the block.
그림 26과 같이 좌상단 움직임 벡터가 가리키는 픽셀과 우상단 움직임 벡터가 가리키는 픽셀을 하나의 선분으로 하는 직사각형 형태의 블록으로 변형된 것으로 표현할 수 있다.As shown in Figure 26, it can be expressed as a transformed rectangular block with the pixel pointed to by the upper left motion vector and the pixel pointed to by the upper right motion vector as one line segment.
(17) (17)
그림 26 Simplified Figure 26 Simplified affineaffine motion model motion model
블록의 좌상단, 우상단, 좌하단 코너 3개를 이용하여 affine motion model 대신에 블록의 좌상단과 우상단 코너에서의 움직임 벡터를 이용하여 affine motion model을 근사 시킬수 있다.Instead of using the three upper-left, upper-right, and lower-left corners of the block, an affine motion model can be approximated by using the motion vectors from the upper-left and upper-right corners of the block.
이 때 v2x = v0x + v0y - v1y, v2y = -v0x + v0y + v1x 을 이용하여 식 (17)을 식 (18)로 근사시킬 수 있다. 어파인 모션벡터 (Vx, Vy)는 다음과 같이 표현 할 수 있다. At this time, v 2x = v 0x + v 0y - v 1y , v 2y = -v 0x + v 0y + v 1x Equation (17) can be approximated as equation (18) using . The affine motion vector (V x , V y ) can be expressed as follows.
(18) (18)
블록(예측 유닛 또는 코딩 유닛)의 크기나 형태 (정방/ 비정방)에 따라 affine motion model을 유도하는 코너의 위치를 서로 다르게 설정할 수도 있다. 예를 들어, 그림 27과 같이 예측 유닛의 Nx2N인 형태인 경우에는 예측 유닛의 좌상단과 좌하단 코너를 이용하여 어파인 모션 벡터를 유도할 수 있다. 어파인 모션 벡터는 식 (18)을 이용해 유도할 수도 있다.Depending on the size or shape (square/non-square) of the block (prediction unit or coding unit), the position of the corner that induces the affine motion model can be set differently. For example, if the prediction unit is in the Nx2N form as shown in Figure 27, an affine motion vector can be derived using the upper left and lower left corners of the prediction unit. The affine motion vector can also be derived using equation (18).
그림 27 Figure 27 비정방Non-jeongbang 형태의 예측 유닛에서 In a prediction unit of the form affineaffine motion model 유도 방법 예시 Example of motion model derivation method
블록의 좌상단 코너의 움직임 벡터를 제1 어파인 벡터라고 부르고, 블록의 좌하단 또는 우상단 코너의 움직임 벡터를 제2 어파인 벡터라고 부른다.The motion vector of the upper left corner of the block is called the first affine vector, and the motion vector of the lower left or upper right corner of the block is called the second affine vector.
8.2 8.2 어파인Apine 움직임 보상 ( Movement Compensation ( AffineAffine motion compensation) motion compensation)
그림 28과 같이 현재 블록을 여러 개의 서브 블록(sub-block)으로 나눈 후, 각 sub-block의 특정 위치(센터 위치, 좌상단 위치 또는 좌하단 위치 중 적어도 어느 하나의 위치)에서 어파인 모션 벡터를 이용하여 sub-block 단위 움직임 보상을 수행하여 인터 예측 신호를 생성할 수 있다. 여기서, 어파인 모션 벡터는 식 (17)을 이용하여 획득된 것일 수 있다. As shown in Figure 28, after dividing the current block into several sub-blocks, an affine motion vector is generated at a specific position (at least one of the center position, upper left position, or lower left position) of each sub-block. An inter prediction signal can be generated by performing sub-block unit motion compensation. Here, the affine motion vector may be obtained using equation (17).
그림 28Figure 28 sub-block 단위 sub-block unit affineaffine motion field motion field
블록 내 sub-block의 개수는 예측 유닛 또는 코딩 유닛의 크기 또는 형태에 따라 서로 다르게 설정할 수도 있다. 예를 들어, 예측 유닛의 크기가 16x16인 경우에는 8x8 단위 sub-block 4개를 이용하여 affine motion compensation을 수행할 수도 있고, 예측 유닛의 크기가 64x64 또는 32x32인 경우에는 16x16 단위 sub-block을 이용하여 affine motion compensation을 수행할 수도 있다.The number of sub-blocks within a block may be set differently depending on the size or shape of the prediction unit or coding unit. For example, if the prediction unit size is 16x16, affine motion compensation can be performed using four 8x8 unit sub-blocks, and if the prediction unit size is 64x64 or 32x32, a 16x16 unit sub-block can be used. Thus, affine motion compensation can be performed.
또는 예측 유닛의 크기에 상관 없이 소정의 크기를 가진 sub-block을 사용하여 affine motion compensation을 사용할 수도 있으며, 슬라이스 헤더에 sub-block의 크기를 가리키는 신택스를 시그날링할 수도 있다.Alternatively, affine motion compensation can be used using a sub-block with a predetermined size regardless of the size of the prediction unit, and a syntax indicating the size of the sub-block can be signaled in the slice header.
8.3 8.3 어파인Apine 인터Inter 모드mode ( ( affineaffine inter mode) inter mode)
예측 유닛/코딩 유닛이 affine motion vector를 이용하여 affine motion compensation을 수행하는 경우를 어파인 인터 모드(Affine inter mode)라고 정의 한다. 코딩 유닛/예측 유닛의 크기 또는 형태에 따라 어파인 인터 모드를 선택적으로 적용할 수 있다. 예를 들어, 코딩 유닛/예측 유닛이 정방 형태이고, 그 크기가 16x16 이상일 때만 affine inter mode를 수행할 수도 있다.The case where the prediction unit/coding unit performs affine motion compensation using an affine motion vector is defined as an affine inter mode. Affine inter mode can be selectively applied depending on the size or shape of the coding unit/prediction unit. For example, affine inter mode may be performed only when the coding unit/prediction unit is square and its size is 16x16 or more.
현재 블록의 주변 블록으로부터 제1 어파인 벡터와 제2 어파인 벡터를 예측하여 사용할 수도 있다. 예를 들어 그림 29의 왼쪽 그림과 같이 제1 어파인 벡터는 주변 블록에 위치한 A,B,C 중에서 적어도 어느 하나(제1 어파인 모션 벡터 예측자)를 이용하여 예측 할 수 있고, 제2 어파인 벡터는 주변 블록에 위치한 D,E 중 적어도 어느 하나(제2 어파인 모션 벡터 예측자)를 이용하여 예측할 수 있다.The first affine vector and the second affine vector may be predicted and used from neighboring blocks of the current block. For example, as shown on the left of Figure 29, the first affine vector can be predicted using at least one of A, B, and C located in the surrounding blocks (the first affine motion vector predictor), and the second affine vector can be predicted using at least one of A, B, and C located in the neighboring blocks. The in vector can be predicted using at least one of D and E (second affine motion vector predictor) located in neighboring blocks.
제1 어파인 벡터와 상기 제1 어파인 모션 벡터 예측자 간의 차분 값인 제1 어파인 차분 벡터가 부호화될 수 있고, 마찬가지로 제2 어파인 벡터와 상기 제2 어파인 모션 벡터 예측자 간의 차분 값인 제2 어파인 차분 벡터가 부호화될 수 있다.A first affine difference vector that is a difference value between a first affine vector and the first affine motion vector predictor may be encoded, and similarly, a first affine difference vector that is a difference value between a second affine vector and the second affine motion vector predictor may be encoded. 2 Affine difference vectors can be encoded.
또 다른 예를 들어, 제1 어파인 벡터는 주변 블록에 위치한 B,C,F 중 적어도 어느 하나를 이용하여 예측할 수 있고, 제2 어파인 벡터는 주변 블록에 위치한 A,D,E 중 적어도 어느 하나를 이용하여 예측할 수도 있다.For another example, the first affine vector can be predicted using at least one of B, C, and F located in neighboring blocks, and the second affine vector can be predicted using at least one of A, D, and E located in neighboring blocks. You can also make predictions using one.
그림 29 Figure 29 어파인Apine 모션motion 벡터 예측 예시 Vector prediction example
제1 어파인 벡터와 제2 어파인 벡터의 값이 서로 같거나, 서로 같은 블록으로부터예측을 수행하는 경우에는 제2 어파인 벡터를 다른 위치의 벡터로부터 예측해 오거나, 제1 어파인 벡터에 소정의 오프셋을 가산 또는 감산하거나, 소정의 스케일링 팩터를 적용하여 제2 어파인 벡터를 유도할 수도 있다. 예를 들어, 그림 29의 왼쪽 그림처럼 제1 어파인 벡터는 A,B,C 로 부터 어파인 벡터를 유도하고,제2 어파인 벡터는 D,E로부터 어파인 벡터를 유도하였는데, 그 값이 서로 같은 경우에는 F로부터 어파인 벡터를 유도할 수도 있다. 어파인 벡터들 간의 동일 여부를 나타내는 플래그 또는 인덱스 정보가 시그날링될 수 있고, 동일한 어파인 벡터를 가진 코너 위치를 특정하는 정보가 시그날링될 수도 있다. 또는, 제2 어파인 벡터는 제1 어파인 벡터에 기반한 차분 코딩에 기초하여 부호화될 수도 있다. 즉, 제2 어파인 벡터는 그대로 부호화되지 않고, 제1 어파인 벡터와의 차분 벡터만이 부호화될 수도 있다. 이 경우, 복호화 장치는 제1 어파인 벡터와 상기 차분 벡터를 이용하여 제2 어파인 벡터를 복원할 수도 있다. 설명의 편의를 위해 제1 어파인 벡터와 제2 어파인 벡터만을 언급하였으나, 이에 한정되지 아니한다. 즉, 제3 어파인 벡터, 제4 어파인 벡터가 이용될 수도 있으며, 상술한 부호화/복호화 방법이 동일하게 적용될 수 있다. When the values of the first affine vector and the second affine vector are the same, or when prediction is performed from the same block, the second affine vector is predicted from a vector at a different location, or a predetermined affine vector is added to the first affine vector. The second affine vector may be derived by adding or subtracting the offset or applying a predetermined scaling factor. For example, as shown in the left picture of Figure 29, the first affine vector derives an affine vector from A, B, and C, and the second affine vector derives an affine vector from D and E, the value of which is In cases where they are the same, an affine vector can be derived from F. Flag or index information indicating whether the affine vectors are identical may be signaled, and information specifying a corner position with the same affine vector may be signaled. Alternatively, the second affine vector may be encoded based on differential coding based on the first affine vector. That is, the second affine vector may not be encoded as is, and only the difference vector with the first affine vector may be encoded. In this case, the decoding device may restore the second affine vector using the first affine vector and the difference vector. For convenience of explanation, only the first affine vector and the second affine vector are mentioned, but it is not limited thereto. That is, the third affine vector and the fourth affine vector may be used, and the above-described encoding/decoding method may be applied in the same way.
예측 유닛의 형태 (예를 들어, 정방형인지, 대칭형인지 등)에 따라 서로 다른 어파인 예측 후보 리스트를 구성할 수 있다. 예를 들어, 그림 29의 오른쪽 그림처럼 비정방형인 경우에는 제1 어파인 벡터는 주변 블록에 위치한 C,B,F로부터 어파인 벡터를 유도할 수 있고, 제2 어파인 벡터는 주변 블록에 위치한 A,D,E로부터 어파인 벡터를 유도할 수 있다.Different affine prediction candidate lists can be constructed depending on the shape of the prediction unit (e.g., square, symmetric, etc.). For example, in the case of a non-square shape as shown in the right picture of Figure 29, the first affine vector can be derived from C, B, and F located in the surrounding blocks, and the second affine vector can be derived from C, B, and F located in the surrounding blocks. Affine vectors can be derived from A, D, and E.
9. 9. 인트라Intra 예측에서 in prediction 레퍼런스reference 샘플 Sample 스무딩smoothing 방법 method
그림 30과 같이 인트라 예측을 수행하기 위해서는 예측 블록 경계에 위치한 레퍼런스 샘플 P(-1,-1), P(-1,y) (0<= y <= 2N-2) , P(x,-1) (0 <= x <= 2N-2)을 사용하게 되는데, 1장에서 상술한 바와 같이 인트라 예측 모드나 TU 크기에 따라 선택적으로 필터링을 수행할 수 있으며, 이를 레퍼런스 샘플 스무딩이라고 부른다.As shown in Figure 30, in order to perform intra prediction, reference samples P(-1,-1), P(-1,y) (0<= y <= 2N-2), P(x,-) located at the boundary of the prediction block are used. 1) (0 <= x <= 2N-2) is used. As described above in Chapter 1, filtering can be selectively performed depending on the intra prediction mode or TU size, and this is called reference sample smoothing.
그림 painting 30인트라30 intra 예측을 위한 for prediction 레퍼런스reference 샘플 예시 sample example
(1,2,1) 필터를 적용하여 레퍼런스 샘플을 스무딩하는 경우에는 다음 식 (19)내지 (21)을 사용하여 인트라 예측에 사용할 최종 레퍼런스 샘플을 유도할 수 있다.When smoothing the reference sample by applying a (1,2,1) filter, the final reference sample to be used for intra prediction can be derived using the following equations (19) to (21).
P(-1,-1) = ( P(-1,0) + 2P(-1,-1) + P(0,-1) + 2) >> 2(19)P(-1,-1) = ( P(-1,0) + 2P(-1,-1) + P(0,-1) + 2) >> 2(19)
P(-1,y) = ( P(-1,y+1) + 2P(-1, y) + P(-1,y-1) + 2) >> 2 (20)P(-1,y) = ( P(-1,y+1) + 2P(-1, y) + P(-1,y-1) + 2) >> 2 (20)
P(x,-1) = ( P(x+1,-1) + 2P(x,-1) + P(x-1,-1) + 2) >> 2 (21)P(x,-1) = ( P(x+1,-1) + 2P(x,-1) + P(x-1,-1) + 2) >> 2 (21)
식 (20)에서 y는 0과 2N-2 사이이 정수이고, 식 (21)에서 x는 0과 2N-2 사이의 정수이다.In equation (20), y is an integer between 0 and 2N-2, and in equation (21), x is an integer between 0 and 2N-2.
또는 코딩 유닛 단위에서 복수 개의 필터 중에 적어도 하나를 선택적으로 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다. 구체적으로 예를 들어, 코딩 유닛 내에서 (1,2,1) 3-tap 필터 또는 (2,3,6,3,2) 5-tap 필터 중 적어도 어느 하나를 선택적으로 사용할 수도 있다.Alternatively, reference sample smoothing may be performed on a coding unit basis by selectively using at least one of a plurality of filters. Specifically, for example, at least one of the (1,2,1) 3-tap filter or (2,3,6,3,2) 5-tap filter may be selectively used within the coding unit.
다음 식 (22) 내지 (24)는 (2,3,6,3,2) 필터를 이용하여 레퍼런스 샘플 스무딩을 나타내고 있다.The following equations (22) to (24) represent reference sample smoothing using the (2,3,6,3,2) filter.
P(-1,-1)=( 2P(-2,0)+3P(-1,0)+6P(-1,-1)+3P(0,-1)+2P(0,-2)+8) >>4 (22)P(-1,-1)=( 2P(-2,0)+3P(-1,0)+6P(-1,-1)+3P(0,-1)+2P(0,-2) +8) >>4 (22)
P(-1,y)=(2P(-1,y+2)+3P(-1,y+1)+6P(-1,y)+3P(-1,y-1)+2P(-1,y-2)+8)>>4(23)P(-1,y)=(2P(-1,y+2)+3P(-1,y+1)+6P(-1,y)+3P(-1,y-1)+2P(- 1,y-2)+8)>>4(23)
P(x,-1)=(2P(x+2,-1)+3P(x+1,-1)+6P(x,-1)+3P(x-1,-1)+2P(x-2,-1)+8)>>4(24)P(x,-1)=(2P(x+2,-1)+3P(x+1,-1)+6P(x,-1)+3P(x-1,-1)+2P(x -2,-1)+8)>>4(24)
식 (23)에서 y는 0과 2N-2 사이이 정수이고,식 (24)에서 x는 0과 2N-2 사이의 정수이다.In equation (23), y is an integer between 0 and 2N-2, and in equation (24), x is an integer between 0 and 2N-2.
또는 레퍼런스 샘플의 위치에 따라 선택적으로 서로 다른 스무딩 필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다. 예를 들어, 인트라 블록의 경계에 있는 레퍼런스 샘플의 경우 (1,2,1) 필터를 적용하고, 그 외의 레퍼런스 샘플의 경우 (2,3,6,3,2)를 적용할 수도 있다.Alternatively, reference sample smoothing may be performed selectively using different smoothing filters depending on the location of the reference sample. For example, the (1,2,1) filter may be applied to reference samples at the border of an intra block, and (2,3,6,3,2) may be applied to other reference samples.
예를 들어, 레퍼런스 샘플 P(-1,-1) , P(-1,0) , P(-1,1), … , P(-1,N-1) 그리고 P(0,-1), P(1,-1), …, P(N-1,-1)은 (1,2,1) 필터를 이용하여 식 (19) 내지 (21) 처럼 레퍼런스 샘플 스무딩을 수행하고, 그 외의 레퍼런스 샘플은 식 (23) 내지 (24)처럼 레퍼런스 샘플 스무딩을 수행할 수 있다.For example, reference samples P(-1,-1) , P(-1,0) , P(-1,1) , … , P(-1,N-1) and P(0,-1), P(1,-1), … , P(N-1,-1) performs reference sample smoothing as shown in equations (19) to (21) using the (1,2,1) filter, and other reference samples use equations (23) to (24) ), reference sample smoothing can be performed.
레퍼런스 샘플 스무딩에 사용하는 필터는 위에서 상술한 (1,2,1) 또는 (2,3,6,3,2) 필터에 한정되지 아니하며, 다른 종류의 스무딩 필터를 사용할 수도 있다.The filter used for reference sample smoothing is not limited to the (1,2,1) or (2,3,6,3,2) filters described above, and other types of smoothing filters may be used.
또는 인트라 블록에서 사용된 transform type(transform 종류)에 기초하여 선택적으로 서로 다른 필터를 사용하여 레퍼런스 픽쳐 스무딩을 수행할 수도 있다.Alternatively, reference picture smoothing may be performed selectively using different filters based on the transform type used in the intra block.
예를 들어, 그림 31처럼 인트라 블록이 DCT를 사용하여 부호화된 경우에는 (1,2,1)필터를 사용하여 레퍼런스 샘플 스무딩을 수행하고, DST를 사용하여 부호화된 경우에는 (2,3,6,3,2) 필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다.For example, as shown in Figure 31, if the intra block is coded using DCT, reference sample smoothing is performed using the (1,2,1) filter, and if it is coded using DST, (2,3,6) ,3,2) Reference sample smoothing can also be performed using a filter.
그림 31 Figure 31 레퍼런스reference 샘플 위치에 기초한 Based on sample location 레퍼런스reference 샘플 Sample 스무딩smoothing 방법 method
또 다른 예를 들어, 인트라 블록이 DCT 또는 DST을 사용하여 부호화된 경우에는 (1,2,1) 필터를 사용하여 레퍼런스 샘플 스무딩을 수행하고, 인트라 블록이 KLT 변환을 사용하여 부호화된 경우에는 (2,3,6,3,2) 필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다.As another example, if the intra block is coded using DCT or DST, then reference sample smoothing is performed using the (1,2,1) filter, and if the intra block is coded using the KLT transform, then ( 2,3,6,3,2) Reference sample smoothing can also be performed using filters.
또는 인트라 블록에서 사용된 transform type(transform 종류)와 레퍼런스 샘플의 위치 중 적어도 어느 하나 또는 둘 모두를 고려하여 선택적으로 서로 다른 필터를 사용하여 레퍼런스 픽쳐 스무딩을 수행할 수도 있다.Alternatively, reference picture smoothing may be selectively performed using different filters in consideration of at least one or both of the transform type used in the intra block and the location of the reference sample.
예를 들어, 인트라 블록이 DCT을 사용하여 부호화된 경우에는 레퍼런스 샘플 P(-1,-1) , P(-1,0) , P(-1,1), … , P(-1,N-1) 그리고 P(0,-1), P(1,-1), …, P(N-1,-1)은 (1,2,1) 필터를 이용하여 식 (19) 내지 (21) 처럼 레퍼런스 샘플 스무딩을 수행하고, 그 외의 레퍼런스 샘플은 식 (23) 내지 (24)처럼 레퍼런스 샘플 스무딩을 수행할 수 있다. DST를 사용하여 부호화된 경우에는 레퍼런스 샘플 P(-1,-1) , P(-1,0) , P(-1,1), … , P(-1,N-1) 그리고 P(0,-1), P(1,-1), …, P(N-1,-1)은 (2,3,6,3,2) 필터를 이용하여 식 (22) 내지 (24)처럼 레퍼런스 샘플 스무딩을 수행할 수 있으며, 그 외의 레퍼런스 샘플은 식 (20) 내지 (21)처럼 레퍼런스 샘플 스무딩을 수행할 수도 있다.For example, if the intra block is encoded using DCT, the reference samples P(-1,-1) , P(-1,0) , P(-1,1) , … , P(-1,N-1) and P(0,-1), P(1,-1), … , P(N-1,-1) performs reference sample smoothing as shown in equations (19) to (21) using the (1,2,1) filter, and other reference samples use equations (23) to (24) ), reference sample smoothing can be performed. When encoded using DST, the reference samples P(-1,-1), P(-1,0), P(-1,1), … , P(-1,N-1) and P(0,-1), P(1,-1), … , P(N-1,-1) can perform reference sample smoothing as shown in equations (22) to (24) using the (2,3,6,3,2) filter, and other reference samples are used in equations Reference sample smoothing can also be performed as in (20) to (21).
또는 레퍼런스 샘플을 포함하는 블록의 transform type과 현재 인트라 블록의 transform type을 비교하여 선택적으로 서로 다른 필터를 사용하여 레퍼런스 픽쳐 스무딩을 수행할 수도 있다. 예를 들어, 현재 블록과 주변 블록이 모두 같은 transform type을 사용하는 경우에는 (1,2,1)필터를 사용하여 레퍼런스 샘플 스무딩을 수행하고, 현재 블록과 주변 블록이 서로 다른 transform type을 사용하는 경우(현재 블록은 DCT를 사용하고, 레퍼런스 샘플을 포함하는 블록은 DST를 사용하는 경우)에는 (2,3,6,3,2)필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다.Alternatively, reference picture smoothing can be selectively performed using different filters by comparing the transform type of the block containing the reference sample with the transform type of the current intra block. For example, if the current block and surrounding blocks both use the same transform type, reference sample smoothing is performed using a (1,2,1) filter, and if the current block and neighboring blocks use different transform types, reference sample smoothing is performed. In this case (the current block uses DCT and the block containing the reference sample uses DST), reference sample smoothing can also be performed using the (2,3,6,3,2) filter.
그림 32 주변 블록의 transform typeFigure 32 Transform type of surrounding blocks
또는 주변 블록의 transform type에 기초하여 선택적으로 서로 다른 필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다.즉, 레퍼런스 샘플이 속한 블록의 transform type에 따라 서로 다른 필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다.Alternatively, reference sample smoothing can be selectively performed using different filters based on the transform type of the surrounding block. In other words, reference sample smoothing can be performed using different filters depending on the transform type of the block to which the reference sample belongs. It may be possible.
예를 들어, 그림 31과 같이 현재 인트라 블록과 좌측/좌하단에 인접한 블록은 DCT를 이용하여 부호화된 블록이고, 상측/우상단에 인접한 블록은 DST를 이용하여 부호화된 블록인 경우에는 좌측/좌하단에 인접한 레퍼런스 샘플에는 (1,2,1)필터를 사용하여 레퍼런스 샘플 스무딩을 수행하고 상측/우상단에 인접한 레퍼런스 샘플에는 (2,3,6,3,2) 필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다.For example, as shown in Figure 31, the block adjacent to the current intra block and the left/bottom left is a block coded using DCT, and the block adjacent to the top/top right is a block coded using DST. Reference sample smoothing is performed using a (1,2,1) filter on the reference sample adjacent to and a (2,3,6,3,2) filter is performed on the reference sample adjacent to the upper/upper right corner. You may.
Coding Tree Unit(CTU) 단위에 기초하여 레퍼런스 샘플 스무딩을 선택적으로 적용할 수도 있다. 예를 들어,그림 33 처럼 CTU 단위로 서로 다른 필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다.Reference sample smoothing may be selectively applied based on Coding Tree Unit (CTU) units. For example, reference sample smoothing can be performed using different filters on a CTU basis, as shown in Figure 33.
그림 33 Figure 33 CTUCTU 단위에 기초한 based on unit 레퍼런스reference 샘플 Sample 스무딩smoothing 예시 example
이 경우에 SPS 또는 픽쳐 파라미터 세트(picture parameter set, PPS)에서 각 CTU 별로 사용한 필터의 종류(사용 가능한 필터 중 해당 CTU가 사용한 필터의 인덱스)를 시그날링할 수 있으며, 해당 픽쳐가 모두 같은 필터를 사용하는지 여부를 시그날링할 수도 있다.In this case, the type of filter used for each CTU (the index of the filter used by the corresponding CTU among available filters) can be signaled in the SPS or picture parameter set (PPS), and the corresponding pictures all use the same filter. It is also possible to signal whether to use it or not.
Claims (12)
상기 현재 블록의 참조 샘플들을 유도하는 단계;
상기 참조 샘플들을 이용하여, 상기 현재 블록에 대한 예측 샘플들을 획득하는 단계;
상기 예측 샘플들에 대한 보정을 수행할 것인지 여부를 결정하는 단계; 및
상기 보정을 수행하기로 결정된 경우, 보정된 예측 샘플을 획득하는 단계를 포함하되,
상기 화면 내 예측 모드가 수직 방향의 방향성 예측 모드인 경우, 상기 보정된 예측 샘플은, 상기 예측 샘플과 동일한 수평선상에 위치하는 좌측 참조 샘플과 좌상단 참조 샘플 간의 차분값을 가중한 값에 기반하여 획득되고,
상기 차분값에 대한 가중치는, 상기 예측 샘플이 속하는 열에 따라 상이하게 설정되는 것을 특징으로 하는, 영상 복호화 방법. determining an intra-screen prediction mode for the current block;
Deriving reference samples of the current block;
Obtaining prediction samples for the current block using the reference samples;
determining whether to perform correction on the prediction samples; and
If it is decided to perform the correction, obtaining a corrected prediction sample,
When the intra-screen prediction mode is a vertical directional prediction mode, the corrected prediction sample is obtained based on a weighted value of the difference between the left reference sample and the upper left reference sample located on the same horizontal line as the prediction sample. become,
An image decoding method, wherein the weight for the difference value is set differently depending on the column to which the prediction sample belongs.
상기 예측 샘플이 상기 현재 블록의 2번째 최좌측 열에 속하는 경우 상기 차분값에 대한 가중치는, 상기 예측 샘플이 상기 현재 블록의 최좌측 열에 속하는 경우 상기 차분값에 대한 가중치에 비해 1/2 인 것을 특징으로 하는, 영상 복호화 방법.According to claim 1,
When the prediction sample belongs to the second leftmost column of the current block, the weight for the difference value is 1/2 compared to the weight for the difference value when the prediction sample belongs to the second leftmost column of the current block. Video decoding method.
상기 화면 내 예측 모드가 수직 방향성 예측 모드인 경우, 상기 보정은, 상기 현재 블록 내 복수 열들에 대해 수행되는 것을 특징으로 하는, 영상 복호화 방법.According to claim 1,
When the intra-prediction mode is a vertical directional prediction mode, the correction is performed on a plurality of columns in the current block.
상기 현재 블록의 참조 샘플들을 유도하는 단계;
상기 참조 샘플들을 이용하여, 상기 현재 블록에 대한 예측 샘플들을 획득하는 단계;
상기 예측 샘플들에 대한 보정을 수행할 것인지 여부를 결정하는 단계; 및
상기 보정을 수행하기로 결정된 경우, 보정된 예측 샘플을 획득하는 단계를 포함하되,
상기 화면 내 예측 모드가 수직 방향의 방향성 예측 모드인 경우, 상기 보정된 예측 샘플은, 상기 예측 샘플과 동일한 수평선상에 위치하는 좌측 참조 샘플과 좌상단 참조 샘플 간의 차분값을 가중한 값에 기반하여 획득되고,
상기 차분값에 대한 가중치는, 상기 예측 샘플이 속하는 열에 따라 상이하게 설정되는 것을 특징으로 하는,
영상 부호화 방법.determining an intra-screen prediction mode for the current block;
Deriving reference samples of the current block;
Obtaining prediction samples for the current block using the reference samples;
determining whether to perform correction on the prediction samples; and
If it is decided to perform the correction, obtaining a corrected prediction sample,
When the intra-screen prediction mode is a vertical directional prediction mode, the corrected prediction sample is obtained based on a weighted value of the difference between the left reference sample and the upper left reference sample located on the same horizontal line as the prediction sample. become,
Characterized in that the weight for the difference value is set differently depending on the column to which the prediction sample belongs.
Video encoding method.
상기 예측 샘플이 상기 현재 블록의 2번째 최좌측 열에 속하는 경우 상기 차분값에 대한 가중치는, 상기 예측 샘플이 상기 현재 블록의 최좌측 열에 속하는 경우 상기 차분값에 대한 가중치에 비해 1/2 인 것을 특징으로 하는, 영상 부호화 방법.According to clause 7,
When the prediction sample belongs to the second leftmost column of the current block, the weight for the difference value is 1/2 compared to the weight for the difference value when the prediction sample belongs to the second leftmost column of the current block. video encoding method.
상기 화면 내 예측 모드가 수직 방향성 예측 모드인 경우, 상기 보정은, 상기 현재 블록 내 복수 열들에 대해 수행되는 것을 특징으로 하는, 영상 부호화 방법.
According to clause 7,
When the intra-prediction mode is a vertical directional prediction mode, the correction is performed on a plurality of columns in the current block.
Priority Applications (12)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160022481A KR102609632B1 (en) | 2016-02-25 | 2016-02-25 | Methdo and apparatus for processing a video signal |
ES202030908A ES2800509B1 (en) | 2016-02-25 | 2017-02-24 | METHOD AND APPARATUS FOR PROCESSING VIDEO SIGNALS |
CN202311294163.0A CN117354536A (en) | 2016-02-25 | 2017-02-24 | Method and apparatus for processing video signal |
CN202311295092.6A CN117376554A (en) | 2016-02-25 | 2017-02-24 | Method and apparatus for processing video signal |
US16/080,005 US20190068989A1 (en) | 2016-02-25 | 2017-02-24 | Video signal processing method and device |
ES202130694A ES2917099B1 (en) | 2016-02-25 | 2017-02-24 | Method and apparatus for processing video signals |
ES201900064A ES2737841B1 (en) | 2016-02-25 | 2017-02-24 | Method and apparatus for processing video signals |
PCT/KR2017/002072 WO2017146526A1 (en) | 2016-02-25 | 2017-02-24 | Video signal processing method and device |
CN201780012734.3A CN108702509B (en) | 2016-02-25 | 2017-02-24 | Method and apparatus for processing video signal |
CN202311295084.1A CN117376553A (en) | 2016-02-25 | 2017-02-24 | Method and apparatus for processing video signal |
ES201890055A ES2692864B1 (en) | 2016-02-25 | 2017-02-24 | METHOD AND APPARATUS FOR PROCESSING VIDEO SIGNS |
EP17756864.9A EP3422719A4 (en) | 2016-02-25 | 2017-02-24 | Video signal processing method and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160022481A KR102609632B1 (en) | 2016-02-25 | 2016-02-25 | Methdo and apparatus for processing a video signal |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170100214A KR20170100214A (en) | 2017-09-04 |
KR102609632B1 true KR102609632B1 (en) | 2023-12-01 |
Family
ID=59924388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160022481A KR102609632B1 (en) | 2016-02-25 | 2016-02-25 | Methdo and apparatus for processing a video signal |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102609632B1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020058956A1 (en) * | 2018-09-23 | 2020-03-26 | Beijing Bytedance Network Technology Co., Ltd. | Non-affine blocks predicted from affine motion |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014518031A (en) | 2011-04-25 | 2014-07-24 | エルジー エレクトロニクス インコーポレイティド | Intra-prediction method and encoder and decoder using the same |
US20160044337A1 (en) | 2010-04-09 | 2016-02-11 | Electronics And Telecommunications Research Institute | Method and apparatus for performing intra-prediction using adaptive filter |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101530758B1 (en) * | 2012-07-04 | 2015-07-20 | 한양대학교 산학협력단 | Method and apparatus for intra prediction using adaptive filtering |
-
2016
- 2016-02-25 KR KR1020160022481A patent/KR102609632B1/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160044337A1 (en) | 2010-04-09 | 2016-02-11 | Electronics And Telecommunications Research Institute | Method and apparatus for performing intra-prediction using adaptive filter |
JP2014518031A (en) | 2011-04-25 | 2014-07-24 | エルジー エレクトロニクス インコーポレイティド | Intra-prediction method and encoder and decoder using the same |
Non-Patent Citations (2)
Title |
---|
High Efficiency Video coding, H.265(04/2013), ITU-T, 2013-06-07, pp. 1-300 |
Jianle Chen, et al. Algorithm Description of Joint Exploration Test Model 3, Joint Video exploration Team(JVET), JVET-a1001_v1, 2016-02-24, pp. 1-25 |
Also Published As
Publication number | Publication date |
---|---|
KR20170100214A (en) | 2017-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108702509B (en) | Method and apparatus for processing video signal | |
US11343499B2 (en) | Method and apparatus for processing video signal | |
CA2998098C (en) | Method and device for processing video signal | |
CN109716773B (en) | Method and apparatus for processing video signal | |
US20230362369A1 (en) | Image encoding/decoding method and apparatus, and recording medium storing bitstream | |
KR20240132433A (en) | Method and apparatus for encoding/decoding image and recording medium for storing bitstream | |
KR20180123674A (en) | Method and apparatus for video signal processing | |
CN112930685A (en) | Video signal encoding method and decoding method and apparatus thereof | |
KR20170026276A (en) | Method and apparatus for processing a video signal | |
EP3989548A1 (en) | Intra prediction mode, and entropy encoding/decoding method and device | |
KR20170100211A (en) | Methdo and apparatus for processing a video signal | |
KR20200084306A (en) | Method for encodign/decodign video signal and apparatus therefor | |
KR102609632B1 (en) | Methdo and apparatus for processing a video signal |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |