KR20240015700A - Image encoding/decoding method and image decoding apparatus using motion vector precision - Google Patents

Image encoding/decoding method and image decoding apparatus using motion vector precision Download PDF

Info

Publication number
KR20240015700A
KR20240015700A KR1020240008556A KR20240008556A KR20240015700A KR 20240015700 A KR20240015700 A KR 20240015700A KR 1020240008556 A KR1020240008556 A KR 1020240008556A KR 20240008556 A KR20240008556 A KR 20240008556A KR 20240015700 A KR20240015700 A KR 20240015700A
Authority
KR
South Korea
Prior art keywords
block
picture
current
prediction
current block
Prior art date
Application number
KR1020240008556A
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 돌비 레버러토리즈 라이쎈싱 코오포레이션
Publication of KR20240015700A publication Critical patent/KR20240015700A/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/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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/134Methods 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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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

영상에서 부호화 또는 복호화하고자 하는 현재 블록에 대하여 움직임 정보를 유도하기 위해 현재 픽쳐를 포함한 참조 픽쳐의 참조 블록들로부터 예측 후보를 선택하는 움직임 벡터 후보 선택 방법 및 이를 이용하는 영상 부호화 및 복호화 방법이 개시된다. 움직임 벡터 후보 선택 방법은, 공간적 움직임 벡터 후보(제1 후보)를 구성하는 단계, 현재 블록의 참조 픽쳐가 현재 픽쳐 내 존재하는지를 판단하는 단계, 및 상기 판단하는 단계의 판단 결과가 예이면, 현재 블록에 앞서 부호화된 현재 픽쳐의 다른 블록에서의 공간적 움직임 벡터 후보(제2 후보)를 추가하는 단계를 포함한다.A motion vector candidate selection method for selecting a prediction candidate from reference blocks of a reference picture including the current picture in order to derive motion information for a current block to be encoded or decoded in an image, and an image encoding and decoding method using the same are disclosed. The motion vector candidate selection method includes the steps of configuring a spatial motion vector candidate (first candidate), determining whether a reference picture of the current block exists in the current picture, and if the determination result of the determining step is yes, the current block It includes adding a spatial motion vector candidate (second candidate) from another block of the current encoded picture.

Description

움직임 벡터 차분치를 이용하는 영상 부호화 및 복호화 방법과 영상 복호화 장치{IMAGE ENCODING/DECODING METHOD AND IMAGE DECODING APPARATUS USING MOTION VECTOR PRECISION}Image encoding and decoding method and image decoding device using motion vector differential values {IMAGE ENCODING/DECODING METHOD AND IMAGE DECODING APPARATUS USING MOTION VECTOR PRECISION}

본 발명은 영상 부호화 및 복호화 기술에 관한 것으로, 보다 상세하게는, 움직임 벡터 차분치를 이용하는 영상 부호화 방법, 영상 복호화 방법 및 영상 복호화 장치에 관한 것이다.The present invention relates to video encoding and decoding technology, and more specifically, to a video encoding method using motion vector differences, a video decoding method, and a video decoding device.

인터넷과 휴대 단말의 보급과 정보 통신 기술의 발전에 따라 멀티미디어 데이터 이용이 급증하고 있다. 따라서, 각종 시스템에서 영상 예측을 통해 다양한 서비스나 작업을 수행하기 위하여 영상 처리 시스템의 성능 및 효율 개선에 대한 필요성이 상당히 증가하고 있다.With the spread of the Internet and mobile terminals and the development of information and communication technology, the use of multimedia data is rapidly increasing. Accordingly, the need to improve the performance and efficiency of image processing systems is increasing significantly in order to perform various services or tasks through image prediction in various systems.

한편, 기존의 영상 부호화 및 복호화 기술에서는 화면간 예측 방식에 따라 현재 픽쳐 이전이나 이후의 적어도 하나의 참조 픽쳐에서 현재 블록의 주변 블록들에 대한 움직임 정보를 예측하거나, 화면내 예측 방식에 따라 현재 픽쳐 내 참조 블록에서 움직임 정보를 획득하여 현재 블록에 대한 움직임 벡터를 추정하고 있다.Meanwhile, in existing video encoding and decoding technologies, motion information about neighboring blocks of the current block is predicted from at least one reference picture before or after the current picture according to an inter-picture prediction method, or the current picture is predicted according to an intra-picture prediction method. By obtaining motion information from my reference block, I am estimating the motion vector for the current block.

그러나 기존의 화면간 예측은 픽쳐들 사이의 시간적인 예측 모드를 이용하여 예측 블록을 생성하기 때문에 계산 복잡도가 높은 단점이 있고, 화면내 예측은 커다란 부호화 복잡도를 가지는 단점이 있다.However, existing inter-screen prediction has the disadvantage of having high computational complexity because it generates prediction blocks using a temporal prediction mode between pictures, and intra-screen prediction has the disadvantage of having large coding complexity.

이와 같이, 종래 기술의 영상 부호화 및 복호화 방법에서는 영상 부호화 또는 영상 복호화에 대한 성능 개선이 여전히 요구되고 있다.As such, performance improvement in image encoding or image decoding is still required in the image encoding and decoding methods of the prior art.

상기와 같은 과제를 해결하기 위한 본 발명의 목적은, 영상 부호화 및 복호화에서 현재 블록에 대한 움직임 정보를 유도하기 위해 현재 픽쳐를 포함한 참조 픽쳐의 참조 블록들로부터 예측 후보를 선택할 때, 움직임 벡터 차분치를 이용하는 영상 부호화 및 복호화 방법을 제공하는데 있다.The purpose of the present invention to solve the above problems is to use a motion vector difference value when selecting a prediction candidate from reference blocks of a reference picture including the current picture in order to derive motion information for the current block in video encoding and decoding. The goal is to provide a video encoding and decoding method using the video encoding and decoding method.

본 발명의 다른 목적은, 움직임 벡터 차분치를 이용하는 영상 부호화 및 복호화 장치를 제공하는데 있다.Another object of the present invention is to provide a video encoding and decoding device using motion vector differential values.

상기 목적을 달성하기 위한 본 발명의 일 측면에서는, 원영상에서 움직임 정보를 예측하여 예측 영상을 생성하는 영상 부호화 방법에 있어서, 움직임 정보 예측 후보군을 구성하는 단계; 상기 후보군에 속한 후보 블록의 움직임 벡터를 현재 블록의 움직임 벡터의 정밀도 단위에 맞춰 변경하는 단계; 및 상기 현재 블록의 움직임 벡터에서 상기 정밀도 단위가 맞춰진 후보 블록의 움직임 벡터를 뺀 차분치를 구하는 단계를 포함하는, 영상 부호화 방법이 제공된다.In one aspect of the present invention for achieving the above object, an image encoding method for generating a predicted image by predicting motion information in an original image includes the steps of configuring a motion information prediction candidate group; changing the motion vector of a candidate block belonging to the candidate group to match the precision unit of the motion vector of the current block; and obtaining a difference value by subtracting the motion vector of the candidate block to which the precision unit is matched from the motion vector of the current block.

상기 목적을 달성하기 위한 본 발명의 다른 측면에서는, 부호화 영상을 엔트로피 복호화하고 역양자화 및 역변환을 통해 복원 영상을 생성하는 영상 복호화 방법에 있어서, 상기 엔트로피 복호화를 통해 얻은 상기 영상의 헤더 정보를 토대로 상기 복원 영상의 움직임 정보 예측 후보군을 구성하는 단계; 상기 후보군에 속한 후보 블록의 움직임 벡터를 현재 블록의 움직임 벡터의 정밀도 단위에 맞춰 변경하는 단계; 및 상기 현재 블록의 움직임 벡터에서 상기 정밀도 단위가 맞춰진 후보 블록의 움직임 벡터를 뺀 차분치를 구하는 단계를 포함하는, 영상 복호화 방법이 제공된다.In another aspect of the present invention for achieving the above object, in an image decoding method for entropy decoding an encoded image and generating a restored image through inverse quantization and inverse transformation, the image decoding method is based on header information of the image obtained through the entropy decoding. Constructing a motion information prediction candidate group of the restored image; changing the motion vector of a candidate block belonging to the candidate group to match the precision unit of the motion vector of the current block; and obtaining a difference value by subtracting the motion vector of the candidate block to which the precision unit is aligned from the motion vector of the current block.

여기서, 상기 변경하는 단계는, 상기 현재 블록이 위치한 현재 픽쳐와 참조 픽쳐와의 제1 거리와 상기 후보 블록의 픽쳐와 해당 후보 블록의 참조 픽쳐와의 제2 거리에 따라 움직임 벡터를 스케일링할 수 있다.Here, in the changing step, the motion vector may be scaled according to the first distance between the current picture where the current block is located and the reference picture and the second distance between the picture of the candidate block and the reference picture of the candidate block. .

여기서, 영상 부호화 방법은, 상기 구하는 단계 후에, 상기 제1 거리와 상기 제2 거리의 평균 거리를 기반으로 각 참조 픽쳐의 보간 정밀도를 정하는 단계를 더 포함할 수 있다.Here, the image encoding method may further include, after the calculating step, determining the interpolation precision of each reference picture based on the average distance of the first distance and the second distance.

여기서, 상기 변경하는 단계는, 상기 현재 블록의 참조 픽쳐와 상기 후보 블록의 참조 픽쳐가 동일한 경우에 생략될 수 있다.Here, the changing step can be omitted when the reference picture of the current block and the reference picture of the candidate block are the same.

여기서, 상기 변경하는 단계는, 상기 현재 블록의 움직임 벡터 정밀도에 따라 이웃 블록 또는 주변 블록의 움직임 벡터를 상기 현재 블록의 움직임 벡터 정밀도 단위로 변경할 수 있다.Here, in the changing step, the motion vector of a neighboring block or neighboring block may be changed in units of motion vector precision of the current block according to the motion vector precision of the current block.

여기서, 상기 주변 블록은 상기 현재 블록과의 사이에 다른 블록을 게재하고 위치할 수 있다. 또한, 상기 주변 블록은 상기 현재 블록에 앞서 화면간 예측으로 움직임 벡터가 탐색된 블록일 수 있다.Here, the neighboring block may be positioned between the current block and another block. Additionally, the neighboring block may be a block whose motion vector has been searched for through inter-screen prediction prior to the current block.

상기 목적을 달성하기 위한 본 발명의 또 다른 측면에서는, 부호화 영상을 엔트로피 복호화하고 역양자화 및 역변환을 통해 복원 영상을 생성하는 프로그램 또는 프로그램 코드를 저장하는 메모리; 및 상기 메모리에 연결되어 상기 프로그램을 실행하는 프로세서를 포함하고, 상기 프로세서는 상기 프로그램에 의해, 상기 엔트로피 복호화를 통해 얻은 상기 영상의 헤더 정보를 토대로 상기 복원 영상의 움직임 정보 예측 후보군을 구성하고, 상기 후보군에 속한 후보 블록의 움직임 벡터를 현재 블록의 움직임 벡터의 정밀도 단위에 맞춰 변경하고, 상기 현재 블록의 움직임 벡터에서 상기 정밀도 단위가 맞춰진 후보 블록의 움직임 벡터를 뺀 차분치를 구하는, 영상 복호화 장치가 제공된다.In another aspect of the present invention for achieving the above object, a memory for storing a program or program code for entropy decoding an encoded image and generating a restored image through inverse quantization and inverse transformation; and a processor connected to the memory and executing the program, wherein the processor configures, by the program, a motion information prediction candidate group of the reconstructed image based on header information of the image obtained through the entropy decoding, An image decoding device is provided that changes the motion vector of a candidate block belonging to a candidate group to match the precision unit of the motion vector of the current block, and obtains a difference value by subtracting the motion vector of the candidate block whose precision unit is matched from the motion vector of the current block. do.

여기서, 상기 프로세서는, 상기 후보 블록의 움직임 벡터를 변경하고자 할 때, 상기 현재 블록이 위치한 현재 픽쳐와 참조 픽쳐와의 제1 거리와 상기 후보 블록의 픽쳐와 해당 후보 블록의 참조 픽쳐와의 제2 거리에 따라 움직임 벡터를 스케일링할 수 있다.Here, when the processor wants to change the motion vector of the candidate block, the first distance between the current picture where the current block is located and the reference picture and the second distance between the picture of the candidate block and the reference picture of the candidate block You can scale the motion vector depending on the distance.

여기서, 상기 프로세서는, 상기 차분치를 구하고자 할 때, 상기 제1 거리와 상기 제2 거리의 평균 거리를 기반으로 각 참조 픽쳐의 보간 정밀도를 정할 수 있다.Here, when calculating the difference value, the processor may determine the interpolation precision of each reference picture based on the average distance of the first distance and the second distance.

여기서, 상기 프로세서는, 상기 후보 블록의 움직임 벡터를 변경하고자 할 때, 상기 현재 블록의 참조 픽쳐와 상기 후보 블록의 참조 픽쳐가 동일한 경우에 변경 프로세스를 생략할 수 있다.Here, when the processor wants to change the motion vector of the candidate block, the change process may be omitted if the reference picture of the current block and the reference picture of the candidate block are the same.

여기서, 상기 프로세서는, 상기 후보 블록의 움직임 벡터를 변경하고자 할 때, 상기 현재 블록의 움직임 벡터 정밀도에 따라 이웃 블록 또는 주변 블록의 움직임 벡터를 상기 현재 블록의 움직임 벡터 정밀도 단위로 변경할 수 있다.Here, when the processor wants to change the motion vector of the candidate block, it can change the motion vector of a neighboring block or neighboring block in units of the motion vector precision of the current block according to the motion vector precision of the current block.

여기서, 상기 주변 블록은 상기 현재 블록과의 사이에 다른 블록을 게재하고 위치하며, 상기 현재 블록에 앞서 화면간 예측으로 움직임 벡터가 탐색되는 블록일 수 있다.Here, the neighboring block is located between the current block and another block, and may be a block for which a motion vector is searched for through inter-screen prediction prior to the current block.

상기 목적을 달성하기 위한 본 발명의 또 다른 측면에서는, 화면 내 예측에서의 참조 화소 구성에 관한 영상 부호화 방법으로서, 현재 블록에 대한 화면 내 예측에서 현재 블록의 참조 화소를 이웃 블록으로부터 획득하는 단계, 참조 화소에 적응적으로 필터링을 수행하는 단계, 적응적인 필터링이 적용된 참조 화소를 현재 블록의 예측 모드에 따라 입력값으로 사용하여 현재 블록의 예측 블록을 생성하는 단계, 예측 블록에 적응적인 후처리 필터를 적용하는 단계를 포함하는, 영상 부호화 방법이 제공된다.In another aspect of the present invention for achieving the above object, there is provided an image encoding method regarding reference pixel configuration in intra-prediction, comprising: obtaining a reference pixel of the current block from a neighboring block in intra-prediction for the current block; A step of adaptively filtering a reference pixel, generating a prediction block of the current block by using the reference pixel to which adaptive filtering has been applied as an input value according to the prediction mode of the current block, and a post-processing filter adaptive to the prediction block. An image encoding method is provided, including the step of applying .

여기서, 상기 획득하는 단계는, 현재 블록의 참조 화소를 상기 이웃 블록으로부터 획득할 수 있다.Here, in the acquiring step, the reference pixel of the current block may be acquired from the neighboring block.

여기서, 상기 획득하는 단계는, 이웃 블록의 이용가능성에 따라 결정될 수 있다.Here, the acquiring step may be determined according to the availability of neighboring blocks.

여기서, 이웃 블록의 이용가능성은, 이웃 블록의 위치 및/또는 특정 플래그(constrained_intra_pred_flag)에 의해서 결정될 수 있다. 일례로, 특정 플래그는 이웃 블록이 이용가능할 때, 1의 값을 가질 수 있다. 그것은 이웃 블록의 예측 모드가 화면 간 모드일 때 해당 블록의 참조 화소를 현재 블록의 예측에 사용할 수 없음을 의미할 수 있다.Here, the availability of the neighboring block may be determined by the location of the neighboring block and/or a specific flag (constrained_intra_pred_flag). As an example, a particular flag may have a value of 1 when a neighboring block is available. It may mean that when the prediction mode of a neighboring block is inter-screen mode, the reference pixel of that block cannot be used for prediction of the current block.

여기서, 특정 플래그(constrained_intra_pred_flag)는 이웃 블록의 예측 모드에 따라 결정되며, 예측 모드는 화면 내 예측 또는 화면 간 예측 중 하나일 수 있다.Here, a specific flag (constrained_intra_pred_flag) is determined according to the prediction mode of the neighboring block, and the prediction mode may be either intra-prediction or inter-prediction.

여기서, 특정 플래그(constrained_intra_pred_flag)가 0일 때는, 이웃 블록의 예측 모드에 관계없이 이웃 블록의 이용가능성이 '참(true)'가 되고, 1일 때는 이웃 블록의 예측 모드가 화면 내 예측이면 '참'이 되고, 화면 간 예측이면 이웃 블록의 이용가능성이 '거짓(false)'이 될 수 있다.Here, when the specific flag (constrained_intra_pred_flag) is 0, the availability of the neighboring block becomes 'true' regardless of the prediction mode of the neighboring block, and when it is 1, the availability of the neighboring block becomes 'true' if the prediction mode of the neighboring block is intra-screen prediction. ', and in case of inter-screen prediction, the availability of neighboring blocks may be 'false'.

여기서, 화면 간 예측은, 하나 이상의 참조 픽쳐로부터 참조하여 예측 블록을 생성할 수 있다.Here, inter-screen prediction can generate a prediction block by referring to one or more reference pictures.

여기서, 참조 픽쳐는, 참조 픽쳐 리스트 0(List 0)과 참조 픽쳐 리스트 1(List 1)을 통해 관리되며 하나 이상의 과거 픽쳐, 미래 픽쳐, 현재 픽쳐를 상기 List 0, List 1에 포함할 수 있다.Here, the reference picture is managed through reference picture list 0 (List 0) and reference picture list 1 (List 1), and one or more past pictures, future pictures, and current pictures may be included in List 0 and List 1.

여기서, List 0 및 List1은, 참조 픽쳐 리스트에 현재 픽쳐를 넣을지가 적응적으로 결정될 수 있다.Here, List 0 and List1 may adaptively determine whether to include the current picture in the reference picture list.

여기서, 현재 픽쳐를 참조 픽쳐 리스트에 넣을지를 결정하는 정보는 시퀀스, 참조 픽쳐 파라미터 셋 등에 포함될 수 있다.Here, information for determining whether to include the current picture in the reference picture list may be included in a sequence, reference picture parameter set, etc.

상기 목적을 달성하기 위한 본 발명의 또 다른 측면에서는, 컴퓨팅 장치에서 수행되는 영상 복호화 방법으로서, 입력 비트스트림으로부터 이웃 블록의 참조 화소 이용가능성에 관한 플래그를 시퀀스 또는 픽쳐 단위로 획득하는 단계; 플래그에 따라 화면 내 예측을 수행할 때 이웃 블록의 참조 화소 이용가능성을 결정하는 단계; 플래그가 0일 때 이웃 블록의 예측 모드에 관계없이 이웃 블록의 참조 화소를 현재 블록의 예측에 사용하고, 플래그가 1일 때 이웃 블록의 예측 모드가 화면 내 예측인 경우에 이웃 블록의 참조 화소를 현재 블록의 예측에 사용하며, 이웃 블록의 예측 모드가 화면 간 예측인 경우에 이웃 블록의 참조 화소를 현재 블록의 예측에 사용하지 않는, 영상 복호화 방법이 제공된다.In another aspect of the present invention for achieving the above object, there is provided an image decoding method performed on a computing device, comprising: obtaining a flag regarding reference pixel availability of a neighboring block from an input bitstream on a sequence or picture basis; determining reference pixel availability of a neighboring block when performing intra-prediction according to the flag; When the flag is 0, the reference pixel of the neighboring block is used for prediction of the current block regardless of the prediction mode of the neighboring block, and when the flag is 1, the reference pixel of the neighboring block is used if the prediction mode of the neighboring block is intra-screen prediction. An image decoding method is provided in which reference pixels of a neighboring block are used for prediction of the current block, and when the prediction mode of the neighboring block is inter-screen prediction, reference pixels of the neighboring block are not used for prediction of the current block.

여기서, 화면 간 예측은 참조 픽쳐에서 블록 매칭을 기반으로 예측 블록을 생성할 수 있다.Here, inter-screen prediction can generate a prediction block based on block matching in a reference picture.

여기서, 참조 픽쳐는 P 픽쳐에서는 List 0을, B 픽쳐에서는 List 0과 List 1을 통해 관리될 수 있다.Here, the reference picture can be managed through List 0 in the P picture and List 0 and List 1 in the B picture.

여기서, 화면 간 예측에서 List 0에 현재 픽쳐를 포함할 수 있다.Here, the current picture can be included in List 0 in inter-screen prediction.

여기서, 화면 간 예측에서 List 1에 현재 픽쳐를 포함할 수 있다.Here, the current picture can be included in List 1 in inter-screen prediction.

여기서, 상기 List 0과 List 1에 현재 픽쳐를 포함하는 것은 시퀀스 파라미터에서 전송되는 플래그에 기반하여 결정될 수 있다.Here, inclusion of the current picture in List 0 and List 1 can be determined based on the flag transmitted in the sequence parameter.

여기서, 상기 List 0과 List 1에 현재 픽쳐를 포함하는 것은 픽쳐 파라미터에서 전송되는 플래그에 기반하여 결정될 수 있다.Here, inclusion of the current picture in List 0 and List 1 can be determined based on the flag transmitted in the picture parameter.

상술한 바와 같은 본 발명의 실시예에 따른 움직임 벡터 차분치를 이용하는 영상 부호화 및 복호화 방법 및 영상 복호화 장치를 이용할 경우에는, 영상 예측 시스템의 성능을 개선할 수 있다.When using the image encoding and decoding method and image decoding device using motion vector difference values according to the embodiment of the present invention as described above, the performance of the image prediction system can be improved.

또한, 움직임 벡터의 차분치를 이용하여 시스템 구성을 상대적으로 간소화하면서 영상 예측 장치의 성능 및 효율을 향상시킬 수 있는 장점이 있다.In addition, there is an advantage in that the performance and efficiency of the image prediction device can be improved while relatively simplifying the system configuration by using the difference value of the motion vector.

또한, 본 발명에 의하면, 블록이나 픽쳐의 정밀도에 따라 스케일링이나 정밀도 보정을 다양한 형태로 적용할 수 있고, 적용가능한 후보군 중에 최적의 후보를 선택하여 현재 블록의 움직임 벡터와의 차분치를 구비하고 이를 부호화에 이용함으로써 부호화 및 복호화 성능과 효율을 높일 수 있는 장점이 있다.In addition, according to the present invention, scaling or precision correction can be applied in various forms depending on the precision of the block or picture, and the optimal candidate is selected from among the applicable candidates, provided with a difference value with the motion vector of the current block, and encoded. There is an advantage in that encoding and decoding performance and efficiency can be improved by using it.

도 1은 본 발명의 영상 부호화 장치 및/또는 영상 복호화 장치를 이용하는 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 일실시예에 따른 영상 부호화 장치에 대한 블록도이다.
도 3은 본 발명의 일실시예에 따른 영상 복호화 장치에 대한 블록도이다.
도 4는 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 P 슬라이스의 화면 간 예측을 나타낸 예시도이다.
도 5는 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 B 슬라이스의 화면 간 예측을 나타낸 예시도이다.
도 6은 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 단방향으로 예측 블록을 생성하는 경우를 설명하기 위한 예시도이다.
도 7은 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 참조 픽쳐 리스트를 구성하는 예시도이다.
도 8은 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 참조 픽쳐 리스트로부터 화면 간 예측을 수행하는 경우의 다른 예를 나타낸 예시도이다.
도 9는 본 발명의 일실시예에 따른 영상 부호화 방법에서 화면 내 예측을 설명하기 위한 예시도이다.
도 10은 본 발명의 일실시예에 따른 영상 부호화 방법에서 P 슬라이스나 B 슬라이스에서의 예측 원리를 설명하기 위한 예시도이다.
도 11은 도 10의 영상 부호화 방법에서 내삽(interpolation)을 수행하는 경우를 설명하기 위한 예시도이다.
도 12는 본 발명의 일실시예에 따른 영상 부호화 방법의 주요 과정을 코딩 단위(coding unit)에서의 신택스로 설명하기 위한 도면이다.
도 13은 도 12에서 사용하는 현재 픽쳐에서 블록매칭을 통해 예측 블록을 생성할 경우, 화면 간 예측에서와 같이 대칭형(symmetric type) 분할 또는 비대칭형(asymmetric type) 분할을 지원하는 예를 설명하기 위한 예시도이다.
도 14는 도 9의 화면 내 예측(Intra)과 같이 화면 간 예측(Inter)에서 2Nx2N, NxN을 지원할 수 있음을 설명하기 위한 예시도이다.
도 15는 본 발명의 일실시예에 따른 영상 부호화 방법에서 영상의 a, b, c의 위치(x라고 가정)에 있는 화소에 대해서는 수평 1D 필터를 수행하는 과정을 설명하기 위한 도면이다.
도 16은 본 발명의 일실시예에 따른 영상 부호화 방법에 채용할 수 있는 현재 블록과 주변 블록에 대한 예시도이다.
도 17은 도 15에서 블록 단위로 움직임 벡터 정밀도가 다른 경우를 설명하기 위한 도면이다.
도 18은 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 참조 픽쳐의 보간 정밀도에 따라 블록의 움직임 벡터 정밀도가 결정되는 케이스를 설명하기 위한 도면이다.
도 19는 본 발명의 일 실시예에 따른 움직임 벡터 차분치를 이용하는 영상 부호화 및 복호화 방법에 대한 흐름도이다.
도 20 내지 도 25는 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 블록 단위로 보간 정밀도가 정해질 때 다양한 케이스에 대한 움직임 벡터 차분치 산출 과정을 설명하기 위한 도면들이다.
도 26 내지 도 29는 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 움직임 벡터 차분치의 정밀도에 대한 표현 과정을 설명하기 위한 도면들이다.
1 is a diagram for explaining a system using the video encoding device and/or video decoding device of the present invention.
Figure 2 is a block diagram of a video encoding device according to an embodiment of the present invention.
Figure 3 is a block diagram of an image decoding device according to an embodiment of the present invention.
Figure 4 is an example diagram showing inter-screen prediction of a P slice in an image encoding and decoding method according to an embodiment of the present invention.
Figure 5 is an example diagram showing inter-screen prediction of a B slice in an image encoding and decoding method according to an embodiment of the present invention.
Figure 6 is an example diagram to explain the case of generating a prediction block in one direction in the video encoding and decoding method according to an embodiment of the present invention.
Figure 7 is an example diagram of configuring a reference picture list in the video encoding and decoding method according to an embodiment of the present invention.
Figure 8 is an exemplary diagram showing another example of performing inter-screen prediction from a reference picture list in the video encoding and decoding method according to an embodiment of the present invention.
Figure 9 is an example diagram for explaining intra-screen prediction in the video encoding method according to an embodiment of the present invention.
Figure 10 is an example diagram for explaining the prediction principle in a P slice or B slice in the image encoding method according to an embodiment of the present invention.
FIG. 11 is an example diagram illustrating a case of performing interpolation in the image encoding method of FIG. 10.
FIG. 12 is a diagram for explaining the main process of the video encoding method according to an embodiment of the present invention using syntax in a coding unit.
Figure 13 is for illustrating an example of supporting symmetric type partitioning or asymmetric type partitioning as in inter-screen prediction when generating a prediction block through block matching in the current picture used in Figure 12. This is an example diagram.
Figure 14 is an example diagram to explain that 2Nx2N and NxN can be supported in inter-screen prediction (Inter), like intra-prediction (Intra) in Figure 9.
Figure 15 is a diagram for explaining the process of performing a horizontal 1D filter on pixels at positions a, b, and c of the image (assumed to be x) in the image encoding method according to an embodiment of the present invention.
Figure 16 is an example diagram of a current block and neighboring blocks that can be employed in an image encoding method according to an embodiment of the present invention.
FIG. 17 is a diagram for explaining a case in which motion vector precision is different for each block in FIG. 15.
Figure 18 is a diagram for explaining a case in which the motion vector precision of a block is determined according to the interpolation precision of a reference picture in the video encoding and decoding method according to an embodiment of the present invention.
Figure 19 is a flowchart of an image encoding and decoding method using motion vector difference according to an embodiment of the present invention.
Figures 20 to 25 are diagrams for explaining the motion vector difference calculation process for various cases when interpolation precision is determined on a block basis in the video encoding and decoding method according to an embodiment of the present invention.
Figures 26 to 29 are diagrams for explaining the process of expressing the precision of motion vector difference values in the video encoding and decoding method according to an embodiment of the present invention.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.Since the present invention can make various changes and have various embodiments, specific embodiments will be illustrated in the drawings and described in detail. However, this is not intended to limit the present invention to specific embodiments, and should be understood to include all changes, equivalents, and substitutes included in the spirit and technical scope of the present invention.

제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다. Terms such as first, second, A, and B may be used to describe various components, but the components should not be limited by the terms. The above terms are used only for the purpose of distinguishing one component from another. For example, a first component may be named a second component, and similarly, the second component may also be named a first component without departing from the scope of the present invention. The term and/or includes any of a plurality of related stated items or a combination of a plurality of related stated items.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.When a component is said to be "connected" or "connected" to another component, it is understood that it may be directly connected to or connected to the other component, but that other components may exist in between. It should be. On the other hand, when it is mentioned that a component is “directly connected” or “directly connected” to another component, it should be understood that there are no other components in between.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함한다" 또는 "가진다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in this application are only used to describe specific embodiments and are not intended to limit the invention. Singular expressions include plural expressions unless the context clearly dictates otherwise. In this application, terms such as “comprises” or “has” are intended to designate the presence of features, numbers, steps, operations, components, parts, or combinations thereof described in the specification, but are not intended to indicate the presence of one or more other features. It should be understood that this does not exclude in advance the possibility of the existence or addition of elements, numbers, steps, operations, components, parts, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 것을 의미한다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless otherwise defined, all terms used herein, including technical or scientific terms, mean the same as commonly understood by a person of ordinary skill in the technical field to which the present invention pertains. Terms such as those defined in commonly used dictionaries should be interpreted as consistent with the meaning they have in the context of the related technology, and unless clearly defined in the present application, should not be interpreted in an ideal or excessively formal sense.

통상적으로 동영상은 일련의 픽쳐(Picture)로 구성될 수 있으며, 각 픽쳐들은 프레임 또는 블록(Block)과 같은 소정의 영역으로 분할될 수 있다. 또한, 분할된 영역은 블록(Block)뿐 아니라, 코딩 트리 유닛(Coding Tree Unit, CTU), 코딩 유닛(Coding Unit, CU), 예측 유닛(Prediction Unit, PU), 변환 유닛(Transform Unit, TU)과 같이 다양한 크기 또는 용어로 지칭할 수 있다. 각 유닛(Unit)은 하나의 휘도 블록과 두 개의 색차 블록으로 구성될 수 있으며, 이는 컬러 포맷에 따라 달리 구성될 수 있다. 또한, 컬러 포맷에 따라 휘도 블록과 색차 블록의 크기가 결정될 수 있다. 예를 들어, 4:2:0인 경우 색차 블록의 크기는 휘도 블록의 가로, 세로가 1/2인 길이를 가질 수 있다. 이 단위 및 용어에 대해서는 기존의 HEVC(high efficiency video coding) 또는 H.264/AVC(advanced video coding) 등의 용어를 참조할 수 있다.Typically, a video may be composed of a series of pictures, and each picture may be divided into predetermined areas such as frames or blocks. In addition, the divided area is not only a block, but also a Coding Tree Unit (CTU), a Coding Unit (CU), a Prediction Unit (PU), and a Transform Unit (TU). It can be referred to by various sizes or terms, such as . Each unit may be composed of one luminance block and two chrominance blocks, which may be configured differently depending on the color format. Additionally, the sizes of the luminance block and the chrominance block may be determined depending on the color format. For example, in the case of 4:2:0, the size of the chrominance block may have a length that is 1/2 the width and height of the luminance block. For this unit and term, reference may be made to existing terms such as HEVC (high efficiency video coding) or H.264/AVC (advanced video coding).

또한, 현재 블록 또는 현재 화소를 부호화하거나 복호화하는데 참조되는 픽쳐, 블록 또는 화소를 참조 픽쳐(reference picture), 참조 블록(reference block) 또는 참조 화소(reference pixel)라고 한다. 또한, 이하에 기재된 "픽쳐(picture)"이라는 용어는 영상(image), 프레임(frame) 등과 같은 동등한 의미를 갖는 다른 용어로 대치되어 사용될 수 있음을 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 이해할 수 있다Additionally, a picture, block, or pixel that is referenced for encoding or decoding the current block or current pixel is called a reference picture, reference block, or reference pixel. In addition, those skilled in the art will understand that the term "picture" described below may be used in place of other terms with equivalent meaning, such as image, frame, etc. When you grow up you will understand

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, preferred embodiments of the present invention will be described in more detail with reference to the attached drawings. In order to facilitate overall understanding when describing the present invention, the same reference numerals are used for the same components in the drawings, and duplicate descriptions for the same components are omitted.

도 1은 본 발명의 영상 부호화 장치 및/또는 영상 복호화 장치를 이용하는 시스템을 설명하기 위한 도면이다.1 is a diagram for explaining a system using the video encoding device and/or video decoding device of the present invention.

도 1을 참조하면, 영상 부호화 장치 및/또는 영상 복호화 장치를 이용하는 시스템은 개인용 컴퓨터(personal computer, PC), 노트북 컴퓨터, 개인 휴대 단말기(personal digital assistant, PDA), 휴대형 멀티미디어 플레이어(portable multimedia player, PMP), 플레이스테이션 포터블(playstation portable, PSP), 무선 통신 단말기(wireless communication terminal), 스마트폰(smart phone), 텔레비전(TV) 등과 같은 사용자 단말기(11)이거나 응용 서버와 서비스 서버 등 서버 단말기(12)일 수 있다. 이러한 시스템은 컴퓨팅 장치로 지칭될 수 있다.Referring to FIG. 1, a system using an image encoding device and/or an image decoding device includes a personal computer (PC), a laptop computer, a personal digital assistant (PDA), and a portable multimedia player. It is a user terminal (11) such as PMP, PlayStation portable (PSP), wireless communication terminal, smart phone, television, etc., or a server terminal (11) such as application server and service server. 12) It can be. These systems may be referred to as computing devices.

또한, 컴퓨팅 장치는 각종 기기 또는 유무선 통신망(network)과 통신을 수행하기 위한 통신 모뎀 등의 통신 장치, 영상을 부호화하거나 복호화하거나 부호화 및 복호화를 위해 화면 간(inter) 또는 화면 내(intra) 예측하기 위한 각종 프로그램과 데이터를 저장하기 위한 메모리(18), 프로그램을 실행하여 연산 및 제어하기 위한 프로세서(14) 등을 구비하는 다양한 장치를 포함할 수 있다.In addition, computing devices include communication devices such as communication modems for communicating with various devices or wired and wireless communication networks, encoding or decoding images, or making predictions between screens (inter) or within screens (intra) for encoding and decoding. It may include various devices including a memory 18 for storing various programs and data, a processor 14 for executing programs to perform operations and control.

또한, 컴퓨팅 장치는 영상 부호화 장치에 의해 비트스트림(bitstream)으로 부호화된 영상을 실시간 또는 비실시간으로 인터넷, 근거리 무선 통신망, 무선랜망, 와이브로망, 이동통신망 등의 유무선 통신망 등을 통하거나 케이블, 범용 직렬 버스(USB: Universal Serial Bus) 등과 같은 다양한 통신 인터페이스를 통해 영상 복호화 장치로 전송되어 영상 복호화 장치에서 복호화되어 복원된 영상으로 재생될 수 있다. 또한, 영상 부호화 장치에 의해 비트스트림으로 부호화된 영상은 컴퓨터 판독 가능한 기록 매체를 통하여 부호화 장치에서 복호화 장치로 전달될 수도 있다.In addition, the computing device transmits images encoded into a bitstream by an image encoding device in real time or non-real time through wired and wireless communication networks such as the Internet, short-range wireless communication networks, wireless LAN networks, WiBro networks, and mobile communication networks, or through cables or general-purpose networks. It can be transmitted to a video decoding device through various communication interfaces such as a serial bus (USB: Universal Serial Bus), decoded by the video decoding device, and played back as a restored video. Additionally, an image encoded into a bitstream by an image encoding device may be transmitted from the encoding device to the decoding device through a computer-readable recording medium.

도 2는 본 발명의 일실시예에 따른 영상 부호화 장치에 대한 블록도이다. 도 3은 본 발명의 일실시예에 따른 영상 복호화 장치에 대한 블록도이다.Figure 2 is a block diagram of a video encoding device according to an embodiment of the present invention. Figure 3 is a block diagram of an image decoding device according to an embodiment of the present invention.

본 실시예에 따른 영상 부호화 장치(20)는, 도 2에 나타낸 바와 같이, 예측부(200), 감산부(205), 변환부(210), 양자화부(215), 역양자화부(220), 역변환부(225), 가산부(230), 필터부(235), 복호화 픽쳐 버퍼(decorded picture buffer, DPB, 240) 및 엔트로피 부호화부(245)를 포함할 수 있다. 또한, 영상 부호화 장치(20)는 분할부(190)를 더 포함할 수 있다.As shown in FIG. 2, the image encoding device 20 according to this embodiment includes a prediction unit 200, a subtraction unit 205, a transform unit 210, a quantization unit 215, and an inverse quantization unit 220. , may include an inverse transform unit 225, an adder 230, a filter unit 235, a decoded picture buffer (DPB) 240, and an entropy encoding unit 245. Additionally, the image encoding device 20 may further include a division unit 190.

또한, 본 실시예에 따른 영상 복호화 장치(30)는, 도 3에 나타낸 바와 같이, 엔트로피 복호화부(305), 예측부(310), 역양자화부(315), 역변환부(320), 가산부(325), 필터부(330) 및 복호화 픽쳐 버퍼(335)를 포함할 수 있다.In addition, as shown in FIG. 3, the image decoding device 30 according to this embodiment includes an entropy decoding unit 305, a prediction unit 310, an inverse quantization unit 315, an inverse transform unit 320, and an adder. 325, a filter unit 330, and a decoded picture buffer 335 may be included.

전술한 영상 부호화 장치(20)와 영상 복호화 장치(30)는 각각 별도의 장치들일 수 있으나, 구현에 따라서 하나의 영상 부호화 및 복호화 장치로 만들어질 수 있다. 그 경우, 영상 부호화 장치(20)의 예측부(200), 역양자화부(220), 역변환부(225), 가산부(230), 필터부(235) 및 복호화 픽쳐 버퍼(240)는 기재된 순서대로 영상 복호화 장치(30)의 예측부(310), 역양자화부(315), 역변환부(320), 가산부(325), 필터부(330) 및 메모리(335)와 실질적으로 동일한 기술요소로서 적어도 동일한 구조를 포함하거나 적어도 동일한 기능을 수행하도록 구현될 수 있다. 또한, 엔트로부 부호화부(245)는 그 기능을 역으로 수행할 때, 엔트로피 복호화부(305)에 대응될 수 있다. 따라서 이하의 기술요소들과 이들의 작동 원리 등에 대한 상세 설명에서는 대응 기술요소들의 중복되는 설명을 생략하기로 한다.The above-described video encoding device 20 and video decoding device 30 may be separate devices, but depending on implementation, they may be made into one video encoding and decoding device. In that case, the prediction unit 200, inverse quantization unit 220, inverse transform unit 225, addition unit 230, filter unit 235, and decoding picture buffer 240 of the video encoding device 20 are performed in the listed order. As a technical element that is substantially the same as the prediction unit 310, inverse quantization unit 315, inverse transform unit 320, addition unit 325, filter unit 330, and memory 335 of the image decoding device 30, It may be implemented to include at least the same structure or at least perform the same function. Additionally, the entropy encoding unit 245 may correspond to the entropy decoding unit 305 when performing its function in reverse. Therefore, in the detailed description of the technical elements and their operating principles below, redundant description of the corresponding technical elements will be omitted.

그리고 영상 복호화 장치는 영상 부호화 장치에서 수행되는 영상 부호화 방법을 복호화에 적용하는 컴퓨팅 장치에 대응하므로, 이하의 설명에서는 영상 부호화 장치를 중심으로 설명하기로 한다.Since the video decoding device corresponds to a computing device that applies the video encoding method performed in the video encoding device to decoding, the following description will focus on the video encoding device.

컴퓨팅 장치는 영상 부호화 방법 및/또는 영상 복호화 방법을 구현하는 프로그램이나 소프트웨어 모듈을 저장하는 메모리와 메모리에 연결되어 프로그램을 수행하는 프로세서를 포함할 수 있다. 그리고 영상 부호화 장치는 부호화기로, 영상 복호화 장치는 복호화기로 각각 지칭될 수 있다.A computing device may include a memory that stores a program or software module that implements an image encoding method and/or an image decoding method, and a processor that is connected to the memory and performs the program. Additionally, the video encoding device may be referred to as an encoder, and the video decoding device may be referred to as a decoder.

본 실시예의 영상 부호화 장치의 각 구성요소를 좀 더 구체적으로 설명하면 다음과 같다.Each component of the video encoding device of this embodiment will be described in more detail as follows.

분할부(190)는, 입력 영상을 정해진 크기의 블록(M×N)으로 분할한다. 여기서, M 또는 N은 1 이상의 임의의 자연수이다.The division unit 190 divides the input image into blocks (M×N) of a predetermined size. Here, M or N is any natural number greater than or equal to 1.

상세하게는, 분할부(190)은 픽쳐 분할부와 블록 분할부로 구성될 수 있다. 블록은 영상의 특성 및 해상도 등에 따라 크기 또는 형태가 결정될 수 있고, 픽쳐 분할부를 통해 지원되는 블록의 크기 또는 형태는 가로 및 세로의 길이가 2의 지수승으로 표현되는 M×N 정사각 형태(256×256, 128×128, 64×64, 32×32, 16×16, 8×8, 4×4 등)이거나, M×N 직사각 형태일 수 있다. 예를 들어, 해상도가 높은 8k UHD급 영상의 경우 256×256, 1080p HD급 영상의 경우 128×128, WVGA급 영상의 경우 16×16 등 크기로 입력 영상을 분할할 수 있다.In detail, the division unit 190 may be composed of a picture division unit and a block division unit. The size or shape of the block may be determined depending on the characteristics and resolution of the image, and the size or shape of the block supported through the picture division unit is an M × N square shape (256 ×256, 128×128, 64×64, 32×32, 16×16, 8×8, 4×4, etc.) or M×N rectangular shape. For example, the input video can be divided into sizes such as 256×256 for high-resolution 8k UHD video, 128×128 for 1080p HD video, and 16×16 for WVGA video.

이러한 블록의 크기 또는 형태에 대한 정보는 시퀀스, 픽쳐, 슬라이스 등의 단위에서 설정이 가능하며, 관련 정보를 복호화기에 전송할 수 있다. 즉, 시퀀스 파라미터 셋, 픽쳐 파라미터 셋, 슬라이스 헤더 또는 이들의 조합 단위에서 설정될 수 있다.Information about the size or shape of these blocks can be set in units such as sequence, picture, and slice, and related information can be transmitted to the decoder. That is, it can be set in a sequence parameter set, picture parameter set, slice header, or a combination thereof.

여기서, 시퀀스(sequence)는 몇 개의 관련 장면을 모아서 구성되는 구성단위를 가리킨다. 그리고 픽쳐(picture)는 하나의 장면 또는 픽쳐에서 일련의 휘도(Y) 성분 혹은 휘도와 색차(Y, Cb, Cr) 성분 전체를 일컫는 용어로서, 한 픽쳐의 범위는 경우에 따라서 한 프레임 혹은 한 필드가 될 수 있다.Here, a sequence refers to a structural unit composed by gathering several related scenes. And picture is a term that refers to a series of luminance (Y) components or the entire luminance and chrominance (Y, Cb, Cr) components in one scene or picture, and the range of one picture is one frame or one field depending on the case. It can be.

슬라이스(slice)는 동일 액세스 유닛(access unit) 안에 존재하는 하나의 독립 슬라이스 세그먼트와 다수의 종속 슬라이스 세그먼트를 말할 수 있다. 액세스 유닛은 한 장의 코딩된 픽쳐와 관련된 NAL(network abstraction layer) 유닛의 집합(set)을 의미한다. NAL 유닛은 H.264/AVC와 HEVC 표준에서 비디오 압축 비트스트림을 네트워크 친화적인 형식으로 구성한 구문 구조(syntax structure)이다. 한 슬라이스 단위를 하나의 NAL 유닛으로 구성하는 것이 일반적이며, 시스템 표준에서는 일반적으로 한 프레임을 구성하는 NAL 혹은 NAL 집합을 하나의 액세스 유닛으로 간주한다.A slice may refer to one independent slice segment and multiple dependent slice segments that exist within the same access unit. An access unit refers to a set of NAL (network abstraction layer) units related to one coded picture. The NAL unit is a syntax structure that configures the video compression bitstream in a network-friendly format in the H.264/AVC and HEVC standards. It is common to configure one slice unit as one NAL unit, and system standards generally consider a NAL or a set of NALs constituting one frame as one access unit.

다시 픽쳐 분할부의 설명으로 되돌아가서, 블록 크기 또는 형태(M×N)에 대한 정보는 명시적 플래그로 이루어질 수 있는데, 구체적으로 블록 형태 정보, 블록이 정사각인 경우에 하나의 길이 정보, 직사각일 경우에는 각각의 길이 정보, 또는 가로와 세로 길이의 차이값 정보 등을 포함할 수 있다. 예를 들어, M과 N이 k의 지수승(k를 2라 가정)으로 구성되어 있을 경우(M=2m, N=2n), m과 n에 대한 정보를 단항 이진화, 절삭형 단항 이진화 등의 다양한 방법으로 부호화하여 관련 정보를 복호화장치에 전달할 수 있다.Going back to the description of the picture division unit, information about the block size or shape (M×N) may be comprised of an explicit flag, specifically block shape information, length information if the block is square, and In this case, it may include information on each length, or information on the difference between the horizontal and vertical lengths. For example, if M and N are composed of the power of k (assuming k is 2) (M=2 m , N=2 n ), the information about m and n can be unary binarized or truncated unary binarized. The relevant information can be transmitted to the decoding device by encoding in various ways, such as.

또한, 픽쳐 분할부에서 지원하는 분할 허용 최소 크기(Minblksize)가 I×J(설명의 편의상 I=J라고 가정. I=2i,J=2j 일 경우), m-i 또는 n-j에 대한 정보를 전달할 수 있다. 다른 예로, M과 N이 다를 경우, m과 n의 차이값(|m-n|)을 전달할 수 있다. 또는, 픽쳐 분할부에서 지원하는 분할 허용 최대 크기(Maxblksize)가 I×J(설명의 편의상 I=J라고 가정. I=2i,J=2j 일 경우), i-m 또는 n-j에 대한 정보를 전달할 수 있다.In addition, the minimum division size ( Minblksize ) supported by the picture division unit is I You can. As another example, if M and N are different, the difference between m and n (|mn|) can be transmitted. Alternatively, if the maximum division size ( Maxblksize ) supported by the picture division unit is I You can.

묵시적인 상황일 경우 예컨대, 관련 정보에 대한 신택스는 존재하나 부호화기/복호화기에서 확인할 수 없는 경우에는, 부호화기나 복호화기는 미리 준비된 기본 설정을 따를 수 있다. 예를 들어, 블록 형태 정보를 확인하는 단계에서 관련 신택스를 확인할 수 없는 경우 블록 형태는 기본 설정인 정사각 형태로 둘 수 있다. 또한, 블록 크기 정보를 확인하는 단계는, 좀더 상세하게는, 상기 예와 같이 분할 허용 최소 크기(Minblksize)로부터의 차이값을 통해 블록 크기 정보를 확인하는 단계에서 차이값 관련 신택스는 확인할 수 있으나 분할 허용 최소 크기(Minblksize) 관련 신택스는 확인할 수 없는 경우 미리 준비된 분할 허용 최소 크기(Minblksize) 관련 기본 설정값으로부터 얻을 수 있다. In an implicit situation, for example, when syntax for related information exists but cannot be confirmed by the encoder/decoder, the encoder or decoder may follow default settings prepared in advance. For example, if the relevant syntax cannot be confirmed in the step of checking the block shape information, the block shape can be left at the default square shape. In addition, the step of checking the block size information, more specifically, as in the above example, the syntax related to the difference value can be checked in the step of checking the block size information through the difference value from the minimum division allowable size (Minblksize), but the division If the syntax related to the minimum allowable size (Minblksize) cannot be confirmed, it can be obtained from the default setting value related to the minimum allowable split size (Minblksize) prepared in advance.

이와 같이, 픽쳐 분할부에서 블록의 크기 또는 형태는 부호화기 및/또는 복호화기에서 관련 정보를 명시적으로 전송하거나 또는 영상의 특성 및 해상도 등에 따라 묵시적으로 결정될 수 있다.In this way, the size or shape of the block in the picture division unit may be explicitly transmitted by the encoder and/or decoder or may be implicitly determined depending on the characteristics and resolution of the image.

상기와 같이 픽쳐 분할부를 통해 분할 및 결정된 블록은 기본 부호화 단위로 사용될 수 있다. 또한, 픽쳐 분할부를 통해 분할 및 결정된 블록은 픽쳐, 슬라이스, 타일(tile) 등의 상위 레벨 단위를 구성하는 최소 단위일 수 있고, 부호화 블록(coding block), 예측 블록(prediction block), 변환 블록(transform block), 양자화 블록(quantization block), 엔트로피 블록(entropy block), 인루프 필터링 블록(inloopfiltering block) 등의 최대 단위일 수 있으나, 일부 블록은 이에 한정되지 않고 예외도 가능하다. 예컨대, 인루프 필터링 블록과 같이 일부는 위에서 설명한 블록 크기보다 더 큰 단위로 적용될 수 있다.The block divided and determined through the picture division unit as described above can be used as a basic coding unit. Additionally, the block divided and determined through the picture division unit may be the minimum unit constituting higher level units such as a picture, slice, or tile, and may be a coding block, prediction block, or transform block. It may be the largest unit such as a transform block, quantization block, entropy block, or inloop filtering block, but some blocks are not limited to these and exceptions are possible. Some, for example in-loop filtering blocks, can be applied in units larger than the block size described above.

블록 분할부는 부호화, 예측, 변환, 양자화, 엔트로피, 인루프 필터 등의 블록에 대한 분할을 수행한다. 분할부(190)는 각 구성에 포함되어 기능을 수행하기도 한다. 예컨대, 변환부(210)에 변환블록 분할부, 양자화부(215)에 양자화블록 분할부를 포함할 수 있다. 블록 분할부의 초기 블록의 크기 또는 형태는 이전 단계 또는 상위 레벨 블록의 분할 결과에 의해 결정될 수 있다.The block division unit performs division of blocks such as encoding, prediction, transformation, quantization, entropy, and in-loop filter. The division unit 190 is included in each component and performs a function. For example, the transform unit 210 may include a transform block division unit, and the quantization unit 215 may include a quantization block division unit. The size or shape of the initial block of the block division unit may be determined by the division result of the previous level or higher level block.

예를 들어, 부호화 블록의 경우 이전 단계인 픽쳐 분할부를 통해 획득된 블록을 초기 블록으로 설정할 수 있다. 혹은, 예측 블록의 경우 예측 블록의 상위 레벨인 부호화 블록의 분할 과정을 통해 획득된 블록을 초기 블록으로 설정할 수 있다. 혹은, 변환 블록의 경우 변환 블록의 상위 레벨인 부호화 블록의 분할 과정을 통해 획득된 블록을 초기 블록으로 설정할 수 있다.For example, in the case of a coding block, a block obtained through the picture division unit, which is the previous step, can be set as the initial block. Alternatively, in the case of a prediction block, a block obtained through the division process of a coding block that is a higher level of the prediction block can be set as the initial block. Alternatively, in the case of a transform block, a block obtained through the division process of a coding block, which is a higher level of the transform block, can be set as the initial block.

초기 블록의 크기 또는 형태를 결정하는 조건은 항상 고정적이지 않으며 일부가 변경되거나 예외인 경우가 존재할 수 있다. 또한, 이전 단계 또는 상위 레벨 블록의 분할 상태(예를 들어, 부호화 블록의 크기, 부호화 블록의 형태 등)와 현재 레벨의 설정 조건(예를 들어, 지원되는 변환 블록의 크기, 변환 블록의 형태 등) 각각 최소 하나 이상의 요인의 조합에 따라 현재 레벨의 분할 동작(분할 가능 여부, 분할 가능한 블록 형태 등)에 영향을 줄 수도 있다. The conditions that determine the size or shape of the initial block are not always fixed, and some may change or exceptions may exist. In addition, the division status of the previous level or higher level block (e.g., size of coding block, type of coding block, etc.) and setting conditions of the current level (e.g., size of supported transform block, type of transform block, etc.) ) Depending on the combination of at least one factor, the division behavior of the current level (whether division is possible, type of block that can be divided, etc.) may be affected.

블록 분할부는 쿼드트리(quad tree) 기반의 분할 방식을 지원할 수 있다. 즉, 분할 전 블록에서 가로 및 세로가 1/2씩의 길이를 갖는 4개의 블록으로 분할할 수 있다. 이는 최초 블록 기준(dep_0)으로 분할 허용 깊이 한계(dep_k, k는 분할 허용 횟수를 의미하고, 분할 허용 깊이 한계(dep_k)일 때의 블록 크기는 (M >> k, N >> k)임)까지 분할을 반복적으로 할 수 있다.The block division unit may support a quad tree-based division method. In other words, the block before division can be divided into four blocks each with a width and height of 1/2 the length. This is based on the first block (dep_0), and the division allowed depth limit (dep_k, k means the number of divisions allowed, and the block size when the division allowed depth limit (dep_k) is (M >> k, N >> k)) Division can be repeated repeatedly.

또한, 바이너리 트리 기반의 분할 방식을 지원할 수 있다. 이는 가로 또는 세로 중 하나의 길이가 분할 전 블록과 비교하여 1/2의 길이를 갖는 2개의 블록으로 분할할 수 있음을 나타낸다. 상기 쿼드 트리 분할과 바이너리 트리의 분할의 경우 대칭 분할(symmetric partition)이나 비대칭 분할(asymmetric partition)일 수 있으며, 이는 부호화기/복호화기의 설정에 따라 어느 분할 방식을 따를지 정할 수 있다. 본 발명의 영상 부호화 방법에서 대칭 분할 방식 위주로 설명을 할 것이다.Additionally, a binary tree-based partitioning method can be supported. This indicates that the block can be divided into two blocks whose length, either horizontal or vertical, is 1/2 that of the block before division. In the case of the quad tree partition and the binary tree partition, there may be symmetric partition or asymmetric partition, and which partition method to follow can be determined depending on the settings of the encoder/decoder. The video encoding method of the present invention will be explained mainly in terms of the symmetric division method.

분할 플래그(div_flag)를 통해 각 블록의 분할 여부를 나타낼 수 있으며, 해당 값이 1이면 분할을 수행하고, 값이 0이면 분할을 수행하지 않는다. 또는, 해당 값이 1이면 분할을 수행하고 추가 분할이 가능하며, 값이 0이면 분할을 수행하지 않고 더 이상의 분할을 허용하지 않을 수 있다. 분할 허용 최소 크기, 분할 허용 깊이 한계 등의 조건에 의해 상기 플래그는 분할 여부에 대해서만 고려하고 추가 분할 여부에 대해서는 고려하지 않을 수 있다.The division flag (div_flag) can be used to indicate whether each block is divided. If the value is 1, division is performed, and if the value is 0, division is not performed. Alternatively, if the value is 1, division may be performed and additional division may be possible, and if the value is 0, division may not be performed and further division may not be permitted. Depending on conditions such as the minimum size allowed for division and the limit on the allowable division depth, the flag may only consider whether to split or not and may not consider whether to split additionally.

분할 플래그는 쿼드트리 분할에서 사용 가능하고, 바이너리 트리 분할에서도 사용 가능하다. 바이너리 트리 분할에서는 분할 방향이 블록의 분할 깊이, 부호화 모드, 예측 모드, 크기, 형태, 종류(부호화, 예측, 변환, 양자화, 엔트로피, 인루프 필터 등 중 하나일 수 있음. 또는, 휘도, 색차 중 하나일 수 있음) 그리고 슬라이스 타입, 분할 허용 깊이 한계, 분할 허용 최소/최대 크기 등의 요인 중 최소 하나 이상의 요인 또는 이들의 조합에 따라 결정될 수 있다. 또한, 분할 플래그에 따라 및/또는 해당 분할 방향에 따라 즉, 블록의 가로만 1/2로 분할되거나 또는 세로만 1/2로 분할될 수 있다.The split flag can be used in quad-tree splitting, and can also be used in binary tree splitting. In binary tree division, the division direction can be one of the division depth of the block, encoding mode, prediction mode, size, shape, type (encoding, prediction, transformation, quantization, entropy, in-loop filter, etc.), or luminance or chrominance. may be one) and may be determined based on at least one or a combination of factors such as slice type, division allowable depth limit, and division allowable minimum/maximum size. Additionally, depending on the split flag and/or the corresponding split direction, that is, the block may be split into 1/2 only horizontally or 1/2 only vertically.

예를 들어, 블록이 M×N(M>N)으로 M이 N보다 클 때 가로 분할을 지원하며, 현재 분할 깊이(dep_curr)는 분할 허용 깊이 한계보다 작아서 추가 분할이 가능하다고 가정하면, 위의 분할 플래그는 1비트로 할당되어 해당 값이 1이면 가로 분할을 수행하고, 0이면 더 이상 분할하지 않을 수 있다. 분할 깊이는 쿼드 트리와 바이너리 트리 분할에 하나의 분할 깊이를 둘 수도 있고, 쿼드 트리와 바이너리 트리 분할에 각각의 분할 깊이를 둘 수도 있다. 또한, 분할 허용 깊이 한계는 쿼드 트리와 바이너리 트리 분할에 하나의 분할 허용 깊이 한계를 둘 수도 있고, 쿼드 트리와 바이너리 트리 분할에 각각의 분할 허용 깊이 한계를 둘 수도 있다.For example, assuming that the block supports horizontal splitting with M The split flag is assigned as 1 bit. If the value is 1, horizontal split is performed, and if the value is 0, no further split can be performed. The split depth can be one split depth for quad tree and binary tree splits, or each split depth can be set for quad tree and binary tree splits. Additionally, the allowable splitting depth limit may be set to one splitting depth limit for quad tree and binary tree splits, or may be set to a separate allowable splitting depth limit for quad tree and binary tree splits.

다른 예로, 블록이 M×N(M>N)이고 N이 미리 설정된 분할 허용 최소 크기와 같아서 가로 분할을 지원하지 않는다면, 위의 분할 플래그는 1비트로 할당되어 해당 값이 1이면 세로 분할을 수행하고, 0이면 분할을 수행하지 않는다. As another example, if the block is M , if it is 0, division is not performed.

또한, 가로 분할 또는 세로 분할을 위한 플래그(div_h_flag, div_h_flag)를 각각 지원할 수 있으며, 상기 플래그에 따라 바이너리 분할을 지원할 수 있다. 가로 분할 플래그(div_h_flag) 또는 세로 분할 플래그(div_v_flag)를 통해 각 블록의 가로 또는 세로 분할 여부를 나타낼 수 있으며, 가로 분할 플래그(div_h_flag) 또는 세로 분할 플래그(div_v_flag)가 1이면 가로 또는 세로 분할을 수행하며, 0이면 가로 또는 세로 분할을 수행하지 않는다.Additionally, flags (div_h_flag, div_h_flag) for horizontal division or vertical division can be supported, respectively, and binary division can be supported according to the flags. You can indicate whether each block is split horizontally or vertically through the horizontal split flag (div_h_flag) or vertical split flag (div_v_flag). If the horizontal split flag (div_h_flag) or vertical split flag (div_v_flag) is 1, horizontal or vertical split is performed. If it is 0, horizontal or vertical division is not performed.

또한, 각 플래그가 1이면 가로 또는 세로 분할을 수행하며 가로 또는 세로의 추가 분할이 가능하고, 값이 0이면 가로 또는 세로 분할을 수행하지 않으며 더 이상의 가로 또는 세로의 추가 분할은 허용하지 않을 수 있다. 분할 허용 최소 크기, 분할 허용 깊이 한계 등의 조건에 의해 상기 플래그는 분할 여부에 대해서 고려하고 추가 분할 여부에 대해서는 고려하지 않을 수 있다.In addition, if each flag is 1, horizontal or vertical division is performed and additional horizontal or vertical division is possible, and if the value is 0, horizontal or vertical division is not performed and further horizontal or vertical division may not be allowed. . Depending on conditions such as the minimum size allowed for division and the limit on the allowable division depth, the flag may consider whether to split or not and may not consider whether to split additionally.

또한, 가로 분할 또는 세로 분할을 위한 플래그(div_flag/h_v_flag)를 지원할 수 있으며, 상기 플래그에 따라 바이너리 분할을 지원할 수 있다. 분할 플래그(div_flag)는 가로 또는 세로 분할 여부를 나타낼 수 있으며 분할 방향 플래그(h_v_flag)는 가로 또는 세로의 분할 방향을 나타낼 수 있다.Additionally, flags (div_flag/h_v_flag) for horizontal or vertical division may be supported, and binary division may be supported according to the flags. The split flag (div_flag) can indicate whether to split horizontally or vertically, and the split direction flag (h_v_flag) can indicate the horizontal or vertical split direction.

분할 플래그(div_flag)가 1이면 분할을 수행하며 분할 방향 플래그(h_v_flag)에 따라 가로 또는 세로 분할을 수행하며, 0이면 가로 또는 세로 분할을 수행하지 않는다. 또한, 해당 값이 1이면 분할 방향 플래그(h_v_flag)에 따라 가로 또는 세로 분할을 수행하며 가로 또는 세로의 추가 분할이 가능하고, 값이 0이면 가로 또는 세로 분할을 수행하지 않으며 더 이상의 가로 또는 세로 분할을 허용하지 않는 것으로 간주할 수 있다.If the division flag (div_flag) is 1, division is performed and horizontal or vertical division is performed according to the division direction flag (h_v_flag). If the division flag (div_flag) is 0, horizontal or vertical division is not performed. Additionally, if the value is 1, horizontal or vertical division is performed according to the division direction flag (h_v_flag) and additional horizontal or vertical division is possible. If the value is 0, horizontal or vertical division is not performed and no further horizontal or vertical division is possible. may be considered not permitted.

분할 허용 최소 크기, 분할 허용 깊이 한계 등의 조건에 의해 상기 플래그는 분할 여부에 대해서 고려하고 추가 분할 여부에 대해서는 고려하지 않을 수 있다.Depending on conditions such as the minimum size allowed for division and the limit on the allowable division depth, the flag may consider whether to split or not and may not consider whether to split additionally.

이러한 분할 플래그 또한 가로, 세로 분할을 위해 각각 지원할 수 있으며, 상기 플래그에 따라 바이너리 트리 분할을 지원할 수 있다. 또한, 분할 방향이 미리 결정되어 있는 경우, 상기 예와 같이 둘 중의 하나의 분할 플래그만 사용되거나, 두 분할 플래그 모두가 사용될 수 있다.These splitting flags can also be supported for horizontal and vertical splitting, and binary tree splitting can be supported according to the flags. Additionally, when the division direction is predetermined, as in the above example, only one of the two division flags may be used, or both division flags may be used.

예를 들어, 상기의 플래그가 다 허용되면 가능한 블록의 형태는 M×N, M/2×N, M×N/2, M/2×N/2 중 어느 하나로 분할이 될 수 있다. 이 경우, 플래그는 수평 분할 플래그 또는 수직 분할 플래그(div_h_flag/div_v_flag) 순으로 00, 10, 01, 11로 부호화될 수 있다.For example, if all of the above flags are allowed, the possible block types can be divided into any of M×N, M/2×N, M×N/2, and M/2×N/2. In this case, the flag may be encoded as 00, 10, 01, 11 in the order of horizontal split flag or vertical split flag (div_h_flag/div_v_flag).

위의 경우, 분할 플래그가 중첩되어 사용될 수 있는 설정에서의 예시이고, 분할 플래그가 중첩되어 사용될 수 없는 설정 또한 가능하다. 예를 들어, 분할 블록 형태가 M×N, M/2×N, M×N/2로 분할될 수 있으며, 이 경우 위의 플래그는 수평 또는 수직 분할 플래그들 순으로 00, 01, 10로 부호화되거나, 분할 플래그(div_flag)와 수평-수직 플래그(h_v_flag, 이 플래그는 분할 방향이 가로 또는 세로를 나타내는 플래그) 순으로 0, 10, 11로 부호화될 수 있다. 여기에서 중첩의 의미는 가로 분할과 세로 분할을 동시에 수행하는 것을 의미할 수 있다.The above case is an example of a setting in which split flags can be overlapped and used, and a setting in which split flags cannot be overlapped and used is also possible. For example, the split block type can be split into M Alternatively, it may be encoded as 0, 10, and 11 in the order of the division flag (div_flag) and the horizontal-vertical flag (h_v_flag, which indicates the division direction is horizontal or vertical). Here, the meaning of overlapping may mean performing horizontal division and vertical division simultaneously.

전술한 쿼드트리 분할 및 바이너리 트리 분할은 부호화기 및/또는 복호화기의 설정에 따라 어느 하나가 단독으로 사용되거나 혼용되어 사용될 수 있다. 예컨대, 블록의 크기 또는 형태에 따라서 쿼드트리 또는 바이너리 트리 분할이 결정될 수 있다. 즉, 블록 형태가 M×N이고, M이 N보다 큰 경우에는 가로 분할, 블록 형태가 M×N이고, N이 M보다 큰 경우에는 세로 분할에 따라 바이너리 트리 분할이 지원될 수 있고, 블록 형태가 M×N이고, N과 M인 동일한 경우에는 쿼드트리 분할이 지원될 수 있다.The above-described quad-tree division and binary tree division may be used alone or in combination depending on the settings of the encoder and/or decoder. For example, quad tree or binary tree division may be determined depending on the size or shape of the block. That is, if the block type is M is M×N, and in the case where N and M are the same, quadtree partitioning can be supported.

다른 예로, 블록(M×M)의 크기가 블록 분할 경계값(thrblksize)보다 크거나 같은 경우는 바이너리 트리 분할이 지원될 수 있고, 그보다 작은 경우에는 쿼드트리 분할이 지원될 수 있다.As another example, binary tree partitioning may be supported when the size of the block (M

다른 예로, 블록(M×N)의 M 또는 N이 제1 분할 허용 최대 크기 (Maxblksize1)보다 작거나 같고 제1 분할 허용 최소 크기(Minblksize1)보다 크거나 같을 경우에는 쿼드 트리 분할을 지원하고, 블록(M×N)의 M 또는 N이 제2 분할 허용 최대 크기(Maxblksize2)보다 작거나 같고 제2 분할 허용 최소 크기(Minblksize2)보다 크거나 같을 경우에는 바이너리 트리 분할이 지원될 수도 있다.As another example, if M or N of the block (M Binary tree partitioning may be supported when M or N of (M

만일 상기 분할 허용 최대 크기와 분할 허용 최소 크기로 정의할 수 있는 제1 분할 지원 범위와 제2 분할 지원 범위가 중복되는 경우에는, 부/복호화기의 설정에 따라 제1 또는 제2 분할 방법 중의 우선순위가 주어질 수 있다. 본 실시예에서는 제1의 분할 방법은 쿼드트리 분할, 제2 분할 방법은 바이너리 트리 분할로 예를 들 수 있다. 예를 들어, 제1 분할 허용 최소 크기(Minblksize1)이 16이고 제2 분할 허용 최대 크기(Maxblksize2)가 64이며 분할 전 블록이 64×64 일 경우, 제1 분할 지원 범위와 제2 분할 지원 범위에 모두 속하므로 쿼드 트리 분할과 바이너리 트리 분할이 가능하다.If the first division support range and the second division support range, which can be defined as the maximum division allowable size and the minimum division allowable size, overlap, the first or second division method takes priority depending on the setting of the encoder/decoder. Rankings may be given. In this embodiment, the first splitting method is quad-tree splitting, and the second splitting method is binary tree splitting. For example, if the minimum size allowed for the first division (Minblksize1) is 16, the maximum size allowed for the second division (Maxblksize2) is 64, and the block before division is 64×64, the first division support range and the second division support range are Since they all belong, quad tree partitioning and binary tree partitioning are possible.

기설정에 따라 제1 분할 방법(본 실시예에서는 쿼드 트리 분할)으로 우선순위가 주어진다면, 분할 플래그(div_flag)가 1일 경우에는 쿼드 트리 분할을 수행하며 추가 쿼드 트리 분할이 가능하고, 0일 경우에는 쿼드 트리 분할을 수행하지 않으며 더 이상 쿼드 트리 분할을 수행하지 않는 것으로 간주할 수 있다. 분할 허용 최소 크기, 분할 허용 깊이 한계 등의 조건에 의해 상기 플래그는 분할 여부에 대해서만 고려하고 추가 분할 여부에 대해서는 고려하지 않을 수 있다.If priority is given to the first division method (quad tree division in this embodiment) according to the preset, if the division flag (div_flag) is 1, quad tree division is performed and additional quad tree division is possible, and 0 days In this case, quad-tree partitioning is not performed and it can be considered that quad-tree partitioning is no longer performed. Depending on conditions such as the minimum size allowed for division and the limit on the allowable division depth, the flag may only consider whether to split or not and may not consider whether to split additionally.

분할 플래그(div_flag)가 1일 경우에는 32×32의 크기를 갖는 4개의 블록으로 분할이 되어 제1 분할 허용 최소 크기(Minblksize1) 보다 크기 때문에 쿼드 트리 분할을 계속 수행할 수 있다. 분할 플래그가 0일 경우에는 추가적인 쿼드 트리 분할을 수행하지 않으며, 현재 블록 크기(64×64)가 상기 제2 분할 지원 범위에 속하게 되므로 바이너리 트리 분할을 수행할 수 있다. 분할 플래그(div_flag/h_v_flag순으로)가 0일 경우에는 더 이상 분할을 수행하지 않으며, 10 또는 11인 경우에는 가로 분할 또는 세로 분할을 수행할 수 있다.When the division flag (div_flag) is 1, it is divided into 4 blocks with a size of 32×32 and is larger than the minimum size allowed for the first division (Minblksize1), so quad tree division can continue to be performed. If the split flag is 0, additional quad tree split is not performed, and since the current block size (64×64) falls within the second split support range, binary tree split can be performed. If the split flag (in the order of div_flag/h_v_flag) is 0, no further splitting is performed, and if it is 10 or 11, horizontal splitting or vertical splitting can be performed.

만일 분할 전 블록이 32×32이며 분할 플래그(div_flag)가 0이라 더 이상 쿼드 트리 분할을 하지 않고 제2 분할 허용 최대 크기(Maxblksize2)가 16일 경우, 현재 블록의 크기(32×32)가 제2 분할 지원 범위에 속하지 않으므로 더 이상의 분할을 지원하지 않을 수 있다. 위 설명에서 분할 방법의 우선순위는 슬라이스 타입, 부호화 모드, 휘도/색차 성분 등 중에서 최소 하나 이상의 요인 또는 이들의 조합에 따라 결정될 수 있다. If the block before division is 32 2 Since it does not fall within the scope of division support, further division may not be supported. In the above description, the priority of the segmentation method may be determined based on at least one factor or a combination of slice type, encoding mode, luminance/chrominance component, etc.

다른 예로, 휘도 및 색차 성분에 따라 다양한 설정을 지원할 수 있다. 예를 들어, 휘도 성분에서 결정된 쿼드 트리 또는 바이너리 트리 분할 구조를 색차 성분에서는 추가적인 정보 부/복호화없이 그대로 사용할 수 있다. 또는, 휘도 성분과 색차 성분의 독립적인 분할을 지원할 경우, 휘도 성분에는 쿼드 트리와 바이너리 트리를 함께 지원하고, 색차 성분에는 쿼드 트리 분할을 지원할 수도 있다.As another example, various settings may be supported depending on luminance and chrominance components. For example, the quad tree or binary tree division structure determined in the luminance component can be used as is in the chrominance component without additional information encoding/decoding. Alternatively, when supporting independent division of the luminance component and the chrominance component, both quad tree and binary tree may be supported for the luminance component, and quad tree division may be supported for the chrominance component.

또한, 휘도와 색차 성분에서 쿼드 트리 분할과 바이너리 트리 분할을 지원하되, 상기 분할 지원 범위가 휘도와 색차 성분에도 동일 또는 비례할 수도 있고, 그렇지 않을 수도 있다. 예를 들어, 컬러 포맷이 4:2:0인 경우일 경우, 색차 성분의 분할 지원 범위가 휘도 성분의 분할 지원 범위의 N/2일 수 있다.In addition, quad tree division and binary tree division are supported in luminance and chrominance components, but the division support range may or may not be the same or proportional to luminance and chrominance components. For example, in the case where the color format is 4:2:0, the division support range of the chrominance component may be N/2 of the division support range of the luminance component.

다른 예로, 슬라이스 타입에 따라 다른 설정을 둘 수 있다. 예를 들어, I 슬라이스에서는 쿼드 트리 분할을 지원할 수 있고, P 슬라이스에서는 바이너리 트리 분할을 지원할 수 있고, B 슬라이스에서는 쿼드 트리 분할과 바이너리 트리 분할을 함께 지원할 수 있다.As another example, different settings can be set depending on the slice type. For example, an I slice can support quad tree partitioning, a P slice can support binary tree partitioning, and a B slice can support both quad tree partitioning and binary tree partitioning.

상기 예와 같이 쿼드 트리 분할 및 바이너리 트리 분할이 다양한 조건에 따라 설정 및 지원될 수 있다. 상기의 예들은 전술한 경우에만 특정하는 것은 아니며 서로의 조건이 뒤바뀌는 경우도 포함할 수 있고, 상기 예에서 언급된 하나 이상의 요인 또는 이들의 조합되는 경우도 포함할 수 있고, 다른 경우의 예로 변형 또한 가능하다. 위의 분할 허용 깊이 한계는 분할 방식(쿼드트리, 바이너리 트리), 슬라이스 타입, 휘도/색차 성분, 부호화 모드 등에서 최소 하나 이상의 요인 또는 이들의 조합에 따라 결정될 수 있다.As in the example above, quad tree partitioning and binary tree partitioning can be set and supported according to various conditions. The above examples are not specific only to the above-described cases and may include cases where the conditions are reversed, and may also include cases where one or more factors mentioned in the above examples or a combination thereof are used, and may also be modified as examples of other cases. possible. The above allowable division depth limit may be determined based on at least one or a combination of factors such as division method (quad tree, binary tree), slice type, luminance/chrominance component, and encoding mode.

또한, 상기 분할 지원 범위는 분할 방식(쿼드트리, 바이너리 트리), 슬라이스 타입, 휘도/색차 성분, 부호화 모드 등에서 최소 하나 이상의 요인에 또는 이들의 조합에 따라 결정될 수 있으며, 관련 정보는 분할 지원 범위의 최대값, 최소값으로 표현할 수 있다. 이에 대한 정보를 명시적 플래그로 구성할 경우, 최대값/최소값 각각의 길이 정보, 또는 최소값과 최대값의 차이값 정보 등을 표현할 수 있다.In addition, the division support range may be determined based on at least one or a combination of factors such as division method (quad tree, binary tree), slice type, luminance/chrominance component, and encoding mode, and related information is provided in the division support range. It can be expressed as the maximum or minimum value. When this information is configured as an explicit flag, information on the length of each maximum/minimum value, or information on the difference between the minimum and maximum values, etc. can be expressed.

예를 들어, 최대값과 최소값이 k의 지수승(k를 2라 가정)으로 구성되어 있을 경우, 최대값과 최소값의 지수 정보를 다양한 이진화를 통해 부호화하여 복호화 장치에 전달할 수 있다. 또는, 최대값과 최소값의 지수의 차이값을 전달할 수 있다. 이 때 전송되는 정보는 최소값의 지수 정보와 지수의 차이값 정보일 수 있다For example, if the maximum and minimum values are composed of the exponents of k (assuming k to be 2), the exponent information of the maximum and minimum values can be encoded through various binarizations and transmitted to the decoding device. Alternatively, the difference between the exponents of the maximum and minimum values can be transmitted. At this time, the information transmitted may be index information of the minimum value and information of the difference value of the index.

전술한 설명에 따라 플래그와 관련한 정보들은 시퀀스, 픽쳐, 슬라이스, 타일, 블록 등의 단위에서 생성되고 전송될 수 있다.According to the above description, information related to the flag can be generated and transmitted in units such as sequence, picture, slice, tile, and block.

상기 예시로 제시된 분할 플래그들로 쿼드 트리 또는 바이너리 트리 또는 두 트리 방식의 혼합을 통해 블록 분할 정보를 나타낼 수 있으며, 분할 플래그는 단항 이진화, 절삭형 단항 이진화 등의 다양한 방법으로 부호화하여 관련 정보를 복호화 장치에 전달할 수 있다. 상기 블록의 분할 정보를 표현하기 위한 분할 플래그의 비트스트림 구조는 1개 이상의 스캔 방법 중 선택할 수 있다.The split flags presented in the example above can represent block split information through a quad tree or binary tree, or a mixture of the two tree methods, and the split flag is encoded in various methods such as unary binarization and truncated unary binarization to decode the related information. Can be transmitted to the device. The bitstream structure of the split flag for expressing the split information of the block can be selected from one or more scan methods.

예를 들어, 분할 깊이 순서(dep0에서 dep_k순서로) 기준으로 분할 플래그들의 비트스트림을 구성할 수 있고, 분할 여부 기준으로 분할 플래그들의 비트스트림을 구성할 수도 있다. 분할 깊이 순서 기준 방법에서는 최초 블록 기준으로 현 수준의 깊이에서의 분할 정보를 획득한 후 다음 수준의 깊이에서의 분할 정보를 획득하는 방법이며, 분할 여부 기준 방법에서는 최초 블록 기준으로 분할된 블록에서의 추가 분할 정보를 우선적으로 획득하는 방법을 의미하며, 이 외에도 위의 예에서 제시되지 않은 다른 스캔 방법이 포함되어 선택될 수 있다.For example, the bitstream of the split flags can be configured based on the split depth order (from dep0 to dep_k), and the bitstream of the split flags can also be configured based on whether or not the split flags are split. In the division depth order-based method, division information at the current level depth is obtained based on the first block and then division information at the next level depth is obtained. In the division method based on the first block, division information is obtained in the divided block based on the first block. It refers to a method of preferentially acquiring additional segmentation information, and other scan methods not presented in the above example may be included and selected.

또한, 구현에 따라서, 블록 분할부는 전술한 분할 플래그가 아닌 미리 정의된 소정 형태의 블록 후보군에 대한 인덱스 정보를 생성하여 이를 표현할 수 있다. 블록 후보군의 형태는, 예를 들어, 분할 전 블록에서 가질 수 있는 분할 블록의 형태로서 M×N, M/2×N, M×N/2, M/4×N, 3M/4×N, M×N/4, M×3N/4, M/2×N/2 등을 포함할 수 있다.Additionally, depending on implementation, the block division unit may generate and express index information for a predefined type of block candidate group rather than the above-described division flag. The form of the block candidate group is, for example, the form of the split block that can be had in the block before splitting, such as M×N, M/2×N, M×N/2, M/4×N, 3M/4×N, It may include M×N/4, M×3N/4, M/2×N/2, etc.

위와 같이 분할 블록의 후보군이 결정되면 상기 분할 블록 형태에 대한 인덱스 정보를 고정 길이 이진화, 단삭 절단형 이진화, 절단형 이진화 등과 같은 다양한 방법을 통해 부호화할 수 있다. 위에서 설명한 분할 플래그와 같이 블록의 분할 깊이, 부호화 모드, 예측 모드, 크기, 형태, 종류 그리고 슬라이스 타입, 분할 허용 깊이 한계, 분할 허용 최소/최대 크기 등의 요인 중 최소 하나 이상의 요인 또는 이들의 조합에 따라 분할 블록 후보군이 결정될 수 있다.Once the candidate group for the split block is determined as above, the index information for the split block type can be encoded through various methods such as fixed-length binarization, truncated binarization, truncated binarization, etc. As with the split flag described above, at least one or a combination of factors such as the block's split depth, coding mode, prediction mode, size, shape, type, slice type, split allowable depth limit, and split allowable minimum/maximum size, etc. Accordingly, the split block candidate group may be determined.

다음 설명을 위해서 (M×N, M×N/2)를 후보 리스트1(list1), (M×N, M/2×N, M×N/2, M/2×N/2)를 후보 리스트2(list2), (M×N, M/2×N, M×N/2)를 후보 리스트3(list3), (M×N, M/2×N, M×N/2, M/4×N, 3M/4×N, M×N/4, M×3N/4, M/2×N/2)를 후보 리스트4(list4)로 가정한다. 예를 들어, M×N을 기준으로 설명할 때, (M=N)일 경우에는 후보 list2의 분할 블록 후보를, (M≠N)일 경우에는 후보 list3의 분할 블록 후보를 지원할 수 있다.For the following explanation, (M×N, M×N/2) is candidate list 1 (list1), and (M×N, M/2×N, M×N/2, M/2×N/2) is candidate list 1. List 2 (list2), (M×N, M/2×N, M×N/2) is converted into candidate list 3 (list3), (M×N, M/2×N, M×N/2, M/ 4×N, 3M/4×N, M×N/4, M×3N/4, M/2×N/2) is assumed to be candidate list 4 (list4). For example, when explaining based on M×N, if (M=N), the split block candidate of candidate list2 can be supported, and if (M≠N), the split block candidate of candidate list3 can be supported.

다른 예로, M×N의 M 또는 N이 경계값(blk_th)보다 크거나 같을 경우에는 후보 list2의 분할 블록 후보를, 그보다 작을 경우에는 후보 list4의 분할 블록 후보를 지원할 수 있다. 또한, M 또는 N이 제1 경계값(blk_th_1)보다 크거나 같을 경우에는 후보 list1의 분할 블록 후보를, 제1 경계값(blk_th_1)보다는 작지만 제2 경계값(blk_th_2)보다는 크거나 같을 경우에는 후보 list2의 분할 블록 후보를, 제2 경계값(blk_th_2)보다 작을 경우에는 후보 list4의 분할 블록 후보를 지원할 수 있다.As another example, if M or N of M In addition, if M or N is greater than or equal to the first boundary value (blk_th_1), the split block candidate of candidate list1 is selected, and if M or N is less than the first boundary value (blk_th_1) but greater than or equal to the second boundary value (blk_th_2), the candidate If the split block candidate in list2 is smaller than the second boundary value (blk_th_2), the split block candidate in candidate list4 can be supported.

다른 예로, 부호화 모드가 화면 내 예측인 경우 후보 list2의 분할 블록 후보를, 화면 간 예측인 경우 후보 list4의 분할 블록 후보를 지원할 수 있다.As another example, if the encoding mode is intra-screen prediction, the split block candidate of candidate list2 can be supported, and if the encoding mode is inter-screen prediction, the split block candidate of candidate list4 can be supported.

상기와 같은 분할 블록 후보가 지원된다 하더라도 각각의 블록에서 이진화에 따른 비트 구성은 같을 수도, 다를 수도 있다. 예를 들어, 위의 분할 플래그에서의 적용과 같이 블록 크기 또는 형태에 따라 지원되는 분할 블록 후보가 제한된다면 해당 블록 후보의 이진화에 따른 비트 구성이 달라질 수 있다. 예컨대, (M>N)일 경우에는 가로 분할에 따른 블록 형태 즉, M×N, M×N/2, M/2×N/2를 지원할 수 있고, 분할 블록 후보군(M×N, M/2×N, M×N/2, M/2×N/2)에서의 M×N/2과 현재 조건의 M×N/2에 따른 인덱스의 이진 비트가 서로 다를 수 있다.Even if the above split block candidates are supported, the bit configuration according to binarization in each block may be the same or different. For example, if the supported split block candidates are limited depending on the block size or shape as applied in the split flag above, the bit configuration may vary depending on the binarization of the block candidate. For example, in the case of (M>N), block types according to horizontal division, that is, M The binary bits of the index according to M×N/2 in (2×N, M×N/2, M/2×N/2) and M×N/2 of the current condition may be different.

블록의 종류 예컨대 부호화, 예측, 변환, 양자화, 엔트로피, 인루프 필터링 등에 사용되는 블록의 종류에 따라 분할 플래그 또는 분할 인덱스 방식 중 하나를 사용하여 블록의 분할 및 형태에 대한 정보를 표현할 수 있다. 또한, 각 블록 종류에 따라 분할 및 블록의 형태 지원에 대한 블록 크기 제한 및 분할 허용 깊이 한계 등이 다를 수 있다.Depending on the type of block used, for example, for encoding, prediction, transformation, quantization, entropy, in-loop filtering, etc., information about the division and shape of the block can be expressed using either a split flag or a split index method. Additionally, depending on each block type, the block size limit and allowable split depth limit for splitting and block type support may be different.

블록 단위의 부호화 및 복호화 과정은 우선 부호화 블록이 결정된 후, 예측 블록 결정, 변환 블록 결정, 양자화 블록 결정, 엔트로피 블록 결정, 인루프 필터 결정 등의 과정에 따라 부호화 및 복호화를 진행할 수 있다. 상기의 부호화 및 복호화 과정에 대한 순서는 항상 고정적이지 않으며, 일부 순서가 변경되거나 제외될 수 있다. 상기 블록의 크기 및 형태의 후보별 부호화 비용에 따라 각 블록의 크기 및 형태가 결정되고, 결정된 각 블록의 영상 데이터 및 결정된 각 블록의 크기 및 형태 등의 분할 관련 정보들을 부호화할 수 있다.In the block-level encoding and decoding process, a coding block is first determined, and then encoding and decoding can be performed according to processes such as prediction block determination, transformation block determination, quantization block determination, entropy block determination, and in-loop filter determination. The order of the above encoding and decoding processes is not always fixed, and some orders may be changed or excluded. The size and shape of each block are determined according to the encoding cost for each candidate for the size and shape of the block, and segmentation-related information such as image data of each determined block and the size and shape of each determined block can be encoded.

예측부(200)는 소프트웨어 모듈인 예측 모듈(prediction module)을 이용하여 구현될 수 있고, 부호화할 블록에 대하여 화면 내 예측 방식이나 화면 간 예측 방식으로 예측 블록을 생성할 수 있다. 여기서, 예측 블록은 화소 차이의 관점에서, 부호화할 블록과 가깝게 일치하는 것으로 이해되는 블록이며, SAD(sum of absolute difference), SSD(sum of square difference)를 포함하는 다양한 방법으로 결정될 수 있다. 또한, 이때 영상 블록들을 복호화시에 사용될 수 있는 각종 구문(syntax)들을 생성할 수도 있다. 예측 블록은 부호화 모드에 따라 화면 내 블록과 화면 간 블록으로 분류될 수 있다.The prediction unit 200 may be implemented using a prediction module, which is a software module, and may generate a prediction block for a block to be encoded using an intra-screen prediction method or an inter-screen prediction method. Here, the prediction block is a block that is understood to closely match the block to be encoded in terms of pixel difference, and can be determined by various methods including sum of absolute difference (SAD) and sum of square difference (SSD). Additionally, at this time, various syntaxes that can be used when decoding image blocks can be generated. Prediction blocks can be classified into intra-screen blocks and inter-screen blocks depending on the encoding mode.

화면 내 예측(intra prediction)은 공간적인 상관성을 이용하는 예측 기술로, 현재 픽쳐 내에서 이전에 부호화되고 복호화되어 복원된 블록들의 참조 화소들을 이용하여 현재 블록을 예측하는 방법을 말한다. 즉, 화면 내 예측과 복원으로 재구성된 밝기 값을 부호화기 및 복호화기에서 참조 화소로 사용할 수 있다. 화면 내 예측은 연속성을 갖는 평탄한 영역 및 일정한 방향성을 가진 영역에 대해 효과적일 수 있으며, 공간적인 상관성을 이용하기 때문에 임의 접근(random access)을 보장하고, 오류 확산을 방지하는 목적으로 사용될 수 있다.Intra prediction is a prediction technique that uses spatial correlation and refers to a method of predicting the current block using reference pixels of previously encoded, decoded, and restored blocks within the current picture. In other words, the brightness value reconstructed through intra-screen prediction and restoration can be used as a reference pixel in the encoder and decoder. In-screen prediction can be effective for flat areas with continuity and areas with a certain direction, and because it uses spatial correlation, it can be used to ensure random access and prevent error spread.

화면 간 예측(inter prediction)은 하나 이상의 과거 또는 미래 픽쳐에서 부호화된 영상을 참조하여 시간적인 상관성을 이용하여 데이터의 중복을 제거하는 압축 기법을 이용한다. 즉, 화면 간 예측은 하나 이상의 과거 또는 미래 픽쳐를 참조함으로써 높은 유사성을 갖는 예측 신호를 생성할 수 있다. 화면 간 예측을 이용하는 부호화기에서는 참조 픽쳐에서 현재 부호화하려는 블록과 상관도가 높은 블록을 탐색하고, 선택된 블록의 위치 정보와 잔차(residue) 신호를 복호화기로 전송할 수 있고, 복호화기는 전송된 영상의 선택 정보를 이용하여 부호화기와 동일한 예측 블록을 생성하고 전송된 잔차 신호를 보상하여 복원 영상을 구성할 수 있다.Inter prediction uses a compression technique that removes data duplication using temporal correlation by referring to images encoded in one or more past or future pictures. That is, inter-picture prediction can generate a prediction signal with high similarity by referring to one or more past or future pictures. In an encoder using inter-screen prediction, a block with a high correlation with the block to be currently encoded can be searched in the reference picture, and the position information and residual signal of the selected block can be transmitted to the decoder, and the decoder can provide selection information of the transmitted image. Using , the same prediction block as the encoder can be generated and the transmitted residual signal can be compensated to construct a restored image.

도 4는 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 P 슬라이스의 화면 간 예측을 나타낸 예시도이다. 도 5는 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 B 슬라이스의 화면 간 예측을 나타낸 예시도이다.Figure 4 is an example diagram showing inter-screen prediction of a P slice in an image encoding and decoding method according to an embodiment of the present invention. Figure 5 is an example diagram showing inter-screen prediction of a B slice in an image encoding and decoding method according to an embodiment of the present invention.

본 실시예의 영상 부호화 방법에서, 화면 간 예측은 시간적으로 높은 상관성이 있는 이전에 부호화된 픽쳐로부터 예측 블록을 생성하기 때문에 부호화 효율을 높일 수 있다. Current(t)는 부호화할 현재 픽쳐를 의미할 수 있고, 영상 픽쳐의 시간적인 흐름 혹은 POC(picture order count)를 기준으로 할 때 현재 픽쳐의 POC보다 이전의 제1 시간적인 거리(t-1)를 가지는 제1 참조픽쳐와 제1 시간적인 거리 이전의 제2 시간적인 거리(t-2)를 가지는 제2 참조픽쳐를 포함할 수 있다.In the video encoding method of this embodiment, inter-screen prediction can increase encoding efficiency because prediction blocks are generated from previously encoded pictures with high temporal correlation. Current(t) may refer to the current picture to be encoded, and based on the temporal flow of the video picture or POC (picture order count), the first temporal distance (t-1) before the POC of the current picture. It may include a first reference picture having and a second reference picture having a second temporal distance (t-2) before the first temporal distance.

즉, 도 4에 도시한 바와 같이, 본 실시예의 영상 부호화 방법에 채용할 수 있는 화면 간 예측은 현재 픽쳐(current(t))의 현재 블록과 참조 픽쳐들(t-1, t-2)의 참조 블록들의 블록 매칭을 통해 상관성이 높은 블록을 이전에 부호화가 완료된 참조 픽쳐들(t-1, t-2)로부터 최적의 예측 블록을 찾는 움직임 추정을 수행할 수 있다. 정밀한 추정을 위해 필요에 따라 인접한 두 화소들 사이에 적어도 하나 이상의 부화소가 배열된 구조에 기반하는 보간(interpolation) 과정을 수행한 후, 최적의 예측 블록을 찾은 후 움직임 보상을 하여 최종적인 예측 블록을 찾을 수 있다.That is, as shown in FIG. 4, inter-screen prediction that can be employed in the video encoding method of this embodiment is the current block of the current picture (current(t)) and the reference pictures (t-1, t-2). Through block matching of reference blocks, motion estimation can be performed to find the optimal prediction block from reference pictures (t-1, t-2) for which blocks with high correlation have previously been encoded. For precise estimation, if necessary, an interpolation process based on a structure in which at least one or more subpixels are arranged between two adjacent pixels is performed, then the optimal prediction block is found, and motion compensation is performed to create the final prediction block. can be found.

또한, 도 5에 도시한 바와 같이, 본 실시예의 영상 부호화 방법에 채용할 수 있는 화면 간 예측은 현재 픽쳐(current(t))를 기준으로 시간적으로 양방향에 존재하는 이미 부호화가 완료된 참조 픽쳐들(t-1, t+1)로부터 예측 블록을 생성할 수 있다. 또한, 1개 이상의 참조 픽쳐에서 2개의 예측 블록을 생성할 수 있다.In addition, as shown in FIG. 5, inter-screen prediction that can be employed in the video encoding method of this embodiment is based on already encoded reference pictures (current(t)) that exist in both directions temporally based on the current picture (current(t)). A prediction block can be generated from (t-1, t+1). Additionally, two prediction blocks can be generated from one or more reference pictures.

화면 간 예측을 통해 영상의 부호화를 수행할 경우, 최적의 예측 블록에 대한 움직임 벡터 정보와 참조 픽쳐에 대한 정보를 부호화한다. 본 실시예에서는 단방향 또는 양방향으로 예측 블록을 생성할 경우 참조 픽쳐 리스트를 달리 구성하여 해당 참조 픽쳐 리스트로부터 예측 블록을 생성할 수 있다. 기본적으로 시간적으로 현재 픽쳐 이전에 존재하는 참조 픽쳐는 리스트 0(L0)에 할당하여 관리되고 현재 픽쳐 이후에 존재하는 참조 픽쳐는 리스트 1(L1)에 할당하여 관리될 수 있다.When encoding an image through inter-screen prediction, motion vector information about the optimal prediction block and information about the reference picture are encoded. In this embodiment, when generating a prediction block in one direction or two directions, the reference picture list can be configured differently and the prediction block can be generated from the corresponding reference picture list. Basically, reference pictures that exist temporally before the current picture can be managed by being assigned to list 0 (L0), and reference pictures that exist after the current picture can be managed by being assigned to list 1 (L1).

참조 픽쳐 리스트 0를 구성할 때, 참조 픽쳐 리스트 0의 참조 픽쳐 허용 개수까지 채우지 못할 경우 현재 픽쳐 이후에 존재하는 참조 픽쳐를 할당할 수 있다. 이와 비슷하게 참조 픽쳐 리스트 1을 구성할 때, 참조 픽쳐 리스트 1의 참조 픽쳐 허용 개수까지 채우지 못할 경우 현재 픽쳐 이전에 존재하는 참조 픽쳐를 할당할 수 있다.When constructing reference picture list 0, if the allowable number of reference pictures in reference picture list 0 is not filled, a reference picture that exists after the current picture can be assigned. Similarly, when constructing reference picture list 1, if the allowable number of reference pictures in reference picture list 1 is not filled, a reference picture that exists before the current picture can be assigned.

도 6은 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 단방향으로 예측 블록을 생성하는 경우를 설명하기 위한 예시도이다.Figure 6 is an example diagram illustrating the case of generating a prediction block unidirectionally in the video encoding and decoding method according to an embodiment of the present invention.

도 6을 참조하면, 본 실시예에 따른 영상 부호화 및 복호화 방법에서는 기존과 같이 이전에 부호화된 참조 픽쳐(t-1, t-2)로부터 예측 블록을 찾을 수 있고, 이에 더하여 현재 픽쳐(current(t))에 이미 부호화가 완료된 영역으로부터 예측 블록을 찾을 수 있다.Referring to FIG. 6, in the video encoding and decoding method according to this embodiment, a prediction block can be found from previously encoded reference pictures (t-1, t-2) as before, and in addition, the current picture (current( A prediction block can be found from an area that has already been encoded in t)).

즉, 본 실시예에 따른 영상 부호화 및 복호화 방법에서는, 시간적으로 높은 상관성이 있는 이전에 부호화된 픽쳐(t-1, t-2)로부터 예측 블록을 생성한 것뿐만 아니라 공간적으로 상관성이 높은 예측 블록을 함께 찾도록 구현될 수 있다. 그러한 공간적으로 상관성이 높은 예측 블록을 찾는 것은 화면 내 예측의 방식으로 예측 블록을 찾는 것에 대응할 수 있다. 현재 픽쳐에서 부호화가 완료된 영역으로부터 블록 매칭을 수행하기 위해, 본 실시예의 영상 부호화 방법은 화면 내 예측 모드와 혼합하여 예측 후보와 관련된 정보에 대한 신택스(syntax)를 구성할 수 있다.That is, in the image encoding and decoding method according to this embodiment, not only a prediction block is generated from previously encoded pictures (t-1, t-2) with high temporal correlation, but also a prediction block with high spatial correlation is generated. It can be implemented to find together. Finding such spatially highly correlated prediction blocks can correspond to finding prediction blocks by way of intra-picture prediction. In order to perform block matching from a fully encoded area in the current picture, the video encoding method of this embodiment can be combined with an intra-prediction mode to configure a syntax for information related to the prediction candidate.

예를 들어, n(n은 임의의 자연수) 가지의 화면 내 예측 모드를 지원하는 경우, 한 가지 모드를 화면 내 예측 후보군에 추가하여 n+1가지 모드를 지원하며 2M-1≤n+1<2M 를 만족시키는 M개의 고정 비트를 사용하여 예측 모드를 부호화할 수 있다. 또한, HEVC의 MPM(most probable mode)와 같이 가능성 높은 예측 모드의 후보군 중에서 선택하도록 구현될 수 있다. 또한, 예측 모드 부호화의 상위 단계에서 우선적으로 부호화할 수도 있다.For example, if n (n is a random natural number) intra-screen prediction modes are supported, n+1 modes are supported by adding one mode to the intra-screen prediction candidate group, and 2 M-1 ≤n+1 The prediction mode can be encoded using M fixed bits that satisfy <2 M. Additionally, it can be implemented to select from a group of candidates for a highly probable prediction mode, such as HEVC's most probable mode (MPM). Additionally, encoding may be preferentially performed at a higher level of prediction mode encoding.

현재 픽쳐에서 블록 매칭을 통해 예측 블록을 생성할 경우, 본 실시예의 영상 부호화 방법은 화면 간 예측 모드와 혼합하여 관련된 정보에 대한 신택스를 구성할 수도 있다. 추가적인 관련 예측 모드 정보로는 움직임 또는 이동(motion or displacement) 관련 정보가 이용될 수 있다. 움직임 또는 이동 관련 정보는 여러 벡터 후보 중 최적의 후보 정보, 최적의 후보 벡터와 실제 벡터와의 차분치, 참조 방향, 참조 픽쳐 정보 등을 포함할 수 있다.When generating a prediction block through block matching in the current picture, the video encoding method of this embodiment may be combined with the inter-screen prediction mode to configure syntax for related information. Information related to motion or displacement may be used as additional related prediction mode information. Motion or movement-related information may include optimal candidate information among several vector candidates, difference values between the optimal candidate vector and the actual vector, reference direction, reference picture information, etc.

도 7은 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 참조 픽쳐 리스트를 구성하는 예시도이다. 도 8은 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 참조 픽쳐 리스트로부터 화면 간 예측을 수행하는 경우의 다른 예를 나타낸 예시도이다.Figure 7 is an example diagram of configuring a reference picture list in the video encoding and decoding method according to an embodiment of the present invention. Figure 8 is an exemplary diagram showing another example of performing inter-screen prediction from a reference picture list in the video encoding and decoding method according to an embodiment of the present invention.

도 7을 참조하면, 본 실시예에 따른 영상 부호화 방법은, 현재 픽쳐(current(t))의 현재 블록에 대하여 제1 참조픽쳐 리스트(reference list 0, L0)와 제2 참조픽쳐 리스트(reference list 1, L1)로부터 화면 간 예측을 수행할 수 있다.Referring to FIG. 7, the video encoding method according to this embodiment includes a first reference picture list (reference list 0, L0) and a second reference picture list (reference list) for the current block of the current picture (current(t)). 1, L1), inter-screen prediction can be performed.

도 7 및 도 8을 참조하면, 참조 픽쳐 리스트 0은 현재 픽쳐(t) 이전의 참조 픽쳐로 구성할 수 있는데, t-1, t-2는 각각 현재 픽쳐(t)의 POC보다 이전의 제1 시간적인 거리(t-1), 제2 시간적인 거리(t-2)를 가지는 참조 픽쳐들을 지시한다. 또한, 참조 픽쳐 리스트 1은 현재 픽쳐(t) 이후의 참조 픽쳐로 구성할 수 있는데, t+1, t+2는 각각 현재 픽쳐(t)의 POC보다 이후의 제1 시간적인 거리(t+1), 제2 시간적인 거리(t+2)를 가지는 참조 픽쳐들을 지시한다. Referring to Figures 7 and 8, reference picture list 0 can be composed of reference pictures before the current picture (t), where t-1 and t-2 are the first picture before the POC of the current picture (t), respectively. Indicates reference pictures having a temporal distance (t-1) and a second temporal distance (t-2). In addition, reference picture list 1 can be composed of reference pictures after the current picture (t), where t+1 and t+2 are the first temporal distance (t+1) after the POC of the current picture (t), respectively. ), indicates reference pictures having a second temporal distance (t+2).

참조 픽쳐 리스트 구성에 관한 전술한 예들은 시간적인 거리(본 예에서는 POC 기준)의 차이가 1인 참조 픽쳐들로 참조 픽쳐 리스트를 구성하는 예를 나타내고 있으나, 참조 픽쳐간의 시간적인 거리 차이를 다르게 구성할 수도 있다. 즉, 참조 픽쳐들의 인덱스 차이와 참조 픽쳐들의 시간적인 거리 차이가 비례하지 않을 수 있다는 것을 의미한다. 또한, 리스트 구성 순서를 시간적인 거리 기준으로 구성되지 않을 수도 있다. 이에 대한 내용은 후술할 참조 픽쳐 리스트 구성 예에서 확인할 수 있다.The above-described examples of reference picture list construction show examples of configuring the reference picture list with reference pictures whose temporal distance difference (in this example, POC standard) is 1, but the temporal distance difference between reference pictures is constructed differently. You may. That is, this means that the index difference between reference pictures and the temporal distance difference between reference pictures may not be proportional. Additionally, the order of list composition may not be based on temporal distance. Details about this can be found in the reference picture list configuration example that will be described later.

슬라이스 타입(I, P 또는 B)에 따라 리스트에 있는 참조 픽쳐로부터 예측을 수행할 수 있다. 그리고 현재 픽쳐(current(t))에서 블록 매칭을 통해 예측 블록을 생성할 경우, 참조 픽쳐 리스트(reference list 0 및/또는 reference list 1)에 현재 픽쳐를 추가하여 화면 간 예측 방식으로 부호화를 수행할 수 있다.Prediction can be performed from reference pictures in the list depending on the slice type (I, P, or B). And when generating a prediction block through block matching in the current picture (current(t)), encoding can be performed using inter-screen prediction by adding the current picture to the reference picture list (reference list 0 and/or reference list 1). You can.

도 8에 도시한 바와 같이 참조 픽쳐 리스트 0(reference list 0)에 현재 픽쳐(t)를 추가하거나 또는 참조 픽쳐 리스트 1(reference list 1)에 현재 픽쳐(current(t))를 추가할 수 있다. 즉, 참조 픽쳐 리스트 0은 현재 픽쳐(t) 이전의 참조 픽쳐에 시간적인 거리(t)인 참조 픽쳐를 추가하여 구성할 수 있고, 참조 픽쳐 리스트 1은 현재 픽쳐(t) 이후의 참조 픽쳐에 시간적인 거리(t)인 참조 픽쳐를 추가하여 구성할 수도 있다. As shown in FIG. 8, the current picture (t) can be added to reference picture list 0 (reference list 0) or the current picture (current(t)) can be added to reference picture list 1 (reference list 1). In other words, reference picture list 0 can be constructed by adding a reference picture with a temporal distance (t) to the reference picture before the current picture (t), and reference picture list 1 can be constructed by adding a reference picture with a temporal distance (t) to the reference picture before the current picture (t). It can also be configured by adding a reference picture with an appropriate distance (t).

예를 들어, 참조 픽쳐 리스트 0를 구성할 때 현재 픽쳐 이전의 참조 픽쳐를 참조 픽쳐 리스트 0에 할당하고 이어 현재 픽쳐(t)를 할당할 수 있고, 참조 픽쳐 리스트 1을 구성할 때 현재 픽쳐 이후의 참조 픽쳐를 참조 픽쳐 리스트 1에 할당하고 이어 현재 픽쳐(t)를 할당할 수 있다. 또는, 참조 픽쳐 리스트 0를 구성할 때 현재 픽쳐(t)를 할당하고 이어 현재 픽쳐 이전의 참조 픽쳐를 할당할 수 있고, 참조 픽쳐 리스트 1을 구성할 때 현재 픽쳐(t)를 할당하고 이어 현재 픽쳐 이후의 참조 픽쳐를 할당할 수 있다.For example, when constructing reference picture list 0, the reference picture before the current picture can be assigned to reference picture list 0, followed by the current picture (t), and when constructing reference picture list 1, the reference picture after the current picture can be assigned. A reference picture can be assigned to reference picture list 1 and then the current picture (t) can be assigned. Alternatively, when constructing reference picture list 0, you can allocate the current picture (t) and then allocate the reference picture before the current picture, and when constructing reference picture list 1, you can allocate the current picture (t) and then assign the current picture. Subsequent reference pictures can be assigned.

또한, 참조 픽쳐 리스트 0을 구성할 때 현재 픽쳐 이전의 참조 픽쳐를 할당하고 이어 현재 픽쳐 이후의 참조 픽쳐를 할당하고 현재 픽쳐(t)를 할당할 수 있다. 이와 비슷하게 참조 픽쳐 리스트 1을 구성할 때 현재 픽쳐 이후의 참조 픽쳐를 할당하고 이어 현재 픽쳐 이전의 참조 픽쳐를 할당하고 현재 픽쳐(t)를 할당할 수 있다. 위의 예들은 전술한 경우에만 특정하는 것은 아니며 서로의 조건이 뒤바뀌는 경우도 포함할 수 있고, 다른 경우의 예로 변형 또한 가능하다. Additionally, when constructing reference picture list 0, a reference picture before the current picture can be allocated, then a reference picture after the current picture can be allocated, and then the current picture (t) can be allocated. Similarly, when constructing reference picture list 1, a reference picture after the current picture can be allocated, then a reference picture before the current picture can be allocated, and then the current picture (t) can be allocated. The above examples are not specific to the above-described cases and may include cases where the conditions are reversed, and can also be modified to examples of other cases.

각 참조 픽쳐 리스트에 현재 픽쳐를 포함할 지 여부(예를 들어, 어떤 리스트에도 추가하지 않음 또는 리스트 0에만 추가 또는 리스트 1에만 추가 또는 리스트 0와 1에 같이 추가)는 부호화기/복호화기에 동일한 설정이 가능하고, 이에 대한 정보는 시퀀스, 픽쳐, 슬라이스 등의 단위로 전송이 가능하다. 이에 대한 정보는 고정 길이 이진화, 단삭 절단형 이진화, 절단형 이진화 등의 방법을 통해 부호화될 수 있다.Whether to include the current picture in each reference picture list (e.g., not adding it to any list, or adding it only to list 0, or only adding it to list 1, or adding it to both lists 0 and 1) has the same setting in the encoder/decoder. This is possible, and information about this can be transmitted in units such as sequence, picture, and slice. This information can be encoded through methods such as fixed-length binarization, short-cut binarization, and truncated binarization.

본 실시예의 영상 부호화 및 복호화 방법은, 도 7의 방법과 달리, 현재 픽쳐(t)에서 블록 매칭을 수행하여 예측 블록을 선택하고, 이러한 예측 블록에 대한 관련 정보를 포함하는 참조 픽쳐 리스트를 구성하며, 이러한 참조 픽쳐 리스트를 영상 부호화 및 복호화에 이용하는데 차이가 있다.Unlike the method of FIG. 7, the video encoding and decoding method of this embodiment selects a prediction block by performing block matching in the current picture (t), and constructs a reference picture list containing related information about this prediction block. , there is a difference in using this reference picture list for video encoding and decoding.

참조 픽쳐 리스트 구성에 있어서 각 리스트 구성 순서 및 규칙, 각 리스트의 참조 픽쳐 허용 개수에 대한 설정을 달리할 수 있는데, 이는 현재 픽쳐의 리스트 포함여부(현재 픽쳐를 화면 간 예측에서의 참조 픽쳐로 포함할지 여부), 슬라이스 타입, 리스트 재구성 파라미터(리스트 0, 1에 각각 적용될 수도 있고, 리스트 0, 1에 같이 적용될 수도 있음), GOP(Group of Picture) 내의 위치, 시간적 계층 정보(temporal id) 등의 여러 요인 중 최소 하나 이상의 요인 또는 이들의 조합에 따라 결정될 수도 있고, 명시적으로 관련 정보를 시퀀스, 픽쳐 등의 단위로 전송할 수 있다.When constructing a reference picture list, the order and rules for constructing each list and the allowable number of reference pictures in each list can be set differently, which depends on whether or not the current picture is included in the list (whether the current picture is included as a reference picture in inter-screen prediction). various parameters such as slice type, list reconstruction parameters (may be applied to lists 0 and 1 respectively, or may be applied to lists 0 and 1 together), location within GOP (Group of Picture), temporal layer information (temporal id), etc. It may be determined based on at least one of the factors or a combination thereof, and related information may be explicitly transmitted in units such as sequences and pictures.

예를 들어, P 슬라이스인 경우 현재 픽쳐를 리스트에 포함하는 것과 관계없이 참조 픽쳐 리스트 0은 리스트 구성 규칙 A에 따를 수 있고, B 슬라이스인 경우 현재 픽쳐를 리스트에 포함하는 참조 픽쳐 리스트 0에는 리스트 구성 규칙 B, 참조 픽쳐 리스트 1에는 리스트 구성 규칙 C를 따를 수 있고, 현재 픽쳐를 포함하지 않는 참조 픽쳐 리스트 0에는 리스트 구성 규칙 D, 참조 픽쳐 리스트 1에는 리스트 구성 규칙 E에 따를 수 있으며, 리스트 구성 규칙 중 B와 D, C와 E는 같을 수도 있다.For example, in the case of a P slice, reference picture list 0 can follow list construction rule A regardless of whether the current picture is included in the list, and in the case of a B slice, reference picture list 0 that includes the current picture in the list can be configured in the list. Rule B, list construction rule C can be followed for reference picture list 1, list construction rule D can be followed for reference picture list 0, which does not include the current picture, and list construction rule E can be followed for reference picture list 1, list construction rule Among them, B and D, C and E may be the same.

리스트 구성 규칙은 상기 참조 픽쳐 리스트 구성 예에서 설명된 것과 같거나 변형된 방식으로 구성될 수 있다. 다른 예로, 현재 픽쳐를 리스트에 포함하는 경우에는 제1 참조 픽쳐 허용 개수, 포함하지 않는 경우에는 제2 참조 픽쳐 허용 개수를 설정할 수 있다. 제1 참조 픽쳐 허용 개수와 제2 참조 픽쳐 허용 개수는 같을 수도 있고 다를 수도 있으며, 제1 참조 픽쳐 허용 개수와 제2 참조 픽쳐 허용 개수의 차이가 1인 것을 기본 설정으로 둘 수도 있다.The list construction rule may be configured in the same or modified manner as described in the reference picture list construction example. As another example, when the current picture is included in the list, the allowable number of first reference pictures can be set, and when the current picture is not included in the list, the allowable number of second reference pictures can be set. The allowed number of first reference pictures and the allowed number of second reference pictures may be the same or different, and the default setting may be that the difference between the allowed number of first reference pictures and the allowed number of second reference pictures is 1.

다른 예로, 현재 픽쳐를 리스트에 포함하며 리스트 재구성 파라미터가 적용될 경우, 슬라이스 A에서는 모든 참조 픽쳐가 리스트 재구성 후보군이 될 수 있고, 슬라이스 B에서는 리스트 재구성 후보군에 일부 참조 픽쳐만 포함될 수 있다. 이 때, 슬라이스 A 또는 B는 현재 픽쳐의 리스트 포함여부, 시간적 계층 정보, 슬라이스 타입, GOP 내의 위치 등에 구분될 수 있고, 후보군에 포함 여부를 나누는 요인으로 참조 픽쳐의 POC 또는 참조 픽쳐 인덱스, 참조 예측 방향(현재 픽쳐 전/후), 현재 픽쳐 여부 등에 의해 결정될 수 있다. As another example, when the current picture is included in the list and the list reconstruction parameters are applied, all reference pictures may be included in the list reconstruction candidates in slice A, and only some reference pictures may be included in the list reconstruction candidates in slice B. At this time, slice A or B can be distinguished by whether or not it is included in the list of the current picture, temporal layer information, slice type, position within the GOP, etc., and the POC or reference picture index of the reference picture, reference prediction, etc. are factors for determining inclusion in the candidate group. It can be determined by the direction (before/after the current picture), whether it is the current picture, etc.

전술한 구성에 의하면, 현재 픽쳐에서 화면 간 예측으로 부호화된 참조 블록을 이용할 수 있으므로, I 슬라이스의 움직인 예측에서도 화면 간 예측을 허용 또는 이용할 수 있게 된다.According to the above-described configuration, a reference block encoded by inter-prediction can be used in the current picture, so inter-prediction can be allowed or used even in motion prediction of an I slice.

또한, 참조 픽쳐 리스트를 구성할 때, 슬라이스 타입에 따라 인덱스 할당 또는 리스트 구성 순서를 달리할 수 있다. I 슬라이스의 경우, 현재 픽쳐(current(t))에서 상기 참조 픽쳐 리스트 구성 예와 같이 우선순위를 높게 하여 더 적은 인덱스(예를 들어, idx=0, 1, 2와 같이)를 사용하고, 해당 참조 픽쳐 리스트의 참조 픽쳐 허용 개수(C)를 최대값으로 하는 이진화(고정 길이 이진화, 단삭 절단형 이진화, 절단형 이진화 등) 통해 영상 부호화에서의 비트량을 줄일 수 있다.Additionally, when constructing a reference picture list, the order of index allocation or list construction can be varied depending on the slice type. In the case of an I slice, the priority is set high in the current picture (current(t)) as in the reference picture list configuration example, and fewer indices (e.g., idx=0, 1, 2) are used, and the corresponding The amount of bits in video encoding can be reduced through binarization (fixed-length binarization, truncated binarization, truncated binarization, etc.) that sets the allowable number (C) of reference pictures in the reference picture list to the maximum.

또한, P 또는 B 슬라이스의 경우, 현재 픽쳐에서 블록 매칭을 수행하여 현재 블록의 참조 픽쳐를 예측 후보로 선택할 확률이 다른 참조 픽쳐를 통해 예측 후보를 선택하는 확률보다 낮다고 판단되는 상황이라 하면, 현재 픽쳐의 블록 매칭에 대한 우선순위를 뒤로 설정하여 더 높은 인덱스(예를 들어, idx= C, C-1와 같이)를 사용하여 해당 참조 픽쳐 리스트의 참조 픽쳐 허용 개수를 최대값으로 하는 다양한 방법의 이진화를 통해 영상 부호화에서의 비트량을 줄일 수 있다.Additionally, in the case of a P or B slice, if block matching is performed on the current picture and the probability of selecting the reference picture of the current block as a prediction candidate is determined to be lower than the probability of selecting the prediction candidate through another reference picture, the current picture Various methods of binarization that set the priority for block matching backwards and use a higher index (e.g., idx=C, C-1) to maximize the number of reference pictures allowed in the corresponding reference picture list. Through this, the amount of bits in video encoding can be reduced.

위의 예에서 현재 픽쳐의 우선순위 설정은 상기 참조 픽쳐 리스트 구성 예에서 설명된 것과 같거나 변형된 방식으로 구성될 수 있다. 또한, 슬라이스 타입에 따라(예를 들어, I 슬라이스) 참조 픽쳐 리스트를 구성하지 않음으로써 참조 픽쳐에 대한 정보를 생략하는 것이 가능하다. 예컨대, 기존의 화면 간 예측을 통해 예측 블록을 생성하되 화면 간 예측 모드에서의 움직임 정보에서 참조 픽쳐 정보를 제외한 나머지로 화면간 예측 정보를 표현할 수 있다.In the above example, the priority setting of the current picture may be configured in the same or modified manner as described in the reference picture list configuration example. Additionally, it is possible to omit information about reference pictures by not constructing a reference picture list according to slice type (eg, I slice). For example, a prediction block can be generated through existing inter-prediction, but the inter-prediction information can be expressed by excluding the reference picture information from the motion information in the inter-prediction mode.

현재 픽쳐에서 블록 매칭을 수행하는 방식은 슬라이스 타입에 따라 지원 여부를 결정할 수 있다. 예를 들어, 현재 블록에서의 블록 매칭을 I 슬라이스에서는 지원하지만 P 슬라이스나 B 슬라이스에서는 지원하지 않도록 설정할 수도 있고, 다른 예로의 변형 또한 가능하다. 또한, 현재 픽쳐에서 블록 매칭을 지원하는 방식은 픽쳐, 슬라이스, 타일 등 단위로 지원 여부를 결정할 수도 있고, GOP 내의 위치, 시간적 계층 정보(temporal ID) 등에 따라 결정할 수도 있다. 이러한 설정 정보는 영상 부호화 과정이나 부호화기에서 복호화기로 시퀀스, 픽쳐, 슬라이스 등의 단위로 전송될 수 있다.The method of performing block matching in the current picture can be supported or not depending on the slice type. For example, block matching in the current block can be set to be supported in the I slice but not in the P slice or B slice, and variations to other examples are also possible. In addition, the method of supporting block matching in the current picture may be determined on a per picture, slice, or tile basis, or may be determined based on location within the GOP, temporal layer information (temporal ID), etc. This setting information can be transmitted during the video encoding process or from the encoder to the decoder in units such as sequences, pictures, and slices.

또한, 상위 레벨 단위에서 위와 관련된 설정 정보 또는 신택스가 존재하며 설정 관련 동작이 온(on)되는 상황이라도 하위 레벨 단위에서 위와 동일한 설정 정보 또는 신택스가 존재할 때, 하위 레벨 단위에서의 설정 정보가 상위 레벨 단위에서의 설정 정보를 우선할 수 있다. 예를 들어, 동일 또는 유사한 설정 정보를 시퀀스, 픽쳐, 슬라이스에서 처리한다면, 시퀀스 단위보다는 픽쳐 단위가, 픽쳐 단위보다는 슬라이스 단위가 우선순위를 가질 수 있다.In addition, even in a situation where setting information or syntax related to the above exists in a higher level unit and a setting-related operation is turned on, when the same setting information or syntax as above exists in a lower level unit, the setting information in the lower level unit is transmitted to the higher level unit. Setting information in units can be prioritized. For example, if the same or similar setting information is processed in a sequence, picture, or slice, the picture unit may have priority over the sequence unit, and the slice unit may have priority over the picture unit.

도 9는 본 발명의 일실시예에 따른 영상 부호화 방법에서 화면 내 예측을 설명하기 위한 예시도이다.Figure 9 is an example diagram for explaining intra-screen prediction in the video encoding method according to an embodiment of the present invention.

도 9를 참조하면, 본 실시예에 따른 화면 내 예측 방법은, 참조 화소 채움(reference sample padding), 참조 화소 필터링(reference sample filtering), 화면 내 예측(intra prediciton) 및 경계 필터링(boundary filtering)의 일련의 단계들을 포함할 수 있다.Referring to FIG. 9, the intra-screen prediction method according to this embodiment includes reference pixel padding, reference sample filtering, intra prediciton, and boundary filtering. It may involve a series of steps.

참조 화소 채움 단계는 참조 화소 구성 단계의 예시일 수 있고, 참조 화소 필터링 단계는 참조 화소 필터부에 의해 실행될 수 있고, 화면 내 예측은 예측 블록 생성 단계와 예측 모드 부호화 단계를 포함할 수 있으며, 경계 필터링은 후처리 필터 단계의 일실시예에 대한 예시일 수 있다.The reference pixel filling step may be an example of the reference pixel configuration step, the reference pixel filtering step may be executed by the reference pixel filter unit, the intra-screen prediction may include a prediction block generation step and a prediction mode encoding step, and the boundary Filtering may be an example of one embodiment of a post-processing filter step.

즉, 본 실시예의 영상 부호화 방법에서 실행되는 화면 내 예측은 참조 화소 구성 단계, 참조 화소 필터링 단계, 예측 블록 생성 단계, 예측 모드 부호화 단계 및 후처리 필터링 단계를 포함할 수 있다. 여러 가지 환경 요인 예컨대, 블록 크기, 블록 형태, 블록 위치, 예측 모드, 예측 방법, 양자화 파라미터 등에 따라서 전술한 과정들 중 하나 또는 일부는 생략될 수 있고, 다른 과정이 추가될 수도 있으며, 위에 기재된 순서가 아닌 다른 순서로 변경될 수 있다.That is, intra-picture prediction performed in the video encoding method of this embodiment may include a reference pixel configuration step, a reference pixel filtering step, a prediction block generation step, a prediction mode encoding step, and a post-processing filtering step. Depending on various environmental factors, such as block size, block type, block location, prediction mode, prediction method, quantization parameter, etc., one or part of the above-described processes may be omitted, and other processes may be added, in the order described above. It may be changed to a different order than .

전술한 참조 화소 구성 단계, 참조 화소 필터링 단계, 예측 블록 생성 단계, 예측 모드 부호화 단계 및 후처리 필터링 단계는 메모리에 저장되는 소프트웨어 모듈들을 메모리에 연결되는 프로세서가 실행하는 형태로 구현될 수 있다. 따라서 이하의 설명에서는 설명의 편의상 각 단계를 구현하는 소프트웨어 모듈과 이를 실행하는 프로세서의 조합에 의해 생성되는 기능부 및/혹은 이러한 기능부의 기능을 수행하는 구성부로서 각각 참조 화소 구성부, 참조 화소 필터부, 예측 블록 생성부, 예측 모드 부호화부 및 후처리 필터부를 각 단계의 실행 주체로서 지칭하기로 한다.The above-described reference pixel configuration step, reference pixel filtering step, prediction block generation step, prediction mode encoding step, and post-processing filtering step may be implemented in a form in which a processor connected to the memory executes software modules stored in the memory. Therefore, in the following description, for convenience of explanation, the reference pixel component and the reference pixel filter are referred to as functional units created by a combination of software modules implementing each step and processors executing them, and/or components that perform the functions of these functional units, respectively. The unit, prediction block generation unit, prediction mode encoding unit, and post-processing filter unit will be referred to as the executor of each step.

각 구성요소를 좀더 구체적으로 설명하면, 참조 화소 구성부는 참조 화소 채움을 통해 현재 블록의 예측에 사용될 참조 화소를 구성한다. 참조 화소가 존재하지 않거나 이용 불가한 경우, 참조 화소 채움은 이용가능한 가까운 화소로부터 값을 복사하는 등의 방법을 통해 참조 화소에 사용될 수 있다. 값의 복사 등에는 복원된 픽쳐 버퍼 또는 복호화 픽쳐 버퍼(decoded picture buffer, DPB)가 이용될 수 있다.To describe each component in more detail, the reference pixel component configures reference pixels to be used for prediction of the current block through reference pixel filling. If a reference pixel does not exist or is unavailable, reference pixel filling can be used for the reference pixel, such as by copying values from a nearby available pixel. A restored picture buffer or a decoded picture buffer (DPB) can be used to copy values.

즉, 화면 내 예측은 현재 픽쳐의 이전에 부호화가 완료된 블록들의 참조 화소를 사용하여 예측을 수행한다. 이를 위해, 참조 화소 구성 단계에서는 현재 블록의 이웃 블록 즉, 왼쪽, 왼쪽 위, 왼쪽 아래, 위쪽, 오른쪽 위 블록들 등과 같은 인접한 화소들을 주로 참조 화소로 사용한다.That is, intra-picture prediction is performed using reference pixels of previously encoded blocks of the current picture. To this end, in the reference pixel configuration step, neighboring pixels of the current block, i.e., left, upper left, lower left, upper, upper right blocks, etc., are mainly used as reference pixels.

다만상기 참조 화소를 위한 이웃 블록의 후보군은 블록의 부호화 순서를 래스터 스캔(raster scan) 또는 제트 스캔(z-scan)를 따를 경우의 예시일 뿐, 역 제트 스캔(inverse z-scan) 등과 같은 스캔이 부호화 순서 스캔 방식으로 사용될 경우에는 위의 블록들에 추가로 오른쪽, 오른쪽 아래, 아래 블록 등과 같은 인접 화소들도 참조 화소로 사용할 수 있다.However, the candidate group of neighboring blocks for the reference pixel is only an example when the coding order of the block follows raster scan or z-scan, and scan such as inverse z-scan. When this coding order scan method is used, in addition to the above blocks, adjacent pixels such as the right, bottom right, and bottom blocks can also be used as reference pixels.

또한, 구현에 따라서 화면 내 예측의 단계별 구성에 따라 바로 인접한 화소 외의 추가적인 화소들이 대체 또는 기존 참조 화소와 혼합되어 사용될 수 있다.In addition, depending on the implementation, depending on the step-by-step configuration of intra-screen prediction, additional pixels other than immediately adjacent pixels may be used as replacements or mixed with existing reference pixels.

또한, 화면 내 예측의 모드 중 방향성을 갖는 모드로 예측이 되는 경우, 정수 단위의 참조 화소를 선형 보간을 통해 소수 단위의 참조 화소를 생성할 수 있다. 정수 단위 위치에 존재하는 참조 화소를 통해 예측을 수행하는 모드는 수직, 수평, 45도, 135도를 갖는 일부 모드를 포함하며, 위의 예측 모드들에 대해서는 소수 단위의 참조 화소를 생성하는 과정은 필요하지 않을 수 있다.Additionally, when prediction is made in a directional mode among intra-prediction modes, reference pixels in decimal units can be generated through linear interpolation of reference pixels in integer units. The mode of performing prediction through reference pixels existing at integer unit positions includes some modes having vertical, horizontal, 45 degrees, and 135 degrees, and for the above prediction modes, the process of generating reference pixels in decimal units is It may not be necessary.

상기 예측 모드를 제외한 다른 방향성을 가진 예측 모드들에서 보간되는 참조 화소는 1/2, 1/4, 1/8, 1/16, 1/32, 1/64 와 같이 1/2의 지수승의 보간 정밀도를 가질 수도 있고, 1/2의 배수의 정밀도를 가질 수도 있다.Reference pixels interpolated in prediction modes with different directions other than the above prediction mode are multiplied by an exponent of 1/2, such as 1/2, 1/4, 1/8, 1/16, 1/32, and 1/64. It may have interpolation precision, or it may have precision of a multiple of 1/2.

그것은 지원되는 예측 모드의 개수 또는 예측 모드의 예측 방향 등에 따라 보간 정밀도가 결정될 수 있기 때문이다. 픽쳐, 슬라이스, 타일, 블록 등에서 항상 고정적인 보간 정밀도를 지원할 수도 있고, 블록의 크기, 블록의 형태, 지원되는 모드의 예측 방향 등에 따라 적응적인 보간 정밀도가 지원될 수도 있다. 이 때, 모드의 예측 방향은 특정 선 기준(예를 들어, 좌표평면 상의 양<+>의 x축)으로 상기 모드가 가리키는 방향의 기울기 정보 또는 각도 정보로 표현될 수 있다.This is because the interpolation precision can be determined depending on the number of prediction modes supported or the prediction direction of the prediction mode. Fixed interpolation precision may always be supported in pictures, slices, tiles, blocks, etc., or adaptive interpolation precision may be supported depending on the size of the block, the shape of the block, the prediction direction of the supported mode, etc. At this time, the predicted direction of the mode can be expressed as tilt information or angle information in the direction indicated by the mode with a specific line reference (for example, the positive x-axis on the coordinate plane).

보간 방법으로는 바로 인접한 정수 화소를 통해 선형 보간을 수행하기도 하지만 그 외의 보간 방법을 지원할 수 있다. 보간을 위해 1개 이상의 필터 종류 및 탭의 개수 예를 들어, 6-tap 위너 필터, 8-tap 칼만 필터 등을 지원할 수 있으며, 블록의 크기, 예측 방향 등에 따라 어떤 보간을 수행할 것인지를 결정할 수 있다. 또한, 관련 정보는 시퀀스, 픽쳐, 슬라이스, 블록 등의 단위로 전송될 수 있다.As an interpolation method, linear interpolation is performed using immediately adjacent integer pixels, but other interpolation methods can be supported. For interpolation, one or more filter types and number of taps, for example, 6-tap Wiener filter, 8-tap Kalman filter, etc. can be supported, and the type of interpolation to be performed can be determined depending on the size of the block, prediction direction, etc. there is. Additionally, related information may be transmitted in units such as sequence, picture, slice, and block.

참조 화소 필터부는 참조 화소를 구성한 후 부호화 과정에서 남아있는 열화를 줄여줌으로써 예측 효율을 높여줄 목적으로 참조 화소에 필터링을 수행할 수 있다. 참조 화소 필터부는, 블록의 크기, 형태 및 예측 모드에 따라 필터의 종류 및 필터링의 적용 유무를 묵시적 또는 명시적으로 결정할 수 있다. 즉, 같은 탭(tap)의 필터라도 필터 종류에 따라 필터 계수를 다르게 결정할 수 있다. 예를 들어, [1,2,1]/4, [1,6,1]/8과 같은 3 탭 필터를 사용할 수 있다.The reference pixel filter unit may perform filtering on the reference pixel for the purpose of increasing prediction efficiency by reducing deterioration remaining during the encoding process after configuring the reference pixel. The reference pixel filter unit may implicitly or explicitly determine the type of filter and whether or not to apply filtering depending on the size, shape, and prediction mode of the block. In other words, even for filters of the same tap, filter coefficients can be determined differently depending on the filter type. For example, you could use a 3-tap filter like [1,2,1]/4, [1,6,1]/8.

또한, 참조 화소 필터부는, 추가적으로 비트를 보낼지 안 보낼지를 결정하여 필터링 적용 여부를 결정할 수 있다. 예를 들어, 묵시적인 경우, 참조 화소 필터부는 주변 참조 블록에서의 화소들의 특성(분산, 표준편차 등)에 따라 필터링 적용 여부를 판단할 수 있다.Additionally, the reference pixel filter unit may determine whether to apply filtering by determining whether to send additional bits or not. For example, in the implicit case, the reference pixel filter unit may determine whether to apply filtering according to the characteristics (variance, standard deviation, etc.) of pixels in the surrounding reference blocks.

또한, 참조 화소 필터부는, 관련 플래그가 잔차 계수, 화면 내 예측 모드 등에 기설정된 숨김(hiding) 조건을 만족하는 경우, 필터링 적용 여부를 판단할 수 있다. 필터의 탭수는, 예를 들어, 작은 블록(blk)에서는 [1,2,1]/4와 같은 3-tap, 큰 블록(blk)에서는 [2,3,6,3,2]/16과 같은 5-tap으로 설정될 수 있고, 적용 횟수는 필터링을 수행하지 않을 것인지, 1번 필터링할 것인지, 2번 필터링할 것인지 등으로 결정될 수 있다.Additionally, the reference pixel filter unit may determine whether to apply filtering when the relevant flag satisfies preset hiding conditions such as residual coefficients and intra-screen prediction mode. The number of taps in the filter is, for example, 3-tap such as [1,2,1]/4 in small block (blk), and [2,3,6,3,2]/16 in large block (blk). It can be set to the same 5-tap, and the number of applications can be determined by whether to not perform filtering, to filter once, or to filter twice.

또한, 참조 화소 필터부는 현재 블록의 가장 인접한 참조 화소에 대해 기본적으로 필터링을 적용할 수 있다. 가장 인접한 참조 화소 외에 추가적인 참조 화소들 또한 필터링 과정에 고려될 수 있다. 예를 들어, 가장 인접한 참조 화소를 대체하여 추가적인 참조 화소들에 필터링을 적용할 수도 있고, 가장 인접한 참조 화소에 추가적인 참조 화소들을 혼용하여 필터링을 적용할 수도 있다.Additionally, the reference pixel filter unit can basically apply filtering to the closest reference pixel of the current block. In addition to the nearest reference pixel, additional reference pixels may also be considered in the filtering process. For example, filtering may be applied to additional reference pixels by replacing the most adjacent reference pixel, or filtering may be applied by mixing additional reference pixels with the most adjacent reference pixel.

상기의 필터링은 고정적 도는 적응적으로 적용될 수 있는데, 이는 현재 블록의 크기 또는 이웃 블록의 크기, 현재 블록 또는 이웃 블록의 부호화 모드, 현재 블록과 이웃 블록의 블록 경계 특성(예를 들어, 부호화 단위의 경계인지 변환 단위의 경계인지 등), 현재 블록 또는 이웃 블록의 예측 모드 또는 방향, 현재 블록 또는 이웃 블록의 예측 방식, 양자화 파라미터 등의 요인 중에서 최소 하나 이상의 요인 또는 이들의 조합에 따라 결정이 될 수 있다. 이에 대한 결정은 부호화기/복호화기에 동일한 설정을 가질 수 있고(묵시적), 부호화 비용 등을 고려하여 결정될 수도 있다(명시적). 기본적으로 적용되는 필터는 저역통과 필터(low pass filter)이며, 위에 명시된 여러 요인에 따라 필터 탭수, 필터 계수, 필터 플래그 부호화 여부, 필터 적용 횟수 등이 결정될 수 있으며, 이에 대한 정보는 시퀀스, 픽쳐, 슬라이스, 블록 등의 단위에서 설정이 가능하며, 관련 정보를 복호화기에 전송할 수 있다.The above filtering can be applied fixedly or adaptively, which includes the size of the current block or the size of the neighboring block, the coding mode of the current block or the neighboring block, and the block boundary characteristics of the current block and the neighboring block (e.g., the size of the coding unit). It can be determined based on at least one or a combination of factors such as (whether it is a boundary or a boundary of a transformation unit, etc.), prediction mode or direction of the current block or neighboring blocks, prediction method of the current block or neighboring blocks, quantization parameters, etc. there is. This decision may be made by having the same settings in the encoder/decoder (implicit) or taking into account coding costs, etc. (explicit). Basically, the applied filter is a low pass filter, and the number of filter taps, filter coefficients, whether the filter flag is encoded, the number of filter applications, etc. can be determined depending on the various factors specified above, and information about this can be stored in the sequence, picture, Settings can be made in units such as slices and blocks, and related information can be transmitted to the decoder.

예측 블록 생성부는 화면 내 예측에 있어서 참조 화소를 통해 외삽 또는 보외(extrapolation) 방식이나, 참조 화소의 평균값(DC) 또는 평면(planar) 모드와 같은 내삽(interpolation) 방식이나, 참조 화소의 복사(copy) 방식으로 예측 블록을 생성할 수 있다. In intra-screen prediction, the prediction block generator uses extrapolation or extrapolation through reference pixels, an interpolation method such as the average value (DC) of the reference pixel or planar mode, or a copy of the reference pixel. ) method, you can create a prediction block.

*참조 화소의 복사의 경우 하나의 참조 화소를 복사하여 하나의 이상의 예측 화소를 생성할 수도 있고, 하나 이상의 참조 화소를 복사하여 하나 이상의 예측 화소를 생성할 수 있으며, 복사한 참조 화소의 개수는 복사된 예측 화소의 개수와 동일하거나 적을 수 있다. *In the case of copying a reference pixel, one or more predicted pixels can be created by copying one reference pixel, or one or more predicted pixels can be created by copying one or more reference pixels. The number of copied reference pixels is It may be equal to or less than the number of predicted pixels.

또한, 상기 예측 방식에 따라 방향성 예측 방식과 비방향성 예측 방식으로 분류가 가능하며, 상세하게는 방향성 예측 방식은 직선 방향성 방식과 곡선 방향성 방식으로 분류가 가능하다. 직선 방향성 방식은 외삽 또는 보외 방식을 차용하나 예측 블록의 화소는 예측 방향 선상에 놓인 참조 화소를 통해 생성하며, 곡선 방향성 방식은 외삽 또는 보외 방식을 차용하나 예측 블록의 화소는 예측 방향 선상에 놓인 참조 화소를 통해 생성하되 블록의 세부 방향성(예를 들어, 에지<Edge>)를 고려하여 화소 단위의 부분적인 예측 방향의 변경이 허용되는 방식을 의미한다.In addition, depending on the prediction method, it can be classified into a directional prediction method and a non-directional prediction method. In detail, the directional prediction method can be classified into a linear directional method and a curved directional method. The straight-line directional method uses an extrapolation or extrapolation method, but the pixels of the prediction block are generated through reference pixels located on the prediction direction line. The curved directionality method adopts an extrapolation or extrapolation method, but the pixels of the prediction block are generated through reference pixels located on the prediction direction line. This refers to a method in which partial prediction direction changes on a pixel basis are allowed while being generated through pixels, taking into account the detailed direction of the block (for example, edge <Edge>).

본 실시예의 영상 부호화 및 복호화 방법에서 방향성 예측 모드의 경우 직선 방향성 방식 위주로 설명을 할 것이다.In the case of the directional prediction mode in the video encoding and decoding method of this embodiment, the description will focus on the linear directional method.

또한, 상기 방향성 예측 방식의 경우 인접한 예측 모드 간의 간격은 균등하거나 비균등일 수 있으며, 이는 블록의 크기 또는 형태에 따라 결정될 수 있다. 예를 들어, 블록 분할부를 통해 현재 블록이 M×N의 크기와 형태를 갖는 블록을 획득했을 때, M과 N이 같을 경우에는 예측 모드 간의 간격은 균등일 수 있으며, M과 N이 다를 경우에는 예측 모드 간의 간격은 비균등일 수 있다.Additionally, in the case of the directional prediction method, the spacing between adjacent prediction modes may be equal or uneven, and this may be determined depending on the size or shape of the block. For example, when the current block obtains a block with the size and shape of M The intervals between prediction modes may be non-uniform.

다른 예로서, M이 N보다 큰 경우에는 수직 방향성을 갖는 모드들은 수직 모드(90도)에 가까운 예측 모드 사이에는 더 세밀한 간격을 할당하고, 수직 모드에 먼 예측 모드에는 넓은 간격을 할당할 수 있다. N이 M보다 큰 경우에는 수평 방향성을 갖는 모드들은 수평 모드(180도)에 가까운 예측 모드 사이에는 더 세밀한 간격을 할당하고, 수평 모드에 먼 예측 모드에는 넓은 간격을 할당할 수 있다.As another example, when M is greater than N, modes with vertical directionality can be assigned finer spacing between prediction modes that are close to the vertical mode (90 degrees), and wider spacing can be assigned to prediction modes that are far from the vertical mode. . When N is greater than M, modes with horizontal orientation can be assigned finer intervals between prediction modes that are close to the horizontal mode (180 degrees), and wider intervals can be assigned to prediction modes that are far from the horizontal mode.

위의 예들은 전술한 경우에만 특정하는 것은 아니며 서로의 조건이 뒤바뀌는 경우도 포함할 수 있고, 다른 경우의 예로 변형 또한 가능하다. 이때, 예측 모드 간의 간격은 각 모드의 방향성을 나타내는 수치 기반으로 계산될 수 있으며, 예측 모드의 방향성은 방향의 기울기 정보 또는 각도 정보로 수치화될 수 있다.The above examples are not specific to the above-described cases and may include cases where the conditions are reversed, and can also be modified to examples of other cases. At this time, the interval between prediction modes can be calculated based on a numerical value indicating the directionality of each mode, and the directionality of the prediction mode can be quantified by direction slope information or angle information.

또한, 위의 방법 외에 공간적인 상관성을 이용하는 다른 방법 등을 포함하여 예측 블록을 생성할 수 있다. 예를 들어, 현재 픽쳐를 참조 픽쳐로 삼아 움직임 탐색 및 보상과 같은 화면 간 예측(inter prediction) 방식을 이용한 참조 블록을 예측 블록으로 생성할 수 있다.Additionally, in addition to the above method, a prediction block can be generated including other methods that use spatial correlation. For example, using the current picture as a reference picture, a reference block using inter prediction methods such as motion detection and compensation can be generated as a prediction block.

예측 블록 생성 단계는 상기 예측 방식에 따라 참조 화소를 사용하여 예측 블록을 생성할 수 있다. 즉, 상기 예측 방식에 따라 기존의 화면 내 예측 방식의 외삽, 내삽, 복사, 평균 등의 방향성 예측 또는 비방향성 예측 방식을 통해 예측 블록을 생성할 수 있고, 화면 간 예측 방식을 사용하여 예측 블록을 생성할 수 있으며, 그 외의 추가적인 방법도 사용될 수 있다.In the prediction block generation step, a prediction block may be generated using reference pixels according to the prediction method. That is, depending on the prediction method, a prediction block can be generated through directional or non-directional prediction methods such as extrapolation, interpolation, copy, and average of the existing intra-screen prediction method, and the prediction block can be generated using the inter-screen prediction method. It can be created, and other additional methods can also be used.

상기 화면 내 예측 방식은 부호화기/복호화기의 동일한 설정 하에 지원될 수 있으며, 슬라이스 타입, 블록의 크기, 블록의 형태 등에 따라 결정될 수 있다. 화면 내 예측 방식은 상기 언급된 예측 방식 중 최소 하나 이상의 방식 또는 이들의 조합에 따라 지원될 수 있다. 화면 내 예측 모드는 상기 지원되는 예측 방식에 따라 구성될 수 있다. 지원되는 화면 내 예측 모드의 개수는 상기 예측 방식, 슬라이스 타입, 블록의 크기, 블록의 형태 등에 따라 결정될 수 있다. 상기 관련 정보들은 시퀀스, 픽쳐, 슬라이스, 블록 등의 단위에서 설정 및 전송이 가능하다.The intra-picture prediction method can be supported under the same settings of the encoder/decoder and can be determined depending on the slice type, block size, block shape, etc. The intra-screen prediction method may be supported according to at least one of the above-mentioned prediction methods or a combination thereof. The intra-screen prediction mode can be configured according to the supported prediction method. The number of supported intra-screen prediction modes may be determined depending on the prediction method, slice type, block size, block shape, etc. The related information can be set and transmitted in units such as sequence, picture, slice, and block.

예측 모드 부호화를 실행하는 예측 모드 부호화 단계는 부호화 비용 측면에서 각 예측 모드에 따른 부호화 비용이 최적인 모드를 현재 블록의 예측 모드로 결정할 수 있다.The prediction mode encoding step of executing prediction mode encoding may determine the mode with the optimal encoding cost for each prediction mode as the prediction mode of the current block in terms of encoding cost.

일례로, 예측 모드 부호화부는 예측 모드 비트를 줄이기 위한 목적으로 하나 이상의 이웃 블록의 모드를 현재 블록 모드 예측에 이용할 수 있다. 현재 블록의 모드와 동일할 확률이 높은 모드(most_probable_mode, MPM) 후보군으로 포함할 수 있는데, 이웃 블록의 모드들은 위의 후보군에 포함될 수 있다. 예를 들어 현재 블록의 왼쪽 위, 왼쪽 아래, 위쪽, 오른쪽 위 등의 블록의 예측 모드를 위의 후보군에 포함할 수 있다.For example, the prediction mode encoder may use the mode of one or more neighboring blocks for current block mode prediction for the purpose of reducing prediction mode bits. A mode with a high probability of being the same as the mode of the current block (most_probable_mode, MPM) can be included as a candidate group, and modes of neighboring blocks can be included in the above candidate group. For example, the prediction mode of the block, such as top left, bottom left, top, and top right of the current block, can be included in the above candidate group.

예측 모드의 후보군은 이웃 블록의 위치, 이웃 블록의 우선순위, 분할 블록에서의 우선순위, 이웃 블록의 크기 또는 형태, 기설정된 특정 모드, (색차 블록인 경우) 휘도 블록의 예측 모드 등의 요인 중 최소 하나 이상의 요인 또는 그들의 조합에 따라 구성될 수 있으며, 관련 정보는 시퀀스, 픽쳐, 슬라이스, 블록 등의 단위로 전송할 수 있다.Candidates for the prediction mode are selected from factors such as the location of the neighboring block, the priority of the neighboring block, the priority in the split block, the size or shape of the neighboring block, a preset specific mode, and the prediction mode of the luminance block (in the case of a chrominance block). It can be configured based on at least one factor or a combination thereof, and related information can be transmitted in units such as sequence, picture, slice, and block.

예를 들어, 현재 블록과 이웃한 블록이 2개 이상의 블록으로 분할되어 있을 경우, 분할된 블록 중 어느 블록의 모드를 현재 블록의 모드 예측 후보로 포함할 지는 부호화기/복호화기의 동일한 설정하에 결정할 수 있다. 또한, 예를 들어, 현재 블록(M×M)의 이웃 블록 중 왼쪽 블록은 블록 분할부에서 쿼드 트리 분할을 수행하여 분할 블록이 3개로 구성되어 있으며 위에서 아래 방향으로 M/2×M/2, M/4×M/4, M/4×M/4의 블록을 포함할 경우, 블록 크기 기준으로 M/2×M/2 블록의 예측 모드를 현재 블록의 모드 예측 후보로 포함할 수 있다.For example, if the current block and the neighboring block are divided into two or more blocks, which block's mode among the divided blocks is to be included as a mode prediction candidate for the current block can be determined under the same settings of the encoder/decoder. there is. In addition, for example, among the neighboring blocks of the current block (M When including blocks of M/4×M/4 and M/4×M/4, the prediction mode of the M/2×M/2 block can be included as a mode prediction candidate for the current block based on the block size.

다른 예로써, 현재 블록(N×N)의 이웃 블록 중 위쪽 블록은 블록 분할부에서 바이너리 트리 분할을 수행하여 분할 블록이 3개로 구성되어 있으며 왼쪽에서 오른쪽 방향으로 N/4×N, N/4×N, N/2×N의 블록을 포함할 경우, 기설정된 순서(왼쪽에서 오른쪽으로 우선순위가 할당됨)에 따라 왼쪽에서 첫번째 N/4×N 블록의 예측 모드를 현재 블록의 모드 예측 후보로 포함할 수 있다. As another example, among the neighboring blocks of the current block (N When including blocks of It can be included as .

다른 예로써, 현재 블록과 이웃한 블록의 예측 모드가 방향성 예측 모드일 경우, 해당 모드의 예측 방향과 인접한 예측 모드(상기 모드의 방향의 기울기 정보 또는 각도 정보 측면)를 현재 블록의 모드 예측 후보군에 포함할 수 있다. 또한, 기설정된 모드(planar, DC, 수직, 수평 등)는 이웃 블록의 예측 모드 구성 또는 조합에 따라 우선적으로 포함될 수 있다.As another example, if the prediction mode of the current block and the neighboring block is a directional prediction mode, the prediction direction of the corresponding mode and the adjacent prediction mode (in terms of slope information or angle information of the direction of the mode) are added to the mode prediction candidate group of the current block. It can be included. Additionally, preset modes (planar, DC, vertical, horizontal, etc.) may be preferentially included depending on the configuration or combination of prediction modes of neighboring blocks.

또한, 이웃 블록의 예측 모드 중 발생 빈도가 높은 예측 모드를 우선적으로 포함할 수 있다. 상기 우선순위는 현재 블록의 모드 예측 후보군에 포함될 가능성 뿐만 아니라 상기 후보군 구성에서도 더 높은 우선순위 또는 인덱스(즉, 이진화 과정에서 적은 비트를 할당받을 확률이 높음을 의미)를 할당받을 가능성을 의미할 수 있다.In addition, among the prediction modes of neighboring blocks, the prediction mode with a high occurrence frequency may be preferentially included. The priority may mean not only the possibility of being included in the mode prediction candidate group of the current block, but also the possibility of being assigned a higher priority or index (i.e., a higher probability of being assigned fewer bits during the binarization process) in the candidate group configuration. there is.

다른 예로써, 현재 블록의 모드 예측 후보군의 최대치가 k개이고, 왼쪽 블록은 현재 블록의 세로 길이보다 길이가 작은 m개의 블록으로 구성되고, 위쪽 블록은 현재 블록의 가로 길이보다 길이가 작은 n개의 블록으로 구성되면, 이웃 블록들의 분할 블록 합(m+n)이 k보다 클 때 기설정된 순서(왼쪽에서 오른쪽, 위쪽에서 아래쪽)에 따라 후보군을 채울 수 있고, 이웃 블록 분할들의 분할 블록 합(m+n)이 후보군의 최대치(k)보다 클 경우, 상기 이웃 블록(왼쪽 블록, 위쪽 블록)의 예측 모드에 상기 이웃 블록 위치 외 다른 이웃 블록(예를 들어, 왼쪽 아래, 왼쪽 위, 오른쪽 위 등)과 같은 블록의 예측 모드도 현재 블록의 모드 예측 후보군에 포함될 수 있다. 위의 예들은 전술한 경우에만 특정하는 것은 아니며 서로의 조건이 뒤바뀌는 경우도 포함할 수 있고, 다른 경우의 예로 변형 또한 가능하다.As another example, the maximum number of mode prediction candidates for the current block is k, the left block consists of m blocks whose length is smaller than the vertical length of the current block, and the upper block consists of n blocks whose length is smaller than the horizontal length of the current block. When the split block sum (m+n) of neighboring blocks is greater than k, the candidate group can be filled according to a preset order (left to right, top to bottom), and the split block sum (m+ If n) is greater than the maximum value (k) of the candidate group, the prediction mode of the neighboring block (left block, upper block) is set to other neighboring blocks (e.g., lower left, upper left, upper right, etc.) than the neighboring block location. The prediction mode of a block such as may also be included in the mode prediction candidate group of the current block. The above examples are not specific to the above-described cases and may include cases where the conditions are reversed, and can also be modified to examples of other cases.

이와 같이, 현재 블록의 모드의 예측을 위한 후보 블록은 특정 블록 위치에만 한정하지 않으며 왼쪽, 왼쪽 위, 왼쪽 아래, 위쪽, 오른쪽 위에 위치하는 블록 중 최소 하나 이상의 블록으로부터 예측 모드 정보를 활용할 수 있으며, 상기 예에서와 같이 여러 요인들을 고려하여 현재 블록의 예측 모드를 후보군으로 구성할 수 있다.In this way, the candidate block for predicting the mode of the current block is not limited to a specific block location, and prediction mode information can be utilized from at least one of the blocks located on the left, top left, bottom left, top, and top right. As in the above example, the prediction mode of the current block can be configured as a candidate group by considering various factors.

예측 모드 부호화부에서는 현재 블록의 모드와 동일할 확률이 높은 모드(MPM) 후보군(본 예에서 후보군 1로 지칭함)과 그렇지 않은 모드 후보군(본 예에서 후보군 2로 지칭함)으로 분류할 수 있으며, 현재 블록의 예측 모드가 상기 후보군들 중 어느 후보군에 속하는지에 따라 예측 모드 부호화 과정이 달라질 수 있다.In the prediction mode encoding unit, the mode (MPM) candidates that have a high probability of being the same as the mode of the current block (referred to as candidate group 1 in this example) can be classified into a mode candidate group that is not (referred to as candidate group 2 in this example), and the current The prediction mode encoding process may vary depending on which candidate group the prediction mode of the block belongs to among the candidate groups.

전체 예측 모드는 후보군 1의 예측 모드와 후보군 2의 예측 모드의 합으로 구성될 수 있으며, 후보군 1의 예측 모드 개수와 후보군 2의 예측 모드 개수는 전체 예측 모드의 개수, 슬라이스 타입, 블록의 크기, 블록의 형태 등의 요인 중 하나 이상의 요인 또는 이들의 조합에 따라 결정될 수 있다. 상기 후보군에 따라 동일한 이진화를 적용하거나 다른 이진화를 적용할 수 있다.The overall prediction mode can be composed of the sum of the prediction modes of candidate group 1 and the prediction mode of candidate group 2, and the number of prediction modes in candidate group 1 and the number of prediction modes in candidate group 2 are the number of total prediction modes, slice type, size of block, It may be determined based on one or more factors, such as the shape of the block, or a combination of these factors. Depending on the candidate group, the same binarization or different binarization can be applied.

예를 들어, 후보군 1에는 고정 길이 이진화를, 후보군 2에는 단삭 절단형 이진화를 적용할 수도 있다. 위의 설명에서 후보군의 개수를 2개로 예를 들었지만, 현재 블록의 모드와 동일할 확률이 높은 모드 제1 후보군, 현재 블록의 모드와 동일할 확률이 높은 모드 제2 후보군, 그렇지 않은 모드 후보군 등과 같이 확장이 가능하며, 이의 변형 또한 가능하다.For example, fixed-length binarization may be applied to candidate group 1, and single-cut binarization may be applied to candidate group 2. In the above explanation, the number of candidate groups is given as two, but the first mode candidate group has a high probability of being the same as the mode of the current block, the second mode candidate group has a high probability of being the same as the mode of the current block, the mode candidate group that does not, etc. Expansion is possible, and modifications thereof are also possible.

후처리 필터부에 의해 실행되는 후처리 필터링 단계는, 현재 블록과 이웃 블록의 경계에 인접한 참조 화소와 인접한 현재 블록 내의 화소 간의 상관성이 높은 특성을 고려하여 이전 과정에서 생성한 예측 블록 중 일부 예측 화소는 경계에 인접한 하나 이상의 참조 화소와 하나 이상의 예측 화소를 필터링하여 생성된 값으로 대체할 수 있고, 상기 블록의 경계에 인접한 참조 화소들간의 특성을 수치화한 값(예를 들어, 화소값의 차이, 기울기 정보 등)을 필터링 과정에 적용하여 생성된 값으로 상기 예측 화소를 대체할 수 있고, 위의 방법 외에 비슷한 목적(참조 화소를 통해 예측 블록의 일부 예측 화소를 보정)을 갖는 다른 방법 등이 추가될 수 있다.The post-processing filtering step executed by the post-processing filter unit selects some predicted pixels from the prediction blocks generated in the previous process, taking into account the characteristic of high correlation between reference pixels adjacent to the boundary between the current block and neighboring blocks and pixels in the adjacent current block. may be replaced with a value generated by filtering one or more reference pixels adjacent to the boundary and one or more prediction pixels, and a value that quantifies the characteristics between reference pixels adjacent to the boundary of the block (e.g., difference in pixel values, The prediction pixel can be replaced with a value generated by applying gradient information, etc.) to the filtering process, and in addition to the above method, other methods with a similar purpose (correcting some prediction pixels of the prediction block through reference pixels) have been added. It can be.

후처리 필터부에 있어서, 필터의 종류 및 필터링 적용 유무는 묵시적 또는 명시적으로 결정될 수 있으며, 후처리 필터부에 사용되는 참조 화소와 현재 화소의 위치 및 개수, 그리고 적용되는 예측 모드의 종류 등은 부호화기/복호화기에서 설정 가능하고, 관련 정보는 시퀀스, 픽쳐, 슬라이스 등의 단위로 전송 가능하다.In the post-processing filter unit, the type of filter and whether or not filtering is applied can be implicitly or explicitly determined, and the location and number of reference pixels and current pixels used in the post-processing filter unit, and the type of prediction mode applied, etc. It can be set in the encoder/decoder, and related information can be transmitted in units such as sequence, picture, and slice.

또한, 후처리 필터링 단계에서는, 블록 경계 필터링(boundary filtering)과 같이 예측 블록 생성 후 추가적인 후처리 과정을 진행할 수 있다. 또한, 잔차 신호 획득 후 변환/양자화 과정 및 그 역과정을 거쳐서 얻게된 잔차 신호와 예측 신호를 합하여 복원된 현재 블록을 위의 경계 필터링과 비슷하게 인접한 참조 블록의 화소의 특성을 고려하여 후처리 필터링을 수행할 수도 있다.Additionally, in the post-processing filtering step, additional post-processing processes may be performed after generating the prediction block, such as block boundary filtering. In addition, after acquiring the residual signal, the current block restored by combining the residual signal and the prediction signal obtained through the conversion/quantization process and the reverse process is post-processed by taking into account the characteristics of the pixels of the adjacent reference block similar to the boundary filtering above. It can also be done.

최종적으로 전술한 과정을 통해 예측 블록을 선택 또는 획득하게 되며, 이 과정에서 나오는 정보는 예측 모드 관련 정보를 포함할 수 있고, 예측 블록의 획득 후 잔차 신호의 부호화를 위해 변환부(210)에 전달할 수 있다.Finally, the prediction block is selected or acquired through the above-described process, and the information resulting from this process may include prediction mode-related information, and after obtaining the prediction block, it is transmitted to the transformer 210 for encoding of the residual signal. You can.

도 10은 본 발명의 일실시예에 따른 영상 부호화 방법에서 P 슬라이스나 B 슬라이스에서의 예측 원리를 설명하기 위한 예시도이다. 도 11은 도 10의 영상 부호화 방법에서 내삽(interpolation)을 수행하는 경우를 설명하기 위한 예시도이다.Figure 10 is an example diagram for explaining the prediction principle in a P slice or B slice in the image encoding method according to an embodiment of the present invention. FIG. 11 is an example diagram illustrating a case of performing interpolation in the image encoding method of FIG. 10.

도 10을 참조하면, 본 실시예에 따른 영상 부호화 방법은, 모션 예측(motion estimation module) 및 보간(interpolation) 단계들을 포함할 수 있다. 모션 예측 단계에서 생성되는 모션 벡터, 참조 픽쳐 인덱스, 참조 방향에 대한 정보는 보간 단계로 전달될 수 있다. 모션 예측 단계와 보간 단계에서는 복원된 픽쳐 버퍼(decoded picture buffer, DPB)에 저장되는 값을 이용할 수 있다.Referring to FIG. 10, the image encoding method according to this embodiment may include motion estimation (motion estimation module) and interpolation steps. Information about the motion vector, reference picture index, and reference direction generated in the motion prediction step may be transmitted to the interpolation step. In the motion prediction step and the interpolation step, values stored in the restored picture buffer (decoded picture buffer, DPB) can be used.

즉, 영상 부호화 장치는, 이전의 부호화된 픽쳐들에서 현재 블록과 유사한 블록을 찾기 위해 모션 예측(motion estimation)을 실행할 수 있다. 또한, 영상 부호화 장치는 소수 단위의 정밀도보다 정밀한 예측을 위해 참조 픽쳐의 내삽(interpolation)을 실행할 수 있다. 최종적으로 영상 부호화 장치는 예측 변수(predictor)를 통해 예측 블록을 획득하게 되며, 이 과정에서 나오는 정보는 움직임 벡터(motion vector), 참조 픽쳐 인덱스(reference picture index 또는 reference index), 참조 방향(reference direction) 등이 있으며, 이후 잔차 신호 부호화를 진행할 수 있다.That is, the video encoding device may perform motion estimation to find a block similar to the current block in previously encoded pictures. In addition, the video encoding device can perform interpolation of the reference picture for prediction more precise than decimal precision. Finally, the video encoding device obtains a prediction block through a predictor, and the information that comes out of this process is a motion vector, a reference picture index (reference picture index or reference index), and a reference direction. ), etc., and then residual signal coding can be performed.

본 실시예에서는 P 슬라이스나 B 슬라이스에서도 화면 내 예측을 수행하기 때문에 화면 간 예측과 화면 내 예측을 지원하는 도 11과 같은 조합 방식의 구현이 가능하다.In this embodiment, since intra-screen prediction is also performed on the P slice or B slice, it is possible to implement a combination method as shown in Figure 11 that supports inter-screen prediction and intra-screen prediction.

도 11에 나타낸 바와 같이, 본 실시예에 따른 영상 부호화 방법은, 참조 화소 채움(reference sample padding), 참조 화소 필터링(reference sample filtering), 화면 내 예측(intra prediction), 경계 필터링(boundary filtering), 모션 예측(motion estimation), 및 보간(interpolation)의 단계들을 포함할 수 있다.As shown in FIG. 11, the image encoding method according to this embodiment includes reference pixel padding, reference sample filtering, intra prediction, boundary filtering, It may include steps of motion estimation and interpolation.

영상 부호화 장치는, 현재 픽쳐에서 블록 매칭을 지원하는 경우, I 슬라이스에서의 예측 방식은 도 9에 도시한 구성이 아닌 도 11에 도시한 구성으로 구현 가능하다. 즉, 영상 부호화 장치는 I 슬라이스에서 예측 모드뿐 아니라 P 슬라이스나 B 슬라이스에서만 발생하는 움직임 벡터, 참조 픽쳐 인덱스, 참조 방향 등의 정보를 예측 블록 생성에 이용할 수 있다. 다만, 참조 픽쳐가 현재라는 특성으로 인해 부분 생략 가능한 정보가 존재할 수 있다. 일례로, 참조 픽쳐가 현재 픽쳐인 경우 참조 픽쳐 인덱스, 참조 방향은 생략 가능하다.When the video encoding device supports block matching in the current picture, the prediction method in the I slice can be implemented using the configuration shown in FIG. 11 rather than the configuration shown in FIG. 9. That is, the video encoding device can use information such as motion vectors, reference picture index, and reference direction that occur only in the P slice or B slice as well as the prediction mode in the I slice to generate a prediction block. However, due to the nature of the reference picture being current, there may be information that can be partially omitted. For example, if the reference picture is the current picture, the reference picture index and reference direction can be omitted.

또한, 영상 부호화 장치는, 내삽(interpolation)을 적용하는 경우, 영상의 특성상 예컨대 컴퓨터 그래픽 등의 인공적인 영상의 특성상 소수 단위까지의 블록 매칭이 필요하지 않을 수 있기 때문에 이에 대한 수행 여부도 부호화기에서 설정할 수 있고, 이에 대해서 시퀀스, 픽쳐, 슬라이스 등의 단위 설정도 가능하다.In addition, when applying interpolation, the image encoding device may not require block matching up to decimal units due to the nature of artificial images such as computer graphics, so whether or not to perform this may be determined by the encoder. It is also possible to set units such as sequence, picture, and slice.

예를 들어, 영상 부호화 장치는, 부호화기의 설정에 따라 화면 간 예측에 사용되는 참조 픽쳐들의 내삽을 수행하지 않을 수 있고, 현재 픽쳐에서 블록 매칭을 하는 경우에만 내삽을 수행하지 않는 등 다양한 설정을 할 수 있다. 즉, 본 실시예의 영상 부호화 장치는 참조 픽쳐들의 내삽 수행 여부에 대해 설정할 수 있다. 이때, 참조 픽쳐 리스트를 구성하는 모든 참조 픽쳐 또는 일부 참조 픽쳐들에 내삽 수행 여부를 결정할 수 있다.For example, the video encoding device may not perform interpolation of reference pictures used for inter-screen prediction depending on the settings of the encoder, and may make various settings such as not performing interpolation only when block matching is performed in the current picture. You can. That is, the video encoding device of this embodiment can set whether to perform interpolation of reference pictures. At this time, it can be determined whether to perform interpolation on all or some reference pictures constituting the reference picture list.

일례로, 영상 부호화 장치는, 어떤 현재 블록에서는 참조 블록이 존재하는 영상의 특성이 인공적인 영상이라 소수 단위로 블록 매칭을 할 필요가 없을 때에는 내삽을 수행하지 않고, 자연 영상이라 소수 단위로 블록 매칭을 할 필요가 있을 때는 내삽을 수행하도록 동작할 수 있다.For example, the image encoding device does not perform interpolation when there is no need to perform block matching in decimal units because the characteristics of the image in which the reference block exists in a certain current block is an artificial image, but matches blocks in decimal units because it is a natural image. When it is necessary to do so, it can be operated to perform interpolation.

또한, 영상 부호화 장치는, 블록 단위로 내삽을 수행한 참조 픽쳐에서 블록 매칭 적용 여부에 대한 설정이 가능하다. 예를 들어, 자연 영상과 인공 영상이 혼합되어 있을 경우 참조 픽쳐에 내삽을 수행하되 인공적인 영상의 부분을 탐색하여 최적의 움직임 벡터를 얻을 수 있는 경우에는 일정 단위(여기에서 정수 단위라고 가정)로 움직임 벡터를 표현할 수 있으며, 또한 선택적으로 자연 영상의 부분을 탐색하여 최적의 움직임 벡터를 얻을 수 있는 경우에는 다른 일정 단위(여기에서는 1/4 단위라고 가정)로 움직임 벡터를 표현할 수 있다.Additionally, the video encoding device can set whether to apply block matching to a reference picture on which interpolation was performed on a block-by-block basis. For example, if natural and artificial images are mixed, interpolation is performed on the reference picture, but if the optimal motion vector can be obtained by exploring parts of the artificial image, it is performed in certain units (assuming integer units here). The motion vector can be expressed, and if the optimal motion vector can be obtained by selectively searching a part of the natural image, the motion vector can be expressed in another constant unit (here, assumed to be a 1/4 unit).

도 12는 본 발명의 일실시예에 따른 영상 부호화 방법의 주요 과정을 코딩 단위(coding unit)에서의 신택스로 설명하기 위한 도면이다.FIG. 12 is a diagram for explaining the main process of the video encoding method according to an embodiment of the present invention using syntax in a coding unit.

도 12를 참조하면, curr_pic_BM_enabled_flag는 현재 픽쳐에서 블록 매칭을 허용하는 플래그를 의미하고, 시퀀스, 픽쳐 단위에서 정의 및 전송될 수 있으며, 이 때 현재 픽쳐에서 블록 매칭을 수행하여 예측 블록 생성하는 과정은 화면 간 예측을 통해 동작하는 경우를 의미할 수 있다. 그리고 잔차 신호를 부호화하지 않는 화면 간 기술인 cu_skip_flag는, I 슬라이스를 제외한 P 슬라이스나 B 슬라이스에서만 지원되는 플래그라고 가정할 수 있다. 그 경우, curr_pic_BM_enabled_flag가 온(on)이 되는 경우에 I 슬라이스에서도 블록 매칭(block maching, BM)을 화면 간 예측 모드에서 지원할 수가 있다.Referring to FIG. 12, curr_pic_BM_enabled_flag means a flag that allows block matching in the current picture, and can be defined and transmitted in sequence and picture units. At this time, the process of generating a prediction block by performing block matching in the current picture is screen This may mean a case where it operates through inter-prediction. And cu_skip_flag, an inter-screen technology that does not encode residual signals, can be assumed to be a flag supported only in P slices or B slices, excluding I slices. In that case, when curr_pic_BM_enabled_flag is on, block matching (BM) can be supported in the inter-screen prediction mode even in the I slice.

본 실시예에 따른 영상 부호화 방법은 현재 픽쳐에 블록 매칭을 통해 예측 블록을 생성하는 경우에 스킵(skip)을 지원할 수 있으며, 블록 매칭 외의 화면 내 기술의 경우에도 스킵을 지원할 수 있다. 그리고 조건에 따라 I 슬라이스에서 스킵을 지원하지 않을 수도 있다. 이러한 스킵 여부는 부호화기 설정에 따라 결정될 수 있다.The video encoding method according to this embodiment can support skip when generating a prediction block through block matching to the current picture, and can also support skip in the case of intra-screen technology other than block matching. And depending on conditions, skip may not be supported in the I slice. Whether to skip this can be determined depending on the encoder settings.

일례로, I 슬라이스에서 스킵을 지원할 경우, 특정 플래그인 if(cu_skip_flag)를 통해 예측 단위인 prediction_unit()으로 연결하여 잔차신호를 부호화하지 않고 블록 매칭을 통해 예측 블록을 복원 블록으로 바로 복원할 수 있다. 또한, 영상 부호화 장치는 현재 픽쳐에서 블록 매칭을 통해 예측 블록을 사용하는 방법을 화면 간 예측 기술로 분류하고, 그러한 구분을 특정 플래그인 pred_mode_flag를 통해 처리할 수 있다.For example, when skip is supported in the I slice, the prediction block can be directly restored to the restoration block through block matching without encoding the residual signal by connecting to prediction_unit(), which is a prediction unit, through a specific flag, if(cu_skip_flag). . In addition, the video encoding device can classify the method of using a prediction block through block matching in the current picture as an inter-screen prediction technology, and process such classification through a specific flag, pred_mode_flag.

또한, 본 실시예에 따른 영상 부호화 장치는, pred_mode_flag가 0이면 예측 모드를 화면 간 예측 모드(MODE_INTER)로 설정하고, 1이면 화면 내 예측 모드(MODE_INTRA)로 설정할 수 있다. 이것은 기존과 유사한 화면 내 기술이지만 기존의 구조와의 구분을 위해 I 슬라이스에서 화면 간 기술 또는 화면 내 기술로 분류될 수 있다. 즉, 본 실시예의 영상 부호화 장치는, I 슬라이스에서 시간적인 상관성을 이용하지 않지만 시간적인 상관성의 구조를 사용할 수 있다. part_mode는 부호화 단위에서 분할되는 블록의 크기 및 형태에 대한 정보를 의미한다.In addition, the video encoding device according to this embodiment can set the prediction mode to the inter-screen prediction mode (MODE_INTER) if pred_mode_flag is 0, and can set it to the intra-prediction mode (MODE_INTRA) if pred_mode_flag is 1. This is a similar intra-screen technology to the existing one, but in order to distinguish it from the existing structure, it can be classified as an inter-screen technology or an intra-screen technology in I-slice. That is, the video encoding device of this embodiment does not use temporal correlation in the I slice, but can use a temporal correlation structure. part_mode refers to information about the size and shape of blocks divided in the coding unit.

본 실시예와 관련하여 사용되는 일부 신택스를 예시하면 다음과 같다.Some examples of syntax used in connection with this embodiment are as follows.

시퀀스 파라미터에서 sps_curr_pic_ref_enabled_flag라는 신택스는 IBC 사용 여부에 대한 플래그일 수 있다.The syntax sps_curr_pic_ref_enabled_flag in the sequence parameter may be a flag for whether to use IBC.

픽쳐 파라미터에서 pps_curr_pic_ref_enabled_flag라는 신택스는 픽쳐 단위로 IBC 사용 여부에 대한 플래그일 수 있다.In the picture parameter, the syntax pps_curr_pic_ref_enabled_flag may be a flag for whether to use IBC on a picture basis.

또한, pps_curr_pic_ref_enabled_flag라는 신택스의 온/오프(on/off)에 따라서 현재 픽쳐를 위한 NumPicTotalCurr를 늘릴지 말지를 결정할 수 있다.Additionally, it is possible to determine whether to increase NumPicTotalCurr for the current picture depending on the on/off of the syntax called pps_curr_pic_ref_enabled_flag.

참조 픽쳐 리스트 0를 만드는 과정에서, pps_curr_pic_ref_enabled_flag에 따라 현재 픽쳐를 참조 픽쳐에 넣을지를 결정하라 수 있다.In the process of creating reference picture list 0, it is possible to decide whether to include the current picture in the reference picture according to pps_curr_pic_ref_enabled_flag.

참조 픽쳐 리스트 1을 만드는 과정에서, pps_curr_pic_ref_enabled_flag에 따라 현재 픽쳐의 참조 픽쳐 리스트 추가 여부를 결정할 수 있다.In the process of creating reference picture list 1, it can be decided whether to add the current picture to the reference picture list according to pps_curr_pic_ref_enabled_flag.

위의 구성에 의하면, 현재 픽쳐는 상기의 플래그들에 따라 화면 간(inter) 예측에서의 참조 픽쳐 리스트에 포함될지가 결정될 수 있다.According to the above configuration, it can be determined whether the current picture will be included in the reference picture list in inter prediction according to the above flags.

도 13은 도 12에서 사용하는 현재 픽쳐에서 블록매칭을 통해 예측 블록을 생성할 경우, 화면 간 예측에서와 같이 대칭형(symmetric type) 분할 또는 비대칭형(asymmetric type) 분할을 지원하는 예를 설명하기 위한 예시도이다.Figure 13 is for illustrating an example of supporting symmetric type partitioning or asymmetric type partitioning as in inter-screen prediction when generating a prediction block through block matching in the current picture used in Figure 12. This is an example diagram.

도 13을 참조하면, 본 실시예에 따른 영상 부호화 방법은, 현재 픽쳐에서 블록 매칭을 통해 예측 블록을 생성하는 경우, 화면 간 예측에서와 같이 2N×2N, 2N×N, N×2N, N×N과 같은 대칭형(symmetric) 분할을 지원하거나, nL×2N, nR×2N, 2N×nU, 2N×nD와 같은 비대칭형(asymmetric) 분할을 지원할 수 있다.Referring to FIG. 13, in the video encoding method according to this embodiment, when generating a prediction block through block matching in the current picture, 2N×2N, 2N×N, N×2N, N× It can support symmetric partitions such as N, or asymmetric partitions such as nL × 2N, nR × 2N, 2N × nU, and 2N × nD.

도 14는 도 9의 화면 내 예측(Intra)과 같이 화면 간 예측(Inter)에서 2N×2N, N×N을 지원할 수 있음을 설명하기 위한 예시도이다. 이는 블록 분할부의 분할 방식에 따라 다양한 블록 크기 및 형태가 결정될 수 있다.FIG. 14 is an example diagram to explain that 2N×2N and N×N can be supported in inter-screen prediction (Inter), like intra prediction (Intra) in FIG. 9. Various block sizes and shapes can be determined depending on the division method of the block division unit.

도 14를 참조하면, 본 실시예에 따른 영상 부호화 방법은, 기존의 화면 내 예측에 사용하는 예측 블록 형태와 같이 2N×2N 및 N×N을 지원할 수 있다. 이는 블록 분할부에서 쿼드트리 분할 방식 또는 미리 정의된 소정의 블록 후보군에 따른 분할 방식 등을 통해 정사각 형태를 지원한 예이며, 화면 내 예측에서도 바이너리 트리 분할 방식 또는 미리 정의돈 소정의 블록 후보군에 직사각 형태를 추가하여 다른 블록 형태 또한 지원할 수 있으며, 이에 대한 설정은 부호화기에서 설정이 가능하다.Referring to FIG. 14, the image encoding method according to this embodiment can support 2N×2N and N×N prediction block types used in existing intra-prediction. This is an example of supporting a square shape in the block division through a quad-tree division method or a division method according to a predefined block candidate group, and in the intra-screen prediction, a binary tree division method or a rectangular shape according to a predefined block candidate group is used. Other block types can also be supported by adding shapes, and settings for this can be set in the encoder.

또한, 화면 내 예측 중 현재 픽쳐에 블록 매칭을 할 경우(ref_idx = curr)에만 스킵(skip)을 적용할 것인지, 기존의 화면 내 예측에도 적용할 것인지, 그 외(else)의 파티션 형태(도 13 참조)를 가진 예측 블록에 대해서도 새로운 화면 내 예측에 적용할 것인지를 부호화기에 설정 가능하다. 이에 대한 정보는 시퀀스, 픽쳐, 슬라이스 등의 단위로 전송될 수 있다.In addition, when performing block matching to the current picture during intra-screen prediction, whether to apply skip only when matching the current picture (ref_idx = curr), whether to apply it to existing intra-picture prediction, and other (else) partition types (Figure 13 It is possible to set in the encoder whether to apply to new intra-picture prediction even for prediction blocks with (reference). Information about this may be transmitted in units such as sequence, picture, slice, etc.

감산부(205, 도 2 참조)는 부호화할 현재 블록의 화소값으로부터 예측부(200)로부터 생성되는 예측 블록의 화소값들을 감산하여 화소 차이값을 도출함으로써, 잔차 블록을 생성할 수 있다.The subtractor 205 (see FIG. 2) may generate a residual block by subtracting the pixel values of the prediction block generated by the prediction unit 200 from the pixel value of the current block to be encoded to derive a pixel difference value.

변환부(210, 도 2 참조)는 감산부(205)에서 현재 블록과 화면 내 예측 또는 화면 간 예측을 통해 생성된 예측 블록과의 차분치인 잔차 블록을 전달받아 주파수 영역으로 변환한다. 변환 과정을 통해 잔차 블록의 각 화소는 변환 블록의 변환 계수에 대응된다. 변환 블록의 크기 및 형태는 부호화 단위와 같거나 작은 크기를 가질 수 있다. 또한, 변환 블록의 크기 및 형태는 예측 단위와 같을 수도 있고 작을 수도 있다. 영상 부호화 장치는 여러 예측 단위를 묶어서 변환 처리를 수행할 수 있다.The conversion unit 210 (see FIG. 2) receives the residual block, which is a difference value between the current block and the prediction block generated through intra-screen prediction or inter-screen prediction, from the subtractor 205 and converts it into the frequency domain. Through the transformation process, each pixel in the residual block corresponds to the transformation coefficient of the transformation block. The size and shape of the transform block may be the same as or smaller than the coding unit. Additionally, the size and shape of the transform block may be the same as or smaller than the prediction unit. A video encoding device can perform conversion processing by grouping multiple prediction units.

변환 블록의 크기 또는 형태는 블록 분할부를 통해 결정될 수 있으며, 블록 분할에 따라 정사각 형태 또는 직사각 형태의 변환을 지원할 수 있다. 부호화기/복호화기에서 지원되는 변환 관련 설정 (지원되는 변환 블록의 크기, 형태 등)에 따라 상기 블록 분할 동작에 영향을 줄 수 있다. The size or shape of the conversion block can be determined through the block division unit, and conversion in a square or rectangular shape can be supported depending on the block division. The block division operation may be affected depending on the transformation-related settings (size, shape, etc. of supported transformation blocks) supported by the encoder/decoder.

상기 변환 블록의 크기 및 형태의 후보별 부호화 비용에 따라 각 변환 블록의 크기 및 형태가 결정되고, 결정된 각 변환 블록의 영상 데이터 및 결정된 각 변환 블록의 크기 및 형태 등의 분할 정보들을 부호화할 수 있다.The size and shape of each transform block are determined according to the coding cost for each candidate for the size and shape of the transform block, and segmentation information such as image data of each determined transform block and the size and shape of each determined transform block can be encoded. .

변환은 1차원 변환 매트릭스에 의해 변환될 수 있다. 예컨대, 이산 코사인 변환(discrete cosine transform, DCT), 이산 사인 변환(discrete cosine transform, DST), 수평, 수직 단위로 각 변환 매트릭스가 적응적으로 사용될 수 있다. 적응적 사용은 일례로 블록의 크기, 블록의 형태, 블록의 종류(휘도/색차), 부호화 모드, 예측 모드 정보, 양자화 파라미터, 이웃 블록의 부호화 정보 등의 여러 요인을 토대로 결정하는 것을 포함할 수 있다.The transformation can be transformed by a one-dimensional transformation matrix. For example, each transformation matrix may be used adaptively in discrete cosine transform (DCT), discrete cosine transform (DST), horizontal, and vertical units. Adaptive use may include making decisions based on several factors, such as block size, block shape, block type (luminance/chrominance), coding mode, prediction mode information, quantization parameters, and coding information of neighboring blocks. there is.

예를 들어, 화면 내 예측의 경우, 예측 모드가 수평일 경우에는, 수직 방향으로는 DCT 기반의 변환 매트릭스가, 수평 방향으로는 DST 기반의 변환 매트릭스가 사용될 수 있다. 또한, 예측 모드가 수직일 경우에는, 수평 방향으로는 DCT 기반의 변환 매트릭스가, 수직 방향으로는 DST 기반의 변환 매트릭스가 사용될 수 있다.For example, in the case of intra-screen prediction, when the prediction mode is horizontal, a DCT-based transformation matrix can be used in the vertical direction and a DST-based transformation matrix can be used in the horizontal direction. Additionally, when the prediction mode is vertical, a DCT-based transformation matrix can be used in the horizontal direction, and a DST-based transformation matrix can be used in the vertical direction.

변환 매트릭스는 위의 설명에서 나온 것에 한정되지는 않는다. 이에 대한 정보는 묵시적 또는 명시적인 방법을 사용하여 결정될 수 있으며, 블록의 크기, 블록의 형태, 부호화 모드, 예측 모드, 양자화 파라미터, 이웃 블록의 부호화 정보 등의 요인들 중 하나 이상의 요인 또는 이들의 조합에 따라 결정될 수 있으며, 상기 관련 정보는 시퀀스, 픽쳐, 슬라이스, 블록 등의 단위로 전송할 수 있다.The transformation matrix is not limited to that shown in the above description. Information about this may be determined using an implicit or explicit method, and may be determined by one or more of factors such as block size, block shape, encoding mode, prediction mode, quantization parameter, and encoding information of neighboring blocks, or a combination thereof. It can be determined according to , and the related information can be transmitted in units such as sequence, picture, slice, and block.

여기서, 명시적인 방법을 사용할 경우를 고려하면, 수평 및 수직 방향에 대한 2개 이상의 변환 매트릭스를 후보군으로 두고 있을 경우, 각 방향마다 어떤 변환 매트릭스를 사용했는지에 대한 정보를 보낼 수도 있고, 또는 수평, 수직 방향에 대해 각각 어떤 변환 매트릭스를 사용했는지에 대하여 각각 하나의 쌍으로 묶어 2개 이상의 쌍을 후보군으로 두어 어떤 변환 매트릭스를 수평, 수직 방향에서 사용했는지에 대한 정보를 전송할 수도 있다.Here, considering the case of using an explicit method, if there are two or more transformation matrices for the horizontal and vertical directions as candidates, information about which transformation matrix was used for each direction can be sent, or horizontal, Information on which transformation matrices were used in the horizontal and vertical directions can be transmitted by grouping each pair into one pair and having two or more pairs as candidates.

또한, 영상의 특성을 고려하여 부분적인 변환 또는 전체적인 변환을 생략할 수 있다. 예를 들면, 수평과 수직 성분들 중 어느 하나 또는 둘 모두를 생략할 수 있다. 화면 내 예측 또는 화면 간 예측이 잘 이뤄지지 않아 현재 블록과 예측 블록의 차이가 크게 발생할 경우 즉, 잔차 성분이 클 때, 이를 변환할 시 그에 따른 부호화 손실이 커질 수 있기 때문이다. 이는 부호화 모드, 예측 모드, 블록의 크기, 블록의 형태, 블록의 종류(휘도/색차), 양자화 파라미터, 이웃 블록의 부호화 정보 등의 요인들 중 최소 하나의 요인 도는 이들의 조합에 따라 결정될 수 있다. 위의 조건에 따라 묵시적 또는 명시적인 방법을 사용하여 이를 표현할 수 있고, 이에 대한 정보는 시퀀스, 픽쳐, 슬라이스 등의 단위로 전송이 가능하다.Additionally, partial or full conversion can be omitted considering the characteristics of the image. For example, either or both the horizontal and vertical components can be omitted. This is because if intra-screen or inter-screen prediction is not performed well and there is a large difference between the current block and the predicted block, that is, when the residual component is large, the resulting encoding loss may increase when converting it. This can be determined based on at least one factor or a combination of factors such as coding mode, prediction mode, block size, block shape, block type (luminance/chrominance), quantization parameter, and encoding information of neighboring blocks. . Depending on the above conditions, this can be expressed using an implicit or explicit method, and information about this can be transmitted in units such as sequences, pictures, and slices.

양자화부(215, 도 2 참조)는 변환부(210)에서 변환된 잔차 성분의 양자화를 수행한다. 양자화 파라미터는 블록 단위로 결정이 되며, 양자화 파라미터는 시퀀스, 픽쳐, 슬라이스, 블록 등의 단위로 설정될 수 있다.The quantization unit 215 (see FIG. 2) performs quantization of the residual component converted in the conversion unit 210. Quantization parameters are determined on a block basis, and quantization parameters can be set in units such as sequence, picture, slice, and block.

일례로, 양자화부(215)는 현재 블록의 왼쪽, 왼쪽 위, 위쪽, 오른쪽 위, 왼쪽 아래 등의 이웃 블록으로부터 유도된 1개 또는 2개 이상의 양자화 파라미터를 사용하여 현재 양자화 파라미터를 예측할 수 있다.For example, the quantization unit 215 may predict the current quantization parameter using one or two or more quantization parameters derived from neighboring blocks such as the left, top left, top, top right, and bottom left of the current block.

또한, 양자화부(215)는 이웃 블록으로부터 예측한 양자화 파라미터가 존재하지 않는 경우 즉, 블록이 픽쳐, 슬라이스 등의 경계에 있는 경우, 시퀀스, 픽쳐, 슬라이스 등의 단위로 전송된 기본 파라미터와의 차분치를 출력 혹은 전송할 수 있다. 이웃 블록으로부터 예측한 양자화 파라미터가 존재하는 경우, 해당 블록의 양자화 파라미터를 사용하여 차분치를 전송할 수도 있다.In addition, when the quantization parameter predicted from a neighboring block does not exist, that is, when the block is at the boundary of a picture, slice, etc., the quantization unit 215 performs the difference with the basic parameters transmitted in units of sequence, picture, slice, etc. Values can be output or transmitted. If there is a quantization parameter predicted from a neighboring block, the difference value may be transmitted using the quantization parameter of the corresponding block.

양자화 파라미터를 유도할 블록의 우선순위는 미리 설정할 수도 있고, 시퀀스, 픽쳐, 슬라이스 등의 단위로 전송할 수 있다. 잔차 블록을 데드존 균일 경계 양자화(DZUTQ: Dead Zone Uniform Threshold Quantization), 양자화 가중치 매트릭스(Quantization weighted matrix) 또는 이를 개량한 기법을 통해 양자화할 수 있다. 이는 1개 이상의 양자화 기법을 후보로 둘 수 있으며 부호화 모드, 예측 모드 정보 등에 의해 결정될 수 있다.The priority of the block from which the quantization parameter is to be derived can be set in advance, and can be transmitted in units such as sequence, picture, and slice. The residual block can be quantized using Dead Zone Uniform Threshold Quantization (DZUTQ), a quantization weighted matrix, or an improved technique thereof. This may have one or more quantization techniques as candidates and may be determined by encoding mode, prediction mode information, etc.

예를 들어, 양자화부(215)는 양자화 가중치 매트릭스를 화면 간 부호화, 화면 내 부호화 단위 등에 적용하기 위해 설정해 둘 수 있고, 또한 화면 내 예측 모드에 따라 다른 가중치 매트릭스를 둘 수도 있다. 양자화 가중치 매트릭스는 M×N의 크기로 블록의 크기가 양자화 블록 크기와 같다고 가정할 때, 각 주파수 성분의 위치마다 양자화 계수를 달리하여 구성할 수 있다. 그리고 양자화부(215)는 기존의 여러 양자화 방법 중 택일할 수도 있고, 부호화기/복호화기의 동일한 설정하에 사용될 수도 있다. 이에 대한 정보는 시퀀스, 픽쳐, 슬라이스 등의 단위로 전송 가능하다.For example, the quantization unit 215 may set a quantization weight matrix to apply to inter-screen coding, intra-screen coding units, etc., and may also set a different weight matrix depending on the intra-prediction mode. The quantization weight matrix has a size of M Additionally, the quantization unit 215 may select one of several existing quantization methods or may be used under the same settings of the encoder/decoder. Information about this can be transmitted in units such as sequence, picture, and slice.

한편, 도 2 및 3에 도시한 역양자화부(220,315) 및 역변환부(225,320)는 위의 변환부(210) 및 양자화부(215)에서의 과정을 역으로 수행하여 구현될 수 있다. 즉, 역양자화부(220)는 양자화부(215)에서 생성된 양자화된 변환 계수를 역양자화할 수 있고, 역변환부(225)는 역양자화된 변환 계수를 역변환하여 복원된 잔차 블록을 생성할 수 있다. Meanwhile, the inverse quantization units 220 and 315 and the inverse transform units 225 and 320 shown in FIGS. 2 and 3 may be implemented by reversing the processes of the above transform unit 210 and quantization unit 215. That is, the inverse quantization unit 220 can inversely quantize the quantized transform coefficient generated in the quantization unit 215, and the inverse transform unit 225 can inversely transform the inverse quantized transform coefficient to generate a restored residual block. there is.

도 2 및 3에 도시한 가산부(230, 324)는 상기 복원된 잔차 블록의 화소값에 예측부로부터 생성되는 예측 블록의 화소값을 가산하여 복원 블록이 생성될 수 있다. 복원 블록은 부호화 및 복호화 픽쳐 버퍼(240, 335)에 저장되어 예측부 및 필터부에 제공될 수 있다.The adders 230 and 324 shown in FIGS. 2 and 3 may add the pixel value of the prediction block generated from the prediction unit to the pixel value of the restored residual block to generate a restored block. The restored block may be stored in the encoded and decoded picture buffers 240 and 335 and provided to the prediction unit and filter unit.

필터부(235, 도 2 참조)는 복원 블록에 디블록킹 필터(Deblocking Filter), SAO(Sample Adaptive Offset), ALP(Adaptive Loop Filter) 등과 같은 인루프 필터를 적용할 수 있다. 디블록킹 필터는 부호화 및 복호화 과정에서 발생하는 블록 경계 사이의 왜곡을 제거하기 위해, 복원 블록을 필터링할 수 있다. SAO는 잔차 블록에 대하여, 화소 단위로 원본 영상과 복원 영상과의 차이를 오프셋으로 복원해주는 필터 과정이다. ALF는 예측 블록과 복원 블록 사이의 차이를 최소화하기 위해 필터링을 수행할 수 있다. ALF는 디블록킹 필터를 통해 복원된 블록과 현재 블록의 비교값을 기초로 필터링을 수행할 수 있다.The filter unit 235 (see FIG. 2) may apply an in-loop filter such as a deblocking filter, sample adaptive offset (SAO), or adaptive loop filter (ALP) to the restoration block. The deblocking filter can filter the restored block to remove distortion between block boundaries that occurs during the encoding and decoding process. SAO is a filter process that restores the difference between the original image and the restored image as an offset on a pixel basis for the residual block. ALF can perform filtering to minimize the difference between the prediction block and the restored block. ALF can perform filtering based on the comparison value of the block restored through the deblocking filter and the current block.

엔트로피 부호화부(245, 도 2 참조)는 양자화부(215)를 통해 양자화된 변환 계수들을 엔트로피 부호화할 수 있다. 예를 들어, 컨텍스트 적응 가변 길이 코딩(CAVLC), 컨텍스트 적응 2진 산술 코딩(CABAC), 구문 기반 컨텍스트 적응 2진 산술 코딩(SBAC), 확률 간격 파티셔닝 엔트로피 부호화 외의 다른 부호화 방식을 사용하여 구현될(PIPE) 코딩 등의 기법을 수행할 수 있다.The entropy encoding unit 245 (see FIG. 2) may entropy encode the quantized transform coefficients through the quantization unit 215. For example, Context Adaptive Variable Length Coding (CAVLC), Context Adaptive Binary Arithmetic Coding (CABAC), Syntax-Based Context Adaptive Binary Arithmetic Coding (SBAC), and Stochastic Interval Partitioning Entropy Coding may be implemented using other encoding schemes ( PIPE) coding techniques can be performed.

엔트로피 부호화부(245)는 양자화 계수를 부호화한 비트열과 부호화된 비트열을 복호화하는데 필요한 다양한 정보들을 부호화 데이터에 포함할 수 있다. 부호화 데이터는 부호화된 블록 형태, 양자화 계수 및 양자화 블록이 부호화된 비트열 및 예측에 필요한 정보 등을 포함할 수 있다. 양자화 계수의 경우 2차원의 양자화 계수를 1차원으로 스캐닝할 수 있다. 양자화 계수는 영상의 특성에 따라 분포도가 달라질 수 있다. 특히, 화면 내 예측의 경우 계수의 분포가 예측 모드에 따라 특정한 분포를 가질 수 있기 때문에 스캔 방법을 달리 설정할 수 있다.The entropy encoder 245 may include a bit stream in which the quantization coefficient is encoded and various information necessary to decode the encoded bit stream in the encoded data. The encoded data may include the encoded block type, quantization coefficient, bit string in which the quantized block is encoded, and information necessary for prediction. In the case of quantization coefficients, two-dimensional quantization coefficients can be scanned in one dimension. The distribution of quantization coefficients may vary depending on the characteristics of the image. In particular, in the case of intra-screen prediction, the distribution of coefficients may have a specific distribution depending on the prediction mode, so the scan method can be set differently.

또한, 엔트로피 부호화부(245)는 부호화하는 블록의 크기에 따라 달리 설정될 수 있다. 스캔 패턴은 지그재그, 대각선, 래스터(raster) 등 다양한 패턴들 중 적어도 어느 하나 이상으로 미리 설정하거나 후보로 설정할 수 있으며, 부호화 모드, 예측 모드 정보 등에 의해 결정될 수 있고, 부호화기와 복호화기의 동일한 설정하에 사용될 수 있다. 이에 대한 정보는 시퀀스, 픽쳐, 슬라이스 등의 단위로 전송 가능하다.Additionally, the entropy encoding unit 245 may be set differently depending on the size of the block to be encoded. The scan pattern can be preset or set as a candidate as at least one of various patterns such as zigzag, diagonal, and raster, and can be determined by encoding mode, prediction mode information, etc., under the same settings of the encoder and decoder. can be used Information about this can be transmitted in units such as sequence, picture, and slice.

엔트로피 부호화부(245)에 입력되는 양자화된 블록(이하, 양자화 블록)의 크기는 변환 블록의 크기와 같거나 작을 수 있다. 또한, 양자화 블록은 2개 이상의 서브 블록으로 분할될 수 있으며, 분할된 경우에 분할 블록에서 스캔 패턴은 기존의 양자화 블록과 동일하게 설정할 수도 있고, 다르게 설정할 수도 있다.The size of the quantized block (hereinafter referred to as quantization block) input to the entropy encoding unit 245 may be equal to or smaller than the size of the transform block. Additionally, the quantization block may be divided into two or more sub-blocks, and when divided, the scan pattern in the divided block may be set the same as that of the existing quantization block or may be set differently.

예를 들어, 기존의 양자화 블록의 스캔 패턴을 지그재그라고 할 경우, 서브 블록 모두에 지그재그를 적용할 수도 있고, 또는 평균값(DC) 성분을 포함하는 블록의 좌측 상단에 위치하는 서브블록에 지그재그 패턴을 적용하고, 그 이외의 블록에는 대각선 패턴을 적용할 수 있다. 이 역시 부호화 모드, 예측 모드 정보 등에 따라 결정될 수 있다.For example, if the scan pattern of an existing quantization block is zigzag, the zigzag pattern can be applied to all subblocks, or the zigzag pattern can be applied to the subblock located in the upper left corner of the block containing the average value (DC) component. and a diagonal pattern can be applied to other blocks. This can also be determined depending on the encoding mode, prediction mode information, etc.

또한, 엔트로피 부호화부(245)에서 스캔 패턴의 시작 위치는 기본적으로 좌측 상단으로부터 시작을 하나, 영상의 특성에 따라 우측 상단, 우측 하단 또는 좌측 하단에서 시작할 수 있으며, 2개 이상의 후보군 중 어느 것을 선택했는지에 대한 정보를 시퀀스, 픽쳐, 슬라이스 등의 단위로 전송할 수 있다. 부호화 기술로서는 엔트로피 부호화 기술이 사용될 수 있으나 이에 한정되지 않는다.In addition, the starting position of the scan pattern in the entropy encoding unit 245 basically starts from the upper left, but can start from the upper right, lower right, or lower left depending on the characteristics of the image, and selects one of two or more candidates. Information about what has been done can be transmitted in units such as sequence, picture, and slice. As an encoding technology, entropy encoding technology may be used, but is not limited to this.

한편, 도 2 및 도 3에 도시한 역양자화부(220)의 역양자화 및 역변환부(225)의 역변환은 위의 양자화부(215)의 양장화 및 변환부(210)의 변환 구조를 반대로 구성하고 기본적인 필터부(235, 330)를 조합하는 것으로 구현 가능하다.Meanwhile, the inverse quantization of the inverse quantization unit 220 and the inverse transformation of the inverse transform unit 225 shown in FIGS. 2 and 3 are configured to reverse the positive quantization of the quantization unit 215 and the transformation structure of the transformation unit 210. It can be implemented by combining the basic filter units 235 and 330.

다음으로, 본 발명의 영상 부호화 장치에 채용할 수 있는 보간(interpolation)에 대하여 간략히 설명하면 다음과 같다.Next, interpolation that can be employed in the video encoding device of the present invention will be briefly described as follows.

블록 매칭을 통한 예측의 정확성을 높이기 위해 정수 단위보다 정밀한 소수단위의 해상도로 보간을 수행하는데, 이러한 보간법으로는 DCT-IF(discrete cosine transform based interpolation filter) 등의 기술이 있다. HEVC(high efficiency video coding)에서의 보간법으로는 DCT-IF 기술을 사용하고 있는데, 예를 들어 정수 사이의 1/2, 1/4 단위로 화소를 생성하여 참조 픽쳐를 보간하고, 이를 참조하여 블록 매칭을 수행하여 예측 블록을 생성할 수 있다.In order to increase the accuracy of prediction through block matching, interpolation is performed with decimal resolution, which is more precise than integer units. Such interpolation methods include technologies such as DCT-IF (discrete cosine transform based interpolation filter). DCT-IF technology is used as an interpolation method in HEVC (high efficiency video coding). For example, pixels are generated in units of 1/2 or 1/4 between integers to interpolate a reference picture, and then block A prediction block can be created by performing matching.

표 1과 표 2는 각각 휘도 성분과 색차 성분에서 사용되는 필터 계수를 보여주고 있는데, 휘도 성분에 대해서는 8-tap, 색차 성분에 대해서는 4-tap의 DCT-IF 필터가 사용된다. 색차 성분에 대해서도 색상 포맷(color format)에 따라 필터를 달리 적용할 수 있다. YCbCr의 4:2:0의 경우에는 표 2에서와 같은 필터를 적용할 수 있고, 4:4:4에서는 표 2가 아닌 표 1과 같은 필터나 그 외의 필터를 적용할 수 있고, 4:2:2일 경우 표 2와 같은 수평 1D 4-탭 필터(horizontal 1D 4-tap filter)와 표 1과 같은 수직 1D 8-탭 필터(vertical 1D 8-tap filter)를 적용할 수 있다.Table 1 and Table 2 show the filter coefficients used in the luminance component and chrominance component, respectively. An 8-tap DCT-IF filter is used for the luminance component and a 4-tap DCT-IF filter is used for the chrominance component. Different filters can be applied to the color difference component depending on the color format. In the case of 4:2:0 of YCbCr, the same filter as in Table 2 can be applied, and in 4:4:4, the same filter as in Table 1 or other filters rather than Table 2 can be applied, and 4:2 :2, a horizontal 1D 4-tap filter as shown in Table 2 and a vertical 1D 8-tap filter as shown in Table 1 can be applied.

도 15는 본 발명의 일실시예에 따른 영상 부호화 방법에서 영상의 a, b, c의 위치(x라고 가정)에 있는 화소에 대해서는 수평 1D 필터를 수행하는 과정을 설명하기 위한 도면이다.Figure 15 is a diagram for explaining the process of performing a horizontal 1D filter on pixels at positions a, b, and c of the image (assumed to be x) in the image encoding method according to an embodiment of the present invention.

도 15에 도시한 바와 같이, 제1 화소(G)와 이에 인접한 제2 화소(H) 사이의 a, b, c의 위치(x라고 가정)에 있는 부화소에 대해서는 horizontal 1D filter를 적용할 수 있다. 이를 수식으로 나타내면 다음과 같다.As shown in FIG. 15, a horizontal 1D filter can be applied to the subpixels at positions a, b, and c (assuming x) between the first pixel (G) and the adjacent second pixel (H). there is. This can be expressed in a formula as follows:

x = ( f1*E + f2*F + f3*G + f4*H + f5*I + f6*J + 32 ) / 64x = ( f1*E + f2*F + f3*G + f4*H + f5*I + f6*J + 32 ) / 64

다음, d, h, n의 위치(y라고 가정)에 있는 부화소에 대해서는 vertical 1D filter를 적용할 수 있다. 이를 수식으로 나타내면 다음과 같다.Next, a vertical 1D filter can be applied to the subpixels at positions d, h, and n (assuming y). This can be expressed in a formula as follows:

y = ( f1*A + f2*C + f3*G + f4*M + f5*R + f6*T + 32 ) / 64y = ( f1*A + f2*C + f3*G + f4*M + f5*R + f6*T + 32 ) / 64

그리고 중앙에 있는 부화소들 e,f,g,i,j,k,p,q,r에 대해서는 2D 분할가능 필터(2D separable filter)를 적용할 수 있다. 부화소 e를 예로 들면, a와 수직 방향에 있는 화소들을 먼저 보간한 후 그 화소들을 이용해 보간한다. 그리고 G 및 H 사이의 a를 보간하듯 horizontal 1D filter를 수행하고, 그로 인해 나온 부화소들을 대상으로 vertical 1D filter를 수행하여 e값을 얻을 수 있다. 그리고 색차 신호에 대해서도 이와 비슷한 동작을 수행할 수 있다.And a 2D separable filter can be applied to the subpixels e, f, g, i, j, k, p, q, and r in the center. Taking subpixel e as an example, the pixels in the direction perpendicular to a are first interpolated and then interpolated using those pixels. Then, the e value can be obtained by performing a horizontal 1D filter as if interpolating a between G and H, and performing a vertical 1D filter on the resulting subpixels. And a similar operation can be performed for color difference signals.

위의 설명은 보간의 일부 설명일 뿐이다. DCT-IF 이외의 다른 필터 또한 사용이 가능하며 소수단위마다 적용되는 필터 종류 및 탭의 개수를 달리할 수 있다. 예를 들어, 1/2에는 8-tap 칼만 필터, 1/4에는 6-tap 위너 필터, 1/8에는 2-tap 선형 필터를 DCT-IF처럼 고정된 계수 또는 필터 계수를 계산하여 필터 계수를 부호화할 수도 있다. 위와 같이, 픽쳐에 대해 하나의 보간 필터를 사용할 수도 있고, 영상에 특성에 따라 영역마다 다른 보간 필터를 사용할 수도 있으며, 다수의 보간 필터를 적용한 2개 이상의 참조 픽쳐들을 생성하고 그 중에 하나를 선택할 수도 있다.The above explanation is only a partial explanation of interpolation. Filters other than DCT-IF can also be used, and the type of filter and number of tabs applied to each decimal unit can be varied. For example, an 8-tap Kalman filter for 1/2, a 6-tap Wiener filter for 1/4, and a 2-tap linear filter for 1/8. Filter coefficients can be calculated by calculating fixed coefficients or filter coefficients like DCT-IF. It can also be encoded. As above, you can use one interpolation filter for a picture, or you can use different interpolation filters for each area depending on the characteristics of the image, or you can create two or more reference pictures with multiple interpolation filters applied and select one of them. there is.

참조 픽쳐의 타입, 시간적 계층, 참조 픽쳐의 상태(예컨대, 현재 픽쳐인지 아닌지) 등의 부호화 정보에 따라 다른 필터가 적용될 수 있다. 위에서 언급한 정보들은 시퀀스, 픽쳐, 슬라이스 등의 단위로 설정이 가능하며, 그 단위로 전송 가능하다.Different filters may be applied depending on encoding information such as the type of reference picture, temporal layer, and status of the reference picture (eg, whether it is the current picture or not). The above-mentioned information can be set in units such as sequence, picture, and slice, and can be transmitted in that unit.

다음으로 본 실시예에 따른 영상 부호화 방법에 채용할 수 있는 움직임 추정(motion estimation), 움직임 보상(motion compensation) 및 움직임 예측(motion prediction)에 대한 개선된 기술을 상세히 설명하기 전에 이들 용어의 기본적인 의미를 정의하면 다음과 같다.Next, before explaining in detail the improved technologies for motion estimation, motion compensation, and motion prediction that can be employed in the video encoding method according to this embodiment, the basic meaning of these terms is defined as follows.

움직임 추정은 부호화하고자 하는 현재 블록의 움직임을 예측하는데 있어서 영상 프레임을 작은 블록으로 분할하여 시간적으로 이전 또는 이후의 기부호화된 프레임(참조 프레임) 상의 어떤 블록으로부터 이동되었는지를 추정하는 과정을 말한다. 즉, 움직임 추정은 압축하려는 현재 블록의 부호화시에 목표 블록과 가장 유사한 블록을 찾아내는 과정이라고 할 수 있다. 블록 기반의 움직임 추정은 비디오 객체 또는 화면처리단위 블록(macro block 등)이 시간상으로 어느 위치로 움직였는지를 추정하는 과정을 말할 수 있다.Motion estimation refers to the process of predicting the motion of the current block to be encoded by dividing the video frame into small blocks and estimating which block on the temporally previous or subsequent non-encoded frame (reference frame) it has moved from. In other words, motion estimation can be said to be a process of finding the block most similar to the target block when encoding the current block to be compressed. Block-based motion estimation can refer to the process of estimating where a video object or screen processing unit block (macro block, etc.) has moved in time.

움직임 보상은 현재 영상을 부호화하기 위하여 이전에 부호화된 참조 영상의 적어도 일부 영역을 가져와서 현재 영상을 예측하기 위하여 움직임 추정 과정에서 찾은 최적의 예측 블록에 대한 움직임 정보(모션 벡터, 참조 픽쳐 인덱스)를 바탕으로 현재 블록의 예측 블록을 생성하는 것을 의미한다. 즉, 움직임 보상은 부호화하려는 현재 블록과 가장 유사한 블록이라고 찾아낸 참조 블록과의 차이로써 오차 블록을 만드는 과정을 말할 수 있다.Motion compensation retrieves at least some areas of a previously encoded reference image to encode the current image and provides motion information (motion vector, reference picture index) about the optimal prediction block found in the motion estimation process to predict the current image. This means generating a prediction block of the current block based on it. In other words, motion compensation can refer to the process of creating an error block based on the difference between the current block to be encoded and a reference block found to be the most similar block.

움직임 예측은 움직임 보상을 위하여 부호화 시에 움직임 벡터를 찾는 것을 의미한다. 움직임 예측의 주요 기술로는 스킵(skip), 시간적 예측, 공간적 예측 등이 있으며, 스킵은 화면의 움직임이 일정하여 영상 부호화 장치에서 예측한 움직임 벡터의 크기가 제로(0)이거나, 잔차가 충분히 작아 무시할 수 있는 경우 해당 영상 블록의 부호화를 생략하고 넘어가는 것을 의미한다. 시간적 예측은 주로 화면 간 예측에 이용될 수 있고, 공간적 예측 또는 시점간 예측은 주로 화면 내 예측에 이용될 수 있다.Motion prediction means finding a motion vector during encoding for motion compensation. The main technologies for motion prediction include skip, temporal prediction, and spatial prediction. In skip, the motion of the screen is constant, so the size of the motion vector predicted by the video encoding device is zero (0) or the residual is sufficiently small. If it can be ignored, it means omitting the encoding of the corresponding video block and moving on. Temporal prediction can be mainly used for inter-screen prediction, and spatial prediction or inter-view prediction can be mainly used for intra-screen prediction.

화면 간 예측를 통해 나오는 정보는, 참조 픽쳐 리스트 방향을 구분하는 정보(단방향(L0, L1), 양방향), 참조 픽쳐 리스트 내의 참조 픽쳐를 구분하는 인덱스, 움직임 벡터 등을 포함할 수 있다. 시간적인 상관성을 이용하기 때문에 현재 블록과 이웃하는 블록의 움직임 벡터가 같거나 비슷하게 나타나는 특성을 활용할 경우 효율적으로 움직임 정보를 부호화할 수 있다.Information that comes out through inter-screen prediction may include information that distinguishes the direction of the reference picture list (unidirectional (L0, L1), bidirectional), an index that distinguishes reference pictures in the reference picture list, a motion vector, etc. Because temporal correlation is used, motion information can be encoded efficiently by utilizing the characteristic that the motion vectors of the current block and neighboring blocks are the same or similar.

도 16은 본 발명의 일실시예에 따른 영상 부호화 방법에 채용할 수 있는 현재 블록과 주변 블록에 대한 예시도이다.Figure 16 is an example diagram of a current block and neighboring blocks that can be employed in an image encoding method according to an embodiment of the present invention.

도 16에 나타내 바와 같이, 현재 블록의 주변 블록에 대한 후보군의 참조 여부에 대한 설정은 현재 픽쳐의 타입, 시간적인 식별자(temporal id) 등의 정보에 따라 결정될 수도 있으며 이에 대한 정보는 고정되어 사용되거나 시퀀스, 픽쳐, 슬라이스 등의 단위로 전송될 수 있다.As shown in FIG. 16, the setting of whether to refer to a candidate group for neighboring blocks of the current block may be determined depending on information such as the type of the current picture and temporal identifier, and this information may be used fixedly or It can be transmitted in units such as sequence, picture, slice, etc.

여기서, 후보군에 대한 참조 여부에 대한 설정은 예컨대 공간적으로 인접한 블록(A, B, C, D, E)만 사용하거나, 공간적으로 인접한 블록(A, B, C, D, E)과 시간적으로 인접한 블록(H, I, J)을 사용하거나, 또는 공간적으로 인접한 블록(A, B, C, D, E)과 공간적으로 떨어져 있는 블록(F, G)를 사용하는 설정을 포함할 수 있다.Here, the setting for whether to refer to the candidate group is, for example, using only spatially adjacent blocks (A, B, C, D, E) or temporally adjacent to spatially adjacent blocks (A, B, C, D, E). Settings may include using blocks (H, I, J), or using spatially adjacent blocks (A, B, C, D, E) and spatially distant blocks (F, G).

다음은 "현재 픽쳐에 블록 매칭의 적용이 가능하다"는 설정에 대해 설명하면 다음과 같다.The following explains the setting “Block matching can be applied to the current picture.”

먼저, I 픽쳐의 경우를 설명하면, 예를 들어, 공간적으로 근접한 블록을 먼저 우선순위에 놓고 그 외의 블록들을 후보군으로 설정할 수 있다. 일례로, 참조 블록들을 E → D → C → B → A → H → I → J의 기재된 순서대로 가용성(availability)을 확인할 수 있다. 가용성은 사용 가능하지 여부를 판단하기 위한 것으로서 미리 설정된 기준값과 대비되거나 가용성 체크된 다른 값들과 상대적으로 대비될 수 있다. 가용성은 후보 블록의 부호화 모드, 움직임 정보, 후보 블록의 위치 등으로 판단될 수 있다. 움직임 정보는 움직임 벡터, 참조 방향, 참조 픽쳐 인덱스 등을 포함할 수 있다.First, to explain the case of an I picture, for example, spatially adjacent blocks can be given priority first and other blocks can be set as candidates. For example, the availability of reference blocks can be checked in the listed order: E → D → C → B → A → H → I → J. Availability is used to determine whether something is available and can be compared to a preset standard value or compared to other values that have been checked for availability. Availability can be determined based on the coding mode of the candidate block, motion information, location of the candidate block, etc. Motion information may include a motion vector, reference direction, reference picture index, etc.

현재 픽쳐가 I 픽쳐이므로, 부호화 모드가 본 실시예의 화면 내 예측(이하, INTER)으로 되어있을 때만 움직임 정보가 존재한다. 그렇기 때문에 우선순위대로 볼 때 먼저 INTER인지 확인한다. 예를 들어, n이 3이고 E가 INTER로 부호화가 되었다면 E는 후보군에서 제외하고 그 다음의 D를 확인한다. D가 INTER로 부호화가 되었다면 현재 픽쳐에서 블록 매칭을 수행하기 때문에 움직임 정보를 갖고 있으며, 이러한 움직임 정보를 토대로 D를 후보군에 추가한다. 그러면 n은 2개가 남는다. 그런 다음, 영상 부호화 장치는 다시 우선순위를 확인해 볼 수 있다. 그렇게 해서 최종 3개의 후보가 채워지면 후보군 찾는 작업을 중단한다.Since the current picture is an I picture, motion information exists only when the encoding mode is set to intra prediction (hereinafter referred to as INTER) in this embodiment. Therefore, in order of priority, check whether it is INTER first. For example, if n is 3 and E is encoded as INTER, E is excluded from the candidate group and the next D is checked. If D is encoded as INTER, it has motion information because block matching is performed in the current picture, and D is added to the candidate group based on this motion information. Then there are 2 n left. Then, the video encoding device can check the priority again. When the final three candidates are filled in this way, the search for candidates is stopped.

가용성은 부호화 모드로만 이용하는 것이 아니고 픽쳐, 슬라이스, 타일 등의 경계(boudnary)인 경우에도 이용할 수 있다. 경계인 경우, 가용성은 이용하지 않음(not available)으로 체크된다. 그리고 이미 채워진 후보와 같거나 비슷하다는 판단 결과가 나올 경우, 해당 블록은 후보에서 제외되고, 참조 화소 구성부는 그 다음 후보의 가용성을 체크하게 된다.Availability is not only used in coding mode, but can also be used in the case of boundaries such as pictures, slices, and tiles. If borderline, availability is checked as not available. And if the determination result is that the block is the same or similar to an already filled candidate, the corresponding block is excluded from the candidate, and the reference pixel component checks the availability of the next candidate.

여기서 INTER는 기존의 화면간 예측(inter)과 다르다. 즉, 본 실시예의 INTER 모드는 화면간 예측(inter) 구조를 활용할 뿐 현재 픽쳐에서 예측 블록을 생성하기 때문에 참조 픽터에서 예측 블록을 생성하는 화면간 예측과는 차이가 있다. 즉, 본 실시예의 부호화 모드에서는 현재 픽쳐에서 블록 매칭하는 방법을 INTER 모드와 intra(기존 intra와 동일함)로 분류하여 적용할 수 있다.Here, INTER is different from the existing inter-screen prediction (inter). That is, the INTER mode of this embodiment only utilizes the inter prediction (inter) structure and generates a prediction block from the current picture, so it is different from inter prediction that generates a prediction block from a reference picture. That is, in the coding mode of this embodiment, the block matching method in the current picture can be classified into INTER mode and intra (same as existing intra) mode and applied.

이하에서는 모션 벡터 카피(MVC)와 모션 벡터 예측(MVP)에 대해서 구분하여 설명하기로 한다. 그 이유는, 스케일링 과정의 포함 여부가 다르기 때문이다.Hereinafter, motion vector copy (MVC) and motion vector prediction (MVP) will be separately described. The reason is that whether or not the scaling process is included is different.

모션 벡터 예측(MVP)에 대해 먼저 설명하면 다음과 같다.Motion vector prediction (MVP) will first be explained as follows.

P 픽쳐나 B 픽쳐의 경우For P picture or B picture

위에서 언급한 후보들(A, B, C, D, E, F, G, H, I, J)에 더하여 시간적인 후보(F, G)도 포함하여 설명하기로 한다. 본 실시예에서는 후보를 공간적으로 탐색하고, 시간적으로 탐색하고, 혼합 리스트를 구성하여 탐색하고, 고정(constant) 후보를 탐색하는 기재된 순서대로 진행한다고 가정한다.In addition to the candidates mentioned above (A, B, C, D, E, F, G, H, I, J), the explanation will also include temporal candidates (F, G). In this embodiment, it is assumed that candidates are searched spatially, searched temporally, a mixed list is formed and searched, and constant candidates are searched in the described order.

먼저, 후보들의 우선순위를 정하고 그에 따라 가용성(availability)을 체크한다. 움직임 벡터의 후보 개수(n)는 2로 설정하고, 우선순위는 괄호 안에 기재한 바와 같다고 가정한다.First, prioritize the candidates and check their availability accordingly. The number of motion vector candidates (n) is set to 2, and the priority is assumed to be as stated in parentheses.

예를 들면, 공간적으로 탐색할 때 다음과 같은 그룹들로 분류할 수 있다.For example, when searching spatially, you can classify into the following groups:

그룹 1_1 = {A, B, C, I, J}, ( C → B → A → I → J)Group 1_1 = {A, B, C, I, J}, (C → B → A → I → J)

그룹 1_2 = {D, E, H}, (D → E → H)Group 1_2 = {D, E, H}, (D → E → H)

본 실시예에서 두 개의 그룹들 중 그룹 1_1은 현재 블록을 기준으로 바로 위쪽, 왼쪽 위쪽, 그리고 오른쪽 위쪽에 있는 블록들을 포함하고, 그룹 1_2는 현재 블록을 기준으로 바로 인접한 왼쪽, 바로 인접하지 않은 왼쪽, 그리고 왼쪽 아래에 있는 블록들을 포함한다.In this embodiment, among the two groups, group 1_1 includes blocks immediately above, above left, and above right based on the current block, and group 1_2 includes blocks immediately adjacent to the left and not immediately adjacent to the current block. , and includes the blocks in the lower left.

다른 실시예로서, 세 개의 그룹들로 구분하여 움직임 벡터의 후보 블록을 공간적으로 탐색할 수 있다. 세 개의 그룹은 다음과 같이 분류 가능하다.As another embodiment, candidate blocks of motion vectors can be spatially searched by dividing them into three groups. The three groups can be classified as follows.

그룹 1_1 = {A, B, C}, (C → B → A)Group 1_1 = {A, B, C}, (C → B → A)

그룹 1_2 = {D, E}, (D → E)Group 1_2 = {D, E}, (D → E)

그룹 1_3 = {H, I, J}, (J → I →H)Group 1_3 = {H, I, J}, (J → I →H)

본 실시예에서 세 개의 그룹들 중 그룹 1_1은 현재 블록을 기준으로 바로 인접한 위쪽, 인접한 왼쪽 위쪽, 그리고 인접한 오른쪽 위쪽에 있는 블록들을 포함하고, 그룹 1_2는 현재 블록을 기준으로 바로 인접한 왼쪽과 바로 인접한 왼쪽 아래에 있는 블록들을 포함하며, 그룹 1_3은 현재 블록과 하나 이상의 블록 간격을 둔 인접하지 않은 블록들을 포함한다.In this embodiment, among the three groups, group 1_1 includes blocks immediately adjacent to the top, adjacent to the upper left, and adjacent to the upper right of the current block, and group 1_2 includes blocks immediately adjacent to the left and immediately adjacent to the current block. Contains the blocks in the lower left, and group 1_3 includes non-adjacent blocks that are one or more blocks apart from the current block.

또 다른 실시예로서, 또 다른 방식으로 세 개의 그룹들로 구분하여 움직임 벡터의 후보 블록을 공간적으로 탐색할 수 있다. 세 개의 그룹은 다음과 같이 분류 가능하다.As another embodiment, candidate blocks of motion vectors can be spatially searched by dividing them into three groups in another way. The three groups can be classified as follows.

그룹 1_1 = {B}Group 1_1 = {B}

그룹 1_2 = {D}Group 1_2 = {D}

그룹 1_3 = {A, C, E}, (E → C → A)Group 1_3 = {A, C, E}, (E → C → A)

본 실시예에서 세 개의 그룹들 중 그룹 1_1은 현재 블록을 기준으로 수직 방향에 위치하는 블록을 포함하고, 그룹 1_2는 현재 블록을 기준으로 수평 방향에 위치하는 인접한 블록을 포함하고, 그룹 1_3은 현재 블록을 기준으로 나머지 인접한 블록들을 포함한다.In this embodiment, among the three groups, group 1_1 includes blocks located vertically relative to the current block, group 1_2 includes adjacent blocks located horizontally relative to the current block, and group 1_3 includes blocks located in the horizontal direction relative to the current block. Based on the block, the remaining adjacent blocks are included.

위에서 살핀 바와 같이, P 픽쳐나 B 픽쳐에서는 참조 방향이나 참조 픽쳐 등의 참고 가능한 정보가 많기 때문에 그에 따라 후보군을 설정할 수 있다. 현재 블록을 기준으로 현재 블록과 참조 픽쳐가 다른 후보 블록에 대해서는 후보군에 포함할 수도 있고, 그 반대로 현재 블록의 참조 픽쳐와 후보 블록의 참조 픽쳐와의 시간적 거리(picture of count, POC)를 고려하여 해당 블록의 벡터를 스케일링한 후후보군에 추가할 수도 있다. 또한, 현재 블록의 참조 픽쳐가 어떤 픽쳐인지에 따라 스케일링한 후보군을 추가할 수도 있다. 또한, 현재 블록의 참조 픽쳐와 후보 블록의 참조 픽쳐와의 시간적인 거리가 일정 거리를 넘을 때는 후보군에서 제외하고 그 이하일 때는 스케일링한 블록을 후보군에 포함할 수도 있다.As seen above, in a P picture or B picture, there is a lot of reference information such as reference direction or reference picture, so the candidate group can be set accordingly. Candidate blocks whose reference pictures are different from the current block based on the current block can be included in the candidate group, or, conversely, by considering the temporal distance (picture of count, POC) between the reference picture of the current block and the reference picture of the candidate block. The vector of the corresponding block can also be scaled and added to the candidate group. Additionally, a scaled candidate group can be added depending on which picture the reference picture of the current block is. Additionally, if the temporal distance between the reference picture of the current block and the reference picture of the candidate block exceeds a certain distance, it may be excluded from the candidate group, and if it is less than this distance, the scaled block may be included in the candidate group.

전술한 유사성 체크(similarity check)란, 이미 예측 후보군에 포함된 움직임 벡터와 새롭게 추가하고자 하는 움직임 벡터가 얼마나 유사한지를 비교하고 결정하는 과정이다. 정의에 따라서, x, y 성분이 완벽하게 일치할 때, 참(true)이 되도록 설정되거나, 일정 문턱치(theshold value) 범위 이하의 차이를 가질 때 참(true)이 되도록 설정될 수 있다.The similarity check described above is a process of comparing and determining how similar the motion vector already included in the prediction candidate group is to the motion vector to be newly added. Depending on the definition, it can be set to be true when the x and y components perfectly match, or it can be set to be true when the difference is less than a certain threshold value.

본 실시예에서는 참조 픽쳐가 현재 픽쳐를 가리킨다는 조건을 예로 들고 있지만 참조 픽쳐가 현재 픽쳐 아닌 경우에로 확장될 수 있다. 예를 들어, '현재 블록이 가리키고 있는 픽쳐보다 더 먼 픽쳐를 사용하는 블록은 제외한다'와 같은 설정을 사용할 수 있다. 본 실시예에서는 현재 블록과 참조픽쳐가 다르더라도 스케일링을 통해 후보군에 넣을 수 있다.In this embodiment, the condition that the reference picture points to the current picture is used as an example, but this can be extended to the case where the reference picture is not the current picture. For example, you can use a setting such as 'Exclude blocks that use pictures farther than the picture pointed to by the current block.' In this embodiment, even if the current block and the reference picture are different, they can be included in the candidate group through scaling.

혼합 리스트mixed list

현재 블록의 양방향 예측을 수행하여 참조 픽쳐 리스트(L0, L1)에 존재하는 참조 픽쳐에 각각의 움직임 정보가 있다고 할 경우. 미리 설정된 후보군의 우선순위에 따라 가용성(availability)을 확인한다. 이 경우 우선순위는 양방향 예측으로 부호화된 것을 먼저 확인한다.When bidirectional prediction of the current block is performed and each reference picture in the reference picture list (L0, L1) contains motion information. Availability is checked according to the priority of preset candidates. In this case, the priority is first checked for those encoded with bidirectional prediction.

만약 각각의 참조 픽쳐가 다를 경우, 스케일링을 수행한다. 앞서 공간적, 시간적으로 탐색하였을 때, 양방향 예측된 블록들만 후보군에 넣었을 때, 그리고 최대 후보수를 넘지 않았을 때에는 앞서 수행한 후보 블록 중 단방향 예측으로 부호화된 블록들을 예비 후보군에 넣은 후에 이들 후보들의 조합으로 양방향 예측을 위한 후보를 만들 수 있다.If each reference picture is different, scaling is performed. When searching spatially and temporally, only bidirectionally predicted blocks were put into the candidate group, and when the maximum number of candidates was not exceeded, blocks encoded by unidirectional prediction among previously performed candidate blocks were put into the preliminary candidate group, and then a combination of these candidates was used. Candidates for bidirectional prediction can be created.

우선 현재 블록의 양방향 예측의 움직임 정보는, L0에서 1번, L1에서 0번의 참조 픽쳐에서 참조된다고 가정하자. 표 5(a)의 경우 첫 번째로 후보에 들어간 블록의 움직임 정보는 (mvA1, ref1)와 (mvA2, ref0), 그리고 두 번째로 후보에 들어간 블록의 움직임 정보는 (mvB1’, ref1)와 (mvB2’, ref0)라고 하자. 여기에서 아포스트로피(’)의 의미는 스케일링된 벡터이다. 공간적, 시간적 탐색까지 마친 후의 후보수가 2개라고 할 경우, 다만 n은 5라고 가정하면, 앞선 단계에서 단방향 예측된 블록들을 미리 설정된 우선순위에 따라 예비 후보로 넣을 수 있다.First, let's assume that the motion information for bidirectional prediction of the current block is referenced from reference picture number 1 in L0 and number 0 in L1. In Table 5(a), the motion information of the first candidate block is (mvA 1 , ref1) and (mvA 2 , ref0), and the motion information of the second candidate block is (mvB 1 ', ref1 ) and (mvB 2 ', ref0). Here, the meaning of the apostrophe (') is a scaled vector. If the number of candidates after completing spatial and temporal search is 2, assuming n is 5, blocks predicted one way in the previous step can be included as preliminary candidates according to the preset priority.

표 3(a)에서는 아직까지 최대 후보수만큼 채우지 못했기 때문에 나머지 움직임 벡터들 mvC, mvD, mvE를 이용한 스케일링된 단방향의 후보들을 조합하여 새로운 후보를 추가할 수 있다.In Table 3(a), since the maximum number of candidates has not yet been filled, new candidates can be added by combining the scaled unidirectional candidates using the remaining motion vectors mvC, mvD, and mvE.

표 3(b)에서 각각 단방향 예측된 블록의 움직임 정보가 현재 블록의 참조 픽쳐에 따라 스케일링 된다. 여기에서 단방향의 후보들로 새로운 조합을 만드는 예를 선보였으나, 이미 추가된 양방향의 참조 픽쳐들(L0, L1) 각각의 움직임 정보들로 새로운 후보의 조합이 가능할 수 있다. 이 부분은 단방향의 예측 등의 상황에서는 수행하지 않는다. 또한, 현재 블록의 참조 픽쳐가 현재 픽쳐일 경우에도 수행하지 않는다.In Table 3(b), the motion information of each unidirectional predicted block is scaled according to the reference picture of the current block. Here, an example of creating a new combination of unidirectional candidates was shown, but a new candidate combination may be possible using the motion information of each of the already added bidirectional reference pictures (L0, L1). This part is not performed in situations such as one-way prediction. Additionally, it is not performed even if the reference picture of the current block is the current picture.

고정(constant) 후보 constant candidate

만약 위의 과정을 통해 최대 후보수 n개(본 실시예에서는 2로 가정함)의 후보 블록을 구성하지 못하는 경우, 미리 설정된 고정 좌표를 갖는 고정(constant) 후보를 추가할 수 있다. (0,0), (-a,0), (-2*a,0), (0,-b)와 같은 고정 좌표를 갖는 고정 후보를 사용할 수 있으며, 최대 후보수에 맞춰 고정 후보의 개수를 설정할 수 있다.If it is not possible to configure candidate blocks with the maximum number of candidates n (assumed to be 2 in this embodiment) through the above process, constant candidates with preset fixed coordinates can be added. Fixed candidates with fixed coordinates such as (0,0), (-a,0), (-2*a,0), (0,-b) can be used, and the number of fixed candidates is adjusted to the maximum number of candidates. can be set.

위와 같은 고정 좌표를 설정할 수도 있고, 위의 과정을 통해 현재까지 후보군에 포함된 최소 2개 이상의 움직임 벡터의 평균, 가중치 평균, 중간값 등의 과정을 통해 고정 후보로 추가할 수 있다. 만약 n이 5이고 현재까지 3개가 후보{(mvA_x,mvA_y), (mvB_x, mvB_y), (mvC_x, mvC_y)}로 등록되어 있다면, 남은 2개의 후보를 채우기 위해 미리 정해진 우선순위를 가진 고정 후보들을 포함하는 후보군을 두고 그에 따른 우선순위에 따라 고정 후보를 추가할 수 있다. 고정 후보군은 예를 들면 {(mvA_x + mvB_x)/2, (mvA_y + mvB_y)/2), ((mvA_x + mvB_x + mvC_x)/3, (mvA_y + mvB_y + mvC_y)/3), (median(mvA_x, mvB_x, mvC_x), median(mvA_y, mvB_y, mvC_y)) 등과 같은 고정 후보들을 포함할 수 있다.You can set fixed coordinates as above, or you can add them as fixed candidates through the process above, such as the average, weighted average, and median of at least two motion vectors included in the candidate group so far. If n is 5 and so far 3 candidates have been registered as candidates {(mvA_x,mvA_y), (mvB_x, mvB_y), (mvC_x, mvC_y)}, fixed candidates with predetermined priorities are selected to fill the remaining 2 candidates. You can have a group of candidates included and add fixed candidates according to their priority. Fixed candidates are, for example, {(mvA_x + mvB_x)/2, (mvA_y + mvB_y)/2), ((mvA_x + mvB_x + mvC_x)/3, (mvA_y + mvB_y + mvC_y)/3), (median(mvA_x) , mvB_x, mvC_x), median(mvA_y, mvB_y, mvC_y)), etc.

또한, 현재 블록의 참조 픽쳐에 따라 고정 후보를 다르게 설정할 수 있다. 예를 들어, 현재 픽쳐가 참조 픽쳐일 때는 (-a,0), (0,-b), (-2*a,0)과 같이 고정 후보를 설정할 수도 있고, 현재 픽쳐가 참조 픽쳐가 아닐 때는 (0,0), (-a,0), (average(mvA_x, …), average(mvA_y, …))과 같이 설정할 수도 있다. 이에 따른 정보는 부호화기나 복호화기에 미리 설정할 수 있고, 또는 시퀀스, 픽쳐, 슬라이스 등의 단위로 전송 가능하다.Additionally, fixation candidates can be set differently depending on the reference picture of the current block. For example, when the current picture is a reference picture, you can set fixed candidates such as (-a,0), (0,-b), (-2*a,0), and when the current picture is not a reference picture, It can also be set as (0,0), (-a,0), (average(mvA_x, …), average(mvA_y, …)). The corresponding information can be set in advance in the encoder or decoder, or can be transmitted in units such as sequences, pictures, and slices.

이하에서는 모션 벡터 카피(MVC)에 대해서 좀더 상세히 설명하기로 한다.Below, motion vector copy (MVC) will be described in more detail.

P 픽쳐나 B 픽쳐에 대한 설명Description of P picture or B picture

본 실시예에서는 시간적인 후보(F, G)도 포함한다고 가정한다. 후보군은 A, B, C, D, E, F, G, H, I, J를 포함한다. 탐색 순서가 정해져 있는 건 아니지만 여기에서는 MVC 후보를 공간적으로 탐색하고, 시간적으로 탐색하고, 혼합 리스트를 구성하여 탐색하고, 고정(constant) 후보를 추가하는 순으로 진행한다고 가정한다.In this embodiment, it is assumed that temporal candidates (F, G) are also included. Candidates include A, B, C, D, E, F, G, H, I, and J. Although the search order is not set, it is assumed here that MVC candidates are searched spatially, searched temporally, searched by constructing a mixed list, and constant candidates are added.

즉, 앞에 설명한 부분도 이와 같이 탐색 순서를 임의로 정해놓은 것이지 미리 정해진 순서를 사용한다는 것이 아니다. 우선순위를 정해두고 그에 따른 가용성을 체크한다. n을 5, 우선순위는 괄호안과 같다고 가정한다.In other words, the part described above also arbitrarily determines the search order, and does not use a predetermined order. Set priorities and check availability accordingly. Assume n is 5 and the priority is the same as in parentheses.

이하의 설명에서는 전술한 모션 벡터 예측(MVP)에서의 차이 부분에 대해서만 설명하기로 한다. MVP 부분은 앞 부분에서 스케일링에 대한 부분만 빼고 아래의 내용을 첨부하여 작성할 수 있다. 공간적인 후보에 대해서는 스케일링 과정은 생략한 채 가용성을 확인할 수 있다. 다만, MVC와 비슷하게 참조 픽쳐의 타입, 현재 픽쳐 또는 현재 블록의 참조 픽쳐와의 거리 등을 후보군에서 제외할 수도 있다.In the following description, only the differences in motion vector prediction (MVP) described above will be described. The MVP part can be written by attaching the following content, excluding the part about scaling from the previous part. For spatial candidates, availability can be checked without the scaling process. However, similar to MVC, the type of reference picture, the distance to the current picture or the reference picture of the current block, etc. can be excluded from the candidate group.

혼합 리스트가 존재하는 경우, 아래의 표 4와 같이 현재까지 추가된 후보들의 조합으로 양방향 예측을 위한 후보를 만들 수 있다.If a mixed list exists, a candidate for bidirectional prediction can be created by combining the candidates added so far, as shown in Table 4 below.

표 4(a)에 나타낸 바와 같이, 참조 리스트 LO를 사용하는 후보와 참조 리스트 L1 사용하는 후보를 조합하여 새로운 후보를 움직임 벡터 후보군에 추가할 수 있다. 미리 정해진 움직임 벡터 개수인 5개를 채우지 못하는 경우, 표 4(b)에 나타낸 바와 같이, L0의 다음 후보와 L1을 사용하는 후보를 조합하여 새롭게 후보에 추가할 수 있다.As shown in Table 4(a), a new candidate can be added to the motion vector candidate group by combining a candidate using the reference list LO and a candidate using the reference list L1. If the predetermined number of motion vectors of 5 is not met, a new candidate can be added by combining the next candidate in L0 and the candidate using L1, as shown in Table 4(b).

위와 같이 최적의 움직임 정보의 후보를 찾는 MVP, MVC 등의 모드에 따라 부호화할 수 있다.As above, encoding can be done according to modes such as MVP and MVC that find candidates for optimal motion information.

스킵 모드일 경우에는 MVC를 이용하여 부호화할 수 있다. 즉, 스킵 플래그 처리 후에 최적의 움직임 벡터 후보에 대한 정보를 부호화할 수 있다. 후보가 1개일 경우에는 이 부분을 생략할 수 있다. 움직임 벡터 차분치 등을 따로 부호화하지 않고 현재 블록과 예측 블록과의 차분치인 잔차 성분에 대해 변환 및 양자화 등의 과정을 통해 부호화할 수 있다.In skip mode, encoding can be done using MVC. That is, after skip flag processing, information about the optimal motion vector candidate can be encoded. If there is only one candidate, this part can be omitted. Instead of separately encoding the motion vector difference, etc., the residual component, which is the difference between the current block and the prediction block, can be encoded through processes such as transformation and quantization.

스킵이 아니면 우선순위로 MVC를 통해 움직임 정보를 처리할지에 대해 먼저 확인과정을 거친 후 맞으면 최적의 움직임 벡터의 후보군에 대한 정보를 부호화할 수 있다. 만약 MVC를 통해 움직임 정보를 처리할 것이 아니면 MVP를 통해 움직임 정보를 처리할 수 있다. MVP의 경우 최적의 움직임 벡터 후보에 대한 정보를 부호화할 수 있다. 여기에서 후보가 1개인 경우 움직임 정보 처리를 생략할 수 있다. 그리고 현재 블록의 움직임 벡터와의 차분치, 참조 방향, 참조 픽쳐 인덱스 등의 정보를 부호화하고 잔차 성분을 얻은 다음 이에 대해 변환 및 양자화 등의 과정을 통해 부호화할 수 있다.If it is not a skip, it first goes through a confirmation process as to whether to process the motion information through MVC as a priority, and if it is correct, information about the candidate group of the optimal motion vector can be encoded. If you do not want to process motion information through MVC, you can process motion information through MVP. In the case of MVP, information about optimal motion vector candidates can be encoded. Here, if there is only one candidate, motion information processing can be omitted. In addition, information such as the difference value with the motion vector of the current block, reference direction, and reference picture index can be encoded, residual components can be obtained, and then encoded through processes such as transformation and quantization.

이후의 엔트로피 및 후처리 필터링 등 코덱에 대한 것은 상술한 설명과의 중복을 피하기 위해 생략한다.Details about the codec, such as entropy and post-processing filtering, are omitted to avoid overlap with the above description.

도 17은 도 15에서 블록 단위로 움직임 벡터 정밀도가 다른 경우를 설명하기 위한 도면이다. 도 18은 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 참조 픽쳐의 보간 정밀도에 따라 블록의 움직임 벡터 정밀도가 결정되는 케이스를 설명하기 위한 도면이다.FIG. 17 is a diagram for explaining a case in which motion vector precision is different for each block in FIG. 15. FIG. 18 is a diagram illustrating a case in which the motion vector precision of a block is determined according to the interpolation precision of a reference picture in the video encoding and decoding method according to an embodiment of the present invention.

도 17에서 각 픽쳐 아래쪽에 기재된 괄호 안 숫자(2)는 보간 정밀도 깊이 정보라고 가정한다. 즉, 도 17은 현재 픽쳐(t)와 참조 픽쳐들(t-1, t-2, t-3)을 포함한 픽쳐들 각각의 보간 정밀도는 고정되어 있지만, 블록 단위로 움직임 벡터 정밀도가 적응적으로 결정되는 경우이고, 도 18은 참조 픽쳐의 보간 정밀도에 따라 블록의 움직임 벡터 정밀도가 결정되는 경우이다. 도 18에서 보간 정밀도의 깊이 정보는 In Figure 17, it is assumed that the number (2) in parentheses written below each picture is interpolation precision depth information. That is, in Figure 17, the interpolation precision of each picture including the current picture (t) and the reference pictures (t-1, t-2, t-3) is fixed, but the motion vector precision is adaptively adjusted on a block basis. This is a case where the motion vector precision of a block is determined according to the interpolation precision of the reference picture. In Figure 18, the depth information of the interpolation precision is

전술한 두 경우들 각각에서 전술한 '움직임 정보 예측 후보의 선택' 또는 '움직임 벡터 후보의 선택'에 기초하여 움직임 벡터 예측값을 생성할 수 있다.In each of the two cases described above, a motion vector prediction value can be generated based on the above-described 'selection of motion information prediction candidate' or 'selection of motion vector candidate'.

본 실시예에서 움직임 벡터의 예측에 사용되는 최대 후보수는 3개로 설정될 수 있다. 여기에서, 후보 블록은 현재 블록의 왼쪽, 위쪽, 오른쪽 위 블록들로 한정될 수 있다. 후보 블록은 공간적으로뿐만 아니라 시간적 그리고 공간적으로 인접하지 않은 근처의 블록으로 설정가능하다.In this embodiment, the maximum number of candidates used for motion vector prediction can be set to 3. Here, candidate blocks may be limited to blocks to the left, above, and above right of the current block. Candidate blocks can be set as nearby blocks that are not adjacent spatially as well as temporally and spatially.

도 19는 본 발명의 일 실시예에 따른 움직임 벡터 차분치를 이용하는 영상 부호화 및 복호화 방법에 대한 흐름도이다.Figure 19 is a flowchart of an image encoding and decoding method using motion vector difference according to an embodiment of the present invention.

도 19를 참조하면, 본 실시예에 따른 영상 복호화 방법은, 예측부에서 움직임 정보 예측 후보군을 구성한 후, 현재 블록의 움직임 벡터와의 차분치를 구할 수 있다.Referring to FIG. 19, the image decoding method according to this embodiment can configure a motion information prediction candidate group in the prediction unit and then obtain a difference value with the motion vector of the current block.

좀더 구체적으로 설명하면, 먼저 후보군에 속한 블록의 움직임 벡터를 현재 블록의 움직임 벡터의 정밀도 단위에 맞춰 변경할 수 있다(S192).To explain in more detail, first, the motion vector of a block belonging to the candidate group can be changed to match the precision unit of the motion vector of the current block (S192).

다음, 현재 블록의 움직임 벡터의 참조 픽쳐의 거리 즉, 현재 픽쳐와 참조 픽쳐와의 거리 및 후보군에 속한 블록의 픽쳐와 해당 블록의 참조 픽쳐와의 거리에 따라 움직임 벡터 스케일링 과정을 수행할 수 있다(S194).Next, a motion vector scaling process can be performed according to the distance between the motion vector of the current block and the reference picture, that is, the distance between the current picture and the reference picture, and the distance between the picture of the block belonging to the candidate group and the reference picture of the block ( S194).

다음으로, 예측부는 하나의 픽쳐로 스케일링된 움직임 벡터들을 토대로 현재 블록과 해당 블록의 움직임 벡터 차분치를 획득할 수 있다(S196).Next, the prediction unit can obtain the motion vector difference between the current block and the corresponding block based on the motion vectors scaled into one picture (S196).

전술한 단계들을 통해 움직임 벡터 차분치를 획득하는 과정을 아래의 예시를 통해 좀더 구체적으로 설명하기로 한다.The process of obtaining motion vector differential values through the above-described steps will be explained in more detail through the example below.

도 20 내지 도 25는 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 블록 단위로 보간 정밀도가 정해질 때 다양한 케이스들에 대한 움직임 벡터 차분치 산출 과정을 설명하기 위한 도면들이다.Figures 20 to 25 are diagrams for explaining the process of calculating motion vector difference values for various cases when interpolation precision is determined on a block-by-block basis in the video encoding and decoding method according to an embodiment of the present invention.

픽쳐 단위로 보간 정밀도가 정해지는 경우When interpolation precision is determined on a per-picture basis

도 20에 나타낸 바와 같이, 현재 블록 주위의 3개의 블록이 움직임 정보 부호화를 위한 후보 블록이라고 가정한다. 여기서, 참조 픽쳐의 보간 정밀도는 현재 픽쳐(t)는 정수(integer, Int), 제1 참조 픽쳐(t-1)는 1/4, 제2 참조 픽쳐(t-2)는 1/4, 제3 참조 픽쳐(t-3)는 1/2이라고 가정한다.As shown in FIG. 20, it is assumed that three blocks surrounding the current block are candidate blocks for motion information encoding. Here, the interpolation precision of the reference picture is an integer (integer, Int) for the current picture (t), 1/4 for the first reference picture (t-1), 1/4 for the second reference picture (t-2), and 1/4 for the second reference picture (t-2). 3 Assume that the reference picture (t-3) is 1/2.

도 20에서 (A1)의 블록들을 각각의 움직임 벡터 정밀도에 맞춰 (A2)의 블록들과 같이 표현할 수 있다.In FIG. 20, the blocks of (A1) can be expressed like the blocks of (A2) according to each motion vector precision.

현재 블록의 참조 픽쳐와 다른 참조 픽쳐를 가리키고 있는 블록에도 참조 픽쳐 간의 거리를 고려하여 스케일링을 통해 후보로 사용 가능하다고 설정하면, (A2)의 블록을 (A3)의 후보 블록들의 참조 픽쳐와 현재 블록의 참조 픽쳐의 거리를 고려하여 스케일링을 수행할 수 있다. 같은 참조 픽쳐의 블록은 스케일링하지 않는다. 스케일링을 수행할 때, 현재 픽쳐와 참조 픽쳐의 거리보다 작은 경우에는 반올림, 올림, 내림 중 하나를 선택하여 적용할 수 있다. 그런 다음, (A4)의 블록과 같이 현재 블록의 움직임 벡터 정밀도를 고려하여 후보 블록의 움직임 벡터를 조정할 수 있다. 본 실시예에서는 오른쪽 위 블록이 최적의 후보로 선택되었다고 가정한 것이다.If blocks pointing to reference pictures different from the reference picture of the current block are set to be used as candidates through scaling considering the distance between reference pictures, the block in (A2) is used as the reference picture of the candidate blocks in (A3) and the current block. Scaling can be performed considering the distance of the reference picture. Blocks of the same reference picture are not scaled. When performing scaling, if the distance between the current picture and the reference picture is smaller, you can select one of rounding, rounding up, or down to apply. Then, like the block in (A4), the motion vector of the candidate block can be adjusted considering the motion vector precision of the current block. In this embodiment, it is assumed that the upper right block is selected as the optimal candidate.

도 20에서 아래 가운데에 위치하는 현재 블록을 기준으로 오른쪽 위 블록만 1/2 단위이므로 이를 1/4단위로 바꿔주기 위해 분모와 분자에 2씩을 곱했지만, 만약 그 반대의 상황 예컨대, 1/8 단위에서 1/4 단위로 조정하는 경우에는, 이후 후보군 중 최적의 후보(MVcan)를 선택한 후 현재 블록의 움직임 벡터(MVx)와의 차분치(MVD)를 구하여 이를 부호화할 수 있다. 이를 수식으로 표현하면 아래와 같다.In Figure 20, based on the current block located in the bottom center, only the upper right block is 1/2 units, so to change it to 1/4 units, the denominator and numerator were multiplied by 2, but if the opposite situation occurs, for example, 1/8 When adjusting from a unit to a 1/4 unit, the optimal candidate (MVcan) can be selected from among the candidates, then the difference value (MVD) with the motion vector (MVx) of the current block is obtained and encoded. This can be expressed in a formula as follows:

MVD = MVx - MVcan → (2/4, 1/4)MVD = MVx - MVcan → (2/4, 1/4)

전술한 실시예에서는 스케일링을 먼저 수행하고 나중에 정밀도를 조정하였으나, 이에 한정되지 않으며, 정밀도를 먼저 수행하고 스케일링을 수행할 수도 있다.In the above-described embodiment, scaling is performed first and precision is adjusted later, but the present invention is not limited to this, and precision may be performed first and then scaling.

블록 단위로 보간 정밀도가 정해질 때, 현재 블록과 후보 블록들의 참조 픽쳐가 같다고 가정하는 경우 When interpolation precision is determined on a block basis, it is assumed that the reference pictures of the current block and candidate blocks are the same.

도 21에 나타낸 바와 같이, 현재 블록 주위의 3개의 블록들이 움직임 정보 부호화를 위한 후보 블록들이다. 여기서 참조 픽쳐의 보간 정밀도는 모두 1/8로 같다고 가정한다. (B1)의 블록들은 각각의 움직임 벡터 정밀도에 맞춰 (B2)의 블록들과 같이 표현될 수 있다. 현재 블록의 참조 픽쳐와 후보 블록의 참조 픽쳐가 같기 때문에 스케일링 과정은 생략된다.As shown in FIG. 21, three blocks around the current block are candidate blocks for motion information encoding. Here, it is assumed that the interpolation precision of the reference pictures is all the same at 1/8. The blocks in (B1) can be expressed like the blocks in (B2) according to each motion vector precision. Since the reference picture of the current block and the reference picture of the candidate block are the same, the scaling process is omitted.

다음, (B2)의 후보 블록들 각각의 움직임 벡터는 (B3)의 블록들과 같이 현재 블록의 움직임 벡터 정밀도를 고려하여 조정될 수 있다.Next, the motion vector of each candidate block in (B2) can be adjusted considering the motion vector precision of the current block like the blocks in (B3).

그런 다음, 후보군 중 최적의 후보(MVcan)를 선택한 후 현재 블록의 움직임 벡터(MVx)와의 차분치(MVD)를 구하여 이를 부호화 한다. 도 21에서는 아래 라인의 가운데에 위치하는 현재 블록을 기준으로 그 위쪽 블록이 최적의 후보로 선택된 것으로 가정한다. 이를 수식으로 표현하면 다음과 같다.Then, after selecting the optimal candidate (MVcan) among the candidates, the difference value (MVD) with the motion vector (MVx) of the current block is obtained and encoded. In Figure 21, it is assumed that based on the current block located in the center of the line below, the block above it is selected as the optimal candidate. This can be expressed in a formula as follows:

MVD = MVx - MVcan → (1/2, -1/2)MVD = MVx - MVcan → (1/2, -1/2)

블록 단위로 보간 정밀도가 정해질 때, 현재 블록과 후보 블록들의 참조 픽쳐가 다른 경우 When interpolation precision is determined on a block-by-block basis, the reference pictures of the current block and candidate blocks are different.

본 실시예에서 참조 픽쳐의 보간 정밀도는 모두 같다고 가정한다. 일례로 참조 픽쳐의 보간 정밀도는 모두 1/8일 수 있다.In this embodiment, it is assumed that the interpolation precision of all reference pictures is the same. For example, the interpolation precision of the reference picture may all be 1/8.

도 22를 참조하면, (C1)의 블록들을 각각의 움직임 벡터 정밀도에 맞춰 (C2)의 블록들과 같이 표현할 수 있다. 그리고 현재 블록의 참조 픽쳐와 후보 블록의 참조 픽쳐가 다르기 때문에 스케일링을 수행하여 (C3)의 블록들을 얻을 수 있다.Referring to FIG. 22, the blocks of (C1) can be expressed like the blocks of (C2) according to each motion vector precision. And since the reference picture of the current block and the reference picture of the candidate block are different, the blocks of (C3) can be obtained by performing scaling.

다음, (C3)의 블록들 중에서 현재 블록의 움직임 벡터 정밀도를 고려하여 (C4)의 블록들과 같이 후보 블록의 움직임 벡터를 조정할 수 있다. 그 후, 후보군 중 최적의 후보(MVcan)를 선택한 후 현재 블록의 움직임 벡터(MVx)와의 차분치(MVD)를 구하여 이를 부호화할 수 있다. 도 22에서는 아래쪽 가운데에 위치하는 현재 블록을 기준으로 오른쪽 위쪽 블록이 최적의 후보로 선택된 것으로 가정한다. 이를 수식으로 표현하면 아래와 같다.Next, considering the motion vector precision of the current block among the blocks in (C3), the motion vector of the candidate block can be adjusted like the blocks in (C4). Afterwards, the optimal candidate (MVcan) can be selected from among the candidates, then the difference value (MVD) with the motion vector (MVx) of the current block is obtained and encoded. In Figure 22, it is assumed that the upper right block is selected as the optimal candidate based on the current block located in the lower center. This can be expressed in a formula as follows:

MVD = MVx - MVcan → (1/4, 3/4)MVD = MVx - MVcan → (1/4, 3/4)

픽쳐 단위로 보간 정밀도가 정해질 때, 시간적으로 위치한 후보 블록도 포함하는 경우 When interpolation precision is determined per picture, temporally located candidate blocks are also included.

본 실시예에서 참조 픽쳐의 보간 정밀도는 모두 같다고 가정한다. 일례로 참조 픽쳐의 보간 정밀도는 1/2이라고 가정한다. 도 23에 나타낸 바와 같이, (D1)의 블록들을 각각의 움직임 벡터 정밀도에 맞춰 (D2)의 블록들과 같이 표현할 수 있다. 현재 픽쳐를 참조 픽쳐로 삼는 블록의 경우, 일반적인 움직임 예측이 아니기 때문에 해당 블록은 후보군에서 제외(invalid)할 수 있다.In this embodiment, it is assumed that the interpolation precision of all reference pictures is the same. For example, assume that the interpolation precision of the reference picture is 1/2. As shown in FIG. 23, the blocks of (D1) can be expressed like the blocks of (D2) according to each motion vector precision. In the case of a block that uses the current picture as a reference picture, the block can be excluded (invalid) from the candidate group because it is not a general motion prediction.

다음, 현재 블록의 참조 픽쳐와 후보 블록의 참조 픽쳐가 다르기 때문에 스케일링을 수행하여 (D3)의 블록들을 얻을 수 있다. 이때, co-located block의 픽쳐가 특정 참조 픽쳐(t-1)이라고 가정한다.Next, since the reference picture of the current block and the reference picture of the candidate block are different, scaling can be performed to obtain the blocks of (D3). At this time, it is assumed that the picture of the co-located block is a specific reference picture (t-1).

그 후, (D3)의 블록들 중에서 아래 가운데에 위치하는 현재 블록의 움직임 벡터 정밀도를 고려하여 (D4)의 블록과 같이 후보 블록의 움직임 벡터를 조정할 수 있다. 그런 다음, 후보군 중 최적의 후보(MVcan)를 선택한 후 현재 블록의 움직임 벡터(MVx)와의 차분치(MVD)를 구하여 이를 부호화할 수 있다. 본 실시예에서는 co-located 블록이 최적의 후보로 선택된 것으로 가정하고 있다. 전술한 구성을 수식으로 표현하면 다음과 같다.Afterwards, the motion vector of the candidate block can be adjusted like the block in (D4) by considering the motion vector precision of the current block located in the bottom center among the blocks in (D3). Then, after selecting the optimal candidate (MVcan) from the candidate group, the difference value (MVD) with the motion vector (MVx) of the current block can be obtained and encoded. In this embodiment, it is assumed that the co-located block is selected as the optimal candidate. The above-described configuration can be expressed in a formula as follows.

MVD = MVx - MVcan → (2/4, 2/4)MVD = MVx - MVcan → (2/4, 2/4)

블록 단위로 보간 정밀도가 정해질 때, 현재 블록이 현재 픽쳐를 참조하는 경우 When interpolation precision is determined on a block-by-block basis, when the current block refers to the current picture

본 실시예에서 참조 픽쳐의 보간 정밀도는 모두 같다고 가정한다. 일례로, 참조 픽쳐의 보간 정밀도는 1/4일 수 있다.In this embodiment, it is assumed that the interpolation precision of all reference pictures is the same. For example, the interpolation precision of the reference picture may be 1/4.

도 24에 도시한 바와 같이, (E1)의 블록들을 각각의 움직임 벡터 정밀도에 맞춰 (E2)의 블록들과 같이 표현할 수 있다. 아래쪽 가운데에 위치하는 현재 픽쳐를 참조 픽쳐로 삼는 블록의 경우, 일반적인 움직임 예측이 아닌 현재 픽쳐에서 블록 매칭을 수행하기 때문에 동일한 동작을 수행하는 위쪽 블록만 후보로 남고 나머지는 후보군에서 제외(invalid)될 수 있다.As shown in FIG. 24, the blocks of (E1) can be expressed like the blocks of (E2) according to each motion vector precision. In the case of a block that uses the current picture located in the bottom center as a reference picture, since block matching is performed on the current picture rather than general motion prediction, only the upper block that performs the same motion will remain as a candidate, and the rest will be excluded (invalid) from the candidate group. You can.

현재 블록의 참조 픽쳐와 후보 블록의 참조 픽쳐가 같기 때문에 스케일링을 수행하지 않는다. 그런 다음, 현재 블록의 움직임 벡터 정밀도를 고려하여 (E3)의 블록들과 같이 후보 블록의 움직임 벡터를 조정할 수 있다.Because the reference picture of the current block and the reference picture of the candidate block are the same, scaling is not performed. Then, considering the motion vector precision of the current block, the motion vector of the candidate block can be adjusted like the blocks in (E3).

그런 다음, 후보군 중 최적의 후보(MVcan)를 선택한 후 현재 블록의 움직임 벡터(MVx)와의 차분치(MVD)를 구하여 이를 부호화할 수 있다. 본 실시예에서 위쪽 블록이 최적의 후보로 선택된 것으로 가정한다. 전술한 과정의 결과를 수식으로 표현하는 다음과 같다.Then, after selecting the optimal candidate (MVcan) from the candidate group, the difference value (MVD) with the motion vector (MVx) of the current block can be obtained and encoded. In this embodiment, it is assumed that the upper block is selected as the optimal candidate. The result of the above-mentioned process is expressed in a formula as follows.

MVD = MVx - MVcan → (-5/2, -1/2)MVD = MVx - MVcan → (-5/2, -1/2)

다음으로, 본 실시예에 따른 영상 부호화 및 복호화 방법은 현재 블록의 부호화에 이웃하는 참조 블록의 정보를 활용할 수 있다. 이와 관련하여, 도 25에 나타낸 바와 같이, 현재 블록을 중심으로 이웃 블록의 부호화 모드 및 그에 따른 정보를 이용할 수 있다.Next, the image encoding and decoding method according to this embodiment can utilize information on neighboring reference blocks to encode the current block. In this regard, as shown in FIG. 25, the encoding mode and corresponding information of neighboring blocks can be used, focusing on the current block.

도 25에서 위쪽의 블록들(E5)은 현재 픽쳐가 I 픽쳐일 때의 경우이며, 현재 픽쳐에서 블록 매칭을 통해 예측 블록을 생성하여 부호화하는 경우를 나타내고 있다.In FIG. 25, the upper blocks E5 represent a case where the current picture is an I picture, and represent a case where a prediction block is generated and encoded through block matching in the current picture.

본 실시예의 화면내 예측은, 기존의 외삽 기반의 방법에 더하여 본 실시예의 방법을 적용한 것으로서, INTRA로 표현될 수 있으며, 현재 픽쳐에서 블록 매칭을 수행할 경우 Inter를 포함할 수 있다.The intra-screen prediction of this embodiment applies the method of this embodiment in addition to the existing extrapolation-based method, and can be expressed as INTRA, and may include Inter when block matching is performed in the current picture.

좀더 구체적으로 설명하면, Inter일 땐, 움직임 벡터, 참조 픽쳐 등의 정보 등을 활용할 수 있다. 이웃하는 블록 부호화 모드가 같은 경우에 해당 블록(E5, E6 및 E7)의 정보를 기재된 순서대로 현재 블록의 부호화에 활용할 수 있으며 바로 근접하지 않은 블록들도, 예를 들어, (E5)의 블록들에서 블록의 부호화 모드를 확인하여 후보 블록으로 추가하는 경우에 부호화 모드가 inter이고 추가적으로 참조 픽쳐(ref)를 확인하는데 ref가 t라고 표시된 블록들도 현재 블록의 부호화에 활용할 수 있다. 참조 픽쳐의 보간 정밀도에 따라 움직임 벡터의 정밀도가 정해지는 경우 예컨대, 현재 픽쳐의 보간 정밀도가 정수 단위인 경우, Inter로 부호화된 블록들의 움직임 벡터는 정수 단위로 표현될 수 있다.To be more specific, when using Inter, information such as motion vectors and reference pictures can be utilized. If the neighboring block encoding modes are the same, the information of the corresponding blocks (E5, E6, and E7) can be used to encode the current block in the order described, and blocks that are not immediately adjacent, for example, blocks of (E5), can be used to encode the current block. When checking the coding mode of a block and adding it as a candidate block, the coding mode is inter and a reference picture (ref) is additionally checked. Blocks with ref indicated as t can also be used for coding of the current block. When the precision of the motion vector is determined according to the interpolation precision of the reference picture, for example, when the interpolation precision of the current picture is in integer units, the motion vectors of blocks encoded as Inter can be expressed in integer units.

(E6)는 현재 픽쳐가 P나 B일 때의 경우를 나타낸다. 현재 블록의 부호화에 이웃하는 참조 블록의 정보를 활용할 수 있다. 만약 참조 픽쳐의 보간 정밀도에 따라 움직임 벡터의 정밀도가 정해지는 경우, 각 참조 픽쳐의 보간 정밀도에 따라 각 블록의 움직임 벡터 정밀도가 설정될 수 있다.(E6) represents the case when the current picture is P or B. Information on neighboring reference blocks can be used to encode the current block. If the precision of the motion vector is determined according to the interpolation precision of the reference picture, the motion vector precision of each block can be set according to the interpolation precision of each reference picture.

(E7)은 현재 픽쳐가 P나 B의 경우이며, 현재 픽쳐가 참조 픽쳐로 포함되는 경우이다. 참조 블록의 보간 정밀도에 따라 각 블록의 움직임 벡터의 정밀도가 결정될 수 있다.(E7) is a case where the current picture is P or B, and the current picture is included as a reference picture. The precision of the motion vector of each block may be determined depending on the interpolation precision of the reference block.

(E8)은 현재 블록의 부호화를 위해 co-located block의 정보를 활용하는 경우이다. 각각의 참조 픽쳐의 보간 정밀도에 따라 각 블록의 움직임 벡터의 정밀도가 결정될 수 있다.(E8) is a case where information from a co-located block is used to encode the current block. The precision of the motion vector of each block can be determined according to the interpolation precision of each reference picture.

이후의 부호화 및 복호화 과정에서는 움직임 정보를 부호화하는 과정이 적용될 수 있다. 다만, 본 실시예에서는 움직임 벡터의 차분치에 대해서 정밀도를 적응적으로 두어 부호화하게 된다. 즉, 참조 픽쳐의 보간 정밀도가 일정하고, 블록 간의 움직임 벡터 정밀도가 일정한 경우를 포함할 수 있다. 즉, 참조 픽쳐의 보간 정밀도에 따라 움직임 벡터 정밀도가 정해질 수 있다.In subsequent encoding and decoding processes, a process of encoding motion information may be applied. However, in this embodiment, the differential value of the motion vector is encoded with adaptive precision. That is, this may include cases where the interpolation precision of the reference picture is constant and the motion vector precision between blocks is constant. That is, motion vector precision can be determined according to the interpolation precision of the reference picture.

도 26 내지 도 29는 본 발명의 일실시예에 따른 영상 부호화 및 복호화 방법에서 움직임 벡터 차분치의 정밀도에 대한 표현 과정을 설명하기 위한 도면들이다.Figures 26 to 29 are diagrams for explaining the process of expressing the precision of motion vector difference values in the video encoding and decoding method according to an embodiment of the present invention.

본 실시예에서는 여러 후보블록 중 최적의 후보 블록의 움직임 벡터가 (a, b)이고 현재 블록의 움직임 벡터가 (c, d)라고 한다. 설명의 편의를 위해 참조 픽쳐가 같다고 가정한다.In this embodiment, the motion vector of the optimal candidate block among several candidate blocks is (a, b) and the motion vector of the current block is (c, d). For convenience of explanation, it is assumed that the reference pictures are the same.

도 26의 (F1)에 나타낸 바와 같이, 참조 픽쳐의 보간 정밀도는 1/4이라고 가정한다. 현재 블록과 최적의 후보 블록의 움직임 벡터 차분치(c-a, d-b)를 구해서 복호화기에 보내야 한다. 이를 위해, 본 실시예에서는 (F1)의 블록들을 각각의 움직임 벡터 정밀도에 맞춰 (F2)의 블록들과 같이 표현할 수 있다. 참조 픽쳐가 같고 각 블록의 움직임 벡터 정밀도가 같기 때문에 바로 (F2)의 블록들을 움직임 벡터 부호화에 활용할 수 있다.As shown in (F1) of FIG. 26, it is assumed that the interpolation precision of the reference picture is 1/4. The motion vector difference values (c-a, d-b) of the current block and the optimal candidate block must be obtained and sent to the decoder. To this end, in this embodiment, the blocks of (F1) can be expressed like the blocks of (F2) according to each motion vector precision. Since the reference picture is the same and the motion vector precision of each block is the same, the blocks in (F2) can be used for motion vector coding.

즉, (F2)에 나타낸 바와 같이, 현재 블록의 움직임 벡터인 (c,d)가 (21/4, 10/4)이고, 최적의 후보 블록을 왼쪽 블록이라고 할 경우 왼쪽 블록의 움직임 벡터인 (a,b)는 (13/4, 6/4)이므로, 이들의 차분치를 나타내는 (c-d, d-b)는 (8/4, 4/4)가 된다. 움직임 벡터 정밀도가 1/4단위이므로, 아래 표 5와 같이 이진 인덱스(bin index)를 8과 4를 사용하여 처리할 수 있다. 다만, 움직임 벡터의 차분치에 대한 정밀도에 대한 정보를 보내준다면 이러한 정밀도를 더 짧은 비트 인덱스(bit index)를 할당하여 처리할 수 있다.That is, as shown in (F2), (c,d), the motion vector of the current block, is (21/4, 10/4), and if the optimal candidate block is the left block, the motion vector of the left block is ( Since a,b) are (13/4, 6/4), (c-d, d-b), which represents their difference, becomes (8/4, 4/4). Since the motion vector precision is 1/4 units, the binary index can be processed using 8 and 4 as shown in Table 5 below. However, if information about the precision of the difference value of the motion vector is sent, this precision can be processed by allocating a shorter bit index.

현재 블록의 움직임 벡터 차분치가 정수 단위의 정밀도를 갖는다는 정보를 전송하면, 기존의 bin index를 8과 4를 써야 할 것을 정수 단위로 옮겨 2와 1을 사용함으로써 더 짧은 bin index를 사용할 수 있다. 여러 가지 이진화 방법을 사용한다고 할 경우, 예컨대 단항 이진화를 사용하는 경우, 전술한 차분치인 (8/4, 4/4)를 위해 111111110 + 11110 의 비트를 전송해야 하지만, 차분치의 정밀도에 대한 정보를 보내주고 (2/1, 1/1)에 해당하는 110 + 10 의 비트를 전송하면, 더 짧은 비트를 사용할 수 있어 부호화 효율을 높일 수 있다.If information is transmitted that the motion vector differential value of the current block has a precision of integer units, a shorter bin index can be used by moving the existing bin index of 8 and 4 to integer units and using 2 and 1. When using various binarization methods, for example, when unary binarization is used, 111111110 + 11110 bits must be transmitted for the above-mentioned difference value (8/4, 4/4), but information about the precision of the difference value is required. If you transmit 110 + 10 bits corresponding to (2/1, 1/1), you can use shorter bits and increase encoding efficiency.

도 27에 도시한 방식으로 움직임 벡터 차분치의 정밀도를 표현한다고 하면 위의 경우 11(정수)에 대한 정보와 차분치에 대한 (2/1, 1/1)에 대한 정보를 보내주면 된다.If the precision of the motion vector difference value is expressed in the manner shown in Figure 27, in the above case, information about 11 (integer) and information about (2/1, 1/1) for the difference value can be sent.

전술한 실시예에서는, x와 y 성분에 대해 움직임 벡터 차분치 정밀도를 같이 적용했지만 개별적으로 적용하는 것도 가능하다.In the above-described embodiment, motion vector difference precision was applied to the x and y components together, but it is also possible to apply them individually.

*도 28에서 (G1)을 각각의 움직임 벡터 정밀도에 맞춰 (G2)와 같이 표현할 수 있다. 참조 픽쳐가 같고, 각 블록의 움직임 벡터 정밀도가 같기 때문에 바로 (G2)를 움직임 벡터 부호화에 활용할 수 있다.*In Figure 28, (G1) can be expressed as (G2) according to the precision of each motion vector. Since the reference picture is the same and the motion vector precision of each block is the same, (G2) can be used directly for motion vector coding.

최적의 후보 블록은 현재 블록의 왼쪽 블록이라고 가정하는 경우, 이에 대한 차분치를 구하면 (8/4, 5/4)와 같이 표현 가능하다. 이렇게 표현되는 최적의 후보 블록의 x, y에 대해 움직임 벡터 차분치의 정밀도를 각각 적용한다면 x는 정수 단위로 2/1, y는 1/4 단위로 5/4로 표현할 수 있다.Assuming that the optimal candidate block is the block to the left of the current block, the difference value for this can be expressed as (8/4, 5/4). If the precision of the motion vector difference value is applied to x and y of the optimal candidate block expressed in this way, x can be expressed as 2/1 in integer units, and y can be expressed as 5/4 in 1/4 units.

움직임 벡터 차분치의 정밀도를 도 27의 표 형태 아래의 트리처럼 표현한다고 하면, x에 대해선 11(정수)에 대한 정보와 y에 대해선 0(1/4)에 대한 정보를 그리고 각각의 차분치 정보인 2/1과 5/4를 보내주면 된다(도 29 참조).If the precision of the motion vector difference value is expressed as a tree below the table in Figure 27, information about 11 (integer) for x and information about 0 (1/4) for y, and each difference value information Just send 2/1 and 5/4 (see Figure 29).

즉, 위의 경우에 도 29에 나타낸 바와 같이 차분치 정밀도에 대한 범위를 최대 정밀도(1/4)부터 최소 정밀도(정수)까지 후보군에 넣을 수 있다. 물론, 본 발명을 그러한 구성으로 한정되지 않고, 다양하게 후보군을 구성할 수 있다. 만약 최대 정밀도(일례로, 1/8)부터 최소 정밀도 중 최소 2개 단위의 정밀도를 포함하여 구성할 수도 있다.That is, in the above case, as shown in FIG. 29, the range for difference value precision can be included in the candidate group from the maximum precision (1/4) to the minimum precision (integer). Of course, the present invention is not limited to such a configuration, and the candidate group can be configured in various ways. It may be configured to include at least two units of precision from the maximum precision (for example, 1/8) to the minimum precision.

전술한 실시예에 있어서, 영상 부호화 방법은, 부호화된 영상을 복호화하기 위해 위에서 설명한 움직임 벡터 차분치를 이용하는 경우, 영상 복호화 방법으로 대체되어 사용될 수 있다. 또한, 영상 부호화/복호화 방법은 부호화 및 복호화를 위한 적어도 하나의 수단이나 이러한 수단에 상응하는 기능을 수행하는 구성부를 구비하는 영상 처리 장치 혹은 영상 부호화 및 복호화 장치에 의해 실행될 수 있음은 물론이다.In the above-described embodiment, the video encoding method may be used instead of the video decoding method when using the motion vector difference described above to decode the encoded video. In addition, of course, the image encoding/decoding method can be performed by an image processing device or an image encoding and decoding device including at least one means for encoding and decoding or a component that performs a function corresponding to such means.

전술한 실시예에 의하면, 화면 내 예측 기술이 사용되고 있는 MPEG-2, MPEG-4, H.264 등의 국제 코덱 또는 기타 다른 코덱과 이 코덱들을 사용하는 매체, 그리고 영상 산업에 전반적으로 이용가능한 고성능 고효율의 영상 부호화 복호화 기술을 제공할 수 있다. 또한, 향후에는 현재의 고효율 영상 부호화 기술(HEVC) 및 H.264/AVC와 같은 표준 코덱과 화면 내 예측을 사용하는 영상 처리 분야에 적용이 예상된다.According to the above-described embodiment, international codecs such as MPEG-2, MPEG-4, H.264 or other codecs in which intra-screen prediction technology is used, media using these codecs, and high performance usable overall in the video industry Highly efficient video encoding and decoding technology can be provided. In addition, in the future, it is expected to be applied to the image processing field using standard codecs such as the current high-efficiency video coding technology (HEVC) and H.264/AVC and intra-screen prediction.

상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although the present invention has been described above with reference to preferred embodiments, those skilled in the art may make various modifications and changes to the present invention without departing from the spirit and scope of the present invention as set forth in the claims below. You will understand that you can do it.

Claims (11)

현재 블록의 움직임 벡터 정밀도 정보에 기초하여 상기 현재 블록의 움직임 벡터 정밀도를 결정하는 단계;
상기 현재 블록의 움직임 벡터 정밀도에 기초하여, 상기 현재 블록의 움직임 정보로부터 상기 현재 블록의 움직임 벡터를 결정하는 단계; 및
상기 현재 블록의 상기 움직임 벡터에 기초하여 상기 현재 블록을 예측하는 단계를 포함하고,
상기 현재 블록의 상기 움직임 벡터 정밀도는 상기 현재 블록의 참조 픽처가 현재 픽처인지 여부에 따라 결정되고,
상기 현재 블록을 포함하는 현재 픽처의 각 블록의 움직임 벡터 정밀도는 블록 단위로 적응적으로 결정되는 것을 특징으로 하는 영상 복호화 방법.
determining motion vector precision of the current block based on motion vector precision information of the current block;
determining a motion vector of the current block from motion information of the current block, based on the motion vector precision of the current block; and
Predicting the current block based on the motion vector of the current block,
The motion vector precision of the current block is determined depending on whether the reference picture of the current block is the current picture,
An image decoding method wherein the motion vector precision of each block of the current picture including the current block is adaptively determined on a block-by-block basis.
제1항에 있어서,
상기 영상 복호화 방법은,
파라미터 세트에서, 상기 현재 픽처가 상기 현재 블록의 참조 픽처가 될 수 있는지 여부를 나타내는 파라미터 세트 플래그를 획득하는 단계를 더 포함하고,
상기 현재 블록의 참조 픽처가 현재 픽처인지 여부는 상기 파라미터 세트 플래그에 기초하여 결정되는 것을 특징으로 하는 영상 복호화 방법.
According to paragraph 1,
The video decoding method is,
In the parameter set, obtaining a parameter set flag indicating whether the current picture can be a reference picture of the current block,
An image decoding method, characterized in that whether the reference picture of the current block is the current picture is determined based on the parameter set flag.
제2항에 있어서,
상기 파라미터 세트 플래그는 시퀀스 파라미터 세트로부터 획득되는 것을 특징으로 하는 영상 복호화 방법.
According to paragraph 2,
A video decoding method, characterized in that the parameter set flag is obtained from a sequence parameter set.
제1항에 있어서,
상기 영상 복호화 방법은,
상기 현재 블록의 참조 픽처가 상기 현재 픽처인지 여부를 결정하는 단계; 및
상기 현재 블록의 참조 픽처가 상기 현재 픽처가 아닌 경우, 참조 픽처 리스트에서 상기 참조 픽처를 나타내는 참조 픽처 인덱스 정보를 획득하고, 상기 참조 픽처 인덱스 정보에 기초하여 상기 현재 블록의 참조 픽처를 결정하는 단계를 포함하고,
상기 현재 블록의 참조 픽처가 상기 현재 픽처인 경우, 상기 참조 픽처 인덱스 정보의 획득은 생략되는 것을 특징으로 하는 영상 복호화 방법.
According to paragraph 1,
The video decoding method is,
determining whether a reference picture of the current block is the current picture; and
If the reference picture of the current block is not the current picture, obtaining reference picture index information indicating the reference picture from a reference picture list, and determining the reference picture of the current block based on the reference picture index information. Contains,
When the reference picture of the current block is the current picture, acquisition of the reference picture index information is omitted.
제1항에 있어서,
상기 현재 블록의 참조 픽처가 상기 현재 픽처인 경우, 상기 현재 블록의 움직임 벡터 정밀도는 정수 단위 정밀도로 결정되는 것을 특징으로 하는 영상 복호화 방법.
According to paragraph 1,
When the reference picture of the current block is the current picture, the motion vector precision of the current block is determined with integer precision.
현재 블록의 움직임 벡터 정밀도 및 상기 현재 블록의 움직임 벡터를 결정하는 단계;
상기 현재 블록의 상기 움직임 벡터에 기초하여 상기 현재 블록을 예측하는 단계; 및
상기 현재 블록의 상기 움직임 벡터 정밀도를 나타내는 상기 현재 블록의 움직임 벡터 정밀도 정보를 부호화하는 단계를 포함하고,
상기 현재 블록의 상기 움직임 벡터 정밀도는 상기 현재 블록의 참조 픽처가 현재 픽처인지 여부에 따라 결정되고,
상기 현재 블록을 포함하는 현재 픽처의 각 블록의 움직임 벡터 정밀도는 블록 단위로 적응적으로 결정되는 것을 특징으로 하는 영상 부호화 방법.
determining a motion vector precision of a current block and a motion vector of the current block;
predicting the current block based on the motion vector of the current block; and
Encoding motion vector precision information of the current block indicating the motion vector precision of the current block,
The motion vector precision of the current block is determined depending on whether the reference picture of the current block is the current picture,
An image encoding method wherein the motion vector precision of each block of the current picture including the current block is adaptively determined on a block basis.
제6항에 있어서,
상기 영상 부호화 방법은,
상기 현재 픽처가 상기 현재 블록의 참조 픽처가 될 수 있는지 여부를 나타내는 파라미터 세트 플래그를 파라미터 세트에 부호화하는 단계를 더 포함하는 것을 특징으로 하는 영상 부호화 방법.
According to clause 6,
The video encoding method is,
An image encoding method further comprising encoding a parameter set flag indicating whether the current picture can be a reference picture of the current block into a parameter set.
제7항에 있어서,
상기 파라미터 세트 플래그는 시퀀스 파라미터 세트에 부호화되는 것을 특징으로 하는 영상 부호화 방법.
In clause 7,
A video encoding method, characterized in that the parameter set flag is encoded in a sequence parameter set.
제6항에 있어서,
상기 영상 부호화 방법은,
상기 현재 블록의 참조 픽처가 상기 현재 픽처인지 여부를 결정하는 단계; 및
상기 현재 블록의 참조 픽처가 상기 현재 픽처가 아닌 경우, 참조 픽처 리스트에서 상기 참조 픽처를 나타내는 참조 픽처 인덱스 정보를 부호화하는 단계를 포함하고,
상기 현재 블록의 참조 픽처가 상기 현재 픽처인 경우, 상기 참조 픽처 인덱스 정보의 부호화는 생략되는 것을 특징으로 하는 영상 부호화 방법.
According to clause 6,
The video encoding method is,
determining whether a reference picture of the current block is the current picture; and
When the reference picture of the current block is not the current picture, encoding reference picture index information indicating the reference picture in a reference picture list,
An image encoding method, wherein when the reference picture of the current block is the current picture, encoding of the reference picture index information is omitted.
제6항에 있어서,
상기 현재 블록의 참조 픽처가 상기 현재 픽처인 경우, 상기 현재 블록의 움직임 벡터 정밀도는 정수 단위 정밀도로 결정되는 것을 특징으로 하는 영상 부호화 방법.
According to clause 6,
When the reference picture of the current block is the current picture, the motion vector precision of the current block is determined with integer precision.
비트스트림 저장 방법에 있어서,
현재 블록의 움직임 정보 및 상기 현재 블록의 움직임 벡터 정밀도를 나타내는 상기 현재 블록의 움직임 벡터 정밀도 정보를 포함하는 비트스트림을 생성하는 단계; 및
상기 비트스트림을 저장하는 단계를 포함하고,
상기 현재 블록의 상기 움직임 벡터 정밀도는 상기 현재 블록의 상기 움직임 벡터 정밀도 정보에 기초하여 결정되고,
상기 현재 블록의 움직임 벡터는 상기 현재 블록의 상기 움직임 벡터 정밀도에 기초하여 상기 현재 블록의 상기 움직임 정보로부터 결정되고,
상기 현재 블록은 상기 현재 블록의 상기 움직임 벡터에 기초하여 예측되고,
상기 현재 블록의 상기 움직임 벡터 정밀도는 상기 현재 블록의 참조 픽처가 현재 픽처인지 여부에 따라 결정되고,
상기 현재 블록을 포함하는 현재 픽처의 각 블록의 움직임 벡터 정밀도는 블록 단위로 적응적으로 결정되는 것을 특징으로 하는 비트스트림 저장 방법.
In the bitstream storage method,
Generating a bitstream including motion information of the current block and motion vector precision information of the current block indicating motion vector precision of the current block; and
Including storing the bitstream,
The motion vector precision of the current block is determined based on the motion vector precision information of the current block,
The motion vector of the current block is determined from the motion information of the current block based on the motion vector precision of the current block,
The current block is predicted based on the motion vector of the current block,
The motion vector precision of the current block is determined depending on whether the reference picture of the current block is the current picture,
A bitstream storage method, wherein the motion vector precision of each block of the current picture including the current block is adaptively determined on a block basis.
KR1020240008556A 2015-06-05 2024-01-19 Image encoding/decoding method and image decoding apparatus using motion vector precision KR20240015700A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR20150079916 2015-06-05
KR1020150079916 2015-06-05
KR1020230037207A KR102628693B1 (en) 2015-06-05 2023-03-22 Image encoding/decoding method and image decoding apparatus using motion vector precision

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020230037207A Division KR102628693B1 (en) 2015-06-05 2023-03-22 Image encoding/decoding method and image decoding apparatus using motion vector precision

Publications (1)

Publication Number Publication Date
KR20240015700A true KR20240015700A (en) 2024-02-05

Family

ID=57575957

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020160070356A KR101782153B1 (en) 2015-06-05 2016-06-07 Method for selecting motion vector candidate and method for encoding/decoding image using the same
KR1020170121467A KR102420559B1 (en) 2015-06-05 2017-09-20 Method for selecting motion vector candidate and method for encoding/decoding image using the same
KR1020220084538A KR102514392B1 (en) 2015-06-05 2022-07-08 Image encoding/decoding method and image decoding apparatus using motion vector precision
KR1020230037207A KR102628693B1 (en) 2015-06-05 2023-03-22 Image encoding/decoding method and image decoding apparatus using motion vector precision
KR1020240008556A KR20240015700A (en) 2015-06-05 2024-01-19 Image encoding/decoding method and image decoding apparatus using motion vector precision

Family Applications Before (4)

Application Number Title Priority Date Filing Date
KR1020160070356A KR101782153B1 (en) 2015-06-05 2016-06-07 Method for selecting motion vector candidate and method for encoding/decoding image using the same
KR1020170121467A KR102420559B1 (en) 2015-06-05 2017-09-20 Method for selecting motion vector candidate and method for encoding/decoding image using the same
KR1020220084538A KR102514392B1 (en) 2015-06-05 2022-07-08 Image encoding/decoding method and image decoding apparatus using motion vector precision
KR1020230037207A KR102628693B1 (en) 2015-06-05 2023-03-22 Image encoding/decoding method and image decoding apparatus using motion vector precision

Country Status (1)

Country Link
KR (5) KR101782153B1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117615128A (en) 2018-06-27 2024-02-27 数字洞察力有限公司 Method of encoding/decoding image and method of transmitting bitstream
US11632542B2 (en) 2019-02-26 2023-04-18 Apple Inc. Method for encoding/decoding video signal, and apparatus therefor
CN113329225A (en) * 2020-02-28 2021-08-31 北京三星通信技术研究有限公司 Video coding and decoding method and device
US20240098300A1 (en) * 2022-09-21 2024-03-21 Tencent America LLC Method and apparatus for implicitly indicating motion vector predictor precision

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101449696B1 (en) * 2009-08-21 2014-10-20 에스케이텔레콤 주식회사 Motion Vector Coding Method and Apparatus in Consideration of Differential Motion Vector Precision, and Video Processing Apparatus and Method therefor
JPWO2013128832A1 (en) * 2012-03-02 2015-07-30 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America Image encoding method, image decoding method, image encoding device, image decoding device, and image encoding / decoding device

Also Published As

Publication number Publication date
KR101782153B1 (en) 2017-09-26
KR20160143583A (en) 2016-12-14
KR102628693B1 (en) 2024-01-24
KR20170110555A (en) 2017-10-11
KR102420559B1 (en) 2022-07-13
KR102514392B1 (en) 2023-03-27
KR20230044158A (en) 2023-04-03
KR20220101595A (en) 2022-07-19

Similar Documents

Publication Publication Date Title
US11368675B2 (en) Method and device for encoding and decoding intra-frame prediction
KR101988888B1 (en) Method and apparartus for encoding/decoding for intra prediction mode
KR102462012B1 (en) Image encoding/decoding method and image decoding apparatus using motion vector precision
KR102558270B1 (en) Method and apparatus of image encoding/decoding using adaptive deblocking filtering
KR102628693B1 (en) Image encoding/decoding method and image decoding apparatus using motion vector precision
CN115134609A (en) Method for encoding and decoding image using adaptive deblocking filtering and apparatus therefor
KR102558269B1 (en) Image encoding method and image decoding method and apparatus using adaptive deblocking filtering
KR102476541B1 (en) Method and apparatus of image encoding/decoding using reference pixel composition in intra prediction
KR102476230B1 (en) Image encoding/decoding method and image decoding apparatus using motion vector precision

Legal Events

Date Code Title Description
A107 Divisional application of patent