KR20200057014A - 비디오 코딩에서의 포지션-종속 예측 결합들 - Google Patents

비디오 코딩에서의 포지션-종속 예측 결합들 Download PDF

Info

Publication number
KR20200057014A
KR20200057014A KR1020207009685A KR20207009685A KR20200057014A KR 20200057014 A KR20200057014 A KR 20200057014A KR 1020207009685 A KR1020207009685 A KR 1020207009685A KR 20207009685 A KR20207009685 A KR 20207009685A KR 20200057014 A KR20200057014 A KR 20200057014A
Authority
KR
South Korea
Prior art keywords
value
weight
individual sample
sample
individual
Prior art date
Application number
KR1020207009685A
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
Priority to US201762570019P priority Critical
Priority to US62/570,019 priority
Priority to US16/154,261 priority patent/US10965941B2/en
Priority to US16/154,261 priority
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Priority to PCT/US2018/054979 priority patent/WO2019074905A1/en
Publication of KR20200057014A publication Critical patent/KR20200057014A/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/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/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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

Abstract

비디오 코더는 인트라 예측 모드를 사용하여 예측자 블록을 생성할 수 있다. 예측자 블록을 생성하는 부분으로서, 비디오 코더는 예측자 블록에서 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 비디오 코더는 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정할 수도 있다. 추가적으로, 비디오 코더는 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정할 수도 있다. 비디오 코더는 또한 개별적인 샘플에 대한 1차 값을 결정할 수도 있다. 비디오 코더는 그 다음, 제 1 가중치, 제 2 가중치 및 1차 값에 기초하여 개별적인 샘플에 대한 2차 값을 결정할 수도 있다.

Description

비디오 코딩에서의 포지션-종속 예측 결합들
이 출원은 2017년 10월 9일자로 출원된 미국 가특허 출원 제 62/570,019 호, 및 2018년 10월 8일자로 출원된 미국 특허 출원 제 16/154,261 호의 이익을 주장하고, 이들 전체 내용은 참조에 의해 본원에 통합된다.
기술 분야
본 개시는 비디오 코딩에 관한 것이다.
디지털 비디오 능력들은, 디지털 텔레비전들, 디지털 다이렉트 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 디지털 보조기들 (PDA들), 랩탑 또는 데스크탑 컴퓨터들, 태블릿 컴퓨터들, e-북 리더들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 소위 "스마트 폰들", 비디오 텔레컨퍼런싱 디바이스들, 비디오 스트리밍 디바이스들 등을 포함한, 광범위한 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, 파트 10, 어드밴스드 비디오 코딩 (AVC), ITU-T H.265, 고효율 비디오 코딩 (HEVC) 표준에 의해 정의된 표준들, 및 그러한 표준들의 확장들에서 설명된 기법들과 같은 비디오 압축 기법들을 구현한다. 비디오 디바이스들은 그러한 비디오 압축 기법들을 구현함으로써 디지털 비디오 정보를 더 효율적으로 송신, 수신, 인코딩, 디코딩, 및/또는 저장할 수도 있다.
비디오 압축 기법들은 비디오 시퀀스들에 내재한 리던던시를 감소 또는 제거하기 위해 공간 (인트라-픽처) 예측 및/또는 시간 (인터-픽처) 예측을 수행할 수도 있다. 블록 기반 비디오 코딩에 대해, 비디오 슬라이스 (예를 들어, 비디오 프레임 또는 비디오 프레임의 부분) 는 코딩 트리 블록들 및 코딩 블록들과 같은 비디오 블록들로 파티션될 수도 있다. 공간 또는 시간 예측은 코딩될 블록에 대한 예측자 블록을 발생시킨다. 잔차 데이터는 코딩될 원래의 블록과 예측자 블록 간의 픽셀 차이들을 나타낸다. 추가의 압축을 위해, 잔차 데이터는 픽셀 도메인으로부터 변환 도메인으로 변환되어, 후에 양자화될 수도 있는 잔차 변환 계수들을 발생시킬 수도 있다.
일반적으로, 이 개시는 인트라 예측 및 인트라 모드 코딩에 관련된 기법들을 설명한다. 이 개시의 기법들은, HEVC 의 확장들 또는 차세대 비디오 코딩 표준들과 같은 진보된 비디오 코덱들의 맥락에서 사용될 수도 있다.
일 예에서, 본 개시는 비디오 데이터를 디코딩하는 방법을 설명하며, 본 방법은: 인트라 예측 모드를 사용하여 예측자 블록을 생성하는 단계로서, 예측자 블록을 생성하는 단계는: 제 1 가중치의 초기값을 결정하는 단계; 제 2 가중치의 초기값을 결정하는 단계; 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해: 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정하는 단계; 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정하는 단계; 개별적인 샘플에 대한 제 3 가중치의 값을 결정하는 단계; 개별적인 샘플에 대한 제 1 가중치의 값, 개별적인 샘플에 대한 제 2 가중치의 값, 및 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 개별적인 샘플에 대한 제 4 가중치의 값을 결정하는 단계; 인트라 예측 모드에 따라 개별적인 샘플에 대한 1차 값을 결정하는 단계; 및 제 2 값만큼 우측-시프트되는 개별적인 샘플에 대한 제 1 값으로서 개별적인 샘플에 대한 2차 값을 결정하는 단계로서, 개별적인 샘플에 대한 제 1 값은 (i) 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 1 가중치의 값, (ii) 개별적인 샘플 위측인 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 2 가중치의 값, (iii) 개별적인 샘플의 위측 및 좌측인 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 3 가중치의 값, (iv) 개별적인 샘플에 대한 1차 값에 의해 곱해진 개별적인 샘플에 대한 제 4 가중치의 값, 및 (v) 오프셋 값의 합인, 2차 값을 결정하는 단계를 포함하는, 상기 예측자 블록을 생성하는 단계; 및 예측자 블록 및 잔차 데이터에 기초하여, 비디오 데이터의 디코딩된 블록을 복원하는 단계를 포함한다.
일 예에서, 본 개시는 비디오 데이터를 인코딩하는 방법을 설명하며, 본 방법은: 인트라 예측 모드를 사용하여 예측자 블록을 생성하는 단계로서, 상기 예측자 블록을 생성하는 단계는: 제 1 가중치의 초기값을 결정하는 단계; 제 2 가중치의 초기값을 결정하는 단계; 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해: 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정하는 단계; 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정하는 단계; 개별적인 샘플에 대한 제 3 가중치의 값을 결정하는 단계; 개별적인 샘플에 대한 제 1 가중치의 값, 개별적인 샘플에 대한 제 2 가중치의 값, 및 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 개별적인 샘플에 대한 제 4 가중치의 값을 결정하는 단계; 인트라 예측 모드에 따라 개별적인 샘플에 대한 1차 값을 결정하는 단계; 및 제 2 값만큼 우측-시프트되는 개별적인 샘플에 대한 제 1 값으로서 개별적인 샘플에 대한 2차 값을 결정하는 단계로서, 개별적인 샘플에 대한 제 1 값은 (i) 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 1 가중치의 값, (ii) 개별적인 샘플 위측인 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 2 가중치의 값, (iii) 개별적인 샘플의 위측 및 좌측인 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 3 가중치의 값, (iv) 개별적인 샘플에 대한 1차 값에 의해 곱해진 개별적인 샘플에 대한 제 4 가중치의 값, 및 (v) 오프셋 값의 합인, 2차 값을 결정하는 단계를 포함하는, 상기 예측자 블록을 생성하는 단계; 및 비디오 데이터의 예측자 블록 및 코딩 블록에 기초하여 잔차 데이터를 생성하는 단계를 포함한다.
일 예에서, 본 개시는 비디오 데이터를 디코딩하기 위한 장치를 설명하며, 본 장치는: 비디오 데이터를 저장하도록 구성된 하나 이상의 저장 매체; 및 하나 이상의 프로세서들을 포함하고, 하나 이상의 프로세서들은: 인트라 예측 모드를 사용하여 예측자 블록을 생성하게 하는 것으로서, 하나 이상의 프로세서들은, 예측자 블록을 생성하는 부분으로서, 하나 이상의 프로세서들이: 제 1 가중치의 초기값을 결정하고; 제 2 가중치의 초기값을 결정하고; 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해: 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정하고; 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정하고; 개별적인 샘플에 대한 제 3 가중치의 값을 결정하고; 개별적인 샘플에 대한 제 1 가중치의 값, 개별적인 샘플에 대한 제 2 가중치의 값, 및 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 개별적인 샘플에 대한 제 4 가중치의 값을 결정하고; 인트라 예측 모드에 따라 개별적인 샘플에 대한 1차 값을 결정하고; 그리고 제 2 값만큼 우측-시프트되는 개별적인 샘플에 대한 제 1 값으로서 개별적인 샘플에 대한 2차 값을 결정하는 것으로서, 개별적인 샘플에 대한 제 1 값은 (i) 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 1 가중치의 값, (ii) 개별적인 샘플 위측인 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 2 가중치의 값, (iii) 개별적인 샘플의 위측 및 좌측인 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 3 가중치의 값, (iv) 개별적인 샘플에 대한 1차 값에 의해 곱해진 개별적인 샘플에 대한 제 4 가중치의 값, 및 (v) 오프셋 값의 합인, 2차 값을 결정하도록 구성되는, 예측자 블록을 생성하고; 그리고 예측자 블록 및 잔차 데이터에 기초하여, 비디오 데이터의 디코딩된 블록을 복원하도록 구성된다.
다른 예에서, 본 개시는 비디오 데이터를 인코딩하기 위한 장치를 설명하며, 본 장치는: 비디오 데이터를 저장하도록 구성된 하나 이상의 저장 매체; 및 하나 이상의 프로세서들을 포함하고, 하나 이상의 프로세서들은, 인트라 예측 모드를 사용하여 예측자 블록을 생성하게 하는 것으로서, 하나 이상의 프로세서들은, 예측자 블록을 생성하는 부분으로서, 하나 이상의 프로세서들이: 제 1 가중치의 초기값을 결정하고; 제 2 가중치의 초기값을 결정하고; 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해: 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정하고; 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정하고; 개별적인 샘플에 대한 제 3 가중치의 값을 결정하고; 개별적인 샘플에 대한 제 1 가중치의 값, 개별적인 샘플에 대한 제 2 가중치의 값, 및 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 개별적인 샘플에 대한 제 4 가중치의 값을 결정하고; 인트라 예측 모드에 따라 개별적인 샘플에 대한 1차 값을 결정하고; 제 2 값만큼 우측-시프트되는 개별적인 샘플에 대한 제 1 값으로서 개별적인 샘플에 대한 2차 값을 결정하는 것으로서, 개별적인 샘플에 대한 제 1 값은 (i) 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 1 가중치의 값, (ii) 개별적인 샘플 위측인 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 2 가중치의 값, (iii) 개별적인 샘플의 위측 및 좌측인 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 3 가중치의 값, (iv) 개별적인 샘플에 대한 1차 값에 의해 곱해진 개별적인 샘플에 대한 제 4 가중치의 값, 및 (v) 오프셋 값의 합인, 2차 값을 결정하도록 구성되는, 상기 예측자 블록을 생성하고; 그리고 비디오 데이터의 예측자 블록 및 코딩 블록에 기초하여 잔차 데이터를 생성하도록 구성된다.
일 예에서, 본 개시는 비디오 데이터를 디코딩하기 위한 장치를 설명하며, 본 장치는: 비디오 데이터를 저장하기 위한 수단; 및 인트라 예측 모드를 사용하여 예측자 블록을 생성하기 위한 수단으로서, 예측자 블록을 생성하기 위한 수단은: 제 1 가중치의 초기값을 결정하기 위한 수단; 제 2 가중치의 초기값을 결정하기 위한 수단; 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해: 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정하기 위한 수단; 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정하기 위한 수단; 개별적인 샘플에 대한 제 3 가중치의 값을 결정하기 위한 수단; 개별적인 샘플에 대한 제 1 가중치의 값, 개별적인 샘플에 대한 제 2 가중치의 값, 및 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 개별적인 샘플에 대한 제 4 가중치의 값을 결정하기 위한 수단; 인트라 예측 모드에 따라 개별적인 샘플에 대한 1차 값을 결정하기 위한 수단; 및 제 2 값만큼 우측-시프트되는 개별적인 샘플에 대한 제 1 값으로서 개별적인 샘플에 대한 2차 값을 결정하기 위한 수단으로서, 개별적인 샘플에 대한 제 1 값은 (i) 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 1 가중치의 값, (ii) 개별적인 샘플 위측인 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 2 가중치의 값, (iii) 개별적인 샘플의 위측 및 좌측인 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 3 가중치의 값, (iv) 개별적인 샘플에 대한 1차 값에 의해 곱해진 개별적인 샘플에 대한 제 4 가중치의 값, 및 (v) 오프셋 값의 합인, 2차 값을 결정하기 위한 수단을 포함하는, 상기 예측자 블록을 생성하기 위한 수단; 및 예측자 블록 및 잔차 데이터에 기초하여, 비디오 데이터의 디코딩된 블록을 복원하기 위한 수단을 포함한다.
다른 예에서, 본 개시는 비디오 데이터를 인코딩하기 위한 장치를 설명하며, 본 장치는: 비디오 데이터를 저장하기 위한 수단; 및 인트라 예측 모드를 사용하여 예측자 블록을 생성하기 위한 수단으로서, 예측자 블록을 생성하기 위한 수단은: 제 1 가중치의 초기값을 결정하기 위한 수단; 제 2 가중치의 초기값을 결정하기 위한 수단; 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해: 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정하기 위한 수단; 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정하기 위한 수단; 개별적인 샘플에 대한 제 3 가중치의 값을 결정하기 위한 수단; 개별적인 샘플에 대한 제 1 가중치의 값, 개별적인 샘플에 대한 제 2 가중치의 값, 및 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 개별적인 샘플에 대한 제 4 가중치의 값을 결정하기 위한 수단; 인트라 예측 모드에 따라 개별적인 샘플에 대한 1차 값을 결정하기 위한 수단; 및 제 2 값만큼 우측-시프트되는 개별적인 샘플에 대한 제 1 값으로서 개별적인 샘플에 대한 2차 값을 결정하기 위한 수단으로서, 개별적인 샘플에 대한 제 1 값은 (i) 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 1 가중치의 값, (ii) 개별적인 샘플 위측인 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 2 가중치의 값, (iii) 개별적인 샘플의 위측 및 좌측인 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 3 가중치의 값, (iv) 개별적인 샘플에 대한 1차 값에 의해 곱해진 개별적인 샘플에 대한 제 4 가중치의 값, 및 (v) 오프셋 값의 합인, 2차 값을 결정하기 위한 수단을 포함하는, 상기 예측자 블록을 생성하기 위한 수단; 및 비디오 데이터의 예측자 블록 및 코딩 블록에 기초하여 잔차 데이터를 생성하기 위한 수단을 포함한다.
다른 예에서, 본 개시는 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체를 설명하며, 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금: 인트라 예측 모드를 사용하여 예측자 블록을 생성하게 하는 것으로서, 하나 이상의 프로세서들은, 예측자 블록을 생성하는 부분으로서, 하나 이상의 프로세서들이: 제 1 가중치의 초기값을 결정하고; 제 2 가중치의 초기값을 결정하고; 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해: 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정하고; 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정하고; 개별적인 샘플에 대한 제 3 가중치의 값을 결정하고; 개별적인 샘플에 대한 제 1 가중치의 값, 개별적인 샘플에 대한 제 2 가중치의 값, 및 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 개별적인 샘플에 대한 제 4 가중치의 값을 결정하고; 인트라 예측 모드에 따라 개별적인 샘플에 대한 1차 값을 결정하고; 그리고 제 2 값만큼 우측-시프트되는 개별적인 샘플에 대한 제 1 값으로서 개별적인 샘플에 대한 2차 값을 결정하는 것으로서, 개별적인 샘플에 대한 제 1 값은 (i) 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 1 가중치의 값, (ii) 개별적인 샘플 위측인 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 2 가중치의 값, (iii) 개별적인 샘플의 위측 및 좌측인 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 3 가중치의 값, (iv) 개별적인 샘플에 대한 1차 값에 의해 곱해진 개별적인 샘플에 대한 제 4 가중치의 값, 및 (v) 오프셋 값의 합인, 2차 값을 결정하도록 구성되는, 상기 예측자 블록을 생성하게 하고; 그리고 예측자 블록 및 잔차 데이터에 기초하여, 비디오 데이터의 디코딩된 블록을 복원하게 한다.
다른 예에서, 본 개시는 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체를 설명하며, 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금: 인트라 예측 모드를 사용하여 예측자 블록을 생성하게 하는 것으로서, 하나 이상의 프로세서들은, 예측자 블록을 생성하는 부분으로서, 하나 이상의 프로세서들이: 제 1 가중치의 초기값을 결정하고; 제 2 가중치의 초기값을 결정하고; 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해: 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정하고; 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정하고; 개별적인 샘플에 대한 제 3 가중치의 값을 결정하고; 개별적인 샘플에 대한 제 1 가중치의 값, 개별적인 샘플에 대한 제 2 가중치의 값, 및 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 개별적인 샘플에 대한 제 4 가중치의 값을 결정하고; 인트라 예측 모드에 따라 개별적인 샘플에 대한 1차 값을 결정하고; 그리고 제 2 값만큼 우측-시프트되는 개별적인 샘플에 대한 제 1 값으로서 개별적인 샘플에 대한 2차 값을 결정하는 것으로서, 개별적인 샘플에 대한 제 1 값은 (i) 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 1 가중치의 값, (ii) 개별적인 샘플 위측인 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 2 가중치의 값, (iii) 개별적인 샘플의 위측 및 좌측인 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 3 가중치의 값, (iv) 개별적인 샘플에 대한 1차 값에 의해 곱해진 개별적인 샘플에 대한 제 4 가중치의 값, 및 (v) 오프셋 값의 합인, 2차 값을 결정하도록 구성되는, 상기 예측자 블록을 생성하게 하고; 그리고 비디오 데이터의 예측자 블록 및 코딩 블록에 기초하여 잔차 데이터를 생성하게 한다.
본 개시의 하나 이상의 양태들의 상세들은 첨부 도면들 및 이하의 상세한 설명에 기재된다. 본 개시에서 설명된 기법들의 다른 피처들, 목적들, 및 이점들은 상세한 설명, 도면들, 및 청구항들로부터 명백할 것이다.
도 1 은 본 개시에서 설명된 하나 이상의 기법들을 사용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템을 나타내는 블록도이다.
도 2 는 16x16 블록에 대한 인트라 예측의 일 예를 예시한다.
도 3 은 예시적인 인트라 예측 모드들을 예시한다.
도 4 는 HEVC 에서 정의된 플래너 모드의 일 예를 예시하는 개념도이다.
도 5 는 각도 인트라 예측 모드의 일 예를 예시하는 개념도이다.
도 6a 는 4x4 픽셀 블록에 대한 포지션-종속 예측 결합에 사용가능한 데이터의 일 예를 예시하는 개념도이다.
도 6b 는 4x4 픽셀 블록에 대한 포지션-종속 예측 결합에 사용가능한 데이터의 일 예를 예시하는 개념도이다.
도 7a 는 이 개시의 기법에 따라 예측 샘플 (0, 0) 을 생성하기 위하여 적용되는 가중치를 갖는 플래너/DC 모드를 사용한 일 예를 예시하는 블록도이다.
도 7b 는 이 개시의 기법에 따라 예측 샘플 (1, 0) 을 생성하기 위하여 적용되는 가중화를 갖는 플래너/DC 모드를 사용한 일 예를 예시하는 블록도이다.
도 7c 는 이 개시의 기법에 따라 예측 샘플 (0, 1) 을 생성하기 위하여 적용되는 가중화를 갖는 플래너/DC 모드를 사용한 일 예를 예시하는 블록도이다.
도 7d 는 이 개시의 기법에 따라 예측 샘플 (1, 1) 을 생성하기 위하여 적용되는 가중화를 갖는 플래너/DC 모드를 사용한 일 예를 예시하는 블록도이다.
도 8 은 이 개시에 설명된 하나 이상의 기법들을 구현할 수도 있는 일 예의 비디오 인코더를 예시하는 블록도이다.
도 9 는 이 개시에 설명된 하나 이상의 기법들을 구현할 수도 있는 예시적인 비디오 디코더를 예시하는 블록도이다.
도 10 은 본 개시의 기법에 따른, 비디오 인코더의 일 예의 동작을 예시하는 플로우차트이다.
도 11 은 본 개시의 기법에 따른, 비디오 디코더의 예시적인 동작을 예시하는 플로우차트이다.
비디오 코더 (예를 들어, 비디오 인코더 또는 비디오 디코더) 는 현재 픽처의 현재 블록에 대한 예측자 블록을 생성하기 위해 인트라 예측을 사용할 수도 있다. 일반적으로, 인트라 예측을 사용하여 예측자 블록을 생성할 때, 비디오 코더는 현재 픽처에서의 현재 블록의 좌측 컬럼에 및/또는 현재 픽처에서의 현재 블록의 위측 로우에 참조 샘플들의 세트를 결정한다. 비디오 코더는 그 다음, 참조 샘플들을 사용하여 예측자 블록에서 샘플들의 값들을 결정할 수도 있다.
고효율 비디오 코딩 (HEVC) 및 다른 비디오 코딩 표준들에서, 비디오 코더는 인트라 참조 평활화를 수행한다. 비디오 코더가 인트라 참조 평활화를 수행할 때, 비디오 코더는 예측자 블록에서 샘플들의 예측된 값들을 결정하기 위해 참조 샘플들을 사용하기 전에 참조 샘플들에 필터를 적용한다. 예를 들어, 비디오 코더는 2-탭 이중선형 필터, 3-탭 (1,2,1)/4 필터, 또는 모드 종속 인트라 평활화 필터를 참조 샘플들에 적용할 수도 있다. 위의 필터 설명에서, '/4' 는 4로 결과를 나누는 것에 의한 정규화를 표기한다. 통상적으로, 인트라 참조 평활화를 수행하는 것은, 특히 현재 블록이 평활하게 변동하는 기울기를 표현할 때 예측 정확도를 개선한다.
인트라 참조 평활화는 많은 상황들에서 예측 정확도를 개선할 수 있는 한편, 이것이 필터링되지 않은 참조 샘플들을 사용하는데 유용할 수도 있는 다른 상황들이 있다. 포지션-종속 예측 결합 (PDPC) 은 이들 문제들을 해결하고 인트라 예측을 개선하기 위해 디바이스화되었던 방식이다. PDPC 방식에서, 비디오 코더는 필터링된 참조 샘플들, 필터링되지 않은 참조 샘플들, 및 예측자 블록 내에서 예측자 블록 샘플의 포지션에 기초하여 예측자 블록 샘플의 값을 결정한다. PDPC 방식의 사용은 코딩 효율성 이득들과 연관될 수도 있다. 예를 들어, 동일한 양의 비디오 데이터는 더 적은 비트들을 사용하여 인코딩될 수도 있다.
위에 설명된 PDPC 방식의 사용과 연관된 코딩 효율성 이득들에도 불구하고, 수개의 결함들이 있다. 예를 들어, PDPC 방식은 인코더 복잡성을 제어하기 위해 플래너 모드로만 제한되며, 이는 PDPC 방식에 의해 기여되는 코딩 이득을 제한할 수도 있다.
이 개시는 위에 설명된 PDPC 방식을 개선할 수도 있는 기법들을 설명하며, 간략화된 PDPC 방식을 가져온다. 예를 들어, 이 개시의 일 예시의 기법에 따르면, 비디오 코더 (예를 들어, 비디오 인코더 또는 비디오 디코더) 는 인프라 예측 모드를 사용하여 예측자 블록을 생성한다. 예측자 블록을 생성하는 부분으로서, 비디오 코더는 제 1 가중치의 초기값을 결정하고 제 2 가중치의 값을 결정할 수도 있다. 또한, 예측자 블록에서 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 비디오 코더는 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정할 수도 있다. 비디오 코더는 또한 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정할 수도 있다. 또한, 비디오 코더는 개별적인 샘플에 대한 제 3 가중치의 값을 결정할 수도 있다. 비디오 코더는 또한 개별적인 샘플에 대한 제 1 가중치의 값, 개별적인 샘플에 대한 제 2 가중치의 값, 및 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 개별적인 샘플에 대한 제 4 가중치의 값을 결정할 수도 있다. 추가적으로 비디오 코더는 인트라 예측 모드에 따라 개별적인 샘플에 대한 1차 값을 결정할 수도 있다. 다음으로, 비디오 코더는 제 2 값에 의해 우측-시프트되는 개별적인 샘플에 대한 제 1 값으로서 개별적인 샘플에 대한 2차 값을 결정할 수도 있고, 개별적인 샘플에 대한 제 1 값은 다음:
(i) 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플에 의해 승산된 개별적인 샘플에 대한 제 1 가중치의 값,
(ii) 개별적인 샘플 위측인 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 2 가중치의 값,
(iii) 개별적인 샘플의 위측 및 좌측인 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 3 가중치의 값,
(iv) 개별적인 샘플에 대한 1차 값에 의해 곱해진 개별적인 샘플에 대한 제 4 가중치의 값, 및
(v) 오프셋 값
의 합이다.
이 예에서, 인트라 예측 모드는 반드시 플래너 모드로 제한되는 것은 아니다. 다만, 이 예에서 설명된 PDPC 기법들은 다른 인트라 예측 모드들에 사용될 수도 있지만, 이는 가능하게 개선된 압축 성능으로 이어진다. 또한, 이 개시의 설계는 분할 동작들의 사용을 회피할 수도 있고, 이는 구현을 간략화하고, 전력을 보존하고, 디코딩을 가속화할 수도 있다.
도 1 은 이 개시에서 설명된 기법들을 사용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 예시하는 블록도이다. 도 1 에 도시된 바와 같이, 시스템 (10) 은, 목적지 디바이스 (14) 에 의해 더 나중 시간에 디코딩될 인코딩된 비디오 데이터를 제공하는 소스 디바이스 (12) 를 포함한다. 특히, 소스 디바이스 (12) 는 인코딩된 비디오 데이터를, 컴퓨터 판독가능 매체 (16) 를 통해 목적지 디바이스 (14) 에 제공한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 데스크탑 컴퓨터들, 노트북 (즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 전화기 핸드셋 이를테면 소위 "스마트" 폰들, 태블릿 컴퓨터, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 재생기들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스 등을 포함한, 광범위한 디바이스들 중 어느 것을 포함할 수도 있다. 일부 경우들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신을 위해 설치된다. 따라서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신 디바이스들일 수도 있다. 본 개시에 설명된 기법들은 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다. 소스 디바이스 (12) 는 예시적인 비디오 인코딩 디바이스 (즉, 비디오 데이터를 인코딩하기 위한 디바이스) 이다. 목적지 디바이스 (14) 는 예시적인 비디오 디코딩 디바이스 (즉, 비디오 데이터를 디코딩하기 위한 디바이스) 이다.
도 1 의 도시된 시스템 (10) 은 단지 일 예일 뿐이다. 비디오 데이터를 프로세싱하는 기법들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스에 의해 수행될 수도 있다. 일부 예에서, 기법들은 통상적으로 "코덱 (CODEC)"으로 지칭되는 비디오 인코더/디코더에 의해 수행될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 소스 디바이스 (12) 가 목적지 디바이스 (14) 로의 송신을 위한 코딩된 비디오 데이터를 생성하는 그러한 코딩 디바이스들의 예들이다. 일부 예들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 소스 디바이스 (12) 및 목적지 디바이스 (14) 의 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭 방식으로 동작한다. 그러므로, 시스템 (10) 은 예를 들면, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅 또는 화상 통화를 위해, 소스 디바이스 (12) 와 목적지 디바이스 (14) 간의 일방향 또는 양방향 비디오 송신을 지원할 수도 있다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 데이터를 저장하도록 구성된 저장 매체 (19), 비디오 인코더 (20), 및 출력 인터페이스 (22) 를 포함한다. 목적지 디바이스 (14) 는 입력 인터페이스 (26), 인코딩된 비디오 데이터를 저장하도록 구성된 저장 매체 (28), 비디오 디코더 (30) 및 디스플레이 디바이스 (32) 를 포함한다. 다른 예들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 다른 컴포넌트들 또는 배열들을 포함한다. 예를 들어, 소스 디바이스 (12) 는 외부 카메라와 같은 외부 비디오 소스로부터 비디오 데이터를 수신할 수도 있다. 마찬가지로, 목적지 디바이스 (14) 는 통합된 디스플레이 디바이스를 포함하는 것보다는 외부 디스플레이 디바이스와 인터페이싱할 수도 있다.
비디오 소스 (18) 는 비디오 데이터의 소스이다. 비디오 데이터는 일련의 픽처들을 포함할 수도 있다. 비디오 소스 (18) 는 비디오 카메라와 같은 비디오 캡처 디바이스, 이전에 캡처된 비디오를 포함하는 비디오 아카이브 (video archive), 및/또는 비디오 콘텐트 제공자로부터 비디오 데이터를 수신하기 위한 비디오 피드 인터페이스 (video feed interface) 를 포함할 수도 있다. 일부 예들에서, 비디오 소스 (18) 는 컴퓨터 그래픽 기반 비디오 데이터, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터 생성된 비디오의 조합을 생성한다. 저장 매체 (19) 는 비디오 데이터를 저장하도록 구성될 수도 있다. 각각의 경우에 있어서, 캡처된, 사전-캡처된 또는 컴퓨터 생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다.
출력 인터페이스 (22) 는 인코딩된 비디오 정보를 컴퓨터 판독가능 매체 (16) 에 출력할 수도 있다. 출력 인터페이스 (22) 는 다양한 유형들의 컴포넌트들 또는 디바이스들을 포함할 수도 있다. 예를 들어, 출력 인터페이스 (22) 는 무선 송신기, 모뎀, 유선 네트워킹 컴포넌트 (예를 들어, 이더넷 카드), 또는 다른 물리 컴포넌트를 포함할 수도 있다. 출력 인터페이스 (22) 가 무선 송신기를 포함하는 예들에서, 출력 인터페이스 (22) 는 4G, 4G-LTE, LTE 어드밴스드, 5G 등과 같은 셀룰러 통신 표준에 따라 변조되는 인코딩된 비디오 데이터와 같은 데이터를 송신하도록 구성될 수도 있다. 출력 인터페이스 (22) 가 무선 송신기를 포함하는 일부 예들에서, 출력 인터페이스 (22) 는 IEEE 802.11 사양, IEEE 802.15 사양 (예를 들어, ZigBee™), Bluetooth™ 표준 등과 같은 다른 무선 표준들에 따라 변조되는 인코딩된 비디오 데이터와 같은 데이터를 송신하도록 구성될 수도 있다. 일부 예들에 있어서, 출력 인터페이스 (22) 의 회로부는 비디오 인코더 (20) 및/또는 소스 디바이스 (12) 의 다른 컴포넌트들의 회로부에 통합된다. 예를 들어, 비디오 인코더 (20) 및 출력 인터페이스 (22) 는 시스템 온 칩 (SoC) 의 부분들일 수도 있다. SoC 는 또한, 범용 마이크로프로세서, 그래픽스 프로세싱 유닛 등과 같은 다른 컴포넌트들을 포함할 수도 있다.
목적지 디바이스 (14) 는, 컴퓨터 판독 가능 매체 (16) 를 통해 디코딩될 인코딩된 비디오 데이터를 수신할 수도 있다. 컴퓨터 판독가능 매체 (16) 는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동 가능한 임의의 유형의 매체 또는 디바이스를 포함할 수도 있다. 일부 예들에서, 컴퓨터 판독가능 매체 (16) 는, 소스 디바이스 (12) 로 하여금, 인코딩된 비디오 데이터를 직접 목적지 디바이스 (14) 에 실시간으로 송신할 수 있게 하는 통신 매체를 포함한다. 통신 매체는 임의의 무선 또는 유선 통신 매체, 이를 테면 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들을 포함할 수도 있다. 통신 매체는 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷-기반 네트워크의 부분을 형성할 수도 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다. 목적지 디바이스 (14) 는 인코딩된 비디오 데이터 및 디코딩된 비디오 데이터를 저장하도록 구성된 하나 이상의 데이터 저장 매체들을 포함할 수도 있다.
일부 예에서, 출력 인터페이스 (22) 는 인코딩된 비디오 데이터와 같은 데이터를 저장 디바이스와 같은 중간 디바이스로 출력할 수도 있다. 유사하게, 목적지 디바이스 (14) 의 입력 인터페이스 (26) 는 중간 디바이스로부터 인코딩된 데이터를 수신할 수도 있다. 중간 디바이스는 하드 드라이브, 블루-레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체들과 같은 다양한 분산된 또는 국부적으로 액세스된 데이터 저장 매체들 중 임의의 데이터 저장 매체를 포함할 수도 있다. 일부 예에서, 중간 디바이스는 파일 서버에 대응한다. 예시의 파일 서버들은 웹 서버, FTP 서버, NAS (network attached storage) 디바이스들, 또는 로컬 디스크 드라이브를 포함한다.
목적지 디바이스 (14) 는, 인터넷 접속을 포함한, 임의의 표준 데이터 접속을 통해 인코딩된 비디오 데이터에 액세스할 수도 있다. 이는 파일 서버 상에 저장되는 인코딩된 비디오 데이터에 액세스하기에 적합한 무선 채널 (예를 들어, Wi-Fi 커넥션), 유선 커넥션 (예를 들어, DSL, 케이블 모뎀 등), 또는 이들 양자의 조합을 포함할 수도 있다. 인코딩된 비디오 데이터의 저장 디바이스로부터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들의 조합일 수도 있다.
컴퓨터 판독 가능 매체 (16) 는, 무선 브로드캐스트 또는 유선 네트워크 송신 등의 일시적 매체, 또는 하드 디스크, 플래시 드라이브, 컴팩트 디스크, 디지털 비디오 디스크, 블루레이 디스크 또는 다른 컴퓨터 판독 가능 매체 등의 저장 매체 (즉, 비일시적 저장 매체) 를 포함할 수도 있다. 일부 예들에서, 네트워크 서버 (미도시) 는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 수신하고, 인코딩된 비디오 데이터를, 예를 들어, 네트워크 송신을 통해 목적지 디바이스 (14) 에 제공할 수도 있다. 유사하게, 디스크 스탬핑 설비와 같은 매체 생성 설비의 컴퓨팅 디바이스는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 수신하고, 인코딩된 비디오 데이터를 포함하는 디스크를 생성할 수도 있다. 따라서, 컴퓨터 판독가능 매체 (16) 는, 다양한 예들에 있어서, 다양한 형태들의 하나 이상의 컴퓨터 판독가능 매체들을 포함하는 것으로 이해될 수도 있다.
목적지 디바이스 (14) 의 입력 인터페이스 (26) 는 컴퓨터-판독가능 매체 (16) 로부터 데이터를 수신한다. 입력 인터페이스 (26) 는 다양한 유형들의 컴포넌트들 또는 디바이스들을 포함할 수도 있다. 예를 들어, 입력 인터페이스 (26) 는 무선 수신기, 모뎀, 유선 네트워킹 컴포넌트 (예를 들어, 이더넷 카드), 또는 다른 물리 컴포넌트를 포함할 수도 있다. 입력 인터페이스 (26) 가 무선 수신기를 포함하는 예들에 있어서, 입력 인터페이스 (26) 는 4G, 4G-LTE, LTE 어드밴스드, 5G 등과 같은 셀룰러 통신 표준에 따라 변조되는 비트스트림과 같은 데이터를 수신하도록 구성될 수도 있다. 입력 인터페이스 (26) 가 무선 수신기를 포함하는 일부 예들에 있어서, 입력 인터페이스 (26) 는 IEEE 802.11 사양, IEEE 802.15 사양 (예를 들어, ZigBee™), Bluetooth™ 표준 등과 같은 다른 무선 표준들에 따라 변조되는 비트스트림과 같은 데이터를 수신하도록 구성될 수도 있다. 일부 예들에 있어서, 입력 인터페이스 (26) 의 회로부는 비디오 디코더 (30) 및/또는 목적지 디바이스 (14) 의 다른 컴포넌트들의 회로부에 통합될 수도 있다. 예를 들어, 비디오 디코더 (30) 및 입력 인터페이스 (26) 는 SoC 의 부분들일 수도 있다. SoC 는 또한, 범용 마이크로프로세서, 그래픽스 프로세싱 유닛 등과 같은 다른 컴포넌트들을 포함할 수도 있다.
저장 매체 (28) 는 입력 인터페이스 (26) 에 의해 수신된 인코딩된 비디오 데이터 (예를 들어, 비트스트림) 와 같은 인코딩된 비디오 데이터를 저장하도록 구성될 수도 있다. 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 디스플레이한다. 디스플레이 디바이스 (32) 는 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 유형의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 디스플레이 디바이스를 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서 (DSP) 들, 주문형 반도체 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합과 같은 다양한 적합한 회로 중 어느 것으로도 구현될 수 있다. 이 기법들이 소프트웨어로 부분적으로 구현되는 경우, 디바이스는 본 개시의 기법들을 수행하기 위해서, 소프트웨어용 명령들을 적합한 비일시성 컴퓨터-판독가능 매체에 저장할 수도 있으며 하드웨어에서 하나 이상의 프로세서들을 이용하여 그 명령들을 실행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있는데, 이들 중 어느 일방은 각각의 디바이스에서 결합된 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다.
일부 예들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 비디오 코딩 표준 또는 사양에 따라 비디오 데이터를 인코딩 및 디코딩한다. 예를 들어, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 그의 SVC (Scalable Video Coding) 및 MVC (Multi-View Video Coding) 확장들을 포함하여, 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 으로도 알려짐), 또는 다른 비디오 코딩 표준 또는 사양에 따라 비디오 데이터를 인코딩 및 디코딩할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, ITU-T H.265 로서 알려진 HEVC (High Efficiency Video Coding), 그것의 범위 및 스크린 콘텐츠 코딩 확장들, 그것의 3D 비디오 코딩 확장 (3D-HEVC), 그것의 멀티뷰 확장 (MV-HEVC), 또는 그것의 스케일러블 확장 (SHVC) 에 따라 비디오 데이터를 인코딩 및 디코딩한다. JVET (Joint Video Exploration Team) 는 현재, JEM (Joint Exploration Model) 에 기초한 VVC (Versatile Video Coding) 표준을 개발하고 있다.
본 개시는 일반적으로 신택스 엘리먼트들과 같은 어떤 정보를 "시그널링 (signaling)" 하는 것을 언급할 수도 있다. 용어 "시그널링" 은 일반적으로, 인코딩된 비디오 데이터를 디코딩하는데 사용되는 다른 데이터 및/또는 신택스 엘리먼트들의 통신을 지칭할 수도 있다. 그러한 통신은 실시간 또는 준-실시간으로 발생할 수도 있다. 대안적으로, 이런 통신은 어떤 기간에 걸쳐서 일어날 수도 있으며, 예를 들어 인코딩 시에 신택스 엘리먼트들을 컴퓨터-판독가능 저장 매체에 비트스트림으로 저장할 때에 발생할 수도 있으며, 이 신택스 엘리먼트들은 그후 이 매체에 저장되어진 후 언제라도 디코딩 디바이스에 의해 취출될 수도 있다.
비디오 데이터는 일련의 픽처들을 포함한다. 픽처들은 "프레임들" 로서 또한 지칭될 수도 있다. 픽처는 하나 이상의 샘플 어레이들을 포함할 수도 있다. 픽처의 각각의 개별적인 샘플 어레이는 개별적인 컬러 컴포넌트에 대한 샘플들의 2-차원 어레이를 포함한다. 예를 들어, 픽처는 루마 샘플들의 2-차원 어레이, Cb 크로마 샘플들의 2-차원 어레이, 및 Cr 크로마 샘플들의 2-차원 어레이를 포함할 수도 있다. 다른 사례들에서, 픽처는 단색 (monochrome) 일 수도 있고, 루마 샘플들의 어레이만을 포함할 수도 있다.
비디오 데이터를 인코딩하는 것의 일부로서, 비디오 인코더 (20) 는 비디오 데이터의 픽처들을 인코딩할 수도 있다. 환언하면, 비디오 인코더 (20) 는 비디오 데이터의 픽처의 인코딩된 표현을 생성할 수도 있다. 이 개시는 "코딩된 픽처" 또는 "인코딩된 픽처"로서 픽처의 인코딩된 표현을 지칭할 수도 있다.
픽처의 인코딩된 표현을 생성하는 부분으로서, 비디오 인코더 (20) 는 픽처의 샘플 어레이들에서 샘플들의 블록들을 인코딩한다. 블록은 데이터의 2-차원 어레이, 이를 테면, 샘플들의 2-차원 어레이이다. 비디오 인코더 (20) 는 블록의 인코딩된 표현을 비트스트림에 포함시킬 수도 있다.
일부 예들에서, 픽처의 블록을 인코딩하기 위해, 비디오 인코더 (20) 는 인트라 예측 또는 인터 예측을 수행하여 블록에 대한 하나 이상의 예측자 블록을 생성한다. 또한, 비디오 인코더 (20) 는 블록에 대한 잔차 데이터를 생성할 수도 있다. 잔차 블록은 잔차 샘플들을 포함한다. 각각의 잔차 샘플은 생성된 예측 블록들 중 하나의 샘플과 블록의 대응하는 샘플 간의 차이를 나타낼 수도 있다. 비디오 인코더 (20) 는 변환 계수들을 생성하기 위해 잔차 샘플들의 블록들에 변환을 적용할 수도 있다. 또한, 비디오 인코더 (20) 는 변환 계수들을 양자화할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 변환 계수를 표현하기 위해 하나 이상의 신택스 엘리먼트들을 생성할 수도 있다. 비디오 인코더 (20) 는 변환 계수를 나타내는 신택스 엘리먼트들 중 하나 이상을 엔트로피 인코딩할 수도 있다.
일부 비디오 코딩 사양들에서, 픽처의 인코딩된 표현을 생성하기 위해, 비디오 인코더 (20) 는 픽처의 각각의 샘플 어레이를 코딩 트리 블록들 (CTBs) 로 파티션하고 CTB들을 인코딩한다. CTB 는 픽처의 샘플 어레이의 샘플들의 NxN 블록이다. 예를 들어, CTB 는 그 사이즈가 16x16 내지 64x64 의 범위에 있을 수 있다.
픽처의 코딩 트리 유닛 (CTU) 은 하나 이상의 할당된 CTB들, 및 하나 이상의 할당된 CTB들의 샘플들을 인코딩하는데 사용된 신택스 구조들을 포함한다. 실례로, 각 CTU 는 픽처의 루마 샘플들의 CTB, 픽처의 크로마 샘플들의 2개의 대응하는 CTB들, 및 CTB들의 샘플들을 인코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3개의 별개의 칼라 평면들을 갖는 픽처들에서, CTU 는 단일 CTB, 및 CTB 의 샘플들을 인코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. CTU 는 또한 "트리 블록" 또는 "최대 코딩 유닛 (LCU)" 으로 지칭될 수도 있다. 이 개시에서, "신택스 구조" 는 규정된 순서로 비트스트림에서 함께 존재하는 제로 또는 그보다 많은 신택스 엘리먼트들로서 정의될 수도 있다. 일부 코덱들에서, 인코딩된 픽처는 픽처의 모든 CTU 들을 포함하는 인코딩된 표현이다.
픽처의 CTU 를 인코딩하기 위해, 비디오 인코더 (20) 는 CTU 의 CTB 들을 하나 이상의 코딩 블록들로 파티션할 수도 있다. 코딩 블록은 샘플들의 NxN 블록이다. 일부 코덱들에서, 픽처의 CTU 를 인코딩하기 위하여, 비디오 인코더 (20) 는 CTU 의 코딩 트리 블록들을 파티션하여 CTU 의 CTB들을 코딩 블록들, 따라서, 일명 "코딩 트리 유닛들"로 파티션할 수도 있다.
코딩 유닛 (CU) 은 하나 이상의 코딩 블록들 및 하나 이상의 코딩 블록들의 샘플들을 인코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. 예를 들어, CU 는 루마 샘플들의 코딩 블록 및 루마 샘플 어레이, Cb 샘플 어레이, 및 Cr 샘플 어레이를 가지는 픽처의 크로마 샘플들의 2개의 대응하는 코딩 블록들, 및 코딩 블록들의 샘플들을 인코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3 개의 별개의 컬러 평면들을 갖는 픽처들에 있어서, CU 는 단일의 코딩 블록, 및 그 코딩 블록의 샘플들을 코딩하는데 사용된 신택스 구조들을 포함할 수도 있다.
또한, 비디오 인코더 (20) 는 비디오 데이터의 픽처의 CU들을 인코딩할 수도 있다. 일부 코덱들에서, CU 를 인코딩하는 것의 부분으로서, 비디오 인코더 (20) 는 CU 의 코딩 블록을 하나 이상의 예측 블록들로 파티션할 수도 있다. 예측 블록은, 동일한 예측이 적용되는 샘플들의 직사각형 (즉, 정사각형 또는 비정사각형) 블록이다. CU 의 예측 유닛 (PU) 은 CU 의 하나 이상의 예측 블록들 및 그 하나 이상의 예측 블록들을 예측하기 위해 사용되는 신택스 구조를 포함할 수도 있다. 예를 들어, PU 는 루마 샘플들의 예측 블록, 크로마 샘플들의 2개의 대응하는 예측 블록들, 및 예측 블록들을 예측하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 화상들 또는 3개의 분리된 컬러 평면들을 포함하는 화상들에서, PU 는 단일 예측 블록 및 그 예측 블록을 예측하는데 이용된 신택스 구조들을 포함할 수도 있다. 다른 코덱들에서, 비디오 인코더 (20) 는 CU 의 코딩 블록을 예측 블록들로 파티션할 수도 있다. 다만, 예측은 CU 레벨에서 발생한다. 따라서, CU 의 코딩 블록은 CU 의 예측 블록과 동의어일 수도 있다.
비디오 인코더 (20) 는 CU 의 예측 블록 (예를 들어, 루마, Cb, 및 Cr 예측 블록) 에 대해 예자성 블록 (예를 들어, 루마, Cb, 및 Cr 예측자 블록) 을 생성할 수도 있다. 비디오 인코더 (20) 는 인트라 예측 또는 인터 예측을 사용하여 예측자 블록을 생성할 수도 있다. 비디오 인코더 (20) 가 예측자 블록을 생성하기 위해 인트라 예측을 사용하면, 비디오 인코더 (20) 는 CU 를 포함하는 픽처의 디코딩된 샘플들에 기초하여 예측자 블록을 생성할 수도 있다. 비디오 인코더 (20) 가 예측자 블록을 생성하기 위해 인터 예측을 사용하면, 비디오 인코더 (20) 는 참조 픽처 (즉, 현재 픽처 이외의 픽처) 의 디코딩된 샘플들에 기초하여 예측자 블록을 생성할 수도 있다.
비디오 코더, 이를 테면, 비디오 인코더 (20) 또는 비디오 디코더 (30) 는 사용가능한 인트라 예측 모드들로부터 선택된 인트라 예측 모드를 사용하여 인트라 예측을 수행할 수도 있다. 인트라 예측 모드들은 또한 인트라 예측 방향들로 지칭될 수도 있는 지향성 인트라 예측 모드들을 포함할 수도 있다. 상이한 지향성 인트라 예측 모드들은 상이한 각도들에 대응한다. 일부 예들에서, 지향성 인트라 예측 모드를 사용하여 에측자 블록의 현재 샘플의 값을 결정하기 위하여, 비디오 코더는 지향성 인트라 예측 모드에 대응하는 각도에서의 현재 샘플을 통과하는 라인이 경계 샘플들의 세트에 교차하는 포인트를 결정할 수도 있다. 경계 샘플들은 예측자 블록의 바로 좌측의 컬럼에서의 샘플들 및 예측자 블록의 바로 위의 로우에서의 샘플들을 포함할 수도 있다. 포인트가 경계 샘플들 중 2 개 사이에 있다면, 비디오 코더는 포인트에 대응하는 값을 보간 또는 달리 결정할 수도 있다. 포인트가 경계 샘플들 중 단일의 샘플에 대응하면, 비디오 코더는 포인트의 값이 경계 샘플과 동일하다고 결정할 수도 있다. 비디오 코더는 예측자 블록의 현재 샘플의 값을 결정된 포인트 값과 동일하게 설정할 수도 있다.
비디오 인코더 (20) 는 CU 에 대해 하나 이상의 잔차 블록들을 생성할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 각각의 컬러 컴포넌트들 (예를 들어, 루마, Cb, 및 Cr) 에 대한 개별의 잔차를 생성할 수도 있다. 컬러 컴포넌트에 대한 CU 의 잔차 블록에서의 각각의 샘플은 컬러 컴포넌트에 대한 CU 의 예측자 블록에서의 샘플과 컬러 컴포넌트의 CU 의 코딩 블록에서의 대응하는 샘플 간의 차이를 표시한다.
일부 비디오 코딩 표준들에서, 비디오 인코더 (20) 는 CU 의 잔차 블록들을 하나 이상의 변환 블록들로 분해할 수도 있다. 예를들어, 비디오 인코더 (20) 는 쿼드-트리 파티션을 사용하여 CU 의 잔차 블록들을 하나 이상의 변환 블록들로 분해할 수도 있다. 변환 블록은, 동일한 변환이 적용되는 샘플들의 직사각형 (예를 들어, 정사각형 또는 비-정사각형) 블록이다. CU 의 변환 유닛 (TU) 은 하나 이상의 변환 블록들을 포함할 수도 있다. 비디오 인코더 (20) 는 TU 를 위한 계수 블록을 생성하기 위하여 TU 의 변환 블록에 하나 이상의 변환들을 적용할 수도 있다. 계수 블록은 변환 계수들의 2-차원 어레이이다. 비디오 인코더 (20) 는 잠재적으로 양자화된 변환 계수의 일부 또는 전부를 표시하는 신택스 엘리먼트를 생성할 수도 있다. 비디오 인코더 (20) 는 양자화된 변환 계수를 표시하는 신택스 엘리먼트들 중 하나 이상을 (예를 들어, CABAC (Context-Adaptive Binary Arithmetic Coding) 를 사용하여) 인코딩할 수도 있다.
비디오 인코더 (20) 는 인코딩된 비디오 데이터를 포함하는 비트스트림을 출력할 수도 있다. 즉, 비디오 인코더 (20) 는 비디오 데이터의 인코딩된 표현을 포함하는 비트스트림을 출력할 수도 있다. 비디오 데이터의 인코딩된 표현은 비디오 데이터의 픽처들의 인코딩된 표현을 포함할 수도 있다. 예를 들어, 비트스트림은 비디오 데이터의 인코딩된 픽처들 및 연관된 데이터의 표현을 형성하는 비트들의 시퀀스를 포함할 수도 있다. 일부 예들에서, 인코딩된 픽처의 표현은 픽처의 블록들의 인코딩된 표현들을 포함할 수도 있다.
비디오 디코더 (30) 는 비디오 인코더 (20) 에 의해 생성된 비트스트림을 수신할 수도 있다. 위에서 주지된 바와 같이, 비트스트림은 비디오 데이터의 인코딩된 표현을 포함할 수도 있다. 비디오 디코더 (30) 는 비디오 데이터의 픽처들을 복원하기 위해 비트스트림을 디코딩할 수도 있다. 비트스트림을 디코딩하는 것의 부분으로서, 비디오 디코더 (30) 는 비트스트림으로부터 신택스 엘리먼트들을 획득한다. 비디오 디코더 (30) 는 비트스트림으로부터 획득된 신택스 엘리먼트들에 적어도 부분적으로 기초하여 비디오 데이터의 픽처들을 복원한다. 비디오 데이터의 픽처를 복원하기 위한 프로세스는 일반적으로, 픽처를 인코딩하기 위해 비디오 인코더 (20) 에 의해 수행되는 프로세스에 대해 역일 수도 있다.
예를 들어, 비디오 데이터의 픽처를 디코딩하는 것의 부분으로서, 비디오 디코더 (30) 는 인터 예측 또는 인트라 예측을 사용하여 픽처의 CU들에 대한 예측자 블록들을 생성할 수도 있다. 또한, 비디오 디코더 (30) 는 비트스트림으로부터 획득된 신택스 엘리먼트들에 기초하여 변환 계수들을 결정할 수도 있다. 일부 예에서, 비디오 디코더 (30) 는 결정된 변환 계수를 역양자화할 수도 있다. 역 양자화는 양자화된 값을 복원된 값에 맵핑한다. 실례로, 비디오 디코더 (30) 는 양자화 스텝 사이즈에 의해 곱해지는 값을 결정함으로써 값을 역 양자화할 수도 있다. 또한, 비디오 디코더 (30) 는 잔차 샘플들의 값들을 결정하기 위해 결정된 변환 계수들에 역 변환을 적용할 수도 있다. 비디오 디코더 (30) 는 잔차 샘플들 및 생성된 예측자 블록들의 대응하는 샘플들에 기초하여 픽처의 블록을 복원할 수도 있다. 예를 들어, 비디오 디코더 (30) 는 잔차 샘플들을 생성된 예측자 블록의 대응하는 샘플들에 가산하여 블록의 복원된 샘플들을 결정할 수도 있다.
보다 구체적으로, 비디오 디코더 (30) 는 인터 예측 또는 인트라 예측을 사용하여 현재 CU의 각각의 PU에 대한 하나 이상의 예측자 블록을 생성할 수도 있다. 추가로, 비디오 디코더 (30) 는 현재의 CU 의 TU들의 계수 블록들을 역 양자화할 수도 있다. 비디오 디코더 (30) 는 현재의 CU 의 TU들의 변환 블록들을 복원하기 위해 계수 블록들에 대해 역 변환들을 수행할 수도 있다. 비디오 디코더 (30) 는 현재 CU 의 PU들에 대한 예측 블록들의 샘플들 및 현재 CU 의 TU 들의 변환 블록들의 잔차 샘플들에 기초하여 현재 CU 의 코딩 블록을 복원할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 현재 CU 의 PU들에 대한 예측자 블록들의 샘플들을, 현재 CU 의 TU 들의 변환 블록들의 대응하는 디코딩된 샘플들에 부가함으로써, 현재 CU 의 코딩 블록들을 복원할 수도 있다. 픽처의 각각의 CU 에 대한 코딩 블록들을 복원함으로써, 비디오 디코더 (30) 는 픽처를 복원할 수도 있다.
픽처의 슬라이스는 픽처의 정수 개수의 블록들을 포함할 수도 있다. 예를 들어, 픽처의 슬라이스는 픽처의 정수 개의 CTU들을 포함할 수도 있다. 슬라이스의 CTU 들은 레스터 스캔 순서와 같은 스캔 순서로 연속적으로 순서화될 수도 있다. 일부 코덱들에서, 슬라이스는 하나의 독립적인 슬라이스 세그먼트에서 그리고 동일한 액세스 유닛 내의 (있다면) 다음의 독립적인 슬라이스 세그먼트에 선행하는 (있다면) 모든 후속의 종속적인 슬라이스 세그먼트들에 포함된 정수 개수의 CTU들로서 정의된다. 또한, 일부 코덱들에서, 슬라이스 세그먼트는 단일 NAL 유닛에 포함되고 타일 스캔에서 연속적으로 순서화된 정수 개수의 CTU들로서 정의된다. 타일 스캔은 CTB 들이 타일에서 CTB 래스터 스캔으로 연속적으로 순서화되는 픽처를 포지셔닝하는 CTB 들의 특정 순차적 순서화인 반면에, 픽처에서의 타일들은 픽처의 타일들의 래스터 스캔으로 연속적으로 순서화된다. 타일은 픽처에서의 특정 타일 열 및 특정 타일 행 내의 CTB 들의 직사각형 영역이다.
인트라 예측은 블록의 공간적으로 이웃하는 복원된 이미지 샘플들을 사용하여 이미지 블록 예측을 수행한다. 16×16 이미지 블록에 대한 인트라 예측의 통상적인 예가 도 2 에 도시된다. 인트라 예측에서, (어두운 윤곽의 정사각형으로 된) 16×16 이미지 블록은 (백색 화살표로 표시된 바와 같이) 선택된 예측 방향을 따라 위측 및 좌측 이웃하는 복원된 샘플들 (참조 샘플들) 에 의해 예측된다. 도 2 에서, 블록 스퀘어는 16×16 블록 (50) 을 포함한다. 도 2 에서, 블록 (50) 은 선택된 예측 방향을 따라 위측 및 좌측 이웃하는 복원된 샘플들 (52, 54) (즉, 참조 샘플들) 에 의해 묘사된다. 도 2 에서, 흑색 박스 외부의 샘플들은 참조 샘플들이다. 도 2 에서의 백색 화살표는 선택된 예측 방향을 표시한다.
도 3 은 예시적인 인트라 예측 모드들을 예시한다. 일부 예들에서, 루마 블록의 인트라 예측에 대해, 플래너 모드, DC 모드 및 33 개의 각도 모드들을 포함하는 35 개의 모드들을 포함한다. 인트라 예측의 35 개의 모드들은 이하의 표에 도시된 바와 같이 인덱싱된다:
표 1 - 인트라 예측 모드 및 연관된 명칭들의 상세
Figure pct00001
도 4 는 플래너 모드의 일 예를 예시하는 개념도이다. 통상적으로 가장 빈번하게 사용되는 인트라 예측 모드인 플래너 모드에 대해, 예측 샘플은 도 4 에서 도시된 바와 같이 생성된다. NxN 블록에 대해 플래너 예측을 수행하기 위하여, (x, y) 에 위치된 각각의 샘플 (pxy) 에 대해, 예측 값은 4 개의 특정 이웃하는 복원된 샘플들, 즉 참조 샘플들에 이중선형 필터를 적용하는 것에 의해 계산될 수도 있다. 4 개의 참조 샘플들은 상부-우측 복원된 샘플 (TR), 하부-좌측 복원된 샘플 (BL), 현재 샘플의 동일 컬럼 (rx,-1) 및 로우 (r)-1,y 에 위치된 2 개의 복원된 샘플들을 포함한다. 플래너 모드는 이하와 같이 공식화될 수 있다:
Figure pct00002
여기서, x1=x+1, y1=y+1, R=TR 및 B=BL 이다.
DC 모드에 대해, 예측자 블록은 이웃하는 복원된 샘플들의 평균 값으로 채워진다. 일반적으로, 플래너 모드와 DC 모드 양쪽은 평활하게 가변하고 일정한 이미지 영역들을 모델링하기 위해 적용된다.
33 개의 상이한 예측 방향들을 포함하는, HEVC 에서의 각도 인트라 예측 모드들에 대해, 인트라 예측 프로세스가 다음과 같이 설명된다. 각각의 주어진 각도 인트라 예측 모드에서, 인트라 예측 방향이 따라서 식별될 수도 있고; 예를 들어, 도 3 에 따라 인트라 모드 (18) 는 순수 수평 예측 방향에 대응하고 인트라 모드 (26) 는 순수 수직 예측 방향에 대응한다. 따라서, 도 3 의 예에서, 인트라 모드 (18) 는 수평 모드에 대응하고, 인트라 모드 (26) 는 수직 모드에 대응한다.
도 5 는 각도 인트라 예측 모드의 일 예를 예시하는 개념도이다. 특정 인트라 예측 모드가 주어지면, 예측자 블록의 각각의 샘플에 대해, 도 5 에서의 예에서 도시된 바와 같이, 예측 방향을 따라 이웃하는 복원된 샘플들의 로우 및/또는 컬럼에 자신의 좌표 (x, y) 가 먼저 투영된다. (x,y) 가 2 개의 이웃하는 복원된 샘플들 L 과 R 사이의 분수 포지션 α 로 투영된다고 가정하면, 다음과 같이 공식화된 2-탭 이중선형 보간 필터를 사용하여 (x, y) 에 대한 예측 값을 계산할 수도 있다:
Figure pct00003
예를 들어, 도 5 의 예에 도시된 바와 같이, 예측자 블록 (72) 의 샘플 (70) 의 좌표들 (x,y) 은 특정 인트라 예측 방향 (74) 을 따라 투영된다. 부동 소수점 연산을 피하기 위해, HEVC 에서, 위의 계산은 실제로 다음으로서, 정수 산술을 사용하여 실제적으로 대략화된다:
Figure pct00004
여기서, a 는
Figure pct00005
와 같은 정수이다
일부 예들에서, 인트라 예측 전에, 이웃하는 참조 샘플들은 인트라 참조 평활화, 또는 모드-종속 인트라 평활화 (MDIS) 로서 알려진 바와 같이 2-탭 이중선형 또는 3-탭 (1,2,1)/4 필터를 사용하여 필터링된다. 인트라 예측을 행할 때, 인트라 예측 모드 인덱스 (predModeIntra) 및 블록 사이즈 (nTbS) 로 주어지면, 참조 평활화 프로세스가 수행되는지의 여부 및 어느 평활화 필터가 사용되는지가 결정된다. 인트라 예측 모드 인덱스는 인트라 예측 모드를 표시하는 인덱스이다. HEVC 표준으로부터의 아래의 텍스트는 이웃하는 샘플들의 필터링 프로세스를 설명한다.
8.4.4.2.3 이웃하는 샘플들의 필터링 프로세스
이 프로세스로의 입력들은 다음과 같다:
- 이웃하는 샘플들 p[ x ][ y ], 여기서 x = -1, y = -1..nTbS * 2 - 1 및 x = 0..nTbS * 2 - 1, y = -1 임,
- 예측 블록 사이즈를 규정하는 변수 nTbS.
이 프로세스의 출력들은 필터링된 샘플들 pF[ x ][ y ] 이고, 여기서 x = -1, y = -1..nTbS * 2 - 1 및 x = 0..nTbS * 2 - 1, y = -1 이다.
변수 filterFlag 는 다음과 같이 유도된다:
- 다음 조건들 중 하나 이상이 참이면, filterFlag 는 0 과 같게 설정된다:
- predModeIntra 는 INTRA_DC 와 같다.
- nTbS 는 4 와 같다.
- 그렇지 않으면, 다음이 적용된다:
- 변수 minDistVerHor 는 Min( Abs( predModeIntra - 26 ), Abs( predModeIntra - 10 ) ) 와 같게 설정된다.
- 변수 intraHorVerDistThres[ nTbS ] 는 표 8-3 에서 규정된다.
- 변수 filterFlag 는 다음과 같이 유도된다:
- minDistVerHor 이 intraHorVerDistThres[ nTbS ] 보다 크면, filterFlag 는 1 과 같게 설정된다.
- 그렇지 않으면, filterFlag 는 0 과 같게 설정된다.
표 8-3 - 여러 예측 블록 사이즈들에 대한 intraHorVerDistThres[nTbS] 의 상세
Figure pct00006
filterFlag 가 1 과 같을 때, 다음이 적용된다:
- 변수 biIntFlag 는 다음과 같이 유도된다:
- 다음 조건들 중 모두가 참이면, biIntFlag 는 1 과 같게 설정된다:
- strong_intra_smoothing_enabled_flag 는 1 와 같다.
- nTbS 는 32 와 같다.
Figure pct00007
- 그렇지 않으면, biIntFlag 는 0 과 같게 설정된다.
- 필터링은 다음과 같이 수행된다:
- biIntFlag 가 1 과 같으면, 필터링된 샘플 값들 pF[ x ][ y ] (여기서, x = -1, y = -1..63 및 x = 0..63, y = -1) 은 다음과 같이 유도된다:
Figure pct00008
- 그렇지 않으면 (biIntFlag 가 0 과 같으면), 필터링된 샘플 값들 pF[ x ][ y ] (여기서, x = -1, y = -1..nTbS * 2 - 1 및 x = 0..nTbS * 2 - 1, y = -1) 은 다음과 같이 유도된다:
Figure pct00009
Panusopone 등의 "Unequal Weight Planar Prediction and Constrained PDPC", ITU-T SG 16 WP 3 및 ISO/IEC JTC 1/SC 29WG 11 의 JVET (Joint Video Exploration Team), 5th Meeting, Geneva, CH (12-20 January 2017), document JVET-E0068 에는, UWP (unequal weight planar) 모드가 설명되어 있다. UWP 모드에서, WxH (폭 x 높이) 블록에 대해, 플래너 예측이:
Figure pct00010
으로, 도 4 의 방식으로 수행되며, 여기서, R 및 B 는 아래 도시된 바와 같이 계산된다,
Figure pct00011
여기서, BR 은 아래 도시된 바와 같이 계산된다,
Figure pct00012
그리고 pxy 는 예측된 샘플의 값이다.
비록 크로스 컴포넌트 리던던시가 YCbCr 컬러 공간에서 현저히 감소되더라도, 3 개 컬러 컴포넌트들 간의 상관은 여전히 존재한다. 여러 기법들은 3 개의 컬러 컴포넌트들 간의 상관성을 추가로 감소시키는 것에 의해 비디오 코딩 성능을 개선하도록 연구되어 왔다. 예를 들어, 4:2:0 크로마 비디오 코딩에서, 선형 모델 (LM) 예측 모드로 명명된 방법이 HEVC 표준의 개발 동안 연구되었다. 4:2:0 샘플링에 있어서, 2개의 크로마 어레이들 각각은 루마 어레이의 절반 높이 및 절반 폭을 갖는다. LM 예측 모드에서, 크로마 샘플들은 다음과 같은 선형 모델을 사용함으로써 동일한 블록의 복원된 루마 샘플들에 기초하여 예측된다:
Figure pct00013
predC(i,j) 는 현재 블록에서 크로마 샘플들의 예측을 나타내고 recL(i,j) 는 현재 블록의 다운-샘플링되는 복원된 루마 샘플들을 표현한다. 파라미터들 α 및 β 는 현재 블록 주변의 인과적 복원된 샘플들로부터 유도된다. 블록의 인과적 샘플들은 디코딩 순서에서 블록 이전에 발생하는 샘플들이다. 크로마 블록 사이즈가 NxN 에 의해 표기되면, i 및 j 양자 모두는 범위 [0, N) 이내이다.
식 (5) 에서의 파라미터들 α 및 β 는 현재 블록 주변의 이웃한 복원된 루마 및 크로마 샘플들 간의 회귀 (regression) 에러를 최소화함으로써 유도된다.
Figure pct00014
파라미터들 α 및 β 는 다음과 같이 풀린다.
Figure pct00015
위의 식들에서, xi 는 다운-샘플링되는 복원된 루마 참조 샘플이며 여기서 컬러 포맷은 4:4:4 가 아니며 (즉, 컬러 포맷은 하나의 크로마 샘플이 다수의 루마 샘플들에 대응하는 포맷이다), yi 는 다운 샘플링없이, 복원된 크로마 참조 샘플들이며, I 는 참조 샘플들의 수이다. 즉, 비디오 코더는 크로마 포맷이 4:4:4 가 아니라는 것에 기초하여 복원된 루마 참조 샘플들을 다운-샘플링할 수도 있지만, 컬러 포맷이 4:4:4 인 것에 기초하여 복원된 루마 참조 샘플들을 다운-샘플링하는 것을 금지한다. 타겟 N×N 크로마 블록에 대해, 좌측 및 위측 인과적 샘플들이 이용가능할 때, 총 관여되는 참조 샘플들 수 (I) 는 2N 과 동일하다. 좌측 또는 위측 인과적 샘플만이 사용가능할 때,총 관여되는 참조 샘플들 수 I 는 N 과 동일하다. 여기서, N 은 항상 2m 과 같다 (여기서 m 은 상이한 CU 사이즈들마다 상이할 수도 있다). 따라서, 복잡성을 감소시키기 위해, 시프팅 동작은 식들 (7) 및 (8) 에서 나눗셈 연산들을 구현하는데 사용될 수 있다. 참조 샘플의 참 값이 비디오 디코더에 의해 사용하기에 유용하지 않을 때 (예를 들어, 참조 샘플이 예측 블록과 관련하여 슬라이스, 픽처, 또는 타일 바운더리 밖에 있을 때) 참조 샘플은 사용가능하지 않은 것으로 고려될 수도 있다.
미국 특허 공개 2017-0094285-A1 는 필터링된 그리고 필터링되지 않은 참조 값들에 기초하여 그리고 예측된 픽셀의 포지션에 기초하여 예측들을 결합하는 방법을 정의하는 파라미터화된 식들의 세트를 설명한다. 이 방식은 포지션 종속 예측 결합 (PDPC) 로 불리며 JEM 7 에서 적응되었다. A. Said 등의 "Position-dependent intra prediction combination", Geneva, Switzerland, ITU-T SG16, COM16-C1046 배포물, Oct. 2015 는 적응된 대상물에 대한 표준 제출 문서이다. JEM 7 에서, PDPC 는 플래너 모드에만 적용된다.
도 6a 는 4x4 픽셀 블록에 대한 PDPC 에 사용가능한 데이터의 일 예를 예시하는 개념도이다. 도 6b 는 4x4 픽셀 블록에 대한 PDPC 에 사용가능한 데이터의 일 예를 예시하는 개념도이다. PDPC 에서, 임의의 2 개의 세트들의 픽셀 예측들 (pr [x,y] 및 qs [x,y]) 이 주어지면, 필터링되지 않은 그리고 필터링된 (또는 평탄화된) 참조값들 r 및 s 만을 각각 사용하여 연산되면 v[x,y] 에 의해 표시된 픽셀의 결합된 예측된 값은 다음에 의해 정의된다:
Figure pct00016
여기서 c[x,y] 는 결합 파라미터들의 세트이며, 이들의 값은 픽셀 포지션에 의존한다. 도 6a 및 도 6b 에서, 참조값들 (즉, 참조 샘플들) 은 음영표시된 정사각형으로서 도시되며, 예측 샘플들은 백색 정사각형으로서 도시된다.
PDPC 의 하나의 실제 적인 구현은 다음 식을 사용한다:
Figure pct00017
여기서,
Figure pct00018
,g, 및 dv,dh∈{1,2} 는 수직 및 수평 방향을 따라 좌측, 상부 좌측 및 상부의 필터링되지 않은 참조 샘플에 대한 가중치들이 얼마나 빨리 붕괴하는지를 제어하는 미리 정의된 파라미터들이고, N 은 블록 사이즈이고,
Figure pct00019
는 필터링된 참조값들을 사용하여 특정 모드에 대해 HEVC 표준에 따라 연산되는 예측 값들이고 그리고:
Figure pct00020
는 파라미터들에 의해 정의되는 정규화 팩터이다. 참조 필터들, 예를 들어, 3-탭 {1,2,1}, 5-탭 {1,4,6,4,1} 또는 7-탭 {1,6,15,20,15,6,1} 은 필터링된 참조값들을 생성하도록 필터링되지 않은 참조값들에 적용된다. 이 개시에서, 필터의 탭들에 대한 기호 {t1, t2,… tc,…, tn} 는 샘플들의 세트에서의 현재 샘플의 필터링된 값들이 현재 샘플 이전 또는 이후의 샘플들의 가중된 합들과 동일함을 표시하며, 현재 샘플에 적용되는 가중치는 {t1, t2,… tc,…, tn} 에서의 중앙 가중치 (즉, tc)이고, 가중치들 (t1…tc-1) 은 현재 샘플 이전의 샘플들에 적용되는 가중치이고, tc+1…tn 는 현재 샘플 이후의 샘플들에 적용되는 가중치들이다. 일부 예들에서, 로우-패스 필터들이 참조 필터들로서 사용될 수 있다. 통상의 로우-패스 필터는 양의 필터 계수들만을 가질 수 있거나 또는 음의 필터 계수들이 존재할 수 있지만 절대 값은 상대적으로 작거나 또는 0에 가깝다.
대안적으로, PDPC 는 아래와 같이 4-탭 필터로서 공식화될 수 있다:
Figure pct00021
여기서,
Figure pct00022
는 상부, 좌측, 상부-좌측 필터링되지 않은 참조샘플들에 적용되는 가중화들이다.
PDPC 모드에 관련된 JEM 에는 수개의 단점들이 존재한다. 예를 들어, JEM 7 에서, PDPC 는 플래너 모드에만 적용되며, 이는 PDPC 에 의해 기여되는 코딩 이득을 제한한다. JEM 7 에서, DC 모드에 적용되는 바운더리 필터 및 수평 및 수직 모드들에 적용되는 에지 필터가 존재한다. DC 모드에 적용된 바운더리 필터는 좌측 및 위측에서 블록 바운더리들을 가로지르는 예측자에 대한 필터이다. 수평/수직 에지 필터는 수평 및 수직 픽셀과 상부 좌측 코너 픽셀 사이의 차이를 보상하는 필터이다. 이들 코딩 툴들은 알고리즘 설계의 관점에서 PDPC 와 오버랩하는 방식으로 인트라 예측을 리파이닝한다. 서로 오버랩하는 수개의 코딩 툴들의 존재는 인트라 예측의 클린하고 조화로운 설계의 관점에서 바람직하지 않다. PDPC 에서의 파라미터들은 트레이닝에 기초하여 유도되고, 이는 상이한 시퀀스들에 대한 코딩 이득의 관점에서 준최적일 수 있다. UWP 모드는 나눗셈 연산들을 요구하며, 이는 실제적 구현에 바람직하지 못하다. UWP 가 대안적으로, 나눗셈을 피하기 위해 룩업 테이블 (LUT) 을 사용하여 접근될 수도 있지만, 이는 LUT 를 저장하기 위한 추가적인 메모리를 요구한다. 위에 언급된 문제들을 해결하기 위해, 본 개시는 다음의 기법들을 설명한다.
이 개시는 위에 설명된 단점들 중 하나 이상을 해결할 수도 있는 간략화된 PDPC 기법들을 설명한다. 도 7a 는 이 개시의 기법에 따라 예측 샘플 (0, 0) 을 생성하기 위하여 적용되는 가중화를 갖는 플래너/DC 모드를 사용한 일 예를 예시하는 블록도이다. 도 7b 는 이 개시의 기법에 따라 예측 샘플 (1, 0) 을 생성하기 위하여 적용되는 가중화를 갖는 플래너/DC 모드를 사용한 일 예를 예시하는 블록도이다. 도 7c 는 이 개시의 기법에 따라 예측 샘플 (0, 1) 을 생성하기 위하여 적용되는 가중화를 갖는 플래너/DC 모드를 사용한 일 예를 예시하는 블록도이다. 도 7d 는 이 개시의 기법에 따라 예측 샘플 (1, 1) 을 생성하기 위하여 적용되는 가중화를 갖는 플래너/DC 모드를 사용한 일 예를 예시하는 블록도이다. 본원에 개시된 간략화된 PDPC 기법들은 루미넌스 (Y) 및 크로미넌스 (Cb, Cr) 컴포넌트들 양쪽에 또는 루미넌스 컴포넌트에만 또는 크로미넌스 컴포넌트에만 적용된다.
이 개시의 기법에 따르면, 비디오 코더는 아래의 식 (9) 를 사용하여 좌표 (x, y) 에서 예측 샘플을 계산할 수도 있다.
Figure pct00023
식 (9) 및 이 개시 어디에서나, offsetrightShift 의 예시의 값들은 offset = 32rightShift = 6 을 포함한다. 식 (9) 에서,
Figure pct00024
는 HEVC 에 의해 규정된 인트라 예측 프로세스에 따라 결정되는 좌표들 (x, y) 에서의 예측 샘플의 값을 표기한다. 일부 예들에서, 오프셋은 0, 0.5, 또는 다른 값과 같을 수도 있다.
다른 예에서, 비디오 코더는 아래의 식 (10) 에 따라 좌표들 (x, y) 에서 예측 샘플의 값을 계산할 수도 있다.
Figure pct00025
식 (10) 에서, qs[x, y] 는 HEVC 에 의해 규정된 인트라 예측 프로세스 또는 다른 인트라 예측 프로세스에 따라 결정되는 좌표들 (x, y) 에서의 예측 샘플의 값을 표기한다.
다른 예에서, 비디오 코더는 아래의 식 (11) 에 따라 좌표들 (x, y) 에서 예측 샘플의 값을 계산할 수도 있다.
Figure pct00026
식 (11) 은 rightShift 과, wT, wL, 및 wTL 가 제 4 가중치를 결정하기 위해 감산되는 값 사이의 예시의 관계를 나타낸다. 아래의 제목이 "인트라 예측 모드 INTRA_PLANAR 의 상세", "인트라 예측 모드 INTRA_DC의 상세", "인트라 예측 모드 INTRA_HOR 의 상세", 및 "인트라 예측 모드 INTRA_VERDML 의 상세" 인 섹션들에서 사용되는 식들은 식 (11) 의 버전을 사용하며, 여기서, rightShift 는 6 과 같고, 그리고 결과적으로, wT, wL, 및 wTL 가 제 4 가중치를 결정하기 위해 감산되는 값은 64 와 같다.
오리지널 PDPC 설계에서 발생되는 바와 같이 LUT 테이블을 회피하기 위해, 간략화된 버전에서, 이 개시의 기법들에 따라 구현되는 비디오 코더는 좌측 및 상부 참조 샘플들에 대한 초기 가중치들 (wL, wT)(예를 들어, 도 7a 에 도시된 바와 같이 32, 32) 을 선택할 수 있고, 상부-좌측 참조 샘플들에 대한 가중치 (wTL) 를 -(wL >> 4) - (wT >> 4) (예를 들어, 도 7a 에 도시된 바와 같이 -4) 로서 유도할 수 있고, 그 다음, 식 (9), (10), 또는 (11) 을 적용하는 것에 의해 블록에서의 제 1 샘플에 대한 PDPC 예측을 계산할 수 있다.
블록에서의 다음 샘플로 이동하여, 가중치들 (wL, wT, wTL) 의 초기값은 현재 샘플과 블록 바운더리들 사이의 거리에 기초하여 업데이트된다. 예를 들어, 업데이트는 단지 시프트 연산, 이를 테면, ">>1" 또는 ">>2" 일 수 있고, 즉, 가중치는 2 또는 4 로 나누어진다 (예를 들어, 도 7a 및 도 7b 에 도시된 바와 같이 (0, 0) 에서부터 (1, 0) 로 이동하여, wL 이 4 로 나누어진다). 블록에서 다음 샘플로 이동하여, 가중치들이 다시 업데이트되고 이하 동일하게 이루어진다. 이러한 접근방식은 가중치들에 대한 LUT 를 가질 필요가 없는데, 그 이유는 모든 가중치들이 초기 가중치들로부터 유도되기 때문이다.
따라서, 본 개시의 기법에 따르면, 비디오 코더 (예를 들어, 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 제 1 가중치 (wL) 의 초기값을 결정할 수도 있고, 제 2 가중치 (wT) 에 대한 초기값을 결정할 수도 있다. 또한, 예측자 블록에서 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 비디오 코더는 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정할 수도 있다. 비디오 코더는 또한 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정할 수도 있다. 또한, 비디오 코더는 개별적인 샘플에 대한 제 3 가중치 (wTL) 의 값을 결정할 수도 있다. 비디오 코더는 또한 개별적인 샘플에 대한 제 1 가중치의 값, 개별적인 샘플에 대한 제 2 가중치의 값, 및 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 개별적인 샘플에 대한 제 4 가중치의 값을 결정할 수도 있다. 예를 들어, 비디오 코더는 개별적인 샘플에 대한 제 4 가중치의 값을 (64 - wL - wT - wTL) 으로서 또는 이 개시에 제공되는 다른 예들의 어느것에 따라 결정할 수도 있다. 추가적으로 비디오 코더는 인트라 예측 모드에 따라 개별적인 샘플에 대한 1차 값 (qs[x, y]) 을 결정할 수도 있다. 다음으로, 비디오 코더는 제 2 값에 의해 우측-시프트되는 개별적인 샘플에 대한 제 1 값으로서 개별적인 샘플에 대한 2차 값을 결정할 수도 있고, 개별적인 샘플에 대한 제 1 값은 다음:
(i) 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 1 가중치의 값,
(ii) 개별적인 샘플 위측인 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 2 가중치의 값,
(iii) 개별적인 샘플의 위측 및 좌측인 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 3 가중치의 값,
(iv) 개별적인 샘플에 대한 1차 값에 의해 곱해진 개별적인 샘플에 대한 제 4 가중치의 값, 및
(v) 오프셋 값
의 합이다.
일부 예들에서, 제 1, 제 2, 제 3 및 제 4 가중치들의 값들 각각은 비-제로 값이다.
일부 예들에서, wL, wT 및 wTL 의 업데이트는 각각의 샘플에 대해 PDPC 예측을 유도한 후에는 발생하지 않을 수도 있다. 즉, 일부 예들에서, 비디오 코더는 예측자 블록의 각각의 별도의 샘플에 대한 제 1, 제 2 및 제 3 가중치들의 상이한 값들을 결정하지 않을 수도 있다. 예를 들어, 업데이트는 N 개의 프로세싱된 샘플들 이후에 발생할 수도 있다 (예를 들어, N = 2 일 때, 업데이트는 두번째 샘플마다 발생한다). 다른 예에서, 비디오 코더는 수평방향을 따라 wL 를 하나 걸러 샘플마다 업데이트하고 wT 는 수직방향을 따라 하나 걸러 샘플마다 업데이트된다. 추가적으로, 모든 수반되는 가중치들 (예를 들어, 제 1, 제 2, 제 3, 및 제 4 가중치들) 은 상이한 업데이트 프로세스들 및 거리 종속성들을 가질 수도 있다. 예를 들어, 비디오 코더는 상이한 수들의 샘플들을 프로세싱한 후에 제 1, 제 2, 제 3, 및 제 4 가중치들을 업데이트할 수도 있고; 비디오 코더가 예측자 블록의 바운더리들로부터의 거리에 따라 제 1, 제 2, 제 3, 및 제 4 가중치들을 변경하는 양은 다를 수도 있다.
일부 예들에서, 얼마나 많은 샘플들 이후에 업데이트가 수행되는 방법은 블록 사이즈, 인트라 모드, 사용되는 변환 등에 의존할 수도 있다. 예를 들어, 비디오 코더는 예측자 블록의 사이즈가 WxL (예를 들어, 32x32, 16x16, 등) 의 임계 사이즈보다 작으면, 예측자 블록의 각각의 샘플을 프로세싱한 후에 가중치 (예를 들어, 제 1, 제 2, 제 3, 및/또는 제 4 가중치) 를 업데이트할 수도 있고 예측자 블록의 사이즈가 WxL 의 사이즈보다 크면 예측자 블록의 2 개의 샘플들을 프로세싱한 후에 가중치를 업데이트할 수도 있다. 다른 예에서, 비디오 코더는 예측자 블록의 인트라 예측 모드가 지향성 인트라 예측 모드이면 예측자 블록의 각각의 샘플을 프로세싱한 후에 가중치 (예를 들어, 제 1, 제 2, 제 3, 및/또는 제 4 가중치) 를 업데이트할 수도 있고 예측자 블록의 인트라 예측 모드가 플래너 또는 DC 모드이면 예측자 블록의 2 개의 샘플들을 프로세싱한 후에 가중치를 업데이트할 수도 있다.
일 구현 예에서, 이 개시의 간략화된 PDPC 기법의 이중 구현이 가능할 수도 있고 양쪽 구현들 모두 동일한 결과들을 제공할 수도 있다. 일 구현에서, 이 개시의 간략화된 PDPC 기법들은 종래의 인트라 예측이 유도된 후에 제 2 스테이지로서 고려될 수도 있다. 즉, 이 개시의 간략화된 PDPC 기법들은 예측 포스트 프로세싱으로서 이해될 수 있다. 이러한 접근방식은 모든 인트라 모드들에 대한 균일한 구현을 제공할 수도 있지만 인트라 예측에서의 추가적인 스테이지를 요구할 수도 있다. 다른 구현에서, 이 개시의 간략화된 PDPC 기법들은 수정된 인트라 예측 모드, 즉, 종래의 인트라 예측과는 상이한 다른 인트라 예측 모드로서 구현될 수도 있다. 이러한 접근 방식에서, 수정은 인트라 예측 모드의 고유의 것일 수도 있지만 인트라 예측에서의 추가적인 스테이지를 요구하지 않을 수도 있다. 이 개시의 간략화된 PDPC 기법들은 구현시 이 이중성을 가질 수도 있고 이는 추가적인 이점을 제공할 수도 있으며 구현자는 코덱 설계에서 가장 적합한 접근방식을 선택할 수 있다.
인트라 예측에 대해, 각각의 인트라 예측 샘플마다 (예를 들어, 예측자 블록 또는 이것의 서브세트의 각각의 개별적인 샘플마다), 인트라 예측 샘플이 생성된 후에 (즉, 개별적인 샘플에 대한 1차 값이 결정된 후에), 예측 샘플 값은 좌측 참조 샘플, 상부 참조 샘플, 상부-좌측 참조 샘플 및 그 오리지널 예측 샘플 값 (즉, 개별적인 샘플에 대한 1차 값) 으로 추가로 조정될 수 있다. 좌측 참조 샘플의 가중화는 wL 로 표기되고 상부 참조 샘플에 대한 가중호는 wT 로 표기되고, 그리고 상부-좌측 샘플의 가중화는 wTL 로 표기된다. 일부 예들에서, 비디오 코더는 wL 와 wT 의 가중합 (예를 들어, wTL = a-wL + b-wT) 에 의해 wTL 를 유도할 수도 있다. 따라서, 일부 이러한 예들에서, 비디오 코더는 개별적인 샘플에 대한 제 1 가중치 (wL) 의 값으로 곱해진 제 1 파라미터 (a) 와 개별적인 샘플에 대한 제 2 가중치 (wT) 의 값으로 곱해진 제 2 파라미터 (b) 를 더한 합으로서, 예측자 블록의 샘플에 대한 제 3 가중치 (wTL) 의 값을 결정할 수도 있다. 일부 예들에서, wL 및 wT 는 0.5 로서 초기화된다. 일부 예들에서, 제 1 파라미터 및 제 2 파라미터의 각각은 0 과 1 (이들 값 포함) 사이에 있다.
제 1 파라미터 (a) 및 제 2 파라미터 (b) 는 여러 방식들 중 하나 이상으로 결정될 수도 있다. 예를 들어, a 및 b 의 값들은 모드 종속적일 수도 있다. 예를 들어, a 및 b 의 값들이 모드 종속적인 일 예에서, a 및 b 의 값들은 상이한 인트라 예측 방향들에 종속적일 수도 있다. 따라서, 이 예에서, a 및 b 의 상이한 값들은 상이한 인트라 예측 방향들에 대해 적용될 수 있다. 예를 들어, 비지향성 인트라 예측 모드들 (예를 들어, 플래너 모드 및 DC 모드) 에 대해, 제 1 파라미터 (a) 는 제 2 파라미터 (b) 와 같다 (즉, a = b). a 및 b 의 값들이 모드 종속적인 다른 예에서 룩업 테이블이 미리 정의되고, 룩업 테이블로의 입력은 인트라 예측 모드 인덱스이고, 룩업 테이블의 출력은 a 및 b 의 값들이다. 일부 예들에서, 수직 예측이 사용되면, 더 많은 선호도가 b 에 주어지고, 즉, b > a 일 수 있다. 이와 유사하게, 수평 예측에서, a 는 b 보다 더 클 수 있다.
또한, a 및 b 의 값들이 모드 종속적인 다른 예들에서, 방향성 인트라 예측 모드들 (예를 들어, 수평 및 수직) 에 대해, 제 1 파라미터 (a) 및 제 2 파라미터 (b) 는 수평 및 수직 예측 방향에 대한 인트라 예측 각도 차이 또는 인트라 모드 인덱스 차이에 기초하여 유도된다. 예를 들어, 일 예에서, 수평 예측에 대해, a 는 0 과 같고 b 는 1 과 같고; 수직 예측에 대해 a 는 1 과 같고 b 는 0 과 같다. 이 예에서, 수직-유형 예측 각도들에 대해, 수직 예측에 대한 각도 차이는 a 및 b 를 계산하기 위해 측정된다. 이 예에서, 수평-유형 예측 각도들에 대해, 수평 예측에 대한 각도 차이는 a 및 b 를 계산하기 위해 측정된다.
제 1 파라미터 (a) 및 제 2 파라미터 (b) 의 값들이 얼마인지 결정될 수도 있는 다른 예에서 a 및 b 는 예측자 블록 내부의 포지션과 무관한 2 개의 상수값들이다. 이 예에서, a 및 b의 통상의 값들은 : 1/16, 1/32, 1/8, ¼, ½, 1 및 0 을 포함한다. 다른 예에서, a 및 b 는 시퀀스 레벨, 픽처 레벨, 슬라이스 레벨, 블록 레벨, 또는 다른 레벨에서 비디오 인코더 (20) 로부터 비디오 디코더 (30) 로 시그널링된다.
일부 예들에서, 비디오 코더는 예측 샘플의 스케일링된 수직 좌표 (y), 블록 사이즈, 및 인트라 예측 모드에 기초하여 제 1 가중치 (wT) 의 값을 유도할 수 있다. 예를 들어, y 는 제 1 가중치 (wT) 의 값을 유도하기 위해 2, 4, 또는 8 로 나누어질 수도 있다. 얼마나 많은 가중치가 변경되는지는 블록 사이즈 (예를 들어, 좌표의 제수) 에 의존할 수 있다. 작은 블록들에 대해, 가중치의 붕괴는 블록이 클수록 더 빠를 수 있다. 비디오 코더는 예측 샘플의 스케일링된 수평 좌표 (x), 블록 사이즈, 및 인트라 예측 모드에 기초하여 제 1 가중치 (wL) 의 값을 유도할 수 있다. 이 예에서, 블록 사이즈는 다음 중 하나를 의미할 수도 있다:
Figure pct00027
이 예에서, 플래너 및 DC 모드들과 같은 비지향성 인트라 예측 모드들에 대해, 동일한 좌표들 (x, y) 에서, wT 및 wL 의 동일한 값이 사용될 수도 있다. 즉, 이 예에서, 예측자 블록의 각각의 예측 샘플에 대해 wT = wL = m 이지만, 예측자 블록의 상이한 예측 샘플들에 대해 m 의 상이한 값들이 있을 수도 있다. 또한, 수평 및 수직 좌표 (x 및 y) 에 대한 스케일링은 미리 정의될 수도 있다. 일부 예들에서, 스케일링 값의 통상의 값들은 2, 4 및 8 을 포함한다.
일 예에서, 여기에 개시된 기법들 (좌측, 상부 및 상부-좌측 참조 샘플들의 위의 가중화) 은 플래너 모드, DC 모드, 수평 모드 및 수직 모드에 대해 적용된다.
일부 예들에서, 비디오 코더는 특정 조건들이 적용될때에만 이 개시의 간략화된 PDPC 기법들을 적용할 수도 있다. 예를 들어, 조건들이 적용하지 않을 때, 비디오 코더는 종래의 인트라 예측을 사용하여 예측자 블록에서의 샘플들의 2차 값들을 결정할 수도 있다. 일 예에서, Zhang 등의 "Enhanced Cross-Component Linear Model Intra-prediction" ITU-T SG 16 WP 3 및 ISO/IEC JTC 1/SC 29/WG 11 의 JVET (Joint Video Exploration Team), 4th Meeting, Chengdu, CN, 15-21 October 2016, document no. JVET-D0110 에 설명된 바와 같이 비디오 코더는 LM 모드 또는 인핸스드 LM 모드 (크로마 컴포넌트) 에 대해 이 개시의 간략화된 PDPC 기법들을 적용할 수도 있다. 이 예에서, 비디오 코더는 LM 모드 또는 인핸스드 LM 모드가 CU 에 적용되지 않을 때 CU 의 예측자 블록에 대해 이 개시의 간략화된 PDPC 기법들을 적용하지 않는다. 일부 예들에서, 이 개시의 간략화된 PDPC 기법들은 특정 블록 사이즈에 대해, 예를 들어, 임계값보다 더 큰 (예를 들어, 8x8, 16x16, 32x32, 16x8 등 보다 더 큰 (또는 더 작은)) 블록 영역 사이즈에 대해 적용된다. 일부 예들에서, 이 개시의 간략화된 PDPC 기법들은 특정 유형들의 픽처들 또는 슬라이스들에 대해 적용된다. 예를 들어, 일 예에서, 비디오 코더는 이 개시의 간략화된 PDPC 기법들을 I-슬라이스들에서만 적용한다. 또한, 일부 예들에서, 이 개시의 간략화된 PDPC 기법들은 일부 이웃하는 샘플들이 사용가능하지 않을 때 적용되지 않는다. 예를 들어, 일 예에서, 비디오 코더는 상부 이웃하는 는 샘플들이 사용가능하지 않을 때 이 개시의 간략화된 PDPC 기법들을 적용하지 않는다.
또한, 다른 예에서, 이 개시의 간략화된 PDPC 기법들은 전체 예측 블록에 적용하기 보다는 예측 블록 내의 선택된 예측 샘플 포지션들에만 적용된다. 일부 예들에서, 선택된 예측 샘플 포지션들은 좌측으로부터 시작하는 미리 정의된 수의 컬럼들 및/또는 상부 측에서 시작하는 미리 정의된 수의 로우들에 있다. 예를 들어, 비디오 코더는 이 개시의 간략화된 PDPC 기법들을 예측 블록의 홀수번째 로우들 또는 컬럼들이 아닌, 예측 블록의 짝수번째 로우들 또는 컬럼들에 적용할 수도 있다. 일부 예들에서, 이 개시의 간략화된 PDPC 기법들이 적용되는 예측 샘플들의 컬럼들/로우들의 수는 블록 사이즈, 블록 높이 및/또는 폭, 및/또는 인트라 예측 모드를 포함하지만 이들에 제한되지 않는 코딩된 정보에 의존할 수도 있다. 예를 들어, 비디오 코더는 예측 블록의 사이즈가 임계 사이즈 (예를 들어, 16x16, 8x8, 등) 보다 작으면 이 개시의 간략화된 PDPC 기법들을 예측 블록의 각각의 로우에 적용할 수도 있고, 예측 블록의 사이즈가 임계 사이즈 이상이면 이 개시의 간략화된 PDPC 기법들을 예측 블록의 로우/컬럼에 하나 걸러 하나씩 적용할 수도 있다.
가중화 동작들 후에 에측 샘플들에 대한 클립핑 동작들은 제거될 수 있다. 클립핑은 예측자 값이 비트 심도를 입력하는 것과 통상 관련된 특정 범위 내에 있는 것을 보장하는데 사용될 수도 있다. 예측자를 유도한 후에 픽셀이 범위를 초과하면, 비디오 코더는 그 값을 최소 또는 최대 범위 값으로 클립핑할 수도 있다. 그러나, 이 개시의 기법에 따르면, 예측 샘플들에 대한 이러한 클립핑 동작은 불필요할 수도 있다.
예측 샘플을 조정하는데 사용되는 좌측, 상부 및 상부-좌측 참조 샘플들은 필터링된/평활화된 참조 샘플들일 수도 있고 선택은 인트라 예측 모드에 의존한다. 일 예에서, DC, 수평 및 수직 인트라 예측 방향들에 대해, 비디오 코더는 필터링되지 않은 상부, 좌측 및 상부-좌측 참조 샘플들을 가중된 합 계산에 사용할 수도 있고; 플래너 모드에 대해, 필터링된/평활화된 좌측, 상부 및 상부-좌측 참조 샘플들이 계산에 사용된다.
위에 설명된 바와 같이, PDPC 의 초기의 버전들에서, 비디오 코더는 5-탭 또는 7-탭 필터들을 참조 샘플들에 적용할 수도 있다. 그러나, 이 개시의 일부 예들에 따르면, 더 긴 탭 필터 (예를 들어, 5-탭 또는 7-탭 필터) 를 참조 샘플들에 적용하는 대신에, 비디오 코더는 짧은-탭 필터 (예를 들어, 3-탭 필터) 만을 적용할 수도 있고 더 긴 탭 필터는 미리 정해진 순서에서 다수의 짧은-탭 필터들을 캐스케이드하는 것에 의해 대체될 수도 있다. 이 개시는 필터 또는 필터들의 캐스케이드를 참조 샘플들의 세트에 적용한 것으로부터 유래하는 샘플들을 지칭하기 위해, 문구 "평활화된 참조 샘플들"을 사용한다. 평활화된 참조 샘플들의 상이한 세트들은 인트라 예측 예를 들어, PDPC 에 적용될 수도 있다. 즉, 비디오 코더는 이 개시의 간략화된 PDPC 기법들을 수행할 때 평활화된 참조 샘플들의 상이한 세트들을 생성할 수도 있다. 일부 예들에서, 비디오 코더는 짧은-탭 필터들의 상이한 캐스케이들을 적용하는 것에 의해 평활화된 참조 샘플들의 상이한 세트들을 생성할 수도 있다. 짧은-탭 필터들의 상이한 캐스케이드들은 상이한 수의 짧은-탭들 필터들 및/또는 상이한 순서들로 짧은-탭 필터들을 캐스케이트한 것을 가질 수도 있다. 즉, 비디오 코더는 이 개시의 간략화된 PDPC 기법들을 수행함에 있어서 평활화된 참조 샘플들의 세트를 선택할 수도 있다. 평활화된 참조 샘플들의 어느 세트인지의 선택은 블록 사이즈, 예를 들어, 블록 영역 사이즈, 블록 높이 및/또는 폭, 및/또는 인트라 예측 모드에 의존할 수도 있다. 예를 들어, 비디오 코더는 예측 블록의 사이즈가 임계 사이즈 (예를 들어, 16x16, 8x8, 등) 보다 작을 때 평활화된 참조 샘플들의 제 1 세트 (예를 들어, 제 1 필터 또는 필터들의 세트로 생성되는 참조 샘플들의 세트) 를 선택할 수도 있고, 예측 블록의 사이즈가 임계 사이즈 이상일 때 평활화된 참조 샘플들의 제 2 세트를 선택할 수도 있다.
비디오 코더가 짧은-탭 필터들의 캐스케이드를 참조 샘플들에 적용하는 일 예에서, 짧은-탭 필터들의 캐스케이드는 3-탭 {2, 4, 2} 필터 및 3-탭 {4, 0, 4} 필터를 포함한다. 이 예에서, 비디오 코더는 3-탭 {2, 4, 2} 필터를 사용하여 평활화된 참조 샘플들의 제 1 세트를 생성하고, 평활화된 참조 샘플들의 제 1 세트의 상단에 3-탭 {4, 0, 4} 필터를 추가로 적용하는 것에 의해 평활화된 참조 샘플들의 제 2 세트를 생성한다. 즉, 비디오 코더는 3-탭 {2, 4, 2} 필터 및 3-탭 {4, 0, 4} 필터를 사용하여 필터링을 캐스케이드하는 것에 의해 평활화된 참조 샘플들의 제 2 세트를 생성할 수도 있다. 다른 예에서, 2 개의 짧은-탭 필터들은 {2, 4, 2} 필터 및 {3, 2, 3} 필터를 포함하며, 위에 설명된 동일한 프로세스가 적용될 수도 있다. 다른 예에서, 2 개의 3-탭 필터들을 캐스케이드하는 것 대신에, 비디오 코더는 직접 5-탭 {1, 2, 2, 2, 1} 필터를 참조 샘플들에 적용할 수도 있다.
일부 예들에서, 비디오 코더는 인트라 예측 모드들의 어느 것을 사용하여 참조 샘플 필터링을 적용한다. 다른 예들에서, 비디오 코더는 다른 무엇보다도, 일부 인트라 예측 모드들에 대해 참조 샘플 필터링을 적용한다. 예를 들어, 일 예에서, 이 개시의 간략화된 PDPC 기법들을 적용할 때, 비디오 코더는 DC, 수평 또는 수직 인트라 예측 모드들에 대해서가 아닌 플래너 인트라 예측 모드에 대해서만 참조 샘플 필터링을 적용한다.
일부 예들에서, 비디오 코더는 참조 샘플들에 대해 상이한 필터들 (예를 들어, 상이한 수들의 필터 탭들) 을 적용할 수도 있으며, 필터들의 선택은 참조 샘플 위치에 의존할 수도 있다. 예를 들어, 일 예에서, 비디오 코더는 참조 샘플이 모든 이용가능한 참조 샘플들의 바운더리 포지션 (하부-좌측, 상부-우측, 상부-좌측) 에 위치되는지의 여부에 의존하여 참조 샘플에 상이한 펄티들을 적용할 수도 있다. 일부 예들에서, 필터들의 어느 세트가 적용되는지가 비디오 인코더 (20) 에 의해 비디오 디코더 (30) 로 시그널링된다. 이러한 예들에서, 비디오 인코더 (20) 는 비트스트림 내에서 여러 위치들에서, 이를 테면, 시퀀스 레벨에서, 픽처 레벨에서, 슬라이스 레벨에서 또는 블록 레벨에서 필터들의 세트를 시그널링할 수도 있다.
오리지널 PDPC 설계에서, 필터링되지 않은 그리고 필터링된 버전들의 참조 샘플들이 예측 유도에 사용된다. 그러나, 인트라 참조 평활화, 이를 테면, HEVC 에 사용되는 MDIS (mode dependent intra smoothing) 에 대해 사용된 다른 평활화 필터가 존재할 수도 있다. 예측 프로세스를 추가로 통합하기 위해, PDPC 필터들, 이를 테면, 필터링된 버전 (필터 길이는 블록 사이즈 및/또는 인트라 방향에 의존할 수도 있다) 을 생성하기 위해 사용되는 3/5-탭 필터는 PDPC 를 사용하지 않는 모드들에 대해 적용되지 않을 수도 있는 동일 평활화 필터링 (예를 들어, MDIS) 을 정확하게 사용하기 위해 이 개시의 간략화된 PDPC 기법들에서 대체될 수도 있다. 이 방식으로, PDPC-고유의 필터링 프로세스를 유지할 필요가 없을 수도 있으며, PDPC의 구현이 추가로 간략화될 수도 있다.
이 개시의 다음의 부분은 이 개시의 예시의 기법들을 구현하기 위해 예시적인 코덱 설명 텍스트를 설명한다. 이 개시의 기법들을 반영하는 일부 동작들은 "<highlight>… </highlight>" 태그들로 강조된다.
"이웃하는 샘플들의 필터링 프로세스" 의 제목의 코덱 명세 텍스트의 다음 섹션은 인트라 예측에 사용된 이웃하는 참조 샘플들에 대한 필터링 프로세스를 설명한다.
이웃하는 샘플들의 필터링 프로세스
이 프로세스로의 입력들은 다음과 같다:
- 이웃하는 샘플들 p[ x ][ y ], 여기서 x = -1, y = -1..nTbS * 2 - 1 및 x = 0..nTbS * 2 - 1, y = -1 이다,
- 변환 블록 폭 및 높이를 규정하는 변수 nTbWidth 및 nTbHeight,
- 3-탭 필터 f[3].
이 프로세스의 출력들은 필터링된 샘플들 pF[ x ][ y ] 이고, 여기서 x = -1, y = -1.. (nTbWidth+nTbHeight) - 1 및 x = 0.. (nTbWidth+nTbHeight) - 1, y = -1 이다.
변수 filterFlag 는 다음과 같이 유도된다:
- 다음 조건들 중 하나 이상이 참이면, filterFlag 는 0 과 같게 설정된다:
- predModeIntra 는 INTRA_DC 와 같다.
- nTbS 는 4 와 같다.
- 그렇지 않으면, 다음이 적용된다:
- 변수 minDistVerHor 는 Min(Abs(predModeIntra - 26), Abs(predModeIntra - 10)) 와 같게 설정된다.
- 변수 intraHorVerDistThres[ nTbS ] 는 표 8-3 에서 규정된다.
- 변수 filterFlag 는 다음과 같이 유도된다:
- minDistVerHor 이 intraHorVerDistThres[ nTbWidth] 보다 크면, filterFlag 는 1 과 같게 설정된다.
- 그렇지 않으면, filterFlag 는 0 과 같게 설정된다.
표 8-3 - 여러 예측 블록 사이즈들에 대한 intraHorVerDistThres[ nTbWidth] 의 상세
Figure pct00028
filterFlag 가 1 과 같을 때, 다음이 적용된다:
- 변수 biIntFlag 는 다음과 같이 유도된다:
- 다음 조건들 중 모두가 참이면, biIntFlag 는 1 과 같게 설정된다:
- strong_intra_smoothing_enabled_flag 는 1 와 같다.
- nTbWidth 는 32 와 같다.
Figure pct00029
- 그렇지 않으면, biIntFlag 는 0 과 같게 설정된다.
- 필터링은 다음과 같이 수행된다:
- biIntFlag 가 1 과 같으면, 필터링된 샘플 값들 pF[ x ][ y ] (여기서, x = -1, y = -1..63 및 x = 0..63, y = -1) 은 다음과 같이 유도된다:
Figure pct00030
- 그렇지 않으면 (biIntFlag 가 0 과 같으면), 필터링된 샘플 값들 pF[ x ][ y ] (여기서, x = -1, y = -1..(nTbWidth+nTbHeight) - 1 및 x = 0.. (nTbWidth+nTbHeight) - 1, y = -1) 은 다음과 같이 유도된다:
Figure pct00031
Figure pct00032
위에 주지된 바와 같이, 비디오 코더는 평활화된 참조 샘플들의 다수의 세트들을 생성한 다음 이 개시의 간략화된 PDPC 기법들에 사용하기 위하여 평활화된 참조 샘플들의 세트들 중 하나를 선택할 수도 있다. "인트라 예측 참조 샘플들의 다수의 세트들의 생성" 의 제목의 코덱 상세 텍스트의 다음 장은 평활화된 참조 샘플들의 다수의 세트들을 생성하는 일 예시의 방법을 설명한다.
인트라 예측 참조 샘플들의 다수의 세트들의 생성
이 프로세스로의 입력들은 다음과 같다:
- 필터링되지 않은 이웃하는 샘플들 (unfiltRef [ x ][ y ]), 여기서 x = -1, y = -1.. (nTbWidth+nTbHeight) - 1 및 x = 0.. (nTbWidth+nTbHeight) - 1, y = -1 이다.
- 예측 블록 폭 및 높이를 규정하는 변수 nTbWidth 및 nTbHeight.
이 프로세스의 출력들은 필터링된 샘플들 filtRef [2][ x ][ y ] 이고, 여기서 x = -1, y = -1.. (nTbWidth+nTbHeight) - 1 및 x = 0.. (nTbWidth+nTbHeight) - 1, y = -1 이다.
1. "이웃하는 샘플들의 필터링 프로세스" 섹션에서 규정된 이웃하는 샘플들의 필터링 프로세스는 샘플 어레이 unfiltRef 및 변환 블록 사이즈 nTbWidth 및 nTbHeight 를 입력들로서 호출되고 출력은 샘플 어레이 filtRef [0][ x ][ y ] 에 배정된다.
2. "이웃하는 샘플들의 필터링 프로세스" 섹션에서 규정된 이웃하는 샘플들의 필터링 프로세스는 샘플 어레이 filtRef [0][ x ][ y ] 및 변환 블록 사이즈 nTbWidth 및 nTbHeight 를 입력들로서 호출되고 출력은 샘플 어레이 filtRef [1][ x ][ y ] 에 배정된다.
"인트라 예측 모드 INTRA_PLANAR 의 상세"의 제목의 코덱 상세 텍스트의 다음 섹션은 인트라 예측 모드와 함께 이 개시의 간략화된 PDPC 기법을 사용하여 예측자 블록의 샘플들을 결정하기 위한 프로세스를 설명한다.
인트라 예측 모드 INTRA_PLANAR 의 상세
이 프로세스로의 입력들은 다음과 같다:
- 필터링되지 않은 이웃하는 샘플들 (unfiltRef [ x ][ y ]), 여기서 x = -1, y = -1..nTbHeight* 2 - 1 및 x = 0.. nTbWidth* 2 - 1, y = -1 이다,
- 필터링된 이웃하는 샘플들 (filtRef [ x ][ y ]), 여기서 x = -1, y = -1.. nTbHeight * 2 - 1 및 x = 0.. nTbWidth * 2 - 1, y = -1 이다,
- 예측 블록 폭 및 높이를 규정하는 변수 nTbWidth 및 nTbHeight.
이 프로세스의 출력들은 예측된 샘플들 (predSamples[ x ][ y ]) 이고, 여기서 x, y = 0..nTbS - 1 이다.
<highlight> rightShift 의 값은 (log2(nTbWidth) + 1 + log2(nTbHeight) + 1) >> 2 으로서 유도된다; </highlight>
각각의 샘플 위치 (x, y) 에 대해, 예측 샘플 (predSamples[ x ][ y ]) 의 값 (여기서, x, y = 0..nTbS - 1) 은 다음과 같이 유도된다:
Figure pct00033
"인트라 예측 모드 INTRA_DC 의 상세"의 제목의 코덱 상세 텍스트의 다음 섹션은 인트라 예측 모드와 함께 이 개시의 간략화된 PDPC 기법을 사용하여 예측자 블록의 샘플들을 결정하기 위한 프로세스를 설명한다.
인트라 예측 모드 INTRA_DC 의 상세
이 프로세스로의 입력들은 다음과 같다:
- 필터링되지 않은 이웃하는 샘플들 (unfiltRef [ x ][ y ]), 여기서 x = -1, y = -1..nTbHeight* 2 - 1 및 x = 0.. nTbWidth* 2 - 1, y = -1 이다,
- 예측 블록 폭 및 높이를 규정하는 변수 nTbWidth 및 nTbHeight.
이 프로세스의 출력들은 예측된 샘플들 predSamples[ x ][ y ] 이고, 여기서 x, y = 0..nTbS - 1 이다.
<highlight> rightShift 의 값은 (log2(nTbWidth) + 1 + log2(nTbHeight) + 1) >> 2 으로서 유도된다; </highlight>
예측 샘플들 (predSamples[ x ][ y ]) 의 값 (여기서 x, y = 0..nTbS - 1) 은 다음 순서로 된 단계들로 유도된다:
1. 변수 dcVal 은 다음과 같이 유도된다:
Figure pct00034
여기서,
Figure pct00035
이다.
2. 각각의 샘플 위치 (x, y) 에 대해, 예측 샘플 (predSamples[ x ][ y ])의 값 (여기서, x, y = 0..nTbS - 1) 은 다음과 같이 유도된다:
Figure pct00036
"인트라 예측 모드 INTRA_HOR 의 상세"의 제목의 코덱 상세 텍스트의 다음 섹션은 수평 인트라 예측 모드와 함께 이 개시의 간략화된 PDPC 기법을 사용하여 예측자 블록의 샘플들을 결정하기 위한 프로세스를 설명한다.
인트라 예측 모드 INTRA_HOR 의 상세
이 프로세스로의 입력들은 다음과 같다:
- 필터링되지 않은 이웃하는 샘플들 (unfiltRef [ x ][ y ]), 여기서 x = -1, y = -1,0, ..., nTbHeight* 2 - 1, 및 x = 0, 1, ... nTbWidth* 2 - 1, y = -1 이다,
- 예측 블록 폭 및 높이를 규정하는 변수 nTbWidth 및 nTbHeight.
이 프로세스의 출력들은 예측된 샘플들 (predSamples[ x ][ y ]) 이고, 여기서 x, y = 0..nTbS - 1 이다.
<highlight> rightShift 의 값은 (log2(nTbWidth) + 1 + log2(nTbHeight) + 1) >> 2 으로서 유도된다; </highlight>
각각의 샘플 위치 (x, y) 에 대해, 예측 샘플 (predSamples[ x ][ y ]) 의 값 (여기서, x, y = 0..nTbS - 1) 은 다음과 같이 유도된다:
Figure pct00037
"인트라 예측 모드 INTRA_VER 의 상세"의 제목의 코덱 상세 텍스트의 다음 섹션은 수직 인트라 예측 모드와 함께 이 개시의 간략화된 PDPC 기법을 사용하여 예측자 블록의 샘플들을 결정하기 위한 프로세스를 설명한다.
인트라 예측 모드 INTRA_VER 의 상세
이 프로세스로의 입력들은 다음과 같다:
- 필터링되지 않은 이웃하는 샘플들 (unfiltRef [ x ][ y ]), 여기서 x = -1, y = -1..nTbHeight* 2 - 1 및 x = 0.. nTbWidth* 2 - 1, y = -1 이다,
- 예측 블록 폭 및 높이를 규정하는 변수 nTbWidth 및 nTbHeight.
이 프로세스의 출력들은 예측된 샘플들 (predSamples[ x ][ y ]) 이고, 여기서 x, y = 0..nTbS - 1 이다.
<highlight> rightShift 의 값은 (log2(nTbWidth) + 1 + log2(nTbHeight) + 1) >> 2 으로서 유도된다; </highlight>
각각의 샘플 위치 (x, y) 에 대해, 예측 샘플 (predSamples[ x ][ y ])의 값 (여기서, x, y = 0..nTbS - 1) 은 다음과 같이 유도된다:
Figure pct00038
도 8 은 본 개시의 기술들을 구현할 수도 있는 예시적인 비디오 인코더 (20) 를 도시한 블록 다이어그램이다. 도 8 은 설명의 목적들로 제공되며, 본 개시에서 대체로 예시화되고 설명된 바와 같은 기법들의 한정으로서 고려되지 않아야 한다. 본 개시의 기법들은 다양한 코딩 표준들 또는 방법들에도 적용가능할 수도 있다.
프로세싱 회로부는 비디오 인코더 (20) 를 포함하고, 비디오 인코더 (20) 는 본 개시에 설명된 예시적인 기법들 중 하나 이상을 수행하도록 구성된다. 예를 들어, 비디오 인코더 (20) 는 집적 회로부를 포함하고, 도 8 에 예시된 다양한 유닛들은, 회로 버스와 상호접속되는 하드웨어 회로 블록들로서 형성될 수도 있다. 이들 하드웨어 회로 블록들은 별도의 회로 블록들일 수도 있거나, 또는 그 유닛들 중 2 이상은 공통 하드웨어 회로 블록으로 결합될 수도 있다. 하드웨어 회로 블록은 AND, OR, NAND, NOR, XOR, XNOR 와 같은 논리 블록 및 다른 유사한 논리 블록뿐만 아니라 산술 논리 유닛 (ALU), 기본 함수 유닛 (EFU) 과 같은 연산 블록을 형성하는 전자 컴포넌트들의 조합으로서 형성될 수도 있다.
일부 예에서, 도 8에 나타낸 유닛들 중 하나 이상은 프로세싱 회로 상에서 실행되는 소프트웨어 유닛이다. 이러한 예에서, 이들 소프트웨어 유닛에 대한 오브젝트 코드는 메모리에 저장된다. 오퍼레이팅 시스템은 비디오 인코더 (20) 로 하여금 목적 코드를 취출하고 목적 코드를 실행하게 할 수도 있으며, 이는 비디오 인코더 (20) 로 하여금 예시적인 기법들을 구현하기 위한 동작들을 수행하게 한다. 일부 예에서, 소프트웨어 유닛은 비디오 인코더 (20) 가 시동시에 실행되는 펌웨어일 수도 있다. 따라서, 비디오 인코더 (20) 는 예시적인 기술을 수행하는 하드웨어를 갖는 구조적 컴포넌트이거나 또는 하드웨어를 특화하여 예시적인 기술을 수행하기 위해 하드웨어 상에서 실행되는 소프트웨어/펌웨어를 갖는다.
도 8 의 예에 있어서, 비디오 인코더 (20) 는 예측 프로세싱 유닛 (100), 비디오 데이터 메모리 (101), 잔차 생성 유닛 (102), 변환 프로세싱 유닛 (104), 양자화 유닛 (106), 역양자화 유닛 (108), 역변환 프로세싱 유닛 (110), 복원 유닛 (112), 필터 유닛 (114), 디코딩된 픽처 버퍼 (116), 및 엔트로피 인코딩 유닛 (118) 을 포함한다. 예측 프로세싱 유닛 (100) 은 인터-예측 프로세싱 유닛 (120) 및 인트라-예측 프로세싱 유닛 (126) 을 포함한다. 인터-예측 프로세싱 유닛 (120) 은, 모션 추정 유닛 및 모션 보상 유닛 (미도시) 를 포함할 수도 있다.
비디오 데이터 메모리 (101) 는 비디오 인코더 (20) 의 컴포넌트들에 의해 인코딩될 비디오 데이터를 저장하도록 구성될 수도 있다. 비디오 데이터 메모리 (101) 에 저장된 비디오 데이터는, 예를 들어, 비디오 소스 (18) 로부터 획득될 수도 있다. 디코딩된 픽처 버퍼 (116) 는, 예를 들어, 인트라 또는 인터 코딩 모드들에서, 비디오 인코더 (20) 에 의해 비디오 데이터를 인코딩함에 있어서 사용하기 위한 참조 비디오 데이터를 저장하는 참조 픽처 메모리일 수도 있다. 비디오 데이터 메모리 101 및 디코딩된 픽처 버퍼 (116) 는 동기 DRAM (SDRAM) 을 포함한 동적 랜덤 액세스 메모리 (DRAM), 자기저항 RAM (MRAM), 저항 RAM (RRAM), 또는 다른 유형들의 메모리 디바이스들과 같은, 다양한 메모리 디바이스들 중 임의의 메모리 디바이스에 의해 형성될 수도 있다. 비디오 데이터 메모리 (101) 및 디코딩된 픽처 버퍼 (116) 는 동일한 메모리 디바이스 또는 별도의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에 있어서, 비디오 데이터 메모리 (101) 는 비디오 인코더 (20) 의 다른 컴포넌트들과 온-칩형이거나 또는 그 컴포넌트들에 대하여 오프-칩형일 수도 있다. 비디오 데이터 메모리 (101) 는 도 1의 저장 매체 (19) 와 동일하거나 또는 이의 일부일 수도 있다.
비디오 인코더 (20) 는 비디오 데이터를 수신한다. 비디오 인코더 (20) 는 비디오 데이터의 픽처의 슬라이스에서 각각의 CTU 를 인코딩할 수도 있다. CTU들 각각은, 동일하게 사이징된 루마 코딩 트리 블록들 (CTB들) 및 픽처의 대응하는 CTB들과 연관될 수도 있다. CTU 를 인코딩하는 부분으로서, 예측 프로세싱 유닛 (100) 은 파티션을 수행하여, CTU 의 CTB들을 점진적으로 더 작은 블록들로 분할할 수도 있다. 더 작은 픽셀 블록들은 CU 들의 코딩 블록들일 수도 있다. 예를 들어, 예측 프로세싱 유닛 (100) 은 CTU 와 연관된 CTB 를 트리 구조에 따라 파티션할 수도 있다.
비디오 인코더 (20) 는 CTU 의 CU 들을 인코딩하여 CU 들의 인코딩된 표현들 (즉, 코딩된 CU들) 을 생성할 수도 있다. CU 를 인코딩하는 것의 일부로서, 예측 프로세싱 유닛 (100) 은 CU 의 하나 이상의 PU들 중에서 CU 와 연관된 코딩 블록들을 파티션할 수도 있다. 따라서, 각각의 PU 는 루마 예측 블록 및 대응하는 크로마 예측 블록들과 연관될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 다양한 사이즈들을 갖는 PU들을 지원할 수도 있다. 위에서 나타낸 바와 같이, CU 의 사이즈는 CU 의 루마 코딩 블록의 사이즈를 지칭할 수도 있으며, PU 의 사이즈는 루마 PU 의 예측 블록의 사이즈를 지칭할 수도 있다. 특정 CU 의 크기가 2Nx2N 이라고 가정하면, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 인트라 예측에 대해 2Nx2N 또는 NxN 의 PU 크기들, 그리고 인터 예측에 대해 2Nx2N, 2NxN, Nx2N, NxN 또는 유사한 것의 대칭적 PU 크기들을 지원할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 또한, 인터 예측을 위해 2NxnU, 2NxnD, nLx2N, 및 nRx2N 의 PU 크기에 대한 비대칭적 파티션을 지원할 수도 있다.
인터-예측 프로세싱 유닛 (120) 은 PU에 대한 예측성 데이터를 생성할 수도 있다. PU에 대한 예측성 데이터를 생성하는 것의 일부로서, 인터-예측 프로세싱 유닛 (120) 은 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들에 대한 예측성 데이터를 선택한다. 선택된 예측 데이터의 예측자 블록들은 본원에서 선택된 예측자 블록들로 지칭될 수도 있다.
인트라-예측 프로세싱 유닛 (126) 은 이 개시의 기법들 어느 것에 따라 인트라 예측 모드를 사용하여 예측자 블록을 생성할 수도 있다. 예를 들어, 예측자 블록을 생성하는 부분으로서, 인트라-예측 프로세싱 유닛 (126) 은 제 1 가중치의 초기값을 결정하고 제 2 가중치의 값을 결정할 수도 있다. 또한, 예측자 블록에서 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 인트라-예측 프로세싱 유닛 (126) 은 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정할 수도 있다. 인트라-예측 프로세싱 유닛 (126) 은 또한 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정할 수도 있다. 또한, 인트라-예측 프로세싱 유닛 (126) 은 개별적인 샘플에 대한 제 3 가중치의 값을 결정할 수도 있다. 인트라-예측 프로세싱 유닛 (126) 은 또한 개별적인 샘플에 대한 제 1 가중치의 값, 개별적인 샘플에 대한 제 2 가중치의 값, 및 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 개별적인 샘플에 대한 제 4 가중치의 값을 결정할 수도 있다. 추가적으로 인트라-예측 프로세싱 유닛 (126) 은 인트라 예측 모드에 따라 개별적인 샘플에 대한 1차 값을 결정할 수도 있다. 다음으로, 인트라-예측 프로세싱 유닛 (126) 은 제 2 값에 의해 우측-시프트되는 개별적인 샘플에 대한 제 1 값으로서 개별적인 샘플에 대한 2차 값을 결정할 수도 있고, 개별적인 샘플에 대한 제 1 값은 다음:
(i) 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 1 가중치의 값,
(ii) 개별적인 샘플 위측인 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 2 가중치의 값,
(iii) 개별적인 샘플의 위측 및 좌측인 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 3 가중치의 값,
(iv) 개별적인 샘플에 대한 1차 값에 의해 곱해진 개별적인 샘플에 대한 제 4 가중치의 값, 및
(v) 오프셋 값
의 합이다.
예를 들어, 인트라-예측 프로세싱 유닛 (126) 은 식 (11) 에 따라 개별적인 샘플에 대한 2차 값을 결정할 수도 있고 여기서 wT 는 제 1 가중치이고 wL 는 제 2 가중치이고 wTL 는 제 3 가중치이고 그리고 (2 rightShift - wT - wL - wTL) 는 제 4 가중치이며, 그리고 rightShift 는 제 2 값이다.
잔차 생성 유닛 (102) 은 CU 에 대한 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 및 CU 의 PU들에 대한 선택된 예측자 블록들 (예를 들어, 예측 루마, Cb 및 Cr 블록들) 에 기초하여, CU 에 대한 잔차 블록들 (예를 들어, 루마, Cb 및 Cr 잔차 블록들) 을 생성할 수도 있다. 예를 들어, 잔차 생성 유닛 (102) 은, 잔차 블록들에서의 각각의 샘플이 CU 의 코딩 블록에서의 샘플과 CU 의 PU 의 대응하는 선택된 예측자 블록에서의 대응하는 샘플 사이의 차이와 동일한 값을 갖도록 CU 의 잔차 블록들을 생성할 수도 있다.
변환 프로세싱 유닛 (104) 은 CU 의 잔차 블록들을 CU 의 TU들의 변환 블록들로 파티션할 수도 있다. 실례로, 변환 프로세싱 유닛 (104) 은 쿼드 트리 파티션을 수행하여, CU 의 잔차 블록들을 CU 의 TU들의 변환 블록들로 파티션할 수도 있다. 따라서, TU 는 루마 변환 블록 및 2개의 크로마 변환 블록들과 연관될 수도 있다. CU 의 TU 들의 루마 및 크로마 변환 블록들의 사이즈들 및 위치는 CU 의 PU 들의 예측 블록들의 사이즈들 및 위치에 기초하거나 또는 기초하지 않을 수도 있다. "잔차 쿼드 트리" (RQT) 로 알려진 쿼드 트리 구조는 각각의 영역들과 연관된 노드들을 포함할 수도 있다. CU 의 TU 들은 RQT 의 리프 노드들에 대응할 수도 있다.
변환 프로세싱 유닛 (104) 은, TU 의 변환 블록들에 하나 이상의 변환들을 적용함으로써 CU 의 각각의 TU 에 대해 변환 계수 블록들을 생성할 수도 있다. 변환 프로세싱 유닛 (104) 은 TU 와 연관된 변환 블록에 다양한 변환들을 적용할 수도 있다. 예를 들어, 변환 프로세싱 유닛 (104) 은 이산 코사인 변환 (DCT), 지향성 변환, 또는 개념적으로 유사한 변환을 변환 블록에 적용할 수도 있다. 일부 예들에서, 변환 프로세싱 유닛 (104) 은 변환 블록에 변환들을 적용하지 않는다. 이러한 예들에서, 변환 블록은 변환 계수 블록으로서 처리될 수도 있다.
양자화 유닛 (106) 은 계수 블록에서의 변환 계수들을 양자화할 수도 있다. 양자화 유닛 (106) 은 CU 와 연관되는 양자화 파라미터 (QP) 값에 기초하여, CU 의 TU 와 연관되는 계수 블록을 양자화할 수도 있다. 비디오 인코더 (20) 는 CU 와 연관된 QP 값을 조정함으로써 CU 와 연관된 계수 블록들에 적용된 양자화의 정도를 조정할 수도 있다. 양자화는 정보의 손실을 가져올 수도 있다. 따라서, 양자화된 변환 계수들은 원래의 것보다 낮은 정확도를 가질 수도 있다.
역 양자화 유닛 (108) 및 역 변환 프로세싱 유닛 (110) 은 각각 계수 블록에 역 양자화 및 역 변환들을 적용하여, 계수 블록으로부터 잔차 블록을 복원할 수도 있다. 복원 유닛 (112) 은 복원된 잔차 블록을, 예측 프로세싱 유닛 (100) 에 의해 생성된 하나 이상의 예측 블록들로부터의 대응하는 샘플들에 부가하여, TU 와 연관되는 복원된 변환 블록을 생성할 수도 있다. 이러한 방식으로 CU 의 각각의 TU 에 대한 변환 블록들을 복원함으로써, 비디오 인코더 (20) 는 CU 의 코딩 블록들을 복원할 수도 있다.
필터 유닛 (114) 은 CU 와 연관된 코딩 블록들에서 블록킹 아티팩트들을 감소시키기 위하여 하나 이상의 디블록킹 동작들을 수행할 수도 있다. 디코딩된 픽처 버퍼 (116) 는, 필터 유닛 (114) 이 복원된 코딩 블록들에 대해 하나 이상의 디블록킹 동작들을 수행한 이후 복원된 코딩 블록들을 저장할 수도 있다. 인터-예측 프로세싱 유닛 (120) 은 다른 픽처들의 PU 들에 대해 인터 예측을 수행하기 위하여 복원된 코딩 블록들을 포함하는 레퍼런스 픽처를 사용할 수도 있다. 부가적으로, 인트라-예측 프로세싱 유닛 (126) 은 디코딩된 픽처 버퍼 (116) 에 있어서의 복원된 코딩 블록들을 이용하여, CU 와 동일한 픽처에 있어서의 다른 PU들에 대해 인트라 예측을 수행할 수도 있다.
엔트로피 인코딩 유닛 (118) 은 비디오 인코더 (20) 의 다른 기능적 컴포넌트들로부터 데이터를 수신할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (118) 은 양자화 유닛 (106) 으로부터 계수 블록들을 수신할 수도 있고 예측 프로세싱 유닛 (100) 으로부터 신택스 엘리먼트들을 수신할 수도 있다. 엔트로피 인코딩 유닛 (118) 은 엔트로피 인코딩된 데이터를 생성하기 위해 데이터에 대해 하나 이상의 엔트로피 인코딩 동작들을 수행할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (118) 은 CABAC 동작, 컨텍스트 적응형 가변 길이 코딩 (CAVLC) 동작, V2V (variable-to-variable) 길이 코딩 동작, 신택스 기반 컨텍스트 적응형 바이너리 산술 코딩 (SBAC) 동작, 확률 간격 파티션 엔트로피 (PIPE) 코딩 동작, 지수-골롬 인코딩 동작, 또는 다른 유형의 엔트로피 인코딩 동작을 데이터에 대해 수행할 수도 있다. 비디오 인코더 (20) 는 엔트로피 인코딩 유닛 (118) 에 의해 생성된 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력할 수도 있다. 실례로, 그 비트스트림은 CU 에 대한 변환 계수들의 값들을 나타내는 데이터를 포함할 수도 있다.
도 9 는 본 개시의 기법들을 구현하도록 구성된 예시적인 비디오 디코더 (30) 를 도시한 블록 다이어그램이다. 도 9 는 설명의 목적들로 제공되며, 본 개시에서 대체로 예시화되고 설명된 바와 같은 기법들에 대해 한정하는 것은 아니다. 설명을 목적으로, 본 개시는 HEVC 코딩의 맥락에서 비디오 디코더 (30) 를 설명한다. 그러나, 본 개시의 기법들은 다른 코딩 표준들 또는 방법들, 이를 테면, VVC (Versatile Video Coding) 에 적용가능할 수도 있다.
프로세싱 회로는부 비디오 디코더 (30) 를 포함하고, 비디오 디코더 (30) 는 본 개시에 설명된 예시적인 기법들 중 하나 이상을 수행하도록 구성된다. 예를 들어, 비디오 디코더 (30) 는 집적 회로부를 포함하고, 도 9 에 예시된 다양한 유닛들은, 회로 버스와 상호접속되는 하드웨어 회로 블록들로서 형성될 수도 있다. 이들 하드웨어 회로 블록들은 별도의 회로 블록들일 수도 있거나, 또는 그 유닛들 중 2 이상은 공통 하드웨어 회로 블록으로 결합될 수도 있다. 하드웨어 회로 블록은 AND, OR, NAND, NOR, XOR, XNOR 와 같은 논리 블록 및 다른 유사한 논리 블록뿐만 아니라 산술 논리 유닛 (ALU), 기본 함수 유닛 (EFU) 과 같은 연산 블록을 형성하는 전자 컴포넌트들의 조합으로서 형성될 수도 있다.
일부 예들에 있어서, 도 9 에 예시된 유닛들 중 하나 이상은 프로세싱 회로부 상에서 실행하는 소프트웨어 유닛들일 수도 있다. 이러한 예들에서, 이들 소프트웨어 유닛에 대한 오브젝트 코드는 메모리에 저장된다. 오퍼레이팅 시스템은 비디오 디코더 (30) 로 하여금 목적 코드를 취출하고 목적 코드를 실행하게 할 수도 있으며, 이는 비디오 디코더 (30) 로 하여금 예시적인 기술을 구현하기 위한 동작들을 수행하게 한다. 일부 예들에서, 소프트웨어 유닛은 비디오 디코더 (30) 가 시동시에 실행되는 펌웨어일 수도 있다. 따라서, 비디오 디코더 (30) 는 예시적인 기술을 수행하는 하드웨어를 갖는 구조적 컴포넌트이거나 또는 하드웨어를 특화하여 예시적인 기술을 수행하기 위해 하드웨어 상에서 실행되는 소프트웨어/펌웨어를 갖는다.
도 9 의 예에서, 비디오 디코더 (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) 의 프로세스와 상호 역의 프로세스를 수행할 수도 있다.
비트스트림으로부터 신택스 엘리먼트들을 얻는 것에 더하여, 비디오 디코더 (30) 는 파티션파티션 CU 에 대해 복원 동작을 수행할 수도 있다. CU 에 대해 복원 동작을 수행하기 위하여, 비디오 디코더 (30) 는 CU 의 각각의 TU 에 대해 복원 동작을 수행할 수도 있다. CU 의 각각의 TU 에 대해 복원 동작을 수행함으로써, 비디오 디코더 (30) 는 CU 의 잔차 블록들을 복원할 수도 있다.
CU 의 TU 에 대해 복원 동작을 수행하는 부분으로서, 역 양자화 유닛 (154) 은 TU 와 연관된 계수 블록들을, 역 양자화, 즉, 양자화해제할 수도 있다. 역 양자화 유닛 (154) 이 계수 블록을 역 양자화한 이후, 역 변환 프로세싱 유닛 (156) 은 TU 와 연관된 잔차 블록을 생성하기 위하여 계수 블록에 하나 이상의 역 변환들을 적용할 수도 있다. 예를 들어, 역 변환 프로세싱 유닛 (156) 은 역 DCT, 역 정수 변환, 역 KLT (Karhunen-Loeve transform), 역 회전 변환, 역 지향성 변환, 또는 다른 역 변환을 계수 블록에 적용할 수도 있다.
PU 가 인트라 예측을 이용하여 인코딩되는 경우, 인트라 예측 프로세싱 유닛 (166) 은 PU 의 예측자 블록들을 생성하기 위하여 인트라 예측을 수행할 수도 있다. 인트라 예측 프로세싱 유닛 (166) 은, 공간적으로 이웃하는 블록들 샘플들에 기초하여 PU 의 예측자 블록들을 생성하기 위하여 인트라 예측 모드를 사용할 수도 있다. 인트라 예측 프로세싱 유닛 (166) 은 비트스트림으로부터 획득된 하나 이상의 신택스 엘리먼트들에 기초하여 PU 를 위한 인트라 예측 모드를 결정할 수도 있다. 인트라-예측 프로세싱 유닛 (166) 은 본 개시의 인트라 예측 기법들을 수행할 수도 있다.
인트라-예측 프로세싱 유닛 (166) 은 이 개시의 기법들 어느 것에 따라 인트라 예측 모드를 사용하여 예측자 블록을 생성할 수도 있다. 예를 들어, 예측자 블록을 생성하는 부분으로서, 인트라-예측 프로세싱 유닛 (166) 은 제 1 가중치의 초기값을 결정하고 제 2 가중치의 값을 결정할 수도 있다. 또한, 예측자 블록에서 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 인트라-예측 프로세싱 유닛 (166) 은 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정할 수도 있다. 인트라-예측 프로세싱 유닛 (166) 은 또한 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정할 수도 있다. 또한, 인트라-예측 프로세싱 유닛 (166) 은 개별적인 샘플에 대한 제 3 가중치의 값을 결정할 수도 있다. 인트라-예측 프로세싱 유닛 (166) 은 또한 개별적인 샘플에 대한 제 1 가중치의 값, 개별적인 샘플에 대한 제 2 가중치의 값, 및 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 개별적인 샘플에 대한 제 4 가중치의 값을 결정할 수도 있다. 추가적으로 인트라-예측 프로세싱 유닛 (166) 은 인트라 예측 모드에 따라 개별적인 샘플에 대한 1차 값을 결정할 수도 있다. 다음으로, 인트라-예측 프로세싱 유닛 (166) 은 제 2 값에 의해 우측-시프트되는 개별적인 샘플에 대한 제 1 값으로서 개별적인 샘플에 대한 2차 값을 결정할 수도 있고, 개별적인 샘플에 대한 제 1 값은 다음:
(i) 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 1 가중치의 값,
(ii) 개별적인 샘플 위측인 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 2 가중치의 값,
(iii) 개별적인 샘플의 위측 및 좌측인 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 3 가중치의 값,
(iv) 개별적인 샘플에 대한 1차 값에 의해 곱해진 개별적인 샘플에 대한 제 4 가중치의 값, 및
(v) 오프셋 값
의 합이다.
예를 들어, 인트라-예측 프로세싱 유닛 (166) 은 식 (11) 에 따라 개별적인 샘플에 대한 2차 값을 결정할 수도 있고 여기서 wT 는 제 1 가중치이고 wL 는 제 2 가중치이고 wTL 는 제 3 가중치이고 (2 rightShift - wT - wL - wTL) 는 제 4 가중치이며, 그리고 rightShift 는 제 2 값이다.
PU 가 인터 예측을 사용하여 인코딩되면, 모션 보상 유닛 (164) 은 PU 에 대한 모션 정보를 결정할 수도 있다. 모션 보상 유닛 (164) 은 PU 의 모션 정보에 기초하여, 하나 이상의 레퍼런스 블록들을 결정할 수도 있다. 모션 보상 유닛 (164) 은, 하나 이상의 참조 블록들에 기초하여, PU 에 대한 예측자 블록들 (예를 들어, 예측 루마, Cb 및 Cr 블록들) 을 생성할 수도 있다.
복원 유닛 (158) 은 CU 의 TU들에 대한 변환 블록들 (예를 들어, 루마, Cb 및 Cr 변환 블록들) 및 CU 의 PU들의 예측자 블록들 (예를 들어, 루마, Cb 및 Cr 블록들), 즉, 적용가능한 경우, 인트라 예측 데이터 또는 인터 예측 데이터를 사용하여, CU 에 대한 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 을 복원할 수도 있다. 예를 들어, 복원 유닛 (158) 은 변환 블록들 (예를 들어, 루마, Cb 및 Cr 변환 블록들) 의 샘플들을 예측자 블록들 (예를 들어, 루마, Cb 및 Cr 예측자 블록들) 의 대응하는 샘플들에 부가하여 CU 의 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 을 복원할 수도 있다.
필터 유닛 (160) 은 디블록킹 동작을 수행하여 CU 의 코딩 블록들과 연관된 블록킹 아티팩트들을 감소시킬 수도 있다. 비디오 디코더 (30) 는 CU 의 코딩 블록을 디코딩된 픽처 버퍼 (162) 에 저장할 수도 있다. 디코딩된 픽처 버퍼 (162) 는 후속 모션 보상, 인트라 예측, 및 도 1 의 디스플레이 디바이스 (32) 와 같은 디스플레이 디바이스 상으로의 프리젠테이션을 위한 참조 픽처들을 제공할 수도 있다. 예를 들어, 비디오 디코더 (30) 는, 디코딩된 픽처 버퍼 (162) 에서의 블록들에 기초하여, 다른 CU들의 PU들에 대해 인트라 예측 또는 인터 예측 동작들을 수행할 수도 있다.
도 10 은 본 개시의 기술에 따른, 비디오 인코더 (20) 의 예시적인 동작을 도시한 플로우차트이다. 본 개시의 플로우차트들은 예들로서 제공된다. 다른 예들에셔ㅓ, 동작들은 보다 많거나, 보다 작거나, 또는 상이한 액션들을 포함할 수 있다. 더욱이, 일부 예들에서, 동작들은 상이한 순서들로 수행될 수도 있다.
도 10 의 예에서, 비디오 인코더 (20)(예를 들어, 비디오 인코더 (20) 의 인트라-예측 프로세싱 유닛 (126)(도 8)) 는 인트라 예측 모드 (1000) 를 사용하여 예측자 블록을 생성할 수도 있다. 일부 예들에서, 인트라 예측 모드는 DC 인트라 예측 모드이다. 일부 예들에서, 인트라 예측 모드는 수평 인트라 예측 모드이다. 일부 예들에서, 인트라 예측 모드는 수직 인트라 예측 모드이다. 일부 예들에서, 인트라 예측 모드는 다른 유형의 인트라 예측 모드이다. 일부 예들에서, 예측자 블록에서 샘플들 각각은 루마 샘플이다. 일부 예들에서, 예측자 블록에서 샘플들 각각은 크로마 샘플이다. 일부 예들에서, 비디오 인코더 (20) 는 루마 및 크로마 샘플들 양쪽에 도 10 의 동작을 적용할 수도 있다.
예측자 블록을 생성하는 부분으로서, 비디오 인코더 (20) 는 제 1 가중치의 초기값을 결정할 수도 있다 (1002). 추가적으로, 비디오 인코더 (20) 는 제 2 가중치의 초기값을 결정할 수도 있다 (1004). 일부 예들에서, 제 1 가중치의 초기값 및 제 2 가중치의 초기값은 고정되고 미리 정해질 수도 있다. 일부 예들에서, wL 및 wT 는 0.5 로서 초기화된다. 일부 예들에서 비디오 인코더 (20) 는 예측자 블록의 사이즈, 또는 인터 예측자 모드와 같은 하나 이상의 팩터들에 기초하여, 제 1 가중치의 초기값 및 제 2 가중치의 초기값을 결정할 수도 있다.
또한, 예측자 블록에서 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 비디오 인코더 (20) 는 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정할 수도 있다 (1006). 제 1 바운더리는 예측자 블록의 상부 바운더리일 수 있다. 일부 예들에서, 비디오 인코더 (20) 는 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하는 양만큼 제 1 가중치의 초기값에 대한 시프트 동작을 수행하는 것에 의해 개별적인 샘플에 대한 제 1 가중치의 값을 결정할 수도 있다. 예를 들어, "인트라 예측 모드 INTRA_PLANAR의 상세", "인트라 예측 모드 INTRA_DC의 상세", "인트라 예측 모드 INTRA_HOR 의 상세" 및 "인트라 예측 모드 INTRA_VER 의 상세"의 제목의 본 개시의 섹션에서, 비디오 인코더 (20) 는 개별적인 샘플에 대한 제 1 가중치의 값을 32 >> ((y << 1) >> rightShift) 으로서 결정할 수도 있고, 여기서, 32 는 제 1 가중치의 초기값이고, y 는 예측자 블록의 상부 바운더리로부터 샘플들에서의 거리이다. 다른 예들에서, 비디오 인코더 (20) 는 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하는 양만큼 제 1 가중치의 초기값을 나눗셈하는 것에 의해 개별적인 샘플에 대한 제 1 가중치의 값을 결정할 수도 있다.
예측자 블록에서의 샘플들의 세트는 예측자 블록의 각각의 샘플을 포함할 수도 있다. 다른 예들에서, 예측자 블록에서의 샘플들의 세트는 예측자 블록의 샘플들의 서브세트일 수도 있다. 즉, 일부 예들에서, 이 개시의 간략화된 PDPC 기법들은 어느 예측자 블록에 적용하기 보다는 선택된 예측 샘플 포지션들에만 적용된다. 예를 들어, 이 개시의 간략화된 PDPC 기법들이 적용되는 선택된 예측 샘플 포지션들은 예측자 블록의 좌측으로부터 시작하는 미리 정의된 수의 예측자 블록 및/또는 예측자 블록의 상부에서부터 시작하는 미리 정의된 수의 예측자 블록일 수 있다.
비디오 인코더 (20) 는 또한 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정할 수도 있다 (1008). 제 2 바운더리는 예측자 블록의 좌측 바운더리일 수 있다. 일부 예들에서, 비디오 인코더 (20) 는 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하는 양만큼 제 2 가중치의 초기값에 대한 시프트 동작을 수행하는 것에 의해 개별적인 샘플에 대한 제 2 가중치의 값을 결정할 수도 있다. 예를 들어, "인트라 예측 모드 INTRA_PLANAR의 상세", "인트라 예측 모드 INTRA_DC의 상세", "인트라 예측 모드 INTRA_HOR 의 상세" 및 "인트라 예측 모드 INTRA_VER 의 상세"의 제목의 본 개시의 섹션에서, 비디오 인코더 (20) 는 개별적인 샘플에 대한 제 2 가중치의 값을 32 >> ((x << 1) >> rightShift) 으로서 결정할 수도 있고, 여기서, 32 는 제 2 가중치의 초기값이고, x 는 예측자 블록의 좌측 바운더리로부터 샘플들에서의 거리이고 rightShift 는 어느 정도 좌측 시프트하는지의 값이다 (x << 1). 일부 예들에서, 비디오 인코더 (20) 는 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하는 양만큼 제 2 가중치의 초기값을 나눗셈하는 것에 의해 개별적인 샘플에 대한 제 2 가중치를 결정할 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 현재 샘플의 스케일링된 수평 좌표, 예측자 블록의 블록 사이즈, 또는 인트라 예측 모드 중 하나 이상에 기초하여 개별적인 샘플에 대한 제 1 가중치의 값을 결정할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 개별적인 샘플의 스케일링된 수직 좌표, 예측자 블록의 블록 사이즈, 또는 인트라 예측 모드 중 하나 이상에 기초하여 개별적인 샘플에 대한 제 2 가중치의 값을 유도할 수도 있다.
또한, 비디오 인코더 (20) 는 개별적인 샘플에 대한 제 3 가중치의 값을 결정할 수도 있다 (1010). 비디오 인코더 (20) 는 여러 방식들 중 하나 이상에서 개별적인 샘플에 대한 제 3 가중치의 값을 결정할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 개별적인 샘플에 대한 제 3 가중치의 값을 (wL>>4) + (wT>>4) 으로서 결정할 수도 있고 여기서, wL 은 개별적인 샘플에 대한 제 1 가중치의 값이고, wT 는 개별적인 샘플에 대한 제 2 가중치의 값이고 그리고 >> 는 우측-시프트 동작이다. 예를 들어, 비디오 인코더 (20) 는 개별적인 샘플에 대한 제 3 가중치의 값을 -(wL>>4) - (wT>>4) 으로서 결정할 수도 있고 여기서, wL 은 개별적인 샘플에 대한 제 1 가중치의 값이고, wT 는 개별적인 샘플에 대한 제 2 가중치의 값이고 그리고 >> 는 우측-시프트 동작이다.
일부 예들에서, 비디오 인코더 (20) 는 인트라 예측 모드에 기초하여 개별적인 샘플에 대한 제 3 가중치의 값을 결정한다. 예를 들어, 일부 예들에서, "인트라 예측 모드 INTRA_PLANAR 의 상세" 및 "인트라 예측 모드 INTRA_DC 의 상세" 의 제목인 섹션에서 도시된 바와 같이, 비디오 인코더 (20) 는 개별적인 샘플의 제 3 가중치의 값을 wTL = (wL >> 4) + (wT >> 4) 으로서 결정할 수도 있다. 이 예에서, "인트라 예측 모드 INTRA_HOR 의 상세" 의 제목인 섹션에서 도시된 바와 같이, 비디오 인코더 (20) 는 개별적인 샘플의 제 3 가중치의 값을 wTL = wT 로서 결정할 수도 있다. 이 예에서, "인트라 예측 모드 INTRA_VER 의 상세" 의 제목인 섹션에서 도시된 바와 같이, 비디오 인코더 (20) 는 개별적인 샘플의 제 4 가중치의 값을 wTL = wL 로서 결정할 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 개별적인 샘플에 대한 제 1 가중치의 값으로 곱해진 제 1 파라미터와 개별적인 샘플에 대한 제 2 가중치의 값으로 곱해진 제 2 파라미터를 더한 합으로서, 개별적인 샘플에 대한 제 3 가중치의 값을 결정할 수도 있다. 일 예로서, 비디오 인코더 (20) 는 제 3 가중치 (wTL) 의 값을 wTL = a-wL + b-wT으로서 결정할 수도 있다. 비디오 인코더 (20) 는 이 개시의 어디에서나 제공된 예들의 임의의 것에 따라 제 1 파라미터 (a) 및 제 2 파라미터 (b) 의 값들을 결정할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 제 1 파라미터 및 제 2 파라미터의 값들을 인트라 예측 방향에 기초하여 결정할 수도 있다. 일부 예들에서, 제 1 파라미터 및 제 2 파라미터의 값들은 수평 및/또는 수직 예측 방향에 대한 인트라 예측 각도 차이 또는 인트라 모드 인덱스 차이에 의존한다.
일부 예들에서, 비디오 인코더 (20) 는 비트스트림으로 제 1 파라미터 및 제 2 파라미터의 값들을 시그널링할 수도 있다. 이 개시의 어디에서나 주지된 바와 같이, 비트스트림은 비디오 데이터의 인코딩된 표현을 포함할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 비트스트림으로 제 1 파라미터 및 제 2 파라미터의 값들을 규정하는 신택스 엘리먼트들을 포함할 수도 있다.
또한, 도 10 의 예에서, 비디오 인코더 (20) 는 또한 개별적인 샘플에 대한 제 1 가중치의 값, 개별적인 샘플에 대한 제 2 가중치의 값, 및 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 개별적인 샘플에 대한 제 4 가중치의 값을 결정할 수도 있다 (1012). 비디오 인코더 (20) 는 여러 방식들 중 하나 이상에서 개별적인 샘플에 대한 제 4 가중치의 값을 결정할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 개별적인 샘플에 대한 제 4 가중치의 값을 (64 - wT - wL - wTL) 와 같게 결정할 수도 있고, 여기서 wT 는 개별적인 샘플에 대한 제 2 가중치의 값이고, wL 는 개별적인 샘플에 대한 제 1 가중치의 값이고, wTL 는 개별적인 샘플에 대한 제 3 가중치의 값이고, 제 2 값 (즉, 우측-시프트 값) 은 6 과 같다. 일부 예들에서, 비디오 인코더 (20) 는 개별적인 샘플에 대한 제 4 가중치의 값을 (2 rightShift - wT - wL - wTL) 와 같게 결정할 수도 있고, 여기서 wT 는 개별적인 샘플에 대한 제 2 가중치의 값이고, wL 는 개별적인 샘플에 대한 제 1 가중치의 값이고, wTL 는 개별적인 샘플에 대한 제 3 가중치의 값이다.
추가적으로 도 10 의 예에서, 비디오 인코더 (20) 는 인트라 예측 모드에 따라 개별적인 샘플에 대한 1차 값을 결정할 수도 있다 (1014). 예를 들어, 비디오 인코더 (20) 는 이 개시의 어디에서나 설명된 바와 같이, 플래너 인트라 예측 모드, DC 인트라 예측 모드, 또는 지향성 인트라 예측 모드를 사용하여 개별적인 샘플에 대한 1차 값을 결정할 수도 있다.
비디오 인코더 (20) 는 예측자 블록을 포함하는 현재 픽처에서의 참조 샘플들에 기초하여 개별적인 샘플에 대한 1차 값을 결정할 수도 있다. 예를 들어, 이 예에서, 비디오 인코더 (20) 는 예측자 블록의 참조 샘플들에 기초하여 개별적인 샘플에 대한 1차 값을 결정할 수도 있다. 예측자 블록의 참조 샘플들은 예측자 블록의 좌측의 컬럼에서의 디코딩된 샘플들 및 예측자 블록의 위측의 로우에서의 디코딩된 샘플들을 포함할 수도 있다. 따라서, 예측자 블록의 참조 샘플들은 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플, 개별적인 샘플의 위측인 현재 샘플에 대한 위측 참조 샘플, 및 개별적인 샘플의 위측 및 좌측에 있는 개별적인 샘플에 대한 위측-좌측 샘플을 포함할 수도 있다. 그러나, 인트라 예측 모드에 의존하여, 예측자 블록의 참조 샘플들에 기초하여 개별적인 샘플 값에 대한 1차 값을 결정하는 것은, 비디오 인코더 (20) 가 개별적인 샘플에 대한 좌측 참조 샘플, 개별적인 샘플에 대한 위측 참조 샘플, 및 개별적인 샘플에 대한 위측-좌측 샘플 중 하나 이상 또는 어느 것을 사용하는 것을 요구하지 않는다. 일부 예들에서, 비디오 인코더 (20) 는 예측자 블록 내에 있는 복원된 샘플들에 기초하여 개별적인 샘플에 대한 1차 값을 결정할 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 참조 샘플에 하나 이상의 필터들을 적용하고 필터링된 참조 샘플들에 기초하여 개별적인 샘플에 대한 1차 값을 결정한다. 예를 들어, 비디오 인코더 (20) 는 이 개시의 어디에서나 제공되는 예들의 어느 것에 따라 참조 샘플들을 필터링할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 필터링되지 않은 참조 샘플들에 기초하여 개별적인 샘플에 대한 1차 값을 결정할 수도 있다.
다음으로, 비디오 인코더 (20) 는 제 2 값만큼 우측-시프트되는 개별적인 샘플에 대한 제 1 값으로서 개별적인 샘플에 대한 2차 값을 결정할 수도 있다 (1016). 개별적인 샘플에 대한 제 1 값은 다음:
(i) 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 1 가중치의 값,
(ii) 개별적인 샘플 위측인 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 2 가중치의 값,
(iii) 개별적인 샘플의 위측 및 좌측인 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 3 가중치의 값,
(iv) 개별적인 샘플에 대한 1차 값으로 곱해진 개별적인 샘플에 대한 제 4 가중치의 값, 및
(v) 오프셋 값
의 합일 수도 있다.
예를 들어, 비디오 인코더 (20) 는 식 (11) 에 따라 개별적인 샘플에 대한 2차 값을 결정할 수도 있고 여기서 wT 는 제 1 가중치이고 wL 는 제 2 가중치이고 wTL 는 제 3 가중치이고 그리고 (2 rightShift - wT - wL - wTL) 는 제 4 가중치이며, 그리고 rightShift 는 제 2 값이다. 일부 예들에서, 오프셋 값은 32 이고, 제 2 값은 6 과 같다.
일부 예들에서, 비디오 인코더 (20) 는 참조 샘플들 (좌측 참조 샘플, 위측 참조 샘플, 및 위측-좌측 참조 샘플을 포함함) 에 하나 이상의 필터들을 적용하고 필터링된 참조 샘플들에 기초하여 개별적인 샘플에 대한 2차 값을 결정할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 이 개시의 어디에서나 제공되는 예들의 어느 것에 따라 참조 샘플들을 필터링할 수도 있다. 참조 샘플들은 예측자 블록의 참조 샘플들일 수도 있다. 즉, 참조 샘플들은 예측자 블록의 좌측의 컬럼에 그리고 예측자 블록의 위측의 로우에 있을 수도 있다. 참조 샘플들이 예측자 블록의 참조 샘플들인 예들에서, 비디오 인코더 (20) 는 예측자 블록의 필터링되지 않은 초기의 참조 샘플들에 필터를 적용하는 것에 의해 예측자 블록의 필터링된 참조 샘플들을 생성할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 개별적인 샘플에 대한 2차 값을 결정하기 위해 좌측 참조 샘플, 위측 참조 샘플, 및 위측-좌측 참조 샘플 중 하나 이상의 샘플의 필터링되지 않은 값들을 사용할 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 특정 블록 사이즈들 (예를 들어, 임계값보다 더 큰 사이즈들을 갖는 블록들) 에 대해서만 간략화된 이 개시의 PDPC 기법들을 적용한다. 따라서, 일부 예들에서, 비디오 인코더 (20) 는 예측자 블록의 사이즈가 미리 정해진 임계값보다 더 크다는 것에 기초하여 개별적인 샘플에 대한 2차 값이 제 2 값만큼 우측-시프트된 제 1 값이라고 결정할 수도 있다. 따라서, 예측자 블록의 사이즈가 임계값보다 크지 않은 사례들에서, 개별적인 샘플에 대한 2차 값은 개별적인 샘플에 대한 1차 값과 같을 수도 있다.
또한, 도 10 의 예에서, 비디오 인코더 (20) 는 비디오 데이터의 코딩 블록 및 예측자 블록에 기초하여 잔차 데이터를 생성할 수도 있다 (1018). 다른 예에서, 비디오 인코더 (20) 는 예측자 블록의 대응하는 샘플들로부터 코딩 블록의 샘플들을 감산하는 것에 의해 잔차 데이터를 생성할 수도 있다.
도 11 는 본 개시의 기술에 따른, 비디오 디코더 (30) 의 예시적인 동작을 도시한 플로우차트이다. 도 11 의 예에서, 비디오 디코더 (30)(예를 들어, 비디오 디코더 (30) 의 인트라-예측 프로세싱 유닛 (166)(도 9)) 는 인트라 예측 모드를 사용하여 예측자 블록을 생성할 수도 있다 (1100). 일부 예들에서, 인트라 예측 모드는 DC 인트라 예측 모드이다. 일부 예들에서, 인트라 예측 모드는 수평 인트라 예측 모드이다. 일부 예들에서, 인트라 예측 모드는 수직 인트라 예측 모드이다. 일부 예들에서, 인트라 예측 모드는 다른 유형의 인트라 예측 모드이다. 일부 예들에서, 예측자 블록에서 샘플들 각각은 루마 샘플이다. 일부 예들에서, 예측자 블록에서 샘플들 각각은 크로마 샘플이다. 일부 예들에서, 비디오 디코더 (30) 는 루마 및 크로마 샘플들 양쪽에 도 10 의 동작을 적용할 수도 있다.
예측자 블록을 생성하는 부분으로서, 비디오 디코더 (30) 는 제 1 가중치의 초기값을 결정할 수도 있다 (1102). 추가적으로, 비디오 디코더 (30) 는 제 2 가중치의 초기값을 결정할 수도 있다 (1104). 비디오 디코더 (30) 는 이 개시의 어디에서나 있고 액션들 (1002) 및 (1004) 에 대하여 제공되는 예들의 어느 것에 따라 제 1 가중치의 초기값 및 제 2 가중치의 초기값을 결정할 수도 있다.
또한, 예측자 블록에서 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 비디오 디코더 (30) 는 제 1 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 1 가중치의 값을 결정할 수도 있다 (1106). 제 1 바운더리는 예측자 블록의 상부 바운더리일 수 있다. 비디오 디코더 (30) 는 또한 제 2 가중치의 초기값 및 개별적인 샘플과 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 개별적인 샘플에 대한 제 2 가중치의 값을 결정할 수도 있다 (1108). 제 2 바운더리는 예측자 블록의 좌측 바운더리일 수 있다. 또한, 비디오 디코더 (30) 는 개별적인 샘플에 대한 제 3 가중치의 값을 결정할 수도 있다 (1110). 비디오 디코더 (30) 는 또한 개별적인 샘플에 대한 제 1 가중치의 값, 개별적인 샘플에 대한 제 2 가중치의 값, 및 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 개별적인 샘플에 대한 제 4 가중치의 값을 결정할 수도 있다 (1112). 비디오 디코더 (30) 는 이 개시의 어디에서나 있고 액션들 (1006), (1008), (1010) 및 (1012)에 대하여 위에 설명된 바와 같이 비디오 인코더 (20) 와 동일한 방식으로 개별적인 샘플에 대한 제 1, 제 2, 제 3, 및 제 4 가중치들의 값들을 결정할 수도 있다.
추가적으로 도 11 의 예에서, 비디오 디코더 (30) 는 인트라 예측 모드에 따라 개별적인 샘플에 대한 1차 값을 결정할 수도 있다 (1114). 예를 들어, 비디오 디코더 (30) 는 이 개시의 어디에서나 있고 액션 (1014)에 대하여 위에 설명된 바와 같이 비디오 인코더 (20) 와 동일한 방식으로 1차 값을 결정할 수도 있다.
다음으로, 비디오 디코더 (30) 는 제 2 값만큼 우측-시프트되는 개별적인 샘플에 대한 제 1 값으로서 개별적인 샘플에 대한 2차 값을 결정할 수도 있다 (1116). 개별적인 샘플에 대한 제 1 값은 다음:
(i) 개별적인 샘플의 좌측인 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 1 가중치의 값,
(ii) 개별적인 샘플 위측인 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 2 가중치의 값,
(iii) 개별적인 샘플의 위측 및 좌측인 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 개별적인 샘플에 대한 제 3 가중치의 값,
(iv) 개별적인 샘플에 대한 1차 값으로 곱해진 개별적인 샘플에 대한 제 4 가중치의 값, 및
(v) 오프셋 값
의 합일 수도 있다.
예를 들어, 비디오 디코더 (30) 는 식 (11) 에 따라 개별적인 샘플에 대한 2차 값을 결정할 수도 있고 여기서 wT 는 제 1 가중치이고 wL 는 제 2 가중치이고 wTL 는 제 3 가중치이고 그리고 (2 rightShift - wT - wL - wTL) 는 제 4 가중치이며, 그리고 rightShift 는 제 2 값이다. 일부 예들에서, 오프셋 값은 32 이고, 제 2 값은 6 과 같다.
일부 예들에서, 비디오 디코더 (30) 는 참조 샘플들 (좌측 참조 샘플, 위측 참조 샘플, 및 위측-좌측 참조 샘플을 포함함) 에 하나 이상의 필터들을 적용하고 필터링된 참조 샘플들에 기초하여 개별적인 샘플에 대한 2차 값을 결정할 수도 있다. 예를 들어, 비디오 디코더 (30) 는 이 개시의 어디에서나 제공되는 예들의 어느 것에 따라 참조 샘플들을 필터링할 수도 있다. 참조 샘플들은 예측자 블록의 참조 샘플들일 수도 있다. 즉, 참조 샘플들은 예측자 블록의 좌측의 컬럼에 그리고 예측자 블록의 위측의 로우에 있을 수도 있다. 참조 샘플들이 예측자 블록의 참조 샘플들인 예들에서, 비디오 디코더 (30) 는 예측자 블록의 필터링되지 않은 초기의 참조 샘플들에 필터를 적용하는 것에 의해 예측자 블록의 필터링된 참조 샘플들을 생성할 수도 있다. 다른 예들에서, 비디오 디코더 (30) 는 개별적인 샘플에 대한 2차 값을 결정하기 위해 좌측 참조 샘플, 위측 참조 샘플, 및 위측-좌측 참조 샘플 중 하나 이상의 샘플의 필터링되지 않은 값들을 사용할 수도 있다.
일부 예들에서, 비디오 디코더 (30) 는 특정 블록 사이즈들 (예를 들어, 임계값보다 더 큰 사이즈들을 갖는 블록들) 에 대해서만 간략화된 이 개시의 PDPC 기법들을 적용한다. 따라서, 일부 예들에서, 비디오 디코더 (30) 는 예측자 블록의 사이즈가 미리 정해진 임계값보다 더 크다는 것에 기초하여 개별적인 샘플에 대한 2차 값이 제 2 값만큼 우측-시프트된 제 1 값이라고 결정할 수도 있다. 따라서, 예측자 블록의 사이즈가 임계값보다 크지 않은 사례들에서, 개별적인 샘플에 대한 2차 값은 개별적인 샘플에 대한 1차 값과 같을 수도 있다.
또한, 도 11 의 예에서, 비디오 디코더 (30) 는 예측자 블록 및 잔차 데이터에 기초하여, 비디오 데이터의 디코딩된 블록을 복원할 수도 있다 (1118). 다른 예에서, 비디오 디코더 (30) 는 잔차 데이터의 샘플들에 예측자 블록의 샘플들을 추가하는 것에 의해 잔차 데이터를 생성할 수도 있다.
이 개시의 특정 양태들은 예시의 목적을 위해 HEVC 표준의 확장판들에 대해서 설명되었다. 하지만, 이 개시에 설명된 기법들은, 아직 개발되지 않은 다른 표준 또는 독점적 비디오 코딩 프로세스들을 포함한, 다른 비디오 코딩 프로세스들에 유용할 수도 있다.
본 개시에서 설명된 바와 같은 비디오 코더는 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 유사하게, 비디오 코딩 유닛은 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 마찬가지로, 비디오 코딩은, 적용가능한 경우, 비디오 인코딩 또는 비디오 디코딩을 지칭할 수도 있다. 본 개시는 하나 이상의 샘플 블록들 및 하나 이상의 샘플 블록들의 샘플들을 코딩하는데 이용된 신택스 구조들을 지칭하기 위하여 용어 "비디오 유닛", "비디오 블록" 또는 "블록" 을 이용할 수도 있다. 비디오 유닛들의 예시적인 유형들은 CTU, CU, PU, 변환 유닛 (TU), 매크로블록, 매크로블록 파티션 등을 포함할 수도 있다. 일부 맥락에서는, PU에 대한 논의가 매크로블록 또는 매크로블록 파티션에 대한 논의와 상호 교환될 수도 있다. 비디오 블록들의 예시적인 유형들은 코딩 트리 블록들, 코딩 블록들, 및 다른 유형들의 비디오 데이터의 블록들을 포함할 수도 있다.
그 기법들은, 공중 경유 (over-the-air) 텔레비전 브로드캐스트, 케이블 텔레비전 송신, 위성 텔레비전 송신, DASH (dynamic adaptive streaming over HTTP) 와 같은 인터넷 스트리밍 비디오 송신, 데이터 저장 매체 상에 인코딩되는 디지털 비디오, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 위의 예들의 다른 애플리케이션들 도는 조합들 등의 다양한 멀티미디어 애플리케이션들 중 어느 것을 지원하는 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 시스템 (10) 은, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 화상 통화 (video telephony) 와 같은 애플리케이션들을 지원하기 위해 일방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
예에 의존하여, 본원에서 설명된 기법들 중 임의의 것의 소정의 액트들 또는 이벤트들은 상이한 시퀀스로 수행될 수 있고, 전체적으로 부가, 병합, 또는 제거될 수도 있음 (예를 들어, 모든 설명된 액트들 또는 이벤트들이 그 기법들의 실시를 위해 필수적인 것은 아님) 이 인식되어야 한다. 더욱이, 소정의 예들에서, 액트들 또는 이벤트들은 순차적인 것보다는, 예를 들어, 멀티-스레딩된 프로세싱, 인터럽트 프로세싱, 또는 다중 프로세서들을 통해 동시에 수행될 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어로 구현되는 경우, 그 기능들은 하나 이상의 명령들 또는 코드로서, 컴퓨터-판독가능 매체 상에 저장되거나 또는 컴퓨터-판독가능 매체를 통해서 송신될 수도 있으며, 하드웨어-기반의 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들은 데이터 저장 매체들과 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체들, 또는 예를 들어, 통신 프로토콜에 따라 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다. 이러한 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 캐리어파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체는 본 개시에서 설명하는 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세싱 회로들에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터-판독가능 매체를 포함할 수도 있다.
일 예로서, 이에 한정하지 않고, 이런 컴퓨터-판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광디스크 스토리지, 자기디스크 스토리지, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 캐시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 적절히 컴퓨터 판독가능 매체로 불린다. 예를 들어, 명령들이 동축 케이블, 광섬유 케이블, 트위스티드 페어 (twisted pair), 디지털 가입자 회선 (DSL), 또는 적외선, 무선 (radio), 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되면, 매체의 정의에는, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들이 포함된다. 그러나, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 접속, 캐리어 파들, 신호들, 또는 다른 일시적 매체들을 포함하지 않고, 그 대신 비일시적, 유형의 저장 매체들과 관련되는 것으로 이해되어야 한다. 디스크 (disk) 및 디스크 (disc) 는, 본원에서 사용된 바와 같이, 콤팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루-레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 보통 데이터를 자기적으로 재생하는 한편, 디스크 (disc) 들은 레이저들로 데이터를 광학적으로 재생한다. 상기의 조합들이 또한 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
본 개시에서 설명된 기능은 고정 기능 및/또는 프로그램 가능한 처리 회로에 의해 수행될 수 있다. 예를 들어, 명령들은 고정 기능 및/또는 프로그램 가능한 처리 회로에 의해 실행될 수도 있다. 그러한 프로세싱 회로는 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적회로들 (ASIC들), 필드 프로그래밍가능 로직 어레이들 (FPGA들), 또는 다른 등가의 집적된 또는 별도의 로직 회로부와 같은 하나 이상의 프로세서들을 포함할 수도 있다. 이에 따라, 본원에서 사용된 바와 같은 용어 "프로세서" 는 본원에서 설명된 기법들의 구현에 적합한 전술한 구조 또는 임의의 다른 구조 중 임의의 구조를 지칭할 수도 있다. 추가로, 일부 양태들에서, 본원에서 설명된 기능성은 인코딩 및 디코딩을 위해 구성되거나, 또는 결합된 코덱에 통합된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 그 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다. 프로세싱 회로는 다양한 방식으로 다른 구성 요소에 결합될 수 있다. 예를 들어, 프로세싱 회로는 내부 장치 상호 접속, 유선 또는 무선 네트워크 접속, 또는 다른 통신 매체를 통해 다른 구성 요소에 결합될 수 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC 들의 세트 (예를 들면, 칩 세트) 를 포함하는, 매우 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시에 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하는 것은 아니다. 오히려, 위에 설명된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에서 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상기 설명된 바와 같은 하나 이상의 프로세서들을 포함하는, 상호운용가능한 하드웨어 유닛들의 콜렉션에 의해 제공될 수도 있다.
본 개시에 있어서, "제 1", "제 2", "제 3" 등과 같은 서수사 용어들은 반드시 순서 내의 포지션들의 표시자들은 아니며, 대신, 동일한 것의 상이한 인스턴스들을 구별하기 위해 단순히 사용될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (31)

  1. 비디오 데이터를 디코딩하는 방법으로서,
    인트라 예측 모드를 사용하여 예측자 블록을 생성하는 단계로서, 상기 예측자 블록을 생성하는 단계는:
    제 1 가중치의 초기값을 결정하는 단계;
    제 2 가중치의 초기값을 결정하는 단계;
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해:
    상기 제 1 가중치의 초기값 및 상기 개별적인 샘플과 상기 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 상기 개별적인 샘플에 대한 상기 제 1 가중치의 값을 결정하는 단계;
    상기 제 2 가중치의 초기값 및 상기 개별적인 샘플과 상기 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 상기 개별적인 샘플에 대한 상기 제 2 가중치의 값을 결정하는 단계;
    상기 개별적인 샘플에 대한 제 3 가중치의 값을 결정하는 단계;
    상기 개별적인 샘플에 대한 상기 제 1 가중치의 값, 상기 개별적인 샘플에 대한 상기 제 2 가중치의 값, 및 상기 개별적인 샘플에 대한 상기 제 3 가중치의 값에 기초하여, 상기 개별적인 샘플에 대한 제 4 가중치의 값을 결정하는 단계;
    상기 인트라 예측 모드에 따라 상기 개별적인 샘플에 대한 1차 값을 결정하는 단계; 및
    제 2 값만큼 우측-시프트되는 상기 개별적인 샘플에 대한 제 1 값으로서 상기 개별적인 샘플에 대한 2차 값을 결정하는 단계로서, 상기 개별적인 샘플에 대한 제 1 값은 (i) 상기 개별적인 샘플의 좌측인 상기 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 1 가중치의 값, (ii) 상기 개별적인 샘플 위측인 상기 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 2 가중치의 값, (iii) 상기 개별적인 샘플의 위측 및 좌측인 상기 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 3 가중치의 값, (iv) 상기 개별적인 샘플에 대한 상기 1차 값에 의해 곱해진 상기 개별적인 샘플에 대한 제 4 가중치의 값, 및 (v) 오프셋 값의 합인, 상기 2차 값을 결정하는 단계
    를 포함하는, 상기 예측자 블록을 생성하는 단계; 및
    상기 예측자 블록 및 잔차 데이터에 기초하여, 상기 비디오 데이터의 디코딩된 블록을 복원하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 상기 개별적인 샘플에 대한 1차 값을 결정하는 단계는 상기 예측자 블록의 참조 샘플들에 기초하여 상기 개별적인 샘플에 대한 1차 값을 결정하는 단계를 포함하고, 상기 참조 샘플들은 상기 개별적인 샘플에 대한 좌측 참조 샘플, 상기 개별적인 샘플에 대한 위측 참조 샘플, 및 상기 개별적인 샘플에 대한 위측-좌측 참조 샘플을 포함하는, 비디오 데이터를 디코딩하는 방법.
  3. 제 2 항에 있어서,
    블록의 상기 참조 샘플들은 필터링된 참조 샘플들이고, 상기 방법은:
    상기 예측자 블록의 초기 참조 샘플들에 필터를 적용하는 것에 의해 상기 예측자 블록의 필터링된 참조 샘플들을 생성하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해:
    상기 개별적인 샘플에 대한 상기 제 1 가중치의 값을 결정하는 단계는 상기 개별적인 샘플과 상기 예측자 블록의 제 1 바운더리 사이의 거리에 기초하는 양만큼 상기 제 1 가중치의 초기값에 대한 시프트 동작을 수행하는 것에 의해 상기 개별적인 샘플에 대한 상기 제 1 가중치의 값을 결정하는 단계를 포함하고; 그리고
    상기 제 2 가중치의 값을 결정하는 단계는 상기 개별적인 샘플과 상기 예측자 블록의 제 2 바운더리 사이의 거리에 기초하는 양만큼 상기 제 2 가중치의 초기값에 대한 시프트 동작을 수행하는 것에 의해 상기 개별적인 샘플에 대한 상기 제 2 가중치의 값을 결정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 상기 개별적인 샘플에 대한 제 4 가중치의 값은 (64 - wT - wL - wTL) 와 같고, wT 는 상기 개별적인 샘플에 대한 제 2 가중치의 값이고, wL 는 상기 개별적인 샘플에 대한 제 1 가중치의 값이고, wTL 는 상기 개별적인 샘플에 대한 제 3 가중치의 값이고, 오프셋 값은 32 와 같고, 제 2 값은 6 과 같은, 비디오 데이터를 디코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 개별적인 샘플에 대한 제 3 가중치의 값을 결정하는 단계는:
    상기 개별적인 샘플에 대한 제 3 가중치의 값을 (wL>>4) + (wT>>4) 으로서 결정하는 단계를 포함하고, wL 은 상기 개별적인 샘플에 대한 제 1 가중치의 값이고, wT 는 상기 개별적인 샘플에 대한 제 2 가중치의 값이고, >> 는 우측-시프트 동작인, 비디오 데이터를 디코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해:
    상기 개별적인 샘플에 대한 제 1 가중치의 값으로 곱해진 제 1 파라미터와 상기 개별적인 샘플에 대한 제 2 가중치의 값으로 곱해진 제 2 파라미터를 더한 합으로서, 상기 개별적인 샘플에 대한 제 3 가중치의 값을 결정하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  8. 제 7 항에 있어서,
    인트라 예측 방향에 기초하여, 상기 제 1 파라미터 및 상기 제 2 파라미터의 값들을 결정하는 단계,
    상기 비디오 데이터의 인코딩된 표현을 포함하는 비트스트림으로부터 상기 제 1 파라미터 및 상기 제 2 파라미터의 값들을 획득하는 단계, 또는
    수평 및/또는 수직 예측 방향에 대한 인트라 예측 각도 차이 또는 인트라 모드 인덱스 차이에 기초하여, 상기 제 1 파라미터 및 상기 제 2 파라미터의 값들을 결정하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  9. 제 1 항에 있어서,
    상기 인트라 예측 모드는 DC 인트라 예측 모드, 수평 인트라 예측 모드, 또는 수직 인트라 예측 모드인, 비디오 데이터를 디코딩하는 방법.
  10. 비디오 데이터를 인코딩하는 방법으로서,
    인트라 예측 모드를 사용하여 예측자 블록을 생성하는 단계로서, 상기 예측자 블록을 생성하는 단계는:
    제 1 가중치의 초기값을 결정하는 단계;
    제 2 가중치의 초기값을 결정하는 단계;
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해:
    상기 제 1 가중치의 초기값 및 상기 개별적인 샘플과 상기 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 상기 개별적인 샘플에 대한 상기 제 1 가중치의 값을 결정하는 단계;
    상기 제 2 가중치의 초기값 및 상기 개별적인 샘플과 상기 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 상기 개별적인 샘플에 대한 상기 제 2 가중치의 값을 결정하는 단계;
    상기 개별적인 샘플에 대한 제 3 가중치의 값을 결정하는 단계;
    상기 개별적인 샘플에 대한 상기 제 1 가중치의 값, 상기 개별적인 샘플에 대한 상기 제 2 가중치의 값, 및 상기 개별적인 샘플에 대한 상기 제 3 가중치의 값에 기초하여, 상기 개별적인 샘플에 대한 제 4 가중치의 값을 결정하는 단계;
    상기 인트라 예측 모드에 따라 상기 개별적인 샘플에 대한 1차 값을 결정하는 단계; 및
    제 2 값만큼 우측-시프트되는 상기 개별적인 샘플에 대한 제 1 값으로서 상기 개별적인 샘플에 대한 2차 값을 결정하는 단계로서, 상기 개별적인 샘플에 대한 제 1 값은 (i) 상기 개별적인 샘플의 좌측인 상기 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 1 가중치의 값, (ii) 상기 개별적인 샘플 위측인 상기 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 2 가중치의 값, (iii) 상기 개별적인 샘플의 위측 및 좌측인 상기 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 3 가중치의 값, (iv) 상기 개별적인 샘플에 대한 상기 1차 값에 의해 곱해진 상기 개별적인 샘플에 대한 제 4 가중치의 값, 및 (v) 오프셋 값의 합인, 상기 2차 값을 결정하는 단계
    를 포함하는, 상기 예측자 블록을 생성하는 단계; 및
    상기 비디오 데이터의 코딩 블록 및 예측자 블록에 기초하여 잔차 데이터를 생성하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  11. 제 10 항에 있어서,
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해:
    상기 개별적인 샘플에 대한 상기 제 1 가중치의 값을 결정하는 단계는 상기 개별적인 샘플과 상기 예측자 블록의 제 1 바운더리 사이의 거리에 기초하는 양만큼 상기 제 1 가중치의 초기값에 대한 시프트 동작을 수행하는 것에 의해 상기 개별적인 샘플에 대한 상기 제 1 가중치의 값을 결정하는 단계를 포함하고; 그리고
    상기 제 2 가중치의 값을 결정하는 단계는 상기 개별적인 샘플과 상기 예측자 블록의 제 2 바운더리 사이의 거리에 기초하는 양만큼 상기 제 2 가중치의 초기값에 대한 시프트 동작을 수행하는 것에 의해 상기 개별적인 샘플에 대한 상기 제 2 가중치의 값을 결정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  12. 제 10 항에 있어서,
    상기 개별적인 샘플에 대한 제 3 가중치의 값을 결정하는 단계는:
    상기 개별적인 샘플에 대한 제 3 가중치의 값을 (wL>>4) + (wT>>4) 으로서 결정하는 단계를 포함하고, wL 은 상기 개별적인 샘플에 대한 제 1 가중치의 값이고, wT 는 상기 개별적인 샘플에 대한 제 2 가중치의 값이고, >> 는 우측-시프트 동작인, 비디오 데이터를 인코딩하는 방법.
  13. 제 10 항에 있어서,
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해:
    상기 개별적인 샘플에 대한 제 1 가중치의 값으로 곱해진 제 1 파라미터와 상기 개별적인 샘플에 대한 제 2 가중치의 값으로 곱해진 제 2 파라미터를 더한 합으로서, 상기 개별적인 샘플에 대한 제 3 가중치의 값을 결정하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  14. 제 10 항에 있어서,
    상기 인트라 예측 모드는 DC 인트라 예측 모드, 수평 인트라 예측 모드, 또는 수직 인트라 예측 모드인, 비디오 데이터를 인코딩하는 방법.
  15. 비디오 데이터를 디코딩하기 위한 장치로서,
    상기 비디오 데이터를 저장하도록 구성된 하나 이상의 저장 매체; 및
    하나 이상의 프로세서들을 포함하고,
    상기 하나 이상의 프로세서들은:
    인트라 예측 모드를 사용하여 예측자 블록을 생성하는 것으로서, 상기 하나 이상의 프로세서들은, 상기 예측자 블록을 생성하는 부분으로서 상기 하나 이상의 프로세서들이:
    제 1 가중치의 초기값을 결정하고;
    제 2 가중치의 초기값을 결정하고;
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해:
    상기 제 1 가중치의 초기값 및 상기 개별적인 샘플과 상기 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 상기 개별적인 샘플에 대한 상기 제 1 가중치의 값을 결정하고;
    상기 제 2 가중치의 초기값 및 상기 개별적인 샘플과 상기 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 상기 개별적인 샘플에 대한 상기 제 2 가중치의 값을 결정하고;
    상기 개별적인 샘플에 대한 제 3 가중치의 값을 결정하고;
    상기 개별적인 샘플에 대한 상기 제 1 가중치의 값, 상기 개별적인 샘플에 대한 상기 제 2 가중치의 값, 및 상기 개별적인 샘플에 대한 상기 제 3 가중치의 값에 기초하여, 상기 개별적인 샘플에 대한 제 4 가중치의 값을 결정하고;
    상기 인트라 예측 모드에 따라 상기 개별적인 샘플에 대한 1차 값을 결정하고; 그리고
    제 2 값만큼 우측-시프트되는 상기 개별적인 샘플에 대한 제 1 값으로서 상기 개별적인 샘플에 대한 2차 값을 결정하는 것으로서, 상기 개별적인 샘플에 대한 제 1 값은 (i) 상기 개별적인 샘플의 좌측인 상기 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 1 가중치의 값, (ii) 상기 개별적인 샘플 위측인 상기 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 2 가중치의 값, (iii) 상기 개별적인 샘플의 위측 및 좌측인 상기 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 3 가중치의 값, (iv) 상기 개별적인 샘플에 대한 상기 1차 값에 의해 곱해진 상기 개별적인 샘플에 대한 제 4 가중치의 값, 및 (v) 오프셋 값의 합인, 상기 2차 값을 결정하도록
    구성되는, 상기 인트라 예측 모드를 사용하여 예측자 블록을 생성하고; 그리고
    상기 예측자 블록 및 잔차 데이터에 기초하여, 상기 비디오 데이터의 디코딩된 블록을 복원하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  16. 제 15 항에 있어서,
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 상기 하나 이상의 프로세서들은 상기 예측자 블록의 참조 샘플들에 기초하여 상기 개별적인 샘플에 대한 1차 값을 결정하도록 구성되고, 상기 참조 샘플들은 상기 개별적인 샘플에 대한 좌측 참조 샘플, 상기 개별적인 샘플에 대한 위측 참조 샘플, 및 상기 개별적인 샘플에 대한 위측-좌측 참조 샘플을 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  17. 제 16 항에 있어서,
    블록의 상기 참조 샘플들은 필터링된 참조 샘플들이고, 상기 하나 이상의 프로세서들은 상기 예측자 블록의 초기 참조 샘플들에 필터를 적용하는 것에 의해 상기 예측자 블록의 필터링된 참조 샘플들을 생성하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  18. 제 15 항에 있어서,
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 상기 하나 이상의 프로세서들은:
    상기 개별적인 샘플과 상기 예측자 블록의 제 1 바운더리 사이의 거리에 기초하는 양만큼 상기 제 1 가중치의 초기값에 대한 시프트 동작을 수행하는 것에 의해 상기 개별적인 샘플에 대한 상기 제 1 가중치의 값을 결정하고; 그리고
    상기 개별적인 샘플과 상기 예측자 블록의 제 2 바운더리 사이의 거리에 기초하는 양만큼 상기 제 2 가중치의 초기값에 대한 시프트 동작을 수행하는 것에 의해 상기 개별적인 샘플에 대한 상기 제 2 가중치의 값을 결정하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  19. 제 15 항에 있어서,
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 상기 개별적인 샘플에 대한 제 4 가중치의 값은 (64 - wT - wL - wTL) 와 같고, wT 는 상기 개별적인 샘플에 대한 제 2 가중치의 값이고, wL 는 상기 개별적인 샘플에 대한 제 1 가중치의 값이고, wTL 는 상기 개별적인 샘플에 대한 제 3 가중치의 값이고, 오프셋 값은 32 와 같고, 제 2 값은 6 과 같은, 비디오 데이터를 디코딩하기 위한 장치.
  20. 제 15 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 개별적인 샘플에 대한 제 3 가중치의 값을 (wL>>4) + (wT>>4) 으로서 결정하도록 구성되고, wL 은 상기 개별적인 샘플에 대한 제 1 가중치의 값이고, wT 는 상기 개별적인 샘플에 대한 제 2 가중치의 값이고, >> 는 우측-시프트 동작인, 비디오 데이터를 디코딩하기 위한 장치.
  21. 제 15 항에 있어서,
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 상기 하나 이상의 프로세서들은 상기 개별적인 샘플에 대한 제 1 가중치의 값으로 곱해진 제 1 파라미터와 상기 개별적인 샘플에 대한 제 2 가중치의 값으로 곱해진 제 2 파라미터를 더한 합으로서, 상기 개별적인 샘플에 대한 제 3 가중치의 값을 결정하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  22. 제 21 항에 있어서,
    상기 하나 이상의 프로세서들은 또한:
    인트라 예측 방향에 기초하여, 상기 제 1 파라미터 및 상기 제 2 파라미터의 값들을 결정하거나,
    상기 비디오 데이터의 인코딩된 표현을 포함하는 비트스트림으로부터 상기 제 1 파라미터 및 상기 제 2 파라미터의 값들을 획득하거나, 또는
    수평 및/또는 수직 예측 방향에 대한 인트라 예측 각도 차이 또는 인트라 모드 인덱스 차이에 기초하여, 상기 제 1 파라미터 및 상기 제 2 파라미터의 값들을 결정하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  23. 제 15 항에 있어서,
    상기 인트라 예측 모드는 DC 인트라 예측 모드, 수평 인트라 예측 모드, 또는 수직 인트라 예측 모드인, 비디오 데이터를 디코딩하기 위한 장치.
  24. 제 23 항에 있어서,
    상기 장치는:
    집적 회로,
    마이크로프로세서, 또는
    무선 통신 디바이스를 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  25. 비디오 데이터를 인코딩하기 위한 장치로서,
    상기 비디오 데이터를 저장하도록 구성된 하나 이상의 저장 매체; 및
    하나 이상의 프로세서들을 포함하고,
    상기 하나 이상의 프로세서들은:
    인트라 예측 모드를 사용하여 예측자 블록을 생성하는 것으로서, 상기 하나 이상의 프로세서들은, 상기 예측자 블록을 생성하는 부분으로서 상기 하나 이상의 프로세서들이:
    제 1 가중치의 초기값을 결정하고;
    제 2 가중치의 초기값을 결정하고;
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해:
    상기 제 1 가중치의 초기값 및 상기 개별적인 샘플과 상기 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 상기 개별적인 샘플에 대한 상기 제 1 가중치의 값을 결정하고;
    상기 제 2 가중치의 초기값 및 상기 개별적인 샘플과 상기 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 상기 개별적인 샘플에 대한 상기 제 2 가중치의 값을 결정하고;
    상기 개별적인 샘플에 대한 제 3 가중치의 값을 결정하고;
    상기 개별적인 샘플에 대한 상기 제 1 가중치의 값, 상기 개별적인 샘플에 대한 상기 제 2 가중치의 값, 및 상기 개별적인 샘플에 대한 상기 제 3 가중치의 값에 기초하여, 상기 개별적인 샘플에 대한 제 4 가중치의 값을 결정하고;
    상기 인트라 예측 모드에 따라 상기 개별적인 샘플에 대한 1차 값을 결정하고; 그리고
    제 2 값만큼 우측-시프트되는 상기 개별적인 샘플에 대한 제 1 값으로서 상기 개별적인 샘플에 대한 2차 값을 결정하는 것으로서, 상기 개별적인 샘플에 대한 제 1 값은 (i) 상기 개별적인 샘플의 좌측인 상기 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 1 가중치의 값, (ii) 상기 개별적인 샘플 위측인 상기 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 2 가중치의 값, (iii) 상기 개별적인 샘플의 위측 및 좌측인 상기 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 3 가중치의 값, (iv) 상기 개별적인 샘플에 대한 상기 1차 값에 의해 곱해진 상기 개별적인 샘플에 대한 제 4 가중치의 값, 및 (v) 오프셋 값의 합인, 상기 2차 값을 결정하도록
    구성되는, 상기 인트라 예측 모드를 사용하여 예측자 블록을 생성하고; 그리고
    상기 비디오 데이터의 코딩 블록 및 예측자 블록에 기초하여 잔차 데이터를 생성하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치.
  26. 제 25 항에 있어서,
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 상기 하나 이상의 프로세서들은:
    상기 개별적인 샘플과 상기 예측자 블록의 제 1 바운더리 사이의 거리에 기초하는 양만큼 상기 제 1 가중치의 초기값에 대한 시프트 동작을 수행하는 것에 의해 상기 개별적인 샘플에 대한 상기 제 1 가중치의 값을 결정하고; 그리고
    상기 개별적인 샘플과 상기 예측자 블록의 제 2 바운더리 사이의 거리에 기초하는 양만큼 상기 제 2 가중치의 초기값에 대한 시프트 동작을 수행하는 것에 의해 상기 개별적인 샘플에 대한 상기 제 2 가중치의 값을 결정하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치.
  27. 제 25 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 개별적인 샘플에 대한 제 3 가중치의 값을 (wL>>4) + (wT>>4) 으로서 결정하도록 구성되고, wL 은 상기 개별적인 샘플에 대한 제 1 가중치의 값이고, wT 는 상기 개별적인 샘플에 대한 제 2 가중치의 값이고, >> 는 우측-시프트 동작인, 비디오 데이터를 인코딩하기 위한 장치.
  28. 제 25 항에 있어서,
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해, 상기 하나 이상의 프로세서들은 상기 개별적인 샘플에 대한 제 1 가중치의 값으로 곱해진 제 1 파라미터와 상기 개별적인 샘플에 대한 제 2 가중치의 값으로 곱해진 제 2 파라미터를 더한 합으로서, 상기 개별적인 샘플에 대한 제 3 가중치의 값을 결정하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치.
  29. 제 25 항에 있어서,
    상기 인트라 예측 모드는 DC 인트라 예측 모드, 수평 인트라 예측 모드, 또는 수직 인트라 예측 모드인, 비디오 데이터를 인코딩하기 위한 장치.
  30. 제 25 항에 있어서,
    상기 장치는:
    집적 회로,
    마이크로프로세서, 또는
    무선 통신 디바이스를 포함하는, 비디오 데이터를 인코딩하기 위한 장치.
  31. 명령들을 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금:
    인트라 예측 모드를 사용하여 예측자 블록을 생성하게 하는 것으로서, 상기 하나 이상의 프로세서들은, 상기 예측자 블록을 생성하는 부분으로서 상기 하나 이상의 프로세서들이:
    제 1 가중치의 초기값을 결정하고;
    제 2 가중치의 초기값을 결정하고;
    상기 예측자 블록에서의 샘플들의 세트에서 각각의 개별적인 샘플에 대해:
    상기 제 1 가중치의 초기값 및 상기 개별적인 샘플과 상기 예측자 블록의 제 1 바운더리 사이의 거리에 기초하여, 상기 개별적인 샘플에 대한 상기 제 1 가중치의 값을 결정하고;
    상기 제 2 가중치의 초기값 및 상기 개별적인 샘플과 상기 예측자 블록의 제 2 바운더리 사이의 거리에 기초하여, 상기 개별적인 샘플에 대한 상기 제 2 가중치의 값을 결정하고;
    상기 개별적인 샘플에 대한 제 3 가중치의 값을 결정하고;
    상기 개별적인 샘플에 대한 제 1 가중치의 값, 상기 개별적인 샘플에 대한 제 2 가중치의 값, 및 상기 개별적인 샘플에 대한 제 3 가중치의 값에 기초하여, 상기 개별적인 샘플에 대한 제 4 가중치의 값을 결정하고;
    상기 인트라 예측 모드에 따라 상기 개별적인 샘플에 대한 1차 값을 결정하고; 그리고
    제 2 값만큼 우측-시프트되는 상기 개별적인 샘플에 대한 제 1 값으로서 상기 개별적인 샘플에 대한 2차 값을 결정하는 것으로서, 상기 개별적인 샘플에 대한 제 1 값은 (i) 상기 개별적인 샘플의 좌측인 상기 개별적인 샘플에 대한 좌측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 1 가중치의 값, (ii) 상기 개별적인 샘플 위측인 상기 개별적인 샘플에 대한 위측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 2 가중치의 값, (iii) 상기 개별적인 샘플의 위측 및 좌측인 상기 개별적인 샘플에 대한 위측-좌측 참조 샘플에 의해 곱해진 상기 개별적인 샘플에 대한 제 3 가중치의 값, (iv) 상기 개별적인 샘플에 대한 상기 1차 값에 의해 곱해진 상기 개별적인 샘플에 대한 제 4 가중치의 값, 및 (v) 오프셋 값의 합인, 상기 2차 값을 결정하도록
    구성되는, 상기 인트라 예측 모드를 사용하여 예측자 블록을 생성하게 하고; 그리고,
    상기 예측자 블록 및 잔차 데이터에 기초하여, 비디오 데이터의 디코딩된 블록을 복원하게 하는, 명령들을 저장한 컴퓨터 판독가능 저장 매체.
KR1020207009685A 2017-10-09 2018-10-09 비디오 코딩에서의 포지션-종속 예측 결합들 KR20200057014A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US201762570019P true 2017-10-09 2017-10-09
US62/570,019 2017-10-09
US16/154,261 US10965941B2 (en) 2017-10-09 2018-10-08 Position-dependent prediction combinations in video coding
US16/154,261 2018-10-08
PCT/US2018/054979 WO2019074905A1 (en) 2017-10-09 2018-10-09 COMBINATIONS OF POSITION-DEPENDENT PREDICTIONS IN VIDEO CODING

Publications (1)

Publication Number Publication Date
KR20200057014A true KR20200057014A (ko) 2020-05-25

Family

ID=65992690

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207009685A KR20200057014A (ko) 2017-10-09 2018-10-09 비디오 코딩에서의 포지션-종속 예측 결합들

Country Status (8)

Country Link
US (1) US10965941B2 (ko)
EP (1) EP3695606A1 (ko)
KR (1) KR20200057014A (ko)
CN (1) CN111183645A (ko)
BR (1) BR112020006568A2 (ko)
SG (1) SG11202001959XA (ko)
TW (1) TW201924346A (ko)
WO (1) WO2019074905A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180069789A (ko) * 2015-10-16 2018-06-25 엘지전자 주식회사 영상 코딩 시스템에서 예측 향상을 위한 필터링 방법 및 장치
US10715818B2 (en) 2016-08-04 2020-07-14 Intel Corporation Techniques for hardware video encoding
WO2020094057A1 (en) 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Position based intra prediction
WO2020114445A1 (en) 2018-12-07 2020-06-11 Beijing Bytedance Network Technology Co., Ltd. Context-based intra prediction
WO2020169101A1 (en) * 2019-02-22 2020-08-27 Beijing Bytedance Network Technology Co., Ltd. Neighbouring sample selection for intra prediction
SG11202108289PA (en) 2019-02-24 2021-08-30 Beijing Bytedance Network Technology Co Ltd Parameter derivation for intra prediction
US11025913B2 (en) 2019-03-01 2021-06-01 Intel Corporation Encoding video using palette prediction and intra-block copy
US10855983B2 (en) * 2019-06-13 2020-12-01 Intel Corporation Encoding video using two-stage intra search
WO2021134759A1 (en) * 2020-01-02 2021-07-08 Huawei Technologies Co., Ltd. An encoder, a decoder and corresponding methods of symmetric mode dependent intra smoothing when wide angle intra prediction is activated

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008004940A1 (en) 2006-07-07 2008-01-10 Telefonaktiebolaget Lm Ericsson (Publ) Video data management
US20120207216A1 (en) 2009-10-22 2012-08-16 Zhejiang Uiniversity Video and image encoding/decoding system based on spatial domain prediction
US9113050B2 (en) * 2011-01-13 2015-08-18 The Boeing Company Augmented collaboration system
US9930366B2 (en) 2011-01-28 2018-03-27 Qualcomm Incorporated Pixel level adaptive intra-smoothing
US9288500B2 (en) 2011-05-12 2016-03-15 Texas Instruments Incorporated Luma-based chroma intra-prediction for video coding
US9020294B2 (en) 2012-01-18 2015-04-28 Dolby Laboratories Licensing Corporation Spatiotemporal metrics for rate distortion optimization
US9451254B2 (en) 2013-07-19 2016-09-20 Qualcomm Incorporated Disabling intra prediction filtering
WO2015057947A1 (en) 2013-10-17 2015-04-23 Huawei Technologies Co., Ltd. Improved reference pixel selection and filtering for intra coding of depth map
US20180249156A1 (en) 2015-09-10 2018-08-30 Lg Electronics Inc. Method for processing image based on joint inter-intra prediction mode and apparatus therefor
US10425648B2 (en) * 2015-09-29 2019-09-24 Qualcomm Incorporated Video intra-prediction using position-dependent prediction combination for video coding
WO2017068856A1 (ja) 2015-10-21 2017-04-27 シャープ株式会社 予測画像生成装置、画像復号装置および画像符号化装置
US10567759B2 (en) 2016-03-21 2020-02-18 Qualcomm Incorporated Using luma information for chroma prediction with separate luma-chroma framework in video coding
US10230961B2 (en) * 2016-06-03 2019-03-12 Mediatek Inc. Method and apparatus for template-based intra prediction in image and video coding
US10674165B2 (en) * 2016-12-21 2020-06-02 Arris Enterprises Llc Constrained position dependent intra prediction combination (PDPC)
CN107071417B (zh) 2017-04-10 2019-07-02 电子科技大学 一种用于视频编码的帧内预测方法
CN108810552A (zh) 2017-04-28 2018-11-13 华为技术有限公司 图像预测方法和相关产品
EP3652936A1 (en) 2017-07-05 2020-05-20 Huawei Technologies Co., Ltd. Devices and methods for video coding
US20190089952A1 (en) * 2017-09-19 2019-03-21 Futurewei Technologies, Inc. Bidirectional Weighted Intra Prediction

Also Published As

Publication number Publication date
WO2019074905A1 (en) 2019-04-18
US20190110045A1 (en) 2019-04-11
CN111183645A (zh) 2020-05-19
BR112020006568A2 (pt) 2020-10-06
TW201924346A (zh) 2019-06-16
EP3695606A1 (en) 2020-08-19
SG11202001959XA (en) 2020-04-29
US10965941B2 (en) 2021-03-30

Similar Documents

Publication Publication Date Title
US11025903B2 (en) Coding video data using derived chroma mode
RU2746935C2 (ru) Кодирование видеоданных, используя инфраструктуру двухуровневого многотипного дерева
KR20200057014A (ko) 비디오 코딩에서의 포지션-종속 예측 결합들
US10382781B2 (en) Interpolation filters for intra prediction in video coding
JP2019515561A (ja) 2次変換インデックスの2値化
AU2016359155A1 (en) Linear-model prediction with non-square prediction units in video coding
JP2018507616A (ja) 予測ユニットの柔軟な区分化
US10638126B2 (en) Intra reference filter for video coding
EP3772263A1 (en) Position dependent intra prediction combination extended with angular modes
WO2018119431A1 (en) Determining neighboring samples for bilateral filtering in video decoding
WO2019147826A1 (en) Advanced motion vector prediction speedups for video coding
WO2018119429A1 (en) Deriving bilateral filter information based on a prediction mode in video decoding
US20200112725A1 (en) Adaptive affine motion vector coding
EP3824628A1 (en) Transform variations of multiple separable transform selection
CN113196752A (zh) 视频编解码中的自适应环路滤波分类
US20210084324A1 (en) Deblocking of subblock boundaries for affine motion compensated coding
WO2019051146A1 (en) FILLING LIMIT PIXELS WITH MOTION COMPENSATION
KR20210093926A (ko) 비디오 코딩을 위한 삼각형 모션 정보
KR20210103481A (ko) 비디오 코딩을 위한 트리-기반 변환 유닛 (tu) 파티션
WO2021087287A1 (en) Merge estimation region for multi-type-tree block structure
WO2019010217A1 (en) ADAPTIVE LOOP FILTER WITH ENHANCED CLASSIFICATION PROCESSES
WO2021119145A1 (en) Position-dependent intra-prediction combination for angular intra-prediction modes for video coding
WO2020264325A1 (en) Combined inter and intra prediction mode for video coding
WO2020205424A1 (en) Chroma intra prediction in video coding