KR20210030352A - 광각 인트라 예측을 이용한 포지션 종속 인트라 예측 조합 - Google Patents

광각 인트라 예측을 이용한 포지션 종속 인트라 예측 조합 Download PDF

Info

Publication number
KR20210030352A
KR20210030352A KR1020217000863A KR20217000863A KR20210030352A KR 20210030352 A KR20210030352 A KR 20210030352A KR 1020217000863 A KR1020217000863 A KR 1020217000863A KR 20217000863 A KR20217000863 A KR 20217000863A KR 20210030352 A KR20210030352 A KR 20210030352A
Authority
KR
South Korea
Prior art keywords
prediction
determining
sample
current block
coordinate
Prior art date
Application number
KR1020217000863A
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 to KR1020227031679A priority Critical patent/KR20220127949A/ko
Publication of KR20210030352A publication Critical patent/KR20210030352A/ko

Links

Images

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/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/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • 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/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • 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/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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

광각 인트라-예측을 이용한 포지션 종속 인트라 예측 조합 (PDPC) 을 이용하는 기법들이 기술된다. 예를 들어, 비디오 데이터의 현재 블록의 사이즈가 결정될 수 있다. 그 사이즈에 기초하여 현재 블록에 대해 광각 인트라-예측 모드가 결정될 수 있다. 현재 블록에 대한 예측 블록은 광각 인트라-예측 모드를 이용하여 결정될 수 있다. 예측 블록으로부터의 예측 샘플은 PDPC 를 이용하여 수정된 예측 샘플을 생성하기 위해 수정될 수도 있고, 이 수정은 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것, 및, 그 결정된 하나 이상의 레퍼런스 샘플들에 기초하여 수정된 예측 샘플을 생성하기 위해 예측 샘플을 수정하는 것을 포함한다.

Description

광각 인트라 예측을 이용한 포지션 종속 인트라 예측 조합
분야
이 출원은 비디오 인코딩 및 디코딩에 관한 것이다. 일부 경우들에서, 광각 인트라 예측을 이용한 포지션 종속 인트라 예측 조합 (PDPC) 을 수행하기 위한 시스템들, 장치들, 방법들, 및 컴퓨터 판독가능 매체들이 기술된다.
배경
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인용 디지털 보조기들 (PDA들), 랩톱 또는 데스크톱 컴퓨터들, 태블릿 컴퓨터들, e-북 리더들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 소위 "스마트 폰들", 비디오 텔레컨퍼런싱 디바이스들, 비디오 스트리밍 디바이스들 등을 포함한, 광범위한 디바이스들에 통합될 수 있다. 이러한 디바이스들은 비디오 데이터가 프로세싱되고 소비를 위해 출력되도록 허용한다. 디지털 비디오 데이터는 소비자들 및 비디오 제공자들의 수요들을 충족시키기 위해 대량의 데이터를 포함한다. 예를 들어, 비디오 데이터의 소비자들은 높은 충실도, 해상도들, 프레임 레이트들 등을 갖는 최고 품질의 비디오를 원한다. 결과로서, 이들 요구들을 충족시키기 위해 필요한 대량의 비디오 데이터는 그 비디오 데이터를 프로세싱하고 저장하는 통신 네트워크들 및 디바이스들에 부담을 지운다.
디지털 비디오 디바이스들은 비디오 데이터를 압축하기 위해 비디오 코딩 기법들을 구현할 수 있다. 비디오 코딩은 하나 이상의 비디오 코딩 표준들에 따라 수행된다. 예를 들어, 비디오 코딩 표준들은, 다른 것들 중에서도, VVC (versatile video coding), HEVC (high-efficiency video coding), 및 AVC (advanced video coding), MPEG-2 Part 2 (MPEG 는 동화상 전문가 그룹을 나타냄) 를 포함한다. 비디오 코딩은 일반적으로, 비디오 이미지들 또는 시퀀스들에서 존재하는 리던던시 (redundancy) 의 이점을 취하는 예측 방법들 (예컨대, 인터 예측, 인트라 예측 등) 을 이용한다. 비디오 코딩 기법의 중요한 목표는 비디오 품질에 대한 열화를 회피 또는 최소화하면서 더 낮은 비트 레이트를 이용하는 형태로 비디오 데이터를 압축하는 것이다. 끊임없이 진화하는 비디오 서비스가 이용가능하게 됨에 따라, 우수한 코딩 효율을 갖는 인코딩 기법이 필요하다.
요약
인트라 예측을 위해 광각 모드들을 이용한 포지션 종속 인트라 예측 조합 (PDPC) 을 수행하기 위한 기법들 및 시스템들이 본원에 기술된다. 인트라 예측을 이용하여, 코딩 디바이스 (예컨대, 비디오 인코더 및/또는 비디오 디코더) 는 동일한 픽처 (picture) 내의 이전에 인코딩된 이웃하는 블록들로붙의 이웃하는 샘플들에 기초하여 공간적 예측 기법들을 이용하여 예측 블록을 형성할 수 있다. 이웃하는 샘플들은 평면 (Planar) 모드, DC 모드, 및/또는 다수의 방향성 예측 모드들 (수직, 수평, 및 다양한 각도 모드들) 중 하나와 같이, 사용되는 특정 인트라-예측 모드에 기초하여 식별될 수 있다. 방향성 예측 모드들은 통상적으로, 예측 샘플로부터 수직 방향에 대해 대략적으로 -135도 내지 대략적으로 45도 사이의 방향들 (또는 각도들) 을 이용한다.
효율적인 비디오 인코더들 및/또는 디코더들에서, 인트라 예측을 위해 예측 블록을 특정하기 위해 사용되는 블록 구조는 정사각형에 제한되지 않는다 (블록은 폭 (w) = 높이 (h) 인 경우에 정사각형이다). 직사각형 예측 블록들 (w > h 또는 w < h) 을 이용하는 것은 콘텐츠의 특성에 기초하여 코딩 효율 (coding efficiency) 을 증가시킬 수 있다. 이러한 직사각형 블록들에서, 인트라 예측의 방향을 -135도 내지 45도 내이도록 제한하는 것은, 보다 가까운 레퍼런스 샘플들이라기보다는 예측 샘플 (예측되고 있는 샘플) 로부터 더 멀리 있는 레퍼런스 샘플들이 인트라 예측을 위해 사용되는 상황들을 초래할 수 있다. 이러한 설계는 코딩 효율에 부정적인 영향을 가질 가능성이 크다. (예컨대, -135도 내지 45도 각도들 너머의) 보다 가까운 레퍼런스 샘플들이 인트라 예측을 위해 사용될 수 있도록 완화된 제한들의 범위를 가지는 것이 보다 유익할 것이다. 예를 들어, 예측 샘플로부터 수직 방향에 대해 ("광각 모드들" 로서 지칭되는) -135도 미만 또는 45도보다 더 큰 방향들 (또는 각도들) 을 사용하는 방향성 예측 모드들.
PDPC 는 인트라 예측을 이용하여 결정된 예측 샘플들을 수정하기 위해 이용될 수 있다. 실례로, PDPC 를 이용하여, 코딩 디바이스 (예컨대, 비디오 인코더 및/또는 비디오 디코더) 는 현재 블록의 좌측에 및/또는 위의 하나 이상의 라인들에서 존재하는 레퍼런스 샘플들을 결정할 수 있고, 인트라 예측을 이용하여 결정된 예측 샘플들을 수정하기 위해 그 레퍼런스 샘플들을 사용할 수 있다. 수정된 예측 샘플들은 그러면 현재 블록을 인코딩하거나 디코딩하기 위해 사용될 수 있다.
본원에 기술된 기법들 및 시스템들은, 광각 인트라-예측 모드들이 이용될 때 PDPC 를 수행하기 위한 방식들을 제공한다. 연관된 정보를 시그널링 및/또는 디코딩하기 위한 기법들이 또한 기술된다. 일부 경우들에서, 인코딩을 위해, 비디오 인코더는 비디오 디코더에 시그널링되는 잔차 값들을 결정하기 위해 수정된 예측 샘플들을 사용할 수 있다. 일부 경우들에서, 디코딩을 위해, 비디오 디코더는 현재 블록을 재구성하기 위해 수신된 잔차 값들에 수정된 예측 샘플들을 부가할 수 있다.
적어도 하나의 예에 따르면, 비디오 데이터를 디코딩하는 방법이 제공된다. 그 방법은, 비디오 데이터의 현재 블록을 획득하는 단계, 및 그 현재 블록의 사이즈를 결정하는 단계를 포함한다. 방법은 추가로, 현재 블록의 사이즈에 기초하여, 현재 블록에 대해 사용할 광각 인트라-예측 모드 (wide angle intra-prediction mode) 를 결정하는 단계를 포함한다. 방법은 추가로, 광각 인트라-예측 모드를 이용하여 현재 블록에 대한 예측 블록을 결정하는 단계를 포함한다. 예측 블록은 복수의 예측 샘플들을 포함한다. 방법은 추가로, 포지션 종속 인트라 예측 조합 (Position Dependent Intra Prediction Combination; PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해 예측 블록의 복수의 예측 샘플들 중의 예측 샘플을 수정하는 단계를 포함한다. 예측 샘플을 수정하는 단계는: 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 (reference) 샘플들을 결정하는 것; 및, 그 결정된 하나 이상의 레퍼런스 샘플들에 기초하여, 수정된 예측 샘플을 생성하기 위해 예측 샘플을 수정하는 것을 포함한다. 방법은 추가로, 수정된 예측 샘플 및 잔차 값 (residual value) 에 기초하여 현재 블록의 샘플을 재구성 (reconstruct) 하는 단계를 포함한다.
다른 예에서, 하나 이상의 예측 블록들을 저장하도록 구성된 메모리, 및, 고정 기능 (fixed-function) 또는 프로그래밍가능 (programmable) 회로 중 적어도 하나를 포함하는 비디오 디코더를 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스가 제공된다. 일부 예들에서 비디오 디코더는, 비디오 데이터의 현재 블록을 획득하도록, 그리고, 그 현재 블록의 사이즈를 결정하도록 구성된다. 비디오 디코더는 추가로, 현재 블록의 사이즈에 기초하여, 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하도록 구성된다. 비디오 디코더는 추가로, 광각 인트라-예측 모드를 이용하여 현재 블록에 대한 예측 블록을 결정하도록 구성된다. 예측 블록은 복수의 예측 샘플들을 포함한다. 비디오 디코더는 추가로, 포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해 예측 블록의 복수의 예측 샘플들 중의 예측 샘플을 수정하도록 구성된다. 예측 샘플을 수정하는 것은: 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것, 및, 그 결정된 하나 이상의 레퍼런스 샘플들에 기초하여, 수정된 예측 샘플을 생성하기 위해 예측 샘플을 수정하는 것을 포함한다. 비디오 디코더는 추가로, 수정된 예측 샘플 및 잔차 값에 기초하여 현재 블록의 샘플을 재구성하도록 구성된다.
또 다른 예에서, 명령들을 저장한 컴퓨터 판독가능 저장 매체로서, 상기 명령들은 실행될 때, 비디오 데이터를 디코딩하기 위한 디바이스의 하나 이상의 프로세서들로 하여금: 비디오 데이터의 현재 블록을 획득하게 하고; 그 현재 블록의 사이즈를 결정하게 하며; 현재 블록의 사이즈에 기초하여, 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하게 하고; 광각 인트라-예측 모드를 이용하여 현재 블록에 대한 예측 블록을 결정하는 것으로서, 상기 예측 블록은 복수의 예측 샘플들을 포함하는, 상기 현재 블록에 대한 예측 블록을 결정하는 것을 행하게 하며; 포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해, 예측 블록의 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것으로서, 상기 예측 샘플을 수정하는 것은: 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것; 및, 결정된 하나 이상의 레퍼런스 샘플들에 기초하여, 수정된 예측 샘플을 생성하기 위해 예측 샘플을 수정하는 것을 포함하는, 상기 예측 샘플을 수정하는 것을 행하게 하고; 그리고, 수정된 예측 샘플 및 잔차 값에 기초하여 현재 블록의 샘플을 재구성하게 하는, 컴퓨터 판독가능 저장 매체.
또 다른 예에서, 비디오 데이터를 디코딩하기 위한 디바이스가 제공된다. 그 디바이스는, 비디오 데이터의 현재 블록을 획득하는 수단, 및 그 현재 블록의 사이즈를 결정하는 수단을 포함한다. 디바이스는 추가로, 현재 블록의 사이즈에 기초하여, 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하는 수단을 포함한다. 디바이스는 추가로, 광각 인트라-예측 모드를 이용하여 현재 블록에 대한 예측 블록을 결정하는 수단을 포함한다. 예측 블록은 복수의 예측 샘플들을 포함한다. 디바이스는 추가로, 포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해 예측 블록의 복수의 예측 샘플들 중의 예측 샘플을 수정하는 수단을 포함한다. 예측 샘플을 수정하는 것은: 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것; 및, 그 결정된 하나 이상의 레퍼런스 샘플들에 기초하여, 수정된 예측 샘플을 생성하기 위해 예측 샘플을 수정하는 것을 포함한다. 디바이스는 추가로, 수정된 예측 샘플 및 잔차 값에 기초하여 현재 블록의 샘플을 재구성하는 수단을 포함한다.
또 다른 예에서, 비디오 데이터를 인코딩하는 방법이 제공된다. 그 방법은, 비디오 데이터의 현재 블록을 획득하는 단계, 및 그 현재 블록의 사이즈를 결정하는 단계를 포함한다. 방법은 추가로, 현재 블록의 사이즈에 기초하여, 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하는 단계를 포함한다. 방법은 추가로, 광각 인트라-예측 모드를 이용하여 현재 블록에 대한 예측 블록을 결정하는 단계를 포함한다. 예측 블록은 복수의 예측 샘플들을 포함한다. 방법은 추가로, 포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해 예측 블록의 복수의 예측 샘플들 중의 예측 샘플을 수정하는 단계를 포함한다. 예측 샘플을 수정하는 단계는: 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것; 및, 그 결정된 하나 이상의 레퍼런스 샘플들에 기초하여, 수정된 예측 샘플을 생성하기 위해 예측 샘플을 수정하는 것을 포함한다. 방법은 추가로, 수정된 예측 샘플 및 현재 블록에서의 샘플 값에 기초하여 잔차 블록에 대한 잔차 값을 결정하는 단계, 및, 그 잔차 값을 나타내는 정보를 시그널링하는 단계를 포함한다.
다른 예에서, 하나 이상의 예측 블록들을 저장하도록 구성된 메모리, 및, 고정 기능 또는 프로그래밍가능 회로 중 적어도 하나를 포함하는 비디오 인코더를 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스가 제공된다. 일부 예들에서 비디오 인코더는, 비디오 데이터의 현재 블록을 획득하도록, 그리고, 그 현재 블록의 사이즈를 결정하도록 구성된다. 비디오 인코더는 추가로, 현재 블록의 사이즈에 기초하여, 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하도록 구성된다. 비디오 인코더는 추가로, 광각 인트라-예측 모드를 이용하여 현재 블록에 대한 예측 블록을 결정하도록 구성된다. 예측 블록은 복수의 예측 샘플들을 포함한다. 비디오 인코더는 추가로, 포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해 예측 블록의 복수의 예측 샘플들 중의 예측 샘플을 수정하도록 구성된다. 예측 샘플을 수정하는 것은: 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것; 및, 그 결정된 하나 이상의 레퍼런스 샘플들에 기초하여, 수정된 예측 샘플을 생성하기 위해 예측 샘플을 수정하는 것을 포함한다. 비디오 인코더는 추가로, 수정된 예측 샘플 및 현재 블록에서의 샘플 값에 기초하여 잔차 블록에 대한 잔차 값을 결정하도록 구성된다. 비디오 인코더는 추가로, 그 잔차 값을 나타내는 정보를 시그널링하도록 구성된다.
또 다른 예에서, 명령들을 저장한 컴퓨터 판독가능 저장 매체로서, 상기 명령들은 실행될 때, 비디오 데이터를 인코딩하기 위한 디바이스의 하나 이상의 프로세서들로 하여금: 비디오 데이터의 현재 블록을 획득하게 하고; 그 현재 블록의 사이즈를 결정하게 하며; 현재 블록의 사이즈에 기초하여, 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하게 하고; 광각 인트라-예측 모드를 이용하여 현재 블록에 대한 예측 블록을 결정하는 것으로서, 상기 예측 블록은 복수의 예측 샘플들을 포함하는, 상기 현재 블록에 대한 예측 블록을 결정하는 것을 행하게 하며; 포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해, 예측 블록의 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것으로서, 상기 예측 샘플을 수정하는 것은: 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것; 및, 결정된 하나 이상의 레퍼런스 샘플들에 기초하여, 수정된 예측 샘플을 생성하기 위해 예측 샘플을 수정하는 것을 포함하는, 상기 예측 샘플을 수정하는 것을 행하게 하고; 수정된 예측 샘플 및 현재 블록에서의 샘플 값에 기초하여 잔차 블록에 대한 잔차 값을 결정하게 하고; 그리고, 잔차 값을 나타내는 정보를 시그널링하게 하는, 컴퓨터 판독가능 저장 매체.
또 다른 예에서, 비디오 데이터를 인코딩하기 위한 디바이스가 제공된다. 그 디바이스는, 비디오 데이터의 현재 블록을 획득하는 수단, 및 그 현재 블록의 사이즈를 결정하는 수단을 포함한다. 디바이스는 추가로, 현재 블록의 사이즈에 기초하여, 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하는 수단을 포함한다. 디바이스는 추가로, 광각 인트라-예측 모드를 이용하여 현재 블록에 대한 예측 블록을 결정하는 수단을 포함한다. 예측 블록은 복수의 예측 샘플들을 포함한다. 디바이스는 추가로, 포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해 예측 블록의 복수의 예측 샘플들 중의 예측 샘플을 수정하는 수단을 포함한다. 예측 샘플을 수정하는 것은: 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것; 및, 그 결정된 하나 이상의 레퍼런스 샘플들에 기초하여, 수정된 예측 샘플을 생성하기 위해 예측 샘플을 수정하는 것을 포함한다. 디바이스는 추가로, 수정된 예측 샘플 및 현재 블록에서의 샘플 값에 기초하여 잔차 블록에 대한 잔차 값을 결정하는 수단을 포함한다. 디바이스는 추가로, 잔차 값을 나타내는 정보를 시그널링하는 수단을 포함한다.
일부 양태들에서, 현재 블록의 사이즈를 결정하는 것은, 블록의 폭 및 블록의 높이가 상이한 사이즈들임을 결정하는 것을 포함한다.
일부 양태들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들은, 예측 샘플에 대한 광각 인트라-예측 모드의 각도를 이용하여 결정된다. 일부 예들에서, 광각 인트라-예측 모드의 각도는 예측 샘플에 대해 -135도 미만이거나 45도보다 더 크다.
일부 양태들에서, 상술된 방법들, 디바이스들, 및 컴퓨터 판독가능 매체들은 예측 샘플의 x- 및 y-좌표들에 기초하여 하나 이상의 가중치들을 결정하는 것을 포함할 수 있다. 이러한 양태들에서, 예측 샘플을 수정하는 것은, 결정된 하나 이상의 레퍼런스 샘플들, 결정된 하나 이상의 가중치들, 및 예측 샘플에 기초하여, 수정된 예측 샘플을 생성하기 위해 예측 샘플을 수정하는 것을 포함한다.
일부 양태들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 예측 블록에서의 예측 샘플의 각각의 x-좌표 및 y-좌표 양자와는 상이한 x-좌표 및 y-좌표 양자를 갖는 하나 이상의 레퍼런스 샘플들을 결정하는 것을 포함한다.
일부 양태들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은: 현재 블록 위에 있는 로우 (row) 를 결정하는 것; 결정된 로우에서의 x-좌표를 결정하는 것으로서, 상기 결정된 로우에서의 x-좌표는 예측 샘플의 x-좌표 플러스 (plus) 예측 샘플의 y-좌표 플러스 1 과 동일한, 상기 결정된 로우에서의 x-좌표를 결정하는 것; 및, 결정된 로우 및 결정된 x-좌표에 기초하여 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함한다.
일부 양태들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은: 현재 블록 좌측에 있는 칼럼 (column) 을 결정하는 것; 결정된 칼럼에서의 y-좌표를 결정하는 것으로서, 상기 결정된 칼럼에서의 y-좌표는 예측 샘플의 y-좌표 플러스 예측 샘플의 x-좌표 플러스 1 과 동일한, 상기 결정된 칼럼에서의 y-좌표를 결정하는 것; 및, 결정된 칼럼 및 결정된 y-좌표에 기초하여 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함한다.
일부 양태들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은: 현재 블록 위에 있는 로우를 결정하는 것; 결정된 로우에서의 x-좌표를 결정하는 것으로서, 상기 결정된 로우에서의 x-좌표는 예측 샘플에 대한 광각 인트라-예측 모드의 각도에 기초하는, 상기 결정된 로우에서의 x-좌표를 결정하는 것; 및, 결정된 로우 및 결정된 x-좌표에 기초하여 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함한다. 일부 경우들에서, 결정된 로우에서의 x-좌표를 결정하는 것은: 광각 인트라-예측 모드의 각도의 코탄젠트 (cotangent) 또는 탄젠트 (tangent) 중 하나를 결정하는 것; 및, 광각 인트라-예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나, 예측 샘플의 x-좌표, 및 예측 샘플의 y-좌표에 기초하여, 결정된 로우에서의 x-좌표를 결정하는 것을 포함한다.
일부 양태들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은: 현재 블록 좌측에 있는 칼럼을 결정하는 것; 결정된 칼럼에서의 y-좌표를 결정하는 것으로서, 상기 결정된 칼럼에서의 y-좌표는 광각 인트라-예측 모드의 각도에 기초하는, 상기 결정된 칼럼에서의 y-좌표를 결정하는 것; 및, 결정된 칼럼 및 결정된 y-좌표에 기초하여 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함한다. 일부 경우들에서, 결정된 칼럼에서의 y-좌표를 결정하는 것은: 광각 인트라-예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나를 결정하는 것; 및, 광각 인트라-예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나, 예측 샘플의 x-좌표, 및 예측 샘플의 y-좌표에 기초하여, 결정된 칼럼에서의 y-좌표를 결정하는 것을 포함한다.
일부 양태들에서, 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은: 광각 인트라-예측 모드에 기초하여 하나 이상의 샘플들의 세트를 결정하는 것; 및, 하나 이상의 레퍼런스 샘플들을 생성하기 위해 하나 이상의 샘플들의 세트를 보간하는 것, 오프셋을 갖고 라운딩 (rounding) 하는 것, 또는 오프셋 없이 라운딩하는 것 중 적어도 하나를 포함한다.
일부 양태들에서, 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은: 광각 인트라-예측 모드에 기초하여 식별된 현재 블록에 대해 외부에 있는 하나 이상의 샘플들이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것; 및, 레퍼런스 라인 버퍼에 저장된 최종 레퍼런스 샘플에 기초하여 하나 이상의 레퍼런스 샘플들을 결정하는 것을 포함한다.
일부 양태들에서, 예측 블록의 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것은 예측 블록의 제 1 예측 샘플을 수정하는 것을 포함한다. 이러한 양태들에서, 하나 이상의 레퍼런스 샘플들은 하나 이상의 레퍼런스 샘플들의 제 1 세트를 포함한다. 이러한 양태들에서, 상술된 방법들, 디바이스들, 및 컴퓨터 판독가능 매체들은, 예측 블록의 제 2 예측 샘플에 대해, 제 2 예측 샘플에 대한 하나 이상의 레퍼런스 샘플들의 제 2 세트의 적어도 하나의 레퍼런스 샘플이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것; 및, 제 2 예측 샘플에 PDPC 를 적용하지 않는 것 또는 레퍼런스 라인 버퍼에서 이용가능한 레퍼런스 샘플들만을 사용하여 PDPC 를 적용하는 것 중 하나를 포함할 수 있다.
일부 양태들에서, 광각 인트라-예측 모드는 DC, 평면, 수평, 또는 수직 인트라-예측 모드가 아니다.
일부 양태들에서, 비디오 데이터를 디코딩하기 위한 디바이스는, 현재 블록을 디스플레이하도록 구성된 디스플레이를 포함한다. 일부 양태들에서, 비디오를 디코딩하기 위한 디바이스는 카메라, 컴퓨터, 모바일 디바이스, 브로드캐스트 수신기 디바이스 또는 셋톱 박스 중 하나 이상을 포함한다.
일부 양태들에서, 비디오 데이터를 인코딩하기 위한 디바이스는, 현재 블록을 디스플레이하도록 구성된 디스플레이를 포함한다. 일부 양태들에서, 비디오를 인코딩하기 위한 디바이스는 카메라, 컴퓨터, 모바일 디바이스, 브로드캐스트 수신기 디바이스 또는 셋톱 박스 중 하나 이상을 포함한다.
이 요약은, 청구된 주제의 핵심적인 또는 본질적인 특징들을 식별하도록 의도되지 않았고, 별개로 청구된 요지의 범위를 결정하는데 사용되도록 의도되지도 않았다. 청구물은 본 특허의 전체 명세서, 임의의 또는 모든 도면들, 및 각각의 청구항의 적절한 부분들을 참조하여 이해되어야 한다.
전술한 내용은, 다른 특징 및 실시 형태들과 함께, 다음의 명세서, 청구항 및 첨부 도면을 참조하면 더욱 명백해질 것이다.
도면들의 간단한 설명
본 출원의 예시적 실시형태들은 다음 도면들을 참조하여 이하에서 상세히 설명된다.
도 1 은 본 개시의 기법들을 구현하도록 구성된 예시적인 비디오 인코딩 및 디코딩 시스템을 나타내는 블록도이다.
도 2a 및 도 2b 는 일부 예들에 따른, 4x4 블록 내부의 예측 샘플 포지션들에 대한 DC 모드 포지션 종속 (인트라) 예측 조합 (PDPC) 가중치들의 예들을 나타내는 개념도들이다.
도 3 은 일부 예들에 따른, 인트라 예측 각도 모드들의 예들을 나타내는 개념도이다.
도 4a 는 일부 예들에 따른, 대각선 상부-우측 모드의 일례를 나타내는 개념도이다.
도 4b 는 일부 예들에 따른, 대각선 저부-좌측 모드의 일례를 나타내는 개념도이다.
도 4c 는 일부 예들에 따른, 인접하는 대각선 상부-우측 모드의 일례를 나타내는 개념도이다.
도 4d 는 일부 예들에 따른, 인접하는 대각선 저부-좌측 모드의 일례를 나타내는 개념도이다.
도 5 는 일부 예들에 따른, 대각선 인트라-예측 모드의 일례를 나타내는 개념도이다.
도 6 은 일부 예들에 따른, 대각선 인트라-예측 각도 모드들의 예들을 나타내는 개념도이다.
도 7 은 일부 예들에 따른, 광각 모드 및 PDPC 를 이용하는 인트라-예측 모드의 일례를 나타내는 개념도이고, 여기서, PDPC 는 광각 모드를 이용하여 수행된다.
도 8 은 일부 예들에 따른, 광각 모드 및 PDPC 를 이용하는 인트라-예측 모드의 다른 예를 나타내는 개념도이고, 여기서, PDPC 는 광각 모드를 이용하여 수행된다.
도 9 는 일부 예들에 따른, 비디오 데이터를 디코딩하기 위한 프로세스의 일례를 나타내는 흐름도이다.
도 10 은 일부 예들에 따른, 비디오 데이터를 인코딩하기 위한 프로세스의 일례를 나타내는 흐름도이다.
도 11 은 일부 예들에 따른, 비디오 인코더의 일례를 나타내는 블록도이다.
도 12 는 일부 예들에 따른, 비디오 디코더의 일례를 나타내는 블록도이다.
상세한 설명
본 개시의 특정 양태들 및 실시형태들이 이하에 제공된다. 이들 양태들 및 실시형태들 중 일부는 독립적으로 적용될 수 있고 그들 중 일부는 당업자에게 자명한 바와 같이 조합하여 적용될 수도 있다. 다음의 설명에 있어서, 설명의 목적들로, 특정 상세들이 본 출원의 실시형태들의 철저한 이해를 제공하기 위해 기술된다. 하지만, 여러 실시형태들은 이들 특정 상세들없이도 실시될 수도 있음이 명백할 것이다. 도면 및 설명은 제한하려는 것이 아니다.
다음의 설명은 단지 예시적인 실시 형태들을 제공하며, 본 개시의 범위, 적용가능성 또는 구성을 제한하려도록 의도되지 않는다. 오히려, 예시적인 실시형태들의 다음의 설명은 예시적인 실시형태를 구현하기 위한 가능한 설명을 당업자에게 제공할 것이다. 첨부된 청구범위에 설명된 바와 같이 본 출원의 사상 및 범위를 벗어나지 않으면서 엘리먼트들의 기능 및 배열에 다양한 변경들이 이루어질 수도 있음이 이해되어야 한다.
비디오 코딩 디바이스들 (또한 비디오 코더들로서 지칭됨) 은 비디오 데이터를 효율적으로 인코딩 및 디코딩하기 위해 비디오 압축 기법들을 구현한다. 비디오 압축 기법들은, 비디오 시퀀스들에 내재하는 리던던시를 감소 또는 제거하기 위해 공간 예측 (예컨대, 인트라-프레임 예측 또는 인트라 예측), 시간 예측 (예컨대, 인터-프레임 예측 또는 인터 예측), (비디오 데이터의 상이한 계층들에 걸친) 인터-레이어 예측, 및/또는 다른 예측 기법들을 포함하는, 상이한 예측 모드들을 적용하는 것을 포함할 수도 있다. 비디오 인코더는, 오리지널 비디오 시퀀스의 각각의 픽처를, 비디오 블록들 또는 코딩 유닛들로서 지칭되는 직사각형 영역들로 파티셔닝한다 (이하에서 더 상세히 설명됨). 이들 비디오 블록들은 특정 예측 모드를 사용하여 인코딩될 수도 있다.
비디오 블록들은 하나 이상의 방식들로 더 작은 블록들의 하나 이상의 그룹들로 분할될 수도 있다. 블록들은 코딩 트리 블록들, 예측 블록들, 변환 블록들, 및/또는 다른 적합한 블록들을 포함할 수 있다. 일반적으로 "블록" 에 대한 언급들은, 달리 명시되지 않는 한, 그러한 비디오 블록들 (예컨대, 당업자에 의해 이해되는 바와 같이, 코딩 트리 블록들, 코딩 블록들, 예측 블록들, 변환 블록들, 또는 다른 적절한 블록들 또는 서브-블록들) 을 지칭할 수도 있다. 추가로, 이들 블록들의 각각은 또한, "유닛들" (예컨대, 코딩 트리 유닛 (CTU), 코딩 유닛, 예측 유닛 (PU), 변환 유닛 (TU) 등) 로서 본 명세서에서 상호교환가능하게 지칭될 수도 있다. 일부 경우들에서, 유닛은 비트스트림에서 인코딩되는 코딩 논리 유닛을 나타낼 수도 있는 한편, 블록은 프로세스가 목표로 하는 비디오 프레임 버퍼의 부분을 나타낼 수도 있다.
인터-예측 모드들에 대해, 비디오 인코더는, 레퍼런스 프레임 또는 레퍼런스 픽처로서 지칭되는, 다른 시간적 로케이션에서 위치된 프레임 (또는 픽처) 에서 인코딩되는 블록과 유사한 블록을 검색할 수 있다. 비디오 인코더는 검색을, 인코딩될 블록으로부터의 특정 공간 변위로 제한할 수도 있다. 최상의 매치가, 수평 변위 컴포넌트 및 수직 변위 컴포넌트를 포함하는 2차원 (2D) 모션 벡터를 사용하여 위치될 수도 있다. 인트라-예측 모드들에 대해, 비디오 인코더는 동일한 픽처 내에서 이전에 인코딩된 이웃 블록들로부터의 데이터에 기초하여 공간 예측 기법들을 이용하여 예측된 블록을 형성할 수도 있다.
비디오 인코더는 예측 에러를 결정할 수 있다. 예를 들어, 예측은 인코딩되는 블록과 예측된 블록 내의 픽셀 값들 간의 차이로서 결정될 수 있다. 예측 에러는 잔차로서 또한 지칭될 수 있다. 비디오 인코더는 또한 변환 계수들을 생성하기 위해 예측 에러에 대한 변환 (예를 들어, 이산 코사인 변환 (DCT) 또는 다른 적절한 변환) 을 적용할 수 있다. 변환 후에, 비디오 인코더는 변환 계수들을 양자화할 수 있다. 양자화된 변환 계수들 및 모션 벡터들은 신택스 엘리먼트들을 사용하여 표현될 수 있고, 제어 정보와 함께 비디오 시퀀스의 코딩된 표현을 형성할 수 있다. 어떤 경우들에서, 비디오 인코더는 신택스 엘리먼트를 엔트로피 코딩할 수 있고, 그에 따라 그들의 표현에 필요한 비트들의 수를 더 감소시킬 수 있다.
비디오 디코더는 상술한 신택스 엘리먼트들 및 제어 정보를 사용하여 현재 프레임을 디코딩하기 위한 예측 데이터 (예를 들어, 예측 블록) 를 구성할 수 있다. 예를 들어, 비디오 디코더는 예측된 블록 및 압축된 예측 에러를 추가할 수도 있다. 비디오 디코더는 양자화된 계수를 사용하여 변환 기저 함수들을 가중처리하는 것에 의해 압축된 예측 에러를 결정할 수도 있다. 재구성된 프레임과 원래 프레임 간의 차이를 재구성 에러 (reconstruction error) 라고 한다.
이 개시물은, 인트라 예측 및 포지션 종속 (인트라) 예측 조합 (PDPC) 을 이용하여 비디오 데이터의 하나 이상의 샘플들 및/또는 블록들을 코딩하기 위한 시스템들 및 기법들을 기술한다. 예를 들어, 예측 샘플들의 예측 블록을 생성하기 위해 광각 인트라-예측 모드가 수행될 수 있다. 광각 인트라-예측 모드들은 -135도 (인트라-예측 모드 2) 내지 45도 (인트라-예측 모드 66) 의 표준 각도들 밖의 각도들을 사용하고, 예측 샘플로부터 수직 방향에 대해 -135도 미만인 각도들 및/또는 45도보다 더 큰 각도들을 사용할 수 있다. 본원에 제공된 시스템들 및 기법들은, 예측 블록의 예측 샘플들을 수정하기 위해 사용되는 레퍼런스 샘플들을 결정하기 위해 이러한 광각 인트라-예측 모드들에 대해 PDPC 의 사용을 확장한다.
본원에 기술된 시스템들 및 기법들은 비디오 데이터의 샘플 및/또는 블록을 코딩함에 있어서 일반적으로 압축 효율에서의 향상을 도입한다. 예를 들어, 압축 효율은, 예측 샘플에 보다 더 가까운 레퍼런스 샘플들이 PDPC 를 위해 사용되는 것에 일부 기인하여, 광각 모드들을 이용하는 PDPC 접근법을 수행함으로써 제공된다. 압축 효율은 기존의 비디오 코딩 기법들의 상태를 진보시킴에 있어서 일반적으로 바람직한 목표이다.
본 개시에서 사용된 바와 같이, 용어 비디오 코딩은 일반적으로 비디오 인코딩 또는 비디오 디코딩을 지칭한다. 유사하게, 용어 비디오 코더는 일반적으로 비디오 인코더, 비디오 디코더, 또는 결합된 비디오 인코더-디코더 (CODEC) 를 지칭할 수도 있다. 더욱이, 비디오 디코딩과 관련하여 본 개시에 설명된 소정의 기법들은 또한 비디오 인코딩에 적용될 수도 있으며, 그 역 또한 마찬가지이다. 예를 들어, 비디오 인코더들 및 비디오 디코더들은 동일한 프로세스 또는 상반되는 프로세스들을 수행하도록 구성될 수 있다. 또한, 비디오 인코더들은 통상적으로, 비디오 데이터를 인코딩하는 방법을 결정하는 프로세스들의 부분으로서 비디오 디코딩을 수행한다. 따라서, 반대로 언급되어 있지 않다면, 비디오 디코딩에 대하여 설명된 기법은 또한 비디오 인코딩의 부분으로서 수행될 수 없고 그 역도 수행될 수 없음으로 간주되지 않아야 한다.
본 개시는 또한 현재 계층, 현재 블록, 현재 픽처, 현재 슬라이스 등과 같은 용어들을 사용한다. 이 개시물의 맥락에서, “현재 (current)” 라는 용어는, 예를 들어, 이전에 코딩된 블록들, 픽처들, 및 슬라이스들 또는 아직 코딩되지 않을 블록들, 픽처들, 및 슬라이스들에 대한 반대로서, 현재 코딩되고 있는 블록, 픽처, 슬라이스 등을 식별하도록 의도된다.
본원에 기술된 기법들은 기존의 비디오 코덱들 (예를 들어, 고효율 비디오 코딩 (HEVC), 고급 비디오 코딩 (AVC), 또는 다른 적절한 기존의 비디오 코덱) 중 임의의 것에 적용될 수 있고/거나, 예를 들어 다목적 비디오 코딩 (VVC), JEM (joint exploration model), 및/또는 개발 중에 있거나 개발될 다른 비디오 코딩과 같이, 개발되고 있는 임의의 비디오 코딩 표준들 및/또는 미래의 비디오 코딩 표준들에 대한 효율적 코딩 툴일 수 있다. 예들은 예시적 목적들을 위해 비디오 코딩을 이용하여 본 명세서에서 제공되지만, 일부 경우들에서, 본원에 기술된 기법들은, 이미지 코더 (예컨대, JPEG 인코더 및/또는 디코더 등), 비디오 코더 (예컨대, 비디오 인코더 및/또는 비디오 디코더), 또는 다른 적합한 코딩 디바이스와 같이, 임의의 코딩 디바이스를 사용하여 수행될 수 있다.
도 1 은 비디오 데이터의 하나 이상의 샘플들 및/또는 블록들을 코딩하기 위해 본 개시의 기법들을 이용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 나타내는 블록도이다. 일부 예들에서, 비디오 인코딩 및 디코딩 시스템 (10) 은, 인트라-코딩된 예측 샘플들을 생성하기 위해서 및/또는 인트라-코딩된 예측 샘플들을 수정하기 위해 사용되는 PDPC 레퍼런스 샘플들을 생성하기 위해서 다수의 레퍼런스 라인들이 사용될 때, PDPC 접근법을 이용하여 비디오 데이터를 코딩할 수 있다. MRL 모드는 현재 블록의 이웃에 있는 다수의 레퍼런스 라인들을 이용하는 것을 포함한다.
도 1 에 도시된 바와 같이, 시스템 (10) 은, 목적지 디바이스 (14) 에 의해 나중에 디코딩될 인코딩된 비디오 데이터를 제공하는 소스 디바이스 (12) 를 포함한다. 특히, 소스 디바이스 (12) 는, 컴퓨터 판독 가능 매체 (16) 를 통해 목적지 디바이스 (14) 로 비디오 데이터를 제공한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 데스크톱 컴퓨터들, 노트북 (즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 전화기 핸드셋 이를테면 소위 "스마트" 폰들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스 등을 포함한, 광범위한 디바이스들 중 어느 것을 포함할 수도 있다. 일부 경우들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신을 위해 갖추어질 수도 있다. 따라서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신 디바이스들일 수도 있다. 소스 디바이스 (12) 는 예시적인 비디오 인코딩 디바이스 (즉, 비디오 데이터를 인코딩하기 위한 디바이스) 이다. 목적지 디바이스 (14) 는 예시적인 비디오 디코딩 디바이스 (예를 들어, 비디오 데이터를 디코딩하기 위한 디바이스 또는 장치) 이다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 데이터를 저장하도록 구성된 저장 매체 (20), 비디오 인코더 (22) 및 출력 인터페이스 (24) 를 포함한다. 목적지 디바이스 (14) 는 입력 인터페이스 (26), 인코딩된 비디오 데이터를 저장하도록 구성된 저장 매체 (28), 비디오 디코더 (30) 및 디스플레이 디바이스 (32) 를 포함한다. 다른 예들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 다른 컴포넌트들 또는 배열들을 포함한다. 예를 들어, 소스 디바이스 (12) 는 외부 카메라와 같은 외부 비디오 소스로부터 비디오 데이터를 수신할 수도 있다. 마찬가지로, 목적지 디바이스 (14) 는 통합된 디스플레이 디바이스를 포함하는 것보다는 외부 디스플레이 디바이스와 인터페이싱할 수도 있다.
도 1 의 도시된 시스템 (10) 은 단지 하나의 예일 뿐이다. 비디오 데이터를 프로세싱하기 위한 기법들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스 또는 장치에 의해 수행될 수도 있다. 비록 일반적으로 본 개시의 기술들이 비디오 인코딩 디바이스 및 비디오 디코딩 디바이스에 의해 수행되지만, 그 기술들은 또한, 통상적으로 "CODEC" 으로서 지칭되는 결합된 비디오 인코더/디코더에 의해 수행될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (12) 는, 단지, 소스 디바이스 (14) 가 목적지 디바이스 (14) 로의 송신을 위한 인코딩된 비디오 데이터를 생성하는 그러한 코딩 디바이스들의 예들일 뿐이다. 일부 예들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 소스 디바이스 (12) 및 목적지 디바이스 (14) 의 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭 방식으로 동작한다. 그러므로, 시스템 (10) 은 예를 들면, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅 또는 화상 통화를 위해, 소스 디바이스 (12) 와 목적지 디바이스 (14) 간의 일방향 또는 양방향 비디오 송신을 지원할 수도 있다.
소스 디바이스 (12) 의 비디오 소스 (18) 는 비디오 카메라와 같은 비디오 캡처 디바이스, 이전에 캡처된 비디오를 포함하는 비디오 아카이브 (video archive), 및/또는 비디오 콘텐트 제공자로부터 비디오 데이터를 수신하기 위한 비디오 피드 인터페이스 (video feed interface) 를 포함할 수도 있다. 추가적인 대안으로서, 비디오 소스 (18) 는 컴퓨터 그래픽 기반 데이터를 소스 비디오로서, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터 생성된 비디오의 조합으로서 생성할 수도 있다. 소스 디바이스 (12) 는 비디오 데이터를 저장하도록 구성된 하나 이상의 데이터 저장 매체들 (예를 들어, 저장 매체들 (20)) 을 포함할 수도 있다. 본 개시에 설명된 기법들은, 일반적으로 비디오 코딩에 적용가능할 수도 있고, 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다. 각각의 경우에, 캡처된, 사전-캡처된, 또는 컴퓨터-생성된 비디오는 비디오 인코더 (22) 에 의해 인코딩될 수도 있다. 출력 인터페이스 (24) 는 인코딩된 비디오 정보를 컴퓨터 판독 가능 매체 (16) 에 출력할 수도 있다.
목적지 디바이스 (14) 는, 컴퓨터 판독 가능 매체 (16) 를 통해 디코딩될 인코딩된 비디오 데이터를 수신할 수도 있다. 컴퓨터 판독 가능 매체 (16) 는, 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동시킬 수 있는 임의의 타입의 매체 또는 디바이스를 포함할 수도 있다. 일부 예들에서, 컴퓨터 판독가능 매체 (16) 는, 소스 디바이스 (12) 로 하여금 실시간으로 직접 목적지 디바이스 (14) 로, 인코딩된 비디오 데이터를 송신할 수 있게 하기 위한 통신 매체를 포함한다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조되고, 목적지 디바이스 (14) 로 송신될 수도 있다. 통신 매체는 라디오 주파수 (radio frequency; RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수도 있다. 통신 매체는 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷 기반 네트워크의 부분을 형성할 수도 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다. 목적지 디바이스 (14) 는 인코딩된 비디오 데이터 및 디코딩된 비디오 데이터를 저장하도록 구성된 하나 이상의 데이터 저장 매체를 포함할 수도 있다.
일부 예들에서, 인코딩된 데이터 (예를 들어, 인코딩된 비디오 데이터) 는 출력 인터페이스 (24) 로부터 저장 디바이스로 출력될 수도 있다. 유사하게, 인코딩된 데이터는 입력 인터페이스 (26) 에 의해 저장 디바이스로부터 액세스될 수도 있다. 저장 디바이스는 하드 드라이브, 블루-레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체들과 같은 다양한 분산된 또는 로컬로 액세스되는 데이터 저장 매체들 중 임의의 것을 포함할 수도 있다. 추가적인 예에서, 저장 디바이스는, 소스 디바이스 (12) 에 의해 생성되는 인코딩된 비디오를 저장할 수도 있는, 파일 서버 또는 또 다른 중간 저장 디바이스에 대응할 수도 있다. 목적지 디바이스 (14) 는, 스트리밍 또는 다운로드를 통해 저장 디바이스로부터 저장된 비디오 데이터에 액세스할 수도 있다. 파일 서버는, 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 송신할 수 있는 임의의 유형의 서버일 수도 있다. 예시적인 파일 서버들은 웹 서버 (예를 들어, 웹 사이트용), FTP 서버, 네트워크 접속형 저장 (NAS) 디바이스들, 또는 로컬 디스크 드라이브를 포함한다. 목적지 디바이스 (14) 는, 인터넷 접속을 포함한, 임의의 표준 데이터 접속을 통해 인코딩된 비디오 데이터에 액세스할 수도 있다. 이는 파일 서버 상에 저장되는 인코딩된 비디오 데이터에 액세스하기에 적합한 무선 채널 (예를 들어, Wi-Fi 접속), 유선 접속 (예를 들어, DSL, 케이블 모뎀 등), 또는 이들 양자의 조합을 포함할 수도 있다. 저장 디바이스로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들의 조합일 수도 있다.
본 개시의 기법들은, 공중 경유 (over-the-air) 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, HTTP 상으로의 동적 적응적 스트리밍 (DASH) 를 포함하는 적응성 스트리밍 기법과 같은 인터넷 스트리밍 비디오 송신들, 데이터 저장 매체 상으로 인코딩되는 디지털 비디오, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션들과 같은 다양한 멀티미디어 애플리케이션들 중 임의의 것을 지원하여 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 시스템 (10) 은, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 화상 통화 (video telephony) 와 같은 애플리케이션들을 지원하기 위해 일방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
컴퓨터 판독가능 매체 (16) 는 무선 브로드캐스트 또는 유선 네트워크 송신과 같은 일시적인 매체들, 또는 하드 디스크, 플래시 드라이브, 콤팩트 디스크, 디지털 비디오 디스크, 블루-레이 디스크, 또는 다른 컴퓨터 판독가능 매체들과 같은 저장 매체들 (즉, 비-일시적인 저장 매체들) 을 포함할 수도 있다. 일부 예들에서, 네트워크 서버 (미도시) 는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 수신하고, 인코딩된 비디오 데이터를, 예를 들어, 네트워크 송신을 통해 목적지 디바이스 (14) 에 제공할 수도 있다. 유사하게, 디스크 스탬핑 설비와 같은 매체 생성 설비의 컴퓨팅 디바이스는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 수신하고, 인코딩된 비디오 데이터를 포함하는 디스크를 생성할 수도 있다. 따라서, 컴퓨터 판독가능 매체 (16) 는, 다양한 예들에 있어서, 다양한 형태들의 하나 이상의 컴퓨터 판독가능 매체들을 포함하는 것으로 이해될 수도 있다.
목적지 디바이스 (14) 의 입력 인터페이스 (26) 는 컴퓨터 판독가능 매체 (16) 로부터 정보를 수신한다. 컴퓨터 판독가능 매체 (16) 의 정보는, 비디오 인코더 (22) 의 비디오 인코더 (22) 에 의해 정의되고 또한 비디오 디코더 (30) 에 의해 사용되는 신택스 정보를 포함할 수도 있고, 이 신택스 정보는 블록들 및 다른 코딩된 유닛들, 예를 들어, 픽처들의 그룹들 (GOP들) 의 특성들 및/또는 프로세싱을 기술하는 신택스 엘리먼트들을 포함한다. 저장 매체들 (28) 은 입력 인터페이스 (26) 에 의해 수신된 인코딩된 비디오 데이터를 저장할 수도 있다. 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이한다. 디스플레이 디바이스 (32) 는 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 디스플레이 디바이스를 포함할 수도 있다.
비디오 인코더 (22) 및 비디오 디코더 유닛 (30) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서(DSP)들, 주문형 집적회로(ASIC)들, 필드 프로그래밍가능 게이트 어레이(FPGA)들, 별도의 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들과 같은 다양한 적절한 인코더 또는 디코더 회로 중 임의의 회로로서 구현될 수도 있다. 그 기법들이 부분적으로 소프트웨어로 구현될 때, 디바이스는 적합한 비일시적 컴퓨터 판독가능 매체에 그 소프트웨어를 위한 명령들을 저장하고 본 개시의 기법들을 수행하기 위하여 하나 이상의 프로세서들을 이용하여 하드웨어에서 그 명령들을 실행할 수도 있다. 비디오 인코더 (22) 및 비디오 디코더 (30) 의 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있는데, 이들 중 어느 일방은 각각의 디바이스에서 결합된 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다.
일부 예들에 있어서, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 비디오 코딩 표준에 따라 동작할 수도 있다. 예시적인 비디오 코딩 표준들은, 비한정적으로, ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 또는 ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual 및 ITU-T H.264 (ISO/IEC MPEG-4 AVC 으로도 알려짐) 을 포함하며, 그것의 SVC (Scalable Video Coding) 및 MVC (Multi-View Video Coding) 확장들을 포함한다. 비디오 코딩 표준, 고효율 비디오 코딩 (HEVC) 또는 ITU-T 는 그 범위 및 스크린 콘텐츠 코딩 확장들, 3D 비디오 코딩 (3D-HEVC) 및 멀티뷰 확장들 (MV-HEVC) 및 스케일러블 확장 (SHVC) 들을 포함하여, ITU-T 비디오 코딩 전문가 그룹 (VCEG) 및 ISO/IEC 모션 픽처 전문가 그룹 (MPEG) 의 비디오 코딩 공동 협력 팀 (JCT-VC) 에 의해 개발되었다. 이하 HEVC WD 로 지칭되는 HEVC 초안 사양은 http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip 에서 입수 가능하다.
비디오 인코더 (22) 및 비디오 디코더 (30) 는 또한 다른 독점적 또는 산업적 표준들, 이를 테면, JEM (Joint Exploration Test Model) 또는 ITU-T H.266 (또한 VVC (Versatile Video Coding) 로서 지칭됨) 에 따라 동작할 수도 있다. VVC 표준의 최신 초안은 Bross 등의, “Versatile Video Coding (Draft 4),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13th Meeting: Marrakech, MA, 9-18 January 2019, JVET-M1001-v5 (이하 “VVC Draft 4” 라 함) 에 설명되어 있다. 하지만, 본 개시의 기법들은 임의의 특정 코딩 표준으로 한정되지 않는다.
HEVC, VVC, 및 다른 비디오 코딩 사양들에 있어서, 비디오 시퀀스는 통상적으로 일련의 픽처들을 포함한다. 픽처들은 또한, "프레임들" 로서 지칭될 수도 있다. 픽처 (picture) 는 SL, SCb, 및 SCr 로서 표기되는 3 개의 샘플 어레이들을 포함할 수도 있다. SL 은 루마 샘플들의 2-차원 어레이 (즉, 블록) 이다. SCb 는 Cb 크로미넌스 샘플들의 2-차원 어레이이다. SCr 는 Cr 크로미넌스 샘플들의 2-차원 어레이이다. 크로미넌스 샘플들은 또한, 본 명세서에서 "크로마 (chroma)" 샘플들로서 지칭될 수도 있다. 픽셀은 픽처의 어레이에서의 주어진 로케이션에 대한 모든 3 개의 컴포넌트들 (루마 및 크로마 샘플들) 을 지칭할 수 있다. 다른 경우들에서, 픽처는 단색 (monochrome) 일 수도 있고, 루마 샘플들의 어레이만을 포함할 수도 있고, 이 경우에, 용어들 픽셀 및 샘플은 상호교환가능하게 사용될 수 있다.
또한, HEVC 및 다른 비디오 코딩 사양들에서, 픽처의 인코딩된 표현을 생성하기 위해, 비디오 인코더 (22) 는 코딩 트리 유닛 (CTU) 들의 세트를 생성할 수도 있다. CTU 들의 각각은 루마 샘플들의 코딩 트리 블록, 크로마 샘플들의 2개의 대응 코딩 트리 블록들, 및 코딩 트리 블록들의 샘플들을 코딩하는데 사용된 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3개의 분리된 컬러 평면들을 갖는 픽처들에서, CTU 는 단일 코딩 트리 블록 및 그 코딩 트리 블록의 샘플들을 코딩하는데 사용된 신택스 구조들을 포함할 수도 있다. 코딩 트리 블록은 샘플들의 NxN 블록일 수도 있다. CTU 는 또한 "트리 블록" 또는 "최대 코딩 유닛" (LCU) 으로서 지칭될 수도 있다. HEVC 의 CTU 들은 H.264/AVC 와 같은 다른 표준들의 매크로블록들과 넓게는 유사할 수도 있다. 그러나, CTU 는 반드시 특정한 사이즈로 제한되지는 않고, 하나 이상의 코딩 유닛 (CU) 들을 포함할 수도 있다. 슬라이스는 래스터 스캔 순서에서 연속적으로 순서화된 정수 개의 CTU를 포함할 수도 있다.
HEVC 에 따라 동작하는 경우, 코딩된 CTU 를 생성하기 위하여, 비디오 인코더 (22) 는 CTU 의 코딩 트리 블록들에 대해 쿼드트리 파티셔닝을 재귀적으로 수행하여, 코딩 트리 블록들을 코딩 블록들, 따라서, 일명 "코딩 트리 유닛들"로 분할할 수도 있다. 코딩 블록은 샘플들의 NxN 블록이다. CU 는 루마 샘플들의 코딩 블록과, 루마 샘플 어레이, Cb 샘플 어레이, 및 Cr 샘플 어레이를 가지는 픽처의 크로마 샘플들의 2 개의 대응하는 코딩 블록들과, 코딩 블록들의 샘플들을 코딩하기 위하여 이용된 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3 개의 별개의 컬러 평면들을 갖는 픽처들에 있어서, CU 는 단일의 코딩 블록, 및 그 코딩 블록의 샘플들을 코딩하는데 사용된 신택스 구조들을 포함할 수도 있다.
비트 스트림 내의 신택스 데이터는 또한 CTU 에 대한 사이즈를 정의할 수도 있다. 슬라이스는 코딩 순서에서의 다수의 연속적인 CTU 들을 포함한다. 비디오 프레임 또는 픽처는 하나 이상의 슬라이스들로 파티셔닝될 수도 있다. 상술된 바와 같이, 각각의 트리 블록은 쿼드트리에 따라 CU들로 분할될 수도 있다. 일반적으로, 쿼드트리 데이터 구조는 CU 당 하나의 노드를 포함하며, 루트 노드는 트리블록에 대응한다. CU 가 4개의 서브-CU들로 분할되면, CU 에 대응하는 노드는 4개의 리프 (leaf) 노드들을 포함하며, 이들 각각은 서브-CU들 중 하나에 대응한다.
쿼드트리 데이터 구조의 각각의 노드는 대응하는 CU에 대해 신택스 데이터를 제공할 수도 있다. 예를 들어, 쿼드트리에서의 노드는 그 노드에 대응하는 CU 가 서브-CU들로 분할되는지 여부를 표시하는 분할 플래그를 포함할 수도 있다. CU 에 대한 신택스 엘리먼트들은 재귀적으로 정의될 수도 있으며, CU 가 서브-CU들로 분할되는지 여부에 의존할 수도 있다. CU 가 추가로 분할되지 않으면, 리프-CU 로 지칭된다. CU 의 블록이 추가로 분할되는 경우에, 그것은 일반적으로 비-리프 CU 로서 지칭될 수도 있다. 본 개시의 일부 예들에서, 오리지널 리프-CU 의 명시적인 분할이 존재하지 않더라도, 리프-CU 의 4개의 서브-CU들은 또한 리프-CU 들로서 지칭될 수도 있다. 예를 들어, 16x16 사이즈의 CU 가 더 분할되지 않으면, 16x16 CU 가 결코 분할되지 않았더라도, 4개의 8x8 서브-CU들은 또한 리프-CU들로서 지칭될 수도 있다.
CU 가 사이즈 구분 (size distinction) 을 가지지 않는다는 것을 제외하고는, CU 는 H.264 표준의 매크로블록 (macroblock) 과 유사한 목적을 가진다. 예를 들어, 트리 블록은 4 개의 자식 노드 (child node) 들 (또한,서브-CU 들로서 지칭됨) 로 분할될 수도 있고, 각각의 자식 노드는 차례로 부모 노드 (parent node) 일 수도 있고, 또 다른 4 개의 자식 노드들로 분할될 수도 있다. 쿼드트리의 리프 노드로서 지칭되는 최종의 미분할된 자식 노드는, 리프-CU 로서 또한 지칭되는 코딩 노드를 포함한다. 코딩된 비트스트림과 연관된 신택스 데이터는, 최대 CU 깊이로도 지칭되는, 트리 블록이 분할될 수도 있는 최대 횟수를 정의할 수도 있고, 또한 코딩 노드들의 최소 사이즈를 정의할 수도 있다. 이에 따라, 비트스트림은 또한 최소 코딩 유닛 (SCU) 을 정의할 수도 있다. 본 개시는, HEVC 의 컨텍스트에서의 CU, PU, 또는 TU 중 임의의 것을, 또는 다른 표준들의 컨텍스트에서의 유사한 데이터 구조들 (예를 들어, H.264/AVC 에서의 매크로블록들 및 그 서브-블록들) 을 지칭하기 위해 용어 "블록" 을 사용한다.
CU 는 코딩 노드 뿐아니라 그 코딩 노드와 연관된 예측 유닛들 (PU들) 및 변환 유닛들 (TU들) 을 포함한다. CU 의 사이즈는 코딩 노드의 사이즈에 대응하고, 일부 예들에서, 형상이 정방형일 수도 있다. HEVC 의 예에서, CU 의 사이즈는 8x8 픽셀들로부터, 최대 64x64 픽셀들 이상을 갖는 트리 블록의 사이즈까지 이를 수도 있다. 각각의 CU 는 하나 이상의 PU들 및 하나 이상의 TU들을 포함할 수도 있다. CU 와 연관된 신택스 데이터는, 예를 들어, CU 의 하나 이상의 PU들로의 파티셔닝을 기술할 수도 있다. 파티셔닝 모드들은 CU 가 스킵 또는 직접 모드 인코딩되는지, 인트라-예측 모드 인코딩되는지, 또는 인터-예측 모드 인코딩되는지에 따라 상이할 수도 있다. PU들은 형상이 비-정사각형이도록 파티셔닝될 수도 있다. CU 와 연관된 신택스 데이터는 또한, 예를 들어, 쿼드트리에 따라 CU 의 하나 이상의 TU들로의 파티셔닝을 기술할 수도 있다. TU 는 형상이 정사각형 또는 비-정사각형 (예를 들어, 직사각형) 일 수 있다.
HEVC 표준은 TU들에 따른 변환들을 고려한다. TU 들은 상이한 CU 들에 대해 상이할 수도 있다. TU들은 통상적으로, 파티셔닝된 LCU 에 대해 정의된 소정의 CU 내에서의 PU들의 사이즈에 기초하여 사이징되지만, 이것이 항상 그 경우인 것은 아닐 수도 있다. TU 들은 통상적으로 동일한 사이즈이거나 또는 PU 들보다 더 작다. 일부 예들에서, CU 에 대응하는 잔차 샘플들은 때때로 “잔차 쿼드 트리(residual quad tree)” (RQT) 로서 지칭되는 쿼드트리 구조를 사용하여 더 작은 유닛들로 세분될 수도 있다. RQT 의 리프 노드들은 TU들로서 지칭될 수도 있다. TU 들과 연관된 픽셀 차이 값들이 변환되어 변환 계수들을 생성하고, 이들은 양자화될 수도 있다.
리프-CU 는 하나 이상의 PU 들을 포함할 수도 있다. 일반적으로, PU 는 대응하는 CU 의 부분 또는 그 모두에 대응하는 공간 영역을 나타내며, PU 에 대한 레퍼런스 샘플을 취출하기 위한 데이터를 포함할 수도 있다. 더욱이, PU 는 예측과 관련된 데이터를 포함한다. 예를 들어, PU 가 인트라-모드 인코딩될 경우, PU 에 대한 데이터는, 그 PU 에 대응하는 TU 에 대한 인트라-예측 모드를 기술하는 데이터를 포함할 수도 있는 RQT 에 포함될 수도 있다. 다른 예로서, PU 가 인터-모드 인코딩될 경우, PU 는 그 PU 에 대한 하나 이상의 모션 벡터들을 정의하는 데이터를 포함할 수도 있다. PU 에 대한 모션 벡터를 정의하는 데이터는 예를 들어, 모션 벡터의 수평 컴포넌트, 모션 벡터의 수직 컴포넌트, 모션 벡터에 대한 분해능 (예를 들어, 1/4 픽셀 정밀도 또는 1/8 픽셀 정밀도), 모션 벡터가 포인팅하는 레퍼런스 픽처, 및/또는 모션 벡터에 대한 레퍼런스 픽처 리스트 (예를 들어, 리스트 0, 리스트 1, 또는 리스트 C) 를 기술할 수도 있다.
하나 이상의 PU 들을 갖는 리프 CU 는 또한 하나 이상의 TU들을 포함할 수도 있다. TU 들은, 상기 논의된 바와 같이 RQT (TU 쿼드트리 구조로서도 또한 지칭됨) 를 이용하여 명시될 수도 있다. 예를 들어, 분할된 플래그는 리프-CU 가 4개의 변환 유닛들로 분할되는지 여부를 표시할 수도 있다. 일부 예들에서, 각각의 변환 유닛은 추가의 서브-TU들로 더 분할될 수도 있다. TU 가 더 분할되지 않을 경우, 리프-TU 로서 지칭될 수도 있다. 일반적으로, 인트라 코딩에 대해, 리프-CU 에 속하는 리프-TU들 모두는 동일한 인트라 예측 모드로부터 생성된 잔차 데이터를 포함한다. 즉, 동일한 인트라-예측 모드는 일반적으로, 리프-CU 의 모든 TU 에서 변환될 예측된 값들을 계산하기 위해 적용된다. 인트라 코딩에 대해, 비디오 인코더 (22) 는 인트라 예측 모드를 이용하여 각각의 리프-TU 에 대한 잔차 값을, TU 에 대응하는 CU 의 부분과 오리지널 블록 간의 차이로서 계산할 수도 있다. TU 가 반드시 PU 의 사이즈로 한정되는 것은 아니다. 따라서, TU들은 PU 보다 더 크거나 또는 더 작을 수도 있다. 인트라 코딩에 대해, PU 는 동일한 CU 에 대한 대응하는 리프-TU 와 병치될 수도 있다. 일부 예들에 있어서, 리프-TU 의 최대 사이즈는 대응하는 리프-CU 의 사이즈에 대응할 수도 있다.
더욱이, 리프-CU들의 TU들은 또한 각각의 RQT 구조들과 연관될 수도 있다. 즉, 리프-CU 는, 리프-CU가 TU 들로 어떻게 파티셔닝되는지를 나타내는 쿼드트리를 포함할 수도 있다. TU 쿼드트리의 루트 노드는 일반적으로 리프-CU 에 대응하지만, CU 쿼드트리의 루트 노드는 일반적으로 트리블록 (또는 LCU) 에 대응한다.
상술된 바와 같이, 비디오 인코더 (22) 는 CU 의 코딩 블록을 하나 이상의 예측 블록들로 파티셔닝할 수도 있다. 예측 블록은, 동일한 예측이 적용되는 샘플들의 직사각형 (즉, 정사각형 또는 비정사각형) 블록이다. CU 의 PU 은 루마 샘플들의 예측 블록, 크로마 샘플들의 2 개의 대응하는 예측 블록들, 및 예측 블록들을 예측하기 위하여 이용된 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3개의 분리된 컬러 평면들을 포함하는 픽처들에서, PU 는 단일 예측 블록 및 그 예측 블록을 예측하는데 이용되는 신택스 구조들을 포함할 수도 있다. 비디오 인코더 (22) 는 CU 의 각각의 PU 의 예측 블록들 (예를 들어, 루마, Cb, 및 Cr 예측 블록들) 에 대한 예측적 블록들 (예를 들어, 루마, Cb, 및 Cr 예측적 블록들) 을 생성할 수도 있다.
비디오 인코더 (22) 및 비디오 디코더 (30) 는 VVC 에 따라 동작하도록 구성될 수도 있다. VVC 에 따라, 비디오 코더 (이를 테면 비디오 인코더 (22)) 는 픽처를 복수의 코딩 트리 유닛들 (CTU들) 로 파티셔닝한다. 비디오 인코더 (22) 는 트리 구조, 이를 테면, 쿼드트리 바이너리 트리 (QTBT) 구조 또는 멀티-타입 트리 (MTT) 구조에 따라 CTU 를 파티셔닝할 수도 있다. QTBT 구조는 HEVC 의 CU들, PU들, 및 TU들 간의 분리와 같은 다중 파티션 타입들의 개념들을 제거한다. QTBT 구조는 2 개의 레벨들: 쿼드트리 파티셔닝에 따라 파티셔닝된 제 1 레벨, 및 바이너리 트리 파티셔닝에 따라 파티셔닝된 제 2 레벨을 포함한다. QTBT 구조의 루트 노드는 CTU 에 대응한다. 바이너리 트리들의 리프 노드들은 코딩 유닛들 (CU들) 에 대응한다.
MTT 파티셔닝 구조에서, 블록들은 쿼드트리 (QT) 파티션, 바이너리 트리 (BT) 파티션, 및 하나 이상의 타입들의 트리플 트리 (TT) 파티션들을 사용하여 파티셔닝될 수도 있다. 트리플 트리 파티션은 블록이 3 개의 서브-블록들로 스플리팅되는 파티션이다. 일부 예들에서, 트리플 트리 파티션은 센터를 통해 원래의 블록을 분할하지 않고 블록을 3 개의 서브-블록들로 분할한다. MTT (예를 들어, QT, BT, 및 TT) 에서의 파티셔닝 타입들은 대칭적 또는 비대칭적일 수도 있다.
일부 예들에서, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 루미넌스 및 크로미넌스 컴포넌트들의 각각을 나타내기 위해 단일 QTBT 또는 MTT 구조를 사용할 수도 있는 한편, 다른 예들에서, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 루미넌스 컴포넌트에 대한 하나의 QTBT/MTT 구조 및 양자의 크로미넌스 컴포넌트들에 대한 다른 QTBT/MTT 구조 (또는 개별의 크로미넌스 컴포넌트들에 대한 2 개의 QTBT/MTT 구조들) 와 같은 2 개 이상의 QTBT 또는 MTT 구조들을 사용할 수도 있다.
VVC 에서, 픽처는 슬라이스들, 타일들, 및 브릭들로 파티셔닝될 수 있다. 일반적으로, 블록은 픽처에서의 특정 타일 내의 CTU 로우들의 직사각형 영역일 수 있다. 타일은 픽처에서의 특정 타일 칼럼 및 특정 타일 로우 내의 CTB 들의 직사각형 영역일 수 있다. 타일 칼럼은, 픽처의 높이와 동일한 높이 및 픽처 파라미터 세트에서의 신택스 엘리먼트들에 의해 명시된 폭을 갖는 CTU들의 직사각형 영역이다. 타일 로우는, 픽처 파라미터 세트에서 신택스 엘리먼트들에 의해 명시된 높이 및 픽처의 폭과 동일한 폭을 갖는 CTU들의 직사각형 영역이다. 일부 경우들에서, 타일은 다수의 브릭들로 파티셔닝될 수도 있고, 그 브릭들의 각각은 타일 내의 하나 이상의 CUT 를 포함할 수 있다. 다수의 브릭들로 파티셔닝되지 않는 타일은 또한 브릭으로서 지칭된다. 하지만, 타일의 진정한 서브세트인 브릭은 타일로서 지칭되지 않는다. 슬라이스는 단일 NAL 유닛에서 배타적으로 포함되는 픽처의 정수개의 브릭들일 수 있다. 일부 경우들에서, 슬라이스는 다수의 완전한 타일들 또는 오직 하나의 타일의 완전한 브릭들의 연속적인 시퀀스만 중 어느 일방을 포함할 수 있다.
비디오 인코더 (22) 및 비디오 디코더 (30) 는 HEVC 당 쿼드트리 파티셔닝, QTBT 파티셔닝, MTT 파티셔닝 또는 다른 파티셔닝 구조들을 사용하도록 구성될 수도 있다. 설명의 목적들을 위해, 본 개시의 기법들의 설명은 QTBT 파티셔닝에 대하여 제시된다. 그러나, 본 개시의 기법들은 또한, 쿼드트리 파티셔닝, 또는 다른 타입들의 파티셔닝에도 사용하도록 구성된 비디오 코더들에 적용될 수도 있음이 이해되어야 한다.
비디오 인코더 (22) 는 PU 에 대한 예측 블록들을 생성하기 위해 인트라 예측 (intra prediction) 또는 인터 예측 (inter prediction) 을 사용할 수도 있다. 비디오 인코더 (22) 가 PU 의 예측 블록들을 생성하기 위해 인트라 예측을 사용하는 경우, 비디오 인코더 (22) 는 PU 를 포함하는 픽처의 디코딩된 샘플들에 기초하여 PU 의 예측 블록들을 생성할 수도 있다. 비디오 인코더 (22) 가 CU 의 하나 이상의 PU들에 대한 예측 블록들 (예를 들어, 루마, Cb, 및 Cr 예측 블록들) 을 생성한 후, 비디오 인코더 (22) 는 CU 에 대한 하나 이상의 잔차 블록들을 생성할 수도 있다. 가령, 비디오 인코더 (22) 는 CU 를 위한 루마 잔차 블록을 생성할 수도 있다. CU 의 루마 잔차 블록에서의 각각의 샘플은 CU 의 예측 루마 블록들 중 하나에 있는 루마 샘플과 CU 의 원래 루마 코딩 블록에 있는 대응하는 샘플 사이의 차이를 표시한다. 추가로, 비디오 인코더 (22) 는 CU 에 대한 Cb 잔차 블록을 생성할 수도 있다. CU 의 Cb 잔차 블록에서의 각각의 샘플은 CU 의 예측성 Cb 블록들 중 하나에서의 Cb 샘플과 CU 의 오리지널 Cb 코딩 블록에서의 대응하는 샘플 사이의 차이를 나타낼 수도 있다. 비디오 인코더 (22) 는 또한 CU 에 대한 Cr 잔차 블록을 생성할 수도 있다. CU 의 Cr 잔차 블록에서의 각각의 샘플은 CU 의 예측성 Cr 블록들 중 하나에서의 Cr 샘플과 CU 의 오리지널 Cr 코딩 블록에서의 대응하는 샘플 간의 차이를 나타낼 수도 있다.
또한, 상술된 바와 같이, 비디오 인코더 (22) 는 CU 의 잔차 블록 (예를 들어, 루마, Cb 및 Cr 잔차 블록) 을 하나 이상의 변환 블록 (예를 들어, 루마, Cb 및 Cr 변환 블록) 으로 분해하기 위하여 쿼드-트리 파티셔닝을 이용할 수도 있다. 변환 블록은, 동일한 변환이 적용되는 샘플들의 직사각형 (예를 들어, 정사각형 또는 비-정사각형) 블록이다. CU 의 변환 유닛 (TU) 은 루마 샘플들의 변환 블록, 크로마 샘플들의 2 개의 대응하는 변환 블록들, 및 변환 블록 샘플들을 변환하기 위하여 이용된 신택스 구조들을 포함할 수도 있다. 따라서, CU 의 각 TU 는 루마 변환 블록, Cb 변환 블록, 및 Cr 변환 블록을 가질 수도 있다. TU 의 루마 변환 블록은 CU 의 루마 잔차 블록의 서브-블록일 수도 있다. Cb 변환 블록은 CU 의 Cb 잔차 블록의 서브-블록일 수도 있다. Cr 변환 블록은 CU 의 Cr 잔차 블록의 서브-블록일 수도 있다. 단색 픽처들 또는 3 개의 별개의 컬러 평면들을 갖는 픽처들에 있어서, TU 는 단일의 변환 블록, 및 그 변환 블록의 샘플들을 변환하는데 사용되는 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (22) 는 TU 에 대한 계수 블록을 생성하기 위해 TU 의 변환 블록에 하나 이상의 변환들을 적용할 수도 있다. 예를 들어, 비디오 인코더 (22) 는 TU 에 대한 루마 계수 블록을 생성하기 위해 TU 의 루마 변환 블록에 하나 이상의 변환들을 적용할 수도 있다. 계수 블록은 변환 계수들의 2-차원 어레이일 수도 있다. 변환 계수는 스칼라 양일 수도 있다. 비디오 인코더 (22) 는 TU 에 대한 Cb 계수 블록을 생성하기 위해 TU 의 Cb 변환 블록에 하나 이상의 변환들을 적용할 수도 있다. 비디오 인코더 (22) 는 TU 에 대한 Cr 계수 블록을 생성하기 위해 TU 의 Cr 변환 블록에 하나 이상의 변환들을 적용할 수도 있다.
일부 예들에서, 비디오 인코더 (22) 는 변환 블록에 대한 변환들의 적용을 생략한다. 이러한 예들에서, 비디오 인코더 (22) 는 변환 계수들과 동일한 방식으로 잔차 샘플 값들을 처리할 수도 있다. 따라서, 비디오 인코더 (22) 가 변환들의 적용을 생략하는 예들에서, 변환 계수들 및 계수 블록들의 다음과 같은 논의가 잔차 샘플들의 변환 블록들에 적용가능할 수도 있다.
계수 블록 (예를 들어, 휘도 계수 블록, Cb 계수 블록 또는 Cr 계수 블록) 을 생성한 후, 비디오 인코더 (22) 는 계수 블록을 양자화하여 계수 블록을 나타내는 데 사용되는 데이터의 양을 감소시켜 잠재적으로 추가 압축을 제공할 수도 있다. 양자화란 일반적으로 값들의 범위를 단일 값으로 압축하는 프로세스를 말한다. 예를 들어, 양자화는 값을 상수로 나누고, 그 다음에 가장 가까운 정수로 라운딩 (rounding) 함으로써 행해질 수도 있다. 계수 블록을 양자화하기 위해, 비디오 인코더 (22) 는 계수 블록의 변환 계수들을 양자화할 수도 있다. 비디오 인코더 (22) 가 계수 블록을 양자화한 후, 비디오 인코더 (22) 는 양자화된 변환 계수들을 나타내는 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. 예를 들어, 비디오 인코더 (22) 는 양자화된 변환 계수들을 나타내는 신택스 엘리먼트들에 대해 컨텍스트-적응 바이너리 산술 코딩 (CABAC) 또는 다른 엔트로피 코딩 기법들을 수행할 수도 있다.
비디오 인코더 (22) 는 코딩된 픽처들 및 연관된 데이터의 표현을 형성하는 비트들의 시퀀스를 포함하는 비트스트림을 출력할 수도 있다. 따라서, 비트스트림은 비디오 데이터의 인코딩된 표현을 포함한다. 비트스트림은 네트워크 추상 계층 (network abstraction layer; NAL) 유닛들의 시퀀스를 포함할 수도 있다. NAL 유닛은 NAL 유닛에서의 데이터의 타입 및 그 데이터를 에뮬레이션 방지 비트와 함께 필요에 따라 산재된 RBSP (raw byte sequence payload) 의 형태로 포함하는 바이트의 표시를 포함하는 신택스 구조이다. NAL 유닛들의 각각은 NAL 유닛 헤더를 포함할 수도 있고 RBSP 를 캡슐화할 수도 있다. NAL 유닛 헤더는, NAL 유닛 타입 코드를 표시하는 신택스 엘리먼트를 포함할 수도 있다. NAL 유닛의 NAL 유닛 헤더에 의해 명시된 NAL 유닛 타입 코드는 NAL 유닛의 타입을 나타낸다. RBSP 는, NAL 유닛 내에서 캡슐화되는 정수 개의 바이트들을 포함하는 신택스 구조일 수도 있다. 일부 인스턴스들에서, RBSP 는 제로 비트들을 포함한다.
비디오 디코더 (30) 는 비디오 인코더 (22) 에 의해 생성된 비트스트림을 수신할 수도 있다. 비디오 디코더 (30) 는 비트 스트림을 디코딩하여 비디오 데이터의 픽처들을 재구성할 수도 있다. 비트스트림을 디코딩하는 것의 부분으로서, 비디오 디코더 (30) 는 비트스트림을 파싱하여, 그 비트스트림으로부터 신택스 엘리먼트들을 획득할 수도 있다. 비디오 디코더 (30) 는 비트스트림으로부터 획득된 신택스 엘리먼트들에 적어도 부분적으로 기초하여 비디오 데이터의 픽처들을 재구성할 수도 있다. 비디오 데이터를 재구성하기 위한 프로세스는 일반적으로, 비디오 인코더 (22) 에 의해 수행된 프로세스에 대해 역일 수도 있다. 실례로, 비디오 디코더 (30) 는 PU들의 모션 벡터들을 이용하여 현재 CU 의 PU 들에 대한 예측 블록들을 결정할 수도 있다. 또한, 비디오 디코더 (30) 는 현재 CU 의 TU들의 계수 블록들을 역양자화할 수도 있다. 비디오 디코더 (30) 는 계수 블록들에 대해 역변환들을 수행하여 현재 CU 의 TU들의 변환 블록들을 재구성할 수도 있다. 비디오 디코더 (30) 는 현재 CU 의 PU들에 대한 예측성 블록들의 샘플들을, 현재 CU 의 TU 들의 변환 블록들의 대응하는 샘플들에 부가함으로써, 현재 CU 의 코딩 블록들을 재구성할 수도 있다. 픽처의 각각의 CU 에 대한 코딩 블록들을 재구성함으로써, 비디오 디코더 (30) 는 픽처를 재구성할 수도 있다.
본원에 개시된 기법들은 AVC, HEVC 및 VVC 를 포함하는 비디오 표준들의 부분인 블록 기반 인트라 예측을 기반으로 한다. 블록 기반 인트라 예측에서, 통상적으로, 인접하는 재구성된 블록들로부터의 레퍼런스 샘플들의 라인들은 현재 블록 내에서 샘플들을 예측하기 위해 사용된다. 샘플들의 하나 또는 다수의 라인들은 예측에 사용될 수도 있다. 레퍼런스 샘플들은 통상의 인트라 예측 모드들, 이를 테면, DC, 평면, 및 각도/방향성 모드들에 의해 채택된다.
인트라 예측은 블록의 공간적으로 이웃하는 재구성된 이미지 샘플들을 사용하여 이미지 블록 예측을 수행한다. 인트라 예측으로, NxM (예를 들어, 4x4) 블록은 선택된 예측 블록 방향을 따라 위 및 좌측 이웃 재구성된 샘플들 (레퍼런스 샘플들) 에 의해 예측된다. 일 예로서, 블록은 선택된 예측 방향을 따라 위측 및 좌측 이웃하는 재구성된 샘플들 (즉, 레퍼런스 샘플들) 에 의해 예측된다. 레퍼런스 샘플들은 예측되고 있는 블록에 대해 외부에 있다. 레퍼런스 샘플들에 의해, 비디오 인코더 (22) 는 레퍼런스 샘플들에 기초하여 예측 샘플들을 갖는 예측 블록을 구성한다.
일반적으로, 인트라 예측 기법에서, 비디오 인코더 (22) 는 예측 블록과 현재 블록 사이의 차이를 나타내는 잔차 블록 (예를 들어, 예측 샘플들과 현재 블록의 샘플들 사이의 차이를 나타내는 잔차 값들) 을 결정하고, 잔차 블록에서의 잔차 값들을 나타내는 정보를 시그널링한다. 비디오 디코더 (30) 는 유사하게 레퍼런스 샘플들을 결정하고 예측 블록을 구성한다. 비디오 디코더 (30) 는 수신된 정보에 기초하여 잔차 블록의 잔차 값들을 결정하고, 현재 블록을 재구성하기 위해 예측 블록의 예측 샘플들에 잔차 블록의 잔차 값들을 가산한다.
보다 자세하게 설명된 바와 같이, 본 개시에 설명된 예시의 기법들은 예측 블록의 예측 샘플들의 하나 이상 (예를 들어, 전부) 을 수정한다. 비디오 인코더 (22) 는 수정된 예측 샘플들에 기초하여 잔차 값들을 결정한다. 비디오 디코더 (30) 는 현재 블록을 재구성하기 위해 수정된 예측 샘플들에 잔차 값들을 가산할 수도 있다.
복수의 인트라-예측 모드들 (또한 "인트라 모드들" 로서 지칭됨) 이 존재한다. 일부 예들에서, 루마 블록의 인트라 예측은 평면 모드, DC 모드 및 33 개의 각도 모드들 (예를 들어, 대각선 인트라 예측 모드들 및 대각선 인트라 예측 모드들에 인접하는 각도 모드들) 을 포함하는 35 개의 모드들을 포함한다. 인코더 (22) 및/또는 디코더 (30) 는 (예컨대, SAE (Sum of Absolute Errors), SAD (Sum of Absolute Differences), SATD (Sum of Absolute Transformed Differences), 또는 다른 유사한 수단에 기초하여) 인코딩될 블록과 예측 블록 사이의 잔차를 최소화하는 각각의 블록에 대한 예측 모드를 선택할 수도 있다. 실례로, SAE 는 인코딩될 블록에서의 각 픽셀 (또는 샘플) 과, 비교를 위해 사용되는 예측 블록에서의 대응하는 픽셀 (또는 샘플) 사이의 절대 차이를 취함으로써 계산될 수 있다. 그 픽셀들 (또는 샘플들) 의 차이들은 합산되어 차이 이미지의 L1 놈 (norm), 2 개의 이미지 블록들 간의 Manhattan 거리, 또는 다른 계산과 같이, 블록 유사성의 메트릭을 생성한다. 일례로서 SAE 를 사용하면, 인트라-예측 모드들의 각각을 이용하는 각 예측에 대한 SAE 는 예측 에러의 크기를 나타낸다. 실제 현재 블록에 대한 최선의 매치를 갖는 인트라-예측 모드는 최소 SAE 를 제공하는 인트라-예측 모드에 의해 주어진다.
인트라 예측의 35 개의 모드들은 이하의 표 1 에 나타낸 바와 같이 인덱싱된다: 다른 예들에서, 33 개의 각도 모드들로 이미 표현되지 않을 수도 있는 예측 각도들을 포함하여 더 많은 인트라 모드들이 정의될 수도 있다. 다른 예들에서, 각도 모드들과 연관된 예측 각도들이 HEVC 에 사용된 것들과는 상이할 수도 있다.
인트라 -예측 모드 연관된 명칭
0 INTRA_PLANAR
1 INTRA_DC
2..34 INTRA_ANGULAR2..INTRA_ANGULAR34
표 1 - 인트라 예측 모드 및 연관된 명칭들의 상세
NxN 블록에 대해 평면 예측을 수행하기 위하여, (x, y) 에 위치된 각각의 샘플 pxy 에 대해, 예측 샘플 값은 (인트라 예측을 위해 레퍼런스 샘플들로서 사용되는) 4 개의 특정 이웃하는 재구성된 샘플들에 바이리니어 필터를 적용하는 것에 의해 계산될 수도 있다. 4 개의 레퍼런스 샘플들은 상부-우측 (top-right) 재구성된 샘플 (TR), 저부-좌측 (bottom-left) 재구성된 샘플 (BL), 현재 샘플의 동일 칼럼 (rx ,-1) 및 로우 (r- 1,y) 에 위치된 2 개의 재구성된 샘플들을 포함한다. 평면 모드는 이하와 같이 공식화될 수 있다:
pxy = ( (N-x1) *·L + (N-y1) *·T + x1 *·R + y1 *·B ) / (2*N),
여기서, x1=x+1, y1=y+1, R=TR 및 B=BL.
DC 모드에 대해, 예측 블록은 이웃하는 재구성된 샘플들의 평균 값으로 채워진다. 일반적으로, 평면 모드와 DC 모드 양자는 평활하게 가변하고 일정한 이미지 영역들을 모델링하기 위해 적용된다.
33 개의 상이한 예측 방향들을 포함하는, HEVC 에서의 각도 인트라 예측 모드들에 대해, 인트라 예측 프로세스가 다음과 같이 기술될 수 있다. 각각의 주어진 각도 인트라 예측 모드에서, 인트라 예측 방향이 이에 따라 식별될 수도 있고; 예를 들어, 인트라 모드 (18) 는 순수 수평 예측 방향에 대응하고 인트라 모드 (26) 는 순수 수직 예측 방향에 대응한다. 각도 예측 모드들이 도 3 에 도시된다. 일부 코덱들에서, 상이한 수의 인트라-예측 모드들이 사용될 수도 있다. 예를 들어, 평면 및 DC 모드드에 추가하여, 65 개의 각도 모드들이 정의될 수도 있고, 여기서, 모드 2 는 -135° 의 예측 방향을 나타내고, 모드 34 는 -45° 의 예측 방향을 나타내며, 모드 66 은 45° 의 예측 방향을 나타낸다. 일부 코덱들 (예컨대, VVC) 에서, -135° 너머의 (-135° 미만의) 및 45° 너머의 (45° 초과의) 각도들이 또한 정의될 수도 있다; 이것들은 광각 인트라 모드들로서 지칭될 수도 있다. 본 명세서에서의 설명은 HEVC 에서의 (즉, 35 개의 모드들을 갖는) 인트라 모드 설계에 대한 것이지만, 개시된 기법들은 또한 광각 인트라 모드들을 포함하는 더 많은 인트라 모드들에 적용될 수도 있다.
예측 블록의 각 샘플의 좌표들 (x, y) 이 특정 인트라 예측 방향 (예를 들어, 각도 인트라 예측 모드들 중 하나) 을 따라 투영된다. 예를 들어, 특정 인트라 예측 방향이 주어지면, 예측 블록의 샘플의 좌표들 (x, y) 은 먼저 인트라 투영 방향을 따라 이웃하는 재구성되는 샘플들의 로우/칼럼에 투영된다. (x,y) 가 2 개의 이웃하는 재구성된 샘플들 L 과 R 사이의 부분 포지션 α 로 투영되는 경우들에서, 다음과 같이 공식화된 2-탭 바이-리니어 보간 필터를 사용하여 (x, y) 에 대한 예측 값이 계산될 수도 있다:
pxy = (1- a)·L + a·R.
부동 소수점 연산을 피하기 위해, HEVC 에서, 위의 계산은 다음과 같이 정수 산술을 이용하여 근사화될 수도 있다:
pxy = ( (32- a’)·L + a’·R + 16 )>>5,
여기서, a’ 는 32*α 와 동일한 정수이다
일부 예들에서, 인트라 예측 전에, 이웃하는 레퍼런스 샘플들은 인트라 레퍼런스 평활화 (smoothing), 또는 모드-종속 인트라 평활화 (MDIS) 로서 알려진 바와 같이 2-탭 바이리니어 또는 3-탭 (1,2,1)/4 필터를 사용하여 필터링된다. 인트라 예측을 행할 때, 인트라 예측 모드 인덱스 (predModeIntra) 및 블록 사이즈 (nTbS) 로 주어지면, 레퍼런스 평활화 프로세스가 수행되는지의 여부 및 어느 평활화 필터가 사용되는지가 결정된다. 인트라 예측 모드 인덱스는 인트라 예측 모드를 표시하는 인덱스이다.
예측 블록의 예측 샘플들은 위의 예시의 기법들을 사용하여 생성된다. 예측 샘플들이 생성된 후에, 예측 샘플들의 하나 이상이 포지션 종속 (인트라) 예측 조합 (PDPC) 을 이용하여 수정될 수도 있다. PDPC 의 형태들은 ITU-T SG16/Q6 Doc. COM16-C1046, “Position Dependent intra Prediction Combination (PDPC), 및 X. Zhao, V. Seregin, A. Said, M. Karczewicz, “EE1 related: Simplification and extension of PDPC”, 8th JVET Meeting, Macau, Oct. 2018, JVET-H0057 에서 기술되고, 이들은 그 전체가 그리고 모든 목적들을 위해 본원에 참조에 의해 통합된다. 그 문서에는, 다음으로 요약되는 바와 같이 시그널링 없이 평면, DC, 수평, 및 수직 모드들에 적용되는 PDPC 의 도입이 개시되어 있다.
예를 들어, (x, y) 에 위치된 예측 샘플 pred(x,y) 은 인트라 예측 모드 (예컨대, 평면, DC, 각도) 로 예측되고, 그 값은 다음과 같이 단일의 레퍼런스 샘플 라인에 대해 PDPC 표현을 사용하여 수정된다:
pred(x,y) = ( wL × R- 1,y + wT × Rx ,-1 - wTL × R-1,-1 + (64 - wL - wT + wTL) × pred’(x,y) + 32 ) >> 6, (식 1).
식 1 에서, pred’(x,y) 는 예측 샘플들을 생성하기 위해 상술된 바와 같이 인트라-예측 모드를 이용하여 결정된 예측 샘플의 값이고, pred(x,y) 는 pred’(x,y) 의 수정된 값이다. 용어들 Rx ,-1 및 R- 1,y 은 현재 샘플 (x, y) 의 상부 및 좌측에 위치된 레퍼런스 샘플들 (현재 블록에 대해 외부의 인접하는 상부 및 좌측 샘플들) 을 각각 나타내고, 용어 R-1,-1 는 현재 블록의 상부-좌측 코너 (현재 블록 외부의 인접하는 상부-좌측 코너) 에 위치된 레퍼런스 샘플들을 나타낸다. 실례로, (이하에서 설명되는) 도 2a 에서 도시된 바와 같이, 블록 (200A) 의 상부-좌측 코너에서 위치된 제 1 예측 샘플 (202) 의 투영으로부터, Rx ,-1 은 (값 pred’(x,y) 에 대응하는) 수정되고 있는 예측 샘플의 x-좌표와 동일한 x-좌표를 갖는 현재 블록 위의 하나의 로우인 샘플을 표현하고, R- 1,y 는 수정되고 있는 예측 샘플의 y-좌표와 동일한 y-좌표를 갖는 현재 블록 좌측으로 (또는 “현재 블록 좌측 상의) 하나의 칼럼인 샘플을 표현하며, R-1,-1 은 현재 블록의 좌측으로 하나의 칼럼 및 현재 블록 위로 하나의 로우인 샘플을 표현한다.
(인트라-예측 모드를 이용하여 생성된) 예측 샘플을 수정하는데 사용되고 있는 샘플들 (예를 들어, PDPC 를 위해 사용되는 레퍼런스 샘플들) 은 픽처에서의 샘플들 (예를 들어, 루마 및 크로마 샘플들) 이고, (물론 가능하더라도) 반드시 다른 예측 샘플들인 것은 아니다. 예를 들어, NxM 의 사이즈를 갖는 인트라 예측되고 있는 현재 블록에 대해, 비디오 인코더 (22) 및/또는 비디오 디코더 (30) 는 NxM 사이즈의 예측 블록을 생성할 수도 있다. 예측 샘플들을 수정하는데 사용되는 레퍼런스 샘플들은 (현재 블록을 포함하는) 현재 픽처의 것들이고, (현재 블록의 하나 이상의 이웃하는 블록들에서) 현재 블록에 대해 외부에 있다.
현재 블록들에 대해 외부에 있는 샘플들을 식별하는 좌표 시스템은 현재 블록에 대해 상대적이다. 예를 들어, 현재 블록의 상부-좌측 코너에 위치된 샘플은 (0, 0) 의 좌표를 갖는다. 비디오 인코더 (22) 는 (예를 들어, 좌표 (0, 0) 를 갖는) 예측 블록의 상부-좌측 코너에 위치된 예측 샘플과, 좌표 (0, 0) 를 갖는 현재 블록에서의 샘플 사이의 잔차를 결정할 수도 있다. 현재 블록에서 (0, 0) 에 위치된 샘플을 재구성하기 위하여, 비디오 디코더 (30) 는 예측 블록에서 (0, 0) 에 위치된 예측 샘플을 (0, 0) 에 위치된 샘플에 대응하는 잔차 값에 가산할 수도 있다. 따라서, 현재 블록에서의 각각의 샘플에 대해, (예를 들어, 동일한 좌표를 갖는) 예측 블록에서 대응하는 샘플이 존재한다.
따라서, Rx ,-1 은 y-좌표가 -1 임을 의미하고, 따라서, 현재 블록 위에 있는 로우에서의 샘플을 가리킨다. x-좌표는 수정되고 있는 예측 샘플의 x-좌표와 동일할 수도 있다. R- 1,y 에 대해, x-좌표는 -1 이고 따라서, 현재 블록의 좌측에 있는 칼럼을 가리킨다. y-좌표는 수정되고 있는 예측 샘플의 y-좌표와 동일할 수도 있다.
상이한 좌표 시스템, 이를 테면, (0, 0) 좌표가 픽처의 상부 우측 샘플을 가리키는 좌표 시스템도 역시 사용하는 것이 가능할 수도 있다. 예시의 기법들은 (0, 0) 좌표가 블록의 상부 좌측 샘플을 가리키는 좌표 시스템에 대하여 설명된다.
DC 모드에 대해, 가중치들은 치수들 폭 (width) 및 높이 (height) 를 갖는 블록에 대하여 다음과 같이 계산된다:
wT = 32 >> ( ( y<<1 ) >> shift ), wL = 32 >> ( ( x<<1 ) >> shift ), wTL = ( wL>>4 ) + ( wT>>4 ), (식 2).
식 2 에서, shift = ( log2( width ) + log2( height ) + 2 ) >> 2. 평면 모드에 대해 wTL = 0 이고, 수평 모드에 대해 wL = 0 및 wTL = wT 이며, 수직 모드에 대해 wT = 0 및 wTL = wL 이다. 일부 경우들에서, PDPC 가중치들은 가산들 및 시프트 (shift) 들만으로 계산될 수도 있다. pred(x,y) 의 값은 식 1 을 사용하여 단일 스텝에서 계산될 수 있다.
도 2a 는 하나의 4x4 블록 (200A) 내부의 (샘플 포지션 (0, 0) 에서의) 제 1 예측 샘플 (202) 에 대한 DC 모드 PDPC 가중치들 (wL, wT, wTL) 을 예시하는 도면이다. 도시된 바와 같이, R- 1,y PDPC 레퍼런스 샘플에 대한 가중치 wL 는 32 이고, Rx ,-1 PDPC 레퍼런스 샘플에 대한 가중치 wT 는 32 이며, R-1,-1 PDPC 레퍼런스 샘플에 대한 가중치 wTL 는 -4 이다. 가중치들 (wL, wT, wTL) 은 상기 식 2 에 따라 결정될 수 있다. 식 2 에서 나타낸 바와 같이, 가중치들은 현재 블록에서의 예측 샘플 pred(x,y) 의 포지션 (x,y) 에 기초하여 결정된다.
도 2b 는 하나의 4x4 블록 내부에서 샘플 포지션 (1, 0) 에 대한 DC 모드 PDPC 가중치들 (wL, wT, wTL) 을 예시한다. 도시된 바와 같이, R- 1,y PDPC 레퍼런스 샘플에 대한 가중치 wL 는 8 이고, Rx ,-1 PDPC 레퍼런스 샘플에 대한 가중치 wT 는 32 이며, R-1,-1 PDPC 레퍼런스 샘플에 대한 가중치 wTL 는 -2 이다. 가중치들 (wL, wT, wTL) 은 상기 식 2 에 따라 결정될 수 있다.
일부 경우들에서, PDPC 가 DC, 평면, 수평 및 수직 인트라 모드들에 적용되는 경우, 추가적인 바운더리 필터들, 이를 테면, DC 모드 바운더리 필터 또는 수평/수직 모드 에지 필터들이 적용되지 않는다. 일부 경우들에서, 식 1 은 (예를 들어, 현재 블록의 1 로우 위에 있거나 1 로우 좌측에 있는 샘플들로 제한되지 않는) 추가적인 레퍼런스 샘플 라인들을 포함하도록 일반화될 수도 있다. 이 경우에, 다수의 레퍼런스 샘플들은 Rx ,-1, R- 1,y, R-1,- 1 의 이웃들에서 이용가능하고, 각각은 예를 들어, 트레이닝에 의해 최적화될 수 있는 할당된 가중치를 가질 수도 있다.
일부 경우들에서, PDPC 는 일반적으로 각도 모드들로 (예를 들어, 대각선 인트라 모드들에 대해, 그리고 대각선 모드들에 인접하는 각도 모드들에 대해) 확장될 수 있다. 의도된 대각선 인트라 모드들은 저부-좌측 및 상부-우측 방향들에 따라 예측하는 모드들 뿐만 아니라 다수의 인접하는 각도 모드들, 예를 들어, 저부-좌측 대각선 모드와 수직 모드 사이의 N 개의 인접 모드들 및 상부-우측 대각선 모드와 수평 모드 사이의 N 또는 M 개의 인접하는 모드들이다. 도 3 은 본원에 개시된 바와 같은 각도 모드들의 식별을 예시한다. 일반적으로, 인접 모드들은 이용가능한 가능 모드들의 선택된 서브세트일 수도 있다. 각도 모드들 사이의 간격은 예를 들어, 불균일할 수도 있고, 일부 각도 모드들은 예를 들어, 스킵될 수도 있다.
일부 예들에서, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 현재 블록이 DC, 평면, 수직, 또는 수평 모드들을 제외한 각도 모드에서 인트라 예측되는 PDPC 를 수행하도록 구성될 수 있다. 그러나, PDPC 를 각도 인트라 예측 모드들로 확장하는데 기술적 복잡성이 존재할 수도 있다. 예를 들어, 레퍼런스 샘플들은 현재 블록에 대해 외부에 위치되면서 수정되고 있는 예측 샘플과 동일한 x- 및/또는 y-좌표들을 갖지 않는다. 따라서, 비디오 코딩 효율들이 얻어지도록, 예측 샘플을 수정하는데 어느 레퍼런스 샘플들을 사용할지가 불확실할 수도 있다.
예를 들어, 잔차 값들을 시그널링하는데 요구되는 정보가 감소되면, 대역폭 효율들에서의 증가가 존재한다. 따라서, (인트라 예측을 이용하여 결정된) 예측 블록을 수정하는데 사용되는 PDPC 레퍼런스 샘플들은, 수정된 예측 블록으로부터 생성된 잔차 값들이 다른 기법들에 비해 더 적은 양의 정보가 시그널링될 것을 요구하도록 되어야 한다. 그러나, 어느 레퍼런스 샘플들을 사용할 것인지의 결정이 매우 집중적이면, 비디오 디코더 (30) 가 현재 블록을 재구성하는데 얼마나 오랜 시간이 걸리는지의 레이턴시가 있을 수도 있다.
도 4a 내지 도 4d 는 대각선 및 인접 각도 인트라 모드들로 확장된 PDPC 에 의해 사용된 샘플들의 정의를 예시한다. 도 4a 내지 도 4d 에서의 점선들은 (예컨대, 도 3 으로부터의) 예측 방향을 나타내고, 인트라 예측된 예측 샘플 pred(x’,y’) 에 대해 사용된 레퍼런스 샘플로부터 기원된다. 도 4a 는 상부-우측 대각선 모드로의 PDPC 의 확장을 위한 PDPC 레퍼런스 샘플들 R(x,-1), R(- 1,y ), 및 R(-1,-1) 의 정의를 예시한다. 예측 샘플 pred(x’, y’) 은 예측 블록 내의 (x’, y’) 에 위치된다. PDPC 레퍼런스 샘플 R(x,-1) 의 좌표 x 는 x = x’ + y’ + 1 에 의해 주어지고, PDPC 레퍼런스 샘플 R(-1,y) 의 좌표 y 는 유사하게 y = x’ + y’ + 1 에 의해 주어진다. 상부-우측 대각선 모드에 대한 PDPC 가중치들은 예를 들어: wT = 16 >> ( ( y’<<1 ) >> shift ), wL = 16 >> ( ( x’<<1 ) >> shift ), wTL = 0 이다.
도 4b 는 저부-좌측 대각선 모드로의 PDPC 의 확장을 위한 레퍼런스 샘플들 R(x,-1), R(- 1,y ), 및 R(-1,-1) 의 정의를 예시한다. PDPC 레퍼런스 샘플 R(x,-1) 의 좌표 x 는 x = x’ + y’ + 1 에 의해 주어지고, PDPC 레퍼런스 샘플 R(-1,y) 의 좌표 y 는 y = x’ + y’ + 1 에 의해 주어진다. 상부-우측 대각선 모드에 대한 PDPC 가중치들은 예를 들어: wT = 16 >> ( ( y’<<1 ) >> shift ), wL = 16 >> ( ( x’<<1 ) >> shift ), wTL = 0 이다.
도 4a 및 도 4b 에서, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 각각 (예를 들어, 바로 위에 있기는 하지만 기법들은 그에 제한되지 않는) 현재 블록 위에 있는 로우를 결정하고 결정된 로우에서 x-좌표를 결정할 수 있다. 결정된 로우에서의 x-좌표는 예측 샘플의 x-좌표 플러스 예측 샘플의 y-좌표 플러스 1과 같다. 비디오 인코더 (22) 및 비디오 디코더 (30) 는 결정된 로우 및 결정된 x-좌표에 기초하여 하나 이상의 레퍼런스 샘플들의 일 레퍼런스 샘플을 결정할 수 있다.
유사하게, 도 4a 및 도 4b 에서, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 (예를 들어, 바로 좌측에 있기는 하지만 기법들은 그에 제한되지 않는) 현재 블록 좌측에 있는 칼럼을 결정하고 결정된 칼럼에서 y-좌표를 결정할 수 있다. 결정된 칼럼에서의 y-좌표는 예측 샘플의 x-좌표 플러스 예측 샘플의 y-좌표 플러스 1 과 같다. 비디오 인코더 (22) 및 비디오 디코더 (30) 는 결정된 칼럼 및 결정된 y-좌표에 기초하여 하나 이상의 레퍼런스 샘플들의 일 레퍼런스 샘플을 결정할 수도 있다.
결정된 x 및 y-좌표들에 기초하여, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 레퍼런스 샘플들 (예를 들어, 결정된 로우 및 결정된 x-좌표에 기초하여 제 1 레퍼런스 샘플 및 결정된 칼럼 및 결정된 y-좌표에 기초하여 제 2 레퍼런스 샘플) 을 결정할 수 있다. 또한, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 대각선 모드들 (예를 들어, 2 개의 예들로서 상부-우측 대각선 모드 및 저부-좌측 대각선 모드) 에 대한 위의 예시의 기법들에 따라 가중치들을 결정할 수 있다. 그 다음, (비제한적인 일례로서) 식 1 에 기초하여, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 수정된 예측 샘플 (예를 들어, pred(x,y)) 을 결정할 수 있다.
인접하는 상부-우측 대각선 모드의 경우가 도 4c 에 예시되어 있다. 일반적으로, 도 3 에서 정의된 각도 α 에 대해, PDPC 레퍼런스 샘플의 y-좌표 R(- 1,y ) 는 다음: y = y’ + tan(α) × (x’ + 1) 과 같이 결정되며, PDPC 레퍼런스 샘플의 x-좌표 R(x,-1) 는 x = x’ + cotan(α) × (y’ + 1) 에 의해 주어지며, 여기서 tan(α) 및 cotan(α) 는 각각 각도 α 의 탄젠트 및 코탄젠트이다. 인접하는 상부-우측 대각선 모드에 대한 PDPC 가중치들은 예를 들어: wT = 32 >> ( ( y’<<1 ) >> shift ), wL = 32 >> ( ( x’<<1 ) >> shift ), wTL = 0 또는 wT = 32 >> ( ( y’<<1 ) >> shift ), wL = 0, wTL = 0 이다.
유사하게, 인접하는 저부-좌측 대각선 모드의 경우가 도 4d 에 예시되어 있다. 일반적으로, 도 3 에서 정의된 각도 β 에 대해, PDPC 레퍼런스 샘플의 x 좌표 R(x,-1) 는 다음: x = x’ + tan(β) × (y’ + 1) 과 같이 결정되며, PDPC 레퍼런스 샘플의 y 좌표 R(- 1,y ) 는 y = y’ + cotan(β) × (x’ + 1) 에 의해 주어지며, 여기서 tan(β) 및 cotan(β) 는 각도 β 의 탄젠트 및 코탄젠트이다. 인접하는 저부-좌측 대각선 모드에 대한 PDPC 가중치들은 예를 들어: wL = 32 >> ( ( x’<<1 ) >> shift ), wT = 32 >> ( ( y’<<1 ) >> shift ), wTL = 0 또는 wL = 32 >> ( ( x’<<1 ) >> shift ), wT =0, wTL = 0 이다.
도 4c 및 도 4d 에서, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 각각 (예를 들어, 바로 위에 있기는 하지만 기법들은 그에 제한되지 않는) 현재 블록 위에 있는 로우를 결정하고 결정된 로우에서 x-좌표를 결정할 수 있다. 결정된 로우에서의 x-좌표는 각도 인트라 예측 모드의 각도에 기초한다. 비디오 인코더 (22) 및 비디오 디코더 (30) 는 결정된 로우 및 결정된 x-좌표에 기초하여 하나 이상의 레퍼런스 샘플들의 일 레퍼런스 샘플을 결정할 수 있다.
결정된 로우에서의 x-좌표를 결정하기 위하여, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 각도 인트라 예측 모드의 각도의 (예를 들어, 인접하는 상부-우측 대각선 모드에 대해) 코탄젠트 또는 (예를 들어, 인접하는 저부-좌측 대각선 모드에 대해) 탄젠트 중 하나를 결정할 수 있다. 비디오 인코더 (22) 및 비디오 디코더 (30) 는 각도 인트라 예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나, 예측 샘플의 x-좌표, 및 예측 샘플의 y-좌표에 기초하여 결정된 로우에서 x-좌표를 결정할 수 있다. 예를 들어, 인접하는 상부-우측 대각선 각도 인트라 예측 모드에서, 결정된 로우에서의 x-좌표는 x’ + cotan(α) × (y’ + 1) 와 같고, 인접하는 저부-좌측 대각선 모드에서, 결정된 로우에서의 x-좌표는 x’ + tan(β) × (y’ + 1) 와 같고, 여기서, x’ 및 y’ 는 수정되고 있는 예측 샘플의 x 및 y-좌표들이다.
유사하게, 도 4c 및 도 4d 에서, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 각각 (예를 들어, 바로 좌측에 있기는 하지만 기법들은 그에 제한되지 않는) 현재 블록 좌측에 있는 칼럼을 결정하고 결정된 칼럼에서 y-좌표를 결정할 수 있다. 결정된 칼럼에서의 y-좌표는 각도 인트라 예측 모드의 각도에 기초한다. 비디오 인코더 (22) 및 비디오 디코더 (30) 는 결정된 칼럼 및 결정된 y-좌표에 기초하여 하나 이상의 레퍼런스 샘플들의 일 레퍼런스 샘플을 결정할 수 있다.
결정된 칼럼에서의 y-좌표를 결정하기 위하여, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 각도 인트라 예측 모드의 각도의 (예를 들어, 인접하는 저부-좌측 대각선 모드에 대해) 코탄젠트 또는 (예를 들어, 인접하는 상부-우측 대각선 모드에 대해) 탄젠트 중 하나를 결정할 수 있다. 비디오 인코더 (22) 및 비디오 디코더 (30) 는 각도 인트라 예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나, 예측 샘플의 x-좌표 및 예측 샘플의 y-좌표에 기초하여 결정된 칼럼에서 y-좌표를 결정할 수 있다. 실례로, 인접하는 상부-우측 대각선 각도 인트라 예측 모드에 대해, 결정된 칼럼에서의 y-좌표는 y’ + tan(α) × (x’ + 1) 와 같고, 인접하는 저부-좌측 대각선 모드에 대해, 결정된 칼럼에서의 y-좌표는 y’ + cotan(β) × (x’ + 1) 과 같고, 여기서, x’ 및 y’ 는 수정되고 있는 예측 샘플의 x 및 y-좌표들이다.
결정된 x 및 y-좌표들에 기초하여, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 레퍼런스 샘플들 (예를 들어, 결정된 로우 및 결정된 x-좌표에 기초하여 제 1 레퍼런스 샘플 및 결정된 칼럼 및 결정된 y-좌표에 기초하여 제 2 레퍼런스 샘플) 을 결정할 수 있다. 또한, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 인접하는 대각선 모드들 (예를 들어, 2 개의 예들로서 인접하는 상부-우측 대각선 모드 및 인접하는 저부-좌측 대각선 모드) 에 대한 위의 예시의 기법들에 따라 가중치들을 결정할 수 있다. 그 다음, (비제한적인 일례로서) 식 1 에 기초하여, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 수정된 예측 샘플 (예를 들어, pred(x,y)) 을 결정할 수 있다.
상술된 바와 같이, PDPC 는 복잡성에 대한 최소 영향으로 각도 인트라-예측 모드들에 적용될 수 있다. 실제 구현에서, 각도의 탄젠트 및 코탄젠트의 값들은 테이블들에 저장될 수 있어, 그것들이 온 더 플라이로 (예를 들어, 런-타임으로) 계산되지 않게 한다. 다음은 전체적으로 129 개의 각도 모드들에 대한 예시의 테이블들이다:
TanAngTable[33] = {0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 49, 52, 55, 58, 61, 64}.
CotanAngTable[33] = {0, 65536, 32768, 21845, 16384, 13107, 10923, 8192, 6554, 5461, 4681, 4096, 3641, 3277, 2979, 2731, 2521, 2341, 2185, 2048, 1928, 1820, 1725, 1638, 1560, 1489, 1425, 1337, 1260, 1192, 1130, 1074, 1024}.
탄젠트 테이블에서의 값들은 인트라-예측 모드를 이용하여 발견되는 샘플의 로케이션을 나타낸다. 코탄젠트 테이블에서의 값은 탄젠트 테이블에서의 대응하는 값에 따른 PDPC 레퍼런스 샘플의 로케이션을 나타낸다. 예를 들어, (인트라-예측 샘플의 로케이션을 나타내는) 탄젠트 테이블에서의 제 1 엔트리는 (PDPC 레퍼런스 샘플의 로케이션을 나타내는) 코탄젠트 테이블에서의 제 1 엔트리에 대응한다.
또한 테이블들은 블록들의 각도 인트라 예측에 의해 이미 채택될 수도 있고 대각선 및 인접 모드들 (예를 들어, 각도 인트라 예측 모드들) 로의 PDPC 확장을 위해 재사용될 수 있다. 따라서, 추가적인 테이블들은 PDPC 의 구현에 요구되지 않을 수도 있다. 일부 예들에서, 커스텀 테이블들은 예를 들어 트레이닝에 의해 PDPC 를 추가로 최적화하기 위하여 생성될 수 있다.
일부 비디오 코텍들에서, 인트라 예측을 위해 예측 블록을 특정하기 위해 사용되는 블록 구조는 정사각형 (폭 w = 높이 h) 에 제한되지 않는다. 직사각형 예측 블록들 (w > h 또는 w < h) 은 콘텐츠의 특성에 기초하여 코딩 효율을 증가시킬 수 있다. 이러한 직사각형 블록들에서, 인트라 예측의 방향을 도 3 에서 예시된 각도들 (예측 샘플로부터 수직 방향에 대해 현재 블록의 -135도 내지 45도 사이) 내이도록 제한하는 것은, 인트라 예측을 위해 보다 가까운 레퍼런스 샘플들보다는 더 먼 레퍼런스 샘플들이 사용되는 상황들을 초래할 수 있다.
도 5 는 보다 더 가까운 레퍼런스 샘플들보다는 더 먼 레퍼런스 샘플들이 현재 픽처 (502) 의 현재 블록 (503) 의 인트라 예측을 위해 사용되는 지향성 인트라-예측 모드의 일례를 나타내는 도이다. 현재 블록 (503) 은 샘플들의 4x8 직사각형 블록이다. 레퍼런스 샘플들 (506) 및 레퍼런스 샘플들 (508) 이 또한 도시된다. 레퍼런스 샘플들 (506) 은 현재 픽처 (502) 위의 하나 이상의 블록들의 일부일 수 있고, 레퍼런스 샘플들 (508) 은 현재 픽처 (502) 의 좌측으로 하나 이상의 블록들의 일부일 수 있다.
인트라 예측은 (pred(x’,y’) 로서 표시된 바와 같이) 예측 샘플 (504) 을 결정하기 위해 수행된다. (도 3 에서 도시된 바와 같이) 범위 -135도 내지 45도 내에 있도록 하는 인트라 예측 방향의 제한으로 인해, 보다 가까운 레퍼런스 샘플들이 사용되지 않고, 더 먼 레퍼런스 샘플들이 사용될 수도 있다. 예를 들어, 저부-좌측 대각선 모드가 예측 샘플 (504) 을 예측하기 위해 사용될 수 있고, 저부-좌측 대각선 모드의 각도 또는 방향은 화살표 (512) 에 의해 나타내어진다. 상부-우측 대각선 모드가 또한 사용될 수 있을 것이고, 그 모드의 각도 또는 방향은 화살표 (510) 에 의해 나타내어진다. 저부-좌측 대각선 모드는 예측 샘플 (504) 로부터 수직 방향에 대해 -135도 각도에 있을 수 있고, 이는 -135도 내지 45도 범위에서 사용될 수 있는 최저 저부-좌측 각도이다.
점선 화살표 (514) 는 통상적인 인트라-예측 모드들 (도 3 에서 도시된 것들) 에서 사용되는 45도 각도보다 더 큰 각도에 대응한다. 도 5 에서 도시된 바와 같이, (화살표 (512) 에 의해 나타내어진) 저부-좌측 대각선 모드를 이용하여 결정된 레퍼런스 샘플 (518) 은 (점선 화살표 (514) 에 의해 나타내어진) 더 넓은 각도 인트라-예측 모드를 이용하여 결정될 수 있을 레퍼런스 샘플 (516) 보다 예측 샘플 (504) 로부터 더 멀리 있다. 이러한 설계는 코딩 효율에 영향을 미칠 가능성이 크다. (예컨대, -135도 내지 45도 각도들 너머의) 보다 가까운 레퍼런스 샘플들이 예측을 위해 사용될 수 있도록 완화된 제한들의 범위를 가지는 것이 보다 유익할 것이다.
도 6 은 -135도 (인트라-예측 모드 2) 내지 45도 (인트라-예측 모드 66) 각도들 너머로 확장되는 인트라-예측 모드들을 포함하는, 대각선 인트라-예측 모드들의 예들을 나타내는 도이다. 예를 들어, 점선 화살표들로 나타내어진, 대각선 인트라-예측 모드들 67 내지 80 및 -1 내지 -14 은 광각 인트라-예측 모드들로서 지칭될 수 있다. 도 6 에서의 화살표들은 예측을 위해 사용되는 대응하는 레퍼런스 샘플들을 포인팅하고, 예측 방향을 나타내지 않음에 유의한다. 예측 방향은 화살표가 포인팅하는 것의 반대 방향이다. 예를 들어, 인트라-예측 모드 68 의 예측 방향은 (모드 68 에서 사용되는 레퍼런스 샘플의 근사 포지션인) 도 6 에서의 넘버 68 로부터 블록의 중간으로의 방향이다. 상기 언급된 바와 같이, PDPC 는 인트라 예측을 이용하여 결정된 예측 샘플들을 수정하기 위해 이용될 수 있다. 실례로, PDPC 를 이용하여, 비디오 인코더 (22) 및/또는 비디오 디코더 30) 는 현재 블록의 좌측에 및/또는 위의 하나 이상의 라인들에서 존재하는 레퍼런스 샘플들을 결정할 수 있고, 인트라 예측을 이용하여 결정된 예측 샘플들을 수정하기 위해 그 레퍼런스 샘플들을 사용할 수 있다. 수정된 예측 샘플들은 그 다음, 현재 블록을 인코딩하거나 디코딩하기 위해 사용될 수 있다. 하지만, 광각 인트라-예측 모드들 중 하나 이상이 사용될 때, 어떻게 PDPC 가 적용되어야하는지가 현재의 비디오 코딩 표준들로부터 명확하지 않다.
PDPC 의 사용을 -135도 (모드 2) 내지 45도 (모드 66) 의 표준 각도 밖의 각도들을 사용하는 광각 인트라-예측 모드들로 확장하기 위한 시스템들 및 기법들이 본원에 기술된다. 그 시스템들 및 기법들은 광각 인트라-예측 모드들과 함께 사용되는 PDPC 를 위한 것들과 같은 비디오 코딩 기법들에 대한 실제적 적용을 제공한다. 실례로, 예시의 기법들은 각도 인트라 예측 모드들과 함께 PDPC 를 사용하기 위한 기술적 솔루션을 제공한다. 비디오 인코더 (22) 및 비디오 디코더 (30) 가 각도 인트라 예측 모드들로 PDPC 를 수행할 수도 있는 예시의 방법들이 아래 보다 자세하게 설명된다.
하나의 예로서, 비디오 인코더 (22) 는, 비디오 데이터의 현재 블록을 획득하도록, 그리고, 현재 블록의 사이즈를 결정하도록 구성된다. 예를 들어, 현재 블록의 폭 및 높이는 현재 블록이 직사각형인지 여부를 결정하기 위해 분석될 수 있다. 일부 경우들에서, 비디오 인코더 (22) 는 현재 블록이 수직으로 배향된 블록인지 (여기서, 높이 > 폭) 또는 수평으로 배향된 블록인지 (여기서, 폭 > 높이) 인지 여부를 결정할 수 있다. 비디오 인코더 (22) 는, 현재 블록의 사이즈에 기초하여 (예컨대, 블록이 직사각형임에 기초하여) 현재 블록에 대해 광각 인트라-예측 모드가 사용될 것임을 결정할 수 있다. 광각 인트라-예측 모드는 DC, 평면, 수평, 또는 수직 인트라-예측 모드가 아니고, 예측 블록의 각각의 예측 샘플로부터 수직 방향에 대해 -135도 미만 또는 45도보다 더 큰 방향을 갖는다.
일부 경우들에서, 현재 블록의 저부-좌측으로부터 현재 블록의 상부-좌측으로 뻗는 대각선의 각도는 인트라-예측 모드의 선택에 대한 제한으로서 사용될 수 있고, 여기서, (블록의 저부-좌측 코너로부터 상부-우측 코너로의) 현재 블록의 대각선을 초과하지 않는 각도를 갖는 임의의 인트라-예측 모드가 선택될 수 있다. 인트라-예측 모드는 상술된 기법들에 기초하여 허용가능한 인트라-예측 모드들로부터 선택될 수 있다. 예를 들어, (예컨대, SAE (Sum of Absolute Errors), SAD (Sum of Absolute Differences), SATD (Sum of Absolute Transformed Differences), 또는 다른 유사한 수단에 기초하여) 인코딩될 블록과 예측 블록 사이의 잔차를 최소화하는 각각의 블록에 대한 인트라-예측 모드가 허용가능한 인트라-예측 모드들로부터 선택될 수 있다.
비디오 인코더 (22) 는, 광각 인트라-예측 모드를 기초하여 현재 블록에 대한 (복수의 예측 샘플을 포함하는) 예측 블록을 결정하도록 구성될 수 있다. 비디오 인코더 (22) 는 PDPC 를 이용하여 수정된 예측 샘플을 생성하기 위해 예측 블록의 예측 샘플을 수정하도록 구성될 수 있다. 기법들이 일 예측 샘플에 대하여 설명되지만, 예시의 기법들은 그에 제한되지 않음을 이해해야 한다. 일부 예들에서, 비디오 인코더 (22) 는 PDPC 를 이용하여 예측 블록의 다른 예측 샘플들을 수정할 수도 있다.
예측 샘플을 수정하기 위해, 비디오 인코더 (22) 는 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들 (PDPC 레퍼런스 샘플들) 을 결정할 수 있고, 그 결정된 하나 이상의 레퍼런스 샘플들에 기초하여, 수정된 예측 샘플을 생성하기 위해 예측 샘플을 수정할 수 있다. 그 하나 이상의 레퍼런스 샘플들은 선택된 광각 인트라-예측 모드의 방향 또는 각도를 이용하여 식별될 수 있다. 예를 들어, 예측 샘플이 예측 샘플 로케이션으로부터 수직 방향에 대해 각도 n 에서 현재 블록 위에 위치된 이웃하는 블록의 픽셀 로우로부터 선택되는 경우에, 제 1 PDPC 레퍼런스 샘플은 샘플 로케이션에 대해 동일한 각도 n 에서 현재 블록의 좌측으로 위치된 이웃하는 블록의 픽셀 칼럼으롭터 선택될 수 있다. 일부 예들에서, 제 2 PDPC 레퍼런스 샘플은 예측 샘플에 대해 사용된 것과 동일한 샘플 로케이션으로부터 선택될 수 있다. 일부 경우들에서, 샘플 로케이션으롭터의 값은 제 2 PDPC 레퍼런스 샘플을 획득하기 위해 필터링되거나 평활화될 수 있다. 일부 예들에서, 제 3 PDPC 레퍼런스 샘플은 현재 블록의 상부-좌측 샘플에 인접하는 이웃하는 블록에서의 샘플 로케이션 (도 4a 에서 도시된 R-1,-1 로케이션) 으로부터 선택될 수 있다. 제 1 PDPC 레퍼런스 샘플 (그리고 일부 경우들에서 제 2 및/또는 제 3 PDPC 레퍼런스 샘플들) 은 수정된 예측 샘플을 생성하기 위해 예측 블록에서 예측 샘플을 수정하기 위해 사용될 수 있다. 하나의 예시적인 예에서, 수정된 예측 샘플은, 상기 식 1 을 이용하는 등에 의해, 제 1 PDPC 레퍼런스 샘플, 제 2 PDPC 레퍼런스 샘플, 제 3 PDPC 레퍼런스 샘플, 및 예측 샘플을 계산함으로써 결정될 수 있다.
비디오 인코더 (22) 는, 수정된 예측 샘플 및 현재 블록에서의 샘플 값에 기초하여 잔차 블록에 대한 잔차 값을 결정할 수 있고, 그 잔차 값을 나타내는 정보를 시그널링할 수 있다.
또 다른 예로서, 비디오 디코더 (30) 는, 비디오 데이터의 현재 블록을 획득하도록, 그리고, 현재 블록의 사이즈를 결정하도록 구성될 수 있다. 예를 들어, 현재 블록의 폭 및 높이는 현재 블록이 직사각형인지 여부를 결정하기 위해 분석될 수 있다. 일부 경우들에서, 비디오 디코더 (30) 는 현재 블록이 수직으로 배향된 블록인지 (여기서, 높이 > 폭) 또는 수평으로 배향된 블록인지 (여기서, 폭 > 높이) 인지 여부를 결정할 수 있다. 비디오 인코더 (22) 는, 현재 블록의 사이즈에 기초하여 (예컨대, 블록이 직사각형임에 기초하여) 현재 블록에 대해 광각 인트라-예측 모드가 사용될 것임을 결정할 수 있다. 광각 인트라-예측 모드는 DC, 평면, 수평, 또는 수직 인트라-예측 모드가 아니고, 예측 블록의 각각의 예측 샘플로부터 수직 방향에 대해 -135도 미만 또는 45도보다 더 큰 방향을 갖는다.
비디오 디코더 (30) 는, 광각 인트라-예측 모드를 기초하여 현재 블록에 대해, 복수의 예측 샘플을 포함하는, 예측 블록을 결정하도록 구성될 수 있다. 비디오 디코더 (30) 는 PDPC 를 이용하여 수정된 예측 샘플을 생성하기 위해 예측 블록의 예측 샘플을 수정할 수 있다. 위와 유사하게, 기법들이 일 예측 샘플에 대하여 설명되어 있지만, 예시의 기법들은 그에 제한되지 않는다. 일부 예들에서, 비디오 디코더 (30) 는 PDPC 를 사용하여 예측 블록의 다른 예측 샘플들을 수정할 수도 있다.
예측 샘플을 수정하기 위해, 비디오 디코더 (30) 는 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하도록, 그리고, 그 결정된 하나 이상의 레퍼런스 샘플들에 기초하여, 수정된 예측 샘플을 생성하기 위해 예측 샘플을 수정하도록 구성될 수 있다. 비디오 인코더 (22) 에 대해 상기 설명된 것과 유사하게, 그 하나 이상의 레퍼런스 샘플들은 선택된 광각 인트라-예측 모드의 방향 또는 각도를 이용하여 식별될 수 있다. 예를 들어, 제 1 PDPC 레퍼런스 샘플은 샘플 로케이션에 대한 동일한 각도 n 에서 이웃하는 블록의 픽셀 칼럼 또는 로우로부터 선택될 수 있다. 일부 예들에서, 제 2 PDPC 레퍼런스 샘플은 예측 샘플에 대해 사용된 것과 동일한 샘플 로케이션 (그것의 값은 제 2 PDPC 레퍼런스 샘플을 획득하기 위해 필터링되거나 평활화된다) 으로부터 선택될 수 있고, 및/또는, 제 3 PDPC 레퍼런스 샘플은 현재 블록의 상부-좌측 샘플에 인접한 이웃하는 블록에서의 샘플 로케이션 (도 4a 에서 도시된 R-1,-1 로케이션) 으로부터 선택될 수 있다. 제 1 PDPC 레퍼런스 샘플 (그리고 일부 경우들에서 제 2 및/또는 제 3 PDPC 레퍼런스 샘플들) 은 (예컨대, 상기 식 1 을 이용하여) 수정된 예측 샘플을 생성하기 위해 예측 블록에서 예측 샘플을 수정하기 위해 사용될 수 있다. 비디오 디코더 (30) 는 또한, 수정된 예측 샘플 및 잔차 값에 기초하여 현재 블록의 샘플을 재구성하도록 구성될 수 있다.
도 7 은 광각 인트라 예측 모드로 수행되는 PDPC 의 일례를 나타내는 도이다. 현재 픽처 (702) 는 비디오 데이터의 현재 블록 (703) 과 함께 도시된다. 현재 블록 (703) 은 샘플들 (루마 및/또는 크로마 컴포넌트 샘플들, 또는 픽셀들의 블록을 구성하는 루마 및 크로마 컴포넌트 샘플들의 풀 세트) 의 4x8 직사각형 블록이다. 이웃하는 재구성된 레퍼런스 샘플들 (706) 및 이웃하는 재구성된 레퍼런스 샘플들 (708) 이 또한 도시된다. 이웃하는 레퍼런스 샘플들 (706) 은 현재 픽처 (702) 위의 하나 이상의 블록들의 일부일 수 있고, 이웃하는 레퍼런스 샘플들 (708) 은 현재 픽처 (702) 의 좌측으로 하나 이상의 블록들의 일부일 수 있다.
코딩 디바이스 (예컨대, 비디오 인코더 (22) 및/또는 비디오 디코더 (30)) 는 현재 블록 (703) 의 사이즈를 결정할 수 있고, 현재 블록 (703) 의 사이즈에 기초하여 수행할 인트라-예측 모드를 결정하거나 선택할 수 있다. 상기 설명된 바와 같이, 코딩 디바이스는 현재 블록 (703) 의 사이즈에 기초하여 현재 블록 (703) 에 대해 광각 인트라-예측 모드가 사용될 것임을 결정할 수 있다. 실례로, 광각 인트라-예측 모드는, 현재 블록이 직사각형 블록 (폭 및 높이가 상이한 사이즈들의 것임) 이라고 결정되는 경우에 사용될 수 있다. 일부 경우들에서, (블록의 저부-좌측 코너로부터 상부-우측 코너로) 현재 블록 (703) 의 대각선을 초과하지 않는 각도를 갖는 임의의 인트라-예측 모드가 현재 블록 (703) 을 예측하는데 사용하기 위해 선택될 수 있다. 일부 경우들에서, 블록 사이즈 비율들은 사용할 인트라-예측 모드를 결정하기 위해 사용될 수 있다. 실례로, 직사각형 블록의 블록 사이즈 비율은 저부-좌측으로부터 상부-우측으로의 대각선 방향을, 따라서, 예측 각도들 (또는 방향들) 의 허용되는 범위를, 결정하기 위해 사용될 수 있다.
일부 예들에서, 블록 (703) 의 대각선의 각도 밖의 (모드들 2 내지 66 을 포함하는) 인트라-예측 모드들은 허용되지 않고, 블록 (703) 의 각도 내에 있는 추가적인 광각 모드들이 코딩 디바이스에 의한 선택을 위해 이용가능하도록 만들어질 수 있다. 예를 들어, 수평으로 배향된 직사각형 블록 (703) (여기서, 폭 > 높이) 에 대해, (도 6 에서 도시된 바와 같이) 인트라-예측 모드 5 와 연관된 각도가 (저부-좌측 코너로부터 상부-우측 코너로) 블록 (703) 의 대각선의 각도인 경우에, 모드들 2, 3, 및 4 은 허용되지 않을 수 있고, (현재 블록 (703) 에서 각각의 샘플 로케이션으롭터 수직 방향에 대해 45° 보다 더 큰 각도들을 갖는) 추가적인 모드들 67, 68, 및 69 이 현재 블록 (703) 의 예측 블록의 하나 이상의 예측 샘플들을 예측하기 위해 이용가능하도록 만들어질 수 있다.
다양한 이용가능한 인트라-예측 모드들의 분석에 기초하여 (예컨대, 블록 사이즈 비율들에 기초하여, SAE 또는 상기 언급된 다른 유사성 수단에 기초하여, 또는 다른 적합한 분석을 이용하여), 코딩 디바이스는 현재 블록 (703) 의 샘플 로케이션에 대해 인트라 예측을 수행하기 위해 광각 인트라-예측 모드 (예컨대, 광각 인트라-예측 모드 67, 68, 또는 69) 를 선택할 수 있다. 도 7 에서의 화살표 (710) 는 선택된 광각 인트라-예측 모드의 예측 방향 (또는 예측 각도) 을 나타내고, (pred(x’,y’) 로서 표시된) 예측 샘플 (704) 의 인트라 예측을 우해 사용되는 레퍼런스 샘플 (712) 로부터 기원한다. 도 7 에 예시된 광각 인트라-예측 모드는 인접하는 대각선 저부-좌측 모드이다 (예컨대, 도 6 으로부터의 광각 인트라-예측 모드 69).
선택된 광각 인트라-예측 모드를 이용하여, 예측 샘플 (704) (pred(x’,y’)) 은 현재 블록 (703) 의 예측 블록에서 저부-우측 샘플 로케이션에 대해 결정될 수 있다. 예를 들어, 이웃하는 레퍼런스 샘플들 (708) 로부터의 샘플 (712) 의 값은 선택된 광각 인트라-예측 모드의 (화살표 (710) 에 의해 표시된) 방향에 기초하여 예측 샘플 (704) 에 대한 값으로서 선택될 수 있다. 일부 경우들에서, 동일한 광각 인트라-예측 모드가 예측 블록의 각각의 예측 샘플에 대해 사용될 수 있다. 일부 경우들에서, (광각 모드들을 포함하는) 상이한 인트라-예측 모드가 예측 블록의 상이한 예측 샘플들에 대해 사용될 수 있다.
코딩 디바이스는 그 다음에, 예측 샘플 (704) 의 값을 수정하기 위해 사용될 하나 이상의 PDPC 레퍼런스 샘플들을 결정하기 위해 PDPC 를 수행할 수 있다. 그 하나 이상의 PDPC 레퍼런스 샘플들은 선택된 광각 인트라-예측 모드의 (화살표 (710) 에 의해 표현된) 방향을 이용하여 식별될 수 있다. 예를 들어, 상기 언급되고 도 7 에서 도시된 바와 같이, 현재 블록 (703) 위에 위치된 레퍼런스 샘플들 (708) 의 로우로부터의 샘플 (712) 이 예측 샘플 (704) (pred(x’,y’)) 로서 선택된다. 예측 샘플 (704) (pred(x’, y’)) 은 예측 블록 내의 로케이션 (x’, y’) 에 위치된다. (R(-1,y) 로서 표시된) 제 1 PDPC 레퍼런스 샘플 (714) 은 현재 블록 (703) 의 좌측으로 그리고 광각 인트라-예측 모드의 (화살표 (710) 에 의해 정의된) 동일한 예측 방향을 따라 위치된 레퍼런스 샘플들 (706) 의 칼럼으로부터 선택된다. 도 7 에서 도시된 (또한 도 3 에서 도시된) 각도 β 에 대해, 레퍼런스 샘플 R(-1,y) 의 y-좌표는 y = y’ + cotan(β) × (x’ + 1) 로서 결정되고, cotan(β) 는 각도 β 의 코탄젠트이다. 코탄젠트 값들의 예들은 이하에서 설명된다.
일부 구현들에서, (R(x,-1) 로서 표시된) 제 2 PDPC 레퍼런스 샘플은 예측 샘플 (704) 에 대해 사용된 것과 동일한 샘플 로케이션 (712) 으로부터 또한 선택될 수 있다. 이러한 예에서, 동일한 샘플 값 (샘플 (712) 의 값) 이 예측 샘플 (704) 에 대해 그리고 제 2 PDPC 레퍼런스 샘플 R(x,-1) 에 대해 사용될 수 있고, 이 경우에, 예측 샘플 (704) (pred(x’,y’)) 은 제 2 PDPC 레퍼런스 샘플 R(x,-1) 과 동일하다. 도 7 에서 도시된 각도 β 에 대해, R(x,-1) 의 x-좌표는 x = x’ + tan(β) × (y’ + 1) 에 의해 주어지고, 여기서, tan(β) 는 각도 β 의 탄젠트이다. 탄젠트 값들의 예들은 이하에서 설명된다.
일부 경우들에서, 샘플 (712) 의 값은 제 2 PDPC 레퍼런스 샘플 R(x,-1) 을 획득하기 위해 필터링되거나 평활화될 수 있고, 이 경우에 제 2 PDPC 레퍼런스 샘플 R(x,-1) 의 값은 예측 샘플 (704) 의 값과는 상이할 것이다. 상기 언급된 바와 같이, 예측 샘플 (704) (pred(x’,y’)) 은 제 2 레퍼런스 샘플 R(x,-1) 샘플이 필터링되지 않는 경우에 R(x,-1) 과 동일하다. 일부 예들에서, 레퍼런스 샘플 값은 인트라 레퍼런스 평활화, 모드-종속 인트라 평활화 (MDIS), 레퍼런스 샘플 적응적 필터링 (RSAF), 적응적 레퍼런스 샘플 평활화 (ARSS), 및/또는 다른 필터링 기법을 이용하여 필터링될 수 있다. 실례로, 2-탭 바이리니어 필터, 3-탭 [1,2,1]/4 평활화 필터, 또는 다른 필터가 사용될 수 있다.
하나의 예시적인 예에서, 샘플 (712) 의 값은 [1 2 1] 평활화 필터 (또는 다른 필터) 에 의해 필터링될 수 있고, 필터링된 값은 제 2 PDPC 레퍼런스 샘플 R(x,-1) 로서 사용될 수 있다. 일례로서 3-탭 [1 2 1]/4 평활화 필터를 이용하면, 최외각 레퍼런스 샘플들 p[-1][2N - 1] 및 p[2N - 1][-1] 은 수정되지 않고 (여기서, N 은 x- 및/또는 y-방향에서의 샘플들의 수이다), 모든 다른 레퍼런스 샘플들은 2 개의 이웃하는 레퍼런스 샘플들을 이용함으로써 필터링된다. 이하에서 보다 자세히 설명되는 바와 같이, 필터의 탭들의 수는 선택되는 특정 인트라-예측 모드에 기초하여, 블록의 사이즈에 기초하여, 하나 이상의 이웃하는 블록들의 특성들에 기초하여, 이들의 임의의 조합, 및/또는, 다른 팩터들을 이용하여 적응될 수도 있다.
일부 구현들에서, (R(-1,-1) 로서 표시된) 제 3 PDPC 레퍼런스 샘플 (716) 은 현재 블록 (703) 의 상부-좌측 샘플에 인접하는 이웃하는 블록으로부터 선택될 수 있다. 제 1 PDPC 레퍼런스 샘플 (714) (R(- 1,y )), 제 2 PDPC 레퍼런스 샘플 R(x,-1), 및 제 3 PDPC 레퍼런스 샘플 (716) (R(-1,-1)) 은 (pred(x,y)) 로서 표시될 수 있는 수정된 예측 샘플을 생성하기 위해 예측 샘플 (704) (pred(x’,y’)) 을 수정하기 위해 사용될 수 있다. 예를 들어, 상기로부터의 식 1 을 이용하여, 수정된 예측 샘플 pred(x,y) 은 제 1 PDPC 레퍼런스 샘플 (714), 제 2 PDPC 레퍼런스 샘플 R(x,-1), 제 3 PDPC 레퍼런스 샘플 (716), 및 예측 샘플 pred(x’,y’) 의 가중된 조합을 계산함으로써 결정될 수 있다. 가중치들은 상기 설명된 기법들을 이용하여 결정될 수 있다. 예를 들어, 인접하는 저부-좌측 대각선 모드에 대한 PDPC 가중치들은, 예를 들어: wL = 32 >> ( ( x’<<1 ) >> shift ), wT = 32 >> ( ( y’<<1 ) >> shift ), wTL = 0 또는 wL = 32 >> ( ( x’<<1 ) >> shift ), wT =0, wTL = 0 이다.
PDPC 레퍼런스 샘플 R(x,-1) (도 7 에서의 제 2 PDPC 레퍼런스 샘플) 을 결정하기 위해, 코딩 디바이스는 현재 블록 위 (예컨대, 현재 블록 (703) 바로 위 또는 다수의 로우들 위) 에 있는 로우를 결정할 수 있고, 결정된 로우에서의 x-좌표를 결정할 수 있다. 상기 언급된 바와 같이, 결정된 로우에서의 x-좌표는 광각 인트라-예측 모드의 방향 (또는 각도) 에 기초하고, 코딩 디바이스는 결정된 로우 및 결정된 x-좌표에 기초하여 레퍼런스 샘플을 결정할 수 있다.
결정된 로우에서의 x-좌표를 결정하기 위하여, 코딩 디바이스는 광각 인트라 예측 모드의 각도의 (예를 들어, 인접하는 상부-우측 대각선 모드에 대해) 코탄젠트 또는 (예를 들어, 인접하는 저부-좌측 대각선 모드에 대해) 탄젠트 중 하나를 결정할 수 있다. 코딩 디바이스는 광각 인트라 예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나, 예측 샘플의 x-좌표, 및 예측 샘플의 y-좌표에 기초하여, 결정된 로우에서 x-좌표를 결정할 수 있다. 하나의 예에서, (예컨대, 도 7 에서 도시된 바와 같이) 인접하는 저부-좌측 대각선 광각 인트라-예측 모드에 대해, 결정된 로우에서의 x-좌표는 x = x’ + tan(β) × (y’ + 1) 와 동일하다. 다른 예에서, 인접하는 상부-우측 대각선 모드에 대해, 결정된 로우에서의 x-좌표는 x = x’ + cotan(α) × (y’ + 1) 와 동일하다. 여기서, x’ 및 y’ 은 수정되고 있는 예측 샘플의 x 및 y-좌표들이다.
유사하게, PDPC 레퍼런스 샘플 R(- 1,y ) (도 7 에서의 제 1 PDPC 레퍼런스 샘플 (714)) 을 결정하기 위해, 코딩 디바이스는 현재 블록 좌측 (예컨대, 현재 블록 (703) 바로 좌측 또는 다수의 칼럼들 좌측) 에 있는 칼럼을 결정할 수 있고, 결정된 칼럼에서의 y-좌표를 결정할 수 있다. 상기 언급된 바와 같이, 결정된 칼럼에서의 y-좌표는 광각 인트라 예측 모드의 방향에 기초한다. 코딩 디바이스는 결정된 칼럼 및 결정된 y-좌표에 기초하여 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정할 수 있다.
결정된 칼럼에서의 y-좌표를 결정하기 위하여, 코딩 디바이스는 각도 인트라 예측 모드의 각도의 (예를 들어, 인접하는 저부-좌측 대각선 모드에 대해) 코탄젠트 또는 (예를 들어, 인접하는 상부-우측 대각선 모드에 대해) 탄젠트 중 하나를 결정할 수 있다. 코딩 디바이스는 광각 인트라 예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나, 예측 샘플의 x-좌표, 및 예측 샘플의 y-좌표에 기초하여, 결정된 칼럼에서 y-좌표를 결정할 수 있다. 실례로, 인접하는 상부-우측 대각선 각도 인트라 예측 모드에 대해, 결정된 칼럼에서의 y-좌표는 y’ + tan(α) × (x’ + 1) 와 같고, 인접하는 저부-좌측 대각선 모드 (예컨대, 도 7 로부터의 예) 에 대해, 결정된 칼럼에서의 y-좌표는 y’ + cotan(β) × (x’ + 1) 와 같고, 여기서, x’ 및 y’ 는 수정되고 있는 예측 샘플의 x 및 y-좌표들이다.
결정된 x 및 y-좌표들에 기초하여, 코딩 디바이스는 PDPC 레퍼런스 샘플 레퍼런스 샘플들 (예를 들어, 결정된 로우 및 결정된 x-좌표에 기초하여 제 1 PDPC 레퍼런스 샘플 및 결정된 칼럼 및 결정된 y-좌표에 기초하여 제 2 PDPC 레퍼런스 샘플) 을 결정할 수 있다. 또한, 코딩 디바이스는 인접하는 대각선 모드들 (예를 들어, 2 개의 예들로서, 인접하는 상부-우측 대각선 모드 및 인접하는 저부-좌측 대각선 모드) 에 대한 위의 예시의 기법들에 따라 가중치들을 결정할 수 있다. 그 다음, (비제한적인 일례로서) 식 1 에 기초하여, 코딩 디바이스는 수정된 예측 샘플 (예를 들어, pred(x,y)) 을 결정할 수 있다.
상술된 바와 같이, PDPC 는 복잡성에 대한 최소 영향으로 각도 인트라-예측 모드들에 적용될 수 있다. 실제 구현에서, 각도들의 탄젠트들 (예컨대, tan(α) 및/또는 tan(β)) 및 코탄젠트들 (예컨대, cotan(α) 및/또는 cotan(β)) 의 값들은 테이블들에 저장될 수 있어, 이들이 온 더 플라이로 (예를 들어, 런-타임으로) 계산되지 않게 한다. 다음은 (광각 모드들을 포함하는) 다양한 각도 모드들에 대한 예시적인 테이블들이다:
TanAngTable[32] = { 0, 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 23, 26, 29, 32, 35, 39, 45, 51, 57, 64, 73, 86, 102, 128, 171, 256, 341, 512, 1024 }.
CotanAngTable[32] = { 0, 8192, 4096, 2731, 2048, 1365, 1024, 819, 683, 585, 512, 455, 410, 356, 315, 282, 256, 234, 210, 182, 160, 144, 128, 112, 95, 80, 64, 48, 32, 24, 16, 8 }; // (256 * 32) / Angle.
탄젠트 테이블 “TanAngTable[32]” 에서의 값들은 인트라-예측 모드를 이용하여 발견되는 샘플의 로케이션을 나타낸다. 탄젠트 테이블 값들은 32 의 값에 의해 정규화된다. 예를 들어, 도 6 을 참조하면, 모드 66 은 1 의 기울기로 (블록의 중앙으로부터 수직 방향에 대해) 45 도에 있고, 상부-우측으로부터 저부-좌측으로 예측하고 있다 (상부-우측으로부터의 샘플 값은 도 6 에서 블록의 중앙에서 샘플에 대한 예측 샘플 값으로서 사용된다). 탄젠트 테이블에서의 “32” 의 값은 도 6 에서 도시된 모드 66 에 대응한다. 탄젠트 테이블에서의 “0” 의 값은 도 6 에서 도시된 수직 모드 (모드 50) 에 대응한다. “1024” 의 값은 도 6 에서의 모드 80 에 대응한다.
코탄젠트 테이블 “CotanAngTable[32]” 에서의 값은 탄젠트 테이블에서의 대응하는 값에 따른 PDPC 레퍼런스 샘플의 로케이션을 나타낸다. 코탄젠트 테이블 값들은 256 의 값에 의해 정규화된다. 예를 들어, (인트라-예측 샘플의 로케이션을 나타내는) 탄젠트 테이블에서의 제 1 엔트리는 (PDPC 레퍼런스 샘플의 로케이션을 나타내는) 코탄젠트 테이블에서의 제 1 엔트리에 대응한다. 도 7 을 참조하는 하나의 예에서, 예측 샘플 (704) 이, 탄젠트 테이블에서 35 의 탄젠트 테이블 값 (탄젠트 테이블에서 18번째 포지션) 을 가질 수 있는 레퍼런스 샘플 (712) 을 이용하여 결정되는 경우에, 제 2 PDPC 샘플 (714) 은 234 의 코탄젠트 테이블 값 (코탄젠트 테이블에서의 18번째 포지션) 에 대응할 수 있다. 코탄젠트는
Figure pct00001
에 대응한다. 상기 언급된 바와 같이, 탄젠트 테이블에서의 “0” 의 값은 도 6 에서 도시된 수직 모드 (모드 50) 에 대응한다. 수직 모드 50 의 반대편에는 아무 것도 없음에 유의한다. 모드 51 에 대해, 모드 -14 인 반대편 모드가 존재한다. 모드 51 은 탄젠트 테이블에서의 값 “1” 에 대응한다.
도 7 과 관련하여 상기 설명된 예 (및 도 8 과 관련하여 이하에서 설명되는 예) 는 인접하는 상부-우측 광각 인트라-예측 모드들에 대한 것이다. 인접하는 상부-우측 광각 인트라-예측 모드들은 PDPC 가 적용될 수 있는 예시적인 광각 인트라 모드로서 제공된다. 예시적인 기법들은, 하나 이상의 인접하는 저부-좌측 광각 인트라-예측 모드들 또는 다른 광각 모드들과 같은 다른 각도 모드들에도 역시 확장될 수도 있다. 또한, 일부 예들에서, 하나 이상의 레퍼런스 샘플들은 예측 블록에서의 예측 샘플의 x- 및 y-좌표와는 상이한 x- 및 y-좌표 양자를 가질 수 있다. 실례로, 레퍼런스 샘플들을 결정하기 위해 개별적인 로우들 및 칼럼들에서의 x 및 y 좌표들을 결정하기 위한 상기 예시의 식들에서, x-좌표는 수정되고 있는 예측 샘플의 x-좌표와 상이할 수 있고, y-좌표는 수정되고 있는 예측 샘플의 y-좌표와 상이할 수 있다. 이러한 경우들에서, 레퍼런스 샘플들은 수정되고 있는 예측 샘플과 동일한 로우 및 동일한 칼럼에 있지 않을 수도 있다.
DC, 평면, 수평 및 수직 모드 PDPC 에 대한 경우처럼, PDPC 가 이들 각도 모드들로 확장될 때 대각선 및 인접하는 대각선 모드들에 대해, 예를 들어, ‘J. Chen, E. Alshina, G. J. Sullivan, J.-R. Ohm, J. Boyce, “Algorithm description of Joint Exploration Test Model 7,” 7th JVET Meeting, Torino, Italy, July 2017, JVET-G1001 에서 규정된 바와 같이, 추가적인 바운더리 필터링이 없을 수도 있다.
일부 경우들에서, 모든 수평 각도 모드들은 저부-우측 대각선 주위에 블록을 플립하는 것에 의해 수직 모드들에 맵핑된다. 수직 모드 주위로의 대칭은 TanAngTable 및 CotanAngTable 각각에서 저장된 탄젠트 및 코탄젠트 값들로 각도들의 수가 33 으로 추가로 감소되도록 허용한다. 예를 들어, 상술된 바와 같이, 탄젠트 테이블에서의 “0” 의 값은 도 6 에서 도시된 수직 모드 (모드 50) 에 대응한다. 수직 모드 주위로의 대칭에 기초하여, “0” 의 값은 또한 도 6 에서의 수평 모드 (모드 18) 에 대응할 수 있다. 요구되는 정수 정밀도로 인해, 양쪽 테이블들에서의 값들은 TanAngTable 의 경우 인수 64 에 의해, CotanAngTable 의 경우에 값 1024 에 의해 스케일링된다. 좌표들 x 및 y 를 계산하기 위한 상기 식들에서의 곱셈들은 예측 블록을 가로지르는 동안 증가하는 x’ 및 y’ 과 함께 각도 모드와 대응하는 테이블 값들을 누산함으로써 회피된다.
일부 경우들에서, 광각 인트라-예측 모드의 방향 (또는 각도) 에 의해 식별된 PDPC 레퍼런스 샘플은 정수 레퍼런스 샘플 포지션에 대응하지 않을 수도 있고, 대신에, 분수 포지션 (예컨대, 정수 포지션들에서의 2 개의 샘플들 사이) 에 대응할 수도 있다. 도 8 은 광각 모드로 수행되는 PDPC 의 다른 예를 나타내는 도이다. 현재 픽처 (802) 는 샘플들의 4x8 직사각형 블록인 현재 블록 (803) 을 포함한다. 도 7 에서의 것과 유사하게, 이웃하는 재구성된 레퍼런스 샘플들 (806) 및 이웃하는 재구성된 레퍼런스 샘플들 (808) 이 또한 도시되고, 이는 현재 픽처 (802) 의 위 및 좌측 각각의 하나 이상의 블록들의 일부일 수 있다.
코딩 디바이스 (예컨대, 비디오 인코더 (22) 및/또는 비디오 디코더 (30)) 는 현재 블록 (803) 의 사이즈를 결정할 수 있고, 현재 블록 (803) 의 사이즈에 기초하여 수행할 인트라-예측 모드를 선택할 수 있다. 광각 인트라-예측 모드는 현재 블록이 직사각형 블록이라는 결정에 기초하여 사용될 수 있다. 실례로, 도 7 과 관련하여 상기 설명된 것과 유사하게, 다양한 이용가능한 인트라-예측 모드들의 분석에 기초하여 (예컨대, 상기 언급된 SAE 또는 다른 유사한 수단에 기초하여), 코딩 디바이스는 현재 블록 (803) 의 샘플 로케이션에 대한 인트라 예측을 수행하기 위해 광각 인트라-예측 모드 (예컨대, 광각 인트라-예측 모드 -2, -3, 또는 -4) 를 선택할 수 있다. 도 8 에서의 화살표 (810) 는 선택된 광각 인트라-예측 모드의 예측 방향을 나타내고, (pred(x’,y’) 로서 표시된) 예측 샘플 (804) 의 인트라 예측을 우해 사용되는 레퍼런스 샘플 (814) 로부터 기원한다. 도 8 에 예시된 광각 인트라-예측 모드는 인접하는 대각선 상부-우측 대각선 모드이다 (예컨대, 도 6 으로부터의 광각 인트라-예측 모드 -3).
선택된 광각 인트라-예측 모드의 (화살표 (810) 에 의해 나타내어진) 방향을 이용하여, 이웃하는 레퍼런스 샘플들 (806) 로부터의 샘플 (814) 의 값이 현재 블록 (803) 의 예측 블록에서 (pred(x', y’) 로서 표시된) 예측 샘플 (804) 에 대한 값으로서 선택될 수 있다. 코딩 디바이스는 그 다음에, 예측 샘플 (804) 의 값을 수정하기 위해 사용될 하나 이상의 PDPC 레퍼런스 샘플들을 결정할 수 있다. 실례로, 상기 설명된 것들과 유사한 기법들을 이용하여, (R(x,-1) 로서 표시된) 제 1 PDPC 레퍼런스 샘플, 그리고 일부 경우들에서, (R(-1,y) 로서 표시된) 제 2 PDPC 레퍼런스 샘플 및/또는 (R(-1,-1) 로서 표시된) 제 3 PDPC 레퍼런스 샘플 (816) 이 결정될 수 있다. 제 3 PDPC 레퍼런스 샘플 (816) (R(-1,-1)) 은 현재 블록 (803) 의 상부-좌측 샘플에 인접하는 이웃하는 블록으로부터 선택될 수 있다.
예측 샘플 (804) (pred(x’, y’)) 은 예측 블록 내의 로케이션 (x’, y’) 에 위치된다. 제 1 PDPC 레퍼런스 샘플 R(x,-1) 은 현재 블록 (803) 의 위에 그리고 광각 인트라-예측 모드의 (화살표 (810) 에 의해 정의된) 동일한 예측 방향을 따라 위치된 레퍼런스 샘플들 (808) 의 로우로부터 선택된다. 도 8 에서 도시된 (또한 도 3 에서 도시된) 각도 α 에 대해, 레퍼런스 샘플 R(x,-1) 의 x-좌표는 x = x’ + cotan(α) × (y’ + 1) 로서 결정되고, cotan(α) 는 각도 α 의 코탄젠트이다. 코탄젠트 값들의 예들은 상기 설명되었다.
제 2 PDPC 레퍼런스 샘플 (R(- 1,y )) 은 예측 샘플 (804) 에 대해 사용된 것과 동일한 샘플 로케이션 (814) 으로부터 또한 선택될 수 있다. 이러한 예에서, 동일한 샘플 값 (샘플 (814) 의 값) 이 예측 샘플 (804) 에 대해 그리고 제 2 PDPC 레퍼런스 샘플 R(- 1,y ) 에 대해 사용될 수 있고, 이 경우에, 예측 샘플 (804) (pred(x’,y’)) 은 제 2 PDPC 레퍼런스 샘플 R(- 1,y ) 과 동일하다. 상기 언급된 바와 같이, 샘플 (814) 의 값은 제 2 PDPC 레퍼런스 샘플 R(- 1,y ) 을 획득하기 위해 필터링되거나 평활화될 수 있고, 이 경우에 제 2 PDPC 레퍼런스 샘플 R(-1,y) 의 값은 예측 샘플 (804) 의 값과는 상이할 것이다. 도 8 에서 도시된 각도 α 에 대해, R(-1,y) 의 y-좌표는 y = y’ + tan(α) × (x’ + 1) 에 의해 주어지고, 여기서, tan(α) 는 각도 α 의 탄젠트이다. 탄젠트 값들의 예들은 상기 설명되었다.
제 1 PDPC 레퍼런스 샘플 R(x,-1), 제 2 PDPC 레퍼런스 샘플 R(- 1,y ), 및 제 3 PDPC 레퍼런스 샘플들 (816) (R(-1,-1)) 은 예측 샘플 pred(x’,y’) 및 PDPC 레퍼런스 샘플들의 가중된 조합을 (예컨대, 상기 식 1 을 이용하여) 계산하는 등에 의해, (pred(x,y)) 로서 표시된, 수정된 예측 샘플을 생성하기 위해 예측 샘플 (804) (pred(x’,y’)) 을 수정하기 위해 사용될 수 있다. 예를 들어, 인접하는 상부-우측 대각선 모드에 대한 PDPC 가중치들은 예를 들어: wT = 32 >> ( ( y’<<1 ) >> shift ), wL = 32 >> ( ( x’<<1 ) >> shift ), wTL = 0 또는 wT = 32 >> ( ( y’<<1 ) >> shift ), wL = 0, wTL = 0 이다.
도 8 에서 도시된 바와 같이, 제 1 PDPC 레퍼런스 샘플 R(x,-1) 은 정수 레퍼런스 샘플 포지션에 대응하지 않고, 대신에, 정수 포지션들에 각각 있는 2 개의 샘플들 (812) 사이의 분수 포지션에 있다. 이러한 경우에서, PDPC 레퍼런스 샘플 R(x,-1) 은 2 개의 레퍼런스 샘플들 (812) 에 기초하여 보간될 수 있다. 예를 들어, 선형 또는 큐빅 보간 또는 최근접 이웃 라운딩에 의한 레퍼런스 샘플들 (812) 의 보간은 분수 값들이 계산되는 경우에 사용될 수도 있다. 일부 경우들에서, 보간은 보간 필터를 이용하여 수행될 수 있다. 실례로, 보간 필터는 2 개의 레퍼런스 샘플들 (812) 사이에 선형 보간을 적용할 수 있다. 일부 경우들에서, 보간 필터, 및 PDPC 레퍼런스 샘플을 획득하기 위해 사용되는 보간 필터에 대해 사용되는 탭들의 수는 인트라-예측 모드, 블록의 사이즈 (예컨대, 폭 및 높이), 하나 이상의 이웃하는 블록들의 특성들 (예컨대, 이웃하는 블록이 인트라 예측을 이용하여 코딩되는지 여부), 이들의 임의의 조합에 의존하고/거나, 다른 팩터들에 기초할 수 있다. 하나의 예시적인 예에서, 6-탭 가우시안 필터가 45 도 너머의 모드들 및 특정 블록 사이즈들에 대한 보간을 위해 사용될 수도 있고, 4-탭 가우시안 필터가 -135도 너머의 모드들 및 다른 블록 사이즈들에 대해 사용될 수도 있다.
보간은 분수 (비-정수) 포지션에 있는 PDPC 레퍼런스 샘플을 결정하는 하나의 예시적인 예이다. 일부 예들에서, 코딩 디바이스 (예컨대, 비디오 인코더 (22) 및/또는 비디오 디코더 (30)) 는 보간, 오프셋을 갖는 라운딩, 또는 오프셋이 없는 라운딩 중 적어도 하나를 수행할 수 있다. 코딩 디바이스는 하나 이상의 레퍼런스 샘플들을 생성하기 위해 하나 이상의 샘플들의 세트에서 이웃하는 샘플들에 기초하여 오프셋이 있거나 또는 없이 이러한 라운딩을 수행할 수 있다.
일부 예들에서, 클립핑 (clipping) 은 큰 좌표 값들이 계산되는 경우에 레퍼런스 라인 버퍼 바운더리들 외부에 있는 레퍼런스 샘플들의 액세스를 방지하기 위해 요구될 수도 있다. 클립핑이 수행되는 경우, 마지막 이용가능한 레퍼런스 샘플이 사용될 수도 있거나 또는 PDPC 가 각도 인트라 예측만으로 폴백할 수도 있고, 이는 예를 들어, 식 1 에서의 wL, wT, wTL 에 대한 제로 가중치들을 적용하는 것과 등가이다. 실례로, 각도 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하기 위해, 코딩 디바이스는, 각도 인트라-예측 모드에 기초하여 식별된 현재 블록에 대해 외부에 있는 하나 이상의 샘플들이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하도록 구성될 수 있고, 그리고, 레퍼런스 라인 버퍼에 저장된 최종 레퍼런스 샘플에 기초하여 하나 이상의 레퍼런스 샘플들을 결정할 수 있다.
일부 예들에서, 레퍼런스 라인 버퍼에서의 최종 샘플을 사용하기 보다는, PDPC 는 현재 블록에 대해 디스에이블될 수도 있거나 또는 PDPC 는 특정 예측된 샘플들에 대해 디스에이블될 수도 있어, 정규의 인트라 예측 (예를 들어, 수정된 예측 샘플들 없이) 이 사용되게 된다. 일례로서, 예측 블록에서의 예측 샘플에 대해, 코딩 디바이스는 제 1 레퍼런스 샘플이 레퍼런스 버퍼에 이용가능하지만 제 2 레퍼런스 샘플이 레퍼런스 버퍼에 이용가능하지 않다고 결정할 수 있다. 이 예에서, 코딩 디바이스는 PDPC 가 예측 샘플에 대해 디스에이블된다고 결정할 수 있다. 그러나, 일부 예들에서, 코딩 디바이스는 PDPC 에 대해 제 1 레퍼런스 샘플을 활용할 수 있고 (예를 들어, 제 2 레퍼런스 샘플에 대한 가중치를 제로와 동일하게 설정하는 것에 의해) 제 2 레퍼런스 샘플을 활용하지 않을 수 있다.
일부 예들에서, 상기 언급된 바와 같이, PDPC 필터링을 위해 사용되는 레퍼런스 샘플들은 필터 (예컨대, [1 2 1] 필터 또는 더 강력한 필터) 에 의해 필터링 (또는 평활화) 될 수도 있다. 탭들의 수는 특정 모드, 블록의 사이즈 (예컨대, 폭 및 높이), 하나 이상의 이웃하는 블록들의 특성들, 이들의 임의의 조합에 기초하여, 및/또는, 다른 팩터들에 기초하여 적응될 수도 있다. 예를 들어, 인트라 모드가 광각 예측 모드를 나타내는 경우에, PDPC 레퍼런스 샘플들을 획득하기 위해 레퍼런스 샘플들에 대해 더 강력한 필터가 적용될 수도 있다. 일부 예들에서, 긴 인트라-예측 거리들에 대해, 평활화 필터링이 적용될 수 있고, 이는 일부 노이즈를 제거하고 보다 양호한 예측을 초래할 수 있다.
일부 경우들에서, 레퍼런스 필터링을 위해 사용되는 필터 및/또는 보간 필터링을 위해 사용되는 필터는 (현재 블록의 좌측에) 수직 레퍼런스 샘플들 및 (현재 블록 위에) 수평 레퍼런스 샘플들에 대해 상이할 수도 있다. 몇몇 대안들에서, 상이한 필터들을 사용하도록 하는 결정은 블록의 사이즈 (예컨대, 폭 및 높이), 예측을 위해 사용되는 인트라 모드, 하나 이상의 이웃하는 블록들의 특성들, 이들의 임의의 조합에 의존, 및/또는, 다른 팩터들에 기초할 수도 있다.
일부 예들에서, 이웃하는 블록으로부터의 하나보다 많은 레퍼런스 라인은 인트라 예측을 위해 및/또는 PDPC 레퍼런스 샘플들을 결정하기 위해 사용될 수도 있다. 이웃하는 블록으로부터의 하나보다 많은 레퍼런스 라인이 인트라 예측을 위해 사용될 수도 있을 때, PDPC 레퍼런스 샘플들은 추가적인 레퍼런스 라인(들)에 대해 광각 인트라 예측 모드들에 대해 획득될 수도 있고, 이는 2 개 이상의 레퍼런스 라인들을 결합함으로써, 또는, 블록의 이웃으롭터 하나 이상의 레퍼런스 라인들을 선택함으로써 획득될 수도 있다.
일부 경우들에서, 광각 인트라-예측이 사용될 때, PDPC 는 블록의 사이즈, 예측을 위해 사용되는 인트라 모드, 하나 이상의 이웃하는 블록들의 특성들, 이들의 임의의 조합에 기초하여, 및/또는 다른 팩터들에 기초하여 제한될 수도 있다. 예를 들어, PDPC 는 사이즈 임계치 미만인 작은 블록들 (예컨대, 4x4 블록들과 같이 4 픽셀들 미만의 폭 및/또는 높이를 갖는 블록들) 에 대해 디스에이블될 수도 있다.
상기 설명된 바와 같이, 일부 예들에서, 코딩 디바이스는 예측 블록에서의 복수의 예측 샘플들에 대해 예시의 PDPC 기법들을 수행할 수 있다. 그러나, PDPC 기법들이 예측 샘플들의 일부에 대해 사용되지만 동일한 예측 블록에서의 다른 예측 샘플들에 대해서는 사용되지 않는 사례들이 있을 수도 있다. 예를 들어, 예측 블록에서의 제 1 예측 샘플에 대해, 코딩 디바이스 (예컨대, 비디오 인코더 (22) 및/또는 비디오 디코더 (30)) 는 본원에 기술된 PDPC 기법들을 수행할 수 있다. 그러나, 동일한 예측 블록에서의 제 2 예측 샘플에 대해, 제 2 예측 샘플에 대해 PDPC 기법들을 수행하기 위해 필요한 레퍼런스 샘플들은 레퍼런스 라인 버퍼에 저장되지 않을 수도 있다. 이 예에서, 제 2 예측 샘플에 대해, 코딩 디바이스는 PDPC 기법들을 수행하지 않을 수도 있고 정규 인트라 예측 기법들이 활용될 수도 있다. 일부 경우들에서, 제 2 예측 샘플에 대해, 레퍼런스 샘플들 중 하나가 레퍼런스 라인 버퍼에서 이용가능하고 다른 것은 이용가능하지 않은 것도 가능할 수도 있다. 일부 예들에서, 코딩 디바이스는 제 2 예측 샘플에 대해 PDPC 기법들을 수행하지 않을 수도 있거나 또는 이용가능한 레퍼런스 샘플만을 활용하고 이용가능하지 않은 레퍼런스 샘플에 적용되는 가중치들에 제로 가중치를 할당할 수도 있다.
도 9 는 본 명세서에서 설명된 기법들 중 하나 이상을 이용하여 비디오 데이터를 디코딩하는 프로세스 (900) 의 예를 나타내는 플로우차트이다. 블록 (902) 에서, 프로세스 (900) 는 비디오 데이터의 현재 블록을 획득하는 것을 포함한다. 하나의 예시적인 예에서, 비디오 데이터의 현재 블록은 도 7 에서 도시된 비디오 데이터의 블록 (703) 을 포함할 수 있다. 다른 예시적인 예에서, 비디오 데이터의 현재 블록은 도 8 에서 도시된 비디오 데이터의 블록 (803) 을 포함할 수 있다.
블록 (904) 에서, 프로세스 (900) 는 현재 블록의 사이즈를 결정하는 것을 포함한다. 일부 경우들에서, 현재 블록의 사이즈를 결정하는 것은, 블록이 직사각형 블록인 것을 나타내는, 블록의 폭 및 블록의 높이가 상이한 사이즈들임을 결정하는 것을 포함할 수 있다. 일부 경우들에서, 현재 블록의 사이즈를 결정하는 것은, 현재 블록의 대각선의 각도 또는 방향 (예컨대, 현재 블록의 저부-좌측 코너로부터 현재 블록의 상부-우측 코너로의 대각선 방향 또는 현재 블록의 상부-좌측 코너로부터 현재 블록의 저부-우측 코너로의 대각선 방향) 을 결정하는 것을 포함할 수 있다. 일부 경우들에서, 현재 블록의 블록 사이즈 비율은 (예컨대, 피타고라스의 정리 -
Figure pct00002
를 이용하여) 대각선 방향을 결정하기 위해 사용될 수 있다. 상기 언급된 바와 같이, 대각선 방향 (예컨대, 저부-좌측으로부터 상부-우측으로 또는 상부-좌측으로부터 저부-우측으로) 은 예측 방향들 (또는 각도들) 의 허용되는 범위를 결정하기 위해 사용될 수 있다.
블록 (906) 에서, 프로세스 (900) 는, 현재 블록의 사이즈에 기초하여, 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하는 것을 포함한다. 광각 인트라-예측 모드는 DC, 평면, 수평, 또는 수직 인트라-예측 모드가 아니다. 실례로, 광각 인트라-예측 모드의 각도는 예측 샘플에 대해 (예컨대, 예측 샘플로부터 수직 방향에 대해) -135도 미만이거나 (예컨대, 도 6 에서 도시된 모드들 -1, -2, -3, 내지 -14) 또는 45도보다 더 클 수 있다 (예컨대, 도 6 에서 도시된 모드들 67, 68, 69, 내지 80).
블록 (906) 의 일 예시적인 구현으로서, 코딩 디바이스 (예컨대, 비디오 데이터를 디코딩하기 위한 디바이스) 는, 현재 블록의 사이즈에 기초하여 현재 블록에 대해 광각 인트라-예측 모드가 사용될 수 있는 것을 결정할 수 있다. 실례로, 광각 인트라-예측 모드는, 현재 블록이 직사각형 블록 (폭 및 높이가 상이한 사이즈들의 것임) 이라고 결정되는 경우에 사용될 수 있다. 일부 경우들에서, (블록의 저부-좌측 코너로부터 상부-우측 코너로 또는 블록의 상부-좌측 코너로부터 저부-우측 코너로) 현재 블록의 대각선을 초과하지 않는 방향 (또는 각도) 을 갖는 임의의 인트라-예측 모드가 현재 블록을 예측함에 있어서 사용하기 위해 선택될 수 있다. 일부 경우들에서, 블록 사이즈 비율들은 사용할 인트라-예측 모드를 결정하기 위해 사용될 수 있다. 실례로, 직사각형 블록의 블록 사이즈 비율은 (예컨대, 저부-좌측으로부터 상부-우측으로의) 대각선 방향을, 그리고 따라서, 예측 방향들의 허용되는 범위를, 결정하기 위해 사용될 수 있다.
일부 예들에서, 광각 인트라-예측 모드의 표시는 비트스트림에서 시그널링될 수 있다. 일부 예들에서, (예컨대, SAE (Sum of Absolute Errors), SAD (Sum of Absolute Differences), SATD (Sum of Absolute Transformed Differences), 또는 다른 유사한 수단에 기초하여) 인코딩될 블록과 예측 블록 사이의 잔차를 최소화하는 인트라-예측 모드가 현재 블록에 대해 사용하기 위해 선택될 수 있다. 일 예시적인 예로서 SAE 를 사용하면, 인트라-예측 모드들의 각각을 이용하여 결정되는 각 예측에 대한 SAE 는 예측 에러의 크기를 나타낸다. 실제 현재 블록에 대한 최선의 매치를 갖는 인트라-예측 모드는 최소 SAE 를 제공하는 인트라-예측 모드에 의해 주어진다. 예를 들어, 프로세스 (900) 는, 현재 블록이 직사각형인 것에 기초하여 최선의 모드로서 광각 인트라-예측 모드를 표시할 수 있는, SAE 분석에 기초하여 광각 인트라-예측 모드를 선택할 수 있다.
블록 (908) 에서, 프로세스 (900) 는 광각 인트라-예측 모드를 이용하여 현재 블록에 대한 예측 블록을 결정하는 것을 포함한다. 예측 블록은 복수의 예측 샘플들을 포함한다. 각각의 예측 샘플은 광각 인트라-예측 모드를 이용하여 결정될 수 있다. 블록 (910) 에서, 프로세스 (900) 는, 포지션 종속 인트라 예측 조합 (PDPC) 을 사용하여 수정된 예측 샘플을 생성하기 위해 예측 블록의 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것을 포함한다. 예를 들어, 예측 샘플을 수정하는 것은, 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것, 및, 그 결정된 하나 이상의 레퍼런스 샘플들에 기초하여, 수정된 예측 샘플을 생성하기 위해 예측 샘플을 수정하는 것을 포함할 수 있다.
일부 예들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들은, 예측 샘플에 대한 광각 인트라-예측 모드의 각도를 이용하여 결정된다. 예를 들어, 도 7 에서 도시된 바와 같이, (R(-1,y) 로서 표시된) 제 1 PDPC 레퍼런스 샘플 (714) 및, 일부 경우들에서, 제 2 PDPC 레퍼런스 샘플 R(x,-1) 은 화살표 (710) 에 의해 표현된 광각 인트라-예측 모드의 방향 (또는 각도) 을 따라 결정된다.
일부 경우들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 현재 블록 위에 있는 로우를 결정하는 것, 결정된 로우에서의 x-좌표를 결정하는 것, 및, 결정된 로우 및 결정된 x-좌표에 기초하여 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함할 수 있다. 이러한 경우들에서, 결정된 로우에서의 x-좌표는 예측 샘플의 x-좌표 플러스 예측 샘플의 y-좌표 플러스 1 과 같다. 추가로, 일부 경우들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 현재 블록 위에 있는 로우를 결정하는 것, 결정된 로우에서의 x-좌표를 결정하는 것 (여기서, 결정된 로우에서의 x-좌표는 예측 샘플에 대한 광각 인트라-예측 모드의 각도에 기초한다), 및, 결정된 로우 및 결정된 x-좌표에 기초하여 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함할 수 있다. 실례로, 결정된 로우에서의 x-좌표를 결정하는 것은, 광각 인트라-예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나를 결정하는 것, 및, 광각 인트라-예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나, 예측 샘플의 x-좌표, 및 예측 샘플의 y-좌표에 기초하여, 결정된 로우에서의 x-좌표를 결정하는 것을 포함할 수 있다. 하나의 예시적인 예에서, 도 7 을 참조하여, 제 2 PDPC 레퍼런스 샘플 R(x,-1) 은 이웃하는 재구성된 레퍼런스 샘플들 (708) 의 로우로부터 결정된다. R(x,-1) 의 x-좌표는 x = x’ + tan(β) × (y’ + 1) 로서 결정될 수 있고, 여기서, tan(β) 는 도 7 에서 도시된 각도 β 의 탄젠트이다. 이러한 예에서, 결정된 로우 (예컨대, 도 7 에서의 로우 (708)) 에서의 x-좌표 (x) 는 예측 샘플의 x-좌표 (x’) 플러스 예측 샘플의 y-좌표 (y’) 플러스 1 과 동일하고, 또한 광각 인트라-예측 모드의 각도 (긱도 β 의 탄젠트, tan(β)) 에 기초한다.
일부 경우들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 현재 블록의 좌측에 있는 칼럼을 결정하는 것, 결정된 칼럼에서의 y-좌표를 결정하는 것, 및, 결정된 칼럼 및 결정된 y-좌표에 기초하여 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함할 수 있다. 이러한 경우들에서, 결정된 칼럼에서의 y-좌표는 예측 샘플의 y-좌표 플러스 예측 샘플의 x-좌표 플러스 1 과 같다. 추가로, 일부 경우들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 현재 블록의 좌측에 있는 칼럼을 결정하는 것, 결정된 칼럼에서의 y-좌표를 결정하는 것 (여기서, 결정된 칼럼의 y-좌표는 광각 인트라-예측 모드의 각도에 기초한다), 및, 결정된 칼럼 및 결정된 y-좌표에 기초하여 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함할 수 있다. 실례로, 결정된 칼럼에서의 y-좌표를 결정하는 것은, 광각 인트라-예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나를 결정하는 것, 및, 광각 인트라-예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나, 예측 샘플의 x-좌표, 및 예측 샘플의 y-좌표에 기초하여, 결정된 칼럼에서의 y-좌표를 결정하는 것을 포함할 수 있다. 하나의 예시적인 예에서, 도 7 을 참조하여, 제 1 PDPC 레퍼런스 샘플 (714) (R(- 1,y )) 은 이웃하는 재구성된 레퍼런스 샘플들 (706) 의 칼럼으로부터 결정된다. R(-1,y) 의 y-좌표는 y = y’ + cotan(β) × (x’ + 1) 로서 결정될 수 있고, 여기서, cotan(β) 는 도 7 에서 도시된 각도 β 의 코탄젠트이다. 이러한 예에서, 결정된 칼럼 (예컨대, 도 7 에서의 칼럼 (706)) 에서의 y-좌표 (y) 는 예측 샘플의 y-좌표 (y’) 플러스 예측 샘플의 x-좌표 (x’) 플러스 1 과 동일하고, 또한 광각 인트라-예측 모드의 각도 (긱도 β 의 코탄젠트, cotan(β)) 에 기초한다.
일부 구현들에서, 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 광각 인트라-예측 모드에 기초하여 하나 이상의 샘플들의 세트를 결정하는 것, 및, 하나 이상의 레퍼런스 샘플들을 생성하기 위해 하나 이상의 샘플들의 세트를 보간하는 것, 오프셋을 갖고 라운딩하는 것, 또는 오프셋 없이 라운딩하는 것 중 적어도 하나를 포함할 수 있다. 예를 들어, 도 8 을 참조하면, 보간은 PDPC 레퍼런스 샘플 R(x,-1) 을 생성하기 위해 샘플들 (812) 에 대해 수행될 수 있다.
일부 예들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 예측 블록에서의 예측 샘플의 각각의 x-좌표 및 y-좌표 양자와는 상이한 x-좌표 및 y-좌표 양자를 갖는 하나 이상의 레퍼런스 샘플들을 결정하는 것을 포함한다. 예를 들어, 도 7 과 관련하여 설명된 바와 같이, (R(-1,-1) 로서 표시된) 제 3 PDPC 레퍼런스 샘플 (716) 은 현재 블록 (703) 의 상부-좌측 샘플에 인접하는 이웃하는 블록으로부터 또한 결정될 수 있다.
일부 구현들에서, 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 광각 인트라-예측 모드에 기초하여 식별된 현재 블록에 대해 외부에 있는 하나 이상의 샘플들이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것을 포함할 수 있다. 그 하나 이상의 레퍼런스 샘플들은, 현재 블록에 대해 외부에 있는 하나 이상의 샘플들이 레퍼런스 라인 버퍼에 저장되지 않는 것에 기초하여, 레퍼런스 라인 버퍼에 저장된 마지막 레퍼런스 샘플에 기초하여 결정될 수 있다.
일부 양태들에서, 프로세스 (900) 는 예측 샘플의 x- 및 y-좌표들에 기초하여 하나 이상의 가중치들을 결정하는 것을 포함할 수 있다. 예를 들어, 인접하는 상부-우측 대각선 모드에 대한 PDPC 가중치들은 다음과 같이 결정될 수 있다: wT = 32 >> ( ( y’<<1 ) >> shift ), wL = 32 >> ( ( x’<<1 ) >> shift ), wTL = 0 또는 wT = 32 >> ( ( y’<<1 ) >> shift ), wL = 0, wTL = 0. 다른 예에서, 상기 언급된 바와 같이, 인접하는 저부-좌측 대각선 모드에 대한 PDPC 가중치들은 다음과 같이 결정될 수 있다: wL = 32 >> ( ( x’<<1 ) >> shift ), wT = 32 >> ( ( y’<<1 ) >> shift ), wTL = 0 또는 wL = 32 >> ( ( x’<<1 ) >> shift ), wT =0, wTL = 0. 결정된 하나 이상의 가중치들은 하나 이상의 레퍼런스 샘플들과 함께 예측 샘플을 수정하기 위해 사용될 수 있다. 실례로, 수정된 예측 샘플은 (예컨대, 상기로부터의 식 1 을 이용하여) 결정된 하나 이상의 레퍼런스 샘플들, 결정된 하나 이상의 가중치들, 및 예측 샘플에 기초하여 생성될 수 있다.
일부 예들에서, 예측 블록의 복수의 예측 샘플들을 수정하는 것은 예측 블록의 제 1 예측 샘플을 수정하는 것을 포함할 수도 있다. 예를 들어, 하나 이상의 레퍼런스 샘플들은 하나 이상의 레퍼런스 샘플들의 제 1 세트를 포함할 수 있고, 프로세스 (900) 는, 예측 블록의 제 2 예측 샘플에 대해, 제 2 예측 샘플에 대한 하나 이상의 레퍼런스 샘플들의 제 2 세트의 적어도 하나의 레퍼런스 샘플이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것을 포함할 수 있다. 일부 경우들에서, 제 2 예측 샘플에 대해, 제 2 예측 샘플에 대한 하나 이상의 레퍼런스 샘플들의 제 2 세트의 적어도 하나의 레퍼런스 샘플이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것에 기초하여 제 2 예측 샘플에 PDPC 가 적용되지 않을 수도 있다. 일부 경우들에서, 제 2 예측 샘플에 대해, 제 2 예측 샘플에 대한 하나 이상의 레퍼런스 샘플들의 제 2 세트의 적어도 하나의 레퍼런스 샘플이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것에 기초하여 레퍼런스 라인 버퍼에서 이용가능한 레퍼런스 샘플들만을 이용하여 제 2 예측 샘플에 PDPC 가 적용될 수 있다.
블록 (912) 에서, 프로세스 (900) 는, 수정된 예측 샘플 및 잔차 값에 기초하여 현재 블록의 샘플을 재구성하는 것을 포함한다. 예를 들어, 상술된 바와 같이, 비디오 데이터를 디코딩하기 위한 디바이스는, 수신된 정보에 기초하여 잔차 블록의 잔차 값을 결정할 수 있고, 현재 블록을 재구성하기 위해 예측 블록의 예측 샘플들에 잔차 블록의 잔차 값들을 가산할 수 있다. 비디오 데이터를 디코딩하기 위한 디바이스는, 잔차 값에 대한 정보 (예컨대, 비트스트림에서의 잔차 변환 블록들에 대한 계수들) 를 수신할 수 있고, 현재 블록에서의 샘플을 재구성하기 위해 (PDPC 를 이용하여 수정된) 수정된 예측 샘플에 잔차 값을 가산함으로써 샘플을 재구성할 수 있다.
도 10 은 본 명세서에 설명된 기법들 중 하나 이상을 사용하여 비디오 데이터를 인코딩하기 위한 프로세스 (1000) 의 예를 나타내는 플로우챠트이다. 블록 (1002) 에서, 프로세스 (1000) 는 비디오 데이터의 현재 블록을 획득하는 것을 포함한다. 하나의 예시적인 예에서, 비디오 데이터의 현재 블록은 도 7 에서 도시된 비디오 데이터의 블록 (703) 을 포함할 수 있다. 다른 예시적인 예에서, 비디오 데이터의 현재 블록은 도 8 에서 도시된 비디오 데이터의 블록 (803) 을 포함할 수 있다.
블록 (1004) 에서, 프로세스 (1000) 는 현재 블록의 사이즈를 결정하는 것을 포함한다. 일부 경우들에서, 현재 블록의 사이즈를 결정하는 것은, 블록이 직사각형 블록인 것을 나타내는, 블록의 폭 및 블록의 높이가 상이한 사이즈들임을 결정하는 것을 포함할 수 있다. 일부 경우들에서, 현재 블록의 사이즈를 결정하는 것은, 현재 블록의 대각선의 각도 또는 방향 (예컨대, 현재 블록의 저부-좌측 코너로부터 현재 블록의 상부-우측 코너로의 대각선 방향 또는 현재 블록의 상부-좌측 코너로부터 현재 블록의 저부-우측 코너로의 대각선 방향) 을 결정하는 것을 포함할 수 있다. 일부 경우들에서, 현재 블록의 블록 사이즈 비율은 (예컨대, 피타고라스의 정리 -
Figure pct00003
를 이용하여) 대각선 방향을 결정하기 위해 사용될 수 있다. 상기 언급된 바와 같이, 대각선 방향 (예컨대, 저부-좌측으로부터 상부-우측으로 또는 상부-좌측으로부터 저부-우측으로) 은 예측 방향들 (또는 각도들) 의 허용되는 범위를 결정하기 위해 사용될 수 있다.
블록 (1006) 에서, 프로세스 (1000) 는, 현재 블록의 사이즈에 기초하여, 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하는 것을 포함한다. 광각 인트라-예측 모드는 DC, 평면, 수평, 또는 수직 인트라-예측 모드가 아니다. 실례로, 광각 인트라-예측 모드의 각도는 예측 샘플에 대해 (예컨대, 예측 샘플로부터 수직 방향에 대해) -135도 미만이거나 (예컨대, 도 6 에서 도시된 모드들 -1, -2, -3, 내지 -14) 또는 45도보다 더 클 수 있다 (예컨대, 도 6 에서 도시된 모드들 67, 68, 69, 내지 80).
블록 (1006) 의 일 예시적인 구현으로서, 코딩 디바이스 (예컨대, 비디오 데이터를 인코딩하기 위한 디바이스) 는, 현재 블록의 사이즈에 기초하여 현재 블록에 대해 광각 인트라-예측 모드가 사용될 수 있는 것을 결정할 수 있다. 실례로, 광각 인트라-예측 모드는, 현재 블록이 직사각형 블록 (폭 및 높이가 상이한 사이즈들의 것임) 이라고 결정되는 경우에 사용될 수 있다. 일부 경우들에서, (블록의 저부-좌측 코너로부터 상부-우측 코너로 또는 블록의 상부-좌측 코너로부터 저부-우측 코너로) 현재 블록의 대각선을 초과하지 않는 방향 (또는 각도) 을 갖는 임의의 인트라-예측 모드가 현재 블록을 예측함에 있어서 사용하기 위해 선택될 수 있다. 일부 경우들에서, 블록 사이즈 비율들은 사용할 인트라-예측 모드를 결정하기 위해 사용될 수 있다. 실례로, 직사각형 블록의 블록 사이즈 비율은 (예컨대, 저부-좌측으로부터 상부-우측으로의) 대각선 방향을, 그리고 따라서, 예측 방향들의 허용되는 범위를, 결정하기 위해 사용될 수 있다. 예컨대, SAE (Sum of Absolute Errors), SAD (Sum of Absolute Differences), SATD (Sum of Absolute Transformed Differences), 또는 다른 유사한 수단에 기초하여) 인코딩될 블록과 예측 블록 사이의 잔차를 최소화하는 인트라-예측 모드가 현재 블록에 대해 사용하기 위해 선택될 수 있다. 일 예시적인 예로서 SAE 를 사용하면, 인트라-예측 모드들의 각각을 이용하여 결정되는 각 예측에 대한 SAE 는 예측 에러의 크기를 나타낸다. 실제 현재 블록에 대한 최선의 매치를 갖는 인트라-예측 모드는 최소 SAE 를 제공하는 인트라-예측 모드에 의해 주어진다. 예를 들어, 프로세스 (900) 는, 현재 블록이 직사각형인 것에 기초하여 최선의 모드로서 광각 인트라-예측 모드를 표시할 수 있는, SAE 분석에 기초하여 광각 인트라-예측 모드를 선택할 수 있다.
블록 (1008) 에서, 프로세스 (1000) 는 광각 인트라-예측 모드를 이용하여 현재 블록에 대한 예측 블록을 결정하는 것을 포함한다. 예측 블록은 복수의 예측 샘플들을 포함한다. 예측 블록은 복수의 예측 샘플들을 포함한다. 각각의 예측 샘플은 광각 인트라-예측 모드를 이용하여 결정될 수 있다. 블록 (1010) 에서, 프로세스 (1000) 는, 포지션 종속 인트라 예측 조합 (PDPC) 을 사용하여 수정된 예측 샘플을 생성하기 위해 예측 블록의 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것을 포함한다. 예를 들어, 예측 샘플을 수정하는 것은, 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것, 및, 그 결정된 하나 이상의 레퍼런스 샘플들에 기초하여, 수정된 예측 샘플을 생성하기 위해 예측 샘플을 수정하는 것을 포함할 수 있다.
일부 예들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들은, 예측 샘플에 대한 광각 인트라-예측 모드의 각도를 이용하여 결정된다. 예를 들어, 도 7 에서 도시된 바와 같이, (R(-1,y) 로서 표시된) 제 1 PDPC 레퍼런스 샘플 (714) 및, 일부 경우들에서, 제 2 PDPC 레퍼런스 샘플 R(x,-1) 은 화살표 (710) 에 의해 표현된 광각 인트라-예측 모드의 방향 (또는 각도) 을 따라 결정된다.
일부 경우들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 현재 블록 위에 있는 로우를 결정하는 것, 결정된 로우에서의 x-좌표를 결정하는 것, 및, 결정된 로우 및 결정된 x-좌표에 기초하여 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함할 수 있다. 이러한 경우들에서, 결정된 로우에서의 x-좌표는 예측 샘플의 x-좌표 플러스 예측 샘플의 y-좌표 플러스 1 과 같다. 추가로, 일부 경우들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 현재 블록 위에 있는 로우를 결정하는 것, 결정된 로우에서의 x-좌표를 결정하는 것 (여기서, 결정된 로우에서의 x-좌표는 예측 샘플에 대한 광각 인트라-예측 모드의 각도에 기초한다), 및, 결정된 로우 및 결정된 x-좌표에 기초하여 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함할 수 있다. 실례로, 결정된 로우에서의 x-좌표를 결정하는 것은, 광각 인트라-예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나를 결정하는 것, 및, 광각 인트라-예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나, 예측 샘플의 x-좌표, 및 예측 샘플의 y-좌표에 기초하여, 결정된 로우에서의 x-좌표를 결정하는 것을 포함할 수 있다. 하나의 예시적인 예에서, 도 7 을 참조하여, 제 2 PDPC 레퍼런스 샘플 R(x,-1) 은 이웃하는 재구성된 레퍼런스 샘플들 (708) 의 로우로부터 결정된다. R(x,-1) 의 x-좌표는 x = x’ + tan(β) × (y’ + 1) 로서 결정될 수 있고, 여기서, tan(β) 는 도 7 에서 도시된 각도 β 의 탄젠트이다. 이러한 예에서, 결정된 로우 (예컨대, 도 7 에서의 로우 (708)) 에서의 x-좌표 (x) 는 예측 샘플의 x-좌표 (x’) 플러스 예측 샘플의 y-좌표 (y’) 플러스 1 과 동일하고, 또한 광각 인트라-예측 모드의 각도 (긱도 β 의 탄젠트, tan(β)) 에 기초한다.
일부 경우들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 현재 블록의 좌측에 있는 칼럼을 결정하는 것, 결정된 칼럼에서의 y-좌표를 결정하는 것, 및, 결정된 칼럼 및 결정된 y-좌표에 기초하여 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함할 수 있다. 이러한 경우들에서, 결정된 칼럼에서의 y-좌표는 예측 샘플의 y-좌표 플러스 예측 샘플의 x-좌표 플러스 1 과 같다. 추가로, 일부 경우들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 현재 블록의 좌측에 있는 칼럼을 결정하는 것, 결정된 칼럼에서의 y-좌표를 결정하는 것 (여기서, 결정된 칼럼의 y-좌표는 광각 인트라-예측 모드의 각도에 기초한다), 및, 결정된 칼럼 및 결정된 y-좌표에 기초하여 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함할 수 있다. 실례로, 결정된 칼럼에서의 y-좌표를 결정하는 것은, 광각 인트라-예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나를 결정하는 것, 및, 광각 인트라-예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나, 예측 샘플의 x-좌표, 및 예측 샘플의 y-좌표에 기초하여, 결정된 칼럼에서의 y-좌표를 결정하는 것을 포함할 수 있다. 하나의 예시적인 예에서, 도 7 을 참조하여, 제 1 PDPC 레퍼런스 샘플 (714) (R(- 1,y )) 은 이웃하는 재구성된 레퍼런스 샘플들 (706) 의 칼럼으로부터 결정된다. R(-1,y) 의 y-좌표는 y = y’ + cotan(β) × (x’ + 1) 로서 결정될 수 있고, 여기서, cotan(β) 는 도 7 에서 도시된 각도 β 의 코탄젠트이다. 이러한 예에서, 결정된 칼럼 (예컨대, 도 7 에서의 칼럼 (706)) 에서의 y-좌표 (y) 는 예측 샘플의 y-좌표 (y’) 플러스 예측 샘플의 x-좌표 (x’) 플러스 1 과 동일하고, 또한 광각 인트라-예측 모드의 각도 (긱도 β 의 코탄젠트, cotan(β)) 에 기초한다.
일부 구현들에서, 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 광각 인트라-예측 모드에 기초하여 하나 이상의 샘플들의 세트를 결정하는 것, 및, 하나 이상의 레퍼런스 샘플들을 생성하기 위해 하나 이상의 샘플들의 세트를 보간하는 것, 오프셋을 갖고 라운딩하는 것, 또는 오프셋 없이 라운딩하는 것 중 적어도 하나를 포함할 수 있다. 예를 들어, 도 8 을 참조하면, 보간은 PDPC 레퍼런스 샘플 R(x,-1) 을 생성하기 위해 샘플들 (812) 에 대해 수행될 수 있다.
일부 예들에서, 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 예측 블록에서의 예측 샘플의 각각의 x-좌표 및 y-좌표 양자와는 상이한 x-좌표 및 y-좌표 양자를 갖는 하나 이상의 레퍼런스 샘플들을 결정하는 것을 포함한다. 예를 들어, 도 7 과 관련하여 설명된 바와 같이, (R(-1,-1) 로서 표시된) 제 3 PDPC 레퍼런스 샘플 (716) 은 현재 블록 (703) 의 상부-좌측 샘플에 인접하는 이웃하는 블록으로부터 또한 결정될 수 있다.
일부 구현들에서, 광각 인트라-예측 모드에 기초하여 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 광각 인트라-예측 모드에 기초하여 식별된 현재 블록에 대해 외부에 있는 하나 이상의 샘플들이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것을 포함할 수 있다. 그 하나 이상의 레퍼런스 샘플들은, 현재 블록에 대해 외부에 있는 하나 이상의 샘플들이 레퍼런스 라인 버퍼에 저장되지 않는 것에 기초하여, 레퍼런스 라인 버퍼에 저장된 마지막 레퍼런스 샘플에 기초하여 결정될 수 있다.
일부 양태들에서, 프로세스 (900) 는 예측 샘플의 x- 및 y-좌표들에 기초하여 하나 이상의 가중치들을 결정하는 것을 포함할 수 있다. 예를 들어, 인접하는 상부-우측 대각선 모드에 대한 PDPC 가중치들은 다음과 같이 결정될 수 있다: wT = 32 >> ( ( y’<<1 ) >> shift ), wL = 32 >> ( ( x’<<1 ) >> shift ), wTL = 0 또는 wT = 32 >> ( ( y’<<1 ) >> shift ), wL = 0, wTL = 0. 다른 예에서, 상기 언급된 바와 같이, 인접하는 저부-좌측 대각선 모드에 대한 PDPC 가중치들은 다음과 같이 결정될 수 있다: wL = 32 >> ( ( x’<<1 ) >> shift ), wT = 32 >> ( ( y’<<1 ) >> shift ), wTL = 0 또는 wL = 32 >> ( ( x’<<1 ) >> shift ), wT =0, wTL = 0. 결정된 하나 이상의 가중치들은 하나 이상의 레퍼런스 샘플들과 함께 예측 샘플을 수정하기 위해 사용될 수 있다. 실례로, 수정된 예측 샘플은 (예컨대, 상기로부터의 식 1 을 이용하여) 결정된 하나 이상의 레퍼런스 샘플들, 결정된 하나 이상의 가중치들, 및 예측 샘플에 기초하여 생성될 수 있다.
일부 예들에서, 예측 블록의 복수의 예측 샘플들을 수정하는 것은 예측 블록의 제 1 예측 샘플을 수정하는 것을 포함할 수도 있다. 예를 들어, 하나 이상의 레퍼런스 샘플들은 하나 이상의 레퍼런스 샘플들의 제 1 세트를 포함할 수 있고, 프로세스 (900) 는, 예측 블록의 제 2 예측 샘플에 대해, 제 2 예측 샘플에 대한 하나 이상의 레퍼런스 샘플들의 제 2 세트의 적어도 하나의 레퍼런스 샘플이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것을 포함할 수 있다. 일부 경우들에서, 제 2 예측 샘플에 대해, 제 2 예측 샘플에 대한 하나 이상의 레퍼런스 샘플들의 제 2 세트의 적어도 하나의 레퍼런스 샘플이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것에 기초하여 제 2 예측 샘플에 PDPC 가 적용되지 않을 수도 있다. 일부 경우들에서, 제 2 예측 샘플에 대해, 제 2 예측 샘플에 대한 하나 이상의 레퍼런스 샘플들의 제 2 세트의 적어도 하나의 레퍼런스 샘플이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것에 기초하여 레퍼런스 라인 버퍼에서 이용가능한 레퍼런스 샘플들만을 이용하여 제 2 예측 샘플에 PDPC 가 적용될 수 있다.
블록 (1012) 에서, 프로세스 (1000) 는, 수정된 예측 샘플 및 현재 블록에서의 샘플 값에 기초하여 잔차 블록에 대한 잔차 값을 결정하는 것을 포함한다. 예를 들어, 잔차 값은 수정된 예측 샘플과 현재 블록에서의 샘플 값 사이의 차이 (또는 에러) 를 포함할 수 있다. 잔차 값들 및/또는 변환 계수들을 갖는 변환 블록 (예컨대, TU, TB 등) 은 현재 블록에 대해 결정된 하나 이상의 잔차 값들에 기초하여 생성될 수 있다. 예를 들어, 잔차 데이터는 픽셀 도메인으로부터 변환 도메인으로 변환되어, 잔차 변환 계수들을 발생시킬 수도 있다. 잔차 변환 계수들은 양자화될 수 있고, 일부 경우들에서, 엔트로피 코딩이 양자화된 변환 계수들에 적용될 수도 있다. 블록 (1014) 에서, 프로세스 (1000) 는 잔차 값을 나타내는 시그널링 정보를 포함한다. 그 정보는 잔차 변환 블록 (이는 엔트로피 코딩될 수도 있다), 잔차 변환 계수들, 양자화된 잔차 변환 계수들, 또는 엔트로피 코딩된 양자화된 잔차 변환 계수들을 포함할 수 있다.
일부 예들에서, 프로세스들 (900 및 1000) 은 컴퓨팅 디바이스 또는 장치에 의해 수행될 수도 있다. 예를 들어, 프로세스 (900) 는 비디오 디코더 (30) 에 의해, 또는 비디오 디코더 (30) 를 포함하는 비디오 데이터를 디코딩하기 위한 디바이스 또는 장치 (예컨대, 카메라, 컴퓨터, 모바일 디바이스, 브로드캐스트 수신기 디바이스, 또는 셋톱 박스) 에 의해 수행될 수 있다. 다른 예에서, 프로세스 (1000) 는 비디오 인코더 (22) 에 의해, 또는 비디오 인코더 (22) 를 포함하는 비디오 데이터를 인코딩하기 위한 디바이스 또는 장치 (예컨대, 카메라, 컴퓨터, 모바일 디바이스, 브로드캐스트 수신기 디바이스, 또는 셋톱 박스) 에 의해 수행될 수 있다. 일부 경우들에서, 컴퓨팅 디바이스 또는 장치는 프로세스들 (900 및 1000) 의 일방 또는 양방의 단계들을 수행하도록 구성되는 디바이스의 프로세서, 마이크로프로세서, 마이크로컴퓨터, 또는 다른 컴포넌트를 포함할 수도 있다. 일부 예들에서, 컴퓨팅 디바이스 또는 장치는, 하나 이상의 이미지들을 캡처하기 위한 하나 이상의 카메라들, 입력 디바이스 (예컨대, 터치스크린 인터페이스, 키패드, 마우스, 또는 다른 입력 디바이스), 출력 디바이스 (예컨대, 현재 블록, 하나 이상의 이미지들, 통지들, 및/또는 다른 디스플레이가능 데이터를 디스플레이하기 위한 디스플레이, 오디오를 출력하기 위한 스피커, 또는 다른 출력 디바이스), 이들의 임의의 조합, 또는 다른 적합한 컴포넌트와 같은, 하나 이상의 컴포넌트들을 포함할 수도 있다. 일부 예들에서, 컴퓨팅 디바이스는, 데스크톱 컴퓨터, 노트북 (즉, 랩톱) 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 소위 "스마트" 폰과 같은 전화 핸드셋, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 비디오 스트리밍 디바이스, 웨어러블 디바이스 등, 또는 하나 이상의 컴포넌트들을 갖는 다른 디바이스를 포함할 수도 있다. 일부 경우들에서, 컴퓨팅 디바이스는 비디오 코덱을 포함할 수도 있다. 일부 예들에서, 하나 이상의 컴포넌트들의 일부는 컴퓨팅 디바이스로부터 분리될 수 있고, 이 경우에, 컴퓨팅 디바이스는 데이터를 수신하거나 데이터를 송신한다. 컴퓨팅 디바이스는 데이터를 통신하도록 구성된 네트워크 인터페이스를 더 포함할 수도 있다. 네트워크 인터페이스는 인터넷 프로토콜 (IP) 기반 데이터 또는 다른 적합한 네트워크 데이터를 통신하도록 구성될 수도 있다.
컴퓨팅 디바이스의 컴포넌트들 (예컨대, 하나 이상의 프로세서들, 하나 이상의 마이크로프로세서들, 하나 이상의 마이크로컴퓨터들, 및/또는 다른 컴포넌트) 은 회로에서 구현될 수 있다. 예를 들어, 컴포넌트들은, 하나 이상의 프로그래밍가능 전자 회로들 (예컨대, 마이크로프로세서들, 그래픽 프로세싱 유닛 (GPU) 들, 디지털 신호 프로세서 (DSP) 들, 중앙 프로세싱 유닛 (CPU) 들, 및/또는 다른 적합한 전자 회로들) 을 포함할 수 있는 전자 회로들 또는 다른 전자적 하드웨어를 포함할 수 있고/거나 그러한 전자 회로들 또는 다른 전자적 하드웨어를 이용하여 구현될 수 있고, 및/또는, 본원에 기술된 다양한 동작들을 수행하기 위해 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 포함하고/거나 그러한 것들을 이용하여 구현될 수 있다.
프로세스들 (900 및 1000) 은 논리 흐름도로서 예시되고, 그 동작은 하드웨어, 컴퓨터 명령들, 또는 이들의 조합으로 구현될 수 있는 동작들의 시퀀스를 표현한다. 컴퓨터 명령들의 맥락에서, 그 동작들은, 하나 이상의 프로세서들에 의해 실행될 때, 열거된 동작들을 수행하는 하나 이상의 컴퓨터 판독가능 저장 매체들 상에 저장된 컴퓨터 실행가능 명령들을 표현한다. 일반적으로, 컴퓨터 실행가능 명령들은 특정의 기능들을 수행하거나 또는 특정의 데이터 타입들을 구현하는 루틴들, 프로그램들, 오브젝트들, 컴포넌트들, 데이터 구조들 등을 포함한다. 동작들이 설명되는 순서는 제한으로서 해석되도록 의도되지 않으며, 임의의 수의 설명된 동작들은 프로세스들을 구현하기 위해 임의의 순서로 및/또는 병렬로 결합될 수 있다.
추가적으로, 프로세스들 (900 및 1000) 은 실행가능 명령들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에서 수행될 수도 있고, 집합적으로 하나 이상의 프로세서 상에서 실행하는 코드 (예를 들어, 실행가능 명령들, 하나 이상의 컴퓨터 프로그램들, 또는 하나 이상의 애플리케이션들) 로서, 하드웨어에 의해, 또는 이들의 조합으로 구현될 수도 있다. 상기 언급된 바와 같이, 코드는 컴퓨터 판독가능 또는 머신 판독가능 저장 매체 상에, 예를 들어, 하나 이상의 프로세서들에 의해 실행가능한 복수의 명령들을 포함하는 컴퓨터 프로그램의 형태로 저장될 수도 있다. 컴퓨터 판독가능 또는 머신 판독가능 저장 매체는 비일시적일 수도 있다.
도 11 은 본 개시의 기법들을 구현할 수도 있는 예시적인 비디오 인코더 (22) 를 도시한 블록도이다. 도 11 은 설명의 목적으로 제공되며 본 개시에 폭넓게 예시되고 기재되는 바와 같이 기법들을 제한하는 것으로 고려되지 않아야 한다. 본 개시의 기법들은 다양한 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
도 11 의 예에서, 비디오 인코더 (22) 는 예측 프로세싱 유닛 (100), 비디오 데이터 메모리 (101), 잔차 생성 유닛 (102), 변환 프로세싱 유닛 (104), 양자화 유닛 (106), 역 양자화 유닛 (108), 역 변환 프로세싱 유닛 (110), 재구성 유닛 (112), 필터 유닛 (114), 디코딩된 픽처 버퍼 (116), 및 엔트로피 인코딩 유닛 (118) 을 포함한다. 예측 프로세싱 유닛 (100) 은, 인터 예측 프로세싱 유닛 (120) 및 인트라 예측 프로세싱 유닛 (126) 을 포함한다. 인터 예측 프로세싱 유닛 (120) 은, 모션 추정 유닛 및 모션 보상 유닛 (미도시) 를 포함할 수도 있다.
비디오 데이터 메모리 (101) 는, 비디오 인코더 (22) 의 컴포넌트들에 의해 인코딩될 비디오 데이터를 저장하도록 구성될 수도 있다. 비디오 데이터 메모리 (101) 에 저장된 비디오 데이터는 예를 들어, 비디오 소스 (18) 로부터 획득될 수도 있다. 디코딩된 픽처 버퍼 (116) 는, 예를 들어, 인트라 또는 인터 코딩 모드들에서, 비디오 인코더 (22) 에 의해 비디오 데이터를 인코딩하는데 있어서의 사용을 위해 레퍼런스 비디오 데이터를 저장하는 레퍼런스 픽처 메모리일 수도 있다. 비디오 데이터 메모리 (101) 및 디코딩된 픽처 버퍼 (116) 는 동기식 DRAM (SDRAM) 을 포함한 동적 랜덤 액세스 메모리 (DRAM), 자기저항 RAM (MRAM), 저항 RAM (RRAM), 또는 다른 유형들의 메모리 디바이스들과 같은, 다양한 메모리 디바이스들 중 임의의 메모리 디바이스에 의해 형성될 수도 있다. 비디오 데이터 메모리 (101) 및 디코딩된 픽처 버퍼 (116) 는 동일한 메모리 디바이스 또는 별도의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에서, 비디오 데이터 메모리 (101) 는 비디오 인코더 (22) 의 다른 컴포넌트들과 온-칩이거나 또는 그 컴포넌트들에 대하여 오프-칩일 수도 있다. 비디오 데이터 메모리 (101) 는 도 1 의 저장 매체 (20) 와 동일하거나 또는 그것의 일부일 수도 있다.
비디오 인코더 (22) 는 비디오 데이터를 수신한다. 비디오 인코더 (22) 는 비디오 데이터의 픽처의 슬라이스에서 각각의 CTU 를 인코딩할 수도 있다. CTU들 각각은, 동일하게 사이징된 루마 CTB들 및 픽처의 대응하는 CTB들과 연관될 수도 있다. CTU 를 인코딩하는 부분으로서, 예측 프로세싱 유닛 (100) 은 파티셔닝을 수행하여, CTU 의 CTB들을 점진적으로 더 작은 블록들로 분할할 수도 있다. 더 작은 픽셀 블록들은 CU 들의 코딩 블록들일 수도 있다. 예를 들어, 예측 프로세싱 유닛 (100) 은 CTU 와 연관된 CTB 를 트리 구조에 따라 파티셔닝할 수도 있다. 본 개시의 하나 이상의 기술들에 따르면, 트리 구조의 각 깊이 레벨에서의 트리 구조의 각각의 개별 비-리프 노드에 대해, 개별 비-리프 노드에 대한 복수의 허용된 분할 패턴들이 존재하고, 개별 비-리프 노드에 대응하는 비디오 블록은 복수의 허용 가능한 분할 패턴들 중 하나에 따라 개별 비-리프 노드의 자식 노드들에 대응하는 비디오 블록들로 파티셔닝된다. 일 예에서, 예측 프로세싱 유닛 (100) 또는 비디오 인코더 (22)의 다른 프로세싱 유닛은 본원에 설명된 기법들의 임의의 조합을 수행하도록 구성될 수도 있다.
비디오 인코더 (22) 는 CTU 의 CU들을 인코딩하여 CU들의 인코딩된 표현들 (즉, 코딩된 CU들) 을 생성할 수도 있다. CU 를 인코딩하는 것의 일부로서, 예측 프로세싱 유닛 (100) 은 CU 의 하나 이상의 PU들 중에서 CU 와 연관된 코딩 블록들을 파티셔닝할 수도 있다. 본 개시의 기술에 따르면, CU 는 단일 PU 만을 포함할 수도 있다. 즉, 본 개시의 일부 예들에서, CU 는 개별 예측 블록들로 분할되지 않고 오히려 예측 프로세스가 전체 CU에 대해 수행된다. 따라서, 각각의 CU 는 루마 예측 블록 및 대응하는 크로마 예측 블록들과 연관될 수도 있다. 비디오 인코더 (22) 및 비디오 디코더 (30) 는 다양한 사이즈들을 갖는 CU들을 지원할 수도 있다. 상기 나타낸 바와 같이, CU 의 사이즈는 CU 의 루마 코딩 블록의 사이즈를 지칭할 수도 있으며, 또한 루마 예측 블록의 사이즈를 지칭할 수도 있다. 상술한 바와 같이, 비디오 인코더 (22) 및 비디오 디코더 (30) 는 본원에 설명된 예시의 파티셔닝 기법들의 임의의 조합에 의해 정의된 CU 사이즈를 지원할 수도 있다.
인터 예측 프로세싱 유닛 (120) 은 CU 의 각각의 PU에 대한 인터 예측을 수행함으로써 PU 를 위한 예측 데이터를 생성할 수도 있다. 본원에 설명된 바와 같이, 본 개시의 일부 예들에서, CU 는 단일 PU만을 포함할 수도 있으며, 즉, CU 및 PU 는 동의어일 수도 있다. PU 에 대한 예측성 데이터는, PU 의 예측성 블록들 및 PU 에 대한 모션 정보를 포함할 수도 있다. 인터 예측 프로세싱 유닛 (120) 은, PU 가 I 슬라이스인지, P 슬라이스인지 또는 B 슬라이스인지에 의존하여 CU 또는 PU 에 대해 상이한 동작들을 수행할 수도 있다. I 슬라이스에 있어서, 모든 PU들은 인트라 예측된다. 따라서, PU 가 I 슬라이스에 있으면, 인터-예측 프로세싱 유닛 (120) 은 PU 에 대해 인터 예측을 수행하지 않는다. 따라서, I-모드로 인코딩된 블록들에 대해, 예측된 블록은 동일 프레임 내의 이전에 인코딩된 이웃 블록들로부터의 공간 예측을 이용하여 형성된다. PU 가 P 슬라이스 내에 있을 때, 인터-예측 프로세싱 유닛 (120) 은 PU 의 예측 블록을 발생시키기 위해 단방향 인터 예측을 이용할 수도 있다. PU 가 B 슬라이스 내에 있는 경우, 인터-예측 프로세싱 유닛 (120) 은 PU 의 예측 블록을 발생시키기 위해 단방향 또는 양방향 인터 예측을 이용할 수도 있다.
인트라 예측 프로세싱 유닛 (126) 은 PU 에 대한 인트라 예측을 수행함으로써 PU 를 위한 예측성 데이터를 생성할 수도 있다. PU 를 위한 예측성 데이터는 PU 의 예측성 블록들 및 다양한 신택스 엘리먼트들을 포함할 수도 있다. 인트라-예측 프로세싱 유닛 (126) 은 I 슬라이스들, P 슬라이스들, 및 B 슬라이스들에 있어서 PU들에 대해 인트라 예측을 수행할 수도 있다.
PU 에 대해 인트라 예측을 수행하기 위해, 인트라-예측 프로세싱 유닛 (126) 은 다수의 인트라 예측 모드들을 이용하여, PU 에 대한 예측성 데이터의 다수의 세트들을 생성할 수도 있다. 인트라 예측 프로세싱 유닛 (126) 은 이웃하는 PU들의 샘플 블록들로부터의 샘플들을 이용하여 PU 에 대한 예측성 블록을 생성할 수도 있다. 이웃 PU들은, PU들, CU들, 및 CTU들에 대한 좌-우로, 상부-저부로의 인코딩 순서를 가정할 때, PU 의 상부, 상부 및 우측으로, 상부 및 좌측으로, 또는 좌측으로일 수도 있다. 인트라 예측 프로세싱 유닛 (126) 은, 다양한 수의 인트라 예측 모드들, 예를 들어, 33개 방향 인트라 예측 모드들을 사용할 수도 있다. 일부 예들에 있어서, 인트라 예측 모드들의 수는 PU 와 연관된 영역의 사이즈에 의존할 수도 있다.
하나의 예에서, 인트라-예측 프로세싱 유닛 (126) 은 본 개시의 기법들을 구현하도록 구성될 수도 있다. 다른 예들에서, 다른 유닛들 또는 모듈들이 본 개시의 기법들의 일부 또는 전부를 구현하도록 구성될 수도 있다.
예측 프로세싱 유닛 (100) 은, PU 를 위한 인터 예측 프로세싱 유닛 (120) 에 의해 생성된 예측성 데이터 또는 PU 를 위한 인트라 예측 프로세싱 유닛 (126) 에 의해 생성된 예측성 데이터 중에서 CU 의 PU 를 위한 예측성 데이터를 선택할 수도 있다. 일부 예들에 있어서, 예측 프로세싱 유닛 (100) 은 예측성 데이터의 세트들의 레이트/왜곡 메트릭들에 기초하여 CU 의 PU들에 대한 예측성 데이터를 선택한다. 선택된 예측성 데이터의 예측성 블록들은 본 명세서에서 선택된 예측성 블록들로서 지칭될 수도 있다.
잔차 생성 유닛 (102) 은, CU 에 대한 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 및 CU 의 PU 들에 대해 선택된 예측성 블록들 (예를 들어, 예측성 루마, Cb 및 Cr 블록들) 에 기초하여, CU 에 대한 잔차 블록들 (예를 들어, 루마, Cb 및 Cr 잔차 블록들) 을 생성할 수도 있다. 실례로, 잔차 생성 유닛 (102) 은, 잔차 블록들에 있는 각각의 샘플이 CU 의 코딩 블록에 있는 샘플과 CU 의 PU 의 대응하는 선택된 예측성 블록 사이의 차이와 동일한 값을 갖도록 CU 의 잔차 블록들을 생성한다.
변환 프로세싱 유닛 (104) 은, CU 의 TU 들과 연관된 변환 블록들로 CU 와 연관된 잔차 블록들을 파티셔닝하기 위하여 쿼드 트리 파티셔닝을 수행할 수도 있다. 따라서, TU 는 루마 변환 블록 및 2개의 크로마 변환 블록들과 연관될 수도 있다. CU 의 TU 들의 루마 및 크로마 변환 블록들의 사이즈들 및 포지션들은 CU 의 PU 들의 예측 블록들의 사이즈들 및 포지션들에 기초하거나 또는 기초하지 않을 수도 있다. "잔차 쿼드 트리 (residual quad-tree)" (RQT) 로 알려진 쿼드 트리 구조는 각각의 영역들과 연관된 노드들을 포함할 수도 있다. CU 의 TU 들은 RQT 의 리프 노드들에 대응할 수도 있다. 다른 예들에서, 변환 프로세싱 유닛 (104) 은 본원에 기술된 파티셔닝 기법들에 따라 TU 들을 파티셔닝하도록 구성될 수도 있다. 예를 들어, 비디오 인코더 (22) 는 RQT 구조를 사용하여 CU를 TU로 더 이상 분할하지 않을 수도 있다. 이와 같이, 일례에서, CU 는 단일 TU 를 포함한다.
변환 프로세싱 유닛 (104) 은, TU 의 변환 블록들에 하나 이상의 변환들을 적용함으로써 CU 의 각각의 TU 에 대해 변환 계수 블록들을 생성할 수도 있다. 변환 프로세싱 유닛 (104) 은 TU 와 연관된 변환 블록에 다양한 변환들을 적용할 수도 있다. 예를 들어, 변환 프로세싱 유닛 (104) 은 이산 코사인 변환 (DCT), 지향성 변환, 또는 개념적으로 유사한 변환을 변환 블록에 적용할 수도 있다. 일부 예들에서, 변환 프로세싱 유닛 (104) 은 변환 블록에 변환들을 적용하지 않는다. 그러한 예들에서, 변환 블록은 변환 계수 블록으로 다루어질 수도 있다.
양자화 유닛 (106) 은 계수 블록에서의 변환 계수들을 양자화할 수도 있다. 양자화 프로세스는 변환 계수들의 일부 또는 그 모두와 연관된 비트 심도를 감소시킬 수도 있다. 예를 들어, n-비트 변환 계수는 양자화 동안 m-비트 변환 계수로 라운딩 다운될 수도 있고, 여기서 n 은 m 보다 더 크다. 양자화 유닛 (106) 은 CU 와 연관된 양자화 파라미터 (QP) 값에 기초하여 CU 의 TU 와 연관된 계수 블록을 양자화할 수도 있다. 비디오 인코더 (22) 는 CU 와 연관된 QP 값을 조정함으로써 CU 와 연관된 계수 블록들에 적용된 양자화도를 조정할 수도 있다. 양자화는 정보의 손실을 가져올 수도 있다. 따라서, 양자화된 변환 계수들은 원래의 것보다 낮은 정확도를 가질 수도 있다.
역 양자화 유닛 (108) 및 역 변환 프로세싱 유닛 (110) 은 각각 계수 블록에 역 양자화 및 역 변환들을 적용하여, 계수 블록으로부터 잔차 블록을 재구성할 수도 있다. 재구성 유닛 (112) 은 재구성된 잔차 블록을, 예측 프로세싱 유닛 (100) 에 의해 생성된 하나 이상의 예측성 블록들로부터의 대응하는 샘플들에 부가하여, TU 와 연관된 재구성된 변환 블록을 생성할 수도 있다. 이러한 방식으로 CU 의 각각의 TU 에 대한 변환 블록들을 재구성함으로써, 비디오 인코더 (22) 는 CU 의 코딩 블록들을 재구성할 수도 있다.
필터 유닛 (114) 은 CU 와 연관된 코딩 블록들에서 블록킹 아티팩트들 (blocking artifacts) 을 감소시키기 위하여 하나 이상의 디블록킹 (deblocking) 동작들을 수행할 수도 있다. 디코딩된 픽처 버퍼 (116) 는, 필터 유닛 (114) 이 재구성된 코딩 블록들에 하나 이상의 디블록킹 동작들을 수행한 후에 재구성된 코딩 블록들을 저장할 수도 있다. 인터 예측 프로세싱 유닛 (120) 은 다른 픽처들의 PU 들에 대해 인터 예측을 수행하기 위하여 재구성된 코딩 블록들을 포함하는 레퍼런스 픽처를 사용할 수도 있다. 부가적으로, 인트라-예측 프로세싱 유닛 (126) 은 디코딩된 픽처 버퍼 (116) 에 있어서의 재구성된 코딩 블록들을 이용하여, CU 와 동일한 픽처에 있어서의 다른 PU들에 대해 인트라 예측을 수행할 수도 있다.
엔트로피 인코딩 유닛 (118) 은 비디오 인코더 (22) 의 다른 기능 컴포넌트들로부터 데이터를 수신할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (118) 은 양자화 유닛 (106) 으로부터 계수 블록들을 수신할 수도 있고 예측 프로세싱 유닛 (100) 으로부터 신택스 엘리먼트들을 수신할 수도 있다. 엔트로피 인코딩 유닛 (118) 은 인트로피 인코딩된 데이터를 생성하기 위하여 데이터에 대해 하나 이상의 엔트로피 인코딩 동작들을 수행할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (118) 은 CABAC 동작, 컨텍스트 적응형 가변 길이 코딩 (CAVLC) 동작, V2V (variable-to-variable) 길이 코딩 동작, 신택스 기반 컨텍스트 적응형 바이너리 산술 코딩 (SBAC) 동작, 확률 간격 파티셔닝 엔트로피 (PIPE) 코딩 동작, 지수-골롬 인코딩 동작, 또는 다른 타입의 엔트로피 인코딩 동작을 데이터에 대해 수행할 수도 있다. 비디오 인코더 (22) 는 엔트로피 인코딩 유닛 (118) 에 의해 생성된 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력할 수도 있다. 예를 들어, 비트 스트림은 본 개시의 기술에 따라 CU에 대한 파티션 구조를 나타내는 데이터를 포함할 수도 있다.
도 12 는 본 개시의 기법들을 구현하도록 구성된 예시적인 비디오 디코더 (30) 를 나타내는 블록도이다. 도 12 은 설명의 목적들을 위해 제공되며, 본 개시에서 넓게 예시화되고 설명된 바와 같은 기법들에 대해 한정하는 것은 아니다. 설명의 목적을 위하여, 본 개시물은 HEVC 코딩의 맥락에서 비디오 디코더 (30) 를 설명한다. 하지만, 본 개시의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
도 12 의 예에 있어서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (150), 비디오 데이터 메모리 (151), 예측 프로세싱 유닛 (152), 역 양자화 유닛 (154), 역 변환 프로세싱 유닛 (156), 재구성 유닛 (158), 필터 유닛 (160), 및 디코딩된 픽처 버퍼 (162) 를 포함한다. 예측 프로세싱 유닛 (152) 은, 모션 보상 유닛 (164) 및 인트라 예측 프로세싱 유닛 (166) 을 포함한다. 다른 예들에서, 비디오 디코더 (30) 는, 더 많거나, 더 적거나, 또는 상이한 기능 컴포넌트들을 포함할 수도 있다.
비디오 데이터 메모리 (151) 는 비디오 디코더 (30) 의 컴포넌트들에 의해 디코딩될 인코딩된 비디오 데이터, 이를 테면 인코딩된 비디오 비트스트림을 저장할 수도 있다. 비디오 데이터 메모리 (151) 에 저장된 비디오 데이터는, 예를 들어, 컴퓨터 판독가능 매체 (16) 로부터, 예를 들어, 카메라와 같은 로컬 비디오 소스로부터, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통해, 또는 물리적 데이터 저장 매체들에 액세스하는 것에 의해, 획득될 수도 있다. 비디오 데이터 메모리 (151) 는 인코딩된 비디오 비트스트림으로부터 인코딩된 비디오 데이터를 저장하는 코딩된 픽처 버퍼 (CPB) 를 형성할 수도 있다. 디코딩된 픽처 버퍼 (162) 는, 예를 들어, 인트라- 또는 인터-코딩 모드들에서 또는 출력에 대하여 비디오 디코더 (30) 에 의해 비디오 데이터를 디코딩함에 있어서 사용하기 위한 레퍼런스 비디오 데이터를 저장하는 레퍼런스 픽처 메모리일 수도 있다. 비디오 데이터 메모리 (151) 및 디코딩된 픽처 버퍼 (162) 는 동기식 DRAM (SDRAM) 을 포함한 동적 랜덤 액세스 메모리 (DRAM), 자기저항성 RAM (MRAM), 저항성 RAM (RRAM), 또는 다른 타입들의 메모리 디바이스들과 같은 다양한 메모리 디바이스들 중 임의의 메모리 디바이스에 의해 형성될 수도 있다. 비디오 데이터 메모리 (151) 및 디코딩된 픽처 버퍼 (162) 는 동일한 메모리 디바이스 또는 별도의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에 있어서, 비디오 데이터 메모리 (151) 는 비디오 디코더 (30) 의 다른 컴포넌트들과 온-칩형이거나 또는 그 컴포넌트들에 대하여 오프-칩형일 수도 있다. 비디오 데이터 메모리 (151) 는 도 1 의 저장 매체 (28) 와 동일하거나 또는 그것의 일부일 수도 있다.
비디오 데이터 메모리 (151) 는 비트스트림의 인코딩된 비디오 데이터 (예를 들어, NAL 유닛들) 를 수신하고 저장한다. 엔트로피 디코딩 유닛 (150) 은 비디오 데이터 메모리 (151) 로부터 인코딩된 비디오 데이터 (예를 들어, NAL 유닛들) 를 수신할 수도 있고 신택스 엘리먼트들을 얻기 위해 NAL 유닛들을 파싱할 수도 있다. 엔트로피 디코딩 유닛 (150) 은 NAL 유닛들에서 엔트로피 인코딩된 신택스 엘리먼트들을 엔트로피 디코딩할 수도 있다. 예측 프로세싱 유닛 (152), 역 양자화 유닛 (154), 역 변환 프로세싱 유닛 (156), 재구성 유닛 (158), 및 필터 유닛 (160) 은 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여 디코딩된 비디오 데이터를 생성할 수도 있다. 엔트로피 디코딩 유닛 (150) 은 엔트로피 인코딩 유닛 (118) 의 것과 일반적으로 역의 프로세스를 수행할 수도 있다.
본 개시의 일부 예들에 따르면, 엔트로피 디코딩 유닛 (150), 또는 비디오 디코더 (30) 의 다른 프로세싱 유닛은 비트스트림으로부터 신택스 엘리먼트들을 획득하는 일부로서 트리 구조를 결정할 수도 있다. 트리 구조는 CTB 와 같은 초기 비디오 블록이 코딩 유닛들과 같은 더 작은 비디오 블록들로 파티셔닝되는 방법을 특정할 수도 있다. 본 개시의 하나 이상의 기술들에 따르면, 트리 구조의 각 깊이 레벨에서의 트리 구조의 각각의 개별 비-리프 노드에 대해, 개별 비리프 노드에 대한 복수의 허용된 파티션 유형들이 존재하고, 개별 비리프 노드에 대응하는 비디오 블록은 복수의 허용 가능한 분할 패턴들 중 하나에 따라 개별 비-리프 노드의 자식 노드들에 대응하는 비디오 블록들로 파티셔닝된다.
비트스트림으로부터 신택스 엘리먼트들을 얻는 것에 더하여, 비디오 디코더 (30) 는 파티셔닝되지 않은 CU 에 대해 재구성 동작을 수행할 수도 있다. CU 에 대해 재구성 동작을 수행하기 위하여, 비디오 디코더 (30) 는 CU 의 각각의 TU 에 대해 재구성 동작을 수행할 수도 있다. CU 의 각각의 TU 에 대해 재구성 동작을 수행함으로써, 비디오 디코더 (30) 는 CU 의 잔차 블록들을 재구성할 수도 있다. 상술된 바와 같이, 본 개시의 일례에서, CU 는 단일 TU 를 포함한다.
CU 의 TU 에 대해 재구성 동작을 수행하는 부분으로서, 역 양자화 유닛 (154) 은 TU 와 연관된 계수 블록들을, 역 양자화, 즉, 탈 양자화할 수도 있다. 역양자화 유닛 (154) 이 계수 블록을 역양자화한 후, 역변환 프로세싱 유닛 (156) 은 TU 와 연관된 잔차 블록을 생성하기 위하여 계수 블록에 하나 이상의 역변환들을 적용할 수도 있다. 예를 들어, 역변환 프로세싱 유닛 (156) 은 역 DCT, 역 정수 변환, 역 KLT (Karhunen-Loeve transform), 역 회전 변환, 역 지향성 변환, 또는 다른 역변환을 계수 블록에 적용할 수도 있다.
CU 또는 PU 가 인트라 예측을 이용하여 인코딩되는 경우, 인트라 예측 프로세싱 유닛 (166) 은 PU 의 예측 블록들을 생성하기 위하여 인트라 예측을 수행할 수도 있다. 인트라 예측 프로세싱 유닛 (166) 은, 공간적으로 이웃하는 블록들 샘플들에 기초하여 PU 의 예측성 블록들을 생성하기 위하여 인트라 예측 모드를 사용할 수도 있다. 인트라 예측 프로세싱 유닛 (166) 은 비트스트림으로부터 획득된 하나 이상의 신택스 엘리먼트들에 기초하여 PU 에 대한 인트라 예측 모드를 결정할 수도 있다.
하나의 예에서, 인트라-예측 프로세싱 유닛 (166) 은 본 개시의 기법들을 구현하도록 구성될 수도 있다. 다른 예들에서, 다른 유닛들 또는 모듈들이 본 개시의 기법들의 일부 또는 전부를 구현하도록 구성될 수도 있다.
PU 가 인터 예측을 이용하여 인코딩되는 경우, 엔트로피 디코딩 유닛 (150) 은 PU 를 위한 모션 정보를 결정할 수도 있다. 모션 보상 유닛 (164) 은 PU 의 모션 정보에 기초하여, 하나 이상의 레퍼런스 블록들을 결정할 수도 있다. 모션 보상 유닛 (164) 은, 하나 이상의 레퍼런스 블록들에 기초하여, PU 에 대한 예측성 블록들 (예를 들어, 예측성 루마, Cb 및 Cr 블록들) 을 생성할 수도 있다. 위에 설명된 바와 같이, CU 는 단일의 PU 만을 포함할 수도 있다. 즉, CU 는 다수의 PU 들로 분할되지 않을 수도 있다.
재구성 유닛 (158) 은, CU 에 대한 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 을 재구성하기 위하여, 적용가능한 바에 따라, CU 의 TU 들에 대한 변환 블록들 (예를 들어, 루마, Cb 및 Cr 변환 블록들) 및 CU 의 PU 들의 예측성 블록들 (예를 들어, 루마, Cb 및 Cr 블록들), 즉, 인트라 예측 데이터 또는 인터 예측 데이터 중의 어느 하나를 이용할 수도 있다. 예를 들어, 재구성 유닛 (158) 은 CU 의 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 을 재구성하기 위하여 변환 블록들 (예를 들어, 루마, Cb 및 Cr 변환 블록들) 의 샘플들을 예측성 블록들 (예를 들어, 루마, Cb 및 Cr 예측성 블록들) 의 대응하는 샘플들에 추가할 수도 있다.
필터 유닛 (160) 은 CU 의 코딩 블록들과 연관된 블록킹 아티팩트들을 감소시키기 위하여 디블록킹 동작을 수행할 수도 있다. 비디오 디코더 (30) 는 CU 의 코딩 블록을 디코딩된 픽처 버퍼 (162) 에 저장할 수도 있다. 디코딩된 픽처 버퍼 (162) 는 후속 모션 보상, 인트라 예측, 및 도 1 의 디스플레이 디바이스 (32) 와 같은 디스플레이 디바이스 상으로의 프리젠테이션을 위해 레퍼런스 픽처들을 제공할 수도 있다. 실례로, 비디오 디코더 (30) 는, 디코딩된 픽처 버퍼 (162) 에서의 블록들에 기초하여, 다른 CU들의 PU들에 대해 인트라 예측 또는 인터 예측 동작들을 수행할 수도 있다.
비디오 디코더는 현재 블록의 디코딩된 버전을 포함하는 현재 픽처의 디코딩된 버전을 출력한다. 비디오 디코더가 디스플레이가능한 디코딩된 비디오를 출력하도록 구성되는 비디오 디코디일 때, 비디오 디코더는 예를 들어, 디스플레이 디바이스에 현재 픽처의 디코딩된 버전을 출력할 수도 있다. 디코딩이 비디오 인코딩 프로세스의 디코딩 루프의 부분으로서 수행될 때, 비디오 디코더는 비디오 데이터의 다른 픽처를 인코딩하는데 사용하기 위한 레퍼런스 픽처로서 현재 픽처의 디코딩된 버전을 저장할 수도 있다.
본 개시의 특정 양태들이 예시의 목적을 위해 HEVC 표준의 확장들에 관하여 설명되었다. 하지만, 본 개시에 설명된 기법들은, 아직 개발되지 않은 다른 표준 또는 독점적 비디오 코딩 프로세스들을 포함한, 다른 비디오 코딩 프로세스들에 유용할 수도 있다.
본 개시에서 설명된 바와 같은 비디오 코더는 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 유사하게, 비디오 코딩 유닛은 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 마찬가지로, 비디오 코딩은, 적용가능한 바에 따라, 비디오 인코딩 또는 비디오 디코딩을 지칭할 수도 있다. 이 개시물에서, 문구 “~ 에 기초하여” 는 오직 기초하여, 적어도 부분적으로 기초하여, 또는 어떤 방식으로 기초하여를 나타낼 수도 있다. 본 개시는 하나 이상의 샘플 블록들 및 하나 이상의 샘플 블록들의 샘플들을 코딩하는데 이용된 신택스 구조들을 지칭하기 위하여 용어 "비디오 유닛", "비디오 블록" 또는 "블록" 을 이용할 수도 있다. 비디오 유닛들의 예시적인 타입들은 CTU, CU, PU, 변환 유닛 (TU), 매크로블록, 매크로블록 파티션 등을 포함할 수도 있다. 일부 맥락에서는, PU에 대한 논의가 매크로블록 또는 매크로블록 파티션에 대한 논의와 상호 교환될 수도 있다. 비디오 블록들의 예시적인 타입들은 코딩 트리 블록들, 코딩 블록들, 및 다른 타입들의 비디오 데이터의 블록들을 포함할 수도 있다.
이 개시의 기법들은 무선 애플리케이션들 또는 세팅들로 반드시 제한되는 것은 아니다. 기법들은, 공중 경유 (over-the-air) 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, HTTP 상으로의 동적 적응적 스트리밍 (DASH) 과 같은 인터넷 스트리밍 비디오 송신들, 데이터 저장 매체 상으로 인코딩되는 디지털 비디오, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션들과 같은 다양한 멀티미디어 애플리케이션들 중 임의의 것을 지원하여 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 시스템은, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 비디오 텔레포니와 같은 애플리케이션들을 지원하기 위해 일방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
용어 "컴퓨터 판독가능 매체" 는, 휴대 또는 비휴대 저장 디바이스, 광학 저장 디바이스, 및 명령(들) 및/또는 데이터를 저장, 포함 또는 운반할 수 있는 다양한 다른 매체를 포함하지만, 이에 한정되지는 않는다. 컴퓨터 판독가능 매체는 데이터가 저장될 수 있고 반송파 및/또는 무선 또는 유선 연결을 통해 전파되는 일시적인 전자 신호를 포함하지 않는 비일시적인 매체를 포함할 수도 있다. 비일시적인 매체의 예는 자기 디스크 또는 테이프, 콤팩트 디스크 (CD) 또는 디지털 다용도 디스크 (DVD)와 같은 광학 저장 매체, 플래시 메모리, 메모리 또는 메모리 장치를 포함하나, 이에 한정되는 것은 아니다. 컴퓨터 판독가능 매체는 프로시저, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들, 또는 프로그램 스테이트먼트들의 임의의 조합을 나타낼 수도 있는 코드 및/또는 머신 실행가능 명령들을 저장할 수도 있다. 코드 세그먼트는, 정보, 데이터, 인수들 (arguments), 파라미터들, 또는 메모리 콘텐츠를 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 커플링될 수도 있다. 정보, 인수들, 파라미터들, 데이터 등은 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 전송 등을 포함한 임의의 적합한 수단을 통해 전달, 포워딩, 또는 전송될 수도 있다.
일부 실시형태들에서, 컴퓨터 판독가능 저장 디바이스들, 매체들, 및 메모리들은 비트 스트림 등을 포함하는 무선 신호 또는 케이블을 포함할 수 있다. 하지만, 언급될 때, 비일시적 컴퓨터 판독가능 저장 매체들은 에너지, 캐리어 신호들, 전자기 파들, 및 신호들 그 자체와 같은 매체들을 명시적으로 배제한다.
구체적 상세들은 본원에 제공된 실형태들 및 예들의 철저한 이해를 제공하기 위하여 상기 설명에서 제공되었다. 하지만, 실시형태들은 이들 특정 상세들 없이 실시될 수도 있음이 당업자에 의해 이해될 것이다. 설명의 명확성을 위해, 일부 경우들에서, 본 기술은 디바이스들, 디바이스 컴포넌트들, 소프트웨어에서 포함된 방법에서의 단계들 또는 루틴들, 또는 하드웨어 및 소프트웨어의 조합들을 포함하는 기능적 블록들을 포함하는 개별 기능적 블록들을 포함하는 것으로서 제시될 수도 있다. 도면들에서 도시되고/거나 본원에 기술된 것들 이외의 추가적인 컴포넌트들이 사용될 수도 있다. 예를 들어, 회로들, 시스템들, 네트워크들, 프로세스들, 및 다른 컴포넌트들은 그 실시형태들을 불필요한 상세로 불명료하게 하지 않기 위해 블록도 형태의 컴포넌트들로서 도시될 수도 있다. 다른 예들에서, 잘 알려진 회로들, 프로세스들, 알고리즘들, 구조들, 및 기술들은, 실시형태들을 불명료하게 하는 것을 회피하기 위해 불필요한 상세 없이 도시될 수도 있다.
개별 실시형태들은, 플로우차트, 흐름도, 데이터 흐름도, 구조도, 또는 블록도로서 도시되는 프로세스 또는 방법으로서 위에서 설명될 수도 있다. 비록 플로우차트가 동작들을 순차적인 프로세스로서 기술할 수도 있지만, 동작들 중 다수는 병렬로 또는 동시에 수행될 수 있다. 또한, 동작들의 순서가 재배열될 수도 있다. 프로세스는 그것의 동작들이 완료될 때 종료되지만, 도면에 포함되지 않은 추가 단계들을 가질 수 있을 것이다. 프로세스는 방법, 함수, 프로시저, 서브루틴, 서브프로그램 등에 대응할 수도 있다. 프로세스가 함수에 대응할 경우, 그 종료는 그 함수의 호출 함수 또는 메인 함수로의 복귀에 대응할 수 있다.
상술된 예들에 따른 프로세스들 및 방법들은 컴퓨터 판독가능 매체들에 저장되거나 그 외에 컴퓨터 판독가능 매체들로부터 이용가능한 컴퓨터 실행가능 명령들을 이용하여 구현될 수 있다. 이러한 명령들은, 예를 들어, 범용 컴퓨터, 특수 목적 컴ㅍ터, 또는 프로세싱 디바이스가 특정 기능 또는 기능들의 그룹을 수행하게 하거나 그 외에 수행하도록 구성하는 명령들 및 데이터를 포함할 수 있다. 사용되는 컴퓨터 리소스들의 부분들은 네트워크를 통해 액세스가능할 수 있다. 컴퓨터 실행가능 명령들은, 예를 들어, 어셈블리 언어, 펌웨어, 소스 코드 등과 같은 이진수들, 중간 포맷 명령들일 수도 있다. 명령들, 사용되는 정보, 및/또는, 설명된 예들에 따른 방법들 동안 형성된 정보를 저장하기 위해 사용될 수도 있는 컴퓨터 판독가능 매체들의 예들은 자기 또는 광학 디스크들, 플래시 메모리, 비휘발성 메모리가 제공된 USB 디바이스들, 네트워킹된 저장 디바이스들 등을 포함한다.
이들 개시물들에 따른 프로세스들 및 방법들을 구현하는 디바이스들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 디스크립션 언어, 또는 ?蜚㈏? 임의의 조합을 포함할 수 있고, 다양한 폼 팩터들 중 임의이 것을 취할 수 있다. 소프트웨어, 펌웨어, 미들웨어, 또는 마이크로코드로 구현될 경우, 필요한 태스크들을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들 (예를 들어, 컴퓨터 프로그램 제품) 은 컴퓨터 판독가능 또는 머신 판독가능 매체에 저장될 수도 있다. 프로세서(들)는 필요한 태스크들을 수행할 수도 있다. 폼 팩터들의 통상적인 예들은 랩톱들, 스마트 폰들, 모바일 폰들, 태블릿 디바이스들 또는 다른 소형 퍼스널 컴퓨터들, 퍼스널 디지털 어시스턴트들, 랙마운트 디바이스들, 독립형 디바이스들 등을 포함한다. 본원에 기술된 기능성은 또한, 주변장치들 또는 추가 카드들에서 구현될 수 있다. 이러한 기능성은 또한, 추가적인 예에 의해, 단일 디바이스에서 실행되는 상이한 프로세스들 또는 상이한 칩들 중에서 회로 보드 상에서 구현될 수 있다.
명령들, 이러한 명령들을 운반하기 위한 매체들, 그것들을 시행하기 위한 컴퓨팅 리소스들, 및 이러한 컴퓨팅 리소스들을 지원하기 위한 다른 구조들은 본 개시물에서 설명될 기능들을 제공하기 위한 예시적인 수단들이다.
전술한 설명에서, 본 출원의 양태들은 그것들의 특정 실시형태들을 참조하여 설명되었지만, 당업자는 본원이 이에 제한되지 않는다는 것을 인식할 것이다. 따라서, 본 출원의 예시적인 실시형태들이 본원에 상세히 설명되었지만, 본 발명의 개념은 달리 다양하게 구체화되고 채택될 수 있으며, 첨부된 청구 범위는 선행 기술에 의해 제한되는 것을 제외하고는 그러한 변형을 포함하는 것으로 해석되도록 의도된다. 전술한 애플리케이션의 다양한 특징들 및 양태들은 개별적으로 또는 공동으로 사용될 수도 있다. 또한, 실시형태들은 본 명세서의 더 넓은 사상 및 범위를 벗어나지 않으면서 본 명세서에 기재된 것 이외의 임의의 수의 환경들 및 애플리케이션들에서 이용될 수 있다. 이에 따라, 명세서 및 도면들은 한정적 의미보다는 예시적 의미로 간주되어야 한다. 예시의 목적 상, 방법은 특정 순서로 기술되었다. 대안적인 실시형태들에서, 상기 방법들은 설명된 것과 다른 순서로 수행될 수 있다는 것을 이해해야 한다.
당업자는 본 명세서에 사용된 미만 ("<") 및 초과 (">") 기호들 또는 용어가 본 설명의 범위로부터 벗어남 없이 각각 이하 ("≤") 및 이상 ("≥") 기호들로 대체될 수 있음을 알 것이다.
컴포넌트들이 특정 동작을 수행하도록 "구성된" 것으로 기술되는 경우, 그러한 구성은 예를 들어, 전자 회로 또는 다른 하드웨어를 설계하여 그 동작을 수행하는 것에 의해, 프로그래밍 가능한 전자 회로 (예를 들어, 마이크로프로세서 또는 다른 적절한 전자 회로) 를 프로그래밍하여 그 동작을 수행하는 것에 의해 또는 이들의 임의의 조합에 의해, 달성될 수 있다.
문구 “~ 에 커플링된 (coupled to)” 은 다른 컴포넌트에 직접적으로 또는 간접적으로 물리적으로 접속된 임의의 컴포넌트, 및/또는, 다른 컴포넌트와 직접적으로 또는 간접적으로 통신하는 (예컨대, 유선 또는 무선 접속, 및/또는 다른 적합한 통신 인터페이스를 통해 다른 컴포넌트에 접속된) 임의의 컴포넌트를 지칭한다.
세트 “중의 적어도 하나” 를 인용하는 청구항 언어 또는 기타 언어는 그 세트 중의 하나의 멤버 또는 그 세트의 다수의 멤버들이 청구항을 만족하는 것을 나타낸다. 예를 들어, “A 및 B 중 적어도 하나” 를 인용하는 청구항 언어는 A, B, 또는 A 및 B 를 의미한다.
본원에 개시된 실시형태들과 관련하여 설명된 다양한 예시적인 논리 블록, 모듈, 회로, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 조합으로 구현될 수도 있다. 하드웨어와 소프트웨어의 이러한 상호대체 가능성을 분명히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 일반적으로 그들의 기능의 관점에서 상기 설명되었다. 이러한 기능성이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지는 전체 시스템에 부과된 설계 제약들 및 특정한 애플리케이션에 의존한다. 당업자는 설명된 기능을 각각의 특정 애플리케이션에 대하여 다양한 방식들로 구현할 수도 있지만, 그러한 구현의 결정들이 본 출원의 범위로부터의 일탈을 야기하는 것으로서 해석되지는 않아야 한다.
본원에 기술된 기법들은 또한 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수도 있다. 그러한 기술들은 범용 컴퓨터들, 무선 통신 디바이스 핸드셋들, 또는 무선 통신 디바이스 핸드셋들 및 다른 디바이스들에서의 애플리케이션을 포함하여 다중의 이용들을 갖는 집적 회로 디바이스들과 같은 임의의 다양한 디바이스들에서 구현될 수도 있다. 모듈들 또는 컴포넌트들로서 설명된 임의의 특징들은 집적된 로직 디바이스에서 함께 또는 별개지만 상호운용가능한 로직 디바이스들로서 별도로 구현될 수도 있다. 소프트웨어에서 구현되면, 그 기법들은, 실행될 경우 상기 설명된 방법들 중 하나 이상을 수행하는 명령들을 포함하는 프로그램 코드를 포함하는 컴퓨터 판독가능 데이터 저장 매체에 의해 적어도 부분적으로 실현될 수도 있다. 컴퓨터 판독가능 데이터 저장 매체는 컴퓨터 프로그램 제품의 부분을 형성할 수도 있으며, 이는 패키징 재료들을 포함할 수도 있다. 컴퓨터 판독가능 매체는 동기식 동적 랜덤 액세스 메모리 (SDRAM) 와 같은 랜덤 액세스 메모리 (RAM), 판독 전용 메모리 (ROM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 전기적으로 소거가능한 프로그래밍가능 판독 전용 메모리 (EEPROM), 플래시 메모리, 자기 또는 광학 데이터 저장 매체들 등과 같은 메모리 또는 데이터 저장 매체들을 포함할 수도 있다. 그 기법들은, 부가적으로 또는 대안적으로, 전파된 신호들 또는 파들과 같이, 명령들 또는 데이터 구조들의 형태로 프로그램 코드를 수록하거나 통신하고 그리고 컴퓨터에 의해 액세스, 판독 및/또는 실행될 수 있는 컴퓨터 판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수도 있다.
프로그램 코드는, 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적 회로들 (ASIC들), 필드 프로그래밍가능 로직 어레이들 (FPGA들), 또는 다른 등가의 집적된 또는 별개의 로직 회로부와 같은 하나 이상의 프로세서들을 포함할 수도 있는 프로세서에 의해 실행될 수도 있다. 그러한 프로세서는 본 개시에서 설명된 기법들 중 임의의 기법을 수행하도록 구성될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안적으로, 그 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로 제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합 ,예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로서 구현될 수도 있다. 이에 따라, 본 명세서에서 사용된 바와 같은 용어 "프로세서" 는 전술한 구조, 전술한 구조의 임의의 조합, 또는 본 명세서에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 또는 장치 중 임의의 것을 지칭할 수도 있다. 부가적으로, 일부 양태들에 있어서, 본 명세서에서 설명된 기능은, 인코딩 및 디코딩을 위해 구성된 전용 소프트웨어 모듈들 또는 하드웨어 모듈들 내에서 제공되거나, 또는 결합된 비디오 인코더-디코더 (CODEC) 에 통합될 수도 있다.

Claims (71)

  1. 비디오 데이터를 디코딩하는 방법으로서,
    상기 방법은,
    비디오 데이터의 현재 블록을 획득하는 단계;
    상기 현재 블록의 사이즈를 결정하는 단계;
    상기 현재 블록의 상기 사이즈에 기초하여, 상기 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하는 단계;
    상기 광각 인트라-예측 모드를 이용하여 상기 현재 블록에 대한 예측 블록을 결정하는 단계로서, 상기 예측 블록은 복수의 예측 샘플들을 포함하는, 상기 현재 블록에 대한 예측 블록을 결정하는 단계;
    포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 단계로서, 상기 예측 샘플을 수정하는 단계는:
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계; 및
    결정된 상기 하나 이상의 레퍼런스 샘플들에 기초하여 상기 수정된 예측 샘플을 생성하기 위해 상기 예측 샘플을 수정하는 단계를 포함하는, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 단계; 및
    상기 수정된 예측 샘플 및 잔차 값에 기초하여 상기 현재 블록의 샘플을 재구성하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 현재 블록의 사이즈를 결정하는 단계는, 상기 블록의 폭 및 상기 블록의 높이가 상이한 사이즈들임을 결정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 상기 하나 이상의 레퍼런스 샘플들은, 상기 예측 샘플에 대한 상기 광각 인트라-예측 모드의 각도를 이용하여 결정되는, 비디오 데이터를 디코딩하는 방법.
  4. 제 3 항에 있어서,
    상기 광각 인트라-예측 모드의 상기 각도는 상기 예측 샘플에 대해 -135도 미만이거나 45도보다 더 큰, 비디오 데이터를 디코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 방법은, 상기 예측 샘플의 x-좌표 및 y-좌표에 기초하여 하나 이상의 가중치들을 결정하는 단계를 더 포함하고,
    상기 예측 샘플을 수정하는 단계는, 상기 결정된 하나 이상의 레퍼런스 샘플들, 결정된 상기 하나 이상의 가중치들, 및 상기 예측 샘플에 기초하여, 상기 수정된 예측 샘플을 생성하기 위해 상기 예측 샘플을 수정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계는, 상기 예측 블록에서의 상기 예측 샘플의 각각의 x-좌표 및 y-좌표 양자와는 상이한 x-좌표 및 y-좌표 양자를 갖는 상기 하나 이상의 레퍼런스 샘플들을 결정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계는,
    상기 현재 블록 위에 있는 로우를 결정하는 단계;
    결정된 상기 로우에서의 x-좌표를 결정하는 단계로서, 상기 결정된 로우에서의 상기 x-좌표는 상기 예측 샘플의 x-좌표 플러스 상기 예측 샘플의 y-좌표 플러스 1 과 동일한, 상기 결정된 로우에서의 x-좌표를 결정하는 단계; 및
    상기 결정된 로우 및 결정된 상기 x-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계는,
    상기 현재 블록 좌측에 있는 칼럼을 결정하는 단계;
    결정된 상기 칼럼에서의 y-좌표를 결정하는 단계로서, 상기 결정된 칼럼에서의 상기 y-좌표는 상기 예측 샘플의 y-좌표 플러스 상기 예측 샘플의 x-좌표 플러스 1 과 동일한, 상기 결정된 칼럼에서의 y-좌표를 결정하는 단계; 및
    상기 결정된 칼럼 및 결정된 상기 y-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  9. 제 1 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계는,
    상기 현재 블록 위에 있는 로우를 결정하는 단계;
    결정된 상기 로우에서의 x-좌표를 결정하는 단계로서, 상기 결정된 로우에서의 상기 x-좌표는 상기 예측 샘플에 대한 상기 광각 인트라-예측 모드의 각도에 기초하는, 상기 결정된 로우에서의 x-좌표를 결정하는 단계; 및
    상기 결정된 로우 및 결정된 상기 x-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  10. 제 9 항에 있어서,
    상기 결정된 로우에서의 x-좌표를 결정하는 단계는,
    상기 광각 인트라-예측 모드의 상기 각도의 코탄젠트 또는 탄젠트 중 하나를 결정하는 단계; 및
    상기 광각 인트라-예측 모드의 상기 각도의 상기 코탄젠트 또는 탄젠트 중 하나, 상기 예측 샘플의 x-좌표, 및 상기 예측 샘플의 y-좌표에 기초하여 상기 결정된 로우에서의 상기 x-좌표를 결정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  11. 제 1 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계는,
    상기 현재 블록 좌측에 있는 칼럼을 결정하는 단계;
    결정된 상기 칼럼에서의 y-좌표를 결정하는 단계로서, 상기 결정된 칼럼에서의 상기 y-좌표는 상기 광각 인트라-예측 모드의 각도에 기초하는, 상기 결정된 칼럼에서의 y-좌표를 결정하는 단계; 및
    상기 결정된 칼럼 및 결정된 상기 y-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  12. 제 11 항에 있어서,
    상기 결정된 칼럼에서의 y-좌표를 결정하는 단계는,
    상기 광각 인트라-예측 모드의 상기 각도의 코탄젠트 또는 탄젠트 중 하나를 결정하는 단계; 및
    상기 광각 인트라-예측 모드의 상기 각도의 상기 코탄젠트 또는 탄젠트 중 하나, 상기 예측 샘플의 x-좌표, 및 상기 예측 샘플의 y-좌표에 기초하여 상기 결정된 칼럼에서의 상기 y-좌표를 결정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  13. 제 1 항에 있어서,
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계는,
    상기 광각 인트라-예측 모드에 기초하여 하나 이상의 샘플들의 세트를 결정하는 것; 및
    상기 하나 이상의 레퍼런스 샘플들을 생성하기 위해 하나 이상의 샘플들의 상기 세트를 보간하는 것, 오프셋을 갖고 라운딩하는 것, 또는 오프셋 없이 라운딩하는 것 중 적어도 하나를 포함하는, 비디오 데이터를 디코딩하는 방법.
  14. 제 1 항에 있어서,
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계는,
    상기 광각 인트라-예측 모드에 기초하여 식별된 상기 현재 블록에 대해 외부에 있는 하나 이상의 샘플들이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 단계; 및
    상기 레퍼런스 라인 버퍼에 저장된 최종 레퍼런스 샘플에 기초하여 상기 하나 이상의 레퍼런스 샘플들을 결정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  15. 제 1 항에 있어서,
    상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 단계는 상기 예측 블록의 제 1 예측 샘플을 수정하는 단계를 포함하고, 상기 하나 이상의 레퍼런스 샘플들은 하나 이상의 레퍼런스 샘플들의 제 1 세트를 포함하며, 상기 방법은:
    상기 예측 블록의 제 2 예측 샘플에 대해, 상기 제 2 예측 샘플에 대한 하나 이상의 레퍼런스 샘플들의 제 2 세트의 적어도 하나의 레퍼런스 샘플이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것; 및
    상기 제 2 예측 샘플에 PDPC 를 적용하지 않는 것 또는 레퍼런스 라인 버퍼에서 이용가능한 레퍼런스 샘플들만을 사용하여 PDPC 를 적용하는 것 중 하나를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  16. 제 1 항에 있어서,
    상기 광각 인트라-예측 모드는 DC, 평면, 수평, 또는 수직 인트라-예측 모드가 아닌, 비디오 데이터를 디코딩하는 방법.
  17. 비디오 데이터를 인코딩하는 방법으로서,
    상기 방법은,
    비디오 데이터의 현재 블록을 획득하는 단계;
    상기 현재 블록의 사이즈를 결정하는 단계;
    상기 현재 블록의 상기 사이즈에 기초하여, 상기 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하는 단계;
    상기 광각 인트라-예측 모드를 이용하여 상기 현재 블록에 대한 예측 블록을 결정하는 단계로서, 상기 예측 블록은 복수의 예측 샘플들을 포함하는, 상기 현재 블록에 대한 예측 블록을 결정하는 단계;
    포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 단계로서, 상기 예측 샘플을 수정하는 단계는:
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계; 및
    결정된 상기 하나 이상의 레퍼런스 샘플들에 기초하여 상기 수정된 예측 샘플을 생성하기 위해 상기 예측 샘플을 수정하는 단계를 포함하는, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 단계;
    수정된 상기 예측 샘플 및 상기 현재 블록에서의 샘플 값에 기초하여 잔차 블록에 대한 잔차 값을 결정하는 단계; 및
    상기 잔차 값을 나타내는 정보를 시그널링하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  18. 제 17 항에 있어서,
    상기 현재 블록의 사이즈를 결정하는 단계는, 상기 블록의 폭 및 상기 블록의 높이가 상이한 사이즈들임을 결정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  19. 제 17 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 상기 하나 이상의 레퍼런스 샘플들은, 상기 예측 샘플에 대한 상기 광각 인트라-예측 모드의 각도를 이용하여 결정되는, 비디오 데이터를 인코딩하는 방법.
  20. 제 19 항에 있어서,
    상기 광각 인트라-예측 모드의 상기 각도는 상기 예측 샘플에 대해 -135도 미만이거나 45도보다 더 큰, 비디오 데이터를 인코딩하는 방법.
  21. 제 17 항에 있어서,
    상기 방법은, 상기 예측 샘플의 x-좌표 및 y-좌표에 기초하여 하나 이상의 가중치들을 결정하는 단계를 더 포함하고,
    상기 예측 샘플을 수정하는 단계는, 상기 결정된 하나 이상의 레퍼런스 샘플들, 결정된 상기 하나 이상의 가중치들, 및 상기 예측 샘플에 기초하여, 상기 수정된 예측 샘플을 생성하기 위해 상기 예측 샘플을 수정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  22. 제 17 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계는, 상기 예측 블록에서의 상기 예측 샘플의 각각의 x-좌표 및 y-좌표 양자와는 상이한 x-좌표 및 y-좌표 양자를 갖는 상기 하나 이상의 레퍼런스 샘플들을 결정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  23. 제 17 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계는,
    상기 현재 블록 위에 있는 로우를 결정하는 단계;
    결정된 상기 로우에서의 x-좌표를 결정하는 단계로서, 상기 결정된 로우에서의 상기 x-좌표는 상기 예측 샘플의 x-좌표 플러스 상기 예측 샘플의 y-좌표 플러스 1 과 동일한, 상기 결정된 로우에서의 x-좌표를 결정하는 단계; 및
    상기 결정된 로우 및 결정된 상기 x-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  24. 제 17 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계는,
    상기 현재 블록 좌측에 있는 칼럼을 결정하는 단계;
    결정된 상기 칼럼에서의 y-좌표를 결정하는 단계로서, 상기 결정된 칼럼에서의 상기 y-좌표는 상기 예측 샘플의 y-좌표 플러스 상기 예측 샘플의 x-좌표 플러스 1 과 동일한, 상기 결정된 칼럼에서의 y-좌표를 결정하는 단계; 및
    상기 결정된 칼럼 및 결정된 상기 y-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  25. 제 17 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계는,
    상기 현재 블록 위에 있는 로우를 결정하는 단계;
    결정된 상기 로우에서의 x-좌표를 결정하는 단계로서, 상기 결정된 로우에서의 상기 x-좌표는 상기 예측 샘플에 대한 상기 광각 인트라-예측 모드의 각도에 기초하는, 상기 결정된 로우에서의 x-좌표를 결정하는 단계; 및
    상기 결정된 로우 및 결정된 상기 x-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  26. 제 25 항에 있어서,
    상기 결정된 로우에서의 x-좌표를 결정하는 단계는,
    상기 광각 인트라-예측 모드의 상기 각도의 코탄젠트 또는 탄젠트 중 하나를 결정하는 단계; 및
    상기 광각 인트라-예측 모드의 상기 각도의 상기 코탄젠트 또는 탄젠트 중 하나, 상기 예측 샘플의 x-좌표, 및 상기 예측 샘플의 y-좌표에 기초하여 상기 결정된 로우에서의 상기 x-좌표를 결정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  27. 제 17 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계는,
    상기 현재 블록 좌측에 있는 칼럼을 결정하는 단계;
    결정된 상기 칼럼에서의 y-좌표를 결정하는 단계로서, 상기 결정된 칼럼에서의 상기 y-좌표는 상기 광각 인트라-예측 모드의 각도에 기초하는, 상기 결정된 칼럼에서의 y-좌표를 결정하는 단계; 및
    상기 결정된 칼럼 및 결정된 상기 y-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  28. 제 27 항에 있어서,
    상기 결정된 칼럼에서의 y-좌표를 결정하는 단계는,
    상기 광각 인트라-예측 모드의 상기 각도의 코탄젠트 또는 탄젠트 중 하나를 결정하는 단계; 및
    상기 광각 인트라-예측 모드의 상기 각도의 상기 코탄젠트 또는 탄젠트 중 하나, 상기 예측 샘플의 x-좌표, 및 상기 예측 샘플의 y-좌표에 기초하여 상기 결정된 칼럼에서의 상기 y-좌표를 결정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  29. 제 17 항에 있어서,
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계는,
    상기 광각 인트라-예측 모드에 기초하여 하나 이상의 샘플들의 세트를 결정하는 것; 및
    상기 하나 이상의 레퍼런스 샘플들을 생성하기 위해 하나 이상의 샘플들의 상기 세트를 보간하는 것, 오프셋을 갖고 라운딩하는 것, 또는 오프셋 없이 라운딩하는 것 중 적어도 하나를 포함하는, 비디오 데이터를 인코딩하는 방법.
  30. 제 17 항에 있어서,
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 단계는,
    상기 광각 인트라-예측 모드에 기초하여 식별된 상기 현재 블록에 대해 외부에 있는 하나 이상의 샘플들이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 단계; 및
    상기 레퍼런스 라인 버퍼에 저장된 최종 레퍼런스 샘플에 기초하여 상기 하나 이상의 레퍼런스 샘플들을 결정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  31. 제 17 항에 있어서,
    상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 단계는 상기 예측 블록의 제 1 예측 샘플을 수정하는 단계를 포함하고, 상기 하나 이상의 레퍼런스 샘플들은 하나 이상의 레퍼런스 샘플들의 제 1 세트를 포함하며, 상기 방법은:
    상기 예측 블록의 제 2 예측 샘플에 대해, 상기 제 2 예측 샘플에 대한 하나 이상의 레퍼런스 샘플들의 제 2 세트의 적어도 하나의 레퍼런스 샘플이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것; 및
    상기 제 2 예측 샘플에 PDPC 를 적용하지 않는 것 또는 레퍼런스 라인 버퍼에서 이용가능한 레퍼런스 샘플들만을 사용하여 PDPC 를 적용하는 것 중 하나를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  32. 제 17 항에 있어서,
    상기 광각 인트라-예측 모드는 DC, 평면, 수평, 또는 수직 인트라-예측 모드가 아닌, 비디오 데이터를 인코딩하는 방법.
  33. 비디오 데이터를 디코딩하기 위한 디바이스로서,
    상기 디바이스는,
    하나 이상의 예측 블록들을 저장하도록 구성된 메모리; 및
    고정 기능 또는 프로그래밍가능 회로 중 적어도 하나를 포함하는 비디오 디코더를 포함하고,
    상기 비디오 디코더는,
    비디오 데이터의 현재 블록을 획득하고;
    상기 현재 블록의 사이즈를 결정하며;
    상기 현재 블록의 상기 사이즈에 기초하여, 상기 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하고;
    상기 광각 인트라-예측 모드를 이용하여 상기 현재 블록에 대한 예측 블록을 결정하는 것으로서, 상기 예측 블록은 복수의 예측 샘플들을 포함하는, 상기 현재 블록에 대한 예측 블록을 결정하는 것을 행하며;
    포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것으로서, 상기 예측 샘플을 수정하는 것은:
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것; 및
    결정된 상기 하나 이상의 레퍼런스 샘플들에 기초하여 상기 수정된 예측 샘플을 생성하기 위해 상기 예측 샘플을 수정하는 것을 포함하는, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것을 행하고; 그리고
    상기 수정된 예측 샘플 및 잔차 값에 기초하여 상기 현재 블록의 샘플을 재구성하도록
    구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  34. 제 33 항에 있어서,
    상기 현재 블록의 사이즈를 결정하는 것은, 상기 블록의 폭 및 상기 블록의 높이가 상이한 사이즈들임을 결정하는 것을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  35. 제 33 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 상기 하나 이상의 레퍼런스 샘플들은, 상기 예측 샘플에 대한 상기 광각 인트라-예측 모드의 각도를 이용하여 결정되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  36. 제 35 항에 있어서,
    상기 광각 인트라-예측 모드의 상기 각도는 상기 예측 샘플에 대해 -135도 미만이거나 45도보다 더 큰, 비디오 데이터를 디코딩하기 위한 디바이스.
  37. 제 33 항에 있어서,
    상기 비디오 디코더는,
    상기 예측 샘플의 x-좌표 및 y-좌표에 기초하여 하나 이상의 가중치들을 결정하도록 구성되고,
    상기 예측 샘플을 수정하는 것은, 상기 결정된 하나 이상의 레퍼런스 샘플들, 결정된 상기 하나 이상의 가중치들, 및 상기 예측 샘플에 기초하여, 상기 수정된 예측 샘플을 생성하기 위해 상기 예측 샘플을 수정하는 것을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  38. 제 33 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 상기 예측 블록에서의 상기 예측 샘플의 각각의 x-좌표 및 y-좌표 양자와는 상이한 x-좌표 및 y-좌표 양자를 갖는 상기 하나 이상의 레퍼런스 샘플들을 결정하는 것을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  39. 제 33 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은,
    상기 현재 블록 위에 있는 로우를 결정하는 것;
    결정된 상기 로우에서의 x-좌표를 결정하는 것으로서, 상기 결정된 로우에서의 상기 x-좌표는 상기 예측 샘플의 x-좌표 플러스 상기 예측 샘플의 y-좌표 플러스 1 과 동일한, 상기 결정된 로우에서의 x-좌표를 결정하는 것; 및
    상기 결정된 로우 및 결정된 상기 x-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  40. 제 33 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은,
    상기 현재 블록 좌측에 있는 칼럼을 결정하는 것;
    결정된 상기 칼럼에서의 y-좌표를 결정하는 것으로서, 상기 결정된 칼럼에서의 상기 y-좌표는 상기 예측 샘플의 y-좌표 플러스 상기 예측 샘플의 x-좌표 플러스 1 과 동일한, 상기 결정된 칼럼에서의 y-좌표를 결정하는 것; 및
    상기 결정된 칼럼 및 결정된 상기 y-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  41. 제 33 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은,
    상기 현재 블록 위에 있는 로우를 결정하는 것;
    결정된 상기 로우에서의 x-좌표를 결정하는 것으로서, 상기 결정된 로우에서의 상기 x-좌표는 상기 예측 샘플에 대한 상기 광각 인트라-예측 모드의 각도에 기초하는, 상기 결정된 로우에서의 x-좌표를 결정하는 것; 및
    상기 결정된 로우 및 결정된 상기 x-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  42. 제 41 항에 있어서,
    상기 결정된 로우에서 x-좌표를 결정하는 것은,
    상기 광각 인트라-예측 모드의 상기 각도의 코탄젠트 또는 탄젠트 중 하나를 결정하는 것; 및
    상기 광각 인트라-예측 모드의 상기 각도의 상기 코탄젠트 또는 탄젠트 중 하나, 상기 예측 샘플의 x-좌표, 및 상기 예측 샘플의 y-좌표에 기초하여 상기 결정된 로우에서의 상기 x-좌표를 결정하는 것을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  43. 제 33 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은,
    상기 현재 블록 좌측에 있는 칼럼을 결정하는 것;
    결정된 상기 칼럼에서의 y-좌표를 결정하는 것으로서, 상기 결정된 칼럼에서의 상기 y-좌표는 상기 광각 인트라-예측 모드의 각도에 기초하는, 상기 결정된 칼럼에서의 y-좌표를 결정하는 것; 및
    상기 결정된 칼럼 및 결정된 상기 y-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  44. 제 43 항에 있어서,
    상기 결정된 칼럼에서 y-좌표를 결정하는 것은,
    상기 광각 인트라-예측 모드의 각도의 코탄젠트 또는 탄젠트 중 하나를 결정하는 것; 및
    상기 광각 인트라-예측 모드의 상기 각도의 상기 코탄젠트 또는 탄젠트 중 하나, 상기 예측 샘플의 x-좌표, 및 상기 예측 샘플의 y-좌표에 기초하여 상기 결정된 칼럼에서의 상기 y-좌표를 결정하는 것을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  45. 제 33 항에 있어서,
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은,
    상기 광각 인트라-예측 모드에 기초하여 하나 이상의 샘플들의 세트를 결정하는 것; 및
    상기 하나 이상의 레퍼런스 샘플들을 생성하기 위해 하나 이상의 샘플들의 상기 세트를 보간하는 것, 오프셋을 갖고 라운딩하는 것, 또는 오프셋 없이 라운딩하는 것 중 적어도 하나를 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  46. 제 33 항에 있어서,
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은,
    상기 광각 인트라-예측 모드에 기초하여 식별된 상기 현재 블록에 대해 외부에 있는 하나 이상의 샘플들이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것; 및
    상기 레퍼런스 라인 버퍼에 저장된 최종 레퍼런스 샘플에 기초하여 상기 하나 이상의 레퍼런스 샘플들을 결정하는 것을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  47. 제 33 항에 있어서,
    상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것은 상기 예측 블록의 제 1 예측 샘플을 수정하는 것을 포함하고, 상기 하나 이상의 레퍼런스 샘플들은 하나 이상의 레퍼런스 샘플들의 제 1 세트를 포함하며, 상기 비디오 디코더는:
    상기 예측 블록의 제 2 예측 샘플에 대해, 상기 제 2 예측 샘플에 대한 하나 이상의 레퍼런스 샘플들의 제 2 세트의 적어도 하나의 레퍼런스 샘플이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것; 및
    상기 제 2 예측 샘플에 PDPC 를 적용하지 않는 것 또는 레퍼런스 라인 버퍼에서 이용가능한 레퍼런스 샘플들만을 사용하여 PDPC 를 적용하는 것 중 하나
    를 행하도록 구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  48. 제 33 항에 있어서,
    상기 광각 인트라-예측 모드는 DC, 평면, 수평, 또는 수직 인트라-예측 모드가 아닌, 비디오 데이터를 디코딩하기 위한 디바이스.
  49. 제 33 항에 있어서,
    상기 현재 블록을 디스플레이하도록 구성된 디스플레이를 더 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  50. 제 33 항에 있어서,
    상기 디바이스는 카메라, 컴퓨터, 모바일 디바이스, 브로드캐스트 수신기 디바이스, 또는 셋-톱 박스 중 하나 이상을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  51. 비디오 데이터를 인코딩하는 디바이스로서,
    상기 디바이스는,
    하나 이상의 예측 블록들을 저장하도록 구성된 메모리; 및
    고정 기능 또는 프로그래밍가능 회로 중 적어도 하나를 포함하는 비디오 인코더를 포함하고,
    상기 비디오 인코더는,
    비디오 데이터의 현재 블록을 획득하고;
    상기 현재 블록의 사이즈를 결정하며;
    상기 현재 블록의 상기 사이즈에 기초하여, 상기 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하고;
    상기 광각 인트라-예측 모드를 이용하여 상기 현재 블록에 대한 예측 블록을 결정하는 것으로서, 상기 예측 블록은 복수의 예측 샘플들을 포함하는, 상기 현재 블록에 대한 예측 블록을 결정하는 것을 행하며;
    포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것으로서, 상기 예측 샘플을 수정하는 것은:
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것; 및
    결정된 상기 하나 이상의 레퍼런스 샘플들에 기초하여 상기 수정된 예측 샘플을 생성하기 위해 상기 예측 샘플을 수정하는 것을 포함하는, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것을 행하며;
    수정된 상기 예측 샘플 및 상기 현재 블록에서의 샘플 값에 기초하여 잔차 블록에 대한 잔차 값을 결정하고; 그리고
    상기 잔차 값을 나타내는 정보를 시그널링하도록
    구성되는, 비디오 데이터를 인코딩하는 디바이스.
  52. 제 51 항에 있어서,
    상기 현재 블록의 사이즈를 결정하는 것은, 상기 블록의 폭 및 상기 블록의 높이가 상이한 사이즈들임을 결정하는 것을 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
  53. 제 51 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 상기 하나 이상의 레퍼런스 샘플들은, 상기 예측 샘플에 대한 상기 광각 인트라-예측 모드의 각도를 이용하여 결정되는, 비디오 데이터를 인코딩하기 위한 디바이스.
  54. 제 53 항에 있어서,
    상기 광각 인트라-예측 모드의 상기 각도는 상기 예측 샘플에 대해 -135도 미만이거나 45도보다 더 큰, 비디오 데이터를 인코딩하기 위한 디바이스.
  55. 제 51 항에 있어서,
    상기 비디오 인코더는,
    상기 예측 샘플의 x-좌표 및 y-좌표에 기초하여 하나 이상의 가중치들을 결정하도록 구성되고,
    상기 예측 샘플을 수정하는 것은, 상기 결정된 하나 이상의 레퍼런스 샘플들, 결정된 상기 하나 이상의 가중치들, 및 상기 예측 샘플에 기초하여, 상기 수정된 예측 샘플을 생성하기 위해 상기 예측 샘플을 수정하는 것을 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
  56. 제 51 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은, 상기 예측 블록에서의 상기 예측 샘플의 각각의 x-좌표 및 y-좌표 양자와는 상이한 x-좌표 및 y-좌표 양자를 갖는 상기 하나 이상의 레퍼런스 샘플들을 결정하는 것을 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
  57. 제 51 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은,
    상기 현재 블록 위에 있는 로우를 결정하는 것;
    결정된 상기 로우에서의 x-좌표를 결정하는 것으로서, 상기 결정된 로우에서의 상기 x-좌표는 상기 예측 샘플의 x-좌표 플러스 상기 예측 샘플의 y-좌표 플러스 1 과 동일한, 상기 결정된 로우에서의 x-좌표를 결정하는 것; 및
    상기 결정된 로우 및 결정된 상기 x-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
  58. 제 51 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은,
    상기 현재 블록 좌측에 있는 칼럼을 결정하는 것;
    결정된 상기 칼럼에서의 y-좌표를 결정하는 것으로서, 상기 결정된 칼럼에서의 상기 y-좌표는 상기 예측 샘플의 y-좌표 플러스 상기 예측 샘플의 x-좌표 플러스 1 과 동일한, 상기 결정된 칼럼에서의 y-좌표를 결정하는 것; 및
    상기 결정된 칼럼 및 결정된 상기 y-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
  59. 제 51 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은,
    상기 현재 블록 위에 있는 로우를 결정하는 것;
    결정된 상기 로우에서의 x-좌표를 결정하는 것으로서, 상기 결정된 로우에서의 상기 x-좌표는 상기 예측 샘플에 대한 상기 광각 인트라-예측 모드의 각도에 기초하는, 상기 결정된 로우에서의 x-좌표를 결정하는 것; 및
    상기 결정된 로우 및 결정된 상기 x-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
  60. 제 59 항에 있어서,
    상기 결정된 로우에서 x-좌표를 결정하는 것은,
    상기 광각 인트라-예측 모드의 상기 각도의 코탄젠트 또는 탄젠트 중 하나를 결정하는 것; 및
    상기 광각 인트라-예측 모드의 상기 각도의 상기 코탄젠트 또는 탄젠트 중 하나, 상기 예측 샘플의 x-좌표, 및 상기 예측 샘플의 y-좌표에 기초하여 상기 결정된 로우에서의 상기 x-좌표를 결정하는 것을 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
  61. 제 51 항에 있어서,
    상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은,
    상기 현재 블록 좌측에 있는 칼럼을 결정하는 것;
    결정된 상기 칼럼에서의 y-좌표를 결정하는 것으로서, 상기 결정된 칼럼에서의 상기 y-좌표는 상기 광각 인트라-예측 모드의 각도에 기초하는, 상기 결정된 칼럼에서의 y-좌표를 결정하는 것; 및
    상기 결정된 칼럼 및 결정된 상기 y-좌표에 기초하여 상기 하나 이상의 레퍼런스 샘플들 중의 레퍼런스 샘플을 결정하는 것을 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
  62. 제 61 항에 있어서,
    상기 결정된 칼럼에서 y-좌표를 결정하는 것은,
    상기 광각 인트라-예측 모드의 상기 각도의 코탄젠트 또는 탄젠트 중 하나를 결정하는 것; 및
    상기 광각 인트라-예측 모드의 상기 각도의 상기 코탄젠트 또는 탄젠트 중 하나, 상기 예측 샘플의 x-좌표, 및 상기 예측 샘플의 y-좌표에 기초하여 상기 결정된 칼럼에서의 상기 y-좌표를 결정하는 것을 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
  63. 제 51 항에 있어서,
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은,
    상기 광각 인트라-예측 모드에 기초하여 하나 이상의 샘플들의 세트를 결정하는 것; 및
    상기 하나 이상의 레퍼런스 샘플들을 생성하기 위해 하나 이상의 샘플들의 상기 세트를 보간하는 것, 오프셋을 갖고 라운딩하는 것, 또는 오프셋 없이 라운딩하는 것 중 적어도 하나를 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
  64. 제 51 항에 있어서,
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것은,
    상기 광각 인트라-예측 모드에 기초하여 식별된 상기 현재 블록에 대해 외부에 있는 하나 이상의 샘플들이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것; 및
    상기 레퍼런스 라인 버퍼에 저장된 최종 레퍼런스 샘플에 기초하여 상기 하나 이상의 레퍼런스 샘플들을 결정하는 것을 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
  65. 제 51 항에 있어서,
    상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것은 상기 예측 블록의 제 1 예측 샘플을 수정하는 것을 포함하고, 상기 하나 이상의 레퍼런스 샘플들은 하나 이상의 레퍼런스 샘플들의 제 1 세트를 포함하며, 상기 비디오 인코더는:
    상기 예측 블록의 제 2 예측 샘플에 대해, 상기 제 2 예측 샘플에 대한 하나 이상의 레퍼런스 샘플들의 제 2 세트의 적어도 하나의 레퍼런스 샘플이 레퍼런스 라인 버퍼에 저장되어 있지 않은 것을 결정하는 것; 및
    상기 제 2 예측 샘플에 PDPC 를 적용하지 않는 것 또는 레퍼런스 라인 버퍼에서 이용가능한 레퍼런스 샘플들만을 사용하여 PDPC 를 적용하는 것 중 하나
    를 행하도록 구성되는, 비디오 데이터를 인코딩하기 위한 디바이스.
  66. 제 51 항에 있어서,
    상기 광각 인트라-예측 모드는 DC, 평면, 수평, 또는 수직 인트라-예측 모드가 아닌, 비디오 데이터를 인코딩하기 위한 디바이스.
  67. 제 51 항에 있어서,
    상기 디바이스는 카메라, 컴퓨터, 모바일 디바이스, 브로드캐스트 수신기 디바이스, 또는 셋-톱 박스 중 하나 이상을 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
  68. 명령들을 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은 실행될 때, 비디오 데이터를 디코딩하기 위한 디바이스의 하나 이상의 프로세서들로 하여금,
    비디오 데이터의 현재 블록을 획득하게 하고;
    상기 현재 블록의 사이즈를 결정하게 하며;
    상기 현재 블록의 상기 사이즈에 기초하여, 상기 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하게 하고;
    상기 광각 인트라-예측 모드를 이용하여 상기 현재 블록에 대한 예측 블록을 결정하는 것으로서, 상기 예측 블록은 복수의 예측 샘플들을 포함하는, 상기 현재 블록에 대한 예측 블록을 결정하는 것을 행하게 하며;
    포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것으로서, 상기 예측 샘플을 수정하는 것은:
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것; 및
    결정된 상기 하나 이상의 레퍼런스 샘플들에 기초하여 상기 수정된 예측 샘플을 생성하기 위해 상기 예측 샘플을 수정하는 것을 포함하는, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것을 행하게 하고; 그리고
    상기 수정된 예측 샘플 및 잔차 값에 기초하여 상기 현재 블록의 샘플을 재구성하게 하는, 컴퓨터 판독가능 저장 매체.
  69. 명령들을 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은 실행될 때, 비디오 데이터를 인코딩하기 위한 디바이스의 하나 이상의 프로세서들로 하여금,
    비디오 데이터의 현재 블록을 획득하게 하고;
    상기 현재 블록의 사이즈를 결정하게 하며;
    상기 현재 블록의 상기 사이즈에 기초하여, 상기 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하게 하고;
    상기 광각 인트라-예측 모드를 이용하여 상기 현재 블록에 대한 예측 블록을 결정하는 것으로서, 상기 예측 블록은 복수의 예측 샘플들을 포함하는, 상기 현재 블록에 대한 예측 블록을 결정하는 것을 행하게 하며;
    포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것으로서, 상기 예측 샘플을 수정하는 것은:
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것; 및
    결정된 상기 하나 이상의 레퍼런스 샘플들에 기초하여 상기 수정된 예측 샘플을 생성하기 위해 상기 예측 샘플을 수정하는 것을 포함하는, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 것을 행하게 하며;
    수정된 상기 예측 샘플 및 상기 현재 블록에서의 샘플 값에 기초하여 잔차 블록에 대한 잔차 값을 결정하게 하고; 그리고
    상기 잔차 값을 나타내는 정보를 시그널링하게 하는, 컴퓨터 판독가능 저장 매체.
  70. 비디오 데이터를 디코딩하기 위한 디바이스로서,
    상기 디바이스는,
    비디오 데이터의 현재 블록을 획득하는 수단;
    상기 현재 블록의 사이즈를 결정하는 수단;
    상기 현재 블록의 상기 사이즈에 기초하여, 상기 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하는 수단;
    상기 광각 인트라-예측 모드를 이용하여 상기 현재 블록에 대한 예측 블록을 결정하는 수단으로서, 상기 예측 블록은 복수의 예측 샘플들을 포함하는, 상기 현재 블록에 대한 예측 블록을 결정하는 수단;
    포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 수단으로서, 상기 예측 샘플을 수정하는 것은:
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것; 및
    결정된 상기 하나 이상의 레퍼런스 샘플들에 기초하여 상기 수정된 예측 샘플을 생성하기 위해 상기 예측 샘플을 수정하는 것을 포함하는, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 수단; 및
    수정된 상기 예측 샘플 및 잔차 값에 기초하여 상기 현재 블록의 샘플을 재구성하는 수단을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  71. 비디오 데이터를 인코딩하기 위한 디바이스로서,
    상기 디바이스는,
    비디오 데이터의 현재 블록을 획득하는 수단;
    상기 현재 블록의 사이즈를 결정하는 수단;
    상기 현재 블록의 상기 사이즈에 기초하여, 상기 현재 블록에 대해 사용할 광각 인트라-예측 모드를 결정하는 수단;
    상기 광각 인트라-예측 모드를 이용하여 상기 현재 블록에 대한 예측 블록을 결정하는 수단으로서, 상기 예측 블록은 복수의 예측 샘플들을 포함하는, 상기 현재 블록에 대한 예측 블록을 결정하는 수단;
    포지션 종속 인트라 예측 조합 (PDPC) 을 이용하여, 수정된 예측 샘플을 생성하기 위해, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 수단으로서, 상기 예측 샘플을 수정하는 것은:
    상기 광각 인트라-예측 모드에 기초하여 상기 현재 블록에 대해 외부에 있는 하나 이상의 레퍼런스 샘플들을 결정하는 것; 및
    결정된 상기 하나 이상의 레퍼런스 샘플들에 기초하여 상기 수정된 예측 샘플을 생성하기 위해 상기 예측 샘플을 수정하는 것을 포함하는, 상기 예측 블록의 상기 복수의 예측 샘플들 중의 예측 샘플을 수정하는 수단;
    수정된 상기 예측 샘플 및 상기 현재 블록에서의 샘플 값에 기초하여 잔차 블록에 대한 잔차 값을 결정하는 수단; 및
    상기 잔차 값을 나타내는 정보를 시그널링하는 수단을 포함하는, 비디오 데이터를 인코딩하기 위한 디바이스.
KR1020217000863A 2018-07-16 2019-07-15 광각 인트라 예측을 이용한 포지션 종속 인트라 예측 조합 KR20210030352A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227031679A KR20220127949A (ko) 2018-07-16 2019-07-15 광각 인트라 예측을 이용한 포지션 종속 인트라 예측 조합

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862698804P 2018-07-16 2018-07-16
US62/698,804 2018-07-16
US16/510,863 US11128872B2 (en) 2018-07-16 2019-07-12 Position dependent intra prediction combination with wide angle intra prediction
US16/510,863 2019-07-12
PCT/US2019/041853 WO2020018446A1 (en) 2018-07-16 2019-07-15 Position dependent intra prediction combination with wide angle intra prediction

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227031679A Division KR20220127949A (ko) 2018-07-16 2019-07-15 광각 인트라 예측을 이용한 포지션 종속 인트라 예측 조합

Publications (1)

Publication Number Publication Date
KR20210030352A true KR20210030352A (ko) 2021-03-17

Family

ID=69138554

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217000863A KR20210030352A (ko) 2018-07-16 2019-07-15 광각 인트라 예측을 이용한 포지션 종속 인트라 예측 조합
KR1020227031679A KR20220127949A (ko) 2018-07-16 2019-07-15 광각 인트라 예측을 이용한 포지션 종속 인트라 예측 조합

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020227031679A KR20220127949A (ko) 2018-07-16 2019-07-15 광각 인트라 예측을 이용한 포지션 종속 인트라 예측 조합

Country Status (17)

Country Link
US (1) US11128872B2 (ko)
EP (1) EP3824625A1 (ko)
JP (1) JP7150130B2 (ko)
KR (2) KR20210030352A (ko)
CN (1) CN112449753A (ko)
AU (1) AU2019306205B2 (ko)
BR (1) BR112021000352A2 (ko)
CA (1) CA3105383C (ko)
CL (1) CL2021000091A1 (ko)
CO (1) CO2021000176A2 (ko)
IL (1) IL279740B2 (ko)
MX (1) MX2021000390A (ko)
NZ (1) NZ771588A (ko)
PH (1) PH12020552289A1 (ko)
SG (1) SG11202013067QA (ko)
TW (1) TWI767130B (ko)
WO (1) WO2020018446A1 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8867854B2 (en) * 2008-10-01 2014-10-21 Electronics And Telecommunications Research Institute Image encoder and decoder using undirectional prediction
WO2017073362A1 (ja) * 2015-10-30 2017-05-04 ソニー株式会社 画像処理装置および方法
CN116668722A (zh) 2017-05-17 2023-08-29 株式会社Kt 用于解码视频的方法和用于编码视频的方法
US10771781B2 (en) * 2018-03-12 2020-09-08 Electronics And Telecommunications Research Institute Method and apparatus for deriving intra prediction mode
AU2019269346B2 (en) 2018-05-14 2023-07-27 Interdigital Vc Holdings, Inc. Block shape adaptive intra prediction directions for quadtree-binary tree
US10284844B1 (en) * 2018-07-02 2019-05-07 Tencent America LLC Method and apparatus for video coding
WO2020018207A1 (en) * 2018-07-16 2020-01-23 Interdigital Vc Holdings, Inc. Wide angle intra prediction and position dependent intra prediction combination
US11128872B2 (en) * 2018-07-16 2021-09-21 Qualcomm Incorporated Position dependent intra prediction combination with wide angle intra prediction
CN116546198A (zh) 2018-08-12 2023-08-04 Lg电子株式会社 解码装置、编码装置、存储介质和发送图像的数据的装置
AU2019340292B2 (en) * 2018-09-16 2023-07-13 Huawei Technologies Co., Ltd. Method and apparatus for prediction
CN112823522A (zh) * 2018-10-01 2021-05-18 交互数字Vc控股公司 用于广角帧内预测的方向
CN111010569B (zh) * 2018-10-06 2023-02-28 北京字节跳动网络技术有限公司 Bio中的时间梯度计算的改善
IL281823B2 (en) * 2018-10-12 2024-01-01 Guangdong Oppo Mobile Telecommunications Corp Ltd A method for encoding/decoding an image signal and a device for it
KR102571856B1 (ko) * 2018-11-14 2023-08-28 후아웨이 테크놀러지 컴퍼니 리미티드 인트라 예측 방법 및 장치
CN116456082A (zh) * 2018-12-25 2023-07-18 Oppo广东移动通信有限公司 编码预测方法、装置及计算机存储介质
CN109862371A (zh) * 2019-03-12 2019-06-07 北京大学深圳研究生院 一种基于帧内预测的编解码方法、装置及滤波器
CN113170101A (zh) * 2019-03-12 2021-07-23 Oppo广东移动通信有限公司 帧内预测方法及装置、计算机可读存储介质
US20220182616A1 (en) * 2019-03-12 2022-06-09 Lg Electronics Inc. Method and apparatus for encoding/decoding video and method for transmitting bitstream
US11425374B2 (en) * 2019-03-12 2022-08-23 FG Innovation Company Limited Device and method for coding video data
KR20210137058A (ko) * 2019-03-22 2021-11-17 엘지전자 주식회사 영상 코딩 시스템에서 인트라 예측 기반 영상 디코딩 방법 및 그 장치
US11039156B2 (en) * 2019-06-11 2021-06-15 Tencent America LLC Unified position dependent prediction combination process
WO2020254264A1 (en) * 2019-06-20 2020-12-24 Interdigital Vc Holdings France, Sas Method and device for picture encoding and decoding using position dependent intra prediction combination
WO2020257484A1 (en) * 2019-06-21 2020-12-24 Vid Scale, Inc. Precision refinement for motion compensation with optical flow
US11051013B2 (en) * 2019-11-12 2021-06-29 Realtek Semiconductor Corp. Device and method of selecting an intra mode of a coding unit
US11553208B2 (en) * 2019-11-27 2023-01-10 Tencent America LLC Method and system of video coding using a subset of available intra prediction modes for multiple reference lines
US11842520B2 (en) 2020-04-08 2023-12-12 Qualcomm Incorporated Angular mode simplification for geometry-based point cloud compression
US11941855B2 (en) 2020-04-08 2024-03-26 Qualcomm Incorporated Coding of laser angles for angular and azimuthal modes in geometry-based point cloud compression
US11432006B2 (en) 2020-08-14 2022-08-30 Tencent America LLC Chroma mode video coding
EP3965416B1 (en) 2020-09-08 2022-08-03 Axis AB Method and device for intra-coding an image frame
US11563977B2 (en) * 2020-09-24 2023-01-24 Tencent America LLC Method and apparatus for video coding

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2013202653A1 (en) * 2013-04-05 2014-10-23 Canon Kabushiki Kaisha Method, apparatus and system for generating intra-predicted samples
US9832467B2 (en) * 2014-10-07 2017-11-28 Qualcomm Incorporated Deblock filtering for intra block copying
US10425648B2 (en) 2015-09-29 2019-09-24 Qualcomm Incorporated Video intra-prediction using position-dependent prediction combination for video coding
US10455228B2 (en) * 2016-03-21 2019-10-22 Qualcomm Incorporated Determining prediction parameters for non-square blocks in video coding
EP3453174A1 (en) 2016-05-06 2019-03-13 VID SCALE, Inc. Method and system for decoder-side intra mode derivation for block-based video coding
WO2018049594A1 (en) * 2016-09-14 2018-03-22 Mediatek Inc. Methods of encoder decision for quad-tree plus binary tree structure
US10674165B2 (en) * 2016-12-21 2020-06-02 Arris Enterprises Llc Constrained position dependent intra prediction combination (PDPC)
WO2018124627A1 (ko) * 2016-12-27 2018-07-05 삼성전자 주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
FI20175006A1 (en) 2017-01-03 2019-02-15 Nokia Technologies Oy Video and image coding using wide-angle intra-prediction
EP3399754A1 (en) 2017-05-04 2018-11-07 Thomson Licensing Method and apparatus for most probable mode (mpm) reordering for intra prediction
EP3646600A1 (en) * 2017-06-26 2020-05-06 InterDigital VC Holdings, Inc. Method and apparatus for intra prediction with multiple weighted references
US20190089952A1 (en) * 2017-09-19 2019-03-21 Futurewei Technologies, Inc. Bidirectional Weighted Intra Prediction
WO2019147087A1 (ko) 2018-01-25 2019-08-01 주식회사 윌러스표준기술연구소 비디오 신호 처리 방법 및 장치
US10419754B1 (en) * 2018-04-02 2019-09-17 Tencent America LLC Method and apparatus for video decoding using multiple line intra prediction
US11611757B2 (en) * 2018-04-02 2023-03-21 Qualcomm Incorproated Position dependent intra prediction combination extended with angular modes
US11159806B2 (en) * 2018-06-28 2021-10-26 Qualcomm Incorporated Position dependent intra prediction combination with multiple reference lines for intra prediction
US10404980B1 (en) * 2018-07-10 2019-09-03 Tencent America LLC Intra prediction with wide angle mode in video coding
US11128872B2 (en) * 2018-07-16 2021-09-21 Qualcomm Incorporated Position dependent intra prediction combination with wide angle intra prediction
US10911765B2 (en) * 2018-08-01 2021-02-02 Tencent America LLC Method and apparatus for video coding
US10491893B1 (en) * 2018-08-29 2019-11-26 Tencent America LLC Method and apparatus for multi-line intra prediction
US11310515B2 (en) * 2018-11-14 2022-04-19 Tencent America LLC Methods and apparatus for improvement for intra-inter prediction mode
US11178396B2 (en) * 2018-11-14 2021-11-16 Tencent America LLC Constrained intra prediction and unified most probable mode list generation
US20200162737A1 (en) * 2018-11-16 2020-05-21 Qualcomm Incorporated Position-dependent intra-inter prediction combination in video coding
US11652984B2 (en) * 2018-11-16 2023-05-16 Qualcomm Incorporated Position-dependent intra-inter prediction combination in video coding
US10652537B1 (en) * 2018-11-21 2020-05-12 Alibaba Group Holding Limited Coding unit size adaptive palette mode for video compression system
US11057622B2 (en) * 2018-12-13 2021-07-06 Qualcomm Incorporated Position dependent intra prediction combination with non-square block diagonals
US11019360B2 (en) * 2019-03-21 2021-05-25 Qualcomm Incorporated Generalized reference sample derivation methods for intra prediction in video coding
US11197025B2 (en) * 2019-06-21 2021-12-07 Qualcomm Incorporated Signaling of matrix intra prediction parameters in video coding

Also Published As

Publication number Publication date
JP2021530906A (ja) 2021-11-11
CL2021000091A1 (es) 2021-07-30
SG11202013067QA (en) 2021-02-25
BR112021000352A2 (pt) 2021-04-06
CN112449753A (zh) 2021-03-05
AU2019306205B2 (en) 2023-04-13
CA3105383C (en) 2024-04-30
TWI767130B (zh) 2022-06-11
PH12020552289A1 (en) 2021-11-22
TW202032983A (zh) 2020-09-01
NZ771588A (en) 2023-02-24
EP3824625A1 (en) 2021-05-26
IL279740B1 (en) 2023-05-01
AU2019306205A1 (en) 2021-01-28
IL279740B2 (en) 2023-09-01
JP7150130B2 (ja) 2022-10-07
KR20220127949A (ko) 2022-09-20
CA3105383A1 (en) 2020-01-23
MX2021000390A (es) 2022-09-26
US11128872B2 (en) 2021-09-21
US20200021817A1 (en) 2020-01-16
IL279740A (en) 2021-03-01
WO2020018446A1 (en) 2020-01-23
CO2021000176A2 (es) 2021-01-18

Similar Documents

Publication Publication Date Title
AU2019306205B2 (en) Position dependent intra prediction combination with wide angle intra prediction
US11159806B2 (en) Position dependent intra prediction combination with multiple reference lines for intra prediction
US11611757B2 (en) Position dependent intra prediction combination extended with angular modes
US10382781B2 (en) Interpolation filters for intra prediction in video coding
US10484712B2 (en) Implicit coding of reference line index used in intra prediction
CN108464001B (zh) 用于视频译码的多类型树框架
CN113196752B (zh) 对视频数据进行解码的方法、装置及存储介质
US20180199062A1 (en) Intra prediction techniques for video coding
CN110754091B (zh) 用于360度视频编码的解块滤波
CN112789858A (zh) 帧内预测方法及设备
TW202110180A (zh) 跨逐線掃描切片之適應性迴圈濾波
RU2781854C2 (ru) Позиционно-зависимое комбинирование с внутренним прогнозированием с широкоугольным внутренним прогнозированием
CN111937394B (zh) 用角度模式扩展的位置相关帧内预测组合

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
A107 Divisional application of patent
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL NUMBER: 2022101001662; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20220913

Effective date: 20221213