KR20230175341A - 인터 예측 방법 및 장치 - Google Patents

인터 예측 방법 및 장치 Download PDF

Info

Publication number
KR20230175341A
KR20230175341A KR1020237043657A KR20237043657A KR20230175341A KR 20230175341 A KR20230175341 A KR 20230175341A KR 1020237043657 A KR1020237043657 A KR 1020237043657A KR 20237043657 A KR20237043657 A KR 20237043657A KR 20230175341 A KR20230175341 A KR 20230175341A
Authority
KR
South Korea
Prior art keywords
prediction
motion vector
candidate
block
target sample
Prior art date
Application number
KR1020237043657A
Other languages
English (en)
Inventor
웨이웨이 수
하이타오 양
인 자오
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Priority claimed from PCT/CN2019/107060 external-priority patent/WO2020057648A1/zh
Publication of KR20230175341A publication Critical patent/KR20230175341A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame 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/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/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/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • 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/117Filters, e.g. for pre-processing or post-processing
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • 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/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • 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
    • 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/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 출원의 실시예는 비디오 코딩 기술 분야에 관한 것으로, 인터 예측 모드에서 획득된한 예측 샘플이 공간적으로 불연속적이며, 예측 효율이 영향을 받고, 예측 잔여 에너지가 비교적 높은 종래 기술의 문제점을 해결하기 위한 인터 예측 방법 및 장치를 개시한다. 구체적인 해결수단은, 처리될 픽처 블록의 모션 정보를 획득하기 위해 비트스트림을 파싱하는 단계; 처리될 픽처 블록의 예측 블록을 획득하기 위해 모션 정보에 기초하여 처리될 픽처 블록에 대해 모션 보상을 수행하는 단계 ― 처리될 픽처 블록의 예측 블록은 타깃 샘플의 예측값을 포함함 ―; 및 타깃 샘플의 예측값을 업데이트하기 위해 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하는 단계 ― 참조 샘플은 타깃 샘플과 미리 설정된 공간적 위치 관계를 가짐 ―이다.

Description

인터 예측 방법 및 장치{INTER-FRAME PREDICTION METHOD AND DEVICE}
본 출원의 실시예는 비디오 코딩 기술 분야에 관한 것으로, 보다 구체적으로 인터 예측(inter prediction) 방법 및 장치에 관한 것이다.
디지털 비디오 기술은 다양한 디지털 비디오 장치에서 널리 사용될 수 있다. 디지털 비디오 장치는 비디오 코딩 기술, 예를 들어 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4 Part 10 AVC(Advanced Video Coding), ITU-T H.265(고효율 비디오 코딩 HEVC라고도 함)에서 정의된 표준 및 이러한 표준의 확장에서 설명된 비디오 코딩 기술을 구현할 수 있다. 디지털 비디오 장치는 이러한 비디오 코딩 기술을 구현함으로써 디지털 비디오 정보를 보다 효과적으로 전송하고, 수신하며, 인코딩하고, 디코딩하고, 그리고/또는 저장한다.
현재, 인터 예측 및 인트라 예측 기술은 비디오에서 시간적 중복성과 공간적 중복성을 제거하기 위해 주로 비디오 코딩에서 사용된다. 인터 예측 기술에서, 인접한 픽처 프레임에서 동일한 객체 사이의 시간적 상관만이 고려되지만, 공간적 상관은 고려되지 않는다. 결과적으로, 기존의 인터 예측 모드에서 획득된 예측 샘플은 공간적으로 불 연속적이다. 또한, 예측 효율에 영향을 미치고, 예측 잔류 에너지가 비교적 높다.
본 출원의 실시예는 인터 코딩된 예측 블록에 대해 공간적 필터링을 수행하고 코딩 효율을 향상시키기 위한 인터 예측 방법 및 장치를 제공한다.
목적을 달성하기 위해, 본 출원의 실시예에서 다음과 같은 기술적 해결수단이 사용된다.
본 출원의 실시예의 제1 측면에 따르면, 인터 예측 방법이 제공된다. 이 방법은, 처리될 픽처 블록의 모션 정보를 획득하기 위해 비트스트림을 파싱하는 단계; 처리될 픽처 블록의 예측 블록을 획득하기 위해 모션 정보에 기초하여 처리될 픽처 블록에 대해 모션 보상을 수행하는 단계 ― 처리될 픽처 블록의 예측 블록은 타깃 샘플의 예측값을 포함함 ―; 및 타깃 샘플의 예측값을 업데이트하기 위해 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하는 단계 ― 참조 샘플은 타깃 샘플과 미리 설정된 공간적 위치 관계를 가짐 ―를 포함한다.
이러한 해결수단에 기초하여, 압축 부호화 효율을 향상시키기 위해 이웃하는 재구축된 샘플을 사용하여 타깃 샘플의 예측값에 대해 공간적 필터링 처리가 수행된다.
제1 측면을 참조하여, 가능한 구현에서, 하나 이상의 참조 샘플은 타깃 샘플과 동일한 수평 좌표를 갖는 재구축된 샘플로서 또한 타깃 샘플과 미리 설정된 수직 좌표 차이를 갖는 상기 재구축된 샘플, 또는 타깃 샘플과 동일한 수직 좌표를 갖는 재구축된 샘플로서 또한 타깃 샘플과 미리 설정된 수평 좌표 차이를 갖는 상기 재구축된 샘플을 포함한다.
이러한 해결수단에 기초하여, 타깃 샘플과 미리 설정된 공간적 위치 관계를 갖는 참조 샘플을 사용하여 타깃 샘플에 대해 필터링 처리가 수행된다. 기존 기술에 비해 코딩 효율이 향상된다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 타깃 샘플의 예측값을 업데이트하는 것은, 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하는 것을 포함하고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
에 따라 획득되며,
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전의 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, 는 각각 좌표 위치 에서 참조 샘플의 재구축된 값을 나타내고, w1, w2, w3, w4, w5 및 w6은 미리 설정된 상수이며, M1 및 M2는 미리 설정된 양의 정수이다.
이러한 해결수단에 기초하여, 타깃 샘플의 업데이트된 예측값은 필터링 처리를 통해 획득될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, w1 + w2 = R1이고, w3 + w4 = R2이거나, 또는 w5 + w6 + w7 = R3이며, 여기서 R1, R2 및 R3은 각각 2의 n 거듭제곱이며, n은 음이 아닌 정수이다.
이러한 해결수단에 기초하여, 코딩 효율이 더욱 향상될 수 있다.
R1, R2 및 R3은 각각 2의 n 거듭 제곱임이 이해되어야 한다. R1, R2 및 R3은 동일하거나 상이하며, 제한되지 않는다. 예를 들어, R1, R2 및 R3은 모두 8이거나, 또는 R1, R2 및 R3은 각각 2, 4 및 16일 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 타깃 샘플의 예측값을 업데이트하는 것은, 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하는 것을 포함하고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
에 따라 획득되며,
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전의 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, , , 는 각각 좌표 위치 , , 에서 참조 샘플의 재구축된 값을 나타내고, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 및 w11은 미리 설정된 상수이며, M1, M2, M3 및 M4는 미리 설정된 양의 정수이다.
이러한 해결수단에 기초하여, 필터링 처리를 통해 업데이트된 타깃 샘플의 예측값이 획득될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, w1 + w2 + w3 = S1이고, w4 + w5 + w6 = S2이거나, 또는 w7 + w8 + w9 + w10 + w11 = S3이며, 여기서 S1, S2 및 S3은 각각 2의 n 거듭 제곱이고, n은 음이 아닌 정수이다.
이러한 해결수단에 기초하여, 코딩 효율이 더욱 향상될 수 있다.
S1, S2 및 S3은 각각 2의 n 거듭 제곱임이 이해되어야 한다. S1, S2 및 S3는 동일하거나 다르며, 이것은 제한되지 않는다. 예를 들어, S1, S2, S3은 모두 8이거나, 또는 S1, S2, S3는 각각 2, 4, 16일 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 타깃 샘플의 예측값을 업데이트하는 것은, 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하는 것을 포함하고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
에 따라 획득되며,
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전의 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, 는 각각 좌표 위치 에서 참조 샘플의 재구축된 값을 나타내고, w1, w2 및 w3은 미리 설정된 상수이며, M1 및 M2는 미리 설정된 양의 정수이다.
이러한 해결수단에 기초하여, 필터링 처리를 통해 업데이트된 타깃 샘플의 예측값이 획득될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, w1 + w2 + w3 = R이며, 여기서 R은 2의 n 거듭제곱이고, n은 음이 아닌 정수이다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 타깃 샘플의 예측값을 업데이트하는 것은, 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하는 것을 포함하고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
에 따라 획득되며,
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전의 상기 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, , , 는 각각 좌표 위치 , , 에서 참조 샘플의 재구축된 값을 나타내고, w1, w2, w3, w4 및 w5는 미리 설정된 상수이며, M1, M2, M3 및 M4는 미리 설정된 양의 정수이다.
이러한 해결수단에 기초하여, 필터링 처리를 통해 타깃 샘플의 업데이트된 예측값이 획득될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, w1 + w2 + w3 + w4 + w5 = S이며, 여기서 S는 2의 n 거듭 제곱이고, n은 음이 아닌 정수이다.
이러한 해결수단에 기초하여, 코딩 효율이 더욱 향상될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 하나 이상의 참조 샘플은, 타깃 샘플과 동일한 수평 좌표를 갖는 재구축된 샘플로서 또한 처리될 픽처 블록의 상단면에 인접한 상기 재구축된 샘플, 타깃 샘플과 동일한 수직 좌표를 갖는 재구축된 샘플로서 또한 처리될 픽처 블록의 왼쪽면에 인접한 상기 재구축된 샘플, 처리될 픽처 블록의 오른쪽 상단의 재구축된 샘플, 처리될 픽처 블록의 왼쪽 하단의 재구축된 샘플, 또는 처리될 픽처 블록의 왼쪽 상단의 재구축된 샘플 중 하나 이상을 포함한다.
이러한 해결수단에 기초하여, 타깃 샘플과 미리 설정된 공간적 위치 관계를 갖는 참조 샘플을 사용하여 타깃 샘플에 대해 필터링 처리가 수행된다. 기존 기술에 비해, 코딩 효율이 향상된다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 타깃 샘플의 예측값을 업데이트하는 것은, 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하는 것을 포함하고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2)
에 따라 획득되며,
여기서 predP1(xP, yP) = (predV(xP, yP) + predH(xP, yP) + nTbW * nTbH) >> (Log2(nTbW) + Log2(nTbH) + 1)이고, predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW)이며, predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH)이고, 타깃 샘플의 좌표는 (xP, yP)이며, 처리될 픽처 블록의 왼쪽 상단의 좌표는 (0, 0)이고, predP(xP, yP)는 업데이트 전의 타깃 샘플의 예측값을 나타내며, predQ(xP, yP)는 타깃 샘플의 업데이트된 예측값을 나타내고, p(xP, -1), p(-1, nTbH), p(-1, yP) 및 p(nTbW, -1)은 각각 좌표 위치 (xP, -1), (-1, nTbH),(-1, yP) 및 (nTbW, -1)에서 참조 샘플의 재구축된 값을 나타내며, w1 및 w2는 미리 설정된 상수이고, nTbW 및 nTbH는 상기 처리될 픽처 블록의 폭과 높이를 나타낸다.
제1 측면의 실행 가능한 구현에서, 타깃 샘플의 예측값은 다음의 수학식
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predV(xP, yP) + w3 * predH(xP, yP) + ((w1 + w2 + w3)/2))/(w1 + w2 + w3)
에 따라 획득되며,
여기서 predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH) + nTbH/2) >> Log2(nTbH)이고, predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1) + nTbW/2) >> Log2(nTbW)이며, 타깃 샘플의 좌표는 (xP, yP)이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 (0, 0)이며, predP(xP, yP)는 업데이트 전의 타깃 샘플의 예측값을 나타내고, predQ(xP, yP)는 타깃 샘플의 업데이트된 예측값을 나타내며, p(xP, -1), p(-1, nTbH), p(-1, yP) 및 p(nTbW, -1)은 각각 좌표 위치 (xP, -1), (-1, nTbH), (-1, yP) 및 (nTbW, -1)에서 참조 샘플의 재구축된 값을 나타내고, w1, w2 및 w3는 미리 설정된 상수이며, nTbW 및 nTbH는 처리될 픽처 블록의 폭과 높이를 나타낸다.
제1 측면의 실행 가능한 구현에서, 타깃 샘플의 예측값은 다음의 수학식
predQ(xP, yP) = (((w1 * predP(xP, yP)) << (Log2(nTbW) + Log2(nTbH) + 1)) + w2 * predV(xP, yP) + w3 * predH(xP , yP) + (((w1 + w2 + w3)/2) << (Log2(nTbW) + Log2(nTbH) + 1)))/(((w1 + w2 + w3) << (Log2(nTbW) + Log2(nTbH) + 1)))
에 따라 획득되며,
여기서 predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW)이고, predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH)이며, 타깃 샘플의 좌표는 (xP, yP)이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 (0, 0)이며, predP(xP, yP)는 업데이트 전의 타깃 샘플의 예측값을 나타내고, predQ(xP, yP)는 타깃 샘플의 업데이트된 예측값을 나타내며, p(xP, -1), p(-1, nTbH), p(-1, yP) 및 p(nTbW, -1)은 각각 좌표 위치 (xP, -1), (-1, nTbH), (-1, yP) 및 (nTbW, -1)에서 참조 샘플의 재구축된 값을 나타내고, w1 및 w2는 미리 설정된 상수이며, nTbW 및 nTbH는 처리될 픽처 블록의 폭과 높이를 나타낸다.
이러한 해결수단에 기초하여, 필터링 처리를 통해 업데이트된 타깃 샘플의 예측값이 획득될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 타깃 샘플의 예측값을 업데이트하는 것은, 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하는 것을 포함하고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2)
에 따라 획득되며,
여기서, 이고, 이며, 이고. 타깃 샘플의 좌표는 이며, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이고, 는 업데이트 전의 타깃 샘플의 예측값을 나타내며, 는 타깃 샘플의 업데이트된 예측값을 나타내고, , , 는 각각 좌표 위치 , , 에서 참조 샘플의 재구축된 값을 나타내며, w1과 w2는 미리 설정된 상수이고, nTbW와 nTbH는 처리될 픽처 블록의 폭과 높이를 나타낸다.
이러한 해결수단에 기초하여, 필터링 처리를 통해 업데이트된 타깃 샘플의 예측값이 획득될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, w1 및 w2의 합은 2의 n 거듭제곱이고, n은 음이 아닌 정수이다.
이러한 해결수단에 기초하여, 코딩 효율이 더욱 향상될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 타깃 샘플의 예측값을 업데이트하는 것은, 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하는 것을 포함하고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
에 따라 획득되며,
여기서 이고, 이며, 이고, 이며, 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전의 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, , 은 각각 좌표 위치 , 에서 참조 샘플의 재구축된 값을 나타내고, nTbW와 nTbH는 처리될 픽처 블록의 폭과 높이를 나타내며, clip1Cmp는 클리핑 연산을 나타낸다.
이러한 해결수단에 기초하여, 필터링 처리를 통해 업데이트된 타깃 샘플의 예측값이 획득될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 타깃 샘플의 예측값을 업데이트하는 것은, 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하는 것을 포함하고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
에 따라 획득되며,
여기서
이고, 이며, 이고, 타깃 샘플의 좌표는 이며, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이고, 는 업데이트 전의 타깃 샘플의 예측값을 나타내며, 는 타깃 샘플의 업데이트된 예측값을 나타내고, 은 각각 좌표 위치 에서 참조 샘플의 재구축된 값을 나타내며, nTbW 및 nTbH는 처리될 픽처 블록의 폭과 높이를 나타내고, clip1Cmp는 클리핑 연산을 나타낸다.
이러한 해결수단에 기초하여, 필터링 처리를 통해 업데이트된 타깃 샘플의 예측값이 획득될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하는 단계는, 참조 샘플의 재구축된 값이 이용 불가능한 경우, 미리 설정된 수량의 이용 가능한 참조 샘플이 획득될 때까지 처리될 픽처 블록의 상단면 및 왼쪽면에 인접한 샘플의 가용성을 미리 설정된 순서로 결정하는 단계; 및 이용 가능한 참조 샘플의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하는 단계를 포함한다.
이러한 해결수단에 기초하여, 참조 샘플의 재구축된이 이용 불가능한 경우, 처리될 픽처 블록의 왼쪽과 위에 위치하며 재구축된 값이 이용 가능한 참조 샘플이 미리 설정된 순서로 검색될 수 있다. 이러한 방식으로, 이용 가능한 참조 샘플의 재구축된 값을 사용하여 타깃 샘플의 예측값이 업데이트될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 미리 설정된 수량의 참조 샘플이 획득될 때까지 처리될 픽처 블록의 상단면 및 왼쪽면에 인접한 샘플의 가용성을 미리 설정된 순서로 결정하는 단계는, 좌표 (xN - 1, yN + nTbH - 1)에서 좌표 (xN - 1, yN - 1)까지 그 후에 좌표 (xN, yN - 1)에서 좌표 (xN + nTbW - 1, yN - 1)까지의 순서로 이용 가능한 참조 샘플을 획득하는 단계를 포함한다.
이러한 해결수단에 기초하여, 이용 가능한 참조 샘플의 재구축된 값이 획득될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 모든 참조 샘플에서 적어도 하나의 이용 가능한 참조 샘플이 있는 경우, 참조 샘플 (xN - 1, yN + nTbH - 1)의 재구축된 값이 이용 불가능하면, 좌표 (xN - 1, yN + nTbH - 1)에서 좌표 (xN - 1, yN - 1)까지 그 후 좌표 (xN, yN - 1)에서 좌표 (xN + nTbW - 1, yN - 1)까지의 순서대로 이용 가능한 샘플이 검색된다. 이용 가능한 샘플이 발견되면, 검색이 종료된다. 이용 가능한 샘플이 (x, y)인 경우, 참조 샘플 (xN - 1, yN + nTbH - 1)의 재구축된 값은 샘플 (x, y)의 재구축된 값으로 설정된다. 참조 샘플 (x, y)의 재구축된 값이 참조 샘플(xN - 1, yN + nTbH - M)을 포함하는 세트에서 이용 가능한 경우, 참조 샘플 (x, y)의 재구축된 값은 샘플 (x, y + 1)의 재구축된 값으로 설정되며, 여기서 M은 2보다 크거나 같고 nTbH + 1보다 작거나 같다. 참조 샘플 (x, y)의 재구축된 값이 샘플 (xN + N, yN - 1)을 포함하는 세트에서 이용 불가능한 경우, 참조 샘플 (x, y)의 재구축된 값은 참조 샘플 (x - 1, y)의 재구축된 값으로 설정되며, 여기서 N은 또는 0보다 크거나 같고 nTbW보다 작거나 같다.
이러한 해결수단에 기초하여, 이용 가능한 참조 샘플의 재구축된 값이 획득될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 참조 샘플 (xN - 1, yN + nTbH - M)의 재구축된 값이 이용 불가능한 경우, 이용 가능한 참조 샘플은 좌표 (xN - 1, yN + nTbH - M)에서 시작하는 미리 설정된 순서로 검색될 수 있으며, 여기서 M은 1보다 크거나 같고 nTbH + 1보다 작거나 같다. 이용 가능한 참조 샘플이 B인 경우, 참조 샘플 (xN - 1, yN + nTbH - M)의 재구축된 값은 참조 샘플 B의 재구축된 값으로 설정될 수 있다. 좌표 (xN + N, yN - 1)를 가진 참조 샘플의 재구축된 값이 이용 불가능한 경우, 이용 가능한 참조 샘플은 좌표 (xN + N, yN - 1)에서 시작하여 미리 설정된 순서로 검색될 수 있으며, 여기서 N은 0보다 크거나 같고 nTbW - 1보다 작거나 같다. 이용 가능한 참조 샘플이 C인 경우, 참조 샘플 (xN + N, yN - 1)의 재구축된 값이 참조 샘플 C의 재구축된 값으로 설정될 수 있다.
이러한 해결수단에 기초하여 이용 가능한 참조 샘플의 재구축된 값이 획득될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 참조 샘플 (xN - 1, yN + nTbH - 1)의 재구축된 값이 이용 불가능한 경우, 이용 가능한 샘플은 좌표 (xN - 1, yN + nTbH - 1)에서 좌표 (xN - 1, yN - 1)로 그 후 좌표 (xN, yN - 1)에서 좌표 (xN + nTbW - 1, yN - 1)까지 미리 설정된 순서로 검색된다. 이용 가능한 샘플이 발견되면, 검색이 종료된다. 이용 가능한 샘플이 (x, y)인 경우, 참조 샘플 (xN - 1, yN + nTbH - 1)의 재구축된 값은 샘플 (x, y)의 재구축된 값으로 설정된다. 참조 샘플 (xN - 1, yN + nTbH - M)의 재구축된 값이 이용 불가능한 경우, 이용 가능한 샘플은 좌표 (xN - 1, yN + nTbH - M)에서 시작하여 미리 설정된 순서의 역 순서로 검색될 수 있으며, 여기서 M은 1보다 크고 nTbH + 1보다 작거나 같다. 이용 가능한 참조 샘플이 C인 경우, 참조 샘플 (xN - 1, yN + nTbH - M)의 재구축된 값은 참조 샘플 C의 재구축된 값으로 설정될 수 있다. 좌표 (xN + N, yN - 1)를 갖는 참조 샘플의 재구축된 값이 이용 불가능한 경우, 이용 가능한 참조 샘플은 좌표 (xN + N, yN - 1)에서 시작하여 미리 설정된 순서와 역 순서로 검색될 수 있으며, 여기서 N은 0보다 크거나 같고 nTbW - 1보다 작거나 같다. 이용 가능한 참조 샘플이 D인 경우, 참조 샘플 (xN + N, yN - 1)의 재구축된 값은 참조 샘플 D의 재구축된 값으로 설정될 수 있다.
이러한 해결수단에 기초하여, 이용 가능한 참조 샘플의 재구축된 값이 획득될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 처리될 픽처 블록의 상단면 및 왼쪽면에 인접한 모든 샘플이 이용 불가능한 것으로 결정되면, 참조 샘플의 재구축된 값은 1 << (bitDepth - 1)로 설정되며, 여기서 bitDepth는 참조 샘플의 샘플 값의 비트 깊이를 나타낸다.
이러한 해결수단에 기초하여, 참조 샘플의 재구축된 값과 새로운 참조 샘플의 재구축된 값 모두가 이용 불가능한 경우, 참조 샘플의 재구축된 값은 비트 깊이에 기초하여 설정될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하기 전에, 인터 예측 방법은, 참조 샘플이 처리될 픽처 블록 위에 위치하는 경우, 참조 샘플의 재구축된 값 및 참조 샘플의 왼쪽의 이웃 샘플 및 오른쪽의 이웃 샘플의 재구축된 값에 대해 가중치 계산을 수행하는 단계; 참조 샘플이 처리될 픽처 블록의 왼쪽에 위치하는 경우, 참조 샘플의 재구축된 값 및 참조 샘플의 상단의 이웃 샘플 및 하단의 이웃 샘플의 재구축된 값에 대해 가중치 계산을 수행하는 단계; 및 가중치 계산의 결과를 사용하여 참조 샘플의 재구축된 값을 업데이트하는 단계를 포함한다.
이러한 해결수단에 기초하여, 타깃 샘플에 대해 필터링 처리를 수행되기 전에, 참조 샘플의 재구축된 값에 대해 필터링 처리를 수행된. 이러한 방식으로, 코딩 효율이 더욱 향상될 수 있고, 예측 잔여가 감소될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 모션 정보에 기초하여 처리될 픽처 블록에 대해 모션 보상을 수행하는 단계 전에, 인터 예측 방법은, 제1 미리 설정된 알고리즘을 사용하여 모션 정보를 초기에 업데이트하는 단계를 더 포함하고, 이에 상응하여, 모션 정보에 기초하여 처리될 픽처 블록에 대해 모션 보상을 수행하는 단계는, 초기에 업데이트된 모션 정보에 기초하여 처리될 픽처 블록에 대해 모션 보상을 수행하는 단계를 포함한다.
이러한 해결수단에 기초하여, 모션 정보는 현재 블록에 대한 모션 보상이 수행되기 전에 업데이트되고, 업데이트된 모션 정보에 기초하여 모션 보상이 수행된다. 이러한 방식으로, 예측 잔여가 감소될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 처리될 픽처 블록의 예측 블록이 획득된 후, 인터 예측 방법은, 제2 미리 설정된 알고리즘을 사용하여 예측 블록을 미리 업데이트하는 단계를 더 포함하고, 이에 상응하여, 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하는 단계는, 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 미리 업데이트된 예측값에 대해 가중치 계산을 수행하는 단계를 포함한다.
이러한 해결수단에 기초하여, 현재 블록의 예측 블록이 미리 업데이트되고, 미리 업데이트된 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산이 수행된다. 이러한 방식으로, 예측 잔여가 감소될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 타깃 샘플의 예측값을 업데이트하기 위해 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하는 단계 후에, 인터 예측 방법은 제2 미리 설정된 알고리즘을 사용하여 타깃 샘플의 예측값을 업데이트하는 단계를 더 포함한다.
이러한 해결수단에 기초하여, 타깃 샘플의 예측 값으로서 또한 공간적 필터링 처리를 겪은 상기 예측값은 미리 설정된 알고리즘을 사용하여 업데이트될 수 있다. 이러한 방식으로, 예측 잔여가 감소될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하는 단계 전에, 인터 예측 방법은, 처리될 픽처 블록에 대응하는 예측 모드를 획득하기 위해 비트스트림을 파싱하는 단계; 및 예측 모드가 병합(merge) 모드 및/또는 인터 어드밴스드 모션 벡터 예측(inter AMVP) 모드인 것으로 결정하는 단계를 더 포함한다. 인터 어드밴스드 모션 벡터 예측(inter AMVP) 모드는 또한 인터 모션 벡터 예측(inter MVP) 모드로서 지칭될 수 있음이 이해될 수 있다.
이러한 해결수단에 기초하여, 필터링 처리 전에 처리될 픽처 블록에 대응하는 예측 모드가 결정될 수 있다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하는 단계 전에, 인터 예측 방법은, 처리될 픽처 블록의 업데이트 결정 지시 정보를 획득하기 위해 비트스트림을 파싱하는 단계; 및 업데이트 결정 지시 정보가 처리될 픽처 블록의 예측 블록을 업데이트하도록 지시하는 데 사용되는 것으로 결정하는 단계를 더 포함한다.
이러한 해결수단에 기초하여, 처리될 픽처 블록의 업데이트 결정 지시 정보는 비트스트림을 파싱하여 획득될 수 있고, 처리될 픽처 블록의 예측 블록이 업데이트될 것으로 결정된다.
제1 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하는 단계 전에, 인터 예측 방법은, 처리될 픽처 블록의 미리 설정된 업데이트 결정 지시 정보를 획득하는 단계; 및 업데이트 결정 지시 정보가 처리될 픽처 블록의 예측 블록을 업데이트하도록 지시하는 데 사용되는 것으로 결정하는 단계를 더 포함한다.
이러한 해결수단에 기초하여, 처리될 픽처 블록의 업데이트 결정 지시 정보가 획득될 수 있고, 업데이트 결정 지시 정보에 기초하여, 처리될 픽처 블록의 예측 블록이 업데이트될 것으로 결정된다.
본 출원의 실시예의 제2 측면에 따르면, 인터 예측 장치가 제공되며, 처리될 픽처 블록의 모션 정보를 획득하기 위해 비트스트림을 파싱하도록 구성된 파싱 모듈; 처리될 픽처 블록의 예측 블록을 획득하기 위해 모션 정보에 기초하여 처리될 픽처 블록에 대해 모션 보상을 수행하도록 구성된 보상 모듈 ― 처리될 픽처 블록의 예측 블록은 타깃 샘플의 예측값을 포함함 ―; 및 타깃 샘플의 예측값을 업데이트하기 위해 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하도록 구성된 계산 모듈 ― 참조 샘플은 타깃 샘플과 미리 설정된 공간적 위치 관계를 가짐 ―을 포함한다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 하나 이상의 참조 샘플은 타깃 샘플과 동일한 수평 좌표를 갖는 재구축된 샘플로서 또한 타깃 샘플과 미리 설정된 수직 좌표 차이를 갖는 상기 재구축된 샘플, 또는 타깃 샘플과 동일한 수직 좌표를 갖는 재구축된 샘플로서 또한 타깃 샘플과 미리 설정된 수평 좌표 차이를 갖는 상기 재구축된 샘플을 포함한다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은 구체적으로 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하도록 구성되고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
에 따라 획득되며,
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전의 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, 는 각각 좌표 위치 에서 참조 샘플의 재구축된 값을 나타내고, w1, w2, w3, w4, w5 및 w6은 미리 설정된 상수이며, M1 및 M2는 미리 설정된 양의 정수이다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은 구체적으로 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하도록 추가로 구성되고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
에 따라 획득되며,
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전의 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, , , 는 각각 좌표 위치 , , 에서 참조 샘플의 재구축된 값을 나타내고, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 및 w11은 미리 설정된 상수이며, M1, M2, M3 및 M4는 미리 설정된 양의 정수이다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, w1 + w2 + w3 = S1이고, w4 + w5 + w6 = S2이거나, 또는 w7 + w8 + w9 + w10 + w11 = S3이며, 여기서 S1, S2 및 S3은 각각 2의 n 거듭 제곱이고, n은 음이 아닌 정수이다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은 구체적으로 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하도록 추가로 구성되고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
에 따라 획득되며,
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전의 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, 는 각각 좌표 위치 에서 참조 샘플의 재구축된 값을 나타내고, w1, w2 및 w3은 미리 설정된 상수이며, M1 및 M2는 미리 설정된 양의 정수이다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, w1 + w2 + w3 = R이며, 여기서 R은 2의 n 거듭제곱이고, n은 음이 아닌 정수이다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은 구체적으로 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하도록 추가로 구성되고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
에 따라 획득되며,
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전의 상기 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, , , 는 각각 좌표 위치 , , 에서 참조 샘플의 재구축된 값을 나타내고, w1, w2, w3, w4 및 w5는 미리 설정된 상수이며, M1, M2, M3 및 M4는 미리 설정된 양의 정수이다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, w1 + w2 + w3 + w4 + w5 = S이며, 여기서 S는 2의 n 거듭 제곱이고, n은 음이 아닌 정수이다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 하나 이상의 참조 샘플은, 타깃 샘플과 동일한 수평 좌표를 갖는 재구축된 샘플로서 또한 처리될 픽처 블록의 상단면에 인접한 상기 재구축된 샘플, 타깃 샘플과 동일한 수직 좌표를 갖는 재구축된 샘플로서 또한 처리될 픽처 블록의 왼쪽면에 인접한 상기 재구축된 샘플, 처리될 픽처 블록의 오른쪽 상단의 재구축된 샘플, 처리될 픽처 블록의 왼쪽 하단의 재구축된 샘플, 또는 처리될 픽처 블록의 왼쪽 상단의 재구축된 샘플 중 하나 이상을 포함한다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은 구체적으로 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하도록 추가로 구성되고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2)
에 따라 획득되며,
여기서 predP1(xP, yP) = (predV(xP, yP) + predH(xP, yP) + nTbW * nTbH) >> (Log2(nTbW) + Log2(nTbH) + 1)이고, predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW)이며, predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH)이고, 타깃 샘플의 좌표는 (xP, yP)이며, 처리될 픽처 블록의 왼쪽 상단의 좌표는 (0, 0)이고, predP(xP, yP)는 업데이트 전의 타깃 샘플의 예측값을 나타내며, predQ(xP, yP)는 타깃 샘플의 업데이트된 예측값을 나타내고, p(xP, -1), p(-1, nTbH), p(-1, yP) 및 p(nTbW, -1)은 각각 좌표 위치 (xP, -1), (-1, nTbH),(-1, yP) 및 (nTbW, -1)에서 참조 샘플의 재구축된 값을 나타내며, w1 및 w2는 미리 설정된 상수이고, nTbW 및 nTbH는 상기 처리될 픽처 블록의 폭과 높이를 나타낸다.
제2 측면의 실행 가능한 구현에서, 타깃 샘플의 예측값은 다음의 수학식
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predV(xP, yP) + w3 * predH(xP, yP) + ((w1 + w2 + w3)/2))/(w1 + w2 + w3)
에 따라 획득되며,
여기서 predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH) + nTbH/2) >> Log2(nTbH)이고, predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1) + nTbW/2) >> Log2(nTbW)이며, 타깃 샘플의 좌표는 (xP, yP)이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 (0, 0)이며, predP(xP, yP)는 업데이트 전의 타깃 샘플의 예측값을 나타내고, predQ(xP, yP)는 타깃 샘플의 업데이트된 예측값을 나타내며, p(xP, -1), p(-1, nTbH), p(-1, yP) 및 p(nTbW, -1)은 각각 좌표 위치 (xP, -1), (-1, nTbH), (-1, yP) 및 (nTbW, -1)에서 참조 샘플의 재구축된 값을 나타내고, w1, w2 및 w3는 미리 설정된 상수이며, nTbW 및 nTbH는 처리될 픽처 블록의 폭과 높이를 나타낸다.
제2 측면의 실행 가능한 구현에서, 타깃 샘플의 예측값은 다음의 수학식
predQ(xP, yP) = (((w1 * predP(xP, yP)) << (Log2(nTbW) + Log2(nTbH) + 1)) + w2 * predV(xP, yP) + w3 * predH(xP , yP) + (((w1 + w2 + w3)/2) << (Log2(nTbW) + Log2(nTbH) + 1)))/(((w1 + w2 + w3) << (Log2(nTbW) + Log2(nTbH) + 1)))
에 따라 획득되며,
여기서 predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW)이고, predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH)이며, 타깃 샘플의 좌표는 (xP, yP)이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 (0, 0)이며, predP(xP, yP)는 업데이트 전의 타깃 샘플의 예측값을 나타내고, predQ(xP, yP)는 타깃 샘플의 업데이트된 예측값을 나타내며, p(xP, -1), p(-1, nTbH), p(-1, yP) 및 p(nTbW, -1)은 각각 좌표 위치 (xP, -1), (-1, nTbH), (-1, yP) 및 (nTbW, -1)에서 참조 샘플의 재구축된 값을 나타내고, w1 및 w2는 미리 설정된 상수이며, nTbW 및 nTbH는 처리될 픽처 블록의 폭과 높이를 나타낸다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은 구체적으로 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하도록 추가로 구성되고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2)
에 따라 획득되며,
여기서, 이고, 이며, 이고. 타깃 샘플의 좌표는 이며, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이고, 는 업데이트 전의 타깃 샘플의 예측값을 나타내며, 는 타깃 샘플의 업데이트된 예측값을 나타내고, , , 는 각각 좌표 위치 , , 에서 참조 샘플의 재구축된 값을 나타내며, w1과 w2는 미리 설정된 상수이고, nTbW와 nTbH는 처리될 픽처 블록의 폭과 높이를 나타낸다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, w1 및 w2의 합은 2의 n 거듭제곱이고, n은 음이 아닌 정수이다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은 구체적으로 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하도록 추가로 구성되고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
에 따라 획득되며,
여기서 이고, 이며, 이고, 이며, 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전의 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, , 은 각각 좌표 위치 , 에서 참조 샘플의 재구축된 값을 나타내고, nTbW와 nTbH는 처리될 픽처 블록의 폭과 높이를 나타내며, clip1Cmp는 클리핑 연산을 나타낸다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은 구체적으로 타깃 샘플의 업데이트된 예측값을 획득하기 위해, 업데이트 이전의 타깃 샘플의 예측값과 참조 샘플의 재구축된 값에 기초하여 가중치 계산을 수행하도록 추가로 구성되고, 타깃 샘플의 업데이트된 예측값은 다음의 수학식
에 따라 획득되며,
여기서
이고, 이며, 이고, 타깃 샘플의 좌표는 이며, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이고, 는 업데이트 전의 타깃 샘플의 예측값을 나타내며, 는 타깃 샘플의 업데이트된 예측값을 나타내고, 은 각각 좌표 위치 에서 참조 샘플의 재구축된 값을 나타내며, nTbW 및 nTbH는 처리될 픽처 블록의 폭과 높이를 나타내고, clip1Cmp는 클리핑 연산을 나타낸다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은, 참조 샘플의 재구축된 값이 이용 불가능한 경우, 미리 설정된 수량의 이용 가능한 참조 샘플이 획득될 때까지 처리될 픽처 블록의 상단면 및 왼쪽면에 인접한 샘플의 가용성을 미리 설정된 순서로 결정하는 단계; 및 이용 가능한 참조 샘플의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하는 단계를 포함한다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은 구체적으로, 좌표 (xN - 1, yN + nTbH - 1)에서 좌표 (xN - 1, yN - 1)까지 그 후에 좌표 (xN, yN - 1)에서 좌표 (xN + nTbW - 1, yN - 1)까지의 순서로 이용 가능한 참조 샘플을 획득하도록 구성된다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 모든 참조 샘플에서 적어도 하나의 이용 가능한 참조 샘플이 있는 경우, 참조 샘플 (xN - 1, yN + nTbH - 1)의 재구축된 값이 이용 불가능하면, 좌표 (xN - 1, yN + nTbH - 1)에서 좌표 (xN - 1, yN - 1)까지 그 후 좌표 (xN, yN - 1)에서 좌표 (xN + nTbW - 1, yN - 1)까지의 순서대로 이용 가능한 샘플이 검색된다. 이용 가능한 샘플이 발견되면, 검색이 종료된다. 이용 가능한 샘플이 (x, y)인 경우, 참조 샘플 (xN - 1, yN + nTbH - 1)의 재구축된 값은 샘플 (x, y)의 재구축된 값으로 설정된다. 참조 샘플 (x, y)의 재구축된 값이 참조 샘플(xN - 1, yN + nTbH - M)을 포함하는 세트에서 이용 가능한 경우, 참조 샘플 (x, y)의 재구축된 값은 샘플 (x, y + 1)의 재구축된 값으로 설정되며, 여기서 M은 2보다 크거나 같고 nTbH + 1보다 작거나 같다. 참조 샘플 (x, y)의 재구축된 값이 샘플 (xN + N, yN - 1)을 포함하는 세트에서 이용 불가능한 경우, 참조 샘플 (x, y)의 재구축된 값은 참조 샘플 (x - 1, y)의 재구축된 값으로 설정되며, 여기서 N은 또는 0보다 크거나 같고 nTbW보다 작거나 같다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은 구체적으로, 참조 샘플 (xN - 1, yN + nTbH - M)의 재구축된 값이 이용 불가능한 경우, 좌표 (xN - 1, yN + nTbH - M)에서 시작하는 미리 설정된 순서로 이용 가능한 참조 샘플을 검색하도록 구성되며, 여기서 M은 1보다 크거나 같고 nTbH + 1보다 작거나 같다. 이용 가능한 참조 샘플이 B인 경우, 참조 샘플 (xN - 1, yN + nTbH - M)의 재구축된 값은 참조 샘플 B의 재구축된 값으로 설정될 수 있다. 좌표 (xN + N, yN - 1)를 가진 참조 샘플의 재구축된 값이 이용 불가능한 경우, 이용 가능한 참조 샘플은 좌표 (xN + N, yN - 1)에서 시작하여 미리 설정된 순서로 검색될 수 있으며, 여기서 N은 0보다 크거나 같고 nTbW - 1보다 작거나 같다. 이용 가능한 참조 샘플이 C인 경우, 참조 샘플 (xN + N, yN - 1)의 재구축된 값이 참조 샘플 C의 재구축된 값으로 설정될 수 있다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 참조 샘플 (xN - 1, yN + nTbH - 1)의 재구축된 값이 이용 불가능한 경우, 이용 가능한 샘플은 좌표 (xN - 1, yN + nTbH - 1)에서 좌표 (xN - 1, yN - 1)로 그 후 좌표 (xN, yN - 1)에서 좌표 (xN + nTbW - 1, yN - 1)까지 미리 설정된 순서로 검색된다. 이용 가능한 샘플이 발견되면, 검색이 종료된다. 이용 가능한 샘플이 (x, y)인 경우, 참조 샘플 (xN - 1, yN + nTbH - 1)의 재구축된 값은 샘플 (x, y)의 재구축된 값으로 설정된다. 참조 샘플 (xN - 1, yN + nTbH - M)의 재구축된 값이 이용 불가능한 경우, 이용 가능한 샘플은 좌표 (xN - 1, yN + nTbH - M)에서 시작하여 미리 설정된 순서의 역 순서로 검색될 수 있으며, 여기서 M은 1보다 크고 nTbH + 1보다 작거나 같다. 이용 가능한 참조 샘플이 C인 경우, 참조 샘플 (xN - 1, yN + nTbH - M)의 재구축된 값은 참조 샘플 C의 재구축된 값으로 설정될 수 있다. 좌표 (xN + N, yN - 1)를 갖는 참조 샘플의 재구축된 값이 이용 불가능한 경우, 이용 가능한 참조 샘플은 좌표 (xN + N, yN - 1)에서 시작하여 미리 설정된 순서와 역 순서로 검색될 수 있으며, 여기서 N은 0보다 크거나 같고 nTbW - 1보다 작거나 같다. 이용 가능한 참조 샘플이 D인 경우, 참조 샘플 (xN + N, yN - 1)의 재구축된 값은 참조 샘플 D의 재구축된 값으로 설정될 수 있다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 처리될 픽처 블록의 상단면 및 왼쪽면에 인접한 모든 샘플이 이용 불가능한 것으로 결정되면, 참조 샘플의 재구축된 값은 1 << (bitDepth - 1)로 설정되며, 여기서 bitDepth는 참조 샘플의 샘플 값의 비트 깊이를 나타낸다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은, 참조 샘플이 처리될 픽처 블록 위에 위치하는 경우, 참조 샘플의 재구축된 값 및 참조 샘플의 왼쪽의 이웃 샘플 및 오른쪽의 이웃 샘플의 재구축된 값에 대해 가중치 계산을 수행하고, 참조 샘플이 처리될 픽처 블록의 왼쪽에 위치하는 경우, 참조 샘플의 재구축된 값 및 참조 샘플의 상단의 이웃 샘플 및 하단의 이웃 샘플의 재구축된 값에 대해 가중치 계산을 수행하며, 가중치 계산의 결과를 사용하여 참조 샘플의 재구축된 값을 업데이트하도록 추가로 구성된다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은 제1 미리 설정된 알고리즘을 사용하여 모션 정보를 초기에 업데이트하도록 추가로 구성되고, 이에 상응하여, 보상 모듈은 구체적으로 초기에 업데이트된 모션 정보에 기초하여 처리될 픽처 블록에 대해 모션 보상을 수행하도록 구성된다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은 제2 미리 설정된 알고리즘을 사용하여 예측 블록을 미리 업데이트하도록 추가로 구성되고, 이에 상응하여, 계산 모듈은 구체적으로 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 미리 업데이트된 예측값에 대해 가중치 계산을 수행하도록 구성된다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은 제2 미리 설정된 알고리즘을 사용하여 타깃 샘플의 예측값을 업데이트하도록 추가로 구성된다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 파싱 모듈은 처리될 픽처 블록에 대응하는 예측 모드를 획득하기 위해 비트스트림을 파싱하고, 예측 모드가 병합(merge) 모드 및/또는 인터 어드밴스드 모션 벡터 예측(inter AMVP) 모드인 것으로 결정하도록 추가로 구성된다. 인터 어드밴스드 모션 벡터 예측(inter AMVP) 모드는 또한 인터 모션 벡터 예측(inter MVP) 모드로서 지칭될 수 있음이 이해될 수 있다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 파싱 모듈은 처리될 픽처 블록의 업데이트 결정 지시 정보를 획득하기 위해 비트스트림을 파싱하고, 업데이트 결정 지시 정보가 처리될 픽처 블록의 예측 블록을 업데이트하도록 지시하는 데 사용되는 것으로 결정하도록 추가로 구성된다.
제2 측면 및 전술한 가능한 구현을 참조하여, 다른 가능한 구현에서, 계산 모듈은 처리될 픽처 블록의 미리 설정된 업데이트 결정 지시 정보를 획득하고, 업데이트 결정 지시 정보가 처리될 픽처 블록의 예측 블록을 업데이트하도록 지시하는 데 사용되는 것으로 결정하도록 추가로 구성된다.
본 출원의 제3 측면에 따르면, 프로세서 및 프로세서에 연결된 메모리를 포함하는 모션 정보 예측 장치가 제공된다. 프로세서는 제1 측면에 따른 방법을 수행하도록 구성된다.
본 출원의 제4 측면에 따르면, 컴퓨터 판독 가능 저장 매체가 제공된다. 컴퓨터 판독 가능 저장 매체는 명령을 저장한다. 명령이 컴퓨터에서 실행되는 경우, 컴퓨터는 제1 측면에 따른 방법을 수행할 수 있다.
본 출원의 제5 측면에 따르면, 명령을 포함하는 컴퓨터 프로그램 제품이 제공된다. 명령이 컴퓨터에서 실행되는 경우, 컴퓨터는 제1 측면에 따른 방법을 수행할 수 있다.
본 출원의 제2 내지 제5 측면의 기술적 해결수단은 본 출원의 제1 측면의 기술적 해결수단과 일치한다는 것이 이해되어야 한다. 모든 측면에서 달성된 유익한 효과와 모든 측면의 대응하는 실행 가능한 구현은 유사하다. 따라서, 자세한 내용은 다시 설명되지 않는다.
도 1은 본 출원의 실시예에서 사용하기 위해 구성될 수 있는 비디오 코딩 시스템의 예시 블록도이다.
도 2는 본 출원의 실시예에서 사용하기 위해 구성될 수 있는 비디오 인코더의 예시 시스템 블록도이다.
도 3은 본 출원의 실시예에서 사용하기 위해 구성될 수 있는 비디오 디코더의 예시 시스템 블록도이다.
도 4는 본 출원의 실시예에서 사용하기 위해 구성될 수 있는 인터 예측 모듈의 예시 블록도이다.
도 5는 병합 예측 모드의 예시적인 구현의 흐름도이다.
도 6은 어드밴스트 모션 벡터 예측 모드의 예시적인 구현의 흐름도이다.
도 7은 본 출원의 실시예에서 사용하기 위해 구성될 수 있는 비디오 디코더에 의해 수행되는 모션 보상의 예시적인 구현의 흐름도이다.
도 8은 코딩 유닛 및 코딩 유닛과 연관된 이웃 픽처 블록 예의 개략도이다.
도 9는 후보 예측 모션 벡터 리스트를 구성하는 예시적인 구현의 흐름도이다.
도 10은 병합 모드 후보 예측 모션 벡터 리스트에 결합된 후보 모션 벡터를 추가하는 예시적인 구현의 개략도이다.
도 11은 병합 모드 후보 예측 모션 벡터 리스트에 스케일링된 후보 모션 벡터를 추가하는 예시적인 구현의 개략도이다.
도 12는 병합 모드 후보 예측 모션 벡터 리스트에 제로 모션 벡터를 추가하는 예시적인 구현의 개략도이다.
도 13은 본 출원의 실시예에 따른 인터 예측 방법의 개략적인 흐름도이다.
도 14는 본 출원의 실시예에 따른 인터 예측 방법의 애플리케이션의 개략도 1이다.
도 15는 본 출원의 실시예에 따른 인터 예측 방법의 애플리케이션의 개략도 2이다.
도 16은 본 출원의 실시예에 따른 인터 예측 방법의 애플리케이션의 개략도 3이다.
도 17은 본 출원의 실시예에 따른 인터 예측 방법의 애플리케니션의 개략도 4이다.
도 18은 본 출원의 실시예에 따른 인터 예측 장치의 개략적인 블록도이다.
도 19는 본 출원의 실시예에 따른 다른 인터 예측 장치의 개략적인 블록도이다.
이하, 본 출원의 실시예에서 첨부된 도면을 참조하여 본 출원의 실시예의 기술적 해결수단을 명확하고 완전하게 설명한다.
도 1은 본 출원의 실시예에 따른 비디오 코딩 시스템 예의 블록도이다. 여기에서 설명된 바와 같이, 용어 "비디오 코더"는 일반적으로 비디오 인코더 및 비디오 디코더 모두를 지칭한다. 본 출원에서, 용어 "비디오 코딩" 또는 "코딩"은 일반적으로 비디오 인코딩 또는 비디오 디코딩을 지칭할 수 있다. 비디오 코딩 시스템의 비디오 인코더(100) 및 비디오 디코더(200)는 예측된 모션 벡터가 모션 추정 방법을 사용하여 획득된 모션 벡터에 최대한으로 근사하고 모션 벡터 차이가 코딩 중에 전송될 필요가 없도록 본 출원에서 제공되는 복수의 새로운 인터 예측 모드 중 어느 하나에 기초하여 설명된 다양한 방법 예에 따라 현재 코딩된 픽처 블록 또는 현재 코딩된 픽처 블록의 서브 블록의 모션 정보, 예를 들어 모션 벡터를 예측하도록 구성된다. 또한, 이것은 코딩 성능을 향상시킨다.
도 1에 도시된 바와 같이, 비디오 코딩 시스템은 소스 장치(10) 및 데스티네이션(destination) 장치(20)를 포함한다. 소스 장치(10)는 인코딩된 비디오 데이터를 생성한다. 따라서, 소스 장치(10)는 비디오 인코딩 장치로 지칭될 수 있다. 데스티네이션 장치(20)는 소스 장치(10)에 의해 생성된 인코딩된 비디오 데이터를 디코딩할 수 있다. 따라서, 데스티네이션 장치(20)는 비디오 디코딩 장치로 지칭될 수 있다. 다양한 구현 해결수단에서, 소스 장치(10), 데스티네이션 장치(20), 또는 소스 장치(10) 및 데스티네이션 장치(20) 모두는 하나 이상의 프로세서 및 하나 이상의 프로세서에 연결된 메모리를 포함할 수 있다. 메모리는 RAM, ROM, EEPROM, 플래시 메모리 또는 명령 또는 데이터 구조의 형태로 필요한 프로그램 코드를 저장하는 데 사용될 수 있고 본 출원에서 설명된 바와 같이, 컴퓨터에 의해 액세스될 수 있는 기타 임의의 매체를 포함할 수 있지만 이에 제한되지는 않는다.
소스 장치(10) 및 데스티네이션 장치(20)는 데스크탑 컴퓨터, 모바일 컴퓨팅 장치, 노트북(예를 들어, 랩탑) 컴퓨터, 태블릿 컴퓨터, 셋탑 박스, "스마트" 폰과 같은 핸드헬드 전화기 세트, 텔레비전 세트, 카메라, 디스플레이 장치, 디지털 매체 플레이어, 비디오 게임 콘솔, 차량 내 컴퓨터 등을 포함하는 다양한 장치를 포함할 수 있다.
데스티네이션 장치(20)는 링크(30)를 통해 소스 장치(10)로부터 인코딩된 비디오 데이터를 수신할 수 있다. 링크(30)는 인코딩된 비디오 데이터를 소스 장치(10)로부터 데스티네이션 장치(20)로 전송할 수 있는 하나 이상의 매체 또는 장치를 포함할 수 있다. 예에서, 링크(30)는 소스 장치(10)가 인코딩된 비디오 데이터를 실시간으로 데스티네이션 장치(20)로 직접 전송할 수 있게 하는 하나 이상의 통신 매체를 포함할 수 있다. 본 예에서, 소스 장치(10)는 통신 표준(예를 들어, 무선 통신 프로토콜)에 따라 인코딩된 비디오 데이터를 변조할 수 있고, 변조된 비디오 데이터를 데스티네이션 장치(20)로 전송할 수 있다. 하나 이상의 통신 매체는 무선 및/또는 유선 통신 매체, 예를 들어 무선 주파수(radio frequency, RF) 스펙트럼 또는 하나 이상의 물리 전송 라인를 포함할 수 있다. 하나 이상의 통신 매체는 패킷 기반 네트워크의 일부를 구성할 수 있으며, 패킷 기반 네트워크는 예를 들어 근거리 통신망, 광역 통신망 또는 글로벌 네트워크(예를 들어, 인터넷)이다. 하나 이상의 통신 매체는 라우터, 스위치, 기지국, 또는 소스 장치(10)로부터 데스티네이션 장치(20)로의 통신을 용이하게 하는 다른 장치를 포함할 수 있다.
다른 예에서, 인코딩된 데이터는 출력 인터페이스(140)를 통해 저장 장치(40)로 출력될 수 있다. 유사하게, 인코딩된 데이터는 입력 인터페이스(240)를 통해 저장 장치(40)로부터 액세스될 수 있다. 저장 장치(40)는 복수의 분산 데이터 저장 매체 또는 로컬 액세스 가능 데이터 저장 매체, 예를 들어 하드 디스크 드라이브, 블루레이 디스크, 디지털 비디오 디스크(digital video disc, DVD), 컴팩트 디스크 읽기 전용 메모리(compact disc read-only memory, CD-ROM), 플래시 메모리, 휘발성 또는 비 휘발성 메모리 또는 인코딩된 비디오 데이터를 저장하도록 구성된 기타 적절한 디지털 저장 매체 중 어느 하나를 포함할 수 있다.
다른 예에서, 저장 장치(40)는 소스 장치(10)에서 생성된 인코딩된 비디오를 저장할 수 있는 파일 서버 또는 다른 중간 저장 장치에 대응할 수 있다. 데스티네이션 장치(20)는 스트리밍 전송 또는 다운로딩을 통해 저장 장치(40)로부터 저장된 비디오 데이터에 액세스할 수 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 인코딩된 비디오 데이터를 데스티네이션 장치(20)로 전송할 수 있는 임의 유형의 서버일 수 있다. 예에서, 파일 서버는 네트워크 서버(예를 들어, 웹 사이트를 위해 사용됨), 파일 전송 프로토콜(file transfer protocol, FTP) 서버, 네트워크 부착 저장장치(network-attached storage, NAS) 장치 또는 로컬 디스크 드라이브를 포함한다. 데스티네이션 장치(20)는 임의의 표준 데이터 연결(인터넷 연결을 포함함)을 통해 인코딩된 비디오 데이터에 액세스할 수 있다. 표준 데이터 연결은 무선 채널(예를 들어, 와이파이(Wireless-Fidelity, Wi-Fi) 연결), 유선 연결(예를 들어, 디지털 가입자 회선(digital subscriber line, DSL) 또는 케이블 모뎀) 또는 무선 채널과 유선 연결의 조합을 포함할 수 있으며, 여기서 조합은 파일 서버에 저장된 인코딩된 비디오 데이터에 액세스하는 데 적합하다. 인코딩된 비디오 데이터는 스트리밍 전송, 다운로드 전송 또는 이들의 조합을 통해 저장 장치(40)로부터 전송될 수 있다.
본 출원의 모션 벡터 예측 기술은 복수의 멀티미디어 애플리케이션, 예를 들어 OTA(over-the-air) 텔레비전 방송, 케이블 텔레비전 전송, 위성 텔레비전 전송, 비디오 스트리밍 전송(예를 들어, 인터넷을 통해), 데이터 저장 매체에 저장된 비디오 데이터의 인코딩, 데이터 저장 매체에 저장된 비디오 데이터의 디코딩 또는 다른 애플리케이션을 지지하기 위한 비디오 코딩에 적용 가능하다. 일부 예에서, 비디오 코딩 시스템은 비디오 스트리밍 전송, 비디오 재생, 비디오 방송 및/또는 비디오 전화와 같은 애플리케이션을 지원하기 위해 단방향 또는 양방향 비디오 전송을 지원하도록 구성될 수 있다.
도 1에서 설명된 비디오 코딩 시스템은 단지 예시일 뿐이며, 본 출원의 기술은 인코딩 장치와 디코딩 장치 사이의 데이터 통신을 반드시 포함하지는 않는 비디오 코딩 설정(예를 들어, 비디오 인코딩 또는 비디오 디코딩)에 적용될 수 있다. 또 다른 예에서, 데이터는 로컬 메모리에서 검색되거나, 네트워크 등을 통해 스트리밍된다. 비디오 인코딩 장치는 데이터를 인코딩하고 데이터를 메모리에 저장할 수 있으며, 그리고/또는 비디오 디코딩 장치는 메모리로부터 데이터를 검색하여 데이터를 디코딩할 수 있다. 많은 예에서, 인코딩 및 디코딩은 서로 통신하지 않고 단순히 데이터를 인코딩하고 메모리에 데이터를 저장하며 그리고/또는 메모리에서 데이터를 검색하여 데이터를 디코딩하는 장치에 의해 수행된다.
도 1의 예에서, 소스 장치(10)는 비디오 소스(120), 비디오 인코더(100) 및 출력 인터페이스(140)를 포함한다. 일부 예에서, 출력 인터페이스(140)는 변조기/복조기(모뎀) 및/또는 전송기를 포함할 수 있다. 비디오 소스(120)는 비디오 캡처 장치(예를 들어, 비디오 카메라), 이전에 캡처된 비디오 데이터를 포함하는 비디오 아카이브, 비디오 컨텐츠 제공자로부터 비디오 데이터를 수신하기 위한 비디오 피드 인(feed-in) 인터페이스, 및/또는 비디오 데이터를 생성하기 위한 컴퓨터 그래픽 시스템, 또는 전술한 비디오 데이터 소스의 조합을 포함할 수 있다.
비디오 인코더(100)는 비디오 소스(120)로부터의 비디오 데이터를 인코딩할 수 있다. 일부 예에서, 소스 장치(10)는 인코딩된 비디오 데이터를 출력 인터페이스(140)를 통해 데스티네이션 장치(20)로 직접 전송한다. 다른 예에서, 인코딩된 비디오 데이터는 데스티네이션 장치(20)가 디코딩 및/또는 재생을 위해 인코딩된 비디오 데이터에 후속적으로 액세스할 수 있도록 저장 장치(40)에 추가로 저장될 수 있다.
도 1의 예에서, 데스티네이션 장치(20)는 입력 인터페이스(240), 비디오 디코더(200) 및 디스플레이 장치(220)를 포함한다. 일부 예에서, 입력 인터페이스(240)는 수신기 및/또는 모뎀을 포함한다. 입력 인터페이스(240)는 링크(30)를 통해 그리고/또는 저장 장치(40)로부터 인코딩된 비디오 데이터를 수신할 수 있다. 디스플레이 장치(220)는 데스티네이션 장치(20)와 통합될 수 있거나 또는 데스티네이션 장치(20) 외부에 위치할 수 있다. 일반적으로 디스플레이 장치(220)는 디코딩된 비디오 데이터를 디스플레이한다. 디스플레이 장치(220)는 다양한 유형의 디스플레이 장치, 예를 들어 액정 디스플레이(liquid crystal display, LCD), 플라즈마 디스플레이, 유기 발광 다이오드(organic light-emitting diode, OLED) 디스플레이, 또는 다른 유형의 디스플레이 장치를 포함할 수 있다.
일부 측면에서, 비록 도 1에서 도시되지는 않았지만, 비디오 인코더(100) 및 비디오 디코더(200)는 각각 오디오 인코더 및 오디오 디코더와 통합될 수 있으며, 동일한 데이터 스트림 또는 별개의 데이터 스트림으로 오디오 및 비디오 둘 다를 인코딩하기 위해 적절한 멀티플렉서-디멀티플렉서 유닛 또는 기타 하드웨어 및 소프트웨어를 포함할 수 있다. 일부 예에서, 적용 가능한 경우, 디멀티플렉서(MUX-DEMUX) 유닛은 국제 전기 통신 연합(international telecommunication union, ITU) H.223 멀티플렉서 프로토콜 또는 사용자 데이터그램 프로토콜(user datagram protocol, UDP)과 같은 다른 프로토콜을 준수할 수 있다.
비디오 인코더(100) 및 비디오 디코더(200) 각각은 복수의 회로, 예를 들어 하나 이상의 마이크로 프로세서, 디지털 신호 프로세서(digital signal processor, DSP), 주문형 집적 회로(application-specific integrated circuit, ASIC), 필드 프로그래밍 가능 게이트 어레이(field programmable gate array, FPGA), 이산 로직, 하드웨어 또는 이들의 조합 중 어느 하나로서 구현될 수 있다. 본 출원이 소프트웨어를 사용하여 부분적으로 구현되는 경우, 장치는 적절한 비 휘발성 컴퓨터 판독 가능 저장 매체에 소프트웨어에 대한 명령을 저장할 수 있으며, 본 출원에서 기술을 구현하기 위해 하드웨어에서 명령을 실행하도록 하나 이상의 프로세서를 사용할 수 있다. 전술한 내용(하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등을 포함) 중 어느 하나는 하나 이상의 프로세서로서 간주될 수 있다. 비디오 인코더(100) 및 비디오 디코더(200)는 각각 하나 이상의 인코더 또는 디코더에 포함될 수 있다. 인코더 또는 디코더는 대응하는 장치에서 결합된 인코더/디코더(코덱)의 일부로서 통합될 수 있다.
본 출원에서, 비디오 인코더(100)는 일반적으로 비디오 디코더(200)와 같은 다른 장치에 일부 정보를 "시그널링하거나" 또는 "전송하는" 장치로 지칭될 수 있다. 용어 "시그널링하거나" 또는 "전송하는"은 일반적으로 압축된 비디오 데이터를 디코딩하는 데 사용되는 신택스 요소 및/또는 기타 데이터의 전송을 지칭한다. 전송은 실시간 또는 거의 실시간으로 수행될 수 있다. 다르게는, 통신은 예를 들어 인코딩된 비트스트림의 신택스 요소가 인코딩 동안 컴퓨터 판독 가능 저장 매체에 저장되는 경우에 수행되는 일정 시간 후에 수행될 수 있다. 그 후, 디코딩 장치는 신택스 요소가 매체에 저장된 후 언제든지 신택스 요소를 검색할 수 있다.
JCT-VC는 H.265 고효율 비디오 코딩(high efficiency video coding, HEVC) 표준을 개발하였다. HEVC 표준화는 비디오 디코딩 장치의 진화된 모델을 기반으로하며, 여기서 모델은 HEVC 테스트 모델(HEVC model, HM)으로 지칭된다. 최신 H.265 표준 문서는 http://www.itu.int/rec/T-REC-H.265에서 확인할 수 있다. 표준 문서의 최신 버전은 H.265 (12/16)이며, 표준 문서는 전체적으로 참조로서 여기에 통합된다. HM에서, 비디오 디코딩 장치는 ITU-TH.264/AVC의 기존 알고리즘에 비해 몇 가지 부가적인 기능을 가지고 있느느 것으로 가정한다. 예를 들어, H.264는 9개의 인트라 예측 코딩 모드를 제공하는 반면, HM은 최대 35개의 인트라 예측 코딩 모드를 제공할 수 있다.
JVET는 H.266 표준 개발에 전념하고 있다. H.266 표준화 프로세스는 비디오 디코딩 장치의 진화된 모델을 기반으로 하며, 여기서 모델은 H.266 테스트 모델로서 지칭된다. H.266 알고리즘 설명은 http://phenix.int-evry.fr/jvet에서 확인할 수 있으며, 최신 알고리즘 설명은 JVET-F1001-v2에 포함되어 있다. 알고리즘 설명의 문서는 그 전체가 참조로서 여기에 통합된다. 또한, JEM 테스트 모델에 대한 참조 소프트웨어는 https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/에서 확인할 수 있으며, 또한 전체가 참조로서 여기에 통합된다.
일반적으로, HM 작업 모델에서 설명된 바와 같이, 비디오 프레임 또는 픽처는 루마 샘플과 크로마 샘플을 모두 포함하는 트리 블록 또는 최대 코딩 유닛(largest coding unit, LCU)의 시퀀스로 분할될 수 있다. LCU는 또한 코딩 트리 유닛(coding tree unit, CTU)으로 지칭된다. 트리 블록은 H.264 표준의 매크로블록과 유사한 기능을 가지고 있다. 슬라이스는 디코딩 순서로 여러 개의 연속적인 트리 블록을 포함한다. 비디오 프레임 또는 픽처는 하나 이상의 슬라이스로 분할될 수 있다. 각각의 트리 블록은 쿼드 트리(quadtree)에 기초하여 코딩 유닛으로 분할될 수 있다. 예를 들어, 쿼드 트리의 루트 노드 역할을 하는 트리 블록은 4개의 자식 노드로 분할 수 있으며, 각각의 자식 노드는 또한 부모 노드 역할을 하고 4개의 다른 자식 노드로 분할될 수 있다. 쿼드 트리의 리프 노드(leaf node) 역할을 하는 분할 불가능한 최종 자식 노드는 디코딩 노드, 예를 들어 디코딩된 비디오 블록을 포함한다. 트리 블록이 분할될 수 있는 최대 횟수와 디코딩 노드의 최소 크기는 디코딩된 비트스트림과 연관된 신택스 데이터에서 정의될 수 있다.
코딩 유닛은 디코딩 노드, 예측 유닛(prediction unit, PU) 및 디코딩 노드와 연관된 변환 유닛(transform unit, TU)을 포함한다. CU의 크기는 디코딩 노드의 크기에 대응하고, CU의 형상은 정사각형이어야 한다. CU의 크기는 8 × 8 픽셀에서 최대 64 × 64 픽셀까지일 수 있거나 또는 더 큰 트리 블록 크기일 수 있다. 각각의 CU는 하나 이상의 PU 및 하나 이상의 TU를 포함할 수 있다. 예를 들어, CU와 연관된 신택스 데이터는 하나의 CU를 하나 이상의 PU로 분할하는 것을 설명할 수 있다. 분할 모드는 CU가 스킵 또는 다이렉트 모드에 기초하여 인코딩되거나, 인트라 예측 모드에 기초하여 인코딩되거나, 또는 인터 예측 모드에 기초하여 인코딩되는 경우에 변경될 수 있다. 분할을 통해 획득되는 PU는 정사각형이 아닌 형상일 수 있다. 예를 들어, CU와 연관된 신택스 데이터는 다르게는 쿼드 트리에 기초하여 하나의 CU를 하나 이상의 TU로 분할하는 것을 설명할 수 있다. TU는 정사각형 또는 정사각형이 아닌 형상일 수 있다.
HEVC 표준은 TU 기반 변환을 허용한다. TU는 CU마다 다를 수 있다. TU의 크기는 일반적으로 분할된 LCU에 대해 정의된 주어진 CU 내의 PU 크기에 기초하여 설정된다. 그러나, 경우가 항상 이와 같지는 않을 수 있다. TU의 크기는 일반적으로 PU의 크기와 같거나 작다. 일부 실행 가능한 구현에서, "잔여 쿼드 트리"(residual quadtree, RQT)로 지칭되는 쿼드 트리 구조는 CU에 대응하는 잔여 샘플을 더 작은 유닛으로 분할하는 데 사용될 수 있다. RQT의 리프 노드는 TU로서 지칭될 수 있다. TU와 연관된 픽셀 차이는 변환 계수를 생성하기 위해 변환될 수 있고, 변환 계수는 양자화될 수 있다.
일반적으로 PU는 예측 프로세스와 관련된 데이터를 포함한다. 예를 들어, PU가 인트라 예측 모드에 기초하여 인코딩된 경우, PU는 PU에 대응하는 인트라 예측 모드를 설명하는 데이터를 포함할 수 있다. 다른 실행 가능한 구현에서, PU가 인터 예측 모드에 기초하여 인코딩되는 경우, PU는 PU의 모션 벡터를 정의하는 데이터를 포함할 수 있다. 예를 들어, PU의 모션 벡터를 정의하는 데이터는 모션 벡터의 수평 성분, 모션 벡터의 수직 성분, 모션 벡터의 해상도(예를 들어, 1/4 샘플 정밀도 또는 1/8 샘플 정밀도), 모션 벡터가 가리키는 참조 픽처 및/또는 모션 벡터의 참조 픽처 리스트(예를 들어, 리스트 0, 리스트 1 또는 리스트 C)를 설명할 수 있다.
일반적으로, 변환 및 양자화 프로세스는 TU를 위해 사용된다. 하나 이상의 PU를 포함하는 주어진 CU는 또한 하나 이상의 TU를 포함할 수 있다. 예측 후에, 비디오 인코더(100)는 PU에 대응하는 잔여 값을 계산할 수 있다. 잔여 값은 픽셀 차이를 포함한다. 픽셀 차이는 변환 계수로 변환될 수 있고, 변환 계수는 양자화되고 TU 스캐닝을 거쳐 엔트로피 디코딩을 위한 직렬화된 변환 계수를 생성한다. 본 출원에서, 용어 "비디오 블록"은 일반적으로 CU의 디코딩 노드를 지시하는 데 사용된다. 일부 특정 애플리케이션에서, 본 출원에서, 용어 "비디오 블록"은 또한 디코딩 노드, PU 및 TU를 포함하는 LCU 또는 CU와 같은 트리 블록을 지시하는 데 사용될 수 있다.
비디오 시퀀스는 일반적으로 일련의 비디오 프레임 또는 픽처를 포함한다. 예를 들어, 픽처 그룹(group of picture, GOP)은 일련의 비디오 픽처 또는 하나 이상의 비디오 픽처를 포함한다. GOP는 GOP의 헤더 정보에, 하나 이상의 픽처의 헤더 정보에 또는 다른 곳에 신택스 데이터를 포함할 수 있으며, 신택스 데이터는 GOP에 포함된 픽처의 양을 기술한다. 픽처의 각각의 슬라이스는 대응하는 픽처에 대한 코딩 모드를 설명하는 슬라이스 신택스 데이터를 포함할 수 있다. 비디오 인코더(100)는 일반적으로 비디오 데이터를 인코딩하기 위해 비디오 슬라이스의 비디오 블록에 대한 작동을 수행한다. 비디오 블록은 CU의 디코딩 노드에 대응할 수 있다. 비디오 블록의 크기는 고정되거나 가변적일 수 있으며, 지정된 디코딩 표준에 따라 달라질 수 있다.
실행 가능한 구현에서, HM은 다양한 크기를 가진 PU에 대한 예측을 지원한다. 주어진 CU의 크기가 2N × 2N이라고 가정하면, HM은 크기가 2N × 2N 또는 N × N인 PU에 대해 인트라 예측을 지원하고, 크기가 2N × 2N, 2N × N, N × 2N 또는 N × N인 대칭 PU에 대해 인터 예측을 지원한다. HM은 또한 크기가 2N × nU, 2N × nD, nL × 2N 또는 nR × 2N인 PU에 대한 인터 예측을 위한 비대칭 분할을 지원한다. 비대칭 분할에서, CU는 한 방향으로 분할되지 않고, 다른 방향으로 두 개의 부분으로 분할되며, 여기서 한 부분은 CU의 25%를 차지하고 다른 부분은 CU의 75%를 차지한다. CU의 25%를 차지하는 부분은 "U(위)", "D(아래)", "L(왼쪽)" 또는 "R(오른쪽)"이 후속하는 "n"을 포함하는 지시자에 의해 지시된다. 따라서, 예를 들어 "2N × nU"는 상단에 2N × 0.5N PU가 있고 하단에 2N × 1.5N PU가 있는 수평 분할된 2N × 2N CU를 지칭한다.
본 출원에서, "N × N" 및 "N 곱하기 N"은 수직 차원 및 수평 차원에서 비디오 블록의 픽셀 크기, 예를 들어 16 × 16 픽셀 또는 16 곱셈 16 픽셀을 지시하기 위해 상호 교환적으로 사용된다. 일반적으로, 16 × 16 블록은 수직 방향으로 16개의 픽셀(y = 16) 및 수형 방향으로 16개의 픽셀(x = 16)을 갖는다. 유사하게, N × N 블록은 수직 방향으로 N개의 픽셀과 수평 방향으로 N개의 픽셀을 가지며, 여기서 N은 음이 아닌 정수 값이다. 블록의 픽셀은 행과 열로 배열될 수 있다. 또한, 블록에서, 수평 방향의 픽셀 개수와 수직 방향의 픽셀 개수가 반드시 같을 필요는 없다. 예를 들어, 블록은 N × M 픽셀을 포함할 수 있으며, 여기서 M은 반드시 N과 동일한 것은 아니다.
CU의 PU에 대해 인트라 또는 인터 예측 디코딩이 수행된 후, 비디오 인코더(100)는 CU에서 TU의 잔여 데이터를 계산할 수 있다. PU는 공간 도메인(또한 픽셀 도메인으로서 지칭됨)에 픽셀 데이터를 포함할 수 있다. TU는 변환(예를 들어, 이산 코사인 변환(discrete cosine transform, DCT), 정수 변환, 웨이블릿 변환 또는 개념적으로 유사한 변환)이 잔여 비디오 데이터에 적용된 후 변환 도메인에 계수를 포함할 수 있다. 잔여 데이터는 인코딩되지 않은 픽처의 픽셀과 PU에 대응하는 예측값 사이의 픽셀 차이에 대응할 수 있다. 비디오 인코더(100)는 CU의 잔여 데이터를 포함하는 TU를 생성한 후, CU의 변환 계수를 생성하기 위해 TU를 변환한다.
변환 계수를 생성하기 위해 임의의 변환을 수행한 후, 비디오 인코더(100)는 변환 계수를 양자화할 수 있다. 양자화는 예를 들어 계수를 나타내는 데 사용되는 데이터의 양을 줄이고 추가 압축을 구현하기 위해 계수를 양자화하는 프로세스를 지칭한다. 양자화 프로세스는 일부 또는 모든 계수와 연관된 비트 깊이를 줄일 수 있다. 예를 들어, 양자화 과정에서, n 비트 값은 반올림을 통해 m 비트 값으로 감소될 수 있으며, 여기서 n은 m보다 크다.
JEM 모델은 비디오 픽처 코딩 구조를 더욱 향상시킨다. 특히, QTBT(quadtree plus binary tree)" 구조로 지칭되는 블록 코딩 구조가 도입되었다. HEVC에서 CU, PU 및 TU와 같은 개념을 사용하지 않고, QTBT 구조는 보다 유연한 CU 분할 형상을 지원한다. CU는 정사각형 또는 직사각형일 수 있다. 쿼드 트리 분할은 먼저 CTU에 대해 수행되고, 이진 트리 분할은 쿼드 트리의 리프 노드에 대해 추가로 수행된다. 또한, 이진 트리 분할에는 대칭 수평 분할과 대칭 수직 분할의 두 가지 분할 모드가 있다. 이진 트리의 리프 노드는 CU로 지칭된다. JEM 모델의 CU는 예측 및 변환 중에 더 이상 분할될 수 없다. 즉, JEM 모델의 CU, PU 및 TU는 동일한 블록 크기를 갖는다. 기존 JEM 모델에서, 최대 CTU 크기는 256 × 256 루마 픽셀이다.
일부 실행 가능한 구현에서, 비디오 인코더(100)는 엔트로피 인코딩될 수 있는 직렬화된 벡터를 생성하기 위해 미리 정의된 스캐닝 순서로 양자화된 변환 계수를 스캐닝할 수 있다. 다른 실행 가능한 구현에서, 비디오 인코더(100)는 적응 스캐닝을 수행할 수 있다. 1차원 벡터를 생성하기 위해 양자화된 변환 계수를 스캐닝한 후, 비디오 인코더(100)는 컨텍스트 기반 적응 가변 길이 코딩(context-based adaptive variable-length code, CAVLC), 컨텍스트 기반 적응 이진 산술 코딩(context-based adaptive binary arithmetic decoding, CABAC), 신택스 기반 컨텍스트 적응 이진 산술 코딩(syntax-based adaptive binary arithmetic coding, SBAC), 확률 간격 분할 엔트로피(probability interval partitioning entropy, PIPE) 코딩 또는 다른 엔트로피 코딩 방법을 사용하여 1차원 벡터에 대한 엔트로피 인코딩을 수행할 수 있다. 비디오 인코더(100)는 비디오 디코더(200)가 비디오 데이터를 디코딩하기 위해 인코딩된 비디오 데이터와 연관된 신택스 요소에 대해 엔트로피 인코딩을 더 수행할 수 있다.
CABAC를 수행하기 위해, 비디오 인코더(100)는 컨텍스트 모델 내의 컨텍스트를 전송될 심볼에 할당할 수 있다. 컨텍스트는 심볼의 인접 값이 0이 아닌지 여부와 관련될 수 있다. CAVLC를 수행하기 위해, 비디오 인코더(100)는 전송될 심볼의 가변 길이 코드를 선택할 수 있다. 가변 길이 코딩의 코드워드(variable-length code, VLC)는 더 짧은 코드가 확률이 높은 심볼에 대응하고 더 긴 코드가 확률이 낮은 심볼에 대응할 수 있도록 구성될 수 있다. 이러한 방식으로, 전송될 모든 심볼에 대해 동일한 길이의 코드워드를 사용하는 것과 비교하면, VLC를 사용하는 것이 비트 레이트를 감소시킬 수 있다. CABAC에서의 확률은 심볼에 할당된 컨텍스트에 기초하여 결정될 수 있다.
본 출원의 본 실시예에서, 비디오 인코더는 픽처 사이의 시간적 중복성을 감소시키기 위해 인터 예측을 수행할 수 있다. 전술한 바와 같이, CU는 상이한 비디오 압축 코딩 표준에 따라 하나 이상의 예측 유닛 PU를 가질 수 있다. 즉, 복수의 PU는 하나의 CU에 속할 수 있거나, 또는 PU와 CU가 같은 크기를 가질 수 있다. 본 명세서에서, CU와 PU가 동일한 크기를 가지는 경우, CU에 대응하는 분할 모드는 CU가 분할되지 않거나, 또는 CU가 하나의 PU로 분할되고, PU가 설명을 위해 균일하게 사용되는 것이다. 비디오 인코더가 인터 예측을 수행하는 경우, 비디오 인코더는 PU의 모션 정보를 비디오 디코더로 시그널링할 수 있다. 예를 들어, PU의 모션 정보는 참조 픽처 인덱스, 모션 벡터 및 예측 방향 지시자를 포함할 수 있다. 모션 벡터는 PU의 픽처 블록(또한 비디오 블록, 픽셀 블록, 픽셀 세트 등으로 지칭됨)과 PU의 참조 블록 사이의 변위를 지시할 수 있다. PU의 참조 블록은 PU의 픽처 블록과 유사한 참조 픽처의 일부일 수 있다. 참조 블록은 참조 픽처 인덱스 및 예측 방향 지시자에 의해 지시되는 참조 픽처에 위치할 수 있다.
PU의 모션 정보를 표현하는 데 필요한 코딩 비트의 양을 줄이기 위해, 비디오 인코더는 병합 예측 모드 또는 어드밴스트 모션 벡터 예측 모드에 기초하여 각각의 PU에 대한 후보 예측 모션 벡터(Motion Vector, MV) 리스트를 생성할 수 있다. PU에 대한 후보 예측 모션 벡터 리스트 내의 각각의 후보 예측 모션 벡터는 모션 정보를 지시할 수 있다. 후보 예측 모션 벡터 리스트 내의 일부 후보 예측 모션 벡터에 의해 지시되는 모션 정보는 다른 PU의 모션 정보에 기초할 수 있다. 후보 예측 모션 벡터가 특정 위치에서의 지정된 공간적 후보 예측 모션 벡터 또는 특정 위치에서의 지정된 시간적 후보 예측 모션 벡터 중 하나의 모션 정보를 지시하는 경우, 후보 예측 모션 벡터는 본 출원에서 "원래" 후보 예측 모션 벡터로서 지칭될 수 있다. 예를 들어, 또한 본 명세서에서 병합 예측 모드로서 지칭되는 병합 모드에서, 특정 위치에 5개의 원래 공간적 후보 예측 모션 벡터와 특정 위치에 1개의 원래 시간적 후보 예측 모션 벡터가 있을 수 있다. 일부 예에서, 비디오 인코더는 상이한 원래 후보 예측 모션 벡터로부터 일부 모션 벡터를 결합하거나, 원래 후보 예측 모션 벡터를 수정하거나, 또는 후보 예측 모션 벡터로서 제로 모션 벡터만을 삽입함으로써 추가 후보 예측 모션 벡터를 생성할 수 있다. 추가 후보 예측 모션 벡터는 원래의 후보 예측 모션 벡터로 간주되지 않으며, 본 출원에서 인위적으로 생성된 후보 예측 모션 벡터로서 지칭될 수 있다.
본 출원의 기술은 일반적으로 비디오 인코더에 후보 예측 모션 벡터 리스트를 생성하는 기술과 비디오 디코더에 동일한 후보 예측 모션 벡터 리스트를 생성하는 기술을 포함한다. 비디오 인코더 및 비디오 디코더는 후보 예측 모션 벡터 리스트를 구축하는 동일한 기술을 구현함으로써 동일한 후보 예측 모션 벡터 리스트를 생성할 수 있다. 예를 들어, 비디오 인코더 및 비디오 디코더는 동일한 양의 후보 예측 모션 벡터(예를 들어, 5개의 후보 예측 모션 벡터)로 리스트를 구축할 수 있다. 비디오 인코더 및 비디오 디코더는 먼저 공간적 후보 예측 모션 벡터(예를 들어, 동일한 픽처의 인접 블록)를 고려한 다음, 시간적 후보 예측 모션 벡터(예를 들어, 상이한 픽처의 후보 예측 모션 벡터)를 고려하고, 마지막으로 필요한 양의 후보 예측 모션 벡터가 리스트에 추가될 때까지 인위적으로 생성된 후보 예측 모션 벡터를 고려할 수 있다. 본 출원의 기술에 따르면, 후보 예측 모션 벡터 리스트를 구축하는 동안, 후보 예측 모션 벡터 리스트에서 반복된 후보 예측 모션 벡터를 제거하기 위해 일부 유형의 후보 예측 모션 벡터에 대해 프루닝(pruning) 작동이 수행될 수 있지만, 디코더 복잡도를 줄이기 위해 다른 유형의 후보 예측 모션 벡터에 대해서는 수행되지 않을 수 있다. 예를 들어, 공간적 후보 예측 모션 벡터 세트 및 시간적 후보 예측 모션 벡터에 대해, 후보 예측 모션 벡터 리스트에서 동일한 모션 정보를 갖는 후보 예측 모션 벡터를 제거하기 위해 프루닝 작동이 수행될 수 있다. 그러나, 인위적으로 생성된 후보 예측 모션 벡터는 프루닝 없이 후보 예측 모션 벡터 리스트에 추가될 수 있다.
CU의 PU에 대한 후보 예측 모션 벡터 리스트를 생성한 후, 비디오 인코더는 후보 예측 모션 벡터 리스트에서 후보 예측 모션 벡터를 선택하고 후보 예측 모션 벡터 인덱스를 비트스트림으로 출력할 수 있다. 선택된 후보 예측 모션 벡터는 디코딩중인 타깃 PU의 예측값과 가장 근접한 모션 벡터를 생성하기 위한 후보 예측 모션 벡터일 수 있다. 후보 예측 모션 벡터 인덱스는 후보 예측 모션 벡터 리스트에서 선택된 후보 예측 모션 벡터의 위치를 지시할 수 있다. 비디오 인코더는 PU의 모션 정보에 의해 지시되는 참조 블록에 기초하여 PU의 예측 픽처 블록을 더 생성할 수 있다. PU의 모션 정보는 선택된 후보 예측 모션 벡터에 의해 지시되는 모션 정보에 기초하여 결정될 수 있다. 예를 들어, 병합 모드에서, PU의 모션 정보는 선택된 후보 예측 모션 벡터에 의해 지시되는 모션 정보와 동일할 수 있다. AMVP 모드에서, PU의 모션 정보는 PU에 대한 모션 벡터 차이와 선택된 후보 예측 모션 벡터에 의해 지시되는 모션 정보에 기초하여 결정될 수 있다. 비디오 인코더는 CU의 PU의 예측 픽처 블록 및 CU의 원래 픽처 블록에 기초하여 CU의 하나 이상의 잔여 픽처 블록을 생성할 수 있다. 그 후, 비디오 인코더는 하나 이상의 잔여 픽처 블록을 인코딩하고 하나 이상의 잔여 픽처 블록을 비트스트림으로 출력할 수 있다.
비트스트림은 PU에 대한 후보 예측 모션 벡터 리스트에서 선택된 후보 예측 모션 벡터를 식별하는 데이터를 포함할 수 있다. 비디오 디코더는 PU에 대한 후보 예측 모션 벡터 리스트에서 선택된 후보 예측 모션 벡터에 의해 지시되는 모션 정보에 기초하여 PU의 모션 정보를 결정할 수 있다. 비디오 디코더는 PU의 모션 정보에 기초하여 PU의 하나 이상의 참조 블록을 식별할 수 있다. PU의 하나 이상의 참조 블록을 식별한 후, 비디오 디코더는 PU의 하나 이상의 참조 블록에 기초하여 PU의 예측 픽처 블록을 생성할 수 있다. 비디오 디코더는 CU의 PU의 예측 픽처 블록 및 CU의 하나 이상의 잔여 픽처 블록에 기초하여 CU의 픽처 블록을 재구축할 수 있다.
설명의 편의를 위해, 본 출원에서, 위치 또는 픽처 블록은 CU 또는 PU와 다양한 공간적 관계를 갖는 위치 또는 픽처 블록으로 기술될 수 있다. 설명은 다음과 같이 설명될 수 있다. 위치 또는 픽처 블록은 CU 또는 PU와 연관된 픽처 블록과 다양한 공간적 관계를 갖는다. 또한, 본 출원에서, 현재 비디오 디코더에 의해 디코딩되고 있는 PU는 현재 PU로 지칭될 수 있고, 현재 처리될 픽처 블록으로도 지칭될 수 있다. 본 출원에서, 현재 비디오 디코더에 의해 디코딩되고 있는 CU는 현재 CU로 지칭될 수 있다. 본 출원에서, 현재 디코더에 의해 디코딩되 있는 픽처는 현재 픽처로 지칭될 수 있다. 본 출원은 PU와 CU가 동일한 크기를 갖거나 PU가 CU인 경우에도 적용 가능함이 이해되어야 한다. PU는 설명을 위해 동일하게 사용된다.
전술한 바와 같이, 비디오 인코더(100)는 인터 예측을 통해 CU의 PU의 예측 픽처 블록 및 모션 정보를 생성할 수 있다. 많은 예에서, 주어진 PU의 모션 정보는 하나 이상의 이웃하는 PU(즉, 주어진 PU의 픽처 블록에 공간적으로 또는 시간적으로 인접한 PU)의 모션 정보와 동일하거나 유사할 수 있다. 이웃하는 PU는 종종 유사한 모션 정보를 가지고 있기 때문에, 비디오 인코더(100)는 이웃하는 PU의 모션 정보에 기초하여 주어진 PU의 모션 정보를 인코딩할 수 있다. 이웃하는 PU의 모션 정보에 기초하여 주어진 PU의 모션 정보를 인코딩하는 것은 주어진 PU의 모션 정보를 지시하기 위해 필요한 비트스트림에서 코딩 비트의 양을 줄일 수 있다.
비디오 인코더(100)는 이웃하는 PU의 모션 정보에 기초하여 주어진 PU의 모션 정보를 다양한 방식으로 인코딩할 수 있다. 예를 들어, 비디오 인코더(100)는 주어진 PU의 모션 정보가 이웃하는 PU의 모션 정보와 동일함을 지시할 수 있다. 본 출원에서, 병합 모드는 주어진 PU의 모션 정보가 이웃하는 PU의 모션 정보와 동일하거나 그로부터 도출될 수 있음을 지시하는 데 사용될 수 있다. 다른 실행 가능한 구현에서, 비디오 인코더(100)는 주어진 PU에 대한 모션 벡터 차이(Motion Vector Difference, MVD)를 계산할 수 있다. MVD는 주어진 PU의 모션 벡터와 이웃하는 PU의 모션 벡터 사이의 차이를 지시한다. 비디오 인코더(100)는 주어진 PU의 모션 정보에 주어진 PU의 모션 벡터 대신 MVD를 포함할 수 있다. 비트스트림에서, MVD를 나타내기 위해 필요한 코딩 비트의 양은 주어진 PU의 모션 벡터를 나타내기 위해 필요한 코딩 비트의 양보다 적다. 본 출원에서, 어드밴스트 모션 벡터 예측 모드는 주어진 PU의 모션 정보가 후보 모션 벡터를 식별하기 위해 사용되는 MVD 및 인덱스 값을 사용하여 디코더 측에 시그널링됨을 지시하는 데 사용될 수 있다.
병합 모드 또는 AMVP 모드에 기초하여, 주어진 PU의 모션 정보를 디코더 측으로 시그널링하기 위해, 비디오 인코더(100)는 주어진 PU에 대한 후보 예측 모션 벡터 리스트를 생성할 수 있다. 후보 예측 모션 벡터 리스트는 하나 이상의 후보 예측 모션 벡터를 포함할 수 있다. 주어진 PU에 대한 후보 예측 모션 벡터 리스트 내의 후보 예측 모션 벡터 각각은 모션 정보를 지시할 수 있다. 각각의 후보 예측 모션 벡터에 의해 지시되는 모션 정보는 모션 벡터, 참조 픽처 인덱스 및 예측 방향 지시자를 포함할 수 있다. 후보 예측 모션 벡터 리스트의 후보 예측 모션 벡터는 "원래" 후보 예측 모션 벡터를 포함할 수 있다. 각각의 후보 예측 모션 벡터는 주어진 PU와 다른 PU 내의 위치에서 지정된 후보 예측 모션 벡터 중 하나의 모션 정보를 지시한다.
PU에 대한 후보 예측 모션 벡터 리스트를 생성한 후, 비디오 인코더(100)는 PU에 대해 사용되는 후보 예측 모션 벡터 리스트에서 하나의 후보 예측 모션 벡터를 선택할 수 있다. 예를 들어, 비디오 인코더는 각각의 후보 예측 모션 벡터를 디코딩 중이고 필요한 레이트 왜곡 비용을 갖는 후보 예측 모션 벡터를 선택할 수 있는 PU와 비교할 수 있다. 비디오 인코더(100)는 PU에 대한 후보 예측 모션 벡터 인덱스를 출력할 수 있다. 후보 예측 모션 벡터 인덱스는 후보 예측 모션 벡터 리스트에서 선택된 후보 예측 모션 벡터의 위치를 식별할 수 있다.
또한, 비디오 인코더(100)는 PU의 모션 정보에 의해 지시되는 참조 블록에 기초하여 PU의 예측 픽처 블록을 생성할 수 있다. PU의 모션 정보는 PU에 대한 후보 예측 모션 벡터 리스트에서 선택된 후보 예측 모션 벡터에 의해 지시되는 모션 정보에 기초하여 결정될 수 있다. 예를 들어, 병합 모드에서, PU의 모션 정보는 선택된 후보 예측 모션 벡터에 의해 지시되는 모션 정보와 동일할 수 있다. AMVP 모드에서, PU의 모션 정보는 PU에 대한 모션 벡터 차이와 선택된 후보 예측 모션 벡터에 의해 지시되는 모션 정보에 기초하여 결정될 수 있다. 전술한 바와 같이, 비디오 인코더(100)는 PU의 예측 픽처 블록을 처리할 수 있다.
비디오 디코더(200)가 비트스트림을 수신하는 경우, 비디오 디코더(200)는 CU의 각각의 PU에 대한 후보 예측 모션 벡터 리스트를 생성할 수 있다. PU에 대해 비디오 디코더(200)에 의해 생성된 후보 예측 모션 벡터 리스트는 PU에 대해 비디오 인코더(100)에 의해 생성된 후보 예측 모션 벡터 리스트와 동일할 수 있다. 비트스트림을 파싱함으로써 획득되는 신택스 요소는 PU에 대한 후보 예측 모션 벡터리스트에서 선택된 후보 예측 모션 벡터의 위치를 지시할 수 있다. PU에 대한 후보 예측 모션 벡터 리스트를 생성한 후, 비디오 디코더(200)는 PU의 모션 정보에 의해 지시되는 하나 이상의 참조 블록에 기초하여 PU의 예측 픽처 블록을 생성할 수 있다. 비디오 디코더(200)는 PU에 대한 후보 예측 모션 벡터 리스트에서 선택된 후보 예측 모션 벡터에 의해 지시되는 모션 정보에 기초하여 PU의 모션 정보를 결정할 수 있다. 비디오 디코더(200)는 PU의 예측 픽처 블록 및 CU의 잔여 픽처 블록에 기초하여 CU의 픽처 블록을 재구축할 수 있다.
실행 가능한 구현에서, 디코더 측에서, 후보 예측 모션 벡터 리스트를 구축하고 후보 예측 모션 벡터 리스트에서 선택된 후보 예측 모션 벡터의 위치를 획득하기 위해 비트스트림을 파싱하는 것은 서로 독립적이고 다른 순서로 또는 병렬로 수행될 수 있음이 이해되어야 한다.
다른 실행 가능한 구현에서, 디코더 측에서, 후보 예측 모션 벡터 리스트에서 선택된 후보 예측 모션 벡터의 위치는 먼저 비트스트림을 파싱함으로써 획득된 다음, 후보 예측 모션 벡터 리스트는 파싱을 통해 획득된 위치에 기초하여 구축된다. 이러한 구현에서, 모든 후보 예측 모션 벡터 리스트를 구축할 필요는 없으며, 위치에 있는 후보 예측 모션 벡터가 결정될 수 있는 경우, 구체적으로는, 파싱을 통해 획득되는 위치의 후보 예측 모션 벡터 리스트만이 구축되어야 한다. 예를 들어, 비트스트림을 파싱함으로써, 선택된 후보 예측 모션 벡터가 후보 예측 모션 벡터 리스트에서 인덱스가 3인 후보 예측 모션 벡터인 것으로 획득되는 경우, 인덱스가 0인 후보 예측 모션 벡터 내지 인덱스가 0인 후보 예측 모션 벡터를 포함하는 후보 예측 모션 벡터 리스트만이 구축되어야 하고, 인덱스가 3인 후보 예측 모션 벡터가 결정될 수 있다. 이는 복잡성을 줄이고 디코딩 효율성을 향상시킬 수 있다.
도 2는 본 출원의 실시예에 따른 비디오 인코더(100)의 예의 블록도이다. 비디오 인코더(100)는 비디오를 후처리 엔티티(41)로 출력하도록 구성된다. 후처리 엔티티(41)는 비디오 인코더(100)로부터 인코딩된 비디오 데이터를 처리할 수 있는 비디오 엔티티의 예를 나타낸다. 예를 들어, 비디오 엔티티는 매체 인식 네트워크 요소(media aware network element, MANE) 또는 스플라이싱 장치/편집 장치이다. 일부 경우에, 후처리 엔티티(41)는 네트워크 엔티티의 예일 수 있다. 일부 비디오 코딩 시스템에서, 후처리 엔티티(41) 및 비디오 인코더(100)는 개별 장치의 컴포넌트일 수 있다. 다른 경우에, 후처리 엔티티(41)의 기능은 비디오 인코더(100)를 포함하는 동일한 장치에 의해 수행될 수 있다. 예에서, 후처리 엔티티(41)는 도 1에서의 저장 장치(40)의 예이다.
도 2의 예에서, 비디오 인코더(100)는 예측 처리 유닛(108), 필터 유닛(106), 디코딩된 픽처 버퍼(decoded picture buffer, DPB)(107), 가산기(112), 변환기(101), 양자화기(102) 및 엔트로피 인코더(103)를 포함한다. 예측 처리 유닛(108)은 인터 예측기(110) 및 인트라 예측기(109)를 포함한다. 픽처 블록을 재구축하기 위해, 비디오 인코더(100)는 역양자화기(104), 역변환기(105) 및 가산 기(111)를 더 포함한다. 필터 유닛(106)은 하나 이상의 루프 필터, 예를 들어, 디블로킹 필터, 적응 루프 필터(adaptive loop filter, ALF) 및 샘플 적응 오프셋(sample adaptive offset, SAO) 필터를 나타내도록 의도된다. 필터 유닛(106)이도 2에서 인루프(in-loop) 필터로서 도시되어 있지만, 다른 구현에서, 필터 유닛(106)은 포스트 루프(post-loop) 필터로서 구현될 수 있다. 예에서, 비디오 인코더(100)는 비디오 데이터 메모리 및 분할 유닛(도면에 도시되지 않음)을 더 포함할 수 있다.
비디오 데이터 메모리는 비디오 인코더(100)의 컴포넌트에 의해 인코딩될 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리에 저장된 비디오 데이터는 비디오 소스(120)로부터 획득될 수 있다. DPB(107)는 인트라 코딩 모드 또는 인터 코딩 모드에서 비디오 데이터를 인코딩하기 위해 비디오 인코더(100)에 의해 사용되는 참조 비디오 데이터를 저장하는 참조 픽처 메모리일 수 있다. 비디오 데이터 메모리 및 DPB(107)는 복수 유형의 메모리 장치, 예를 들어, 동기식 동적 랜덤 액세스 메모리(synchronous dynamic random access memory, SDRAM)를 포함하는 동적 랜덤 액세스 메모리(DRAM), 자기 RAM(magnetic random access memory, MRAM), 저항성 RAM(resistive random access memory, RRAM) 또는 다른 유형의 메모리 장치 중. 어느 하나를 포함할 수 있다. 비디오 데이터 메모리와 DPB(107)는 동일한 메모리 장치 또는 별개의 메모리 장치에 의해 제공될 수 있다. 다양한 예에서, 비디오 데이터 메모리는 비디오 인코더(100)의 다른 컴포넌트와 함께 칩 상에 통합될 수 있거나, 또는 이들 컴포넌트에 대해 칩 외부에 배치될 수 있다.
도 2에 도시된 바와 같이, 비디오 인코더(100)는 비디오 데이터를 수신하고, 비디오 데이터 메모리에 비디오 데이터를 저장한다. 분할 유닛은 비디오 데이터를 여러 픽처 블록으로 분할하고, 이들 픽처 블록을 더 작은 블록으로 더 분할할 수 있으며, 예를 들어 쿼드 트리 구조 또는 이진 트리 구조에 기초하여 이들 픽처 블록을 분할할 수 있다. 분할은 슬라이스(slice), 타일(tile) 또는 다른 더 큰 유닛으로 분할하는 것을 더 포함할 수 있다. 비디오 인코더(100)는 일반적으로 인코딩될 비디오 슬라이스의 픽처 블록을 인코딩하는 컴포넌트이다. 슬라이스는 복수의 픽처 블록으로 분할될 수 있다(그리고 타일로서 지칭되는 픽처 블록 세트로 분할될 수 있다). 예측 처리 유닛(108)은 현재 픽처 블록에 사용되는 복수의 가능한 코딩 모드 중 하나를 선택할 수 있으며, 예를 들어, 복수의 인트라 코딩 모드 중 하나 또는 복수의 인터 코딩 모드 중 하나를 선택할 수 있다. 예측 처리 유닛(108)은 잔여 블록을 생성하기 위해 가산기(112)에 대해 획득된 인트라 코딩된 또는 인터 코딩된 블록을 제공할 수 있고, 참조 픽처로서 사용되는 인코딩된 블록을 재구축하기 위해 가산기(111)에 대해 획득된 인트라 코딩된 또는 인터 코딩된 블록을 제공할 수 있다.
예측 처리 유닛(108)의 인트라 예측기(109)는 공간적 중복성을 제거하기 위해 현재 픽처 블록과 동일한 프레임 또는 슬라이스에 있는 하나 이상의 이웃하는 블록에 대해 인코딩될 현재 블록에 대한 인트라 예측 인코딩을 수행할 수 있다. 예측 처리 유닛(108)의 인터 예측기(110)는 시간적 중복성을 제거하기 위해 하나 이상의 참조 픽처 내의 하나 이상의 예측 블록에 대해 현재 픽처 블록에 대한 인터 예측 인코딩을 수행할 수 있다.
구체적으로, 인터 예측기(110)는 현재 픽처 블록을 인코딩하는 데 사용되는 인터 예측 모드를 결정하도록 구성될 수 있다. 예를 들어, 인터 예측기(110)는 레이트 왜곡 분석을 통해 후보 인터 예측 모드 세트에서 다양한 인터 예측 모드에 대한 레이트 왜곡 값을 계산하고, 후보 인터 예측 모드 세트로부터 최적의 레이트 왜곡 특징을 갖는 인터 예측 모드를 선택할 수 있다. 레이트 왜곡 분석은 일반적으로 인코딩된 블록과 인코딩을 통해 인코딩된 블록이 생성되는 원래의 인코딩되지 않은 블록 사이의 왜곡(또는 오차) 양과 인코딩된 블록을 생성하는 데 사용되는 비트 레이트(즉, 비트의 개수)를 결정하는 데 사용된다. 예를 들어, 인터 예측기(110)는 최소 비트 레이트 왜곡 비용으로 현재 픽처 블록을 인코딩하는 데 사용되는 후보 인터 예측 모드 세트에서 인터 예측 모드가 현재 픽처 블록에 대한 인터 예측을 수행하는 데 사용되는 인터 예측 모드임을 결정할 수 있다.
인터 예측기(110)는 결정된 인터 예측 모드에 기초하여 현재 픽처 블록의 하나 이상의 서브 블록의 모션 정보(예를 들어, 모션 벡터)를 예측하고, 현재 픽처 블록의 하나 이상의 서브 블록의 모션 정보(예를 들어, 모션 벡터)에 기초하여 현재 픽처 블록의 예측 블록을 획득하거나 생성하도록 구성된다. 인터 예측기(110)는 참조 픽처 리스트 중 하나에서 모션 벡터가 가리키는 예측 블록을 찾을 수 있다. 인터 예측기(110)는 비디오 디코더(200)가 비디오 슬라이스의 픽처 블록을 디코딩하기 위해 신택스 요소를 사용할 수 있도록 픽처 블록 및 비디오 슬라이스와 연관된 신택스 요소를 더 생성할 수 있다. 다르게는, 예에서, 인터 예측기(110)는 각각의 서브 블록의 예측 블록을 생성하고, 현재 픽처 블록의 예측 블록을 획득하기 위해 각각의 서브 블록의 모션 정보에 기초하여 모션 보상 처리를 수행한다. 여기에서 인터 예측기(110)가 모션 추정 프로세스 및 모션 보상 프로세스를 수행함이 이해되어야 한다.
구체적으로, 현재 픽처 블록에 대한 인터 예측 모드를 선택한 후, 엔트로피 인코더(103)가 선택된 인터 예측 모드를 지시하는 정보를 인코딩할 수 있도록 인터 예측기(110)는 현재 픽처 블록에 대해 선택된 인터 예측 모드를 지시하는 정보를 엔트로피 인코더(103)에게 제공할 수 있다.
인트라 예측기(109)는 현재 픽처 블록에 대해 인트라 예측을 수행할 수 있다. 인트라 예측기(109)가 현재 블록을 인코딩하는 데 사용되는 인트라 예측 모드를 결정할 수 있다는 것은 명백하다. 예를 들어, 인트라 예측기(109)는 레이트 왜곡 분석을 통해 테스트될 다양한 인트라 예측 모드에 대한 레이트 왜곡 값을 계산하고, 테스트될 모드 중에서 최적의 레이트 왜곡 특징을 갖는 인트라 예측 모드를 선택할 수 있다. 어떤 경우든, 픽처 블록에 대한 인트라 예측 모드를 선택한 후, 엔트로피 인코더(103)가 선택된 인트라 예측 모드를 지시하는 정보를 인코딩할 수 있도록 인트라 예측기(109)는 현재 픽처 블록에 대해 선택된 인트라 예측 모드를 지시하는 정보를 엔트로피 인코더(103)에게 제공할 수 있다.
예측 처리 유닛(108)이 인터 예측 및 인트라 예측을 통해 현재 픽처 블록의 예측 블록을 생성한 후, 비디오 인코더(100)는 인코딩될 현재 픽처 블록에서 예측 블록을 감산함으로써 잔여 픽처 블록을 획득한다. 가산기(112)는 감산 연산을 수행하는 하나 이상의 컴포넌트를 나타낸다. 잔여 블록의 잔여 비디오 데이터는 하나 이상의 TU에 포함될 수 있으며, 변환기(101)에 적용된다. 변환기(101)는 이산 코사인 변환(DCT) 같은 변환 또는 개념적으로 유사한 변환을 통해 잔여 비디오 데이터를 잔여 변환 계수로 변환한다. 변환기(101)는 잔여 비디오 데이터를 픽셀 값 도메인에서 변환 도메인, 예를 들어 주파수 도메인으로 변환할 수 있다.
변환기(101)는 획득된 변환 계수를 양자화기(102)로 전송할 수 있다. 양자화기(102)는 비트 레이트를 더 감소시키기 위해 변환 계수를 양자화한다. 일부 예에서, 양자화기(102)는 양자화된 변환 계수를 포함하는 매트릭스를 추가로 스캐닝할 수 있다. 다르게는, 엔트로피 인코더(103)는 스캐닝을 수행할 수 있다.
양자화 후, 엔트로피 인코더(103)는 양자화된 변환 계수에 대해 엔트로피 인코딩을 수행한다. 예를 들어, 엔트로피 인코더(103)는 컨텍스트 적응 가변 길이 코딩(CAVLC), 컨텍스트 적응 이진 산술 코딩(CABAC), 신택스 기반 컨택스트 적응 이진 산술 코딩(SBAC), 확률 간격 분할 엔트로피(PIPE) 코딩, 또는 다른 엔트로피 코딩 방법 또는 기술을 수행할 수 있다. 엔트로피 인코딩을 수행한 후, 엔트로피 인코더(103)는 인코딩된 비트스트림을 비디오 디코더(200)로 전송하거나, 후속 전송을 위해 또는 비디오 디코더(200)에 의한 후속 검색을 위해 인코딩된 비트스트림을 아카이브할 수 있다. 엔트로피 인코더(103)는 인코딩될 현재 픽처 블록의 신택스 요소에 대해 엔트로피 인코딩을 더 수행할 수 있다.
역양자화기(104) 및 역변환기(105)는 각각 예를 들어 참조 픽처의 참조 블록으로서 추후 사용될 픽셀 도메인에서 잔여 블록을 재구축하기 위해 역양자화 및 역변환을 수행한다. 가산기(111)는 재구축된 픽처 블록을 생성하기 위해 인터 예측기(110) 또는 인트라 예측기(109)에 의해 생성된 예측 블록에 재구축된 잔여 블록을 더한다. 필터 유닛(106)은 왜곡, 예를 들어 블록 아티팩트(block artifact)를 줄이기 위해 재구축된 픽처 블록에 적용 가능하다. 그 후, 재구축된 픽처 블록은 참조 블록으로 사용되며 디코딩된 픽처 버퍼(107)에 저장되고, 인터 예측기(110)에 의해 후속 비디오 프레임 또는 픽처의 블록에 대한 인터 예측을 수행하기 위한 참조 블록으로서 사용된다.
비디오 인코더(100)의 다른 구조적 변형이 비디오 스트림을 인코딩하는 데 사용될 수 있다는 것을 이해해야 한다. 예를 들어, 일부 픽처 블록 또는 픽처 프레임의 경우, 비디오 인코더(100)는 잔여 신호를 직접 양자화할 수 있으며, 변환기(101)에 의한 처리는 필요하지 않으며, 이에 상응하여, 역변환기(105)에 의한 처리도 필요하지 않다. 다르게는, 일부 픽처 블록 또는 픽처 프레임에 대해, 비디오 인코더(100)는 잔여 데이터를 생성하지 않으며, 이에 상응하여, 변환기(101), 양자화기(102), 역양자화기(104) 및 역변환기(105)에 의한 처리가 필요하지 않다. 다르게는, 비디오 인코더(100)는 재구축된 픽처 블록을 참조 블록으로 직접 저장할 수 있으며, 필터 유닛(106)에 의한 처리는 필요하지 않다. 다르게는, 비디오 인코더(100)의 양자화기(102) 및 역양자화기(104)는 결합될 수 있다.
도 3은 본 출원의 실시예에 따른 비디오 디코더(200)의 예의 블록도이다. 도 3의 예에서, 비디오 디코더(200)는 엔트로피 디코더(203), 예측 처리 유닛(208), 역양자화기(204), 역변환기(205), 가산기(211), 필터 유닛(206) 및 DPB(207)를 포함한다. 예측 처리 유닛(208)은 인터 예측기(210) 및 인트라 예측기(209)를 포함할 수 있다. 일부 예에서, 비디오 디코더(200)는 도 2에서의 비디오 인코더(100)를 참조하여 설명된 인코딩 프로세스에 대략 역인 디코딩 프로세스를 수행할 수 있다.
디코딩 동안, 비디오 디코더(200)는 비디오 인코더(100)로부터 인코딩된 비디오 슬라이스 및 연관된 신택스 요소의 픽처 블록을 나타내는 인코딩된 비디오 비트스트림을 수신한다. 비디오 디코더(200)는 네트워크 엔티티(42)로부터 비디오 데이터를 수신할 수 있고, 선택적으로 비디오 데이터를 비디오 데이터 메모리(도면에 도시되지 않음)에 추가로 저장할 수 있다. 비디오 데이터 메모리는 비디오 디코더(200)의 컴포넌트에 의해 디코딩될 비디오 데이터, 예를 들어 인코딩된 비디오 비트스트림을 저장할 수 있다. 비디오 데이터 메모리에 저장된 비디오 데이터는 예를 들어 비디오 데이터의 유선 또는 무선 네트워크 통신을 통하거나 또는 물리 데이터 저장 매체를 액세스함으로써 저장 장치(40) 또는 카메라와 같은 로컬 비디오 소스로부터 획득될 수 있다. 비디오 데이터 메모리는 인코딩된 비디오 비트스트림으로부터 인코딩된 비디오 데이터를 저장하기 위한 디코딩된 픽처 버퍼(CPB)로 사용될 수 있다. 따라서, 비디오 데이터 메모리가 도 3에 도시되지 않았지만, 비디오 데이터 메모리 및 DPB(207)는 동일한 메모리일 수 있거나, 또는 별개로 배치된 메모리일 수 있다. 비디오 데이터 메모리 및 DPB(207)는 각각 복수 유형의 메모리 장치, 예를 들어, 동기식 DRAM(SDRAM)을 포함하는 동적 랜덤 액세스 메모리(DRAM), 자기 RAM(MRAM), 저항성 RAM(RRAM) 또는 다른 유형의 메모리 장치 중 어느 하나를 포함할 수 있다. 다양한 예에서, 비디오 데이터 메모리는 비디오 디코더(200)의 다른 컴포넌트와 함께 칩 상에 통합될 수 있거나, 또는 이들 컴포넌트에 대해 칩 외부에 배치될 수 있다.
네트워크 엔티티(42)는 예를 들어 서버, MANE, 비디오 편집기/스플라이서, 또는 위에서 설명된 기술 중 하나 이상을 구현하도록 구성된 다른 장치일 수 있다. 네트워크 엔티티(42)는 비디오 인코더, 예를 들어 비디오 인코더(100)를 포함하거나 포함하지 않을 수 있다. 네트워크 엔티티(42)가 인코딩된 비디오 비트스트림을 비디오 디코더(200)로 전송하기 전에, 네트워크 엔티티(42)는 본 출원에서 설명된 기술의 일부를 구현할 수 있다. 일부 비디오 디코딩 시스템에서, 네트워크 엔티티(42) 및 비디오 디코더(200)는 개별 장치의 컴포넌트일 수 있다. 다른 경우에, 네트워크 엔티티(42)의 기능은 비디오 디코더(200)를 포함하는 동일한 장치에 의해 수행될 수 있다. 일부 경우에, 네트워크 엔티티(42)는 도 1에서의 저장 장치(40)의 예일 수 있다.
비디오 디코더(200)의 엔트로피 디코더(203)는 양자화된 계수 및 일부 신택스 요소를 생성하기 위해 비트스트림에 대해 엔트로피 디코딩을 수행한다. 엔트로피 디코더(203)는 신택스 요소를 예측 처리 유닛(208)에게 전달한다. 비디오 디코더(200)는 비디오 슬라이스 레벨 및/또는 픽처 블록 레벨에서 신택스 요소를 수신할 수 있다.
비디오 슬라이스가 인트라 디코딩된(I) 슬라이스로 디코딩되는 경우, 예측 처리 유닛(208)의 인트라 예측기(209)는 시그널링된 인트라 예측 모드 및 현재 프레임 또는 픽처의 이전에 디코딩된 블록의 데이터에 기초하여 현재 비디오 슬라이스의 픽처 블록의 예측 블록을 생성할 수 있다. 비디오 슬라이스가 인터 디코딩된(즉, B 또는 P) 슬라이스로 디코딩되는 경우, 예측 처리 유닛(208)의 인터 예측기(210)는 엔트로피 디코더(203)로부터 수신된 신택스 요소에 기초하여 현재 비디오 슬라이스의 현재 픽처 블록을 디코딩하는 데 사용되는 인터 예측 모드를 결정할 수 있고 결정된 인터 예측 모드에 기초하여 현재 픽처 블록을 디코딩(예를 들어, 인터 예측을 수행)할 수 있다. 구체적으로, 인터 예측기(210)는 새로운 인터 예측 모드가 현재 비디오 슬라이스의 현재 픽처 블록을 예측하는 데 사용되는지 여부를 결정할 수 있다. 신택스 요소가 새로운 인터 예측 모드가 현재 픽처 블록을 예측하는 데 사용됨을 지시하는 경우, 현재 비디오 슬라이스의 현재 픽처 블록의 모션 정보 또는 현재 픽처 블록의 서브 블록의 모션 정보는 새로운 인터 예측 모드(예를 들어, 신택스 요소 또는 디폴트 새로운 인터 예측 모드를 사용하여 지정된 새로운 인터 예측 모드)에 기초하여 예측되고 현재 픽처 블록의 예측 블록 또는 현재 픽처 블록의 서브 블록의 예측 블록이 현재 픽처 블록 또는 현재 픽처 블록의 서브 블록의 것이자 또한 예측되는 모션 정보를 사용하여 모션 보상 프로세스에서 획득되거나 또는 생성된다. 여기서, 모션 정보는 참조 영상 정보와 모션 벡터를 포함할 수 있다. 참조 픽처 정보는 단일 예측/양방향 예측 정보, 참조 픽처 리스트 번호 및 참조 픽처 리스트에 대응하는 참조 픽처 인덱스를 포함할 수 있으나 이에 제한되지는 않는다. 인터 예측의 경우, 예측 블록은 참조 픽처 리스트 중 하나의 참조 픽처 중 하나로부터 생성될 수 있다. 비디오 디코더(200)는 DPB(207)에 저장된 참조 픽처에 기초하여 참조 픽처 리스트, 즉 리스트 0과 리스트 1을 구축할 수 있다. 현재 픽처의 참조 프레임 인덱스는 참조 프레임 리스트 0 및 참조 프레임 리스트 1 중 하나 또는 모두에 포함될 수 있다. 일부 예에서, 비디오 인코더(100)는 특정 블록의 특정 신택스 요소를 디코딩하는 데 새로운 인터 예측 모드가 사용되는지 여부를 시그널링하거나, 또는 새로운 인터 예측 모드가 사용되는지 여부 및 어떤 새로운 예측 모드가 특정 블록의 특정 신택스 요소를 디코딩하는 데 사용되는지를 시그널링할 수 있다. 여기서, 인터 예측기(210)가 모션 보상 프로세스를 수행한다는 것이 이해되어야 한다.
역양자화기(204)는 비트스트림에서 제공되고 엔트로피 디코더(203)에 의해 디코딩된 양자화된 변환 계수에 대한 역양자화를 수행한다. 즉, 역양자화한다. 역양자화 프로세스는, 비디오 슬라이스의 각각의 픽처 블록에 대해 비디오 인코더(100)에 의해 계산된 양자화 파라미터를 사용하여 적용될 양자화 정도를 결정하는 것과 동일한 방식으로 적용될 역양자화 정도를 결정하는 것을 포함할 수 있다. 역변환기(205)는 픽셀 도메인 잔여 블록을 생성하기 위해 변환 계수에 대해 역변환, 예를 들어 역 DCT, 역 정수 변환 또는 개념적으로 유사한 역변환 프로세스를 수행한다.
인터 예측기(210)가 현재 픽처 블록 또는 현재 픽처 블록의 서브 블록에 대한 예측 블록을 생성한 후, 재구축된 블록, 즉 디코딩된 픽처 블록을 획득하기 위해 비디오 디코더(200)는 역변환기(205)로부터의 잔여 블록과 인터 예측기(210)에 의해 생성된 대응하는 예측 블록을 더한다. 가산기(211)는 가산 작동을 수행하는 컴포넌트를 나타낸다. 필요한 경우, 루프 필터(디코딩 루프에서 또는 디코딩 루프 후에)는 픽셀 전환을 부드럽게 하거나 또는 다른 방식으로 비디오 품질을 향상시키는 데 추가로 사용될 수 있다. 필터 유닛(206)은 하나 이상의 루프 필터, 예를 들어 디블로킹 필터, 적응 루프 필터(ALF) 및 샘플 적응 오프셋(SAO) 필터를 나타낼 수 있다. 필터 유닛(206)이 도 2b에서 인 루프 필터로 도시되어 있지만, 다른 구현에서, 필터 유닛(206)은 포스트 루프 필터로서 구현될 수 있다. 예에서, 필터 유닛(206)은 블록 왜곡을 줄이기 위해 재구축된 블록에 적용될 수 있으며, 그 결과는 디코딩된 비디오 스트림으로서 출력된다. 또한, 주어진 프레임 또는 픽처에서 디코딩된 픽처 블록은 DPB(207)에 더 저장될 수 있고, DPB(207)는 후속 모션 보상을 위해 사용되는 참조 픽처를 저장한다. DPB(207)는 메모리의 일부일 수 있으며, 디스플레이 장치(예를 들어, 도 1에서의 디스플레이 장치(220)) 상의 후속 표현을 위해 디코딩된 비디오를 더 저장할 수 있다. 다르게는, DPB(207)는 그러한 메모리로부터 분리될 수 있다.
비디오 디코더(200)의 다른 구조적 변형이 인코딩된 비디오 비트스트림을 디코딩하는 데 사용될 수 있다는 것이 이해되어야 한다. 예를 들어, 비디오 디코더(200)는 출력 비디오 스트림을 생성할 수 있으며, 필터 유닛(206)에 의한 처리는 필요하지 않다. 다르게는, 일부 픽처 블록 또는 픽처 프레임의 경우, 비디오 디코더(200)의 엔트로피 디코더(203)는 디코딩을 통해 양자화된 계수를 획득하지 못하며, 이에 상응하여 역양자화기(204) 및 역변환기(205)에 의한 처리가 필요하지 않다.
전술한 바와 같이, 본 출원의 기술은 예를 들어 인터 디코딩에 관한 것이다. 본 출원의 기술은 본 출원에서 설명된 임의의 하나의 비디오 코덱에 의해 수행될 수 있고, 비디오 디코더는 (예를 들어) 도 1 내지 도 3에서 도시되고 설명된 비디오 인코더(100) 및 비디오 디코더(200)를 포함한다는 것이 이해되어야 한다. 구체적으로, 실행 가능한 구현에서, 도 2에서 설명된 인터 예측기(110)는 비디오 데이터 블록의 인코딩 동안 인터 예측이 수행되는 경우 아래에서 설명되는 특정 기술을 수행할 수 있다. 다른 실행 가능한 구현에서, 도 3에서 설명된 인터 예측기(210)는 비디오 데이터의 블록을 디코딩 동안 인터 예측이 수행되는 경우 아래에서 설명되는 특정 기술을 수행할 수 있다. 따라서, 일반적인 "비디오 인코더" 또는 "비디오 디코더"에 대한 언급은 비디오 인코더(100), 비디오 디코더(200) 또는 다른 비디오 인코딩 유닛 또는 인코딩 유닛을 포함할 수 있다.
본 출원에서의 인코더(100) 및 디코더(200)에서, 단계의 처리 결과는 추가로 처리된 후 다음 단계로 출력될 수 있음이 이해되어야 한다. 예를 들어, 보간 필터링, 모션 벡터 도출 또는 루프 필터링과 같은 단계 후에, 클립 또는 쉬프트와 같은 추가 작동이 대응하는 단계의 처리 결과에 대해 수행된다.
예를 들어, 모션 벡터의 값은 특정 비트 깊이 범위 내에 있도록 제한된다. 모션 벡터의 허용된 비트 깊이가 bitDepth라고 가정하면, 모션 벡터의 값은 -2^(bitDepth - 1) 내지 2^(bitDepth - 1) - 1이며, 여기서 기호 "^"는 지수를 나타낸다. bitDepth가 16이면, 값은 -32768 내지 32767이다. bitDepth가 18이면, 값은 -131072 내지 131071이다. 모션 벡터의 값은 다음의 두 가지 방식 중 하나로 제한될 수 있다.
방식 1 : 모션 벡터의 오버플로 최상위 비트가 제거된다.
예를 들어, vx의 값은 -32769이고, 32767은 전술한 수학식에 따라 도출된다. 값은 2의 보수 표현으로 컴퓨터에 저장되고, -32769의 2의 보수 표현은 1,0111,1111,1111,1111 (17 비트)이며, 오버플로를 위해 컴퓨터가 수행되는 처리는 최상위 비트를 폐기하는 것이다. 따라서, vx의 값은 0111,1111,1111,1111, 즉 32767이다. 이러한 값은 수학식에 따른 처리를 통해 도출된 결과와 일치한다.
방식 2 : 모션 벡터에 대해 클리핑이 수행되며, 다음의 수학식이 사용된다.
전술한 수학식에서, Clip3은 z의 값을 [x, y] 범위로 클리핑하는 것으로 정의된다.
도 4는 본 출원의 실시예에 따른 인터 예측 모듈(121)의 개략적인 블록도이다. 예를 들어, 인터 예측 모듈(121)은 모션 추정 유닛 및 모션 보상 유닛을 포함할 수 있다. PU와 CU 사이의 관계는 비디오 압축 코딩 표준에 따라 다르다. 인터 예측 모듈(121)은 복수의 분할 모드에 기초하여 현재 CU를 PU로 분할할 수 있다. 예를 들어, 인터 예측 모듈(121)은 2N × 2N, 2N × N, N × 2N 및 N × N 분할 모드에 기초하여 현재 CU를 PU로 분할할 수 있다. 다른 실시예에서, 현재 CU는 현재 PU이다. 이것은 제한되지 않는다.
인터 예측 모듈(121)은 각각의 PU에 대해 정수 모션 추정(Integer Motion Estimation, IME)을 수행한 후 프랙션 모션 추정(Fraction Motion Estimation, FME)을 수행할 수 있다. 인터 예측 모듈(121)이 PU에 대해 IME를 수행하는 경우, 인터 예측 모듈(121)은 PU의 참조 블록에 대해 하나 이상의 참조 픽처를 검색할 수 있다. PU의 참조 블록을 찾은 후, 인터 예측 모듈(121)은 PU와 PU의 참조 블록 사이의 공간 변위를 정수 정밀도로 지시하는 모션 벡터를 생성할 수 있다. 인터 예측 모듈(121)이 PU에 대해 FME를 수행하는 경우, 인터 예측 모듈(121)은 PU에 대해 IME를 수행하여 생성된 모션 벡터를 개선할 수 있다. PU에 대해 FME를 수행하여 생성된 모션 벡터는 하위 정수 정밀도(예를 들어, 1/2 샘플 정밀도 또는 1/4 샘플 정밀도)를 가질 수 있다. PU에 대한 모션 벡터를 생성한 후, 인터 예측 모듈(121)은 PU의 모션 벡터를 사용하여 PU의 예측 픽처 블록을 생성할 수 있다.
인터 예측 모듈(121)이 AMVP 모드에 기초하여 디코더 측에 PU의 모션 정보를 시그널링하는 일부 실행 가능한 구현에서, 인터 예측 모듈(121)은 PU에 대한 후보 예측 모션 벡터 리스트를 생성할 수 있다. 후보 예측 모션 벡터 리스트는 하나 이상의 원래 후보 예측 모션 벡터 및 하나 이상의 원래 후보 예측 모션 벡터로부터 도출된 하나 이상의 추가 후보 예측 모션 벡터를 포함할 수 있다. PU에 대한 후보 예측 모션 벡터 리스트를 생성한 후, 인터 예측 모듈(121)은 후보 예측 모션 벡터 리스트에서 후보 예측 모션 벡터를 선택하고 PU에 대한 모션 벡터 차이(MVD)를 생성할 수 있다. PU에 대한 MVD는 선택된 후보 예측 모션 벡터에 의해 지시되는 모션 벡터와 IME 및 FME를 통해 PU에 대해 생성된 모션 벡터 사이의 차이를 지시할 수 있다. 이들 실행 가능한 구현에서, 인터 예측 모듈(121)은 후보 예측 모션 벡터 리스트에서 선택된 후보 예측 모션 벡터의 위치를 식별하는 데 사용되는 후보 예측 모션 벡터 인덱스를 출력할 수 있다. 인터 예측 모듈(121)은 PU에 대한 MVD를 더 출력할 수 있다. 이하, 본 출원의 본 실시예에서 도 6에서의 어드밴스트 모션 벡터 예측(AMVP) 모드의 실행 가능한 구현에 대해 상세하게 설명한다.
PU의 모션 정보를 생성하기 위해 PU에 대해 IME 및 FME를 수행하는 것 외에도, 인터 예측 모듈(121)은 각각의 PU에 대해 병합(Merge) 작동을 더 수행할 수 있다. 인터 예측 모듈(121)이 PU에 대해 병합 작동을 수행하는 경우, 인터 예측 모듈(121)은 PU에 대한 후보 예측 모션 벡터 리스트를 생성할 수 있다. PU에 대한 후보 예측 모션 벡터 리스트는 하나 이상의 원래 후보 예측 모션 벡터 및 하나 이상의 원래 후보 예측 모션 벡터로부터 도출된 하나 이상의 추가 후보 예측 모션 벡터를 포함할 수 있다. 후보 예측 모션 벡터 리스트의 원래 후보 예측 모션 벡터는 하나 이상의 공간적 후보 예측 모션 벡터 및 시간적 후보 예측 모션 벡터를 포함할 수 있다. 공간적 후보 예측 모션 벡터는 현재 픽처의 다른 PU의 모션 정보를 지시할 수 있다. 시간적 후보 예측 모션 벡터는 현재 픽처와 다른 픽처의 대응하는 PU의 모션 정보에 기초할 수 있다. 시간적 후보 예측 모션 벡터는 시간적 모션 벡터 예측(temporal motion vector prediction, TMVP)으로서도 지칭될 수 있다.
후보 예측 모션 벡터 리스트를 생성한 후, 인터 예측 모듈(121)은 후보 예측 모션 벡터 리스트에서 하나의 후보 예측 모션 벡터를 선택할 수 있다. 이후, 인터 예측 모듈(121)은 PU의 모션 정보에 의해 지시되는 참조 블록에 기초하여 PU의 예측 픽처 블록을 생성할 수 있다. 병합 모드에서, PU의 모션 정보는 선택된 후보 예측 모션 벡터에 의해 지시되는 모션 정보와 동일할 수 있다. 이하에서 설명되는 도 5는 병합 모드의 예의 흐름도이다.
IME 및 FME를 통해 PU의 예측 픽처 블록을 생성하고 병합 작동을 통해 PU의 예측 픽처 블록을 생성한 후, 인터 예측 모듈(121)은 FME 작동을 통해 생성된 예측 픽처 블록 또는 병합 작동을 통해 생성된 예측 픽처 블록을 선택할 수 있다. 일부 실행 가능한 구현에서, 인터 예측 모듈(121)은 FME 작동을 통해 생성된 예측 픽처 블록과 병합 작동을 통해 생성된 예측 픽처 블록의 레이트 왜곡 비용을 분석함으로써 PU의 예측 픽처 블록을 선택할 수 있다.
인터 예측 모듈(121)이 각각의 분할 모드에 기초하여 현재 CU를 분할함으로써 생성된 PU의 예측 픽처 블록을 선택한 후(일부 구현에서, 코딩 트리 유닛(CTU)이 CU로 분할된 후, CU는 더 작은 PU로 더 분할되지 않으며, 이 경우, PU는 CU와 동일함), 인터 예측 모듈(121)은 현재 CU에 대한 분할 모드를 선택할 수 있다. 일부 구현에서, 인터 예측 모듈(121)은 각각의 분할 모드에 기초하여 현재 CU를 분할함으로써 생성된 PU의 선택된 예측 픽처 블록의 레이트 왜곡 비용을 분석함으로써 현재 CU에 대한 분할 모드를 선택할 수 있다. 인터 예측 모듈(121)은 선택된 분할 모드에 속하는 PU와 연관 예측 픽처 블록을 잔여 생성 모듈(102)로 출력할 수 있다. 인터 예측 모듈(121)은 선택된 분할 모드에 속하는 PU의 모션 정보를 지시하는 신택스 요소를 엔트로피 인코딩 모듈로 출력할 수 있다.
도 4의 개략도에서, 인터 예측 모듈(121)은 IME 모듈(180A 내지 180N)(총칭하여 "IME 모듈(180)"로 지칭됨), FME 모듈(182A 내지 182N)(총칭하여 "FME 모듈(182)"로 지칭됨), 병합 모듈(184A 내지 184N)(총칭하여 "병합 모듈(184)"로 지칭됨), PU 모드 의사 결정 모듈(186A 내지 186N)(총칭하여 "PU 모드 의사 결정 모듈(186)"로 지칭됨) 및 CU 모드 의사 결정 모듈(188)을 포함한다(그리고 CTU 대 CU 모드 의사 결정 프로세스를 더 수행할 수 있음).
IME 모듈(180), FME 모듈(182) 및 병합 모듈(184)은 각각 현재 CU의 PU에 대해 IME 작동, FME 작동 및 병합 작동을 수행할 수 있다. 도 4의 개략도에서, 인터 예측 모듈(121)은 CU에 대한 각각의 분할 모드에서 각각의 PU에 대한 별도의 IME 모듈(180), 별도의 FME 모듈(182) 및 별도의 병합 모듈(184)을 포함하는 것으로 설명된다. 다른 실행 가능한 구현에서, 인터 예측 모듈(121)은 CU에 대한 각각의 분할 모드에서 각각의 PU에 대한 별도의 IME 모듈(180), 별도의 FME 모듈(182), 또는 별도의 병합 모듈(184)을 포함하지 않는다.
도 4의 개략도에 도시된 바와 같이, IME 모듈(180A), FME 모듈(182A) 및 병합 모듈(184A)은 각각 2N × 2N 분할 모드에 기초하여 CU를 분할함으로써 생성된 PU에 대해 IME 작동, FME 작동 및 병합 작동을 수행할 수 있다. PU 모드 의사 결정 모듈(186A)은 IME 모듈(180A), FME 모듈(182A) 및 병합 모듈(184A)에 의해 생성된 예측 픽처 블록 중 하나를 선택할 수 있다.
IME 모듈(180B), FME 모듈(182B) 및 병합 모듈(184B)은 각각 N × 2N 분할 모드에 기초하여 CU를 분할함으로써 생성된 좌측 PU에 대해 IME 작동, FME 작동 및 병합 작동을 수행할 수 있다. PU 모드 의사 결정 모듈(186B)은 IME 모듈(180B), FME 모듈(182B) 및 병합 모듈(184B)에 의해 생성된 예측 픽처 블록 중 하나를 선택할 수 있다.
IME 모듈(180C), FME 모듈(182C) 및 병합 모듈(184C)은 각각 N × 2N 분할 모드에 기초하여 CU를 분할함으로써 생성된 우측 PU에 대해 IME 작동, FME 작동 및 병합 작동을 수행할 수 있다. PU 모드 의사 결정 모듈(186C)은 IME 모듈(180C), FME 모듈(182C) 및 병합 모듈(184C)에 의해 생성된 예측 픽처 블록 중 하나를 선택할 수 있다.
IME 모듈(180N), FME 모듈(182N) 및 병합 모듈(184)은 각각 N × N 분할 모드에 기초하여 CU를 분할함으로써 생성된 우측 하단 PU에 대해 IME 작동, FME 작동 및 병합 작동을 수행할 수 있다. PU 모드 의사 결정 모듈(186N)은 IME 모듈(180N), FME 모듈(182N) 및 병합 모듈(184N)에 의해 생성된 예측 픽처 블록 중 하나를 선택할 수 있다.
PU 모드 의사 결정 모듈(186)은 복수의 가능한 예측 픽처 블록의 레이트 왜곡 비용을 분석함으로써 예측 픽처 블록을 선택할 수 있고, 주어진 디코딩 시나리오에서 최적의 레이트 왜곡 비용을 제공하는 예측 픽처 블록을 선택할 수 있다. 예를 들어, 대역폭이 제한된 애플리케이션의 경우, PU 모드 의사 결정 모듈(186)은 압축 비율이 증가된 예측 픽처 블록을 선택하는 것을 선호할 수 있고, 다른 애플리케이션의 경우, PU 모드 의사 결정 모듈(186)은 재구축된 비디오의 품질이 향상되는 예측 픽처 블록을 선택하는 것을 선호할 수 있다. PU 모드 의사 결정 모듈(186)이 현재 CU의 PU에 대한 예측 픽처 블록을 선택한 후, CU 모드 의사 결정 모듈(188)은 현재 CU에 대한 분할 모드를 선택하고 선택된 분할 모드에 속하는 PU의 예측 픽처 블록 및 모션 정보를 출력한다.
도 5는 본 출원의 실시예에 따른 병합 모드의 구현의 흐름도이다. 비디오 인코더(예를 들어, 비디오 인코더(100))는 병합 작동(201)을 수행할 수 있다. 병합 작동(201)은 다음 단계를 포함할 수 있다. 단계 S202 : 현재 예측 유닛에 대한 후보 리스트를 생성한다. 단계 S204 : 후보 리스트의 후보와 연관된 예측 비디오 블록을 생성한다. 단계 S206 : 후보 리스트에서 후보를 선택한다. 단계 S208 : 후보를 출력한다. 후보는 후보 모션 벡터 또는 후보 모션 정보이다.
다른 가능한 구현에서, 비디오 인코더는 병합 작동(201)과 다른 병합 작동을 수행할 수 있다. 예를 들어, 다른 실행 가능한 구현에서, 비디오 인코더는 병합 작동을 수행할 수 있다. 이 경우, 비디오 인코더는 병합 작동(201)의 단계보다 많거나 적은 단계 또는 병합 작동(201)의 단계와 다른 단계를 수행한다. 다른 실행 가능한 구현에서, 비디오 인코더는 상이한 순서 또는 병렬로 병합 작동(201)의 단계를 수행할 수 있다. 인코더는 스킵 모드에 기초하여 인코딩된 PU에 대해 병합 작동(201)을 더 수행할 수 있다.
비디오 인코더가 병합 작동(201)을 시작한 후, 비디오 인코더는 현재 PU에 대한 후보 예측 모션 벡터 리스트를 생성할 수 있다(S202). 비디오 인코더는 다양한 방식으로 현재 PU에 대한 후보 예측 모션 벡터 리스트를 생성할 수 있다. 예를 들어, 비디오 인코더는 도 8 내지 도 12를 참조하여 후술하는 예시적인 기술 중 하나를 사용하여 현재 PU에 대한 후보 예측 모션 벡터 리스트를 생성할 수 있다.
상술한 바와 같이, 현재 PU에 대한 후보 예측 모션 벡터 리스트는 시간적 후보 예측 모션 벡터를 포함할 수 있다. 시간적 후보 예측 모션 벡터는 대응하는 시간적(공동 위치된) PU의 모션 정보를 지시할 수 있다. 공동 위치된 PU는 픽처 프레임의 현재 PU와 동일한 위치에 공간적으로 위치할 수 있지만, 현재 픽처가 아닌 참조 픽처에 있을 수 있다. 본 출원에서, 대응하는 시간적 PU를 포함하는 참조 픽처는 연관된 참조 픽처로서 지칭될 수 있다. 본 출원에서, 연관된 참조 픽처의 참조 픽처 인덱스는 연관된 참조 픽처 인덱스로서 지칭될 수 있다. 전술한 바와 같이, 현재 픽처는 하나 이상의 참조 픽처 리스트(예를 들어, 리스트 0 및 리스트 1)과 연관될 수 있다. 참조 픽처 인덱스는 참조 픽처 리스트에서 참조 픽처의 위치를 지시함으로써 참조 픽처를 지시할 수 있다. 일부 실행 가능한 구현에서, 현재 픽처는 결합된 참조 픽처 리스트와 연관될 수 있다.
일부 비디오 인코더에서, 연관된 참조 픽처 인덱스는 현재 PU와 연관된 참조 인덱스 소스 위치를 커버하는 PU의 참조 픽처 인덱스이다. 이들 비디오 인코더에서, 현재 PU와 연관된 참조 인덱스 소스 위치는 현재 PU의 왼쪽 또는 현재 PU 위에있는 현재 PU에 인접해 있다. 본 출원에서, PU와 연관된 픽처 블록이 특정 위치를 포함하는 경우, PU는 특정 위치를 "커버"할 수 있다. 이들 비디오 인코더에서, 비디오 인코더는 참조 인덱스 소스 위치가 사용할 수 없는 경우 참조 픽처 인덱스 0을 사용할 수 있다.
그러나, 일부 예에서, 현재 PU와 연관된 참조 인덱스 소스 위치는 현재 CU 내에 있다. 이들 예에서, PU가 현재 CU의 위 또는 왼쪽에 있는 경우 현재 PU와 연관된 참조 인덱스 소스 위치를 커버하는 PU는 이용 가능한 것으로 간주될 수 있다. 이 경우, 비디오 인코더는 공동 위치하는 PU를 포함하는 참조 픽처를 결정하기 위해 현재 CU의 다른 PU의 모션 정보에 액세스해야할 수 있다. 따라서, 이들 비디오 인코더는 현재 PU에 대한 시간적 후보 예측 모션 벡터를 생성하기 위해 현재 CU에 속하는 PU의 모션 정보(즉, 참조 픽처 인덱스)를 사용할 수 있다. 즉, 이들 비디오 인코더는 시간적 후보 예측 모션 벡터를 생성하기 위해 현재 CU에 속하는 PU의 모션 정보를 사용할 수 있다. 따라서, 비디오 인코더는 현재 PU 및 현재 PU와 연관된 참조 인덱스 소스 위치를 커버하는 PU에 대한 후보 예측 모션 벡터 리스트를 병렬로 생성할 수 없을 수 있다.
본 출원의 기술에 따르면, 비디오 인코더는 임의의 다른 PU의 참조 픽처 인덱스를 참조하지 않고 연관된 참조 픽처 인덱스를 명시적으로 설정할 수 있다. 이러한 방식으로, 비디오 인코더는 현재 PU 및 현재 CU의 다른 PU에 대한 후보 예측 모션 벡터 리스트를 병렬로 생성할 수 있다. 비디오 인코더가 연관된 참조 픽처 인덱스를 명시적으로 설정하기 때문에, 연관된 참조 픽처 인덱스는 현재 CU의 임의의 다른 PU의 모션 정보에 기초하지 않는다. 비디오 인코더가 연관된 참조 픽처 인덱스를 명시적으로 설정하는 일부 실행 가능한 구현에서, 비디오 인코더는 항상 연관된 참조 픽처 인덱스를 고정되고 미리 정의되며, 그리고 미리 설정된 참조 픽처 인덱스(예를 들어, 0)로 설정할 수 있다. 이러한 방식으로, 비디오 인코더는 미리 설정된 참조 픽처 인덱스에 의해 지시되는 참조 프레임에서 공동 위치하는 PU의 모션 정보에 기초하여 시간적 후보 예측 모션 벡터를 생성할 수 있으며, 여기서 시간적 후보 예측 모션 벡터는 현재 CU에 대한 후보 예측 모션 벡터 리스트에 포함될 수 있다.
비디오 인코더가 연관된 참조 픽처 인덱스를 명시적으로 설정하는 실행 가능한 구현에서, 비디오 인코더는 신택스 구조(예를 들어, 픽처 헤더, 슬라이스 헤더, APS, 또는 다른 신택스 구조)로 연관된 참조 픽처 인덱스를 명시적으로 시그널링할 수 있다. 이러한 실행 가능한 구현에서, 비디오 인코더는 각각의 LCU(즉, CTU), CU, PU, TU 또는 다른 유형의 서브 블록의 연관된 참조 픽처 인덱스를 디코더 측으로 시그널링할 수 있다. 예를 들어, 비디오 인코더는 CU의 각각의 PU의 연관된 참조 픽처 인덱스가 "1"과 동일함을 시그널링할 수 있다.
일부 실행 가능한 구현에서, 연관된 참조 픽처 인덱스는 명시적으로보다는 암시적으로 설정될 수 있다. 이들 실행 가능한 구현에서, 비디오 인코더는 이들 위치가 현재 PU에 엄격하게 인접하지 않더라도, 현재 CU 외부의 위치를 커버하는 PU의 참조 픽처 인덱스에 의해 지시되는 참조 픽처의 PU의 모션 정보를 사용함으로써 현재 CU의 PU에 대한 후보 예측 모션 벡터 리스트에서 각각의 시간적 후보 예측 모션 벡터를 생성할 수 있다
현재 PU에 대한 후보 예측 모션 벡터 리스트를 생성한 후, 비디오 인코더는 후보 예측 모션 벡터 리스트의 후보 예측 모션 벡터와 연관된 예측 픽처 블록을 생성할 수 있다(S204). 비디오 인코더는 지시된 후보 예측 모션 벡터의 모션 정보에 기초하여 현재 PU의 모션 정보를 결정할 수 있으며, 그 후 후보 예측 모션 벡터와 연관된 예측 픽처 블록을 생성하기 위해 현재 PU의 모션 정보에 의해 지시되는 하나 이상의 참조 블록에 기초하여 예측 픽처 블록을 생성할 수 있다. 이후, 비디오 인코더는 후보 예측 모션 벡터 리스트에서 하나의 후보 예측 모션 벡터를 선택할 수 있다(S206). 비디오 인코더는 다양한 방식으로 후보 예측 모션 벡터를 선택할 수 있다. 예를 들어, 비디오 인코더는 후보 예측 모션 벡터와 연관된 예측 픽처 블록 각각의 레이트 왜곡 비용을 분석함으로써 하나의 후보 예측 모션 벡터를 선택할 수 있다.
후보 예측 모션 벡터를 선택한 후, 비디오 인코더는 후보 예측 모션 벡터 인덱스를 출력할 수 있다(S208). 후보 예측 모션 벡터 인덱스는 후보 예측 모션 벡터 리스트에서 선택된 후보 예측 모션 벡터의 위치를 지시할 수 있다. 일부 실행 가능한 구현에서, 후보 예측 모션 벡터 인덱스는 "merge_idx"로 표현될 수 있다.
도 6은 본 출원의 실시예에 따른 어드밴스트 모션 벡터 예측(AMVP) 모드의 구현의 흐름도이다. 비디오 인코더(예를 들어, 비디오 인코더(100))는 AMVP 작동(210)을 수행할 수 있다. AMVP 작동(210)은 다음의 단계를 포함할 수 있다. 단계 S211 : 현재 예측 유닛에 대한 하나 이상의 모션 벡터를 생성한다. 단계 S212 : 현재 예측 유닛에 대한 예측 비디오 블록을 생성한다. 단계 S213 : 현재 예측 유닛에 대한 후보 리스트를 생성한다. 단계 S214 : 모션 벡터 차이를 생성한다. 단계 S215 : 후보 리스트에서 후보를 선택한다. 단계 S216 : 선택된 후보를 위해 사용되는 참조 픽처 인덱스, 후보 인덱스 및 모션 벡터 차이를 출력한다. 후보는 후보 모션 벡터 또는 후보 모션 정보이다.
비디오 인코더가 AMVP 작동(210)을 시작한 후, 비디오 인코더는 현재 PU에 대한 하나 이상의 모션 벡터를 생성할 수 있다(S211). 비디오 인코더는 현재 PU에 대한 모션 벡터를 생성하기 위해 정수 모션 추정 및 프랙션 모션 추정을 수행할 수 있다. 전술한 바와 같이, 현재 픽처는 2개의 참조 픽처 리스트(리스트 0 및 리스트 1)와 연관될 수 있다. 현재 PU가 단방향으로 예측되는 경우, 비디오 인코더는 현재 PU에 대해 list-0 모션 벡터 또는 list-1 모션 벡터를 생성할 수 있다. list-0 모션 벡터는 현재 PU에 대응하는 픽처 블록과 리스트 0 내의 참조 픽처의 참조 블록 사이의 공간적 변위를 지시할 수 있다. list-1 모션 벡터는 현재 PU에 대응하는 픽처 블록과 list 1 내의 참조 픽처의 참조 블록 사이의 공간적 변위를 지시할 수 있다. 현재 PU가 양방향으로 예측되는 경우, 비디오 인코더는 현재 PU에 대해 list-0 모션 벡터 및 list-1 모션 벡터를 생성할 수 있다.
현재 PU에 대한 하나 이상의 모션 벡터를 생성한 후, 비디오 인코더는 현재 PU에 대한 예측 픽처 블록을 생성할 수 있다(S212). 비디오 인코더는 현재 PU의 하나 이상의 모션 벡터에 의해 지시되는 하나 이상의 참조 블록에 기초하여 현재 PU에 대한 예측 픽처 블록을 생성할 수 있다.
또한, 비디오 인코더는 현재 PU에 대한 후보 예측 모션 벡터 리스트를 생성할 수 있다(S213). 비디오 인코더는 다양한 방식으로 현재 PU에 대한 후보 예측 모션 벡터 리스트를 생성할 수 있다. 예를 들어, 비디오 인코더는 도 8 내지 도 12를 참조하여 후술되는 실행 가능한 구현 중 하나 이상을 사용함으로써 현재 PU에 대한 후보 예측 모션 벡터 리스트를 생성할 수 있다. 일부 가능한 구현에서, 비디오 인코더가 AMVP 작동(210)에서 후보 예측 모션 벡터 리스트를 생성하는 경우, 후보 예측 모션 벡터 리스트는 2개의 후보 예측 모션 벡터로 제한될 수 있다. 반대로, 비디오 인코더가 병합 작동에서 후보 예측 모션 벡터 리스트를 생성하는 경우, 후보 예측 모션 벡터 리스트는 더 많은 후보 예측 모션 벡터(예를 들어, 5개의 후보 예측 모션 벡터)를 포함할 수 있다.
현재 PU에 대한 후보 예측 모션 벡터 리스트를 생성한 후, 비디오 인코더는 후보 예측 모션 벡터 리스트의 각각의 후보 예측 모션 벡터에 대해 하나 이상의 모션 벡터 차이(MVD)를 생성할 수 있다(S214). 비디오 인코더는 후보 예측 모션 벡터에 대한 모션 벡터 차이를 생성하기 위해 후보 예측 모션 벡터에 의해 지시되는 모션 벡터와 현재 PU의 대응하는 모션 벡터 사이의 차이를 결정할 수 있다.
현재 PU가 단방향으로 예측되는 경우, 비디오 인코더는 각각의 후보 예측 모션 벡터에 대해 단일 MVD를 생성할 수 있다. 현재 PU가 양방향으로 예측되는 경우, 비디오 인코더는 각각의 후보 예측 모션 벡터에 대해 2개의 MVD를 생성할 수 있다. 제1 MVD는 후보 예측 모션 벡터에 의해 지시되는 모션 벡터와 현재 PU의 list-0 모션 벡터 사이의 차이를 지시할 수 있다. 제2 MVD는 후보 예측 모션 벡터에 의해 지시되는 모션 벡터와 현재 PU의 list-1 모션 벡터 사이의 차이를 지시할 수 있다.
비디오 인코더는 후보 예측 모션 벡터 리스트에서 하나 이상의 후보 예측 모션 벡터를 선택할 수 있다(S215). 비디오 인코더는 다양한 방식으로 하나 이상의 후보 예측 모션 벡터를 선택할 수 있다. 예를 들어, 비디오 인코더는 인코딩될 모션 벡터와 연관된 모션 벡터와 최소 오차로 매칭되는 후보 예측 모션 벡터를 선택할 수 있다. 이것은 후보 예측 모션 벡터에 대한 모션 벡터 차이를 표현하는 데 필요한 비트의 양을 줄일 수 있다.
하나 이상의 후보 예측 모션 벡터를 선택한 후, 비디오 인코더는 현재 PU에 대한 하나 이상의 참조 픽처 인덱스, 현재 PU에 대한 하나 이상의 후보 예측 모션 벡터 인덱스, 및 하나 이상의 선택된 후보 예측 모션 벡터에 대한 하나 이상의 모션 벡터 차이를 출력할 수 있다(S216).
현재 픽처가 2개의 참조 픽처 리스트(리스트 0 및 리스트 1)와 연관되고 현재 PU가 단방향으로 예측되는 예에서, 비디오 인코더는 리스트 0에 대한 참조 픽처 인덱스("ref_idx_10") 또는 리스트 1에 대한 참조 픽처 인덱스("ref_idx_11")를 출력할 수 있다. 비디오 인코더는 후보 예측 모션 벡터 리스트의 현재 PU의 list-0 모션 벡터에 대해 선택된 후보 예측 모션 벡터의 위치를 지시하는 후보 예측 모션 벡터 인덱스("mvp_10_flag")를 더 출력할 수 있다. 다르게는, 비디오 인코더는 후보 예측 모션 벡터 리스트의 현재 PU의 list-1 모션 벡터에 대해 선택된 후보 예측 모션 벡터의 위치를 지시하는 후보 예측 모션 벡터 인덱스("mvp_11_flag")를 출력할 수 있다. 비디오 인코더는 현재 PU의 list-0 모션 벡터 또는 list-1 모션 벡터에 대한 MVD를 더 출력할 수 있다.
현재 픽처가 2개의 참조 픽처 리스트(리스트 0 및 리스트 1)와 연관되고 현재 PU가 양방향으로 예측되는 예에서, 비디오 인코더는 리스트 0에 대한 참조 픽처 인덱스("ref_idx_10") 및 리스트 1에 대한 참조 픽처 인덱스("ref_idx_11")를 출력할 수 있다. 비디오 인코더는 후보 예측 모션 벡터 리스트의 현재 PU의 list-0 모션 벡터에 대해 선택된 후보 예측 모션 벡터의 위치를 지시하는 후보 예측 모션 벡터 인덱스("mvp_10_flag")를 더 출력할 수 있다. 또한, 비디오 인코더는 후보 예측 모션 벡터 리스트의 현재 PU의 list-1 모션 벡터에 대해 선택된 후보 예측 모션 벡터의 위치를 지시하는 후보 예측 모션 벡터 인덱스("mvp_11_flag")를 출력할 수 있다. 비디오 인코더는 현재 PU의 list-0 모션 벡터에 대한 MVD 및 현재 PU의 list-1 모션 벡터에 대한 MVD를 더 출력할 수 있다.
도 7은 본 출원의 실시예에 따른 비디오 디코더(예를 들어, 비디오 디코더(30))에 의해 수행되는 모션 보상의 구현의 흐름도이다.
비디오 디코더가 모션 보상 작동(220)을 수행하는 경우, 비디오 디코더는 현재 PU의 선택된 후보 예측 모션 벡터를 위해 사용되는 지시를 수신할 수 있다(S222). 예를 들어, 비디오 디코더는 현재 PU에 대한 후보 예측 모션 벡터 리스트에서 선택된 후보 예측 모션 벡터의 위치를 지시하는 후보 예측 모션 벡터 인덱스를 수신할 수 있다.
현재 PU의 모션 정보가 AMVP 모드에 기초하여 인코딩되고 현재 PU가 양방향으로 예측되는 경우, 비디오 디코더는 제1 후보 예측 모션 벡터 인덱스와 제2 후보 예측 모션 벡터 인덱스를 수신할 수 있다. 제1 후보 예측 모션 벡터 인덱스는 후보 예측 모션 벡터 리스트의 현재 PU의 list-0 모션 벡터에 대해 선택된 후보 예측 모션 벡터의 위치를 지시한다. 제2 후보 예측 모션 벡터 인덱스는 후보 예측 모션 벡터 리스트의 현재 PU의 list-1 모션 벡터에 대해 선택된 후보 예측 모션 벡터의 위치를 지시한다. 일부 실행 가능한 구현에서, 단일 신택스 요소는 2개의 후보 예측 모션 벡터 인덱스를 식별하는 데 사용될 수 있다.
또한, 비디오 디코더는 현재 PU에 대한 후보 예측 모션 벡터 리스트를 생성할 수 있다(S224). 비디오 디코더는 다양한 방식으로 현재 PU에 대한 후보 예측 모션 벡터 리스트를 생성할 수 있다. 예를 들어, 비디오 디코더는 도 8 내지 도 12를 참조하여 후술하는 기술을 사용함으로써 현재 PU에 대한 후보 예측 모션 벡터 리스트를 생성할 수 있다. 비디오 디코더가 후보 예측 모션 벡터 리스트에 대한 시간적 후보 예측 모션 벡터를 생성하는 경우, 비디오 디코더는 도 5를 참조하여 전술한 바와 같이 공동 위치하는 PU를 포함하는 참조 픽처를 식별하는 참조 픽처 인덱스를 명시적으로 또는 암시적으로 설정할 수 있다.
현재 PU에 대한 후보 예측 모션 벡터 리스트를 생성한 후, 비디오 디코더는 현재 PU에 대한 후보 예측 모션 벡터 리스트에서 하나 이상의 선택된 후보 예측 모션 벡터에 의해 지시되는 모션 정보에 기초하여 현재 PU의 모션 정보를 결정할 수 있다. 예를 들어, 현재 PU의 모션 정보가 병합 모드에 기초하여 인코딩된 경우, 현재 PU의 모션 정보는 선택된 후보 예측 모션 벡터에 의해 지시되는 모션 정보와 동일할 수 있다. 현재 PU의 모션 정보가 AMVP 모드에 기초하여 인코딩된 경우, 비디오 디코더는 하나 이상의 선택된 후보 예측 모션 벡터 및 비트스트림으로 지시된 하나 이상의 MVD에 의해 지시된 하나 이상의 모션 벡터를 사용함으로써 현재 PU의 하나 이상의 모션 벡터를 재구축할 수 있다. 현재 PU의 참조 픽처 인덱스 및 예측 방향 지시자는 하나 이상의 선택된 후보 예측 모션 벡터의 하나 이상의 참조 픽처 인덱스 및 예측 방향 지시자와 동일할 수 있다. 현재 PU의 모션 정보를 결정한 후, 비디오 디코더는 현재 PU의 모션 정보에 의해 지시되는 하나 이상의 참조 블록에 기초하여 현재 PU에 대한 예측 픽처 블록을 생성할 수 있다(S226).
도 8은 본 출원의 실시예에 따른 코딩 유닛(CU) 및 코딩 유닛(CU)과 연관된 이웃하는 픽처 블록의 예의 개략도이다. 도 8은 CU(250) 및 CU(250)와 연관된 위치(252A 내지 252E)에서의 예시적인 후보 예측 모션 벡터를 설명하기 위한 개략도이다. 본 출원에서, 위치(252A 내지 252E)에서의 후보 예측 모션 벡터는 총괄적으로 위치(252)에서의 후보 예측 모션 벡터로서 지칭될 수 있다. 위치(252)에서의 후보 예측 모션 벡터는 CU(250)와 동일한 픽처에 있는 공간적 후보 예측 모션 벡터를 나타낸다. 위치(252A)에서의 후보 예측 모션 벡터는 CU(250)의 왼쪽에 위치한다. 위치(252B)에서의 후보 예측 모션 벡터는 CU(250) 위에 위치한다. 위치(252C)에서의 후보 예측 모션 벡터는 CU(250)의 오른쪽 상단에 위치한다. 위치(252D)에서의 후보 예측 모션 벡터는 CU(250)의 왼쪽 하단에 위치한다. 위치(252E)에서의 후보 예측 모션 벡터는 CU(250)의 왼쪽 상단에 위치한다. 도 8은 인터 예측 모듈(121) 및 모션 보상 모듈이 후보 예측 모션 벡터 리스트를 생성할 수 있는 방식의 개략적인 구현을 도시한다. 이하에서는 인터 예측 모듈(121)에 기초하여 구현이 설명된다. 그러나, 모션 보상 모듈은 동일한 기술을 구현할 수 있으므로, 동일한 후보 예측 모션 벡터 리스트를 생성할 수 있음이 이해되어야 한다.
도 9는 본 출원의 실시예에 따라 후보 예측 모션 벡터 리스트를 구축하는 구현의 흐름도이다. 도 9에서의 기술은 5개의 후보 예측 모션 벡터를 포함하는 리스트에 기초하여 설명되었으나, 본 명세서에서 설명되는 기술은 다르게는 크기가 다른 리스트와 함께 사용될 수도 있다. 5개의 후보 예측 모션 벡터는 각각 인덱스(예를 들어, 0 내지 4)를 가질 수 있다. 도 9에서의 기술은 일반적인 비디오 코덱에 기초하여 설명된다. 일반적인 비디오 코덱은 예를 들어, 비디오 인코더(예를 들어, 비디오 인코더(100)) 또는 비디오 디코더(예를 들어, 비디오 디코더(30))일 수 있다.
도 9의 구현에 따라 후보 예측 모션 벡터 리스트를 재구축하기 위해. 비디오 디코더는 먼저 4개의 공간적 후보 예측 모션 벡터를 고려한다(902). 4개의 공간 후보 예측 모션 벡터는 위치(252A, 252B, 252C 및 252D)에서의 후보 예측 모션 벡터를 포함할 수 있다. 4개의 공간적 후보 예측 모션 벡터는 현재 CU(예를 들어, CU(250))와 동일한 픽처에 위치하는 4개의 PU의 모션 정보에 대응할 수 있다. 비디오 디코더는 지정된 순서로 리스트에서 4개의 공간적 후보 예측 모션 벡터를 고려할 수 있다. 예를 들어, 위치(252A)에서의 후보 예측 모션 벡터가 먼저 고려될 수 있다. 위치(252A)에서의 후보 예측 모션 벡터가 이용 가능하다면, 인덱스 0은 위치(252A)에서의 후보 예측 모션 벡터에 할당될 수 있다. 위치(252A)에서의 후보 예측 모션 벡터가 이용할 수 없는 경우, 비디오 디코더는 위치(252A)에서의 후보 예측 모션 벡터를 후보 예측 모션 벡터 리스트에 추가하는 것을 스킵할 수 있다. 위치에서의 후보 예측 모션 벡터는 다양한 이유로 이용할 수 없을 수 있다. 예를 들어, 위치에서의 후보 예측 모션 벡터가 현재 픽처 내에 속하지 않는 경우, 위치에서의 후보 예측 모션 벡터는 이용 불가능할 수 있다. 다른 실행 가능한 구현에서, 위치에서의 후보 예측 모션 벡터가 인트라 예측을 겪는다면, 위치에서의 후보 예측 모션 벡터는 이용 불가능할 수 있다. 다른 실행 가능한 구현에서, 위치에서의 후보 예측 모션 벡터가 현재 CU에 대응하는 슬라이스와 다른 슬라이스에 있는 경우, 위치에서의 후보 예측 모션 벡터는 이용 불가능할 수 있다.
위치(252A)에서의 후보 예측 모션 벡터를 고려한 후, 비디오 디코더는 위치(252B)에서의 후보 예측 모션 벡터를 고려할 수 있다. 위치(252B)에서의 후보 예측 모션 벡터가 이용 가능하고 위치(252A)에서의 후보 예측 모션 벡터와 다른 경우, 비디오 디코더는 위치(252B)에서의 후보 예측 모션 벡터를 후보 예측 모션 벡터 리스트에 추가할 수 있다. 이러한 특정 상황에서, 용어 "동일한" 또는 "다른"은 위치에서의 후보 예측 모션 벡터와 연관된 모션 정보가 동일하거나 다르다는 것을 의미한다. 따라서, 위치에서의 2개의 후보 예측 모션 벡터가 동일한 모션 정보를 갖는 경우, 위치에서의 2개의 후보 예측 모션 벡터는 동일한 것으로 간주되거나, 또는 위치에서의 2개의 후보 예측 모션 벡터가 상이한 모션 정보를 갖는 경우, 위치에서의 2개의 후보 예측 모션 벡터는 상이한 것으로 간주된다. 위치(252A)에서의 후보 예측 모션 벡터가 이용 불가능한 경우, 비디오 디코더는 위치(252B)에서의 후보 예측 모션 벡터에 인덱스 0을 할당할 수 있다. 위치(252A)에서의 후보 예측 모션 벡터가 이용 가능한 경우, 비디오 디코더는 위치(252)에서의 후보 예측 모션 벡터에 인덱스 1을 할당할 수 있다. 위치(252B)에서의 후보 예측 모션 벡터가 이용 불가능하거나 또는 위치(252A)에서의 후보 예측 모션 벡터와 동일한 경우, 비디오 디코더는 위치(252B)에서의 후보 예측 모션 벡터를 후보 예측 모션 벡터 리스트에 추가하는 것을 스킵한다.
유사하게, 비디오 디코더는 위치(252C)에서의 후보 예측 모션 벡터를 리스트에 추가할지 여부를 결정하기 위해 위치(252C)에서의 후보 예측 모션 벡터를 고려한다. 위치(252C)에서의 후보 예측 모션 벡터가 이용 가능하고 위치(252B 및 252A)에서의 후보 예측 모션 벡터와 다른 경우, 비디오 디코더는 위치(252C)에서의 후보 예측 모션 벡터에 다음 이용 가능한 인덱스를 할당할 수 있다. 위치(252C)에서의 후보 예측 모션 벡터가 이용 불가능하거나 또는 위치(252A 및 252B)에서의 후보 예측 모션 벡터 중 적어도 하나와 동일한 경우, 비디오 디코더는 위치(252C)에서의 후보 예측 모션 벡터를 후보 예측 모션 벡터 리스트에 추가하는 것을 스킵한다. 다음, 비디오 디코더는 위치(252D)에서의 후보 예측 모션 벡터를 고려한다. 위치(252D)에서의 후보 예측 모션 벡터가 이용 가능하고 위치(252A, 252B 및 252C)에서의 후보 예측 모션 벡터와 다른 경우, 비디오 디코더는 위치(252D)에서의 후보 예측 모션 벡터에 다음 이용 가능한 인덱스를 할당할 수 있다. 위치(252D)에서의 후보 예측 모션 벡터가 이용 불가능하거나 또는 위치(252A, 252B 및 252C)에서의 후보 예측 모션 벡터 중 적어도 하나와 동일한 경우, 비디오 디코더는 위치(252D)에서의 후보 예측 모션 벡터를 후보 예측 모션 벡터 리스트에 추가하는 것을 스킵한다. 전술한 구현에서, 후보 예측 모션 벡터 리스트의 후보 예측 모션 벡터(252A 내지 252D)를 추가할지 여부를 결정하기 위해 후보 예측 모션 벡터(252A 내지 252D)가 고려되는 예가 일반적으로 설명된다. 그러나, 일부 구현에서, 모든 후보 예측 모션 벡터(252A 내지 252D)는 먼저 후보 예측 모션 벡터 리스트에 추가될 수 있고, 그 다음 반복된 후보 예측 모션 벡터가 후보 예측 모션 벡터 리스트에서 제거된다.
비디오 디코더가 처음 4개의 공간적 후보 예측 모션 벡터를 고려한 후, 후보 예측 모션 벡터 리스트는 4개의 공간적 후보 예측 모션 벡터를 포함할 수 있거나, 또는 리스트는 4개 미만의 공간적 후보 예측 모션 벡터를 포함할 수 있다. 리스트가 4개의 공간적 후보 예측 모션 벡터를 포함하는 경우(904, 예), 비디오 디코더는 시간적 후보 예측 모션 벡터를 고려한다(906). 시간적 후보 예측 모션 벡터는 현재 픽처와 다른 픽처의 공동 위치된 PU의 모션 정보에 대응할 수 있다. 시간적 후보 예측 모션 벡터가 이용 가능하고 처음 4개의 공간적 후보 예측 모션 벡터와 다른 경우, 비디오 디코더는 인덱스 4를 시간적 후보 예측 모션 벡터에 할당한다. 시간적 후보 예측 모션 벡터가 이용 불가능하거나 또는 처음 4개의 공간 후보 예측 모션 벡터 중 하나와 동일한 경우, 비디오 디코더는 시간적 후보 예측 모션 벡터를 후보 예측 모션 벡터 리스트에 추가하는 것을 스킵한다. 따라서, 비디오 디코더가 시간적 후보 예측 모션 벡터를 고려한 후(906), 후보 예측 모션 벡터 리스트는 5개의 후보 예측 모션 벡터(902에서 고려되는 처음 4개의 공간적 후보 예측 모션 벡터 및 906에서 고려되는 시간적 후보 예측 모션 벡터)를 포함할 수 있거나 또는 4개의 후보 예측 모션 벡터(902에서 고려되는 처음 4개의 공간 후보 예측 모션 벡터)를 포함할 수 있다. 후보 예측 모션 벡터 리스트가 5개의 후보 예측 모션 벡터를 포함하는 경우(908, 예), 비디오 디코더는 리스트의 구축을 완료한다.
후보 예측 모션 벡터 리스트가 4개의 후보 예측 모션 벡터를 포함하는 경우(908, 아니오), 비디오 디코더는 제5 공간적 후보 예측 모션 벡터를 고려할 수 있다(910). 제5 공간적 후보 예측 모션 벡터는 (예를 들어) 위치(252E)에서의 후보 예측 모션 벡터에 대응할 수 있다. 위치(252E)에서의 후보 예측 모션 벡터가 이용 가능하고 위치(252A, 252B, 252C 및 252D)에서의 후보 예측 모션 벡터와 다른 경우, 비디오 디코더는 제5 공간적 후보 예측 모션 벡터를 후보 예측 모션 벡터 리스트에 추가할 수 있고, 인덱스 4를 제5 공간적 후보 예측 모션 벡터에 할당할 수 있다. 위치(252E)에서의 후보 예측 모션 벡터가 이용 불가능하거나 또는 위치(252A, 252B, 252C 및 252D)에서의 후보 예측 모션 벡터 중 하나와 동일한 경우, 비디오 디코더는 위치(252E)에서의 후보 예측 모션 벡터를 후보 예측 모션 벡터 리스트에 추가하는 것을 건너띌 수 있다. 따라서, 제5 공간적 후보 예측 모션 벡터가 고려된 후(910), 리스트는 5개의 후보 예측 모션 벡터(902에서 고려되는 처음 4 개의 공간적 후보 예측 모션 벡터 및 910에서 고려되는 제5 공간적 후보 예측 모션 벡터)를 포함할 수 있거나 또는 4개의 후보 예측 모션 벡터(902에서 고려되는 처음 4개의 공간적 후보 예측 모션 벡터)를 포함할 수 있다.
후보 예측 모션 벡터 리스트가 5개의 후보 예측 모션 벡터를 포함하는 경우(912, 예), 비디오 디코더는 후보 예측 모션 벡터 리스트의 생성을 완료한다. 후보 예측 모션 벡터 리스트가 4개의 후보 예측 모션 벡터를 포함하는 경우(912, 아니오), 비디오 디코더는 리스트가 5개의 후보 예측 모션 벡터를 포함할 때까지(916, 예) 인위적으로 생성된 후보 예측 모션 벡터를 추가한다(914).
비디오 디코더가 처음 4개의 공간적 후보 예측 모션 벡터를 고려한 후 리스트가 4개 미만의 공간적 후보 예측 모션 벡터를 포함하는 경우(904, 아니오), 비디오 디코더는 제5 공간적 후보 예측 모션 벡터를 고려할 수 있다(918). 제5 공간적 후보 예측 모션 벡터는 (예를 들어) 위치(252E)에서의 후보 예측 모션 벡터에 대응할 수 있다. 위치(252E)에서의 후보 예측 모션 벡터가 이용 가능하고 후보 예측 모션 벡터 리스트의 기존의 후보 예측 모션 벡터와 다른 경우, 비디오 디코더는 후보 예측 모션 벡터 리스트에 제5 공간적 후보 예측 모션 벡터를 추가할 수 있으며, 다음 이용 가능한 인덱스를 제5 공간적 후보 예측 모션 벡터에게 할당한다. 위치(252E)에서의 후보 예측 모션 벡터가 이용 불가능하거나 또는 후보 예측 모션 벡터 리스트의 기존의 후보 예측 모션 벡터 중 하나와 동일한 경우, 비디오 디코더는 위치(252E)에서의 후보 예측 모션 벡터를 후보 예측 모션 벡터 리스트에 추가하는 것을 스킵할 수 있다. 다음, 비디오 디코더는 시간적 후보 예측 모션 벡터를 고려할 수 있다(920). 시간적 후보 예측 모션 벡터가 이용 가능하고 후보 예측 모션 벡터 리스트의 기존의 후보 예측 모션 벡터와 다른 경우, 비디오 디코더는 시간적 후보 예측 모션 벡터를 후보 예측 모션 벡터 리스트에 추가하고 다음 이용 가능한 인덱스를 시간적 후보 예측 모션 벡터에 할당할 수 있다. 시간적 후보 예측 모션 벡터가 이용 불가능하거나 또는 후보 예측 모션 벡터 리스트의 기존의 후보 예측 모션 벡터 중 하나와 동일한 경우, 비디오 디코더는 시간적 후보 예측 모션 벡터를 후보 예측 모션 벡터 리스트에 추가하는 것을 스팁할 수 있다.
제5 공간적 후보 예측 모션 벡터(918에서) 및 시간적 후보 예측 모션 벡터(920에서)가 고려된 후 후보 예측 모션 벡터 리스트가 5개의 후보 예측 모션 벡터를 포함하는 경우(922, 예), 비디오 디코더는 후보 예측 모션 벡터 리스트의 생성을 완료한다. 후보 예측 모션 벡터 리스트가 5개 미만의 후보 예측 모션 벡터를 포함하는 경우(922, 아니오), 비디오 디코더는 리스트가 5개의 후보 예측 모션 벡터를 포함할 때까지(916, 예) 인공적으로 생성된 후보 예측 모션 벡터를 추가한다(914).
본 출원에서의 기술에 따르면, 병합 후보 예측 모션 벡터 리스트의 크기가 고정되고 병합 후보 예측 모션 벡터 리스트가 병합 후보 예측 모션 벡터의 지정된 수량(예를 들어, 도 9의 전술한 실행 가능한 구현에서 5개)을 포함할 수 있도록, 공간적 후보 예측 모션 벡터 및 시간적 후보 예측 모션 벡터 이후에 추가적인 병합 후보 예측 모션 벡터가 인위적으로 생성될 수 있다. 추가적인 병합 후보 예측 모션 벡터는 결합된 이중 예측 병합 후보 예측 모션 벡터(후보 예측 모션 벡터 1), 스케일링된 이중 예측 병합 후보 예측 모션 벡터(후보 예측 모션 벡터 2), 및 제로 벡터 병합/AMVP 후보 예측 모션 벡터(후보 예측 모션 벡터 3)의 예를 포함할 수 있다.
도 10은 본 출원의 실시예에 따른 병합 모드 후보 예측 모션 벡터 리스트에 결합된 후보 모션 벡터를 추가하는 예의 개략도이다. 결합된 이중 예측 병합 후보 예측 모션 벡터는 원래 병합 후보 예측 모션 벡터를 결합함으로써 생성될 수 있다. 구체적으로, 2개의 원래 후보 예측 모션 벡터(mvL0 및 refIdxL0 또는 mvL1 및 refIdxL1을 가짐)는 이중 예측 병합 후보 예측 모션 벡터를 생성하는 데 사용될 수 있다. 도 10에서, 2개의 후보 예측 모션 벡터는 원래의 병합 후보 예측 모션 벡터 리스트에 포함된다. 하나의 후보 예측 모션 벡터의 예측 유형은 리스트 0을 사용함으로써 단일 예측이고, 다른 후보 예측 모션 벡터의 예측 유형은 리스트 1을 사용함으로써 단일 예측이다. 이러한 실행 가능한 구현에서, mvL0_A 및 ref0은 리스트 0에서 획득되고, mvL1_B 및 ref0은 리스트 1에서 획득된다. 그 후, 이중 예측 병합 후보 예측 모션 벡터(리스트 0에 mvL0_A 및 ref0 및 리스트 1에서 mvL1_B 및 ref0을 가짐)가 생성될 수 있고, 이중 예측 병합 후보 예측 모션 벡터가 후보 예측 모션 벡터 리스트의 기존의 후보 예측 모션 벡터와 다른지 여부가 확인된다. 이중 예측 병합 후보 예측 모션 벡터가 기존의 후보 예측 모션 벡터와 다른 경우, 비디오 디코더는 이중 예측 병합 후보 예측 모션 벡터를 후보 예측 모션 벡터 리스트에 추가할 수 있다.
도 11은 본 출원의 실시예에 따라 스케일링된 후보 모션 벡터를 병합 모드 후보 예측 모션 벡터 리스트에 추가하는 예의 개략도이다. 스케일링된 이중 예측 병합 후보 예측 모션 벡터는 원래의 병합 후보 예측 모션 벡터를 스케일링함으로써 생성될 수 있다. 구체적으로, 하나의 원래 후보 예측 모션 벡터(mvLX 및 refIdxLX를 가짐)는 이중 예측 병합 후보 예측 모션 벡터를 생성하는 데 사용될 수 있다. 도 11의 실행 가능한 구현에서, 2개의 후보 예측 모션 벡터는 원래의 병합 후보 예측 모션 벡터 리스트에 포함된다. 하나의 후보 예측 모션 벡터의 예측 유형은 리스트 0을 사용함으로써 단일 예측이고, 다른 후보 예측 모션 벡터의 예측 유형은 리스트 1을 사용함으로써 단일 예측이다. 이러한 실행 가능한 구현에서, mvL0_A 및 ref0은 리스트 0에서 획득될 수 있고, ref0은 리스트 1에서 복사될 수 있으며 참조 인덱스 ref0'로 표시된다. 다음으로, mvL0'_A는 ref0 및 ref0'을 갖는 mvL0_A를 스케일링하여 계산될 수 있다. 스케일링은 POC(Picture Order Count) 거리에 따라 달라질 수 있다. 그 후, 이중 예측 병합 후보 예측 모션 벡터(리스트 0에서 mvL0_A와 ref0 및 리스트 1에서 mvL0'_A와 ref0'를 가짐)가 생성될 수 있고, 이중 예측 병합 후보 예측 모션 벡터가 반복되는지 여부가 확인된다. 이중 예측 병합 후보 예측 모션 벡터가 반복되지 않는 경우, 이중 예측 병합 후보 예측 모션 벡터는 병합 후보 예측 모션 벡터 리스트에 추가될 수 있다.
도 12는 본 출원의 실시예에 따른 병합 모드 후보 예측 모션 벡터 리스트에 제로 모션 벡터를 추가하는 예의 개략도이다. 제로 벡터 병합 후보 예측 모션 벡터는 제로 벡터와 참조될 수 있는 참조 인덱스를 결합함으로써 생성될 수 있다. 제로 벡터 병합 후보 예측 모션 벡터가 반복되지 않는 경우, 제로 벡터 병합 후보 예측 모션 벡터는 병합 후보 예측 모션 벡터 리스트에 추가될 수 있다. 각각 생성된 병합 후보 예측 모션 벡터의 모션 정보는 리스트의 이전 후보 예측 모션 벡터의 모션 정보와 비교될 수 있다.
실행 가능한 구현에서, 새로 생성된 후보 예측 모션 벡터가 후보 예측 모션 벡터 리스트의 기존의 후보 예측 모션 벡터와 다른 경우, 생성된 후보 예측 모션 벡터가 병합 후보 예측 모션 벡터 리스트에 추가된다. 후보 예측 모션 벡터가 후보 예측 모션 벡터 리스트의 기존의 후보 예측 모션 벡터와 다른지 여부를 결정하는 프로세스는 때때로 프루닝(pruning)으로 지칭된다. 프루닝을 통해, 각각 새로 생성된 후보 예측 모션 벡터는 리스트의 기존의 후보 예측 모션 벡터와 비교될 수 있다. 일부 실행 가능한 구현에서, 프루닝 작동은 하나 이상의 새로운 후보 예측 모션 벡터를 후보 예측 모션 벡터 리스트의 기존의 후보 예측 모션 벡터와 비교하는 단계, 후보 예측 모션 벡터 리스트의 기존의 후보 예측 모션 벡터와 동일한 새로운 후보 예측 모션 벡터를 추가하는 것을 스킵하는 단계를 포함할 수 있다. 일부 다른 실행 가능한 구현에서, 프루닝 작동은 하나 이상의 새로운 후보 예측 모션 벡터를 후보 예측 모션 벡터 리스트에 추가하는 단계, 및 그 후, 반복된 후보 예측 모션 벡터를 리스트에서 제거하는 단계를 포함할 수 있다.
이하, 여러 인터 예측 구현을 설명한다. 본 출원에서의 제1 미리 설정된 알고리즘 및 제2 미리 설정된 알고리즘은 하나 이상의 인터 예측 구현을 포함할 수 있다.
픽처 간 예측은 픽처 샘플의 블록에 대한 모션 보상 예측(motion-compensated prediction, MCP)을 도출하기 위해 픽처 사이의 시간적 상관관계를 사용한다.
이러한 블록 기반 MCP에 대해, 비디오 픽처는 직사각형 블록으로 분할된다. 동종의 모션이 하나의 블록 내에서 발생하고 움직이는 객체가 하나의 블록보다 큰 것으로 가정하면, 각각의 블록에 대해, 이전에 디코딩된 픽처에서 대응하는 블록이 찾아질 수 있으며 예측값으로 사용할 수 있다. 변환 모션 모델을 사용하면, 이전에 디코딩된 픽처에서 블록의 위치는 모션 벡터(Δx, Δy)에 의해 지시되며, 여기서 Δx는 현재 블록의 위치에 대한 수평 변위를 지정하고, Δy는 현재 블록의 위치에 대한 수직 변위를 지정한다. 모션 벡터(Δx, Δy)는 기본 객체의 움직임을 보다 정확하게 캡처하기 위해 프랙션 샘플 정확도(fractional sample accruracy)를 가질 수 있다. 대응하는 모션 벡터가 프랙션 샘플 정확도를 가지는 경우, 예측 신호를 도출하기 위해 참조 픽처에 대해 보간이 적용된다. 이전에 디코딩된 픽처는 참조 픽처로서 지칭되며 참조 픽처 리스트에 대응하는 참조 인덱스(Δt)에 의해 지시된다. 이들 변환 모션 모델 파라미터, 즉 모션 벡터 및 참조 인덱스는 또한 모션 데이터로서 지칭된다. 두 가지 유형의 픽처 간 예측, 즉 단일 예측과 이중 예측이 현대 비디오 코딩 표준에서 허용된다.
이중 예측의 경우, 두 세트의 모션 데이터(Δx0, Δy0, Δt0 및 Δx1, Δy1, Δt1)는 (아마도 다른 픽처로부터) 두 개의 MCP를 생성하는 데 사용되며, 그 후 두 개의 MCP는 최종 MCP를 얻기 위해 결합된다. 기본적으로, 이것은 평균화에 의해 수행되지만 가중 예측의 경우, 예를 들어 장면 페이드 아웃을 보상하기 위해 각각의 MCP에 다른 가중치를 적용될 수 있다. 이중 예측에서 사용될 수 있는 참조 픽처는 두 개의 개별 리스트, 즉 리스트 0 및 리스트 1에 저장된다. 이중 예측을 허용하는 슬라이스의 메모리 대역폭을 제한하기 위해, HEVC 표준은 4 × 8 또는 8 × 4 루마 예측 블록을 갖는 PU를 단일 예측만을 사용하도록 제한한다. 모션 데이터는 모션 추정 프로세스를 사용하여 인코더에서 도출된다. 모션 추정은 서로 다른 인코더가 인코더의 구현 동안 서로 다른 복잡성 품질 트레이드오프를 활용할 수 있도록 비디오 표준 내에서 지정되지 않는다.
블록의 모션 데이터는 이웃하는 블록과 상관된다. 이러한 상관관계를 이용하기 위해, 모션 데이터는 비트스트림으로 직접 코딩되지 않고, 이웃하는 모션 데이터에 기초하여 예측 코딩된다. HEVC에서, 그것을 위해 두 가지 개념이 사용된다. 모션 벡터의 예측 코딩은 각각의 모션 블록에 대한 최상의 예측값이 디코더로 시그널링되는 어드밴스트 모션 벡터 예측(advanced motion vector prediction, AMVP)이라는 새로운 도구를 도입함으로써 HEVC에서 향상되었다. 또한, 이웃하는 블록에서 블록의 모든 모션 데이터를 도출하기 위해 인터 예측 블록 병합이라는 새로운 기술이 사용된다. 이러한 방식으로, H.264/AVC의 다이렉트 모드와 스킵 모드가 대체된다.
어드밴스트 모션 벡터 예측
이전의 비디오 코딩 표준에서 설명된 바와 같이, HEVC 모션 벡터는 수평(x) 성분과 수직(y) 성분에 기초하여 모션 벡터 예측값(motion vector prediction value, MVP)에 대한 차이로서 코딩된다. 두 가지 모션 벡터 차이(MVD) 성분은 [수학식 1] 및 [수학식 2]에 따라 계산된다.
현재 블록의 모션 벡터는 일반적으로 현재 픽처 또는 이전에 코딩된 픽처에서 이웃하는 블록의 모션 벡터와 상관된다. 이는 이웃하는 블록이 유사한 모션을 가진 동일한 움직이는 객체에 대응할 가능성이 높고, 객체의 모션은 시간이 지남에 따라 갑작스럽게 변할 가능성이 없기 때문이다. 따라서, 이웃하는 블록의 모션 벡터를 예측값으로 사용하면 시그널링된 모션 벡터 차이가 줄어든다. MVP는 일반적으로 공간적으로 이웃하는 블록의 이미 디코딩된 모션 벡터 또는 공동 위치하는 픽처에서 시간적으로 이웃하는 블록으로부터 도출된다. 일부 경우에, 제로 모션 벡터는 다르게는 MVP로서 사용될 수도 있다. H.264/AVC에서, 이것은 3개의 공간적으로 이웃하는 모션 벡터의 성분별 중앙값(component wise median)을 실행함으로써 구현된다. 이러한 접근 방식을 사용하면, 예측값의 시그널링이 필요하지 않다. 공동 위치하는 픽처로부터의 시간적 MVP는 H.264/AVC에서 이른바 시간적 직접 모드에서만 고려된다. H.264/AVC 직접 모드는 모션 벡터 이외의 다른 모션 데이터를 도출하는 데에도 사용된다.
HEVC에서, MVP를 암시적으로 도출하기 위한 접근 방식은 모션 벡터 경쟁으로 알려진 기술로 대체되었다. 이 기술은 MVP의 리스트에서 어떤 MVP가 모션 벡터 도출에 사용되는지를 명시적으로 시그널링한다. HEVC의 가변 코딩 쿼드 트리 블록 구조는 잠재적인 MVP 후보로 작용하기 위해 하나의 블록이 모션 벡터가 있는 여러 이웃하는 블록을 갖게 할 수 있다. 어드밴스트 모션 벡터 예측(Advanced Motion Vector Prediction, AMVP)의 초기 설계에는 세 가지 다른 예측값 클래스, 즉 공간적 이웃으로부터의 3개의 모션 벡터, 3개의 공간적 예측값의 중앙값, 및 공동으로 위치한 시간적으로 이웃하는 블록으로부터의 스케일링된 모션 벡터으로부터의 5개의 MVP가 포함되었다. 또한, 예측값의 리스트는 가장 가능성이 높은 모션 예측값을 제1 위치에 배치하도록 재정렬하고 최소한의 시그널링 오버헤드를 보장하기 위해 중복 후보를 제거함으로써 수정되었다. 그런 다음, AMVP 설계의 상당한 단순화는 중앙값 예측값을 제거하고, 리스트의 후보 수량을 5개에서 2개로 줄이며, 리스트에서 후보 순서를 고정하고, 중복 확인의 수량을 줄이는 등으로 개발되었다. AMVP 후보 리스트 구축의 최종 설계는 다음의 두 개의 MVP 후보, 즉 a. 5개의 공간적으로 이웃하는 블록에서 도출된 최대 2개의 공간적 후보 MVP, b. 두 공간적 후보 MVP가 모두 사용 불가능하거나 동일한 경우 두 개의 시간적으로 공동으로 위치하는 블록에서 도출된 하나의 시간적 후보 MVP, 및 c. 공간적 후보, 시간적 후보 또는 공간적 후보와 시간적 후보 모두가 사용 불가능한 경우의 제로 모션 벡터를 포함한다.
이미 언급된 바와 같이, 2개의 공간적 MVP 후보 A 및 B는 5개의 공간적으로 이웃하는 블록으로부터 도출된다. 공간적 후보 블록의 위치는 AMVP 및 인터 예측 블록 병합 모두에서 동일한다. 후보 A의 경우, 왼쪽 하단 모서리에 있는 두 블록 A0 및 A1의 모션 데이터가 2패스(two-pass) 접근 방식에서 고려된다. 제1 패스에서, 임의의 후보 블록이 현재 블록의 참조 인덱스와 동일한 참조 인덱스를 포함하는지 여부가 확인된다. 발견된 제1 모션 벡터가 후보 A로 사용된다. A0 및 A1의 모든 참조 인덱스가 현재 블록의 참조 인덱스와 다른 참조 픽처를 가리키고 있는 경우, 연관된 모션 벡터는 그대로 사용될 수 없다. 따라서, 제2 패스에서, 모션 벡터는 후보 참조 픽처와 현재 참조 픽처 사이의 시간적 거리에 기초하여 스케일링되어야 한다. [수학식 3]은 후보 모션 벡터(mvcand)가 스케일 인자에 기초하여 스케일링되는 방법을 나타낸다. ScaleFactor는 현재 픽처와 후보 블록(td)의 참조 픽처 사이의 시간적 거리와 현재 픽처와 현재 블록(tb)의 참조 픽처 사이의 시간적 거리에 기초하여 계산된다. 시간적 거리는 픽처의 디스플레이 순서를 정의하는 픽처 순서 카운트(picture order count, POC) 값 사이의 차이로 표현된다. 스케일링 작동은 기본적으로 H.264/AVC에서 시간적 직접 모드를 위해 사용되는 방식과 동일하다. 이러한 팩터링(factoring)이 슬라이스 헤더에서 시그널링된 참조 픽처 리스트 구조에만 의존하기 때문에 슬라이스 레벨에서 ScaleFactor의 사전 계산을 허용한다. MV 스케일링이 현재 참조 픽처와 후보 참조 픽처 모두가 단기 참조 픽처인 경우에만 수행된다는 점에 유의해야 한다. 파라미터 td는 공동으로 위치하는 픽처와 공동으로 위치하는 후보 블록에 대한 참조 픽처 사이의 POC 차이로서 정의된다.
후보 B의 경우, 후보 B0 내지 B2는 제1 패스에서 A0 및 A1이 확인되는 방식과 동일한 방식으로 순차적으로 확인된다. 그러나, 제2 패스는 블록 A0 및 A1이 어떠한 모션 정보를 포함하지 않는 경우, 즉 블록 A0 및 A1이 이용 불가능하거나 또는 픽처 내 예측을 통해 코딩되는 경우에만 수행된다. 그런 다음, 후보 A가 발견되면, 후보 A는 스케일링되지 않은 후보 B와 동일하게 설정되고, 후보 B는 후보 B의 제2 스케일링되지 않은 또는 스케일링된 변형과 동일하게 설정된다. 제2 패스에서, 후보 B0에서 B2까지 스케일링되지 않은 MV 및 스케일링된 MV를 도출하기 위해 검색이 수행된다. 전반적으로, 이러한 설계는 B0, B1 및 B2와 독립적으로 A0 및 A1을 처리하도록 허용된다. B의 도출은 B0에서 B2까지 스케일링된 MV 또는 추가로 스케일링되지 않은 MV를 도출하기 위한 검색을 수행하기 위해 A0 및 A1 모두의 이용 가능성만을 인식해야 한다. 이러한 의존성은 후보 B에 대한 복잡한 모션 벡터 스케일링 작동을 상당히 감소시킨다는 점을 감안할 때 수용 가능하다. 모션 벡터 스케일링의 수량을 줄이는 것은 모션 벡터 예측값 도출 프로세스에서 상당한 복잡성 감소를 나타낸다.
HEVC에서, 현재 블록의 오른쪽 하단과 중앙에 있는 블록은 양호한 시간적 모션 벡터 예측값(temporal motion vector prediction value, TMVP)을 제공하기 위해 가장 적합한 블록으로 결정되었다. 이들 후보 중에서, C0은 오른쪽 하단의 이웃하는 블록을 나타내고, C1은 중앙 블록을 나타낸다. 여기서 다시, C0의 모션 데이터가 먼저 고려된다. C0의 모션 데이터가 이용 불가능한 경우, 중앙에서 공동으로 위치하는 후보 블록의 모션 데이터는 시간적 MVP 후보 C를 도출하는 데 사용된다. C0의 모션 데이터는 또한 연관된 PU가 현재의 CTU 행을 벗어나는 CTU에 속하는 경우에 이용 불가능한 것으로 간주된다. 이것은 공동으로 위치하는 모션 데이터를 저장하기 위한 메모리 대역폭 요구사항을 최소화한다. 모션 벡터가 동일한 참조 픽처를 참조할 수 있는 공간적 MVP 후보와 달리, TMVP에는 모션 벡터 스케일링이 필수이다. 따라서, 공간 MVP와 동일한 스케일링 작동이 사용된다.
H.264/AVC의 시간적 직접 모드가 항상 제2 참조 픽처 리스트, 즉 리스트 1의 제1 참조 픽처를 참조하고, 이중 예측 슬라이스에서만 허용되지만, HEVC는 각각의 픽처에 대해 어떤 참조 픽처가 공동으로 위치하는 픽처로서 간주되는지를 지시할 가능성을 제공한다. 이것은 슬라이스 헤더에서 공동으로 위치하는 참조 픽처 리스트 및 참조 픽처 인덱스를 시그널링하고 픽처의 모든 슬라이스에 있는 이러한 신택스 요소가 동일한 참조 픽처를 지정하도록 요구함으로써 구현된다.
시간적 MVP 후보가 추가적인 의존성을 도입하기 때문에, 시간적 MVP 후보의 사용은 오류 강건성으로 인해 비활성화될 필요가 있을 수 있다. H.264/AVC에서, 슬라이스 헤더(direct_spatial_mv_pred_flag)에서 이중 예측 슬라이스에 대한 시간적 직접 모드를 비활성화할 가능성이 있다. HEVC 신택스는 시퀀스 레벨 또는 픽처 레벨(sps/slice_temporal_mvp_enabled_flag)에서 TMVP를 비활성화하도록 허용함으로써 이러한 시그널링을 확장한다. 슬라이스 헤더에서 플래그가 시그널링되더라도, 플래그의 값이 하나의 픽처의 모든 슬라이스에 대해 동일해야 한다는 것은 비트 스트림 적합성의 요구사항이다. 픽처 레벨 플래그의 시그널링이 SPS 플래그에 의존하기 때문에, PPS에서 픽처 레벨 플래그의 시그널링은 SPS와 PPS 사이에 파싱 의존성을 도입할 수 있다. 이러한 슬라이스 헤더 시그널링의 또 다른 장점은 다음과 같다. 다른 파라미터를 변경하지 않고 PPS에서의 이러한 플래그의 값만이 변경되기를 원하는 경우, 제2 PPS를 전송할 필요가 없다.
일반적으로, HEVC의 모션 데이터 시그널링은 H.264/AVC의 모션 데이터 시그널링과 유사하다. 픽처 간 예측 신택스 요소 inter_pred_idc는 참조 리스트 0, 참조 리스트 1 또는 참조 리스트 0과 참조 리스트 1 모두가 사용되는지 여부를 시그널링한다. 하나의 참조 픽처 리스트에서 획득된 각각의 MCP에 대해, 대응하는 참조 픽처(Δt)는 참조 픽처 리스트 ref_idx_l0/1에 대한 인덱스로 시그널링되고, MV(Δx, Δy)는 MVP mvp_l0/1_flag 및 MVP의 MVD에 대한 인덱스에 의해 표현된다. 슬라이스 헤더에 새로 도입된 플래그 mvd_l1_zero_flag는 제2 참조 픽처 리스트에 대한 MVD가 0과 같은지 여부를 지시하므로, 비트스트림으로 시그널링되지 않는다. 모션 벡터가 완전히 재구축되는 경우, 최종 클리핑 작동은 최종 모션 벡터의 각각의 성분 값이 항상 -215 내지 215 - 1 내에 속함을 보장한다.
픽처 간 예측 블로흐(Bloch) 병합
AMVP 리스트는 하나의 참조 리스트에 대한 모션 벡터만을 포함하고, 반면에 병합 후보는 각각의 리스트에 대해 참조 인덱스 및 모션 벡터는 물론 하나 또는 두 개의 참조 픽처 리스트가 사용되는지 여부에 대한 정보를 포함하는 모든 모션 데이터를 포함한다. 전체적으로, 병합 후보 리스트는 다음의 후보, 즉 a. 5개의 공간적 이웃하는 블록에서 도출된 최대 4개의 공간적 병합 후보, b. 2개의 시간적으로 공동으로 위치하는 블록으로부터 도출된 하나의 시간적 병합 후보, 및 c. 결합된 이중 예측 후보 및 제로 모션 벡터 후보를 포함하는 추가 병합 후보에 기초하여 구축된다.
병합 후보 리스트의 제1 후보는 공간적 이웃이다. A1, B1, B0, A0, B2는 순차적으로 확인되며, 최대 4개의 후보가 이러한 순서대로 병합 리스트에 삽입될 수 있다.
단지 이웃하는 블록이 이용 가능하고 모션 정보를 포함하고 있는지 여부를 확인하는 대신에, 이웃하는 블록의 모든 모션 데이터가 병합 후보로서 사용되기 전에 일부 추가적인 중복 확인이 수행된다. 이러한 중복 확인은 두 가지 목적, 즉 a. 리스트에 중복 모션 데이터를 갖는 후보를 피하는 목적, 및 b. 중복 신택스를 생성할 수 있는 다른 수단에 의해 표현될 수 있는 두 개의 파티션의 병합을 방지하는 목적을 위해 두 가지 범주로 분할될 수 있다.
N이 공간적 병합 후보의 수량을 나타내는 경우, 완전한 중복 확인은 모션 데이터 비교로 구성된다. 5개의 잠재적인 공간적 병합 후보의 경우, 병합 리스트의 모든 후보가 서로 다른 모션 데이터를 갖는 것을 보장하기 위해 10개의 모션 데이터 비교가 수행되어야 한다. HEVC의 개발 동안, 비교 로직이 크게 감소하면서 코딩 효율성이 유지될 수 있도록 중복 모션 데이터에 대한 확인이 서브 세트로 축소되었다. 최종 설계에서, 후보 당 두 번 이하의 비교가 수행되며, 총 다섯 번의 비교가 있다. {A1, B1, B0, A0, B2}의 순서가 주어지면, B0은 B1만을 확인하고, A0은 A1만을 확인하며 B2는 A1 및 B1만을 확인한다. 분할 중복 확인이 수행되는 실시예에서, 2N × N 분할의 하부 PU는 후보 B1을 선택함으로써 상부 PU와 병합된다. 이 경우, 하나의 CU는 동일한 모션 데이터를 가진 두 개의 PU를 갖는다. CU는 2N × 2N CU로서 동일하게 시그널링될 수 있다. 전반적으로, 이러한 확인은 직사각형 및 비대칭 분할, 2N × N, 2N × nU, 2N × nD, N × 2N, nR × 2N 및 nL × 2N의 제2 PU 모두에 대해 적용된다. 공간적 병합 후보에 대해, 중복 확인만이 수행되고 모션 데이터는 후보 블록에서 그대로 복사된다는 점에 유의해야 한다. 따라서, 여기에서는 모션 벡터 스케일링이 필요하지 않다.
시간적 병합 후보의 모션 벡터는 TMVP를 도출하는 방식과 동일한 방식으로 도출된다. 병합 후보가 모든 모션 데이터를 포함하고 TMVP가 하나의 모션 벡터일 뿐이므로, 전체 모션 데이터의 도출은 슬라이스 유형에만 의존한다. 이중 예측 슬라이스의 경우, 각각의 참조 픽처 리스트에 대해 TMVP가 도출된다. 각각의 리스트에 대한 TMVP의 이용 가능성에 따라, 예측 유형은 이중 예측 또는 TMVP가 이용 가능한 리스트로 설정된다. 모든 연관된 참조 픽처 인덱스는 0과 같이 설정된다. 따라서, 단일 예측 슬라이스의 경우, 리스트 0에 대한 TMVP만이 0과 같은 참조 픽처 인덱스와 함께 도출된다.
적어도 하나의 TMVP가 이용 가능하고 시간적 병합 후보가 리스트에 추가되는 경우, 중복 확인이 수행되지 않는다. 이것은 공동 위치하는 픽처와 독립적으로 병합 리스트를 구성할 수 있으므로, 오류 복원력이 향상된다. 시간적 병합 후보가 중복되어 병합 후보 리스트에 포함되지 않는 경우가 고려되고, 공동으로 위치하는 픽처가 손실되는 경우, 디코더는 시간적 후보를 도출할 수 없으므로, 시간적 후보가 쓸모없는지 여부를 확인하지 않는다. 이는 모든 후속 후보의 인덱싱에 영향을 미친다.
파싱 강건성을 위해, 병합 후보 리스트는 고정 길이를 갖는다. 공간적 및 시간적 병합 후보가 추가된 후에, 리스트는 여전히 고정 길이에 도달하지 못할 수 있다. 길이가 아닌 적응형 리스트 인덱스 시그널링(non-length adaptive list index signaling)과 함께 발생하는 코딩 효율성 손실을 보상하기 위해, 추가 후보가 생성된다. 슬라이스 유형에 따라, 최대 두 가지 유형의 후보, 즉 a. 결합된 이중 예측 후보, 및 b. 제로 모션 벡터 후보가 리스트를 완전히 채우기 위해 사용될 수 있다.
이중 예측 슬라이스에서, 추가 후보는 한 후보의 참조 픽처 list-0 모션 데이터와 다른 후보의 참조 픽처 list-1 모션 데이터를 결합함으로써 기존 후보에 기초하여 생성될 수 있다. 이는 제1 후보와 같은 한 후보에서 Δx0, Δy0 및 Δt0을 복사하고 제2 후보와 같은 다른 후보에서 Δx1, Δy1 및 Δt1을 복사함으로써 구현된다. 다양한 조합이 미리 정의되어 있으며 [표 1]에서 주어진다.
결합된 이중 예측 후보가 추가된 후에도 리스트가 여전히 가득차 있지 않거나 단일 예측 슬라이스에 대해 가득차지 않은 경우, 리스트를 완성하기 위해 제로 모션 벡터 후보가 계산된다. 모든 제로 모션 벡터 후보는 단일 예측 슬라이스에 대해 하나의 제로 변위 모션 벡터와 이중 예측 슬라이스에 대해 두 개의 제로 변위 모션 벡터를 갖는다. 참조 인덱스는 0으로 설정되며 참조 인덱스의 최대 수량에 도달할 때까지 각각의 추가 후보에 대해 1씩 증가된다. 이 경우, 여전히 다른 후보가 누락된 경우, 0과 같은 참조 인덱스가 이들 후보를 생성하는 데 사용된다. 모든 추가 후보에 대해, 이러한 확인을 생략해도 코딩 효율성 손실이 발생하지 않는 것으로 나타났기 때문에 중복 확인이 수행되지 않는다.
픽처 간 예측 모드에 기초하여 코딩된 각각의 PU에 대해, merge_flag는 블록 병합이 모션 데이터를 도출하는 데 사용됨을 지시하고, merge_idx는 병합 리스트에 있으면서 MCP에 대해 필요한 모든 모션 데이터를 제공하는 후보를 결정하는 데 추가로 사용된다. 이러한 PU 레벨 시그널링에 추가하여, 병합 리스트의 후보 수량은 슬라이스 헤더에서 시그널링된다. 디폴트값이 5이기 때문에, 5에 대한 차이(five_minus_max_num_merge_cand)로 표현된다. 이런 식으로, 5는 0에 대한 짧은 코드워드로 시그널링된다. 하나의 후보만이 사용되면, 5는 4에 대한 더 긴 코드워드로 시그널링된다. 병합 후보 리스트 구축 프로세스에 대한 영향에 대해, 리스트가 최대 병합 후보의 수량을 포함한 후 프로세스가 종료되더라도 전체 프로세스는 동일하게 유지된다. 초기 설계에서, 병합 인덱스의 코딩을 위한 최대값은 리스트에서 이용 가능한 공간적 및 시간적 후보의 수량에 의해 주어진다. 예를 들어, 두 개의 후보만이 이용 가능한 경우, 인덱스는 효율적으로 플래그로서 코딩될 수 있다. 그러나, 병합 인덱스를 파싱하기 위해, 후보의 실제 수량을 알 수 있도록 전체 병합 후보 리스트가 구축되어야 한다. 전송 오류로 인해 이웃하는 블록이 이용 불가능한 것으로 가정하면, 병합 인덱스는 더 이상 파싱될 수 없다.
HEVC에서 블록 병합 개념의 중요한 적용은 스킵 모드와의 결합이다. 이전의 비디오 코딩 표준에서, 스킵 모드는 모션 데이터가 명시적으로 시그널링되는 대신에 추론되며 또한 예측 잔여가 0인 블록에 대해 지시하는 데 사용된다. 즉, 변환 계수는 전송되지 않는다. HEVC에서, 픽처 간 예측 슬라이스에서 각각의 CU의 시작에서, 다음을 의미하는 skip_flag가 시그널링된다. a. CU는 하나의 PU(2N × 2N 분할 유형)만을 포함한다. b. 병합 모드는 모션 데이터를 도출하는 데 사용된다(merge_flag는 1과 같음). c. 비트스트림에는 잔여 데이터가 없다.
영역을 지시하는 병렬 병합 추정 레벨이 HEVC에 도입된다. 병합 후보 리스트는 후보 블록이 해당 병합 추정 영역(merge estimation region, MER)에 위치하는지 여부를 확인함으로써 독립적으로 도출될 수 있다. 동일한 MER에서의 후보 블록은 병합 후보 리스트에 포함되지 않는다. 따라서, 후보 블록의 모션 데이터는 리스트의 구축 동안 이용 가능할 필요가 없다. 예를 들어, 이러한 레벨이 32인 경우, 32 × 32 영역의 모든 예측 유닛은 동일한 32 × 32 MER의 모든 병합 후보가 리스트에 삽입되지 않기 때문에 병합 후보 리스트를 병렬로 구축하는 데 사용될 수 있다. 모든 잠재적인 병합 후보가 처음 32 × 32 MER 외부에 있기 때문에, 처음 PU 0에 대해 모든 잠재적인 병합 후보가 이용 가능하다. 두 번째 MER의 경우, MER 내부의 병합 추정이 독립적이어야 하는 경우 PU 2 내지 6에 대한 병합 후보 리스트는 이러한 PU의 모션 데이터를 포함할 수 없다. 따라서, 예를 들어 PU 5가 보여지는 경우, 병합 후보는 이용 불가능하므로 병합 후보 리스트에 삽입되지 않는다. 이 경우, PU5에 대한 병합 리스트는 시간적 후보(이용 가능한 경우)와 제로 MV 후보만을 포함한다. 인코더가 병렬성과 코딩 효율성을 절충할 수 있도록, 병렬 병합 추정 레벨은 적응적이며 픽처 파라미터 세트에서 log2_parallel_merge_level_minus2로서 시그널링된다.
서브 CU 기반 모션 벡터 예측
QTBT를 사용하여 새로운 비디오 코딩 기술을 개발하는 동안, 각각의 CU는 각각의 예측 방향에 대해 최대 한 세트의 모션 파라미터를 가질 수 있다. 인코더에서는 큰 CU를 서브 CU로 분할하고 큰 CU의 모든 서브 CU에 대해 모션 정보를 도출함으로써 두 가지 서브 CU 레벨 모션 벡터 예측 방법이 고려된다. 대안적인 시간적 모션 벡터 예측(alternative temporal motion vector prediction, ATMVP) 방법은 각각의 CU가 병치된 참조 픽처에서 현재 CU보다 작은 복수의 블록으로부터 복수의 모션 정보 세트를 페치할 수 있게 한다. 공간적-시간적 모션 벡터 예측(Spatial-temporal Motion Vector Prediction, STMVP) 방법에서, 시간적 모션 벡터 예측값 및 공간적 이웃 모션 벡터를 사용함으로써 서브 CU의 모션 벡터가 재귀 적으로 도출된다.
서브 CU 모션 예측을 위한 보다 정확한 모션 필드를 보존하기 위해, 참조 프레임에 대한 모션 압축이 현재 비활성화되어 있다.
대안적인 시간적 모션 벡터 예측
대안적인 시간적 모션 벡터 예측(alternative temporal motion vector prediction, ATMVP) 방법에서, 모션 벡터에 대한 시간적 모션 벡터 예측(temporal motion vector prediction, TMVP)은 현재 CU보다 작은 블록으로부터 복수의 모션 정보 세트(모션 벡터 및 참조 인덱스를 포함함)를 페치함으로써 수정된다. 서브 CU는 정사각형 N × N 블록이다(여기서 N은 디폴트로 4로 설정됨).
ATMVP는 두 단계로 CU 내의 서브 CU의 모션 벡터를 예측한다. 제1 단계는 시간적 벡터를 사용하여 참조 픽처에서 대응하는 블록을 식별하는 것이다. 참조 픽처는 모션 소스 픽처라고 한다. 제2 단계는 현재 CU를 서브 CU로 분할하고 서브 CU에 대응하는 블록으로부터 각각의 서브 CU의 모션 벡터 및 참조 인덱스를 획득하는 것이다.
제1 단계에서, 참조 픽처 및 대응하는 블록은 현재 CU의 공간적으로 이웃하는 블록의 모션 정보에 기초하여 결정된다. 이웃하는 블록에 대한 반복적인 스캐닝 프로세스를 피하기 위해, 현재 CU에 대한 병합 후보 리스트의 제1 병합 후보가 사용된다. 제1 이용 가능한 모션 벡터 및 제1 이용 가능한 모션 벡터와 연관된 참조 인덱스는 모션 소스 픽처의 시간적 벡터 및 인덱스로 설정된다. 이와 같이 TMVP와 비교하면, ATMVP에서, 대응하는 블록이 보다 정확하게 식별될 수 있다. TMVP에서, 대응하는 블록(때대로 병치된 블록이라고도 함)은 항상 현재 CU에 대해 오른쪽 하단 또는 중앙 위치에 있다.
제2 단계에서, 서브 CU의 대응하는 블록은 현재 CU의 좌표에 시간적 벡터를 추가함으로써 모션 소스 픽처의 시간적 벡터에 의해 식별된다. 각각의 서브 CU에 대해, 서브 CU의 대응하는 블록(중앙 샘플을 커버하는 가장 작은 모션 그리드)의 모션 정보는 서브 CU에 대한 모션 정보를 도출하는 데 사용된다. 대응하는 N × N 블록의 모션 정보가 식별된 후, 모션 정보는 HEVC의 TMVP와 동일한 방식으로 현재 서브 CU의 모션 벡터 및 참조 인덱스로 변환되고, 모션 스케일링 및 다른 절차가 적용된다. 예를 들어, 디코더는 저 지연 조건(즉, 현재 픽처의 모든 참조 픽처의 POC가 현재 픽처의 POC보다 작음)이 만족되는지 여부를 확인하고, 가능하면 각각의 서브 CU에 대해 모션 벡터 MVy(X는 0 또는 1과 같고 Y는 1 - X와 같음)를 예측하기 위해 모션 벡터 MVx(참조 픽처 리스트 X에 대응하는 모션 벡터)를 사용할 수 있다.
공간적-시간적 모션 벡터 예측
이러한 방법에서, 서브 CU의 모션 벡터는 래스터 스캔 순서에 따라 재귀적으로 도출된다. 8 × 8 CU가 4개의 4 × 4 서브 CU A, B, C 및 D를 포함하는 것이 고려된다. 현재 프레임에서 이웃하는 4 × 4 블록은 a, b, c 및 d로 레이블링된다.
서브 CU A에 대한 모션 도출은 서브 CU A의 2개의 공간적 이웃을 식별하는 것으로 시작한다. 제1 이웃은 서브 CU A 위의 N × N 블록(즉, 블록 c)이다. 블록 c가 이용 불가능하거나 또는 인트라 코딩된 경우, 서브 CU A 위의 다른 N × N 블록이 확인된다(블록 c에서 시작하여 왼쪽에서 오른쪽으로). 제2 이웃은 서브 CU A의 왼쪽에 있는 블록(즉, 블록 b)이다. 블록 b가 이용 불가능하거나 또는 인트라 코딩된 경우, 서브 CU A의 왼쪽에 있는 다른 블록이 확인된다(블록 b에서 시작하여 위에서 아래로). 각각의 리스트에 대한 이웃하는 블록으로부터 획득된 모션 정보는 주어진 리스트에 대해 제1 참조 프레임으로 스케일링된다. 다음으로, 서브 블록 A의 시간적 모션 벡터 예측값(temporal motion vector prediction value, TMVP)은 HEVC에 지정된 것과 동일한 TMVP 도출 절차에 따라 도출된다. 위치 D에서 병치 된 블록의 모션 정보가 페치되고 그에 따라 스케일링된다. 마지막으로, 모션 정보가 검색되어 스케일링된 후, 모든 이용 가능한 모션 벡터(최대 3 개)가 각각의 참조 리스트에 대해 개별적으로 평균화된다. 평균화된 모션 벡터는 현재 서브 CU의 모션 벡터로서 할당된다.
병합 모드와의 결합
추가 병합 후보로서, 서브 CU 모드가 활성화되고 모드를 시그널링하기 위해 추가 신택스 요소는 필요하지 않다. ATMVP 모드와 STMVP 모드를 나타내기 위해 각각의 CU에 대한 병합 후보 리스트에 두 개의 추가 병합 후보가 추가된다. 시퀀스 파라미터 세트가 ATMVP 및 STMVP가 활성화되어 있음을 지시하는 경우, 최대 7개의 병합 후보가 사용된다. 추가 병합 후보의 인코딩 로직은 HM에서 병합 후보의 인코딩 로직과 동일한다. 이것은 P 또는 B 슬라이스의 각각의 CU에 대해, 두 개의 추가 병합 후보에 대해 두 번 이상의 RD 확인이 수행되어야 함을 의미한다.
아핀(Affine) 모션 보상 예측
블록의 아핀 모션 필드는 두 개의 제어 포인트 모션 벡터를 사용함으로써 설명된다.
블록의 모션 벡터 필드(motion vector field, MVF)는 다음의 수학식에 따라 설명된다.
여기서, (v0x, v0xy)는 왼쪽 상단 모서리 제어 포인트의 모션 벡터를 나타내고, (v1x, vxy)는 오른쪽 상단 모서리 제어 포인트의 모션 벡터를 나타낸다.
모션 보상 예측을 더욱 단순화하기 위해, 서브 블록 기반 아핀 변환 예측이 적용된다. 서브 블록 크기 M × N은 [수학식 7]에 따라 도출되며, 여기서 MvPre는 모션 벡터 프랙션 정확도(예를 들어, 1/16)를 나타내고, (v2x, v2xy)는 [수학식 6]에 따라 계산된 왼쪽 하단 제어 포인트의 모션 벡터를 나타낸다.
서브 블록 크기 M × N이 [수학식 7]에 따라 도출된 후, 필요한 경우 M과 N을 각각 w와 h의 제수(divisor)로 만들기 위해 M과 N이 하향 조정되어야 한다.
각각의 M × N 서브 블록의 모션 벡터를 도출하기 위해, 서브 블록의 중앙 샘플의 모션 벡터는 [수학식 6]에 따라 계산되고, 1/16 프랙션 정확도로 반올림된다.
아핀 인터 모드
폭과 높이가 모두 8보다 큰 CU의 경우, AF_INTER 모드가 적용될 수 있다. CU 레벨의 아핀 플래그는 AF_INTER 모드가 사용되는지 여부를 지시하기 위해 비트스트림으로 시그널링된다. 이러한 모드에서, 이웃하는 블록을 사용하여 모션 벡터 쌍 을 갖는 후보 리스트가 구축된다. 는 블록 A, B 또는 C의 모션 벡터로부터 선택된다. 이웃하는 블록의 모션 벡터는 참조 리스트 및 이웃하는 블록에 대한 참조의 POC, 현재 CU에 대한 참조의 POC 및 현재 CU의 POC 사이의 관계에 따라 스케일링된다. 이웃하는 블록 D와 E로부터 을 선택하는 데 사용되는 접근 방식은 유사한다. 후보 리스트의 수량이 2보다 작은 경우, 리스트는 각각의 AMVP 후보를 복제하여 구성된 모션 벡터 쌍으로 채워진다. 후보 리스트의 수량이 2보다 큰 경우, 후보는 이웃하는 모션 벡터의 일관성(쌍 후보에서 두 개의모션 벡터의 유사성)에 따라 먼저 정렬되고 처음 두 개의 후보만이 유지된다. RD 비용 확인은 현재 CU의 제어 포인트 모션 벡터 예측(control point motion vector prediction, CPMVP)으로 어떤 모션 벡터 쌍 후보가 선택되는지를 결정하는 데 사용되며, 후보 리스트에서 CPMVP의 위치를 지시하는 인덱스가 비트스트림으로 시그널링된다. CPMV와 CPMVP 사이의 차이는 비트스트림으로 시그널링된다.
아핀 병합 모드
AF_MERGE 모드에서 CU가 적용되는 경우, 아핀 모드에 기초하여 코딩된 제1 블록은 유효한 이웃하는 재구축된 블록에서 획득된다. 후보 블록의 선택 순서는 왼쪽, 상단, 오른쪽 상단, 왼쪽 하단, 왼쪽 상단이다. 아핀 모드에 기초하여 왼쪽 하단 이웃 블록 A가 코딩되면, 블록 A를 포함하는 CU의 왼쪽 상단, 오른쪽 상단, 왼쪽 하단 모션 벡터 , 가 도출된다. 또한, 현재 CU의 왼쪽 상단 모션 벡터 , 에 따라 계산된다. 그런 다음, 현재 CU의 오른쪽 상단 모션 벡터 이 계산된다.
AF_MERGE 모드에 기초하여 현재 CU가 코딩되었는지를 식별하기 위해, 아핀 모드에 기초하여 코딩된 이웃하는 블록이 적어도 하나가 있는 경우, 아핀 플래그가 비트스트림으로 시그널링된다.
패턴 매칭 모션 벡터 도출
패턴 매칭 모션 벡터 도출(pattern matched motion vector derivation, PMMVD) 모드는 프레임 레이트 업 변환(Frame-Rate Up Conversion, FRUC) 기술에 기초한다. 이러한 모드에서, 블록의 모션 정보는 시그널링되지 않지만, 디코더 측에서 도출된다.
CU의 병합 플래그가 참인 경우, CU의 FRUC 플래그가 시그널링된다. FRUC 플래그가 거짓인 경우, 병합 인덱스가 시그널링되고, 정규적인 병합 모드가 사용된다. FRUC 플래그가 참인 경우, 블록의 모션 정보를 도출하는 데 사용될 방법(양방향 매칭 또는 템플릿 매칭)을 지시하기 위해 추가 FRUC 모드 플래그가 시그널링된다.
인코더 측에서, CU에 대해 FRUC 병합 모드를 사용할지 여부에 대한 결정은 일반 병합 후보에 대해 수행된 RD 비용 선택에 기초한다. 즉, RD 비용 선택을 사용하여 CU에 대해 두 가지 매칭 모드(양방향 매칭 및 템플릿 매칭)가 모두 확인된다. 최소 비용으로 이어지는 모드는 다른 CU 모드와 추가로 비교된다. FRUC 매칭 모드가 가장 효율적인 모드라면, FRUC 플래그는 CU에 대해 참으로 설정되고, 관련된 매칭 모드가 사용된다.
FRUC 병합 모드에서의 모션 도출 프로세스는 두 개의 단계를 포함한다. CU 레벨 모션 검색이 먼저 수행된 다음, 서브 CU 레벨 모션 정제가 수행된다. CU 레벨에서, 양방향 매칭 또는 템플릿 매칭에 기초하여 전체 CU에 대해 초기 모션 벡터가 도출된다. 먼저, MV 후보의 리스트가 생성되고, 최소 매칭 비용으로 이어지는 후보가 추가 CU 레벨 정제를 위한 시작점으로 선택된다. 그런 다음, 시작점을 중심으로 양방향 매칭 또는 템플릿 매칭에 기초한 로컬 검색이 수행되고 최소 매칭 비용으로 이어지는 MV가 전체 CU의 MV로 사용된다. 그 후, 도출된 CU 모션 벡터를 시작점으로 사용하여 서브 CU 레벨에서 모션 정보가 더 정제된다.
예를 들어, W × H CU의 모션 정보 도출을 위해 다음과 같은 도출 프로세스가 수행된다. 제1 단계에서, 전체 W × H CU의 MV가 도출된다. 제2 단계에서, CU는 M × M개의 서브 CU로 더 분할된다. M값은 [수학식 8]에 따라 계산되고, D는 미리 정의된 분할 깊이를 나타내며, JEM에서 디폴트로 3으로 설정된다. 그런 다음, 각각의 서브 CU의 MV가 도출된다.
양방향 매칭은 두 개의 다른 참조 픽처에서 현재 CU의 모션 궤적을 따라 두 개의 블록 사이에서 가장 가까운 매칭을 찾음으로써 현재 CU의 모션 정보를 도출하는 데 사용된다. 연속적인 모션 궤적의 가정하에, 두 개의 참조 블록을 가리키는 모션 벡터 MV0 및 MV1은 현재 픽처와 두 개의 참조 픽처 사이의 시간적 거리, 즉 TD0 및 TD1에 비례해야 한다. 현재 픽처가 두 개의 참조 픽처 사이에 시간적으로 존재하고 현재 픽처와 두 개의 참조 픽처 사이의 시간적 거리가 동일한 경우, 양방향 매칭은 미러 기반 양방향 MV가 된다.
양방향 매칭 병합 모드에서, CU의 모션 정보가 두 개의 서로 다른 참조 픽처에서 현재 CU의 모션 궤적을 따라 두 개의 블록 사이의 가장 가까운 매칭에 기초하여 도출되기 때문에 양방향 예측이 항상 적용된다. 템플릿 매칭 병합 모드에 대해서는 이러한 제한이 없다. 템플릿 매칭 병합 모드에서, 인코더는 리스트 0에서 단일 예측, 리스트 1에서 단일 예측 또는 CU에 대한 이중 예측을 선택할 수 있다. 선택은 다음과 같이 템플릿 매칭 비용에 기초한다.
If costBi <= factor * min(cost0, cost1),
이중 예측이 사용됨;
Otherwise, if cost0 <= cost1,
리스트 0으로부터의 단일 예측이 사용됨;
Otherwise,
리스트 1로부터의 단일 예측이 사용됨.
cost0은 list-0 템플릿 매칭의 SAD를 나타내고, cost1은 list-1 템플릿 매칭의 SAD를 나타내며, costBi는 이중 예측 템플릿 매칭의 SAD를 나타낸다. 인자의 값은 1.25와 같으며, 이는 선택 프로세스가 이중 예측쪽으로 치우쳐 있음을 의미한다. 인터 예측 방향의 선택은 CU 레벨 템플릿 매칭 프로세스에만 적용된다.
템플릿 매칭은 현재 픽처에서의 템플릿(현재 CU의 상단 및/또는 왼쪽 이웃하는 블록)과 참조 픽처에서의 블록(템플릿과 동일한 크기를 가짐) 사이에서 가장 가까운 매칭을 찾음으로써 현재 CU의 모션 정보를 도출하는 데 사용된다. 전술한 FRUC 병합 모드를 제외하고, 템플릿 매칭은 또한 AMVP 모드에 적용된다. 새로운 후보는 템플릿 매칭 방법을 사용하여 도출된다. 템플릿 매칭을 통해 도출된 새로운 후보가 제1 기존의 AMVP 후보와 다른 경우, 새로운 후보는 AMVP 후보 리스트의 맨 처음에 삽입되고, 그 후 리스트의 크기는 2로 설정된다(이것은 제2 기존의 AMVP 후보가 제거됨을 의미함). AMVP 모드에 템플릿 매칭이 적용되는 경우, CU 레벨 검색만이 적용된다.
CU 레벨에서 설정된 MV 후보는 다음을 포함한다: a. AMVP 모드가 현재 CU에 사용되는 경우 선택된 원래 AMVP 후보; b. 모든 병합 후보; c. 보간된 MV 필드의 여러 MV; 그리고 d. 위 및 왼쪽의 이웃하는 모션 벡터.
위에서 언급된 보간된 MV 필드는 전체 픽처가 일방향 ME에 기초하여 코딩되기 전에 생성된다는 점에 유의해야 한다. 이후, 모션 필드는 CU 레벨 또는 서브 CU 레벨 MV 후보로 사용될 수 있다. 먼저, 두 개의 참조 리스트에 있는 각각의 참조 픽처의 모션 필드는 4 × 4 블록 레벨에서 순회된다. 각각의 4 × 4 블록에 대해, 블록과 연관된 모션이 현재 픽처의 4 × 4 블록을 통과하고 블록에 보간된 모션이 할당되지 않은 경우, 참조 블록의 모션은 시간적 거리 TD0 및 TD1(HEVC의 TMVP의 MV 스케일링과 동일한 방식으로)에 기초하여 현재 픽처에 대해 스케일링되고, 스케일링된 모션이 현재 프레임의 블록에 할당된다. 스케일링된 MV가 4 × 4 블록에 할당되지 않은 경우, 블록의 모션은 보간된 모션 필드에서 이용 불가능한 것으로 표시된다.
양방향 매칭이 사용되는 경우, 병합 후보의 각각의 유효한 MV는 양방향 매칭을 가정하여 MV 쌍을 생성하기 위한 입력으로 사용된다. 예를 들어, 병합 후보의 하나의 유효한 MV는 참조 리스트 A에서의 (MVa, refa)이다. 그런 다음, 쌍을 이룬 양방향 MV의 참조 픽처 refb는 다른 참조 리스트 B에서 발견된다. 이러한 방식으로, refa 및 refb는 현재 픽처의 다른면에 일시적으로 위치한다. 참조 리스트 B에서 이러한 refb가 이용 불가능한 경우, refb는 refa와 다른 참조로 결정되고, refb와 현재 픽처 사이의 시간적 거리는 리스트 B에서 최소값이다. refb가 결정된 후, MVb는 현재 픽처와 refa 사이 및 현재 픽처와 refb 사이의 시간적 거리에 기초하여 MVa를 스케일링함으로써 도출된다.
보간된 MV 필드로부터의 4개의 MV는 또한 CU 레벨 후보 리스트에 추가된다. 보다 구체적으로, 현재 CU의 위치 (0, 0), (W/2, 0), (0, H/2) 및 (W/2, H/2)에서 보간된 MV가 추가된다.
FRUC가 AMVP 모드에 적용되는 경우, 원래의 AMVP 후보는 또한 CU 레벨 MV 후보 세트에 추가된다.
CU 레벨에서, 최대 15개의 AMVP CU의 MV 및 최대 13개의 병합 CU의 MV가 후보 리스트에 추가된다.
서브 CU 레벨에서 설정된 MV 후보는 a. CU 레벨 검색에서 결정된 MV; b. 상단, 왼쪽, 왼쪽 상단 및 오른쪽 상단의 이웃하는 MV; c. 참조 픽처로부터 병치된 MV의 스케일링된 버전; d. 최대 4개의 ATMVP 후보; 및 e. 최대 4개의 STMVP 후보를 포함한다.
참조 픽처로부터 스케일링된 MV는 다음과 같이 유도된다. 양쪽 리스트의 모든 참조 픽처가 순회되고, 참조 픽처에서 서브 CU의 병치된 위치에 있는 MV는 시작되는 CU 레벨 MV의 참조로 스케일링된다.
ATMVP 및 STMVP 후보는 4개의 첫 번째 후보로 제한된다.
서브 CU 레벨에서, 최대 17개의 MV가 후보 리스트에 추가된다.
모션 벡터 정제
모션 벡터는 상이한 인터 예측 모드와 결합된 상이한 방법을 사용함으로써 정제될 수 있다.
FRUC에서의 MV 정제
MV 정제는 양방향 매칭 비용 또는 템플릿 매칭 비용의 기준을 갖는 패턴 기반 MV 검색이다. 현재의 개발에서, 두 가지 검색 패턴, 즉 무제한 중심 편향 다이아몬드 검색(unrestricted center-biased diamond search, UCBDS)과 CU 레벨 및 서브 CU 레벨에서 MV 정제를 위해 사용되는 적응형 교차 검색이 지원된다. CU 레벨 및 서브 CU 레벨 MV 정제 모두에서, MV는 1/4 루마 샘플 MV 정확도로 직접 검색되고, 이 후 1/8 루마 샘플 MV 정제가 이어진다. CU 및 서브 CU 단계에 대한 MV 정제의 검색 범위는 8 루마 샘플과 동일하게 설정된다.
디코더 측 모션 벡터 정제
이중 예측 작동에서, 하나의 블록 영역을 예측하기 위해, 각각 list-0 MV와 list-1 MV를 사용하여 형성된 두 개의 예측 블록이 결합되어 단일 예측 신호를 형성한다. 디코더 측 모션 벡터 정제(decoder-side motion vector refinement, DMVR) 방법에서, 양방향 템플릿 매칭 프로세스를 사용하여 이중 예측의 두 개의 모션 벡터가 더 정제된다. 양방향 템플릿 매칭은 디코더에 적용되어, 참조 픽처에서 양방향 템플릿과 재구축된 샘플 사이의 왜곡 기반 검색을 수행하고, 추가적인 모션 정보를 전송하지 않고 정제된 MV를 획득한다.
DMVR에서, 초기 list-0 MV 0 및 list-1 MV 1 각각으로부터 두 개의 예측 블록의 가중 결합(즉, 평균)으로서 양방향 템플릿이 생성된다. 템플릿 매칭 작동은 참조 픽처에서 생성된 템플릿과 샘플 영역(초기 예측 블록 주변) 사이의 비용 측정을 계산하는 것을 포함한다. 두 개의 참조 픽처 각각에 대해, 최소 템플릿 비용을 산출하는 MV는 원래 MV를 대체하기 위해 리스트에 대해 업데이트된 MV로 간주된다. 현재의 개발에서, 9개의 MV 후보가 각각의 리스트에 대해 검색된다. 9개의 MV 후보는 원래의 MV와 수평 방향과 수직 방향 중 하나 또는 수평 방향과 수직 방향 모두에서 원래의 MV에 대해 1개의 루마 샘플 오프셋된 8개의 주변 MV를 포함한다. 마지막으로, 두 개의 새로운 MV, 즉 MV 0'과 MV 1'이 최종 이중 예측 결과를 생성하는 데 사용된다. 절대 차이의 합(sum of absolute difference, SAD)이 비용 측정으로서 사용된다.
DMVR은 추가적인 신택스 요소를 전송하지 않고 과거의 참조 픽처의 하나의 MV와 미래의 참조 픽처의 또 다른 MV를 사용하여 이중 예측의 병합 모드에 적용된다.
모션 데이터 정밀도 및 저장
모션 데이터 저장 감소
병합 모드에서뿐만 아니라 AMVP에서 TMVP의 사용은 공동으로 위치한 참조 픽처에서 모션 데이터(모션 벡터, 참조 인덱스 및 코딩 모드 포함함)의 저장을 필요로 한다. 모션 표현의 입도를 고려할 때, 모션 데이터를 저장하는 데 필요한 메모리 크기는 상당하다. HEVC는 모션 데이터 저장 축소(motion data storage reduction, MDSR)를 사용하여 참조 픽처에서 모션 데이터를 서브 샘플링하여 모션 데이터 버퍼 및 연관된 메모리 액세스 대역폭의 크기를 줄이다. H.264/AVC에서 정보가 4 × 4 블록 단위로 저장되지만, HEVC에서는 16 × 16 블록이 사용된다. 4 × 4 그리드를 서브 샘플링하는 경우, 좌측 상단 4 × 4 블록의 정보가 저장된다. 이러한 서브 샘플링으로 인해, MDSR은 시간적 예측의 품질에 영향을 미친다.
또한, 공동으로 위치하는 픽처에서 사용되는 MV의 위치와 MDSR을 사용하여 저장된 MV의 위치 사이에는 밀접한 상관관계가 있다. HEVC의 표준화 프로세스 동안, 오른쪽 하단 및 중앙 TMVP 후보와 함께 16 × 16 영역 내에 왼쪽 상단 블록의 모션 데이터를 저장하면 코딩 효율성과 메모리 대역폭 감소 사이에서 최상의 절충안을 제공하는 것으로 밝혀졌다.
더 높은 모션 벡터 저장 정확도
HEVC에서, 모션 벡터 정확도는 1/4 픽셀(4:2:0 비디오의 경우 1/4 루마 샘플 및 1/8 크로마 샘플)이다. 현재의 개발에서, 내부 모션 벡터 저장 및 병합 후보에 대한 정확도가 1/16 픽셀로 증가한다. 더 높은 모션 벡터 정확도(1/16 픽셀)는 스킵/병합 모드에 기초하여 코딩된 CU에 대한 모션 보상 인터 예측에서 사용된다. 일반 AMVP 모드에 기초하여 코딩된 CU의 경우, 정수 픽셀 모션 또는 1/4 픽셀 모션이 사용된다.
적응형 모션 벡터 차이 해상도
HEVC에서, 슬라이스 헤더에서 use_integer_mv_flag가 0인 경우 모션 벡터 차이(motion vector difference, MVD)가 1/4 루마 샘플 단위로 시그널링된다. 현재의 개발에서, 로컬 적응형 모션 벡터 해상도(locally adaptive motion vector resolution, LAMVR)가 도입된다. MVD는 1/4 루마 샘플, 정수 루마 샘플 또는 4개의 루마 샘플 단위로 코딩될 수 있다. MVD 해상도는 코딩 유닛(coding unit, CU) 레벨에서 제어되고, MVD 해상도 플래그는 적어도 하나의 논 제로(non-zero) MVD 성분을 갖는 각각의 CU에 대해 조건부로 시그널링된다.
적어도 하나의 논 제로 MVD 성분을 갖는 CU에 대해, 1/4 루마 샘플 MV 정밀도가 CU에 대해 사용되는지 여부를 지시하기 위해 제1 플래그가 시그널링된다. 제1 플래그(1과 같음)가 1/4 루마 샘플 MV 정밀도가 사용되지 않음을 지시하는 경우, 정수 루마 샘플 MV 정밀도 또는 4개의 루마 샘플 MV 정밀도가 사용되는지 여부를 지시하기 위해 다른 플래그가 시그널링된다.
CU의 제1 MVD 해상도 플래그가 0이거나 또는 CU에 대해 코딩되지 않은 경우(이것은 CU에 대한 모든 MVD가 0임을 의미함), CU에 대해 1/4 루마 샘플 MV 해상도가 사용된다. CU에 대해 정수 루마 샘플 MV 정밀도 또는 4 루마 샘플 MV 정밀도가 사용되는 경우, CU에 대한 AMVP 후보 리스트의 MVP가 대응하는 정밀도로 반올림된다.
인코더에서, CU에 대해 어떤 MVD 해상도가 사용될지를 결정하는 데 CU 레벨 RD 확인이 사용된다. 즉, CU 레벨 RD 확인은 각각의 MVD 해상도에 대해 세 번 수행된다.
프랙션 샘플 보간 모듈(fraction sample interploation module)
모션 벡터가 프랙션 샘플 위치를 가리키는 경우, 모션 보상 보간이 필요하다. 루마 보간 필터링의 경우, [표 2]에 나타낸 바와 같이, 2/4 정밀도 샘플에 대해 8탭 분리형 DCT 기반 보간 필터가 사용되며, 1/4 정밀도 샘플에 대해 7탭 분리형 DCT 기반 보간 필터가 사용된다.
유사하게, 크로마 보간 필터에 대해 4탭 분리형 DCT 기반 보간 필터가 [표 3]에 나타낸 바와 같이 사용된다.
4:2:2에 대한 수직 보간과 4:4:4 크로마 채널에 대한 수평 및 수직 보간에 대해, [표 3]에서 홀수 위치는 사용되지 않으며, 1/4번째 크로마 보간이 발생한다.
이중 예측의 경우, 2개의 예측 신호를 평균화하기 전에 보간 필터 출력의 비트 깊이는 소스 비트 깊이(bit depth)에 관계없이 14비트 정확도로 유지된다. 실제 평균화 프로세스는 다음과 같이 비트 깊이 감소 프로세스를 사용하여 암시적으로 수행된다.
복잡성을 줄이기 위해, 양방향 매칭 및 템플릿 매칭 모두에 일반 8탭 HEVC 보간 대신에 이중 선형(bi-linear) 보간이 사용된다.
매칭 비용의 계산은 단계마다 약간 다르다. CU 레벨에서 설정된 후보로부터 후보가 선택되는 경우, 매칭 비용은 양방향 매칭 또는 템플릿 매칭의 SAD이다. 시작 MV가 결정된 후, 서브 CU 레벨 검색에서 양방향 매칭의 매칭 비용 C는 [수학식 12]와 같이 계산된다.
w는 경험적으로 4로 설정된 가중 인자를 나타내고, MV 및 MVS는 각각 현재 MV와 시작 MV를 지시한다. SAD는 여전히 서브 CU 레벨 검색에서 템플릿 매칭의 매칭 비용으로 사용된다.
FRUC 모드에서, MV는 루마 샘플만을 사용하여 도출된다. 도출된 모션 벡터는 MC 인터 예측을 위해 루마와 크로마 모두에 사용된다. MV가 결정된 후, 루마에 대해 8탭 보간 필터와 크로마에 대해 4탭 보간 필터를 사용하여 최종 MC가 수행된다.
모션 보상 모듈
중첩 블록 동작 보상
중첩 블록 모션 보상(Overlapped Block Motion Compensation, OBMC)은 현재 개발중인 CU의 오른쪽 및 하단 경계를 제외한 모든 모션 보상(motion compensation, MC) 블록 경계에 대해 수행된다. 또한, 중첩 블록 모션 보상은 루마 및 크로마 성분 모두에 적용된다. MC 블록은 코딩 블록에 대응한다. CU가 서브 CU 모드(서브 CU 병합, 아핀 및 FRUC 모드 포함)에 기초하여 코딩되는 경우, CU의 각각의 서브 블록은 MC 블록이다. CU 경계를 균일한 방식으로 처리하기 위해, OBMC는 모든 MC 블록 경계에 대해 서브 블록 레벨에서 수행되며, 여기서 서브 블록 크기는 4 × 4로 설정된다.
OBMC가 현재의 모션 벡터에 더하여 현재의 서브 블록에 적용되는 경우, 4개의 연결된 이웃하는 서브 블록의 모션 벡터가 이용 가능하고 현재 모션 벡터와 동일하지 않은 경우, 4개의 연결된 이웃하는 서브 블록의 모션 벡터도 현재 서브 블록에 대한 예측 블록을 도출하는 데 사용된다. 복수의 모션 벡터에 기초한 복수의 이러한 예측 블록이 결합되어 현재 서브 블록의 최종 예측 신호를 생성한다.
이웃하는 서브 블록의 모션 벡터에 기초한 예측 블록은 PN으로 표시되며, 여기서 N은 이웃하는 상하 좌우 서브 블록의 인덱스를 나타내고, 현재 서브 블록의 모션 벡터에 기초한 예측 블록은 PC로 표시된다. PN이 현재 서브 블록과 동일한 모션 정보를 포함하는 이웃하는 서브 블록의 모션 정보에 기초하는 경우, OBMC는 PN으로부터 수행되지 않는다. 그렇지 않으면, PN의 모든 샘플이 PC의 동일한 샘플에 추가된다. 즉, PN의 4개의 행/열이 PC에 추가된다. 가중 인자 {1/4, 1/8, 1/16, 1/32}은 PN에 사용되며 가중 인자 {3/4, 7/8, 15/16, 31/32}은 PC에 대해 사용된다. 예외는 작은 MC 블록(즉, 코딩 블록의 높이 또는 폭이 4이거나 또는 CU가 서브 CU 모드에 기초하여 코딩된 경우)이며, 이러한 블록에 대해, PN의 2개의 행/열만이 PC에 추가된다. 이 경우, 가중 인자 {1/4, 1/8}는 PN에 대해 사용되고, 가중 인자 {3/4, 7/8}은 PC에 대해 사용된다. 수직으로(수평으로) 이웃하는 서브 블록의 모션 벡터에 기초하여 생성된 PN의 경우, PN의 동일한 행(열)에 있는 샘플이 동일한 가중 인자로 PC에 추가된다.
현재 개발에서, 256 루마 샘플보다 작거나 같은 크기를 갖는 CU에 대해, CU 레벨 플래그가 시그널링되어 OBMC가 현재 CU에 대해 적용되는지 여부를 지시한다. 크기가 256 루마 샘플보다 큰 CU 또는 AMVP 모드에 기초하여 코딩되지 않은 CU의 경우, OBMC가 기본적으로 적용된다. 인코더에서, CU에 OBMC가 적용되는 경우, 모션 추정 단계에서 OBMC의 영향이 고려된다. 상단의 이웃하는 블록과 왼쪽의 이웃하는 블록의 모션 정보를 사용하여 OBMC를 통해 형성된 예측 신호는 현재 CU의 원래 신호의 상단과 왼쪽 경계를 보상하는 데 사용되며, 그 후 정상적인 모션 추정 처리가 적용된다.
최적화 도구
로컬 조도 보상
로컬 조도 보상(Local Illumination Compensation, LIC)은 스케일링 인자 a 및 오프셋 b를 사용하여 조도 변경에 대한 선형 모델에 기초한다. 로컬 조도 보상은 각각의 인터 모드 코딩된 코딩 유닛(coding unit, CU)에 대해 적응적으로 활성화 또는 비활성화된다.
CU에 LIC가 적용되는 경우, 현재 CU의 이웃하는 샘플과 대응하는 참조 샘플을 사용하여 파라미터 a 및 b를 도출하기 위해 최소 제곱 오차 방법이 사용된다. CU의 서브 샘플링된(2:1 서브 샘플링) 이웃하는 샘플과 참조 픽처의 대응하는 샘플(현재 CU 또는 서브 CU의 모션 정보에 의해 식별됨)이 사용된다. IC 파라미터는 각각의 예측 방향에 대해 개별적으로 도출되고 적용된다.
CU가 병합 모드에 기초하여 코딩되는 경우, 병합 모드에서 모션 정보 복사와 유사한 방식으로 이웃하는 블록으로부터 LIC 플래그가 복사된다. 그렇지 않으면, LIC 플래그는 CU에 LIC가 적용되는지 여부를 지시하기 위해 CU에 대해 시그널링된다.
픽처에 대해 LIC가 활성화되는 경우, LIC가 CU에 대해 적용되는지 여부를 결정하기 위해 추가적인 CU 레벨 RD 확인이 필요하다. CU에 대해 LIC가 활성화되는 경우, 절대 차이의 평균 제거 합계(mean-removed sum of absolute difference, MR-SAD) 및 절대 하다마드 변환 차이의 평균 제거 합계(mean-removed sum of absolute Hadamard-transformed difference, MR-SATD)가 각각 정수 픽셀 모션 검색과 프랙션 픽셀 모션 검색을 위해 SAD 및 SATD 대신에 사용된다.
양방향 광학 흐름
양방향 광학 흐름(Bi-directional Optical flow, BIO)은 이중 예측을 위한 블록 단위 모션 보상의 상단에 대해 수행되는 샘플 단위 모션 정제이다. 샘플 레벨 모션 정제는 시그널링을 사용하지 않는다.
는 블록 모션 보상 후 참조 k(여기서 k = 0, 1)로부터의 루마 값으로 하고, 은 각각 경사(gradient)의 수평 성분과 수직 성분을 나타낸다. 광학 흐름이 유효하다고 가정하면, 모션 벡터 필드 는 [수학식 13]에 따라 주어진다.
각각의 샘플의 모션 궤적에 대해 이러한 광학 흐름 수학식을 허밋(Hermit) 보간과 결합하면, 함수 값 와 도함수 모두 끝에서 일치하는 고유한 3차 다항식이 생성된다. t = 0에서 이러한 다항식의 값은 BIO 예측값이다.
여기서, 는 참조 프레임까지의 거리를 나타낸다. 거리 는 Ref0 및 Ref1에 대한 POC, 즉 = POC(현재) - POC(Ref0), = POC(Ref1) - POC(현재)에 기초하여 계산된다. 두 예측이 동일한 시간 방향(둘 다 과거 또는 둘 다 미래에서)에서 나온 경우, 징후가 다르다(즉, ). 이 경우, BIO는 예측이 동일한 시간(즉, )에서 나오지 않고 참조된 영역 모두 논 제로 모션 모션 벡터()를 가지며 블록 모션 벡터가 시간적 거리()에 비례하는 경우에만 적용된다.
모션 벡터 필드 는 포인트 A와 B(모션 궤적과 참조 프레임 평면의 교차점)의 값 사이의 차이 Δ를 최소화함으로써 결정된다. 모델은 Δ에 대해 로컬 테일러 확장(local Taylor expansion)의 첫 번째 선형 항만을 사용한다.
[수학식 15]의 모든 값은 지금까지 표기법에서 생략된 샘플 위치 에 따라 달라진다. 모션이 로컬 주변 영역에서 일정한 것으로 가정하면, Δ는 현재 예측 포인트 을 중심으로 하는 (2M + 1) × (2M + 1) 정사각형 윈도우 내부에서 최소화되며, 여기서 M은 2와 같다.
이러한 최적화 문제를 위해, 현재 개발에서는 먼저 수직 방향으로 그 후 수직 방향으로 최소화하는 단순화된 접근 방식을 사용한다. 이하의 수학식이 획득된다.
여기서
이다.
0 또는 매우 작은 값에 의한 나눗셈을 피하기 위해, 정규화 파라미터 r 및 m이 [수학식 17] 및 [수학식 18]에 도입된다.
여기서 d는 비디오 샘플의 비트 깊이를 나타낸다.
BIO에 대한 메모리 액세스를 일반적인 이중 예측 모션 보상에 대한 메모리 액세스와 동일하게 유지하기 위해, 모든 예측 및 경사값 , , 은 현재 블록 내부의 위치에 대해서만 계산된다. [수학식 19]에서, 예측 블록의 경계 상의 현재 예측 포인트를 중심으로 한 (2M + 1) × (2M + 1) 정사각형 윈도우 Ω은 블록 외부의 위치에 액세스해야 한다. 현재 개발에서, 블록 외부의 , , 의 값은 블록 내부에서 이용 가능한 가장 가까운 값과 동일하게 설정된다. 예를 들어, 이것은 패딩으로 구현될 수 있다.
BIO를 사용하면, 각각의 샘플에 대해 모션 필드가 정제될 수 있다. 그러나, 계산 복잡성을 줄이기 위해, BIO의 블록 기반 설계가 사용될 수 있다. 모션 정제는 4 × 4 블록에 기초하여 계산된다. 블록 기반 BIO에서, 4 × 4 블록의 모든 샘플에 대한 [수학식 19]에서 sn 값이 집게되고, 그 후 sn의 집계된 값은 4 × 4 블록에 대한 BIO 모션 벡터 오프셋을 도출하는 데 사용된다. 다음의 수학식은 블록 기반 BIO 도출을 위해 사용된다.
bk는 예측 블록의 k번째 4 × 4 블록에 속하는 샘플 세트를 나타낸다. [수학식 17] 및 [수학식 18]에서 sn은 연관된 모션 벡터 오프셋을 도출하기 위해 ((sn, bk) >> 4)로 대체된다.
일부 경우에, BIO의 MV 연대(regiment)는 노이즈나 불규칙한 모션으로 인해 신뢰할 수 없을 수 있다. 따라서, BIO에서, MV 연대의 크기는 임계값 thBIO로 클리핑된다. 임계값은 현재 픽처의 참조 픽처가 모두 한 방향에서 온 것인지의 여부에 기초하여 결정된다. 현재 픽처의 모든 참조 픽처가 한 방향에서 나온다면, 임계값은 12×214-d로 설정되지만, 그렇지 않으면, 값은 12×213-d로 설정된다.
BIO에 대한 경사는 HEVC 모션 보상 프로세스(2D 분리형 FIR)와 일치하는 작동을 사용하여 모션 보상 보간과 동시에 계산된다. 2D 분리형 FIR의 입력은 모션 보상 프로세스와 블록 모션 벡터의 프랙션 부분에 따른 프랙션 위치 (fracX, fracY)와 동일한 참조 프레임 샘플이다. 수평 경사 신호의 경우, 먼저 수직 보간은 역스케일링 쉬프트 d-8로 프랙션 위치 fracY에 대응하는 BIOfilterS를 사용하여 수행된 다음, 경사 필터 BIOfilterG는 18-d에 의한 역스케일링 쉬프트로 프랙션 위치 fracX에 대응하는 수평 방향으로 적용된다. 수직 경사 의 경우, 먼저 역스케일링 d - 8을 사용하여 프랙션 위치 fracY에 대응하는 BIOfilterG를 사용하여 수직으로 적용된 다음, 신호 변위는 18 - d에 의한 역스케일링 쉬프트로 프랙션 위치 fracX에 대응하는 수형 방향에서 BIOfilterS를 사용하여 수행된다. 경사 계산 BIOfilterG 및 신호 변위 BIOfilterF에 대한 보간 필터의 길이는 적절한 복잡성을 유지하기 위해 더 짧은 (6 탭)이다. [표 4]는 BIO에서 블록 모션 벡터의 다른 프랙션 위치에서 경사 계산에 사용되는 필터를 나타낸다. [표 5]는 BIO에서 예측 신호 생성을 위한 보간 필터를 나타낸다.
현재 개발에서, BIO는 2개의 예측이 서로 다른 참조 픽처에서 나온 경우 모든 이중 예측 블록에 적용된다. CU에 대해 LIC가 활성화되는 경우, BIO가 비활성화된다. OBMC는 정상적인 MC 프로세스 후 블록에 적용된다. 계산 복잡성을 줄이기 위해, BIO는 OBMC 프로세스에 적용되지 않는다. 이것은 BIO가 블록의 MV가 사용되는 경우 블록에 대한 MC 프로세스에만 적용되지만, OBMC 프로세스에서 이웃하는 블록의 MV가 사용되는 경우 MC 프로세스에는 적용되지 않음을 의미한다.
가중 샘플 예측 모듈
선택적 도구로서, 가중 예측(weighted prediction, WP) 도구가 HEVC에서 제공된다. WP의 원리는 인터 예측 신호 P를 선형 가중 예측 신호 P'(가중치 w 및 오프셋 o를 가짐)로 대체하는 것이다.
적용 가능한 가중치 및 적용 가능한 오프셋은 인코더에 의해 선택되고 비트스트림 내에서 전달된다. L0 및 L1 접미사는 각각 참조 픽처 리스트의 리스트 0과 리스트 1을 정의한다. 보간 필터의 경우, 예측 신호가 평균화되기 전에 비트 깊이가 14 비트 정확도로 유지된다.
리스트 L0 및 L1 각각에서 이용 가능한 적어도 하나의 참조 픽처를 갖는 이중 예측의 경우, 루마 채널과 관련된 가중 예측 파라미터의 명시적 시그널링에 다음의 수학식이 적용된다. 대응하는 수학식은 크로마 채널과 단일 예측의 경우에 적용된다.
여기서
경계 예측 필터(Boundary Forecast Filter)는 가장 왼쪽 열과 맨위 행에서 예측 샘플을 더 조정하는 데 사용되는 인트라 코딩 방법이다. HEVC에서, 인트라 예측 블록이 수직 또는 수평 인트라 모드에 대해 생성된 후, 가장 왼쪽 열과 맨위 행의 예측 샘플이 각각 더 조정된다. 이러한 방법은 여러 개의 대각선 인트라 모드로 더 확장될 수 있으며, 2탭 필터(인트라 모드 2 및 34의 경우) 또는 3탭 필터(인트라 모드 3 내지 6 및 30 내지 33의 경우)를 사용하여 최대 4개의 열 또는 행까지 경계 샘플이 추가로 조정될 수 있다.
HEVC 표준 및 이전 표준에서, 참조 프레임은 두 개의 그룹, 즉 순방향 참조 프레임과 역방향 참조 프레임으로 분류되고, 각각 두 개의 참조 프레임 리스트(참조 픽처 리스트)에 배치된다. 두 개의 참조 프레임 리스트는 일반적으로 리스트 0과 리스트 1로 명명된다. 인터 예측 방향은 현재 블록에 대해 순방향 예측, 역방향 예측 또는 이중 예측에서 어떤 예측 방향이 사용되는지를 지시하는 데 사용되며, 상이한 참조 프레임 리스트, 즉 리스트 0, 리스트 1, 또는 리스트 0 및 리스트 1 모두가 예측 방향에 기초하여 선택된다. 선택된 참조 프레임 리스트의 참조 프레임은 참조 프레임 인덱스로 지시된다. 모션 벡터는 현재 프레임의 현재 블록에 대한 선택된 참조 프레임에서 현재 블록의 예측 블록의 참조 블록의 위치 오프셋을 지시하는 데 사용된다. 그 다음, 최종 예측 블록은 리스트 0, 리스트 1 또는 리스트 0 및 리스트 1 모두의 참조 프레임으로부터 획득된 예측 블록을 사용하여 예측 방향에 기초하여 생성된다. 예측 방향이 단일 예측인 경우, 리스트 0 또는 리스트 1의 참조 프레임으로부터 획득되는 예측 블록이 직접 사용된다. 예측 방향이 이중 예측인 경우, 리스트 0과 리스트 1 모두의 참조 프레임으로부터 획득되는 예측 블록이 최종 예측 블록을 획득하기 위해 가중 평균화를 통해 합성된다.
인터 예측 모드에 기초하여 획득된 예측 샘플이 공간적으로 불연속적이고, 예측 효율이 영향을 받으며, 예측 잔여 에너지가 비교적 높은 기존 기술의 문제점을 해결하기 위해, 본 출원의 실시예는 예측 샘플이 생성된 후 이웃하는 재구축된 샘플을 사용하여 예측 샘플을 필터링하고 코딩 효율을 향상시키기 위해 인터 예측 방법을 제공한다.
도 13은 본 출원의 실시예에 따른 인터 예측 방법의 개략적인 흐름도이다. 도 13에 도시된 바와 같이, 그 방법은 단계 S1301 내지 S1307을 포함한다.
단계 S1301 : 처리될 픽처 블록의 모션 정보를 획득하기 위해 비트스트림을 파싱한다.
처리될 픽처 블록은 현재 블록 또는 현재 CU로서 지칭될 것이다.
단계 S1301은 도 1의 비디오 디코더(200)에 의해 수행될 수 있음이 이해될 수 있다.
예를 들어, 본 출원의 본 실시예에서, 블록 기반 모션 보상 기술은 예측 블록과 현재 블록 사이의 잔여가 가능한 한 작고, 현재 블록의 오프셋 MV를 계산하는 데 사용될 수 있도록 현재 코딩 블록의 최적 매칭 블록에 대해 인코딩된 블록을 검색하는 데 사용될 수 있다.
예를 들어, 처리될 픽처 블록은 픽처 내의 임의의 블록이 될 수 있으며, 처리될 블록의 크기는 2x2, 4x4, 8x8, 16x16, 32x32, 64x64, 또는 128x128일 수 있다. 이것은 본 출원의 본 실시예에서 제한되지 않는다.
예를 들어, 처리될 픽처 블록(현재 블록)이 병합(merge) 모드에 기초하여 인코더 측에서 인코딩되면, 현재 블록의 공간적 후보 및 시간적 후보가 현재 블록에 대한 병합 모션 정보 후보 리스트에 추가될 수 있다. 방법은 HEVC의 방법과 동일하다. 예를 들어, 도 8 내지 도 12에서 설명된 기술 중 어느 하나가 병합 모션 정보 후보 리스트를 획득하기 위한 구체적인 방법으로 사용될 수 있다.
예를 들어, 현재 블록에 병합 모드가 사용되는 경우, 현재 블록의 모션 정보는 비트스트림에서 운반되는 병합 인덱스에 기초하여 결정된다. 현재 블록에 대해 인터 MVP 모드가 사용되는 경우, 현재 블록의 모션 정보는 인터 예측 방향, 참조 프레임 인덱스, 모션 벡터 예측값 인덱스 및 비트스트림으로 전송되는 모션 벡터 잔여 값에 기초하여 결정된다.
단계 S1301은 HEVC 또는 VTM의 방법을 사용하여 수행될 수 있거나, 또는 모션 벡터 예측 후보 리스트를 생성하는 다른 방법을 사용하여 수행될 수 있다. 이것은 본 출원의 본 실시예에서 제한되지 않는다.
단계 S1302 : (선택적으로) 처리될 픽처 블록의 예측 블록을 업데이트하는 것으로 결정한다.
단계 S1302는 도 1에서의 비디오 디코더(200)에 의해 수행될 수 있음이 이해될 것이다.
처리될 픽처 블록의 예측 블록은 현재 블록의 예측 블록이며, 하나 이상의 인코딩된 블록에 기초하여 획득될 수 있다.
예를 들어, 처리될 픽처 블록의 예측 블록의 업데이트 여부는 처리될 픽처 블록의 업데이트 결정 지시자에 기초하여 결정될 수 있다. 즉, 처리될 픽처 블록에 대한 공간 필터링 수행 여부는 처리될 픽처 블록의 업데이트 결정 지시자에 기초하여 결정될 수 있다.
실행 가능한 구현에서, 비트스트림은 처리될 픽처 블록의 업데이트 결정 지시 정보를 획득하기 위해 파싱될 수 있으며, 여기서 업데이트 결정 지시 정보는 처리될 픽처 블록의 예측 블록을 업데이트할지 여부를 지시하는 데 사용되고, 처리될 픽처 블록의 업데이트 결정 지시 정보에 기초하여 처리될 픽처 블록의 예측 블록이 업데이트될 것으로 추가로 결정된다.
다른 실행 가능한 구현에서, 처리될 픽처 블록의 미리 설정된 업데이트 결정 지시 정보가 획득될 수 있으며, 여기서 미리 설정된 업데이트 결정 지시 정보는 처리될 픽처 블록의 예측 블록의 업데이트 여부를 지시하는 데 사용되고, 미리 설정된 업데이트 결정 지시 정보에 기초하여, 처리될 픽처 블록의 예측 블록이 업데이트될 것으로 추가로 결정된다.
예를 들어, 업데이트 결정 지시자가 참이면, 처리될 픽처 블록의 예측 블록이 업데이트될 것으로 결정될 수 있다. 즉, 처리될 픽처 블록의 예측 블록에 대해 공간적 필터링이 수행될 것으로 결정된다. 업데이트 결정 지시자가 거짓이면, 처리될 픽처 블록의 예측 블록이 업데이트될 필요가 없는 것으로 결정된다. 업데이트 결정 지시자의 특정 형태는 본 출원의 본 실시예에서 제한되지 않는다. 여기서, 업데이트 결정 지시자가 참 또는 거짓인 것은 설명을위한 예시로서 사용될 뿐이다.
단계 S1303: (선택적으로) 처리될 픽처 블록에 대응하는 예측 모드를 결정한다.
단계 S1303은 도 1에서의 비디오 디코더(200)에 의해 수행될 수 있음이 이해될 수 있다.
예를 들어, 처리될 픽처 블록에 대응하는 예측 모드는 병합(merge) 모드 및/또는 인터 어드밴스드 모션 벡터 예측(인터 AMVP) 모드일 수 있다. 이것은 본 출원의 본 실시예에서 제한되지 않는다. 처리될 픽처 블록에 대응하는 예측 모드는 병합 모드만, 인터 AMVP 모드만, 또는 병합 모드와 인터 AMVP 모드의 조합일 수 있음이 이해될 수 있다.
인터 어드밴스드 모션 벡터 예측(인터 AMVP) 모드는 또한 인터 모션 벡터 예측(인터 MVP) 모드로서 지칭될 수 있음에 유의해야 한다.
예를 들어, 처리될 픽처 블록에 대응하는 예측 모드를 결정하는 방법은 처리될 픽처 블록에 대응하는 예측 모드를 획득하기 위해 비트스트림을 파싱하고, 처리될 픽처 블록에 대응하는 예측 모드가 병합 모드 및/또는 인터 AMVP 모드인 것으로 결정하는 것일 수 있다.
본 출원의 본 실시예에서, 공간적 필터링 방법은 병합 모드 및/또는 인터 AMVP 모드에 기초하여 인코딩된 인터 코딩된 블록에 대해 수행될 수 있음이 이해될 수 있다. 즉, 디코딩 동안 디코더 측에서 병합 모드 및/또는 인터 AMVP 모드에 기초하여 인코딩된 블록에 대해 필터링 처리가 수행될 수 있다.
단계 S1304: 처리될 픽처 블록의 예측 블록을 획득하기 위해 모션 정보에 기초하여 처리될 픽처 블록에 대해 모션 보상을 수행한다.
처리될 픽처의 예측 블록은 타깃 샘플의 예측값을 포함한다.
단계 S1304는 도 1에서의 비디오 디코더(200)에 의해 수행될 수 있음이 이해될 수 있다.
예를 들어, 모션 보상 동안, 현재 부분 픽처는 참조 픽처에 기초하여 예측되고 보상된다. 이것은 프레임 시퀀스의 중복 정보를 줄일 수 있다.
예를 들어, 모션 정보에 기초하여 모션 보상이 수행되는 경우, 처리될 픽처 블록의 예측 블록은 참조 프레임 방향, 참조 프레임 시퀀스 번호 및 모션 벡터에 기초하여 참조 프레임으로부터 획득될 수 있다. 참조 프레임 방향은 순방향 예측, 역방향 예측 또는 이중 예측일 수 있다. 이것은 본 출원의 본 실시예에서 제한되지 않는다.
예를 들어, 참조 프레임 방향이 순방향 예측인 경우, 참조 픽처는 참조 블록을 획득하기 위해 현재 코딩 유닛(CU)에 대한 순방향 참조 픽처 세트로부터 선택될 수 있다. 참조 프레임 방향이 역방향 예측인 경우, 참조 픽처는 참조 블록을 획득하기 위해 현재 코딩 유닛(CU)에 대한 역방향 참조 픽처 세트로부터 선택될 수 있다. 참조 프레임 방향이 이중 예측인 경우, 참조 픽처는 참조 블록을 획득하기 위해 현재 코딩 유닛(CU)에 대한 순방향 참조 픽처 세트 및 역방향 참조 픽처 세트 각각으로부터 선택될 수 있다.
단계 S1304에서, 모션 정보에 기초하여 처리될 픽처 블록에 대한 모션 보상을 수행하는 방법은 HEVC 또는 VTM 방식일 수 있거나, 또는 처리될 픽처 블록의 예측 블록을 획득하기 위한 다른 방법일 수 있다. 이것은 본 출원의 본 실시예에서 제한되지 않는다.
단계 S1306 : 타깃 샘플의 예측값을 업데이트하기 위해 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행한다.
참조 샘플은 타깃 샘플과 미리 설정된 공간적 위치 관계를 가지고 있다.
단계 S1306은 도 1에서의 비디오 디코더(200)에 의해 수행될 수 있음이 이해될 수 있다.
예를 들어, 타깃 샘플은 처리될 픽처 블록의 예측 블록에 있는 샘플이고, 타깃 샘플의 예측값은 참조 블록의 샘플의 샘플 값에 기초하여 결정될 수 있다.
예를 들어, 참조 샘플은 현재 CU(처리될 픽처 블록)에 공간적으로 인접한 재구축된 샘플일 수 있다. 구체적으로, 참조 샘플은 픽처에서 현재 CU 블록이 아닌 블록의 재구축된 샘플일 수 있다. 예를 들어, 참조 샘플은 현재 CU의 위 또는 왼쪽에 있는 CU 블록의 재구축된 샘플일 수 있다. 이것은 본 출원의 본 실시예에서 제한되지 않는다.
단계 S1306에서, 현재 CU에 공간적으로 인접한 재구축된 샘플을 사용하여 타깃 샘플의 예측 샘플에 대해 공간적 필터링이 수행됨이 이해될 수 있다. 구체적으로, 타깃 샘플의 업데이트된 예측 샘플을 획득하기 위해 현재 블록의 타깃 샘플의 예측 샘플과 현재 CU에 공간적으로 인접한 재구축된 샘플의 샘플 값에 대해 가중치 계산이 수행된다.
실행 가능한 구현에서, 하나 이상의 참조 샘플은 타깃 샘플과 동일한 수평 좌표를 가지며 타깃 샘플과 미리 설정된 수직 좌표 차이를 갖는 재구축된 샘플 또는 타깃 샘플과 동일한 수직 좌표를 가지며 타깃 샘플과 미리 설정된 좌표 차이를 갖는 재구축된 샘플을 포함할 수 있다.
예를 들어, 도 14에 도시된 바와 같이, 픽셀의 왼쪽 상단은 좌표계의 원점으로 사용되고, 좌표계의 X축 방향은 픽처의 상단면을 따라 오른쪽으로 확장되며, 좌표계의 Y축 방향은 픽처의 왼쪽면을 따라 아래로 확장된다. 처리될 픽처 블록(현재 CU)에서 타깃 샘플의 좌표가 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표가 이면, 타깃 샘플의 참조 샘플은 처리될 픽처 블록의 위 또는 왼쪽에 있는 블록의 재구축된 샘플일 수 있다. 참조 샘플이 처리될 픽처 블록 위의 블록의 재구축된 샘플인 경우, 참조 샘플이 처리될 픽처 블록이 아닌 다른 블록의 재구축된 샘플이므로, 참조 샘플의 수직 좌표는 처리될 픽처 블록의 상단면의 수직 좌표로부터 미리 설정된 위치 관계 N을 감산함으로써 획득된 값이고, 참조 샘플의 수평 좌표는 처리될 픽처 블록의 타깃 샘플의 수평 좌표와 동일하다. 구체적으로, 참조 샘플의 좌표는 이다. 참조 샘플이 처리될 픽처 블록의 왼쪽 블록의 재구축된 샘플인 경우, 참조 샘플이 처리될 픽처 블록이 아닌 다른 블록의 재구축된 샘플이므로, 참조 샘플의 수평 좌표는 처리될 픽처 블록의 가장 왼쪽 수평 좌표로부터 미리 설정된 위치 관계 M을 감산함으로써 획득된 값이고, 참조 샘플의 수직 좌표는 처리될 픽처 블록의 타깃 샘플의 수직 좌표와 동일한다. 구체적으로, 참조 샘플의 좌표는 이다. 참조 샘플과 타깃 샘플 사이의 특정 공간적 위치 관계(M 및 N의 특정 값)는 본 출원의 본 실시예에서 제한되지 않는다.
실행 가능한 구현에서, 타깃 샘플의 예측값은 다음의 수학식에 따라 업데이트될 수 있다.
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, 는 각각 좌표 위치 에서 참조 샘플의 재구축된 값을 나타내고, w1, w2, w3, w4, w5 및 w6은 미리 설정된 상수이며, M1 및 M2는 미리 설정된 양의 정수이다.
이하, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표 의 다른 경우에 기초하여 타깃 샘플의 업데이트된 예측값을 계산하는 구체적인 방법을 설명한다.
첫 번째 경우, xN이 0보다 크고, yN이 0과 같으며, 그 위치 에 있는 참조 샘플이 인코딩되고 재구축된 경우, 타깃 샘플의 업데이트된 예측값은 다음의 수학식에 따라 획득될 수 있다.
예를 들어, 도 15에 도시된 바와 같이, 처리될 픽처 블록의 크기가 16 x 16인 것이 설명의 예로서 사용된다. 처리될 픽처 블록이 CU 1이면, 처리될 픽처 블록(CU 1)의 왼쪽 상단 샘플 은 (16, 0)이고, 처리될 픽처 블록의 타깃 샘플의 좌표 는 (18, 3)이다. 현재 CU(CU 1)의 왼쪽 상단 샘플의 수평 좌표 xN이 0보다 크고 현재 CU(CU 1)의 왼쪽 상단 샘플의 수직 좌표 yN이 0과 같으므로, 현재 CU가 픽처의 상단에 위치하는 것으로 판단될 수 있다. 현재 CU의 타깃 샘플에 대해 공간적 필터링이 수행되는 경우, 현재 CU가 픽처의 상단에 위치하고 현재 CU 위에 재구축된 샘플이 없기 때문에, 참조 샘플은 현재 CU의 왼쪽에 재구축된 샘플이다. 참조 샘플은 타깃 샘플과 동일한 수직 좌표를 가지며 (16-M1, 3)으로 표시될 수 있으며, 여기서 M1은 참조 샘플과 타깃 샘플 사이의 미리 설정된 공간적 위치 관계를 나타낸다. 여기서, M1이 1과 같다는 것은 설명을 위한 예로서 사용된다. M1이 1과 같은 경우, 타깃 샘플 (18, 3)의 참조 샘플은 (15, 3)일 수 있다. 마찬가지로, 타깃 샘플 의 모든 참조 샘플은 일 수 있다.
위치 의 참조 샘플이 인코딩되고 재구축된 경우, 타깃 샘플의 업데이트된 예측값 을 획득하기 위해 참조 샘플의 재구축된 값 및 타깃 샘플의 예측값 에 대해 가중치 계산이 수행될 수 있다.
두 번째 경우에, xN이 0과 같고, yN이 0보다 크며, 위치 의 참조 샘플이 인코딩되고 재구축된 경우, 다음의 수학식에 따라 타깃 샘플의 업데이트된 예측값이 획득될 수 있다.
예를 들어, 도 15에 도시된 바와 같이, 처리될 픽처 블록이 CU 2이면, 처리될 픽처 블록(CU 2)의 왼쪽 상단 샘플 은 (0, 32)이고, 타깃 샘플 의 좌표는 (8, 35)이다. 현재 CU(CU 2)의 왼쪽 상단 샘플의 수평 좌표 xN이 0과 같고 현재 CU(CU 2)의 왼쪽 상단 샘플의 수직 좌표 yN이 0보다 크기 때문에, 현재 CU가 픽처의 왼쪽면에 위치하는 것으로 판단될 수 있다. 현재 CU의 타깃 샘플에 대해 공간적 필터링이 수행되는 경우, 현재 CU가 픽처의 왼쪽면에 위치하고 현재 CU의 왼쪽에 재구축된 샘플이 없기 때문에, 참조 샘플은 현재 CU 위의 재구축된 샘플이다. 참조 샘플은 타깃 샘플과 동일한 수평 좌표를 가지고 있고, (8, 32-M2)으로 표시될 수 있으며, 여기서 M2는 참조 샘플과 타깃 샘플 사이의 미리 설정된 공간적 위치 관계를 나타낸다. 여기서, M2가 1과 같다는 것은 설명을 위한 예로서 사용된다. M2가 1과 같은 경우, 타깃 샘플 (8, 35)의 참조 샘플은 (8, 31)일 수 있다. 마찬가지로, 타깃 샘플 의 모든 참조 샘플은 일 수 있다.
위치 의 참조 샘플이 인코딩되고 재구축된 경우, 타깃 샘플의 업데이트된 예측값 을 획득하기 위해 참조 샘플의 재구축된 값 및 타깃 샘플의 예측값 에 대해 가중치 계산이 수행될 수 있다.
세 번째 경우, xN이 0보다 크고, yN이 0보다 크며, 위치 에 있는 참조 샘플이 인코딩되고 재구축된 경우, 다음의 수학식에 따라 타깃 샘플의 업데이트된 예측값이 획득될 수 있다.
예를 들어, 도 15에 도시된 바와 같이, 처리될 픽처 블록이 CU 3이면, 처리될 픽처 블록(CU 3)의 왼쪽 상단 샘플 은 (48, 32)이고, 타깃 샘플 의 좌표는 (56, 33)이다. 현재 CU(CU 3)의 왼쪽 상단 샘플의 수평 좌표 xN이 0보다 크고, 현재 CU(CU 3)의 왼쪽 상단 샘플의 수직 좌표 yN이 0보다 크기 때문에, 현재 CU가 픽처의 가장자리에 위치하지 않은 것으로 판단될 수 있다. 현재 CU의 타깃 샘플에 대해 공간적 필터링이 수행되는 경우, 참조 샘플은 현재 CU 위의 재구축된 샘플 및 현재 CU의 왼쪽의 재구축된 샘플일 수 있다. 참조 샘플이 현재 CU의 왼쪽에 있는 재구축된 샘플인 경우, 재구축된 샘플은 타깃 샘플과 동일한 수직 좌표를 가지고 있고, 일 수 있으며, 참조 샘플이 현재 CU 위의 재구축된 샘플인 경우, 재구축된 샘플은 타깃 샘플과 동일한 수평 좌표를 가지고 있고, 일 수 있으며, 여기서 M1 및 M2 각각은 각각의 참조 샘플과 타깃 샘플 사이의 미리 설정된 공간적 위치 관계를 나타낸다. 여기서, M1과 M2가 모두 1과 같다는 것은 설명을 위한 예로서 사용된다. M1과 M2가 모두 1과 같은 경우, 타깃 샘플 (56, 33)의 참조 샘플은 (47, 33) 및 (56, 31)일 수 있다. 마찬가지로, 타깃 샘플 의 모든 참조 샘플은 일 수 있다.
위치 에서 참조 샘플이 인코딩되고 재구축된 경우, 타깃 샘플의 업데이트된 예측값 을 획득하기 위해 참조 샘플의 재구축된 값 과 타깃 샘플의 예측값 에 대해 가중치 계산이 수행될 수 있다.
가중치 계수 w1, w2, w3, w4, w5 및 w6의 값과 M1 및 M2의 값은 본 출원의 본 실시예에서 제한되지 않으며, M1 및 M2가 모두 1과 같은 것은 예로서만 사용된다.
예를 들어, 가중치 계수 세트 (w1, w2), (w3, w4) 또는 (w5, w6, w7)은 w1 + w2, w3 + w4 또는 w5 + w6 + w7의 값 조합일 수 있으며, 여기서 w1 + w2, w3 + w4 또는 w5 + w6 + w7은 2의 정수의 거듭 제곱과 같다. 이런 식으로, 분할 작동이 더 이상 수행되지 않는다. 예를 들어, (6, 2), (5, 3), (4, 4), (6, 1, 1) 또는 (5, 2, 1)과 같은 값 조합이 사용될 수 있다. 이것은 본 출원의 본 실시예에서 제한되지 않으며, 여기에 열거된 값 조합은 설명을 위한 예로서만 사용된다.
다른 실행 가능한 구현에서, 타깃 샘플의 예측값은 다음의 수학식에 따라 업데이트될 수 있다.
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, 는 각각 좌표 위치 에서의 참조 샘플의 재구축된 값을 나타내고, w1, w2 및 w3은 미리 설정된 상수이며, M1 및 M2는 미리 설정된 양의 정수이다.
예를 들어, 가중치 계수 세트 (w1, w2, w3)는 w1 + w2 + w3의 값 조합일 수 있으며, 여기서 w1 + w2 + w3은 2의 정수의 거듭 제곱과 같다. 이런 식으로, 분할 작동이 더 이상 수행되지 않는다. 예를 들어, (6, 1, 1) 또는 (5, 2, 1)과 같은 값 조합이 사용될 수 있다. 이것은 본 출원의 본 실시예에서 제한되지 않으며, 여기에 열거된 값 조합은 설명을 위한 예로서만 사용된다.
이러한 구현과 이전 구현의 차이점은 처리될 픽처 블록의 왼쪽에 있는 샘플과 처리될 픽처 블록 위의 샘플이 본 구현에서 고려되지 않는다는 점에 있음에 유의한다. 이러한 구현이 타깃 샘플의 예측값을 업데이트하는 데 사용되고 참조 샘플의 재구축된 값이 이용 불가능한 경우, 다음의 단계 S13061 및 S13062의 방법이 새로운 참조 샘플을 획득하고 새로운 참조 샘플에 기초하여 타깃 샘플의 예측값을 업데이트하는 데 사용될 수 있다.
다른 실행 가능한 구현에서, 타깃 샘플의 예측값은 다음의 수학식에 따라 업데이트될 수 있다.
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, , , 는 각각 좌표 위치 , , 에서의 참조 샘플의 재구축된 값을 나타내고, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 및 w11은 미리 설정된 상수이며, M1, M2, M3 및 M4는 미리 설정된 양의 정수이다.
이하, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표 의 다른 경우에 기초하여 타깃 샘플의 업데이트된 예측값을 계산하는 방법을 구체적으로 설명한다.
첫 번째 경우에, xN이 0보다 크고, yN이 0과 같으며, 위치 에 있는 참조 샘플이 인코딩되고 재구축된 경우, 다음의 수학식에 따라 타깃 샘플의 업데이트된 예측값이 획득될 수 있다.
이러한 구현에서의 이러한 경우와 제1 구현에서의 첫 번째 경우 사이의 차이점은 이러한 구현에서 두 개의 참조 샘플이 있다는 점이라는 것이 이해될 수 있다. 처리될 픽처 블록이 CU 1이면, 처리될 픽처 블록(CU 1)의 왼쪽 상단 샘플 은 (16, 0)이고, 처리될 픽처 블록의 타깃 샘플 의 좌표는 (18, 3)이다. 참조 샘플은 현재 CU의 왼쪽에 재구축된 샘플이다. 참조 샘플은 각각 타깃 샘플과 동일한 수직 좌표를 가지며, (16-M1, 3) 및 (16-M2, 3)으로 표시될 수 있으며, 여기서 M1 및 M2는 각각 참조 샘플 각각과 타깃 샘플 사이의 미리 설정된 공간적 위치 관계를 나타낸다. 여기서, M1은 1이고 M2는 2와 같은 것은 설명을 위한 예로서 사용된다. M1이 1이고 M2가 2인 경우, 타깃 샘플 (18, 3)의 참조 샘플은 (15, 3) 및 (14, 3)일 수 있다. 마찬가지로, 타깃 샘플 의 모든 참조 샘플은 일 수 있다.
위치 에서 참조 샘플이 인코딩되고 재구축된 경우, 타깃 샘플의 업데이트된 예측값 을 획득하기 위해 참조 샘플의 재구축된 값 과 타깃 샘플의 예측값 에 대해 가중치 계산이 수행될 수 있다.
두 번째 경우에, xN이 0이고, yN이 0보다 크며, 위치 에 있는 참조 샘플이 인코딩되고 재구축된 경우, 다음의 수학식에 따라 타깃 샘플의 업데이트된 예측값이 획득될 수 있다.
예를 들어, 이러한 구현에서 경우와 제1 구현에서의 두 번째 경우 사이의 차이점은 이러한 구현에서 두 개의 참조 샘플이 있다는 점에 있다. 처리될 픽처 블록이 CU 2이면, 처리될 픽처 블록(CU 2)의 왼쪽 상단 샘플 은 (0, 32)이고, 타깃 샘플 의 좌표는 (8, 35)이다. 참조 샘플은 현재 CU 위에 재구축된 샘플이다. 참조 샘플은 각각 타깃 샘플과 동일한 수평 좌표를 가지고 있고, (8, 32-M3) 및 (8, 32-M4)로 표시될 수 있으며, 여기서 M3 및 M4는 각각 참조 샘플 각각과 타깃 샘플 사이의 미리 설정된 공간적 위치 관계를 나타낸다. 여기서, M3은 1이고 M4는 2와 같은 것은 설명의 예로서 사용된다. M3이 1이고 M4가 2인 경우, 타깃 샘플 (8, 35)의 참조 샘플은 (8, 31) 및 (8, 30)일 수 있다. 마찬가지로, 타깃 샘플 의 모든 참조 샘플은 일 수 있다.
위치 에서 참조 샘플이 인코딩되고 재구축된 경우, 타깃 샘플의 업데이트된 예측값 을 획득하기 위해 참조 샘플의 재구축된 값 과 타깃 샘플의 예측값 에 대해 가중치 계산이 수행될 수 있다.
세 번째 경우, xN이 0보다 크고, yN이 0보다 크며, 위치 , , , 및 에서 참조 샘플이 인코딩되고 재구축된 경우, 타깃 샘플의 업데이트된 예측값은 다음의 수학식에 따라 획득될 수 있다.
예를 들어, 이러한 구현에서 이 경우와 제1 구현에서의 세 번째 경우의 차이점은 이러한 구현에서 현재 CU 위의 참조 샘플로 두 개의 재구축된 샘플이 있고 현재 CU의 왼쪽의 참조 샘플로서 두 개의 재구축된 샘플이 있다는 점에 있다. 처리될 픽처 블록이 CU 3이면, 처리될 픽처 블록(CU 3)의 왼족 상단 샘플 은 (48, 32)이고, 타깃 샘플 의 좌표는 (56, 33)이다. 참조 샘플이 현재 CU의 왼쪽에 있는 재구축된 샘플인 경우, 재구축된 샘플 각각은 타깃 샘플과 동일한 수직 좌표를 가지고 있고, (48-M1, 33) 및 (48-M2, 33)일 수 있으며, 참조 샘플이 현재 CU 위의 재구축된 샘플인 경우, 재구축된 샘플 각각은 타깃 샘플과 동일한 수평 좌표를 가지고 있고, (56, 32-M3) 및 (56, 32-M4)일 수 있으며, 여기서 M1, M2, M3 및 M4 각각은 참조 샘플 각각과 타깃 샘플 사이의 미리 설정된 공간적 위치 관계를 나타낸다. 여기서, M1과 M3은 모두 1이고 M2와 M4는 모두 2와 같은 것은 설명의 예로서 사용된다. M1과 M3이 모두 1이고 M2와 M4가 모두 2인 경우, 타깃 샘플 (56, 33)의 참조 샘플은 (47, 33), (46, 33), (56, 31) 및 (56, 30)일 수 있다. 마찬가지로, 타깃 샘플 의 모든 참조 샘플은 , , , 및 일 수 있다.
위치 , , 의 참조 샘플이 인코딩되고 재구축된 경우, 타깃 샘플의 업데이트된 예측값 을 획득하기 위해 참조 샘플의 재구축된 값 , , 과 타깃 샘플의 예측값 및 값을 얻을 수 있다. 타깃 샘플의 예측값 에 대해 가중치 계산이 수행될 수 있다.
가중치 계수 w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 및 w11의 값과 M1, M2, M3 및 M4의 값은 본 출원의 본 실시예에서 제한되지 않음에 유의해야 한다. M1과 M3이 모두 1이고 M2와 M4가 모두 2와 같은 것은 설명을 위한 예로서만 사용된다. 실제 응용에서, M1과 M3의 값은 같거나 다를 수 있고, M2와 M4의 값은 같거나 다를 수 있으며, M1과 M2의 값은 다를 수 있고, M3과 M4의 값은 다를 수 있음을 이해할 수 있다.
예를 들어, 가중치 계수 세트 (w1, w2, w3), (w4, w5, w6) 또는 (w7, w8, w9, w10, w11)은 w1 + w2 + w3, w4 + w5 + w6, 또는 w7 + w8 + w9 + w10 + w11의 값 조합일 수 있으며, 여기서 w1 + w2 + w3, w4 + w5 + w6, 또는 w7 + w8 + w9 + w10 + w11은 2의 정수의 거듭 제곱과 같다. 이런 식으로, 분할 작동이 더 이상 수행되지 않는다. 예를 들어, (6, 1, 1), (5, 2, 1) 또는 (3, 2, 1, 1, 1)과 같은 값 조합이 사용될 수 있다. 이것은 본 출원의 본 실시예에서 제한되지 않으며, 여기에 열거된 값 조합은 설명을 위한 예로서만 사용된다.
다른 구현에서, 타깃 샘플의 예측값은 다음의 수학식에 따라 업데이트될 수 있다.
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, , , 는 각각 좌표 위치 , , 에서의 참조 샘플의 재구축된 값을 나타내고, w1, w2, w3, w4 및 w5는 미리 설정된 상수이며, M1, M2, M3 및 M4는 미리 설정된 양의 정수이다.
예를 들어, 가중치 계수 세트 (w1, w2, w3, w4, w5)는 w1 + w2 + w3 + w4 + w5의 값 조합일 수 있으며, 여기서 w1 + w2 + w3 + w4 + w5는 2의 정수의 거듭 제곱과 같다. 이런 식으로, 분할 작동이 더 이상 수행되지 않는다. 예를 들어, (3, 2, 1, 1, 1)과 같은 값 조합이 사용될 수 있다. 이것은 본 출원의 본 실시예에서 제한되지 않으며, 여기에 열거된 값 조합은 설명을 위한 예로서만 사용된다. 이러한 구현과 이전 구현 사이의 차이점은 처리될 픽처 블록의 왼쪽에 있는 샘플과 처리될 픽처 블록 위에 있는 샘플이 이러한 구현에서 고려되지 않는다는 점에 있다. 이러한 구현이 타깃 샘플의 예측값을 업데이트하는 데 사용되고 참조 샘플의 재구축된 값이 이용 불가능한 경우, 다음의 단계 S13061 및 S13062의 방법이 이용 가능한 참조 샘플을 획득하고 이용 가능한 샘플에 기초하여 타깃 샘플의 예측값을 업데이트하는 데 사용될 수 있다.
실행 가능한 구현에서, 하나 이상의 참조 샘플은 다음 샘플, 즉 타깃 샘플과 동일한 수평 좌표를 가지며 또한 처리될 픽처 블록의 상단면에 인접한 재구축된 샘플. 타깃 샘플과 동일한 수직 좌표를 가지며 또한 처리될 픽처 블록의 왼쪽면에 인접한 재구축된 샘플, 처리될 픽처 블록의 오른쪽 상단의 재구축된 샘플, 처리될 픽처 블록의 왼쪽 하단의 재구축된 샘플, 또는 처리될 픽처 블록의 왼족 상단의 재구축된 샘플 중 하나 이상을 포함한다.
다른 실행 가능한 구현에서, 타깃 샘플의 예측값은 다음의 수학식에 따라 업데이트될 수 있다.
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2)
여기서 타깃 픽셀의 좌표는 이고, 는 업데이트 전 타깃 샘플의 예측값을 나타내며, 는 타깃 픽셀의 업데이트된 예측값을 나타내고, w1 및 w2는 미리 설정된 상수이다.
구체적으로, 제2 예측 샘플 값 은 먼저 공간적 이웃 샘플 및 평면(PLANAR) 인트라 예측 모드에 기초하여 획득될 수 있다. PLANAR 모드에서, 수평 방향과 수직 방향의 두 개의 선형 필터가 사용하고, 두 개의 선형 필터에 의해 획득되는 평균값은 현재 블록의 샘플 예측값으로 사용됨을 알 수 있다.
예를 들어, 제2 예측 샘플 값 은 PLANAR 모드에 기초하여 획득될 수 있다.
여기서, 도 16에 도시된 바와 같이, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 , , , 이며, 각각 좌표 위치 , , 에서의 참조 샘플의 재구축된 값을 나타내며, nTbW 및 nTbH는 현재 CU(처리될 픽처 블록)의 폭 및 높이를 나타낸다.
다른 실행 가능한 구현에서, 타깃 샘플의 예측값은 다음의 수학식에 따라 업데이트된다.
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predV(xP, yP) + w3 * predH(xP, yP) + ((w1 + w2 + w3)/2))/(w1 + w2 + w3)
여기서 predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH) + nTbH/2) >> Log2(nTbH), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1) + nTbW/2) >> Log2(nTbW)이고, 타깃 샘플의 좌표는 (xP, yP)이며, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 (0, 0)이고, predP(xP, yP)는 업데이트 전 타깃 샘플의 예측값을 나타내며, predQ(xP, yP)는 타깃 샘플의 업데이트된 예측값을 나타내고, p(xP, -1), p(-1, nTbH), p(-1, yP) 및 p(nTbW, -1)은 각각 좌표 위치 (xP, -1),(-1, nTbH),(-1, yP) 및 (nTbW, -1)에서의 참조 샘플의 재구축된 값을 나타내며, w1 및 w2는 미리 설정된 상수이고, nTbW 및 nTbH는 처리될 픽처 블록의 폭과 높이를 나타낸다.
다른 실행 가능한 구현에서, 타깃 샘플의 예측값은 다음의 수학식에 따라 업데이트된다.
predQ(xP, yP) = (((w1 * predP(xP, yP)) << (Log2(nTbW) + Log2(nTbH) + 1)) + w2 * predV(xP, yP) + w3 * predH(xP , yP) + (((w1 + w2 + w3)/2) << (Log2(nTbW) + Log2(nTbH) + 1)))/(((w1 + w2 + w3) << (Log2(nTbW) + Log2(nTbH) + 1)))
여기서 predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW)이고, predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH)이며, 타깃 샘플의 좌표는 (xP, yP)이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 (0, 0)이며, predP(xP, yP)는 업데이트 전 타깃 샘플의 예측값을 나타내고, predQ(xP, yP)는 타깃 샘플의 업데이트된 예측값을 나타내며, p(xP, -1), p(-1, nTbH), p(-1, yP) 및 p(nTbW, -1)은 각각 좌표 위치 (xP, -1),(-1, nTbH),(-1, yP) 및(nTbW, -1)에서의 참조 샘플의 재구축된 값을 나타내고, w1 및 w2는 미리 설정된 상수이며, nTbW 및 nTbH는 처리될 픽처 블록의 폭과 높이를 나타낸다.
제2 예측 샘플 값 을 생성하는 데 사용되는 평면(PLANAR) 모드 알고리즘은 VTM의 알고리즘에 제한되지 않고, 다르게는 HEVC 또는 H.264의 PLANAR 알고리즘이 사용될 수 있음에 유의해야 한다. 이것은 본 출원의 본 실시예에서 제한되지 않는다.
가중치 계수 w1 및 w2의 값은 본 출원의 본 실시예에서 제한되지 않는다는 점에 유의해야 한다. 예를 들어, 가중치 계수 세트 (w1, w2)는 w1 + w2의 값 조합일 수 있으며, 여기서 w1 + w2는 2의 정수의 거듭 제곱과 같다. 이런 식으로, 분할 작동이 더 이상 수행되지 않는다. 예를 들어, (6, 2), (5, 3) 또는 (4, 4)와 같은 값 조합이 사용될 수 있다. 이것은 본 출원의 본 실시예에서 제한되지 않으며, 여기에 열거된 값 조합은 설명을 위한 예로서만 사용된다.
다른 실행 가능한 구현에서, 타깃 샘플의 예측값은 다음의 수학식에 따라 업데이트될 수 있다.
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2)
여기서, 이고, 이며, 이고. 타깃 샘플의 좌표는 이며, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이고, 는 업데이트 전 타깃 샘플의 예측값을 나타내며, 는 타깃 샘플의 업데이트된 예측값을 나타내고, , , 는 각각 좌표 위치 , , 에서의 참조 샘플의 재구축된 값을 나타내며, w1과 w2는 미리 설정된 상수이고, nTbW와 nTbH는 처리될 픽처 블록의 폭과 높이를 나타낸다.
다른 실행 가능한 구현에서, 인터 예측 블록은 인트라 예측에서 사용되는 위치 종속 인트라 예측 결합 처리(Position-dependent intra prediction combination process) 기술에 의해 처리될 수 있고, 타깃 샘플의 업데이트된 예측값 은 VTM의 인트라 예측 결합 처리 기술에서의 DC 모드 방법을 사용하여 획득될 수 있다. DC 모드가 사용되는 경우, 현재 블록의 예측값은 현재 블록의 왼쪽과 위의 참조 샘플의 평균값에 기초하여 획득될 수 있음이 이해될 수 있다.
예를 들어, 타깃 샘플의 업데이트된 예측값 은 다음의 수학식에 따라 획득될 수 있다.
여기서, 도 16에 도시된 바와 같이, 이고, 이며, 이고, 이며, 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전의 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, , 은 각각 좌표 위치 , 에서의 참조 샘플의 재구축된 값을 나타내고, nTbW와 nTbH는 처리될 픽처 블록의 폭과 높이를 나타내며, clip1Cmp는 클리핑 연산을 나타낸다.
타깃 샘플의 업데이트된 예측값 은 VTM의 인트라 예측 결합 처리 기술뿐만 아니라 JEM의 알고리즘을 사용하여 획득될 수 있다는 점에 유의해야 한다.
실행 가능한 구현에서, 인터 예측 블록은 인트라 예측에서 사용되는 위치 종속 인트라 예측 결합 처리 기술을 사용하여 처리될 수 있으며, 타깃 샘플의 업데이트된 예측 값 은 VTM의 인트라 예측 결합 처리 기술의 PLANAR 모드를 사용하여 획득될 수 있다. 다음의 수학식이 사용된다.
여기서, 도 16에 도시된 바와 같이,
이고, 이며, 이고, 타깃 샘플의 좌표는 이며, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이고, 는 업데이트 전 타깃 샘플의 예측값을 나타내며, 는 타깃 샘플의 업데이트된 예측값을 나타내고, 은 각각 좌표 위치 에서의 참조 샘플의 재구축된 값을 나타내며, nTbW 및 nTbH는 처리될 픽처 블록의 폭과 높이를 나타내고, clip1Cmp는 클리핑 연산을 나타낸다.
타깃 샘플의 업데이트된 예측값 은 VTM의 알고리즘뿐만 아니라 JEM의 알고리즘을 사용하여 획득될 수 있음에 유의해야 한다.
실행 가능한 구현에서, 인트라 예측 경계 필터링 기술을 사용하여 인터 예측 샘플에 대해 필터링 처리가 수행될 수 있다. 경계 필터링 기술에 대한 자세한 내용은 HEVC의 방법을 참조한다. 자세한 내용은 여기에서 설명되지 않는다.
전술한 방법 중 어느 하나로 타깃 샘플의 예측값이 업데이트되는 경우, 참조 샘플의 재구축된 값이 이용 불가능한 경우, 단계 S1306은 다음의 단계 S13061 및 S13062를 더 포함할 수 있음에 유의해야 한다.
단계 S13061 : 참조 샘플의 재구축된 값이 이용 불가능한 경우, 미리 설정된 수량의 이용 가능한 참조 샘플이 획득될 때까지 처리될 픽처 블록의 상단면과 왼쪽면에 인접한 샘플의 이용 가능성을 미리 설정된 순서로 결정한다.
참조 샘플의 재구축된 값이 이용 불가능한 경우는 다음의 경우, 즉 처리될 픽처 블록이 픽처의 상단면에 위치하는 경우, 좌표 위치 에서의 참조 샘플의 재구축된 값이 없거나, 또는 처리될 픽처 블록이 픽처의 왼쪽면에 위치하는 경우, 좌표 위치 에서의 참조 샘플의 재구축된 값이 없거나, 또는 재구축 값이 참조 샘플에 대한 획득될 수 없는 경우를 포함할 수 있음이 이해될 수 있다. 참조 샘플의 재구축된 값이 이용 불가능한 특정 경우는 본 출원의 본 실시예에서 제한되지 않으며, 여기서의 경우는 설명을 위한 예로서만 사용된다.
구현에서, 도 17에 도시된 바와 같이, 미리 설정된 순서는 좌표 (xN - 1, yN + nTbH - 1)에서 좌표 (xN - 1, yN - 1)로, 그 후에 좌표 (xN, yN - 1)에서 좌표 (xN + nTbW -1, yN - 1)로의 순서일 수 있다. 예를 들어, 처리될 픽처 블록의 상단면과 왼쪽면에 인접한 샘플에서 이용 가능한 참조 샘플을 검색하기 위해 모든 샘플은 좌표 (xN - 1, yN + nTbH - 1)에서 좌표 (xN - 1, yN - 1)로 그 후 좌표(xN, yN - 1)에서 좌표 (xN + nTbW - 1, yN - 1)로의 순서로 순회될 수 있다. 본 출원의 본 실시예에서는 미리 설정된 특정 순서가 제한되지 않으며, 여기에서의 미리 설정된 순서는 설명을 위한 예로서만 사용된다는 점에 유의해야 한다.
예를 들어, 모든 참조 샘플에 적어도 하나의 이용 가능한 참조 샘플이 있는 경우, 참조 샘플 (xN - 1, yN + nTbH - 1)의 재구축된 값이 이용 불가능한 경우, 이용 가능한 샘플은 좌표 (xN - 1, yN + nTbH - 1)에서 좌표 (xN - 1, yN - 1)로, 그 후 좌표 (xN, yN - 1)에서 좌표 (xN + nTbW - 1, yN - 1)로의 미리 설정된 순서로 검색된다. 이용 가능한 샘플이 발견되면 검색이 종료된다. 이용 가능한 샘플이 (x, y)인 경우, 참조 샘플 (xN - 1, yN + nTbH - 1)의 재구축된 값은 샘플 (x, y)의 재구축된 값으로 설정된다. 참조 샘플 (x, y)의 재구축된 값이 참조 샘플 (xN - 1, yN + nTbH - M)을 포함하는 세트에서 이용 불가능한 경우, 참조 샘플 (x, y)의 재구축된 값은 샘플 (x, y + 1)의 재구축된 값으로 설정되며, 여기서 M은 2보다 크거나 같고 nTbH + 1보다 작거나 같다. 참조 샘플 (x, y)의 재구축된 값이 참조 샘플 (xN + N, yN - 1)을 포함하는 세트에서 이용 불가능한 경우, 참조 샘플 (x, y)의 재구축된 값은 참조 샘플 (x - 1, y)의 재구축된 값으로 설정되며, 여기서 N은 0보다 크거나 같고 nTbW -1보다 작거나 같다.
예를 들어, 참조 샘플 (xN - 1, yN + nTbH - M)의 재구축된 값이 이용 불가능한 경우, 이용 가능한 참조 샘플은 좌표 (xN - 1, yN + nTbH - M)부터 시작하는 미리 설정된 순서대로 검색될 수 있으며, 여기서 M은 1보다 크거나 같고 nTbH + 1보다 작거나 같다. 이용 가능한 참조 샘플이 B인 경우, 참조 샘플 (xN - 1, yN + nTbH - M)의 재구축된 값은 참조 샘플 B의 재구축된 값으로 설정될 수 있다. 좌표 (xN + N, yN - 1)를 갖는 참조 샘플의 재구축된 값이 이용 불가능한 경우, 이용 가능한 참조 샘플은 좌표 (xN + N, yN - 1)로부터 시작하는 미리 설정된 순서대로 검색될 수 있으며, 여기서 N은 0보다 크거나 같고 nTbW - 1보다 작거나 같다. 이용 가능한 참조 샘플이 C인 경우, 참조 샘플 (xN + N , yN - 1)의 재구축된 값은 참조 샘플 C의 재구축된 값으로 설정될 수 있다.
예를 들어, 참조 샘플 (xN - 1, yN + nTbH - 3)의 재구축된 값이 이용 불가능한 경우, 처리될 픽처의 상단면과 왼쪽면에 인접한 샘플의 이용 가능성은 이용 가능한 참조 샘플의 미리 설정된 수량이 획득될 때까지 좌표 (xN - 1, yN + nTbH - 3)에서 좌표(xN - 1, yN - 1)의 순서로 결정될 수 있으며, 참조 샘플 (xN - 1, yN + nTbH - 3)의 재구축된 값은 이용 가능한 참조 샘플의 재구축된 값으로 설정될 수 있다. 좌표 (xN + 3, yN - 1)를 갖는 참조 샘플의 재구축된 값이 이용 불가능한 경우, 이용 가능한 샘플은 좌표 (xN + 3, yN - 1)에서 좌표 (xN + nTbW -1, yN - 1)의 순서대로 검색되며, 참조 샘플 (xN + 3, yN - 1)의 재구축된 값은 이용 가능한 참조 샘플의 재구축된 값으로 설정될 수 있다.
예를 들어, 참조 샘플 (xN - 1, yN + nTbH - 1)의 재구축된 값이 이용 불가능한 경우, 이용 가능한 샘플은 좌표 (xN - 1, yN + nTbH - 1)에서 좌표 (xN - 1, yN - 1)로 그 후 좌표 (xN, yN - 1)에서 좌표 (xN + nTbW - 1, yN - 1)로의 미리 설정된 순서대로 검색된다. 이용 가능한 샘플이 발견되면 검색이 종료된다. 이용 가능한 샘플이 (x, y)인 경우, 참조 샘플 (xN - 1, yN + nTbH - 1)의 재구축된 값은 샘플 (x, y)의 재구축된 값으로 설정된다. 참조 샘플 (xN - 1, yN + nTbH - M)의 재구축된 값이 이용 불가능한 경우, 이용 가능한 참조 샘플은 좌표 (xN - 1, yN + nTbH - M)부터 시작하여 미리 설정된 순서와 반대 순서로 검색될 수 있으며, 여기서 M은 1보다 크고 nTbH + 1보다 작거나 같다. 이용 가능한 참조 샘플이 C인 경우, 참조 샘플 (xN - 1, yN + nTbH - M)의 재구축된 값은 참조 샘플 C의 재구축된 값으로 설정될 수 있다. 좌표 (xN + N, yN - 1)를 갖는 참조 샘플의 재구축된 값이 이용 불가능한 경우, 이용 가능한 참조 샘플은 좌표 (xN + N, yN - 1)에서 시작하여 미리 설정된 순서와 반대 순서로 검색될 수 있으며, 여기서 N은 0보다 크거나 같고 nTbW - 1보다 작거나 같다. 이용 가능한 참조 샘플이 D인 경우, 참조 샘플 (xN + N, yN - 1)의 재구축된 값은 참조 샘플 D의 재구축된 값으로 설정될 수 있다.
예를 들어, 참조 샘플 (xN - 1, yN + nTbH - 3)의 재구축된 값이 이용 불가능한 경우, 처리될 픽처의 상단면과 왼쪽면에 인접한 샘플의 이용 가능성은 미리 설정된 수량의 이용 가능한 참조 샘플이 획득될 때까지 좌표 (xN - 1, yN + nTbH - 3)에서 좌표(xN - 1, yN + nTbH - 1)로의 순서로 결정될 수 있으며, 참조 샘플 (xN - 1, yN + nTbH - 3)의 재구축된 값은 이용 가능한 참조 샘플의 재구축된 값으로 설정될 수 있다. 좌표 (xN + 3, yN - 1)를 갖는 참조 샘플의 재구축된 값이 이용 불가능한 경우, 이용 가능한 샘플은 좌표 (xN + 3, yN - 1)에서 좌표 (xN, yN - 1)로의 순서대로 검색되며, 참조 샘플 (xN + 3, yN - 1)의 재구축된 값은 이용 가능한 참조 샘플의 재구축된 값으로 설정될 수 있다.
새로운 참조 샘플은 미리 설정된 순서에서 발견된 제1 이용 가능한 참조 샘플일 수 있거나, 또는 미리 설정된 순서에서 발견된 임의의 이용 가능한 참조 샘플일 수 있다는 점에 유의해야 한다. 이것은 본 출원의 본 실시예에서 제한되지 않는다.
방법에 따르면, 참조 샘플이 이용 불가능한 경우, 이용 가능한 참조 샘플은 처리될 픽처 블록의 상단면과 왼쪽면에 인접한 샘플에서 검색될 수 있으며, 이용 가능한 참조 샘플의 재구축된 값은 이용 불가능한 참조 샘플의 재구축된 값으로 사용됨이 이해될 수 있다.
단계 S13062 : 타깃 샘플의 예측값을 업데이트하기 위해 이용 가능한 참조 샘플의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행한다.
예를 들어, 타깃 샘플의 예측값은 전술한 구현 중 어느 하나를 사용하여 새로운 참조 샘플의 재구축된 값에 기초하여 업데이트될 수 있다.
참조 샘플의 재구축된 값이 이용 불가능하고, 단계 S13061에서, 처리될 픽처 블록의 상단면과 왼쪽면에 인접한 모든 샘플이 이용 불가능한 것으로 결정되는 경우, 참조 샘플의 재구축된 값은 1 << (bitDepth - 1)로 설정될 수 있으며, 여기서 bitDepth는 참조 샘플의 샘플 값의 비트 깊이를 나타낸다. 예를 들어, 처리될 픽처 블록이 픽처의 왼쪽 상단 코너에 위치하고 처리될 픽처 블록의 왼쪽 상단에의 좌표가 (0, 0)인 경우, 처리될 픽처 블록의 상단면과 왼쪽면에 인접한 모든 샘플은 이용 불가능하다. 이 경우, 처리될 픽처 블록의 타깃 샘플에 대응하는 참조 샘플의 재구축된 값은 1 << (bitDepth - 1)로 설정될 수 있다.
전술한 복수의 구현에서, 인터 예측 샘플을 생성하는 프로세스에서 인터 예측 샘플에 대해 공간적 필터링이 수행된다. 기존 기술에 비해, 코딩 효율이 향상된다.
실행 가능한 구현에서, 단계 S1306 이전에, 방법은 단계 S1305를 더 포함할 수 있다.
단계 S1305 : (선택적으로) 참조 샘플에 대해 필터링 처리를 수행한다.
단계 S1305는 도 3에서의 비디오 디코더의 필터 유닛(206)에 의해 수행될 수 있음이 이해될 수 있다.
예를 들어, 참조 샘플에 대한 필터링 처리를 수행하는 단계는, 참조 샘플이 처리될 픽처 블록 위에 위치하는 경우, 참조 샘플의 재구축된 값과 참조 샘플의 왼쪽의 이웃하는 샘플 및 우측에 이웃하는 샘플의 재구축된 값에 대해 가중치 계산을 수행하는 단계, 참조 샘플이 처리될 픽처 블록의 왼쪽에 위치하는 경우, 참조 샘플의 재구축된 값과 참조 샘플의 상단에 이웃하는 샘플 및 하단에 이웃하는 샘플의 재구축된 값에 대해 가중치 계산을 수행하는 단계, 및 가중치 계산의 결과를 사용하여 참조 샘플의 재구축된 값을 업데이트하는 단계를 포함할 수 있다.
단계 S1305에서 참조 샘플에 대해 필터링 처리가 수행된 후, 단계 S1306이 수행되는 경우, 타깃 샘플의 예측값을 업데이트하기 위해 필터링 처리 후 참조 샘플의 업데이트된 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산이 수행될 수 있음을 알 수 있다.
참조 샘플에 대해 필터링 처리를 수행하기 위한 특정 방법에 대해, 단계 S1306에서 필터링 방법에 대해 참조가 이루어질 수 있다는 점에 유의해야 한다. 자세한 내용은 여기에서 설명되지 않는다.
참조 샘플의 재구축된 값을 업데이트하기 위해 참조 샘플에 대해 필터링 처리가 수행되고, 참조 샘플의 업데이트된 재구축된 값에 기초하여 타깃 샘플에 대해 필터링 처리가 수행됨을 이해할 수 있다. 이는 코딩 효율성을 더욱 향상시키고, 예측 잔여를 줄일 수 있다.
실행 가능한 구현에서, 단계 S1306 이전 또는 단계 S1306 이후에, 단계 S1307이 더 포함될 수 있다.
단계 S1307 : (선택적으로) 이러한 방법 이외의 인터 코딩 기술을 사용하여 모션 정보 및 비트스트림 정보에 기초하여 인터 예측을 계속 수행한다.
단계 S1307은 도 3에서의 비디오 디코더의 인터 예측기(210)에 의해 수행될 수 있음을 이해할 수 있다.
예를 들어, 양방향 광학 흐름 방법, 디코더 측 모션 벡터 정제 방법, 로컬 조도 보상(local illuminance compensation, LIC) 기술, 일반 가중 예측(general weighted prediction, GBI), 중첩 블록 모션 보상(Overlapped Block Motion Compensation, OBMC) 및 디코더 측 모션 벡터 보상(Decoder-side Motion Vector Compensation, DMVD) 기술을 포함하여 HEVC 또는 VTM의 기술이 사용될 수 있지만 이에 제한되지는 않는다. HEVC 또는 VTM의 방법 또는 모션 벡터 예측 후보 리스트를 생성하는 다른 방법이 사용될 수 있다. 이것은 본 출원의 본 실시예에서 제한되지 않는다.
전술한 방법에서 단계 S1301 내지 S1307을 수행하는 순서는 본 출원의 본 실시예에서 제한되지 않음에 유의해야 한다. 예를 들어, 단계 S1305는 단계 S1307 이전에 수행될 수 있거나, 또는 단계 S1307 이후에 수행될 수 있다. 이것은 본 출원의 본 실시예에서 제한되지 않는다.
실행 가능한 구현에서, 모션 정보에 기초하여 처리될 픽처 블록에 대해 모션 보상을 수행하기 전에, 방법은, 제1 미리 설정된 알고리즘을 사용하여 모션 정보를 초기에 업데이트하는 단계를 더 포함할 수 있으며, 이와 상응하여, 모션 정보에 기초하여 처리될 픽처 블록에 대해 모션 보상을 수행하는 단계는, 초기에 업데이트된 모션 정보에 기초하여 처리될 픽처 블록에 대해 모션 보상을 수행하는 단계를 포함한다.
다른 실행 가능한 구현에서, 처리될 픽처 블록의 예측 블록이 획득된 후, 방법은, 제2 미리 설정된 알고리즘을 사용하여 예측 블록을 미리 업데이트하는 단계를 더 포함할 수 있고, 이에 상응하여, 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하는 단계는, 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 미리 업데이트된 예측값에 대해 가중치 계산을 수행하는 단계를 포함한다.
다른 실행 가능한 구현에서, 타깃 샘플의 예측값을 업데이트하기 위해, 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하는 단계 후에, 방법은 제2 미리 설정된 알고리즘을 사용하여 타깃 샘플의 예측값을 업데이트하는 단계를 더 포함한다.
타깃 샘플의 업데이트된 예측값이 획득된 후, 방법은 현재 블록의 재구축된 픽처를 획득하기 위해 최종 인터 예측 픽처 및 잔여 픽처를 추가하는 단계를 더 포함할 수 있음을 이해해야 한다. 구체적으로, 현재 블록이 잔여를 갖는 경우, 현재 블록의 재구축된 픽처를 획득하기 위해 잔여 정보가 예측 픽처에 추가된다. 현재 블록이 잔여를 갖지 않으면, 예측 픽처는 현재 블록의 재구축된 픽처이다. 전술한 프로세스에서, HEVC 또는 VTM에서와 동일한 방법 또는 다른 모션 보상 또는 픽처 재구축 방법이 사용될 수 있다. 이것은 제한되지 않는다.
본 출원의 본 실시예에서 제공되는 인터 예측 방법에 따르면, 비트스트림은 처리될 픽처 블록의 모션 정보를 획득하기 위해 파싱되고, 모션 보상은 처리될 픽처 블록의 예측 블록을 획득하기 위해 모션 정보에 기초하여 처리될 픽처 블록에 대해 수행되며, 가중치 계산은 타깃 샘플의 예측값을 업데이트하기 위해 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대해 수행되며, 여기서 참조 샘플은 타깃 샘플과 미리 설정된 공간적 위치 관계를 갖는다. 본 출원의 본 실시예에서, 처리될 픽처 블록 내의 타깃 샘플의 예측값이 획득된 후, 이웃하는 재구축된 샘플을 사용하여 타깃 샘플의 예측값에 대해 필터링 처리가 수행된다. 이러한 방식으로, 코딩 압축 효율이 향상되고, PSNR BDrate가 0.5% 감소한다. 기존 기술에 비해, 인터 예측 샘플을 생성하는 프로세스에서 인터 예측 샘플에 대해 수행된 공간적 필터링이 코딩 효율을 향상시킨다.
본 출원의 실시예는 인터 예측 장치를 제공한다. 장치는 비디오 디코더일 수 있다. 구체적으로, 인터 예측 장치는 전술한 인터 예측 방법에서 디코딩 장치에 의해 수행되는 단계를 수행하도록 구성된다. 본 출원의 본 실시예에서 제공되는 인터 예측 장치는 대응하는 단계에 대응하는 모듈을 포함할 수 있다.
본 출원의 본 실시예에서, 인터 예측 장치는 전술한 방법 예에 기초하여 기능 모듈로 분할될 수 있다. 예를 들어, 기능 모듈은 대응하는 기능에 기초한 분할을 통해 획득될 수 있거나, 또는 둘 이상의 기능이 하나의 처리 모듈에 통합될 수 있다. 통합 모듈은 하드웨어 형태로 구현될 수 있거나, 또는 소프트웨어 기능 모듈 형태로 구현될 수 있다. 본 출원의 본 실시예에서, 모듈로의 분할은 예시이고, 단지 논리적인 기능 분할이며, 실제 구현에서 다른 분할일 수 있다.
기능 모듈이 대응하는 기능에 기초한 분할을 통해 획득되는 경우, 도 18은 전술한 실시예에서의 인터 예측 장치의 가능한 개략적인 구조도이다. 도 18에 도시된 바와 같이, 인터 예측 장치(1800)는 파싱 모듈(1801), 보상 모듈(1802) 및 계산 모듈(1803)을 포함할 수 있다. 구체적으로, 모듈의 기능은 다음과 같다.
파싱 모듈(1801)은 처리될 픽처 블록의 모션 정보를 획득하기 위해 비트스트림을 파싱하도록 구성된다.
보상 모듈(1802)은 처리될 픽처 블록의 예측 블록을 획득하기 위해 모션 정보에 기초하여 처리될 픽처 블록에 대해 모션 보상을 수행하도록 구성되며, 여기서 픽처 블록의 예측 블록은 타깃 샘플의 예측값을 포함한다.
계산 모듈(1803)은 타깃 샘플의 예측값을 업데이트하기 위해 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 예측값에 대한 가중치 계산을 수행하도록 구성되며, 여기서 참조 샘플은 타깃 샘플과 미리 설정된 공간적 위치 관계를 갖는다.
실행 가능한 구현에서, 하나 이상의 참조 샘플은 타깃 샘플과 동일한 수평 좌표를 가지며 타깃 샘플과 미리 설정된 수직 좌표 차이를 갖는 재구축된 샘플 또는 타깃 샘플과 동일한 수직 좌표를 가지면 타깃 샘플과 미리 설정된 수평 좌표 차이를 갖는 재구축된 샘플을 포함한다.
실행 가능한 구현에서, 계산 모듈(1803)은 다음의 수학식에 따라 타깃 샘플의 예측값을 업데이트한다.
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, 는 각각 좌표 위치 에서 참조 샘플의 재구축된 값을 나타내고, w1, w2, w3, w4, w5 및 w6은 미리 설정된 상수이며, M1 및 M2는 미리 설정된 양의 정수이다.
실행 가능한 구현에서, w1 + w2 = R, w3 + w4 = R, 또는 w5 + w6 + w7 = R이며, 여기서 R은 2의 n 거듭 제곱이며, n은 음이 아닌 정수이다.
실행 가능한 구현에서, 계산 모듈(1803)은 다음의 수학식에 따라 타깃 샘플의 예측값을 업데이트한다.
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, , , 는 각각 좌표 위치 , , 에서의 참조 샘플의 재구축된 값을 나타내고, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 및 w11은 미리 설정된 상수이며, M1, M2, M3 및 M4는 미리 설정된 양의 정수이다.
실행 가능한 구현에서, w1 + w2 + w3 = S, w4 + w5 + w6 = S, 또는 w7 + w8 + w9 + w10 + w11 = S이며, 여기서 S는 2의 n 거듭제곱이고, n은 음이 아닌 정수이다.
실행 가능한 구현에서, 계산 모듈(1803)은 다음의 수학식에 따라 타깃 샘플의 예측값을 업데이트한다.
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, 는 각각 좌표 위치 에서의 참조 샘플의 재구축된 값을 나타내고, w1, w2 및 w3은 미리 설정된 상수이며, M1 및 M2는 미리 설정된 양의 정수이다.
실행 가능한 구현에서, w1 + w2 + w3 = R이며, 여기서 R은 2의 n 거듭 제곱이고, n은 음이 아닌 정수이다.
실행 가능한 구현에서, 계산 모듈(1803)은 다음의 수학식에 따라 타깃 샘플의 예측값을 업데이트한다.
여기서 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, , , 는 각각 좌표 위치 , , 에서의 참조 샘플의 재구축된 값을 나타내고, w1, w2, w3, w4 및 w5는 미리 설정된 상수이며, M1, M2, M3 및 M4는 미리 설정된 양의 정수이다.
실행 가능한 구현에서, w1 + w2 + w3 + w4 + w5 = S이며, 여기서 S는 2의 n 거듭 제곱이고, n은 음이 아닌 정수이다.
실행 가능한 구현에서, 하나 이상의 참조 샘플은 다음 샘플, 즉 타깃 샘플과 동일한 수평 좌표를 가지며 처리될 픽처 블록의 상단면에 인접한 재구축된 샘플, 타깃 샘플과 동일한 수직 좌표를 가지며 처리될 픽처 블록의 왼쪽면에 인접한 재구축된 샘플, 처리될 픽처 블록의 오른쪽 상단의 재구축된 샘플, 처리될 픽처 블록의 왼쪽 하단의 재구축된 샘플, 또는 처리될 픽처 블록의 왼쪽 상단의 재구축된 샘플 중 하나 이상을 포함한다.
실행 가능한 구현에서, 계산 모듈(1803)은 다음의 수학식에 따라 타깃 샘플의 예측값을 업데이트한다.
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2)
여기서 predP1(xP, yP) = (predV(xP, yP) + predH(xP, yP) + nTbW * nTbH) >> (Log2(nTbW) + Log2(nTbH) + 1), predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW), predH(xP, yP) =((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH)이고, 타깃 샘플의 좌표는 (xP, yP)이며, 처리될 픽처 블록의 왼쪽 상단의 좌표는 (0, 0)이고, predP(xP, yP)는 업데이트 전 타깃 샘플의 예측값을 나타내며, predQ(xP, yP)는 타깃 샘플의 업데이트된 예측값을 나타내고, p(xP, -1), p(-1, nTbH), p(-1, yP) 및 p(nTbW, -1)은 각각 좌표 위치 (xP, -1), (-1, nTbH),(-1, yP) 및 (nTbW, -1)에서의 참조 샘플의 재구축된 값을 나타내며, w1 및 w2는 미리 설정된 상수이고, nTbW 및 nTbH는 처리될 픽처 블록의 폭과 높이를 나타낸다.
실행 가능한 구현에서, 타깃 샘플의 예측값은 다음의 수학식에 따라 업데이트된다.
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predV(xP, yP) + w3 * predH(xP, yP) + ((w1 + w2 + w3)/2))/(w1 + w2 + w3)
여기서 predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH) + nTbH/2) >> Log2(nTbH), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1) + nTbW/2) >> Log2(nTbW)이고, 타깃 샘플의 좌표는 (xP, yP)이며, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 (0, 0)이고, predP(xP, yP)는 업데이트 전 타깃 샘플의 예측값을 나타내며, predQ(xP, yP)는 타깃 샘플의 업데이트된 예측값을 나타내고, p(xP, -1), p(-1, nTbH), p(-1, yP) 및 p(nTbW, -1)은 각각 좌표 위치 (xP, -1),(-1, nTbH),(-1, yP) 및 (nTbW, -1)에서의 참조 샘플의 재구축된 값을 나타내며, w1 및 w2는 미리 설정된 상수이고, nTbW 및 nTbH는 처리될 픽처 블록의 폭과 높이를 나타낸다.
실행 가능한 구현에서, 타깃 샘플의 예측값은 다음의 수학식에 따라 업데이트된다.
predQ(xP, yP) = (((w1 * predP(xP, yP)) << (Log2(nTbW) + Log2(nTbH) + 1)) + w2 * predV(xP, yP) + w3 * predH(xP , yP) + (((w1 + w2 + w3)/2) << (Log2(nTbW) + Log2(nTbH) + 1)))/(((w1 + w2 + w3) << (Log2(nTbW) + Log2(nTbH) + 1)))
여기서 predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH)이며, 타깃 샘플의 좌표는 (xP, yP)이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 (0, 0)이며, predP(xP, yP)는 업데이트 전 타깃 샘플의 예측값을 나타내고, predQ(xP, yP)는 타깃 샘플의 업데이트된 예측값을 나타내며, p(xP, -1), p(-1, nTbH), p(-1, yP) 및 p(nTbW, -1)은 각각 좌표 위치 (xP, -1),(-1, nTbH),(-1, yP) 및(nTbW, -1)에서의 참조 샘플의 재구축된 값을 나타내고, w1 및 w2는 미리 설정된 상수이며, nTbW 및 nTbH는 처리될 픽처 블록의 폭과 높이를 나타낸다.
실행 가능한 구현에서, 계산 모듈(1803)은 다음의 수학식에 따라 타깃 샘플의 예측값을 업데이트한다.
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2)
여기서, 이고, 이며, 이고. 타깃 샘플의 좌표는 이며, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이고, 는 업데이트 전 타깃 샘플의 예측값을 나타내며, 는 타깃 샘플의 업데이트된 예측값을 나타내고, , , 는 각각 좌표 위치 , , 에서의 참조 샘플의 재구축된 값을 나타내며, w1과 w2는 미리 설정된 상수이고, nTbW와 nTbH는 처리될 픽처 블록의 폭과 높이를 나타낸다.
실행 가능한 구현에서, w1과 w2의 합은 2의 n 거듭 제곱이고, n은 음이 아닌 정수이다.
실행 가능한 구현에서, 계산 모듈(1803)은 다음의 수학식에 따라 타깃 샘플의 예측값을 업데이트한다.
여기서 이고, 이며, 이고, 이며, 타깃 샘플의 좌표는 이고, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이며, 는 업데이트 전의 타깃 샘플의 예측값을 나타내고, 는 타깃 샘플의 업데이트된 예측값을 나타내며, , 은 각각 좌표 위치 , 에서의 참조 샘플의 재구축된 값을 나타내고, nTbW와 nTbH는 처리될 픽처 블록의 폭과 높이를 나타내며, clip1Cmp는 클리핑 연산을 나타낸다.
실행 가능한 구현에서, 계산 모듈(1803)은 다음의 수학식에 따라 타깃 샘플의 예측값을 업데이트한다.
여기서
이고, 이며, 이고, 타깃 샘플의 좌표는 이며, 처리될 픽처 블록의 왼쪽 상단 샘플의 좌표는 이고, 는 업데이트 전 타깃 샘플의 예측값을 나타내며, 는 타깃 샘플의 업데이트된 예측값을 나타내고, 은 각각 좌표 위치 에서의 참조 샘플의 재구축된 값을 나타내며, nTbW 및 nTbH는 처리될 픽처 블록의 폭과 높이를 나타내고, clip1Cmp는 클리핑 연산을 나타낸다.
실행 가능한 구현에서, 계산 모듈(1803)은, 참조 샘플의 재구축된 값이 이용 불가능한 경우, 미리 설정된 순서로, 미리 설정된 수량의 이용 가능한 참조 샘플이 획득될 때까지 처리될 픽처 블록의 상단면과 왼쪽면에 인접한 샘플의 이용 가능성을 결정하고, 이용 가능한 참조 샘플의 재구축된 값 및 타깃 샘플의 예측값에 대해 가중치 계산을 수행하도록 추가로 구성된다.
실행 가능한 구현에서, 계산 모듈(1803)은, 참조 샘플이 처리될 픽처 블록 위에 위치하는 경우, 참조 샘플의 재구축된 값 및 참조 샘플의 왼쪽의 이웃하는 샘플 및 오른쪽의 이웃하는 샘플의 재구축된 값에 대해 가중치 계산을 수행하고, 참조 샘플이 처리될 픽처 블록의 왼쪽에 위치하는 경우, 참조 샘플의 재구축된 값 및 참조 샘플의 상단에 위치하는 샘플 및 하단에 위치하는 샘플의 재구축된 값에 대해 가중치 계산을 수행하며, 가중치 계산의 결과를 사용하여 참조 샘플의 재구축된 값을 업데이트하도록 추가로 구성된다.
실행 가능한 구현에서, 계산 모듈(1803)은 제1 미리 설정된 알고리즘을 사용하여 초기에 모션 정보를 업데이트하도록 추가로 구성된다. 이와 상응하여, 보상 모듈(1802)은 구체적으로 초기에 업데이트된 모션 정보에 기초하여 처리될 픽처 블록에 대한 모션 보상을 수행하도록 구성된다.
실행 가능한 구현에서, 계산 모듈(1803)은 제2 미리 설정된 알고리즘을 사용하여 예측 블록을 미리 업데이트하도록 추가로 구성된다. 이와 상응하여, 계산 모듈(1803)은 구체적으로 하나 이상의 참조 샘플의 하나 이상의 재구축된 값 및 타깃 샘플의 미리 업데이트된 예측값에 대해 가중치 계산을 수행하도록 구성된다.
실행 가능한 구현에서, 계산 모듈(1803)은 제2 미리 설정된 알고리즘을 사용하여 타깃 샘플의 예측값을 업데이트하도록 추가로 구성된다.
실행 가능한 구현에서, 파싱 모듈(1801)은 처리될 픽처 블록에 대응하는 예측 모드를 획득하기 위해 비트스트림을 파싱하고, 예측 모드가 병합(merge) 모드 및/또는 인터 어드밴스드 모션 벡터 예측(inter AMVP) 모드인 것을 결정하도록 추가로 구성된다.
실행 가능한 구현에서, 파싱 모듈(1801)은 처리될 픽처 블록의 업데이트 결정 지시 정보를 획득하기 위해 비트스트림을 파싱하고, 업데이트 결정 지시 정보가 처리될 픽처 블록의 예측 블록을 업데이트하도록 지시하는 데 사용되는 것으로 결정하도록 추가로 구성된다.
실행 가능한 구현에서, 계산 모듈(1803)은 처리될 픽처 블록의 미리 설정된 업데이트 결정 지시 정보를 획득하고, 업데이트 결정 지시 정보가 처리될 픽처 블록의 예측 블록을 업데이트하도록 지시하는 데 사용되는 것을 결정하도록 추가로 구성된다.
도 19는 본 출원의 실시예에 따른 인터 예측 장치(1900)의 개략적인 구조 블록도이다. 구체적으로, 장치는 프로세서(1901) 및 프로세서에 연결된 메모리(1902)를 포함한다. 프로세서(1901)는 도 13에 도시된 실시예 및 실행 가능한 구현을 수행하도록 구성된다.
프로세서(1901)는 중앙 처리 장치(Central Processing Unit, CPU), 범용 프로세서, 디지털 신호 프로세서(Digital Signal Processor, DSP), ASIC, FPGA 또는 다른 프로그램 가능 로직 장치, 트랜지스터 로직 장치, 하드웨어 컴포넌트 또는 이들의 임의의 조합일 수 있다. 프로세서(1901)는 본 출원에서 개시된 내용을 참조하여 설명된 다양한 예시적인 로직 블록, 모듈 및 회로를 구현하거나 실행할 수 있다. 프로세서는 다르게는 컴퓨팅 기능을 구현하는 프로세서의 조합, 예를 들어 하나 이상의 마이크로 프로세서의 조합 또는 DSP와 마이크로 프로세서의 조합일 수 있다.
전술한 방법 실시예에서 각각의 시나리오의 모든 관련 내용은 대응하는 기능 모듈의 기능 설명에 인용될 수 있다. 자세한 내용은 여기서 다시 설명되지 않는다.
본 출원의 특정 측면이 비디오 인코더(100) 및 비디오 디코더(200)를 참조하여 설명되었지만, 본 출원의 기술은 많은 다른 비디오 인코딩 및/또는 인코딩 유닛, 프로세서, 처리 장치 및 하드웨어 기반 인코딩 유닛 등, 예를 들어 인코더/디코더(CODEC)에 의해 사용될 수 있음이 이해되어야 한다. 또한, 도 13에 도시되고 설명된 단계가 단순히 실행 가능한 구현으로서만 제공된다는 것이 이해되어야 한다. 즉, 도 13의 실행 가능한 구현에서 도시된 단계는 도 13에 도시된 순서로 반드시 수행되는 것은 아니며, 그 보다 적은, 추가 또는 대안의 단계가 수행될 수 있다.
또한, 실행 가능한 구현에 따라, 본 명세서에 설명된 임의의 방법에서 특정 동작 또는 이벤트가 다른 시퀀스로 수행될 수 있고, 동작 또는 이벤트가 추가될 수 있거나, 또는 동작 또는 이벤트가 결합되거나 삭제될 수 있음이 이해되어야 한다(예를 들어, 설명된 모든 동작 또는 이벤트가 방법을 구현하는 데 필요한 것은 아니다). 또한, 특정 실행 가능한 구현에서, 동작 또는 이벤트는 (예를 들어) 다중 스레딩 처리 또는 인터럽트 처리를 겪을 수 있거나, 또는 순차적이 아니라 복수의 프로세서에 의해 동시에 처리될 수 있다. 또한, 본 출원의 특정 측면이 명확성을 위해 단일 모듈 또는 유닛에 의해 수행되는 것으로 설명되었지만, 본 출원의 기술은 비디오 디코더와 연관된 유닛 또는 모듈의 조합에 의해 수행될 수 있음이 이해되어야 한다.
하나 이상의 실행 가능한 구현에서, 설명된 기능은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합을 사용하여 구현될 수 있다. 소프트웨어를 사용하여 기능을 구현하는 경우, 기능은 하나 이상의 명령 또는 코드로서 컴퓨터 판독 가능 매체에 저장되거나 또는 컴퓨터 판독 가능 매체를 통해 전송되어 하드웨어 기반 처리 장치에 의해 수행될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 저장 매체 또는 통신 매체를 포함할 수 있다. 컴퓨터 판독 가능 저장 매체는 데이터 저장 매체와 같은 유형의 매체에 대응한다. 통신 매체는 통신 프로토콜에 따라 (예를 들어) 한 위치에서 다른 위치로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함한다.
이러한 방식으로, 컴퓨터 판독 가능 매체는 예를 들어 (1) 비 일시적 유형의 컴퓨터 판독 가능 저장 매체, 또는 (2) 신호 또는 캐리어와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 출원에서 설명된 기술을 구현하기 위한 명령, 코드 및/또는 데이터 구조를 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체를 포함할 수 있다.
제한이 아닌 실행 가능한 구현 방식으로, 컴퓨터 판독 가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장 장치, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 플래시 메모리, 또는 명령 또는 데이터 구조의 형태로 필요한 코드를 저장하는 데 사용될 수 있으면서 컴퓨터에 의해 액세스될 수 있는 기타 임의의 매체를 포함할 수 있다. 마찬가지로, 임의의 연결은 적절하게 컴퓨터 판독 가능 매체로서 지칭될 수 있다. 예를 들어, 웹 사이트, 서버 또는 기타 원격 소스에서 동축 케이블, 광섬유 케이블, 트위스트 페어, 디지털 가입자 회선(digital subscriber line, DSL) 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술을 통해 명령이 전송되는 경우, 마이크로파, 동축 케이블, 광섬유 케이블, 트위스트 페어, DSL 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술이 매체의 정의에 포함된다.
그러나, 컴퓨터 판독 가능 저장 매체 및 데이터 저장 매체는 연결, 캐리어, 신호 또는 다른 일시적인 매체를 포함하지 않을 수 있지만, 다르게는 비 일시적 유형의 저장 매체를 의미한다는 것이 이해되어야 한다. 본 명세서에서 사용되는 자기 디스크 및 광 디스크는 컴팩트 디스크(CD), 레이저 디스크, 광 디스크, 디지털 다용도 디스크(digital versatile disc, DVD), 플로피 디스크 및 블루레이 디스크를 포함한다. 자기 디스크는 일반적으로 데이터를 자기적으로 재생하고, 광 디스크는 레이저를 통해 데이터를 광학적으로 재생한다. 전술한 자기 디스크와 광 디스크의 조합은 또한 컴퓨터 판독 가능 매체의 범위에 포함되어야 한다.
명령은 하나 이상의 디지털 신호 프로세서(DSP), 범용 마이크로 프로세서, 주문형 집적 회로(application-specific integrated circuits, ASIC), 필드 프로그래밍 가능 게이트 어레이(field programmable gate arrays, FPGA) 또는 기타 동등한 집적 또는 이산 로직 회로와 같은 하나 이상의 프로세서에 의해 실행될 수 있다. 따라서, 본 명세서에서 사용되는 "프로세서"라는 용어는 전술한 구조 중 어느 하나이거나 또는 본 명세서에서 설명된 기술을 구현하는 데 사용되는 다른 구조일 수 있다. 또한, 일부 측면에서, 본 명세서에서 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공될 수 있거나, 또는 결합된 코덱에 통합될 수 있다. 또한, 기술은 모두 하나 이상의 회로 또는 논리 요소에서 구현될 수 있다.
본 출원의 기술은 다양한 장치 또는 무선 이동 전화, 집적 회로(IC) 또는 IC 세트(예를 들어, 칩셋)를 포함하는 장치에서 구현될 수 있다. 개시된 기술을 수행하도록 구성된 장치의 기능적 측면을 강조하기 위해 본 출원에서 다양한 컴포넌트, 모듈 또는 유닛이 설명되지만, 반드시 상이한 하드웨어 유닛에 의해 구현되는 것은 아니다. 보다 정확하게는, 위에서 설명된 바와 같이, 다양한 유닛이 코덱 하드웨어 유닛으로 결합되거나 또는 적절한 소프트웨어 및/또는 펌웨어 세트와 함께 상호 운용 가능한 하드웨어 유닛(위에서 설명된 하나 이상의 프로세서 포함함)에 의해 제공될 수 있다.
전술한 설명은 본 출원의 특정 구현일 뿐이며, 본 출원의 보호 범위를 제한하려는 의도는 아니다. 본 출원에 개시된 기술 범위 내에서 당업자에 의해 용이하게 파악되는 임의의 변형 또는 대체는 본 출원의 보호 범위 내에 속한다. 따라서, 본 출원의 보호 범위는 청구 범위의 보호 범위에 따른다.

Claims (17)

  1. 예측 방법으로서,
    인터 예측을 통해 타깃 샘플의 제1 예측 값을 획득하는 단계;
    인트라 예측을 통해 상기 타깃 샘플의 제2 예측 값을 획득하는 단계; 및
    상기 제1 예측 값의 가중 계수 및 상기 제2 예측 값의 가중 계수에 기초하여, 상기 타깃 샘플의 업데이트된 예측 값을 획득하기 위해 상기 제1 예측 값 및 상기 제2 예측 값에 가중치 연산을 수행하는 단계 - 상기 제1 예측 값의 가중 계수가 상기 제2 예측 값의 가중 계수와 상이함 -
    를 포함하는 예측 방법.
  2. 제1항에 있어서,
    상기 인트라 예측을 통해 상기 타깃 샘플의 제2 예측 값을 획득하는 단계는, 평면 인트라 예측 모드를 이용하여 공간적으로 인접한 샘플에 기초하여 상기 타깃 샘플의 제2 예측값을 획득하는 단계를 포함하는, 예측 방법.
  3. 제2항에 있어서,
    상기 공간적으로 인접한 샘플은,
    상기 타깃 샘플과 동일한 수평 좌표를 갖는 재구축된 샘플로서 또한 상기 타깃 샘플과 미리 설정된 수직 좌표 차이를 갖는 상기 재구축된 샘플, 또는
    상기 타깃 샘플과 동일한 수직 좌표를 갖는 재구축된 샘플로서 또한 상기 타깃 샘플과 미리 설정된 수평 좌표 차이를 갖는 상기 재구축된 샘플, 또는
    상기 타깃 샘플과 동일한 수평 좌표를 갖는 재구축된 샘플로서 또한 상기 타깃 샘플을 포함하는 블록의 상단면에 인접한 상기 재구축된 샘플, 또는
    상기 타깃 샘플과 동일한 수직 좌표를 갖는 재구축된 샘플로서 또한 상기 타깃 샘플을 포함하는 블록의 왼쪽면에 인접한 상기 재구축된 샘플, 또는
    상기 타깃 샘플을 포함하는 블록의 오른쪽 상단의 재구축된 샘플, 또는
    상기 블록의 왼쪽 하단의 재구축된 샘플, 또는
    상기 블록의 왼쪽 상단의 재구축된 샘플
    을 포함하는, 예측 방법.
  4. 제1항에 있어서,
    상기 인터 예측을 통해 타깃 샘플의 제1 예측 값을 획득하는 단계가,
    처리될 픽처 블록의 모션 정보를 획득하기 위해 비트스트림을 파싱하는 단계; 및
    상기 처리될 픽처 블록의 예측 블록을 획득하기 위해, 상기 모션 정보에 기초하여 상기 처리될 픽처 블록에 대해 모션 보상을 수행하는 단계 - 상기 처리될 픽처 블록의 예측 블록은 상기 타깃 샘플의 제1 예측 값을 포함함 -
    를 포함하는, 예측 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 업데이트된 예측 값 predQ(xP, yP)은 w1 * predP(xP, yP) 및 w2 * predP1(xP, yP)에 기초하여 획득되고,
    (xP, yP)는 상기 타깃 샘플의 좌표를 나타내고, predP(xP, yP)는 상기 제1 예측 값을 나타내며, predP1(xP, yP)는 상기 제2 예측 값을 나타내고, w1은 상기 제1 예측 값의 가중된 계수를 나타내고, w2는 상기 제2 예측 값의 가중된 계수를 나타내며, w1과 w2는 사전 설정된 상수이고, w1는 w2와 같지 않은, 예측 방법.
  6. 제5항에 있어서,
    가중된 계수 세트 (w1, w2)는 (6, 2) 또는 (5, 3)인, 예측 방법.
  7. 제5항에 있어서,
    w1과 w2의 합은 2를 n의 거듭제곱한 값이고, n은 음수가 아닌 정수인, 예측 방법.
  8. 제1항에 있어서,
    상기 제1 예측 값 및 상기 제2 예측 값에 가중치 연산을 수행하기 전에,
    상기 타깃 샘플의 업데이트 결정 지시 정보를 획득하기 위해 비트스트림을 파싱하는 단계; 및
    상기 업데이트 결정 지시 정보가 상기 타깃 샘플의 예측 값의 업데이트를 지시하는 것으로 결정하는 단계
    를 더 포함하는 예측 방법.
  9. 비디오 코딩에서의 예측을 위한 장치로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금:
    인터 예측을 통해 타깃 샘플의 제1 예측 값을 획득하고,
    인트라 예측을 통해 상기 타깃 샘플의 제2 예측 값을 획득하며,
    상기 제1 예측 값의 가중 계수 및 상기 제2 예측 값의 가중 계수에 기초하여, 상기 타깃 샘플의 업데이트된 예측 값을 획득하기 위해 상기 제1 예측 값 및 상기 제2 예측 값에 가중치 연산을 수행하도록 - 상기 제1 예측 값의 가중 계수가 상기 제2 예측 값의 가중 계수와 상이함 -
    야기하는 명령을 저장하기 위해 상기 하나 이상의 프로세서에 연결된 메모리
    를 포함하는 장치.
  10. 제9항에 있어서,
    상기 인트라 예측을 통해 상기 타깃 샘플의 제2 예측 값을 획득하기 위해, 상기 명령은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금: 평면 인트라 예측 모드를 이용하여 공간적으로 인접한 샘플에 기초하여 상기 제2 예측값을 획득하도록 야기하는, 장치.
  11. 제9항에 있어서,
    상기 인터 예측을 통해 타깃 샘플의 제1 예측 값을 획득하기 위해, 상기 명령은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금:
    처리될 픽처 블록의 모션 정보를 획득하기 위해 비트스트림을 파싱하고,
    상기 처리될 픽처 블록의 예측 블록을 획득하기 위해, 상기 획득된 모션 정보에 기초하여 상기 처리될 픽처 블록에 대해 모션 보상을 수행하도록 - 상기 처리될 픽처 블록의 예측 블록은 상기 타깃 샘플의 제1 예측 값을 포함함 - 야기하는, 장치.
  12. 제9항 내지 제11항 중 어느 한 항에 있어서,
    상기 타깃 샘플의 업데이트된 예측 값 predQ(xP, yP)은 w1 * predP(xP, yP) 및 w2 * predP1(xP, yP)에 기초하여 획득되고,
    (xP, yP)는 상기 타깃 샘플의 좌표를 나타내고, predP(xP, yP)는 상기 제1 예측 값을 나타내며, predP1(xP, yP)는 상기 제2 예측 값을 나타내고, w1은 상기 제1 예측 값의 가중된 계수를 나타내고, w2는 상기 제2 예측 값의 가중된 계수를 나타내며, w1과 w2는 사전 설정된 상수이고, w1는 w2와 같지 않은, 장치.
  13. 제12항에 있어서,
    (w1, w2)는 (6, 2) 또는 (5, 3)인, 장치.
  14. 제12항에 있어서,
    w1과 w2의 합은 2를 n의 거듭제곱한 값이고, n은 음수가 아닌 정수인, 장치.
  15. 제9항에 있어서,
    상기 명령은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금:
    상기 타깃 샘플의 업데이트 결정 지시 정보를 획득하기 위해 비트스트림을 파싱하고,
    상기 업데이트 결정 지시 정보가 상기 타깃 샘플의 예측 값의 업데이트를 지시하는 것으로 결정하도록 추가로 야기하는, 장치.
    를 더 포함하는 예측 방법.
  16. 컴퓨터 저장 매체로서,
    상기 컴퓨터 저장 매체가 컴퓨터 프로그램 코드를 저장하고, 상기 컴퓨터 프로그램 코드가 프로세서에서 실행될 때, 상기 프로세서가 제1항 내지 제8항 중 어느 한 항에 따른 인터 예측 방법을 수행하도록 활성화되는, 컴퓨터 저장 매체.
  17. 비트스트림이 저장되어 있는 기계가 판독 가능한 비일시적인 저장 매체로서,
    상기 비트스트림은:
    타깃 샘플의 모션 정보 - 상기 모션 정보는 상기 타깃 샘플의 제1 예측 값을 획득하기 위해 사용됨 - ; 및
    상기 타깃 샘플의 업데이트 결정 지시 정보 - 상기 업데이트 결정 지시 정보는 상기 타깃 샘플의 제1 예측 값을 업데이트하는 것을 나타내며, 상기 업데이트된 제1 예측 값은 상기 제1 예측 값과 제2 예측 값에 가중치 연산을 수행하여 획득되고, 상기 제2 예측 값은 평면 인트라 예측 모드를 사용하여 공간적으로 인접한 샘플에 기초하여 획득됨 -
    를 포함하는 기계가 판독 가능한 비일시적인 저장 매체.
KR1020237043657A 2018-09-21 2019-09-20 인터 예측 방법 및 장치 KR20230175341A (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
CN201811109950 2018-09-21
CN201811109950.2 2018-09-21
CNPCT/CN2018/109233 2018-10-01
PCT/CN2018/109233 WO2020056798A1 (zh) 2018-09-21 2018-10-01 一种视频编解码的方法与装置
CN201811303754.9A CN110944172B (zh) 2018-09-21 2018-11-02 一种帧间预测方法和装置
CN201811303754.9 2018-11-02
KR1020217003101A KR102616711B1 (ko) 2018-09-21 2019-09-20 인터 예측 방법 및 장치
PCT/CN2019/107060 WO2020057648A1 (zh) 2018-09-21 2019-09-20 一种帧间预测方法和装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217003101A Division KR102616711B1 (ko) 2018-09-21 2019-09-20 인터 예측 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20230175341A true KR20230175341A (ko) 2023-12-29

Family

ID=69888156

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020237043657A KR20230175341A (ko) 2018-09-21 2019-09-20 인터 예측 방법 및 장치
KR1020217003101A KR102616711B1 (ko) 2018-09-21 2019-09-20 인터 예측 방법 및 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020217003101A KR102616711B1 (ko) 2018-09-21 2019-09-20 인터 예측 방법 및 장치

Country Status (12)

Country Link
US (2) US11647207B2 (ko)
EP (1) EP3849197A4 (ko)
JP (2) JP7259009B2 (ko)
KR (2) KR20230175341A (ko)
CN (2) CN110944172B (ko)
AU (2) AU2019343426B2 (ko)
BR (1) BR112021001563A2 (ko)
CA (2) CA3106125C (ko)
MX (1) MX2021002868A (ko)
PH (1) PH12021550058A1 (ko)
SG (1) SG11202100063YA (ko)
WO (1) WO2020056798A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11277628B2 (en) * 2018-09-24 2022-03-15 Qualcomm Incorporated Restrictions for the worst-case bandwidth reduction in video coding
SG11202103601RA (en) * 2018-10-10 2021-05-28 Interdigital Vc Holdings Inc Affine mode signaling in video encoding and decoding
WO2020147747A1 (en) * 2019-01-15 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Weighted prediction in video coding
WO2020197290A1 (ko) * 2019-03-26 2020-10-01 인텔렉추얼디스커버리 주식회사 영상 부호화/복호화 방법 및 장치
CN114286100A (zh) * 2020-09-28 2022-04-05 华为技术有限公司 帧间预测方法及装置
CN116867553A (zh) 2020-10-29 2023-10-10 瑞典爱立信有限公司 多会话远程游戏渲染
US11936899B2 (en) * 2021-03-12 2024-03-19 Lemon Inc. Methods and systems for motion candidate derivation
US11671616B2 (en) 2021-03-12 2023-06-06 Lemon Inc. Motion candidate derivation
US11917165B2 (en) * 2021-08-16 2024-02-27 Tencent America LLC MMVD signaling improvement
WO2023132509A1 (ko) * 2022-01-04 2023-07-13 현대자동차주식회사 공간적 상관성을 이용하는 디코더측 움직임벡터 유도를 위한 방법
US20230300364A1 (en) * 2022-03-15 2023-09-21 Tencent America LLC Temporal based subblock type motion vector predictor
WO2024010362A1 (ko) * 2022-07-06 2024-01-11 주식회사 케이티 영상 부호화/복호화 방법 및 비트스트림을 저장하는 기록 매체
WO2024012559A1 (en) * 2022-07-14 2024-01-18 Zhejiang Dahua Technology Co., Ltd. Methods, systems, and storage mediums for video encoding and decoding
WO2024051725A1 (en) * 2022-09-06 2024-03-14 Mediatek Inc. Method and apparatus for video coding
WO2024086736A1 (en) * 2022-10-20 2024-04-25 Tencent America LLC Local illumination compensation for bi-prediction

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101050828B1 (ko) 2003-08-26 2011-07-21 톰슨 라이센싱 하이브리드 인트라-인터 코딩된 블록을 디코딩하기 위한 방법 및 장치
CA2655970A1 (en) * 2006-07-07 2008-01-10 Telefonaktiebolaget L M Ericsson (Publ) Video data management
CN100534188C (zh) * 2007-06-08 2009-08-26 北京中星微电子有限公司 一种图像压缩方法和装置
US8582652B2 (en) * 2007-10-30 2013-11-12 General Instrument Corporation Method and apparatus for selecting a coding mode
CN101163249B (zh) * 2007-11-20 2010-07-21 北京工业大学 直流模式预测方法
EP2081386A1 (en) * 2008-01-18 2009-07-22 Panasonic Corporation High precision edge prediction for intracoding
CN101222646B (zh) * 2008-01-30 2010-06-02 上海广电(集团)有限公司中央研究院 一种适用于avs编码的帧内预测装置及预测方法
CN101877785A (zh) * 2009-04-29 2010-11-03 祝志怡 一种基于混合预测的视频编码方法
US20120163457A1 (en) 2010-12-28 2012-06-28 Viktor Wahadaniah Moving picture decoding method, moving picture coding method, moving picture decoding apparatus, moving picture coding apparatus, and moving picture coding and decoding apparatus
CN102595124B (zh) 2011-01-14 2014-07-16 华为技术有限公司 图像编码解码方法、处理图像数据方法及其设备
CN102238391B (zh) 2011-05-25 2016-12-07 深圳市云宙多媒体技术有限公司 一种预测编码方法、装置
US20130107949A1 (en) * 2011-10-26 2013-05-02 Intellectual Discovery Co., Ltd. Scalable video coding method and apparatus using intra prediction mode
JP6085620B2 (ja) 2012-03-05 2017-02-22 トムソン ライセンシングThomson Licensing 超解像度処理のための方法、システム及び装置
CN103581690A (zh) * 2012-08-09 2014-02-12 联发科技(新加坡)私人有限公司 视频译码方法、视频译码器、视频编码方法和视频编码器
US9998727B2 (en) * 2012-09-19 2018-06-12 Qualcomm Incorporated Advanced inter-view residual prediction in multiview or 3-dimensional video coding
CN104104961B (zh) * 2013-04-10 2018-09-21 华为技术有限公司 一种视频编码方法、解码方法和装置
CN103220488B (zh) 2013-04-18 2016-09-07 北京大学 一种视频帧率上转换装置及方法
WO2017043816A1 (ko) * 2015-09-10 2017-03-16 엘지전자(주) 인터-인트라 병합 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
US10701356B2 (en) * 2015-10-13 2020-06-30 Lg Electronic Inc. Image decoding method and apparatus by deriving a frequency component based on filtering in image coding system
WO2017075804A1 (en) 2015-11-06 2017-05-11 Microsoft Technology Licensing, Llc Flexible reference picture management for video encoding and decoding
CN116962687A (zh) * 2016-11-29 2023-10-27 成均馆大学校产学协力团 影像编码/解码方法、装置以及对比特流进行存储的记录介质
KR102622465B1 (ko) * 2017-06-21 2024-01-09 엘지전자 주식회사 영상 코딩 시스템에서 인트라 예측에 따른 영상 디코딩 방법 및 장치
CN108495135B (zh) 2018-03-14 2020-11-10 宁波大学 一种屏幕内容视频编码的快速编码方法

Also Published As

Publication number Publication date
JP7259009B2 (ja) 2023-04-17
US20230164328A1 (en) 2023-05-25
US11647207B2 (en) 2023-05-09
SG11202100063YA (en) 2021-02-25
CN112655218B (zh) 2022-04-29
AU2019343426B2 (en) 2023-06-01
CN110944172A (zh) 2020-03-31
KR102616711B1 (ko) 2023-12-20
EP3849197A1 (en) 2021-07-14
BR112021001563A2 (pt) 2021-04-20
CA3106125C (en) 2024-01-23
WO2020056798A1 (zh) 2020-03-26
MX2021002868A (es) 2021-05-28
CA3106125A1 (en) 2020-03-26
JP2023065381A (ja) 2023-05-12
AU2019343426A1 (en) 2021-02-04
US20210185328A1 (en) 2021-06-17
PH12021550058A1 (en) 2021-09-27
EP3849197A4 (en) 2021-11-03
AU2023222943A1 (en) 2023-09-21
CA3200616A1 (en) 2020-03-26
KR20210024165A (ko) 2021-03-04
CN110944172B (zh) 2024-04-12
JP2022500894A (ja) 2022-01-04
CN112655218A (zh) 2021-04-13

Similar Documents

Publication Publication Date Title
KR102616711B1 (ko) 인터 예측 방법 및 장치
US10602180B2 (en) Motion vector prediction
CN111164973B (zh) 译码用于视频译码的仿射预测运动信息
CN107534766B (zh) 于视频译码中针对子块推导运动信息方法、装置
CN110741639B (zh) 视频译码中的运动信息传播
IL268646A (en) A motion vector information constraint is derived from a side-decoder motion vector derivation
TW201842766A (zh) 於視訊解碼器中導出運動向量資訊
WO2019140189A1 (en) Affine motion compensation with low bandwidth
JP7407741B2 (ja) ビデオ符号化方法および装置
US20210185325A1 (en) Motion vector obtaining method and apparatus, computer device, and storage medium
CN112437299B (zh) 一种帧间预测方法、装置及存储介质
US11394996B2 (en) Video coding method and apparatus
US11197018B2 (en) Inter-frame prediction method and apparatus
RU2785725C2 (ru) Устройство и способ внешнего предсказания
WO2020057648A1 (zh) 一种帧间预测方法和装置
CN117426087A (zh) 用于具有运动矢量细化的几何划分模式的方法和设备
JP2024524402A (ja) 動きベクトル改良による幾何区画モードのための方法およびデバイス
CN117643054A (zh) 具有运动矢量细化的几何分区模式
CN117597922A (zh) 用于利用运动矢量细化的几何分区模式的方法和设备

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal