KR20210124824A - A method and an apparatus for processing a video signal - Google Patents

A method and an apparatus for processing a video signal Download PDF

Info

Publication number
KR20210124824A
KR20210124824A KR1020200042368A KR20200042368A KR20210124824A KR 20210124824 A KR20210124824 A KR 20210124824A KR 1020200042368 A KR1020200042368 A KR 1020200042368A KR 20200042368 A KR20200042368 A KR 20200042368A KR 20210124824 A KR20210124824 A KR 20210124824A
Authority
KR
South Korea
Prior art keywords
block
vector
list
candidate
alternatively
Prior art date
Application number
KR1020200042368A
Other languages
Korean (ko)
Inventor
임성원
Original Assignee
주식회사 케이티
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 케이티 filed Critical 주식회사 케이티
Priority to KR1020200042368A priority Critical patent/KR20210124824A/en
Publication of KR20210124824A publication Critical patent/KR20210124824A/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/533Motion estimation using multistep search, e.g. 2D-log search or one-at-a-time search [OTS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

The present invention provides a method and device for predictive encoding/decoding using a block vector. The purpose of the present invention is to improve the coding efficiency of a video signal.

Description

비디오 신호 처리 방법 및 장치{A METHOD AND AN APPARATUS FOR PROCESSING A VIDEO SIGNAL}A METHOD AND AN APPARATUS FOR PROCESSING A VIDEO SIGNAL

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

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

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

상기 과제를 해결하기 위하여 본 발명은 블록 벡터를 이용한 예측 부호화/복호화 방법 및 장치를 제공한다.In order to solve the above problems, the present invention provides a method and apparatus for predictive encoding/decoding using a block vector.

본 발명에 따른 비디오 신호 처리 방법 및 장치는 블록 벡터를 이용한 예측을 지원함으로써, 비디오 코딩 효율을 향상시킬 수 있다.The video signal processing method and apparatus according to the present invention can improve video coding efficiency by supporting prediction using block vectors.

최근, 초고해상도 영상은 디지털 방송뿐 아니라 넷플릭스 및 유튜브 등의 스트리밍 서비스 분야의 핵심이다. 게다가 기존의 2D영상이외에도 VR, 3D 영상 서비스가 상용화되고 있으며, 디지털 TV뿐만 아니라 스마트폰과 같은 모바일 장비에서도 위와 같은 영상 서비스를 사용할 수 있다. 이러한 영상 서비스의 공통점은, 영상 압축의 적용 없이는 서비스가 불가능하다는 점이다. Full-HD라고 할 수 있는 1080p@60Hz의 경우, 1920x1080크기의 화면을 1초에 60번 전송해야 한다. 3D 영상과 같이 양쪽 눈에 정보를 전달하기 위해서는 2배의 데이터가 필요하며, 4K(4096x2048), 8K(8192x4096) 등 초고해상도 영상 서비스는 한 화면을 1초에 120번 이상 전송해야 되기 때문에 full-HD대비 엄청난 데이터가 발생된다. 이러한 데이터를 감당하기 위해서는 통신 대역폭, 영상 압축 기술 등 다양한 분야의 기술이 필요하다. Recently, ultra-high-resolution video is the core of not only digital broadcasting but also streaming services such as Netflix and YouTube. In addition to the existing 2D images, VR and 3D image services are being commercialized, and the above image services can be used not only on digital TVs but also on mobile devices such as smartphones. What these video services have in common is that the service is impossible without the application of video compression. In the case of 1080p@60Hz, which can be called Full-HD, a 1920x1080 screen must be transmitted 60 times per second. Like 3D video, double data is required to deliver information to both eyes, and ultra-high-resolution video services such as 4K (4096x2048) and 8K (8192x4096) require one screen to be transmitted more than 120 times per second. Huge amount of data is generated compared to HD. In order to handle such data, technologies in various fields such as communication bandwidth and image compression technology are required.

화면 간 예측 기술은 참조 영상내에서 벡터를 이용하여 현재 블록과 가장 유사한 예측 블록을 탐색하는 기술이며, IBC(Intra block copy)는 현재 영상내에서 벡터를 이용하여 현재 블록과 가장 유사한 예측 블록을 탐색하는 기술이다. 상기 화면 간 예측 기술에서 사용되는 벡터를 움직임 벡터(MV: Motion Vector)라 하며, IBC에서 사용되는 벡터를(BV:Block Vector)라 한다. 위 두 방식에서는 각각 현재 블록 주변에 기복원된 벡터를 이용하여 머징(Merging)을 수행할 수 있으며, 혹은 현 재 블록에서 사용된 벡터의 예측 값으로 사용될 수도 있다. The inter prediction technology is a technology that searches for a prediction block most similar to the current block in a reference image by using a vector, and intra block copy (IBC) searches for a prediction block most similar to the current block by using a vector in the current image. is a technique to A vector used in the inter prediction technique is referred to as a motion vector (MV), and a vector used in IBC is referred to as a block vector (BV). In the above two methods, merging can be performed using the restored vectors around the current block, respectively, or it can be used as a predicted value of the vector used in the current block.

1.One. 벡터 유도 방법 vector derivation method

화면 내에 존재하는 중복된 데이터는 IBC를 통해 제거될 수 있다. IBC로 생성되는 예측 블록은 BV에 의해 생성된다. 현재 영상에서, 현재 부호화 하려는 블록(현재블록) 이전의 기 복원된 영역(참조영역)에서 BV를 이용해 탐색을 수행 후, 현재 블록과 가장 유사한 블록을 생성하고 현재 블록과의 차분값을 생성한다. Duplicate data existing in the screen may be removed through IBC. A prediction block generated by IBC is generated by BV. In the current image, after performing a search using BV in a previously reconstructed region (reference region) before the block to be encoded (current block), a block most similar to the current block is generated and a difference value with the current block is generated.

다음의 그림 1은 현재 영상에서, BV를 이용하여 탐색하는 과정을 나타내는 예시이다. The following figure 1 is an example showing the search process using BV in the current image.

Figure pat00001
Figure pat00001

그림 1Figure 1

혹은, 그림 1과 달리 참조영역을 기설정된 크기의 임시 버퍼에 저장하고, 그 영역 안에서 BV를 탐색하는 방법 또한 가능하다. 이 때, 임시 버퍼에는 기복원된 연속된 블록들이 포함될 수 있다.Alternatively, unlike Figure 1, it is also possible to store the reference region in a temporary buffer of a preset size and search for a BV within the region. In this case, the temporary buffer may include restored consecutive blocks.

버퍼의 크기를 나타내는 정보가 비트스트림을 통해 시그날링될 수 있다. 또는, 코딩 트리 유닛의 크기에 기초하여, 버퍼의 크기가 결정될 수 있다. 버퍼는, 소정 단위 마다 초기화될 수 있다. 소정 단위는, 슬라이스, 타일, N개의 코딩 트리 유닛 행 또는 N개의 코딩 트리 유닛 중 적어도 하나일 수 있다. 여기서, N은 1 또는 1 이상의 자연수 일 수 있다. Information indicating the size of the buffer may be signaled through a bitstream. Alternatively, the size of the buffer may be determined based on the size of the coding tree unit. The buffer may be initialized for each predetermined unit. The predetermined unit may be at least one of a slice, a tile, a row of N coding tree units, or N coding tree units. Here, N may be 1 or a natural number of 1 or more.

탐색중 발생한 여러 임시 BV (x', y')들 중에서 최적으로 선택된 BV(x, y)는 부호화되어 복호화기로 전송된다. 이때, BV는 현재 블록 주변에 존재하는 복호화된 BV들을 이용하여 BV를 부호화할 수 있다. 일 예로, 현재 블록과 동일한 BV를 갖는 주변 블록을 특정하는 인덱스를 부호화하거나, 주변 블록의 BV를 BV 예측값으로 설정하고, 현재 블록의 BV와 BV 예측값 사이의 차분값이 전송될 수 있다. 다음의 그림 2는 현재 블록의 BV를 부호화하는데 이용 가능한, 복호화된 BV의 참조 위치를 설명하기 위한 도면이다.BV(x, y) optimally selected from among several temporary BVs (x', y') generated during search is encoded and transmitted to a decoder. In this case, the BV may be encoded using decoded BVs existing around the current block. For example, an index specifying a neighboring block having the same BV as the current block may be encoded, or the BV of the neighboring block may be set as a BV prediction value, and a difference value between the BV and the BV prediction value of the current block may be transmitted. The following Figure 2 is a diagram for explaining a reference position of a decoded BV that can be used to encode a BV of a current block.

Figure pat00002
Figure pat00002

그림 2Figure 2

그림 2에서, LB는 현재 부호화 하려는 블록 내에서 가장 왼쪽 아래에 위치한 화소의 위치를 의미하고 RT는 블록 내에서 가장 오른쪽 위에 위치한 화소의 위치를 의미한다. 예를 들어 A1은 LB의 바로 왼쪽에 존재하는 복원 화소의 위치를 의미하고 B1는 RT의 바로 위쪽에 존재하는 복원 화소의 위치를 의미한다. In Figure 2, LB means the position of the lower-left pixel in the block to be currently encoded, and RT means the position of the upper-right pixel in the block. For example, A1 denotes a position of a restoration pixel that exists immediately to the left of LB, and B1 denotes a position of a restoration pixel that exists immediately above RT.

기설정된 우선순위에 따라 주변 복원 화소를 포함하는 블록에 존재하는 BV를 예측값으로 선택한 후, 현재 부호화 하려는 블록에서 유도된 BV와의 차분 값을 부호화 하여 복호화기로 전송할 수 있다. 또는, 주변 복원 화소를 포함하는 블록에 존재하는 BV를 현재 부호화 하려는 블록의 BV로 설정할 수 있다.After selecting a BV existing in a block including neighboring reconstructed pixels as a predicted value according to a preset priority, a difference value with the BV derived from the block to be currently encoded may be encoded and transmitted to the decoder. Alternatively, the BV present in the block including the neighboring reconstructed pixels may be set as the BV of the block to be currently encoded.

이때, BV 후보 리스트를 구성하고, 어떤 BV가 현재 부호화 하려는 블록의 BV를 유도하는데 사용하였는지 인덱스로 지정하여 가리킬 수 있다. 일 예로, BV 후보 리스트의 크기가 2라고 가정할 경우, B1 위치의 샘플을 포함하는 블록 및 A1 위치의 샘플을 포함하는 블록을 기초로 BV 후보를 유도할 수 있다. BV 후보 리스트에는 B1->A1혹은 A1->B1순서로 BV 후보들이 추가될 수 있다. In this case, a BV candidate list may be constructed, and an index may indicate which BV is used to derive the BV of the block to be currently encoded. For example, if it is assumed that the size of the BV candidate list is 2, a BV candidate may be derived based on a block including a sample at position B1 and a block including a sample at position A1. BV candidates may be added to the BV candidate list in the order of B1->A1 or A1->B1.

또는, BV 후보 리스트의 크기에 따라, A0, B0 또는 B5 위치의 블록들로부터 BV 후보들을 유도하거나, 그 이외 위치의 블록들로부터 BV 후보들을 유도할 수 있다.Alternatively, depending on the size of the BV candidate list, BV candidates may be derived from blocks at positions A0, B0, or B5, or BV candidates may be derived from blocks located at other positions.

현재 블록의 크기에 따라, 이용 가능한 후보 블록들의 개수를 상이하게 설정할 수도 있다. 일 예로, 현재 블록의 크기가 16 이하인 경우(예컨대, 4x4, 2x8 또는 8x2 등), 주변 블록들을 후보 블록들로 이용하지 않도록 설정할 수 있다. 반면, 현재 블록의 크기가 16보다 큰 경우, B1 및 A1 위치의 블록들을 후보 블록들로 이용하도록 설정할 수 있다. The number of available candidate blocks may be set differently according to the size of the current block. For example, when the size of the current block is 16 or less (eg, 4x4, 2x8, 8x2, etc.), neighboring blocks may be set not to be used as candidate blocks. On the other hand, when the size of the current block is greater than 16, blocks at positions B1 and A1 may be set to be used as candidate blocks.

혹은, BV후보 리스트를 구성할 때 특정 영역을 지정하여, 후보 블록이 특정 영역 바깥에 존재하는 경우에만 후보 리스트에 삽입할 수 있다. 만약, 후보 블록이 특정 영역 안쪽에 존재한다면 후보 블록을 이용 불가능한 것으로 판단하고, 후보리스트에 삽입하지 않을 수 있다. Alternatively, a specific region may be designated when constructing the BV candidate list, and the candidate block may be inserted into the candidate list only when it exists outside the specific region. If the candidate block exists inside a specific region, it is determined that the candidate block is unavailable and may not be inserted into the candidate list.

혹은 위와 반대로, 후보 블록이 특정 영역 바깥에 존재하는 경우에는 이용 불가능한 것으로 판단하고, 후보 리스트에 삽입하지 않을 수 있다. 만약, 후보 블록이 특정 영역 안쪽에 존재한다면 후보리스트에 삽입할 수도 있다. Alternatively, in contrast to the above, if the candidate block exists outside the specific region, it may be determined as unavailable and not inserted into the candidate list. If the candidate block exists inside a specific area, it may be inserted into the candidate list.

즉, 현재 블록과 주변 블록이 동일한 특정 영역에 속하는지 여부에 기초하여, 주변 블록의 이용 가능성이 결정될 수 있다.That is, the availability of the neighboring block may be determined based on whether the current block and the neighboring block belong to the same specific region.

여기서, 특정 영역은, 병렬 처리 영역(또는, 머지 처리 영역), CTU, CTU 행 또는 슬라이스 등일 수 있다. Here, the specific region may be a parallel processing region (or merge processing region), a CTU, a CTU row, or a slice.

이하 예시에서는 설명의 편의성을 위해, BV를 참조하는 주변 위치가 특정 영역 바깥에 존재하는 경우에만 후보 리스트에 삽입 가능한 것으로 가정하고 설명한다.In the following example, for convenience of explanation, it is assumed and described that it is possible to insert into the candidate list only when a surrounding location referring to the BV exists outside a specific region.

다음의 그림 3과 수식 (1)은 이와 관련된 예시를 나타낸다.Figure 3 and Equation (1) below show examples related to this.

Figure pat00003
Figure pat00003

그림 3Figure 3

Nflag = { ( xPb>> Log2BlkLevel ) == ( xNb>> Log2BlkLevel ) } &&Nflag = { ( xPb>> Log2BlkLevel ) == ( xNb>> Log2BlkLevel ) } &&

{ ( yPb >> Log2BlkLevel ) == ( yNb >> Log2BlkLevel ) } (1){ ( yPb >> Log2BlkLevel ) == ( yNb >> Log2BlkLevel ) } (1)

그림 3에서 (xPb,yPb)는 현재 블록 내에 존재하는 가장 왼쪽 위 화소위치를 의미한다. (xNb,yNb)는 주변 블록의 화소 위치를 의미하며, 그림 2에 따라 (xNb, yNb)는 A0~A4 또는 B0~B4 등이 될 수 있다. 따라서 그림 3의 예에서 (xNb, yNb)은 A1 혹은 B1이 될 수 있다. In Figure 3, (xPb,yPb) means the position of the upper leftmost pixel in the current block. (xNb, yNb) means the pixel position of the neighboring block, and according to Figure 2, (xNb, yNb) may be A0 to A4 or B0 to B4. Therefore, in the example of Figure 3, (xNb, yNb) can be A1 or B1.

수식 (1)에서 Log2BlkLevel 는 특정 영역의 크기를 나타내는 변수이다. Log2BlkLevel은 특정 영역의 크기에 Log2를 취하여 유도될 수 있다. 특정 영역의 크기를 나타내는 정보가 비트스트림을 통해 시그날링될 수 있다. 일 예로, 상위헤더를 통해 부호화되어 복호화기로 전송될 수 있다. 또는, 부호화기 및 복호화기에서 특정 영역의 크기가 기 정의되어 있을 수 있다.In Equation (1), Log2BlkLevel is a variable indicating the size of a specific area. Log2BlkLevel can be derived by taking Log 2 to the size of a specific region. Information indicating the size of a specific region may be signaled through a bitstream. For example, it may be encoded through the upper header and transmitted to the decoder. Alternatively, the size of a specific region may be predefined in the encoder and the decoder.

다음의 그림 4는, 그림 3과 수식(1)에 대한 예시를 보여준다. Figure 4 below shows an example of Figure 3 and Equation (1).

Figure pat00004
Figure pat00004

그림 4Figure 4

아래 예시에서, Nflag (N은 A 또는 B)는 N 위치 주변 블록의 이용 가능성을 나타낸다.In the example below, Nflag (N is A or B) indicates the availability of blocks around N positions.

예를 들어, Log2BlkLevel 의 값이 2이고, (xPb,yPb)가 (12,12)인 경우 Aflag는 수식(1)에 의해 true로 설정되며 A위치에 존재하는 BV를 후보리스트에 삽입할 수 있다. 하지만 만약, Log2BlkLevel 의 값이 3으로 설정되었다면, Aflag는 false로 설정되며 A위치에 존재하는 BV를 후보리스트에 삽입하지 않고, 해당 위치는 참조 불가능한 것으로 판단한다. 마찬가지로 B위치도 A위치와 동일한 제약이 적용될 수 있다. For example, when the value of Log2BlkLevel is 2 and (xPb,yPb) is (12,12), Aflag is set to true by Equation (1) and BV existing at position A can be inserted into the candidate list. . However, if the value of Log2BlkLevel is set to 3, Aflag is set to false and the BV existing at position A is not inserted into the candidate list, and the corresponding position is judged as unreferenceable. Similarly, the same restrictions as the A location may be applied to the B location.

BV 후보 리스트에 포함된 BV 후보들의 개수가 문턱값 이하인 경우, 임시 벡터 후보 리스트에 포함된 BV 후보를 BV 후보 리스트에 포함할 수 있다. 임시 벡터 후보 리스트는 현재 블록 이전 IBC로 부호화/복호화된 블록을 기초로 유도된 BV 후보를 포함할 수 있다. 임시 벡터 후보 리스트에 포함된 BV 후보가 BV 후보 리스트에 기 삽입된 BV 후보와 동일한 경우, 해당 BV 후보는 BV 후보 리스트에 추가되지 않도록 설정될 수 있다.위와 같이, BV 후보 리스트를 구성하고, BV 후보 리스트에 포함된 BV 후보들 중하나를 현재 블록의 BV에 대한 예측 값으로 사용할 수 있다. 또한, 현재 블록의 BV와 BV 예측값을 차분하여, 현재 블록의 잔차 BV를 부호화 할 수 있다. 이때, 리스트 안에 저장된 BV중 어떤 BV를 예측값으로 사용하였는지 알려주는 인덱스 또한 부호화하여 복호화기로 전송할 수 있다. 이러한 방식을 ABVP(Adaptive block vector prediction)방법이라 한다. When the number of BV candidates included in the BV candidate list is equal to or less than the threshold, the BV candidates included in the temporary vector candidate list may be included in the BV candidate list. The temporary vector candidate list may include BV candidates derived based on blocks encoded/decoded with IBC before the current block. When a BV candidate included in the temporary vector candidate list is the same as a BV candidate previously inserted into the BV candidate list, the corresponding BV candidate may be set not to be added to the BV candidate list. One of the BV candidates included in the candidate list may be used as a prediction value for the BV of the current block. In addition, the residual BV of the current block may be encoded by differentiating the BV of the current block and the BV predicted value. In this case, an index indicating which BV among BVs stored in the list is used as a prediction value may also be encoded and transmitted to the decoder. This method is called an adaptive block vector prediction (ABVP) method.

혹은, 리스트에 저장된 BV를 현재 블록의 BV로 설정할 수 있다. 이런 경우 리스트 안에 저장된 BV중 어떤 BV를 현재 블록의 BV로 사용하였는지 알려주는 인덱스를 부호화하여 복호화기로 전송할 수 있다. 이러한 방식을 BV merging방법이라 한다.Alternatively, the BV stored in the list may be set as the BV of the current block. In this case, an index indicating which BV among the BVs stored in the list is used as the BV of the current block may be encoded and transmitted to the decoder. This method is called the BV merging method.

또는, ABVP방법 또는 merging 방법을 사용할 때, 하나의 후보만을 이용하고 인덱스를 부호화하지 않을 수 있다. 예를 들어, BV후보리스트의 첫 번째에 존재하는 BV후보만 사용하거나, 소정의 순서로 후보 블록들을 탐색하고, 첫번째로 발견된 가용한 후보 블록의 BV 후보를 사용할 수 있다. 이 경우, 인덱스를 부호화하지 않을 수 있다. Alternatively, when using the ABVP method or the merging method, only one candidate may be used and the index may not be encoded. For example, only BV candidates existing in the first of the BV candidate list may be used, or candidate blocks may be searched in a predetermined order, and a BV candidate of the first found available candidate block may be used. In this case, the index may not be encoded.

또는, 위의 수식(1)은 다음의 수식(2)와 같이 변경될 수도 있다.Alternatively, Equation (1) above may be changed to Equation (2) below.

Nflag = { (xPb>> Log2BlkLevel ) == ( xNb>> Log2BlkLevel ) } ||Nflag = { (xPb>> Log2BlkLevel ) == ( xNb>> Log2BlkLevel ) } ||

{ ( yPb >> Log2BlkLevel ) == (yNb >> Log2BlkLevel ) } (2){ ( yPb >> Log2BlkLevel ) == (yNb >> Log2BlkLevel ) } (2)

혹은, 블록의 크기 혹은 모양에 따라서 수식(1) 혹은 수식(2)가 사용될 수 있다. 예를 들어 현재 블록이 정사각형이라면 수식(1)을 사용하며, 직사각형이라면 수식(2)가 사용될 수 있다. Alternatively, Equation (1) or Equation (2) may be used according to the size or shape of the block. For example, if the current block is a square, Equation (1) may be used, and if the current block is a rectangle, Equation (2) may be used.

혹은, 현재 블록이 직사각형일 때, 두 변 중 큰 변의 방향으로 위와 유사한 제약을 적용할 수 있다. 예를 들어, 블록의 가로 길이가 16이고 세로 길이가 8인 경우에는 다음의 수식 (3)이 적용될 수 있다.Alternatively, when the current block is a rectangle, a similar constraint may be applied in the direction of the larger side of the two sides. For example, when a block has a horizontal length of 16 and a vertical length of 8, the following Equation (3) may be applied.

Nflag = (xPb>> Log2BlkLevel ) == ( xNb>> Log2BlkLevel ) (3)Nflag = (xPb>> Log2BlkLevel ) == ( xNb>> Log2BlkLevel ) (3)

반대로 블록의 가로 길이가 8이고 세로길이가 16인 경우에는 다음의 수식 (4)가 적용될 수 있다. Conversely, when the horizontal length of the block is 8 and the vertical length is 16, the following Equation (4) can be applied.

Nflag = (yPb>> Log2BlkLevel ) == ( yNb>> Log2BlkLevel ) (4)Nflag = (yPb>> Log2BlkLevel ) == ( yNb>> Log2BlkLevel ) (4)

혹은, 현재 블록이 직사각형일 때 위와는 반대로, 두 변 중 작은 변의 방향으로 위와 유사한 제약을 적용하는 방식 또한 가능하다. Alternatively, when the current block is a rectangle, it is also possible to apply a similar constraint in the direction of the smaller of the two sides, as opposed to the above.

혹은, 현재 블록이 직사각형일 때 두 변의 길이에 대한 비율에 따라 수식(2)가 적용될 수 있다. 예를 들어, 두 변의 길이에 대한 비율이 4:1 이상인 경우에만 수식 (2)와 같은 제약을 적용하고 그게 아니라면 적용하지 않을 수 있다. 이 비율은 부호화기와 복호화기에서 서로 고정된 값을 가질 수 있으며 혹은 상위 헤더를 통해 부호화하여 복호화기로 전송하는 것 또한 가능하다.Alternatively, when the current block is a rectangle, Equation (2) may be applied according to the ratio of the lengths of the two sides. For example, the constraint like Equation (2) is applied only when the ratio of the lengths of the two sides is 4:1 or more, otherwise it may not be applied. This ratio may have a fixed value in the encoder and the decoder, or it is also possible to encode the ratio through a higher header and transmit it to the decoder.

위의 블록의 길이 혹은 비율에 대한 조건은 병렬처리가 수행될 수 있는 영역(슬라이스, 타일, 서브픽쳐 등)마다 다르게 지정할 수 있다. The conditions for the above block length or ratio can be specified differently for each area (slice, tile, subpicture, etc.) in which parallel processing can be performed.

또는, Log2BlkLevel 의 값은 SPS, PPS에서 전송될 수 있으며 혹은, 병렬처리가 수행될 수 있는 영역(슬라이스, 타일, 서브픽쳐 등)마다 다른값을 부호화하여 전송할 수도 있다. Alternatively, the value of Log2BlkLevel may be transmitted in SPS or PPS, or may be transmitted by encoding a different value for each region (slice, tile, subpicture, etc.) in which parallel processing can be performed.

혹은, 블록의 가로와 세로 각각에 대응하는 Log2BlkLevel 의 값을 따로 부호화 하는 것 또한 가능하다. 예를 들어 가로 길이에 적용되는 Log2BlkLevel 의 값은 2가 부호화될 수 있으며 세로 길이에 적용되는 Log2BlkLevel 의 값은 3이 될 수 있다.Alternatively, it is also possible to separately encode the Log2BlkLevel value corresponding to each of the width and length of the block. For example, the value of Log2BlkLevel applied to the horizontal length may be encoded as 2, and the value of Log2BlkLevel applied to the vertical length may be 3.

상기 예시에서는 설명의 편의성을 위해 IBC의 경우를 예로 설명하였지만, 화면 간 예측에서 사용되는 MV merging, AMVP 방식에도 동일하게 적용 가능하다. 즉, 화면 간 예측 적용시, 주변 블록이 현재 블록과 동일한 특정 영역에 속해 있는지 여부에 기초하여, MV 후보로의 이용 가능성이 결정될 수 있다.In the above example, the case of IBC is described as an example for convenience of explanation, but it is equally applicable to the MV merging and AMVP methods used in inter prediction. That is, when inter prediction is applied, availability as an MV candidate may be determined based on whether the neighboring block belongs to the same specific region as the current block.

위의 제약에 의해 발생한 특정영역에는, 여러 개의 블록이 존재할 수 있으며 이 블록들의 벡터들을 이용하여 임시 벡터 리스트를 구성할 수 있다. 이하, 임시 벡터 리스트에 대해 설명하고, 특정 영역과의 관계를 설명한다.Several blocks may exist in a specific region caused by the above restrictions, and a temporary vector list can be constructed using vectors of these blocks. Hereinafter, the temporary vector list will be described, and the relationship with the specific region will be described.

임시 벡터 리스트는 다양한 방법으로 구성될 수 있다. 예를 들어, 현재 부호화하려는 블록이 포함된 영상, 슬라이스, 코딩 트리 유닛 라인 또는 코딩 트리 유닛의 첫 위치에 존재하는 블록부터 시작하여 현재 부호화 하려는 블록 직전까지, 사용된 모든 벡터가 임시 벡터 리스트에 저장된다. The temporary vector list may be constructed in various ways. For example, from the block present at the first position of the image, slice, coding tree unit line, or coding tree unit including the block to be currently encoded, all vectors used up to immediately before the block to be encoded are stored in the temporary vector list. do.

혹은, 리스트에 저장할 벡터의 개수 N을 설정한 후, N개의 벡터를 리스트에 저장한다. Alternatively, after setting the number N of vectors to be stored in the list, the N vectors are stored in the list.

임시 벡터 리스트에 삽입된 순서에 따라, 벡터들에 인덱스를 할당할 수 있다. 일 예로, 현재 부호화 하려는 블록과 가까울수록 높은 우선순위를 가지며 현재 부호화 하려는 블록과 멀리 떨어져 있을수록 낮은 우선순위를 가질 수 있다. 즉, 제1 블록의 부호화 순서가 제2 블록의 부호화 순서보다 빠른 경우, 제1 블록의 벡터가 제2 블록의 벡터보다 높은 우선 순위를 가질 수 있다. 우선 순위에 따라, 각 벡터에 인덱스가 할당할 수 있으며, 일 예로, 우선 순위 또는 우선 순위의 역순으로 인덱스들이 오름 차순 할당될 수 있다.Indices can be assigned to vectors according to the order in which they are inserted into the temporary vector list. For example, it may have a higher priority as it is closer to the block to be currently encoded, and may have a lower priority as it is further away from the block to be currently encoded. That is, when the encoding order of the first block is earlier than the encoding order of the second block, the vector of the first block may have a higher priority than the vector of the second block. Indices may be assigned to each vector according to priorities, and for example, indices may be assigned in ascending order in the order of priorities or inverse order of priorities.

이 우선순위에 따라, 가장 최근에 부호화된 블록의 벡터를 저장하고자 할 때, 이미 N개의 벡터가 기 저장되어 있을 경우, 가장 처음 부호화된 블록의 벡터를 삭제하고, 가장 최근에 부호화된 블록의 벡터를 저장할 수 있다. According to this priority, when storing the vector of the most recently coded block, if N vectors are already stored, the vector of the first coded block is deleted, and the vector of the most recently coded block is deleted. can be saved.

리스트에 가장 최근에 부호화된 블록의 벡터와 동일한 벡터가 이미 존재하는 경우, 가장 최근에 부호화된 블록의 벡터를 리스트에 추가하지 않을 수 있다.If the same vector as the vector of the most recently coded block already exists in the list, the vector of the most recently coded block may not be added to the list.

또는, 리스트에 가장 최근에 부호화된 블록의 벡터와 동일한 벡터가 이미 존재하는 경우, 상기 벡터와 동일한 벡터를 삭제하고, 리스트에 가장 최근에 부호화된 블록의 벡터를 추가할 수 있다.Alternatively, when a vector identical to the vector of the most recently coded block already exists in the list, the vector identical to the vector may be deleted and the vector of the most recently coded block may be added to the list.

복원된 블록의 크기가 문턱값보다 작은 경우, 상기 블록의 벡터는 임시 벡터 리스트에 추가하지 않을 수 있다. 일 예로, 블록의 크기가 4x4 이하인 경우, 상기 블록의 벡터를 임시 벡터 리스트에 추가하지 않을 수 있다.When the size of the reconstructed block is smaller than the threshold, the vector of the block may not be added to the temporary vector list. For example, when the size of the block is 4x4 or less, the vector of the block may not be added to the temporary vector list.

임시 벡터 후보 리스트는 소정 단위로 초기화될 수 있다. 소정 단위는, 슬라이스, 타일, N개의 CTU 행, N개의 CTU 또는 병렬 처리 영역 중 적어도 하나일 수 있다. N은 1 또는 1보다 큰 정수일 수 있다.The temporary vector candidate list may be initialized in a predetermined unit. The predetermined unit may be at least one of a slice, a tile, N CTU rows, N CTUs, or a parallel processing region. N may be 1 or an integer greater than 1.

혹은, 병렬처리 구조에서, 병렬 처리되는 각 영역마다 따로 임시 벡터 리스트를 구성하는 방식 또한 가능하다. Alternatively, in the parallel processing structure, a method of separately constructing a temporary vector list for each region to be processed in parallel is also possible.

또는, 블록이 병렬 처리되는 영역에 포함될 경우, 상기 블록의 벡터는 임시 벡터 리스트에 추가하지 않을 수 있다. 혹은, 병렬 처리 영역에 포함된 블록들 중 특정 위치 블록의 벡터만을 임시 벡터 리스트에 추가할 수 있다. 특정 위치는, 병렬 처리 영역 내 좌측 상단, 우측 상단, 좌측 하단, 우측 하단 또는 중앙 위치의 샘플을 포함하는 블록일 수 있다.Alternatively, when a block is included in a parallel processing region, the vector of the block may not be added to the temporary vector list. Alternatively, only a vector of a specific location block among blocks included in the parallel processing region may be added to the temporary vector list. The specific position may be a block including a sample in the upper-left, upper-right, lower-left, lower-right, or center position in the parallel processing region.

또는, 병렬 처리 영역 내 모든 블록들에 대한 복원이 완료된 이후, 병렬 처리 되는 영역 내 블록들의 벡터를 임시 벡터 리스트에 추가할 수 있다.Alternatively, after restoration of all blocks in the parallel processing region is completed, vectors of blocks in the parallel processing region may be added to the temporary vector list.

혹은 영역의 CTU행마다 벡터 리스트를 따로 구성하는 방식 또한 가능하다. 이때, 벡터 리스트를 각 병렬 처리가 수행되는 영역마다 따로 가지는 경우, 영역의 초반 부분에는 벡터 리스트에 저장되는 벡터의 개수가 매우 적을 수 있다. 따라서 각 병렬 처리가 수행되는 영역마다 벡터를 처음부터 채워 넣지 말고, 기설정된 초기 벡터를 채워 넣는 것 또한 가능하다. 예를 들어 이 기설정된 초기 벡터는 블록 단위로 유도되는 벡터가 아니라 영상 전체에서 유도된 벡터 일 수 있다. 이러한 경우, 영상 전체에서 유도된 벡터의 각 값들은 초기 벡터 개수와 함께 상위 헤더를 통해 부호화 될 수 있다. Alternatively, a method of separately configuring a vector list for each CTU row of a region is also possible. In this case, when the vector list is separately provided for each region in which parallel processing is performed, the number of vectors stored in the vector list may be very small in the initial part of the region. Therefore, it is also possible to fill in a preset initial vector instead of filling in a vector from the beginning for each region in which parallel processing is performed. For example, the preset initial vector may be a vector derived from the entire image, not a vector derived for each block. In this case, each value of the vector derived from the entire image may be encoded through a higher header along with the initial number of vectors.

수식(1)~(4)에 의해 발생한 특정 영역 내에는, Log2BlkLevel 에 따라 다수의 블록들이 존재할 수 있다. 이 때, 특정 영역내의 기설정된 위치의 블록에 존재하는 벡터만 임시 벡터 리스트에 저장되게 하는 것이 가능하다. 예를 들어 특정 영역 내의 스캔 순서상 첫 번째 블록의 벡터, 혹은 스캔 순서상 마지막 블록의 벡터를 임시 벡터 리스트에 저장하는 것이 가능하다. In a specific region generated by Equations (1) to (4), a plurality of blocks may exist according to Log2BlkLevel. In this case, it is possible to store only vectors existing in a block at a predetermined position within a specific area in the temporary vector list. For example, it is possible to store the vector of the first block in the scan order or the vector of the last block in the scan order within a specific area in the temporary vector list.

혹은, 특정 영역 내에서 임시 벡터 리스트에 저장될 수 있는 벡터는, 기설정된 크기 이상의 블록에 존재하는 벡터만 포함되게 할 수 있다. 이 크기는 부호화하여 상위 헤더를 통해 복호화기로 전송될 수 있다. 혹은, 블록의 모양에 따라 결정할 수도 있다. 예를 들어 정사각형 모양의 블록에 존재하는 벡터만 임시 벡터 리스트에 저장되게 하는 방식이 가능하다. 반대로 직사각형 모양의 블록에 존재하는 벡터만 임시 벡터 리스트에 저장되게 하는 방식 또한 가능하다.Alternatively, vectors that can be stored in the temporary vector list within a specific region may include only vectors existing in blocks having a size greater than or equal to a preset size. This size may be encoded and transmitted to a decoder through an upper header. Alternatively, it may be determined according to the shape of the block. For example, a method such that only vectors existing in a square-shaped block are stored in the temporary vector list is possible. Conversely, it is also possible to store only vectors existing in a rectangular block in the temporary vector list.

혹은, 수식(1)~(4)중 하나에 의해 특정 영역이 설정된 후, 주변 후보가 특정 영역 내에 존재하여 이용 불가능한 것으로 판단되는 경우, 특정 영역을 하나의 블록으로 가정하고 특정 영역을 기준으로 그림 2와 같이 주변 후보를 설정하는 방식 또한 가능하다. 이 후보들은, 특정 영역 내에 존재하는 현재 블록이 merging방법 혹은 벡터 예측에 사용할 수 있다. 이런 경우, 특정 영역 내의 모든 블록은 공통된 주변 후보를 가질 수 있다. 이때, 기설정된 특정 영역의 크기이상 혹은 이하에서 이와 같은 방식이 적용되게 할 수 있다.Alternatively, after a specific area is set by one of Equations (1) to (4), if it is determined that a neighboring candidate exists within a specific area and is not available, the specific area is assumed as one block and the drawing is based on the specific area 2, a method of setting neighboring candidates is also possible. These candidates can be used for a merging method or vector prediction of a current block existing in a specific region. In this case, all blocks within a specific region may have a common neighboring candidate. In this case, the above method may be applied to a size greater than or less than a predetermined specific area.

Claims (1)

블록 벡터를 이용한 예측 방법.Prediction method using block vectors.
KR1020200042368A 2020-04-07 2020-04-07 A method and an apparatus for processing a video signal KR20210124824A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200042368A KR20210124824A (en) 2020-04-07 2020-04-07 A method and an apparatus for processing a video signal

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200042368A KR20210124824A (en) 2020-04-07 2020-04-07 A method and an apparatus for processing a video signal

Publications (1)

Publication Number Publication Date
KR20210124824A true KR20210124824A (en) 2021-10-15

Family

ID=78151129

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200042368A KR20210124824A (en) 2020-04-07 2020-04-07 A method and an apparatus for processing a video signal

Country Status (1)

Country Link
KR (1) KR20210124824A (en)

Similar Documents

Publication Publication Date Title
CN112585966B (en) Inter prediction method based on history-based motion vector and apparatus therefor
CN110636314B (en) Improved boundary segmentation
CN112823521B (en) Image encoding method using history-based motion information and apparatus therefor
CN108632629B (en) Method of generating merge candidate list for multi-view video signal and decoding apparatus
WO2019234668A1 (en) Sub-block dmvr
JP7141463B2 (en) Video processing method based on inter-prediction mode and apparatus therefor
WO2019009546A1 (en) Method for processing image on basis of inter prediction, and device therefor
US11228783B2 (en) Image decoding method and apparatus based on motion prediction in sub-block unit in image coding system
KR102502175B1 (en) Image processing method based on inter prediction mode and apparatus therefor
CN111527752A (en) Method and apparatus for encoding and decoding image, and recording medium storing bitstream
KR102500091B1 (en) Image processing method based on inter prediction mode and apparatus therefor
CN112740686A (en) Method and apparatus for intra prediction mode encoding/decoding and recording medium for storing bitstream
KR20150110357A (en) A method and an apparatus for processing a multi-view video signal
KR20120095611A (en) Method and apparatus for encoding/decoding multi view video
CN114009016A (en) Method and apparatus for removing redundant syntax from merged data syntax
KR20150136017A (en) A method and an apparatus for processing a multi-view video signal
KR20160001647A (en) A method and an apparatus for processing a multi-view video signal
KR20160004946A (en) A method and an apparatus for processing a multi-view video signal
CN114073078A (en) Method and apparatus for syntax signaling in video/image coding system
KR20210124824A (en) A method and an apparatus for processing a video signal
CN110719466B (en) Method, apparatus and storage medium for video processing
RU2803197C1 (en) Method and device for encoding/decoding images based on sub-frames and method for transmitting a bit stream
KR20230148506A (en) A method and an apparatus for processing a video signal
KR20230108129A (en) A method and an apparatus for processing a video signal
KR20210034902A (en) A method and an apparatus for processing a video signal