KR20230145216A - 비디오 코딩을 위한 인-루프 필터 - Google Patents

비디오 코딩을 위한 인-루프 필터 Download PDF

Info

Publication number
KR20230145216A
KR20230145216A KR1020237033374A KR20237033374A KR20230145216A KR 20230145216 A KR20230145216 A KR 20230145216A KR 1020237033374 A KR1020237033374 A KR 1020237033374A KR 20237033374 A KR20237033374 A KR 20237033374A KR 20230145216 A KR20230145216 A KR 20230145216A
Authority
KR
South Korea
Prior art keywords
video
sample
clipping
samples
image sample
Prior art date
Application number
KR1020237033374A
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 KR20230145216A publication Critical patent/KR20230145216A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods 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 picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression

Landscapes

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

Abstract

이 출원은 비디오 프레임의 복수의 이미지 샘플을 포함하는 비디오 데이터를 코딩하는 것에 관한 것이다. 각각의 이미지 샘플은 루마 샘플 및 크로마 샘플 중의 하나에 대응한다. 각각의 이미지 샘플은 필터 길이 및 필터 계수들의 세트를 가지는 적응적 인-루프 필터를 이용하여 필터링된다. 관련된 이미지 샘플들의 세트는 각각의 이미지 샘플의 필터 길이에서 식별된다. 각각의 관련된 이미지 샘플에 대하여, 개개의 클립 값 인덱스 및 대응하는 필터 계수가 식별된다. 각각의 관련된 이미지 샘플 및 개개의 이미지 샘플의 차이는 개개의 클립핑 넘버를 지수로 하는 2의 거듭제곱과 동일한 개개의 클립핑 경계 값에 대응하는 개개의 클립 값 인덱스에 기초하여 클립핑된다. 개개의 이미지 샘플은 개개의 필터 계수에 기초하여 관련된 이미지 샘플의 각각의 관련된 이미지 샘플의 클립핑된 차이로 수정된다.

Description

비디오 코딩을 위한 인-루프 필터{IN-LOOP FILTERS FOR VIDEO CODING}
관련된 출원에 대한 상호-참조
본 출원은 2019년 12월 28일자로 출원된 "비디오 코딩을 위한 인-루프 필터(In-Loop Filters for Video Coding)"라는 명칭의 미국 가출원 제62/954, 485호에 대한 우선권을 주장하고, 이 미국 가출원은 그 전체적으로 참조로 통합된다.
본 출원은 일반적으로, 비디오 데이터 코딩 및 압축에 관한 것으로, 특히, 비디오 데이터의 비트스트림에서의 이미지 프레임의 크로마(chroma) 및 루마(luma) 컴포넌트의 코딩에서의 개선의 방법 및 시스템에 관한 것이다.
디지털 비디오는 디지털 텔레비전, 랩톱 또는 데스크톱 컴퓨터, 태블릿 컴퓨터, 디지털 카메라, 디지털 레코딩 디바이스, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 스마트 폰, 비디오 원격회의 디바이스, 비디오 스트리밍 디바이스 등과 같은 다양한 전자 디바이스에 의해 지원된다. 전자 디바이스는 MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, 파트(Part) 10, 진보된 비디오 코딩(Advanced Video Coding)(AVC), 고효율 비디오 코딩(High Efficiency Video Coding)(HEVC), 및 다용도 비디오 코딩(Versatile Video Coding)(VVC) 표준에 의해 정의된 바와 같은 비디오 압축/압축해제 표준을 구현함으로써 디지털 비디오 데이터를 송신하고, 수신하고, 인코딩하고, 디코딩하고, 및/또는 저장한다. 비디오 압축은 전형적으로, 비디오 데이터에서 내재된 중복성을 감소시키거나 제거하기 위하여 공간적(인트라 프레임(intra frame)) 예측 및/또는 시간적(인터 프레임(inter frame)) 예측을 수행하는 것을 포함한다. 블록-기반 비디오 코딩을 위하여, 비디오 프레임은 하나 이상의 슬라이스(slice)로 파티셔닝(partition)되고, 각각의 슬라이스는 코딩 트리 유닛(coding tree unit)(CTU)으로서 또한 지칭될 수 있는 다수의 비디오 블록을 가진다. 각각의 CTU는 하나의 코딩 유닛(coding unit)(CU)을 포함할 수 있거나, 미리 정의된 최소 CU 크기에 도달할 때까지 더 작은 CU로 재귀적으로 분할될 수 있다. 각각의 CU(또한, 리프 CU(leaf CU)로 명명됨)는 하나 또는 다수의 변환 유닛(transform unit)(TU)을 포함하고, 각각의 CU는 또한, 하나 또는 다수의 예측 유닛(prediction unit)(PU)을 포함한다. 각각의 CU는 인트라, 인터, 또는 IBC 모드 중의 어느 하나로 코딩될 수 있다. 비디오 프레임의 인트라 코딩된(intra coded) (I) 슬라이스 내의 비디오 블록은 동일한 비디오 프레임 내에서 이웃하는 블록에서의 참조 샘플에 대한 공간적 예측을 이용하여 인코딩된다. 비디오 프레임의 인터 코딩된 (P 또는 B) 슬라이스 내의 비디오 블록은 동일한 비디오 프레임 내에서의 이웃하는 블록에서의 참조 샘플에 대한 공간적 예측, 또는 다른 이전의 및/또는 미래의 참조 비디오 프레임에서의 참조 샘플에 대한 시간적 예측을 이용할 수 있다.
이전에 인코딩되었던 참조 블록, 예컨대, 이웃하는 블록에 기초한 공간적 또는 시간적 예측은 코딩되어야 할 현재의 비디오 블록에 대한 예측 블록으로 귀착된다. 참조 블록을 구하는 프로세스는 블록 정합 알고리즘(block matching algorithm)에 의해 완수될 수 있다. 코딩되어야 할 현재의 블록과 예측 블록 사이의 픽셀 차이를 표현하는 잔차 데이터(residual data)는 잔차 블록 또는 예측 오차로서 지칭된다. 인터-코딩된 블록은 예측 블록을 형성하는 참조 프레임에서의 참조 블록을 가리키는 모션 벡터(motion vector) 및 잔차 블록에 따라 인코딩된다. 모션 벡터를 결정하는 프로세스는 전형적으로, 모션 추정(motion estimation)으로서 지칭된다. 인트라 코딩된 블록은 인트라 예측 모드 및 잔차 블록에 따라 인코딩된다. 추가의 압축을 위하여, 잔차 블록은 픽셀 도메인으로부터 변환 도메인, 예컨대, 주파수 도메인으로 변환되어 잔차 변환 계수가 생성되고, 그것은 이후에 양자화될 수 있다. 2-차원 어레이로 초기에 배열되는 양자화된 변환 계수는 변환 계수의 1-차원 벡터를 생성하도록 스캐닝(scan)될 수 있고, 그 다음으로, 훨씬 더 많은 압축을 달성하기 위하여 비디오 비트스트림으로 엔트로피 인코딩(entropy encode)될 수 있다.
인코딩된 비디오 비트스트림은 그 다음으로, 디지털 비디오 능력을 갖는 또 다른 전자 디바이스에 의해 액세스되거나 유선 또는 무선으로 전자 디바이스로 직접적으로 송신되도록 하기 위하여 컴퓨터-판독가능 저장 매체(예컨대, 플래시 메모리) 내에 저장된다. 전자 디바이스는 그 다음으로, 비트스트림으로부터 신택스 엘리먼트(syntax element)를 획득하기 위하여 인코딩된 비디오 비트스트림을 예컨대, 파싱(parsing)함으로써 그리고 비트스트림으로부터 획득된 신택스 엘리먼트에 적어도 부분적으로 기초하여 디지털 비디오 데이터를 인코딩된 비디오 비트스트림으로부터 그 원래의 포맷으로 재구성함으로써 (위에서 설명된 비디오 압축과 반대 프로세스인) 비디오 압축해제를 수행하고, 전자 디바이스의 디스플레이 상에서 재구성된 디지털 비디오 데이터를 렌더링한다.
재구성된 비디오 블록이 참조 픽처 저장소에 넣어지고 다른 비디오 블록을 코딩하기 위하여 이용되기 전에, 인-루프 필터링(in-loop filtering)이 재구성된 비디오 블록에 대해 적용된다. 적응적 루프 필터(Adaptive Loop Filters)(ALF)은 재구성된 비디오 블록의 크로마 및 루마 컴포넌트에 대해 각각 적용된다. 디코딩된 비디오 데이터의 이미지 품질을 유지하면서, 이 컬러 컴포넌트를 인코딩하고 디코딩하기 위한 더 효율적인 코딩 메커니즘을 가지는 것이 유익할 것이다.
이 출원은 비디오 데이터 인코딩 및 디코딩, 그리고 더 상세하게는, 적응적 루프 필터링에서 비트 심도 기반 클립핑 동작(bit depth based clipping operation)을 적용함으로써 비디오 프레임의 크로마 및 루마 샘플의 코딩에서의 개선의 방법 및 시스템에 관련된 구현예를 설명한다. 비디오 프레임의 각각의 루마 또는 크로마 샘플은 개개의 적응적 루프 필터(ALF) 방식에 따라 복수의 포위하는 루마 또는 크로마 샘플에 기초하여 필터링된다. 루마 또는 크로마 샘플의 각각에 대하여, 관련된 이미지 샘플 및 개개의 샘플의 차이는 개개의 클립핑 넘버(clipping number)를 지수로 하는 2의 거듭제곱과 동일한 클립 경계 값에 의해 정의된 개개의 동적 범위로 클립핑된다.
하나의 측면에서, 비디오 데이터를 코딩하는 방법은 비트스트림으로부터, 비디오 프레임의 복수의 이미지 샘플을 획득하는 단계를 포함한다. 각각의 이미지 샘플은 루마 샘플 및 크로마 샘플 중의 하나에 대응한다. 방법은 복수의 이미지 샘플의 각각에 대하여, 필터 길이 및 필터 계수들의 세트를 가지는 적응적 인-루프 필터를 이용하여 개개의 이미지 샘플을 필터링하는 단계를 더 포함한다. 개개의 이미지 샘플을 필터링하는 단계는 개개의 이미지 샘플의 필터 길이에서 관련된 이미지 샘플들의 세트를 식별하는 단계; 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플에 대하여, 개개의 클립 값 인덱스(clip value index) 및 대응하는 필터 계수를 식별하는 단계; 개개의 클립 값 인덱스에 기초하여 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플 및 개개의 이미지 샘플의 차이를 클립핑하는 단계; 및 개개의 필터 계수에 기초하여 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플의 클립핑된 차이로 개개의 이미지 샘플을 수정하는 단계를 더 포함한다. 각각의 이미지 샘플에 대하여, 개개의 클립 값 인덱스는 개개의 클립핑 넘버를 지수로 하는 2의 거듭제곱과 동일한 개개의 클립 경계 값에 대응하고, 개개의 클립핑 넘버는 정수이다. 방법은 복수의 수정된 이미지 샘플을 이용하여 비디오 프레임을 재구성하는 단계를 더 포함한다.
일부 실시예에서, 각각의 이미지 샘플에 대하여, 개개의 이미지 샘플의 IBDI를 결정함으로써; 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플에 대하여, 미리 정의된 클립핑 경계 값 공식 또는 표에 따라 IBDI 및 개개의 클립 값 인덱스에 기초하여 개개의 클립핑 경계 값을 결정함으로써, 그리고 개개의 클립핑 경계 값에 기초하여 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플 및 개개의 이미지 샘플의 차이를 클립핑함으로써, 관련된 이미지 샘플의 각각의 관련된 이미지 샘플 및 개개의 이미지 샘플의 차이가 클립핑된다. 또한, 일부 실시예에서, 미리 정의된 클립핑 경계 값 공식 또는 표는 비디오 인코더 및 비디오 디코더의 둘 모두에서 로컬 방식으로 저장된다. 각각의 이미지 샘플에 대하여, 관련된 이미지 샘플의 클립 값 인덱스는 비트스트림으로 획득된다.
또 다른 측면에서, 전자 디바이스는 하나 이상의 프로세서 및 명령을 저장하기 위한 메모리를 포함하고, 명령은, 하나 이상의 프로세서에 의해 실행될 때, 전자 디바이스로 하여금, 위에서 설명된 바와 같은 비디오 데이터를 코딩하는 방법을 수행하게 한다.
또 다른 측면에서, 비-일시적 컴퓨터 판독가능 저장 매체는 그 위에 저장된 명령을 가지고, 명령은, 전자 디바이스의 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금, 위에서 설명된 바와 같은 비디오 데이터를 코딩하는 방법을 수행하게 한다.
구현예의 추가의 이해를 제공하기 위하여 포함되고 본 명세서에서 통합되는 명세서의 일부를 구성하는 동반 도면은 설명된 구현예를 예시하고, 설명과 함께, 기초적인 원리를 설명하도록 작용한다. 유사한 참조 번호는 대응하는 부분을 지칭한다.
도 1은 일부 실시예에 따라, 예시적인 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 2는 일부 실시예에 따라, 예시적인 비디오 인코더를 예시하는 블록도이다.
도 3은 일부 실시예에 따라, 예시적인 비디오 디코더를 예시하는 블록도이다.
도 4a 내지 도 4e는 일부 실시예에 따라, 이미지 프레임을 상이한 크기 및 형상의 비디오 블록으로 재귀적으로 파티셔닝(partition)하기 위한 개략도이다.
도 5는 일부 실시예에 따라, 비트스트림에서의 비디오 프레임의 부분을 예시한다.
도 6은 일부 실시예에 따라, 비디오 인코더 또는 디코더에서 적용되는 인-루프 필터의 블록도이다.
도 7a는 일부 실시예에 따라, 루마 샘플이 루마 ALF에 의해 관련된 루마 샘플들의 세트에 기초하여 프로세싱되는 예시적인 ALF 필터링 방식이고, 도 7b는 일부 실시예에 따라, 크로마 샘플이 크로마 ALF에 의해 관련된 크로마 샘플들의 세트에 기초하여 프로세싱되는 예시적인 ALF 필터링 방식이다.
도 8은 일부 실시예에 따라, 이미지 프레임의 블록에서의 각각의 이미지 샘플의 관련된 이미지 샘플들의 세트에 대한 클립 값 인덱스를 가지는 예시적인 ALF 필터링 방식이다.
도 9a 내지 도 9c는 일부 실시예에 따라, 3 개의 예시적인 미리 정의된 클립핑 경계 값 테이블이다.
도 10은 일부 실시예에 따라, 이미지 샘플에 대하여 클립핑되어야 할 값의 데이터 구조이다.
도 11은 일부 실시예에 따라, 비디오 코딩 방법의 흐름도이다.
그 예가 첨부 도면에서 예시되는 예시적인 구현예에 대해 지금부터 참조가 상세하게 행해질 것이다. 다음의 상세한 설명에서는, 수많은 비-제한적인 특정 세부사항이 본 명세서에서 제시된 발명 요지를 이해하는 것을 보조하기 위하여 기재된다. 그러나, 다양한 대안은 청구항의 범위로부터 이탈하지 않으면서 이용될 수 있고, 발명 요지는 이 특정 세부사항 없이 실시될 수 있다는 것이 본 기술분야에서의 통상의 기술자에게 분명할 것이다. 예를 들어, 본 명세서에서 제시된 발명 요지는 디지털 비디오 능력을 갖는 많은 유형의 전자 디바이스 상에서 구현될 수 있다는 것이 본 기술분야에서의 통상의 기술자에게 분명할 것이다.
도 1은 일부 실시예에 따라, 비디오 블록을 병렬로 인코딩하고 디코딩하기 위한 예시적인 시스템(10)을 예시하는 블록도이다. 도 1에서 도시된 바와 같이, 시스템(10)은 목적지 디바이스(destination device)(14)에 의해 더 이후의 시간에 디코딩되어야 할 비디오 데이터를 생성하고 인코딩하는 출발지 디바이스(source device)(12)를 포함한다. 출발지 디바이스(12) 및 목적지 디바이스(14)는, 데스크톱 또는 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 셋톱 박스, 디지털 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 비디오 스트리밍 디바이스 등을 포함하는 광범위한 전자 디바이스 중의 임의의 것을 포함할 수 있다. 일부 구현예에서, 출발지 디바이스(12) 및 목적지 디바이스(14)는 무선 통신 능력을 구비한다.
일부 구현예에서, 목적지 디바이스(14)는 링크(16)를 통해 디코딩되어야 할 인코딩된 비디오 데이터를 수신할 수 있다. 링크(16)는 인코딩된 비디오 데이터를 출발지 디바이스(12)로부터 목적지 디바이스(14)로 이동시킬 수 있는 임의의 유형의 통신 매체 또는 디바이스를 포함할 수 있다. 하나의 예에서, 링크(16)는 출발지 디바이스(12)가 인코딩된 비디오 데이터를 실시간으로 목적지 디바이스(14)로 직접 송신하는 것을 가능하게 하기 위한 통신 매체를 포함할 수 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조될 수 있고, 목적지 디바이스(14)로 송신될 수 있다. 통신 매체는 라디오 주파수(radio frequency)(RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수 있다. 통신 매체는 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷-기반 네트워크의 일부를 형성할 수 있다. 통신 매체는 출발지 디바이스(12)로부터 목적지 디바이스(14)로의 통신을 용이하게 하기 위하여 유용할 수 있는 라우터, 스위치, 기지국, 또는 임의의 다른 장비를 포함할 수 있다.
일부 다른 구현예에서, 인코딩된 비디오 데이터는 출력 인터페이스(22)로부터 저장 디바이스(32)로 송신될 수 있다. 추후에, 저장 디바이스(32)에서의 인코딩된 비디오 데이터는 입력 인터페이스(28)를 통해 목적지 디바이스(14)에 의해 액세스될 수 있다. 저장 디바이스(32)는 인코딩된 비디오 데이터를 저장하기 위한 하드 드라이브, 블루-레이(Blu-ray) 디스크, DVD, CD-ROM, 플래시 메모리, 휘발성 또는 비-휘발성 메모리, 또는 임의의 다른 적당한 디지털 저장 매체와 같은 다양한 분산되거나 로컬 방식으로 액세스된 데이터 저장 매체 중의 임의의 것을 포함할 수 있다. 추가의 예에서, 저장 디바이스(32)는 출발지 디바이스(12)에 의해 생성된 인코딩된 비디오 데이터를 유지할 수 있는 파일 서버 또는 또 다른 중간 저장 디바이스에 대응할 수 있다. 목적지 디바이스(14)는 스트리밍 또는 다운로딩을 통해 저장 디바이스(32)로부터 저장된 비디오 데이터를 액세스할 수 있다. 파일 서버는 인코딩된 비디오 데이터를 저장할 수 있고 인코딩된 비디오 데이터를 목적지 디바이스(14)로 송신할 수 있는 임의의 유형의 컴퓨터일 수 있다. 예시적인 파일 서버는 (예컨대, 웹사이트를 위한) 웹 서버, FTP 서버, 네트워크 연결형 스토리지(network attached storage)(NAS) 디바이스, 또는 로컬 디스크 드라이브를 포함한다. 목적지 디바이스(14)는 무선 채널(예컨대, Wi-Fi 접속), 유선 접속(예컨대, DSL, 케이블 모뎀 등), 또는 파일 서버 상에서 저장된 인코딩된 비디오 데이터를 액세스하기 위하여 적당한 둘 모두의 조합을 포함하는 임의의 표준 데이터 접속을 통해 인코딩된 비디오 데이터를 액세스할 수 있다. 저장 디바이스(32)로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 둘 모두의 조합일 수 있다.
도 1에서 도시된 바와 같이, 출발지 디바이스(12)는 비디오 소스(18), 비디오 인코더(20), 및 출력 인터페이스(22)를 포함한다. 비디오 소스(18)는 비디오 캡처 디바이스, 예컨대, 비디오 카메라, 이전에 캡처된 비디오를 포함하는 비디오 아카이브(video archive), 비디오 컨텐츠 제공자로부터 비디오를 수신하기 위한 비디오 공급 인터페이스, 및/또는 소스 비디오로서 컴퓨터 그래픽 데이터를 생성하기 위한 컴퓨터 그래픽 시스템과 같은 소스, 또는 이러한 소스의 조합을 포함할 수 있다. 하나의 예로서, 비디오 소스(18)가 보안 감시 시스템의 비디오 카메라일 경우에, 출발지 디바이스(12) 및 목적지 디바이스(14)는 카메라 폰 또는 비디오 폰을 형성할 수 있다. 그러나, 본 출원에서 설명된 구현예는 일반적으로 비디오 코딩에 적용가능할 수 있고, 무선 및/또는 유선 애플리케이션에 적용될 수 있다.
캡처된(captured), 프리-캡처된(pre-captured), 또는 컴퓨터-생성된 비디오는 비디오 인코더(20)에 의해 인코딩될 수 있다. 인코딩된 비디오 데이터는 출발지 디바이스(12)의 출력 인터페이스(22)를 통해 목적지 디바이스(14)로 직접적으로 송신될 수 있다. 인코딩된 비디오 데이터는 또한(또는 대안적으로), 디코딩 및/또는 재생을 위하여, 목적지 디바이스(14) 또는 다른 디바이스에 의한 더 이후의 액세스를 위해 저장 디바이스(32) 상으로 저장될 수 있다. 출력 인터페이스(22)는 모뎀 및/또는 송신기를 더 포함할 수 있다.
목적지 디바이스(14)는 입력 인터페이스(28), 비디오 디코더(30), 및 디스플레이 디바이스(34)를 포함한다. 입력 인터페이스(28)는 수신기 및/또는 모뎀을 포함할 수 있고, 링크(16) 상에서 인코딩된 비디오 데이터를 수신할 수 있다. 링크(16) 상에서 통신되거나 저장 디바이스(32) 상에서 제공된 인코딩된 비디오 데이터는 비디오 데이터를 디코딩할 시에 비디오 디코더(30)에 의한 이용을 위하여 비디오 인코더(20)에 의해 생성된 다양한 신택스 엘리먼트를 포함할 수 있다. 이러한 신택스 엘리먼트는, 통신 매체 상에서 송신되거나, 저장 매체 상에서 저장되거나, 파일 서버에 저장된 인코딩된 비디오 데이터 내에 포함될 수 있다.
일부 구현예에서, 목적지 디바이스(14)는, 통합된 디스플레이 디바이스, 및 목적지 디바이스(14)와 통신하도록 구성되는 외부 디스플레이 디바이스일 수 있는 디스플레이 디바이스(34)를 포함할 수 있다. 디스플레이 디바이스(34)는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 액정 디스플레이(liquid crystal display)(LCD), 플라즈마 디스플레이, 유기 발광 다이오드(organic light emitting diode)(OLED) 디스플레이, 또는 또 다른 유형의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스 중의 임의의 것을 포함할 수 있다.
비디오 인코더(20) 및 비디오 디코더(30)는 VVC, HEVC, MPEG-4 파트 10, 진보된 비디오 코딩(Advanced Video Coding)(AVC), 또는 이러한 표준의 확장과 같은 독점적 또는 산업 표준에 따라 동작할 수 있다. 본 출원은 특정 비디오 코딩/디코딩 표준으로 제한되지 않고, 다른 비디오 코딩/디코딩 표준에 적용가능할 수 있다는 것이 이해되어야 한다. 출발지 디바이스(12)의 비디오 인코더(20)는 이 현재 또는 미래의 표준 중의 임의의 것에 따라 비디오 데이터를 인코딩하도록 구성될 수 있다는 것이 일반적으로 고려된다. 유사하게, 목적지 디바이스(14)의 비디오 디코더(30)는 이 현재 또는 미래의 표준 중의 임의의 것에 따라 비디오 데이터를 디코딩하도록 구성될 수 있다는 것이 또한 일반적으로 고려된다.
비디오 인코더(20) 및 비디오 디코더(30)는 각각, 하나 이상의 마이크로프로세서, 디지털 신호 프로세서(digital signal processor)(DSP), 애플리케이션 특정 집적 회로(application specific integrated circuit)(ASIC), 필드 프로그래밍가능 게이트 어레이(field programmable gate array)(FPGA), 개별 로직, 소프트웨어, 하드웨어, 펌웨어, 또는 그 임의의 조합과 같은 다양한 적당한 인코더 회로부 중의 임의이 것으로서 구현될 수 있다. 소프트웨어로 부분적으로 구현될 때, 전자 디바이스는 소프트웨어를 위한 명령을 적당한 비-일시적 컴퓨터-판독가능 매체 내에 저장할 수 있고, 본 개시내용에서 개시된 비디오 코딩/디코딩 동작을 수행하기 위하여 하나 이상의 프로세서를 이용하여 명령을 하드웨어로 실행할 수 있다. 비디오 인코더(20) 및 비디오 디코더(30)의 각각은 하나 이상의 인코더 또는 디코더 내에 포함될 수 있고, 인코더 또는 디코더 중의 어느 하나는 개개의 디바이스에서의 조합된 인코더/디코더(encoder/decoder)(CODEC)의 일부로서 통합될 수 있다.
도 2는 본 출원에서 설명된 일부 구현예에 따라, 예시적인 비디오 인코더(20)를 예시하는 블록도이다. 비디오 인코더(20)는 비디오 프레임 내의 비디오 블록의 인트라 및 인터 예측 코딩을 수행할 수 있다. 인트라 예측 코딩은 주어진 비디오 프레임 또는 픽처 내에서의 비디오 데이터에 있어서의 공간적 중복성을 감소시키거나 제거하기 위하여 공간적 예측에 의존한다. 인터 예측 코딩은 비디오 시퀀스의 인접한 비디오 프레임 또는 픽처 내에서의 비디오 데이터에 있어서의 시간적 중복성을 감소시키거나 제거하기 위하여 시간적 예측에 의존한다.
도 2에서 도시된 바와 같이, 비디오 인코더(20)는 비디오 데이터 메모리(40), 예측 프로세싱 유닛(41), 디코딩된 픽처 버퍼(decoded picture buffer)(DPB)(64), 합산기(50), 변환 프로세싱 유닛(52), 양자화 유닛(54), 및 엔트로피 인코딩 유닛(56)을 포함한다. 예측 프로세싱 유닛(41)은 모션 추정 유닛(42), 모션 보상 유닛(44), 파티션 유닛(45), 인트라 예측 프로세싱 유닛(46), 및 인트라 블록 복사(block copy)(BC) 유닛(48)을 더 포함한다. 일부 구현예에서, 비디오 인코더(20)는 또한, 역 양자화 유닛(58), 역 변환 프로세싱 유닛(60), 및 비디오 블록 재구성을 위한 합산기(62)를 포함한다. 인-루프 필터(66)는 합산기(62)와 DPB(64) 사이에서 위치결정될 수 있고, 블록 경계를 필터링하고 재구성된 비디오로부터 블록화 아티팩트(blockiness artifact)를 제거하기 위한 디블록킹 필터(deblocking filter)를 포함한다. 인-루프 필터(66)는 합산기(62)의 출력이 DPB(64) 내로 넣어지고 다른 비디오 블록을 코딩하기 위하여 이용되기 전에 합산기(62)의 출력을 필터링하기 위한 샘플 적응적 오프셋(sample adaptive offset)(SAO) 및 적응적 인-루프 필터(adaptive in-loop filter)(ALF)를 더 포함한다. 비디오 인코더(20)는 고정된 또는 프로그래밍가능한 하드웨어 유닛의 형태를 취할 수 있거나, 예시된 고정된 또는 프로그래밍가능한 하드웨어 유닛 중의 하나 이상 사이에서 분할될 수 있다.
비디오 데이터 메모리(40)는 비디오 인코더(20)의 컴포넌트에 의해 인코딩되어야 할 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리(40)에서의 비디오 데이터는 예를 들어, 비디오 소스(18)로부터 획득될 수 있다. DPB(64)는 (예컨대, 인트라 또는 인터 예측 코딩 모드에서) 비디오 인코더(20)에 의해 비디오 데이터를 인코딩할 시의 이용을 위한 참조 비디오 데이터를 저장하는 버퍼이다. 비디오 데이터 메모리(40) 및 DPB(64)는 다양한 메모리 디바이스 중의 임의의 것에 의해 형성될 수 있다. 다양한 예에서, 비디오 데이터 메모리(40)는 비디오 인코더(20)의 다른 컴포넌트과 온-칩(on-chip)일 수 있거나, 그 컴포넌트에 대하여 오프-칩(off-chip)일 수 있다.
도 2에서 도시된 바와 같이, 비디오 데이터를 수신한 후에, 예측 프로세싱 유닛(41) 내에서의 파티션 유닛(45)은 비디오 데이터를 비디오 블록으로 파티셔닝한다. 이 파티셔닝은 또한, 비디오 데이터와 연관된 쿼드-트리 구조(quad-tree structure)와 같은 미리 정의된 분할 구조에 따라, 비디오 프레임을 슬라이스, 타일, 또는 다른 더 큰 코딩 유닛(CU)으로 파티셔닝하는 것을 포함할 수 있다. 비디오 프레임은 다수의 비디오 블록(또는 타일로서 지칭된 비디오 블록들의 세트)으로 분할될 수 있다. 예측 프로세싱 유닛(41)은 오차 결과(예컨대, 코딩 레이트 및 왜곡의 레벨)에 기초하여 현재의 비디오 블록에 대하여, 복수의 인트라 예측 코딩 모드 중의 하나 또는 복수의 인터 예측 코딩 모드 중의 하나와 같은, 복수의 가능한 예측 코딩 모드 중의 하나를 선택할 수 있다. 예측 프로세싱 유닛(41)은 결과적인 인트라 또는 인터 예측 코딩된 블록을, 잔차 블록을 생성하기 위하여 합산기(50)에, 그리고 추후에 참조 프레임의 일부로서의 이용을 위한 인코딩된 블록을 재구성하기 위하여 합산기(62)에 제공할 수 있다. 예측 프로세싱 유닛(41)은 또한, 모션 벡터, 인트라-모드 지시자, 파티션 정보, 및 다른 이러한 신택스 정보와 같은 신택스 엘리먼트를 엔트로피 인코딩 유닛(56)에 제공한다.
현재의 비디오 블록에 대하여 적절한 인트라 예측 코딩 모드를 선택하기 위하여, 예측 프로세싱 유닛(41) 내에서의 인트라 예측 프로세싱 유닛(46)은 공간적 예측을 제공하기 위하여, 코딩되어야 할 현재의 블록과 동일한 프레임에서의 하나 이상의 이웃하는 블록에 대한 현재의 비디오 블록의 인트라 예측 코딩을 수행할 수 있다. 예측 프로세싱 유닛(41) 내에서의 모션 추정 유닛(42) 및 모션 보상 유닛(44)은 시간적 예측을 제공하기 위하여 하나 이상의 참조 프레임에서의 하나 이상의 예측 블록에 대한 현재의 비디오 블록의 인터 예측 코딩을 수행한다. 비디오 인코더(20)는 예컨대, 비디오 데이터의 각각의 블록에 대한 적절한 코딩 모드를 선택하기 위하여, 다수의 코딩 패스(coding pass)을 수행할 수 있다.
일부 구현예에서, 모션 추정 유닛(42)은 비디오 프레임의 시퀀스 내에서의 미리 결정된 패턴에 따라, 참조 비디오 프레임 내에서의 예측 블록에 대한 현재의 비디오 프레임 내에서의 비디오 블록의 예측 유닛(prediction unit)(PU)의 변위를 지시하는 모션 벡터를 생성함으로써 현재의 비디오 프레임에 대한 인터 예측 모드를 결정한다. 모션 추정 유닛(42)에 의해 수행된 모션 추정은 비디오 블록에 대한 모션을 추정하는 모션 벡터를 생성하는 프로세스이다. 예를 들어, 모션 벡터는 현재의 프레임(또는 다른 코딩된 유닛) 내에서 코딩되고 있는 현재의 블록에 대한 참조 프레임(또는 다른 코딩된 유닛) 내에서의 예측 블록에 대한 현재의 비디오 프레임 또는 픽처 내에서의 비디오 블록의 PU의 변위를 지시할 수 있다. 미리 결정된 패턴은 시퀀스에서의 비디오 프레임을 P 프레임 또는 B 프레임으로서 지정할 수 있다. 인트라 BC 유닛(48)은 인터 예측을 위한 모션 추정 유닛(42)에 의한 모션 벡터의 결정과 유사한 방식으로 인트라 BC 코딩을 위한 벡터, 예컨대, 블록 벡터를 결정할 수 있거나, 블록 벡터를 결정하기 위하여 모션 추정 유닛(42)을 사용할 수 있다.
예측 블록은, 절대차의 합(sum of absolute difference)(SAD), 제곱차의 합(sum of square difference)(SAD), 또는 다른 차이 메트릭에 의해 결정될 수 있는 픽셀 차이의 측면에서, 코딩되어야 할 비디오 블록의 PU와 근접하게 정합하는 것으로서 간주되는 참조 프레임의 블록이다. 일부 구현예에서, 비디오 인코더(20)는 DPB(64) 내에 저장된 참조 프레임의 정수-미만(sub-integer) 픽셀 포지션에 대한 값을 계산할 수 있다. 예를 들어, 비디오 인코더(20)는 참조 프레임의 1/4 픽셀 포지션, 1/8 픽셀 포지션, 또는 다른 분수 픽셀 포지션의 값을 보간할 수 있다. 그러므로, 모션 추정 유닛(42)은 전체 픽셀 포지션 및 분수 픽셀 포지션에 대한 모션 탐색을 수행할 수 있고, 분수 픽셀 정밀도를 갖는 모션 벡터를 출력할 수 있다.
모션 추정 유닛(42)은 PU의 포지션을, 각각이 DPB(64) 내에 저장된 하나 이상의 참조 프레임을 식별하는 제1 참조 프레임 리스트(List 0) 또는 제2 참조 프레임 리스트(List 1)로부터 선택된 참조 프레임의 예측 블록의 포지션과 비교함으로써, 인터 예측 코딩된 프레임에서의 비디오 블록의 PU에 대한 모션 벡터를 계산한다. 모션 추정 유닛(42)은 계산된 모션 벡터를 모션 보상 유닛(44)으로, 그리고 그 다음으로, 엔트로피 인코딩 유닛(56)으로 전송한다.
모션 보상 유닛(44)에 의해 수행된 모션 보상은 모션 추정 유닛(42)에 의해 결정된 모션 벡터에 기초하여 예측 블록을 페치(fetch)하거나 생성하는 것을 수반할 수 있다. 현재의 비디오 블록의 PU에 대한 모션 벡터를 수신할 시에, 모션 보상 유닛(44)은 모션 벡터가 참조 프레임 리스트 중의 하나에서 가리키는 예측 블록을 위치시킬 수 있고, DPB(64)로부터 예측 블록을 취출(retrieve)할 수 있고, 예측 블록을 합산기(50)로 포워딩할 수 있다. 합산기(50)는 그 다음으로, 코딩되고 있는 현재의 비디오 블록의 픽셀 값으로부터 모션 보상 유닛(44)에 의해 제공된 예측 블록의 픽셀 값을 감산함으로써 픽셀 차이 값의 잔차 비디오 블록을 형성한다. 잔차 비디오 블록을 형성하는 픽셀 차이 값은 루마 또는 크로마 차이 컴포넌트 또는 둘 모두를 포함할 수 있다. 모션 보상 유닛(44)은 또한, 비디오 프레임의 비디오 블록을 디코딩할 시에 비디오 디코더(30)에 의한 이용을 위한 비디오 프레임의 비디오 블록과 연관된 신택스 엘리먼트를 생성할 수 있다. 신택스 엘리먼트는 예를 들어, 예측 블록을 식별하기 위하여 이용된 모션 벡터를 정의하는 신택스 엘리먼트, 예측 모드를 지시하는 임의의 플래그, 또는 본 명세서에서 설명된 임의의 다른 신택스 정보를 포함할 수 있다. 모션 추정 유닛(42) 및 모션 보상 유닛(44)은 고도로 통합될 수 있지만, 개념적인 목적을 위하여 별도로 예시된다는 것에 주목한다.
일부 구현예에서, 인트라 BC 유닛(48)은 모션 추정 유닛(42) 및 모션 보상 유닛(44)과 관련하여 위에서 설명된 것과 유사한 방식으로 벡터를 생성할 수 있고 예측 블록을 페치할 수 있지만, 예측 블록은 코딩되고 있는 현재의 블록과 동일한 프레임 내에 있고 벡터는 모션 벡터와 반대인 블록 벡터로서 지칭된다. 특히, 인트라 BC 유닛(48)은 현재의 블록을 인코딩하기 위하여 이용하기 위한 인트라-예측 모드를 결정할 수 있다. 일부 예에서, 인트라 BC 유닛(48)은 예컨대, 별도의 인코딩 패스 동안에 다양한 인트라-예측 모드를 이용하여 현재의 블록을 인코딩할 수 있고, 레이트-왜곡 분석을 통해 그 성능을 테스팅할 수 있다. 다음으로, 인트라 BC 유닛(48)은 다양한 테스팅된 인트라-예측 모드 중에서, 인트라-모드 지시자를 이에 따라 이용하고 생성하기 위한 적절한 인트라-예측 모드를 선택할 수 있다. 예를 들어, 인트라 BC 유닛(48)은 다양한 테스팅된 인트라-예측 모드에 대한 레이트-왜곡 분석을 이용하여 레이트-왜곡 값을 계산할 수 있고, 테스팅된 모드 중에서 최상의 레이트-왜곡 특성을 가지는 인트라-예측 모드를 이용하기 위한 적절한 인트라-예측 모드로서 선택할 수 있다. 레이트-왜곡 분석은 일반적으로, 인코딩된 블록과, 인코딩된 블록을 생성하기 위하여 인코딩되었던 원래의 비인코딩된 블록과의 사이의 왜곡(또는 오차)의 양뿐만 아니라, 인코딩된 블록을 생성하기 위하여 이용된 비트레이트(즉, 비트의 수)를 결정한다. 인트라 BC 유닛(48)은 어느 인트라-예측 모드가 블록에 대한 최상의 레이트-왜곡 값을 나타내는지를 결정하기 위하여 다양한 인코딩된 블록에 대한 왜곡 및 레이트로부터 비율을 계산할 수 있다.
다른 예에서, 인트라 BC 유닛(48)은 본 명세서에서 설명된 구현예에 따라 인트라 BC 예측을 위한 이러한 기능을 수행하기 위하여 모션 추정 유닛(42) 및 모션 보상 유닛(44)을 전체적으로 또는 부분적으로 이용할 수 있다. 어느 하나의 경우에, 인트라 블록 복사를 위하여, 예측 블록은 절대차의 합(SAD), 제곱차의 합(SSD), 또는 다른 차이 메트릭에 의해 결정될 수 있는 픽셀 차이의 측면에서, 코딩되어야 할 블록과 근접하게 정합하는 것으로서 간주되는 블록일 수 있고, 예측 블록의 식별은 정수-미만 픽셀 포지션에 대한 값의 계산을 포함할 수 있다.
예측 블록이 인트라 예측에 따라 동일한 프레임으로부터, 또는 인터 예측에 따라 상이한 프레임으로부터의 것인지 관계없이, 비디오 인코더(20)는 코딩되고 있는 현재의 비디오 블록의 픽셀 값으로부터 예측 블록의 픽셀 값을 감산하여 픽셀 차이 값을 형성함으로써 잔차 비디오 블록을 형성할 수 있다. 잔차 비디오 블록을 형성하는 픽셀 차이 값은 루마 및 크로마 컴포넌트 차이의 둘 모두를 포함할 수 있다.
인트라 예측 프로세싱 유닛(46)은 위에서 설명된 바와 같이, 모션 추정 유닛(42) 및 모션 보상 유닛(44)에 의해 수행된 인터-예측, 또는 인트라 BC 유닛(48)에 의해 수행된 인트라 블록 복사 예측에 대한 대안으로서, 현재의 비디오 블록을 인트라-예측할 수 있다. 특히, 인트라 예측 프로세싱 유닛(46)은 현재의 블록을 인코딩하기 위하여 이용하기 위한 인트라-예측 모드를 결정할 수 있다. 그렇게 행하기 위하여, 인트라 예측 프로세싱 유닛(46)은 예컨대, 별도의 인코딩 패스 동안에 다양한 인트라 예측 모드를 이용하여 현재의 블록을 인코딩할 수 있고, 인트라 예측 프로세싱 유닛(46)(또는 일부 예에서, 모드 선택 유닛)은 테스팅된 인트라 예측 모드로부터 이용하기 위한 적절한 인트라 예측 모드를 선택할 수 있다. 인트라 예측 프로세싱 유닛(46)은 블록에 대한 선택된 인트라-예측 모드를 지시하는 정보를 엔트로피 인코딩 유닛(56)에 제공할 수 있다. 엔트로피 인코딩 유닛(56)은 비트스트림에서 선택된 인트라-예측 모드를 지시하는 정보를 인코딩할 수 있다.
예측 프로세싱 유닛(41)이 인터 예측 또는 인트라 예측의 어느 하나를 통해 현재의 비디오 블록에 대한 예측 블록을 결정한 후에, 합산기(50)는 현재의 비디오 블록으로부터 예측 블록을 감산함으로써 잔차 비디오 블록을 형성한다. 잔차 블록에서의 잔차 비디오 데이터는 하나 이상의 변환 유닛(TU) 내에 포함될 수 있고, 변환 프로세싱 유닛(52)에 제공된다. 변환 프로세싱 유닛(52)은 이산 코사인 변환(discrete cosine transform)(DCT) 또는 개념적으로 유사한 변환과 같은 변환을 이용하여 잔차 비디오 데이터를 잔차 변환 계수로 변환한다.
변환 프로세싱 유닛(52)은 결과적인 변환 계수를 양자화 유닛(54)으로 전송할 수 있다. 양자화 유닛(54)은 비트 레이트를 추가로 감소시키기 위하여 변환 계수를 양자화한다. 양자화 프로세스는 또한, 계수의 일부 또는 전부와 연관된 비트 심도를 감소시킬 수 있다. 양자화도(degree of quantization)는 양자화 파라미터를 조절함으로써 수정될 수 있다. 일부 예에서, 양자화 유닛(54)은 그 다음으로, 양자화된 변환 계수를 포함하는 행렬의 스캔(scan)을 수행할 수 있다. 대안적으로, 엔트로피 인코딩 유닛(56)은 스캔을 수행할 수 있다.
양자화에 후속하여, 엔트로피 인코딩 유닛(56)은 예컨대, 컨텍스트 적응적 가변 길이 코딩(context adaptive variable length coding)(CAVLC), 컨텍스트 적응적 2진 산술 코딩(context adaptive binary arithmetic coding)(CABAC), 신택스-기반 컨텍스트-적응적 2진 산술 코딩(syntax-based context-adaptive binary arithmetic coding)(SBAC), 확률 간격 파티셔닝 엔트로피(probability interval partitioning entropy)(PIPE) 코딩, 또는 또 다른 엔트로피 인코딩 방법론 또는 기법을 이용하여 양자화된 변환 계수를 비디오 비트스트림으로 엔트로피 인코딩한다. 인코딩된 비트스트림은 그 다음으로, 비디오 디코더(30)로 송신될 수 있거나, 비디오 디코더(30)로의 더 이후의 송신 또는 비디오 디코더(30)에 의한 취출을 위하여 저장 디바이스(32) 내에 아카이빙( archive)될 수 있다. 엔트로피 인코딩 유닛(56)은 또한, 코딩되고 있는 현재의 비디오 프레임에 대한 모션 벡터 및 다른 신택스 엘리먼트를 엔트로피 인코딩할 수 있다.
역 양자화 유닛(58) 및 역 변환 프로세싱 유닛(60)은 다른 비디오 블록의 예측을 위한 참조 블록을 생성하기 위해 픽셀 도메인에서 잔차 비디오 블록을 재구성하기 위하여, 역 양자화 및 역 변환을 각각 적용한다. 위에서 주목된 바와 같이, 모션 보상 유닛(44)은 DPB(64) 내에 저장된 프레임의 하나 이상의 참조 블록으로부터 모션 보상된 예측 블록을 생성할 수 있다. 모션 보상 유닛(44)은 또한, 모션 추정 시의 이용을 위한 정수-미만 픽셀 값을 계산하기 위하여 하나 이상의 보간 필터를 예측 블록에 적용할 수 있다.
합산기(62)는 DPB(64)에서의 저장을 위한 참조 블록을 생성하기 위하여, 재구성된 잔차 블록을 모션 보상 유닛(44)에 의해 생성된 모션 보상된 예측 블록에 가산한다. 참조 블록은 그 다음으로, 추후의 비디오 프레임에서 또 다른 비디오 블록을 인터 예측하기 위하여, 인트라 BC 유닛(48), 모션 추정 유닛(42), 및 모션 보상 유닛(44)에 의해 예측 블록으로서 이용될 수 있다.
도 3은 본 출원의 일부 구현예에 따라, 예시적인 비디오 디코더(30)를 예시하는 블록도이다. 비디오 디코더(30)는 비디오 데이터 메모리(79), 엔트로피 디코딩 유닛(80), 예측 프로세싱 유닛(81), 역 양자화 유닛(86), 역 변환 프로세싱 유닛(88), 합산기(90), 및 DPB(92)를 포함한다. 예측 프로세싱 유닛(81)은 모션 보상 유닛(82), 인트라 예측 프로세싱 유닛(84), 및 인트라 BC 유닛(85)을 더 포함한다. 비디오 디코더(30)는 도 2와 관련하여 비디오 인코더(20)에 대하여 위에서 설명된 인코딩 프로세스와 일반적으로 상반적인 디코딩 프로세스를 수행할 수 있다. 예를 들어, 모션 보상 유닛(82)은 엔트로피 디코딩 유닛(80)으로부터 수신된 모션 벡터에 기초하여 예측 데이터를 생성할 수 있는 반면, 인트라 예측 유닛(84)은 엔트로피 디코딩 유닛(80)으로부터 수신된 인트라-예측 모드 지시자에 기초하여 예측 데이터를 생성할 수 있다.
일부 예에서, 비디오 디코더(30)의 유닛은 본 출원의 구현예를 수행하도록 작업할당될 수 있다. 또한, 일부 예에서, 본 개시내용의 구현예는 비디오 디코더(30)의 유닛 중의 하나 이상 사이에서 분할될 수 있다. 예를 들어, 인트라 BC 유닛(85)은 단독으로, 또는 모션 보상 유닛(82), 인트라 예측 프로세싱 유닛(84), 및 엔트로피 디코딩 유닛(80)과 같은, 비디오 디코더(30)의 다른 유닛과 조합하여, 본 출원의 구현예를 수행할 수 있다. 일부 예에서, 비디오 디코더(30)는 인트라 BC 유닛(85)을 포함하지 않을 수 있고, 인트라 BC 유닛(85)의 기능성은 모션 보상 유닛(82)과 같은, 예측 프로세싱 유닛(81)의 다른 컴포넌트에 의해 수행될 수 있다.
비디오 데이터 메모리(79)는 비디오 디코더(30)의 다른 컴포넌트에 의해 디코딩되어야 할 인코딩된 비디오 비트스트림과 같은 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리(79) 내에 저장된 비디오 데이터는 예를 들어, 저장 디바이스(32)로부터, 카메라와 같은 로컬 비디오 소스로부터, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통해, 또는 물리적 데이터 저장 매체(예컨대, 플래시 드라이브 또는 하드 디스크)를 액세스함으로써 획득될 수 있다. 비디오 데이터 메모리(79)는 인코딩된 비디오 비트스트림으로부터의 인코딩된 비디오 데이터를 저장하는 코딩된 픽처 버퍼(coded picture buffer)(CPB)를 포함할 수 있다. 비디오 디코더(30)의 디코딩된 픽처 버퍼(DPB)(92)는 (예컨대, 인트라 또는 인터 예측 코딩 모드에서) 비디오 디코더(30)에 의해 비디오 데이터를 디코딩할 시의 이용을 위한 참조 비디오 데이터를 저장한다. 비디오 데이터 메모리(79) 및 DPB(92)는 동기식 DRAM(synchronous DRAM)(SDRAM)을 포함하는 동적 랜덤 액세스 메모리(dynamic random access memory)(DRAM), 자기-저항성 RAM(magneto-resistive RAM)(MRAM), 저항성 RAM(resistive RAM)(RRAM), 또는 다른 유형의 메모리 디바이스과 같은 다양한 메모리 디바이스 중의 임의의 것에 의해 형성될 수 있다. 예시적인 목적을 위하여, 비디오 데이터 메모리(79) 및 DPB(92)는 도 3에서의 비디오 디코더(30)의 2 개의 별개의 컴포넌트로서 도시된다. 그러나, 비디오 데이터 메모리(79) 및 DPB(92)는 동일한 메모리 디바이스 또는 별도의 메모리 디바이스에 의해 제공될 수 있다는 것이 본 기술분야에서의 통상의 기술자에게 분명할 것이다. 일부 예에서, 비디오 데이터 메모리(79)는 비디오 디코더(30)의 다른 컴포넌트과 함께 온-칩(on-chip)일 수 있거나, 그 컴포넌트에 대해 오프-칩(off-chip)일 수 있다.
디코딩 프로세스 동안에, 비디오 디코더(30)는 인코딩된 비디오 프레임의 비디오 블록 및 연관된 신택스 엘리먼트를 표현하는 인코딩된 비디오 비트스트림을 수신한다. 비디오 디코더(30)는 비디오 프레임 레벨 및/또는 비디오 블록 레벨에서 신택스 엘리먼트를 수신할 수 있다. 비디오 디코더(30)의 엔트로피 디코딩 유닛(80)은 양자화된 계수, 모션 벡터 또는 인트라-예측 모드 지시자, 및 다른 신택스 엘리먼트를 생성하기 위하여 비트스트림을 엔트로피 디코딩한다. 엔트로피 디코딩 유닛(80)은 그 다음으로, 모션 벡터 및 다른 신택스 엘리먼트를 예측 프로세싱 유닛(81)으로 포워딩한다.
비디오 프레임이 인트라 예측 코딩된 (I) 프레임으로서 또는 다른 유형의 프레임에서의 인트라 코딩된 예측 블록에 대하여 코딩될 때, 예측 프로세싱 유닛(81)의 인트라 예측 프로세싱 유닛(84)은 시그널링된 인트라 예측 모드, 및 현재의 프레임의 이전에 디코딩된 블록으로부터의 참조 데이터에 기초하여, 현재의 비디오 프레임의 비디오 블록에 대한 예측 데이터를 생성할 수 있다.
비디오 프레임이 인터-예측 코딩된 (즉, B 또는 P) 프레임으로서 코딩될 때, 예측 프로세싱 유닛(81)의 모션 보상 유닛(82)은 엔트로피 디코딩 유닛(80)으로부터 수신된 모션 벡터 및 다른 신택스 엘리먼트에 기초하여, 현재의 비디오의 비디오 블록에 대한 하나 이상의 예측 블록을 생성한다. 예측 블록의 각각은 참조 프레임 리스트 중의 하나 내의 참조 프레임으로부터 생성될 수 있다. 비디오 디코더(30)는 DPB(92) 내에 저장된 참조 프레임에 기초한 디폴트 구성 기법을 이용하여 참조 프레임 리스트, List 0 및 List 1을 구성할 수 있다.
일부 예에서, 비디오 블록이 본 명세서에서 설명된 인트라 BC 모드에 따라 코딩될 때, 예측 프로세싱 유닛(81)의 인트라 BC 유닛(85)은 블록 벡터 및 다른 신택스 엘리먼트에 기초하여 현재의 비디오 블록에 대한 예측 블록을 생성한다. 예측 블록은 비디오 인코더(20)에 의해 정의된 현재의 비디오 블록과 동일한 픽처의 재구성된 영역 내에 있을 수 있다.
모션 보상 유닛(82) 및/또는 인트라 BC 유닛(85)은 모션 벡터 및 다른 신택스 엘리먼트를 파싱함으로써 현재의 비디오 프레임의 비디오 블록에 대한 예측 정보를 결정하고, 그 다음으로, 디코딩되고 있는 현재의 비디오 블록에 대한 예측 블록을 생성하기 위하여 예측 정보를 이용한다. 예를 들어, 모션 보상 유닛(82)은 비디오 프레임의 비디오 블록을 코딩하기 위하여 이용된 예측 모드(예컨대, 인트라 또는 인터 예측), 인터 예측 프레임 유형(예컨대, B 또는 P), 프레임에 대한 참조 프레임 리스트 중의 하나 이상에 대한 구성 정보, 프레임의 각각의 인터 예측 인코딩된 비디오 블록에 대한 모션 벡터, 프레임의 각각의 인터 예측 코딩된 비디오 블록에 대한 인터 예측 스테이터스(status), 및 현재의 비디오 프레임에서의 비디오 블록을 디코딩하기 위한 다른 정보를 결정하기 위하여 수신된 신택스 엘리먼트의 일부를 이용한다.
유사하게, 인트라 BC 유닛(85)은 현재의 비디오 블록이 인트라 BC 모드를 이용하여 예측되었다는 것, 프레임의 어느 비디오 블록이 재구성된 영역 내에 있고 DPB(92) 내에 저장되어야 하는지의 구성 정보, 프레임의 각각의 인트라 BC 예측된 비디오 블록에 대한 블록 벡터, 프레임의 각각의 인트라 BC 예측된 비디오 블록에 대한 인트라 BC 예측 스테이터스, 및 현재의 비디오 프레임에서의 비디오 블록을 디코딩하기 위한 다른 정보를 결정하기 위하여 수신된 신택스 엘리먼트의 일부, 예컨대, 플래그를 이용할 수 있다.
모션 보상 유닛(82)은 또한, 참조 블록의 정수-미만 픽셀에 대한 보간된 값을 계산하기 위하여, 비디오 블록의 인코딩 동안에 비디오 인코더(20)에 의해 이용된 바와 같은 보간 필터를 이용하여 보간을 수행할 수 있다. 이 경우에, 모션 보상 유닛(82)은 수신된 신택스 엘리먼트로부터 비디오 인코더(20)에 의해 이용된 보간 필터를 결정할 수 있고, 예측 블록을 생성하기 위하여 보간 필터를 이용할 수 있다.
역 양자화 유닛(86)은 양자화도를 결정하기 위하여, 비트스트림에서 제공되고, 비디오 프레임에서의 각각의 비디오 블록에 대하여 비디오 인코더(20)에 의해 계산된 동일한 양자화 파라미터를 이용하여 엔트로피 디코딩 유닛(80)에 의해 엔트로피 디코딩되는 양자화된 변환 계수를 역 양자화한다. 역 변환 프로세싱 유닛(88)은 픽셀 도메인에서 잔차 블록을 재구성하기 위하여, 역 변환, 예컨대, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역 변환 프로세스를 변환 계수에 적용한다.
모션 보상 유닛(92) 또는 인트라 BC 유닛(85)이 벡터 및 다른 신택스 엘리먼트에 기초하여 현재의 비디오 블록에 대한 예측 블록을 생성한 후에, 합산기(90)는 역 변환 프로세싱 유닛(88)으로부터의 잔차 블록과, 모션 보상 유닛(82) 및 인트라 BC 유닛(85)에 의해 생성된 대응하는 예측 블록을 합산함으로써, 현재의 비디오 블록에 대한 디코딩된 비디오 블록을 재구성한다. 인-루프 필터(94)는 합산기(90)와 DPB(92) 사이에서 위치결정될 수 있고, 블록 경계를 필터링하고 디코딩된 비디오 블록으로부터 블록화 아티팩트를 제거하기 위한 디블록킹 필터를 포함한다. 인-루프 필터(94)는 합산기(90)에 의해 출력된 디코딩된 비디오 블록을 필터링하기 위한 SAO 필터 및 ALF를 더 포함한다. 주어진 프레임에서의 디코딩된 비디오 블록은 그 다음으로, 다음 비디오 블록의 추후의 모션 보상을 위하여 이용된 참조 프레임을 저장하는 DPB(92) 내에 저장된다. DPB(92), 또는 DPB(92)로부터 분리된 메모리 디바이스는 또한, 도 1의 디스플레이 디바이스(34)와 같은 디스플레이 디바이스 상에서의 더 이후의 제시를 위한 디코딩된 비디오를 저장할 수 있다.
전형적인 비디오 코딩 프로세스에서, 비디오 시퀀스는 전형적으로, 프레임 또는 픽처의 순서화된 세트를 포함한다. 각각의 프레임은 SL, SCb, 및 SCr로 나타낸 3 개의 샘플 어레이를 포함할 수 있다. SL은 루마 샘플(luma sample)의 2-차원 어레이이다. SCb는 Cb 크로마 샘플(chroma sample)의 2-차원 어레이이다. SCr은 Cr 크로마 샘플의 2-차원 어레이이다. 다른 사례에서, 프레임은 단색(monochrome)일 수 있고, 그러므로, 루마 샘플의 오직 하나의 2-차원 어레이를 포함한다.
도 4a에서 도시된 바와 같이, 비디오 인코더(20)(또는 더 구체적으로, 파티션 유닛(45))는 프레임을 코딩 트리 유닛(coding tree unit)(CTU)들의 세트로 먼저 파티셔닝함으로써 프레임의 인코딩된 표현을 생성한다. 비디오 프레임은 좌측으로부터 우측으로 그리고 상부로부터 하부로 래스터 스캔 순서(raster scan order)로 연속으로 순서화된 정수 개의 CTU를 포함할 수 있다. 각각의 CTU는 가장 큰 논리적 코딩 유닛이고, CTU의 폭 및 높이는 시퀀스 파라미터 세트(sequence parameter set)에서 비디오 인코더(20)에 의해 시그널링되어, 비디오 시퀀스에서의 모든 CTU는 128×128, 64×64, 32×32, 및 16×16 중의 하나인 동일한 크기를 가진다. 그러나, 본 출원은 특정한 크기로 반드시 제한되지는 않는다는 것이 주목되어야 한다. 도 4b에서 도시된 바와 같이, 각각의 CTU는 루마 샘플의 하나의 코딩 트리 블록(coding tree block)(CTB), 크로마 샘플의 2 개의 대응하는 코딩 트리 블록, 및 코딩 트리 블록의 샘플을 코딩하기 위하여 이용된 신택스 엘리먼트를 포함할 수 있다. 신택스 엘리먼트는 픽셀의 코딩된 블록의 상이한 유형의 유닛의 성질, 및 인터 또는 인트라 예측, 인트라 예측 모드, 모션 벡터, 및 다른 파라미터를 포함하여, 비디오 시퀀스가 비디오 디코더(30)에서 어떻게 재구성될 수 있는지를 설명한다. 단색 픽처, 또는 3 개의 별도의 컬러 평면을 가지는 픽처에서, CTU는 단일 코딩 트리 블록, 및 코딩 트리 블록의 샘플을 코딩하기 위하여 이용된 신택스 엘리먼트를 포함할 수 있다. 코딩 트리 블록은 샘플의 NxN 블록일 수 있다.
더 양호한 성능을 달성하기 위하여, 비디오 인코더(20)는 2진-트리 파티셔닝(binary-tree partitioning), 3진-트리 파티셔닝(ternary-tree partitioning), 쿼드-트리 파티셔닝(quad-tree partitioning), 또는 CTU의 코딩 트리 블록에 대한 둘 모두의 조합과 같은 트리 파티셔닝을 재귀적으로 수행할 수 있고, CTU를 더 작은 코딩 유닛(CU)으로 분할할 수 있다. 도 4c에서 도시된 바와 같이, 64x64 CTU(400)는 4 개의 더 작은 CU로 먼저 분할되고, 각각은 32x32의 블록 크기를 가진다. 4 개의 더 작은 CU 중에서, CU(410) 및 CU(420)는 블록 크기에 의해 16x16의 4 개의 CU로 각각 분할된다. 2 개의 16x16 CU(430 및 440)은 블록 크기에 의해 8x8의 4 개의 CU로 각각 추가로 분할된다. 도 4d는 도 4c에서 도시된 바와 같은 CTU(400)의 파티션 프로세스의 종료 결과를 예시하는 쿼드-트리 데이터 구조를 도시하고, 쿼드-트리의 각각의 리프 노드(leaf node)는 32x32로부터 8x8까지의 범위인 개개의 크기의 하나의 CU에 대응한다. 도 4b에서 도시된 CTU와 같이, 각각의 CU는 동일한 크기의 프레임의 루마 샘플의 코딩 블록(CB) 및 크로마 샘플의 2 개의 대응하는 코딩 블록, 및 코딩 블록의 샘플을 코딩하기 위하여 이용된 신택스 엘리먼트를 포함할 수 있다. 단색 픽처, 또는 3 개의 별도의 컬러 평면을 가지는 픽처에서, CU는 단일 코딩 블록, 및 코딩 블록의 샘플을 코딩하기 위하여 이용된 신택스 구조를 포함할 수 있다. 도 4c 및 도 4d에서 도시된 쿼드-트리 파티셔닝은 오직 예시적인 목적을 위한 것이고, 하나의 CTU는 쿼드/3진/2진-트리 파티션에 기초하여 변동하는 국소적 특성에 적응시키기 위하여 CU로 분할될 수 있다. 멀티-유형 트리 구조에서, 하나의 CTU는 쿼드-트리 구조에 의해 파티셔닝되고, 각각의 쿼드-트리 리프 CU는 2진 및 3진 트리 구조에 의해 추가로 파티셔닝될 수 있다. 도 4e에서 도시된 바와 같이, 5 개의 파티셔닝 유형, 즉, 4진 파티셔닝(quaternary partitioning), 수직 2진 파티셔닝, 수평 3진 파티셔닝, 및 수직 3진 파티셔닝이 있다.
일부 구현예에서, 비디오 인코더(20)는 CU의 코딩 블록을 하나 이상의 MxN 예측 블록(prediction block)(PB)로 추가로 파티셔닝할 수 있다. 예측 블록은 동일한 예측인 인터 또는 인트라가 적용되는 샘플의 직사각형(정사각형 또는 비-정사각형) 블록이다. CU의 예측 유닛(PU)은 루마 샘플의 예측 블록, 크로마 샘플의 2 개의 대응하는 예측 블록, 및 예측 블록을 예측하기 위하여 이용된 신택스 엘리먼트를 포함할 수 있다. 단색 픽처, 또는 3 개의 별도의 컬러 평면을 가지는 픽처에서, PU는 단일 예측 블록, 및 예측 블록을 예측하기 위하여 이용된 신택스 구조를 포함할 수 있다. 비디오 인코더(20)는 CU의 각각의 PU의 루마, Cb, 및 Cr 예측 블록에 대한 예측 루마, Cb, 및 Cr 블록을 생성할 수 있다.
비디오 인코더(20)는 PU에 대한 예측 블록을 생성하기 위하여 인트라 예측 또는 인터 예측을 이용할 수 있다. 비디오 인코더(20)가 PU의 예측 블록을 생성하기 위하여 인트라 예측을 이용할 경우에, 비디오 인코더(20)는 PU와 연관된 프레임의 디코딩된 샘플에 기초하여 PU의 예측 블록을 생성할 수 있다. 비디오 인코더(20)가 PU의 예측 블록을 생성하기 위하여 인터 예측을 이용할 경우에, 비디오 인코더(20)는 PU와 연관된 프레임 이외의 하나 이상의 프레임의 디코딩된 샘플에 기초하여 PU의 예측 블록을 생성할 수 있다.
비디오 인코더(20)가 CU의 하나 이상의 PU에 대한 예측 루마, Cb, 및 Cr 블록을 생성한 후에, 비디오 인코더(20)는 CU의 루마 잔차 블록에서의 각각의 샘플이 CU의 예측 루마 블록 중의 하나에서의 루마 샘플과 CU의 원래의 루마 코딩 블록에서의 대응하는 샘플과의 사이의 차이를 지시하도록, 그 원래의 루마 코딩 블록으로부터 CU의 예측 루마 블록을 감산함으로써 CU에 대한 루마 잔차 블록을 생성할 수 있다. 유사하게, 비디오 인코더(20)는 CU에 대한 Cb 잔차 블록 및 Cr 잔차 블록을 각각 생성할 수 있어서, CU의 Cb 잔차 블록에서의 각각의 샘플은 CU의 예측 Cb 블록 중의 하나에서의 Cb 샘플과 CU의 원래의 Cb 코딩 블록에서의 대응하는 샘플과의 사이의 차이를 지시하고, CU의 Cr 잔차 블록에서의 각각의 샘플은 CU의 예측 Cr 블록 중의 하나에서의 Cr 샘플과 CU의 원래의 Cr 코딩 블록에서의 대응하는 샘플과의 사이의 차이를 지시할 수 있다.
또한, 도 4c에서 예시된 바와 같이, 비디오 인코더(20)는 CU의 루마, Cb, 및 Cr 잔차 블록을 하나 이상의 루마, Cb, 및 Cr 변환 블록으로 분해하기 위하여 쿼드-트리 파티셔닝을 이용할 수 있다. 변환 블록은 동일한 변환이 적용되는 샘플의 직사각형(정사각형 또는 비-정사각형) 블록이다. CU의 변환 유닛(TU)은 루마 샘플의 변환 블록, 크로마 샘플의 2 개의 대응하는 변환 블록, 및 변환 블록 샘플을 변환하기 위하여 이용된 신택스 엘리먼트를 포함할 수 있다. 따라서, CU의 각각의 TU는 루마 변환 블록, Cb 변환 블록, 및 Cr 변환 블록과 연관될 수 있다. 일부 예에서, TU와 연관된 루마 변환 블록은 CU의 루마 잔차 블록의 서브-블록일 수 있다. Cb 변환 블록은 CU의 Cb 잔차 블록의 서브-블록일 수 있다. Cr 변환 블록은 CU의 Cr 잔차 블록의 서브-블록일 수 있다. 단색 픽처, 3 개의 별도의 컬러 평면을 가지는 픽처에서, TU는 단일 변환 블록, 및 변환 블록의 샘플을 변환하기 위하여 이용된 신택스 구조를 포함할 수 있다.
비디오 인코더(20)는 TU에 대한 루마 계수 블록을 생성하기 위하여 하나 이상의 변환을 TU의 루마 변환 블록에 적용할 수 있다. 계수 블록은 변환 계수의 2-차원 어레이일 수 있다. 변환 계수는 스칼라량(scalar quantity)일 수 있다. 비디오 인코더(20)는 TU에 대한 Cb 계수 블록을 생성하기 위하여 하나 이상의 변환을 TU의 Cb 변환 블록에 적용할 수 있다. 비디오 인코더(20)는 TU에 대한 Cr 계수 블록을 생성하기 위하여 하나 이상의 변환을 TU의 Cr 변환 블록에 적용할 수 있다.
계수 블록(예컨대, 루마 계수 블록, Cb 계수 블록, 또는 Cr 계수 블록)을 생성한 후에, 비디오 인코더(20)는 계수 블록을 양자화할 수 있다. 양자화는 일반적으로, 변환 계수를 표현하기 위하여 이용된 데이터의 양을 아마도 감소시키기 위하여 변환 계수이 양자화되어 추가의 압축을 제공하는 프로세스를 지칭한다. 비디오 인코더(20)가 계수 블록을 양자화한 후에, 비디오 인코더(20)는 양자화된 변환 계수를 지시하는 신택스 엘리먼트를 엔트로피 인코딩할 수 있다. 예를 들어, 비디오 인코더(20)는 양자화된 변환 계수를 지시하는 신택스 엘리먼트에 대해 컨텍스트-적응적 2진 산술 코딩(CABAC)을 수행할 수 있다. 최종적으로, 비디오 인코더(20)는 코딩된 프레임 및 연관된 데이터의 표현을 형성하는 비트의 시퀀스를 포함하는 비트스트림을 출력할 수 있고, 비트스트림은 저장 디바이스(32)에서 저장되거나 목적지 디바이스(14)로 송신된다.
비디오 인코더(20)에 의해 생성된 비트스트림을 수신한 후에, 비디오 디코더(30)는 비트스트림으로부터 신택스 엘리먼트를 획득하기 위하여 비트스트림을 파싱할 수 있다. 비디오 디코더(30)는 비트스트림으로부터 획득된 신택스 엘리먼트에 적어도 부분적으로 기초하여 비디오 데이터의 프레임을 재구성할 수 있다. 비디오 데이터를 재구성하는 프로세스는 일반적으로, 비디오 인코더(20)에 의해 수행된 인코딩 프로세스와 상반적이다. 예를 들어, 비디오 디코더(30)는 현재의 CU의 TU과 연관된 잔차 블록을 재구성하기 위하여 현재의 CU의 TU과 연관된 계수 블록에 대해 역 변환을 수행할 수 있다. 비디오 디코더(30)는 또한, 현재의 CU의 PU에 대한 예측 블록의 샘플을 현재의 CU의 TU의 변환 블록의 대응하는 샘플에 가산함으로써 현재의 CU의 코딩 블록을 재구성한다. 프레임의 각각의 CU에 대한 코딩 블록을 재구성한 후에, 비디오 디코더(30)는 프레임을 재구성할 수 있다.
위에서 주목된 바와 같이, 비디오 코딩은 주로 2 개의 모드, 즉, 인트라-프레임 예측(또는 인트라-예측) 및 인터-프레임 예측(또는 인터-예측)을 이용하여 비디오 압축을 달성한다. 팔레트-기반 코딩(palette-based coding)은 많은 비디오 코딩 표준에 의해 채택되었던 또 다른 코딩 방식이다. 스크린-생성된 컨텐츠 코딩(screen-generated content coding)을 위하여 특히 적당할 수 있는 팔레트-기반 코딩에서, 비디오 코더(예컨대, 비디오 인코더(20) 또는 비디오 디코더(30))는 주어진 블록의 비디오 데이터를 표현하는 컬러의 팔레트 테이블(palette table)을 형성한다. 팔레트 테이블은 주어진 블록에서의 가장 지배적인(예컨대, 빈번하게 이용된) 픽셀 값을 포함한다. 주어진 블록의 비디오 데이터에서 빈번하게 표현되지 않은 픽셀 값은 팔레트 테이블 내에 포함되지 않거나, 탈출 컬러(excape color)로서 팔레트 테이블 내에 포함된다.
팔레트 테이블에서의 각각의 엔트리(entry)는 팔레트 테이블 내에 있는 대응하는 픽셀 값에 대한 인덱스를 포함한다. 블록에서의 샘플에 대한 팔레트 인덱스는 팔레트 테이블로부터의 어느 엔트리가 어느 샘플을 예측하거나 재구성하기 위하여 이용되어야 하는지를 지시하기 위하여 코딩될 수 있다. 이 팔레트 모드는 비디오 블록의 픽처, 슬라이스, 타일, 또는 다른 이러한 그룹화의 최초 블록에 대한 팔레트 예측자(palette predictor)를 생성하는 프로세스와 함께 시작한다. 이하에서 설명되는 바와 같이, 추후의 비디오 블록에 대한 팔레트 예측자는 전형적으로, 이전에 이용된 팔레트 예측자를 업데이팅함으로써 생성된다. 예시적인 목적을 위하여, 팔레트 예측자는 픽처 레벨에서 정의되는 것으로 가정된다. 다시 말해서, 픽처는 다수의 코딩 블록을 포함할 수 있고, 각각의 그 자신의 팔레트 테이블을 가지지만, 전체 픽처에 대하여 하나의 팔레트 예측자가 있다.
비디오 비트스트림에서 팔레트 엔트리를 시그널링하기 위하여 필요한 비트를 감소시키기 위하여, 비디오 디코더는 비디오 블록을 재구성하기 위하여 이용된 팔레트 테이블에서의 새로운 팔레트 엔트리를 결정하기 위한 팔레트 예측자를 사용할 수 있다. 예를 들어, 팔레트 예측자는 이전에 이용된 팔레트 테이블로부터의 팔레트 엔트리를 포함할 수 있거나, 또는 심지어, 가장 최근에 이용된 팔레트 테이블의 모든 엔트리를 포함함으로써 가장 최근에 이용된 팔레트 테이블로 초기화될 수 있다. 일부 구현예에서, 팔레트 예측자는 가장 최근에 이용된 팔레트 테이블로부터의 전부보다 더 적은 엔트리를 포함할 수 있고, 그 다음으로, 다른 이전에 이용된 팔레트 테이블로부터의 일부 엔트리를 통합할 수 있다. 팔레트 예측자는 상이한 블록을 코딩하기 위하여 이용된 팔레트 테이블과 동일한 크기를 가질 수 있거나, 상이한 블록을 코딩하기 위하여 이용된 팔레트 테이블보다 클 수 있거나 작을 수 있다. 하나의 예에서, 팔레트 예측자는 64 개의 팔레트 엔트리를 포함하는 선입선출(first-in-first-out)(FIFO) 테이블로서 구현된다.
팔레트 예측자로부터 비디오 데이터의 블록에 대한 팔레트 테이블을 생성하기 위하여, 비디오 디코더는 인코딩된 비디오 비트스트림으로부터, 팔레트 예측자의 각각의 엔트리에 대한 1-비트 플래그(one-bit flag)를 수신할 수 있다. 1-비트 플래그는 팔레트 예측자의 연관된 엔트리가 팔레트 테이블 내에 포함되어야 한다는 것을 지시하는 제1 값(예컨대, 2진수 1), 또는 팔레트 예측자의 연관된 엔트리가 팔레트 테이블 내에 포함되지 않아야 한다는 것을 지시하는 제2 값(예컨대, 2진수 제로(zero))을 가질 수 있다. 팔레트 예측자의 크기가 비디오 데이터의 블록에 대하여 이용된 팔레트 테이블보다 클 경우에, 일단 팔레트 테이블에 대한 최대 크기에 도달하면, 비디오 디코더는 더 많은 플래그를 수신하는 것을 정지시킬 수 있다.
일부 구현예에서, 팔레트 테이블에서의 일부 엔트리는 팔레트 예측자를 이용하여 결정되는 대신에, 인코딩된 비디오 비트스트림에서 직접적으로 시그널링될 수 있다. 이러한 엔트리에 대하여, 비디오 디코더는 인코딩된 비디오 비트스트림으로부터, 루마에 대한 픽셀 값을 지시하는 3 개의 별도의 m-비트 값, 및 엔트리와 연관된 2 개의 크로마 컴포넌트를 수신할 수 있고, 여기서, m은 비디오 데이터의 비트 심도를 표현한다. 직접적으로 시그널링된 팔레트 엔트리를 위하여 필요한 다수의 m-비트 값과 비교하면, 팔레트 예측자로부터 유도된 그 팔레트 엔트리는 1-비트 플래그를 오직 요구한다. 그러므로, 팔레트 예측자를 이용하여 일부 또는 모든 팔레트 엔트리를 시그널링하는 것은 새로운 팔레트 테이블의 엔트리를 시그널링하기 위하여 필요한 비트의 수를 상당히 감소시킬 수 있고, 이에 의해, 팔레트 모드 코딩의 전체적인 코딩 효율을 개선시킬 수 있다.
많은 사례에서, 하나의 블록에 대한 팔레트 예측자는 하나 이상의 이전에 코딩된 블록을 코딩하기 위하여 이용된 팔레트 테이블에 기초하여 결정된다. 그러나, 픽처, 슬라이스, 또는 타일에서의 최초 코딩 트리 유닛을 코딩할 때, 이전에 코딩된 블록의 팔레트 테이블은 이용가능하지 않을 수 있다. 그러므로, 팔레트 예측자는 이전에 이용된 팔레트 테이블의 엔트리를 이용하여 생성될 수 없다. 이러한 경우에, 팔레트 예측자 이니셜라이저(initializer)의 시퀀스는 시퀀스 파라미터 세트(sequence parameter set)(SPS) 및/또는 픽처 파라미터 세트(picture parameter set)(PPS)에서 시그널링될 수 있고, 팔레트 예측자 이니셜라이저은 이전에 이용된 팔레트 테이블이 이용가능하지 않을 때에 팔레트 예측자를 생성하기 위하여 이용된 값이다. SPS는 일반적으로, 각각의 슬라이스 세그먼트 헤더에서 발견된 신택스 엘리먼트에 의해 참조된 PPS에서 발견된 신택스 엘리먼트의 내용에 의해 결정된 바와 같은, 코딩된 비디오 시퀀스(coded video sequence)(CVS)로 칭해진 일련의 연속 코딩된 비디오 픽처에 적용하는 신택스 엘리먼트의 신택스 구조를 지칭한다. PPS는 일반적으로, 각각의 슬라이스 세그먼트 헤더에서 발견된 신택스 엘리먼트에 의해 결정된 바와 같은, CVS 내의 하나 이상의 개별적인 픽처에 적용되는 신택스 엘리먼트의 신택스 구조를 지칭한다. 따라서, SPS는 일반적으로, PPS보다 더 높은 레벨의 신택스 구조인 것으로 고려되고, 이것은 SPS 내에 포함된 신택스 엘리먼트가 PPS 내에 포함된 신택스 엘리먼트과 비교하여, 일반적으로 덜 빈번하게 변경되고 비디오 데이터의 더 큰 부분에 적용된다는 것을 의미한다.
도 5는 일부 실시예에 따라, 비트스트림에서의 비디오 프레임(500)의 부분을 예시한다. 비디오 프레임(500)은 복수의 픽셀을 포함하고, 각각의 픽셀은 복수의 컬러 엘리먼트(예컨대, 청색, 녹색, 및 적색)로 이루어진다. 비디오 인코딩 및 디코딩에서, 복수의 픽셀의 컬러 정보는 복수의 루마 샘플(502) 및 복수의 크로마 샘플(504)에 의해 표현된다. 복수의 픽셀의 각각은 개개의 루마 샘플(502)에 대응하고, 각각의 루마 샘플(502)은 또한, 비디오 프레임(500)에서의 개개의 픽셀에 대응한다. 각각의 크로마 샘플(504)은 서브샘플링 방식에 따라 루마 샘플(502)들의 개개의 세트에 대응한다. 각각의 루마 샘플(502)은 루마 컴포넌트 Y'을 가지고, 각각의 크로마 샘플(504)은 청색-차이 크로마 컴포넌트 Cb 및 적색-차이 크로마 컴포넌트 Cr을 가진다. 루마 및 크로마 컴포넌트(Y':Cb:Cr)의 서브샘플링 방식은 3-파트 비율(3-part ratio), 예컨대, 4:1:1, 4:2:0, 4:2:2, 4:4:4, 및 4:4:0을 가진다. 구체적으로, 비디오 프레임(500)의 루마 샘플(502) 및 크로마 샘플(504)은 4:1:1과 동일한 3-파트 비율을 가지는 서브샘플링 방식을 따르고, 평균적으로, 매 4 개의 루마 샘플(502)은 청색-차이 크로마 컴포넌트 Cb 및 적색-차이 크로마 컴포넌트 Cr을 가지는 하나의 크로마 샘플(504)에 대응한다.
도 6은 일부 실시예에 따라, 비디오 인코더(20) 또는 디코더(30)에서 적용되는 인-루프 필터(600)의 블록도이다. 비디오 인코딩 또는 인코딩에서, 루마 샘플(502) 및 크로마 샘플(504)의 각각은 비디오 프레임(500)의 잔차 블록으로부터 재구성되고, 아티팩트를 제거하기 위하여 인-루프 필터(600)(예컨대, 도 2 및 도 3에서의 인-루프 필터(66 및 94))의 디블록킹 필터, 하나 이상의 샘플 적응적 오프셋(SAO)(sample adaptive offset) 필터(602), 및 하나 이상의 적응적 루프 필터(ALF)(adaptive loop filter) 필터(604)에 의해 필터링된다. 필터링된 루마 샘플(606) 및 크로마 샘플(608)은 디코딩된 픽처 버퍼(64 또는 92)로 저장되고, 비디오 프레임(500)에서의 다른 비디오 블록을 코딩하거나 디코딩하기 위하여 이용된다. 일부 실시예에서, 디블록킹, SAO(602), 및 ALF 필터(604)의 각각은 동일한 유형의 샘플에 기초하여 루마 샘플(502) 또는 크로마 샘플(504)을 필터링하도록 구성되고, 예컨대, 인접한 루마 샘플(502)들의 개개의 세트에 기초하여 각각의 루마 샘플(502)을 필터링하고 인접한 크로마 샘플(504)들의 개개의 세트에 기초하여 각각의 루마 샘플(502)을 필터링하도록 구성된다. 일부 실시예에서, 인-루프 필터(600)는 개개의 크로마 샘플(504)에 인접한 하나 이상의 루마 샘플(502)에 기초하여 각각의 크로마 샘플(504)을 필터링하도록 구성된 교차 컴포넌트 필터(610)를 더 포함한다. 반대로, 일부 실시예에서, 인-루프 필터(600)는 개개의 루마 샘플(502)에 인접한 하나 이상의 크로마 샘플(504)에 기초하여 각각의 루마 샘플(502)을 필터링하도록 구성된 대안적인 교차 컴포넌트 필터를 포함한다.
구체적으로, 비디오 인코더(20) 또는 디코더(30)는 비디오 프레임(500)의 복수의 루마 샘플(502) 및 복수의 크로마 샘플(504)을 획득한다. 각각의 루마 샘플(502)은 개개의 루미넌스 값(luminance value)을 가지고, 각각의 크로마 샘플(504)은 개개의 루미넌스 값을 가진다. SAO 필터(602)는 복수의 루마 샘플(502) 및 복수의 크로마 샘플(504)의 각각을 보상한다. 구체적으로, SAO 필터(602A, 602B, 및 602C)은 루마 샘플(502), 크로마 샘플(504)의 청색-차이 크로마 컴포넌트 Cb, 및 크로마 샘플(504)의 적색-차이 크로마 컴포넌트 Cr을 각각 보상한다. ALF(604)은 SAO 필터(602)에 결합된다. 보상된 루마 샘플(612)의 각각은 인접한 보상된 루마 샘플(612)들의 세트에 기초하여 루마 ALF(604A)를 이용하여 루마 샘플(606)로 업데이팅되는 반면, 보상된 크로마 샘플(614A 및 614B)의 각각은 인접한 보상된 크로마 샘플(614)들의 세트에 기초하여 크로마 ALF(604B)를 이용하여 크로마 샘플(608A 또는 608B)로 업데이팅된다.
일부 실시예에서, 교차 컴포넌트 필터(610)는 루마 샘플(502)들의 세트에 기초하여 각각의 크로마 샘플(504)에 대한 크로마 정제(refinement) 값(616)을 생성하도록 구성된다. 개개의 크로마 샘플(504)은 크로마 정제 값(616)을 이용하여 업데이팅되고, 즉, 개개의 크로마 샘플(504)의 크로미넌스 값(chrominance value)은 크로마 정제 값(616)으로 정제된다. 업데이팅된 개개의 크로마 샘플(608)은 비디오 프레임(500)과 연관시켜서 저장된다. 일부 실시예에서, 교차 컴포넌트 필터(610)는 제1 정제 값(616A) 및 제2 정제 값(616B)을 생성하도록 구성된 제1 교차 컴포넌트 필터(610A) 및 제2 교차 컴포넌트 필터(610)를 포함한다. 청색-차이 및 적색-차이 크로마 컴포넌트(618A 및 618B)은 제1 정제된 크로미넌스 값(608A) 및 제2 정제된 크로미넌스 값(608B)을 각각 출력하기 위하여 제1 및 제2 정제 값(616A 및 616B)을 이용하여 별도로 업데이팅된다.
인-루프 필터(600)의 디블록킹, SAO, 및 ALF 필터의 각각은 하나 이상의 인-루프 필터 계수를 포함하고, 교차 컴포넌트 ALF(610)는 또한, 복수의 교차 컴포넌트 필터 계수를 포함한다. 인-루프 및 교차 컴포넌트 필터 계수는 적응 파라미터 세트(Adaptation Parameter Set)(APS)에서 시그널링된다. 예에서, APS는 루마 필터 계수들 및 클립핑 값 인덱스들의 다수의 세트(예컨대, 최대 25 개의 세트), 및 크로마 필터 계수들 및 클립핑 값 인덱스들의 다수의 세트(예컨대, 최대 8 개의 세트)를 운반하고 시그널링한다. APS는 비트스트림에서의 비디오 프레임(500)과 함께 비디오 인코더(20)로부터 비디오 디코더(30)로 전송되고, 즉, APS는 비트스트림의 전송의 오버헤드(overhead)이다. 일부 실시예에서, 루마 샘플(502)의 루마 컴포넌트에 대한 상이한 분류의 필터 계수는 비트스트림의 전송의 오버헤드를 감소시키기 위하여 병합한다. 예에서, 이미지 슬라이스를 위하여 이용된 APS의 인덱스는 대응하는 슬라이스 헤더에서 시그널링된다.
도 7a는 일부 실시예에 따라, 루마 샘플(502A)이 루마 ALF(604A)에 의해 관련된 루마 샘플(502B)들의 세트에 기초하여 프로세싱되는 예시적인 ALF 필터링 방식(700)이고, 도 7b는 일부 실시예에 따라, 크로마 샘플(504A)이 크로마 ALF(604B)에 의해 관련된 크로마 샘플(504B)들의 세트에 기초하여 프로세싱되는 예시적인 ALF 필터링 방식(750)이다. 루마 ALF(604A)는, 마름모 필터 형상(예컨대, 7x7 마름모 형상)을 가지고, 국소적 경도(local gradient)의 방향 및 활성에 기초하여 각각의 4x4 블록에 대해 복수의 미리 정의된 필터(예컨대, 미리 정의된 필터 계수를 가지는 25 개의 필터)로부터 선택된다. 도 7a에서의 각각의 정사각형은 마름모 형상을 가지는 루마 ALF(604A)의 대응하는 필터 계수(C0 내지 C12)로 표기된 루마 샘플(502)을 표현한다. 루마 샘플(502A)에 대하여, 총 13 개의 필터 계수(C0 내지 C12)가 루마 ALF(604A)를 이용하여 25 개의 루마 샘플(502)을 조합하기 위하여 대칭적으로 적용된다. 유사하게, 크로마 ALF(604B)는 마름모 필터 형상(예컨대, 5x5 마름모 형상)을 가지고, 복수의 미리 정의된 필터(예컨대, 미리 정의된 필터 계수를 가지는 8 개의 필터)로부터 선택된다. 도 7b에서의 각각의 정사각형은 마름모 형상을 가지는 크로마 ALF(604B)의 대응하는 필터 계수(C0 내지 C6)로 표기된 크로마 샘플(504)을 표현한다. 크로마 샘플(504A)에 대하여, 총 7 개의 필터 계수(C0 내지 C6)가 크로마 ALF(604B)에서의 13 개의 크로마 샘플(504)을 조합하기 위하여 대칭적으로 적용된다.
적응적 루프 필터링이 예컨대, CTB에 대하여 인에이블될 때, CU 내에서의 각각의 이미지 샘플 (예컨대, 루마 샘플(502A), 크로마 샘플(504A))이 필터링되고, 다음과 같은 샘플 값 을 생성한다:
여기서, 은 디코딩된 필터 계수를 나타내고, 은 클립핑 함수(clipping function)이고, 은 디코딩된 클립핑 파라미터를 나타낸다. 변수 내지 사이에서 변동되고, 여기서, 은 필터 길이를 나타낸다.
적응적 루프 필터링에서의 클립핑을 위하여, 각각의 이미지 샘플은 ALF(604)의 필터 길이 에서의 관련된 이미지 샘플들의 세트를 수반한다. 도 7a를 참조하면, 각각의 루마 샘플(502A)의 관련된 루마 샘플(502B)은 개개의 루마 샘플(502A) 상부의 루마 샘플의 3 개의 행(row)(즉, 9 개의 루마 샘플), 개개의 루마 샘플(502A) 하부의 루마 샘플의 3 개의 행(즉, 9 개의 루마 샘플), 개개의 루마 샘플(502A)의 좌측의 3 개의 루마 샘플, 및 개개의 루마 샘플(502A)의 우측의 3 개의 루마 샘플을 포함한다. 도 7b를 참조하면, 각각의 크로마 샘플(504A)의 관련된 크로마 샘플(504B)은 개개의 크로마 샘플(504A) 상부의 크로마 샘플의 2 개의 행(즉, 4 개의 크로마 샘플), 개개의 크로마 샘플(504A) 하부의 크로마 샘플의 2 개의 행(즉, 4 개의 크로마 샘플), 개개의 크로마 샘플(504A)의 좌측의 2 개의 크로마 샘플, 및 개개의 크로마 샘플(504A)의 우측의 2 개의 크로마 샘플을 포함한다.
일부 실시예에서, ALF 필터 파라미터은 전술한 클립핑 파라미터 을 표현하는 클립핑 값 인덱스를 포함하는 APS에서 시그널링된다. 하나의 APS에서, 루마 필터 계수들 및 클립핑 값 인덱스들의 최대 25 개의 세트(예컨대, 도 7a에서의 C0 내지 C12의 세트), 및 크로마 필터 계수들 및 클립핑 값 인덱스들의 최대 8 개의 세트(예컨대, 도 7b에서의 C0 내지 C6의 세트)가 시그널링될 수 있다. 시그널링 비트 오버헤드를 감소시키기 위하여, 루마 샘플(502A)에 대한 상이한 분류의 필터 계수이 병합될 수 있다. 슬라이스 헤더에서는, 현재의 슬라이스를 위하여 이용된 APS의 인덱스가 시그널링된다. APS로부터 디코딩되는 클립핑 값 인덱스는 미리 정의된 클립핑 경계 값 공식 또는 테이블을 이용하여 클립핑 경계 값을 결정하는 것을 허용한다. 이 경계 클립핑 값은 내부 비트 심도에 종속적이고, 관련된 이미지 샘플들의 세트 및 이미지 샘플(502A 또는 504A)의 차이가 클립핑되는 동적 범위를 정의한다. 일부 실시예에서, 상이한 미리 정의된 클립핑 경계 값 공식 또는 테이블은 루마 샘플(502A) 및 크로마 샘플(504A)에 적용된다.
일부 실시예에서는, 슬라이스 헤더에서, 복수의 APS 인덱스(예컨대, 7 개의 인덱스)이 현재의 슬라이스에서의 적응적 루프 필터링을 위한 복수의 대응하는 루마 및 크로마 필터 세트의 서브세트를 선택하기 위하여 시그널링된다. 이 적응적 루프 필터링 프로세스는 CTB 레벨에서 제어될 수 있다. 플래그는 적응적 루프 필터링이 루마 CTB에 적용되는지 여부를 지시하기 위하여 시그널링된다. 플래그가 적응적 루프 필터링을 가능하게 한다는 결정에 따라, 루마 CTB는 복수의(예컨대, 16 개의) 루마 필터 세트 중에서 루마 필터 세트를 선택한다. 루마 필터 세트 인덱스는 어느 루마 필터 세트가 적용되는지를 지시하기 위하여 루마 CTB에 대하여 시그널링된다. 복수의 필터 세트의 각각은 미리 정의되고, 인코더(20) 및 디코더(30)의 둘 모두에서 하드-코딩(hard-code)되고, 오직 루마 필터 세트 인덱스가 비디오 프레임(500)을 운반하는 비트스트림과 함께 송신될 필요가 있다. 마찬가지로, 크로마 샘플(504A)에 대하여, 플래그가 적응적 루프 필터링을 인에이블할 때, 크로마 필터 세트 인덱스는 현재의 슬라이스의 적응적 루프 필터링을 위한 복수의 크로마 필터 세트 중의 하나를 선택하기 위하여 슬라이스 헤더에서 시그널링된다. CTB 레벨에서, APS에서 하나 초과의 크로마 필터 세트가 있을 경우에, 크로마 필터 세트 인덱스는 각각의 크로마 CTB에 대하여 시그널링된다. 필터 세트의 각각은 필터 계수 및 클립핑 파라미터 과 함께, 또는 필터 계수 및 클립핑 파라미터 의 인덱스와 함께 비디오 인코더 또는 디코더에서 로컬 방식으로 저장된다.
일부 실시예에서, 필터 계수는 128과 동일한 놈(norm)으로 양자화된다. 비-중심 포지션을 가지는 필터 계수의 값이 [-27 내지 27 - 1]의 범위에 있도록, 비트스트림 준수성이 적용된다. 중심 포지션을 가지는 필터 계수는 비트스트림에서 시그널링되지 않고, 128로 추정된다.
도 8은 일부 실시예에 따라, 이미지 프레임의 블록에서의 각각의 이미지 샘플(802)의 관련된 이미지 샘플(804)들의 세트에 대한 클립 값 인덱스를 가지는 예시적인 ALF 필터링 방식(800)이다. 각각의 이미지 샘플(802)(예컨대, 루마 샘플(502A), 크로마 샘플(504A))에 대하여, ALF(604)는 필터 길이 를 가지고, 복수의 필터 계수(예컨대, 루마 샘플(502A)에 대한 C0 내지 C13)에 대응한다. 관련된 이미지 샘플(804)들의 세트는 개개의 이미지 샘플(802)의 필터 길이에서 식별된다. 개개의 클립 값 인덱스 및 대응하는 필터 계수는 관련된 이미지 샘플(804)(예컨대, 도 7에서의 필터 계수 C1 내지 C12에 대응하는 루마 샘플(502B))들의 세트의 각각의 관련된 이미지 샘플에 대하여 식별된다. 예를 들어, 도 8에서의 각각의 관련된 이미지 샘플(804)은 0, 1, 2, 또는 3과 동일한 클립 값 인덱스를 가진다.
개개의 클립 값 인덱스는 개개의 클립핑 넘버 를 지수로 하는 2의 거듭제곱과 동일한 개개의 클립핑 경계 값 에 대응하고, 개개의 클립핑 넘버 는 정수이다. ALF(604)는 관련된 이미지 샘플(804)들의 세트의 각각의 관련된 이미지 샘플 및 개개의 이미지 샘플(802)의 차이를, 개개의 클립 값 인덱스와 연관된 개개의 클립핑 경계 값 에 의해 정의된 동적 범위 로 클립핑한다. 개개의 이미지 샘플(802)(예컨대, 루마 샘플(502A), 크로마 샘플(504A))은 개개의 필터 계수에 기초하여 관련된 이미지 샘플(804)들의 세트의 각각의 관련된 이미지 샘플의 클립핑된 차이로 수정되어, 이미지 프레임은 복수의 수정된 이미지 샘플(802)을 이용하여 재구성될 수 있다. 경계 값이 정수를 지수로 하는 2의 거듭제곱으로 제한될 때, 관련된 이미지 샘플(804) 및 각각의 이미지 샘플(802)의 클립핑 차이는 오직 논리 AND 연산 및/또는 논리 OR 연산을 포함한다. 이러한 수단에 의해, 이 클립핑 동작은 각각의 이미지 샘플(802)에 대한 임의의 비교 동작을 포함하지 않고, 이에 의해, 적응적 루프 필터링을 위하여 필요한 연산의 양을 감소시키고, 대응하는 비디오 프레임을 코딩하는 것으로부터 연산 자원을 절약한다.
일부 실시예에서, 이미지 샘플의 제1 블록에 대하여, 클립 값 인덱스의 단일 세트는 제1 블록에서의 모든 이미지 샘플(802)에 대하여 결정된다. 값 인덱스들의 세트는 이미지 샘플의 블록과 함께 비디오 인코더(20)로부터 비디오 인코더(30)로 전송되고, 이는 ALF(604)가 클립 값 인덱스의 동일한 단일 세트에 기초하여 제1 블록에서의 이미지 샘플(802)의 각각을 프로세싱하는 것을 허용한다. 예시적인 블록은 전체 비디오 프레임, 슬라이스, 브릭(brick), 타일, 타일 그룹, 코딩 트리, 또는 다른 코딩 유닛 중의 임의의 것이다. 또한, 일부 실시예에서, 비디오 프레임은 제1 블록과는 별개인 제2 블록을 포함한다. 클립 값 인덱스들의 제2 세트는 제2 블록에서의 이미지 샘플(802)의 적응적 루프 필터링을 위하여 이용된다. 클립 값 인덱스들의 제2 세트는 이미지의 제1 블록에 대하여 이용된 클립 값 인덱스들의 단일 세트로부터 선택적으로 결정된다.
도 9a 내지 도 9c는 일부 실시예에 따라, 3 개의 예시적인 미리 정의된 클립핑 경계 값 테이블(900A 내지 900C)이다. 미리 정의된 클립핑 경계 값 테이블(900)의 각각은 내부 비트 심도 인덱스(internal bit depth index)(IBDI)들의 세트(906)에 따라, 클립 값 인덱스들의 세트(902)를 클리핑 경계 값()들의 세트(904)와 연관시킨다. 이 테이블(900A 내지 900C)에서의 클립핑 경계 값 의 각각 및 매 하나는 개개의 클립핑 넘버 를 지수로 하는 2의 거듭제곱과 동일하다. 각각의 클립핑 경계 값 테이블(900)은 개개의 클립 값 인덱스에 대한 클립핑 경계 값 을 결정하기 위한 참조로서 ALF(604)에서 적용된다. 예를 들어, 비디오 프레임의 제1 이미지 샘플(802)에 대하여, 그 관련된 이미지 샘플(804A) 중의 하나 및 제1 이미지 샘플(802)의 차이가 클립핑될 때, 개개의 클립 값 인덱스(902A)(즉, 0과 동일함)에는 이 관련된 이미지 샘플(804A)이 제공되고, IBDI(906A)(예컨대, IBDI=10)는 필터링되어야 할 제1 이미지 샘플(802)로부터 결정될 수 있다. 개개의 클립핑 경계 값(904A)(즉, 1024와 동일함)은 클립 값 인덱스(902A)에 대응하는 열 및 IBDI(906A)에 대응하는 행의 교차 섹션에서 미리 정의된 클립핑 경계 값 테이블(900A)로부터 식별된다.
각각의 클립핑 경계 값(904)은 개개의 클립핑 넘버 를 지수로 하는 2의 거듭제곱과 동일하다. 동일한 클립 값 인덱스(예컨대, 902A)에 대하여, 개개의 클립핑 넘버 는 선형적인 방식으로 IBDI(906)와 함께 증가하는 정수이다. 각각의 경계 값(904)은 다음과 같이 개개의 클립핑 넘버 의 함수로서 표현된다:
(1)
일부 실시예에서, 제1 이미지 샘플(802)의 적응적 루프 필터링을 위하여 이용된 각각의 관련된 이미지 샘플(804)에 대하여, 관련된 이미지 샘플(804) 및 제1 이미지 샘플(802)의 클립핑된 차이는 , 즉, 의 범위에 있다. 대안적으로, 일부 실시예에서, 관련된 이미지 샘플(804) 및 제1 이미지 샘플(802)의 클립핑된 차이는 , 즉, 의 범위에 있다. 대안적으로, 일부 실시예에서, 관련된 이미지 샘플(804) 및 제1 이미지 샘플(802)의 클립핑된 차이는 , 즉, 의 범위에 있다. 대안적으로, 일부 실시예에서, 관련된 이미지 샘플(804) 및 제1 이미지 샘플(802)의 클립핑된 차이는 , 즉, 의 범위에 있다.
일부 실시예에서, 이미지 샘플(802)의 블록의 필터링에서 이용된 미리 정의된 클립핑 경계 값 테이블(900)은 블록을 운반하는 비트스트림으로 획득되어, 이는 테이블(900)이 이미지 샘플(802)의 각각의 블록에 대하여 업데이팅되는 것을 허용한다. 예시적인 블록은 전체 비디오 프레임, 슬라이스, 브릭(brick), 타일, 타일 그룹, 코딩 트리, 또는 다른 코딩 유닛 중의 임의의 것이다. 대안적으로, 적응적 루프 필터링에서 이용된 동일한 미리 정의된 클립핑 경계 값 테이블(900)의 2 개의 복사본은 비디오 인코더(20) 및 비디오 디코더(30)에서 별도로 저장된다. 이미지 샘플의 블록을 필터링하는 과정 동안에, 미리 정의된 클립핑 경계 값 테이블(900)은 비디오 프레임으로 수신되는 것이 아니라, 하나 이상의 별개의 미리 정의된 클립핑 경계 값 테이블(예컨대, 테이블(900A 내지 900C)들의 서브세트 또는 전부)을 미리 저장하는 로컬 메모리로부터 추출된다. 블록의 이미지 샘플(802)은 클립 값 인덱스들의 세트 및 경계 테이블 지시자를 공유한다. 클립 값 인덱스들의 세트 및 경계 테이블 지시자는 비트스트림에서의 이미지 샘플(802)의 블록과 함께 획득되는 반면, 하나 이상의 클립핑 경계 값 테이블은 로컬 방식으로 저장된다. 클립핑 경계 값 테이블(900) 중의 하나는 경계 테이블 지시자에 기초하여 선택되고, 블록에서의 각각의 이미지 샘플(802)을 필터링하기 위하여 클립핑 동작에서 적용된다.
미리 정의된 클립핑 경계 값 테이블(900A)은 다음의 공식에 의해 표현되고:
(2)
여기서, 는 개개의 클립 값 인덱스이고, CBV는 관련된 이미지 샘플(804)들의 세트의 각각의 관련된 이미지 샘플에 대한 개개의 클립핑 경계 값이다. 일부 실시예에서, 클립핑 경계 값 테이블(900A)은 로컬 메모리에서 저장되지 않고, 공식 (2)가 그 내에 저장된다. 각각의 이미지 샘플(802)에 대하여, 클립핑 경계 값은 위에서 미리 정의된 클립핑 경계 값 공식 (2)에 따라 IBDI 및 개개의 클립 값 인덱스에 기초하여 각각의 관련된 이미지 샘플(804)에 대하여 결정된다.
2의 클립 값 인덱스에 대한 클립핑 경계 값은 미리 정의된 클립핑 경계 값 테이블(900A 및 900B)에서 상이하다. 미리 정의된 클립핑 경계 값 테이블(900B)은 다음의 공식에 의해 표현된다:
(3)
일부 실시예에서, 클립핑 경계 값 테이블(900B)은 로컬 메모리에서 저장되지 않고, 공식 (3)이 그 내에 저장된다. 각각의 이미지 샘플(802)에 대하여, 클립핑 경계 값은 위에서 미리 정의된 클립핑 경계 값 공식 (3)에 따라 IBDI 및 개개의 클립 값 인덱스에 기초하여 각각의 관련된 이미지 샘플(804)에 대하여 결정된다.
1의 클립 값 인덱스에 대한 클립핑 경계 값은 미리 정의된 클립핑 경계 값 테이블(900A 및 900C)에서 상이하다. 미리 정의된 클립핑 경계 값 테이블(900C)은 다음의 공식에 의해 표현된다:
(4)
일부 실시예에서, 클립핑 경계 값 테이블(900C)은 로컬 메모리에서 저장되지 않고, 공식 (4)가 그 내에 저장된다. 각각의 이미지 샘플(802)에 대하여, 클립핑 경계 값은 위에서 미리 정의된 클립핑 경계 값 공식 (4)에 따라 IBDI 및 개개의 클립 값 인덱스에 기초하여 각각의 관련된 이미지 샘플(804)에 대하여 결정된다.
일부 실시예에서, 비트스트림은 비디오 프레임의 복수의 이미지 샘플(802)을 포함한다. 복수의 이미지 샘플(802)은 루마 샘플(502A)들의 서브세트 및 크로마 샘플(504A)들의 서브세트를 포함한다. 루마 샘플(502A)들의 서브세트는 각각의 루마 샘플(502A)의 제1 필터 길이 에서 관련된 루마 샘플(502B)들의 세트의 각각의 관련된 루마 샘플의 개개의 클립 값 인덱스를 정의하는 클립 값 인덱스들의 제1 세트에 대응한다. 크로마 샘플(504A)들의 서브세트는 각각의 크로마 샘플(504A)의 제2 필터 길이 에서 관련된 크로마 샘플(504B)들의 세트의 각각의 관련된 크로마 샘플의 개개의 클립 값 인덱스를 정의하는 클립 값 인덱스들의 제2 세트에 대응한다. 클립 값 인덱스들의 제2 세트는 클립 값 인덱스들의 제1 세트와는 별개이다. 또한, 일부 실시예에서, 클립 값 인덱스들의 제1 및 제2 세트의 각각의 세트는, IBDI에 기초하여 클립 값 인덱스들의 개개의 세트에서의 각각의 클립 값 인덱스를 개개의 클립핑 경계 값과 연관시키는 클립핑 경계 값 테이블 또는 공식에 대응한다. 추가적으로, 일부 실시예에서, 클립핑 경계 값 테이블 또는 공식은 미리 정의된 수의 클립핑 경계 값 테이블 또는 공식으로부터 선택된다. 대안적으로, 일부 실시예에서, 클립 값 인덱스들의 제1 및 제2 세트는 제1 클립핑 경계 값 테이블/공식, 및 제1 클립핑 경계 값 테이블/공식과는 별개의 제2 값 테이블/공식에 대응한다.
도 10은 일부 실시예에 따라, 이미지 샘플(802)에 대하여 클립핑되어야 할 값(1000)의 데이터 구조이다. 이미지 샘플(802)은 비디오 프레임의 루마 샘플(502) 및 크로마 샘플(504) 중의 하나에 대응한다. 일부 실시예에서, 클립핑되어야 할 값(1000)은 관련된 이미지 샘플(804) 및 이미지 샘플(802)의 차이에 대응한다. 값(1000)의 2진 표현의 최초 비트는 통상적으로 가장 우측 비트인 최하위 비트(least significant bit)(LSB)로서 정의된다. 비트의 인덱스는 LSB로부터 시작하여 가장 좌측 비트인 최상위 비트(most significant bit)(MSB)를 향해 1만큼 증가한다. 일부 실시예에서, 관련된 이미지 샘플(804) 및 개개의 이미지 샘플(802)의 차이를 클립핑하기 위한 동적 범위는 클립핑 상한 값 및 하한 값 으로서 정의되고, 의 형태로 표현되고, 여기서, 과 동일하다. 대응하는 클립핑 동작은 번째 비트로부터 MSB까지의 범위인 비트에 대해 수행된 논리 "AND" 및/또는 논리 "OR" 연산으로서 구현될 수 있다. 논리 "AND" 및/또는 논리 "OR"의 연산을 이용하는 것은 비교-기반 클립핑 동작을 수행하는 것보다 간단하다.
예에서, 클립핑되어야 할 값(1000)이 -211로부터 211-1까지의 범위인 값을 갖는 11 비트에 의해 표현되는 것으로 가정한다. 클립핑 상한 및 하한 값은 [-24, 24-1]의 동적 범위를 정의하고, 5번째 비트로부터 MSB까지의 범위인 비트는 이 값(1000)이 상한 및 하한 값에 의해 정의된 동적 범위를 초과하는지 여부를 결정하기 위하여 체크될 필요가 있다. 클립핑되어야 할 값(1000)이 양수일 경우에, 논리 "OR" 연산은 5번째 비트로부터 MSB까지의 범위인 모든 그러한 비트에 대해 수행된다. 논리 "OR" 연산의 결과가 1일 경우에, 값(1000)은 24-1보다 크고, 이 값(1000)은 24-1로 클립핑된다. 클립핑되어야 할 값(1000)이 음수일 경우에, 논리 "AND" 연산은 5번째 비트로부터 MSB까지의 범위인 모든 그러한 비트에 대해 수행된다. 논리 "AND" 연산의 결과가 0일 경우에, 값(1000)은 -24보다 작고, 이 값(1000)은 -24로 클립핑된다.
또 다른 예에서, 클립핑되어야 할 값(1000)은 -16로부터 15까지의 값 범위에 있다. 값(1000)은 5 개의 비트를 가진다. 하나의 비트는 부호를 표현하기 위하여 이용되고, 4 개의 비트는 값(1000)의 크기를 표현하기 위하여 이용된다. 클립 경계 값은 4이고, 클립핑을 위한 동적 범위는 [-22, 22-1]로서 설정된다. 입력 값(1000)이 (0,1110으로서 2진화되는) 14와 동일할 경우에, 논리 "OR" 연산은 제3 및 제4 빈(bin)에 적용되고, 1의 값으로 귀착되어, 이는 입력 값(1000)이 상한을 초과하고, 그러므로, 3의 상한 값으로 클립핑된다는 것을 지시한다. 입력 값(1000)이 (0,0010으로서 2진화되는) 2와 동일할 경우에, 논리 "OR" 연산은 제3 및 제4 빈에 적용되고, 0의 값으로 귀착되어, 이는 입력 값(1000)이 상한을 초과하지 않고, 미변경된 상태로 유지된다는 것을 지시한다. 입력 값(1000)이 (1,0010으로서 2진화되는) -14와 동일할 경우에, 논리 "AND" 연산은 제3 및 제4 빈에 적용되고, 0의 값으로 귀착되어, 이는 입력 값(1000)이 하한을 초과하고, -4의 하한 값으로 설정된다는 것을 지시한다. 입력 값(1000)이 (1,1110으로서 2진화되는) -2와 동일할 경우에, 논리 "AND" 연산은 제3 및 제4 빈에 적용되고, 1의 값으로 귀착되어, 이는 입력 값(1000)이 하한을 초과하지 않고, 미변경된 상태로 유지된다는 것을 지시한다.
도 11은 일부 실시예에 따라, 비디오 코딩 방법(1100)의 흐름도이다. 비디오 코딩 방법(1100)은 비디오 인코더(20) 또는 디코더(30)를 가지는 전자 디바이스에서 구현된다. 전자 디바이스는 비트스트림으로부터, 비디오 프레임의 복수의 이미지 샘플(802)을 획득한다(1102). 각각의 이미지 샘플(802)은 루마 샘플(502) 및 크로마 샘플(504) 중의 하나에 대응한다. 복수의 이미지 샘플(802)의 각각에 대하여, 개개의 이미지 샘플(802)은 필터 길이 및 필터 계수들의 세트를 가지는 적응적 루프 필터(604)를 이용하여 필터링된다(1104). 구체적으로, 전자 디바이스는 개개의 이미지 샘플(802)의 필터 길이 에서 관련된 이미지 샘플(804)들의 세트를 식별한다(1106). 관련된 이미지 샘플(804)들의 세트의 각각의 관련된 이미지 샘플에 대하여, 개개의 클립 값 인덱스 및 대응하는 필터 계수가 식별된다(1108). 관련된 이미지 샘플(804)들의 세트의 각각의 관련된 이미지 샘플 및 개개의 이미지 샘플(802)의 차이는 개개의 클립 값 인덱스에 기초하여 클립핑된다(1110). 개개의 클립 값 인덱스는 개개의 클립핑 넘버 를 지수로 하는 2의 거듭제곱과 동일한 개개의 클립핑 경계 값에 대응하고(1112), 개개의 클립핑 넘버 는 정수이다. 전자 디바이스는 개개의 필터 계수에 기초하여 관련된 이미지 샘플(804)들의 세트의 각각의 관련된 이미지 샘플의 클립핑된 차이로 개개의 이미지 샘플(802)을 수정한다(1114). 비디오 프레임은 복수의 수정된 이미지 샘플(802)을 이용하여 재구성된다(1116). 일부 실시예에서, 복수의 이미지 샘플(802)은 비디오 프레임의 블록을 형성한다. 블록은 임의적으로, 전체 비디오 프레임, 슬라이스, 브릭, 타일, 타일 그룹, 코딩 트리, 또는 다른 코딩 유닛 중의 임의의 것이다.
일부 실시예에서, 각각의 이미지 샘플(802)에 대하여, 개개의 이미지 샘플(802)의 IBDI가 결정된다(1118). 관련된 이미지 샘플(804)들의 세트의 각각의 관련된 이미지 샘플에 대하여, 전자 디바이스는 미리 정의된 클립핑 경계 값 테이블(900)에 따라 IBDI 및 개개의 클립 값 인덱스에 기초하여 개개의 클립핑 경계 값을 결정한다(1120). 관련된 이미지 샘플(804)들의 세트의 각각의 관련된 이미지 샘플 및 개개의 이미지 샘플(802)의 차이는 개개의 클립핑 경계 값에 기초하여 클립핑된다(1122). 또한, 일부 실시예에서, 미리 정의된 클립핑 경계 값 테이블(900)은 비트스트림으로 획득된다. 대안적으로, 일부 실시예에서, 미리 정의된 클립핑 경계 값 테이블(900)은 로컬 메모리로부터 추출된다. 로컬 메모리는 복수의 클립핑 경계 값 테이블(예컨대, 테이블들(900A 내지 900C)의 서브세트 또는 전부)을 저장할 수 있고, 미리 정의된 클립핑 경계 값 테이블(900)은 복수의 클립핑 경계 값 테이블로부터 선택된다. 미리 정의된 클립핑 경계 값 테이블(900)의 예는 도 9a 내지 도 9c에서 도시된다.
일부 실시예에서, 각각의 이미지 샘플(802)에 대하여, 개개의 이미지 샘플(802)의 IBDI가 결정된다. 관련된 이미지 샘플(804)들의 세트의 각각의 관련된 이미지 샘플에 대하여, 전자 디바이스는 미리 정의된 클립핑 경계 값 공식에 따라 IBDI 및 개개의 클립 값 인덱스에 기초하여 개개의 클립핑 경계 값을 결정한다. 관련된 이미지 샘플(804)들의 세트의 각각의 관련된 이미지 샘플 및 개개의 이미지 샘플(802)의 차이는 개개의 클립핑 경계 값에 기초하여 클립핑된다. 미리 정의된 클립핑 경계 값 공식은 공식 (2) 내지 (4) 중의 하나로서 표현된다.
일부 실시예에서, 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플에 대하여, 클립 값 인덱스는 복수의 연속적인 수(예컨대, 0, 1, 2, 및 3)로부터 선택된다. 개개의 클립핑 넘버 는 적어도 클립핑 값 인덱스의 함수이고, 즉, 클립 값 인덱스와 함께 변동된다. 또한, 개개의 클립핑 넘버 는 각각의 클립 값 인덱스에 대한 IBDI에 선형적으로 관련된다. 예를 들어, 클립 값 인덱스가 0과 동일할 때, 개개의 클립핑 넘버 는 IBDI와 동일하고, 클립 값 인덱스가 3과 동일할 때, 개개의 클립핑 넘버 는 7만큼 감산된 IBDI와 동일하다.
일부 실시예에서, 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플에 대하여, 개개의 관련된 이미지 샘플의 클립핑된 차이는 의 범위에 있다.
일부 실시예에서, 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플에 대하여, 개개의 관련된 이미지 샘플의 클립핑된 차이는 , , 및 을 포함하는 복수의 범위 중의 하나에 있다.
일부 실시예에서, 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플 및 개개의 이미지 샘플의 차이를 클립핑하는 것은 오직 논리 AND 연산 및/또는 논리 OR 연산을 포함한다.
일부 실시예에서, 복수의 이미지 샘플은 루마 샘플(502A)들의 서브세트 및 크로마 샘플(504A)들의 서브세트를 포함한다. 루마 샘플(502A)들의 서브세트는 각각의 루마 샘플(502A)의 제1 필터 길이 에서 관련된 루마 샘플(502B)들의 세트의 각각의 관련된 루마 샘플의 개개의 클립 값 인덱스를 정의하는 클립 값 인덱스들의 제1 세트에 대응한다. 크로마 샘플(504A)ㄷ,ㄹ의 서브세트는 각각의 크로마 샘플(504A)의 제2 필터 길이 에서 관련된 크로마 샘플(504B)들의 세트의 각각의 관련된 크로마 샘플의 개개의 클립 값 인덱스를 정의하는 클립 값 인덱스들의 제2 세트에 대응한다. 클립 값 인덱스들의 제2 세트는 클립 값 인덱스들의 제1 세트와는 별개이다. 또한, 일부 실시예에서, 클립 값 인덱스들의 제1 및 제2 세트의 각각의 세트는, IBDI에 기초하여 클립 값 인덱스들의 개개의 세트에서의 각각의 클립 값 인덱스를 개개의 클립핑 경계 값과 연관시키는 클립핑 경계 값 테이블 또는 공식에 대응한다. 추가적으로, 일부 실시예에서, 클립 값 인덱스들의 제1 또는 제2 세트에 대응하는 클립핑 경계 값 테이블 또는 공식은 미리 정의된 수의 클립핑 경계 값 테이블 또는 공식으로부터 선택된다. 또한, 일부 실시예에서, 클립 값 인덱스들의 제1 및 제2 세트는 제1 클립핑 경계 값 테이블/공식, 및 제1 클립핑 경계 값 테이블/공식과는 별개의 제2 값 테이블/공식에 대응한다.
하나 이상의 예에서, 설명된 기능은 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현될 경우, 기능은 하나 이상의 명령 또는 코드로서, 컴퓨터-판독가능 매체 상에 저장되거나 컴퓨터-판독가능 매체 상에서 송신될 수 있고, 하드웨어-기반 프로세싱 유닛에 의해 실행될 수 있다. 컴퓨터-판독가능 매체는 데이터 저장 매체와 같은 유형의 매체에 대응하는 컴퓨터-판독가능 저장 매체, 또는 예컨대, 통신 프로토콜에 따라 하나의 장소로부터 또 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수도 있다. 이러한 방식으로, 컴퓨터-판독가능 매체는 일반적으로 (1) 비-일시적 유형의 컴퓨터-판독가능 저장 매체, 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 출원에서 설명된 구현예의 구현을 위한 명령, 코드 및/또는 데이터 구조를 취출하기 위하여 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수 있다.
본 명세서에서의 구현예의 설명에서 이용된 용어는 오직 특정한 구현예를 설명하는 목적을 위한 것이고, 청구항의 범위를 제한하도록 의도되지 않는다. 구현예의 설명 및 첨부된 청구항에서 이용된 바와 같이, 단수 형태 "a", "an", 및 "the"는 문맥이 명확하게 이와 다르게 지시하지 않으면, 복수 형태를 마찬가지로 포함하도록 의도된다. 본 명세서에서 이용된 바와 같은 용어 "및/또는(and/or)"은 연관된 열거된 항목 중의 하나 이상의 항목의 임의의 그리고 모든 가능한 조합을 지칭하고 이를 망라한다는 것이 또한 이해될 것이다. 이 명세서에서 이용될 때, 용어 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 기재된 특징, 엘리먼트, 및/또는 컴포넌트의 존재를 특정하지만, 하나 이상의 다른 특징, 엘리먼트, 컴포넌트, 및/또는 그 그룹의 존재 또는 추가를 배제하지 않는다는 것이 추가로 이해될 것이다.
용어 제1, 제2 등은 다양한 엘리먼트를 설명하기 위하여 본 명세서에서 이용될 수 있지만, 이 엘리먼트는 이 용어에 의해 제한되지 않아야 한다는 것이 또한 이해될 것이다. 이 용어는 하나의 엘리먼트를 또 다른 것으로부터 구별하기 위하여 오직 이용된다. 예를 들어, 구현예의 범위로부터 이탈하지 않으면서, 제1 전극은 제2 전극으로 칭해질 수 있고, 유사하게, 제2 전극은 제1 전극으로 칭해질 수 있다. 제1 전극 및 제2 전극은 둘 모두 전극이지만, 이은 동일한 전극이 아니다.
본 출원의 설명은 예시 및 설명의 목적을 위하여 제시되었고, 철저한 것으로 또는 개시된 형태인 발명으로 제한되도록 의도된 것이 아니다. 많은 수정, 변형, 및 대안적인 구현예는 상기한 설명 및 연관된 도면에서 제시된 교시사항의 이익을 가지는 본 기술분야에서의 통상의 기술자에게 분명할 것이다. 실시예는 발명의 실제적인 응용예의 원리를 최상으로 설명하기 위하여, 그리고 본 기술분야에서의 통상의 기술자가 다양한 구현예에 대한 발명을 이해하고 고려된 특정한 이용에 적합한 바와 같이, 기초적인 원리 및 다양한 수정을 갖는 다양한 구현예를 최상으로 사용하는 것을 가능하게 하기 위하여 선택되었고 설명되었다. 그러므로, 청구항의 범위는 개시된 구현예의 특정 예로 제한되지 않아야 한다는 것과, 수정 및 다른 구현예가 첨부된 청구항의 범위 내에 포함되도록 의도된다는 것이 이해되어야 한다.

Claims (18)

  1. 비디오 데이터를 인코딩하기 위한 방법으로서,
    비디오 프레임의 복수의 이미지 샘플을 결정하는 단계 - 각각의 이미지 샘플은 루마 샘플 및 크로마 샘플 중의 하나에 대응함 -; 및
    상기 복수의 이미지 샘플의 개개의 이미지 샘플에 대하여, 필터 길이 L 및 필터 계수들의 세트를 가지는 적응적 루프 필터를 이용하여 상기 개개의 이미지 샘플을 필터링하는 단계
    를 포함하고,
    상기 필터링하는 단계는,
    상기 개개의 이미지 샘플의 관련된 이미지 샘플들의 세트를 식별하는 단계;
    상기 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플에 대하여, 개개의 클립 값 인덱스 및 대응하는 필터 계수를 식별하는 단계;
    상기 개개의 클립 값 인덱스에 기초하여 상기 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플과 상기 개개의 이미지 샘플 사이의 차이를 클립핑하는 단계 - 상기 개개의 클립 값 인덱스는 개개의 클립핑 경계 값에 대응되고, 상기 개개의 클립핑 경계 값은 개개의 클립핑 넘버를 지수로 하는 2의 거듭제곱과 동일하고, 상기 개개의 클립핑 넘버는 정수임 -; 및
    상기 대응하는 필터 계수에 기초하여 상기 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플과 상기 개개의 이미지 샘플 사이의 상기 클립핑된 차이로 상기 개개의 이미지 샘플을 수정하는 단계
    를 더 포함하는,
    방법.
  2. 제1항에 있어서,
    각각의 이미지 샘플에 대하여, 상기 개개의 클립 값 인덱스에 기초하여 상기 차이를 클립핑하는 단계는,
    상기 개개의 이미지 샘플의 내부 비트 심도 인덱스(internal bit depth index)(IBDI)를 결정하는 단계;
    상기 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플에 대하여, 미리 정의된 클립핑 경계 값 테이블에 따라 상기 IBDI 및 상기 개개의 클립 값 인덱스에 기초하여 상기 개개의 클립핑 경계 값을 결정하는 단계; 및
    상기 개개의 클립핑 경계 값에 기초하여 상기 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플과 상기 개개의 이미지 샘플 사이의 상기 차이를 클립핑하는 단계를 포함하는, 방법.
  3. 제2항에 있어서,
    상기 미리 정의된 클립핑 경계 값 테이블을 결정하는 단계를 더 포함하는 방법.
  4. 제2항에 있어서,
    로컬 메모리로부터 상기 미리 정의된 클립핑 경계 값 테이블을 추출하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 로컬 메모리는 복수의 클립핑 경계 값 테이블을 저장하고, 상기 방법은,
    상기 복수의 클립핑 경계 값 테이블로부터 상기 미리 정의된 클립핑 경계 값 테이블을 선택하는 단계를 더 포함하는, 방법.
  6. 제2항에 있어서,
    상기 미리 정의된 클립핑 경계 값 테이블은 다음의 3 개의 테이블:

    중의 하나로서 표현되는, 방법.
  7. 제1항에 있어서,
    각각의 이미지 샘플에 대하여, 상기 개개의 클립 값 인덱스에 기초하여 상기 차이를 클립핑하는 단계는,
    상기 개개의 이미지 샘플의 내부 비트 심도 인덱스(IBDI)를 결정하는 단계;
    상기 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플에 대하여, 미리 정의된 클립핑 경계 값 공식에 따라 상기 IBDI 및 상기 개개의 클립 값 인덱스에 기초하여 상기 개개의 클립핑 경계 값을 결정하는 단계; 및
    상기 개개의 클립핑 경계 값에 기초하여 상기 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플과 상기 개개의 이미지 샘플 사이의 차이를 클립핑하는 단계를 포함하고,
    상기 미리 정의된 클립핑 경계 값 공식은 다음의 공식:

    중의 하나로서 표현되고,
    은 상기 개개의 클립 값 인덱스이고, CBV는 상기 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플에 대한 상기 개개의 클립핑 경계 값인, 방법.
  8. 제1항에 있어서,
    상기 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플에 대하여, 상기 클립 값 인덱스는 0, 1, 2, 및 3으로부터 선택되고, 상기 개개의 클립핑 넘버 는 적어도 상기 클립 값 인덱스의 함수인, 방법.
  9. 제1항에 있어서,
    상기 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플에 대하여, 상기 개개의 관련된 이미지 샘플의 상기 클립핑된 차이는 의 범위에 있고, 는 상기 개개의 클립핑 넘버인, 방법.
  10. 제1항에 있어서,
    상기 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플에 대하여, 상기 개개의 관련된 이미지 샘플과 상기 개개의 이미지 샘플 사이의 상기 클립핑된 차이는 , , 및 을 포함하는 복수의 범위 중의 하나이고, 는 상기 개개의 클립핑 넘버인, 방법.
  11. 제1항에 있어서,
    상기 관련된 이미지 샘플들의 세트의 각각의 관련된 이미지 샘플 및 상기 개개의 이미지 샘플의 상기 차이를 클립핑하는 단계는 오직 논리 AND 연산 및/또는 논리 OR 연산을 포함하는, 방법.
  12. 제1항에 있어서,
    상기 복수의 이미지 샘플은 루마 샘플들의 서브세트 및 크로마 샘플들의 서브세트를 포함하고;
    상기 루마 샘플들의 서브세트는 각각의 루마 샘플의 제1 필터 길이 에서 관련된 루마 샘플들의 세트의 각각의 관련된 루마 샘플의 개개의 클립 값 인덱스를 정의하는 클립 값 인덱스들의 제1 세트에 대응하고; 그리고
    상기 크로마 샘플들의 서브세트는 각각의 크로마 샘플의 제2 필터 길이 에서 관련된 크로마 샘플들의 세트의 각각의 관련된 크로마 샘플의 개개의 클립 값 인덱스를 정의하는 클립 값 인덱스들의 제2 세트에 대응하고, 상기 클립 값 인덱스들의 제2 세트는 상기 클립 값 인덱스들의 제1 세트와는 별개인, 방법.
  13. 제12항에 있어서,
    상기 클립 값 인덱스들의 제1 및 제2 세트의 각각의 세트는 클립핑 경계 값 테이블 또는 공식에 대응하고, 상기 클립핑 경계 값 테이블 또는 공식은 내부 비트 심도 증가(internal bit depth increase)(IBDI)에 기초하여, 클립 값 인덱스들의 상기 개개의 세트에서의 각각의 클립 값 인덱스를 상기 개개의 클립핑 경계 값과 연관시키는, 방법.
  14. 제13항에 있어서,
    미리 정의된 수의 클립핑 경계 값 테이블 또는 공식으로부터 상기 클립핑 경계 값 테이블 또는 공식을 선택하는 단계를 더 포함하는 방법.
  15. 제12항에 있어서,
    상기 클립 값 인덱스들의 제1 및 제2 세트는 제1 클립핑 경계 값 테이블/공식, 및 상기 제1 클립핑 경계 값 테이블/공식과는 별개인 제2 값 테이블/공식에 대응하는, 방법.
  16. 전자 디바이스로서,
    하나 이상의 프로세서; 및
    명령이 저장된 메모리
    를 포함하고, 상기 명령은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 제1항 내지 제15항 중 어느 한 항에 기재된 방법을 수행하게 하여 비디오 스트림을 생성하는,
    전자 디바이스.
  17. 명령이 저장된 비-일시적 컴퓨터-판독가능 매체로서,
    상기 명령은, 하나 이상의 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 제1항 내지 제15항 중 어느 한 항의 상기 방법을 수행하게 하여 비디오 스트림을 생성하고 생성된 비디오 스트림을 상기 비-일시적 컴퓨터-판독가능 매체에 ㅈ저장하는, 비-일시적 컴퓨터-판독가능 매체.
  18. 제1항 내지 제15항 중 어느 한 항에 기재된 방법에 의해 생성된 비트스트림을 저장하는 디코더 판독가능 저장 매체.
KR1020237033374A 2019-12-28 2020-12-28 비디오 코딩을 위한 인-루프 필터 KR20230145216A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962954485P 2019-12-28 2019-12-28
US62/954,485 2019-12-28
PCT/US2020/067159 WO2021134064A1 (en) 2019-12-28 2020-12-28 In-loop filters for video coding
KR1020227026338A KR102585317B1 (ko) 2019-12-28 2020-12-28 비디오 코딩을 위한 인-루프 필터

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020227026338A Division KR102585317B1 (ko) 2019-12-28 2020-12-28 비디오 코딩을 위한 인-루프 필터

Publications (1)

Publication Number Publication Date
KR20230145216A true KR20230145216A (ko) 2023-10-17

Family

ID=76575702

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227026338A KR102585317B1 (ko) 2019-12-28 2020-12-28 비디오 코딩을 위한 인-루프 필터
KR1020237033374A KR20230145216A (ko) 2019-12-28 2020-12-28 비디오 코딩을 위한 인-루프 필터

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020227026338A KR102585317B1 (ko) 2019-12-28 2020-12-28 비디오 코딩을 위한 인-루프 필터

Country Status (9)

Country Link
US (2) US12003729B2 (ko)
EP (4) EP4082213B1 (ko)
JP (2) JP7336037B2 (ko)
KR (2) KR102585317B1 (ko)
CN (2) CN115176481A (ko)
DK (1) DK4082213T3 (ko)
FI (1) FI4082213T3 (ko)
MX (1) MX2022008040A (ko)
WO (1) WO2021134064A1 (ko)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9094658B2 (en) * 2010-05-10 2015-07-28 Mediatek Inc. Method and apparatus of adaptive loop filtering
EP3297282A1 (en) * 2016-09-15 2018-03-21 Thomson Licensing Method and apparatus for video coding with adaptive clipping
US10708592B2 (en) * 2018-04-02 2020-07-07 Qualcomm Incorporated Deblocking filter for video coding and processing
WO2020151714A1 (en) * 2019-01-25 2020-07-30 Mediatek Inc. Method and apparatus for non-linear adaptive loop filtering in video coding
CN117956149A (zh) * 2019-03-08 2024-04-30 佳能株式会社 自适应环路滤波器
MX2021013470A (es) * 2019-05-04 2022-02-03 Huawei Tech Co Ltd Un codificador, un decodificador y métodos correspondientes que utilizan un filtro de bucle adaptativo.
US11356662B2 (en) * 2019-05-21 2022-06-07 Qualcomm Incorporated Simplification of clipping value calculation for adaptive loop filters
JP6811931B2 (ja) 2019-06-20 2021-01-13 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
WO2020259621A1 (en) * 2019-06-24 2020-12-30 Huawei Technologies Co., Ltd. Clipping levels for non-linear adaptive loop filter
BR112022005487A2 (pt) * 2019-09-23 2022-06-14 Vid Scale Inc Aparelho para processamento de vídeo, método, e, mídia legível por computador

Also Published As

Publication number Publication date
US20240251085A1 (en) 2024-07-25
EP4082213B1 (en) 2024-09-04
KR102585317B1 (ko) 2023-10-04
EP4429243A2 (en) 2024-09-11
EP4082213A4 (en) 2023-06-14
KR20220114092A (ko) 2022-08-17
FI4082213T3 (fi) 2024-09-19
JP2022552437A (ja) 2022-12-15
US12003729B2 (en) 2024-06-04
EP4082213A1 (en) 2022-11-02
EP4429242A2 (en) 2024-09-11
WO2021134064A1 (en) 2021-07-01
JP7551868B2 (ja) 2024-09-17
DK4082213T3 (da) 2024-09-16
US20220329817A1 (en) 2022-10-13
CN115176481A (zh) 2022-10-11
CN115643402A (zh) 2023-01-24
JP2023156469A (ja) 2023-10-24
JP7336037B2 (ja) 2023-08-30
CN115643402B (zh) 2023-09-19
EP4429244A2 (en) 2024-09-11
MX2022008040A (es) 2022-08-22

Similar Documents

Publication Publication Date Title
KR20240111021A (ko) 비디오 데이터의 크로마 및 루마 성분의 교차 성분 결정
WO2021030667A1 (en) Methods and apparatus of video coding using palette mode
CN114567786A (zh) 以4:4:4色度格式进行视频编解码的方法和装置
CN115086681B (zh) 4:4:4色度格式的视频编解码的方法和装置
KR102663297B1 (ko) 4:4:4 색 포맷의 비디오 코딩 방법 및 장치
KR102585317B1 (ko) 비디오 코딩을 위한 인-루프 필터
WO2021062017A1 (en) Methods and apparatus of performing rate-distortion analysis for palette mode
JP2024023531A (ja) パレットモードを用いたビデオコーディングの方法および装置

Legal Events

Date Code Title Description
A107 Divisional application of patent