KR20210074400A - 인트라 예측 방법 및 디바이스 - Google Patents

인트라 예측 방법 및 디바이스 Download PDF

Info

Publication number
KR20210074400A
KR20210074400A KR1020217017660A KR20217017660A KR20210074400A KR 20210074400 A KR20210074400 A KR 20210074400A KR 1020217017660 A KR1020217017660 A KR 1020217017660A KR 20217017660 A KR20217017660 A KR 20217017660A KR 20210074400 A KR20210074400 A KR 20210074400A
Authority
KR
South Korea
Prior art keywords
block
sample
intra prediction
component
unit
Prior art date
Application number
KR1020217017660A
Other languages
English (en)
Inventor
샹 마
하이타오 양
장러 천
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20210074400A publication Critical patent/KR20210074400A/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/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/186Methods 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 colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

사용 불가한 참조 샘플의 재구성을 위한 인트라 예측 방법 및 장치가 제공된다. 방법은, 현재 블록의 인트라 예측 모드를 획득하는 단계, 현재 블록의 콤포넌트의 참조 샘플의 가용성을 도출하는 단계, 사용 가능한 참조 샘플을 사용하여 사용 불가한 참조 샘플을 대체하는 단계, 인트라 예측 모드 및 대체된 참조 샘플에 기초하여 현재 블록의 예측을 도출하는 단계, 및 예측에 기초하여 현재 블록을 재구성하는 단계를 포함한다. 콤포넌트는 Cb 콤포넌트 또는 Cr 콤포넌트를 포함한다. 대안적으로, 콤포넌트는 크로마 콤포넌트를 포함한다. 방법은 각각의 콤포넌트에서 참조 샘플의 가용성을 도출하므로, 사용 가능한 정보를 더욱 정확하게 제공할 수 있다.

Description

인트라 예측 방법 및 디바이스
본 출원은, 2018년 11월 21일자로 제출되고 명칭이 "인트라 예측 방법 및 디바이스"인 미국 가특허 출원 번호 제62/770,736호에 대해 우선권을 주장하며, 그 개시 내용은 모든 목적을 위해 원용에 의해 전체적으로 본 명세서에 포함된다.
본 발명의 실시예는 일반적으로 비디오 코딩 분야에 관한 것이며, 특히 인트라-예측 방법 및 디바이스의 분야에 관한 것이다.
비교적 짧은 비디오를 묘사하는데 필요한 비디오 데이터의 양은 상당할 수 있으며, 이는 대역폭 용량이 제한된 통신 네트워크를 통해 데이터가 스트리밍되거나 통신될 때 어려움을 초래할 수 있다. 따라서, 비디오 데이터는 일반적으로 현대 통신 네트워크를 통해 통신되기 전에 압축된다. 메모리 리소스가 제한될 수 있으므로 비디오가 저장 장치에 저장될 때 비디오의 크기가 문제될 수도 있다. 비디오 압축 디바이스는 종종 소스에서 소프트웨어 및/또는 하드웨어를 사용하여 전송 또는 저장 전에 비디오 데이터를 코딩하여 디지털 비디오 이미지를 표현하는데 필요한 데이터 양을 줄인다. 압축된 데이터는 비디오 데이터를 디코딩하는 비디오 압축 해제 디바이스에 의해 목적지에서 수신된다. 네트워크 자원이 제한되고 더 높은 비디오 품질에 대한 요구가 계속 증가함에 따라, 이미지 품질을 거의 또는 전혀 희생하지 않고 압축률을 향상하는 개선된 압축 및 압축 해제 기법이 바람직하다.
본 개시의 실시예는 이미지를 인코딩 및 디코딩하기 위한 인트라 예측 장치 및 방법. 본 개시의 실시예는 여기에서 상세히 설명된 예에 제한되는 것으로 해석되어서는 안된다.
본 개시의 제1 측면에 따르면, 방법은, 현재 블록의 인트라 예측 모드를 획득하는 단계; 상기 현재 블록의 콤포넌트의 참조 샘플의 가용성을 도출하는 단계; 사용 가능한 참조 샘플을 사용하여 사용 불가한 참조 샘플을 대체하는 단계; 상기 인트라 예측 모드 및 상기 대체된 참조 샘플에 기초하여 상기 현재 블록의 예측을 도출하는 단계; 및 상기 예측에 기초하여 상기 현재 블록을 재구성하는 단계;를 포함한다. 일 실시예로서, 상기 콤포넌트는, Y 콤포넌트, Cb 콤포넌트 또는 Cr 콤포넌트를 포함한다. 다른 실시예에서, 상기 콤포넌트는, 루마 콤포넌트, 또는 크로마 콤포넌트를 포함한다.
본 개시의 상기 제1 측면은 각각의 콤포넌트에서 상기 참조 샘플의 가용성을 도출하므로, 사용 가능한 정보를 더욱 정확하게 제공할 수 있다.
제1 측면의 구현예에 따르면, 상기 재구성된 블록 내의 모든 Cb 샘플이 사용 가능으로 마킹되거나; 또는 상기 재구성된 블록 내의 모든 Cr 샘플이 사용 가능으로 마킹된다.
상기 제1 측면의 구현예는 각각의 콤포넌트에서 각각의 샘플에 대한 사용 가능한 정보를 저장하므로, 인트라 예측 프로세스에서 사용 가능한 정보를 더욱 정확하게 제공할 수 있다.
본 개시의 제2 측면에 따르면, 디코더는 전술한 방법의 단계를 수행하도록 구성되는 처리 회로를 포함한다.
본 개시의 제3 측면에 따르면, 인코더는 전술한 방법의 단계를 수행하도록 구성되는 처리 회로를 포함한다.
본 개시의 제4 측면에 따르면, 컴퓨터 프로그램 제품은 프로세서에 의해 실행될 때 전술한 방법을 수행하는 프로그램 코드를 포함한다.
본 개시의 제5 측면에 따르면, 인트라 예측을 위한 디코더는 하나 이상의 처리 유닛 및 상기 하나 이상의 처리 유닛에 결합하고 전술한 방법을 수행하기 위해 상기 하나 이상의 처리 유닛에 의해 실행되는 프로그램 명령을 저장하는 비일시적 컴퓨터-판독 가능한 저장 매체를 포함한다.
본 개시의 제6 측면에 따르면, 인트라 예측을 위한 인코더는 하나 이상의 처리 유닛 및 상기 하나 이상의 처리 유닛에 결합하고 전술한 방법을 수행하기 위해 상기 하나 이상의 처리 유닛에 의해 실행되는 프로그램 명령을 저장하는 비일시적 컴퓨터-판독 가능한 저장 매체를 포함한다.
본 개시의 실시예는 상기 방법을 수행하기 위한 디코딩 디바이스 및 인코딩 디바이스를 더 제공한다.
명확성을 위해, 전술한 실시예 중 어느 하나는 다른 전술한 다른 실시예 중 하나 이상과 결합하여 본 개시의 범위 내에서 새로운 실시예를 생성할 수 있다.
이들 및 다른 특징은 첨부된 도면 및 청구 범위와 함께 취해지는 다음의 상세한 설명으로부터보다 명확하게 이해될 것이다.
본 개시의 보다 완전한 이해를 위해, 첨부 도면 및 상세한 설명과 관련하여 취해진 다음의 간단한 설명을 참조하며, 여기서 동일한 참조 번호는 동일한 부분을 나타낸다.
도 1a는 본 개시의 실시예를 구현할 수 있는 예시적인 코딩 시스템을 도시하는 블록도이다.
도 1b는 본 개시의 실시예를 구현할 수 있는 다른 예시적인 코딩 시스템을 도시하는 블록도이다.
도 2는 본 개시의 실시예를 구현할 수 있는 예시적인 비디오 인코더를 도시하는 블록도이다.
도 3은 본 개시의 실시예를 구현할 수 있는 비디오 디코더의 예시를 도시하는 블록도이다.
도 4는 본 개시의 예시적인 일 실시예에 따른 네트워크 디바이스의 개략도이다.
도 5는 본 개시의 예시적인 일 실시예에 따른 도 1a의 소스 디바이스 및 데스티네이션 디바이스 중 하나 또는 양자 모두로서 사용될 수 있는 장치의 단순화된 블록도이다.
도 6은 본 개시의 설명에서 활용될 수 있는 H.265/HEVC의 인트라 예측 알고리즘 설명이다.
도 7은 본 개시의 예시적인 일 실시예에 따른 참조 샘플을 도시하는 그래픽 다이어그램이다.
도 8은 본 개시의 예시적인 실시예에 따라 사용 가능한 및 사용 불가한 참조 샘플을 도시하는 그래픽 다이어그램이다.
도 9는 본 개시의 예시적인 실시예에 따라 재구성된 신호를 도출하는 단순화된 흐름도이다.
도 10은 본 개시의 예시적인 일 실시예에 따라 예측 신호를 도출하는 단순화된 흐름도이다.
도 11은 본 개시의 예시적인 일 실시예에 따라 사용 가능으로 마킹된 현재 블록의 샘플을 도시하는 그래픽 다이어그램이다.
도 12는 본 개시의 예시적인 일 실시예에 따라 N x N 단위로 사용 가능으로 마킹된 현재 블록의 샘플을 도시하는 그래픽 다이어그램이다.
도 13은 본 개시의 예시적인 일 실시예에 따라 사용 가능으로 마킹된 현재 블록의 우측 경계 및 하단 경계의 샘플을 도시하는 그래픽 다이어그램이다.
도 14는 본 개시의 예시적인 일 실시예에 따라 N 단위로 사용 가능으로 마킹된 현재 블록의 우측 경계 및 하단 경계의 샘플을 도시하는 그래픽 다이어그램이다.
도 15는 본 개시의 예시적인 일 실시예에 따라 N x N 단위로 사용 가능으로 마킹된 현재 블록의 우측 경계 및 하단 경계에서의 샘플을 나타내는 그래픽 다이어그램이다.
도 16은 본 개시의 예시적인 일 실시예에 따른 크로마 콤포넌트 샘플의 마킹 방법을 도시하는 그래픽 다이어그램이다.
도 17은 콘텐츠 전송 서비스를 실현하는 콘텐츠 공급 시스템(3100)의 예시적인 구조를 도시하는 블록도이다.
도 18은 단말 디바이스의 일례의 구조를 도시하는 블록도이다.
하나 이상의 실시예의 예시적인 구현이 아래에 제공되지만, 개시된 시스템 및/또는 방법은 현재 알려져 있거나 존재하는지 여부에 관계없이 임의의 수량의 기법을 사용하여 구현될 수 있다는 것을 처음부터 이해해야 한다. 명세서는, 본 명세서에서 예시되고 설명되는 예시적인 설계 및 구현을 포함하여, 아래에 예시된 예시적인 구현, 도면, 및 기술로 제한되지 않아야 하며, 최대 범위의 동등물에 따라, 첨부된 청구 범위의 범위 내에서 수정될 수 있다.
도 1a는 양방향 예측을 이용할 수 있는 예시적인 코딩 시스템(10)을 도시하는 개략적인 블록도이다. 도 1a에 도시된 바와 같이, 코딩 시스템(10)은 데스티네이션 디바이스(14)에 의해 후에 디코딩될 인코딩된 비디오 데이터를 제공하는 소스 디바이스(12)를 포함한다. 특히, 소스 디바이스(12)는 컴퓨터-판독 가능한 매체(16)를 통해 비디오 데이터를 데스티네이션 디바이스(14)로 제공할 수 있다. 소스 디바이스(12) 및 데스티네이션 디바이스(14)는, 데스크탑 컴퓨터, 노트북(즉, 랩탑) 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 소위 "스마트" 폰과 같은 전화 핸드셋, 소위 "스마트" 패드, 텔레비전, 카메라, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 비디오 스트리밍 디바이스, 등을 포함하여 넓은 범위의 임의의 디바이스를 포함할 수 있다. 일부 경우에, 소스 디바이스(12) 및 데스티네이션 디바이스(14)는 무선 통신을 장착할 수 있다.
데스티네이션 디바이스(14)는 디코딩될 인코딩된 비디오 데이터를 컴퓨터-판독 가능한 매체(16)를 통해 수신할 수 있다. 컴퓨터-판독 가능한 매체(16)는 인코딩된 비디오 데이터를 소스 디바이스(12)로부터 데스티네이션 디바이스(14)로 이동시킬 수 있는 임의의 유형의 매체 또는 디바이스를 포함할 수 있다. 한 예로서, 컴퓨터-판독 가능한 매체(16)는 소스 디바이스(12)로 하여금 인코딩된 비디오 데이터를 직접 데스티네이션 디바이스(14)로 실시간으로 전송할 수 있게 하는 통신 매체를 포함할 수 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조될 수 있고, 데스티네이션 디바이스(14)로 전송될 수 있다. 통신 매체는 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 전송 라인과 같은, 임의의 무선 또는 유선 통신 매체를 포함할 수 있다. 통신 매체는 근거리 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷-기반 네트워크의 일부를 형성할 수 있다. 통신 매체는 라우터, 스위치, 기지국, 또는 소스 디바이스(12)로부터 데스티네이션 디바이스(14) 로의 통신을 용이하게 하는데 유용할 수 있는 임의의 다른 장비를 포함할 수 있다.
일부 예에서, 인코딩된 데이터는 출력 인터페이스(22)로부터 저장 장치로 출력될 수 있다. 이와 유사하게, 인코딩된 데이터는 입력 인터페이스에 의해 저장 장치로부터 액세스될 수 있다. 9저장 장치는 하드 드라이브, 블루-레이 디스크, 디지털 비디오 디스크(DVD), CD-ROM(Compact Disc Read-Only Memories), 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하는데 적합한 임의의 다른 디지털 저장 매체와 같은, 다양한 분산 또는 로컬 액세스 데이터 저장 매체를 포함할 수 있다. 추가적인 예로서, 저장 장치는 소스 디바이스(12)에 의해 생성된 인코딩된 비디오를 저장할 수 있는 다른 중간 저장 장치 또는 파일 서버에 대응할 수 있다. 데스티네이션 디바이스(14)는 스트리밍 또는 다운로드를 통해 저장 장치로부터 저장된 비디오 데이터에 액세스할 수 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 데스티네이션 디바이스(14)로 전송할 수 있는 임의의 유형의 서버일 수 있다. 예시적인 파일 서버에는 웹 서버(예컨대, 웹 사이트 용), 파일 전송 프로토콜(FTP) 서버, 네트워크 연결 스토리지(NAS) 디바이스, 또는 로컬 디스크 드라이브가 포함된다. 데스티네이션 디바이스(14)는 인터넷 연결을 포함하는 임의의 표준 데이터 연결을 통해 인코딩된 비디오 데이터에 액세스할 수 있다. 이에는, 무선 채널(예컨대, Wi-Fi 연결), 유선 연결(예컨대, 디지털 가입자 회선(DSL), 케이블 모뎀, 등), 또는 파일 서버에 저장된 인코딩된 비디오 데이터를 액세스하는데 적합한 양자의 조합이 포함될 수 있다. 저장 장치로부터 인코딩된 비디오 데이터의 전송은 스트리밍 전송, 다운로드 전송, 또는 이들의 조합일 수 있다.
본 개시의 기법은 반드시 무선 애플리케이션 또는 설정으로 제한되는 것은 아니다. 이 기술은, 공중파 텔레비전 방송, 케이블 텔레비전 전송, 위성 텔레비전 전송, DASH(dynamic adaptive streaming over HTTP)와 같은 인터넷 스트리밍 비디오 전송, 데이터 저장 매체 상에 인코딩된 디지털 비디오, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션과 같은 다양한 멀티미디어 애플리케이션 중 임의의 것을 지원하는 비디오 코딩에 적용될 수 있다. 일부 예에서, 코딩 시스템(10)는 단방향 또는 양방향 비디오 전송을 지원하여 비디오 스트리밍, 비디오 재생, 비디오 방송, 및/또는 비디오 전화와 같은 애플리케이션을 지원하도록 구성될 수 있다.
도 1a의 예에서, 소스 디바이스(12)는 비디오 소스(18), 비디오 인코더(20), 및 출력 인터페이스(22)를 포함한다. 데스티네이션 디바이스(14)는 입력 인터페이스(28), 비디오 디코더(30), 및 디스플레이 디바이스(32)를 포함한다. 본 개시에 따르면, 소스 디바이스(12)의 비디오 인코더(200) 및/또는 데스티네이션 디바이스(14)의 비디오 디코더(30)는 양방향 예측을 위한 기술을 적용하도록 구성될 수 있다. 다른 예로서, 소스 디바이스 및 데스티네이션 디바이스는 다른 콤포넌트 또는 배치를 포함할 수 있다. 예를 들어, 소스 디바이스(12)는 외부 카메라와 같은 외부 비디오 소스로부터 비디오 데이터를 수신할 수 있다. 마찬가지로, 데스티네이션 디바이스(14)는 통합된 디스플레이 디바이스를 포함하지 않고 외부 디스플레이 디바이스와 인터페이스할 수 있다.
도 1a에 도시된 코딩 시스템(10)은 단지 하나의 예이다. 양방향 예측 기술은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스에 의해 수행될 수 있다. 본 개시의 기술은 일반적으로 비디오 코딩 디바이스에 의해 수행되지만, 이 기술은 통상적으로 "CODEC"으로 지칭되는 비디오 인코더/디코더에 의해 수행될 수도 있다. 또한, 본 개시의 기술은 또한 비디오 전처리기(preprocessor)에 의해 수행될 수 있다. 비디오 인코더 및/또는 디코더는 그래픽 처리 유닛(GPU) 또는 유사한 디바이스일 수 있다.
소스 디바이스(12) 및 데스티네이션 디바이스(14)는 소스 디바이스(12)가 데스티네이션 디바이스(14)로 전송하기 위한 코딩된 비디오 데이터를 생성하는 그러한 코딩 디바이스의 예일 뿐이다. 일부 예에서, 소스 디바이스(12) 및 데스티네이션 디바이스(14)는 소스 및 데스티네이션 디바이스들(12, 14) 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭적인 방식으로 동작할 수 있다. 따라서, 코딩 시스템(10)은, 예컨대, 비디오 스트리밍, 비디오 재생, 비디오 방송 또는 비디오 전화를 위해 비디오 디바이스(12, 14) 사이의 단방향 또는 양방향 비디오 전송을 지원할 수 있다.
소스 디바이스(12)의 비디오 소스(18)는, 비디오 카메라와 같은 비디오 캡처 디바이스, 이전에 캡처된 비디오를 포함하는 비디오 아카이브, 및/또는 비디오 컨텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스를 포함할 수 있다. 추가적인 대안으로서, 비디오 소스(18)는 소스 비디오로서 컴퓨터 그래픽-기반 데이터, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터-생성 비디오의 조합을 생성할 수 있다.
일부 경우에, 비디오 소스(18)가 비디오 카메라인 경우, 소스 디바이스(12) 및 데스티네이션 디바이스(14)는 소위 카메라 폰 또는 비디오 폰을 형성할 수 있다. 그러나, 전술한 바와 같이, 본 개시에서 설명된 기술은 일반적으로 비디오 코딩에 적용될 수 있고, 무선 및/또는 유선 애플리케이션에 적용될 수 있다. 각각의 경우에, 캡처되는, 사전 캡처된, 또는 컴퓨터-생성된 비디오는 비디오 인코더(20)에 의해 인코딩될 수 있다. 인코딩된 비디오 정보는 출력 인터페이스(22)에 의해 컴퓨터-판독 가능한 매체(16)로 출력될 수 있다.
컴퓨터-판독 가능한 매체(16)는 무선 브로드캐스트 또는 유선 네트워크 전송과 같은 일시적 매체, 또는 하드 디스크, 플래시 드라이브, 컴팩트 디스크, 디지털 비디오 디스크, 블루-레이 디스크, 또는 다른 컴퓨터-판독 가능한 매체와 같은 저장 매체(즉, 비일시적 저장 매체)를 포함할 수 있다. 일부 예에서, 네트워크 서버(도시되지 않음)는 인코딩된 비디오 데이터를 소스 디바이스(12)로부터 수신할 수 있고, 인코딩된 비디오 데이터를 데스티네이션 디바이스(14)로, 예컨대, 네트워크 전송을 통해 제공할 수 있다. 이와 유사하게, 디스크 스탬핑 설비와 같은 매체 생산 설비의 컴퓨팅 디바이스는 인코딩된 비디오 데이터를 소스 디바이스(12)로부터 수신할 수 있고, 인코딩된 비디오 데이터를 포함하는 디스크를 생성할 수 있다. 따라서, 컴퓨터-판독 가능한 매체(16)는 다양한 예들에서 다양한 형태의 하나 이상의 컴퓨터-판독 가능한 매체를 포함하는 것으로 이해될 수 있다.
데스티네이션 디바이스(14)의 입력 인터페이스(28)는 컴퓨터-판독 가능한 매체(16)로부터 정보를 수신한다. 컴퓨터-판독 가능한 매체(16)의 정보는 비디오 인코더(20)에 의해 규정된 신택스 정보를 포함할 수 있으며, 이는 비디오 디코더(30)에 의해 또한 사용되고, 블록 및 다른 코딩된 유닛, 예컨대, 화상의 그룹(GOP)의 특성 및/또는 프로세싱을 기술하는 신택스 엘리먼트를 포함한다. 디스플레이 디바이스(32)는 디코딩된 비디오 데이터를 사용자에게 디스플레이하며, 음극선관(CRT), 액정 디스플레이(LCD), 플라즈마 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 또는 다른 유형의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스 중 임의의 것을 포함할 수 있다.
비디오 인코더(200) 및 비디오 디코더(300)은 현재 개발중인 HEVC(High Efficiency Video Coding) 표준과 같은 비디오 코딩 표준에 따라 동작할 수 있으며, HEVC 테스트 모델(HM)에 따를 수 있다. 대안적으로, 비디오 인코더(200) 및 비디오 디코더(300)는, MPEG(Motion Picture Expert Group)-4, Part 10라고도 지칭되는, ITU-T(International Telecommunication Union Telecommunication Standardization Sector) H.264 표준, AVC(Advanced Video Coding), H.265/HEVC, 또는 이러한 표준의 확장과 같은, 다른 독점적 또는 산업 표준에 따라 동작할 수 있다. 그러나, 본 개시의 기법은 임의의 특정한 코딩 표준에 제한되지 않는다. 비디오 코딩 표준의 다른 예로는, MPEG-2 및 ITU-T H.263이 있다. 도 1a에는 도시되지 않았으나, 일부 측면에서, 비디오 인코더(200) 및 비디오 디코더(300)는 각각 오디오 인코더 및 디코더와 통합될 수 있고, 공통 데이터 스트림 또는 별개 데이터 스트림에서 오디오 및 비디오 모두의 인코딩을 핸들링하기 위해, 적정 멀티플렉서-디멀티플렉서(MUX-DEMUX) 유닛, 또는 다른 하드웨어 및 소프트웨어를 포함할 수 있다. 해당되는 경우, MUX-DEMUX 유닛은 ITU H.223 멀티플렉서 프로토콜, 또는 UDP(user datagram protocol)와 같은 다른 프로토콜을 준수할 수 있다.
비디오 인코더(200) 및 비디오 디코더(300) 각각은, 하나 이상의 마이크로프로세서, 디지털 신호 처리기(DSP; digital signal processor), 주문형 집적 회로(ASIC; application specific integrated circuit), 필드 프로그래밍 가능 게이트 어레이(FPGA; field-programmable gate array), 이산 논리, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합과 같은 다양한 적합한 인코더 회로 중 하나로 구현될 수 있다. 기술이 부분적으로 소프트웨어로 구현되는 경우, 디바이스는 적절한 비일시적 컴퓨터-판독 가능한 매체에 소프트웨어에 대한 명령을 저장할 수 있고, 하나 이상의 프로세서를 사용하여 하드웨어에서 명령을 실행하여 본 개시의 방법을 수행할 수 있다. 비디오 인코더(200) 및 비디오 디코더(300)의 각각은, 하나 이상의 인코더 또는 디코더에 포함될 수 있으며, 이들 중 어느 것이라도 각각의 디바이스에서 결합된 인코더/디코더(CODEC)의 일부로서 통합될 수 있다. 비디오 인코더(200) 및/또는 비디오 디코더(300)를 포함하는 디바이스는 집적회로, 마이크로프로세서, 및/또는 셀룰러 폰과 같은 무선 통신 디바이스를 포함할 수 있다.
도 1b는 예시적인 일 실시예에 따라 도 2의 인코더(200) 및/또는 도 3의 디코더(300)를 포함하는 예시적인 비디오 코딩 시스템(40)을 도시하는 개략적인 블록도이다. 시스템(40)은 본 개시의 기법, 예컨대, 인터 예측에서 병합 추정을 구현할 수 있다. 도시된 구현예에서, 비디오 코딩 시스템(40)는 이미징 디바이스(41), 비디오 인코더(20), 비디오 디코더(300) (및/또는 처리 유닛(46)의 논리 회로(47)를 통해 구현되는 비디오 디코더), 안테나(42), 하나 이상의 프로세서(43), 하나 이상의 메모리 스토어(44), 및/또는 디스플레이 장치(45)를 포함할 수 있다.
도시된 바와 같이, 이미징 디바이스(41), 안테나(42), 처리 유닛(46), 논리 회로(47), 비디오 인코더(20), 비디오 디코더(30), 프로세서(43), 메모리 스토어(44), 및/또는 디스플레이 장치(45)는 서로 통신할 수 있다. 논의된 바와 같이, 비디오 인코더(20) 및 비디오 디코더(30)를 모두 도시하였으나, 비디오 코딩 시스템(40)은 다양한 실제 시나리오에서는 비디오 인코더(20)만을 또는 비디오 디코더(30)만을 포함할 수도 있다.
도시된 바와 같이, 일부 예시에서, 비디오 코딩 시스템(40)는 안테나(42)를 포함할 수 있다. 안테나(42)는 예를 들어 비디오 데이터의 인코딩된 비트스트림을 전송 또는 수신하도록 구성될 수 있다. 또한, 일부 예시에서, 비디오 코딩 시스템(40)은 디스플레이 장치(45)를 포함할 수 있다. 디스플레이 디바이스(45)는 비디오 데이터를 표현하도록 구성될 수 있다. 도시된 바와 같이, 일부 예시에서, 논리 회로(47)는 처리 유닛(46)을 통해 구현될 수 있다. 처리 유닛(46)는 주문형 집적회로(application-specific integrated circuit, ASIC) 논리, 그래픽 프로세서, 범용 프로세서, 등을 포함할 수 있다. 비디오 코딩 시스템(40)은 또한, 주문형 집적회로(ASIC) 로직, 그래픽 프로세서, 범용 프로세서, 등을 포함할 수 있는, 선택적인 프로세서(43)를 포함할 수 있다. 일부 예에서, 논리 회로(54)는 하드웨어, 비디오 코딩 전용 하드웨어, 등을 통해 구현될 수 있고, 프로세서(43)는 범용 소프트웨어, 운영 체제 등을 구현할 수 있다. 또한, 메모리 스토어(44)는 휘발성 메모리(예컨대, 정적 랜덤 액세스 메모리(Static Random Access Memory, SRAM), 동적 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM), 등) 또는 비휘발성 메모리 (예컨대, 플래시 메모리, 등), 등과 같은 임의의 유형의 메모리일 수 있다. 비-제한적인 예로서, 메모리 스토어(44)는 캐시 메모리에 의해 구현될 수 있다. 일부 예에서, 논리 회로(47)는 (예를 들어 이미지 버퍼의 구현을 위해) 메모리 스토어(44)에 액세스할 수 있다. 다른 예로서, 논리 회로(47) 및/또는 처리 유닛(46)은 이미지 버퍼 등의 구현을 위한 메모리 스토어(예를 들어, 캐시 등)를 포함할 수 있다.
일부 예에서, 논리 회로를 통해 구현되는 비디오 인코더(200)는 (예를 들어, 처리 유닛(46) 또는 메모리 스토어(44)를 통해) 이미지 버퍼 및 (예를 들어, 처리 유닛(46)을 통해) 그래픽 처리 유닛을 포함할 수 있다. 그래픽 처리 유닛은 이미지 버퍼에 통신 가능하게 결합될 수 있다. 그래픽 처리 유닛은 논리 회로(47)를 통해 구현되는 비디오 인코더(200)를 포함하여, 도 2와 관련하여 논의되는 다양한 모듈 및/또는 여기에서 기술되는 임의의 다른 인코더 시스템 또는 서브시스템을 구현할 수 있다. 논리 회로는 여기에서 논의되는 다양한 동작을 수행하도록 구성될 수 있다.
비디오 디코더(300)는 논리 회로(47)를 통해 구현되는 것과 유사한 방식으로 구현되어 도 3의 디코더(300)와 관련하여 논의되는 다양한 모듈 및/또는 여기에서 기술되는 임의의 다른 디코더 시스템 또는 서브시스템을 구현할 수 있다. 일부 예에서, 논리 회로를 통해 구현될 수 있는 비디오 디코더(300)는 (예컨대, 처리 유닛(46) 또는 메모리 스토어(44)를 통해) 이미지 버퍼 및 (예컨대, 처리 유닛(46)을 통해) 그래픽 처리 유닛을 포함할 수 있다. 그래픽 처리 유닛은 이미지 버퍼에 통신 가능하게 결합될 수 있다. 그래픽 처리 유닛은 논리 회로(47)를 통해 구현되는 비디오 디코더(300)를 포함하여, 도 3과 관련하여 논의되는 다양한 모듈 및/또는 여기에서 기술되는 임의의 다른 디코더 시스템 또는 서브시스템을 구현할 수 있다.
일부 예에서, 비디오 코딩 시스템(40)의 안테나(42)는 비디오 데이터의 인코딩된 비트스트림을 수신하도록 구성될 수 있다. 논의된 바와 같이, 인코딩된 비트스트림은, 코딩 파티션과 연관된 데이터(예컨대, 변환 계수 또는 양자화된 변환 계수, (논의된 바와 같은) 선택적인 인디케이터, 및/또는 코딩 파티션을 규정하는 데이터)와 같은, 여기에서 논의되는 인코딩 비디오 프레임과 연관된 데이터, 인디케이터, 인덱스 값, 모드 선택 데이터, 등을 포함할 수 있다. 비디오 코딩 시스템(40)은 안테나(42)에 결합되고 인코딩된 비트스트림을 디코딩하도록 구성되는 비디오 디코더(300)를 또한 포함할 수 있다. 비디오 프레임을 표현하도록 구성되는 디스플레이 장치(45).
도 2는 본 출원의 기법을 구현할 수 있는 비디오 인코더(200)의 예시를 도시하는 블록도이다. 비디오 인코더(200)는 비디오 슬라이스 내의 비디오 블록의 인트라-코딩 및 인터-코딩을 수행할 수 있다. 인트라-코딩은 공간적 예측에 의존하여, 주어진 비디오 프레임 또는 화상 내에서 비디오의 공간적 중복성을 줄이거나 제거한다. 인터 코딩은 시간적 예측에 의존하여, 비디오 시퀀스의 인접한 프레임 또는 화상 내의 비디오에서 시간적 중복성을 줄이거나 제거한다. 인트라-모드(I 모드)는 여러 공간 기반 코딩 모드 중 임의의 것을 지칭할 수 있다. 단방향 예측(P 모드) 또는 바이-예측(B 모드)과 같은 인터-모드는 여러가지 시간-기반 코딩 모드 중 임의의 것을 참조할 수 있다.
도 2는 본 개시의 기법을 구현하도록 구성되는 예시적인 비디오 인코더(200)의 개략적/개념적 블록도를 도시한다. 도 2의 예에서, 비디오 인코더(200)는 잔차 계산 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 역 양자화 유닛(210), 및 역변환 처리 유닛(212), 재구성 유닛(214), 버퍼(216), 루프 필터 유닛(220), 디코딩된 화상 버퍼 (DPB)(230), 예측 처리 유닛(260) 및 엔트로피 인코딩 유닛(270)을 포함한다. 예측 처리 유닛(260)은 인터 추정(242), 인터 예측 유닛(244), 인트라 추정(252), 인트라 예측 유닛(254) 및 모드 선택 유닛(262)을 포함할 수 있다. 인터 예측 유닛(244)은 모션 보상 유닛(도시되지 않음)을 더 포함할 수 있다. 도 2에 도시된 바와 같은 비디오 인코더(200)는 하이브리드 비디오 인코더 또는 하이브리드 비디오 코덱에 따른 비디오 인코더로도 또한 지칭될 수 있다.
예를 들어, 잔차 계산 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 예측 처리 유닛(260) 및 엔트로피 인코딩 유닛(270)은 인코더(200)의 순방향 신호 경로를 형성하고, 예를 들어, 역 양자화 유닛(210), 역변환 처리 유닛(212), 재구성 유닛(214), 버퍼(216), 루프 필터(220), 디코딩된 화상 버퍼 (DPB)(230), 예측 처리 유닛(260)은 인코더의 역방향 신호 경로를 형성하며, 여기서 인코더의 역방향 신호 경로는 디코더의 신호 경로에 대응한다(도 3에서 디코더(300) 참조).
인코더(200)은, 예컨대 입력(202)에 의해, 예컨대 비디오 또는 비디오 시퀀스를 형성하는 화상의 시퀀스의 화상인 화상(201) 또는 화상(201)의 블록(203)을 수신하도록 구성된다. 화상 블록(203)은 현재 화상 블록 또는 코딩될 화상 블록으로도 또한 지칭될 수 있고, 화상(201)은 현재 화상 또는 코딩될 화상으로 지칭될 수 있다 (특히 비디오 코딩에서 현재 화상을 다른 화상으로부터, 예컨대 이전에 인코딩된 및/또는 동일한 비디오 시퀀스, 즉, 현재 화상을 또한 포함하는 비디오 시퀀스의 디코딩된 화상으로부터 구별하기 하기 위해).
분할
인코더(200)의 실시예는 화상(201)을 복수의 블록, 예컨대 블록(203)과 같은 블록으로, 통상적으로 복수의 비-중첩 블록으로 분할하도록 구성되는 분할 유닛(도 2에 도시되지 않음)을 포함할 수 있다. 분할 유닛은 비디오 시퀀스의 모든 화상 및 블록 크기를 규정하는 대응하는 그리드에 대해 동일한 블록 크기를 사용하도록, 또는 화상 또는 화상의 서브세트 또는 그룹 사이에서 블록 크기를 변경하고, 각각의 화상을 대응하는 블록으로 분할하도록, 구성될 수 있다.
HEVC 및 다른 비디오 코딩 사양에서, 화상의 인코딩된 표현을 생성하기 위해, 코딩 트리 유닛(CTU)의 세트가 생성될 수 있다. 각각의 CTU는 루마 샘플의 코딩 트리 블록, 크로마 샘플의 2개의 대응하는 코딩 트리 블록, 및 코딩 트리 블록의 샘플을 코딩하는데 사용되는 신택스 구조를 포함할 수 있다. 단색 화상 또는 3개의 개별 컬러 평면을 가지는 화상에서, CTU는 코딩 트리 블록의 샘플을 코딩하는데 사용되는 단일 코딩 트리 블록 및 신택스 구조를 포함할 수 있다. 코딩 트리 블록은 샘플의 NxN 블록일 수 있다. CTU는 "트리 블록"또는 "최대 코딩 유닛"(LCU)으로도 지칭될 수 있다. HEVC의 CTU는 H.264/AVC와 같은 다른 표준의 매크로블록과 대체로 유사할 수 있다. 그러나, CTU는 반드시 특정 크기로 제한되지 않으며 하나 이상의 코딩 유닛(CU)을 포함할 수 있다. 슬라이스는 래스터(raster) 스캔 순서로 연속적으로 정렬된 정수 개수의 CTU를 포함할 수 있다.
HEVC에서, 다양한 로컬 특성에 적응하기 위해, CTU는 코딩 트리로 표시되는 쿼드-트리 구조를 사용하여 CU로 분할된다. 인터-화상 (시간적) 또는 인트라-화상 (공간적) 예측을 사용하여 화상 영역을 코딩할지 여부의 결정은 CU 레벨에서 이루어진다. CU는 루마 샘플 어레이, Cb 샘플 어레이, 및 Cr 샘플 어레이를 가지는 화상의 루마 샘플의 코딩 블록 및 크로마 샘플의 2개의 대응하는 코딩 블록, 및 코딩 블록의 샘플을 코딩하는데 사용되는 신택스 구조를 포함할 수 있다. 단색 화상 또는 3개의 개별 컬러 평면을 가지는 화상에서, CU는 코딩 블록의 샘플을 코딩하는데 사용되는 단일 코딩 블록 및 신택스 구조를 포함할 수 있다. 코딩 블록은 샘플의 NxN 블록이다. 일부 예에서, CU는 CTU와 동일한 크기일 수 있다. 각각의 CU는 예컨대 인트라 코딩 모드 또는 인터 코딩 모드일 수 있는 하나의 코딩 모드로 코딩된다. 다른 코딩 모드도 또한 가능하다. 인코더(200)는 비디오 데이터를 수신한다. 인코더(200)는 비디오 데이터의 화상의 슬라이스에서 각각의 CTU를 인코딩할 수 있다. CTU 인코딩의 일부로서, 인코더(200)의 예측 처리 유닛(260) 또는 다른 처리 유닛(도 2에 도시된 인코더(200)의 유닛을 포함하지만 이에 제한되지 않음)은 분할을 수행하여 CTU의 CTB를 점진적으로 더 작은 블록(203)으로 분할할 수 있다. 더 작은 블록은 CU의 코딩 블록일 수 있다.
비트스트림 내의 신택스 데이터는 CTU의 크기를 규정할 수도 있다. 슬라이스는 코딩 순서에 따라 여러 개의 연속적인 CTU를 포함한다. 비디오 프레임, 이미지 또는 화상은 하나 이상의 슬라이스로 분할될 수 있다. 전술한 바와 같이, 각각의 트리 블록은 쿼드-트리에 따라 코딩 유닛(CU)으로 분할될 수 있다. 일반적으로, 쿼드-트리 데이터 구조는 CU당 하나의 노드를 포함하며, 루트 노드는 트리 블록(예컨대, CTU)에 대응한다. CU가 4개의 서브-CU로 분할되는 경우, CU에 대응하는 노드는 4개의 하위 노드(child node)를 포함하며, 각각의 노드는 서브-CU 중 하나에 대응한다. 쿼드-트리 구조의 복수의 노드는 리프 노드와 비-리프 노드를 포함한다. 리프 노드는 트리 구조에서 하위 노드를 가지지 않는다 (즉, 리프 노드는 더 이상 분할되지 않는다). 비-리프 노드는 트리 구조의 루트 노드를 포함한다. 복수의 노드 중 각각의 개개의 비-루트 노드에 대해, 각각의 비-루트 노드는 각각의 비-루트 노드의 트리 구조에서 상위 노드(parent node)에 대응하는 CU의 서브-CU에 대응한다. 각각의 비-리프 노드는 트리 구조에서 하나 이상의 하위 노드를 가진다.
쿼드-트리 데이터 구조의 각각의 노드는 대응하는 CU에 대한 신택스 데이터를 제공할 수 있다. 예를 들어, 쿼드-트리의 노드는 노드에 대응하는 CU가 서브-CU로 분할되는지 여부를 나타내는 분할 플래그를 포함할 수 있다. CU에 대한 신택스 엘리먼트는 재귀적으로(recursively) 규정될 수 있으며, CU가 서브-CU로 분할되는지 여부에 따라 달라질 수 있다. CU가 더 이상 분할되지 않는 경우, 이는 리프-CU로 지칭된다. CU의 블록이 더 분할되는 경우, 이는 일반적으로 비-리프-CU로 지칭될 수 있다. 분할의 각각의 레벨은 4개의 서브-CU로 분할된 쿼드-트리이다. 블랙 CU는 리프-노드(즉, 더 이상 분할되지 않는 블록)의 예이다.
CU는 크기 구별이 없다는 점을 제외하면 H.264 표준의 매크로블록과 유사한 목적을 가진다. 예를 들어, 트리 블록은 4개의 하위 노드(서브-CU라고도 함)로 분할될 수 있으며, 각각의 하위 노드는 다음에는 상위 노드가 되어 다른 4개의 하위 노드로 분할될 수 있다. 쿼드 트리의 리프 노드로 지칭되는, 최종 분할되지 않은 하위 노드는 리프-CU로도 지칭되는 코딩 노드를 포함한다. 코딩된 비트스트림과 연관된 신택스 데이터는 트리 블록이 분할될 수 있는 최대 횟수(최대 CU 깊이라고도 지칭됨)를 규정할 수 있으며, 코딩 노드의 최소 크기를 정의할 수도 있다. 따라서, 비트스트림은 또한 최소 코딩 유닛(SCU)를 규정할 수 있다. HEVC의 맥락에서 CU, PU 또는 TU 중 임의의 것을 지칭하기 위해, 또는 다른 표준의 맥락에서 유사한 데이터 구조(예컨대, H.264/AVC에서 이들의 매크로블록 및 서브-블록)를 지칭하기 위해, 용어 "블록"을 사용한다.
HEVC에서, 각각의 CU는 PU 분할 유형에 따라 1개, 2개 또는 4개의 PU로 더 분할될 수 있다. 하나의 PU 내부에서, 동일한 예측 프로세스가 적용되고 관련 정보가 PU 기반으로 디코더로 전송된다. PU 분할 유형에 기초하여 예측 과정을 적용하여 잔차 블록을 획득한 후, CU에 대한 코딩 트리와 유사한 다른 쿼드-트리 구조에 따라 CU를 변환 유닛(TU)으로 분할할 수 있다. HEVC 구조의 주요 특징 중 하나는, CU, PU, 및 TU를 포함한 다중 파티션 개념을 가지고 있다는 것이다. PU는 정사각형이 아닌 형상으로 분할될 수 있다. CU와 연관된 신택스 데이터는 또한, 예를 들어 CU를 하나 이상의 PU로 분할하는 것을 기술할 수 있다. TU는 정사각형 또는 정사각형이 아닌 (예컨대, 직사각형의) 형상일 수 있으며, CU와 연관된 신택스 데이터는 예를 들어, 쿼드-트리에 따라 CU를 하나 이상의 TU로 분할하는 것을 기술할 수 있다. 분할 모드(partitioning mode)는 CU가 스킵 또는 직접 모드 인코딩, 인트라-예측 모드 인코딩, 또는 인터-예측 모드 인코딩에 있는가 사이에서 다를 수 있다.
VVC(Versatile Video Coding)는 PU와 TU 개념의 분리를 제거하고 CU 파티션 형상에 대해 더 많은 유연성을 지원한다. CU의 크기는 코딩 노드의 크기에 대응하고 정사각형 또는 정사각형이 아닌 (예를 들어, 직사각형의) 형상일 수 있다. CU의 크기는 4x4 픽셀(또는 8x8 픽셀)에서 최대 128x128 픽셀 또는 그 이상(예컨대, 256x256 픽셀)의 트리 블록 크기까지 다양하다.
인코더(200)가 CU에 대한 예측 블록(예를 들어, 루마, Cb 및 Cr 예측 블록)을 생성 한 후, 인코더(200)는 CU에 대한 잔차 블록을 생성할 수 있다. 예를 들어, 인코더(100)는 CU에 대한 루마 잔차 블록을 생성할 수 있다. CU의 루마 잔차 블록의 각각의 샘플은 CU의 예측 루마 블록의 루마 샘플과 CU의 원래 루마 코딩 블록에서 대응하는 샘플 사이의 차이를 나타낸다. 또한, 인코더(200)는 CU에 대한 Cb 잔차 블록을 생성할 수 있다. CU의 Cb 잔차 블록에서 각각의 샘플은 CU의 예측 Cb 블록의 Cb 샘플과 CU의 원래 Cb 코딩 블록에서 대응하는 샘플 사이의 차이를 나타낼 수 있다. 인코더(200)는 또한 CU에 대한 Cr 잔차 블록을 생성할 수 있다. CU의 Cr 잔차 블록에서 각각의 샘플은 CU의 예측 Cr 블록의 Cr 샘플과 CU의 원래 Cr 코딩 블록에서 대응하는 샘플 사이의 차이를 나타낼 수 있다.
일부 예에서, 인코더(200)는 변환 블록에 대한 변환의 적용을 생략한다. 그러한 예에서, 인코더(200)는 변환 계수와 동일한 방식으로 잔차 샘플 값을 처리할 수 있다. 따라서, 인코더(200)가 변환의 적용을 생략하는 예에서, 변환 계수 및 계수 블록에 대한 다음 논의가 잔차 샘플의 변환 블록에 적용될 수 있다.
계수 블록(예를 들어, 루마 계수 블록, Cb 계수 블록 또는 Cr 계수 블록)을 생성한 후, 인코더(200)는 계수 블록을 양자화하여 계수 블록을 표현하는데 사용되는 데이터의 양을 감소시켜 잠재적으로 추가 압축을 제공할 수 있다. 양자화는 일반적으로 값의 범위가 단일 값으로 압축되는 프로세스를 의미한다. 인코더(200)가 계수 블록을 양자화 한 후, 인코더(200)는 양자화된 변환 계수를 나타내는 신택스 엘리먼트를 엔트로피 인코딩할 수 있다. 예를 들어, 인코더(200)는 양자화된 변환 계수를 나타내는 신택스 엘리먼트에 대해 CABAC(Context-Adaptive Binary Arithmetic Coding) 또는 다른 엔트로피 코딩 기술을 수행할 수 있다.
인코더(200)는 코딩된 화상 및 연관된 데이터의 표현을 형성하는 비트 시퀀스를 포함하는 인코딩된 화상 데이터(271)의 비트스트림을 출력할 수 있다. 따라서, 비트스트림은 비디오 데이터의 인코딩된 표현을 포함한다.
J. An et al., "차세대 비디오 코딩을 위한 블록 분할 구조", 국제 통신 유니언(International Telecommunication Union), COM16-C966, 2015년 9월(이하, "VCEG 제안 COM16-C966")에서, 쿼드-트리-2진-트리(QTBT) 분할 기법은 HEVC를 넘어서는 미래의 비디오 코딩 표준으로 제안되었다. 제안된 QTBT 구조가 HEVC에서 사용되는 쿼드-트리 구조보다 더 효율적임이 시뮬레이션에서 밝혀졌다. HEVC에서, 모션 보상의 메모리 액세스를 줄이기 위해 작은 블록에 대한 인터 예측을 제한하여, 4x8 및 8x4 블록에 대해서는 바이-예측이 지원되지 않고, 4x4 블록에 대해서는 인터 예측이 지원되지 않는다. JEM의 QTBT에서는, 이러한 제한이 제거된다.
QTBT에서, CU는 정사각형 또는 직사각형 형상을 가질 수 있다. 예를 들어, 코딩 트리 유닛(CTU)는 먼저 쿼드트리 구조에 의해 분할된다. 쿼드트리 리프 노드는 2진 트리 구조로 더 분할될 수 있다. 2진 트리 분할에는 대칭 수평 분할 및 대칭 수직 분할의 두 가지 분할 유형이 있다. 각각의 경우에, 노드는 수평 또는 수직으로 노드를 절반으로 나누어 분할된다. 2진 트리 리프 노드는 코딩 유닛(CU)이라고 하고, 이 세분화(segmentation)는 추가적인 분할 없이 예측 및 변환 처리에 사용된다. 이는 CU, PU 및 TU가 QTBT 코딩 블록 구조에서 동일한 블록 크기를 가짐을 의미한다. CU는 때때로 서로 다른 색상 구성 요소의 코딩 블록(CB)으로 구성되며, 예컨대 하나의 CU는 4:2:0 크로마 포맷의 P 및 B 슬라이스의 경우 하나의 루마 CB 및 2개의 크로마 CB를 포함하고 때로는 단일 콤포넌트의 CB로 구성되며, 예컨대, 하나의 CU는 I 슬라이스의 경우 하나의 루마 CB만을 또는 단지 2개의 크로마 CB를 포함한다.
QTBT 분할 체계에 대해 다음 파라미터가 규정된다.
- CTU 크기: HEVC에서와 동일한 개념인, 쿼드 트리의 루트 노드 크기.
- MinQTSize: 허용되는 최소 쿼드트리 리프 노드 크기.
- MaxBTSize: 허용되는 최대 2진 트리 루트 노드 크기.
- MaxBTDepth: 허용되는 최대 2진 트리 깊이.
- MinBTSize: 허용되는 최소 2진 트리 리프 노드 크기.
QTBT 분할 구조의 한 예에서, CTU 크기는 크로마 샘플의 2개의 대응하는 64×64 블록을 가지는 128×128 루마 샘플로 설정되고, MinQTSize는 16×16로 설정되고, MaxBTSize는 64×64로 설정되고, MinBTSize 는 (폭 및 높이 모두에 대해) 4×4로 설정되고, MaxBTDepth는 4로 설정된다. 쿼드트리 분할은 먼저 CTU에 적용되어 쿼드트리 리프 노드를 생성한다. 쿼드트리 리프 노드는 16×16(즉, MinQTSize)으로부터 128×128(즉, CTU 크기) 까지의 크기를 가질 수 있다. 쿼드트리 노드가 MinQTSize와 같은 크기를 가지는 경우, 더 이상의 쿼드트리는 고려되지 않는다. 리프 쿼드트리 노드가 128×128인 경우, 크기가 MaxBTSize(즉, 64×64)를 초과하므로 2진 트리에 의해 더 이상 분할되지 않는다. 그렇지 않으면, 리프 쿼드트리 노드가 2진 트리에 의해 더 분할될 수 있다. 따라서, 쿼드트리 리프 노드는 2진 트리의 루트 노드이기도 하며 2진 트리 깊이는 0이다. 2진 트리 깊이가 MaxBTDepth(즉, 4)에 도달하는 경우, 더 이상의 분할은 고려되지 않는다. 2진 트리 노드가 MinBTSize(즉, 4)와 같은 폭을 가지는 경우, 더 이상의 수평 분할은 고려되지 않는다. 이와 유사하게, 2진 트리 노드가 MinBTSize와 같은 높이를 가지는 경우, 더 이상의 수직 분할은 고려되지 않는다. 2진 트리의 리프 노드는 추가적인 분할없이 예측 및 변환 처리에 의해 추가로 처리된다. JEM에서, 최대 CTU 크기는 256×256 루마 샘플이다. 2진-트리(CU)의 리프 노드는 추가적인 분할없이 (예컨대, 예측 프로세스 및 변환 프로세스를 수행함으로써) 추가로 처리될 수 있다.
또한, QTBT 체계는 루마와 크로마가 별개의 QTBT 구조를 가지는 기능을 지원한다. 현재, P 및 B 슬라이스의 경우, 하나의 CTU에서 루마 및 크로마 CTB는 동일한 QTBT 구조를 공유할 수 있다. 그러나, I 슬라이스의 경우, 루마 CTB는 QTBT 구조에 의해 CU로 분할되고, 크로마 CTB는 다른 QTBT 구조에 의해 크로마 CU로 분할될 수 있다. 이는, I 슬라이스의 CU는 루마 콤포넌트의 코딩 블록 또는 2개의 크로마 콤포넌트의 코딩 블록으로 구성되고, P 또는 B 슬라이스의 CU는 3개의 색상 콤포넌트 모두의 코딩 블록으로 구성됨을 의미한다.
인코더(200)는 QTBT 구조에 대해 레이트-왜곡 최적화(rate-distortion optimization, RDO) 프로세스를 적용하여 블록 분할을 결정한다.
또한, QT, BT, 및/또는 QTBT 기반 CU 구조를 대체하기 위해 미국 특허 출원 공개 번호 제 20170208336호에서 다중-유형-트리(multi-type-tree, MTT)라는 블록 분할 구조가 제안되었다. MTT 분할 구조는 여전히 재귀적 트리 구조이다. MTT에서, 여러 개의 서로 다른 분할 구조(예컨대, 3개 이상)가 사용된다. 예를 들어, MTT 기법에 따르면, 트리 구조의 각각의 깊이에서 트리 구조의 각각의 개개의 비-리프 노드에 대해 3개 이상의 상이한 분할 구조가 사용될 수 있다. 트리 구조에서 노드의 깊이는 노드로부터 트리 구조의 루트까지의 경로 길이(예컨대, 분할 수)를 나타낼 수 있다. 분할 구조는 일반적으로 블록이 몇 개의 서로 다른 블록으로 나뉠 수 있는지를 나타낼 수 있다. 분할 구조는, 블록을 4개의 블록으로 나눌 수 있는 쿼드-트리 분할 구조, 블록을 2개의 블록으로 나눌 수 있는 2진-트리 분할 구조, 또는 블록을 3개의 블록으로 나눌 수 있는 트리플-트리 분할 구조일 수 있고, 또한 중앙을 통해 블록을 분할하지 않을 수 있는 트리플 트리 분할 구조일 수 있다. 분할 구조는 여러 가지 상이한 분할 유형을 가질 수 있다. 분할 유형은 블록이 어떻게 나뉘는지를 추가로 규정할 수 있으며, 대칭 또는 비대칭 분할, 균일 또는 불균일 분할, 및/또는 수평 또는 수직 분할을 포함한다.
MTT에서, 트리 구조의 각각의 깊이에서, 인코더(200)는 3개의 추가 분할 구조 중 하나로부터 특정 분할 유형을 사용하여 서브-트리를 추가로 분할하도록 구성될 수 있다. 예를 들어, 인코더(100)는 QT, BT, 트리플 트리(TT) 및 다른 분할 구조로부터 특정 분할 유형을 결정하도록 구성될 수 있다. 한 예로서, QT 분할 구조는 정사각형 쿼드-트리 또는 직사각형 쿼드-트리 분할 유형을 포함할 수 있다. 인코더(200)는 블록의 중심에서 수평으로 및 수직으로 절반으로 나눠, 블록을 4개의 동일한 크기의 정사각형 블록으로 분할함으로써, 정사각형 쿼드-트리 분할을 사용하여 정사각형 블록으로 분할할 수 있다. 마찬가지로, 인코더(200)는, 블록의 중심에서 수평으로 및 수직으로 절반으로 나눠, 직사각형 블록을 4개의 동일한 크기의 직사각형 블록으로 분할함으로써, 직사각형 쿼드-트리 파티션을 사용하여 직사각형의(예컨대, 정사각형이 아닌) 블록으로 분할할 수 있다.
BT 분할 구조는 수평 대칭 2진-트리 , 수직 대칭 2진-트리 , 수평 비-대칭 2진-트리 , 또는 수직 비-대칭 2진-트리 분할 유형 중 적어도 하나를 포함할 수 있다. 수평 대칭 2진-트리 분할 유형의 경우, 인코더(200)는 블록의 중심에서 수평으로 절반으로 나눠, 블록을 동일한 크기의 2개의 대칭 블록으로 분할하도록 구성될 수 있다. 수직 대칭 2진-트리 분할 유형의 경우, 인코더(200)는 블록의 중심에서 수직으로 절반으로 나눠, 블록을 동일한 크기의 2개의 대칭 블록으로 분할하도록 구성될 수 있다. 수평 비-대칭 2진-트리 분할 유형의 경우, 인코더(200)는 블록을 서로 다른 크기의 2개의 블록으로 수평으로 분할하도록 구성될 수 있다. 예를 들어, 하나의 블록은 상위 블록의 1/4 크기일 수 있고 다른 블록은 PART_2N×nU 또는 PART_2N×nD 분할 유형과 유사하게 상위 블록의 3/4 크기일 수 있다. 수직 비-대칭 2진-트리 분할 유형의 경우, 인코더(200)는 블록을 서로 다른 크기의 2개의 블록으로 수직으로 분할하도록 구성될 수 있다. 예를 들어, 하나의 블록은 상위 블록의 1/4 크기일 수 있고 다른 블록은 PART_nL×2N 또는 PART_nR×2N 분할 유형과 유사하게 상위 블록의 3/4 크기일 수 있다. 다른 예로서, 비대칭 2진-트리 분할 유형은 상위 블록을 상이한 크기 부분으로 나눌 수 있다. 예를 들어, 하나의 서브-블록은 상위 블록의 3/8일 수 있고 다른 서브-블록은 상위 블록의 5/8일 수 있다. 물론 이러한 분할 유형은 수직 또는 수평일 수 있다.
TT 분할 구조는 TT 분할 구조가 블록을 중앙으로 분할하지 않는다는 점에서 QT 또는 BT 구조와 다르다. 블록의 중앙 영역은 동일한 서브-블록에 함께 남아 있다. 4개의 블록을 생성하는 QT 또는 2개의 블록을 생성하는 2진 트리와 달리, TT 분할 구조에 따라 분할하면 3개의 블록이 생성된다. TT 분할 구조에 따른 분할 유형의 예에는 대칭 분할 유형(수평 및 수직 모두)과 비대칭 분할 유형(수평 및 수직 모두)이 포함된다. 또한, TT 분할 구조에 따른 대칭 분할 유형은 불균등/불균일 또는 균등/균일일 수 있다. TT 분할 구조에 따른 비대칭 분할 유형은 불균등/불균일 하다. 한 예로서, TT 분할 구조는 다음 분할 유형 중 적어도 하나를 포함할 수 있다: 수평으로 균등/균일한 대칭 트리플-트리, 수직으로 균등/균일한 대칭 트리플-트리, 수평으로 불균등/불균일 대칭 트리플-트리, 수직으로 불균등/불균일 대칭 트리플-트리, 수평으로 불균등/불균일 비대칭 트리플-트리, 또는 수직으로 불균등/불균일 비대칭 트리플-트리 분할 유형.
일반적으로, 불균등/불균일 대칭 트리플-트리 분할 유형은 블록의 중심선에 대해 대칭인 분할 유형이지만, 결과적인 3개의 블록 중 적어도 하나는 다른 2개와 크기가 동일하지 않다. 한 가지 바람직한 예로, 측면 블록은 블록의 1/4 크기이고, 중심 블록은 블록의1/2 크기이다. 균등/균일한 대칭 트리플-트리 분할 유형은 블록의 중심선에 대해 대칭인 분할 유형이고, 결과적인 블록은 모두 동일한 크기이다. 이러한 분할은, 수직 또는 수평 분할에 따라 블록 높이 또는 폭이 3의 배수인 경우에 가능하다. 불균등/불균일 비대칭 트리플-트리 분할 유형은 블록의 중심선에 대해 대칭이 아닌 분할 유형이고, 결과적인 블록 중 적어도 하나는 다른 2개와 크기가 동일하지 않다.
블록(예컨대, 서브-트리 노드에서)이 비-대칭 트리플-트리 분할 유형으로 분할되는 예에서, 인코더(200) 및/또는 디코더(300)는 3개의 파티션 중 2개가 동일한 크기를 갖도록 제한을 적용할 수 있다. . 이러한 제한은 비디오 데이터를 인코딩할 때 인코더(200)가 준수해야 하는 제한에 해당할 수 있다. 또한, 일부 예시에서, 인코더(200) 및 디코더(300)는, 비-대칭 트리플-트리 분할 유형에 따라 분할할 때 두 파티션의 면적의 합이 나머지 파티션의 면적과 동일하도록 제한을 적용할 수 있다.
일부 예에서, 인코더(200)는 QT, BT, 및 TT 분할 구조 각각에 대해 전술한 모든 분할 유형들 중에서 선택하도록 구성될 수 있다. 다른 예로서, 인코더(200)는 전술한 분할 유형의 서브세트 중에서 분할 유형만을 결정하도록 구성될 수 있다. 예를 들어, 위에서 논의된 분할 유형(또는 다른 분할 유형)의 서브세트는 특정 블록 크기에 대해 또는 쿼드트리 구조의 특정 깊이에 대해 사용될 수 있다. 지원되는 분할 유형의 서브 세트는 디코더(200)에 의해 사용되기 위해 비트스트림에서 시그널링될 수 있거나 인코더(200) 및 디코더(300)가 임의의 시그널링없이 서브세트를 결정할 수 있도록 미리 정의될 수 있다.
다른 예로서, 지원되는 분할 유형의 수는 모든 CTU의 모든 깊이에 대해 고정될 수 있다. 즉, 인코더(200) 및 디코더(300)는 CTU의 임의의 깊이에 대해 동일한 수의 분할 유형을 사용하도록 미리 구성될 수 있다. 다른 예로서, 지원되는 분할 유형의 수는 다양할 수 있으며, 깊이, 슬라이스 유형, 또는 이전에 코딩된 기타 정보에 따라 달라질 수 있다. 한 예로서, 깊이 0 또는 깊이 1의 트리 구조에서는, QT 분할 구조만 사용된다. 1보다 큰 깊이에서는, QT, BT 및 TT 분할 구조의 각각이 사용될 수 있다.
일부 예에서, 인코더(200) 및/또는 디코더(300)는, 비디오 화상의 특정 영역 또는 CTU의 영역에 대한 중복 분할을 피하기 위해, 지원되는 분할 유형에 대해 미리 구성된 제약 조건을 적용할 수 있다. 한 예로서, 블록이 비-대칭 분할 유형으로 분할되는 경우, 인코더(200) 및/또는 디코더(300)는 현재 블록으로부터 분할된 가장 큰 서브-블록을 더 이상 분할하지 않도록 구성될 수 있다. 예를 들어, 정사각형 블록이 비-대칭 분할 유형에 따라 분할되는 경우 (PART_2N×nU 분할 유형과 유사), 모든 하위 블록 중 가장 큰 하위 블록(PART_2N×nU 분할 유형의 가장 큰 하위 블록과 유사)은 기록된 리프 노드이며 더 이상 분할할 수 없다. 그러나, 더 작은 서브-블록(PART_2N×nU 분할 유형의 더 작은 서브-블록과 유사)은 더 분할될 수 있다.
지원되는 분할 유형에 대한 제약 조건이 특정 영역에 대한 중복 분할을 피하기 위해 적용될 수 있는 또 다른 예로, 블록이 비-대칭 분할 유형으로 분할되는 경우, 현재 블록으로부터 분할된 가장 큰 서브-블록은 동일한 방향에서 더 이상 분할될 수 없다. 예를 들어, 정사각형 블록이 비-대칭 분할 유형에 따라 분할되는 경우 (PART_2N×nU 분할 유형과 유사), 인코더(200) 및/또는 디코더(300)는 가로 방향에서 모든 서브-블록(PART_2N×nU 분할 유형의 가장 큰 서브-블록과 유사) 중에 큰 서브-블록을 분할하지 않도록 구성될 수 있다.
지원되는 분할 유형 상에 제약 조건이 추가적인 분할에서의 어려움을 피하기 위해 적용되는 다른 예로서, 블록의 폭/높이가 2의 거듭제곱이 아닌 경우 (예컨대, 폭/높이가 2, 4, 8, 16, 등이 아닌 경우), 인코더(200) 및/또는 디코더(300)는 수평으로 또는 수직으로 블록을 분할하지 않도록 구성될 수 있다.
위의 예는 MTT 분할을 수행하기 위해 인코더(200)가 어떻게 구성될 수 있는지를 기술한다. 디코더(300)는 인코더(200)에 의해 수행된 것과 동일한 MTT 분할을 또한 적용할 수 있다. 일부 예들에서, 비디오 데이터의 화상이 인코더(200)에 의해 어떻게 분할되었는지는 디코더(300)에서 동일한 세트의 미리 정의된 규칙을 적용함으로써 결정될 수 있다. 그러나, 많은 상황에서, 인코더(200)는 코딩 중인 비디오 데이터의 특정 화상에 대한 레이트-왜곡 기준에 기초하여 사용할 레이트-왜곡 기준을 결정할 수 있다. 이와 같이, 디코더(300)가 특정 화상에 대한 분할을 결정하기 위해, 인코더(200)는 화상, 및 화상의 CTU가 어떻게 분할되는지를 나타내는 인코딩된 비트스트림의 신택스 엘리먼트를 시그널링할 수 있다. 디코더(200)는 그러한 신택스 엘리먼트를 파싱할 수 있고 그에 따라 화상 및 CTU를 분할할 수 있다.
한 예로서, 비디오 인코더(200)의 예측 처리 유닛(260)은, 특히, 모션 추정을 위해, 전술한 분할 기법의 임의의 조합을 수행하도록 구성될 수 있으며, 세부 사항은 후술될 것이다.
화상(201)과 마찬가지로, 블록(103)도 또한, 화상(201)보다는 작은 크기이지만, 세기 값(샘플 값)을 가지는 샘플의 매트릭스 또는 2차원 어레이이거나 이로 간주될 수 있다. 달리 말하면, 블록(203)은, 예를 들어, 하나의 샘플 어레이(예를 들어, 단색 화상(201)의 경우 루마 어레이), 3개의 샘플 어레이 (예를 들어, 색채 화상(201)의 경우 하나의 루마 어레이 및 2개의 크로마 어레이), 또는 적용된 컬러 포맷에 따라 임의의 다른 수 및/또는 종류의 어레이를 포함할 수 있다. 블록(203)의 수평 및 수직 방향(또는 축)의 샘플 수량은 블록(203)의 크기를 규정한다.
도 2에 도시된 바와 같은 인코더(200)는 블록 단위로 화상(201)을 인코딩하도록 구성되며, 예컨대, 인코딩 및 예측은 블록(203)마다 수행된다.
잔차 계산
잔차 계산 유닛(204)은, 화상 블록(203) 및 예측 블록(265)(예측 블록(265)에 대한 더욱 상세한 내용은 추후 제공된다)에 기초하여, 예를 들어, 화상 블록(203)의 샘플 값으로부터 예측 블록(265)의 샘플 값을 차감함으로써 잔차 블록(205)을 계산하여, 샘플 단위로 (픽셀 단위로) 샘플 도메인에서 잔차 블록(205)을 획득하도록 구성된다.
변환
변환 처리 유닛(206)은, 잔차 블록(205)의 샘플 값에 변환을, 예를 들어, 이산 코사인 변환(DCT) 또는 이산 사인 변환(DST)을 적용하여, 변환 도메인에서 변환 계수(207)를 획득하도록 구성된다. 변환 계수(207)는 변환 잔차 계수로도 또한 지칭될 수 있고, 변환 도메인에서 잔차 블록(205)을 표현할 수 있다.
변환 처리 유닛(206)은, HEVC/H.265에 대해 지정된 변환과 같은, DCT/DST의 정수 근사를 적용하도록 구성될 수 있다. 직교 DCT 변환과 비교하여, 이러한 정수 근사는 일반적으로 특정 팩터에 의해 스케일링된다. 순방향 및 역 변환에 의해 처리되는 잔차 블록의 놈(norm)을 보존하기 위해, 추가적인 스케일 팩터가 변환 프로세스의 일부로서 적용된다. 스케일링 팩터는 통상적으로, 시프트 연산에 대해 2의 거듭제곱, 변환 계수의 비트 심도, 정확도 및 구현 비용 사이의 절충, 등, 특정 제약 조건에 기초하여 선택된다. 특정 스케일링 팩터는, 예를 들어, 디코더(300)에서 역 변환 처리 유닛(212)에 의해, 예를 들어, 역 변환에 대해 (그리고, 예를 들어, 인코더 측(100)에서 역 변환 처리 유닛(112)에 의해, 대응하는 역 변환에 대해) 지정되고, 순방향 변환에 대해 대응하는 스케일링 팩터는, 예를 들어, 인코더(200)에서 변환 처리 유닛(206)에 의해, 그에 따라 지정될 수 있다.
양자화
양자화 유닛(208)은, 예를 들어, 스칼라 양자화 또는 벡터 양자화를 적용하여, 변환 계수(207)를 양자화하여 양자화된 변환 계수(209)를 획득하도록 구성된다. 양자화된 변환 계수(209)는 양자화된 잔차 계수(209)로도 또한 지칭될 수 있다. 양자화 프로세스는 변환 계수(207)의 일부 또는 전부와 연관된 비트 깊이를 감소시킬 수 있다. 예를 들어, n-비트 변환 계수는 양자화 동안 m-비트 변환 계수로 반올림될 수 있으며, 여기서 n은 m보다 크다. 양자화의 정도는 양자화 파라미터(QP)를 조정함으로써 수정될 수 있다. 예를 들어, 스칼라 양자화의 경우, 더 미세하거나 거친 양자화를 달성하기 위해 다른 스케일링을 적용할 수 있다. 더 작은 양자화 단계 크기는 더 세밀한 양자화에 해당하고, 더 큰 양자화 단계 크기는 더 거친 양자화에 해당한다. 적용 가능한 양자화 단계 크기는 양자화 파라미터(QP)로 표시될 수 있다. 양자화 파라미터는, 예를 들어, 적용 가능한 양자화 단계 크기의 미리 정의된 세트에 대한 인덱스일 수 있다. 예를 들어, 더 작은 양자화 파라미터는 더 세밀한 양자화(더 작은 양자화 단계 크기)에 대응할 수 있고 더 큰 양자화 파라미터는 더 거친 양자화(더 큰 양자화 단계 크기)에 대응할 수 있으며, 그 반대일 수 있다. 양자화는 양자화 단계 크기에 의한 나눗셈과, 예를 들어 역 양자화(210)에 의해 수행되는 역 양자화 또는 대응하는 양자화를 포함할 수 있거나, 또는 양자화 단계 크기에 의한 곱셈을 포함할 수 있다. 예컨대 HEVC의, 일부 표준에 따른 실시예는, 양자화 단계 크기를 결정하는데 양자화 파라미터를 사용하도록 구성될 수 있다. 일반적으로, 양자화 단계 크기는 나누기를 포함하는 방정식의 고정 소수점 근사를 사용하여 양자화 파라미터에 기초하여 계산될 수 있다. 잔차 블록의 놈(norm)을 복원하기 위해 추가적인 스케일링 팩터가 양자화 및 역양자화에 도입될 수 있고, 여기서 잔차 블록의 놈(norm)은 양자화 파라미터 및 양자화 단계 크기에 대한 수학식의 고정 소수점 근사에서 사용되는 스케일링으로 인해 수정될 수 있다. 하나의 예시적인 구현에서, 역변환 및 역양자화의 스케일링이 조합될 수 있다. 대안적으로, 맞춤형 양자화 테이블이 사용되어 인코더로부터 디코더로, 예를 들어 비트스트림으로 시그널링될 수 있다. 양자화는 손실이 있는 연산으로서, 양자화 단계 크기가 증가함에 따라 손실이 증가한다.
역 양자화 유닛(210)은, 예를 들어, 양자화 유닛(208)과 동일한 양자화 단계 크기에 기초하거나 사용하여 양자화 유닛(208)에 의해 적용되는 양자화 방식의 역을 적용함으로써, 양자화 유닛(208)의 역 양자화를 양자화된 계수에 적용하여 역양자화된 계수(211)를 획득하도록 구성된다. 역양자화된 계수(211)는 역양자화된 잔차 계수(211)로도 또한 지칭될 수 있고, 통상적으로 양자화에 의한 손실 때문에 변환 계수에 동일하지는 않으나, 변환 계수(207)에 대응한다.
역 변환 처리 유닛(212)은, 변환 처리 유닛(206)에 의해 적용되는 변환의 역변환을, 예를 들어, 역 이산 코사인 변환 (DCT) 또는 역 이산 사인 변환(DST)을 적용하여, 샘플 도메인에서 역 변환 블록(213)을 획득하도록 구성된다. 역 변환 블록(213)은 역 변환 역양자화된 블록(213) 또는 역 변환 잔차 블록(213)으로도 또한 지칭될 수 있다.
재구성 유닛(214) (예를 들어, 합산기(214))은, 역 변환 블록(213)(즉, 재구성된 잔차 블록(213))을 예측 블록(265)에 더함으로써, 예를 들어, 재구성된 잔차 블록(213)의 샘플 값 및 예측 블록의 샘플 값(265)을 더함으로써, 샘플 도메인에서 재구성된 블록(215)을 획득하도록 구성된다.
선택사항으로서, 버퍼 유닛(216)(또는 "버퍼"(216)), 예컨대 라인 버퍼(216)는, 일례로 인트라 예측을 위해, 재구성된 블록(215) 및 각각의 샘플 값을 버퍼링하거나 저장하도록 구성된다. 추가적인 실시예에서, 인코더는, 임의의 종류의 추정 및/또는 예측, 예를 들어, 인트라 예측을 위해 버퍼 유닛(216)에 저장된 각각의 샘플 값 및/또는 필터링되지 않은 재구성된 블록을 사용하도록 구성될 수 있다.
인코더(200)의 실시예는, 예를 들어, 버퍼 유닛(216)은 인트라 예측 유닛(254)에 대해 재구성된 블록(215)을 저장하는데 사용될 뿐만 아니라 루프 필터 유닛(220)(도 2에 도시되지 않음)에 대해 또한 사용될 수 있도록, 및/또는 예를 들어, 버퍼 유닛(216) 및 디코딩된 화상 버퍼 유닛(230)이 하나의 버퍼를 형성하도록, 구성될 수 있다. 추가적인 실시예는, 디코딩된 화상 버퍼(230)로부터 필터링된 블록(221) 및/또는 블록 또는 샘플(모두 도 2에 도시되지 않음)을 인트라 예측 유닛(254)에 대한 입력 또는 기초로서 사용하도록 구성될 수 있다.
루프 필터 유닛(220)(또는 "루프 필터"(220))은, 재구성된 블록(215)을 필터링하여 필터링된 블록(221)을 획득함으로써, 픽셀 전환을 부드럽게 하거나 비디오 품질을 향상하도록 구성된다. 루프 필터 유닛(220)는 디-블로킹 필터, 샘플-적응형 오프셋 (SAO) 필터 또는, 예컨대 양방향 필터 또는 적응형 루프 필터 (ALF) 또는 샤프닝(sharpening) 또는 스무딩(smoothing) 필터 또는 협업(collaborative) 필터와 같은 다른 필터와 같은 하나 이상의 루프 필터를 나타내도록 의도된다. 비록 루프 필터 유닛(220)은 도 2에서 인 루프 필터(in loop filter)로서 도시되어 있으나, 다른 구성에서는, 루프 필터 유닛(220)은 포스트 루프 필터(post loop filter)로서 구현될 수 있다. 필터링된 블록(221)은 필터링된 재구성된 블록(221)으로도 또한 지칭될 수 있다. 디코딩된 화상 버퍼(230)는, 루프 필터 유닛(220)이 재구성된 코딩 블록에 필터링 동작을 수행한 후에, 재구성된 코딩 블록을 저장할 수 있다.
인코더(200)(각각 루프 필터 유닛(220))의 실시예는, 예컨대, 디코더(300)는 디코딩을 위해 동일한 루프 필터 파라미터를 수신하고 적용하도록, 예컨대, 직접 또는 엔트로피 인코딩 유닛(270) 또는 임의의 다른 엔트로피 코딩 유닛을 통해 엔트로피 인코딩하여, (샘플 적응형 오프셋 정보와 같은) 루프 필터 파라미터를 출력하도록 구성될 수 있다.
디코딩된 화상 버퍼(DPB)(230)는 비디오 인코더(20)가 비디오 데이터를 인코딩하는데 사용하기 위한 참조 화상 데이터를 저장하는 참조 화상 메모리일 수 있다. DPB(230)는 동기식 DRAM(SDRAM), 자기 저항성 RAM(magnetoresistive RAM, MRAM), 저항성 RAM(resistive RAM, RRAM) 또는 기타 유형의 메모리 장치를 포함하는 동적 랜덤 액세스 메모리(DRAM)와 같은 다양한 메모리 장치로 형성될 수 있다. . DPB(230) 및 버퍼(216)는 동일한 메모리 디바이스 또는 별개의 메모리 디바이스에 의해 제공될 수 있다. 일부 예에서, 디코딩된 화상 버퍼 (DPB)(230)은 필터링된 블록(221)을 저장하도록 구성된다. 디코딩된 화상 버퍼(230)는, 동일한 현재 화상 또는 상이한 화상, 예를 들어, 이전에 재구성된 화상의, 다른 이전에 필터링된 블록, 예를 들어, 이전에 재구성되고 필터링된 블록(221)을 저장하도록 추가로 구성될 수 있고, 완전한 이전에 재구성된, 즉, 디코딩된 화상(및 대응하는 참조 블록 및 샘플) 및/또는 부분적으로 재구성된 현재 화상(및 대응하는 참조 블록 및 샘플)을, 예를 들어, 인터 예측에 제공할 수 있다. 일부 예에서, 재구성된 블록(215)이 인-루프 필터링 없이 재구성되는 경우, 디코딩된 화상 버퍼(DPB)(230)는 재구성된 블록(215)을 저장하도록 구성된다.
블록 예측 처리 유닛(260)으로도 또한 지칭되는 예측 처리 유닛(260)은, 블록(203)(현재 화상(201)의 현재 블록(203)) 및 재구성된 화상 데이터를, 예를 들어, 디코딩된 화상 버퍼(230)로부터 하나 또는 복수의 이전에 디코딩된 화상으로부터, 버퍼(216) 및/또는 참조 화상 데이터(231)로부터 동일한 (현재) 화상의 참조 샘플을, 수신하거나 획득하도록, 그리고 이러한 데이터를 예측을 위해 처리하도록, 즉, 인터 예측 블록(245) 또는 인트라 예측 블록(255)일 수 있는 예측 블록(265)을 제공하도록, 구성된다.
모드 선택 유닛(262)은, 예측 모드(예를 들어, 인트라 또는 인터 예측 모드) 및/또는 잔차 블록(205)의 계산을 위해 그리고 재구성된 블록(215)의 재구성을 위해 예측 블록(265)으로서 사용될 대응하는 예측 블록(245 또는 255)을 선택하도록 구성될 수 있다.
모드 선택 유닛(262)의 실시예는, (예컨대 예측 처리 유닛(260)에 의해 지원되는 것들로부터), 최상 매칭 또는 다른 말로 최소 잔차 (최소 잔차는 전송 또는 저장을 위한 더 나은 압축을 의미한다), 또는 최소 시그널링 오버헤드 (최소 시그널링 오버헤드는 전송 또는 저장을 위한 더 나은 압축을 의미한다)를 제공하거나, 양자를 고려하거나 균형을 이루는, 예측 모드를 선택하도록 구성될 수 있다. 모드 선택 유닛(262)은, 레이트 왜곡 최적화(rate distortion optimization, RDO)에 기초하여 예측 모드를 결정하도록, 즉, 최소 레이트 왜곡 최적화를 제공하는 예측 모드를 선택하거나 관련된 레이트 왜곡 적어도 예측 모드 선택 기준을 만족하는 예측 모드를 선택하도록, 구성될 수 있다.
다음에서, 예시적인 인코더(200)에 의해 수행되는 (예컨대 예측 처리 유닛(260)에 의한) 예측 프로세싱 및 (예컨대 모드 선택 유닛(262)에 의한) 모드 선택이 보다 상세히 설명될 것이다.
위에서 설명한 바와 같이, 인코더(200)는, (기설정된) 예측 모드 세트로부터 최상의 예측 모드 또는 최적의 예측 모드를 결정 또는 선택하도록 구성된다. 예측 모드의 세트는, 예컨대, 인트라-예측 모드 및/또는 인터-예측 모드를 포함할 수 있다.
인트라-예측 모드의 세트는, 35개의 상이한 인트라-예측 모드, 예컨대 DC (또는 평균) 모드 및 평면 모드와 같은 비-방향성 모드, 또는 예컨대 H.265에 규정된 바와 같은, 방향성 모드를 포함할 수 있거나, 67개의 상이한 인트라-예측 모드, 예컨대 DC (또는 평균) 모드 및 평면 모드와 같은 비-방향성 모드, 또는 예컨대 개발중인 H.266에 규정된 바와 같은, 방향성 모드를 포함할 수 있다.
인터-예측 모드의 세트(또는 가능한 인터-예측 모드)는, 사용 가능한 참조 화상(즉, 예컨대 DBP(230)에 저장된, 이전의 적어도 부분적으로 디코딩된 화상) 및 다른 인터-예측 파라미터, 예컨대 참조 화상의, 전체 참조 화상 또는 일부만, 예컨대 현재 블록의 영역 주위의 검색 윈도우 영역이 최상 매칭 참조 블록을 검색하는데 사용되는지 여부, 및/또는 예컨대 1/2 세미-펠(pel) 및/또는 1/4-펠 인터폴레이션과 같은 픽셀 인터폴레이션이 적용되는지 여부에 의존한다.
위의 예측 모드에 추가로, 스킵 모드 및/또는 다이렉트 모드가 적용될 수 있다.
예측 처리 유닛(260)은, 예를 들어, 쿼드-트리-분할(quad-tree-partitioning, QT), 2진 분할(binary partitioning, BT), 트리플-트리-분할(triple-tree-partioning, TT), 또는 이들의 임의의 조합을 반복적으로 사용하여, 블록(203)을 더 작은 블록 분할 또는 서브-블록으로 분할하도록, 그리고 예를 들어, 블록 분할 또는 서브-블록의 각각에 예측을 수행하도록, 추가적으로 구성될 수 있으며, 여기서 모드 선택은 블록 분할 또는 서브-블록의 각각에 적용되는 예측 모드 및 분할된 블록(203)의 트리 구조의 선택을 포함한다.
인터 예측 유닛(244)은 모션 추정(motion estimation, ME) 유닛 및 모션 보상(motion compensation, MC) 유닛(도 2에는 도시하지 않음)을 포함할 수 있다. 모션 추정 유닛은, 화상 블록(203)(현재 화상(201)의 현재 화상 블록(203)) 및 디코딩된 화상(331), 또는 적어도 하나의 또는 복수의 이전에 재구성된 블록, 예를 들어, 하나 또는 복수의 다른/상이한 이전에 디코딩된 화상(331)의 재구성된 블록을, 모션 추정을 위해 수신하거나 획득하도록 구성된다. 예를 들어, 비디오 시퀀스는 현재 화상 및 이전에 디코딩된 화상(331)을 포함할 수 있거나, 달리 말하면, 현재 화상 및 이전에 디코딩된 화상(331)은 비디오 시퀀스를 형성하는 화상의 시퀀스의 일부이거나 이를 형성할 수 있다. 예를 들어, 인코더(200)는, 복수의 다른 화상의 동일한 또는 상이한 화상의 복수의 참조 블록으로부터 참조 블록을 선택하도록, 그리고 참조 블록의 위치 (x, y 좌표)와 현재 블록의 위치 사이의 참조 화상(또는 참조 화상 인덱스) 및/또는 오프셋(공간적 오프셋)을 인터 예측 파라미터로서 모션 추정 유닛(도 2에 도시되지 않음)에 제공하도록, 구성될 수 있다. 이 오프셋은 모션 벡터(MV)로도 지칭된다. 병합은 HEVC에서 사용되는 중요한 모션 추정 도구이며 VVC에 상속된다. 병합 추정을 수행하기 위해, 가장 먼저해야 할 일은, 각각의 목록에 대한 모션 벡터 및 참조 인덱스뿐만 아니라 하나 또는 2개의 참조 화상 목록이 사용되는지 여부에 대한 정보를 포함하는 모든 모션 데이터를 포함하는, 병합 후보 목록을 구성하는 것이다. 병합 후보 목록은 후보에 기초하여 구성된다: a. 5개의 공간적으로 이웃하는 (즉, 이웃하는) 블록으로부터 도출되는 최대 4개의 공간적 병합 후보; b. 2개의 시간적, 공동-위치(co-located) 블록으로부터 도출되는 하나의 시간적 병합 후보; c. 조합된 바이-예측 후보 및 제로(zero) 모션 벡터 후보를 포함하는 추가적인 병합 후보.
인트라 예측 유닛(254)은, 인트라 예측 파라미터, 예를 들어, 선택된 인트라 예측 모드에 기초하여 인트라 예측 블록(155)을 결정하도록 추가적으로 구성된다. 임의의 경우에, 블록에 대한 인트라 예측 모드를 선택한 후, 인트라 예측 유닛(254)은 인트라 예측 파라미터, 즉, 블록에 대해 선택된 인트라 예측 모드를 나타내는 정보를 엔트로피 인코딩 유닛(270)으로 제공하도록 또한 구성된다. 한 예로서, 인트라 예측 유닛(254)은 후술하는 인트라 예측 기법의 임의의 조합을 수행하도록 구성될 수 있다.
엔트로피 인코딩 유닛(270)은, 엔트로피 인코딩 알고리즘 또는 방식(예를 들어, 가변 길이 코딩(VLC) 방식, 컨텍스트 적응형 VLC 방식(CALVC), 산술 코딩 방식, 컨텍스트 적응형 2진 산술 코딩(CABAC), 신택스-기반 컨텍스트-적응형 2진 산술 코딩(SBAC), 확률 간격 분할 엔트로피(PIPE) 코딩 또는 다른 엔트로피 인코딩 방법론 또는 기법)을 양자화된 잔차 계수(209), 인터 예측 파라미터, 인트라 예측 파라미터, 및/또는 루프 필터 파라미터에, 개별로 또는 결합하여(또는 전혀) 적용하여, 출력(272)에 의해 출력될 수 있는 인코딩된 화상 데이터(21)를, 예를 들어, 인코딩된 비트스트림(21)의 형태로 획득하도록 구성된다. 인코딩된 비트스트림(21)은 비디오 디코더(30)로 전송되거나, 비디오 디코더(30)에 의한 추후 전송 또는 검색(retrieval)을 위해 보관될 수 있다. 엔트로피 인코딩 유닛(270)은 코딩 중인 현재의 비디오 슬라이스에 대한 다른 신택스 엘리먼트를 엔트로피 인코딩하도록 추가적으로 구성될 수 있다.
비디오 인코더(200)의 다른 구조적 변형은 비디오 스트림을 인코딩하도록 구성될 수 있다. 예를 들어, 비-변환 기반 인코더(200)는 특정 블록 또는 프레임에 대해 변환 처리 유닛(106) 없이 직접 잔차 신호를 양자화할 수 있다. 다른 구현예에서, 인코더(200)는 단일 유닛으로 결합될 수 있는 양자화 유닛(208) 및 역 양자화 유닛(210)을 포함할 수 있다.
도 3은 본 개시의 기법을 구현하도록 구성된 예시적인 비디오 디코더(300)를 도시한다. 비디오 디코더(300)는, 디코딩된 화상(331)을 획득하기 위해, 예컨대, 인코더(200)에 의해 인코딩된, 인코딩된 화상 데이터(예컨대, 인코딩된 비트스트림)(271)를 수신하도록 구성된다. 디코딩 프로세스 동안, 비디오 디코더(300)은 비디오 데이터를, 예컨대, 인코딩된 비디오 슬라이스의 화상 블록 및 연관된 신택스 엘리먼트를 표현하는 인코딩된 비디오 비트스트림을, 비디오 인코더(200)로부터 수신한다.
도 3의 예에서, 디코더(300)는 엔트로피 디코딩 유닛(304), 역 양자화 유닛(310), 역 변환 처리 유닛(312), 재구성 유닛(314) (예를 들어, 합산기(314)), 버퍼(316), 루프 필터(320), 디코딩된 화상 버퍼(330), 및 예측 처리 유닛(360)을 포함한다. 예측 처리 유닛(360)은 인터 예측 유닛(344), 인트라 예측 유닛(354), 및 모드 선택 유닛(362)을 포함할 수 있다. 일부 예시에서, 비디오 디코더(300)는 도 2의 비디오 인코더(200)에 관해 기술된 인코딩 패스에 일반적으로 역(inverse)인 디코딩 패스를 수행할 수 있다.
엔트로피 디코딩 유닛(304)은, 인코딩된 화상 데이터(271)에 엔트로피 디코딩을 수행하여, 예컨대, 양자화된 계수(309) 및/또는 디코딩된 코딩 파라미터(도 3에는 도시하지 않음), 예컨대, 인터 예측 파라미터, 인트라 예측 파라미터, 루프 필터 파라미터, 및/또는 다른 신택스 엘리먼트 중 (디코딩된) 어느 하나 또는 모두를 획득하도록 구성된다. 엔트로피 디코딩 유닛(304)은 인터 예측 파라미터, 인트라 예측 파라미터 및/또는 다른 신택스 엘리먼트를 예측 처리 유닛(360)으로 전달하도록 구성된다. 비디오 디코더(300)는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 신택스 엘리먼트를 수신할 수 있다.
역 양자화 유닛(310)은 역 양자화 유닛(110)과 기능적으로 동일할 수 있고, 역변환 처리 유닛(312)은 역변환 처리 유닛(112)과 기능적으로 동일할 수 있고, 재구성 유닛(314)은 재구성 유닛(114)과 기능적으로 동일할 수 있고, 버퍼(316)는 버퍼(116)와 기능적으로 동일할 수 있고, 루프 필터(320)는 루프 필터(120)와 기능적으로 동일할 수 있고, 디코딩된 화상 버퍼(330)는 디코딩된 화상 버퍼(130)와 기능적으로 동일할 수 있다.
예측 처리 유닛(360)은 인터 예측 유닛(344) 및 인트라 예측 유닛(354)을 포함할 수 있으며, 여기서 인터 예측 유닛(344)은 기능적으로 인터 예측 유닛(144)에 유사할 수 있고, 인트라 예측 유닛(354)은 기능적으로 인트라 예측 유닛(154)에 유사할 수 있다. 예측 처리 유닛(360)은 통상적으로, 블록 예측을 수행 및/또는 인코딩된 데이터(21)로부터 예측 블록(365)을 획득하도록 그리고 예를 들어, 엔트로피 디코딩 유닛(304)으로부터, 선택된 예측 모드에 관한 예측 관련 파라미터 및/또는 정보를 (명시적으로 또는 함축적으로) 수신하거나 획득하도록, 구성된다.
비디오 슬라이스가 인트라 코딩된 (I) 슬라이스로서 코딩되는 경우, 예측 처리 유닛(360)의 인트라 예측 유닛(354)은, 현재 프레임 또는 화상의 이전에 디코딩된 블록으로부터 시그널링된 인트라 예측 모드 및 데이터에 기초하여 현재의 비디오 슬라이스의 화상 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 비디오 프레임이 인터 인코딩된 (즉, B 또는 P) 슬라이스로서 코딩되는 경우, 예측 처리 유닛(360) 내의 인터 예측 유닛(344)(예를 들어, 모션 보상 유닛)은, 엔트로피 디코딩 유닛(304)으로부터 수신되는 모션 벡터 및 다른 신택스 엘리먼트에 기초하여 현재의 비디오 슬라이스의 비디오 블록에 대한 예측 블록(265)을 생성하도록 구성된다. 인터 예측을 위해, 예측 블록은 참조 화상 목록 중 하나에 있는 참조 화상 중 하나로부터 생성될 수 있다. 비디오 디코더(300)는 DPB(330)에 저장된 참조 화상에 기초하여 디폴트 구성 기법을 사용하여 참조 프레임 목록, 목록 0 및 목록 1을 구성할 수 있다.
예측 처리 유닛(360)은 모션 벡터 및 다른 신택스 엘리먼트를 파싱(parsing)함으로써 현재 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고, 예측 정보를 사용하여 디코딩 중인 현재 비디오 블록에 대한 예측 블록을 생성하도록 구성된다. 예를 들어, 예측 처리 유닛(360)은 수신된 신택스 엘리먼트의 일부를 사용하여, 비디오 슬라이스의 비디오 블록을 코딩하는데 사용되는 예측 모드(예컨대, 인트라 또는 인터 예측), 인터-예측 슬라이스 유형(예컨대, B 슬라이스, P 슬라이스, 또는 GPB 슬라이스), 슬라이스에 대한 참조 화상 목록 중 하나 이상에 대한 구성 정보, 슬라이스의 각각의 인터 인코딩된 비디오 블록에 대한 모션 벡터, 슬라이스의 각각의 인터 코딩된 비디오 블록에 대한 인터 예측 상태, 및 현재 비디오 슬라이스에서 비디오 블록을 디코딩하기 위한 다른 정보를 결정한다.
역 양자화 유닛(310)은, 비트스트림에서 제공되고 엔트로피 디코딩 유닛(304)에 의해 디코딩된 양자화된 변환 계수를 역 양자화(inverse quantize)(즉, 역양자화(dequantize))하도록 구성될 수 있다. 역 양자화 프로세스는, 양자화의 정도(및 마찬가지로, 적용되어야 하는 역 양자화의 정도)를 결정하기 위해 비디오 슬라이스 내의 각각의 비디오 블록에 대해 비디오 인코더(100)에 의해 계산되는 양자화 파라미터의 사용을 포함할 수 있다.
역 변환 처리 유닛(312)은, 변환 계수에 역 변환(예를 들어, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역 변환 프로세스)을 적용하여 픽셀 도메인에서 잔차 블록을 생성하도록 구성된다.
재구성 유닛(314)(예를 들어, 합산기(314))은, 역 변환 블록(313)(즉, 재구성된 잔차 블록(313))을 예측 블록(365)에 합하여, 예를 들어, 재구성된 잔차 블록(313)의 샘플 값 및 예측 블록(365)의 샘플 값을 더함으로써, 재구성된 블록(315)을 샘플 도메인에서 획득하도록 구성된다.
루프 필터 유닛(320)은 (코딩 루프 중에 또는 코딩 루프 이후에), 필터 재구성된 블록(315)을 필터링하여 필터링된 블록(321)을 획득함으로써, 픽셀 전환을 부드럽게 하거나 비디오 품질을 향상하도록 구성된다. 한 예로서, 루프 필터 유닛(320)은 후술하는 필터링 기법의 임의의 조합을 수행하도록 구성될 수 있다. 루프 필터 유닛(320)는 디-블로킹 필터, 샘플-적응형 오프셋 (SAO) 필터 또는, 예컨대 양방향 필터 또는 적응형 루프 필터 (ALF) 또는 샤프닝(sharpening) 또는 스무딩(smoothing) 필터 또는 협업(collaborative) 필터와 같은 다른 필터와 같은 하나 이상의 루프 필터를 나타내도록 의도된다. 비록 루프 필터 유닛(320)은 도 3에서 인 루프 필터(in loop filter)로서 도시되어 있으나, 다른 구성에서는, 루프 필터 유닛(320)은 포스트 루프 필터(post loop filter)로서 구현될 수 있다.
주어진 프레임 또는 화상 내의 디코딩된 비디오 블록(321)은, 이후의 모션 보상에 사용되는 참조 화상를 저장하는, 디코딩된 화상 버퍼(330)에 저장된다.
디코더(300)는 사용자에게 표현 또는 보기를 위해, 예컨대, 출력(312)을 통해 디코딩된 화상(311)을 출력하도록 구성된다.
비디오 디코더(300)의 다른 변형은 압축된 비트스트림을 디코딩하는데 사용될 수 있다. 예를 들어, 디코더(300)는 루프 필터링 유닛(320) 없이 출력 비디오 스트림을 생성할 수 있다. 예를 들어, 비-변환 기반 디코더(300)는 특정 블록 또는 프레임에 대해 역 변환 처리 유닛(312) 없이 직접 잔차 신호를 역 양자화할 수 있다. 다른 구현에서, 비디오 디코더(300)는 단일 유닛으로 결합될 수 있는 역-양자화 유닛(310) 및 역-변환 처리 유닛(312)을 가질 수 있다.
도 4는 본 개시의 실시예에 따른 네트워크 디바이스(400)(예컨대, 코딩 디자이스)의 개략도이다. 네트워크 디바이스(400)는 여기에 개시된 실시예를 구현하는데 적합하다. 일 실시예로서, 네트워크 디바이스(400)는 도 1a의 비디오 디코더(30)와 같은 디코더 또는 도 1a의 비디오 인코더(20)와 같은 인코더일 수 있다. 일 실시예로서, 네트워크 디바이스(400)는 전술한 바와 같은 도 1a의 비디오 디코더(30) 또는 도 1a의 비디오 인코더(20)의 하나 이상의 콤포넌트일 수 있다.
네트워크 디바이스(400)는, 데이터를 수신하기 위한 입구 포트(410) 및 수신기 유닛(Rx)(420); 데이터를 처리하기 위한 프로세서, 논리 유닛, 또는 중앙 처리 장치(CPU)(430); 데이터를 전송하기 위한 송신기 유닛(Tx)(440) 및 출구 포트(450); 및 데이터를 저장하기 위한 메모리(460)를 포함한다. 네트워크 디바이스(400)는 광학적 또는 전기적 신호의 유출 또는 유입을 위해 입구 포트(410), 수신기 유닛(420), 송신기 유닛(440), 및 출구 포트(450)에 연결되는 광-전기(OE; optical-to-electrical) 콤포넌트 및 전기-광(EO; electrical-to-optical) 콤포넌트를 또한 포함할 수 있다.
프로세서(430)는 하드웨어 및 소프트웨어로 구현된다. 프로세서(430)는 하나 이상의 CPU 칩, 코어(예를 들어, 멀티-코어 프로세서), FPGA, ASIC, 및 DSP로 구현될 수 있다. 프로세서(430)는 입구 포트(410), 수신기 유닛(420), 송신기 유닛(440), 출구 포트(450), 및 메모리(460)와 통신한다. 프로세서(430)는 코딩 모듈(470)을 포함한다. 코딩 모듈(470)은 위에서 설명된 개시된 실시예들을 구현한다. 예를 들어, 코딩 모듈(470)은 다양한 코딩 동작을 구현, 처리, 준비 또는 제공한다. 코딩 모듈(470)을 포함함으로써 네트워크 디바이스(400)의 기능에 상당한 향상이 제공되고 네트워크 디바이스(400)의 상이한 상태로의 변환에 영향을 끼친다. 대안적으로, 코딩 모듈(470)은 메모리(460)에 저장되고 프로세서(430)에 의해 실행되는 명령어로서 구현된다.
메모리(460)는 하나 이상의 디스크, 테이프 드라이브, 및 고체 드라이브를 포함하고, 프로그램이 실행을 위해 선택될 때 프로그램을 저장하고, 프로그램 실행 중에 판독되는 명령 및 데이터를 저장하기 위해 오버-플로우 데이터 저장 장치로서 사용될 수 있다. 메모리(460)는 휘발성 및/또는 비휘발성 메모리일 수 있으며, ROM(read-only memory), RAM(random-access memory), TCAM(ternary content-addressable memory) 및/또는 SRAM(static random-access memory)일 수 있다.
도 5는 예시적인 일 실시예에 따른 도 1a로부터 소스 디바이스(12) 및 데스티네이션 디바이스(14) 중 하나 또는 양자 모두로서 사용될 수 있는 장치(500)의 단순화된 블록도이다. 장치(500)는 본 개시의 기법을 구현할 수 있다. 장치(500)는, 다중 컴퓨팅 디바이스를 포함하는 컴퓨팅 시스템의 형태, 또는 예를 들어, 휴대 전화, 태블릿 컴퓨터, 랩 탑 컴퓨터, 노트북 컴퓨터, 데스크탑 컴퓨터, 등의 단일 컴퓨팅 디바이스의 형태일 수 있다.
장치(500)의 프로세서(502)는 중앙 처리 장치일 수 있다. 대안적으로, 프로세서(502)는, 정보를 조작 또는 처리할 수 있는, 하나 이상의 기존의 또는 향후에 개발될 하나의 디바이스 또는 다중 디바이스의 임의의 다른 유형일 수 있다. 비록 개시된 구현예가 예컨대 프로세서(502)와 같은 단일 프로세서로 실현될 수 있으나, 속도 및 효율의 이점은 둘 이상의 프로세서를 사용하여 달성될 수 있다.
장치(500)의 메모리(504)는 구현예에서 판독 전용 메모리(ROM) 디바이스 또는 랜덤 액세스 메모리(RAM) 디바이스일 수 있다. 임의의 다른 적절한 유형의 저장 장치가 메모리(504)로서 사용될 수 있다. 메모리(504)는 버스(512)를 사용하여 프로세서(502)에 의해 액세스되는 코드 및 데이터(506)를 포함할 수 있다. 메모리(504)는 운영 체제(508) 및 응용 프로그램(510)을 더 포함할 수 있으며, 응용 프로그램(510)은 프로세서(502)가 여기에 기술된 방법을 수행하도록 허용하는 적어도 하나의 프로그램을 포함한다. 예를 들어, 응용 프로그램(510)은, 여기에 기술된 방법을 수행하는 비디오 코딩 애플리케이션을 더 포함하는, 애플리케이션 1 내지 N을 포함할 수 있다. 장치(500)는 예를 들어 모바일 컴퓨팅 장치와 함께 사용되는 메모리 카드일 수 있는 2차 스토리지(514) 형태의 추가적인 메모리를 또한 포함할 수 있다. 비디오 통신 세션은 상당한 양의 정보를 포함할 수 있기 때문에, 그것들은 전체적으로 또는 부분적으로 2차 스토리지(514)에 저장될 수 있고 처리를 위해 필요에 따라 메모리(504)에 로딩될 수 있다.
장치(500)는 디스플레이(518)와 같은 하나 이상의 출력 디바이스를 또한 포함할 수 있다. 예로서, 디스플레이(518)는, 한 예로서, 디스플레이 및 터치 입력을 감지하여 작동하는 터치-감응 엘리먼트를 결합하는 터치 감응 디스플레이일 수 있다. 디스플레이(518)는 버스(512)를 통해 프로세서(502)에 연결될 수 있다. 사용자가 프로그래밍하거나 장치(500)을 사용하도록 허용하는 다른 출력 디바이스가 디스플레이(518)에 추가로 또는 그 대안으로서 제공될 수 있다. 출력 디바이스가 디스플레이이거나 이를 포함하는 경우, 디스플레이는 액정 디스플레이(liquid crystal display, LCD), 음극선 관(cathode-ray tube, CRT) 디스플레이, 플라즈마 디스플레이 또는 유기 발광 다이오드(organic LED, OLED) 디스플레이와 같은 발광 다이오드(light emitting diode, LED)를 포함하여 다양한 방식으로 구현될 수 있다.
장치(500)는 또한 이미지-센싱 디바이스(image-sensing device)(520), 예를 들어, 카메라, 또는 사용자 조작 장치(user operating apparatus)(500)의 이미지와 같은 이미지를 감지할 수 있는 현재 존재하거나 이후에 개발될 임의의 다른 이미지-센싱 디바이스(520)를 포함하거나 그와 통신할 수 있다. 이미지-센싱 디바이스(520)는 사용자 조작 장치(500)를 향하도록 위치될 수 있다. 일 예에서, 이미지-센싱 디바이스(520)의 위치 및 광학 축은 시야(field of vision)가, 디스플레이(518)에 직접 인접하면서 또한 디스플레이(518)가 보이는 영역을 포함하도록 구성될 수 있다.
장치(500)는 또한 음향-센싱 디바이스(sound-sensing device)(522), 예를 들어, 마이크로폰, 또는 장치(500) 근처에서 소리를 감지할 수 있는 현재 존재하거나 이후에 개발될 임의의 다른 음향-센싱 디바이스를 포함하거나 그와 통신할 수 있다. 음향-센싱 디바이스(522)는 사용자 조작 장치(500)를 향하도록 위치할 수 있고, 사용자가 장치(500)를 조작하는 동안 사용자에 의해 만들어진 사운드, 예를 들어, 스피치(speech) 또는 기타 발화(utterance)를 수신하도록 구성될 수 있다.
비록 도 5는 장치(500)의 프로세서(502) 및 메모리(504)를 단일 유닛으로 통합된 것으로 도시하지만, 다른 구성이 활용될 수 있다. 프로세서(502)의 동작은, 서로 직접 또는 로컬 영역 또는 다른 네트워크를 통해 연결되는 복수의 머신(각각의 머신은 하나 이상의 프로세서를 가진다)에 분산될 수 있다. 메모리(504)는 네트워크 기반 메모리 또는 장치(500)의 동작을 수행하는 다수의 머신의 메모리와 같은 다수의 머신에 걸쳐 분산될 수 있다. 여기서는 단일 버스로 도시되어 있지만, 장치(500)의 버스(512)는 다중 버스로 구성될 수 있다. 또한, 2차 스토리지(514)는 장치(500)의 다른 구성 요소에 직접 결합될 수 있거나 네트워크를 통해 액세스될 수 있고, 메모리 카드와 같은 단일 통합 유닛 또는 다중 메모리 카드와 같은 다중 유닛을 포함할 수 있다. 따라서 장치(500)는 매우 다양한 구성으로 구현될 수 있다.
하나 이상의 예에서, 설명된 기능은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능은 컴퓨터가 판독 가능한 매체에 하나 이상의 명령 또는 코드로 저장되거나 전송될 수 있으며 하드웨어 기반 처리 디바이스에 의해 실행될 수 있다. 컴퓨터-판독 가능한 매체는, 데이터 저장 매체와 같은 유체물의 매체에 해당하는 컴퓨터-판독 가능한 저장 매체, 또는 (예컨대 통신 프로토콜에 따라) 컴퓨터 프로그램을 한 장소에서 다른 장소로 전송하는 것을 용이하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수 있다. 이러한 방식으로, 컴퓨터-판독 가능한 매체는 일반적으로 (1) 유체물의 컴퓨터-판독 가능한 저장 매체 또는 (2) 신호 또는 캐리어와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 출원에 기술된 기술의 구현을 위한 명령, 코드 및/또는 데이터 구조를 검색(retrieve)하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터-판독 가능한 매체를 포함할 수 있다.
모션 보상, 인트라 예측 및 루프 필터와 같은 비디오 압축 기법이 효과적인 것으로 입증되어 H.264/AVC 및 H.265/HEVC와 같은 다양한 비디오 코딩 표준에 채택되었다. 인트라 예측은 사용 가능한 참조 화상이 없거나 현재 블록 또는 화상에 대해 인터 예측 코딩이 사용되지 않을 때 (예컨대, I 프레임 또는 I 슬라이스) 사용될 수 있다. 인트라 예측의 참조 샘플은 일반적으로 동일한 화상에서 이전에 코딩된 (또는 재구성된) 이웃하는 블록에서 파생된다. 예를 들어, H.264/AVC 및 H.265/HEVC에서, 인접한 블록의 경계 샘플은 인트라 예측을 위한 참조로서 사용된다. 상이한 텍스처 또는 구조적 특성을 다루기 위해, 상이한 인트라 예측 모드가 있다. 각각의 모드에서, 상이한 예측 신호 도출 방법이 사용된다. 예를 들어, H.265/HEVC는 도 6에 도시된 바와 같이 총 35개의 인트라 예측 모드를 지원한다.
H.265/HEVC의 인트라 예측 알고리즘 설명
인트라 예측의 경우, 인접한 블록의 디코딩된 경계 샘플이 참조로 사용한다. 인코더는 35개의 옵션(33개의 방향성 예측 모드, DC 모드 및 평면 모드)에서 각각의 블록의 최상의 루마 인트라 예측 모드를 선택한다. 인트라 예측 방향 및 인트라 예측 모드 번호 사이의 맵핑은 도 6에 명시되어 있다. 65개의 또는 그 이상의 인트라 예측 모드가 최신 비디오 코딩 기술(예컨대, VVC(versatile video coding))에서 개발되어 자연 비디오에서 제공되는 임의의 가장자리 방향을 캡처할 수 있다는 점에 유의해야 한다.
도 7에 도시된 바와 같이, 블록 "CUR"은 예측할 현재 블록이며, 인접한 구성 블록의 경계(현재 블록의 왼쪽 및 위)를 따라 회색 샘플이 참조 샘플로서 사용된다. 예측 신호는 인트라 예측 모드에 의해 표시되는 특정 방법에 따라 참조 샘플을 맵핑함으로써 도출될 수 있다.
도 7을 참조하면, W는 현재 블록의 폭이고, H는 현재 블록의 높이이다. W1은 상단 참조 샘플의 수이다. H1은 좌측 참조 샘플의 수이다. 일반적으로, W1>W, 및 H1>H이고, 이는, 상단 참조 샘플은 상단-우측 참조 (이웃하는) 샘플을 또한 포함하고, 좌측 참조 샘플은 좌측-하단 참조 (이웃하는) 샘플을 또한 포함함을 의미한다. 예를 들어, H1 = 2*H, W1 = 2*W, 또는 H1= H+W, W1 = W+H이다.
참조 샘플은 항상 사용할 수 있는 것은 아니다. 도 8에 도시된 바와 같이, 예를 들어, 가용성 확인 프로세스 후, W2 샘플은 현재 블록의 상단 또는 위에서 사용 가능하고 H2 샘플은 현재 블록의 좌쪽에서 사용 가능하다. W3 샘플은 상단에서 사용 불가하고, H3 샘플은 좌측에서 사용 불가하다.
이러한 사용 불가한 샘플은 예측 신호를 얻기 전에 사용 가능한 샘플을 사용하여 대체(또는 패딩)해야 한다. 예를 들어, 사용 불가한 샘플은 시계 방향으로 참조 샘플을 스캔하고 사용 불가한 샘플에 대해 사용 가능한 최신 샘플 값을 사용하여 대체된다. 좌측 참조 샘플의 아래 부분은, 사용 불가한 경우 가장 가까운 사용 가능한 참조 샘플 값으로 대체된다.
참조 샘플 가용성 확인
참조 샘플 가용성 확인은 참조 샘플이 사용 가능한지 여부를 확인하는 것을 의미한다. 예를 들어, 참조 샘플이 재구성된 경우, 참조 샘플은 사용 가능하다.
기존 방법에서는, 일반적으로, 가용성 확인 프로세스는 루마 샘플을 확인하여 수행되며, 이는, 크로마 콤포넌트의 블록의 경우에도, 참조 샘플 가용성은 대응하는 루마 샘플의 가용성을 확인함으로써 도출됨을 의미한다.
본 개시에서 제안하는 방법에서, 블록에 대해, 참조 샘플 가용성 확인 프로세스는 그 자신의 콤포넌트의 샘플을 확인함으로써 수행된다. 여기서, 콤포넌트는 Y 콤포넌트, Cb 콤포넌트, 또는 Cr 콤포넌트일 수 있다. 제안된 방법에 따르면, 블록에 대해, 참조 샘플 가용성 확인 프로세스는 그 대응하는 컴포넌트의 샘플을 확인함으로써 수행된다. 여기서 콤포넌트는 루마 콤포넌트, 또는 크로마 콤포넌트일 수 있으며, 이는 Cb 콤포넌트 및 Cr 콤포넌트를 모두 포함할 수 있다. 여기서, Cb 콤포넌트 및 Cr 콤포넌트는 크로마 콤포넌트로 지칭되고, 가용성 확인 프로세스에서 구별되지 않는다.
본 발명에서는 다음 두 가지 측면을 강조하여 일련의 방법을 제시한다.
본 개시의 제1 측면에 따르면, 블록에 대해, 참조 샘플 가용성 확인 프로세스는 그 자신의 콤포넌트의 샘플을 확인함으로써 수행된다. 여기서, 콤포넌트는 Y 콤포넌트, Cb 콤포넌트, 또는 Cr 콤포넌트일 수 있다.
Y 블록의 경우, Y 블록의 참조 샘플의 가용성은, 참조 샘플이 사용 가능한지 여부를 확인함으로써, 예컨대, 참조 샘플이 재구성되었는지 여부를 확인함으로써 도출된다.
Cb 블록의 경우, Cb 블록의 참조 샘플의 가용성은, 참조 샘플이 사용 가능한지 여부를 확인함으로써, 예컨대, 참조 샘플이 재구성되었는지 여부를 확인함으로써 도출된다.
Cr 블록의 경우, Cr 블록의 참조 샘플의 가용성은, 참조 샘플이 사용 가능한지 여부를 확인함으로써, 예컨대, 참조 샘플이 재구성되었는지 여부를 확인함으로써 도출된다.
본 개시의 제2 측면에 따르면, 블록에 대해, 참조 샘플 가용성 확인 프로세스는 이의 대응하는 콤포넌트의 샘플을 확인함으로써 수행된다. 여기서, 콤포넌트는 루마 콤포넌트, 또는 크로마 콤포넌트일 수 있다. Y 콤포넌트는 루마 콤포넌트로 지칭된다. Cb 콤포넌트 및 Cr 콤포넌트는 모두 크로마 콤포넌트로 지칭된다. 여기서, Cb 콤포넌트 및 Cr 콤포넌트는 가용성 확인 프로세스에서 구별되지 않는다.
루마 블록의 경우, 루마 블록의 참조 샘플의 가용성은, 참조 샘플이 사용 가능한지 여부를 확인함으로써, 예컨대, 참조 샘플이 재구성되었는지 여부를 확인함으로써 도출된다.
크로마 블록의 경우, 크로마 블록의 참조 샘플의 가용성은, 참조 샘플이 사용 가능한지 여부를 확인함으로써, 예컨대, 참조 샘플이 재구성되었는지 여부를 확인함으로써 도출된다.
기존 해결 수단에서, 블록에 대해, 참조 샘플 가용성 확인 프로세스는 블록이 속한 콤포넌트에 관계없이 항상 루마 샘플을 확인함으로써 수행된다. 반면, 본 개시에서 제안되는 방법에서, 상이한 콤포넌트에 속하는 블록에 대해, 이들의 참조 샘플 가용성 확인 프로세스는 상이한 콤포넌트 샘플를 확인함으로써 수행된다.
여기서, 본 개시에서 제안되는 방법은 인트라 예측 모드로서 코딩된 블록의 참조 샘플의 가용성을 도출하는데 사용된다. 방법은 도 2 및 도 3에 각각 도시된 인트라 예측 모듈(254 또는 354)에 의해 수행될 수 있다. 따라서, 이 방법은 디코더 측과 인코더 측 모두에 존재한다. 그리고, 블록의 참조 샘플에 대한 가용성 확인 프로세스는 인코더와 디코더에서 동일하다.
도 9는 본 개시의 예시적인 실시예에 따라 재구성된 신호를 도출하기 위한 방법을 도시하는 단순화된 흐름도이다. 도 9을 참조하면, 인트라 예측 모드로 코딩된 블록에 대해, 재구성된 블록(또는 신호, 또는 샘플)을 획득하기 위해, 방법은 먼저 블록의 예측(또는 예측 신호 또는 샘플)을 획득하는 단계(901)를 포함한다. 그 후, 방법은 블록의 잔차(또는 잔차 신호)를 획득하는 단계(902)를 포함한다. 그 다음, 방법은 현재 블록의 예측에 잔차를 더함으로써 재구성된 블록을 도출하는 단계(903)를 포함한다.
도 10은 본 개시의 예시적인 일 실시예에 따른 예측(또는 예측 신호) 도출의 단순화된 흐름도이다. 도 10을 참조하면, 예측 신호를 획득하기 위해, 방법은 우선, 평면 모드, 또는 DC 모드 등과 같은, 현재 블록의 인트라 예측 모드를 획득하는 단계(1001)를 포함한다. 그 후, 방법은 현재 블록의 콤포넌트의 참조 샘플의 가용성을 도출하는 단계를 포함한다(1002). 일 실시예로서, 콤포넌트는 Y 콤포넌트, Cb 콤포넌트 또는 Cr 콤포넌트를 포함한다. 다른 실시예에서, 콤포넌트는 루마 콤포넌트, 또는 크로마 콤포넌트를 포함한다. 방법은 이웃하는 Y 블록 내의 Y 샘플의 가용성을 확인함으로써 참조 샘플의 가용성을 도출-여기서 이웃하는 Y 블록은 참조 샘플을 포함함-, 또는 이웃하는 Cb 블록 내의 Cb 샘플의 가용성을 확인함으로써 참조 샘플의 가용성을 도출-여기서 이웃하는 Cb 블록은 참조 샘플을 포함함-; 또는 이웃하는 Cr 블록 내의 Cr 샘플의 가용성을 확인함으로써 참조 샘플의 가용성을 도출-여기서 이웃하는 Cr 블록은 참조 샘플을 포함함-할 수 있다.
방법이 사용 불가한 참조 샘플이 존재하는 것으로 판단하는 경우 (1003에서 "예"), 방법은 사용 가능한 참조 샘플을 사용하여 사용 불가한 참조 샘플을 대체 또는 패딩하는 단계(1004)를 포함한다. 그 후, 방법은 인트라 예측 모드 및 대체된 참조 샘플에기초하여 블록의 예측을 도출하는 단계(1005)를 포함한다. 1003에서, 방법이 사용 불가한 참조 샘플이 존재하지 않는 것으로 판단하는 경우 (1003에서 "아니오"), 방법은 1005로 이동하며, 이는 인트라 예측 모드 및 사용 가능한 참조 샘플에 기초하여 현재 블록의 예측을 도출하는 단계를 포함한다. 1006에서, 방법은 예측에 기초하여 현재 블록을 재구성하는 단계를 포함한다.
여기서, 이하에서 기술되는 본 개시 내용의 실시예들은 예측 신호 프로세스를 도출하고 참조 샘플 가용성 확인 프로세스를 개선하는 프로세스에 관한 것임을 주목한다.
실시예 1
이 실시예에서, 가용성 확인 프로세스는 그 자신의 콤포넌트의 샘플을 확인함으로써 수행된다.
도 10을 참조하면, 인트라 예측 모드로 코딩된 블록에 대해, 예측 신호를 획득하기 위해, 방법은 다음을 포함한다:
단계 1: 인트라 예측 모드를 획득(1001)
인트라 예측 모드는 비트스트림에서 인트라 예측 모드 관련 신택스를 파싱하여 획득된. 예를 들어, Y 블록의 경우, intra_luma_mpm_flag, intra_luma_mpm_idx, 또는 intra_luma_mpm_remainder가 파싱된다. Cb 또는 Cr 블록의 경우, intra_chroma_pred_mode 신호가 파싱된다. 그 후, 현재 블록의 인트라 예측 모드는 파싱된 신택스를 사용하여 도출될 수 있다.
단계 2: 참조 샘플 가용성 확인 프로세스를 수행(1002)
이 단계는 현재 블록의 참조 샘플의 가용성을 확인하는 것을 포함한다.
일 실시예로서, 블록이 Y 블록인 경우, 참조 샘플 가용성은 Y 콤포넌트의 참조 샘플을 확인함으로써 도출된다. 대안적으로, 참조 샘플 가용성은, 이웃하는 Y 샘플을 확인함으로써, 예를 들어, 이웃하는 Y 블록의 경계 샘플을 확인함으로써, 도출된다.
일 실시예로서, 블록이 Cb 블록인 경우, 참조 샘플 가용성은 Cb 콤포넌트의 참조 샘플을 확인함으로써 도출된다. 대안적으로, 참조 샘플 가용성은, 이웃하는 Cb 샘플을 확인함으로써, 예를 들어, 이웃하는 Cb 블록의 경계 샘플을 확인함으로써, 도출된다.
일 실시예로서, 블록이 Cr 블록인 경우, 참조 샘플 가용성은 Cr 콤포넌트의 참조 샘플을 확인함으로써 도출된다. 대안적으로, 참조 샘플 가용성은, 이웃하는 Cr 샘플을 확인함으로써, 예를 들어, 이웃하는 Cr 블록의 경계 샘플을 확인함으로써, 도출된다.
단계 3: 사용 불가한 참조 샘플이 존재하는지 여부를 판단(1003)
1003에서, 방법은 사용 불가한 참조 샘플이 있는지 여부를 판단하는 것을 포함한다. 방법이 사용 불가한 참조 샘플이 있는 것으로 판단하는 경우, 방법은 단계 4(1004)로 이동하고, 그렇지 않으면, 방법은 단계 5(1005)로 이동한다.
단계 4: 참조 샘플 대체(1004)
참조 샘플 대체는 사용 가능한 참조 샘플의 값을 사용하여 사용 불가한 참조 샘플의 샘플 값을 도출하는 것을 의미한다. 일 실시예로서, 사용 불가한 샘플은 시계 방향으로 참조 샘플을 스캔하고 사용 불가한 샘플에 대해 사용 가능한 최신 샘플 값을 사용하여 대체된다. 왼쪽 참조 샘플의 아래 부분은 사용 불가한 경우 가장 가까운 사용 가능한 참조 샘플 값으로 대체된다.
단계 5: 예측 신호를 유도(1005)
참조 샘플 및 인트라 예측 모드를 획득한 후, 예측 신호는 맵핑 참조 샘플을 현재 블록에 맵핑함으로써 도출될 수 있으며, 맵핑 방법은 인트라 예측 모드에 의해 표시된다.
현재 블록의 예측 신호를 도출한 후, 현재 블록의 재구성된 신호는 도출된 예측 신호에 잔차 신호를 더함으로써 도출될 수 있다(도 9의 903).
여기서, 현재 블록이 재구성된 후, 블록 영역의 샘플은 도 11에 도시된 바와 같이 "사용 가능"으로 마킹될 수 있음에 유의해야 한다. 즉, 현재 블록이 Y 블록인 경우, 블록 영역에 의해 커버되는 위치에서 모든 Y 샘플이 사용 가능하고, 현재 블록이 Cb 블록인 경우, 블록 영역에 의해 커버되는 위치에서 모든 Cb 샘플이 사용 가능하고, 현재 블록이 Cr 블록인 경우, 블록 영역에 의해 커버되는 위치에서 모든 Cr 샘플이 사용 가능하다.
이들 섹션의 사양의 예시는 다음과 같다.
참조 샘플 가용성 마킹 프로세스
이 프로세스에 대한 입력은 다음과 같다:
현재 화상의 좌측 상단 샘플을 기준으로 현재 변환 블록의 좌측 상단 샘플을 지정하는 샘플 위치 ( xTbCmp, yTbCmp ),
- 인트라 예측 참조 라인 인덱스를 지정하는 변수 refIdx,
- 참조 샘플 폭을 지정하는 변수 refW,
- 참조 샘플 높이를 지정하는 변수 refH,
- 현재 블록의 색상 콤포넌트를 지정하는 변수 cIdx.
이 프로세스의 출력은, 인트라 샘플 예측에 대해 x = -1 - refIdx, y = -1 - refIdx..refH - 1 및 x = -refIdx..refW - 1, y = -1 - refIdx인 참조 샘플 refUnfilt[ x ][ y ]이다.
x = -1 - refIdx, y = -1 - refIdx..refH - 1 및 x = -refIdx..refW - 1, y = -1 - refIdx인, 인-루프 필터 프로세스에 앞서 구성된 샘플인 refW + refH + 1 + ( 2 * refIdx ) 이웃하는 샘플 refUnfilt[ x ][ y ]는 다음과 같이 도출된다:
- 이웃하는 위치 ( xNbCmp, yNbCmp )는 다음과 같이 지정된다:
Figure pct00001
(310)
- 6.4.4절에 지정된 이웃 블록 가용성에 대한 도출 프로세스는, 현재 샘플 위치 ( xCurr, yCurr )는 ( xTbCmp, yTbCmp )와 같도록 설정되고, 이웃하는 샘플 위치 ( xNbCmp, yNbCmp ), checkPredModeY는 FALSE와 같도록 설정되고, cIdx는 입력으로 설정되어 호출되고, 출력은 availableN로 할당된다.
- 각각의 샘플 refUnfilt[ x ][ y ]는 다음과 같이 도출된다:
- availableN가 FALSE와 같은 경우, 샘플 refUnfilt[ x ][ y ]는 "인트라 예측에 사용 불가"로 마킹된다.
- 그렇지 않으면, 샘플 refUnfilt[ x ][ y ]은 "인트라 예측에 사용 가능"으로 마킹되고, 위치 ( xNbCmp, yNbCmp )의 샘플이 refUnfilt[ x ][ y ]에 할당된다.
이웃 블록 가용성에 대한 유도 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 현재 화상의 좌측 상단 샘플을 기준으로 현재 블록의 좌측 상단 샘플의 샘플 위치 ( xCurr, yCurr ),
- 현재 화상의 좌측 상단 루마 샘플을 기준으로 이웃 블록에 포함되는 샘플 위치 ( xNbCmp, yNbCmp ),
- 가용성이 예측 모드에 따라 달라지는지 여부를 지정하는 변수 checkPredModeY,
- 현재 블록의 색상 콤포넌트를 지정하는 변수 cIdx.
이 프로세스의 출력은 availableN로 표시되는, 위치 ( xNbCmp, yNbCmp )을 포함하는 이웃 블록의 가용성이다.
현재 루마 위치 ( xTbY, yTbY ) 및 이웃하는 루마 위치 ( xNbY, yNbY )는 다음과 같이 도출된다:
Figure pct00002
이웃 블록 가용성 availableN는 다음과 같이 도출된다:
- 다음 조건 중 하나 이상이 참인 경우, availableN는 FALSE로 설정된다:
- xNbCmp는 0보다 작다.
- yNbCmp는 0보다 작다.
- xNbY는 pic_width_in_luma_samples보다 크거나 같다.
- yNbY는 pic_height_in_luma_samples보다 크거나 같다.
- IsAvailable[ cIdx ][ xNbCmp ][ yNbCmp ]는 FALSE와 같다.
- 이웃 블록은 현재 블록과는 상이한 슬라이스에 포함된다.
- 이웃 블록은 현재 블록과는 상이한 타일(tile)에 포함된다.
- entropy_coding_sync_enabled_flag는 1과 같고, ( xNbY >> CtbLog2SizeY )는 (xTbY >> CtbLog2SizeY ) + 1보다 크거나 같다.
- 그렇지 않으면, availableN는 TRUE로 설정된다.
다음 조건의 모두가 참인 경우, availableN는 FALSE로 설정된다:
- checkPredModeY는 TRUE와 같다.
- availableN는 TRUE로 설정된다.
- CuPredMode[ 0][ xNbY ][ yNbY ]는 CuPredMode[ 0][ xTbY][ yTbY ]와 같지 않다.
IsAvailable[ cIdx ][ x ][ y ]는 샘플 위치(x,y)에서 각각의 콤포넌트 cIdx에 대한 샘플의 사용 가능한 정보를 저장하는데 사용된다.
cIdx=0의 경우, 0<=x<= pic_width_in_luma_samples이고, 0<=y<= pic_height_in_luma_samples이다;
cIdx =1 또는 2의 경우, 0<=x<= pic_width_in_chroma_samples이고이고, 0<=y<= pic_height_in_ chroma _samples이다;
이 프로세스에 대한 입력은 다음과 같다:
- 현재 화상 콤포넌트의 좌측 상단 샘플을 기준으로 현재 블록의 좌측 상단 샘플을 지정하는 위치 ( xCurr, yCurr ),
- 현재 블록의 폭 및 높이를 각각 지정하는 변수 nCurrSw 및 nCurrSh,
- 현재 블록의 색상 콤포넌트를 지정하는 변수 cIdx,
- 현재 블록의 예측 샘플을 지정하는 (nCurrSw) x (nCurrSh) 어레이 predSamples,
- 현재 블록의 잔차 샘플을 지정하는 (nCurrSw) x (nCurrSh) 어레이 resSamples.
이 프로세스의 출력은 재구성된 화상 샘플 어레이 recSamples이다.
색상 콤포넌트 cIdx의 값에 따라, 다음과 같은 할당이 이루어진다:
- cIdx가 0과 같은 경우, recSamples는 재구성된 화상 샘플 어레이(SL)에 대응한다.
- 그렇지 않으면, cIdx가 1과 같은 경우, tuCbfChroma는 tu_cbf_cb[ xCurr ][ yCurr ]와 같게 설정되고, recSamples는 재구성된 크로마 샘플 어레이(SCb)에 대응한다.
- 그렇지 않은 경우(cIdx가 2와 같은 경우), tuCbfChroma는 tu_cbf_cr[ xCurr ][ yCurr ]와 같게 설정되고, recSamples는 재구성된 크로마 샘플 어레이(SCr)에 대응한다.
pic_lmcs_enabled_flag의 값에 따라, 다음이 적용된다:
- pic_lmcs_enabled_flag가 0과 같은 경우, 위치 ( xCurr, yCurr )에서 재구성된 샘플 recSamples의 (nCurrSw)x(nCurrSh) 블록은 i = 0..nCurrSw - 1, j = 0..nCurrSh - 1에 대해 다음과 같이 도출된다:
Figure pct00003
- 그렇지 않은 경우(pic_lmcs_enabled_flag가 1과 같은 경우), 다음이 적용된다:
- cIdx가 0과 같은 경우, 다음이 적용된다:
- 8.7.5.2절에서 지정된 루마 샘플에 대한 맵핑 프로세스를 사용한 화상 재구성은 루마 위치 ( xCurr, yCurr ), 블록 폭 nCurrSw 및 높이 nCurrSh, 예측된 루마 샘플 어레이 predSamples, 및 잔차 루마 샘플 어레이 resSamples를 입력으로 하여 호출되고, 출력은 재구성된 루마 샘플 어레이 recSamples이다.
- 그렇지 않은 경우(cIdx가 0보다 큰 경우), 8.7.5.3절에서 지정된 크로마 샘플에 대한 루마 의존 크로마 잔차 스케일링 프로세스를 사용한 화상 재구성은 크로마 위치 ( xCurr, yCurr ), 변환 블록 폭 nCurrSw 및 높이 nCurrSh, 현재 크로마 변환 블록의 코딩된 블록 플래그 tuCbfChroma, 예측된 크로마 샘플 어레이 predSamples, 및 잔차 크로마 샘플 어레이 resSamples를 입력으로 하여 호출되고, 출력은 재구성된 크로마 샘플 어레이 recSamples이다.
i = 0..nCurrSw - 1, j = 0..nCurrSh - 1에 대해 다음과 같은 할당이 이루어진다:
Figure pct00004
이들 섹션의 사양에 대한 다른 예시는 다음과 같다.
참조 샘플 가용성 마킹 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 현재 화상의 좌측 상단 샘플을 기준으로 현재 변환 블록의 좌측 상단 샘플을 지정하는 샘플 위치 ( xTbCmp, yTbCmp ),
- 인트라 예측 참조 라인 인덱스를 지정하는 변수 refIdx,
- 참조 샘플 폭을 지정하는 변수 refW,
- 참조 샘플 높이를 지정하는 변수 refH,
- 현재 블록의 색상 콤포넌트를 지정하는 변수 cIdx.
이 프로세스의 출력은, 인트라 샘플 예측에 대해 x = -1 - refIdx, y = -1 - refIdx..refH - 1 및 x = -refIdx..refW - 1, y = -1 - refIdx인 참조 샘플 refUnfilt[ x ][ y ]이다.
x = -1 - refIdx, y = -1 - refIdx..refH - 1 및 x = -refIdx..refW - 1, y = -1 - refIdx인, 인-루프 필터 프로세스에 앞서 구성된 샘플인 refW + refH + 1 + ( 2 * refIdx ) 이웃하는 샘플 refUnfilt[ x ][ y ]는 다음과 같이 도출된다:
- 이웃하는 위치 ( xNbCmp, yNbCmp )는 다음과 같이 지정된다:
Figure pct00005
(310)
- 6.4.4절에 지정된 이웃 블록 가용성에 대한 도출 프로세스는, 현재 샘플 위치 ( xCurr, yCurr )는 ( xTbCmp, yTbCmp )와 같도록 설정되고, 이웃하는 샘플 위치 ( xNbCmp, yNbCmp ), checkPredModeY는 FALSE와 같도록 설정되고, cIdx는 입력으로 설정되어 호출되고, 출력은 availableN로 할당된다.
- 각각의 샘플 refUnfilt[ x ][ y ]는 다음과 같이 도출된다:
- availableN가 FALSE와 같은 경우, 샘플 refUnfilt[ x ][ y ]는 "인트라 예측에 사용 불가"로 마킹된다.
- 그렇지 않으면, 샘플 refUnfilt[ x ][ y ]은 "인트라 예측에 사용 가능"으로 마킹되고, 위치 ( xNbCmp, yNbCmp )의 샘플이 refUnfilt[ x ][ y ]에 할당된다.
이웃 블록 가용성에 대한 유도 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 현재 화상의 좌측 상단 샘플을 기준으로 현재 블록의 좌측 상단 샘플의 샘플 위치 ( xCurr, yCurr ),
- 현재 화상의 좌측 상단 루마 샘플을 기준으로 이웃 블록에 포함되는 샘플 위치 ( xNbCmp, yNbCmp ),
- 가용성이 예측 모드에 따라 달라지는지 여부를 지정하는 변수 checkPredModeY,
- 현재 블록의 색상 콤포넌트를 지정하는 변수 cIdx.
이 프로세스의 출력은 availableN로 표시되는, 위치 ( xNbCmp, yNbCmp )을 포함하는 이웃 블록의 가용성이다.
현재 루마 위치 ( xTbY, yTbY ) 및 이웃하는 루마 위치 ( xNbY, yNbY )는 다음과 같이 도출된다:
Figure pct00006
이웃 블록 가용성 availableN는 다음과 같이 도출된다:
- 다음 조건 중 하나 이상이 참인 경우, availableN는 FALSE로 설정된다:
- xNbCmp는 0보다 작다.
- yNbCmp는 0보다 작다.
- xNbY는 pic_width_in_luma_samples보다 크거나 같다.
- yNbY는 pic_height_in_luma_samples보다 크거나 같다.
- IsAvailable[ cIdx ][ xNbCmp ][ yNbCmp ]는 FALSE와 같다.
- 이웃 블록은 현재 블록과는 상이한 슬라이스에 포함된다.
- 이웃 블록은 현재 블록과는 상이한 타일(tile)에 포함된다.
- entropy_coding_sync_enabled_flag는 1과 같고, ( xNbY >> CtbLog2SizeY )는 (xTbY >> CtbLog2SizeY ) + 1보다 크거나 같다.
- 그렇지 않으면, availableN는 TRUE로 설정된다.
다음 조건의 모두가 참인 경우, availableN는 FALSE로 설정된다:
- checkPredModeY는 TRUE와 같다.
- availableN는 TRUE로 설정된다.
- CuPredMode[ 0][ xNbY ][ yNbY ]는 CuPredMode[ 0][ xTbY][ yTbY ]와 같지 않다.
이 프로세스에 대한 입력은 다음과 같다:
- 현재 화상 콤포넌트의 좌측 상단 샘플을 기준으로 현재 블록의 좌측 상단 샘플을 지정하는 위치 ( xCurr, yCurr ),
- 현재 블록의 폭 및 높이를 각각 지정하는 변수 nCurrSw 및 nCurrSh,
- 현재 블록의 색상 콤포넌트를 지정하는 변수 cIdx,
- 현재 블록의 예측 샘플을 지정하는 (nCurrSw) x (nCurrSh) 어레이 predSamples,
- 현재 블록의 잔차 샘플을 지정하는 (nCurrSw) x (nCurrSh) 어레이 resSamples.
이 프로세스의 출력은 재구성된 화상 샘플 어레이 recSamples이다.
색상 콤포넌트 cIdx의 값에 따라, 다음과 같은 할당이 이루어진다:
- cIdx가 0과 같은 경우, recSamples는 재구성된 화상 샘플 어레이(SL)에 대응한다.
- 그렇지 않으면, cIdx가 1과 같은 경우, tuCbfChroma는 tu_cbf_cb[ xCurr ][ yCurr ]와 같게 설정되고, recSamples는 재구성된 크로마 샘플 어레이(SCb)에 대응한다.
- 그렇지 않은 경우(cIdx가 2와 같은 경우), tuCbfChroma는 tu_cbf_cr[ xCurr ][ yCurr ]와 같게 설정되고, recSamples는 재구성된 크로마 샘플 어레이(SCr)에 대응한다.
pic_lmcs_enabled_flag의 값에 따라, 다음이 적용된다:
- pic_lmcs_enabled_flag가 0과 같은 경우, 위치 ( xCurr, yCurr )에서 재구성된 샘플 recSamples의 (nCurrSw)x(nCurrSh) 블록은 i = 0..nCurrSw - 1, j = 0..nCurrSh - 1에 대해 다음과 같이 도출된다:
Figure pct00007
- 그렇지 않은 경우(pic_lmcs_enabled_flag가 1과 같은 경우), 다음이 적용된다:
- cIdx가 0과 같은 경우, 다음이 적용된다:
- 8.7.5.2절에서 지정된 루마 샘플에 대한 맵핑 프로세스를 사용한 화상 재구성은 루마 위치 ( xCurr, yCurr ), 블록 폭 nCurrSw 및 높이 nCurrSh, 예측된 루마 샘플 어레이 predSamples, 및 잔차 루마 샘플 어레이 resSamples를 입력으로 하여 호출되고, 출력은 재구성된 루마 샘플 어레이 recSamples이다.
- 그렇지 않은 경우(cIdx가 0보다 큰 경우), 8.7.5.3절에서 지정된 크로마 샘플에 대한 루마 의존 크로마 잔차 스케일링 프로세스를 사용한 화상 재구성은 크로마 위치 ( xCurr, yCurr ), 변환 블록 폭 nCurrSw 및 높이 nCurrSh, 현재 크로마 변환 블록의 코딩된 블록 플래그 tuCbfChroma, 예측된 크로마 샘플 어레이 predSamples, 및 잔차 크로마 샘플 어레이 resSamples를 입력으로 하여 호출되고, 출력은 재구성된 크로마 샘플 어레이 recSamples이다.
i = 0..nCurrSw - 1, j = 0..nCurrSh - 1에 대해 다음과 같은 할당이 이루어진다:
Figure pct00008
도 12는 본 발명의 예시적인 일 실시예에 따라 N x N 단위로 사용 가능으로 마킹된 현재 블록의 샘플을 도시하는 그래픽 다이어그램이다. 일 실시예로서, 도 12을 참조하면, 현재 블록이 재구성된 후, 샘플은 N=4 또는 N=2와 같은 N*N 크기의 단위에서 "사용 가능"으로 마킹된다. 대안적으로, Y 콤포넌트 블록에 대해, N=4이고, Cb/Cr 콤포넌트 블록에 대해, N=2이다. "사용 가능"한 유닛의 모든 샘플은 "사용 가능"한 것으로 간주된다. 이는, 유닛이 "사용 가능"으로 마킹되면, 유닛 영역 내의 임의의 샘플이 "사용 가능"으로 마킹될 수 있음을 의미한다. 즉, 현재 유닛이 Y 유닛인 경우, 유닛 영역에 의해 커버되는 위치에서 모든 Y 샘플이 사용 가능하고, 현재 유닛이 Cb 유닛인 경우, 유닛 영역에 의해 커버되는 위치에서 모든 Cb 샘플이 사용 가능하고, 현재 블록이 Cr 유닛인 경우, 유닛 영역에 의해 커버되는 위치에서 모든 Cr 샘플이 사용 가능하다.
일 실시예로서, 참조 샘플이 사용 가능한지 여부를 확인하기 위해, 프로세스는 먼저 유닛이 "사용 가능"으로 결정되는 경우 샘플이 속하는 유닛의 위치 또는 인덱스를 획득하고, 참조 샘플은 사용 가능으로 간주되거나 마킹된다.
도 13은 본 개시의 예시적인 일 실시예에 따라 사용 가능으로 마킹된 현재 블록의 우측 경계 및 하단 경계의 샘플을 도시하는 그래픽 다이어그램이다. 일 실시예로서, 도 13을 참조하면, 현재 블록이 재구성된 후, 우측 경계 샘플 및 하단 경계 샘플(다른 블록의 참조 샘플로 사용됨)만 "사용 가능"으로 마킹된다.
도 14는 본 개시의 예시적인 일 실시예에 따라 N 단위에서 사용 가능으로 마킹된 현재 블록의 우측 경계 및 하단 경계의 샘플을 도시하는 그래픽 다이어그램이다. 일 실시예로서, 도 14을 참조하면, 현재 블록이 재구성된 후, 우측 경계 샘플 및 하단 경계 샘플(다른 블록의 참조 샘플로서 사용됨)만, N=4, 또는 N=2와 같이 N의 단위 크기에서 "사용 가능"으로 마킹된다. 대안적으로, Y 콤포넌트 블록에 대해, N=4이고, Cb/Cr 콤포넌트 블록에 대해, N=2이다. "사용 가능"한 유닛의 모든 샘플은 "사용 가능"한 것으로 간주된다. 이는, 유닛이 "사용 가능"으로 마킹되면, 유닛 영역 내의 임의의 샘플이 "사용 가능"으로 마킹될 수 있음을 의미한다. 달리 말하면, 현재 유닛이 Y 유닛인 경우, 유닛 영역에 의해 커버되는 위치에서 모든 Y 샘플이 사용 가능하고, 현재 유닛이 Cb 유닛인 경우, 유닛 영역에 의해 커버되는 위치에서 모든 Cb 샘플이 사용 가능하고, 현재 블록이 Cr 유닛인 경우, 유닛 영역에 의해 커버되는 위치에서 모든 Cr 샘플이 사용 가능하다.
참조 샘플이 사용 가능한지 여부를 확인하기 위해, 실시예에서, 프로세스는 먼저 유닛이 "사용 가능"으로 결정되는 경우 샘플이 속하는 유닛의 위치 또는 인덱스를 획득하고, 참조 샘플은 사용 가능으로 마킹된다.
도 15는 본 개시의 예시적인 일 실시예에 따라 N x N 단위에서 사용 가능으로 마킹된 현재 블록의 우측 경계 및 하단 경계의 샘플을 도시하는 그래픽 다이어그램이다. 일 실시예로서, 도 15을 참조하면, 현재 블록이 재구성된 후, 우측 경계 샘플 및 하단 경계 샘플 (다른 블록의 참조 샘플로서 사용됨)만, N=4, 또는 N=2와 같이 크기 N*N을 가지는 단위에서 "사용 가능"으로 마킹된다. 대안적으로, Y 콤포넌트 블록에 대해, N=4이고, Cb/Cr 콤포넌트 블록에 대해, N=2이다. "사용 가능"한 유닛의 모든 샘플은 "사용 가능"한 것으로 간주된다. 이는, 유닛이 "사용 가능"으로 마킹되면, 유닛 영역 내의 임의의 샘플이 "사용 가능"으로 마킹될 수 있음을 의미한다. 즉, 현재 유닛이 Y 유닛인 경우, 유닛 영역에 의해 커버되는 위치에서 모든 Y 샘플이 사용 가능하고, 현재 유닛이 Cb 유닛인 경우, 유닛 영역에 의해 커버되는 위치에서 모든 Cb 샘플이 사용 가능하고, 현재 블록이 Cr 유닛인 경우, 유닛 영역에 의해 커버되는 위치에서 모든 Cr 샘플이 사용 가능하다.
참조 샘플이 사용 가능한지 여부를 확인하기 위해, 실시예에서, 프로세스 또는 방법은 먼저, 프로세스 또는 방법이 유닛이 "사용 가능"으로 결정되는 경우, 샘플이 속하는 유닛의 위치 또는 인덱스를 획득하고, 프로세스는 참조 샘플을 사용 가능으로 마킹한다.
여기서, 본 개시의 실시예들에 따르면, 샘플 또는 유닛 "사용 가능" 정보는, Y 콤포넌트, Cb 콤포넌트, 및 Cr 콤포넌트와 같은 각각의 콤포넌트(총 3개의 콤포넌트)에 대해 메모리에 저장됨에 유의해야 한다.
여기서, 블록이 인터 예측 모드로 코딩된 경우에도, 블록이 재구성된 후 "사용 가능" 마킹 방법이 또한 적용될 수 있다.
실시예 2:
이 실시예에서, 가용성 확인 프로세스는 그 대응하는 콤포넌트의 샘플를 확인함으로써 수행된다.
실시예 2와 실시예 1의 차이점은 Cb 콤포넌트 및 Cr 콤포넌트는 가용성 확인 프로세스에서 구별되지 않는다는 것이다. 블록의 경우, 참조 샘플 가용성 확인 프로세스는 그 대응하는 콤포넌트의 샘플을 확인함으로써 수행된다. 여기서, 콤포넌트는 루마 콤포넌트, 또는 크로마 콤포넌트일 수 있다. Y 콤포넌트는 루마 콤포넌트로 지칭된다. Cb 콤포넌트 및 Cr 콤포넌트는 모두 크로마 콤포넌트로 지칭된다.
실시예 2와 실시예 1 사이의 차이는 단계 2에서만 발생하고, 다른 단계에 대해서는, 실시예 1에서와 동일하다. 실시예 2의 단계 2는 아래에서 상세하게 설명된다.
단계 2: 현재 블록의 참조 샘플의 가용성을 확인하는 단계를 포함하는 참조 샘플 가용성 확인 프로세스를 수행(도 10에서 1002).
일 실시예로서, 블록이 루마 블록인 경우, 참조 샘플 가용성은 참조 루마 샘플를 확인함으로써 도출된다.
일 실시예로서, 블록이 크로마 블록인 경우, 참조 샘플 가용성은 참조 크로마 샘플를 확인함으로써 도출된다.
도 10을 참조하면, 1002에서 참조 샘플의 가용성을 확인한 후, 방법은 1003에서 사용 불가한 참조 샘플이 있는지 여부를 판단하는 단계를 포함한다. 방법이 사용 불가한 참조 샘플이 있는 것으로 판단하는 경우(1003에서 예), 방법은 1004로 이동하고, 그렇지 않으면, 방법은 1005로 이동한다.
여기서, 실시예 1에서 논의된 마킹 방법은 실시예 2로 직접 확장될 수 있고, 유일한 차이점은 크로마 콤포넌트에 대한 것이며, Cb 콤포넌트 블록과 Cr 콤포넌트 블록이 재구성된 후에만 블록 영역 내의 크로마 샘플이 "사용 가능"으로 마킹될 수 있다.
예를 들어, 루마 블록의 경우, 블록이 재구성된인 경우, 블록 영역 내의 샘플이 "사용 가능"으로 마킹될 수 있다. 크로마 블록의 경우, Cb 및 Cr 블록이 모두 재구성된 후, 블록 영역 내의 샘플이 "사용 가능"으로 마킹될 수 있다. 이는, 현재 블록이 루마 블록인 경우, 블록 영역에 의해 커버되는 위치에서 모든 루마 샘플이 사용 가능으로 마킹됨을 의미한다. 현재 블록이 크로마 블록인 경우, Cb 및 Cr 블록이 모두 재구성된 후, 블록 영역에 의해 커버되는 위치의 모든 크로마 샘플이 사용 가능으로 마킹된다.
실시예 1의 다른 마킹 방법도 유사하게 확장될 수 있다.
여기서, 본 개시 내용의 실시예에서, 샘플 또는 유닛 "가용성"정보는 루마 콤포넌트 및 크로마 콤포넌트와 같은 각각의 콤포넌트(총 2개의 콤포넌트)에 대해 메모리에 저장됨에 유의해아 한다. 이는, Cb 콤포넌트 및 Cr 콤포넌트는 동일한 "가용성" 또는 "사용 가능" 정보를 공유할 것임을 의미한다.
여기서, 블록이 인터-예측 모드로 코딩되어 있더라도, 블록이 재구성된 후, "사용 가능" 마킹 방법이 또한 적용될 수 있다.
다음은, 전술한 실시예에서 나타낸 인코딩 방법 및 디코딩 방법의 적용 및 이를 사용하는 시스템에 대한 설명이다.
도 17은 컨텐츠 배포 서비스를 실현하기 위한 컨텐츠 공급 시스템(3100)을 나타내는 블록도이다. 이 컨텐츠 공급 시스템(3100)은 캡처 디바이스(3102), 단말 디바이스(3106)를 포함하고, 선택사항으로 디스플레이(3126)를 포함한다. 캡처 디바이스(3102)는 통신 링크(3104)를 통해 단말 디바이스(3106)와 통신한다. 통신 링크는 전술한 통신 채널(13)을 포함할 수 있다. 통신 링크(3104)는 WIFI, 이더넷, 케이블, 무선(3G/4G/5G), USB 또는 이들의 임의의 종류의 조합 등을 포함하지만 이에 제한되지 않는다.
캡처 디바이스(3102)는 데이터를 생성하고, 상기 실시예에서 도시된 바와 같은 인코딩 방법에 의해 데이터를 인코딩할 수 있다. 대안적으로, 캡처 디바이스(3102)는 데이터를 스트리밍 서버(도면에는 도시하지 않음)에 배포할 수 있고, 서버는 데이터를 인코딩하고 인코딩된 데이터를 단말 디바이스(3106)로 전송한다. 캡처 디바이스(3102)은 카메라, 스마트 폰 또는 패드, 컴퓨터 또는 랩 탑, 화상 회의 시스템, PDA, 차량 탑재 디바이스, 또는 이들의 임의의 조합, 등을 포함하나 이에 제한되지는 않는다. 예를 들어, 캡처 디바이스(3102)는 전술한 바와 같은 소스 장치(12)를 포함할 수 있다. 데이터가 비디오를 포함하는 경우, 캡처 디바이스(3102)에 포함된 비디오 인코더(20)는 실제로 비디오 인코딩 처리를 수행할 수 있다. 데이터가 오디오(즉, 음성)를 포함하는 경우, 캡처 디바이스(3102)에 포함된 오디오 인코더는 실제로 오디오 인코딩 처리를 수행할 수 있다. 일부 실제 시나리오의 경우, 캡처 디바이스(3102)는 인코딩된 비디오 및 오디오 데이터를 함께 멀티플렉싱하여 분배한다. 다른 실제 시나리오의 경우, 일례로 화상 회의 시스템에서, 인코딩된 오디오 데이터 및 인코딩된 비디오 데이터는 멀티플렉싱되지 않는다. 캡처 디바이스(3102)는 인코딩된 오디오 데이터 및 인코딩된 비디오 데이터를 단말 디바이스(3106)에 개별적으로 배포한다.
컨텐츠 공급 시스템(3100)에서, 단말 디바이스(310)는 인코딩된 데이터를 수신하여 재생한다. 단말 디바이스(3106)는, 스마트 폰 또는 패드(3108), 컴퓨터 또는 랩 탑(3110), 네트워크 비디오 레코더(NVR)/디지털 비디오 레코더(DVR)(3112), TV(3114), 셋톱 박스(STB)(3116), 화상 회의 시스템(3118), 비디오 감시 시스템(3120), 개인용 디지털 단말기(PDA)(3122), 차량 탑재 디바이스(3124), 또는 이들의 임의의 조합, 등과 같이 디코딩 전술한 인코딩된 데이터를 디코딩할 수 있는, 데이터 수신 및 복구 능력을 가지는 디바이스일 수 있다. 예를 들어, 단말 디바이스(3106)는 전술한 바와 같은 데스티네이션 디바이스(14)를 포함할 수 있다. 인코딩된 데이터가 비디오를 포함하는 경우, 단말 디바이스에 포함된 비디오 디코더(30)는 비디오 디코딩을 수행하기 위해 우선 순위를 가진다. 인코딩된 데이터가 오디오를 포함하는 경우, 단말 디바이스에 포함된 오디오 디코더는 오디오 디코딩 처리를 수행하기 위해 우선 순위를 가진다.
예를 들어, 스마트 폰 또는 패드(3108), 컴퓨터 또는 랩 탑(3110), 네트워크 비디오 레코더(NVR)/디지털 비디오 레코더 (DVR)(3112), TV(3114), 개인용 디지털 단말기(PDA)(3122), 또는 차량 탑재 디바이스(3124)와 같은, 디스플레이를 가지는 단말 디바이스의 경우, 단말 디바이스는 디코딩된 데이터를 그의 디스플레이에 공급할 수 있다. 예를 들어, STB(3116), 화상 회의 시스템(3118), 또는 비디오 감시 시스템(3120)와 같은, 디스플레이가 없는 단말 디바이스의 경우 외부 디스플레이(3126)가 내부에 접촉하여 디코딩된 데이터를 수신하여 보여줄 수 있다.
이 시스템 내의 각각의 디바이스가 인코딩 또는 디코딩을 수행하는 경우, 전술한 실시예에서 도시된 바와 같은 화상 인코딩 디바이스 또는 화상 디코딩 디바이스가 사용될 수 있다.
도 18은 단말 디바이스(3106)의 일례의 구조를 나타내는 도면이다. 단말 디바이스(3106)가 캡처 디바이스(3102)로부터 스트림을 수신한 후, 프로토콜 처리 유닛(3202)은 스트림의 전송 프로토콜을 분석한다. 프로토콜은, RTSP(Real Time Streaming Protocol), HTTP(Hyper Text Transfer Protocol), HLS(HTTP Live Streaming Protocol), MPEG-DASH, RTP(Real-time Transport Protocol), RTMP(Real Time Messaging Protocol), 또는 임의의 종류의 이들의 조합, 등을 포함하나 이에 제한되지는 않는다.
프로토콜 진행 유닛(3202)가 스트림을 처리 한 후, 스트림 파일이 생성된다. 파일은 디멀티플렉싱 유닛(3204)으로 출력된다. 디멀티플렉싱 유닛(3204)은 멀티플렉싱된 데이터를 인코딩된 오디오 데이터 및 인코딩된 비디오 데이터로 분리할 수 있다. 위에서 설명한 바와 같이, 일부 실제 시나리오의 경우, 일례로 화상 회의 시스템에서, 인코딩된 오디오 데이터 및 인코딩된 비디오 데이터는 멀티플렉싱되지 않는다. 이 상황에서, 인코딩된 데이터는 디멀티플렉싱 유닛(3204)을 통하지 않고 비디오 디코더(3206) 및 오디오 디코더(3208)로 전송된다.
디멀티플렉싱 처리를 통해 비디오 ES(Elementary Stream), 오디오 ES 및 선택사항으로 자막이 생성된다. 전술한 실시예에서 설명한 비디오 디코더(30)를 포함하는 비디오 디코더(3206)는 전술한 실시예에서 나타낸 디코딩 방법에 의해 비디오 ES를 디코딩하여 비디오 프레임을 생성하고, 이 데이터를 동기 유닛(3212)에 공급한다. 오디오 디코더(3208)는 오디오 ES를 디코딩하여 오디오 프레임을 생성하고,이 데이터를 동기 유닛(3212)에 공급한다. 대안적으로, 비디오 프레임은 동기 유닛(3212)에 공급하기 전에 버퍼(도 Y에 도시되지 않음)에 저장할 수 있다. 유사하게, 오디오 프레임은 동기 유닛(3212)에 공급하기 전에 버퍼(도 Y에 도시되지 않음)에 저장할 수 있다.
동기 유닛(3212)은 비디오 프레임 및 오디오 프레임을 동기화하고 비디오/오디오를 비디오/오디오 디스플레이(3214)에 공급한다. 예를 들어, 동기 유닛(3212)은 비디오 및 오디오 정보의 표현을 동기화한다. 정보는 코딩된 오디오 및 시각 데이터의 표현에 관한 타임 스탬프 및 데이터 스트림 자체의 전달에 관한 타임 스탬프를 사용하여 신택스로 코딩할 수 있다.
스트림에 자막이 포함된 경우, 자막 디코더(3210)는 자막을 디코딩하고, 비디오 프레임 및 오디오 프레임과 동기화하며, 비디오/오디오/자막을 비디오/오디오/자막 디스플레이(3216)에 제공한다.
본 발명은 전술한 시스템에 제한되지 않고, 전술한 실시예에서의 화상 인코딩 디바이스 또는 화상 디코딩 디바이스는 다른 시스템, 예를 들어, 자동차 시스템에 통합될 수 있다.
본 개시에 따르면, 설명된 방법 및 프로세스는 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 방법 또는 프로세스는, 컴퓨터-판독 가능한 매체에 저장되고 하드웨어 처리 유닛에 의해 실행되는 명령 또는 프로그램 코드에 의해 수행될 수 있다.
제안된 방법은 각각의 샘플에 대한 사용 가능한 정보를 각각의 컴포넌트 별로 저장하므로, 인트라 예측 프로세스에서 보다 정확하게 사용 가능한 정보를 제공할 수 있다.
제한이 아닌 예로서, 이러한 컴퓨터-판독 가능한 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 장치, 자기 디스크 저장 장치, 또는 다른 자기 저장 장치, 플래시 메모리, 또는 컴퓨터에 의해 액세스할 수 있는 명령 또는 데이터 구조의 형태로 원하는 프로그램 코드를 저장하는데 사용할 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 모든 연결을 컴퓨터-판독 가능한 매체라고 한다. 예를 들어, 동축 케이블, 광섬유 케이블, 연선(twisted pair), 디지털 가입자 회선(DSL), 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술을 사용하여 웹 사이트, 서버, 또는 다른 원격 소스로부터 명령이 전송되는 경우, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술이 매체의 정의에 포함된다. 그러나, 컴퓨터-판독 가능한 저장 매체 및 데이터 저장 매체는 연결, 캐리어 파(wave), 신호, 또는 다른 일시적인 매체를 포함하지 않고, 대신에 비일시적 유체물의 저장 매체를 카리킴을 이해해야 한다. 여기에 사용된 디스크(disk) 및 디스크(disc)는, 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, DVD(digital versatile disc), 플로피 디스크 및 블루-레이 디스크를 포함하며, 여기서, 디스크(disk)는 일반적으로 데이터를 자기적으로 재생하는 반면, 디스크(disc)는 레이저를 사용하여 광학적으로 데이터를 재생한다. 위의 조합도 컴퓨터-판독 가능한 매체의 범위 내에 포함되어야 한다.
명령 또는 프로그래 코드는 하나 이상의 디지털 신호 처리기(digital signal processor; DSP), 범용 마이크로 프로세서, 주문형 집적 회로(application specific integrated circuits; ASIC), 필드 프로그래밍 가능한 로직 어레이(field programmable logic array; FPGA) 또는 다른 동등한 집적 또는 이산 논리 회로와 같은 하나 이상의 프로세서에 의해 실행될 수 있다. 따라서, 여기에서 사용되는 용어 "프로세서"는, 전술한 구조 또는 여기에서 설명된 기술의 구현에 적합한 임의의 다른 구조일 수 있다. 또한, 일부 측면에서, 여기에서 기술되는 기능은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공되거나 결합된 코덱에 통합될 수 있다. 또한, 기법은 하나 이상의 회로 또는 논리 요소에서 완전히 구현될 수 있다.
본 개시의 기법은 무선 핸드셋, 집적 회로(IC) 또는 IC 세트(예를 들어, 칩셋)를 포함하는 다양한 장치 또는 디바이스에서 구현될 수 있다. 개시된 기술을 수행하도록 구성되는 장치의 기능적 측면을 강조하기 위해 다양한 구성 요소, 모듈, 또는 유닛이 본 출원에서 설명되지만, 반드시 상이한 하드웨어 유닛에 의한 구현을 필요로 하는 것은 아니다. 오히려, 위에서 설명된 바와 같이, 다양한 유닛이 코덱 하드웨어 유닛으로 결합되거나, 적절한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명된 하나 이상의 프로세서를 포함하는 상호 동작하는 하드웨어 유닛의 집합에 의해 제공될 수 있다.
본 명세서에서 여러 실시 예가 제공되었지만, 개시된 시스템 및 방법은 본 명세서의 사상 또는 범위를 벗어나지 않고 많은 다른 특정 형태로 구현될 수 있음을 이해해야 한다. 본 실시 예는 제한적이지 않고 예시적인 것으로 간주되어야 하며, 그 의도는 여기에 제공된 세부 사항에 제한되지 않는다. 예를 들어, 다양한 요소 또는 구성 요소는 다른 시스템에서 결합 또는 통합될 수 있거나, 특정 기능이 생략되거나 구현되지 않을 수 있다.
또한, 다양한 실시예에서 개별적 또는 별개로 설명되고 예시된 기법, 시스템, 서브 시스템, 및 방법은 본 개시의 범위를 벗어나지 않고 다른 시스템, 모듈, 기법, 또는 방법과 결합되거나 통합될 수 있다. 결합되거나 직접 결합되거나 서로 통신하는 것으로 도시되거나 논의된 다른 항목은 간접적으로 결합되거나 전기적으로, 기계적으로, 또는 다른 방식으로 일부 인터페이스, 디바이스, 또는 중간 콤포넌트를 통해 통신할 수 있다. 변경, 대체, 및 변형의 다른 예는 통상의 기술자에 의해 확인될 수 있고 여기에 개시된 정신 및 범위를 벗어나지 않고 이루어질 수 있다.

Claims (30)

  1. 이미지 인트라 예측을 위한 장치로서,
    명령을 포함하는 메모리 스토리지; 및
    상기 메모리와 통신하는 하나 이상의 프로세서를 포함하되,
    상기 하나 이상의 프로세서는 상기 명령을 실행하여,
    현재 블록의 인트라 예측 모드를 획득;
    상기 현재 블록의 콤포넌트의 참조 샘플의 가용성을 도출-여기서 상기 콤포넌트는 Cb 콤포넌트, 또는 Cr 콤포넌트를 포함함-;
    사용 가능한 참조 샘플을 사용하여 사용 불가한 참조 샘플을 대체;
    상기 인트라 예측 모드 및 상기 대체된 참조 샘플에 기초하여 상기 현재 블록의 예측을 도출; 그리고
    상기 예측에 기초하여 상기 현재 블록을 재구성하는, 이미지 인트라 예측을 위한 장치.
  2. 제1항에 있어서,
    상기 하나 이상의 프로세서는 상기 명령을 실행하여,
    이웃하는 Cb 블록 내의 Cb 샘플의 가용성을 확인함으로써 상기 참조 샘플의 가용성을 도출-여기서 상기 이웃하는 Cb 블록은 상기 참조 샘플을 포함함-; 또는
    이웃하는 Cr 블록 내의 Cr 샘플의 가용성을 확인함으로써 상기 참조 샘플의 가용성을 도출-여기서 상기 이웃하는 Cr 블록은 상기 참조 샘플을 포함함-;하는, 이미지 인트라 예측을 위한 장치.
  3. 제1항 또는 제2항에 있어서,
    상기 재구성된 블록 내의 모든 Cb 샘플이 사용 가능으로 마킹되거나; 또는
    상기 재구성된 블록 내의 모든 Cr 샘플이 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 장치.
  4. 제1항에 있어서,
    상기 하나 이상의 프로세서는 상기 명령을 실행하여,
    상기 인트라 예측 모드에 기초하여 상기 대체된 참조 샘플을 상기 현재 블록으로 맵핑함으로써 상기 현재 블록의 예측을 도출;
    상기 현재 블록의 예측에 잔차를 더함으로써 상기 현재 블록을 재구성; 그리고
    상기 현재 블록을 재구성한 후 상기 재구성된 블록 내의 모든 샘플을 사용 가능으로 마킹;하는, 이미지 인트라 예측을 위한 장치.
  5. 제4항에 있어서,
    블록 영역은 각각이 유닛 영역을 가지는 여러 개의 유닛을 포함하고, 상기 유닛 영역 내의 모든 샘플이 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 장치.
  6. 제5항에 있어서,
    상기 현재 유닛이 Cb 유닛인 경우, 상기 유닛 영역에 의해 커버되는 위치의 모든 Cb 샘플이 사용 가능으로 마킹되거나; 또는
    상기 현재 유닛이 Cr 유닛인 경우, 상기 유닛 영역에 의해 커버되는 위치의 모든 Cr 샘플이 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 장치.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    참조 샘플의 가용성은 각각의 콤포넌트에 대해 저장되는, 이미지 인트라 예측을 위한 장치.
  8. 이미지 인트라 예측을 위한 장치로서,
    명령을 포함하는 메모리 스토리지; 및
    상기 메모리와 통신하는 하나 이상의 프로세서를 포함하되,
    상기 하나 이상의 프로세서는 상기 명령을 실행하여,
    현재 블록의 인트라 예측 모드를 획득;
    상기 현재 블록의 콤포넌트의 참조 샘플의 가용성을 도출-여기서 상기 콤포넌트는 크로마 콤포넌트을 포함함-;
    사용 가능한 참조 샘플을 사용하여 사용 불가한 참조 샘플을 대체;
    상기 인트라 예측 모드 및 상기 대체된 참조 샘플에 기초하여 상기 현재 블록의 크로마 예측을 도출; 및
    상기 예측에 기초하여 상기 현재 블록을 재구성;하는, 이미지 인트라 예측을 위한 장치.
  9. 제8항에 있어서,
    Cb 콤포넌트 및 Cr 콤포넌트는 상기 크로마 콤포넌트을 형성하고, 상기 Cb 콤포넌트 및 상기 Cr 콤포넌트는 동일한 가용성 정보를 공유하는, 이미지 인트라 예측을 위한 장치.
  10. 제9항에 있어서,
    상기 재구성된 블록 내의 모든 크로마 샘플이 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 장치.
  11. 인코더 또는 디코더에 의해 수행되는 이미지 인트라 예측을 위한 방법으로서,
    현재 블록의 인트라 예측 모드를 획득하는 단계;
    상기 현재 블록의 콤포넌트의 참조 샘플의 가용성을 도출하는 단계-여기서 상기 콤포넌트는 Cb 콤포넌트, 또는 Cr 콤포넌트를 포함함-;
    사용 가능한 참조 샘플을 사용하여 사용 불가한 참조 샘플을 대체하는 단계;
    상기 인트라 예측 모드 및 상기 대체된 참조 샘플에 기초하여 상기 현재 블록의 예측을 도출하는 단계; 및
    상기 예측에 기초하여 상기 현재 블록을 재구성하는 단계;를 포함하는, 이미지 인트라 예측을 위한 방법.
  12. 제11항에 있어서,
    이웃하는 Cb 블록 내의 Cb 샘플의 가용성을 확인함으로써 상기 참조 샘플의 가용성을 도출하는 단계-여기서 상기 이웃하는 Cb 블록은 상기 참조 샘플을 포함함-; 또는
    이웃하는 Cr 블록 내의 Cr 샘플의 가용성을 확인함으로써 상기 참조 샘플의 가용성을 도출-여기서 상기 이웃하는 Cr 블록은 상기 참조 샘플을 포함함-;인, 이미지 인트라 예측을 위한 방법.
  13. 제11항 또는 제12항에 있어서,
    상기 재구성된 블록 내의 모든 Cb 샘플이 사용 가능으로 마킹되거나; 또는 상기 재구성된 블록 내의 모든 Cr 샘플이 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 방법.
  14. 제11항에 있어서,
    상기 인트라 예측 모드에 기초하여 상기 대체된 참조 샘플을 상기 현재 블록으로 맵핑함으로써 상기 현재 블록의 예측을 도출하는 단계;
    상기 현재 블록의 예측에 잔차를 더함으로써 상기 현재 블록을 재구성하는 단계; 및
    상기 현재 블록을 재구성한 후 상기 재구성된 블록 내의 모든 샘플을 사용 가능으로 마킹하는 단계;를 더 포함하는, 이미지 인트라 예측을 위한 방법.
  15. 제11항에 있어서,
    블록 영역은 각각이 유닛 영역을 가지는 여러 개의 유닛을 포함하고, 상기 유닛 영역 내의 모든 샘플이 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 방법.
  16. 제11항에 있어서,
    상기 현재 유닛이 Cb 유닛인 경우, 상기 유닛 영역에 의해 커버되는 위치의 모든 Cb 샘플이 사용 가능으로 마킹되거나; 또는
    상기 현재 유닛이 Cr 유닛인 경우, 상기 유닛 영역에 의해 커버되는 위치의 모든 Cr 샘플이 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 방법.
  17. 제11항에 있어서,
    상기 재구성된 블록의 우측 경계 및 하단 경계의 샘플이 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 방법.
  18. 제11항에 있어서,
    우측 경계 샘플 및 하단 경계 샘플만이 N*1 또는 1*N 단위로 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 방법.
  19. 제11항에 있어서,
    우측 경계 샘플 및 하단 경계 샘플만이 N*N 단위로 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 방법.
  20. 제11항 내지 제19항 중 어느 한 항에 있어서,
    참조 샘플의 가용성은 각각의 콤포넌트에 대해 저장되는, 이미지 인트라 예측을 위한 방법.
  21. 제11항에 있어서,
    상기 가용성 참조 샘플은 상기 참조 샘플이 속하는 유닛의 위치 또는 인덱스를 획득함으로써 결정되고;
    유닛이 사용 가능인 것으로 결정되는 경우, 해당 유닛에 연관된 참조 샘플 은 사용 가능인 것으로 결정되는, 이미지 인트라 예측을 위한 방법.
  22. 인코더 또는 디코더에 의해 수행되는 이미지 인트라 예측을 위한 방법으로서,
    현재 블록의 인트라 예측 모드를 획득하는 단계;
    상기 현재 블록의 콤포넌트의 참조 샘플의 가용성을 도출하는 단계-여기서 상기 콤포넌트는 크로마 콤포넌트을 포함함-;
    사용 가능한 참조 샘플을 사용하여 사용 불가한 참조 샘플을 대체하는 단계;
    상기 인트라 예측 모드 및 상기 대체된 참조 샘플에 기초하여 상기 현재 블록의 크로마 예측을 도출하는 단계; 및
    상기 예측에 기초하여 상기 현재 블록을 재구성하는 단계;를 포함하는, 이미지 인트라 예측을 위한 방법.
  23. 제22항에 있어서,
    Cb 콤포넌트 및 Cr 콤포넌트는 상기 크로마 콤포넌트을 형성하고, 상기 Cb 콤포넌트 및 상기 Cr 콤포넌트는 동일한 가용성 정보를 공유하는, 이미지 인트라 예측을 위한 방법.
  24. 제22항 또는 제23항에 있어서,
    상기 재구성된 블록 내의 모든 크로마 샘플이 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 방법.
  25. 제22항에 있어서,
    상기 현재 블록에서 유닛을 재구성한 후, 상기 유닛의 유닛 영역 내의 모든 샘플이 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 방법.
  26. 제22항에 있어서,
    상기 현재 블록을 재구성한 후, 상기 현재 블록의 우측 경계 및 하단 경계의 샘플이 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 방법.
  27. 제22항에 있어서,
    상기 현재 블록을 재구성한 후, 우측 경계 샘플 및 하단 경계 샘플만이 N*1 또는 1*N 단위로 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 방법.
  28. 제22항에 있어서,
    상기 현재 블록을 재구성한 후, 우측 경계 샘플 및 하단 경계 샘플만이 N*N 단위로 사용 가능으로 마킹되는, 이미지 인트라 예측을 위한 방법.
  29. 제22항 내지 제28항 중 어느 한 항에 있어서,
    상기 참조 샘플의 가용성을 도출하는 단계는,
    상기 샘플이 속하는 유닛의 위치 또는 인덱스를 획득하는 단계-상기 유닛이 사용 가능인 경우, 상기 참조 샘플이 사용 가능임-;를 포함하는, 이미지 인트라 예측을 위한 방법.
  30. 제11항 내지 제29항 중 어느 한 항에 따른 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
KR1020217017660A 2018-11-21 2019-11-21 인트라 예측 방법 및 디바이스 KR20210074400A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862770736P 2018-11-21 2018-11-21
US62/770,736 2018-11-21
PCT/CN2019/119921 WO2020103901A1 (en) 2018-11-21 2019-11-21 Intra prediction method and device

Publications (1)

Publication Number Publication Date
KR20210074400A true KR20210074400A (ko) 2021-06-21

Family

ID=70774279

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217017660A KR20210074400A (ko) 2018-11-21 2019-11-21 인트라 예측 방법 및 디바이스

Country Status (9)

Country Link
US (1) US20210274198A1 (ko)
EP (1) EP3868099A4 (ko)
JP (2) JP7234365B2 (ko)
KR (1) KR20210074400A (ko)
CN (1) CN112913243A (ko)
BR (1) BR112021009686A2 (ko)
MX (1) MX2021005901A (ko)
SG (1) SG11202105014WA (ko)
WO (1) WO2020103901A1 (ko)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2651137A4 (en) * 2010-12-08 2016-03-02 Lg Electronics Inc INTRA-PREDICTION METHOD, ENCODING APPARATUS, AND DECODING APPARATUS USING THE SAME
KR20130058524A (ko) 2011-11-25 2013-06-04 오수미 색차 인트라 예측 블록 생성 방법
US20150092844A1 (en) * 2012-03-16 2015-04-02 Electronics And Telecommunications Research Institute Intra-prediction method for multi-layer images and apparatus using same
US9357211B2 (en) * 2012-12-28 2016-05-31 Qualcomm Incorporated Device and method for scalable and multiview/3D coding of video information
US10321140B2 (en) * 2015-01-22 2019-06-11 Mediatek Singapore Pte. Ltd. Method of video coding for chroma components
WO2017008255A1 (en) * 2015-07-14 2017-01-19 Mediatek Singapore Pte. Ltd. Advanced intra prediction mode signaling in video coding
US10200719B2 (en) * 2015-11-25 2019-02-05 Qualcomm Incorporated Modification of transform coefficients for non-square transform units in video coding
PL3477950T3 (pl) * 2016-06-24 2022-02-07 Kt Corporation Predykcja wewnątrzobrazowa z wykorzystaniem pikseli referencyjnych z dodatkowych linii
US20180199062A1 (en) * 2017-01-11 2018-07-12 Qualcomm Incorporated Intra prediction techniques for video coding
JP7122838B2 (ja) 2017-03-10 2022-08-22 日本放送協会 符号化装置、復号装置及びプログラム

Also Published As

Publication number Publication date
JP7234365B2 (ja) 2023-03-07
EP3868099A1 (en) 2021-08-25
SG11202105014WA (en) 2021-06-29
CN112913243A (zh) 2021-06-04
EP3868099A4 (en) 2021-12-22
JP2023067896A (ja) 2023-05-16
BR112021009686A2 (pt) 2021-08-31
JP2022509626A (ja) 2022-01-21
MX2021005901A (es) 2021-06-23
WO2020103901A1 (en) 2020-05-28
US20210274198A1 (en) 2021-09-02

Similar Documents

Publication Publication Date Title
KR102608366B1 (ko) 인트라 예측 방법 및 디바이스
AU2019342803B2 (en) Apparatus and method for inverse quantization
CN114071165B (zh) 视频编码器、视频解码器及对应方法
KR20210068537A (ko) 코딩 블록의 기하학적 분할의 인터 예측을 위한 장치 및 방법
KR102606414B1 (ko) 디블로킹 필터의 경계 강도를 도출하는 인코더, 디코더 및 대응 방법
US20210227229A1 (en) Intra prediction method and device
KR102525179B1 (ko) 파티션 제한 요소들 간의 관계
KR20210125088A (ko) 매트릭스 기반 인트라 예측 및 2차 변환 코어 선택을 조화시키는 인코더, 디코더 및 대응 방법
CN112640470A (zh) 视频编码器、视频解码器及对应方法
WO2020182196A1 (en) Coding method, device, system with shared mpm list
JP7234365B2 (ja) イントラ予測方法及び装置
CN114900702B (zh) 降低平面模式的帧内预测的复杂度的编解码器和对应方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal